@eigenpal/docx-editor-vue 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <p align="center">
2
2
  <a href="https://www.docx-editor.dev/">
3
- <img src="https://raw.githubusercontent.com/eigenpal/docx-editor/main/assets/header.png" alt="DOCX Editor — .docx in, .docx out. Open source, agent ready, client-side." width="500" />
3
+ <img src="https://raw.githubusercontent.com/eigenpal/docx-editor/main/.github/assets/header.png" alt="DOCX Editor — .docx in, .docx out. Open source, agent ready, client-side." width="500" />
4
4
  </a>
5
5
  </p>
6
6
 
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./useTableResize-lWdIgX9x.cjs`);let t=require(`vue`),n=require(`prosemirror-history`),r=require(`@eigenpal/docx-editor-core/utils`),i=require(`@eigenpal/docx-editor-core/prosemirror/utils/extractTrackedChanges`),a=require(`@eigenpal/docx-editor-core`),o=require(`@eigenpal/docx-editor-core/utils/findVerticalScrollParent`),s=require(`@eigenpal/docx-editor-core/utils/findReplace`),c=require(`@eigenpal/docx-editor-core/managers/TableSelectionManager`),l=require(`@eigenpal/docx-editor-core/prosemirror/utils/visualLineNavigation`);function u(e,n={}){let r=(0,t.ref)(`idle`),i=(0,t.ref)(null),o=(0,t.ref)(!1),s=(0,t.ref)(!0),{storageKey:c,interval:l,enabled:u=!0,maxAge:d,onSave:f,onError:p,onRecoveryAvailable:m,saveOnChange:h,debounceDelay:g}=n;if(!(0,a.isAutoSaveSupported)())return{status:r,lastSaveTime:i,hasRecoveryData:o,isEnabled:s,save:async()=>!1,clearAutoSave:()=>{},getRecoveryData:()=>null,acceptRecovery:()=>null,dismissRecovery:()=>{},enable:()=>{},disable:()=>{}};let _=new a.AutoSaveManager({storageKey:c,interval:l,maxAge:d,saveOnChange:h,debounceDelay:g,onSave:f,onError:p,onRecoveryAvailable:m}),v=()=>{let e=_.getSnapshot();r.value=e.status,i.value=e.lastSaveTime,o.value=e.hasRecoveryData,s.value=e.isEnabled},y=_.subscribe(v);u?_.enable():_.disable(),v(),(0,t.watch)(()=>(0,t.unref)(e),e=>_.onDocumentChanged(e??null),{immediate:!0});function b(){return _.save()}function x(){_.clear()}function S(){return _.getRecoveryData()}function C(){return _.acceptRecovery()}function w(){_.dismissRecovery()}function T(){_.enable()}function E(){_.disable()}return(0,t.onBeforeUnmount)(()=>{y(),_.destroy()}),{status:r,lastSaveTime:i,hasRecoveryData:o,isEnabled:s,save:b,clearAutoSave:x,getRecoveryData:S,acceptRecovery:C,dismissRecovery:w,enable:T,disable:E}}function d(e={}){let{onCopy:n,onCut:i,onPaste:a,cleanWordFormatting:o=!0,editable:s=!0,onError:c,theme:l}=e,u=(0,t.ref)(!1),d=(0,t.ref)(null);async function f(e){if(u.value)return!1;u.value=!0;try{let t=await(0,r.copyRuns)(e.runs,{onError:c,theme:l});return t&&n?.(e),t}finally{u.value=!1}}async function p(e){if(u.value||!s)return!1;u.value=!0;try{let t=await(0,r.copyRuns)(e.runs,{onError:c,theme:l});return t&&i?.(e),t}finally{u.value=!1}}async function m(e=!1){if(u.value||!s)return null;u.value=!0;try{if(navigator.clipboard&&navigator.clipboard.read){let t=await navigator.clipboard.read(),n=``,i=``;for(let e of t)e.types.includes(`text/html`)&&(n=await(await e.getType(`text/html`)).text()),e.types.includes(`text/plain`)&&(i=await(await e.getType(`text/plain`)).text());e&&(n=``);let s=(0,r.parseClipboardHtml)(n,i,o);return d.value=s,a?.(s,e),s}return null}catch(e){return c?.(e instanceof Error?e:Error(String(e))),null}finally{u.value=!1}}return{copy:f,cut:p,paste:m,isProcessing:u,lastPastedContent:d}}function f({comments:e,trackedChanges:n,showResolved:r,isAddingComment:i,addCommentYPosition:a}){return(0,t.computed)(()=>{let t=[];i?.value&&a?.value!=null&&t.push({id:`new-comment-input`,anchorPos:0,fixedY:a.value,priority:-1e3,isTemporary:!0,estimatedHeight:120,kind:`add-comment`});let o=new Map;for(let t of e.value)if(t.parentId!=null){let e=o.get(t.parentId);e?e.push(t):o.set(t.parentId,[t])}for(let n of e.value)n.parentId??(n.done&&!r?.value||t.push({id:`comment-${n.id}`,anchorPos:0,anchorKey:`comment-${n.id}`,priority:0,estimatedHeight:n.done?28:80,kind:`comment`,comment:n,replies:o.get(n.id)??[]}));return n.value.forEach((e,n)=>{t.push({id:`tc-${e.revisionId}-${n}`,anchorPos:e.from,anchorKey:`revision-${e.revisionId}`,priority:1,estimatedHeight:80,kind:`tracked-change`,change:e})}),t})}var p=40,m=12;function h({pagesContainer:e,onScrollExtendSelection:n}){let r=null,i=0,a=0,s=!1,c=null;function l(){if(c)return c;let t=e.value;return t?(c=(0,o.findVerticalScrollParent)(t),c):null}function u(){s=!1,r!==null&&(cancelAnimationFrame(r),r=null)}function d(){if(!s)return;let e=l();if(!e)return;let t=e.getBoundingClientRect(),o=0;if(a<t.top+p){let e=Math.max(0,t.top+p-a);o=-Math.min(m,e/p*m)}else if(a>t.bottom-p){let e=Math.max(0,a-(t.bottom-p));o=Math.min(m,e/p*m)}o!==0&&(e.scrollTop+=o,n(i,a)),r=requestAnimationFrame(d)}function f(){s||(s=!0,r=requestAnimationFrame(d))}function h(e,t){if(i=e,a=t,!s){let e=l();if(!e)return;let n=e.getBoundingClientRect();(t<n.top+p||t>n.bottom-p)&&f()}}return(0,t.onBeforeUnmount)(()=>u()),{updateMousePosition:h,stopAutoScroll:u}}function g(e={}){let n=(0,t.reactive)({isOpen:!1,searchText:``,replaceText:``,options:(0,s.createDefaultFindOptions)(),matches:[],currentIndex:0,replaceMode:e.initialReplaceMode??!1});function r(e){n.isOpen=!0,n.replaceMode=!1,e&&(n.searchText=e),n.matches=[],n.currentIndex=0}function i(e){n.isOpen=!0,n.replaceMode=!0,e&&(n.searchText=e),n.matches=[],n.currentIndex=0}function a(){n.isOpen=!1}function o(){n.isOpen=!n.isOpen}function c(e){n.searchText=e}function l(e){n.replaceText=e}function u(e){n.options={...n.options,...e}}function d(t,r=0){let i=Math.max(0,Math.min(r,t.length-1));n.matches=t,n.currentIndex=t.length>0?i:0,e.onMatchesChange?.(t),t.length>0?e.onCurrentMatchChange?.(t[i],i):e.onCurrentMatchChange?.(null,-1)}function f(){return n.matches.length===0?0:(n.currentIndex=(n.currentIndex+1)%n.matches.length,n.currentIndex)}function p(){return n.matches.length===0?0:(n.currentIndex=n.currentIndex===0?n.matches.length-1:n.currentIndex-1,n.currentIndex)}function m(e){n.matches.length===0||e<0||e>=n.matches.length||(n.currentIndex=e)}return{state:n,currentMatch:(0,t.computed)(()=>n.matches.length===0?null:n.matches[n.currentIndex]??null),hasMatches:(0,t.computed)(()=>n.matches.length>0),openFind:r,openReplace:i,close:a,toggle:o,setSearchText:c,setReplaceText:l,setOptions:u,setMatches:d,goToNextMatch:f,goToPreviousMatch:p,goToMatch:m}}function _({isOpen:e,onClose:n,align:r=`left`}){let i=(0,t.ref)(null),a=(0,t.ref)(null),o=(0,t.ref)({position:`fixed`,top:`0px`,left:`0px`,zIndex:1e4});function s(e,t){o.value={position:`fixed`,top:e+`px`,left:t+`px`,zIndex:1e4}}function c(e){let t=e.target;i.value&&!i.value.contains(t)&&a.value&&!a.value.contains(t)&&n()}function l(e){e.key===`Escape`&&n()}function u(){n()}function d(){document.addEventListener(`mousedown`,c),document.addEventListener(`keydown`,l),window.addEventListener(`scroll`,u,!0)}function f(){document.removeEventListener(`mousedown`,c),document.removeEventListener(`keydown`,l),window.removeEventListener(`scroll`,u,!0)}(0,t.watch)(e,e=>{if(!e){f();return}let t=i.value;if(!t)return;let n=t.getBoundingClientRect();r===`right`?requestAnimationFrame(()=>{let e=a.value;if(e){let t=e.getBoundingClientRect();s(n.bottom+4,n.right-t.width)}else s(n.bottom+4,n.left)}):s(n.bottom+4,n.left),d()}),(0,t.onBeforeUnmount)(f);function p(e){e.preventDefault(),e.stopPropagation()}return{containerRef:i,dropdownRef:a,dropdownStyle:o,handleMouseDown:p}}function v(e,r){let i=(0,t.computed)(()=>{r.value;let t=e.value;return t?(0,n.undoDepth)(t.state)>0:!1}),a=(0,t.computed)(()=>{r.value;let t=e.value;return t?(0,n.redoDepth)(t.state)>0:!1});function o(){let t=e.value;return t?(0,n.undo)(t.state,t.dispatch):!1}function s(){let t=e.value;return t?(0,n.redo)(t.state,t.dispatch):!1}return{canUndo:i,canRedo:a,undo:o,redo:s}}function y(e){let{containerRef:n,enabled:i=!0,config:a=r.DEFAULT_SELECTION_STYLE,useOverlay:o=!1,debounceMs:s=16,onSelectionChange:c}=e,l=(0,t.ref)(!1),u=(0,t.ref)(``),d=(0,t.ref)([]),f=(0,t.ref)(!1),p=null,m=0;function h(){let e=n.value,t=(0,r.hasActiveSelection)(),i=(0,r.getSelectedText)(),a=e?(0,r.isSelectionWithin)(e):!1;l.value=t,u.value=i,f.value=a,d.value=o&&a&&e?(0,r.getMergedSelectionRects)(e):[],c?.(t&&a,i)}function g(){h()}function _(){let e=performance.now();if(e-m<s){p&&clearTimeout(p),p=setTimeout(()=>{m=performance.now(),h(),p=null},s);return}m=e,h()}function v(e){return{position:`absolute`,left:e.left+`px`,top:e.top+`px`,width:e.width+`px`,height:e.height+`px`,backgroundColor:a.backgroundColor,borderRadius:a.borderRadius?a.borderRadius+`px`:void 0,border:a.borderColor?`1px solid ${a.borderColor}`:void 0,zIndex:a.zIndex??0,pointerEvents:`none`}}return(0,t.onMounted)(()=>{i&&((0,r.areSelectionStylesInjected)()||(0,r.injectSelectionStyles)(a),document.addEventListener(`selectionchange`,_))}),(0,t.onBeforeUnmount)(()=>{document.removeEventListener(`selectionchange`,_),p&&clearTimeout(p)}),(0,t.watch)(n,()=>h()),{hasSelection:(0,t.computed)(()=>l.value),selectedText:(0,t.computed)(()=>u.value),highlightRects:(0,t.computed)(()=>d.value),isSelectionInContainer:(0,t.computed)(()=>f.value),refresh:g,getOverlayStyle:v}}function b(){let e=new c.TableSelectionManager,n=(0,t.ref)(null),r=()=>{n.value=e.getSnapshot().selectedCell},i=e.subscribe(r);r(),(0,t.onBeforeUnmount)(()=>{i()});function a(t,n,r){e.selectCell({tableIndex:t,rowIndex:n,columnIndex:r})}function o(t,n){let r=(0,c.findTableFromClick)(t,n);r?e.selectCell(r):e.clearSelection()}function s(){e.clearSelection()}function l(t,n,r){return e.isCellSelected(t,n,r)}return{selectedCell:n,handleCellClick:a,handleClickTarget:o,clearSelection:s,isCellSelected:l}}function x(e,n){return(0,t.computed)(()=>(n.value,(0,i.extractTrackedChanges)(e.value?.state??null)))}function S(e){let t=(0,l.createVisualLineState)();function n(t){let n=e.value;return n?(0,l.getCaretClientX)(n,t):null}function r(t){let n=e.value;return n?(0,l.findLineElementAtPosition)(n,t):null}function i(e,t){return(0,l.findPositionOnLineAtClientX)(e,t)}function a(n,r){return(0,l.handleVisualLineKeyDown)(t,n,r,e.value)}return{state:t,getCaretClientX:n,findLineElementAtPosition:r,findPositionOnLineAtClientX:i,handlePMKeyDown:a}}exports.createSelectionFromDOM=a.createSelectionFromDOM,exports.extractTrackedChanges=i.extractTrackedChanges,exports.formatLastSaveTime=a.formatLastSaveTime,exports.formatStorageSize=a.formatStorageSize,exports.getAutoSaveStatusLabel=a.getAutoSaveStatusLabel,exports.getAutoSaveStorageSize=a.getAutoSaveStorageSize,exports.getSelectionRuns=a.getSelectionRuns,exports.isAutoSaveSupported=a.isAutoSaveSupported,exports.runsToClipboardContent=r.runsToClipboardContent,exports.useAutoSave=u,exports.useClipboard=d,exports.useCommentSidebarItems=f,exports.useDocxEditor=e.r,exports.useDragAutoScroll=h,exports.useFindReplace=g,exports.useFixedDropdown=_,exports.useHistory=v,exports.useSelectionHighlight=y,exports.useTableResize=e.t,exports.useTableSelection=b,exports.useTrackedChanges=x,exports.useVisualLineNavigation=S,exports.useWheelZoom=e.n,exports.useZoom=e.n;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./useTableResize-DdCQkdXr.cjs`);let t=require(`vue`),n=require(`prosemirror-history`),r=require(`@eigenpal/docx-editor-core/utils`),i=require(`@eigenpal/docx-editor-core/prosemirror/utils/extractTrackedChanges`),a=require(`@eigenpal/docx-editor-core`),o=require(`@eigenpal/docx-editor-core/utils/findVerticalScrollParent`),s=require(`@eigenpal/docx-editor-core/utils/findReplace`),c=require(`@eigenpal/docx-editor-core/managers/TableSelectionManager`),l=require(`@eigenpal/docx-editor-core/prosemirror/utils/visualLineNavigation`);function u(e,n={}){let r=(0,t.ref)(`idle`),i=(0,t.ref)(null),o=(0,t.ref)(!1),s=(0,t.ref)(!0),{storageKey:c,interval:l,enabled:u=!0,maxAge:d,onSave:f,onError:p,onRecoveryAvailable:m,saveOnChange:h,debounceDelay:g}=n;if(!(0,a.isAutoSaveSupported)())return{status:r,lastSaveTime:i,hasRecoveryData:o,isEnabled:s,save:async()=>!1,clearAutoSave:()=>{},getRecoveryData:()=>null,acceptRecovery:()=>null,dismissRecovery:()=>{},enable:()=>{},disable:()=>{}};let _=new a.AutoSaveManager({storageKey:c,interval:l,maxAge:d,saveOnChange:h,debounceDelay:g,onSave:f,onError:p,onRecoveryAvailable:m}),v=()=>{let e=_.getSnapshot();r.value=e.status,i.value=e.lastSaveTime,o.value=e.hasRecoveryData,s.value=e.isEnabled},y=_.subscribe(v);u?_.enable():_.disable(),v(),(0,t.watch)(()=>(0,t.unref)(e),e=>_.onDocumentChanged(e??null),{immediate:!0});function b(){return _.save()}function x(){_.clear()}function S(){return _.getRecoveryData()}function C(){return _.acceptRecovery()}function w(){_.dismissRecovery()}function T(){_.enable()}function E(){_.disable()}return(0,t.onBeforeUnmount)(()=>{y(),_.destroy()}),{status:r,lastSaveTime:i,hasRecoveryData:o,isEnabled:s,save:b,clearAutoSave:x,getRecoveryData:S,acceptRecovery:C,dismissRecovery:w,enable:T,disable:E}}function d(e={}){let{onCopy:n,onCut:i,onPaste:a,cleanWordFormatting:o=!0,editable:s=!0,onError:c,theme:l}=e,u=(0,t.ref)(!1),d=(0,t.ref)(null);async function f(e){if(u.value)return!1;u.value=!0;try{let t=await(0,r.copyRuns)(e.runs,{onError:c,theme:l});return t&&n?.(e),t}finally{u.value=!1}}async function p(e){if(u.value||!s)return!1;u.value=!0;try{let t=await(0,r.copyRuns)(e.runs,{onError:c,theme:l});return t&&i?.(e),t}finally{u.value=!1}}async function m(e=!1){if(u.value||!s)return null;u.value=!0;try{if(navigator.clipboard&&navigator.clipboard.read){let t=await navigator.clipboard.read(),n=``,i=``;for(let e of t)e.types.includes(`text/html`)&&(n=await(await e.getType(`text/html`)).text()),e.types.includes(`text/plain`)&&(i=await(await e.getType(`text/plain`)).text());e&&(n=``);let s=(0,r.parseClipboardHtml)(n,i,o);return d.value=s,a?.(s,e),s}return null}catch(e){return c?.(e instanceof Error?e:Error(String(e))),null}finally{u.value=!1}}return{copy:f,cut:p,paste:m,isProcessing:u,lastPastedContent:d}}function f({comments:e,trackedChanges:n,showResolved:r,isAddingComment:i,addCommentYPosition:a}){return(0,t.computed)(()=>{let t=[];i?.value&&a?.value!=null&&t.push({id:`new-comment-input`,anchorPos:0,fixedY:a.value,priority:-1e3,isTemporary:!0,estimatedHeight:120,kind:`add-comment`});let o=new Map;for(let t of e.value)if(t.parentId!=null){let e=o.get(t.parentId);e?e.push(t):o.set(t.parentId,[t])}for(let n of e.value)n.parentId??(n.done&&!r?.value||t.push({id:`comment-${n.id}`,anchorPos:0,anchorKey:`comment-${n.id}`,priority:0,estimatedHeight:n.done?28:80,kind:`comment`,comment:n,replies:o.get(n.id)??[]}));return n.value.forEach((e,n)=>{t.push({id:`tc-${e.revisionId}-${n}`,anchorPos:e.from,anchorKey:`revision-${e.revisionId}`,priority:1,estimatedHeight:80,kind:`tracked-change`,change:e})}),t})}var p=40,m=12;function h({pagesContainer:e,onScrollExtendSelection:n}){let r=null,i=0,a=0,s=!1,c=null;function l(){if(c)return c;let t=e.value;return t?(c=(0,o.findVerticalScrollParent)(t),c):null}function u(){s=!1,r!==null&&(cancelAnimationFrame(r),r=null)}function d(){if(!s)return;let e=l();if(!e)return;let t=e.getBoundingClientRect(),o=0;if(a<t.top+p){let e=Math.max(0,t.top+p-a);o=-Math.min(m,e/p*m)}else if(a>t.bottom-p){let e=Math.max(0,a-(t.bottom-p));o=Math.min(m,e/p*m)}o!==0&&(e.scrollTop+=o,n(i,a)),r=requestAnimationFrame(d)}function f(){s||(s=!0,r=requestAnimationFrame(d))}function h(e,t){if(i=e,a=t,!s){let e=l();if(!e)return;let n=e.getBoundingClientRect();(t<n.top+p||t>n.bottom-p)&&f()}}return(0,t.onBeforeUnmount)(()=>u()),{updateMousePosition:h,stopAutoScroll:u}}function g(e={}){let n=(0,t.reactive)({isOpen:!1,searchText:``,replaceText:``,options:(0,s.createDefaultFindOptions)(),matches:[],currentIndex:0,replaceMode:e.initialReplaceMode??!1});function r(e){n.isOpen=!0,n.replaceMode=!1,e&&(n.searchText=e),n.matches=[],n.currentIndex=0}function i(e){n.isOpen=!0,n.replaceMode=!0,e&&(n.searchText=e),n.matches=[],n.currentIndex=0}function a(){n.isOpen=!1}function o(){n.isOpen=!n.isOpen}function c(e){n.searchText=e}function l(e){n.replaceText=e}function u(e){n.options={...n.options,...e}}function d(t,r=0){let i=Math.max(0,Math.min(r,t.length-1));n.matches=t,n.currentIndex=t.length>0?i:0,e.onMatchesChange?.(t),t.length>0?e.onCurrentMatchChange?.(t[i],i):e.onCurrentMatchChange?.(null,-1)}function f(){return n.matches.length===0?0:(n.currentIndex=(n.currentIndex+1)%n.matches.length,n.currentIndex)}function p(){return n.matches.length===0?0:(n.currentIndex=n.currentIndex===0?n.matches.length-1:n.currentIndex-1,n.currentIndex)}function m(e){n.matches.length===0||e<0||e>=n.matches.length||(n.currentIndex=e)}return{state:n,currentMatch:(0,t.computed)(()=>n.matches.length===0?null:n.matches[n.currentIndex]??null),hasMatches:(0,t.computed)(()=>n.matches.length>0),openFind:r,openReplace:i,close:a,toggle:o,setSearchText:c,setReplaceText:l,setOptions:u,setMatches:d,goToNextMatch:f,goToPreviousMatch:p,goToMatch:m}}function _({isOpen:e,onClose:n,align:r=`left`}){let i=(0,t.ref)(null),a=(0,t.ref)(null),o=(0,t.ref)({position:`fixed`,top:`0px`,left:`0px`,zIndex:1e4});function s(e,t){o.value={position:`fixed`,top:e+`px`,left:t+`px`,zIndex:1e4}}function c(e){let t=e.target;i.value&&!i.value.contains(t)&&a.value&&!a.value.contains(t)&&n()}function l(e){e.key===`Escape`&&n()}function u(){n()}function d(){document.addEventListener(`mousedown`,c),document.addEventListener(`keydown`,l),window.addEventListener(`scroll`,u,!0)}function f(){document.removeEventListener(`mousedown`,c),document.removeEventListener(`keydown`,l),window.removeEventListener(`scroll`,u,!0)}(0,t.watch)(e,e=>{if(!e){f();return}let t=i.value;if(!t)return;let n=t.getBoundingClientRect();r===`right`?requestAnimationFrame(()=>{let e=a.value;if(e){let t=e.getBoundingClientRect();s(n.bottom+4,n.right-t.width)}else s(n.bottom+4,n.left)}):s(n.bottom+4,n.left),d()}),(0,t.onBeforeUnmount)(f);function p(e){e.preventDefault(),e.stopPropagation()}return{containerRef:i,dropdownRef:a,dropdownStyle:o,handleMouseDown:p}}function v(e,r){let i=(0,t.computed)(()=>{r.value;let t=e.value;return t?(0,n.undoDepth)(t.state)>0:!1}),a=(0,t.computed)(()=>{r.value;let t=e.value;return t?(0,n.redoDepth)(t.state)>0:!1});function o(){let t=e.value;return t?(0,n.undo)(t.state,t.dispatch):!1}function s(){let t=e.value;return t?(0,n.redo)(t.state,t.dispatch):!1}return{canUndo:i,canRedo:a,undo:o,redo:s}}function y(e){let{containerRef:n,enabled:i=!0,config:a=r.DEFAULT_SELECTION_STYLE,useOverlay:o=!1,debounceMs:s=16,onSelectionChange:c}=e,l=(0,t.ref)(!1),u=(0,t.ref)(``),d=(0,t.ref)([]),f=(0,t.ref)(!1),p=null,m=0;function h(){let e=n.value,t=(0,r.hasActiveSelection)(),i=(0,r.getSelectedText)(),a=e?(0,r.isSelectionWithin)(e):!1;l.value=t,u.value=i,f.value=a,d.value=o&&a&&e?(0,r.getMergedSelectionRects)(e):[],c?.(t&&a,i)}function g(){h()}function _(){let e=performance.now();if(e-m<s){p&&clearTimeout(p),p=setTimeout(()=>{m=performance.now(),h(),p=null},s);return}m=e,h()}function v(e){return{position:`absolute`,left:e.left+`px`,top:e.top+`px`,width:e.width+`px`,height:e.height+`px`,backgroundColor:a.backgroundColor,borderRadius:a.borderRadius?a.borderRadius+`px`:void 0,border:a.borderColor?`1px solid ${a.borderColor}`:void 0,zIndex:a.zIndex??0,pointerEvents:`none`}}return(0,t.onMounted)(()=>{i&&((0,r.areSelectionStylesInjected)()||(0,r.injectSelectionStyles)(a),document.addEventListener(`selectionchange`,_))}),(0,t.onBeforeUnmount)(()=>{document.removeEventListener(`selectionchange`,_),p&&clearTimeout(p)}),(0,t.watch)(n,()=>h()),{hasSelection:(0,t.computed)(()=>l.value),selectedText:(0,t.computed)(()=>u.value),highlightRects:(0,t.computed)(()=>d.value),isSelectionInContainer:(0,t.computed)(()=>f.value),refresh:g,getOverlayStyle:v}}function b(){let e=new c.TableSelectionManager,n=(0,t.ref)(null),r=()=>{n.value=e.getSnapshot().selectedCell},i=e.subscribe(r);r(),(0,t.onBeforeUnmount)(()=>{i()});function a(t,n,r){e.selectCell({tableIndex:t,rowIndex:n,columnIndex:r})}function o(t,n){let r=(0,c.findTableFromClick)(t,n);r?e.selectCell(r):e.clearSelection()}function s(){e.clearSelection()}function l(t,n,r){return e.isCellSelected(t,n,r)}return{selectedCell:n,handleCellClick:a,handleClickTarget:o,clearSelection:s,isCellSelected:l}}function x(e,n){return(0,t.computed)(()=>(n.value,(0,i.extractTrackedChanges)(e.value?.state??null)))}function S(e){let t=(0,l.createVisualLineState)();function n(t){let n=e.value;return n?(0,l.getCaretClientX)(n,t):null}function r(t){let n=e.value;return n?(0,l.findLineElementAtPosition)(n,t):null}function i(e,t){return(0,l.findPositionOnLineAtClientX)(e,t)}function a(n,r){return(0,l.handleVisualLineKeyDown)(t,n,r,e.value)}return{state:t,getCaretClientX:n,findLineElementAtPosition:r,findPositionOnLineAtClientX:i,handlePMKeyDown:a}}exports.createSelectionFromDOM=a.createSelectionFromDOM,exports.extractTrackedChanges=i.extractTrackedChanges,exports.formatLastSaveTime=a.formatLastSaveTime,exports.formatStorageSize=a.formatStorageSize,exports.getAutoSaveStatusLabel=a.getAutoSaveStatusLabel,exports.getAutoSaveStorageSize=a.getAutoSaveStorageSize,exports.getSelectionRuns=a.getSelectionRuns,exports.isAutoSaveSupported=a.isAutoSaveSupported,exports.runsToClipboardContent=r.runsToClipboardContent,exports.useAutoSave=u,exports.useClipboard=d,exports.useCommentSidebarItems=f,exports.useDocxEditor=e.r,exports.useDragAutoScroll=h,exports.useFindReplace=g,exports.useFixedDropdown=_,exports.useHistory=v,exports.useSelectionHighlight=y,exports.useTableResize=e.t,exports.useTableSelection=b,exports.useTrackedChanges=x,exports.useVisualLineNavigation=S,exports.useWheelZoom=e.n,exports.useZoom=e.n;
@@ -1,4 +1,4 @@
1
- import { n as e, r as t, t as n } from "./useTableResize-1oSe9Kjk.js";
1
+ import { n as e, r as t, t as n } from "./useTableResize-CGoGUnyP.js";
2
2
  import { computed as r, onBeforeUnmount as i, onMounted as a, reactive as o, ref as s, unref as c, watch as l } from "vue";
3
3
  import { redo as u, redoDepth as d, undo as f, undoDepth as p } from "prosemirror-history";
4
4
  import { DEFAULT_SELECTION_STYLE as m, areSelectionStylesInjected as h, copyRuns as g, getMergedSelectionRects as _, getSelectedText as v, hasActiveSelection as y, injectSelectionStyles as b, isSelectionWithin as x, parseClipboardHtml as S, runsToClipboardContent as C } from "@eigenpal/docx-editor-core/utils";
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./KeyboardShortcutsDialog-D72k5DXR.cjs`),t=require(`./MenuBar-BrQW4COn.cjs`),n=require(`./_plugin-vue_export-helper-CX7YVcP6.cjs`),r=require(`./zIndex-CH0jZ7U7.cjs`),i=require(`./useTableResize-lWdIgX9x.cjs`);let a=require(`vue`),o=require(`@eigenpal/docx-editor-core/prosemirror/commands/formatting`),s=require(`@eigenpal/docx-editor-core/utils`),c=require(`@eigenpal/docx-editor-core/prosemirror/extensions/nodes/TableExtension`),l=require(`prosemirror-state`),u=require(`@eigenpal/docx-editor-core/layout-bridge/clickToPositionDom`),d=require(`@eigenpal/docx-editor-core/layout-painter`),f=require(`prosemirror-view`),p=require(`@eigenpal/docx-editor-core/prosemirror/schema`),m=require(`@eigenpal/docx-editor-core/prosemirror/conversion`);require(`prosemirror-view/style/prosemirror.css`);let h=require(`@eigenpal/docx-editor-core/utils/units`),g=require(`@eigenpal/docx-editor-core/layout-bridge`),_=require(`@eigenpal/docx-editor-core/layout-engine`),v=require(`@eigenpal/docx-editor-core/prosemirror/commands/paragraph`),y=require(`@eigenpal/docx-editor-core/prosemirror/styles`),b=require(`@eigenpal/docx-editor-core/prosemirror/commands/pageBreak`),x=require(`@eigenpal/docx-editor-core/utils/highlightColors`),S=require(`@eigenpal/docx-editor-core/utils/headingCollector`),C=require(`@eigenpal/docx-editor-core/prosemirror/commands`),w=require(`@eigenpal/docx-editor-core/prosemirror/utils/extractTrackedChanges`),T=require(`@eigenpal/docx-editor-core/layout-bridge/tableInsertHover`),E=require(`@eigenpal/docx-editor-core/utils/reportIssue`),D=require(`@eigenpal/docx-editor-core/prosemirror`),O=require(`@eigenpal/docx-editor-core`),k=require(`@eigenpal/docx-editor-core/plugin-api/RenderedDomContext`);function A(e,t){if(!t.trim())return null;let n=null;return e.descendants((e,r)=>n?!1:e.isTextblock&&e.attrs?.paraId===t?(n={from:r,to:r+e.nodeSize},!1):!0),n}function j(e){let t=[];return e.descendants(e=>!e.isText||!e.text?!0:e.marks.some(e=>e.type.name===`insertion`)?!1:(t.push(e.text),!0)),t.join(``)}function M(e,t,n){if(t>=n)return``;let r=[];return e.nodesBetween(t,n,(e,i)=>{if(!e.isText||!e.text||e.marks.some(e=>e.type.name===`insertion`))return;let a=Math.max(t,i),o=Math.min(n,i+e.text.length);a<o&&r.push(e.text.slice(a-i,o-i))}),r.join(``)}function N(e,t,n,r){if(!r)return null;let i=``,a=[];e.nodesBetween(t,n,(e,t)=>{!e.isText||!e.text||e.marks.some(e=>e.type.name===`insertion`)||(a.push({pos:t,len:e.text.length}),i+=e.text)});let o=i.indexOf(r);if(o===-1||i.indexOf(r,o+1)!==-1)return null;let s=0,c=t,l=t;for(let e of a){let t=s+e.len;if(s<=o&&o<t&&(c=e.pos+(o-s)),s<=o+r.length&&o+r.length<=t){l=e.pos+(o+r.length-s);break}s=t}return{from:c,to:l}}function P(e,t,n){if(!e||!t)return[];let r=n?.caseSensitive??!1,i=n?.limit??20,a=r?t:t.toLowerCase(),o=[];return e.state.doc.descendants(e=>{if(o.length>=i)return!1;if(!e.isTextblock)return!0;let n=e.attrs?.paraId;if(!n)return!1;let s=j(e),c=r?s:s.toLowerCase(),l=c.indexOf(a);return l===-1||c.indexOf(a,l+1)!==-1||o.push({paraId:n,match:s.slice(l,l+t.length),before:s.slice(Math.max(0,l-40),l),after:s.slice(l+t.length,l+t.length+40)}),!1}),o}function ee(e){if(!e)return null;let{selection:t,doc:n}=e.state,r=t.$from,i=r.depth;for(;i>0&&!r.node(i).isTextblock;)i--;let a=i>0?r.node(i):null;if(!a)return null;let o=a.attrs?.paraId??null,s=r.start(i),c=s+a.content.size,l=M(n,s,t.from),u=M(n,t.from,t.to),d=M(n,t.to,c);return{paraId:o,selectedText:u,paragraphText:l+u+d,before:l,after:d}}function te(e,t,n){if(!t||!e)return null;let r=t.pages[n-1];if(!r)return null;let i=new Set,a=[];for(let t of r.fragments){if(t.kind!==`paragraph`)continue;let n=t.pmStart;if(n==null)continue;let r=e.state.doc.nodeAt(n);if(!r||!r.isTextblock)continue;let o=r.attrs?.paraId;!o||i.has(o)||(i.add(o),a.push({paraId:o,text:j(r),styleId:r.attrs?.styleId??void 0}))}return{pageNumber:n,text:a.map(e=>`[${e.paraId}] ${e.text}`).join(`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./KeyboardShortcutsDialog-D72k5DXR.cjs`),t=require(`./MenuBar-BrQW4COn.cjs`),n=require(`./_plugin-vue_export-helper-CX7YVcP6.cjs`),r=require(`./zIndex-CH0jZ7U7.cjs`),i=require(`./useTableResize-DdCQkdXr.cjs`);let a=require(`vue`),o=require(`@eigenpal/docx-editor-core/prosemirror/commands/formatting`),s=require(`@eigenpal/docx-editor-core/utils`),c=require(`@eigenpal/docx-editor-core/prosemirror/extensions/nodes/TableExtension`),l=require(`prosemirror-state`),u=require(`@eigenpal/docx-editor-core/layout-bridge/clickToPositionDom`),d=require(`@eigenpal/docx-editor-core/layout-painter`),f=require(`prosemirror-view`),p=require(`@eigenpal/docx-editor-core/prosemirror/schema`),m=require(`@eigenpal/docx-editor-core/prosemirror/conversion`);require(`prosemirror-view/style/prosemirror.css`);let h=require(`@eigenpal/docx-editor-core/utils/units`),g=require(`@eigenpal/docx-editor-core/layout-bridge`),_=require(`@eigenpal/docx-editor-core/layout-engine`),v=require(`@eigenpal/docx-editor-core/prosemirror/commands/paragraph`),y=require(`@eigenpal/docx-editor-core/prosemirror/styles`),b=require(`@eigenpal/docx-editor-core/prosemirror/commands/pageBreak`),x=require(`@eigenpal/docx-editor-core/utils/highlightColors`),S=require(`@eigenpal/docx-editor-core/utils/headingCollector`),C=require(`@eigenpal/docx-editor-core/prosemirror/commands`),w=require(`@eigenpal/docx-editor-core/prosemirror/utils/extractTrackedChanges`),T=require(`@eigenpal/docx-editor-core/layout-bridge/tableInsertHover`),E=require(`@eigenpal/docx-editor-core/utils/reportIssue`),D=require(`@eigenpal/docx-editor-core/prosemirror`),O=require(`@eigenpal/docx-editor-core`),k=require(`@eigenpal/docx-editor-core/plugin-api/RenderedDomContext`);function A(e,t){if(!t.trim())return null;let n=null;return e.descendants((e,r)=>n?!1:e.isTextblock&&e.attrs?.paraId===t?(n={from:r,to:r+e.nodeSize},!1):!0),n}function j(e){let t=[];return e.descendants(e=>!e.isText||!e.text?!0:e.marks.some(e=>e.type.name===`insertion`)?!1:(t.push(e.text),!0)),t.join(``)}function M(e,t,n){if(t>=n)return``;let r=[];return e.nodesBetween(t,n,(e,i)=>{if(!e.isText||!e.text||e.marks.some(e=>e.type.name===`insertion`))return;let a=Math.max(t,i),o=Math.min(n,i+e.text.length);a<o&&r.push(e.text.slice(a-i,o-i))}),r.join(``)}function N(e,t,n,r){if(!r)return null;let i=``,a=[];e.nodesBetween(t,n,(e,t)=>{!e.isText||!e.text||e.marks.some(e=>e.type.name===`insertion`)||(a.push({pos:t,len:e.text.length}),i+=e.text)});let o=i.indexOf(r);if(o===-1||i.indexOf(r,o+1)!==-1)return null;let s=0,c=t,l=t;for(let e of a){let t=s+e.len;if(s<=o&&o<t&&(c=e.pos+(o-s)),s<=o+r.length&&o+r.length<=t){l=e.pos+(o+r.length-s);break}s=t}return{from:c,to:l}}function P(e,t,n){if(!e||!t)return[];let r=n?.caseSensitive??!1,i=n?.limit??20,a=r?t:t.toLowerCase(),o=[];return e.state.doc.descendants(e=>{if(o.length>=i)return!1;if(!e.isTextblock)return!0;let n=e.attrs?.paraId;if(!n)return!1;let s=j(e),c=r?s:s.toLowerCase(),l=c.indexOf(a);return l===-1||c.indexOf(a,l+1)!==-1||o.push({paraId:n,match:s.slice(l,l+t.length),before:s.slice(Math.max(0,l-40),l),after:s.slice(l+t.length,l+t.length+40)}),!1}),o}function ee(e){if(!e)return null;let{selection:t,doc:n}=e.state,r=t.$from,i=r.depth;for(;i>0&&!r.node(i).isTextblock;)i--;let a=i>0?r.node(i):null;if(!a)return null;let o=a.attrs?.paraId??null,s=r.start(i),c=s+a.content.size,l=M(n,s,t.from),u=M(n,t.from,t.to),d=M(n,t.to,c);return{paraId:o,selectedText:u,paragraphText:l+u+d,before:l,after:d}}function te(e,t,n){if(!t||!e)return null;let r=t.pages[n-1];if(!r)return null;let i=new Set,a=[];for(let t of r.fragments){if(t.kind!==`paragraph`)continue;let n=t.pmStart;if(n==null)continue;let r=e.state.doc.nodeAt(n);if(!r||!r.isTextblock)continue;let o=r.attrs?.paraId;!o||i.has(o)||(i.add(o),a.push({paraId:o,text:j(r),styleId:r.attrs?.styleId??void 0}))}return{pageNumber:n,text:a.map(e=>`[${e.paraId}] ${e.text}`).join(`
2
2
  `),paragraphs:a}}var ne=(0,a.defineComponent)({__name:`DecorationLayer`,props:{getView:{type:Function},getPagesContainer:{type:Function},zoom:{},transactionVersion:{},syncCoordinator:{}},setup(e){let t=e,n=(0,a.ref)(null),r=(0,a.ref)(0),i=null,o=null;function s(){i!==null&&cancelAnimationFrame(i),i=requestAnimationFrame(()=>{i=null;let e=t.getView(),r=t.getPagesContainer(),a=n.value;!e||!r||!a||t.syncCoordinator.isSafeToRender()&&c(e,r,a,t.zoom)})}(0,a.onMounted)(()=>{o=t.syncCoordinator.onRender(()=>{r.value++}),s()}),(0,a.onBeforeUnmount)(()=>{i!==null&&(cancelAnimationFrame(i),i=null),o?.()}),(0,a.watch)(()=>[t.zoom,t.transactionVersion,r.value],()=>s());function c(e,t,n,r){let i=l(e.state);if(i.length===0){n.firstChild&&n.replaceChildren();return}let a=(0,k.createRenderedDomContext)(t,r),o=a.getContainerOffset(),s=document.createDocumentFragment();for(let{decoration:t,from:n,to:r}of i){if(n===r){let r=u(t,e);if(!r)continue;let i=a.getCoordinatesForPosition(n);if(!i)continue;let c=document.createElement(`div`);c.style.cssText=`position:absolute;left:${i.x+o.x}px;top:${i.y+o.y}px;height:${i.height}px;`,c.appendChild(r),s.appendChild(c);continue}let i=d(t);if(!i)continue;let c=a.getRectsForRange(n,r);for(let e of c){let t=document.createElement(`div`);for(let[e,n]of Object.entries(i))e!==`nodeName`&&t.setAttribute(e,n);let n=`position:absolute;left:${e.x+o.x}px;top:${e.y+o.y}px;width:${e.width}px;height:${e.height}px;`;t.style.cssText=n+(i.style??``),s.appendChild(t)}}n.replaceChildren(s)}function l(e){let t=[];for(let n of e.plugins){let r=n.props.decorations;if(!r)continue;let i=r.call(n,e);i&&i.forEachSet(e=>{e.find().forEach(e=>{e.spec?.noOverlay||t.push({decoration:e,from:e.from,to:e.to})})})}return t}function u(e,t){let n=e.type;if(!n)return null;let r=n.toDOM;return typeof r==`function`?r(t,()=>e.from):r instanceof HTMLElement?r.cloneNode(!0):null}function d(e){return e.type?.attrs??null}return(e,t)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{ref_key:`overlayRef`,ref:n,class:`paged-editor__decoration-overlay`,"aria-hidden":`true`},null,512))}}),F=[`data-handle`,`onMousedown`],re=[`title`],ie={key:0,class:`image-overlay__dim`},ae={key:1,class:`image-overlay__dim image-overlay__dim--rotate`},oe=4,se=15,ce=(0,a.defineComponent)({__name:`ImageSelectionOverlay`,props:{imageInfo:{},zoom:{},view:{}},emits:[`deselect`,`interact-start`,`interact-end`,`context-menu`],setup(t,{emit:n}){let{t:i}=e.d(),o=t,c=n,f=(0,a.ref)(null),p=(0,a.ref)(!1),m=(0,a.ref)(!1),h=(0,a.ref)(!1),g=(0,a.ref)(0),_=(0,a.ref)(0),v=(0,a.ref)(0),y=(0,a.ref)(null),b=`se`,x=0,S=0,C=0,w=0,T=null,E=null,D=null,O=null;function k(e,t){if(!e)return null;try{let n=e.state.doc.nodeAt(t);return n&&n.type.name===`image`?n:null}catch{return null}}function A(){let e=o.imageInfo;if(!e)return null;if(e.element.isConnected)return e.element;let t=f.value?.closest(`.docx-editor-vue__pages-viewport`)?.querySelector(`.docx-editor-vue__pages`);if(!t)return null;for(let n of t.querySelectorAll(`[data-pm-start="${e.pmPos}"]`)){let e=(0,d.findImageElement)(n);if(e)return e}return null}function j(){let e=A();if(!e||!f.value){y.value=null;return}let t=f.value.offsetParent;if(!t){y.value=null;return}let n=t.getBoundingClientRect(),r=e.getBoundingClientRect(),i=o.zoom;y.value={left:(r.left-n.left)/i,top:(r.top-n.top)/i,width:r.width/i,height:r.height/i}}(0,a.watch)(()=>o.imageInfo,async()=>{await(0,a.nextTick)(),j()},{immediate:!0}),(0,a.watch)(()=>o.imageInfo,(e,t,n)=>{if(!o.imageInfo)return;let r=()=>{E&&cancelAnimationFrame(E),E=requestAnimationFrame(j)},i=f.value?.closest(`.docx-editor-vue__pages-viewport`)?.parentElement;i?.addEventListener(`scroll`,r,{passive:!0}),window.addEventListener(`resize`,r,{passive:!0}),n(()=>{i?.removeEventListener(`scroll`,r),window.removeEventListener(`resize`,r),E&&cancelAnimationFrame(E)})},{immediate:!0});let M=(0,a.computed)(()=>p.value?g.value:y.value?.width||0),N=(0,a.computed)(()=>p.value?_.value:y.value?.height||0),P=(0,a.computed)(()=>{let e=y.value;if(!e)return{position:`absolute`,top:`0px`,left:`0px`,visibility:`hidden`,pointerEvents:`none`};let t=p.value?g.value:e.width,n=p.value?_.value:e.height;return{position:`absolute`,left:`${e.left}px`,top:`${e.top}px`,width:`${t}px`,height:`${n}px`,zIndex:r.t.imageOverlay,pointerEvents:`auto`}}),ee=(0,a.computed)(()=>{let e=M.value,t=N.value,n=`${e/2-5}px`,r=`${t/2-5}px`,i=`${e-5}px`,a=`${t-5}px`,o=`-5px`;return[{pos:`nw`,style:{left:o,top:o,cursor:`nwse-resize`}},{pos:`n`,style:{left:n,top:o,cursor:`ns-resize`}},{pos:`ne`,style:{left:i,top:o,cursor:`nesw-resize`}},{pos:`e`,style:{left:i,top:r,cursor:`ew-resize`}},{pos:`se`,style:{left:i,top:a,cursor:`nwse-resize`}},{pos:`s`,style:{left:n,top:a,cursor:`ns-resize`}},{pos:`sw`,style:{left:o,top:a,cursor:`nesw-resize`}},{pos:`w`,style:{left:o,top:r,cursor:`ew-resize`}}]}),te=e=>e.length===2;function ne(e,t,n,r,i,a){let o=e.includes(`w`)?-1:+!!e.includes(`e`),s=e.includes(`n`)?-1:+!!e.includes(`s`),c=r+t*o,l=i+n*s;if(te(e)&&a){let e=Math.max(c/r,l/i);c=r*e,l=i*e}return{width:o===0?r:Math.max(20,Math.min(2e3,c)),height:s===0?i:Math.max(20,Math.min(2e3,l))}}function ce(e,t){!o.imageInfo||!y.value||(b=t,x=e.clientX,S=e.clientY,C=y.value.width,w=y.value.height,T={...y.value},g.value=Math.round(C),_.value=Math.round(w),p.value=!0,c(`interact-start`),document.addEventListener(`mousemove`,le),document.addEventListener(`mouseup`,I))}function le(e){let t=o.zoom,n=(e.clientX-x)/t,r=(e.clientY-S)/t,i=!e.shiftKey,a=ne(b,n,r,C,w,i);g.value=Math.round(a.width),_.value=Math.round(a.height);let s=T;s&&(y.value={left:b.includes(`w`)?s.left+(s.width-a.width):s.left,top:b.includes(`n`)?s.top+(s.height-a.height):s.top,width:s.width,height:s.height})}function I(){document.removeEventListener(`mousemove`,le),document.removeEventListener(`mouseup`,I),p.value=!1,T=null,c(`interact-end`);let e=o.view,t=o.imageInfo;if(!e||!t){j();return}let n=k(e,t.pmPos);if(n)try{e.dispatch(e.state.tr.setNodeMarkup(t.pmPos,void 0,{...n.attrs,width:g.value,height:_.value}))}catch{}(0,a.nextTick)(()=>j())}let ue=0,de=0,fe=0,L=0,R=null,z=null;function pe(e){if(!e)return 0;let t=e.match(/rotate\((-?\d+(?:\.\d+)?)deg\)/);return t?parseFloat(t[1]):0}function B(e,t){let n=/scaleX\(-1\)/.test(e||``),r=/scaleY\(-1\)/.test(e||``),i=[],a=(t%360+360)%360;return a!==0&&i.push(`rotate(${a}deg)`),n&&i.push(`scaleX(-1)`),r&&i.push(`scaleY(-1)`),i.length>0?i.join(` `):null}function V(e,t){return Math.atan2(e-ue,-(t-de))*180/Math.PI}function me(e){if(!o.imageInfo)return;let t=o.imageInfo.element.getBoundingClientRect();ue=t.left+t.width/2,de=t.top+t.height/2;let n=k(o.view,o.imageInfo.pmPos);R=n&&n.attrs.transform||null,L=pe(R),z=o.imageInfo.element.querySelector(`img`),fe=V(e.clientX,e.clientY),v.value=L,h.value=!0,c(`interact-start`),document.addEventListener(`mousemove`,H),document.addEventListener(`mouseup`,U)}function H(e){let t=V(e.clientX,e.clientY)-fe,n=L+t;e.shiftKey||(n=Math.round(n/se)*se),v.value=(n%360+360)%360,z&&(z.style.transform=B(R,v.value)||``)}function U(){document.removeEventListener(`mousemove`,H),document.removeEventListener(`mouseup`,U),h.value=!1,c(`interact-end`);let e=o.view,t=o.imageInfo;try{let n=e&&t?k(e,t.pmPos):null;e&&t&&n&&e.dispatch(e.state.tr.setNodeMarkup(t.pmPos,void 0,{...n.attrs,transform:B(n.attrs.transform,v.value)}))}catch{}finally{z&&(z.style.transform=``),z=null,R=null}(0,a.nextTick)(()=>j())}let W=null;function he(e){if(!o.imageInfo||!y.value)return;let t=e.clientX,n=e.clientY,r=y.value,i=!1,a=e=>{let a=e.clientX-t,s=e.clientY-n;if(!(!i&&Math.sqrt(a*a+s*s)<oe)){if(!i){i=!0,m.value=!0,c(`interact-start`),W=document.createElement(`div`),W.style.cssText=`position: fixed; pointer-events: none; z-index: 10000; opacity: 0.5; border: 2px dashed #2563eb; border-radius: 4px; background: rgba(37, 99, 235, 0.1);`;let e=o.zoom;W.style.width=`${r.width*e}px`,W.style.height=`${r.height*e}px`,document.body.appendChild(W)}if(W){let t=o.zoom;W.style.left=`${e.clientX-r.width*t/2}px`,W.style.top=`${e.clientY-r.height*t/2}px`}}},s=e=>{document.removeEventListener(`mousemove`,a),document.removeEventListener(`mouseup`,s),D=null,O=null,W&&=(W.remove(),null),m.value=!1,i&&(c(`interact-end`),ge(e.clientX,e.clientY))};D=a,O=s,document.addEventListener(`mousemove`,a),document.addEventListener(`mouseup`,s)}function ge(e,t){let n=o.view,r=o.imageInfo;if(!n||!r)return;let i=k(n,r.pmPos);if(!i)return;let c=i.attrs.wrapType,l=i.attrs.displayMode===`float`||(c?[`square`,`tight`,`through`].includes(c):!1);try{if(l){let a=(f.value?.closest(`.docx-editor-vue__pages-viewport`))?.querySelectorAll(`.layout-page`);if(!a||a.length===0)return;let c=null;for(let e of a){let n=e.getBoundingClientRect();if(t>=n.top&&t<=n.bottom){c=e.querySelector(`.layout-page-content`);break}}if(c||=a[a.length-1].querySelector(`.layout-page-content`),!c)return;let l=c.getBoundingClientRect(),u=o.zoom,d=(e-l.left)/u,p=(t-l.top)/u,m={horizontal:{posOffset:(0,s.pixelsToEmu)(d),relativeTo:`margin`},vertical:{posOffset:(0,s.pixelsToEmu)(p),relativeTo:`margin`}},h=n.state.tr.setNodeMarkup(r.pmPos,void 0,{...i.attrs,position:m});n.dispatch(h),G(r.pmPos)}else{let a=f.value?.closest(`.docx-editor-vue__pages-viewport`)?.querySelector(`.docx-editor-vue__pages`);if(!a)return;let o=(0,u.clickToPositionDom)(a,e,t,1);if(o==null||o<0||o===r.pmPos||o===r.pmPos+1)return;let s=n.state.tr,c=i.nodeSize;if(o<=r.pmPos)s=s.delete(r.pmPos,r.pmPos+c),s=s.insert(o,i),n.dispatch(s),G(o);else{s=s.delete(r.pmPos,r.pmPos+c);let e=Math.min(o-c,s.doc.content.size);s=s.insert(e,i),n.dispatch(s),G(Math.min(e,n.state.doc.content.size-1))}}}catch{}(0,a.nextTick)(()=>j())}function G(e){let t=o.view;if(t)try{let n=l.NodeSelection.create(t.state.doc,e);t.dispatch(t.state.tr.setSelection(n))}catch{}}return(0,a.onBeforeUnmount)(()=>{document.removeEventListener(`mousemove`,le),document.removeEventListener(`mouseup`,I),document.removeEventListener(`mousemove`,H),document.removeEventListener(`mouseup`,U),D&&document.removeEventListener(`mousemove`,D),O&&document.removeEventListener(`mouseup`,O),W&&=(W.remove(),null),E&&cancelAnimationFrame(E)}),(e,n)=>t.imageInfo?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{key:0,ref_key:`overlayRootRef`,ref:f,class:`image-overlay`,style:(0,a.normalizeStyle)(P.value),onMousedown:n[3]||=(0,a.withModifiers)(()=>{},[`stop`])},[n[4]||=(0,a.createElementVNode)(`div`,{class:`image-overlay__border`},null,-1),(0,a.createElementVNode)(`div`,{class:`image-overlay__body`,style:(0,a.normalizeStyle)({cursor:m.value?`grabbing`:`grab`}),onMousedown:n[0]||=(0,a.withModifiers)(e=>he(e),[`prevent`,`stop`]),onContextmenu:n[1]||=(0,a.withModifiers)(t=>e.$emit(`context-menu`,t),[`prevent`,`stop`])},null,36),((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(ee.value,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{key:e.pos,class:`image-overlay__handle`,style:(0,a.normalizeStyle)(e.style),"data-handle":e.pos,onMousedown:(0,a.withModifiers)(t=>ce(t,e.pos),[`prevent`,`stop`])},null,44,F))),128)),n[5]||=(0,a.createElementVNode)(`div`,{class:`image-overlay__rotate-line`},null,-1),(0,a.createElementVNode)(`div`,{class:`image-overlay__rotate-handle`,style:(0,a.normalizeStyle)({left:`${M.value/2-7}px`}),title:(0,a.unref)(i)(`imageOverlay.rotate`),onMousedown:n[2]||=(0,a.withModifiers)(e=>me(e),[`prevent`,`stop`])},null,44,re),p.value?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,ie,(0,a.toDisplayString)(Math.round(g.value))+` × `+(0,a.toDisplayString)(Math.round(_.value)),1)):(0,a.createCommentVNode)(``,!0),h.value?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,ae,(0,a.toDisplayString)(Math.round(v.value))+`° `,1)):(0,a.createCommentVNode)(``,!0)],36)):(0,a.createCommentVNode)(``,!0)}}),le=n.t(ce,[[`__scopeId`,`data-v-a6f20ec2`]]),I={class:`doc-outline__header`},ue={class:`doc-outline__body`},de={key:0,class:`doc-outline__empty`},fe=[`onMousedown`],L=(0,a.defineComponent)({__name:`DocumentOutline`,props:{isOpen:{type:Boolean},headings:{}},emits:[`close`,`navigate`],setup(t){return(n,r)=>t.isOpen?((0,a.openBlock)(),(0,a.createElementBlock)(`nav`,{key:0,class:`doc-outline`,role:`navigation`,"aria-label":`Document outline`,onMousedown:r[1]||=(0,a.withModifiers)(()=>{},[`stop`])},[(0,a.createElementVNode)(`div`,I,[(0,a.createElementVNode)(`button`,{class:`doc-outline__back`,title:`Close outline`,"aria-label":`Close outline`,onClick:r[0]||=e=>n.$emit(`close`)},[(0,a.createVNode)(e.p,{name:`arrow_back`,size:20})]),r[2]||=(0,a.createElementVNode)(`span`,{class:`doc-outline__title`},`Document Outline`,-1)]),(0,a.createElementVNode)(`div`,ue,[t.headings.length===0?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,de,` No headings found `)):(0,a.createCommentVNode)(``,!0),((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(t.headings,(e,t)=>((0,a.openBlock)(),(0,a.createElementBlock)(`button`,{key:t,class:`doc-outline__item`,style:(0,a.normalizeStyle)({paddingLeft:12+(e.level-1)*16+`px`}),onMousedown:(0,a.withModifiers)(t=>n.$emit(`navigate`,e.pmPos),[`prevent`])},(0,a.toDisplayString)(e.text||`(untitled)`),45,fe))),128))])],32)):(0,a.createCommentVNode)(``,!0)}}),R=n.t(L,[[`__scopeId`,`data-v-cb2cdc39`]]),z=(0,a.defineComponent)({__name:`PageIndicator`,props:{currentPage:{},totalPages:{},visible:{type:Boolean}},setup(t){let{t:n}=e.d();return(e,r)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`docx-editor-vue__page-indicator`,style:(0,a.normalizeStyle)({opacity:+!!t.visible}),"aria-live":`polite`,role:`status`},(0,a.toDisplayString)((0,a.unref)(n)(`viewer.pageIndicator`,{current:t.currentPage,total:t.totalPages})),5))}}),pe=n.t(z,[[`__scopeId`,`data-v-d117bf6e`]]),B={class:`hf-editor__toolbar`},V={class:`hf-editor__label`},me={class:`hf-editor__actions`},H=(0,a.defineComponent)({__name:`InlineHeaderFooterEditor`,props:{isOpen:{type:Boolean},position:{},headerFooter:{},styles:{},theme:{},targetRect:{}},emits:[`save`,`close`,`remove`],setup(e,{emit:t}){let n=e,r=t,i=(0,a.ref)(null),o=null,s=(0,a.ref)({});function c(){let e=n.targetRect;e&&(s.value={position:`absolute`,top:`${e.top}px`,left:`${e.left}px`,width:`${e.width}px`,minHeight:`${Math.max(e.height,60)}px`,zIndex:`100`})}(0,a.watch)(()=>n.isOpen,async e=>{e?(c(),await(0,a.nextTick)(),u()):d()}),(0,a.watch)(()=>n.targetRect,()=>{n.isOpen&&c()},{deep:!0});function u(){let e=i.value;if(!e||o)return;let t=p.singletonManager,r=(0,m.headerFooterToProseDoc)(n.headerFooter?.content??[],{styles:n.styles??void 0,theme:n.theme??null});o=new f.EditorView(e,{state:l.EditorState.create({doc:r,schema:t.getSchema(),plugins:t.getPlugins()??[]}),editable:()=>!0}),o.focus()}function d(){o&&=(o.destroy(),null)}function h(){o&&(r(`save`,(0,m.proseDocToBlocks)(o.state.doc)),r(`close`))}return(0,a.onBeforeUnmount)(()=>{d()}),(t,n)=>e.isOpen?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{key:0,class:`hf-editor`,style:(0,a.normalizeStyle)(s.value),onMousedown:n[2]||=(0,a.withModifiers)(()=>{},[`stop`]),onContextmenu:n[3]||=(0,a.withModifiers)(()=>{},[`stop`])},[(0,a.createElementVNode)(`div`,B,[(0,a.createElementVNode)(`span`,V,(0,a.toDisplayString)(e.position===`header`?`Header`:`Footer`),1),(0,a.createElementVNode)(`div`,me,[(0,a.createElementVNode)(`button`,{class:`hf-editor__btn`,title:`Remove`,onMousedown:n[0]||=(0,a.withModifiers)(e=>t.$emit(`remove`),[`prevent`])},` Remove `,32),(0,a.createElementVNode)(`button`,{class:`hf-editor__btn hf-editor__btn--primary`,title:`Save`,onMousedown:(0,a.withModifiers)(h,[`prevent`])},` Save `,32),(0,a.createElementVNode)(`button`,{class:`hf-editor__btn`,title:`Cancel`,onMousedown:n[1]||=(0,a.withModifiers)(e=>t.$emit(`close`),[`prevent`])},` Cancel `,32)])]),(0,a.createElementVNode)(`div`,{ref_key:`editorRef`,ref:i,class:`hf-editor__content`},null,512)],36)):(0,a.createCommentVNode)(``,!0)}}),U=n.t(H,[[`__scopeId`,`data-v-343434c4`]]),W={key:0,class:`docx-editor-vue__title-bar`},he={class:`docx-editor-vue__title-bar-left`},ge={class:`docx-editor-vue__title-bar-center`},G={class:`docx-editor-vue__title-bar-right`},_e=(0,a.defineComponent)({__name:`DocxEditorMenuBar`,props:{showMenuBar:{type:Boolean},documentName:{},documentNameEditable:{type:Boolean,default:!0},renderLogo:{},renderTitleBarRight:{}},emits:[`rename`,`menu-action`,`insert-table`],setup(e,{emit:n}){let r=n;return(n,i)=>e.showMenuBar?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,W,[(0,a.createElementVNode)(`div`,he,[e.renderLogo?((0,a.openBlock)(),(0,a.createBlock)((0,a.resolveDynamicComponent)(e.renderLogo),{key:0})):(0,a.createCommentVNode)(``,!0),(0,a.renderSlot)(n.$slots,`title-bar-left`)]),(0,a.createElementVNode)(`div`,ge,[(0,a.createVNode)(t.i,{"model-value":e.documentName,editable:e.documentNameEditable,"onUpdate:modelValue":i[0]||=e=>r(`rename`,e)},null,8,[`model-value`,`editable`]),(0,a.createVNode)(t.t,{onAction:i[1]||=e=>r(`menu-action`,e),onInsertTable:i[2]||=(e,t)=>r(`insert-table`,e,t)})]),(0,a.createElementVNode)(`div`,G,[(0,a.renderSlot)(n.$slots,`title-bar-right`),e.renderTitleBarRight?((0,a.openBlock)(),(0,a.createBlock)((0,a.resolveDynamicComponent)(e.renderTitleBarRight),{key:0})):(0,a.createCommentVNode)(``,!0)])])):(0,a.createCommentVNode)(``,!0)}}),ve=(0,a.defineComponent)({__name:`DocxEditorDialogs`,props:{view:{},bookmarks:{},selectedImagePmPos:{},sectionProperties:{},showFindReplace:{type:Boolean},showInsertImage:{type:Boolean},showHyperlink:{type:Boolean},showInsertSymbol:{type:Boolean},showImageProperties:{type:Boolean},showPageSetup:{type:Boolean},showKeyboardShortcuts:{type:Boolean}},emits:[`update:showFindReplace`,`update:showInsertImage`,`update:showHyperlink`,`update:showInsertSymbol`,`update:showImageProperties`,`update:showPageSetup`,`update:showKeyboardShortcuts`,`insert-image`,`insert-symbol`,`hyperlink-submit`,`hyperlink-remove`,`page-setup-apply`],setup(t,{emit:n}){let r=n;return(n,i)=>((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,null,[(0,a.createVNode)(e.s,{"is-open":t.showFindReplace,view:t.view,onClose:i[0]||=e=>r(`update:showFindReplace`,!1)},null,8,[`is-open`,`view`]),(0,a.createVNode)(e.o,{"is-open":t.showInsertImage,onClose:i[1]||=e=>r(`update:showInsertImage`,!1),onInsert:i[2]||=e=>r(`insert-image`,e)},null,8,[`is-open`]),(0,a.createVNode)(e.a,{"is-open":t.showHyperlink,view:t.view,bookmarks:t.bookmarks,onClose:i[3]||=e=>r(`update:showHyperlink`,!1),onSubmit:i[4]||=e=>r(`hyperlink-submit`,e),onRemove:i[5]||=e=>r(`hyperlink-remove`)},null,8,[`is-open`,`view`,`bookmarks`]),(0,a.createVNode)(e.i,{"is-open":t.showInsertSymbol,onClose:i[6]||=e=>r(`update:showInsertSymbol`,!1),onInsert:i[7]||=e=>r(`insert-symbol`,e)},null,8,[`is-open`]),(0,a.createVNode)(e.r,{"is-open":t.showImageProperties,view:t.view,"pm-pos":t.selectedImagePmPos,onClose:i[8]||=e=>r(`update:showImageProperties`,!1)},null,8,[`is-open`,`view`,`pm-pos`]),(0,a.createVNode)(e.n,{"is-open":t.showPageSetup,"section-properties":t.sectionProperties,onClose:i[9]||=e=>r(`update:showPageSetup`,!1),onApply:i[10]||=e=>r(`page-setup-apply`,e)},null,8,[`is-open`,`section-properties`]),(0,a.createVNode)(e.t,{"is-open":t.showKeyboardShortcuts,onClose:i[11]||=e=>r(`update:showKeyboardShortcuts`,!1)},null,8,[`is-open`])],64))}}),K=[`disabled`,`onMousedown`],ye={class:`ctx-menu__label`},q={key:0,class:`ctx-menu__shortcut`},be=220,xe=32,J=10,Se=(0,a.defineComponent)({__name:`TextContextMenu`,props:{isOpen:{type:Boolean},position:{},hasSelection:{type:Boolean},isEditable:{type:Boolean},inTable:{type:Boolean},onImage:{type:Boolean},canMergeCells:{type:Boolean},canSplitCell:{type:Boolean}},emits:[`close`,`action`],setup(e,{emit:t}){let n=e,r=t,i=(0,a.ref)(null),o=(0,a.computed)(()=>{let e=[{id:`cut`,label:`Cut`,action:`cut`,shortcut:`Ctrl+X`,disabled:!n.hasSelection||!n.isEditable},{id:`copy`,label:`Copy`,action:`copy`,shortcut:`Ctrl+C`,disabled:!n.hasSelection},{id:`paste`,label:`Paste`,action:`paste`,shortcut:`Ctrl+V`,disabled:!n.isEditable},{id:`pasteAsPlainText`,label:`Paste as Plain Text`,action:`pasteAsPlainText`,shortcut:`Ctrl+Shift+V`,disabled:!n.isEditable},{id:`div1`,label:``,action:``,divider:!0},{id:`delete`,label:`Delete`,action:`delete`,shortcut:`Del`,disabled:!n.hasSelection||!n.isEditable},{id:`selectAll`,label:`Select All`,action:`selectAll`,shortcut:`Ctrl+A`}];return n.onImage&&n.isEditable&&e.push({id:`div-img`,label:``,action:``,divider:!0},{id:`replaceImage`,label:`Replace image…`,action:`replaceImage`},{id:`imageProperties`,label:`Image properties…`,action:`imageProperties`},{id:`deleteImage`,label:`Delete image`,action:`deleteImage`,shortcut:`Del`}),n.inTable&&n.isEditable&&e.push({id:`div2`,label:``,action:``,divider:!0},{id:`addRowAbove`,label:`Insert row above`,action:`addRowAbove`},{id:`addRowBelow`,label:`Insert row below`,action:`addRowBelow`},{id:`deleteRow`,label:`Delete row`,action:`deleteRow`},{id:`div3`,label:``,action:``,divider:!0},{id:`addColLeft`,label:`Insert column left`,action:`addColumnLeft`},{id:`addColRight`,label:`Insert column right`,action:`addColumnRight`},{id:`deleteCol`,label:`Delete column`,action:`deleteColumn`},{id:`div4`,label:``,action:``,divider:!0},{id:`mergeCells`,label:`Merge cells`,action:`mergeCells`,disabled:!n.canMergeCells},{id:`splitCell`,label:`Split cell`,action:`splitCell`,disabled:!n.canSplitCell}),e}),s=(0,a.computed)(()=>{let e=n.position.x,t=n.position.y,r=o.value.filter(e=>!e.divider).length,i=o.value.filter(e=>e.divider).length,a=r*xe+i*9;return typeof window<`u`&&(e+be+J>window.innerWidth&&(e=window.innerWidth-be-J),t+a+J>window.innerHeight&&(t=window.innerHeight-a-J)),{position:`fixed`,left:`${e}px`,top:`${t}px`,zIndex:400}});function c(e){e&&(r(`action`,e),r(`close`))}function l(e){e.key===`Escape`&&r(`close`)}return(0,a.watch)(()=>n.isOpen,e=>{e&&(0,a.nextTick)(()=>i.value?.focus())}),(t,n)=>((0,a.openBlock)(),(0,a.createBlock)(a.Teleport,{to:`body`},[e.isOpen?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{key:0,class:`ctx-menu-backdrop`,onMousedown:n[0]||=e=>t.$emit(`close`),onContextmenu:n[1]||=(0,a.withModifiers)(e=>t.$emit(`close`),[`prevent`])},null,32)):(0,a.createCommentVNode)(``,!0),e.isOpen?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{key:1,ref_key:`menuRef`,ref:i,class:`ctx-menu`,style:(0,a.normalizeStyle)(s.value),onContextmenu:n[2]||=(0,a.withModifiers)(()=>{},[`prevent`]),onKeydown:l},[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(o.value,(e,t)=>((0,a.openBlock)(),(0,a.createElementBlock)(`button`,{key:e.id||t,class:(0,a.normalizeClass)([`ctx-menu__item`,{"ctx-menu__item--disabled":e.disabled,"ctx-menu__item--divider":e.divider}]),disabled:e.disabled,onMousedown:(0,a.withModifiers)(t=>c(e.action),[`prevent`])},[(0,a.createElementVNode)(`span`,ye,(0,a.toDisplayString)(e.label),1),e.shortcut?((0,a.openBlock)(),(0,a.createElementBlock)(`span`,q,(0,a.toDisplayString)(e.shortcut),1)):(0,a.createCommentVNode)(``,!0)],42,K))),128))],36)):(0,a.createCommentVNode)(``,!0)]))}}),Ce=n.t(Se,[[`__scopeId`,`data-v-741c4f71`]]),we=[`aria-label`],Te={class:`image-ctx-menu__icon`},Ee={class:`image-ctx-menu__label`},De={key:1,class:`image-ctx-menu__divider`,role:`separator`},Oe=[`data-wrap-type`,`data-current`,`data-disabled`,`disabled`,`title`,`onClick`],ke={class:`image-ctx-menu__icon`},Ae={class:`image-ctx-menu__label`},je=[`aria-label`],Me=[`disabled`,`onClick`],Ne={class:`image-ctx-menu__label`},Pe={key:0,class:`image-ctx-menu__shortcut`},Fe={key:0,class:`image-ctx-menu__divider`,role:`separator`},Ie=18,Le=260,Y=10,Re=(0,a.defineComponent)({__name:`ImageContextMenu`,props:{state:{},textActions:{},canOpenProperties:{type:Boolean,default:!1}},emits:[`close`,`select`,`text-action`,`open-properties`],setup(t,{emit:n}){let r=t,i=n;function o(){i(`open-properties`),i(`close`)}let{t:s}=e.d(),c=(0,a.ref)(null),l=d.IMAGE_LAYOUT_OPTIONS,u=(0,a.computed)(()=>r.state?(0,d.deriveLayoutChoice)(r.state.currentWrapType,r.state.currentCssFloat??null):null),f={inline:`wrap_text`,squareLeft:`format_image_left`,squareRight:`format_image_right`,behind:`flip_to_back`,inFront:`flip_to_front`};function p(e){return f[e]}let m=(0,a.computed)(()=>{if(!r.state)return{};let e=d.IMAGE_LAYOUT_OPTIONS.length*36+16,t=r.state.position.x,n=r.state.position.y;return typeof window<`u`&&(t+Le>window.innerWidth&&(t=window.innerWidth-Le-Y),n+e>window.innerHeight&&(n=window.innerHeight-e-Y),t<Y&&(t=Y),n<Y&&(n=Y)),{position:`fixed`,left:`${t}px`,top:`${n}px`,minWidth:`${Le}px`,zIndex:400}});function h(e){return r.state?(0,d.isImageLayoutOptionEnabled)(e,r.state.currentWrapType):!1}function g(e){h(e)&&(i(`select`,e.choice),i(`close`))}function _(e){e.disabled||(i(`text-action`,e.action),i(`close`))}function v(e){e.preventDefault(),i(`close`)}function y(e){e.key===`Escape`&&(e.preventDefault(),i(`close`))}return(n,r)=>((0,a.openBlock)(),(0,a.createBlock)(a.Teleport,{to:`body`},[t.state&&t.state.open?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{key:0,class:`image-ctx-menu-backdrop`,onMousedown:v,onContextmenu:r[0]||=(0,a.withModifiers)(e=>n.$emit(`close`),[`prevent`])},null,32)):(0,a.createCommentVNode)(``,!0),t.state&&t.state.open?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{key:1,ref_key:`menuRef`,ref:c,class:`image-ctx-menu`,role:`menu`,"aria-label":(0,a.unref)(s)(`imageWrap.menu.ariaLabel`),"data-testid":`image-context-menu`,style:(0,a.normalizeStyle)(m.value),onContextmenu:r[4]||=(0,a.withModifiers)(()=>{},[`prevent`]),onKeydown:y},[t.canOpenProperties?((0,a.openBlock)(),(0,a.createElementBlock)(`button`,{key:0,type:`button`,role:`menuitem`,class:`image-ctx-menu__item`,"data-action":`open-properties`,onMousedown:r[1]||=(0,a.withModifiers)(()=>{},[`prevent`]),onClick:o},[(0,a.createElementVNode)(`span`,Te,[(0,a.createVNode)(e.p,{name:`settings`,size:Ie})]),(0,a.createElementVNode)(`span`,Ee,(0,a.toDisplayString)((0,a.unref)(s)(`imageWrap.menu.imageProperties`)),1)],32)):(0,a.createCommentVNode)(``,!0),t.canOpenProperties?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,De)):(0,a.createCommentVNode)(``,!0),((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)((0,a.unref)(l),t=>((0,a.openBlock)(),(0,a.createElementBlock)(`button`,{key:t.choice,type:`button`,role:`menuitem`,class:(0,a.normalizeClass)([`image-ctx-menu__item`,{"image-ctx-menu__item--current":t.choice===u.value}]),"data-wrap-type":t.choice,"data-current":t.choice===u.value?`true`:`false`,"data-disabled":h(t)?`false`:`true`,disabled:!h(t),title:(0,a.unref)(s)(`imageWrap.menuDesc.${t.i18nDescKey}`),onMousedown:r[2]||=(0,a.withModifiers)(()=>{},[`prevent`]),onClick:e=>g(t)},[(0,a.createElementVNode)(`span`,ke,[(0,a.createVNode)(e.p,{name:p(t.iconHint),size:Ie},null,8,[`name`])]),(0,a.createElementVNode)(`span`,Ae,(0,a.toDisplayString)((0,a.unref)(s)(`imageWrap.menu.${t.i18nLabelKey}`)),1),t.choice===u.value?((0,a.openBlock)(),(0,a.createElementBlock)(`span`,{key:0,class:`image-ctx-menu__current-dot`,"aria-label":(0,a.unref)(s)(`imageWrap.menu.ariaLabel`)},`●`,8,je)):(0,a.createCommentVNode)(``,!0)],42,Oe))),128)),t.textActions&&t.textActions.length>0?((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:2},[r[5]||=(0,a.createElementVNode)(`div`,{class:`image-ctx-menu__divider`,role:`separator`},null,-1),((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(t.textActions,(e,t)=>((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:`${e.action}-${t}`},[(0,a.createElementVNode)(`button`,{type:`button`,role:`menuitem`,class:`image-ctx-menu__item image-ctx-menu__item--text`,disabled:e.disabled,onMousedown:r[3]||=(0,a.withModifiers)(()=>{},[`prevent`]),onClick:t=>_(e)},[(0,a.createElementVNode)(`span`,Ne,(0,a.toDisplayString)(e.label),1),e.shortcut?((0,a.openBlock)(),(0,a.createElementBlock)(`span`,Pe,(0,a.toDisplayString)(e.shortcut),1)):(0,a.createCommentVNode)(``,!0)],40,Me),e.dividerAfter?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,Fe)):(0,a.createCommentVNode)(``,!0)],64))),128))],64)):(0,a.createCommentVNode)(``,!0)],44,we)):(0,a.createCommentVNode)(``,!0)]))}}),ze=n.t(Re,[[`__scopeId`,`data-v-5c21ca8c`]]),Be=(0,a.defineComponent)({__name:`DocxEditorOverlays`,props:{readOnly:{type:Boolean},contextMenu:{},imageContextMenu:{},imageContextMenuTextActions:{},canOpenImageProperties:{type:Boolean}},emits:[`context-menu-action`,`close-context-menu`,`image-wrap-select`,`close-image-context-menu`,`open-image-properties`],setup(e,{emit:t}){let n=t;return(t,r)=>((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,null,[(0,a.createVNode)(Ce,{"is-open":e.contextMenu.isOpen,position:e.contextMenu.position,"has-selection":e.contextMenu.hasSelection,"is-editable":!e.readOnly,"in-table":e.contextMenu.inTable,"on-image":e.contextMenu.onImage,"can-merge-cells":e.contextMenu.canMergeCells,"can-split-cell":e.contextMenu.canSplitCell,onAction:r[0]||=e=>n(`context-menu-action`,e),onClose:r[1]||=e=>n(`close-context-menu`)},null,8,[`is-open`,`position`,`has-selection`,`is-editable`,`in-table`,`on-image`,`can-merge-cells`,`can-split-cell`]),(0,a.createVNode)(ze,{state:e.imageContextMenu,"text-actions":e.imageContextMenuTextActions,"can-open-properties":e.canOpenImageProperties,onClose:r[2]||=e=>n(`close-image-context-menu`),onSelect:r[3]||=e=>n(`image-wrap-select`,e),onTextAction:r[4]||=e=>n(`context-menu-action`,e),onOpenProperties:r[5]||=e=>n(`open-image-properties`)},null,8,[`state`,`text-actions`,`can-open-properties`])],64))}}),Ve=[`href`,`title`],X=[`title`],He=[`title`],Ue=[`title`],We={class:`docx-hyperlink-popup__edit-row`},Ge=[`placeholder`,`onKeydown`],Ke={class:`docx-hyperlink-popup__edit-row`},qe=[`onKeydown`],Je=[`disabled`],Ye=(0,a.defineComponent)({__name:`HyperlinkPopup`,props:{data:{},readOnly:{type:Boolean}},emits:[`navigate`,`copy`,`edit`,`remove`,`close`],setup(t,{emit:n}){let{t:r}=e.d(),i=t,o=n,s=(0,a.ref)(!1),c=(0,a.ref)(``),l=(0,a.ref)(``),u=(0,a.ref)(null),d=(0,a.computed)(()=>({left:(i.data?.position.left??0)+`px`,top:(i.data?.position.top??0)+`px`}));(0,a.watch)(()=>i.data?.href,()=>{s.value=!1});let f=null,p=null;function m(){p&&=(clearTimeout(p),null),f&&=(document.removeEventListener(`mousedown`,f),null)}(0,a.watch)(()=>i.data,e=>{m(),e&&(f=e=>{let t=u.value;t&&!t.contains(e.target)&&o(`close`)},p=setTimeout(()=>{f&&document.addEventListener(`mousedown`,f)},0))},{immediate:!0}),(0,a.onBeforeUnmount)(m);function h(){i.data&&(c.value=i.data.displayText,l.value=i.data.href,s.value=!0)}function g(){l.value.trim()&&(o(`edit`,c.value,l.value),s.value=!1)}function _(){i.data&&(o(`copy`,i.data.href),typeof navigator<`u`&&navigator.clipboard&&navigator.clipboard.writeText(i.data.href).catch(()=>{}))}return(e,n)=>t.data?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{key:0,ref_key:`popupRef`,ref:u,class:(0,a.normalizeClass)([`docx-hyperlink-popup`,{"docx-hyperlink-popup--edit":s.value}]),style:(0,a.normalizeStyle)(d.value),onMousedown:n[6]||=(0,a.withModifiers)(()=>{},[`stop`])},[s.value?((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:1},[(0,a.createElementVNode)(`div`,We,[(0,a.withDirectives)((0,a.createElementVNode)(`input`,{class:`docx-hyperlink-popup__input`,placeholder:(0,a.unref)(r)(`hyperlinkPopup.displayTextPlaceholder`),"onUpdate:modelValue":n[2]||=e=>c.value=e,onKeydown:[(0,a.withKeys)((0,a.withModifiers)(g,[`prevent`]),[`enter`]),n[3]||=(0,a.withKeys)(t=>e.$emit(`close`),[`esc`])]},null,40,Ge),[[a.vModelText,c.value]])]),(0,a.createElementVNode)(`div`,Ke,[(0,a.withDirectives)((0,a.createElementVNode)(`input`,{class:`docx-hyperlink-popup__input`,placeholder:`https://...`,"onUpdate:modelValue":n[4]||=e=>l.value=e,onKeydown:[(0,a.withKeys)((0,a.withModifiers)(g,[`prevent`]),[`enter`]),n[5]||=(0,a.withKeys)(t=>e.$emit(`close`),[`esc`])]},null,40,qe),[[a.vModelText,l.value]]),(0,a.createElementVNode)(`button`,{class:`docx-hyperlink-popup__apply`,disabled:!l.value.trim(),onClick:(0,a.withModifiers)(g,[`prevent`])},(0,a.toDisplayString)((0,a.unref)(r)(`common.apply`)),9,Je)])],64)):((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:0},[n[10]||=(0,a.createStaticVNode)(`<span class="docx-hyperlink-popup__icon" aria-hidden data-v-9d23bb12><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-v-9d23bb12><circle cx="12" cy="12" r="10" data-v-9d23bb12></circle><path d="M2 12h20" data-v-9d23bb12></path><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" data-v-9d23bb12></path></svg></span>`,1),(0,a.createElementVNode)(`a`,{class:`docx-hyperlink-popup__url`,href:t.data.href,title:t.data.href,onClick:n[0]||=(0,a.withModifiers)(n=>e.$emit(`navigate`,t.data.href),[`prevent`])},(0,a.toDisplayString)(t.data.href),9,Ve),n[11]||=(0,a.createElementVNode)(`span`,{class:`docx-hyperlink-popup__sep`},null,-1),(0,a.createElementVNode)(`button`,{class:`docx-hyperlink-popup__btn`,title:(0,a.unref)(r)(`hyperlinkPopup.copyLink`),onClick:(0,a.withModifiers)(_,[`prevent`])},[...n[7]||=[(0,a.createElementVNode)(`svg`,{width:`18`,height:`18`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[(0,a.createElementVNode)(`rect`,{x:`9`,y:`9`,width:`13`,height:`13`,rx:`2`,ry:`2`}),(0,a.createElementVNode)(`path`,{d:`M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1`})],-1)]],8,X),t.readOnly?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(`button`,{key:0,class:`docx-hyperlink-popup__btn`,title:(0,a.unref)(r)(`hyperlinkPopup.editLink`),onClick:(0,a.withModifiers)(h,[`prevent`])},[...n[8]||=[(0,a.createElementVNode)(`svg`,{width:`18`,height:`18`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[(0,a.createElementVNode)(`path`,{d:`M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`}),(0,a.createElementVNode)(`path`,{d:`M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z`})],-1)]],8,He)),t.readOnly?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(`button`,{key:1,class:`docx-hyperlink-popup__btn`,title:(0,a.unref)(r)(`hyperlinkPopup.removeLink`),onClick:n[1]||=(0,a.withModifiers)(t=>e.$emit(`remove`),[`prevent`])},[...n[9]||=[(0,a.createStaticVNode)(`<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-v-9d23bb12><path d="M18.84 12.25l1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71" data-v-9d23bb12></path><path d="M5.17 11.75l-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71" data-v-9d23bb12></path><line x1="8" y1="2" x2="8" y2="5" data-v-9d23bb12></line><line x1="2" y1="8" x2="5" y2="8" data-v-9d23bb12></line><line x1="16" y1="19" x2="16" y2="22" data-v-9d23bb12></line><line x1="19" y1="16" x2="22" y2="16" data-v-9d23bb12></line></svg>`,1)]],8,Ue))],64))],38)):(0,a.createCommentVNode)(``,!0)}}),Xe=n.t(Ye,[[`__scopeId`,`data-v-9d23bb12`]]);function Ze(e){let t=(0,a.ref)(null);async function n(){await e.nextTick(),e.extractCommentsAndChanges(),e.emit(`ready`)}async function r(t){try{let r=await(0,s.readDocxFileFromInput)(t);if(!r)return;await e.loadBuffer(r.buffer),e.emit(`update:document`,e.getDocument()),e.emit(`rename`,r.name),await n()}catch(t){e.emit(`error`,t instanceof Error?t:Error(`Failed to open document`))}}function i(t){e.onDocumentNameChange?.(t),e.emit(`rename`,t)}async function o(){let t=await e.saveBlob();if(!t)return;let n=(e.documentName()??``).trim()||`document`,r=URL.createObjectURL(t),i=window.document.createElement(`a`);i.href=r,i.download=`${n.replace(/\.docx$/i,``)}.docx`,i.click(),setTimeout(()=>URL.revokeObjectURL(r),0)}async function c(t){await e.loadBuffer(t),e.emit(`update:document`,e.getDocument()),await n()}function l(t){e.loadParsedDocument(t),e.emit(`update:document`,t),n()}async function u(){let t=await e.saveBlob();return t?t.arrayBuffer():null}return{docxInputRef:t,handleDocxFileChange:r,handleDocumentNameChange:i,downloadCurrentDocument:o,emitReadyAfterSidebarStateRefresh:n,loadDocumentBuffer:c,loadDocument:l,save:u}}function Qe(e){let t=(0,a.ref)(null);function n(t){let n=e.editorView.value;if(!n)return;let r=e.getCommands(),{empty:i}=n.state.selection,a=t.bookmark?`#${t.bookmark}`:t.url;if(a){if(i&&t.displayText){let e=r.insertHyperlink;e&&e(t.displayText,a,t.tooltip||void 0)(n.state,e=>n.dispatch(e),n)}else{let e=r.setHyperlink;e&&e(a,t.tooltip||void 0)(n.state,e=>n.dispatch(e),n)}n.focus()}}function r(){let t=e.editorView.value;if(!t)return;let n=e.getCommands().removeHyperlink;n&&n()(t.state,e=>t.dispatch(e),t),t.focus()}function i(e){window.open(e,`_blank`,`noopener,noreferrer`),t.value=null}function s(n,r){let i=e.editorView.value;if(!i)return;let a=(0,o.findHyperlinkRangeAt)(i.state);if(!a){t.value=null;return}let s=i.state.schema.marks.hyperlink,{$from:c}=i.state.selection,l=s.create({href:r,tooltip:a.mark.attrs.tooltip}),u=c.marks().filter(e=>e.type!==s),d=i.state.schema.text(n,[...u,l]),f=i.state.tr.replaceWith(a.start,a.end,d);i.dispatch(f.scrollIntoView()),t.value=null,i.focus()}function c(){let n=e.editorView.value;if(!n)return;let r=(0,o.findHyperlinkRangeAt)(n.state,t.value?.href);if(!r){t.value=null;return}let i=n.state.schema.marks.hyperlink,a=n.state.tr.removeMark(r.start,r.end,i);n.dispatch(a.scrollIntoView()),t.value=null,n.focus()}return{hyperlinkPopupData:t,handleHyperlinkSubmit:n,handleHyperlinkRemove:r,handleHyperlinkPopupNavigate:i,handleHyperlinkPopupEdit:s,handleHyperlinkPopupRemove:c}}function $e(e){function t(){let t=e.editorView.value;t&&((0,o.clearFormatting)(t.state,t.dispatch,t),t.focus())}function n(t){let n=e.editorView.value;if(!n)return;let r=e.getDocument()?.package?.styles;if(r){let e=(0,y.createStyleResolver)(r).resolveParagraphStyle(t);(0,v.applyStyle)(t,{paragraphFormatting:e.paragraphFormatting,runFormatting:e.runFormatting})(n.state,e=>n.dispatch(e))}else (0,v.applyStyle)(t)(n.state,e=>n.dispatch(e));n.focus()}function r(){let t=e.editorView.value;t&&((0,b.insertPageBreak)(t.state,e=>t.dispatch(e),t),t.focus())}function i(t){let n=e.editorView.value;if(!n)return;let{from:r}=n.state.selection,i=n.state.tr.insertText(t,r);n.dispatch(i.scrollIntoView()),n.focus()}function a(t){let n=e.editorView.value;if(!n)return!1;let r=A(n.state.doc,t.paraId);if(!r)return!1;let i=r.from+1,a=r.to-1;if(t.search){let e=N(n.state.doc,r.from,r.to,t.search);if(!e)return!1;i=e.from,a=e.to}if(i>=a)return!0;let{schema:o}=n.state,s=t.marks,c=n.state.tr;if(s.bold!==void 0&&o.marks.bold&&(c=s.bold?c.addMark(i,a,o.marks.bold.create()):c.removeMark(i,a,o.marks.bold)),s.italic!==void 0&&o.marks.italic&&(c=s.italic?c.addMark(i,a,o.marks.italic.create()):c.removeMark(i,a,o.marks.italic)),s.underline!==void 0&&o.marks.underline)if(s.underline){let e=typeof s.underline==`object`?s.underline.style:void 0;c=c.addMark(i,a,o.marks.underline.create({style:e??`single`}))}else c=c.removeMark(i,a,o.marks.underline);return s.strike!==void 0&&o.marks.strike&&(c=s.strike?c.addMark(i,a,o.marks.strike.create()):c.removeMark(i,a,o.marks.strike)),s.color!==void 0&&o.marks.textColor&&(c=s.color&&(s.color.rgb||s.color.themeColor)?c.addMark(i,a,o.marks.textColor.create({rgb:s.color.rgb??null,themeColor:s.color.themeColor??null})):c.removeMark(i,a,o.marks.textColor)),s.highlight!==void 0&&o.marks.highlight&&(c=s.highlight?c.addMark(i,a,o.marks.highlight.create({color:(0,x.mapHexToHighlightName)(s.highlight)||s.highlight})):c.removeMark(i,a,o.marks.highlight)),s.fontSize!==void 0&&o.marks.fontSize&&(c=s.fontSize>0?c.addMark(i,a,o.marks.fontSize.create({size:(0,h.pointsToHalfPoints)(s.fontSize)})):c.removeMark(i,a,o.marks.fontSize)),s.fontFamily!==void 0&&o.marks.fontFamily&&(c=s.fontFamily&&(s.fontFamily.ascii||s.fontFamily.hAnsi)?c.addMark(i,a,o.marks.fontFamily.create({ascii:s.fontFamily.ascii??null,hAnsi:s.fontFamily.hAnsi??s.fontFamily.ascii??null})):c.removeMark(i,a,o.marks.fontFamily)),n.dispatch(c),!0}function s(t){let n=e.editorView.value;if(!n)return!1;let r=A(n.state.doc,t.paraId);if(!r)return!1;let i=e.getDocument(),a=i?.package?.styles?(0,y.createStyleResolver)(i.package.styles):null;if(a&&!a.hasParagraphStyle(t.styleId))return!1;let o=n.state.doc.resolve(r.from+1),s=n.state.doc.resolve(r.to-1),c=n.state.apply(n.state.tr.setSelection(l.TextSelection.between(o,s))),u=a?(()=>{let e=a.resolveParagraphStyle(t.styleId);return(0,v.applyStyle)(t.styleId,{paragraphFormatting:e.paragraphFormatting,runFormatting:e.runFormatting})})():(0,v.applyStyle)(t.styleId),d=!1;return u(c,e=>{d=!0,e.setSelection(n.state.selection.map(e.doc,e.mapping)),n.dispatch(e)}),d}return{handleClearFormatting:t,handleApplyStyle:n,handleInsertPageBreak:r,handleInsertSymbol:i,applyFormatting:a,setParagraphStyle:s}}function et(e){function t(t){let n=e.getDocument();if(!n?.package?.document)return;let r=n.package.document.finalSectionProperties??{};n.package.document.finalSectionProperties={...r,...t},e.stateTick.value++,e.reLayout(),e.emit(`change`,n)}function n(n,r){e.readOnly.value||t({[n]:r})}function r(e){n(`marginLeft`,e)}function i(e){n(`marginRight`,e)}function a(e){n(`marginTop`,e)}function o(e){n(`marginBottom`,e)}function s(t){let n=e.editorView.value;n&&(0,v.setIndentLeft)(t)(n.state,n.dispatch)}function c(t){let n=e.editorView.value;n&&(0,v.setIndentRight)(t)(n.state,n.dispatch)}function l(t){let n=e.editorView.value;n&&(t<0?(0,v.setIndentFirstLine)(-t,!0)(n.state,n.dispatch):(0,v.setIndentFirstLine)(t,!1)(n.state,n.dispatch))}function u(t){let n=e.editorView.value;n&&(0,v.removeTabStop)(t)(n.state,n.dispatch)}return{handlePageSetupApply:t,handleLeftMarginChange:r,handleRightMarginChange:i,handleTopMarginChange:a,handleBottomMarginChange:o,handleIndentLeftChange:s,handleIndentRightChange:c,handleFirstLineIndentChange:l,handleTabStopRemove:u}}function tt(e){function t(){if(!e.showOutline.value){let t=e.editorView.value;t&&(e.outlineHeadings.value=(0,S.collectHeadings)(t.state.doc))}e.showOutline.value=!e.showOutline.value}function n(t){let n=e.editorView.value;if(!n)return;let r=n.state.doc.resolve(Math.min(t+1,n.state.doc.content.size)),i=l.TextSelection.near(r);n.dispatch(n.state.tr.setSelection(i).scrollIntoView()),n.focus()}function r(){e.showSidebar.value||e.extractCommentsAndChanges(),e.showSidebar.value=!e.showSidebar.value}function i(t){let n=t.target;n&&(n.closest(`.paged-editor__pages`)||n.closest(`.unified-sidebar`)||n.closest(`.docx-comment-margin-markers`)||(e.activeSidebarItem.value=null))}return{handleToggleOutline:t,handleOutlineNavigate:n,handleToggleSidebar:r,handleEditorScrollMouseDown:i}}function nt(e){function t(t){if(t.key===`F1`){t.preventDefault(),e.showKeyboardShortcuts.value=!0;return}e.handleZoomKeyDown(t),(t.ctrlKey||t.metaKey)&&(e.disableFindReplaceShortcuts?.()&&(t.key===`f`||t.key===`h`)||(t.key===`f`||t.key===`h`?(t.preventDefault(),e.showFindReplace.value=!0):t.key===`k`?(t.preventDefault(),e.showHyperlink.value=!0):t.key===`/`&&(t.preventDefault(),e.showKeyboardShortcuts.value=!e.showKeyboardShortcuts.value)))}return(0,a.onMounted)(()=>window.addEventListener(`keydown`,t)),(0,a.onBeforeUnmount)(()=>window.removeEventListener(`keydown`,t)),{handleKeyDown:t}}function rt(e,t,n,r){return{id:e.reduce((e,t)=>Math.max(e,t.id),0)+1,author:n,date:new Date().toISOString(),content:[{type:`paragraph`,properties:{},content:[{type:`run`,properties:{},content:[{type:`text`,text:t}]}]}],...r==null?{}:{parentId:r}}}function it(e){function t(t,n,r){return rt(e.getDocument()?.package?.document?.comments??[],t,n,r)}function n(n){let r=e.getDocument(),i=e.editorView.value;if(!r?.package?.document||!i)return null;r.package.document.comments||(r.package.document.comments=[]);let a=i.state.schema.marks.comment;if(!a)return null;let o=A(i.state.doc,n.paraId);if(!o)return null;let s=o.from+1,c=o.to-1;if(n.search){let e=N(i.state.doc,o.from,o.to,n.search);if(!e)return null;s=e.from,c=e.to}if(s>=c)return null;let l=t(n.text,n.author);return r.package.document.comments.push(l),e.comments.value=[...r.package.document.comments],i.dispatch(i.state.tr.addMark(s,c,a.create({commentId:l.id}))),e.showSidebar.value=!0,e.emit(`change`,r),e.contentChangeSubscribers.forEach(e=>e(r)),l.id}function r(n,r,i){let a=e.getDocument();if(!a?.package?.document?.comments||!a.package.document.comments.some(e=>e.id===n))return null;let o=t(r,i,n);return a.package.document.comments.push(o),e.comments.value=[...a.package.document.comments],e.emit(`change`,a),e.contentChangeSubscribers.forEach(e=>e(a)),o.id}function i(t){let n=e.getDocument();if(!n?.package?.document?.comments)return;let r=n.package.document.comments.find(e=>e.id===t);r&&(r.done=!0,e.comments.value=[...n.package.document.comments],e.emit(`change`,n),e.contentChangeSubscribers.forEach(e=>e(n)))}function a(t){let n=e.editorView.value;if(!n)return!1;let{schema:r}=n.state;if(!r.marks.deletion||!r.marks.insertion)return!1;let i=A(n.state.doc,t.paraId);if(!i)return!1;let a=t.search===``,o=t.replaceWith===``;if(a&&o)return!1;let s,c;if(a)s=i.to-1,c=i.to-1;else{let e=N(n.state.doc,i.from,i.to,t.search);if(!e)return!1;s=e.from,c=e.to}let l=!1;if(s<c&&n.state.doc.nodesBetween(s,c,e=>{for(let t of e.marks)if(t.type===r.marks.insertion||t.type===r.marks.deletion)return l=!0,!1;return!0}),l)return!1;let u=Math.max(0,...e.trackedChanges.value.map(e=>e.revisionId))+1,d=new Date().toISOString(),f=r.marks.deletion.create({revisionId:u,author:t.author,date:d}),p=r.marks.insertion.create({revisionId:u,author:t.author,date:d}),m=n.state.tr;return a||(m=m.addMark(s,c,f)),o||(m=m.insert(c,r.text(t.replaceWith,[p]))),n.dispatch(m),e.extractCommentsAndChanges(),e.showSidebar.value=!0,!0}function o(e,t){r(e,t,`User`)}function s(t){let n=e.getDocument();if(!n?.package?.document?.comments)return;let r=n.package.document.comments.find(e=>e.id===t);r&&(r.done=!1),e.comments.value=[...n.package.document.comments],e.emit(`change`,n)}function c(t){let n=e.getDocument();n?.package?.document?.comments&&(n.package.document.comments=n.package.document.comments.filter(e=>e.id!==t&&e.parentId!==t),e.comments.value=[...n.package.document.comments],e.emit(`change`,n))}function l(t,n){let r=e.editorView.value;r&&((0,C.acceptChange)(t,n)(r.state,r.dispatch),e.extractCommentsAndChanges(),r.focus())}function u(t,n){let r=e.editorView.value;r&&((0,C.rejectChange)(t,n)(r.state,r.dispatch),e.extractCommentsAndChanges(),r.focus())}function d(n,r){let i=e.getDocument(),a=e.editorView.value;if(!i?.package?.document||!a)return;i.package.document.comments||(i.package.document.comments=[]);let o=a.state.schema.marks.comment;if(!o)return;let s=null,c=a.state.schema.marks.insertion,l=a.state.schema.marks.deletion;if(a.state.doc.descendants((e,t)=>{if(s!==null)return!1;for(let r of e.marks)if((r.type===c||r.type===l)&&r.attrs.revisionId===n)return s=t,!1;return!0}),s===null)return;let u=t(r,`User`);i.package.document.comments.push(u),e.comments.value=[...i.package.document.comments];let d=s,f=Math.min(d+1,a.state.doc.content.size);a.dispatch(a.state.tr.addMark(d,f,o.create({commentId:u.id}))),e.emit(`change`,i)}return{addComment:n,replyToComment:r,resolveComment:i,proposeChange:a,handleCommentReply:o,handleCommentUnresolve:s,handleCommentDelete:c,handleAcceptChange:l,handleRejectChange:u,handleTrackedChangeReply:d}}function at(e,t){let n=(0,g.findBodyPmSpans)(e);for(let e of n){let n=Number(e.dataset.pmStart),r=Number(e.dataset.pmEnd);if(!isNaN(n)&&!isNaN(r)&&t>=n&&t<=r)return e}return null}function ot(e,t,n){if(!e||!t)return;let r=null;for(let t of(0,g.findBodyPmSpans)(e)){let e=Number(t.dataset.pmStart),i=Number(t.dataset.pmEnd);if(Number.isFinite(e)&&Number.isFinite(i)&&n>=e&&n<=i){r=t;break}}if(r||=e.querySelector(`[data-pm-start="${n}"]`),!r)return;let i=t.getBoundingClientRect(),a=r.getBoundingClientRect();t.scrollTo({top:a.top-i.top+t.scrollTop-48,behavior:`smooth`})}function st(e,t,n,r){if(!e||!t)return null;let i=(0,g.clickToPositionDom)(e,n,r,1);return i===null||i<0?null:Math.min(i,t.state.doc.content.size)}function ct(e,t,n){if(!e)return;let r=at(e,t);if(!r)return;let i=r.textContent||``,a=Number(r.dataset.pmStart)||0,[o,c]=(0,s.findWordBoundaries)(i,t-a),l=a+o,u=a+c;l<u&&n(l,u)}function lt(e,t,n){if(!e)return;let r=at(e,t);if(!r)return;let i=r.closest(`.layout-paragraph`);if(!i)return;let a=Number(i.dataset.pmStart),o=Number(i.dataset.pmEnd);!isNaN(a)&&!isNaN(o)&&a<o&&n(a,o)}function ut(e){let t=(0,a.ref)(null),n=(0,a.ref)(null),r=(0,a.ref)(null),i=(0,a.ref)(!1);function o(){let t=e.getDocument(),n=e.editorView.value;!t||!n||(e.comments.value=[...t.package?.document?.comments??[]],e.trackedChanges.value=(0,w.extractTrackedChanges)(n.state).entries,!i.value&&(e.comments.value.length>0||e.trackedChanges.value.length>0)&&(e.showSidebar.value=!0,i.value=!0))}function s(){e.stateTick.value;let n=e.editorView.value;if(!n||e.isAddingComment.value||e.readOnly.value){t.value=null;return}let{from:r,to:i}=n.state.selection;if(r===i){t.value=null;return}let a=e.pagesRef.value,o=e.pagesViewportRef.value;if(!a||!o){t.value=null;return}let s=o.getBoundingClientRect(),c=at(a,r);if(!c){t.value=null;return}let l=c.getBoundingClientRect().top-s.top+o.scrollTop,u=a.querySelector(`.layout-page`);if(!u){t.value=null;return}t.value={top:l,left:u.getBoundingClientRect().right-s.left+8}}function c(){e.stateTick.value;let t=e.editorView.value;if(!t)return;let n=t.state.selection.$from,r=[...t.state.storedMarks??[],...n.nodeAfter?.marks??[],...n.nodeBefore?.marks??[],...n.marks()],i=null;for(let t of r){if(t.type.name===`comment`&&t.attrs.commentId!=null){let n=t.attrs.commentId;if(n===-1||e.resolvedCommentIds.value.has(n))continue;i=`comment-${n}`;break}if((t.type.name===`insertion`||t.type.name===`deletion`)&&t.attrs.revisionId!=null){let n=String(t.attrs.revisionId),r=e.trackedChanges.value.findIndex(e=>String(e.revisionId)===n||String(e.insertionRevisionId??``)===n);if(r>=0){i=`tc-${e.trackedChanges.value[r].revisionId}-${r}`;break}}}i&&(e.showSidebar.value=!0),e.activeSidebarItem.value=i}function l(){let i=e.editorView.value;if(!i)return;let{from:a,to:o}=i.state.selection;if(a===o)return;n.value={from:a,to:o},r.value=t.value?.top??null;let s=i.state.schema.marks.comment;if(s){let e=i.state.tr.addMark(a,o,s.create({commentId:-1}));i.dispatch(e)}e.showSidebar.value=!0,e.isAddingComment.value=!0,t.value=null}function u(t){let i=e.getDocument(),a=e.editorView.value;if(!i?.package)return;i.package.document.comments||(i.package.document.comments=[]);let o=rt(i.package.document.comments,t,`User`);i.package.document.comments.push(o),e.comments.value=[...i.package.document.comments];let s=n.value;if(a&&s&&s.from!==s.to){let e=a.state.schema.marks.comment;if(e){let t=a.state.tr.removeMark(s.from,s.to,e);t=t.addMark(s.from,s.to,e.create({commentId:o.id})),a.dispatch(t)}}n.value=null,r.value=null,e.isAddingComment.value=!1,e.emit(`change`,i)}function d(){let t=e.editorView.value,i=n.value;if(t&&i&&i.from!==i.to){let e=t.state.schema.marks.comment;e&&t.dispatch(t.state.tr.removeMark(i.from,i.to,e))}n.value=null,r.value=null,e.isAddingComment.value=!1}function f(t){e.showSidebar.value=!0}(0,a.watch)([e.stateTick,e.isAddingComment,e.zoom],()=>s()),(0,a.watch)(e.stateTick,()=>c());let p=null;return(0,a.onMounted)(()=>{p=new ResizeObserver(()=>s()),e.pagesRef.value&&p.observe(e.pagesRef.value),window.addEventListener(`resize`,s)}),(0,a.onBeforeUnmount)(()=>{p?.disconnect(),window.removeEventListener(`resize`,s)}),{floatingCommentBtn:t,pendingCommentRange:n,addCommentYPosition:r,sidebarAutoOpenedRef:i,extractCommentsAndChanges:o,handleAddComment:u,handleCancelAddComment:d,handleStartAddComment:l,handleMarkerClick:f,recomputeFloatingCommentBtn:s,recomputeActiveSidebarItem:c}}function dt(e){let t=(0,a.shallowRef)(null),n=(0,a.ref)(!1),r=(0,a.computed)(()=>{e.stateTick.value;let n=e.editorView.value,r=t.value;if(!n||!r)return null;let i=n.state.doc.nodeAt(r.pmPos);return!i||i.type.name!==`image`?null:{wrapType:i.attrs.wrapType??`inline`,displayMode:i.attrs.displayMode??`inline`,cssFloat:i.attrs.cssFloat??null}});function i(t){let n=e.editorView.value;if(!n)return;let r=n.state.schema.nodes.image;if(!r)return;let i=r.create({src:t.src,alt:t.alt,width:t.width,height:t.height}),{from:a}=n.state.selection,o=n.state.tr.insert(a,i);n.dispatch(o.scrollIntoView()),n.focus()}function o(n){let r=e.editorView.value,i=t.value;if(!r||!i)return;let a=(0,d.toolbarValueToLayoutTarget)(n);if(!a)return;let o=r.state.doc.nodeAt(i.pmPos),s=e.getCommands(),c=o?.attrs.wrapType===`inline`&&a!==`inline`?{initialPositionEmu:(0,d.captureInlinePositionEmu)(i.element,e.zoom.value)}:void 0,l=s.setImageWrapType?.(i.pmPos,a,c);l&&(l(r.state,e=>r.dispatch(e),r),r.focus())}function s(n){let r=e.editorView.value,i=t.value;if(!r||!i)return;let a=r.state.doc.nodeAt(i.pmPos);if(!a||a.type.name!==`image`)return;let o=a.attrs.transform||``,s=o.match(/rotate\((-?\d+(?:\.\d+)?)deg\)/),c=s?parseFloat(s[1]):0,l=/scaleX\(-1\)/.test(o),u=/scaleY\(-1\)/.test(o);n===`rotateCW`?c=(c+90)%360:n===`rotateCCW`?c=(c-90+360)%360:n===`flipH`?l=!l:n===`flipV`&&(u=!u);let d=[];c!==0&&d.push(`rotate(${c}deg)`),l&&d.push(`scaleX(-1)`),u&&d.push(`scaleY(-1)`);let f=d.length>0?d.join(` `):null,p=r.state.tr.setNodeMarkup(i.pmPos,void 0,{...a.attrs,transform:f});r.dispatch(p.scrollIntoView()),r.focus()}return{selectedImage:t,imageInteracting:n,imageToolbarContext:r,handleInsertImage:i,handleToolbarImageWrap:o,handleImageTransform:s}}function ft(e,t){return e.getBlob(t)}function pt(e,t){let n=e.state.doc.nodeAt(t);if(!n||n.type.name!==`image`)return;let r=`<img src="${n.attrs.src}" data-pm-image="true" data-width="${n.attrs.width??``}" data-height="${n.attrs.height??``}" data-wrap-type="${n.attrs.wrapType??``}" data-display-mode="${n.attrs.displayMode??``}" data-rid="${n.attrs.rId??``}" />`,i=new ClipboardItem({"text/html":new Blob([r],{type:`text/html`}),"text/plain":new Blob([`[image]`],{type:`text/plain`})});navigator.clipboard.write([i]).catch(()=>{let e=document.createElement(`textarea`);e.value=r,document.body.appendChild(e),e.select(),document.execCommand(`copy`),document.body.removeChild(e)})}function mt(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=n,r.readAsDataURL(e)})}function ht(e){return new Promise(t=>{let n=new Image;n.onload=()=>t({width:n.naturalWidth,height:n.naturalHeight}),n.onerror=()=>t({width:200,height:200}),n.src=e})}async function gt(e){try{let t=await navigator.clipboard.read();for(let n of t){let t=n.types.find(e=>e.startsWith(`image/`));if(t){let r=await mt(await ft(n,t)),i=await ht(r),a=i.width,o=i.height;a>612&&(o=Math.round(612/a*o),a=612);let s=e.state.schema.nodes.image.create({src:r,width:a,height:o,rId:`rId_img_${Date.now()}`,wrapType:`inline`,displayMode:`inline`});e.dispatch(e.state.tr.replaceSelectionWith(s));return}if(n.types.includes(`text/html`)){let t=await(await ft(n,`text/html`)).text(),r=t.match(/<img[^>]+src="([^"]+)"[^>]*>/i);if(r&&r[1]){let n=r[1],i=t.match(/data-width="(\d+)"/),a=t.match(/data-height="(\d+)"/),o=i?Number(i[1]):200,s=a?Number(a[1]):200,c=e.state.schema.nodes.image.create({src:n,width:o||200,height:s||200,rId:`rId_img_${Date.now()}`,wrapType:`inline`,displayMode:`inline`});e.dispatch(e.state.tr.replaceSelectionWith(c));return}}if(n.types.includes(`text/plain`)){let t=await(await ft(n,`text/plain`)).text();if(t&&t!==`[image]`){let{from:n}=e.state.selection;e.dispatch(e.state.tr.insertText(t,n))}return}}}catch{let t=await navigator.clipboard?.readText();if(t){let{from:n}=e.state.selection;e.dispatch(e.state.tr.insertText(t,n))}}}function _t(e,t){let n=e.state.doc.nodeAt(t);if(!n||n.type.name!==`image`)return;let r=document.createElement(`input`);r.type=`file`,r.accept=`image/*`,r.onchange=async()=>{let i=r.files?.[0];if(!i)return;let a=await mt(i),o=await ht(a),s=n.attrs.width||o.width,c=n.attrs.height||o.height,l=Math.min(s/o.width,c/o.height),u=Math.round(o.width*l),d=Math.round(o.height*l);try{let r=e.state.tr.setNodeMarkup(t,void 0,{...n.attrs,src:a,width:u,height:d,rId:`rId_img_${Date.now()}`});e.dispatch(r)}catch{}},r.click()}function vt(t){let{t:n}=e.d(),r=(0,a.ref)({isOpen:!1,position:{x:0,y:0},hasSelection:!1,inTable:!1,onImage:!1,canMergeCells:!1,canSplitCell:!1}),i=(0,a.ref)(null),o=(0,a.computed)(()=>[{action:`cut`,label:n(`contextMenu.cut`),shortcut:n(`contextMenu.cutShortcut`)},{action:`copy`,label:n(`contextMenu.copy`),shortcut:n(`contextMenu.copyShortcut`)},{action:`paste`,label:n(`contextMenu.paste`),shortcut:n(`contextMenu.pasteShortcut`),dividerAfter:!0},{action:`delete`,label:n(`contextMenu.delete`),shortcut:n(`contextMenu.deleteShortcut`)}]);function s(e){let n=t.editorView.value;if(!n)return;let a=e.target,o=(0,d.findImageElement)(a);if(o){let a=Number(o.dataset.pmStart);if(!isNaN(a)){try{let e=l.NodeSelection.create(n.state.doc,a);n.dispatch(n.state.tr.setSelection(e))}catch{}t.selectedImage.value={element:o,pmPos:a,width:o.offsetWidth,height:o.offsetHeight},t.clearOverlay();let s=n.state.doc.nodeAt(a);if(s&&s.type.name===`image`){let n=s.attrs.wrapType??`inline`,c=s.attrs.cssFloat;i.value={open:!0,position:{x:e.clientX,y:e.clientY},pmPos:a,currentWrapType:n,currentCssFloat:c??null,inlinePositionEmu:n===`inline`?(0,d.captureInlinePositionEmu)(o,t.zoom.value):void 0},r.value.isOpen=!1;return}}}{let{from:r,to:i}=n.state.selection,a=t.resolvePos(e.clientX,e.clientY);if(a!==null&&(a<r||a>i))try{t.setPmSelection(a)}catch{}}let s=(0,c.getTableContext)(n.state),{empty:u}=n.state.selection;i.value&&=null,r.value={isOpen:!0,position:{x:e.clientX,y:e.clientY},hasSelection:!u,inTable:s.isInTable,onImage:!!o,canMergeCells:!!s.hasMultiCellSelection,canSplitCell:!!s.canSplitCell}}function u(e){let n=t.editorView.value,a=t.selectedImage.value;if(!n||!a)return;let o=n.state.doc.nodeAt(a.pmPos);if(!o||o.type.name!==`image`)return;let s=o.attrs.wrapType??`inline`,c=o.attrs.cssFloat;i.value={open:!0,position:{x:e.clientX,y:e.clientY},pmPos:a.pmPos,currentWrapType:s,currentCssFloat:c??null,inlinePositionEmu:s===`inline`?(0,d.captureInlinePositionEmu)(a.element,t.zoom.value):void 0},r.value.isOpen=!1}function f(e){let n=t.editorView.value,r=i.value;if(!n||!r)return;let a=t.getCommands(),o=r.inlinePositionEmu&&e!==`inline`?{initialPositionEmu:r.inlinePositionEmu}:void 0,s=a.setImageWrapType?.(r.pmPos,e,o);s&&(s(n.state,e=>n.dispatch(e),n),n.focus())}function p(e){let n=t.editorView.value;if(!n)return;let r=t.getCommands();switch(e){case`cut`:if(t.selectedImage.value){pt(n,t.selectedImage.value.pmPos);let e=t.selectedImage.value.pmPos,r=n.state.doc.nodeAt(e);r&&(n.dispatch(n.state.tr.delete(e,e+r.nodeSize)),t.selectedImage.value=null)}else document.execCommand(`cut`);break;case`copy`:t.selectedImage.value?pt(n,t.selectedImage.value.pmPos):document.execCommand(`copy`);break;case`paste`:gt(n);break;case`pasteAsPlainText`:navigator.clipboard.readText().then(e=>{e&&n.dispatch(n.state.tr.insertText(e).scrollIntoView())}).catch(()=>{});break;case`delete`:{let{from:e,to:t}=n.state.selection;e!==t&&n.dispatch(n.state.tr.delete(e,t));break}case`selectAll`:{let e=l.TextSelection.create(n.state.doc,0,n.state.doc.content.size);n.dispatch(n.state.tr.setSelection(e));break}case`imageProperties`:t.selectedImage.value&&(t.showImageProperties.value=!0);break;case`replaceImage`:t.selectedImage.value&&_t(n,t.selectedImage.value.pmPos);break;case`deleteImage`:if(t.selectedImage.value){let e=t.selectedImage.value.pmPos,r=n.state.doc.nodeAt(e);r&&(n.dispatch(n.state.tr.delete(e,e+r.nodeSize)),t.selectedImage.value=null)}break;case`addRowAbove`:case`addRowBelow`:case`deleteRow`:case`addColumnLeft`:case`addColumnRight`:case`deleteColumn`:case`mergeCells`:case`splitCell`:{let t=r[e];t&&t()(n.state,e=>n.dispatch(e),n);break}}n.focus()}return{contextMenu:r,imageContextMenu:i,imageContextMenuTextActions:o,handleContextMenu:s,handleSelectedImageContextMenu:u,handleImageWrapSelect:f,handleContextMenuAction:p}}var yt=500;function bt(e){let t=(0,a.ref)(null),n=null;function r(){n!==null&&(clearTimeout(n),n=null)}let i=(0,a.ref)(null),o=0,s=null,c=0,u=!1,f=null,p=(0,a.ref)({currentPage:1,totalPages:1,visible:!1}),m=null;function h(t,n){return st(e.pagesRef.value,e.editorView.value,t,n)}function g(t,n){let r=e.editorView.value;if(!r)return;let i=r.state.doc.resolve(t),a=n===void 0?i:r.state.doc.resolve(n),o=l.TextSelection.between(i,a);r.dispatch(r.state.tr.setSelection(o))}function _(t){ot(e.pagesRef.value,e.pagesViewportRef.value,t)}function v(t){ct(e.pagesRef.value,t,g)}function y(t){lt(e.pagesRef.value,t,g)}function b(t){let n=e.editorView.value;if(!n)return;let r=null;if(n.state.doc.descendants((e,n)=>r===null?(e.attrs?.bookmarks)?.some(e=>e.name===t)?(r=n,!1):!0:!1),r!==null){_(r);try{g(Math.min(r+1,n.state.doc.content.size))}catch{g(r)}}}function x(a){if(e.readOnly.value||u)return;let o=e.pagesRef.value;if(!o)return;let s=e.pagesViewportRef.value;if(!s)return;let c=(0,T.detectTableInsertHover)({mouseX:a.clientX,mouseY:a.clientY,pagesContainer:o,target:a.target,hfEditMode:i.value?.position??null});if(!c){n===null&&(n=setTimeout(()=>{t.value=null,n=null},T.TABLE_INSERT_HIDE_DELAY_MS));return}let l=s.getBoundingClientRect();t.value={type:c.type,x:c.clientX-l.left,y:c.clientY-l.top,cellPmPos:c.cellPmPos},r()}function S(n){n.preventDefault(),n.stopPropagation();let r=t.value,i=e.editorView.value;if(!r||!i)return;let a=i.state.tr.setSelection(l.TextSelection.create(i.state.doc,r.cellPmPos+1));i.dispatch(a);let o=e.getCommands(),s=r.type===`row`?o.addRowBelow?.():o.addColumnRight?.();s&&(s(i.state,e=>i.dispatch(e),i),t.value=null,i.focus())}function C(t){let n=t.target?.closest(`a[href]`);if(!n)return;t.preventDefault();let r=n.getAttribute(`href`)||``;if(!r)return;if(r.startsWith(`#`)){let e=r.slice(1);e&&b(e);return}let i=e.editorView.value;if(i&&i.state.selection.from!==i.state.selection.to)return;let a=e.pagesViewportRef.value;if(!a)return;let o=a.getBoundingClientRect(),s=n.getBoundingClientRect();e.hyperlinkPopupData.value={href:r,displayText:n.textContent||``,tooltip:n.getAttribute(`title`)||void 0,position:{top:s.bottom-o.top+a.scrollTop+4,left:s.left-o.left+a.scrollLeft}}}function w(t){let n=t.target,r=n.closest(`.layout-page-header`),a=n.closest(`.layout-page-footer`),o=r??a;if(!o)return;let s=r?`header`:`footer`,c=e.getDocument();if(!c?.package)return;let l=c.package.document?.sections?.[0]?.properties??c.package.document?.finalSectionProperties??null,u=s===`header`?l?.headerReferences:l?.footerReferences,d=s===`header`?c.package.headers:c.package.footers;if(!u||!d)return;let f=(u.find(e=>e.type===`default`)??u.find(e=>e.type===`first`))?.rId??null,p=f?d.get(f)??null:null,m=e.pagesViewportRef.value;if(!m)return;let h=o.getBoundingClientRect(),g=m.getBoundingClientRect(),_=e.zoom.value||1;i.value={position:s,rId:f,headerFooter:p,targetRect:{top:(h.top-g.top+m.scrollTop)/_,left:(h.left-g.left+m.scrollLeft)/_,width:h.width/_,height:h.height/_}}}function E(t){let n=e.getDocument(),r=i.value;if(!n?.package||!r)return;let a=r.position===`header`?n.package.headers:n.package.footers;if(!a||!r.rId)return;let o=a.get(r.rId);o&&(o.content=t),e.reLayout(),e.emit(`change`,n)}function D(){let t=e.getDocument(),n=i.value;if(!t?.package||!n||!n.rId)return;let r=(n.position===`header`?t.package.headers:t.package.footers)?.get(n.rId);r&&(r.content=[]),i.value=null,e.reLayout(),e.emit(`change`,t)}function O(t){if(t.button!==0||e.imageInteracting.value)return;let n=e.editorView.value;if(!n||!e.readOnly.value&&e.tableResize.tryStartResize(t,n))return;let r=t.target,i=(0,d.findImageElement)(r);if(i){t.preventDefault(),t.stopPropagation();let r=Number(i.dataset.pmStart);if(!isNaN(r)){try{let e=l.NodeSelection.create(n.state.doc,r);n.dispatch(n.state.tr.setSelection(e))}catch{}e.selectedImage.value={element:i,pmPos:r,width:i.offsetWidth,height:i.offsetHeight},e.clearOverlay()}n.focus();return}e.selectedImage.value=null,t.preventDefault();let a=h(t.clientX,t.clientY);if(a===null){n.focus();return}let p=Date.now();if(p-o<yt&&s===a?c++:c=1,o=p,s=a,c===2)v(a);else if(c>=3)y(a),c=0;else{if(t.shiftKey){let{from:e}=n.state.selection;g(e,a)}else g(a);f=a,u=!0}n.focus()}function k(e){if(!u||f===null)return;let t=h(e.clientX,e.clientY);t!==null&&t!==f&&g(f,t)}function A(){u=!1}function j(){let t=e.pagesViewportRef.value,n=e.layout.value;if(!t||!n||n.pages.length===0)return;let r=t.scrollTop,i=n.pages.length,a=r+t.clientHeight/2,o=24,s=1;for(let e=0;e<n.pages.length;e++){let t=n.pages[e].size.h,r=o+t;if(a<r){s=e+1;break}o=r+24,s=e+2}s=Math.min(s,i),p.value={currentPage:s,totalPages:i,visible:!0},m&&clearTimeout(m),m=setTimeout(()=>{p.value={...p.value,visible:!1}},600)}return(0,a.onMounted)(()=>{window.addEventListener(`mousemove`,k),window.addEventListener(`mouseup`,A),e.pagesViewportRef.value?.addEventListener(`scroll`,j,{passive:!0})}),(0,a.onBeforeUnmount)(()=>{r(),window.removeEventListener(`mousemove`,k),window.removeEventListener(`mouseup`,A),e.pagesViewportRef.value?.removeEventListener(`scroll`,j),m&&clearTimeout(m)}),{tableInsertButton:t,hfEdit:i,scrollPageInfo:p,resolvePos:h,setPmSelection:g,scrollVisiblePositionIntoView:_,navigateToBookmark:b,handlePagesMouseDown:O,handlePagesMouseMove:x,handlePagesClick:C,handlePagesDoubleClick:w,handleTableInsertClick:S,clearTableInsertTimer:r,handleHfSave:E,handleHfRemove:D}}function xt(e){let t=null,n=null;function i(){let r=e.pagesRef.value;r&&(r.querySelectorAll(`.vue-sel-rect, .vue-caret`).forEach(e=>e.remove()),t!==null&&(clearInterval(t),t=null),n=null)}function o(){let a=e.pagesRef.value,o=e.editorView.value;if(!a||!o)return;i();let s=o.state.selection;if(s instanceof l.NodeSelection&&s.node.type.name===`image`){let t=null;for(let e of a.querySelectorAll(`[data-pm-start="${s.from}"]`)){let n=(0,d.findImageElement)(e);if(n){t=n;break}}if(t){let n=e.selectedImage.value;(!n||n.element!==t||n.pmPos!==s.from||n.width!==t.offsetWidth||n.height!==t.offsetHeight)&&(e.selectedImage.value={element:t,pmPos:s.from,width:t.offsetWidth,height:t.offsetHeight});return}}if(e.selectedImage.value)return;let{from:c,to:f,empty:p}=o.state.selection,m=a.scrollTop,h=a.scrollLeft;if(p){let e=(0,u.getCaretPositionFromDom)(a,c,a.getBoundingClientRect());if(e){let i=document.createElement(`div`);i.className=`vue-caret`,i.style.cssText=`
3
3
  position: absolute;
4
4
  left: ${e.x+h}px;
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ import { a as p, c as m, h, i as g, o as _, s as ee, t as v, x as y } from "./Me
3
3
  import { t as b } from "./_plugin-vue_export-helper-B52Kst-M.js";
4
4
  import { n as x } from "./RenderedDomContext-CHc18N_2.js";
5
5
  import { t as te } from "./zIndex-CxELVe_L.js";
6
- import { n as ne, r as re, t as S } from "./useTableResize-1oSe9Kjk.js";
6
+ import { n as ne, r as re, t as S } from "./useTableResize-CGoGUnyP.js";
7
7
  import { Fragment as C, Teleport as ie, computed as w, createApp as ae, createBlock as T, createCommentVNode as E, createElementBlock as D, createElementVNode as O, createSlots as oe, createStaticVNode as se, createVNode as k, defineComponent as A, h as ce, nextTick as j, normalizeClass as le, normalizeStyle as M, onBeforeUnmount as N, onMounted as P, openBlock as F, ref as I, renderList as L, renderSlot as ue, resolveDynamicComponent as de, shallowRef as fe, toDisplayString as R, unref as z, vModelText as B, watch as V, withCtx as H, withDirectives as U, withKeys as W, withModifiers as G } from "vue";
8
8
  import { clearFormatting as pe, findHyperlinkRangeAt as K } from "@eigenpal/docx-editor-core/prosemirror/commands/formatting";
9
9
  import { SIDEBAR_DOCUMENT_SHIFT as me, findWordBoundaries as he, pixelsToEmu as ge, readDocxFileFromInput as q, toArrayBuffer as _e } from "@eigenpal/docx-editor-core/utils";
@@ -7,17 +7,20 @@ import "prosemirror-view/style/prosemirror.css";
7
7
  import { parseDocx as d } from "@eigenpal/docx-editor-core/docx/parser";
8
8
  import { fromProseDoc as f } from "@eigenpal/docx-editor-core/prosemirror/conversion/fromProseDoc";
9
9
  import { toFlowBlocks as p } from "@eigenpal/docx-editor-core/layout-bridge/toFlowBlocks";
10
- import { measureParagraph as m } from "@eigenpal/docx-editor-core/layout-bridge/measuring";
11
- import { buildFootnoteContentMap as h, buildFootnoteRenderItems as g, collectFootnoteRefs as ee, convertHeaderFooterToContent as _, getMargins as v, getPageSize as y, measureTableBlock as b, resolveHeaderFooter as x, stabilizeFootnoteLayout as S } from "@eigenpal/docx-editor-core/layout-bridge";
12
- import { DEFAULT_TEXTBOX_MARGINS as C, DEFAULT_TEXTBOX_WIDTH as w, assertExhaustiveFlowBlock as T, layoutDocument as E } from "@eigenpal/docx-editor-core/layout-engine";
13
- import { renderPages as D } from "@eigenpal/docx-editor-core/layout-painter/renderPage";
10
+ import { measureBlocksWithFloats as m, measureParagraph as h } from "@eigenpal/docx-editor-core/layout-bridge/measuring";
11
+ import { buildFootnoteContentMap as g, buildFootnoteRenderItems as _, collectFootnoteRefs as v, convertHeaderFooterToContent as y, getMargins as b, getPageSize as x, measureTableBlock as S, resolveHeaderFooter as C, stabilizeFootnoteLayout as w } from "@eigenpal/docx-editor-core/layout-bridge";
12
+ import { DEFAULT_TEXTBOX_MARGINS as T, DEFAULT_TEXTBOX_WIDTH as E, assertExhaustiveFlowBlock as D, layoutDocument as ee } from "@eigenpal/docx-editor-core/layout-engine";
13
+ import { renderPages as te } from "@eigenpal/docx-editor-core/layout-painter/renderPage";
14
14
  import "@eigenpal/docx-editor-core/prosemirror/editor.css";
15
15
  //#region src/composables/useDocxEditor.ts
16
16
  var O = 24;
17
- function k(e, t) {
17
+ function k(e, t, n, r) {
18
18
  switch (e.kind) {
19
- case "paragraph": return m(e, t);
20
- case "table": return b(e, t, k);
19
+ case "paragraph": return h(e, t, {
20
+ floatingZones: n,
21
+ paragraphYOffset: r ?? 0
22
+ });
23
+ case "table": return S(e, t, k);
21
24
  case "image": {
22
25
  let t = e;
23
26
  return {
@@ -27,10 +30,10 @@ function k(e, t) {
27
30
  };
28
31
  }
29
32
  case "textBox": {
30
- let t = e, n = t.margins ?? C, r = (t.width ?? w) - n.left - n.right, i = t.content.map((e) => m(e, r)), a = i.reduce((e, t) => e + t.totalHeight, 0), o = t.height ?? a + n.top + n.bottom;
33
+ let t = e, n = t.margins ?? T, r = (t.width ?? E) - n.left - n.right, i = t.content.map((e) => h(e, r)), a = i.reduce((e, t) => e + t.totalHeight, 0), o = t.height ?? a + n.top + n.bottom;
31
34
  return {
32
35
  kind: "textBox",
33
- width: t.width ?? w,
36
+ width: t.width ?? E,
34
37
  height: o,
35
38
  innerMeasures: i
36
39
  };
@@ -38,41 +41,42 @@ function k(e, t) {
38
41
  case "pageBreak": return { kind: "pageBreak" };
39
42
  case "columnBreak": return { kind: "columnBreak" };
40
43
  case "sectionBreak": return { kind: "sectionBreak" };
41
- default: T(e, "vue useDocxEditor measureBlock");
44
+ default: D(e, "vue useDocxEditor measureBlock");
42
45
  }
43
46
  }
44
47
  function A(e, t) {
45
- return e.map((e) => k(e, t));
48
+ return m(e, t, k);
46
49
  }
47
50
  function j(e) {
48
- let { hiddenContainer: n, pagesContainer: m, readOnly: b = !1, pageGap: C = O, onChange: w, onError: T, onSelectionUpdate: k, externalPlugins: j = [], syncCoordinator: M } = e, N = i(null), P = i(null), F = i(null), I = r(!1), L = r(null), R = i(null), z = c;
49
- function B(e) {
51
+ let { hiddenContainer: n, pagesContainer: m, readOnly: h = !1, pageGap: S = O, onChange: T, onError: E, onSelectionUpdate: D, externalPlugins: k = [], syncCoordinator: j } = e, M = i(null), N = i(null), P = i(null), F = r(!1), I = r(null), L = i(null), R = c;
52
+ function z(e) {
50
53
  let t = m.value;
51
- if (!t || !N.value) return;
52
- let n = M?.getStateSeq() ?? 0;
53
- M?.onLayoutStart();
54
- let r = N.value.package?.document, i = r?.sections?.[0]?.properties ?? r?.finalSectionProperties ?? null, a = r?.finalSectionProperties ?? i, o = y(i), s = v(i), c = y(a), l = v(a), u = o.w - s.left - s.right, d = o.h - s.top - s.bottom, f = N.value.package?.theme ?? null, b = N.value.package?.styles ?? null;
54
+ if (!t || !M.value) return;
55
+ let n = j?.getStateSeq() ?? 0;
56
+ j?.onLayoutStart();
57
+ let r = M.value.package?.document, i = r?.sections?.[0]?.properties ?? r?.finalSectionProperties ?? null, a = r?.finalSectionProperties ?? i, o = x(i), s = b(i), c = x(a), l = b(a), u = o.w - s.left - s.right, d = o.h - s.top - s.bottom, f = M.value.package?.theme ?? null, h = M.value.package?.styles ?? null;
55
58
  try {
56
59
  let n = p(e.doc, {
57
60
  theme: f,
58
61
  pageContentHeight: d
59
- }), r = A(n, u), { header: a, footer: m, firstHeader: v, firstFooter: y } = x(N.value, i), w = {
62
+ }), r = A(n, u), { header: a, footer: m, firstHeader: b, firstFooter: x } = C(M.value, i), T = {
60
63
  section: "header",
61
64
  pageSize: o,
62
65
  margins: s
63
- }, T = {
66
+ }, E = {
64
67
  section: "footer",
65
68
  pageSize: o,
66
69
  margins: s
67
- }, O = {
68
- styles: b,
70
+ }, D = e.doc.attrs?.defaultTabStopTwips, O = {
71
+ styles: h,
69
72
  theme: f,
70
- measureBlocks: A
71
- }, k = _(a, u, w, O), j = _(m, u, T, O), M = i?.titlePg === !0, P = M ? _(v, u, w, O) : void 0, F = M ? _(y, u, T, O) : void 0, I = s.header ?? 48, L = s.footer ?? 48, z = s.top - I, B = s.bottom - L, V = (e) => e ? e.visualBottom ?? e.height : 0, H = (e) => e ? Math.max((e.visualBottom ?? e.height) - (e.visualTop ?? 0), e.height) : 0, U = Math.max(V(k), V(P)), W = Math.max(H(j), H(F)), G = U > z, K = W > B;
73
+ measureBlocks: A,
74
+ defaultTabStopTwips: D
75
+ }, k = y(a, u, T, O), j = y(m, u, E, O), N = i?.titlePg === !0, P = N ? y(b, u, T, O) : void 0, F = N ? y(x, u, E, O) : void 0, I = s.header ?? 48, R = s.footer ?? 48, z = s.top - I, B = s.bottom - R, V = (e) => e ? e.visualBottom ?? e.height : 0, H = (e) => e ? Math.max((e.visualBottom ?? e.height) - (e.visualTop ?? 0), e.height) : 0, U = Math.max(V(k), V(P)), W = Math.max(H(j), H(F)), G = U > z, K = W > B;
72
76
  if (G || K) {
73
77
  let e = (e) => {
74
78
  let t = { ...e };
75
- return G && (t.top = Math.max(e.top, I + U)), K && (t.bottom = Math.max(e.bottom, L + W)), t;
79
+ return G && (t.top = Math.max(e.top, I + U)), K && (t.bottom = Math.max(e.bottom, R + W)), t;
76
80
  };
77
81
  s = e(s), l = e(l);
78
82
  for (let t of n) {
@@ -86,15 +90,16 @@ function j(e) {
86
90
  margins: s,
87
91
  finalPageSize: c,
88
92
  finalMargins: l,
89
- pageGap: C
90
- }, J = ee(n), Y = J.length > 0 && !!N.value.package?.footnotes, X = E(n, r, q), Z = /* @__PURE__ */ new Map(), Q = /* @__PURE__ */ new Map();
93
+ pageGap: S
94
+ }, J = v(n), Y = J.length > 0 && !!M.value.package?.footnotes, X = ee(n, r, q), Z = /* @__PURE__ */ new Map(), Q = /* @__PURE__ */ new Map();
91
95
  if (Y) {
92
- Q = h(N.value.package.footnotes, J, u, {
93
- styles: b,
96
+ Q = g(M.value.package.footnotes, J, u, {
97
+ styles: h,
94
98
  theme: f,
95
- measureBlocks: A
99
+ measureBlocks: A,
100
+ defaultTabStopTwips: D
96
101
  });
97
- let e = S({
102
+ let e = w({
98
103
  blocks: n,
99
104
  measures: r,
100
105
  layoutOpts: q,
@@ -104,7 +109,7 @@ function j(e) {
104
109
  });
105
110
  X = e.layout, Z = e.pageFootnoteMap;
106
111
  }
107
- R.value = X;
112
+ L.value = X;
108
113
  let $ = /* @__PURE__ */ new Map();
109
114
  for (let e = 0; e < n.length; e++) {
110
115
  let t = n[e], i = r[e];
@@ -113,9 +118,9 @@ function j(e) {
113
118
  measure: i
114
119
  });
115
120
  }
116
- let te = Y ? g(Z, Q, N.value) : void 0;
117
- D(X.pages, t, {
118
- pageGap: C,
121
+ let ne = Y ? _(Z, Q, M.value) : void 0;
122
+ te(X.pages, t, {
123
+ pageGap: S,
119
124
  showShadow: !0,
120
125
  pageBackground: "#fff",
121
126
  blockLookup: $,
@@ -124,100 +129,100 @@ function j(e) {
124
129
  footerContent: j,
125
130
  firstPageHeaderContent: P,
126
131
  firstPageFooterContent: F,
127
- titlePage: M,
128
- footnotesByPage: te
132
+ titlePage: N,
133
+ footnotesByPage: ne
129
134
  }), t.style.overflowY = "auto", t.style.minHeight = "0";
130
135
  for (let e of Array.from(t.children)) e.style.flexShrink = "0";
131
136
  } catch (e) {
132
- console.error("[useDocxEditor] Layout pipeline error:", e), T?.(e instanceof Error ? e : Error(String(e)));
137
+ console.error("[useDocxEditor] Layout pipeline error:", e), E?.(e instanceof Error ? e : Error(String(e)));
133
138
  } finally {
134
- M?.onLayoutComplete(n);
139
+ j?.onLayoutComplete(n);
135
140
  }
136
141
  }
137
- function V() {
142
+ function B() {
138
143
  let e = n.value;
139
144
  if (!e) return;
140
- let t = N.value ? u(N.value, { styles: N.value.package?.styles ?? void 0 }) : l(), r = [...j, ...z.getPlugins() ?? []], i = o.create({
145
+ let t = M.value ? u(M.value, { styles: M.value.package?.styles ?? void 0 }) : l(), r = [...k, ...R.getPlugins() ?? []], i = o.create({
141
146
  doc: t,
142
- schema: z.getSchema(),
147
+ schema: R.getSchema(),
143
148
  plugins: r
144
149
  });
145
- F.value = i;
150
+ P.value = i;
146
151
  let c = new s(e, {
147
152
  state: i,
148
- editable: () => !a(b),
153
+ editable: () => !a(h),
149
154
  dispatchTransaction(e) {
150
155
  if (!c) return;
151
156
  let t = c.state.apply(e);
152
- if (c.updateState(t), F.value = t, e.docChanged) {
153
- M?.incrementStateSeq(), B(t);
157
+ if (c.updateState(t), P.value = t, e.docChanged) {
158
+ j?.incrementStateSeq(), z(t);
154
159
  try {
155
- if (N.value) {
156
- let e = f(t.doc, N.value);
157
- N.value = e, w?.(e);
160
+ if (M.value) {
161
+ let e = f(t.doc, M.value);
162
+ M.value = e, T?.(e);
158
163
  }
159
164
  } catch (e) {
160
165
  console.error("[useDocxEditor] fromProseDoc error:", e);
161
166
  }
162
167
  }
163
- M?.requestRender(), k?.();
168
+ j?.requestRender(), D?.();
164
169
  }
165
170
  });
166
- P.value = c, I.value = !0, B(i), M?.requestRender();
171
+ N.value = c, F.value = !0, z(i), j?.requestRender();
167
172
  }
168
- function H() {
169
- P.value &&= (P.value.destroy(), null), F.value = null, I.value = !1;
173
+ function V() {
174
+ N.value &&= (N.value.destroy(), null), P.value = null, F.value = !1;
170
175
  }
171
- async function U(e) {
172
- L.value = null, I.value = !1;
176
+ async function H(e) {
177
+ I.value = null, F.value = !1;
173
178
  try {
174
179
  let t;
175
- t = e instanceof Blob || e instanceof File ? await e.arrayBuffer() : e instanceof Uint8Array ? e.buffer.slice(e.byteOffset, e.byteOffset + e.byteLength) : e, N.value = await d(t), H(), V();
180
+ t = e instanceof Blob || e instanceof File ? await e.arrayBuffer() : e instanceof Uint8Array ? e.buffer.slice(e.byteOffset, e.byteOffset + e.byteLength) : e, M.value = await d(t), V(), B();
176
181
  } catch (e) {
177
182
  let t = e instanceof Error ? e : Error(String(e));
178
- L.value = t.message, T?.(t);
183
+ I.value = t.message, E?.(t);
179
184
  }
180
185
  }
181
- function W(e) {
182
- L.value = null, N.value = e, H(), V();
186
+ function U(e) {
187
+ I.value = null, M.value = e, V(), B();
183
188
  }
184
- async function G() {
185
- if (!P.value || !N.value) return null;
186
- let { repackDocx: e, createDocx: t } = await import("@eigenpal/docx-editor-core/docx/rezip"), { injectReplyRangeMarkers: n, injectTCReplyRangeMarkers: r } = await import("@eigenpal/docx-editor-core/docx"), i = f(P.value.state.doc, N.value), a = i.package.document?.comments ?? [];
189
+ async function W() {
190
+ if (!N.value || !M.value) return null;
191
+ let { repackDocx: e, createDocx: t } = await import("@eigenpal/docx-editor-core/docx/rezip"), { injectReplyRangeMarkers: n, injectTCReplyRangeMarkers: r } = await import("@eigenpal/docx-editor-core/docx"), i = f(N.value.state.doc, M.value), a = i.package.document?.comments ?? [];
187
192
  i.package.document?.content && a.length > 0 && (n(i.package.document.content, a), r(i.package.document.content, a));
188
193
  let o;
189
194
  return o = i.originalBuffer ? await e(i) : await t(i), new Blob([o], { type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document" });
190
195
  }
196
+ function G() {
197
+ N.value?.focus();
198
+ }
191
199
  function K() {
192
- P.value?.focus();
200
+ V(), M.value = null;
193
201
  }
194
202
  function q() {
195
- H(), N.value = null;
196
- }
197
- function J() {
198
- return N.value;
203
+ return M.value;
199
204
  }
200
205
  t(() => {
201
- q();
206
+ K();
202
207
  });
203
- function Y() {
204
- return z.getCommands();
208
+ function J() {
209
+ return R.getCommands();
205
210
  }
206
211
  return {
207
- editorView: P,
208
- editorState: F,
209
- isReady: I,
210
- parseError: L,
211
- layout: R,
212
- loadBuffer: U,
213
- loadDocument: W,
214
- save: G,
215
- focus: K,
216
- destroy: q,
217
- getDocument: J,
218
- getCommands: Y,
212
+ editorView: N,
213
+ editorState: P,
214
+ isReady: F,
215
+ parseError: I,
216
+ layout: L,
217
+ loadBuffer: H,
218
+ loadDocument: U,
219
+ save: W,
220
+ focus: G,
221
+ destroy: K,
222
+ getDocument: q,
223
+ getCommands: J,
219
224
  reLayout() {
220
- P.value && B(P.value.state);
225
+ N.value && z(N.value.state);
221
226
  }
222
227
  };
223
228
  }
@@ -0,0 +1 @@
1
+ let e=require(`vue`),t=require(`prosemirror-state`),n=require(`prosemirror-view`),r=require(`@eigenpal/docx-editor-core/prosemirror/schema`),i=require(`@eigenpal/docx-editor-core/prosemirror/conversion`);require(`prosemirror-view/style/prosemirror.css`);let a=require(`@eigenpal/docx-editor-core/docx/parser`),o=require(`@eigenpal/docx-editor-core/prosemirror/conversion/fromProseDoc`),s=require(`@eigenpal/docx-editor-core/layout-bridge/toFlowBlocks`),c=require(`@eigenpal/docx-editor-core/layout-bridge/measuring`),l=require(`@eigenpal/docx-editor-core/layout-bridge`),u=require(`@eigenpal/docx-editor-core/layout-engine`),d=require(`@eigenpal/docx-editor-core/layout-painter/renderPage`);require(`@eigenpal/docx-editor-core/prosemirror/editor.css`);var f=24;function p(e,t,n,r){switch(e.kind){case`paragraph`:return(0,c.measureParagraph)(e,t,{floatingZones:n,paragraphYOffset:r??0});case`table`:return(0,l.measureTableBlock)(e,t,p);case`image`:{let t=e;return{kind:`image`,width:t.width??100,height:t.height??100}}case`textBox`:{let t=e,n=t.margins??u.DEFAULT_TEXTBOX_MARGINS,r=(t.width??u.DEFAULT_TEXTBOX_WIDTH)-n.left-n.right,i=t.content.map(e=>(0,c.measureParagraph)(e,r)),a=i.reduce((e,t)=>e+t.totalHeight,0),o=t.height??a+n.top+n.bottom;return{kind:`textBox`,width:t.width??u.DEFAULT_TEXTBOX_WIDTH,height:o,innerMeasures:i}}case`pageBreak`:return{kind:`pageBreak`};case`columnBreak`:return{kind:`columnBreak`};case`sectionBreak`:return{kind:`sectionBreak`};default:(0,u.assertExhaustiveFlowBlock)(e,`vue useDocxEditor measureBlock`)}}function m(e,t){return(0,c.measureBlocksWithFloats)(e,t,p)}function h(c){let{hiddenContainer:p,pagesContainer:h,readOnly:g=!1,pageGap:_=f,onChange:v,onError:y,onSelectionUpdate:b,externalPlugins:x=[],syncCoordinator:S}=c,C=(0,e.shallowRef)(null),w=(0,e.shallowRef)(null),T=(0,e.shallowRef)(null),E=(0,e.ref)(!1),D=(0,e.ref)(null),O=(0,e.shallowRef)(null),k=r.singletonManager;function A(e){let t=h.value;if(!t||!C.value)return;let n=S?.getStateSeq()??0;S?.onLayoutStart();let r=C.value.package?.document,i=r?.sections?.[0]?.properties??r?.finalSectionProperties??null,a=r?.finalSectionProperties??i,o=(0,l.getPageSize)(i),c=(0,l.getMargins)(i),f=(0,l.getPageSize)(a),p=(0,l.getMargins)(a),g=o.w-c.left-c.right,v=o.h-c.top-c.bottom,b=C.value.package?.theme??null,x=C.value.package?.styles??null;try{let n=(0,s.toFlowBlocks)(e.doc,{theme:b,pageContentHeight:v}),r=m(n,g),{header:a,footer:h,firstHeader:y,firstFooter:S}=(0,l.resolveHeaderFooter)(C.value,i),w={section:`header`,pageSize:o,margins:c},T={section:`footer`,pageSize:o,margins:c},E=e.doc.attrs?.defaultTabStopTwips,D={styles:x,theme:b,measureBlocks:m,defaultTabStopTwips:E},k=(0,l.convertHeaderFooterToContent)(a,g,w,D),A=(0,l.convertHeaderFooterToContent)(h,g,T,D),j=i?.titlePg===!0,M=j?(0,l.convertHeaderFooterToContent)(y,g,w,D):void 0,N=j?(0,l.convertHeaderFooterToContent)(S,g,T,D):void 0,P=c.header??48,F=c.footer??48,I=c.top-P,L=c.bottom-F,R=e=>e?e.visualBottom??e.height:0,z=e=>e?Math.max((e.visualBottom??e.height)-(e.visualTop??0),e.height):0,B=Math.max(R(k),R(M)),V=Math.max(z(A),z(N)),H=B>I,U=V>L;if(H||U){let e=e=>{let t={...e};return H&&(t.top=Math.max(e.top,P+B)),U&&(t.bottom=Math.max(e.bottom,F+V)),t};c=e(c),p=e(p);for(let t of n){if(t.kind!==`sectionBreak`)continue;let n=t;n.margins&&=e(n.margins)}}let W={pageSize:o,margins:c,finalPageSize:f,finalMargins:p,pageGap:_},G=(0,l.collectFootnoteRefs)(n),K=G.length>0&&!!C.value.package?.footnotes,q=(0,u.layoutDocument)(n,r,W),J=new Map,Y=new Map;if(K){Y=(0,l.buildFootnoteContentMap)(C.value.package.footnotes,G,g,{styles:x,theme:b,measureBlocks:m,defaultTabStopTwips:E});let e=(0,l.stabilizeFootnoteLayout)({blocks:n,measures:r,layoutOpts:W,footnoteRefs:G,footnoteContentMap:Y,initialLayout:q});q=e.layout,J=e.pageFootnoteMap}O.value=q;let X=new Map;for(let e=0;e<n.length;e++){let t=n[e],i=r[e];t&&i&&X.set(String(t.id),{block:t,measure:i})}let Z=K?(0,l.buildFootnoteRenderItems)(J,Y,C.value):void 0;(0,d.renderPages)(q.pages,t,{pageGap:_,showShadow:!0,pageBackground:`#fff`,blockLookup:X,theme:b,headerContent:k,footerContent:A,firstPageHeaderContent:M,firstPageFooterContent:N,titlePage:j,footnotesByPage:Z}),t.style.overflowY=`auto`,t.style.minHeight=`0`;for(let e of Array.from(t.children))e.style.flexShrink=`0`}catch(e){console.error(`[useDocxEditor] Layout pipeline error:`,e),y?.(e instanceof Error?e:Error(String(e)))}finally{S?.onLayoutComplete(n)}}function j(){let r=p.value;if(!r)return;let a=C.value?(0,i.toProseDoc)(C.value,{styles:C.value.package?.styles??void 0}):(0,i.createEmptyDoc)(),s=[...x,...k.getPlugins()??[]],c=t.EditorState.create({doc:a,schema:k.getSchema(),plugins:s});T.value=c;let l=new n.EditorView(r,{state:c,editable:()=>!(0,e.unref)(g),dispatchTransaction(e){if(!l)return;let t=l.state.apply(e);if(l.updateState(t),T.value=t,e.docChanged){S?.incrementStateSeq(),A(t);try{if(C.value){let e=(0,o.fromProseDoc)(t.doc,C.value);C.value=e,v?.(e)}}catch(e){console.error(`[useDocxEditor] fromProseDoc error:`,e)}}S?.requestRender(),b?.()}});w.value=l,E.value=!0,A(c),S?.requestRender()}function M(){w.value&&=(w.value.destroy(),null),T.value=null,E.value=!1}async function N(e){D.value=null,E.value=!1;try{let t;t=e instanceof Blob||e instanceof File?await e.arrayBuffer():e instanceof Uint8Array?e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength):e,C.value=await(0,a.parseDocx)(t),M(),j()}catch(e){let t=e instanceof Error?e:Error(String(e));D.value=t.message,y?.(t)}}function P(e){D.value=null,C.value=e,M(),j()}async function F(){if(!w.value||!C.value)return null;let{repackDocx:e,createDocx:t}=await import(`@eigenpal/docx-editor-core/docx/rezip`),{injectReplyRangeMarkers:n,injectTCReplyRangeMarkers:r}=await import(`@eigenpal/docx-editor-core/docx`),i=(0,o.fromProseDoc)(w.value.state.doc,C.value),a=i.package.document?.comments??[];i.package.document?.content&&a.length>0&&(n(i.package.document.content,a),r(i.package.document.content,a));let s;return s=i.originalBuffer?await e(i):await t(i),new Blob([s],{type:`application/vnd.openxmlformats-officedocument.wordprocessingml.document`})}function I(){w.value?.focus()}function L(){M(),C.value=null}function R(){return C.value}(0,e.onBeforeUnmount)(()=>{L()});function z(){return k.getCommands()}return{editorView:w,editorState:T,isReady:E,parseError:D,layout:O,loadBuffer:N,loadDocument:P,save:F,focus:I,destroy:L,getDocument:R,getCommands:z,reLayout(){w.value&&A(w.value.state)}}}var g=.25,_=4,v=.1,y=[.25,.5,.75,1,1.25,1.5,2,3,4];function b(t=1){let n=(0,e.ref)(Math.max(g,Math.min(_,t))),r=(0,e.computed)(()=>Math.round(n.value*100)),i=(0,e.computed)(()=>n.value<=g),a=(0,e.computed)(()=>n.value>=_);function o(e){n.value=Math.max(g,Math.min(_,Math.round(e*100)/100))}function s(){o(n.value+v)}function c(){o(n.value-v)}function l(){o(1)}function u(e){(e.ctrlKey||e.metaKey)&&(e.preventDefault(),e.deltaY<0?s():c())}function d(e){(e.ctrlKey||e.metaKey)&&(e.shiftKey||e.altKey||(e.key===`=`||e.key===`+`?(e.preventDefault(),s()):e.key===`-`?(e.preventDefault(),c()):e.key===`0`&&(e.preventDefault(),l())))}function f(){(0,e.onMounted)(()=>document.addEventListener(`keydown`,d)),(0,e.onBeforeUnmount)(()=>document.removeEventListener(`keydown`,d))}return{zoom:n,zoomPercent:r,isMinZoom:i,isMaxZoom:a,setZoom:o,zoomIn:s,zoomOut:c,resetZoom:l,handleWheel:u,handleKeyDown:d,installShortcuts:f,ZOOM_PRESETS:y}}var x=15,S=300,C=200,w=15;function T(){let e={active:!1,startX:0,handle:null,columnIndex:0,tablePmStart:0,origWidths:{left:0,right:0}},t={active:!1,startY:0,handle:null,rowIndex:0,isEdge:!1,tablePmStart:0,origHeight:0},n={active:!1,startX:0,handle:null,columnIndex:0,tablePmStart:0,origWidth:0},r=null;function i(){return e.active||t.active||n.active}function a(i,a){let o=i.target;return o?.classList?o.classList.contains(`layout-table-resize-handle`)?(i.preventDefault(),i.stopPropagation(),r=a,e.active=!0,e.startX=i.clientX,e.handle=o,o.classList.add(`dragging`),e.columnIndex=parseInt(o.dataset.columnIndex??`0`,10),e.tablePmStart=parseInt(o.dataset.tablePmStart??`0`,10),E(a,e),!0):o.classList.contains(`layout-table-row-resize-handle`)||o.classList.contains(`layout-table-edge-handle-bottom`)?(i.preventDefault(),i.stopPropagation(),r=a,t.active=!0,t.startY=i.clientY,t.handle=o,t.isEdge=o.dataset.isEdge===`bottom`,o.classList.add(`dragging`),t.rowIndex=parseInt(o.dataset.rowIndex??`0`,10),t.tablePmStart=parseInt(o.dataset.tablePmStart??`0`,10),D(a,t,o),!0):o.classList.contains(`layout-table-edge-handle-right`)?(i.preventDefault(),i.stopPropagation(),r=a,n.active=!0,n.startX=i.clientX,n.handle=o,o.classList.add(`dragging`),n.columnIndex=parseInt(o.dataset.columnIndex??`0`,10),n.tablePmStart=parseInt(o.dataset.tablePmStart??`0`,10),O(a,n),!0):!1:!1}function o(r){if(e.active&&e.handle){r.preventDefault();let t=r.clientX-e.startX,n=parseFloat(e.handle.style.left);e.handle.style.left=`${n+t}px`,e.startX=r.clientX;let i=Math.round(t*x),a=e.origWidths.left+i,o=e.origWidths.right-i;a>=S&&o>=S&&(e.origWidths={left:a,right:o});return}if(t.active&&t.handle){r.preventDefault();let e=r.clientY-t.startY,n=parseFloat(t.handle.style.top);t.handle.style.top=`${n+e}px`,t.startY=r.clientY;let i=Math.round(e*x),a=t.origHeight+i;a>=C&&(t.origHeight=a);return}if(n.active&&n.handle){r.preventDefault();let e=r.clientX-n.startX,t=parseFloat(n.handle.style.left);n.handle.style.left=`${t+e}px`,n.startX=r.clientX;let i=Math.round(e*x),a=n.origWidth+i;a>=S&&(n.origWidth=a)}}function s(i){if(e.active){e.active=!1,e.handle?.classList.remove(`dragging`),r&&k(r,e),e.handle=null;return}if(t.active){t.active=!1,t.handle?.classList.remove(`dragging`),r&&A(r,t),t.handle=null;return}n.active&&(n.active=!1,n.handle?.classList.remove(`dragging`),r&&j(r,n),n.handle=null)}function c(){return document.addEventListener(`mousemove`,o),document.addEventListener(`mouseup`,s),()=>{document.removeEventListener(`mousemove`,o),document.removeEventListener(`mouseup`,s)}}return{tryStartResize:a,install:c,isResizing:i}}function E(e,t){let n=e.state.doc.resolve(t.tablePmStart+1);for(let e=n.depth;e>=0;e--){let r=n.node(e);if(r.type.name===`table`){let e=r.attrs.columnWidths;e&&e[t.columnIndex]!==void 0&&e[t.columnIndex+1]!==void 0&&(t.origWidths={left:e[t.columnIndex],right:e[t.columnIndex+1]});return}}}function D(e,t,n){let r=e.state.doc.resolve(t.tablePmStart+1);for(let e=r.depth;e>=0;e--){let i=r.node(e);if(i.type.name===`table`){let e=null,r=0;if(i.forEach(n=>{r===t.rowIndex&&(e=n),r++}),e){let r=e.attrs.height;if(r)t.origHeight=r;else{let e=n.closest(`.layout-table`)?.querySelector(`[data-row-index="${t.rowIndex}"]`),r=e?e.getBoundingClientRect().height:30;t.origHeight=Math.round(r*w)}}return}}}function O(e,t){let n=e.state.doc.resolve(t.tablePmStart+1);for(let e=n.depth;e>=0;e--){let r=n.node(e);if(r.type.name===`table`){let e=r.attrs.columnWidths;e&&e[t.columnIndex]!==void 0&&(t.origWidth=e[t.columnIndex]);return}}}function k(e,t){let n=e.state.doc.resolve(t.tablePmStart+1);for(let r=n.depth;r>=0;r--){let i=n.node(r);if(i.type.name!==`table`)continue;let a=n.before(r),o=e.state.tr,s=[...i.attrs.columnWidths||[]];s[t.columnIndex]=t.origWidths.left,s[t.columnIndex+1]=t.origWidths.right,o.setNodeMarkup(a,void 0,{...i.attrs,columnWidths:s});let c=a+1;i.forEach(e=>{let n=c+1,r=0;e.forEach(e=>{let i=e.attrs.colspan||1;if(r===t.columnIndex||r===t.columnIndex+1){let i=r===t.columnIndex?t.origWidths.left:t.origWidths.right;o.setNodeMarkup(o.mapping.map(n),void 0,{...e.attrs,width:i,widthType:`dxa`,colwidth:null})}n+=e.nodeSize,r+=i}),c+=e.nodeSize}),e.dispatch(o);return}}function A(e,t){let n=e.state.doc.resolve(t.tablePmStart+1);for(let r=n.depth;r>=0;r--){let i=n.node(r);if(i.type.name!==`table`)continue;let a=n.before(r),o=e.state.tr,s=a+1,c=0;i.forEach(e=>{c===t.rowIndex&&o.setNodeMarkup(o.mapping.map(s),void 0,{...e.attrs,height:t.origHeight,heightRule:`atLeast`}),s+=e.nodeSize,c++}),e.dispatch(o);return}}function j(e,t){let n=e.state.doc.resolve(t.tablePmStart+1);for(let r=n.depth;r>=0;r--){let i=n.node(r);if(i.type.name!==`table`)continue;let a=n.before(r),o=e.state.tr,s=[...i.attrs.columnWidths||[]];s[t.columnIndex]=t.origWidth,o.setNodeMarkup(a,void 0,{...i.attrs,columnWidths:s});let c=a+1;i.forEach(e=>{let n=c+1,r=0;e.forEach(e=>{let i=e.attrs.colspan||1;r===t.columnIndex&&o.setNodeMarkup(o.mapping.map(n),void 0,{...e.attrs,width:t.origWidth,widthType:`dxa`,colwidth:null}),n+=e.nodeSize,r+=i}),c+=e.nodeSize}),e.dispatch(o);return}}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return T}});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eigenpal/docx-editor-vue",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Vue 3 DOCX editor adapter for @eigenpal/docx-editor-core.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -83,9 +83,9 @@
83
83
  "vue": "^3.3.0"
84
84
  },
85
85
  "dependencies": {
86
- "@eigenpal/docx-editor-agents": "^1.0.2",
87
- "@eigenpal/docx-editor-core": "^1.0.2",
88
- "@eigenpal/docx-editor-i18n": "^1.0.2"
86
+ "@eigenpal/docx-editor-agents": "^1.0.3",
87
+ "@eigenpal/docx-editor-core": "^1.0.3",
88
+ "@eigenpal/docx-editor-i18n": "^1.0.3"
89
89
  },
90
90
  "keywords": [
91
91
  "docx",
@@ -1 +0,0 @@
1
- let e=require(`vue`),t=require(`prosemirror-state`),n=require(`prosemirror-view`),r=require(`@eigenpal/docx-editor-core/prosemirror/schema`),i=require(`@eigenpal/docx-editor-core/prosemirror/conversion`);require(`prosemirror-view/style/prosemirror.css`);let a=require(`@eigenpal/docx-editor-core/docx/parser`),o=require(`@eigenpal/docx-editor-core/prosemirror/conversion/fromProseDoc`),s=require(`@eigenpal/docx-editor-core/layout-bridge/toFlowBlocks`),c=require(`@eigenpal/docx-editor-core/layout-bridge/measuring`),l=require(`@eigenpal/docx-editor-core/layout-bridge`),u=require(`@eigenpal/docx-editor-core/layout-engine`),d=require(`@eigenpal/docx-editor-core/layout-painter/renderPage`);require(`@eigenpal/docx-editor-core/prosemirror/editor.css`);var f=24;function p(e,t){switch(e.kind){case`paragraph`:return(0,c.measureParagraph)(e,t);case`table`:return(0,l.measureTableBlock)(e,t,p);case`image`:{let t=e;return{kind:`image`,width:t.width??100,height:t.height??100}}case`textBox`:{let t=e,n=t.margins??u.DEFAULT_TEXTBOX_MARGINS,r=(t.width??u.DEFAULT_TEXTBOX_WIDTH)-n.left-n.right,i=t.content.map(e=>(0,c.measureParagraph)(e,r)),a=i.reduce((e,t)=>e+t.totalHeight,0),o=t.height??a+n.top+n.bottom;return{kind:`textBox`,width:t.width??u.DEFAULT_TEXTBOX_WIDTH,height:o,innerMeasures:i}}case`pageBreak`:return{kind:`pageBreak`};case`columnBreak`:return{kind:`columnBreak`};case`sectionBreak`:return{kind:`sectionBreak`};default:(0,u.assertExhaustiveFlowBlock)(e,`vue useDocxEditor measureBlock`)}}function m(e,t){return e.map(e=>p(e,t))}function h(c){let{hiddenContainer:p,pagesContainer:h,readOnly:g=!1,pageGap:_=f,onChange:v,onError:y,onSelectionUpdate:b,externalPlugins:x=[],syncCoordinator:S}=c,C=(0,e.shallowRef)(null),w=(0,e.shallowRef)(null),T=(0,e.shallowRef)(null),E=(0,e.ref)(!1),D=(0,e.ref)(null),O=(0,e.shallowRef)(null),k=r.singletonManager;function A(e){let t=h.value;if(!t||!C.value)return;let n=S?.getStateSeq()??0;S?.onLayoutStart();let r=C.value.package?.document,i=r?.sections?.[0]?.properties??r?.finalSectionProperties??null,a=r?.finalSectionProperties??i,o=(0,l.getPageSize)(i),c=(0,l.getMargins)(i),f=(0,l.getPageSize)(a),p=(0,l.getMargins)(a),g=o.w-c.left-c.right,v=o.h-c.top-c.bottom,b=C.value.package?.theme??null,x=C.value.package?.styles??null;try{let n=(0,s.toFlowBlocks)(e.doc,{theme:b,pageContentHeight:v}),r=m(n,g),{header:a,footer:h,firstHeader:y,firstFooter:S}=(0,l.resolveHeaderFooter)(C.value,i),w={section:`header`,pageSize:o,margins:c},T={section:`footer`,pageSize:o,margins:c},E={styles:x,theme:b,measureBlocks:m},D=(0,l.convertHeaderFooterToContent)(a,g,w,E),k=(0,l.convertHeaderFooterToContent)(h,g,T,E),A=i?.titlePg===!0,j=A?(0,l.convertHeaderFooterToContent)(y,g,w,E):void 0,M=A?(0,l.convertHeaderFooterToContent)(S,g,T,E):void 0,N=c.header??48,P=c.footer??48,F=c.top-N,I=c.bottom-P,L=e=>e?e.visualBottom??e.height:0,R=e=>e?Math.max((e.visualBottom??e.height)-(e.visualTop??0),e.height):0,z=Math.max(L(D),L(j)),B=Math.max(R(k),R(M)),V=z>F,H=B>I;if(V||H){let e=e=>{let t={...e};return V&&(t.top=Math.max(e.top,N+z)),H&&(t.bottom=Math.max(e.bottom,P+B)),t};c=e(c),p=e(p);for(let t of n){if(t.kind!==`sectionBreak`)continue;let n=t;n.margins&&=e(n.margins)}}let U={pageSize:o,margins:c,finalPageSize:f,finalMargins:p,pageGap:_},W=(0,l.collectFootnoteRefs)(n),G=W.length>0&&!!C.value.package?.footnotes,K=(0,u.layoutDocument)(n,r,U),q=new Map,J=new Map;if(G){J=(0,l.buildFootnoteContentMap)(C.value.package.footnotes,W,g,{styles:x,theme:b,measureBlocks:m});let e=(0,l.stabilizeFootnoteLayout)({blocks:n,measures:r,layoutOpts:U,footnoteRefs:W,footnoteContentMap:J,initialLayout:K});K=e.layout,q=e.pageFootnoteMap}O.value=K;let Y=new Map;for(let e=0;e<n.length;e++){let t=n[e],i=r[e];t&&i&&Y.set(String(t.id),{block:t,measure:i})}let X=G?(0,l.buildFootnoteRenderItems)(q,J,C.value):void 0;(0,d.renderPages)(K.pages,t,{pageGap:_,showShadow:!0,pageBackground:`#fff`,blockLookup:Y,theme:b,headerContent:D,footerContent:k,firstPageHeaderContent:j,firstPageFooterContent:M,titlePage:A,footnotesByPage:X}),t.style.overflowY=`auto`,t.style.minHeight=`0`;for(let e of Array.from(t.children))e.style.flexShrink=`0`}catch(e){console.error(`[useDocxEditor] Layout pipeline error:`,e),y?.(e instanceof Error?e:Error(String(e)))}finally{S?.onLayoutComplete(n)}}function j(){let r=p.value;if(!r)return;let a=C.value?(0,i.toProseDoc)(C.value,{styles:C.value.package?.styles??void 0}):(0,i.createEmptyDoc)(),s=[...x,...k.getPlugins()??[]],c=t.EditorState.create({doc:a,schema:k.getSchema(),plugins:s});T.value=c;let l=new n.EditorView(r,{state:c,editable:()=>!(0,e.unref)(g),dispatchTransaction(e){if(!l)return;let t=l.state.apply(e);if(l.updateState(t),T.value=t,e.docChanged){S?.incrementStateSeq(),A(t);try{if(C.value){let e=(0,o.fromProseDoc)(t.doc,C.value);C.value=e,v?.(e)}}catch(e){console.error(`[useDocxEditor] fromProseDoc error:`,e)}}S?.requestRender(),b?.()}});w.value=l,E.value=!0,A(c),S?.requestRender()}function M(){w.value&&=(w.value.destroy(),null),T.value=null,E.value=!1}async function N(e){D.value=null,E.value=!1;try{let t;t=e instanceof Blob||e instanceof File?await e.arrayBuffer():e instanceof Uint8Array?e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength):e,C.value=await(0,a.parseDocx)(t),M(),j()}catch(e){let t=e instanceof Error?e:Error(String(e));D.value=t.message,y?.(t)}}function P(e){D.value=null,C.value=e,M(),j()}async function F(){if(!w.value||!C.value)return null;let{repackDocx:e,createDocx:t}=await import(`@eigenpal/docx-editor-core/docx/rezip`),{injectReplyRangeMarkers:n,injectTCReplyRangeMarkers:r}=await import(`@eigenpal/docx-editor-core/docx`),i=(0,o.fromProseDoc)(w.value.state.doc,C.value),a=i.package.document?.comments??[];i.package.document?.content&&a.length>0&&(n(i.package.document.content,a),r(i.package.document.content,a));let s;return s=i.originalBuffer?await e(i):await t(i),new Blob([s],{type:`application/vnd.openxmlformats-officedocument.wordprocessingml.document`})}function I(){w.value?.focus()}function L(){M(),C.value=null}function R(){return C.value}(0,e.onBeforeUnmount)(()=>{L()});function z(){return k.getCommands()}return{editorView:w,editorState:T,isReady:E,parseError:D,layout:O,loadBuffer:N,loadDocument:P,save:F,focus:I,destroy:L,getDocument:R,getCommands:z,reLayout(){w.value&&A(w.value.state)}}}var g=.25,_=4,v=.1,y=[.25,.5,.75,1,1.25,1.5,2,3,4];function b(t=1){let n=(0,e.ref)(Math.max(g,Math.min(_,t))),r=(0,e.computed)(()=>Math.round(n.value*100)),i=(0,e.computed)(()=>n.value<=g),a=(0,e.computed)(()=>n.value>=_);function o(e){n.value=Math.max(g,Math.min(_,Math.round(e*100)/100))}function s(){o(n.value+v)}function c(){o(n.value-v)}function l(){o(1)}function u(e){(e.ctrlKey||e.metaKey)&&(e.preventDefault(),e.deltaY<0?s():c())}function d(e){(e.ctrlKey||e.metaKey)&&(e.shiftKey||e.altKey||(e.key===`=`||e.key===`+`?(e.preventDefault(),s()):e.key===`-`?(e.preventDefault(),c()):e.key===`0`&&(e.preventDefault(),l())))}function f(){(0,e.onMounted)(()=>document.addEventListener(`keydown`,d)),(0,e.onBeforeUnmount)(()=>document.removeEventListener(`keydown`,d))}return{zoom:n,zoomPercent:r,isMinZoom:i,isMaxZoom:a,setZoom:o,zoomIn:s,zoomOut:c,resetZoom:l,handleWheel:u,handleKeyDown:d,installShortcuts:f,ZOOM_PRESETS:y}}var x=15,S=300,C=200,w=15;function T(){let e={active:!1,startX:0,handle:null,columnIndex:0,tablePmStart:0,origWidths:{left:0,right:0}},t={active:!1,startY:0,handle:null,rowIndex:0,isEdge:!1,tablePmStart:0,origHeight:0},n={active:!1,startX:0,handle:null,columnIndex:0,tablePmStart:0,origWidth:0},r=null;function i(){return e.active||t.active||n.active}function a(i,a){let o=i.target;return o?.classList?o.classList.contains(`layout-table-resize-handle`)?(i.preventDefault(),i.stopPropagation(),r=a,e.active=!0,e.startX=i.clientX,e.handle=o,o.classList.add(`dragging`),e.columnIndex=parseInt(o.dataset.columnIndex??`0`,10),e.tablePmStart=parseInt(o.dataset.tablePmStart??`0`,10),E(a,e),!0):o.classList.contains(`layout-table-row-resize-handle`)||o.classList.contains(`layout-table-edge-handle-bottom`)?(i.preventDefault(),i.stopPropagation(),r=a,t.active=!0,t.startY=i.clientY,t.handle=o,t.isEdge=o.dataset.isEdge===`bottom`,o.classList.add(`dragging`),t.rowIndex=parseInt(o.dataset.rowIndex??`0`,10),t.tablePmStart=parseInt(o.dataset.tablePmStart??`0`,10),D(a,t,o),!0):o.classList.contains(`layout-table-edge-handle-right`)?(i.preventDefault(),i.stopPropagation(),r=a,n.active=!0,n.startX=i.clientX,n.handle=o,o.classList.add(`dragging`),n.columnIndex=parseInt(o.dataset.columnIndex??`0`,10),n.tablePmStart=parseInt(o.dataset.tablePmStart??`0`,10),O(a,n),!0):!1:!1}function o(r){if(e.active&&e.handle){r.preventDefault();let t=r.clientX-e.startX,n=parseFloat(e.handle.style.left);e.handle.style.left=`${n+t}px`,e.startX=r.clientX;let i=Math.round(t*x),a=e.origWidths.left+i,o=e.origWidths.right-i;a>=S&&o>=S&&(e.origWidths={left:a,right:o});return}if(t.active&&t.handle){r.preventDefault();let e=r.clientY-t.startY,n=parseFloat(t.handle.style.top);t.handle.style.top=`${n+e}px`,t.startY=r.clientY;let i=Math.round(e*x),a=t.origHeight+i;a>=C&&(t.origHeight=a);return}if(n.active&&n.handle){r.preventDefault();let e=r.clientX-n.startX,t=parseFloat(n.handle.style.left);n.handle.style.left=`${t+e}px`,n.startX=r.clientX;let i=Math.round(e*x),a=n.origWidth+i;a>=S&&(n.origWidth=a)}}function s(i){if(e.active){e.active=!1,e.handle?.classList.remove(`dragging`),r&&k(r,e),e.handle=null;return}if(t.active){t.active=!1,t.handle?.classList.remove(`dragging`),r&&A(r,t),t.handle=null;return}n.active&&(n.active=!1,n.handle?.classList.remove(`dragging`),r&&j(r,n),n.handle=null)}function c(){return document.addEventListener(`mousemove`,o),document.addEventListener(`mouseup`,s),()=>{document.removeEventListener(`mousemove`,o),document.removeEventListener(`mouseup`,s)}}return{tryStartResize:a,install:c,isResizing:i}}function E(e,t){let n=e.state.doc.resolve(t.tablePmStart+1);for(let e=n.depth;e>=0;e--){let r=n.node(e);if(r.type.name===`table`){let e=r.attrs.columnWidths;e&&e[t.columnIndex]!==void 0&&e[t.columnIndex+1]!==void 0&&(t.origWidths={left:e[t.columnIndex],right:e[t.columnIndex+1]});return}}}function D(e,t,n){let r=e.state.doc.resolve(t.tablePmStart+1);for(let e=r.depth;e>=0;e--){let i=r.node(e);if(i.type.name===`table`){let e=null,r=0;if(i.forEach(n=>{r===t.rowIndex&&(e=n),r++}),e){let r=e.attrs.height;if(r)t.origHeight=r;else{let e=n.closest(`.layout-table`)?.querySelector(`[data-row-index="${t.rowIndex}"]`),r=e?e.getBoundingClientRect().height:30;t.origHeight=Math.round(r*w)}}return}}}function O(e,t){let n=e.state.doc.resolve(t.tablePmStart+1);for(let e=n.depth;e>=0;e--){let r=n.node(e);if(r.type.name===`table`){let e=r.attrs.columnWidths;e&&e[t.columnIndex]!==void 0&&(t.origWidth=e[t.columnIndex]);return}}}function k(e,t){let n=e.state.doc.resolve(t.tablePmStart+1);for(let r=n.depth;r>=0;r--){let i=n.node(r);if(i.type.name!==`table`)continue;let a=n.before(r),o=e.state.tr,s=[...i.attrs.columnWidths||[]];s[t.columnIndex]=t.origWidths.left,s[t.columnIndex+1]=t.origWidths.right,o.setNodeMarkup(a,void 0,{...i.attrs,columnWidths:s});let c=a+1;i.forEach(e=>{let n=c+1,r=0;e.forEach(e=>{let i=e.attrs.colspan||1;if(r===t.columnIndex||r===t.columnIndex+1){let i=r===t.columnIndex?t.origWidths.left:t.origWidths.right;o.setNodeMarkup(o.mapping.map(n),void 0,{...e.attrs,width:i,widthType:`dxa`,colwidth:null})}n+=e.nodeSize,r+=i}),c+=e.nodeSize}),e.dispatch(o);return}}function A(e,t){let n=e.state.doc.resolve(t.tablePmStart+1);for(let r=n.depth;r>=0;r--){let i=n.node(r);if(i.type.name!==`table`)continue;let a=n.before(r),o=e.state.tr,s=a+1,c=0;i.forEach(e=>{c===t.rowIndex&&o.setNodeMarkup(o.mapping.map(s),void 0,{...e.attrs,height:t.origHeight,heightRule:`atLeast`}),s+=e.nodeSize,c++}),e.dispatch(o);return}}function j(e,t){let n=e.state.doc.resolve(t.tablePmStart+1);for(let r=n.depth;r>=0;r--){let i=n.node(r);if(i.type.name!==`table`)continue;let a=n.before(r),o=e.state.tr,s=[...i.attrs.columnWidths||[]];s[t.columnIndex]=t.origWidth,o.setNodeMarkup(a,void 0,{...i.attrs,columnWidths:s});let c=a+1;i.forEach(e=>{let n=c+1,r=0;e.forEach(e=>{let i=e.attrs.colspan||1;r===t.columnIndex&&o.setNodeMarkup(o.mapping.map(n),void 0,{...e.attrs,width:t.origWidth,widthType:`dxa`,colwidth:null}),n+=e.nodeSize,r+=i}),c+=e.nodeSize}),e.dispatch(o);return}}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return T}});