@lyfie/luthor 2.6.2 → 2.6.3

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.
Files changed (34) hide show
  1. package/README.md +4 -1
  2. package/dist/{LegacyRichEditor-WKh3E8Mm.d.ts → LegacyRichEditor-nwNjxKl0.d.ts} +1 -1
  3. package/dist/{chunk-FG7KKFSZ.js → chunk-43UEZI2W.js} +1 -1
  4. package/dist/{chunk-3NM6QW7C.js → chunk-B7I6RV47.js} +1 -1
  5. package/dist/chunk-GK2BZF4S.js +13 -0
  6. package/dist/{chunk-XZATJCFW.js → chunk-KMBYB4ZH.js} +1 -1
  7. package/dist/{chunk-OYT6CNV2.js → chunk-OP2P26RL.js} +1 -1
  8. package/dist/{chunk-QO42IS2Z.js → chunk-SVXMC7MP.js} +1 -1
  9. package/dist/chunk-WWWLNSEV.js +6 -0
  10. package/dist/{chunk-RQGJYLCJ.js → chunk-Y4NMVA4M.js} +1 -1
  11. package/dist/{chunk-NYROU753.js → chunk-YIBO4533.js} +1 -1
  12. package/dist/{index-9mVYz0Ze.d.ts → index-7HXwi2Zc.d.ts} +1 -1
  13. package/dist/{index-BFix2QsP.d.ts → index-DIFqz4Pg.d.ts} +2 -0
  14. package/dist/index.d.ts +5 -5
  15. package/dist/index.js +1 -1
  16. package/dist/presets/compose/index.d.ts +1 -1
  17. package/dist/presets/compose/index.js +1 -1
  18. package/dist/presets/extensive/index.d.ts +2 -2
  19. package/dist/presets/extensive/index.js +1 -1
  20. package/dist/presets/headless-editor/index.d.ts +1 -1
  21. package/dist/presets/headless-editor/index.js +1 -1
  22. package/dist/presets/html-editor/index.d.ts +2 -2
  23. package/dist/presets/html-editor/index.js +1 -1
  24. package/dist/presets/legacy-rich/index.d.ts +2 -2
  25. package/dist/presets/legacy-rich/index.js +1 -1
  26. package/dist/presets/md-editor/index.d.ts +2 -2
  27. package/dist/presets/md-editor/index.js +1 -1
  28. package/dist/presets/simple-editor/index.d.ts +1 -1
  29. package/dist/presets/simple-editor/index.js +1 -1
  30. package/dist/presets/slash-editor/index.d.ts +1 -1
  31. package/dist/presets/slash-editor/index.js +1 -1
  32. package/package.json +4 -4
  33. package/dist/chunk-NM2K6UES.js +0 -6
  34. package/dist/chunk-V3QBXWHM.js +0 -13
package/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  <div align="center">
2
- <img src="https://raw.githubusercontent.com/lyfie-org/luthor/main/apps/web/public/luthor-logo-horizontal.png" alt="Luthor" width="360" />
2
+ <picture>
3
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/lyfie-org/luthor/main/apps/web/public/luthor-logo-horizontal-dark.png" />
4
+ <img src="https://raw.githubusercontent.com/lyfie-org/luthor/main/apps/web/public/luthor-logo-horizontal-light.png" alt="Luthor" width="360" />
5
+ </picture>
3
6
  <h1>@lyfie/luthor</h1>
4
7
  <p><strong>Plug-and-play rich text editor presets for React, powered by Luthor Headless + Lexical.</strong></p>
5
8
  </div>
@@ -1,5 +1,5 @@
1
1
  import * as react from 'react';
2
- import { E as ExtensiveEditorProps, F as FeatureFlagOverrides, a as ExtensiveEditorRef, T as ToolbarLayout } from './index-BFix2QsP.js';
2
+ import { E as ExtensiveEditorProps, F as FeatureFlagOverrides, a as ExtensiveEditorRef, T as ToolbarLayout } from './index-DIFqz4Pg.js';
3
3
 
4
4
  declare const LEGACY_RICH_MARKDOWN_MODES: readonly ["visual", "json", "markdown"];
5
5
  declare const LEGACY_RICH_HTML_MODES: readonly ["visual", "json", "html"];
@@ -1 +1 @@
1
- import {ha,sa,Ea,ja}from'./chunk-NM2K6UES.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"],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};
1
+ import {ha,sa,Ea,ja}from'./chunk-WWWLNSEV.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"],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};
@@ -1 +1 @@
1
- import {a,b as b$1}from'./chunk-XZATJCFW.js';import {ha,sa,Ea}from'./chunk-NM2K6UES.js';import {jsx}from'react/jsx-runtime';var b=["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(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 r({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:r},toolbar:[...t],config:ha("slash-editor","Type '/' for commands..."),css:"slash-editor/styles.css"};export{r as a,T as b};
1
+ import {a,b as b$1}from'./chunk-KMBYB4ZH.js';import {ha,sa,Ea}from'./chunk-WWWLNSEV.js';import {jsx}from'react/jsx-runtime';var b=["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(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 r({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:r},toolbar:[...t],config:ha("slash-editor","Type '/' for commands..."),css:"slash-editor/styles.css"};export{r as a,T as b};
@@ -0,0 +1,13 @@
1
+ import {a,b}from'./chunk-KMBYB4ZH.js';import {sa,ha,ka,ja,ia,fa,ga}from'./chunk-WWWLNSEV.js';import {forwardRef,useState,useMemo,useRef,useEffect,useImperativeHandle,useCallback}from'react';import {createEditorSystem,markdownToJSON,jsonToHTML,jsonToMarkdown,RichText,htmlToJSON}from'@lyfie/luthor-headless';import {jsx,jsxs}from'react/jsx-runtime';var{Provider:ue,useEditor:ce}=createEditorSystem(),X=["visual","json","markdown","html"],he={visual:"Visual",json:"JSON",markdown:"MD",html:"HTML"},me={json:"Invalid JSON",markdown:"Invalid Markdown",html:"Invalid HTML"},Q="Start writing...",q="Enter JSON document content...",G="Enter Markdown content...",K="Enter HTML content...",be=`## Hi there,
2
+
3
+ this is a *basic* example of **Luthor Headless**. It covers simple text styles and lists:
4
+
5
+ - That's a bullet list with one item.
6
+ - ... and one more item.
7
+
8
+ Try a code block next:
9
+
10
+ \`\`\`
11
+ console.log("hello from luthor");
12
+ \`\`\`
13
+ `,pe=markdownToJSON(be),y={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:""}]}]}},J={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},Ee={draggableBlock:false,themeToggle:false,table:false,image:false,iframeEmbed:false,youTubeEmbed:false,customNode:false,slashCommand:false,commandPalette:false,contextMenu:false,floatingToolbar:false},ge=new a(J,Ee);function x(a){return a instanceof Error&&a.message.trim()?a.message.trim():"Unable to process the current source content."}function Z(a){return a&&typeof a=="object"?a:y}function ee(a){let l=a.trim();return l?JSON.parse(l):y}function fe(a,l){switch(a){case "json":return ee(l);case "markdown":return markdownToJSON(l);case "html":return htmlToJSON(l)}}function c(a,l){let d=Z(l);switch(a){case "json":return ia(JSON.stringify(d));case "markdown":return ja(jsonToMarkdown(d));case "html":return ka(jsonToHTML(d))}}function ve(a){return typeof a=="string"||typeof a>"u"?{visual:a??Q,json:q,markdown:G,html:K}:{visual:a.visual??Q,json:a.json??q,markdown:a.markdown??G,html:a.html??K}}function Se({initialMode:a,placeholders:l,onReady:d}){let{activeStates:O,commands:e,export:h,import:b}=ce(),[n,S]=useState(a),[E,p]=useState({json:"",markdown:"",html:""}),[H,m]=useState(null),v=useRef(false),t=O,g=useCallback(()=>{let s=Z(h.toJSON()),i={json:c("json",s),markdown:c("markdown",s),html:c("html",s)};return p(i),i},[h]),L=useCallback((s,i)=>{let u=fe(s,i);return b.fromJSON(u),u},[b]),T=useMemo(()=>({injectJSON:s=>{try{let i=ee(s);b.fromJSON(i),m(null),g();}catch(i){m({mode:"json",error:x(i)});}},getJSON:()=>c("json",h.toJSON()),getMarkdown:()=>c("markdown",h.toJSON()),getHTML:()=>c("html",h.toJSON())}),[h,b,g]);useEffect(()=>{!d||v.current||(v.current=true,d(T));},[T,d]);let M=useCallback(s=>{if(s!==n){if(n==="visual"){if(s!=="visual")try{g(),m(null);}catch(i){m({mode:s,error:x(i)});return}S(s);return}try{let i=E[n],u=L(n,i);if(s==="visual"){m(null),S("visual");return}let te=c(s,u);p(oe=>({...oe,[s]:te})),m(null),S(s);}catch(i){m({mode:n,error:x(i)});}}},[n,L,E,g]),C=useCallback(()=>{n==="visual"&&(t.bold&&e.toggleBold?.(),t.italic&&e.toggleItalic?.(),t.strikethrough&&e.toggleStrikethrough?.(),t.code&&e.formatText?.("code"),e.removeLink?.());},[e,n,t.bold,t.code,t.italic,t.strikethrough]),D=useCallback(()=>{n==="visual"&&(t.unorderedList&&e.toggleUnorderedList?.(),t.orderedList&&e.toggleOrderedList?.(),t.isQuote&&e.toggleQuote?.(),t.isInCodeBlock&&e.toggleCodeBlock?.(),e.toggleParagraph?.());},[e,n,t.isInCodeBlock,t.isQuote,t.orderedList,t.unorderedList]),w=useCallback(()=>{n==="visual"&&e.insertHardBreak?.();},[e,n]),r=n==="visual";return jsxs("div",{className:"luthor-editor","data-mode":n,children:[jsx("div",{className:"luthor-editor-header",children:jsx(fa,{mode:n,onModeChange:s=>M(s),availableModes:X,labels:he})}),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:!r,children:"Bold"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.italic?" is-active":""}`,onClick:()=>e.toggleItalic?.(),disabled:!r,children:"Italic"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.strikethrough?" is-active":""}`,onClick:()=>e.toggleStrikethrough?.(),disabled:!r,children:"Strike"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.code?" is-active":""}`,onClick:()=>e.formatText?.("code"),disabled:!r,children:"Code"}),jsx("button",{type:"button",className:"luthor-preset-headless-editor__button",onClick:C,disabled:!r,children:"Clear marks"}),jsx("button",{type:"button",className:"luthor-preset-headless-editor__button",onClick:D,disabled:!r,children:"Clear nodes"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isParagraph?" is-active":""}`,onClick:()=>e.toggleParagraph?.(),disabled:!r,children:"Paragraph"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isH1?" is-active":""}`,onClick:()=>e.toggleHeading?.("h1"),disabled:!r,children:"H1"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isH2?" is-active":""}`,onClick:()=>e.toggleHeading?.("h2"),disabled:!r,children:"H2"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isH3?" is-active":""}`,onClick:()=>e.toggleHeading?.("h3"),disabled:!r,children:"H3"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isH4?" is-active":""}`,onClick:()=>e.toggleHeading?.("h4"),disabled:!r,children:"H4"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isH5?" is-active":""}`,onClick:()=>e.toggleHeading?.("h5"),disabled:!r,children:"H5"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isH6?" is-active":""}`,onClick:()=>e.toggleHeading?.("h6"),disabled:!r,children:"H6"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.unorderedList?" is-active":""}`,onClick:()=>e.toggleUnorderedList?.(),disabled:!r,children:"Bullet list"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.orderedList?" is-active":""}`,onClick:()=>e.toggleOrderedList?.(),disabled:!r,children:"Ordered list"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isInCodeBlock?" is-active":""}`,onClick:()=>e.toggleCodeBlock?.(),disabled:!r,children:"Code block"}),jsx("button",{type:"button",className:`luthor-preset-headless-editor__button${t.isQuote?" is-active":""}`,onClick:()=>e.toggleQuote?.(),disabled:!r,children:"Blockquote"}),jsx("button",{type:"button",className:"luthor-preset-headless-editor__button",onClick:()=>e.insertHorizontalRule?.(),disabled:!r,children:"Horizontal rule"}),jsx("button",{type:"button",className:"luthor-preset-headless-editor__button",onClick:w,disabled:!r,children:"Hard break"}),jsx("button",{type:"button",className:"luthor-preset-headless-editor__button",onClick:()=>e.undo?.(),disabled:!r||!t.canUndo,children:"Undo"}),jsx("button",{type:"button",className:"luthor-preset-headless-editor__button",onClick:()=>e.redo?.(),disabled:!r||!t.canRedo,children:"Redo"})]}),jsx("div",{className:`luthor-preset-headless-editor__visual-shell${r?"":" is-hidden"}`,"aria-hidden":!r,children:jsx(RichText,{placeholder:l.visual,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"}})}),!r&&jsxs("div",{className:"luthor-source-panel",children:[H&&H.mode===n&&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:me[n]}),jsx("p",{children:H.error}),jsx("small",{children:"Fix the source input and try again."})]})]}),n==="json"&&jsx(ga,{value:E.json,onChange:s=>{p(i=>({...i,json:s}));},placeholder:l.json}),n==="markdown"&&jsx(ga,{value:E.markdown,onChange:s=>{p(i=>({...i,markdown:s}));},placeholder:l.markdown,className:"luthor-source-view--wrapped",wrap:"soft"}),n==="html"&&jsx(ga,{value:E.html,onChange:s=>{p(i=>({...i,html:s}));},placeholder:l.html,className:"luthor-source-view--wrapped",wrap:"soft"})]})]})}var A=forwardRef(({className:a,variantClassName:l,initialTheme:d="light",onThemeChange:O,placeholder:e,onReady:h,defaultContent:b$1,showDefaultContent:n=true,initialMode:S="visual",defaultEditorView:E,featureFlags:p,...H},m)=>{let[v,t]=useState(d),g=E??S,L=X.includes(g)?g:"visual",T=useMemo(()=>ve(e),[e]),M=useMemo(()=>ge.resolve(p),[p]),C=useMemo(()=>JSON.stringify(M),[M]),D=useMemo(()=>{let u=JSON.parse(C);return sa({featureFlags:u})},[C]),[w,r]=useState(null),s=useRef(false);useEffect(()=>{t(d);},[d]),useEffect(()=>{O?.(v);},[v,O]),useImperativeHandle(m,()=>w??{injectJSON:()=>{},getJSON:()=>c("json",y),getMarkdown:()=>c("markdown",y),getHTML:()=>c("html",y)},[w]);let i=useCallback(u=>{r(u),s.current||(b$1?u.injectJSON(b$1):n&&u.injectJSON(c("json",pe)),s.current=true),h?.(u);},[b$1,h,n]);return jsx("div",{className:b("luthor-preset","luthor-preset-headless-editor","luthor-editor-wrapper","luthor-preset-headless-editor__variant",l,a),"data-editor-theme":v,children:jsx(ue,{extensions:D,children:jsx(Se,{initialMode:L,placeholders:T,onReady:i})})})});A.displayName="HeadlessEditorPreset";var He={id:"headless-editor",label:"Headless Editor",description:"Headless-style rich editor with text toolbar pills and source tabs.",extensions:sa({featureFlags:J}),components:{Editor:A},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{A as a,He as b};
@@ -1 +1 @@
1
- import {a}from'./chunk-NM2K6UES.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};
1
+ import {a}from'./chunk-WWWLNSEV.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};
@@ -1 +1 @@
1
- import {a,b as b$1}from'./chunk-XZATJCFW.js';import {Ea,ha,sa}from'./chunk-NM2K6UES.js';import {forwardRef}from'react';import {jsx}from'react/jsx-runtime';var n=["visual","json","markdown"],E=["visual","json","html"],m=["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: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},b={draggableBlock:false,table:false,image:false,iframeEmbed:false,youTubeEmbed:false,customNode:false,emoji:false,commandPalette:false,slashCommand:false,themeToggle:false},M=new a(o,b),u={sections:[{items:["undo","redo"]},{items:["blockFormat","quote"]},{items:["bold","italic","strikethrough","code","link"]},{items:["unorderedList","orderedList","checkList","indentList","outdentList"]},{items:["codeBlock","horizontalRule"]}]};function O(e){return e==="both"?m:e==="html"?E:n}var r=forwardRef(({className:e,variantClassName:f,toolbarClassName:L,toolbarLayout:_,sourceFormat:h="both",initialMode:R="visual",defaultEditorView:g,featureFlags:y,...p},C)=>{let a=O(h),i=g??R,F=a.includes(i)?i:"visual";return jsx(Ea,{ref:C,...p,className:b$1("luthor-preset-legacy-rich",e),variantClassName:b$1("luthor-preset-legacy-rich__variant",f),toolbarClassName:b$1("luthor-preset-legacy-rich__toolbar",L),availableModes:a,initialMode:F,toolbarLayout:_??u,featureFlags:M.resolve(y)})});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","bold","italic","strikethrough","code","link","unorderedList","orderedList","checkList","indentList","outdentList","codeBlock","horizontalRule"],config:ha("legacy-rich","Write metadata-free content...")};export{n as a,E as b,m as c,o as d,u as e,r as f,x as g};
1
+ import {a,b as b$1}from'./chunk-KMBYB4ZH.js';import {Ea,ha,sa}from'./chunk-WWWLNSEV.js';import {forwardRef}from'react';import {jsx}from'react/jsx-runtime';var n=["visual","json","markdown"],E=["visual","json","html"],m=["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: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},b={draggableBlock:false,table:false,image:false,iframeEmbed:false,youTubeEmbed:false,customNode:false,emoji:false,commandPalette:false,slashCommand:false,themeToggle:false},M=new a(o,b),u={sections:[{items:["undo","redo"]},{items:["blockFormat","quote"]},{items:["bold","italic","strikethrough","code","link"]},{items:["unorderedList","orderedList","checkList","indentList","outdentList"]},{items:["codeBlock","horizontalRule"]}]};function O(e){return e==="both"?m:e==="html"?E:n}var r=forwardRef(({className:e,variantClassName:f,toolbarClassName:L,toolbarLayout:_,sourceFormat:h="both",initialMode:R="visual",defaultEditorView:g,featureFlags:y,...p},C)=>{let a=O(h),i=g??R,F=a.includes(i)?i:"visual";return jsx(Ea,{ref:C,...p,className:b$1("luthor-preset-legacy-rich",e),variantClassName:b$1("luthor-preset-legacy-rich__variant",f),toolbarClassName:b$1("luthor-preset-legacy-rich__toolbar",L),availableModes:a,initialMode:F,toolbarLayout:_??u,featureFlags:M.resolve(y)})});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","bold","italic","strikethrough","code","link","unorderedList","orderedList","checkList","indentList","outdentList","codeBlock","horizontalRule"],config:ha("legacy-rich","Write metadata-free content...")};export{n as a,E as b,m as c,o as d,u as e,r as f,x as g};
@@ -1 +1 @@
1
- import {f as f$1,e,d}from'./chunk-OYT6CNV2.js';import {b}from'./chunk-XZATJCFW.js';import {ha,sa}from'./chunk-NM2K6UES.js';import {forwardRef}from'react';import {jsx}from'react/jsx-runtime';var E=d,_=e,t=forwardRef(({className:a,variantClassName:l,toolbarClassName:m,toolbarLayout:L,initialMode:c="visual",defaultEditorView:p,...n},T)=>jsx(f$1,{ref:T,...n,className:b("luthor-preset-html-editor",a),variantClassName:b("luthor-preset-html-editor__variant",l),toolbarClassName:b("luthor-preset-html-editor__toolbar",m),sourceFormat:"html",initialMode:c,defaultEditorView:p,toolbarLayout:L??_}));t.displayName="HTMLEditor";var f={id:"html-editor",label:"HTML Editor",description:"HTML-focused preset with visual, JSON, and HTML source views.",extensions:sa({featureFlags:E}),components:{Editor:t},toolbar:["undo","redo","blockFormat","quote","bold","italic","strikethrough","code","codeBlock","link","unorderedList","orderedList","checkList","horizontalRule"],config:ha("html-editor","Write HTML-compatible content..."),css:"html-editor/styles.css"};export{t as a,f as b};
1
+ import {f as f$1,e,d}from'./chunk-OP2P26RL.js';import {b}from'./chunk-KMBYB4ZH.js';import {ha,sa}from'./chunk-WWWLNSEV.js';import {forwardRef}from'react';import {jsx}from'react/jsx-runtime';var E=d,_=e,t=forwardRef(({className:a,variantClassName:l,toolbarClassName:m,toolbarLayout:L,initialMode:c="visual",defaultEditorView:p,...n},T)=>jsx(f$1,{ref:T,...n,className:b("luthor-preset-html-editor",a),variantClassName:b("luthor-preset-html-editor__variant",l),toolbarClassName:b("luthor-preset-html-editor__toolbar",m),sourceFormat:"html",initialMode:c,defaultEditorView:p,toolbarLayout:L??_}));t.displayName="HTMLEditor";var f={id:"html-editor",label:"HTML Editor",description:"HTML-focused preset with visual, JSON, and HTML source views.",extensions:sa({featureFlags:E}),components:{Editor:t},toolbar:["undo","redo","blockFormat","quote","bold","italic","strikethrough","code","codeBlock","link","unorderedList","orderedList","checkList","horizontalRule"],config:ha("html-editor","Write HTML-compatible content..."),css:"html-editor/styles.css"};export{t as a,f as b};
@@ -0,0 +1,6 @@
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,clearLexicalSelection,markdownToJSON,htmlToJSON,resolveLinkNodeKeyFromAnchor}from'@lyfie/luthor-headless';import Ki,{forwardRef,useState,useRef,useMemo,useEffect,useImperativeHandle,createElement,useLayoutEffect,useCallback}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {createPortal}from'react-dom';var zr=Object.defineProperty;var Br=(e,t,o)=>t in e?zr(e,t,{enumerable:true,configurable:true,writable:true,value:o}):e[t]=o;var ts=(e,t,o)=>Br(e,typeof t!="symbol"?t+"":t,o);var Ve=["h1","h2","h3","h4","h5","h6"],ns={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"]}]},Zt={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 Dr(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 Ur(e,t){return Dr(e.target)?on(t):false}function on(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 Kr(e){return typeof e.toggleSubscript=="function"}function Vr(e){return typeof e.toggleSuperscript=="function"}function _r(e){return typeof e.insertIframeEmbed=="function"}function jr(e){return typeof e.insertYouTubeEmbed=="function"}function qr(e){return typeof e.insertEmoji=="function"}function $r(e){return e.slice(1)}function Yr(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 Jr(e){if(!e||e.length===0)return [...Ve];let t=new Set,o=[];for(let n of e)!Ve.includes(n)||t.has(n)||(t.add(n),o.push(n));return o.length>0?o:[...Ve]}function So(e,t){return Qr(xo(t),t?.shortcutConfig).filter(n=>!n.condition||n.condition(e))}function te(e,t){return typeof e[t]=="function"}function eo(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 Gr(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:eo(o),denylist:new Set}}let t=e;return {allowlist:eo(t.allowlist),denylist:eo(t.denylist)}}function nn(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 Xr(e){if(e===false||e===null)return [];let t=Array.isArray(e)?e:[e],o=[];for(let n of t){let i=nn(n);i&&o.push(i);}return o}function Wr(e){return [e.key.toLowerCase(),e.ctrlKey?"ctrl":"",e.metaKey?"meta":"",e.shiftKey?"shift":"",e.altKey?"alt":""].join(":")}function Qr(e,t){if(!t)return [...e];let o=eo(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 m=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?[]:Xr(v);m=y.length>0?y:void 0;}if(m&&m.length>0){let v=[];for(let y of m){let h=nn(y);if(!h||i&&on(h))continue;let f=Wr(h);r&&l.has(f)||(l.add(f),v.push(h));}m=v.length>0?v:void 0;}return {...u,shortcuts:m}})}function xo(e){let t=e?.isFeatureEnabled??(()=>true),o=Jr(e?.headingOptions),n=e?.paragraphLabel?.trim()||"Paragraph",i=o.map(r=>{let l=$r(r);return {id:`block.heading${l}`,label:`Heading ${l}`,description:Yr(r),category:"Block",action:a=>a.toggleHeading?.(r),shortcuts:[{key:l,ctrlKey:true,altKey:true}],keywords:["heading",r],condition:a=>t("blockFormat")&&te(a,"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")&&te(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")&&te(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")&&te(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")&&te(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")&&Kr(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")&&Vr(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")&&te(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")&&te(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")&&te(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")&&te(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")&&te(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")&&te(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")&&te(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")&&te(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")&&te(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")&&te(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")&&te(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")&&te(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")&&te(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")&&te(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 a=prompt("Enter alt text:")||"";r.insertImage?.({src:l,alt:a});}},keywords:["image","photo"],condition:r=>t("image")&&te(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")&&te(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 a=l.match(/^:([a-z0-9_+-]+):$/i);if(a){let u=a[1];if(!u)return;if(typeof r.resolveEmojiShortcode=="function"){let m=r.resolveEmojiShortcode(u);if(m?.emoji){r.insertEmoji(m.emoji);return}}else if(typeof r.getEmojiSuggestions=="function"){let[m]=r.getEmojiSuggestions(u);if(m?.emoji){r.insertEmoji(m.emoji);return}}}r.insertEmoji(l);},keywords:["emoji","reaction","symbol","smile"],condition:r=>t("emoji")&&qr(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")&&te(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")&&_r(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")&&jr(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")&&te(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")&&te(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")&&te(r,"showCommandPalette")}]}function rn(e,t){let o=t?.commandPaletteShortcutOnly===true;return So(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]?an(n.shortcuts[0]):void 0}))}function ln(e,t){let o=new Set(["block.paragraph","block.quote","block.codeblock"]),n=a=>a.category==="Insert"||a.category==="List"?true:a.category==="Block"?a.id.startsWith("block.heading")?true:o.has(a.id):false,{allowlist:i,denylist:r}=Gr(t?.slashCommandVisibility),l=i.size>0;return So(e,t).filter(a=>r.has(a.id)?false:l?i.has(a.id):n(a)).map(a=>({id:a.id,label:a.label,description:a.description,category:a.category,action:()=>a.action(e),keywords:a.keywords,shortcut:a.shortcuts?.[0]?an(a.shortcuts[0]):void 0}))}function an(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 sn(e,t=document.body,o){let n=So(e,o),i=(l,a)=>l.key.toLowerCase()===a.key.toLowerCase()||a.key==="`"&&l.code==="Backquote",r=l=>{let a=typeof o?.scope=="function"?o.scope():o?.scope;if(!(a&&l.target instanceof Node&&!a.contains(l.target))){for(let u of n)if(u.shortcuts){for(let m of u.shortcuts)if(!(o?.shortcutConfig?.preventNativeConflicts!==false&&Ur(l,m))&&i(l,m)&&!!l.ctrlKey==!!m.ctrlKey&&!!l.metaKey==!!m.metaKey&&!!l.shiftKey==!!m.shiftKey&&!!l.altKey==!!m.altKey){m.preventDefault!==false&&l.preventDefault(),(!u.condition||u.condition(e))&&u.action(e);return}}}};return t.addEventListener("keydown",r),()=>t.removeEventListener("keydown",r)}function R(e,t){let o=forwardRef(function({size:i=24,strokeWidth:r=2,...l},a){return jsx("svg",{ref:a,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 to=R("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"})),oo=R("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"})]})),no=R("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"})]})),ro=R("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"})]})),io=R("CodeIcon",jsxs(Fragment,{children:[jsx("path",{d:"m16 18 6-6-6-6"}),jsx("path",{d:"m8 6-6 6 6 6"})]})),un=R("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"})]})),Ft=R("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"})]})),pt=R("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"})]})),lo=R("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"})]})),ao=R("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"})]})),so=R("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"})]})),cn=R("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"})]})),dn=R("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"})]})),Io=R("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"})]})),Mt=R("AlignLeftIcon",jsxs(Fragment,{children:[jsx("path",{d:"M21 5H3"}),jsx("path",{d:"M15 12H3"}),jsx("path",{d:"M17 19H3"})]})),bt=R("AlignCenterIcon",jsxs(Fragment,{children:[jsx("path",{d:"M21 5H3"}),jsx("path",{d:"M17 12H7"}),jsx("path",{d:"M19 19H5"})]})),mn=R("AlignJustifyIcon",jsxs(Fragment,{children:[jsx("path",{d:"M3 5h18"}),jsx("path",{d:"M3 12h18"}),jsx("path",{d:"M3 19h18"})]})),Ot=R("AlignRightIcon",jsxs(Fragment,{children:[jsx("path",{d:"M21 5H3"}),jsx("path",{d:"M21 12H9"}),jsx("path",{d:"M21 19H7"})]})),Fo=R("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"})]})),gn=R("MinusIcon",jsx("path",{d:"M5 12h14"})),hn=R("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"})]})),fn=R("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"})]})),ss=R("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"})]})),pn=R("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"})]})),us=R("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"})]})),uo=R("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"})),bn=R("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"})]})),yn=R("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"})]})),co=R("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"})]})),vn=R("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"})]})),Cn=R("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"})]})),En=R("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"})]})),kn=R("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"})),wn=R("SearchIcon",jsxs(Fragment,{children:[jsx("path",{d:"m21 21-4.34-4.34"}),jsx("circle",{cx:"11",cy:"11",r:"8"})]})),Mo=R("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"})]})),Ln=R("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"})]})),Tn=R("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"})]})),Nt=R("ChevronDownIcon",jsx("path",{d:"m6 9 6 6 6-6"})),Sn=R("CloseIcon",jsxs(Fragment,{children:[jsx("path",{d:"M18 6 6 18"}),jsx("path",{d:"m6 6 12 12"})]}));function Fn({isOpen:e,onClose:t,commands:o}){let[n,i]=useState(""),[r,l]=useState(0),a=useRef(null),u=useRef(null),m=o.filter(y=>`${y.label} ${y.description||""} ${y.keywords?.join(" ")||""}`.toLowerCase().includes(n.toLowerCase())),k=m.reduce((y,h)=>{let f=h.category||"Other";return y[f]||(y[f]=[]),y[f].push(h),y},{}),v=m;return useEffect(()=>{l(0);},[n]),useEffect(()=>{e&&a.current&&(a.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=h=>{if(e)switch(h.key){case "Escape":h.preventDefault(),h.stopPropagation(),t();break;case "ArrowDown":h.preventDefault(),h.stopPropagation(),l(f=>Math.min(f+1,v.length-1));break;case "ArrowUp":h.preventDefault(),h.stopPropagation(),l(f=>Math.max(f-1,0));break;case "Enter":h.preventDefault(),h.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(wn,{size:16,className:"luthor-command-palette-icon"}),jsx("input",{ref:a,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(k).length===0?jsx("div",{className:"luthor-command-palette-empty",children:"No commands found"}):Object.entries(k).map(([y,h])=>jsxs("div",{className:"luthor-command-palette-group",children:[jsx("div",{className:"luthor-command-palette-group-title",children:y}),h.map(f=>{let d=v.indexOf(f);return jsxs("div",{className:`luthor-command-palette-item ${d===r?"selected":""}`,onClick:()=>{f.action(),t();},onMouseEnter:()=>l(d),children:[jsxs("div",{className:"luthor-command-palette-item-content",children:[jsx("div",{className:"luthor-command-palette-item-title",children:f.label}),f.description&&jsx("div",{className:"luthor-command-palette-item-description",children:f.description})]}),f.shortcut&&jsx("kbd",{className:"luthor-command-palette-item-shortcut",children:f.shortcut})]},f.id)})]},y))}),jsx("div",{className:"luthor-command-palette-footer",children:jsxs("span",{className:"luthor-command-palette-hint",children:[jsx(uo,{size:14}),jsx("span",{children:"Use arrow keys, Enter, ESC"})]})})]})}):null}var ei={"--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":"20","--luthor-z-popover":"24","--luthor-z-menu":"28","--luthor-z-overlay":"32","--luthor-z-modal":"36","--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 ti(e){return e?e.closest(".luthor-editor-wrapper"):null}function oi(e){return e?ti(e)??e:null}function ni(e){if(typeof window>"u"||!e)return {};let t=window.getComputedStyle(e),o={};for(let[n,i]of Object.entries(ei)){let r=t.getPropertyValue(n).trim()||i;o[n]=r;}return o}function _e(e){return ni(oi(e))}function Rt(){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 yt(e){return e?e.closest(".luthor-editor-wrapper")??null:null}function Mn(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}}let t=e.getBoundingClientRect();return {left:t.left,top:t.top,right:t.right,bottom:t.bottom}}function ii(e,t,o,n,i,r){let l=i==="end"?e.right-t:i==="center"?e.left+e.width/2-t/2:e.left,a=i==="end"?e.left:i==="center"?e.left+e.width/2-t/2:e.right-t,u=l,m=o.left+n,k=Math.max(m,o.right-t-n);if(r){let v=u<m||u>k,y=a>=m&&a<=k;v&&y&&(u=a);}return Mn(u,m,k)}function li(e,t,o,n,i,r,l){let a=r==="top"?e.top-t-n:e.bottom+n,u=r==="top"?e.bottom+n:e.top-t-n,m=a,k=o.top+i,v=Math.max(k,o.bottom-t-i);if(l){let y=m<k||m>v,h=u>=k&&u<=v;y&&h&&(m=u);}return Mn(m,k,v)}function ve({anchorRect:e,overlay:t,portalContainer:o=null,gap:n=4,margin:i=8,preferredX:r="start",preferredY:l="bottom",flipX:a=true,flipY:u=true}){let m=ri(o),k=Math.max(0,t.width),v=Math.max(0,t.height),y=ii(e,k,m,i,r,a),h=li(e,v,m,n,i,l,u);if(o){let f=o.getBoundingClientRect();return {position:"absolute",left:y-f.left,top:h-f.top}}return {position:"fixed",left:y,top:h}}function go(e,t){return {x:e,y:t,width:1,height:1,left:e,right:e+1,top:t,bottom:t+1,toJSON:()=>({})}}function Nn({isOpen:e,query:t,position:o,portalContainer:n,suggestions:i,onClose:r,onExecute:l}){let[a,u]=useState(0),m=useRef(null),[k,v]=useState(void 0);useEffect(()=>{u(0);},[t,e]),useEffect(()=>{if(!e)return;let f=d=>{let C=i.length>0;switch(d.key){case "Escape":d.preventDefault(),d.stopPropagation(),r();break;case "ArrowDown":if(!C)return;d.preventDefault(),d.stopPropagation(),u(S=>Math.min(S+1,Math.max(i.length-1,0)));break;case "ArrowUp":if(!C)return;d.preventDefault(),d.stopPropagation(),u(S=>Math.max(S-1,0));break;case "Enter":case "Tab":if(!C||!i[a])return;d.preventDefault(),d.stopPropagation(),l(i[a].emoji);break}};return document.addEventListener("keydown",f,true),()=>document.removeEventListener("keydown",f,true)},[e,r,l,a,i]);let y=useCallback(f=>{if(!o)return;let d=m.current?.getBoundingClientRect(),C=ve({anchorRect:go(o.x,o.y),overlay:{width:d?.width??320,height:d?.height??280},portalContainer:n??null,gap:6,margin:12,preferredX:"start",preferredY:"bottom",flipX:true,flipY:true});v({...C,visibility:f?"visible":"hidden",...Rt()});},[n,o]);if(useLayoutEffect(()=>{if(!e||!o)return;y(false);let f=window.requestAnimationFrame(()=>y(true));return ()=>window.cancelAnimationFrame(f)},[e,o,y]),useEffect(()=>{if(!e||!o)return;let f=()=>y(true);return window.addEventListener("resize",f),window.addEventListener("scroll",f,true),()=>{window.removeEventListener("resize",f),window.removeEventListener("scroll",f,true);}},[e,o,y]),!e||!o)return null;let h=jsxs("div",{className:"luthor-emoji-menu",ref:m,style:k,onPointerDown:f=>{f.stopPropagation();},onMouseDown:f=>{f.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((f,d)=>{let C=d===a,S=f.shortcodes[0]?`:${f.shortcodes[0]}:`:"";return jsxs("button",{type:"button",className:`luthor-emoji-menu-item ${C?"selected":""}`,onMouseEnter:()=>u(d),onMouseDown:x=>{x.preventDefault(),x.stopPropagation();},onClick:x=>{x.preventDefault(),x.stopPropagation(),l(f.emoji);},children:[jsx("span",{className:"luthor-emoji-menu-item-symbol","aria-hidden":"true",children:f.emoji}),jsxs("span",{className:"luthor-emoji-menu-item-content",children:[jsx("span",{className:"luthor-emoji-menu-item-title",children:f.label}),S&&jsx("span",{className:"luthor-emoji-menu-item-shortcode",children:S})]})]},`${f.emoji}-${f.label}`)})})]});return typeof document>"u"?h:createPortal(h,n??document.body)}function An({isOpen:e,query:t,position:o,portalContainer:n,commands:i,onClose:r,onExecute:l}){let[a,u]=useState(0),m=useRef(null),[k,v]=useState(void 0),y=useMemo(()=>{let C=t.trim().toLowerCase();return C?i.filter(S=>`${S.label} ${S.description||""} ${S.keywords?.join(" ")||""}`.toLowerCase().includes(C)):i},[i,t]),h=useMemo(()=>y.reduce((C,S)=>{let x=S.category||"Other";return C[x]||(C[x]=[]),C[x].push(S),C},{}),[y]);useEffect(()=>{u(0);},[t,e]),useEffect(()=>{if(!e)return;let C=S=>{let x=y.length>0;switch(S.key){case "Escape":S.preventDefault(),S.stopPropagation(),r();break;case "ArrowDown":if(!x)return;S.preventDefault(),S.stopPropagation(),u(G=>Math.min(G+1,Math.max(y.length-1,0)));break;case "ArrowUp":if(!x)return;S.preventDefault(),S.stopPropagation(),u(G=>Math.max(G-1,0));break;case "Enter":case "Tab":if(!x||!y[a])return;S.preventDefault(),S.stopPropagation(),l(y[a].id);break}};return document.addEventListener("keydown",C,true),()=>document.removeEventListener("keydown",C,true)},[y,e,r,l,a]);let f=useCallback(C=>{if(!o)return;let S=m.current?.getBoundingClientRect(),x=ve({anchorRect:go(o.x,o.y),overlay:{width:S?.width??420,height:S?.height??360},portalContainer:n??null,gap:6,margin:12,preferredX:"start",preferredY:"bottom",flipX:true,flipY:true});v({...x,visibility:C?"visible":"hidden",...Rt()});},[n,o]);if(useLayoutEffect(()=>{if(!e||!o)return;f(false);let C=window.requestAnimationFrame(()=>f(true));return ()=>window.cancelAnimationFrame(C)},[e,o,f]),useEffect(()=>{if(!e||!o)return;let C=()=>f(true);return window.addEventListener("resize",C),window.addEventListener("scroll",C,true),()=>{window.removeEventListener("resize",C),window.removeEventListener("scroll",C,true);}},[e,o,f]),!e||!o)return null;let d=jsxs("div",{className:"luthor-slash-menu",ref:m,style:k,onPointerDown:C=>{C.stopPropagation();},onMouseDown:C=>{C.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(h).map(([C,S])=>jsxs("div",{className:"luthor-slash-menu-group",children:[jsx("div",{className:"luthor-slash-menu-group-title",children:C}),S.map(x=>{let G=y.indexOf(x);return jsxs("button",{type:"button",className:`luthor-slash-menu-item ${G===a?"selected":""}`,onMouseEnter:()=>u(G),onMouseDown:A=>{A.preventDefault(),A.stopPropagation();},onClick:A=>{A.preventDefault(),A.stopPropagation(),l(x.id);},children:[jsxs("span",{className:"luthor-slash-menu-item-content",children:[jsx("span",{className:"luthor-slash-menu-item-title",children:x.label}),x.description&&jsx("span",{className:"luthor-slash-menu-item-description",children:x.description})]}),x.shortcut&&jsx("kbd",{className:"luthor-slash-menu-item-shortcut",children:x.shortcut})]},x.id)})]},C))})]});return typeof document>"u"?d:createPortal(d,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 Ho({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 jt({value:e,onValueChange:t,options:o,placeholder:n="Select..."}){let[i,r]=useState(false),[l,a]=useState(void 0),[u,m]=useState(null),k=useRef(null),v=useRef(null);useEffect(()=>{if(!i)return;let h=()=>{let d=k.current?.querySelector(".luthor-select-trigger");if(!d)return;let C=d.getBoundingClientRect(),S=v.current?.getBoundingClientRect(),x=yt(d);m(x);let G=Math.max(C.width,S?.width??0),Y=S?.height??220,A=ve({anchorRect:C,overlay:{width:G,height:Y},portalContainer:x,gap:4,margin:8,preferredX:"start",preferredY:"bottom",flipX:true,flipY:true});a({...A,width:C.width,..._e(d)});},f=()=>h();return window.addEventListener("resize",f),window.addEventListener("scroll",f,true),()=>{window.removeEventListener("resize",f),window.removeEventListener("scroll",f,true),m(null);}},[i]),useLayoutEffect(()=>{if(!i)return;let h=k.current?.querySelector(".luthor-select-trigger");if(!h)return;let f=h.getBoundingClientRect(),d=yt(h);m(d);let C=ve({anchorRect:f,overlay:{width:f.width,height:220},portalContainer:d,gap:4,margin:8});a({...C,width:f.width,..._e(h)});let S=window.requestAnimationFrame(()=>{let x=v.current?.getBoundingClientRect(),G=ve({anchorRect:f,overlay:{width:Math.max(f.width,x?.width??0),height:x?.height??220},portalContainer:d,gap:4,margin:8});a({...G,width:f.width,..._e(h)});});return ()=>window.cancelAnimationFrame(S)},[i]),useEffect(()=>{function h(f){let d=f.target;k.current?.contains(d)||v.current?.contains(d)||r(false);}return document.addEventListener("mousedown",h),()=>document.removeEventListener("mousedown",h)},[]);let y=o.find(h=>h.value===e);return jsxs("div",{className:"luthor-select",ref:k,children:[jsxs("button",{className:`luthor-select-trigger ${i?"open":""}`,onClick:()=>r(!i),type:"button",children:[jsx("span",{children:y?.label||n}),jsx(Nt,{size:14})]}),i&&typeof document<"u"&&createPortal(jsx("div",{ref:v,className:"luthor-select-dropdown",style:l,children:o.map(h=>jsx("button",{className:`luthor-select-option ${e===h.value?"selected":""}`,onClick:()=>{t(h.value),r(false);},type:"button",children:h.label},h.value))}),u??document.body)]})}function st({trigger:e,children:t,isOpen:o,onOpenChange:n}){let i=useRef(null),r=useRef(null),l=useRef(null),[a,u]=useState(void 0),[m,k]=useState(null);return useEffect(()=>{if(!o)return;let v=()=>{let h=r.current;if(!h)return;let f=h.getBoundingClientRect(),d=l.current?.getBoundingClientRect(),C=yt(h);k(C);let S=ve({anchorRect:f,overlay:{width:d?.width??220,height:d?.height??200},portalContainer:C,gap:4,margin:8,preferredX:"start",preferredY:"bottom",flipX:true,flipY:true});u({...S,..._e(h)});},y=()=>v();return window.addEventListener("resize",y),window.addEventListener("scroll",y,true),()=>{window.removeEventListener("resize",y),window.removeEventListener("scroll",y,true),k(null);}},[o]),useLayoutEffect(()=>{if(!o)return;let v=r.current;if(!v)return;let y=v.getBoundingClientRect(),h=yt(v);k(h);let f=ve({anchorRect:y,overlay:{width:220,height:200},portalContainer:h,gap:4,margin:8});u({...f,..._e(v)});let d=window.requestAnimationFrame(()=>{let C=l.current?.getBoundingClientRect(),S=ve({anchorRect:y,overlay:{width:C?.width??220,height:C?.height??200},portalContainer:h,gap:4,margin:8});u({...S,..._e(v)});});return ()=>window.cancelAnimationFrame(d)},[o]),useEffect(()=>{function v(y){let h=y.target;i.current?.contains(h)||l.current?.contains(h)||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:a,children:t}),m??document.body)]})}function Bn({isOpen:e,onClose:t,title:o,children:n}){let i=useRef(null);return useEffect(()=>{function r(a){i.current&&!i.current.contains(a.target)&&t();}function l(a){a.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(Sn,{size:16})})]}),jsx("div",{className:"luthor-dialog-content",children:n})]})}):null}function Dn({isVisible:e,selectionRect:t,commands:o,activeStates:n,editorTheme:i="light",hide:r,isFeatureEnabled:l=()=>true}){let a=useRef(null),[u,m]=useState(""),[k,v]=useState(""),[y,h]=useState(""),[f,d]=useState(""),[C,S]=useState(""),[x,G]=useState(""),[Y,A]=useState(null),[ue,re]=useState(null),[L,ae]=useState(null),w=!!n.isIframeEmbedSelected,X=!!n.isYouTubeEmbedSelected,I=l("iframeEmbed"),O=l("youTubeEmbed"),H=l("image"),Z=I&&w||O&&X;if(useEffect(()=>{if(!e)return;let P=V=>{let ce=V.target;ce&&(a.current?.contains(ce)||r?.());};return document.addEventListener("mousedown",P,true),document.addEventListener("touchstart",P,true),()=>{document.removeEventListener("mousedown",P,true),document.removeEventListener("touchstart",P,true);}},[e,r]),useEffect(()=>{if(!e||!w)return;let P=false;return typeof o.getIframeEmbedCaption=="function"&&o.getIframeEmbedCaption().then(V=>{P||v(V??"");}),typeof o.getIframeEmbedUrl=="function"&&o.getIframeEmbedUrl().then(V=>{P||m(V??"");}),A(null),()=>{P=true;}},[o,w,e]),useEffect(()=>{if(!e||!n.imageSelected)return;let P=false;return typeof o.getImageCaption=="function"&&o.getImageCaption().then(V=>{P||h(V??"");}),()=>{P=true;}},[n.imageSelected,o,e]),useEffect(()=>{if(!e||!X)return;let P=false;return typeof o.getYouTubeEmbedCaption=="function"&&o.getYouTubeEmbedCaption().then(V=>{P||d(V??"");}),typeof o.getYouTubeEmbedUrl=="function"&&o.getYouTubeEmbedUrl().then(V=>{P||S(V??"");}),re(null),()=>{P=true;}},[o,e,X]),useEffect(()=>{if(!e||!n.isLink)return;let P=false;return typeof o.getCurrentLink=="function"&&o.getCurrentLink().then(V=>{!P&&V&&G(V.url??"");}),ae(null),()=>{P=true;}},[n.isLink,o,e]),!e||!t)return null;let ie={...Rt(),position:"absolute",top:t.y,left:t.positionFromRight?"auto":t.x,right:t.positionFromRight?10:"auto",zIndex:"var(--luthor-z-menu, 460)",pointerEvents:"auto"};if(Z){let P=Q=>{if(w){o.setIframeEmbedAlignment?.(Q);return}X&&o.setYouTubeEmbedAlignment?.(Q);},V=w?n.isIframeEmbedAlignedLeft:n.isYouTubeEmbedAlignedLeft,ce=w?n.isIframeEmbedAlignedCenter:n.isYouTubeEmbedAlignedCenter,Me=w?n.isIframeEmbedAlignedRight:n.isYouTubeEmbedAlignedRight,qe=w?typeof o.setIframeEmbedCaption=="function":typeof o.setYouTubeEmbedCaption=="function",ee=w?typeof o.updateIframeEmbedUrl=="function":typeof o.updateYouTubeEmbedUrl=="function",Ye=w?k:f,we=w?v:d,mt=w?u:C,Be=w?Y:ue,De=()=>{if(qe){if(w){o.setIframeEmbedCaption?.(k);return}o.setYouTubeEmbedCaption?.(f);}},Je=Q=>{w?A(Q):re(Q);},Ue=Q=>{w?m(Q):S(Q);},Le=()=>{if(!ee)return;if(!(w?o.updateIframeEmbedUrl?.(u)??false:o.updateYouTubeEmbedUrl?.(C)??false)){Je(w?"Enter a valid http(s) URL":"Enter a valid YouTube URL"),w&&typeof o.getIframeEmbedUrl=="function"?o.getIframeEmbedUrl().then(be=>m(be??"")):!w&&typeof o.getYouTubeEmbedUrl=="function"&&o.getYouTubeEmbedUrl().then(be=>S(be??""));return}Je(null);};return jsxs("div",{className:"luthor-floating-toolbar","data-theme":i,ref:a,style:ie,children:[jsx(N,{onClick:()=>P("left"),active:V,title:"Align Left",children:jsx(Mt,{size:14})}),jsx(N,{onClick:()=>P("center"),active:ce,title:"Align Center",children:jsx(bt,{size:14})}),jsx(N,{onClick:()=>P("right"),active:Me,title:"Align Right",children:jsx(Ot,{size:14})}),qe||ee?jsxs(Fragment,{children:[jsx("div",{className:"luthor-floating-toolbar-separator"}),jsxs("div",{className:"luthor-floating-toolbar-fields",children:[ee?jsxs("div",{className:"luthor-floating-toolbar-field-row",children:[jsx("input",{type:"url",value:mt,className:`luthor-floating-toolbar-input${Be?" is-error":""}`,placeholder:w?"https://example.com/embed":"https://youtube.com/watch?v=...","aria-label":w?"Iframe URL":"YouTube URL","aria-invalid":Be?true:void 0,onChange:Q=>{Ue(Q.target.value),Be&&Je(null);},onBlur:Le,onKeyDown:Q=>{Q.key==="Enter"&&(Q.preventDefault(),Le());}}),jsx("button",{type:"button",className:"luthor-toolbar-button luthor-floating-toolbar-action luthor-floating-toolbar-action-primary",onClick:Le,children:"Update URL"})]}):null,qe?jsxs("div",{className:"luthor-floating-toolbar-field-row",children:[jsx("input",{type:"text",value:Ye,className:"luthor-floating-toolbar-input",placeholder:"Add caption","aria-label":w?"Iframe caption":"YouTube caption",onChange:Q=>we(Q.target.value),onBlur:De,onKeyDown:Q=>{Q.key==="Enter"&&(Q.preventDefault(),De());}}),jsx("button",{type:"button",className:"luthor-toolbar-button luthor-floating-toolbar-action",onClick:De,children:"Update Caption"})]}):null]})]}):null]})}if(H&&n.imageSelected){let P=typeof o.setImageCaption=="function",V=()=>{P&&o.setImageCaption(y);};return jsxs("div",{className:"luthor-floating-toolbar","data-theme":i,ref:a,style:ie,children:[jsx(N,{onClick:()=>o.setImageAlignment("left"),active:n.isImageAlignedLeft,title:"Align Left",children:jsx(Mt,{size:14})}),jsx(N,{onClick:()=>o.setImageAlignment("center"),active:n.isImageAlignedCenter,title:"Align Center",children:jsx(bt,{size:14})}),jsx(N,{onClick:()=>o.setImageAlignment("right"),active:n.isImageAlignedRight,title:"Align Right",children:jsx(Ot,{size:14})}),P?jsxs(Fragment,{children:[jsx("div",{className:"luthor-floating-toolbar-separator"}),jsxs("div",{className:"luthor-floating-toolbar-field-row",children:[jsx("input",{type:"text",value:y,className:"luthor-floating-toolbar-input",placeholder:"Add caption","aria-label":"Image caption",onChange:ce=>h(ce.target.value),onBlur:V,onKeyDown:ce=>{ce.key==="Enter"&&(ce.preventDefault(),V());}}),jsx("button",{type:"button",className:"luthor-toolbar-button luthor-floating-toolbar-action",onClick:V,children:"Update Caption"})]})]}):null]})}let M=l("bold"),fe=l("italic"),se=l("underline"),W=l("strikethrough"),xe=l("codeFormat"),he=!!(n.unorderedList||n.orderedList||n.checkList),ze=l("blockFormat")&&!he,Ee=l("link"),$e=l("list")&&!he,Ie=M||fe||se||W,pe=xe||ze||Ee,Fe=$e,ke=!!n.isLink&&typeof o.updateLink=="function"&&typeof o.removeLink=="function",je=()=>{if(!ke)return;if(!(o.updateLink?.(x)??false)){ae("Enter a valid URL"),typeof o.getCurrentLink=="function"&&o.getCurrentLink().then(V=>{G(V?.url??"");});return}ae(null);};return !Ie&&!pe&&!Fe?null:jsxs("div",{className:"luthor-floating-toolbar","data-theme":i,ref:a,style:ie,children:[Ie?jsxs(Fragment,{children:[M?jsx(N,{onClick:()=>o.toggleBold(),active:n.bold,title:"Bold",children:jsx(to,{size:14})}):null,fe?jsx(N,{onClick:()=>o.toggleItalic(),active:n.italic,title:"Italic",children:jsx(oo,{size:14})}):null,se?jsx(N,{onClick:()=>o.toggleUnderline(),active:n.underline,title:"Underline",children:jsx(no,{size:14})}):null,W?jsx(N,{onClick:()=>o.toggleStrikethrough(),active:n.strikethrough,title:"Strikethrough",children:jsx(ro,{size:14})}):null]}):null,Ie&&pe?jsx("div",{className:"luthor-floating-toolbar-separator"}):null,pe?jsxs(Fragment,{children:[xe?jsx(N,{onClick:()=>o.formatText("code"),active:n.code,title:"Inline Code",children:jsx(io,{size:14})}):null,ze?jsx(N,{onClick:()=>o.toggleQuote(),active:n.isQuote,title:"Quote",children:jsx(co,{size:14})}):null,Ee?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(pt,{size:14}):jsx(Ft,{size:14})}),ke?jsxs("div",{className:"luthor-floating-toolbar-field-row",children:[jsx("input",{type:"url",value:x,className:`luthor-floating-toolbar-input${L?" is-error":""}`,placeholder:"https://example.com","aria-label":"Link URL","aria-invalid":L?true:void 0,onChange:P=>{G(P.target.value),L&&ae(null);},onBlur:je,onKeyDown:P=>{P.key==="Enter"&&(P.preventDefault(),je());}}),jsx("button",{type:"button",className:"luthor-toolbar-button luthor-floating-toolbar-action luthor-floating-toolbar-action-primary",onClick:je,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(pt,{size:13})})]}):null]}):null]}):null,(Ie||pe)&&Fe?jsx("div",{className:"luthor-floating-toolbar-separator"}):null,Fe?jsxs(Fragment,{children:[jsx(N,{onClick:()=>o.toggleUnorderedList(),active:n.unorderedList,title:"Bullet List",children:jsx(lo,{size:14})}),jsx(N,{onClick:()=>o.toggleOrderedList(),active:n.orderedList,title:"Numbered List",children:jsx(so,{size:14})}),jsx(N,{onClick:()=>o.toggleCheckList(),active:n.checkList,title:"Checklist",children:jsx(ao,{size:14})})]}):null]})}var We={commands:{},activeStates:{},editorTheme:"light",isFeatureEnabled:()=>true};function Ro(e,t,o,n=()=>true){We.commands=e,We.activeStates=t,We.editorTheme=o,We.isFeatureEnabled=n;}function Un(){let e=Dn,t=new FloatingToolbarExtension;return t.config={...t.config,render:o=>createElement(e,{...o,commands:We.commands,activeStates:We.activeStates,editorTheme:We.editorTheme,isFeatureEnabled:We.isFeatureEnabled}),getCommands:()=>We.commands,getActiveStates:()=>We.activeStates},t}var wi=120,Li=58;function Ti(e,t=Li){return e.length<=t?e:`${e.slice(0,t-3)}...`}function Kn(){let e=window.getSelection();return !e||e.rangeCount===0?false:!e.getRangeAt(0).collapsed}function Vn(e,t){if(!(e instanceof Element))return null;let o=e.closest("a");return !(o instanceof HTMLAnchorElement)||!t.contains(o)?null:o}function qn({editor:e,commands:t,editorTheme:o="light",disabled:n=false}){let i=useRef(null),r=useRef(null),l=useRef(null),a=useRef(null),[u,m]=useState(null),[k,v]=useState(false),[y,h]=useState(""),[f,d]=useState(null),[C,S]=useState(null),[x,G]=useState(null),Y=useCallback(()=>{a.current!==null&&(window.clearTimeout(a.current),a.current=null);},[]),A=useCallback(()=>{Y(),m(null),v(false),h(""),d(null),S(null);},[Y]),ue=useCallback(()=>{Y(),a.current=window.setTimeout(()=>{A();},wi);},[Y,A]),re=useCallback((I,O)=>{let H=I.getBoundingClientRect(),Z=i.current?.getBoundingClientRect(),ie=ve({anchorRect:H,overlay:{width:Z?.width??340,height:Z?.height??48},portalContainer:O,gap:8,margin:10,preferredX:"start",preferredY:"bottom",flipX:true,flipY:true});S({top:typeof ie.top=="number"?ie.top:0,left:typeof ie.left=="number"?ie.left:0});},[]),L=useCallback((I,O)=>{if(typeof t.getLinkByKey!="function"){m(H=>!H||H.nodeKey!==I?H:{...H,url:O});return}t.getLinkByKey(I).then(H=>{if(!H){A();return}m(Z=>!Z||Z.nodeKey!==I?Z:{...Z,url:H.url});});},[t,A]);useEffect(()=>{if(!e||n||typeof window>"u"){A(),G(null),r.current=null;return}let I=e.getRootElement();if(!I){A(),G(null),r.current=null;return}let O=I.closest(".luthor-editor-wrapper")??null;G(O),r.current=O;let H=se=>{let W=Vn(se.target,I);if(!W)return;if(Kn()){A();return}Y();let xe=resolveLinkNodeKeyFromAnchor(e,W);if(!xe)return;let he=W.getAttribute("href")??W.href;m({nodeKey:xe,url:he,anchorEl:W}),re(W,r.current),d(null),k||h(he),L(xe,he);},Z=se=>{if(!u)return;let W=se.relatedTarget;W&&i.current?.contains(W)||Vn(W,I)||ue();},ie=()=>{Kn()&&A();},M=()=>{m(se=>{if(!se)return se;let W=se.anchorEl.isConnected&&I.contains(se.anchorEl)?se.anchorEl:I.querySelector(`a[data-lexical-node-key="${se.nodeKey}"]`);return W?(re(W,r.current),{...se,anchorEl:W,url:W.getAttribute("href")??W.href}):(A(),null)});},fe=()=>{l.current===null&&(l.current=window.requestAnimationFrame(()=>{l.current=null,M();}));};return I.addEventListener("mouseover",H),I.addEventListener("mouseout",Z),document.addEventListener("selectionchange",ie),window.addEventListener("scroll",fe,true),window.addEventListener("resize",fe),()=>{I.removeEventListener("mouseover",H),I.removeEventListener("mouseout",Z),document.removeEventListener("selectionchange",ie),window.removeEventListener("scroll",fe,true),window.removeEventListener("resize",fe),l.current!==null&&(cancelAnimationFrame(l.current),l.current=null),Y();}},[t,n,e,u,k,A,ue,L,re,Y]),useLayoutEffect(()=>{u&&re(u.anchorEl,r.current);},[u,k,re]);let ae=useMemo(()=>{if(!(!u||!C))return {..._e(u.anchorEl),position:x?"absolute":"fixed",top:C.top,left:C.left,zIndex:"var(--luthor-z-menu, 460)"}},[u,C,x]);if(!u||!C||typeof document>"u")return null;let w=()=>{(t.removeLinkByKey?.(u.nodeKey)??false)&&A();},X=()=>{let I=y.trim();if(!(t.updateLinkByKey?.(u.nodeKey,I)??false)){d("Enter a valid URL"),L(u.nodeKey,u.url);return}m(H=>!H||H.nodeKey!==u.nodeKey?H:{...H,url:I}),d(null),v(false),queueMicrotask(()=>{L(u.nodeKey,I);});};return createPortal(jsx("div",{ref:i,className:"luthor-floating-toolbar luthor-link-hover-bubble","data-theme":o,style:ae,onMouseEnter:Y,onMouseLeave:ue,children:k?jsxs(Fragment,{children:[jsx("input",{type:"url",value:y,className:`luthor-link-hover-bubble-input${f?" is-error":""}`,placeholder:"https://example.com","aria-label":"Edit link URL","aria-invalid":f?true:void 0,onChange:I=>{h(I.target.value),f&&d(null);},onKeyDown:I=>{if(I.key==="Enter"){I.preventDefault(),X();return}I.key==="Escape"&&(I.preventDefault(),v(false),h(u.url),d(null));}}),jsx("button",{type:"button",className:"luthor-toolbar-button luthor-link-hover-bubble-button luthor-link-hover-bubble-button-primary",onClick:X,children:"Update"}),jsx("button",{type:"button",className:"luthor-toolbar-button luthor-link-hover-bubble-button",onClick:()=>{v(false),h(u.url),d(null);},children:"Cancel"})]}):jsxs(Fragment,{children:[jsx("span",{className:"luthor-link-hover-bubble-url",title:u.url,children:Ti(u.url)}),jsx("button",{type:"button",className:"luthor-toolbar-button luthor-link-hover-bubble-button",onClick:()=>{h(u.url),v(true),d(null);},children:"Edit"}),jsx("button",{type:"button",className:"luthor-toolbar-button luthor-link-hover-bubble-button luthor-link-hover-bubble-button-danger",onClick:w,"aria-label":"Unlink",children:jsx(pt,{size:13})})]})}),x??document.body)}var Ii=400;function $n({mode:e,onModeChange:t,labels:o,availableModes:n,isConverting:i}){let r=d=>d==="visual"?"visual-editor":d,l=(n??[]).includes("visual-editor")?"visual-editor":"visual",a=d=>d==="visual-editor"?l:d,u=["visual-only","visual-editor","json","markdown","html"],m=n??["visual-only","visual-editor","json","markdown","html"],k=new Set(m.map(r)),v=u.filter(d=>k.has(d)),y=r(e),h=i?r(i):null,f={"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(d=>jsxs("button",{className:`luthor-mode-tab ${y===d?"active":""}`,onClick:()=>t(a(d)),children:[f[d],h===d&&jsx("span",{className:"luthor-tab-converting-spinner"})]},d))})}function fo({value:e,onChange:t,placeholder:o,className:n,wrap:i}){let r=useRef(null);return useLayoutEffect(()=>{let l=r.current;if(!l)return;l.style.height="auto";let a=Math.max(0,l.offsetHeight-l.clientHeight),u=Math.max(l.scrollHeight+a+1,Ii);l.style.height=`${u}px`;},[e]),jsx("textarea",{ref:r,className:`luthor-source-view${n?` ${n}`:""}`,value:e,onChange:l=>t(l.target.value),placeholder:o,spellCheck:false,wrap:i??"off"})}function Yn(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 bo(e){return e.replace(/\r\n?/g,`
2
+ `)}function Mi(e){return e.replace(/&#(9|10|13|32|160);/g,(t,o)=>{switch(o){case "9":return " ";case "10":return `
3
+ `;case "13":return "\r";case "32":return " ";case "160":return " ";default:return t}})}function Oi(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 Ni(e){return ["***","**","~~","*"].reduce((o,n)=>Oi(o,n),e)}var Hi=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Ri=new Set(["pre","script","style","textarea"]),Ai=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"]),Pi=1,yo=3,zi=8;function Jn(e){return e.nodeType===Pi}function Po(e){return e.nodeType===yo&&(e.textContent??"").trim().length>0}function po(e){return e.tagName.toLowerCase()}function Gn(e){return Array.from(e.childNodes).filter(t=>t.nodeType!==yo?true:Po(t))}function Bi(e){let t=e.outerHTML,o=t.indexOf(">");return o===-1?`<${po(e)}>`:t.slice(0,o+1)}function Di(e){let t=po(e);if(Hi.has(t)||Ri.has(t))return false;let o=Gn(e);if(o.length===0||o.some(Po))return false;let n=o.filter(Jn);return n.length===0?false:n.every(i=>Ai.has(po(i)))}function Xn(e,t){let o=" ".repeat(Math.max(t,0));if(e.nodeType===zi)return `${o}<!--${e.data}-->`;if(e.nodeType===yo){let r=bo(e.textContent??"");return r.trim()?`${o}${r.trim()}`:null}if(!Jn(e))return null;if(!Di(e))return `${o}${e.outerHTML}`;let n=po(e),i=[`${o}${Bi(e)}`];for(let r of Gn(e)){let l=Xn(r,t+1);l&&i.push(l);}return i.push(`${o}</${n}>`),i.join(`
4
+ `)}function Ui(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!==yo?true:Po(i)).map(i=>Xn(i,0)).filter(i=>typeof i=="string"&&i.length>0);return n.length===0?t.body.innerHTML.trim()||e:n.join(`
5
+ `)}function Wn(e){let t=bo(e).trim();if(!t)return "";try{let o=JSON.parse(t);return JSON.stringify(o,null,2)}catch{return t}}function Qn(e){return Ni(Mi(bo(e))).trim()}function Zn(e){let t=bo(e).trim();if(!t)return "";try{return Ui(t)}catch{return t}}var Bo=6,ji=["#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"],qi=[{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"}],$i=[{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 Yi(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 Ji({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 Gi({pattern:e}){let t=Yi(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 a=n[l]??0,u=12+a*12,m=24+a*12,k=57-a*10;return jsxs("g",{children:[jsx("g",{transform:`translate(${u-16}, 0)`,children:jsx(Ji,{type:i[l]??t[0],cy:r})}),jsx("rect",{x:m,y:r-2.5,width:k,height:"5",rx:"2.5",className:"luthor-unordered-variant-line"})]},`${e}-row-${l}`)})]})}function tr({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 Xi({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,a=9+l*12,u=26+l*12,m=56-l*10;return jsxs("g",{children:[jsx("text",{x:a,y:i+2.8,className:"luthor-ordered-variant-label",children:n[r]}),jsx("rect",{x:u,y:i-2.5,width:m,height:"5",rx:"2.5",className:"luthor-ordered-variant-line"})]},`${e}-ordered-row-${r}`)})]})}function Co(e){return e.trim().toLowerCase().replace(/\s+/g,"")}function Wi(e,t){let o=Co(t);for(let n of e)if(Co(n.value)===o)return n.color;return null}function Qi(e,t,o){if(!e||e==="default")return o;let n=Wi(t,e);return n||e}function Zi(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 Do="Inherited",vo="16px",Uo="1.5";function Ce(e){return e.trim().toLowerCase().replace(/\s+/g,"")}function or(e){let t=e.split(",")[0]??"";return Ce(t.replace(/["']/g,""))}function Eo(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 Ct(){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 zo(){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 el(e,t){let o=Ce(e);if(o&&o!=="inherit"){let i=nr(e);if(i)return i}return nr(t?.fontFamily??"")||Do}function tl(e,t){let o=Ce(e);return o&&o!=="inherit"?e.trim():(t?.fontSize??"").trim()||vo}function ol(e,t){let o=Ce(e);return o&&o!=="normal"?e.trim():(t?.lineHeight??"").trim()||Uo}function nl(e,t){if(!e)return null;let o=or(e);return o?t.find(i=>Ce(i.value)===o?true:or(i.fontFamily)===o)?.value??null:null}function rl(e,t){if(!e)return null;let o=Ce(e),n=t.find(l=>Ce(String(l.value))===o?true:Ce(String(l.fontSize))===o);if(n)return String(n.value);let i=Eo(e);if(i==null)return null;let r=null;for(let l of t){let a=Eo(String(l.fontSize));if(a==null)continue;let u=Math.abs(a-i);(!r||u<r.distance)&&(r={value:String(l.value),distance:u});}return r?.value??null}function il(e,t,o){if(!e)return null;let n=Ce(e),i=o.find(m=>Ce(m.value)===n?true:Ce(m.lineHeight)===n);if(i)return i.value;let r=t?Eo(t):null,l=Eo(e),a=null;if(l!=null&&r!=null&&r>0)a=l/r;else {let m=Number(e);Number.isFinite(m)&&(a=m);}if(a==null)return null;let u=null;for(let m of o){let k=Number(m.lineHeight);if(!Number.isFinite(k))continue;let v=Math.abs(k-a);(!u||v<u.distance)&&(u={value:m.value,distance:v});}return u?.value??null}function rr({title:e,value:t,options:o,recentColors:n,active:i,fallbackColor:r,highlight:l,onChange:a,onClear:u,onAddRecent:m}){let k=useRef(null),v=useRef(null),y=useRef(null),h=useRef(null),f=useRef(null),[d,C]=useState(false),[S,x]=useState(void 0),[G,Y]=useState(null),A=Qi(t,o,r),ue=useMemo(()=>ji,[]),re=useMemo(()=>{let w=[...n].slice(0,Bo);for(;w.length<Bo;)w.push("");return w},[n]);useEffect(()=>()=>{h.current&&window.cancelAnimationFrame(h.current);},[]);let L=useCallback(w=>{f.current=w,!h.current&&(h.current=window.requestAnimationFrame(()=>{h.current=null,f.current&&(a(f.current),f.current=null);}));},[a]),ae=useCallback(w=>{let X=k.current;if(!X)return;let I=X.getBoundingClientRect(),O=v.current?.getBoundingClientRect(),H=yt(X);Y(H);let Z=ve({anchorRect:I,overlay:{width:O?.width??248,height:O?.height??340},portalContainer:H,gap:6,margin:8,preferredX:"start",preferredY:"bottom",flipX:true,flipY:true});x({...Z,visibility:w?"visible":"hidden",..._e(X)});},[]);return useLayoutEffect(()=>{if(!d)return;ae(false);let w=window.requestAnimationFrame(()=>{ae(true);});return ()=>{window.cancelAnimationFrame(w);}},[d,ae]),useEffect(()=>{if(!d)return;let w=O=>{let H=O.target;k.current?.contains(H)||v.current?.contains(H)||C(false);},X=O=>{O.key==="Escape"&&C(false);},I=()=>ae(true);return window.addEventListener("resize",I),window.addEventListener("scroll",I,true),document.addEventListener("mousedown",w),document.addEventListener("keydown",X),()=>{window.removeEventListener("resize",I),window.removeEventListener("scroll",I,true),document.removeEventListener("mousedown",w),document.removeEventListener("keydown",X),Y(null);}},[d,ae]),jsxs(Fragment,{children:[jsxs("button",{ref:k,type:"button",className:`luthor-toolbar-button luthor-color-button${i?" active":""}${l?" is-highlight":""}`,title:e,"aria-label":e,onClick:()=>C(w=>!w),children:[l?jsx(pn,{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:A}})]}),d&&typeof document<"u"&&createPortal(jsxs("div",{ref:v,className:"luthor-color-picker",style:S,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:ue.map(w=>jsx("button",{type:"button",className:"luthor-color-swatch",style:{backgroundColor:w},"aria-label":`Use color ${w}`,onClick:()=>{a(w),m(w),C(false);}},w))})]}),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:re.map((w,X)=>jsx("button",{type:"button",className:"luthor-color-swatch",style:{backgroundColor:w||"transparent"},"aria-label":w?`Use recent color ${w}`:"Empty recent color slot",disabled:!w,onClick:()=>{w&&(a(w),m(w),C(false));}},`${w||"empty"}-${X}`))})]}),jsxs("div",{className:"luthor-color-picker-footer",children:[jsx("button",{type:"button",className:"luthor-color-picker-clear",onClick:()=>{u(),C(false);},children:"Reset to Default"}),jsxs("button",{type:"button",className:"luthor-color-picker-custom",onClick:()=>y.current?.click(),children:[jsx(bn,{size:14}),jsx("span",{children:"Custom Color"})]}),jsx("input",{ref:y,type:"color",className:"luthor-color-picker-native luthor-color-picker-native-hidden",value:Zi(A,r),onInput:w=>{L(w.target.value);},onChange:w=>{let X=w.target.value;a(X),m(X);}})]})]}),G??document.body)]})}function ll(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:")||"",a=prompt("Enter caption (optional):")||void 0;e.insertImage({src:r,alt:l,caption:a});},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 a;if(t)try{a=await t(l);}catch{alert("Failed to upload image");return}else a=URL.createObjectURL(l);e.insertImage({src:a,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 al(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 sl(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 ul(e,t,o){return sl(e,t)?o?.[e]!==false:false}function cl(e,t,o){return {sections:e.sections.map(n=>({...n,items:n.items.filter(i=>ul(i,t,o))})).filter(n=>n.items.length>0)}}function ir({commands:e,hasExtension:t,activeStates:o,isDark:n,toggleTheme:i,onCommandPaletteOpen:r,imageUploadHandler:l,classNames:a,toolbarStyleVars:u,layout:m,toolbarVisibility:k,headingOptions:v,paragraphLabel:y}){let{handlers:h,fileInputRef:f,gifInputRef:d}=ll(e,l),C=al(e),S=t("iframeEmbed")||t("youtubeEmbed"),x=o.isIframeEmbedSelected||o.isYouTubeEmbedSelected,[G,Y]=useState(false),[A,ue]=useState(false),[re,L]=useState(false),[ae,w]=useState(false),[X,I]=useState(false),[O,H]=useState(false),[Z,ie]=useState(false),[M,fe]=useState(false),[se,W]=useState("default"),[xe,he]=useState([{value:"default",label:Do}]),[ze,Ee]=useState("default"),[$e,Ie]=useState([{value:"default",label:vo}]),[pe,Fe]=useState("default"),[ke,je]=useState([{value:"default",label:Uo}]),[P,V]=useState("default"),[ce,Me]=useState([{value:"default",label:"Default",color:"inherit"}]),[qe,ee]=useState([]),[Ye,we]=useState("default"),[mt,Be]=useState([{value:"default",label:"Default",color:"transparent"}]),[De,Je]=useState([]),[Ue,Le]=useState(0),[Oe,Q]=useState({rows:3,columns:3,includeHeaders:false}),be=useRef(null),Ge=useRef("");useEffect(()=>{if(typeof document>"u")return;let b=()=>{be.current===null&&(be.current=window.requestAnimationFrame(()=>{be.current=null;let p=window.getSelection();if(!p||p.rangeCount===0||!p.getRangeAt(0).collapsed)return;let z=Ct();if(!z)return;let B=`${z.fontFamily}|${z.fontSize}|${z.lineHeight}`;B!==Ge.current&&(Ge.current=B,Le(_=>_+1));}));};return document.addEventListener("selectionchange",b),()=>{document.removeEventListener("selectionchange",b),be.current!==null&&(cancelAnimationFrame(be.current),be.current=null);}},[]);let nt=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 b=Ct()??zo(),p=e.getFontFamilyOptions().map(B=>({value:B.value,label:Ce(B.value)==="default"?el(B.fontFamily,b):B.label})),z=p.length>0?p:[{value:"default",label:Do}];he(z),W(B=>z.some(_=>_.value===B)?B:"default");},[e,t]),useEffect(()=>{if(!t("fontFamily")||typeof e.getCurrentFontFamily!="function")return;let b=e.getFontFamilyOptions;if(typeof b!="function")return;let p=false;return e.getCurrentFontFamily().then(z=>{if(p)return;if(z&&z!=="default"){W(z);return}let B=Ct(),_=nl(B?.fontFamily,b());W(_??"default");}),()=>{p=true;}},[o,e,t,Ue]),useEffect(()=>{if(!t("fontSize")||typeof e.getFontSizeOptions!="function")return;let b=Ct()??zo(),p=e.getFontSizeOptions().map(_=>({value:String(_.value).trim(),label:Ce(String(_.value))==="default"?tl(String(_.fontSize),b):String(_.label).trim()})).filter(_=>_.value.length>0&&_.label.length>0),z=p.some(_=>Ce(_.value)==="default"),B=p.length===0?[{value:"default",label:vo}]:z?p:[{value:"default",label:vo},...p];Ie(B),Ee(_=>B.some(g=>g.value===_)?_:"default");},[e,t]),useEffect(()=>{if(!t("fontSize")||typeof e.getCurrentFontSize!="function")return;let b=e.getFontSizeOptions;if(typeof b!="function")return;let p=false;return e.getCurrentFontSize().then(z=>{if(p)return;if(z&&z!=="default"){Ee(z);return}let B=Ct(),_=rl(B?.fontSize,b());Ee(_??"default");}),()=>{p=true;}},[o,e,t,Ue]),useEffect(()=>{if(!t("lineHeight")||typeof e.getLineHeightOptions!="function")return;let b=Ct()??zo(),p=e.getLineHeightOptions().map(B=>({value:B.value,label:Ce(B.value)==="default"?ol(B.lineHeight,b):B.label})),z=p.length>0?p:[{value:"default",label:Uo}];je(z);},[e,t]),useEffect(()=>{if(!t("lineHeight")||typeof e.getCurrentLineHeight!="function")return;let b=e.getLineHeightOptions;if(typeof b!="function")return;let p=false;return e.getCurrentLineHeight().then(z=>{if(p)return;if(z){Fe(z);return}let B=Ct(),_=il(B?.lineHeight,B?.fontSize,b());Fe(_??"default");}),()=>{p=true;}},[o,e,t,Ue]),useEffect(()=>{if(!t("textColor")||typeof e.getTextColorOptions!="function")return;let b=e.getTextColorOptions().map(p=>({value:p.value,label:p.label,color:p.color}));b.length>0&&Me(b);},[e,t]),useEffect(()=>{if(!t("textColor")||typeof e.getCurrentTextColor!="function")return;let b=false;return e.getCurrentTextColor().then(p=>{b||V(p??"default");}),()=>{b=true;}},[o,e,t,Ue]),useEffect(()=>{if(!t("textHighlight")||typeof e.getTextHighlightOptions!="function")return;let b=e.getTextHighlightOptions().map(p=>({value:p.value,label:p.label,color:p.backgroundColor}));b.length>0&&Be(b);},[e,t]),useEffect(()=>{if(!t("textHighlight")||typeof e.getCurrentTextHighlight!="function")return;let b=false;return e.getCurrentTextHighlight().then(p=>{b||we(p??"default");}),()=>{b=true;}},[o,e,t,Ue]);let ye=useMemo(()=>{if(!v||v.length===0)return [...Ve];let b=new Set,p=[];for(let z of v)!Ve.includes(z)||b.has(z)||(b.add(z),p.push(z));return p.length>0?p:[...Ve]},[v]),rt=y?.trim()||"Paragraph",Lt=useMemo(()=>{let b=ye.map(p=>({value:p,label:`Heading ${p.slice(1)}`}));return [{value:"p",label:rt},...b]},[ye,rt]),Ne=o.isH1?"h1":o.isH2?"h2":o.isH3?"h3":o.isH4?"h4":o.isH5?"h5":o.isH6?"h6":"p",gt=Lt.some(b=>b.value===Ne)?Ne:"p",Tt=b=>{b==="p"?e.toggleParagraph():b.startsWith("h")&&ye.includes(b)&&e.toggleHeading(b);},St=b=>{b==="default"?e.clearFontFamily?.():e.setFontFamily?.(b),W(b);},Ze=b=>{b==="default"?e.clearFontSize?.():e.setFontSize?.(b),Ee(b);},it=b=>{e.setLineHeight?.(b),Fe(b);},lt=(b,p)=>{b(z=>{let B=Co(p),_=z.filter(g=>Co(g)!==B);return [p,..._].slice(0,Bo)});},Xe=b=>{if(b==="default"){e.clearTextColor?.(),V("default");return}e.setTextColor?.(b),V(b);},Ke=b=>{if(b==="default"){e.clearTextHighlight?.(),we("default");return}e.setTextHighlight?.(b),we(b);},at=b=>{if(typeof e.setOrderedListPattern=="function"){e.setOrderedListPattern(b);return}e.toggleOrderedList();},ht=b=>{if(typeof e.setUnorderedListPattern=="function"){e.setUnorderedListPattern(b);return}e.toggleUnorderedList();},xt=b=>{if(typeof e.setCheckListVariant=="function"){e.setCheckListVariant(b);return}e.toggleCheckList();},Qt=b=>{switch(b){case "fontFamily":return t("fontFamily")?jsx(jt,{value:se,onValueChange:St,options:xe,placeholder:"Font"},"fontFamily"):null;case "fontSize":return t("fontSize")?jsx(jt,{value:ze,onValueChange:Ze,options:$e,placeholder:"Size"},"fontSize"):null;case "lineHeight":return t("lineHeight")?jsx(jt,{value:pe,onValueChange:it,options:ke,placeholder:"Line"},"lineHeight"):null;case "textColor":return t("textColor")?jsx(rr,{title:"Text Color",value:P,options:ce,recentColors:qe,active:o.hasCustomTextColor,fallbackColor:"#0f172a",onChange:Xe,onClear:()=>Xe("default"),onAddRecent:p=>lt(ee,p)},"textColor"):null;case "textHighlight":return t("textHighlight")?jsx(rr,{title:"Text Highlight",value:Ye,options:mt,recentColors:De,active:o.hasTextHighlight,fallbackColor:"#fef08a",highlight:true,onChange:Ke,onClear:()=>Ke("default"),onAddRecent:p=>lt(Je,p)},"textHighlight"):null;case "bold":return jsx(N,{onClick:()=>e.toggleBold(),active:o.bold,title:"Bold (Ctrl+B)",children:jsx(to,{size:16})},"bold");case "italic":return jsx(N,{onClick:()=>e.toggleItalic(),active:o.italic,title:"Italic (Ctrl+I)",children:jsx(oo,{size:16})},"italic");case "underline":return jsx(N,{onClick:()=>e.toggleUnderline(),active:o.underline,title:"Underline (Ctrl+U)",children:jsx(no,{size:16})},"underline");case "strikethrough":return jsx(N,{onClick:()=>e.toggleStrikethrough(),active:o.strikethrough,title:"Strikethrough",children:jsx(ro,{size:16})},"strikethrough");case "subscript":return t("subscript")?jsx(N,{onClick:()=>e.toggleSubscript?.(),active:o.subscript,title:"Subscript",children:jsx(Ln,{size:16})},"subscript"):null;case "superscript":return t("superscript")?jsx(N,{onClick:()=>e.toggleSuperscript?.(),active:o.superscript,title:"Superscript",children:jsx(Tn,{size:16})},"superscript"):null;case "code":return jsx(N,{onClick:()=>e.formatText("code"),active:o.code,title:"Inline Code",children:jsx(io,{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(pt,{size:16}):jsx(Ft,{size:16})},"link");case "blockFormat":return t("blockFormat")?jsx(jt,{value:gt,onValueChange:Tt,options:Lt,placeholder:"Format"},"blockFormat"):null;case "quote":return t("blockFormat")?jsx(N,{onClick:()=>e.toggleQuote(),active:o.isQuote,title:"Quote",children:jsx(co,{size:16})},"quote"):null;case "alignLeft":return t("blockFormat")?jsx(N,{onClick:()=>e.setTextAlignment("left"),active:o.isTextAlignedLeft,title:"Align Left",children:jsx(Mt,{size:16})},"alignLeft"):null;case "alignCenter":return t("blockFormat")?jsx(N,{onClick:()=>e.setTextAlignment("center"),active:o.isTextAlignedCenter,title:"Align Center",children:jsx(bt,{size:16})},"alignCenter"):null;case "alignRight":return t("blockFormat")?jsx(N,{onClick:()=>e.setTextAlignment("right"),active:o.isTextAlignedRight,title:"Align Right",children:jsx(Ot,{size:16})},"alignRight"):null;case "alignJustify":return t("blockFormat")?jsx(N,{onClick:()=>e.setTextAlignment("justify"),active:o.isTextAlignedJustify,title:"Justify",children:jsx(mn,{size:16})},"alignJustify"):null;case "codeBlock":return t("code")?jsx(N,{onClick:()=>e.toggleCodeBlock(),active:o.isInCodeBlock,title:"Code Block",children:jsx(un,{size:16})},"codeBlock"):null;case "unorderedList":return t("list")?jsxs("div",{className:"luthor-toolbar-split-button",children:[jsx(N,{onClick:()=>e.toggleUnorderedList(),active:o.unorderedList,title:"Bullet List",children:jsx(lo,{size:16})}),jsx(st,{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(Nt,{size:12})}),isOpen:X,onOpenChange:I,children:jsx("div",{className:"luthor-unordered-variant-grid",children:$i.map(p=>jsx("button",{className:"luthor-unordered-variant-option",type:"button",title:p.title,"aria-label":p.title,onClick:()=>{ht(p.pattern),I(false);},children:jsx(Gi,{pattern:p.pattern})},p.pattern))})})]},"unorderedList"):null;case "orderedList":return t("list")?jsxs("div",{className:"luthor-toolbar-split-button",children:[jsx(N,{onClick:()=>e.toggleOrderedList(),active:o.orderedList,title:"Numbered List",children:jsx(so,{size:16})}),jsx(st,{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(Nt,{size:12})}),isOpen:O,onOpenChange:H,children:jsx("div",{className:"luthor-ordered-variant-grid",children:qi.map(p=>jsx("button",{className:"luthor-ordered-variant-option",type:"button",title:p.title,"aria-label":p.title,onClick:()=>{at(p.pattern),H(false);},children:jsx(Xi,{pattern:p.pattern})},p.pattern))})})]},"orderedList"):null;case "checkList":return t("list")?jsxs("div",{className:"luthor-toolbar-split-button",children:[jsx(N,{onClick:()=>e.toggleCheckList(),active:o.checkList,title:"Checklist",children:jsx(ao,{size:16})}),jsx(st,{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(Nt,{size:12})}),isOpen:Z,onOpenChange:ie,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:()=>{xt("strikethrough"),ie(false);},children:jsx(tr,{variant:"strikethrough"})}),jsx("button",{className:"luthor-checklist-variant-option",type:"button",title:"Checked = Keep text","aria-label":"Checked = Keep text",onClick:()=>{xt("plain"),ie(false);},children:jsx(tr,{variant:"plain"})})]})})]},"checkList"):null;case "indentList":return t("list")?jsx(N,{onClick:()=>e.indentList(),title:"Indent List",children:jsx(vn,{size:14})},"indentList"):null;case "outdentList":return t("list")?jsx(N,{onClick:()=>e.outdentList(),title:"Outdent List",children:jsx(Cn,{size:14})},"outdentList"):null;case "horizontalRule":return t("horizontalRule")?jsx(N,{onClick:()=>e.insertHorizontalRule(),title:"Insert Horizontal Rule",children:jsx(gn,{size:16})},"horizontalRule"):null;case "table":return t("table")?jsx(N,{onClick:()=>fe(true),title:"Insert Table",children:jsx(hn,{size:16})},"table"):null;case "image":return t("image")?jsxs(Fragment,{children:[jsxs(st,{trigger:jsx("button",{className:`luthor-toolbar-button ${o.imageSelected?"active":""}`,title:"Insert Image",children:jsx(Io,{size:16})}),isOpen:G,onOpenChange:Y,children:[jsxs("button",{className:"luthor-dropdown-item",onClick:()=>{h.insertFromUrl(),Y(false);},children:[jsx(Ft,{size:16}),jsx("span",{children:"From URL"})]}),jsxs("button",{className:"luthor-dropdown-item",onClick:()=>{h.insertFromFile(),Y(false);},children:[jsx(Fo,{size:16}),jsx("span",{children:"Upload File"})]}),jsxs("button",{className:"luthor-dropdown-item",onClick:()=>{h.insertGifFromUrl(),Y(false);},children:[jsx(Mo,{size:16}),jsx("span",{children:"Insert GIF URL"})]}),jsxs("button",{className:"luthor-dropdown-item",onClick:()=>{h.insertGifFromFile(),Y(false);},children:[jsx(Fo,{size:16}),jsx("span",{children:"Upload GIF"})]})]},"image"),o.imageSelected&&jsxs(st,{trigger:jsx("button",{className:"luthor-toolbar-button",title:"Align Image",children:jsx(bt,{size:16})}),isOpen:re,onOpenChange:L,children:[jsxs("button",{className:"luthor-dropdown-item",onClick:()=>{h.setAlignment("left"),L(false);},children:[jsx(Mt,{size:16}),jsx("span",{children:"Align Left"})]}),jsxs("button",{className:"luthor-dropdown-item",onClick:()=>{h.setAlignment("center"),L(false);},children:[jsx(bt,{size:16}),jsx("span",{children:"Align Center"})]}),jsxs("button",{className:"luthor-dropdown-item",onClick:()=>{h.setAlignment("right"),L(false);},children:[jsx(Ot,{size:16}),jsx("span",{children:"Align Right"})]}),jsxs("button",{className:"luthor-dropdown-item",onClick:()=>{h.setCaption(),L(false);},children:[jsx(yn,{size:16}),jsx("span",{children:"Set Caption"})]})]},"imageAlign")]}):null;case "emoji":return !t("emoji")||nt.length===0?null:jsx(st,{trigger:jsx("button",{className:"luthor-toolbar-button",title:"Insert Emoji",children:jsx(Mo,{size:16})}),isOpen:A,onOpenChange:ue,children:jsx("div",{className:"luthor-emoji-picker-grid",role:"listbox","aria-label":"Emoji picker",children:nt.map(p=>jsx("button",{type:"button",className:"luthor-emoji-picker-item",title:p.shortcodes[0]?`${p.label} (:${p.shortcodes[0]}:)`:p.label,onClick:()=>{e.insertEmoji?.(p.emoji),ue(false);},children:p.emoji},`${p.emoji}-${p.label}`))})},"emoji");case "embed":return S?jsxs(st,{trigger:jsx("button",{className:`luthor-toolbar-button ${x?"active":""}`,title:"Insert Embed",children:jsx(fn,{size:16})}),isOpen:ae,onOpenChange:w,children:[t("iframeEmbed")?jsxs("button",{className:"luthor-dropdown-item",onClick:()=>{C.insertIframe(),w(false);},children:[jsx(Ft,{size:16}),jsx("span",{children:"Embed iframe"})]}):null,t("youtubeEmbed")?jsxs("button",{className:"luthor-dropdown-item",onClick:()=>{C.insertYouTube(),w(false);},children:[jsx(Io,{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(cn,{size:16})},"undo"):null;case "redo":return t("history")?jsx(N,{onClick:()=>e.redo(),disabled:!o.canRedo,title:"Redo (Ctrl+Y)",children:jsx(dn,{size:16})},"redo"):null;case "commandPalette":return jsx(N,{onClick:()=>r?.(),title:"Command Palette (Ctrl+Shift+P)",children:jsx(uo,{size:16})},"commandPalette");case "themeToggle":return jsx(N,{onClick:i,title:n?"Light Mode":"Dark Mode",children:n?jsx(En,{size:16}):jsx(kn,{size:16})},"themeToggle");default:return null}},ft=m??Zt,It=useMemo(()=>cl(ft,t,k),[ft,t,k]);return jsxs(Fragment,{children:[jsx("div",{className:a?.toolbar??"luthor-toolbar",style:u,children:It.sections.map((b,p)=>{let z=b.items.map((B,_)=>{let g=Qt(B);return g?Array.isArray(g)?g.map((E,$)=>E&&typeof E=="object"&&"key"in E&&E.key!=null?E:jsx("span",{children:E},`toolbar-item-${p}-${_}-${$}`)):g.type===Ki.Fragment?jsx("span",{children:g},`toolbar-item-${p}-${_}`):g&&typeof g=="object"&&"key"in g&&g.key!=null?g:jsx("span",{children:g},`toolbar-item-${p}-${_}`):null}).flat().filter(B=>B!==null);return z.length===0?null:jsx("div",{className:a?.section??"luthor-toolbar-section",children:z},p)})}),jsx("input",{ref:f,type:"file",accept:"image/*",onChange:h.handleUpload,className:"luthor-file-input"}),jsx("input",{ref:d,type:"file",accept:"image/gif",onChange:h.handleGifUpload,className:"luthor-file-input"}),jsx(Bn,{isOpen:M,onClose:()=>fe(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:Oe.rows,onChange:b=>Q(p=>({...p,rows:parseInt(b.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:Oe.columns,onChange:b=>Q(p=>({...p,columns:parseInt(b.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:Oe.includeHeaders||false,onChange:b=>Q(p=>({...p,includeHeaders:b.target.checked})),className:"luthor-checkbox"}),"Include headers"]})}),jsxs("div",{className:"luthor-dialog-actions",children:[jsx(Ho,{variant:"secondary",onClick:()=>fe(false),children:"Cancel"}),jsx(Ho,{variant:"primary",onClick:()=>{e.insertTable(Oe),fe(false);},children:"Insert Table"})]})]})})]})}var Yo=["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"],mr={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 Jt(e){let t={...mr};if(!e)return t;for(let o of Yo)typeof e[o]=="boolean"&&(t[o]=e[o]);return t}function gr(e,t){return e[t]!==false}var sr=8,ur=[{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"}],Ul={value:"default",label:"Default",fontFamily:"inherit"},cr=[{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"}],Kl={value:"default",label:"Default",fontSize:"inherit"},dr=[{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"}],Vl={value:"default",label:"Default",lineHeight:"1.5"},Yt="1.5",_l=1;function Et(e){return e.trim().toLowerCase()}function hr(e){return /^[a-z0-9][a-z0-9-]*$/i.test(e)}function jl(e){return Et(e)==="default"?true:wo(e)!==null}function ql(e){let t=e??ur,o=new Set,n=[];for(let r of t){let l=r.value.trim(),a=r.label.trim(),u=r.fontFamily.trim();if(!l||!a||!u||!hr(l))continue;let m=Et(l);o.has(m)||(o.add(m),n.push({value:l,label:a,fontFamily:u,cssImportUrl:r.cssImportUrl?.trim()||void 0}));}return n.length===0?ur:n.some(r=>Et(r.value)==="default")?n:[Ul,...n]}function $l(e){let t=e??cr,o=new Set,n=[];for(let r of t){let l=String(r.value).trim(),a=String(r.label).trim(),u=String(r.fontSize).trim();if(!l||!a||!u||!hr(l))continue;let m=Et(l);o.has(m)||(o.add(m),n.push({value:l,label:a,fontSize:u}));}return n.length===0?cr:n.some(r=>Et(r.value)==="default")?n:[Kl,...n]}function wo(e){let t=e.trim();if(!/^\d*\.?\d+$/.test(t))return null;let o=Number(t);return !Number.isFinite(o)||o<_l?null:o.toString()}function Yl(e){if(!Number.isFinite(e))return sr;let t=Math.floor(e);return t>=0?t:sr}function Jl(e){return typeof e=="number"?Number.isFinite(e)?wo(e.toString())??Yt:Yt:typeof e=="string"?wo(e)??Yt:Yt}function Gl(e,t=Yt){let o=e??dr,n=new Set,i=[];for(let l of o){let a=String(l.value).trim(),u=String(l.label).trim();if(!a||!u||!jl(a))continue;let m=Et(a);if(n.has(m))continue;if(m==="default"){n.add(m),i.push({value:a,label:u,lineHeight:t});continue}let k=wo(String(l.lineHeight));k&&(n.add(m),i.push({value:a,label:u,lineHeight:k}));}return i.length===0?dr:i.some(l=>Et(l.value)==="default")?i:[{...Vl,lineHeight:t},...i]}function dt({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 Xl=()=>jsxs(dt,{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"})]}),Wl=()=>jsxs(dt,{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"})]}),Ql=()=>jsxs(dt,{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"})]}),Zl=()=>jsxs(dt,{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"})]}),ea=()=>jsxs(dt,{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"})]}),ta=()=>jsxs(dt,{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"})]}),oa=()=>jsxs(dt,{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"})]}),na=()=>jsxs(dt,{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"})]}),Lo=new ImageExtension;Lo.config={...Lo.config,uploadHandler:async e=>URL.createObjectURL(e),defaultAlignment:"center",resizable:true,pasteListener:{insert:true,replace:true},debug:false};var Ko=new TableExtension;Ko.config={...Ko.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(Xl,{})}),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(Wl,{})}),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(Ql,{})}),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(Zl,{})}),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(ea,{})}),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(ta,{})}),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(na,{})})}),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(oa,{})})]})};var Vo=new IframeEmbedExtension;Vo.config={...Vo.config,defaultWidth:720,defaultHeight:405,defaultAlignment:"center"};var _o=new YouTubeEmbedExtension;_o.config={..._o.config,defaultWidth:720,defaultHeight:405,defaultAlignment:"center",nocookie:true,controls:true,rel:1};var ra=Un(),jo=new ContextMenuExtension;jo.config={...jo.config,preventDefault:true};var ia=new CommandPaletteExtension,la=new SlashCommandExtension,aa=new EmojiExtension,qo=new DraggableBlockExtension;qo.config={...qo.config,buttonStackPosition:"left"};var $o=new LinkExtension;$o.config={...$o.config,linkSelectedTextOnPaste:true,autoLinkText:true,autoLinkUrls:true};var sa=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"}]}),ua=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:ca}=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 fr({fontFamilyOptions:e,fontSizeOptions:t,lineHeightOptions:o,minimumDefaultLineHeight:n,featureFlags:i,isDraggableBoxEnabled:r,scaleByRatio:l,syntaxHighlighting:a,codeHighlightProvider:u,loadCodeHighlightProvider:m,maxAutoDetectCodeLength:k,isCopyAllowed:v,languageOptions:y,maxListIndentation:h}={}){let f=Jt(i),d=ae=>gr(f,ae),C=(r??true)&&d("draggableBlock"),S=Jl(n),x=Yl(h),G=new FontFamilyExtension().configure({options:ql(e),cssLoadStrategy:"on-demand"}),Y=new FontSizeExtension().configure({options:$l(t)}),A=new LineHeightExtension().configure({options:Gl(o,S),defaultLineHeight:S});Lo.configure({scaleByRatio:l??false}),codeExtension.configure({syntaxHighlighting:a??"auto",provider:u??void 0,loadProvider:m}),codeIntelligenceExtension.configure({provider:u??void 0,loadProvider:m,maxAutoDetectLength:k,isCopyAllowed:v??true,languageOptions:y});let ue=new ListExtension({maxDepth:x+1}),re=new TabIndentExtension({maxListDepth:x+1}),L=[];return d("bold")&&L.push(boldExtension),d("italic")&&L.push(italicExtension),d("underline")&&L.push(underlineExtension),d("strikethrough")&&L.push(strikethroughExtension),d("fontFamily")&&L.push(G),d("fontSize")&&L.push(Y),d("lineHeight")&&L.push(A),d("textColor")&&L.push(sa),d("textHighlight")&&L.push(ua),d("subscript")&&L.push(subscriptExtension),d("superscript")&&L.push(superscriptExtension),d("link")&&L.push($o),d("horizontalRule")&&L.push(horizontalRuleExtension),d("table")&&L.push(Ko),d("list")&&L.push(ue),d("history")&&L.push(historyExtension),d("image")&&L.push(Lo),d("blockFormat")&&L.push(blockFormatExtension),d("code")&&L.push(codeExtension),d("codeIntelligence")&&L.push(codeIntelligenceExtension),d("codeFormat")&&L.push(codeFormatExtension),d("tabIndent")&&L.push(re),d("enterKeyBehavior")&&L.push(enterKeyBehaviorExtension),d("iframeEmbed")&&L.push(Vo),d("youTubeEmbed")&&L.push(_o),d("floatingToolbar")&&L.push(ra),d("contextMenu")&&L.push(jo),d("commandPalette")&&L.push(ia),d("slashCommand")&&L.push(la),d("emoji")&&L.push(aa),C&&L.push(qo),d("customNode")&&L.push(ca),L}function Gt(e){return fr(e)}var Jo=fr();function pr(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 br(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 vr(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 Cr(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 Er(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 kr(e){return new Set(e)}function Go(e,t){e.clear();for(let o of t)e.add(o);}function wr(e,t){return e.has(t)}function Lr(e,t){e.add(t);}var D=(e,t=0,o="")=>({type:"text",version:1,text:e,detail:0,format:t,mode:"normal",style:o}),Se=(e,t="",o=0)=>({type:"paragraph",version:1,format:t,indent:o,direction:null,children:e}),Xo={root:{type:"root",version:1,format:"",indent:0,direction:null,children:[{type:"heading",version:1,tag:"h1",format:"",indent:0,direction:null,children:[D("Extensive Preset: JSON-First Feature Showcase")]},Se([D("This starter content is now a native "),D("JSON",1),D(" document that demonstrates visual editing without Markdown conversion.")]),{type:"heading",version:1,tag:"h2",format:"",indent:0,direction:null,children:[D("Inline formatting + typography")]},Se([D("Bold",1),D(" \u2022 "),D("Italic",2),D(" \u2022 "),D("Underline",8),D(" \u2022 "),D("Strikethrough",4),D(" \u2022 "),D("Inline Code",16),D(" \u2022 "),D("Subscript",32),D(" \u2022 "),D("Superscript",64)]),Se([D("Font family + size + color + highlight + line-height can be combined in one sentence.",0,"font-family: 'Inter', 'Segoe UI', Arial, sans-serif; font-size: 18px; line-height: 1.75; color: #2563eb; background-color: #bfdbfe;")]),{type:"paragraph",version:1,format:"center",indent:0,direction:null,children:[D("Centered paragraph with custom style",0,"font-size: 20px; color: #7c3aed;")]},{type:"paragraph",version:1,format:"right",indent:0,direction:null,children:[D("Right-aligned paragraph with highlight",128,"background-color: #fef08a;")]},{type:"quote",version:1,format:"",indent:0,direction:null,children:[D("\u201CEverything in this demo is persisted in JSON and can round-trip via visual mode.\u201D")]},{type:"paragraph",version:1,format:"",indent:0,direction:null,children:[{type:"link",version:1,rel:"noreferrer",target:"_blank",title:"Luthor documentation",url:"https://github.com/facebook/lexical",format:"",indent:0,direction:null,children:[D("Example link node")]},D(" with regular sibling text and emoji support \u{1F389}\u{1F525}\u2705.")]},{type:"heading",version:1,tag:"h2",format:"",indent:0,direction:null,children:[D("Lists")]},{type:"list",version:1,listType:"bullet",start:1,tag:"ul",format:"",indent:0,direction:null,children:[{type:"listitem",version:1,value:1,format:"",indent:0,direction:null,children:[Se([D("Bullet item with styled text",0,"color: #16a34a;")])]},{type:"listitem",version:1,value:2,format:"",indent:0,direction:null,children:[Se([D("Nested formatting in lists",1),D(" works great.")])]}]},{type:"list",version:1,listType:"number",start:1,tag:"ol",format:"",indent:0,direction:null,children:[{type:"listitem",version:1,value:1,format:"",indent:0,direction:null,children:[Se([D("Numbered item 1")])]},{type:"listitem",version:1,value:2,format:"",indent:0,direction:null,children:[Se([D("Numbered item 2")])]}]},{type:"list",version:1,listType:"check",start:1,tag:"ul",format:"",indent:0,direction:null,children:[{type:"listitem",version:1,value:1,checked:true,format:"",indent:0,direction:null,children:[Se([D("Checked task item")])]},{type:"listitem",version:1,value:2,checked:false,format:"",indent:0,direction:null,children:[Se([D("Unchecked task item")])]}]},{children:[{detail:0,format:0,mode:"normal",style:"",text:"const",type:"code-highlight",version:1,highlightType:"keyword"},{detail:0,format:0,mode:"normal",style:"",text:" content ",type:"code-highlight",version:1},{detail:0,format:0,mode:"normal",style:"",text:"=",type:"code-highlight",version:1,highlightType:"operator"},{detail:0,format:0,mode:"normal",style:"",text:" exportApi",type:"code-highlight",version:1},{detail:0,format:0,mode:"normal",style:"",text:".",type:"code-highlight",version:1,highlightType:"punctuation"},{detail:0,format:0,mode:"normal",style:"",text:"toJSON",type:"code-highlight",version:1,highlightType:"function"},{detail:0,format:0,mode:"normal",style:"",text:"(",type:"code-highlight",version:1,highlightType:"punctuation"},{detail:0,format:0,mode:"normal",style:"",text:")",type:"code-highlight",version:1,highlightType:"punctuation"},{detail:0,format:0,mode:"normal",style:"",text:";",type:"code-highlight",version:1,highlightType:"punctuation"},{type:"linebreak",version:1},{detail:0,format:0,mode:"normal",style:"",text:"await",type:"code-highlight",version:1,highlightType:"keyword"},{detail:0,format:0,mode:"normal",style:"",text:" ",type:"code-highlight",version:1},{detail:0,format:0,mode:"normal",style:"",text:"saveToDatabase",type:"code-highlight",version:1,highlightType:"function"},{detail:0,format:0,mode:"normal",style:"",text:"(",type:"code-highlight",version:1,highlightType:"punctuation"},{detail:0,format:0,mode:"normal",style:"",text:"{",type:"code-highlight",version:1,highlightType:"punctuation"},{detail:0,format:0,mode:"normal",style:"",text:" json",type:"code-highlight",version:1},{detail:0,format:0,mode:"normal",style:"",text:":",type:"code-highlight",version:1,highlightType:"operator"},{detail:0,format:0,mode:"normal",style:"",text:" content ",type:"code-highlight",version:1},{detail:0,format:0,mode:"normal",style:"",text:"}",type:"code-highlight",version:1,highlightType:"punctuation"},{detail:0,format:0,mode:"normal",style:"",text:")",type:"code-highlight",version:1,highlightType:"punctuation"},{detail:0,format:0,mode:"normal",style:"",text:";",type:"code-highlight",version:1,highlightType:"punctuation"},{type:"linebreak",version:1},{detail:0,format:0,mode:"normal",style:"",text:"importApi",type:"code-highlight",version:1},{detail:0,format:0,mode:"normal",style:"",text:".",type:"code-highlight",version:1,highlightType:"punctuation"},{detail:0,format:0,mode:"normal",style:"",text:"fromJSON",type:"code-highlight",version:1,highlightType:"function"},{detail:0,format:0,mode:"normal",style:"",text:"(",type:"code-highlight",version:1,highlightType:"punctuation"},{detail:0,format:0,mode:"normal",style:"",text:"content",type:"code-highlight",version:1},{detail:0,format:0,mode:"normal",style:"",text:")",type:"code-highlight",version:1,highlightType:"punctuation"},{detail:0,format:0,mode:"normal",style:"",text:";",type:"code-highlight",version:1,highlightType:"punctuation"}],direction:null,format:"",indent:0,type:"code",version:1,language:"typescript"},{type:"horizontalrule",version:1},{type:"featureCard",version:1,payload:{title:"AI Draft: Weekly Product Update",description:"This structured block can hold AI-generated draft content that reviewers can quickly edit and approve.",tag:"AI Draft"},format:"",indent:0,direction:null,children:[]},{type:"image",version:1,src:"https://images.unsplash.com/photo-1461749280684-dccba630e2f6?auto=format&fit=crop&w=1200&q=80",alt:"Code editor on a laptop",caption:"Image node with caption, center alignment, and persisted dimensions.",alignment:"center",width:780,height:420},{type:"youtube-embed",version:1,src:"https://www.youtube.com/embed/dQw4w9WgXcQ",width:720,height:405,alignment:"center",start:0},{type:"iframe-embed",version:1,src:"https://example.com",width:720,height:405,alignment:"center",title:"Iframe embed example"},{type:"table",version:1,format:"",indent:0,direction:null,children:[{type:"tablerow",version:1,children:[{type:"tablecell",version:1,headerState:3,colSpan:1,rowSpan:1,width:240,backgroundColor:null,children:[Se([D("Feature")])]},{type:"tablecell",version:1,headerState:3,colSpan:1,rowSpan:1,width:320,backgroundColor:null,children:[Se([D("Status")])]}]},{type:"tablerow",version:1,children:[{type:"tablecell",version:1,headerState:0,colSpan:1,rowSpan:1,width:240,backgroundColor:null,children:[Se([D("Visual \u2194 JSON switching")])]},{type:"tablecell",version:1,headerState:0,colSpan:1,rowSpan:1,width:320,backgroundColor:null,children:[Se([D("Round-trip ready \u2705")])]}]}]},Se([D("Use the toolbar, floating toolbar, slash commands (/), and command palette (Ctrl/Cmd+Shift+P) to explore the full preset.")])]}};JSON.stringify(Xo);var{Provider:La,useEditor:Ta}=createEditorSystem(),Tr="Write anything...",Sr="Enter JSON document content...",xr="Enter Markdown content...",Ir="Enter HTML content...",Nr=new Set(["auto","scroll","overlay"]),Sa={json:"Invalid JSON",markdown:"Invalid Markdown",html:"Invalid HTML"};function Wt(e){return e==="visual"?"visual-editor":e}function le(e){return Wt(e)==="visual-editor"}function Zo(e,t){return e.some(o=>Wt(o)===t)}function Wo(e){return e==="json"||e==="markdown"||e==="html"}function Hr(e){let t=e.overflowY;return t&&t!=="visible"?t:e.overflow||t||"visible"}function xa(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 Ia(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=Hr(window.getComputedStyle(n));Nr.has(i)&&o(n),n=n.parentElement;}}t.forEach(n=>{xa(n);});}function Fa(e){if(typeof window<"u"&&typeof window.requestAnimationFrame=="function"){window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>e());});return}globalThis.setTimeout(e,0);}function Fr(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=Hr(n);if(!Nr.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 Ma(e){if(typeof window>"u")return ()=>{};let t=Fr(e),o=()=>{t(),t=Fr(e);};return window.addEventListener("resize",o),()=>{window.removeEventListener("resize",o),t();}}function en(e){let o=e.replace(/\r\n?/g,`
6
+ `).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 Xt=en("");function Mr(e,t,o){return o<=t?t:Math.min(o,Math.max(t,e))}function Oa(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 Na(e,t,o){let r=Array.from(e.children).filter(k=>k instanceof HTMLElement).reduce((k,v)=>{let y=v.getBoundingClientRect(),h=y.top+y.height/2;if(!k)return v;let f=k.getBoundingClientRect(),d=f.top+f.height/2;return Math.abs(h-o)<Math.abs(d-o)?v:k},null)??e.firstElementChild??e,l=e.getBoundingClientRect(),a=r.getBoundingClientRect(),u=Mr(t,l.left+1,l.right-1),m=Mr(o,a.top+1,a.bottom-1);Oa(u,m);}function Ha(e){try{let t=JSON.parse(e);return JSON.stringify(t)}catch{return JSON.stringify(en(e))}}function wt(e,t){let o=t??Xt;return e==="json"?Wn(JSON.stringify(o)):e==="markdown"?Qn(jsonToMarkdown(o)):Zn(jsonToHTML(o))}function Ra(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 Aa(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 Pa(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 za(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 Ba(e){if(!Number.isFinite(e))return "8";let t=Math.floor(e);return t<0?"8":t.toString()}function Qo(e){return pr(e)}function Da(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 Ua(e){return br(e)}function Ka(e){let t=Jt(e);return JSON.stringify(Yo.map(o=>[o,t[o]]))}function Or(e){return yr(e)}var Va=[{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 _a(e,t){return vr(e,t)}function ja(e,t,o){return Er(e,t,o)}var qa={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 $a(e,t){return Cr(e,t,qa)}function Ya(e){if(!e||e.length===0)return [...Ve];let t=new Set,o=[];for(let n of e)!Ve.includes(n)||t.has(n)||(t.add(n),o.push(n));return o.length>0?o:[...Ve]}function Ja(e){if(!e)return "__default__";if(Array.isArray(e)){let r=new Set,l=[];for(let a of e)for(let[u,m]of Object.entries(a)){let k=u.trim();!m||!k||r.has(k)||(r.add(k),l.push(k));}return l.length===0?"__default__":JSON.stringify({allowlist:l,denylist:[]})}let t=r=>{if(!r||r.length===0)return [];let l=new Set,a=[];for(let u of r){let m=u.trim();!m||l.has(m)||(l.add(m),a.push(m));}return a},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 Ga(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 Xa(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 Wa(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(a=>({key:a.key.trim(),ctrlKey:!!a.ctrlKey,metaKey:!!a.metaKey,shiftKey:!!a.shiftKey,altKey:!!a.altKey,preventDefault:a.preventDefault})).filter(a=>a.key.length>0).sort((a,u)=>{let m=`${a.key}:${a.ctrlKey?1:0}:${a.metaKey?1:0}:${a.shiftKey?1:0}:${a.altKey?1:0}`,k=`${u.key}:${u.ctrlKey?1:0}:${u.metaKey?1:0}:${u.shiftKey?1:0}:${u.altKey?1:0}`;return m.localeCompare(k)});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 Qa({isDark:e,toggleTheme:t,visualPlaceholder:o,jsonPlaceholder:n,markdownPlaceholder:i,htmlPlaceholder:r,initialMode:l,availableModes:a,onReady:u,toolbarLayout:m,toolbarVisibility:k,toolbarPosition:v,toolbarAlignment:y,toolbarClassName:h,toolbarStyleVars:f,isToolbarEnabled:d,isToolbarPinned:C,isEditorViewTabsVisible:S,headingOptions:x,paragraphLabel:G,syncHeadingOptionsWithCommands:Y,slashCommandVisibility:A,shortcutConfig:ue,commandPaletteShortcutOnly:re,featureFlags:L,editOnClick:ae}){let{commands:w,hasExtension:X,activeStates:I,lexical:O,extensions:H,export:Z,import:ie}=Ta(),[M,fe]=useState(l),[se,W]=useState({json:"",markdown:"",html:""}),[xe,he]=useState(null),[ze,Ee]=useState(null),[$e,Ie]=useState({isOpen:false,commands:[]}),[pe,Fe]=useState({isOpen:false,query:"",position:null,commands:[]}),[ke,je]=useState({isOpen:false,query:"",position:null,suggestions:[]}),P=useRef(false),V=useMemo(()=>Ya(x),[x]),ce=Y?V:void 0,Me=Y?G:void 0,qe=I.isInCodeBlock===true,ee=useMemo(()=>ja(w,L,qe),[w,L,qe]),Ye=useMemo(()=>g=>Object.prototype.hasOwnProperty.call(L,g)?L[g]!==false:true,[L]),we=useMemo(()=>g=>le(M)&&Ye(g),[M,Ye]),mt=useMemo(()=>$a(k,L),[k,L]),Be=L.draggableBlock!==false,De=Ja(A),Je=useRef(A),Ue=useRef(De),Le=Wa(ue),Oe=useRef(ue),Q=useRef(Le),be=useMemo(()=>Ga(ue?.disabledCommandIds),[ue?.disabledCommandIds]),Ge=useMemo(()=>new Set(be),[be]),nt=useMemo(()=>Ge.size===0?[]:xo({headingOptions:ce,paragraphLabel:Me,isFeatureEnabled:Ye}).filter(g=>Ge.has(g.id)).flatMap(g=>g.shortcuts??[]),[Ge,ce,Me,Ye]);Ue.current!==De&&(Ue.current=De,Je.current=A),Q.current!==Le&&(Q.current=Le,Oe.current=ue);let ye=useRef(kr(["visual-editor"])),rt=useRef({json:false,markdown:false,html:false}),Lt=useRef(0),Ne=useRef(null);useEffect(()=>{Ro(ee,I,e?"dark":"light",we);},[ee,I,e,we]);let gt=useMemo(()=>({injectJSON:K=>{setTimeout(()=>{try{let ge=JSON.parse(K);ie.fromJSON(ge);}catch(ge){console.error("Failed to inject JSON:",ge);return}},100);},getJSON:()=>wt("json",Z.toJSON()),getMarkdown:()=>wt("markdown",Z.toJSON()),getHTML:()=>wt("html",Z.toJSON())}),[Z,ie]);useEffect(()=>{if(!O||!ee)return;let g=ee,E=rn(g,{headingOptions:ce,paragraphLabel:Me,isFeatureEnabled:we,shortcutConfig:Oe.current,commandPaletteShortcutOnly:re});typeof g.registerCommand=="function"&&E.forEach(K=>g.registerCommand(K));let $=ln(g,{headingOptions:ce,paragraphLabel:Me,slashCommandVisibility:Je.current,isFeatureEnabled:we,shortcutConfig:Oe.current});typeof g.setSlashCommands=="function"?g.setSlashCommands($):$.forEach(K=>g.registerSlashCommand?.(K));let J=sn(g,document.body,{headingOptions:ce,paragraphLabel:Me,isFeatureEnabled:we,shortcutConfig:Oe.current,scope:()=>O.getRootElement()});return P.current||(P.current=true,u?.(gt)),()=>{J(),typeof g.unregisterCommand=="function"&&E.forEach(K=>g.unregisterCommand(K.id)),typeof g.setSlashCommands=="function"?g.setSlashCommands([]):$.forEach(K=>g.unregisterSlashCommand?.(K.id));}},[O,ee,gt,u,ce,Me,De,Le,we,re]),useEffect(()=>{let g=()=>O?.getRootElement(),E=Va.filter(J=>L[J.feature]===false);if(E.length===0)return;let $=J=>{let K=g();K&&J.target instanceof Node&&!K.contains(J.target)||!Or(J.target)||!E.some(Pr=>_a(J,Pr))||(J.preventDefault(),J.stopPropagation());};return document.addEventListener("keydown",$,true),()=>{document.removeEventListener("keydown",$,true);}},[O,L]),useEffect(()=>{let g=H.find(E=>E.name==="commandPalette");if(!(!g||!g.subscribe))return g.subscribe((E,$)=>{let J=$.filter(K=>Ge.has(K.id)?false:re?typeof K.shortcut=="string"&&K.shortcut.trim().length>0:true);Ie({isOpen:le(M)?E:false,commands:J});})},[H,Ge,re,M]),useEffect(()=>{if(nt.length===0)return;let g=()=>O?.getRootElement(),E=$=>{let J=g();J&&$.target instanceof Node&&!J.contains($.target)||!Or($.target)||!nt.some(ge=>Xa($,ge))||($.preventDefault(),$.stopPropagation());};return document.addEventListener("keydown",E,true),()=>{document.removeEventListener("keydown",E,true);}},[O,nt]),useEffect(()=>{let g=H.find(E=>E.name==="slashCommand");if(!(!g||!g.subscribe))return g.subscribe(E=>{Fe({isOpen:le(M)?E.isOpen:false,query:le(M)?E.query:"",position:le(M)?E.position:null,commands:le(M)?E.commands:[]});})},[H,M]),useEffect(()=>{let g=H.find(E=>E.name==="emoji");if(!(!g||!g.subscribe))return g.subscribe(E=>{je({isOpen:le(M)?E.isOpen:false,query:le(M)?E.query:"",position:le(M)?E.position:null,suggestions:le(M)?E.suggestions:[]});})},[H,M]),useEffect(()=>{le(M)||(Ie(g=>g.isOpen?{...g,isOpen:false}:g),Fe(g=>g.isOpen||g.query.length>0||g.position!==null||g.commands.length>0?{isOpen:false,query:"",position:null,commands:[]}:g),je(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(()=>!O||!Z?void 0:O.registerUpdateListener(()=>{Lt.current+=1,Go(ye.current,["visual-editor"]);}),[O,Z]);let Tt=g=>{let E=se[g];if(g==="json"){if(!E.trim()){ie.fromJSON(en(""));return}let $=JSON.parse(E);ie.fromJSON($);return}g==="markdown"?ie.fromJSON(markdownToJSON(E)):ie.fromJSON(htmlToJSON(E)),rt.current[g]=false,Go(ye.current,["visual-editor"]);},St=g=>{let E=Z.toJSON()??Xt;return wt(g,E)},Ze=(g,E,$)=>{W(J=>({...J,[g]:E})),rt.current[g]=$?.dirty===true;},it=async g=>{let E=Wt(g);if(E===M||!Zo(a,E))return;let $=M,J=null;try{if(Ee(null),Wo($)){let K=$;rt.current[K]&&(J=K,Tt(K),await new Promise(ge=>setTimeout(ge,50)),J=null);}if(le($)&&!le(E)&&(O&&clearLexicalSelection(O),O?.getRootElement()?.blur()),fe(E),Wo(E)){let K=E;if(!wr(ye.current,K)){he(K),await new Promise(ge=>setTimeout(ge,50));try{J=K;let ge=St(K);Ze(K,ge),Lr(ye.current,K),J=null;}finally{he(null);}}}le(E)&&($==="visual-only"&&Ne.current!==null?setTimeout(()=>O?.focus(),100):Fa(()=>{let ge=O?.getRootElement();ge&&Ia(ge);}));}catch(K){let ge=K instanceof Error?K.message:"Invalid format - could not parse content";J&&Ee({mode:J,error:ge});}},lt=g=>{!ae||M!=="visual-only"||!Zo(a,"visual-editor")||(Ne.current=g,it("visual-editor"));};useEffect(()=>{if(!le(M))return;let g=Ne.current;if(!g)return;Ne.current=null;let E=()=>{let J=O?.getRootElement();J&&Na(J,g.clientX,g.clientY);};if(typeof window<"u"&&typeof window.requestAnimationFrame=="function"){window.requestAnimationFrame(()=>E());return}let $=globalThis.setTimeout(E,0);return ()=>{globalThis.clearTimeout($);}},[O,M]);let Xe=d?jsx(ir,{commands:ee,hasExtension:g=>X(g),activeStates:I,isDark:e,toggleTheme:t,onCommandPaletteOpen:()=>{le(M)&&L.commandPalette!==false&&ee.showCommandPalette();},imageUploadHandler:g=>H.find(E=>E.name==="image")?.config?.uploadHandler?.(g)??Promise.resolve(URL.createObjectURL(g)),layout:m??Zt,toolbarVisibility:mt,toolbarStyleVars:f,headingOptions:V,paragraphLabel:G,classNames:{toolbar:`luthor-toolbar luthor-toolbar--align-${y}${h?` ${h}`:""}`}}):null,Ke=S,at=le(M)&&d&&v==="top",xt=["luthor-editor-top-region",C&&v==="top"&&Ke?"luthor-editor-top-region--pinned":""].filter(Boolean).join(" "),ft=["luthor-editor-toolbar-slot","luthor-editor-toolbar-slot--top",at&&(C&&v==="top"&&!Ke)?"luthor-editor-toolbar-slot--pinned":""].filter(Boolean).join(" "),It=le(M)&&d&&v==="bottom",b=O?.getRootElement()?.closest(".luthor-editor-wrapper")??null,p=Wo(M)?M:null,z=M==="visual-only",B=le(M)||z,_=!Be||!le(M);return jsxs(Fragment,{children:[jsxs("div",{className:`luthor-editor${_?" luthor-editor--draggable-disabled":""}`,"data-mode":M,children:[(Ke||at)&&jsxs("div",{className:xt,children:[Ke&&jsx("div",{className:"luthor-editor-header",children:jsx($n,{mode:M,onModeChange:it,availableModes:a,isConverting:xe})}),at&&jsx("div",{className:ft,children:Xe})]}),jsxs("div",{className:`luthor-editor-visual-shell${B?"":" is-hidden"}${_?" luthor-editor-visual-shell--no-gutter":""}`,"aria-hidden":!B,children:[!_&&jsx("div",{className:"luthor-editor-visual-gutter","aria-hidden":"true"}),jsx(RichText,{placeholder:o,nonEditableVisualMode:z,onEditIntent:z?lt: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"}})]}),p&&jsxs("div",{className:"luthor-source-panel",children:[ze&&ze.mode===p&&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:Sa[p]}),jsx("p",{children:ze.error}),jsx("small",{children:"Fix the errors above and try switching modes again"})]})]}),p==="json"&&jsx(fo,{value:se.json,onChange:g=>Ze("json",g,{dirty:true}),placeholder:n}),p==="markdown"&&jsx(fo,{value:se.markdown,onChange:g=>Ze("markdown",g,{dirty:true}),placeholder:i,className:"luthor-source-view--wrapped",wrap:"soft"}),p==="html"&&jsx(fo,{value:se.html,onChange:g=>Ze("html",g,{dirty:true}),placeholder:r,className:"luthor-source-view--wrapped",wrap:"soft"})]})]}),jsx(qn,{editor:O,commands:ee,editorTheme:e?"dark":"light",disabled:!le(M)}),It&&jsx("div",{className:"luthor-editor-toolbar-slot luthor-editor-toolbar-slot--bottom",children:Xe}),le(M)&&jsx(Fn,{isOpen:$e.isOpen,onClose:()=>ee.hideCommandPalette(),commands:$e.commands}),le(M)&&jsx(An,{isOpen:pe.isOpen,query:pe.query,position:pe.position,portalContainer:b,commands:pe.commands,onClose:()=>ee.closeSlashMenu?.(),onExecute:g=>{ee.executeSlashCommand?.(g);}}),le(M)&&jsx(Nn,{isOpen:ke.isOpen,query:ke.query,position:ke.position,portalContainer:b,suggestions:ke.suggestions,onClose:()=>ee.closeEmojiSuggestions?.(),onExecute:g=>{ee.executeEmojiSuggestion?.(g);}})]})}var To=forwardRef(({className:e,onReady:t,initialTheme:o="light",onThemeChange:n,theme:i,defaultContent:r,showDefaultContent:l=true,placeholder:a=Tr,defaultEditorView:u,initialMode:m="visual-editor",isEditorViewTabsVisible:k,isEditorViewsTabVisible:v,availableModes:y=["visual-editor","visual-only","json","markdown","html"],variantClassName:h,toolbarLayout:f,toolbarVisibility:d,toolbarPosition:C="top",toolbarAlignment:S="left",toolbarClassName:x,toolbarStyleVars:G,quoteClassName:Y,quoteStyleVars:A,defaultSettings:ue,editorThemeOverrides:re,isToolbarEnabled:L=true,isToolbarPinned:ae=false,fontFamilyOptions:w,fontSizeOptions:X,lineHeightOptions:I,minimumDefaultLineHeight:O=1.5,scaleByRatio:H=false,headingOptions:Z,paragraphLabel:ie,syncHeadingOptionsWithCommands:M=true,slashCommandVisibility:fe,shortcutConfig:se,commandPaletteShortcutOnly:W=false,editOnClick:xe=true,isDraggableBoxEnabled:he,featureFlags:ze,syntaxHighlighting:Ee,codeHighlightProvider:$e,loadCodeHighlightProvider:Ie,maxAutoDetectCodeLength:pe,isCopyAllowed:Fe=true,languageOptions:ke,maxListIndentation:je=8},P)=>{let[V,ce]=useState(o),Me=useRef(null),qe=V==="dark",ee=Wt(u??m),Ye=Zo(y,ee)?ee:Wt(y[0]??"visual-editor"),we=k??v??true,mt=()=>ce(qe?"light":"dark"),Be=useMemo(()=>typeof a=="string"?{visual:a,json:Sr,markdown:xr,html:Ir}:{visual:a.visual??Tr,json:a.json??Sr,markdown:a.markdown??xr,html:a.html??Ir},[a]);useEffect(()=>{ce(o);},[o]),useEffect(()=>{n?.(V);},[V,n]),useEffect(()=>{if(!ae||C!=="top")return;let E=Me.current;if(E)return Ma(E)},[ae,C]);let De=useMemo(()=>Ra(w),[w]),Je=useMemo(()=>Aa(X),[X]),Ue=useMemo(()=>Pa(I),[I]),Le=useMemo(()=>za(O),[O]),Oe=useMemo(()=>Ba(je),[je]),Q=Ee??"unset",be=typeof pe=="number"?pe.toString():"unset",Ge=useMemo(()=>Da(ke),[ke]),nt=Fe?"copy-on":"copy-off",ye=useMemo(()=>typeof he!="boolean"?ze:{...ze??{},draggableBlock:he},[ze,he]),rt=useMemo(()=>Ka(ye),[ye]),Lt=useMemo(()=>Jt(ye),[ye]),Ne=`${De}::${Je}::${Ue}::${Le}::${Oe}::${H?"ratio-on":"ratio-off"}::${Q}::${be}::${nt}::${Ge}::${rt}`,gt=useRef(w),Tt=useRef(X),St=useRef(I),Ze=useRef(O),it=useRef(ye),lt=useRef(ke),Xe=useRef($e),Ke=useRef(Ie),at=useRef(Ne);(at.current!==Ne||Xe.current!==$e||Ke.current!==Ie)&&(at.current=Ne,gt.current=w,Tt.current=X,St.current=I,Ze.current=O,it.current=ye,lt.current=ke,Xe.current=$e,Ke.current=Ie);let ht=useRef(null);if(!ht.current||ht.current.key!==Ne){let E={fontFamilyOptions:gt.current,fontSizeOptions:Tt.current,lineHeightOptions:St.current,minimumDefaultLineHeight:Ze.current,maxListIndentation:Number(Oe),scaleByRatio:H,...Ee!==void 0?{syntaxHighlighting:Ee}:{},...Xe.current!==void 0?{codeHighlightProvider:Xe.current}:{},...Ke.current!==void 0?{loadCodeHighlightProvider:Ke.current}:{},...pe!==void 0?{maxAutoDetectCodeLength:pe}:{},isCopyAllowed:Fe,...lt.current!==void 0?{languageOptions:lt.current}:{},...typeof he=="boolean"?{isDraggableBoxEnabled:he}:{},...it.current?{featureFlags:it.current}:{}};ht.current={key:Ne,value:Gt(E)};}let xt=ht.current.value,Qt=useMemo(()=>{let E=mergeThemes(defaultLuthorTheme,i??{});return Y?{...E,quote:`${E.quote??""} ${Y}`.trim()}:E},[i,Y]),ft=useMemo(()=>Qo(re),[re]),It=useMemo(()=>Qo(A),[A]),b=useMemo(()=>Ua(ue),[ue]),p=useMemo(()=>Qo(b),[b]),z=useMemo(()=>{let E=b,$=createEditorThemeStyleVars(re),J=A,K={"--luthor-default-line-height":Le};return !E&&!$&&!J?K:{...E??{},...$,...J??{},...K}},[Le,b,re,A,p,ft,It]),[B,_]=useState(null);useImperativeHandle(P,()=>B??{injectJSON:()=>{},getJSON:()=>wt("json",Xt),getMarkdown:()=>wt("markdown",Xt),getHTML:()=>wt("html",Xt)},[B]);let g=E=>{_(E),l&&r===void 0?E.injectJSON(JSON.stringify(Xo)):r&&E.injectJSON(Ha(r)),t?.(E);};return jsx("div",{ref:Me,className:`luthor-preset luthor-preset-extensive luthor-editor-wrapper${ae?" luthor-editor-wrapper--toolbar-pinned":""} ${h||""} ${e||""}`.trim(),"data-editor-theme":V,style:z,children:jsx(La,{extensions:xt,config:{theme:Qt},children:jsx(Qa,{isDark:qe,toggleTheme:mt,visualPlaceholder:Be.visual,jsonPlaceholder:Be.json,markdownPlaceholder:Be.markdown,htmlPlaceholder:Be.html,initialMode:Ye,availableModes:y,onReady:g,toolbarLayout:f,toolbarVisibility:d,toolbarPosition:C,toolbarAlignment:S,toolbarClassName:x,toolbarStyleVars:G,isToolbarEnabled:L,isToolbarPinned:ae,isEditorViewTabsVisible:we,headingOptions:Z,paragraphLabel:ie,syncHeadingOptionsWithCommands:M,slashCommandVisibility:fe,shortcutConfig:se,commandPaletteShortcutOnly:W,featureFlags:Lt,editOnClick:xe})})})});To.displayName="ExtensiveEditor";var Rr=["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"],Ar={id:"extensive",label:"Extensive Editor",description:"Complete editing preset with all core features enabled.",extensions:[...Jo],components:{Editor:To},toolbar:[...Rr],config:Yn("extensive","Write anything..."),css:"extensive/styles.css"};function es(e={}){return {...Ar,extensions:[...Gt({fontFamilyOptions:e.fontFamilyOptions,fontSizeOptions:e.fontSizeOptions,lineHeightOptions:e.lineHeightOptions,minimumDefaultLineHeight:e.minimumDefaultLineHeight,maxListIndentation:e.maxListIndentation,isCopyAllowed:e.isCopyAllowed,languageOptions:e.languageOptions})]}}export{st as $,Fo as A,kr as Aa,gn as B,Go as Ba,hn as C,wr as Ca,fn as D,Lr as Da,ss as E,To as Ea,pn as F,Rr as Fa,us as G,Ar as Ga,uo as H,es as Ha,bn as I,yn as J,co as K,vn as L,Cn as M,En as N,kn as O,wn as P,Mo as Q,Ln as R,Tn as S,Nt as T,Sn as U,Fn as V,Nn as W,An as X,N as Y,Ho as Z,jt as _,ts as a,Bn as aa,Ve as b,Dn as ba,ns as c,Ro as ca,Zt as d,Un as da,xo as e,qn as ea,rn as f,$n as fa,ln as g,fo as ga,sn as h,Yn as ha,to as i,Wn as ia,oo as j,Qn as ja,no as k,Zn as ka,ro as l,sl as la,io as m,ul as ma,un as n,cl as na,Ft as o,ir as oa,pt as p,mr as pa,lo as q,Jt as qa,ao as r,gr as ra,so as s,Gt as sa,cn as t,Jo as ta,dn as u,pr as ua,Io as v,br as va,Mt as w,yr as wa,bt as x,vr as xa,mn as y,Cr as ya,Ot as z,Er as za};
@@ -1 +1 @@
1
- import {f as f$1,e,d}from'./chunk-OYT6CNV2.js';import {b}from'./chunk-XZATJCFW.js';import {ha,sa}from'./chunk-NM2K6UES.js';import {forwardRef}from'react';import {jsx}from'react/jsx-runtime';var a=d,f=e,t=forwardRef(({className:E,variantClassName:m,toolbarClassName:p,toolbarLayout:c,initialMode:n="visual",defaultEditorView:l,...M},D)=>jsx(f$1,{ref:D,...M,className:b("luthor-preset-md-editor",E),variantClassName:b("luthor-preset-md-editor__variant",m),toolbarClassName:b("luthor-preset-md-editor__toolbar",p),sourceFormat:"markdown",initialMode:n,defaultEditorView:l,toolbarLayout:c??f}));t.displayName="MDEditor";var u={id:"md-editor",label:"MD Editor",description:"Markdown-native feature set with visual, JSON, and MD source views.",extensions:sa({featureFlags:a}),components:{Editor:t},toolbar:["undo","redo","blockFormat","quote","bold","italic","strikethrough","code","codeBlock","link","unorderedList","orderedList","checkList","horizontalRule"],config:ha("md-editor","Write markdown..."),css:"md-editor/styles.css"};export{t as a,u as b};
1
+ import {f as f$1,e,d}from'./chunk-OP2P26RL.js';import {b}from'./chunk-KMBYB4ZH.js';import {ha,sa}from'./chunk-WWWLNSEV.js';import {forwardRef}from'react';import {jsx}from'react/jsx-runtime';var a=d,f=e,t=forwardRef(({className:E,variantClassName:m,toolbarClassName:p,toolbarLayout:c,initialMode:n="visual",defaultEditorView:l,...M},D)=>jsx(f$1,{ref:D,...M,className:b("luthor-preset-md-editor",E),variantClassName:b("luthor-preset-md-editor__variant",m),toolbarClassName:b("luthor-preset-md-editor__toolbar",p),sourceFormat:"markdown",initialMode:n,defaultEditorView:l,toolbarLayout:c??f}));t.displayName="MDEditor";var u={id:"md-editor",label:"MD Editor",description:"Markdown-native feature set with visual, JSON, and MD source views.",extensions:sa({featureFlags:a}),components:{Editor:t},toolbar:["undo","redo","blockFormat","quote","bold","italic","strikethrough","code","codeBlock","link","unorderedList","orderedList","checkList","horizontalRule"],config:ha("md-editor","Write markdown..."),css:"md-editor/styles.css"};export{t as a,u as b};
@@ -1 +1 @@
1
- import {a,b as b$1}from'./chunk-XZATJCFW.js';import {Ea,ha,sa}from'./chunk-NM2K6UES.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","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
+ import {a,b as b$1}from'./chunk-KMBYB4ZH.js';import {Ea,ha,sa}from'./chunk-WWWLNSEV.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","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};