@docx-editor.dev/pro 2.3.0 → 2.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.
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkA7NTVTWG_cjs=require('../chunk-A7NTVTWG.cjs'),react=require('react'),react$1=require('@docx-editor.dev/react'),jsxRuntime=require('react/jsx-runtime'),store=require('@docx-editor.dev/core/store');var $t=new Set(["List","Markers","AddComment","Draft","Balloon"]),Ht=new Set(["Card","Empty"]);function Ie(e,r){let l=r==="root"?$t:Ht,s={},n=[],o=t=>{if(Array.isArray(t)){for(let d of t)o(d);return}if(!react.isValidElement(t)){t!=null&&t!==false&&n.push(t);return}if(t.type===react.Fragment){o(t.props.children);return}let i=t.type.docxReviewPart;i&&l.has(i)?s[i]=t:n.push(t);};return o(e),{parts:s,rest:n}}function at(e,r){if(!r)return e;let l=e.props.className;return react.cloneElement(e,{className:`${r}${l?` ${l}`:""}`})}function fe(e){let r=react$1.useDocxEditor();return lt(r,e)}function lt(e,r){let l=react.useCallback(u=>{if(!e)return ()=>{};let x=e.on("change",u),I=e.on("selectionChange",u),N=e.on("error",u);return ()=>{x(),I(),N();}},[e]),s=react.useSyncExternalStore(l,()=>e?`${e.getReviewRevision()}`:"none",()=>"none"),n=react.useMemo(()=>e?e.getReviewItems(r).filter(u=>u.item.kind!=="custom"||u.item.carded):[],[e,s,r]),o=react.useMemo(()=>n.find(u=>u.isActive)?.key??null,[n]),t=react.useCallback((u,x)=>e?e.setActiveReviewItem(u,x).ok:false,[e]),i=react.useCallback(u=>!e||u.kind!=="revision"||u.readOnly?false:e.acceptReviewItem(u.key).ok,[e]),d=react.useCallback(u=>!e||u.kind!=="revision"||u.readOnly?false:e.rejectReviewItem(u.key).ok,[e]),m=react.useCallback(u=>!e||u.kind==="custom"||u.kind==="revision"&&u.readOnly?false:e.deleteReviewItem(u.key).ok,[e]),c=react.useCallback((u,x,I)=>x.trim().length===0||!e?false:e.replyToReviewItem(u.key,x,I).ok,[e]),p=react.useMemo(()=>e?e.getSelectionPlacement()?.anchorY??null:null,[e,s]),R=react.useCallback((u,x)=>u.trim().length===0||!e?false:e.addComment(u,x).ok,[e]),y=react.useMemo(()=>e?e.isReviewPaneOpen():true,[e,s]),w=react.useCallback(u=>{!e||e.isReviewPaneOpen()===u||e.exec({type:"toggleReviewPane"});},[e]);return react.useMemo(()=>({items:n,activeKey:o,setActive:t,accept:i,reject:d,remove:m,reply:c,selectionAnchorY:p,comment:R,paneOpen:y,setPaneOpen:w,ready:e!==null&&!e.snapshot().isLoading&&e.snapshot().parseError===null}),[n,o,t,i,d,m,c,p,R,y,w,e])}function Kt(e,r,l={}){let s=l.gap??8,n=l.scale??1,o=l.defaultHeight??0;return react.useMemo(()=>{let t=new Map,i=Number.NEGATIVE_INFINITY;for(let d of e){let m=d.anchorY===null?Number.isFinite(i)?i:0:Math.max(d.anchorY,i);t.set(d.key,m),i=m+((r.get(d.key)??o)+s)/n;}return t},[e,r,s,n,o])}var ee=e=>jsxRuntime.jsx("svg",{viewBox:"0 -960 960 960",width:16,height:16,"aria-hidden":"true",focusable:"false",children:jsxRuntime.jsx("path",{d:e,fill:"currentColor"})}),ut="M440-400h80v-120h120v-80H520v-120h-80v120H320v80h120v120ZM80-80v-720q0-33 23.5-56.5T160-880h640q33 0 56.5 23.5T880-800v480q0 33-23.5 56.5T800-240H240L80-80Zm126-240h594v-480H160v525l46-45Zm-46 0v-480 480Z",ct="M240-400h480v-80H240v80Zm0-120h480v-80H240v80Zm0-120h480v-80H240v80ZM880-80 720-240H160q-33 0-56.5-23.5T80-320v-480q0-33 23.5-56.5T160-880h640q33 0 56.5 23.5T880-800v720ZM160-320h594l46 45v-525H160v480Zm0 0v-480 480Z",mt="M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z",vt="m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z",ft="M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520ZM360-280h80v-360h-80v360Zm160 0h80v-360h-80v360ZM280-720v520-520Z",Yt="M200-200h57l391-391-57-57-391 391v57Zm-80 80v-170l528-527q12-11 26.5-17t30.5-6q16 0 31 6t26 18l55 56q12 11 17.5 26t5.5 30q0 16-5.5 30.5T817-647L290-120H120Zm640-584-56-56 56 56Zm-141 85-28-29 57 57-29-28Z",Zt="M486-160q-76 0-135-45t-85-123l88-38q14 48 48.5 78t85.5 30q42 0 76-20t34-64q0-18-7-33t-19-27h112q5 14 7.5 28.5T694-341q0 86-61.5 133.5T486-160ZM80-520v-80h800v80H80Zm402-360q66 0 116 30t74 84l-88 38q-11-28-38.5-47T480-794q-42 0-72 19t-30 51q0 15 6 27t18 22H272q-6-13-9-27t-3-30q0-70 55-114t167-44Z",Bt="M360-160q-83 0-141.5-58.5T160-360v-360q0-83 58.5-141.5T360-920q83 0 141.5 58.5T560-720v360q0 83-58.5 141.5T360-160Zm0-80q50 0 85-35t35-85v-360q0-50-35-85t-85-35q-50 0-85 35t-35 85v360q0 50 35 85t85 35Zm300 80q29 0 49.5-20.5T730-230q0-22-12.5-40T684-296l-64-32v-232l100 100q23 23 51.5 35.5T832-412v-80q-17 0-32-6.5T773-517L633-657q-12-12-27.5-17.5T573-680h-13v520h100ZM360-720Z",Ft="M580-360q-25 0-42.5-17.5T520-420v-160q0-25 17.5-42.5T580-640h160q25 0 42.5 17.5T800-580v260q0 66-47 113t-113 47v-80q33 0 56.5-23.5T720-320v-40H580Zm-360 0q-25 0-42.5-17.5T160-420v-160q0-25 17.5-42.5T220-640h160q25 0 42.5 17.5T440-580v260q0 66-47 113t-113 47v-80q33 0 56.5-23.5T360-320v-40H220Z";function pt(e){if(e.kind==="comment")return ct;if(e.kind==="custom")return e.item.icon??Ft;switch(e.revisionKind){case "insert":case "moveTo":return Yt;case "delete":case "moveFrom":return Zt;case "format":return Bt;default:return ct}}var Gt=e=>e.isLoading||e.parseError!==null||e.pageSetup==null,ke=react.createContext(null),P=react.createContext(null);function Wt(){return react.useContext(P)}var Xt={scale:96/72,top:0,left:null},Jt=16,we="\0compose",Rt=600,bt=8,en=72,tn=64,nn=480,on=Object.freeze({placement:false});function Me(e,r){return e.kind!=="comment"?false:e.parentId!==void 0?r.has(e.parentId):e.parentRevisionId!==void 0?r.has(e.parentRevisionId):false}function De(e){return new Set(e.map(r=>r.id))}function j(e){let r=e.target?.tagName;r==="INPUT"||r==="SELECT"||r==="TEXTAREA"||e.preventDefault();}function $(){let e=react.useContext(ke);return e||rn}function Y(){let{t:e}=react.useContext(ke)??{},{t:r}=react$1.useTranslation();return react.useCallback(l=>e?.(l)??r(l),[e,r])}var rn={t:void 0,cardClassName:void 0,review:{items:[],activeKey:null,setActive:()=>false,accept:()=>false,reject:()=>false,remove:()=>false,reply:()=>false,selectionAnchorY:null,comment:()=>false,paneOpen:true,setPaneOpen:()=>{},ready:false},allItems:[],authorSlots:new Map,byId:new Map,measure:()=>{},beginDraft:()=>{},endDraft:()=>{}};function sn({className:e,furniture:r,asChild:l,hidden:s,children:n,t:o,card:t,preset:i=true,stack:d=true,gap:m=8,filter:c,structural:p=false,formatting:R=false}){let y=react$1.useDocxEditor(),w=react$1.useEditorState(Gt),u=react.useMemo(()=>{let f=[];return p||f.push("structural"),R||f.push("format"),f.length>0?f:void 0},[p,R]),x=react.useMemo(()=>u?{excludeRevisionKinds:u}:void 0,[u]);react.useEffect(()=>(y?.setReviewActivationExclusions(u??null),()=>y?.setReviewActivationExclusions(null)),[y,u]);let I=fe(on),N=fe(x),C=N.setPaneOpen,{t:E}=react$1.useTranslation(),T=react.useCallback(f=>o?.(f)??E(f),[o,E]),D=react.useRef(null),me=react.useContext(react$1.ReviewRailContext);react.useEffect(()=>me?.register(),[me]);let Z=N.paneOpen,k=react.useMemo(()=>c?N.items.filter(f=>c(f)):N.items,[N.items,c]),Be=react.useMemo(()=>{let f=new Map;for(let v of k)v.author&&!f.has(v.author)&&f.set(v.author,f.size);return f},[k]),Fe=react.useMemo(()=>{let f=new Map;for(let v of k)f.set(v.id,v);return f},[k]),[je,Et]=react.useState(()=>new Map),he=react.useCallback((f,v)=>{v<=0||Et(b=>{if(b.get(f)===v)return b;let _=new Map(b);return _.set(f,v),_});},[]),ge=react.useRef(new WeakMap),oe=react.useRef(null),Ue=react.useCallback((f,v)=>{!f||typeof ResizeObserver>"u"||(he(v,f.offsetHeight),oe.current??(oe.current=new ResizeObserver(b=>{for(let _ of b){let g=ge.current.get(_.target);g&&he(g,_.target.offsetHeight);}})),ge.current.get(f)!==v&&(ge.current.set(f,v),oe.current.observe(f)));},[he]);react.useEffect(()=>()=>oe.current?.disconnect(),[]);let[S,Tt]=react.useState(Xt);react.useEffect(()=>{let f=D.current;if(!y||!f)return;let v=f.offsetParent,b=v?.querySelector(".docx-paginated-surface")??null,_=()=>{Tt(M=>{let H=b&&v?b.getBoundingClientRect():null,L=H&&v?v.getBoundingClientRect():null,q={scale:y.getRenderScale(),top:H&&L&&v?H.top-L.top-v.clientTop+v.scrollTop:0,left:H&&L&&v?H.right-L.left-v.clientLeft+v.scrollLeft+Jt:null};return M.scale===q.scale&&M.top===q.top&&M.left===q.left?M:q});};_();let g=new ResizeObserver(_);return v&&g.observe(v),b&&g.observe(b),()=>g.disconnect()},[y,k,w,s]),react.useEffect(()=>{let f=D.current;if(!y||!f)return;let v=b=>{let _=b.target;if(!(_ instanceof Node)||f.contains(_))return;let g=f.offsetParent;!g||!g.contains(_)||g.querySelector(".docx-paginated-surface")?.contains(_)||y.setActiveReviewItem(null);};return document.addEventListener("mousedown",v,true),()=>document.removeEventListener("mousedown",v,true)},[y,w,s]);let[Ne,It]=react.useState(null);react.useEffect(()=>{let f=D.current,v=f?.offsetParent;if(!v)return;let b=0,_=()=>{b=0,It(L=>{let q=v.scrollTop-Rt,ve=v.scrollTop+v.clientHeight+Rt;return L&&L.top===q&&L.bottom===ve?L:{top:q,bottom:ve}});},g=0,M=()=>{b===0&&(b=requestAnimationFrame(_)),f?.setAttribute("data-scrolling",""),window.clearTimeout(g),g=window.setTimeout(()=>f?.removeAttribute("data-scrolling"),150);};_(),v.addEventListener("scroll",M,{passive:true});let H=new ResizeObserver(M);return H.observe(v),()=>{b!==0&&cancelAnimationFrame(b),window.clearTimeout(g),v.removeEventListener("scroll",M),H.disconnect();}},[y,w,s]);let[B,_e]=react.useState(null),ze=react.useCallback(()=>{y&&(y.surface?.retainSelection(),C(true),_e(y.getSelectionPlacement()?.anchorY??null));},[y,C]),Qe=react.useCallback(()=>{y?.surface?.releaseSelection(),_e(null),y?.focus();},[y]);react.useEffect(()=>{Z||B===null||(y?.surface?.releaseSelection(),_e(null));},[Z,B,y]);let Ge=B??N.selectionAnchorY,U=react.useMemo(()=>{let f=De(k);return k.filter(v=>!Me(v,f))},[k]),We=react.useMemo(()=>{if(B===null)return U;let f=U.findIndex(b=>b.anchorY!==null&&b.anchorY>B),v={key:we,anchorY:B};return f===-1?[...U,v]:[...U.slice(0,f),v,...U.slice(f)]},[U,B]),Xe=react.useMemo(()=>{let f=new Map(je);for(let v of U){if(f.has(v.key))continue;let b=v.text.length+(v.kind==="revision"?v.replacedText?.length??0:0),_=Math.min(6,Math.max(1,Math.ceil(b/36)));f.set(v.key,64+_*20);}return f},[je,U]),{stacked:Ce,collapsedKeys:Je}=react.useMemo(()=>{let f=S.scale,v=new Map,b=new Set,_=Number.NEGATIVE_INFINITY;for(let g of We){let M=g.anchorY===null?Number.isFinite(_)?_:0:Math.max(g.anchorY,_);v.set(g.key,M);let H=g.anchorY===null?0:(M-g.anchorY)*f,L="isActive"in g&&g.isActive,q=H>nn&&!L&&g.key!==we;q&&b.add(g.key);let ve=q?tn:Xe.get(g.key)??en;_=M+(ve+m)/f;}return {stacked:v,collapsedKeys:b}},[We,Xe,m,S.scale]),Ee=Ge===null?null:S.top+(Ce.get(we)??Ge)*S.scale,et=t?.className,Pt=react.useMemo(()=>({t:o,cardClassName:et,review:{...N,items:k},allItems:I.items,authorSlots:Be,byId:Fe,measure:Ue,beginDraft:ze,endDraft:Qe}),[o,et,N,I.items,k,Be,Fe,Ue,ze,Qe]);if(s||w)return null;let tt={ref:D,className:`docx-review${e?` ${e}`:""}`,"data-testid":"review-rail","data-count":k.length,"data-open":Z?"":void 0,role:"complementary","aria-label":T("review.ariaLabel"),onMouseDown:j,style:S.left===null?void 0:{left:S.left,right:"auto"}},X=typeof n=="function"?{parts:{},rest:n}:Ie(n,"root"),G=X.parts,re=(f,v)=>{if(!(f in G))return v;let b=G[f];return !react.isValidElement(b)||!react.isValidElement(v)?b:react.cloneElement(b,{...v.props,...b.props})},nt=jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[i||"AddComment"in G?re("AddComment",jsxRuntime.jsx(Oe,{top:Ee,drafting:B!==null})):null,!Z||B===null||Ee===null||!i&&!("Draft"in G)?null:re("Draft",jsxRuntime.jsx(Le,{top:Ee})),i||"Balloon"in G?re("Balloon",jsxRuntime.jsx($e,{})):null]}),At=jsxRuntime.jsx(Re,{stack:d,positions:Ce,collapsed:Je,scale:S.scale,offset:S.top,window:Ne,children:X.rest}),kt=jsxRuntime.jsx(Se,{scale:S.scale,offset:S.top,window:Ne}),Mt=Z?i||"List"in G?re("List",At):typeof X.rest=="function"?null:X.rest:i||"Markers"in G?re("Markers",kt):typeof X.rest=="function"?null:X.rest;return jsxRuntime.jsx(ke.Provider,{value:Pt,children:l&&react.isValidElement(n)?jsxRuntime.jsx(react$1.Slot,{...tt,children:react.cloneElement(n,void 0,n.props.children,i?jsxRuntime.jsx(Re,{stack:d,positions:Ce,collapsed:Je,scale:S.scale,offset:S.top,window:Ne}):null,nt)}):jsxRuntime.jsxs("aside",{...tt,children:[Z&&r!==void 0?jsxRuntime.jsx("div",{className:"docx-review__furniture","data-testid":"review-furniture",children:r}):null,Mt,nt]})})}function Re({stack:e=true,positions:r,collapsed:l,scale:s=1,offset:n=0,window:o=null,children:t,className:i,hidden:d}){let{review:m,measure:c,cardClassName:p}=$();if(d)return null;let R=typeof t=="function"?null:Ie(t,"list"),y=De(m.items),w=m.items.filter(u=>!Me(u,y));return w.length===0?typeof t=="function"?null:R?.parts.Empty??jsxRuntime.jsx(He,{}):jsxRuntime.jsx("div",{className:`docx-review__list${i?` ${i}`:""}`,children:w.map(u=>{let x=e?r?.get(u.key)??u.anchorY:u.anchorY,I=x==null?null:n+x*s;if(I!==null&&o&&(I<o.top||I>o.bottom))return null;let N=I===null?{}:{position:"absolute",top:I};return jsxRuntime.jsx(P.Provider,{value:u,children:jsxRuntime.jsx("div",{className:"docx-review__slot",style:N,...l?.has(u.key)?{"data-collapsed":""}:{},ref:C=>{c(C,u.key);},children:typeof t=="function"?t(u):R?.parts.Card&&react.isValidElement(R.parts.Card)?at(R.parts.Card,p):jsxRuntime.jsx(qe,{...p?{className:p}:{},children:R?.rest})})},u.key)})})}Re.docxReviewPart="List";function Se({scale:e=1,offset:r=0,window:l=null,className:s,hidden:n,icon:o}){let{review:t}=$(),i=Y();if(n)return null;let d=De(t.items),m=t.items.filter(c=>!Me(c,d));return jsxRuntime.jsx("div",{className:`docx-review__markers${s?` ${s}`:""}`,children:m.map(c=>{if(c.anchorY===null)return null;let p=r+c.anchorY*e;return l&&(p<l.top||p>l.bottom)?null:jsxRuntime.jsx("button",{type:"button",className:"docx-review__marker","data-testid":"review-marker","data-kind":c.kind==="revision"?c.revisionKind:c.kind,style:{position:"absolute",top:p},title:c.author?`${c.author}: ${c.text}`:c.text,"aria-label":`${i("review.showPane")}: ${c.author?`${c.author}. `:""}${c.text}`,onMouseDown:j,onClick:()=>{t.setPaneOpen(true),t.setActive(c.key);},children:(typeof o=="function"?o(c):o)??ee(pt(c))},c.key)})})}Se.docxReviewPart="Markers";function Oe({top:e=null,drafting:r=false,className:l,hidden:s,children:n}){let{beginDraft:o}=$(),t=Y();if(s||r||e===null)return null;let i={type:"button",className:`docx-review__add${l?` ${l}`:""}`,"data-testid":"review-add-comment",style:{position:"absolute",top:e},"aria-label":t("common.comment"),title:t("common.comment"),onMouseDown:j,onClick:o};return n?jsxRuntime.jsx(react$1.Slot,{...i,children:n}):jsxRuntime.jsx("button",{...i,children:ee(ut)})}Oe.docxReviewPart="AddComment";function Le({top:e=0,className:r,hidden:l}){let{review:s,endDraft:n,measure:o}=$(),t=Y(),[i,d]=react.useState(""),[m,c]=react.useState(false),p=react.useRef(null),R=react.useId();react.useEffect(()=>{p.current?.focus({preventScroll:true});},[]);let y=react.useCallback(()=>{if(i.trim().length===0)return;let w=s.comment(i.trim());c(!w),w&&(d(""),n());},[i,s,n]);return l?null:jsxRuntime.jsx("div",{className:`docx-review__slot${r?` ${r}`:""}`,style:{position:"absolute",top:e},ref:w=>{o(w,we);},children:jsxRuntime.jsx("div",{className:"docx-review__card","data-testid":"review-draft","data-draft":"",children:jsxRuntime.jsxs("form",{className:"docx-review__reply-box",onSubmit:w=>{w.preventDefault(),y();},children:[jsxRuntime.jsx("label",{className:"docx-editor-sr-only",htmlFor:R,children:t("comments.addComment")}),jsxRuntime.jsx("input",{id:R,ref:p,"data-testid":"review-draft-input",className:"docx-review__input",value:i,placeholder:t("comments.addComment"),...m?{"aria-invalid":true}:{},onChange:w=>{c(false),d(w.target.value);},onKeyDown:w=>{if(w.key==="Escape"){w.preventDefault(),n();return}w.key==="Enter"&&(w.preventDefault(),y());}}),jsxRuntime.jsxs("div",{className:"docx-review__reply-actions",children:[jsxRuntime.jsx("button",{type:"button","data-testid":"review-draft-cancel",className:"docx-review__text-button",onMouseDown:j,onClick:n,children:t("common.cancel")}),jsxRuntime.jsx("button",{type:"submit","data-testid":"review-draft-submit",className:"docx-review__submit",disabled:i.trim().length===0,children:t("common.comment")})]}),m?jsxRuntime.jsx("span",{className:"docx-review__refused",role:"alert",children:t("review.commentRefused")}):null]})})})}Le.docxReviewPart="Draft";function $e({className:e,hidden:r}){let{review:l,allItems:s,authorSlots:n}=$(),o=Y(),t=react.useRef(null),[i,d]=react.useState(null),m=react.useRef(false);m.current=i!==null,react.useEffect(()=>{let w=t.current,u=w?.closest(".docx-review"),x=u?.closest(".docx-editor__scroll-container")??u?.offsetParent;if(!w||!u||!x)return;let I=(C,E)=>{let T=u.getBoundingClientRect(),D=C.getBoundingClientRect(),me=C.ownerDocument.defaultView?.innerHeight??1/0,Z=Number(C.dataset.start),k=Number(C.dataset.end);d({revisionId:C.dataset.revisionId,author:C.dataset.revisionAuthor??"",...C.dataset.revisionDate!==void 0?{date:C.dataset.revisionDate}:{},...C.dataset.revisionKind!==void 0?{kind:C.dataset.revisionKind}:{},structuralSite:E,...C.dataset.paragraphId!==void 0?{paragraphId:C.dataset.paragraphId}:{},...Number.isFinite(Z)?{start:Z}:{},...Number.isFinite(k)?{end:k}:{},left:D.left-T.left,top:D.top-T.top,bottom:D.bottom-T.top,above:D.bottom+220>me});},N=C=>{let E=C.target;if(!(E instanceof Element)||w.contains(E))return;let T=E.closest("[data-revision-id]");if(T instanceof HTMLElement&&x.contains(T)){let D=T.classList.contains("docx-table-row--revision");if(T.dataset.revisionKind==="format"||D){I(T,D);return}}m.current&&d(null);};return x.addEventListener("pointerdown",N,true),x.addEventListener("mousedown",N,true),()=>{x.removeEventListener("pointerdown",N,true),x.removeEventListener("mousedown",N,true);}},[]);let c=react.useMemo(()=>{if(!i)return null;let w=null,u=false,x=null,I=false,N=null,C=false;for(let E of s)if(!(E.kind!=="revision"||E.item.kind!=="revision")){for(let T of E.item.addresses)if(T.id===i.revisionId){if(T.author===i.author){if(T.date===i.date)return E;w===null?w=E:w!==E&&(u=true);}x===null?x=E:x!==E&&(I=true);}if(i.paragraphId!==void 0&&i.start!==void 0&&i.end!==void 0&&(E.revisionKind==="format"||E.revisionKind==="structural")){for(let T of E.item.ranges)if(T.start.paragraphId===i.paragraphId&&T.start.offset<i.end&&T.end.offset>i.start){N===null?N=E:N!==E&&(C=true);break}}}return w!==null&&!u?w:x!==null&&!I?x:N!==null&&!C?N:null},[s,i]),p=c&&(c.revisionKind==="format"||c.revisionKind==="structural")?c:null,R=react.useRef(false);if(react.useEffect(()=>{if(p){R.current=true;return}R.current&&(R.current=false,d(null));},[p]),r)return null;let y=i?.kind==="format"?"format":"structural";return jsxRuntime.jsx("div",{ref:t,className:`docx-review__balloon-root${e?` ${e}`:""}`,children:i===null?null:jsxRuntime.jsx("div",{className:"docx-review__balloon","data-testid":"review-balloon",style:{left:i.left,top:i.above?i.top-6:i.bottom+6,transform:i.above?"translateY(-100%)":void 0},onMouseDown:j,children:p?jsxRuntime.jsx(P.Provider,{value:p,children:jsxRuntime.jsxs("div",{className:"docx-review__card","data-testid":"review-balloon-card","data-kind":p.revisionKind??"revision",style:{"--doc-review-author":`var(--doc-review-author-${(n.get(p.author)??0)%bt})`},onClick:()=>l.setActive(p.key),children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[jsxRuntime.jsx(se,{}),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[jsxRuntime.jsx(ae,{}),jsxRuntime.jsx(le,{})]}),p.kind==="revision"&&!p.readOnly?jsxRuntime.jsxs("div",{className:"docx-review__actions",children:[jsxRuntime.jsx(ye,{}),jsxRuntime.jsx(be,{})]}):null]}),jsxRuntime.jsx(ce,{})]})}):jsxRuntime.jsxs("div",{className:"docx-review__card","data-testid":"review-balloon-card","data-kind":y,children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[jsxRuntime.jsx("span",{className:"docx-review__avatar","aria-hidden":"true",children:an(i.author)}),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[jsxRuntime.jsx("span",{className:"docx-review__author",children:i.author||o("comments.unknown")}),i.date?jsxRuntime.jsx(ln,{raw:i.date}):null]})]}),jsxRuntime.jsx("div",{className:"docx-review__summary",children:jsxRuntime.jsx("span",{className:"docx-review__label","data-kind":y,children:o(ht(y))})})]})})})}$e.docxReviewPart="Balloon";function an(e){let r=e.trim().split(/\s+/).filter(Boolean);return r.length===0?"?":r.slice(0,2).map(l=>l[0].toUpperCase()).join("")}function ln({raw:e}){let r=new Date(e);return Number.isNaN(r.getTime())?null:jsxRuntime.jsx("time",{className:"docx-review__time",dateTime:e,children:xt.format(r)})}function He({className:e,hidden:r,children:l}){let s=Y();return r?null:jsxRuntime.jsx("div",{className:`docx-review__empty${e?` ${e}`:""}`,"data-testid":"review-empty",children:l??s("review.empty")})}He.docxReviewPart="Empty";function qe({className:e,asChild:r,hidden:l,children:s}){let{review:n,authorSlots:o}=$(),t=react.useContext(P),i=react.useId();if(l||!t)return null;let d=o.get(t.author)??0,m={className:`docx-review__card${e?` ${e}`:""}`,"data-testid":"review-card","aria-labelledby":`${i}-author ${i}-summary`,"data-kind":t.kind==="revision"?t.revisionKind??"revision":t.kind,...t.kind==="custom"&&t.item.kind==="custom"?{"data-node-name":t.item.name}:{},...t.isActive?{"data-active":""}:{},...t.kind==="comment"&&t.resolved?{"data-resolved":""}:{},style:{"--doc-review-author":`var(--doc-review-author-${d%bt})`},tabIndex:0,role:"button",id:i,onMouseDown:c=>{c.target?.closest("[data-review-selectable]")||c.currentTarget.focus({preventScroll:true});},onClick:()=>n.setActive(t.key),onKeyDown:c=>{c.target===c.currentTarget&&(c.key!=="Enter"&&c.key!==" "||(c.preventDefault(),n.setActive(t.key)));}};return r?jsxRuntime.jsx(react$1.Slot,{...m,children:s}):jsxRuntime.jsx("div",{...m,children:jsxRuntime.jsx(cn,{children:s})})}qe.docxReviewPart="Card";function cn({children:e}){let r=react.useContext(P),l=react.useMemo(()=>dn(e),[e]),s=(o,t)=>o in l?l[o]:t;if(!r)return null;if(r.kind==="custom"&&r.item.kind==="custom"){let o=r.item;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[s("Avatar",null),jsxRuntime.jsx("div",{className:"docx-review__meta",children:s("Author",jsxRuntime.jsx("span",{className:"docx-review__author","data-testid":"review-custom-title",children:o.title}))})]}),s("Summary",o.detail?jsxRuntime.jsx("div",{className:"docx-review__summary","data-testid":"review-summary","data-review-selectable":"",children:jsxRuntime.jsx("span",{className:"docx-review__text",children:o.detail})}):null),l.__extra]})}let n=r.kind==="revision"&&!r.readOnly;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[s("Avatar",jsxRuntime.jsx(se,{})),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[s("Author",jsxRuntime.jsx(ae,{})),s("Time",jsxRuntime.jsx(le,{}))]}),n||r.kind==="comment"?jsxRuntime.jsxs("div",{className:"docx-review__actions",children:[s("Accept",jsxRuntime.jsx(ye,{})),s("Reject",jsxRuntime.jsx(be,{})),s("Delete",jsxRuntime.jsx(xe,{}))]}):null]}),s("Summary",jsxRuntime.jsx(ce,{})),s("Replies",jsxRuntime.jsx(Ve,{})),s("Reply",jsxRuntime.jsx(Ke,{})),l.__extra]})}function dn(e){let r={},l=[],s=n=>{if(Array.isArray(n)){n.forEach(s);return}if(!n||typeof n!="object"||!("type"in n)){n&&l.push(n);return}if(n.type===react.Fragment){s(n.props.children);return}let o=n.type.docxReviewPart;o?r[o]=n:l.push(n);};return s(e),l.length>0&&(r.__extra=l),r}function se({className:e,asChild:r,hidden:l,children:s}){let n=react.useContext(P);if(l||!n||s===void 0&&!n.initials)return null;let o={className:`docx-review__avatar${e?` ${e}`:""}`,"data-testid":"review-avatar","aria-hidden":true};return r?jsxRuntime.jsx(react$1.Slot,{...o,children:s}):jsxRuntime.jsx("span",{...o,children:s??n.initials})}se.docxReviewPart="Avatar";function ae({className:e,asChild:r,hidden:l,children:s}){let n=react.useContext(P),o=Y();if(l||!n)return null;let t=n.author||o("comments.unknown"),i={className:`docx-review__author${e?` ${e}`:""}`,"data-testid":"review-author"};return r?jsxRuntime.jsx(react$1.Slot,{...i,children:s}):jsxRuntime.jsx("span",{...i,children:s??t})}ae.docxReviewPart="Author";function le({className:e,asChild:r,hidden:l,children:s}){let n=react.useContext(P);if(l||!n)return null;let o=n.date;if(!o)return null;let t=new Date(o);if(Number.isNaN(t.getTime()))return null;let i={className:`docx-review__time${e?` ${e}`:""}`,"data-testid":"review-time",dateTime:o};return r?jsxRuntime.jsx(react$1.Slot,{...i,children:s}):jsxRuntime.jsx("time",{...i,children:s??xt.format(t)})}le.docxReviewPart="Time";var xt=new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});function ce({className:e,asChild:r,hidden:l,children:s}){let n=react.useContext(P),o=Y();if(l||!n)return null;let t=n.text,i=n.kind!=="revision"?null:o(ht(n.revisionKind)),d=n.kind==="revision"&&n.revisionKind==="replace",m={className:`docx-review__summary${e?` ${e}`:""}`,"data-testid":"review-summary","data-review-selectable":""};return r?jsxRuntime.jsx(react$1.Slot,{...m,children:s}):jsxRuntime.jsx("div",{...m,children:s??(d?jsxRuntime.jsxs("span",{className:"docx-review__text",children:[o("review.replaced")," ",jsxRuntime.jsxs("span",{className:"docx-review__removed",children:['"',n.replacedText,'"']})," ",o("review.replacedWith")," ",jsxRuntime.jsxs("span",{className:"docx-review__added",children:['"',t,'"']})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[i?jsxRuntime.jsx("span",{className:"docx-review__label","data-kind":n.kind==="revision"?n.revisionKind:"revision",children:i}):null,t?jsxRuntime.jsx("span",{className:"docx-review__text",children:t}):null]}))})}ce.docxReviewPart="Summary";function ht(e){switch(e){case "insert":return "review.inserted";case "delete":return "review.deleted";case "replace":return "review.replaced";case "moveFrom":return "review.movedFrom";case "moveTo":return "review.movedTo";case "format":return "revisions.runPropertiesChanged";case "paragraphMark":return "revisions.paragraphMarkInserted";default:return "review.structural"}}function ye({className:e,asChild:r,hidden:l,children:s,icon:n}){let{review:o}=$(),t=react.useContext(P),i=Y();if(l||!t||t.kind!=="revision"||t.readOnly)return null;let d=i("review.accept"),m={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-accept","aria-label":d,title:d,onMouseDown:j,onClick:c=>{c.stopPropagation(),o.accept(t);}};return r?jsxRuntime.jsx(react$1.Slot,{...m,children:s}):jsxRuntime.jsx("button",{...m,children:n??s??ee(mt)})}ye.docxReviewPart="Accept";function be({className:e,asChild:r,hidden:l,children:s,icon:n}){let{review:o}=$(),t=react.useContext(P),i=Y();if(l||!t||t.kind!=="revision"||t.readOnly)return null;let d=i("review.reject"),m={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-reject","aria-label":d,title:d,onMouseDown:j,onClick:c=>{c.stopPropagation(),o.reject(t);}};return r?jsxRuntime.jsx(react$1.Slot,{...m,children:s}):jsxRuntime.jsx("button",{...m,children:n??s??ee(vt)})}be.docxReviewPart="Reject";function xe({className:e,asChild:r,hidden:l,children:s,icon:n}){let{review:o}=$(),t=react.useContext(P),{t:i}=react$1.useTranslation();if(l||!t||t.kind==="custom"||t.kind==="revision"&&t.readOnly)return null;let d=t.kind==="comment"?i("review.deleteComment"):i("review.discardChange"),m={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-delete","aria-label":d,title:d,onMouseDown:j,onClick:c=>{c.stopPropagation(),o.remove(t);}};return r?jsxRuntime.jsx(react$1.Slot,{...m,children:s}):jsxRuntime.jsx("button",{...m,children:n??s??ee(ft)})}xe.docxReviewPart="Delete";function Ve({className:e,hidden:r}){let{byId:l}=$(),s=react.useContext(P);if(r||!s||s.kind==="custom")return null;let n=s.replyIds.map(o=>l.get(o)).filter(o=>o!==void 0);return n.length===0?null:jsxRuntime.jsx("ol",{className:`docx-review__replies${e?` ${e}`:""}`,children:n.map(o=>jsxRuntime.jsx(P.Provider,{value:o,children:jsxRuntime.jsxs("li",{className:"docx-review__reply","data-testid":"review-reply",children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[jsxRuntime.jsx(se,{}),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[jsxRuntime.jsx(ae,{}),jsxRuntime.jsx(le,{})]}),jsxRuntime.jsx("div",{className:"docx-review__actions",children:jsxRuntime.jsx(xe,{})})]}),jsxRuntime.jsx(ce,{})]})},o.key))})}Ve.docxReviewPart="Replies";function Ke({className:e,hidden:r,children:l}){let{review:s}=$(),n=react.useContext(P),o=Y(),[t,i]=react.useState(""),[d,m]=react.useState(false),c=react.useId(),p=react.useCallback(()=>{if(!n||t.trim().length===0)return;let R=s.reply(n,t.trim());m(!R),R&&i("");},[n,t,s]);return r||!n||!n.isActive?null:l?jsxRuntime.jsx(jsxRuntime.Fragment,{children:l}):jsxRuntime.jsxs("form",{className:`docx-review__reply-box${e?` ${e}`:""}`,onSubmit:R=>{R.preventDefault(),p();},children:[jsxRuntime.jsx("label",{className:"docx-editor-sr-only",htmlFor:c,children:o("comments.replyPlaceholder")}),jsxRuntime.jsx("input",{id:c,"data-testid":"review-reply-input",className:"docx-review__input",value:t,placeholder:o("comments.replyPlaceholder"),...d?{"aria-invalid":true,"data-refused":""}:{},onChange:R=>{m(false),i(R.target.value);},onClick:R=>R.stopPropagation(),onKeyDown:R=>{R.key==="Enter"&&(R.preventDefault(),p());}}),jsxRuntime.jsxs("div",{className:"docx-review__reply-actions",children:[jsxRuntime.jsx("button",{type:"button","data-testid":"review-reply-cancel",className:"docx-review__text-button",onMouseDown:j,onClick:R=>{R.stopPropagation(),i(""),m(false),s.setActive(null);},children:o("common.cancel")}),jsxRuntime.jsx("button",{type:"submit","data-testid":"review-reply-submit",className:"docx-review__submit",disabled:t.trim().length===0,children:o("review.reply")})]}),d?jsxRuntime.jsx("span",{className:"docx-review__refused",role:"alert","data-testid":"review-reply-refused",children:o("review.replyRefused")}):null]})}Ke.docxReviewPart="Reply";var un=Object.assign(sn,{List:Re,Empty:He,Card:qe,Avatar:se,Author:ae,Time:le,Summary:ce,Accept:ye,Reject:be,Delete:xe,Replies:Ve,Reply:Ke,Markers:Se,AddComment:Oe,Draft:Le,Balloon:$e});function de(e){let r=react$1.useDocxEditor();return react.useMemo(()=>e||(r?.getCustomNodeDefinitions()??[]).filter(chunkA7NTVTWG_cjs.j),[e,r])}var pn=".docx-content-control-boundary";function te(e,r){let{node:l,definition:s,controlId:n}=e,o=n?r?.getReviewItems().find(d=>d.kind==="custom"&&d.item.id===n):void 0;if(o&&o.kind==="custom"){let d=o.item;return {...l,attrs:d.attrs,text:d.text,...d.data===void 0?{}:{data:d.data},...n?{nodeId:n}:{}}}let t=n?wn(r,n,s):void 0,i=s.fromDocx?s.fromDocx({attrs:l.attrs,text:"",...t===void 0?{}:{data:t}}):l.attrs;return i===null?null:{...l,attrs:i,...t===void 0?{}:{data:t},...n?{nodeId:n}:{}}}function wn(e,r,l){let s=e?.surface;if(!s)return;let n=s.session.part(),o=store.customNodePayloadsByControl(s.session.currentPackage(),n.name).get(r);if(!o)return;let t=chunkA7NTVTWG_cjs.e(l.schema,o.data);return t.ok?t.value:void 0}function ne(e,r){let l=e?.closest?.(pn),s=l?.closest(".docx-content-control-chrome"),n=s?.getAttribute("data-tag"),o=n?chunkA7NTVTWG_cjs.c(n):null;if(!l||!o||!n)return null;let t=r.find(i=>i.tagPrefix===o.prefix&&i.name===o.name);return t?{node:{name:o.name,attrs:o.attrs,tag:n,rect:l.getBoundingClientRect()},definition:t,controlId:s?.getAttribute("data-docx-content-control")??null}:null}var Ye=".docx-content-control-boundary",yn=e=>{if(!chunkA7NTVTWG_cjs.k.test(e.tagPrefix)||!chunkA7NTVTWG_cjs.k.test(e.name))return [];let r=`${e.tagPrefix}:${e.name}`;return [`.docx-content-control-chrome[data-tag="${r}"]`,`.docx-content-control-chrome[data-tag^="${r}?"]`]};function bn(e){let{onNodeClick:r,onNodeHover:l}=e,s=react$1.useDocxEditor(),n=de(e.nodes);return react.useEffect(()=>{let o=document.createElement("style"),t=[];for(let i of n){let d=yn(i);if(d.length===0)continue;let m=i.chrome?.color!==void 0&&CSS.supports("color",i.chrome.color)?i.chrome.color:"#2563eb";t.push(`${d.map(c=>`${c} ${Ye}`).join(", ")} {`," pointer-events: auto !important;"," opacity: 1;"," border: none;",` background: color-mix(in srgb, ${m} 12%, transparent);`," border-radius: 6px;"," cursor: default;","}");}return o.textContent=t.join(`
2
- `),document.head.append(o),()=>o.remove()},[n]),react.useEffect(()=>{let o=null,t=null,i=p=>ne(document.elementFromPoint(p.clientX,p.clientY),n),d=p=>{let R=p.button===0?i(p):null;o=R?.controlId??null,t=R?.node.tag??null;},m=p=>{let R=o,y=t;if(o=null,t=null,y===null)return;let w=i(p);if(!w||w.node.tag!==y||R!==null&&w.controlId!==R)return;let u=te(w,s);u&&(w.definition.onClick?.(u),r?.(u));},c=p=>{let R=ne(p.target,n);if(!R||p.relatedTarget?.closest?.(Ye)===p.target.closest(Ye))return;let w=te(R,s);w&&(R.definition.onHover?.(w),l?.(w));};return document.addEventListener("pointerdown",d,true),document.addEventListener("pointerup",m,true),document.addEventListener("mouseover",c),()=>{document.removeEventListener("pointerdown",d,true),document.removeEventListener("pointerup",m,true),document.removeEventListener("mouseover",c);}},[n,s,r,l]),null}function Ct(e){let{onEditNode:r,onRemoveRefused:l,remove:s=true}=e,n=de(e.nodes),o=react$1.useContextMenuTarget(),t=react$1.useDocxEditor(),{t:i}=react$1.useTranslation(),d=react.useMemo(()=>o?ne(o,n):null,[o,n]),m=react.useMemo(()=>d?te(d,t):null,[d,t]),c=react.useMemo(()=>!d?.definition.reviewCard||!m?null:d.definition.reviewCard({attrs:m.attrs,text:m.text??"",...m.data===void 0?{}:{data:m.data}}),[d,m]);if(!d||!m)return null;let{definition:p}=d,R=p.label??p.name,y=p.onEdit!==void 0||r!==void 0,w=s&&m.nodeId!==void 0&&t!==null;return !c&&!y&&!w?null:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[c?jsxRuntime.jsxs("div",{className:"docx-contextmenu__custom-info","data-testid":"custom-node-info",children:[jsxRuntime.jsx("span",{className:"docx-contextmenu__custom-title",children:c.title}),c.detail?jsxRuntime.jsx("span",{className:"docx-contextmenu__custom-detail",children:c.detail}):null]}):null,y?jsxRuntime.jsx(react$1.ContextMenuItem,{label:i("contextMenu.editCustomNode",{label:R}),className:"docx-contextmenu__custom-edit",onSelect:()=>{p.onEdit?.(m),r?.(m,p);}}):null,w?jsxRuntime.jsx(react$1.ContextMenuItem,{label:i("contextMenu.removeCustomNode",{label:R}),className:"docx-contextmenu__custom-remove",onSelect:()=>{let u=chunkA7NTVTWG_cjs.q(t,m.nodeId);u.ok||l?.(m,u.reason);}}):null,jsxRuntime.jsx("div",{role:"separator",className:"docx-toolbar__menu-separator"})]})}Ct.docxRowPlacement="start";Object.defineProperty(exports,"reviewModule",{enumerable:true,get:function(){return chunkA7NTVTWG_cjs.o}});exports.CustomNodeChrome=bn;exports.CustomNodeContextMenu=Ct;exports.DocxEditorReview=un;exports.activatedCustomNodeOf=te;exports.resolveCustomNodeActivation=ne;exports.useCustomNodeDefinitions=de;exports.useReview=fe;exports.useReviewItem=Wt;exports.useReviewOf=lt;exports.useStackedReviewPositions=Kt;
1
+ 'use strict';var chunkA7NTVTWG_cjs=require('../chunk-A7NTVTWG.cjs'),react=require('react'),react$1=require('@docx-editor.dev/react'),jsxRuntime=require('react/jsx-runtime'),store=require('@docx-editor.dev/core/store');var Ht=new Set(["List","Markers","AddComment","Draft","Balloon"]),$t=new Set(["Card","Empty"]);function _e(e,o){let l=o==="root"?Ht:$t,s={},n=[],r=t=>{if(Array.isArray(t)){for(let d of t)r(d);return}if(!react.isValidElement(t)){t!=null&&t!==false&&n.push(t);return}if(t.type===react.Fragment){r(t.props.children);return}let i=t.type.docxReviewPart;i&&l.has(i)?s[i]=t:n.push(t);};return r(e),{parts:s,rest:n}}function it(e,o){if(!o)return e;let l=e.props.className;return react.cloneElement(e,{className:`${o}${l?` ${l}`:""}`})}function st(e){let o=react.useRef(new WeakMap),l=react.useRef(new Map),s=react.useRef(null),n=react.useCallback((r,t)=>{let i=l.current.get(t);if(!r){i&&(s.current?.unobserve(i),o.current.delete(i),l.current.delete(t));return}typeof ResizeObserver>"u"||(e(t,r.offsetHeight),s.current??(s.current=new ResizeObserver(d=>{for(let m of d){let c=o.current.get(m.target);c&&e(c,m.target.offsetHeight);}})),!(i===r&&o.current.get(r)===t)&&(i&&(s.current.unobserve(i),o.current.delete(i)),o.current.set(r,t),l.current.set(t,r),s.current.observe(r)));},[e]);return react.useEffect(()=>()=>{s.current?.disconnect(),l.current.clear();},[]),n}function Zt(e){let o=false;return ()=>{if(o)return;if(!globalThis.navigator?.scheduling?.isInputPending?.({includeContinuous:true})){e();return}o=true,setTimeout(()=>{o=false,e();},0);}}function ve(e){let o=react$1.useDocxEditor();return at(o,e)}function at(e,o){let l=react.useCallback(u=>{if(!e)return ()=>{};let g=false,T=Zt(()=>{g||u();}),C=e.on("change",T),x=e.on("selectionChange",T),N=e.on("error",T);return ()=>{g=true,C(),x(),N();}},[e]),s=react.useSyncExternalStore(l,()=>e?`${e.getReviewRevision()}`:"none",()=>"none"),n=react.useMemo(()=>e?e.getReviewItems(o).filter(u=>u.item.kind!=="custom"||u.item.carded):[],[e,s,o]),r=react.useMemo(()=>n.find(u=>u.isActive)?.key??null,[n]),t=react.useCallback((u,g)=>e?e.setActiveReviewItem(u,g).ok:false,[e]),i=react.useCallback(u=>!e||u.kind!=="revision"||u.readOnly?false:e.acceptReviewItem(u.key).ok,[e]),d=react.useCallback(u=>!e||u.kind!=="revision"||u.readOnly?false:e.rejectReviewItem(u.key).ok,[e]),m=react.useCallback(u=>!e||u.kind==="custom"||u.kind==="revision"&&u.readOnly?false:e.deleteReviewItem(u.key).ok,[e]),c=react.useCallback((u,g,T)=>g.trim().length===0||!e?false:e.replyToReviewItem(u.key,g,T).ok,[e]),f=react.useMemo(()=>e?e.getSelectionPlacement()?.anchorY??null:null,[e,s]),R=react.useCallback((u,g)=>u.trim().length===0||!e?false:e.addComment(u,g).ok,[e]),y=react.useMemo(()=>e?e.isReviewPaneOpen():true,[e,s]),p=react.useCallback(u=>{!e||e.isReviewPaneOpen()===u||e.exec({type:"toggleReviewPane"});},[e]);return react.useMemo(()=>({items:n,activeKey:r,setActive:t,accept:i,reject:d,remove:m,reply:c,selectionAnchorY:f,comment:R,paneOpen:y,setPaneOpen:p,ready:e!==null&&!e.snapshot().isLoading&&e.snapshot().parseError===null}),[n,r,t,i,d,m,c,f,R,y,p,e])}function Bt(e,o,l={}){let s=l.gap??8,n=l.scale??1,r=l.defaultHeight??0;return react.useMemo(()=>{let t=new Map,i=Number.NEGATIVE_INFINITY;for(let d of e){let m=d.anchorY===null?Number.isFinite(i)?i:0:Math.max(d.anchorY,i);t.set(d.key,m),i=m+((o.get(d.key)??r)+s)/n;}return t},[e,o,s,n,r])}var J=e=>jsxRuntime.jsx("svg",{viewBox:"0 -960 960 960",width:16,height:16,"aria-hidden":"true",focusable:"false",children:jsxRuntime.jsx("path",{d:e,fill:"currentColor"})}),dt="M440-400h80v-120h120v-80H520v-120h-80v120H320v80h120v120ZM80-80v-720q0-33 23.5-56.5T160-880h640q33 0 56.5 23.5T880-800v480q0 33-23.5 56.5T800-240H240L80-80Zm126-240h594v-480H160v525l46-45Zm-46 0v-480 480Z",lt="M240-400h480v-80H240v80Zm0-120h480v-80H240v80Zm0-120h480v-80H240v80ZM880-80 720-240H160q-33 0-56.5-23.5T80-320v-480q0-33 23.5-56.5T160-880h640q33 0 56.5 23.5T880-800v720ZM160-320h594l46 45v-525H160v480Zm0 0v-480 480Z",ut="M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z",mt="m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z",vt="M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520ZM360-280h80v-360h-80v360Zm160 0h80v-360h-80v360ZM280-720v520-520Z",Ft="M200-200h57l391-391-57-57-391 391v57Zm-80 80v-170l528-527q12-11 26.5-17t30.5-6q16 0 31 6t26 18l55 56q12 11 17.5 26t5.5 30q0 16-5.5 30.5T817-647L290-120H120Zm640-584-56-56 56 56Zm-141 85-28-29 57 57-29-28Z",jt="M486-160q-76 0-135-45t-85-123l88-38q14 48 48.5 78t85.5 30q42 0 76-20t34-64q0-18-7-33t-19-27h112q5 14 7.5 28.5T694-341q0 86-61.5 133.5T486-160ZM80-520v-80h800v80H80Zm402-360q66 0 116 30t74 84l-88 38q-11-28-38.5-47T480-794q-42 0-72 19t-30 51q0 15 6 27t18 22H272q-6-13-9-27t-3-30q0-70 55-114t167-44Z",Ut="M360-160q-83 0-141.5-58.5T160-360v-360q0-83 58.5-141.5T360-920q83 0 141.5 58.5T560-720v360q0 83-58.5 141.5T360-160Zm0-80q50 0 85-35t35-85v-360q0-50-35-85t-85-35q-50 0-85 35t-35 85v360q0 50 35 85t85 35Zm300 80q29 0 49.5-20.5T730-230q0-22-12.5-40T684-296l-64-32v-232l100 100q23 23 51.5 35.5T832-412v-80q-17 0-32-6.5T773-517L633-657q-12-12-27.5-17.5T573-680h-13v520h100ZM360-720Z",zt="M580-360q-25 0-42.5-17.5T520-420v-160q0-25 17.5-42.5T580-640h160q25 0 42.5 17.5T800-580v260q0 66-47 113t-113 47v-80q33 0 56.5-23.5T720-320v-40H580Zm-360 0q-25 0-42.5-17.5T160-420v-160q0-25 17.5-42.5T220-640h160q25 0 42.5 17.5T440-580v260q0 66-47 113t-113 47v-80q33 0 56.5-23.5T360-320v-40H220Z";function ft(e){if(e.kind==="comment")return lt;if(e.kind==="custom")return e.item.icon??zt;switch(e.revisionKind){case "insert":case "moveTo":return Ft;case "delete":case "moveFrom":return jt;case "format":return Ut;default:return lt}}var Jt=e=>e.isLoading||e.parseError!==null||e.pageSetup==null,Pe=react.createContext(null),P=react.createContext(null);function en(){return react.useContext(P)}var tn={scale:96/72,top:0,left:null},nn=16,pe="\0compose",wt=600,yt=8,on=72,rn=64,sn=480,an=Object.freeze({placement:false});function Ae(e,o){return e.kind!=="comment"?false:e.parentId!==void 0?o.has(e.parentId):e.parentRevisionId!==void 0?o.has(e.parentRevisionId):false}function ke(e){return new Set(e.map(o=>o.id))}function j(e){let o=e.target?.tagName;o==="INPUT"||o==="SELECT"||o==="TEXTAREA"||e.preventDefault();}function H(){let e=react.useContext(Pe);return e||ln}function K(){let{t:e}=react.useContext(Pe)??{},{t:o}=react$1.useTranslation();return react.useCallback(l=>e?.(l)??o(l),[e,o])}var ln={t:void 0,cardClassName:void 0,review:{items:[],activeKey:null,setActive:()=>false,accept:()=>false,reject:()=>false,remove:()=>false,reply:()=>false,selectionAnchorY:null,comment:()=>false,paneOpen:true,setPaneOpen:()=>{},ready:false},allItems:[],authorSlots:new Map,byId:new Map,measure:()=>{},beginDraft:()=>{},endDraft:()=>{}};function cn({className:e,furniture:o,asChild:l,hidden:s,children:n,t:r,card:t,preset:i=true,stack:d=true,gap:m=8,filter:c,structural:f=false,formatting:R=false}){let y=react$1.useDocxEditor(),p=react$1.useEditorState(Jt),u=react.useMemo(()=>{let w=[];return f||w.push("structural"),R||w.push("format"),w.length>0?w:void 0},[f,R]),g=react.useMemo(()=>u?{excludeRevisionKinds:u}:void 0,[u]);react.useEffect(()=>(y?.setReviewActivationExclusions(u??null),()=>y?.setReviewActivationExclusions(null)),[y,u]);let T=ve(an),C=ve(g),x=C.setPaneOpen,{t:N}=react$1.useTranslation(),I=react.useCallback(w=>r?.(w)??N(w),[r,N]),D=react.useRef(null),ue=react.useContext(react$1.ReviewRailContext);react.useEffect(()=>ue?.register(),[ue]);let Y=C.paneOpen,k=react.useMemo(()=>c?C.items.filter(w=>c(w)):C.items,[C.items,c]),Ye=react.useMemo(()=>{let w=new Map;for(let v of k)v.author&&!w.has(v.author)&&w.set(v.author,w.size);return w},[k]),Ze=react.useMemo(()=>{let w=new Map;for(let v of k)w.set(v.id,v);return w},[k]),[Be,_t]=react.useState(()=>new Map),Et=react.useCallback((w,v)=>{v<=0||_t(b=>{if(b.get(w)===v)return b;let E=new Map(b);return E.set(w,v),E});},[]),Fe=st(Et),[S,Tt]=react.useState(tn);react.useEffect(()=>{let w=D.current;if(!y||!w)return;let v=w.offsetParent,b=v?.querySelector(".docx-paginated-surface")??null,E=()=>{Tt(M=>{let $=b&&v?b.getBoundingClientRect():null,L=$&&v?v.getBoundingClientRect():null,q={scale:y.getRenderScale(),top:$&&L&&v?$.top-L.top-v.clientTop+v.scrollTop:0,left:$&&L&&v?$.right-L.left-v.clientLeft+v.scrollLeft+nn:null};return M.scale===q.scale&&M.top===q.top&&M.left===q.left?M:q});};E();let _=new ResizeObserver(E);return v&&_.observe(v),b&&_.observe(b),()=>_.disconnect()},[y,k,p,s]),react.useEffect(()=>{let w=D.current;if(!y||!w)return;let v=b=>{let E=b.target;if(!(E instanceof Node)||w.contains(E))return;let _=w.offsetParent;!_||!_.contains(E)||_.querySelector(".docx-paginated-surface")?.contains(E)||y.setActiveReviewItem(null);};return document.addEventListener("mousedown",v,true),()=>document.removeEventListener("mousedown",v,true)},[y,p,s]);let[ge,It]=react.useState(null);react.useEffect(()=>{let w=D.current,v=w?.offsetParent;if(!v)return;let b=0,E=()=>{b=0,It(L=>{let q=v.scrollTop-wt,me=v.scrollTop+v.clientHeight+wt;return L&&L.top===q&&L.bottom===me?L:{top:q,bottom:me}});},_=0,M=()=>{b===0&&(b=requestAnimationFrame(E)),w?.setAttribute("data-scrolling",""),window.clearTimeout(_),_=window.setTimeout(()=>w?.removeAttribute("data-scrolling"),150);};E(),v.addEventListener("scroll",M,{passive:true});let $=new ResizeObserver(M);return $.observe(v),()=>{b!==0&&cancelAnimationFrame(b),window.clearTimeout(_),v.removeEventListener("scroll",M),$.disconnect();}},[y,p,s]);let[Z,he]=react.useState(null),je=react.useCallback(()=>{y&&(y.surface?.retainSelection(),x(true),he(y.getSelectionPlacement()?.anchorY??null));},[y,x]),Ue=react.useCallback(()=>{y?.surface?.releaseSelection(),he(null),y?.focus();},[y]);react.useEffect(()=>{Y||Z===null||(y?.surface?.releaseSelection(),he(null));},[Y,Z,y]);let ze=Z??C.selectionAnchorY,U=react.useMemo(()=>{let w=ke(k);return k.filter(v=>!Ae(v,w))},[k]),Qe=react.useMemo(()=>{if(Z===null)return U;let w=U.findIndex(b=>b.anchorY!==null&&b.anchorY>Z),v={key:pe,anchorY:Z};return w===-1?[...U,v]:[...U.slice(0,w),v,...U.slice(w)]},[U,Z]),Ge=react.useMemo(()=>{let w=new Map(Be);for(let v of U){if(w.has(v.key))continue;let b=v.text.length+(v.kind==="revision"?v.replacedText?.length??0:0),E=Math.min(6,Math.max(1,Math.ceil(b/36)));w.set(v.key,64+E*20);}return w},[Be,U]),{stacked:xe,collapsedKeys:We}=react.useMemo(()=>{let w=S.scale,v=new Map,b=new Set,E=Number.NEGATIVE_INFINITY;for(let _ of Qe){let M=_.anchorY===null?Number.isFinite(E)?E:0:Math.max(_.anchorY,E);v.set(_.key,M);let $=_.anchorY===null?0:(M-_.anchorY)*w,L="isActive"in _&&_.isActive,q=$>sn&&!L&&_.key!==pe;q&&b.add(_.key);let me=q?rn:Ge.get(_.key)??on;E=M+(me+m)/w;}return {stacked:v,collapsedKeys:b}},[Qe,Ge,m,S.scale]),Ne=ze===null?null:S.top+(xe.get(pe)??ze)*S.scale,Xe=t?.className,Pt=react.useMemo(()=>({t:r,cardClassName:Xe,review:{...C,items:k},allItems:T.items,authorSlots:Ye,byId:Ze,measure:Fe,beginDraft:je,endDraft:Ue}),[r,Xe,C,T.items,k,Ye,Ze,Fe,je,Ue]);if(s||p)return null;let Je={ref:D,className:`docx-review${e?` ${e}`:""}`,"data-testid":"review-rail","data-count":k.length,"data-open":Y?"":void 0,role:"complementary","aria-label":I("review.ariaLabel"),onMouseDown:j,style:S.left===null?void 0:{left:S.left,right:"auto"}},W=typeof n=="function"?{parts:{},rest:n}:_e(n,"root"),Q=W.parts,ne=(w,v)=>{if(!(w in Q))return v;let b=Q[w];return !react.isValidElement(b)||!react.isValidElement(v)?b:react.cloneElement(b,{...v.props,...b.props})},et=jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[i||"AddComment"in Q?ne("AddComment",jsxRuntime.jsx(De,{top:Ne,drafting:Z!==null})):null,!Y||Z===null||Ne===null||!i&&!("Draft"in Q)?null:ne("Draft",jsxRuntime.jsx(Se,{top:Ne})),i||"Balloon"in Q?ne("Balloon",jsxRuntime.jsx(Oe,{})):null]}),At=jsxRuntime.jsx(we,{stack:d,positions:xe,collapsed:We,scale:S.scale,offset:S.top,window:ge,children:W.rest}),kt=jsxRuntime.jsx(Me,{scale:S.scale,offset:S.top,window:ge}),Mt=Y?i||"List"in Q?ne("List",At):typeof W.rest=="function"?null:W.rest:i||"Markers"in Q?ne("Markers",kt):typeof W.rest=="function"?null:W.rest;return jsxRuntime.jsx(Pe.Provider,{value:Pt,children:l&&react.isValidElement(n)?jsxRuntime.jsx(react$1.Slot,{...Je,children:react.cloneElement(n,void 0,n.props.children,i?jsxRuntime.jsx(we,{stack:d,positions:xe,collapsed:We,scale:S.scale,offset:S.top,window:ge}):null,et)}):jsxRuntime.jsxs("aside",{...Je,children:[Y&&o!==void 0?jsxRuntime.jsx("div",{className:"docx-review__furniture","data-testid":"review-furniture",children:o}):null,Mt,et]})})}function we({stack:e=true,positions:o,collapsed:l,scale:s=1,offset:n=0,window:r=null,children:t,className:i,hidden:d}){let{review:m,measure:c,cardClassName:f}=H();if(d)return null;let R=typeof t=="function"?null:_e(t,"list"),y=ke(m.items),p=m.items.filter(u=>!Ae(u,y));return p.length===0?typeof t=="function"?null:R?.parts.Empty??jsxRuntime.jsx(Le,{}):jsxRuntime.jsx("div",{className:`docx-review__list${i?` ${i}`:""}`,children:p.map(u=>{let g=e?o?.get(u.key)??u.anchorY:u.anchorY,T=g==null?null:n+g*s;if(T!==null&&r&&(T<r.top||T>r.bottom))return null;let C=T===null?{}:{position:"absolute",top:T};return jsxRuntime.jsx(P.Provider,{value:u,children:jsxRuntime.jsx("div",{className:"docx-review__slot",style:C,...l?.has(u.key)?{"data-collapsed":""}:{},ref:x=>{c(x,u.key);},children:typeof t=="function"?t(u):R?.parts.Card&&react.isValidElement(R.parts.Card)?it(R.parts.Card,f):jsxRuntime.jsx(He,{...f?{className:f}:{},children:R?.rest})})},u.key)})})}we.docxReviewPart="List";function Me({scale:e=1,offset:o=0,window:l=null,className:s,hidden:n,icon:r}){let{review:t}=H(),i=K();if(n)return null;let d=ke(t.items),m=t.items.filter(c=>!Ae(c,d));return jsxRuntime.jsx("div",{className:`docx-review__markers${s?` ${s}`:""}`,children:m.map(c=>{if(c.anchorY===null)return null;let f=o+c.anchorY*e;return l&&(f<l.top||f>l.bottom)?null:jsxRuntime.jsx("button",{type:"button",className:"docx-review__marker","data-testid":"review-marker","data-kind":c.kind==="revision"?c.revisionKind:c.kind,style:{position:"absolute",top:f},title:c.author?`${c.author}: ${c.text}`:c.text,"aria-label":`${i("review.showPane")}: ${c.author?`${c.author}. `:""}${c.text}`,onMouseDown:j,onClick:()=>{t.setPaneOpen(true),t.setActive(c.key);},children:(typeof r=="function"?r(c):r)??J(ft(c))},c.key)})})}Me.docxReviewPart="Markers";function De({top:e=null,drafting:o=false,className:l,hidden:s,children:n}){let{beginDraft:r}=H(),t=K();if(s||o||e===null)return null;let i={type:"button",className:`docx-review__add${l?` ${l}`:""}`,"data-testid":"review-add-comment",style:{position:"absolute",top:e},"aria-label":t("common.comment"),title:t("common.comment"),onMouseDown:j,onClick:r};return n?jsxRuntime.jsx(react$1.Slot,{...i,children:n}):jsxRuntime.jsx("button",{...i,children:J(dt)})}De.docxReviewPart="AddComment";function Se({top:e=0,className:o,hidden:l}){let{review:s,endDraft:n,measure:r}=H(),t=K(),[i,d]=react.useState(""),[m,c]=react.useState(false),f=react.useRef(null),R=react.useId();react.useEffect(()=>{f.current?.focus({preventScroll:true});},[]);let y=react.useCallback(()=>{if(i.trim().length===0)return;let p=s.comment(i.trim());c(!p),p&&(d(""),n());},[i,s,n]);return l?null:jsxRuntime.jsx("div",{className:`docx-review__slot${o?` ${o}`:""}`,style:{position:"absolute",top:e},ref:p=>{r(p,pe);},children:jsxRuntime.jsx("div",{className:"docx-review__card","data-testid":"review-draft","data-draft":"",children:jsxRuntime.jsxs("form",{className:"docx-review__reply-box",onSubmit:p=>{p.preventDefault(),y();},children:[jsxRuntime.jsx("label",{className:"docx-editor-sr-only",htmlFor:R,children:t("comments.addComment")}),jsxRuntime.jsx("input",{id:R,ref:f,"data-testid":"review-draft-input",className:"docx-review__input",value:i,placeholder:t("comments.addComment"),...m?{"aria-invalid":true}:{},onChange:p=>{c(false),d(p.target.value);},onKeyDown:p=>{if(p.key==="Escape"){p.preventDefault(),n();return}p.key==="Enter"&&(p.preventDefault(),y());}}),jsxRuntime.jsxs("div",{className:"docx-review__reply-actions",children:[jsxRuntime.jsx("button",{type:"button","data-testid":"review-draft-cancel",className:"docx-review__text-button",onMouseDown:j,onClick:n,children:t("common.cancel")}),jsxRuntime.jsx("button",{type:"submit","data-testid":"review-draft-submit",className:"docx-review__submit",disabled:i.trim().length===0,children:t("common.comment")})]}),m?jsxRuntime.jsx("span",{className:"docx-review__refused",role:"alert",children:t("review.commentRefused")}):null]})})})}Se.docxReviewPart="Draft";function Oe({className:e,hidden:o}){let{review:l,allItems:s,authorSlots:n}=H(),r=K(),t=react.useRef(null),[i,d]=react.useState(null),m=react.useRef(false);m.current=i!==null,react.useEffect(()=>{let p=t.current,u=p?.closest(".docx-review"),g=u?.closest(".docx-editor__scroll-container")??u?.offsetParent;if(!p||!u||!g)return;let T=(x,N)=>{let I=u.getBoundingClientRect(),D=x.getBoundingClientRect(),ue=x.ownerDocument.defaultView?.innerHeight??1/0,Y=Number(x.dataset.start),k=Number(x.dataset.end);d({revisionId:x.dataset.revisionId,author:x.dataset.revisionAuthor??"",...x.dataset.revisionDate!==void 0?{date:x.dataset.revisionDate}:{},...x.dataset.revisionKind!==void 0?{kind:x.dataset.revisionKind}:{},structuralSite:N,...x.dataset.paragraphId!==void 0?{paragraphId:x.dataset.paragraphId}:{},...Number.isFinite(Y)?{start:Y}:{},...Number.isFinite(k)?{end:k}:{},left:D.left-I.left,top:D.top-I.top,bottom:D.bottom-I.top,above:D.bottom+220>ue});},C=x=>{let N=x.target;if(!(N instanceof Element)||p.contains(N))return;let I=N.closest("[data-revision-id]");if(I instanceof HTMLElement&&g.contains(I)){let D=I.classList.contains("docx-table-row--revision");if(I.dataset.revisionKind==="format"||D){T(I,D);return}}m.current&&d(null);};return g.addEventListener("pointerdown",C,true),g.addEventListener("mousedown",C,true),()=>{g.removeEventListener("pointerdown",C,true),g.removeEventListener("mousedown",C,true);}},[]);let c=react.useMemo(()=>{if(!i)return null;let p=null,u=false,g=null,T=false,C=null,x=false;for(let N of s)if(!(N.kind!=="revision"||N.item.kind!=="revision")){for(let I of N.item.addresses)if(I.id===i.revisionId){if(I.author===i.author){if(I.date===i.date)return N;p===null?p=N:p!==N&&(u=true);}g===null?g=N:g!==N&&(T=true);}if(i.paragraphId!==void 0&&i.start!==void 0&&i.end!==void 0&&(N.revisionKind==="format"||N.revisionKind==="structural")){for(let I of N.item.ranges)if(I.start.paragraphId===i.paragraphId&&I.start.offset<i.end&&I.end.offset>i.start){C===null?C=N:C!==N&&(x=true);break}}}return p!==null&&!u?p:g!==null&&!T?g:C!==null&&!x?C:null},[s,i]),f=c&&(c.revisionKind==="format"||c.revisionKind==="structural")?c:null,R=react.useRef(false);if(react.useEffect(()=>{if(f){R.current=true;return}R.current&&(R.current=false,d(null));},[f]),o)return null;let y=i?.kind==="format"?"format":"structural";return jsxRuntime.jsx("div",{ref:t,className:`docx-review__balloon-root${e?` ${e}`:""}`,children:i===null?null:jsxRuntime.jsx("div",{className:"docx-review__balloon","data-testid":"review-balloon",style:{left:i.left,top:i.above?i.top-6:i.bottom+6,transform:i.above?"translateY(-100%)":void 0},onMouseDown:j,children:f?jsxRuntime.jsx(P.Provider,{value:f,children:jsxRuntime.jsxs("div",{className:"docx-review__card","data-testid":"review-balloon-card","data-kind":f.revisionKind??"revision",style:{"--doc-review-author":`var(--doc-review-author-${(n.get(f.author)??0)%yt})`},onClick:()=>l.setActive(f.key),children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[jsxRuntime.jsx(ie,{}),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[jsxRuntime.jsx(se,{}),jsxRuntime.jsx(ae,{})]}),f.kind==="revision"&&!f.readOnly?jsxRuntime.jsxs("div",{className:"docx-review__actions",children:[jsxRuntime.jsx(Re,{}),jsxRuntime.jsx(ye,{})]}):null]}),jsxRuntime.jsx(le,{})]})}):jsxRuntime.jsxs("div",{className:"docx-review__card","data-testid":"review-balloon-card","data-kind":y,children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[jsxRuntime.jsx("span",{className:"docx-review__avatar","aria-hidden":"true",children:dn(i.author)}),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[jsxRuntime.jsx("span",{className:"docx-review__author",children:i.author||r("comments.unknown")}),i.date?jsxRuntime.jsx(un,{raw:i.date}):null]})]}),jsxRuntime.jsx("div",{className:"docx-review__summary",children:jsxRuntime.jsx("span",{className:"docx-review__label","data-kind":y,children:r(gt(y))})})]})})})}Oe.docxReviewPart="Balloon";function dn(e){let o=e.trim().split(/\s+/).filter(Boolean);return o.length===0?"?":o.slice(0,2).map(l=>l[0].toUpperCase()).join("")}function un({raw:e}){let o=new Date(e);return Number.isNaN(o.getTime())?null:jsxRuntime.jsx("time",{className:"docx-review__time",dateTime:e,children:bt.format(o)})}function Le({className:e,hidden:o,children:l}){let s=K();return o?null:jsxRuntime.jsx("div",{className:`docx-review__empty${e?` ${e}`:""}`,"data-testid":"review-empty",children:l??s("review.empty")})}Le.docxReviewPart="Empty";function He({className:e,asChild:o,hidden:l,children:s}){let{review:n,authorSlots:r}=H(),t=react.useContext(P),i=react.useId();if(l||!t)return null;let d=r.get(t.author)??0,m={className:`docx-review__card${e?` ${e}`:""}`,"data-testid":"review-card","aria-labelledby":`${i}-author ${i}-summary`,"data-kind":t.kind==="revision"?t.revisionKind??"revision":t.kind,...t.kind==="custom"&&t.item.kind==="custom"?{"data-node-name":t.item.name}:{},...t.isActive?{"data-active":""}:{},...t.kind==="comment"&&t.resolved?{"data-resolved":""}:{},style:{"--doc-review-author":`var(--doc-review-author-${d%yt})`},tabIndex:0,role:"button",id:i,onMouseDown:c=>{c.target?.closest("[data-review-selectable]")||c.currentTarget.focus({preventScroll:true});},onClick:()=>n.setActive(t.key),onKeyDown:c=>{c.target===c.currentTarget&&(c.key!=="Enter"&&c.key!==" "||(c.preventDefault(),n.setActive(t.key)));}};return o?jsxRuntime.jsx(react$1.Slot,{...m,children:s}):jsxRuntime.jsx("div",{...m,children:jsxRuntime.jsx(mn,{children:s})})}He.docxReviewPart="Card";function mn({children:e}){let o=react.useContext(P),l=react.useMemo(()=>vn(e),[e]),s=(r,t)=>r in l?l[r]:t;if(!o)return null;if(o.kind==="custom"&&o.item.kind==="custom"){let r=o.item;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[s("Avatar",null),jsxRuntime.jsx("div",{className:"docx-review__meta",children:s("Author",jsxRuntime.jsx("span",{className:"docx-review__author","data-testid":"review-custom-title",children:r.title}))})]}),s("Summary",r.detail?jsxRuntime.jsx("div",{className:"docx-review__summary","data-testid":"review-summary","data-review-selectable":"",children:jsxRuntime.jsx("span",{className:"docx-review__text",children:r.detail})}):null),l.__extra]})}let n=o.kind==="revision"&&!o.readOnly;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[s("Avatar",jsxRuntime.jsx(ie,{})),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[s("Author",jsxRuntime.jsx(se,{})),s("Time",jsxRuntime.jsx(ae,{}))]}),n||o.kind==="comment"?jsxRuntime.jsxs("div",{className:"docx-review__actions",children:[s("Accept",jsxRuntime.jsx(Re,{})),s("Reject",jsxRuntime.jsx(ye,{})),s("Delete",jsxRuntime.jsx(be,{}))]}):null]}),s("Summary",jsxRuntime.jsx(le,{})),s("Replies",jsxRuntime.jsx($e,{})),s("Reply",jsxRuntime.jsx(qe,{})),l.__extra]})}function vn(e){let o={},l=[],s=n=>{if(Array.isArray(n)){n.forEach(s);return}if(!n||typeof n!="object"||!("type"in n)){n&&l.push(n);return}if(n.type===react.Fragment){s(n.props.children);return}let r=n.type.docxReviewPart;r?o[r]=n:l.push(n);};return s(e),l.length>0&&(o.__extra=l),o}function ie({className:e,asChild:o,hidden:l,children:s}){let n=react.useContext(P);if(l||!n||s===void 0&&!n.initials)return null;let r={className:`docx-review__avatar${e?` ${e}`:""}`,"data-testid":"review-avatar","aria-hidden":true};return o?jsxRuntime.jsx(react$1.Slot,{...r,children:s}):jsxRuntime.jsx("span",{...r,children:s??n.initials})}ie.docxReviewPart="Avatar";function se({className:e,asChild:o,hidden:l,children:s}){let n=react.useContext(P),r=K();if(l||!n)return null;let t=n.author||r("comments.unknown"),i={className:`docx-review__author${e?` ${e}`:""}`,"data-testid":"review-author"};return o?jsxRuntime.jsx(react$1.Slot,{...i,children:s}):jsxRuntime.jsx("span",{...i,children:s??t})}se.docxReviewPart="Author";function ae({className:e,asChild:o,hidden:l,children:s}){let n=react.useContext(P);if(l||!n)return null;let r=n.date;if(!r)return null;let t=new Date(r);if(Number.isNaN(t.getTime()))return null;let i={className:`docx-review__time${e?` ${e}`:""}`,"data-testid":"review-time",dateTime:r};return o?jsxRuntime.jsx(react$1.Slot,{...i,children:s}):jsxRuntime.jsx("time",{...i,children:s??bt.format(t)})}ae.docxReviewPart="Time";var bt=new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});function le({className:e,asChild:o,hidden:l,children:s}){let n=react.useContext(P),r=K();if(l||!n)return null;let t=n.text,i=n.kind!=="revision"?null:r(gt(n.revisionKind)),d=n.kind==="revision"&&n.revisionKind==="replace",m={className:`docx-review__summary${e?` ${e}`:""}`,"data-testid":"review-summary","data-review-selectable":""};return o?jsxRuntime.jsx(react$1.Slot,{...m,children:s}):jsxRuntime.jsx("div",{...m,children:s??(d?jsxRuntime.jsxs("span",{className:"docx-review__text",children:[r("review.replaced")," ",jsxRuntime.jsxs("span",{className:"docx-review__removed",children:['"',n.replacedText,'"']})," ",r("review.replacedWith")," ",jsxRuntime.jsxs("span",{className:"docx-review__added",children:['"',t,'"']})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[i?jsxRuntime.jsx("span",{className:"docx-review__label","data-kind":n.kind==="revision"?n.revisionKind:"revision",children:i}):null,t?jsxRuntime.jsx("span",{className:"docx-review__text",children:t}):null]}))})}le.docxReviewPart="Summary";function gt(e){switch(e){case "insert":return "review.inserted";case "delete":return "review.deleted";case "replace":return "review.replaced";case "moveFrom":return "review.movedFrom";case "moveTo":return "review.movedTo";case "format":return "revisions.runPropertiesChanged";case "paragraphMark":return "revisions.paragraphMarkInserted";default:return "review.structural"}}function Re({className:e,asChild:o,hidden:l,children:s,icon:n}){let{review:r}=H(),t=react.useContext(P),i=K();if(l||!t||t.kind!=="revision"||t.readOnly)return null;let d=i("review.accept"),m={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-accept","aria-label":d,title:d,onMouseDown:j,onClick:c=>{c.stopPropagation(),r.accept(t);}};return o?jsxRuntime.jsx(react$1.Slot,{...m,children:s}):jsxRuntime.jsx("button",{...m,children:n??s??J(ut)})}Re.docxReviewPart="Accept";function ye({className:e,asChild:o,hidden:l,children:s,icon:n}){let{review:r}=H(),t=react.useContext(P),i=K();if(l||!t||t.kind!=="revision"||t.readOnly)return null;let d=i("review.reject"),m={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-reject","aria-label":d,title:d,onMouseDown:j,onClick:c=>{c.stopPropagation(),r.reject(t);}};return o?jsxRuntime.jsx(react$1.Slot,{...m,children:s}):jsxRuntime.jsx("button",{...m,children:n??s??J(mt)})}ye.docxReviewPart="Reject";function be({className:e,asChild:o,hidden:l,children:s,icon:n}){let{review:r}=H(),t=react.useContext(P),{t:i}=react$1.useTranslation();if(l||!t||t.kind==="custom"||t.kind==="revision"&&t.readOnly)return null;let d=t.kind==="comment"?i("review.deleteComment"):i("review.discardChange"),m={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-delete","aria-label":d,title:d,onMouseDown:j,onClick:c=>{c.stopPropagation(),r.remove(t);}};return o?jsxRuntime.jsx(react$1.Slot,{...m,children:s}):jsxRuntime.jsx("button",{...m,children:n??s??J(vt)})}be.docxReviewPart="Delete";function $e({className:e,hidden:o}){let{byId:l}=H(),s=react.useContext(P);if(o||!s||s.kind==="custom")return null;let n=s.replyIds.map(r=>l.get(r)).filter(r=>r!==void 0);return n.length===0?null:jsxRuntime.jsx("ol",{className:`docx-review__replies${e?` ${e}`:""}`,children:n.map(r=>jsxRuntime.jsx(P.Provider,{value:r,children:jsxRuntime.jsxs("li",{className:"docx-review__reply","data-testid":"review-reply",children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[jsxRuntime.jsx(ie,{}),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[jsxRuntime.jsx(se,{}),jsxRuntime.jsx(ae,{})]}),jsxRuntime.jsx("div",{className:"docx-review__actions",children:jsxRuntime.jsx(be,{})})]}),jsxRuntime.jsx(le,{})]})},r.key))})}$e.docxReviewPart="Replies";function qe({className:e,hidden:o,children:l}){let{review:s}=H(),n=react.useContext(P),r=K(),[t,i]=react.useState(""),[d,m]=react.useState(false),c=react.useId(),f=react.useCallback(()=>{if(!n||t.trim().length===0)return;let R=s.reply(n,t.trim());m(!R),R&&i("");},[n,t,s]);return o||!n||!n.isActive?null:l?jsxRuntime.jsx(jsxRuntime.Fragment,{children:l}):jsxRuntime.jsxs("form",{className:`docx-review__reply-box${e?` ${e}`:""}`,onSubmit:R=>{R.preventDefault(),f();},children:[jsxRuntime.jsx("label",{className:"docx-editor-sr-only",htmlFor:c,children:r("comments.replyPlaceholder")}),jsxRuntime.jsx("input",{id:c,"data-testid":"review-reply-input",className:"docx-review__input",value:t,placeholder:r("comments.replyPlaceholder"),...d?{"aria-invalid":true,"data-refused":""}:{},onChange:R=>{m(false),i(R.target.value);},onClick:R=>R.stopPropagation(),onKeyDown:R=>{R.key==="Enter"&&(R.preventDefault(),f());}}),jsxRuntime.jsxs("div",{className:"docx-review__reply-actions",children:[jsxRuntime.jsx("button",{type:"button","data-testid":"review-reply-cancel",className:"docx-review__text-button",onMouseDown:j,onClick:R=>{R.stopPropagation(),i(""),m(false),s.setActive(null);},children:r("common.cancel")}),jsxRuntime.jsx("button",{type:"submit","data-testid":"review-reply-submit",className:"docx-review__submit",disabled:t.trim().length===0,children:r("review.reply")})]}),d?jsxRuntime.jsx("span",{className:"docx-review__refused",role:"alert","data-testid":"review-reply-refused",children:r("review.replyRefused")}):null]})}qe.docxReviewPart="Reply";var fn=Object.assign(cn,{List:we,Empty:Le,Card:He,Avatar:ie,Author:se,Time:ae,Summary:le,Accept:Re,Reject:ye,Delete:be,Replies:$e,Reply:qe,Markers:Me,AddComment:De,Draft:Se,Balloon:Oe});function ce(e){let o=react$1.useDocxEditor();return react.useMemo(()=>e||(o?.getCustomNodeDefinitions()??[]).filter(chunkA7NTVTWG_cjs.j),[e,o])}var yn=".docx-content-control-boundary";function ee(e,o){let{node:l,definition:s,controlId:n}=e,r=n?o?.getReviewItems().find(d=>d.kind==="custom"&&d.item.id===n):void 0;if(r&&r.kind==="custom"){let d=r.item;return {...l,attrs:d.attrs,text:d.text,...d.data===void 0?{}:{data:d.data},...n?{nodeId:n}:{}}}let t=n?bn(o,n,s):void 0,i=s.fromDocx?s.fromDocx({attrs:l.attrs,text:"",...t===void 0?{}:{data:t}}):l.attrs;return i===null?null:{...l,attrs:i,...t===void 0?{}:{data:t},...n?{nodeId:n}:{}}}function bn(e,o,l){let s=e?.surface;if(!s)return;let n=s.session.part(),r=store.customNodePayloadsByControl(s.session.currentPackage(),n.name).get(o);if(!r)return;let t=chunkA7NTVTWG_cjs.e(l.schema,r.data);return t.ok?t.value:void 0}function te(e,o){let l=e?.closest?.(yn),s=l?.closest(".docx-content-control-chrome"),n=s?.getAttribute("data-tag"),r=n?chunkA7NTVTWG_cjs.c(n):null;if(!l||!r||!n)return null;let t=o.find(i=>i.tagPrefix===r.prefix&&i.name===r.name);return t?{node:{name:r.name,attrs:r.attrs,tag:n,rect:l.getBoundingClientRect()},definition:t,controlId:s?.getAttribute("data-docx-content-control")??null}:null}var Ve=".docx-content-control-boundary",hn=e=>{if(!chunkA7NTVTWG_cjs.k.test(e.tagPrefix)||!chunkA7NTVTWG_cjs.k.test(e.name))return [];let o=`${e.tagPrefix}:${e.name}`;return [`.docx-content-control-chrome[data-tag="${o}"]`,`.docx-content-control-chrome[data-tag^="${o}?"]`]};function xn(e){let{onNodeClick:o,onNodeHover:l}=e,s=react$1.useDocxEditor(),n=ce(e.nodes);return react.useEffect(()=>{let r=document.createElement("style"),t=[];for(let i of n){let d=hn(i);if(d.length===0)continue;let m=i.chrome?.color!==void 0&&CSS.supports("color",i.chrome.color)?i.chrome.color:"#2563eb";t.push(`${d.map(c=>`${c} ${Ve}`).join(", ")} {`," pointer-events: auto !important;"," opacity: 1;"," border: none;",` background: color-mix(in srgb, ${m} 12%, transparent);`," border-radius: 6px;"," cursor: default;","}");}return r.textContent=t.join(`
2
+ `),document.head.append(r),()=>r.remove()},[n]),react.useEffect(()=>{let r=null,t=null,i=f=>te(document.elementFromPoint(f.clientX,f.clientY),n),d=f=>{let R=f.button===0?i(f):null;r=R?.controlId??null,t=R?.node.tag??null;},m=f=>{let R=r,y=t;if(r=null,t=null,y===null)return;let p=i(f);if(!p||p.node.tag!==y||R!==null&&p.controlId!==R)return;let u=ee(p,s);u&&(p.definition.onClick?.(u),o?.(u));},c=f=>{let R=te(f.target,n);if(!R||f.relatedTarget?.closest?.(Ve)===f.target.closest(Ve))return;let p=ee(R,s);p&&(R.definition.onHover?.(p),l?.(p));};return document.addEventListener("pointerdown",d,true),document.addEventListener("pointerup",m,true),document.addEventListener("mouseover",c),()=>{document.removeEventListener("pointerdown",d,true),document.removeEventListener("pointerup",m,true),document.removeEventListener("mouseover",c);}},[n,s,o,l]),null}function Ct(e){let{onEditNode:o,onRemoveRefused:l,remove:s=true}=e,n=ce(e.nodes),r=react$1.useContextMenuTarget(),t=react$1.useDocxEditor(),{t:i}=react$1.useTranslation(),d=react.useMemo(()=>r?te(r,n):null,[r,n]),m=react.useMemo(()=>d?ee(d,t):null,[d,t]),c=react.useMemo(()=>!d?.definition.reviewCard||!m?null:d.definition.reviewCard({attrs:m.attrs,text:m.text??"",...m.data===void 0?{}:{data:m.data}}),[d,m]);if(!d||!m)return null;let{definition:f}=d,R=f.label??f.name,y=f.onEdit!==void 0||o!==void 0,p=s&&m.nodeId!==void 0&&t!==null;return !c&&!y&&!p?null:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[c?jsxRuntime.jsxs("div",{className:"docx-contextmenu__custom-info","data-testid":"custom-node-info",children:[jsxRuntime.jsx("span",{className:"docx-contextmenu__custom-title",children:c.title}),c.detail?jsxRuntime.jsx("span",{className:"docx-contextmenu__custom-detail",children:c.detail}):null]}):null,y?jsxRuntime.jsx(react$1.ContextMenuItem,{label:i("contextMenu.editCustomNode",{label:R}),className:"docx-contextmenu__custom-edit",onSelect:()=>{f.onEdit?.(m),o?.(m,f);}}):null,p?jsxRuntime.jsx(react$1.ContextMenuItem,{label:i("contextMenu.removeCustomNode",{label:R}),className:"docx-contextmenu__custom-remove",onSelect:()=>{let u=chunkA7NTVTWG_cjs.q(t,m.nodeId);u.ok||l?.(m,u.reason);}}):null,jsxRuntime.jsx("div",{role:"separator",className:"docx-toolbar__menu-separator"})]})}Ct.docxRowPlacement="start";Object.defineProperty(exports,"reviewModule",{enumerable:true,get:function(){return chunkA7NTVTWG_cjs.o}});exports.CustomNodeChrome=xn;exports.CustomNodeContextMenu=Ct;exports.DocxEditorReview=fn;exports.activatedCustomNodeOf=ee;exports.resolveCustomNodeActivation=te;exports.useCustomNodeDefinitions=ce;exports.useReview=ve;exports.useReviewItem=en;exports.useReviewOf=at;exports.useStackedReviewPositions=Bt;
@@ -1,2 +1,2 @@
1
- import {j as j$1,e,c,q,k}from'../chunk-PWNAGXXX.js';export{o as reviewModule}from'../chunk-PWNAGXXX.js';import {createContext,useMemo,useEffect,useCallback,useRef,useContext,useState,isValidElement,cloneElement,useId,useSyncExternalStore,Fragment as Fragment$1}from'react';import {useDocxEditor,useEditorState,useTranslation,ReviewRailContext,Slot,useContextMenuTarget,ContextMenuItem}from'@docx-editor.dev/react';import {jsxs,Fragment,jsx}from'react/jsx-runtime';import {customNodePayloadsByControl}from'@docx-editor.dev/core/store';var $t=new Set(["List","Markers","AddComment","Draft","Balloon"]),Ht=new Set(["Card","Empty"]);function Ie(e,r){let l=r==="root"?$t:Ht,s={},n=[],o=t=>{if(Array.isArray(t)){for(let d of t)o(d);return}if(!isValidElement(t)){t!=null&&t!==false&&n.push(t);return}if(t.type===Fragment$1){o(t.props.children);return}let i=t.type.docxReviewPart;i&&l.has(i)?s[i]=t:n.push(t);};return o(e),{parts:s,rest:n}}function at(e,r){if(!r)return e;let l=e.props.className;return cloneElement(e,{className:`${r}${l?` ${l}`:""}`})}function fe(e){let r=useDocxEditor();return lt(r,e)}function lt(e,r){let l=useCallback(u=>{if(!e)return ()=>{};let x=e.on("change",u),I=e.on("selectionChange",u),N=e.on("error",u);return ()=>{x(),I(),N();}},[e]),s=useSyncExternalStore(l,()=>e?`${e.getReviewRevision()}`:"none",()=>"none"),n=useMemo(()=>e?e.getReviewItems(r).filter(u=>u.item.kind!=="custom"||u.item.carded):[],[e,s,r]),o=useMemo(()=>n.find(u=>u.isActive)?.key??null,[n]),t=useCallback((u,x)=>e?e.setActiveReviewItem(u,x).ok:false,[e]),i=useCallback(u=>!e||u.kind!=="revision"||u.readOnly?false:e.acceptReviewItem(u.key).ok,[e]),d=useCallback(u=>!e||u.kind!=="revision"||u.readOnly?false:e.rejectReviewItem(u.key).ok,[e]),m=useCallback(u=>!e||u.kind==="custom"||u.kind==="revision"&&u.readOnly?false:e.deleteReviewItem(u.key).ok,[e]),c=useCallback((u,x,I)=>x.trim().length===0||!e?false:e.replyToReviewItem(u.key,x,I).ok,[e]),p=useMemo(()=>e?e.getSelectionPlacement()?.anchorY??null:null,[e,s]),R=useCallback((u,x)=>u.trim().length===0||!e?false:e.addComment(u,x).ok,[e]),y=useMemo(()=>e?e.isReviewPaneOpen():true,[e,s]),w=useCallback(u=>{!e||e.isReviewPaneOpen()===u||e.exec({type:"toggleReviewPane"});},[e]);return useMemo(()=>({items:n,activeKey:o,setActive:t,accept:i,reject:d,remove:m,reply:c,selectionAnchorY:p,comment:R,paneOpen:y,setPaneOpen:w,ready:e!==null&&!e.snapshot().isLoading&&e.snapshot().parseError===null}),[n,o,t,i,d,m,c,p,R,y,w,e])}function Kt(e,r,l={}){let s=l.gap??8,n=l.scale??1,o=l.defaultHeight??0;return useMemo(()=>{let t=new Map,i=Number.NEGATIVE_INFINITY;for(let d of e){let m=d.anchorY===null?Number.isFinite(i)?i:0:Math.max(d.anchorY,i);t.set(d.key,m),i=m+((r.get(d.key)??o)+s)/n;}return t},[e,r,s,n,o])}var ee=e=>jsx("svg",{viewBox:"0 -960 960 960",width:16,height:16,"aria-hidden":"true",focusable:"false",children:jsx("path",{d:e,fill:"currentColor"})}),ut="M440-400h80v-120h120v-80H520v-120h-80v120H320v80h120v120ZM80-80v-720q0-33 23.5-56.5T160-880h640q33 0 56.5 23.5T880-800v480q0 33-23.5 56.5T800-240H240L80-80Zm126-240h594v-480H160v525l46-45Zm-46 0v-480 480Z",ct="M240-400h480v-80H240v80Zm0-120h480v-80H240v80Zm0-120h480v-80H240v80ZM880-80 720-240H160q-33 0-56.5-23.5T80-320v-480q0-33 23.5-56.5T160-880h640q33 0 56.5 23.5T880-800v720ZM160-320h594l46 45v-525H160v480Zm0 0v-480 480Z",mt="M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z",vt="m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z",ft="M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520ZM360-280h80v-360h-80v360Zm160 0h80v-360h-80v360ZM280-720v520-520Z",Yt="M200-200h57l391-391-57-57-391 391v57Zm-80 80v-170l528-527q12-11 26.5-17t30.5-6q16 0 31 6t26 18l55 56q12 11 17.5 26t5.5 30q0 16-5.5 30.5T817-647L290-120H120Zm640-584-56-56 56 56Zm-141 85-28-29 57 57-29-28Z",Zt="M486-160q-76 0-135-45t-85-123l88-38q14 48 48.5 78t85.5 30q42 0 76-20t34-64q0-18-7-33t-19-27h112q5 14 7.5 28.5T694-341q0 86-61.5 133.5T486-160ZM80-520v-80h800v80H80Zm402-360q66 0 116 30t74 84l-88 38q-11-28-38.5-47T480-794q-42 0-72 19t-30 51q0 15 6 27t18 22H272q-6-13-9-27t-3-30q0-70 55-114t167-44Z",Bt="M360-160q-83 0-141.5-58.5T160-360v-360q0-83 58.5-141.5T360-920q83 0 141.5 58.5T560-720v360q0 83-58.5 141.5T360-160Zm0-80q50 0 85-35t35-85v-360q0-50-35-85t-85-35q-50 0-85 35t-35 85v360q0 50 35 85t85 35Zm300 80q29 0 49.5-20.5T730-230q0-22-12.5-40T684-296l-64-32v-232l100 100q23 23 51.5 35.5T832-412v-80q-17 0-32-6.5T773-517L633-657q-12-12-27.5-17.5T573-680h-13v520h100ZM360-720Z",Ft="M580-360q-25 0-42.5-17.5T520-420v-160q0-25 17.5-42.5T580-640h160q25 0 42.5 17.5T800-580v260q0 66-47 113t-113 47v-80q33 0 56.5-23.5T720-320v-40H580Zm-360 0q-25 0-42.5-17.5T160-420v-160q0-25 17.5-42.5T220-640h160q25 0 42.5 17.5T440-580v260q0 66-47 113t-113 47v-80q33 0 56.5-23.5T360-320v-40H220Z";function pt(e){if(e.kind==="comment")return ct;if(e.kind==="custom")return e.item.icon??Ft;switch(e.revisionKind){case "insert":case "moveTo":return Yt;case "delete":case "moveFrom":return Zt;case "format":return Bt;default:return ct}}var Gt=e=>e.isLoading||e.parseError!==null||e.pageSetup==null,ke=createContext(null),P=createContext(null);function Wt(){return useContext(P)}var Xt={scale:96/72,top:0,left:null},Jt=16,we="\0compose",Rt=600,bt=8,en=72,tn=64,nn=480,on=Object.freeze({placement:false});function Me(e,r){return e.kind!=="comment"?false:e.parentId!==void 0?r.has(e.parentId):e.parentRevisionId!==void 0?r.has(e.parentRevisionId):false}function De(e){return new Set(e.map(r=>r.id))}function j(e){let r=e.target?.tagName;r==="INPUT"||r==="SELECT"||r==="TEXTAREA"||e.preventDefault();}function $(){let e=useContext(ke);return e||rn}function Y(){let{t:e}=useContext(ke)??{},{t:r}=useTranslation();return useCallback(l=>e?.(l)??r(l),[e,r])}var rn={t:void 0,cardClassName:void 0,review:{items:[],activeKey:null,setActive:()=>false,accept:()=>false,reject:()=>false,remove:()=>false,reply:()=>false,selectionAnchorY:null,comment:()=>false,paneOpen:true,setPaneOpen:()=>{},ready:false},allItems:[],authorSlots:new Map,byId:new Map,measure:()=>{},beginDraft:()=>{},endDraft:()=>{}};function sn({className:e,furniture:r,asChild:l,hidden:s,children:n,t:o,card:t,preset:i=true,stack:d=true,gap:m=8,filter:c,structural:p=false,formatting:R=false}){let y=useDocxEditor(),w=useEditorState(Gt),u=useMemo(()=>{let f=[];return p||f.push("structural"),R||f.push("format"),f.length>0?f:void 0},[p,R]),x=useMemo(()=>u?{excludeRevisionKinds:u}:void 0,[u]);useEffect(()=>(y?.setReviewActivationExclusions(u??null),()=>y?.setReviewActivationExclusions(null)),[y,u]);let I=fe(on),N=fe(x),C=N.setPaneOpen,{t:E}=useTranslation(),T=useCallback(f=>o?.(f)??E(f),[o,E]),D=useRef(null),me=useContext(ReviewRailContext);useEffect(()=>me?.register(),[me]);let Z=N.paneOpen,k=useMemo(()=>c?N.items.filter(f=>c(f)):N.items,[N.items,c]),Be=useMemo(()=>{let f=new Map;for(let v of k)v.author&&!f.has(v.author)&&f.set(v.author,f.size);return f},[k]),Fe=useMemo(()=>{let f=new Map;for(let v of k)f.set(v.id,v);return f},[k]),[je,Et]=useState(()=>new Map),he=useCallback((f,v)=>{v<=0||Et(b=>{if(b.get(f)===v)return b;let _=new Map(b);return _.set(f,v),_});},[]),ge=useRef(new WeakMap),oe=useRef(null),Ue=useCallback((f,v)=>{!f||typeof ResizeObserver>"u"||(he(v,f.offsetHeight),oe.current??(oe.current=new ResizeObserver(b=>{for(let _ of b){let g=ge.current.get(_.target);g&&he(g,_.target.offsetHeight);}})),ge.current.get(f)!==v&&(ge.current.set(f,v),oe.current.observe(f)));},[he]);useEffect(()=>()=>oe.current?.disconnect(),[]);let[S,Tt]=useState(Xt);useEffect(()=>{let f=D.current;if(!y||!f)return;let v=f.offsetParent,b=v?.querySelector(".docx-paginated-surface")??null,_=()=>{Tt(M=>{let H=b&&v?b.getBoundingClientRect():null,L=H&&v?v.getBoundingClientRect():null,q={scale:y.getRenderScale(),top:H&&L&&v?H.top-L.top-v.clientTop+v.scrollTop:0,left:H&&L&&v?H.right-L.left-v.clientLeft+v.scrollLeft+Jt:null};return M.scale===q.scale&&M.top===q.top&&M.left===q.left?M:q});};_();let g=new ResizeObserver(_);return v&&g.observe(v),b&&g.observe(b),()=>g.disconnect()},[y,k,w,s]),useEffect(()=>{let f=D.current;if(!y||!f)return;let v=b=>{let _=b.target;if(!(_ instanceof Node)||f.contains(_))return;let g=f.offsetParent;!g||!g.contains(_)||g.querySelector(".docx-paginated-surface")?.contains(_)||y.setActiveReviewItem(null);};return document.addEventListener("mousedown",v,true),()=>document.removeEventListener("mousedown",v,true)},[y,w,s]);let[Ne,It]=useState(null);useEffect(()=>{let f=D.current,v=f?.offsetParent;if(!v)return;let b=0,_=()=>{b=0,It(L=>{let q=v.scrollTop-Rt,ve=v.scrollTop+v.clientHeight+Rt;return L&&L.top===q&&L.bottom===ve?L:{top:q,bottom:ve}});},g=0,M=()=>{b===0&&(b=requestAnimationFrame(_)),f?.setAttribute("data-scrolling",""),window.clearTimeout(g),g=window.setTimeout(()=>f?.removeAttribute("data-scrolling"),150);};_(),v.addEventListener("scroll",M,{passive:true});let H=new ResizeObserver(M);return H.observe(v),()=>{b!==0&&cancelAnimationFrame(b),window.clearTimeout(g),v.removeEventListener("scroll",M),H.disconnect();}},[y,w,s]);let[B,_e]=useState(null),ze=useCallback(()=>{y&&(y.surface?.retainSelection(),C(true),_e(y.getSelectionPlacement()?.anchorY??null));},[y,C]),Qe=useCallback(()=>{y?.surface?.releaseSelection(),_e(null),y?.focus();},[y]);useEffect(()=>{Z||B===null||(y?.surface?.releaseSelection(),_e(null));},[Z,B,y]);let Ge=B??N.selectionAnchorY,U=useMemo(()=>{let f=De(k);return k.filter(v=>!Me(v,f))},[k]),We=useMemo(()=>{if(B===null)return U;let f=U.findIndex(b=>b.anchorY!==null&&b.anchorY>B),v={key:we,anchorY:B};return f===-1?[...U,v]:[...U.slice(0,f),v,...U.slice(f)]},[U,B]),Xe=useMemo(()=>{let f=new Map(je);for(let v of U){if(f.has(v.key))continue;let b=v.text.length+(v.kind==="revision"?v.replacedText?.length??0:0),_=Math.min(6,Math.max(1,Math.ceil(b/36)));f.set(v.key,64+_*20);}return f},[je,U]),{stacked:Ce,collapsedKeys:Je}=useMemo(()=>{let f=S.scale,v=new Map,b=new Set,_=Number.NEGATIVE_INFINITY;for(let g of We){let M=g.anchorY===null?Number.isFinite(_)?_:0:Math.max(g.anchorY,_);v.set(g.key,M);let H=g.anchorY===null?0:(M-g.anchorY)*f,L="isActive"in g&&g.isActive,q=H>nn&&!L&&g.key!==we;q&&b.add(g.key);let ve=q?tn:Xe.get(g.key)??en;_=M+(ve+m)/f;}return {stacked:v,collapsedKeys:b}},[We,Xe,m,S.scale]),Ee=Ge===null?null:S.top+(Ce.get(we)??Ge)*S.scale,et=t?.className,Pt=useMemo(()=>({t:o,cardClassName:et,review:{...N,items:k},allItems:I.items,authorSlots:Be,byId:Fe,measure:Ue,beginDraft:ze,endDraft:Qe}),[o,et,N,I.items,k,Be,Fe,Ue,ze,Qe]);if(s||w)return null;let tt={ref:D,className:`docx-review${e?` ${e}`:""}`,"data-testid":"review-rail","data-count":k.length,"data-open":Z?"":void 0,role:"complementary","aria-label":T("review.ariaLabel"),onMouseDown:j,style:S.left===null?void 0:{left:S.left,right:"auto"}},X=typeof n=="function"?{parts:{},rest:n}:Ie(n,"root"),G=X.parts,re=(f,v)=>{if(!(f in G))return v;let b=G[f];return !isValidElement(b)||!isValidElement(v)?b:cloneElement(b,{...v.props,...b.props})},nt=jsxs(Fragment,{children:[i||"AddComment"in G?re("AddComment",jsx(Oe,{top:Ee,drafting:B!==null})):null,!Z||B===null||Ee===null||!i&&!("Draft"in G)?null:re("Draft",jsx(Le,{top:Ee})),i||"Balloon"in G?re("Balloon",jsx($e,{})):null]}),At=jsx(Re,{stack:d,positions:Ce,collapsed:Je,scale:S.scale,offset:S.top,window:Ne,children:X.rest}),kt=jsx(Se,{scale:S.scale,offset:S.top,window:Ne}),Mt=Z?i||"List"in G?re("List",At):typeof X.rest=="function"?null:X.rest:i||"Markers"in G?re("Markers",kt):typeof X.rest=="function"?null:X.rest;return jsx(ke.Provider,{value:Pt,children:l&&isValidElement(n)?jsx(Slot,{...tt,children:cloneElement(n,void 0,n.props.children,i?jsx(Re,{stack:d,positions:Ce,collapsed:Je,scale:S.scale,offset:S.top,window:Ne}):null,nt)}):jsxs("aside",{...tt,children:[Z&&r!==void 0?jsx("div",{className:"docx-review__furniture","data-testid":"review-furniture",children:r}):null,Mt,nt]})})}function Re({stack:e=true,positions:r,collapsed:l,scale:s=1,offset:n=0,window:o=null,children:t,className:i,hidden:d}){let{review:m,measure:c,cardClassName:p}=$();if(d)return null;let R=typeof t=="function"?null:Ie(t,"list"),y=De(m.items),w=m.items.filter(u=>!Me(u,y));return w.length===0?typeof t=="function"?null:R?.parts.Empty??jsx(He,{}):jsx("div",{className:`docx-review__list${i?` ${i}`:""}`,children:w.map(u=>{let x=e?r?.get(u.key)??u.anchorY:u.anchorY,I=x==null?null:n+x*s;if(I!==null&&o&&(I<o.top||I>o.bottom))return null;let N=I===null?{}:{position:"absolute",top:I};return jsx(P.Provider,{value:u,children:jsx("div",{className:"docx-review__slot",style:N,...l?.has(u.key)?{"data-collapsed":""}:{},ref:C=>{c(C,u.key);},children:typeof t=="function"?t(u):R?.parts.Card&&isValidElement(R.parts.Card)?at(R.parts.Card,p):jsx(qe,{...p?{className:p}:{},children:R?.rest})})},u.key)})})}Re.docxReviewPart="List";function Se({scale:e=1,offset:r=0,window:l=null,className:s,hidden:n,icon:o}){let{review:t}=$(),i=Y();if(n)return null;let d=De(t.items),m=t.items.filter(c=>!Me(c,d));return jsx("div",{className:`docx-review__markers${s?` ${s}`:""}`,children:m.map(c=>{if(c.anchorY===null)return null;let p=r+c.anchorY*e;return l&&(p<l.top||p>l.bottom)?null:jsx("button",{type:"button",className:"docx-review__marker","data-testid":"review-marker","data-kind":c.kind==="revision"?c.revisionKind:c.kind,style:{position:"absolute",top:p},title:c.author?`${c.author}: ${c.text}`:c.text,"aria-label":`${i("review.showPane")}: ${c.author?`${c.author}. `:""}${c.text}`,onMouseDown:j,onClick:()=>{t.setPaneOpen(true),t.setActive(c.key);},children:(typeof o=="function"?o(c):o)??ee(pt(c))},c.key)})})}Se.docxReviewPart="Markers";function Oe({top:e=null,drafting:r=false,className:l,hidden:s,children:n}){let{beginDraft:o}=$(),t=Y();if(s||r||e===null)return null;let i={type:"button",className:`docx-review__add${l?` ${l}`:""}`,"data-testid":"review-add-comment",style:{position:"absolute",top:e},"aria-label":t("common.comment"),title:t("common.comment"),onMouseDown:j,onClick:o};return n?jsx(Slot,{...i,children:n}):jsx("button",{...i,children:ee(ut)})}Oe.docxReviewPart="AddComment";function Le({top:e=0,className:r,hidden:l}){let{review:s,endDraft:n,measure:o}=$(),t=Y(),[i,d]=useState(""),[m,c]=useState(false),p=useRef(null),R=useId();useEffect(()=>{p.current?.focus({preventScroll:true});},[]);let y=useCallback(()=>{if(i.trim().length===0)return;let w=s.comment(i.trim());c(!w),w&&(d(""),n());},[i,s,n]);return l?null:jsx("div",{className:`docx-review__slot${r?` ${r}`:""}`,style:{position:"absolute",top:e},ref:w=>{o(w,we);},children:jsx("div",{className:"docx-review__card","data-testid":"review-draft","data-draft":"",children:jsxs("form",{className:"docx-review__reply-box",onSubmit:w=>{w.preventDefault(),y();},children:[jsx("label",{className:"docx-editor-sr-only",htmlFor:R,children:t("comments.addComment")}),jsx("input",{id:R,ref:p,"data-testid":"review-draft-input",className:"docx-review__input",value:i,placeholder:t("comments.addComment"),...m?{"aria-invalid":true}:{},onChange:w=>{c(false),d(w.target.value);},onKeyDown:w=>{if(w.key==="Escape"){w.preventDefault(),n();return}w.key==="Enter"&&(w.preventDefault(),y());}}),jsxs("div",{className:"docx-review__reply-actions",children:[jsx("button",{type:"button","data-testid":"review-draft-cancel",className:"docx-review__text-button",onMouseDown:j,onClick:n,children:t("common.cancel")}),jsx("button",{type:"submit","data-testid":"review-draft-submit",className:"docx-review__submit",disabled:i.trim().length===0,children:t("common.comment")})]}),m?jsx("span",{className:"docx-review__refused",role:"alert",children:t("review.commentRefused")}):null]})})})}Le.docxReviewPart="Draft";function $e({className:e,hidden:r}){let{review:l,allItems:s,authorSlots:n}=$(),o=Y(),t=useRef(null),[i,d]=useState(null),m=useRef(false);m.current=i!==null,useEffect(()=>{let w=t.current,u=w?.closest(".docx-review"),x=u?.closest(".docx-editor__scroll-container")??u?.offsetParent;if(!w||!u||!x)return;let I=(C,E)=>{let T=u.getBoundingClientRect(),D=C.getBoundingClientRect(),me=C.ownerDocument.defaultView?.innerHeight??1/0,Z=Number(C.dataset.start),k=Number(C.dataset.end);d({revisionId:C.dataset.revisionId,author:C.dataset.revisionAuthor??"",...C.dataset.revisionDate!==void 0?{date:C.dataset.revisionDate}:{},...C.dataset.revisionKind!==void 0?{kind:C.dataset.revisionKind}:{},structuralSite:E,...C.dataset.paragraphId!==void 0?{paragraphId:C.dataset.paragraphId}:{},...Number.isFinite(Z)?{start:Z}:{},...Number.isFinite(k)?{end:k}:{},left:D.left-T.left,top:D.top-T.top,bottom:D.bottom-T.top,above:D.bottom+220>me});},N=C=>{let E=C.target;if(!(E instanceof Element)||w.contains(E))return;let T=E.closest("[data-revision-id]");if(T instanceof HTMLElement&&x.contains(T)){let D=T.classList.contains("docx-table-row--revision");if(T.dataset.revisionKind==="format"||D){I(T,D);return}}m.current&&d(null);};return x.addEventListener("pointerdown",N,true),x.addEventListener("mousedown",N,true),()=>{x.removeEventListener("pointerdown",N,true),x.removeEventListener("mousedown",N,true);}},[]);let c=useMemo(()=>{if(!i)return null;let w=null,u=false,x=null,I=false,N=null,C=false;for(let E of s)if(!(E.kind!=="revision"||E.item.kind!=="revision")){for(let T of E.item.addresses)if(T.id===i.revisionId){if(T.author===i.author){if(T.date===i.date)return E;w===null?w=E:w!==E&&(u=true);}x===null?x=E:x!==E&&(I=true);}if(i.paragraphId!==void 0&&i.start!==void 0&&i.end!==void 0&&(E.revisionKind==="format"||E.revisionKind==="structural")){for(let T of E.item.ranges)if(T.start.paragraphId===i.paragraphId&&T.start.offset<i.end&&T.end.offset>i.start){N===null?N=E:N!==E&&(C=true);break}}}return w!==null&&!u?w:x!==null&&!I?x:N!==null&&!C?N:null},[s,i]),p=c&&(c.revisionKind==="format"||c.revisionKind==="structural")?c:null,R=useRef(false);if(useEffect(()=>{if(p){R.current=true;return}R.current&&(R.current=false,d(null));},[p]),r)return null;let y=i?.kind==="format"?"format":"structural";return jsx("div",{ref:t,className:`docx-review__balloon-root${e?` ${e}`:""}`,children:i===null?null:jsx("div",{className:"docx-review__balloon","data-testid":"review-balloon",style:{left:i.left,top:i.above?i.top-6:i.bottom+6,transform:i.above?"translateY(-100%)":void 0},onMouseDown:j,children:p?jsx(P.Provider,{value:p,children:jsxs("div",{className:"docx-review__card","data-testid":"review-balloon-card","data-kind":p.revisionKind??"revision",style:{"--doc-review-author":`var(--doc-review-author-${(n.get(p.author)??0)%bt})`},onClick:()=>l.setActive(p.key),children:[jsxs("div",{className:"docx-review__head",children:[jsx(se,{}),jsxs("div",{className:"docx-review__meta",children:[jsx(ae,{}),jsx(le,{})]}),p.kind==="revision"&&!p.readOnly?jsxs("div",{className:"docx-review__actions",children:[jsx(ye,{}),jsx(be,{})]}):null]}),jsx(ce,{})]})}):jsxs("div",{className:"docx-review__card","data-testid":"review-balloon-card","data-kind":y,children:[jsxs("div",{className:"docx-review__head",children:[jsx("span",{className:"docx-review__avatar","aria-hidden":"true",children:an(i.author)}),jsxs("div",{className:"docx-review__meta",children:[jsx("span",{className:"docx-review__author",children:i.author||o("comments.unknown")}),i.date?jsx(ln,{raw:i.date}):null]})]}),jsx("div",{className:"docx-review__summary",children:jsx("span",{className:"docx-review__label","data-kind":y,children:o(ht(y))})})]})})})}$e.docxReviewPart="Balloon";function an(e){let r=e.trim().split(/\s+/).filter(Boolean);return r.length===0?"?":r.slice(0,2).map(l=>l[0].toUpperCase()).join("")}function ln({raw:e}){let r=new Date(e);return Number.isNaN(r.getTime())?null:jsx("time",{className:"docx-review__time",dateTime:e,children:xt.format(r)})}function He({className:e,hidden:r,children:l}){let s=Y();return r?null:jsx("div",{className:`docx-review__empty${e?` ${e}`:""}`,"data-testid":"review-empty",children:l??s("review.empty")})}He.docxReviewPart="Empty";function qe({className:e,asChild:r,hidden:l,children:s}){let{review:n,authorSlots:o}=$(),t=useContext(P),i=useId();if(l||!t)return null;let d=o.get(t.author)??0,m={className:`docx-review__card${e?` ${e}`:""}`,"data-testid":"review-card","aria-labelledby":`${i}-author ${i}-summary`,"data-kind":t.kind==="revision"?t.revisionKind??"revision":t.kind,...t.kind==="custom"&&t.item.kind==="custom"?{"data-node-name":t.item.name}:{},...t.isActive?{"data-active":""}:{},...t.kind==="comment"&&t.resolved?{"data-resolved":""}:{},style:{"--doc-review-author":`var(--doc-review-author-${d%bt})`},tabIndex:0,role:"button",id:i,onMouseDown:c=>{c.target?.closest("[data-review-selectable]")||c.currentTarget.focus({preventScroll:true});},onClick:()=>n.setActive(t.key),onKeyDown:c=>{c.target===c.currentTarget&&(c.key!=="Enter"&&c.key!==" "||(c.preventDefault(),n.setActive(t.key)));}};return r?jsx(Slot,{...m,children:s}):jsx("div",{...m,children:jsx(cn,{children:s})})}qe.docxReviewPart="Card";function cn({children:e}){let r=useContext(P),l=useMemo(()=>dn(e),[e]),s=(o,t)=>o in l?l[o]:t;if(!r)return null;if(r.kind==="custom"&&r.item.kind==="custom"){let o=r.item;return jsxs(Fragment,{children:[jsxs("div",{className:"docx-review__head",children:[s("Avatar",null),jsx("div",{className:"docx-review__meta",children:s("Author",jsx("span",{className:"docx-review__author","data-testid":"review-custom-title",children:o.title}))})]}),s("Summary",o.detail?jsx("div",{className:"docx-review__summary","data-testid":"review-summary","data-review-selectable":"",children:jsx("span",{className:"docx-review__text",children:o.detail})}):null),l.__extra]})}let n=r.kind==="revision"&&!r.readOnly;return jsxs(Fragment,{children:[jsxs("div",{className:"docx-review__head",children:[s("Avatar",jsx(se,{})),jsxs("div",{className:"docx-review__meta",children:[s("Author",jsx(ae,{})),s("Time",jsx(le,{}))]}),n||r.kind==="comment"?jsxs("div",{className:"docx-review__actions",children:[s("Accept",jsx(ye,{})),s("Reject",jsx(be,{})),s("Delete",jsx(xe,{}))]}):null]}),s("Summary",jsx(ce,{})),s("Replies",jsx(Ve,{})),s("Reply",jsx(Ke,{})),l.__extra]})}function dn(e){let r={},l=[],s=n=>{if(Array.isArray(n)){n.forEach(s);return}if(!n||typeof n!="object"||!("type"in n)){n&&l.push(n);return}if(n.type===Fragment$1){s(n.props.children);return}let o=n.type.docxReviewPart;o?r[o]=n:l.push(n);};return s(e),l.length>0&&(r.__extra=l),r}function se({className:e,asChild:r,hidden:l,children:s}){let n=useContext(P);if(l||!n||s===void 0&&!n.initials)return null;let o={className:`docx-review__avatar${e?` ${e}`:""}`,"data-testid":"review-avatar","aria-hidden":true};return r?jsx(Slot,{...o,children:s}):jsx("span",{...o,children:s??n.initials})}se.docxReviewPart="Avatar";function ae({className:e,asChild:r,hidden:l,children:s}){let n=useContext(P),o=Y();if(l||!n)return null;let t=n.author||o("comments.unknown"),i={className:`docx-review__author${e?` ${e}`:""}`,"data-testid":"review-author"};return r?jsx(Slot,{...i,children:s}):jsx("span",{...i,children:s??t})}ae.docxReviewPart="Author";function le({className:e,asChild:r,hidden:l,children:s}){let n=useContext(P);if(l||!n)return null;let o=n.date;if(!o)return null;let t=new Date(o);if(Number.isNaN(t.getTime()))return null;let i={className:`docx-review__time${e?` ${e}`:""}`,"data-testid":"review-time",dateTime:o};return r?jsx(Slot,{...i,children:s}):jsx("time",{...i,children:s??xt.format(t)})}le.docxReviewPart="Time";var xt=new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});function ce({className:e,asChild:r,hidden:l,children:s}){let n=useContext(P),o=Y();if(l||!n)return null;let t=n.text,i=n.kind!=="revision"?null:o(ht(n.revisionKind)),d=n.kind==="revision"&&n.revisionKind==="replace",m={className:`docx-review__summary${e?` ${e}`:""}`,"data-testid":"review-summary","data-review-selectable":""};return r?jsx(Slot,{...m,children:s}):jsx("div",{...m,children:s??(d?jsxs("span",{className:"docx-review__text",children:[o("review.replaced")," ",jsxs("span",{className:"docx-review__removed",children:['"',n.replacedText,'"']})," ",o("review.replacedWith")," ",jsxs("span",{className:"docx-review__added",children:['"',t,'"']})]}):jsxs(Fragment,{children:[i?jsx("span",{className:"docx-review__label","data-kind":n.kind==="revision"?n.revisionKind:"revision",children:i}):null,t?jsx("span",{className:"docx-review__text",children:t}):null]}))})}ce.docxReviewPart="Summary";function ht(e){switch(e){case "insert":return "review.inserted";case "delete":return "review.deleted";case "replace":return "review.replaced";case "moveFrom":return "review.movedFrom";case "moveTo":return "review.movedTo";case "format":return "revisions.runPropertiesChanged";case "paragraphMark":return "revisions.paragraphMarkInserted";default:return "review.structural"}}function ye({className:e,asChild:r,hidden:l,children:s,icon:n}){let{review:o}=$(),t=useContext(P),i=Y();if(l||!t||t.kind!=="revision"||t.readOnly)return null;let d=i("review.accept"),m={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-accept","aria-label":d,title:d,onMouseDown:j,onClick:c=>{c.stopPropagation(),o.accept(t);}};return r?jsx(Slot,{...m,children:s}):jsx("button",{...m,children:n??s??ee(mt)})}ye.docxReviewPart="Accept";function be({className:e,asChild:r,hidden:l,children:s,icon:n}){let{review:o}=$(),t=useContext(P),i=Y();if(l||!t||t.kind!=="revision"||t.readOnly)return null;let d=i("review.reject"),m={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-reject","aria-label":d,title:d,onMouseDown:j,onClick:c=>{c.stopPropagation(),o.reject(t);}};return r?jsx(Slot,{...m,children:s}):jsx("button",{...m,children:n??s??ee(vt)})}be.docxReviewPart="Reject";function xe({className:e,asChild:r,hidden:l,children:s,icon:n}){let{review:o}=$(),t=useContext(P),{t:i}=useTranslation();if(l||!t||t.kind==="custom"||t.kind==="revision"&&t.readOnly)return null;let d=t.kind==="comment"?i("review.deleteComment"):i("review.discardChange"),m={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-delete","aria-label":d,title:d,onMouseDown:j,onClick:c=>{c.stopPropagation(),o.remove(t);}};return r?jsx(Slot,{...m,children:s}):jsx("button",{...m,children:n??s??ee(ft)})}xe.docxReviewPart="Delete";function Ve({className:e,hidden:r}){let{byId:l}=$(),s=useContext(P);if(r||!s||s.kind==="custom")return null;let n=s.replyIds.map(o=>l.get(o)).filter(o=>o!==void 0);return n.length===0?null:jsx("ol",{className:`docx-review__replies${e?` ${e}`:""}`,children:n.map(o=>jsx(P.Provider,{value:o,children:jsxs("li",{className:"docx-review__reply","data-testid":"review-reply",children:[jsxs("div",{className:"docx-review__head",children:[jsx(se,{}),jsxs("div",{className:"docx-review__meta",children:[jsx(ae,{}),jsx(le,{})]}),jsx("div",{className:"docx-review__actions",children:jsx(xe,{})})]}),jsx(ce,{})]})},o.key))})}Ve.docxReviewPart="Replies";function Ke({className:e,hidden:r,children:l}){let{review:s}=$(),n=useContext(P),o=Y(),[t,i]=useState(""),[d,m]=useState(false),c=useId(),p=useCallback(()=>{if(!n||t.trim().length===0)return;let R=s.reply(n,t.trim());m(!R),R&&i("");},[n,t,s]);return r||!n||!n.isActive?null:l?jsx(Fragment,{children:l}):jsxs("form",{className:`docx-review__reply-box${e?` ${e}`:""}`,onSubmit:R=>{R.preventDefault(),p();},children:[jsx("label",{className:"docx-editor-sr-only",htmlFor:c,children:o("comments.replyPlaceholder")}),jsx("input",{id:c,"data-testid":"review-reply-input",className:"docx-review__input",value:t,placeholder:o("comments.replyPlaceholder"),...d?{"aria-invalid":true,"data-refused":""}:{},onChange:R=>{m(false),i(R.target.value);},onClick:R=>R.stopPropagation(),onKeyDown:R=>{R.key==="Enter"&&(R.preventDefault(),p());}}),jsxs("div",{className:"docx-review__reply-actions",children:[jsx("button",{type:"button","data-testid":"review-reply-cancel",className:"docx-review__text-button",onMouseDown:j,onClick:R=>{R.stopPropagation(),i(""),m(false),s.setActive(null);},children:o("common.cancel")}),jsx("button",{type:"submit","data-testid":"review-reply-submit",className:"docx-review__submit",disabled:t.trim().length===0,children:o("review.reply")})]}),d?jsx("span",{className:"docx-review__refused",role:"alert","data-testid":"review-reply-refused",children:o("review.replyRefused")}):null]})}Ke.docxReviewPart="Reply";var un=Object.assign(sn,{List:Re,Empty:He,Card:qe,Avatar:se,Author:ae,Time:le,Summary:ce,Accept:ye,Reject:be,Delete:xe,Replies:Ve,Reply:Ke,Markers:Se,AddComment:Oe,Draft:Le,Balloon:$e});function de(e){let r=useDocxEditor();return useMemo(()=>e||(r?.getCustomNodeDefinitions()??[]).filter(j$1),[e,r])}var pn=".docx-content-control-boundary";function te(e,r){let{node:l,definition:s,controlId:n}=e,o=n?r?.getReviewItems().find(d=>d.kind==="custom"&&d.item.id===n):void 0;if(o&&o.kind==="custom"){let d=o.item;return {...l,attrs:d.attrs,text:d.text,...d.data===void 0?{}:{data:d.data},...n?{nodeId:n}:{}}}let t=n?wn(r,n,s):void 0,i=s.fromDocx?s.fromDocx({attrs:l.attrs,text:"",...t===void 0?{}:{data:t}}):l.attrs;return i===null?null:{...l,attrs:i,...t===void 0?{}:{data:t},...n?{nodeId:n}:{}}}function wn(e$1,r,l){let s=e$1?.surface;if(!s)return;let n=s.session.part(),o=customNodePayloadsByControl(s.session.currentPackage(),n.name).get(r);if(!o)return;let t=e(l.schema,o.data);return t.ok?t.value:void 0}function ne(e,r){let l=e?.closest?.(pn),s=l?.closest(".docx-content-control-chrome"),n=s?.getAttribute("data-tag"),o=n?c(n):null;if(!l||!o||!n)return null;let t=r.find(i=>i.tagPrefix===o.prefix&&i.name===o.name);return t?{node:{name:o.name,attrs:o.attrs,tag:n,rect:l.getBoundingClientRect()},definition:t,controlId:s?.getAttribute("data-docx-content-control")??null}:null}var Ye=".docx-content-control-boundary",yn=e=>{if(!k.test(e.tagPrefix)||!k.test(e.name))return [];let r=`${e.tagPrefix}:${e.name}`;return [`.docx-content-control-chrome[data-tag="${r}"]`,`.docx-content-control-chrome[data-tag^="${r}?"]`]};function bn(e){let{onNodeClick:r,onNodeHover:l}=e,s=useDocxEditor(),n=de(e.nodes);return useEffect(()=>{let o=document.createElement("style"),t=[];for(let i of n){let d=yn(i);if(d.length===0)continue;let m=i.chrome?.color!==void 0&&CSS.supports("color",i.chrome.color)?i.chrome.color:"#2563eb";t.push(`${d.map(c=>`${c} ${Ye}`).join(", ")} {`," pointer-events: auto !important;"," opacity: 1;"," border: none;",` background: color-mix(in srgb, ${m} 12%, transparent);`," border-radius: 6px;"," cursor: default;","}");}return o.textContent=t.join(`
2
- `),document.head.append(o),()=>o.remove()},[n]),useEffect(()=>{let o=null,t=null,i=p=>ne(document.elementFromPoint(p.clientX,p.clientY),n),d=p=>{let R=p.button===0?i(p):null;o=R?.controlId??null,t=R?.node.tag??null;},m=p=>{let R=o,y=t;if(o=null,t=null,y===null)return;let w=i(p);if(!w||w.node.tag!==y||R!==null&&w.controlId!==R)return;let u=te(w,s);u&&(w.definition.onClick?.(u),r?.(u));},c=p=>{let R=ne(p.target,n);if(!R||p.relatedTarget?.closest?.(Ye)===p.target.closest(Ye))return;let w=te(R,s);w&&(R.definition.onHover?.(w),l?.(w));};return document.addEventListener("pointerdown",d,true),document.addEventListener("pointerup",m,true),document.addEventListener("mouseover",c),()=>{document.removeEventListener("pointerdown",d,true),document.removeEventListener("pointerup",m,true),document.removeEventListener("mouseover",c);}},[n,s,r,l]),null}function Ct(e){let{onEditNode:r,onRemoveRefused:l,remove:s=true}=e,n=de(e.nodes),o=useContextMenuTarget(),t=useDocxEditor(),{t:i}=useTranslation(),d=useMemo(()=>o?ne(o,n):null,[o,n]),m=useMemo(()=>d?te(d,t):null,[d,t]),c=useMemo(()=>!d?.definition.reviewCard||!m?null:d.definition.reviewCard({attrs:m.attrs,text:m.text??"",...m.data===void 0?{}:{data:m.data}}),[d,m]);if(!d||!m)return null;let{definition:p}=d,R=p.label??p.name,y=p.onEdit!==void 0||r!==void 0,w=s&&m.nodeId!==void 0&&t!==null;return !c&&!y&&!w?null:jsxs(Fragment,{children:[c?jsxs("div",{className:"docx-contextmenu__custom-info","data-testid":"custom-node-info",children:[jsx("span",{className:"docx-contextmenu__custom-title",children:c.title}),c.detail?jsx("span",{className:"docx-contextmenu__custom-detail",children:c.detail}):null]}):null,y?jsx(ContextMenuItem,{label:i("contextMenu.editCustomNode",{label:R}),className:"docx-contextmenu__custom-edit",onSelect:()=>{p.onEdit?.(m),r?.(m,p);}}):null,w?jsx(ContextMenuItem,{label:i("contextMenu.removeCustomNode",{label:R}),className:"docx-contextmenu__custom-remove",onSelect:()=>{let u=q(t,m.nodeId);u.ok||l?.(m,u.reason);}}):null,jsx("div",{role:"separator",className:"docx-toolbar__menu-separator"})]})}Ct.docxRowPlacement="start";export{bn as CustomNodeChrome,Ct as CustomNodeContextMenu,un as DocxEditorReview,te as activatedCustomNodeOf,ne as resolveCustomNodeActivation,de as useCustomNodeDefinitions,fe as useReview,Wt as useReviewItem,lt as useReviewOf,Kt as useStackedReviewPositions};
1
+ import {j as j$1,e,c,q,k}from'../chunk-PWNAGXXX.js';export{o as reviewModule}from'../chunk-PWNAGXXX.js';import {createContext,useMemo,useEffect,useCallback,useRef,useContext,useState,isValidElement,cloneElement,useId,useSyncExternalStore,Fragment as Fragment$1}from'react';import {useDocxEditor,useEditorState,useTranslation,ReviewRailContext,Slot,useContextMenuTarget,ContextMenuItem}from'@docx-editor.dev/react';import {jsxs,Fragment,jsx}from'react/jsx-runtime';import {customNodePayloadsByControl}from'@docx-editor.dev/core/store';var Ht=new Set(["List","Markers","AddComment","Draft","Balloon"]),$t=new Set(["Card","Empty"]);function _e(e,o){let l=o==="root"?Ht:$t,s={},n=[],r=t=>{if(Array.isArray(t)){for(let d of t)r(d);return}if(!isValidElement(t)){t!=null&&t!==false&&n.push(t);return}if(t.type===Fragment$1){r(t.props.children);return}let i=t.type.docxReviewPart;i&&l.has(i)?s[i]=t:n.push(t);};return r(e),{parts:s,rest:n}}function it(e,o){if(!o)return e;let l=e.props.className;return cloneElement(e,{className:`${o}${l?` ${l}`:""}`})}function st(e){let o=useRef(new WeakMap),l=useRef(new Map),s=useRef(null),n=useCallback((r,t)=>{let i=l.current.get(t);if(!r){i&&(s.current?.unobserve(i),o.current.delete(i),l.current.delete(t));return}typeof ResizeObserver>"u"||(e(t,r.offsetHeight),s.current??(s.current=new ResizeObserver(d=>{for(let m of d){let c=o.current.get(m.target);c&&e(c,m.target.offsetHeight);}})),!(i===r&&o.current.get(r)===t)&&(i&&(s.current.unobserve(i),o.current.delete(i)),o.current.set(r,t),l.current.set(t,r),s.current.observe(r)));},[e]);return useEffect(()=>()=>{s.current?.disconnect(),l.current.clear();},[]),n}function Zt(e){let o=false;return ()=>{if(o)return;if(!globalThis.navigator?.scheduling?.isInputPending?.({includeContinuous:true})){e();return}o=true,setTimeout(()=>{o=false,e();},0);}}function ve(e){let o=useDocxEditor();return at(o,e)}function at(e,o){let l=useCallback(u=>{if(!e)return ()=>{};let g=false,T=Zt(()=>{g||u();}),C=e.on("change",T),x=e.on("selectionChange",T),N=e.on("error",T);return ()=>{g=true,C(),x(),N();}},[e]),s=useSyncExternalStore(l,()=>e?`${e.getReviewRevision()}`:"none",()=>"none"),n=useMemo(()=>e?e.getReviewItems(o).filter(u=>u.item.kind!=="custom"||u.item.carded):[],[e,s,o]),r=useMemo(()=>n.find(u=>u.isActive)?.key??null,[n]),t=useCallback((u,g)=>e?e.setActiveReviewItem(u,g).ok:false,[e]),i=useCallback(u=>!e||u.kind!=="revision"||u.readOnly?false:e.acceptReviewItem(u.key).ok,[e]),d=useCallback(u=>!e||u.kind!=="revision"||u.readOnly?false:e.rejectReviewItem(u.key).ok,[e]),m=useCallback(u=>!e||u.kind==="custom"||u.kind==="revision"&&u.readOnly?false:e.deleteReviewItem(u.key).ok,[e]),c=useCallback((u,g,T)=>g.trim().length===0||!e?false:e.replyToReviewItem(u.key,g,T).ok,[e]),f=useMemo(()=>e?e.getSelectionPlacement()?.anchorY??null:null,[e,s]),R=useCallback((u,g)=>u.trim().length===0||!e?false:e.addComment(u,g).ok,[e]),y=useMemo(()=>e?e.isReviewPaneOpen():true,[e,s]),p=useCallback(u=>{!e||e.isReviewPaneOpen()===u||e.exec({type:"toggleReviewPane"});},[e]);return useMemo(()=>({items:n,activeKey:r,setActive:t,accept:i,reject:d,remove:m,reply:c,selectionAnchorY:f,comment:R,paneOpen:y,setPaneOpen:p,ready:e!==null&&!e.snapshot().isLoading&&e.snapshot().parseError===null}),[n,r,t,i,d,m,c,f,R,y,p,e])}function Bt(e,o,l={}){let s=l.gap??8,n=l.scale??1,r=l.defaultHeight??0;return useMemo(()=>{let t=new Map,i=Number.NEGATIVE_INFINITY;for(let d of e){let m=d.anchorY===null?Number.isFinite(i)?i:0:Math.max(d.anchorY,i);t.set(d.key,m),i=m+((o.get(d.key)??r)+s)/n;}return t},[e,o,s,n,r])}var J=e=>jsx("svg",{viewBox:"0 -960 960 960",width:16,height:16,"aria-hidden":"true",focusable:"false",children:jsx("path",{d:e,fill:"currentColor"})}),dt="M440-400h80v-120h120v-80H520v-120h-80v120H320v80h120v120ZM80-80v-720q0-33 23.5-56.5T160-880h640q33 0 56.5 23.5T880-800v480q0 33-23.5 56.5T800-240H240L80-80Zm126-240h594v-480H160v525l46-45Zm-46 0v-480 480Z",lt="M240-400h480v-80H240v80Zm0-120h480v-80H240v80Zm0-120h480v-80H240v80ZM880-80 720-240H160q-33 0-56.5-23.5T80-320v-480q0-33 23.5-56.5T160-880h640q33 0 56.5 23.5T880-800v720ZM160-320h594l46 45v-525H160v480Zm0 0v-480 480Z",ut="M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z",mt="m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z",vt="M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520ZM360-280h80v-360h-80v360Zm160 0h80v-360h-80v360ZM280-720v520-520Z",Ft="M200-200h57l391-391-57-57-391 391v57Zm-80 80v-170l528-527q12-11 26.5-17t30.5-6q16 0 31 6t26 18l55 56q12 11 17.5 26t5.5 30q0 16-5.5 30.5T817-647L290-120H120Zm640-584-56-56 56 56Zm-141 85-28-29 57 57-29-28Z",jt="M486-160q-76 0-135-45t-85-123l88-38q14 48 48.5 78t85.5 30q42 0 76-20t34-64q0-18-7-33t-19-27h112q5 14 7.5 28.5T694-341q0 86-61.5 133.5T486-160ZM80-520v-80h800v80H80Zm402-360q66 0 116 30t74 84l-88 38q-11-28-38.5-47T480-794q-42 0-72 19t-30 51q0 15 6 27t18 22H272q-6-13-9-27t-3-30q0-70 55-114t167-44Z",Ut="M360-160q-83 0-141.5-58.5T160-360v-360q0-83 58.5-141.5T360-920q83 0 141.5 58.5T560-720v360q0 83-58.5 141.5T360-160Zm0-80q50 0 85-35t35-85v-360q0-50-35-85t-85-35q-50 0-85 35t-35 85v360q0 50 35 85t85 35Zm300 80q29 0 49.5-20.5T730-230q0-22-12.5-40T684-296l-64-32v-232l100 100q23 23 51.5 35.5T832-412v-80q-17 0-32-6.5T773-517L633-657q-12-12-27.5-17.5T573-680h-13v520h100ZM360-720Z",zt="M580-360q-25 0-42.5-17.5T520-420v-160q0-25 17.5-42.5T580-640h160q25 0 42.5 17.5T800-580v260q0 66-47 113t-113 47v-80q33 0 56.5-23.5T720-320v-40H580Zm-360 0q-25 0-42.5-17.5T160-420v-160q0-25 17.5-42.5T220-640h160q25 0 42.5 17.5T440-580v260q0 66-47 113t-113 47v-80q33 0 56.5-23.5T360-320v-40H220Z";function ft(e){if(e.kind==="comment")return lt;if(e.kind==="custom")return e.item.icon??zt;switch(e.revisionKind){case "insert":case "moveTo":return Ft;case "delete":case "moveFrom":return jt;case "format":return Ut;default:return lt}}var Jt=e=>e.isLoading||e.parseError!==null||e.pageSetup==null,Pe=createContext(null),P=createContext(null);function en(){return useContext(P)}var tn={scale:96/72,top:0,left:null},nn=16,pe="\0compose",wt=600,yt=8,on=72,rn=64,sn=480,an=Object.freeze({placement:false});function Ae(e,o){return e.kind!=="comment"?false:e.parentId!==void 0?o.has(e.parentId):e.parentRevisionId!==void 0?o.has(e.parentRevisionId):false}function ke(e){return new Set(e.map(o=>o.id))}function j(e){let o=e.target?.tagName;o==="INPUT"||o==="SELECT"||o==="TEXTAREA"||e.preventDefault();}function H(){let e=useContext(Pe);return e||ln}function K(){let{t:e}=useContext(Pe)??{},{t:o}=useTranslation();return useCallback(l=>e?.(l)??o(l),[e,o])}var ln={t:void 0,cardClassName:void 0,review:{items:[],activeKey:null,setActive:()=>false,accept:()=>false,reject:()=>false,remove:()=>false,reply:()=>false,selectionAnchorY:null,comment:()=>false,paneOpen:true,setPaneOpen:()=>{},ready:false},allItems:[],authorSlots:new Map,byId:new Map,measure:()=>{},beginDraft:()=>{},endDraft:()=>{}};function cn({className:e,furniture:o,asChild:l,hidden:s,children:n,t:r,card:t,preset:i=true,stack:d=true,gap:m=8,filter:c,structural:f=false,formatting:R=false}){let y=useDocxEditor(),p=useEditorState(Jt),u=useMemo(()=>{let w=[];return f||w.push("structural"),R||w.push("format"),w.length>0?w:void 0},[f,R]),g=useMemo(()=>u?{excludeRevisionKinds:u}:void 0,[u]);useEffect(()=>(y?.setReviewActivationExclusions(u??null),()=>y?.setReviewActivationExclusions(null)),[y,u]);let T=ve(an),C=ve(g),x=C.setPaneOpen,{t:N}=useTranslation(),I=useCallback(w=>r?.(w)??N(w),[r,N]),D=useRef(null),ue=useContext(ReviewRailContext);useEffect(()=>ue?.register(),[ue]);let Y=C.paneOpen,k=useMemo(()=>c?C.items.filter(w=>c(w)):C.items,[C.items,c]),Ye=useMemo(()=>{let w=new Map;for(let v of k)v.author&&!w.has(v.author)&&w.set(v.author,w.size);return w},[k]),Ze=useMemo(()=>{let w=new Map;for(let v of k)w.set(v.id,v);return w},[k]),[Be,_t]=useState(()=>new Map),Et=useCallback((w,v)=>{v<=0||_t(b=>{if(b.get(w)===v)return b;let E=new Map(b);return E.set(w,v),E});},[]),Fe=st(Et),[S,Tt]=useState(tn);useEffect(()=>{let w=D.current;if(!y||!w)return;let v=w.offsetParent,b=v?.querySelector(".docx-paginated-surface")??null,E=()=>{Tt(M=>{let $=b&&v?b.getBoundingClientRect():null,L=$&&v?v.getBoundingClientRect():null,q={scale:y.getRenderScale(),top:$&&L&&v?$.top-L.top-v.clientTop+v.scrollTop:0,left:$&&L&&v?$.right-L.left-v.clientLeft+v.scrollLeft+nn:null};return M.scale===q.scale&&M.top===q.top&&M.left===q.left?M:q});};E();let _=new ResizeObserver(E);return v&&_.observe(v),b&&_.observe(b),()=>_.disconnect()},[y,k,p,s]),useEffect(()=>{let w=D.current;if(!y||!w)return;let v=b=>{let E=b.target;if(!(E instanceof Node)||w.contains(E))return;let _=w.offsetParent;!_||!_.contains(E)||_.querySelector(".docx-paginated-surface")?.contains(E)||y.setActiveReviewItem(null);};return document.addEventListener("mousedown",v,true),()=>document.removeEventListener("mousedown",v,true)},[y,p,s]);let[ge,It]=useState(null);useEffect(()=>{let w=D.current,v=w?.offsetParent;if(!v)return;let b=0,E=()=>{b=0,It(L=>{let q=v.scrollTop-wt,me=v.scrollTop+v.clientHeight+wt;return L&&L.top===q&&L.bottom===me?L:{top:q,bottom:me}});},_=0,M=()=>{b===0&&(b=requestAnimationFrame(E)),w?.setAttribute("data-scrolling",""),window.clearTimeout(_),_=window.setTimeout(()=>w?.removeAttribute("data-scrolling"),150);};E(),v.addEventListener("scroll",M,{passive:true});let $=new ResizeObserver(M);return $.observe(v),()=>{b!==0&&cancelAnimationFrame(b),window.clearTimeout(_),v.removeEventListener("scroll",M),$.disconnect();}},[y,p,s]);let[Z,he]=useState(null),je=useCallback(()=>{y&&(y.surface?.retainSelection(),x(true),he(y.getSelectionPlacement()?.anchorY??null));},[y,x]),Ue=useCallback(()=>{y?.surface?.releaseSelection(),he(null),y?.focus();},[y]);useEffect(()=>{Y||Z===null||(y?.surface?.releaseSelection(),he(null));},[Y,Z,y]);let ze=Z??C.selectionAnchorY,U=useMemo(()=>{let w=ke(k);return k.filter(v=>!Ae(v,w))},[k]),Qe=useMemo(()=>{if(Z===null)return U;let w=U.findIndex(b=>b.anchorY!==null&&b.anchorY>Z),v={key:pe,anchorY:Z};return w===-1?[...U,v]:[...U.slice(0,w),v,...U.slice(w)]},[U,Z]),Ge=useMemo(()=>{let w=new Map(Be);for(let v of U){if(w.has(v.key))continue;let b=v.text.length+(v.kind==="revision"?v.replacedText?.length??0:0),E=Math.min(6,Math.max(1,Math.ceil(b/36)));w.set(v.key,64+E*20);}return w},[Be,U]),{stacked:xe,collapsedKeys:We}=useMemo(()=>{let w=S.scale,v=new Map,b=new Set,E=Number.NEGATIVE_INFINITY;for(let _ of Qe){let M=_.anchorY===null?Number.isFinite(E)?E:0:Math.max(_.anchorY,E);v.set(_.key,M);let $=_.anchorY===null?0:(M-_.anchorY)*w,L="isActive"in _&&_.isActive,q=$>sn&&!L&&_.key!==pe;q&&b.add(_.key);let me=q?rn:Ge.get(_.key)??on;E=M+(me+m)/w;}return {stacked:v,collapsedKeys:b}},[Qe,Ge,m,S.scale]),Ne=ze===null?null:S.top+(xe.get(pe)??ze)*S.scale,Xe=t?.className,Pt=useMemo(()=>({t:r,cardClassName:Xe,review:{...C,items:k},allItems:T.items,authorSlots:Ye,byId:Ze,measure:Fe,beginDraft:je,endDraft:Ue}),[r,Xe,C,T.items,k,Ye,Ze,Fe,je,Ue]);if(s||p)return null;let Je={ref:D,className:`docx-review${e?` ${e}`:""}`,"data-testid":"review-rail","data-count":k.length,"data-open":Y?"":void 0,role:"complementary","aria-label":I("review.ariaLabel"),onMouseDown:j,style:S.left===null?void 0:{left:S.left,right:"auto"}},W=typeof n=="function"?{parts:{},rest:n}:_e(n,"root"),Q=W.parts,ne=(w,v)=>{if(!(w in Q))return v;let b=Q[w];return !isValidElement(b)||!isValidElement(v)?b:cloneElement(b,{...v.props,...b.props})},et=jsxs(Fragment,{children:[i||"AddComment"in Q?ne("AddComment",jsx(De,{top:Ne,drafting:Z!==null})):null,!Y||Z===null||Ne===null||!i&&!("Draft"in Q)?null:ne("Draft",jsx(Se,{top:Ne})),i||"Balloon"in Q?ne("Balloon",jsx(Oe,{})):null]}),At=jsx(we,{stack:d,positions:xe,collapsed:We,scale:S.scale,offset:S.top,window:ge,children:W.rest}),kt=jsx(Me,{scale:S.scale,offset:S.top,window:ge}),Mt=Y?i||"List"in Q?ne("List",At):typeof W.rest=="function"?null:W.rest:i||"Markers"in Q?ne("Markers",kt):typeof W.rest=="function"?null:W.rest;return jsx(Pe.Provider,{value:Pt,children:l&&isValidElement(n)?jsx(Slot,{...Je,children:cloneElement(n,void 0,n.props.children,i?jsx(we,{stack:d,positions:xe,collapsed:We,scale:S.scale,offset:S.top,window:ge}):null,et)}):jsxs("aside",{...Je,children:[Y&&o!==void 0?jsx("div",{className:"docx-review__furniture","data-testid":"review-furniture",children:o}):null,Mt,et]})})}function we({stack:e=true,positions:o,collapsed:l,scale:s=1,offset:n=0,window:r=null,children:t,className:i,hidden:d}){let{review:m,measure:c,cardClassName:f}=H();if(d)return null;let R=typeof t=="function"?null:_e(t,"list"),y=ke(m.items),p=m.items.filter(u=>!Ae(u,y));return p.length===0?typeof t=="function"?null:R?.parts.Empty??jsx(Le,{}):jsx("div",{className:`docx-review__list${i?` ${i}`:""}`,children:p.map(u=>{let g=e?o?.get(u.key)??u.anchorY:u.anchorY,T=g==null?null:n+g*s;if(T!==null&&r&&(T<r.top||T>r.bottom))return null;let C=T===null?{}:{position:"absolute",top:T};return jsx(P.Provider,{value:u,children:jsx("div",{className:"docx-review__slot",style:C,...l?.has(u.key)?{"data-collapsed":""}:{},ref:x=>{c(x,u.key);},children:typeof t=="function"?t(u):R?.parts.Card&&isValidElement(R.parts.Card)?it(R.parts.Card,f):jsx(He,{...f?{className:f}:{},children:R?.rest})})},u.key)})})}we.docxReviewPart="List";function Me({scale:e=1,offset:o=0,window:l=null,className:s,hidden:n,icon:r}){let{review:t}=H(),i=K();if(n)return null;let d=ke(t.items),m=t.items.filter(c=>!Ae(c,d));return jsx("div",{className:`docx-review__markers${s?` ${s}`:""}`,children:m.map(c=>{if(c.anchorY===null)return null;let f=o+c.anchorY*e;return l&&(f<l.top||f>l.bottom)?null:jsx("button",{type:"button",className:"docx-review__marker","data-testid":"review-marker","data-kind":c.kind==="revision"?c.revisionKind:c.kind,style:{position:"absolute",top:f},title:c.author?`${c.author}: ${c.text}`:c.text,"aria-label":`${i("review.showPane")}: ${c.author?`${c.author}. `:""}${c.text}`,onMouseDown:j,onClick:()=>{t.setPaneOpen(true),t.setActive(c.key);},children:(typeof r=="function"?r(c):r)??J(ft(c))},c.key)})})}Me.docxReviewPart="Markers";function De({top:e=null,drafting:o=false,className:l,hidden:s,children:n}){let{beginDraft:r}=H(),t=K();if(s||o||e===null)return null;let i={type:"button",className:`docx-review__add${l?` ${l}`:""}`,"data-testid":"review-add-comment",style:{position:"absolute",top:e},"aria-label":t("common.comment"),title:t("common.comment"),onMouseDown:j,onClick:r};return n?jsx(Slot,{...i,children:n}):jsx("button",{...i,children:J(dt)})}De.docxReviewPart="AddComment";function Se({top:e=0,className:o,hidden:l}){let{review:s,endDraft:n,measure:r}=H(),t=K(),[i,d]=useState(""),[m,c]=useState(false),f=useRef(null),R=useId();useEffect(()=>{f.current?.focus({preventScroll:true});},[]);let y=useCallback(()=>{if(i.trim().length===0)return;let p=s.comment(i.trim());c(!p),p&&(d(""),n());},[i,s,n]);return l?null:jsx("div",{className:`docx-review__slot${o?` ${o}`:""}`,style:{position:"absolute",top:e},ref:p=>{r(p,pe);},children:jsx("div",{className:"docx-review__card","data-testid":"review-draft","data-draft":"",children:jsxs("form",{className:"docx-review__reply-box",onSubmit:p=>{p.preventDefault(),y();},children:[jsx("label",{className:"docx-editor-sr-only",htmlFor:R,children:t("comments.addComment")}),jsx("input",{id:R,ref:f,"data-testid":"review-draft-input",className:"docx-review__input",value:i,placeholder:t("comments.addComment"),...m?{"aria-invalid":true}:{},onChange:p=>{c(false),d(p.target.value);},onKeyDown:p=>{if(p.key==="Escape"){p.preventDefault(),n();return}p.key==="Enter"&&(p.preventDefault(),y());}}),jsxs("div",{className:"docx-review__reply-actions",children:[jsx("button",{type:"button","data-testid":"review-draft-cancel",className:"docx-review__text-button",onMouseDown:j,onClick:n,children:t("common.cancel")}),jsx("button",{type:"submit","data-testid":"review-draft-submit",className:"docx-review__submit",disabled:i.trim().length===0,children:t("common.comment")})]}),m?jsx("span",{className:"docx-review__refused",role:"alert",children:t("review.commentRefused")}):null]})})})}Se.docxReviewPart="Draft";function Oe({className:e,hidden:o}){let{review:l,allItems:s,authorSlots:n}=H(),r=K(),t=useRef(null),[i,d]=useState(null),m=useRef(false);m.current=i!==null,useEffect(()=>{let p=t.current,u=p?.closest(".docx-review"),g=u?.closest(".docx-editor__scroll-container")??u?.offsetParent;if(!p||!u||!g)return;let T=(x,N)=>{let I=u.getBoundingClientRect(),D=x.getBoundingClientRect(),ue=x.ownerDocument.defaultView?.innerHeight??1/0,Y=Number(x.dataset.start),k=Number(x.dataset.end);d({revisionId:x.dataset.revisionId,author:x.dataset.revisionAuthor??"",...x.dataset.revisionDate!==void 0?{date:x.dataset.revisionDate}:{},...x.dataset.revisionKind!==void 0?{kind:x.dataset.revisionKind}:{},structuralSite:N,...x.dataset.paragraphId!==void 0?{paragraphId:x.dataset.paragraphId}:{},...Number.isFinite(Y)?{start:Y}:{},...Number.isFinite(k)?{end:k}:{},left:D.left-I.left,top:D.top-I.top,bottom:D.bottom-I.top,above:D.bottom+220>ue});},C=x=>{let N=x.target;if(!(N instanceof Element)||p.contains(N))return;let I=N.closest("[data-revision-id]");if(I instanceof HTMLElement&&g.contains(I)){let D=I.classList.contains("docx-table-row--revision");if(I.dataset.revisionKind==="format"||D){T(I,D);return}}m.current&&d(null);};return g.addEventListener("pointerdown",C,true),g.addEventListener("mousedown",C,true),()=>{g.removeEventListener("pointerdown",C,true),g.removeEventListener("mousedown",C,true);}},[]);let c=useMemo(()=>{if(!i)return null;let p=null,u=false,g=null,T=false,C=null,x=false;for(let N of s)if(!(N.kind!=="revision"||N.item.kind!=="revision")){for(let I of N.item.addresses)if(I.id===i.revisionId){if(I.author===i.author){if(I.date===i.date)return N;p===null?p=N:p!==N&&(u=true);}g===null?g=N:g!==N&&(T=true);}if(i.paragraphId!==void 0&&i.start!==void 0&&i.end!==void 0&&(N.revisionKind==="format"||N.revisionKind==="structural")){for(let I of N.item.ranges)if(I.start.paragraphId===i.paragraphId&&I.start.offset<i.end&&I.end.offset>i.start){C===null?C=N:C!==N&&(x=true);break}}}return p!==null&&!u?p:g!==null&&!T?g:C!==null&&!x?C:null},[s,i]),f=c&&(c.revisionKind==="format"||c.revisionKind==="structural")?c:null,R=useRef(false);if(useEffect(()=>{if(f){R.current=true;return}R.current&&(R.current=false,d(null));},[f]),o)return null;let y=i?.kind==="format"?"format":"structural";return jsx("div",{ref:t,className:`docx-review__balloon-root${e?` ${e}`:""}`,children:i===null?null:jsx("div",{className:"docx-review__balloon","data-testid":"review-balloon",style:{left:i.left,top:i.above?i.top-6:i.bottom+6,transform:i.above?"translateY(-100%)":void 0},onMouseDown:j,children:f?jsx(P.Provider,{value:f,children:jsxs("div",{className:"docx-review__card","data-testid":"review-balloon-card","data-kind":f.revisionKind??"revision",style:{"--doc-review-author":`var(--doc-review-author-${(n.get(f.author)??0)%yt})`},onClick:()=>l.setActive(f.key),children:[jsxs("div",{className:"docx-review__head",children:[jsx(ie,{}),jsxs("div",{className:"docx-review__meta",children:[jsx(se,{}),jsx(ae,{})]}),f.kind==="revision"&&!f.readOnly?jsxs("div",{className:"docx-review__actions",children:[jsx(Re,{}),jsx(ye,{})]}):null]}),jsx(le,{})]})}):jsxs("div",{className:"docx-review__card","data-testid":"review-balloon-card","data-kind":y,children:[jsxs("div",{className:"docx-review__head",children:[jsx("span",{className:"docx-review__avatar","aria-hidden":"true",children:dn(i.author)}),jsxs("div",{className:"docx-review__meta",children:[jsx("span",{className:"docx-review__author",children:i.author||r("comments.unknown")}),i.date?jsx(un,{raw:i.date}):null]})]}),jsx("div",{className:"docx-review__summary",children:jsx("span",{className:"docx-review__label","data-kind":y,children:r(gt(y))})})]})})})}Oe.docxReviewPart="Balloon";function dn(e){let o=e.trim().split(/\s+/).filter(Boolean);return o.length===0?"?":o.slice(0,2).map(l=>l[0].toUpperCase()).join("")}function un({raw:e}){let o=new Date(e);return Number.isNaN(o.getTime())?null:jsx("time",{className:"docx-review__time",dateTime:e,children:bt.format(o)})}function Le({className:e,hidden:o,children:l}){let s=K();return o?null:jsx("div",{className:`docx-review__empty${e?` ${e}`:""}`,"data-testid":"review-empty",children:l??s("review.empty")})}Le.docxReviewPart="Empty";function He({className:e,asChild:o,hidden:l,children:s}){let{review:n,authorSlots:r}=H(),t=useContext(P),i=useId();if(l||!t)return null;let d=r.get(t.author)??0,m={className:`docx-review__card${e?` ${e}`:""}`,"data-testid":"review-card","aria-labelledby":`${i}-author ${i}-summary`,"data-kind":t.kind==="revision"?t.revisionKind??"revision":t.kind,...t.kind==="custom"&&t.item.kind==="custom"?{"data-node-name":t.item.name}:{},...t.isActive?{"data-active":""}:{},...t.kind==="comment"&&t.resolved?{"data-resolved":""}:{},style:{"--doc-review-author":`var(--doc-review-author-${d%yt})`},tabIndex:0,role:"button",id:i,onMouseDown:c=>{c.target?.closest("[data-review-selectable]")||c.currentTarget.focus({preventScroll:true});},onClick:()=>n.setActive(t.key),onKeyDown:c=>{c.target===c.currentTarget&&(c.key!=="Enter"&&c.key!==" "||(c.preventDefault(),n.setActive(t.key)));}};return o?jsx(Slot,{...m,children:s}):jsx("div",{...m,children:jsx(mn,{children:s})})}He.docxReviewPart="Card";function mn({children:e}){let o=useContext(P),l=useMemo(()=>vn(e),[e]),s=(r,t)=>r in l?l[r]:t;if(!o)return null;if(o.kind==="custom"&&o.item.kind==="custom"){let r=o.item;return jsxs(Fragment,{children:[jsxs("div",{className:"docx-review__head",children:[s("Avatar",null),jsx("div",{className:"docx-review__meta",children:s("Author",jsx("span",{className:"docx-review__author","data-testid":"review-custom-title",children:r.title}))})]}),s("Summary",r.detail?jsx("div",{className:"docx-review__summary","data-testid":"review-summary","data-review-selectable":"",children:jsx("span",{className:"docx-review__text",children:r.detail})}):null),l.__extra]})}let n=o.kind==="revision"&&!o.readOnly;return jsxs(Fragment,{children:[jsxs("div",{className:"docx-review__head",children:[s("Avatar",jsx(ie,{})),jsxs("div",{className:"docx-review__meta",children:[s("Author",jsx(se,{})),s("Time",jsx(ae,{}))]}),n||o.kind==="comment"?jsxs("div",{className:"docx-review__actions",children:[s("Accept",jsx(Re,{})),s("Reject",jsx(ye,{})),s("Delete",jsx(be,{}))]}):null]}),s("Summary",jsx(le,{})),s("Replies",jsx($e,{})),s("Reply",jsx(qe,{})),l.__extra]})}function vn(e){let o={},l=[],s=n=>{if(Array.isArray(n)){n.forEach(s);return}if(!n||typeof n!="object"||!("type"in n)){n&&l.push(n);return}if(n.type===Fragment$1){s(n.props.children);return}let r=n.type.docxReviewPart;r?o[r]=n:l.push(n);};return s(e),l.length>0&&(o.__extra=l),o}function ie({className:e,asChild:o,hidden:l,children:s}){let n=useContext(P);if(l||!n||s===void 0&&!n.initials)return null;let r={className:`docx-review__avatar${e?` ${e}`:""}`,"data-testid":"review-avatar","aria-hidden":true};return o?jsx(Slot,{...r,children:s}):jsx("span",{...r,children:s??n.initials})}ie.docxReviewPart="Avatar";function se({className:e,asChild:o,hidden:l,children:s}){let n=useContext(P),r=K();if(l||!n)return null;let t=n.author||r("comments.unknown"),i={className:`docx-review__author${e?` ${e}`:""}`,"data-testid":"review-author"};return o?jsx(Slot,{...i,children:s}):jsx("span",{...i,children:s??t})}se.docxReviewPart="Author";function ae({className:e,asChild:o,hidden:l,children:s}){let n=useContext(P);if(l||!n)return null;let r=n.date;if(!r)return null;let t=new Date(r);if(Number.isNaN(t.getTime()))return null;let i={className:`docx-review__time${e?` ${e}`:""}`,"data-testid":"review-time",dateTime:r};return o?jsx(Slot,{...i,children:s}):jsx("time",{...i,children:s??bt.format(t)})}ae.docxReviewPart="Time";var bt=new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});function le({className:e,asChild:o,hidden:l,children:s}){let n=useContext(P),r=K();if(l||!n)return null;let t=n.text,i=n.kind!=="revision"?null:r(gt(n.revisionKind)),d=n.kind==="revision"&&n.revisionKind==="replace",m={className:`docx-review__summary${e?` ${e}`:""}`,"data-testid":"review-summary","data-review-selectable":""};return o?jsx(Slot,{...m,children:s}):jsx("div",{...m,children:s??(d?jsxs("span",{className:"docx-review__text",children:[r("review.replaced")," ",jsxs("span",{className:"docx-review__removed",children:['"',n.replacedText,'"']})," ",r("review.replacedWith")," ",jsxs("span",{className:"docx-review__added",children:['"',t,'"']})]}):jsxs(Fragment,{children:[i?jsx("span",{className:"docx-review__label","data-kind":n.kind==="revision"?n.revisionKind:"revision",children:i}):null,t?jsx("span",{className:"docx-review__text",children:t}):null]}))})}le.docxReviewPart="Summary";function gt(e){switch(e){case "insert":return "review.inserted";case "delete":return "review.deleted";case "replace":return "review.replaced";case "moveFrom":return "review.movedFrom";case "moveTo":return "review.movedTo";case "format":return "revisions.runPropertiesChanged";case "paragraphMark":return "revisions.paragraphMarkInserted";default:return "review.structural"}}function Re({className:e,asChild:o,hidden:l,children:s,icon:n}){let{review:r}=H(),t=useContext(P),i=K();if(l||!t||t.kind!=="revision"||t.readOnly)return null;let d=i("review.accept"),m={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-accept","aria-label":d,title:d,onMouseDown:j,onClick:c=>{c.stopPropagation(),r.accept(t);}};return o?jsx(Slot,{...m,children:s}):jsx("button",{...m,children:n??s??J(ut)})}Re.docxReviewPart="Accept";function ye({className:e,asChild:o,hidden:l,children:s,icon:n}){let{review:r}=H(),t=useContext(P),i=K();if(l||!t||t.kind!=="revision"||t.readOnly)return null;let d=i("review.reject"),m={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-reject","aria-label":d,title:d,onMouseDown:j,onClick:c=>{c.stopPropagation(),r.reject(t);}};return o?jsx(Slot,{...m,children:s}):jsx("button",{...m,children:n??s??J(mt)})}ye.docxReviewPart="Reject";function be({className:e,asChild:o,hidden:l,children:s,icon:n}){let{review:r}=H(),t=useContext(P),{t:i}=useTranslation();if(l||!t||t.kind==="custom"||t.kind==="revision"&&t.readOnly)return null;let d=t.kind==="comment"?i("review.deleteComment"):i("review.discardChange"),m={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-delete","aria-label":d,title:d,onMouseDown:j,onClick:c=>{c.stopPropagation(),r.remove(t);}};return o?jsx(Slot,{...m,children:s}):jsx("button",{...m,children:n??s??J(vt)})}be.docxReviewPart="Delete";function $e({className:e,hidden:o}){let{byId:l}=H(),s=useContext(P);if(o||!s||s.kind==="custom")return null;let n=s.replyIds.map(r=>l.get(r)).filter(r=>r!==void 0);return n.length===0?null:jsx("ol",{className:`docx-review__replies${e?` ${e}`:""}`,children:n.map(r=>jsx(P.Provider,{value:r,children:jsxs("li",{className:"docx-review__reply","data-testid":"review-reply",children:[jsxs("div",{className:"docx-review__head",children:[jsx(ie,{}),jsxs("div",{className:"docx-review__meta",children:[jsx(se,{}),jsx(ae,{})]}),jsx("div",{className:"docx-review__actions",children:jsx(be,{})})]}),jsx(le,{})]})},r.key))})}$e.docxReviewPart="Replies";function qe({className:e,hidden:o,children:l}){let{review:s}=H(),n=useContext(P),r=K(),[t,i]=useState(""),[d,m]=useState(false),c=useId(),f=useCallback(()=>{if(!n||t.trim().length===0)return;let R=s.reply(n,t.trim());m(!R),R&&i("");},[n,t,s]);return o||!n||!n.isActive?null:l?jsx(Fragment,{children:l}):jsxs("form",{className:`docx-review__reply-box${e?` ${e}`:""}`,onSubmit:R=>{R.preventDefault(),f();},children:[jsx("label",{className:"docx-editor-sr-only",htmlFor:c,children:r("comments.replyPlaceholder")}),jsx("input",{id:c,"data-testid":"review-reply-input",className:"docx-review__input",value:t,placeholder:r("comments.replyPlaceholder"),...d?{"aria-invalid":true,"data-refused":""}:{},onChange:R=>{m(false),i(R.target.value);},onClick:R=>R.stopPropagation(),onKeyDown:R=>{R.key==="Enter"&&(R.preventDefault(),f());}}),jsxs("div",{className:"docx-review__reply-actions",children:[jsx("button",{type:"button","data-testid":"review-reply-cancel",className:"docx-review__text-button",onMouseDown:j,onClick:R=>{R.stopPropagation(),i(""),m(false),s.setActive(null);},children:r("common.cancel")}),jsx("button",{type:"submit","data-testid":"review-reply-submit",className:"docx-review__submit",disabled:t.trim().length===0,children:r("review.reply")})]}),d?jsx("span",{className:"docx-review__refused",role:"alert","data-testid":"review-reply-refused",children:r("review.replyRefused")}):null]})}qe.docxReviewPart="Reply";var fn=Object.assign(cn,{List:we,Empty:Le,Card:He,Avatar:ie,Author:se,Time:ae,Summary:le,Accept:Re,Reject:ye,Delete:be,Replies:$e,Reply:qe,Markers:Me,AddComment:De,Draft:Se,Balloon:Oe});function ce(e){let o=useDocxEditor();return useMemo(()=>e||(o?.getCustomNodeDefinitions()??[]).filter(j$1),[e,o])}var yn=".docx-content-control-boundary";function ee(e,o){let{node:l,definition:s,controlId:n}=e,r=n?o?.getReviewItems().find(d=>d.kind==="custom"&&d.item.id===n):void 0;if(r&&r.kind==="custom"){let d=r.item;return {...l,attrs:d.attrs,text:d.text,...d.data===void 0?{}:{data:d.data},...n?{nodeId:n}:{}}}let t=n?bn(o,n,s):void 0,i=s.fromDocx?s.fromDocx({attrs:l.attrs,text:"",...t===void 0?{}:{data:t}}):l.attrs;return i===null?null:{...l,attrs:i,...t===void 0?{}:{data:t},...n?{nodeId:n}:{}}}function bn(e$1,o,l){let s=e$1?.surface;if(!s)return;let n=s.session.part(),r=customNodePayloadsByControl(s.session.currentPackage(),n.name).get(o);if(!r)return;let t=e(l.schema,r.data);return t.ok?t.value:void 0}function te(e,o){let l=e?.closest?.(yn),s=l?.closest(".docx-content-control-chrome"),n=s?.getAttribute("data-tag"),r=n?c(n):null;if(!l||!r||!n)return null;let t=o.find(i=>i.tagPrefix===r.prefix&&i.name===r.name);return t?{node:{name:r.name,attrs:r.attrs,tag:n,rect:l.getBoundingClientRect()},definition:t,controlId:s?.getAttribute("data-docx-content-control")??null}:null}var Ve=".docx-content-control-boundary",hn=e=>{if(!k.test(e.tagPrefix)||!k.test(e.name))return [];let o=`${e.tagPrefix}:${e.name}`;return [`.docx-content-control-chrome[data-tag="${o}"]`,`.docx-content-control-chrome[data-tag^="${o}?"]`]};function xn(e){let{onNodeClick:o,onNodeHover:l}=e,s=useDocxEditor(),n=ce(e.nodes);return useEffect(()=>{let r=document.createElement("style"),t=[];for(let i of n){let d=hn(i);if(d.length===0)continue;let m=i.chrome?.color!==void 0&&CSS.supports("color",i.chrome.color)?i.chrome.color:"#2563eb";t.push(`${d.map(c=>`${c} ${Ve}`).join(", ")} {`," pointer-events: auto !important;"," opacity: 1;"," border: none;",` background: color-mix(in srgb, ${m} 12%, transparent);`," border-radius: 6px;"," cursor: default;","}");}return r.textContent=t.join(`
2
+ `),document.head.append(r),()=>r.remove()},[n]),useEffect(()=>{let r=null,t=null,i=f=>te(document.elementFromPoint(f.clientX,f.clientY),n),d=f=>{let R=f.button===0?i(f):null;r=R?.controlId??null,t=R?.node.tag??null;},m=f=>{let R=r,y=t;if(r=null,t=null,y===null)return;let p=i(f);if(!p||p.node.tag!==y||R!==null&&p.controlId!==R)return;let u=ee(p,s);u&&(p.definition.onClick?.(u),o?.(u));},c=f=>{let R=te(f.target,n);if(!R||f.relatedTarget?.closest?.(Ve)===f.target.closest(Ve))return;let p=ee(R,s);p&&(R.definition.onHover?.(p),l?.(p));};return document.addEventListener("pointerdown",d,true),document.addEventListener("pointerup",m,true),document.addEventListener("mouseover",c),()=>{document.removeEventListener("pointerdown",d,true),document.removeEventListener("pointerup",m,true),document.removeEventListener("mouseover",c);}},[n,s,o,l]),null}function Ct(e){let{onEditNode:o,onRemoveRefused:l,remove:s=true}=e,n=ce(e.nodes),r=useContextMenuTarget(),t=useDocxEditor(),{t:i}=useTranslation(),d=useMemo(()=>r?te(r,n):null,[r,n]),m=useMemo(()=>d?ee(d,t):null,[d,t]),c=useMemo(()=>!d?.definition.reviewCard||!m?null:d.definition.reviewCard({attrs:m.attrs,text:m.text??"",...m.data===void 0?{}:{data:m.data}}),[d,m]);if(!d||!m)return null;let{definition:f}=d,R=f.label??f.name,y=f.onEdit!==void 0||o!==void 0,p=s&&m.nodeId!==void 0&&t!==null;return !c&&!y&&!p?null:jsxs(Fragment,{children:[c?jsxs("div",{className:"docx-contextmenu__custom-info","data-testid":"custom-node-info",children:[jsx("span",{className:"docx-contextmenu__custom-title",children:c.title}),c.detail?jsx("span",{className:"docx-contextmenu__custom-detail",children:c.detail}):null]}):null,y?jsx(ContextMenuItem,{label:i("contextMenu.editCustomNode",{label:R}),className:"docx-contextmenu__custom-edit",onSelect:()=>{f.onEdit?.(m),o?.(m,f);}}):null,p?jsx(ContextMenuItem,{label:i("contextMenu.removeCustomNode",{label:R}),className:"docx-contextmenu__custom-remove",onSelect:()=>{let u=q(t,m.nodeId);u.ok||l?.(m,u.reason);}}):null,jsx("div",{role:"separator",className:"docx-toolbar__menu-separator"})]})}Ct.docxRowPlacement="start";export{xn as CustomNodeChrome,Ct as CustomNodeContextMenu,fn as DocxEditorReview,ee as activatedCustomNodeOf,te as resolveCustomNodeActivation,ce as useCustomNodeDefinitions,ve as useReview,en as useReviewItem,at as useReviewOf,Bt as useStackedReviewPositions};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@docx-editor.dev/pro",
3
- "version": "2.3.0",
3
+ "version": "2.3.1",
4
4
  "description": "Commercial capabilities for @docx-editor.dev: the review module (comments, tracked changes, markup rendering) and custom inline nodes over content controls.",
5
5
  "sideEffects": false,
6
6
  "type": "module",