UNPKG

tiptap-editor-react

Version:

A modern WYSIWYG rich text editor based on tiptap and shadcn ui for React

1 lines 177 kB
"use strict";var Ye=Object.defineProperty;var Je=(e,t,n)=>t in e?Ye(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var F=(e,t,n)=>Je(e,typeof t!="symbol"?t+"":t,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("./tiptap-BhYF9Ndj.cjs"),w=require("./vendor-Dp07eU0H.cjs"),o=require("react/jsx-runtime"),f=require("react"),D=require("lucide-react"),s=require("./RichTextEditor-D7AFpV3M.cjs"),p=require("./index-DGpT32KX.cjs"),Qe=require("@radix-ui/react-tabs"),ae=require("shiki"),et=require("@radix-ui/react-select"),tt=require("@radix-ui/react-slot"),pe=require("tippy.js"),nt=require("react-image-crop"),it=require("@radix-ui/react-checkbox"),we=require("scroll-into-view-if-needed"),ot=require("docx"),V=require("prosemirror-docx");function le(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const z=le(f),W=le(Qe),E=le(et),_e=le(it),ye=f.forwardRef(({asChild:e,...t},n)=>{var r;const i=s.icons[t.icon],a=e?tt.Slot:s.Button;return o.jsxs(s.Tooltip,{children:[o.jsx(s.TooltipTrigger,{asChild:!0,children:o.jsx(a,{className:"richtext-h-[32px] richtext-min-w-24 richtext-overflow-hidden richtext-px-[5px] richtext-py-0",disabled:t==null?void 0:t.disabled,ref:n,variant:"ghost",...t,children:o.jsxs("div",{className:"richtext-flex richtext-h-full richtext-items-center richtext-font-normal",children:[(t==null?void 0:t.title)&&o.jsx("div",{className:"richtext-grow richtext-truncate richtext-text-left richtext-text-sm",children:t==null?void 0:t.title}),i&&o.jsx(i,{className:"richtext-ml-1 richtext-size-3 richtext-shrink-0 richtext-text-zinc-500"})]})})}),o.jsx(s.TooltipContent,{children:o.jsxs("div",{className:"richtext-flex richtext-max-w-24 richtext-flex-col richtext-items-center richtext-text-center",children:[(t==null?void 0:t.tooltip)&&o.jsx("div",{children:t==null?void 0:t.tooltip}),o.jsx("div",{className:"richtext-flex",children:!!((r=t==null?void 0:t.shortcutKeys)!=null&&r.length)&&o.jsx("span",{children:s.getShortcutKeys(t==null?void 0:t.shortcutKeys)})})]})})]})}),at=g.Bold.extend({addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),button:({editor:t,t:n})=>({component:s.ActionButton,componentProps:{action:()=>t.commands.toggleBold(),isActive:()=>t.isActive("bold")||!1,disabled:!t.can().toggleBold(),icon:"Bold",shortcutKeys:["mod","B"],tooltip:n("editor.bold.tooltip")}})}}}),rt=g.Italic.extend({addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),button({editor:t,t:n}){return{component:s.ActionButton,componentProps:{action:()=>t.commands.toggleItalic(),isActive:()=>t.isActive("italic")||!1,disabled:!t.can().toggleItalic(),shortcutKeys:["mod","I"],icon:"Italic",tooltip:n("editor.italic.tooltip")}}}}}}),st=g.Underline.extend({addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),button({editor:t,t:n}){return{component:s.ActionButton,componentProps:{action:()=>t.commands.toggleUnderline(),isActive:()=>t.isActive("underline")||!1,disabled:!t.can().toggleUnderline(),icon:"Underline",shortcutKeys:["mod","U"],tooltip:n("editor.underline.tooltip")}}}}}}),ct=g.Strike.extend({addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),button:({editor:t,t:n})=>({component:s.ActionButton,componentProps:{action:()=>t.commands.toggleStrike(),isActive:()=>t.isActive("strike")||!1,disabled:!t.can().toggleStrike(),icon:"Strikethrough",shortcutKeys:["shift","mod","S"],tooltip:n("editor.strike.tooltip")}})}}}),lt=g.Code.extend({addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),button:({editor:t,t:n})=>({component:s.ActionButton,componentProps:{action:()=>t.commands.toggleCode(),isActive:()=>t.isActive("code")||!1,disabled:!t.can().toggleCode(),icon:"Code",shortcutKeys:["mod","E"],tooltip:n("editor.code.tooltip")}})}}});let U,ne;const he=new Set,me=new Set;function dt(){return U}function ut(e){if(!U&&!ne){const t=e.themes.filter(i=>!!i&&i in ae.bundledThemes),n=e.languages.filter(i=>!!i&&i in ae.bundledLanguages);return ne=ae.createHighlighter({themes:t,langs:n}).then(i=>{U=i}),ne}if(ne)return ne}async function De(e){return U&&!U.getLoadedThemes().includes(e)&&!me.has(e)&&e in ae.bundledThemes?(me.add(e),await U.loadTheme(e),me.delete(e),!0):!1}async function He(e){return U&&!U.getLoadedLanguages().includes(e)&&!he.has(e)&&e in ae.bundledLanguages?(he.add(e),await U.loadLanguage(e),he.delete(e),!0):!1}async function ht({doc:e,name:t,defaultTheme:n,defaultLanguage:i}){const a=g.findChildren(e,l=>l.type.name===t),r=[...a.map(l=>l.node.attrs.theme),n],c=[...a.map(l=>l.node.attrs.language),i];U?await Promise.all([...r.flatMap(l=>De(l)),...c.flatMap(l=>!!l&&He(l))]):await ut({languages:c,themes:r})}function Ce({doc:e,name:t,defaultTheme:n,defaultLanguage:i}){const a=[];return g.findChildren(e,c=>c.type.name===t).forEach(c=>{let l=c.pos+1,d=c.node.attrs.language||i;const h=c.node.attrs.theme||n,u=dt();if(!u)return;u.getLoadedLanguages().includes(d)||(d="plaintext");const _=u.getLoadedThemes().includes(h)?h:u.getLoadedThemes()[0],m=u.codeToTokensBase(c.node.textContent,{lang:d,theme:_});for(const x of m){for(const y of x){const v=l+y.content.length,T=w.Decoration.inline(l,v,{style:`color: ${y.color}`});a.push(T),l=v}l+=1}}),w.DecorationSet.create(e,a)}function mt({name:e,defaultLanguage:t,defaultTheme:n}){const i=new w.Plugin({key:new w.PluginKey("shiki"),view(a){class r{constructor(){this.initDecorations()}update(){this.checkUndecoratedBlocks()}destroy(){}async initDecorations(){const l=a.state.doc;await ht({doc:l,name:e,defaultLanguage:t,defaultTheme:n});const d=a.state.tr.setMeta("shikiPluginForceDecoration",!0);a.dispatch(d)}async checkUndecoratedBlocks(){const l=g.findChildren(a.state.doc,u=>u.type.name===e);if((await Promise.all(l.flatMap(u=>[De(u.node.attrs.theme),He(u.node.attrs.language)]))).includes(!0)){const u=a.state.tr.setMeta("shikiPluginForceDecoration",!0);a.dispatch(u)}}}return new r},state:{init:(a,{doc:r})=>Ce({doc:r,name:e,defaultLanguage:t,defaultTheme:n}),apply:(a,r,c,l)=>{const d=c.selection.$head.parent.type.name,h=l.selection.$head.parent.type.name,u=g.findChildren(c.doc,x=>x.type.name===e),_=g.findChildren(l.doc,x=>x.type.name===e),m=a.docChanged&&([d,h].includes(e)||_.length!==u.length||a.steps.some(x=>x.from!==void 0&&x.to!==void 0&&u.some(y=>y.pos>=x.from&&y.pos+y.node.nodeSize<=x.to)));return a.getMeta("shikiPluginForceDecoration")||m?Ce({doc:a.doc,name:e,defaultLanguage:t,defaultTheme:n}):r.map(a.mapping,a.doc)}},props:{decorations(a){return i.getState(a)}}});return i}function ft({action:e,languages:t,...n}){const i=r=>{e(r)},a=f.useMemo(()=>t==null?void 0:t.map(r=>({title:p.MAP_LANGUAGE_CODE_LABELS[r]||r,language:r})),[t]);return o.jsxs(s.DropdownMenu,{children:[o.jsx(s.DropdownMenuTrigger,{disabled:n==null?void 0:n.disabled,asChild:!0,children:o.jsx(s.ActionButton,{tooltip:n==null?void 0:n.tooltip,disabled:n==null?void 0:n.disabled,icon:n==null?void 0:n.icon})}),o.jsx(s.DropdownMenuContent,{className:"richtext-w-full !richtext-max-h-[180px] !richtext-overflow-y-scroll",children:a==null?void 0:a.map(r=>o.jsx(s.DropdownMenuItem,{onClick:()=>i(r.language),children:o.jsx("div",{className:"richtext-h-full richtext-ml-1",children:r.title})},`codeblock-${r.title}`))})]})}const gt=E.Root,_t=E.Value,Re=z.forwardRef(({className:e,children:t,...n},i)=>o.jsxs(E.Trigger,{ref:i,className:s.cn("richtext-flex richtext-h-10 richtext-w-full richtext-items-center richtext-justify-between richtext-rounded-md richtext-border richtext-border-input richtext-bg-background richtext-px-3 richtext-py-2 richtext-text-sm richtext-ring-offset-background placeholder:richtext-text-muted-foreground focus:richtext-outline-none focus:richtext-ring-2 focus:richtext-ring-ring focus:richtext-ring-offset-2 disabled:richtext-cursor-not-allowed disabled:richtext-opacity-50 [&>span]:richtext-line-clamp-1",e),...n,children:[t,o.jsx(E.Icon,{asChild:!0,children:o.jsx(D.ChevronDown,{className:"richtext-h-4 richtext-w-4 richtext-opacity-50"})})]}));Re.displayName=E.Trigger.displayName;const ze=z.forwardRef(({className:e,...t},n)=>o.jsx(E.ScrollUpButton,{ref:n,className:s.cn("richtext-flex richtext-cursor-default richtext-items-center richtext-justify-center richtext-py-1",e),...t,children:o.jsx(D.ChevronUp,{className:"richtext-h-4 richtext-w-4"})}));ze.displayName=E.ScrollUpButton.displayName;const Be=z.forwardRef(({className:e,...t},n)=>o.jsx(E.ScrollDownButton,{ref:n,className:s.cn("richtext-flex richtext-cursor-default richtext-items-center richtext-justify-center richtext-py-1",e),...t,children:o.jsx(D.ChevronDown,{className:"richtext-h-4 richtext-w-4"})}));Be.displayName=E.ScrollDownButton.displayName;const Pe=z.forwardRef(({className:e,children:t,position:n="popper",...i},a)=>o.jsx(E.Portal,{children:o.jsxs(E.Content,{ref:a,className:s.cn("richtext-relative richtext-z-50 richtext-max-h-60 richtext-overflow-y-auto richtext-min-w-[8rem] richtext-overflow-hidden richtext-rounded-md richtext-border richtext-bg-popover richtext-text-popover-foreground richtext-shadow-md data-[state=open]:richtext-animate-in data-[state=closed]:richtext-animate-out data-[state=closed]:richtext-fade-out-0 data-[state=open]:richtext-fade-in-0 data-[state=closed]:richtext-zoom-out-95 data-[state=open]:richtext-zoom-in-95 data-[side=bottom]:richtext-slide-in-from-top-2 data-[side=left]:richtext-slide-in-from-right-2 data-[side=right]:richtext-slide-in-from-left-2 data-[side=top]:richtext-slide-in-from-bottom-2",n==="popper"&&"data-[side=bottom]:richtext-translate-y-1 data-[side=left]:richtext--translate-x-1 data-[side=right]:richtext-translate-x-1 data-[side=top]:richtext--translate-y-1",e),position:n,...i,children:[o.jsx(ze,{}),o.jsx(E.Viewport,{className:s.cn("richtext-p-1",n==="popper"&&"richtext-h-[var(--radix-select-trigger-height)] richtext-w-full richtext-min-w-[var(--radix-select-trigger-width)]"),children:t}),o.jsx(Be,{})]})}));Pe.displayName=E.Content.displayName;const xt=z.forwardRef(({className:e,...t},n)=>o.jsx(E.Label,{ref:n,className:s.cn("richtext-py-1.5 richtext-pl-8 richtext-pr-2 richtext-text-sm richtext-font-semibold",e),...t}));xt.displayName=E.Label.displayName;const xe=z.forwardRef(({className:e,children:t,...n},i)=>o.jsxs(E.Item,{ref:i,className:s.cn("richtext-relative richtext-flex richtext-w-full richtext-cursor-default richtext-select-none richtext-items-center richtext-rounded-sm richtext-py-1.5 richtext-pl-8 richtext-pr-2 richtext-text-sm richtext-outline-none focus:richtext-bg-accent focus:richtext-text-accent-foreground data-[disabled]:richtext-pointer-events-none data-[disabled]:richtext-opacity-50",e),...n,children:[o.jsx("span",{className:"richtext-absolute richtext-left-2 richtext-flex richtext-h-3.5 richtext-w-3.5 richtext-items-center richtext-justify-center",children:o.jsx(E.ItemIndicator,{children:o.jsx(D.Check,{className:"richtext-h-4 richtext-w-4"})})}),o.jsx(E.ItemText,{children:t})]}));xe.displayName=E.Item.displayName;const bt=z.forwardRef(({className:e,...t},n)=>o.jsx(E.Separator,{ref:n,className:s.cn("richtext--mx-1 richtext-my-1 richtext-h-px richtext-bg-muted",e),...t}));bt.displayName=E.Separator.displayName;function pt(){const[e,t]=f.useState(!1);return{isCopied:e,copyToClipboard:async i=>{try{await navigator.clipboard.writeText(i),t(!0),setTimeout(()=>t(!1),2e3)}catch(a){console.error("Failed to copy text: ",a),t(!1)}}}}const wt="_wrap_134f4_1",yt="_maxHeight_134f4_10",vt="_btnCopy_134f4_13",kt="_btnDelete_134f4_14",Ct="_blockInfo_134f4_18",jt="_blockInfoEditable_134f4_28",At="_selectLang_134f4_32",Tt="_copied_134f4_58",$={wrap:wt,maxHeight:yt,btnCopy:vt,btnDelete:kt,blockInfo:Ct,blockInfoEditable:jt,selectLang:At,copied:Tt};function St({editor:e,node:{attrs:t},updateAttributes:n,extension:i}){var m,x;const{isCopied:a,copyToClipboard:r}=pt(),c=f.useMemo(()=>{var y;return(y=i.options.languages)!=null&&y.length?i.options.languages:p.DEFAULT_LANGUAGE_CODE_BLOCK},[i.options.languages]),l=s.useEditableEditor(),d=(x=(m=e==null?void 0:e.options)==null?void 0:m.editorProps)==null?void 0:x.print,{language:h}=t,u=f.useRef(null),_=f.useCallback(()=>s.deleteNode(Oe.name,e),[e]);return o.jsxs(g.NodeViewWrapper,{className:w.clsx($.wrap,!d&&$.maxHeight,"render-wrapper"),children:[o.jsxs("div",{className:w.clsx($.blockInfo,{[$.blockInfoEditable]:!l}),children:[o.jsx("span",{className:w.clsx($.btnCopy,a&&$.copied),onClick:()=>r(u.current.innerText),children:a?o.jsx(D.CopyCheck,{size:16}):o.jsx(D.Copy,{size:16})}),o.jsx("span",{className:$.btnDelete,onClick:_,children:o.jsx(s.IconComponent,{name:"Trash2"})}),o.jsx("div",{className:$.selectLang,children:o.jsxs(gt,{defaultValue:h||"auto",disabled:!l,onValueChange:y=>n({language:y}),children:[o.jsx(Re,{children:o.jsx(_t,{placeholder:"Language"})}),o.jsxs(Pe,{className:"richtext-max-h-60 richtext-overflow-y-auto",children:[o.jsx(xe,{value:"auto",children:"Auto"}),c.map((y,v)=>o.jsx(xe,{value:y,children:y.charAt(0).toUpperCase()+y.slice(1)},`code-lang-${v}`))]})]})})]}),o.jsx("pre",{ref:u,children:o.jsx(g.NodeViewContent,{as:"code"})})]})}const Oe=g.CodeBlock.extend({addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),languages:[],button:({editor:t,t:n,extension:i})=>{var r,c,l;const a=(c=(r=i==null?void 0:i.options)==null?void 0:r.languages)!=null&&c.length?(l=i==null?void 0:i.options)==null?void 0:l.languages:p.DEFAULT_LANGUAGE_CODE_BLOCK;return{component:ft,componentProps:{action:(d="js")=>t.commands.setCodeBlock({language:d}),isActive:()=>t.isActive("codeBlock")||!1,disabled:!t.can().toggleCodeBlock(),icon:"Code2",tooltip:n("editor.codeblock.tooltip"),languages:a}}}}},addNodeView(){return g.ReactNodeViewRenderer(St)},addProseMirrorPlugins(){var e;return[...((e=this.parent)==null?void 0:e.call(this))||[],mt({name:this.name,defaultLanguage:null,defaultTheme:this.options.defaultTheme})]}});function Nt(e){var a,r,c;const{t,lang:n}=p.useLocale(),i=f.useMemo(()=>{var h;const l=(h=e==null?void 0:e.items)==null?void 0:h.find(u=>u.isActive());return l&&!l.default?{...l}:{title:e.tooltip,font:t("editor.fontFamily.default.tooltip"),isActive:()=>!1,disabled:!1,action:()=>e.editor.chain().focus().unsetFontFamily().run()}},[t,n,e]);return o.jsxs(s.DropdownMenu,{children:[o.jsx(s.DropdownMenuTrigger,{asChild:!0,disabled:e==null?void 0:e.disabled,children:o.jsx(ye,{disabled:e==null?void 0:e.disabled,icon:"MenuDown",title:((a=i==null?void 0:i.font)==null?void 0:a.length)>7?`${(r=i==null?void 0:i.font)==null?void 0:r.slice(0,6)}...`:i==null?void 0:i.font,tooltip:e==null?void 0:e.tooltip})}),o.jsx(s.DropdownMenuContent,{className:"richtext-w-full",children:(c=e==null?void 0:e.items)==null?void 0:c.map((l,d)=>{const h=l.font===t("editor.fontFamily.default.tooltip")?{}:{fontFamily:l.font};return o.jsxs(f.Fragment,{children:[o.jsx(s.DropdownMenuCheckboxItem,{checked:(i==null?void 0:i.font)===l.font,onClick:l.action,children:o.jsx("div",{className:"richtext-ml-1 richtext-h-full",style:h,children:l.font})}),l.font===t("editor.fontFamily.default.tooltip")&&o.jsx(s.DropdownMenuSeparator,{})]},`font-family-${d}`)})})]})}const Lt=g.FontFamily.extend({addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),fontFamilyList:p.DEFAULT_FONT_FAMILY_LIST,button({editor:t,extension:n,t:i}){var h;const{extensions:a=[]}=t.extensionManager??[],r=s.ensureNameValueOptions(((h=n==null?void 0:n.options)==null?void 0:h.fontFamilyList)||[]),c=a.find(u=>u.name==="base-kit"),l=r.map(u=>({action:()=>{t.chain().focus().setFontFamily(u.value).run()},isActive:()=>t.isActive("textStyle",{fontFamily:u.value})||!1,disabled:!t.can().setFontFamily(u.value),title:u.name,font:u.value}));c&&c.options.textStyle!==!1&&l.unshift({action:()=>t.chain().focus().unsetFontFamily().run(),isActive:()=>!1,disabled:!1,font:i("editor.fontFamily.default.tooltip"),title:i("editor.fontFamily.tooltip")});const d=l.filter(u=>u.disabled).length===l.length;return{component:Nt,componentProps:{tooltip:i("editor.fontFamily.tooltip"),disabled:d,items:l,editor:t}}}}}});function Mt(e){var n;const t=f.useMemo(()=>{var r;const i=(r=e==null?void 0:e.items)==null?void 0:r.find(c=>c.isActive());return i&&!i.default?{...i}:{title:e.tooltip,level:0,isActive:()=>!1}},[e]);return o.jsxs(s.DropdownMenu,{children:[o.jsx(s.DropdownMenuTrigger,{asChild:!0,disabled:e==null?void 0:e.disabled,children:o.jsx(ye,{disabled:e==null?void 0:e.disabled,icon:"MenuDown",title:t==null?void 0:t.title,tooltip:e==null?void 0:e.tooltip})}),o.jsx(s.DropdownMenuContent,{className:"richtext-w-full",children:(n=e==null?void 0:e.items)==null?void 0:n.map((i,a)=>{var r,c;return o.jsxs(f.Fragment,{children:[o.jsxs(s.DropdownMenuCheckboxItem,{checked:(t==null?void 0:t.title)===i.title,onClick:i.action,children:[o.jsx("div",{className:`heading- richtext-ml-1 richtext-h-full${i.level}`,children:i.title}),!!((r=i==null?void 0:i.shortcutKeys)!=null&&r.length)&&o.jsx(s.DropdownMenuShortcut,{className:"richtext-pl-4",children:(c=i==null?void 0:i.shortcutKeys)==null?void 0:c.map(l=>s.getShortcutKey(l)).join(" ")})]}),i.level===0&&o.jsx(s.DropdownMenuSeparator,{})]},`heading-k-${a}`)})})]})}const It=g.Heading.extend({addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),levels:[1,2,3,4,5,6],button({editor:t,extension:n,t:i}){var h;const{extensions:a=[]}=t.extensionManager??[],r=((h=n.options)==null?void 0:h.levels)||[],c=a.find(u=>u.name==="base-kit"),l=r.map(u=>({action:()=>t.commands.toggleHeading({level:u}),isActive:()=>t.isActive("heading",{level:u})||!1,disabled:!t.can().toggleHeading({level:u}),title:i(`editor.heading.h${u}.tooltip`),level:u,shortcutKeys:["alt","mod",`${u}`]}));c&&c.options.paragraph!==!1&&l.unshift({action:()=>t.commands.setParagraph(),isActive:()=>t.isActive("paragraph")||!1,disabled:!t.can().setParagraph(),level:0,title:i("editor.paragraph.tooltip"),shortcutKeys:["alt","mod","0"]});const d=l.filter(u=>u.disabled).length===l.length;return{component:Mt,componentProps:{tooltip:i("editor.heading.tooltip"),disabled:d,items:l,editor:t}}}}}}),ve=W.Root,de=z.forwardRef(({className:e,...t},n)=>o.jsx(W.List,{ref:n,className:s.cn("richtext-inline-flex richtext-h-10 richtext-items-center richtext-justify-center richtext-rounded-md richtext-bg-muted richtext-text-muted-foreground",e),...t}));de.displayName=W.List.displayName;const Q=z.forwardRef(({className:e,...t},n)=>o.jsx(W.Trigger,{ref:n,className:s.cn("richtext-inline-flex richtext-items-center richtext-justify-center richtext-whitespace-nowrap richtext-rounded-sm richtext-px-3 richtext-py-1.5 richtext-text-sm richtext-font-medium richtext-ring-offset-background richtext-transition-all focus-visible:richtext-outline-none focus-visible:richtext-ring-2 focus-visible:richtext-ring-ring focus-visible:richtext-ring-offset-2 disabled:richtext-pointer-events-none disabled:richtext-opacity-50 data-[state=active]:richtext-bg-background data-[state=active]:richtext-text-foreground data-[state=active]:richtext-shadow-sm",e),...t}));Q.displayName=W.Trigger.displayName;const ee=z.forwardRef(({className:e,...t},n)=>o.jsx(W.Content,{ref:n,className:s.cn("richtext-mt-2 richtext-ring-offset-background focus-visible:richtext-outline-none focus-visible:richtext-ring-2 focus-visible:richtext-ring-ring focus-visible:richtext-ring-offset-2",e),...t}));ee.displayName=W.Content.displayName;const Fe=z.forwardRef(({className:e,...t},n)=>o.jsx(_e.Root,{ref:n,className:s.cn("!richtext-peer !richtext-h-4 !richtext-w-4 !richtext-p-0 !richtext-shrink-0 !richtext-rounded-sm !richtext-border !richtext-border-primary !richtext-ring-offset-background focus-visible:!richtext-outline-none focus-visible:!richtext-ring-2 focus-visible:!richtext-ring-ring focus-visible:!richtext-ring-offset-2 disabled:!richtext-cursor-not-allowed disabled:!richtext-opacity-50 data-[state=checked]:!richtext-bg-primary data-[state=checked]:!richtext-text-primary-foreground",e),...t,children:o.jsx(_e.Indicator,{className:s.cn("!richtext-flex !richtext-p-0 !richtext-items-center !richtext-justify-center !richtext-text-current"),children:o.jsx(D.Check,{className:"!richtext-h-4 !richtext-w-4"})})}));Fe.displayName=_e.Root.displayName;function Et(e){var n;const t=f.useMemo(()=>{var r;const i=(r=e==null?void 0:e.items)==null?void 0:r.find(c=>c.isActive());return i&&!i.default?{...i,icon:i.icon?i.icon:e.icon}:{title:e==null?void 0:e.tooltip,icon:e.icon,isActive:()=>!1}},[e]);return o.jsxs(s.Popover,{modal:!0,children:[o.jsx(s.PopoverTrigger,{asChild:!0,disabled:e==null?void 0:e.disabled,children:o.jsx(s.ActionButton,{customClass:"!richtext-w-12 richtext-h-12",disabled:e==null?void 0:e.disabled,icon:e==null?void 0:e.icon,tooltip:e==null?void 0:e.tooltip,children:o.jsx(s.IconComponent,{className:"richtext-ml-1 richtext-size-3 richtext-text-zinc-500",name:"MenuDown"})})}),o.jsx(s.PopoverContent,{align:"start",className:"richtext-flex richtext-w-full richtext-min-w-4 richtext-flex-row richtext-gap-1 !richtext-p-[4px]",side:"bottom",children:(n=e==null?void 0:e.items)==null?void 0:n.map((i,a)=>{var r,c;return o.jsxs(s.Tooltip,{children:[o.jsx(s.TooltipTrigger,{asChild:!0,children:o.jsx(s.Toggle,{className:"richtext-size-7 richtext-p-1","data-state":t.title===i.title?"on":"off",onClick:i==null?void 0:i.action,pressed:t.title===i.title,size:"sm",children:(i==null?void 0:i.icon)&&o.jsx(s.IconComponent,{name:i.icon})})}),o.jsxs(s.TooltipContent,{className:"richtext-flex richtext-flex-col richtext-items-center",children:[o.jsx("span",{children:i.title}),!!((r=i.shortcutKeys)!=null&&r.length)&&o.jsx("span",{children:(c=i.shortcutKeys)==null?void 0:c.map(l=>s.getShortcutKey(l)).join(" ")})]})]},`text-align-${a}`)})})]})}const Dt=g.TextAlign.extend({addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),types:["heading","paragraph","list_item","title"],button({editor:t,extension:n,t:i}){var h;const a=((h=n.options)==null?void 0:h.alignments)||[],r={left:["mod","Shift","L"],center:["mod","Shift","E"],right:["mod","Shift","R"],justify:["mod","Shift","J"]},c={left:"AlignLeft",center:"AlignCenter",right:"AlignRight",justify:"AlignJustify"},l=a.map(u=>{var _,m,x;return{title:i(`editor.textalign.${u}.tooltip`),icon:c[u],shortcutKeys:r[u],isActive:()=>t.isActive({textAlign:u})||!1,action:()=>{var y,v;return(v=(y=t.commands)==null?void 0:y.setTextAlign)==null?void 0:v.call(y,u)},disabled:!((x=(m=(_=t==null?void 0:t.can)==null?void 0:_.call(t))==null?void 0:m.setTextAlign)!=null&&x.call(m,u))}}),d=l.filter(u=>u.disabled).length===l.length;return{component:Et,componentProps:{icon:"AlignJustify",tooltip:i("editor.textalign.tooltip"),disabled:d,items:l}}}}}});function Ht(e){var i;const{t}=p.useLocale(),n=f.useMemo(()=>{const a=(e.items||[]).find(c=>c.isActive());return a||{title:t("editor.fontSize.default.tooltip"),isActive:()=>!1}},[e]);return o.jsxs(s.DropdownMenu,{children:[o.jsx(s.DropdownMenuTrigger,{asChild:!0,disabled:e==null?void 0:e.disabled,children:o.jsx(ye,{disabled:e==null?void 0:e.disabled,icon:"MenuDown",title:n==null?void 0:n.title,tooltip:`${e==null?void 0:e.tooltip}`})}),o.jsx(s.DropdownMenuContent,{className:"richtext-max-h-96 richtext-w-32 richtext-overflow-y-auto",children:(i=e==null?void 0:e.items)==null?void 0:i.map((a,r)=>o.jsx(s.DropdownMenuCheckboxItem,{checked:n.title===a.title,onClick:a.action,children:o.jsx("div",{className:"richtext-ml-1 richtext-h-full",children:a.title})},`font-size-${r}`))})]})}const Rt=g.Extension.create({name:"fontSize",addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),types:["textStyle"],fontSizes:[...p.DEFAULT_FONT_SIZE_LIST],button({editor:t,extension:n,t:i}){var d;const a=s.ensureNameValueOptions(((d=n.options)==null?void 0:d.fontSizes)||p.DEFAULT_FONT_SIZE_VALUE),r=s.ensureNameValueOptions([p.DEFAULT_FONT_SIZE_VALUE])[0],c=a.map(h=>({title:h.value===r.value?i("editor.fontSize.default.tooltip"):String(h.name),isActive:()=>{const{fontSize:u}=t.getAttributes("textStyle");return h.value===r.value&&u===void 0?!0:t.isActive({fontSize:String(h.value)})||!1},action:()=>{if(h.value===r.value){t.commands.unsetFontSize();return}t.commands.setFontSize(String(h.value))},disabled:!t.can().setFontSize(String(h.value)),divider:h.value===r.value||!1,default:h.value===r.value||!1})),l=c.filter(h=>h.disabled).length===c.length;return{component:Ht,componentProps:{editor:t,tooltip:i("editor.fontSize.tooltip"),disabled:l,items:c,maxHeight:280}}}}},addGlobalAttributes(){return[{types:this.options.types,attributes:{fontSize:{default:null,parseHTML:e=>e.style.fontSize.replaceAll(/["']+/g,""),renderHTML:e=>e.fontSize?{style:`font-size: ${e.fontSize}`}:{}}}}]},addCommands(){return{setFontSize:e=>({chain:t})=>t().setMark("textStyle",{fontSize:e}).run(),unsetFontSize:()=>({chain:e})=>e().setMark("textStyle",{fontSize:null}).removeEmptyTextStyle().run()}}});function zt({fill:e}){return o.jsx("svg",{width:"18px",height:"18px",viewBox:"0 0 240 240",version:"1.1",xmlns:"http://www.w3.org/2000/svg",children:o.jsx("g",{stroke:"none",strokeWidth:1,fill:"none",fillRule:"evenodd",children:o.jsx("g",{transform:"translate(0.000000, 0.500000)",children:o.jsxs("g",{transform:"translate(39.000000, 17.353553)",children:[o.jsx("path",{d:"M11,201.146447 L167,201.146447 C173.075132,201.146447 178,206.071314 178,212.146447 C178,218.221579 173.075132,223.146447 167,223.146447 L11,223.146447 C4.92486775,223.146447 7.43989126e-16,218.221579 0,212.146447 C-7.43989126e-16,206.071314 4.92486775,201.146447 11,201.146447 Z",id:"矩形",fill:e||"#DF2A3F",fillRule:"evenodd"}),o.jsx("path",{d:"M72.3425855,16.8295583 C75.799482,7.50883712 86.1577877,2.75526801 95.4785089,6.21216449 C100.284516,7.99463061 104.096358,11.7387855 105.968745,16.4968188 L106.112518,16.8745422 L159.385152,161.694068 C161.291848,166.877345 158.635655,172.624903 153.452378,174.531599 C148.358469,176.405421 142.719567,173.872338 140.716873,168.864661 L140.614848,168.598825 L89.211,28.86 L37.3759214,168.623816 C35.4885354,173.712715 29.8981043,176.351047 24.7909589,174.617647 L24.5226307,174.522368 C19.4337312,172.634982 16.7953993,167.044551 18.5287999,161.937406 L18.6240786,161.669077 L72.3425855,16.8295583 Z",id:"路径-21",fill:"currentColor",fillRule:"nonzero"}),o.jsx("path",{d:"M121,103.146447 C126.522847,103.146447 131,107.623599 131,113.146447 C131,118.575687 126.673329,122.994378 121.279905,123.142605 L121,123.146447 L55,123.146447 C49.4771525,123.146447 45,118.669294 45,113.146447 C45,107.717207 49.3266708,103.298515 54.7200952,103.150288 L55,103.146447 L121,103.146447 Z",id:"路径-22",fill:"currentColor",fillRule:"nonzero"})]})})})})}function Bt(e){const[t,n]=f.useState(void 0);function i(c){var l;(l=e.action)==null||l.call(e,c)}function a(){var c;(c=e.action)==null||c.call(e,t)}const r=f.useCallback(w.debounce(c=>{n(c)},350),[]);return o.jsxs("div",{className:"richtext-flex richtext-items-center richtext-h-[32px]",children:[o.jsx(s.ActionButton,{tooltip:e==null?void 0:e.tooltip,disabled:e==null?void 0:e.disabled,action:a,children:o.jsx("span",{className:"richtext-flex richtext-items-center richtext-justify-center richtext-text-sm",children:o.jsx(zt,{fill:t})})}),o.jsx(s.ColorPicker,{selectedColor:t,setSelectedColor:r,onChange:i,disabled:e==null?void 0:e.disabled,colors:e==null?void 0:e.colors,defaultColor:e==null?void 0:e.defaultColor,children:o.jsx(s.Button,{variant:"ghost",size:"icon",className:"r!ichtext-h-[32px] !richtext-w-3",disabled:e==null?void 0:e.disabled,children:o.jsx(s.IconComponent,{className:"!richtext-w-3 !richtext-h-3 richtext-text-zinc-500",name:"MenuDown"})})})]})}const Pt=g.Color.extend({addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),button({editor:t,t:n,extension:i}){return{component:Bt,componentProps:{colors:i.options.colors,defaultColor:i.options.defaultColor,action:a=>{a===void 0&&t.chain().focus().unsetColor().run(),typeof a=="string"&&t.chain().focus().setColor(a).run()},isActive:()=>{const{color:a}=t.getAttributes("textStyle");return a&&t.isActive({color:a})||!1},editor:t,disabled:!t.can().setColor(""),tooltip:n("editor.color.tooltip")}}}}}}),Ot=g.Highlight.extend({addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),multicolor:!0,button:({editor:t,t:n})=>({component:s.HighlightActionButton,componentProps:{action:i=>{typeof i=="string"&&t.chain().focus().setHighlight({color:i}).run(),i===void 0&&t.chain().focus().unsetHighlight().run()},editor:t,isActive:()=>t.isActive("highlight")||!1,disabled:!t.can().setHighlight(),shortcutKeys:["⇧","mod","H"],tooltip:n("editor.highlight.tooltip")}})}}}),Ft=g.BulletList.extend({addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),button:({editor:t,t:n})=>({component:s.ActionButton,componentProps:{action:()=>t.commands.toggleBulletList(),isActive:()=>t.isActive("bulletList")||!1,disabled:!1,shortcutKeys:["shift","mod","8"],icon:"List",tooltip:n("editor.bulletlist.tooltip")}})}}}),Ut=g.Node.create({name:"clear",addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),button:({editor:t,t:n})=>({component:s.ActionButton,componentProps:{action:()=>t.chain().focus().clearNodes().unsetAllMarks().run(),disabled:!t.can().chain().focus().clearNodes().unsetAllMarks().run(),icon:"Eraser",tooltip:n("editor.clear.tooltip")}})}}}),Vt=g.OrderedList.extend({addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),button:({editor:t,t:n})=>({component:s.ActionButton,componentProps:{action:()=>t.commands.toggleOrderedList(),isActive:()=>t.isActive("orderedList")||!1,disabled:!1,icon:"ListOrdered",shortcutKeys:["mod","shift","7"],tooltip:n("editor.orderedlist.tooltip")}})}}}),$t=g.TaskList.extend({addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),HTMLAttributes:{class:"task-list"},taskItem:{HTMLAttributes:{class:"task-list-item"}},button:({editor:t,t:n})=>({component:s.ActionButton,componentProps:{action:()=>t.commands.toggleTaskList(),isActive:()=>t.isActive("taskList")||!1,disabled:!1,icon:"ListTodo",shortcutKeys:["shift","mod","9"],tooltip:n("editor.tasklist.tooltip")}})}},addExtensions(){return[g.TaskItem.configure(this.options.taskItem)]}}),qt=g.Blockquote.extend({addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),HTMLAttributes:{class:"blockquote"},button:({editor:t,t:n})=>({component:s.ActionButton,componentProps:{action:()=>t.commands.toggleBlockquote(),isActive:()=>t.isActive("blockquote")||!1,disabled:!t.can().toggleBlockquote(),icon:"TextQuote",shortcutKeys:["shift","mod","B"],tooltip:n("editor.blockquote.tooltip")}})}}});function Kt(e){const[t,n]=f.useState(!1);function i(a,r,c){e.action&&(e.action({link:a,text:r,openInNewTab:c}),n(!1))}return o.jsxs(s.Popover,{modal:!0,open:t,onOpenChange:n,children:[o.jsx(s.PopoverTrigger,{disabled:e==null?void 0:e.disabled,asChild:!0,children:o.jsx(s.ActionButton,{tooltip:e==null?void 0:e.tooltip,isActive:e==null?void 0:e.isActive,disabled:e==null?void 0:e.disabled,children:o.jsx(s.IconComponent,{name:e==null?void 0:e.icon})})}),o.jsx(s.PopoverContent,{hideWhenDetached:!0,className:"richtext-w-full",align:"start",side:"bottom",children:o.jsx(s.LinkEditBlock,{editor:e.editor,onSetLink:i})})]})}const Gt=g.Link.extend({inclusive:!1,parseHTML(){return[{tag:'a[href]:not([data-type="button"]):not([href *= "javascript:" i])'}]},renderHTML({HTMLAttributes:e}){return["a",g.mergeAttributes(this.options.HTMLAttributes,e,{class:"link"}),0]},addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),openOnClick:!0,button:({editor:t,t:n})=>({component:Kt,componentProps:{editor:t,action:i=>{const{link:a,text:r,openInNewTab:c}=i;t.chain().extendMarkRange("link").insertContent({type:"text",text:r,marks:[{type:"link",attrs:{href:a,target:c?"_blank":""}}]}).setLink({href:a}).focus().run()},id:"linkk",isActive:()=>t.isActive("link")||!1,disabled:!t.can().setLink({href:""}),icon:"Link",tooltip:n("editor.link.tooltip")}})}},addProseMirrorPlugins(){return[new w.Plugin({props:{handleClick:(e,t)=>{const{schema:n,doc:i,tr:a}=e.state,r=g.getMarkRange(i.resolve(t),n.marks.link);if(!r)return!1;const c=i.resolve(r.from),l=i.resolve(r.to),d=a.setSelection(new w.TextSelection(c,l));e.dispatch(d)}}})]}}),Wt=g.HorizontalRule.extend({renderHTML(){return["div",g.mergeAttributes(this.options.HTMLAttributes,{"data-type":this.name}),["hr"]]},addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),button:({editor:t,t:n})=>({component:s.ActionButton,componentProps:{action:()=>t.commands.setHorizontalRule(),disabled:!t.can().setHorizontalRule(),icon:"Minus",shortcutKeys:["mod","alt","S"],tooltip:n("editor.horizontalrule.tooltip")}})}},addKeyboardShortcuts(){return{"Mod-Alt-s":()=>this.editor.commands.setHorizontalRule()}}});function Zt(e){var h;const{icon:t=void 0,tooltip:n=void 0,customClass:i="",tooltipOptions:a={},action:r=void 0,isActive:c=void 0,children:l}=e,d=s.icons[t];return o.jsxs(s.Tooltip,{children:[o.jsx(s.TooltipTrigger,{asChild:!0,children:o.jsxs(s.Toggle,{size:"sm",className:`richtext-w-[32px] richtext-h-[32px] ${i}`,disabled:c==null?void 0:c(),onClick:r,children:[d&&o.jsx(d,{className:"richtext-w-4 richtext-h-4"}),l&&o.jsx(o.Fragment,{children:l})]})}),n&&o.jsx(s.TooltipContent,{...a,children:o.jsxs("div",{className:"richtext-flex richtext-flex-col richtext-items-center richtext-text-center richtext-max-w-24",children:[o.jsx("div",{children:n}),!!((h=e==null?void 0:e.shortcutKeys)!=null&&h.length)&&o.jsx("span",{children:s.getShortcutKeys(e==null?void 0:e.shortcutKeys)})]})})]})}const Xt=["undo","redo"],Yt=g.History.extend({addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),depth:100,newGroupDelay:500,button:({editor:t,t:n})=>Xt.map(i=>({component:Zt,componentProps:{action:()=>{i==="undo"&&t.chain().focus().undo().run(),i==="redo"&&t.chain().focus().redo().run()},shortcutKeys:i==="undo"?["mod","Z"]:["shift","mod","Z"],disabled:i==="undo"?!t.can().undo():!t.can().redo(),isActive:()=>i==="undo"?!t.can().undo():!t.can().redo(),icon:i==="undo"?"Undo2":"Redo2",tooltip:n(`editor.${i}.tooltip`)}}))}}}),Jt=g.Document.extend({content:"(block|columns)+"}),Qt=g.Extension.create({name:"columnActionButton",addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),button:({editor:t,t:n})=>({component:s.ActionButton,componentProps:{action:()=>{t.chain().focus().insertColumns({cols:2}).run()},icon:"Columns",tooltip:n("editor.columns.tooltip")}})}}}),en=g.Extension.create({name:"selection",addProseMirrorPlugins(){const{editor:e}=this;return[new w.Plugin({key:new w.PluginKey("selection"),props:{decorations(t){return t.selection.empty||e.isFocused===!0?null:w.DecorationSet.create(t.doc,[w.Decoration.inline(t.selection.from,t.selection.to,{class:"selection"})])}}})]}});function tn(e){const{t}=p.useLocale(),n=f.useMemo(()=>[{name:"paragraph",label:t("editor.paragraph.tooltip"),iconName:"Heading1",isActive:()=>e.editor.isActive("paragraph")&&!e.editor.isActive("orderedList")&&!e.editor.isActive("bulletList")&&!e.editor.isActive("taskList"),action:()=>e.editor.chain().focus().clearNodes().run()},{name:"heading1",label:t("editor.heading.h1.tooltip"),isActive:()=>e.editor.isActive("heading",{level:1}),iconName:"Heading1",action:()=>e.editor.chain().focus().clearNodes().toggleHeading({level:1}).run()},{name:"heading2",label:t("editor.heading.h2.tooltip"),isActive:()=>e.editor.isActive("heading",{level:2}),iconName:"Heading2",action:()=>e.editor.chain().focus().clearNodes().toggleHeading({level:2}).run()},{name:"heading3",label:t("editor.heading.h3.tooltip"),isActive:()=>e.editor.isActive("heading",{level:3}),iconName:"Heading3",action:()=>e.editor.chain().focus().clearNodes().toggleHeading({level:3}).run()},{name:"bulletList",label:t("editor.bulletlist.tooltip"),isActive:()=>e.editor.isActive("bulletList"),iconName:"List",action:()=>e.editor.chain().focus().clearNodes().toggleBulletList().run()},{name:"numberedList",label:t("editor.orderedlist.tooltip"),isActive:()=>e.editor.isActive("orderedList"),iconName:"ListOrdered",action:()=>e.editor.chain().focus().clearNodes().toggleOrderedList().run()},{name:"taskList",label:t("editor.tasklist.tooltip"),isActive:()=>e.editor.isActive("taskList"),iconName:"ListTodo",action:()=>e.editor.chain().focus().clearNodes().toggleTaskList().run()},{name:"blockquote",label:t("editor.blockquote.tooltip"),isActive:()=>e.editor.isActive("blockquote"),iconName:"TextQuote",action:()=>e.editor.chain().focus().clearNodes().toggleBlockquote().run()},{name:"codeBlock",label:t("editor.codeblock.tooltip"),isActive:()=>e.editor.isActive("codeBlock"),iconName:"Code2",action:()=>e.editor.chain().focus().clearNodes().toggleCodeBlock().run()}],[e.editor,t]),i=f.useMemo(()=>n.findLast(a=>a.isActive())??{label:"Empty"},[n]);return o.jsxs(s.DropdownMenu,{children:[o.jsx(s.DropdownMenuTrigger,{asChild:!0,children:o.jsxs(s.Button,{className:"richtext-flex richtext-h-[32px] richtext-gap-1 richtext-px-1.5",variant:"ghost",children:[o.jsxs("span",{className:"richtext-whitespace-nowrap richtext-text-sm richtext-font-normal",children:[" ",i==null?void 0:i.label]}),o.jsx(D.ChevronDown,{className:"richtext-size-4"})]})}),o.jsx(s.DropdownMenuContent,{align:"start",className:"richtext-w-full richtext-p-1",hideWhenDetached:!0,sideOffset:5,children:n.map((a,r)=>{var l;const c=s.icons[a.iconName];return o.jsx(s.DropdownMenuCheckboxItem,{checked:((l=a.isActive)==null?void 0:l.call(a))||!1,className:"richtext-cursor-pointer",onClick:()=>a.action(),children:o.jsxs("div",{className:"richtext-flex richtext-items-center richtext-gap-2 richtext-px-2",children:[o.jsx(c,{className:"richtext-h3 richtext-w-3"}),o.jsxs("span",{children:[" ",a.label]})]})},`text-bubble-${r}`)})})]})}const nn=g.Extension.create({name:"text-bubble",addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),toolbar:!1,button:()=>({component:tn,componentProps:{}})}}});function je({types:e,node:t}){return Array.isArray(e)&&e.includes(t.type)||t.type===e}const on=g.Extension.create({name:"trailingNode",addOptions(){return{node:"paragraph",notAfter:["paragraph"]}},addProseMirrorPlugins(){const e=new w.PluginKey(this.name),t=Object.entries(this.editor.schema.nodes).map(([,n])=>n).filter(n=>this.options.notAfter.includes(n.name));return[new w.Plugin({key:e,appendTransaction:(n,i,a)=>{const{doc:r,tr:c,schema:l}=a,d=e.getState(a),h=r.content.size,u=l.nodes[this.options.node];if(d)return c.insert(h,u.create())},state:{init:(n,i)=>{const a=i.tr.doc.lastChild;return!je({node:a,types:t})},apply:(n,i)=>{if(!n.docChanged)return i;const a=n.doc.lastChild;return!je({node:a,types:t})}}})]}}),an=g.Extension.create({name:"base-kit",addExtensions(){const e=[];return this.options.document!==!1&&e.push(Jt.configure()),this.options.placeholder!==!1&&e.push(g.Placeholder.configure({placeholder:({node:t,pos:n,editor:i})=>{var a,r,c,l,d;return((a=t==null?void 0:t.type)==null?void 0:a.name)==="columns"||((r=t==null?void 0:t.content)==null?void 0:r.size)!==0?"":((c=t==null?void 0:t.type)==null?void 0:c.name)==="heading"?`${p.localeActions.t(`editor.heading.h${t.attrs.level}.tooltip`)}`:((l=t==null?void 0:t.type)==null?void 0:l.name)==="codeBlock"||((d=t==null?void 0:t.type)==null?void 0:d.name)==="table"?"":i.extensionManager.extensions.some(h=>h.name==="slashCommand")?p.localeActions.t("editor.slash"):p.localeActions.t("editor.content")},...this.options.placeholder})),this.options.focus!==!1&&e.push(g.FocusClasses.configure({className:"focus",...this.options.focus})),this.options.text!==!1&&e.push(g.Text.configure()),this.options.textBubble!==!1&&e.push(nn.configure()),this.options.gapcursor!==!1&&e.push(g.Gapcursor.configure()),this.options.dropcursor!==!1&&e.push(g.Dropcursor.configure({...this.options.dropcursor,width:2,class:"ProseMirror-dropcursor border-black"})),this.options.characterCount!==!1&&e.push(g.CharacterCount.configure(this.options.characterCount)),this.options.paragraph!==!1&&e.push(g.Paragraph.configure(this.options.paragraph)),this.options.hardBreak!==!1&&e.push(g.HardBreak.configure(this.options.hardBreak)),this.options.listItem!==!1&&e.push(g.ListItem.configure(this.options.listItem)),this.options.textStyle!==!1&&e.push(g.TextStyle.configure(this.options.textStyle)),this.options.trailingNode!==!1&&e.push(on.configure(this.options.trailingNode)),this.options.selection!==!1&&e.push(en),this.options.multiColumn!==!1&&e.push(s.Column,s.MultiColumn),e}}),rn=g.Extension.create({name:"subAndSuperScript",addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),button:({editor:t,extension:n,t:i})=>{const a=n.options.subscript,r=n.options.superscript,c={component:s.ActionButton,componentProps:{action:()=>t.commands.toggleSubscript(),isActive:()=>t.isActive("subscript")||!1,disabled:!t.can().toggleSubscript(),icon:"Subscript",tooltip:i("editor.subscript.tooltip")}},l={component:s.ActionButton,componentProps:{action:()=>t.commands.toggleSuperscript(),isActive:()=>t.isActive("superscript")||!1,disabled:!t.can().toggleSuperscript(),icon:"Superscript",tooltip:i("editor.superscript.tooltip")}},d=[];return a!==!1&&d.push(c),r!==!1&&d.push(l),d}}},addExtensions(){const e=[];return this.options.subscript!==!1&&e.push(g.Subscript.configure(this.options.subscript)),this.options.superscript!==!1&&e.push(g.Superscript.configure(this.options.superscript)),e}});function sn(e){var n;const t=f.useMemo(()=>{var r;const i=(r=e==null?void 0:e.items)==null?void 0:r.find(c=>c.isActive());return i&&!i.default?{...i,icon:i!=null&&i.icon?i==null?void 0:i.icon:e==null?void 0:e.icon}:{title:e.tooltip,icon:e.icon,isActive:()=>!1}},[e]);return o.jsxs(s.DropdownMenu,{children:[o.jsx(s.DropdownMenuTrigger,{asChild:!0,disabled:e==null?void 0:e.disabled,children:o.jsx(s.ActionButton,{customClass:"!richtext-w-12 richtext-h-12",disabled:e==null?void 0:e.disabled,icon:e==null?void 0:e.icon,tooltip:e==null?void 0:e.tooltip,children:o.jsx(s.MenuDown,{className:"richtext-size-3 richtext-text-gray-500"})})}),o.jsx(s.DropdownMenuContent,{className:"w-full",children:(n=e==null?void 0:e.items)==null?void 0:n.map((i,a)=>o.jsxs(s.DropdownMenuCheckboxItem,{checked:t.title===i.title,className:"richtext-flex richtext-items-center richtext-gap-3",onClick:i.action,children:[o.jsx(s.IconComponent,{name:i==null?void 0:i.icon}),o.jsx("span",{className:"richtext-ml-1",children:i.title}),!!(i!=null&&i.shortcutKeys)&&o.jsx("span",{className:"richtext-ml-auto richtext-text-xs richtext-tracking-widest richtext-opacity-60",children:s.getShortcutKeys(i.shortcutKeys)})]},`more-mark-${a}`))})]})}const cn=g.Extension.create({name:"moreMark",addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),button({editor:t,extension:n,t:i}){const a=n.options.subscript,r=n.options.superscript,c={action:()=>t.commands.toggleSubscript(),isActive:()=>t.isActive("subscript")||!1,disabled:!t.can().toggleSubscript(),icon:"Subscript",title:i("editor.subscript.tooltip"),shortcutKeys:["mod","."]},l={action:()=>t.commands.toggleSuperscript(),isActive:()=>t.isActive("superscript")||!1,disabled:!t.can().toggleSuperscript(),icon:"Superscript",title:i("editor.superscript.tooltip"),shortcutKeys:["mod",","]},d=[];return a!==!1&&d.push(c),r!==!1&&d.push(l),{component:sn,componentProps:{icon:"Type",tooltip:i("editor.moremark"),disabled:!t.isEditable,items:d}}}}},addExtensions(){const e=[];return this.options.subscript!==!1&&e.push(g.Subscript.configure(this.options.subscript)),this.options.superscript!==!1&&e.push(g.Superscript.configure(this.options.superscript)),e}}),ln=g.Extension.create({name:"indent",addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),types:["paragraph","heading","blockquote"],minIndent:s.IndentProps.min,maxIndent:s.IndentProps.max,button({editor:t,t:n}){return[{component:s.ActionButton,componentProps:{action:()=>{t.commands.indent()},shortcutKeys:["Tab"],icon:"IndentIncrease",tooltip:n("editor.indent.tooltip")}},{component:s.ActionButton,componentProps:{action:()=>{t.commands.outdent()},shortcutKeys:["Shift","Tab"],icon:"IndentDecrease",tooltip:n("editor.outdent.tooltip")}}]}}},addGlobalAttributes(){return[{types:this.options.types,attributes:{indent:{default:0,parseHTML:e=>{const t=e.dataset.indent;return(t?Number.parseInt(t,10):0)||0},renderHTML:e=>e.indent?{"data-indent":e.indent}:{}}}}]},addCommands(){return{indent:()=>s.createIndentCommand({delta:s.IndentProps.more,types:this.options.types}),outdent:()=>s.createIndentCommand({delta:s.IndentProps.less,types:this.options.types})}},addKeyboardShortcuts(){return{Tab:()=>this.editor.commands.indent(),"Shift-Tab":()=>this.editor.commands.outdent()}}});function dn(e){return Number.parseFloat(e.replace("%",""))/100}function un(e){const{t}=p.useLocale(),[n,i]=f.useState("default");function a(c){c==="default"?e.editor.commands.unsetLineHeight():e.editor.commands.setLineHeight(c),i(c)}const r=f.useMemo(()=>{const d=e.editor.extensionManager.extensions.find(h=>h.name==="lineHeight").options.lineHeights.map(h=>({label:dn(h),value:h}));return d.unshift({label:t("editor.default"),value:"default"}),d},[e]);return o.jsxs(s.DropdownMenu,{children:[o.jsx(s.DropdownMenuTrigger,{asChild:!0,disabled:e==null?void 0:e.disabled,children:o.jsx(s.ActionButton,{customClass:"!richtext-w-12 richtext-h-12",disabled:e==null?void 0:e.disabled,icon:"LineHeight",tooltip:e==null?void 0:e.tooltip,children:o.jsx(s.IconComponent,{className:"richtext-ml-1 richtext-size-3 richtext-text-zinc-500",name:"MenuDown"})})}),o.jsx(s.DropdownMenuContent,{className:"richtext-min-w-24",children:r==null?void 0:r.map((c,l)=>o.jsx(s.DropdownMenuCheckboxItem,{checked:c.value===n,onClick:()=>a(c.value),children:c.label},`lineHeight-${l}`))})]})}const hn=["paragraph","heading","list_item","todo_item"];function mn(e,t){const{selection:n,doc:i}=e;if(!n||!i||!(n instanceof w.TextSelection||n instanceof w.AllSelection))return e;const{from:a,to:r}=n,c=[],l=t&&t!==p.DEFAULT_LINE_HEIGHT?t:null;if(i.nodesBetween(a,r,(d,h)=>{const u=d.type;return hn.includes(u.name)?((d.attrs.lineHeight||null)!==l&&c.push({node:d,pos:h,nodeType:u}),u.name!=="list_item"&&u.name!=="todo_item"):!0}),c.length===0)return e;for(const d of c){const{node:h,pos:u,nodeType:_}=d;let{attrs:m}=h;m={...m,lineHeight:l},e=e.setNodeMarkup(u,_,m,h.marks)}return e}function fn(e){return({state:t,dispatch:n})=>{const{selection:i}=t;let{tr:a}=t;return a=a.setSelection(i),a=mn(a,e),a.docChanged?(n&&n(a),!0):!1}}const gn=g.Extension.create({name:"lineHeight",addOptions(){var e;return{...(e=this.parent)==null?void 0:e.call(this),types:["paragraph","heading","list_item","todo_item"],lineHeights:p.DEFAULT_LINE_HEIGHT_LIST,defaultHeight:p.DEFAULT_LINE_HEIGHT,button({editor:t,t:n}){return{component:un,componentProps:{editor:t,tooltip:n("editor.lineheight.tooltip")}}}}},addGlobalAttributes(){return[{types:this.options.types,attributes:{lineHeight:{default:null,parseHTML:e=>e.style.lineHeight||this.options.defaultHeight,renderHTML:e=>e.lineHeight===this.options.defaultHeight||!e.lineHeight?{}:{style:`line-height: ${e.lineHeight}`}}}}]},addCommands(){return{setLineHeight:e=>fn(e),unsetLineHeight:()=>({commands:e})=>this.options.types.every(t=>e.resetAttributes(t,"lineHeight"))}}});function _n(e,t){var T,M;const[n,i]=f.useState(0),[a,r]=f.useState(0),c=f.useRef(null),{t:l}=p.useLocale(),d=f.useRef([]);f.useImperativeHandle(t,()=>({onKeyDown:h})),f.useEffect(()=>{if(!c.current)return;const k=a*1e3+n,b=d.current[k];b&&b.scrollIntoView({behavior:"smooth",block:"nearest"})},[n,a]);function h({event:k}){return k.key==="ArrowUp"?(u(),!0):k.key==="ArrowDown"?(_(),!0):k.key==="Enter"?(m(),!0):!1}function u(){var C;if(e.items.length===0)return!1;let k=n-1,b=a;k<0&&(b=a-1,k=((C=e.items[b])==null?void 0:C.commands.length)-1||0),b<0&&(b=e.items.length-1,k=e.items[b].commands.length-1),i(k),r(b)}function _(){if(e.items.length===0)return!1;const k=e.items[a].commands;let b=n+1,C=a;k.length-1<b&&(b=0,C=a+1),e.items.length-1<C&&(C=0),i(b),r(C)}function m(){if(e.items.length===0||a===-1||n===-1)return!1;x(a,n)}function x(k,b){const C=e.items[k].commands[b];e.command(C)}function y(k,b){x(k,b)}function v(k,b,C){d.current[k*1e3+b]=C}return o.jsx("div",{className:"richtext-max-h-[min(80vh,24rem)] richtext-flex-wrap richtext-overflow-auto richtext-rounded-lg !richtext-border !richtext-border-neutral-200 !richtext-bg-white richtext-p-1 !richtext-text-black richtext-shadow-sm dark:!richtext-border-neutral-800 dark:!richtext-bg-black",ref:c,children:(T=e==null?void 0:e.items)!=null&&T.length?o.jsx("div",{className:"richtext-grid richtext-min-w-48 richtext-grid-cols-1 richtext-gap-0.5",children:(M=e==null?void 0:e.items)==null?void 0:M.map((k,b)=>o.jsxs(f.Fragment,{children:[o.jsx("div",{className:"richtext-col-[1/-1] richtext-mx-2 richtext-mt-2 richtext-select-none richtext-text-sm richtext-font-semibold richtext-uppercase richtext-tracking-wider !richtext-text-neutral-500 first:richtext-mt-0.5",children:k.title}),k.commands.map((C,A)=>o.jsxs("button",{onClick:()=>y(b,A),ref:S=>v(b,A,S),className:s.cn("richtext-flex richtext-items-center richtext-text-sm richtext-gap-3 richtext-px-2 richtext-py-1.5 richtext-text !richtext-text-neutral-800 dark:!richtext-text-neutral-200 richtext-text-left richtext-w-full richtext-rounded-sm richtext-outline-none richtext-transition-colors !richtext-bg-transparent hover:!richtext-bg-accent ",{"slash-command-active":a===b&&n===A}),children:[C.iconUrl&&o.jsx("img",{alt:"",className:"richtext-size-6",src:C.iconUrl}),C.iconName&&o.jsx(s.IconComponent,{className:"!richtext-mr-1 !richtext-text-lg",name:C.iconName}),C.label]},`command-${A}`))]},`slash-${k.title}`))}):o.jsx("div",{className:"richtext-p-3",children:o.jsx("span",{className:"richtext-text-xs richtext-text-gray-800 dark:richtext-text-gray-100",children:l("editor.slash.empty")})})})}const xn=f.forwardRef(_n),Ue=w.d(!1);function bn(){return w.b(Ue)}const Y={setOpen:e=>{Ue(e)}},Ve=w.d(!1);function pn(