@eigenpal/docx-editor-react 1.3.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-2YRWZCRK.mjs +1 -0
- package/dist/chunk-B5AYO5OG.js +1 -0
- package/dist/hooks.js +1 -1
- package/dist/hooks.mjs +1 -1
- package/dist/index.js +9 -10
- package/dist/index.mjs +9 -10
- package/dist/styles.css +1 -1
- package/package.json +4 -4
- package/dist/chunk-ESZ5GBSX.mjs +0 -1
- package/dist/chunk-SOIGAXQD.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {d,g,h,m,e,l,j,k,i}from'./chunk-3L2QMHNA.mjs';import {b}from'./chunk-BMBP5UFA.mjs';import {useRef,useCallback,useMemo,useState,useEffect}from'react';import {TextSelection}from'prosemirror-state';import {findBodyPmSpans}from'@eigenpal/docx-editor-core/layout-bridge';import {findVerticalScrollParent}from'@eigenpal/docx-editor-core/utils/findVerticalScrollParent';import {computeAutoScrollDelta,AUTO_SCROLL_EDGE_ZONE}from'@eigenpal/docx-editor-core/utils/autoScroll';import {extractTrackedChanges}from'@eigenpal/docx-editor-core/prosemirror/utils/extractTrackedChanges';export{extractTrackedChanges as c}from'@eigenpal/docx-editor-core/prosemirror/utils/extractTrackedChanges';import {TableSelectionManager,getTableFromDocument,updateTableInDocument,deleteTableFromDocument}from'@eigenpal/docx-editor-core';export{TABLE_DATA_ATTRIBUTES as f}from'@eigenpal/docx-editor-core';var $=".layout-page-content .layout-line";function lt(r){let l=findVerticalScrollParent(r);if(!l)return;let s=r.getBoundingClientRect(),m=l.getBoundingClientRect(),t=40;s.bottom>m.bottom-t?l.scrollTop+=s.bottom-m.bottom+t:s.top<m.top+t&&(l.scrollTop-=m.top-s.top+t);}function xt({pagesContainerRef:r}){let l=useRef(null),s=useRef(-1),m=useCallback(b=>{if(!r.current)return null;let u=findBodyPmSpans(r.current);for(let i of u){let o=Number(i.dataset.pmStart),a=Number(i.dataset.pmEnd);if(i.classList.contains("layout-run-tab")){if(b>=o&&b<a)return i.getBoundingClientRect().left;continue}if(b>=o&&b<=a&&i.firstChild?.nodeType===Node.TEXT_NODE){let e=i.firstChild,n=Math.min(b-o,e.length),c=i.ownerDocument;if(!c)continue;let d=c.createRange();return d.setStart(e,n),d.setEnd(e,n),d.getBoundingClientRect().left}}let f=r.current.querySelectorAll(".layout-empty-run");for(let i of Array.from(f)){let o=i.closest(".layout-paragraph");if(!o)continue;let a=Number(o.dataset.pmStart),e=Number(o.dataset.pmEnd);if(b>=a&&b<=e)return i.getBoundingClientRect().left}return null},[r]),t=useCallback(b=>{if(!r.current)return null;let u=r.current.querySelectorAll($);for(let f of Array.from(u)){let i=f,o=i.querySelectorAll("span[data-pm-start][data-pm-end]");for(let a of Array.from(o)){let e=a,n=Number(e.dataset.pmStart),c=Number(e.dataset.pmEnd);if(b>=n&&b<=c)return i}}for(let f of Array.from(u)){let i=f,o=i.closest(".layout-paragraph");if(!o)continue;let a=Number(o.dataset.pmStart),e=Number(o.dataset.pmEnd);if(b>=a&&b<=e&&o.querySelector(".layout-line")===i)return i}return null},[r]),S=useCallback((b,u)=>{let f=b.querySelectorAll("span[data-pm-start][data-pm-end]");if(f.length===0){let e=b.closest(".layout-paragraph");return e?.dataset.pmStart?Number(e.dataset.pmStart)+1:null}for(let e of Array.from(f)){let n=e,c=n.getBoundingClientRect(),d=Number(n.dataset.pmStart),y=Number(n.dataset.pmEnd);if(n.classList.contains("layout-run-tab")){if(u>=c.left&&u<=c.right){let E=(c.left+c.right)/2;return u<E?d:y}continue}if(u>=c.left&&u<=c.right){let E=n.firstChild;if(!E||E.nodeType!==Node.TEXT_NODE)return d;let p=E,R=n.ownerDocument;if(!R)return d;let k=0,H=p.length;for(;k<H;){let w=Math.floor((k+H)/2),L=R.createRange();L.setStart(p,w),L.setEnd(p,w),u<L.getBoundingClientRect().left?H=w:k=w+1;}if(k>0&&k<=p.length){let w=R.createRange();w.setStart(p,k-1),w.setEnd(p,k-1);let L=w.getBoundingClientRect().left;w.setStart(p,Math.min(k,p.length)),w.setEnd(p,Math.min(k,p.length));let h=w.getBoundingClientRect().left;if(Math.abs(u-L)<Math.abs(u-h))return d+(k-1)}return d+Math.min(k,y-d)}}let i=null,o=1/0;for(let e of Array.from(f)){let n=e,c=n.getBoundingClientRect(),d=u<c.left?c.left-u:u-c.right;d<o&&(o=d,i=n);}if(!i)return null;let a=i.getBoundingClientRect();return u<a.left?Number(i.dataset.pmStart):Number(i.dataset.pmEnd)},[]),x=useCallback((b,u)=>{if(u.key!=="ArrowUp"&&u.key!=="ArrowDown")return (["ArrowLeft","ArrowRight","Home","End"].includes(u.key)||u.key.length===1&&!u.ctrlKey&&!u.metaKey)&&(l.current=null,s.current=-1),false;if(u.ctrlKey||u.metaKey)return l.current=null,s.current=-1,false;if(!r.current)return false;let f=Array.from(r.current.querySelectorAll($));if(f.length===0)return false;let{from:i,anchor:o}=b.state.selection;if(l.current===null){let p=m(i);if(p===null)return false;l.current=p;}let a;if(s.current>=0&&s.current<f.length)a=s.current;else {let p=t(i);if(!p||(a=f.indexOf(p),a===-1))return false}let e=u.key==="ArrowUp"?a-1:a+1;if(e<0||e>=f.length)return s.current=-1,false;let n=f[e],c=S(n,l.current);if(c===null)return false;s.current=e;let{state:d,dispatch:y}=b,E=Math.max(0,Math.min(c,d.doc.content.size));try{let p=u.shiftKey?TextSelection.create(d.doc,o,E):TextSelection.create(d.doc,E);y(d.tr.setSelection(p));}catch{let p=d.doc.resolve(E),R=u.shiftKey?TextSelection.between(d.doc.resolve(o),p):TextSelection.near(p);y(d.tr.setSelection(R));}return lt(n),true},[r,m,t,S]);return {stickyXRef:l,lastVisualLineIndexRef:s,getCaretClientX:m,findLineElementAtPosition:t,findPositionOnLineAtClientX:S,handlePMKeyDown:x}}function Ct({pagesContainerRef:r,onScrollExtendSelection:l}){let s=useRef(null),m=useRef({x:0,y:0}),t=useRef(false),S=useRef(null),x=useCallback(()=>{if(S.current)return S.current;let o=r.current;return o?(S.current=findVerticalScrollParent(o),S.current):null},[r]),b=useCallback(()=>{t.current=false,s.current!==null&&(cancelAnimationFrame(s.current),s.current=null);},[]),u=useCallback(()=>{if(!t.current)return;let o=x();if(!o)return;let a=o.getBoundingClientRect(),{x:e,y:n}=m.current,c=computeAutoScrollDelta(a,n);c!==0&&(o.scrollTop+=c,l(e,n)),s.current=requestAnimationFrame(u);},[x,l]),f=useCallback(()=>{t.current||(t.current=true,s.current=requestAnimationFrame(u));},[u]);return {updateMousePosition:useCallback((o,a)=>{if(m.current={x:o,y:a},!t.current){let e=x();if(!e)return;let n=e.getBoundingClientRect();(a<n.top+AUTO_SCROLL_EDGE_ZONE||a>n.bottom-AUTO_SCROLL_EDGE_ZONE)&&f();}},[x,f]),stopAutoScroll:b}}function At(r){return useMemo(()=>extractTrackedChanges(r),[r])}function Ot({document:r,onChange:l$1,onSelectionChange:s}){let m$1=useMemo(()=>new TableSelectionManager,[]),[t,S]=useState({context:null,table:null,tableIndex:null,rowIndex:null,columnIndex:null}),x=useCallback((a,e,n)=>{if(!r)return;let c=getTableFromDocument(r,a);if(!c){m$1.clearSelection(),S({context:null,table:null,tableIndex:null,rowIndex:null,columnIndex:null});return}m$1.selectCell({tableIndex:a,rowIndex:e,columnIndex:n});let y=d(c,{tableIndex:a,rowIndex:e,columnIndex:n});S({context:y,table:c,tableIndex:a,rowIndex:e,columnIndex:n}),s?.(y);},[r,m$1,s]),b=useCallback(()=>{m$1.clearSelection(),S({context:null,table:null,tableIndex:null,rowIndex:null,columnIndex:null}),s?.(null);},[m$1,s]),u=useCallback(()=>!t.table||t.rowIndex===null||t.columnIndex===null?null:g(t.table,t.rowIndex,t.columnIndex),[t.columnIndex,t.rowIndex,t.table]),f=useCallback((a,e)=>{if(!r||!t.table||t.tableIndex===null||t.rowIndex===null||t.columnIndex===null)return;let n=h(t.table,t.rowIndex,t.columnIndex,a,e);if(n===t.table)return;let c=updateTableInDocument(r,t.tableIndex,n);l$1?.(c),c&&x(t.tableIndex,t.rowIndex,t.columnIndex);},[r,x,l$1,t.columnIndex,t.rowIndex,t.table,t.tableIndex]),i$1=useCallback(a=>{if(!r||!t.context||t.tableIndex===null||t.rowIndex===null||t.columnIndex===null)return;let e$1=t.table;if(!e$1)return;let n=null,c=null,d=t.rowIndex,y=t.columnIndex;switch(a){case "addRowAbove":n=i(e$1,t.rowIndex,"before"),d=t.rowIndex+1;break;case "addRowBelow":n=i(e$1,t.rowIndex,"after");break;case "addColumnLeft":n=k(e$1,t.columnIndex,"before"),y=t.columnIndex+1;break;case "addColumnRight":n=k(e$1,t.columnIndex,"after");break;case "deleteRow":e$1.rows.length>1&&(n=j(e$1,t.rowIndex),d>=n.rows.length&&(d=n.rows.length-1));break;case "deleteColumn":{if(e(e$1)>1){n=l(e$1,t.columnIndex);let p=e(n);y>=p&&(y=p-1);}break}case "mergeCells":t.context.selection.selectedCells&&(n=m(e$1,t.context.selection));break;case "splitCell":break;case "deleteTable":c=deleteTableFromDocument(r,t.tableIndex),b(),l$1?.(c);return}n&&(c=updateTableInDocument(r,t.tableIndex,n),l$1?.(c),c&&x(t.tableIndex,d,y));},[r,t,l$1,b,x]),o=useCallback((a,e,n)=>m$1.isCellSelected(a,e,n),[m$1,t]);return {state:t,handleCellClick:x,handleAction:i$1,getSplitCellConfig:u,applySplitCell:f,clearSelection:b,isCellSelected:o,tableContext:t.context}}function et(r,l){return JSON.stringify(r)===JSON.stringify(l)}function nt(r,l={}){let{maxEntries:s=100,groupingInterval:m=500,enableKeyboardShortcuts:t=true,isEqual:S=et,onUndo:x,onRedo:b,containerRef:u}=l,[f,i]=useState(r),[o,a]=useState([]),[e,n]=useState([]),c=useRef(0),d=useRef(false),y=useCallback((h,g)=>{if(S(f,h))return;if(d.current){i(h);return}let T=Date.now();T-c.current<m&&o.length>0?a(K=>{let A=[...K];return A[A.length-1]={state:f,timestamp:T,description:g||A[A.length-1].description},A}):a(K=>{let A={state:f,timestamp:T,description:g},N=[...K,A];return N.length>s?N.slice(N.length-s):N}),n([]),i(h),c.current=T;},[f,S,m,s,o.length]),E=useCallback(()=>{if(o.length===0)return;d.current=true;let h=o[o.length-1];return a(g=>g.slice(0,-1)),n(g=>[...g,{state:f,timestamp:Date.now()}]),i(h.state),setTimeout(()=>{d.current=false;},0),x?.(h.state),h.state},[o,f,x]),p=useCallback(()=>{if(e.length===0)return;d.current=true;let h=e[e.length-1];return n(g=>g.slice(0,-1)),a(g=>[...g,{state:f,timestamp:Date.now()}]),i(h.state),setTimeout(()=>{d.current=false;},0),b?.(h.state),h.state},[e,f,b]),R=useCallback(()=>{a([]),n([]);},[]),k=useCallback(h=>{i(h??r),a([]),n([]),c.current=0;},[r]),H=useCallback(()=>[...o],[o]),w=useCallback(()=>[...e],[e]),L=useCallback(h=>{i(g=>h(g)),a(g=>g.map(T=>({...T,state:h(T.state)}))),n(g=>g.map(T=>({...T,state:h(T.state)})));},[]);return useEffect(()=>{if(!t)return;let h=T=>{if((T.ctrlKey||T.metaKey)&&T.key==="z"&&!T.shiftKey){T.preventDefault(),E();return}if((T.ctrlKey||T.metaKey)&&T.key==="y"||(T.ctrlKey||T.metaKey)&&T.key==="z"&&T.shiftKey){T.preventDefault(),p();return}},g=u?.current||document;return g.addEventListener("keydown",h),()=>{g.removeEventListener("keydown",h);}},[t,E,p,u]),{state:f,canUndo:o.length>0,canRedo:e.length>0,undoCount:o.length,redoCount:e.length,push:y,undo:E,redo:p,clear:R,reset:k,getUndoStack:H,getRedoStack:w,transformAll:L}}function Ft(r,l={}){let s=nt(r,l);return useEffect(()=>{s.push(r);},[r]),s}function Jt(r,l={}){let s=useCallback((m,t)=>!(m?.package?.document!==t?.package?.document&&JSON.stringify(m?.package?.document)!==JSON.stringify(t?.package?.document)||m?.package?.headers!==t?.package?.headers||m?.package?.footers!==t?.package?.footers),[]);return nt(r,{...l,isEqual:s})}var X=class{constructor(l,s={}){b(this,"undoStack",[]);b(this,"redoStack",[]);b(this,"currentState");b(this,"maxEntries");b(this,"groupingInterval");b(this,"lastPushTime",0);b(this,"isEqual");this.currentState=l,this.maxEntries=s.maxEntries??100,this.groupingInterval=s.groupingInterval??500,this.isEqual=s.isEqual??et;}get state(){return this.currentState}get canUndo(){return this.undoStack.length>0}get canRedo(){return this.redoStack.length>0}push(l,s){if(this.isEqual(this.currentState,l))return;let m=Date.now();m-this.lastPushTime<this.groupingInterval&&this.undoStack.length>0?this.undoStack[this.undoStack.length-1].timestamp=m:(this.undoStack.push({state:this.currentState,timestamp:m,description:s}),this.undoStack.length>this.maxEntries&&(this.undoStack=this.undoStack.slice(-this.maxEntries))),this.redoStack=[],this.currentState=l,this.lastPushTime=m;}undo(){if(this.undoStack.length===0)return;let l=this.undoStack.pop();return this.redoStack.push({state:this.currentState,timestamp:Date.now()}),this.currentState=l.state,l.state}redo(){if(this.redoStack.length===0)return;let l=this.redoStack.pop();return this.undoStack.push({state:this.currentState,timestamp:Date.now()}),this.currentState=l.state,l.state}clear(){this.undoStack=[],this.redoStack=[];}reset(l){this.currentState=l??this.currentState,this.undoStack=[],this.redoStack=[],this.lastPushTime=0;}};export{xt as a,Ct as b,At as d,Ot as e,nt as g,Ft as h,Jt as i,X as j};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkEKDRHOOJ_js=require('./chunk-EKDRHOOJ.js'),chunkBJ5RZW6Y_js=require('./chunk-BJ5RZW6Y.js'),react=require('react'),prosemirrorState=require('prosemirror-state'),layoutBridge=require('@eigenpal/docx-editor-core/layout-bridge'),findVerticalScrollParent=require('@eigenpal/docx-editor-core/utils/findVerticalScrollParent'),autoScroll=require('@eigenpal/docx-editor-core/utils/autoScroll'),extractTrackedChanges=require('@eigenpal/docx-editor-core/prosemirror/utils/extractTrackedChanges'),docxEditorCore=require('@eigenpal/docx-editor-core');var $=".layout-page-content .layout-line";function lt(r){let l=findVerticalScrollParent.findVerticalScrollParent(r);if(!l)return;let s=r.getBoundingClientRect(),m=l.getBoundingClientRect(),t=40;s.bottom>m.bottom-t?l.scrollTop+=s.bottom-m.bottom+t:s.top<m.top+t&&(l.scrollTop-=m.top-s.top+t);}function xt({pagesContainerRef:r}){let l=react.useRef(null),s=react.useRef(-1),m=react.useCallback(b=>{if(!r.current)return null;let u=layoutBridge.findBodyPmSpans(r.current);for(let i of u){let o=Number(i.dataset.pmStart),a=Number(i.dataset.pmEnd);if(i.classList.contains("layout-run-tab")){if(b>=o&&b<a)return i.getBoundingClientRect().left;continue}if(b>=o&&b<=a&&i.firstChild?.nodeType===Node.TEXT_NODE){let e=i.firstChild,n=Math.min(b-o,e.length),c=i.ownerDocument;if(!c)continue;let d=c.createRange();return d.setStart(e,n),d.setEnd(e,n),d.getBoundingClientRect().left}}let f=r.current.querySelectorAll(".layout-empty-run");for(let i of Array.from(f)){let o=i.closest(".layout-paragraph");if(!o)continue;let a=Number(o.dataset.pmStart),e=Number(o.dataset.pmEnd);if(b>=a&&b<=e)return i.getBoundingClientRect().left}return null},[r]),t=react.useCallback(b=>{if(!r.current)return null;let u=r.current.querySelectorAll($);for(let f of Array.from(u)){let i=f,o=i.querySelectorAll("span[data-pm-start][data-pm-end]");for(let a of Array.from(o)){let e=a,n=Number(e.dataset.pmStart),c=Number(e.dataset.pmEnd);if(b>=n&&b<=c)return i}}for(let f of Array.from(u)){let i=f,o=i.closest(".layout-paragraph");if(!o)continue;let a=Number(o.dataset.pmStart),e=Number(o.dataset.pmEnd);if(b>=a&&b<=e&&o.querySelector(".layout-line")===i)return i}return null},[r]),S=react.useCallback((b,u)=>{let f=b.querySelectorAll("span[data-pm-start][data-pm-end]");if(f.length===0){let e=b.closest(".layout-paragraph");return e?.dataset.pmStart?Number(e.dataset.pmStart)+1:null}for(let e of Array.from(f)){let n=e,c=n.getBoundingClientRect(),d=Number(n.dataset.pmStart),y=Number(n.dataset.pmEnd);if(n.classList.contains("layout-run-tab")){if(u>=c.left&&u<=c.right){let E=(c.left+c.right)/2;return u<E?d:y}continue}if(u>=c.left&&u<=c.right){let E=n.firstChild;if(!E||E.nodeType!==Node.TEXT_NODE)return d;let p=E,R=n.ownerDocument;if(!R)return d;let k=0,H=p.length;for(;k<H;){let w=Math.floor((k+H)/2),L=R.createRange();L.setStart(p,w),L.setEnd(p,w),u<L.getBoundingClientRect().left?H=w:k=w+1;}if(k>0&&k<=p.length){let w=R.createRange();w.setStart(p,k-1),w.setEnd(p,k-1);let L=w.getBoundingClientRect().left;w.setStart(p,Math.min(k,p.length)),w.setEnd(p,Math.min(k,p.length));let h=w.getBoundingClientRect().left;if(Math.abs(u-L)<Math.abs(u-h))return d+(k-1)}return d+Math.min(k,y-d)}}let i=null,o=1/0;for(let e of Array.from(f)){let n=e,c=n.getBoundingClientRect(),d=u<c.left?c.left-u:u-c.right;d<o&&(o=d,i=n);}if(!i)return null;let a=i.getBoundingClientRect();return u<a.left?Number(i.dataset.pmStart):Number(i.dataset.pmEnd)},[]),x=react.useCallback((b,u)=>{if(u.key!=="ArrowUp"&&u.key!=="ArrowDown")return (["ArrowLeft","ArrowRight","Home","End"].includes(u.key)||u.key.length===1&&!u.ctrlKey&&!u.metaKey)&&(l.current=null,s.current=-1),false;if(u.ctrlKey||u.metaKey)return l.current=null,s.current=-1,false;if(!r.current)return false;let f=Array.from(r.current.querySelectorAll($));if(f.length===0)return false;let{from:i,anchor:o}=b.state.selection;if(l.current===null){let p=m(i);if(p===null)return false;l.current=p;}let a;if(s.current>=0&&s.current<f.length)a=s.current;else {let p=t(i);if(!p||(a=f.indexOf(p),a===-1))return false}let e=u.key==="ArrowUp"?a-1:a+1;if(e<0||e>=f.length)return s.current=-1,false;let n=f[e],c=S(n,l.current);if(c===null)return false;s.current=e;let{state:d,dispatch:y}=b,E=Math.max(0,Math.min(c,d.doc.content.size));try{let p=u.shiftKey?prosemirrorState.TextSelection.create(d.doc,o,E):prosemirrorState.TextSelection.create(d.doc,E);y(d.tr.setSelection(p));}catch{let p=d.doc.resolve(E),R=u.shiftKey?prosemirrorState.TextSelection.between(d.doc.resolve(o),p):prosemirrorState.TextSelection.near(p);y(d.tr.setSelection(R));}return lt(n),true},[r,m,t,S]);return {stickyXRef:l,lastVisualLineIndexRef:s,getCaretClientX:m,findLineElementAtPosition:t,findPositionOnLineAtClientX:S,handlePMKeyDown:x}}function Ct({pagesContainerRef:r,onScrollExtendSelection:l}){let s=react.useRef(null),m=react.useRef({x:0,y:0}),t=react.useRef(false),S=react.useRef(null),x=react.useCallback(()=>{if(S.current)return S.current;let o=r.current;return o?(S.current=findVerticalScrollParent.findVerticalScrollParent(o),S.current):null},[r]),b=react.useCallback(()=>{t.current=false,s.current!==null&&(cancelAnimationFrame(s.current),s.current=null);},[]),u=react.useCallback(()=>{if(!t.current)return;let o=x();if(!o)return;let a=o.getBoundingClientRect(),{x:e,y:n}=m.current,c=autoScroll.computeAutoScrollDelta(a,n);c!==0&&(o.scrollTop+=c,l(e,n)),s.current=requestAnimationFrame(u);},[x,l]),f=react.useCallback(()=>{t.current||(t.current=true,s.current=requestAnimationFrame(u));},[u]);return {updateMousePosition:react.useCallback((o,a)=>{if(m.current={x:o,y:a},!t.current){let e=x();if(!e)return;let n=e.getBoundingClientRect();(a<n.top+autoScroll.AUTO_SCROLL_EDGE_ZONE||a>n.bottom-autoScroll.AUTO_SCROLL_EDGE_ZONE)&&f();}},[x,f]),stopAutoScroll:b}}function At(r){return react.useMemo(()=>extractTrackedChanges.extractTrackedChanges(r),[r])}function Ot({document:r,onChange:l,onSelectionChange:s}){let m=react.useMemo(()=>new docxEditorCore.TableSelectionManager,[]),[t,S]=react.useState({context:null,table:null,tableIndex:null,rowIndex:null,columnIndex:null}),x=react.useCallback((a,e,n)=>{if(!r)return;let c=docxEditorCore.getTableFromDocument(r,a);if(!c){m.clearSelection(),S({context:null,table:null,tableIndex:null,rowIndex:null,columnIndex:null});return}m.selectCell({tableIndex:a,rowIndex:e,columnIndex:n});let y=chunkEKDRHOOJ_js.d(c,{tableIndex:a,rowIndex:e,columnIndex:n});S({context:y,table:c,tableIndex:a,rowIndex:e,columnIndex:n}),s?.(y);},[r,m,s]),b=react.useCallback(()=>{m.clearSelection(),S({context:null,table:null,tableIndex:null,rowIndex:null,columnIndex:null}),s?.(null);},[m,s]),u=react.useCallback(()=>!t.table||t.rowIndex===null||t.columnIndex===null?null:chunkEKDRHOOJ_js.g(t.table,t.rowIndex,t.columnIndex),[t.columnIndex,t.rowIndex,t.table]),f=react.useCallback((a,e)=>{if(!r||!t.table||t.tableIndex===null||t.rowIndex===null||t.columnIndex===null)return;let n=chunkEKDRHOOJ_js.h(t.table,t.rowIndex,t.columnIndex,a,e);if(n===t.table)return;let c=docxEditorCore.updateTableInDocument(r,t.tableIndex,n);l?.(c),c&&x(t.tableIndex,t.rowIndex,t.columnIndex);},[r,x,l,t.columnIndex,t.rowIndex,t.table,t.tableIndex]),i=react.useCallback(a=>{if(!r||!t.context||t.tableIndex===null||t.rowIndex===null||t.columnIndex===null)return;let e=t.table;if(!e)return;let n=null,c=null,d=t.rowIndex,y=t.columnIndex;switch(a){case "addRowAbove":n=chunkEKDRHOOJ_js.i(e,t.rowIndex,"before"),d=t.rowIndex+1;break;case "addRowBelow":n=chunkEKDRHOOJ_js.i(e,t.rowIndex,"after");break;case "addColumnLeft":n=chunkEKDRHOOJ_js.k(e,t.columnIndex,"before"),y=t.columnIndex+1;break;case "addColumnRight":n=chunkEKDRHOOJ_js.k(e,t.columnIndex,"after");break;case "deleteRow":e.rows.length>1&&(n=chunkEKDRHOOJ_js.j(e,t.rowIndex),d>=n.rows.length&&(d=n.rows.length-1));break;case "deleteColumn":{if(chunkEKDRHOOJ_js.e(e)>1){n=chunkEKDRHOOJ_js.l(e,t.columnIndex);let p=chunkEKDRHOOJ_js.e(n);y>=p&&(y=p-1);}break}case "mergeCells":t.context.selection.selectedCells&&(n=chunkEKDRHOOJ_js.m(e,t.context.selection));break;case "splitCell":break;case "deleteTable":c=docxEditorCore.deleteTableFromDocument(r,t.tableIndex),b(),l?.(c);return}n&&(c=docxEditorCore.updateTableInDocument(r,t.tableIndex,n),l?.(c),c&&x(t.tableIndex,d,y));},[r,t,l,b,x]),o=react.useCallback((a,e,n)=>m.isCellSelected(a,e,n),[m,t]);return {state:t,handleCellClick:x,handleAction:i,getSplitCellConfig:u,applySplitCell:f,clearSelection:b,isCellSelected:o,tableContext:t.context}}function et(r,l){return JSON.stringify(r)===JSON.stringify(l)}function nt(r,l={}){let{maxEntries:s=100,groupingInterval:m=500,enableKeyboardShortcuts:t=true,isEqual:S=et,onUndo:x,onRedo:b,containerRef:u}=l,[f,i]=react.useState(r),[o,a]=react.useState([]),[e,n]=react.useState([]),c=react.useRef(0),d=react.useRef(false),y=react.useCallback((h,g)=>{if(S(f,h))return;if(d.current){i(h);return}let T=Date.now();T-c.current<m&&o.length>0?a(K=>{let A=[...K];return A[A.length-1]={state:f,timestamp:T,description:g||A[A.length-1].description},A}):a(K=>{let A={state:f,timestamp:T,description:g},N=[...K,A];return N.length>s?N.slice(N.length-s):N}),n([]),i(h),c.current=T;},[f,S,m,s,o.length]),E=react.useCallback(()=>{if(o.length===0)return;d.current=true;let h=o[o.length-1];return a(g=>g.slice(0,-1)),n(g=>[...g,{state:f,timestamp:Date.now()}]),i(h.state),setTimeout(()=>{d.current=false;},0),x?.(h.state),h.state},[o,f,x]),p=react.useCallback(()=>{if(e.length===0)return;d.current=true;let h=e[e.length-1];return n(g=>g.slice(0,-1)),a(g=>[...g,{state:f,timestamp:Date.now()}]),i(h.state),setTimeout(()=>{d.current=false;},0),b?.(h.state),h.state},[e,f,b]),R=react.useCallback(()=>{a([]),n([]);},[]),k=react.useCallback(h=>{i(h??r),a([]),n([]),c.current=0;},[r]),H=react.useCallback(()=>[...o],[o]),w=react.useCallback(()=>[...e],[e]),L=react.useCallback(h=>{i(g=>h(g)),a(g=>g.map(T=>({...T,state:h(T.state)}))),n(g=>g.map(T=>({...T,state:h(T.state)})));},[]);return react.useEffect(()=>{if(!t)return;let h=T=>{if((T.ctrlKey||T.metaKey)&&T.key==="z"&&!T.shiftKey){T.preventDefault(),E();return}if((T.ctrlKey||T.metaKey)&&T.key==="y"||(T.ctrlKey||T.metaKey)&&T.key==="z"&&T.shiftKey){T.preventDefault(),p();return}},g=u?.current||document;return g.addEventListener("keydown",h),()=>{g.removeEventListener("keydown",h);}},[t,E,p,u]),{state:f,canUndo:o.length>0,canRedo:e.length>0,undoCount:o.length,redoCount:e.length,push:y,undo:E,redo:p,clear:R,reset:k,getUndoStack:H,getRedoStack:w,transformAll:L}}function Ft(r,l={}){let s=nt(r,l);return react.useEffect(()=>{s.push(r);},[r]),s}function Jt(r,l={}){let s=react.useCallback((m,t)=>!(m?.package?.document!==t?.package?.document&&JSON.stringify(m?.package?.document)!==JSON.stringify(t?.package?.document)||m?.package?.headers!==t?.package?.headers||m?.package?.footers!==t?.package?.footers),[]);return nt(r,{...l,isEqual:s})}var X=class{constructor(l,s={}){chunkBJ5RZW6Y_js.b(this,"undoStack",[]);chunkBJ5RZW6Y_js.b(this,"redoStack",[]);chunkBJ5RZW6Y_js.b(this,"currentState");chunkBJ5RZW6Y_js.b(this,"maxEntries");chunkBJ5RZW6Y_js.b(this,"groupingInterval");chunkBJ5RZW6Y_js.b(this,"lastPushTime",0);chunkBJ5RZW6Y_js.b(this,"isEqual");this.currentState=l,this.maxEntries=s.maxEntries??100,this.groupingInterval=s.groupingInterval??500,this.isEqual=s.isEqual??et;}get state(){return this.currentState}get canUndo(){return this.undoStack.length>0}get canRedo(){return this.redoStack.length>0}push(l,s){if(this.isEqual(this.currentState,l))return;let m=Date.now();m-this.lastPushTime<this.groupingInterval&&this.undoStack.length>0?this.undoStack[this.undoStack.length-1].timestamp=m:(this.undoStack.push({state:this.currentState,timestamp:m,description:s}),this.undoStack.length>this.maxEntries&&(this.undoStack=this.undoStack.slice(-this.maxEntries))),this.redoStack=[],this.currentState=l,this.lastPushTime=m;}undo(){if(this.undoStack.length===0)return;let l=this.undoStack.pop();return this.redoStack.push({state:this.currentState,timestamp:Date.now()}),this.currentState=l.state,l.state}redo(){if(this.redoStack.length===0)return;let l=this.redoStack.pop();return this.undoStack.push({state:this.currentState,timestamp:Date.now()}),this.currentState=l.state,l.state}clear(){this.undoStack=[],this.redoStack=[];}reset(l){this.currentState=l??this.currentState,this.undoStack=[],this.redoStack=[],this.lastPushTime=0;}};Object.defineProperty(exports,"c",{enumerable:true,get:function(){return extractTrackedChanges.extractTrackedChanges}});Object.defineProperty(exports,"f",{enumerable:true,get:function(){return docxEditorCore.TABLE_DATA_ATTRIBUTES}});exports.a=xt;exports.b=Ct;exports.d=At;exports.e=Ot;exports.g=nt;exports.h=Ft;exports.i=Jt;exports.j=X;
|
package/dist/hooks.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var chunkSOIGAXQD_js=require('./chunk-SOIGAXQD.js'),chunkNIBCC7WQ_js=require('./chunk-NIBCC7WQ.js'),chunkEKDRHOOJ_js=require('./chunk-EKDRHOOJ.js'),chunkL4MDZW2J_js=require('./chunk-L4MDZW2J.js');require('./chunk-GNIO6SOS.js'),require('./chunk-BJ5RZW6Y.js');var re=require('react'),utils=require('@eigenpal/docx-editor-core/utils'),docxEditorCore=require('@eigenpal/docx-editor-core');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var re__default=/*#__PURE__*/_interopDefault(re);function de(n){let{containerRef:e,enabled:r=true,config:s=utils.DEFAULT_SELECTION_STYLE,useOverlay:u=false,debounceMs:c=16,onSelectionChange:f}=n,[h,p]=re.useState(false),[x,v]=re.useState(""),[a,m]=re.useState([]),[d,y]=re.useState(false),S=re.useRef(null),C=re.useRef(0),o=re.useCallback(()=>{let t=e.current,b=utils.hasActiveSelection(),D=utils.getSelectedText(),A=t?utils.isSelectionWithin(t):false;if(p(b),v(D),y(A),u&&A){let $=utils.getMergedSelectionRects(t);m($);}else m([]);f&&f(b&&A,D);},[e,u,f]),i=re.useCallback(()=>{let t=performance.now();if(t-C.current<c){S.current!==null&&clearTimeout(S.current),S.current=window.setTimeout(()=>{C.current=performance.now(),o(),S.current=null;},c);return}C.current=t,o();},[c,o]),l=re.useCallback(()=>{o();},[o]),R=re.useCallback(t=>({position:"absolute",left:`${t.left}px`,top:`${t.top}px`,width:`${t.width}px`,height:`${t.height}px`,backgroundColor:s.backgroundColor,borderRadius:s.borderRadius?`${s.borderRadius}px`:void 0,border:s.borderColor?`1px solid ${s.borderColor}`:void 0,zIndex:s.zIndex??0,opacity:s.opacity??1,mixBlendMode:s.mixBlendMode,pointerEvents:"none",userSelect:"none"}),[s]);return re.useEffect(()=>(r&&!utils.areSelectionStylesInjected()&&utils.injectSelectionStyles(s),()=>{}),[r,s]),re.useEffect(()=>{if(!r)return;let t=()=>{i();};return document.addEventListener("selectionchange",t),document.addEventListener("mouseup",t),o(),()=>{document.removeEventListener("selectionchange",t),document.removeEventListener("mouseup",t),S.current!==null&&clearTimeout(S.current);}},[r,i,o]),{hasSelection:h,selectedText:x,highlightRects:a,isSelectionInContainer:d,refresh:l,getOverlayStyle:R}}function pe(n,e=utils.DEFAULT_SELECTION_STYLE){return n.map((r,s)=>re__default.default.createElement("div",{key:`selection-overlay-${s}`,style:{position:"absolute",left:`${r.left}px`,top:`${r.top}px`,width:`${r.width}px`,height:`${r.height}px`,backgroundColor:e.backgroundColor,borderRadius:e.borderRadius?`${e.borderRadius}px`:void 0,border:e.borderColor?`1px solid ${e.borderColor}`:void 0,zIndex:e.zIndex??0,opacity:e.opacity??1,mixBlendMode:e.mixBlendMode,pointerEvents:"none",userSelect:"none"}}))}function he(n={}){let{onCopy:e,onCut:r,onPaste:s,cleanWordFormatting:u=true,editable:c=true,onError:f,theme:h}=n,p=re.useRef(false),x=re.useRef(null),v=re.useCallback(async o=>{if(p.current)return false;p.current=true;try{let i=await utils.copyRuns(o.runs,{onError:f,theme:h});return i&&e?.(o),i}finally{p.current=false;}},[e,f,h]),a=re.useCallback(async o=>{if(p.current||!c)return false;p.current=true;try{let i=await utils.copyRuns(o.runs,{onError:f,theme:h});return i&&r?.(o),i}finally{p.current=false;}},[r,c,f,h]),m=re.useCallback(async(o=false)=>{if(p.current||!c)return null;p.current=true;try{if(navigator.clipboard&&navigator.clipboard.read){let i=await navigator.clipboard.read(),l="",R="";for(let b of i)b.types.includes("text/html")&&(l=await(await b.getType("text/html")).text()),b.types.includes("text/plain")&&(R=await(await b.getType("text/plain")).text());o&&(l="");let t=utils.parseClipboardHtml(l,R,u);return x.current=t,s?.(t,o),t}return null}catch(i){return f?.(i),null}finally{p.current=false;}},[c,u,s,f]),d=re.useCallback(o=>{let i=docxEditorCore.createSelectionFromDOM();if(!i)return;o.preventDefault();let l=utils.runsToClipboardContent(i.runs,true,h);o.clipboardData&&(o.clipboardData.setData("text/plain",l.plainText),o.clipboardData.setData("text/html",l.html),l.internal&&o.clipboardData.setData("application/x-docx-editor",l.internal)),e?.(i);},[e,h]),y=re.useCallback(o=>{if(!c)return;let i=docxEditorCore.createSelectionFromDOM();if(!i)return;o.preventDefault();let l=utils.runsToClipboardContent(i.runs,true,h);o.clipboardData&&(o.clipboardData.setData("text/plain",l.plainText),o.clipboardData.setData("text/html",l.html),l.internal&&o.clipboardData.setData("application/x-docx-editor",l.internal)),r?.(i);},[c,r,h]),S=re.useCallback(o=>{if(!c)return;o.preventDefault();let i=utils.handlePasteEvent(o,{cleanWordFormatting:u});if(i){x.current=i;let l=o.shiftKey??false;s?.(i,l);}},[c,u,s]),C=re.useCallback(o=>{},[]);return {copy:v,cut:a,paste:m,handleCopy:d,handleCut:y,handlePaste:S,handleKeyDown:C,isProcessing:p.current,lastPastedContent:x.current}}function Ee(n,e={}){let{storageKey:r,interval:s,enabled:u=true,maxAge:c,onSave:f,onError:h,onRecoveryAvailable:p,saveOnChange:x,debounceDelay:v}=e,a=re.useMemo(()=>new docxEditorCore.AutoSaveManager({storageKey:r,interval:s,maxAge:c,saveOnChange:x,debounceDelay:v,onSave:f,onError:h,onRecoveryAvailable:p}),[r]);re.useEffect(()=>{u?(a.enable(),a.startInterval()):a.disable();},[a,u]),re.useEffect(()=>{a.onDocumentChanged(n??null);},[a,n]),re.useEffect(()=>()=>{a.destroy();},[a]);let m=re.useSyncExternalStore(a.subscribe,a.getSnapshot),d=re.useCallback(()=>a.save(),[a]),y=re.useCallback(()=>a.clear(),[a]),S=re.useCallback(()=>a.getRecoveryData(),[a]),C=re.useCallback(()=>a.acceptRecovery(),[a]),o=re.useCallback(()=>a.dismissRecovery(),[a]),i=re.useCallback(()=>a.enable(),[a]),l=re.useCallback(()=>a.disable(),[a]);return {status:m.status,lastSaveTime:m.lastSaveTime,save:d,clearAutoSave:y,hasRecoveryData:m.hasRecoveryData,getRecoveryData:S,acceptRecovery:C,dismissRecovery:o,isEnabled:m.isEnabled,enable:i,disable:l}}var Pe=1,K=.25,W=4,Ze=.1,g=[.25,.5,.75,1,1.25,1.5,2,3,4];function _(n,e,r){return Math.max(e,Math.min(r,n))}function N(n){return Math.round(n*100)/100}function Ae(n){let e=g[0],r=Math.abs(n-e);for(let s of g){let u=Math.abs(n-s);u<r&&(r=u,e=s);}return e}function Ue(n){for(let e of g)if(e>n+.01)return e;return g[g.length-1]}function Me(n){for(let e=g.length-1;e>=0;e--)if(g[e]<n-.01)return g[e];return g[0]}function He(n={}){let{initialZoom:e=Pe,minZoom:r=K,maxZoom:s=W,zoomStep:u=Ze,enabled:c=true,containerRef:f,onZoomChange:h,enableKeyboardShortcuts:p=true,preventDefault:x=true}=n,[v,a]=re.useState(e),m=re.useRef(v);re.useEffect(()=>{m.current=v;},[v]);let d=re.useCallback(t=>{let b=N(_(t,r,s));b!==m.current&&(a(b),h?.(b));},[r,s,h]),y=re.useCallback(()=>{d(m.current+u);},[u,d]),S=re.useCallback(()=>{d(m.current-u);},[u,d]),C=re.useCallback(()=>{d(e);},[e,d]),o=re.useCallback(()=>{d(1);},[d]),i=re.useCallback((t,b)=>{if(b>0){let D=t/b;d(D);}},[d]),l=re.useCallback(t=>{if(!c||!(t.ctrlKey||t.metaKey))return;x&&t.preventDefault();let D=t.deltaY;D<0?d(m.current+u):D>0&&d(m.current-u);},[c,x,u,d]),R=re.useCallback(t=>{if(!(!c||!p||!(t.ctrlKey||t.metaKey))){if(t.key==="0"){t.preventDefault(),o();return}if(t.key==="+"||t.key==="="){t.preventDefault(),y();return}if(t.key==="-"){t.preventDefault(),S();return}}},[c,p,y,S,o]);return re.useEffect(()=>{if(!c)return;let t=f?.current;if(t)return t.addEventListener("wheel",l,{passive:false}),()=>{t.removeEventListener("wheel",l);}},[c,f,l]),re.useEffect(()=>{if(!(!c||!p))return document.addEventListener("keydown",R),()=>{document.removeEventListener("keydown",R);}},[c,p,R]),{zoom:v,setZoom:d,zoomIn:y,zoomOut:S,resetZoom:C,zoomTo100:o,zoomToFit:i,isMinZoom:v<=r,isMaxZoom:v>=s,zoomPercent:Math.round(v*100),handleWheel:l,handleKeyDown:R}}function we(){return [...g]}function Le(n){return Ae(n)}function ze(n){return Ue(n)}function ke(n){return Me(n)}function Fe(n){return `${Math.round(n*100)}%`}function Ie(n){let e=n.match(/(\d+(\.\d+)?)/);if(e){let r=parseFloat(e[1]);if(!isNaN(r))return r/100}return null}function Ke(n){return g.some(e=>Math.abs(e-n)<.01)}function We(n,e=K,r=W){return N(_(n,e,r))}Object.defineProperty(exports,"HistoryManager",{enumerable:true,get:function(){return chunkSOIGAXQD_js.j}});Object.defineProperty(exports,"TABLE_DATA_ATTRIBUTES",{enumerable:true,get:function(){return chunkSOIGAXQD_js.f}});Object.defineProperty(exports,"extractTrackedChanges",{enumerable:true,get:function(){return chunkSOIGAXQD_js.c}});Object.defineProperty(exports,"useAutoHistory",{enumerable:true,get:function(){return chunkSOIGAXQD_js.h}});Object.defineProperty(exports,"useDocumentHistory",{enumerable:true,get:function(){return chunkSOIGAXQD_js.i}});Object.defineProperty(exports,"useDragAutoScroll",{enumerable:true,get:function(){return chunkSOIGAXQD_js.b}});Object.defineProperty(exports,"useHistory",{enumerable:true,get:function(){return chunkSOIGAXQD_js.g}});Object.defineProperty(exports,"useTableSelection",{enumerable:true,get:function(){return chunkSOIGAXQD_js.e}});Object.defineProperty(exports,"useTrackedChanges",{enumerable:true,get:function(){return chunkSOIGAXQD_js.d}});Object.defineProperty(exports,"useVisualLineNavigation",{enumerable:true,get:function(){return chunkSOIGAXQD_js.a}});Object.defineProperty(exports,"useAspectLockedSize",{enumerable:true,get:function(){return chunkNIBCC7WQ_js.a}});Object.defineProperty(exports,"useFixedDropdown",{enumerable:true,get:function(){return chunkEKDRHOOJ_js.c}});Object.defineProperty(exports,"useFindReplace",{enumerable:true,get:function(){return chunkL4MDZW2J_js.b}});Object.defineProperty(exports,"createSelectionFromDOM",{enumerable:true,get:function(){return docxEditorCore.createSelectionFromDOM}});Object.defineProperty(exports,"formatLastSaveTime",{enumerable:true,get:function(){return docxEditorCore.formatLastSaveTime}});Object.defineProperty(exports,"formatStorageSize",{enumerable:true,get:function(){return docxEditorCore.formatStorageSize}});Object.defineProperty(exports,"getAutoSaveStatusLabel",{enumerable:true,get:function(){return docxEditorCore.getAutoSaveStatusLabel}});Object.defineProperty(exports,"getAutoSaveStorageSize",{enumerable:true,get:function(){return docxEditorCore.getAutoSaveStorageSize}});Object.defineProperty(exports,"getSelectionRuns",{enumerable:true,get:function(){return docxEditorCore.getSelectionRuns}});Object.defineProperty(exports,"isAutoSaveSupported",{enumerable:true,get:function(){return docxEditorCore.isAutoSaveSupported}});exports.ZOOM_PRESETS=g;exports.clampZoom=We;exports.findNearestZoomPreset=Le;exports.formatZoom=Fe;exports.generateOverlayElements=pe;exports.getNextZoomPreset=ze;exports.getPreviousZoomPreset=ke;exports.getZoomPresets=we;exports.isZoomPreset=Ke;exports.parseZoom=Ie;exports.useAutoSave=Ee;exports.useClipboard=he;exports.useSelectionHighlight=de;exports.useWheelZoom=He;
|
|
1
|
+
'use strict';var chunkB5AYO5OG_js=require('./chunk-B5AYO5OG.js'),chunkNIBCC7WQ_js=require('./chunk-NIBCC7WQ.js'),chunkEKDRHOOJ_js=require('./chunk-EKDRHOOJ.js'),chunkL4MDZW2J_js=require('./chunk-L4MDZW2J.js');require('./chunk-GNIO6SOS.js'),require('./chunk-BJ5RZW6Y.js');var re=require('react'),utils=require('@eigenpal/docx-editor-core/utils'),docxEditorCore=require('@eigenpal/docx-editor-core');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var re__default=/*#__PURE__*/_interopDefault(re);function de(n){let{containerRef:e,enabled:r=true,config:s=utils.DEFAULT_SELECTION_STYLE,useOverlay:u=false,debounceMs:c=16,onSelectionChange:f}=n,[h,p]=re.useState(false),[x,v]=re.useState(""),[a,m]=re.useState([]),[d,y]=re.useState(false),S=re.useRef(null),C=re.useRef(0),o=re.useCallback(()=>{let t=e.current,b=utils.hasActiveSelection(),D=utils.getSelectedText(),A=t?utils.isSelectionWithin(t):false;if(p(b),v(D),y(A),u&&A){let $=utils.getMergedSelectionRects(t);m($);}else m([]);f&&f(b&&A,D);},[e,u,f]),i=re.useCallback(()=>{let t=performance.now();if(t-C.current<c){S.current!==null&&clearTimeout(S.current),S.current=window.setTimeout(()=>{C.current=performance.now(),o(),S.current=null;},c);return}C.current=t,o();},[c,o]),l=re.useCallback(()=>{o();},[o]),R=re.useCallback(t=>({position:"absolute",left:`${t.left}px`,top:`${t.top}px`,width:`${t.width}px`,height:`${t.height}px`,backgroundColor:s.backgroundColor,borderRadius:s.borderRadius?`${s.borderRadius}px`:void 0,border:s.borderColor?`1px solid ${s.borderColor}`:void 0,zIndex:s.zIndex??0,opacity:s.opacity??1,mixBlendMode:s.mixBlendMode,pointerEvents:"none",userSelect:"none"}),[s]);return re.useEffect(()=>(r&&!utils.areSelectionStylesInjected()&&utils.injectSelectionStyles(s),()=>{}),[r,s]),re.useEffect(()=>{if(!r)return;let t=()=>{i();};return document.addEventListener("selectionchange",t),document.addEventListener("mouseup",t),o(),()=>{document.removeEventListener("selectionchange",t),document.removeEventListener("mouseup",t),S.current!==null&&clearTimeout(S.current);}},[r,i,o]),{hasSelection:h,selectedText:x,highlightRects:a,isSelectionInContainer:d,refresh:l,getOverlayStyle:R}}function pe(n,e=utils.DEFAULT_SELECTION_STYLE){return n.map((r,s)=>re__default.default.createElement("div",{key:`selection-overlay-${s}`,style:{position:"absolute",left:`${r.left}px`,top:`${r.top}px`,width:`${r.width}px`,height:`${r.height}px`,backgroundColor:e.backgroundColor,borderRadius:e.borderRadius?`${e.borderRadius}px`:void 0,border:e.borderColor?`1px solid ${e.borderColor}`:void 0,zIndex:e.zIndex??0,opacity:e.opacity??1,mixBlendMode:e.mixBlendMode,pointerEvents:"none",userSelect:"none"}}))}function he(n={}){let{onCopy:e,onCut:r,onPaste:s,cleanWordFormatting:u=true,editable:c=true,onError:f,theme:h}=n,p=re.useRef(false),x=re.useRef(null),v=re.useCallback(async o=>{if(p.current)return false;p.current=true;try{let i=await utils.copyRuns(o.runs,{onError:f,theme:h});return i&&e?.(o),i}finally{p.current=false;}},[e,f,h]),a=re.useCallback(async o=>{if(p.current||!c)return false;p.current=true;try{let i=await utils.copyRuns(o.runs,{onError:f,theme:h});return i&&r?.(o),i}finally{p.current=false;}},[r,c,f,h]),m=re.useCallback(async(o=false)=>{if(p.current||!c)return null;p.current=true;try{if(navigator.clipboard&&navigator.clipboard.read){let i=await navigator.clipboard.read(),l="",R="";for(let b of i)b.types.includes("text/html")&&(l=await(await b.getType("text/html")).text()),b.types.includes("text/plain")&&(R=await(await b.getType("text/plain")).text());o&&(l="");let t=utils.parseClipboardHtml(l,R,u);return x.current=t,s?.(t,o),t}return null}catch(i){return f?.(i),null}finally{p.current=false;}},[c,u,s,f]),d=re.useCallback(o=>{let i=docxEditorCore.createSelectionFromDOM();if(!i)return;o.preventDefault();let l=utils.runsToClipboardContent(i.runs,true,h);o.clipboardData&&(o.clipboardData.setData("text/plain",l.plainText),o.clipboardData.setData("text/html",l.html),l.internal&&o.clipboardData.setData("application/x-docx-editor",l.internal)),e?.(i);},[e,h]),y=re.useCallback(o=>{if(!c)return;let i=docxEditorCore.createSelectionFromDOM();if(!i)return;o.preventDefault();let l=utils.runsToClipboardContent(i.runs,true,h);o.clipboardData&&(o.clipboardData.setData("text/plain",l.plainText),o.clipboardData.setData("text/html",l.html),l.internal&&o.clipboardData.setData("application/x-docx-editor",l.internal)),r?.(i);},[c,r,h]),S=re.useCallback(o=>{if(!c)return;o.preventDefault();let i=utils.handlePasteEvent(o,{cleanWordFormatting:u});if(i){x.current=i;let l=o.shiftKey??false;s?.(i,l);}},[c,u,s]),C=re.useCallback(o=>{},[]);return {copy:v,cut:a,paste:m,handleCopy:d,handleCut:y,handlePaste:S,handleKeyDown:C,isProcessing:p.current,lastPastedContent:x.current}}function Ee(n,e={}){let{storageKey:r,interval:s,enabled:u=true,maxAge:c,onSave:f,onError:h,onRecoveryAvailable:p,saveOnChange:x,debounceDelay:v}=e,a=re.useMemo(()=>new docxEditorCore.AutoSaveManager({storageKey:r,interval:s,maxAge:c,saveOnChange:x,debounceDelay:v,onSave:f,onError:h,onRecoveryAvailable:p}),[r]);re.useEffect(()=>{u?(a.enable(),a.startInterval()):a.disable();},[a,u]),re.useEffect(()=>{a.onDocumentChanged(n??null);},[a,n]),re.useEffect(()=>()=>{a.destroy();},[a]);let m=re.useSyncExternalStore(a.subscribe,a.getSnapshot),d=re.useCallback(()=>a.save(),[a]),y=re.useCallback(()=>a.clear(),[a]),S=re.useCallback(()=>a.getRecoveryData(),[a]),C=re.useCallback(()=>a.acceptRecovery(),[a]),o=re.useCallback(()=>a.dismissRecovery(),[a]),i=re.useCallback(()=>a.enable(),[a]),l=re.useCallback(()=>a.disable(),[a]);return {status:m.status,lastSaveTime:m.lastSaveTime,save:d,clearAutoSave:y,hasRecoveryData:m.hasRecoveryData,getRecoveryData:S,acceptRecovery:C,dismissRecovery:o,isEnabled:m.isEnabled,enable:i,disable:l}}var Pe=1,K=.25,W=4,Ze=.1,g=[.25,.5,.75,1,1.25,1.5,2,3,4];function _(n,e,r){return Math.max(e,Math.min(r,n))}function N(n){return Math.round(n*100)/100}function Ae(n){let e=g[0],r=Math.abs(n-e);for(let s of g){let u=Math.abs(n-s);u<r&&(r=u,e=s);}return e}function Ue(n){for(let e of g)if(e>n+.01)return e;return g[g.length-1]}function Me(n){for(let e=g.length-1;e>=0;e--)if(g[e]<n-.01)return g[e];return g[0]}function He(n={}){let{initialZoom:e=Pe,minZoom:r=K,maxZoom:s=W,zoomStep:u=Ze,enabled:c=true,containerRef:f,onZoomChange:h,enableKeyboardShortcuts:p=true,preventDefault:x=true}=n,[v,a]=re.useState(e),m=re.useRef(v);re.useEffect(()=>{m.current=v;},[v]);let d=re.useCallback(t=>{let b=N(_(t,r,s));b!==m.current&&(a(b),h?.(b));},[r,s,h]),y=re.useCallback(()=>{d(m.current+u);},[u,d]),S=re.useCallback(()=>{d(m.current-u);},[u,d]),C=re.useCallback(()=>{d(e);},[e,d]),o=re.useCallback(()=>{d(1);},[d]),i=re.useCallback((t,b)=>{if(b>0){let D=t/b;d(D);}},[d]),l=re.useCallback(t=>{if(!c||!(t.ctrlKey||t.metaKey))return;x&&t.preventDefault();let D=t.deltaY;D<0?d(m.current+u):D>0&&d(m.current-u);},[c,x,u,d]),R=re.useCallback(t=>{if(!(!c||!p||!(t.ctrlKey||t.metaKey))){if(t.key==="0"){t.preventDefault(),o();return}if(t.key==="+"||t.key==="="){t.preventDefault(),y();return}if(t.key==="-"){t.preventDefault(),S();return}}},[c,p,y,S,o]);return re.useEffect(()=>{if(!c)return;let t=f?.current;if(t)return t.addEventListener("wheel",l,{passive:false}),()=>{t.removeEventListener("wheel",l);}},[c,f,l]),re.useEffect(()=>{if(!(!c||!p))return document.addEventListener("keydown",R),()=>{document.removeEventListener("keydown",R);}},[c,p,R]),{zoom:v,setZoom:d,zoomIn:y,zoomOut:S,resetZoom:C,zoomTo100:o,zoomToFit:i,isMinZoom:v<=r,isMaxZoom:v>=s,zoomPercent:Math.round(v*100),handleWheel:l,handleKeyDown:R}}function we(){return [...g]}function Le(n){return Ae(n)}function ze(n){return Ue(n)}function ke(n){return Me(n)}function Fe(n){return `${Math.round(n*100)}%`}function Ie(n){let e=n.match(/(\d+(\.\d+)?)/);if(e){let r=parseFloat(e[1]);if(!isNaN(r))return r/100}return null}function Ke(n){return g.some(e=>Math.abs(e-n)<.01)}function We(n,e=K,r=W){return N(_(n,e,r))}Object.defineProperty(exports,"HistoryManager",{enumerable:true,get:function(){return chunkB5AYO5OG_js.j}});Object.defineProperty(exports,"TABLE_DATA_ATTRIBUTES",{enumerable:true,get:function(){return chunkB5AYO5OG_js.f}});Object.defineProperty(exports,"extractTrackedChanges",{enumerable:true,get:function(){return chunkB5AYO5OG_js.c}});Object.defineProperty(exports,"useAutoHistory",{enumerable:true,get:function(){return chunkB5AYO5OG_js.h}});Object.defineProperty(exports,"useDocumentHistory",{enumerable:true,get:function(){return chunkB5AYO5OG_js.i}});Object.defineProperty(exports,"useDragAutoScroll",{enumerable:true,get:function(){return chunkB5AYO5OG_js.b}});Object.defineProperty(exports,"useHistory",{enumerable:true,get:function(){return chunkB5AYO5OG_js.g}});Object.defineProperty(exports,"useTableSelection",{enumerable:true,get:function(){return chunkB5AYO5OG_js.e}});Object.defineProperty(exports,"useTrackedChanges",{enumerable:true,get:function(){return chunkB5AYO5OG_js.d}});Object.defineProperty(exports,"useVisualLineNavigation",{enumerable:true,get:function(){return chunkB5AYO5OG_js.a}});Object.defineProperty(exports,"useAspectLockedSize",{enumerable:true,get:function(){return chunkNIBCC7WQ_js.a}});Object.defineProperty(exports,"useFixedDropdown",{enumerable:true,get:function(){return chunkEKDRHOOJ_js.c}});Object.defineProperty(exports,"useFindReplace",{enumerable:true,get:function(){return chunkL4MDZW2J_js.b}});Object.defineProperty(exports,"createSelectionFromDOM",{enumerable:true,get:function(){return docxEditorCore.createSelectionFromDOM}});Object.defineProperty(exports,"formatLastSaveTime",{enumerable:true,get:function(){return docxEditorCore.formatLastSaveTime}});Object.defineProperty(exports,"formatStorageSize",{enumerable:true,get:function(){return docxEditorCore.formatStorageSize}});Object.defineProperty(exports,"getAutoSaveStatusLabel",{enumerable:true,get:function(){return docxEditorCore.getAutoSaveStatusLabel}});Object.defineProperty(exports,"getAutoSaveStorageSize",{enumerable:true,get:function(){return docxEditorCore.getAutoSaveStorageSize}});Object.defineProperty(exports,"getSelectionRuns",{enumerable:true,get:function(){return docxEditorCore.getSelectionRuns}});Object.defineProperty(exports,"isAutoSaveSupported",{enumerable:true,get:function(){return docxEditorCore.isAutoSaveSupported}});exports.ZOOM_PRESETS=g;exports.clampZoom=We;exports.findNearestZoomPreset=Le;exports.formatZoom=Fe;exports.generateOverlayElements=pe;exports.getNextZoomPreset=ze;exports.getPreviousZoomPreset=ke;exports.getZoomPresets=we;exports.isZoomPreset=Ke;exports.parseZoom=Ie;exports.useAutoSave=Ee;exports.useClipboard=he;exports.useSelectionHighlight=de;exports.useWheelZoom=He;
|
package/dist/hooks.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{j as HistoryManager,f as TABLE_DATA_ATTRIBUTES,c as extractTrackedChanges,h as useAutoHistory,i as useDocumentHistory,b as useDragAutoScroll,g as useHistory,e as useTableSelection,d as useTrackedChanges,a as useVisualLineNavigation}from'./chunk-
|
|
1
|
+
export{j as HistoryManager,f as TABLE_DATA_ATTRIBUTES,c as extractTrackedChanges,h as useAutoHistory,i as useDocumentHistory,b as useDragAutoScroll,g as useHistory,e as useTableSelection,d as useTrackedChanges,a as useVisualLineNavigation}from'./chunk-2YRWZCRK.mjs';export{a as useAspectLockedSize}from'./chunk-GM2S2WMT.mjs';export{c as useFixedDropdown}from'./chunk-3L2QMHNA.mjs';export{b as useFindReplace}from'./chunk-OHNO4NRQ.mjs';import'./chunk-ZFZJRL2R.mjs';import'./chunk-BMBP5UFA.mjs';import re,{useState,useRef,useCallback,useEffect,useMemo,useSyncExternalStore}from'react';import {DEFAULT_SELECTION_STYLE,hasActiveSelection,getSelectedText,isSelectionWithin,getMergedSelectionRects,areSelectionStylesInjected,injectSelectionStyles,copyRuns,parseClipboardHtml,runsToClipboardContent,handlePasteEvent}from'@eigenpal/docx-editor-core/utils';import {createSelectionFromDOM,AutoSaveManager}from'@eigenpal/docx-editor-core';export{createSelectionFromDOM,formatLastSaveTime,formatStorageSize,getAutoSaveStatusLabel,getAutoSaveStorageSize,getSelectionRuns,isAutoSaveSupported}from'@eigenpal/docx-editor-core';function de(n){let{containerRef:e,enabled:r=true,config:s=DEFAULT_SELECTION_STYLE,useOverlay:u=false,debounceMs:c=16,onSelectionChange:f}=n,[h,p]=useState(false),[x,v]=useState(""),[a,m]=useState([]),[d,y]=useState(false),S=useRef(null),C=useRef(0),o=useCallback(()=>{let t=e.current,b=hasActiveSelection(),D=getSelectedText(),A=t?isSelectionWithin(t):false;if(p(b),v(D),y(A),u&&A){let $=getMergedSelectionRects(t);m($);}else m([]);f&&f(b&&A,D);},[e,u,f]),i=useCallback(()=>{let t=performance.now();if(t-C.current<c){S.current!==null&&clearTimeout(S.current),S.current=window.setTimeout(()=>{C.current=performance.now(),o(),S.current=null;},c);return}C.current=t,o();},[c,o]),l=useCallback(()=>{o();},[o]),R=useCallback(t=>({position:"absolute",left:`${t.left}px`,top:`${t.top}px`,width:`${t.width}px`,height:`${t.height}px`,backgroundColor:s.backgroundColor,borderRadius:s.borderRadius?`${s.borderRadius}px`:void 0,border:s.borderColor?`1px solid ${s.borderColor}`:void 0,zIndex:s.zIndex??0,opacity:s.opacity??1,mixBlendMode:s.mixBlendMode,pointerEvents:"none",userSelect:"none"}),[s]);return useEffect(()=>(r&&!areSelectionStylesInjected()&&injectSelectionStyles(s),()=>{}),[r,s]),useEffect(()=>{if(!r)return;let t=()=>{i();};return document.addEventListener("selectionchange",t),document.addEventListener("mouseup",t),o(),()=>{document.removeEventListener("selectionchange",t),document.removeEventListener("mouseup",t),S.current!==null&&clearTimeout(S.current);}},[r,i,o]),{hasSelection:h,selectedText:x,highlightRects:a,isSelectionInContainer:d,refresh:l,getOverlayStyle:R}}function pe(n,e=DEFAULT_SELECTION_STYLE){return n.map((r,s)=>re.createElement("div",{key:`selection-overlay-${s}`,style:{position:"absolute",left:`${r.left}px`,top:`${r.top}px`,width:`${r.width}px`,height:`${r.height}px`,backgroundColor:e.backgroundColor,borderRadius:e.borderRadius?`${e.borderRadius}px`:void 0,border:e.borderColor?`1px solid ${e.borderColor}`:void 0,zIndex:e.zIndex??0,opacity:e.opacity??1,mixBlendMode:e.mixBlendMode,pointerEvents:"none",userSelect:"none"}}))}function he(n={}){let{onCopy:e,onCut:r,onPaste:s,cleanWordFormatting:u=true,editable:c=true,onError:f,theme:h}=n,p=useRef(false),x=useRef(null),v=useCallback(async o=>{if(p.current)return false;p.current=true;try{let i=await copyRuns(o.runs,{onError:f,theme:h});return i&&e?.(o),i}finally{p.current=false;}},[e,f,h]),a=useCallback(async o=>{if(p.current||!c)return false;p.current=true;try{let i=await copyRuns(o.runs,{onError:f,theme:h});return i&&r?.(o),i}finally{p.current=false;}},[r,c,f,h]),m=useCallback(async(o=false)=>{if(p.current||!c)return null;p.current=true;try{if(navigator.clipboard&&navigator.clipboard.read){let i=await navigator.clipboard.read(),l="",R="";for(let b of i)b.types.includes("text/html")&&(l=await(await b.getType("text/html")).text()),b.types.includes("text/plain")&&(R=await(await b.getType("text/plain")).text());o&&(l="");let t=parseClipboardHtml(l,R,u);return x.current=t,s?.(t,o),t}return null}catch(i){return f?.(i),null}finally{p.current=false;}},[c,u,s,f]),d=useCallback(o=>{let i=createSelectionFromDOM();if(!i)return;o.preventDefault();let l=runsToClipboardContent(i.runs,true,h);o.clipboardData&&(o.clipboardData.setData("text/plain",l.plainText),o.clipboardData.setData("text/html",l.html),l.internal&&o.clipboardData.setData("application/x-docx-editor",l.internal)),e?.(i);},[e,h]),y=useCallback(o=>{if(!c)return;let i=createSelectionFromDOM();if(!i)return;o.preventDefault();let l=runsToClipboardContent(i.runs,true,h);o.clipboardData&&(o.clipboardData.setData("text/plain",l.plainText),o.clipboardData.setData("text/html",l.html),l.internal&&o.clipboardData.setData("application/x-docx-editor",l.internal)),r?.(i);},[c,r,h]),S=useCallback(o=>{if(!c)return;o.preventDefault();let i=handlePasteEvent(o,{cleanWordFormatting:u});if(i){x.current=i;let l=o.shiftKey??false;s?.(i,l);}},[c,u,s]),C=useCallback(o=>{},[]);return {copy:v,cut:a,paste:m,handleCopy:d,handleCut:y,handlePaste:S,handleKeyDown:C,isProcessing:p.current,lastPastedContent:x.current}}function Ee(n,e={}){let{storageKey:r,interval:s,enabled:u=true,maxAge:c,onSave:f,onError:h,onRecoveryAvailable:p,saveOnChange:x,debounceDelay:v}=e,a=useMemo(()=>new AutoSaveManager({storageKey:r,interval:s,maxAge:c,saveOnChange:x,debounceDelay:v,onSave:f,onError:h,onRecoveryAvailable:p}),[r]);useEffect(()=>{u?(a.enable(),a.startInterval()):a.disable();},[a,u]),useEffect(()=>{a.onDocumentChanged(n??null);},[a,n]),useEffect(()=>()=>{a.destroy();},[a]);let m=useSyncExternalStore(a.subscribe,a.getSnapshot),d=useCallback(()=>a.save(),[a]),y=useCallback(()=>a.clear(),[a]),S=useCallback(()=>a.getRecoveryData(),[a]),C=useCallback(()=>a.acceptRecovery(),[a]),o=useCallback(()=>a.dismissRecovery(),[a]),i=useCallback(()=>a.enable(),[a]),l=useCallback(()=>a.disable(),[a]);return {status:m.status,lastSaveTime:m.lastSaveTime,save:d,clearAutoSave:y,hasRecoveryData:m.hasRecoveryData,getRecoveryData:S,acceptRecovery:C,dismissRecovery:o,isEnabled:m.isEnabled,enable:i,disable:l}}var Pe=1,K=.25,W=4,Ze=.1,g=[.25,.5,.75,1,1.25,1.5,2,3,4];function _(n,e,r){return Math.max(e,Math.min(r,n))}function N(n){return Math.round(n*100)/100}function Ae(n){let e=g[0],r=Math.abs(n-e);for(let s of g){let u=Math.abs(n-s);u<r&&(r=u,e=s);}return e}function Ue(n){for(let e of g)if(e>n+.01)return e;return g[g.length-1]}function Me(n){for(let e=g.length-1;e>=0;e--)if(g[e]<n-.01)return g[e];return g[0]}function He(n={}){let{initialZoom:e=Pe,minZoom:r=K,maxZoom:s=W,zoomStep:u=Ze,enabled:c=true,containerRef:f,onZoomChange:h,enableKeyboardShortcuts:p=true,preventDefault:x=true}=n,[v,a]=useState(e),m=useRef(v);useEffect(()=>{m.current=v;},[v]);let d=useCallback(t=>{let b=N(_(t,r,s));b!==m.current&&(a(b),h?.(b));},[r,s,h]),y=useCallback(()=>{d(m.current+u);},[u,d]),S=useCallback(()=>{d(m.current-u);},[u,d]),C=useCallback(()=>{d(e);},[e,d]),o=useCallback(()=>{d(1);},[d]),i=useCallback((t,b)=>{if(b>0){let D=t/b;d(D);}},[d]),l=useCallback(t=>{if(!c||!(t.ctrlKey||t.metaKey))return;x&&t.preventDefault();let D=t.deltaY;D<0?d(m.current+u):D>0&&d(m.current-u);},[c,x,u,d]),R=useCallback(t=>{if(!(!c||!p||!(t.ctrlKey||t.metaKey))){if(t.key==="0"){t.preventDefault(),o();return}if(t.key==="+"||t.key==="="){t.preventDefault(),y();return}if(t.key==="-"){t.preventDefault(),S();return}}},[c,p,y,S,o]);return useEffect(()=>{if(!c)return;let t=f?.current;if(t)return t.addEventListener("wheel",l,{passive:false}),()=>{t.removeEventListener("wheel",l);}},[c,f,l]),useEffect(()=>{if(!(!c||!p))return document.addEventListener("keydown",R),()=>{document.removeEventListener("keydown",R);}},[c,p,R]),{zoom:v,setZoom:d,zoomIn:y,zoomOut:S,resetZoom:C,zoomTo100:o,zoomToFit:i,isMinZoom:v<=r,isMaxZoom:v>=s,zoomPercent:Math.round(v*100),handleWheel:l,handleKeyDown:R}}function we(){return [...g]}function Le(n){return Ae(n)}function ze(n){return Ue(n)}function ke(n){return Me(n)}function Fe(n){return `${Math.round(n*100)}%`}function Ie(n){let e=n.match(/(\d+(\.\d+)?)/);if(e){let r=parseFloat(e[1]);if(!isNaN(r))return r/100}return null}function Ke(n){return g.some(e=>Math.abs(e-n)<.01)}function We(n,e=K,r=W){return N(_(n,e,r))}export{g as ZOOM_PRESETS,We as clampZoom,Le as findNearestZoomPreset,Fe as formatZoom,pe as generateOverlayElements,ze as getNextZoomPreset,ke as getPreviousZoomPreset,we as getZoomPresets,Ke as isZoomPreset,Ie as parseZoom,Ee as useAutoSave,he as useClipboard,de as useSelectionHighlight,He as useWheelZoom};
|