@docx-editor.dev/pro 2.6.1 → 2.8.0

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
- import {j,e,c,q as q$1,k}from'../chunk-TNUAAUFI.js';export{o as reviewModule}from'../chunk-TNUAAUFI.js';import {createContext,useMemo,useEffect,useCallback,useRef,useContext,useState,isValidElement,cloneElement,useId,Children,useSyncExternalStore,Fragment as Fragment$1}from'react';import {useDocxEditor,useEditorState,useTranslation,ReviewRailContext,useReviewGutter,REVIEW_PANE_GUTTER,useReviewAuthors,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 Mn=new Set(["List","Markers","AddComment","Draft","Balloon"]),Tn=new Set(["Card","Empty"]);function Pe(e,o){let l=o==="root"?Mn:Tn,i={},s=[],n=a=>{if(Array.isArray(a)){for(let r of a)n(r);return}if(!isValidElement(a)){a!=null&&a!==false&&s.push(a);return}if(a.type===Fragment$1){n(a.props.children);return}let t=a.type.docxReviewPart;t&&l.has(t)?i[t]=a:s.push(a);};return n(e),{parts:i,rest:s}}function ze(e,o){if(!o)return e;let l=e.props.className;return cloneElement(e,{className:`${o}${l?` ${l}`:""}`})}var Dn={scale:96/72,top:0,left:null,compactCardLeft:null},Sn=16,me=300,On=12,ke=600;function Ot(e,o,l,i,s=false){let[n,a]=useState(Dn);return useEffect(()=>{let t=o.current;if(!e||!t)return;let r=t.offsetParent,c=r?.querySelector(".docx-paginated-surface")??null,f=()=>{a(p=>{let w=c&&r?c.getBoundingClientRect():null,g=w&&r?r.getBoundingClientRect():null,b=w&&g&&r?w.right-g.left-r.clientLeft+r.scrollLeft+Sn:null,R={scale:e.getRenderScale(),top:w&&g&&r?w.top-g.top-r.clientTop+r.scrollTop:0,left:b,compactCardLeft:b===null||!r?null:r.scrollLeft+r.clientWidth-b-me-On};return p.scale===R.scale&&p.top===R.top&&p.left===R.left&&p.compactCardLeft===R.compactCardLeft?p:R});};f();let v=new ResizeObserver(f);if(r&&v.observe(r),c&&v.observe(c),!s||!r)return ()=>v.disconnect();let d=0,u=()=>{d===0&&(d=requestAnimationFrame(()=>{d=0,f();}));};return r.addEventListener("scroll",u,{passive:true}),()=>{d!==0&&cancelAnimationFrame(d),r.removeEventListener("scroll",u),v.disconnect();}},[e,o,l,i,s]),n}function Lt(e,o,l){let[i,s]=useState(null);return useEffect(()=>{let n=o.current,a=n?.offsetParent;if(!a)return;let t=0,r=()=>{t=0,s(d=>{let u=a.scrollTop-ke,p=a.scrollTop+a.clientHeight+ke;return d&&d.top===u&&d.bottom===p?d:{top:u,bottom:p}});},c=0,f=()=>{t===0&&(t=requestAnimationFrame(r)),n?.setAttribute("data-scrolling",""),window.clearTimeout(c),c=window.setTimeout(()=>n?.removeAttribute("data-scrolling"),150);};r(),a.addEventListener("scroll",f,{passive:true});let v=new ResizeObserver(f);return v.observe(a),()=>{t!==0&&cancelAnimationFrame(t),window.clearTimeout(c),a.removeEventListener("scroll",f),v.disconnect();}},[e,o,l]),i}function Ht(e){let o=useRef(new WeakMap),l=useRef(new Map),i=useRef(null),s=useCallback((n,a)=>{let t=l.current.get(a);if(!n){t&&(i.current?.unobserve(t),o.current.delete(t),l.current.delete(a));return}typeof ResizeObserver>"u"||(e(a,n.offsetHeight),i.current??=new ResizeObserver(r=>{for(let c of r){let f=o.current.get(c.target);f&&e(f,c.target.offsetHeight);}}),!(t===n&&o.current.get(n)===a)&&(t&&(i.current.unobserve(t),o.current.delete(t)),o.current.set(n,a),l.current.set(a,n),i.current.observe(n)));},[e]);return useEffect(()=>()=>{i.current?.disconnect(),l.current.clear();},[]),s}function Vn(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 Me(e){let o=useDocxEditor();return qt(o,e)}function qt(e,o){let l=useCallback(R=>{if(!e)return ()=>{};let h=false,N=Vn(()=>{h||R();}),E=e.on("change",N),x=e.on("selectionChange",N),M=e.on("error",N);return ()=>{h=true,E(),x(),M();}},[e]),i=useSyncExternalStore(l,()=>e?`${e.getReviewRevision()}:${e.getEditingMode()}`:"none",()=>"none"),s=useMemo(()=>e?e.getReviewItems(o).filter(R=>R.item.kind!=="custom"||R.item.carded):[],[e,i,o]),n=useMemo(()=>s.find(R=>R.isActive)?.key??null,[s]),a=useCallback((R,h)=>e?e.setActiveReviewItem(R,h).ok:false,[e]),t=useCallback(R=>!e||R.kind!=="revision"||R.readOnly?false:e.acceptReviewItem(R.key).ok,[e]),r=useCallback(R=>!e||R.kind!=="revision"||R.readOnly?false:e.rejectReviewItem(R.key).ok,[e]),c=useCallback(R=>!e||R.kind!=="comment"?false:e.setCommentResolved(R.key,true).ok,[e]),f=useCallback(R=>!e||R.kind!=="comment"?false:e.setCommentResolved(R.key,false).ok,[e]),v=e?.getEditingMode()==="viewing"?"the document is open for viewing":null,d=useCallback(R=>!e||R.kind==="custom"||R.kind==="revision"&&R.readOnly?false:e.deleteReviewItem(R.key).ok,[e]),u=useCallback((R,h,N)=>h.trim().length===0||!e?false:e.replyToReviewItem(R.key,h,N).ok,[e]),p=useMemo(()=>e?e.getSelectionPlacement()?.anchorY??null:null,[e,i]),w=useCallback((R,h)=>R.trim().length===0||!e?false:e.addComment(R,h).ok,[e]),g=useMemo(()=>e?e.isReviewPaneOpen():true,[e,i]),b=useCallback(R=>{!e||e.isReviewPaneOpen()===R||e.exec({type:"toggleReviewPane"});},[e]);return useMemo(()=>({items:s,activeKey:n,setActive:a,accept:t,reject:r,resolve:c,reopen:f,commentResolutionDisabledReason:v,remove:d,reply:u,selectionAnchorY:p,comment:w,paneOpen:g,setPaneOpen:b,ready:e!==null&&!e.snapshot().isLoading&&e.snapshot().parseError===null}),[s,n,a,t,r,c,f,v,d,u,p,w,g,b,e])}function $n(e,o,l={}){let i=l.gap??8,s=l.scale??1,n=l.defaultHeight??0;return useMemo(()=>{let a=new Map,t=Number.NEGATIVE_INFINITY;for(let r of e){let c=r.anchorY===null?Number.isFinite(t)?t:0:Math.max(r.anchorY,t);a.set(r.key,c),t=c+((o.get(r.key)??n)+i)/s;}return a},[e,o,i,s,n])}var Qe=8;function Xe(e,o){return e?.color??`var(--doc-review-author-${o%Qe})`}function ne(e,o,l){return e?{"--doc-review-author-current":Xe(o,l)}:{}}function ve(e,o){return (e?.slot??o)%Qe}function Kt(e,o,l,i){let s=useRef(new Map);return useMemo(()=>{let n=new Map;for(let t of e)n.set(t.author,t);let a=[...o.map(t=>t.author),i?.getConfiguredAuthor()];for(let t of a){if(!t||n.has(t))continue;let r=l.get(t)??0,c=i?.getReviewAuthorStyle(t),f=c?.color??`var(--doc-review-author-${r%Qe})`,v=s.current.get(t),d=v!==void 0&&v.slot===r&&v.color===f&&v.style===c?v:{author:t,slot:r,color:f,...c?{style:c}:{}};s.current.set(t,d),n.set(t,d);}return n},[e,o,l,i])}var q=e=>jsx("svg",{viewBox:"0 -960 960 960",width:16,height:16,"aria-hidden":"true",focusable:"false",children:jsx("path",{d:e,fill:"currentColor"})}),$t="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",Vt="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",Fn="M880-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",fe="M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z",De=()=>jsxs("span",{className:"docx-review__resolved-icon",children:[jsx("span",{className:"docx-review__resolved-comment",children:q(Fn)}),jsx("span",{className:"docx-review__resolved-tick",children:q(fe)})]}),Yt="M480-160q-134 0-227-93t-93-227q0-134 93-227t227-93q69 0 132 28.5T720-690v-110h80v280H520v-80h168q-32-56-87.5-88T480-720q-100 0-170 70t-70 170q0 100 70 170t170 70q77 0 139-44t87-116h84q-28 106-114 173t-196 67Z",Zt="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",Bn="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",Un="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",jn="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",Wn="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 Bt(e){if(e.kind==="comment")return Vt;if(e.kind==="custom")return e.item.icon??Wn;switch(e.revisionKind){case "insert":case "moveTo":return Bn;case "delete":case "moveFrom":return Un;case "format":return jn;default:return Vt}}function Xn(e,o){return typeof o!="function"?e:typeof e!="function"?o:l=>{e(l),l.defaultPrevented||o(l);}}function Jn(e,o){let l={...e,...o};for(let i of Object.keys(e))/^on[A-Z]/.test(i)?l[i]=Xn(o[i],e[i]):i==="className"?l[i]=[e[i],o[i]].filter(Boolean).join(" "):i==="style"&&(l[i]={...e[i],...o[i]});return l}function Wt(e){return e==="Enter"||e===" "}function eo(e){return Wt(e.key)?(e.preventDefault(),e.stopPropagation(),true):false}function jt(e){return e.type==="button"}function to(e,o){return e.type==="a"||o.href!=null}function no(e,o,l,i){let s=n=>{typeof l=="function"&&l(n);};return {onClick:n=>{typeof e=="function"&&e(n),n.defaultPrevented||s(n),i&&n.preventDefault();},onKeyDown:n=>{if(typeof o=="function"&&o(n),!Wt(n.key))return;n.defaultPrevented||s(n),i&&n.preventDefault();}}}function Q({engineDisabled:e,disabledReason:o,slotProps:l,children:i}){let s=Children.only(i);if(!isValidElement(s))return null;let n=s.props,a=Jn(l,n);if(!e){if(!jt(s)){let t=no(n.onClick,n.onKeyDown,l.onClick,to(s,n));a.onClick=t.onClick,a.onKeyDown=t.onKeyDown;}return cloneElement(s,a)}if(jt(s))a.disabled=true,delete a["aria-disabled"];else {delete a.disabled,a["aria-disabled"]=true,a["data-disabled"]="",a.tabIndex=-1,a.href=void 0,a.role===void 0&&(a.role="button");let t=a.onKeyDown;a.onKeyDown=r=>{eo(r)||typeof t=="function"&&t(r);};}return o&&(a.title=o),a.onClick=t=>{t.preventDefault(),t.stopPropagation();},cloneElement(s,a)}var Qt=createContext({key:null,open:()=>{},close:()=>{}});function Xt({items:e,children:o}){let[l,i]=useState(null);useEffect(()=>{l!==null&&!e.some(n=>n.key===l&&n.kind==="comment"&&n.resolved)&&i(null);},[e,l]);let s=useMemo(()=>({key:l,open:n=>i(n),close:()=>i(null)}),[l]);return jsx(Qt.Provider,{value:s,children:o})}function Je(){return useContext(Qt)}function Jt({label:e,statusLabel:o,entryKey:l,onActivate:i,onDeactivate:s,children:n,...a}){let t=Je(),r=useRef(null);return useEffect(()=>{let c=f=>{let v=r.current;v?.open&&f.target instanceof Node&&!v.contains(f.target)&&(t.close(),s());};return document.addEventListener("pointerdown",c,true),()=>document.removeEventListener("pointerdown",c,true)},[t,s]),jsxs("details",{ref:r,...a,open:t.key===l,onToggle:c=>{c.currentTarget.open?(t.open(l),i()):(t.close(),s());},children:[jsxs("summary",{className:"docx-review__resolved-toggle","aria-label":e,children:[jsx("span",{className:"docx-review__resolved-status",children:o}),De()]}),n]})}function en(e){function o({className:i,asChild:s,hidden:n,children:a,icon:t}){let r=e.useReview(),c=e.useItem(),f=e.useLabel();if(n||!c||c.kind!=="comment"||c.resolved)return null;let v=f("comments.resolve"),d=r.commentResolutionDisabledReason!==null,u=d?f("editingMode.viewingHint"):null,p={type:"button",className:`docx-review__action${i?` ${i}`:""}`,"data-testid":"review-resolve","aria-label":v,title:u??v,disabled:d,onMouseDown:e.guardMousedown,onClick:w=>{w.stopPropagation(),!d&&r.resolve(c);}};return s?jsx(Q,{engineDisabled:d,disabledReason:u,slotProps:p,children:a}):jsx("button",{...p,children:t??a??q(fe)})}o.docxReviewPart="Resolve";function l({className:i,asChild:s,hidden:n,children:a,icon:t}){let r=e.useReview(),c=e.useItem(),f=e.useLabel();if(n||!c||c.kind!=="comment"||!c.resolved)return null;let v=f("comments.reopen"),d=r.commentResolutionDisabledReason!==null,u=d?f("editingMode.viewingHint"):null,p={type:"button",className:`docx-review__action${i?` ${i}`:""}`,"data-testid":"review-reopen","aria-label":v,title:u??v,disabled:d,onMouseDown:e.guardMousedown,onClick:w=>{w.stopPropagation(),!d&&r.reopen(c);}};return s?jsx(Q,{engineDisabled:d,disabledReason:u,slotProps:p,children:a}):jsx("button",{...p,children:t??a??q(Yt)})}return l.docxReviewPart="Reopen",{ReviewResolve:o,ReviewReopen:l}}function on(e){function o({top:i=0,left:s=null,className:n,hidden:a}){let{review:t,endDraft:r,measure:c,readOnly:f,draftAuthor:v,draftAuthorInfo:d,draftAuthorSlot:u}=e.useRail(),p=e.useLabel(),[w,g]=useState(""),[b,R]=useState(false),h=useRef(null),N=useId();useEffect(()=>{f||h.current?.focus({preventScroll:true});},[]);let E=useCallback(()=>{if(f||w.trim().length===0)return;let x=t.comment(w.trim());R(!x),x&&(g(""),r());},[f,w,t,r]);return a?null:jsx("div",{className:`docx-review__slot${n?` ${n}`:""}${s===null?"":" docx-review__slot--compact"}`,style:{position:"absolute",top:i,...s===null?{}:{left:s,width:me}},ref:x=>{c(x,e.composeKey);},children:jsx("div",{className:"docx-review__card","data-testid":"review-draft","data-draft":"",...v?{"data-review-author":v,"data-review-author-slot":u}:{},style:ne(v??void 0,d,u),children:jsxs("form",{className:"docx-review__reply-box",onSubmit:x=>{x.preventDefault(),E();},children:[jsx("label",{className:"docx-editor-sr-only",htmlFor:N,children:p("comments.addComment")}),jsx("input",{id:N,ref:h,"data-testid":"review-draft-input",className:"docx-review__input",value:w,placeholder:p("comments.addComment"),readOnly:f,...b?{"aria-invalid":true}:{},onChange:x=>{f||(R(false),g(x.target.value));},onKeyDown:x=>{if(x.key==="Escape"){x.preventDefault(),r();return}f||x.key!=="Enter"||(x.preventDefault(),E());}}),jsxs("div",{className:"docx-review__reply-actions",children:[jsx("button",{type:"button","data-testid":"review-draft-cancel",className:"docx-review__text-button",onMouseDown:e.guardMousedown,onClick:r,children:p("common.cancel")}),jsx("button",{type:"submit","data-testid":"review-draft-submit",className:"docx-review__submit",disabled:f||w.trim().length===0,title:f?p("editingMode.viewingHint"):void 0,children:p("common.comment")})]}),b?jsx("span",{className:"docx-review__refused",role:"alert",children:p("review.commentRefused")}):null]})})})}o.docxReviewPart="Draft";function l({className:i,hidden:s,children:n}){let{review:a,readOnly:t}=e.useRail(),r=e.useItem(),c=e.useLabel(),[f,v]=useState(""),[d,u]=useState(false),p=useId(),w=useCallback(()=>{if(!r||t||f.trim().length===0)return;let g=a.reply(r,f.trim());u(!g),g&&v("");},[r,t,f,a]);return s||!r||!r.isActive||r.kind==="comment"&&r.resolved?null:n?jsx(Fragment,{children:n}):jsxs("form",{className:`docx-review__reply-box${i?` ${i}`:""}`,onSubmit:g=>{g.preventDefault(),w();},children:[jsx("label",{className:"docx-editor-sr-only",htmlFor:p,children:c("comments.replyPlaceholder")}),jsx("input",{id:p,"data-testid":"review-reply-input",className:"docx-review__input",value:f,placeholder:c("comments.replyPlaceholder"),readOnly:t,...d?{"aria-invalid":true,"data-refused":""}:{},onChange:g=>{t||(u(false),v(g.target.value));},onClick:g=>g.stopPropagation(),onKeyDown:g=>{t||g.key!=="Enter"||(g.preventDefault(),w());}}),jsxs("div",{className:"docx-review__reply-actions",children:[jsx("button",{type:"button","data-testid":"review-reply-cancel",className:"docx-review__text-button",onMouseDown:e.guardMousedown,onClick:g=>{g.stopPropagation(),v(""),u(false),a.setActive(null);},children:c("common.cancel")}),jsx("button",{type:"submit","data-testid":"review-reply-submit",className:"docx-review__submit",disabled:t||f.trim().length===0,title:t?c("editingMode.viewingHint"):void 0,children:c("review.reply")})]}),d?jsx("span",{className:"docx-review__refused",role:"alert","data-testid":"review-reply-refused",children:c("review.replyRefused")}):null]})}return l.docxReviewPart="Reply",{ReviewDraft:o,ReviewReply:l}}function et(e,o){if(e==="paragraphMark")return o==="delete"?"revisions.paragraphMarkDeleted":o==="moveFrom"?"revisions.paragraphMarkMovedFrom":o==="moveTo"?"revisions.paragraphMarkMovedTo":"revisions.paragraphMarkInserted";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";default:return "review.structural"}}var go=e=>e.isLoading||e.parseError!==null||e.pageSetup==null,bo=e=>e.editingMode==="viewing",ot=createContext(null),P=createContext(null);function ho(){return useContext(P)}function xo(e){let{authorInfo:o}=H();return e===void 0?void 0:o.get(e)}var Le="\0compose",Co=72,No=64,Eo=480,_o=30,Ao=Object.freeze({placement:false});function rt(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 it(e){return new Set(e.map(o=>o.id))}function F(e){let o=e.target?.tagName;o==="INPUT"||o==="SELECT"||o==="TEXTAREA"||e.preventDefault();}function H(){let e=useContext(ot);return e||Io}function K(){let{t:e}=useContext(ot)??{},{t:o}=useTranslation();return useCallback(l=>e?.(l)??o(l),[e,o])}var{ReviewResolve:cn,ReviewReopen:un}=en({useReview:()=>H().review,useItem:()=>useContext(P),useLabel:K,guardMousedown:F}),{ReviewDraft:dn,ReviewReply:mn}=on({useRail:H,useItem:()=>useContext(P),useLabel:K,guardMousedown:F,composeKey:Le}),Io={t:void 0,cardClassName:void 0,readOnly:false,review:{items:[],activeKey:null,setActive:()=>false,accept:()=>false,reject:()=>false,resolve:()=>false,reopen:()=>false,commentResolutionDisabledReason:null,remove:()=>false,reply:()=>false,selectionAnchorY:null,comment:()=>false,paneOpen:true,setPaneOpen:()=>{},ready:false},allItems:[],authorSlots:new Map,authorInfo:new Map,draftAuthor:null,draftAuthorInfo:void 0,draftAuthorSlot:0,byId:new Map,measure:()=>{},beginDraft:()=>{},endDraft:()=>{}};function Po({className:e,furniture:o,asChild:l,hidden:i,children:s,t:n,card:a,preset:t=true,stack:r=true,gap:c=8,filter:f,structural:v=false,formatting:d=false}){let u=useDocxEditor(),p=useEditorState(go),w=useEditorState(bo),g=useMemo(()=>{let y=[];return v||y.push("structural"),d||y.push("format"),y.length>0?y:void 0},[v,d]),b=useMemo(()=>g?{excludeRevisionKinds:g}:void 0,[g]);useEffect(()=>(u?.setReviewActivationExclusions(g??null),()=>u?.setReviewActivationExclusions(null)),[u,g]);let R=Me(Ao),h=Me(b),N=h.setPaneOpen,{t:E}=useTranslation(),x=useCallback(y=>n?.(y)??E(y),[n,E]),M=useRef(null),J=useContext(ReviewRailContext);useEffect(()=>J?.register(),[J]);let B=h.paneOpen,le=useReviewGutter(),ee=B&&le.inlineEnd>0&&le.inlineEnd<REVIEW_PANE_GUTTER,Ce=B&&!ee,S=useMemo(()=>f?h.items.filter(y=>f(y)):h.items,[h.items,f]),V=u?.getConfiguredAuthor()??null,Ne=useMemo(()=>{let y=new Map;for(let C of S)C.author&&!y.has(C.author)&&y.set(C.author,y.size);return V&&!y.has(V)&&y.set(V,y.size),y},[S,V]),vt=useMemo(()=>{let y=new Map;for(let C of S)y.set(C.id,C);return y},[S]),[ft,yn]=useState(()=>new Map),gn=useCallback((y,C)=>{C<=0||yn(A=>{if(A.get(y)===C)return A;let T=new Map(A);return T.set(y,C),T});},[]),pt=Ht(gn),I=Ot(u,M,S,!p&&!i,ee),ce=Lt(u,M,!p&&!i);useEffect(()=>{let y=M.current;if(!u||!y)return;let C=A=>{let T=A.target;if(!(T instanceof Node)||y.contains(T))return;let D=y.offsetParent;!D||!D.contains(T)||D.querySelector(".docx-paginated-surface")?.contains(T)||u.setActiveReviewItem(null);};return document.addEventListener("mousedown",C,true),()=>document.removeEventListener("mousedown",C,true)},[u,p,i]);let[Y,Ye]=useState(null),Ze=useRef(null),U=useCallback(()=>{let y=Ze.current;y&&(y.editor.releaseSelection(y.pin),Ze.current=null);},[]),Ee=useCallback(()=>{if(!u||w)return;let y=u.getSelectionPlacement()?.anchorY??null;if(y===null)return;U();let C=u.retainSelection();C&&(Ze.current={editor:u,pin:C},N(true),Ye(y));},[u,w,U,N]);useEffect(()=>{if(!(i||w))return J?.registerCommentDraft(Ee)},[Ee,i,w,J]);let wt=useCallback(()=>{U(),Ye(null),u?.focus();},[u,U]);useEffect(()=>U,[U]),useEffect(()=>{B||Y===null||(U(),Ye(null));},[B,Y,U]);let Fe=Y??h.selectionAnchorY,Z=useMemo(()=>{let y=it(S);return S.filter(C=>!rt(C,y))},[S]),Rt=useMemo(()=>{if(Y===null)return Z;let y=Z.findIndex(A=>A.anchorY!==null&&A.anchorY>Y),C={key:Le,anchorY:Y};return y===-1?[...Z,C]:[...Z.slice(0,y),C,...Z.slice(y)]},[Z,Y]),yt=useMemo(()=>{let y=new Map(ft);for(let C of Z){if(y.has(C.key))continue;let A=C.text.length+(C.kind==="revision"?C.replacedText?.length??0:0),T=Math.min(6,Math.max(1,Math.ceil(A/36)));y.set(C.key,64+T*20);}return y},[ft,Z]),{stacked:Be,collapsedKeys:gt}=useMemo(()=>{let y=I.scale,C=new Map,A=new Set,T=Number.NEGATIVE_INFINITY;for(let D of Rt){let Ie=D.anchorY===null?Number.isFinite(T)?T:0:Math.max(D.anchorY,T);C.set(D.key,Ie);let Nn=D.anchorY===null?0:(Ie-D.anchorY)*y,En="isActive"in D&&D.isActive,It=Nn>Eo&&!En&&D.key!==Le;It&&A.add(D.key);let _n=It?No:yt.get(D.key)??Co;T=Ie+(_n+c)/y;}return {stacked:C,collapsedKeys:A}},[Rt,yt,c,I.scale]),Ue=Fe===null?null:I.top+(ee?Fe:Be.get(Le)??Fe)*I.scale,ue=a?.className,bn=useReviewAuthors(),je=Kt(bn,S,Ne,u),bt=V?Ne.get(V)??0:0,ht=V?je.get(V):void 0,hn=useMemo(()=>({t:n,cardClassName:ue,readOnly:w,review:{...h,items:S},allItems:R.items,authorSlots:Ne,authorInfo:je,draftAuthor:V,draftAuthorInfo:ht,draftAuthorSlot:bt,byId:vt,measure:pt,beginDraft:Ee,endDraft:wt}),[n,ue,w,h,R.items,S,Ne,je,V,ht,bt,vt,pt,Ee,wt]);if(i||p)return null;let xt={ref:M,className:`docx-review${e?` ${e}`:""}`,"data-testid":"review-rail","data-count":S.length,"data-open":Ce?"":void 0,"data-compact":ee?"":void 0,role:"complementary","aria-label":x("review.ariaLabel"),onMouseDown:F,style:I.left===null?void 0:{left:I.left,right:"auto"}},W=typeof s=="function"?{parts:{},rest:s}:Pe(s,"root"),z=W.parts,de=(y,C)=>{if(!(y in z))return C;let A=z[y];return !isValidElement(A)||!isValidElement(C)?A:cloneElement(A,{...C.props,...A.props})},Ct=jsxs(Fragment,{children:[t||"AddComment"in z?de("AddComment",jsx(at,{top:Ue,drafting:Y!==null})):null,!B||Y===null||Ue===null||!t&&!("Draft"in z)?null:de("Draft",jsx(dn,{top:Ue,left:ee?I.compactCardLeft:null})),t||"Balloon"in z?de("Balloon",jsx(lt,{})):null]}),xn=jsx(He,{stack:r,positions:Be,collapsed:gt,scale:I.scale,offset:I.top,window:ce,children:W.rest}),Nt=jsx(st,{scale:I.scale,offset:I.top,window:ce}),G=ee?Z.find(y=>y.key===h.activeKey)??null:null,Et=G===null?null:G.anchorY!==null?I.top+G.anchorY*I.scale:ce!==null?ce.top+ke+24:null,_e=l?null:W.rest,Ae=typeof _e=="function"?null:Pe(_e,"list"),_t=typeof _e=="function"?G&&_e(G):Ae?.parts.Card&&isValidElement(Ae.parts.Card)?ze(Ae.parts.Card,ue):t?jsx(qe,{...ue?{className:ue}:{},children:Ae?.rest}):null,At=G&&Et!==null&&I.compactCardLeft!==null&&_t?jsx(P.Provider,{value:G,children:jsx("div",{className:"docx-review__slot docx-review__slot--compact","data-testid":"review-compact-card",style:{position:"absolute",top:Et,left:I.compactCardLeft,width:me},children:_t})}):null,Cn=Ce?t||"List"in z?de("List",xn):typeof W.rest=="function"?null:W.rest:t||"Markers"in z?jsxs(Fragment,{children:[de("Markers",Nt),At]}):typeof W.rest=="function"?null:W.rest;return jsx(Xt,{items:S,children:jsx(ot.Provider,{value:hn,children:l&&isValidElement(s)?jsx(Slot,{...xt,children:cloneElement(s,void 0,s.props.children,t?Ce?jsx(He,{stack:r,positions:Be,collapsed:gt,scale:I.scale,offset:I.top,window:ce}):jsxs(Fragment,{children:[Nt,At]}):null,Ct)}):jsxs("aside",{...xt,children:[Ce&&o!==void 0?jsx("div",{className:"docx-review__furniture","data-testid":"review-furniture",children:o}):null,Cn,Ct]})})})}function He({stack:e=true,positions:o,collapsed:l,scale:i=1,offset:s=0,window:n=null,children:a,className:t,hidden:r}){let{review:c,measure:f,cardClassName:v}=H();if(r)return null;let d=typeof a=="function"?null:Pe(a,"list"),u=it(c.items),p=c.items.filter(w=>!rt(w,u));return p.length===0?typeof a=="function"?null:d?.parts.Empty??jsx(ct,{}):jsx("div",{className:`docx-review__list${t?` ${t}`:""}`,children:p.map(w=>{let g=e?o?.get(w.key)??w.anchorY:w.anchorY,b=g==null?null:s+g*i;if(b!==null&&n&&(b<n.top||b>n.bottom))return null;let R=b===null?{}:{position:"absolute",top:b};return jsx(P.Provider,{value:w,children:jsx("div",{className:"docx-review__slot",style:R,...l?.has(w.key)?{"data-collapsed":""}:{},ref:h=>{f(h,w.key);},children:typeof a=="function"?a(w):d?.parts.Card&&isValidElement(d.parts.Card)?ze(d.parts.Card,v):jsx(qe,{...v?{className:v}:{},children:d?.rest})})},w.key)})})}He.docxReviewPart="List";function st({scale:e=1,offset:o=0,window:l=null,className:i,hidden:s,icon:n}){let{review:a,authorSlots:t,authorInfo:r}=H(),c=Je(),f=K(),{roots:v,stackedTops:d}=useMemo(()=>{let u=it(a.items),p=a.items.filter(b=>!rt(b,u)),w=new Map,g=Number.NEGATIVE_INFINITY;for(let b of p){if(b.anchorY===null)continue;let R=Math.max(o+b.anchorY*e,g);w.set(b.key,R),g=R+_o;}return {roots:p,stackedTops:w}},[a.items,o,e]);return s?null:jsx("div",{className:`docx-review__markers${i?` ${i}`:""}`,children:v.map(u=>{let p=d.get(u.key);return p===void 0||l&&(p<l.top||p>l.bottom)?null:jsx("button",{type:"button",className:"docx-review__marker","data-testid":"review-marker","data-kind":u.kind==="revision"?u.revisionKind:u.kind,...u.author?{"data-review-author":u.author,"data-review-author-slot":ve(r.get(u.author),t.get(u.author)??0)}:{},style:{position:"absolute",top:p,...u.author?{"--doc-review-author-current":Xe(r.get(u.author),t.get(u.author)??0)}:{}},title:u.author?`${u.author}: ${u.text}`:u.text,"aria-label":`${f("review.showPane")}: ${u.author?`${u.author}. `:""}${u.text}`,onMouseDown:F,onClick:()=>{u.kind==="comment"&&u.resolved&&c.open(u.key),a.setPaneOpen(true),a.setActive(u.key);},children:(typeof n=="function"?n(u):n)??(u.kind==="comment"&&u.resolved?De():q(Bt(u)))},u.key)})})}st.docxReviewPart="Markers";function at({top:e=null,drafting:o=false,className:l,hidden:i,children:s}){let{beginDraft:n,readOnly:a}=H(),t=K();if(i||o||e===null||a)return null;let r={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:F,onClick:n};return s?jsx(Slot,{...r,children:s}):jsx("button",{...r,children:q($t)})}at.docxReviewPart="AddComment";function lt({className:e,hidden:o}){let{review:l,allItems:i,authorSlots:s,authorInfo:n}=H(),a=K(),t=useRef(null),[r,c]=useState(null),f=useRef(false);f.current=r!==null,useEffect(()=>{let w=t.current,g=w?.closest(".docx-review"),b=g?.closest(".docx-editor__scroll-container")??g?.offsetParent;if(!w||!g||!b)return;let R=(N,E)=>{let x=g.getBoundingClientRect(),M=N.getBoundingClientRect(),J=N.ownerDocument.defaultView?.innerHeight??1/0,B=Number(N.dataset.start),le=Number(N.dataset.end);c({revisionId:N.dataset.revisionId,author:N.dataset.reviewAuthor??"",...N.dataset.revisionDate!==void 0?{date:N.dataset.revisionDate}:{},...N.dataset.revisionKind!==void 0?{kind:N.dataset.revisionKind}:{},structuralSite:E,...N.dataset.paragraphId!==void 0?{paragraphId:N.dataset.paragraphId}:{},...Number.isFinite(B)?{start:B}:{},...Number.isFinite(le)?{end:le}:{},left:M.left-x.left,top:M.top-x.top,bottom:M.bottom-x.top,above:M.bottom+220>J});},h=N=>{let E=N.target;if(!(E instanceof Element)||w.contains(E))return;let x=E.closest("[data-revision-id]");if(x instanceof HTMLElement&&b.contains(x)){let M=x.classList.contains("docx-table-row--revision");if(x.dataset.revisionKind==="format"||M){R(x,M);return}}f.current&&c(null);};return b.addEventListener("pointerdown",h,true),b.addEventListener("mousedown",h,true),()=>{b.removeEventListener("pointerdown",h,true),b.removeEventListener("mousedown",h,true);}},[]);let v=useMemo(()=>{if(!r)return null;let w=null,g=false,b=null,R=false,h=null,N=false;for(let E of i)if(!(E.kind!=="revision"||E.item.kind!=="revision")){for(let x of E.item.addresses)if(x.id===r.revisionId){if(x.author===r.author){if(x.date===r.date)return E;w===null?w=E:w!==E&&(g=true);}b===null?b=E:b!==E&&(R=true);}if(r.paragraphId!==void 0&&r.start!==void 0&&r.end!==void 0&&(E.revisionKind==="format"||E.revisionKind==="structural")){for(let x of E.item.ranges)if(x.start.paragraphId===r.paragraphId&&x.start.offset<r.end&&x.end.offset>r.start){h===null?h=E:h!==E&&(N=true);break}}}return w!==null&&!g?w:b!==null&&!R?b:h!==null&&!N?h:null},[i,r]),d=v&&(v.revisionKind==="format"||v.revisionKind==="structural")?v:null,u=useRef(false);if(useEffect(()=>{if(d){u.current=true;return}u.current&&(u.current=false,c(null));},[d]),o)return null;let p=r?.kind==="format"?"format":"structural";return jsx("div",{ref:t,className:`docx-review__balloon-root${e?` ${e}`:""}`,children:r===null?null:jsx("div",{className:"docx-review__balloon","data-testid":"review-balloon",style:{left:r.left,top:r.above?r.top-6:r.bottom+6,transform:r.above?"translateY(-100%)":void 0},onMouseDown:F,children:d?jsx(P.Provider,{value:d,children:jsxs("div",{className:"docx-review__card","data-testid":"review-balloon-card","data-kind":d.revisionKind??"revision",...d.author?{"data-review-author":d.author,"data-review-author-slot":ve(n.get(d.author),s.get(d.author)??0)}:{},style:ne(d.author,n.get(d.author),s.get(d.author)??0),onClick:()=>l.setActive(d.key),children:[jsxs("div",{className:"docx-review__head",children:[jsx(Re,{}),jsxs("div",{className:"docx-review__meta",children:[jsx(ye,{}),jsx(ge,{})]}),d.kind==="revision"&&!d.readOnly?jsxs("div",{className:"docx-review__actions",children:[jsx(Ke,{}),jsx(Ve,{})]}):null]}),jsx(be,{})]})}):jsxs("div",{className:"docx-review__card","data-testid":"review-balloon-card","data-kind":p,...r.author?{"data-review-author":r.author,"data-review-author-slot":ve(n.get(r.author),s.get(r.author)??0)}:{},style:ne(r.author,n.get(r.author),s.get(r.author)??0),children:[jsxs("div",{className:"docx-review__head",children:[jsx("span",{className:"docx-review__avatar","aria-hidden":"true",children:ko(r.author)}),jsxs("div",{className:"docx-review__meta",children:[jsx("span",{className:"docx-review__author",children:r.author||a("comments.unknown")}),r.date?jsx(Mo,{raw:r.date}):null]})]}),jsx("div",{className:"docx-review__summary",children:jsx("span",{className:"docx-review__label","data-kind":p,children:a(et(p))})})]})})})}lt.docxReviewPart="Balloon";function ko(e){let o=e.trim().split(/\s+/).filter(Boolean);return o.length===0?"?":o.slice(0,2).map(l=>l[0].toUpperCase()).join("")}function Mo({raw:e}){let o=new Date(e);return Number.isNaN(o.getTime())?null:jsx("time",{className:"docx-review__time",dateTime:e,children:vn.format(o)})}function ct({className:e,hidden:o,children:l}){let i=K();return o?null:jsx("div",{className:`docx-review__empty${e?` ${e}`:""}`,"data-testid":"review-empty",children:l??i("review.empty")})}ct.docxReviewPart="Empty";function qe({className:e,asChild:o,hidden:l,children:i}){let{review:s,authorSlots:n,authorInfo:a}=H(),t=useContext(P),r=useId(),c=K();if(l||!t)return null;let f=n.get(t.author)??0,v=!o&&t.kind==="comment"&&t.resolved,d={className:`docx-review__card${e?` ${e}`:""}`,"data-testid":"review-card",...v?{}:{"aria-labelledby":`${r}-author ${r}-summary`},"data-kind":t.kind==="revision"?t.revisionKind??"revision":t.kind,...t.author?{"data-review-author":t.author,"data-review-author-slot":ve(a.get(t.author),f)}:{},...t.kind==="custom"&&t.item.kind==="custom"?{"data-node-name":t.item.name}:{},...t.isActive?{"data-active":""}:{},...t.kind==="comment"&&t.resolved?{"data-resolved":""}:{},...v?{"data-resolved-miniature":""}:{},style:ne(t.author,a.get(t.author),f),...v?{}:{tabIndex:0,role:"button"},id:r,...v?{}:{onMouseDown:u=>{u.target?.closest("[data-review-selectable]")||u.currentTarget.focus({preventScroll:true});},onClick:()=>s.setActive(t.key),onKeyDown:u=>{u.target===u.currentTarget&&(u.key!=="Enter"&&u.key!==" "||(u.preventDefault(),s.setActive(t.key)));}}};return o?jsx(Slot,{...d,children:i}):v?jsx(Jt,{...d,label:c("review.showResolvedComment"),statusLabel:c("review.resolved"),entryKey:t.key,onActivate:()=>s.setActive(t.key),onDeactivate:()=>s.setActive(null),children:jsx(an,{children:i})}):jsx("div",{...d,children:jsx(an,{children:i})})}qe.docxReviewPart="Card";function an({children:e}){let o=useContext(P),l=useMemo(()=>To(e),[e]),i=(n,a)=>n in l?l[n]:a;if(!o)return null;if(o.kind==="custom"&&o.item.kind==="custom"){let n=o.item;return jsxs(Fragment,{children:[jsxs("div",{className:"docx-review__head",children:[i("Avatar",null),jsx("div",{className:"docx-review__meta",children:i("Author",jsx("span",{className:"docx-review__author","data-testid":"review-custom-title",children:n.title}))})]}),i("Summary",n.detail?jsx("div",{className:"docx-review__summary","data-testid":"review-summary","data-review-selectable":"",children:jsx("span",{className:"docx-review__text",children:n.detail})}):null),l.__extra]})}let s=o.kind==="revision"&&!o.readOnly;return jsxs(Fragment,{children:[jsxs("div",{className:"docx-review__head",children:[i("Avatar",jsx(Re,{})),jsxs("div",{className:"docx-review__meta",children:[i("Author",jsx(ye,{})),i("Time",jsx(ge,{}))]}),s||o.kind==="comment"?jsxs("div",{className:"docx-review__actions",children:[i("Accept",jsx(Ke,{})),i("Reject",jsx(Ve,{})),i("Resolve",jsx(cn,{})),i("Reopen",jsx(un,{})),i("Delete",jsx($e,{}))]}):null]}),i("Summary",jsx(be,{})),i("Replies",jsx(ut,{})),i("Reply",jsx(mn,{})),l.__extra]})}function To(e){let o={},l=[],i=s=>{if(Array.isArray(s)){s.forEach(i);return}if(!s||typeof s!="object"||!("type"in s)){s&&l.push(s);return}if(s.type===Fragment$1){i(s.props.children);return}let n=s.type.docxReviewPart;n?o[n]=s:l.push(s);};return i(e),l.length>0&&(o.__extra=l),o}function Re({className:e,asChild:o,hidden:l,children:i}){let{authorInfo:s}=H(),n=useContext(P);if(l||!n||i===void 0&&!n.initials)return null;let a={className:`docx-review__avatar${e?` ${e}`:""}`,"data-testid":"review-avatar","aria-hidden":true};if(o)return jsx(Slot,{...a,children:i});let t=s.get(n.author)?.style?.avatarUrl,r=i??(t?jsx("img",{className:"docx-review__avatar-img",src:t,alt:"",loading:"lazy",decoding:"async",referrerPolicy:"no-referrer"}):void 0)??n.initials;return jsx("span",{...a,children:r})}Re.docxReviewPart="Avatar";function ye({className:e,asChild:o,hidden:l,children:i}){let s=useContext(P),n=K();if(l||!s)return null;let a=s.author||n("comments.unknown"),t={className:`docx-review__author${e?` ${e}`:""}`,"data-testid":"review-author"};return o?jsx(Slot,{...t,children:i}):jsx("span",{...t,children:i??a})}ye.docxReviewPart="Author";function ge({className:e,asChild:o,hidden:l,children:i}){let s=useContext(P);if(l||!s)return null;let n=s.date;if(!n)return null;let a=new Date(n);if(Number.isNaN(a.getTime()))return null;let t={className:`docx-review__time${e?` ${e}`:""}`,"data-testid":"review-time",dateTime:n};return o?jsx(Slot,{...t,children:i}):jsx("time",{...t,children:i??vn.format(a)})}ge.docxReviewPart="Time";var vn=new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});function be({className:e,asChild:o,hidden:l,children:i}){let s=useContext(P),n=K();if(l||!s)return null;let a=s.text,t=s.kind!=="revision"?null:n(et(s.revisionKind,s.item.markDirection)),r=s.kind==="revision"&&s.revisionKind==="replace",c={className:`docx-review__summary${e?` ${e}`:""}`,"data-testid":"review-summary","data-review-selectable":""};return o?jsx(Slot,{...c,children:i}):jsx("div",{...c,children:i??(r?jsxs("span",{className:"docx-review__text",children:[n("review.replaced")," ",jsxs("span",{className:"docx-review__removed",children:['"',s.replacedText,'"']})," ",n("review.replacedWith")," ",jsxs("span",{className:"docx-review__added",children:['"',a,'"']})]}):jsxs(Fragment,{children:[t?jsx("span",{className:"docx-review__label","data-kind":s.kind==="revision"?s.revisionKind:"revision",children:t}):null,a?jsx("span",{className:"docx-review__text",children:a}):null]}))})}be.docxReviewPart="Summary";function Ke({className:e,asChild:o,hidden:l,children:i,icon:s}){let{readOnly:n,review:a}=H(),t=useContext(P),r=K();if(l||!t||t.kind!=="revision"||t.readOnly)return null;let c=r("review.accept"),f=n?r("editingMode.viewingHint"):null,v={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-accept","aria-label":c,title:f??c,disabled:n,onMouseDown:F,onClick:d=>{d.stopPropagation(),!n&&a.accept(t);}};return o?jsx(Q,{engineDisabled:n,disabledReason:f,slotProps:v,children:i}):jsx("button",{...v,children:s??i??q(fe)})}Ke.docxReviewPart="Accept";function Ve({className:e,asChild:o,hidden:l,children:i,icon:s}){let{readOnly:n,review:a}=H(),t=useContext(P),r=K();if(l||!t||t.kind!=="revision"||t.readOnly)return null;let c=r("review.reject"),f=n?r("editingMode.viewingHint"):null,v={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-reject","aria-label":c,title:f??c,disabled:n,onMouseDown:F,onClick:d=>{d.stopPropagation(),!n&&a.reject(t);}};return o?jsx(Q,{engineDisabled:n,disabledReason:f,slotProps:v,children:i}):jsx("button",{...v,children:s??i??q(Zt)})}Ve.docxReviewPart="Reject";function $e({className:e,asChild:o,hidden:l,children:i,icon:s}){let{readOnly:n,review:a}=H(),t=useContext(P),{t:r}=useTranslation();if(l||!t||t.kind==="custom"||t.kind==="revision"&&t.readOnly)return null;let c=t.kind==="comment"?r("review.deleteComment"):r("review.discardChange"),f=n?r("editingMode.viewingHint"):null,v={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-delete","aria-label":c,title:f??c,disabled:n,onMouseDown:F,onClick:d=>{d.stopPropagation(),!n&&a.remove(t);}};return o?jsx(Q,{engineDisabled:n,disabledReason:f,slotProps:v,children:i}):jsx("button",{...v,children:s??i??q(Ft)})}$e.docxReviewPart="Delete";function ut({className:e,hidden:o}){let{byId:l}=H(),i=useContext(P);if(o||!i||i.kind==="custom")return null;let s=i.replyIds.map(n=>l.get(n)).filter(n=>n!==void 0);return s.length===0?null:jsx("ol",{className:`docx-review__replies${e?` ${e}`:""}`,children:s.map(n=>jsx(P.Provider,{value:n,children:jsxs("li",{className:"docx-review__reply","data-testid":"review-reply",children:[jsxs("div",{className:"docx-review__head",children:[jsx(Re,{}),jsxs("div",{className:"docx-review__meta",children:[jsx(ye,{}),jsx(ge,{})]}),jsx("div",{className:"docx-review__actions",children:jsx($e,{})})]}),jsx(be,{})]})},n.key))})}ut.docxReviewPart="Replies";var Do=Object.assign(Po,{List:He,Empty:ct,Card:qe,Avatar:Re,Author:ye,Time:ge,Summary:be,Accept:Ke,Reject:Ve,Resolve:cn,Reopen:un,Delete:$e,Replies:ut,Reply:mn,Markers:st,AddComment:at,Draft:dn,Balloon:lt});function he(e){let o=useDocxEditor();return useMemo(()=>e||(o?.getCustomNodeDefinitions()??[]).filter(j),[e,o])}var Ho=".docx-content-control-boundary";function se(e,o){let{node:l,definition:i,controlId:s}=e,n=s?o?.getReviewItems().find(r=>r.kind==="custom"&&r.item.id===s):void 0;if(n&&n.kind==="custom"){let r=n.item;return {...l,attrs:r.attrs,text:r.text,...r.data===void 0?{}:{data:r.data},...s?{nodeId:s}:{}}}let a=s?qo(o,s,i):void 0,t=i.fromDocx?i.fromDocx({attrs:l.attrs,text:"",...a===void 0?{}:{data:a}}):l.attrs;return t===null?null:{...l,attrs:t,...a===void 0?{}:{data:a},...s?{nodeId:s}:{}}}function qo(e$1,o,l){let i=e$1?.surface;if(!i)return;let s=i.session.part(),n=customNodePayloadsByControl(i.session.currentPackage(),s.name).get(o);if(!n)return;let a=e(l.schema,n.data);return a.ok?a.value:void 0}function ae(e,o){let l=e?.closest?.(Ho),i=l?.closest(".docx-content-control-chrome"),s=i?.getAttribute("data-tag"),n=s?c(s):null;if(!l||!n||!s)return null;let a=o.find(t=>t.tagPrefix===n.prefix&&t.name===n.name);return a?{node:{name:n.name,attrs:n.attrs,tag:s,rect:l.getBoundingClientRect()},definition:a,controlId:i?.getAttribute("data-docx-content-control")??null}:null}var dt=".docx-content-control-boundary",Vo=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 $o(e){let{onNodeClick:o,onNodeHover:l}=e,i=useDocxEditor(),s=he(e.nodes);return useEffect(()=>{let n=document.createElement("style"),a=[];for(let t of s){let r=Vo(t);if(r.length===0)continue;let c=t.chrome?.color!==void 0&&CSS.supports("color",t.chrome.color)?t.chrome.color:"var(--doc-accent)";a.push(`${r.map(f=>`${f} ${dt}`).join(", ")} {`," pointer-events: auto !important;"," opacity: 1;"," border: none;",` background: color-mix(in srgb, ${c} 12%, transparent);`," border-radius: 6px;"," cursor: default;","}");}return n.textContent=a.join(`
2
- `),document.head.append(n),()=>n.remove()},[s]),useEffect(()=>{let n=null,a=null,t=v=>ae(document.elementFromPoint(v.clientX,v.clientY),s),r=v=>{let d=v.button===0?t(v):null;n=d?.controlId??null,a=d?.node.tag??null;},c=v=>{let d=n,u=a;if(n=null,a=null,u===null)return;let p=t(v);if(!p||p.node.tag!==u||d!==null&&p.controlId!==d)return;let w=se(p,i);w&&(p.definition.onClick?.(w),o?.(w));},f=v=>{let d=ae(v.target,s);if(!d||v.relatedTarget?.closest?.(dt)===v.target.closest(dt))return;let p=se(d,i);p&&(d.definition.onHover?.(p),l?.(p));};return document.addEventListener("pointerdown",r,true),document.addEventListener("pointerup",c,true),document.addEventListener("mouseover",f),()=>{document.removeEventListener("pointerdown",r,true),document.removeEventListener("pointerup",c,true),document.removeEventListener("mouseover",f);}},[s,i,o,l]),null}var Uo=e=>e.editingMode==="viewing";function Rn(e){let{onEditNode:o,onRemoveRefused:l,remove:i=true}=e,s=he(e.nodes),n=useContextMenuTarget(),a=useDocxEditor(),{t}=useTranslation(),r=useMemo(()=>n?ae(n,s):null,[n,s]),c=useMemo(()=>r?se(r,a):null,[r,a]),f=useEditorState(Uo),v=useMemo(()=>!r?.definition.reviewCard||!c?null:r.definition.reviewCard({attrs:c.attrs,text:c.text??"",...c.data===void 0?{}:{data:c.data}}),[r,c]);if(!r||!c)return null;let{definition:d}=r,u=d.label??d.name,p=!f&&(d.onEdit!==void 0||o!==void 0),w=!f&&i&&c.nodeId!==void 0&&a!==null;return !v&&!p&&!w?null:jsxs(Fragment,{children:[v?jsxs("div",{className:"docx-contextmenu__custom-info","data-testid":"custom-node-info",children:[jsx("span",{className:"docx-contextmenu__custom-title",children:v.title}),v.detail?jsx("span",{className:"docx-contextmenu__custom-detail",children:v.detail}):null]}):null,p?jsx(ContextMenuItem,{label:t("contextMenu.editCustomNode",{label:u}),className:"docx-contextmenu__custom-edit",onSelect:()=>{d.onEdit?.(c),o?.(c,d);}}):null,w?jsx(ContextMenuItem,{label:t("contextMenu.removeCustomNode",{label:u}),className:"docx-contextmenu__custom-remove",onSelect:()=>{let g=q$1(a,c.nodeId);g.ok||l?.(c,g.reason);}}):null,jsx("div",{role:"separator",className:"docx-toolbar__menu-separator"})]})}Rn.docxRowPlacement="start";export{$o as CustomNodeChrome,Rn as CustomNodeContextMenu,Do as DocxEditorReview,se as activatedCustomNodeOf,ae as resolveCustomNodeActivation,he as useCustomNodeDefinitions,Me as useReview,xo as useReviewAuthor,ho as useReviewItem,qt as useReviewOf,$n as useStackedReviewPositions};
1
+ import {j,e,c,q as q$1,k}from'../chunk-TH5PXU6L.js';export{o as reviewModule}from'../chunk-TH5PXU6L.js';import {createContext,useMemo,useEffect,useCallback,useRef,useContext,useState,isValidElement,cloneElement,useId,Children,useSyncExternalStore,Fragment as Fragment$1}from'react';import {useDocxEditor,useEditorState,useTranslation,ReviewRailContext,useReviewGutter,REVIEW_PANE_GUTTER,useReviewAuthors,Slot,notificationYieldsToTask,useContextMenuTarget,ContextMenuItem}from'@docx-editor.dev/react';import {jsxs,Fragment,jsx}from'react/jsx-runtime';import {customNodePayloadsByControl}from'@docx-editor.dev/core/store';import {partOfNodeId}from'@docx-editor.dev/core/editor';var Mn=new Set(["List","Markers","AddComment","Draft","Balloon"]),Tn=new Set(["Card","Empty"]);function Pe(e,o){let l=o==="root"?Mn:Tn,r={},s=[],n=a=>{if(Array.isArray(a)){for(let i of a)n(i);return}if(!isValidElement(a)){a!=null&&a!==false&&s.push(a);return}if(a.type===Fragment$1){n(a.props.children);return}let t=a.type.docxReviewPart;t&&l.has(t)?r[t]=a:s.push(a);};return n(e),{parts:r,rest:s}}function ze(e,o){if(!o)return e;let l=e.props.className;return cloneElement(e,{className:`${o}${l?` ${l}`:""}`})}var Dn={scale:96/72,top:0,left:null,compactCardLeft:null},Sn=16,me=300,On=12,ke=600;function Ot(e,o,l,r,s=false){let[n,a]=useState(Dn);return useEffect(()=>{let t=o.current;if(!e||!t)return;let i=t.offsetParent,c=i?.querySelector(".docx-paginated-surface")??null,f=()=>{a(p=>{let w=c&&i?c.getBoundingClientRect():null,b=w&&i?i.getBoundingClientRect():null,g=w&&b&&i?w.right-b.left-i.clientLeft+i.scrollLeft+Sn:null,R={scale:e.getRenderScale(),top:w&&b&&i?w.top-b.top-i.clientTop+i.scrollTop:0,left:g,compactCardLeft:g===null||!i?null:i.scrollLeft+i.clientWidth-g-me-On};return p.scale===R.scale&&p.top===R.top&&p.left===R.left&&p.compactCardLeft===R.compactCardLeft?p:R});};f();let v=new ResizeObserver(f);if(i&&v.observe(i),c&&v.observe(c),!s||!i)return ()=>v.disconnect();let u=0,d=()=>{u===0&&(u=requestAnimationFrame(()=>{u=0,f();}));};return i.addEventListener("scroll",d,{passive:true}),()=>{u!==0&&cancelAnimationFrame(u),i.removeEventListener("scroll",d),v.disconnect();}},[e,o,l,r,s]),n}function Lt(e,o,l){let[r,s]=useState(null);return useEffect(()=>{let n=o.current,a=n?.offsetParent;if(!a)return;let t=0,i=()=>{t=0,s(u=>{let d=a.scrollTop-ke,p=a.scrollTop+a.clientHeight+ke;return u&&u.top===d&&u.bottom===p?u:{top:d,bottom:p}});},c=0,f=()=>{t===0&&(t=requestAnimationFrame(i)),n?.setAttribute("data-scrolling",""),window.clearTimeout(c),c=window.setTimeout(()=>n?.removeAttribute("data-scrolling"),150);};i(),a.addEventListener("scroll",f,{passive:true});let v=new ResizeObserver(f);return v.observe(a),()=>{t!==0&&cancelAnimationFrame(t),window.clearTimeout(c),a.removeEventListener("scroll",f),v.disconnect();}},[e,o,l]),r}function Ht(e){let o=useRef(new WeakMap),l=useRef(new Map),r=useRef(null),s=useCallback((n,a)=>{let t=l.current.get(a);if(!n){t&&(r.current?.unobserve(t),o.current.delete(t),l.current.delete(a));return}typeof ResizeObserver>"u"||(e(a,n.offsetHeight),r.current??=new ResizeObserver(i=>{for(let c of i){let f=o.current.get(c.target);f&&e(f,c.target.offsetHeight);}}),!(t===n&&o.current.get(n)===a)&&(t&&(r.current.unobserve(t),o.current.delete(t)),o.current.set(n,a),l.current.set(a,n),r.current.observe(n)));},[e]);return useEffect(()=>()=>{r.current?.disconnect(),l.current.clear();},[]),s}function $n(e){let o=false;return ()=>{if(!o){if(!notificationYieldsToTask()){e();return}o=true,setTimeout(()=>{o=false,e();},0);}}}function Me(e){let o=useDocxEditor();return qt(o,e)}function qt(e,o){let l=useCallback(R=>{if(!e)return ()=>{};let h=false,N=$n(()=>{h||R();}),E=e.on("change",N),x=e.on("selectionChange",N),M=e.on("error",N);return ()=>{h=true,E(),x(),M();}},[e]),r=useSyncExternalStore(l,()=>e?`${e.getReviewRevision()}:${e.getEditingMode()}`:"none",()=>"none"),s=useMemo(()=>e?e.getReviewItems(o).filter(R=>R.item.kind!=="custom"||R.item.carded):[],[e,r,o]),n=useMemo(()=>s.find(R=>R.isActive)?.key??null,[s]),a=useCallback((R,h)=>e?e.setActiveReviewItem(R,h).ok:false,[e]),t=useCallback(R=>!e||R.kind!=="revision"||R.readOnly?false:e.acceptReviewItem(R.key).ok,[e]),i=useCallback(R=>!e||R.kind!=="revision"||R.readOnly?false:e.rejectReviewItem(R.key).ok,[e]),c=useCallback(R=>!e||R.kind!=="comment"?false:e.setCommentResolved(R.key,true).ok,[e]),f=useCallback(R=>!e||R.kind!=="comment"?false:e.setCommentResolved(R.key,false).ok,[e]),v=e?.getEditingMode()==="viewing"?"the document is open for viewing":null,u=useCallback(R=>!e||R.kind==="custom"||R.kind==="revision"&&R.readOnly?false:e.deleteReviewItem(R.key).ok,[e]),d=useCallback((R,h,N)=>h.trim().length===0||!e?false:e.replyToReviewItem(R.key,h,N).ok,[e]),p=useMemo(()=>e?e.getSelectionPlacement()?.anchorY??null:null,[e,r]),w=useCallback((R,h)=>R.trim().length===0||!e?false:e.addComment(R,h).ok,[e]),b=useMemo(()=>e?e.isReviewPaneOpen():true,[e,r]),g=useCallback(R=>{!e||e.isReviewPaneOpen()===R||e.exec({type:"toggleReviewPane"});},[e]);return useMemo(()=>({items:s,activeKey:n,setActive:a,accept:t,reject:i,resolve:c,reopen:f,commentResolutionDisabledReason:v,remove:u,reply:d,selectionAnchorY:p,comment:w,paneOpen:b,setPaneOpen:g,ready:e!==null&&!e.snapshot().isLoading&&e.snapshot().parseError===null}),[s,n,a,t,i,c,f,v,u,d,p,w,b,g,e])}function Yn(e,o,l={}){let r=l.gap??8,s=l.scale??1,n=l.defaultHeight??0;return useMemo(()=>{let a=new Map,t=Number.NEGATIVE_INFINITY;for(let i of e){let c=i.anchorY===null?Number.isFinite(t)?t:0:Math.max(i.anchorY,t);a.set(i.key,c),t=c+((o.get(i.key)??n)+r)/s;}return a},[e,o,r,s,n])}var Qe=8;function Xe(e,o){return e?.color??`var(--doc-review-author-${o%Qe})`}function ne(e,o,l){return e?{"--doc-review-author-current":Xe(o,l)}:{}}function ve(e,o){return (e?.slot??o)%Qe}function Kt(e,o,l,r){let s=useRef(new Map);return useMemo(()=>{let n=new Map;for(let t of e)n.set(t.author,t);let a=[...o.map(t=>t.author),r?.getConfiguredAuthor()];for(let t of a){if(!t||n.has(t))continue;let i=l.get(t)??0,c=r?.getReviewAuthorStyle(t),f=c?.color??`var(--doc-review-author-${i%Qe})`,v=s.current.get(t),u=v!==void 0&&v.slot===i&&v.color===f&&v.style===c?v:{author:t,slot:i,color:f,...c?{style:c}:{}};s.current.set(t,u),n.set(t,u);}return n},[e,o,l,r])}var q=e=>jsx("svg",{viewBox:"0 -960 960 960",width:16,height:16,"aria-hidden":"true",focusable:"false",children:jsx("path",{d:e,fill:"currentColor"})}),$t="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",Vt="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",Bn="M880-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",fe="M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z",De=()=>jsxs("span",{className:"docx-review__resolved-icon",children:[jsx("span",{className:"docx-review__resolved-comment",children:q(Bn)}),jsx("span",{className:"docx-review__resolved-tick",children:q(fe)})]}),Yt="M480-160q-134 0-227-93t-93-227q0-134 93-227t227-93q69 0 132 28.5T720-690v-110h80v280H520v-80h168q-32-56-87.5-88T480-720q-100 0-170 70t-70 170q0 100 70 170t170 70q77 0 139-44t87-116h84q-28 106-114 173t-196 67Z",Zt="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",Un="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",jn="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",Wn="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",zn="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 Bt(e){if(e.kind==="comment")return Vt;if(e.kind==="custom")return e.item.icon??zn;switch(e.revisionKind){case "insert":case "moveTo":return Un;case "delete":case "moveFrom":return jn;case "format":return Wn;default:return Vt}}function Jn(e,o){return typeof o!="function"?e:typeof e!="function"?o:l=>{e(l),l.defaultPrevented||o(l);}}function eo(e,o){let l={...e,...o};for(let r of Object.keys(e))/^on[A-Z]/.test(r)?l[r]=Jn(o[r],e[r]):r==="className"?l[r]=[e[r],o[r]].filter(Boolean).join(" "):r==="style"&&(l[r]={...e[r],...o[r]});return l}function Wt(e){return e==="Enter"||e===" "}function to(e){return Wt(e.key)?(e.preventDefault(),e.stopPropagation(),true):false}function jt(e){return e.type==="button"}function no(e,o){return e.type==="a"||o.href!=null}function oo(e,o,l,r){let s=n=>{typeof l=="function"&&l(n);};return {onClick:n=>{typeof e=="function"&&e(n),n.defaultPrevented||s(n),r&&n.preventDefault();},onKeyDown:n=>{if(typeof o=="function"&&o(n),!Wt(n.key))return;n.defaultPrevented||s(n),r&&n.preventDefault();}}}function Q({engineDisabled:e,disabledReason:o,slotProps:l,children:r}){let s=Children.only(r);if(!isValidElement(s))return null;let n=s.props,a=eo(l,n);if(!e){if(!jt(s)){let t=oo(n.onClick,n.onKeyDown,l.onClick,no(s,n));a.onClick=t.onClick,a.onKeyDown=t.onKeyDown;}return cloneElement(s,a)}if(jt(s))a.disabled=true,delete a["aria-disabled"];else {delete a.disabled,a["aria-disabled"]=true,a["data-disabled"]="",a.tabIndex=-1,a.href=void 0,a.role===void 0&&(a.role="button");let t=a.onKeyDown;a.onKeyDown=i=>{to(i)||typeof t=="function"&&t(i);};}return o&&(a.title=o),a.onClick=t=>{t.preventDefault(),t.stopPropagation();},cloneElement(s,a)}var Qt=createContext({key:null,open:()=>{},close:()=>{}});function Xt({items:e,children:o}){let[l,r]=useState(null);useEffect(()=>{l!==null&&!e.some(n=>n.key===l&&n.kind==="comment"&&n.resolved)&&r(null);},[e,l]);let s=useMemo(()=>({key:l,open:n=>r(n),close:()=>r(null)}),[l]);return jsx(Qt.Provider,{value:s,children:o})}function Je(){return useContext(Qt)}function Jt({label:e,statusLabel:o,entryKey:l,onActivate:r,onDeactivate:s,children:n,...a}){let t=Je(),i=useRef(null);return useEffect(()=>{let c=f=>{let v=i.current;v?.open&&f.target instanceof Node&&!v.contains(f.target)&&(t.close(),s());};return document.addEventListener("pointerdown",c,true),()=>document.removeEventListener("pointerdown",c,true)},[t,s]),jsxs("details",{ref:i,...a,open:t.key===l,onToggle:c=>{c.currentTarget.open?(t.open(l),r()):(t.close(),s());},children:[jsxs("summary",{className:"docx-review__resolved-toggle","aria-label":e,children:[jsx("span",{className:"docx-review__resolved-status",children:o}),De()]}),n]})}function en(e){function o({className:r,asChild:s,hidden:n,children:a,icon:t}){let i=e.useReview(),c=e.useItem(),f=e.useLabel();if(n||!c||c.kind!=="comment"||c.resolved)return null;let v=f("comments.resolve"),u=i.commentResolutionDisabledReason!==null,d=u?f("editingMode.viewingHint"):null,p={type:"button",className:`docx-review__action${r?` ${r}`:""}`,"data-testid":"review-resolve","aria-label":v,title:d??v,disabled:u,onMouseDown:e.guardMousedown,onClick:w=>{w.stopPropagation(),!u&&i.resolve(c);}};return s?jsx(Q,{engineDisabled:u,disabledReason:d,slotProps:p,children:a}):jsx("button",{...p,children:t??a??q(fe)})}o.docxReviewPart="Resolve";function l({className:r,asChild:s,hidden:n,children:a,icon:t}){let i=e.useReview(),c=e.useItem(),f=e.useLabel();if(n||!c||c.kind!=="comment"||!c.resolved)return null;let v=f("comments.reopen"),u=i.commentResolutionDisabledReason!==null,d=u?f("editingMode.viewingHint"):null,p={type:"button",className:`docx-review__action${r?` ${r}`:""}`,"data-testid":"review-reopen","aria-label":v,title:d??v,disabled:u,onMouseDown:e.guardMousedown,onClick:w=>{w.stopPropagation(),!u&&i.reopen(c);}};return s?jsx(Q,{engineDisabled:u,disabledReason:d,slotProps:p,children:a}):jsx("button",{...p,children:t??a??q(Yt)})}return l.docxReviewPart="Reopen",{ReviewResolve:o,ReviewReopen:l}}function on(e){function o({top:r=0,left:s=null,className:n,hidden:a}){let{review:t,endDraft:i,measure:c,readOnly:f,draftAuthor:v,draftAuthorInfo:u,draftAuthorSlot:d}=e.useRail(),p=e.useLabel(),[w,b]=useState(""),[g,R]=useState(false),h=useRef(null),N=useId();useEffect(()=>{f||h.current?.focus({preventScroll:true});},[]);let E=useCallback(()=>{if(f||w.trim().length===0)return;let x=t.comment(w.trim());R(!x),x&&(b(""),i());},[f,w,t,i]);return a?null:jsx("div",{className:`docx-review__slot${n?` ${n}`:""}${s===null?"":" docx-review__slot--compact"}`,style:{position:"absolute",top:r,...s===null?{}:{left:s,width:me}},ref:x=>{c(x,e.composeKey);},children:jsx("div",{className:"docx-review__card","data-testid":"review-draft","data-draft":"",...v?{"data-review-author":v,"data-review-author-slot":d}:{},style:ne(v??void 0,u,d),children:jsxs("form",{className:"docx-review__reply-box",onSubmit:x=>{x.preventDefault(),E();},children:[jsx("label",{className:"docx-editor-sr-only",htmlFor:N,children:p("comments.addComment")}),jsx("input",{id:N,ref:h,"data-testid":"review-draft-input",className:"docx-review__input",value:w,placeholder:p("comments.addComment"),readOnly:f,...g?{"aria-invalid":true}:{},onChange:x=>{f||(R(false),b(x.target.value));},onKeyDown:x=>{if(x.key==="Escape"){x.preventDefault(),i();return}f||x.key!=="Enter"||(x.preventDefault(),E());}}),jsxs("div",{className:"docx-review__reply-actions",children:[jsx("button",{type:"button","data-testid":"review-draft-cancel",className:"docx-review__text-button",onMouseDown:e.guardMousedown,onClick:i,children:p("common.cancel")}),jsx("button",{type:"submit","data-testid":"review-draft-submit",className:"docx-review__submit",disabled:f||w.trim().length===0,title:f?p("editingMode.viewingHint"):void 0,children:p("common.comment")})]}),g?jsx("span",{className:"docx-review__refused",role:"alert",children:p("review.commentRefused")}):null]})})})}o.docxReviewPart="Draft";function l({className:r,hidden:s,children:n}){let{review:a,readOnly:t}=e.useRail(),i=e.useItem(),c=e.useLabel(),[f,v]=useState(""),[u,d]=useState(false),p=useId(),w=useCallback(()=>{if(!i||t||f.trim().length===0)return;let b=a.reply(i,f.trim());d(!b),b&&v("");},[i,t,f,a]);return s||!i||!i.isActive||i.kind==="comment"&&i.resolved?null:n?jsx(Fragment,{children:n}):jsxs("form",{className:`docx-review__reply-box${r?` ${r}`:""}`,onSubmit:b=>{b.preventDefault(),w();},children:[jsx("label",{className:"docx-editor-sr-only",htmlFor:p,children:c("comments.replyPlaceholder")}),jsx("input",{id:p,"data-testid":"review-reply-input",className:"docx-review__input",value:f,placeholder:c("comments.replyPlaceholder"),readOnly:t,...u?{"aria-invalid":true,"data-refused":""}:{},onChange:b=>{t||(d(false),v(b.target.value));},onClick:b=>b.stopPropagation(),onKeyDown:b=>{t||b.key!=="Enter"||(b.preventDefault(),w());}}),jsxs("div",{className:"docx-review__reply-actions",children:[jsx("button",{type:"button","data-testid":"review-reply-cancel",className:"docx-review__text-button",onMouseDown:e.guardMousedown,onClick:b=>{b.stopPropagation(),v(""),d(false),a.setActive(null);},children:c("common.cancel")}),jsx("button",{type:"submit","data-testid":"review-reply-submit",className:"docx-review__submit",disabled:t||f.trim().length===0,title:t?c("editingMode.viewingHint"):void 0,children:c("review.reply")})]}),u?jsx("span",{className:"docx-review__refused",role:"alert","data-testid":"review-reply-refused",children:c("review.replyRefused")}):null]})}return l.docxReviewPart="Reply",{ReviewDraft:o,ReviewReply:l}}function et(e,o){if(e==="paragraphMark")return o==="delete"?"revisions.paragraphMarkDeleted":o==="moveFrom"?"revisions.paragraphMarkMovedFrom":o==="moveTo"?"revisions.paragraphMarkMovedTo":"revisions.paragraphMarkInserted";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";default:return "review.structural"}}var go=e=>e.isLoading||e.parseError!==null||e.pageSetup==null,ho=e=>e.editingMode==="viewing",ot=createContext(null),P=createContext(null);function xo(){return useContext(P)}function Co(e){let{authorInfo:o}=H();return e===void 0?void 0:o.get(e)}var Le="\0compose",No=72,Eo=64,_o=480,Ao=30,Io=Object.freeze({placement:false});function rt(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 it(e){return new Set(e.map(o=>o.id))}function F(e){let o=e.target?.tagName;o==="INPUT"||o==="SELECT"||o==="TEXTAREA"||e.preventDefault();}function H(){let e=useContext(ot);return e||Po}function K(){let{t:e}=useContext(ot)??{},{t:o}=useTranslation();return useCallback(l=>e?.(l)??o(l),[e,o])}var{ReviewResolve:cn,ReviewReopen:dn}=en({useReview:()=>H().review,useItem:()=>useContext(P),useLabel:K,guardMousedown:F}),{ReviewDraft:un,ReviewReply:mn}=on({useRail:H,useItem:()=>useContext(P),useLabel:K,guardMousedown:F,composeKey:Le}),Po={t:void 0,cardClassName:void 0,readOnly:false,review:{items:[],activeKey:null,setActive:()=>false,accept:()=>false,reject:()=>false,resolve:()=>false,reopen:()=>false,commentResolutionDisabledReason:null,remove:()=>false,reply:()=>false,selectionAnchorY:null,comment:()=>false,paneOpen:true,setPaneOpen:()=>{},ready:false},allItems:[],authorSlots:new Map,authorInfo:new Map,draftAuthor:null,draftAuthorInfo:void 0,draftAuthorSlot:0,byId:new Map,measure:()=>{},beginDraft:()=>{},endDraft:()=>{}};function ko({className:e,furniture:o,asChild:l,hidden:r,children:s,t:n,card:a,preset:t=true,stack:i=true,gap:c=8,filter:f,structural:v=false,formatting:u=false}){let d=useDocxEditor(),p=useEditorState(go),w=useEditorState(ho),b=useMemo(()=>{let y=[];return v||y.push("structural"),u||y.push("format"),y.length>0?y:void 0},[v,u]),g=useMemo(()=>b?{excludeRevisionKinds:b}:void 0,[b]);useEffect(()=>(d?.setReviewActivationExclusions(b??null),()=>d?.setReviewActivationExclusions(null)),[d,b]);let R=Me(Io),h=Me(g),N=h.setPaneOpen,{t:E}=useTranslation(),x=useCallback(y=>n?.(y)??E(y),[n,E]),M=useRef(null),J=useContext(ReviewRailContext);useEffect(()=>J?.register(),[J]);let B=h.paneOpen,le=useReviewGutter(),ee=B&&le.inlineEnd>0&&le.inlineEnd<REVIEW_PANE_GUTTER,Ce=B&&!ee,S=useMemo(()=>f?h.items.filter(y=>f(y)):h.items,[h.items,f]),V=d?.getConfiguredAuthor()??null,Ne=useMemo(()=>{let y=new Map;for(let C of S)C.author&&!y.has(C.author)&&y.set(C.author,y.size);return V&&!y.has(V)&&y.set(V,y.size),y},[S,V]),vt=useMemo(()=>{let y=new Map;for(let C of S)y.set(C.id,C);return y},[S]),[ft,yn]=useState(()=>new Map),bn=useCallback((y,C)=>{C<=0||yn(A=>{if(A.get(y)===C)return A;let T=new Map(A);return T.set(y,C),T});},[]),pt=Ht(bn),I=Ot(d,M,S,!p&&!r,ee),ce=Lt(d,M,!p&&!r);useEffect(()=>{let y=M.current;if(!d||!y)return;let C=A=>{let T=A.target;if(!(T instanceof Node)||y.contains(T))return;let D=y.offsetParent;!D||!D.contains(T)||D.querySelector(".docx-paginated-surface")?.contains(T)||d.setActiveReviewItem(null);};return document.addEventListener("mousedown",C,true),()=>document.removeEventListener("mousedown",C,true)},[d,p,r]);let[Y,Ye]=useState(null),Ze=useRef(null),U=useCallback(()=>{let y=Ze.current;y&&(y.editor.releaseSelection(y.pin),Ze.current=null);},[]),Ee=useCallback(()=>{if(!d||w)return;let y=d.getSelectionPlacement()?.anchorY??null;if(y===null)return;U();let C=d.retainSelection();C&&(Ze.current={editor:d,pin:C},N(true),Ye(y));},[d,w,U,N]);useEffect(()=>{if(!(r||w))return J?.registerCommentDraft(Ee)},[Ee,r,w,J]);let wt=useCallback(()=>{U(),Ye(null),d?.focus();},[d,U]);useEffect(()=>U,[U]),useEffect(()=>{B||Y===null||(U(),Ye(null));},[B,Y,U]);let Fe=Y??h.selectionAnchorY,Z=useMemo(()=>{let y=it(S);return S.filter(C=>!rt(C,y))},[S]),Rt=useMemo(()=>{if(Y===null)return Z;let y=Z.findIndex(A=>A.anchorY!==null&&A.anchorY>Y),C={key:Le,anchorY:Y};return y===-1?[...Z,C]:[...Z.slice(0,y),C,...Z.slice(y)]},[Z,Y]),yt=useMemo(()=>{let y=new Map(ft);for(let C of Z){if(y.has(C.key))continue;let A=C.text.length+(C.kind==="revision"?C.replacedText?.length??0:0),T=Math.min(6,Math.max(1,Math.ceil(A/36)));y.set(C.key,64+T*20);}return y},[ft,Z]),{stacked:Be,collapsedKeys:bt}=useMemo(()=>{let y=I.scale,C=new Map,A=new Set,T=Number.NEGATIVE_INFINITY;for(let D of Rt){let Ie=D.anchorY===null?Number.isFinite(T)?T:0:Math.max(D.anchorY,T);C.set(D.key,Ie);let Nn=D.anchorY===null?0:(Ie-D.anchorY)*y,En="isActive"in D&&D.isActive,It=Nn>_o&&!En&&D.key!==Le;It&&A.add(D.key);let _n=It?Eo:yt.get(D.key)??No;T=Ie+(_n+c)/y;}return {stacked:C,collapsedKeys:A}},[Rt,yt,c,I.scale]),Ue=Fe===null?null:I.top+(ee?Fe:Be.get(Le)??Fe)*I.scale,de=a?.className,gn=useReviewAuthors(),je=Kt(gn,S,Ne,d),gt=V?Ne.get(V)??0:0,ht=V?je.get(V):void 0,hn=useMemo(()=>({t:n,cardClassName:de,readOnly:w,review:{...h,items:S},allItems:R.items,authorSlots:Ne,authorInfo:je,draftAuthor:V,draftAuthorInfo:ht,draftAuthorSlot:gt,byId:vt,measure:pt,beginDraft:Ee,endDraft:wt}),[n,de,w,h,R.items,S,Ne,je,V,ht,gt,vt,pt,Ee,wt]);if(r||p)return null;let xt={ref:M,className:`docx-review${e?` ${e}`:""}`,"data-testid":"review-rail","data-count":S.length,"data-open":Ce?"":void 0,"data-compact":ee?"":void 0,role:"complementary","aria-label":x("review.ariaLabel"),onMouseDown:F,style:I.left===null?void 0:{left:I.left,right:"auto"}},W=typeof s=="function"?{parts:{},rest:s}:Pe(s,"root"),z=W.parts,ue=(y,C)=>{if(!(y in z))return C;let A=z[y];return !isValidElement(A)||!isValidElement(C)?A:cloneElement(A,{...C.props,...A.props})},Ct=jsxs(Fragment,{children:[t||"AddComment"in z?ue("AddComment",jsx(at,{top:Ue,drafting:Y!==null})):null,!B||Y===null||Ue===null||!t&&!("Draft"in z)?null:ue("Draft",jsx(un,{top:Ue,left:ee?I.compactCardLeft:null})),t||"Balloon"in z?ue("Balloon",jsx(lt,{})):null]}),xn=jsx(He,{stack:i,positions:Be,collapsed:bt,scale:I.scale,offset:I.top,window:ce,children:W.rest}),Nt=jsx(st,{scale:I.scale,offset:I.top,window:ce}),G=ee?Z.find(y=>y.key===h.activeKey)??null:null,Et=G===null?null:G.anchorY!==null?I.top+G.anchorY*I.scale:ce!==null?ce.top+ke+24:null,_e=l?null:W.rest,Ae=typeof _e=="function"?null:Pe(_e,"list"),_t=typeof _e=="function"?G&&_e(G):Ae?.parts.Card&&isValidElement(Ae.parts.Card)?ze(Ae.parts.Card,de):t?jsx(qe,{...de?{className:de}:{},children:Ae?.rest}):null,At=G&&Et!==null&&I.compactCardLeft!==null&&_t?jsx(P.Provider,{value:G,children:jsx("div",{className:"docx-review__slot docx-review__slot--compact","data-testid":"review-compact-card",style:{position:"absolute",top:Et,left:I.compactCardLeft,width:me},children:_t})}):null,Cn=Ce?t||"List"in z?ue("List",xn):typeof W.rest=="function"?null:W.rest:t||"Markers"in z?jsxs(Fragment,{children:[ue("Markers",Nt),At]}):typeof W.rest=="function"?null:W.rest;return jsx(Xt,{items:S,children:jsx(ot.Provider,{value:hn,children:l&&isValidElement(s)?jsx(Slot,{...xt,children:cloneElement(s,void 0,s.props.children,t?Ce?jsx(He,{stack:i,positions:Be,collapsed:bt,scale:I.scale,offset:I.top,window:ce}):jsxs(Fragment,{children:[Nt,At]}):null,Ct)}):jsxs("aside",{...xt,children:[Ce&&o!==void 0?jsx("div",{className:"docx-review__furniture","data-testid":"review-furniture",children:o}):null,Cn,Ct]})})})}function He({stack:e=true,positions:o,collapsed:l,scale:r=1,offset:s=0,window:n=null,children:a,className:t,hidden:i}){let{review:c,measure:f,cardClassName:v}=H();if(i)return null;let u=typeof a=="function"?null:Pe(a,"list"),d=it(c.items),p=c.items.filter(w=>!rt(w,d));return p.length===0?typeof a=="function"?null:u?.parts.Empty??jsx(ct,{}):jsx("div",{className:`docx-review__list${t?` ${t}`:""}`,children:p.map(w=>{let b=e?o?.get(w.key)??w.anchorY:w.anchorY,g=b==null?null:s+b*r;if(g!==null&&n&&(g<n.top||g>n.bottom))return null;let R=g===null?{}:{position:"absolute",top:g};return jsx(P.Provider,{value:w,children:jsx("div",{className:"docx-review__slot",style:R,...l?.has(w.key)?{"data-collapsed":""}:{},ref:h=>{f(h,w.key);},children:typeof a=="function"?a(w):u?.parts.Card&&isValidElement(u.parts.Card)?ze(u.parts.Card,v):jsx(qe,{...v?{className:v}:{},children:u?.rest})})},w.key)})})}He.docxReviewPart="List";function st({scale:e=1,offset:o=0,window:l=null,className:r,hidden:s,icon:n}){let{review:a,authorSlots:t,authorInfo:i}=H(),c=Je(),f=K(),{roots:v,stackedTops:u}=useMemo(()=>{let d=it(a.items),p=a.items.filter(g=>!rt(g,d)),w=new Map,b=Number.NEGATIVE_INFINITY;for(let g of p){if(g.anchorY===null)continue;let R=Math.max(o+g.anchorY*e,b);w.set(g.key,R),b=R+Ao;}return {roots:p,stackedTops:w}},[a.items,o,e]);return s?null:jsx("div",{className:`docx-review__markers${r?` ${r}`:""}`,children:v.map(d=>{let p=u.get(d.key);return p===void 0||l&&(p<l.top||p>l.bottom)?null:jsx("button",{type:"button",className:"docx-review__marker","data-testid":"review-marker","data-kind":d.kind==="revision"?d.revisionKind:d.kind,...d.author?{"data-review-author":d.author,"data-review-author-slot":ve(i.get(d.author),t.get(d.author)??0)}:{},style:{position:"absolute",top:p,...d.author?{"--doc-review-author-current":Xe(i.get(d.author),t.get(d.author)??0)}:{}},title:d.author?`${d.author}: ${d.text}`:d.text,"aria-label":`${f("review.showPane")}: ${d.author?`${d.author}. `:""}${d.text}`,onMouseDown:F,onClick:()=>{d.kind==="comment"&&d.resolved&&c.open(d.key),a.setPaneOpen(true),a.setActive(d.key);},children:(typeof n=="function"?n(d):n)??(d.kind==="comment"&&d.resolved?De():q(Bt(d)))},d.key)})})}st.docxReviewPart="Markers";function at({top:e=null,drafting:o=false,className:l,hidden:r,children:s}){let{beginDraft:n,readOnly:a}=H(),t=K();if(r||o||e===null||a)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:F,onClick:n};return s?jsx(Slot,{...i,children:s}):jsx("button",{...i,children:q($t)})}at.docxReviewPart="AddComment";function lt({className:e,hidden:o}){let{review:l,allItems:r,authorSlots:s,authorInfo:n}=H(),a=K(),t=useRef(null),[i,c]=useState(null),f=useRef(false);f.current=i!==null,useEffect(()=>{let w=t.current,b=w?.closest(".docx-review"),g=b?.closest(".docx-editor__scroll-container")??b?.offsetParent;if(!w||!b||!g)return;let R=(N,E)=>{let x=b.getBoundingClientRect(),M=N.getBoundingClientRect(),J=N.ownerDocument.defaultView?.innerHeight??1/0,B=Number(N.dataset.start),le=Number(N.dataset.end);c({revisionId:N.dataset.revisionId,author:N.dataset.reviewAuthor??"",...N.dataset.revisionDate!==void 0?{date:N.dataset.revisionDate}:{},...N.dataset.revisionKind!==void 0?{kind:N.dataset.revisionKind}:{},structuralSite:E,...N.dataset.paragraphId!==void 0?{paragraphId:N.dataset.paragraphId}:{},...Number.isFinite(B)?{start:B}:{},...Number.isFinite(le)?{end:le}:{},left:M.left-x.left,top:M.top-x.top,bottom:M.bottom-x.top,above:M.bottom+220>J});},h=N=>{let E=N.target;if(!(E instanceof Element)||w.contains(E))return;let x=E.closest("[data-revision-id]");if(x instanceof HTMLElement&&g.contains(x)){let M=x.classList.contains("docx-table-row--revision");if(x.dataset.revisionKind==="format"||M){R(x,M);return}}f.current&&c(null);};return g.addEventListener("pointerdown",h,true),g.addEventListener("mousedown",h,true),()=>{g.removeEventListener("pointerdown",h,true),g.removeEventListener("mousedown",h,true);}},[]);let v=useMemo(()=>{if(!i)return null;let w=null,b=false,g=null,R=false,h=null,N=false;for(let E of r)if(!(E.kind!=="revision"||E.item.kind!=="revision")){for(let x of E.item.addresses)if(x.id===i.revisionId){if(x.author===i.author){if(x.date===i.date)return E;w===null?w=E:w!==E&&(b=true);}g===null?g=E:g!==E&&(R=true);}if(i.paragraphId!==void 0&&i.start!==void 0&&i.end!==void 0&&(E.revisionKind==="format"||E.revisionKind==="structural")){for(let x of E.item.ranges)if(x.start.paragraphId===i.paragraphId&&x.start.offset<i.end&&x.end.offset>i.start){h===null?h=E:h!==E&&(N=true);break}}}return w!==null&&!b?w:g!==null&&!R?g:h!==null&&!N?h:null},[r,i]),u=v&&(v.revisionKind==="format"||v.revisionKind==="structural")?v:null,d=useRef(false);if(useEffect(()=>{if(u){d.current=true;return}d.current&&(d.current=false,c(null));},[u]),o)return null;let p=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:F,children:u?jsx(P.Provider,{value:u,children:jsxs("div",{className:"docx-review__card","data-testid":"review-balloon-card","data-kind":u.revisionKind??"revision",...u.author?{"data-review-author":u.author,"data-review-author-slot":ve(n.get(u.author),s.get(u.author)??0)}:{},style:ne(u.author,n.get(u.author),s.get(u.author)??0),onClick:()=>l.setActive(u.key),children:[jsxs("div",{className:"docx-review__head",children:[jsx(Re,{}),jsxs("div",{className:"docx-review__meta",children:[jsx(ye,{}),jsx(be,{})]}),u.kind==="revision"&&!u.readOnly?jsxs("div",{className:"docx-review__actions",children:[jsx(Ke,{}),jsx(Ve,{})]}):null]}),jsx(ge,{})]})}):jsxs("div",{className:"docx-review__card","data-testid":"review-balloon-card","data-kind":p,...i.author?{"data-review-author":i.author,"data-review-author-slot":ve(n.get(i.author),s.get(i.author)??0)}:{},style:ne(i.author,n.get(i.author),s.get(i.author)??0),children:[jsxs("div",{className:"docx-review__head",children:[jsx("span",{className:"docx-review__avatar","aria-hidden":"true",children:Mo(i.author)}),jsxs("div",{className:"docx-review__meta",children:[jsx("span",{className:"docx-review__author",children:i.author||a("comments.unknown")}),i.date?jsx(To,{raw:i.date}):null]})]}),jsx("div",{className:"docx-review__summary",children:jsx("span",{className:"docx-review__label","data-kind":p,children:a(et(p))})})]})})})}lt.docxReviewPart="Balloon";function Mo(e){let o=e.trim().split(/\s+/).filter(Boolean);return o.length===0?"?":o.slice(0,2).map(l=>l[0].toUpperCase()).join("")}function To({raw:e}){let o=new Date(e);return Number.isNaN(o.getTime())?null:jsx("time",{className:"docx-review__time",dateTime:e,children:vn.format(o)})}function ct({className:e,hidden:o,children:l}){let r=K();return o?null:jsx("div",{className:`docx-review__empty${e?` ${e}`:""}`,"data-testid":"review-empty",children:l??r("review.empty")})}ct.docxReviewPart="Empty";function qe({className:e,asChild:o,hidden:l,children:r}){let{review:s,authorSlots:n,authorInfo:a}=H(),t=useContext(P),i=useId(),c=K();if(l||!t)return null;let f=n.get(t.author)??0,v=!o&&t.kind==="comment"&&t.resolved,u={className:`docx-review__card${e?` ${e}`:""}`,"data-testid":"review-card",...v?{}:{"aria-labelledby":`${i}-author ${i}-summary`},"data-kind":t.kind==="revision"?t.revisionKind??"revision":t.kind,...t.author?{"data-review-author":t.author,"data-review-author-slot":ve(a.get(t.author),f)}:{},...t.kind==="custom"&&t.item.kind==="custom"?{"data-node-name":t.item.name}:{},...t.isActive?{"data-active":""}:{},...t.kind==="comment"&&t.resolved?{"data-resolved":""}:{},...v?{"data-resolved-miniature":""}:{},style:ne(t.author,a.get(t.author),f),...v?{}:{tabIndex:0,role:"button"},id:i,...v?{}:{onMouseDown:d=>{d.target?.closest("[data-review-selectable]")||d.currentTarget.focus({preventScroll:true});},onClick:()=>s.setActive(t.key),onKeyDown:d=>{d.target===d.currentTarget&&(d.key!=="Enter"&&d.key!==" "||(d.preventDefault(),s.setActive(t.key)));}}};return o?jsx(Slot,{...u,children:r}):v?jsx(Jt,{...u,label:c("review.showResolvedComment"),statusLabel:c("review.resolved"),entryKey:t.key,onActivate:()=>s.setActive(t.key),onDeactivate:()=>s.setActive(null),children:jsx(an,{children:r})}):jsx("div",{...u,children:jsx(an,{children:r})})}qe.docxReviewPart="Card";function an({children:e}){let o=useContext(P),l=useMemo(()=>Do(e),[e]),r=(n,a)=>n in l?l[n]:a;if(!o)return null;if(o.kind==="custom"&&o.item.kind==="custom"){let n=o.item;return jsxs(Fragment,{children:[jsxs("div",{className:"docx-review__head",children:[r("Avatar",null),jsx("div",{className:"docx-review__meta",children:r("Author",jsx("span",{className:"docx-review__author","data-testid":"review-custom-title",children:n.title}))})]}),r("Summary",n.detail?jsx("div",{className:"docx-review__summary","data-testid":"review-summary","data-review-selectable":"",children:jsx("span",{className:"docx-review__text",children:n.detail})}):null),l.__extra]})}let s=o.kind==="revision"&&!o.readOnly;return jsxs(Fragment,{children:[jsxs("div",{className:"docx-review__head",children:[r("Avatar",jsx(Re,{})),jsxs("div",{className:"docx-review__meta",children:[r("Author",jsx(ye,{})),r("Time",jsx(be,{}))]}),s||o.kind==="comment"?jsxs("div",{className:"docx-review__actions",children:[r("Accept",jsx(Ke,{})),r("Reject",jsx(Ve,{})),r("Resolve",jsx(cn,{})),r("Reopen",jsx(dn,{})),r("Delete",jsx($e,{}))]}):null]}),r("Summary",jsx(ge,{})),r("Replies",jsx(dt,{})),r("Reply",jsx(mn,{})),l.__extra]})}function Do(e){let o={},l=[],r=s=>{if(Array.isArray(s)){s.forEach(r);return}if(!s||typeof s!="object"||!("type"in s)){s&&l.push(s);return}if(s.type===Fragment$1){r(s.props.children);return}let n=s.type.docxReviewPart;n?o[n]=s:l.push(s);};return r(e),l.length>0&&(o.__extra=l),o}function Re({className:e,asChild:o,hidden:l,children:r}){let{authorInfo:s}=H(),n=useContext(P);if(l||!n||r===void 0&&!n.initials)return null;let a={className:`docx-review__avatar${e?` ${e}`:""}`,"data-testid":"review-avatar","aria-hidden":true};if(o)return jsx(Slot,{...a,children:r});let t=s.get(n.author)?.style?.avatarUrl,i=r??(t?jsx("img",{className:"docx-review__avatar-img",src:t,alt:"",loading:"lazy",decoding:"async",referrerPolicy:"no-referrer"}):void 0)??n.initials;return jsx("span",{...a,children:i})}Re.docxReviewPart="Avatar";function ye({className:e,asChild:o,hidden:l,children:r}){let s=useContext(P),n=K();if(l||!s)return null;let a=s.author||n("comments.unknown"),t={className:`docx-review__author${e?` ${e}`:""}`,"data-testid":"review-author"};return o?jsx(Slot,{...t,children:r}):jsx("span",{...t,children:r??a})}ye.docxReviewPart="Author";function be({className:e,asChild:o,hidden:l,children:r}){let s=useContext(P);if(l||!s)return null;let n=s.date;if(!n)return null;let a=new Date(n);if(Number.isNaN(a.getTime()))return null;let t={className:`docx-review__time${e?` ${e}`:""}`,"data-testid":"review-time",dateTime:n};return o?jsx(Slot,{...t,children:r}):jsx("time",{...t,children:r??vn.format(a)})}be.docxReviewPart="Time";var vn=new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});function ge({className:e,asChild:o,hidden:l,children:r}){let s=useContext(P),n=K();if(l||!s)return null;let a=s.text,t=s.kind!=="revision"?null:n(et(s.revisionKind,s.item.markDirection)),i=s.kind==="revision"&&s.revisionKind==="replace",c={className:`docx-review__summary${e?` ${e}`:""}`,"data-testid":"review-summary","data-review-selectable":""};return o?jsx(Slot,{...c,children:r}):jsx("div",{...c,children:r??(i?jsxs("span",{className:"docx-review__text",children:[n("review.replaced")," ",jsxs("span",{className:"docx-review__removed",children:['"',s.replacedText,'"']})," ",n("review.replacedWith")," ",jsxs("span",{className:"docx-review__added",children:['"',a,'"']})]}):jsxs(Fragment,{children:[t?jsx("span",{className:"docx-review__label","data-kind":s.kind==="revision"?s.revisionKind:"revision",children:t}):null,a?jsx("span",{className:"docx-review__text",children:a}):null]}))})}ge.docxReviewPart="Summary";function Ke({className:e,asChild:o,hidden:l,children:r,icon:s}){let{readOnly:n,review:a}=H(),t=useContext(P),i=K();if(l||!t||t.kind!=="revision"||t.readOnly)return null;let c=i("review.accept"),f=n?i("editingMode.viewingHint"):null,v={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-accept","aria-label":c,title:f??c,disabled:n,onMouseDown:F,onClick:u=>{u.stopPropagation(),!n&&a.accept(t);}};return o?jsx(Q,{engineDisabled:n,disabledReason:f,slotProps:v,children:r}):jsx("button",{...v,children:s??r??q(fe)})}Ke.docxReviewPart="Accept";function Ve({className:e,asChild:o,hidden:l,children:r,icon:s}){let{readOnly:n,review:a}=H(),t=useContext(P),i=K();if(l||!t||t.kind!=="revision"||t.readOnly)return null;let c=i("review.reject"),f=n?i("editingMode.viewingHint"):null,v={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-reject","aria-label":c,title:f??c,disabled:n,onMouseDown:F,onClick:u=>{u.stopPropagation(),!n&&a.reject(t);}};return o?jsx(Q,{engineDisabled:n,disabledReason:f,slotProps:v,children:r}):jsx("button",{...v,children:s??r??q(Zt)})}Ve.docxReviewPart="Reject";function $e({className:e,asChild:o,hidden:l,children:r,icon:s}){let{readOnly:n,review:a}=H(),t=useContext(P),{t:i}=useTranslation();if(l||!t||t.kind==="custom"||t.kind==="revision"&&t.readOnly)return null;let c=t.kind==="comment"?i("review.deleteComment"):i("review.discardChange"),f=n?i("editingMode.viewingHint"):null,v={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-delete","aria-label":c,title:f??c,disabled:n,onMouseDown:F,onClick:u=>{u.stopPropagation(),!n&&a.remove(t);}};return o?jsx(Q,{engineDisabled:n,disabledReason:f,slotProps:v,children:r}):jsx("button",{...v,children:s??r??q(Ft)})}$e.docxReviewPart="Delete";function dt({className:e,hidden:o}){let{byId:l}=H(),r=useContext(P);if(o||!r||r.kind==="custom")return null;let s=r.replyIds.map(n=>l.get(n)).filter(n=>n!==void 0);return s.length===0?null:jsx("ol",{className:`docx-review__replies${e?` ${e}`:""}`,children:s.map(n=>jsx(P.Provider,{value:n,children:jsxs("li",{className:"docx-review__reply","data-testid":"review-reply",children:[jsxs("div",{className:"docx-review__head",children:[jsx(Re,{}),jsxs("div",{className:"docx-review__meta",children:[jsx(ye,{}),jsx(be,{})]}),jsx("div",{className:"docx-review__actions",children:jsx($e,{})})]}),jsx(ge,{})]})},n.key))})}dt.docxReviewPart="Replies";var So=Object.assign(ko,{List:He,Empty:ct,Card:qe,Avatar:Re,Author:ye,Time:be,Summary:ge,Accept:Ke,Reject:Ve,Resolve:cn,Reopen:dn,Delete:$e,Replies:dt,Reply:mn,Markers:st,AddComment:at,Draft:un,Balloon:lt});function he(e){let o=useDocxEditor();return useMemo(()=>e||(o?.getCustomNodeDefinitions()??[]).filter(j),[e,o])}var Ko=".docx-content-control-boundary";function se(e,o){let{node:l,definition:r,controlId:s}=e,n=s?o?.getReviewItems().find(i=>i.kind==="custom"&&i.item.id===s):void 0;if(n&&n.kind==="custom"){let i=n.item;return {...l,attrs:i.attrs,text:i.text,...i.data===void 0?{}:{data:i.data},...s?{nodeId:s}:{}}}let a=s?Vo(o,s,r):void 0,t=r.fromDocx?r.fromDocx({attrs:l.attrs,text:"",...a===void 0?{}:{data:a}}):l.attrs;return t===null?null:{...l,attrs:t,...a===void 0?{}:{data:a},...s?{nodeId:s}:{}}}function Vo(e$1,o,l){let r=e$1?.surface;if(!r)return;let s=partOfNodeId(r.session,o),n=customNodePayloadsByControl(r.session.currentPackage(),(s??r.session.part()).name,r.session.part().name).get(o);if(!n)return;let a=e(l.schema,n.data);return a.ok?a.value:void 0}function ae(e,o){let l=e?.closest?.(Ko),r=l?.closest(".docx-content-control-chrome"),s=r?.getAttribute("data-tag"),n=s?c(s):null;if(!l||!n||!s)return null;let a=o.find(t=>t.tagPrefix===n.prefix&&t.name===n.name);return a?{node:{name:n.name,attrs:n.attrs,tag:s,rect:l.getBoundingClientRect()},definition:a,controlId:r?.getAttribute("data-docx-content-control")??null}:null}var ut=".docx-content-control-boundary",Yo=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 Zo(e){let{onNodeClick:o,onNodeHover:l}=e,r=useDocxEditor(),s=he(e.nodes);return useEffect(()=>{let n=document.createElement("style"),a=[];for(let t of s){let i=Yo(t);if(i.length===0)continue;let c=t.chrome?.color!==void 0&&CSS.supports("color",t.chrome.color)?t.chrome.color:"var(--doc-accent)";a.push(`${i.map(f=>`${f} ${ut}`).join(", ")} {`," pointer-events: auto !important;"," opacity: 1;"," border: none;",` background: color-mix(in srgb, ${c} 12%, transparent);`," border-radius: 6px;"," cursor: default;","}");}return n.textContent=a.join(`
2
+ `),document.head.append(n),()=>n.remove()},[s]),useEffect(()=>{let n=null,a=null,t=v=>ae(document.elementFromPoint(v.clientX,v.clientY),s),i=v=>{let u=v.button===0?t(v):null;n=u?.controlId??null,a=u?.node.tag??null;},c=v=>{let u=n,d=a;if(n=null,a=null,d===null)return;let p=t(v);if(!p||p.node.tag!==d||u!==null&&p.controlId!==u)return;let w=se(p,r);w&&(p.definition.onClick?.(w),o?.(w));},f=v=>{let u=ae(v.target,s);if(!u||v.relatedTarget?.closest?.(ut)===v.target.closest(ut))return;let p=se(u,r);p&&(u.definition.onHover?.(p),l?.(p));};return document.addEventListener("pointerdown",i,true),document.addEventListener("pointerup",c,true),document.addEventListener("mouseover",f),()=>{document.removeEventListener("pointerdown",i,true),document.removeEventListener("pointerup",c,true),document.removeEventListener("mouseover",f);}},[s,r,o,l]),null}var Wo=e=>e.editingMode==="viewing";function Rn(e){let{onEditNode:o,onRemoveRefused:l,remove:r=true}=e,s=he(e.nodes),n=useContextMenuTarget(),a=useDocxEditor(),{t}=useTranslation(),i=useMemo(()=>n?ae(n,s):null,[n,s]),c=useMemo(()=>i?se(i,a):null,[i,a]),f=useEditorState(Wo),v=useMemo(()=>!i?.definition.reviewCard||!c?null:i.definition.reviewCard({attrs:c.attrs,text:c.text??"",...c.data===void 0?{}:{data:c.data}}),[i,c]);if(!i||!c)return null;let{definition:u}=i,d=u.label??u.name,p=!f&&(u.onEdit!==void 0||o!==void 0),w=!f&&r&&c.nodeId!==void 0&&a!==null;return !v&&!p&&!w?null:jsxs(Fragment,{children:[v?jsxs("div",{className:"docx-contextmenu__custom-info","data-testid":"custom-node-info",children:[jsx("span",{className:"docx-contextmenu__custom-title",children:v.title}),v.detail?jsx("span",{className:"docx-contextmenu__custom-detail",children:v.detail}):null]}):null,p?jsx(ContextMenuItem,{label:t("contextMenu.editCustomNode",{label:d}),className:"docx-contextmenu__custom-edit",onSelect:()=>{u.onEdit?.(c),o?.(c,u);}}):null,w?jsx(ContextMenuItem,{label:t("contextMenu.removeCustomNode",{label:d}),className:"docx-contextmenu__custom-remove",onSelect:()=>{let b=q$1(a,c.nodeId);b.ok||l?.(c,b.reason);}}):null,jsx("div",{role:"separator",className:"docx-toolbar__menu-separator"})]})}Rn.docxRowPlacement="start";export{Zo as CustomNodeChrome,Rn as CustomNodeContextMenu,So as DocxEditorReview,se as activatedCustomNodeOf,ae as resolveCustomNodeActivation,he as useCustomNodeDefinitions,Me as useReview,Co as useReviewAuthor,xo as useReviewItem,qt as useReviewOf,Yn as useStackedReviewPositions};
@@ -1,2 +1,2 @@
1
- 'use strict';var store=require('@docx-editor.dev/core/store'),layout=require('@docx-editor.dev/core/layout'),vue=require('vue'),vue$1=require('@docx-editor.dev/vue'),jsxRuntime=require('vue/jsx-runtime');function Zt(e){}var uo=new Set(["__proto__","constructor","prototype"]);function ze(e){if(e.length>64)return null;let t=e.indexOf(":");if(t<=0)return null;let r=e.slice(0,t),n=e.slice(t+1),o=n.indexOf("?"),i=o===-1?n:n.slice(0,o);if(i.length===0)return null;let s=Object.create(null);if(o!==-1)for(let[a,u]of new URLSearchParams(n.slice(o+1))){if(uo.has(a))return null;s[a]=u;}return {prefix:r,name:i,attrs:s}}function Xe(e,t){if(t.length===0)return {ok:false,reason:"malformed",issues:["the node carries no payload"]};if(t.length>262144)return {ok:false,reason:"malformed",issues:[`the payload is ${String(t.length)} characters; the cap is ${String(262144)}`]};let r;try{r=JSON.parse(t);}catch(i){return {ok:false,reason:"malformed",issues:[i instanceof Error?i.message:"the payload is not JSON"]}}let n=xt(r);if(!e)return {ok:true,value:n};let o=e["~standard"].validate(n);return co(o)?{ok:false,reason:"async",issues:["the schema validates asynchronously, which the read path cannot await"]}:o.issues?{ok:false,reason:"invalid",issues:o.issues.map(mo)}:{ok:true,value:o.value}}function co(e){return typeof e.then=="function"}function mo(e){let t=(e.path??[]).map(r=>String(typeof r=="object"?r.key:r)).join(".");return t.length>0?`${t}: ${e.message}`:e.message}var fo=new Set(["__proto__","constructor","prototype"]);function xt(e){if(Array.isArray(e))return e.map(xt);if(e===null||typeof e!="object")return e;let t=Object.create(null);for(let[r,n]of Object.entries(e))fo.has(r)||(t[r]=xt(n));return t}function Je(e){return typeof e=="object"&&e!==null&&typeof e.name=="string"&&typeof e.tagPrefix=="string"}var Nt=/^[A-Za-z0-9_.-]+$/;function po(e){for(let t of e.children)if(!(t.kind==="textValue"||t.localName!=="sdtPr")){for(let r of t.children)if(!(r.kind==="textValue"||r.localName!=="tag")){for(let n of r.attributes)if(n.localName==="val")return n.value}}}function Wt(e){if(e.kind==="textValue")return e.value;let t="";for(let r of e.children)t+=Wt(r);return t}function zt(e,t,r={}){if(t.length===0)return [];let n=new Map;for(let s of t){let a=`${s.tagPrefix}:${s.name}`;if(n.has(a))throw new Error(`recognizeCustomNodes: duplicate definition for ${JSON.stringify(a)}`);n.set(a,s);}let o=[],i=(s,a)=>{if(!(s.kind==="textValue"||a>64)){if(s.kind==="contentControl"){let u=po(s),d=u!==void 0?ze(u):null,l=d?n.get(`${d.prefix}:${d.name}`):void 0;if(d&&l&&u!==void 0){let c=Wt(s),f=yo(l,s.id,r.payloads?.get(s.id),store.contentControlPropertiesOf(s).dataBinding!==void 0,r.onDiagnostic),m=l.fromDocx?l.fromDocx({attrs:d.attrs,text:c,...f.present?{data:f.value}:{}}):d.attrs;if(m!==null){o.push({name:l.name,attrs:m,text:c,nodeId:s.id,tag:u,...f.present?{data:f.value}:{}});return}}}for(let u of s.children)i(u,a+1);}};return i(e.root,0),o}function yo(e,t,r,n,o){if(!r)return n&&o?.({code:"payload-missing",name:e.name,nodeId:t,issues:["the control binds a store node this document does not hold"]}),{present:false};let i=Xe(e.schema,r.data);return i.ok?{present:true,value:i.value}:(o?.({code:"payload-invalid",name:e.name,nodeId:t,issues:i.issues}),{present:false})}function Jt(e,t){let r=store.findNode(e,t);return !r||r.kind!=="paragraph"?[]:store.revisionItemsOf({id:e.id,name:e.name,contentType:e.contentType,root:r})}function No(e,t,r,n){if(t.length===0)return [];let o=zt(e,t,{...r===void 0?{}:{payloads:r},...n===void 0?{}:{onDiagnostic:n}});if(o.length===0)return [];let i=store.locateSites(e),s=[];for(let a of o){let u=t.find(c=>c.name===a.name&&a.tag.startsWith(`${c.tagPrefix}:`));if(!u)continue;let d=u.reviewCard?u.reviewCard({attrs:a.attrs,text:a.text,...a.data===void 0?{}:{data:a.data}}):null;if(u.reviewCard&&d===null)continue;let l=i.get(a.nodeId);s.push({kind:"custom",id:a.nodeId,name:a.name,tag:a.tag,attrs:a.attrs,text:a.text,...a.data===void 0?{}:{data:a.data},carded:u.reviewCard!==void 0&&d!==null,title:d?.title??"",...d?.detail!==void 0?{detail:d.detail}:{},...d?.icon!==void 0?{icon:d.icon}:{},range:l?{partName:e.name,start:{paragraphId:l.paragraphId,offset:l.start},end:{paragraphId:l.paragraphId,offset:l.end}}:null});}return s}function Qt(e){let t=store.collectReviewItems(e),r=(e.customNodes??[]).filter(Je);if(r.length===0)return t;let n=[e.storyPart],o=new Set([e.storyPart.name]);for(let u of e.furnitureParts??[])o.has(u.name)||(o.add(u.name),n.push(u));let i=[],s=new Map;for(let u of n){i.push(...No(u,r,u.name===e.storyPart.name?e.customNodePayloads:void 0,e.reportCustomNodeDiagnostic));let d=s.size;for(let[l,c]of store.paragraphOrderOfPart(u))s.has(l)||s.set(l,d+c);}return i.length===0?t:[...t,...i].sort((u,d)=>layout.reviewItemPositionRank(u,s)-layout.reviewItemPositionRank(d,s))}function Co(e={}){return Zt(e.licenseKey),{id:"review",review:{displayModes:["all-markup","proposed","original"],collectReviewItems:Qt,revisionItemsOfParagraph:Jt}}}var en=Symbol("proEditorRenderRevision");function tn(e){return vue.provide(en,e),e}function fe(){let e=vue.inject(en,null);if(e)return e;let t=vue$1.useDocxEditor(),r=vue.shallowRef("none");return vue.watch(()=>t.value,(n,o,i)=>{if(!n){r.value="none";return}let s=n,a=`${s.getReviewRevision()}:${s.getEditingMode()}`;r.value=a;let u=false,d=null,l=()=>{u||d!==null||(d=setTimeout(()=>{if(d=null,u)return;let g=`${s.getReviewRevision()}:${s.getEditingMode()}`;g!==a&&(a=g,r.value=g);},0));},c=s.on("change",l),f=s.on("selectionChange",l),m=s.on("error",l);i(()=>{u=true,d!==null&&clearTimeout(d),c(),f(),m();});},{immediate:true,flush:"sync"}),r}function Qe(e){if(e!==void 0)return typeof e=="function"?e():typeof e=="object"&&e!==null&&"value"in e?e.value:e}function nn(e){return `${e.getReviewRevision()}:${e.getEditingMode()}`}function Oo(e){let t=vue$1.useDocxEditor(),r=fe();return bt(t,e,r)}function Ct(e,t){let r=vue$1.useDocxEditor();return bt(r,e,t)}function _o(e,t){return bt(e,t)}function bt(e,t,r){let n=r?null:vue.shallowRef("none"),o=()=>{(r??n)?.value;};r||vue.watch(()=>e.value,(w,x,P)=>{if(!w){n.value="none";return}let K=nn(w);n.value=K;let J=false,Y=null,ne=()=>{J||Y!==null||(Y=setTimeout(()=>{if(Y=null,J)return;let Ne=nn(w);Ne!==K&&(K=Ne,n.value=Ne);},0));},pt=w.on("change",ne),yt=w.on("selectionChange",ne),Fe=w.on("error",ne);P(()=>{J=true,Y!==null&&clearTimeout(Y),pt(),yt(),Fe();});},{immediate:true,flush:"sync"});let i=vue.computed(()=>{o();let w=e.value,x=Qe(t);return w?w.getReviewItems(x).filter(P=>P.item.kind!=="custom"||P.item.carded):[]}),s=vue.computed(()=>i.value.find(w=>w.isActive)?.key??null),a=(w,x)=>{let P=e.value;return P?P.setActiveReviewItem(w,x).ok:false},u=w=>{let x=e.value;return !x||w.kind!=="revision"||w.readOnly?false:x.acceptReviewItem(w.key).ok},d=w=>{let x=e.value;return !x||w.kind!=="revision"||w.readOnly?false:x.rejectReviewItem(w.key).ok},l=w=>{let x=e.value;return !x||w.kind!=="comment"?false:x.setCommentResolved(w.key,true).ok},c=w=>{let x=e.value;return !x||w.kind!=="comment"?false:x.setCommentResolved(w.key,false).ok},f=vue.computed(()=>(o(),e.value?.getEditingMode()==="viewing"?"the document is open for viewing":null)),m=w=>{let x=e.value;return !x||w.kind==="custom"||w.kind==="revision"&&w.readOnly?false:x.deleteReviewItem(w.key).ok},g=(w,x,P)=>x.trim().length===0||!e.value?false:e.value.replyToReviewItem(w.key,x,P).ok,p=vue.computed(()=>{o();let w=e.value;return w?w.getSelectionPlacement()?.anchorY??null:null}),N=(w,x)=>w.trim().length===0||!e.value?false:e.value.addComment(w,x).ok,I=vue.computed(()=>{o();let w=e.value;return w?w.isReviewPaneOpen():true}),y=w=>{let x=e.value;!x||x.isReviewPaneOpen()===w||x.exec({type:"toggleReviewPane"});},E=vue.computed(()=>{o();let w=e.value;if(w===null)return false;let x=w.snapshot();return !x.isLoading&&x.parseError===null});return {items:i,activeKey:s,setActive:a,accept:u,reject:d,resolve:l,reopen:c,commentResolutionDisabledReason:f,remove:m,reply:g,selectionAnchorY:p,comment:N,paneOpen:I,setPaneOpen:y,ready:E}}function Po(e,t,r={}){return vue.computed(()=>{let n=Qe(e)??[],o=Qe(t)??new Map,i=Qe(r)??{},s=i.gap??8,a=i.scale??1,u=i.defaultHeight??0,d=new Map,l=Number.NEGATIVE_INFINITY;for(let c of n){let f=c.anchorY===null?Number.isFinite(l)?l:0:Math.max(c.anchorY,l);d.set(c.key,f),l=f+((o.get(c.key)??u)+s)/a;}return d})}var Lo=new Set(["List","Markers","AddComment","Draft","Balloon"]),$o=new Set(["Card","Empty"]);function Ko(e){return vue.isVNode(e)}function Ee(e,t){let r=t==="root"?Lo:$o,n={},o=[],i=s=>{for(let a of s){if(!Ko(a))continue;if(a.type===vue.Fragment){let d=Array.isArray(a.children)?a.children:[];i(d);continue}let u=a.type.docxReviewPart;u&&r.has(u)?n[u]=a:o.push(a);}};return i(e),{parts:n,rest:o}}function et(e,t){if(!t)return e;let r=e.props.class;return vue.cloneVNode(e,{class:`${t}${r?` ${r}`:""}`})}var rn=e=>e.isLoading||e.parseError!==null||e.pageSetup==null,ke=e=>e.editingMode==="viewing",an={scale:96/72,top:0,left:null,compactCardLeft:null},sn=16,Te=300,ln=12,te="\0compose",tt=600,nt=8,dn=72,un=64,cn=480,mn=30,fn=Object.freeze({placement:false});function Ae(e,t){return e.kind!=="comment"?false:e.parentId!==void 0?t.has(e.parentId):e.parentRevisionId!==void 0?t.has(e.parentRevisionId):false}function Oe(e){return new Set(e.map(t=>t.id))}function L(e){let t=e.target?.tagName;t==="INPUT"||t==="SELECT"||t==="TEXTAREA"||e.preventDefault();}function vn(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"?":t.slice(0,2).map(r=>r[0].toUpperCase()).join("")}var ot=new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});function pn(e){let t={},r=[],n=o=>{if(!o)return;let i=Array.isArray(o)?o:[o];for(let s of i){if(!vue.isVNode(s))continue;if(s.type===vue.Fragment){n(s.children);continue}let a=s.type.docxReviewPart;a?t[a]=s:r.push(s);}};return n(e),r.length>0&&(t.__extra=r),t}function A(e,t){return e.docxReviewPart=t,e}var St=Symbol("ReviewContext"),Et=Symbol("ReviewItemContext"),Yo={items:[],activeKey:null,setActive:()=>false,accept:()=>false,reject:()=>false,resolve:()=>false,reopen:()=>false,commentResolutionDisabledReason:null,remove:()=>false,reply:()=>false,selectionAnchorY:null,comment:()=>false,paneOpen:true,setPaneOpen:()=>{},ready:false},Go={t:void 0,cardClassName:void 0,readOnly:false,composeTop:null,review:Yo,allItems:[],authorSlots:new Map,authorInfo:new Map,draftAuthor:null,draftAuthorInfo:void 0,draftAuthorSlot:0,byId:new Map,measure:()=>{},beginDraft:()=>{},endDraft:()=>{},expandedResolvedKey:null,setExpandedResolvedKey:()=>{}};function O(){return vue.inject(St,vue.computed(()=>Go))}var Zo=vue.computed(()=>null);function $(){return vue.inject(Et,Zo)}function Wo(e){let t=O();return vue.computed(()=>{let r=vue.toValue(e);return r===void 0?void 0:t.value.authorInfo.get(r)})}function j(){let e=O(),{t}=vue$1.useTranslation();return r=>e.value.t?.(r)??t(r)}function zo(e){return [e.key,e.isActive?"active":"idle",e.readOnly?"readonly":"editable",e.kind==="comment"&&e.resolved?"resolved":"open",e.text,...e.replyIds].join("\0")}var rt=vue.defineComponent({name:"ReviewItemScope",props:{entry:{type:Object,required:true},measureKey:String,collapsed:Boolean,className:String,testId:String,style:{type:Object,default:void 0}},setup(e,{slots:t}){let r=O(),n=vue.shallowRef(e.entry);vue.watchEffect(()=>{let a=r.value.byId.get(e.entry.id)??e.entry;n.value={...a,replyIds:[...a.replyIds]};}),vue.provide(Et,n);let o=null,i=null,s=a=>{let u=a instanceof HTMLElement?a:null,d=u&&e.measureKey?e.measureKey:null;o===u&&i===d||(i&&r.value.measure(null,i),o=u,i=d,o&&i&&r.value.measure(o,i));};return vue.onBeforeUnmount(()=>{s(null);}),()=>vue.h("div",{onVnodeMounted:a=>{s(a.el instanceof Element?a.el:null);},onVnodeUpdated:a=>{s(a.el instanceof Element?a.el:null);},onVnodeBeforeUnmount:()=>{s(null);},class:`docx-review__slot${e.className?` ${e.className}`:""}`,...e.testId?{"data-testid":e.testId}:{},style:e.style,...e.collapsed?{"data-collapsed":""}:{}},[vue.h(vue.Fragment,{key:zo(n.value)},t.default?.())])}}),at=vue.defineComponent({name:"ReviewReplyScope",props:{entry:{type:Object,required:true}},setup(e,{slots:t}){let r=O(),n=vue.shallowRef(e.entry);return vue.watchEffect(()=>{let o=r.value.byId.get(e.entry.id)??e.entry;n.value={...o,replyIds:[...o.replyIds]};}),vue.provide(Et,n),()=>t.default?.()}});function Nn(e){let t=vue.ref(new WeakMap),r=vue.ref(new Map),n=vue.ref(null),o=(i,s)=>{let a=r.value.get(s);if(!i){a&&(n.value?.unobserve(a),t.value.delete(a),r.value.delete(s));return}typeof ResizeObserver>"u"||(e(s,i.offsetHeight),n.value??=new ResizeObserver(u=>{for(let d of u){let l=t.value.get(d.target);l&&e(l,d.target.offsetHeight);}}),!(a===i&&t.value.get(i)===s)&&(a&&(n.value.unobserve(a),t.value.delete(a)),t.value.set(i,s),r.value.set(s,i),n.value.observe(i)));};return vue.onUnmounted(()=>{n.value?.disconnect(),r.value.clear();}),o}function Tt(e,t){return e?.color??`var(--doc-review-author-${t%nt})`}function se(e,t,r){return e?{"--doc-review-author-current":Tt(t,r)}:{}}function ve(e,t){return (e?.slot??t)%nt}function Cn(e,t,r,n,o){let i=new Map;for(let a of e)i.set(a.author,a);let s=[...t.map(a=>a.author),n?.getConfiguredAuthor()];for(let a of s){if(!a||i.has(a))continue;let u=r.get(a)??0,d=n?.getReviewAuthorStyle(a),l=d?.color??`var(--doc-review-author-${u%nt})`,c=o.get(a),f=c?.slot===u&&c.color===l&&c.style===d?c:{author:a,slot:u,color:l,...d?{style:d}:{}};o.set(a,f),i.set(a,f);}return i}var F=e=>vue.h("svg",{viewBox:"0 -960 960 960",width:16,height:16,ariaHidden:true,focusable:false},[vue.h("path",{d:e,fill:"currentColor"})]),In="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",bn="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",Jo="M880-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",Pe="M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z",it=()=>vue.h("span",{class:"docx-review__resolved-icon"},[vue.h("span",{class:"docx-review__resolved-comment"},[F(Jo)]),vue.h("span",{class:"docx-review__resolved-tick"},[F(Pe)])]),Sn="M480-160q-134 0-227-93t-93-227q0-134 93-227t227-93q69 0 132 28.5T720-690v-110h80v280H520v-80h168q-32-56-87.5-88T480-720q-100 0-170 70t-70 170q0 100 70 170t170 70q77 0 139-44t87-116h84q-28 106-114 173t-196 67Z",En="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",kn="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",Qo="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",er="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",tr="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",nr="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 Tn(e){if(e.kind==="comment")return bn;if(e.kind==="custom")return e.item.icon??nr;switch(e.revisionKind){case "insert":case "moveTo":return Qo;case "delete":case "moveFrom":return er;case "format":return tr;default:return bn}}function st(e,t){if(e==="paragraphMark")return t==="delete"?"revisions.paragraphMarkDeleted":t==="moveFrom"?"revisions.paragraphMarkMovedFrom":t==="moveTo"?"revisions.paragraphMarkMovedTo":"revisions.paragraphMarkInserted";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";default:return "review.structural"}}function ar(e,t){return typeof t!="function"?e:typeof e!="function"?t:r=>{e(r),r.defaultPrevented||t(r);}}function ir(e,t){let r=vue.mergeProps(e,t);for(let n of Object.keys(e))/^on[A-Z]/.test(n)?r[n]=ar(t[n],e[n]):n==="class"?r[n]=[e[n],t[n]].filter(Boolean).join(" "):n==="style"&&(r[n]={...e[n],...t[n]});return r}function Pn(e){return e==="Enter"||e===" "}function sr(e){return Pn(e.key)?(e.preventDefault(),e.stopPropagation(),true):false}function On(e){return e==="button"}function _n(e,t){return e==="a"||t.href!=null}var pe=vue.defineComponent({name:"ReviewActionSlot",props:{engineDisabled:{type:Boolean,required:true},disabledReason:{type:String,default:null},slotProps:{type:Object,required:true}},setup(e,{slots:t}){return ()=>{let r=t.default?.()??[];if(r.length!==1)return null;let n=r[0];if(!n||typeof n!="object")return null;let o=n.props??{},i=ir(e.slotProps,o);if(!e.engineDisabled){if(!On(n.type)){let s={onClick:a=>{typeof o.onClick=="function"&&o.onClick(a),!a.defaultPrevented&&typeof e.slotProps.onClick=="function"&&e.slotProps.onClick(a),_n(n.type,o)&&a.preventDefault();},onKeydown:a=>{typeof o.onKeydown=="function"&&o.onKeydown(a),Pn(a.key)&&(!a.defaultPrevented&&typeof e.slotProps.onClick=="function"&&e.slotProps.onClick(a),_n(n.type,o)&&a.preventDefault());}};i.onClick=s.onClick,i.onKeydown=s.onKeydown;}return vue.cloneVNode(n,i)}if(On(n.type))i.disabled=true,delete i["aria-disabled"];else {delete i.disabled,i["aria-disabled"]=true,i["data-disabled"]="",i.tabIndex=-1,i.href=void 0,i.role===void 0&&(i.role="button");let s=i.onKeydown;i.onKeydown=a=>{sr(a)||typeof s=="function"&&s(a);};}return e.disabledReason&&(i.title=e.disabledReason),i.onClick=s=>{s.preventDefault(),s.stopPropagation();},vue.cloneVNode(n,i)}}});function Vn(e){let t=A(vue.defineComponent({name:"ReviewResolve",props:{className:String,asChild:Boolean,hidden:Boolean,icon:{type:[Object,String],default:void 0}},setup(n,{slots:o}){let i=e.useRail(),s=e.useItem(),a=e.useLabel(),u=vue$1.useEditorState(ke);return ()=>{let d=s.value;if(n.hidden||!d||d.kind!=="comment"||d.resolved)return null;let l=i.value.review,c=a("comments.resolve"),f=u.value||l.commentResolutionDisabledReason!==null,m=f?a("editingMode.viewingHint"):null,g={type:"button",class:`docx-review__action${n.className?` ${n.className}`:""}`,"data-testid":"review-resolve","aria-label":c,title:m??c,disabled:f,onMousedown:L,onClick:p=>{p.stopPropagation(),!f&&l.resolve(d);}};return n.asChild?vue.h(pe,{engineDisabled:f,disabledReason:m,slotProps:g},o.default):vue.h("button",g,n.icon??o.default?.()??F(Pe))}}}),"Resolve"),r=A(vue.defineComponent({name:"ReviewReopen",props:{className:String,asChild:Boolean,hidden:Boolean,icon:{type:[Object,String],default:void 0}},setup(n,{slots:o}){let i=e.useRail(),s=e.useItem(),a=e.useLabel(),u=vue$1.useEditorState(ke);return ()=>{let d=s.value;if(n.hidden||!d||d.kind!=="comment"||!d.resolved)return null;let l=i.value.review,c=a("comments.reopen"),f=u.value||l.commentResolutionDisabledReason!==null,m=f?a("editingMode.viewingHint"):null,g={type:"button",class:`docx-review__action${n.className?` ${n.className}`:""}`,"data-testid":"review-reopen","aria-label":c,title:m??c,disabled:f,onMousedown:L,onClick:p=>{p.stopPropagation(),!f&&l.reopen(d);}};return n.asChild?vue.h(pe,{engineDisabled:f,disabledReason:m,slotProps:g},o.default):vue.h("button",g,n.icon??o.default?.()??F(Sn))}}}),"Reopen");return {ReviewResolve:t,ReviewReopen:r}}var Ln=new WeakMap;function Me(e){let t=vue.getCurrentInstance();if(!t)throw new Error("useReviewStableId must run during component setup");let r=t.appContext,n=Ln.get(r)??0;return Ln.set(r,n+1),`docx-review-${n}-${e}`}function Hn(e){let t=A(vue.defineComponent({name:"ReviewDraft",props:{top:{type:Number,default:0},left:{type:Number,default:null},className:String,hidden:Boolean},setup(n){let o=e.useRail(),i=e.useLabel(),s=vue.ref(""),a=vue.ref(false),u=Me("draft"),d=null;vue.onMounted(()=>{let c=vue.getCurrentInstance()?.proxy?.$el;if(c instanceof HTMLElement&&(d=o.value.measure,d(c,te)),o.value.readOnly)return;(c instanceof HTMLElement?c.querySelector('[data-testid="review-draft-input"]'):null)?.focus({preventScroll:true});}),vue.onBeforeUnmount(()=>{d?.(null,te);});let l=()=>{let{review:c,endDraft:f,readOnly:m}=o.value;if(m||s.value.trim().length===0)return;let g=c.comment(s.value.trim());a.value=!g,g&&(s.value="",f());};return ()=>{if(n.hidden)return null;let{readOnly:c,draftAuthor:f,draftAuthorInfo:m,draftAuthorSlot:g}=o.value;return vue.h("div",{class:`docx-review__slot${n.left===null?"":" docx-review__slot--compact"}${n.className?` ${n.className}`:""}`,style:{position:"absolute",top:`${n.top}px`,...n.left===null?{}:{left:`${n.left}px`,width:`${Te}px`}}},[vue.h("div",{class:"docx-review__card","data-testid":"review-draft","data-draft":"",...f?{"data-review-author":f,"data-review-author-slot":g}:{},style:se(f??void 0,m,g)},[vue.h("form",{class:"docx-review__reply-box",onSubmit:p=>{p.preventDefault(),l();}},[vue.h("label",{class:"docx-editor-sr-only",for:u},i("comments.addComment")),vue.h("input",{id:u,"data-testid":"review-draft-input",class:"docx-review__input",value:s.value,placeholder:i("comments.addComment"),readonly:c,...a.value?{"aria-invalid":true}:{},onInput:p=>{c||(a.value=false,s.value=p.target.value);},onKeydown:p=>{if(p.key==="Escape"){p.preventDefault(),o.value.endDraft();return}c||p.key!=="Enter"||(p.preventDefault(),l());}}),vue.h("div",{class:"docx-review__reply-actions"},[vue.h("button",{type:"button","data-testid":"review-draft-cancel",class:"docx-review__text-button",onMousedown:L,onClick:()=>o.value.endDraft()},i("common.cancel")),vue.h("button",{type:"submit","data-testid":"review-draft-submit",class:"docx-review__submit",disabled:c||s.value.trim().length===0,title:c?i("editingMode.viewingHint"):void 0},i("common.comment"))]),a.value?vue.h("span",{class:"docx-review__refused",role:"alert"},i("review.commentRefused")):null])])])}}}),"Draft"),r=A(vue.defineComponent({name:"ReviewReply",props:{className:String,hidden:Boolean},setup(n,{slots:o}){let i=e.useRail(),s=e.useItem(),a=e.useLabel(),u=vue.ref(""),d=vue.ref(false),l=Me("reply"),c=fe(),f=vue$1.useDocxEditor(),m=g=>{let p=s.value,{review:N,readOnly:I,byId:y}=i.value,E=g?.querySelector('[data-testid="review-reply-input"]'),w=(E?.value??u.value).trim(),x=p?y.get(p.id)??p:null;if(!x||I||w.length===0)return;let P=f.value?.replyToReviewItem(x.key,w).ok??N.reply(x,w);d.value=!P,P&&(u.value="",E&&(E.value=""));};return ()=>{c.value;let g=s.value;if(n.hidden||!g||!g.isActive||g.kind==="comment"&&g.resolved)return null;let{review:p,readOnly:N}=i.value,I=o.default?.();return I?.length?I:jsxRuntime.jsxs("div",{class:`docx-review__reply-box${n.className?` ${n.className}`:""}`,children:[jsxRuntime.jsx("label",{class:"docx-editor-sr-only",for:l,children:a("comments.replyPlaceholder")}),jsxRuntime.jsx("input",{id:l,"data-testid":"review-reply-input",class:"docx-review__input",placeholder:a("comments.replyPlaceholder"),readonly:N,...d.value?{"aria-invalid":true,"data-refused":""}:{},onInput:y=>{N||(d.value=false,u.value=y.target.value);},onClick:y=>y.stopPropagation(),onKeydown:y=>{N||y.key!=="Enter"||(y.preventDefault(),m(y.currentTarget.closest(".docx-review__reply-box")));}}),jsxRuntime.jsxs("div",{class:"docx-review__reply-actions",children:[jsxRuntime.jsx("button",{type:"button","data-testid":"review-reply-cancel",class:"docx-review__text-button",onMousedown:L,onClick:y=>{y.stopPropagation(),u.value="",d.value=false,p.setActive(null);},children:a("common.cancel")}),jsxRuntime.jsx("button",{type:"button","data-testid":"review-reply-submit",class:"docx-review__submit",disabled:N,title:N?a("editingMode.viewingHint"):void 0,onClick:y=>{y.preventDefault(),y.stopPropagation(),m(y.currentTarget.closest(".docx-review__reply-box"));},children:a("review.reply")})]}),d.value?jsxRuntime.jsx("span",{class:"docx-review__refused",role:"alert","data-testid":"review-reply-refused",children:a("review.replyRefused")}):null]})}}}),"Reply");return {ReviewDraft:t,ReviewReply:r}}var{ReviewResolve:Ot,ReviewReopen:_t}=Vn({useRail:O,useItem:$,useLabel:j}),{ReviewDraft:Pt,ReviewReply:Mt}=Hn({useRail:O,useItem:$,useLabel:j});var ut=A(vue.defineComponent({name:"ReviewEmpty",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let r=j();return ()=>e.hidden?null:jsxRuntime.jsx("div",{class:`docx-review__empty${e.className?` ${e.className}`:""}`,"data-testid":"review-empty",children:t.default?.()??r("review.empty")})}}),"Empty"),ye=A(vue.defineComponent({name:"ReviewAvatar",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let r=$(),n=O();return ()=>{let o=r.value;if(e.hidden||!o)return null;let i=t.default?.();if(i===void 0&&!o.initials)return null;let s={class:`docx-review__avatar${e.className?` ${e.className}`:""}`,"data-testid":"review-avatar","aria-hidden":true};if(e.asChild)return jsxRuntime.jsx(vue$1.Slot,{...s,children:i});let a=n.value.authorInfo.get(o.author)?.style?.avatarUrl,u=i??(a?jsxRuntime.jsx("img",{class:"docx-review__avatar-img",src:a,alt:"",loading:"lazy",decoding:"async",referrerpolicy:"no-referrer"}):void 0)??o.initials;return jsxRuntime.jsx("span",{...s,children:u})}}}),"Avatar"),we=A(vue.defineComponent({name:"ReviewAuthor",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let r=$(),n=j();return ()=>{let o=r.value;if(e.hidden||!o)return null;let i=o.author||n("comments.unknown"),s={class:`docx-review__author${e.className?` ${e.className}`:""}`,"data-testid":"review-author"};return e.asChild?jsxRuntime.jsx(vue$1.Slot,{...s,children:t.default?.()}):jsxRuntime.jsx("span",{...s,children:t.default?.()??i})}}}),"Author"),Re=A(vue.defineComponent({name:"ReviewTime",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let r=$();return ()=>{let n=r.value;if(e.hidden||!n)return null;let o=n.date;if(!o)return null;let i=new Date(o);if(Number.isNaN(i.getTime()))return null;let s={class:`docx-review__time${e.className?` ${e.className}`:""}`,"data-testid":"review-time",datetime:o};return e.asChild?jsxRuntime.jsx(vue$1.Slot,{...s,children:t.default?.()}):jsxRuntime.jsx("time",{...s,children:t.default?.()??ot.format(i)})}}}),"Time"),ge=A(vue.defineComponent({name:"ReviewSummary",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let r=$(),n=j();return ()=>{let o=r.value;if(e.hidden||!o)return null;let i=o.text,s=o.kind!=="revision"?null:n(st(o.revisionKind,o.item.markDirection)),a=o.kind==="revision"&&o.revisionKind==="replace",u={class:`docx-review__summary${e.className?` ${e.className}`:""}`,"data-testid":"review-summary","data-review-selectable":""};if(e.asChild)return jsxRuntime.jsx(vue$1.Slot,{...u,children:t.default?.()});let d=t.default?.();return d?jsxRuntime.jsx("div",{...u,children:d}):jsxRuntime.jsx("div",{...u,children:a?jsxRuntime.jsxs("span",{class:"docx-review__text",children:[n("review.replaced")," ",jsxRuntime.jsxs("span",{class:"docx-review__removed",children:['"',o.replacedText,'"']})," ",n("review.replacedWith")," ",jsxRuntime.jsxs("span",{class:"docx-review__added",children:['"',i,'"']})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[s?jsxRuntime.jsx("span",{class:"docx-review__label","data-kind":o.kind==="revision"?o.revisionKind:"revision",children:s}):null,i?jsxRuntime.jsx("span",{class:"docx-review__text",children:i}):null]})})}}}),"Summary");function Bn(e,t,r,n,o,i,s){return A(vue.defineComponent({name:e,props:{className:String,asChild:Boolean,hidden:Boolean,icon:{type:[Object,String],default:void 0}},setup(a,{slots:u}){let d=O(),l=$(),c=j();return ()=>{let f=l.value,{readOnly:m,review:g}=d.value;if(a.hidden||!f||!s(f))return null;let p=c(n),N=m?c("editingMode.viewingHint"):null,I={type:"button",class:`docx-review__action${a.className?` ${a.className}`:""}`,"data-testid":r,"aria-label":p,title:N??p,disabled:m,onMousedown:L,onClick:y=>{y.stopPropagation(),!m&&i(g,f);}};return a.asChild?jsxRuntime.jsx(pe,{engineDisabled:m,disabledReason:N,slotProps:I,children:u.default?.()}):jsxRuntime.jsx("button",{...I,children:a.icon??u.default?.()??F(o)})}}}),t)}var $e=Bn("ReviewAccept","Accept","review-accept","review.accept",Pe,(e,t)=>e.accept(t),e=>e.kind==="revision"&&!e.readOnly),Ke=Bn("ReviewReject","Reject","review-reject","review.reject",En,(e,t)=>e.reject(t),e=>e.kind==="revision"&&!e.readOnly),ct=A(vue.defineComponent({name:"ReviewDelete",props:{className:String,asChild:Boolean,hidden:Boolean,icon:{type:[Object,String],default:void 0}},setup(e,{slots:t}){let r=O(),n=$(),{t:o}=vue$1.useTranslation();return ()=>{let i=n.value,{readOnly:s,review:a}=r.value;if(e.hidden||!i||i.kind==="custom"||i.kind==="revision"&&i.readOnly)return null;let u=i.kind==="comment"?o("review.deleteComment"):o("review.discardChange"),d=s?o("editingMode.viewingHint"):null,l={type:"button",class:`docx-review__action${e.className?` ${e.className}`:""}`,"data-testid":"review-delete","aria-label":u,title:d??u,disabled:s,onMousedown:L,onClick:c=>{c.stopPropagation(),!s&&a.remove(i);}};return e.asChild?jsxRuntime.jsx(pe,{engineDisabled:s,disabledReason:d,slotProps:l,children:t.default?.()}):jsxRuntime.jsx("button",{...l,children:e.icon??t.default?.()??F(kn)})}}}),"Delete"),Dt=A(vue.defineComponent({name:"ReviewReplies",props:{className:String,hidden:Boolean},setup(e){let t=O(),r=$();return ()=>{let n=r.value;if(e.hidden||!n||n.kind==="custom")return null;let i=(t.value.byId.get(n.id)??n).replyIds.map(s=>t.value.byId.get(s)).filter(s=>s!==void 0);return i.length===0?null:jsxRuntime.jsx("ol",{class:`docx-review__replies${e.className?` ${e.className}`:""}`,children:i.map(s=>jsxRuntime.jsx(at,{entry:s,children:jsxRuntime.jsxs("li",{class:"docx-review__reply","data-testid":"review-reply",children:[jsxRuntime.jsxs("div",{class:"docx-review__head",children:[jsxRuntime.jsx(ye,{}),jsxRuntime.jsxs("div",{class:"docx-review__meta",children:[jsxRuntime.jsx(we,{}),jsxRuntime.jsx(Re,{})]}),jsxRuntime.jsx("div",{class:"docx-review__actions",children:jsxRuntime.jsx(ct,{})})]}),jsxRuntime.jsx(ge,{})]})},s.key))})}}}),"Replies"),qn=vue.defineComponent({name:"ReviewCardPreset",setup(e,{slots:t}){let r=$(),n=vue.computed(()=>pn(t.default?.()));return ()=>{let o=r.value;if(!o)return null;let i=(a,u)=>a in n.value?n.value[a]:u;if(o.kind==="custom"&&o.item.kind==="custom"){let a=o.item;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{class:"docx-review__head",children:[i("Avatar",null),jsxRuntime.jsx("div",{class:"docx-review__meta",children:i("Author",jsxRuntime.jsx("span",{class:"docx-review__author","data-testid":"review-custom-title",children:a.title}))})]}),i("Summary",a.detail?jsxRuntime.jsx("div",{class:"docx-review__summary","data-testid":"review-summary","data-review-selectable":"",children:jsxRuntime.jsx("span",{class:"docx-review__text",children:a.detail})}):null),n.value.__extra]})}let s=o.kind==="revision"&&!o.readOnly;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{class:"docx-review__head",children:[i("Avatar",jsxRuntime.jsx(ye,{})),jsxRuntime.jsxs("div",{class:"docx-review__meta",children:[i("Author",jsxRuntime.jsx(we,{})),i("Time",jsxRuntime.jsx(Re,{}))]}),s||o.kind==="comment"?jsxRuntime.jsxs("div",{class:"docx-review__actions",children:[i("Accept",jsxRuntime.jsx($e,{})),i("Reject",jsxRuntime.jsx(Ke,{})),i("Resolve",jsxRuntime.jsx(Ot,{})),i("Reopen",jsxRuntime.jsx(_t,{})),i("Delete",jsxRuntime.jsx(ct,{}))]}):null]}),i("Summary",jsxRuntime.jsx(ge,{})),i("Replies",jsxRuntime.jsx(Dt,{})),i("Reply",jsxRuntime.jsx(Mt,{})),n.value.__extra]})}}}),He=A(vue.defineComponent({name:"ReviewCard",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let r=O(),n=$(),o=Me("card"),i=j(),s=null,a=d=>{s=d.el instanceof HTMLDetailsElement?d.el:s;},u=d=>{s?.open&&d.target instanceof Node&&!s.contains(d.target)&&(r.value.setExpandedResolvedKey(null),r.value.review.setActive(null),s.open=false);};return vue.onMounted(()=>document.addEventListener("pointerdown",u,true)),vue.onBeforeUnmount(()=>document.removeEventListener("pointerdown",u,true)),()=>{let d=n.value;if(e.hidden||!d)return null;let{review:l,authorSlots:c,authorInfo:f,expandedResolvedKey:m,setExpandedResolvedKey:g}=r.value,p=c.get(d.author)??0,N=!e.asChild&&d.kind==="comment"&&d.resolved,I={class:`docx-review__card${e.className?` ${e.className}`:""}`,"data-testid":"review-card",...N?{}:{"aria-labelledby":`${o}-author ${o}-summary`},"data-kind":d.kind==="revision"?d.revisionKind??"revision":d.kind,...d.author?{"data-review-author":d.author,"data-review-author-slot":ve(f.get(d.author),p)}:{},...d.kind==="custom"&&d.item.kind==="custom"?{"data-node-name":d.item.name}:{},...d.isActive?{"data-active":""}:{},...d.kind==="comment"&&d.resolved?{"data-resolved":""}:{},...N?{"data-resolved-miniature":""}:{},style:se(d.author,f.get(d.author),p),...N?{}:{tabIndex:0,role:"button"},id:o,...N?{}:{onMousedown:y=>{y.target?.closest("[data-review-selectable]")||y.currentTarget.focus({preventScroll:true});},onClick:y=>{y.target?.closest("button, input, textarea, .docx-review__reply-box, [data-review-selectable]")||d.isActive||l.setActive(d.key);},onKeydown:y=>{y.target===y.currentTarget&&(y.key!=="Enter"&&y.key!==" "||(y.preventDefault(),l.setActive(d.key)));}}};return e.asChild?jsxRuntime.jsx(vue$1.Slot,{...I,children:t.default?.()}):N?vue.h("details",{...I,open:m===d.key,onVnodeMounted:a,onVnodeUpdated:a,onVnodeBeforeUnmount:()=>{s=null;},onToggle:y=>{let E=y.currentTarget.open;g(E?d.key:null),l.setActive(E?d.key:null);}},[vue.h("summary",{class:"docx-review__resolved-toggle","aria-label":i("review.showResolvedComment")},[vue.h("span",{class:"docx-review__resolved-status"},i("review.resolved")),it()]),vue.h(qn,null,{default:()=>t.default?.()})]):jsxRuntime.jsx("div",{...I,children:vue.h(qn,null,{default:()=>t.default?.()})})}}}),"Card");var $t=A(vue.defineComponent({name:"ReviewList",props:{stack:{type:Boolean,default:true},positions:{type:Object,default:void 0},collapsed:{type:Object,default:void 0},scale:{type:Number,default:1},offset:{type:Number,default:0},window:{type:Object,default:null},className:String,hidden:Boolean},setup(e,{slots:t}){let r=O();return ()=>{if(e.hidden)return null;let{review:n,cardClassName:o}=r.value,i=t.default?.()??[],s=t.item,a=s?null:Ee(i,"list"),u=Oe(n.items),d=n.items.filter(l=>!Ae(l,u));return d.length===0?s?null:a?.parts.Empty??jsxRuntime.jsx(ut,{}):vue.h("div",{class:`docx-review__list${e.className?` ${e.className}`:""}`},d.map(l=>{let c=e.stack?e.positions?.get(l.key)??l.anchorY:l.anchorY,f=c==null?null:e.offset+c*e.scale;if(f!==null&&e.window&&(f<e.window.top||f>e.window.bottom))return null;let m=f===null?{}:{position:"absolute",top:`${f}px`};return vue.h(rt,{key:l.key,entry:l,measureKey:l.key,collapsed:e.collapsed?.has(l.key),style:m},()=>s?s({item:l}):a?.parts.Card?et(a.parts.Card,o):vue.h(He,o?{className:o}:{},()=>a?.rest))}))}}}),"List"),Kt=A(vue.defineComponent({name:"ReviewMarkers",props:{scale:{type:Number,default:1},offset:{type:Number,default:0},window:{type:Object,default:null},className:String,hidden:Boolean,icon:{type:[Object,Function],default:void 0}},setup(e){let t=O(),r=j(),n=vue.computed(()=>{let{review:o}=t.value,i=Oe(o.items),s=o.items.filter(d=>!Ae(d,i)),a=new Map,u=Number.NEGATIVE_INFINITY;for(let d of s){if(d.anchorY===null)continue;let l=Math.max(e.offset+d.anchorY*e.scale,u);a.set(d.key,l),u=l+mn;}return {roots:s,stackedTops:a}});return ()=>{if(e.hidden)return null;let{review:o,authorSlots:i,authorInfo:s,setExpandedResolvedKey:a}=t.value,{roots:u,stackedTops:d}=n.value;return jsxRuntime.jsx("div",{class:`docx-review__markers${e.className?` ${e.className}`:""}`,children:u.map(l=>{let c=d.get(l.key);return c===void 0||e.window&&(c<e.window.top||c>e.window.bottom)?null:jsxRuntime.jsx("button",{type:"button",class:"docx-review__marker","data-testid":"review-marker","data-kind":l.kind==="revision"?l.revisionKind:l.kind,...l.author?{"data-review-author":l.author,"data-review-author-slot":ve(s.get(l.author),i.get(l.author)??0)}:{},style:{position:"absolute",top:`${c}px`,...l.author?{"--doc-review-author-current":Tt(s.get(l.author),i.get(l.author)??0)}:{}},title:l.author?`${l.author}: ${l.text}`:l.text,"aria-label":`${r("review.showPane")}: ${l.author?`${l.author}. `:""}${l.text}`,onMousedown:L,onClick:()=>{l.kind==="comment"&&l.resolved&&a(l.key),o.setPaneOpen(true),o.setActive(l.key);},children:(typeof e.icon=="function"?e.icon(l):e.icon)??(l.kind==="comment"&&l.resolved?it():F(Tn(l)))},l.key)})})}}}),"Markers"),Ht=A(vue.defineComponent({name:"ReviewAddComment",props:{top:{type:Number,default:null},drafting:{type:Boolean,default:false},className:String,hidden:Boolean},setup(e,{slots:t}){let r=O(),n=j();return ()=>{let{beginDraft:o,composeTop:i,readOnly:s}=r.value;if(e.hidden||e.drafting||i===null||s)return null;let a={type:"button",class:`docx-review__add${e.className?` ${e.className}`:""}`,"data-testid":"review-add-comment",style:{position:"absolute",top:`${i}px`},"aria-label":n("common.comment"),title:n("common.comment"),onMousedown:L,onClick:o},u=t.default?.();return u?.length?vue.h(vue$1.Slot,a,()=>u):vue.h("button",a,F(In))}}}),"AddComment"),hr=vue.defineComponent({name:"BalloonTime",props:{raw:{type:String,required:true}},setup(e){return ()=>{let t=new Date(e.raw);return Number.isNaN(t.getTime())?null:jsxRuntime.jsx("time",{class:"docx-review__time",datetime:e.raw,children:ot.format(t)})}}}),qt=A(vue.defineComponent({name:"ReviewBalloon",props:{className:String,hidden:Boolean},setup(e){let t=vue.getCurrentInstance(),r=O(),n=j(),o=vue.ref(null),i=vue.ref(false),s=vue.ref(false);vue.watch(o,l=>{i.value=l!==null;});let a;vue.onMounted(()=>{let l=vue.getCurrentInstance()?.proxy?.$el,c=l?.closest(".docx-review"),f=c?.closest(".docx-editor__scroll-container")??c?.offsetParent;if(!l||!c||!f)return;let m=(p,N)=>{let I=c.getBoundingClientRect(),y=p.getBoundingClientRect(),E=p.ownerDocument.defaultView?.innerHeight??1/0,w=Number(p.dataset.start),x=Number(p.dataset.end);o.value={revisionId:p.dataset.revisionId,author:p.dataset.reviewAuthor??"",...p.dataset.revisionDate!==void 0?{date:p.dataset.revisionDate}:{},...p.dataset.revisionKind!==void 0?{kind:p.dataset.revisionKind}:{},structuralSite:N,...p.dataset.paragraphId!==void 0?{paragraphId:p.dataset.paragraphId}:{},...Number.isFinite(w)?{start:w}:{},...Number.isFinite(x)?{end:x}:{},left:y.left-I.left,top:y.top-I.top,bottom:y.bottom-I.top,above:y.bottom+220>E},t?.proxy?.$forceUpdate();},g=p=>{let N=p.target;if(!(N instanceof Element)||l.contains(N))return;let I=N.closest("[data-revision-id]");if(I instanceof HTMLElement&&f.contains(I)){let y=I.classList.contains("docx-table-row--revision");if(I.dataset.revisionKind==="format"||y){m(I,y);return}}i.value&&(o.value=null,t?.proxy?.$forceUpdate());};f.addEventListener("pointerdown",g,true),f.addEventListener("mousedown",g,true),a=()=>{f.removeEventListener("pointerdown",g,true),f.removeEventListener("mousedown",g,true);};}),vue.onUnmounted(()=>a?.());let u=vue.computed(()=>{let l=o.value;if(!l)return null;let{allItems:c}=r.value,f=null,m=false,g=null,p=false,N=null,I=false;for(let y of c)if(!(y.kind!=="revision"||y.item.kind!=="revision")){for(let E of y.item.addresses)if(E.id===l.revisionId){if(E.author===l.author){if(E.date===l.date)return y;f===null?f=y:f!==y&&(m=true);}g===null?g=y:g!==y&&(p=true);}if(l.paragraphId!==void 0&&l.start!==void 0&&l.end!==void 0&&(y.revisionKind==="format"||y.revisionKind==="structural")){for(let E of y.item.ranges)if(E.start.paragraphId===l.paragraphId&&E.start.offset<l.end&&E.end.offset>l.start){N===null?N=y:N!==y&&(I=true);break}}}return f!==null&&!m?f:g!==null&&!p?g:N!==null&&!I?N:null}),d=vue.computed(()=>{let l=u.value;return l&&(l.revisionKind==="format"||l.revisionKind==="structural")?l:null});return vue.watch(d,l=>{if(l){s.value=true;return}s.value&&(s.value=false,o.value=null);}),()=>{if(e.hidden)return null;let{review:l,authorSlots:c,authorInfo:f}=r.value,m=o.value,g=m?.kind==="format"?"format":"structural",p=d.value,N=m===null?null:vue.h("div",{class:"docx-review__balloon","data-testid":"review-balloon",style:{left:`${m.left}px`,top:`${m.above?m.top-6:m.bottom+6}px`,transform:m.above?"translateY(-100%)":void 0},onMousedown:L},p?vue.h(at,{entry:p},()=>vue.h("div",{class:"docx-review__card","data-testid":"review-balloon-card","data-kind":p.revisionKind??"revision",...p.author?{"data-review-author":p.author,"data-review-author-slot":ve(f.get(p.author),c.get(p.author)??0)}:{},style:se(p.author,f.get(p.author),c.get(p.author)??0),onClick:()=>l.setActive(p.key)},[vue.h("div",{class:"docx-review__head"},[vue.h(ye),vue.h("div",{class:"docx-review__meta"},[vue.h(we),vue.h(Re)]),p.kind==="revision"&&!p.readOnly?vue.h("div",{class:"docx-review__actions"},[vue.h($e),vue.h(Ke)]):null]),vue.h(ge)])):vue.h("div",{class:"docx-review__card","data-testid":"review-balloon-card","data-kind":g,...m.author?{"data-review-author":m.author,"data-review-author-slot":ve(f.get(m.author),c.get(m.author)??0)}:{},style:se(m.author,f.get(m.author),c.get(m.author)??0)},[vue.h("div",{class:"docx-review__head"},[vue.h("span",{class:"docx-review__avatar","aria-hidden":true},vn(m.author)),vue.h("div",{class:"docx-review__meta"},[vue.h("span",{class:"docx-review__author"},m.author||n("comments.unknown")),m.date?vue.h(hr,{raw:m.date}):null])]),vue.h("div",{class:"docx-review__summary"},[vue.h("span",{class:"docx-review__label","data-kind":g},n(st(g)))])]));return vue.h("div",{class:`docx-review__balloon-root${e.className?` ${e.className}`:""}`},N===null?void 0:[N])}}}),"Balloon");function Be(e,t,r){if(!(e in r))return t;let n=r[e];return !vue.isVNode(n)||!vue.isVNode(t)?n:vue.cloneVNode(n,vue.mergeProps(t.props??{},n.props??{}))}var Pr=vue.defineComponent({name:"ReviewDraftMount",props:{top:{type:Number,required:true},left:{type:Number,default:null}},setup(e){return ()=>vue.h(Pt,{top:e.top,left:e.left})}});function Mr(e,t){return {items:t,activeKey:e.activeKey.value,setActive:e.setActive,accept:e.accept,reject:e.reject,resolve:e.resolve,reopen:e.reopen,commentResolutionDisabledReason:e.commentResolutionDisabledReason.value,remove:e.remove,reply:e.reply,selectionAnchorY:e.selectionAnchorY.value,comment:e.comment,paneOpen:e.paneOpen.value,setPaneOpen:e.setPaneOpen,ready:e.ready.value}}var Dr=vue.defineComponent({name:"DocxEditorReview",props:{className:String,asChild:Boolean,hidden:Boolean,t:{type:Function,default:void 0},card:{type:Object,default:void 0},furniture:{type:[Object,Array],default:void 0},preset:{type:Boolean,default:true},stack:{type:Boolean,default:true},gap:{type:Number,default:8},filter:{type:Function,default:void 0},structural:{type:Boolean,default:false},formatting:{type:Boolean,default:false}},setup(e,{slots:t}){let r=vue.getCurrentInstance(),n=vue$1.useDocxEditor(),o=vue$1.useEditorState(rn),i=vue$1.useEditorState(ke),s=fe(),a=vue.computed(()=>{let v=[];return e.structural||v.push("structural"),e.formatting||v.push("format"),v.length>0?v:void 0}),u=vue.computed(()=>a.value?{excludeRevisionKinds:a.value}:void 0);vue.watch([n,a],()=>{n.value?.setReviewActivationExclusions(a.value??null);},{immediate:true}),vue.onUnmounted(()=>{n.value?.setReviewActivationExclusions(null);}),tn(s);let d=Ct(fn,s),l=Ct(()=>u.value,s),{t:c}=vue$1.useTranslation(),f=(v,R)=>e.t?.(v,R)??c(v,R),m=vue.shallowRef(null),g=vue.inject(vue$1.ReviewRailContext,vue.shallowRef({mounted:0,register:()=>()=>{},registerCommentDraft:()=>()=>{},requestCommentDraft:()=>false})),p=vue.ref(false),N,I=()=>{if(!p.value||e.hidden){N?.(),N=void 0;return}N??=g.value.register();};vue.onMounted(()=>{p.value=true,I();}),vue.watch(()=>e.hidden,I);let y=vue.computed(()=>l.paneOpen.value),E=vue$1.useReviewGutter(),w=vue.ref(null),x=vue.computed(()=>y.value&&(w.value??E.value.inlineEnd)>0&&(w.value??E.value.inlineEnd)<vue$1.REVIEW_PANE_GUTTER),P=vue.computed(()=>y.value&&!x.value),K=vue.computed(()=>e.filter?l.items.value.filter(v=>e.filter(v)):l.items.value),J=vue.ref(null);vue.watch(K,v=>{let R=J.value;R!==null&&!v.some(h=>h.key===R&&h.kind==="comment"&&h.resolved)&&(J.value=null);},{flush:"sync"});let Y=vue.computed(()=>n.value?.getConfiguredAuthor()??null),ne=vue.computed(()=>{let v=new Map;for(let R of K.value)R.author&&!v.has(R.author)&&v.set(R.author,v.size);return Y.value&&!v.has(Y.value)&&v.set(Y.value,v.size),v}),pt=vue$1.useReviewAuthors(),yt=new Map,Fe=vue.computed(()=>Cn(pt.value,K.value,ne.value,n.value,yt)),Ne=vue.computed(()=>{let v=new Map;for(let R of d.items.value)v.set(R.id,R);return v}),Ye=vue.ref(new Map),no=Nn((v,R)=>{if(R<=0||Ye.value.get(v)===R)return;let h=new Map(Ye.value);h.set(v,R),Ye.value=h;}),M=vue.ref(an),Ce;vue.watch([n,K,o,()=>e.hidden,m,x],()=>{Ce?.(),Ce=void 0;let v=m.value,R=n.value;if(!R||!v||o.value||e.hidden)return;let h=v.offsetParent,k=h?.querySelector(".docx-paginated-surface")??null,b=()=>{if(h){let me=Number.parseFloat(getComputedStyle(h).getPropertyValue("--docx-review-gutter"));w.value=Number.isFinite(me)?me:null;}else w.value=null;let V=k&&h?k.getBoundingClientRect():null,ee=V&&h?h.getBoundingClientRect():null,ue=V&&ee&&h?V.right-ee.left-h.clientLeft+h.scrollLeft+sn:null,re={scale:R.getRenderScale(),top:V&&ee&&h?V.top-ee.top-h.clientTop+h.scrollTop:0,left:ue,compactCardLeft:ue===null||!h?null:h.scrollLeft+h.clientWidth-ue-Te-ln},ce=M.value;(ce.scale!==re.scale||ce.top!==re.top||ce.left!==re.left||ce.compactCardLeft!==re.compactCardLeft)&&(M.value=re);};b();let T=new ResizeObserver(b);h&&T.observe(h),k&&T.observe(k);let U=h&&typeof MutationObserver<"u"?new MutationObserver(b):null;if(U?.observe(h,{attributes:true,attributeFilter:["style"]}),!x.value||!h){Ce=()=>{U?.disconnect(),T.disconnect();};return}let B=0,D=()=>{B===0&&(B=requestAnimationFrame(()=>{B=0,b();}));};h.addEventListener("scroll",D,{passive:true}),Ce=()=>{B!==0&&cancelAnimationFrame(B),h.removeEventListener("scroll",D),U?.disconnect(),T.disconnect();};},{flush:"post"}),vue.onUnmounted(()=>Ce?.());let Ge;vue.watch([n,o,()=>e.hidden,m],()=>{Ge?.(),Ge=void 0;let v=m.value,R=n.value;if(!R||!v||o.value||e.hidden)return;let h=k=>{let b=k.target;if(!(b instanceof Node)||v.contains(b))return;let T=v.offsetParent;!T||!T.contains(b)||T.querySelector(".docx-paginated-surface")?.contains(b)||R.setActiveReviewItem(null);};document.addEventListener("mousedown",h,true),Ge=()=>document.removeEventListener("mousedown",h,true);},{flush:"post"}),vue.onUnmounted(()=>Ge?.());let de=vue.ref(null),Ze;vue.watch([n,o,()=>e.hidden,m],()=>{Ze?.(),Ze=void 0;let v=m.value,R=v?.offsetParent;if(!R||o.value||e.hidden)return;let h=0,k=()=>{h=0;let B=R.scrollTop-tt,D=R.scrollTop+R.clientHeight+tt,V=de.value;de.value=V&&V.top===B&&V.bottom===D?V:{top:B,bottom:D};},b=0,T=()=>{h===0&&(h=requestAnimationFrame(k)),v?.setAttribute("data-scrolling",""),window.clearTimeout(b),b=window.setTimeout(()=>v?.removeAttribute("data-scrolling"),150);};k(),R.addEventListener("scroll",T,{passive:true});let U=new ResizeObserver(T);U.observe(R),Ze=()=>{h!==0&&cancelAnimationFrame(h),window.clearTimeout(b),R.removeEventListener("scroll",T),U.disconnect();};},{flush:"post"}),vue.onUnmounted(()=>Ze?.());let Q=vue.ref(null),We=vue.shallowRef(null),be=()=>{let v=We.value;v&&v.editor.releaseSelection(v.pin),We.value=null,Q.value=null;};vue.watch(()=>n.value,(v,R)=>{R&&R!==v&&We.value?.editor===R&&be();});let Ft=()=>{let v=n.value;if(!v||i.value)return;let R=v.getSelectionPlacement()?.anchorY??null;if(R===null)return;be();let h=v.retainSelection();h&&(We.value={editor:v,pin:h},l.setPaneOpen(true),Q.value=R,r?.proxy?.$forceUpdate());},Ie,Yt=()=>{if(!p.value||e.hidden){Ie?.(),Ie=void 0;return}Ie??=g.value.registerCommentDraft(Ft);};vue.onMounted(Yt),vue.watch(()=>e.hidden,Yt);let oo=()=>{be(),n.value?.focus(),r?.proxy?.$forceUpdate();};vue.watch(y,v=>{v||Q.value===null||be();}),vue.onBeforeUnmount(()=>{p.value=false,N?.(),N=void 0,Ie?.(),Ie=void 0,be();});let wt=vue.computed(()=>Q.value??l.selectionAnchorY.value),oe=vue.computed(()=>{let v=Oe(K.value);return K.value.filter(R=>!Ae(R,v))}),ro=vue.computed(()=>{let v=Q.value;if(v===null)return oe.value;let R=oe.value.findIndex(k=>k.anchorY!==null&&k.anchorY>v),h={key:te,anchorY:v};return R===-1?[...oe.value,h]:[...oe.value.slice(0,R),h,...oe.value.slice(R)]}),ao=vue.computed(()=>{let v=new Map(Ye.value);for(let R of oe.value){if(v.has(R.key))continue;let h=R.text.length+(R.kind==="revision"?R.replacedText?.length??0:0),k=Math.min(6,Math.max(1,Math.ceil(h/36)));v.set(R.key,64+k*20);}return v}),Rt=vue.computed(()=>{let v=M.value.scale,R=new Map,h=new Set,k=Number.NEGATIVE_INFINITY;for(let b of ro.value){let T=b.anchorY===null?Number.isFinite(k)?k:0:Math.max(b.anchorY,k);R.set(b.key,T);let U=b.anchorY===null?0:(T-b.anchorY)*v,B="isActive"in b&&b.isActive,D=U>cn&&!B&&b.key!==te;D&&h.add(b.key);let V=D?un:ao.value.get(b.key)??dn;k=T+(V+e.gap)/v;}return {stacked:R,collapsedKeys:h}}),Se=vue.computed(()=>wt.value===null?null:M.value.top+(x.value?wt.value:Rt.value.stacked.get(te)??wt.value)*M.value.scale),io=vue.computed(()=>(l.commentResolutionDisabledReason.value,l.selectionAnchorY.value,l.paneOpen.value,l.items.value.length,Mr(l,K.value))),gt=()=>{let v=Y.value,R=v?ne.value.get(v)??0:0;return {t:e.t,cardClassName:e.card?.className,readOnly:i.value,composeTop:Se.value,review:io.value,allItems:d.items.value,authorSlots:ne.value,authorInfo:Fe.value,draftAuthor:v,draftAuthorInfo:v?Fe.value.get(v):void 0,draftAuthorSlot:R,byId:Ne.value,measure:no,beginDraft:Ft,endDraft:oo,expandedResolvedKey:J.value,setExpandedResolvedKey:h=>{J.value=h;}}},ht=vue.shallowRef(gt());return vue.watchEffect(()=>{ht.value=gt();}),vue.watch(()=>s.value,()=>{ht.value=gt(),r?.proxy?.$forceUpdate();},{flush:"sync"}),vue.provide(St,ht),()=>{if(e.hidden||o.value)return null;s.value,d.items.value,Q.value,K.value.length,l.selectionAnchorY.value,l.paneOpen.value,l.commentResolutionDisabledReason.value,Se.value;let v=z=>{m.value=z.el instanceof HTMLElement?z.el:null;},R={onVnodeMounted:v,onVnodeUpdated:v,onVnodeBeforeUnmount:()=>{m.value=null;},class:`docx-review${e.className?` ${e.className}`:""}`,"data-testid":"review-rail","data-count":K.value.length,"data-open":P.value?"":void 0,"data-compact":x.value?"":void 0,role:"complementary","aria-label":f("review.ariaLabel"),onMousedown:L,style:M.value.left===null?void 0:{left:`${M.value.left}px`,right:"auto"}},h=t.default?.()??[],k=e.asChild&&h.length===1&&vue.isVNode(h[0])?h[0]:null,{parts:b,rest:T}=Ee(k?[]:h,"root"),U={stack:e.stack,positions:Rt.value.stacked,collapsed:Rt.value.collapsedKeys,scale:M.value.scale,offset:M.value.top,window:de.value},B=vue.h(Kt,{scale:M.value.scale,offset:M.value.top,window:de.value}),D=x.value?oe.value.find(z=>z.key===l.activeKey.value)??null:null,V=D===null?null:D.anchorY!==null?M.value.top+D.anchorY*M.value.scale:de.value!==null?de.value.top+tt+24:null,ee=Ee(T,"list"),ue=D&&t.item?t.item({item:D}):ee.parts.Card?et(ee.parts.Card,e.card?.className):e.preset?vue.h(He,e.card?.className?{className:e.card.className}:{},()=>ee.rest):null,re=D&&V!==null&&M.value.compactCardLeft!==null&&ue?vue.h(rt,{entry:D,className:"docx-review__slot--compact",testId:"review-compact-card",style:{position:"absolute",top:`${V}px`,left:`${M.value.compactCardLeft}px`,width:`${Te}px`}},()=>ue):null,ce=P.value?e.preset||"List"in b?Be("List",vue.h($t,U,{...T.length>0?{default:()=>T}:{},...t.item?{item:t.item}:{}}),b):T:e.preset||"Markers"in b?[Be("Markers",B,b),re]:T,me=[P.value&&e.furniture!==void 0?vue.h("div",{class:"docx-review__furniture","data-testid":"review-furniture"},[e.furniture]):null,ce,...e.preset||"AddComment"in b?[Be("AddComment",vue.h(Ht,{top:Se.value,drafting:Q.value!==null}),b)]:[],...Q.value===null||Se.value===null||!y.value||!e.preset&&!("Draft"in b)?[]:[Be("Draft",vue.h(Pr,{top:Se.value??0,left:x.value?M.value.compactCardLeft:null}),b)],...e.preset||"Balloon"in b?[Be("Balloon",vue.h(qt),b)]:[]],H=k;if(!H)return vue.h("aside",R,me);let ae=vue.cloneVNode(H,R,true);if(typeof H.type=="string"){let z=Array.isArray(H.children)?H.children:H.children==null?[]:typeof H.children=="string"||typeof H.children=="number"?[H.children]:[];ae.children=[...z,...me],ae.shapeFlag=ae.shapeFlag&-9|16;}else {let z=H.children&&!Array.isArray(H.children)&&typeof H.children=="object"?H.children:{},Gt=z.default;ae.children={...z,default:(...so)=>[...Gt?[Gt(...so)]:[],...me]},ae.shapeFlag=ae.shapeFlag&-25|32;}return ae}}});var Vr=Object.assign(Dr,{List:$t,Empty:ut,Card:He,Avatar:ye,Author:we,Time:Re,Summary:ge,Accept:$e,Reject:Ke,Resolve:Ot,Reopen:_t,Delete:ct,Replies:Dt,Reply:Mt,Markers:Kt,AddComment:Ht,Draft:Pt,Balloon:qt});function je(e){let t=vue$1.useDocxEditor();return vue.computed(()=>{let r=vue.toValue(e);return r||(t.value?.getCustomNodeDefinitions()??[]).filter(Je)})}var qr=".docx-content-control-boundary";function he(e,t){let{node:r,definition:n,controlId:o}=e,i=o?t?.getReviewItems().find(u=>u.kind==="custom"&&u.item.id===o):void 0;if(i?.kind==="custom"){let u=i.item;return {...r,attrs:u.attrs,text:u.text,...u.data===void 0?{}:{data:u.data},...o?{nodeId:o}:{}}}let s=o?Br(t,o,n):void 0,a=n.fromDocx?n.fromDocx({attrs:r.attrs,text:"",...s===void 0?{}:{data:s}}):r.attrs;return a===null?null:{...r,attrs:a,...s===void 0?{}:{data:s},...o?{nodeId:o}:{}}}function Br(e,t,r){let n=e?.surface;if(!n)return;let o=n.session.part(),i=store.customNodePayloadsByControl(n.session.currentPackage(),o.name).get(t);if(!i)return;let s=Xe(r.schema,i.data);return s.ok?s.value:void 0}function xe(e,t){let r=e?.closest?.(qr),n=r?.closest(".docx-content-control-chrome"),o=n?.getAttribute("data-tag"),i=o?ze(o):null;if(!r||!i||!o)return null;let s=t.find(a=>a.tagPrefix===i.prefix&&a.name===i.name);return s?{node:{name:i.name,attrs:i.attrs,tag:o,rect:r.getBoundingClientRect()},definition:s,controlId:n?.getAttribute("data-docx-content-control")??null}:null}var jt=".docx-content-control-boundary";function Zr(e){if(!Nt.test(e.tagPrefix)||!Nt.test(e.name))return [];let t=`${e.tagPrefix}:${e.name}`;return [`.docx-content-control-chrome[data-tag="${t}"]`,`.docx-content-control-chrome[data-tag^="${t}?"]`]}var Wr=vue.defineComponent({name:"CustomNodeChrome",props:{nodes:{type:Array,default:void 0},onNodeClick:{type:Function,default:void 0},onNodeHover:{type:Function,default:void 0}},setup(e){let t=vue$1.useDocxEditor(),r=je(()=>e.nodes),n,o=null,i=null,s=l=>xe(document.elementFromPoint(l.clientX,l.clientY),r.value),a=l=>{let c=l.button===0?s(l):null;o=c?.controlId??null,i=c?.node.tag??null;},u=l=>{let c=o,f=i;if(o=null,i=null,f===null)return;let m=s(l);if(!m||m.node.tag!==f||c!==null&&m.controlId!==c)return;let g=he(m,t.value);g&&(m.definition.onClick?.(g),e.onNodeClick?.(g));},d=l=>{let c=xe(l.target,r.value);if(!c||l.relatedTarget?.closest?.(jt)===l.target.closest(jt))return;let m=he(c,t.value);m&&(c.definition.onHover?.(m),e.onNodeHover?.(m));};return vue.onMounted(()=>{n=vue.watch(r,(l,c,f)=>{let m=document.createElement("style"),g=[];for(let p of l){let N=Zr(p);if(N.length===0)continue;let I=p.chrome?.color,y=I!==void 0&&typeof CSS<"u"&&CSS.supports("color",I)?I:"var(--doc-accent)";g.push(`${N.map(E=>`${E} ${jt}`).join(", ")} {`," pointer-events: auto !important;"," opacity: 1;"," border: none;",` background: color-mix(in srgb, ${y} 12%, transparent);`," border-radius: 6px;"," cursor: default;","}");}m.textContent=g.join(`
2
- `),document.head.append(m),f(()=>m.remove());},{immediate:true}),document.addEventListener("pointerdown",a,true),document.addEventListener("pointerup",u,true),document.addEventListener("mouseover",d);}),vue.onBeforeUnmount(()=>{n?.(),document.removeEventListener("pointerdown",a,true),document.removeEventListener("pointerup",u,true),document.removeEventListener("mouseover",d);}),()=>null}});function Xr(e){return e.surface??null}function zn(e){let t=e.detail?`${e.reason}: ${e.detail}`:e.reason;return {ok:false,code:Jr.has(e.reason)?"invalidArgs":"unsupported",reason:t}}var Jr=new Set(["payload-too-large","unaddressable-payload","store-not-authored","offset-out-of-range","invalid-range","invalid-property-value","splits-surrogate-pair"]);function Xn(e){return e.getEditingMode()==="viewing"?{ok:false,code:"locked",reason:"the document is open for viewing"}:null}function Wn(e){let t=e.getActiveScope();if(t.kind==="headerFooter")return {kind:"headerFooter",rId:t.rId};if(t.kind==="note"){let r=store.parseNoteScopeId(t.id);if(r)return {kind:"notesPart",noteKind:r.noteKind}}return {kind:"body"}}function Jn(e,t){let r=Xr(e),n=t===void 0?"":t.slice(0,t.indexOf("#"));if(!r||n.length===0)return Wn(e);if(n===r.session.part().name)return {kind:"body"};for(let o of r.session.headerFooterResolutionBySection())for(let i of [o.headers,o.footers])for(let s of i.values())if(s.partName===n)return {kind:"headerFooter",rId:s.rId};for(let o of ["footnote","endnote"])if(r.session.partFor({kind:"notesPart",noteKind:o})?.name===n)return {kind:"notesPart",noteKind:o};return Wn(e)}function Qr(e){return e.surface??null}function Qn(e,t){let r=Qr(e);if(!r)return {ok:false,code:"notFound",reason:"no document is mounted"};let n=Xn(e);if(n)return n;r.flushPendingInput();let o=r.session.removeCustomNode(t,Jn(e,t));return o.ok?{ok:true,changed:true}:zn(o)}var aa=Object.assign(vue.defineComponent({name:"CustomNodeContextMenu",props:{nodes:{type:Array,default:void 0},onEditNode:{type:Function,default:void 0},remove:{type:Boolean,default:true},onRemoveRefused:{type:Function,default:void 0}},setup(e){let t=je(()=>e.nodes),r=vue$1.useContextMenuTarget(),n=vue$1.useDocxEditor(),{t:o}=vue$1.useTranslation(),i=vue.computed(()=>xe(r,t.value)),s=vue.computed(()=>{let u=i.value;return u?he(u,n.value):null}),a=vue.computed(()=>{let u=i.value,d=s.value;return !u?.definition.reviewCard||!d?null:u.definition.reviewCard({attrs:d.attrs,text:d.text??"",...d.data===void 0?{}:{data:d.data}})});return ()=>{let u=i.value,d=s.value;if(!u||!d)return null;let{definition:l}=u,c=l.label??l.name,f=l.onEdit!==void 0||e.onEditNode!==void 0,m=e.remove&&d.nodeId!==void 0&&n.value!==null;return !a.value&&!f&&!m?null:jsxRuntime.jsxs(vue.Fragment,{children:[a.value?jsxRuntime.jsxs("div",{class:"docx-contextmenu__custom-info","data-testid":"custom-node-info",children:[jsxRuntime.jsx("span",{class:"docx-contextmenu__custom-title",children:a.value.title}),a.value.detail?jsxRuntime.jsx("span",{class:"docx-contextmenu__custom-detail",children:a.value.detail}):null]}):null,f?jsxRuntime.jsx(vue$1.ContextMenuItem,{label:o("contextMenu.editCustomNode",{label:c}),className:"docx-contextmenu__custom-edit",onSelect:()=>{l.onEdit?.(d),e.onEditNode?.(d,l);}}):null,m?jsxRuntime.jsx(vue$1.ContextMenuItem,{label:o("contextMenu.removeCustomNode",{label:c}),className:"docx-contextmenu__custom-remove",onSelect:()=>{let g=Qn(n.value,d.nodeId);g.ok||e.onRemoveRefused?.(d,g.reason);}}):null,jsxRuntime.jsx("div",{role:"separator",class:"docx-toolbar__menu-separator"})]})}}}),{docxRowPlacement:"start"});exports.CustomNodeChrome=Wr;exports.CustomNodeContextMenu=aa;exports.DocxEditorReview=Vr;exports.activatedCustomNodeOf=he;exports.resolveCustomNodeActivation=xe;exports.reviewModule=Co;exports.useCustomNodeDefinitions=je;exports.useReview=Oo;exports.useReviewAuthor=Wo;exports.useReviewItem=$;exports.useReviewOf=_o;exports.useStackedReviewPositions=Po;
1
+ 'use strict';var store=require('@docx-editor.dev/core/store'),layout=require('@docx-editor.dev/core/layout'),vue=require('vue'),vue$1=require('@docx-editor.dev/vue'),jsxRuntime=require('vue/jsx-runtime'),editor=require('@docx-editor.dev/core/editor');function Zt(e){}var uo=new Set(["__proto__","constructor","prototype"]);function ze(e){if(e.length>64)return null;let t=e.indexOf(":");if(t<=0)return null;let r=e.slice(0,t),n=e.slice(t+1),o=n.indexOf("?"),i=o===-1?n:n.slice(0,o);if(i.length===0)return null;let s=Object.create(null);if(o!==-1)for(let[a,u]of new URLSearchParams(n.slice(o+1))){if(uo.has(a))return null;s[a]=u;}return {prefix:r,name:i,attrs:s}}function Xe(e,t){if(t.length===0)return {ok:false,reason:"malformed",issues:["the node carries no payload"]};if(t.length>262144)return {ok:false,reason:"malformed",issues:[`the payload is ${String(t.length)} characters; the cap is ${String(262144)}`]};let r;try{r=JSON.parse(t);}catch(i){return {ok:false,reason:"malformed",issues:[i instanceof Error?i.message:"the payload is not JSON"]}}let n=xt(r);if(!e)return {ok:true,value:n};let o=e["~standard"].validate(n);return co(o)?{ok:false,reason:"async",issues:["the schema validates asynchronously, which the read path cannot await"]}:o.issues?{ok:false,reason:"invalid",issues:o.issues.map(mo)}:{ok:true,value:o.value}}function co(e){return typeof e.then=="function"}function mo(e){let t=(e.path??[]).map(r=>String(typeof r=="object"?r.key:r)).join(".");return t.length>0?`${t}: ${e.message}`:e.message}var fo=new Set(["__proto__","constructor","prototype"]);function xt(e){if(Array.isArray(e))return e.map(xt);if(e===null||typeof e!="object")return e;let t=Object.create(null);for(let[r,n]of Object.entries(e))fo.has(r)||(t[r]=xt(n));return t}function Je(e){return typeof e=="object"&&e!==null&&typeof e.name=="string"&&typeof e.tagPrefix=="string"}var Nt=/^[A-Za-z0-9_.-]+$/;function po(e){for(let t of e.children)if(!(t.kind==="textValue"||t.localName!=="sdtPr")){for(let r of t.children)if(!(r.kind==="textValue"||r.localName!=="tag")){for(let n of r.attributes)if(n.localName==="val")return n.value}}}function Wt(e){if(e.kind==="textValue")return e.value;let t="";for(let r of e.children)t+=Wt(r);return t}function zt(e,t,r={}){if(t.length===0)return [];let n=new Map;for(let s of t){let a=`${s.tagPrefix}:${s.name}`;if(n.has(a))throw new Error(`recognizeCustomNodes: duplicate definition for ${JSON.stringify(a)}`);n.set(a,s);}let o=[],i=(s,a)=>{if(!(s.kind==="textValue"||a>64)){if(s.kind==="contentControl"){let u=po(s),d=u!==void 0?ze(u):null,l=d?n.get(`${d.prefix}:${d.name}`):void 0;if(d&&l&&u!==void 0){let c=Wt(s),f=yo(l,s.id,r.payloads?.get(s.id),store.contentControlPropertiesOf(s).dataBinding!==void 0,r.onDiagnostic),m=l.fromDocx?l.fromDocx({attrs:d.attrs,text:c,...f.present?{data:f.value}:{}}):d.attrs;if(m!==null){o.push({name:l.name,attrs:m,text:c,nodeId:s.id,tag:u,...f.present?{data:f.value}:{}});return}}}for(let u of s.children)i(u,a+1);}};return i(e.root,0),o}function yo(e,t,r,n,o){if(!r)return n&&o?.({code:"payload-missing",name:e.name,nodeId:t,issues:["the control binds a store node this document does not hold"]}),{present:false};let i=Xe(e.schema,r.data);return i.ok?{present:true,value:i.value}:(o?.({code:"payload-invalid",name:e.name,nodeId:t,issues:i.issues}),{present:false})}function Jt(e,t){let r=store.findNode(e,t);return !r||r.kind!=="paragraph"?[]:store.revisionItemsOf({id:e.id,name:e.name,contentType:e.contentType,root:r})}function No(e,t,r,n){if(t.length===0)return [];let o=zt(e,t,{...r===void 0?{}:{payloads:r},...n===void 0?{}:{onDiagnostic:n}});if(o.length===0)return [];let i=store.locateSites(e),s=[];for(let a of o){let u=t.find(c=>c.name===a.name&&a.tag.startsWith(`${c.tagPrefix}:`));if(!u)continue;let d=u.reviewCard?u.reviewCard({attrs:a.attrs,text:a.text,...a.data===void 0?{}:{data:a.data}}):null;if(u.reviewCard&&d===null)continue;let l=i.get(a.nodeId);s.push({kind:"custom",id:a.nodeId,name:a.name,tag:a.tag,attrs:a.attrs,text:a.text,...a.data===void 0?{}:{data:a.data},carded:u.reviewCard!==void 0&&d!==null,title:d?.title??"",...d?.detail!==void 0?{detail:d.detail}:{},...d?.icon!==void 0?{icon:d.icon}:{},range:l?{partName:e.name,start:{paragraphId:l.paragraphId,offset:l.start},end:{paragraphId:l.paragraphId,offset:l.end}}:null});}return s}function Qt(e){let t=store.collectReviewItems(e),r=(e.customNodes??[]).filter(Je);if(r.length===0)return t;let n=[e.storyPart],o=new Set([e.storyPart.name]);for(let u of e.furnitureParts??[])o.has(u.name)||(o.add(u.name),n.push(u));let i=[],s=new Map;for(let u of n){i.push(...No(u,r,e.customNodePayloads,e.reportCustomNodeDiagnostic));let d=s.size;for(let[l,c]of store.paragraphOrderOfPart(u))s.has(l)||s.set(l,d+c);}return i.length===0?t:[...t,...i].sort((u,d)=>layout.reviewItemPositionRank(u,s)-layout.reviewItemPositionRank(d,s))}function Co(e={}){return Zt(e.licenseKey),{id:"review",review:{displayModes:["all-markup","proposed","original"],collectReviewItems:Qt,revisionItemsOfParagraph:Jt}}}var en=Symbol("proEditorRenderRevision");function tn(e){return vue.provide(en,e),e}function fe(){let e=vue.inject(en,null);if(e)return e;let t=vue$1.useDocxEditor(),r=vue.shallowRef("none");return vue.watch(()=>t.value,(n,o,i)=>{if(!n){r.value="none";return}let s=n,a=`${s.getReviewRevision()}:${s.getEditingMode()}`;r.value=a;let u=false,d=null,l=()=>{u||d!==null||(d=setTimeout(()=>{if(d=null,u)return;let g=`${s.getReviewRevision()}:${s.getEditingMode()}`;g!==a&&(a=g,r.value=g);},0));},c=s.on("change",l),f=s.on("selectionChange",l),m=s.on("error",l);i(()=>{u=true,d!==null&&clearTimeout(d),c(),f(),m();});},{immediate:true,flush:"sync"}),r}function Qe(e){if(e!==void 0)return typeof e=="function"?e():typeof e=="object"&&e!==null&&"value"in e?e.value:e}function nn(e){return `${e.getReviewRevision()}:${e.getEditingMode()}`}function Oo(e){let t=vue$1.useDocxEditor(),r=fe();return bt(t,e,r)}function Ct(e,t){let r=vue$1.useDocxEditor();return bt(r,e,t)}function _o(e,t){return bt(e,t)}function bt(e,t,r){let n=r?null:vue.shallowRef("none"),o=()=>{(r??n)?.value;};r||vue.watch(()=>e.value,(w,x,P)=>{if(!w){n.value="none";return}let K=nn(w);n.value=K;let J=false,Y=null,ne=()=>{J||Y!==null||(Y=setTimeout(()=>{if(Y=null,J)return;let Ne=nn(w);Ne!==K&&(K=Ne,n.value=Ne);},0));},pt=w.on("change",ne),yt=w.on("selectionChange",ne),Fe=w.on("error",ne);P(()=>{J=true,Y!==null&&clearTimeout(Y),pt(),yt(),Fe();});},{immediate:true,flush:"sync"});let i=vue.computed(()=>{o();let w=e.value,x=Qe(t);return w?w.getReviewItems(x).filter(P=>P.item.kind!=="custom"||P.item.carded):[]}),s=vue.computed(()=>i.value.find(w=>w.isActive)?.key??null),a=(w,x)=>{let P=e.value;return P?P.setActiveReviewItem(w,x).ok:false},u=w=>{let x=e.value;return !x||w.kind!=="revision"||w.readOnly?false:x.acceptReviewItem(w.key).ok},d=w=>{let x=e.value;return !x||w.kind!=="revision"||w.readOnly?false:x.rejectReviewItem(w.key).ok},l=w=>{let x=e.value;return !x||w.kind!=="comment"?false:x.setCommentResolved(w.key,true).ok},c=w=>{let x=e.value;return !x||w.kind!=="comment"?false:x.setCommentResolved(w.key,false).ok},f=vue.computed(()=>(o(),e.value?.getEditingMode()==="viewing"?"the document is open for viewing":null)),m=w=>{let x=e.value;return !x||w.kind==="custom"||w.kind==="revision"&&w.readOnly?false:x.deleteReviewItem(w.key).ok},g=(w,x,P)=>x.trim().length===0||!e.value?false:e.value.replyToReviewItem(w.key,x,P).ok,p=vue.computed(()=>{o();let w=e.value;return w?w.getSelectionPlacement()?.anchorY??null:null}),N=(w,x)=>w.trim().length===0||!e.value?false:e.value.addComment(w,x).ok,I=vue.computed(()=>{o();let w=e.value;return w?w.isReviewPaneOpen():true}),y=w=>{let x=e.value;!x||x.isReviewPaneOpen()===w||x.exec({type:"toggleReviewPane"});},E=vue.computed(()=>{o();let w=e.value;if(w===null)return false;let x=w.snapshot();return !x.isLoading&&x.parseError===null});return {items:i,activeKey:s,setActive:a,accept:u,reject:d,resolve:l,reopen:c,commentResolutionDisabledReason:f,remove:m,reply:g,selectionAnchorY:p,comment:N,paneOpen:I,setPaneOpen:y,ready:E}}function Po(e,t,r={}){return vue.computed(()=>{let n=Qe(e)??[],o=Qe(t)??new Map,i=Qe(r)??{},s=i.gap??8,a=i.scale??1,u=i.defaultHeight??0,d=new Map,l=Number.NEGATIVE_INFINITY;for(let c of n){let f=c.anchorY===null?Number.isFinite(l)?l:0:Math.max(c.anchorY,l);d.set(c.key,f),l=f+((o.get(c.key)??u)+s)/a;}return d})}var Lo=new Set(["List","Markers","AddComment","Draft","Balloon"]),$o=new Set(["Card","Empty"]);function Ko(e){return vue.isVNode(e)}function Ee(e,t){let r=t==="root"?Lo:$o,n={},o=[],i=s=>{for(let a of s){if(!Ko(a))continue;if(a.type===vue.Fragment){let d=Array.isArray(a.children)?a.children:[];i(d);continue}let u=a.type.docxReviewPart;u&&r.has(u)?n[u]=a:o.push(a);}};return i(e),{parts:n,rest:o}}function et(e,t){if(!t)return e;let r=e.props.class;return vue.cloneVNode(e,{class:`${t}${r?` ${r}`:""}`})}var rn=e=>e.isLoading||e.parseError!==null||e.pageSetup==null,ke=e=>e.editingMode==="viewing",an={scale:96/72,top:0,left:null,compactCardLeft:null},sn=16,Te=300,ln=12,te="\0compose",tt=600,nt=8,dn=72,un=64,cn=480,mn=30,fn=Object.freeze({placement:false});function Ae(e,t){return e.kind!=="comment"?false:e.parentId!==void 0?t.has(e.parentId):e.parentRevisionId!==void 0?t.has(e.parentRevisionId):false}function Oe(e){return new Set(e.map(t=>t.id))}function L(e){let t=e.target?.tagName;t==="INPUT"||t==="SELECT"||t==="TEXTAREA"||e.preventDefault();}function vn(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"?":t.slice(0,2).map(r=>r[0].toUpperCase()).join("")}var ot=new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});function pn(e){let t={},r=[],n=o=>{if(!o)return;let i=Array.isArray(o)?o:[o];for(let s of i){if(!vue.isVNode(s))continue;if(s.type===vue.Fragment){n(s.children);continue}let a=s.type.docxReviewPart;a?t[a]=s:r.push(s);}};return n(e),r.length>0&&(t.__extra=r),t}function A(e,t){return e.docxReviewPart=t,e}var St=Symbol("ReviewContext"),Et=Symbol("ReviewItemContext"),Yo={items:[],activeKey:null,setActive:()=>false,accept:()=>false,reject:()=>false,resolve:()=>false,reopen:()=>false,commentResolutionDisabledReason:null,remove:()=>false,reply:()=>false,selectionAnchorY:null,comment:()=>false,paneOpen:true,setPaneOpen:()=>{},ready:false},Go={t:void 0,cardClassName:void 0,readOnly:false,composeTop:null,review:Yo,allItems:[],authorSlots:new Map,authorInfo:new Map,draftAuthor:null,draftAuthorInfo:void 0,draftAuthorSlot:0,byId:new Map,measure:()=>{},beginDraft:()=>{},endDraft:()=>{},expandedResolvedKey:null,setExpandedResolvedKey:()=>{}};function O(){return vue.inject(St,vue.computed(()=>Go))}var Zo=vue.computed(()=>null);function $(){return vue.inject(Et,Zo)}function Wo(e){let t=O();return vue.computed(()=>{let r=vue.toValue(e);return r===void 0?void 0:t.value.authorInfo.get(r)})}function j(){let e=O(),{t}=vue$1.useTranslation();return r=>e.value.t?.(r)??t(r)}function zo(e){return [e.key,e.isActive?"active":"idle",e.readOnly?"readonly":"editable",e.kind==="comment"&&e.resolved?"resolved":"open",e.text,...e.replyIds].join("\0")}var rt=vue.defineComponent({name:"ReviewItemScope",props:{entry:{type:Object,required:true},measureKey:String,collapsed:Boolean,className:String,testId:String,style:{type:Object,default:void 0}},setup(e,{slots:t}){let r=O(),n=vue.shallowRef(e.entry);vue.watchEffect(()=>{let a=r.value.byId.get(e.entry.id)??e.entry;n.value={...a,replyIds:[...a.replyIds]};}),vue.provide(Et,n);let o=null,i=null,s=a=>{let u=a instanceof HTMLElement?a:null,d=u&&e.measureKey?e.measureKey:null;o===u&&i===d||(i&&r.value.measure(null,i),o=u,i=d,o&&i&&r.value.measure(o,i));};return vue.onBeforeUnmount(()=>{s(null);}),()=>vue.h("div",{onVnodeMounted:a=>{s(a.el instanceof Element?a.el:null);},onVnodeUpdated:a=>{s(a.el instanceof Element?a.el:null);},onVnodeBeforeUnmount:()=>{s(null);},class:`docx-review__slot${e.className?` ${e.className}`:""}`,...e.testId?{"data-testid":e.testId}:{},style:e.style,...e.collapsed?{"data-collapsed":""}:{}},[vue.h(vue.Fragment,{key:zo(n.value)},t.default?.())])}}),at=vue.defineComponent({name:"ReviewReplyScope",props:{entry:{type:Object,required:true}},setup(e,{slots:t}){let r=O(),n=vue.shallowRef(e.entry);return vue.watchEffect(()=>{let o=r.value.byId.get(e.entry.id)??e.entry;n.value={...o,replyIds:[...o.replyIds]};}),vue.provide(Et,n),()=>t.default?.()}});function Nn(e){let t=vue.ref(new WeakMap),r=vue.ref(new Map),n=vue.ref(null),o=(i,s)=>{let a=r.value.get(s);if(!i){a&&(n.value?.unobserve(a),t.value.delete(a),r.value.delete(s));return}typeof ResizeObserver>"u"||(e(s,i.offsetHeight),n.value??=new ResizeObserver(u=>{for(let d of u){let l=t.value.get(d.target);l&&e(l,d.target.offsetHeight);}}),!(a===i&&t.value.get(i)===s)&&(a&&(n.value.unobserve(a),t.value.delete(a)),t.value.set(i,s),r.value.set(s,i),n.value.observe(i)));};return vue.onUnmounted(()=>{n.value?.disconnect(),r.value.clear();}),o}function Tt(e,t){return e?.color??`var(--doc-review-author-${t%nt})`}function se(e,t,r){return e?{"--doc-review-author-current":Tt(t,r)}:{}}function ve(e,t){return (e?.slot??t)%nt}function Cn(e,t,r,n,o){let i=new Map;for(let a of e)i.set(a.author,a);let s=[...t.map(a=>a.author),n?.getConfiguredAuthor()];for(let a of s){if(!a||i.has(a))continue;let u=r.get(a)??0,d=n?.getReviewAuthorStyle(a),l=d?.color??`var(--doc-review-author-${u%nt})`,c=o.get(a),f=c?.slot===u&&c.color===l&&c.style===d?c:{author:a,slot:u,color:l,...d?{style:d}:{}};o.set(a,f),i.set(a,f);}return i}var F=e=>vue.h("svg",{viewBox:"0 -960 960 960",width:16,height:16,ariaHidden:true,focusable:false},[vue.h("path",{d:e,fill:"currentColor"})]),In="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",bn="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",Jo="M880-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",Pe="M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z",it=()=>vue.h("span",{class:"docx-review__resolved-icon"},[vue.h("span",{class:"docx-review__resolved-comment"},[F(Jo)]),vue.h("span",{class:"docx-review__resolved-tick"},[F(Pe)])]),Sn="M480-160q-134 0-227-93t-93-227q0-134 93-227t227-93q69 0 132 28.5T720-690v-110h80v280H520v-80h168q-32-56-87.5-88T480-720q-100 0-170 70t-70 170q0 100 70 170t170 70q77 0 139-44t87-116h84q-28 106-114 173t-196 67Z",En="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",kn="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",Qo="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",er="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",tr="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",nr="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 Tn(e){if(e.kind==="comment")return bn;if(e.kind==="custom")return e.item.icon??nr;switch(e.revisionKind){case "insert":case "moveTo":return Qo;case "delete":case "moveFrom":return er;case "format":return tr;default:return bn}}function st(e,t){if(e==="paragraphMark")return t==="delete"?"revisions.paragraphMarkDeleted":t==="moveFrom"?"revisions.paragraphMarkMovedFrom":t==="moveTo"?"revisions.paragraphMarkMovedTo":"revisions.paragraphMarkInserted";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";default:return "review.structural"}}function ar(e,t){return typeof t!="function"?e:typeof e!="function"?t:r=>{e(r),r.defaultPrevented||t(r);}}function ir(e,t){let r=vue.mergeProps(e,t);for(let n of Object.keys(e))/^on[A-Z]/.test(n)?r[n]=ar(t[n],e[n]):n==="class"?r[n]=[e[n],t[n]].filter(Boolean).join(" "):n==="style"&&(r[n]={...e[n],...t[n]});return r}function Pn(e){return e==="Enter"||e===" "}function sr(e){return Pn(e.key)?(e.preventDefault(),e.stopPropagation(),true):false}function On(e){return e==="button"}function _n(e,t){return e==="a"||t.href!=null}var pe=vue.defineComponent({name:"ReviewActionSlot",props:{engineDisabled:{type:Boolean,required:true},disabledReason:{type:String,default:null},slotProps:{type:Object,required:true}},setup(e,{slots:t}){return ()=>{let r=t.default?.()??[];if(r.length!==1)return null;let n=r[0];if(!n||typeof n!="object")return null;let o=n.props??{},i=ir(e.slotProps,o);if(!e.engineDisabled){if(!On(n.type)){let s={onClick:a=>{typeof o.onClick=="function"&&o.onClick(a),!a.defaultPrevented&&typeof e.slotProps.onClick=="function"&&e.slotProps.onClick(a),_n(n.type,o)&&a.preventDefault();},onKeydown:a=>{typeof o.onKeydown=="function"&&o.onKeydown(a),Pn(a.key)&&(!a.defaultPrevented&&typeof e.slotProps.onClick=="function"&&e.slotProps.onClick(a),_n(n.type,o)&&a.preventDefault());}};i.onClick=s.onClick,i.onKeydown=s.onKeydown;}return vue.cloneVNode(n,i)}if(On(n.type))i.disabled=true,delete i["aria-disabled"];else {delete i.disabled,i["aria-disabled"]=true,i["data-disabled"]="",i.tabIndex=-1,i.href=void 0,i.role===void 0&&(i.role="button");let s=i.onKeydown;i.onKeydown=a=>{sr(a)||typeof s=="function"&&s(a);};}return e.disabledReason&&(i.title=e.disabledReason),i.onClick=s=>{s.preventDefault(),s.stopPropagation();},vue.cloneVNode(n,i)}}});function Vn(e){let t=A(vue.defineComponent({name:"ReviewResolve",props:{className:String,asChild:Boolean,hidden:Boolean,icon:{type:[Object,String],default:void 0}},setup(n,{slots:o}){let i=e.useRail(),s=e.useItem(),a=e.useLabel(),u=vue$1.useEditorState(ke);return ()=>{let d=s.value;if(n.hidden||!d||d.kind!=="comment"||d.resolved)return null;let l=i.value.review,c=a("comments.resolve"),f=u.value||l.commentResolutionDisabledReason!==null,m=f?a("editingMode.viewingHint"):null,g={type:"button",class:`docx-review__action${n.className?` ${n.className}`:""}`,"data-testid":"review-resolve","aria-label":c,title:m??c,disabled:f,onMousedown:L,onClick:p=>{p.stopPropagation(),!f&&l.resolve(d);}};return n.asChild?vue.h(pe,{engineDisabled:f,disabledReason:m,slotProps:g},o.default):vue.h("button",g,n.icon??o.default?.()??F(Pe))}}}),"Resolve"),r=A(vue.defineComponent({name:"ReviewReopen",props:{className:String,asChild:Boolean,hidden:Boolean,icon:{type:[Object,String],default:void 0}},setup(n,{slots:o}){let i=e.useRail(),s=e.useItem(),a=e.useLabel(),u=vue$1.useEditorState(ke);return ()=>{let d=s.value;if(n.hidden||!d||d.kind!=="comment"||!d.resolved)return null;let l=i.value.review,c=a("comments.reopen"),f=u.value||l.commentResolutionDisabledReason!==null,m=f?a("editingMode.viewingHint"):null,g={type:"button",class:`docx-review__action${n.className?` ${n.className}`:""}`,"data-testid":"review-reopen","aria-label":c,title:m??c,disabled:f,onMousedown:L,onClick:p=>{p.stopPropagation(),!f&&l.reopen(d);}};return n.asChild?vue.h(pe,{engineDisabled:f,disabledReason:m,slotProps:g},o.default):vue.h("button",g,n.icon??o.default?.()??F(Sn))}}}),"Reopen");return {ReviewResolve:t,ReviewReopen:r}}var Ln=new WeakMap;function Me(e){let t=vue.getCurrentInstance();if(!t)throw new Error("useReviewStableId must run during component setup");let r=t.appContext,n=Ln.get(r)??0;return Ln.set(r,n+1),`docx-review-${n}-${e}`}function Hn(e){let t=A(vue.defineComponent({name:"ReviewDraft",props:{top:{type:Number,default:0},left:{type:Number,default:null},className:String,hidden:Boolean},setup(n){let o=e.useRail(),i=e.useLabel(),s=vue.ref(""),a=vue.ref(false),u=Me("draft"),d=null;vue.onMounted(()=>{let c=vue.getCurrentInstance()?.proxy?.$el;if(c instanceof HTMLElement&&(d=o.value.measure,d(c,te)),o.value.readOnly)return;(c instanceof HTMLElement?c.querySelector('[data-testid="review-draft-input"]'):null)?.focus({preventScroll:true});}),vue.onBeforeUnmount(()=>{d?.(null,te);});let l=()=>{let{review:c,endDraft:f,readOnly:m}=o.value;if(m||s.value.trim().length===0)return;let g=c.comment(s.value.trim());a.value=!g,g&&(s.value="",f());};return ()=>{if(n.hidden)return null;let{readOnly:c,draftAuthor:f,draftAuthorInfo:m,draftAuthorSlot:g}=o.value;return vue.h("div",{class:`docx-review__slot${n.left===null?"":" docx-review__slot--compact"}${n.className?` ${n.className}`:""}`,style:{position:"absolute",top:`${n.top}px`,...n.left===null?{}:{left:`${n.left}px`,width:`${Te}px`}}},[vue.h("div",{class:"docx-review__card","data-testid":"review-draft","data-draft":"",...f?{"data-review-author":f,"data-review-author-slot":g}:{},style:se(f??void 0,m,g)},[vue.h("form",{class:"docx-review__reply-box",onSubmit:p=>{p.preventDefault(),l();}},[vue.h("label",{class:"docx-editor-sr-only",for:u},i("comments.addComment")),vue.h("input",{id:u,"data-testid":"review-draft-input",class:"docx-review__input",value:s.value,placeholder:i("comments.addComment"),readonly:c,...a.value?{"aria-invalid":true}:{},onInput:p=>{c||(a.value=false,s.value=p.target.value);},onKeydown:p=>{if(p.key==="Escape"){p.preventDefault(),o.value.endDraft();return}c||p.key!=="Enter"||(p.preventDefault(),l());}}),vue.h("div",{class:"docx-review__reply-actions"},[vue.h("button",{type:"button","data-testid":"review-draft-cancel",class:"docx-review__text-button",onMousedown:L,onClick:()=>o.value.endDraft()},i("common.cancel")),vue.h("button",{type:"submit","data-testid":"review-draft-submit",class:"docx-review__submit",disabled:c||s.value.trim().length===0,title:c?i("editingMode.viewingHint"):void 0},i("common.comment"))]),a.value?vue.h("span",{class:"docx-review__refused",role:"alert"},i("review.commentRefused")):null])])])}}}),"Draft"),r=A(vue.defineComponent({name:"ReviewReply",props:{className:String,hidden:Boolean},setup(n,{slots:o}){let i=e.useRail(),s=e.useItem(),a=e.useLabel(),u=vue.ref(""),d=vue.ref(false),l=Me("reply"),c=fe(),f=vue$1.useDocxEditor(),m=g=>{let p=s.value,{review:N,readOnly:I,byId:y}=i.value,E=g?.querySelector('[data-testid="review-reply-input"]'),w=(E?.value??u.value).trim(),x=p?y.get(p.id)??p:null;if(!x||I||w.length===0)return;let P=f.value?.replyToReviewItem(x.key,w).ok??N.reply(x,w);d.value=!P,P&&(u.value="",E&&(E.value=""));};return ()=>{c.value;let g=s.value;if(n.hidden||!g||!g.isActive||g.kind==="comment"&&g.resolved)return null;let{review:p,readOnly:N}=i.value,I=o.default?.();return I?.length?I:jsxRuntime.jsxs("div",{class:`docx-review__reply-box${n.className?` ${n.className}`:""}`,children:[jsxRuntime.jsx("label",{class:"docx-editor-sr-only",for:l,children:a("comments.replyPlaceholder")}),jsxRuntime.jsx("input",{id:l,"data-testid":"review-reply-input",class:"docx-review__input",placeholder:a("comments.replyPlaceholder"),readonly:N,...d.value?{"aria-invalid":true,"data-refused":""}:{},onInput:y=>{N||(d.value=false,u.value=y.target.value);},onClick:y=>y.stopPropagation(),onKeydown:y=>{N||y.key!=="Enter"||(y.preventDefault(),m(y.currentTarget.closest(".docx-review__reply-box")));}}),jsxRuntime.jsxs("div",{class:"docx-review__reply-actions",children:[jsxRuntime.jsx("button",{type:"button","data-testid":"review-reply-cancel",class:"docx-review__text-button",onMousedown:L,onClick:y=>{y.stopPropagation(),u.value="",d.value=false,p.setActive(null);},children:a("common.cancel")}),jsxRuntime.jsx("button",{type:"button","data-testid":"review-reply-submit",class:"docx-review__submit",disabled:N,title:N?a("editingMode.viewingHint"):void 0,onClick:y=>{y.preventDefault(),y.stopPropagation(),m(y.currentTarget.closest(".docx-review__reply-box"));},children:a("review.reply")})]}),d.value?jsxRuntime.jsx("span",{class:"docx-review__refused",role:"alert","data-testid":"review-reply-refused",children:a("review.replyRefused")}):null]})}}}),"Reply");return {ReviewDraft:t,ReviewReply:r}}var{ReviewResolve:Ot,ReviewReopen:_t}=Vn({useRail:O,useItem:$,useLabel:j}),{ReviewDraft:Pt,ReviewReply:Mt}=Hn({useRail:O,useItem:$,useLabel:j});var ut=A(vue.defineComponent({name:"ReviewEmpty",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let r=j();return ()=>e.hidden?null:jsxRuntime.jsx("div",{class:`docx-review__empty${e.className?` ${e.className}`:""}`,"data-testid":"review-empty",children:t.default?.()??r("review.empty")})}}),"Empty"),ye=A(vue.defineComponent({name:"ReviewAvatar",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let r=$(),n=O();return ()=>{let o=r.value;if(e.hidden||!o)return null;let i=t.default?.();if(i===void 0&&!o.initials)return null;let s={class:`docx-review__avatar${e.className?` ${e.className}`:""}`,"data-testid":"review-avatar","aria-hidden":true};if(e.asChild)return jsxRuntime.jsx(vue$1.Slot,{...s,children:i});let a=n.value.authorInfo.get(o.author)?.style?.avatarUrl,u=i??(a?jsxRuntime.jsx("img",{class:"docx-review__avatar-img",src:a,alt:"",loading:"lazy",decoding:"async",referrerpolicy:"no-referrer"}):void 0)??o.initials;return jsxRuntime.jsx("span",{...s,children:u})}}}),"Avatar"),we=A(vue.defineComponent({name:"ReviewAuthor",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let r=$(),n=j();return ()=>{let o=r.value;if(e.hidden||!o)return null;let i=o.author||n("comments.unknown"),s={class:`docx-review__author${e.className?` ${e.className}`:""}`,"data-testid":"review-author"};return e.asChild?jsxRuntime.jsx(vue$1.Slot,{...s,children:t.default?.()}):jsxRuntime.jsx("span",{...s,children:t.default?.()??i})}}}),"Author"),Re=A(vue.defineComponent({name:"ReviewTime",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let r=$();return ()=>{let n=r.value;if(e.hidden||!n)return null;let o=n.date;if(!o)return null;let i=new Date(o);if(Number.isNaN(i.getTime()))return null;let s={class:`docx-review__time${e.className?` ${e.className}`:""}`,"data-testid":"review-time",datetime:o};return e.asChild?jsxRuntime.jsx(vue$1.Slot,{...s,children:t.default?.()}):jsxRuntime.jsx("time",{...s,children:t.default?.()??ot.format(i)})}}}),"Time"),ge=A(vue.defineComponent({name:"ReviewSummary",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let r=$(),n=j();return ()=>{let o=r.value;if(e.hidden||!o)return null;let i=o.text,s=o.kind!=="revision"?null:n(st(o.revisionKind,o.item.markDirection)),a=o.kind==="revision"&&o.revisionKind==="replace",u={class:`docx-review__summary${e.className?` ${e.className}`:""}`,"data-testid":"review-summary","data-review-selectable":""};if(e.asChild)return jsxRuntime.jsx(vue$1.Slot,{...u,children:t.default?.()});let d=t.default?.();return d?jsxRuntime.jsx("div",{...u,children:d}):jsxRuntime.jsx("div",{...u,children:a?jsxRuntime.jsxs("span",{class:"docx-review__text",children:[n("review.replaced")," ",jsxRuntime.jsxs("span",{class:"docx-review__removed",children:['"',o.replacedText,'"']})," ",n("review.replacedWith")," ",jsxRuntime.jsxs("span",{class:"docx-review__added",children:['"',i,'"']})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[s?jsxRuntime.jsx("span",{class:"docx-review__label","data-kind":o.kind==="revision"?o.revisionKind:"revision",children:s}):null,i?jsxRuntime.jsx("span",{class:"docx-review__text",children:i}):null]})})}}}),"Summary");function Bn(e,t,r,n,o,i,s){return A(vue.defineComponent({name:e,props:{className:String,asChild:Boolean,hidden:Boolean,icon:{type:[Object,String],default:void 0}},setup(a,{slots:u}){let d=O(),l=$(),c=j();return ()=>{let f=l.value,{readOnly:m,review:g}=d.value;if(a.hidden||!f||!s(f))return null;let p=c(n),N=m?c("editingMode.viewingHint"):null,I={type:"button",class:`docx-review__action${a.className?` ${a.className}`:""}`,"data-testid":r,"aria-label":p,title:N??p,disabled:m,onMousedown:L,onClick:y=>{y.stopPropagation(),!m&&i(g,f);}};return a.asChild?jsxRuntime.jsx(pe,{engineDisabled:m,disabledReason:N,slotProps:I,children:u.default?.()}):jsxRuntime.jsx("button",{...I,children:a.icon??u.default?.()??F(o)})}}}),t)}var $e=Bn("ReviewAccept","Accept","review-accept","review.accept",Pe,(e,t)=>e.accept(t),e=>e.kind==="revision"&&!e.readOnly),Ke=Bn("ReviewReject","Reject","review-reject","review.reject",En,(e,t)=>e.reject(t),e=>e.kind==="revision"&&!e.readOnly),ct=A(vue.defineComponent({name:"ReviewDelete",props:{className:String,asChild:Boolean,hidden:Boolean,icon:{type:[Object,String],default:void 0}},setup(e,{slots:t}){let r=O(),n=$(),{t:o}=vue$1.useTranslation();return ()=>{let i=n.value,{readOnly:s,review:a}=r.value;if(e.hidden||!i||i.kind==="custom"||i.kind==="revision"&&i.readOnly)return null;let u=i.kind==="comment"?o("review.deleteComment"):o("review.discardChange"),d=s?o("editingMode.viewingHint"):null,l={type:"button",class:`docx-review__action${e.className?` ${e.className}`:""}`,"data-testid":"review-delete","aria-label":u,title:d??u,disabled:s,onMousedown:L,onClick:c=>{c.stopPropagation(),!s&&a.remove(i);}};return e.asChild?jsxRuntime.jsx(pe,{engineDisabled:s,disabledReason:d,slotProps:l,children:t.default?.()}):jsxRuntime.jsx("button",{...l,children:e.icon??t.default?.()??F(kn)})}}}),"Delete"),Dt=A(vue.defineComponent({name:"ReviewReplies",props:{className:String,hidden:Boolean},setup(e){let t=O(),r=$();return ()=>{let n=r.value;if(e.hidden||!n||n.kind==="custom")return null;let i=(t.value.byId.get(n.id)??n).replyIds.map(s=>t.value.byId.get(s)).filter(s=>s!==void 0);return i.length===0?null:jsxRuntime.jsx("ol",{class:`docx-review__replies${e.className?` ${e.className}`:""}`,children:i.map(s=>jsxRuntime.jsx(at,{entry:s,children:jsxRuntime.jsxs("li",{class:"docx-review__reply","data-testid":"review-reply",children:[jsxRuntime.jsxs("div",{class:"docx-review__head",children:[jsxRuntime.jsx(ye,{}),jsxRuntime.jsxs("div",{class:"docx-review__meta",children:[jsxRuntime.jsx(we,{}),jsxRuntime.jsx(Re,{})]}),jsxRuntime.jsx("div",{class:"docx-review__actions",children:jsxRuntime.jsx(ct,{})})]}),jsxRuntime.jsx(ge,{})]})},s.key))})}}}),"Replies"),qn=vue.defineComponent({name:"ReviewCardPreset",setup(e,{slots:t}){let r=$(),n=vue.computed(()=>pn(t.default?.()));return ()=>{let o=r.value;if(!o)return null;let i=(a,u)=>a in n.value?n.value[a]:u;if(o.kind==="custom"&&o.item.kind==="custom"){let a=o.item;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{class:"docx-review__head",children:[i("Avatar",null),jsxRuntime.jsx("div",{class:"docx-review__meta",children:i("Author",jsxRuntime.jsx("span",{class:"docx-review__author","data-testid":"review-custom-title",children:a.title}))})]}),i("Summary",a.detail?jsxRuntime.jsx("div",{class:"docx-review__summary","data-testid":"review-summary","data-review-selectable":"",children:jsxRuntime.jsx("span",{class:"docx-review__text",children:a.detail})}):null),n.value.__extra]})}let s=o.kind==="revision"&&!o.readOnly;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{class:"docx-review__head",children:[i("Avatar",jsxRuntime.jsx(ye,{})),jsxRuntime.jsxs("div",{class:"docx-review__meta",children:[i("Author",jsxRuntime.jsx(we,{})),i("Time",jsxRuntime.jsx(Re,{}))]}),s||o.kind==="comment"?jsxRuntime.jsxs("div",{class:"docx-review__actions",children:[i("Accept",jsxRuntime.jsx($e,{})),i("Reject",jsxRuntime.jsx(Ke,{})),i("Resolve",jsxRuntime.jsx(Ot,{})),i("Reopen",jsxRuntime.jsx(_t,{})),i("Delete",jsxRuntime.jsx(ct,{}))]}):null]}),i("Summary",jsxRuntime.jsx(ge,{})),i("Replies",jsxRuntime.jsx(Dt,{})),i("Reply",jsxRuntime.jsx(Mt,{})),n.value.__extra]})}}}),He=A(vue.defineComponent({name:"ReviewCard",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let r=O(),n=$(),o=Me("card"),i=j(),s=null,a=d=>{s=d.el instanceof HTMLDetailsElement?d.el:s;},u=d=>{s?.open&&d.target instanceof Node&&!s.contains(d.target)&&(r.value.setExpandedResolvedKey(null),r.value.review.setActive(null),s.open=false);};return vue.onMounted(()=>document.addEventListener("pointerdown",u,true)),vue.onBeforeUnmount(()=>document.removeEventListener("pointerdown",u,true)),()=>{let d=n.value;if(e.hidden||!d)return null;let{review:l,authorSlots:c,authorInfo:f,expandedResolvedKey:m,setExpandedResolvedKey:g}=r.value,p=c.get(d.author)??0,N=!e.asChild&&d.kind==="comment"&&d.resolved,I={class:`docx-review__card${e.className?` ${e.className}`:""}`,"data-testid":"review-card",...N?{}:{"aria-labelledby":`${o}-author ${o}-summary`},"data-kind":d.kind==="revision"?d.revisionKind??"revision":d.kind,...d.author?{"data-review-author":d.author,"data-review-author-slot":ve(f.get(d.author),p)}:{},...d.kind==="custom"&&d.item.kind==="custom"?{"data-node-name":d.item.name}:{},...d.isActive?{"data-active":""}:{},...d.kind==="comment"&&d.resolved?{"data-resolved":""}:{},...N?{"data-resolved-miniature":""}:{},style:se(d.author,f.get(d.author),p),...N?{}:{tabIndex:0,role:"button"},id:o,...N?{}:{onMousedown:y=>{y.target?.closest("[data-review-selectable]")||y.currentTarget.focus({preventScroll:true});},onClick:y=>{y.target?.closest("button, input, textarea, .docx-review__reply-box, [data-review-selectable]")||d.isActive||l.setActive(d.key);},onKeydown:y=>{y.target===y.currentTarget&&(y.key!=="Enter"&&y.key!==" "||(y.preventDefault(),l.setActive(d.key)));}}};return e.asChild?jsxRuntime.jsx(vue$1.Slot,{...I,children:t.default?.()}):N?vue.h("details",{...I,open:m===d.key,onVnodeMounted:a,onVnodeUpdated:a,onVnodeBeforeUnmount:()=>{s=null;},onToggle:y=>{let E=y.currentTarget.open;g(E?d.key:null),l.setActive(E?d.key:null);}},[vue.h("summary",{class:"docx-review__resolved-toggle","aria-label":i("review.showResolvedComment")},[vue.h("span",{class:"docx-review__resolved-status"},i("review.resolved")),it()]),vue.h(qn,null,{default:()=>t.default?.()})]):jsxRuntime.jsx("div",{...I,children:vue.h(qn,null,{default:()=>t.default?.()})})}}}),"Card");var $t=A(vue.defineComponent({name:"ReviewList",props:{stack:{type:Boolean,default:true},positions:{type:Object,default:void 0},collapsed:{type:Object,default:void 0},scale:{type:Number,default:1},offset:{type:Number,default:0},window:{type:Object,default:null},className:String,hidden:Boolean},setup(e,{slots:t}){let r=O();return ()=>{if(e.hidden)return null;let{review:n,cardClassName:o}=r.value,i=t.default?.()??[],s=t.item,a=s?null:Ee(i,"list"),u=Oe(n.items),d=n.items.filter(l=>!Ae(l,u));return d.length===0?s?null:a?.parts.Empty??jsxRuntime.jsx(ut,{}):vue.h("div",{class:`docx-review__list${e.className?` ${e.className}`:""}`},d.map(l=>{let c=e.stack?e.positions?.get(l.key)??l.anchorY:l.anchorY,f=c==null?null:e.offset+c*e.scale;if(f!==null&&e.window&&(f<e.window.top||f>e.window.bottom))return null;let m=f===null?{}:{position:"absolute",top:`${f}px`};return vue.h(rt,{key:l.key,entry:l,measureKey:l.key,collapsed:e.collapsed?.has(l.key),style:m},()=>s?s({item:l}):a?.parts.Card?et(a.parts.Card,o):vue.h(He,o?{className:o}:{},()=>a?.rest))}))}}}),"List"),Kt=A(vue.defineComponent({name:"ReviewMarkers",props:{scale:{type:Number,default:1},offset:{type:Number,default:0},window:{type:Object,default:null},className:String,hidden:Boolean,icon:{type:[Object,Function],default:void 0}},setup(e){let t=O(),r=j(),n=vue.computed(()=>{let{review:o}=t.value,i=Oe(o.items),s=o.items.filter(d=>!Ae(d,i)),a=new Map,u=Number.NEGATIVE_INFINITY;for(let d of s){if(d.anchorY===null)continue;let l=Math.max(e.offset+d.anchorY*e.scale,u);a.set(d.key,l),u=l+mn;}return {roots:s,stackedTops:a}});return ()=>{if(e.hidden)return null;let{review:o,authorSlots:i,authorInfo:s,setExpandedResolvedKey:a}=t.value,{roots:u,stackedTops:d}=n.value;return jsxRuntime.jsx("div",{class:`docx-review__markers${e.className?` ${e.className}`:""}`,children:u.map(l=>{let c=d.get(l.key);return c===void 0||e.window&&(c<e.window.top||c>e.window.bottom)?null:jsxRuntime.jsx("button",{type:"button",class:"docx-review__marker","data-testid":"review-marker","data-kind":l.kind==="revision"?l.revisionKind:l.kind,...l.author?{"data-review-author":l.author,"data-review-author-slot":ve(s.get(l.author),i.get(l.author)??0)}:{},style:{position:"absolute",top:`${c}px`,...l.author?{"--doc-review-author-current":Tt(s.get(l.author),i.get(l.author)??0)}:{}},title:l.author?`${l.author}: ${l.text}`:l.text,"aria-label":`${r("review.showPane")}: ${l.author?`${l.author}. `:""}${l.text}`,onMousedown:L,onClick:()=>{l.kind==="comment"&&l.resolved&&a(l.key),o.setPaneOpen(true),o.setActive(l.key);},children:(typeof e.icon=="function"?e.icon(l):e.icon)??(l.kind==="comment"&&l.resolved?it():F(Tn(l)))},l.key)})})}}}),"Markers"),Ht=A(vue.defineComponent({name:"ReviewAddComment",props:{top:{type:Number,default:null},drafting:{type:Boolean,default:false},className:String,hidden:Boolean},setup(e,{slots:t}){let r=O(),n=j();return ()=>{let{beginDraft:o,composeTop:i,readOnly:s}=r.value;if(e.hidden||e.drafting||i===null||s)return null;let a={type:"button",class:`docx-review__add${e.className?` ${e.className}`:""}`,"data-testid":"review-add-comment",style:{position:"absolute",top:`${i}px`},"aria-label":n("common.comment"),title:n("common.comment"),onMousedown:L,onClick:o},u=t.default?.();return u?.length?vue.h(vue$1.Slot,a,()=>u):vue.h("button",a,F(In))}}}),"AddComment"),hr=vue.defineComponent({name:"BalloonTime",props:{raw:{type:String,required:true}},setup(e){return ()=>{let t=new Date(e.raw);return Number.isNaN(t.getTime())?null:jsxRuntime.jsx("time",{class:"docx-review__time",datetime:e.raw,children:ot.format(t)})}}}),qt=A(vue.defineComponent({name:"ReviewBalloon",props:{className:String,hidden:Boolean},setup(e){let t=vue.getCurrentInstance(),r=O(),n=j(),o=vue.ref(null),i=vue.ref(false),s=vue.ref(false);vue.watch(o,l=>{i.value=l!==null;});let a;vue.onMounted(()=>{let l=vue.getCurrentInstance()?.proxy?.$el,c=l?.closest(".docx-review"),f=c?.closest(".docx-editor__scroll-container")??c?.offsetParent;if(!l||!c||!f)return;let m=(p,N)=>{let I=c.getBoundingClientRect(),y=p.getBoundingClientRect(),E=p.ownerDocument.defaultView?.innerHeight??1/0,w=Number(p.dataset.start),x=Number(p.dataset.end);o.value={revisionId:p.dataset.revisionId,author:p.dataset.reviewAuthor??"",...p.dataset.revisionDate!==void 0?{date:p.dataset.revisionDate}:{},...p.dataset.revisionKind!==void 0?{kind:p.dataset.revisionKind}:{},structuralSite:N,...p.dataset.paragraphId!==void 0?{paragraphId:p.dataset.paragraphId}:{},...Number.isFinite(w)?{start:w}:{},...Number.isFinite(x)?{end:x}:{},left:y.left-I.left,top:y.top-I.top,bottom:y.bottom-I.top,above:y.bottom+220>E},t?.proxy?.$forceUpdate();},g=p=>{let N=p.target;if(!(N instanceof Element)||l.contains(N))return;let I=N.closest("[data-revision-id]");if(I instanceof HTMLElement&&f.contains(I)){let y=I.classList.contains("docx-table-row--revision");if(I.dataset.revisionKind==="format"||y){m(I,y);return}}i.value&&(o.value=null,t?.proxy?.$forceUpdate());};f.addEventListener("pointerdown",g,true),f.addEventListener("mousedown",g,true),a=()=>{f.removeEventListener("pointerdown",g,true),f.removeEventListener("mousedown",g,true);};}),vue.onUnmounted(()=>a?.());let u=vue.computed(()=>{let l=o.value;if(!l)return null;let{allItems:c}=r.value,f=null,m=false,g=null,p=false,N=null,I=false;for(let y of c)if(!(y.kind!=="revision"||y.item.kind!=="revision")){for(let E of y.item.addresses)if(E.id===l.revisionId){if(E.author===l.author){if(E.date===l.date)return y;f===null?f=y:f!==y&&(m=true);}g===null?g=y:g!==y&&(p=true);}if(l.paragraphId!==void 0&&l.start!==void 0&&l.end!==void 0&&(y.revisionKind==="format"||y.revisionKind==="structural")){for(let E of y.item.ranges)if(E.start.paragraphId===l.paragraphId&&E.start.offset<l.end&&E.end.offset>l.start){N===null?N=y:N!==y&&(I=true);break}}}return f!==null&&!m?f:g!==null&&!p?g:N!==null&&!I?N:null}),d=vue.computed(()=>{let l=u.value;return l&&(l.revisionKind==="format"||l.revisionKind==="structural")?l:null});return vue.watch(d,l=>{if(l){s.value=true;return}s.value&&(s.value=false,o.value=null);}),()=>{if(e.hidden)return null;let{review:l,authorSlots:c,authorInfo:f}=r.value,m=o.value,g=m?.kind==="format"?"format":"structural",p=d.value,N=m===null?null:vue.h("div",{class:"docx-review__balloon","data-testid":"review-balloon",style:{left:`${m.left}px`,top:`${m.above?m.top-6:m.bottom+6}px`,transform:m.above?"translateY(-100%)":void 0},onMousedown:L},p?vue.h(at,{entry:p},()=>vue.h("div",{class:"docx-review__card","data-testid":"review-balloon-card","data-kind":p.revisionKind??"revision",...p.author?{"data-review-author":p.author,"data-review-author-slot":ve(f.get(p.author),c.get(p.author)??0)}:{},style:se(p.author,f.get(p.author),c.get(p.author)??0),onClick:()=>l.setActive(p.key)},[vue.h("div",{class:"docx-review__head"},[vue.h(ye),vue.h("div",{class:"docx-review__meta"},[vue.h(we),vue.h(Re)]),p.kind==="revision"&&!p.readOnly?vue.h("div",{class:"docx-review__actions"},[vue.h($e),vue.h(Ke)]):null]),vue.h(ge)])):vue.h("div",{class:"docx-review__card","data-testid":"review-balloon-card","data-kind":g,...m.author?{"data-review-author":m.author,"data-review-author-slot":ve(f.get(m.author),c.get(m.author)??0)}:{},style:se(m.author,f.get(m.author),c.get(m.author)??0)},[vue.h("div",{class:"docx-review__head"},[vue.h("span",{class:"docx-review__avatar","aria-hidden":true},vn(m.author)),vue.h("div",{class:"docx-review__meta"},[vue.h("span",{class:"docx-review__author"},m.author||n("comments.unknown")),m.date?vue.h(hr,{raw:m.date}):null])]),vue.h("div",{class:"docx-review__summary"},[vue.h("span",{class:"docx-review__label","data-kind":g},n(st(g)))])]));return vue.h("div",{class:`docx-review__balloon-root${e.className?` ${e.className}`:""}`},N===null?void 0:[N])}}}),"Balloon");function Be(e,t,r){if(!(e in r))return t;let n=r[e];return !vue.isVNode(n)||!vue.isVNode(t)?n:vue.cloneVNode(n,vue.mergeProps(t.props??{},n.props??{}))}var Pr=vue.defineComponent({name:"ReviewDraftMount",props:{top:{type:Number,required:true},left:{type:Number,default:null}},setup(e){return ()=>vue.h(Pt,{top:e.top,left:e.left})}});function Mr(e,t){return {items:t,activeKey:e.activeKey.value,setActive:e.setActive,accept:e.accept,reject:e.reject,resolve:e.resolve,reopen:e.reopen,commentResolutionDisabledReason:e.commentResolutionDisabledReason.value,remove:e.remove,reply:e.reply,selectionAnchorY:e.selectionAnchorY.value,comment:e.comment,paneOpen:e.paneOpen.value,setPaneOpen:e.setPaneOpen,ready:e.ready.value}}var Dr=vue.defineComponent({name:"DocxEditorReview",props:{className:String,asChild:Boolean,hidden:Boolean,t:{type:Function,default:void 0},card:{type:Object,default:void 0},furniture:{type:[Object,Array],default:void 0},preset:{type:Boolean,default:true},stack:{type:Boolean,default:true},gap:{type:Number,default:8},filter:{type:Function,default:void 0},structural:{type:Boolean,default:false},formatting:{type:Boolean,default:false}},setup(e,{slots:t}){let r=vue.getCurrentInstance(),n=vue$1.useDocxEditor(),o=vue$1.useEditorState(rn),i=vue$1.useEditorState(ke),s=fe(),a=vue.computed(()=>{let v=[];return e.structural||v.push("structural"),e.formatting||v.push("format"),v.length>0?v:void 0}),u=vue.computed(()=>a.value?{excludeRevisionKinds:a.value}:void 0);vue.watch([n,a],()=>{n.value?.setReviewActivationExclusions(a.value??null);},{immediate:true}),vue.onUnmounted(()=>{n.value?.setReviewActivationExclusions(null);}),tn(s);let d=Ct(fn,s),l=Ct(()=>u.value,s),{t:c}=vue$1.useTranslation(),f=(v,R)=>e.t?.(v,R)??c(v,R),m=vue.shallowRef(null),g=vue.inject(vue$1.ReviewRailContext,vue.shallowRef({mounted:0,register:()=>()=>{},registerCommentDraft:()=>()=>{},requestCommentDraft:()=>false})),p=vue.ref(false),N,I=()=>{if(!p.value||e.hidden){N?.(),N=void 0;return}N??=g.value.register();};vue.onMounted(()=>{p.value=true,I();}),vue.watch(()=>e.hidden,I);let y=vue.computed(()=>l.paneOpen.value),E=vue$1.useReviewGutter(),w=vue.ref(null),x=vue.computed(()=>y.value&&(w.value??E.value.inlineEnd)>0&&(w.value??E.value.inlineEnd)<vue$1.REVIEW_PANE_GUTTER),P=vue.computed(()=>y.value&&!x.value),K=vue.computed(()=>e.filter?l.items.value.filter(v=>e.filter(v)):l.items.value),J=vue.ref(null);vue.watch(K,v=>{let R=J.value;R!==null&&!v.some(h=>h.key===R&&h.kind==="comment"&&h.resolved)&&(J.value=null);},{flush:"sync"});let Y=vue.computed(()=>n.value?.getConfiguredAuthor()??null),ne=vue.computed(()=>{let v=new Map;for(let R of K.value)R.author&&!v.has(R.author)&&v.set(R.author,v.size);return Y.value&&!v.has(Y.value)&&v.set(Y.value,v.size),v}),pt=vue$1.useReviewAuthors(),yt=new Map,Fe=vue.computed(()=>Cn(pt.value,K.value,ne.value,n.value,yt)),Ne=vue.computed(()=>{let v=new Map;for(let R of d.items.value)v.set(R.id,R);return v}),Ye=vue.ref(new Map),no=Nn((v,R)=>{if(R<=0||Ye.value.get(v)===R)return;let h=new Map(Ye.value);h.set(v,R),Ye.value=h;}),M=vue.ref(an),Ce;vue.watch([n,K,o,()=>e.hidden,m,x],()=>{Ce?.(),Ce=void 0;let v=m.value,R=n.value;if(!R||!v||o.value||e.hidden)return;let h=v.offsetParent,k=h?.querySelector(".docx-paginated-surface")??null,b=()=>{if(h){let me=Number.parseFloat(getComputedStyle(h).getPropertyValue("--docx-review-gutter"));w.value=Number.isFinite(me)?me:null;}else w.value=null;let V=k&&h?k.getBoundingClientRect():null,ee=V&&h?h.getBoundingClientRect():null,ue=V&&ee&&h?V.right-ee.left-h.clientLeft+h.scrollLeft+sn:null,re={scale:R.getRenderScale(),top:V&&ee&&h?V.top-ee.top-h.clientTop+h.scrollTop:0,left:ue,compactCardLeft:ue===null||!h?null:h.scrollLeft+h.clientWidth-ue-Te-ln},ce=M.value;(ce.scale!==re.scale||ce.top!==re.top||ce.left!==re.left||ce.compactCardLeft!==re.compactCardLeft)&&(M.value=re);};b();let T=new ResizeObserver(b);h&&T.observe(h),k&&T.observe(k);let U=h&&typeof MutationObserver<"u"?new MutationObserver(b):null;if(U?.observe(h,{attributes:true,attributeFilter:["style"]}),!x.value||!h){Ce=()=>{U?.disconnect(),T.disconnect();};return}let B=0,D=()=>{B===0&&(B=requestAnimationFrame(()=>{B=0,b();}));};h.addEventListener("scroll",D,{passive:true}),Ce=()=>{B!==0&&cancelAnimationFrame(B),h.removeEventListener("scroll",D),U?.disconnect(),T.disconnect();};},{flush:"post"}),vue.onUnmounted(()=>Ce?.());let Ge;vue.watch([n,o,()=>e.hidden,m],()=>{Ge?.(),Ge=void 0;let v=m.value,R=n.value;if(!R||!v||o.value||e.hidden)return;let h=k=>{let b=k.target;if(!(b instanceof Node)||v.contains(b))return;let T=v.offsetParent;!T||!T.contains(b)||T.querySelector(".docx-paginated-surface")?.contains(b)||R.setActiveReviewItem(null);};document.addEventListener("mousedown",h,true),Ge=()=>document.removeEventListener("mousedown",h,true);},{flush:"post"}),vue.onUnmounted(()=>Ge?.());let de=vue.ref(null),Ze;vue.watch([n,o,()=>e.hidden,m],()=>{Ze?.(),Ze=void 0;let v=m.value,R=v?.offsetParent;if(!R||o.value||e.hidden)return;let h=0,k=()=>{h=0;let B=R.scrollTop-tt,D=R.scrollTop+R.clientHeight+tt,V=de.value;de.value=V&&V.top===B&&V.bottom===D?V:{top:B,bottom:D};},b=0,T=()=>{h===0&&(h=requestAnimationFrame(k)),v?.setAttribute("data-scrolling",""),window.clearTimeout(b),b=window.setTimeout(()=>v?.removeAttribute("data-scrolling"),150);};k(),R.addEventListener("scroll",T,{passive:true});let U=new ResizeObserver(T);U.observe(R),Ze=()=>{h!==0&&cancelAnimationFrame(h),window.clearTimeout(b),R.removeEventListener("scroll",T),U.disconnect();};},{flush:"post"}),vue.onUnmounted(()=>Ze?.());let Q=vue.ref(null),We=vue.shallowRef(null),be=()=>{let v=We.value;v&&v.editor.releaseSelection(v.pin),We.value=null,Q.value=null;};vue.watch(()=>n.value,(v,R)=>{R&&R!==v&&We.value?.editor===R&&be();});let Ft=()=>{let v=n.value;if(!v||i.value)return;let R=v.getSelectionPlacement()?.anchorY??null;if(R===null)return;be();let h=v.retainSelection();h&&(We.value={editor:v,pin:h},l.setPaneOpen(true),Q.value=R,r?.proxy?.$forceUpdate());},Ie,Yt=()=>{if(!p.value||e.hidden){Ie?.(),Ie=void 0;return}Ie??=g.value.registerCommentDraft(Ft);};vue.onMounted(Yt),vue.watch(()=>e.hidden,Yt);let oo=()=>{be(),n.value?.focus(),r?.proxy?.$forceUpdate();};vue.watch(y,v=>{v||Q.value===null||be();}),vue.onBeforeUnmount(()=>{p.value=false,N?.(),N=void 0,Ie?.(),Ie=void 0,be();});let wt=vue.computed(()=>Q.value??l.selectionAnchorY.value),oe=vue.computed(()=>{let v=Oe(K.value);return K.value.filter(R=>!Ae(R,v))}),ro=vue.computed(()=>{let v=Q.value;if(v===null)return oe.value;let R=oe.value.findIndex(k=>k.anchorY!==null&&k.anchorY>v),h={key:te,anchorY:v};return R===-1?[...oe.value,h]:[...oe.value.slice(0,R),h,...oe.value.slice(R)]}),ao=vue.computed(()=>{let v=new Map(Ye.value);for(let R of oe.value){if(v.has(R.key))continue;let h=R.text.length+(R.kind==="revision"?R.replacedText?.length??0:0),k=Math.min(6,Math.max(1,Math.ceil(h/36)));v.set(R.key,64+k*20);}return v}),Rt=vue.computed(()=>{let v=M.value.scale,R=new Map,h=new Set,k=Number.NEGATIVE_INFINITY;for(let b of ro.value){let T=b.anchorY===null?Number.isFinite(k)?k:0:Math.max(b.anchorY,k);R.set(b.key,T);let U=b.anchorY===null?0:(T-b.anchorY)*v,B="isActive"in b&&b.isActive,D=U>cn&&!B&&b.key!==te;D&&h.add(b.key);let V=D?un:ao.value.get(b.key)??dn;k=T+(V+e.gap)/v;}return {stacked:R,collapsedKeys:h}}),Se=vue.computed(()=>wt.value===null?null:M.value.top+(x.value?wt.value:Rt.value.stacked.get(te)??wt.value)*M.value.scale),io=vue.computed(()=>(l.commentResolutionDisabledReason.value,l.selectionAnchorY.value,l.paneOpen.value,l.items.value.length,Mr(l,K.value))),gt=()=>{let v=Y.value,R=v?ne.value.get(v)??0:0;return {t:e.t,cardClassName:e.card?.className,readOnly:i.value,composeTop:Se.value,review:io.value,allItems:d.items.value,authorSlots:ne.value,authorInfo:Fe.value,draftAuthor:v,draftAuthorInfo:v?Fe.value.get(v):void 0,draftAuthorSlot:R,byId:Ne.value,measure:no,beginDraft:Ft,endDraft:oo,expandedResolvedKey:J.value,setExpandedResolvedKey:h=>{J.value=h;}}},ht=vue.shallowRef(gt());return vue.watchEffect(()=>{ht.value=gt();}),vue.watch(()=>s.value,()=>{ht.value=gt(),r?.proxy?.$forceUpdate();},{flush:"sync"}),vue.provide(St,ht),()=>{if(e.hidden||o.value)return null;s.value,d.items.value,Q.value,K.value.length,l.selectionAnchorY.value,l.paneOpen.value,l.commentResolutionDisabledReason.value,Se.value;let v=z=>{m.value=z.el instanceof HTMLElement?z.el:null;},R={onVnodeMounted:v,onVnodeUpdated:v,onVnodeBeforeUnmount:()=>{m.value=null;},class:`docx-review${e.className?` ${e.className}`:""}`,"data-testid":"review-rail","data-count":K.value.length,"data-open":P.value?"":void 0,"data-compact":x.value?"":void 0,role:"complementary","aria-label":f("review.ariaLabel"),onMousedown:L,style:M.value.left===null?void 0:{left:`${M.value.left}px`,right:"auto"}},h=t.default?.()??[],k=e.asChild&&h.length===1&&vue.isVNode(h[0])?h[0]:null,{parts:b,rest:T}=Ee(k?[]:h,"root"),U={stack:e.stack,positions:Rt.value.stacked,collapsed:Rt.value.collapsedKeys,scale:M.value.scale,offset:M.value.top,window:de.value},B=vue.h(Kt,{scale:M.value.scale,offset:M.value.top,window:de.value}),D=x.value?oe.value.find(z=>z.key===l.activeKey.value)??null:null,V=D===null?null:D.anchorY!==null?M.value.top+D.anchorY*M.value.scale:de.value!==null?de.value.top+tt+24:null,ee=Ee(T,"list"),ue=D&&t.item?t.item({item:D}):ee.parts.Card?et(ee.parts.Card,e.card?.className):e.preset?vue.h(He,e.card?.className?{className:e.card.className}:{},()=>ee.rest):null,re=D&&V!==null&&M.value.compactCardLeft!==null&&ue?vue.h(rt,{entry:D,className:"docx-review__slot--compact",testId:"review-compact-card",style:{position:"absolute",top:`${V}px`,left:`${M.value.compactCardLeft}px`,width:`${Te}px`}},()=>ue):null,ce=P.value?e.preset||"List"in b?Be("List",vue.h($t,U,{...T.length>0?{default:()=>T}:{},...t.item?{item:t.item}:{}}),b):T:e.preset||"Markers"in b?[Be("Markers",B,b),re]:T,me=[P.value&&e.furniture!==void 0?vue.h("div",{class:"docx-review__furniture","data-testid":"review-furniture"},[e.furniture]):null,ce,...e.preset||"AddComment"in b?[Be("AddComment",vue.h(Ht,{top:Se.value,drafting:Q.value!==null}),b)]:[],...Q.value===null||Se.value===null||!y.value||!e.preset&&!("Draft"in b)?[]:[Be("Draft",vue.h(Pr,{top:Se.value??0,left:x.value?M.value.compactCardLeft:null}),b)],...e.preset||"Balloon"in b?[Be("Balloon",vue.h(qt),b)]:[]],H=k;if(!H)return vue.h("aside",R,me);let ae=vue.cloneVNode(H,R,true);if(typeof H.type=="string"){let z=Array.isArray(H.children)?H.children:H.children==null?[]:typeof H.children=="string"||typeof H.children=="number"?[H.children]:[];ae.children=[...z,...me],ae.shapeFlag=ae.shapeFlag&-9|16;}else {let z=H.children&&!Array.isArray(H.children)&&typeof H.children=="object"?H.children:{},Gt=z.default;ae.children={...z,default:(...so)=>[...Gt?[Gt(...so)]:[],...me]},ae.shapeFlag=ae.shapeFlag&-25|32;}return ae}}});var Vr=Object.assign(Dr,{List:$t,Empty:ut,Card:He,Avatar:ye,Author:we,Time:Re,Summary:ge,Accept:$e,Reject:Ke,Resolve:Ot,Reopen:_t,Delete:ct,Replies:Dt,Reply:Mt,Markers:Kt,AddComment:Ht,Draft:Pt,Balloon:qt});function je(e){let t=vue$1.useDocxEditor();return vue.computed(()=>{let r=vue.toValue(e);return r||(t.value?.getCustomNodeDefinitions()??[]).filter(Je)})}var Br=".docx-content-control-boundary";function he(e,t){let{node:r,definition:n,controlId:o}=e,i=o?t?.getReviewItems().find(u=>u.kind==="custom"&&u.item.id===o):void 0;if(i?.kind==="custom"){let u=i.item;return {...r,attrs:u.attrs,text:u.text,...u.data===void 0?{}:{data:u.data},...o?{nodeId:o}:{}}}let s=o?jr(t,o,n):void 0,a=n.fromDocx?n.fromDocx({attrs:r.attrs,text:"",...s===void 0?{}:{data:s}}):r.attrs;return a===null?null:{...r,attrs:a,...s===void 0?{}:{data:s},...o?{nodeId:o}:{}}}function jr(e,t,r){let n=e?.surface;if(!n)return;let o=editor.partOfNodeId(n.session,t),i=store.customNodePayloadsByControl(n.session.currentPackage(),(o??n.session.part()).name,n.session.part().name).get(t);if(!i)return;let s=Xe(r.schema,i.data);return s.ok?s.value:void 0}function xe(e,t){let r=e?.closest?.(Br),n=r?.closest(".docx-content-control-chrome"),o=n?.getAttribute("data-tag"),i=o?ze(o):null;if(!r||!i||!o)return null;let s=t.find(a=>a.tagPrefix===i.prefix&&a.name===i.name);return s?{node:{name:i.name,attrs:i.attrs,tag:o,rect:r.getBoundingClientRect()},definition:s,controlId:n?.getAttribute("data-docx-content-control")??null}:null}var jt=".docx-content-control-boundary";function Wr(e){if(!Nt.test(e.tagPrefix)||!Nt.test(e.name))return [];let t=`${e.tagPrefix}:${e.name}`;return [`.docx-content-control-chrome[data-tag="${t}"]`,`.docx-content-control-chrome[data-tag^="${t}?"]`]}var zr=vue.defineComponent({name:"CustomNodeChrome",props:{nodes:{type:Array,default:void 0},onNodeClick:{type:Function,default:void 0},onNodeHover:{type:Function,default:void 0}},setup(e){let t=vue$1.useDocxEditor(),r=je(()=>e.nodes),n,o=null,i=null,s=l=>xe(document.elementFromPoint(l.clientX,l.clientY),r.value),a=l=>{let c=l.button===0?s(l):null;o=c?.controlId??null,i=c?.node.tag??null;},u=l=>{let c=o,f=i;if(o=null,i=null,f===null)return;let m=s(l);if(!m||m.node.tag!==f||c!==null&&m.controlId!==c)return;let g=he(m,t.value);g&&(m.definition.onClick?.(g),e.onNodeClick?.(g));},d=l=>{let c=xe(l.target,r.value);if(!c||l.relatedTarget?.closest?.(jt)===l.target.closest(jt))return;let m=he(c,t.value);m&&(c.definition.onHover?.(m),e.onNodeHover?.(m));};return vue.onMounted(()=>{n=vue.watch(r,(l,c,f)=>{let m=document.createElement("style"),g=[];for(let p of l){let N=Wr(p);if(N.length===0)continue;let I=p.chrome?.color,y=I!==void 0&&typeof CSS<"u"&&CSS.supports("color",I)?I:"var(--doc-accent)";g.push(`${N.map(E=>`${E} ${jt}`).join(", ")} {`," pointer-events: auto !important;"," opacity: 1;"," border: none;",` background: color-mix(in srgb, ${y} 12%, transparent);`," border-radius: 6px;"," cursor: default;","}");}m.textContent=g.join(`
2
+ `),document.head.append(m),f(()=>m.remove());},{immediate:true}),document.addEventListener("pointerdown",a,true),document.addEventListener("pointerup",u,true),document.addEventListener("mouseover",d);}),vue.onBeforeUnmount(()=>{n?.(),document.removeEventListener("pointerdown",a,true),document.removeEventListener("pointerup",u,true),document.removeEventListener("mouseover",d);}),()=>null}});function Jr(e){return e.surface??null}function zn(e){let t=e.detail?`${e.reason}: ${e.detail}`:e.reason;return {ok:false,code:Qr.has(e.reason)?"invalidArgs":"unsupported",reason:t}}var Qr=new Set(["payload-too-large","unaddressable-payload","store-not-authored","offset-out-of-range","invalid-range","invalid-property-value","splits-surrogate-pair"]);function Xn(e){return e.getEditingMode()==="viewing"?{ok:false,code:"locked",reason:"the document is open for viewing"}:null}function Wn(e){let t=e.getActiveScope();if(t.kind==="headerFooter")return {kind:"headerFooter",rId:t.rId};if(t.kind==="note"){let r=store.parseNoteScopeId(t.id);if(r)return {kind:"notesPart",noteKind:r.noteKind}}return {kind:"body"}}function Jn(e,t){let r=Jr(e),n=t===void 0?"":t.slice(0,t.indexOf("#"));if(!r||n.length===0)return Wn(e);if(n===r.session.part().name)return {kind:"body"};for(let o of r.session.headerFooterResolutionBySection())for(let i of [o.headers,o.footers])for(let s of i.values())if(s.partName===n)return {kind:"headerFooter",rId:s.rId};for(let o of ["footnote","endnote"])if(r.session.partFor({kind:"notesPart",noteKind:o})?.name===n)return {kind:"notesPart",noteKind:o};return Wn(e)}function ea(e){return e.surface??null}function Qn(e,t){let r=ea(e);if(!r)return {ok:false,code:"notFound",reason:"no document is mounted"};let n=Xn(e);if(n)return n;r.flushPendingInput();let o=r.session.removeCustomNode(t,Jn(e,t));return o.ok?{ok:true,changed:true}:zn(o)}var ia=Object.assign(vue.defineComponent({name:"CustomNodeContextMenu",props:{nodes:{type:Array,default:void 0},onEditNode:{type:Function,default:void 0},remove:{type:Boolean,default:true},onRemoveRefused:{type:Function,default:void 0}},setup(e){let t=je(()=>e.nodes),r=vue$1.useContextMenuTarget(),n=vue$1.useDocxEditor(),{t:o}=vue$1.useTranslation(),i=vue.computed(()=>xe(r,t.value)),s=vue.computed(()=>{let u=i.value;return u?he(u,n.value):null}),a=vue.computed(()=>{let u=i.value,d=s.value;return !u?.definition.reviewCard||!d?null:u.definition.reviewCard({attrs:d.attrs,text:d.text??"",...d.data===void 0?{}:{data:d.data}})});return ()=>{let u=i.value,d=s.value;if(!u||!d)return null;let{definition:l}=u,c=l.label??l.name,f=l.onEdit!==void 0||e.onEditNode!==void 0,m=e.remove&&d.nodeId!==void 0&&n.value!==null;return !a.value&&!f&&!m?null:jsxRuntime.jsxs(vue.Fragment,{children:[a.value?jsxRuntime.jsxs("div",{class:"docx-contextmenu__custom-info","data-testid":"custom-node-info",children:[jsxRuntime.jsx("span",{class:"docx-contextmenu__custom-title",children:a.value.title}),a.value.detail?jsxRuntime.jsx("span",{class:"docx-contextmenu__custom-detail",children:a.value.detail}):null]}):null,f?jsxRuntime.jsx(vue$1.ContextMenuItem,{label:o("contextMenu.editCustomNode",{label:c}),className:"docx-contextmenu__custom-edit",onSelect:()=>{l.onEdit?.(d),e.onEditNode?.(d,l);}}):null,m?jsxRuntime.jsx(vue$1.ContextMenuItem,{label:o("contextMenu.removeCustomNode",{label:c}),className:"docx-contextmenu__custom-remove",onSelect:()=>{let g=Qn(n.value,d.nodeId);g.ok||e.onRemoveRefused?.(d,g.reason);}}):null,jsxRuntime.jsx("div",{role:"separator",class:"docx-toolbar__menu-separator"})]})}}}),{docxRowPlacement:"start"});exports.CustomNodeChrome=zr;exports.CustomNodeContextMenu=ia;exports.DocxEditorReview=Vr;exports.activatedCustomNodeOf=he;exports.resolveCustomNodeActivation=xe;exports.reviewModule=Co;exports.useCustomNodeDefinitions=je;exports.useReview=Oo;exports.useReviewAuthor=Wo;exports.useReviewItem=$;exports.useReviewOf=_o;exports.useStackedReviewPositions=Po;
@@ -668,10 +668,10 @@ declare const DocxEditorReview: {
668
668
  top: number;
669
669
  bottom: number;
670
670
  } | null;
671
+ scale: number;
671
672
  icon: VNode<vue.RendererNode, vue.RendererElement, {
672
673
  [key: string]: any;
673
674
  }> | ((item: ReviewItemView) => VNode | null | undefined);
674
- scale: number;
675
675
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
676
676
  AddComment: vue.DefineComponent<vue.ExtractPropTypes<{
677
677
  top: {
@@ -668,10 +668,10 @@ declare const DocxEditorReview: {
668
668
  top: number;
669
669
  bottom: number;
670
670
  } | null;
671
+ scale: number;
671
672
  icon: VNode<vue.RendererNode, vue.RendererElement, {
672
673
  [key: string]: any;
673
674
  }> | ((item: ReviewItemView) => VNode | null | undefined);
674
- scale: number;
675
675
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
676
676
  AddComment: vue.DefineComponent<vue.ExtractPropTypes<{
677
677
  top: {