{"version":3,"sources":["../src/components/RichEditor/RichEditorCore.tsx","../src/components/RichEditor/components/extensions.ts"],"sourcesContent":["import { EditorContent, useEditor } from '@tiptap/react';\nimport { createRichEditorExtensions } from './components/extensions';\nimport {\n  normalizeLineBreaksInHtml,\n  processLatexInHtml,\n} from './components/utils';\nimport 'katex/dist/katex.min.css';\nimport { TextBolderIcon } from '@phosphor-icons/react/dist/csr/TextB';\nimport { TextItalicIcon } from '@phosphor-icons/react/dist/csr/TextItalic';\nimport { TextUnderlineIcon } from '@phosphor-icons/react/dist/csr/TextUnderline';\nimport { TextStrikethroughIcon } from '@phosphor-icons/react/dist/csr/TextStrikethrough';\nimport { TextAlignLeftIcon } from '@phosphor-icons/react/dist/csr/TextAlignLeft';\nimport { TextAlignCenterIcon } from '@phosphor-icons/react/dist/csr/TextAlignCenter';\nimport { TextAlignRightIcon } from '@phosphor-icons/react/dist/csr/TextAlignRight';\nimport { TextAlignJustifyIcon } from '@phosphor-icons/react/dist/csr/TextAlignJustify';\nimport { LinkIcon } from '@phosphor-icons/react/dist/csr/Link';\nimport { ListBulletsIcon } from '@phosphor-icons/react/dist/csr/ListBullets';\nimport { ListNumbersIcon } from '@phosphor-icons/react/dist/csr/ListNumbers';\nimport { QuotesIcon } from '@phosphor-icons/react/dist/csr/Quotes';\nimport { MinusIcon } from '@phosphor-icons/react/dist/csr/Minus';\nimport { CodeIcon } from '@phosphor-icons/react/dist/csr/Code';\nimport { TextHOneIcon } from '@phosphor-icons/react/dist/csr/TextHOne';\nimport { TextHTwoIcon } from '@phosphor-icons/react/dist/csr/TextHTwo';\nimport { TextHThreeIcon } from '@phosphor-icons/react/dist/csr/TextHThree';\nimport { MathOperationsIcon } from '@phosphor-icons/react/dist/csr/MathOperations';\nimport { ImageIcon } from '@phosphor-icons/react/dist/csr/Image';\nimport { useState, useRef, useEffect, ReactNode } from 'react';\nimport { FormulaDialog } from './components/FormulaDialog';\nimport { ImageDialog } from './components/ImageDialog';\nimport Button from '../Button/Button';\nimport Text from '../Text/Text';\n\ninterface ToolbarBtnProps {\n  onClick: () => void;\n  active?: boolean;\n  title: string;\n  children: ReactNode;\n}\n\nconst ToolbarBtn = ({ onClick, active, title, children }: ToolbarBtnProps) => (\n  <Button\n    type=\"button\"\n    onClick={onClick}\n    title={title}\n    size=\"small\"\n    className={`bg-transparent border-transparent h-7 w-7 p-0 flex items-center justify-center rounded hover:bg-background-100 ${\n      active ? 'bg-background-200 text-primary-700' : 'text-text-700'\n    }`}\n  >\n    {children}\n  </Button>\n);\n\nconst Divider = () => <div className=\"w-px h-5 bg-border-200 mx-0.5\" />;\n\n/**\n * Prepares stored content for the TipTap parser. Line breaks are restored first\n * so that LaTeX spans are injected into already-structured markup.\n */\nconst prepareContent = (content?: string) =>\n  processLatexInHtml(normalizeLineBreaksInHtml(content || ''));\n\ninterface RichEditorProps {\n  readonly content?: string;\n  readonly onChange?: (data: { json: object; html: string }) => void;\n  readonly placeholder?: string;\n  /**\n   * Optional callback to generate LaTeX using AI\n   * If provided, the AI generation feature will be enabled in the formula dialog\n   * @param description - Natural language description of the formula\n   * @returns Promise resolving to the LaTeX string\n   */\n  readonly onGenerateLatexWithAI?: (description: string) => Promise<string>;\n  /**\n   * Optional callback to upload an image file and get back its public URL.\n   * If provided, the file upload tab is enabled in the image dialog; otherwise\n   * images can still be inserted by URL.\n   * @param file - The image file selected by the user\n   * @returns Promise resolving to the public URL of the uploaded image\n   */\n  readonly onUploadImage?: (file: File) => Promise<string>;\n}\n\nexport function RichEditor({\n  content,\n  onChange,\n  placeholder = 'Digite aqui...',\n  onGenerateLatexWithAI,\n  onUploadImage,\n}: RichEditorProps) {\n  const [formulaOpen, setFormulaOpen] = useState(false);\n  const [imageOpen, setImageOpen] = useState(false);\n  const lastContentRef = useRef(content);\n\n  const editor = useEditor({\n    extensions: createRichEditorExtensions(placeholder),\n    content: prepareContent(content),\n    // External updates do not reach this callback: the sync effect below calls\n    // setContent with `emitUpdate: false`.\n    onUpdate: ({ editor }) => {\n      const html = editor.getHTML();\n      lastContentRef.current = html;\n      onChange?.({\n        json: editor.getJSON(),\n        html,\n      });\n    },\n    editorProps: {\n      attributes: {\n        class:\n          'min-h-[120px] outline-none prose prose-sm max-w-none px-4 py-3 focus:outline-none',\n      },\n    },\n  });\n\n  // Update editor content when prop changes externally (e.g., from loadQuestion)\n  useEffect(() => {\n    if (editor && content !== undefined && content !== lastContentRef.current) {\n      editor.commands.setContent(prepareContent(content), {\n        emitUpdate: false,\n      });\n      lastContentRef.current = content;\n    }\n  }, [content, editor]);\n\n  const insertFormula = (latex: string) => {\n    if (!latex || !editor) return;\n    editor\n      .chain()\n      .focus()\n      .insertContent({\n        type: 'mathInline',\n        attrs: { latex },\n      })\n      .run();\n    setFormulaOpen(false);\n  };\n\n  const insertImage = (src: string, alt: string) => {\n    if (!src || !editor) return;\n    editor.chain().focus().setImage({ src, alt }).run();\n    setImageOpen(false);\n  };\n\n  const setLink = () => {\n    const url = globalThis.window.prompt('URL do link:');\n    if (url === null || !editor) return;\n    if (url === '') {\n      editor.chain().focus().extendMarkRange('link').unsetLink().run();\n      return;\n    }\n    editor.chain().focus().extendMarkRange('link').setLink({ href: url }).run();\n  };\n\n  if (!editor) return null;\n\n  return (\n    <div className=\"border border-border-200 rounded-xl overflow-hidden bg-background-0\">\n      {/* Toolbar */}\n      <div className=\"flex items-center gap-0.5 border-b border-border-200 bg-background-50 px-2 py-1.5 flex-wrap\">\n        {/* Headings */}\n        <ToolbarBtn\n          onClick={() =>\n            editor.chain().focus().toggleHeading({ level: 1 }).run()\n          }\n          active={editor.isActive('heading', { level: 1 })}\n          title=\"Título 1\"\n        >\n          <TextHOneIcon size={16} weight=\"bold\" />\n        </ToolbarBtn>\n        <ToolbarBtn\n          onClick={() =>\n            editor.chain().focus().toggleHeading({ level: 2 }).run()\n          }\n          active={editor.isActive('heading', { level: 2 })}\n          title=\"Título 2\"\n        >\n          <TextHTwoIcon size={16} weight=\"bold\" />\n        </ToolbarBtn>\n        <ToolbarBtn\n          onClick={() =>\n            editor.chain().focus().toggleHeading({ level: 3 }).run()\n          }\n          active={editor.isActive('heading', { level: 3 })}\n          title=\"Título 3\"\n        >\n          <TextHThreeIcon size={16} weight=\"bold\" />\n        </ToolbarBtn>\n\n        <Divider />\n\n        {/* Text formatting */}\n        <ToolbarBtn\n          onClick={() => editor.chain().focus().toggleBold().run()}\n          active={editor.isActive('bold')}\n          title=\"Negrito (Ctrl+B)\"\n        >\n          <TextBolderIcon size={16} weight=\"bold\" />\n        </ToolbarBtn>\n        <ToolbarBtn\n          onClick={() => editor.chain().focus().toggleItalic().run()}\n          active={editor.isActive('italic')}\n          title=\"Itálico (Ctrl+I)\"\n        >\n          <TextItalicIcon size={16} />\n        </ToolbarBtn>\n        <ToolbarBtn\n          onClick={() => editor.chain().focus().toggleUnderline().run()}\n          active={editor.isActive('underline')}\n          title=\"Sublinhado (Ctrl+U)\"\n        >\n          <TextUnderlineIcon size={16} />\n        </ToolbarBtn>\n        <ToolbarBtn\n          onClick={() => editor.chain().focus().toggleStrike().run()}\n          active={editor.isActive('strike')}\n          title=\"Tachado\"\n        >\n          <TextStrikethroughIcon size={16} />\n        </ToolbarBtn>\n        <ToolbarBtn\n          onClick={() => editor.chain().focus().toggleSubscript().run()}\n          active={editor.isActive('subscript')}\n          title=\"Subscrito\"\n        >\n          <span className=\"text-xs font-medium\">\n            X<sub className=\"text-[8px]\">2</sub>\n          </span>\n        </ToolbarBtn>\n        <ToolbarBtn\n          onClick={() => editor.chain().focus().toggleSuperscript().run()}\n          active={editor.isActive('superscript')}\n          title=\"Sobrescrito\"\n        >\n          <span className=\"text-xs font-medium\">\n            X<sup className=\"text-[8px]\">2</sup>\n          </span>\n        </ToolbarBtn>\n        <ToolbarBtn\n          onClick={() => editor.chain().focus().toggleCode().run()}\n          active={editor.isActive('code')}\n          title=\"Código inline\"\n        >\n          <CodeIcon size={16} />\n        </ToolbarBtn>\n\n        <Divider />\n\n        {/* Alignment */}\n        <ToolbarBtn\n          onClick={() => editor.chain().focus().setTextAlign('left').run()}\n          active={editor.isActive({ textAlign: 'left' })}\n          title=\"Alinhar à esquerda\"\n        >\n          <TextAlignLeftIcon size={16} />\n        </ToolbarBtn>\n        <ToolbarBtn\n          onClick={() => editor.chain().focus().setTextAlign('center').run()}\n          active={editor.isActive({ textAlign: 'center' })}\n          title=\"Centralizar\"\n        >\n          <TextAlignCenterIcon size={16} />\n        </ToolbarBtn>\n        <ToolbarBtn\n          onClick={() => editor.chain().focus().setTextAlign('right').run()}\n          active={editor.isActive({ textAlign: 'right' })}\n          title=\"Alinhar à direita\"\n        >\n          <TextAlignRightIcon size={16} />\n        </ToolbarBtn>\n        <ToolbarBtn\n          onClick={() => editor.chain().focus().setTextAlign('justify').run()}\n          active={editor.isActive({ textAlign: 'justify' })}\n          title=\"Justificar\"\n        >\n          <TextAlignJustifyIcon size={16} />\n        </ToolbarBtn>\n\n        <Divider />\n\n        {/* Lists */}\n        <ToolbarBtn\n          onClick={() => editor.chain().focus().toggleBulletList().run()}\n          active={editor.isActive('bulletList')}\n          title=\"Lista com marcadores\"\n        >\n          <ListBulletsIcon size={16} />\n        </ToolbarBtn>\n        <ToolbarBtn\n          onClick={() => editor.chain().focus().toggleOrderedList().run()}\n          active={editor.isActive('orderedList')}\n          title=\"Lista numerada\"\n        >\n          <ListNumbersIcon size={16} />\n        </ToolbarBtn>\n        <ToolbarBtn\n          onClick={() => editor.chain().focus().toggleBlockquote().run()}\n          active={editor.isActive('blockquote')}\n          title=\"Citação\"\n        >\n          <QuotesIcon size={16} />\n        </ToolbarBtn>\n        <ToolbarBtn\n          onClick={() => editor.chain().focus().setHorizontalRule().run()}\n          active={false}\n          title=\"Linha horizontal\"\n        >\n          <MinusIcon size={16} />\n        </ToolbarBtn>\n\n        <Divider />\n\n        {/* Link */}\n        <ToolbarBtn\n          onClick={setLink}\n          active={editor.isActive('link')}\n          title=\"Inserir link\"\n        >\n          <LinkIcon size={16} />\n        </ToolbarBtn>\n\n        {/* Image */}\n        <ToolbarBtn\n          onClick={() => setImageOpen(true)}\n          active={editor.isActive('image')}\n          title=\"Inserir imagem\"\n        >\n          <ImageIcon size={16} />\n        </ToolbarBtn>\n\n        {/* Formula */}\n        <Button\n          type=\"button\"\n          onClick={() => setFormulaOpen(true)}\n          title=\"Inserir fórmula LaTeX\"\n          size=\"extra-small\"\n          variant=\"link\"\n        >\n          <MathOperationsIcon size={16} />\n          LaTeX\n        </Button>\n      </div>\n\n      {/* Editor */}\n      <EditorContent editor={editor} />\n\n      {/* Dica */}\n      <div className=\"border-t border-border-200 px-4 py-2 bg-background-50\">\n        <Text size=\"xs\" color=\"text-text-400\">\n          Dica: use{' '}\n          <code className=\"bg-background-200 px-1 rounded\">$fórmula$</code> para\n          inserir LaTeX inline diretamente.\n        </Text>\n      </div>\n\n      <FormulaDialog\n        open={formulaOpen}\n        onClose={() => setFormulaOpen(false)}\n        onInsert={insertFormula}\n        onGenerateWithAI={onGenerateLatexWithAI}\n      />\n\n      <ImageDialog\n        open={imageOpen}\n        onClose={() => setImageOpen(false)}\n        onInsert={insertImage}\n        onUploadImage={onUploadImage}\n      />\n    </div>\n  );\n}\n","import StarterKit from '@tiptap/starter-kit';\nimport Underline from '@tiptap/extension-underline';\nimport TextAlign from '@tiptap/extension-text-align';\nimport { Color } from '@tiptap/extension-color';\nimport { TextStyle } from '@tiptap/extension-text-style';\nimport Highlight from '@tiptap/extension-highlight';\nimport Subscript from '@tiptap/extension-subscript';\nimport Superscript from '@tiptap/extension-superscript';\nimport Link from '@tiptap/extension-link';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport Image from '@tiptap/extension-image';\nimport { MathNode } from './MathNode';\n\n/**\n * Extension list backing the RichEditor.\n *\n * Tiptap validates incoming HTML against the schema these extensions build and\n * silently discards any node it cannot match. Anything the editor must be able\n * to *load* has to be registered here, not only what it can create — omitting\n * Image is what made `<img>` tags disappear from existing content.\n */\nexport function createRichEditorExtensions(placeholder: string) {\n  return [\n    StarterKit,\n    Underline,\n    TextStyle,\n    Color,\n    Highlight.configure({ multicolor: true }),\n    Subscript,\n    Superscript,\n    TextAlign.configure({ types: ['heading', 'paragraph'] }),\n    Link.configure({ openOnClick: false }),\n    Placeholder.configure({ placeholder }),\n    Image.configure({ inline: false, allowBase64: false }),\n    MathNode,\n  ];\n}\n"],"mappings":"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","names":["editor"]}