// components/custom-editor.js

import React from "react";
import { CKEditor } from "@ckeditor/ckeditor5-react";
import Editor from "@/vendor/ckeditor5/build/ckeditor";

function CustomEditor(props) {
  const maxHeight = props.maxHeight || 600;

  return (
    <div className="ckeditor-wrapper">
      <CKEditor
        editor={Editor}
        data={props.initialData}
        onChange={(event, editor) => {
          const data = editor.getData();
          console.log({ event, editor, data });
          props.onChange(data);
        }}
        config={{
          toolbar: [
            "heading",
            "fontsize",
            "bold",
            "italic",
            "link",
            "numberedList",
            "bulletedList",
            "undo",
            "redo",
            "alignment",
            "outdent",
            "indent",
            "blockQuote",
            "insertTable",
            "codeBlock",
            "sourceEditing",
          ],
          content_style: `
            body {
              font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
              font-size: 14px;
              line-height: 1.6;
              color: #111 !important; 
              background: #fff !important;
              margin: 0;
              padding: 1rem;
            }
            p {
              margin: 0.5em 0;
            }
            h1, h2, h3, h4, h5, h6 {
              margin: 1em 0 0.5em 0;
              color: inherit !important;
            }
            ul, ol {
              margin: 0.5em 0;
              padding-left: 2em;
            }
            blockquote {
              margin: 1em 0;
              padding: 0.5em 1em;
              border-left: 4px solid #d1d5db;
              background-color: #f9fafb;
              color: inherit !important;
            }
          `,
          height: props.height || 400,
          removePlugins: ["Title"],
          mobile: {
            theme: "silver",
          },
        }}
      />
      <style jsx>{`
        .ckeditor-wrapper {
          border-radius: 6px;
          overflow: hidden;
          box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1),
            0 1px 2px 0 rgba(0, 0, 0, 0.06);
        }

        .ckeditor-wrapper :global(.ck.ck-editor__main) {
          min-height: ${props.height || 400}px;
          max-height: ${maxHeight}px;
        }

        .ckeditor-wrapper :global(.ck.ck-editor__editable) {
          min-height: ${(props.height || 400) - 50}px;
          max-height: ${maxHeight - 50}px;
          overflow-y: auto !important;
          scrollbar-width: thin;
          scrollbar-color: #cbd5e1 #f1f5f9;
          background: #fff !important;
          color: #111 !important;
        }

        /* Dark mode support */
        :global(.dark) .ckeditor-wrapper :global(.ck.ck-editor__editable) {
          background: #111 !important;
          color: #f9fafb !important;
        }

        :global(.dark) .ckeditor-wrapper :global(.ck.ck-editor__editable h1),
        :global(.dark) .ckeditor-wrapper :global(.ck.ck-editor__editable h2),
        :global(.dark) .ckeditor-wrapper :global(.ck.ck-editor__editable h3),
        :global(.dark) .ckeditor-wrapper :global(.ck.ck-editor__editable h4),
        :global(.dark) .ckeditor-wrapper :global(.ck.ck-editor__editable h5),
        :global(.dark) .ckeditor-wrapper :global(.ck.ck-editor__editable h6) {
          color: #f9fafb !important;
        }

        :global(.dark)
          .ckeditor-wrapper
          :global(.ck.ck-editor__editable blockquote) {
          background-color: #1f2937 !important;
          border-left-color: #374151 !important;
          color: #f3f4f6 !important;
        }

        /* Custom scrollbar styling for webkit browsers */
        .ckeditor-wrapper :global(.ck.ck-editor__editable::-webkit-scrollbar) {
          width: 8px;
        }

        .ckeditor-wrapper
          :global(.ck.ck-editor__editable::-webkit-scrollbar-track) {
          background: #f1f5f9;
          border-radius: 4px;
        }

        .ckeditor-wrapper
          :global(.ck.ck-editor__editable::-webkit-scrollbar-thumb) {
          background: #cbd5e1;
          border-radius: 4px;
        }

        .ckeditor-wrapper
          :global(.ck.ck-editor__editable::-webkit-scrollbar-thumb:hover) {
          background: #94a3b8;
        }

        /* Dark mode scrollbar */
        :global(.dark)
          .ckeditor-wrapper
          :global(.ck.ck-editor__editable::-webkit-scrollbar-track) {
          background: #1f2937;
        }

        :global(.dark)
          .ckeditor-wrapper
          :global(.ck.ck-editor__editable::-webkit-scrollbar-thumb) {
          background: #4b5563;
        }

        :global(.dark)
          .ckeditor-wrapper
          :global(.ck.ck-editor__editable::-webkit-scrollbar-thumb:hover) {
          background: #6b7280;
        }

        /* Ensure content doesn't overflow */
        .ckeditor-wrapper :global(.ck.ck-editor__editable .ck-content) {
          overflow: hidden;
        }
      `}</style>
    </div>
  );
}

export default CustomEditor;
