trotl-texteditor 1.0.13 → 1.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -416,6 +416,8 @@ function Editor({
416
416
  };
417
417
  }
418
418
  const editorRef = React.useRef(null);
419
+ // when true we already applied `initialHtml` / demo content once — don't overwrite user edits
420
+ const initialAppliedRef = React.useRef(false);
419
421
  const [html, setHtml] = React.useState("");
420
422
  const [plainPaste, setPlainPaste] = React.useState(true);
421
423
  const [selectionText, setSelectionText] = React.useState("");
@@ -531,10 +533,14 @@ function Editor({
531
533
  return () => document.removeEventListener("selectionchange", updateToolbarState);
532
534
  }, [updateToolbarState]);
533
535
 
534
- // Initialize editor from `initialHtml` if provided; otherwise (when showDemoText)
535
- // populate with demo content. Run after `updateToolbarState` is defined.
536
+ // Initialize editor from `initialHtml` (applied once) or fall back to demo text.
537
+ // Guard against re-applying `initialHtml` on every render that was causing user edits to be overwritten.
536
538
  React.useEffect(() => {
537
- if (initialHtml && editorRef.current) {
539
+ if (!editorRef.current || initialAppliedRef.current) return;
540
+
541
+ // apply `initialHtml` only once (initialization). If parent later wants to *reset*
542
+ // the editor, we can add an explicit API — but default behaviour is "initial only".
543
+ if (initialHtml) {
538
544
  editorRef.current.innerHTML = initialHtml;
539
545
  setHtml(initialHtml);
540
546
  const links = editorRef.current?.querySelectorAll('a') || [];
@@ -547,9 +553,10 @@ function Editor({
547
553
  try {
548
554
  onChange(initialHtml);
549
555
  } catch {/* noop */}
556
+ initialAppliedRef.current = true;
550
557
  return;
551
558
  }
552
- if (showDemoText && editorRef.current) {
559
+ if (showDemoText) {
553
560
  editorRef.current.innerHTML = DEFAULT_HTML;
554
561
  setHtml(editorRef.current.innerHTML);
555
562
  const links = editorRef.current?.querySelectorAll('a') || [];
@@ -559,6 +566,7 @@ function Editor({
559
566
  }
560
567
  });
561
568
  updateToolbarState();
569
+ initialAppliedRef.current = true;
562
570
  }
563
571
  }, [initialHtml, showDemoText, onChange, updateToolbarState]);
564
572
  const exportHtml$1 = async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/components/CodeBlock.jsx","../src/components/defaultContent.js","../src/components/editorCommands.js","../src/components/editorUtils.js","../src/components/formattingFunctions.js","../src/components/insertFunctions.js","../src/components/eventHandlers.js","../src/components/Editor.jsx","../src/index.js"],"sourcesContent":["import React, { useMemo } from \"react\";\r\n\r\nconst DEFAULT_LANGUAGES = [\r\n { value: \"plain\", label: \"Plain\" },\r\n { value: \"js\", label: \"JavaScript\" },\r\n { value: \"ts\", label: \"TypeScript\" },\r\n { value: \"java\", label: \"Java\" },\r\n { value: \"css\", label: \"CSS\" },\r\n { value: \"html\", label: \"HTML\" },\r\n { value: \"json\", label: \"JSON\" },\r\n];\r\n\r\nconst DEFAULT_THEMES = [\r\n { value: \"dark\", label: \"Dark\" },\r\n { value: \"light\", label: \"Light\" },\r\n];\r\n\r\nexport default function CodeBlock({\r\n value = \"\",\r\n language = \"plain\",\r\n theme = \"dark\",\r\n languages = DEFAULT_LANGUAGES,\r\n themes = DEFAULT_THEMES,\r\n onChange = () => {},\r\n onLanguageChange = () => {},\r\n onThemeChange = () => {},\r\n placeholder = \"Paste code here\",\r\n}) {\r\n const normalizedLanguages = useMemo(() => {\r\n if (!Array.isArray(languages) || languages.length === 0) return DEFAULT_LANGUAGES;\r\n if (typeof languages[0] === \"string\") {\r\n return languages.map((item) => ({ value: item, label: item }));\r\n }\r\n return languages;\r\n }, [languages]);\r\n\r\n const currentLanguage = useMemo(\r\n () => normalizedLanguages.find((item) => item.value === language) || normalizedLanguages[0],\r\n [language, normalizedLanguages]\r\n );\r\n\r\n return (\r\n <section className={`code-block code-block-${theme}`} data-language={currentLanguage?.value}>\r\n <header className=\"code-block-toolbar\">\r\n <label className=\"code-block-label\">\r\n Language\r\n <select\r\n className=\"code-block-select\"\r\n value={currentLanguage?.value}\r\n onChange={(event) => onLanguageChange(event.target.value)}\r\n >\r\n {normalizedLanguages.map((item) => (\r\n <option key={item.value} value={item.value}>\r\n {item.label}\r\n </option>\r\n ))}\r\n </select>\r\n </label>\r\n <label className=\"code-block-label\">\r\n Theme\r\n <select\r\n className=\"code-block-select\"\r\n value={theme}\r\n onChange={(event) => onThemeChange(event.target.value)}\r\n >\r\n {themes.map((item) => (\r\n <option key={item.value} value={item.value}>\r\n {item.label}\r\n </option>\r\n ))}\r\n </select>\r\n </label>\r\n </header>\r\n <textarea\r\n className=\"code-block-area\"\r\n value={value}\r\n onChange={(event) => onChange(event.target.value)}\r\n placeholder={placeholder}\r\n spellCheck={false}\r\n />\r\n </section>\r\n );\r\n}\r\n","export const DEFAULT_HTML = `\r\n\t<h1>Welcome</h1>\r\n\t<p>This is a lightweight WYSIWYG editor built without external libraries.</p>\r\n\t<ul>\r\n\t\t<li>Edit text directly</li>\r\n\t\t<li>Use the toolbar for formatting</li>\r\n\t\t<li>Copy, paste, and export HTML</li>\r\n\t</ul>\r\n`;\r\n","export const COMMANDS = [\r\n\t{ cmd: \"bold\", label: \"Bold\", icon: \"B\" },\r\n\t{ cmd: \"italic\", label: \"Italic\", icon: \"I\" },\r\n\t{ cmd: \"underline\", label: \"Underline\", icon: \"U\" },\r\n\t{ cmd: \"strikeThrough\", label: \"Strike\", icon: \"S\" },\r\n\t{ cmd: \"insertUnorderedList\", label: \"Bullets\", icon: \"•\" },\r\n\t{ cmd: \"insertOrderedList\", label: \"Numbered\", icon: \"1.\" },\r\n\t{ cmd: \"justifyLeft\", label: \"Left\", icon: \"⟸\" },\r\n\t{ cmd: \"justifyCenter\", label: \"Center\", icon: \"⇔\" },\r\n\t{ cmd: \"justifyRight\", label: \"Right\", icon: \"⟹\" },\r\n];\r\n","export const escapeHtml = (value) =>\r\n\tvalue\r\n\t\t.replace(/&/g, \"&amp;\")\r\n\t\t.replace(/</g, \"&lt;\")\r\n\t\t.replace(/>/g, \"&gt;\")\r\n\t\t.replace(/\\\"/g, \"&quot;\")\r\n\t\t.replace(/'/g, \"&#039;\");\r\n\r\nexport const exec = (editorRef, cmd, value = null, setHtml, onChange, updateToolbarState) => {\r\n\teditorRef.current?.focus();\r\n\tdocument.execCommand(cmd, false, value);\r\n\tconst nextHtml = editorRef.current?.innerHTML || \"\";\r\n\tsetHtml(nextHtml);\r\n\tonChange({ html: nextHtml, text: editorRef.current?.innerText || \"\" });\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const removeFormat = (exec) => exec(\"removeFormat\");\r\n\r\nexport const clearAll = (editorRef, setHtml, onChange, updateToolbarState) => {\r\n\tif (!editorRef.current) return;\r\n\teditorRef.current.innerHTML = \"<p></p>\";\r\n\tsetHtml(editorRef.current.innerHTML);\r\n\tonChange({ html: editorRef.current.innerHTML, text: editorRef.current.innerText || \"\" });\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const exportHtml = async (editorRef) => {\r\n\tconst payload = editorRef.current?.innerHTML || \"\";\r\n\tawait navigator.clipboard.writeText(payload);\r\n\talert(\"HTML copied to clipboard.\");\r\n};\r\n","export const applyHeading = (next, exec) => {\r\n\tif (next === \"p\") {\r\n\t\texec(\"formatBlock\", \"P\");\r\n\t\treturn;\r\n\t}\r\n\tif (next === \"pre\") {\r\n\t\texec(\"formatBlock\", \"PRE\");\r\n\t\treturn;\r\n\t}\r\n\texec(\"formatBlock\", next.toUpperCase());\r\n};\r\n\r\nexport const applyFontSize = (next, exec, editorRef, setHtml, updateToolbarState) => {\r\n\tconst selection = window.getSelection();\r\n\tif (!selection || selection.rangeCount === 0) return;\r\n\t\r\n\tconst range = selection.getRangeAt(0);\r\n\tif (range.collapsed) return; // No selection\r\n\t\r\n\texec(\"fontSize\", \"7\");\r\n\tconst fontElements = editorRef.current?.querySelectorAll(\"font[size='7']\") || [];\r\n\tfontElements.forEach((el) => {\r\n\t\tel.removeAttribute(\"size\");\r\n\t\tel.style.fontSize = `${next}px`;\r\n\t});\r\n\tsetHtml(editorRef.current?.innerHTML || \"\");\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const applyCustomFontSize = (value, exec, editorRef, setHtml, updateToolbarState) => {\r\n\tif (!value || isNaN(value)) return;\r\n\t\r\n\tconst selection = window.getSelection();\r\n\tif (!selection || selection.rangeCount === 0) return;\r\n\t\r\n\tconst range = selection.getRangeAt(0);\r\n\tif (range.collapsed) return; // No selection\r\n\t\r\n\texec(\"fontSize\", \"7\");\r\n\tconst fontElements = editorRef.current?.querySelectorAll(\"font[size='7']\") || [];\r\n\tfontElements.forEach((el) => {\r\n\t\tel.removeAttribute(\"size\");\r\n\t\tel.style.fontSize = `${value}px`;\r\n\t});\r\n\tsetHtml(editorRef.current?.innerHTML || \"\");\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const applyTextColor = (next, exec) => {\r\n\texec(\"foreColor\", next);\r\n};\r\n\r\nexport const applyBackgroundColor = (next, exec) => {\r\n\texec(\"hiliteColor\", next);\r\n};\r\n\r\nexport const resetColors = (theme, setTextColor, setBackgroundColor, exec) => {\r\n\tconst defaultText = theme === \"dark\" ? \"#e5e7eb\" : \"#1f2937\";\r\n\tconst defaultBg = \"#ffff00\";\r\n\tsetTextColor(defaultText);\r\n\tsetBackgroundColor(defaultBg);\r\n\texec(\"removeFormat\");\r\n};\r\n","import { escapeHtml } from \"./editorUtils.js\";\r\n\r\nexport const insertCodeBlock = (codeValue, codeLanguage, codeTheme, exec, setIsCodeModalOpen, setCodeValue) => {\r\n\tconst safeCode = escapeHtml(codeValue || \"\");\r\n\tconst languageClass = codeLanguage ? `language-${codeLanguage}` : \"language-plain\";\r\n\tconst htmlBlock = `<pre class=\"code-block-shell\" data-theme=\"${codeTheme}\"><code class=\"${languageClass}\">${safeCode}</code></pre>`;\r\n\texec(\"insertHTML\", htmlBlock);\r\n\tsetIsCodeModalOpen(false);\r\n\tsetCodeValue(\"\");\r\n};\r\n\r\nexport const insertLink = (exec) => {\r\n\tconst url = window.prompt(\"Enter URL\", \"https://\");\r\n\tif (!url) return;\r\n\texec(\"createLink\", url);\r\n};\r\n\r\nexport const insertTooltip = (editorRef, setHtml, onChange, updateToolbarState) => {\r\n\tconst selection = window.getSelection();\r\n\tif (!selection || selection.rangeCount === 0) return;\r\n\tconst selectedText = selection.toString();\r\n\tif (!selectedText) {\r\n\t\talert(\"Please select some text first\");\r\n\t\treturn;\r\n\t}\r\n\tconst tooltip = window.prompt(\"Enter tooltip/note text\", \"\");\r\n\tif (!tooltip) return;\r\n\t\r\n\tconst range = selection.getRangeAt(0);\r\n\tconst span = document.createElement(\"span\");\r\n\tspan.className = \"has-tooltip\";\r\n\tspan.title = tooltip;\r\n\t\r\n\ttry {\r\n\t\trange.surroundContents(span);\r\n\t} catch {\r\n\t\t// If surroundContents fails, use alternative method\r\n\t\tspan.appendChild(range.extractContents());\r\n\t\trange.insertNode(span);\r\n\t}\r\n\t\r\n\tselection.removeAllRanges();\r\n\tconst nextHtml = editorRef.current?.innerHTML || \"\";\r\n\tsetHtml(nextHtml);\r\n\tonChange({ html: nextHtml, text: editorRef.current?.innerText || \"\" });\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const insertAnchor = (exec) => {\r\n\tconst id = window.prompt(\"Enter anchor ID\", \"\");\r\n\tif (!id) return;\r\n\tconst sanitizedId = id.replace(/[^a-zA-Z0-9-_]/g, \"\");\r\n\tconst anchorHtml = `<span class=\"anchor-marker\" id=\"${sanitizedId}\" data-anchor=\"${sanitizedId}\">⚓${sanitizedId}</span>`;\r\n\texec(\"insertHTML\", anchorHtml);\r\n};\r\n\r\nexport const insertHr = (exec) => {\r\n\texec(\"insertHTML\", \"<hr>\");\r\n};\r\n\r\nexport const insertImage = (exec) => {\r\n\tconst url = window.prompt(\"Enter image URL\", \"https://\");\r\n\tif (!url) return;\r\n\tconst alt = window.prompt(\"Enter image description (alt text)\", \"\");\r\n\tconst imageHtml = `<img src=\"${url}\" alt=\"${alt || ''}\" style=\"max-width: 100%; height: auto;\" />`;\r\n\texec(\"insertHTML\", imageHtml);\r\n};\r\n\r\nexport const insertVideo = (exec) => {\r\n\tconst url = window.prompt(\"Enter video URL (YouTube, MP4, etc.)\", \"https://\");\r\n\tif (!url) return;\r\n\t\r\n\t// Check if it's a YouTube URL\r\n\tconst youtubeMatch = url.match(/(?:youtube\\.com\\/watch\\?v=|youtu\\.be\\/)([^&\\s]+)/);\r\n\tif (youtubeMatch) {\r\n\t\tconst videoId = youtubeMatch[1];\r\n\t\tconst embedHtml = `<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/${videoId}\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen style=\"max-width: 100%;\"></iframe>`;\r\n\t\texec(\"insertHTML\", embedHtml);\r\n\t} else {\r\n\t\t// Assume it's a direct video URL\r\n\t\tconst videoHtml = `<video controls style=\"max-width: 100%; height: auto;\"><source src=\"${url}\" type=\"video/mp4\">Your browser does not support the video tag.</video>`;\r\n\t\texec(\"insertHTML\", videoHtml);\r\n\t}\r\n};\r\n","import { COMMANDS } from \"./editorCommands.js\";\r\n\r\nexport const onInput = (editorRef, setHtml, onChange, updateToolbarState) => {\r\n\tconst nextHtml = editorRef.current?.innerHTML || \"\";\r\n\tsetHtml(nextHtml);\r\n\tonChange({ html: nextHtml, text: editorRef.current?.innerText || \"\" });\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const onPaste = (event, plainPaste) => {\r\n\tif (!plainPaste) return;\r\n\tevent.preventDefault();\r\n\tconst text = event.clipboardData.getData(\"text/plain\");\r\n\tdocument.execCommand(\"insertText\", false, text);\r\n};\r\n\r\nexport const createUpdateToolbarState = (editorRef, setSelectionText, setActiveToolMap) => {\r\n\treturn () => {\r\n\t\tconst selection = document.getSelection();\r\n\t\tif (!selection || selection.rangeCount === 0 || !editorRef.current) return;\r\n\t\tconst anchorNode = selection.anchorNode;\r\n\t\tconst isInsideEditor = anchorNode && editorRef.current.contains(anchorNode);\r\n\t\tif (!isInsideEditor) {\r\n\t\t\tsetSelectionText(\"\");\r\n\t\t\tsetActiveToolMap({});\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsetSelectionText(selection.toString());\r\n\t\tconst nextActive = {};\r\n\t\tCOMMANDS.forEach((item) => {\r\n\t\t\ttry {\r\n\t\t\t\tnextActive[item.cmd] = document.queryCommandState(item.cmd);\r\n\t\t\t} catch {\r\n\t\t\t\tnextActive[item.cmd] = false;\r\n\t\t\t}\r\n\t\t});\r\n\t\tsetActiveToolMap(nextActive);\r\n\t};\r\n};\r\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\r\nimport CodeBlock from \"./CodeBlock.jsx\";\r\nimport { DEFAULT_HTML } from \"./defaultContent.js\";\r\nimport { COMMANDS } from \"./editorCommands.js\";\r\nimport { escapeHtml, exec as execCommand, clearAll as clearAllContent, exportHtml as exportHtmlContent } from \"./editorUtils.js\";\r\nimport { applyHeading as applyHeadingFormat, applyFontSize as applyFontSizeFormat, applyCustomFontSize as applyCustomFontSizeFormat, applyTextColor as applyTextColorFormat, applyBackgroundColor as applyBackgroundColorFormat, resetColors as resetColorsFormat } from \"./formattingFunctions.js\";\r\nimport { insertCodeBlock as insertCodeBlockContent, insertLink as insertLinkContent, insertTooltip as insertTooltipContent, insertAnchor as insertAnchorContent, insertHr as insertHrContent, insertImage as insertImageContent, insertVideo as insertVideoContent } from \"./insertFunctions.js\";\r\nimport { onInput as handleInput, onPaste as handlePaste, createUpdateToolbarState } from \"./eventHandlers.js\";\r\n\r\nexport default function Editor({\r\n\ttheme = \"dark\",\r\n\ttools = COMMANDS.map((item) => item.cmd),\r\n\tshowDemoText = false,\r\n\tshowHeading = true,\r\n\tshowFontSize = true,\r\n\tshowAlign = true,\r\n\tshowLink = true,\r\n\tshowTooltip = true,\r\n\tshowAnchor = true,\r\n\tshowHr = true,\r\n\tshowMedia = true,\r\n\tshowUndoRedo = true,\r\n\tshowClear = true,\r\n\tshowPlainPaste = true,\r\n\tshowColor = true,\r\n\tshowFullscreen = true,\r\n\tcodeBlock = false,\r\n\tcodeBlockLanguages,\r\n\tshowLiveHtml = true,\r\n\tshowStats = true,\r\n\tshowCopyHtml = true,\r\n\tonChange = () => { },\r\n\tinitialHtml = \"\",\r\n\tt\r\n}) {\r\n\tlet translate\r\n\tif (t) {\r\n\t\ttranslate = t\r\n\t} else {\r\n\t\ttranslate = (key) => {\r\n\t\t\tconst translations = {\r\n\t\t\t\tsample: \"Sample Text\",\r\n\t\t\t\tUndo: \"Undo\",\r\n\t\t\t\tRedo: \"Redo\",\r\n\t\t\t\tFormat: \"Format\",\r\n\t\t\t\tParagraph: \"Paragraph\",\r\n\t\t\t\t\"Heading 1\": \"Heading 1\",\r\n\t\t\t\t\"Heading 2\": \"Heading 2\",\r\n\t\t\t\t\"Heading 3\": \"Heading 3\",\r\n\t\t\t\t\"Heading 4\": \"Heading 4\",\r\n\t\t\t\tBlockquote: \"Blockquote\",\r\n\t\t\t\t\"Code Block\": \"Code Block\",\r\n\t\t\t\tSize: \"Size\",\r\n\t\t\t\tCustom: \"Custom\",\r\n\t\t\t\tFont: \"Font\",\r\n\t\t\t\t\"Text color\": \"Text color\",\r\n\t\t\t\tBackground: \"Background\",\r\n\t\t\t\t\"Background color\": \"Background color\",\r\n\t\t\t\t\"Reset colors\": \"Reset colors\",\r\n\t\t\t\t\"Insert code block\": \"Insert code block\",\r\n\t\t\t\tAlign: \"Align\",\r\n\t\t\t\t\"Align Left\": \"Align Left\",\r\n\t\t\t\t\"Align Center\": \"Align Center\",\r\n\t\t\t\t\"Align Right\": \"Align Right\",\r\n\t\t\t\tJustify: \"Justify\",\r\n\t\t\t\t\"Add tooltip/note to selected text\": \"Add tooltip/note to selected text\",\r\n\t\t\t\t\"Insert anchor\": \"Insert anchor\",\r\n\t\t\t\t\"Insert horizontal line\": \"Insert horizontal line\",\r\n\t\t\t\t\"Insert picture\": \"Insert picture\",\r\n\t\t\t\t\"Insert video\": \"Insert video\",\r\n\t\t\t\t\"Clear format\": \"Clear format\",\r\n\t\t\t\t\"Clear all\": \"Clear all\",\r\n\t\t\t\t\"Paste as plain text\": \"Paste as plain text\",\r\n\t\t\t\t\"Exit fullscreen\": \"Exit fullscreen\",\r\n\t\t\t\t\"Enter fullscreen\": \"Enter fullscreen\",\r\n\t\t\t\twords: \"words\",\r\n\t\t\t\tcharacters: \"characters\",\r\n\t\t\t\tselected: \"selected\",\r\n\t\t\t\t\"No selection\": \"No selection\",\r\n\t\t\t\t\"Copy HTML\": \"Copy HTML\",\r\n\t\t\t\t\"Live HTML\": \"Live HTML\",\r\n\t\t\t\t\"Insert Code Block\": \"Insert Code Block\",\r\n\t\t\t\t\"Paste your code here\": \"Paste your code here\",\r\n\t\t\t\tCancel: \"Cancel\",\r\n\t\t\t\tInsert: \"Insert\",\r\n\t\t\t};\r\n\t\t\treturn translations[key] || key;\r\n\t\t}\r\n\t}\r\n\r\n\tconst editorRef = useRef(null);\r\n\tconst [html, setHtml] = useState(\"\");\r\n\tconst [plainPaste, setPlainPaste] = useState(true);\r\n\tconst [selectionText, setSelectionText] = useState(\"\");\r\n\tconst [heading, setHeading] = useState(\"p\");\r\n\tconst [fontSize, setFontSize] = useState(\"16\");\r\n\tconst [customSize, setCustomSize] = useState(\"\");\r\n\tconst [textColor, setTextColor] = useState(\"#1f2937\");\r\n\tconst [backgroundColor, setBackgroundColor] = useState(\"#ffff00\");\r\n\tconst [activeToolMap, setActiveToolMap] = useState({});\r\n\tconst [isFullscreen, setIsFullscreen] = useState(false);\r\n\tconst [isCodeModalOpen, setIsCodeModalOpen] = useState(false);\r\n\tconst [codeValue, setCodeValue] = useState(\"\");\r\n\tconst [codeLanguage, setCodeLanguage] = useState(\"js\");\r\n\tconst [codeTheme, setCodeTheme] = useState(theme);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetCodeTheme(theme);\r\n\t}, [theme]);\r\n\r\n\t// NOTE: initialization for `initialHtml` / demo text moved below `updateToolbarState` declaration to avoid referencing\r\n\t// `updateToolbarState` before it is defined. See the effect inserted later in the file.\r\n\r\n\tconst stats = useMemo(() => {\r\n\t\tconst text = editorRef.current?.innerText || \"\";\r\n\t\tconst words = text.trim() ? text.trim().split(/\\s+/).length : 0;\r\n\t\treturn {\r\n\t\t\twords,\r\n\t\t\tchars: text.length,\r\n\t\t};\r\n\t}, [html]);\r\n\r\n\tconst exec = (cmd, value = null) => {\r\n\t\texecCommand(editorRef, cmd, value, setHtml, onChange, updateToolbarState);\r\n\t};\r\n\r\n\tconst applyHeading = (next) => {\r\n\t\tsetHeading(next);\r\n\t\tapplyHeadingFormat(next, exec);\r\n\t};\r\n\r\n\tconst applyFontSize = (next) => {\r\n\t\tif (next === \"custom\") {\r\n\t\t\tsetFontSize(\"custom\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsetFontSize(next);\r\n\t\tapplyFontSizeFormat(next, exec, editorRef, setHtml, updateToolbarState);\r\n\t};\r\n\r\n\tconst applyCustomFontSize = (value) => {\r\n\t\tsetCustomSize(value);\r\n\t\tapplyCustomFontSizeFormat(value, exec, editorRef, setHtml, updateToolbarState);\r\n\t};\r\n\r\n\tconst applyTextColor = (next) => {\r\n\t\tsetTextColor(next);\r\n\t\tapplyTextColorFormat(next, exec);\r\n\t};\r\n\r\n\tconst applyBackgroundColor = (next) => {\r\n\t\tsetBackgroundColor(next);\r\n\t\tapplyBackgroundColorFormat(next, exec);\r\n\t};\r\n\r\n\tconst resetColors = () => {\r\n\t\tresetColorsFormat(theme, setTextColor, setBackgroundColor, exec);\r\n\t};\r\n\r\n\tconst insertCodeBlock = () => {\r\n\t\tinsertCodeBlockContent(codeValue, codeLanguage, codeTheme, exec, setIsCodeModalOpen, setCodeValue);\r\n\t};\r\n\r\n\tconst insertLink = () => {\r\n\t\tinsertLinkContent(exec);\r\n\t};\r\n\r\n\tconst insertTooltip = () => {\r\n\t\tinsertTooltipContent(editorRef, setHtml, onChange, updateToolbarState);\r\n\t};\r\n\r\n\tconst insertAnchor = () => {\r\n\t\tinsertAnchorContent(exec);\r\n\t};\r\n\r\n\tconst insertHr = () => {\r\n\t\tinsertHrContent(exec);\r\n\t};\r\n\r\n\tconst insertImage = () => {\r\n\t\tinsertImageContent(exec);\r\n\t};\r\n\r\n\tconst insertVideo = () => {\r\n\t\tinsertVideoContent(exec);\r\n\t};\r\n\r\n\tconst toggleFullscreen = () => {\r\n\t\tsetIsFullscreen(!isFullscreen);\r\n\t};\r\n\r\n\tconst removeFormat = () => exec(\"removeFormat\");\r\n\r\n\tconst clearAll = () => {\r\n\t\tclearAllContent(editorRef, setHtml, onChange, updateToolbarState);\r\n\t};\r\n\r\n\tconst onInput = () => {\r\n\t\thandleInput(editorRef, setHtml, onChange, updateToolbarState);\r\n\t\t// Add key hint to all links\r\n\t\tconst links = editorRef.current?.querySelectorAll('a') || [];\r\n\t\tlinks.forEach((link) => {\r\n\t\t\tif (!link.getAttribute('data-key-hint')) {\r\n\t\t\t\tlink.setAttribute('data-key-hint', 'Ctrl/Shift + Click to follow');\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tconst onPaste = (event) => {\r\n\t\thandlePaste(event, plainPaste);\r\n\t};\r\n\r\n\tconst onEditorClick = (event) => {\r\n\t\tif (event.target.tagName === 'A' && (event.ctrlKey || event.shiftKey || event.metaKey)) {\r\n\t\t\tconst href = event.target.getAttribute('href');\r\n\t\t\tif (href) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\twindow.open(href, '_blank');\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tconst updateToolbarState = useCallback(\r\n\t\tcreateUpdateToolbarState(editorRef, setSelectionText, setActiveToolMap),\r\n\t\t[]\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tdocument.addEventListener(\"selectionchange\", updateToolbarState);\r\n\t\treturn () => document.removeEventListener(\"selectionchange\", updateToolbarState);\r\n\t}, [updateToolbarState]);\r\n\r\n\t// Initialize editor from `initialHtml` if provided; otherwise (when showDemoText)\r\n\t// populate with demo content. Run after `updateToolbarState` is defined.\r\n\tuseEffect(() => {\r\n\t\tif (initialHtml && editorRef.current) {\r\n\t\t\teditorRef.current.innerHTML = initialHtml;\r\n\t\t\tsetHtml(initialHtml);\r\n\t\t\tconst links = editorRef.current?.querySelectorAll('a') || [];\r\n\t\t\tlinks.forEach((link) => {\r\n\t\t\t\tif (!link.getAttribute('data-key-hint')) {\r\n\t\t\t\t\tlink.setAttribute('data-key-hint', 'Ctrl/Shift + Click to follow');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tupdateToolbarState();\r\n\t\t\ttry { onChange(initialHtml); } catch { /* noop */ }\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (showDemoText && editorRef.current) {\r\n\t\t\teditorRef.current.innerHTML = DEFAULT_HTML;\r\n\t\t\tsetHtml(editorRef.current.innerHTML);\r\n\t\t\tconst links = editorRef.current?.querySelectorAll('a') || [];\r\n\t\t\tlinks.forEach((link) => {\r\n\t\t\t\tif (!link.getAttribute('data-key-hint')) {\r\n\t\t\t\t\tlink.setAttribute('data-key-hint', 'Ctrl/Shift + Click to follow');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tupdateToolbarState();\r\n\t\t}\r\n\t}, [initialHtml, showDemoText, onChange, updateToolbarState]);\r\n\r\n\tconst exportHtml = async () => {\r\n\t\tawait exportHtmlContent(editorRef);\r\n\t};\r\n\r\n\tconst activeCommands = useMemo(\r\n\t\t() => COMMANDS.filter((item) => tools.includes(item.cmd)),\r\n\t\t[tools]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<section\r\n\t\t\tclassName={`editor-root theme-${theme}${showLiveHtml ? \" show-preview\" : \" no-preview\"}${isFullscreen ? \" fullscreen\" : \"\"}`}\r\n\t\t\tdata-theme={theme}\r\n\t\t>\r\n\t\t\t<div className=\"toolbar\">\r\n\t\t\t\t{showUndoRedo && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t<div className=\"toolbar-group\">\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\t\tonClick={() => exec(\"undo\")}\r\n\t\t\t\t\t\t\t\ttitle={translate(\"Undo\")}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t↶\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\t\tonClick={() => exec(\"redo\")}\r\n\t\t\t\t\t\t\t\ttitle={translate(\"Redo\")}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t↷\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<span className=\"toolbar-separator\">|</span>\r\n\t\t\t\t\t</>\r\n\t\t\t\t)}\r\n\t\t\t\t{activeCommands.length > 0 && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t<div className=\"toolbar-group\">\r\n\t\t\t\t\t\t\t{activeCommands.map((item) => (\r\n\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\tkey={item.cmd}\r\n\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\tclassName={`toolbar-btn${activeToolMap[item.cmd] ? \" active\" : \"\"}`}\r\n\t\t\t\t\t\t\t\t\tonMouseDown={(event) => event.preventDefault()}\r\n\t\t\t\t\t\t\t\t\tonClick={() => exec(item.cmd)}\r\n\t\t\t\t\t\t\t\t\ttitle={translate(item.label)}\r\n\t\t\t\t\t\t\t\t\taria-pressed={activeToolMap[item.cmd] || false}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{item.icon}\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<span className=\"toolbar-separator\">|</span>\r\n\t\t\t\t\t</>\r\n\t\t\t\t)}\r\n\t\t\t\t{(showHeading || showFontSize || showColor) && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t<div className=\"toolbar-group\">\r\n\t\t\t\t\t\t{showHeading && (\r\n\t\t\t\t\t\t\t<label className=\"toolbar-label\">\r\n\t\t\t\t\t\t\t\t{translate(\"Format\")}\r\n\t\t\t\t\t\t\t\t<select\r\n\t\t\t\t\t\t\t\t\tvalue={heading}\r\n\t\t\t\t\t\t\t\t\tonChange={(event) => applyHeading(event.target.value)}\r\n\t\t\t\t\t\t\t\t\tclassName=\"toolbar-select\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<option value=\"p\">{translate(\"Paragraph\")}</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"h1\">{translate(\"Heading 1\")}</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"h2\">{translate(\"Heading 2\")}</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"h3\">{translate(\"Heading 3\")}</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"h4\">{translate(\"Heading 4\")}</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"blockquote\">{translate(\"Blockquote\")}</option>\r\n\t\t\t\t\t\t\t\t\t{codeBlock && <option value=\"pre\">{translate(\"Code Block\")}</option>}\r\n\t\t\t\t\t\t\t\t</select>\r\n\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showFontSize && (\r\n\t\t\t\t\t\t\t<label className=\"toolbar-label\">\r\n\t\t\t\t\t\t\t\t{translate(\"Size\")}\r\n\t\t\t\t\t\t\t\t<select\r\n\t\t\t\t\t\t\t\t\tvalue={fontSize}\r\n\t\t\t\t\t\t\t\t\tonChange={(event) => applyFontSize(event.target.value)}\r\n\t\t\t\t\t\t\t\t\tclassName=\"toolbar-select\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<option value=\"10\">10px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"12\">12px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"14\">14px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"16\">16px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"18\">18px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"20\">20px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"22\">22px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"24\">24px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"28\">28px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"32\">32px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"36\">36px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"48\">48px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"custom\">{translate(\"Custom\")}</option>\r\n\t\t\t\t\t\t\t\t</select>\r\n\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showFontSize && fontSize === \"custom\" && (\r\n\t\t\t\t\t\t\t<label className=\"toolbar-label\">\r\n\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\ttype=\"number\"\r\n\t\t\t\t\t\t\t\t\tmin=\"8\"\r\n\t\t\t\t\t\t\t\t\tmax=\"200\"\r\n\t\t\t\t\t\t\t\t\tvalue={customSize}\r\n\t\t\t\t\t\t\t\t\tonChange={(event) => applyCustomFontSize(event.target.value)}\r\n\t\t\t\t\t\t\t\t\tplaceholder={translate(\"Size\")}\r\n\t\t\t\t\t\t\t\t\tclassName=\"toolbar-input\"\r\n\t\t\t\t\t\t\t\t\tstyle={{ width: \"60px\" }}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\tpx\r\n\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showColor && (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t<label className=\"toolbar-label color-label\">\r\n\t\t\t\t\t\t\t\t\t{translate(\"Font\")}\r\n\t\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\t\ttype=\"color\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-color\"\r\n\t\t\t\t\t\t\t\t\t\tvalue={textColor}\r\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => applyTextColor(event.target.value)}\r\n\t\t\t\t\t\t\t\t\t\taria-label={translate(\"Text color\")}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t\t\t<label className=\"toolbar-label color-label\">\r\n\t\t\t\t\t\t\t\t\t{translate(\"Background\")}\r\n\t\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\t\ttype=\"color\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-color\"\r\n\t\t\t\t\t\t\t\t\t\tvalue={backgroundColor}\r\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => applyBackgroundColor(event.target.value)}\r\n\t\t\t\t\t\t\t\t\t\taria-label={translate(\"Background color\")}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\tclassName=\"toolbar-btn toolbar-btn-small\"\r\n\t\t\t\t\t\t\t\t\tonClick={resetColors}\r\n\t\t\t\t\t\t\t\t\ttitle={translate(\"Reset colors\")}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t↺\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{codeBlock && (\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\tsetCodeTheme(theme);\r\n\t\t\t\t\t\t\t\t\tsetIsCodeModalOpen(true);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\ttitle={translate(\"Insert code block\")}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{translate(\"Code Block\")}\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showAlign && (\r\n\t\t\t\t\t\t\t<div className=\"toolbar-label\">\r\n\t\t\t\t\t\t\t\t{translate(\"Align\")}\r\n\t\t\t\t\t\t\t\t<div className=\"align-buttons\">\r\n\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-btn toolbar-btn-small\"\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => exec(\"justifyLeft\")}\r\n\t\t\t\t\t\t\t\t\t\ttitle={translate(\"Align Left\")}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t⟸\r\n\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-btn toolbar-btn-small\"\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => exec(\"justifyCenter\")}\r\n\t\t\t\t\t\t\t\t\t\ttitle={translate(\"Align Center\")}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t⇔\r\n\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-btn toolbar-btn-small\"\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => exec(\"justifyRight\")}\r\n\t\t\t\t\t\t\t\t\t\ttitle={translate(\"Align Right\")}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t⟹\r\n\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-btn toolbar-btn-small\"\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => exec(\"justifyFull\")}\r\n\t\t\t\t\t\t\t\t\t\ttitle={translate(\"Justify\")}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t⇿\r\n\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<span className=\"toolbar-separator\">|</span>\r\n\t\t\t\t</>\r\n\t\t\t\t)}\r\n\t\t\t\t{(showLink || showTooltip || showAnchor || showHr || showMedia || showClear) && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t<div className=\"toolbar-group\">\r\n\t\t\t\t\t\t{showLink && (\r\n\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertLink}>\r\n\t\t\t\t\t\t\t\t🔗\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showTooltip && (\r\n\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertTooltip} title={translate(\"Add tooltip/note to selected text\")}>\r\n\t\t\t\t\t\t\t\t💬\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showAnchor && (\r\n\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertAnchor} title={translate(\"Insert anchor\")}>\r\n\t\t\t\t\t\t\t\t⚓\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showHr && (\r\n\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertHr} title={translate(\"Insert horizontal line\")}>\r\n\t\t\t\t\t\t\t\t─\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showMedia && (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertImage} title={translate(\"Insert picture\")}>\r\n\t\t\t\t\t\t\t\t\t🖼️\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertVideo} title={translate(\"Insert video\")}>\r\n\t\t\t\t\t\t\t\t\t🎬\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showClear && (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={removeFormat}>\r\n\t\t\t\t\t\t\t\t\t{translate(\"Clear format\")}\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn danger\" onClick={clearAll}>\r\n\t\t\t\t\t\t\t\t\t{translate(\"Clear all\")}\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<span className=\"toolbar-separator\">|</span>\r\n\t\t\t\t</>\r\n\t\t\t\t)}\r\n\t\t\t\t{showPlainPaste && (\r\n\t\t\t\t\t<div className=\"toolbar-group toggle\">\r\n\t\t\t\t\t\t<label className=\"toggle-row\">\r\n\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\ttype=\"checkbox\"\r\n\t\t\t\t\t\t\t\tchecked={plainPaste}\r\n\t\t\t\t\t\t\t\tonChange={(event) => setPlainPaste(event.target.checked)}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t{translate(\"Paste as plain text\")}\r\n\t\t\t\t\t\t</label>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\t\t\t\t{showFullscreen && (\r\n\t\t\t\t\t<div className=\"toolbar-group\">\r\n\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\tonClick={toggleFullscreen}\r\n\t\t\t\t\t\t\ttitle={isFullscreen ? translate(\"Exit fullscreen\") : translate(\"Enter fullscreen\")}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{isFullscreen ? \"⤓\" : \"⤢\"}\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\t\t\t</div>\r\n\r\n\t\t\t<div className=\"editor-area\">\r\n\t\t\t\t<div\r\n\t\t\t\t\tref={editorRef}\r\n\t\t\t\t\tclassName=\"editor-surface\"\r\n\t\t\t\t\tcontentEditable\r\n\t\t\t\t\tonInput={onInput}\r\n\t\t\t\t\tonPaste={onPaste}\r\n\t\t\t\tonClick={onEditorClick}\r\n\t\t\t\tonKeyUp={updateToolbarState}\r\n\t\t\t\tonMouseUp={updateToolbarState}\r\n\t\t\t\tsuppressContentEditableWarning\r\n\t\t\t\tspellCheck\r\n\t\t\t/>\r\n\t\t</div>\r\n\r\n\t\t\t{(showStats || showCopyHtml) && (\r\n\t\t\t\t<footer className=\"editor-footer\">\r\n\t\t\t\t\t{showStats && (\r\n\t\t\t\t\t\t<div className=\"footer-stats\">\r\n\t\t\t\t\t\t\t<span>{stats.words} {translate(\"words\")}</span>\r\n\t\t\t\t\t\t\t<span>{stats.chars} {translate(\"characters\")}</span>\r\n\t\t\t\t\t\t\t<span>{selectionText ? `${selectionText.length} ${translate(\"selected\")}` : translate(\"No selection\")}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{showCopyHtml && (\r\n\t\t\t\t\t\t<div className=\"footer-actions\">\r\n\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={exportHtml}>\r\n\t\t\t\t\t\t\t\t{translate(\"Copy HTML\")}\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</footer>\r\n\t\t\t)}\r\n\r\n\t\t\t{showLiveHtml && (\r\n\t\t\t\t<aside className=\"editor-preview\">\r\n\t\t\t\t\t<pre className=\"preview-code\">{html}</pre>\r\n\t\t\t\t\t<div className=\"preview-header\">{translate(\"Live HTML\")}</div>\r\n\t\t\t\t</aside>\r\n\t\t\t)}\r\n\r\n\t\t\t{codeBlock && isCodeModalOpen && (\r\n\t\t\t\t<div className=\"modal-backdrop\" role=\"dialog\" aria-modal=\"true\">\r\n\t\t\t\t\t<div className=\"modal\">\r\n\t\t\t\t\t\t<div className=\"modal-header\">\r\n\t\t\t\t\t\t\t{translate(\"Insert Code Block\")}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<CodeBlock\r\n\t\t\t\t\t\t\tvalue={codeValue}\r\n\t\t\t\t\t\t\tlanguage={codeLanguage}\r\n\t\t\t\t\t\t\ttheme={codeTheme}\r\n\t\t\t\t\t\t\tlanguages={codeBlockLanguages}\r\n\t\t\t\t\t\t\tonChange={setCodeValue}\r\n\t\t\t\t\t\t\tonLanguageChange={setCodeLanguage}\r\n\t\t\t\t\t\t\tonThemeChange={setCodeTheme}\r\n\t\t\t\t\t\t\tplaceholder={translate(\"Paste your code here\")}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t<div className=\"modal-actions\">\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\t\tonClick={() => setIsCodeModalOpen(false)}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{translate(\"Cancel\")}\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\t\tonClick={insertCodeBlock}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{translate(\"Insert\")}\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t)}\r\n\t\t</section>\r\n\t);\r\n}\r\n","// src/index.js - Library entry point\r\nimport \"./index.css\";\r\nimport Editor from \"./components/Editor.jsx\";\r\nimport CodeBlock from \"./components/CodeBlock.jsx\";\r\n\r\nexport default Editor;\r\nexport { CodeBlock };\r\n"],"names":["DEFAULT_LANGUAGES","value","label","DEFAULT_THEMES","CodeBlock","language","theme","languages","themes","onChange","onLanguageChange","onThemeChange","placeholder","normalizedLanguages","useMemo","Array","isArray","length","map","item","currentLanguage","find","React","createElement","className","event","target","key","spellCheck","DEFAULT_HTML","COMMANDS","cmd","icon","escapeHtml","replace","exec","editorRef","setHtml","updateToolbarState","current","focus","document","execCommand","nextHtml","innerHTML","html","text","innerText","clearAll","exportHtml","payload","navigator","clipboard","writeText","alert","applyHeading","next","toUpperCase","applyFontSize","selection","window","getSelection","rangeCount","range","getRangeAt","collapsed","fontElements","querySelectorAll","forEach","el","removeAttribute","style","fontSize","applyCustomFontSize","isNaN","applyTextColor","applyBackgroundColor","resetColors","setTextColor","setBackgroundColor","defaultText","defaultBg","insertCodeBlock","codeValue","codeLanguage","codeTheme","setIsCodeModalOpen","setCodeValue","safeCode","languageClass","htmlBlock","insertLink","url","prompt","insertTooltip","selectedText","toString","tooltip","span","title","surroundContents","appendChild","extractContents","insertNode","removeAllRanges","insertAnchor","id","sanitizedId","anchorHtml","insertHr","insertImage","alt","imageHtml","insertVideo","youtubeMatch","match","videoId","embedHtml","videoHtml","onInput","onPaste","plainPaste","preventDefault","clipboardData","getData","createUpdateToolbarState","setSelectionText","setActiveToolMap","anchorNode","isInsideEditor","contains","nextActive","queryCommandState","Editor","tools","showDemoText","showHeading","showFontSize","showAlign","showLink","showTooltip","showAnchor","showHr","showMedia","showUndoRedo","showClear","showPlainPaste","showColor","showFullscreen","codeBlock","codeBlockLanguages","showLiveHtml","showStats","showCopyHtml","initialHtml","t","translate","translations","sample","Undo","Redo","Format","Paragraph","Blockquote","Size","Custom","Font","Background","Align","Justify","words","characters","selected","Cancel","Insert","useRef","useState","setPlainPaste","selectionText","heading","setHeading","setFontSize","customSize","setCustomSize","textColor","backgroundColor","activeToolMap","isFullscreen","setIsFullscreen","isCodeModalOpen","setCodeLanguage","setCodeTheme","useEffect","stats","trim","split","chars","applyHeadingFormat","applyFontSizeFormat","applyCustomFontSizeFormat","applyTextColorFormat","applyBackgroundColorFormat","resetColorsFormat","insertCodeBlockContent","insertLinkContent","insertTooltipContent","insertAnchorContent","insertHrContent","insertImageContent","insertVideoContent","toggleFullscreen","removeFormat","clearAllContent","handleInput","links","link","getAttribute","setAttribute","handlePaste","onEditorClick","tagName","ctrlKey","shiftKey","metaKey","href","open","useCallback","addEventListener","removeEventListener","exportHtmlContent","activeCommands","filter","includes","Fragment","type","onClick","onMouseDown","min","max","width","checked","ref","contentEditable","onKeyUp","onMouseUp","suppressContentEditableWarning","role"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/components/CodeBlock.jsx","../src/components/defaultContent.js","../src/components/editorCommands.js","../src/components/editorUtils.js","../src/components/formattingFunctions.js","../src/components/insertFunctions.js","../src/components/eventHandlers.js","../src/components/Editor.jsx","../src/index.js"],"sourcesContent":["import React, { useMemo } from \"react\";\r\n\r\nconst DEFAULT_LANGUAGES = [\r\n { value: \"plain\", label: \"Plain\" },\r\n { value: \"js\", label: \"JavaScript\" },\r\n { value: \"ts\", label: \"TypeScript\" },\r\n { value: \"java\", label: \"Java\" },\r\n { value: \"css\", label: \"CSS\" },\r\n { value: \"html\", label: \"HTML\" },\r\n { value: \"json\", label: \"JSON\" },\r\n];\r\n\r\nconst DEFAULT_THEMES = [\r\n { value: \"dark\", label: \"Dark\" },\r\n { value: \"light\", label: \"Light\" },\r\n];\r\n\r\nexport default function CodeBlock({\r\n value = \"\",\r\n language = \"plain\",\r\n theme = \"dark\",\r\n languages = DEFAULT_LANGUAGES,\r\n themes = DEFAULT_THEMES,\r\n onChange = () => {},\r\n onLanguageChange = () => {},\r\n onThemeChange = () => {},\r\n placeholder = \"Paste code here\",\r\n}) {\r\n const normalizedLanguages = useMemo(() => {\r\n if (!Array.isArray(languages) || languages.length === 0) return DEFAULT_LANGUAGES;\r\n if (typeof languages[0] === \"string\") {\r\n return languages.map((item) => ({ value: item, label: item }));\r\n }\r\n return languages;\r\n }, [languages]);\r\n\r\n const currentLanguage = useMemo(\r\n () => normalizedLanguages.find((item) => item.value === language) || normalizedLanguages[0],\r\n [language, normalizedLanguages]\r\n );\r\n\r\n return (\r\n <section className={`code-block code-block-${theme}`} data-language={currentLanguage?.value}>\r\n <header className=\"code-block-toolbar\">\r\n <label className=\"code-block-label\">\r\n Language\r\n <select\r\n className=\"code-block-select\"\r\n value={currentLanguage?.value}\r\n onChange={(event) => onLanguageChange(event.target.value)}\r\n >\r\n {normalizedLanguages.map((item) => (\r\n <option key={item.value} value={item.value}>\r\n {item.label}\r\n </option>\r\n ))}\r\n </select>\r\n </label>\r\n <label className=\"code-block-label\">\r\n Theme\r\n <select\r\n className=\"code-block-select\"\r\n value={theme}\r\n onChange={(event) => onThemeChange(event.target.value)}\r\n >\r\n {themes.map((item) => (\r\n <option key={item.value} value={item.value}>\r\n {item.label}\r\n </option>\r\n ))}\r\n </select>\r\n </label>\r\n </header>\r\n <textarea\r\n className=\"code-block-area\"\r\n value={value}\r\n onChange={(event) => onChange(event.target.value)}\r\n placeholder={placeholder}\r\n spellCheck={false}\r\n />\r\n </section>\r\n );\r\n}\r\n","export const DEFAULT_HTML = `\r\n\t<h1>Welcome</h1>\r\n\t<p>This is a lightweight WYSIWYG editor built without external libraries.</p>\r\n\t<ul>\r\n\t\t<li>Edit text directly</li>\r\n\t\t<li>Use the toolbar for formatting</li>\r\n\t\t<li>Copy, paste, and export HTML</li>\r\n\t</ul>\r\n`;\r\n","export const COMMANDS = [\r\n\t{ cmd: \"bold\", label: \"Bold\", icon: \"B\" },\r\n\t{ cmd: \"italic\", label: \"Italic\", icon: \"I\" },\r\n\t{ cmd: \"underline\", label: \"Underline\", icon: \"U\" },\r\n\t{ cmd: \"strikeThrough\", label: \"Strike\", icon: \"S\" },\r\n\t{ cmd: \"insertUnorderedList\", label: \"Bullets\", icon: \"•\" },\r\n\t{ cmd: \"insertOrderedList\", label: \"Numbered\", icon: \"1.\" },\r\n\t{ cmd: \"justifyLeft\", label: \"Left\", icon: \"⟸\" },\r\n\t{ cmd: \"justifyCenter\", label: \"Center\", icon: \"⇔\" },\r\n\t{ cmd: \"justifyRight\", label: \"Right\", icon: \"⟹\" },\r\n];\r\n","export const escapeHtml = (value) =>\r\n\tvalue\r\n\t\t.replace(/&/g, \"&amp;\")\r\n\t\t.replace(/</g, \"&lt;\")\r\n\t\t.replace(/>/g, \"&gt;\")\r\n\t\t.replace(/\\\"/g, \"&quot;\")\r\n\t\t.replace(/'/g, \"&#039;\");\r\n\r\nexport const exec = (editorRef, cmd, value = null, setHtml, onChange, updateToolbarState) => {\r\n\teditorRef.current?.focus();\r\n\tdocument.execCommand(cmd, false, value);\r\n\tconst nextHtml = editorRef.current?.innerHTML || \"\";\r\n\tsetHtml(nextHtml);\r\n\tonChange({ html: nextHtml, text: editorRef.current?.innerText || \"\" });\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const removeFormat = (exec) => exec(\"removeFormat\");\r\n\r\nexport const clearAll = (editorRef, setHtml, onChange, updateToolbarState) => {\r\n\tif (!editorRef.current) return;\r\n\teditorRef.current.innerHTML = \"<p></p>\";\r\n\tsetHtml(editorRef.current.innerHTML);\r\n\tonChange({ html: editorRef.current.innerHTML, text: editorRef.current.innerText || \"\" });\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const exportHtml = async (editorRef) => {\r\n\tconst payload = editorRef.current?.innerHTML || \"\";\r\n\tawait navigator.clipboard.writeText(payload);\r\n\talert(\"HTML copied to clipboard.\");\r\n};\r\n","export const applyHeading = (next, exec) => {\r\n\tif (next === \"p\") {\r\n\t\texec(\"formatBlock\", \"P\");\r\n\t\treturn;\r\n\t}\r\n\tif (next === \"pre\") {\r\n\t\texec(\"formatBlock\", \"PRE\");\r\n\t\treturn;\r\n\t}\r\n\texec(\"formatBlock\", next.toUpperCase());\r\n};\r\n\r\nexport const applyFontSize = (next, exec, editorRef, setHtml, updateToolbarState) => {\r\n\tconst selection = window.getSelection();\r\n\tif (!selection || selection.rangeCount === 0) return;\r\n\t\r\n\tconst range = selection.getRangeAt(0);\r\n\tif (range.collapsed) return; // No selection\r\n\t\r\n\texec(\"fontSize\", \"7\");\r\n\tconst fontElements = editorRef.current?.querySelectorAll(\"font[size='7']\") || [];\r\n\tfontElements.forEach((el) => {\r\n\t\tel.removeAttribute(\"size\");\r\n\t\tel.style.fontSize = `${next}px`;\r\n\t});\r\n\tsetHtml(editorRef.current?.innerHTML || \"\");\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const applyCustomFontSize = (value, exec, editorRef, setHtml, updateToolbarState) => {\r\n\tif (!value || isNaN(value)) return;\r\n\t\r\n\tconst selection = window.getSelection();\r\n\tif (!selection || selection.rangeCount === 0) return;\r\n\t\r\n\tconst range = selection.getRangeAt(0);\r\n\tif (range.collapsed) return; // No selection\r\n\t\r\n\texec(\"fontSize\", \"7\");\r\n\tconst fontElements = editorRef.current?.querySelectorAll(\"font[size='7']\") || [];\r\n\tfontElements.forEach((el) => {\r\n\t\tel.removeAttribute(\"size\");\r\n\t\tel.style.fontSize = `${value}px`;\r\n\t});\r\n\tsetHtml(editorRef.current?.innerHTML || \"\");\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const applyTextColor = (next, exec) => {\r\n\texec(\"foreColor\", next);\r\n};\r\n\r\nexport const applyBackgroundColor = (next, exec) => {\r\n\texec(\"hiliteColor\", next);\r\n};\r\n\r\nexport const resetColors = (theme, setTextColor, setBackgroundColor, exec) => {\r\n\tconst defaultText = theme === \"dark\" ? \"#e5e7eb\" : \"#1f2937\";\r\n\tconst defaultBg = \"#ffff00\";\r\n\tsetTextColor(defaultText);\r\n\tsetBackgroundColor(defaultBg);\r\n\texec(\"removeFormat\");\r\n};\r\n","import { escapeHtml } from \"./editorUtils.js\";\r\n\r\nexport const insertCodeBlock = (codeValue, codeLanguage, codeTheme, exec, setIsCodeModalOpen, setCodeValue) => {\r\n\tconst safeCode = escapeHtml(codeValue || \"\");\r\n\tconst languageClass = codeLanguage ? `language-${codeLanguage}` : \"language-plain\";\r\n\tconst htmlBlock = `<pre class=\"code-block-shell\" data-theme=\"${codeTheme}\"><code class=\"${languageClass}\">${safeCode}</code></pre>`;\r\n\texec(\"insertHTML\", htmlBlock);\r\n\tsetIsCodeModalOpen(false);\r\n\tsetCodeValue(\"\");\r\n};\r\n\r\nexport const insertLink = (exec) => {\r\n\tconst url = window.prompt(\"Enter URL\", \"https://\");\r\n\tif (!url) return;\r\n\texec(\"createLink\", url);\r\n};\r\n\r\nexport const insertTooltip = (editorRef, setHtml, onChange, updateToolbarState) => {\r\n\tconst selection = window.getSelection();\r\n\tif (!selection || selection.rangeCount === 0) return;\r\n\tconst selectedText = selection.toString();\r\n\tif (!selectedText) {\r\n\t\talert(\"Please select some text first\");\r\n\t\treturn;\r\n\t}\r\n\tconst tooltip = window.prompt(\"Enter tooltip/note text\", \"\");\r\n\tif (!tooltip) return;\r\n\t\r\n\tconst range = selection.getRangeAt(0);\r\n\tconst span = document.createElement(\"span\");\r\n\tspan.className = \"has-tooltip\";\r\n\tspan.title = tooltip;\r\n\t\r\n\ttry {\r\n\t\trange.surroundContents(span);\r\n\t} catch {\r\n\t\t// If surroundContents fails, use alternative method\r\n\t\tspan.appendChild(range.extractContents());\r\n\t\trange.insertNode(span);\r\n\t}\r\n\t\r\n\tselection.removeAllRanges();\r\n\tconst nextHtml = editorRef.current?.innerHTML || \"\";\r\n\tsetHtml(nextHtml);\r\n\tonChange({ html: nextHtml, text: editorRef.current?.innerText || \"\" });\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const insertAnchor = (exec) => {\r\n\tconst id = window.prompt(\"Enter anchor ID\", \"\");\r\n\tif (!id) return;\r\n\tconst sanitizedId = id.replace(/[^a-zA-Z0-9-_]/g, \"\");\r\n\tconst anchorHtml = `<span class=\"anchor-marker\" id=\"${sanitizedId}\" data-anchor=\"${sanitizedId}\">⚓${sanitizedId}</span>`;\r\n\texec(\"insertHTML\", anchorHtml);\r\n};\r\n\r\nexport const insertHr = (exec) => {\r\n\texec(\"insertHTML\", \"<hr>\");\r\n};\r\n\r\nexport const insertImage = (exec) => {\r\n\tconst url = window.prompt(\"Enter image URL\", \"https://\");\r\n\tif (!url) return;\r\n\tconst alt = window.prompt(\"Enter image description (alt text)\", \"\");\r\n\tconst imageHtml = `<img src=\"${url}\" alt=\"${alt || ''}\" style=\"max-width: 100%; height: auto;\" />`;\r\n\texec(\"insertHTML\", imageHtml);\r\n};\r\n\r\nexport const insertVideo = (exec) => {\r\n\tconst url = window.prompt(\"Enter video URL (YouTube, MP4, etc.)\", \"https://\");\r\n\tif (!url) return;\r\n\t\r\n\t// Check if it's a YouTube URL\r\n\tconst youtubeMatch = url.match(/(?:youtube\\.com\\/watch\\?v=|youtu\\.be\\/)([^&\\s]+)/);\r\n\tif (youtubeMatch) {\r\n\t\tconst videoId = youtubeMatch[1];\r\n\t\tconst embedHtml = `<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/${videoId}\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen style=\"max-width: 100%;\"></iframe>`;\r\n\t\texec(\"insertHTML\", embedHtml);\r\n\t} else {\r\n\t\t// Assume it's a direct video URL\r\n\t\tconst videoHtml = `<video controls style=\"max-width: 100%; height: auto;\"><source src=\"${url}\" type=\"video/mp4\">Your browser does not support the video tag.</video>`;\r\n\t\texec(\"insertHTML\", videoHtml);\r\n\t}\r\n};\r\n","import { COMMANDS } from \"./editorCommands.js\";\r\n\r\nexport const onInput = (editorRef, setHtml, onChange, updateToolbarState) => {\r\n\tconst nextHtml = editorRef.current?.innerHTML || \"\";\r\n\tsetHtml(nextHtml);\r\n\tonChange({ html: nextHtml, text: editorRef.current?.innerText || \"\" });\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const onPaste = (event, plainPaste) => {\r\n\tif (!plainPaste) return;\r\n\tevent.preventDefault();\r\n\tconst text = event.clipboardData.getData(\"text/plain\");\r\n\tdocument.execCommand(\"insertText\", false, text);\r\n};\r\n\r\nexport const createUpdateToolbarState = (editorRef, setSelectionText, setActiveToolMap) => {\r\n\treturn () => {\r\n\t\tconst selection = document.getSelection();\r\n\t\tif (!selection || selection.rangeCount === 0 || !editorRef.current) return;\r\n\t\tconst anchorNode = selection.anchorNode;\r\n\t\tconst isInsideEditor = anchorNode && editorRef.current.contains(anchorNode);\r\n\t\tif (!isInsideEditor) {\r\n\t\t\tsetSelectionText(\"\");\r\n\t\t\tsetActiveToolMap({});\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsetSelectionText(selection.toString());\r\n\t\tconst nextActive = {};\r\n\t\tCOMMANDS.forEach((item) => {\r\n\t\t\ttry {\r\n\t\t\t\tnextActive[item.cmd] = document.queryCommandState(item.cmd);\r\n\t\t\t} catch {\r\n\t\t\t\tnextActive[item.cmd] = false;\r\n\t\t\t}\r\n\t\t});\r\n\t\tsetActiveToolMap(nextActive);\r\n\t};\r\n};\r\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\r\nimport CodeBlock from \"./CodeBlock.jsx\";\r\nimport { DEFAULT_HTML } from \"./defaultContent.js\";\r\nimport { COMMANDS } from \"./editorCommands.js\";\r\nimport { escapeHtml, exec as execCommand, clearAll as clearAllContent, exportHtml as exportHtmlContent } from \"./editorUtils.js\";\r\nimport { applyHeading as applyHeadingFormat, applyFontSize as applyFontSizeFormat, applyCustomFontSize as applyCustomFontSizeFormat, applyTextColor as applyTextColorFormat, applyBackgroundColor as applyBackgroundColorFormat, resetColors as resetColorsFormat } from \"./formattingFunctions.js\";\r\nimport { insertCodeBlock as insertCodeBlockContent, insertLink as insertLinkContent, insertTooltip as insertTooltipContent, insertAnchor as insertAnchorContent, insertHr as insertHrContent, insertImage as insertImageContent, insertVideo as insertVideoContent } from \"./insertFunctions.js\";\r\nimport { onInput as handleInput, onPaste as handlePaste, createUpdateToolbarState } from \"./eventHandlers.js\";\r\n\r\nexport default function Editor({\r\n\ttheme = \"dark\",\r\n\ttools = COMMANDS.map((item) => item.cmd),\r\n\tshowDemoText = false,\r\n\tshowHeading = true,\r\n\tshowFontSize = true,\r\n\tshowAlign = true,\r\n\tshowLink = true,\r\n\tshowTooltip = true,\r\n\tshowAnchor = true,\r\n\tshowHr = true,\r\n\tshowMedia = true,\r\n\tshowUndoRedo = true,\r\n\tshowClear = true,\r\n\tshowPlainPaste = true,\r\n\tshowColor = true,\r\n\tshowFullscreen = true,\r\n\tcodeBlock = false,\r\n\tcodeBlockLanguages,\r\n\tshowLiveHtml = true,\r\n\tshowStats = true,\r\n\tshowCopyHtml = true,\r\n\tonChange = () => { },\r\n\tinitialHtml = \"\",\r\n\tt\r\n}) {\r\n\tlet translate\r\n\tif (t) {\r\n\t\ttranslate = t\r\n\t} else {\r\n\t\ttranslate = (key) => {\r\n\t\t\tconst translations = {\r\n\t\t\t\tsample: \"Sample Text\",\r\n\t\t\t\tUndo: \"Undo\",\r\n\t\t\t\tRedo: \"Redo\",\r\n\t\t\t\tFormat: \"Format\",\r\n\t\t\t\tParagraph: \"Paragraph\",\r\n\t\t\t\t\"Heading 1\": \"Heading 1\",\r\n\t\t\t\t\"Heading 2\": \"Heading 2\",\r\n\t\t\t\t\"Heading 3\": \"Heading 3\",\r\n\t\t\t\t\"Heading 4\": \"Heading 4\",\r\n\t\t\t\tBlockquote: \"Blockquote\",\r\n\t\t\t\t\"Code Block\": \"Code Block\",\r\n\t\t\t\tSize: \"Size\",\r\n\t\t\t\tCustom: \"Custom\",\r\n\t\t\t\tFont: \"Font\",\r\n\t\t\t\t\"Text color\": \"Text color\",\r\n\t\t\t\tBackground: \"Background\",\r\n\t\t\t\t\"Background color\": \"Background color\",\r\n\t\t\t\t\"Reset colors\": \"Reset colors\",\r\n\t\t\t\t\"Insert code block\": \"Insert code block\",\r\n\t\t\t\tAlign: \"Align\",\r\n\t\t\t\t\"Align Left\": \"Align Left\",\r\n\t\t\t\t\"Align Center\": \"Align Center\",\r\n\t\t\t\t\"Align Right\": \"Align Right\",\r\n\t\t\t\tJustify: \"Justify\",\r\n\t\t\t\t\"Add tooltip/note to selected text\": \"Add tooltip/note to selected text\",\r\n\t\t\t\t\"Insert anchor\": \"Insert anchor\",\r\n\t\t\t\t\"Insert horizontal line\": \"Insert horizontal line\",\r\n\t\t\t\t\"Insert picture\": \"Insert picture\",\r\n\t\t\t\t\"Insert video\": \"Insert video\",\r\n\t\t\t\t\"Clear format\": \"Clear format\",\r\n\t\t\t\t\"Clear all\": \"Clear all\",\r\n\t\t\t\t\"Paste as plain text\": \"Paste as plain text\",\r\n\t\t\t\t\"Exit fullscreen\": \"Exit fullscreen\",\r\n\t\t\t\t\"Enter fullscreen\": \"Enter fullscreen\",\r\n\t\t\t\twords: \"words\",\r\n\t\t\t\tcharacters: \"characters\",\r\n\t\t\t\tselected: \"selected\",\r\n\t\t\t\t\"No selection\": \"No selection\",\r\n\t\t\t\t\"Copy HTML\": \"Copy HTML\",\r\n\t\t\t\t\"Live HTML\": \"Live HTML\",\r\n\t\t\t\t\"Insert Code Block\": \"Insert Code Block\",\r\n\t\t\t\t\"Paste your code here\": \"Paste your code here\",\r\n\t\t\t\tCancel: \"Cancel\",\r\n\t\t\t\tInsert: \"Insert\",\r\n\t\t\t};\r\n\t\t\treturn translations[key] || key;\r\n\t\t}\r\n\t}\r\n\r\n\tconst editorRef = useRef(null);\r\n\t// when true we already applied `initialHtml` / demo content once — don't overwrite user edits\r\n\tconst initialAppliedRef = useRef(false);\r\n\tconst [html, setHtml] = useState(\"\");\r\n\tconst [plainPaste, setPlainPaste] = useState(true);\r\n\tconst [selectionText, setSelectionText] = useState(\"\");\r\n\tconst [heading, setHeading] = useState(\"p\");\r\n\tconst [fontSize, setFontSize] = useState(\"16\");\r\n\tconst [customSize, setCustomSize] = useState(\"\");\r\n\tconst [textColor, setTextColor] = useState(\"#1f2937\");\r\n\tconst [backgroundColor, setBackgroundColor] = useState(\"#ffff00\");\r\n\tconst [activeToolMap, setActiveToolMap] = useState({});\r\n\tconst [isFullscreen, setIsFullscreen] = useState(false);\r\n\tconst [isCodeModalOpen, setIsCodeModalOpen] = useState(false);\r\n\tconst [codeValue, setCodeValue] = useState(\"\");\r\n\tconst [codeLanguage, setCodeLanguage] = useState(\"js\");\r\n\tconst [codeTheme, setCodeTheme] = useState(theme);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetCodeTheme(theme);\r\n\t}, [theme]);\r\n\r\n\t// NOTE: initialization for `initialHtml` / demo text moved below `updateToolbarState` declaration to avoid referencing\r\n\t// `updateToolbarState` before it is defined. See the effect inserted later in the file.\r\n\r\n\tconst stats = useMemo(() => {\r\n\t\tconst text = editorRef.current?.innerText || \"\";\r\n\t\tconst words = text.trim() ? text.trim().split(/\\s+/).length : 0;\r\n\t\treturn {\r\n\t\t\twords,\r\n\t\t\tchars: text.length,\r\n\t\t};\r\n\t}, [html]);\r\n\r\n\tconst exec = (cmd, value = null) => {\r\n\t\texecCommand(editorRef, cmd, value, setHtml, onChange, updateToolbarState);\r\n\t};\r\n\r\n\tconst applyHeading = (next) => {\r\n\t\tsetHeading(next);\r\n\t\tapplyHeadingFormat(next, exec);\r\n\t};\r\n\r\n\tconst applyFontSize = (next) => {\r\n\t\tif (next === \"custom\") {\r\n\t\t\tsetFontSize(\"custom\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsetFontSize(next);\r\n\t\tapplyFontSizeFormat(next, exec, editorRef, setHtml, updateToolbarState);\r\n\t};\r\n\r\n\tconst applyCustomFontSize = (value) => {\r\n\t\tsetCustomSize(value);\r\n\t\tapplyCustomFontSizeFormat(value, exec, editorRef, setHtml, updateToolbarState);\r\n\t};\r\n\r\n\tconst applyTextColor = (next) => {\r\n\t\tsetTextColor(next);\r\n\t\tapplyTextColorFormat(next, exec);\r\n\t};\r\n\r\n\tconst applyBackgroundColor = (next) => {\r\n\t\tsetBackgroundColor(next);\r\n\t\tapplyBackgroundColorFormat(next, exec);\r\n\t};\r\n\r\n\tconst resetColors = () => {\r\n\t\tresetColorsFormat(theme, setTextColor, setBackgroundColor, exec);\r\n\t};\r\n\r\n\tconst insertCodeBlock = () => {\r\n\t\tinsertCodeBlockContent(codeValue, codeLanguage, codeTheme, exec, setIsCodeModalOpen, setCodeValue);\r\n\t};\r\n\r\n\tconst insertLink = () => {\r\n\t\tinsertLinkContent(exec);\r\n\t};\r\n\r\n\tconst insertTooltip = () => {\r\n\t\tinsertTooltipContent(editorRef, setHtml, onChange, updateToolbarState);\r\n\t};\r\n\r\n\tconst insertAnchor = () => {\r\n\t\tinsertAnchorContent(exec);\r\n\t};\r\n\r\n\tconst insertHr = () => {\r\n\t\tinsertHrContent(exec);\r\n\t};\r\n\r\n\tconst insertImage = () => {\r\n\t\tinsertImageContent(exec);\r\n\t};\r\n\r\n\tconst insertVideo = () => {\r\n\t\tinsertVideoContent(exec);\r\n\t};\r\n\r\n\tconst toggleFullscreen = () => {\r\n\t\tsetIsFullscreen(!isFullscreen);\r\n\t};\r\n\r\n\tconst removeFormat = () => exec(\"removeFormat\");\r\n\r\n\tconst clearAll = () => {\r\n\t\tclearAllContent(editorRef, setHtml, onChange, updateToolbarState);\r\n\t};\r\n\r\n\tconst onInput = () => {\r\n\t\thandleInput(editorRef, setHtml, onChange, updateToolbarState);\r\n\t\t// Add key hint to all links\r\n\t\tconst links = editorRef.current?.querySelectorAll('a') || [];\r\n\t\tlinks.forEach((link) => {\r\n\t\t\tif (!link.getAttribute('data-key-hint')) {\r\n\t\t\t\tlink.setAttribute('data-key-hint', 'Ctrl/Shift + Click to follow');\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tconst onPaste = (event) => {\r\n\t\thandlePaste(event, plainPaste);\r\n\t};\r\n\r\n\tconst onEditorClick = (event) => {\r\n\t\tif (event.target.tagName === 'A' && (event.ctrlKey || event.shiftKey || event.metaKey)) {\r\n\t\t\tconst href = event.target.getAttribute('href');\r\n\t\t\tif (href) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\twindow.open(href, '_blank');\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tconst updateToolbarState = useCallback(\r\n\t\tcreateUpdateToolbarState(editorRef, setSelectionText, setActiveToolMap),\r\n\t\t[]\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tdocument.addEventListener(\"selectionchange\", updateToolbarState);\r\n\t\treturn () => document.removeEventListener(\"selectionchange\", updateToolbarState);\r\n\t}, [updateToolbarState]);\r\n\r\n\t// Initialize editor from `initialHtml` (applied once) or fall back to demo text.\r\n\t// Guard against re-applying `initialHtml` on every render — that was causing user edits to be overwritten.\r\n\tuseEffect(() => {\r\n\t\tif (!editorRef.current || initialAppliedRef.current) return;\r\n\r\n\t\t// apply `initialHtml` only once (initialization). If parent later wants to *reset*\r\n\t\t// the editor, we can add an explicit API — but default behaviour is \"initial only\".\r\n\t\tif (initialHtml) {\r\n\t\t\teditorRef.current.innerHTML = initialHtml;\r\n\t\t\tsetHtml(initialHtml);\r\n\t\t\tconst links = editorRef.current?.querySelectorAll('a') || [];\r\n\t\t\tlinks.forEach((link) => {\r\n\t\t\t\tif (!link.getAttribute('data-key-hint')) {\r\n\t\t\t\t\tlink.setAttribute('data-key-hint', 'Ctrl/Shift + Click to follow');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tupdateToolbarState();\r\n\t\t\ttry { onChange(initialHtml); } catch { /* noop */ }\r\n\t\t\tinitialAppliedRef.current = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (showDemoText) {\r\n\t\t\teditorRef.current.innerHTML = DEFAULT_HTML;\r\n\t\t\tsetHtml(editorRef.current.innerHTML);\r\n\t\t\tconst links = editorRef.current?.querySelectorAll('a') || [];\r\n\t\t\tlinks.forEach((link) => {\r\n\t\t\t\tif (!link.getAttribute('data-key-hint')) {\r\n\t\t\t\t\tlink.setAttribute('data-key-hint', 'Ctrl/Shift + Click to follow');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tupdateToolbarState();\r\n\t\t\tinitialAppliedRef.current = true;\r\n\t\t}\r\n\t}, [initialHtml, showDemoText, onChange, updateToolbarState]);\r\n\r\n\tconst exportHtml = async () => {\r\n\t\tawait exportHtmlContent(editorRef);\r\n\t};\r\n\r\n\tconst activeCommands = useMemo(\r\n\t\t() => COMMANDS.filter((item) => tools.includes(item.cmd)),\r\n\t\t[tools]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<section\r\n\t\t\tclassName={`editor-root theme-${theme}${showLiveHtml ? \" show-preview\" : \" no-preview\"}${isFullscreen ? \" fullscreen\" : \"\"}`}\r\n\t\t\tdata-theme={theme}\r\n\t\t>\r\n\t\t\t<div className=\"toolbar\">\r\n\t\t\t\t{showUndoRedo && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t<div className=\"toolbar-group\">\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\t\tonClick={() => exec(\"undo\")}\r\n\t\t\t\t\t\t\t\ttitle={translate(\"Undo\")}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t↶\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\t\tonClick={() => exec(\"redo\")}\r\n\t\t\t\t\t\t\t\ttitle={translate(\"Redo\")}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t↷\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<span className=\"toolbar-separator\">|</span>\r\n\t\t\t\t\t</>\r\n\t\t\t\t)}\r\n\t\t\t\t{activeCommands.length > 0 && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t<div className=\"toolbar-group\">\r\n\t\t\t\t\t\t\t{activeCommands.map((item) => (\r\n\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\tkey={item.cmd}\r\n\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\tclassName={`toolbar-btn${activeToolMap[item.cmd] ? \" active\" : \"\"}`}\r\n\t\t\t\t\t\t\t\t\tonMouseDown={(event) => event.preventDefault()}\r\n\t\t\t\t\t\t\t\t\tonClick={() => exec(item.cmd)}\r\n\t\t\t\t\t\t\t\t\ttitle={translate(item.label)}\r\n\t\t\t\t\t\t\t\t\taria-pressed={activeToolMap[item.cmd] || false}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{item.icon}\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<span className=\"toolbar-separator\">|</span>\r\n\t\t\t\t\t</>\r\n\t\t\t\t)}\r\n\t\t\t\t{(showHeading || showFontSize || showColor) && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t<div className=\"toolbar-group\">\r\n\t\t\t\t\t\t{showHeading && (\r\n\t\t\t\t\t\t\t<label className=\"toolbar-label\">\r\n\t\t\t\t\t\t\t\t{translate(\"Format\")}\r\n\t\t\t\t\t\t\t\t<select\r\n\t\t\t\t\t\t\t\t\tvalue={heading}\r\n\t\t\t\t\t\t\t\t\tonChange={(event) => applyHeading(event.target.value)}\r\n\t\t\t\t\t\t\t\t\tclassName=\"toolbar-select\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<option value=\"p\">{translate(\"Paragraph\")}</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"h1\">{translate(\"Heading 1\")}</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"h2\">{translate(\"Heading 2\")}</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"h3\">{translate(\"Heading 3\")}</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"h4\">{translate(\"Heading 4\")}</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"blockquote\">{translate(\"Blockquote\")}</option>\r\n\t\t\t\t\t\t\t\t\t{codeBlock && <option value=\"pre\">{translate(\"Code Block\")}</option>}\r\n\t\t\t\t\t\t\t\t</select>\r\n\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showFontSize && (\r\n\t\t\t\t\t\t\t<label className=\"toolbar-label\">\r\n\t\t\t\t\t\t\t\t{translate(\"Size\")}\r\n\t\t\t\t\t\t\t\t<select\r\n\t\t\t\t\t\t\t\t\tvalue={fontSize}\r\n\t\t\t\t\t\t\t\t\tonChange={(event) => applyFontSize(event.target.value)}\r\n\t\t\t\t\t\t\t\t\tclassName=\"toolbar-select\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<option value=\"10\">10px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"12\">12px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"14\">14px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"16\">16px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"18\">18px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"20\">20px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"22\">22px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"24\">24px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"28\">28px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"32\">32px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"36\">36px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"48\">48px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"custom\">{translate(\"Custom\")}</option>\r\n\t\t\t\t\t\t\t\t</select>\r\n\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showFontSize && fontSize === \"custom\" && (\r\n\t\t\t\t\t\t\t<label className=\"toolbar-label\">\r\n\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\ttype=\"number\"\r\n\t\t\t\t\t\t\t\t\tmin=\"8\"\r\n\t\t\t\t\t\t\t\t\tmax=\"200\"\r\n\t\t\t\t\t\t\t\t\tvalue={customSize}\r\n\t\t\t\t\t\t\t\t\tonChange={(event) => applyCustomFontSize(event.target.value)}\r\n\t\t\t\t\t\t\t\t\tplaceholder={translate(\"Size\")}\r\n\t\t\t\t\t\t\t\t\tclassName=\"toolbar-input\"\r\n\t\t\t\t\t\t\t\t\tstyle={{ width: \"60px\" }}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\tpx\r\n\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showColor && (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t<label className=\"toolbar-label color-label\">\r\n\t\t\t\t\t\t\t\t\t{translate(\"Font\")}\r\n\t\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\t\ttype=\"color\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-color\"\r\n\t\t\t\t\t\t\t\t\t\tvalue={textColor}\r\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => applyTextColor(event.target.value)}\r\n\t\t\t\t\t\t\t\t\t\taria-label={translate(\"Text color\")}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t\t\t<label className=\"toolbar-label color-label\">\r\n\t\t\t\t\t\t\t\t\t{translate(\"Background\")}\r\n\t\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\t\ttype=\"color\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-color\"\r\n\t\t\t\t\t\t\t\t\t\tvalue={backgroundColor}\r\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => applyBackgroundColor(event.target.value)}\r\n\t\t\t\t\t\t\t\t\t\taria-label={translate(\"Background color\")}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\tclassName=\"toolbar-btn toolbar-btn-small\"\r\n\t\t\t\t\t\t\t\t\tonClick={resetColors}\r\n\t\t\t\t\t\t\t\t\ttitle={translate(\"Reset colors\")}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t↺\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{codeBlock && (\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\tsetCodeTheme(theme);\r\n\t\t\t\t\t\t\t\t\tsetIsCodeModalOpen(true);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\ttitle={translate(\"Insert code block\")}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{translate(\"Code Block\")}\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showAlign && (\r\n\t\t\t\t\t\t\t<div className=\"toolbar-label\">\r\n\t\t\t\t\t\t\t\t{translate(\"Align\")}\r\n\t\t\t\t\t\t\t\t<div className=\"align-buttons\">\r\n\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-btn toolbar-btn-small\"\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => exec(\"justifyLeft\")}\r\n\t\t\t\t\t\t\t\t\t\ttitle={translate(\"Align Left\")}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t⟸\r\n\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-btn toolbar-btn-small\"\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => exec(\"justifyCenter\")}\r\n\t\t\t\t\t\t\t\t\t\ttitle={translate(\"Align Center\")}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t⇔\r\n\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-btn toolbar-btn-small\"\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => exec(\"justifyRight\")}\r\n\t\t\t\t\t\t\t\t\t\ttitle={translate(\"Align Right\")}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t⟹\r\n\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-btn toolbar-btn-small\"\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => exec(\"justifyFull\")}\r\n\t\t\t\t\t\t\t\t\t\ttitle={translate(\"Justify\")}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t⇿\r\n\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<span className=\"toolbar-separator\">|</span>\r\n\t\t\t\t</>\r\n\t\t\t\t)}\r\n\t\t\t\t{(showLink || showTooltip || showAnchor || showHr || showMedia || showClear) && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t<div className=\"toolbar-group\">\r\n\t\t\t\t\t\t{showLink && (\r\n\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertLink}>\r\n\t\t\t\t\t\t\t\t🔗\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showTooltip && (\r\n\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertTooltip} title={translate(\"Add tooltip/note to selected text\")}>\r\n\t\t\t\t\t\t\t\t💬\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showAnchor && (\r\n\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertAnchor} title={translate(\"Insert anchor\")}>\r\n\t\t\t\t\t\t\t\t⚓\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showHr && (\r\n\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertHr} title={translate(\"Insert horizontal line\")}>\r\n\t\t\t\t\t\t\t\t─\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showMedia && (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertImage} title={translate(\"Insert picture\")}>\r\n\t\t\t\t\t\t\t\t\t🖼️\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertVideo} title={translate(\"Insert video\")}>\r\n\t\t\t\t\t\t\t\t\t🎬\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showClear && (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={removeFormat}>\r\n\t\t\t\t\t\t\t\t\t{translate(\"Clear format\")}\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn danger\" onClick={clearAll}>\r\n\t\t\t\t\t\t\t\t\t{translate(\"Clear all\")}\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<span className=\"toolbar-separator\">|</span>\r\n\t\t\t\t</>\r\n\t\t\t\t)}\r\n\t\t\t\t{showPlainPaste && (\r\n\t\t\t\t\t<div className=\"toolbar-group toggle\">\r\n\t\t\t\t\t\t<label className=\"toggle-row\">\r\n\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\ttype=\"checkbox\"\r\n\t\t\t\t\t\t\t\tchecked={plainPaste}\r\n\t\t\t\t\t\t\t\tonChange={(event) => setPlainPaste(event.target.checked)}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t{translate(\"Paste as plain text\")}\r\n\t\t\t\t\t\t</label>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\t\t\t\t{showFullscreen && (\r\n\t\t\t\t\t<div className=\"toolbar-group\">\r\n\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\tonClick={toggleFullscreen}\r\n\t\t\t\t\t\t\ttitle={isFullscreen ? translate(\"Exit fullscreen\") : translate(\"Enter fullscreen\")}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{isFullscreen ? \"⤓\" : \"⤢\"}\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\t\t\t</div>\r\n\r\n\t\t\t<div className=\"editor-area\">\r\n\t\t\t\t<div\r\n\t\t\t\t\tref={editorRef}\r\n\t\t\t\t\tclassName=\"editor-surface\"\r\n\t\t\t\t\tcontentEditable\r\n\t\t\t\t\tonInput={onInput}\r\n\t\t\t\t\tonPaste={onPaste}\r\n\t\t\t\tonClick={onEditorClick}\r\n\t\t\t\tonKeyUp={updateToolbarState}\r\n\t\t\t\tonMouseUp={updateToolbarState}\r\n\t\t\t\tsuppressContentEditableWarning\r\n\t\t\t\tspellCheck\r\n\t\t\t/>\r\n\t\t</div>\r\n\r\n\t\t\t{(showStats || showCopyHtml) && (\r\n\t\t\t\t<footer className=\"editor-footer\">\r\n\t\t\t\t\t{showStats && (\r\n\t\t\t\t\t\t<div className=\"footer-stats\">\r\n\t\t\t\t\t\t\t<span>{stats.words} {translate(\"words\")}</span>\r\n\t\t\t\t\t\t\t<span>{stats.chars} {translate(\"characters\")}</span>\r\n\t\t\t\t\t\t\t<span>{selectionText ? `${selectionText.length} ${translate(\"selected\")}` : translate(\"No selection\")}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{showCopyHtml && (\r\n\t\t\t\t\t\t<div className=\"footer-actions\">\r\n\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={exportHtml}>\r\n\t\t\t\t\t\t\t\t{translate(\"Copy HTML\")}\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</footer>\r\n\t\t\t)}\r\n\r\n\t\t\t{showLiveHtml && (\r\n\t\t\t\t<aside className=\"editor-preview\">\r\n\t\t\t\t\t<pre className=\"preview-code\">{html}</pre>\r\n\t\t\t\t\t<div className=\"preview-header\">{translate(\"Live HTML\")}</div>\r\n\t\t\t\t</aside>\r\n\t\t\t)}\r\n\r\n\t\t\t{codeBlock && isCodeModalOpen && (\r\n\t\t\t\t<div className=\"modal-backdrop\" role=\"dialog\" aria-modal=\"true\">\r\n\t\t\t\t\t<div className=\"modal\">\r\n\t\t\t\t\t\t<div className=\"modal-header\">\r\n\t\t\t\t\t\t\t{translate(\"Insert Code Block\")}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<CodeBlock\r\n\t\t\t\t\t\t\tvalue={codeValue}\r\n\t\t\t\t\t\t\tlanguage={codeLanguage}\r\n\t\t\t\t\t\t\ttheme={codeTheme}\r\n\t\t\t\t\t\t\tlanguages={codeBlockLanguages}\r\n\t\t\t\t\t\t\tonChange={setCodeValue}\r\n\t\t\t\t\t\t\tonLanguageChange={setCodeLanguage}\r\n\t\t\t\t\t\t\tonThemeChange={setCodeTheme}\r\n\t\t\t\t\t\t\tplaceholder={translate(\"Paste your code here\")}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t<div className=\"modal-actions\">\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\t\tonClick={() => setIsCodeModalOpen(false)}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{translate(\"Cancel\")}\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\t\tonClick={insertCodeBlock}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{translate(\"Insert\")}\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t)}\r\n\t\t</section>\r\n\t);\r\n}\r\n","// src/index.js - Library entry point\r\nimport \"./index.css\";\r\nimport Editor from \"./components/Editor.jsx\";\r\nimport CodeBlock from \"./components/CodeBlock.jsx\";\r\n\r\nexport default Editor;\r\nexport { CodeBlock };\r\n"],"names":["DEFAULT_LANGUAGES","value","label","DEFAULT_THEMES","CodeBlock","language","theme","languages","themes","onChange","onLanguageChange","onThemeChange","placeholder","normalizedLanguages","useMemo","Array","isArray","length","map","item","currentLanguage","find","React","createElement","className","event","target","key","spellCheck","DEFAULT_HTML","COMMANDS","cmd","icon","escapeHtml","replace","exec","editorRef","setHtml","updateToolbarState","current","focus","document","execCommand","nextHtml","innerHTML","html","text","innerText","clearAll","exportHtml","payload","navigator","clipboard","writeText","alert","applyHeading","next","toUpperCase","applyFontSize","selection","window","getSelection","rangeCount","range","getRangeAt","collapsed","fontElements","querySelectorAll","forEach","el","removeAttribute","style","fontSize","applyCustomFontSize","isNaN","applyTextColor","applyBackgroundColor","resetColors","setTextColor","setBackgroundColor","defaultText","defaultBg","insertCodeBlock","codeValue","codeLanguage","codeTheme","setIsCodeModalOpen","setCodeValue","safeCode","languageClass","htmlBlock","insertLink","url","prompt","insertTooltip","selectedText","toString","tooltip","span","title","surroundContents","appendChild","extractContents","insertNode","removeAllRanges","insertAnchor","id","sanitizedId","anchorHtml","insertHr","insertImage","alt","imageHtml","insertVideo","youtubeMatch","match","videoId","embedHtml","videoHtml","onInput","onPaste","plainPaste","preventDefault","clipboardData","getData","createUpdateToolbarState","setSelectionText","setActiveToolMap","anchorNode","isInsideEditor","contains","nextActive","queryCommandState","Editor","tools","showDemoText","showHeading","showFontSize","showAlign","showLink","showTooltip","showAnchor","showHr","showMedia","showUndoRedo","showClear","showPlainPaste","showColor","showFullscreen","codeBlock","codeBlockLanguages","showLiveHtml","showStats","showCopyHtml","initialHtml","t","translate","translations","sample","Undo","Redo","Format","Paragraph","Blockquote","Size","Custom","Font","Background","Align","Justify","words","characters","selected","Cancel","Insert","useRef","initialAppliedRef","useState","setPlainPaste","selectionText","heading","setHeading","setFontSize","customSize","setCustomSize","textColor","backgroundColor","activeToolMap","isFullscreen","setIsFullscreen","isCodeModalOpen","setCodeLanguage","setCodeTheme","useEffect","stats","trim","split","chars","applyHeadingFormat","applyFontSizeFormat","applyCustomFontSizeFormat","applyTextColorFormat","applyBackgroundColorFormat","resetColorsFormat","insertCodeBlockContent","insertLinkContent","insertTooltipContent","insertAnchorContent","insertHrContent","insertImageContent","insertVideoContent","toggleFullscreen","removeFormat","clearAllContent","handleInput","links","link","getAttribute","setAttribute","handlePaste","onEditorClick","tagName","ctrlKey","shiftKey","metaKey","href","open","useCallback","addEventListener","removeEventListener","exportHtmlContent","activeCommands","filter","includes","Fragment","type","onClick","onMouseDown","min","max","width","checked","ref","contentEditable","onKeyUp","onMouseUp","suppressContentEditableWarning","role"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -412,6 +412,8 @@ function Editor({
412
412
  };
413
413
  }
414
414
  const editorRef = useRef(null);
415
+ // when true we already applied `initialHtml` / demo content once — don't overwrite user edits
416
+ const initialAppliedRef = useRef(false);
415
417
  const [html, setHtml] = useState("");
416
418
  const [plainPaste, setPlainPaste] = useState(true);
417
419
  const [selectionText, setSelectionText] = useState("");
@@ -527,10 +529,14 @@ function Editor({
527
529
  return () => document.removeEventListener("selectionchange", updateToolbarState);
528
530
  }, [updateToolbarState]);
529
531
 
530
- // Initialize editor from `initialHtml` if provided; otherwise (when showDemoText)
531
- // populate with demo content. Run after `updateToolbarState` is defined.
532
+ // Initialize editor from `initialHtml` (applied once) or fall back to demo text.
533
+ // Guard against re-applying `initialHtml` on every render that was causing user edits to be overwritten.
532
534
  useEffect(() => {
533
- if (initialHtml && editorRef.current) {
535
+ if (!editorRef.current || initialAppliedRef.current) return;
536
+
537
+ // apply `initialHtml` only once (initialization). If parent later wants to *reset*
538
+ // the editor, we can add an explicit API — but default behaviour is "initial only".
539
+ if (initialHtml) {
534
540
  editorRef.current.innerHTML = initialHtml;
535
541
  setHtml(initialHtml);
536
542
  const links = editorRef.current?.querySelectorAll('a') || [];
@@ -543,9 +549,10 @@ function Editor({
543
549
  try {
544
550
  onChange(initialHtml);
545
551
  } catch {/* noop */}
552
+ initialAppliedRef.current = true;
546
553
  return;
547
554
  }
548
- if (showDemoText && editorRef.current) {
555
+ if (showDemoText) {
549
556
  editorRef.current.innerHTML = DEFAULT_HTML;
550
557
  setHtml(editorRef.current.innerHTML);
551
558
  const links = editorRef.current?.querySelectorAll('a') || [];
@@ -555,6 +562,7 @@ function Editor({
555
562
  }
556
563
  });
557
564
  updateToolbarState();
565
+ initialAppliedRef.current = true;
558
566
  }
559
567
  }, [initialHtml, showDemoText, onChange, updateToolbarState]);
560
568
  const exportHtml$1 = async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/components/CodeBlock.jsx","../src/components/defaultContent.js","../src/components/editorCommands.js","../src/components/editorUtils.js","../src/components/formattingFunctions.js","../src/components/insertFunctions.js","../src/components/eventHandlers.js","../src/components/Editor.jsx","../src/index.js"],"sourcesContent":["import React, { useMemo } from \"react\";\r\n\r\nconst DEFAULT_LANGUAGES = [\r\n { value: \"plain\", label: \"Plain\" },\r\n { value: \"js\", label: \"JavaScript\" },\r\n { value: \"ts\", label: \"TypeScript\" },\r\n { value: \"java\", label: \"Java\" },\r\n { value: \"css\", label: \"CSS\" },\r\n { value: \"html\", label: \"HTML\" },\r\n { value: \"json\", label: \"JSON\" },\r\n];\r\n\r\nconst DEFAULT_THEMES = [\r\n { value: \"dark\", label: \"Dark\" },\r\n { value: \"light\", label: \"Light\" },\r\n];\r\n\r\nexport default function CodeBlock({\r\n value = \"\",\r\n language = \"plain\",\r\n theme = \"dark\",\r\n languages = DEFAULT_LANGUAGES,\r\n themes = DEFAULT_THEMES,\r\n onChange = () => {},\r\n onLanguageChange = () => {},\r\n onThemeChange = () => {},\r\n placeholder = \"Paste code here\",\r\n}) {\r\n const normalizedLanguages = useMemo(() => {\r\n if (!Array.isArray(languages) || languages.length === 0) return DEFAULT_LANGUAGES;\r\n if (typeof languages[0] === \"string\") {\r\n return languages.map((item) => ({ value: item, label: item }));\r\n }\r\n return languages;\r\n }, [languages]);\r\n\r\n const currentLanguage = useMemo(\r\n () => normalizedLanguages.find((item) => item.value === language) || normalizedLanguages[0],\r\n [language, normalizedLanguages]\r\n );\r\n\r\n return (\r\n <section className={`code-block code-block-${theme}`} data-language={currentLanguage?.value}>\r\n <header className=\"code-block-toolbar\">\r\n <label className=\"code-block-label\">\r\n Language\r\n <select\r\n className=\"code-block-select\"\r\n value={currentLanguage?.value}\r\n onChange={(event) => onLanguageChange(event.target.value)}\r\n >\r\n {normalizedLanguages.map((item) => (\r\n <option key={item.value} value={item.value}>\r\n {item.label}\r\n </option>\r\n ))}\r\n </select>\r\n </label>\r\n <label className=\"code-block-label\">\r\n Theme\r\n <select\r\n className=\"code-block-select\"\r\n value={theme}\r\n onChange={(event) => onThemeChange(event.target.value)}\r\n >\r\n {themes.map((item) => (\r\n <option key={item.value} value={item.value}>\r\n {item.label}\r\n </option>\r\n ))}\r\n </select>\r\n </label>\r\n </header>\r\n <textarea\r\n className=\"code-block-area\"\r\n value={value}\r\n onChange={(event) => onChange(event.target.value)}\r\n placeholder={placeholder}\r\n spellCheck={false}\r\n />\r\n </section>\r\n );\r\n}\r\n","export const DEFAULT_HTML = `\r\n\t<h1>Welcome</h1>\r\n\t<p>This is a lightweight WYSIWYG editor built without external libraries.</p>\r\n\t<ul>\r\n\t\t<li>Edit text directly</li>\r\n\t\t<li>Use the toolbar for formatting</li>\r\n\t\t<li>Copy, paste, and export HTML</li>\r\n\t</ul>\r\n`;\r\n","export const COMMANDS = [\r\n\t{ cmd: \"bold\", label: \"Bold\", icon: \"B\" },\r\n\t{ cmd: \"italic\", label: \"Italic\", icon: \"I\" },\r\n\t{ cmd: \"underline\", label: \"Underline\", icon: \"U\" },\r\n\t{ cmd: \"strikeThrough\", label: \"Strike\", icon: \"S\" },\r\n\t{ cmd: \"insertUnorderedList\", label: \"Bullets\", icon: \"•\" },\r\n\t{ cmd: \"insertOrderedList\", label: \"Numbered\", icon: \"1.\" },\r\n\t{ cmd: \"justifyLeft\", label: \"Left\", icon: \"⟸\" },\r\n\t{ cmd: \"justifyCenter\", label: \"Center\", icon: \"⇔\" },\r\n\t{ cmd: \"justifyRight\", label: \"Right\", icon: \"⟹\" },\r\n];\r\n","export const escapeHtml = (value) =>\r\n\tvalue\r\n\t\t.replace(/&/g, \"&amp;\")\r\n\t\t.replace(/</g, \"&lt;\")\r\n\t\t.replace(/>/g, \"&gt;\")\r\n\t\t.replace(/\\\"/g, \"&quot;\")\r\n\t\t.replace(/'/g, \"&#039;\");\r\n\r\nexport const exec = (editorRef, cmd, value = null, setHtml, onChange, updateToolbarState) => {\r\n\teditorRef.current?.focus();\r\n\tdocument.execCommand(cmd, false, value);\r\n\tconst nextHtml = editorRef.current?.innerHTML || \"\";\r\n\tsetHtml(nextHtml);\r\n\tonChange({ html: nextHtml, text: editorRef.current?.innerText || \"\" });\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const removeFormat = (exec) => exec(\"removeFormat\");\r\n\r\nexport const clearAll = (editorRef, setHtml, onChange, updateToolbarState) => {\r\n\tif (!editorRef.current) return;\r\n\teditorRef.current.innerHTML = \"<p></p>\";\r\n\tsetHtml(editorRef.current.innerHTML);\r\n\tonChange({ html: editorRef.current.innerHTML, text: editorRef.current.innerText || \"\" });\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const exportHtml = async (editorRef) => {\r\n\tconst payload = editorRef.current?.innerHTML || \"\";\r\n\tawait navigator.clipboard.writeText(payload);\r\n\talert(\"HTML copied to clipboard.\");\r\n};\r\n","export const applyHeading = (next, exec) => {\r\n\tif (next === \"p\") {\r\n\t\texec(\"formatBlock\", \"P\");\r\n\t\treturn;\r\n\t}\r\n\tif (next === \"pre\") {\r\n\t\texec(\"formatBlock\", \"PRE\");\r\n\t\treturn;\r\n\t}\r\n\texec(\"formatBlock\", next.toUpperCase());\r\n};\r\n\r\nexport const applyFontSize = (next, exec, editorRef, setHtml, updateToolbarState) => {\r\n\tconst selection = window.getSelection();\r\n\tif (!selection || selection.rangeCount === 0) return;\r\n\t\r\n\tconst range = selection.getRangeAt(0);\r\n\tif (range.collapsed) return; // No selection\r\n\t\r\n\texec(\"fontSize\", \"7\");\r\n\tconst fontElements = editorRef.current?.querySelectorAll(\"font[size='7']\") || [];\r\n\tfontElements.forEach((el) => {\r\n\t\tel.removeAttribute(\"size\");\r\n\t\tel.style.fontSize = `${next}px`;\r\n\t});\r\n\tsetHtml(editorRef.current?.innerHTML || \"\");\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const applyCustomFontSize = (value, exec, editorRef, setHtml, updateToolbarState) => {\r\n\tif (!value || isNaN(value)) return;\r\n\t\r\n\tconst selection = window.getSelection();\r\n\tif (!selection || selection.rangeCount === 0) return;\r\n\t\r\n\tconst range = selection.getRangeAt(0);\r\n\tif (range.collapsed) return; // No selection\r\n\t\r\n\texec(\"fontSize\", \"7\");\r\n\tconst fontElements = editorRef.current?.querySelectorAll(\"font[size='7']\") || [];\r\n\tfontElements.forEach((el) => {\r\n\t\tel.removeAttribute(\"size\");\r\n\t\tel.style.fontSize = `${value}px`;\r\n\t});\r\n\tsetHtml(editorRef.current?.innerHTML || \"\");\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const applyTextColor = (next, exec) => {\r\n\texec(\"foreColor\", next);\r\n};\r\n\r\nexport const applyBackgroundColor = (next, exec) => {\r\n\texec(\"hiliteColor\", next);\r\n};\r\n\r\nexport const resetColors = (theme, setTextColor, setBackgroundColor, exec) => {\r\n\tconst defaultText = theme === \"dark\" ? \"#e5e7eb\" : \"#1f2937\";\r\n\tconst defaultBg = \"#ffff00\";\r\n\tsetTextColor(defaultText);\r\n\tsetBackgroundColor(defaultBg);\r\n\texec(\"removeFormat\");\r\n};\r\n","import { escapeHtml } from \"./editorUtils.js\";\r\n\r\nexport const insertCodeBlock = (codeValue, codeLanguage, codeTheme, exec, setIsCodeModalOpen, setCodeValue) => {\r\n\tconst safeCode = escapeHtml(codeValue || \"\");\r\n\tconst languageClass = codeLanguage ? `language-${codeLanguage}` : \"language-plain\";\r\n\tconst htmlBlock = `<pre class=\"code-block-shell\" data-theme=\"${codeTheme}\"><code class=\"${languageClass}\">${safeCode}</code></pre>`;\r\n\texec(\"insertHTML\", htmlBlock);\r\n\tsetIsCodeModalOpen(false);\r\n\tsetCodeValue(\"\");\r\n};\r\n\r\nexport const insertLink = (exec) => {\r\n\tconst url = window.prompt(\"Enter URL\", \"https://\");\r\n\tif (!url) return;\r\n\texec(\"createLink\", url);\r\n};\r\n\r\nexport const insertTooltip = (editorRef, setHtml, onChange, updateToolbarState) => {\r\n\tconst selection = window.getSelection();\r\n\tif (!selection || selection.rangeCount === 0) return;\r\n\tconst selectedText = selection.toString();\r\n\tif (!selectedText) {\r\n\t\talert(\"Please select some text first\");\r\n\t\treturn;\r\n\t}\r\n\tconst tooltip = window.prompt(\"Enter tooltip/note text\", \"\");\r\n\tif (!tooltip) return;\r\n\t\r\n\tconst range = selection.getRangeAt(0);\r\n\tconst span = document.createElement(\"span\");\r\n\tspan.className = \"has-tooltip\";\r\n\tspan.title = tooltip;\r\n\t\r\n\ttry {\r\n\t\trange.surroundContents(span);\r\n\t} catch {\r\n\t\t// If surroundContents fails, use alternative method\r\n\t\tspan.appendChild(range.extractContents());\r\n\t\trange.insertNode(span);\r\n\t}\r\n\t\r\n\tselection.removeAllRanges();\r\n\tconst nextHtml = editorRef.current?.innerHTML || \"\";\r\n\tsetHtml(nextHtml);\r\n\tonChange({ html: nextHtml, text: editorRef.current?.innerText || \"\" });\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const insertAnchor = (exec) => {\r\n\tconst id = window.prompt(\"Enter anchor ID\", \"\");\r\n\tif (!id) return;\r\n\tconst sanitizedId = id.replace(/[^a-zA-Z0-9-_]/g, \"\");\r\n\tconst anchorHtml = `<span class=\"anchor-marker\" id=\"${sanitizedId}\" data-anchor=\"${sanitizedId}\">⚓${sanitizedId}</span>`;\r\n\texec(\"insertHTML\", anchorHtml);\r\n};\r\n\r\nexport const insertHr = (exec) => {\r\n\texec(\"insertHTML\", \"<hr>\");\r\n};\r\n\r\nexport const insertImage = (exec) => {\r\n\tconst url = window.prompt(\"Enter image URL\", \"https://\");\r\n\tif (!url) return;\r\n\tconst alt = window.prompt(\"Enter image description (alt text)\", \"\");\r\n\tconst imageHtml = `<img src=\"${url}\" alt=\"${alt || ''}\" style=\"max-width: 100%; height: auto;\" />`;\r\n\texec(\"insertHTML\", imageHtml);\r\n};\r\n\r\nexport const insertVideo = (exec) => {\r\n\tconst url = window.prompt(\"Enter video URL (YouTube, MP4, etc.)\", \"https://\");\r\n\tif (!url) return;\r\n\t\r\n\t// Check if it's a YouTube URL\r\n\tconst youtubeMatch = url.match(/(?:youtube\\.com\\/watch\\?v=|youtu\\.be\\/)([^&\\s]+)/);\r\n\tif (youtubeMatch) {\r\n\t\tconst videoId = youtubeMatch[1];\r\n\t\tconst embedHtml = `<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/${videoId}\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen style=\"max-width: 100%;\"></iframe>`;\r\n\t\texec(\"insertHTML\", embedHtml);\r\n\t} else {\r\n\t\t// Assume it's a direct video URL\r\n\t\tconst videoHtml = `<video controls style=\"max-width: 100%; height: auto;\"><source src=\"${url}\" type=\"video/mp4\">Your browser does not support the video tag.</video>`;\r\n\t\texec(\"insertHTML\", videoHtml);\r\n\t}\r\n};\r\n","import { COMMANDS } from \"./editorCommands.js\";\r\n\r\nexport const onInput = (editorRef, setHtml, onChange, updateToolbarState) => {\r\n\tconst nextHtml = editorRef.current?.innerHTML || \"\";\r\n\tsetHtml(nextHtml);\r\n\tonChange({ html: nextHtml, text: editorRef.current?.innerText || \"\" });\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const onPaste = (event, plainPaste) => {\r\n\tif (!plainPaste) return;\r\n\tevent.preventDefault();\r\n\tconst text = event.clipboardData.getData(\"text/plain\");\r\n\tdocument.execCommand(\"insertText\", false, text);\r\n};\r\n\r\nexport const createUpdateToolbarState = (editorRef, setSelectionText, setActiveToolMap) => {\r\n\treturn () => {\r\n\t\tconst selection = document.getSelection();\r\n\t\tif (!selection || selection.rangeCount === 0 || !editorRef.current) return;\r\n\t\tconst anchorNode = selection.anchorNode;\r\n\t\tconst isInsideEditor = anchorNode && editorRef.current.contains(anchorNode);\r\n\t\tif (!isInsideEditor) {\r\n\t\t\tsetSelectionText(\"\");\r\n\t\t\tsetActiveToolMap({});\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsetSelectionText(selection.toString());\r\n\t\tconst nextActive = {};\r\n\t\tCOMMANDS.forEach((item) => {\r\n\t\t\ttry {\r\n\t\t\t\tnextActive[item.cmd] = document.queryCommandState(item.cmd);\r\n\t\t\t} catch {\r\n\t\t\t\tnextActive[item.cmd] = false;\r\n\t\t\t}\r\n\t\t});\r\n\t\tsetActiveToolMap(nextActive);\r\n\t};\r\n};\r\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\r\nimport CodeBlock from \"./CodeBlock.jsx\";\r\nimport { DEFAULT_HTML } from \"./defaultContent.js\";\r\nimport { COMMANDS } from \"./editorCommands.js\";\r\nimport { escapeHtml, exec as execCommand, clearAll as clearAllContent, exportHtml as exportHtmlContent } from \"./editorUtils.js\";\r\nimport { applyHeading as applyHeadingFormat, applyFontSize as applyFontSizeFormat, applyCustomFontSize as applyCustomFontSizeFormat, applyTextColor as applyTextColorFormat, applyBackgroundColor as applyBackgroundColorFormat, resetColors as resetColorsFormat } from \"./formattingFunctions.js\";\r\nimport { insertCodeBlock as insertCodeBlockContent, insertLink as insertLinkContent, insertTooltip as insertTooltipContent, insertAnchor as insertAnchorContent, insertHr as insertHrContent, insertImage as insertImageContent, insertVideo as insertVideoContent } from \"./insertFunctions.js\";\r\nimport { onInput as handleInput, onPaste as handlePaste, createUpdateToolbarState } from \"./eventHandlers.js\";\r\n\r\nexport default function Editor({\r\n\ttheme = \"dark\",\r\n\ttools = COMMANDS.map((item) => item.cmd),\r\n\tshowDemoText = false,\r\n\tshowHeading = true,\r\n\tshowFontSize = true,\r\n\tshowAlign = true,\r\n\tshowLink = true,\r\n\tshowTooltip = true,\r\n\tshowAnchor = true,\r\n\tshowHr = true,\r\n\tshowMedia = true,\r\n\tshowUndoRedo = true,\r\n\tshowClear = true,\r\n\tshowPlainPaste = true,\r\n\tshowColor = true,\r\n\tshowFullscreen = true,\r\n\tcodeBlock = false,\r\n\tcodeBlockLanguages,\r\n\tshowLiveHtml = true,\r\n\tshowStats = true,\r\n\tshowCopyHtml = true,\r\n\tonChange = () => { },\r\n\tinitialHtml = \"\",\r\n\tt\r\n}) {\r\n\tlet translate\r\n\tif (t) {\r\n\t\ttranslate = t\r\n\t} else {\r\n\t\ttranslate = (key) => {\r\n\t\t\tconst translations = {\r\n\t\t\t\tsample: \"Sample Text\",\r\n\t\t\t\tUndo: \"Undo\",\r\n\t\t\t\tRedo: \"Redo\",\r\n\t\t\t\tFormat: \"Format\",\r\n\t\t\t\tParagraph: \"Paragraph\",\r\n\t\t\t\t\"Heading 1\": \"Heading 1\",\r\n\t\t\t\t\"Heading 2\": \"Heading 2\",\r\n\t\t\t\t\"Heading 3\": \"Heading 3\",\r\n\t\t\t\t\"Heading 4\": \"Heading 4\",\r\n\t\t\t\tBlockquote: \"Blockquote\",\r\n\t\t\t\t\"Code Block\": \"Code Block\",\r\n\t\t\t\tSize: \"Size\",\r\n\t\t\t\tCustom: \"Custom\",\r\n\t\t\t\tFont: \"Font\",\r\n\t\t\t\t\"Text color\": \"Text color\",\r\n\t\t\t\tBackground: \"Background\",\r\n\t\t\t\t\"Background color\": \"Background color\",\r\n\t\t\t\t\"Reset colors\": \"Reset colors\",\r\n\t\t\t\t\"Insert code block\": \"Insert code block\",\r\n\t\t\t\tAlign: \"Align\",\r\n\t\t\t\t\"Align Left\": \"Align Left\",\r\n\t\t\t\t\"Align Center\": \"Align Center\",\r\n\t\t\t\t\"Align Right\": \"Align Right\",\r\n\t\t\t\tJustify: \"Justify\",\r\n\t\t\t\t\"Add tooltip/note to selected text\": \"Add tooltip/note to selected text\",\r\n\t\t\t\t\"Insert anchor\": \"Insert anchor\",\r\n\t\t\t\t\"Insert horizontal line\": \"Insert horizontal line\",\r\n\t\t\t\t\"Insert picture\": \"Insert picture\",\r\n\t\t\t\t\"Insert video\": \"Insert video\",\r\n\t\t\t\t\"Clear format\": \"Clear format\",\r\n\t\t\t\t\"Clear all\": \"Clear all\",\r\n\t\t\t\t\"Paste as plain text\": \"Paste as plain text\",\r\n\t\t\t\t\"Exit fullscreen\": \"Exit fullscreen\",\r\n\t\t\t\t\"Enter fullscreen\": \"Enter fullscreen\",\r\n\t\t\t\twords: \"words\",\r\n\t\t\t\tcharacters: \"characters\",\r\n\t\t\t\tselected: \"selected\",\r\n\t\t\t\t\"No selection\": \"No selection\",\r\n\t\t\t\t\"Copy HTML\": \"Copy HTML\",\r\n\t\t\t\t\"Live HTML\": \"Live HTML\",\r\n\t\t\t\t\"Insert Code Block\": \"Insert Code Block\",\r\n\t\t\t\t\"Paste your code here\": \"Paste your code here\",\r\n\t\t\t\tCancel: \"Cancel\",\r\n\t\t\t\tInsert: \"Insert\",\r\n\t\t\t};\r\n\t\t\treturn translations[key] || key;\r\n\t\t}\r\n\t}\r\n\r\n\tconst editorRef = useRef(null);\r\n\tconst [html, setHtml] = useState(\"\");\r\n\tconst [plainPaste, setPlainPaste] = useState(true);\r\n\tconst [selectionText, setSelectionText] = useState(\"\");\r\n\tconst [heading, setHeading] = useState(\"p\");\r\n\tconst [fontSize, setFontSize] = useState(\"16\");\r\n\tconst [customSize, setCustomSize] = useState(\"\");\r\n\tconst [textColor, setTextColor] = useState(\"#1f2937\");\r\n\tconst [backgroundColor, setBackgroundColor] = useState(\"#ffff00\");\r\n\tconst [activeToolMap, setActiveToolMap] = useState({});\r\n\tconst [isFullscreen, setIsFullscreen] = useState(false);\r\n\tconst [isCodeModalOpen, setIsCodeModalOpen] = useState(false);\r\n\tconst [codeValue, setCodeValue] = useState(\"\");\r\n\tconst [codeLanguage, setCodeLanguage] = useState(\"js\");\r\n\tconst [codeTheme, setCodeTheme] = useState(theme);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetCodeTheme(theme);\r\n\t}, [theme]);\r\n\r\n\t// NOTE: initialization for `initialHtml` / demo text moved below `updateToolbarState` declaration to avoid referencing\r\n\t// `updateToolbarState` before it is defined. See the effect inserted later in the file.\r\n\r\n\tconst stats = useMemo(() => {\r\n\t\tconst text = editorRef.current?.innerText || \"\";\r\n\t\tconst words = text.trim() ? text.trim().split(/\\s+/).length : 0;\r\n\t\treturn {\r\n\t\t\twords,\r\n\t\t\tchars: text.length,\r\n\t\t};\r\n\t}, [html]);\r\n\r\n\tconst exec = (cmd, value = null) => {\r\n\t\texecCommand(editorRef, cmd, value, setHtml, onChange, updateToolbarState);\r\n\t};\r\n\r\n\tconst applyHeading = (next) => {\r\n\t\tsetHeading(next);\r\n\t\tapplyHeadingFormat(next, exec);\r\n\t};\r\n\r\n\tconst applyFontSize = (next) => {\r\n\t\tif (next === \"custom\") {\r\n\t\t\tsetFontSize(\"custom\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsetFontSize(next);\r\n\t\tapplyFontSizeFormat(next, exec, editorRef, setHtml, updateToolbarState);\r\n\t};\r\n\r\n\tconst applyCustomFontSize = (value) => {\r\n\t\tsetCustomSize(value);\r\n\t\tapplyCustomFontSizeFormat(value, exec, editorRef, setHtml, updateToolbarState);\r\n\t};\r\n\r\n\tconst applyTextColor = (next) => {\r\n\t\tsetTextColor(next);\r\n\t\tapplyTextColorFormat(next, exec);\r\n\t};\r\n\r\n\tconst applyBackgroundColor = (next) => {\r\n\t\tsetBackgroundColor(next);\r\n\t\tapplyBackgroundColorFormat(next, exec);\r\n\t};\r\n\r\n\tconst resetColors = () => {\r\n\t\tresetColorsFormat(theme, setTextColor, setBackgroundColor, exec);\r\n\t};\r\n\r\n\tconst insertCodeBlock = () => {\r\n\t\tinsertCodeBlockContent(codeValue, codeLanguage, codeTheme, exec, setIsCodeModalOpen, setCodeValue);\r\n\t};\r\n\r\n\tconst insertLink = () => {\r\n\t\tinsertLinkContent(exec);\r\n\t};\r\n\r\n\tconst insertTooltip = () => {\r\n\t\tinsertTooltipContent(editorRef, setHtml, onChange, updateToolbarState);\r\n\t};\r\n\r\n\tconst insertAnchor = () => {\r\n\t\tinsertAnchorContent(exec);\r\n\t};\r\n\r\n\tconst insertHr = () => {\r\n\t\tinsertHrContent(exec);\r\n\t};\r\n\r\n\tconst insertImage = () => {\r\n\t\tinsertImageContent(exec);\r\n\t};\r\n\r\n\tconst insertVideo = () => {\r\n\t\tinsertVideoContent(exec);\r\n\t};\r\n\r\n\tconst toggleFullscreen = () => {\r\n\t\tsetIsFullscreen(!isFullscreen);\r\n\t};\r\n\r\n\tconst removeFormat = () => exec(\"removeFormat\");\r\n\r\n\tconst clearAll = () => {\r\n\t\tclearAllContent(editorRef, setHtml, onChange, updateToolbarState);\r\n\t};\r\n\r\n\tconst onInput = () => {\r\n\t\thandleInput(editorRef, setHtml, onChange, updateToolbarState);\r\n\t\t// Add key hint to all links\r\n\t\tconst links = editorRef.current?.querySelectorAll('a') || [];\r\n\t\tlinks.forEach((link) => {\r\n\t\t\tif (!link.getAttribute('data-key-hint')) {\r\n\t\t\t\tlink.setAttribute('data-key-hint', 'Ctrl/Shift + Click to follow');\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tconst onPaste = (event) => {\r\n\t\thandlePaste(event, plainPaste);\r\n\t};\r\n\r\n\tconst onEditorClick = (event) => {\r\n\t\tif (event.target.tagName === 'A' && (event.ctrlKey || event.shiftKey || event.metaKey)) {\r\n\t\t\tconst href = event.target.getAttribute('href');\r\n\t\t\tif (href) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\twindow.open(href, '_blank');\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tconst updateToolbarState = useCallback(\r\n\t\tcreateUpdateToolbarState(editorRef, setSelectionText, setActiveToolMap),\r\n\t\t[]\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tdocument.addEventListener(\"selectionchange\", updateToolbarState);\r\n\t\treturn () => document.removeEventListener(\"selectionchange\", updateToolbarState);\r\n\t}, [updateToolbarState]);\r\n\r\n\t// Initialize editor from `initialHtml` if provided; otherwise (when showDemoText)\r\n\t// populate with demo content. Run after `updateToolbarState` is defined.\r\n\tuseEffect(() => {\r\n\t\tif (initialHtml && editorRef.current) {\r\n\t\t\teditorRef.current.innerHTML = initialHtml;\r\n\t\t\tsetHtml(initialHtml);\r\n\t\t\tconst links = editorRef.current?.querySelectorAll('a') || [];\r\n\t\t\tlinks.forEach((link) => {\r\n\t\t\t\tif (!link.getAttribute('data-key-hint')) {\r\n\t\t\t\t\tlink.setAttribute('data-key-hint', 'Ctrl/Shift + Click to follow');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tupdateToolbarState();\r\n\t\t\ttry { onChange(initialHtml); } catch { /* noop */ }\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (showDemoText && editorRef.current) {\r\n\t\t\teditorRef.current.innerHTML = DEFAULT_HTML;\r\n\t\t\tsetHtml(editorRef.current.innerHTML);\r\n\t\t\tconst links = editorRef.current?.querySelectorAll('a') || [];\r\n\t\t\tlinks.forEach((link) => {\r\n\t\t\t\tif (!link.getAttribute('data-key-hint')) {\r\n\t\t\t\t\tlink.setAttribute('data-key-hint', 'Ctrl/Shift + Click to follow');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tupdateToolbarState();\r\n\t\t}\r\n\t}, [initialHtml, showDemoText, onChange, updateToolbarState]);\r\n\r\n\tconst exportHtml = async () => {\r\n\t\tawait exportHtmlContent(editorRef);\r\n\t};\r\n\r\n\tconst activeCommands = useMemo(\r\n\t\t() => COMMANDS.filter((item) => tools.includes(item.cmd)),\r\n\t\t[tools]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<section\r\n\t\t\tclassName={`editor-root theme-${theme}${showLiveHtml ? \" show-preview\" : \" no-preview\"}${isFullscreen ? \" fullscreen\" : \"\"}`}\r\n\t\t\tdata-theme={theme}\r\n\t\t>\r\n\t\t\t<div className=\"toolbar\">\r\n\t\t\t\t{showUndoRedo && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t<div className=\"toolbar-group\">\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\t\tonClick={() => exec(\"undo\")}\r\n\t\t\t\t\t\t\t\ttitle={translate(\"Undo\")}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t↶\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\t\tonClick={() => exec(\"redo\")}\r\n\t\t\t\t\t\t\t\ttitle={translate(\"Redo\")}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t↷\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<span className=\"toolbar-separator\">|</span>\r\n\t\t\t\t\t</>\r\n\t\t\t\t)}\r\n\t\t\t\t{activeCommands.length > 0 && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t<div className=\"toolbar-group\">\r\n\t\t\t\t\t\t\t{activeCommands.map((item) => (\r\n\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\tkey={item.cmd}\r\n\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\tclassName={`toolbar-btn${activeToolMap[item.cmd] ? \" active\" : \"\"}`}\r\n\t\t\t\t\t\t\t\t\tonMouseDown={(event) => event.preventDefault()}\r\n\t\t\t\t\t\t\t\t\tonClick={() => exec(item.cmd)}\r\n\t\t\t\t\t\t\t\t\ttitle={translate(item.label)}\r\n\t\t\t\t\t\t\t\t\taria-pressed={activeToolMap[item.cmd] || false}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{item.icon}\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<span className=\"toolbar-separator\">|</span>\r\n\t\t\t\t\t</>\r\n\t\t\t\t)}\r\n\t\t\t\t{(showHeading || showFontSize || showColor) && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t<div className=\"toolbar-group\">\r\n\t\t\t\t\t\t{showHeading && (\r\n\t\t\t\t\t\t\t<label className=\"toolbar-label\">\r\n\t\t\t\t\t\t\t\t{translate(\"Format\")}\r\n\t\t\t\t\t\t\t\t<select\r\n\t\t\t\t\t\t\t\t\tvalue={heading}\r\n\t\t\t\t\t\t\t\t\tonChange={(event) => applyHeading(event.target.value)}\r\n\t\t\t\t\t\t\t\t\tclassName=\"toolbar-select\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<option value=\"p\">{translate(\"Paragraph\")}</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"h1\">{translate(\"Heading 1\")}</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"h2\">{translate(\"Heading 2\")}</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"h3\">{translate(\"Heading 3\")}</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"h4\">{translate(\"Heading 4\")}</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"blockquote\">{translate(\"Blockquote\")}</option>\r\n\t\t\t\t\t\t\t\t\t{codeBlock && <option value=\"pre\">{translate(\"Code Block\")}</option>}\r\n\t\t\t\t\t\t\t\t</select>\r\n\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showFontSize && (\r\n\t\t\t\t\t\t\t<label className=\"toolbar-label\">\r\n\t\t\t\t\t\t\t\t{translate(\"Size\")}\r\n\t\t\t\t\t\t\t\t<select\r\n\t\t\t\t\t\t\t\t\tvalue={fontSize}\r\n\t\t\t\t\t\t\t\t\tonChange={(event) => applyFontSize(event.target.value)}\r\n\t\t\t\t\t\t\t\t\tclassName=\"toolbar-select\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<option value=\"10\">10px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"12\">12px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"14\">14px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"16\">16px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"18\">18px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"20\">20px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"22\">22px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"24\">24px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"28\">28px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"32\">32px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"36\">36px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"48\">48px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"custom\">{translate(\"Custom\")}</option>\r\n\t\t\t\t\t\t\t\t</select>\r\n\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showFontSize && fontSize === \"custom\" && (\r\n\t\t\t\t\t\t\t<label className=\"toolbar-label\">\r\n\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\ttype=\"number\"\r\n\t\t\t\t\t\t\t\t\tmin=\"8\"\r\n\t\t\t\t\t\t\t\t\tmax=\"200\"\r\n\t\t\t\t\t\t\t\t\tvalue={customSize}\r\n\t\t\t\t\t\t\t\t\tonChange={(event) => applyCustomFontSize(event.target.value)}\r\n\t\t\t\t\t\t\t\t\tplaceholder={translate(\"Size\")}\r\n\t\t\t\t\t\t\t\t\tclassName=\"toolbar-input\"\r\n\t\t\t\t\t\t\t\t\tstyle={{ width: \"60px\" }}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\tpx\r\n\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showColor && (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t<label className=\"toolbar-label color-label\">\r\n\t\t\t\t\t\t\t\t\t{translate(\"Font\")}\r\n\t\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\t\ttype=\"color\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-color\"\r\n\t\t\t\t\t\t\t\t\t\tvalue={textColor}\r\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => applyTextColor(event.target.value)}\r\n\t\t\t\t\t\t\t\t\t\taria-label={translate(\"Text color\")}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t\t\t<label className=\"toolbar-label color-label\">\r\n\t\t\t\t\t\t\t\t\t{translate(\"Background\")}\r\n\t\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\t\ttype=\"color\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-color\"\r\n\t\t\t\t\t\t\t\t\t\tvalue={backgroundColor}\r\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => applyBackgroundColor(event.target.value)}\r\n\t\t\t\t\t\t\t\t\t\taria-label={translate(\"Background color\")}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\tclassName=\"toolbar-btn toolbar-btn-small\"\r\n\t\t\t\t\t\t\t\t\tonClick={resetColors}\r\n\t\t\t\t\t\t\t\t\ttitle={translate(\"Reset colors\")}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t↺\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{codeBlock && (\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\tsetCodeTheme(theme);\r\n\t\t\t\t\t\t\t\t\tsetIsCodeModalOpen(true);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\ttitle={translate(\"Insert code block\")}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{translate(\"Code Block\")}\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showAlign && (\r\n\t\t\t\t\t\t\t<div className=\"toolbar-label\">\r\n\t\t\t\t\t\t\t\t{translate(\"Align\")}\r\n\t\t\t\t\t\t\t\t<div className=\"align-buttons\">\r\n\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-btn toolbar-btn-small\"\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => exec(\"justifyLeft\")}\r\n\t\t\t\t\t\t\t\t\t\ttitle={translate(\"Align Left\")}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t⟸\r\n\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-btn toolbar-btn-small\"\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => exec(\"justifyCenter\")}\r\n\t\t\t\t\t\t\t\t\t\ttitle={translate(\"Align Center\")}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t⇔\r\n\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-btn toolbar-btn-small\"\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => exec(\"justifyRight\")}\r\n\t\t\t\t\t\t\t\t\t\ttitle={translate(\"Align Right\")}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t⟹\r\n\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-btn toolbar-btn-small\"\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => exec(\"justifyFull\")}\r\n\t\t\t\t\t\t\t\t\t\ttitle={translate(\"Justify\")}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t⇿\r\n\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<span className=\"toolbar-separator\">|</span>\r\n\t\t\t\t</>\r\n\t\t\t\t)}\r\n\t\t\t\t{(showLink || showTooltip || showAnchor || showHr || showMedia || showClear) && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t<div className=\"toolbar-group\">\r\n\t\t\t\t\t\t{showLink && (\r\n\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertLink}>\r\n\t\t\t\t\t\t\t\t🔗\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showTooltip && (\r\n\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertTooltip} title={translate(\"Add tooltip/note to selected text\")}>\r\n\t\t\t\t\t\t\t\t💬\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showAnchor && (\r\n\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertAnchor} title={translate(\"Insert anchor\")}>\r\n\t\t\t\t\t\t\t\t⚓\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showHr && (\r\n\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertHr} title={translate(\"Insert horizontal line\")}>\r\n\t\t\t\t\t\t\t\t─\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showMedia && (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertImage} title={translate(\"Insert picture\")}>\r\n\t\t\t\t\t\t\t\t\t🖼️\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertVideo} title={translate(\"Insert video\")}>\r\n\t\t\t\t\t\t\t\t\t🎬\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showClear && (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={removeFormat}>\r\n\t\t\t\t\t\t\t\t\t{translate(\"Clear format\")}\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn danger\" onClick={clearAll}>\r\n\t\t\t\t\t\t\t\t\t{translate(\"Clear all\")}\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<span className=\"toolbar-separator\">|</span>\r\n\t\t\t\t</>\r\n\t\t\t\t)}\r\n\t\t\t\t{showPlainPaste && (\r\n\t\t\t\t\t<div className=\"toolbar-group toggle\">\r\n\t\t\t\t\t\t<label className=\"toggle-row\">\r\n\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\ttype=\"checkbox\"\r\n\t\t\t\t\t\t\t\tchecked={plainPaste}\r\n\t\t\t\t\t\t\t\tonChange={(event) => setPlainPaste(event.target.checked)}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t{translate(\"Paste as plain text\")}\r\n\t\t\t\t\t\t</label>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\t\t\t\t{showFullscreen && (\r\n\t\t\t\t\t<div className=\"toolbar-group\">\r\n\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\tonClick={toggleFullscreen}\r\n\t\t\t\t\t\t\ttitle={isFullscreen ? translate(\"Exit fullscreen\") : translate(\"Enter fullscreen\")}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{isFullscreen ? \"⤓\" : \"⤢\"}\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\t\t\t</div>\r\n\r\n\t\t\t<div className=\"editor-area\">\r\n\t\t\t\t<div\r\n\t\t\t\t\tref={editorRef}\r\n\t\t\t\t\tclassName=\"editor-surface\"\r\n\t\t\t\t\tcontentEditable\r\n\t\t\t\t\tonInput={onInput}\r\n\t\t\t\t\tonPaste={onPaste}\r\n\t\t\t\tonClick={onEditorClick}\r\n\t\t\t\tonKeyUp={updateToolbarState}\r\n\t\t\t\tonMouseUp={updateToolbarState}\r\n\t\t\t\tsuppressContentEditableWarning\r\n\t\t\t\tspellCheck\r\n\t\t\t/>\r\n\t\t</div>\r\n\r\n\t\t\t{(showStats || showCopyHtml) && (\r\n\t\t\t\t<footer className=\"editor-footer\">\r\n\t\t\t\t\t{showStats && (\r\n\t\t\t\t\t\t<div className=\"footer-stats\">\r\n\t\t\t\t\t\t\t<span>{stats.words} {translate(\"words\")}</span>\r\n\t\t\t\t\t\t\t<span>{stats.chars} {translate(\"characters\")}</span>\r\n\t\t\t\t\t\t\t<span>{selectionText ? `${selectionText.length} ${translate(\"selected\")}` : translate(\"No selection\")}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{showCopyHtml && (\r\n\t\t\t\t\t\t<div className=\"footer-actions\">\r\n\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={exportHtml}>\r\n\t\t\t\t\t\t\t\t{translate(\"Copy HTML\")}\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</footer>\r\n\t\t\t)}\r\n\r\n\t\t\t{showLiveHtml && (\r\n\t\t\t\t<aside className=\"editor-preview\">\r\n\t\t\t\t\t<pre className=\"preview-code\">{html}</pre>\r\n\t\t\t\t\t<div className=\"preview-header\">{translate(\"Live HTML\")}</div>\r\n\t\t\t\t</aside>\r\n\t\t\t)}\r\n\r\n\t\t\t{codeBlock && isCodeModalOpen && (\r\n\t\t\t\t<div className=\"modal-backdrop\" role=\"dialog\" aria-modal=\"true\">\r\n\t\t\t\t\t<div className=\"modal\">\r\n\t\t\t\t\t\t<div className=\"modal-header\">\r\n\t\t\t\t\t\t\t{translate(\"Insert Code Block\")}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<CodeBlock\r\n\t\t\t\t\t\t\tvalue={codeValue}\r\n\t\t\t\t\t\t\tlanguage={codeLanguage}\r\n\t\t\t\t\t\t\ttheme={codeTheme}\r\n\t\t\t\t\t\t\tlanguages={codeBlockLanguages}\r\n\t\t\t\t\t\t\tonChange={setCodeValue}\r\n\t\t\t\t\t\t\tonLanguageChange={setCodeLanguage}\r\n\t\t\t\t\t\t\tonThemeChange={setCodeTheme}\r\n\t\t\t\t\t\t\tplaceholder={translate(\"Paste your code here\")}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t<div className=\"modal-actions\">\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\t\tonClick={() => setIsCodeModalOpen(false)}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{translate(\"Cancel\")}\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\t\tonClick={insertCodeBlock}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{translate(\"Insert\")}\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t)}\r\n\t\t</section>\r\n\t);\r\n}\r\n","// src/index.js - Library entry point\r\nimport \"./index.css\";\r\nimport Editor from \"./components/Editor.jsx\";\r\nimport CodeBlock from \"./components/CodeBlock.jsx\";\r\n\r\nexport default Editor;\r\nexport { CodeBlock };\r\n"],"names":["DEFAULT_LANGUAGES","value","label","DEFAULT_THEMES","CodeBlock","language","theme","languages","themes","onChange","onLanguageChange","onThemeChange","placeholder","normalizedLanguages","useMemo","Array","isArray","length","map","item","currentLanguage","find","React","createElement","className","event","target","key","spellCheck","DEFAULT_HTML","COMMANDS","cmd","icon","escapeHtml","replace","exec","editorRef","setHtml","updateToolbarState","current","focus","document","execCommand","nextHtml","innerHTML","html","text","innerText","clearAll","exportHtml","payload","navigator","clipboard","writeText","alert","applyHeading","next","toUpperCase","applyFontSize","selection","window","getSelection","rangeCount","range","getRangeAt","collapsed","fontElements","querySelectorAll","forEach","el","removeAttribute","style","fontSize","applyCustomFontSize","isNaN","applyTextColor","applyBackgroundColor","resetColors","setTextColor","setBackgroundColor","defaultText","defaultBg","insertCodeBlock","codeValue","codeLanguage","codeTheme","setIsCodeModalOpen","setCodeValue","safeCode","languageClass","htmlBlock","insertLink","url","prompt","insertTooltip","selectedText","toString","tooltip","span","title","surroundContents","appendChild","extractContents","insertNode","removeAllRanges","insertAnchor","id","sanitizedId","anchorHtml","insertHr","insertImage","alt","imageHtml","insertVideo","youtubeMatch","match","videoId","embedHtml","videoHtml","onInput","onPaste","plainPaste","preventDefault","clipboardData","getData","createUpdateToolbarState","setSelectionText","setActiveToolMap","anchorNode","isInsideEditor","contains","nextActive","queryCommandState","Editor","tools","showDemoText","showHeading","showFontSize","showAlign","showLink","showTooltip","showAnchor","showHr","showMedia","showUndoRedo","showClear","showPlainPaste","showColor","showFullscreen","codeBlock","codeBlockLanguages","showLiveHtml","showStats","showCopyHtml","initialHtml","t","translate","translations","sample","Undo","Redo","Format","Paragraph","Blockquote","Size","Custom","Font","Background","Align","Justify","words","characters","selected","Cancel","Insert","useRef","useState","setPlainPaste","selectionText","heading","setHeading","setFontSize","customSize","setCustomSize","textColor","backgroundColor","activeToolMap","isFullscreen","setIsFullscreen","isCodeModalOpen","setCodeLanguage","setCodeTheme","useEffect","stats","trim","split","chars","applyHeadingFormat","applyFontSizeFormat","applyCustomFontSizeFormat","applyTextColorFormat","applyBackgroundColorFormat","resetColorsFormat","insertCodeBlockContent","insertLinkContent","insertTooltipContent","insertAnchorContent","insertHrContent","insertImageContent","insertVideoContent","toggleFullscreen","removeFormat","clearAllContent","handleInput","links","link","getAttribute","setAttribute","handlePaste","onEditorClick","tagName","ctrlKey","shiftKey","metaKey","href","open","useCallback","addEventListener","removeEventListener","exportHtmlContent","activeCommands","filter","includes","Fragment","type","onClick","onMouseDown","min","max","width","checked","ref","contentEditable","onKeyUp","onMouseUp","suppressContentEditableWarning","role"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/components/CodeBlock.jsx","../src/components/defaultContent.js","../src/components/editorCommands.js","../src/components/editorUtils.js","../src/components/formattingFunctions.js","../src/components/insertFunctions.js","../src/components/eventHandlers.js","../src/components/Editor.jsx","../src/index.js"],"sourcesContent":["import React, { useMemo } from \"react\";\r\n\r\nconst DEFAULT_LANGUAGES = [\r\n { value: \"plain\", label: \"Plain\" },\r\n { value: \"js\", label: \"JavaScript\" },\r\n { value: \"ts\", label: \"TypeScript\" },\r\n { value: \"java\", label: \"Java\" },\r\n { value: \"css\", label: \"CSS\" },\r\n { value: \"html\", label: \"HTML\" },\r\n { value: \"json\", label: \"JSON\" },\r\n];\r\n\r\nconst DEFAULT_THEMES = [\r\n { value: \"dark\", label: \"Dark\" },\r\n { value: \"light\", label: \"Light\" },\r\n];\r\n\r\nexport default function CodeBlock({\r\n value = \"\",\r\n language = \"plain\",\r\n theme = \"dark\",\r\n languages = DEFAULT_LANGUAGES,\r\n themes = DEFAULT_THEMES,\r\n onChange = () => {},\r\n onLanguageChange = () => {},\r\n onThemeChange = () => {},\r\n placeholder = \"Paste code here\",\r\n}) {\r\n const normalizedLanguages = useMemo(() => {\r\n if (!Array.isArray(languages) || languages.length === 0) return DEFAULT_LANGUAGES;\r\n if (typeof languages[0] === \"string\") {\r\n return languages.map((item) => ({ value: item, label: item }));\r\n }\r\n return languages;\r\n }, [languages]);\r\n\r\n const currentLanguage = useMemo(\r\n () => normalizedLanguages.find((item) => item.value === language) || normalizedLanguages[0],\r\n [language, normalizedLanguages]\r\n );\r\n\r\n return (\r\n <section className={`code-block code-block-${theme}`} data-language={currentLanguage?.value}>\r\n <header className=\"code-block-toolbar\">\r\n <label className=\"code-block-label\">\r\n Language\r\n <select\r\n className=\"code-block-select\"\r\n value={currentLanguage?.value}\r\n onChange={(event) => onLanguageChange(event.target.value)}\r\n >\r\n {normalizedLanguages.map((item) => (\r\n <option key={item.value} value={item.value}>\r\n {item.label}\r\n </option>\r\n ))}\r\n </select>\r\n </label>\r\n <label className=\"code-block-label\">\r\n Theme\r\n <select\r\n className=\"code-block-select\"\r\n value={theme}\r\n onChange={(event) => onThemeChange(event.target.value)}\r\n >\r\n {themes.map((item) => (\r\n <option key={item.value} value={item.value}>\r\n {item.label}\r\n </option>\r\n ))}\r\n </select>\r\n </label>\r\n </header>\r\n <textarea\r\n className=\"code-block-area\"\r\n value={value}\r\n onChange={(event) => onChange(event.target.value)}\r\n placeholder={placeholder}\r\n spellCheck={false}\r\n />\r\n </section>\r\n );\r\n}\r\n","export const DEFAULT_HTML = `\r\n\t<h1>Welcome</h1>\r\n\t<p>This is a lightweight WYSIWYG editor built without external libraries.</p>\r\n\t<ul>\r\n\t\t<li>Edit text directly</li>\r\n\t\t<li>Use the toolbar for formatting</li>\r\n\t\t<li>Copy, paste, and export HTML</li>\r\n\t</ul>\r\n`;\r\n","export const COMMANDS = [\r\n\t{ cmd: \"bold\", label: \"Bold\", icon: \"B\" },\r\n\t{ cmd: \"italic\", label: \"Italic\", icon: \"I\" },\r\n\t{ cmd: \"underline\", label: \"Underline\", icon: \"U\" },\r\n\t{ cmd: \"strikeThrough\", label: \"Strike\", icon: \"S\" },\r\n\t{ cmd: \"insertUnorderedList\", label: \"Bullets\", icon: \"•\" },\r\n\t{ cmd: \"insertOrderedList\", label: \"Numbered\", icon: \"1.\" },\r\n\t{ cmd: \"justifyLeft\", label: \"Left\", icon: \"⟸\" },\r\n\t{ cmd: \"justifyCenter\", label: \"Center\", icon: \"⇔\" },\r\n\t{ cmd: \"justifyRight\", label: \"Right\", icon: \"⟹\" },\r\n];\r\n","export const escapeHtml = (value) =>\r\n\tvalue\r\n\t\t.replace(/&/g, \"&amp;\")\r\n\t\t.replace(/</g, \"&lt;\")\r\n\t\t.replace(/>/g, \"&gt;\")\r\n\t\t.replace(/\\\"/g, \"&quot;\")\r\n\t\t.replace(/'/g, \"&#039;\");\r\n\r\nexport const exec = (editorRef, cmd, value = null, setHtml, onChange, updateToolbarState) => {\r\n\teditorRef.current?.focus();\r\n\tdocument.execCommand(cmd, false, value);\r\n\tconst nextHtml = editorRef.current?.innerHTML || \"\";\r\n\tsetHtml(nextHtml);\r\n\tonChange({ html: nextHtml, text: editorRef.current?.innerText || \"\" });\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const removeFormat = (exec) => exec(\"removeFormat\");\r\n\r\nexport const clearAll = (editorRef, setHtml, onChange, updateToolbarState) => {\r\n\tif (!editorRef.current) return;\r\n\teditorRef.current.innerHTML = \"<p></p>\";\r\n\tsetHtml(editorRef.current.innerHTML);\r\n\tonChange({ html: editorRef.current.innerHTML, text: editorRef.current.innerText || \"\" });\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const exportHtml = async (editorRef) => {\r\n\tconst payload = editorRef.current?.innerHTML || \"\";\r\n\tawait navigator.clipboard.writeText(payload);\r\n\talert(\"HTML copied to clipboard.\");\r\n};\r\n","export const applyHeading = (next, exec) => {\r\n\tif (next === \"p\") {\r\n\t\texec(\"formatBlock\", \"P\");\r\n\t\treturn;\r\n\t}\r\n\tif (next === \"pre\") {\r\n\t\texec(\"formatBlock\", \"PRE\");\r\n\t\treturn;\r\n\t}\r\n\texec(\"formatBlock\", next.toUpperCase());\r\n};\r\n\r\nexport const applyFontSize = (next, exec, editorRef, setHtml, updateToolbarState) => {\r\n\tconst selection = window.getSelection();\r\n\tif (!selection || selection.rangeCount === 0) return;\r\n\t\r\n\tconst range = selection.getRangeAt(0);\r\n\tif (range.collapsed) return; // No selection\r\n\t\r\n\texec(\"fontSize\", \"7\");\r\n\tconst fontElements = editorRef.current?.querySelectorAll(\"font[size='7']\") || [];\r\n\tfontElements.forEach((el) => {\r\n\t\tel.removeAttribute(\"size\");\r\n\t\tel.style.fontSize = `${next}px`;\r\n\t});\r\n\tsetHtml(editorRef.current?.innerHTML || \"\");\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const applyCustomFontSize = (value, exec, editorRef, setHtml, updateToolbarState) => {\r\n\tif (!value || isNaN(value)) return;\r\n\t\r\n\tconst selection = window.getSelection();\r\n\tif (!selection || selection.rangeCount === 0) return;\r\n\t\r\n\tconst range = selection.getRangeAt(0);\r\n\tif (range.collapsed) return; // No selection\r\n\t\r\n\texec(\"fontSize\", \"7\");\r\n\tconst fontElements = editorRef.current?.querySelectorAll(\"font[size='7']\") || [];\r\n\tfontElements.forEach((el) => {\r\n\t\tel.removeAttribute(\"size\");\r\n\t\tel.style.fontSize = `${value}px`;\r\n\t});\r\n\tsetHtml(editorRef.current?.innerHTML || \"\");\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const applyTextColor = (next, exec) => {\r\n\texec(\"foreColor\", next);\r\n};\r\n\r\nexport const applyBackgroundColor = (next, exec) => {\r\n\texec(\"hiliteColor\", next);\r\n};\r\n\r\nexport const resetColors = (theme, setTextColor, setBackgroundColor, exec) => {\r\n\tconst defaultText = theme === \"dark\" ? \"#e5e7eb\" : \"#1f2937\";\r\n\tconst defaultBg = \"#ffff00\";\r\n\tsetTextColor(defaultText);\r\n\tsetBackgroundColor(defaultBg);\r\n\texec(\"removeFormat\");\r\n};\r\n","import { escapeHtml } from \"./editorUtils.js\";\r\n\r\nexport const insertCodeBlock = (codeValue, codeLanguage, codeTheme, exec, setIsCodeModalOpen, setCodeValue) => {\r\n\tconst safeCode = escapeHtml(codeValue || \"\");\r\n\tconst languageClass = codeLanguage ? `language-${codeLanguage}` : \"language-plain\";\r\n\tconst htmlBlock = `<pre class=\"code-block-shell\" data-theme=\"${codeTheme}\"><code class=\"${languageClass}\">${safeCode}</code></pre>`;\r\n\texec(\"insertHTML\", htmlBlock);\r\n\tsetIsCodeModalOpen(false);\r\n\tsetCodeValue(\"\");\r\n};\r\n\r\nexport const insertLink = (exec) => {\r\n\tconst url = window.prompt(\"Enter URL\", \"https://\");\r\n\tif (!url) return;\r\n\texec(\"createLink\", url);\r\n};\r\n\r\nexport const insertTooltip = (editorRef, setHtml, onChange, updateToolbarState) => {\r\n\tconst selection = window.getSelection();\r\n\tif (!selection || selection.rangeCount === 0) return;\r\n\tconst selectedText = selection.toString();\r\n\tif (!selectedText) {\r\n\t\talert(\"Please select some text first\");\r\n\t\treturn;\r\n\t}\r\n\tconst tooltip = window.prompt(\"Enter tooltip/note text\", \"\");\r\n\tif (!tooltip) return;\r\n\t\r\n\tconst range = selection.getRangeAt(0);\r\n\tconst span = document.createElement(\"span\");\r\n\tspan.className = \"has-tooltip\";\r\n\tspan.title = tooltip;\r\n\t\r\n\ttry {\r\n\t\trange.surroundContents(span);\r\n\t} catch {\r\n\t\t// If surroundContents fails, use alternative method\r\n\t\tspan.appendChild(range.extractContents());\r\n\t\trange.insertNode(span);\r\n\t}\r\n\t\r\n\tselection.removeAllRanges();\r\n\tconst nextHtml = editorRef.current?.innerHTML || \"\";\r\n\tsetHtml(nextHtml);\r\n\tonChange({ html: nextHtml, text: editorRef.current?.innerText || \"\" });\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const insertAnchor = (exec) => {\r\n\tconst id = window.prompt(\"Enter anchor ID\", \"\");\r\n\tif (!id) return;\r\n\tconst sanitizedId = id.replace(/[^a-zA-Z0-9-_]/g, \"\");\r\n\tconst anchorHtml = `<span class=\"anchor-marker\" id=\"${sanitizedId}\" data-anchor=\"${sanitizedId}\">⚓${sanitizedId}</span>`;\r\n\texec(\"insertHTML\", anchorHtml);\r\n};\r\n\r\nexport const insertHr = (exec) => {\r\n\texec(\"insertHTML\", \"<hr>\");\r\n};\r\n\r\nexport const insertImage = (exec) => {\r\n\tconst url = window.prompt(\"Enter image URL\", \"https://\");\r\n\tif (!url) return;\r\n\tconst alt = window.prompt(\"Enter image description (alt text)\", \"\");\r\n\tconst imageHtml = `<img src=\"${url}\" alt=\"${alt || ''}\" style=\"max-width: 100%; height: auto;\" />`;\r\n\texec(\"insertHTML\", imageHtml);\r\n};\r\n\r\nexport const insertVideo = (exec) => {\r\n\tconst url = window.prompt(\"Enter video URL (YouTube, MP4, etc.)\", \"https://\");\r\n\tif (!url) return;\r\n\t\r\n\t// Check if it's a YouTube URL\r\n\tconst youtubeMatch = url.match(/(?:youtube\\.com\\/watch\\?v=|youtu\\.be\\/)([^&\\s]+)/);\r\n\tif (youtubeMatch) {\r\n\t\tconst videoId = youtubeMatch[1];\r\n\t\tconst embedHtml = `<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/${videoId}\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen style=\"max-width: 100%;\"></iframe>`;\r\n\t\texec(\"insertHTML\", embedHtml);\r\n\t} else {\r\n\t\t// Assume it's a direct video URL\r\n\t\tconst videoHtml = `<video controls style=\"max-width: 100%; height: auto;\"><source src=\"${url}\" type=\"video/mp4\">Your browser does not support the video tag.</video>`;\r\n\t\texec(\"insertHTML\", videoHtml);\r\n\t}\r\n};\r\n","import { COMMANDS } from \"./editorCommands.js\";\r\n\r\nexport const onInput = (editorRef, setHtml, onChange, updateToolbarState) => {\r\n\tconst nextHtml = editorRef.current?.innerHTML || \"\";\r\n\tsetHtml(nextHtml);\r\n\tonChange({ html: nextHtml, text: editorRef.current?.innerText || \"\" });\r\n\tupdateToolbarState();\r\n};\r\n\r\nexport const onPaste = (event, plainPaste) => {\r\n\tif (!plainPaste) return;\r\n\tevent.preventDefault();\r\n\tconst text = event.clipboardData.getData(\"text/plain\");\r\n\tdocument.execCommand(\"insertText\", false, text);\r\n};\r\n\r\nexport const createUpdateToolbarState = (editorRef, setSelectionText, setActiveToolMap) => {\r\n\treturn () => {\r\n\t\tconst selection = document.getSelection();\r\n\t\tif (!selection || selection.rangeCount === 0 || !editorRef.current) return;\r\n\t\tconst anchorNode = selection.anchorNode;\r\n\t\tconst isInsideEditor = anchorNode && editorRef.current.contains(anchorNode);\r\n\t\tif (!isInsideEditor) {\r\n\t\t\tsetSelectionText(\"\");\r\n\t\t\tsetActiveToolMap({});\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsetSelectionText(selection.toString());\r\n\t\tconst nextActive = {};\r\n\t\tCOMMANDS.forEach((item) => {\r\n\t\t\ttry {\r\n\t\t\t\tnextActive[item.cmd] = document.queryCommandState(item.cmd);\r\n\t\t\t} catch {\r\n\t\t\t\tnextActive[item.cmd] = false;\r\n\t\t\t}\r\n\t\t});\r\n\t\tsetActiveToolMap(nextActive);\r\n\t};\r\n};\r\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\r\nimport CodeBlock from \"./CodeBlock.jsx\";\r\nimport { DEFAULT_HTML } from \"./defaultContent.js\";\r\nimport { COMMANDS } from \"./editorCommands.js\";\r\nimport { escapeHtml, exec as execCommand, clearAll as clearAllContent, exportHtml as exportHtmlContent } from \"./editorUtils.js\";\r\nimport { applyHeading as applyHeadingFormat, applyFontSize as applyFontSizeFormat, applyCustomFontSize as applyCustomFontSizeFormat, applyTextColor as applyTextColorFormat, applyBackgroundColor as applyBackgroundColorFormat, resetColors as resetColorsFormat } from \"./formattingFunctions.js\";\r\nimport { insertCodeBlock as insertCodeBlockContent, insertLink as insertLinkContent, insertTooltip as insertTooltipContent, insertAnchor as insertAnchorContent, insertHr as insertHrContent, insertImage as insertImageContent, insertVideo as insertVideoContent } from \"./insertFunctions.js\";\r\nimport { onInput as handleInput, onPaste as handlePaste, createUpdateToolbarState } from \"./eventHandlers.js\";\r\n\r\nexport default function Editor({\r\n\ttheme = \"dark\",\r\n\ttools = COMMANDS.map((item) => item.cmd),\r\n\tshowDemoText = false,\r\n\tshowHeading = true,\r\n\tshowFontSize = true,\r\n\tshowAlign = true,\r\n\tshowLink = true,\r\n\tshowTooltip = true,\r\n\tshowAnchor = true,\r\n\tshowHr = true,\r\n\tshowMedia = true,\r\n\tshowUndoRedo = true,\r\n\tshowClear = true,\r\n\tshowPlainPaste = true,\r\n\tshowColor = true,\r\n\tshowFullscreen = true,\r\n\tcodeBlock = false,\r\n\tcodeBlockLanguages,\r\n\tshowLiveHtml = true,\r\n\tshowStats = true,\r\n\tshowCopyHtml = true,\r\n\tonChange = () => { },\r\n\tinitialHtml = \"\",\r\n\tt\r\n}) {\r\n\tlet translate\r\n\tif (t) {\r\n\t\ttranslate = t\r\n\t} else {\r\n\t\ttranslate = (key) => {\r\n\t\t\tconst translations = {\r\n\t\t\t\tsample: \"Sample Text\",\r\n\t\t\t\tUndo: \"Undo\",\r\n\t\t\t\tRedo: \"Redo\",\r\n\t\t\t\tFormat: \"Format\",\r\n\t\t\t\tParagraph: \"Paragraph\",\r\n\t\t\t\t\"Heading 1\": \"Heading 1\",\r\n\t\t\t\t\"Heading 2\": \"Heading 2\",\r\n\t\t\t\t\"Heading 3\": \"Heading 3\",\r\n\t\t\t\t\"Heading 4\": \"Heading 4\",\r\n\t\t\t\tBlockquote: \"Blockquote\",\r\n\t\t\t\t\"Code Block\": \"Code Block\",\r\n\t\t\t\tSize: \"Size\",\r\n\t\t\t\tCustom: \"Custom\",\r\n\t\t\t\tFont: \"Font\",\r\n\t\t\t\t\"Text color\": \"Text color\",\r\n\t\t\t\tBackground: \"Background\",\r\n\t\t\t\t\"Background color\": \"Background color\",\r\n\t\t\t\t\"Reset colors\": \"Reset colors\",\r\n\t\t\t\t\"Insert code block\": \"Insert code block\",\r\n\t\t\t\tAlign: \"Align\",\r\n\t\t\t\t\"Align Left\": \"Align Left\",\r\n\t\t\t\t\"Align Center\": \"Align Center\",\r\n\t\t\t\t\"Align Right\": \"Align Right\",\r\n\t\t\t\tJustify: \"Justify\",\r\n\t\t\t\t\"Add tooltip/note to selected text\": \"Add tooltip/note to selected text\",\r\n\t\t\t\t\"Insert anchor\": \"Insert anchor\",\r\n\t\t\t\t\"Insert horizontal line\": \"Insert horizontal line\",\r\n\t\t\t\t\"Insert picture\": \"Insert picture\",\r\n\t\t\t\t\"Insert video\": \"Insert video\",\r\n\t\t\t\t\"Clear format\": \"Clear format\",\r\n\t\t\t\t\"Clear all\": \"Clear all\",\r\n\t\t\t\t\"Paste as plain text\": \"Paste as plain text\",\r\n\t\t\t\t\"Exit fullscreen\": \"Exit fullscreen\",\r\n\t\t\t\t\"Enter fullscreen\": \"Enter fullscreen\",\r\n\t\t\t\twords: \"words\",\r\n\t\t\t\tcharacters: \"characters\",\r\n\t\t\t\tselected: \"selected\",\r\n\t\t\t\t\"No selection\": \"No selection\",\r\n\t\t\t\t\"Copy HTML\": \"Copy HTML\",\r\n\t\t\t\t\"Live HTML\": \"Live HTML\",\r\n\t\t\t\t\"Insert Code Block\": \"Insert Code Block\",\r\n\t\t\t\t\"Paste your code here\": \"Paste your code here\",\r\n\t\t\t\tCancel: \"Cancel\",\r\n\t\t\t\tInsert: \"Insert\",\r\n\t\t\t};\r\n\t\t\treturn translations[key] || key;\r\n\t\t}\r\n\t}\r\n\r\n\tconst editorRef = useRef(null);\r\n\t// when true we already applied `initialHtml` / demo content once — don't overwrite user edits\r\n\tconst initialAppliedRef = useRef(false);\r\n\tconst [html, setHtml] = useState(\"\");\r\n\tconst [plainPaste, setPlainPaste] = useState(true);\r\n\tconst [selectionText, setSelectionText] = useState(\"\");\r\n\tconst [heading, setHeading] = useState(\"p\");\r\n\tconst [fontSize, setFontSize] = useState(\"16\");\r\n\tconst [customSize, setCustomSize] = useState(\"\");\r\n\tconst [textColor, setTextColor] = useState(\"#1f2937\");\r\n\tconst [backgroundColor, setBackgroundColor] = useState(\"#ffff00\");\r\n\tconst [activeToolMap, setActiveToolMap] = useState({});\r\n\tconst [isFullscreen, setIsFullscreen] = useState(false);\r\n\tconst [isCodeModalOpen, setIsCodeModalOpen] = useState(false);\r\n\tconst [codeValue, setCodeValue] = useState(\"\");\r\n\tconst [codeLanguage, setCodeLanguage] = useState(\"js\");\r\n\tconst [codeTheme, setCodeTheme] = useState(theme);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetCodeTheme(theme);\r\n\t}, [theme]);\r\n\r\n\t// NOTE: initialization for `initialHtml` / demo text moved below `updateToolbarState` declaration to avoid referencing\r\n\t// `updateToolbarState` before it is defined. See the effect inserted later in the file.\r\n\r\n\tconst stats = useMemo(() => {\r\n\t\tconst text = editorRef.current?.innerText || \"\";\r\n\t\tconst words = text.trim() ? text.trim().split(/\\s+/).length : 0;\r\n\t\treturn {\r\n\t\t\twords,\r\n\t\t\tchars: text.length,\r\n\t\t};\r\n\t}, [html]);\r\n\r\n\tconst exec = (cmd, value = null) => {\r\n\t\texecCommand(editorRef, cmd, value, setHtml, onChange, updateToolbarState);\r\n\t};\r\n\r\n\tconst applyHeading = (next) => {\r\n\t\tsetHeading(next);\r\n\t\tapplyHeadingFormat(next, exec);\r\n\t};\r\n\r\n\tconst applyFontSize = (next) => {\r\n\t\tif (next === \"custom\") {\r\n\t\t\tsetFontSize(\"custom\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsetFontSize(next);\r\n\t\tapplyFontSizeFormat(next, exec, editorRef, setHtml, updateToolbarState);\r\n\t};\r\n\r\n\tconst applyCustomFontSize = (value) => {\r\n\t\tsetCustomSize(value);\r\n\t\tapplyCustomFontSizeFormat(value, exec, editorRef, setHtml, updateToolbarState);\r\n\t};\r\n\r\n\tconst applyTextColor = (next) => {\r\n\t\tsetTextColor(next);\r\n\t\tapplyTextColorFormat(next, exec);\r\n\t};\r\n\r\n\tconst applyBackgroundColor = (next) => {\r\n\t\tsetBackgroundColor(next);\r\n\t\tapplyBackgroundColorFormat(next, exec);\r\n\t};\r\n\r\n\tconst resetColors = () => {\r\n\t\tresetColorsFormat(theme, setTextColor, setBackgroundColor, exec);\r\n\t};\r\n\r\n\tconst insertCodeBlock = () => {\r\n\t\tinsertCodeBlockContent(codeValue, codeLanguage, codeTheme, exec, setIsCodeModalOpen, setCodeValue);\r\n\t};\r\n\r\n\tconst insertLink = () => {\r\n\t\tinsertLinkContent(exec);\r\n\t};\r\n\r\n\tconst insertTooltip = () => {\r\n\t\tinsertTooltipContent(editorRef, setHtml, onChange, updateToolbarState);\r\n\t};\r\n\r\n\tconst insertAnchor = () => {\r\n\t\tinsertAnchorContent(exec);\r\n\t};\r\n\r\n\tconst insertHr = () => {\r\n\t\tinsertHrContent(exec);\r\n\t};\r\n\r\n\tconst insertImage = () => {\r\n\t\tinsertImageContent(exec);\r\n\t};\r\n\r\n\tconst insertVideo = () => {\r\n\t\tinsertVideoContent(exec);\r\n\t};\r\n\r\n\tconst toggleFullscreen = () => {\r\n\t\tsetIsFullscreen(!isFullscreen);\r\n\t};\r\n\r\n\tconst removeFormat = () => exec(\"removeFormat\");\r\n\r\n\tconst clearAll = () => {\r\n\t\tclearAllContent(editorRef, setHtml, onChange, updateToolbarState);\r\n\t};\r\n\r\n\tconst onInput = () => {\r\n\t\thandleInput(editorRef, setHtml, onChange, updateToolbarState);\r\n\t\t// Add key hint to all links\r\n\t\tconst links = editorRef.current?.querySelectorAll('a') || [];\r\n\t\tlinks.forEach((link) => {\r\n\t\t\tif (!link.getAttribute('data-key-hint')) {\r\n\t\t\t\tlink.setAttribute('data-key-hint', 'Ctrl/Shift + Click to follow');\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tconst onPaste = (event) => {\r\n\t\thandlePaste(event, plainPaste);\r\n\t};\r\n\r\n\tconst onEditorClick = (event) => {\r\n\t\tif (event.target.tagName === 'A' && (event.ctrlKey || event.shiftKey || event.metaKey)) {\r\n\t\t\tconst href = event.target.getAttribute('href');\r\n\t\t\tif (href) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\twindow.open(href, '_blank');\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tconst updateToolbarState = useCallback(\r\n\t\tcreateUpdateToolbarState(editorRef, setSelectionText, setActiveToolMap),\r\n\t\t[]\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tdocument.addEventListener(\"selectionchange\", updateToolbarState);\r\n\t\treturn () => document.removeEventListener(\"selectionchange\", updateToolbarState);\r\n\t}, [updateToolbarState]);\r\n\r\n\t// Initialize editor from `initialHtml` (applied once) or fall back to demo text.\r\n\t// Guard against re-applying `initialHtml` on every render — that was causing user edits to be overwritten.\r\n\tuseEffect(() => {\r\n\t\tif (!editorRef.current || initialAppliedRef.current) return;\r\n\r\n\t\t// apply `initialHtml` only once (initialization). If parent later wants to *reset*\r\n\t\t// the editor, we can add an explicit API — but default behaviour is \"initial only\".\r\n\t\tif (initialHtml) {\r\n\t\t\teditorRef.current.innerHTML = initialHtml;\r\n\t\t\tsetHtml(initialHtml);\r\n\t\t\tconst links = editorRef.current?.querySelectorAll('a') || [];\r\n\t\t\tlinks.forEach((link) => {\r\n\t\t\t\tif (!link.getAttribute('data-key-hint')) {\r\n\t\t\t\t\tlink.setAttribute('data-key-hint', 'Ctrl/Shift + Click to follow');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tupdateToolbarState();\r\n\t\t\ttry { onChange(initialHtml); } catch { /* noop */ }\r\n\t\t\tinitialAppliedRef.current = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (showDemoText) {\r\n\t\t\teditorRef.current.innerHTML = DEFAULT_HTML;\r\n\t\t\tsetHtml(editorRef.current.innerHTML);\r\n\t\t\tconst links = editorRef.current?.querySelectorAll('a') || [];\r\n\t\t\tlinks.forEach((link) => {\r\n\t\t\t\tif (!link.getAttribute('data-key-hint')) {\r\n\t\t\t\t\tlink.setAttribute('data-key-hint', 'Ctrl/Shift + Click to follow');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tupdateToolbarState();\r\n\t\t\tinitialAppliedRef.current = true;\r\n\t\t}\r\n\t}, [initialHtml, showDemoText, onChange, updateToolbarState]);\r\n\r\n\tconst exportHtml = async () => {\r\n\t\tawait exportHtmlContent(editorRef);\r\n\t};\r\n\r\n\tconst activeCommands = useMemo(\r\n\t\t() => COMMANDS.filter((item) => tools.includes(item.cmd)),\r\n\t\t[tools]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<section\r\n\t\t\tclassName={`editor-root theme-${theme}${showLiveHtml ? \" show-preview\" : \" no-preview\"}${isFullscreen ? \" fullscreen\" : \"\"}`}\r\n\t\t\tdata-theme={theme}\r\n\t\t>\r\n\t\t\t<div className=\"toolbar\">\r\n\t\t\t\t{showUndoRedo && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t<div className=\"toolbar-group\">\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\t\tonClick={() => exec(\"undo\")}\r\n\t\t\t\t\t\t\t\ttitle={translate(\"Undo\")}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t↶\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\t\tonClick={() => exec(\"redo\")}\r\n\t\t\t\t\t\t\t\ttitle={translate(\"Redo\")}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t↷\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<span className=\"toolbar-separator\">|</span>\r\n\t\t\t\t\t</>\r\n\t\t\t\t)}\r\n\t\t\t\t{activeCommands.length > 0 && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t<div className=\"toolbar-group\">\r\n\t\t\t\t\t\t\t{activeCommands.map((item) => (\r\n\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\tkey={item.cmd}\r\n\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\tclassName={`toolbar-btn${activeToolMap[item.cmd] ? \" active\" : \"\"}`}\r\n\t\t\t\t\t\t\t\t\tonMouseDown={(event) => event.preventDefault()}\r\n\t\t\t\t\t\t\t\t\tonClick={() => exec(item.cmd)}\r\n\t\t\t\t\t\t\t\t\ttitle={translate(item.label)}\r\n\t\t\t\t\t\t\t\t\taria-pressed={activeToolMap[item.cmd] || false}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{item.icon}\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<span className=\"toolbar-separator\">|</span>\r\n\t\t\t\t\t</>\r\n\t\t\t\t)}\r\n\t\t\t\t{(showHeading || showFontSize || showColor) && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t<div className=\"toolbar-group\">\r\n\t\t\t\t\t\t{showHeading && (\r\n\t\t\t\t\t\t\t<label className=\"toolbar-label\">\r\n\t\t\t\t\t\t\t\t{translate(\"Format\")}\r\n\t\t\t\t\t\t\t\t<select\r\n\t\t\t\t\t\t\t\t\tvalue={heading}\r\n\t\t\t\t\t\t\t\t\tonChange={(event) => applyHeading(event.target.value)}\r\n\t\t\t\t\t\t\t\t\tclassName=\"toolbar-select\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<option value=\"p\">{translate(\"Paragraph\")}</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"h1\">{translate(\"Heading 1\")}</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"h2\">{translate(\"Heading 2\")}</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"h3\">{translate(\"Heading 3\")}</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"h4\">{translate(\"Heading 4\")}</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"blockquote\">{translate(\"Blockquote\")}</option>\r\n\t\t\t\t\t\t\t\t\t{codeBlock && <option value=\"pre\">{translate(\"Code Block\")}</option>}\r\n\t\t\t\t\t\t\t\t</select>\r\n\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showFontSize && (\r\n\t\t\t\t\t\t\t<label className=\"toolbar-label\">\r\n\t\t\t\t\t\t\t\t{translate(\"Size\")}\r\n\t\t\t\t\t\t\t\t<select\r\n\t\t\t\t\t\t\t\t\tvalue={fontSize}\r\n\t\t\t\t\t\t\t\t\tonChange={(event) => applyFontSize(event.target.value)}\r\n\t\t\t\t\t\t\t\t\tclassName=\"toolbar-select\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<option value=\"10\">10px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"12\">12px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"14\">14px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"16\">16px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"18\">18px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"20\">20px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"22\">22px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"24\">24px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"28\">28px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"32\">32px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"36\">36px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"48\">48px</option>\r\n\t\t\t\t\t\t\t\t\t<option value=\"custom\">{translate(\"Custom\")}</option>\r\n\t\t\t\t\t\t\t\t</select>\r\n\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showFontSize && fontSize === \"custom\" && (\r\n\t\t\t\t\t\t\t<label className=\"toolbar-label\">\r\n\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\ttype=\"number\"\r\n\t\t\t\t\t\t\t\t\tmin=\"8\"\r\n\t\t\t\t\t\t\t\t\tmax=\"200\"\r\n\t\t\t\t\t\t\t\t\tvalue={customSize}\r\n\t\t\t\t\t\t\t\t\tonChange={(event) => applyCustomFontSize(event.target.value)}\r\n\t\t\t\t\t\t\t\t\tplaceholder={translate(\"Size\")}\r\n\t\t\t\t\t\t\t\t\tclassName=\"toolbar-input\"\r\n\t\t\t\t\t\t\t\t\tstyle={{ width: \"60px\" }}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\tpx\r\n\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showColor && (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t<label className=\"toolbar-label color-label\">\r\n\t\t\t\t\t\t\t\t\t{translate(\"Font\")}\r\n\t\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\t\ttype=\"color\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-color\"\r\n\t\t\t\t\t\t\t\t\t\tvalue={textColor}\r\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => applyTextColor(event.target.value)}\r\n\t\t\t\t\t\t\t\t\t\taria-label={translate(\"Text color\")}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t\t\t<label className=\"toolbar-label color-label\">\r\n\t\t\t\t\t\t\t\t\t{translate(\"Background\")}\r\n\t\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\t\ttype=\"color\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-color\"\r\n\t\t\t\t\t\t\t\t\t\tvalue={backgroundColor}\r\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => applyBackgroundColor(event.target.value)}\r\n\t\t\t\t\t\t\t\t\t\taria-label={translate(\"Background color\")}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\tclassName=\"toolbar-btn toolbar-btn-small\"\r\n\t\t\t\t\t\t\t\t\tonClick={resetColors}\r\n\t\t\t\t\t\t\t\t\ttitle={translate(\"Reset colors\")}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t↺\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{codeBlock && (\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\tsetCodeTheme(theme);\r\n\t\t\t\t\t\t\t\t\tsetIsCodeModalOpen(true);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\ttitle={translate(\"Insert code block\")}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{translate(\"Code Block\")}\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showAlign && (\r\n\t\t\t\t\t\t\t<div className=\"toolbar-label\">\r\n\t\t\t\t\t\t\t\t{translate(\"Align\")}\r\n\t\t\t\t\t\t\t\t<div className=\"align-buttons\">\r\n\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-btn toolbar-btn-small\"\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => exec(\"justifyLeft\")}\r\n\t\t\t\t\t\t\t\t\t\ttitle={translate(\"Align Left\")}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t⟸\r\n\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-btn toolbar-btn-small\"\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => exec(\"justifyCenter\")}\r\n\t\t\t\t\t\t\t\t\t\ttitle={translate(\"Align Center\")}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t⇔\r\n\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-btn toolbar-btn-small\"\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => exec(\"justifyRight\")}\r\n\t\t\t\t\t\t\t\t\t\ttitle={translate(\"Align Right\")}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t⟹\r\n\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"toolbar-btn toolbar-btn-small\"\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => exec(\"justifyFull\")}\r\n\t\t\t\t\t\t\t\t\t\ttitle={translate(\"Justify\")}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t⇿\r\n\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<span className=\"toolbar-separator\">|</span>\r\n\t\t\t\t</>\r\n\t\t\t\t)}\r\n\t\t\t\t{(showLink || showTooltip || showAnchor || showHr || showMedia || showClear) && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t<div className=\"toolbar-group\">\r\n\t\t\t\t\t\t{showLink && (\r\n\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertLink}>\r\n\t\t\t\t\t\t\t\t🔗\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showTooltip && (\r\n\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertTooltip} title={translate(\"Add tooltip/note to selected text\")}>\r\n\t\t\t\t\t\t\t\t💬\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showAnchor && (\r\n\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertAnchor} title={translate(\"Insert anchor\")}>\r\n\t\t\t\t\t\t\t\t⚓\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showHr && (\r\n\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertHr} title={translate(\"Insert horizontal line\")}>\r\n\t\t\t\t\t\t\t\t─\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showMedia && (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertImage} title={translate(\"Insert picture\")}>\r\n\t\t\t\t\t\t\t\t\t🖼️\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={insertVideo} title={translate(\"Insert video\")}>\r\n\t\t\t\t\t\t\t\t\t🎬\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{showClear && (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={removeFormat}>\r\n\t\t\t\t\t\t\t\t\t{translate(\"Clear format\")}\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn danger\" onClick={clearAll}>\r\n\t\t\t\t\t\t\t\t\t{translate(\"Clear all\")}\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<span className=\"toolbar-separator\">|</span>\r\n\t\t\t\t</>\r\n\t\t\t\t)}\r\n\t\t\t\t{showPlainPaste && (\r\n\t\t\t\t\t<div className=\"toolbar-group toggle\">\r\n\t\t\t\t\t\t<label className=\"toggle-row\">\r\n\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\ttype=\"checkbox\"\r\n\t\t\t\t\t\t\t\tchecked={plainPaste}\r\n\t\t\t\t\t\t\t\tonChange={(event) => setPlainPaste(event.target.checked)}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t{translate(\"Paste as plain text\")}\r\n\t\t\t\t\t\t</label>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\t\t\t\t{showFullscreen && (\r\n\t\t\t\t\t<div className=\"toolbar-group\">\r\n\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\tonClick={toggleFullscreen}\r\n\t\t\t\t\t\t\ttitle={isFullscreen ? translate(\"Exit fullscreen\") : translate(\"Enter fullscreen\")}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{isFullscreen ? \"⤓\" : \"⤢\"}\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\t\t\t</div>\r\n\r\n\t\t\t<div className=\"editor-area\">\r\n\t\t\t\t<div\r\n\t\t\t\t\tref={editorRef}\r\n\t\t\t\t\tclassName=\"editor-surface\"\r\n\t\t\t\t\tcontentEditable\r\n\t\t\t\t\tonInput={onInput}\r\n\t\t\t\t\tonPaste={onPaste}\r\n\t\t\t\tonClick={onEditorClick}\r\n\t\t\t\tonKeyUp={updateToolbarState}\r\n\t\t\t\tonMouseUp={updateToolbarState}\r\n\t\t\t\tsuppressContentEditableWarning\r\n\t\t\t\tspellCheck\r\n\t\t\t/>\r\n\t\t</div>\r\n\r\n\t\t\t{(showStats || showCopyHtml) && (\r\n\t\t\t\t<footer className=\"editor-footer\">\r\n\t\t\t\t\t{showStats && (\r\n\t\t\t\t\t\t<div className=\"footer-stats\">\r\n\t\t\t\t\t\t\t<span>{stats.words} {translate(\"words\")}</span>\r\n\t\t\t\t\t\t\t<span>{stats.chars} {translate(\"characters\")}</span>\r\n\t\t\t\t\t\t\t<span>{selectionText ? `${selectionText.length} ${translate(\"selected\")}` : translate(\"No selection\")}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{showCopyHtml && (\r\n\t\t\t\t\t\t<div className=\"footer-actions\">\r\n\t\t\t\t\t\t\t<button type=\"button\" className=\"toolbar-btn\" onClick={exportHtml}>\r\n\t\t\t\t\t\t\t\t{translate(\"Copy HTML\")}\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</footer>\r\n\t\t\t)}\r\n\r\n\t\t\t{showLiveHtml && (\r\n\t\t\t\t<aside className=\"editor-preview\">\r\n\t\t\t\t\t<pre className=\"preview-code\">{html}</pre>\r\n\t\t\t\t\t<div className=\"preview-header\">{translate(\"Live HTML\")}</div>\r\n\t\t\t\t</aside>\r\n\t\t\t)}\r\n\r\n\t\t\t{codeBlock && isCodeModalOpen && (\r\n\t\t\t\t<div className=\"modal-backdrop\" role=\"dialog\" aria-modal=\"true\">\r\n\t\t\t\t\t<div className=\"modal\">\r\n\t\t\t\t\t\t<div className=\"modal-header\">\r\n\t\t\t\t\t\t\t{translate(\"Insert Code Block\")}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<CodeBlock\r\n\t\t\t\t\t\t\tvalue={codeValue}\r\n\t\t\t\t\t\t\tlanguage={codeLanguage}\r\n\t\t\t\t\t\t\ttheme={codeTheme}\r\n\t\t\t\t\t\t\tlanguages={codeBlockLanguages}\r\n\t\t\t\t\t\t\tonChange={setCodeValue}\r\n\t\t\t\t\t\t\tonLanguageChange={setCodeLanguage}\r\n\t\t\t\t\t\t\tonThemeChange={setCodeTheme}\r\n\t\t\t\t\t\t\tplaceholder={translate(\"Paste your code here\")}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t<div className=\"modal-actions\">\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\t\tonClick={() => setIsCodeModalOpen(false)}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{translate(\"Cancel\")}\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\tclassName=\"toolbar-btn\"\r\n\t\t\t\t\t\t\t\tonClick={insertCodeBlock}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{translate(\"Insert\")}\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t)}\r\n\t\t</section>\r\n\t);\r\n}\r\n","// src/index.js - Library entry point\r\nimport \"./index.css\";\r\nimport Editor from \"./components/Editor.jsx\";\r\nimport CodeBlock from \"./components/CodeBlock.jsx\";\r\n\r\nexport default Editor;\r\nexport { CodeBlock };\r\n"],"names":["DEFAULT_LANGUAGES","value","label","DEFAULT_THEMES","CodeBlock","language","theme","languages","themes","onChange","onLanguageChange","onThemeChange","placeholder","normalizedLanguages","useMemo","Array","isArray","length","map","item","currentLanguage","find","React","createElement","className","event","target","key","spellCheck","DEFAULT_HTML","COMMANDS","cmd","icon","escapeHtml","replace","exec","editorRef","setHtml","updateToolbarState","current","focus","document","execCommand","nextHtml","innerHTML","html","text","innerText","clearAll","exportHtml","payload","navigator","clipboard","writeText","alert","applyHeading","next","toUpperCase","applyFontSize","selection","window","getSelection","rangeCount","range","getRangeAt","collapsed","fontElements","querySelectorAll","forEach","el","removeAttribute","style","fontSize","applyCustomFontSize","isNaN","applyTextColor","applyBackgroundColor","resetColors","setTextColor","setBackgroundColor","defaultText","defaultBg","insertCodeBlock","codeValue","codeLanguage","codeTheme","setIsCodeModalOpen","setCodeValue","safeCode","languageClass","htmlBlock","insertLink","url","prompt","insertTooltip","selectedText","toString","tooltip","span","title","surroundContents","appendChild","extractContents","insertNode","removeAllRanges","insertAnchor","id","sanitizedId","anchorHtml","insertHr","insertImage","alt","imageHtml","insertVideo","youtubeMatch","match","videoId","embedHtml","videoHtml","onInput","onPaste","plainPaste","preventDefault","clipboardData","getData","createUpdateToolbarState","setSelectionText","setActiveToolMap","anchorNode","isInsideEditor","contains","nextActive","queryCommandState","Editor","tools","showDemoText","showHeading","showFontSize","showAlign","showLink","showTooltip","showAnchor","showHr","showMedia","showUndoRedo","showClear","showPlainPaste","showColor","showFullscreen","codeBlock","codeBlockLanguages","showLiveHtml","showStats","showCopyHtml","initialHtml","t","translate","translations","sample","Undo","Redo","Format","Paragraph","Blockquote","Size","Custom","Font","Background","Align","Justify","words","characters","selected","Cancel","Insert","useRef","initialAppliedRef","useState","setPlainPaste","selectionText","heading","setHeading","setFontSize","customSize","setCustomSize","textColor","backgroundColor","activeToolMap","isFullscreen","setIsFullscreen","isCodeModalOpen","setCodeLanguage","setCodeTheme","useEffect","stats","trim","split","chars","applyHeadingFormat","applyFontSizeFormat","applyCustomFontSizeFormat","applyTextColorFormat","applyBackgroundColorFormat","resetColorsFormat","insertCodeBlockContent","insertLinkContent","insertTooltipContent","insertAnchorContent","insertHrContent","insertImageContent","insertVideoContent","toggleFullscreen","removeFormat","clearAllContent","handleInput","links","link","getAttribute","setAttribute","handlePaste","onEditorClick","tagName","ctrlKey","shiftKey","metaKey","href","open","useCallback","addEventListener","removeEventListener","exportHtmlContent","activeCommands","filter","includes","Fragment","type","onClick","onMouseDown","min","max","width","checked","ref","contentEditable","onKeyUp","onMouseUp","suppressContentEditableWarning","role"],"mappings":";;AAEA,MAAMA,iBAAiB,GAAG,CACxB;AAAEC,EAAAA,KAAK,EAAE,OAAO;AAAEC,EAAAA,KAAK,EAAE;AAAQ,CAAC,EAClC;AAAED,EAAAA,KAAK,EAAE,IAAI;AAAEC,EAAAA,KAAK,EAAE;AAAa,CAAC,EACpC;AAAED,EAAAA,KAAK,EAAE,IAAI;AAAEC,EAAAA,KAAK,EAAE;AAAa,CAAC,EACpC;AAAED,EAAAA,KAAK,EAAE,MAAM;AAAEC,EAAAA,KAAK,EAAE;AAAO,CAAC,EAChC;AAAED,EAAAA,KAAK,EAAE,KAAK;AAAEC,EAAAA,KAAK,EAAE;AAAM,CAAC,EAC9B;AAAED,EAAAA,KAAK,EAAE,MAAM;AAAEC,EAAAA,KAAK,EAAE;AAAO,CAAC,EAChC;AAAED,EAAAA,KAAK,EAAE,MAAM;AAAEC,EAAAA,KAAK,EAAE;AAAO,CAAC,CACjC;AAED,MAAMC,cAAc,GAAG,CACrB;AAAEF,EAAAA,KAAK,EAAE,MAAM;AAAEC,EAAAA,KAAK,EAAE;AAAO,CAAC,EAChC;AAAED,EAAAA,KAAK,EAAE,OAAO;AAAEC,EAAAA,KAAK,EAAE;AAAQ,CAAC,CACnC;AAEc,SAASE,SAASA,CAAC;AAChCH,EAAAA,KAAK,GAAG,EAAE;AACVI,EAAAA,QAAQ,GAAG,OAAO;AAClBC,EAAAA,KAAK,GAAG,MAAM;AACdC,EAAAA,SAAS,GAAGP,iBAAiB;AAC7BQ,EAAAA,MAAM,GAAGL,cAAc;AACvBM,EAAAA,QAAQ,GAAGA,MAAM,CAAC,CAAC;AACnBC,EAAAA,gBAAgB,GAAGA,MAAM,CAAC,CAAC;AAC3BC,EAAAA,aAAa,GAAGA,MAAM,CAAC,CAAC;AACxBC,EAAAA,WAAW,GAAG;AAChB,CAAC,EAAE;AACD,EAAA,MAAMC,mBAAmB,GAAGC,OAAO,CAAC,MAAM;AACxC,IAAA,IAAI,CAACC,KAAK,CAACC,OAAO,CAACT,SAAS,CAAC,IAAIA,SAAS,CAACU,MAAM,KAAK,CAAC,EAAE,OAAOjB,iBAAiB;AACjF,IAAA,IAAI,OAAOO,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AACpC,MAAA,OAAOA,SAAS,CAACW,GAAG,CAAEC,IAAI,KAAM;AAAElB,QAAAA,KAAK,EAAEkB,IAAI;AAAEjB,QAAAA,KAAK,EAAEiB;AAAK,OAAC,CAAC,CAAC;AAChE,IAAA;AACA,IAAA,OAAOZ,SAAS;AAClB,EAAA,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;AAEf,EAAA,MAAMa,eAAe,GAAGN,OAAO,CAC7B,MAAMD,mBAAmB,CAACQ,IAAI,CAAEF,IAAI,IAAKA,IAAI,CAAClB,KAAK,KAAKI,QAAQ,CAAC,IAAIQ,mBAAmB,CAAC,CAAC,CAAC,EAC3F,CAACR,QAAQ,EAAEQ,mBAAmB,CAChC,CAAC;EAED,oBACES,KAAA,CAAAC,aAAA,CAAA,SAAA,EAAA;IAASC,SAAS,EAAE,CAAA,sBAAA,EAAyBlB,KAAK,CAAA,CAAG;AAAC,IAAA,eAAA,EAAec,eAAe,EAAEnB;GAAM,eAC1FqB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQC,IAAAA,SAAS,EAAC;GAAoB,eACpCF,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAOC,IAAAA,SAAS,EAAC;AAAkB,GAAA,EAAC,UAElC,eAAAF,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACEC,IAAAA,SAAS,EAAC,mBAAmB;IAC7BvB,KAAK,EAAEmB,eAAe,EAAEnB,KAAM;IAC9BQ,QAAQ,EAAGgB,KAAK,IAAKf,gBAAgB,CAACe,KAAK,CAACC,MAAM,CAACzB,KAAK;GAAE,EAEzDY,mBAAmB,CAACK,GAAG,CAAEC,IAAI,iBAC5BG,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;IAAQI,GAAG,EAAER,IAAI,CAAClB,KAAM;IAACA,KAAK,EAAEkB,IAAI,CAAClB;GAAM,EACxCkB,IAAI,CAACjB,KACA,CACT,CACK,CACH,CAAC,eACRoB,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAOC,IAAAA,SAAS,EAAC;AAAkB,GAAA,EAAC,OAElC,eAAAF,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACEC,IAAAA,SAAS,EAAC,mBAAmB;AAC7BvB,IAAAA,KAAK,EAAEK,KAAM;IACbG,QAAQ,EAAGgB,KAAK,IAAKd,aAAa,CAACc,KAAK,CAACC,MAAM,CAACzB,KAAK;GAAE,EAEtDO,MAAM,CAACU,GAAG,CAAEC,IAAI,iBACfG,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;IAAQI,GAAG,EAAER,IAAI,CAAClB,KAAM;IAACA,KAAK,EAAEkB,IAAI,CAAClB;GAAM,EACxCkB,IAAI,CAACjB,KACA,CACT,CACK,CACH,CACD,CAAC,eACToB,KAAA,CAAAC,aAAA,CAAA,UAAA,EAAA;AACEC,IAAAA,SAAS,EAAC,iBAAiB;AAC3BvB,IAAAA,KAAK,EAAEA,KAAM;IACbQ,QAAQ,EAAGgB,KAAK,IAAKhB,QAAQ,CAACgB,KAAK,CAACC,MAAM,CAACzB,KAAK,CAAE;AAClDW,IAAAA,WAAW,EAAEA,WAAY;AACzBgB,IAAAA,UAAU,EAAE;AAAM,GACnB,CACM,CAAC;AAEd;;AClFO,MAAMC,YAAY,GAAG;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;ACRM,MAAMC,QAAQ,GAAG,CACvB;AAAEC,EAAAA,GAAG,EAAE,MAAM;AAAE7B,EAAAA,KAAK,EAAE,MAAM;AAAE8B,EAAAA,IAAI,EAAE;AAAI,CAAC,EACzC;AAAED,EAAAA,GAAG,EAAE,QAAQ;AAAE7B,EAAAA,KAAK,EAAE,QAAQ;AAAE8B,EAAAA,IAAI,EAAE;AAAI,CAAC,EAC7C;AAAED,EAAAA,GAAG,EAAE,WAAW;AAAE7B,EAAAA,KAAK,EAAE,WAAW;AAAE8B,EAAAA,IAAI,EAAE;AAAI,CAAC,EACnD;AAAED,EAAAA,GAAG,EAAE,eAAe;AAAE7B,EAAAA,KAAK,EAAE,QAAQ;AAAE8B,EAAAA,IAAI,EAAE;AAAI,CAAC,EACpD;AAAED,EAAAA,GAAG,EAAE,qBAAqB;AAAE7B,EAAAA,KAAK,EAAE,SAAS;AAAE8B,EAAAA,IAAI,EAAE;AAAI,CAAC,EAC3D;AAAED,EAAAA,GAAG,EAAE,mBAAmB;AAAE7B,EAAAA,KAAK,EAAE,UAAU;AAAE8B,EAAAA,IAAI,EAAE;AAAK,CAAC,EAC3D;AAAED,EAAAA,GAAG,EAAE,aAAa;AAAE7B,EAAAA,KAAK,EAAE,MAAM;AAAE8B,EAAAA,IAAI,EAAE;AAAI,CAAC,EAChD;AAAED,EAAAA,GAAG,EAAE,eAAe;AAAE7B,EAAAA,KAAK,EAAE,QAAQ;AAAE8B,EAAAA,IAAI,EAAE;AAAI,CAAC,EACpD;AAAED,EAAAA,GAAG,EAAE,cAAc;AAAE7B,EAAAA,KAAK,EAAE,OAAO;AAAE8B,EAAAA,IAAI,EAAE;AAAI,CAAC,CAClD;;ACVM,MAAMC,UAAU,GAAIhC,KAAK,IAC/BA,KAAK,CACHiC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CACtBA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CACrBA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CACrBA,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CACxBA,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;AAEnB,MAAMC,IAAI,GAAGA,CAACC,SAAS,EAAEL,GAAG,EAAE9B,KAAK,GAAG,IAAI,EAAEoC,OAAO,EAAE5B,QAAQ,EAAE6B,kBAAkB,KAAK;AAC5FF,EAAAA,SAAS,CAACG,OAAO,EAAEC,KAAK,EAAE;EAC1BC,QAAQ,CAACC,WAAW,CAACX,GAAG,EAAE,KAAK,EAAE9B,KAAK,CAAC;EACvC,MAAM0C,QAAQ,GAAGP,SAAS,CAACG,OAAO,EAAEK,SAAS,IAAI,EAAE;EACnDP,OAAO,CAACM,QAAQ,CAAC;AACjBlC,EAAAA,QAAQ,CAAC;AAAEoC,IAAAA,IAAI,EAAEF,QAAQ;AAAEG,IAAAA,IAAI,EAAEV,SAAS,CAACG,OAAO,EAAEQ,SAAS,IAAI;AAAG,GAAC,CAAC;AACtET,EAAAA,kBAAkB,EAAE;AACrB,CAAC;AAIM,MAAMU,QAAQ,GAAGA,CAACZ,SAAS,EAAEC,OAAO,EAAE5B,QAAQ,EAAE6B,kBAAkB,KAAK;AAC7E,EAAA,IAAI,CAACF,SAAS,CAACG,OAAO,EAAE;AACxBH,EAAAA,SAAS,CAACG,OAAO,CAACK,SAAS,GAAG,SAAS;AACvCP,EAAAA,OAAO,CAACD,SAAS,CAACG,OAAO,CAACK,SAAS,CAAC;AACpCnC,EAAAA,QAAQ,CAAC;AAAEoC,IAAAA,IAAI,EAAET,SAAS,CAACG,OAAO,CAACK,SAAS;AAAEE,IAAAA,IAAI,EAAEV,SAAS,CAACG,OAAO,CAACQ,SAAS,IAAI;AAAG,GAAC,CAAC;AACxFT,EAAAA,kBAAkB,EAAE;AACrB,CAAC;AAEM,MAAMW,UAAU,GAAG,MAAOb,SAAS,IAAK;EAC9C,MAAMc,OAAO,GAAGd,SAAS,CAACG,OAAO,EAAEK,SAAS,IAAI,EAAE;AAClD,EAAA,MAAMO,SAAS,CAACC,SAAS,CAACC,SAAS,CAACH,OAAO,CAAC;EAC5CI,KAAK,CAAC,2BAA2B,CAAC;AACnC,CAAC;;AC/BM,MAAMC,YAAY,GAAGA,CAACC,IAAI,EAAErB,IAAI,KAAK;EAC3C,IAAIqB,IAAI,KAAK,GAAG,EAAE;AACjBrB,IAAAA,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC;AACxB,IAAA;AACD,EAAA;EACA,IAAIqB,IAAI,KAAK,KAAK,EAAE;AACnBrB,IAAAA,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;AAC1B,IAAA;AACD,EAAA;EACAA,IAAI,CAAC,aAAa,EAAEqB,IAAI,CAACC,WAAW,EAAE,CAAC;AACxC,CAAC;AAEM,MAAMC,aAAa,GAAGA,CAACF,IAAI,EAAErB,IAAI,EAAEC,SAAS,EAAEC,OAAO,EAAEC,kBAAkB,KAAK;AACpF,EAAA,MAAMqB,SAAS,GAAGC,MAAM,CAACC,YAAY,EAAE;EACvC,IAAI,CAACF,SAAS,IAAIA,SAAS,CAACG,UAAU,KAAK,CAAC,EAAE;AAE9C,EAAA,MAAMC,KAAK,GAAGJ,SAAS,CAACK,UAAU,CAAC,CAAC,CAAC;AACrC,EAAA,IAAID,KAAK,CAACE,SAAS,EAAE,OAAO;;AAE5B9B,EAAAA,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC;EACrB,MAAM+B,YAAY,GAAG9B,SAAS,CAACG,OAAO,EAAE4B,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,EAAE;AAChFD,EAAAA,YAAY,CAACE,OAAO,CAAEC,EAAE,IAAK;AAC5BA,IAAAA,EAAE,CAACC,eAAe,CAAC,MAAM,CAAC;AAC1BD,IAAAA,EAAE,CAACE,KAAK,CAACC,QAAQ,GAAG,CAAA,EAAGhB,IAAI,CAAA,EAAA,CAAI;AAChC,EAAA,CAAC,CAAC;EACFnB,OAAO,CAACD,SAAS,CAACG,OAAO,EAAEK,SAAS,IAAI,EAAE,CAAC;AAC3CN,EAAAA,kBAAkB,EAAE;AACrB,CAAC;AAEM,MAAMmC,mBAAmB,GAAGA,CAACxE,KAAK,EAAEkC,IAAI,EAAEC,SAAS,EAAEC,OAAO,EAAEC,kBAAkB,KAAK;AAC3F,EAAA,IAAI,CAACrC,KAAK,IAAIyE,KAAK,CAACzE,KAAK,CAAC,EAAE;AAE5B,EAAA,MAAM0D,SAAS,GAAGC,MAAM,CAACC,YAAY,EAAE;EACvC,IAAI,CAACF,SAAS,IAAIA,SAAS,CAACG,UAAU,KAAK,CAAC,EAAE;AAE9C,EAAA,MAAMC,KAAK,GAAGJ,SAAS,CAACK,UAAU,CAAC,CAAC,CAAC;AACrC,EAAA,IAAID,KAAK,CAACE,SAAS,EAAE,OAAO;;AAE5B9B,EAAAA,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC;EACrB,MAAM+B,YAAY,GAAG9B,SAAS,CAACG,OAAO,EAAE4B,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,EAAE;AAChFD,EAAAA,YAAY,CAACE,OAAO,CAAEC,EAAE,IAAK;AAC5BA,IAAAA,EAAE,CAACC,eAAe,CAAC,MAAM,CAAC;AAC1BD,IAAAA,EAAE,CAACE,KAAK,CAACC,QAAQ,GAAG,CAAA,EAAGvE,KAAK,CAAA,EAAA,CAAI;AACjC,EAAA,CAAC,CAAC;EACFoC,OAAO,CAACD,SAAS,CAACG,OAAO,EAAEK,SAAS,IAAI,EAAE,CAAC;AAC3CN,EAAAA,kBAAkB,EAAE;AACrB,CAAC;AAEM,MAAMqC,cAAc,GAAGA,CAACnB,IAAI,EAAErB,IAAI,KAAK;AAC7CA,EAAAA,IAAI,CAAC,WAAW,EAAEqB,IAAI,CAAC;AACxB,CAAC;AAEM,MAAMoB,oBAAoB,GAAGA,CAACpB,IAAI,EAAErB,IAAI,KAAK;AACnDA,EAAAA,IAAI,CAAC,aAAa,EAAEqB,IAAI,CAAC;AAC1B,CAAC;AAEM,MAAMqB,WAAW,GAAGA,CAACvE,KAAK,EAAEwE,YAAY,EAAEC,kBAAkB,EAAE5C,IAAI,KAAK;EAC7E,MAAM6C,WAAW,GAAG1E,KAAK,KAAK,MAAM,GAAG,SAAS,GAAG,SAAS;EAC5D,MAAM2E,SAAS,GAAG,SAAS;EAC3BH,YAAY,CAACE,WAAW,CAAC;EACzBD,kBAAkB,CAACE,SAAS,CAAC;EAC7B9C,IAAI,CAAC,cAAc,CAAC;AACrB,CAAC;;AC5DM,MAAM+C,eAAe,GAAGA,CAACC,SAAS,EAAEC,YAAY,EAAEC,SAAS,EAAElD,IAAI,EAAEmD,kBAAkB,EAAEC,YAAY,KAAK;AAC9G,EAAA,MAAMC,QAAQ,GAAGvD,UAAU,CAACkD,SAAS,IAAI,EAAE,CAAC;EAC5C,MAAMM,aAAa,GAAGL,YAAY,GAAG,YAAYA,YAAY,CAAA,CAAE,GAAG,gBAAgB;EAClF,MAAMM,SAAS,GAAG,CAAA,0CAAA,EAA6CL,SAAS,kBAAkBI,aAAa,CAAA,EAAA,EAAKD,QAAQ,CAAA,aAAA,CAAe;AACnIrD,EAAAA,IAAI,CAAC,YAAY,EAAEuD,SAAS,CAAC;EAC7BJ,kBAAkB,CAAC,KAAK,CAAC;EACzBC,YAAY,CAAC,EAAE,CAAC;AACjB,CAAC;AAEM,MAAMI,UAAU,GAAIxD,IAAI,IAAK;EACnC,MAAMyD,GAAG,GAAGhC,MAAM,CAACiC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC;EAClD,IAAI,CAACD,GAAG,EAAE;AACVzD,EAAAA,IAAI,CAAC,YAAY,EAAEyD,GAAG,CAAC;AACxB,CAAC;AAEM,MAAME,aAAa,GAAGA,CAAC1D,SAAS,EAAEC,OAAO,EAAE5B,QAAQ,EAAE6B,kBAAkB,KAAK;AAClF,EAAA,MAAMqB,SAAS,GAAGC,MAAM,CAACC,YAAY,EAAE;EACvC,IAAI,CAACF,SAAS,IAAIA,SAAS,CAACG,UAAU,KAAK,CAAC,EAAE;AAC9C,EAAA,MAAMiC,YAAY,GAAGpC,SAAS,CAACqC,QAAQ,EAAE;EACzC,IAAI,CAACD,YAAY,EAAE;IAClBzC,KAAK,CAAC,+BAA+B,CAAC;AACtC,IAAA;AACD,EAAA;EACA,MAAM2C,OAAO,GAAGrC,MAAM,CAACiC,MAAM,CAAC,yBAAyB,EAAE,EAAE,CAAC;EAC5D,IAAI,CAACI,OAAO,EAAE;AAEd,EAAA,MAAMlC,KAAK,GAAGJ,SAAS,CAACK,UAAU,CAAC,CAAC,CAAC;AACrC,EAAA,MAAMkC,IAAI,GAAGzD,QAAQ,CAAClB,aAAa,CAAC,MAAM,CAAC;EAC3C2E,IAAI,CAAC1E,SAAS,GAAG,aAAa;EAC9B0E,IAAI,CAACC,KAAK,GAAGF,OAAO;EAEpB,IAAI;AACHlC,IAAAA,KAAK,CAACqC,gBAAgB,CAACF,IAAI,CAAC;AAC7B,EAAA,CAAC,CAAC,MAAM;AACP;IACAA,IAAI,CAACG,WAAW,CAACtC,KAAK,CAACuC,eAAe,EAAE,CAAC;AACzCvC,IAAAA,KAAK,CAACwC,UAAU,CAACL,IAAI,CAAC;AACvB,EAAA;EAEAvC,SAAS,CAAC6C,eAAe,EAAE;EAC3B,MAAM7D,QAAQ,GAAGP,SAAS,CAACG,OAAO,EAAEK,SAAS,IAAI,EAAE;EACnDP,OAAO,CAACM,QAAQ,CAAC;AACjBlC,EAAAA,QAAQ,CAAC;AAAEoC,IAAAA,IAAI,EAAEF,QAAQ;AAAEG,IAAAA,IAAI,EAAEV,SAAS,CAACG,OAAO,EAAEQ,SAAS,IAAI;AAAG,GAAC,CAAC;AACtET,EAAAA,kBAAkB,EAAE;AACrB,CAAC;AAEM,MAAMmE,YAAY,GAAItE,IAAI,IAAK;EACrC,MAAMuE,EAAE,GAAG9C,MAAM,CAACiC,MAAM,CAAC,iBAAiB,EAAE,EAAE,CAAC;EAC/C,IAAI,CAACa,EAAE,EAAE;EACT,MAAMC,WAAW,GAAGD,EAAE,CAACxE,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;EACrD,MAAM0E,UAAU,GAAG,CAAA,gCAAA,EAAmCD,WAAW,kBAAkBA,WAAW,CAAA,GAAA,EAAMA,WAAW,CAAA,OAAA,CAAS;AACxHxE,EAAAA,IAAI,CAAC,YAAY,EAAEyE,UAAU,CAAC;AAC/B,CAAC;AAEM,MAAMC,QAAQ,GAAI1E,IAAI,IAAK;AACjCA,EAAAA,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC;AAC3B,CAAC;AAEM,MAAM2E,WAAW,GAAI3E,IAAI,IAAK;EACpC,MAAMyD,GAAG,GAAGhC,MAAM,CAACiC,MAAM,CAAC,iBAAiB,EAAE,UAAU,CAAC;EACxD,IAAI,CAACD,GAAG,EAAE;EACV,MAAMmB,GAAG,GAAGnD,MAAM,CAACiC,MAAM,CAAC,oCAAoC,EAAE,EAAE,CAAC;EACnE,MAAMmB,SAAS,GAAG,CAAA,UAAA,EAAapB,GAAG,UAAUmB,GAAG,IAAI,EAAE,CAAA,2CAAA,CAA6C;AAClG5E,EAAAA,IAAI,CAAC,YAAY,EAAE6E,SAAS,CAAC;AAC9B,CAAC;AAEM,MAAMC,WAAW,GAAI9E,IAAI,IAAK;EACpC,MAAMyD,GAAG,GAAGhC,MAAM,CAACiC,MAAM,CAAC,sCAAsC,EAAE,UAAU,CAAC;EAC7E,IAAI,CAACD,GAAG,EAAE;;AAEV;AACA,EAAA,MAAMsB,YAAY,GAAGtB,GAAG,CAACuB,KAAK,CAAC,kDAAkD,CAAC;AAClF,EAAA,IAAID,YAAY,EAAE;AACjB,IAAA,MAAME,OAAO,GAAGF,YAAY,CAAC,CAAC,CAAC;AAC/B,IAAA,MAAMG,SAAS,GAAG,CAAA,oEAAA,EAAuED,OAAO,CAAA,qKAAA,CAAuK;AACvQjF,IAAAA,IAAI,CAAC,YAAY,EAAEkF,SAAS,CAAC;AAC9B,EAAA,CAAC,MAAM;AACN;AACA,IAAA,MAAMC,SAAS,GAAG,CAAA,oEAAA,EAAuE1B,GAAG,CAAA,uEAAA,CAAyE;AACrKzD,IAAAA,IAAI,CAAC,YAAY,EAAEmF,SAAS,CAAC;AAC9B,EAAA;AACD,CAAC;;ACjFM,MAAMC,OAAO,GAAGA,CAACnF,SAAS,EAAEC,OAAO,EAAE5B,QAAQ,EAAE6B,kBAAkB,KAAK;EAC5E,MAAMK,QAAQ,GAAGP,SAAS,CAACG,OAAO,EAAEK,SAAS,IAAI,EAAE;EACnDP,OAAO,CAACM,QAAQ,CAAC;AACjBlC,EAAAA,QAAQ,CAAC;AAAEoC,IAAAA,IAAI,EAAEF,QAAQ;AAAEG,IAAAA,IAAI,EAAEV,SAAS,CAACG,OAAO,EAAEQ,SAAS,IAAI;AAAG,GAAC,CAAC;AACtET,EAAAA,kBAAkB,EAAE;AACrB,CAAC;AAEM,MAAMkF,OAAO,GAAGA,CAAC/F,KAAK,EAAEgG,UAAU,KAAK;EAC7C,IAAI,CAACA,UAAU,EAAE;EACjBhG,KAAK,CAACiG,cAAc,EAAE;EACtB,MAAM5E,IAAI,GAAGrB,KAAK,CAACkG,aAAa,CAACC,OAAO,CAAC,YAAY,CAAC;EACtDnF,QAAQ,CAACC,WAAW,CAAC,YAAY,EAAE,KAAK,EAAEI,IAAI,CAAC;AAChD,CAAC;AAEM,MAAM+E,wBAAwB,GAAGA,CAACzF,SAAS,EAAE0F,gBAAgB,EAAEC,gBAAgB,KAAK;AAC1F,EAAA,OAAO,MAAM;AACZ,IAAA,MAAMpE,SAAS,GAAGlB,QAAQ,CAACoB,YAAY,EAAE;AACzC,IAAA,IAAI,CAACF,SAAS,IAAIA,SAAS,CAACG,UAAU,KAAK,CAAC,IAAI,CAAC1B,SAAS,CAACG,OAAO,EAAE;AACpE,IAAA,MAAMyF,UAAU,GAAGrE,SAAS,CAACqE,UAAU;IACvC,MAAMC,cAAc,GAAGD,UAAU,IAAI5F,SAAS,CAACG,OAAO,CAAC2F,QAAQ,CAACF,UAAU,CAAC;IAC3E,IAAI,CAACC,cAAc,EAAE;MACpBH,gBAAgB,CAAC,EAAE,CAAC;MACpBC,gBAAgB,CAAC,EAAE,CAAC;AACpB,MAAA;AACD,IAAA;AACAD,IAAAA,gBAAgB,CAACnE,SAAS,CAACqC,QAAQ,EAAE,CAAC;IACtC,MAAMmC,UAAU,GAAG,EAAE;AACrBrG,IAAAA,QAAQ,CAACsC,OAAO,CAAEjD,IAAI,IAAK;MAC1B,IAAI;AACHgH,QAAAA,UAAU,CAAChH,IAAI,CAACY,GAAG,CAAC,GAAGU,QAAQ,CAAC2F,iBAAiB,CAACjH,IAAI,CAACY,GAAG,CAAC;AAC5D,MAAA,CAAC,CAAC,MAAM;AACPoG,QAAAA,UAAU,CAAChH,IAAI,CAACY,GAAG,CAAC,GAAG,KAAK;AAC7B,MAAA;AACD,IAAA,CAAC,CAAC;IACFgG,gBAAgB,CAACI,UAAU,CAAC;EAC7B,CAAC;AACF,CAAC;;AC7Bc,SAASE,MAAMA,CAAC;AAC9B/H,EAAAA,KAAK,GAAG,MAAM;EACdgI,KAAK,GAAGxG,QAAQ,CAACZ,GAAG,CAAEC,IAAI,IAAKA,IAAI,CAACY,GAAG,CAAC;AACxCwG,EAAAA,YAAY,GAAG,KAAK;AACpBC,EAAAA,WAAW,GAAG,IAAI;AAClBC,EAAAA,YAAY,GAAG,IAAI;AACnBC,EAAAA,SAAS,GAAG,IAAI;AAChBC,EAAAA,QAAQ,GAAG,IAAI;AACfC,EAAAA,WAAW,GAAG,IAAI;AAClBC,EAAAA,UAAU,GAAG,IAAI;AACjBC,EAAAA,MAAM,GAAG,IAAI;AACbC,EAAAA,SAAS,GAAG,IAAI;AAChBC,EAAAA,YAAY,GAAG,IAAI;AACnBC,EAAAA,SAAS,GAAG,IAAI;AAChBC,EAAAA,cAAc,GAAG,IAAI;AACrBC,EAAAA,SAAS,GAAG,IAAI;AAChBC,EAAAA,cAAc,GAAG,IAAI;AACrBC,EAAAA,SAAS,GAAG,KAAK;EACjBC,kBAAkB;AAClBC,EAAAA,YAAY,GAAG,IAAI;AACnBC,EAAAA,SAAS,GAAG,IAAI;AAChBC,EAAAA,YAAY,GAAG,IAAI;AACnBhJ,EAAAA,QAAQ,GAAGA,MAAM,CAAE,CAAC;AACpBiJ,EAAAA,WAAW,GAAG,EAAE;AAChBC,EAAAA;AACD,CAAC,EAAE;AACF,EAAA,IAAIC,SAAS;AACb,EAAA,IAAID,CAAC,EAAE;AACNC,IAAAA,SAAS,GAAGD,CAAC;AACd,EAAA,CAAC,MAAM;IACNC,SAAS,GAAIjI,GAAG,IAAK;AACpB,MAAA,MAAMkI,YAAY,GAAG;AACpBC,QAAAA,MAAM,EAAE,aAAa;AACrBC,QAAAA,IAAI,EAAE,MAAM;AACZC,QAAAA,IAAI,EAAE,MAAM;AACZC,QAAAA,MAAM,EAAE,QAAQ;AAChBC,QAAAA,SAAS,EAAE,WAAW;AACtB,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,WAAW,EAAE,WAAW;AACxBC,QAAAA,UAAU,EAAE,YAAY;AACxB,QAAA,YAAY,EAAE,YAAY;AAC1BC,QAAAA,IAAI,EAAE,MAAM;AACZC,QAAAA,MAAM,EAAE,QAAQ;AAChBC,QAAAA,IAAI,EAAE,MAAM;AACZ,QAAA,YAAY,EAAE,YAAY;AAC1BC,QAAAA,UAAU,EAAE,YAAY;AACxB,QAAA,kBAAkB,EAAE,kBAAkB;AACtC,QAAA,cAAc,EAAE,cAAc;AAC9B,QAAA,mBAAmB,EAAE,mBAAmB;AACxCC,QAAAA,KAAK,EAAE,OAAO;AACd,QAAA,YAAY,EAAE,YAAY;AAC1B,QAAA,cAAc,EAAE,cAAc;AAC9B,QAAA,aAAa,EAAE,aAAa;AAC5BC,QAAAA,OAAO,EAAE,SAAS;AAClB,QAAA,mCAAmC,EAAE,mCAAmC;AACxE,QAAA,eAAe,EAAE,eAAe;AAChC,QAAA,wBAAwB,EAAE,wBAAwB;AAClD,QAAA,gBAAgB,EAAE,gBAAgB;AAClC,QAAA,cAAc,EAAE,cAAc;AAC9B,QAAA,cAAc,EAAE,cAAc;AAC9B,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,qBAAqB,EAAE,qBAAqB;AAC5C,QAAA,iBAAiB,EAAE,iBAAiB;AACpC,QAAA,kBAAkB,EAAE,kBAAkB;AACtCC,QAAAA,KAAK,EAAE,OAAO;AACdC,QAAAA,UAAU,EAAE,YAAY;AACxBC,QAAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,cAAc,EAAE,cAAc;AAC9B,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,mBAAmB,EAAE,mBAAmB;AACxC,QAAA,sBAAsB,EAAE,sBAAsB;AAC9CC,QAAAA,MAAM,EAAE,QAAQ;AAChBC,QAAAA,MAAM,EAAE;OACR;AACD,MAAA,OAAOjB,YAAY,CAAClI,GAAG,CAAC,IAAIA,GAAG;IAChC,CAAC;AACF,EAAA;AAEA,EAAA,MAAMS,SAAS,GAAG2I,MAAM,CAAC,IAAI,CAAC;AAC9B;AACA,EAAA,MAAMC,iBAAiB,GAAGD,MAAM,CAAC,KAAK,CAAC;EACvC,MAAM,CAAClI,IAAI,EAAER,OAAO,CAAC,GAAG4I,QAAQ,CAAC,EAAE,CAAC;EACpC,MAAM,CAACxD,UAAU,EAAEyD,aAAa,CAAC,GAAGD,QAAQ,CAAC,IAAI,CAAC;EAClD,MAAM,CAACE,aAAa,EAAErD,gBAAgB,CAAC,GAAGmD,QAAQ,CAAC,EAAE,CAAC;EACtD,MAAM,CAACG,OAAO,EAAEC,UAAU,CAAC,GAAGJ,QAAQ,CAAC,GAAG,CAAC;EAC3C,MAAM,CAACzG,QAAQ,EAAE8G,WAAW,CAAC,GAAGL,QAAQ,CAAC,IAAI,CAAC;EAC9C,MAAM,CAACM,UAAU,EAAEC,aAAa,CAAC,GAAGP,QAAQ,CAAC,EAAE,CAAC;EAChD,MAAM,CAACQ,SAAS,EAAE3G,YAAY,CAAC,GAAGmG,QAAQ,CAAC,SAAS,CAAC;EACrD,MAAM,CAACS,eAAe,EAAE3G,kBAAkB,CAAC,GAAGkG,QAAQ,CAAC,SAAS,CAAC;EACjE,MAAM,CAACU,aAAa,EAAE5D,gBAAgB,CAAC,GAAGkD,QAAQ,CAAC,EAAE,CAAC;EACtD,MAAM,CAACW,YAAY,EAAEC,eAAe,CAAC,GAAGZ,QAAQ,CAAC,KAAK,CAAC;EACvD,MAAM,CAACa,eAAe,EAAExG,kBAAkB,CAAC,GAAG2F,QAAQ,CAAC,KAAK,CAAC;EAC7D,MAAM,CAAC9F,SAAS,EAAEI,YAAY,CAAC,GAAG0F,QAAQ,CAAC,EAAE,CAAC;EAC9C,MAAM,CAAC7F,YAAY,EAAE2G,eAAe,CAAC,GAAGd,QAAQ,CAAC,IAAI,CAAC;EACtD,MAAM,CAAC5F,SAAS,EAAE2G,YAAY,CAAC,GAAGf,QAAQ,CAAC3K,KAAK,CAAC;AAEjD2L,EAAAA,SAAS,CAAC,MAAM;IACfD,YAAY,CAAC1L,KAAK,CAAC;AACpB,EAAA,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;;AAEX;AACA;;AAEA,EAAA,MAAM4L,KAAK,GAAGpL,OAAO,CAAC,MAAM;IAC3B,MAAMgC,IAAI,GAAGV,SAAS,CAACG,OAAO,EAAEQ,SAAS,IAAI,EAAE;IAC/C,MAAM2H,KAAK,GAAG5H,IAAI,CAACqJ,IAAI,EAAE,GAAGrJ,IAAI,CAACqJ,IAAI,EAAE,CAACC,KAAK,CAAC,KAAK,CAAC,CAACnL,MAAM,GAAG,CAAC;IAC/D,OAAO;MACNyJ,KAAK;MACL2B,KAAK,EAAEvJ,IAAI,CAAC7B;KACZ;AACF,EAAA,CAAC,EAAE,CAAC4B,IAAI,CAAC,CAAC;EAEV,MAAMV,MAAI,GAAGA,CAACJ,GAAG,EAAE9B,KAAK,GAAG,IAAI,KAAK;AACnCyC,IAAAA,IAAW,CAACN,SAAS,EAAEL,GAAG,EAAE9B,KAAK,EAAEoC,OAAO,EAAE5B,QAAQ,EAAE6B,kBAAkB,CAAC;EAC1E,CAAC;EAED,MAAMiB,cAAY,GAAIC,IAAI,IAAK;IAC9B6H,UAAU,CAAC7H,IAAI,CAAC;AAChB8I,IAAAA,YAAkB,CAAC9I,IAAI,EAAErB,MAAI,CAAC;EAC/B,CAAC;EAED,MAAMuB,eAAa,GAAIF,IAAI,IAAK;IAC/B,IAAIA,IAAI,KAAK,QAAQ,EAAE;MACtB8H,WAAW,CAAC,QAAQ,CAAC;AACrB,MAAA;AACD,IAAA;IACAA,WAAW,CAAC9H,IAAI,CAAC;IACjB+I,aAAmB,CAAC/I,IAAI,EAAErB,MAAI,EAAEC,SAAS,EAAEC,OAAO,EAAEC,kBAAkB,CAAC;EACxE,CAAC;EAED,MAAMmC,qBAAmB,GAAIxE,KAAK,IAAK;IACtCuL,aAAa,CAACvL,KAAK,CAAC;IACpBuM,mBAAyB,CAACvM,KAAK,EAAEkC,MAAI,EAAEC,SAAS,EAAEC,OAAO,EAAEC,kBAAkB,CAAC;EAC/E,CAAC;EAED,MAAMqC,gBAAc,GAAInB,IAAI,IAAK;IAChCsB,YAAY,CAACtB,IAAI,CAAC;AAClBiJ,IAAAA,cAAoB,CAACjJ,IAAI,EAAErB,MAAI,CAAC;EACjC,CAAC;EAED,MAAMyC,sBAAoB,GAAIpB,IAAI,IAAK;IACtCuB,kBAAkB,CAACvB,IAAI,CAAC;AACxBkJ,IAAAA,oBAA0B,CAAClJ,IAAI,EAAErB,MAAI,CAAC;EACvC,CAAC;EAED,MAAM0C,aAAW,GAAGA,MAAM;IACzB8H,WAAiB,CAACrM,KAAK,EAAEwE,YAAY,EAAEC,kBAAkB,EAAE5C,MAAI,CAAC;EACjE,CAAC;EAED,MAAM+C,iBAAe,GAAGA,MAAM;AAC7B0H,IAAAA,eAAsB,CAACzH,SAAS,EAAEC,YAAY,EAAEC,SAAS,EAAElD,MAAI,EAAEmD,kBAAkB,EAAEC,YAAY,CAAC;EACnG,CAAC;EAED,MAAMI,YAAU,GAAGA,MAAM;IACxBkH,UAAiB,CAAC1K,MAAI,CAAC;EACxB,CAAC;EAED,MAAM2D,eAAa,GAAGA,MAAM;IAC3BgH,aAAoB,CAAC1K,SAAS,EAAEC,OAAO,EAAE5B,QAAQ,EAAE6B,kBAAkB,CAAC;EACvE,CAAC;EAED,MAAMmE,cAAY,GAAGA,MAAM;IAC1BsG,YAAmB,CAAC5K,MAAI,CAAC;EAC1B,CAAC;EAED,MAAM0E,UAAQ,GAAGA,MAAM;IACtBmG,QAAe,CAAC7K,MAAI,CAAC;EACtB,CAAC;EAED,MAAM2E,aAAW,GAAGA,MAAM;IACzBmG,WAAkB,CAAC9K,MAAI,CAAC;EACzB,CAAC;EAED,MAAM8E,aAAW,GAAGA,MAAM;IACzBiG,WAAkB,CAAC/K,MAAI,CAAC;EACzB,CAAC;EAED,MAAMgL,gBAAgB,GAAGA,MAAM;IAC9BtB,eAAe,CAAC,CAACD,YAAY,CAAC;EAC/B,CAAC;AAED,EAAA,MAAMwB,YAAY,GAAGA,MAAMjL,MAAI,CAAC,cAAc,CAAC;EAE/C,MAAMa,UAAQ,GAAGA,MAAM;IACtBqK,QAAe,CAACjL,SAAS,EAAEC,OAAO,EAAE5B,QAAQ,EAAE6B,kBAAkB,CAAC;EAClE,CAAC;EAED,MAAMiF,SAAO,GAAGA,MAAM;IACrB+F,OAAW,CAAClL,SAAS,EAAEC,OAAO,EAAE5B,QAAQ,EAAE6B,kBAAkB,CAAC;AAC7D;IACA,MAAMiL,KAAK,GAAGnL,SAAS,CAACG,OAAO,EAAE4B,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE;AAC5DoJ,IAAAA,KAAK,CAACnJ,OAAO,CAAEoJ,IAAI,IAAK;AACvB,MAAA,IAAI,CAACA,IAAI,CAACC,YAAY,CAAC,eAAe,CAAC,EAAE;AACxCD,QAAAA,IAAI,CAACE,YAAY,CAAC,eAAe,EAAE,8BAA8B,CAAC;AACnE,MAAA;AACD,IAAA,CAAC,CAAC;EACH,CAAC;EAED,MAAMlG,SAAO,GAAI/F,KAAK,IAAK;AAC1BkM,IAAAA,OAAW,CAAClM,KAAK,EAAEgG,UAAU,CAAC;EAC/B,CAAC;EAED,MAAMmG,aAAa,GAAInM,KAAK,IAAK;IAChC,IAAIA,KAAK,CAACC,MAAM,CAACmM,OAAO,KAAK,GAAG,KAAKpM,KAAK,CAACqM,OAAO,IAAIrM,KAAK,CAACsM,QAAQ,IAAItM,KAAK,CAACuM,OAAO,CAAC,EAAE;MACvF,MAAMC,IAAI,GAAGxM,KAAK,CAACC,MAAM,CAAC+L,YAAY,CAAC,MAAM,CAAC;AAC9C,MAAA,IAAIQ,IAAI,EAAE;QACTxM,KAAK,CAACiG,cAAc,EAAE;AACtB9D,QAAAA,MAAM,CAACsK,IAAI,CAACD,IAAI,EAAE,QAAQ,CAAC;AAC5B,MAAA;AACD,IAAA;EACD,CAAC;AAED,EAAA,MAAM3L,kBAAkB,GAAG6L,WAAW,CACrCtG,wBAAwB,CAACzF,SAAS,EAAE0F,gBAAgB,EAAEC,gBAAgB,CAAC,EACvE,EACD,CAAC;AAEDkE,EAAAA,SAAS,CAAC,MAAM;AACfxJ,IAAAA,QAAQ,CAAC2L,gBAAgB,CAAC,iBAAiB,EAAE9L,kBAAkB,CAAC;IAChE,OAAO,MAAMG,QAAQ,CAAC4L,mBAAmB,CAAC,iBAAiB,EAAE/L,kBAAkB,CAAC;AACjF,EAAA,CAAC,EAAE,CAACA,kBAAkB,CAAC,CAAC;;AAExB;AACA;AACA2J,EAAAA,SAAS,CAAC,MAAM;IACf,IAAI,CAAC7J,SAAS,CAACG,OAAO,IAAIyI,iBAAiB,CAACzI,OAAO,EAAE;;AAErD;AACA;AACA,IAAA,IAAImH,WAAW,EAAE;AAChBtH,MAAAA,SAAS,CAACG,OAAO,CAACK,SAAS,GAAG8G,WAAW;MACzCrH,OAAO,CAACqH,WAAW,CAAC;MACpB,MAAM6D,KAAK,GAAGnL,SAAS,CAACG,OAAO,EAAE4B,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE;AAC5DoJ,MAAAA,KAAK,CAACnJ,OAAO,CAAEoJ,IAAI,IAAK;AACvB,QAAA,IAAI,CAACA,IAAI,CAACC,YAAY,CAAC,eAAe,CAAC,EAAE;AACxCD,UAAAA,IAAI,CAACE,YAAY,CAAC,eAAe,EAAE,8BAA8B,CAAC;AACnE,QAAA;AACD,MAAA,CAAC,CAAC;AACFpL,MAAAA,kBAAkB,EAAE;MACpB,IAAI;QAAE7B,QAAQ,CAACiJ,WAAW,CAAC;MAAE,CAAC,CAAC,MAAM,WAAE;MACvCsB,iBAAiB,CAACzI,OAAO,GAAG,IAAI;AAChC,MAAA;AACD,IAAA;AAEA,IAAA,IAAIgG,YAAY,EAAE;AACjBnG,MAAAA,SAAS,CAACG,OAAO,CAACK,SAAS,GAAGf,YAAY;AAC1CQ,MAAAA,OAAO,CAACD,SAAS,CAACG,OAAO,CAACK,SAAS,CAAC;MACpC,MAAM2K,KAAK,GAAGnL,SAAS,CAACG,OAAO,EAAE4B,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE;AAC5DoJ,MAAAA,KAAK,CAACnJ,OAAO,CAAEoJ,IAAI,IAAK;AACvB,QAAA,IAAI,CAACA,IAAI,CAACC,YAAY,CAAC,eAAe,CAAC,EAAE;AACxCD,UAAAA,IAAI,CAACE,YAAY,CAAC,eAAe,EAAE,8BAA8B,CAAC;AACnE,QAAA;AACD,MAAA,CAAC,CAAC;AACFpL,MAAAA,kBAAkB,EAAE;MACpB0I,iBAAiB,CAACzI,OAAO,GAAG,IAAI;AACjC,IAAA;EACD,CAAC,EAAE,CAACmH,WAAW,EAAEnB,YAAY,EAAE9H,QAAQ,EAAE6B,kBAAkB,CAAC,CAAC;AAE7D,EAAA,MAAMW,YAAU,GAAG,YAAY;IAC9B,MAAMqL,UAAiB,CAAClM,SAAS,CAAC;EACnC,CAAC;EAED,MAAMmM,cAAc,GAAGzN,OAAO,CAC7B,MAAMgB,QAAQ,CAAC0M,MAAM,CAAErN,IAAI,IAAKmH,KAAK,CAACmG,QAAQ,CAACtN,IAAI,CAACY,GAAG,CAAC,CAAC,EACzD,CAACuG,KAAK,CACP,CAAC;EAED,oBACChH,KAAA,CAAAC,aAAA,CAAA,SAAA,EAAA;AACCC,IAAAA,SAAS,EAAE,CAAA,kBAAA,EAAqBlB,KAAK,CAAA,EAAGiJ,YAAY,GAAG,eAAe,GAAG,aAAa,GAAGqC,YAAY,GAAG,aAAa,GAAG,EAAE,CAAA,CAAG;IAC7H,YAAA,EAAYtL;GAAM,eAElBgB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC;AAAS,GAAA,EACtBwH,YAAY,iBACZ1H,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAoN,QAAA,EAAA,IAAA,eACCpN,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC;GAAe,eAC7BF,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACCoN,IAAAA,IAAI,EAAC,QAAQ;AACbnN,IAAAA,SAAS,EAAC,aAAa;AACvBoN,IAAAA,OAAO,EAAEA,MAAMzM,MAAI,CAAC,MAAM,CAAE;IAC5BgE,KAAK,EAAEyD,SAAS,CAAC,MAAM;AAAE,GAAA,EACzB,QAEO,CAAC,eACTtI,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACCoN,IAAAA,IAAI,EAAC,QAAQ;AACbnN,IAAAA,SAAS,EAAC,aAAa;AACvBoN,IAAAA,OAAO,EAAEA,MAAMzM,MAAI,CAAC,MAAM,CAAE;IAC5BgE,KAAK,EAAEyD,SAAS,CAAC,MAAM;AAAE,GAAA,EACzB,QAEO,CACJ,CAAC,eACNtI,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMC,IAAAA,SAAS,EAAC;GAAmB,EAAC,GAAO,CAC1C,CACF,EACA+M,cAAc,CAACtN,MAAM,GAAG,CAAC,iBACzBK,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAoN,QAAA,EAAA,IAAA,eACCpN,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC;GAAe,EAC5B+M,cAAc,CAACrN,GAAG,CAAEC,IAAI,iBACxBG,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;IACCI,GAAG,EAAER,IAAI,CAACY,GAAI;AACd4M,IAAAA,IAAI,EAAC,QAAQ;AACbnN,IAAAA,SAAS,EAAE,CAAA,WAAA,EAAcmK,aAAa,CAACxK,IAAI,CAACY,GAAG,CAAC,GAAG,SAAS,GAAG,EAAE,CAAA,CAAG;AACpE8M,IAAAA,WAAW,EAAGpN,KAAK,IAAKA,KAAK,CAACiG,cAAc,EAAG;IAC/CkH,OAAO,EAAEA,MAAMzM,MAAI,CAAChB,IAAI,CAACY,GAAG,CAAE;AAC9BoE,IAAAA,KAAK,EAAEyD,SAAS,CAACzI,IAAI,CAACjB,KAAK,CAAE;AAC7B,IAAA,cAAA,EAAcyL,aAAa,CAACxK,IAAI,CAACY,GAAG,CAAC,IAAI;GAAM,EAE9CZ,IAAI,CAACa,IACC,CACR,CACG,CAAC,eACNV,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMC,IAAAA,SAAS,EAAC;GAAmB,EAAC,GAAO,CAC1C,CACF,EACA,CAACgH,WAAW,IAAIC,YAAY,IAAIU,SAAS,kBACzC7H,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAoN,QAAA,EAAA,IAAA,eACCpN,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC;AAAe,GAAA,EAC7BgH,WAAW,iBACXlH,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAOC,IAAAA,SAAS,EAAC;AAAe,GAAA,EAC9BoI,SAAS,CAAC,QAAQ,CAAC,eACpBtI,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACCtB,IAAAA,KAAK,EAAEmL,OAAQ;IACf3K,QAAQ,EAAGgB,KAAK,IAAK8B,cAAY,CAAC9B,KAAK,CAACC,MAAM,CAACzB,KAAK,CAAE;AACtDuB,IAAAA,SAAS,EAAC;GAAgB,eAE1BF,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQtB,IAAAA,KAAK,EAAC;GAAG,EAAE2J,SAAS,CAAC,WAAW,CAAU,CAAC,eACnDtI,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQtB,IAAAA,KAAK,EAAC;GAAI,EAAE2J,SAAS,CAAC,WAAW,CAAU,CAAC,eACpDtI,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQtB,IAAAA,KAAK,EAAC;GAAI,EAAE2J,SAAS,CAAC,WAAW,CAAU,CAAC,eACpDtI,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQtB,IAAAA,KAAK,EAAC;GAAI,EAAE2J,SAAS,CAAC,WAAW,CAAU,CAAC,eACpDtI,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQtB,IAAAA,KAAK,EAAC;GAAI,EAAE2J,SAAS,CAAC,WAAW,CAAU,CAAC,eACpDtI,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQtB,IAAAA,KAAK,EAAC;GAAY,EAAE2J,SAAS,CAAC,YAAY,CAAU,CAAC,EAC5DP,SAAS,iBAAI/H,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQtB,IAAAA,KAAK,EAAC;AAAK,GAAA,EAAE2J,SAAS,CAAC,YAAY,CAAU,CAC5D,CACF,CACP,EACAnB,YAAY,iBACZnH,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAOC,IAAAA,SAAS,EAAC;AAAe,GAAA,EAC9BoI,SAAS,CAAC,MAAM,CAAC,eAClBtI,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACCtB,IAAAA,KAAK,EAAEuE,QAAS;IAChB/D,QAAQ,EAAGgB,KAAK,IAAKiC,eAAa,CAACjC,KAAK,CAACC,MAAM,CAACzB,KAAK,CAAE;AACvDuB,IAAAA,SAAS,EAAC;GAAgB,eAE1BF,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQtB,IAAAA,KAAK,EAAC;AAAI,GAAA,EAAC,MAAY,CAAC,eAChCqB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQtB,IAAAA,KAAK,EAAC;AAAI,GAAA,EAAC,MAAY,CAAC,eAChCqB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQtB,IAAAA,KAAK,EAAC;AAAI,GAAA,EAAC,MAAY,CAAC,eAChCqB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQtB,IAAAA,KAAK,EAAC;AAAI,GAAA,EAAC,MAAY,CAAC,eAChCqB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQtB,IAAAA,KAAK,EAAC;AAAI,GAAA,EAAC,MAAY,CAAC,eAChCqB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQtB,IAAAA,KAAK,EAAC;AAAI,GAAA,EAAC,MAAY,CAAC,eAChCqB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQtB,IAAAA,KAAK,EAAC;AAAI,GAAA,EAAC,MAAY,CAAC,eAChCqB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQtB,IAAAA,KAAK,EAAC;AAAI,GAAA,EAAC,MAAY,CAAC,eAChCqB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQtB,IAAAA,KAAK,EAAC;AAAI,GAAA,EAAC,MAAY,CAAC,eAChCqB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQtB,IAAAA,KAAK,EAAC;AAAI,GAAA,EAAC,MAAY,CAAC,eAChCqB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQtB,IAAAA,KAAK,EAAC;AAAI,GAAA,EAAC,MAAY,CAAC,eAChCqB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQtB,IAAAA,KAAK,EAAC;AAAI,GAAA,EAAC,MAAY,CAAC,eAChCqB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQtB,IAAAA,KAAK,EAAC;AAAQ,GAAA,EAAE2J,SAAS,CAAC,QAAQ,CAAU,CAC7C,CACF,CACP,EACAnB,YAAY,IAAIjE,QAAQ,KAAK,QAAQ,iBACrClD,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAOC,IAAAA,SAAS,EAAC;GAAe,eAC/BF,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AACCoN,IAAAA,IAAI,EAAC,QAAQ;AACbG,IAAAA,GAAG,EAAC,GAAG;AACPC,IAAAA,GAAG,EAAC,KAAK;AACT9O,IAAAA,KAAK,EAAEsL,UAAW;IAClB9K,QAAQ,EAAGgB,KAAK,IAAKgD,qBAAmB,CAAChD,KAAK,CAACC,MAAM,CAACzB,KAAK,CAAE;AAC7DW,IAAAA,WAAW,EAAEgJ,SAAS,CAAC,MAAM,CAAE;AAC/BpI,IAAAA,SAAS,EAAC,eAAe;AACzB+C,IAAAA,KAAK,EAAE;AAAEyK,MAAAA,KAAK,EAAE;AAAO;AAAE,GACzB,CAAC,EAAA,IAEI,CACP,EACA7F,SAAS,iBACT7H,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAoN,QAAA,EAAA,IAAA,eACCpN,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAOC,IAAAA,SAAS,EAAC;AAA2B,GAAA,EAC1CoI,SAAS,CAAC,MAAM,CAAC,eAClBtI,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AACCoN,IAAAA,IAAI,EAAC,OAAO;AACZnN,IAAAA,SAAS,EAAC,eAAe;AACzBvB,IAAAA,KAAK,EAAEwL,SAAU;IACjBhL,QAAQ,EAAGgB,KAAK,IAAKkD,gBAAc,CAAClD,KAAK,CAACC,MAAM,CAACzB,KAAK,CAAE;IACxD,YAAA,EAAY2J,SAAS,CAAC,YAAY;AAAE,GACpC,CACK,CAAC,eACRtI,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAOC,IAAAA,SAAS,EAAC;AAA2B,GAAA,EAC1CoI,SAAS,CAAC,YAAY,CAAC,eACxBtI,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AACCoN,IAAAA,IAAI,EAAC,OAAO;AACZnN,IAAAA,SAAS,EAAC,eAAe;AACzBvB,IAAAA,KAAK,EAAEyL,eAAgB;IACvBjL,QAAQ,EAAGgB,KAAK,IAAKmD,sBAAoB,CAACnD,KAAK,CAACC,MAAM,CAACzB,KAAK,CAAE;IAC9D,YAAA,EAAY2J,SAAS,CAAC,kBAAkB;AAAE,GAC1C,CACK,CAAC,eACRtI,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACCoN,IAAAA,IAAI,EAAC,QAAQ;AACbnN,IAAAA,SAAS,EAAC,+BAA+B;AACzCoN,IAAAA,OAAO,EAAE/J,aAAY;IACrBsB,KAAK,EAAEyD,SAAS,CAAC,cAAc;GAAE,EACjC,QAEO,CACP,CACF,EACAP,SAAS,iBACT/H,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACCoN,IAAAA,IAAI,EAAC,QAAQ;AACbnN,IAAAA,SAAS,EAAC,aAAa;IACvBoN,OAAO,EAAEA,MAAM;MACd5C,YAAY,CAAC1L,KAAK,CAAC;MACnBgF,kBAAkB,CAAC,IAAI,CAAC;IACzB,CAAE;IACFa,KAAK,EAAEyD,SAAS,CAAC,mBAAmB;GAAE,EAErCA,SAAS,CAAC,YAAY,CAChB,CACR,EACAlB,SAAS,iBACTpH,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC;AAAe,GAAA,EAC5BoI,SAAS,CAAC,OAAO,CAAC,eACnBtI,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC;GAAe,eAC7BF,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACCoN,IAAAA,IAAI,EAAC,QAAQ;AACbnN,IAAAA,SAAS,EAAC,+BAA+B;AACzCoN,IAAAA,OAAO,EAAEA,MAAMzM,MAAI,CAAC,aAAa,CAAE;IACnCgE,KAAK,EAAEyD,SAAS,CAAC,YAAY;AAAE,GAAA,EAC/B,QAEO,CAAC,eACTtI,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACCoN,IAAAA,IAAI,EAAC,QAAQ;AACbnN,IAAAA,SAAS,EAAC,+BAA+B;AACzCoN,IAAAA,OAAO,EAAEA,MAAMzM,MAAI,CAAC,eAAe,CAAE;IACrCgE,KAAK,EAAEyD,SAAS,CAAC,cAAc;AAAE,GAAA,EACjC,QAEO,CAAC,eACTtI,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACCoN,IAAAA,IAAI,EAAC,QAAQ;AACbnN,IAAAA,SAAS,EAAC,+BAA+B;AACzCoN,IAAAA,OAAO,EAAEA,MAAMzM,MAAI,CAAC,cAAc,CAAE;IACpCgE,KAAK,EAAEyD,SAAS,CAAC,aAAa;AAAE,GAAA,EAChC,QAEO,CAAC,eACTtI,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACCoN,IAAAA,IAAI,EAAC,QAAQ;AACbnN,IAAAA,SAAS,EAAC,+BAA+B;AACzCoN,IAAAA,OAAO,EAAEA,MAAMzM,MAAI,CAAC,aAAa,CAAE;IACnCgE,KAAK,EAAEyD,SAAS,CAAC,SAAS;GAAE,EAC5B,QAEO,CACJ,CACD,CAEF,CAAC,eACNtI,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMC,IAAAA,SAAS,EAAC;GAAmB,EAAC,GAAO,CAC1C,CACD,EACA,CAACmH,QAAQ,IAAIC,WAAW,IAAIC,UAAU,IAAIC,MAAM,IAAIC,SAAS,IAAIE,SAAS,kBAC1E3H,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAoN,QAAA,EAAA,IAAA,eACApN,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC;AAAe,GAAA,EAC5BmH,QAAQ,iBACRrH,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQoN,IAAAA,IAAI,EAAC,QAAQ;AAACnN,IAAAA,SAAS,EAAC,aAAa;AAACoN,IAAAA,OAAO,EAAEjJ;AAAW,GAAA,EAAC,cAE3D,CACR,EACAiD,WAAW,iBACXtH,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQoN,IAAAA,IAAI,EAAC,QAAQ;AAACnN,IAAAA,SAAS,EAAC,aAAa;AAACoN,IAAAA,OAAO,EAAE9I,eAAc;IAACK,KAAK,EAAEyD,SAAS,CAAC,mCAAmC;AAAE,GAAA,EAAC,cAErH,CACR,EACAf,UAAU,iBACVvH,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQoN,IAAAA,IAAI,EAAC,QAAQ;AAACnN,IAAAA,SAAS,EAAC,aAAa;AAACoN,IAAAA,OAAO,EAAEnI,cAAa;IAACN,KAAK,EAAEyD,SAAS,CAAC,eAAe;AAAE,GAAA,EAAC,QAEhG,CACR,EACAd,MAAM,iBACNxH,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQoN,IAAAA,IAAI,EAAC,QAAQ;AAACnN,IAAAA,SAAS,EAAC,aAAa;AAACoN,IAAAA,OAAO,EAAE/H,UAAS;IAACV,KAAK,EAAEyD,SAAS,CAAC,wBAAwB;AAAE,GAAA,EAAC,QAErG,CACR,EACAb,SAAS,iBACTzH,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAoN,QAAA,EAAA,IAAA,eACCpN,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQoN,IAAAA,IAAI,EAAC,QAAQ;AAACnN,IAAAA,SAAS,EAAC,aAAa;AAACoN,IAAAA,OAAO,EAAE9H,aAAY;IAACX,KAAK,EAAEyD,SAAS,CAAC,gBAAgB;AAAE,GAAA,EAAC,oBAEhG,CAAC,eACTtI,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQoN,IAAAA,IAAI,EAAC,QAAQ;AAACnN,IAAAA,SAAS,EAAC,aAAa;AAACoN,IAAAA,OAAO,EAAE3H,aAAY;IAACd,KAAK,EAAEyD,SAAS,CAAC,cAAc;AAAE,GAAA,EAAC,cAE9F,CACP,CACF,EACAX,SAAS,iBACT3H,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAoN,QAAA,EAAA,IAAA,eACCpN,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQoN,IAAAA,IAAI,EAAC,QAAQ;AAACnN,IAAAA,SAAS,EAAC,aAAa;AAACoN,IAAAA,OAAO,EAAExB;GAAa,EAClExD,SAAS,CAAC,cAAc,CAClB,CAAC,eACTtI,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQoN,IAAAA,IAAI,EAAC,QAAQ;AAACnN,IAAAA,SAAS,EAAC,oBAAoB;AAACoN,IAAAA,OAAO,EAAE5L;GAAS,EACrE4G,SAAS,CAAC,WAAW,CACf,CACP,CAEC,CAAC,eACNtI,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMC,IAAAA,SAAS,EAAC;GAAmB,EAAC,GAAO,CAC1C,CACD,EACA0H,cAAc,iBACd5H,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC;GAAsB,eACpCF,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAOC,IAAAA,SAAS,EAAC;GAAY,eAC5BF,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AACCoN,IAAAA,IAAI,EAAC,UAAU;AACfM,IAAAA,OAAO,EAAExH,UAAW;IACpBhH,QAAQ,EAAGgB,KAAK,IAAKyJ,aAAa,CAACzJ,KAAK,CAACC,MAAM,CAACuN,OAAO;AAAE,GACzD,CAAC,EACDrF,SAAS,CAAC,qBAAqB,CAC1B,CACH,CACL,EACAR,cAAc,iBACd9H,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC;GAAe,eAC7BF,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACCoN,IAAAA,IAAI,EAAC,QAAQ;AACbnN,IAAAA,SAAS,EAAC,aAAa;AACvBoN,IAAAA,OAAO,EAAEzB,gBAAiB;IAC1BhH,KAAK,EAAEyF,YAAY,GAAGhC,SAAS,CAAC,iBAAiB,CAAC,GAAGA,SAAS,CAAC,kBAAkB;GAAE,EAElFgC,YAAY,GAAG,GAAG,GAAG,GACf,CACJ,CAEF,CAAC,eAENtK,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC;GAAa,eAC3BF,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACC2N,IAAAA,GAAG,EAAE9M,SAAU;AACfZ,IAAAA,SAAS,EAAC,gBAAgB;IAC1B2N,eAAe,EAAA,IAAA;AACf5H,IAAAA,OAAO,EAAEA,SAAQ;AACjBC,IAAAA,OAAO,EAAEA,SAAQ;AAClBoH,IAAAA,OAAO,EAAEhB,aAAc;AACvBwB,IAAAA,OAAO,EAAE9M,kBAAmB;AAC5B+M,IAAAA,SAAS,EAAE/M,kBAAmB;IAC9BgN,8BAA8B,EAAA,IAAA;IAC9B1N,UAAU,EAAA;GACV,CACG,CAAC,EAEJ,CAAC4H,SAAS,IAAIC,YAAY,kBAC1BnI,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQC,IAAAA,SAAS,EAAC;AAAe,GAAA,EAC/BgI,SAAS,iBACTlI,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC;AAAc,GAAA,eAC5BF,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA,IAAA,EAAO2K,KAAK,CAACxB,KAAK,EAAC,GAAC,EAACd,SAAS,CAAC,OAAO,CAAQ,CAAC,eAC/CtI,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA,IAAA,EAAO2K,KAAK,CAACG,KAAK,EAAC,GAAC,EAACzC,SAAS,CAAC,YAAY,CAAQ,CAAC,eACpDtI,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA,IAAA,EAAO4J,aAAa,GAAG,CAAA,EAAGA,aAAa,CAAClK,MAAM,CAAA,CAAA,EAAI2I,SAAS,CAAC,UAAU,CAAC,CAAA,CAAE,GAAGA,SAAS,CAAC,cAAc,CAAQ,CACxG,CACL,EACAH,YAAY,iBACZnI,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC;GAAgB,eAC9BF,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQoN,IAAAA,IAAI,EAAC,QAAQ;AAACnN,IAAAA,SAAS,EAAC,aAAa;AAACoN,IAAAA,OAAO,EAAE3L;AAAW,GAAA,EAChE2G,SAAS,CAAC,WAAW,CACf,CACJ,CAEC,CACR,EAEAL,YAAY,iBACZjI,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAOC,IAAAA,SAAS,EAAC;GAAgB,eAChCF,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC;AAAc,GAAA,EAAEqB,IAAU,CAAC,eAC1CvB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC;AAAgB,GAAA,EAAEoI,SAAS,CAAC,WAAW,CAAO,CACvD,CACP,EAEAP,SAAS,IAAIyC,eAAe,iBAC5BxK,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,gBAAgB;AAAC+N,IAAAA,IAAI,EAAC,QAAQ;IAAC,YAAA,EAAW;GAAM,eAC9DjO,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC;GAAO,eACrBF,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC;GAAc,EAC3BoI,SAAS,CAAC,mBAAmB,CAC1B,CAAC,eACNtI,KAAA,CAAAC,aAAA,CAACnB,SAAS,EAAA;AACTH,IAAAA,KAAK,EAAEkF,SAAU;AACjB9E,IAAAA,QAAQ,EAAE+E,YAAa;AACvB9E,IAAAA,KAAK,EAAE+E,SAAU;AACjB9E,IAAAA,SAAS,EAAE+I,kBAAmB;AAC9B7I,IAAAA,QAAQ,EAAE8E,YAAa;AACvB7E,IAAAA,gBAAgB,EAAEqL,eAAgB;AAClCpL,IAAAA,aAAa,EAAEqL,YAAa;IAC5BpL,WAAW,EAAEgJ,SAAS,CAAC,sBAAsB;AAAE,GAC/C,CAAC,eACFtI,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC;GAAe,eAC7BF,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACCoN,IAAAA,IAAI,EAAC,QAAQ;AACbnN,IAAAA,SAAS,EAAC,aAAa;AACvBoN,IAAAA,OAAO,EAAEA,MAAMtJ,kBAAkB,CAAC,KAAK;GAAE,EAExCsE,SAAS,CAAC,QAAQ,CACZ,CAAC,eACTtI,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACCoN,IAAAA,IAAI,EAAC,QAAQ;AACbnN,IAAAA,SAAS,EAAC,aAAa;AACvBoN,IAAAA,OAAO,EAAE1J;GAAgB,EAExB0E,SAAS,CAAC,QAAQ,CACZ,CACJ,CACD,CACD,CAEE,CAAC;AAEZ;;ACnnBA;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trotl-texteditor",
3
- "version": "1.0.13",
3
+ "version": "1.0.17",
4
4
  "description": "Texteditor table UI",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.mjs",