@xcrong/docx-editor-react 1.10.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/LICENSE +201 -0
- package/README.md +139 -0
- package/dist/FindReplaceDialog-2J5L7NIN.js +1 -0
- package/dist/FindReplaceDialog-CQZ2ACFZ.mjs +1 -0
- package/dist/FootnotePropertiesDialog-IZTVCSEH.js +1 -0
- package/dist/FootnotePropertiesDialog-R5X6HNN4.mjs +1 -0
- package/dist/HyperlinkDialog-NQ3P6VLB.mjs +1 -0
- package/dist/HyperlinkDialog-T3TFJMM4.js +1 -0
- package/dist/ImagePositionDialog-DGWYOGJ5.mjs +1 -0
- package/dist/ImagePositionDialog-XY54XYQF.js +1 -0
- package/dist/ImagePropertiesDialog-P25NMVJ3.mjs +1 -0
- package/dist/ImagePropertiesDialog-XF5IK2CJ.js +1 -0
- package/dist/KeyboardShortcutsDialog-C_-ezdLe.d.mts +415 -0
- package/dist/KeyboardShortcutsDialog-C_-ezdLe.d.ts +415 -0
- package/dist/PageSetupDialog-JKGEEF46.js +1 -0
- package/dist/PageSetupDialog-N254DNPP.mjs +1 -0
- package/dist/SplitCellDialog-TVHC6CKG.mjs +1 -0
- package/dist/SplitCellDialog-UOYHD6SK.js +1 -0
- package/dist/TablePropertiesDialog-HLBXHQ45.mjs +1 -0
- package/dist/TablePropertiesDialog-KWJCV57E.js +1 -0
- package/dist/WatermarkDialog-QROAQR45.js +1 -0
- package/dist/WatermarkDialog-V75FJIG7.mjs +1 -0
- package/dist/chunk-64PNP7ZR.mjs +1 -0
- package/dist/chunk-AD33TJ5N.mjs +1 -0
- package/dist/chunk-ASH336XK.mjs +1 -0
- package/dist/chunk-BJ5RZW6Y.js +1 -0
- package/dist/chunk-BMBP5UFA.mjs +1 -0
- package/dist/chunk-CFFOWBR2.mjs +1 -0
- package/dist/chunk-D2LFXRWX.js +1 -0
- package/dist/chunk-EP4LB6PM.js +2 -0
- package/dist/chunk-EQHZUVPK.js +2 -0
- package/dist/chunk-F7U6CZ4B.mjs +1 -0
- package/dist/chunk-FKWEUZMD.mjs +2 -0
- package/dist/chunk-GM2S2WMT.mjs +1 -0
- package/dist/chunk-HM63QNON.mjs +2 -0
- package/dist/chunk-I632RFTZ.js +2 -0
- package/dist/chunk-IMCZE5GZ.mjs +2 -0
- package/dist/chunk-MZOBOE4T.js +1 -0
- package/dist/chunk-NIBCC7WQ.js +1 -0
- package/dist/chunk-O6M2HAIZ.mjs +1 -0
- package/dist/chunk-OIFQ73UQ.js +2 -0
- package/dist/chunk-PSBO3UDN.js +1 -0
- package/dist/chunk-QA43VX7P.js +1 -0
- package/dist/chunk-QE2XVRTC.js +1 -0
- package/dist/chunk-R2MCJ7XN.js +1 -0
- package/dist/chunk-VYQOMKCH.js +1 -0
- package/dist/chunk-XNM4CW4A.mjs +2 -0
- package/dist/chunk-Z3YYCNY2.mjs +1 -0
- package/dist/dialogs.d.mts +40 -0
- package/dist/dialogs.d.ts +40 -0
- package/dist/dialogs.js +1 -0
- package/dist/dialogs.mjs +1 -0
- package/dist/hooks.d.mts +513 -0
- package/dist/hooks.d.ts +513 -0
- package/dist/hooks.js +1 -0
- package/dist/hooks.mjs +1 -0
- package/dist/index.d.mts +680 -0
- package/dist/index.d.ts +680 -0
- package/dist/index.js +31 -0
- package/dist/index.mjs +31 -0
- package/dist/plugin-api.d.mts +90 -0
- package/dist/plugin-api.d.ts +90 -0
- package/dist/plugin-api.js +246 -0
- package/dist/plugin-api.mjs +246 -0
- package/dist/styles.css +1 -0
- package/dist/styles.d.mts +13 -0
- package/dist/styles.d.ts +13 -0
- package/dist/styles.js +1 -0
- package/dist/styles.mjs +1 -0
- package/dist/types-CiOu8Z-d.d.mts +106 -0
- package/dist/types-CiOu8Z-d.d.ts +106 -0
- package/dist/ui.d.mts +1692 -0
- package/dist/ui.d.ts +1692 -0
- package/dist/ui.js +90 -0
- package/dist/ui.mjs +90 -0
- package/dist/useFindReplace-Cdhw3Nec.d.mts +219 -0
- package/dist/useFindReplace-Cdhw3Nec.d.ts +219 -0
- package/package.json +137 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {b as b$1}from'./chunk-O6M2HAIZ.mjs';import {b}from'./chunk-AD33TJ5N.mjs';import {useRef,useState,useEffect,useCallback,useMemo}from'react';import {readFromClipboard}from'@xcrong/docx-editor-core/utils';import {jsxs,jsx,Fragment}from'react/jsx-runtime';var v=[{id:"formatted",labelKey:"dialogs.pasteSpecial.keepFormatting",descriptionKey:"dialogs.pasteSpecial.keepFormattingDescription",shortcutKey:"dialogs.pasteSpecial.keepFormattingShortcut"},{id:"plainText",labelKey:"dialogs.pasteSpecial.plainText",descriptionKey:"dialogs.pasteSpecial.plainTextDescription",shortcutKey:"dialogs.pasteSpecial.plainTextShortcut"}],N=()=>jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[jsx("path",{d:"M4 4h12v2H4V4zM4 8h8v2H4V8zM4 12h10v2H4v-2zM4 16h6v2H4v-2z",fill:"currentColor"}),jsx("path",{d:"M14 10l3 3-3 3v-2h-2v-2h2v-2z",fill:"currentColor",opacity:"0.6"})]}),_=()=>jsx("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:jsx("path",{d:"M4 4h12v1H4V4zM4 7h12v1H4V7zM4 10h12v1H4v-1zM4 13h12v1H4v-1zM4 16h8v1H4v-1z",fill:"currentColor"})});function Y(e){switch(e){case "formatted":return jsx(N,{});case "plainText":return jsx(_,{});default:return null}}var j=({option:e,isSelected:t,onClick:l,onMouseEnter:y})=>jsxs("button",{type:"button",className:`docx-paste-special-option ${t?"docx-paste-special-option-selected":""}`,onClick:l,onMouseEnter:y,role:"menuitem","aria-selected":t,style:{display:"flex",alignItems:"center",gap:"12px",width:"100%",padding:"12px 16px",border:"none",background:t?"var(--doc-primary-light)":"transparent",cursor:"pointer",textAlign:"left",borderRadius:"4px",transition:"background-color 0.15s ease"},children:[jsx("span",{style:{display:"flex",alignItems:"center",justifyContent:"center",width:"32px",height:"32px",borderRadius:"4px",background:t?"var(--doc-primary)":"var(--doc-bg-hover)",color:t?"white":"var(--doc-text-muted)"},children:Y(e.id)}),jsxs("div",{style:{flex:1},children:[jsx("div",{style:{fontSize:"14px",fontWeight:500,color:"var(--doc-text)",marginBottom:"2px"},children:e.label}),jsx("div",{style:{fontSize:"12px",color:"var(--doc-text-muted)"},children:e.description})]}),jsx("span",{style:{fontSize:"11px",color:"var(--doc-text-subtle)",fontFamily:"monospace"},children:e.shortcut})]}),oe=({isOpen:e,onClose:t,onPaste:l,position:y,className:b$1=""})=>{let{t:o}=b(),m=useRef(null),[g,c]=useState(0),[i,S]=useState(null),[K,C]=useState(false),[s,r]=useState(null),a=v.map(d=>({id:d.id,label:o(d.labelKey),description:o(d.descriptionKey),shortcut:o(d.shortcutKey)}));useEffect(()=>{if(!e){S(null),r(null),c(0);return}(async()=>{C(true),r(null);try{let p=await readFromClipboard({cleanWordFormatting:!0});S(p),p||r(o("dialogs.pasteSpecial.noContent"));}catch{r(o("dialogs.pasteSpecial.clipboardError"));}finally{C(false);}})();},[e]),useEffect(()=>{if(!e)return;let d=p=>{m.current&&!m.current.contains(p.target)&&t();};return document.addEventListener("mousedown",d),()=>document.removeEventListener("mousedown",d)},[e,t]),useEffect(()=>{if(!e)return;let d=p=>{switch(p.key){case "Escape":p.preventDefault(),t();break;case "ArrowDown":p.preventDefault(),c(f=>(f+1)%v.length);break;case "ArrowUp":p.preventDefault(),c(f=>(f-1+v.length)%v.length);break;case "Enter":p.preventDefault(),h(v[g].id);break}};return document.addEventListener("keydown",d),()=>document.removeEventListener("keydown",d)},[e,g,t]);let h=useCallback(d=>{if(!i){r(o("dialogs.pasteSpecial.noContent"));return}l(i,d==="plainText"),t();},[i,l,t]),F=useCallback(()=>{let f=y?.x??(typeof window<"u"?window.innerWidth/2-160:100),w=y?.y??(typeof window<"u"?window.innerHeight/2-200/2:100);return typeof window<"u"&&(f+320>window.innerWidth&&(f=window.innerWidth-320-10),w+200>window.innerHeight&&(w=window.innerHeight-200-10),f<10&&(f=10),w<10&&(w=10)),{position:"fixed",top:w,left:f,width:320,background:"var(--doc-surface)",border:"1px solid var(--doc-border-light)",borderRadius:"8px",boxShadow:"0 4px 20px var(--doc-shadow)",zIndex:10001,overflow:"hidden"}},[y]);return e?jsxs("div",{ref:m,className:`docx-paste-special-dialog ${b$1}`,style:F(),role:"dialog","aria-label":o("dialogs.pasteSpecial.title"),children:[jsxs("div",{style:{padding:"12px 16px",borderBottom:"1px solid var(--doc-border)",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[jsx("span",{style:{fontSize:"14px",fontWeight:600,color:"var(--doc-text)"},children:o("dialogs.pasteSpecial.title")}),jsx("button",{type:"button",onClick:t,"aria-label":o("common.closeDialog"),style:{display:"flex",alignItems:"center",justifyContent:"center",width:"24px",height:"24px",border:"none",background:"transparent",cursor:"pointer",borderRadius:"4px",color:"var(--doc-text-muted)"},children:jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:jsx("path",{d:"M4 4l8 8M12 4l-8 8",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})})})]}),jsx("div",{style:{padding:"8px"},children:K?jsx("div",{style:{padding:"20px",textAlign:"center",color:"var(--doc-text-muted)",fontSize:"13px"},children:o("dialogs.pasteSpecial.readingClipboard")}):s?jsx("div",{style:{padding:"20px",textAlign:"center",color:"var(--doc-error)",fontSize:"13px"},children:s}):jsx("div",{role:"menu",children:a.map((d,p)=>jsx(j,{option:d,isSelected:p===g,onClick:()=>h(d.id),onMouseEnter:()=>c(p)},d.id))})}),i&&!K&&!s&&jsxs("div",{style:{padding:"8px 16px 12px",borderTop:"1px solid var(--doc-border)"},children:[jsx("div",{style:{fontSize:"11px",color:"var(--doc-text-muted)",marginBottom:"4px"},children:o("dialogs.pasteSpecial.preview")}),jsxs("div",{style:{fontSize:"12px",color:"var(--doc-text)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",padding:"6px 8px",background:"var(--doc-bg)",borderRadius:"4px"},children:['"',i.plainText.slice(0,50),i.plainText.length>50?"...":"",'"']})]})]}):null};function re(e={}){let{onPaste:t,enabled:l=true}=e,[y,b]=useState(false),o=useCallback(()=>{l&&b(true);},[l]),m=useCallback(()=>{b(false);},[]),g=useCallback(async()=>{if(!(!l||!t))try{let i=await readFromClipboard({cleanWordFormatting:!0});i&&t(i,!0);}catch(i){console.error("Failed to paste as plain text:",i);}},[l,t]),c=useCallback(i=>l&&(i.ctrlKey||i.metaKey)&&i.shiftKey&&i.key.toLowerCase()==="v"?(i.preventDefault(),o(),true):false,[l,o]);return {isOpen:y,openDialog:o,closeDialog:m,handleKeyDown:c,pasteAsPlainText:g}}function ie(e){return v.find(t=>t.id===e)}function se(){return [...v]}function ae(){return "formatted"}function ne(e){return (e.ctrlKey||e.metaKey)&&e.shiftKey&&e.key.toLowerCase()==="v"}var I={editing:"dialogs.keyboardShortcuts.categories.editing",formatting:"dialogs.keyboardShortcuts.categories.formatting",navigation:"dialogs.keyboardShortcuts.categories.navigation",clipboard:"dialogs.keyboardShortcuts.categories.clipboard",selection:"dialogs.keyboardShortcuts.categories.selection",view:"dialogs.keyboardShortcuts.categories.view",file:"dialogs.keyboardShortcuts.categories.file",other:"dialogs.keyboardShortcuts.categories.other"},M=["file","editing","clipboard","formatting","selection","navigation","view","other"],P=[{id:"save",name:"Save",nameKey:"dialogs.keyboardShortcuts.shortcuts.save",description:"Save document",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.saveDescription",keys:"Ctrl+S",category:"file",common:true},{id:"print",name:"Print",nameKey:"dialogs.keyboardShortcuts.shortcuts.print",description:"Print document",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.printDescription",keys:"Ctrl+P",category:"file"},{id:"undo",name:"Undo",nameKey:"dialogs.keyboardShortcuts.shortcuts.undo",description:"Undo last action",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.undoDescription",keys:"Ctrl+Z",category:"editing",common:true},{id:"redo",name:"Redo",nameKey:"dialogs.keyboardShortcuts.shortcuts.redo",description:"Redo last action",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.redoDescription",keys:"Ctrl+Y",altKeys:"Ctrl+Shift+Z",category:"editing",common:true},{id:"delete",name:"Delete",nameKey:"dialogs.keyboardShortcuts.shortcuts.delete",description:"Delete selected text",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.deleteDescription",keys:"Del",altKeys:"Backspace",category:"editing"},{id:"find",name:"Find",nameKey:"dialogs.keyboardShortcuts.shortcuts.find",description:"Find text in document",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.findDescription",keys:"Ctrl+F",category:"editing",common:true},{id:"replace",name:"Find & Replace",nameKey:"dialogs.keyboardShortcuts.shortcuts.findReplace",description:"Find and replace text",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.findReplaceDescription",keys:"Ctrl+H",category:"editing"},{id:"cut",name:"Cut",nameKey:"dialogs.keyboardShortcuts.shortcuts.cut",description:"Cut selected text",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.cutDescription",keys:"Ctrl+X",category:"clipboard",common:true},{id:"copy",name:"Copy",nameKey:"dialogs.keyboardShortcuts.shortcuts.copy",description:"Copy selected text",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.copyDescription",keys:"Ctrl+C",category:"clipboard",common:true},{id:"paste",name:"Paste",nameKey:"dialogs.keyboardShortcuts.shortcuts.paste",description:"Paste from clipboard",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.pasteDescription",keys:"Ctrl+V",category:"clipboard",common:true},{id:"paste-plain",name:"Paste as Plain Text",nameKey:"dialogs.keyboardShortcuts.shortcuts.pastePlainText",description:"Paste without formatting",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.pastePlainTextDescription",keys:"Ctrl+Shift+V",category:"clipboard"},{id:"bold",name:"Bold",nameKey:"dialogs.keyboardShortcuts.shortcuts.bold",description:"Toggle bold formatting",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.boldDescription",keys:"Ctrl+B",category:"formatting",common:true},{id:"italic",name:"Italic",nameKey:"dialogs.keyboardShortcuts.shortcuts.italic",description:"Toggle italic formatting",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.italicDescription",keys:"Ctrl+I",category:"formatting",common:true},{id:"underline",name:"Underline",nameKey:"dialogs.keyboardShortcuts.shortcuts.underline",description:"Toggle underline formatting",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.underlineDescription",keys:"Ctrl+U",category:"formatting",common:true},{id:"strikethrough",name:"Strikethrough",nameKey:"dialogs.keyboardShortcuts.shortcuts.strikethrough",description:"Toggle strikethrough",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.strikethroughDescription",keys:"Ctrl+Shift+X",category:"formatting"},{id:"subscript",name:"Subscript",nameKey:"dialogs.keyboardShortcuts.shortcuts.subscript",description:"Toggle subscript",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.subscriptDescription",keys:"Ctrl+=",category:"formatting"},{id:"superscript",name:"Superscript",nameKey:"dialogs.keyboardShortcuts.shortcuts.superscript",description:"Toggle superscript",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.superscriptDescription",keys:"Ctrl+Shift+=",category:"formatting"},{id:"align-left",name:"Align Left",nameKey:"dialogs.keyboardShortcuts.shortcuts.alignLeft",description:"Left align paragraph",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.alignLeftDescription",keys:"Ctrl+L",category:"formatting"},{id:"align-center",name:"Align Center",nameKey:"dialogs.keyboardShortcuts.shortcuts.alignCenter",description:"Center align paragraph",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.alignCenterDescription",keys:"Ctrl+E",category:"formatting"},{id:"align-right",name:"Align Right",nameKey:"dialogs.keyboardShortcuts.shortcuts.alignRight",description:"Right align paragraph",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.alignRightDescription",keys:"Ctrl+R",category:"formatting"},{id:"align-justify",name:"Justify",nameKey:"dialogs.keyboardShortcuts.shortcuts.justify",description:"Justify paragraph",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.justifyDescription",keys:"Ctrl+J",category:"formatting"},{id:"indent",name:"Increase Indent",nameKey:"dialogs.keyboardShortcuts.shortcuts.increaseIndent",description:"Increase paragraph indent",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.increaseIndentDescription",keys:"Tab",category:"formatting"},{id:"outdent",name:"Decrease Indent",nameKey:"dialogs.keyboardShortcuts.shortcuts.decreaseIndent",description:"Decrease paragraph indent",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.decreaseIndentDescription",keys:"Shift+Tab",category:"formatting"},{id:"select-all",name:"Select All",nameKey:"dialogs.keyboardShortcuts.shortcuts.selectAll",description:"Select all content",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.selectAllDescription",keys:"Ctrl+A",category:"selection",common:true},{id:"select-word",name:"Select Word",nameKey:"dialogs.keyboardShortcuts.shortcuts.selectWord",description:"Select current word",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.selectWordDescription",keys:"Double-click",category:"selection"},{id:"select-paragraph",name:"Select Paragraph",nameKey:"dialogs.keyboardShortcuts.shortcuts.selectParagraph",description:"Select current paragraph",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.selectParagraphDescription",keys:"Triple-click",category:"selection"},{id:"extend-selection-word",name:"Extend Selection by Word",nameKey:"dialogs.keyboardShortcuts.shortcuts.extendSelectionByWord",description:"Extend selection to next/previous word",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.extendSelectionByWordDescription",keys:"Ctrl+Shift+Arrow",category:"selection"},{id:"extend-selection-line",name:"Extend Selection to Line Edge",nameKey:"dialogs.keyboardShortcuts.shortcuts.extendSelectionToLineEdge",description:"Extend selection to line start/end",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.extendSelectionToLineEdgeDescription",keys:"Shift+Home/End",category:"selection"},{id:"move-word",name:"Move by Word",nameKey:"dialogs.keyboardShortcuts.shortcuts.moveByWord",description:"Move cursor to next/previous word",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.moveByWordDescription",keys:"Ctrl+Arrow",category:"navigation"},{id:"move-line-start",name:"Move to Line Start",nameKey:"dialogs.keyboardShortcuts.shortcuts.moveToLineStart",description:"Move cursor to start of line",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.moveToLineStartDescription",keys:"Home",category:"navigation"},{id:"move-line-end",name:"Move to Line End",nameKey:"dialogs.keyboardShortcuts.shortcuts.moveToLineEnd",description:"Move cursor to end of line",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.moveToLineEndDescription",keys:"End",category:"navigation"},{id:"move-doc-start",name:"Move to Document Start",nameKey:"dialogs.keyboardShortcuts.shortcuts.moveToDocumentStart",description:"Move cursor to start of document",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.moveToDocumentStartDescription",keys:"Ctrl+Home",category:"navigation"},{id:"move-doc-end",name:"Move to Document End",nameKey:"dialogs.keyboardShortcuts.shortcuts.moveToDocumentEnd",description:"Move cursor to end of document",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.moveToDocumentEndDescription",keys:"Ctrl+End",category:"navigation"},{id:"page-up",name:"Page Up",nameKey:"dialogs.keyboardShortcuts.shortcuts.pageUp",description:"Scroll up one page",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.pageUpDescription",keys:"Page Up",category:"navigation"},{id:"page-down",name:"Page Down",nameKey:"dialogs.keyboardShortcuts.shortcuts.pageDown",description:"Scroll down one page",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.pageDownDescription",keys:"Page Down",category:"navigation"},{id:"zoom-in",name:"Zoom In",nameKey:"dialogs.keyboardShortcuts.shortcuts.zoomIn",description:"Increase zoom level",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.zoomInDescription",keys:"Ctrl++",altKeys:"Ctrl+Scroll Up",category:"view"},{id:"zoom-out",name:"Zoom Out",nameKey:"dialogs.keyboardShortcuts.shortcuts.zoomOut",description:"Decrease zoom level",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.zoomOutDescription",keys:"Ctrl+-",altKeys:"Ctrl+Scroll Down",category:"view"},{id:"zoom-reset",name:"Reset Zoom",nameKey:"dialogs.keyboardShortcuts.shortcuts.resetZoom",description:"Reset zoom to 100%",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.resetZoomDescription",keys:"Ctrl+0",category:"view"},{id:"shortcuts",name:"Keyboard Shortcuts",nameKey:"dialogs.keyboardShortcuts.shortcuts.keyboardShortcuts",description:"Show this help dialog",descriptionKey:"dialogs.keyboardShortcuts.shortcuts.keyboardShortcutsDescription",keys:"Ctrl+/",altKeys:"F1",category:"view"}];function Z(){return [...P]}function V(e){return P.filter(t=>t.category===e)}function G(){return P.filter(e=>e.common)}function J(e){return I[e]}function $(){return [...M]}var be=({isOpen:e,onClose:t,customShortcuts:l=[],showSearch:y=true,className:b$2=""})=>{let{t:o}=b(),m=useRef(null),g=useRef(null),[c,i]=useState(""),S=useMemo(()=>{let s=[...P];for(let r of l){let a=s.findIndex(h=>h.id===r.id);a>=0?s[a]=r:s.push(r);}return s},[l]),K=useMemo(()=>{if(!c.trim())return S;let s=c.toLowerCase();return S.filter(r=>{let a=r.nameKey?o(r.nameKey):r.name,h=r.descriptionKey?o(r.descriptionKey):r.description;return a.toLowerCase().includes(s)||h.toLowerCase().includes(s)||r.keys.toLowerCase().includes(s)||r.altKeys&&r.altKeys.toLowerCase().includes(s)})},[S,c,o]),C=useMemo(()=>{let s=new Map;for(let a of K){let h=s.get(a.category)||[];h.push(a),s.set(a.category,h);}let r=[];for(let a of M){let h=s.get(a);h&&h.length>0&&r.push({category:a,shortcuts:h});}return r},[K]);return useEffect(()=>{e&&y&&g.current&&setTimeout(()=>g.current?.focus(),0);},[e,y]),useEffect(()=>{e||i("");},[e]),useEffect(()=>{if(!e)return;let s=r=>{m.current&&!m.current.contains(r.target)&&t();};return document.addEventListener("mousedown",s),()=>document.removeEventListener("mousedown",s)},[e,t]),useEffect(()=>{if(!e)return;let s=r=>{r.key==="Escape"&&t();};return document.addEventListener("keydown",s),()=>document.removeEventListener("keydown",s)},[e,t]),e?jsx("div",{className:"docx-shortcuts-overlay",style:{position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"var(--doc-overlay)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:10001},children:jsxs("div",{ref:m,className:`docx-shortcuts-dialog ${b$2}`,style:{width:"600px",maxWidth:"90vw",maxHeight:"80vh",backgroundColor:"var(--doc-surface)",borderRadius:"12px",boxShadow:"0 4px 24px var(--doc-shadow)",display:"flex",flexDirection:"column",overflow:"hidden"},role:"dialog","aria-label":o("dialogs.keyboardShortcuts.ariaLabel"),children:[jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"16px 20px",borderBottom:"1px solid var(--doc-border)"},children:[jsx("h2",{style:{margin:0,fontSize:"18px",fontWeight:600,color:"var(--doc-text)"},children:o("dialogs.keyboardShortcuts.ariaLabel")}),jsx("button",{type:"button",onClick:t,"aria-label":o("common.closeDialog"),style:{display:"flex",alignItems:"center",justifyContent:"center",width:"32px",height:"32px",border:"none",background:"transparent",cursor:"pointer",borderRadius:"50%",color:"var(--doc-text-muted)"},children:jsx("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:jsx("path",{d:"M5 5l10 10M15 5L5 15",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})})})]}),y&&jsx("div",{style:{padding:"12px 20px",borderBottom:"1px solid var(--doc-border)"},children:jsx("input",{ref:g,type:"text",value:c,onChange:s=>i(s.target.value),placeholder:o("dialogs.keyboardShortcuts.searchPlaceholder"),style:{width:"100%",padding:"10px 12px",fontSize:"14px",border:"1px solid var(--doc-border-light)",borderRadius:"6px",outline:"none"}})}),jsx("div",{style:{flex:1,overflowY:"auto",padding:"16px 20px"},children:C.length===0?jsx("div",{style:{textAlign:"center",padding:"32px",color:"var(--doc-text-muted)"},children:o("dialogs.keyboardShortcuts.noResults",{query:c})}):C.map(({category:s,shortcuts:r})=>jsxs("div",{style:{marginBottom:"24px"},children:[jsx("h3",{style:{margin:"0 0 12px 0",fontSize:"13px",fontWeight:600,color:"var(--doc-primary)",textTransform:"uppercase",letterSpacing:"0.5px"},children:o(I[s])}),jsx("div",{children:r.map(a=>jsx(b$1,{shortcut:a,translatedName:a.nameKey?o(a.nameKey):a.name,translatedDescription:a.descriptionKey?o(a.descriptionKey):a.description},a.id))})]},s))}),jsx("div",{style:{padding:"12px 20px",borderTop:"1px solid var(--doc-border)",backgroundColor:"var(--doc-bg)",fontSize:"12px",color:"var(--doc-text-muted)",textAlign:"center"},children:(()=>{let r=o("dialogs.keyboardShortcuts.pressEscToClose",{key:"Esc"}).split("Esc");return jsxs(Fragment,{children:[r[0],jsx("kbd",{style:{padding:"2px 6px",backgroundColor:"var(--doc-surface)",borderRadius:"4px",border:"1px solid var(--doc-border-light)"},children:"Esc"}),r[1]]})})()})]})}):null};function fe(e={}){let{enabled:t=true,openShortcut:l="Ctrl+/"}=e,[y,b]=useState(false),o=useCallback(()=>{t&&b(true);},[t]),m=useCallback(()=>{b(false);},[]),g=useCallback(()=>{b(i=>!i);},[]),c=useCallback(i=>{if(!t)return;if((i.ctrlKey||i.metaKey)&&(i.key==="/"||i.key==="?")){i.preventDefault(),g();return}if(i.key==="F1"){i.preventDefault(),o();return}},[t,g,o]);return useEffect(()=>{if(t)return document.addEventListener("keydown",c),()=>document.removeEventListener("keydown",c)},[t,c]),{isOpen:y,open:o,close:m,toggle:g,handleKeyDown:c}}
|
|
2
|
+
export{oe as a,re as b,ie as c,se as d,ae as e,ne as f,Z as g,V as h,G as i,J as j,$ as k,be as l,fe as m};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var RenderedDomContext=require('@xcrong/docx-editor-core/plugin-api/RenderedDomContext');Object.defineProperty(exports,"a",{enumerable:true,get:function(){return RenderedDomContext.RenderedDomContextImpl}});Object.defineProperty(exports,"b",{enumerable:true,get:function(){return RenderedDomContext.createRenderedDomContext}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var react=require('react');function p(){let[l,r]=react.useState(""),[a,u]=react.useState(""),[t,d]=react.useState(true),s=react.useRef(null),h=react.useCallback((n,e)=>{r(n??""),u(e??""),s.current=n&&e?n/e:null,d(true);},[]),m=react.useCallback(n=>{let e=n===""?"":Math.max(1,Number(n)||0);r(e);let o=s.current;t&&o&&typeof e=="number"&&u(Math.round(e/o));},[t]),b=react.useCallback(n=>{let e=n===""?"":Math.max(1,Number(n)||0);u(e);let o=s.current;t&&o&&typeof e=="number"&&r(Math.round(e*o));},[t]);return {width:l,height:a,lockAspect:t,setLockAspect:d,handleWidthChange:m,handleHeightChange:b,seed:h}}exports.a=p;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {jsxs,jsx,Fragment}from'react/jsx-runtime';function l(){return typeof navigator<"u"&&/Mac|iPod|iPhone|iPad/.test(navigator.platform)}function a(t){return l()?t.replace(/Ctrl\+/g,"\u2318").replace(/Alt\+/g,"\u2325").replace(/Shift\+/g,"\u21E7"):t}var p=({shortcut:t,translatedName:d,translatedDescription:i})=>{let n=a(t.keys),r=t.altKeys?a(t.altKeys):null;return jsxs("div",{className:"docx-shortcut-item",style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"8px 0",borderBottom:"1px solid var(--doc-border-light)"},children:[jsxs("div",{style:{flex:1},children:[jsx("div",{style:{fontSize:"13px",fontWeight:500,color:"var(--doc-text)"},children:d}),jsx("div",{style:{fontSize:"11px",color:"var(--doc-text-muted)",marginTop:"2px"},children:i})]}),jsxs("div",{style:{display:"flex",gap:"8px",alignItems:"center"},children:[jsx("kbd",{style:{display:"inline-flex",alignItems:"center",padding:"4px 8px",fontSize:"12px",fontFamily:"monospace",color:"var(--doc-text)",backgroundColor:"var(--doc-bg-hover)",borderRadius:"4px",border:"1px solid var(--doc-border-light)",boxShadow:"0 1px 1px var(--doc-shadow)"},children:n}),r&&jsxs(Fragment,{children:[jsx("span",{style:{color:"var(--doc-text-subtle)",fontSize:"11px"},children:"or"}),jsx("kbd",{style:{display:"inline-flex",alignItems:"center",padding:"4px 8px",fontSize:"12px",fontFamily:"monospace",color:"var(--doc-text)",backgroundColor:"var(--doc-bg-hover)",borderRadius:"4px",border:"1px solid var(--doc-border-light)",boxShadow:"0 1px 1px var(--doc-shadow)"},children:r})]})]})]})};export{a,p as b};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var chunkD2LFXRWX_js=require('./chunk-D2LFXRWX.js'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var J={position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"var(--doc-overlay)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e4},Q={backgroundColor:"var(--doc-surface)",borderRadius:"8px",boxShadow:"0 4px 20px var(--doc-shadow)",minWidth:"400px",maxWidth:"500px",width:"100%",margin:"20px"},Z={display:"flex",justifyContent:"space-between",alignItems:"center",padding:"16px 20px",borderBottom:"1px solid var(--doc-border)"},ee={margin:0,fontSize:"18px",fontWeight:600,color:"var(--doc-text)"},te={background:"none",border:"none",fontSize:"20px",cursor:"pointer",color:"var(--doc-text-muted)",padding:"4px 8px",lineHeight:1},re={padding:"20px"},v={marginBottom:"16px"},E={display:"block",marginBottom:"6px",fontSize:"14px",fontWeight:500,color:"var(--doc-text)"},b={width:"100%",padding:"10px 12px",border:"1px solid var(--doc-border-input)",borderRadius:"4px",fontSize:"14px",boxSizing:"border-box",outline:"none"},oe={...b,borderColor:"var(--doc-error)"},ie={...b,cursor:"pointer"},le={color:"var(--doc-error)",fontSize:"12px",marginTop:"4px"},z={color:"var(--doc-text-muted)",fontSize:"12px",marginTop:"4px"},ne={display:"flex",borderBottom:"1px solid var(--doc-border)",marginBottom:"16px"},H={padding:"10px 16px",border:"none",background:"none",cursor:"pointer",fontSize:"14px",color:"var(--doc-text-muted)",borderBottom:"2px solid transparent",marginBottom:"-1px"},F={...H,color:"var(--doc-link)",borderBottomColor:"var(--doc-link)",fontWeight:500},ae={display:"flex",justifyContent:"flex-end",gap:"12px",padding:"16px 20px",borderTop:"1px solid var(--doc-border)"},C={padding:"10px 20px",borderRadius:"4px",fontSize:"14px",fontWeight:500,cursor:"pointer",border:"none"},se={...C,backgroundColor:"var(--doc-link)",color:"var(--doc-on-primary)"},pe={...C,backgroundColor:"var(--doc-bg-hover)",color:"var(--doc-text)",border:"1px solid var(--doc-border-input)"},de={...C,backgroundColor:"var(--doc-error)",color:"var(--doc-on-primary)"},ce={...C,backgroundColor:"var(--doc-border-input)",color:"var(--doc-text-muted)",cursor:"not-allowed"};function G(t){if(!t||t.trim()==="")return false;let e=t.trim();if(e.startsWith("mailto:")||e.startsWith("tel:"))return e.length>7;if(e.startsWith("ftp://"))return e.length>6;try{let d=e.match(/^https?:\/\//)?e:`https://${e}`,k=new URL(d);return k.protocol==="http:"||k.protocol==="https:"}catch{return false}}function M(t){if(!t)return "";let e=t.trim();return e.startsWith("mailto:")||e.startsWith("tel:")||e.startsWith("ftp://")||e.match(/^https?:\/\//)?e:`https://${e}`}function ge(t){if(!t)return "unknown";let e=t.trim().toLowerCase();return e.startsWith("mailto:")?"email":e.startsWith("tel:")?"phone":e.startsWith("ftp://")?"ftp":e.startsWith("http://")||e.startsWith("https://")?"web":e.includes("@")&&!e.includes(" ")?"email":"web"}function ue({isOpen:t,onClose:e,onSubmit:d,onRemove:k,initialData:s,selectedText:f="",isEditing:n=false,bookmarks:R=[],className:$,style:K}){let{t:r}=chunkD2LFXRWX_js.b(),[l,g]=react.useState("url"),[p,L]=react.useState(""),[D,_]=react.useState(""),[x,N]=react.useState(""),[O,P]=react.useState(""),[y,m]=react.useState(""),[B,h]=react.useState(false),Y=react.useRef(null),U=react.useRef(null);react.useEffect(()=>{t&&(s?(s.bookmark?(g("bookmark"),N(s.bookmark)):(g("url"),L(s.url||"")),_(s.displayText||""),P(s.tooltip||"")):(g("url"),L(""),_(f),N(""),P("")),m(""),h(false));},[t,s,f]),react.useEffect(()=>{t&&setTimeout(()=>{l==="url"?Y.current?.focus():U.current?.focus();},100);},[t,l]);let V=react.useCallback(()=>{l==="url"&&p.trim()?G(p)?m(""):m(r("dialogs.hyperlink.invalidUrl")):m("");},[l,p,r]),S=react.useCallback(o=>{if(o?.preventDefault(),l==="url"){if(!p.trim()){m(r("dialogs.hyperlink.urlRequired")),h(true);return}if(!G(p)){m(r("dialogs.hyperlink.invalidUrl")),h(true);return}}else if(l==="bookmark"&&!x)return;let T={displayText:D.trim()||void 0,tooltip:O.trim()||void 0};l==="url"?T.url=M(p):T.bookmark=x,d(T);},[l,p,x,D,O,d]),X=react.useCallback(o=>{o.key==="Escape"?e():o.key==="Enter"&&!o.shiftKey&&o.target.tagName!=="TEXTAREA"&&(o.preventDefault(),S());},[e,S]),j=react.useCallback(o=>{o.target===o.currentTarget&&e();},[e]);if(!t)return null;let q=R.length>0,A=l==="url"&&p.trim()&&!y||l==="bookmark"&&x;return jsxRuntime.jsx("div",{className:`docx-hyperlink-dialog-overlay ${$||""}`,style:{...J,...K},onClick:j,onKeyDown:X,role:"dialog","aria-modal":"true","aria-labelledby":"hyperlink-dialog-title",children:jsxRuntime.jsxs("div",{className:"docx-hyperlink-dialog",style:Q,children:[jsxRuntime.jsxs("div",{className:"docx-hyperlink-dialog-header",style:Z,children:[jsxRuntime.jsx("h2",{id:"hyperlink-dialog-title",style:ee,children:r(n?"dialogs.hyperlink.titleEdit":"dialogs.hyperlink.titleInsert")}),jsxRuntime.jsx("button",{type:"button",className:"docx-hyperlink-dialog-close",style:te,onClick:e,"aria-label":r("common.closeDialog"),children:"\xD7"})]}),jsxRuntime.jsxs("form",{className:"docx-hyperlink-dialog-body",style:re,onSubmit:S,children:[q&&jsxRuntime.jsxs("div",{className:"docx-hyperlink-dialog-tabs",style:ne,children:[jsxRuntime.jsx("button",{type:"button",className:`docx-hyperlink-dialog-tab ${l==="url"?"active":""}`,style:l==="url"?F:H,onClick:()=>g("url"),"aria-selected":l==="url",children:r("dialogs.hyperlink.tabWebAddress")}),jsxRuntime.jsx("button",{type:"button",className:`docx-hyperlink-dialog-tab ${l==="bookmark"?"active":""}`,style:l==="bookmark"?F:H,onClick:()=>g("bookmark"),"aria-selected":l==="bookmark",children:r("dialogs.hyperlink.tabBookmark")})]}),l==="url"&&jsxRuntime.jsxs("div",{className:"docx-hyperlink-dialog-field",style:v,children:[jsxRuntime.jsx("label",{htmlFor:"hyperlink-url",style:E,children:r("dialogs.hyperlink.urlLabel")}),jsxRuntime.jsx("input",{ref:Y,id:"hyperlink-url",type:"text",className:"docx-hyperlink-dialog-input",style:y&&B?oe:b,value:p,onChange:o=>{L(o.target.value),B&&m("");},onBlur:()=>{h(true),V();},placeholder:r("dialogs.hyperlink.urlPlaceholder"),"aria-invalid":!!y,"aria-describedby":y?"url-error":"url-hint"}),y&&B&&jsxRuntime.jsx("div",{id:"url-error",style:le,children:y}),!y&&jsxRuntime.jsx("div",{id:"url-hint",style:z,children:r("dialogs.hyperlink.urlHint")})]}),l==="bookmark"&&jsxRuntime.jsxs("div",{className:"docx-hyperlink-dialog-field",style:v,children:[jsxRuntime.jsx("label",{htmlFor:"hyperlink-bookmark",style:E,children:r("dialogs.hyperlink.bookmarkLabel")}),jsxRuntime.jsxs("select",{ref:U,id:"hyperlink-bookmark",className:"docx-hyperlink-dialog-select",style:ie,value:x,onChange:o=>N(o.target.value),children:[jsxRuntime.jsx("option",{value:"",children:r("dialogs.hyperlink.bookmarkPlaceholder")}),R.map(o=>jsxRuntime.jsx("option",{value:o.name,children:o.label||o.name},o.name))]})]}),jsxRuntime.jsxs("div",{className:"docx-hyperlink-dialog-field",style:v,children:[jsxRuntime.jsx("label",{htmlFor:"hyperlink-display-text",style:E,children:r("dialogs.hyperlink.displayTextLabel")}),jsxRuntime.jsx("input",{id:"hyperlink-display-text",type:"text",className:"docx-hyperlink-dialog-input",style:b,value:D,onChange:o=>_(o.target.value),placeholder:r("dialogs.hyperlink.displayTextPlaceholder")}),jsxRuntime.jsx("div",{style:z,children:r("dialogs.hyperlink.displayTextHint")})]}),jsxRuntime.jsxs("div",{className:"docx-hyperlink-dialog-field",style:v,children:[jsxRuntime.jsx("label",{htmlFor:"hyperlink-tooltip",style:E,children:r("dialogs.hyperlink.tooltipLabel")}),jsxRuntime.jsx("input",{id:"hyperlink-tooltip",type:"text",className:"docx-hyperlink-dialog-input",style:b,value:O,onChange:o=>P(o.target.value),placeholder:r("dialogs.hyperlink.tooltipPlaceholder")})]})]}),jsxRuntime.jsxs("div",{className:"docx-hyperlink-dialog-footer",style:ae,children:[n&&k&&jsxRuntime.jsx("button",{type:"button",className:"docx-hyperlink-dialog-remove",style:de,onClick:k,children:r("dialogs.hyperlink.removeLink")}),jsxRuntime.jsx("div",{style:{flex:1}}),jsxRuntime.jsx("button",{type:"button",className:"docx-hyperlink-dialog-cancel",style:pe,onClick:e,children:r("common.cancel")}),jsxRuntime.jsx("button",{type:"submit",className:"docx-hyperlink-dialog-submit",style:A?se:ce,onClick:S,disabled:!A,children:r(n?"common.update":"common.insert")})]})]})})}function xe(t,e){return {url:M(t),displayText:e}}function be(t,e){return {bookmark:t,displayText:e}}function fe(t){return !!t.url&&!t.bookmark}function he(t){return !!t.bookmark}function Se(t){return t.displayText?t.displayText:t.url?t.url.replace(/^https?:\/\//,""):t.bookmark?t.bookmark:""}function Te(t){return t.startsWith("mailto:")?t:`mailto:${t}`}function ve(t){return t.startsWith("tel:")?t:`tel:${t.replace(/[\s\-\(\)\.]/g,"")}`}function Ee(t){return t.filter(e=>!e.name.startsWith("_")).map(e=>({name:e.name,label:e.name})).sort((e,d)=>e.name.localeCompare(d.name))}function Ce(){let[t,e]=react.useState({isOpen:false,isEditing:false}),d=react.useCallback(n=>{e({isOpen:true,selectedText:n,initialData:void 0,isEditing:false});},[]),k=react.useCallback(n=>{e({isOpen:true,initialData:n,selectedText:n.displayText,isEditing:true});},[]),s=react.useCallback(()=>{e(n=>({...n,isOpen:false}));},[]),f=react.useCallback(()=>{e(n=>({...n,isOpen:!n.isOpen}));},[]);return {state:t,openInsert:d,openEdit:k,close:s,toggle:f}}var Le=ue;
|
|
2
|
+
exports.a=G;exports.b=M;exports.c=ge;exports.d=ue;exports.e=xe;exports.f=be;exports.g=fe;exports.h=he;exports.i=Se;exports.j=Te;exports.k=ve;exports.l=Ee;exports.m=Ce;exports.n=Le;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var jsxRuntime=require('react/jsx-runtime');function l(){return typeof navigator<"u"&&/Mac|iPod|iPhone|iPad/.test(navigator.platform)}function a(t){return l()?t.replace(/Ctrl\+/g,"\u2318").replace(/Alt\+/g,"\u2325").replace(/Shift\+/g,"\u21E7"):t}var p=({shortcut:t,translatedName:d,translatedDescription:i})=>{let n=a(t.keys),r=t.altKeys?a(t.altKeys):null;return jsxRuntime.jsxs("div",{className:"docx-shortcut-item",style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"8px 0",borderBottom:"1px solid var(--doc-border-light)"},children:[jsxRuntime.jsxs("div",{style:{flex:1},children:[jsxRuntime.jsx("div",{style:{fontSize:"13px",fontWeight:500,color:"var(--doc-text)"},children:d}),jsxRuntime.jsx("div",{style:{fontSize:"11px",color:"var(--doc-text-muted)",marginTop:"2px"},children:i})]}),jsxRuntime.jsxs("div",{style:{display:"flex",gap:"8px",alignItems:"center"},children:[jsxRuntime.jsx("kbd",{style:{display:"inline-flex",alignItems:"center",padding:"4px 8px",fontSize:"12px",fontFamily:"monospace",color:"var(--doc-text)",backgroundColor:"var(--doc-bg-hover)",borderRadius:"4px",border:"1px solid var(--doc-border-light)",boxShadow:"0 1px 1px var(--doc-shadow)"},children:n}),r&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("span",{style:{color:"var(--doc-text-subtle)",fontSize:"11px"},children:"or"}),jsxRuntime.jsx("kbd",{style:{display:"inline-flex",alignItems:"center",padding:"4px 8px",fontSize:"12px",fontFamily:"monospace",color:"var(--doc-text)",backgroundColor:"var(--doc-bg-hover)",borderRadius:"4px",border:"1px solid var(--doc-border-light)",boxShadow:"0 1px 1px var(--doc-shadow)"},children:r})]})]})]})};exports.a=a;exports.b=p;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkBJ5RZW6Y_js=require('./chunk-BJ5RZW6Y.js'),O=require('@xcrong/docx-editor-core/utils/findReplace'),react=require('react');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var O__namespace=/*#__PURE__*/_interopNamespace(O);var r={};chunkBJ5RZW6Y_js.a(r,O__namespace);function P(s){let[a,c]=react.useState({isOpen:false,searchText:"",replaceText:"",options:(0, r.createDefaultFindOptions)(),matches:[],currentIndex:0,replaceMode:s?.initialReplaceMode??false}),l=react.useCallback(e=>{c(t=>({...t,isOpen:true,replaceMode:false,searchText:e||t.searchText,matches:[],currentIndex:0}));},[]),h=react.useCallback(e=>{c(t=>({...t,isOpen:true,replaceMode:true,searchText:e||t.searchText,matches:[],currentIndex:0}));},[]),d=react.useCallback(()=>{c(e=>({...e,isOpen:false}));},[]),u=react.useCallback(()=>{c(e=>({...e,isOpen:!e.isOpen}));},[]),x=react.useCallback(e=>{c(t=>({...t,searchText:e}));},[]),g=react.useCallback(e=>{c(t=>({...t,replaceText:e}));},[]),p=react.useCallback(e=>{c(t=>({...t,options:{...t.options,...e}}));},[]),M=react.useCallback((e,t=0)=>{let o=Math.max(0,Math.min(t,e.length-1));c(R=>({...R,matches:e,currentIndex:e.length>0?o:0})),s?.onMatchesChange?.(e),e.length>0?s?.onCurrentMatchChange?.(e[o],o):s?.onCurrentMatchChange?.(null,-1);},[s]),m=react.useCallback(()=>{let e=0;return c(t=>t.matches.length===0?t:(e=(t.currentIndex+1)%t.matches.length,{...t,currentIndex:e})),e},[]),F=react.useCallback(()=>{let e=0;return c(t=>t.matches.length===0?t:(e=t.currentIndex===0?t.matches.length-1:t.currentIndex-1,{...t,currentIndex:e})),e},[]),T=react.useCallback(e=>{c(t=>t.matches.length===0||e<0||e>=t.matches.length?t:{...t,currentIndex:e});},[]),f=react.useCallback(()=>a.matches.length===0?null:a.matches[a.currentIndex]||null,[a.matches,a.currentIndex]),I=react.useCallback(()=>a.matches.length>0,[a.matches.length]);return {state:a,openFind:l,openReplace:h,close:d,toggle:u,setSearchText:x,setReplaceText:g,setOptions:p,setMatches:M,goToNextMatch:m,goToPreviousMatch:F,goToMatch:T,getCurrentMatch:f,hasMatches:I}}exports.a=r;exports.b=P;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkEQHZUVPK_js=require('./chunk-EQHZUVPK.js'),chunkBJ5RZW6Y_js=require('./chunk-BJ5RZW6Y.js'),react=require('react'),prosemirrorState=require('prosemirror-state'),layoutBridge=require('@xcrong/docx-editor-core/layout-bridge'),findVerticalScrollParent=require('@xcrong/docx-editor-core/utils/findVerticalScrollParent'),autoScroll=require('@xcrong/docx-editor-core/utils/autoScroll'),extractTrackedChanges=require('@xcrong/docx-editor-core/prosemirror/utils/extractTrackedChanges'),docxEditorCore=require('@xcrong/docx-editor-core');var $=".layout-page-content .layout-line";function lt(r){let l=findVerticalScrollParent.findVerticalScrollParent(r);if(!l)return;let s=r.getBoundingClientRect(),m=l.getBoundingClientRect(),t=40;s.bottom>m.bottom-t?l.scrollTop+=s.bottom-m.bottom+t:s.top<m.top+t&&(l.scrollTop-=m.top-s.top+t);}function xt({pagesContainerRef:r}){let l=react.useRef(null),s=react.useRef(-1),m=react.useCallback(b=>{if(!r.current)return null;let u=layoutBridge.findBodyPmSpans(r.current);for(let i of u){let o=Number(i.dataset.pmStart),a=Number(i.dataset.pmEnd);if(i.classList.contains("layout-run-tab")){if(b>=o&&b<a)return i.getBoundingClientRect().left;continue}if(b>=o&&b<=a&&i.firstChild?.nodeType===Node.TEXT_NODE){let e=i.firstChild,n=Math.min(b-o,e.length),c=i.ownerDocument;if(!c)continue;let d=c.createRange();return d.setStart(e,n),d.setEnd(e,n),d.getBoundingClientRect().left}}let f=r.current.querySelectorAll(".layout-empty-run");for(let i of Array.from(f)){let o=i.closest(".layout-paragraph");if(!o)continue;let a=Number(o.dataset.pmStart),e=Number(o.dataset.pmEnd);if(b>=a&&b<=e)return i.getBoundingClientRect().left}return null},[r]),t=react.useCallback(b=>{if(!r.current)return null;let u=r.current.querySelectorAll($);for(let f of Array.from(u)){let i=f,o=i.querySelectorAll("span[data-pm-start][data-pm-end]");for(let a of Array.from(o)){let e=a,n=Number(e.dataset.pmStart),c=Number(e.dataset.pmEnd);if(b>=n&&b<=c)return i}}for(let f of Array.from(u)){let i=f,o=i.closest(".layout-paragraph");if(!o)continue;let a=Number(o.dataset.pmStart),e=Number(o.dataset.pmEnd);if(b>=a&&b<=e&&o.querySelector(".layout-line")===i)return i}return null},[r]),S=react.useCallback((b,u)=>{let f=b.querySelectorAll("span[data-pm-start][data-pm-end]");if(f.length===0){let e=b.closest(".layout-paragraph");return e?.dataset.pmStart?Number(e.dataset.pmStart)+1:null}for(let e of Array.from(f)){let n=e,c=n.getBoundingClientRect(),d=Number(n.dataset.pmStart),y=Number(n.dataset.pmEnd);if(n.classList.contains("layout-run-tab")){if(u>=c.left&&u<=c.right){let E=(c.left+c.right)/2;return u<E?d:y}continue}if(u>=c.left&&u<=c.right){let E=n.firstChild;if(!E||E.nodeType!==Node.TEXT_NODE)return d;let p=E,R=n.ownerDocument;if(!R)return d;let k=0,H=p.length;for(;k<H;){let w=Math.floor((k+H)/2),L=R.createRange();L.setStart(p,w),L.setEnd(p,w),u<L.getBoundingClientRect().left?H=w:k=w+1;}if(k>0&&k<=p.length){let w=R.createRange();w.setStart(p,k-1),w.setEnd(p,k-1);let L=w.getBoundingClientRect().left;w.setStart(p,Math.min(k,p.length)),w.setEnd(p,Math.min(k,p.length));let h=w.getBoundingClientRect().left;if(Math.abs(u-L)<Math.abs(u-h))return d+(k-1)}return d+Math.min(k,y-d)}}let i=null,o=1/0;for(let e of Array.from(f)){let n=e,c=n.getBoundingClientRect(),d=u<c.left?c.left-u:u-c.right;d<o&&(o=d,i=n);}if(!i)return null;let a=i.getBoundingClientRect();return u<a.left?Number(i.dataset.pmStart):Number(i.dataset.pmEnd)},[]),x=react.useCallback((b,u)=>{if(u.key!=="ArrowUp"&&u.key!=="ArrowDown")return (["ArrowLeft","ArrowRight","Home","End"].includes(u.key)||u.key.length===1&&!u.ctrlKey&&!u.metaKey)&&(l.current=null,s.current=-1),false;if(u.ctrlKey||u.metaKey)return l.current=null,s.current=-1,false;if(!r.current)return false;let f=Array.from(r.current.querySelectorAll($));if(f.length===0)return false;let{from:i,anchor:o}=b.state.selection;if(l.current===null){let p=m(i);if(p===null)return false;l.current=p;}let a;if(s.current>=0&&s.current<f.length)a=s.current;else {let p=t(i);if(!p||(a=f.indexOf(p),a===-1))return false}let e=u.key==="ArrowUp"?a-1:a+1;if(e<0||e>=f.length)return s.current=-1,false;let n=f[e],c=S(n,l.current);if(c===null)return false;s.current=e;let{state:d,dispatch:y}=b,E=Math.max(0,Math.min(c,d.doc.content.size));try{let p=u.shiftKey?prosemirrorState.TextSelection.create(d.doc,o,E):prosemirrorState.TextSelection.create(d.doc,E);y(d.tr.setSelection(p));}catch{let p=d.doc.resolve(E),R=u.shiftKey?prosemirrorState.TextSelection.between(d.doc.resolve(o),p):prosemirrorState.TextSelection.near(p);y(d.tr.setSelection(R));}return lt(n),true},[r,m,t,S]);return {stickyXRef:l,lastVisualLineIndexRef:s,getCaretClientX:m,findLineElementAtPosition:t,findPositionOnLineAtClientX:S,handlePMKeyDown:x}}function Ct({pagesContainerRef:r,onScrollExtendSelection:l}){let s=react.useRef(null),m=react.useRef({x:0,y:0}),t=react.useRef(false),S=react.useRef(null),x=react.useCallback(()=>{if(S.current)return S.current;let o=r.current;return o?(S.current=findVerticalScrollParent.findVerticalScrollParent(o),S.current):null},[r]),b=react.useCallback(()=>{t.current=false,s.current!==null&&(cancelAnimationFrame(s.current),s.current=null);},[]),u=react.useCallback(()=>{if(!t.current)return;let o=x();if(!o)return;let a=o.getBoundingClientRect(),{x:e,y:n}=m.current,c=autoScroll.computeAutoScrollDelta(a,n);c!==0&&(o.scrollTop+=c,l(e,n)),s.current=requestAnimationFrame(u);},[x,l]),f=react.useCallback(()=>{t.current||(t.current=true,s.current=requestAnimationFrame(u));},[u]);return {updateMousePosition:react.useCallback((o,a)=>{if(m.current={x:o,y:a},!t.current){let e=x();if(!e)return;let n=e.getBoundingClientRect();(a<n.top+autoScroll.AUTO_SCROLL_EDGE_ZONE||a>n.bottom-autoScroll.AUTO_SCROLL_EDGE_ZONE)&&f();}},[x,f]),stopAutoScroll:b}}function At(r){return react.useMemo(()=>extractTrackedChanges.extractTrackedChanges(r),[r])}function Ot({document:r,onChange:l,onSelectionChange:s}){let m=react.useMemo(()=>new docxEditorCore.TableSelectionManager,[]),[t,S]=react.useState({context:null,table:null,tableIndex:null,rowIndex:null,columnIndex:null}),x=react.useCallback((a,e,n)=>{if(!r)return;let c=docxEditorCore.getTableFromDocument(r,a);if(!c){m.clearSelection(),S({context:null,table:null,tableIndex:null,rowIndex:null,columnIndex:null});return}m.selectCell({tableIndex:a,rowIndex:e,columnIndex:n});let y=chunkEQHZUVPK_js.d(c,{tableIndex:a,rowIndex:e,columnIndex:n});S({context:y,table:c,tableIndex:a,rowIndex:e,columnIndex:n}),s?.(y);},[r,m,s]),b=react.useCallback(()=>{m.clearSelection(),S({context:null,table:null,tableIndex:null,rowIndex:null,columnIndex:null}),s?.(null);},[m,s]),u=react.useCallback(()=>!t.table||t.rowIndex===null||t.columnIndex===null?null:chunkEQHZUVPK_js.g(t.table,t.rowIndex,t.columnIndex),[t.columnIndex,t.rowIndex,t.table]),f=react.useCallback((a,e)=>{if(!r||!t.table||t.tableIndex===null||t.rowIndex===null||t.columnIndex===null)return;let n=chunkEQHZUVPK_js.h(t.table,t.rowIndex,t.columnIndex,a,e);if(n===t.table)return;let c=docxEditorCore.updateTableInDocument(r,t.tableIndex,n);l?.(c),c&&x(t.tableIndex,t.rowIndex,t.columnIndex);},[r,x,l,t.columnIndex,t.rowIndex,t.table,t.tableIndex]),i=react.useCallback(a=>{if(!r||!t.context||t.tableIndex===null||t.rowIndex===null||t.columnIndex===null)return;let e=t.table;if(!e)return;let n=null,c=null,d=t.rowIndex,y=t.columnIndex;switch(a){case "addRowAbove":n=chunkEQHZUVPK_js.i(e,t.rowIndex,"before"),d=t.rowIndex+1;break;case "addRowBelow":n=chunkEQHZUVPK_js.i(e,t.rowIndex,"after");break;case "addColumnLeft":n=chunkEQHZUVPK_js.k(e,t.columnIndex,"before"),y=t.columnIndex+1;break;case "addColumnRight":n=chunkEQHZUVPK_js.k(e,t.columnIndex,"after");break;case "deleteRow":e.rows.length>1&&(n=chunkEQHZUVPK_js.j(e,t.rowIndex),d>=n.rows.length&&(d=n.rows.length-1));break;case "deleteColumn":{if(chunkEQHZUVPK_js.e(e)>1){n=chunkEQHZUVPK_js.l(e,t.columnIndex);let p=chunkEQHZUVPK_js.e(n);y>=p&&(y=p-1);}break}case "mergeCells":t.context.selection.selectedCells&&(n=chunkEQHZUVPK_js.m(e,t.context.selection));break;case "splitCell":break;case "deleteTable":c=docxEditorCore.deleteTableFromDocument(r,t.tableIndex),b(),l?.(c);return}n&&(c=docxEditorCore.updateTableInDocument(r,t.tableIndex,n),l?.(c),c&&x(t.tableIndex,d,y));},[r,t,l,b,x]),o=react.useCallback((a,e,n)=>m.isCellSelected(a,e,n),[m,t]);return {state:t,handleCellClick:x,handleAction:i,getSplitCellConfig:u,applySplitCell:f,clearSelection:b,isCellSelected:o,tableContext:t.context}}function et(r,l){return JSON.stringify(r)===JSON.stringify(l)}function nt(r,l={}){let{maxEntries:s=100,groupingInterval:m=500,enableKeyboardShortcuts:t=true,isEqual:S=et,onUndo:x,onRedo:b,containerRef:u}=l,[f,i]=react.useState(r),[o,a]=react.useState([]),[e,n]=react.useState([]),c=react.useRef(0),d=react.useRef(false),y=react.useCallback((h,g)=>{if(S(f,h))return;if(d.current){i(h);return}let T=Date.now();T-c.current<m&&o.length>0?a(K=>{let A=[...K];return A[A.length-1]={state:f,timestamp:T,description:g||A[A.length-1].description},A}):a(K=>{let A={state:f,timestamp:T,description:g},N=[...K,A];return N.length>s?N.slice(N.length-s):N}),n([]),i(h),c.current=T;},[f,S,m,s,o.length]),E=react.useCallback(()=>{if(o.length===0)return;d.current=true;let h=o[o.length-1];return a(g=>g.slice(0,-1)),n(g=>[...g,{state:f,timestamp:Date.now()}]),i(h.state),setTimeout(()=>{d.current=false;},0),x?.(h.state),h.state},[o,f,x]),p=react.useCallback(()=>{if(e.length===0)return;d.current=true;let h=e[e.length-1];return n(g=>g.slice(0,-1)),a(g=>[...g,{state:f,timestamp:Date.now()}]),i(h.state),setTimeout(()=>{d.current=false;},0),b?.(h.state),h.state},[e,f,b]),R=react.useCallback(()=>{a([]),n([]);},[]),k=react.useCallback(h=>{i(h??r),a([]),n([]),c.current=0;},[r]),H=react.useCallback(()=>[...o],[o]),w=react.useCallback(()=>[...e],[e]),L=react.useCallback(h=>{i(g=>h(g)),a(g=>g.map(T=>({...T,state:h(T.state)}))),n(g=>g.map(T=>({...T,state:h(T.state)})));},[]);return react.useEffect(()=>{if(!t)return;let h=T=>{if((T.ctrlKey||T.metaKey)&&T.key==="z"&&!T.shiftKey){T.preventDefault(),E();return}if((T.ctrlKey||T.metaKey)&&T.key==="y"||(T.ctrlKey||T.metaKey)&&T.key==="z"&&T.shiftKey){T.preventDefault(),p();return}},g=u?.current||document;return g.addEventListener("keydown",h),()=>{g.removeEventListener("keydown",h);}},[t,E,p,u]),{state:f,canUndo:o.length>0,canRedo:e.length>0,undoCount:o.length,redoCount:e.length,push:y,undo:E,redo:p,clear:R,reset:k,getUndoStack:H,getRedoStack:w,transformAll:L}}function Ft(r,l={}){let s=nt(r,l);return react.useEffect(()=>{s.push(r);},[r]),s}function Jt(r,l={}){let s=react.useCallback((m,t)=>!(m?.package?.document!==t?.package?.document&&JSON.stringify(m?.package?.document)!==JSON.stringify(t?.package?.document)||m?.package?.headers!==t?.package?.headers||m?.package?.footers!==t?.package?.footers),[]);return nt(r,{...l,isEqual:s})}var X=class{constructor(l,s={}){chunkBJ5RZW6Y_js.b(this,"undoStack",[]);chunkBJ5RZW6Y_js.b(this,"redoStack",[]);chunkBJ5RZW6Y_js.b(this,"currentState");chunkBJ5RZW6Y_js.b(this,"maxEntries");chunkBJ5RZW6Y_js.b(this,"groupingInterval");chunkBJ5RZW6Y_js.b(this,"lastPushTime",0);chunkBJ5RZW6Y_js.b(this,"isEqual");this.currentState=l,this.maxEntries=s.maxEntries??100,this.groupingInterval=s.groupingInterval??500,this.isEqual=s.isEqual??et;}get state(){return this.currentState}get canUndo(){return this.undoStack.length>0}get canRedo(){return this.redoStack.length>0}push(l,s){if(this.isEqual(this.currentState,l))return;let m=Date.now();m-this.lastPushTime<this.groupingInterval&&this.undoStack.length>0?this.undoStack[this.undoStack.length-1].timestamp=m:(this.undoStack.push({state:this.currentState,timestamp:m,description:s}),this.undoStack.length>this.maxEntries&&(this.undoStack=this.undoStack.slice(-this.maxEntries))),this.redoStack=[],this.currentState=l,this.lastPushTime=m;}undo(){if(this.undoStack.length===0)return;let l=this.undoStack.pop();return this.redoStack.push({state:this.currentState,timestamp:Date.now()}),this.currentState=l.state,l.state}redo(){if(this.redoStack.length===0)return;let l=this.redoStack.pop();return this.undoStack.push({state:this.currentState,timestamp:Date.now()}),this.currentState=l.state,l.state}clear(){this.undoStack=[],this.redoStack=[];}reset(l){this.currentState=l??this.currentState,this.undoStack=[],this.redoStack=[],this.lastPushTime=0;}};Object.defineProperty(exports,"c",{enumerable:true,get:function(){return extractTrackedChanges.extractTrackedChanges}});Object.defineProperty(exports,"f",{enumerable:true,get:function(){return docxEditorCore.TABLE_DATA_ATTRIBUTES}});exports.a=xt;exports.b=Ct;exports.d=At;exports.e=Ot;exports.g=nt;exports.h=Ft;exports.i=Jt;exports.j=X;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';require('./chunk-QA43VX7P.js');var chunkD2LFXRWX_js=require('./chunk-D2LFXRWX.js'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var me={position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"transparent",display:"flex",alignItems:"flex-start",justifyContent:"flex-end",zIndex:1e4,pointerEvents:"none"},be={backgroundColor:"var(--doc-surface)",borderRadius:"4px",boxShadow:"0 4px 20px var(--doc-shadow)",minWidth:"360px",maxWidth:"440px",width:"100%",margin:"60px 20px 20px 20px",pointerEvents:"auto"},ve={display:"flex",justifyContent:"space-between",alignItems:"center",padding:"12px 16px",borderBottom:"1px solid var(--doc-border)",backgroundColor:"var(--doc-bg-subtle)",borderTopLeftRadius:"4px",borderTopRightRadius:"4px"},Re={margin:0,fontSize:"14px",fontWeight:600,color:"var(--doc-text)"},ye={background:"none",border:"none",fontSize:"18px",cursor:"pointer",color:"var(--doc-text-muted)",padding:"2px 6px",lineHeight:1},Ce={padding:"16px"},J={display:"flex",alignItems:"center",gap:"8px",marginBottom:"12px"},Q={width:"60px",fontSize:"13px",color:"var(--doc-text)",flexShrink:0},O={flex:1,padding:"8px 10px",border:"1px solid var(--doc-border-input)",borderRadius:"3px",fontSize:"13px",boxSizing:"border-box",outline:"none"},Z={...O,borderColor:"var(--doc-link)",boxShadow:"0 0 0 2px var(--doc-focus-ring)"},Te={display:"flex",flexDirection:"column",gap:"6px",marginLeft:"8px"},D={padding:"6px 12px",borderRadius:"3px",fontSize:"12px",fontWeight:500,cursor:"pointer",border:"1px solid var(--doc-border-input)",backgroundColor:"var(--doc-bg-input)",color:"var(--doc-text)",minWidth:"80px",textAlign:"center"},ee={...D,backgroundColor:"var(--doc-bg-hover)",color:"var(--doc-text-placeholder)",cursor:"not-allowed"},A={padding:"6px 10px",borderRadius:"3px",fontSize:"14px",cursor:"pointer",border:"1px solid var(--doc-border-input)",backgroundColor:"var(--doc-bg-input)",color:"var(--doc-text)"},te={...A,color:"var(--doc-border-input)",cursor:"not-allowed"},Ee={display:"flex",gap:"16px",marginTop:"4px",marginLeft:"68px"},w={display:"flex",alignItems:"center",gap:"6px",fontSize:"12px",color:"var(--doc-text-muted)",cursor:"pointer"},oe={width:"14px",height:"14px",cursor:"pointer"},ne={marginLeft:"68px",fontSize:"12px",color:"var(--doc-text-muted)",marginBottom:"8px"},Le={...ne,color:"var(--doc-error)"},ke=220,Ie=({style:u})=>jsxRuntime.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:u,children:jsxRuntime.jsx("polyline",{points:"18 15 12 9 6 15"})}),Ne=({style:u})=>jsxRuntime.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:u,children:jsxRuntime.jsx("polyline",{points:"6 9 12 15 18 9"})});function _e({isOpen:u,onClose:S,onFind:m,onFindNext:B,onFindPrevious:Y,onReplace:M,onReplaceAll:U,onHighlightMatches:h,onClearHighlights:T,initialSearchText:K="",replaceMode:E=false,currentResult:L,className:le,style:re}){let{t:n}=chunkD2LFXRWX_js.b(),[l,W]=react.useState(""),[b,z]=react.useState(""),[k,H]=react.useState(E),[r,ae]=react.useState(false),[a,ie]=react.useState(false),[t,f]=react.useState(null),[ce,G]=react.useState(false),[se,V]=react.useState(false),I=react.useRef(null),j=react.useRef(null),X=react.useRef(m),$=react.useRef(h),v=react.useRef(T);react.useEffect(()=>{X.current=m,$.current=h,v.current=T;},[m,h,T]),react.useEffect(()=>{L!==void 0&&f(L);},[L]),react.useEffect(()=>{u?(W(K),z(""),H(E),f(null),setTimeout(()=>{I.current?.focus(),I.current?.select();},100)):v.current?.();},[u,K,E]);let y=react.useCallback(()=>{f(null),v.current?.();},[]),d=react.useCallback((e,c)=>{if(!e.trim()){y();return}let P=X.current(e,c);f(P),P?.matches?$.current?.(P.matches):v.current?.();},[y]);react.useEffect(()=>{if(!u)return;if(!l.trim()){y();return}let e=window.setTimeout(()=>{d(l,{matchCase:r,matchWholeWord:a});},ke);return ()=>window.clearTimeout(e)},[u,l,r,a,d,y]);let de=react.useCallback(e=>{W(e.target.value),f(null);},[]),N=react.useCallback(()=>{if(!l.trim()){d(l,{matchCase:r,matchWholeWord:a});return}if(!t){d(l,{matchCase:r,matchWholeWord:a});return}if(B()&&t){let c=(t.currentIndex+1)%t.totalCount;f({...t,currentIndex:c});}},[l,r,a,t,d,B]),_=react.useCallback(()=>{if(!l.trim()){d(l,{matchCase:r,matchWholeWord:a});return}if(!t){d(l,{matchCase:r,matchWholeWord:a});return}if(Y()&&t){let c=t.currentIndex===0?t.totalCount-1:t.currentIndex-1;f({...t,currentIndex:c});}},[l,r,a,t,d,Y]),pe=react.useCallback(e=>{e.key==="Enter"?(e.preventDefault(),e.shiftKey?_():t?N():d(l,{matchCase:r,matchWholeWord:a})):e.key==="Escape"&&S();},[t,l,r,a,d,N,_,S]),F=react.useCallback(()=>{if(!t||t.totalCount===0)return;if(M(b)){let c=m(l,{matchCase:r,matchWholeWord:a});f(c),c?.matches&&h&&h(c.matches);}},[t,b,l,r,a,M,m,h]),ue=react.useCallback(e=>{e.key==="Enter"?(e.preventDefault(),F()):e.key==="Escape"&&S();},[F,S]),fe=react.useCallback(()=>{if(!l.trim())return;U(l,b,{matchCase:r,matchWholeWord:a})>0&&(f(null),v.current?.());},[l,b,r,a,U]),xe=react.useCallback(()=>{H(e=>{let c=!e;return c&&setTimeout(()=>j.current?.focus(),100),c});},[]),ge=react.useCallback(e=>{e.target,e.currentTarget;},[]),Se=react.useCallback(e=>{e.key==="Escape"&&S();},[S]);if(!u)return null;let x=t&&t.totalCount>0,he=t&&t.totalCount===0&&l.trim();return jsxRuntime.jsx("div",{className:`docx-find-replace-dialog-overlay ${le||""}`,style:{...me,...re},onClick:ge,onKeyDown:Se,children:jsxRuntime.jsxs("div",{className:"docx-find-replace-dialog","data-testid":"find-replace-dialog",style:be,role:"dialog","aria-modal":"false","aria-labelledby":"find-replace-dialog-title",children:[jsxRuntime.jsxs("div",{className:"docx-find-replace-dialog-header",style:ve,children:[jsxRuntime.jsx("h2",{id:"find-replace-dialog-title",style:Re,children:n(k?"dialogs.findReplace.titleFindReplace":"dialogs.findReplace.titleFind")}),jsxRuntime.jsx("button",{type:"button",className:"docx-find-replace-dialog-close",style:ye,onClick:S,"aria-label":n("common.closeDialog"),children:"\xD7"})]}),jsxRuntime.jsxs("div",{className:"docx-find-replace-dialog-body",style:Ce,children:[jsxRuntime.jsxs("div",{className:"docx-find-replace-dialog-row",style:J,children:[jsxRuntime.jsx("label",{htmlFor:"find-text",style:Q,children:n("dialogs.findReplace.findLabel")}),jsxRuntime.jsx("input",{ref:I,id:"find-text",type:"text",className:"docx-find-replace-dialog-input",style:ce?Z:O,value:l,onChange:de,onKeyDown:pe,onFocus:()=>G(true),onBlur:()=>{G(false),l.trim()&&!t&&d(l,{matchCase:r,matchWholeWord:a});},placeholder:n("dialogs.findReplace.findPlaceholder"),"aria-label":n("dialogs.findReplace.findAriaLabel")}),jsxRuntime.jsxs("div",{style:{display:"flex",gap:"4px"},children:[jsxRuntime.jsx("button",{type:"button",className:"docx-find-replace-dialog-nav",style:x?A:te,onClick:_,disabled:!x,"aria-label":n("dialogs.findReplace.findPrevious"),title:n("dialogs.findReplace.findPreviousTitle"),children:jsxRuntime.jsx(Ie,{})}),jsxRuntime.jsx("button",{type:"button",className:"docx-find-replace-dialog-nav",style:x?A:te,onClick:N,disabled:!x,"aria-label":n("dialogs.findReplace.findNext"),title:n("dialogs.findReplace.findNextTitle"),children:jsxRuntime.jsx(Ne,{})})]})]}),x&&jsxRuntime.jsx("div",{className:"docx-find-replace-dialog-status",style:ne,children:n("dialogs.findReplace.matchCount",{current:t.currentIndex+1,total:t.totalCount})}),he&&jsxRuntime.jsx("div",{className:"docx-find-replace-dialog-status",style:Le,children:n("dialogs.findReplace.noResults")}),k&&jsxRuntime.jsx(jsxRuntime.Fragment,{children:jsxRuntime.jsxs("div",{className:"docx-find-replace-dialog-row",style:J,children:[jsxRuntime.jsx("label",{htmlFor:"replace-text",style:Q,children:n("dialogs.findReplace.replaceLabel")}),jsxRuntime.jsx("input",{ref:j,id:"replace-text",type:"text",className:"docx-find-replace-dialog-input",style:se?Z:O,value:b,onChange:e=>z(e.target.value),onKeyDown:ue,onFocus:()=>V(true),onBlur:()=>V(false),placeholder:n("dialogs.findReplace.replacePlaceholder"),"aria-label":n("dialogs.findReplace.replaceAriaLabel")}),jsxRuntime.jsxs("div",{style:Te,children:[jsxRuntime.jsx("button",{type:"button",className:"docx-find-replace-dialog-button",style:x?D:ee,onClick:F,disabled:!x,title:n("dialogs.findReplace.replaceCurrentTitle"),children:n("dialogs.findReplace.replaceButton")}),jsxRuntime.jsx("button",{type:"button",className:"docx-find-replace-dialog-button",style:x?D:ee,onClick:fe,disabled:!x,title:n("dialogs.findReplace.replaceAllTitle"),children:n("dialogs.findReplace.replaceAllButton")})]})]})}),jsxRuntime.jsxs("div",{className:"docx-find-replace-dialog-options",style:Ee,children:[jsxRuntime.jsxs("label",{className:"docx-find-replace-dialog-option",style:w,children:[jsxRuntime.jsx("input",{type:"checkbox",style:oe,checked:r,onChange:e=>ae(e.target.checked)}),n("dialogs.findReplace.matchCase")]}),jsxRuntime.jsxs("label",{className:"docx-find-replace-dialog-option",style:w,children:[jsxRuntime.jsx("input",{type:"checkbox",style:oe,checked:a,onChange:e=>ie(e.target.checked)}),n("dialogs.findReplace.wholeWords")]}),!k&&jsxRuntime.jsx("button",{type:"button",style:{...w,background:"none",border:"none",cursor:"pointer",color:"var(--doc-link)",padding:0},onClick:xe,children:n("dialogs.findReplace.toggleReplace")})]})]})]})})}var Ae=_e;exports.a=_e;exports.b=Ae;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkD2LFXRWX_js=require('./chunk-D2LFXRWX.js'),react=require('react'),utils=require('@xcrong/docx-editor-core/utils'),jsxRuntime=require('react/jsx-runtime');var E=[{labelKey:"dialogs.pageSetup.pageSizes.letter",width:12240,height:15840},{labelKey:"dialogs.pageSetup.pageSizes.a4",width:11906,height:16838},{labelKey:"dialogs.pageSetup.pageSizes.legal",width:12240,height:20160},{labelKey:"dialogs.pageSetup.pageSizes.a3",width:16838,height:23811},{labelKey:"dialogs.pageSetup.pageSizes.a5",width:8391,height:11906},{labelKey:"dialogs.pageSetup.pageSizes.b5",width:9979,height:14175},{labelKey:"dialogs.pageSetup.pageSizes.executive",width:10440,height:15120}];function f(i){return Math.round(i/utils.TWIPS_PER_INCH*100)/100}function x(i){return Math.round(i*utils.TWIPS_PER_INCH)}function J(i,l){let b=Math.min(i,l),n=Math.max(i,l);return E.findIndex(a=>Math.abs(a.width-b)<20&&Math.abs(a.height-n)<20)}var O={position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"var(--doc-overlay)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e4},Q={backgroundColor:"var(--doc-surface)",borderRadius:8,boxShadow:"0 4px 20px var(--doc-shadow)",minWidth:400,maxWidth:480,width:"100%",margin:20},V={padding:"16px 20px 12px",borderBottom:"1px solid var(--doc-border)",fontSize:16,fontWeight:600},X={padding:"16px 20px",display:"flex",flexDirection:"column",gap:14},H={fontSize:12,fontWeight:600,color:"var(--doc-text-muted)",textTransform:"uppercase",letterSpacing:"0.5px"},g={display:"flex",alignItems:"center",gap:12},c={width:80,fontSize:13,color:"var(--doc-text-muted)"},y={flex:1,padding:"6px 8px",border:"1px solid var(--doc-border)",borderRadius:4,fontSize:13},N={...y},C={fontSize:11,color:"var(--doc-text-muted)",width:16},Y={padding:"12px 20px 16px",borderTop:"1px solid var(--doc-border)",display:"flex",justifyContent:"flex-end",gap:8},A={padding:"6px 16px",fontSize:13,border:"1px solid var(--doc-border)",borderRadius:4,cursor:"pointer"},_=12240,B=15840,r=1440;function oe({isOpen:i,onClose:l,onApply:b,currentProps:n}){let{t:a}=chunkD2LFXRWX_js.b(),[u,m]=react.useState(_),[S,h]=react.useState(B),[p,K]=react.useState("portrait"),[P,M]=react.useState(r),[w,R]=react.useState(r),[z,k]=react.useState(r),[T,D]=react.useState(r);react.useEffect(()=>{if(!i)return;let e=n?.pageWidth||_,s=n?.pageHeight||B,Z=n?.orientation||(e>s?"landscape":"portrait");m(e),h(s),K(Z),M(n?.marginTop??r),R(n?.marginBottom??r),k(n?.marginLeft??r),D(n?.marginRight??r);},[i,n]);let G=react.useCallback(e=>{if(e<0)return;let s=E[e];p==="landscape"?(m(s.height),h(s.width)):(m(s.width),h(s.height));},[p]),U=react.useCallback(e=>{e!==p&&(K(e),m(S),h(u));},[p,u,S]),I=react.useCallback(()=>{b({pageWidth:u,pageHeight:S,orientation:p,marginTop:P,marginBottom:w,marginLeft:z,marginRight:T}),l();},[u,S,p,P,w,z,T,b,l]),j=react.useCallback(e=>{e.key==="Escape"&&l(),e.key==="Enter"&&I();},[l,I]);if(!i)return null;let W=J(u,S);return jsxRuntime.jsx("div",{style:O,onClick:l,onKeyDown:j,children:jsxRuntime.jsxs("div",{style:Q,onClick:e=>e.stopPropagation(),onMouseDown:e=>e.stopPropagation(),role:"dialog","aria-label":a("dialogs.pageSetup.title"),children:[jsxRuntime.jsx("div",{style:V,children:a("dialogs.pageSetup.title")}),jsxRuntime.jsxs("div",{style:X,children:[jsxRuntime.jsx("div",{style:H,children:a("dialogs.pageSetup.pageSize")}),jsxRuntime.jsxs("div",{style:g,children:[jsxRuntime.jsx("label",{style:c,children:a("dialogs.pageSetup.sizeLabel")}),jsxRuntime.jsxs("select",{style:N,value:W,onChange:e=>G(Number(e.target.value)),children:[E.map((e,s)=>jsxRuntime.jsx("option",{value:s,children:a(e.labelKey)},e.labelKey)),W<0&&jsxRuntime.jsx("option",{value:-1,children:a("dialogs.pageSetup.custom")})]})]}),jsxRuntime.jsxs("div",{style:g,children:[jsxRuntime.jsx("label",{style:c,children:a("dialogs.pageSetup.orientation")}),jsxRuntime.jsxs("select",{style:N,value:p,onChange:e=>U(e.target.value),children:[jsxRuntime.jsx("option",{value:"portrait",children:a("dialogs.pageSetup.portrait")}),jsxRuntime.jsx("option",{value:"landscape",children:a("dialogs.pageSetup.landscape")})]})]}),jsxRuntime.jsx("div",{style:{...H,marginTop:4},children:a("dialogs.pageSetup.margins")}),jsxRuntime.jsxs("div",{style:g,children:[jsxRuntime.jsx("label",{style:c,children:a("dialogs.pageSetup.top")}),jsxRuntime.jsx("input",{type:"number",style:y,min:0,max:10,step:.1,value:f(P),onChange:e=>M(x(Number(e.target.value)||0))}),jsxRuntime.jsx("span",{style:C,children:"in"})]}),jsxRuntime.jsxs("div",{style:g,children:[jsxRuntime.jsx("label",{style:c,children:a("dialogs.pageSetup.bottom")}),jsxRuntime.jsx("input",{type:"number",style:y,min:0,max:10,step:.1,value:f(w),onChange:e=>R(x(Number(e.target.value)||0))}),jsxRuntime.jsx("span",{style:C,children:"in"})]}),jsxRuntime.jsxs("div",{style:g,children:[jsxRuntime.jsx("label",{style:c,children:a("dialogs.pageSetup.left")}),jsxRuntime.jsx("input",{type:"number",style:y,min:0,max:10,step:.1,value:f(z),onChange:e=>k(x(Number(e.target.value)||0))}),jsxRuntime.jsx("span",{style:C,children:"in"})]}),jsxRuntime.jsxs("div",{style:g,children:[jsxRuntime.jsx("label",{style:c,children:a("dialogs.pageSetup.right")}),jsxRuntime.jsx("input",{type:"number",style:y,min:0,max:10,step:.1,value:f(T),onChange:e=>D(x(Number(e.target.value)||0))}),jsxRuntime.jsx("span",{style:C,children:"in"})]})]}),jsxRuntime.jsxs("div",{style:Y,children:[jsxRuntime.jsx("button",{type:"button",style:A,onClick:l,children:a("common.cancel")}),jsxRuntime.jsx("button",{type:"button",style:{...A,backgroundColor:"var(--doc-primary)",color:"var(--doc-on-primary)",borderColor:"var(--doc-primary)"},onClick:I,children:a("common.apply")})]})]})})}exports.a=oe;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {b,c,a}from'./chunk-HM63QNON.mjs';import {b as b$1}from'./chunk-AD33TJ5N.mjs';import*as J from'react';import J__default,{createContext,useState,useRef,useCallback,useMemo,useEffect,Children,isValidElement,useContext}from'react';import {clsx}from'clsx';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {halfPointsToPoints}from'@xcrong/docx-editor-core/utils/units';export{pointsToHalfPoints as d}from'@xcrong/docx-editor-core/utils/units';import {createDefaultListState}from'@xcrong/docx-editor-core/utils/listState';export{createDefaultListState as f}from'@xcrong/docx-editor-core/utils/listState';import {en}from'@xcrong/docx-editor-i18n';import*as E from'@radix-ui/react-select';import {excludeFontsByName,generateThemeTintShadeMatrix,resolveColorToHex,twipsToPixels,pixelsToTwips,formatPx,resolveHighlightColor,resolveColor}from'@xcrong/docx-editor-core/utils';import {resolveParagraphStyleOptions,getStylePreviewProps}from'@xcrong/docx-editor-core/utils/stylePreview';import {normalizeFontFamilies}from'@xcrong/docx-editor-core/utils/fontOptions';export{mapHexToHighlightName as g}from'@xcrong/docx-editor-core/utils/highlightColors';import {openReportIssue}from'@xcrong/docx-editor-core/utils/reportIssue';var Xt=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,jt=clsx,Jt=(e,t)=>o=>{var r;if(t?.variants==null)return jt(e,o?.class,o?.className);let{variants:n,defaultVariants:l}=t,i=Object.keys(n).map(a=>{let p=o?.[a],b=l?.[a];if(p===null)return null;let d=Xt(p)||Xt(b);return n[a][d]}),c=o&&Object.entries(o).reduce((a,p)=>{let[b,d]=p;return d===void 0||(a[b]=d),a},{}),u=t==null||(r=t.compoundVariants)===null||r===void 0?void 0:r.reduce((a,p)=>{let{class:b,className:d,...f}=p;return Object.entries(f).every(m=>{let[s,g]=m;return Array.isArray(g)?g.includes({...l,...c}[s]):{...l,...c}[s]===g})?[...a,b,d]:a},[]);return jt(e,i,u,o?.class,o?.className)};function M(...e){return clsx(e)}var ur=Jt("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-9 w-9","icon-sm":"h-7 w-7"}},defaultVariants:{variant:"default",size:"default"}}),K=J.forwardRef(({className:e,variant:t,size:o,...r},n)=>jsx("button",{className:M(ur({variant:t,size:o,className:e})),ref:n,...r}));K.displayName="Button";var fr=[8,9,10,11,12,14,16,18,20,24,28,36,48,72],br=1,gr=400;function eo(e,t,o){for(let r of t)if(r>e)return r;return Math.min(e+1,o)}function to(e,t,o){for(let r=t.length-1;r>=0;r--)if(t[r]<e)return t[r];return Math.max(e-1,o)}function oo({value:e,onChange:t,sizes:o=fr,disabled:r=false,className:n,placeholder:l="11",minSize:i=br,maxSize:c$1=gr}){let{t:u}=b$1(),[a,p]=useState(false),[b$2,d]=useState(""),[f,m]=useState(false),s=useRef(null),g=useCallback(()=>{m(false),p(false);},[]),{containerRef:h,dropdownRef:x,dropdownStyle:y}=c({isOpen:f,onClose:g}),C=e??(parseInt(l,10)||11),L=e!==void 0?e.toString():l,P=useCallback(S=>{if(S.preventDefault(),r)return;let D=to(C,o,i);t?.(D);},[C,o,i,r,t]),U=useCallback(S=>{if(S.preventDefault(),r)return;let D=eo(C,o,c$1);t?.(D);},[C,o,c$1,r,t]),F=useCallback(S=>{S.preventDefault(),!r&&(p(true),d(L),m(true),requestAnimationFrame(()=>{s.current?.focus(),s.current?.select();}));},[r,L]),we=useCallback(S=>{d(S.target.value);},[]),Z=useCallback(()=>{p(false);let S=parseFloat(b$2);if(!isNaN(S)&&S>=i&&S<=c$1){let D=Math.round(S*2)/2;t?.(D);}},[b$2,i,c$1,t]),ge=useCallback(S=>{if(S.key==="Enter")S.preventDefault(),Z(),m(false);else if(S.key==="Escape")p(false),m(false);else if(S.key==="ArrowUp"){S.preventDefault();let D=eo(C,o,c$1);d(D.toString()),t?.(D);}else if(S.key==="ArrowDown"){S.preventDefault();let D=to(C,o,i);d(D.toString()),t?.(D);}},[Z,C,o,c$1,i,t]),q=useCallback(S=>{t?.(S),m(false),p(false);},[t]),j=useCallback(S=>{S.target.tagName!=="INPUT"&&S.preventDefault();},[]);return jsxs("div",{ref:h,className:M("flex items-center",n),onMouseDown:j,children:[jsx(K,{variant:"ghost",size:"icon-sm",className:M("h-7 w-7 text-muted-foreground hover:text-foreground hover:bg-muted/80 rounded-r-none",r&&"opacity-30 cursor-not-allowed"),onMouseDown:P,disabled:r||C<=i,"aria-label":u("fontSize.decrease"),"data-testid":"font-size-decrease",children:jsx(b,{name:"remove",size:18})}),jsx("div",{className:"relative",children:a?jsx("input",{ref:s,type:"text",value:b$2,onChange:we,onBlur:Z,onKeyDown:ge,className:M("h-7 w-10 text-center text-sm border border-input bg-doc-bg-input text-doc-text","focus:outline-none focus:ring-1 focus:ring-ring","rounded-none"),"aria-label":u("fontSize.label"),"data-testid":"font-size-input"}):jsx("button",{type:"button",onClick:F,className:M("h-7 w-10 text-center text-sm border border-border bg-doc-bg-input text-doc-text","hover:border-input hover:bg-doc-bg-hover","focus:outline-none focus:ring-1 focus:ring-ring","rounded-none",r&&"opacity-50 cursor-not-allowed"),disabled:r,"aria-label":u("fontSize.label"),"aria-haspopup":"listbox","aria-expanded":f,"data-testid":"font-size-display",children:L})}),f&&jsx("div",{ref:x,style:{...y,backgroundColor:"var(--doc-surface)",border:"1px solid var(--doc-border)",borderRadius:6,boxShadow:"0 4px 12px var(--doc-shadow)",maxHeight:240,overflowY:"auto",minWidth:60},role:"listbox","aria-label":u("fontSize.listLabel"),children:o.map(S=>jsx("button",{type:"button",onClick:()=>q(S),className:M("w-full px-3 py-1.5 text-sm text-left","hover:bg-muted",S===C&&"bg-muted font-medium"),role:"option","aria-selected":S===C,children:S},S))}),jsx(K,{variant:"ghost",size:"icon-sm",className:M("h-7 w-7 text-muted-foreground hover:text-foreground hover:bg-muted/80 rounded-l-none",r&&"opacity-30 cursor-not-allowed"),onMouseDown:U,disabled:r||C>=c$1,"aria-label":u("fontSize.increase"),"data-testid":"font-size-increase",children:jsx(b,{name:"add",size:18})})]})}var yr={display:"inline-flex",alignItems:"center",gap:"4px"},no={display:"inline-flex",alignItems:"center",gap:"4px"},ct={display:"flex",alignItems:"center",justifyContent:"center",width:"32px",height:"32px",padding:"4px",border:"none",borderRadius:"4px",backgroundColor:"transparent",cursor:"pointer",transition:"background-color 0.1s",color:"var(--doc-text-muted)"},Cr={...ct,backgroundColor:"var(--doc-bg-hover)"},wr={...ct,backgroundColor:"var(--doc-primary-light)",color:"var(--doc-primary)"},Sr={...ct,cursor:"default",opacity:.38},Tr={width:"28px",height:"28px",padding:"2px"},kr={width:"1px",height:"20px",backgroundColor:"var(--doc-border)",margin:"0 6px"},it=20;function lt({active:e=false,disabled:t=false,title:o,onClick:r,children:n,className:l,style:i}){let[c,u]=useState(false),a={...t?Sr:e?wr:c?Cr:ct,...i},p=b=>{b.preventDefault();};return jsx("button",{type:"button",className:`docx-list-button ${e?"docx-list-button-active":""} ${t?"docx-list-button-disabled":""} ${l||""}`,style:a,onMouseDown:p,onClick:t?void 0:r,onMouseEnter:()=>u(true),onMouseLeave:()=>u(false),disabled:t,title:o,"aria-label":o,"aria-pressed":e,role:"button",children:n})}function ao({listState:e,onBulletList:t,onNumberedList:o,onIndent:r,onOutdent:n,disabled:l=false,className:i,style:c,showIndentButtons:u=true,compact:a=false,hasIndent:p=false}){let{t:b$2}=b$1(),d=useCallback(()=>a?{...Tr}:{},[a]),f=e?.type==="bullet",m=e?.type==="numbered",g=(e?.isInList||f||m)&&(e?.level??0)>0||p;return jsxs("div",{className:`docx-list-buttons ${i||""}`,style:{...yr,...c},role:"group","aria-label":b$2("lists.ariaLabel"),children:[jsxs("div",{style:no,role:"group","aria-label":b$2("lists.typeAriaLabel"),children:[jsx(lt,{active:f,disabled:l,title:b$2("lists.bulletList"),onClick:t,style:d(),children:jsx(b,{name:"format_list_bulleted",size:it})}),jsx(lt,{active:m,disabled:l,title:b$2("lists.numberedList"),onClick:o,style:d(),children:jsx(b,{name:"format_list_numbered",size:it})})]}),u&&jsxs(Fragment,{children:[jsx("div",{style:kr,role:"separator"}),jsxs("div",{style:no,role:"group","aria-label":b$2("lists.indentationAriaLabel"),children:[jsx(lt,{active:false,disabled:l||!g,title:b$2("lists.decreaseIndent"),onClick:n,style:d(),children:jsx(b,{name:"format_indent_decrease",size:it})}),jsx(lt,{active:false,disabled:l,title:b$2("lists.increaseIndent"),onClick:r,style:d(),children:jsx(b,{name:"format_indent_increase",size:it})})]})]})]})}var dt={hfInlineEditor:10,ruler:30,outline:40,dropdown:100,toolbar:100,contextMenu:1e4};var lo=[{action:"cut",labelKey:"contextMenu.cut",shortcutKey:"contextMenu.cutShortcut"},{action:"copy",labelKey:"contextMenu.copy",shortcutKey:"contextMenu.copyShortcut"},{action:"paste",labelKey:"contextMenu.paste",shortcutKey:"contextMenu.pasteShortcut"},{action:"pasteAsPlainText",labelKey:"contextMenu.pastePlainText",shortcutKey:"contextMenu.pastePlainTextShortcut",dividerAfter:true},{action:"delete",labelKey:"contextMenu.delete",shortcutKey:"contextMenu.deleteShortcut",dividerAfter:true},{action:"selectAll",labelKey:"contextMenu.selectAll",shortcutKey:"contextMenu.selectAllShortcut"}],Lr=()=>jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[jsx("circle",{cx:"4",cy:"12",r:"2",stroke:"currentColor",strokeWidth:"1.5"}),jsx("circle",{cx:"12",cy:"12",r:"2",stroke:"currentColor",strokeWidth:"1.5"}),jsx("path",{d:"M5.5 10.5L10.5 3M10.5 10.5L5.5 3",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),Rr=()=>jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[jsx("rect",{x:"5",y:"5",width:"8",height:"9",rx:"1",stroke:"currentColor",strokeWidth:"1.5"}),jsx("path",{d:"M11 5V3a1 1 0 00-1-1H4a1 1 0 00-1 1v8a1 1 0 001 1h2",stroke:"currentColor",strokeWidth:"1.5"})]}),Er=()=>jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[jsx("rect",{x:"3",y:"3",width:"10",height:"11",rx:"1",stroke:"currentColor",strokeWidth:"1.5"}),jsx("path",{d:"M6 3V2a1 1 0 011-1h2a1 1 0 011 1v1",stroke:"currentColor",strokeWidth:"1.5"}),jsx("path",{d:"M6 8h4M6 11h4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),Ar=()=>jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:jsx("path",{d:"M4 4l8 8M12 4l-8 8",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})}),Nr=()=>jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[jsx("rect",{x:"2",y:"2",width:"12",height:"12",rx:"1",stroke:"currentColor",strokeWidth:"1.5",strokeDasharray:"2 2"}),jsx("rect",{x:"4",y:"4",width:"8",height:"8",fill:"currentColor",opacity:"0.3"})]}),Dr=()=>jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[jsx("rect",{x:"2",y:"6",width:"12",height:"4",rx:"0.5",stroke:"currentColor",strokeWidth:"1.2"}),jsx("rect",{x:"2",y:"10",width:"12",height:"4",rx:"0.5",stroke:"currentColor",strokeWidth:"1.2"}),jsx("path",{d:"M8 1v3M6.5 2.5h3",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round"})]}),Br=()=>jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[jsx("rect",{x:"2",y:"2",width:"12",height:"4",rx:"0.5",stroke:"currentColor",strokeWidth:"1.2"}),jsx("rect",{x:"2",y:"6",width:"12",height:"4",rx:"0.5",stroke:"currentColor",strokeWidth:"1.2"}),jsx("path",{d:"M8 12v3M6.5 13.5h3",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round"})]}),_r=()=>jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[jsx("rect",{x:"2",y:"2",width:"12",height:"4",rx:"0.5",stroke:"currentColor",strokeWidth:"1.2"}),jsx("rect",{x:"2",y:"6",width:"12",height:"4",rx:"0.5",stroke:"currentColor",strokeWidth:"1.2",opacity:"0.3"}),jsx("rect",{x:"2",y:"10",width:"12",height:"4",rx:"0.5",stroke:"currentColor",strokeWidth:"1.2"}),jsx("path",{d:"M5 8h6",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),Fr=()=>jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[jsx("rect",{x:"6",y:"2",width:"4",height:"12",rx:"0.5",stroke:"currentColor",strokeWidth:"1.2"}),jsx("rect",{x:"10",y:"2",width:"4",height:"12",rx:"0.5",stroke:"currentColor",strokeWidth:"1.2"}),jsx("path",{d:"M3 8H0.5M1.75 6.5v3",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round"})]}),Or=()=>jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[jsx("rect",{x:"2",y:"2",width:"4",height:"12",rx:"0.5",stroke:"currentColor",strokeWidth:"1.2"}),jsx("rect",{x:"6",y:"2",width:"4",height:"12",rx:"0.5",stroke:"currentColor",strokeWidth:"1.2"}),jsx("path",{d:"M13 8h2.5M14.25 6.5v3",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round"})]}),zr=()=>jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[jsx("rect",{x:"2",y:"2",width:"4",height:"12",rx:"0.5",stroke:"currentColor",strokeWidth:"1.2"}),jsx("rect",{x:"6",y:"2",width:"4",height:"12",rx:"0.5",stroke:"currentColor",strokeWidth:"1.2",opacity:"0.3"}),jsx("rect",{x:"10",y:"2",width:"4",height:"12",rx:"0.5",stroke:"currentColor",strokeWidth:"1.2"}),jsx("path",{d:"M8 5v6",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),Kr=()=>jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[jsx("rect",{x:"2",y:"4",width:"4",height:"8",rx:"0.5",stroke:"currentColor",strokeWidth:"1.2"}),jsx("rect",{x:"10",y:"4",width:"4",height:"8",rx:"0.5",stroke:"currentColor",strokeWidth:"1.2"}),jsx("path",{d:"M7 8h2",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"}),jsx("path",{d:"M8 7l1 1-1 1",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round"})]}),Hr=()=>jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[jsx("rect",{x:"2",y:"4",width:"12",height:"8",rx:"0.5",stroke:"currentColor",strokeWidth:"1.2"}),jsx("path",{d:"M8 4v8",stroke:"currentColor",strokeWidth:"1.2",strokeDasharray:"2 1"}),jsx("path",{d:"M6.5 8h-1M9.5 8h1",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),Wr=()=>jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[jsx("rect",{x:"2",y:"2",width:"12",height:"12",rx:"1",stroke:"currentColor",strokeWidth:"1.5",strokeDasharray:"2 1.5"}),jsx("path",{d:"M8 2v12M2 8h12",stroke:"currentColor",strokeWidth:"1.2"})]}),Vr=()=>jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[jsx("rect",{x:"2",y:"2",width:"12",height:"12",rx:"1",stroke:"currentColor",strokeWidth:"1.3"}),jsx("path",{d:"M5 2v12M2 8h11",stroke:"currentColor",strokeWidth:"1.1",opacity:"0.6"}),jsx("path",{d:"M5.5 5.5l5 5M10.5 5.5l-5 5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),$r=()=>jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[jsx("path",{d:"M3 3h10a1 1 0 011 1v6a1 1 0 01-1 1H6l-3 2.5V11H3a1 1 0 01-1-1V4a1 1 0 011-1z",stroke:"currentColor",strokeWidth:"1.3"}),jsx("path",{d:"M5 6h6M5 8.5h4",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round"})]});function Gr(e){switch(e){case "cut":return jsx(Lr,{});case "copy":return jsx(Rr,{});case "paste":case "pasteAsPlainText":return jsx(Er,{});case "delete":return jsx(Ar,{});case "selectAll":return jsx(Nr,{});case "addRowAbove":return jsx(Dr,{});case "addRowBelow":return jsx(Br,{});case "deleteRow":return jsx(_r,{});case "addColumnLeft":return jsx(Fr,{});case "addColumnRight":return jsx(Or,{});case "deleteColumn":return jsx(zr,{});case "mergeCells":return jsx(Kr,{});case "splitCell":return jsx(Hr,{});case "selectTable":return jsx(Wr,{});case "deleteTable":return jsx(Vr,{});case "addComment":return jsx($r,{});default:return null}}var Ur=({item:e,onClick:t,isHighlighted:o,onMouseEnter:r})=>e.action==="separator"?jsx("div",{className:"docx-text-context-menu-separator",style:{height:"1px",backgroundColor:"var(--doc-border)",margin:"4px 12px"}}):jsxs(Fragment,{children:[jsxs("button",{type:"button",className:`docx-text-context-menu-item ${o?"docx-text-context-menu-item-highlighted":""} ${e.disabled?"docx-text-context-menu-item-disabled":""}`,onClick:t,onMouseEnter:r,disabled:e.disabled,role:"menuitem","aria-disabled":e.disabled,style:{display:"flex",alignItems:"center",gap:"10px",width:"100%",padding:"8px 12px",border:"none",background:o&&!e.disabled?"var(--doc-primary-light)":"transparent",cursor:e.disabled?"not-allowed":"pointer",fontSize:"13px",color:e.disabled?"var(--doc-text-subtle)":"var(--doc-text)",textAlign:"left",opacity:e.disabled?.6:1},children:[jsx("span",{style:{display:"flex",color:e.disabled?"var(--doc-border)":"var(--doc-text-muted)"},children:Gr(e.action)}),jsx("span",{style:{flex:1},children:e.label}),e.shortcut&&jsx("span",{style:{fontSize:"11px",color:"var(--doc-text-subtle)",fontFamily:"monospace"},children:e.shortcut})]}),e.dividerAfter&&jsx("div",{className:"docx-text-context-menu-separator",style:{height:"1px",backgroundColor:"var(--doc-border)",margin:"4px 12px"}})]}),bi=({isOpen:e,position:t,hasSelection:o,isEditable:r,hasClipboardContent:n=true,onAction:l,onClose:i,items:c,className:u=""})=>{let a=useRef(null),[p,b]=useState(0),{t:d}=b$1(),f=useMemo(()=>lo.map(x=>({action:x.action,label:d(x.labelKey),shortcut:x.shortcutKey?d(x.shortcutKey):void 0,dividerAfter:x.dividerAfter})),[d]),m=(c||f).map(x=>{let y=(()=>{if(x.disabled!==void 0)return x.disabled;switch(x.action){case "cut":case "copy":case "delete":return !o;case "paste":case "pasteAsPlainText":return !r||!n;default:return false}})();return {...x,disabled:y}}),s=m.filter(x=>x.action!=="separator");useEffect(()=>{if(!e)return;let x=C=>{a.current&&!a.current.contains(C.target)&&i();},y=setTimeout(()=>{document.addEventListener("mousedown",x);},0);return ()=>{clearTimeout(y),document.removeEventListener("mousedown",x);}},[e,i]),useEffect(()=>{if(!e)return;let x=y=>{switch(y.key){case "Escape":y.preventDefault(),i();break;case "ArrowDown":y.preventDefault(),b(L=>{let P=(L+1)%s.length;for(;s[P]?.disabled&&P!==L;)P=(P+1)%s.length;return P});break;case "ArrowUp":y.preventDefault(),b(L=>{let P=(L-1+s.length)%s.length;for(;s[P]?.disabled&&P!==L;)P=(P-1+s.length)%s.length;return P});break;case "Enter":y.preventDefault();let C=s[p];C&&!C.disabled&&(l(C.action),i());break}};return document.addEventListener("keydown",x),()=>document.removeEventListener("keydown",x)},[e,p,s,l,i]),useEffect(()=>{e&&b(0);},[e]);let g=useCallback(()=>{let y=m.length*36+16,C=t.x,L=t.y;return typeof window<"u"&&(C+220>window.innerWidth&&(C=window.innerWidth-220-10),L+y>window.innerHeight&&(L=window.innerHeight-y-10),C<10&&(C=10),L<10&&(L=10)),{position:"fixed",top:L,left:C,minWidth:220,background:"var(--doc-surface)",border:"1px solid var(--doc-border-light)",borderRadius:"8px",boxShadow:"0 2px 10px var(--doc-shadow)",zIndex:dt.contextMenu,padding:"4px 0",overflow:"hidden"}},[t,m.length]),h=x=>{x.disabled||(l(x.action),i());};return e?jsx("div",{ref:a,className:`docx-text-context-menu ${u}`,style:g(),role:"menu","aria-label":d("contextMenu.textMenuAriaLabel"),children:m.map((x,y)=>{let C=s.findIndex(L=>L===x);return jsx(Ur,{item:x,onClick:()=>h(x),isHighlighted:C===p,onMouseEnter:()=>{C>=0&&!x.disabled&&b(C);}},`${x.action}-${y}`)})}):null};function gi(e={}){let{enabled:t=true,isEditable:o=true,containerRef:r,onAction:n}=e,[l,i]=useState(false),[c,u]=useState({x:0,y:0}),[a,p]=useState(false),b=useCallback(()=>{let g=window.getSelection(),h=g&&!g.isCollapsed&&g.toString().length>0;return p(!!h),!!h},[]),d=useCallback(g=>{t&&(g.preventDefault(),g.stopPropagation(),b(),u({x:g.clientX,y:g.clientY}),i(true));},[t,b]),f=useCallback(()=>{i(false);},[]),m=useCallback(g=>{switch(f(),g){case "cut":document.execCommand("cut");break;case "copy":document.execCommand("copy");break;case "paste":document.execCommand("paste");break;case "pasteAsPlainText":navigator.clipboard.readText?.().then(h=>{document.execCommand("insertText",false,h);}).catch(()=>{document.execCommand("paste");});break;case "delete":document.execCommand("delete");break;case "selectAll":document.execCommand("selectAll");break}n?.(g);},[f,n]),s=useCallback(g=>{d(g);},[d]);return useEffect(()=>{if(!l)return;let g=h=>{h.key==="Escape"&&f();};return document.addEventListener("keydown",g),()=>document.removeEventListener("keydown",g)},[l,f]),{isOpen:l,position:c,hasSelection:a,openMenu:d,closeMenu:f,handleAction:m,onContextMenu:s}}function hi(e){return {cut:"Cut",copy:"Copy",paste:"Paste",pasteAsPlainText:"Paste as Plain Text",selectAll:"Select All",delete:"Delete",separator:"",addRowAbove:"Insert row above",addRowBelow:"Insert row below",deleteRow:"Delete row",addColumnLeft:"Insert column left",addColumnRight:"Insert column right",deleteColumn:"Delete column",mergeCells:en.table.mergeCells,splitCell:en.table.splitCell,selectTable:en.table.selectTable,deleteTable:en.table.deleteTable,addComment:"Comment"}[e]}function xi(e){return {cut:"Ctrl+X",copy:"Ctrl+C",paste:"Ctrl+V",pasteAsPlainText:"Ctrl+Shift+V",selectAll:"Ctrl+A",delete:"Del",separator:"",addRowAbove:"",addRowBelow:"",deleteRow:"",addColumnLeft:"",addColumnRight:"",deleteColumn:"",mergeCells:"",splitCell:"",selectTable:"",deleteTable:"",addComment:""}[e]}function vi(){return lo.map(e=>({action:e.action,label:e.labelKey,shortcut:e.shortcutKey,dividerAfter:e.dividerAfter}))}function yi(e,t,o){switch(e){case "cut":case "copy":case "delete":return t;case "paste":case "pasteAsPlainText":return o;case "addComment":return t;case "selectAll":return true;default:return true}}var Te=E.Root,ke=E.Group,ft=E.Value;function Pe({className:e,children:t,onMouseDown:o,...r}){return jsxs(E.Trigger,{className:M("flex h-8 items-center justify-between gap-1 rounded px-2 py-1","text-sm text-foreground bg-transparent","hover:bg-muted/80 focus:outline-none focus:bg-muted/80","disabled:cursor-not-allowed disabled:opacity-50","transition-colors duration-150","[&>span]:truncate",e),onMouseDown:n=>{n.preventDefault(),o?.(n);},...r,children:[t,jsx(E.Icon,{asChild:true,children:jsx(qr,{className:"h-4 w-4 text-muted-foreground shrink-0"})})]})}function Me({className:e,children:t,position:o="popper",onCloseAutoFocus:r,...n}){let l=typeof document<"u"&&!!document.querySelector(".ep-root.dark");return jsx(E.Portal,{children:jsx("div",{className:M("ep-root",l&&"dark"),children:jsx(E.Content,{className:M("relative z-50 max-h-72 min-w-[8rem] overflow-hidden","rounded-lg border border-border bg-popover text-popover-foreground shadow-lg","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=top]:slide-in-from-bottom-2",o==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1",e),position:o,onCloseAutoFocus:i=>{i.preventDefault(),r?.(i);},...n,children:jsx(E.Viewport,{className:M("p-1",o==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),onMouseDown:i=>i.preventDefault(),children:t})})})})}function _e({className:e,...t}){return jsx(E.Label,{className:M("px-2 py-1.5 text-xs font-medium text-muted-foreground",e),...t})}function oe({className:e,children:t,onMouseDown:o,...r}){return jsxs(E.Item,{className:M("relative flex w-full cursor-pointer select-none items-center","rounded px-2 py-1.5 text-sm text-foreground outline-none","hover:bg-muted focus:bg-muted","data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),onMouseDown:n=>{n.preventDefault(),o?.(n);},...r,children:[jsx(E.ItemText,{children:t}),jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:jsx(E.ItemIndicator,{children:jsx(Yr,{className:"h-4 w-4"})})})]})}function Fe({className:e,...t}){return jsx(E.Separator,{className:M("-mx-1 my-1 h-px bg-muted",e),...t})}function qr({className:e}){return jsx("svg",{className:e,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",children:jsx("path",{fillRule:"evenodd",d:"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z",clipRule:"evenodd"})})}function Yr({className:e}){return jsx("svg",{className:e,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",children:jsx("path",{fillRule:"evenodd",d:"M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z",clipRule:"evenodd"})})}function It(e){let t=e.trim();if(!t)return "";let o=null,r="";for(let n of t){if((n==='"'||n==="'")&&o===null){o=n,r+=n;continue}if(n===o){o=null,r+=n;continue}if(n===","&&o===null)break;r+=n;}return r.trim().replace(/^['"]|['"]$/g,"")}var jr=[{name:"Arial",fontFamily:"Arial, Helvetica, sans-serif",category:"sans-serif"},{name:"Calibri",fontFamily:'"Calibri", Arial, sans-serif',category:"sans-serif"},{name:"Helvetica",fontFamily:"Helvetica, Arial, sans-serif",category:"sans-serif"},{name:"Verdana",fontFamily:"Verdana, Geneva, sans-serif",category:"sans-serif"},{name:"Open Sans",fontFamily:'"Open Sans", sans-serif',category:"sans-serif"},{name:"Roboto",fontFamily:"Roboto, sans-serif",category:"sans-serif"},{name:"Times New Roman",fontFamily:'"Times New Roman", Times, serif',category:"serif"},{name:"Georgia",fontFamily:"Georgia, serif",category:"serif"},{name:"Cambria",fontFamily:"Cambria, Georgia, serif",category:"serif"},{name:"Garamond",fontFamily:"Garamond, serif",category:"serif"},{name:"Courier New",fontFamily:'"Courier New", Courier, monospace',category:"monospace"},{name:"Consolas",fontFamily:"Consolas, monospace",category:"monospace"}];function co({value:e,onChange:t,fonts:o=jr,documentFonts:r,disabled:n=false,className:l,placeholder:i="Arial",width:c=120,showPreview:u=true}){let{t:a}=b$1(),p=J.useMemo(()=>excludeFontsByName(r,o.map(s=>s.name)),[r,o]),b=J.useMemo(()=>[...p,...o],[p,o]),d=J.useMemo(()=>e?b.find(g=>g.fontFamily===e||g.name.toLowerCase()===e.toLowerCase()||It(g.fontFamily).toLowerCase()===e.toLowerCase())?.name||e:i,[e,b,i]),f=J.useCallback(s=>{let g=b.find(h=>h.name===s);g&&t?.(It(g.fontFamily)||g.name);},[t,b]),m=J.useMemo(()=>{let s={"sans-serif":[],serif:[],monospace:[],other:[]};return o.forEach(g=>{let h=g.category||"other";s[h].push(g);}),s},[o]);return jsxs(Te,{value:d,onValueChange:f,disabled:n,children:[jsx(Pe,{className:M("h-8 text-sm",l),style:{minWidth:typeof c=="number"?`${c}px`:c},"aria-label":a("font.selectAriaLabel"),children:jsx(ft,{placeholder:i,children:d})}),jsxs(Me,{className:"max-h-[300px]",children:[p.length>0&&jsxs(Fragment,{children:[jsxs(ke,{children:[jsx(_e,{children:a("font.documentFonts")}),p.map(s=>jsx(oe,{value:s.name,style:u?{fontFamily:s.fontFamily}:void 0,children:s.name},`doc-${s.name}`))]}),jsx(Fe,{})]}),m["sans-serif"].length>0&&jsxs(ke,{children:[jsx(_e,{children:a("font.sansSerif")}),m["sans-serif"].map(s=>jsx(oe,{value:s.name,style:u?{fontFamily:s.fontFamily}:void 0,children:s.name},s.name))]}),m.serif.length>0&&jsxs(Fragment,{children:[jsx(Fe,{}),jsxs(ke,{children:[jsx(_e,{children:a("font.serif")}),m.serif.map(s=>jsx(oe,{value:s.name,style:u?{fontFamily:s.fontFamily}:void 0,children:s.name},s.name))]})]}),m.monospace.length>0&&jsxs(Fragment,{children:[jsx(Fe,{}),jsxs(ke,{children:[jsx(_e,{children:a("font.monospace")}),m.monospace.map(s=>jsx(oe,{value:s.name,style:u?{fontFamily:s.fontFamily}:void 0,children:s.name},s.name))]})]}),m.other.length>0&&jsxs(Fragment,{children:[jsx(Fe,{}),jsx(ke,{children:m.other.map(s=>jsx(oe,{value:s.name,style:u?{fontFamily:s.fontFamily}:void 0,children:s.name},s.name))})]})]})]})}var rn=[{name:"Dark Red",nameKey:"colorPicker.colors.darkRed",hex:"C00000"},{name:"Red",nameKey:"colorPicker.colors.red",hex:"FF0000"},{name:"Orange",nameKey:"colorPicker.colors.orange",hex:"FFC000"},{name:"Yellow",nameKey:"colorPicker.colors.yellow",hex:"FFFF00"},{name:"Light Green",nameKey:"colorPicker.colors.lightGreen",hex:"92D050"},{name:"Green",nameKey:"colorPicker.colors.green",hex:"00B050"},{name:"Light Blue",nameKey:"colorPicker.colors.lightBlue",hex:"00B0F0"},{name:"Blue",nameKey:"colorPicker.colors.blue",hex:"0070C0"},{name:"Dark Blue",nameKey:"colorPicker.colors.darkBlue",hex:"002060"},{name:"Purple",nameKey:"colorPicker.colors.purple",hex:"7030A0"}],gt=18,nn=2,an={position:"relative",display:"inline-block"},ln={display:"flex",alignItems:"center",justifyContent:"center",width:"40px",height:"32px",padding:"2px 6px",border:"none",borderRadius:"4px",backgroundColor:"transparent",cursor:"pointer",transition:"background-color 0.1s",color:"var(--doc-text-muted)"},sn={padding:"10px",backgroundColor:"var(--doc-surface)",border:"1px solid var(--doc-border-dark)",borderRadius:"6px",boxShadow:"0 4px 16px var(--doc-shadow)",width:"auto"},Rt={fontSize:"11px",color:"var(--doc-text-muted)",marginBottom:"4px",fontWeight:500},Et={height:"1px",backgroundColor:"var(--doc-border)",margin:"8px 0"},mo={display:"grid",gap:`${nn}px`},ht={width:`${gt}px`,height:`${gt}px`,border:"1px solid var(--doc-border-input)",borderRadius:"2px",cursor:"pointer",padding:0,transition:"transform 0.1s, border-color 0.1s"},fo={...ht,transform:"scale(1.15)",borderColor:"var(--doc-text)",zIndex:1},bo={...ht,borderWidth:"2px",borderColor:"var(--doc-primary)",boxShadow:"0 0 0 1px var(--doc-primary)"},cn={display:"flex",alignItems:"center",gap:"8px",width:"100%",padding:"5px 8px",border:"1px solid var(--doc-border-dark)",borderRadius:"4px",backgroundColor:"var(--doc-surface)",cursor:"pointer",fontSize:"12px",color:"var(--doc-text)"},dn={display:"flex",alignItems:"center",gap:"6px"},un={width:"70px",height:"24px",padding:"2px 6px",border:"1px solid var(--doc-border-input)",borderRadius:"3px",fontSize:"12px"},pn={height:"24px",padding:"0 10px",border:"1px solid var(--doc-border-input)",borderRadius:"3px",backgroundColor:"var(--doc-bg-subtle)",fontSize:"12px",cursor:"pointer"},uo={width:"16px",height:"4px",borderRadius:"1px",marginTop:"-2px"},mn={display:"inline-flex",alignItems:"stretch",height:"32px",gap:"2px"},fn={display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:0,width:"28px",padding:"2px 4px",border:"none",borderRadius:"4px",backgroundColor:"transparent",cursor:"pointer",transition:"background-color 0.1s",color:"var(--doc-text-muted)"},bn={display:"flex",alignItems:"center",justifyContent:"center",width:"18px",padding:0,border:"none",borderRadius:"4px",backgroundColor:"transparent",cursor:"pointer",transition:"background-color 0.1s",color:"var(--doc-text-muted)"};function At(e,t,o){if(!e)return t==="text"||t==="border"?"#000000":"transparent";if(typeof e=="string"){if(t==="highlight"){let r=resolveHighlightColor(e);return r||(e==="none"?"transparent":e.startsWith("#")?e:`#${e}`)}return e.startsWith("#")?e:`#${e}`}return resolveColor(e,o)}function po(e){let t=e.replace(/^#/,"");if(t.length!==6)return false;let o=parseInt(t.slice(0,2),16),r=parseInt(t.slice(2,4),16),n=parseInt(t.slice(4,6),16);return (o*299+r*587+n*114)/1e3>230}function go(e,t,o){return e?(typeof e=="string"?e.replace(/^#/,"").toUpperCase():resolveColorToHex(e,o))===t.toUpperCase():false}function gn({matrix:e,selectedColor:t,theme:o,onSelect:r}){let[n,l]=useState(null);return jsx("div",{style:{...mo,gridTemplateColumns:`repeat(10, ${gt}px)`},children:e.flatMap((i,c)=>i.map((u,a)=>{let p=`${c}-${a}`,b=n===p,d=go(t,u.hex,o);return jsx("button",{type:"button",style:{...d?bo:b?fo:ht,backgroundColor:`#${u.hex}`},title:u.label,"aria-label":u.label,"aria-selected":d,onClick:()=>r(u),onMouseDown:f=>f.preventDefault(),onMouseEnter:()=>l(p),onMouseLeave:()=>l(null)},p)}))})}function hn({selectedColor:e,theme:t,onSelect:o}){let[r,n]=useState(null),{t:l}=b$1();return jsx("div",{style:{...mo,gridTemplateColumns:`repeat(10, ${gt}px)`},children:rn.map((i,c)=>{let u=r===c,a=go(e,i.hex,t),p=l(i.nameKey);return jsx("button",{type:"button",style:{...a?bo:u?fo:ht,backgroundColor:`#${i.hex}`},title:p,"aria-label":p,"aria-selected":a,onClick:()=>o(i.hex),onMouseDown:b=>b.preventDefault(),onMouseEnter:()=>n(c),onMouseLeave:()=>n(null)},i.hex)})})}function Ke({mode:e,value:t,onChange:o,theme:r,disabled:n=false,className:l,style:i,title:c$1,icon:u,autoLabel:a,splitButton:p=true,defaultColor:b$2}){let[d,f]=useState(false),[m,s]=useState(false),[g,h]=useState(false),[x,y]=useState(false),[C,L]=useState(""),[P,U]=useState(()=>b$2??(e==="highlight"?"FFFF00":e==="border"?{rgb:"000000"}:{rgb:"FF0000"})),{t:F}=b$1();useEffect(()=>{let T=At(t,e,r).replace(/^#/,"");/^[0-9A-Fa-f]{6}$/.test(T)&&L(T.toUpperCase());},[t,e,r]);let we=useCallback(()=>f(false),[]),{containerRef:Z,dropdownRef:ge,dropdownStyle:q}=c({isOpen:d,onClose:we}),j=r?.colorScheme??null,S=useMemo(()=>generateThemeTintShadeMatrix(j),[j]),D=useMemo(()=>At(t,e,r),[t,e,r]),de=useMemo(()=>At(P,e,r),[P,e,r]),he=useCallback(()=>{n||f(T=>!T);},[n]),Ne=useCallback(T=>{let V;if(e==="highlight")V=T.hex;else {let ve={themeColor:T.themeSlot,rgb:T.hex};T.tint&&(ve.themeTint=T.tint),T.shade&&(ve.themeShade=T.shade),V=ve;}U(V),o?.(V),f(false);},[e,o]),xe=useCallback(T=>{let V=e==="highlight"?T:{rgb:T};U(V),o?.(V),f(false);},[e,o]),Se=useCallback(()=>{o?.(e==="highlight"?"none":{auto:true}),f(false);},[e,o]),Q=useCallback(()=>{let T=C.replace(/^#/,"").toUpperCase();if(/^[0-9A-F]{6}$/i.test(T)){let V=e==="highlight"?T:{rgb:T};U(V),o?.(V),f(false),L("");}},[e,C,o]),Ue=useCallback(()=>{n||o?.(P);},[n,P,o]),z={...ln,...n?{cursor:"default",opacity:.38}:d?{backgroundColor:"var(--doc-primary-light)",color:"var(--doc-primary)"}:m?{backgroundColor:"var(--doc-bg-hover)"}:{}},ae=F(e==="text"?"formattingBar.fontColor":e==="highlight"?"formattingBar.highlightColor":"table.borderColor"),Ze=u??(e==="text"?"format_color_text":e==="highlight"?"ink_highlighter":"border_color");return jsxs("div",{ref:Z,className:`docx-color-picker ${l||""}`,style:{...an,...i},children:[p?jsxs("div",{className:"docx-color-picker-split",style:{...mn,...n?{opacity:.38,cursor:"default"}:null},children:[jsxs("button",{type:"button",className:"docx-color-picker-apply",style:{...fn,...n?{cursor:"default"}:g?{backgroundColor:"var(--doc-bg-hover)"}:null},onClick:Ue,onMouseDown:T=>T.preventDefault(),onMouseEnter:()=>h(true),onMouseLeave:()=>h(false),disabled:n,title:c$1||ae,"aria-label":c$1||ae,children:[jsx(b,{name:Ze,size:18}),jsx("div",{style:{...uo,backgroundColor:de==="transparent"?"#fff":de,outline:de==="transparent"||po(de)?"1px solid #bbb":"none"}})]}),jsx("button",{type:"button",className:"docx-color-picker-arrow",style:{...bn,...n?{cursor:"default"}:d?{backgroundColor:"var(--doc-primary-light)",color:"var(--doc-primary)"}:x?{backgroundColor:"var(--doc-bg-hover)"}:null},onClick:he,onMouseDown:T=>T.preventDefault(),onMouseEnter:()=>y(true),onMouseLeave:()=>y(false),disabled:n,title:c$1||ae,"aria-label":c$1||ae,"aria-haspopup":"true","aria-expanded":d,children:jsx(b,{name:"arrow_drop_down",size:18})})]}):jsxs("button",{type:"button",className:"docx-color-picker-button",style:z,onClick:he,onMouseDown:T=>T.preventDefault(),onMouseEnter:()=>s(true),onMouseLeave:()=>s(false),disabled:n,title:c$1||ae,"aria-label":c$1||ae,"aria-haspopup":"true","aria-expanded":d,children:[jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",gap:0},children:[jsx(b,{name:Ze,size:18}),jsx("div",{style:{...uo,backgroundColor:D==="transparent"?"#fff":D,outline:D==="transparent"||po(D)?"1px solid #bbb":"none"}})]}),jsx(b,{name:"arrow_drop_down",size:14})]}),d&&jsx("div",{ref:ge,className:"docx-color-picker-dropdown",style:{...q,...sn},role:"dialog","aria-label":`${ae} picker`,onMouseDown:T=>{T.target.tagName!=="INPUT"&&T.preventDefault();},children:jsxs(Fragment,{children:[jsxs("button",{type:"button",style:cn,onClick:Se,onMouseDown:T=>T.preventDefault(),children:[e==="highlight"?jsx("span",{style:{display:"inline-block",width:"16px",height:"16px",border:"1px solid #ccc",borderRadius:"2px",position:"relative",backgroundColor:"#fff"},children:jsx("span",{style:{position:"absolute",top:"50%",left:"-1px",right:"-1px",height:"2px",backgroundColor:"#ff0000",transform:"rotate(-45deg)"}})}):jsx("span",{style:{display:"inline-block",width:"16px",height:"16px",backgroundColor:"#000",borderRadius:"2px"}}),a??F(e==="highlight"?"colorPicker.noColor":"colorPicker.automatic")]}),jsx("div",{style:Et}),jsx("div",{style:Rt,children:F("colorPicker.themeColors")}),jsx(gn,{matrix:S,selectedColor:t,theme:r,onSelect:Ne}),jsx("div",{style:Et}),jsx("div",{style:Rt,children:F("colorPicker.standardColors")}),jsx(hn,{selectedColor:t,theme:r,onSelect:xe}),jsx("div",{style:Et}),jsx("div",{style:Rt,children:F("colorPicker.customColor")}),jsxs("div",{style:dn,children:[jsx("span",{style:{fontSize:"12px",color:"var(--doc-text-muted)"},children:"#"}),jsx("input",{type:"text",style:un,value:C,onChange:T=>L(T.target.value.replace(/[^0-9A-Fa-f]/g,"").slice(0,6)),onKeyDown:T=>{T.key==="Enter"&&Q();},onMouseDown:T=>{T.stopPropagation();},placeholder:"FF0000",maxLength:6,"aria-label":"Custom hex color"}),jsx("button",{type:"button",style:{...pn,opacity:/^[0-9A-Fa-f]{6}$/.test(C)?1:.4,cursor:/^[0-9A-Fa-f]{6}$/.test(C)?"pointer":"default"},onClick:Q,onMouseDown:T=>T.preventDefault(),disabled:!/^[0-9A-Fa-f]{6}$/.test(C),children:F("common.apply")})]})]})})]})}function re({content:e,children:t,side:o="bottom",delayMs:r=400}){let[n,l]=J.useState(false),[i,c]=J.useState({x:0,y:0}),u=J.useRef(null),a=J.useRef(null),p=J.useCallback(()=>{a.current=setTimeout(()=>{if(u.current){let m=u.current.getBoundingClientRect(),s=m.left+m.width/2,g=o==="top"?m.top-8:m.bottom+8;c({x:s,y:g});}l(true);},r);},[r,o]),b=J.useCallback(()=>{a.current&&(clearTimeout(a.current),a.current=null),l(false);},[]);J.useEffect(()=>()=>{a.current&&clearTimeout(a.current);},[]);let d=t.props,f=J.cloneElement(t,{ref:u,onMouseEnter:m=>{p(),d.onMouseEnter?.(m);},onMouseLeave:m=>{b(),d.onMouseLeave?.(m);}});return jsxs(Fragment,{children:[f,n&&jsx("div",{className:"fixed z-50 px-2 py-1 text-xs font-medium text-white bg-foreground dark:bg-muted dark:text-foreground rounded-md shadow-lg",style:{left:i.x,top:i.y,transform:o==="top"?"translate(-50%, -100%)":o==="bottom"?"translate(-50%, 0)":void 0},children:e})]})}var et=20,Nt=[{value:"left",label:"Align Left",labelKey:"alignment.alignLeft",shortcutKey:"alignment.alignLeftShortcut",icon:jsx(b,{name:"format_align_left",size:et}),iconName:"format_align_left",shortcut:"Ctrl+L"},{value:"center",label:"Center",labelKey:"alignment.center",shortcutKey:"alignment.centerShortcut",icon:jsx(b,{name:"format_align_center",size:et}),iconName:"format_align_center",shortcut:"Ctrl+E"},{value:"right",label:"Align Right",labelKey:"alignment.alignRight",shortcutKey:"alignment.alignRightShortcut",icon:jsx(b,{name:"format_align_right",size:et}),iconName:"format_align_right",shortcut:"Ctrl+R"},{value:"both",label:"Justify",labelKey:"alignment.justify",shortcutKey:"alignment.justifyShortcut",icon:jsx(b,{name:"format_align_justify",size:et}),iconName:"format_align_justify",shortcut:"Ctrl+J"}];function vo({value:e="left",onChange:t,disabled:o=false}){let{t:r}=b$1(),[n,l]=useState(false),i=useCallback(()=>l(false),[]),{containerRef:c$1,dropdownRef:u,dropdownStyle:a,handleMouseDown:p}=c({isOpen:n,onClose:i}),b$2=useCallback(h=>{o||t?.(h),l(false);},[o,t]),d=Nt.find(h=>h.value===e)||Nt[0],f=r(d.labelKey),m=d.shortcutKey?r(d.shortcutKey):void 0,s=`${f}${m?` (${m})`:""}`,g=jsxs(K,{variant:"ghost",size:"icon-sm",className:M("text-muted-foreground hover:text-foreground hover:bg-muted/80",n&&"bg-muted",o&&"opacity-30 cursor-not-allowed"),onMouseDown:p,onClick:()=>!o&&l(h=>!h),disabled:o,"aria-label":s,"aria-expanded":n,"aria-haspopup":"true","data-testid":"toolbar-alignment",children:[jsx(b,{name:d.iconName,size:et}),jsx(b,{name:"arrow_drop_down",size:14,className:"-ml-1"})]});return jsxs("div",{ref:c$1,style:{position:"relative",display:"inline-block"},children:[n?g:jsx(re,{content:s,children:g}),n&&!o&&jsx("div",{ref:u,style:{...a,backgroundColor:"var(--doc-surface)",border:"1px solid var(--doc-border)",borderRadius:8,boxShadow:"0 4px 16px var(--doc-shadow)",padding:6},onMouseDown:h=>h.stopPropagation(),children:jsx("div",{style:{display:"flex",gap:2},children:Nt.map(h=>{let x=e===h.value,y=r(h.labelKey),C=h.shortcutKey?r(h.shortcutKey):void 0;return jsx("button",{type:"button",title:`${y}${C?` (${C})`:""}`,"data-testid":`alignment-${h.value}`,style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:32,border:"1px solid transparent",borderRadius:4,backgroundColor:x?"var(--doc-primary-light)":"transparent",cursor:"pointer",color:x?"var(--doc-primary)":"var(--doc-text)"},onMouseDown:L=>L.preventDefault(),onMouseEnter:L=>{x||(L.currentTarget.style.backgroundColor="var(--doc-bg-hover)");},onMouseLeave:L=>{L.currentTarget.style.backgroundColor=x?"var(--doc-primary-light)":"transparent";},onClick:()=>b$2(h.value),children:jsx(b,{name:h.iconName,size:18})},h.value)})})})]})}var Sn=[{label:"Single",labelKey:"lineSpacing.single",value:1,twipsValue:240},{label:"1.15",value:1.15,twipsValue:276},{label:"1.5",value:1.5,twipsValue:360},{label:"Double",labelKey:"lineSpacing.double",value:2,twipsValue:480}];function Co({value:e,onChange:t,options:o=Sn,disabled:r=false,className:n}){let{t:l}=b$1(),i=J.useMemo(()=>e===void 0?o[0]:o.find(a=>a.twipsValue===e)||o[0],[e,o]),c=J.useCallback(a=>{let p=parseInt(a,10);isNaN(p)||t?.(p);},[t]),u=a=>a.labelKey?l(a.labelKey):a.label;return jsxs(Te,{value:i.twipsValue.toString(),onValueChange:c,disabled:r,children:[jsx(Pe,{className:M("h-8 text-sm gap-0.5 px-2",n),style:{width:"auto"},title:l("lineSpacing.lineSpacingTitle",{label:u(i)}),children:jsx(a,{className:"h-5 w-5 shrink-0"})}),jsxs(Me,{children:[o.map(a=>jsx(oe,{value:a.twipsValue.toString(),children:u(a)},a.twipsValue)),jsx(Fe,{}),jsx(ke,{children:jsx(_e,{children:l("lineSpacing.paragraphSpacing")})})]})]})}var wo=[{styleId:"Normal",name:"Normal text",nameKey:"styles.normalText",type:"paragraph",isDefault:true,priority:0,qFormat:true,fontSize:22},{styleId:"Title",name:"Title",nameKey:"styles.title",type:"paragraph",priority:1,qFormat:true,fontSize:52,bold:true},{styleId:"Subtitle",name:"Subtitle",nameKey:"styles.subtitle",type:"paragraph",priority:2,qFormat:true,fontSize:30,color:"666666"},{styleId:"Heading1",name:"Heading 1",nameKey:"styles.heading1",type:"paragraph",priority:3,qFormat:true,fontSize:40,bold:true},{styleId:"Heading2",name:"Heading 2",nameKey:"styles.heading2",type:"paragraph",priority:4,qFormat:true,fontSize:32,bold:true},{styleId:"Heading3",name:"Heading 3",nameKey:"styles.heading3",type:"paragraph",priority:5,qFormat:true,fontSize:28,bold:true}];function So({value:e,onChange:t,styles:o,disabled:r=false,className:n,width:l=120}){let{t:i}=b$1(),c=J.useMemo(()=>{let f=resolveParagraphStyleOptions(o);return f.length===0?wo:f.map(m=>({...m,type:"paragraph",nameKey:wo.find(s=>s.styleId===m.styleId)?.nameKey}))},[o]),u=J.useCallback(f=>{t?.(f);},[t]),a=f=>f.nameKey?i(f.nameKey):f.name,p=e||"Normal",b=c.find(f=>f.styleId===p),d=b?a(b):p;return jsxs(Te,{value:p,onValueChange:u,disabled:r,children:[jsx(Pe,{className:M("h-8 text-sm",n),style:{width:typeof l=="number"?`${l}px`:l},"aria-label":i("styles.selectAriaLabel"),children:jsx("span",{className:"truncate",children:d})}),jsx(Me,{className:"min-w-[260px] max-h-[400px]",children:c.map(f=>jsx(oe,{value:f.styleId,className:"py-2.5 px-3",children:jsx("span",{style:getStylePreviewProps(f),children:a(f)})},f.styleId))})]})}var Mn=[{value:.5,label:"50%"},{value:.75,label:"75%"},{value:1,label:"100%"},{value:1.25,label:"125%"},{value:1.5,label:"150%"},{value:2,label:"200%"}];function ko({value:e=1,onChange:t,levels:o=Mn,disabled:r=false,className:n,compact:l=false}){let{t:i}=b$1(),c=J.useMemo(()=>{let f=o.find(m=>Math.abs(m.value-e)<.001);return f?f.label:`${Math.round(e*100)}%`},[o,e]),u=J.useCallback(f=>{let m=parseFloat(f);isNaN(m)||t?.(m);},[t]),a=J.useMemo(()=>[...o].sort((f,m)=>f.value-m.value),[o]),p=J.useMemo(()=>[...a].reverse().find(f=>f.value<e-.001),[a,e]),b$2=J.useMemo(()=>a.find(f=>f.value>e+.001),[a,e]),d=l?"h-7 w-7":"h-8 w-8";return jsxs("div",{className:"flex items-center",children:[jsx(K,{variant:"ghost",size:"icon-sm",className:M(d,"text-muted-foreground hover:text-foreground hover:bg-muted/80 rounded-r-none",(r||!p)&&"opacity-30 cursor-not-allowed"),onClick:()=>p&&t?.(p.value),disabled:r||!p,"aria-label":i("zoom.zoomOut"),children:jsx(b,{name:"remove",size:18})}),jsxs(Te,{value:e.toString(),onValueChange:u,disabled:r,children:[jsx(Pe,{className:M(l?"h-7 min-w-[55px] text-xs":"h-8 min-w-[64px] text-sm","rounded-none",n),"aria-label":i("zoom.ariaLabel",{label:c}),children:jsx(ft,{placeholder:"100%",children:c})}),jsx(Me,{children:o.map(f=>jsx(oe,{value:f.value.toString(),children:f.label},f.value))})]}),jsx(K,{variant:"ghost",size:"icon-sm",className:M(d,"text-muted-foreground hover:text-foreground hover:bg-muted/80 rounded-l-none",(r||!b$2)&&"opacity-30 cursor-not-allowed"),onClick:()=>b$2&&t?.(b$2.value),disabled:r||!b$2,"aria-label":i("zoom.zoomIn"),children:jsx(b,{name:"add",size:18})})]})}var Ln=[{action:"borderAll",icon:"border_all",labelKey:"table.borders.all"},{action:"borderOutside",icon:"border_outer",labelKey:"table.borders.outside"},{action:"borderInside",icon:"border_inner",labelKey:"table.borders.inside"},{action:"borderTop",icon:"border_top",labelKey:"table.borders.top"},{action:"borderBottom",icon:"border_bottom",labelKey:"table.borders.bottom"},{action:"borderLeft",icon:"border_left",labelKey:"table.borders.left"},{action:"borderRight",icon:"border_right",labelKey:"table.borders.right"},{action:"borderNone",icon:"border_clear",labelKey:"table.borders.none"}];function Io({onAction:e,disabled:t=false}){let{t:o}=b$1(),[r,n]=useState(false),l=useCallback(()=>n(false),[]),{containerRef:i,dropdownRef:c$1,dropdownStyle:u,handleMouseDown:a}=c({isOpen:r,onClose:l}),p=useCallback(d=>{e(d),n(false);},[e]),b$2=jsxs(K,{variant:"ghost",size:"icon-sm",className:M("text-muted-foreground hover:text-foreground hover:bg-muted/80",r&&"bg-muted",t&&"opacity-30 cursor-not-allowed"),onMouseDown:a,onClick:()=>!t&&n(d=>!d),disabled:t,"aria-label":o("table.borders.styleAriaLabel"),"aria-expanded":r,"aria-haspopup":"true","data-testid":"toolbar-table-borders",children:[jsx(b,{name:"border_all",size:20}),jsx(b,{name:"arrow_drop_down",size:14,className:"-ml-1"})]});return jsxs("div",{ref:i,style:{position:"relative",display:"inline-block"},children:[r?b$2:jsx(re,{content:o("table.borders.tooltip"),children:b$2}),r&&!t&&jsx("div",{ref:c$1,style:{...u,backgroundColor:"var(--doc-surface)",border:"1px solid var(--doc-border)",borderRadius:8,boxShadow:"0 4px 16px var(--doc-shadow)",padding:6},onMouseDown:d=>d.stopPropagation(),children:jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gap:2},children:Ln.map(({action:d,icon:f,labelKey:m})=>jsx("button",{type:"button",title:o(m),style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:32,border:"1px solid transparent",borderRadius:4,backgroundColor:"transparent",cursor:"pointer",color:"var(--doc-text)"},onMouseDown:s=>s.preventDefault(),onMouseEnter:s=>{s.currentTarget.style.backgroundColor="var(--doc-bg-hover)";},onMouseLeave:s=>{s.currentTarget.style.backgroundColor="transparent";},onClick:()=>p(d),children:jsx(b,{name:f,size:18})},typeof d=="string"?d:d.type))})})]})}function Lo({onAction:e,disabled:t=false,theme:o,value:r}){let{t:n}=b$1(),l=useCallback(i=>{typeof i=="string"?e({type:"borderColor",color:i.replace(/^#/,"")}):i.rgb?e({type:"borderColor",color:i.rgb.replace(/^#/,"")}):i.auto&&e({type:"borderColor",color:"000000"});},[e]);return jsx(Ke,{mode:"border",value:r,onChange:l,theme:o,disabled:t,title:n("table.borderColor")})}var Nn=[{size:4,label:"0.5 pt",thickness:.5},{size:8,label:"1 pt",thickness:1},{size:12,label:"1.5 pt",thickness:1.5},{size:16,label:"2 pt",thickness:2},{size:24,label:"3 pt",thickness:3}];function Eo({onAction:e,disabled:t=false}){let[o,r]=useState(false),{t:n}=b$1(),l=useCallback(()=>r(false),[]),{containerRef:i,dropdownRef:c$1,dropdownStyle:u,handleMouseDown:a}=c({isOpen:o,onClose:l}),p=useCallback(d=>{e({type:"borderWidth",size:d}),r(false);},[e]),b$2=jsxs(K,{variant:"ghost",size:"icon-sm",className:M("text-muted-foreground hover:text-foreground hover:bg-muted/80",o&&"bg-muted",t&&"opacity-30 cursor-not-allowed"),onMouseDown:a,onClick:()=>!t&&r(d=>!d),disabled:t,"aria-label":n("table.borderWidth"),"aria-expanded":o,"aria-haspopup":"true","data-testid":"toolbar-table-border-width",children:[jsx(b,{name:"line_weight",size:20}),jsx(b,{name:"arrow_drop_down",size:14,className:"-ml-1"})]});return jsxs("div",{ref:i,style:{position:"relative",display:"inline-block"},children:[o?b$2:jsx(re,{content:n("table.borderWidth"),children:b$2}),o&&!t&&jsx("div",{ref:c$1,style:{...u,backgroundColor:"var(--doc-surface)",border:"1px solid var(--doc-border)",borderRadius:8,boxShadow:"0 4px 16px var(--doc-shadow)",padding:"4px 0",minWidth:120},onMouseDown:d=>d.stopPropagation(),children:Nn.map(({size:d,label:f,thickness:m})=>jsxs("button",{type:"button",style:{display:"flex",alignItems:"center",gap:10,padding:"6px 12px",width:"100%",border:"none",backgroundColor:"transparent",cursor:"pointer",fontSize:12,color:"var(--doc-text)"},onMouseDown:s=>s.preventDefault(),onMouseEnter:s=>{s.currentTarget.style.backgroundColor="var(--doc-bg-hover)";},onMouseLeave:s=>{s.currentTarget.style.backgroundColor="transparent";},onClick:()=>p(d),children:[jsx("div",{style:{width:50,height:Math.max(m,1),backgroundColor:"#000",borderRadius:m>2?1:0}}),jsx("span",{children:f})]},d))})]})}function Ao({onAction:e,disabled:t=false,theme:o,value:r}){let{t:n}=b$1(),l=useCallback(i=>{typeof i=="string"&&e(i==="none"?{type:"cellFillColor",color:null}:{type:"cellFillColor",color:i.replace(/^#/,"")});},[e]);return jsx(Ke,{mode:"highlight",value:r,onChange:l,theme:o,disabled:t,title:n("table.cellFillColor"),icon:"format_color_fill",autoLabel:n("colorPicker.noColor")})}var _n={display:"flex",alignItems:"center",gap:10,padding:"7px 14px",fontSize:13,color:"var(--doc-text)",cursor:"pointer",border:"none",backgroundColor:"transparent",width:"100%",textAlign:"left"},Ve={height:1,backgroundColor:"var(--doc-border)",margin:"4px 0"},Bo={padding:"6px 14px 2px",fontSize:11,color:"var(--doc-text-muted)",fontWeight:500};function _o({onAction:e,disabled:t=false,tableContext:o}){let{t:r}=b$1(),[n,l]=useState(false),[i,c$1]=useState(null),u=useCallback(()=>l(false),[]),{containerRef:a,dropdownRef:p,dropdownStyle:b$2,handleMouseDown:d}=c({isOpen:n,onClose:u,align:"right"}),f=o?.table?.attrs?.justification??"left",m=useCallback(h=>{e(h),l(false);},[e]),s=(h,x,y,C,L)=>{let P=t||L?.itemDisabled;return jsxs("button",{type:"button",role:"menuitem",style:{..._n,backgroundColor:i===h&&!P?"var(--doc-bg-hover)":"transparent",color:P?"var(--doc-text-muted)":L?.danger?"var(--doc-error)":"var(--doc-text)",cursor:P?"not-allowed":"pointer"},onClick:()=>!P&&m(C),onMouseEnter:()=>c$1(h),onMouseLeave:()=>c$1(null),disabled:P,children:[jsx(b,{name:x,size:16,className:L?.danger&&!P?"text-destructive":""}),jsx("span",{style:{flex:1},children:y})]},h)},g=jsx(K,{variant:"ghost",size:"icon-sm",className:M("text-muted-foreground hover:text-foreground hover:bg-muted/80",n&&"bg-muted",t&&"opacity-30 cursor-not-allowed"),onMouseDown:d,onClick:()=>!t&&l(h=>!h),disabled:t,"aria-label":r("table.moreOptions"),"aria-expanded":n,"aria-haspopup":"menu","data-testid":"toolbar-table-more",children:jsx(b,{name:"more_vert",size:20})});return jsxs("div",{ref:a,style:{position:"relative",display:"inline-block"},children:[n?g:jsx(re,{content:r("table.moreOptions"),children:g}),n&&!t&&jsxs("div",{ref:p,style:{...b$2,backgroundColor:"var(--doc-surface)",border:"1px solid var(--doc-border)",borderRadius:8,boxShadow:"0 4px 16px var(--doc-shadow)",padding:"4px 0",minWidth:200,maxHeight:"70vh",overflowY:"auto"},role:"menu",onMouseDown:h=>h.stopPropagation(),children:[s("addRowAbove","add",r("table.insertRowAbove"),"addRowAbove"),s("addRowBelow","add",r("table.insertRowBelow"),"addRowBelow"),s("addColumnLeft","add",r("table.insertColumnLeft"),"addColumnLeft"),s("addColumnRight","add",r("table.insertColumnRight"),"addColumnRight"),jsx("div",{style:Ve,role:"separator"}),s("mergeCells","call_merge",r("table.mergeCells"),"mergeCells",{itemDisabled:!o?.hasMultiCellSelection}),s("splitCell","call_split",r("table.splitCell"),"splitCell",{itemDisabled:!o?.canSplitCell}),jsx("div",{style:Ve,role:"separator"}),s("selectTable","select_all",r("table.selectTable"),"selectTable"),jsx("div",{style:Ve,role:"separator"}),s("deleteRow","delete",r("table.deleteRow"),"deleteRow",{danger:true,itemDisabled:(o?.rowCount??0)<=1}),s("deleteColumn","delete",r("table.deleteColumn"),"deleteColumn",{danger:true,itemDisabled:(o?.columnCount??0)<=1}),s("deleteTable","delete",r("table.deleteTable"),"deleteTable",{danger:true}),jsx("div",{style:Ve,role:"separator"}),jsx("div",{style:Bo,children:r("tableAdvanced.verticalAlignment")}),jsx("div",{style:{display:"flex",gap:4,padding:"4px 14px"},children:["top","center","bottom"].map(h=>{let x={top:"vertical_align_top",center:"vertical_align_center",bottom:"vertical_align_bottom"};return jsx("button",{type:"button",title:r({top:"tableAdvanced.top",center:"tableAdvanced.middle",bottom:"tableAdvanced.bottom"}[h]),style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:28,border:"1px solid var(--doc-border)",borderRadius:4,backgroundColor:"transparent",cursor:"pointer"},onMouseDown:C=>C.preventDefault(),onMouseEnter:C=>{C.currentTarget.style.backgroundColor="var(--doc-bg-hover)";},onMouseLeave:C=>{C.currentTarget.style.backgroundColor="transparent";},onClick:()=>m({type:"cellVerticalAlign",align:h}),children:jsx(b,{name:x[h],size:16})},h)})}),jsx("div",{style:Ve,role:"separator"}),jsx("div",{style:Bo,children:r("tableAdvanced.tableAlignment")}),jsx("div",{style:{display:"flex",gap:4,padding:"4px 14px"},children:["left","center","right"].map(h=>{let x={left:"format_align_left",center:"format_align_center",right:"format_align_right"},y=f===h;return jsx("button",{type:"button",title:r({left:"tableAdvanced.alignTableLeft",center:"tableAdvanced.alignTableCenter",right:"tableAdvanced.alignTableRight"}[h]),style:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:28,border:"1px solid var(--doc-border)",borderRadius:4,backgroundColor:y?"var(--doc-primary-light)":"transparent",borderColor:y?"var(--doc-primary)":"var(--doc-border)",color:y?"var(--doc-primary)":"var(--doc-text)",cursor:"pointer"},onMouseDown:C=>C.preventDefault(),onClick:()=>m({type:"tableProperties",props:{justification:h}}),children:jsx(b,{name:x[h],size:16})},h)})}),jsx("div",{style:Ve,role:"separator"}),s("headerRow","table_rows",r("tableAdvanced.toggleHeaderRow"),{type:"toggleHeaderRow"}),s("distribute","view_column",r("tableAdvanced.distributeColumns"),{type:"distributeColumns"}),s("autoFit","fit_width",r("tableAdvanced.autoFit"),{type:"autoFitContents"}),s("noWrap","wrap_text",r("tableAdvanced.toggleNoWrap"),{type:"toggleNoWrap"}),jsx("div",{style:Ve,role:"separator"}),s("properties","settings",r("tableAdvanced.tableProperties"),{type:"openTableProperties"})]})]})}var On=20;function yt({options:e,activeValue:t,triggerIcon:o,tooltipContent:r,onSelect:n,disabled:l=false,ariaLabel:i,testId:c$1,showLabels:u=false}){let[a,p]=useState(false),b$1=useCallback(()=>p(false),[]),{containerRef:d,dropdownRef:f,dropdownStyle:m,handleMouseDown:s}=c({isOpen:a,onClose:b$1}),g=useCallback(x=>{l||n(x),p(false);},[l,n]),h=jsxs(K,{variant:"ghost",size:"icon-sm",className:M("text-muted-foreground hover:text-foreground hover:bg-muted/80",a&&"bg-muted",l&&"opacity-30 cursor-not-allowed"),onMouseDown:s,onClick:()=>!l&&p(x=>!x),disabled:l,"aria-label":i??r,"aria-expanded":a,"aria-haspopup":"true","data-testid":c$1,children:[jsx(b,{name:o,size:On}),jsx(b,{name:"arrow_drop_down",size:14,className:"-ml-1"})]});return jsxs("div",{ref:d,style:{position:"relative",display:"inline-block"},children:[a?h:jsx(re,{content:r,children:h}),a&&!l&&jsx("div",{ref:f,style:{...m,backgroundColor:"var(--doc-surface)",border:"1px solid var(--doc-border)",borderRadius:8,boxShadow:"0 4px 16px var(--doc-shadow)",padding:6},onMouseDown:x=>x.stopPropagation(),children:jsx("div",{style:{display:"flex",flexDirection:u?"column":"row",gap:u?1:2,minWidth:u?200:void 0},children:e.map(x=>{let y=t===x.value;return jsxs("button",{type:"button",title:x.label,"data-testid":c$1?`${c$1}-${x.value}`:void 0,style:{display:"flex",alignItems:"center",height:32,border:"1px solid transparent",borderRadius:4,backgroundColor:y?"var(--doc-primary-light)":"transparent",cursor:"pointer",color:y?"var(--doc-primary)":"var(--doc-text)",...u?{width:"100%",gap:10,padding:"0 10px",justifyContent:"flex-start",fontSize:13,textAlign:"left"}:{width:32,justifyContent:"center"}},onMouseDown:C=>C.preventDefault(),onMouseEnter:C=>{y||(C.currentTarget.style.backgroundColor="var(--doc-bg-hover)");},onMouseLeave:C=>{C.currentTarget.style.backgroundColor=y?"var(--doc-primary-light)":"transparent";},onClick:()=>g(x.value),children:[jsx(b,{name:x.iconName,size:18}),u&&jsx("span",{style:{flex:1},children:x.label})]},x.value)})})})]})}var zn=[{value:"inline",labelKey:"imageWrap.inline",iconName:"wrap_text"},{value:"wrapRight",labelKey:"imageWrap.floatLeft",iconName:"format_image_left"},{value:"wrapLeft",labelKey:"imageWrap.floatRight",iconName:"format_image_right"},{value:"behind",labelKey:"imageWrap.behindText",iconName:"flip_to_back"},{value:"inFront",labelKey:"imageWrap.inFrontOfText",iconName:"flip_to_front"}];function Kn(e){return e.displayMode==="float"&&e.cssFloat==="left"?"wrapRight":e.displayMode==="float"&&e.cssFloat==="right"?"wrapLeft":e.wrapType}function zo({imageContext:e,onChange:t,disabled:o=false}){let{t:r}=b$1(),n=zn.map(c=>({...c,label:r(c.labelKey)})),l=Kn(e),i=n.find(c=>c.value===l)||n[0];return jsx(yt,{options:n,activeValue:l,triggerIcon:i.iconName,tooltipContent:`Wrap: ${i.label}`,onSelect:t,disabled:o,testId:"toolbar-image-wrap",showLabels:true})}var Wn=[{value:"rotateCW",labelKey:"imageTransform.rotateClockwise",iconName:"rotate_right"},{value:"rotateCCW",labelKey:"imageTransform.rotateCounterClockwise",iconName:"rotate_left"},{value:"flipH",labelKey:"imageTransform.flipHorizontal",iconName:"swap_horiz"},{value:"flipV",labelKey:"imageTransform.flipVertical",iconName:"swap_vert"}];function Ko({onTransform:e,disabled:t=false}){let{t:o}=b$1(),r=Wn.map(n=>({...n,label:o(n.labelKey)}));return jsx(yt,{options:r,triggerIcon:"rotate_right",tooltipContent:o("imageTransform.tooltip"),onSelect:e,disabled:t,testId:"toolbar-image-transform"})}var ot=createContext(null);function Ho(){let e=useContext(ot);if(!e)throw new Error("useEditorToolbar must be used within an <EditorToolbar> component");return e}var se=18;function ce({active:e=false,disabled:t=false,title:o,onClick:r,children:n,className:l,ariaLabel:i}){let c=i?.toLowerCase().replace(/\s+/g,"-")||o?.toLowerCase().replace(/\s+/g,"-").replace(/\([^()]*\)/g,"").trim(),u=p=>{p.preventDefault();},a=jsx(K,{variant:"ghost",size:"icon-sm",className:M("ep-toolbar-toggle text-muted-foreground",t&&"opacity-30 cursor-not-allowed",l),"data-active":e?"true":void 0,onMouseDown:u,onClick:t?void 0:r,disabled:t,"aria-pressed":e,"aria-label":i||o,"data-testid":c?`toolbar-${c}`:void 0,children:n});return o?jsx(re,{content:o,children:a}):a}function fe({label:e,children:t,className:o}){return jsx("div",{className:M("flex items-center gap-px px-1.5 border-r border-border/50 last:border-r-0 first:pl-0",o),role:"group","aria-label":e,children:t})}function Qs(){return jsx("div",{className:"w-px h-6 bg-border mx-1.5",role:"separator"})}function Yn(e){let t=J__default.useContext(ot);return t?{...t,...Xn(e)}:e}function Xn(e){let t={};for(let o of Object.keys(e))e[o]!==void 0&&(t[o]=e[o]);return t}function Vo(e){let{t}=b$1(),o=Yn(e),{currentFormatting:r={},onFormat:n,onUndo:l,onRedo:i,canUndo:c=false,canRedo:u=false,disabled:a=false,className:p,style:b$2,enableShortcuts:d=true,editorRef:f,children:m,showFontPicker:s=true,fontFamilies:g,documentFonts:h,showFontSizePicker:x=true,showTextColorPicker:y=true,showHighlightColorPicker:C=true,showAlignmentButtons:L=true,showListButtons:P=true,showLineSpacingPicker:U=true,showStylePicker:F=true,documentStyles:we,theme:Z,showZoomControl:ge=true,zoom:q,onZoomChange:j,onRefocusEditor:S,imageContext:D,onImageWrapType:de,onImageTransform:he,onOpenImageProperties:Ne,tableContext:xe,onTableAction:Se,inline:Q=false}=o,Ue=useRef(null),z=useCallback(R=>{!a&&n&&n(R);},[a,n]),ae=useCallback(()=>{!a&&c&&l&&l();},[a,c,l]),Ze=useCallback(()=>{!a&&u&&i&&i();},[a,u,i]),T=useCallback(R=>{!a&&n&&(n({type:"fontFamily",value:R}),requestAnimationFrame(()=>S?.()));},[a,n,S]),V=J__default.useMemo(()=>normalizeFontFamilies(g),[g]),ve=useCallback(R=>{!a&&n&&(n({type:"fontSize",value:R}),requestAnimationFrame(()=>S?.()));},[a,n,S]),Pt=useCallback(R=>{!a&&n&&(n({type:"textColor",value:R}),requestAnimationFrame(()=>S?.()));},[a,n,S]),B=useCallback(R=>{!a&&n&&(n({type:"highlightColor",value:typeof R=="string"?R:""}),requestAnimationFrame(()=>S?.()));},[a,n,S]),ee=useCallback(R=>{!a&&n&&n({type:"alignment",value:R});},[a,n]),at=useCallback(()=>{!a&&n&&n("bulletList");},[a,n]),De=useCallback(()=>{!a&&n&&n("numberedList");},[a,n]),ue=useCallback(()=>{!a&&n&&n("indent");},[a,n]),te=useCallback(()=>{!a&&n&&n("outdent");},[a,n]),ie=useCallback(R=>{!a&&n&&(n({type:"lineSpacing",value:R}),requestAnimationFrame(()=>S?.()));},[a,n,S]),Be=useCallback(R=>{!a&&n&&(n({type:"applyStyle",value:R}),requestAnimationFrame(()=>S?.()));},[a,n,S]),Je=useCallback(R=>{!a&&Se&&(Se(R),requestAnimationFrame(()=>S?.()));},[a,Se,S]);useEffect(()=>{if(!d)return;let R=N=>{let Qe=N.target,qt=f?.current,ir=Ue.current,lr=qt?.contains(Qe),sr=ir?.contains(Qe);if(!lr&&!sr)return;if((N.ctrlKey||N.metaKey)&&!N.altKey)switch(N.key.toLowerCase()){case "b":N.preventDefault(),z("bold");break;case "i":N.preventDefault(),z("italic");break;case "u":N.preventDefault(),z("underline");break;case "=":N.shiftKey?(N.preventDefault(),z("superscript")):(N.preventDefault(),z("subscript"));break;case "l":N.preventDefault(),ee("left");break;case "e":N.preventDefault(),ee("center");break;case "r":N.preventDefault(),ee("right");break;case "j":N.preventDefault(),ee("both");break;case "k":N.preventDefault(),z("insertLink");break}};return document.addEventListener("keydown",R),()=>{document.removeEventListener("keydown",R);}},[d,z,ee,f]);let nr=useCallback(R=>{let N=R.target;N.tagName==="INPUT"||N.tagName==="TEXTAREA"||N.tagName==="SELECT"||N.tagName==="OPTION"||R.preventDefault();},[]),ar=useCallback(R=>{let N=R.target,Qe=document.activeElement;N.tagName==="SELECT"||N.tagName==="OPTION"||Qe?.tagName==="SELECT"||requestAnimationFrame(()=>{S?.();});},[S]);return jsxs("div",{ref:Ue,className:M(!Q&&"flex items-center px-2 py-1 bg-muted rounded-full min-h-[36px] overflow-x-auto mx-2 mb-1",p),style:Q?{display:"contents",...b$2}:b$2,role:Q?void 0:"toolbar","aria-label":Q?void 0:t("toolbar.ariaLabel"),"data-testid":Q?void 0:"formatting-bar",onMouseDown:Q?void 0:nr,onMouseUp:Q?void 0:ar,children:[jsxs(fe,{label:t("formattingBar.groups.history"),children:[jsx(ce,{onClick:ae,disabled:a||!c,title:t("formattingBar.undoShortcut"),ariaLabel:t("formattingBar.undo"),children:jsx(b,{name:"undo",size:se})}),jsx(ce,{onClick:Ze,disabled:a||!u,title:t("formattingBar.redoShortcut"),ariaLabel:t("formattingBar.redo"),children:jsx(b,{name:"redo",size:se})})]}),ge&&jsx(fe,{label:t("formattingBar.groups.zoom"),children:jsx(ko,{value:q,onChange:j,disabled:a,compact:true})}),F&&jsx(fe,{label:t("formattingBar.groups.styles"),children:jsx(So,{value:r.styleId||"Normal",onChange:Be,styles:we,theme:Z,disabled:a,width:120})}),(s||x)&&jsxs(fe,{label:t("formattingBar.groups.font"),children:[s&&jsx(co,{value:r.fontFamily||"Arial",onChange:T,fonts:V,documentFonts:h,disabled:a,width:60,placeholder:"Arial"}),x&&jsx(oo,{value:r.fontSize!==void 0?halfPointsToPoints(r.fontSize):11,onChange:ve,disabled:a,width:42,placeholder:"11"})]}),jsxs(fe,{label:t("formattingBar.groups.textFormatting"),children:[jsx(ce,{onClick:()=>z("bold"),active:r.bold,disabled:a,title:t("formattingBar.boldShortcut"),ariaLabel:t("formattingBar.bold"),children:jsx(b,{name:"format_bold",size:se})}),jsx(ce,{onClick:()=>z("italic"),active:r.italic,disabled:a,title:t("formattingBar.italicShortcut"),ariaLabel:t("formattingBar.italic"),children:jsx(b,{name:"format_italic",size:se})}),jsx(ce,{onClick:()=>z("underline"),active:r.underline,disabled:a,title:t("formattingBar.underlineShortcut"),ariaLabel:t("formattingBar.underline"),children:jsx(b,{name:"format_underlined",size:se})}),jsx(ce,{onClick:()=>z("strikethrough"),active:r.strike,disabled:a,title:t("formattingBar.strikethrough"),ariaLabel:t("formattingBar.strikethrough"),children:jsx(b,{name:"strikethrough_s",size:se})}),y&&jsx(Ke,{mode:"text",value:r.color?.replace(/^#/,""),onChange:Pt,theme:Z,disabled:a,title:t("formattingBar.fontColor")}),C&&jsx(Ke,{mode:"highlight",value:r.highlight,onChange:B,theme:Z,disabled:a,title:t("formattingBar.highlightColor")}),jsx(ce,{onClick:()=>z("insertLink"),disabled:a,title:t("formattingBar.insertLinkShortcut"),ariaLabel:t("formattingBar.insertLink"),children:jsx(b,{name:"link",size:se})})]}),jsxs(fe,{label:t("formattingBar.groups.script"),children:[jsx(ce,{onClick:()=>z("superscript"),active:r.superscript,disabled:a,title:t("formattingBar.superscriptShortcut"),ariaLabel:t("formattingBar.superscript"),children:jsx(b,{name:"superscript",size:se})}),jsx(ce,{onClick:()=>z("subscript"),active:r.subscript,disabled:a,title:t("formattingBar.subscriptShortcut"),ariaLabel:t("formattingBar.subscript"),children:jsx(b,{name:"subscript",size:se})})]}),L&&jsx(fe,{label:t("formattingBar.groups.alignment"),children:jsx(vo,{value:r.alignment||"left",onChange:ee,disabled:a})}),(P||U)&&jsxs(fe,{label:t("formattingBar.groups.listFormatting"),children:[P&&jsx(ao,{listState:r.listState||createDefaultListState(),onBulletList:at,onNumberedList:De,onIndent:ue,onOutdent:te,disabled:a,showIndentButtons:true,compact:true,hasIndent:(r.indentLeft??0)>0}),U&&jsx(Co,{value:r.lineSpacing,onChange:ie,disabled:a})]}),D&&de&&jsxs(fe,{label:t("formattingBar.groups.image"),children:[jsx(zo,{imageContext:D,onChange:de,disabled:a}),he&&jsx(Ko,{onTransform:he,disabled:a}),Ne&&jsx(ce,{onClick:Ne,disabled:a,title:t("formattingBar.imagePropertiesShortcut"),ariaLabel:t("formattingBar.imageProperties"),children:jsx(b,{name:"tune",size:se})})]}),xe?.isInTable&&Se&&jsxs(fe,{label:t("formattingBar.groups.table"),children:[jsx(Io,{onAction:Je,disabled:a}),jsx(Lo,{onAction:Je,disabled:a,theme:Z,value:resolveColorToHex(xe?.cellBorderColor,Z)}),jsx(Eo,{onAction:Je,disabled:a}),jsx(Ao,{onAction:Je,disabled:a,theme:Z,value:xe?.cellBackgroundColor}),jsx(_o,{onAction:Je,disabled:a,tableContext:xe})]}),jsx(ce,{onClick:()=>z("clearFormatting"),disabled:a,title:t("formattingBar.clearFormatting"),ariaLabel:t("formattingBar.clearFormatting"),children:jsx(b,{name:"format_clear",size:se})}),m]})}function Jn(e){return "type"in e&&e.type==="separator"}var Uo={display:"flex",alignItems:"center",gap:2,padding:"2px 8px",border:"none",background:"transparent",borderRadius:4,cursor:"pointer",fontSize:13,fontWeight:400,color:"var(--doc-text)",whiteSpace:"nowrap",height:28,lineHeight:"28px"},Qn={...Uo,background:"var(--doc-bg-hover)"},Zo={display:"flex",alignItems:"center",gap:8,padding:"6px 12px",border:"none",background:"transparent",cursor:"pointer",fontSize:13,color:"var(--doc-text)",width:"100%",textAlign:"left",whiteSpace:"nowrap"},ea={...Zo,opacity:.4,cursor:"default"},ta={height:1,backgroundColor:"var(--doc-border)",margin:"4px 0"},oa={marginLeft:"auto",fontSize:12,color:"var(--doc-text-muted)"},ra={position:"absolute",left:"100%",top:-4,marginLeft:2,backgroundColor:"var(--doc-surface)",border:"1px solid var(--doc-border)",borderRadius:6,boxShadow:"0 4px 12px var(--doc-shadow)",padding:8,zIndex:1001};function rt({label:e,items:t,disabled:o,showChevron:r=false}){let[n,l]=useState(false),[i,c]=useState(null),u=useRef(null),a=useRef(null),[p,b$1]=useState({top:0,left:0}),d=useCallback(()=>{l(false),c(null);},[]);useEffect(()=>{if(!n||!u.current)return;let m=u.current.getBoundingClientRect();b$1({top:m.bottom+2,left:m.left});},[n]),useEffect(()=>{if(!n)return;function m(h){let x=h.target;u.current&&!u.current.contains(x)&&a.current&&!a.current.contains(x)&&d();}function s(h){h.key==="Escape"&&d();}function g(){d();}return document.addEventListener("mousedown",m),document.addEventListener("keydown",s),window.addEventListener("scroll",g,true),()=>{document.removeEventListener("mousedown",m),document.removeEventListener("keydown",s),window.removeEventListener("scroll",g,true);}},[n,d]);let f=m=>{m.disabled||m.submenuContent||m.onClick&&(m.onClick(),d());};return jsxs("div",{style:{position:"relative"},children:[jsxs("button",{ref:u,type:"button",onClick:()=>!o&&l(!n),onMouseDown:m=>m.preventDefault(),disabled:o,style:n?Qn:Uo,children:[e,r&&jsx(b,{name:"arrow_drop_down",size:16})]}),n&&jsx("div",{ref:a,style:{position:"fixed",top:p.top,left:p.left,backgroundColor:"var(--doc-surface)",border:"1px solid var(--doc-border)",borderRadius:6,boxShadow:"0 4px 12px var(--doc-shadow)",padding:"4px 0",zIndex:1e4,minWidth:200},onMouseDown:m=>m.preventDefault(),children:t.map((m,s)=>{if(Jn(m))return jsx("div",{style:ta},`sep-${s}`);let g=m;if(g.customContent)return jsx("div",{onMouseDown:y=>y.preventDefault(),children:g.customContent},g.label);let h=!!g.submenuContent,x=i===g.label;return jsxs("div",{style:{position:"relative"},onMouseEnter:()=>h&&c(g.label),onMouseLeave:()=>h&&c(null),children:[jsxs("button",{type:"button",style:g.disabled?ea:Zo,onClick:()=>f(g),onMouseDown:y=>y.preventDefault(),onMouseOver:y=>{g.disabled||(y.currentTarget.style.backgroundColor="var(--doc-bg-hover)");},onMouseOut:y=>{y.currentTarget.style.backgroundColor="transparent";},disabled:g.disabled,children:[g.icon&&jsx(b,{name:g.icon,size:18}),jsx("span",{children:g.label}),g.shortcut&&jsx("span",{style:oa,children:g.shortcut}),h&&jsx("span",{style:{marginLeft:"auto"},children:jsx(b,{name:"keyboard_arrow_right",size:16})})]}),h&&x&&jsx("div",{style:ra,onMouseDown:y=>y.preventDefault(),children:g.submenuContent(d)})]},g.label)})})]})}var zt=18,aa=2,Yo={width:zt,height:zt,backgroundColor:"var(--doc-surface)",border:"1px solid var(--doc-border)",borderRadius:2,transition:"background-color 0.1s, border-color 0.1s",cursor:"pointer"},ia={...Yo,backgroundColor:"var(--doc-primary)",border:"1px solid var(--doc-primary)"},la={marginTop:6,fontSize:11,fontWeight:500,color:"var(--doc-text)",textAlign:"center"};function Xo({onInsert:e,gridRows:t=6,gridColumns:o=6}){let[r,n]=useState(0),[l,i]=useState(0),c=useCallback(()=>{r>0&&l>0&&e(r,l);},[r,l,e]),u=[];for(let p=1;p<=t;p++)for(let b=1;b<=o;b++){let d=p<=r&&b<=l;u.push(jsx("div",{style:d?ia:Yo,onMouseEnter:()=>{n(p),i(b);},onClick:c,role:"gridcell","aria-selected":d},`${p}-${b}`));}let a=r>0&&l>0?`${l} \xD7 ${r}`:"Select size";return jsxs("div",{children:[jsx("div",{style:{display:"grid",gap:aa,gridTemplateColumns:`repeat(${o}, ${zt}px)`},onMouseLeave:()=>{n(0),i(0);},role:"grid","aria-label":"Table size selector",children:u}),jsx("div",{style:la,children:a})]})}function ua({items:e,closeMenu:t}){return jsx("div",{style:{display:"flex",flexDirection:"column",minWidth:220},children:e.map(o=>{let r=!o.onClick;return jsxs("button",{type:"button",disabled:r,style:{display:"flex",alignItems:"center",gap:8,padding:"6px 12px",border:"none",background:"transparent",cursor:r?"default":"pointer",fontSize:13,color:"var(--doc-text)",width:"100%",textAlign:"left",whiteSpace:"nowrap",opacity:r?.4:1},onMouseDown:n=>n.preventDefault(),onClick:()=>{r||(o.onClick?.(),t());},onMouseOver:n=>{r||(n.currentTarget.style.backgroundColor="var(--doc-bg-hover)");},onMouseOut:n=>{n.currentTarget.style.backgroundColor="transparent";},children:[jsx(b,{name:o.icon,size:18}),jsx("span",{children:o.label})]},o.label)})})}function pa(){return jsxs("svg",{width:"32",height:"40",viewBox:"0 0 32 40",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[jsx("path",{d:"M2 0C0.9 0 0 0.9 0 2V38C0 39.1 0.9 40 2 40H30C31.1 40 32 39.1 32 38V10L22 0H2Z",fill:"#cbd5e1"}),jsx("path",{d:"M22 0L32 10H24C22.9 10 22 9.1 22 8V0Z",fill:"#94a3b8"}),jsx("rect",{x:"7",y:"18",width:"18",height:"2",rx:"1",fill:"#fff"}),jsx("rect",{x:"7",y:"23",width:"18",height:"2",rx:"1",fill:"#fff"}),jsx("rect",{x:"7",y:"28",width:"12",height:"2",rx:"1",fill:"#fff"})]})}function Ht({children:e}){return jsx("div",{className:"flex items-center flex-shrink-0",children:e})}function ma(e){return e.replace(/\.docx$/i,"")}function Jo({value:e,onChange:t,placeholder:o,editable:r=true}){let{t:n}=b$1(),l=o??n("titleBar.untitled"),i=ma(e)??"";return r?jsx("input",{type:"text",value:i,onChange:c=>{let u=c.target.value;t?.(u.endsWith(".docx")?u:u+".docx");},placeholder:l,className:"text-base font-normal text-foreground bg-transparent border-0 outline-none px-2 py-0 rounded hover:bg-muted focus:bg-doc-bg-input focus:ring-1 focus:ring-ring min-w-[100px] max-w-[300px] truncate leading-tight","aria-label":n("titleBar.documentNameAriaLabel")}):jsx("span",{className:"text-base font-normal text-foreground px-2 py-0 min-w-[100px] max-w-[300px] truncate leading-tight",children:i||l})}function Wt({children:e}){return jsx("div",{className:"flex items-center gap-2 ml-auto flex-shrink-0",children:e})}function Vt(){let{t:e}=b$1(),t=Ho(),{disabled:o=false,onFormat:r,onPrint:n,onOpen:l,onSave:i,onPageSetup:c,onInsertImage:u,onInsertTable:a,showTableInsert:p=true,showHelpMenu:b=true,onInsertPageBreak:d,onInsertSectionBreakNextPage:f,onInsertSectionBreakContinuous:m,onInsertTOC:s,onWatermark:g,onRefocusEditor:h}=t,x=useCallback(P=>{!o&&r&&r(P);},[o,r]),y=useCallback((P,U)=>{!o&&a&&(a(P,U),requestAnimationFrame(()=>h?.()));},[o,a,h]),C=!!n||!!c,L=C||l||i;return jsxs("div",{className:"flex items-center",role:"menubar","aria-label":e("titleBar.menuBarAriaLabel"),children:[L&&jsx(rt,{label:e("toolbar.file"),disabled:o,items:[...l?[{icon:"file_upload",label:e("toolbar.open"),shortcut:e("toolbar.openShortcut"),onClick:l}]:[],...i?[{icon:"file_download",label:e("toolbar.save"),shortcut:e("toolbar.saveShortcut"),onClick:i}]:[],...(l||i)&&C?[{type:"separator"}]:[],...n?[{icon:"print",label:e("toolbar.print"),shortcut:e("toolbar.printShortcut"),onClick:n}]:[],...c?[{icon:"settings",label:e("toolbar.pageSetup"),onClick:c}]:[]]}),jsx(rt,{label:e("toolbar.format"),disabled:o,items:[{icon:"format_textdirection_l_to_r",label:e("toolbar.leftToRight"),onClick:()=>x("setLtr")},{icon:"format_textdirection_r_to_l",label:e("toolbar.rightToLeft"),onClick:()=>x("setRtl")}]}),jsx(rt,{label:e("toolbar.insert"),disabled:o,items:[...u?[{icon:"image",label:e("toolbar.image"),onClick:u}]:[],...p&&a?[{icon:"grid_on",label:e("toolbar.table"),submenuContent:P=>jsx(Xo,{onInsert:(U,F)=>{y(U,F),P();}})}]:[],...u||p&&a?[{type:"separator"}]:[],{icon:"page_break",label:e("toolbar.break"),submenuContent:P=>jsx(ua,{closeMenu:P,items:[{icon:"page_break",label:e("toolbar.pageBreak"),onClick:d},{icon:"horizontal_rule",label:e("toolbar.sectionBreakNextPage"),onClick:f},{icon:"border_horizontal",label:e("toolbar.sectionBreakContinuous"),onClick:m}]})},{icon:"format_list_numbered",label:e("toolbar.tableOfContents"),onClick:s,disabled:!s},...g?[{icon:"branding_watermark",label:e("toolbar.watermark"),onClick:g}]:[]]}),b&&jsx(rt,{label:e("toolbar.help"),disabled:o,items:[{label:e("toolbar.reportIssue"),onClick:()=>openReportIssue()}]})]})}function Qo({children:e}){let t=null,o=null,r=[],n=[];Children.forEach(e,i=>{isValidElement(i)&&(i.type===Ht?t=i:i.type===Wt?o=i:i.type===Vt?n.push(i):r.push(i));});let l=useCallback(i=>{let c=i.target;c.tagName==="INPUT"||c.tagName==="TEXTAREA"||c.tagName==="SELECT"||c.tagName==="OPTION"||i.preventDefault();},[]);return jsxs("div",{className:"flex items-stretch bg-doc-surface pt-2 pb-1",onMouseDown:l,"data-testid":"title-bar",children:[jsx("div",{className:"flex items-center flex-shrink-0 pl-3 pr-1",children:t||jsx(pa,{})}),jsxs("div",{className:"flex flex-col justify-center flex-1 min-w-0 py-1",children:[r.length>0&&jsx("div",{className:"flex items-center gap-2 px-1",children:r}),n.length>0&&jsx("div",{className:"flex items-center px-1",children:n})]}),o&&jsx("div",{className:"flex items-center flex-shrink-0 px-3",children:o})]})}function fa({children:e,className:t,style:o,...r}){return jsx(ot.Provider,{value:r,children:jsx("div",{className:M("flex flex-col bg-doc-surface shadow-sm flex-shrink-0",t),style:{position:"relative",zIndex:dt.toolbar,...o},"data-testid":"editor-toolbar",children:e})})}var je=fa;je.TitleBar=Qo;je.Logo=Ht;je.DocumentName=Jo;je.MenuBar=Vt;je.TitleBarRight=Wt;je.Toolbar=Vo;var or=12240,St=1440,Tt=1440,kt=567,Gt=22,ha="var(--doc-text-muted)",xa="var(--doc-text-subtle)",tr="var(--doc-shadow-subtle)",va="var(--doc-primary)",ya="var(--doc-primary-hover)",Ca="var(--doc-primary-hover)",Ge=5;function wa(e,t){return t==="inch"?(e/Tt).toFixed(2)+'"':(e/kt).toFixed(1)+" cm"}function Nc({sectionProps:e,zoom:t=1,editable:o=false,onLeftMarginChange:r,onRightMarginChange:n,onFirstLineIndentChange:l,showFirstLineIndent:i=false,firstLineIndent:c=0,hangingIndent:u=false,indentLeft:a=0,indentRight:p=0,onIndentLeftChange:b,onIndentRightChange:d,unit:f="inch",className:m="",style:s,tabStops:g,onTabStopRemove:h}){let{t:x}=b$1(),[y,C]=useState(null),[L,P]=useState(null),[U,F]=useState(null),[we,Z]=useState(null),ge=useRef(null),q=e?.pageWidth??or,j=e?.marginLeft??St,S=e?.marginRight??St,D=q-j-S,de=twipsToPixels(q)*t,he=twipsToPixels(j)*t,Ne=twipsToPixels(S)*t,xe=twipsToPixels(a)*t,Se=twipsToPixels(p)*t,Q=u?-c:c,Ue=twipsToPixels(Q)*t,z=he+xe,ae=de-Ne-Se,Ze=he+xe+Ue,T=useCallback((B,ee)=>{o&&(B.preventDefault(),B.stopPropagation(),C(ee));},[o]),V=useCallback(B=>{if(!y||!ge.current)return;let ee=ge.current.getBoundingClientRect(),at=B.clientX-ee.left;Z(at);let De=pixelsToTwips(at/t);if(y==="leftMargin"){let ue=q-S-720,te=Math.round(Math.max(0,Math.min(De,ue)));F(te),r?.(te);}else if(y==="rightMargin"){let ue=q-De,te=q-j-720,ie=Math.round(Math.max(0,Math.min(ue,te)));F(ie),n?.(ie);}else if(y==="firstLineIndent"){let ue=j+a,te=De-ue,ie=D-a-p-720,Be=Math.round(Math.max(-a,Math.min(te,ie)));F(Be),l?.(Be);}else if(y==="leftIndent"){let ue=De-j,te=D-p-720,ie=Math.round(Math.max(0,Math.min(ue,te)));F(ie),b?.(ie);}else if(y==="rightIndent"){let te=q-S-De,ie=D-a-720,Be=Math.round(Math.max(0,Math.min(te,ie)));F(Be),d?.(Be);}},[y,t,q,j,S,D,a,p,r,n,l,b,d]),ve=useCallback(()=>{C(null),F(null),Z(null);},[]);useEffect(()=>{if(y)return document.addEventListener("mousemove",V),document.addEventListener("mouseup",ve),()=>{document.removeEventListener("mousemove",V),document.removeEventListener("mouseup",ve);}},[y,V,ve]);let Pt=Ma(q,t,f);return jsxs("div",{ref:ge,className:`docx-horizontal-ruler ${m}`,style:{position:"relative",width:formatPx(de),height:Gt,backgroundColor:"transparent",overflow:"visible",userSelect:"none",cursor:y?"ew-resize":"default",...s},role:"slider","aria-label":x("ruler.horizontal"),"aria-valuemin":0,"aria-valuemax":q,children:[jsx("div",{style:{position:"absolute",top:0,left:0,width:formatPx(he),height:Gt,backgroundColor:tr,borderRight:"1px solid var(--doc-shadow-subtle)",cursor:o?"ew-resize":"default",zIndex:1},onMouseDown:o&&r?B=>T(B,"leftMargin"):void 0}),jsx("div",{style:{position:"absolute",top:0,right:0,width:formatPx(Ne),height:Gt,backgroundColor:tr,borderLeft:"1px solid var(--doc-shadow-subtle)",cursor:o?"ew-resize":"default",zIndex:1},onMouseDown:o&&n?B=>T(B,"rightMargin"):void 0}),jsx("div",{style:{position:"absolute",inset:0,pointerEvents:"none"},children:Pt.map((B,ee)=>jsx(Sa,{tick:B},ee))}),i&&jsx(Ut,{direction:"down",positionPx:Ze,editable:o,isDragging:y==="firstLineIndent",isHovered:L==="firstLineIndent",onMouseEnter:()=>P("firstLineIndent"),onMouseLeave:()=>P(null),onMouseDown:B=>T(B,"firstLineIndent"),label:x("ruler.firstLineIndent")}),o&&b&&jsx(Ut,{direction:"up",positionPx:z,editable:o,isDragging:y==="leftIndent",isHovered:L==="leftIndent",onMouseEnter:()=>P("leftIndent"),onMouseLeave:()=>P(null),onMouseDown:B=>T(B,"leftIndent"),label:x("ruler.leftIndent")}),o&&d&&jsx(Ut,{direction:"down",positionPx:ae,editable:o,isDragging:y==="rightIndent",isHovered:L==="rightIndent",onMouseEnter:()=>P("rightIndent"),onMouseLeave:()=>P(null),onMouseDown:B=>T(B,"rightIndent"),label:x("ruler.rightIndent")}),g?.map(B=>jsx(Pa,{tabStop:B,positionPx:twipsToPixels(B.position)*t,onDoubleClick:()=>h?.(B.position)},B.position)),y&&U!==null&&we!==null&&jsx(Ta,{value:wa(U,f),positionPx:we})]})}function Sa({tick:e}){return jsxs(Fragment,{children:[jsx("div",{style:{position:"absolute",left:formatPx(e.position),bottom:0,width:1,height:e.height,backgroundColor:xa}}),e.label&&jsx("div",{style:{position:"absolute",left:formatPx(e.position),top:3,transform:"translateX(-50%)",fontSize:"9px",color:ha,fontFamily:"sans-serif",whiteSpace:"nowrap"},children:e.label})]})}function Ut({direction:e,positionPx:t,editable:o,isDragging:r,isHovered:n,onMouseEnter:l,onMouseLeave:i,onMouseDown:c,label:u}){let a=r?Ca:n?ya:va,p=Math.round(Ge*1.6),b={position:"absolute",left:formatPx(t-Ge),width:Ge*2,height:p+2,cursor:o?"ew-resize":"default",zIndex:r?10:4,...e==="down"?{top:0}:{bottom:0}},d=e==="down"?{position:"absolute",top:1,left:0,width:0,height:0,borderLeft:`${Ge}px solid transparent`,borderRight:`${Ge}px solid transparent`,borderTop:`${p}px solid ${a}`,transition:"border-top-color 0.1s"}:{position:"absolute",bottom:1,left:0,width:0,height:0,borderLeft:`${Ge}px solid transparent`,borderRight:`${Ge}px solid transparent`,borderBottom:`${p}px solid ${a}`,transition:"border-bottom-color 0.1s"};return jsx("div",{className:"docx-ruler-indent",style:b,onMouseEnter:l,onMouseLeave:i,onMouseDown:c,role:"slider","aria-label":u,"aria-orientation":"horizontal",tabIndex:o?0:-1,children:jsx("div",{style:d})})}function Ta({value:e,positionPx:t}){return jsx("div",{style:{position:"absolute",left:formatPx(t),top:-22,transform:"translateX(-50%)",backgroundColor:"var(--doc-text)",color:"var(--doc-on-primary)",fontSize:"10px",fontFamily:"sans-serif",padding:"2px 6px",borderRadius:3,whiteSpace:"nowrap",pointerEvents:"none",zIndex:20},children:e})}var ka={left:"L",center:"C",right:"R",decimal:"D",bar:"|"};function Pa({tabStop:e,positionPx:t,onDoubleClick:o}){return jsx("div",{style:{position:"absolute",left:formatPx(t-5),bottom:0,width:10,height:12,display:"flex",alignItems:"center",justifyContent:"center",fontSize:8,fontWeight:700,color:"var(--doc-text-muted)",cursor:"pointer",userSelect:"none"},onDoubleClick:r=>{r.stopPropagation(),o();},title:`${e.alignment} tab at ${(e.position/1440).toFixed(2)}"`,children:ka[e.alignment]||"L"})}function Ma(e,t,o){let r=[];if(o==="inch"){let n=Tt/8,l=Math.ceil(e/n);for(let i=0;i<=l;i++){let c=i*n;if(c>e)break;let u=twipsToPixels(c)*t;i%8===0?r.push({position:u,height:10,label:i/8>0?String(i/8):void 0}):i%4===0?r.push({position:u,height:6}):i%2===0?r.push({position:u,height:4}):r.push({position:u,height:2});}}else {let n=kt/10,l=Math.ceil(e/n);for(let i=0;i<=l;i++){let c=i*n;if(c>e)break;let u=twipsToPixels(c)*t;i%10===0?r.push({position:u,height:10,label:i/10>0?String(i/10):void 0}):i%5===0?r.push({position:u,height:6}):r.push({position:u,height:3});}}return r}function Dc(e,t,o,r){let n=pixelsToTwips(e/r);return t==="left"?Math.max(0,n):Math.max(0,pixelsToTwips(o/r)-n)}function Bc(e,t=1){let o=e?.pageWidth??or,r=e?.marginLeft??St,n=e?.marginRight??St,l=twipsToPixels(o)*t,i=twipsToPixels(r)*t,c=twipsToPixels(n)*t;return {width:l,leftMargin:i,rightMargin:c,contentWidth:l-i-c}}function _c(e,t){return t==="inch"?(e/Tt).toFixed(2)+'"':(e/kt).toFixed(1)+" cm"}function Fc(e,t){let o=parseFloat(e.replace(/[^\d.]/g,""));return isNaN(o)?null:Math.round(o*(t==="inch"?Tt:kt))}
|
|
2
|
+
export{ce as A,fe as B,Qs as C,Vo as D,je as E,Nc as F,Dc as G,Bc as H,_c as I,Fc as J,M as a,K as b,oo as c,ao as e,dt as h,bi as i,gi as j,hi as k,xi as l,vi as m,yi as n,re as o,co as p,Ke as q,vo as r,Co as s,So as t,ko as u,Io as v,Lo as w,Eo as x,Ao as y,_o as z};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {d,g,h,m,e,l,j,k,i}from'./chunk-HM63QNON.mjs';import {b}from'./chunk-BMBP5UFA.mjs';import {useRef,useCallback,useMemo,useState,useEffect}from'react';import {TextSelection}from'prosemirror-state';import {findBodyPmSpans}from'@xcrong/docx-editor-core/layout-bridge';import {findVerticalScrollParent}from'@xcrong/docx-editor-core/utils/findVerticalScrollParent';import {computeAutoScrollDelta,AUTO_SCROLL_EDGE_ZONE}from'@xcrong/docx-editor-core/utils/autoScroll';import {extractTrackedChanges}from'@xcrong/docx-editor-core/prosemirror/utils/extractTrackedChanges';export{extractTrackedChanges as c}from'@xcrong/docx-editor-core/prosemirror/utils/extractTrackedChanges';import {TableSelectionManager,getTableFromDocument,updateTableInDocument,deleteTableFromDocument}from'@xcrong/docx-editor-core';export{TABLE_DATA_ATTRIBUTES as f}from'@xcrong/docx-editor-core';var $=".layout-page-content .layout-line";function lt(r){let l=findVerticalScrollParent(r);if(!l)return;let s=r.getBoundingClientRect(),m=l.getBoundingClientRect(),t=40;s.bottom>m.bottom-t?l.scrollTop+=s.bottom-m.bottom+t:s.top<m.top+t&&(l.scrollTop-=m.top-s.top+t);}function xt({pagesContainerRef:r}){let l=useRef(null),s=useRef(-1),m=useCallback(b=>{if(!r.current)return null;let u=findBodyPmSpans(r.current);for(let i of u){let o=Number(i.dataset.pmStart),a=Number(i.dataset.pmEnd);if(i.classList.contains("layout-run-tab")){if(b>=o&&b<a)return i.getBoundingClientRect().left;continue}if(b>=o&&b<=a&&i.firstChild?.nodeType===Node.TEXT_NODE){let e=i.firstChild,n=Math.min(b-o,e.length),c=i.ownerDocument;if(!c)continue;let d=c.createRange();return d.setStart(e,n),d.setEnd(e,n),d.getBoundingClientRect().left}}let f=r.current.querySelectorAll(".layout-empty-run");for(let i of Array.from(f)){let o=i.closest(".layout-paragraph");if(!o)continue;let a=Number(o.dataset.pmStart),e=Number(o.dataset.pmEnd);if(b>=a&&b<=e)return i.getBoundingClientRect().left}return null},[r]),t=useCallback(b=>{if(!r.current)return null;let u=r.current.querySelectorAll($);for(let f of Array.from(u)){let i=f,o=i.querySelectorAll("span[data-pm-start][data-pm-end]");for(let a of Array.from(o)){let e=a,n=Number(e.dataset.pmStart),c=Number(e.dataset.pmEnd);if(b>=n&&b<=c)return i}}for(let f of Array.from(u)){let i=f,o=i.closest(".layout-paragraph");if(!o)continue;let a=Number(o.dataset.pmStart),e=Number(o.dataset.pmEnd);if(b>=a&&b<=e&&o.querySelector(".layout-line")===i)return i}return null},[r]),S=useCallback((b,u)=>{let f=b.querySelectorAll("span[data-pm-start][data-pm-end]");if(f.length===0){let e=b.closest(".layout-paragraph");return e?.dataset.pmStart?Number(e.dataset.pmStart)+1:null}for(let e of Array.from(f)){let n=e,c=n.getBoundingClientRect(),d=Number(n.dataset.pmStart),y=Number(n.dataset.pmEnd);if(n.classList.contains("layout-run-tab")){if(u>=c.left&&u<=c.right){let E=(c.left+c.right)/2;return u<E?d:y}continue}if(u>=c.left&&u<=c.right){let E=n.firstChild;if(!E||E.nodeType!==Node.TEXT_NODE)return d;let p=E,R=n.ownerDocument;if(!R)return d;let k=0,H=p.length;for(;k<H;){let w=Math.floor((k+H)/2),L=R.createRange();L.setStart(p,w),L.setEnd(p,w),u<L.getBoundingClientRect().left?H=w:k=w+1;}if(k>0&&k<=p.length){let w=R.createRange();w.setStart(p,k-1),w.setEnd(p,k-1);let L=w.getBoundingClientRect().left;w.setStart(p,Math.min(k,p.length)),w.setEnd(p,Math.min(k,p.length));let h=w.getBoundingClientRect().left;if(Math.abs(u-L)<Math.abs(u-h))return d+(k-1)}return d+Math.min(k,y-d)}}let i=null,o=1/0;for(let e of Array.from(f)){let n=e,c=n.getBoundingClientRect(),d=u<c.left?c.left-u:u-c.right;d<o&&(o=d,i=n);}if(!i)return null;let a=i.getBoundingClientRect();return u<a.left?Number(i.dataset.pmStart):Number(i.dataset.pmEnd)},[]),x=useCallback((b,u)=>{if(u.key!=="ArrowUp"&&u.key!=="ArrowDown")return (["ArrowLeft","ArrowRight","Home","End"].includes(u.key)||u.key.length===1&&!u.ctrlKey&&!u.metaKey)&&(l.current=null,s.current=-1),false;if(u.ctrlKey||u.metaKey)return l.current=null,s.current=-1,false;if(!r.current)return false;let f=Array.from(r.current.querySelectorAll($));if(f.length===0)return false;let{from:i,anchor:o}=b.state.selection;if(l.current===null){let p=m(i);if(p===null)return false;l.current=p;}let a;if(s.current>=0&&s.current<f.length)a=s.current;else {let p=t(i);if(!p||(a=f.indexOf(p),a===-1))return false}let e=u.key==="ArrowUp"?a-1:a+1;if(e<0||e>=f.length)return s.current=-1,false;let n=f[e],c=S(n,l.current);if(c===null)return false;s.current=e;let{state:d,dispatch:y}=b,E=Math.max(0,Math.min(c,d.doc.content.size));try{let p=u.shiftKey?TextSelection.create(d.doc,o,E):TextSelection.create(d.doc,E);y(d.tr.setSelection(p));}catch{let p=d.doc.resolve(E),R=u.shiftKey?TextSelection.between(d.doc.resolve(o),p):TextSelection.near(p);y(d.tr.setSelection(R));}return lt(n),true},[r,m,t,S]);return {stickyXRef:l,lastVisualLineIndexRef:s,getCaretClientX:m,findLineElementAtPosition:t,findPositionOnLineAtClientX:S,handlePMKeyDown:x}}function Ct({pagesContainerRef:r,onScrollExtendSelection:l}){let s=useRef(null),m=useRef({x:0,y:0}),t=useRef(false),S=useRef(null),x=useCallback(()=>{if(S.current)return S.current;let o=r.current;return o?(S.current=findVerticalScrollParent(o),S.current):null},[r]),b=useCallback(()=>{t.current=false,s.current!==null&&(cancelAnimationFrame(s.current),s.current=null);},[]),u=useCallback(()=>{if(!t.current)return;let o=x();if(!o)return;let a=o.getBoundingClientRect(),{x:e,y:n}=m.current,c=computeAutoScrollDelta(a,n);c!==0&&(o.scrollTop+=c,l(e,n)),s.current=requestAnimationFrame(u);},[x,l]),f=useCallback(()=>{t.current||(t.current=true,s.current=requestAnimationFrame(u));},[u]);return {updateMousePosition:useCallback((o,a)=>{if(m.current={x:o,y:a},!t.current){let e=x();if(!e)return;let n=e.getBoundingClientRect();(a<n.top+AUTO_SCROLL_EDGE_ZONE||a>n.bottom-AUTO_SCROLL_EDGE_ZONE)&&f();}},[x,f]),stopAutoScroll:b}}function At(r){return useMemo(()=>extractTrackedChanges(r),[r])}function Ot({document:r,onChange:l$1,onSelectionChange:s}){let m$1=useMemo(()=>new TableSelectionManager,[]),[t,S]=useState({context:null,table:null,tableIndex:null,rowIndex:null,columnIndex:null}),x=useCallback((a,e,n)=>{if(!r)return;let c=getTableFromDocument(r,a);if(!c){m$1.clearSelection(),S({context:null,table:null,tableIndex:null,rowIndex:null,columnIndex:null});return}m$1.selectCell({tableIndex:a,rowIndex:e,columnIndex:n});let y=d(c,{tableIndex:a,rowIndex:e,columnIndex:n});S({context:y,table:c,tableIndex:a,rowIndex:e,columnIndex:n}),s?.(y);},[r,m$1,s]),b=useCallback(()=>{m$1.clearSelection(),S({context:null,table:null,tableIndex:null,rowIndex:null,columnIndex:null}),s?.(null);},[m$1,s]),u=useCallback(()=>!t.table||t.rowIndex===null||t.columnIndex===null?null:g(t.table,t.rowIndex,t.columnIndex),[t.columnIndex,t.rowIndex,t.table]),f=useCallback((a,e)=>{if(!r||!t.table||t.tableIndex===null||t.rowIndex===null||t.columnIndex===null)return;let n=h(t.table,t.rowIndex,t.columnIndex,a,e);if(n===t.table)return;let c=updateTableInDocument(r,t.tableIndex,n);l$1?.(c),c&&x(t.tableIndex,t.rowIndex,t.columnIndex);},[r,x,l$1,t.columnIndex,t.rowIndex,t.table,t.tableIndex]),i$1=useCallback(a=>{if(!r||!t.context||t.tableIndex===null||t.rowIndex===null||t.columnIndex===null)return;let e$1=t.table;if(!e$1)return;let n=null,c=null,d=t.rowIndex,y=t.columnIndex;switch(a){case "addRowAbove":n=i(e$1,t.rowIndex,"before"),d=t.rowIndex+1;break;case "addRowBelow":n=i(e$1,t.rowIndex,"after");break;case "addColumnLeft":n=k(e$1,t.columnIndex,"before"),y=t.columnIndex+1;break;case "addColumnRight":n=k(e$1,t.columnIndex,"after");break;case "deleteRow":e$1.rows.length>1&&(n=j(e$1,t.rowIndex),d>=n.rows.length&&(d=n.rows.length-1));break;case "deleteColumn":{if(e(e$1)>1){n=l(e$1,t.columnIndex);let p=e(n);y>=p&&(y=p-1);}break}case "mergeCells":t.context.selection.selectedCells&&(n=m(e$1,t.context.selection));break;case "splitCell":break;case "deleteTable":c=deleteTableFromDocument(r,t.tableIndex),b(),l$1?.(c);return}n&&(c=updateTableInDocument(r,t.tableIndex,n),l$1?.(c),c&&x(t.tableIndex,d,y));},[r,t,l$1,b,x]),o=useCallback((a,e,n)=>m$1.isCellSelected(a,e,n),[m$1,t]);return {state:t,handleCellClick:x,handleAction:i$1,getSplitCellConfig:u,applySplitCell:f,clearSelection:b,isCellSelected:o,tableContext:t.context}}function et(r,l){return JSON.stringify(r)===JSON.stringify(l)}function nt(r,l={}){let{maxEntries:s=100,groupingInterval:m=500,enableKeyboardShortcuts:t=true,isEqual:S=et,onUndo:x,onRedo:b,containerRef:u}=l,[f,i]=useState(r),[o,a]=useState([]),[e,n]=useState([]),c=useRef(0),d=useRef(false),y=useCallback((h,g)=>{if(S(f,h))return;if(d.current){i(h);return}let T=Date.now();T-c.current<m&&o.length>0?a(K=>{let A=[...K];return A[A.length-1]={state:f,timestamp:T,description:g||A[A.length-1].description},A}):a(K=>{let A={state:f,timestamp:T,description:g},N=[...K,A];return N.length>s?N.slice(N.length-s):N}),n([]),i(h),c.current=T;},[f,S,m,s,o.length]),E=useCallback(()=>{if(o.length===0)return;d.current=true;let h=o[o.length-1];return a(g=>g.slice(0,-1)),n(g=>[...g,{state:f,timestamp:Date.now()}]),i(h.state),setTimeout(()=>{d.current=false;},0),x?.(h.state),h.state},[o,f,x]),p=useCallback(()=>{if(e.length===0)return;d.current=true;let h=e[e.length-1];return n(g=>g.slice(0,-1)),a(g=>[...g,{state:f,timestamp:Date.now()}]),i(h.state),setTimeout(()=>{d.current=false;},0),b?.(h.state),h.state},[e,f,b]),R=useCallback(()=>{a([]),n([]);},[]),k=useCallback(h=>{i(h??r),a([]),n([]),c.current=0;},[r]),H=useCallback(()=>[...o],[o]),w=useCallback(()=>[...e],[e]),L=useCallback(h=>{i(g=>h(g)),a(g=>g.map(T=>({...T,state:h(T.state)}))),n(g=>g.map(T=>({...T,state:h(T.state)})));},[]);return useEffect(()=>{if(!t)return;let h=T=>{if((T.ctrlKey||T.metaKey)&&T.key==="z"&&!T.shiftKey){T.preventDefault(),E();return}if((T.ctrlKey||T.metaKey)&&T.key==="y"||(T.ctrlKey||T.metaKey)&&T.key==="z"&&T.shiftKey){T.preventDefault(),p();return}},g=u?.current||document;return g.addEventListener("keydown",h),()=>{g.removeEventListener("keydown",h);}},[t,E,p,u]),{state:f,canUndo:o.length>0,canRedo:e.length>0,undoCount:o.length,redoCount:e.length,push:y,undo:E,redo:p,clear:R,reset:k,getUndoStack:H,getRedoStack:w,transformAll:L}}function Ft(r,l={}){let s=nt(r,l);return useEffect(()=>{s.push(r);},[r]),s}function Jt(r,l={}){let s=useCallback((m,t)=>!(m?.package?.document!==t?.package?.document&&JSON.stringify(m?.package?.document)!==JSON.stringify(t?.package?.document)||m?.package?.headers!==t?.package?.headers||m?.package?.footers!==t?.package?.footers),[]);return nt(r,{...l,isEqual:s})}var X=class{constructor(l,s={}){b(this,"undoStack",[]);b(this,"redoStack",[]);b(this,"currentState");b(this,"maxEntries");b(this,"groupingInterval");b(this,"lastPushTime",0);b(this,"isEqual");this.currentState=l,this.maxEntries=s.maxEntries??100,this.groupingInterval=s.groupingInterval??500,this.isEqual=s.isEqual??et;}get state(){return this.currentState}get canUndo(){return this.undoStack.length>0}get canRedo(){return this.redoStack.length>0}push(l,s){if(this.isEqual(this.currentState,l))return;let m=Date.now();m-this.lastPushTime<this.groupingInterval&&this.undoStack.length>0?this.undoStack[this.undoStack.length-1].timestamp=m:(this.undoStack.push({state:this.currentState,timestamp:m,description:s}),this.undoStack.length>this.maxEntries&&(this.undoStack=this.undoStack.slice(-this.maxEntries))),this.redoStack=[],this.currentState=l,this.lastPushTime=m;}undo(){if(this.undoStack.length===0)return;let l=this.undoStack.pop();return this.redoStack.push({state:this.currentState,timestamp:Date.now()}),this.currentState=l.state,l.state}redo(){if(this.redoStack.length===0)return;let l=this.redoStack.pop();return this.undoStack.push({state:this.currentState,timestamp:Date.now()}),this.currentState=l.state,l.state}clear(){this.undoStack=[],this.redoStack=[];}reset(l){this.currentState=l??this.currentState,this.undoStack=[],this.redoStack=[],this.lastPushTime=0;}};export{xt as a,Ct as b,At as d,Ot as e,nt as g,Ft as h,Jt as i,X as j};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @xcrong/docx-editor-react/dialogs
|
|
3
|
+
*
|
|
4
|
+
* Modal dialogs for hyperlinks, find/replace, paste-special, page setup,
|
|
5
|
+
* and keyboard shortcuts. Pair with the hooks under
|
|
6
|
+
* `@xcrong/docx-editor-react/hooks` when wiring custom UI.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* import { HyperlinkDialog, FindReplaceDialog } from '@xcrong/docx-editor-react/dialogs';
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @packageDocumentation
|
|
14
|
+
* @public
|
|
15
|
+
*/
|
|
16
|
+
export { B as BookmarkOption, F as FindReplaceDialog, a as FindReplaceDialogProps, H as HyperlinkData, b as HyperlinkDialog, c as HyperlinkDialogProps, K as KeyboardShortcut, d as KeyboardShortcutsDialog, e as KeyboardShortcutsDialogProps, P as PasteOption, f as PasteSpecialDialog, g as PasteSpecialDialogProps, S as ShortcutCategory, U as UseKeyboardShortcutsDialogOptions, h as UseKeyboardShortcutsDialogReturn, i as UsePasteSpecialOptions, j as UsePasteSpecialReturn, x as createBookmarkLinkData, y as createHyperlinkData, z as emailToMailto, A as extractBookmarksForDialog, k as formatShortcutKeys, l as getAllCategories, m as getAllPasteOptions, n as getCategoryLabel, o as getCommonShortcuts, p as getDefaultPasteOption, q as getDefaultShortcuts, C as getDisplayText, r as getPasteOption, s as getShortcutsByCategory, D as getUrlType, E as isBookmarkHyperlinkData, G as isExternalHyperlinkData, t as isPasteSpecialShortcut, I as isValidUrl, J as normalizeUrl, L as phoneToTel, v as useKeyboardShortcutsDialog, w as usePasteSpecial } from './KeyboardShortcutsDialog-C_-ezdLe.mjs';
|
|
17
|
+
import React__default from 'react';
|
|
18
|
+
import { SectionProperties } from '@xcrong/docx-editor-core/types/document';
|
|
19
|
+
export { FindMatch, FindOptions, FindResult, HighlightOptions, createDefaultFindOptions, createSearchPattern, escapeRegexString, findAllMatches, getDefaultHighlightOptions, getMatchCountText, isEmptySearch, replaceAllInContent, replaceFirstInContent } from '@xcrong/docx-editor-core/utils/findReplace';
|
|
20
|
+
import '@xcrong/docx-editor-core/utils';
|
|
21
|
+
import '@xcrong/docx-editor-i18n';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Page Setup Dialog
|
|
25
|
+
*
|
|
26
|
+
* Modal for editing page layout properties:
|
|
27
|
+
* - Page size (Letter, A4, Legal, etc.)
|
|
28
|
+
* - Orientation (portrait/landscape)
|
|
29
|
+
* - Margins (top, bottom, left, right) in inches
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
interface PageSetupDialogProps {
|
|
33
|
+
isOpen: boolean;
|
|
34
|
+
onClose: () => void;
|
|
35
|
+
onApply: (props: Partial<SectionProperties>) => void;
|
|
36
|
+
currentProps?: SectionProperties;
|
|
37
|
+
}
|
|
38
|
+
declare function PageSetupDialog({ isOpen, onClose, onApply, currentProps, }: PageSetupDialogProps): React__default.ReactElement | null;
|
|
39
|
+
|
|
40
|
+
export { PageSetupDialog, type PageSetupDialogProps };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @xcrong/docx-editor-react/dialogs
|
|
3
|
+
*
|
|
4
|
+
* Modal dialogs for hyperlinks, find/replace, paste-special, page setup,
|
|
5
|
+
* and keyboard shortcuts. Pair with the hooks under
|
|
6
|
+
* `@xcrong/docx-editor-react/hooks` when wiring custom UI.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* import { HyperlinkDialog, FindReplaceDialog } from '@xcrong/docx-editor-react/dialogs';
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @packageDocumentation
|
|
14
|
+
* @public
|
|
15
|
+
*/
|
|
16
|
+
export { B as BookmarkOption, F as FindReplaceDialog, a as FindReplaceDialogProps, H as HyperlinkData, b as HyperlinkDialog, c as HyperlinkDialogProps, K as KeyboardShortcut, d as KeyboardShortcutsDialog, e as KeyboardShortcutsDialogProps, P as PasteOption, f as PasteSpecialDialog, g as PasteSpecialDialogProps, S as ShortcutCategory, U as UseKeyboardShortcutsDialogOptions, h as UseKeyboardShortcutsDialogReturn, i as UsePasteSpecialOptions, j as UsePasteSpecialReturn, x as createBookmarkLinkData, y as createHyperlinkData, z as emailToMailto, A as extractBookmarksForDialog, k as formatShortcutKeys, l as getAllCategories, m as getAllPasteOptions, n as getCategoryLabel, o as getCommonShortcuts, p as getDefaultPasteOption, q as getDefaultShortcuts, C as getDisplayText, r as getPasteOption, s as getShortcutsByCategory, D as getUrlType, E as isBookmarkHyperlinkData, G as isExternalHyperlinkData, t as isPasteSpecialShortcut, I as isValidUrl, J as normalizeUrl, L as phoneToTel, v as useKeyboardShortcutsDialog, w as usePasteSpecial } from './KeyboardShortcutsDialog-C_-ezdLe.js';
|
|
17
|
+
import React__default from 'react';
|
|
18
|
+
import { SectionProperties } from '@xcrong/docx-editor-core/types/document';
|
|
19
|
+
export { FindMatch, FindOptions, FindResult, HighlightOptions, createDefaultFindOptions, createSearchPattern, escapeRegexString, findAllMatches, getDefaultHighlightOptions, getMatchCountText, isEmptySearch, replaceAllInContent, replaceFirstInContent } from '@xcrong/docx-editor-core/utils/findReplace';
|
|
20
|
+
import '@xcrong/docx-editor-core/utils';
|
|
21
|
+
import '@xcrong/docx-editor-i18n';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Page Setup Dialog
|
|
25
|
+
*
|
|
26
|
+
* Modal for editing page layout properties:
|
|
27
|
+
* - Page size (Letter, A4, Legal, etc.)
|
|
28
|
+
* - Orientation (portrait/landscape)
|
|
29
|
+
* - Margins (top, bottom, left, right) in inches
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
interface PageSetupDialogProps {
|
|
33
|
+
isOpen: boolean;
|
|
34
|
+
onClose: () => void;
|
|
35
|
+
onApply: (props: Partial<SectionProperties>) => void;
|
|
36
|
+
currentProps?: SectionProperties;
|
|
37
|
+
}
|
|
38
|
+
declare function PageSetupDialog({ isOpen, onClose, onApply, currentProps, }: PageSetupDialogProps): React__default.ReactElement | null;
|
|
39
|
+
|
|
40
|
+
export { PageSetupDialog, type PageSetupDialogProps };
|