@wair/editor 0.0.1-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs ADDED
@@ -0,0 +1,4 @@
1
+ 'use client';
2
+ "use client";import{EditorContent as e,NodeViewContent as t,NodeViewWrapper as n,ReactNodeViewRenderer as r,useEditor as i,useEditorState as a}from"@tiptap/react";import*as o from"react";import s,{createContext as c,memo as l,useCallback as u,useContext as d,useEffect as f,useMemo as p,useRef as m,useState as h}from"react";import{Fragment as g,jsx as _,jsxs as v}from"react/jsx-runtime";import{AlignCenter as y,AlignJustify as b,AlignLeft as x,AlignRight as S,ArrowDownToLine as C,ArrowLeftToLine as w,ArrowRightToLine as T,ArrowUpToLine as E,Baseline as ee,BoldIcon as te,Check as D,ChevronDown as O,ChevronRight as ne,Code as re,CodeXml as ie,Copy as ae,FlipHorizontal as oe,FlipVertical as se,GripVertical as ce,Heading1 as le,Heading2 as ue,Heading3 as de,Heading4 as fe,Heading5 as pe,Heading6 as me,Highlighter as he,ImagePlus as ge,ItalicIcon as _e,LinkIcon as ve,List as ye,ListOrdered as be,ListTodo as xe,LoaderCircle as Se,Maximize as Ce,Quote as we,RatioIcon as Te,Redo2 as Ee,RefreshCw as De,RotateCcwSquare as Oe,RotateCwSquare as ke,Square as Ae,StrikethroughIcon as je,Table as Me,TableCellsMerge as Ne,TableCellsSplit as Pe,Trash2 as k,Type as Fe,UnderlineIcon as Ie,Undo2 as Le,X as Re,XIcon as ze}from"lucide-react";import*as Be from"@radix-ui/react-toggle";import{cva as Ve}from"class-variance-authority";import{clsx as He}from"clsx";import{twMerge as Ue}from"tailwind-merge";import*as A from"@radix-ui/react-tooltip";import{cn as j}from"@/lib/utils";import{Slot as We}from"@radix-ui/react-slot";import*as M from"@radix-ui/react-popover";import*as Ge from"@radix-ui/react-label";import*as Ke from"@radix-ui/react-separator";import qe from"@tiptap/starter-kit";import{BackgroundColor as Je,Color as Ye,TextStyleKit as Xe}from"@tiptap/extension-text-style";import Ze from"@tiptap/extension-text-align";import{Dropcursor as Qe,Focus as $e,Gapcursor as et,Placeholder as tt,Selection as nt}from"@tiptap/extensions";import{TaskItem as rt,TaskList as it}from"@tiptap/extension-list";import at from"@tiptap/extension-file-handler";import ot from"@tiptap/extension-code-block-lowlight";import{common as st,createLowlight as ct}from"lowlight";import lt from"copy-to-clipboard";import*as N from"@radix-ui/react-dropdown-menu";import{Image as ut}from"@tiptap/extension-image";import{Controlled as dt}from"react-medium-image-zoom";import{Cropper as ft}from"react-cropper";import*as P from"@radix-ui/react-dialog";import"react-medium-image-zoom/dist/styles.css";import pt from"highlight.js/lib/languages/css";import mt from"highlight.js/lib/languages/javascript";import ht from"highlight.js/lib/languages/typescript";import gt from"highlight.js/lib/languages/xml";import"highlight.js/styles/github.css";import{Extension as _t,Node as vt,findParentNode as yt,getMarkRange as bt,isTextSelection as xt,mergeAttributes as St}from"@tiptap/core";import Ct from"@tiptap/extension-link";import{NodeSelection as wt,Plugin as F,TextSelection as Tt}from"@tiptap/pm/state";import{Table as Et,TableHeader as Dt,TableRow as Ot}from"@tiptap/extension-table";import{Decoration as kt,DecorationSet as I}from"@tiptap/pm/view";import{CellSelection as At,TableMap as L}from"@tiptap/pm/tables";import{Mathematics as jt}from"@tiptap/extension-mathematics";import{BubbleMenu as Mt}from"@tiptap/react/menus";import{offset as Nt}from"@floating-ui/react";import{DragHandle as Pt}from"@tiptap/extension-drag-handle-react";const Ft=c({}),R=()=>{let e=d(Ft);if(!e)throw Error(`useCurrentEditor 必须在 EditorProvider 内部使用`);if(!e.editor)throw Error(`EditorProvider 未提供 editor`);return e},It=({editor:e,children:t})=>e?_(Ft.Provider,{value:{editor:e},children:t}):null,Lt={1:le,2:ue,3:de,4:fe,5:pe,6:me},z=e=>({label:`标题${e}`,icon:Lt[e],id:`heading${e}`,onClick:t=>t.chain().focus().clearNodes().setHeading({level:e}).run(),isActive:t=>t[`isHeading${e}`]}),B={label:`撤销`,icon:Le,id:`undo`,onClick:e=>e.chain().focus().undo().run(),disabled:e=>!e.canUndo,shortcutKeys:[`mod`,`Z`]},V={label:`重做`,icon:Ee,id:`redo`,onClick:e=>e.chain().focus().redo().run(),disabled:e=>!e.canRedo,shortcutKeys:[`mod`,`shift`,`Z`]},Rt={label:`正文`,icon:Fe,id:`paragraph`,onClick:e=>e.chain().focus().clearNodes().setParagraph().run(),isActive:e=>e.isParagraph},zt={label:`引用`,icon:we,id:`blockquote`,onClick:e=>e.chain().focus().clearNodes().setBlockquote().run(),isActive:e=>e.isBlockquote},Bt={label:`代码块`,icon:ie,id:`codeBlock`,onClick:e=>e.chain().focus().clearNodes().setCodeBlock().run(),isActive:e=>e.isCodeBlock},Vt={label:`有序列表`,icon:be,id:`orderedList`,onClick:e=>e.chain().focus().clearNodes().toggleOrderedList().run(),isActive:e=>e.isOrderedList},Ht={label:`无序列表`,icon:ye,id:`bulletList`,onClick:e=>e.chain().focus().clearNodes().toggleBulletList().run(),isActive:e=>e.isBulletList},Ut={label:`待办任务`,icon:xe,id:`todoList`,onClick:e=>e.chain().focus().clearNodes().toggleTaskList().run(),isActive:e=>e.isTaskList},Wt={select:[z(1),z(2),z(3),z(4),z(5),Rt,zt,Bt],out:[Ht,Vt,Ut]},Gt={label:`左对齐`,icon:x,id:`leftAlign`,onClick:e=>e.chain().setTextAlign(`left`).run(),isActive:e=>e.isAlignLeft},Kt=[Gt,{label:`右对齐`,icon:S,id:`rightAlign`,onClick:e=>e.chain().setTextAlign(`right`).run(),isActive:e=>e.isAlignRight},{label:`居中对齐`,icon:y,id:`centerAlign`,onClick:e=>e.chain().setTextAlign(`center`).run(),isActive:e=>e.isAlignCenter},{label:`两端对齐`,icon:b,id:`justifyAlign`,onClick:e=>e.chain().setTextAlign(`justify`).run(),isActive:e=>e.isAlignJustify}],qt=[{label:`加粗`,icon:te,id:`bold`,onClick:e=>e.chain().focus().toggleBold().run(),isActive:e=>e.isBold,disabled:e=>!e.canBold,shortcutKeys:[`mod`,`B`]},{label:`斜体`,icon:_e,id:`italic`,onClick:e=>e.chain().focus().toggleItalic().run(),isActive:e=>e.isItalic,disabled:e=>!e.canItalic,shortcutKeys:[`mod`,`I`]},{label:`下划线`,icon:Ie,id:`underline`,onClick:e=>e.chain().focus().toggleUnderline().run(),isActive:e=>e.isUnderline,disabled:e=>!e.canUnderline,shortcutKeys:[`mod`,`U`]},{label:`删除线`,icon:je,id:`strike`,onClick:e=>e.chain().focus().toggleStrike().run(),isActive:e=>e.isStrike,disabled:e=>!e.canStrike,shortcutKeys:[`mod`,`shift`,`S`]},{label:`行内代码`,icon:re,id:`inlineCode`,onClick:e=>e.chain().focus().toggleCode().run(),isActive:e=>e.isCode,disabled:e=>!e.canCode,shortcutKeys:[`mod`,`E`]}],Jt=[z(1),z(2),z(3),z(4),z(5),Rt,zt,Bt,Ht,Vt,Ut];function H(...e){return Ue(He(e))}const Yt=Ve(`inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap`,{variants:{variant:{default:`bg-transparent`,outline:`border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground`},size:{default:`h-9 px-2 min-w-9`,sm:`h-8 px-1.5 min-w-8`,lg:`h-10 px-2.5 min-w-10`}},defaultVariants:{variant:`default`,size:`default`}}),Xt=o.forwardRef(({className:e,variant:t,size:n,...r},i)=>_(Be.Root,{ref:i,"data-slot":`toggle`,className:H(Yt({variant:t,size:n,className:e})),...r}));Xt.displayName=Be.Root.displayName;function Zt({delayDuration:e=0,...t}){return _(A.Provider,{"data-slot":`tooltip-provider`,delayDuration:e,...t})}function Qt({...e}){return _(Zt,{children:_(A.Root,{"data-slot":`tooltip`,...e})})}function $t({...e}){return _(A.Trigger,{"data-slot":`tooltip-trigger`,...e})}function en({className:e,sideOffset:t=0,children:n,...r}){return _(A.Portal,{children:v(A.Content,{"data-slot":`tooltip-content`,sideOffset:t,className:j(`origin-(--radix-tooltip-content-transform-origin) z-50 w-fit text-balance rounded-md bg-foreground px-3 py-1.5 text-xs text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`,e),...r,children:[n,_(A.Arrow,{className:`z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground`})]})})}const tn=Ve(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60`,outline:`border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2 has-[>svg]:px-3`,sm:`h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5`,lg:`h-10 rounded-md px-6 has-[>svg]:px-4`,icon:`size-9`,"icon-sm":`size-8`,"icon-lg":`size-10`}},defaultVariants:{variant:`default`,size:`default`}}),U=o.forwardRef(({className:e,variant:t=`default`,size:n=`default`,asChild:r=!1,...i},a)=>_(r?We:`button`,{ref:a,"data-slot":`button`,"data-variant":t,"data-size":n,className:H(tn({variant:t,size:n,className:e})),...i}));U.displayName=`Button`;const W=o.forwardRef(({isActive:e,children:t,tooltip:n,className:r,tooltipOptions:i,shortcutKeys:a,...o},s)=>{let c=_(Xt,{size:`sm`,ref:s,className:H(`text-content-first size-7 gap-1 rounded border-none p-0`,{"bg-primary/5":e},r),...o,children:t});return n?_(Zt,{delayDuration:300,children:v(Qt,{children:[_($t,{asChild:!0,children:c}),_(en,{...i,children:_(`div`,{className:`flex flex-col items-center text-center`,children:n})})]})}):c});W.displayName=`ToolbarButton`;const G=o.memo(o.forwardRef(({children:e,tooltip:t,className:n,...r},i)=>_(Zt,{children:v(Qt,{children:[_($t,{children:_(U,{ref:i,variant:`ghost`,className:H(`text-content-first relative flex size-7 flex-row rounded p-0`,`bg-transparent hover:bg-transparent`,n),...r,children:e})}),_(en,{side:`bottom`,children:t})]})})));function K({...e}){return _(M.Root,{"data-slot":`popover`,...e})}function q({...e}){return _(M.Trigger,{"data-slot":`popover-trigger`,...e})}function J({className:e,align:t=`center`,sideOffset:n=4,...r}){return _(M.Portal,{children:_(M.Content,{"data-slot":`popover-content`,align:t,sideOffset:n,className:H(`origin-(--radix-popover-content-transform-origin) outline-hidden z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`,e),...r})})}const Y=()=>{let{editor:e}=R();return a({editor:e,selector:e=>{let{editor:t}=e,n=(e,n={})=>t.isActive(e,n)??!1,r=(e,n={})=>t.can().chain()[e]?.(n)?.run();return{isBold:n(`bold`),canBold:r(`toggleBold`),isItalic:n(`italic`),canItalic:r(`toggleItalic`),isUnderline:n(`underline`),canUnderline:r(`toggleUnderline`),isStrike:n(`strike`),canStrike:r(`toggleStrike`),isCode:n(`code`),canCode:r(`toggleCode`),isParagraph:n(`paragraph`),isHeading1:n(`heading`,{level:1}),isHeading2:n(`heading`,{level:2}),isHeading3:n(`heading`,{level:3}),isHeading4:n(`heading`,{level:4}),isHeading5:n(`heading`,{level:5}),isHeading6:n(`heading`,{level:6}),isBulletList:n(`bulletList`),isOrderedList:n(`orderedList`),isTaskList:n(`taskList`),isBlockquote:n(`blockquote`),isCodeBlock:n(`codeBlock`),canUndo:t.can().undo(),canRedo:t.can().redo(),isAlignLeft:n({textAlign:`left`}),isAlignRight:n({textAlign:`right`}),isAlignCenter:n({textAlign:`center`}),isAlignJustify:n({textAlign:`justify`}),isTable:n(`table`),canTable:r(`insertTable`)}}})};var nn=l(({nodeFormatActions:e})=>{let{editor:t}=R(),n=Y(),r=e.find(e=>e.isActive?.(n))??Rt;return v(K,{children:[_(q,{asChild:!0,children:v(U,{variant:`ghost`,className:`h-7 gap-1 rounded px-1`,children:[_(r.icon,{size:20}),_(O,{size:12,color:`#9fa2ab`})]})}),_(J,{className:`border-line z-50 w-40 rounded-xl border bg-white px-2 py-1 shadow-xl`,align:`start`,sideOffset:18,children:e.map(e=>v(`div`,{onClick:()=>{e.onClick(t)},className:H(`flex cursor-pointer items-center rounded-sm p-2 text-sm hover:bg-accent`,r.label===e.label?`text-primary`:``),children:[_(e.icon,{size:`20`,className:`mr-3`}),_(`span`,{children:e.label}),r.label===e.label&&_(D,{size:`16`,className:`ml-auto items-end`})]},e.id))})]})}),rn=l(({textFormatActions:e,tooltipOptions:t})=>{let{editor:n}=R(),r=Y();return _(g,{children:e.map(e=>_(W,{isActive:e.isActive?.(r),onClick:()=>e.onClick(n),disabled:e.disabled?.(r),tooltip:e.label,tooltipOptions:t,shortcutKeys:e.shortcutKeys,children:_(e.icon,{size:20})},e.id))})});function an({className:e,...t}){return _(Ge.Root,{"data-slot":`label`,className:j(`flex select-none items-center gap-2 text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50 group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50`,e),...t})}function on({className:e,type:t,...n}){return _(`input`,{type:t,"data-slot":`input`,className:j(`shadow-xs h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base outline-none transition-[color,box-shadow] selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30`,`focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50`,`aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,e),...n})}const sn=o.forwardRef(({onSave:e,defaultUrl:t,defaultText:n,className:r},i)=>{let a=o.useRef(null),[s,c]=o.useState(t||``),[l,u]=o.useState(n||``),d=o.useCallback(t=>{t.preventDefault(),a.current&&(Array.from(a.current.querySelectorAll(`input`)).every(e=>e.checkValidity())?e(s,l):a.current.querySelectorAll(`input`).forEach(e=>{e.checkValidity()||e.reportValidity()}))},[e,s,l]);return o.useImperativeHandle(i,()=>a.current),_(`div`,{className:`shadow-box w-full min-w-80 rounded-xl p-4`,ref:a,children:v(`div`,{className:H(`space-y-4`,r),children:[v(`div`,{className:`space-y-1`,children:[_(an,{children:`链接`}),_(on,{type:`url`,required:!0,placeholder:`输入链接`,value:s,onChange:e=>c(e.target.value),onKeyDown:e=>{e.key===`Enter`&&d(e)}})]}),v(`div`,{className:`space-y-1`,children:[_(an,{children:`文本`}),_(on,{type:`text`,placeholder:`输入文本`,value:l,onChange:e=>u(e.target.value),onKeyDown:e=>{e.key===`Enter`&&d(e)}})]}),_(`div`,{className:`flex justify-end space-x-2`,children:_(U,{type:`button`,onClick:d,children:`保存`})})]})})});sn.displayName=`LinkEditPanel`;var cn=({tooltipOptions:e})=>{let{editor:t}=R(),{href:n,text:r,isActive:i}=a({editor:t,selector:e=>{let{from:n,to:r}=e.editor.state.selection,{href:i}=e.editor.getAttributes(`link`);return{href:i,text:t.state.doc.textBetween(n,r,` `),isActive:t.isActive(`link`)}}}),o=u((e,n)=>{t.chain().extendMarkRange(`link`).insertContent({type:`text`,text:n,marks:[{type:`link`,attrs:{href:e,target:`_blank`}}]}).setLink({href:e,target:`_blank`}).focus().run()},[t]);return v(K,{defaultOpen:i,children:[_(q,{asChild:!0,children:_(W,{pressed:i,isActive:i,tooltip:`插入链接`,tooltipOptions:e,children:_(ve,{size:19})})}),_(J,{align:`center`,className:`z-50 w-max`,sideOffset:18,children:_(sn,{defaultUrl:n,defaultText:r,onSave:o})})]})};const ln=`#111111.#414141.#707070.#B8B8B8.#E7E7E7.#FFFFFF.#4D0000.#800000.#B30000.#FF0000.#FF4C4C.#FFB2B2.#4D2D16.#804B25.#B36934.#FF964A.#FFB580.#FFDFC9.#4D4110.#806D1B.#B39926.#FFDA36.#FFE572.#FFF4C3.#084623.#0D7539.#12A451.#19EA73.#5EF09D.#BAF9D5.#003845.#005E72.#0083A0.#00BBE5.#4CCFED.#B2EBF7.#021C4D.#032F80.#0542B3.#075EFF.#518EFF.#B5CFFF.#36204D.#5A3580.#7E4AB3.#B46AFF.#CA97FF.#E8D2FF`.split(`.`);var un=()=>{let{editor:e}=R(),{activeColorItem:t}=a({editor:e,selector:({editor:e})=>({activeColorItem:ln.find(t=>e.isActive(`textStyle`,{color:t}))})});return v(M.Root,{children:[_(M.Trigger,{asChild:!0,children:v(U,{variant:`ghost`,className:`h-7 gap-1 rounded px-1`,children:[_(ee,{size:20,color:t}),_(O,{size:12,color:`#9fa2ab`})]})}),_(M.Content,{className:`border-line shadow-box z-50 w-[242px] rounded-xl border bg-white p-4`,align:`center`,sideOffset:18,children:v(`div`,{children:[_(`div`,{className:`text-content-first border-line mb-[10px] flex h-8 cursor-pointer items-center justify-center rounded-lg border text-sm`,onClick:()=>{e.chain().focus().unsetColor().run()},children:`默认颜色`}),_(`div`,{className:`mb-3 flex flex-wrap items-center gap-2`,children:ln.map(n=>_(`span`,{className:H(`hover:border-content-first flex h-7 w-7 cursor-pointer items-center justify-center rounded-sm border border-transparent`,{"border-content-first":t===n}),onClick:()=>{e.chain().focus().unsetColor().run(),e.chain().focus().setColor(n).run()},children:_(`span`,{className:`border-line h-6 w-6 rounded-sm border`,style:{backgroundColor:n}})},n))})]})})]})};const dn=[`#FF0000`,`#FF4C4C`,`#FFB2B2`,`#FF964A`,`#FFB580`,`#FFDFC9`,`#FFDA36`,`#FFE572`,`#FFF4C3`,`#19EA73`,`#5EF09D`,`#BAF9D5`,`#00BBE5`,`#4CCFED`,`#B2EBF7`,`#075EFF`,`#518EFF`,`#B5CFFF`,`#B46AFF`,`#CA97FF`,`#E8D2FF`,`#707070`,`#B8B8B8`,`#E7E7E7`];var fn=()=>{let{editor:e}=R(),{activeHighlightItem:t}=a({editor:e,selector:({editor:e})=>({activeHighlightItem:dn.find(t=>e.isActive(`highlight`,{color:t}))})});return v(M.Root,{children:[_(M.Trigger,{asChild:!0,children:v(U,{variant:`ghost`,className:`h-7 gap-1 rounded px-1`,children:[_(he,{size:20,color:t}),_(O,{size:12,color:`#9fa2ab`})]})}),_(M.Content,{className:`border-line shadow-box z-50 w-[242px] rounded-xl border bg-white p-4`,align:`center`,sideOffset:18,children:v(`div`,{children:[_(`div`,{className:`text-content-first border-line mb-[10px] flex h-8 cursor-pointer items-center justify-center rounded-lg border text-sm`,onClick:()=>{e.chain().focus().unsetBackgroundColor().run()},children:`默认颜色`}),_(`div`,{className:`mb-3 flex flex-wrap items-center gap-2`,children:dn.map(n=>_(`span`,{className:H(`hover:border-content-first flex h-7 w-7 cursor-pointer items-center justify-center rounded-sm border border-transparent`,{"border-content-first":t===n}),onClick:()=>{e.chain().focus().unsetBackgroundColor().run(),e.chain().focus().setBackgroundColor(n).run()},children:_(`span`,{className:`border-line h-6 w-6 rounded-sm border`,style:{backgroundColor:n}})},n))})]})})]})},pn=l(()=>{let{editor:e}=R(),[t,n]=h(!1),r=Y(),i=Kt.find(e=>e.isActive?.(r))??Gt;return v(K,{open:t,onOpenChange:n,children:[_(q,{asChild:!0,children:v(U,{onClick:()=>n(!0),variant:`ghost`,className:`h-7 gap-1 rounded px-1`,children:[_(i.icon,{strokeWidth:1.5,size:`20`}),_(O,{size:12,color:`#9fa2ab`})]})}),_(J,{className:`border-line z-50 w-40 rounded-xl border bg-white px-2 py-1 shadow-xl`,align:`start`,sideOffset:18,children:Kt.map(t=>v(`div`,{onClick:()=>{t.onClick(e),n(!1)},className:H(`flex cursor-pointer items-center rounded-sm p-2 text-sm hover:bg-accent`,i?.label===t.label?`text-primary`:``),children:[_(t.icon,{size:`20`,className:`mr-3`}),_(`span`,{children:t.label}),i?.label===t.label&&_(D,{size:`16`,className:`ml-auto items-end`})]},t.id))})]})}),mn=()=>{let{editor:e}=R();return _(U,{variant:`ghost`,className:`aspect-square h-7 gap-1 rounded px-1`,onClick:()=>{let t=document.createElement(`input`);t.type=`file`,t.accept=`image/*`,t.onchange=async t=>{let n=t.target.files?.[0];n&&e.commands.setImages([{src:n}])},t.click()},children:_(ge,{size:`20`})})};const hn=e=>Array.from({length:e}).map((e,t)=>t+1);function gn(){let{editor:e}=R(),{canTable:t,isTable:n}=Y();function r(n){t&&e.chain().focus().insertTable({...n,withHeaderRow:!1}).run()}let[i,a]=s.useState(!0),[o,c]=s.useState({rows:10,cols:10}),[l,u]=s.useState({rows:2,cols:2});function d(e,t){e===o.rows&&c(t=>({...t,rows:Math.min(e+1,10)})),t===o.cols&&c(e=>({...e,cols:Math.min(t+1,10)})),u({rows:e,cols:t})}function f(e,t){r({rows:e,cols:t,withHeaderRow:i}),p()}function p(){a(!1),c({rows:10,cols:10}),u({rows:2,cols:2})}return v(K,{children:[_(q,{asChild:!0,children:_(W,{"data-state":`off`,disabled:!t||n,tooltip:`插入表格`,tooltipOptions:{side:`bottom`},isActive:n,children:_(Me,{size:20})})}),_(J,{className:`z-50 w-full !p-2`,align:`start`,side:`bottom`,sideOffset:18,children:v(`div`,{className:`table-grid-size-editor p-0`,children:[_(`div`,{className:`flex flex-col flex-wrap justify-between gap-1`,children:hn(o?.rows)?.map(e=>_(`div`,{className:`flex gap-1`,children:hn(o?.cols)?.map(t=>_(`div`,{className:`border-line box-border h-4 w-4 cursor-pointer rounded-[2px] border-solid bg-gray-200 ${t<=l.cols&&e<=l.rows?`bg-primary/60`:`bg-gray-100`}`,onMouseOver:()=>d(e,t),onMouseDown:()=>f(e,t)},`c-${t}`))},`r-${e}`))}),v(`div`,{className:`mt-2 text-center text-sm text-zinc-600`,children:[l.rows,` x `,l.cols]})]})})]})}var _n=gn;function X({className:e,orientation:t=`horizontal`,decorative:n=!0,...r}){return _(Ke.Root,{"data-slot":`separator`,decorative:n,orientation:t,className:H(`bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=vertical]:h-full data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px`,e),...r})}const vn=[`undo`,`redo`,`separator`,`node-selector`,`text-selector`,`link`,`color`,`bg`,`align`,`separator`,`image`,`table`],yn=({config:e=vn,appendItems:t})=>{let{editor:n}=R(),r=Y();if(!n)return null;let i=e=>({isActive:e.isActive?.(r)??!1,disabled:e.disabled?.(r)??!1,onClick:()=>e.onClick(n)}),a=(e,t)=>{switch(typeof e==`string`?e:e.key){case`undo`:return _(W,{...i(B),tooltip:B.label,shortcutKeys:B.shortcutKeys,children:_(B.icon,{size:20})},t);case`redo`:return _(W,{...i(V),tooltip:V.label,shortcutKeys:V.shortcutKeys,children:_(V.icon,{size:20})},t);case`separator`:return _(X,{orientation:`vertical`,className:`bg-line h-4`},t);case`node-selector`:return _(nn,{nodeFormatActions:Wt.select},t);case`text-selector`:return _(rn,{textFormatActions:qt},t);case`link`:return _(cn,{},t);case`color`:return _(un,{},t);case`bg`:return _(fn,{},t);case`align`:return _(pn,{},t);case`image`:return _(mn,{},t);case`table`:return _(_n,{},t);default:return typeof e!=`string`&&e.render?_(s.Fragment,{children:e.render(n)},t):null}};return v(`div`,{className:`z-99 flex flex-wrap items-center gap-1 border-b bg-white px-4 py-2 shadow-sm`,children:[e.map((e,t)=>a(e,t)),t]})};function bn({...e}){return _(N.Root,{"data-slot":`dropdown-menu`,...e})}function xn({...e}){return _(N.Trigger,{"data-slot":`dropdown-menu-trigger`,...e})}function Sn({className:e,sideOffset:t=4,...n}){return _(N.Portal,{children:_(N.Content,{"data-slot":`dropdown-menu-content`,sideOffset:t,className:H(`max-h-(--radix-dropdown-menu-content-available-height) origin-(--radix-dropdown-menu-content-transform-origin) z-50 min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`,e),...n})})}function Cn({className:e,inset:t,variant:n=`default`,...r}){return _(N.Item,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:H(`data-[variant=destructive]:*:[svg]:!text-destructive outline-hidden relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[disabled]:opacity-50 data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0`,e),...r})}function wn({className:e,...t}){return _(N.Separator,{"data-slot":`dropdown-menu-separator`,className:H(`bg-border -mx-1 my-1 h-px`,e),...t})}const Tn=({language:e,content:n,extension:r,updateAttributes:i})=>{let[a,o]=h(!1),[s,c]=h(!0),l=m(null),u=()=>{o(!0),setTimeout(()=>{o(!1)},2e3)},d=e=>a?_(D,{color:`#16a34a`,...e}):_(ae,{color:`#777`,...e}),f=s?O:ne,p=s?{}:{height:0,overflow:`hidden`};return v(`div`,{className:`overflow-hidden rounded-lg bg-muted`,children:[v(`div`,{contentEditable:!1,className:`bg-gray relative box-border flex h-9 w-full flex-row items-center justify-between px-4 py-1`,children:[_(U,{variant:`ghost`,size:`sm`,className:`h-6 w-6 rounded-full text-content-second`,onClick:()=>c(!s),children:_(f,{size:14,color:`#777`,style:{verticalAlign:`-0.125em`}})}),v(bn,{children:[_(xn,{asChild:!0,children:_(`span`,{className:`min-w-[50px] cursor-pointer text-sm text-[#999]`,children:e||`请选择语言`})}),_(Sn,{className:`max-h-96 overflow-y-auto`,children:r.options.lowlight.listLanguages().map((e,t)=>_(Cn,{onClick:()=>{i({language:e})},children:e},t))})]}),_(`div`,{className:`flex gap-1`,children:_(G,{onClick:()=>{lt(n||l.current?.innerText||``),u()},tooltip:a?`已复制`:`复制`,className:`h-6 w-6 text-content-second`,children:_(d,{size:16})})})]}),_(`div`,{style:p,ref:l,children:_(`pre`,{children:_(t,{as:`code`})})})]})},En=e=>{let{node:t,extension:r,updateAttributes:i}=e,a=t.attrs.language,o=t.textContent;return _(n,{"data-drag-handle":!0,children:_(Tn,{content:o,language:a,extension:r,updateAttributes:i})})};function Dn({initialWidth:e,initialHeight:t,contentWidth:n,contentHeight:r,gridInterval:i,minWidth:a,minHeight:o,maxWidth:s,onDimensionsChange:c}){let[l,d]=h({width:Math.max(e??a,a),height:Math.max(t??o,o)}),[p,m]=h(1/0),[g,_]=h({x:0,y:0}),[v,y]=h(l),[b,x]=h(),S=u((e,t)=>{let r=Math.max(a,Math.min(n??a,i/100*t));return Math.min(t,Math.max(e,r))},[i,n,a]),C=u(e=>{if(e.preventDefault(),!b)return;let t=0,s=0;switch(b){case`tl`:t=g.x-e.pageX,s=g.y-e.pageY;break;case`tr`:t=e.pageX-g.x,s=g.y-e.pageY;break;case`bl`:t=g.x-e.pageX,s=e.pageY-g.y;break;case`br`:t=e.pageX-g.x,s=e.pageY-g.y;break;case`top`:t=g.x,s=g.y-e.pageY;break;case`right`:t=e.pageX-g.x,s=g.y;break;case`bottom`:t=g.x,s=e.pageY-g.y;break;case`left`:t=g.x-e.pageX,s=g.y;break}let c=n&&r?n/r:v.width/v.height,l=v.width,u=v.height;if([`tl`,`tr`,`bl`,`br`].includes(b)){let e=Math.abs(t)>Math.abs(s*c)?t/v.width:s/v.height;l=v.width+v.width*e,u=l/c}else [`left`,`right`].includes(b)?l=v.width+t:[`top`,`bottom`].includes(b)&&(u=v.height+s);let f=i/100*p;[`tl`,`tr`,`bl`,`br`].includes(b)&&(l=Math.round(l/f)*f,u=l/c),[`tl`,`tr`,`bl`,`br`,`left`,`right`].includes(b)&&(l=S(l,p),[`tl`,`tr`,`bl`,`br`].includes(b)&&(u=l/c)),d({width:Math.max(l,a),height:Math.max(u,o)})},[S,b,p,g,i,r,n,v,a,o]),w=u(e=>{e.preventDefault(),e.stopPropagation(),_({x:0,y:0}),x(void 0),c?.(l)},[c,l]),T=u(e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),d({width:Math.max(v.width,a),height:Math.max(v.height,o)}),x(void 0))},[v,a,o]),E=u(e=>t=>{t.preventDefault(),t.stopPropagation(),console.log(`initiateResize direction`,e),m(s),y({width:Math.max(S(l.width,s),a),height:Math.max(l.height,o)}),_({x:t.pageX,y:t.pageY}),x(e)},[s,S,l.width,l.height,a,o]);return f(()=>{if(b)return document.addEventListener(`keydown`,T),document.addEventListener(`pointermove`,C),document.addEventListener(`pointerup`,w),()=>{document.removeEventListener(`keydown`,T),document.removeEventListener(`pointermove`,C),document.removeEventListener(`pointerup`,w)}},[b,T,C,w]),{initiateResize:E,isResizing:!!b,updateDimensions:d,currentWidth:Math.max(l.width,a),currentHeight:Math.max(l.height,o)}}function On({...e}){return _(P.Root,{"data-slot":`dialog`,...e})}function kn({...e}){return _(P.Portal,{"data-slot":`dialog-portal`,...e})}function An({className:e,...t}){return _(P.Overlay,{"data-slot":`dialog-overlay`,className:j(`fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`,e),...t})}function jn({className:e,children:t,showCloseButton:n=!0,...r}){return v(kn,{"data-slot":`dialog-portal`,children:[_(An,{}),v(P.Content,{"data-slot":`dialog-content`,className:j(`fixed left-[50%] top-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg outline-none duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:max-w-lg`,e),...r,children:[t,n&&v(P.Close,{"data-slot":`dialog-close`,className:`rounded-xs focus:outline-hidden absolute right-4 top-4 opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0`,children:[_(ze,{}),_(`span`,{className:`sr-only`,children:`Close`})]})]})]})}function Mn({className:e,...t}){return _(`div`,{"data-slot":`dialog-header`,className:j(`flex flex-col gap-2 text-center sm:text-left`,e),...t})}function Nn({className:e,...t}){return _(P.Title,{"data-slot":`dialog-title`,className:j(`text-lg font-semibold leading-none`,e),...t})}function Pn({editor:e,open:t,onOpenChange:n,imageSrc:r,onComplete:i}){let a=m(null),o=()=>{if(a.current){let t=a.current?.cropper;t&&t.getCroppedCanvas().toBlob(async t=>{if(!t)return;let r=new File([t],`cropped-image.jpg`,{type:`image/jpeg`}),a=e?.extensionManager?.extensions?.find(e=>e.name===`image`);if(a?.options?.uploadFn)try{i(await a.options.uploadFn(r)),n(!1)}catch(e){console.error(`Image upload failed:`,e)}},`image/jpeg`)}},c=e=>{a.current?.cropper&&a.current.cropper.setAspectRatio(e||NaN)},l=e=>{a.current?.cropper&&a.current.cropper.rotate(e)},u=(e,t)=>{if(a.current?.cropper){let n=a.current.cropper;e&&n.scaleX(-n.getData().scaleX||-1),t&&n.scaleY(-n.getData().scaleY||-1)}},d=[{type:`aspectRatio`,buttons:[{icon:Ce,label:`自由`,action:()=>c(void 0)},{icon:Ae,label:`1:1`,action:()=>c(1)},{icon:Te,label:`3:2`,action:()=>c(3/2)},{icon:Te,label:`16:9`,action:()=>c(16/9)}]},{type:`flip`,buttons:[{icon:se,label:`垂直翻转`,action:()=>u(!1,!0)},{icon:oe,label:`水平翻转`,action:()=>u(!0,!1)}]},{type:`rotate`,buttons:[{icon:Oe,label:`向左90°`,action:()=>l(-90)},{icon:ke,label:`向右90°`,action:()=>l(90)}]},{type:`actions`,buttons:[{icon:De,label:`重置`,action:()=>{a.current?.cropper&&(a.current.cropper.reset(),c(void 0))}},{icon:Re,label:`放弃`,action:()=>n(!1)},{icon:D,label:`完成`,action:o}]}];return _(On,{open:t,onOpenChange:n,children:v(jn,{showCloseButton:!1,className:`flex h-[720px] max-h-[90vh] max-w-screen-lg flex-col gap-0 px-8 pb-0 pt-8`,children:[_(Mn,{className:`hidden`,children:_(Nn,{children:`编辑图片`})}),_(`div`,{className:`relative w-full flex-grow overflow-hidden rounded-md`,children:_(ft,{ref:a,src:r,style:{height:`100%`,width:`100%`},initialAspectRatio:void 0,viewMode:0,dragMode:`move`,autoCropArea:1})}),_(`div`,{className:`flex h-20 items-center justify-center gap-2`,children:d.map((e,t)=>v(s.Fragment,{children:[e.buttons.map(({icon:e,label:t,action:n,variant:r=`ghost`})=>v(U,{variant:r,className:`flex h-14 w-14 flex-col items-center justify-center gap-1 hover:bg-transparent hover:text-primary`,onClick:n,children:[_(e,{size:20}),_(`span`,{className:`text-xs`,children:t})]},t)),t<d.length-1&&_(X,{orientation:`vertical`,className:`h-12`})]},e.type))})]})})}const Fn=o.memo(o.forwardRef(({children:e,className:t,...n},r)=>_(`div`,{ref:r,className:H(`absolute -top-14 left-0 opacity-0 group-hover/node-image:opacity-100`,`border-line z-50 flex items-center gap-3 rounded-xl border bg-white px-3 py-2 shadow-[0px_0px_20px_0px_rgba(0,0,0,0.1)]`,t),...n,children:e})));Fn.displayName=`ActionWrapper`;const In=o.memo(({editor:e,node:t,imageState:n,setImageState:r,updateAttributes:i})=>{let[a,s]=o.useState(!1),c=t=>{r(e=>({...e,src:t,isServerUploading:!1})),i({src:t}),e.commands.setImages([{src:t}]),e.chain().focus().run()},l=[{icon:x,tooltip:`左对齐`,onClick:()=>i({align:`left`})},{icon:y,tooltip:`居中对齐`,onClick:()=>i({align:`center`})},{icon:S,tooltip:`右对齐`,onClick:()=>i({align:`right`})}],u=[{icon:Ce,tooltip:`预览`,onClick:()=>{r(e=>({...e,isZoomed:!0}))}},{icon:k,tooltip:`移除`,onClick:()=>{e.commands.command(({tr:e,dispatch:t})=>{let{selection:n}=e,r=e.doc.nodeAt(n.from);return r&&r.type.name===`image`&&t?(e.deleteSelection(),!0):!1})}}];return v(Fn,{children:[l.map(({icon:e,tooltip:t,onClick:n},r)=>_(G,{tooltip:t,onClick:n,children:_(e,{size:`20`})},r)),_(X,{className:`h-5`,orientation:`vertical`}),u.map(({icon:e,tooltip:t,onClick:n},r)=>_(G,{tooltip:t,onClick:n,children:_(e,{size:`20`})},r)),_(Pn,{editor:e,onOpenChange:s,open:a,onComplete:c,imageSrc:n.src})]})});In.displayName=`ImageActions`;const Ln=o.memo(()=>_(`div`,{className:H(`flex flex-row items-center justify-center`,`absolute inset-0 rounded bg-[var(--mt-overlay)] opacity-100 transition-opacity`),children:_(Se,{className:`size-7 animate-spin`})}));Ln.displayName=`ImageOverlay`;const Rn=[`tl`,`tr`,`bl`,`br`],zn=({className:e,initiateResize:t})=>{let n=o.useCallback(e=>{let t=``;switch(e){case`tl`:t=`top-0 left-0 -translate-x-1/2 -translate-y-1/2 h-3 w-3 cursor-nwse-resize`;break;case`tr`:t=`top-0 right-0 translate-x-1/2 -translate-y-1/2 h-3 w-3 cursor-nesw-resize`;break;case`bl`:t=`bottom-0 left-0 -translate-x-1/2 translate-y-1/2 h-3 w-3 cursor-nesw-resize`;break;case`br`:t=`bottom-0 right-0 translate-x-1/2 translate-y-1/2 h-3 w-3 cursor-nwse-resize`;break;case`top`:t=`top-0 left-1/2 -translate-x-1/2 -translate-y-1/2 h-3 w-3 cursor-ns-resize`;break;case`right`:t=`top-1/2 right-0 translate-x-1/2 -translate-y-1/2 h-3 w-3 cursor-ew-resize`;break;case`bottom`:t=`bottom-0 left-1/2 -translate-x-1/2 translate-y-1/2 h-3 w-3 cursor-ns-resize`;break;case`left`:t=`top-1/2 left-0 -translate-x-1/2 -translate-y-1/2 h-3 w-3 cursor-ew-resize`;break;default:}return H(`absolute z-10 block border border-primary bg-white`,t)},[]);return _(`div`,{className:H(`absolute left-0 top-0 z-10 h-full w-full cursor-pointer border border-primary`,e),children:Rn?.map(e=>_(`span`,{className:n(e),onPointerDown:n=>t(e)(n)},e))})};zn.displayName=`ResizeHandle`;const Bn=async e=>{let t=await(await fetch(e)).blob();return new Promise((e,n)=>{let r=new FileReader;r.onloadend=()=>{typeof r.result==`string`?e(r.result):n(Error(`Failed to convert Blob to base64`))},r.onerror=n,r.readAsDataURL(t)})},Vn=e=>{let t=e.match(/data:([a-zA-Z0-9]+\/[a-zA-Z0-9-.+]+).*,.*/);return t&&t.length>1?t[1]:`unknown`},Hn=e=>{if(e.startsWith(`data:`)){let t=e.match(/^data:[^;]+;base64,(.+)$/);if(t&&t[1])e=t[1];else return!1}try{return btoa(atob(e))===e}catch{return!1}},Un=(e,{allowedMimeTypes:t,maxFileSize:n})=>{let r=e instanceof File?e.type:Vn(e),i=e instanceof File?e.size:atob(e.split(`,`)[1]).length;return{isValidType:t.length===0||t.includes(r)||t.includes(`${r.split(`/`)[0]}/*`),isValidSize:!n||i<=n}},Wn=(e,t,n,r,i)=>{let{isValidType:a,isValidSize:o}=Un(e,t);a&&o?r.push(n):(a||i.push({file:e,reason:`type`}),o||i.push({file:e,reason:`size`}))},Gn=(e,t={requireHostname:!1})=>{if(e.includes(`
3
+ `))return!1;try{let n=new URL(e);return[`javascript:`,`file:`,`vbscript:`,...t.allowBase64?[]:[`data:`]].includes(n.protocol)?!1:t.allowBase64&&n.protocol===`data:`?/^data:image\/[a-z]+;base64,/.test(e):n.hostname?!0:n.protocol!==``&&(n.pathname.startsWith(`//`)||n.pathname.startsWith(`http`))&&!t.requireHostname}catch{return!1}},Kn=(e,t={})=>{if(e)return t.allowBase64&&e.startsWith(`data:image`)?Gn(e,{requireHostname:!1,allowBase64:!0})?e:void 0:Gn(e,{requireHostname:!1,allowBase64:t.allowBase64})||/^(\/|#|mailto:|sms:|fax:|tel:)/.test(e)?e:`https://${e}`},qn=(e,t)=>{let n=[],r=[];return e.forEach(e=>{let i=`src`in e?e.src:e;i instanceof File?Wn(i,t,e,n,r):typeof i==`string`&&(Hn(i)?t.allowBase64?Wn(i,t,e,n,r):r.push({file:i,reason:`base64NotAllowed`}):Kn(i,{allowBase64:t.allowBase64})?n.push(e):r.push({file:i,reason:`invalidBase64`}))}),[n,r]},Jn=({editor:e,node:t,selected:r,updateAttributes:i})=>{let{src:a,width:s,height:c,align:l,fileName:u,fileType:d}=t.attrs,[f,p]=o.useState({src:a,isServerUploading:!1,imageLoaded:!1,isZoomed:!1,error:!1,naturalSize:{width:s,height:c}}),m=o.useRef(null),h=o.useCallback(({width:e,height:t})=>{i({width:e,height:t})},[i]),g=()=>{e.commands.command(({tr:e,dispatch:t})=>{let{selection:n}=e,r=e.doc.nodeAt(n.from);return r&&r.type.name===`image`&&t?(e.deleteSelection(),!0):!1})},y=840*(f.naturalSize.width/f.naturalSize.height),b=m.current?parseFloat(getComputedStyle(m.current).getPropertyValue(`--editor-width`)):1/0,{currentWidth:x,currentHeight:S,updateDimensions:C,initiateResize:w,isResizing:T}=Dn({initialWidth:s??f.naturalSize.width,initialHeight:c??f.naturalSize.height,contentWidth:f.naturalSize.width,contentHeight:f.naturalSize.height,gridInterval:.1,onDimensionsChange:h,minWidth:120,minHeight:120,maxWidth:b>0?b:y}),E=o.useCallback(e=>{let t=e.target,n={width:t.naturalWidth,height:t.naturalHeight};p(e=>({...e,naturalSize:n,imageLoaded:!0})),i({width:t.width||n.width,height:t.height||n.height,alt:t.alt,title:t.title}),s||C(e=>({...e,width:n.width}))},[s,i,C]),ee=o.useCallback(()=>{p(e=>({...e,error:!0,imageLoaded:!0}))},[]),te=async()=>{let{uploadFn:t}=e.options.extensions.find(e=>e.name===`image`)?.options??{};if(a.startsWith(`blob:`)||a.startsWith(`http`)&&a.includes(`pixabay.com`)){if(f.isServerUploading)return;if(t)try{p(e=>({...e,isServerUploading:!0}));let e;e=a.startsWith(`blob:`)?await(await fetch(a)).blob():await(await fetch(a,{mode:`cors`})).blob();let n=await t(new File([e],`${u||`image`}.jpg`,{type:d||e.type}));p(e=>({...e,src:n,isServerUploading:!1})),i({src:n})}catch(e){console.error(`图片上传失败:`,e),p(e=>({...e,error:!0,isServerUploading:!1}))}else try{let e=await Bn(a);p(t=>({...t,src:e})),i({src:e})}catch{p(e=>({...e,error:!0}))}a.startsWith(`blob:`)&&URL.revokeObjectURL(a)}};return o.useEffect(()=>{te()},[a]),_(n,{ref:m,"data-drag-handle":!0,className:`relative flex justify-center`,style:{justifyContent:l},children:_(`div`,{className:`node-image group/node-image relative rounded-md object-contain`,style:{maxWidth:`min(${y}px, 100%)`,width:x,maxHeight:840,aspectRatio:`${f.naturalSize.width} / ${f.naturalSize.height}`},children:v(`div`,{className:H(`relative flex h-full cursor-default flex-col items-center gap-2 rounded`),children:[v(`div`,{className:`relative h-full`,children:[!f.imageLoaded&&!f.error&&_(`div`,{className:`absolute inset-0 flex items-center justify-center`,children:_(Se,{className:`size-7 animate-spin`})}),_(dt,{isZoomed:f.isZoomed,onZoomChange:()=>p(e=>({...e,isZoomed:!1})),children:_(`img`,{className:H(`h-auto rounded transition-shadow`,{"opacity-30":!f.imageLoaded||f.error}),style:{maxWidth:`min(100%, ${y}px)`,minWidth:`120px`,maxHeight:840,cursor:`pointer`},onDoubleClick:()=>{p(e=>({...e,isZoomed:!0}))},width:x,height:S,src:f.src,onError:ee,onLoad:E,alt:t.attrs.alt||``})})]}),f.isServerUploading&&_(Ln,{}),e.isEditable&&f.imageLoaded&&!f.error&&!f.isServerUploading&&(r||T)&&_(zn,{initiateResize:w}),f.error&&_(Fn,{children:_(G,{tooltip:`移除图片`,onClick:g,children:_(k,{className:`size-4`})})}),!T&&!f.error&&!f.isServerUploading&&_(In,{editor:e,node:t,imageState:f,setImageState:p,updateAttributes:i})]})})})},Yn=(e,t,n)=>{let r=e instanceof Error?e:Error(`Unknown error`);n?.(r,t)},Xn=async(e,t)=>{let{src:n}=e;try{let r=await(await fetch(n)).blob();await navigator.clipboard.write([new ClipboardItem({[r.type]:r})]),t.onActionSuccess?.({...e,action:`copyImage`})}catch(n){Yn(n,{...e,action:`copyImage`},t.onActionError)}},Zn=async(e,t)=>{let{src:n}=e;try{await navigator.clipboard.writeText(n),t.onActionSuccess?.({...e,action:`copyLink`})}catch(n){Yn(n,{...e,action:`copyLink`},t.onActionError)}};var Qn=ut.extend({atom:!0,addOptions(){return{...this.parent?.(),allowedMimeTypes:[],maxFileSize:0,uploadFn:void 0}},addAttributes(){return{...this.parent?.(),width:{default:void 0},height:{default:void 0},align:{default:`center`,parseHTML:e=>e.getAttribute(`align`),renderHTML:e=>({align:e.align})},fileName:{default:void 0},fileType:{default:void 0}}},addCommands(){return{setImages:e=>({commands:t,editor:n})=>{let[r,i]=qn(e,{allowedMimeTypes:this.options.allowedMimeTypes,maxFileSize:this.options.maxFileSize,allowBase64:this.options.allowBase64});return i.length>0&&this.options.onValidationError&&this.options.onValidationError(i),r.length>0&&(r.forEach(async e=>{if(e.src instanceof File){let r=e.src,i=URL.createObjectURL(r);if(t.insertContent({type:this.name,attrs:{src:i,fileName:r.name}}),this.options.uploadFn){let e=await this.options.uploadFn(r,n);n.commands.updateAttributes(this.name,{src:e})}}else t.insertContent({type:this.name,attrs:{src:e.src}})}),r.map(e=>{if(e.src instanceof File){let t=URL.createObjectURL(e.src);return{type:this.type.name,attrs:{src:t,alt:e.alt,title:e.title,fileName:e.src.name,fileType:e.src.type,width:400}}}else return{type:this.type.name,attrs:{src:e.src,alt:e.alt,title:e.title,fileName:null,fileType:null,width:400}}})),!1},setImageInline:e=>({commands:t})=>t.insertContent({type:this.name,attrs:e}),updateImage:e=>({commands:t})=>(console.log(`updateImage options: `,e),t.updateAttributes(this.name,e)),setAlignImage:e=>({commands:t})=>t.updateAttributes(this.name,{align:e}),copyImage:e=>()=>((this.options.customCopyImage||Xn)({...e,action:`copyImage`},this.options),!0),copyLink:e=>()=>((this.options.customCopyLink||Zn)({...e,action:`copyLink`},this.options),!0)}},addNodeView(){return r(Jn,{className:`block-node`})}}),$n=Ct.extend({inclusive:!1,parseHTML(){return[{tag:`a[href]:not([data-type="button"]):not([href *= "javascript:" i])`}]},renderHTML({HTMLAttributes:e}){return[`a`,St(this.options.HTMLAttributes,e,{class:`link`}),0]},addProseMirrorPlugins(){return[...this.parent?.()||[],new F({props:{handleClick(e,t){let{schema:n,doc:r,tr:i}=e.state,a=bt(r.resolve(t),n.marks.link);if(!a)return;let{from:o,to:s}=a,c=Math.min(o,s),l=Math.max(o,s);if(t<c||t>l)return;let u=r.resolve(c),d=r.resolve(l),f=i.setSelection(new Tt(u,d));e.dispatch(f)}}})]}});const er={aiGenerationIsSelection:!1,aiGenerationIsLoading:!1,aiGenerationActive:!1,aiGenerationHasMessage:!1,commentInputVisible:!1,lockDragHandle:!1,isDragging:!1},tr=_t.create({name:`uiState`,addStorage(){return{uiState:{...er}}},addCommands(){let e=e=>t=>()=>(this.storage[e]=t,!0),t=(e,t)=>()=>()=>(this.storage[e]=t,!0);return{aiGenerationSetIsSelection:e(`aiGenerationIsSelection`),aiGenerationSetIsLoading:e(`aiGenerationIsLoading`),aiGenerationHasMessage:e(`aiGenerationHasMessage`),aiGenerationShow:t(`aiGenerationActive`,!0),aiGenerationHide:t(`aiGenerationActive`,!1),commentInputShow:t(`commentInputVisible`,!0),commentInputHide:t(`commentInputVisible`,!1),setLockDragHandle:e(`lockDragHandle`),setIsDragging:e(`isDragging`),resetUiState:()=>()=>(Object.assign(this.storage,{...er}),!0)}},onCreate(){this.storage={...er}}}),nr=[`image`,`codeBlock`,`link`,`table`,`title`],rr=e=>{let t=e;for(;t&&![`TD`,`TH`].includes(t.tagName);)t=t.parentElement;let n=t&&t.querySelector&&t.querySelector(`a.grip-column.selected`),r=t&&t.querySelector&&t.querySelector(`a.grip-row.selected`);return!!(n||r)},ir=(e,t)=>{let{from:n,to:r}=e.state.selection,i=!1;e.state.doc.nodesBetween(n,r,(e,t)=>{e.type.name===`title`&&(i=!0)});let a=nr.some(t=>e.isActive(t)),o=rr(t);return a||o||i},ar=({editor:e})=>{let{doc:t,selection:n,selection:{empty:r,from:i,to:a}}=e.state,o=!t.textBetween(i,a).length&&xt(n);return!(r||o||!e.isEditable)},or=e=>yt(e=>e.type.spec.tableRole&&e.type.spec.tableRole===`table`)(e),Z=e=>t=>{if(Q(t)){let n=L.get(t.$anchorCell.node(-1)),r=t.$anchorCell.start(-1),i=n.cellsInRect(e),a=n.cellsInRect(n.rectBetween(t.$anchorCell.pos-r,t.$headCell.pos-r));for(let e=0,t=i.length;e<t;e+=1)if(a.indexOf(i[e])===-1)return!1;return!0}return!1},Q=e=>e instanceof At,sr=e=>t=>{if(Q(t)){let n=L.get(t.$anchorCell.node(-1));return Z({left:e,right:e+1,top:0,bottom:n.height})(t)}return!1},cr=e=>t=>Q(t)?Z({left:0,right:L.get(t.$anchorCell.node(-1)).width,top:e,bottom:e+1})(t):!1,lr=e=>{if(Q(e)){let t=L.get(e.$anchorCell.node(-1));return Z({left:0,right:t.width,top:0,bottom:t.height})(e)}return!1},ur=e=>t=>{let n=or(t);if(n){let t=L.get(n.node);return(Array.isArray(e)?e:Array.from([e])).reduce((e,r)=>{if(r>=0&&r<=t.width-1){let i=t.cellsInRect({left:r,right:r+1,top:0,bottom:t.height});return e.concat(i.map(e=>{let t=n.node.nodeAt(e),r=e+n.start;return{pos:r,start:r+1,node:t}}))}return e},[])}return null},dr=e=>t=>{let n=or(t);if(n){let t=L.get(n.node);return(Array.isArray(e)?e:Array.from([e])).reduce((e,r)=>{if(r>=0&&r<=t.height-1){let i=t.cellsInRect({left:0,right:t.width,top:r,bottom:r+1});return e.concat(i.map(e=>{let t=n.node.nodeAt(e),r=e+n.start;return{pos:r,start:r+1,node:t}}))}return e},[])}return null},fr=e=>t=>n=>{let r=or(n.selection),i=e===`row`;if(r){let e=L.get(r.node);if(t>=0&&t<(i?e.height:e.width)){let a=i?0:t,o=i?t:0,s=i?e.width:t+1,c=i?t+1:e.height,l=e.cellsInRect({left:a,top:o,right:i?s:a+1,bottom:i?o+1:c}),u=c-o===1?l:e.cellsInRect({left:i?a:s-1,top:i?c-1:o,right:s,bottom:c}),d=r.start+l[0],f=r.start+u[u.length-1],p=n.doc.resolve(d),m=n.doc.resolve(f);return n.setSelection(new At(m,p))}}return n},pr=fr(`column`),mr=fr(`row`),hr=vt.create({name:`tableCell`,content:`block+`,tableRole:`cell`,isolating:!0,addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:`td`}]},renderHTML({HTMLAttributes:e}){return[`td`,St(this.options.HTMLAttributes,e),0]},addAttributes(){return{colspan:{default:1,parseHTML:e=>{let t=e.getAttribute(`colspan`);return t?parseInt(t,10):1}},rowspan:{default:1,parseHTML:e=>{let t=e.getAttribute(`rowspan`);return t?parseInt(t,10):1}},colwidth:{default:null,parseHTML:e=>{let t=e.getAttribute(`colwidth`);return t?t.split(`,`).map(e=>parseInt(e,10)):null}},style:{default:null}}},addProseMirrorPlugins(){let{isEditable:e}=this.editor;return[new F({props:{decorations:t=>{if(!e)return I.empty;let{doc:n,selection:r}=t,i=[],a=ur(0)(r);return a&&a.forEach(({pos:e},t)=>{i.push(kt.widget(e+1,()=>{let e=cr(t)(r),n=`grip-row`;e&&(n+=` selected`),t===0&&(n+=` first`),t===a.length-1&&(n+=` last`);let i=document.createElement(`a`);return i.className=n,i.addEventListener(`mousedown`,e=>{e.preventDefault(),e.stopImmediatePropagation(),this.editor.view.dispatch(mr(t)(this.editor.state.tr))}),i}))}),I.create(n,i)}}})]}}),gr=Dt.extend({addProseMirrorPlugins(){let{isEditable:e}=this.editor;return[new F({props:{decorations:t=>{if(!e)return I.empty;let{doc:n,selection:r}=t,i=[],a=dr(0)(r);return a&&a.forEach(({pos:e},t)=>{i.push(kt.widget(e+1,()=>{let e=sr(t)(r),n=`grip-column`;e&&(n+=` selected`),t===0&&(n+=` first`),t===a.length-1&&(n+=` last`);let i=document.createElement(`a`);return i.className=n,i.addEventListener(`mousedown`,e=>{e.preventDefault(),e.stopImmediatePropagation(),this.editor.view.dispatch(pr(t)(this.editor.state.tr))}),i}))}),I.create(n,i)}}})]}}),_r=Ot.extend({allowGapCursor:!1});var vr=Et.extend({addOptions(){return{...this.parent?.(),resizable:!0,lastColumnResizable:!0,allowTableNodeSelection:!0,HTMLAttributes:{}}},addExtensions(){return[_r.configure(this.options.tableRow),gr.configure(this.options.tableHeader),hr.configure(this.options.tableCell)]}});const $=ct(st);$.register(`html`,gt),$.register(`css`,pt),$.register(`js`,mt),$.register(`ts`,ht);const yr=e=>{let{uploadFn:t}=e;return[Xe,qe,tt.configure({placeholder:({node:e})=>{let t=e?.type?.name;return t===`title`?`未命名文档`:t===`heading`?`标题${e.attrs.level}`:t===`codeBlock`?`请输入代码`:t===`table`?``:`请输入内容`}}),$e.configure({className:`node-focused`,mode:`all`}),Ze.configure({types:[`heading`,`paragraph`]}),Ye,Je,it,rt,vr,et,Qn.configure({allowedMimeTypes:[`image/*`],maxFileSize:10*1024*1024,allowBase64:!1,uploadFn:t,onActionSuccess(e){console.log(`Image action success:`,e)},onValidationError(e){e.forEach(e=>{})}}),Qe,at.configure({allowedMimeTypes:[`image/png`,`image/jpeg`,`image/gif`,`image/webp`],onDrop:(e,n,r)=>{n.forEach(async n=>{let i=URL.createObjectURL(n);if(e.chain().insertContentAt(r,{type:`image`,attrs:{src:i,fileName:n.name}}).focus().run(),t)try{let r=await t(n,e);e.commands.updateAttributes(`image`,{src:r})}catch(e){console.error(`上传失败:`,e)}finally{URL.revokeObjectURL(i)}})},onPaste:(e,n,r)=>{if(r)return!1;n.forEach(async n=>{let r=URL.createObjectURL(n);if(e.chain().insertContentAt(e.state.selection.anchor,{type:`image`,attrs:{src:r}}).focus().run(),t)try{let r=await t(n,e);e.commands.updateAttributes(`image`,{src:r})}catch(e){console.error(`粘贴上传失败:`,e)}finally{URL.revokeObjectURL(r)}})}}),nt.configure({className:`selection`}),$n.configure({openOnClick:`whenNotEditable`}),ot.extend({addNodeView(){return r(En)}}).configure({lowlight:$}),tr,jt]};var br=()=>{let{editor:e}=R();return _(Mt,{editor:e,pluginKey:`textBubbleMenu`,shouldShow:u(t=>{let{view:n,from:r,to:i}=t;if(!n||n.dragging)return!1;let a=n.domAtPos(r||0).node,o=n.nodeDOM(r||0)||a,s=e.state.selection instanceof wt;return ir(e,o)||s?!1:ar({editor:e})},[e]),updateDelay:100,options:{placement:`top-start`,onShow:()=>{},onHide:()=>{console.log(`textBubbleMenu onHidden`)}},appendTo:()=>document.body,children:v(`div`,{className:`flex h-[52px] items-center justify-center gap-3 rounded-xl border-primary/10 bg-white px-4 shadow-[0px_0px_20px_0px_rgba(0,0,0,0.1)]`,children:[_(X,{orientation:`vertical`,className:`bg-line h-4`}),_(rn,{textFormatActions:qt}),_(cn,{}),_(un,{}),_(fn,{})]})})},xr=({currentNode:e,currentNodePos:t})=>{let{editor:n}=R(),r=Y();return _(`div`,{className:`gap flex flex-wrap gap-[12px]`,children:Jt.map(e=>_(W,{isActive:e.isActive?.(r),onClick:()=>e.onClick(n),disabled:e.disabled?.(r),tooltip:e.label,shortcutKeys:e.shortcutKeys,children:_(e.icon,{size:20})},e.id))})},Sr=({withSlashCommandTrigger:e=!0,mobileBreakpoint:t=768,...n})=>{let{editor:r}=R(),[i,a]=h(!1),[o,s]=h(null),[c,l]=h(-1),d=u(e=>{e.node&&s(e.node),l(e.pos)},[]);f(()=>{r&&(r.commands.setLockDragHandle(i),r.commands.setMeta(`lockDragHandle`,i))},[r,i]);let m=p(()=>({middleware:[Nt(e=>{let{rects:t}=e,n=t.reference.height,r=t.floating.height,i=n/2-r/2;return{mainAxis:16,crossAxis:n>40?0:i}})]}),[]),y=u(()=>{r&&r.commands.setIsDragging(!0)},[r]),b=u(()=>{r&&(r.commands.setIsDragging(!1),setTimeout(()=>{r.view.dom.blur(),r.view.focus()},0))},[r]),x=()=>{r.chain().setMeta(`hideDragHandle`,!0).run(),r.chain().setNodeSelection(c).run();let e=o?.textContent;console.log(e),lt(e||``)},S=()=>{r.chain().setMeta(`hideDragHandle`,!0).setNodeSelection(c).deleteSelection().run()};return r?_(`div`,{style:{"--drag-handle-main-axis-offset":`16px`},children:_(Pt,{editor:r,onNodeChange:d,computePositionConfig:m,onElementDragStart:y,onElementDragEnd:b,...n,children:v(bn,{open:i,onOpenChange:a,children:[_(xn,{asChild:!0,children:_(U,{variant:`ghost`,size:`icon`,className:`z-1 drag-handle flex h-8 w-8 items-center justify-center rounded-lg bg-gray-200 hover:bg-gray-300`,children:_(ce,{size:16})})}),v(Sn,{className:`z-50 w-[164px] border-none p-[8px] shadow-[0_0px_12px_0px_rgba(0,0,0,0.1)]`,align:`start`,side:`bottom`,sideOffset:0,children:[[`image`,`table`].indexOf(o?.type.name||``)===-1&&v(g,{children:[_(xr,{currentNode:o,currentNodePos:c}),_(wn,{}),v(Cn,{className:`flex cursor-pointer gap-3`,onClick:x,children:[_(ae,{size:16}),_(`span`,{children:`复制`})]})]}),v(Cn,{onClick:S,className:`flex cursor-pointer gap-3`,children:[_(k,{size:16}),_(`span`,{children:`删除`})]})]})]})})}):null};function Cr(){let{editor:e}=R(),t=a({editor:e,selector:e=>{let{selection:t,doc:n}=e.editor.state,r=ur(0)(t),i=dr(0)(t),a=0,o=0;return n.nodesBetween(t.from,t.to,e=>{e.type.name===`table`&&(a=e.childCount,o=e.firstChild?e.firstChild.childCount:0)}),{canAddColumnBefore:e.editor.can().addColumnBefore(),canAddColumnAfter:e.editor.can().addColumnAfter(),canDeleteColumn:e.editor.can().deleteColumn(),canAddRowBefore:e.editor.can().addRowBefore(),canAddRowAfter:e.editor.can().addRowAfter(),canDeleteRow:e.editor.can().deleteRow(),canSplitCell:e.editor.can().splitCell(),canMergeCell:e.editor.can().mergeCells(),canDeleteTable:e.editor.can().deleteTable(),isRowGripSelected:r?.some((e,n)=>cr(n)(t)),isColumnGripSelected:i?.some((e,n)=>sr(n)(t)),rowCount:a,columnCount:o}}}),n=u(({editor:e,state:t,view:n,from:r})=>{if(!t||!r)return!1;let i=n.domAtPos(r).node,a=n.nodeDOM(r)||i;return!e.isActive(`table`)||!a||lr(t.selection)?!1:Q(t.selection)},[]),r=n=>{console.log(`onAddColumn selectorState.columnCount`,t.columnCount),!(t.columnCount>=50)&&(n===`before`?e.chain().focus().addColumnBefore().run():e.chain().focus().addColumnAfter().run())},i=n=>{console.log(`onAddRow selectorState.rowCount`,t.rowCount),!(t.rowCount>=100)&&(n===`before`?e.chain().focus().addRowBefore().run():e.chain().focus().addRowAfter().run())};return _(Mt,{editor:e,pluginKey:`tableBubbleMenu`,shouldShow:n,updateDelay:0,className:`z-20`,options:{offset:{mainAxis:0,crossAxis:8},placement:`top-start`,onShow:()=>{},onHide:()=>{console.log(`tableBubbleMenu onHidden`)}},children:v(`div`,{className:`border-line z-50 flex w-full items-center gap-3 rounded-xl border bg-white px-3 py-2 shadow-[0px_0px_20px_0px_rgba(0,0,0,0.1)]`,children:[t.isColumnGripSelected&&_(W,{tooltip:`在前面插入列`,onClick:()=>{r(`before`)},"tooltip-options":{sideOffset:15},disabled:!t.canAddColumnBefore,children:_(w,{size:20})}),t.isColumnGripSelected&&_(W,{tooltip:`在后面插入列`,onClick:()=>{r(`after`)},"tooltip-options":{sideOffset:15},disabled:!t.canAddColumnAfter,children:_(T,{size:20})}),t.isColumnGripSelected&&_(W,{tooltip:`删除列`,onClick:()=>{e.chain().focus().deleteColumn().run()},"tooltip-options":{sideOffset:15},disabled:!t.canDeleteColumn,children:_(k,{size:20})}),t.isRowGripSelected&&_(W,{onClick:()=>{i(`before`)},tooltip:`在上面插入行`,"tooltip-options":{sideOffset:15},disabled:!t.canAddRowBefore,children:_(E,{size:20})}),t.isRowGripSelected&&_(W,{onClick:()=>{i(`after`)},tooltip:`在下面插入行`,"tooltip-options":{sideOffset:15},disabled:!t.canAddRowBefore,children:_(C,{size:20})}),t.isRowGripSelected&&_(W,{onClick:()=>{e.chain().focus().deleteRow().run()},tooltip:`删除行`,"tooltip-options":{sideOffset:15},disabled:!t.canDeleteRow,children:_(k,{size:20})}),_(W,{onClick:()=>{e.chain().focus().mergeCells().run()},tooltip:`合并单元格`,"tooltip-options":{sideOffset:15},disabled:!t.canMergeCell,children:_(Ne,{size:20})}),_(W,{onClick:()=>{e.chain().focus().splitCell().run()},tooltip:`拆分单元格`,"tooltip-options":{sideOffset:15},disabled:!t.canSplitCell,children:_(Pe,{size:20})})]})})}var wr=l(Cr);const Tr=({value:t,onChange:n,onImageUpload:r,className:a,showToolbar:o=!0,showBubbleMenu:s=!0,showTableMenu:c=!0,showBlockMenu:l=!0,toolbarProps:u,onInitEditor:d})=>{let f=i({immediatelyRender:!1,extensions:yr({uploadFn:r}),content:t,editorProps:{attributes:{class:`w-full focus:outline-none`}},onUpdate:({editor:e})=>{n(e.getHTML())},onCreate:({editor:e})=>{d?.(e)}});return f?v(It,{editor:f,children:[o&&_(yn,{...u}),s&&_(br,{}),c&&_(wr,{}),l&&_(Sr,{}),_(e,{editor:f,className:H(`w-full`,a)})]}):null};export{Tr as TiptapComponent,yn as Toolbar};
4
+ //# sourceMappingURL=index.mjs.map