@lyfie/luthor 2.6.5 → 2.6.7
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/README.md +1 -1
- package/dist/{LegacyRichEditor-nwNjxKl0.d.ts → LegacyRichEditor-B7tBYiAH.d.ts} +6 -6
- package/dist/chunk-GGHAGGFW.js +1 -0
- package/dist/chunk-PAT2MRHR.js +1 -0
- package/dist/chunk-QON7NKIG.js +18 -0
- package/dist/chunk-SQTZVN2Z.js +1 -0
- package/dist/chunk-UOUVJUX4.js +1 -0
- package/dist/chunk-VRLIR2L5.js +1 -0
- package/dist/{chunk-MNY5WN6Z.js → chunk-WM5NNMZA.js} +1 -1
- package/dist/chunk-X34BXP5N.js +1 -0
- package/dist/{chunk-UHC7J3PD.js → chunk-YF4OPS7P.js} +1 -1
- package/dist/{index-7HXwi2Zc.d.ts → index-BqE8djZV.d.ts} +4 -2
- package/dist/{index-DIFqz4Pg.d.ts → index-J754GpIL.d.ts} +12 -2
- package/dist/index.css +1 -1
- package/dist/index.d.ts +10 -8
- package/dist/index.js +1 -1
- package/dist/presets/compose/index.d.ts +1 -1
- package/dist/presets/compose/index.js +1 -1
- package/dist/presets/extensive/index.d.ts +2 -2
- package/dist/presets/extensive/index.js +1 -1
- package/dist/presets/headless-editor/index.d.ts +2 -2
- package/dist/presets/headless-editor/index.js +1 -1
- package/dist/presets/html-editor/index.d.ts +2 -2
- package/dist/presets/html-editor/index.js +1 -1
- package/dist/presets/legacy-rich/index.d.ts +2 -2
- package/dist/presets/legacy-rich/index.js +1 -1
- package/dist/presets/md-editor/index.d.ts +11 -11
- package/dist/presets/md-editor/index.js +1 -1
- package/dist/presets/simple-editor/index.d.ts +1 -1
- package/dist/presets/simple-editor/index.js +1 -1
- package/dist/presets/slash-editor/index.d.ts +1 -1
- package/dist/presets/slash-editor/index.js +1 -1
- package/package.json +4 -4
- package/dist/chunk-AQHHUIQ3.js +0 -1
- package/dist/chunk-CJUAF2ZJ.js +0 -1
- package/dist/chunk-GGNCG4TZ.js +0 -1
- package/dist/chunk-GL7DJO7R.js +0 -6
- package/dist/chunk-KUSWVTGG.js +0 -1
- package/dist/chunk-OYU7EEHU.js +0 -1
- package/dist/chunk-QR4BVSTW.js +0 -1
package/README.md
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import { E as ExtensiveEditorProps, F as FeatureFlagOverrides, a as ExtensiveEditorRef, T as ToolbarLayout } from './index-
|
|
2
|
+
import { E as ExtensiveEditorProps, F as FeatureFlagOverrides, a as ExtensiveEditorRef, T as ToolbarLayout } from './index-J754GpIL.js';
|
|
3
3
|
|
|
4
|
-
declare const LEGACY_RICH_MARKDOWN_MODES: readonly ["visual", "json", "markdown"];
|
|
5
|
-
declare const LEGACY_RICH_HTML_MODES: readonly ["visual", "json", "html"];
|
|
6
|
-
declare const LEGACY_RICH_DUAL_SOURCE_MODES: readonly ["visual", "markdown", "html"];
|
|
4
|
+
declare const LEGACY_RICH_MARKDOWN_MODES: readonly ["visual-only", "visual", "json", "markdown"];
|
|
5
|
+
declare const LEGACY_RICH_HTML_MODES: readonly ["visual-only", "visual", "json", "html"];
|
|
6
|
+
declare const LEGACY_RICH_DUAL_SOURCE_MODES: readonly ["visual-only", "visual", "markdown", "html"];
|
|
7
7
|
type LegacyRichSourceFormat = "markdown" | "html" | "both";
|
|
8
8
|
type LegacyRichEditorMode = (typeof LEGACY_RICH_MARKDOWN_MODES)[number] | (typeof LEGACY_RICH_HTML_MODES)[number] | (typeof LEGACY_RICH_DUAL_SOURCE_MODES)[number];
|
|
9
9
|
declare const LEGACY_RICH_DEFAULT_FEATURE_FLAGS: FeatureFlagOverrides;
|
|
10
10
|
declare const LEGACY_RICH_TOOLBAR_LAYOUT: ToolbarLayout;
|
|
11
|
-
type LegacyRichEditorProps = Omit<ExtensiveEditorProps, "featureFlags" | "availableModes" | "initialMode" | "defaultEditorView"> & {
|
|
11
|
+
type LegacyRichEditorProps = Omit<ExtensiveEditorProps, "featureFlags" | "availableModes" | "initialMode" | "defaultEditorView" | "sourceMetadataMode" | "isListStyleDropdownEnabled"> & {
|
|
12
12
|
sourceFormat?: LegacyRichSourceFormat;
|
|
13
13
|
initialMode?: LegacyRichEditorMode;
|
|
14
14
|
defaultEditorView?: LegacyRichEditorMode;
|
|
15
15
|
featureFlags?: FeatureFlagOverrides;
|
|
16
16
|
};
|
|
17
|
-
declare const LegacyRichEditor: react.ForwardRefExoticComponent<Omit<ExtensiveEditorProps, "availableModes" | "featureFlags" | "initialMode" | "defaultEditorView"> & {
|
|
17
|
+
declare const LegacyRichEditor: react.ForwardRefExoticComponent<Omit<ExtensiveEditorProps, "availableModes" | "isListStyleDropdownEnabled" | "featureFlags" | "initialMode" | "sourceMetadataMode" | "defaultEditorView"> & {
|
|
18
18
|
sourceFormat?: LegacyRichSourceFormat;
|
|
19
19
|
initialMode?: LegacyRichEditorMode;
|
|
20
20
|
defaultEditorView?: LegacyRichEditorMode;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {f as f$1,e,d}from'./chunk-SQTZVN2Z.js';import {b}from'./chunk-WM5NNMZA.js';import {ha,sa}from'./chunk-QON7NKIG.js';import {forwardRef}from'react';import {jsx}from'react/jsx-runtime';var a=d,f=e,o=forwardRef(({className:l,variantClassName:E,toolbarClassName:m,toolbarLayout:L,initialMode:n="visual",defaultEditorView:c,...p},T)=>jsx(f$1,{ref:T,...p,className:b("luthor-preset-html-editor",l),variantClassName:b("luthor-preset-html-editor__variant",E),toolbarClassName:b("luthor-preset-html-editor__toolbar",m),sourceFormat:"html",initialMode:n,defaultEditorView:c,toolbarLayout:L??f}));o.displayName="HTMLEditor";var _={id:"html-editor",label:"HTML Editor",description:"HTML-focused preset with visual, JSON, and HTML source views.",extensions:sa({featureFlags:a}),components:{Editor:o},toolbar:["undo","redo","blockFormat","quote","alignLeft","alignCenter","alignRight","alignJustify","bold","italic","strikethrough","code","codeBlock","link","unorderedList","orderedList","checkList","horizontalRule","table","image"],config:ha("html-editor","Write HTML-compatible content..."),css:"html-editor/styles.css"};export{o as a,_ as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {a as a$1,b as b$1}from'./chunk-WM5NNMZA.js';import {ha,sa,Ea}from'./chunk-QON7NKIG.js';import {jsx}from'react/jsx-runtime';var b=["visual-only","visual","json","markdown","html"],g={bold:true,italic:true,underline:true,strikethrough:true,fontFamily:false,fontSize:false,lineHeight:false,textColor:false,textHighlight:false,subscript:false,superscript:false,link:true,horizontalRule:true,table:true,list:true,history:true,image:false,blockFormat:true,code:true,codeIntelligence:false,codeFormat:true,tabIndent:true,enterKeyBehavior:true,iframeEmbed:false,youTubeEmbed:false,slashCommand:true,draggableBlock:true,commandPalette:false,floatingToolbar:false,contextMenu:false,emoji:false,customNode:false,themeToggle:false},E={slashCommand:true,commandPalette:false},p=new a$1(g,E),t=["format.bold","format.italic","format.underline","format.strikethrough","format.code","block.paragraph","block.heading1","block.heading2","block.heading3","block.heading4","block.heading5","block.heading6","block.quote","block.codeblock","list.bullet","list.numbered","list.check","link.insert","insert.horizontal-rule","insert.table"],F={allowlist:t};function a({className:i,variantClassName:n,slashVisibility:d,isDraggableEnabled:u=true,featureFlags:m,isToolbarEnabled:f=false,...c}){let h={...p.resolve(m),draggableBlock:u};return jsx(Ea,{...c,className:b$1("luthor-preset-slash-editor",i),variantClassName:b$1("luthor-preset-slash-editor__variant",n),availableModes:b,isToolbarEnabled:f,slashCommandVisibility:d??F,featureFlags:h})}var T={id:"slash-editor",label:"Slash Editor",description:"Slash-first editing with curated commands and draggable block support.",extensions:sa({featureFlags:{bold:true,italic:true,underline:true,strikethrough:true,fontFamily:false,fontSize:false,lineHeight:false,textColor:false,textHighlight:false,subscript:false,superscript:false,link:true,horizontalRule:true,table:true,list:true,history:true,image:false,blockFormat:true,code:true,codeIntelligence:false,codeFormat:true,tabIndent:true,enterKeyBehavior:true,iframeEmbed:false,youTubeEmbed:false,slashCommand:true,draggableBlock:true,floatingToolbar:false,contextMenu:false,commandPalette:false,emoji:false,customNode:false,themeToggle:false}}),components:{Editor:a},toolbar:[...t],config:ha("slash-editor","Type '/' for commands..."),css:"slash-editor/styles.css"};export{a,T as b};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import {ImageExtension,TableExtension,IframeEmbedExtension,YouTubeEmbedExtension,ContextMenuExtension,CommandPaletteExtension,SlashCommandExtension,EmojiExtension,DraggableBlockExtension,LinkExtension,textColorExtension,textHighlightExtension,createCustomNodeExtension,createEditorSystem,mergeThemes,defaultLuthorTheme,createEditorThemeStyleVars,FloatingToolbarExtension,FontFamilyExtension,FontSizeExtension,LineHeightExtension,codeExtension,codeIntelligenceExtension,ListExtension,TabIndentExtension,boldExtension,italicExtension,underlineExtension,strikethroughExtension,subscriptExtension,superscriptExtension,horizontalRuleExtension,historyExtension,blockFormatExtension,codeFormatExtension,enterKeyBehaviorExtension,jsonToMarkdown,jsonToHTML,RichText,markdownToJSON,clearLexicalSelection,resolveLinkNodeKeyFromAnchor,htmlToJSON}from'@lyfie/luthor-headless';import Ll,{forwardRef,useState,useRef,useMemo,useEffect,useImperativeHandle,createElement,useCallback,useLayoutEffect}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {createPortal}from'react-dom';var gi=Object.defineProperty;var fi=(e,t,o)=>t in e?gi(e,t,{enumerable:true,configurable:true,writable:true,value:o}):e[t]=o;var Rs=(e,t,o)=>fi(e,typeof t!="symbol"?t+"":t,o);var je=["h1","h2","h3","h4","h5","h6"],As={sections:[{items:["fontFamily","fontSize","lineHeight","textColor","textHighlight","bold","italic","underline","strikethrough","subscript","superscript","code","link"]},{items:["blockFormat","quote","alignLeft","alignCenter","alignRight","alignJustify","codeBlock"]},{items:["unorderedList","orderedList","checkList","indentList","outdentList"]},{items:["horizontalRule"]},{items:["table"]},{items:["image"]},{items:["emoji"]},{items:["embed"]},{items:["customComponent"]},{items:["undo","redo"]},{items:["commandPalette"]},{items:["themeToggle"]}]},Co={sections:[{items:["undo","redo"]},{items:["fontFamily","blockFormat","fontSize","lineHeight"]},{items:["bold","italic","underline","strikethrough","textColor","textHighlight"]},{items:["alignLeft","alignCenter","alignRight","alignJustify"]},{items:["unorderedList","orderedList","checkList","indentList","outdentList"]},{items:["link"]},{items:["image","table","code","codeBlock","horizontalRule","quote"]},{items:["subscript","superscript","emoji","embed","customComponent"]},{items:["commandPalette","themeToggle"]}]};function hi(e){if(!(e instanceof Element))return false;if(e.closest('[contenteditable="true"]'))return true;let t=e.tagName.toLowerCase();return t==="input"||t==="textarea"||t==="select"}function pi(e,t){return hi(e.target)?Sn(t):false}function Sn(e){let t=e.key.toLowerCase();return !(!!e.ctrlKey||!!e.metaKey)||e.altKey?false:t==="b"||t==="i"||t==="u"||t==="k"}function Tn(e){return typeof e.setCodeLanguage=="function"&&typeof e.autoDetectCodeLanguage=="function"}function bi(e){return typeof e.toggleSubscript=="function"}function yi(e){return typeof e.toggleSuperscript=="function"}function Ci(e){return typeof e.insertIframeEmbed=="function"}function vi(e){return typeof e.insertYouTubeEmbed=="function"}function Ei(e){return typeof e.insertEmoji=="function"}function ki(e){return e.slice(1)}function Li(e){switch(e){case "h1":return "Convert to large heading";case "h2":return "Convert to medium heading";case "h3":return "Convert to small heading";case "h4":return "Convert to heading level 4";case "h5":return "Convert to heading level 5";case "h6":return "Convert to heading level 6"}}function wi(e){if(!e||e.length===0)return [...je];let t=new Set,o=[];for(let n of e)!je.includes(n)||t.has(n)||(t.add(n),o.push(n));return o.length>0?o:[...je]}function $o(e,t){return Ii(qo(t),t?.shortcutConfig).filter(n=>!n.condition||n.condition(e))}function oe(e,t){return typeof e[t]=="function"}function vo(e){if(!e||e.length===0)return new Set;let t=e.map(o=>o.trim()).filter(o=>o.length>0);return new Set(t)}function Ti(e){if(!e)return {allowlist:new Set,denylist:new Set};if(Array.isArray(e)){let o=[];for(let n of e)for(let[i,r]of Object.entries(n))r&&o.push(i);return {allowlist:vo(o),denylist:new Set}}let t=e;return {allowlist:vo(t.allowlist),denylist:vo(t.denylist)}}function xn(e){let t=e.key.trim();return t?{key:t,ctrlKey:!!e.ctrlKey,metaKey:!!e.metaKey,shiftKey:!!e.shiftKey,altKey:!!e.altKey,preventDefault:e.preventDefault}:null}function Si(e){if(e===false||e===null)return [];let t=Array.isArray(e)?e:[e],o=[];for(let n of t){let i=xn(n);i&&o.push(i);}return o}function xi(e){return [e.key.toLowerCase(),e.ctrlKey?"ctrl":"",e.metaKey?"meta":"",e.shiftKey?"shift":"",e.altKey?"alt":""].join(":")}function Ii(e,t){if(!t)return [...e];let o=vo(t.disabledCommandIds),n=t.bindings,i=t.preventNativeConflicts!==false,r=t.preventCollisions!==false,l=new Set;return e.filter(u=>!o.has(u.id)).map(u=>{let d=u.shortcuts?[...u.shortcuts]:void 0;if(!!n&&Object.prototype.hasOwnProperty.call(n,u.id)&&n){let v=n[u.id],y=v===void 0?[]:Si(v);d=y.length>0?y:void 0;}if(d&&d.length>0){let v=[];for(let y of d){let f=xn(y);if(!f||i&&Sn(f))continue;let m=xi(f);r&&l.has(m)||(l.add(m),v.push(f));}d=v.length>0?v:void 0;}return {...u,shortcuts:d}})}function qo(e){let t=e?.isFeatureEnabled??(()=>true),o=wi(e?.headingOptions),n=e?.paragraphLabel?.trim()||"Paragraph",i=o.map(r=>{let l=ki(r);return {id:`block.heading${l}`,label:`Heading ${l}`,description:Li(r),category:"Block",action:s=>s.toggleHeading?.(r),shortcuts:[{key:l,ctrlKey:true,altKey:true}],keywords:["heading",r],condition:s=>t("blockFormat")&&oe(s,"toggleHeading")}});return [{id:"format.bold",label:"Toggle Bold",description:"Make text bold or remove bold formatting",category:"Format",action:r=>r.toggleBold?.(),shortcuts:[{key:"b",ctrlKey:true}],keywords:["bold","strong","format"],condition:r=>t("bold")&&oe(r,"toggleBold")},{id:"format.italic",label:"Toggle Italic",description:"Make text italic or remove italic formatting",category:"Format",action:r=>r.toggleItalic?.(),shortcuts:[{key:"i",ctrlKey:true}],keywords:["italic","emphasis","format"],condition:r=>t("italic")&&oe(r,"toggleItalic")},{id:"format.underline",label:"Toggle Underline",description:"Add or remove underline formatting",category:"Format",action:r=>r.toggleUnderline?.(),shortcuts:[{key:"u",ctrlKey:true}],keywords:["underline","format"],condition:r=>t("underline")&&oe(r,"toggleUnderline")},{id:"format.strikethrough",label:"Toggle Strikethrough",description:"Add or remove strikethrough formatting",category:"Format",action:r=>r.toggleStrikethrough?.(),keywords:["strikethrough","format"],condition:r=>t("strikethrough")&&oe(r,"toggleStrikethrough")},{id:"format.subscript",label:"Toggle Subscript",description:"Format text as subscript",category:"Format",action:r=>r.toggleSubscript?.(),keywords:["subscript","format"],condition:r=>t("subscript")&&bi(r)},{id:"format.superscript",label:"Toggle Superscript",description:"Format text as superscript",category:"Format",action:r=>r.toggleSuperscript?.(),keywords:["superscript","format"],condition:r=>t("superscript")&&yi(r)},{id:"format.code",label:"Toggle Inline Code",description:"Format text as inline code",category:"Format",action:r=>r.formatText?.("code"),shortcuts:[{key:"`",ctrlKey:true}],keywords:["code","inline","format"],condition:r=>t("codeFormat")&&oe(r,"formatText")},{id:"block.paragraph",label:n,description:"Convert to paragraph",category:"Block",action:r=>r.toggleParagraph?.(),shortcuts:[{key:"0",ctrlKey:true,altKey:true}],keywords:["paragraph","text"],condition:r=>t("blockFormat")&&oe(r,"toggleParagraph")},...i,{id:"block.quote",label:"Quote",description:"Convert to blockquote",category:"Block",action:r=>r.toggleQuote?.(),keywords:["quote","blockquote"],condition:r=>t("blockFormat")&&oe(r,"toggleQuote")},{id:"block.align-left",label:"Align Left",description:"Align selected blocks to the left",category:"Block",action:r=>r.setTextAlignment?.("left"),keywords:["align","left","text"],condition:r=>t("blockFormat")&&oe(r,"setTextAlignment")},{id:"block.align-center",label:"Align Center",description:"Center-align selected blocks",category:"Block",action:r=>r.setTextAlignment?.("center"),keywords:["align","center","text"],condition:r=>t("blockFormat")&&oe(r,"setTextAlignment")},{id:"block.align-right",label:"Align Right",description:"Align selected blocks to the right",category:"Block",action:r=>r.setTextAlignment?.("right"),keywords:["align","right","text"],condition:r=>t("blockFormat")&&oe(r,"setTextAlignment")},{id:"block.align-justify",label:"Justify",description:"Justify selected blocks",category:"Block",action:r=>r.setTextAlignment?.("justify"),keywords:["align","justify","text"],condition:r=>t("blockFormat")&&oe(r,"setTextAlignment")},{id:"block.codeblock",label:"Code Block",description:"Convert to code block",category:"Block",action:r=>r.toggleCodeBlock?.(),shortcuts:[{key:"`",ctrlKey:true,shiftKey:true}],keywords:["code","block"],condition:r=>t("code")&&oe(r,"toggleCodeBlock")},{id:"block.code-language",label:"Set Code Language",description:"Set language for selected code block",category:"Block",action:r=>{if(!r.setCodeLanguage)return;let l=prompt("Code language (e.g. ts, css, python):")?.trim();l&&r.setCodeLanguage(l);},keywords:["code","language","syntax"],condition:r=>t("codeIntelligence")&&Tn(r)},{id:"block.code-language.auto",label:"Auto-Detect Code Language",description:"Detect language from selected code block",category:"Block",action:r=>{r.autoDetectCodeLanguage?.();},keywords:["code","language","auto","detect"],condition:r=>t("codeIntelligence")&&Tn(r)},{id:"list.bullet",label:"Bullet List",description:"Create or toggle bullet list",category:"List",action:r=>r.toggleUnorderedList?.(),shortcuts:[{key:"l",ctrlKey:true,shiftKey:true}],keywords:["list","bullet"],condition:r=>t("list")&&oe(r,"toggleUnorderedList")},{id:"list.numbered",label:"Numbered List",description:"Create or toggle numbered list",category:"List",action:r=>r.toggleOrderedList?.(),shortcuts:[{key:"l",ctrlKey:true,altKey:true}],keywords:["list","numbered"],condition:r=>t("list")&&oe(r,"toggleOrderedList")},{id:"list.check",label:"Checklist",description:"Create or toggle checklist",category:"List",action:r=>r.toggleCheckList?.(),shortcuts:[{key:"x",ctrlKey:true,shiftKey:true}],keywords:["list","check","todo","task"],condition:r=>t("list")&&oe(r,"toggleCheckList")},{id:"link.insert",label:"Insert Link",description:"Insert or edit a link",category:"Insert",action:r=>r.insertLink?.(),shortcuts:[{key:"k",ctrlKey:true}],keywords:["link","url"],condition:r=>t("link")&&oe(r,"insertLink")},{id:"link.remove",label:"Remove Link",description:"Remove link formatting",category:"Format",action:r=>r.removeLink?.(),shortcuts:[{key:"k",ctrlKey:true,shiftKey:true}],keywords:["unlink","remove","link"],condition:r=>t("link")&&oe(r,"removeLink")},{id:"insert.horizontal-rule",label:"Insert Horizontal Rule",description:"Insert a horizontal line separator",category:"Insert",action:r=>r.insertHorizontalRule?.(),keywords:["horizontal","rule","hr","divider","separator"],condition:r=>t("horizontalRule")&&oe(r,"insertHorizontalRule")},{id:"insert.image",label:"Insert Image",description:"Insert an image from URL",category:"Insert",action:r=>{let l=prompt("Enter image URL:");if(l){let s=prompt("Enter alt text:")||"";r.insertImage?.({src:l,alt:s});}},keywords:["image","photo"],condition:r=>t("image")&&oe(r,"insertImage")},{id:"insert.gif",label:"Insert GIF",description:"Insert an animated GIF from URL",category:"Insert",action:r=>{let l=prompt("Enter GIF URL:");l&&r.insertImage?.({src:l,alt:"GIF"});},keywords:["gif","animated","image"],condition:r=>t("image")&&oe(r,"insertImage")},{id:"insert.emoji",label:"Insert Emoji",description:"Insert an emoji character",category:"Insert",action:r=>{let l=prompt("Enter emoji or shortcode (example :sparkles:):")?.trim();if(!l||typeof r.insertEmoji!="function")return;let s=l.match(/^:([a-z0-9_+-]+):$/i);if(s){let u=s[1];if(!u)return;if(typeof r.resolveEmojiShortcode=="function"){let d=r.resolveEmojiShortcode(u);if(d?.emoji){r.insertEmoji(d.emoji);return}}else if(typeof r.getEmojiSuggestions=="function"){let[d]=r.getEmojiSuggestions(u);if(d?.emoji){r.insertEmoji(d.emoji);return}}}r.insertEmoji(l);},keywords:["emoji","reaction","symbol","smile"],condition:r=>t("emoji")&&Ei(r)},{id:"insert.table",label:"Insert Table",description:"Insert a 3x3 table",category:"Insert",action:r=>r.insertTable?.({rows:3,columns:3,includeHeaders:true}),keywords:["table","grid"],condition:r=>t("table")&&oe(r,"insertTable")},{id:"insert.iframe",label:"Insert iframe",description:"Insert an iframe embed from URL",category:"Insert",action:r=>{if(typeof r.insertIframeEmbed!="function")return;let l=prompt("Enter iframe URL:");l&&r.insertIframeEmbed(l);},keywords:["iframe","embed","url"],condition:r=>t("iframeEmbed")&&Ci(r)},{id:"insert.youtube",label:"Insert YouTube Video",description:"Insert an embedded YouTube video",category:"Insert",action:r=>{if(typeof r.insertYouTubeEmbed!="function")return;let l=prompt("Enter YouTube URL:");l&&r.insertYouTubeEmbed(l);},keywords:["youtube","video","embed"],condition:r=>t("youTubeEmbed")&&vi(r)},{id:"edit.undo",label:"Undo",description:"Undo the last action",category:"Edit",action:r=>r.undo?.(),shortcuts:[{key:"z",ctrlKey:true}],keywords:["undo","revert"],condition:r=>t("history")&&oe(r,"undo")},{id:"edit.redo",label:"Redo",description:"Redo the last undone action",category:"Edit",action:r=>r.redo?.(),shortcuts:[{key:"y",ctrlKey:true},{key:"z",ctrlKey:true,shiftKey:true}],keywords:["redo","repeat"],condition:r=>t("history")&&oe(r,"redo")},{id:"palette.show",label:"Show Command Palette",description:"Open the command palette",category:"View",action:r=>r.showCommandPalette?.(),shortcuts:[{key:"p",ctrlKey:true,shiftKey:true}],keywords:["command","palette"],condition:r=>t("commandPalette")&&oe(r,"showCommandPalette")}]}function In(e,t){let o=t?.commandPaletteShortcutOnly===true;return $o(e,t).filter(n=>!o||!!n.shortcuts&&n.shortcuts.length>0).map(n=>({id:n.id,label:n.label,description:n.description,category:n.category,action:()=>n.action(e),keywords:n.keywords,shortcut:n.shortcuts?.[0]?Mn(n.shortcuts[0]):void 0}))}function Fn(e,t){let o=new Set(["block.paragraph","block.quote","block.codeblock"]),n=s=>s.category==="Insert"||s.category==="List"?true:s.category==="Block"?s.id.startsWith("block.heading")?true:o.has(s.id):false,{allowlist:i,denylist:r}=Ti(t?.slashCommandVisibility),l=i.size>0;return $o(e,t).filter(s=>r.has(s.id)?false:l?i.has(s.id):n(s)).map(s=>({id:s.id,label:s.label,description:s.description,category:s.category,action:()=>s.action(e),keywords:s.keywords,shortcut:s.shortcuts?.[0]?Mn(s.shortcuts[0]):void 0}))}function Mn(e){let t=[];return e.ctrlKey&&t.push("Ctrl"),e.metaKey&&t.push("Cmd"),e.altKey&&t.push("Alt"),e.shiftKey&&t.push("Shift"),t.push(e.key.toUpperCase()),t.join("+")}function On(e,t=document.body,o){let n=$o(e,o),i=(l,s)=>l.key.toLowerCase()===s.key.toLowerCase()||s.key==="`"&&l.code==="Backquote",r=l=>{let s=typeof o?.scope=="function"?o.scope():o?.scope;if(!(s&&l.target instanceof Node&&!s.contains(l.target))){for(let u of n)if(u.shortcuts){for(let d of u.shortcuts)if(!(o?.shortcutConfig?.preventNativeConflicts!==false&&pi(l,d))&&i(l,d)&&!!l.ctrlKey==!!d.ctrlKey&&!!l.metaKey==!!d.metaKey&&!!l.shiftKey==!!d.shiftKey&&!!l.altKey==!!d.altKey){d.preventDefault!==false&&l.preventDefault(),(!u.condition||u.condition(e))&&u.action(e);return}}}};return t.addEventListener("keydown",r),()=>t.removeEventListener("keydown",r)}function U(e,t){let o=forwardRef(function({size:i=24,strokeWidth:r=2,...l},s){return jsx("svg",{ref:s,xmlns:"http://www.w3.org/2000/svg",width:i,height:i,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:r,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...l,children:t})});return o.displayName=e,o}var Eo=U("BoldIcon",jsx("path",{d:"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8"})),ko=U("ItalicIcon",jsxs(Fragment,{children:[jsx("line",{x1:"19",x2:"10",y1:"4",y2:"4"}),jsx("line",{x1:"14",x2:"5",y1:"20",y2:"20"}),jsx("line",{x1:"15",x2:"9",y1:"4",y2:"20"})]})),Lo=U("UnderlineIcon",jsxs(Fragment,{children:[jsx("path",{d:"M6 4v6a6 6 0 0 0 12 0V4"}),jsx("line",{x1:"4",x2:"20",y1:"20",y2:"20"})]})),wo=U("StrikethroughIcon",jsxs(Fragment,{children:[jsx("path",{d:"M16 4H9a3 3 0 0 0-2.83 4"}),jsx("path",{d:"M14 12a4 4 0 0 1 0 8H6"}),jsx("line",{x1:"4",x2:"20",y1:"12",y2:"12"})]})),To=U("CodeIcon",jsxs(Fragment,{children:[jsx("path",{d:"m16 18 6-6-6-6"}),jsx("path",{d:"m8 6-6 6 6 6"})]})),Nn=U("CodeBlockIcon",jsxs(Fragment,{children:[jsx("path",{d:"m10 9-3 3 3 3"}),jsx("path",{d:"m14 15 3-3-3-3"}),jsx("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"})]})),zt=U("LinkIcon",jsxs(Fragment,{children:[jsx("path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}),jsx("path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"})]})),xt=U("UnlinkIcon",jsxs(Fragment,{children:[jsx("path",{d:"m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71"}),jsx("path",{d:"m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71"}),jsx("line",{x1:"8",x2:"8",y1:"2",y2:"5"}),jsx("line",{x1:"2",x2:"5",y1:"8",y2:"8"}),jsx("line",{x1:"16",x2:"16",y1:"19",y2:"22"}),jsx("line",{x1:"19",x2:"22",y1:"16",y2:"16"})]})),Qt=U("ListIcon",jsxs(Fragment,{children:[jsx("path",{d:"M3 5h.01"}),jsx("path",{d:"M3 12h.01"}),jsx("path",{d:"M3 19h.01"}),jsx("path",{d:"M8 5h13"}),jsx("path",{d:"M8 12h13"}),jsx("path",{d:"M8 19h13"})]})),Zt=U("ListCheckIcon",jsxs(Fragment,{children:[jsx("path",{d:"M16 5H3"}),jsx("path",{d:"M16 12H3"}),jsx("path",{d:"M11 19H3"}),jsx("path",{d:"m15 18 2 2 4-4"})]})),eo=U("ListOrderedIcon",jsxs(Fragment,{children:[jsx("path",{d:"M11 5h10"}),jsx("path",{d:"M11 12h10"}),jsx("path",{d:"M11 19h10"}),jsx("path",{d:"M4 4h1v5"}),jsx("path",{d:"M4 9h2"}),jsx("path",{d:"M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02"})]})),Hn=U("UndoIcon",jsxs(Fragment,{children:[jsx("path",{d:"M3 7v6h6"}),jsx("path",{d:"M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13"})]})),Rn=U("RedoIcon",jsxs(Fragment,{children:[jsx("path",{d:"M21 7v6h-6"}),jsx("path",{d:"M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7"})]})),Yo=U("ImageIcon",jsxs(Fragment,{children:[jsx("rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2"}),jsx("circle",{cx:"9",cy:"9",r:"2"}),jsx("path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"})]})),Dt=U("AlignLeftIcon",jsxs(Fragment,{children:[jsx("path",{d:"M21 5H3"}),jsx("path",{d:"M15 12H3"}),jsx("path",{d:"M17 19H3"})]})),It=U("AlignCenterIcon",jsxs(Fragment,{children:[jsx("path",{d:"M21 5H3"}),jsx("path",{d:"M17 12H7"}),jsx("path",{d:"M19 19H5"})]})),Pn=U("AlignJustifyIcon",jsxs(Fragment,{children:[jsx("path",{d:"M3 5h18"}),jsx("path",{d:"M3 12h18"}),jsx("path",{d:"M3 19h18"})]})),Bt=U("AlignRightIcon",jsxs(Fragment,{children:[jsx("path",{d:"M21 5H3"}),jsx("path",{d:"M21 12H9"}),jsx("path",{d:"M21 19H7"})]})),Jo=U("UploadIcon",jsxs(Fragment,{children:[jsx("path",{d:"M12 3v12"}),jsx("path",{d:"m17 8-5-5-5 5"}),jsx("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"})]})),An=U("MinusIcon",jsx("path",{d:"M5 12h14"})),zn=U("TableIcon",jsxs(Fragment,{children:[jsx("path",{d:"M12 3v18"}),jsx("rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}),jsx("path",{d:"M3 9h18"}),jsx("path",{d:"M3 15h18"})]})),Dn=U("FileCodeIcon",jsxs(Fragment,{children:[jsx("path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"}),jsx("path",{d:"M14 2v5a1 1 0 0 0 1 1h5"}),jsx("path",{d:"M10 12.5 8 15l2 2.5"}),jsx("path",{d:"m14 12.5 2 2.5-2 2.5"})]})),Ks=U("EyeIcon",jsxs(Fragment,{children:[jsx("path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"}),jsx("circle",{cx:"12",cy:"12",r:"3"})]})),Bn=U("HighlighterIcon",jsxs(Fragment,{children:[jsx("path",{d:"m9 11-6 6v3h9l3-3"}),jsx("path",{d:"m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4"})]})),_s=U("PencilIcon",jsxs(Fragment,{children:[jsx("path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"}),jsx("path",{d:"m15 5 4 4"})]})),So=U("CommandIcon",jsx("path",{d:"M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3"})),Un=U("PaletteIcon",jsxs(Fragment,{children:[jsx("path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z"}),jsx("circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor"}),jsx("circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor"}),jsx("circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor"}),jsx("circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor"})]})),Kn=U("TypeIcon",jsxs(Fragment,{children:[jsx("path",{d:"M12 4v16"}),jsx("path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2"}),jsx("path",{d:"M9 20h6"})]})),xo=U("QuoteIcon",jsxs(Fragment,{children:[jsx("path",{d:"M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z"}),jsx("path",{d:"M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z"})]})),_n=U("IndentIcon",jsxs(Fragment,{children:[jsx("path",{d:"M21 5H11"}),jsx("path",{d:"M21 12H11"}),jsx("path",{d:"M21 19H11"}),jsx("path",{d:"m3 8 4 4-4 4"})]})),Vn=U("OutdentIcon",jsxs(Fragment,{children:[jsx("path",{d:"M21 5H11"}),jsx("path",{d:"M21 12H11"}),jsx("path",{d:"M21 19H11"}),jsx("path",{d:"m7 8-4 4 4 4"})]})),jn=U("SunIcon",jsxs(Fragment,{children:[jsx("circle",{cx:"12",cy:"12",r:"4"}),jsx("path",{d:"M12 2v2"}),jsx("path",{d:"M12 20v2"}),jsx("path",{d:"m4.93 4.93 1.41 1.41"}),jsx("path",{d:"m17.66 17.66 1.41 1.41"}),jsx("path",{d:"M2 12h2"}),jsx("path",{d:"M20 12h2"}),jsx("path",{d:"m6.34 17.66-1.41 1.41"}),jsx("path",{d:"m19.07 4.93-1.41 1.41"})]})),$n=U("MoonIcon",jsx("path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"})),qn=U("SearchIcon",jsxs(Fragment,{children:[jsx("path",{d:"m21 21-4.34-4.34"}),jsx("circle",{cx:"11",cy:"11",r:"8"})]})),Go=U("EmojiIcon",jsxs(Fragment,{children:[jsx("circle",{cx:"12",cy:"12",r:"10"}),jsx("path",{d:"M8 14s1.5 2 4 2 4-2 4-2"}),jsx("line",{x1:"9",x2:"9.01",y1:"9",y2:"9"}),jsx("line",{x1:"15",x2:"15.01",y1:"9",y2:"9"})]})),Yn=U("SubscriptIcon",jsxs(Fragment,{children:[jsx("path",{d:"m4 5 8 8"}),jsx("path",{d:"m12 5-8 8"}),jsx("path",{d:"M20 19h-4c0-1.5.44-2 1.5-2.5S20 15.33 20 14c0-.47-.17-.93-.48-1.29a2.11 2.11 0 0 0-2.62-.44c-.42.24-.74.62-.9 1.07"})]})),Jn=U("SuperscriptIcon",jsxs(Fragment,{children:[jsx("path",{d:"m4 19 8-8"}),jsx("path",{d:"m12 19-8-8"}),jsx("path",{d:"M20 12h-4c0-1.5.442-2 1.5-2.5S20 8.334 20 7.002c0-.472-.17-.93-.484-1.29a2.105 2.105 0 0 0-2.617-.436c-.42.239-.738.614-.899 1.06"})]})),Ut=U("ChevronDownIcon",jsx("path",{d:"m6 9 6 6 6-6"})),Gn=U("CloseIcon",jsxs(Fragment,{children:[jsx("path",{d:"M18 6 6 18"}),jsx("path",{d:"m6 6 12 12"})]}));function Qn({isOpen:e,onClose:t,commands:o}){let[n,i]=useState(""),[r,l]=useState(0),s=useRef(null),u=useRef(null),d=o.filter(y=>`${y.label} ${y.description||""} ${y.keywords?.join(" ")||""}`.toLowerCase().includes(n.toLowerCase())),E=d.reduce((y,f)=>{let m=f.category||"Other";return y[m]||(y[m]=[]),y[m].push(f),y},{}),v=d;return useEffect(()=>{l(0);},[n]),useEffect(()=>{e&&s.current&&(s.current.focus({preventScroll:true}),i(""),l(0));},[e]),useEffect(()=>{if(!e)return;let y=u.current;if(!y)return;y.querySelector(".luthor-command-palette-item.selected")?.scrollIntoView({block:"nearest"});},[e,r,n]),useEffect(()=>{let y=f=>{if(e)switch(f.key){case "Escape":f.preventDefault(),f.stopPropagation(),t();break;case "ArrowDown":f.preventDefault(),f.stopPropagation(),l(m=>Math.min(m+1,v.length-1));break;case "ArrowUp":f.preventDefault(),f.stopPropagation(),l(m=>Math.max(m-1,0));break;case "Enter":f.preventDefault(),f.stopPropagation(),v[r]&&(v[r].action(),t());break}};return document.addEventListener("keydown",y,true),()=>document.removeEventListener("keydown",y,true)},[e,r,v,t]),e?jsx("div",{className:"luthor-command-palette-overlay",onClick:t,children:jsxs("div",{className:"luthor-command-palette",role:"dialog","aria-modal":"true","aria-label":"Command Palette",onClick:y=>y.stopPropagation(),children:[jsxs("div",{className:"luthor-command-palette-header",children:[jsx(qn,{size:16,className:"luthor-command-palette-icon"}),jsx("input",{ref:s,type:"text",placeholder:"Type a command or search...",value:n,onChange:y=>i(y.target.value),className:"luthor-command-palette-input"}),jsx("kbd",{className:"luthor-command-palette-kbd",children:"ESC"})]}),jsx("div",{ref:u,className:"luthor-command-palette-list",children:Object.keys(E).length===0?jsx("div",{className:"luthor-command-palette-empty",children:"No commands found"}):Object.entries(E).map(([y,f])=>jsxs("div",{className:"luthor-command-palette-group",children:[jsx("div",{className:"luthor-command-palette-group-title",children:y}),f.map(m=>{let h=v.indexOf(m);return jsxs("div",{className:`luthor-command-palette-item ${h===r?"selected":""}`,onClick:()=>{m.action(),t();},onMouseEnter:()=>l(h),children:[jsxs("div",{className:"luthor-command-palette-item-content",children:[jsx("div",{className:"luthor-command-palette-item-title",children:m.label}),m.description&&jsx("div",{className:"luthor-command-palette-item-description",children:m.description})]}),m.shortcut&&jsx("kbd",{className:"luthor-command-palette-item-shortcut",children:m.shortcut})]},m.id)})]},y))}),jsx("div",{className:"luthor-command-palette-footer",children:jsxs("span",{className:"luthor-command-palette-hint",children:[jsx(So,{size:14}),jsx("span",{children:"Use arrow keys, Enter, ESC"})]})})]})}):null}var Mi={"--luthor-bg":"#ffffff","--luthor-fg":"#0f172a","--luthor-border":"#e2e8f0","--luthor-border-hover":"#cbd5e1","--luthor-border-active":"#94a3b8","--luthor-accent":"#0f172a","--luthor-accent-hover":"#1e293b","--luthor-shadow":"rgba(0, 0, 0, 0.08)","--luthor-muted":"#f8fafc","--luthor-muted-fg":"#64748b","--luthor-theme-transition":"0.2s ease","--luthor-drag-gutter-width":"56px","--luthor-line-height-ratio":"1","--luthor-toolbar-bg":"#f8fafc","--luthor-toolbar-section-border":"#e2e8f0","--luthor-toolbar-button-fg":"#0f172a","--luthor-toolbar-button-hover-bg":"#f8fafc","--luthor-toolbar-button-hover-border":"#cbd5e1","--luthor-toolbar-button-hover-shadow":"0 4px 12px rgba(0, 0, 0, 0.15)","--luthor-toolbar-button-press-shadow":"0 2px 8px rgba(0, 0, 0, 0.1)","--luthor-toolbar-button-active-bg":"#0f172a","--luthor-toolbar-button-active-border":"#0f172a","--luthor-toolbar-button-active-fg":"#ffffff","--luthor-toolbar-button-active-shadow":"0 2px 8px rgba(0, 0, 0, 0.2)","--luthor-toolbar-button-overlay":"linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0.05) 100%)","--luthor-toolbar-button-active-overlay":"linear-gradient(135deg, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0.1) 100%)","--luthor-toolbar-color-indicator-border":"#000000","--luthor-toolbar-highlight-bg":"#f8fafc","--luthor-quote-bg":"#f8fafc","--luthor-quote-fg":"#0f172a","--luthor-quote-border":"#0f172a","--luthor-syntax-comment":"#64748b","--luthor-syntax-keyword":"#64748b","--luthor-syntax-string":"#64748b","--luthor-syntax-number":"#64748b","--luthor-syntax-function":"#64748b","--luthor-syntax-variable":"#64748b","--luthor-floating-bg":"#ffffff","--luthor-floating-fg":"#0f172a","--luthor-floating-border":"#e2e8f0","--luthor-floating-shadow":"rgba(0, 0, 0, 0.08)","--luthor-floating-muted":"#f8fafc","--luthor-floating-border-hover":"#cbd5e1","--luthor-floating-border-active":"#94a3b8","--luthor-floating-accent":"#0f172a","--luthor-floating-accent-fg":"#ffffff","--luthor-z-dropdown":"60","--luthor-z-popover":"64","--luthor-z-menu":"68","--luthor-z-overlay":"72","--luthor-z-modal":"76","--luthor-preset-bg":"#ffffff","--luthor-preset-fg":"#0f172a","--luthor-preset-border":"#dbe2ea","--luthor-preset-muted":"#f8fafc","--luthor-preset-muted-fg":"#64748b","--luthor-preset-accent":"#2563eb","--luthor-preset-radius":"10px","--luthor-preset-shadow":"0 1px 3px rgba(15, 23, 42, 0.08)","--luthor-preset-content-padding":"16px","--luthor-preset-content-min-height":"180px"};function Oi(e){return e?e.closest(".luthor-editor-wrapper"):null}function Ni(e){return e?Oi(e)??e:null}function Hi(e){if(typeof window>"u"||!e)return {};let t=window.getComputedStyle(e),o={};for(let[n,i]of Object.entries(Mi)){let r=t.getPropertyValue(n).trim()||i;o[n]=r;}return o}function $e(e){return Hi(Ni(e))}function _t(){if(typeof window>"u")return {};let t=window.getSelection()?.anchorNode;if(!t)return {};let o=t.nodeType===Node.ELEMENT_NODE?t:t.parentElement;return $e(o)}function Ft(e){return e?e.closest(".luthor-editor-wrapper")??null:null}function Zn(e,t,o){return e<t?t:e>o?o:e}function Ri(e){if(!e||typeof window>"u"){let o=typeof window>"u"?0:window.innerWidth,n=typeof window>"u"?0:window.innerHeight;return {left:0,top:0,right:o,bottom:n,width:o,height:n}}let t=e.getBoundingClientRect();return {left:t.left,top:t.top,right:t.right,bottom:t.bottom,width:t.width,height:t.height}}function Pi(e,t,o,n,i,r){let l=i==="end"?e.right-t:i==="center"?e.left+e.width/2-t/2:e.left,s=i==="end"?e.left:i==="center"?e.left+e.width/2-t/2:e.right-t,u=l,d=o.left+n,E=Math.max(d,o.right-t-n);if(r){let v=u<d||u>E,y=s>=d&&s<=E;v&&y&&(u=s);}return Zn(u,d,E)}function Ai(e,t,o,n,i,r,l){let s=r==="top"?e.top-t-n:e.bottom+n,u=r==="top"?e.bottom+n:e.top-t-n,d=s,E=o.top+i,v=Math.max(E,o.bottom-t-i);if(l){let y=d<E||d>v,f=u>=E&&u<=v;y&&f&&(d=u);}return Zn(d,E,v)}function ke({anchorRect:e,overlay:t,portalContainer:o=null,gap:n=4,margin:i=8,preferredX:r="start",preferredY:l="bottom",flipX:s=true,flipY:u=true}){let d=Ri(o),E=Math.max(0,d.width-i*2),v=Math.max(0,d.height-i*2),y=Math.max(0,Math.min(t.width,E)),f=Math.max(0,Math.min(t.height,v)),m=Pi(e,y,d,i,r,s),h=Ai(e,f,d,n,i,l,u);if(o){let L=o.getBoundingClientRect();return {position:"absolute",left:m-L.left+o.scrollLeft,top:h-L.top+o.scrollTop,maxWidth:E>0?E:void 0,maxHeight:v>0?v:void 0}}return {position:"fixed",left:m,top:h,maxWidth:E>0?E:void 0,maxHeight:v>0?v:void 0}}function Fo(e,t){return {x:e,y:t,width:1,height:1,left:e,right:e+1,top:t,bottom:t+1,toJSON:()=>({})}}function tr({isOpen:e,query:t,position:o,portalContainer:n,suggestions:i,onClose:r,onExecute:l}){let[s,u]=useState(0),d=useRef(null),[E,v]=useState(void 0);useEffect(()=>{u(0);},[t,e]),useEffect(()=>{if(!e)return;let m=h=>{let L=i.length>0;switch(h.key){case "Escape":h.preventDefault(),h.stopPropagation(),r();break;case "ArrowDown":if(!L)return;h.preventDefault(),h.stopPropagation(),u(p=>Math.min(p+1,Math.max(i.length-1,0)));break;case "ArrowUp":if(!L)return;h.preventDefault(),h.stopPropagation(),u(p=>Math.max(p-1,0));break;case "Enter":case "Tab":if(!L||!i[s])return;h.preventDefault(),h.stopPropagation(),l(i[s].emoji);break}};return document.addEventListener("keydown",m,true),()=>document.removeEventListener("keydown",m,true)},[e,r,l,s,i]);let y=useCallback(m=>{if(!o)return;let h=d.current?.getBoundingClientRect(),L=ke({anchorRect:Fo(o.x,o.y),overlay:{width:h?.width??320,height:h?.height??280},portalContainer:n??null,gap:6,margin:12,preferredX:"start",preferredY:"bottom",flipX:true,flipY:true});v({...L,visibility:m?"visible":"hidden",..._t()});},[n,o]);if(useLayoutEffect(()=>{if(!e||!o)return;y(false);let m=window.requestAnimationFrame(()=>y(true));return ()=>window.cancelAnimationFrame(m)},[e,o,y]),useEffect(()=>{if(!e||!o)return;let m=()=>y(true);return window.addEventListener("resize",m),window.addEventListener("scroll",m,true),()=>{window.removeEventListener("resize",m),window.removeEventListener("scroll",m,true);}},[e,o,y]),!e||!o)return null;let f=jsxs("div",{className:"luthor-emoji-menu",ref:d,style:E,onPointerDown:m=>{m.stopPropagation();},onMouseDown:m=>{m.stopPropagation();},children:[jsxs("div",{className:"luthor-emoji-menu-header",children:[jsx("span",{className:"luthor-emoji-menu-title",children:"Emoji"}),jsxs("span",{className:"luthor-emoji-menu-query",children:[":",t]})]}),jsx("div",{className:"luthor-emoji-menu-list",children:i.length===0?jsx("div",{className:"luthor-emoji-menu-empty",children:"No matching emoji"}):i.map((m,h)=>{let L=h===s,p=m.shortcodes[0]?`:${m.shortcodes[0]}:`:"";return jsxs("button",{type:"button",className:`luthor-emoji-menu-item ${L?"selected":""}`,onMouseEnter:()=>u(h),onMouseDown:w=>{w.preventDefault(),w.stopPropagation();},onClick:w=>{w.preventDefault(),w.stopPropagation(),l(m.emoji);},children:[jsx("span",{className:"luthor-emoji-menu-item-symbol","aria-hidden":"true",children:m.emoji}),jsxs("span",{className:"luthor-emoji-menu-item-content",children:[jsx("span",{className:"luthor-emoji-menu-item-title",children:m.label}),p&&jsx("span",{className:"luthor-emoji-menu-item-shortcode",children:p})]})]},`${m.emoji}-${m.label}`)})})]});return typeof document>"u"?f:createPortal(f,n??document.body)}function rr({isOpen:e,query:t,position:o,portalContainer:n,commands:i,onClose:r,onExecute:l}){let[s,u]=useState(0),d=useRef(null),[E,v]=useState(void 0),y=useMemo(()=>{let L=t.trim().toLowerCase();return L?i.filter(p=>`${p.label} ${p.description||""} ${p.keywords?.join(" ")||""}`.toLowerCase().includes(L)):i},[i,t]),f=useMemo(()=>y.reduce((L,p)=>{let w=p.category||"Other";return L[w]||(L[w]=[]),L[w].push(p),L},{}),[y]);useEffect(()=>{u(0);},[t,e]),useEffect(()=>{if(!e)return;let L=p=>{let w=y.length>0;switch(p.key){case "Escape":p.preventDefault(),p.stopPropagation(),r();break;case "ArrowDown":if(!w)return;p.preventDefault(),p.stopPropagation(),u(P=>Math.min(P+1,Math.max(y.length-1,0)));break;case "ArrowUp":if(!w)return;p.preventDefault(),p.stopPropagation(),u(P=>Math.max(P-1,0));break;case "Enter":case "Tab":if(!w||!y[s])return;p.preventDefault(),p.stopPropagation(),l(y[s].id);break}};return document.addEventListener("keydown",L,true),()=>document.removeEventListener("keydown",L,true)},[y,e,r,l,s]);let m=useCallback(L=>{if(!o)return;let p=d.current?.getBoundingClientRect(),w=ke({anchorRect:Fo(o.x,o.y),overlay:{width:p?.width??420,height:p?.height??360},portalContainer:n??null,gap:6,margin:12,preferredX:"start",preferredY:"bottom",flipX:true,flipY:true});v({...w,visibility:L?"visible":"hidden",..._t()});},[n,o]);if(useLayoutEffect(()=>{if(!e||!o)return;m(false);let L=window.requestAnimationFrame(()=>m(true));return ()=>window.cancelAnimationFrame(L)},[e,o,m]),useEffect(()=>{if(!e||!o)return;let L=()=>m(true);return window.addEventListener("resize",L),window.addEventListener("scroll",L,true),()=>{window.removeEventListener("resize",L),window.removeEventListener("scroll",L,true);}},[e,o,m]),!e||!o)return null;let h=jsxs("div",{className:"luthor-slash-menu",ref:d,style:E,onPointerDown:L=>{L.stopPropagation();},onMouseDown:L=>{L.stopPropagation();},children:[jsxs("div",{className:"luthor-slash-menu-header",children:[jsx("span",{className:"luthor-slash-menu-title",children:"Insert block"}),jsxs("span",{className:"luthor-slash-menu-query",children:["/",t]})]}),jsx("div",{className:"luthor-slash-menu-list",children:y.length===0?jsx("div",{className:"luthor-slash-menu-empty",children:"No matching commands"}):Object.entries(f).map(([L,p])=>jsxs("div",{className:"luthor-slash-menu-group",children:[jsx("div",{className:"luthor-slash-menu-group-title",children:L}),p.map(w=>{let P=y.indexOf(w);return jsxs("button",{type:"button",className:`luthor-slash-menu-item ${P===s?"selected":""}`,onMouseEnter:()=>u(P),onMouseDown:F=>{F.preventDefault(),F.stopPropagation();},onClick:F=>{F.preventDefault(),F.stopPropagation(),l(w.id);},children:[jsxs("span",{className:"luthor-slash-menu-item-content",children:[jsx("span",{className:"luthor-slash-menu-item-title",children:w.label}),w.description&&jsx("span",{className:"luthor-slash-menu-item-description",children:w.description})]}),w.shortcut&&jsx("kbd",{className:"luthor-slash-menu-item-shortcut",children:w.shortcut})]},w.id)})]},L))})]});return typeof document>"u"?h:createPortal(h,n??document.body)}function N({children:e,onClick:t,title:o,active:n,disabled:i,className:r,type:l="button"}){return jsx("button",{type:l,className:`luthor-toolbar-button${n?" active":""}${r?` ${r}`:""}`,onClick:t,title:o,disabled:i,children:e})}function Qo({children:e,onClick:t,variant:o="primary",type:n="button",className:i}){return jsx("button",{type:n,onClick:t,className:`${o==="primary"?"luthor-button-primary":"luthor-button-secondary"}${i?` ${i}`:""}`,children:e})}function io({value:e,onValueChange:t,options:o,placeholder:n="Select..."}){let[i,r]=useState(false),[l,s]=useState(void 0),[u,d]=useState(null),E=useRef(null),v=useRef(null);useEffect(()=>{if(!i)return;let f=()=>{let h=E.current?.querySelector(".luthor-select-trigger");if(!h)return;let L=h.getBoundingClientRect(),p=v.current?.getBoundingClientRect(),w=Math.max(p?.width??0,v.current?.scrollWidth??0),P=Ft(h);d(P);let H=Math.max(L.width,w),F=p?.height??220,ae=ke({anchorRect:L,overlay:{width:H,height:F},portalContainer:P,gap:4,margin:8,preferredX:"start",preferredY:"bottom",flipX:true,flipY:true});s({...ae,width:H,...$e(h)});};f();let m=()=>f();return window.addEventListener("resize",m),window.addEventListener("scroll",m,true),()=>{window.removeEventListener("resize",m),window.removeEventListener("scroll",m,true),d(null);}},[i]),useLayoutEffect(()=>{if(!i)return;let f=E.current?.querySelector(".luthor-select-trigger");if(!f)return;let m=f.getBoundingClientRect(),h=Ft(f);d(h);let L=ke({anchorRect:m,overlay:{width:m.width,height:220},portalContainer:h,gap:4,margin:8});s({...L,width:m.width,...$e(f)});let p=window.requestAnimationFrame(()=>{let w=v.current?.getBoundingClientRect(),P=Math.max(w?.width??0,v.current?.scrollWidth??0),H=Math.max(m.width,P),F=ke({anchorRect:m,overlay:{width:H,height:w?.height??220},portalContainer:h,gap:4,margin:8});s({...F,width:H,...$e(f)});});return ()=>window.cancelAnimationFrame(p)},[i]),useEffect(()=>{function f(m){let h=m.target;E.current?.contains(h)||v.current?.contains(h)||r(false);}return document.addEventListener("mousedown",f),()=>document.removeEventListener("mousedown",f)},[]);let y=o.find(f=>f.value===e);return jsxs("div",{className:"luthor-select",ref:E,children:[jsxs("button",{className:`luthor-select-trigger ${i?"open":""}`,onClick:()=>r(!i),type:"button",children:[jsx("span",{children:y?.label||n}),jsx(Ut,{size:14})]}),i&&typeof document<"u"&&createPortal(jsx("div",{ref:v,className:"luthor-select-dropdown",style:l,children:o.map(f=>jsx("button",{className:`luthor-select-option ${e===f.value?"selected":""}`,onClick:()=>{t(f.value),r(false);},type:"button",children:f.label},f.value))}),u??document.body)]})}function Ct({trigger:e,children:t,isOpen:o,onOpenChange:n}){let i=useRef(null),r=useRef(null),l=useRef(null),[s,u]=useState(void 0),[d,E]=useState(null);return useEffect(()=>{if(!o)return;let v=()=>{let f=r.current;if(!f)return;let m=f.getBoundingClientRect(),h=l.current?.getBoundingClientRect(),L=Ft(f);E(L);let p=ke({anchorRect:m,overlay:{width:h?.width??220,height:h?.height??200},portalContainer:L,gap:4,margin:8,preferredX:"start",preferredY:"bottom",flipX:true,flipY:true});u({...p,...$e(f)});},y=()=>v();return window.addEventListener("resize",y),window.addEventListener("scroll",y,true),()=>{window.removeEventListener("resize",y),window.removeEventListener("scroll",y,true),E(null);}},[o]),useLayoutEffect(()=>{if(!o)return;let v=r.current;if(!v)return;let y=v.getBoundingClientRect(),f=Ft(v);E(f);let m=ke({anchorRect:y,overlay:{width:220,height:200},portalContainer:f,gap:4,margin:8});u({...m,...$e(v)});let h=window.requestAnimationFrame(()=>{let L=l.current?.getBoundingClientRect(),p=ke({anchorRect:y,overlay:{width:L?.width??220,height:L?.height??200},portalContainer:f,gap:4,margin:8});u({...p,...$e(v)});});return ()=>window.cancelAnimationFrame(h)},[o]),useEffect(()=>{function v(y){let f=y.target;i.current?.contains(f)||l.current?.contains(f)||n(false);}return document.addEventListener("mousedown",v),()=>document.removeEventListener("mousedown",v)},[n]),jsxs("div",{className:"luthor-dropdown",ref:i,children:[jsx("div",{ref:r,onClick:()=>n(!o),children:e}),o&&typeof document<"u"&&createPortal(jsx("div",{ref:l,className:"luthor-dropdown-content",style:s,children:t}),d??document.body)]})}function ar({isOpen:e,onClose:t,title:o,children:n}){let i=useRef(null);return useEffect(()=>{function r(s){i.current&&!i.current.contains(s.target)&&t();}function l(s){s.key==="Escape"&&t();}return e&&(document.addEventListener("mousedown",r),document.addEventListener("keydown",l)),()=>{document.removeEventListener("mousedown",r),document.removeEventListener("keydown",l);}},[e,t]),e?jsx("div",{className:"luthor-dialog-overlay",children:jsxs("div",{className:"luthor-dialog",ref:i,children:[jsxs("div",{className:"luthor-dialog-header",children:[jsx("h3",{className:"luthor-dialog-title",children:o}),jsx("button",{className:"luthor-dialog-close",onClick:t,type:"button",children:jsx(Gn,{size:16})})]}),jsx("div",{className:"luthor-dialog-content",children:n})]})}):null}function sr({isVisible:e,selectionRect:t,commands:o,activeStates:n,editorTheme:i="light",hide:r,isFeatureEnabled:l=()=>true}){let u=useRef(null),[d,E]=useState(""),[v,y]=useState(""),[f,m]=useState(""),[h,L]=useState(""),[p,w]=useState(""),[P,H]=useState(""),[F,ae]=useState(null),[ie,fe]=useState(null),[K,k]=useState(null),T=!!n.isIframeEmbedSelected,x=!!n.isYouTubeEmbedSelected,D=l("iframeEmbed"),V=l("youTubeEmbed"),se=l("image"),ye=D&&T||V&&x;if(useEffect(()=>{if(!e)return;let R=G=>{let ce=G.target;ce&&(u.current?.contains(ce)||r?.());};return document.addEventListener("mousedown",R,true),document.addEventListener("touchstart",R,true),()=>{document.removeEventListener("mousedown",R,true),document.removeEventListener("touchstart",R,true);}},[e,r]),useEffect(()=>{if(!e||!T)return;let R=false;return typeof o.getIframeEmbedCaption=="function"&&o.getIframeEmbedCaption().then(G=>{R||y(G??"");}),typeof o.getIframeEmbedUrl=="function"&&o.getIframeEmbedUrl().then(G=>{R||E(G??"");}),ae(null),()=>{R=true;}},[o,T,e]),useEffect(()=>{if(!e||!n.imageSelected)return;let R=false;return typeof o.getImageCaption=="function"&&o.getImageCaption().then(G=>{R||m(G??"");}),()=>{R=true;}},[n.imageSelected,o,e]),useEffect(()=>{if(!e||!x)return;let R=false;return typeof o.getYouTubeEmbedCaption=="function"&&o.getYouTubeEmbedCaption().then(G=>{R||L(G??"");}),typeof o.getYouTubeEmbedUrl=="function"&&o.getYouTubeEmbedUrl().then(G=>{R||w(G??"");}),fe(null),()=>{R=true;}},[o,e,x]),useEffect(()=>{if(!e||!n.isLink)return;let R=false;return typeof o.getCurrentLink=="function"&&o.getCurrentLink().then(G=>{!R&&G&&H(G.url??"");}),k(null),()=>{R=true;}},[n.isLink,o,e]),!e||!t)return null;let pe={..._t(),position:"absolute",top:t.y,left:t.positionFromRight?"auto":t.x,right:t.positionFromRight?20:"auto",maxWidth:"calc(100% - 40px)",boxSizing:"border-box",zIndex:"var(--luthor-z-menu, 460)",pointerEvents:"auto"};if(ye){let R=Q=>{if(T){o.setIframeEmbedAlignment?.(Q);return}x&&o.setYouTubeEmbedAlignment?.(Q);},G=T?n.isIframeEmbedAlignedLeft:n.isYouTubeEmbedAlignedLeft,ce=T?n.isIframeEmbedAlignedCenter:n.isYouTubeEmbedAlignedCenter,Ze=T?n.isIframeEmbedAlignedRight:n.isYouTubeEmbedAlignedRight,et=T?typeof o.setIframeEmbedCaption=="function":typeof o.setYouTubeEmbedCaption=="function",Je=T?typeof o.updateIframeEmbedUrl=="function":typeof o.updateYouTubeEmbedUrl=="function",Be=T?v:h,he=T?y:L,it=T?d:p,ee=T?F:ie,Oe=()=>{if(et){if(T){o.setIframeEmbedCaption?.(v);return}o.setYouTubeEmbedCaption?.(h);}},Ce=Q=>{T?ae(Q):fe(Q);},Ge=Q=>{T?E(Q):w(Q);},lt=()=>{if(!Je)return;if(!(T?o.updateIframeEmbedUrl?.(d)??false:o.updateYouTubeEmbedUrl?.(p)??false)){Ce(T?"Enter a valid http(s) URL":"Enter a valid YouTube URL"),T&&typeof o.getIframeEmbedUrl=="function"?o.getIframeEmbedUrl().then(ve=>E(ve??"")):!T&&typeof o.getYouTubeEmbedUrl=="function"&&o.getYouTubeEmbedUrl().then(ve=>w(ve??""));return}Ce(null);};return jsxs("div",{className:"luthor-floating-toolbar","data-theme":i,ref:u,style:pe,children:[jsx(N,{onClick:()=>R("left"),active:G,title:"Align Left",children:jsx(Dt,{size:14})}),jsx(N,{onClick:()=>R("center"),active:ce,title:"Align Center",children:jsx(It,{size:14})}),jsx(N,{onClick:()=>R("right"),active:Ze,title:"Align Right",children:jsx(Bt,{size:14})}),et||Je?jsxs(Fragment,{children:[jsx("div",{className:"luthor-floating-toolbar-separator"}),jsxs("div",{className:"luthor-floating-toolbar-fields",children:[Je?jsxs("div",{className:"luthor-floating-toolbar-field-row",children:[jsx("input",{type:"url",value:it,className:`luthor-floating-toolbar-input${ee?" is-error":""}`,placeholder:T?"https://example.com/embed":"https://youtube.com/watch?v=...","aria-label":T?"Iframe URL":"YouTube URL","aria-invalid":ee?true:void 0,onChange:Q=>{Ge(Q.target.value),ee&&Ce(null);},onBlur:lt,onKeyDown:Q=>{Q.key==="Enter"&&(Q.preventDefault(),lt());}}),jsx("button",{type:"button",className:"luthor-toolbar-button luthor-floating-toolbar-action luthor-floating-toolbar-action-primary",onClick:lt,children:"Update URL"})]}):null,et?jsxs("div",{className:"luthor-floating-toolbar-field-row",children:[jsx("input",{type:"text",value:Be,className:"luthor-floating-toolbar-input",placeholder:"Add caption","aria-label":T?"Iframe caption":"YouTube caption",onChange:Q=>he(Q.target.value),onBlur:Oe,onKeyDown:Q=>{Q.key==="Enter"&&(Q.preventDefault(),Oe());}}),jsx("button",{type:"button",className:"luthor-toolbar-button luthor-floating-toolbar-action",onClick:Oe,children:"Update Caption"})]}):null]})]}):null]})}if(se&&n.imageSelected){let R=typeof o.setImageCaption=="function",G=()=>{R&&o.setImageCaption(f);};return jsxs("div",{className:"luthor-floating-toolbar","data-theme":i,ref:u,style:pe,children:[jsx(N,{onClick:()=>o.setImageAlignment("left"),active:n.isImageAlignedLeft,title:"Align Left",children:jsx(Dt,{size:14})}),jsx(N,{onClick:()=>o.setImageAlignment("center"),active:n.isImageAlignedCenter,title:"Align Center",children:jsx(It,{size:14})}),jsx(N,{onClick:()=>o.setImageAlignment("right"),active:n.isImageAlignedRight,title:"Align Right",children:jsx(Bt,{size:14})}),R?jsxs(Fragment,{children:[jsx("div",{className:"luthor-floating-toolbar-separator"}),jsxs("div",{className:"luthor-floating-toolbar-field-row",children:[jsx("input",{type:"text",value:f,className:"luthor-floating-toolbar-input",placeholder:"Add caption","aria-label":"Image caption",onChange:ce=>m(ce.target.value),onBlur:G,onKeyDown:ce=>{ce.key==="Enter"&&(ce.preventDefault(),G());}}),jsx("button",{type:"button",className:"luthor-toolbar-button luthor-floating-toolbar-action",onClick:G,children:"Update Caption"})]})]}):null]})}let X=l("bold"),Z=l("italic"),J=l("underline"),ge=l("strikethrough"),M=l("codeFormat"),ze=!!(n.unorderedList||n.orderedList||n.checkList),Me=l("blockFormat")&&!ze,be=l("link"),Qe=l("list")&&!ze,qe=X||Z||J||ge,we=M||Me||be,Te=Qe,Ye=!!n.isLink&&typeof o.updateLink=="function"&&typeof o.removeLink=="function",De=()=>{if(!Ye)return;if(!(o.updateLink?.(P)??false)){k("Enter a valid URL"),typeof o.getCurrentLink=="function"&&o.getCurrentLink().then(G=>{H(G?.url??"");});return}k(null);};return !qe&&!we&&!Te?null:jsxs("div",{className:"luthor-floating-toolbar","data-theme":i,ref:u,style:pe,children:[qe?jsxs(Fragment,{children:[X?jsx(N,{onClick:()=>o.toggleBold(),active:n.bold,title:"Bold",children:jsx(Eo,{size:14})}):null,Z?jsx(N,{onClick:()=>o.toggleItalic(),active:n.italic,title:"Italic",children:jsx(ko,{size:14})}):null,J?jsx(N,{onClick:()=>o.toggleUnderline(),active:n.underline,title:"Underline",children:jsx(Lo,{size:14})}):null,ge?jsx(N,{onClick:()=>o.toggleStrikethrough(),active:n.strikethrough,title:"Strikethrough",children:jsx(wo,{size:14})}):null]}):null,qe&&we?jsx("div",{className:"luthor-floating-toolbar-separator"}):null,we?jsxs(Fragment,{children:[M?jsx(N,{onClick:()=>o.formatText("code"),active:n.code,title:"Inline Code",children:jsx(To,{size:14})}):null,Me?jsx(N,{onClick:()=>o.toggleQuote(),active:n.isQuote,title:"Quote",children:jsx(xo,{size:14})}):null,be?jsxs(Fragment,{children:[jsx(N,{onClick:()=>n.isLink?o.removeLink():o.insertLink(),active:n.isLink,title:n.isLink?"Remove Link":"Insert Link",children:n.isLink?jsx(xt,{size:14}):jsx(zt,{size:14})}),Ye?jsxs("div",{className:"luthor-floating-toolbar-field-row",children:[jsx("input",{type:"url",value:P,className:`luthor-floating-toolbar-input${K?" is-error":""}`,placeholder:"https://example.com","aria-label":"Link URL","aria-invalid":K?true:void 0,onChange:R=>{H(R.target.value),K&&k(null);},onBlur:De,onKeyDown:R=>{R.key==="Enter"&&(R.preventDefault(),De());}}),jsx("button",{type:"button",className:"luthor-toolbar-button luthor-floating-toolbar-action luthor-floating-toolbar-action-primary",onClick:De,children:"Update Link"}),jsx("button",{type:"button",className:"luthor-toolbar-button luthor-floating-toolbar-action luthor-floating-toolbar-action-danger",onClick:()=>o.removeLink(),"aria-label":"Unlink",children:jsx(xt,{size:13})})]}):null]}):null]}):null,(qe||we)&&Te?jsx("div",{className:"luthor-floating-toolbar-separator"}):null,Te?jsxs(Fragment,{children:[jsx(N,{onClick:()=>o.toggleUnorderedList(),active:n.unorderedList,title:"Bullet List",children:jsx(Qt,{size:14})}),jsx(N,{onClick:()=>o.toggleOrderedList(),active:n.orderedList,title:"Numbered List",children:jsx(eo,{size:14})}),jsx(N,{onClick:()=>o.toggleCheckList(),active:n.checkList,title:"Checklist",children:jsx(Zt,{size:14})})]}):null]})}var nt={commands:{},activeStates:{},editorTheme:"light",isFeatureEnabled:()=>true};function Zo(e,t,o,n=()=>true){nt.commands=e,nt.activeStates=t,nt.editorTheme=o,nt.isFeatureEnabled=n;}function ur(){let e=sr,t=new FloatingToolbarExtension;return t.config={...t.config,render:o=>createElement(e,{...o,commands:nt.commands,activeStates:nt.activeStates,editorTheme:nt.editorTheme,isFeatureEnabled:nt.isFeatureEnabled}),getCommands:()=>nt.commands,getActiveStates:()=>nt.activeStates},t}var Zi=120,el=58;function tl(e,t=el){return e.length<=t?e:`${e.slice(0,t-3)}...`}function cr(){let e=window.getSelection();return !e||e.rangeCount===0?false:!e.getRangeAt(0).collapsed}function dr(e,t){if(!(e instanceof Element))return null;let o=e.closest("a");return !(o instanceof HTMLAnchorElement)||!t.contains(o)?null:o}function fr({editor:e,commands:t,editorTheme:o="light",disabled:n=false}){let i=useRef(null),r=useRef(null),l=useRef(null),s=useRef(null),[u,d]=useState(null),[E,v]=useState(false),[y,f]=useState(""),[m,h]=useState(null),[L,p]=useState(null),[w,P]=useState(null),H=useCallback(()=>{s.current!==null&&(window.clearTimeout(s.current),s.current=null);},[]),F=useCallback(()=>{H(),d(null),v(false),f(""),h(null),p(null);},[H]),ae=useCallback(()=>{H(),s.current=window.setTimeout(()=>{F();},Zi);},[H,F]),ie=useCallback((x,D)=>{let V=x.getBoundingClientRect(),se=i.current?.getBoundingClientRect(),ye=ke({anchorRect:V,overlay:{width:se?.width??340,height:se?.height??48},portalContainer:D,gap:8,margin:10,preferredX:"start",preferredY:"bottom",flipX:true,flipY:true});p({top:typeof ye.top=="number"?ye.top:0,left:typeof ye.left=="number"?ye.left:0});},[]),fe=useCallback((x,D)=>{if(typeof t.getLinkByKey!="function"){d(V=>!V||V.nodeKey!==x?V:{...V,url:D});return}t.getLinkByKey(x).then(V=>{if(!V){F();return}d(se=>!se||se.nodeKey!==x?se:{...se,url:V.url});});},[t,F]);useEffect(()=>{if(!e||n||typeof window>"u"){F(),P(null),r.current=null;return}let x=e.getRootElement();if(!x){F(),P(null),r.current=null;return}let D=x.closest(".luthor-editor-wrapper")??null;P(D),r.current=D;let V=Z=>{let J=dr(Z.target,x);if(!J)return;if(cr()){F();return}H();let ge=resolveLinkNodeKeyFromAnchor(e,J);if(!ge)return;let M=J.getAttribute("href")??J.href;d({nodeKey:ge,url:M,anchorEl:J}),ie(J,r.current),h(null),E||f(M),fe(ge,M);},se=Z=>{if(!u)return;let J=Z.relatedTarget;J&&i.current?.contains(J)||dr(J,x)||ae();},ye=()=>{cr()&&F();},pe=()=>{d(Z=>{if(!Z)return Z;let J=Z.anchorEl.isConnected&&x.contains(Z.anchorEl)?Z.anchorEl:x.querySelector(`a[data-lexical-node-key="${Z.nodeKey}"]`);return J?(ie(J,r.current),{...Z,anchorEl:J,url:J.getAttribute("href")??J.href}):(F(),null)});},X=()=>{l.current===null&&(l.current=window.requestAnimationFrame(()=>{l.current=null,pe();}));};return x.addEventListener("mouseover",V),x.addEventListener("mouseout",se),document.addEventListener("selectionchange",ye),window.addEventListener("scroll",X,true),window.addEventListener("resize",X),()=>{x.removeEventListener("mouseover",V),x.removeEventListener("mouseout",se),document.removeEventListener("selectionchange",ye),window.removeEventListener("scroll",X,true),window.removeEventListener("resize",X),l.current!==null&&(cancelAnimationFrame(l.current),l.current=null),H();}},[t,n,e,u,E,F,ae,fe,ie,H]),useLayoutEffect(()=>{u&&ie(u.anchorEl,r.current);},[u,E,ie]);let K=useMemo(()=>{if(!(!u||!L))return {...$e(u.anchorEl),position:w?"absolute":"fixed",top:L.top,left:L.left,zIndex:"var(--luthor-z-menu, 460)"}},[u,L,w]);if(!u||!L||typeof document>"u")return null;let k=()=>{(t.removeLinkByKey?.(u.nodeKey)??false)&&F();},T=()=>{let x=y.trim();if(!(t.updateLinkByKey?.(u.nodeKey,x)??false)){h("Enter a valid URL"),fe(u.nodeKey,u.url);return}d(V=>!V||V.nodeKey!==u.nodeKey?V:{...V,url:x}),h(null),v(false),queueMicrotask(()=>{fe(u.nodeKey,x);});};return createPortal(jsx("div",{ref:i,className:"luthor-floating-toolbar luthor-link-hover-bubble","data-theme":o,style:K,onMouseEnter:H,onMouseLeave:ae,children:E?jsxs(Fragment,{children:[jsx("input",{type:"url",value:y,className:`luthor-link-hover-bubble-input${m?" is-error":""}`,placeholder:"https://example.com","aria-label":"Edit link URL","aria-invalid":m?true:void 0,onChange:x=>{f(x.target.value),m&&h(null);},onKeyDown:x=>{if(x.key==="Enter"){x.preventDefault(),T();return}x.key==="Escape"&&(x.preventDefault(),v(false),f(u.url),h(null));}}),jsx("button",{type:"button",className:"luthor-toolbar-button luthor-link-hover-bubble-button luthor-link-hover-bubble-button-primary",onClick:T,children:"Update"}),jsx("button",{type:"button",className:"luthor-toolbar-button luthor-link-hover-bubble-button",onClick:()=>{v(false),f(u.url),h(null);},children:"Cancel"})]}):jsxs(Fragment,{children:[jsx("span",{className:"luthor-link-hover-bubble-url",title:u.url,children:tl(u.url)}),jsx("button",{type:"button",className:"luthor-toolbar-button luthor-link-hover-bubble-button",onClick:()=>{f(u.url),v(true),h(null);},children:"Edit"}),jsx("button",{type:"button",className:"luthor-toolbar-button luthor-link-hover-bubble-button luthor-link-hover-bubble-button-danger",onClick:k,"aria-label":"Unlink",children:jsx(xt,{size:13})})]})}),w??document.body)}var nl=400,rl=14,il=.6,en=2;function ll(e){return e?e.split(`
|
|
2
|
+
`):[""]}function tn(e){return Array.from({length:Math.max(1,e)},(t,o)=>`${o+1}`).join(`
|
|
3
|
+
`)}function on(e){let t=Number.parseFloat(e);return Number.isFinite(t)?t:0}function al(e){let o=(on(e.fontSize)||rl)*il;if(typeof document>"u")return o;try{if(!document.body)return o;let n="0000000000",i=document.createElement("span");i.textContent=n,i.style.position="absolute",i.style.visibility="hidden",i.style.whiteSpace="pre",i.style.font=e.font,i.style.fontFamily=e.fontFamily,i.style.fontSize=e.fontSize,i.style.fontWeight=e.fontWeight,i.style.letterSpacing=e.letterSpacing,i.style.lineHeight=e.lineHeight,i.style.padding="0",i.style.border="0",i.style.margin="0",document.body.appendChild(i);let r=i.getBoundingClientRect().width;if(i.remove(),Number.isFinite(r)&&r>0)return r/n.length}catch{return o}return o}function sl(e){let t=window.getComputedStyle(e),o=on(t.paddingLeft)+on(t.paddingRight),n=Math.max(0,e.clientWidth-o);if(n<=0)return 0;let i=al(t);return i<=0?0:Math.max(1,Math.floor(n/i))}function ul(e){let t=window.getComputedStyle(e),o=Number.parseInt(t.tabSize,10);return Number.isFinite(o)&&o>0?o:en}function cl(e,t,o){if(t<=0)return 1;let n=0;for(let i of e){if(i===" "){let r=n%o,l=r===0?o:o-r;n+=l;continue}n+=1;}return Math.max(1,Math.ceil(n/t))}function dl(e,t,o){if(t<=0)return tn(e.length);let n=[];for(let i=0;i<e.length;i+=1){n.push(`${i+1}`);let r=cl(e[i]??"",t,o);for(let l=1;l<r;l+=1)n.push("");}return n.join(`
|
|
4
|
+
`)}function vr({mode:e,onModeChange:t,labels:o,availableModes:n,isConverting:i}){let r=h=>h==="visual"?"visual-editor":h,l=(n??[]).includes("visual-editor")?"visual-editor":"visual",s=h=>h==="visual-editor"?l:h,u=["visual-only","visual-editor","json","markdown","html"],d=n??["visual-only","visual-editor","json","markdown","html"],E=new Set(d.map(r)),v=u.filter(h=>E.has(h)),y=r(e),f=i?r(i):null,m={"visual-only":o?.["visual-only"]??"Visual Only","visual-editor":o?.["visual-editor"]??o?.visual??"Visual Editor",json:o?.json??"JSON",markdown:o?.markdown??"Markdown",html:o?.html??"HTML"};return jsx("div",{className:"luthor-mode-tabs",children:v.map(h=>jsxs("button",{className:`luthor-mode-tab ${y===h?"active":""}`,onClick:()=>t(s(h)),children:[m[h],f===h&&jsx("span",{className:"luthor-tab-converting-spinner"})]},h))})}function Oo({value:e,onChange:t,placeholder:o,className:n,wrap:i,showLineNumbers:r=true}){let l=useRef(null),s=useRef(null),u=(i??"off")!=="off",d=useMemo(()=>ll(e),[e]),E=d.length,[v,y]=useState(0),[f,m]=useState(en),h=useCallback(()=>{if(!r||!u){y(0),m(en);return}let w=l.current;if(!w)return;let P=sl(w),H=ul(w);y(F=>F===P?F:P),m(F=>F===H?F:H);},[u,r]),L=useMemo(()=>!u||v<=0?tn(E):dl(d,v,f),[u,E,d,v,f]),p=`luthor-source-view${n?` ${n}`:""}`;return useLayoutEffect(()=>{let w=l.current;if(!w)return;w.style.height="auto";let P=Math.max(0,w.offsetHeight-w.clientHeight),H=Math.max(w.scrollHeight+P+1,nl);w.style.height=`${H}px`;},[e]),useLayoutEffect(()=>{h();},[h,e]),useEffect(()=>{if(!r||!u)return;let w=l.current;if(!w||typeof ResizeObserver>"u")return;let P=new ResizeObserver(()=>{h();});return P.observe(w),()=>{P.disconnect();}},[u,h,r]),useEffect(()=>{if(!r)return;let w=l.current,P=s.current;if(!w||!P)return;let H=()=>{P.scrollTop=w.scrollTop;};return H(),w.addEventListener("scroll",H,{passive:true}),()=>{w.removeEventListener("scroll",H);}},[L,r]),r?jsxs("div",{className:"luthor-source-view-shell",style:{"--luthor-source-line-number-gutter-width":`${Math.max(2,String(E).length)}ch`},children:[jsx("div",{ref:s,className:"luthor-source-view-line-numbers","aria-hidden":"true",children:L}),jsx("textarea",{ref:l,className:`${p} luthor-source-view--with-line-numbers`,value:e,onChange:w=>t(w.target.value),placeholder:o,spellCheck:false,wrap:i??"off"})]}):jsx("textarea",{ref:l,className:p,value:e,onChange:w=>t(w.target.value),placeholder:o,spellCheck:false,wrap:i??"off"})}function kr(e,t){let o=`luthor-preset-${e}`;return {placeholder:t,classNames:{container:`luthor-preset ${o} ${o}__container`,contentEditable:`luthor-content-editable ${o}__content`,placeholder:`luthor-placeholder ${o}__placeholder`}}}function Ho(e){return e.replace(/\r\n?/g,`
|
|
5
|
+
`)}function ml(e){return e.replace(/&#(9|10|13|32|160);/g,(t,o)=>{switch(o){case "9":return " ";case "10":return `
|
|
6
|
+
`;case "13":return "\r";case "32":return " ";case "160":return " ";default:return t}})}function gl(e,t){let o=t.replace(/([*~])/g,"\\$1"),n=e;return n=n.replace(new RegExp(`${o}(\\s+)([^\\n]+?)${o}`,"g"),(i,r,l)=>`${r}${t}${l}${t}`),n=n.replace(new RegExp(`${o}([^\\n]+?)(\\s+)${o}`,"g"),(i,r,l)=>`${t}${r}${t}${l}`),n}function fl(e){return ["***","**","~~","*"].reduce((o,n)=>gl(o,n),e)}var hl=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),pl=new Set(["pre","script","style","textarea"]),bl=new Set(["address","article","aside","blockquote","details","dialog","div","dl","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hr","li","main","menu","nav","ol","p","pre","section","table","tbody","td","tfoot","th","thead","tr","ul"]),yl=1,Ro=3,Cl=8;function Lr(e){return e.nodeType===yl}function nn(e){return e.nodeType===Ro&&(e.textContent??"").trim().length>0}function No(e){return e.tagName.toLowerCase()}function wr(e){return Array.from(e.childNodes).filter(t=>t.nodeType!==Ro?true:nn(t))}function vl(e){let t=e.outerHTML,o=t.indexOf(">");return o===-1?`<${No(e)}>`:t.slice(0,o+1)}function El(e){let t=No(e);if(hl.has(t)||pl.has(t))return false;let o=wr(e);if(o.length===0||o.some(nn))return false;let n=o.filter(Lr);return n.length===0?false:n.every(i=>bl.has(No(i)))}function Tr(e,t){let o=" ".repeat(Math.max(t,0));if(e.nodeType===Cl)return `${o}<!--${e.data}-->`;if(e.nodeType===Ro){let r=Ho(e.textContent??"");return r.trim()?`${o}${r.trim()}`:null}if(!Lr(e))return null;if(!El(e))return `${o}${e.outerHTML}`;let n=No(e),i=[`${o}${vl(e)}`];for(let r of wr(e)){let l=Tr(r,t+1);l&&i.push(l);}return i.push(`${o}</${n}>`),i.join(`
|
|
7
|
+
`)}function kl(e){if(typeof DOMParser>"u")return e;let t=new DOMParser().parseFromString(e,"text/html"),n=Array.from(t.body.childNodes).filter(i=>i.nodeType!==Ro?true:nn(i)).map(i=>Tr(i,0)).filter(i=>typeof i=="string"&&i.length>0);return n.length===0?t.body.innerHTML.trim()||e:n.join(`
|
|
8
|
+
`)}function Sr(e){let t=Ho(e).trim();if(!t)return "";try{let o=JSON.parse(t);return JSON.stringify(o,null,2)}catch{return t}}function xr(e){return fl(ml(Ho(e))).trim()}function Ir(e){let t=Ho(e).trim();if(!t)return "";try{return kl(t)}catch{return t}}var ln=6,Sl=["#ffffff","#f2f2f2","#d9d9d9","#bfbfbf","#808080","#404040","#000000","#fbe5d6","#f8cbad","#f4b183","#ed7d31","#c55a11","#fff2cc","#ffe699","#ffd966","#ffc000","#bf9000","#7f6000","#e2f0d9","#c6e0b4","#a9d18e","#70ad47","#548235","#375623","#ddebf7","#bdd7ee","#9dc3e6","#5b9bd5","#2f75b5","#1f4e78","#e4dfec","#d9c2e9","#b4a7d6","#8e7cc3","#674ea7","#351c75"],xl=[{title:"1. a. i. style",pattern:"decimal-alpha-roman"},{title:"A. a. i. style",pattern:"upper-alpha-lower-alpha"},{title:"1. 1.1 1.2 style",pattern:"decimal-hierarchical"},{title:"I. A. 1. style",pattern:"upper-roman-upper-alpha"}],Il=[{title:"Dot / Circle / Square",pattern:"disc-circle-square"},{title:"Arrow / Diamond / Dot",pattern:"arrow-diamond-disc"},{title:"Square / Square / Square",pattern:"square-square-square"},{title:"Arrow / Circle / Square",pattern:"arrow-circle-square"}];function Fl(e){switch(e){case "disc-circle-square":return ["disc","circle","square"];case "arrow-diamond-disc":return ["arrow","diamond","disc"];case "square-square-square":return ["square","square","square"];case "arrow-circle-square":return ["arrow","circle","square"]}}function Ml({type:e,cy:t}){switch(e){case "disc":return jsx("circle",{cx:"16",cy:t,r:"3.2",className:"luthor-unordered-variant-marker"});case "circle":return jsx("circle",{cx:"16",cy:t,r:"3.2",className:"luthor-unordered-variant-marker-open"});case "square":return jsx("rect",{x:"12.8",y:t-3.2,width:"6.4",height:"6.4",className:"luthor-unordered-variant-marker"});case "diamond":return jsx("path",{d:`M16 ${t-3.8} L19.8 ${t} L16 ${t+3.8} L12.2 ${t} Z`,className:"luthor-unordered-variant-marker"});case "arrow":return jsx("path",{d:`M11.6 ${t-2.8} L16.8 ${t} L11.6 ${t+2.8} M11.6 ${t} H19.6`,className:"luthor-unordered-variant-arrow"})}}function Ol({pattern:e}){let t=Fl(e),o=[12.5,24.5,36.5,48.5,60.5],n=e==="disc-circle-square"?[0,1,1,2,0]:e==="arrow-diamond-disc"?[0,1,1,2,0]:e==="square-square-square"?[0,1,2,1,0]:[0,1,1,2,0],i=[t[0],t[1],t[1],t[2],t[0]];return jsxs("svg",{width:"94",height:"74",viewBox:"0 0 94 74",role:"img","aria-hidden":"true",className:"luthor-unordered-variant-svg",children:[jsx("rect",{x:"0.5",y:"0.5",width:"93",height:"73",rx:"3",className:"luthor-unordered-variant-frame"}),o.map((r,l)=>{let s=n[l]??0,u=12+s*12,d=24+s*12,E=57-s*10;return jsxs("g",{children:[jsx("g",{transform:`translate(${u-16}, 0)`,children:jsx(Ml,{type:i[l]??t[0],cy:r})}),jsx("rect",{x:d,y:r-2.5,width:E,height:"5",rx:"2.5",className:"luthor-unordered-variant-line"})]},`${e}-row-${l}`)})]})}function Mr({variant:e}){return jsxs("svg",{width:"78",height:"42",viewBox:"0 0 78 42",role:"img","aria-hidden":"true",className:"luthor-checklist-variant-svg",children:[jsx("rect",{x:"0.5",y:"0.5",width:"77",height:"41",rx:"3",className:"luthor-checklist-variant-frame"}),jsx("rect",{x:"10.5",y:"10.5",width:"10",height:"10",rx:"1.5",className:"luthor-checklist-variant-box"}),jsx("rect",{x:"10.5",y:"24.5",width:"10",height:"10",rx:"1.5",className:"luthor-checklist-variant-box"}),jsx("path",{d:"M12.6 29.2l2 2.2 3.8-4.3",className:"luthor-checklist-variant-check"}),jsx("rect",{x:"26.5",y:"11.8",width:"40",height:"6",rx:"2",className:"luthor-checklist-variant-line"}),jsx("rect",{x:"26.5",y:"25.8",width:"40",height:"6",rx:"2",className:"luthor-checklist-variant-line"}),e==="strikethrough"?jsx(Fragment,{children:jsx("line",{x1:"26.5",y1:"28.8",x2:"66.5",y2:"28.8",className:"luthor-checklist-variant-strike"})}):null]})}function Nl({pattern:e}){let t=[12.5,24.5,36.5,48.5,60.5],o=[0,1,1,2,0],n=e==="decimal-alpha-roman"?["1.","a.","b.","i.","2."]:e==="upper-alpha-lower-alpha"?["A.","a.","b.","i.","B."]:e==="decimal-hierarchical"?["1.","1.1.","1.2.","1.2.1.","2."]:["I.","A.","B.","1.","II."];return jsxs("svg",{width:"94",height:"74",viewBox:"0 0 94 74",role:"img","aria-hidden":"true",className:"luthor-ordered-variant-svg",children:[jsx("rect",{x:"0.5",y:"0.5",width:"93",height:"73",rx:"3",className:"luthor-ordered-variant-frame"}),t.map((i,r)=>{let l=o[r]??0,s=9+l*12,u=26+l*12,d=56-l*10;return jsxs("g",{children:[jsx("text",{x:s,y:i+2.8,className:"luthor-ordered-variant-label",children:n[r]}),jsx("rect",{x:u,y:i-2.5,width:d,height:"5",rx:"2.5",className:"luthor-ordered-variant-line"})]},`${e}-ordered-row-${r}`)})]})}function Ao(e){return e.trim().toLowerCase().replace(/\s+/g,"")}function Hl(e,t){let o=Ao(t);for(let n of e)if(Ao(n.value)===o)return n.color;return null}function Rl(e,t,o){if(!e||e==="default")return o;let n=Hl(t,e);return n||e}function Pl(e,t){let o=e.trim();return /^#([\da-f]{6})$/i.test(o)?o:/^#([\da-f]{3})$/i.test(o)?`#${o.slice(1).split("").map(i=>`${i}${i}`).join("")}`:t}var an="Inherited",Po="16px",sn="1.5";function Le(e){return e.trim().toLowerCase().replace(/\s+/g,"")}function Or(e){let t=e.split(",")[0]??"";return Le(t.replace(/["']/g,""))}function zo(e){let t=e.trim().toLowerCase().match(/^(-?\d*\.?\d+)px$/);if(!t)return null;let o=Number(t[1]);return Number.isFinite(o)?o:null}function Ot(){if(typeof window>"u")return null;let t=window.getSelection()?.anchorNode;if(!t)return null;let o=t.nodeType===Node.ELEMENT_NODE?t:t.parentElement;if(!o||!o.closest(".luthor-content-editable"))return null;let i=window.getComputedStyle(o);return {fontFamily:i.fontFamily,fontSize:i.fontSize,lineHeight:i.lineHeight}}function rn(){if(typeof window>"u"||typeof document>"u")return null;let e=document.querySelector(".luthor-content-editable");if(!(e instanceof HTMLElement))return null;let t=window.getComputedStyle(e);return {fontFamily:t.fontFamily,fontSize:t.fontSize,lineHeight:t.lineHeight}}function Nr(e){return (e.split(",")[0]?.trim()??"").replace(/^['"]|['"]$/g,"").trim()}function Al(e,t){let o=Le(e);if(o&&o!=="inherit"){let i=Nr(e);if(i)return i}return Nr(t?.fontFamily??"")||an}function zl(e,t){let o=Le(e);return o&&o!=="inherit"?e.trim():(t?.fontSize??"").trim()||Po}function Dl(e,t){let o=Le(e);return o&&o!=="normal"?e.trim():(t?.lineHeight??"").trim()||sn}function Bl(e,t){if(!e)return null;let o=Or(e);return o?t.find(i=>Le(i.value)===o?true:Or(i.fontFamily)===o)?.value??null:null}function Ul(e,t){if(!e)return null;let o=Le(e),n=t.find(l=>Le(String(l.value))===o?true:Le(String(l.fontSize))===o);if(n)return String(n.value);let i=zo(e);if(i==null)return null;let r=null;for(let l of t){let s=zo(String(l.fontSize));if(s==null)continue;let u=Math.abs(s-i);(!r||u<r.distance)&&(r={value:String(l.value),distance:u});}return r?.value??null}function Kl(e,t,o){if(!e)return null;let n=Le(e),i=o.find(d=>Le(d.value)===n?true:Le(d.lineHeight)===n);if(i)return i.value;let r=t?zo(t):null,l=zo(e),s=null;if(l!=null&&r!=null&&r>0)s=l/r;else {let d=Number(e);Number.isFinite(d)&&(s=d);}if(s==null)return null;let u=null;for(let d of o){let E=Number(d.lineHeight);if(!Number.isFinite(E))continue;let v=Math.abs(E-s);(!u||v<u.distance)&&(u={value:d.value,distance:v});}return u?.value??null}function Hr({title:e,value:t,options:o,recentColors:n,active:i,fallbackColor:r,highlight:l,onChange:s,onClear:u,onAddRecent:d}){let E=useRef(null),v=useRef(null),y=useRef(null),f=useRef(null),m=useRef(null),[h,L]=useState(false),[p,w]=useState(void 0),[P,H]=useState(null),F=Rl(t,o,r),ae=useMemo(()=>Sl,[]),ie=useMemo(()=>{let k=[...n].slice(0,ln);for(;k.length<ln;)k.push("");return k},[n]);useEffect(()=>()=>{f.current&&window.cancelAnimationFrame(f.current);},[]);let fe=useCallback(k=>{m.current=k,!f.current&&(f.current=window.requestAnimationFrame(()=>{f.current=null,m.current&&(s(m.current),m.current=null);}));},[s]),K=useCallback(k=>{let T=E.current;if(!T)return;let x=T.getBoundingClientRect(),D=v.current?.getBoundingClientRect(),V=Ft(T);H(V);let se=ke({anchorRect:x,overlay:{width:D?.width??248,height:D?.height??340},portalContainer:V,gap:6,margin:8,preferredX:"start",preferredY:"bottom",flipX:true,flipY:true});w({...se,visibility:k?"visible":"hidden",...$e(T)});},[]);return useLayoutEffect(()=>{if(!h)return;K(false);let k=window.requestAnimationFrame(()=>{K(true);});return ()=>{window.cancelAnimationFrame(k);}},[h,K]),useEffect(()=>{if(!h)return;let k=D=>{let V=D.target;E.current?.contains(V)||v.current?.contains(V)||L(false);},T=D=>{D.key==="Escape"&&L(false);},x=()=>K(true);return window.addEventListener("resize",x),window.addEventListener("scroll",x,true),document.addEventListener("mousedown",k),document.addEventListener("keydown",T),()=>{window.removeEventListener("resize",x),window.removeEventListener("scroll",x,true),document.removeEventListener("mousedown",k),document.removeEventListener("keydown",T),H(null);}},[h,K]),jsxs(Fragment,{children:[jsxs("button",{ref:E,type:"button",className:`luthor-toolbar-button luthor-color-button${i?" active":""}${l?" is-highlight":""}`,title:e,"aria-label":e,onClick:()=>L(k=>!k),children:[l?jsx(Bn,{size:15,className:"luthor-color-button-highlighter"}):jsx("span",{className:"luthor-color-button-letter",children:"A"}),jsx("span",{className:"luthor-color-button-indicator",style:{backgroundColor:F}})]}),h&&typeof document<"u"&&createPortal(jsxs("div",{ref:v,className:"luthor-color-picker",style:p,children:[jsx("div",{className:"luthor-color-picker-header",children:jsx("span",{className:"luthor-color-picker-title",children:e})}),jsxs("div",{className:"luthor-color-picker-section",children:[jsx("p",{className:"luthor-color-picker-label",children:"Colors"}),jsx("div",{className:"luthor-color-swatch-grid",children:ae.map(k=>jsx("button",{type:"button",className:"luthor-color-swatch",style:{backgroundColor:k},"aria-label":`Use color ${k}`,onClick:()=>{s(k),d(k),L(false);}},k))})]}),jsxs("div",{className:"luthor-color-picker-section",children:[jsx("p",{className:"luthor-color-picker-label",children:"Recent colors"}),jsx("div",{className:"luthor-color-swatch-row",children:ie.map((k,T)=>jsx("button",{type:"button",className:"luthor-color-swatch",style:{backgroundColor:k||"transparent"},"aria-label":k?`Use recent color ${k}`:"Empty recent color slot",disabled:!k,onClick:()=>{k&&(s(k),d(k),L(false));}},`${k||"empty"}-${T}`))})]}),jsxs("div",{className:"luthor-color-picker-footer",children:[jsx("button",{type:"button",className:"luthor-color-picker-clear",onClick:()=>{u(),L(false);},children:"Reset to Default"}),jsxs("button",{type:"button",className:"luthor-color-picker-custom",onClick:()=>y.current?.click(),children:[jsx(Un,{size:14}),jsx("span",{children:"Custom Color"})]}),jsx("input",{ref:y,type:"color",className:"luthor-color-picker-native luthor-color-picker-native-hidden",value:Pl(F,r),onInput:k=>{fe(k.target.value);},onChange:k=>{let T=k.target.value;s(T),d(T);}})]})]}),P??document.body)]})}function _l(e,t){let o=useRef(null),n=useRef(null);return {handlers:useMemo(()=>({insertFromUrl:()=>{let r=prompt("Enter image URL:");if(!r)return;let l=prompt("Enter alt text:")||"",s=prompt("Enter caption (optional):")||void 0;e.insertImage({src:r,alt:l,caption:s});},insertFromFile:()=>o.current?.click(),insertGifFromUrl:()=>{let r=prompt("Enter GIF URL:");if(!r)return;let l=prompt("Enter alt text (optional):")||"GIF";e.insertImage({src:r,alt:l});},insertGifFromFile:()=>n.current?.click(),handleUpload:async r=>{let l=r.target.files?.[0];if(!l)return;let s;if(t)try{s=await t(l);}catch{alert("Failed to upload image");return}else s=URL.createObjectURL(l);e.insertImage({src:s,alt:l.name,file:l}),r.target.value="";},handleGifUpload:async r=>{let l=r.target.files?.[0];if(!l)return;if(!(l.type==="image/gif"||l.name.toLowerCase().endsWith(".gif"))){alert("Please select a GIF file."),r.target.value="";return}let u;if(t)try{u=await t(l);}catch{alert("Failed to upload GIF");return}else u=URL.createObjectURL(l);e.insertImage({src:u,alt:l.name||"GIF",file:l}),r.target.value="";},setAlignment:r=>{e.setImageAlignment(r);},setCaption:()=>{let r=prompt("Enter caption:")||"";e.setImageCaption(r);}}),[e,t]),fileInputRef:o,gifInputRef:n}}function Vl(e){return useMemo(()=>({insertIframe:()=>{let t=prompt("Enter iframe URL:");t&&typeof e.insertIframeEmbed=="function"&&e.insertIframeEmbed(t);},insertYouTube:()=>{let t=prompt("Enter YouTube URL:");t&&typeof e.insertYouTubeEmbed=="function"&&e.insertYouTubeEmbed(t);}}),[e])}function jl(e,t){switch(e){case "fontFamily":return t("fontFamily");case "fontSize":return t("fontSize");case "lineHeight":return t("lineHeight");case "textColor":return t("textColor");case "textHighlight":return t("textHighlight");case "subscript":return t("subscript");case "superscript":return t("superscript");case "blockFormat":case "quote":case "alignLeft":case "alignCenter":case "alignRight":case "alignJustify":return t("blockFormat");case "codeBlock":return t("code");case "unorderedList":case "orderedList":case "checkList":case "indentList":case "outdentList":return t("list");case "horizontalRule":return t("horizontalRule");case "table":return t("table");case "image":return t("image");case "emoji":return t("emoji");case "embed":return t("iframeEmbed")||t("youtubeEmbed");case "undo":case "redo":return t("history");default:return true}}function $l(e,t,o){return jl(e,t)?o?.[e]!==false:false}function ql(e,t,o){return {sections:e.sections.map(n=>({...n,items:n.items.filter(i=>$l(i,t,o))})).filter(n=>n.items.length>0)}}function Rr({commands:e,hasExtension:t,activeStates:o,isDark:n,toggleTheme:i,onCommandPaletteOpen:r,imageUploadHandler:l,classNames:s,toolbarStyleVars:u,layout:d,toolbarVisibility:E,headingOptions:v,paragraphLabel:y,isListStyleDropdownEnabled:f=true}){let{handlers:m,fileInputRef:h,gifInputRef:L}=_l(e,l),p=Vl(e),w=t("iframeEmbed")||t("youtubeEmbed"),P=o.isIframeEmbedSelected||o.isYouTubeEmbedSelected,[H,F]=useState(false),[ae,ie]=useState(false),[fe,K]=useState(false),[k,T]=useState(false),[x,D]=useState(false),[V,se]=useState(false),[ye,pe]=useState(false),[X,Z]=useState(false),[J,ge]=useState("default"),[M,ze]=useState([{value:"default",label:an}]),[Me,be]=useState("default"),[Qe,qe]=useState([{value:"default",label:Po}]),[we,Te]=useState("default"),[Ye,De]=useState([{value:"default",label:sn}]),[R,G]=useState("default"),[ce,Ze]=useState([{value:"default",label:"Default",color:"inherit"}]),[et,Je]=useState([]),[Be,he]=useState("default"),[it,ee]=useState([{value:"default",label:"Default",color:"transparent"}]),[Oe,Ce]=useState([]),[Ge,lt]=useState(0),[Ue,Q]=useState({rows:3,columns:3,includeHeaders:false}),ve=useRef(null),at=useRef("");useEffect(()=>{if(typeof document>"u")return;let C=()=>{ve.current===null&&(ve.current=window.requestAnimationFrame(()=>{ve.current=null;let b=window.getSelection();if(!b||b.rangeCount===0||!b.getRangeAt(0).collapsed)return;let A=Ot();if(!A)return;let B=`${A.fontFamily}|${A.fontSize}|${A.lineHeight}`;B!==at.current&&(at.current=B,lt(W=>W+1));}));};return document.addEventListener("selectionchange",C),()=>{document.removeEventListener("selectionchange",C),ve.current!==null&&(cancelAnimationFrame(ve.current),ve.current=null);}},[]);let st=useMemo(()=>t("emoji")?typeof e.getEmojiSuggestions=="function"?e.getEmojiSuggestions(""):typeof e.getEmojiCatalog=="function"?e.getEmojiCatalog():[]:[],[e,t]);useEffect(()=>{if(!t("fontFamily")||typeof e.getFontFamilyOptions!="function")return;let C=Ot()??rn(),b=e.getFontFamilyOptions().map(B=>({value:B.value,label:Le(B.value)==="default"?Al(B.fontFamily,C):B.label})),A=b.length>0?b:[{value:"default",label:an}];ze(A),ge(B=>A.some(W=>W.value===B)?B:"default");},[e,t]),useEffect(()=>{if(!t("fontFamily")||typeof e.getCurrentFontFamily!="function")return;let C=e.getFontFamilyOptions;if(typeof C!="function")return;let b=false;return e.getCurrentFontFamily().then(A=>{if(b)return;if(A&&A!=="default"){ge(A);return}let B=Ot(),W=Bl(B?.fontFamily,C());ge(W??"default");}),()=>{b=true;}},[o,e,t,Ge]),useEffect(()=>{if(!t("fontSize")||typeof e.getFontSizeOptions!="function")return;let C=Ot()??rn(),b=e.getFontSizeOptions().map(W=>({value:String(W.value).trim(),label:Le(String(W.value))==="default"?zl(String(W.fontSize),C):String(W.label).trim()})).filter(W=>W.value.length>0&&W.label.length>0),A=b.some(W=>Le(W.value)==="default"),B=b.length===0?[{value:"default",label:Po}]:A?b:[{value:"default",label:Po},...b];qe(B),be(W=>B.some(me=>me.value===W)?W:"default");},[e,t]),useEffect(()=>{if(!t("fontSize")||typeof e.getCurrentFontSize!="function")return;let C=e.getFontSizeOptions;if(typeof C!="function")return;let b=false;return e.getCurrentFontSize().then(A=>{if(b)return;if(A&&A!=="default"){be(A);return}let B=Ot(),W=Ul(B?.fontSize,C());be(W??"default");}),()=>{b=true;}},[o,e,t,Ge]),useEffect(()=>{if(!t("lineHeight")||typeof e.getLineHeightOptions!="function")return;let C=Ot()??rn(),b=e.getLineHeightOptions().map(B=>({value:B.value,label:Le(B.value)==="default"?Dl(B.lineHeight,C):B.label})),A=b.length>0?b:[{value:"default",label:sn}];De(A);},[e,t]),useEffect(()=>{if(!t("lineHeight")||typeof e.getCurrentLineHeight!="function")return;let C=e.getLineHeightOptions;if(typeof C!="function")return;let b=false;return e.getCurrentLineHeight().then(A=>{if(b)return;if(A){Te(A);return}let B=Ot(),W=Kl(B?.lineHeight,B?.fontSize,C());Te(W??"default");}),()=>{b=true;}},[o,e,t,Ge]),useEffect(()=>{if(!t("textColor")||typeof e.getTextColorOptions!="function")return;let C=e.getTextColorOptions().map(b=>({value:b.value,label:b.label,color:b.color}));C.length>0&&Ze(C);},[e,t]),useEffect(()=>{if(!t("textColor")||typeof e.getCurrentTextColor!="function")return;let C=false;return e.getCurrentTextColor().then(b=>{C||G(b??"default");}),()=>{C=true;}},[o,e,t,Ge]),useEffect(()=>{if(!t("textHighlight")||typeof e.getTextHighlightOptions!="function")return;let C=e.getTextHighlightOptions().map(b=>({value:b.value,label:b.label,color:b.backgroundColor}));C.length>0&&ee(C);},[e,t]),useEffect(()=>{if(!t("textHighlight")||typeof e.getCurrentTextHighlight!="function")return;let C=false;return e.getCurrentTextHighlight().then(b=>{C||he(b??"default");}),()=>{C=true;}},[o,e,t,Ge]);let tt=useMemo(()=>{if(!v||v.length===0)return [...je];let C=new Set,b=[];for(let A of v)!je.includes(A)||C.has(A)||(C.add(A),b.push(A));return b.length>0?b:[...je]},[v]),gt=y?.trim()||"Paragraph",ot=useMemo(()=>{let C=tt.map(b=>({value:b,label:`Heading ${b.slice(1)}`}));return [{value:"p",label:gt},...C]},[tt,gt]),ft=o.isH1?"h1":o.isH2?"h2":o.isH3?"h3":o.isH4?"h4":o.isH5?"h5":o.isH6?"h6":"p",Ke=ot.some(C=>C.value===ft)?ft:"p",We=C=>{C==="p"?e.toggleParagraph():C.startsWith("h")&&tt.includes(C)&&e.toggleHeading(C);},_e=C=>{C==="default"?e.clearFontFamily?.():e.setFontFamily?.(C),ge(C);},Se=C=>{C==="default"?e.clearFontSize?.():e.setFontSize?.(C),be(C);},Ve=C=>{e.setLineHeight?.(C),Te(C);},ht=(C,b)=>{C(A=>{let B=Ao(b),W=A.filter(me=>Ao(me)!==B);return [b,...W].slice(0,ln)});},Rt=C=>{if(C==="default"){e.clearTextColor?.(),G("default");return}e.setTextColor?.(C),G(C);},Ne=C=>{if(C==="default"){e.clearTextHighlight?.(),he("default");return}e.setTextHighlight?.(C),he(C);},Lt=C=>{if(typeof e.setOrderedListPattern=="function"){e.setOrderedListPattern(C);return}e.toggleOrderedList();},wt=C=>{if(typeof e.setUnorderedListPattern=="function"){e.setUnorderedListPattern(C);return}e.toggleUnorderedList();},Tt=C=>{if(typeof e.setCheckListVariant=="function"){e.setCheckListVariant(C);return}e.toggleCheckList();},pt=C=>{switch(C){case "fontFamily":return t("fontFamily")?jsx(io,{value:J,onValueChange:_e,options:M,placeholder:"Font"},"fontFamily"):null;case "fontSize":return t("fontSize")?jsx(io,{value:Me,onValueChange:Se,options:Qe,placeholder:"Size"},"fontSize"):null;case "lineHeight":return t("lineHeight")?jsx(io,{value:we,onValueChange:Ve,options:Ye,placeholder:"Line"},"lineHeight"):null;case "textColor":return t("textColor")?jsx(Hr,{title:"Text Color",value:R,options:ce,recentColors:et,active:o.hasCustomTextColor,fallbackColor:"#0f172a",onChange:Rt,onClear:()=>Rt("default"),onAddRecent:b=>ht(Je,b)},"textColor"):null;case "textHighlight":return t("textHighlight")?jsx(Hr,{title:"Text Highlight",value:Be,options:it,recentColors:Oe,active:o.hasTextHighlight,fallbackColor:"#fef08a",highlight:true,onChange:Ne,onClear:()=>Ne("default"),onAddRecent:b=>ht(Ce,b)},"textHighlight"):null;case "bold":return jsx(N,{onClick:()=>e.toggleBold(),active:o.bold,title:"Bold (Ctrl+B)",children:jsx(Eo,{size:16})},"bold");case "italic":return jsx(N,{onClick:()=>e.toggleItalic(),active:o.italic,title:"Italic (Ctrl+I)",children:jsx(ko,{size:16})},"italic");case "underline":return jsx(N,{onClick:()=>e.toggleUnderline(),active:o.underline,title:"Underline (Ctrl+U)",children:jsx(Lo,{size:16})},"underline");case "strikethrough":return jsx(N,{onClick:()=>e.toggleStrikethrough(),active:o.strikethrough,title:"Strikethrough",children:jsx(wo,{size:16})},"strikethrough");case "subscript":return t("subscript")?jsx(N,{onClick:()=>e.toggleSubscript?.(),active:o.subscript,title:"Subscript",children:jsx(Yn,{size:16})},"subscript"):null;case "superscript":return t("superscript")?jsx(N,{onClick:()=>e.toggleSuperscript?.(),active:o.superscript,title:"Superscript",children:jsx(Jn,{size:16})},"superscript"):null;case "code":return jsx(N,{onClick:()=>e.formatText("code"),active:o.code,title:"Inline Code",children:jsx(To,{size:16})},"code");case "link":return jsx(N,{onClick:()=>o.isLink?e.removeLink():e.insertLink(),active:o.isLink,title:o.isLink?"Remove Link":"Insert Link",children:o.isLink?jsx(xt,{size:16}):jsx(zt,{size:16})},"link");case "blockFormat":return t("blockFormat")?jsx(io,{value:Ke,onValueChange:We,options:ot,placeholder:"Format"},"blockFormat"):null;case "quote":return t("blockFormat")?jsx(N,{onClick:()=>e.toggleQuote(),active:o.isQuote,title:"Quote",children:jsx(xo,{size:16})},"quote"):null;case "alignLeft":return t("blockFormat")?jsx(N,{onClick:()=>e.setTextAlignment("left"),active:o.isTextAlignedLeft,title:"Align Left",children:jsx(Dt,{size:16})},"alignLeft"):null;case "alignCenter":return t("blockFormat")?jsx(N,{onClick:()=>e.setTextAlignment("center"),active:o.isTextAlignedCenter,title:"Align Center",children:jsx(It,{size:16})},"alignCenter"):null;case "alignRight":return t("blockFormat")?jsx(N,{onClick:()=>e.setTextAlignment("right"),active:o.isTextAlignedRight,title:"Align Right",children:jsx(Bt,{size:16})},"alignRight"):null;case "alignJustify":return t("blockFormat")?jsx(N,{onClick:()=>e.setTextAlignment("justify"),active:o.isTextAlignedJustify,title:"Justify",children:jsx(Pn,{size:16})},"alignJustify"):null;case "codeBlock":return t("code")?jsx(N,{onClick:()=>e.toggleCodeBlock(),active:o.isInCodeBlock,title:"Code Block",children:jsx(Nn,{size:16})},"codeBlock"):null;case "unorderedList":return t("list")?f?jsxs("div",{className:"luthor-toolbar-split-button",children:[jsx(N,{onClick:()=>e.toggleUnorderedList(),active:o.unorderedList,title:"Bullet List",children:jsx(Qt,{size:16})}),jsx(Ct,{trigger:jsx("button",{type:"button",className:`luthor-toolbar-button luthor-toolbar-button-arrow${o.unorderedList?" active":""}`,title:"Bullet List Styles","aria-label":"Bullet List Styles",children:jsx(Ut,{size:12})}),isOpen:x,onOpenChange:D,children:jsx("div",{className:"luthor-unordered-variant-grid",children:Il.map(b=>jsx("button",{className:"luthor-unordered-variant-option",type:"button",title:b.title,"aria-label":b.title,onClick:()=>{wt(b.pattern),D(false);},children:jsx(Ol,{pattern:b.pattern})},b.pattern))})})]},"unorderedList"):jsx(N,{onClick:()=>e.toggleUnorderedList(),active:o.unorderedList,title:"Bullet List",children:jsx(Qt,{size:16})},"unorderedList"):null;case "orderedList":return t("list")?f?jsxs("div",{className:"luthor-toolbar-split-button",children:[jsx(N,{onClick:()=>e.toggleOrderedList(),active:o.orderedList,title:"Numbered List",children:jsx(eo,{size:16})}),jsx(Ct,{trigger:jsx("button",{type:"button",className:`luthor-toolbar-button luthor-toolbar-button-arrow${o.orderedList?" active":""}`,title:"Numbered List Styles","aria-label":"Numbered List Styles",children:jsx(Ut,{size:12})}),isOpen:V,onOpenChange:se,children:jsx("div",{className:"luthor-ordered-variant-grid",children:xl.map(b=>jsx("button",{className:"luthor-ordered-variant-option",type:"button",title:b.title,"aria-label":b.title,onClick:()=>{Lt(b.pattern),se(false);},children:jsx(Nl,{pattern:b.pattern})},b.pattern))})})]},"orderedList"):jsx(N,{onClick:()=>e.toggleOrderedList(),active:o.orderedList,title:"Numbered List",children:jsx(eo,{size:16})},"orderedList"):null;case "checkList":return t("list")?f?jsxs("div",{className:"luthor-toolbar-split-button",children:[jsx(N,{onClick:()=>e.toggleCheckList(),active:o.checkList,title:"Checklist",children:jsx(Zt,{size:16})}),jsx(Ct,{trigger:jsx("button",{type:"button",className:`luthor-toolbar-button luthor-toolbar-button-arrow${o.checkList?" active":""}`,title:"Checklist Styles","aria-label":"Checklist Styles",children:jsx(Ut,{size:12})}),isOpen:ye,onOpenChange:pe,children:jsxs("div",{className:"luthor-checklist-variant-grid",children:[jsx("button",{className:"luthor-checklist-variant-option",type:"button",title:"Checked = Strike through","aria-label":"Checked = Strike through",onClick:()=>{Tt("strikethrough"),pe(false);},children:jsx(Mr,{variant:"strikethrough"})}),jsx("button",{className:"luthor-checklist-variant-option",type:"button",title:"Checked = Keep text","aria-label":"Checked = Keep text",onClick:()=>{Tt("plain"),pe(false);},children:jsx(Mr,{variant:"plain"})})]})})]},"checkList"):jsx(N,{onClick:()=>e.toggleCheckList(),active:o.checkList,title:"Checklist",children:jsx(Zt,{size:16})},"checkList"):null;case "indentList":return t("list")?jsx(N,{onClick:()=>e.indentList(),title:"Indent List",children:jsx(_n,{size:14})},"indentList"):null;case "outdentList":return t("list")?jsx(N,{onClick:()=>e.outdentList(),title:"Outdent List",children:jsx(Vn,{size:14})},"outdentList"):null;case "horizontalRule":return t("horizontalRule")?jsx(N,{onClick:()=>e.insertHorizontalRule(),title:"Insert Horizontal Rule",children:jsx(An,{size:16})},"horizontalRule"):null;case "table":return t("table")?jsx(N,{onClick:()=>Z(true),title:"Insert Table",children:jsx(zn,{size:16})},"table"):null;case "image":return t("image")?jsxs(Fragment,{children:[jsxs(Ct,{trigger:jsx("button",{className:`luthor-toolbar-button ${o.imageSelected?"active":""}`,title:"Insert Image",children:jsx(Yo,{size:16})}),isOpen:H,onOpenChange:F,children:[jsxs("button",{className:"luthor-dropdown-item",onClick:()=>{m.insertFromUrl(),F(false);},children:[jsx(zt,{size:16}),jsx("span",{children:"From URL"})]}),jsxs("button",{className:"luthor-dropdown-item",onClick:()=>{m.insertFromFile(),F(false);},children:[jsx(Jo,{size:16}),jsx("span",{children:"Upload File"})]}),jsxs("button",{className:"luthor-dropdown-item",onClick:()=>{m.insertGifFromUrl(),F(false);},children:[jsx(Go,{size:16}),jsx("span",{children:"Insert GIF URL"})]}),jsxs("button",{className:"luthor-dropdown-item",onClick:()=>{m.insertGifFromFile(),F(false);},children:[jsx(Jo,{size:16}),jsx("span",{children:"Upload GIF"})]})]},"image"),o.imageSelected&&jsxs(Ct,{trigger:jsx("button",{className:"luthor-toolbar-button",title:"Align Image",children:jsx(It,{size:16})}),isOpen:fe,onOpenChange:K,children:[jsxs("button",{className:"luthor-dropdown-item",onClick:()=>{m.setAlignment("left"),K(false);},children:[jsx(Dt,{size:16}),jsx("span",{children:"Align Left"})]}),jsxs("button",{className:"luthor-dropdown-item",onClick:()=>{m.setAlignment("center"),K(false);},children:[jsx(It,{size:16}),jsx("span",{children:"Align Center"})]}),jsxs("button",{className:"luthor-dropdown-item",onClick:()=>{m.setAlignment("right"),K(false);},children:[jsx(Bt,{size:16}),jsx("span",{children:"Align Right"})]}),jsxs("button",{className:"luthor-dropdown-item",onClick:()=>{m.setCaption(),K(false);},children:[jsx(Kn,{size:16}),jsx("span",{children:"Set Caption"})]})]},"imageAlign")]}):null;case "emoji":return !t("emoji")||st.length===0?null:jsx(Ct,{trigger:jsx("button",{className:"luthor-toolbar-button",title:"Insert Emoji",children:jsx(Go,{size:16})}),isOpen:ae,onOpenChange:ie,children:jsx("div",{className:"luthor-emoji-picker-grid",role:"listbox","aria-label":"Emoji picker",children:st.map(b=>jsx("button",{type:"button",className:"luthor-emoji-picker-item",title:b.shortcodes[0]?`${b.label} (:${b.shortcodes[0]}:)`:b.label,onClick:()=>{e.insertEmoji?.(b.emoji),ie(false);},children:b.emoji},`${b.emoji}-${b.label}`))})},"emoji");case "embed":return w?jsxs(Ct,{trigger:jsx("button",{className:`luthor-toolbar-button ${P?"active":""}`,title:"Insert Embed",children:jsx(Dn,{size:16})}),isOpen:k,onOpenChange:T,children:[t("iframeEmbed")?jsxs("button",{className:"luthor-dropdown-item",onClick:()=>{p.insertIframe(),T(false);},children:[jsx(zt,{size:16}),jsx("span",{children:"Embed iframe"})]}):null,t("youtubeEmbed")?jsxs("button",{className:"luthor-dropdown-item",onClick:()=>{p.insertYouTube(),T(false);},children:[jsx(Yo,{size:16}),jsx("span",{children:"Embed YouTube Video"})]}):null]},"embed"):null;case "undo":return t("history")?jsx(N,{onClick:()=>e.undo(),disabled:!o.canUndo,title:"Undo (Ctrl+Z)",children:jsx(Hn,{size:16})},"undo"):null;case "redo":return t("history")?jsx(N,{onClick:()=>e.redo(),disabled:!o.canRedo,title:"Redo (Ctrl+Y)",children:jsx(Rn,{size:16})},"redo"):null;case "commandPalette":return jsx(N,{onClick:()=>r?.(),title:"Command Palette (Ctrl+Shift+P)",children:jsx(So,{size:16})},"commandPalette");case "themeToggle":return jsx(N,{onClick:i,title:n?"Light Mode":"Dark Mode",children:n?jsx(jn,{size:16}):jsx($n,{size:16})},"themeToggle");default:return null}},ut=d??Co,bt=useMemo(()=>ql(ut,t,E),[ut,t,E]);return jsxs(Fragment,{children:[jsx("div",{className:s?.toolbar??"luthor-toolbar",style:u,children:bt.sections.map((C,b)=>{let A=C.items.map((B,W)=>{let me=pt(B);return me?Array.isArray(me)?me.map((xe,yt)=>xe&&typeof xe=="object"&&"key"in xe&&xe.key!=null?xe:jsx("span",{children:xe},`toolbar-item-${b}-${W}-${yt}`)):me.type===Ll.Fragment?jsx("span",{children:me},`toolbar-item-${b}-${W}`):me&&typeof me=="object"&&"key"in me&&me.key!=null?me:jsx("span",{children:me},`toolbar-item-${b}-${W}`):null}).flat().filter(B=>B!==null);return A.length===0?null:jsx("div",{className:s?.section??"luthor-toolbar-section",children:A},b)})}),jsx("input",{ref:h,type:"file",accept:"image/*",onChange:m.handleUpload,className:"luthor-file-input"}),jsx("input",{ref:L,type:"file",accept:"image/gif",onChange:m.handleGifUpload,className:"luthor-file-input"}),jsx(ar,{isOpen:X,onClose:()=>Z(false),title:"Insert Table",children:jsxs("div",{className:"luthor-table-dialog",children:[jsxs("div",{className:"luthor-form-group",children:[jsx("label",{htmlFor:"table-rows",children:"Rows:"}),jsx("input",{id:"table-rows",type:"number",min:"1",max:"20",value:Ue.rows,onChange:C=>Q(b=>({...b,rows:parseInt(C.target.value)||1})),className:"luthor-input"})]}),jsxs("div",{className:"luthor-form-group",children:[jsx("label",{htmlFor:"table-columns",children:"Columns:"}),jsx("input",{id:"table-columns",type:"number",min:"1",max:"20",value:Ue.columns,onChange:C=>Q(b=>({...b,columns:parseInt(C.target.value)||1})),className:"luthor-input"})]}),jsx("div",{className:"luthor-form-group",children:jsxs("label",{className:"luthor-checkbox-label",children:[jsx("input",{type:"checkbox",checked:Ue.includeHeaders||false,onChange:C=>Q(b=>({...b,includeHeaders:C.target.checked})),className:"luthor-checkbox"}),"Include headers"]})}),jsxs("div",{className:"luthor-dialog-actions",children:[jsx(Qo,{variant:"secondary",onClick:()=>Z(false),children:"Cancel"}),jsx(Qo,{variant:"primary",onClick:()=>{e.insertTable(Ue),Z(false);},children:"Insert Table"})]})]})})]})}var hn=["bold","italic","underline","strikethrough","fontFamily","fontSize","lineHeight","textColor","textHighlight","subscript","superscript","link","horizontalRule","table","list","history","image","blockFormat","code","codeIntelligence","codeFormat","tabIndent","enterKeyBehavior","iframeEmbed","youTubeEmbed","floatingToolbar","contextMenu","commandPalette","slashCommand","emoji","draggableBlock","customNode","themeToggle"],Kr={bold:true,italic:true,underline:true,strikethrough:true,fontFamily:true,fontSize:true,lineHeight:true,textColor:true,textHighlight:true,subscript:true,superscript:true,link:true,horizontalRule:true,table:true,list:true,history:true,image:true,blockFormat:true,code:true,codeIntelligence:true,codeFormat:true,tabIndent:true,enterKeyBehavior:true,iframeEmbed:true,youTubeEmbed:true,floatingToolbar:true,contextMenu:true,commandPalette:true,slashCommand:true,emoji:true,draggableBlock:true,customNode:true,themeToggle:true};function co(e){let t={...Kr};if(!e)return t;for(let o of hn)typeof e[o]=="boolean"&&(t[o]=e[o]);return t}function _r(e,t){return e[t]!==false}var zr=8,Dr=[{value:"default",label:"Default",fontFamily:"inherit"},{value:"inter",label:"Inter",fontFamily:"'Inter', 'Segoe UI', Arial, sans-serif",cssImportUrl:"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"},{value:"merriweather",label:"Merriweather",fontFamily:"'Merriweather', Georgia, 'Times New Roman', serif",cssImportUrl:"https://fonts.googleapis.com/css2?family=Merriweather:wght@400;700&display=swap"},{value:"jetbrains-mono",label:"JetBrains Mono",fontFamily:"'JetBrains Mono', 'Courier New', monospace",cssImportUrl:"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&display=swap"}],ka={value:"default",label:"Default",fontFamily:"inherit"},Br=[{value:"default",label:"Default",fontSize:"inherit"},{value:"12",label:"12px",fontSize:"12px"},{value:"14",label:"14px",fontSize:"14px"},{value:"16",label:"16px",fontSize:"16px"},{value:"18",label:"18px",fontSize:"18px"},{value:"20",label:"20px",fontSize:"20px"},{value:"24",label:"24px",fontSize:"24px"},{value:"32",label:"32px",fontSize:"32px"}],La={value:"default",label:"Default",fontSize:"inherit"},Ur=[{value:"default",label:"Default",lineHeight:"1.5"},{value:"1",label:"1.0",lineHeight:"1"},{value:"1.15",label:"1.15",lineHeight:"1.15"},{value:"1.5",label:"1.5",lineHeight:"1.5"},{value:"1.75",label:"1.75",lineHeight:"1.75"},{value:"2",label:"2.0",lineHeight:"2"}],wa={value:"default",label:"Default",lineHeight:"1.5"},uo="1.5",Ta=1;function Nt(e){return e.trim().toLowerCase()}function Vr(e){return /^[a-z0-9][a-z0-9-]*$/i.test(e)}function Sa(e){return Nt(e)==="default"?true:Bo(e)!==null}function xa(e){let t=e??Dr,o=new Set,n=[];for(let r of t){let l=r.value.trim(),s=r.label.trim(),u=r.fontFamily.trim();if(!l||!s||!u||!Vr(l))continue;let d=Nt(l);o.has(d)||(o.add(d),n.push({value:l,label:s,fontFamily:u,cssImportUrl:r.cssImportUrl?.trim()||void 0}));}return n.length===0?Dr:n.some(r=>Nt(r.value)==="default")?n:[ka,...n]}function Ia(e){let t=e??Br,o=new Set,n=[];for(let r of t){let l=String(r.value).trim(),s=String(r.label).trim(),u=String(r.fontSize).trim();if(!l||!s||!u||!Vr(l))continue;let d=Nt(l);o.has(d)||(o.add(d),n.push({value:l,label:s,fontSize:u}));}return n.length===0?Br:n.some(r=>Nt(r.value)==="default")?n:[La,...n]}function Bo(e){let t=e.trim();if(!/^\d*\.?\d+$/.test(t))return null;let o=Number(t);return !Number.isFinite(o)||o<Ta?null:o.toString()}function Fa(e){if(!Number.isFinite(e))return zr;let t=Math.floor(e);return t>=0?t:zr}function Ma(e){return typeof e=="number"?Number.isFinite(e)?Bo(e.toString())??uo:uo:typeof e=="string"?Bo(e)??uo:uo}function Oa(e,t=uo){let o=e??Ur,n=new Set,i=[];for(let l of o){let s=String(l.value).trim(),u=String(l.label).trim();if(!s||!u||!Sa(s))continue;let d=Nt(s);if(n.has(d))continue;if(d==="default"){n.add(d),i.push({value:s,label:u,lineHeight:t});continue}let E=Bo(String(l.lineHeight));E&&(n.add(d),i.push({value:s,label:u,lineHeight:E}));}return i.length===0?Ur:i.some(l=>Nt(l.value)==="default")?i:[{...wa,lineHeight:t},...i]}function kt({children:e}){return jsx("svg",{viewBox:"0 0 24 24",width:"16",height:"16",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:e})}var Na=()=>jsxs(kt,{children:[jsx("rect",{x:"3.5",y:"5",width:"17",height:"14",rx:"1.5"}),jsx("path",{d:"M3.5 11h17"}),jsx("path",{d:"M10.5 14.5h3"}),jsx("path",{d:"M12 2.8v4.4"}),jsx("path",{d:"M9.8 5h4.4"})]}),Ha=()=>jsxs(kt,{children:[jsx("rect",{x:"3.5",y:"5",width:"17",height:"14",rx:"1.5"}),jsx("path",{d:"M3.5 11h17"}),jsx("path",{d:"M10.5 8.5h3"}),jsx("path",{d:"M12 16.8v4.4"}),jsx("path",{d:"M9.8 19h4.4"})]}),Ra=()=>jsxs(kt,{children:[jsx("rect",{x:"3.5",y:"5",width:"17",height:"14",rx:"1.5"}),jsx("path",{d:"M11.5 5v14"}),jsx("path",{d:"M7.5 10.5v3"}),jsx("path",{d:"M2.8 12h4.4"}),jsx("path",{d:"M5 9.8v4.4"})]}),Pa=()=>jsxs(kt,{children:[jsx("rect",{x:"3.5",y:"5",width:"17",height:"14",rx:"1.5"}),jsx("path",{d:"M12.5 5v14"}),jsx("path",{d:"M16.5 10.5v3"}),jsx("path",{d:"M16.8 12h4.4"}),jsx("path",{d:"M19 9.8v4.4"})]}),Aa=()=>jsxs(kt,{children:[jsx("rect",{x:"3.5",y:"5",width:"17",height:"14",rx:"1.5"}),jsx("path",{d:"M3.5 11h17"}),jsx("path",{d:"M9.8 14.8l4.4 4.4"}),jsx("path",{d:"M14.2 14.8l-4.4 4.4"})]}),za=()=>jsxs(kt,{children:[jsx("rect",{x:"3.5",y:"5",width:"17",height:"14",rx:"1.5"}),jsx("path",{d:"M12 5v14"}),jsx("path",{d:"M14.8 9.8l4.4 4.4"}),jsx("path",{d:"M19.2 9.8l-4.4 4.4"})]}),Da=()=>jsxs(kt,{children:[jsx("rect",{x:"3.5",y:"5",width:"17",height:"14",rx:"1.5"}),jsx("path",{d:"M3.5 10.5h17"}),jsx("path",{d:"M10.5 5v14"}),jsx("path",{d:"M14.8 9.8l4.4 4.4"}),jsx("path",{d:"M19.2 9.8l-4.4 4.4"})]}),Ba=()=>jsxs(kt,{children:[jsx("rect",{x:"3.5",y:"5",width:"17",height:"14",rx:"1.5"}),jsx("path",{d:"M3.5 10.5h17"}),jsx("path",{d:"M10.5 5v14"}),jsx("path",{d:"M3.5 8h17"})]}),Uo=new ImageExtension;Uo.config={...Uo.config,uploadHandler:async e=>URL.createObjectURL(e),defaultAlignment:"center",resizable:true,pasteListener:{insert:true,replace:true},debug:false};var un=new TableExtension;un.config={...un.config,enableContextMenu:true,tableBubbleRenderer:({headersEnabled:e,setHeadersEnabled:t,actions:o})=>jsxs(Fragment,{children:[jsx("button",{type:"button",className:"luthor-table-bubble-button luthor-table-bubble-button-icon",title:"Insert row above","aria-label":"Insert row above",onClick:o.insertRowAbove,children:jsx(Na,{})}),jsx("button",{type:"button",className:"luthor-table-bubble-button luthor-table-bubble-button-icon",title:"Insert row below","aria-label":"Insert row below",onClick:o.insertRowBelow,children:jsx(Ha,{})}),jsx("button",{type:"button",className:"luthor-table-bubble-button luthor-table-bubble-button-icon",title:"Insert column left","aria-label":"Insert column left",onClick:o.insertColumnLeft,children:jsx(Ra,{})}),jsx("button",{type:"button",className:"luthor-table-bubble-button luthor-table-bubble-button-icon",title:"Insert column right","aria-label":"Insert column right",onClick:o.insertColumnRight,children:jsx(Pa,{})}),jsx("button",{type:"button",className:"luthor-table-bubble-button luthor-table-bubble-button-icon",title:"Delete selected row","aria-label":"Delete selected row",onClick:o.deleteSelectedRow,children:jsx(Aa,{})}),jsx("button",{type:"button",className:"luthor-table-bubble-button luthor-table-bubble-button-icon",title:"Delete selected column","aria-label":"Delete selected column",onClick:o.deleteSelectedColumn,children:jsx(za,{})}),jsx("label",{className:"luthor-table-bubble-checkbox",title:"Use first row as table headers",children:jsx("button",{type:"button",className:`luthor-table-bubble-button luthor-table-bubble-button-icon${e?" luthor-table-bubble-button-active":""}`,title:"Use first row as table headers","aria-label":"Use first row as table headers","aria-pressed":e,onClick:()=>t(!e),children:jsx(Ba,{})})}),jsx("button",{type:"button",className:"luthor-table-bubble-button luthor-table-bubble-button-icon luthor-table-bubble-button-danger",title:"Delete table","aria-label":"Delete table",onClick:o.deleteTable,children:jsx(Da,{})})]})};var cn=new IframeEmbedExtension;cn.config={...cn.config,defaultWidth:720,defaultHeight:405,defaultAlignment:"center"};var dn=new YouTubeEmbedExtension;dn.config={...dn.config,defaultWidth:720,defaultHeight:405,defaultAlignment:"center",nocookie:true,controls:true,rel:1};var Ua=ur(),mn=new ContextMenuExtension;mn.config={...mn.config,preventDefault:true};var Ka=new CommandPaletteExtension,_a=new SlashCommandExtension,Va=new EmojiExtension,gn=new DraggableBlockExtension;gn.config={...gn.config,buttonStackPosition:"left"};var fn=new LinkExtension;fn.config={...fn.config,linkSelectedTextOnPaste:true,autoLinkText:true,autoLinkUrls:true};var ja=textColorExtension.configure({options:[{value:"default",label:"Default",color:"inherit"},{value:"slate",label:"Slate",color:"#334155"},{value:"red",label:"Red",color:"#dc2626"},{value:"orange",label:"Orange",color:"#ea580c"},{value:"green",label:"Green",color:"#16a34a"},{value:"blue",label:"Blue",color:"#2563eb"},{value:"purple",label:"Purple",color:"#7c3aed"}]}),$a=textHighlightExtension.configure({options:[{value:"default",label:"Default",backgroundColor:"transparent"},{value:"yellow",label:"Yellow",backgroundColor:"#fef08a"},{value:"green",label:"Green",backgroundColor:"#bbf7d0"},{value:"blue",label:"Blue",backgroundColor:"#bfdbfe"},{value:"pink",label:"Pink",backgroundColor:"#fbcfe8"},{value:"orange",label:"Orange",backgroundColor:"#fed7aa"}]}),{extension:qa}=createCustomNodeExtension({nodeType:"featureCard",defaultPayload:{title:"AI Draft Block",description:"AI-generated first draft. Review and edit before publishing to customers.",tag:"AI Draft"},render:({payload:e,isSelected:t})=>jsxs("aside",{className:`luthor-extensive-feature-card${t?" is-selected":""}`,children:[jsx("div",{className:"luthor-extensive-feature-card__tag",children:e.tag??"AI Draft"}),jsx("h4",{className:"luthor-extensive-feature-card__title",children:e.title??"Generated Draft"}),jsx("p",{className:"luthor-extensive-feature-card__description",children:e.description??"AI-generated first pass. Review and finalize before sharing."})]})});function jr({fontFamilyOptions:e,fontSizeOptions:t,lineHeightOptions:o,minimumDefaultLineHeight:n,featureFlags:i,isDraggableBoxEnabled:r,scaleByRatio:l,syntaxHighlighting:s,grammarPreloadMode:u,codeHighlightProvider:d,loadCodeHighlightProvider:E,maxAutoDetectCodeLength:v,isCopyAllowed:y,languageOptions:f,showLineNumbers:m,maxListIndentation:h}={}){let L=co(i),p=T=>_r(L,T),w=(r??true)&&p("draggableBlock"),P=Ma(n),H=Fa(h),F=new FontFamilyExtension().configure({options:xa(e),cssLoadStrategy:"on-demand"}),ae=new FontSizeExtension().configure({options:Ia(t)}),ie=new LineHeightExtension().configure({options:Oa(o,P),defaultLineHeight:P});Uo.configure({scaleByRatio:l??false}),codeExtension.configure({syntaxHighlighting:s??"auto",grammarPreloadMode:u??"lazy",provider:d??void 0,loadProvider:E,showLineNumbers:m??true}),codeIntelligenceExtension.configure({provider:d??void 0,loadProvider:E,maxAutoDetectLength:v,isCopyAllowed:y??true,languageOptions:f});let fe=new ListExtension({maxDepth:H+1}),K=new TabIndentExtension({maxListDepth:H+1}),k=[];return p("bold")&&k.push(boldExtension),p("italic")&&k.push(italicExtension),p("underline")&&k.push(underlineExtension),p("strikethrough")&&k.push(strikethroughExtension),p("fontFamily")&&k.push(F),p("fontSize")&&k.push(ae),p("lineHeight")&&k.push(ie),p("textColor")&&k.push(ja),p("textHighlight")&&k.push($a),p("subscript")&&k.push(subscriptExtension),p("superscript")&&k.push(superscriptExtension),p("link")&&k.push(fn),p("horizontalRule")&&k.push(horizontalRuleExtension),p("table")&&k.push(un),p("list")&&k.push(fe),p("history")&&k.push(historyExtension),p("image")&&k.push(Uo),p("blockFormat")&&k.push(blockFormatExtension),p("code")&&k.push(codeExtension),p("codeIntelligence")&&k.push(codeIntelligenceExtension),p("codeFormat")&&k.push(codeFormatExtension),p("tabIndent")&&k.push(K),p("enterKeyBehavior")&&k.push(enterKeyBehaviorExtension),p("iframeEmbed")&&k.push(cn),p("youTubeEmbed")&&k.push(dn),p("floatingToolbar")&&k.push(Ua),p("contextMenu")&&k.push(mn),p("commandPalette")&&k.push(Ka),p("slashCommand")&&k.push(_a),p("emoji")&&k.push(Va),w&&k.push(gn),p("customNode")&&k.push(qa),k}function mo(e){return jr(e)}var pn=jr();function $r(e){if(!e)return "__default__";let t=Object.entries(e).filter(([,o])=>typeof o=="string"&&o.trim().length>0).sort(([o],[n])=>o.localeCompare(n));return t.length>0?JSON.stringify(t):"__default__"}function qr(e){if(!e)return;let t={},o=(n,i)=>{typeof i=="string"&&i.trim().length>0&&(t[n]=i.trim());};return o("--luthor-fg",e.font?.color),o("--luthor-text-bold-color",e.font?.boldColor),o("--luthor-link-color",e.link?.color),o("--luthor-list-marker-color",e.list?.markerColor),o("--luthor-list-checkbox-color",e.list?.checkboxColor),o("--luthor-quote-bg",e.quote?.backgroundColor),o("--luthor-quote-fg",e.quote?.color),o("--luthor-quote-border",e.quote?.indicatorColor),o("--luthor-table-border-color",e.table?.borderColor),o("--luthor-table-header-bg",e.table?.headerBackgroundColor),o("--luthor-hr-color",e.hr?.color),o("--luthor-placeholder-color",e.placeholder?.color),o("--luthor-codeblock-bg",e.codeblock?.backgroundColor),o("--luthor-toolbar-bg",e.toolbar?.backgroundColor),Object.keys(t).length>0?t:void 0}function Yr(e){if(!(e instanceof Element))return false;if(e.closest('[contenteditable="true"]'))return true;let t=e.tagName.toLowerCase();return t==="input"||t==="textarea"||t==="select"}function Jr(e,t){if(e.key.toLowerCase()!==t.key.toLowerCase())return false;let o=e.ctrlKey||e.metaKey;return !(!!t.requiresPrimary!==o||!!t.shift!=!!e.shiftKey||!!t.alt!=!!e.altKey)}function Gr(e,t,o){let n={...e??{}};for(let[i,r]of Object.entries(o))(Array.isArray(r)?r:[r]).some(u=>t[u]!==false)||(n[i]=false);return n}function Wr(e,t,o){let n={...e},i=(r,l)=>{t[r]===false&&l();};return i("bold",()=>{n.toggleBold=()=>{};}),i("italic",()=>{n.toggleItalic=()=>{};}),i("underline",()=>{n.toggleUnderline=()=>{};}),i("strikethrough",()=>{n.toggleStrikethrough=()=>{};}),i("codeFormat",()=>{n.formatText=()=>{};}),i("fontFamily",()=>{n.setFontFamily=()=>{},n.clearFontFamily=()=>{};}),i("fontSize",()=>{n.setFontSize=()=>{},n.clearFontSize=()=>{};}),i("lineHeight",()=>{n.setLineHeight=()=>{},n.clearLineHeight=()=>{};}),i("textColor",()=>{n.setTextColor=()=>{},n.clearTextColor=()=>{};}),i("textHighlight",()=>{n.setTextHighlight=()=>{},n.clearTextHighlight=()=>{};}),i("subscript",()=>{n.toggleSubscript=()=>{};}),i("superscript",()=>{n.toggleSuperscript=()=>{};}),i("link",()=>{n.insertLink=()=>{},n.removeLink=()=>{},n.updateLink=()=>false,n.getCurrentLink=async()=>null,n.getLinkByKey=async()=>null,n.updateLinkByKey=()=>false,n.removeLinkByKey=()=>false;}),i("blockFormat",()=>{n.toggleParagraph=()=>{},n.toggleHeading=()=>{},n.toggleQuote=()=>{},n.setTextAlignment=()=>{};}),i("code",()=>{n.toggleCodeBlock=()=>{};}),i("codeIntelligence",()=>{n.setCodeLanguage=()=>{},n.autoDetectCodeLanguage=async()=>null,n.copySelectedCodeBlock=async()=>false;}),i("list",()=>{n.toggleUnorderedList=()=>{},n.toggleOrderedList=()=>{},n.toggleCheckList=()=>{},n.indentList=()=>{},n.outdentList=()=>{};}),i("horizontalRule",()=>{n.insertHorizontalRule=()=>{};}),i("table",()=>{n.insertTable=()=>{};}),i("image",()=>{n.insertImage=()=>{},n.setImageAlignment=()=>{},n.setImageCaption=()=>{},n.getImageCaption=async()=>"";}),i("emoji",()=>{n.insertEmoji=()=>{},n.executeEmojiSuggestion=()=>false,n.closeEmojiSuggestions=()=>{},n.getEmojiSuggestions=()=>[],n.getEmojiCatalog=()=>[],n.resolveEmojiShortcode=()=>null,n.setEmojiCatalog=()=>{},n.setEmojiCatalogAdapter=()=>{},n.getEmojiCatalogAdapter=()=>({search:()=>[],resolveShortcode:()=>null,getAll:()=>[]});}),i("iframeEmbed",()=>{n.insertIframeEmbed=()=>{},n.setIframeEmbedAlignment=()=>{},n.resizeIframeEmbed=()=>{},n.setIframeEmbedCaption=()=>{},n.getIframeEmbedCaption=async()=>"",n.updateIframeEmbedUrl=()=>false,n.getIframeEmbedUrl=async()=>"";}),i("youTubeEmbed",()=>{n.insertYouTubeEmbed=()=>{},n.setYouTubeEmbedAlignment=()=>{},n.resizeYouTubeEmbed=()=>{},n.setYouTubeEmbedCaption=()=>{},n.getYouTubeEmbedCaption=async()=>"",n.updateYouTubeEmbedUrl=()=>false,n.getYouTubeEmbedUrl=async()=>"";}),i("history",()=>{n.undo=()=>{},n.redo=()=>{};}),i("commandPalette",()=>{n.showCommandPalette=()=>{},n.hideCommandPalette=()=>{},n.registerCommand=()=>{},n.unregisterCommand=()=>{};}),i("slashCommand",()=>{n.registerSlashCommand=()=>{},n.unregisterSlashCommand=()=>{},n.setSlashCommands=()=>{},n.closeSlashMenu=()=>{},n.executeSlashCommand=()=>false;}),o&&(n.toggleBold=()=>{},n.toggleItalic=()=>{},n.toggleUnderline=()=>{},n.toggleStrikethrough=()=>{},n.formatText=()=>{},n.setFontFamily=()=>{},n.clearFontFamily=()=>{},n.setFontSize=()=>{},n.clearFontSize=()=>{},n.setLineHeight=()=>{},n.clearLineHeight=()=>{},n.setTextColor=()=>{},n.clearTextColor=()=>{},n.setTextHighlight=()=>{},n.clearTextHighlight=()=>{},n.toggleSubscript=()=>{},n.toggleSuperscript=()=>{},n.insertLink=()=>{},n.removeLink=()=>{},n.updateLink=()=>false,n.toggleParagraph=()=>{},n.toggleHeading=()=>{},n.toggleQuote=()=>{},n.setTextAlignment=()=>{},n.toggleUnorderedList=()=>{},n.toggleOrderedList=()=>{},n.toggleCheckList=()=>{},n.indentList=()=>{},n.outdentList=()=>{},n.insertHorizontalRule=()=>{},n.insertTable=()=>{},n.insertImage=()=>{},n.setImageAlignment=()=>{},n.setImageCaption=()=>{},n.insertIframeEmbed=()=>{},n.setIframeEmbedAlignment=()=>{},n.resizeIframeEmbed=()=>{},n.setIframeEmbedCaption=()=>{},n.updateIframeEmbedUrl=()=>false,n.insertYouTubeEmbed=()=>{},n.setYouTubeEmbedAlignment=()=>{},n.resizeYouTubeEmbed=()=>{},n.setYouTubeEmbedCaption=()=>{},n.updateYouTubeEmbedUrl=()=>false),n}function Xr(e){return new Set(e)}function bn(e,t){e.clear();for(let o of t)e.add(o);}function Qr(e,t){return e.has(t)}function Jt(e,t){e.add(t);}var{Provider:os,useEditor:ns}=createEditorSystem(),ti="Write anything...",oi="Enter JSON document content...",ni="Enter Markdown content...",ri="Enter HTML content...",ui=new Set(["auto","scroll","overlay"]),rs={json:"Invalid JSON",markdown:"Invalid Markdown",html:"Invalid HTML"};function fo(e){return e==="visual"?"visual-editor":e}function te(e){return fo(e)==="visual-editor"}function vn(e,t){return e.some(o=>fo(o)===t)}function Ko(e){return e==="json"||e==="markdown"||e==="html"}function ci(e){let t=e.overflowY;return t&&t!=="visible"?t:e.overflow||t||"visible"}function is(e){if(typeof e.scrollTo=="function")try{e.scrollTo({top:0,behavior:"auto"});}catch{e.scrollTop=0;return}e.scrollTop!==0&&(e.scrollTop=0);}function ls(e){let t=new Set,o=n=>{n&&t.add(n);};if(o(e),o(e.closest(".luthor-richtext-container")),o(e.closest(".luthor-editor-visual-shell")),o(e.closest(".luthor-editor")),o(e.closest(".luthor-editor-wrapper")),typeof window<"u"){let n=e.parentElement;for(;n&&n!==document.body&&n!==document.documentElement;){let i=ci(window.getComputedStyle(n));ui.has(i)&&o(n),n=n.parentElement;}}t.forEach(n=>{is(n);});}function as(e){if(typeof window<"u"&&typeof window.requestAnimationFrame=="function"){window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>e());});return}globalThis.setTimeout(e,0);}function ii(e){if(typeof window>"u")return ()=>{};let t=[],o=e.parentElement;for(;o&&o!==document.body&&o!==document.documentElement;){let n=window.getComputedStyle(o),i=ci(n);if(!ui.has(i)){o=o.parentElement;continue}if(o.scrollHeight>o.clientHeight+1)break;if(i==="auto"||i==="overlay"){t.push({element:o,overflowY:o.style.overflowY}),o.style.overflowY="visible",o=o.parentElement;continue}break}return ()=>{for(let n=t.length-1;n>=0;n-=1){let i=t[n];i&&(i.element.style.overflowY=i.overflowY);}}}function ss(e){if(typeof window>"u")return ()=>{};let t=ii(e),o=()=>{t(),t=ii(e);};return window.addEventListener("resize",o),()=>{window.removeEventListener("resize",o),t();}}function En(e){let o=e.replace(/\r\n?/g,`
|
|
9
|
+
`).trim().split(/\n{2,}/).map(i=>i.replace(/\s+/g," ").trim()).filter(i=>i.length>0);return {root:{type:"root",version:1,format:"",indent:0,direction:null,children:(o.length>0?o:[""]).map(i=>({type:"paragraph",version:1,format:"",indent:0,direction:null,children:[{type:"text",version:1,text:i,detail:0,format:0,mode:"normal",style:""}]}))}}}var go=En("");function li(e,t,o){return o<=t?t:Math.min(o,Math.max(t,e))}function us(e,t){let o=document,n=window.getSelection();if(!n)return false;let i=o.caretPositionFromPoint?.(e,t);if(i){let l=document.createRange();return l.setStart(i.offsetNode,i.offset),l.collapse(true),n.removeAllRanges(),n.addRange(l),true}let r=o.caretRangeFromPoint?.(e,t);return r?(r.collapse(true),n.removeAllRanges(),n.addRange(r),true):false}function cs(e,t,o){let r=Array.from(e.children).filter(E=>E instanceof HTMLElement).reduce((E,v)=>{let y=v.getBoundingClientRect(),f=y.top+y.height/2;if(!E)return v;let m=E.getBoundingClientRect(),h=m.top+m.height/2;return Math.abs(f-o)<Math.abs(h-o)?v:E},null)??e.firstElementChild??e,l=e.getBoundingClientRect(),s=r.getBoundingClientRect(),u=li(t,l.left+1,l.right-1),d=li(o,s.top+1,s.bottom-1);us(u,d);}function ds(e){try{let t=JSON.parse(e);return JSON.stringify(t)}catch{return JSON.stringify(En(e))}}function Fe(e,t,o="preserve",n="luthor"){let i=t??go;if(e==="json")return Sr(JSON.stringify(i));if(e==="markdown"){let l=n==="lexical-native"?jsonToMarkdown(i,{bridgeFlavor:"lexical-native"}):o==="none"?jsonToMarkdown(i,{metadataMode:"none"}):jsonToMarkdown(i);return xr(l)}let r=o==="none"?jsonToHTML(i,{metadataMode:"none"}):jsonToHTML(i);return Ir(r)}function ai(e){let t=e.replace(/\r\n?/g,`
|
|
10
|
+
`),o=t.split(`
|
|
11
|
+
`);if(o.length<3)return {frontmatter:null,body:t};if((o[0]??"").replace(/^\uFEFF/,"").trim()!=="---")return {frontmatter:null,body:t};let i=-1;for(let l=1;l<o.length;l+=1){let s=(o[l]??"").trim();if(s==="---"||s==="..."){i=l;break}}if(i<2)return {frontmatter:null,body:t};let r=o.slice(1,i).join(`
|
|
12
|
+
`);return /^[^#\n]*:/m.test(r)?{frontmatter:o.slice(0,i+1).join(`
|
|
13
|
+
`).trim(),body:o.slice(i+1).join(`
|
|
14
|
+
`)}:{frontmatter:null,body:t}}function ms(e,t){let o=ai(e);if(!o.frontmatter||ai(t).frontmatter)return t;let i=t.replace(/\r\n?/g,`
|
|
15
|
+
`).trim();return i.length>0?`${o.frontmatter}
|
|
16
|
+
|
|
17
|
+
${i}`:`${o.frontmatter}
|
|
18
|
+
`}function gs(e){return !e||e.length===0?"__default__":JSON.stringify(e.map(t=>({value:t.value.trim(),label:t.label.trim(),fontFamily:t.fontFamily.trim(),cssImportUrl:t.cssImportUrl?.trim()||""})))}function fs(e){return !e||e.length===0?"__default__":JSON.stringify(e.map(t=>({value:String(t.value).trim(),label:String(t.label).trim(),fontSize:String(t.fontSize).trim()})))}function hs(e){return !e||e.length===0?"__default__":JSON.stringify(e.map(t=>({value:String(t.value).trim(),label:String(t.label).trim(),lineHeight:String(t.lineHeight).trim()})))}function ps(e){if(typeof e=="number")return !Number.isFinite(e)||e<1?"1.5":e.toString();if(typeof e=="string"){let o=e.trim();if(o.length===0)return "1.5";let n=Number(o);return !Number.isFinite(n)||n<1?"1.5":n.toString()}return "1.5"}function bs(e){if(!Number.isFinite(e))return "8";let t=Math.floor(e);return t<0?"8":t.toString()}function Cn(e){return $r(e)}function ys(e){if(!e)return "__default__";if(Array.isArray(e))return JSON.stringify({mode:"append",values:e.map(n=>n.trim())});let t=e,o=Array.isArray(t.values)?t.values:[];return JSON.stringify({mode:t.mode??"append",values:o.map(n=>n.trim())})}function Cs(e){return qr(e)}function vs(e){let t=co(e);return JSON.stringify(hn.map(o=>[o,t[o]]))}function si(e){return Yr(e)}var Es=[{feature:"bold",key:"b",requiresPrimary:true},{feature:"italic",key:"i",requiresPrimary:true},{feature:"underline",key:"u",requiresPrimary:true},{feature:"link",key:"k",requiresPrimary:true},{feature:"history",key:"z",requiresPrimary:true},{feature:"history",key:"y",requiresPrimary:true},{feature:"history",key:"z",requiresPrimary:true,shift:true},{feature:"commandPalette",key:"p",requiresPrimary:true,shift:true},{feature:"codeFormat",key:"`",requiresPrimary:true},{feature:"code",key:"`",requiresPrimary:true,shift:true},{feature:"list",key:"l",requiresPrimary:true,shift:true},{feature:"list",key:"l",requiresPrimary:true,alt:true},{feature:"list",key:"x",requiresPrimary:true,shift:true},{feature:"blockFormat",key:"0",requiresPrimary:true,alt:true},{feature:"blockFormat",key:"1",requiresPrimary:true,alt:true},{feature:"blockFormat",key:"2",requiresPrimary:true,alt:true},{feature:"blockFormat",key:"3",requiresPrimary:true,alt:true},{feature:"blockFormat",key:"4",requiresPrimary:true,alt:true},{feature:"blockFormat",key:"5",requiresPrimary:true,alt:true},{feature:"blockFormat",key:"6",requiresPrimary:true,alt:true}];function ks(e,t){return Jr(e,t)}function Ls(e,t,o){return Wr(e,t,o)}var ws={fontFamily:"fontFamily",fontSize:"fontSize",lineHeight:"lineHeight",textColor:"textColor",textHighlight:"textHighlight",bold:"bold",italic:"italic",underline:"underline",strikethrough:"strikethrough",subscript:"subscript",superscript:"superscript",code:"codeFormat",link:"link",blockFormat:"blockFormat",quote:"blockFormat",alignLeft:"blockFormat",alignCenter:"blockFormat",alignRight:"blockFormat",alignJustify:"blockFormat",codeBlock:"code",unorderedList:"list",orderedList:"list",checkList:"list",indentList:"list",outdentList:"list",horizontalRule:"horizontalRule",table:"table",image:"image",emoji:"emoji",embed:["iframeEmbed","youTubeEmbed"],undo:"history",redo:"history",commandPalette:"commandPalette",themeToggle:"themeToggle"};function Ts(e,t){return Gr(e,t,ws)}function Ss(e){if(!e||e.length===0)return [...je];let t=new Set,o=[];for(let n of e)!je.includes(n)||t.has(n)||(t.add(n),o.push(n));return o.length>0?o:[...je]}function xs(e){if(!e)return "__default__";if(Array.isArray(e)){let r=new Set,l=[];for(let s of e)for(let[u,d]of Object.entries(s)){let E=u.trim();!d||!E||r.has(E)||(r.add(E),l.push(E));}return l.length===0?"__default__":JSON.stringify({allowlist:l,denylist:[]})}let t=r=>{if(!r||r.length===0)return [];let l=new Set,s=[];for(let u of r){let d=u.trim();!d||l.has(d)||(l.add(d),s.push(d));}return s},o=e,n=t(o.allowlist),i=t(o.denylist);return n.length===0&&i.length===0?"__default__":JSON.stringify({allowlist:n,denylist:i})}function Is(e){if(!e||e.length===0)return [];let t=new Set,o=[];for(let n of e){let i=n.trim();!i||t.has(i)||(t.add(i),o.push(i));}return o}function Fs(e,t){return e.key.toLowerCase()===t.key.toLowerCase()&&!!e.ctrlKey==!!t.ctrlKey&&!!e.metaKey==!!t.metaKey&&!!e.shiftKey==!!t.shiftKey&&!!e.altKey==!!t.altKey}function Ms(e){if(!e)return "__default__";let t=Array.isArray(e.disabledCommandIds)?[...e.disabledCommandIds].map(n=>n.trim()).filter(n=>n.length>0).sort((n,i)=>n.localeCompare(i)):[],o=e.bindings?Object.entries(e.bindings).map(([n,i])=>{if(i===false||i===null)return [n,false];let l=(Array.isArray(i)?i:[i]).map(s=>({key:s.key.trim(),ctrlKey:!!s.ctrlKey,metaKey:!!s.metaKey,shiftKey:!!s.shiftKey,altKey:!!s.altKey,preventDefault:s.preventDefault})).filter(s=>s.key.length>0).sort((s,u)=>{let d=`${s.key}:${s.ctrlKey?1:0}:${s.metaKey?1:0}:${s.shiftKey?1:0}:${s.altKey?1:0}`,E=`${u.key}:${u.ctrlKey?1:0}:${u.metaKey?1:0}:${u.shiftKey?1:0}:${u.altKey?1:0}`;return d.localeCompare(E)});return l.length===0?[n,false]:[n,l]}).sort(([n],[i])=>n.localeCompare(i)):[];return JSON.stringify({disabledCommandIds:t,bindings:o,preventCollisions:e.preventCollisions!==false,preventNativeConflicts:e.preventNativeConflicts!==false})}function Os({isDark:e,toggleTheme:t,visualPlaceholder:o,jsonPlaceholder:n,markdownPlaceholder:i,htmlPlaceholder:r,initialMode:l,availableModes:s,onReady:u,toolbarLayout:d,toolbarVisibility:E,toolbarPosition:v,toolbarAlignment:y,toolbarClassName:f,toolbarStyleVars:m,isToolbarEnabled:h,isToolbarPinned:L,isEditorViewTabsVisible:p,headingOptions:w,paragraphLabel:P,syncHeadingOptionsWithCommands:H,slashCommandVisibility:F,shortcutConfig:ae,commandPaletteShortcutOnly:ie,isListStyleDropdownEnabled:fe,featureFlags:K,editOnClick:k,sourceMetadataMode:T,markdownBridgeFlavor:x,markdownSourceOfTruth:D,showLineNumbers:V}){let{commands:se,hasExtension:ye,activeStates:pe,lexical:X,extensions:Z,export:J,import:ge}=ns(),[M,ze]=useState(l),[Me,be]=useState({json:"",markdown:"",html:""}),[Qe,qe]=useState(null),[we,Te]=useState(null),[Ye,De]=useState({isOpen:false,commands:[]}),[R,G]=useState({isOpen:false,query:"",position:null,commands:[]}),[ce,Ze]=useState({isOpen:false,query:"",position:null,suggestions:[]}),et=useRef(false),Je=useMemo(()=>Ss(w),[w]),Be=H?Je:void 0,he=H?P:void 0,it=pe.isInCodeBlock===true,ee=useMemo(()=>Ls(se,K,it),[se,K,it]),Oe=useMemo(()=>g=>Object.prototype.hasOwnProperty.call(K,g)?K[g]!==false:true,[K]),Ce=useMemo(()=>g=>te(M)&&Oe(g),[M,Oe]),Ge=useMemo(()=>Ts(E,K),[E,K]),lt=K.draggableBlock!==false,Ue=xs(F),Q=useRef(F),ve=useRef(Ue),at=Ms(ae),st=useRef(ae),tt=useRef(at),gt=useMemo(()=>Is(ae?.disabledCommandIds),[ae?.disabledCommandIds]),ot=useMemo(()=>new Set(gt),[gt]),ft=useMemo(()=>ot.size===0?[]:qo({headingOptions:Be,paragraphLabel:he,isFeatureEnabled:Oe}).filter(g=>ot.has(g.id)).flatMap(g=>g.shortcuts??[]),[ot,Be,he,Oe]);ve.current!==Ue&&(ve.current=Ue,Q.current=F),tt.current!==at&&(tt.current=at,st.current=ae);let Ke=useRef(Xr(["visual-editor"])),We=useRef({json:false,markdown:false,html:false}),_e=useRef(""),Se=useRef(true),Ve=useRef(false),ht=useRef(false),Rt=useRef(0),Ne=useRef(null);useEffect(()=>{Zo(ee,pe,e?"dark":"light",Ce);},[ee,pe,e,Ce]);let Lt=useMemo(()=>{let g=Xe=>{let St=Fe("json",Xe,T,x),jo=Fe("markdown",Xe,T,x),wn=Fe("html",Xe,T,x);be(yo=>yo.json===St&&yo.markdown===jo&&yo.html===wn?yo:{json:St,markdown:jo,html:wn}),We.current.json=false,We.current.markdown=false,We.current.html=false,Jt(Ke.current,"json"),Jt(Ke.current,"markdown"),Jt(Ke.current,"html"),D&&(_e.current=jo,Se.current=false);},S=Xe=>{setTimeout(()=>{try{let St=JSON.parse(Xe);ge.fromJSON(St),g(St);}catch(St){console.error("Failed to inject JSON:",St);return}},100);},z=()=>{if(!D)return Fe("markdown",J.toJSON(),T,x);if(Se.current){let Xe=Fe("markdown",J.toJSON(),T,x);_e.current=Xe,Se.current=false;}return _e.current},j=()=>{let Xe=z();return x==="lexical-native"?markdownToJSON(Xe,{bridgeFlavor:"lexical-native"}):T==="none"?markdownToJSON(Xe,{metadataMode:"none"}):markdownToJSON(Xe)};return {injectJSON:S,getJSON:()=>D?Fe("json",j(),T,x):Fe("json",J.toJSON()),getMarkdown:()=>z(),getHTML:()=>D?Fe("html",j(),T,x):Fe("html",J.toJSON(),T,x)}},[J,ge,x,D,T]);useEffect(()=>{if(!X||!ee)return;let g=ee,S=In(g,{headingOptions:Be,paragraphLabel:he,isFeatureEnabled:Ce,shortcutConfig:st.current,commandPaletteShortcutOnly:ie});typeof g.registerCommand=="function"&&S.forEach(Y=>g.registerCommand(Y));let z=Fn(g,{headingOptions:Be,paragraphLabel:he,slashCommandVisibility:Q.current,isFeatureEnabled:Ce,shortcutConfig:st.current});typeof g.setSlashCommands=="function"?g.setSlashCommands(z):z.forEach(Y=>g.registerSlashCommand?.(Y));let j=On(g,document.body,{headingOptions:Be,paragraphLabel:he,isFeatureEnabled:Ce,shortcutConfig:st.current,scope:()=>X.getRootElement()});return et.current||(et.current=true,u?.(Lt)),()=>{j(),typeof g.unregisterCommand=="function"&&S.forEach(Y=>g.unregisterCommand(Y.id)),typeof g.setSlashCommands=="function"?g.setSlashCommands([]):z.forEach(Y=>g.unregisterSlashCommand?.(Y.id));}},[X,ee,Lt,u,Be,he,Ue,at,Ce,ie]),useEffect(()=>{let g=()=>X?.getRootElement(),S=Es.filter(j=>K[j.feature]===false);if(S.length===0)return;let z=j=>{let Y=g();Y&&j.target instanceof Node&&!Y.contains(j.target)||!si(j.target)||!S.some(Ln=>ks(j,Ln))||(j.preventDefault(),j.stopPropagation());};return document.addEventListener("keydown",z,true),()=>{document.removeEventListener("keydown",z,true);}},[X,K]),useEffect(()=>{let g=Z.find(S=>S.name==="commandPalette");if(!(!g||!g.subscribe))return g.subscribe((S,z)=>{let j=z.filter(Y=>ot.has(Y.id)?false:ie?typeof Y.shortcut=="string"&&Y.shortcut.trim().length>0:true);De({isOpen:te(M)?S:false,commands:j});})},[Z,ot,ie,M]),useEffect(()=>{if(ft.length===0)return;let g=()=>X?.getRootElement(),S=z=>{let j=g();j&&z.target instanceof Node&&!j.contains(z.target)||!si(z.target)||!ft.some(Ee=>Fs(z,Ee))||(z.preventDefault(),z.stopPropagation());};return document.addEventListener("keydown",S,true),()=>{document.removeEventListener("keydown",S,true);}},[X,ft]),useEffect(()=>{let g=Z.find(S=>S.name==="slashCommand");if(!(!g||!g.subscribe))return g.subscribe(S=>{G({isOpen:te(M)?S.isOpen:false,query:te(M)?S.query:"",position:te(M)?S.position:null,commands:te(M)?S.commands:[]});})},[Z,M]),useEffect(()=>{let g=Z.find(S=>S.name==="emoji");if(!(!g||!g.subscribe))return g.subscribe(S=>{Ze({isOpen:te(M)?S.isOpen:false,query:te(M)?S.query:"",position:te(M)?S.position:null,suggestions:te(M)?S.suggestions:[]});})},[Z,M]),useEffect(()=>{te(M)||(De(g=>g.isOpen?{...g,isOpen:false}:g),G(g=>g.isOpen||g.query.length>0||g.position!==null||g.commands.length>0?{isOpen:false,query:"",position:null,commands:[]}:g),Ze(g=>g.isOpen||g.query.length>0||g.position!==null||g.suggestions.length>0?{isOpen:false,query:"",position:null,suggestions:[]}:g),ee.hideCommandPalette?.(),ee.closeSlashMenu?.(),ee.closeEmojiSuggestions?.());},[M,ee]),useEffect(()=>!X||!J?void 0:X.registerUpdateListener(({dirtyElements:S,dirtyLeaves:z})=>{if((S.size>0||z.size>0)&&(Rt.current+=1,bn(Ke.current,["visual-editor"]),D)){if(!te(M)||ht.current)return;if(Ve.current){Ve.current=false;return}Se.current=true;}}),[X,J,D,M]);let wt=g=>x==="lexical-native"?markdownToJSON(g,{bridgeFlavor:"lexical-native"}):T==="none"?markdownToJSON(g,{metadataMode:"none"}):markdownToJSON(g),Tt=(g,S)=>g==="json"?S.trim()?JSON.parse(S):En(""):g==="markdown"?wt(S):T==="none"?htmlToJSON(S,{metadataMode:"none"}):htmlToJSON(S),pt=g=>{let S=J.toJSON()??go;return Fe(g,S,T,x)},ut=()=>{let g=pt("markdown"),S=ms(_e.current,g);return _e.current=S,Se.current=false,We.current.markdown=false,Jt(Ke.current,"markdown"),be(z=>z.markdown===S?z:{...z,markdown:S}),S},bt=()=>D?Se.current?ut():_e.current:pt("markdown"),C=g=>{let S=bt(),z=wt(S);return Fe(g,z,T,x)},b=g=>{let S=Me[g],z=Tt(g,S),j=D&&g==="markdown";D&&g==="markdown"&&(Ve.current=true),j&&(ht.current=true);try{ge.fromJSON(z);}finally{j&&(ht.current=false);}D&&(g==="markdown"?(_e.current=S,Se.current=false):Se.current=true),We.current[g]=false,bn(Ke.current,["visual-editor"]);},A=(g,S,z)=>{be(j=>({...j,[g]:S})),We.current[g]=z?.dirty===true,D&&g==="markdown"&&(_e.current=S,Se.current=false);},B=async g=>{let S=fo(g);if(S===M||!vn(s,S))return;let z=M,j=null;try{if(Te(null),Ko(z)){let Y=z;We.current[Y]&&(j=Y,b(Y),await new Promise(Ee=>setTimeout(Ee,50)),j=null);}if(D&&Se.current&&(te(z)||Ko(z)&&z!=="markdown")&&ut(),te(z)&&!te(S)&&(X&&clearLexicalSelection(X),X?.getRootElement()?.blur()),ze(S),Ko(S)){let Y=S;if(!Qr(Ke.current,Y)){qe(Y),await new Promise(Ee=>setTimeout(Ee,50));try{j=Y;let Ee=D?Y==="markdown"?bt():C(Y):pt(Y);A(Y,Ee),Jt(Ke.current,Y),j=null;}finally{qe(null);}}}te(S)&&(z==="visual-only"&&Ne.current!==null?setTimeout(()=>X?.focus(),100):as(()=>{let Ee=X?.getRootElement();Ee&&ls(Ee);}));}catch(Y){let Ee=Y instanceof Error?Y.message:"Invalid format - could not parse content";j&&typeof window<"u"&&Te({mode:j,error:Ee});}},W=g=>{!k||M!=="visual-only"||!vn(s,"visual-editor")||(Ne.current=g,B("visual-editor"));};useEffect(()=>{if(!te(M))return;let g=Ne.current;if(!g)return;Ne.current=null;let S=()=>{let j=X?.getRootElement();j&&cs(j,g.clientX,g.clientY);};if(typeof window<"u"&&typeof window.requestAnimationFrame=="function"){window.requestAnimationFrame(()=>S());return}let z=globalThis.setTimeout(S,0);return ()=>{globalThis.clearTimeout(z);}},[X,M]);let me=h?jsx(Rr,{commands:ee,hasExtension:g=>ye(g),activeStates:pe,isDark:e,toggleTheme:t,onCommandPaletteOpen:()=>{te(M)&&K.commandPalette!==false&&ee.showCommandPalette();},imageUploadHandler:g=>Z.find(S=>S.name==="image")?.config?.uploadHandler?.(g)??Promise.resolve(URL.createObjectURL(g)),layout:d??Co,toolbarVisibility:Ge,toolbarStyleVars:m,headingOptions:Je,paragraphLabel:P,isListStyleDropdownEnabled:fe,classNames:{toolbar:`luthor-toolbar luthor-toolbar--align-${y}${f?` ${f}`:""}`}}):null,xe=p,yt=te(M)&&h&&v==="top",ho=["luthor-editor-top-region",L&&v==="top"&&xe?"luthor-editor-top-region--pinned":""].filter(Boolean).join(" "),po=["luthor-editor-toolbar-slot","luthor-editor-toolbar-slot--top",yt&&(L&&v==="top"&&!xe)?"luthor-editor-toolbar-slot--pinned":""].filter(Boolean).join(" "),Vo=te(M)&&h&&v==="bottom",bo=X?.getRootElement()?.closest(".luthor-editor-wrapper")??null,ue=Ko(M)?M:null,Pt=M==="visual-only",Xt=te(M)||Pt,At=!lt||!te(M);return jsxs(Fragment,{children:[jsxs("div",{className:`luthor-editor${At?" luthor-editor--draggable-disabled":""}`,"data-mode":M,children:[(xe||yt)&&jsxs("div",{className:ho,children:[xe&&jsx("div",{className:"luthor-editor-header",children:jsx(vr,{mode:M,onModeChange:B,availableModes:s,isConverting:Qe})}),yt&&jsx("div",{className:po,children:me})]}),jsxs("div",{className:`luthor-editor-visual-shell${Xt?"":" is-hidden"}${At?" luthor-editor-visual-shell--no-gutter":""}`,"aria-hidden":!Xt,children:[!At&&jsx("div",{className:"luthor-editor-visual-gutter","aria-hidden":"true"}),jsx(RichText,{placeholder:o,nonEditableVisualMode:Pt,onEditIntent:Pt?W:void 0,classNames:{container:"luthor-richtext-container luthor-preset-extensive__container",contentEditable:"luthor-content-editable luthor-preset-extensive__content",placeholder:"luthor-placeholder luthor-preset-extensive__placeholder"}})]}),ue&&jsxs("div",{className:"luthor-source-panel",children:[we&&we.mode===ue&&jsxs("div",{className:"luthor-source-error",children:[jsx("div",{className:"luthor-source-error-icon",children:"!"}),jsxs("div",{className:"luthor-source-error-message",children:[jsx("strong",{children:rs[ue]}),jsx("p",{children:we.error}),jsx("small",{children:"Fix the errors above and try switching modes again"})]})]}),ue==="json"&&jsx(Oo,{value:Me.json,onChange:g=>A("json",g,{dirty:true}),placeholder:n,showLineNumbers:V}),ue==="markdown"&&jsx(Oo,{value:Me.markdown,onChange:g=>A("markdown",g,{dirty:true}),placeholder:i,className:"luthor-source-view--wrapped",wrap:"soft",showLineNumbers:V}),ue==="html"&&jsx(Oo,{value:Me.html,onChange:g=>A("html",g,{dirty:true}),placeholder:r,className:"luthor-source-view--wrapped",wrap:"soft",showLineNumbers:V})]})]}),jsx(fr,{editor:X,commands:ee,editorTheme:e?"dark":"light",disabled:!te(M)}),Vo&&jsx("div",{className:"luthor-editor-toolbar-slot luthor-editor-toolbar-slot--bottom",children:me}),te(M)&&jsx(Qn,{isOpen:Ye.isOpen,onClose:()=>ee.hideCommandPalette(),commands:Ye.commands}),te(M)&&jsx(rr,{isOpen:R.isOpen,query:R.query,position:R.position,portalContainer:bo,commands:R.commands,onClose:()=>ee.closeSlashMenu?.(),onExecute:g=>{ee.executeSlashCommand?.(g);}}),te(M)&&jsx(tr,{isOpen:ce.isOpen,query:ce.query,position:ce.position,portalContainer:bo,suggestions:ce.suggestions,onClose:()=>ee.closeEmojiSuggestions?.(),onExecute:g=>{ee.executeEmojiSuggestion?.(g);}})]})}var _o=forwardRef(({className:e,onReady:t,initialTheme:o="light",onThemeChange:n,theme:i,defaultContent:r,showDefaultContent:l=true,placeholder:s=ti,defaultEditorView:u,initialMode:d="visual-editor",isEditorViewTabsVisible:E,isEditorViewsTabVisible:v,availableModes:y=["visual-editor","visual-only","json","markdown","html"],variantClassName:f,toolbarLayout:m,toolbarVisibility:h,toolbarPosition:L="top",toolbarAlignment:p="left",toolbarClassName:w,toolbarStyleVars:P,quoteClassName:H,quoteStyleVars:F,defaultSettings:ae,editorThemeOverrides:ie,isToolbarEnabled:fe=true,isToolbarPinned:K=false,fontFamilyOptions:k,fontSizeOptions:T,lineHeightOptions:x,minimumDefaultLineHeight:D=1.5,scaleByRatio:V=false,headingOptions:se,paragraphLabel:ye,syncHeadingOptionsWithCommands:pe=true,slashCommandVisibility:X,shortcutConfig:Z,commandPaletteShortcutOnly:J=false,isListStyleDropdownEnabled:ge=true,editOnClick:M=true,isDraggableBoxEnabled:ze,featureFlags:Me,sourceMetadataMode:be="preserve",markdownBridgeFlavor:Qe="luthor",markdownSourceOfTruth:qe=false,syntaxHighlighting:we,grammarPreloadMode:Te="lazy",codeHighlightProvider:Ye,loadCodeHighlightProvider:De,maxAutoDetectCodeLength:R,isCopyAllowed:G=true,languageOptions:ce,showLineNumbers:Ze=true,inlineCodeHighlighting:et=true,maxListIndentation:Je=8},Be)=>{let[he,it]=useState(o),ee=useRef(null),Oe=he==="dark",Ce=fo(u??d),Ge=vn(y,Ce)?Ce:fo(y[0]??"visual-editor"),lt=E??v??true,Ue=()=>it(Oe?"light":"dark"),Q=useMemo(()=>typeof s=="string"?{visual:s,json:oi,markdown:ni,html:ri}:{visual:s.visual??ti,json:s.json??oi,markdown:s.markdown??ni,html:s.html??ri},[s]);useEffect(()=>{it(o);},[o]),useEffect(()=>{n?.(he);},[he,n]),useEffect(()=>{if(!K||L!=="top")return;let ue=ee.current;if(ue)return ss(ue)},[K,L]);let ve=useMemo(()=>gs(k),[k]),at=useMemo(()=>fs(T),[T]),st=useMemo(()=>hs(x),[x]),tt=useMemo(()=>ps(D),[D]),gt=useMemo(()=>bs(Je),[Je]),ot=we??"unset",ft=Te,Ke=typeof R=="number"?R.toString():"unset",We=useMemo(()=>ys(ce),[ce]),_e=G?"copy-on":"copy-off",Se=Ze?"line-numbers-on":"line-numbers-off",Ve=useMemo(()=>typeof ze!="boolean"?Me:{...Me??{},draggableBlock:ze},[Me,ze]),ht=useMemo(()=>vs(Ve),[Ve]),Rt=useMemo(()=>co(Ve),[Ve]),Ne=`${ve}::${at}::${st}::${tt}::${gt}::${V?"ratio-on":"ratio-off"}::${ot}::${ft}::${Ke}::${_e}::${Se}::${We}::${ht}`,Lt=useRef(k),wt=useRef(T),Tt=useRef(x),pt=useRef(D),ut=useRef(Ve),bt=useRef(ce),C=useRef(Ye),b=useRef(De),A=useRef(Ne);(A.current!==Ne||C.current!==Ye||b.current!==De)&&(A.current=Ne,Lt.current=k,wt.current=T,Tt.current=x,pt.current=D,ut.current=Ve,bt.current=ce,C.current=Ye,b.current=De);let B=useRef(null);if(!B.current||B.current.key!==Ne){let ue={fontFamilyOptions:Lt.current,fontSizeOptions:wt.current,lineHeightOptions:Tt.current,minimumDefaultLineHeight:pt.current,maxListIndentation:Number(gt),scaleByRatio:V,...we!==void 0?{syntaxHighlighting:we}:{},...Te!==void 0?{grammarPreloadMode:Te}:{},...C.current!==void 0?{codeHighlightProvider:C.current}:{},...b.current!==void 0?{loadCodeHighlightProvider:b.current}:{},...R!==void 0?{maxAutoDetectCodeLength:R}:{},isCopyAllowed:G,showLineNumbers:Ze,...bt.current!==void 0?{languageOptions:bt.current}:{},...typeof ze=="boolean"?{isDraggableBoxEnabled:ze}:{},...ut.current?{featureFlags:ut.current}:{}};B.current={key:Ne,value:mo(ue)};}let W=B.current.value,me=useMemo(()=>{let ue=mergeThemes(defaultLuthorTheme,i??{});return H?{...ue,quote:`${ue.quote??""} ${H}`.trim()}:ue},[i,H]),xe=useMemo(()=>Cn(ie),[ie]),yt=useMemo(()=>Cn(F),[F]),Wt=useMemo(()=>Cs(ae),[ae]),ho=useMemo(()=>Cn(Wt),[Wt]),kn=useMemo(()=>{let ue=Wt,Pt=createEditorThemeStyleVars(ie),Xt=F,At={"--luthor-default-line-height":tt};return !ue&&!Pt&&!Xt?At:{...ue??{},...Pt,...Xt??{},...At}},[tt,Wt,ie,F,ho,xe,yt]),[po,Vo]=useState(null);useImperativeHandle(Be,()=>po??{injectJSON:()=>{},getJSON:()=>Fe("json",go),getMarkdown:()=>Fe("markdown",go,be,Qe),getHTML:()=>Fe("html",go,be,Qe)},[Qe,po,be]);let bo=ue=>{Vo(ue),r&&ue.injectJSON(ds(r)),t?.(ue);};return jsx("div",{ref:ee,className:`luthor-preset luthor-preset-extensive luthor-editor-wrapper${K?" luthor-editor-wrapper--toolbar-pinned":""} ${f||""} ${e||""}`.trim(),"data-editor-theme":he,"data-inline-code-highlighting":et?"on":"off",style:kn,children:jsx(os,{extensions:W,config:{theme:me},children:jsx(Os,{isDark:Oe,toggleTheme:Ue,visualPlaceholder:Q.visual,jsonPlaceholder:Q.json,markdownPlaceholder:Q.markdown,htmlPlaceholder:Q.html,initialMode:Ge,availableModes:y,onReady:bo,toolbarLayout:m,toolbarVisibility:h,toolbarPosition:L,toolbarAlignment:p,toolbarClassName:w,toolbarStyleVars:P,isToolbarEnabled:fe,isToolbarPinned:K,isEditorViewTabsVisible:lt,headingOptions:se,paragraphLabel:ye,syncHeadingOptionsWithCommands:pe,slashCommandVisibility:X,shortcutConfig:Z,commandPaletteShortcutOnly:J,isListStyleDropdownEnabled:ge,featureFlags:Rt,editOnClick:M,sourceMetadataMode:be,markdownBridgeFlavor:Qe,markdownSourceOfTruth:qe,showLineNumbers:Ze})})})});_o.displayName="ExtensiveEditor";var di=["undo","redo","fontFamily","heading","fontSize","lineHeight","textColor","textHighlight","bold","italic","underline","strikethrough","subscript","superscript","link","image","table","horizontalRule","iframeEmbed","youtubeEmbed","blockquote","code","codeBlock","bulletedList","numberedList","checkList","commandPalette","floatingToolbar","contextMenu","draggableBlock","customNode","sourceMode","themeToggle"],mi={id:"extensive",label:"Extensive Editor",description:"Complete editing preset with all core features enabled.",extensions:[...pn],components:{Editor:_o},toolbar:[...di],config:kr("extensive","Write anything..."),css:"extensive/styles.css"};function Hs(e={}){return {...mi,extensions:[...mo({fontFamilyOptions:e.fontFamilyOptions,fontSizeOptions:e.fontSizeOptions,lineHeightOptions:e.lineHeightOptions,minimumDefaultLineHeight:e.minimumDefaultLineHeight,maxListIndentation:e.maxListIndentation,isCopyAllowed:e.isCopyAllowed,languageOptions:e.languageOptions,showLineNumbers:e.showLineNumbers,grammarPreloadMode:e.grammarPreloadMode})]}}export{Ct as $,Jo as A,Xr as Aa,An as B,bn as Ba,zn as C,Qr as Ca,Dn as D,Jt as Da,Ks as E,_o as Ea,Bn as F,di as Fa,_s as G,mi as Ga,So as H,Hs as Ha,Un as I,Kn as J,xo as K,_n as L,Vn as M,jn as N,$n as O,qn as P,Go as Q,Yn as R,Jn as S,Ut as T,Gn as U,Qn as V,tr as W,rr as X,N as Y,Qo as Z,io as _,Rs as a,ar as aa,je as b,sr as ba,As as c,Zo as ca,Co as d,ur as da,qo as e,fr as ea,In as f,vr as fa,Fn as g,Oo as ga,On as h,kr as ha,Eo as i,Sr as ia,ko as j,xr as ja,Lo as k,Ir as ka,wo as l,jl as la,To as m,$l as ma,Nn as n,ql as na,zt as o,Rr as oa,xt as p,Kr as pa,Qt as q,co as qa,Zt as r,_r as ra,eo as s,mo as sa,Hn as t,pn as ta,Rn as u,$r as ua,Yo as v,qr as va,Dt as w,Yr as wa,It as x,Jr as xa,Pn as y,Gr as ya,Bt as z,Wr as za};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {a,b}from'./chunk-WM5NNMZA.js';import {Ea,ha,sa}from'./chunk-QON7NKIG.js';import {forwardRef}from'react';import {jsx}from'react/jsx-runtime';var d=["visual-only","visual","json","markdown"],u=["visual-only","visual","json","html"],E=["visual-only","visual","markdown","html"],o={bold:true,italic:true,underline:false,strikethrough:true,fontFamily:false,fontSize:false,lineHeight:false,textColor:false,textHighlight:false,subscript:false,superscript:false,link:true,horizontalRule:true,table:true,list:true,history:true,image:true,blockFormat:true,code:true,codeIntelligence:false,codeFormat:true,tabIndent:true,enterKeyBehavior:true,iframeEmbed:false,youTubeEmbed:false,floatingToolbar:false,contextMenu:false,commandPalette:false,slashCommand:false,emoji:false,draggableBlock:false,customNode:false,themeToggle:true},A={tabIndent:true,draggableBlock:false,iframeEmbed:false,youTubeEmbed:false,customNode:false,emoji:false,commandPalette:false,slashCommand:false},M=new a(o,A),m={sections:[{items:["undo","redo"]},{items:["blockFormat","quote","alignLeft","alignCenter","alignRight","alignJustify"]},{items:["bold","italic","strikethrough","code","link"]},{items:["unorderedList","orderedList","checkList","indentList","outdentList"]},{items:["codeBlock","horizontalRule","table","image"]},{items:["themeToggle"]}]};function v(e){return e==="both"?E:e==="html"?u:d}var r=forwardRef(({className:e,variantClassName:f,toolbarClassName:L,toolbarLayout:g,sourceFormat:h="both",initialMode:y="visual",defaultEditorView:_,featureFlags:R,...p},C)=>{let a=v(h),i=_??y,b$1=a.includes(i)?i:"visual";return jsx(Ea,{ref:C,...p,className:b("luthor-preset-legacy-rich",e),variantClassName:b("luthor-preset-legacy-rich__variant",f),toolbarClassName:b("luthor-preset-legacy-rich__toolbar",L),availableModes:a,initialMode:b$1,sourceMetadataMode:"none",isListStyleDropdownEnabled:false,toolbarLayout:g??m,featureFlags:M.resolve(R)})});r.displayName="LegacyRichEditor";var x={id:"legacy-rich",label:"Legacy Rich Editor",description:"Metadata-free rich text profile for native markdown and html compatibility.",extensions:sa({featureFlags:o}),components:{Editor:r},toolbar:["undo","redo","blockFormat","quote","alignLeft","alignCenter","alignRight","alignJustify","bold","italic","strikethrough","code","link","unorderedList","orderedList","checkList","codeBlock","horizontalRule","table","image"],config:ha("legacy-rich","Write metadata-free content...")};export{d as a,u as b,E as c,o as d,m as e,r as f,x as g};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {a,b}from'./chunk-WM5NNMZA.js';import {sa,ha,ka,ja,ia,fa,ga}from'./chunk-QON7NKIG.js';import {forwardRef,useState,useMemo,useRef,useEffect,useImperativeHandle,useCallback}from'react';import {createEditorSystem,jsonToHTML,jsonToMarkdown,RichText,htmlToJSON,markdownToJSON}from'@lyfie/luthor-headless';import {jsx,jsxs}from'react/jsx-runtime';var{Provider:me,useEditor:pe}=createEditorSystem(),te=["visual-only","visual","json","markdown","html"],Ee={"visual-only":"Visual Only",visual:"Visual",json:"JSON",markdown:"MD",html:"HTML"},ge={json:"Invalid JSON",markdown:"Invalid Markdown",html:"Invalid HTML"},Y="Start writing...",W="Enter JSON document content...",X="Enter Markdown content...",Z="Enter HTML content...",M={root:{type:"root",version:1,format:"",indent:0,direction:null,children:[{type:"paragraph",version:1,format:"",indent:0,direction:null,children:[{type:"text",version:1,text:"",detail:0,format:0,mode:"normal",style:""}]}]}},B={bold:true,italic:true,underline:false,strikethrough:true,fontFamily:false,fontSize:false,lineHeight:false,textColor:false,textHighlight:false,subscript:false,superscript:false,link:false,horizontalRule:true,table:false,list:true,history:true,image:false,blockFormat:true,code:true,codeIntelligence:false,codeFormat:true,tabIndent:true,enterKeyBehavior:true,iframeEmbed:false,youTubeEmbed:false,floatingToolbar:false,contextMenu:false,commandPalette:false,slashCommand:false,emoji:false,draggableBlock:false,customNode:false,themeToggle:false},fe={draggableBlock:false,themeToggle:false,table:false,image:false,iframeEmbed:false,youTubeEmbed:false,customNode:false,slashCommand:false,commandPalette:false,contextMenu:false,floatingToolbar:false},ve=new a(B,fe);function I(r){return r instanceof Error&&r.message.trim()?r.message.trim():"Unable to process the current source content."}function oe(r){return r&&typeof r=="object"?r:M}function se(r){let l=r.trim();return l?JSON.parse(l):M}function He(r,l){switch(r){case "json":return se(l);case "markdown":return markdownToJSON(l);case "html":return htmlToJSON(l)}}function x(r){return r==="visual"||r==="visual-only"}function c(r,l){let d=oe(l);switch(r){case "json":return ia(JSON.stringify(d));case "markdown":return ja(jsonToMarkdown(d));case "html":return ka(jsonToHTML(d))}}function Se(r){return typeof r=="string"||typeof r>"u"?{visual:r??Y,json:W,markdown:X,html:Z}:{visual:r.visual??Y,json:r.json??W,markdown:r.markdown??X,html:r.html??Z}}function _e({initialMode:r,placeholders:l,showLineNumbers:d,onReady:f}){let{activeStates:L,commands:e,export:u,import:p}=pe(),[a,H]=useState(r),[h,m]=useState({json:"",markdown:"",html:""}),[S,b]=useState(null),v=useRef(false),t=L,E=useCallback(()=>{let s=oe(u.toJSON()),i={json:c("json",s),markdown:c("markdown",s),html:c("html",s)};return m(i),i},[u]),C=useCallback((s,i)=>{let A=He(s,i);return p.fromJSON(A),A},[p]),w=useMemo(()=>({injectJSON:s=>{try{let i=se(s);p.fromJSON(i),b(null),E();}catch(i){b({mode:"json",error:I(i)});}},getJSON:()=>c("json",u.toJSON()),getMarkdown:()=>c("markdown",u.toJSON()),getHTML:()=>c("html",u.toJSON())}),[u,p,E]);useEffect(()=>{!f||v.current||(v.current=true,f(w));},[w,f]);let _=useCallback(s=>{if(s!==a){if(x(a)){if(!x(s))try{E(),b(null);}catch(i){b({mode:s,error:I(i)});return}H(s);return}try{let i=h[a],A=C(a,i);if(x(s)){b(null),H(s);return}let re=c(s,A);m(ae=>({...ae,[s]:re})),b(null),H(s);}catch(i){b({mode:a,error:I(i)});}}},[a,C,h,E]),T=useCallback(()=>{a==="visual"&&(t.bold&&e.toggleBold?.(),t.italic&&e.toggleItalic?.(),t.strikethrough&&e.toggleStrikethrough?.(),t.code&&e.formatText?.("code"),e.removeLink?.());},[e,a,t.bold,t.code,t.italic,t.strikethrough]),j=useCallback(()=>{a==="visual"&&(t.unorderedList&&e.toggleUnorderedList?.(),t.orderedList&&e.toggleOrderedList?.(),t.isQuote&&e.toggleQuote?.(),t.isInCodeBlock&&e.toggleCodeBlock?.(),e.toggleParagraph?.());},[e,a,t.isInCodeBlock,t.isQuote,t.orderedList,t.unorderedList]),P=useCallback(()=>{a==="visual"&&e.insertHardBreak?.();},[e,a]),k=x(a),n=a==="visual",F=a==="visual-only";return jsxs("div",{className:"luthor-editor","data-mode":a,children:[jsx("div",{className:"luthor-editor-header",children:jsx(fa,{mode:a,onModeChange:s=>_(s),availableModes:te,labels:Ee})}),jsxs("div",{className:"luthor-preset-headless-editor__toolbar",role:"toolbar","aria-label":"Headless editor toolbar",children:[jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.bold?" is-active":""}`,onClick:()=>e.toggleBold?.(),disabled:!n,children:"Bold"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.italic?" is-active":""}`,onClick:()=>e.toggleItalic?.(),disabled:!n,children:"Italic"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.strikethrough?" is-active":""}`,onClick:()=>e.toggleStrikethrough?.(),disabled:!n,children:"Strike"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.code?" is-active":""}`,onClick:()=>e.formatText?.("code"),disabled:!n,children:"Code"}),jsx("button",{type:"button",className:"luthor-preset-headless-editor__button",onClick:T,disabled:!n,children:"Clear marks"}),jsx("button",{type:"button",className:"luthor-preset-headless-editor__button",onClick:j,disabled:!n,children:"Clear nodes"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isParagraph?" is-active":""}`,onClick:()=>e.toggleParagraph?.(),disabled:!n,children:"Paragraph"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isH1?" is-active":""}`,onClick:()=>e.toggleHeading?.("h1"),disabled:!n,children:"H1"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isH2?" is-active":""}`,onClick:()=>e.toggleHeading?.("h2"),disabled:!n,children:"H2"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isH3?" is-active":""}`,onClick:()=>e.toggleHeading?.("h3"),disabled:!n,children:"H3"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isH4?" is-active":""}`,onClick:()=>e.toggleHeading?.("h4"),disabled:!n,children:"H4"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isH5?" is-active":""}`,onClick:()=>e.toggleHeading?.("h5"),disabled:!n,children:"H5"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isH6?" is-active":""}`,onClick:()=>e.toggleHeading?.("h6"),disabled:!n,children:"H6"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.unorderedList?" is-active":""}`,onClick:()=>e.toggleUnorderedList?.(),disabled:!n,children:"Bullet list"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.orderedList?" is-active":""}`,onClick:()=>e.toggleOrderedList?.(),disabled:!n,children:"Ordered list"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isInCodeBlock?" is-active":""}`,onClick:()=>e.toggleCodeBlock?.(),disabled:!n,children:"Code block"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isQuote?" is-active":""}`,onClick:()=>e.toggleQuote?.(),disabled:!n,children:"Blockquote"}),jsx("button",{type:"button",className:"luthor-preset-headless-editor__button",onClick:()=>e.insertHorizontalRule?.(),disabled:!n,children:"Horizontal rule"}),jsx("button",{type:"button",className:"luthor-preset-headless-editor__button",onClick:P,disabled:!n,children:"Hard break"}),jsx("button",{type:"button",className:"luthor-preset-headless-editor__button",onClick:()=>e.undo?.(),disabled:!n||!t.canUndo,children:"Undo"}),jsx("button",{type:"button",className:"luthor-preset-headless-editor__button",onClick:()=>e.redo?.(),disabled:!n||!t.canRedo,children:"Redo"})]}),jsx("div",{className:`luthor-preset-headless-editor__visual-shell${k?"":" is-hidden"}`,"aria-hidden":!k,children:jsx(RichText,{placeholder:l.visual,nonEditableVisualMode:F,onEditIntent:F?()=>_("visual"):void 0,classNames:{container:"luthor-richtext-container luthor-preset-headless-editor__container",contentEditable:"luthor-content-editable luthor-preset-headless-editor__content",placeholder:"luthor-placeholder luthor-preset-headless-editor__placeholder"}})}),!k&&jsxs("div",{className:"luthor-source-panel",children:[S&&S.mode===a&&jsxs("div",{className:"luthor-source-error",children:[jsx("div",{className:"luthor-source-error-icon",children:"!"}),jsxs("div",{className:"luthor-source-error-message",children:[jsx("strong",{children:ge[a]}),jsx("p",{children:S.error}),jsx("small",{children:"Fix the source input and try again."})]})]}),a==="json"&&jsx(ga,{value:h.json,onChange:s=>{m(i=>({...i,json:s}));},placeholder:l.json,showLineNumbers:d}),a==="markdown"&&jsx(ga,{value:h.markdown,onChange:s=>{m(i=>({...i,markdown:s}));},placeholder:l.markdown,className:"luthor-source-view--wrapped",wrap:"soft",showLineNumbers:d}),a==="html"&&jsx(ga,{value:h.html,onChange:s=>{m(i=>({...i,html:s}));},placeholder:l.html,className:"luthor-source-view--wrapped",wrap:"soft",showLineNumbers:d})]})]})}var J=forwardRef(({className:r,variantClassName:l,initialTheme:d="light",onThemeChange:f,placeholder:L,onReady:e,defaultContent:u,showDefaultContent:p=true,initialMode:a="visual",defaultEditorView:H,showLineNumbers:h=true,featureFlags:m,...S},b$1)=>{let[v,t]=useState(d),E=H??a,C=te.includes(E)?E:"visual",w=useMemo(()=>Se(L),[L]),_=useMemo(()=>ve.resolve(m),[m]),T=useMemo(()=>JSON.stringify(_),[_]),j=useMemo(()=>{let s=JSON.parse(T);return sa({featureFlags:s,showLineNumbers:h})},[T,h]),[P,k]=useState(null),n=useRef(false);useEffect(()=>{t(d);},[d]),useEffect(()=>{f?.(v);},[v,f]),useImperativeHandle(b$1,()=>P??{injectJSON:()=>{},getJSON:()=>c("json",M),getMarkdown:()=>c("markdown",M),getHTML:()=>c("html",M)},[P]);let F=useCallback(s=>{k(s),n.current||(u&&s.injectJSON(u),n.current=true),e?.(s);},[u,e,p]);return jsx("div",{className:b("luthor-preset","luthor-preset-headless-editor","luthor-editor-wrapper","luthor-preset-headless-editor__variant",l,r),"data-editor-theme":v,children:jsx(me,{extensions:j,children:jsx(_e,{initialMode:C,placeholders:w,showLineNumbers:h,onReady:F})})})});J.displayName="HeadlessEditorPreset";var ke={id:"headless-editor",label:"Headless Editor",description:"Headless-style rich editor with text toolbar pills and source tabs.",extensions:sa({featureFlags:B}),components:{Editor:J},toolbar:["bold","italic","strikethrough","code","clearMarks","clearNodes","paragraph","h1","h2","h3","h4","h5","h6","unorderedList","orderedList","codeBlock","quote","horizontalRule","hardBreak","undo","redo"],config:ha("headless-editor","Start writing..."),css:"headless-editor/styles.css"};export{J as a,ke as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {d,f,e as e$1}from'./chunk-SQTZVN2Z.js';import {b}from'./chunk-WM5NNMZA.js';import {ha,sa}from'./chunk-QON7NKIG.js';import {forwardRef}from'react';import {jsx}from'react/jsx-runtime';var e={...d,codeIntelligence:true},L=e$1,r=forwardRef(({className:n,variantClassName:l,toolbarClassName:E,toolbarLayout:m,initialMode:c="visual",defaultEditorView:p,featureFlags:u,...M},f$1)=>{let D={...e,...u??{}};return jsx(f,{ref:f$1,...M,className:b("luthor-preset-md-editor",n),variantClassName:b("luthor-preset-md-editor__variant",l),toolbarClassName:b("luthor-preset-md-editor__toolbar",E),sourceFormat:"markdown",initialMode:c,defaultEditorView:p,markdownBridgeFlavor:"github",markdownSourceOfTruth:true,featureFlags:D,toolbarLayout:m??L})});r.displayName="MarkDownEditor";var g={id:"md-editor",label:"MD Editor",description:"Markdown-native feature set with visual, JSON, and MD source views.",extensions:sa({featureFlags:e}),components:{Editor:r},toolbar:["undo","redo","blockFormat","quote","alignLeft","alignCenter","alignRight","alignJustify","bold","italic","strikethrough","code","codeBlock","link","unorderedList","orderedList","checkList","horizontalRule","table","image"],config:ha("md-editor","Write markdown..."),css:"md-editor/styles.css"};export{r as a,g as b};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {a}from'./chunk-
|
|
1
|
+
import {a}from'./chunk-QON7NKIG.js';var s=class{constructor(e,a$1={}){a(this,"defaults");a(this,"enforced");this.defaults={...e},this.enforced={...a$1};}resolve(e){return {...this.defaults,...e??{},...this.enforced}}};function n(...t){return t.filter(e=>typeof e=="string"&&e.trim().length>0).join(" ")}export{s as a,n as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {a,b as b$1}from'./chunk-WM5NNMZA.js';import {Ea,ha,sa}from'./chunk-QON7NKIG.js';import {forwardRef}from'react';import {jsx}from'react/jsx-runtime';var E={bold:true,italic:true,underline:true,strikethrough:true,list:true,history:true,link:true,blockFormat:true,codeFormat:true,image:false,table:false,iframeEmbed:false,youTubeEmbed:false,emoji:false,floatingToolbar:false,contextMenu:false,commandPalette:false,slashCommand:false,draggableBlock:false,customNode:false},b=new a(E),o=forwardRef(({className:m,variantClassName:d,compactToolbar:t=false,toolbarClassName:p,featureFlags:f,...c},n)=>jsx("div",{className:b$1("luthor-preset-compose",m),children:jsx(Ea,{ref:n,...c,className:"luthor-preset-compose__editor",variantClassName:b$1(t?"luthor-preset-compose--compact":void 0,"luthor-preset-compose__variant",d),toolbarClassName:b$1(t?"luthor-preset-compose__toolbar--compact":void 0,p),availableModes:["visual-only","visual","json"],featureFlags:b.resolve(f)})}));o.displayName="ComposeEditor";var g={id:"compose",label:"Compose Editor",description:"Focused rich text drafting preset with a compact, practical toolbar.",extensions:sa({featureFlags:{image:false,table:false,iframeEmbed:false,youTubeEmbed:false,emoji:true,commandPalette:false,slashCommand:false,draggableBlock:false,customNode:false}}),components:{Editor:o},toolbar:["bold","italic","underline","strikethrough","link","unorderedList","orderedList","checkList","undo","redo"],config:ha("compose","Write your draft..."),css:"compose/styles.css"};export{o as a,g as b};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {ha,sa,Ea,ja}from'./chunk-
|
|
1
|
+
import {ha,sa,Ea,ja}from'./chunk-QON7NKIG.js';import {jsonToMarkdown}from'@lyfie/luthor-headless';import {useRef,useState,useMemo,useCallback,useEffect}from'react';import {jsx,jsxs}from'react/jsx-runtime';var W=JSON.stringify({root:{children:[{children:[{detail:0,format:0,mode:"normal",style:"",text:"",type:"text",version:1}],direction:null,format:"",indent:0,type:"paragraph",version:1}],direction:null,format:"",indent:0,type:"root",version:1}});function N(o){return typeof o=="number"?`${o}px`:o}function D(o,n){if(typeof o=="number"&&Number.isFinite(o))return o;if(typeof o=="string"){let l=o.trim();if(l.length===0)return n;let g=Number.parseFloat(l.replace("px",""));if(Number.isFinite(g))return g}return n}function ce(o){try{let n=o?JSON.parse(o):void 0;return ja(jsonToMarkdown(n))}catch{return ""}}function Z(o,n,l){return l<=n?n:Math.min(l,Math.max(n,o))}function me(o,n,l){o.focus();let L=Array.from(o.children).filter(s=>s instanceof HTMLElement).reduce((s,r)=>{let u=r.getBoundingClientRect(),M=u.top+u.height/2;if(!s)return r;let y=s.getBoundingClientRect(),P=y.top+y.height/2;return Math.abs(M-l)<Math.abs(P-l)?r:s},null)??o.firstElementChild??o,C=o.getBoundingClientRect(),x=L.getBoundingClientRect(),a=Z(n,C.left+1,C.right-1),c=Z(l,x.top+1,x.bottom-1),d=document,m=d.caretPositionFromPoint?.(a,c);if(m){let s=window.getSelection();if(!s)return;let r=document.createRange();r.setStart(m.offsetNode,m.offset),r.collapse(true),s.removeAllRanges(),s.addRange(r);return}let f=d.caretRangeFromPoint?.(a,c);if(!f)return;let p=window.getSelection();p&&(f.collapse(true),p.removeAllRanges(),p.addRange(f));}function j({className:o,variantClassName:n,initialTheme:l,onThemeChange:g,theme:z,defaultContent:L,showDefaultContent:C=false,placeholder:x,formattingOptions:a,onSend:c,outputFormat:d="md",clearOnSend:m=true,allowEmptySend:f=false,submitOnEnter:p=false,allowShiftEnter:s=true,minHeight:r=56,maxHeight:u=220,minWidth:M=240,maxWidth:y="100%",showBottomToolbar:P=true,toolbarButtons:te=[],toolbarClassName:oe,toolbarStyle:re,showSendButton:R=true,sendButtonPlacement:w="inside",sendButtonContent:K="Send",sendButtonAriaLabel:V="Send message",sendButtonClassName:I,scrollAreaClassName:B}){let F=useRef(null),E=useRef(null),[J,ie]=useState(()=>D(r,56)),q=useMemo(()=>D(r,56),[r]),A=useMemo(()=>D(u,220),[u]),O=useMemo(()=>({bold:a?.bold!==false,italic:a?.italic!==false,strikethrough:a?.strikethrough!==false}),[a]),ne=useMemo(()=>({disabledCommandIds:["history.undo","history.redo"],bindings:{"format.bold":[{key:"b",ctrlKey:true},{key:"b",metaKey:true}],"format.italic":[{key:"i",ctrlKey:true},{key:"i",metaKey:true}],"format.strikethrough":[{key:"x",ctrlKey:true,shiftKey:true},{key:"x",metaKey:true,shiftKey:true}],"format.code":false,"block.codeblock":false}}),[]),_=useCallback(()=>{let e=F.current?.getJSON()??W,t=ce(e);return {json:e,markdown:t,text:d==="json"?e:t}},[d]),T=useCallback(()=>{if(!c)return;let e=_();!f&&!e.markdown.trim()||(c({format:d,text:e.text,markdown:e.markdown,json:e.json}),m&&F.current?.injectJSON(W));},[f,m,c,d,_]),h=useCallback(()=>{let e=E.current;if(!e)return;let t=e.querySelector(".luthor-content-editable");if(!t)return;let i=Math.max(q,Math.min(A,t.scrollHeight));ie(i);},[A,q]),se=useCallback(e=>{!p||e.key!=="Enter"||e.nativeEvent.isComposing||e.shiftKey&&s||(e.preventDefault(),T());},[s,T,p]),le=useCallback(e=>{let t=e.target;if(t.closest("button, a, input, textarea, [contenteditable='true']")||t.closest(".luthor-simple-editor-bottom-toolbar"))return;let S=E.current?.querySelector(".luthor-content-editable");S&&(e.preventDefault(),me(S,e.clientX,e.clientY));},[]);useEffect(()=>{h();},[h]),useEffect(()=>{let e=E.current;if(!e)return;let t=e.querySelector(".luthor-content-editable");if(!t)return;let i=()=>h();t.addEventListener("input",i),t.addEventListener("keyup",i),t.addEventListener("paste",i);let S=typeof ResizeObserver<"u"?new ResizeObserver(()=>h()):null;S?.observe(t);let Y=new MutationObserver(()=>h());return Y.observe(t,{childList:true,subtree:true,characterData:true}),()=>{t.removeEventListener("input",i),t.removeEventListener("keyup",i),t.removeEventListener("paste",i),S?.disconnect(),Y.disconnect();}},[h]),useEffect(()=>{let t=E.current?.querySelector(".luthor-richtext-container");if(!t||!B)return;let i=B.split(/\s+/).filter(Boolean);if(i.length!==0)return t.classList.add(...i),()=>{t.classList.remove(...i);}},[B]);let ae=useMemo(()=>({"--luthor-simple-editor-min-height":N(r),"--luthor-simple-editor-max-height":N(u),"--luthor-simple-editor-current-height":`${J}px`,"--luthor-simple-editor-min-width":N(M),"--luthor-simple-editor-max-width":N(y)}),[J,u,y,r,M]);return jsx("div",{ref:E,className:["luthor-preset-simple-editor",R&&w==="inside"?"luthor-preset-simple-editor--send-inside":"",o].filter(Boolean).join(" "),style:ae,onKeyDownCapture:se,onMouseDownCapture:le,children:jsxs("div",{className:"luthor-simple-editor-row",children:[jsxs("div",{className:"luthor-simple-editor-shell",children:[jsx(Ea,{ref:F,initialTheme:l,onThemeChange:g,theme:z,defaultContent:L,showDefaultContent:C,placeholder:x,variantClassName:["luthor-preset-simple-editor__variant",n].filter(Boolean).join(" "),isToolbarEnabled:false,availableModes:["visual-only","visual"],initialMode:"visual",shortcutConfig:ne,featureFlags:{bold:O.bold,italic:O.italic,underline:false,strikethrough:O.strikethrough,fontFamily:false,fontSize:false,lineHeight:false,textColor:false,textHighlight:false,subscript:false,superscript:false,link:false,horizontalRule:false,table:false,list:false,image:false,blockFormat:false,code:false,codeIntelligence:false,codeFormat:false,iframeEmbed:false,youTubeEmbed:false,floatingToolbar:false,contextMenu:false,commandPalette:false,slashCommand:false,emoji:false,draggableBlock:false,customNode:false,themeToggle:false,history:false}}),R&&w==="inside"&&jsx("button",{type:"button",className:["luthor-simple-editor-action","luthor-simple-editor-action-send","luthor-simple-editor-action-send--inside",I].filter(Boolean).join(" "),"data-testid":"simple-editor-send-button",onClick:T,"aria-label":V,children:K}),P&&jsx("div",{className:["luthor-simple-editor-bottom-toolbar",oe].filter(Boolean).join(" "),style:re,"data-testid":"simple-editor-actions",children:te.map(e=>jsx("button",{type:"button",className:["luthor-simple-editor-action",e.className].filter(Boolean).join(" "),"aria-label":e.ariaLabel,disabled:e.disabled,title:e.title,onClick:e.onClick,children:e.content},e.id))})]}),R&&w==="right"&&jsx("button",{type:"button",className:["luthor-simple-editor-action","luthor-simple-editor-action-send","luthor-simple-editor-action-send--right",I].filter(Boolean).join(" "),"data-testid":"simple-editor-send-button",onClick:T,"aria-label":V,children:K})]})})}var fe={id:"simple-editor",label:"Simple Editor",description:"Lightweight editor with constrained formatting and send controls.",extensions:sa({featureFlags:{bold:true,italic:true,underline:false,strikethrough:true,table:false,image:false,blockFormat:false,code:false,codeIntelligence:false,codeFormat:false,list:false,iframeEmbed:false,youTubeEmbed:false,commandPalette:false,slashCommand:false,draggableBlock:false,customNode:false,history:false}}),components:{Editor:j},toolbar:[],config:ha("simple-editor","Type your message..."),css:"simple-editor/styles.css"};export{j as a,fe as b};
|