"use client"; import { defaultEditorContent } from "./content"; import "./prosemirror.css"; import { EditorCommand, EditorCommandEmpty, EditorCommandItem, EditorCommandList, EditorContent, EditorRoot, useEditor, } from "novel"; import { ImageResizer, handleCommandNavigation } from "novel/extensions"; import { memo, useState } from "react"; import { defaultExtensions } from "./extensions"; import { LinkSelector } from "./selectors/link-selector"; import { NodeSelector } from "./selectors/node-selector"; import { Separator } from "./ui/separator"; import GenerativeMenuSwitch from "./generative/generative-menu-switch"; import { TextButtons } from "./selectors/text-buttons"; import { slashCommand, suggestionItems } from "./slash-command"; import { ToC } from "./toc"; import { getHierarchicalIndexes, TableOfContents, } from "@tiptap-pro/extension-table-of-contents"; import { AlignSelector } from "./selectors/align-selector"; import { Button } from "@repo/ui/shadcn/button"; const MemorizedToC = memo(ToC); const hljs = require("highlight.js"); type tContent = { id: string; textContent: string; level: number; isActive: boolean; itemIndex: number; isScrolledOver: boolean; pos: number; }; const TailwindAdvancedEditor = memo( ({ setContent }: { setContent: (e: string) => void }) => { const [openNode, setOpenNode] = useState(false); const [openAlign, setOpenAlign] = useState(false); const [openLink, setOpenLink] = useState(false); const [items, setItems] = useState([]); const extensions = [ ...defaultExtensions, slashCommand, TableOfContents.configure({ getIndex: getHierarchicalIndexes, onUpdate(content) { console.log(content); setItems(content); }, }), ]; return (
handleCommandNavigation(event), }, // handlePaste: (view, event) => // handleImagePaste(view, event, uploadFn), // handleDrop: (view, event, _slice, moved) => // handleImageDrop(view, event, moved, uploadFn), attributes: { class: "prose prose-lg dark:prose-invert prose-headings:font-title font-default focus:outline-none max-w-full", }, }} // onUpdate={({ editor }) => { // }} slotAfter={} > No results {suggestionItems.map((item) => ( item.command(val)} className="flex w-full items-center space-x-2 rounded-md px-2 py-1 text-left text-sm hover:bg-[#21303D] group aria-selected:bg-[#21303D]" key={item.title} >
{item.icon}

{item.title}

{item.description}

))}
); }, ); function SaveNote({ setContent }: { setContent: (e: string) => void }) { const { editor } = useEditor(); if (!editor) return null; return ( ); } // function SubmitButton({ autoDetectedType }: { autoDetectedType: string }) { // return ( // ); // } export default TailwindAdvancedEditor;