@docx-editor.dev/pro 2.5.0 → 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -273,7 +273,7 @@ interface CustomNodeDefinition<Schema extends StandardSchemaV1 | undefined = any
273
273
  }) => Readonly<Record<string, string>> | null;
274
274
  /**
275
275
  * Chip appearance, HOST-authored (never file data). `color` tints the chip
276
- * and its border; applied by `CustomNodeChrome` from `@docx-editor.dev/pro/react`.
276
+ * and its border; applied by `CustomNodeChrome` from the adapter-specific Pro entry.
277
277
  */
278
278
  readonly chrome?: {
279
279
  readonly color?: string;
@@ -273,7 +273,7 @@ interface CustomNodeDefinition<Schema extends StandardSchemaV1 | undefined = any
273
273
  }) => Readonly<Record<string, string>> | null;
274
274
  /**
275
275
  * Chip appearance, HOST-authored (never file data). `color` tints the chip
276
- * and its border; applied by `CustomNodeChrome` from `@docx-editor.dev/pro/react`.
276
+ * and its border; applied by `CustomNodeChrome` from the adapter-specific Pro entry.
277
277
  */
278
278
  readonly chrome?: {
279
279
  readonly color?: string;
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { A as AnyCustomNodeDefinition, C as CustomNodeDiagnostic, R as RecognizedCustomNode, S as StandardSchemaV1, I as InferSchemaInput, a as CustomNodeDefinition } from './define-custom-node-RznSCnPr.cjs';
2
- export { b as ActivatedCustomNode, c as CustomNode, d as CustomNodeDataRejection, e as CustomNodeDataResult, f as CustomNodePayloadSource, g as CustomNodesModuleOptions, h as InferSchemaOutput, M as MAX_CUSTOM_NODE_DATA_LENGTH, P as ProLicenseOptions, i as RecognizeCustomNodesOptions, j as ReviewModuleOptions, k as StandardSchemaIssue, l as StandardSchemaResult, m as customNodesModule, n as defineCustomNode, o as isCustomNodeDefinition, p as parseCustomNodeData, r as recognizeCustomNodes, q as reviewModule, s as serializeCustomNodeData } from './define-custom-node-RznSCnPr.cjs';
1
+ import { A as AnyCustomNodeDefinition, C as CustomNodeDiagnostic, R as RecognizedCustomNode, S as StandardSchemaV1, I as InferSchemaInput, a as CustomNodeDefinition } from './define-custom-node-Bk8kFO27.cjs';
2
+ export { b as ActivatedCustomNode, c as CustomNode, d as CustomNodeDataRejection, e as CustomNodeDataResult, f as CustomNodePayloadSource, g as CustomNodesModuleOptions, h as InferSchemaOutput, M as MAX_CUSTOM_NODE_DATA_LENGTH, P as ProLicenseOptions, i as RecognizeCustomNodesOptions, j as ReviewModuleOptions, k as StandardSchemaIssue, l as StandardSchemaResult, m as customNodesModule, n as defineCustomNode, o as isCustomNodeDefinition, p as parseCustomNodeData, r as recognizeCustomNodes, q as reviewModule, s as serializeCustomNodeData } from './define-custom-node-Bk8kFO27.cjs';
3
3
  import { Editor, ExecResult } from '@docx-editor.dev/core/contracts/editor';
4
4
  import '@docx-editor.dev/core/editor';
5
5
  import '@docx-editor.dev/core/store';
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { A as AnyCustomNodeDefinition, C as CustomNodeDiagnostic, R as RecognizedCustomNode, S as StandardSchemaV1, I as InferSchemaInput, a as CustomNodeDefinition } from './define-custom-node-RznSCnPr.js';
2
- export { b as ActivatedCustomNode, c as CustomNode, d as CustomNodeDataRejection, e as CustomNodeDataResult, f as CustomNodePayloadSource, g as CustomNodesModuleOptions, h as InferSchemaOutput, M as MAX_CUSTOM_NODE_DATA_LENGTH, P as ProLicenseOptions, i as RecognizeCustomNodesOptions, j as ReviewModuleOptions, k as StandardSchemaIssue, l as StandardSchemaResult, m as customNodesModule, n as defineCustomNode, o as isCustomNodeDefinition, p as parseCustomNodeData, r as recognizeCustomNodes, q as reviewModule, s as serializeCustomNodeData } from './define-custom-node-RznSCnPr.js';
1
+ import { A as AnyCustomNodeDefinition, C as CustomNodeDiagnostic, R as RecognizedCustomNode, S as StandardSchemaV1, I as InferSchemaInput, a as CustomNodeDefinition } from './define-custom-node-Bk8kFO27.js';
2
+ export { b as ActivatedCustomNode, c as CustomNode, d as CustomNodeDataRejection, e as CustomNodeDataResult, f as CustomNodePayloadSource, g as CustomNodesModuleOptions, h as InferSchemaOutput, M as MAX_CUSTOM_NODE_DATA_LENGTH, P as ProLicenseOptions, i as RecognizeCustomNodesOptions, j as ReviewModuleOptions, k as StandardSchemaIssue, l as StandardSchemaResult, m as customNodesModule, n as defineCustomNode, o as isCustomNodeDefinition, p as parseCustomNodeData, r as recognizeCustomNodes, q as reviewModule, s as serializeCustomNodeData } from './define-custom-node-Bk8kFO27.js';
3
3
  import { Editor, ExecResult } from '@docx-editor.dev/core/contracts/editor';
4
4
  import '@docx-editor.dev/core/editor';
5
5
  import '@docx-editor.dev/core/store';
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkQIMNGUJX_cjs=require('../chunk-QIMNGUJX.cjs'),react=require('react'),react$1=require('@docx-editor.dev/react'),jsxRuntime=require('react/jsx-runtime'),store=require('@docx-editor.dev/core/store');var Jt=new Set(["List","Markers","AddComment","Draft","Balloon"]),en=new Set(["Card","Empty"]);function Te(e,r){let a=r==="root"?Jt:en,i={},s=[],t=n=>{if(Array.isArray(n)){for(let c of n)t(c);return}if(!react.isValidElement(n)){n!=null&&n!==false&&s.push(n);return}if(n.type===react.Fragment){t(n.props.children);return}let o=n.type.docxReviewPart;o&&a.has(o)?i[o]=n:s.push(n);};return t(e),{parts:i,rest:s}}function dt(e,r){if(!r)return e;let a=e.props.className;return react.cloneElement(e,{className:`${r}${a?` ${a}`:""}`})}function ut(e){let r=react.useRef(new WeakMap),a=react.useRef(new Map),i=react.useRef(null),s=react.useCallback((t,n)=>{let o=a.current.get(n);if(!t){o&&(i.current?.unobserve(o),r.current.delete(o),a.current.delete(n));return}typeof ResizeObserver>"u"||(e(n,t.offsetHeight),i.current??(i.current=new ResizeObserver(c=>{for(let d of c){let l=r.current.get(d.target);l&&e(l,d.target.offsetHeight);}})),!(o===t&&r.current.get(t)===n)&&(o&&(i.current.unobserve(o),r.current.delete(o)),r.current.set(t,n),a.current.set(n,t),i.current.observe(t)));},[e]);return react.useEffect(()=>()=>{i.current?.disconnect(),a.current.clear();},[]),s}function sn(e){let r=false;return ()=>{if(r)return;if(!globalThis.navigator?.scheduling?.isInputPending?.({includeContinuous:true})){e();return}r=true,setTimeout(()=>{r=false,e();},0);}}function fe(e){let r=react$1.useDocxEditor();return mt(r,e)}function mt(e,r){let a=react.useCallback(v=>{if(!e)return ()=>{};let x=false,N=sn(()=>{x||v();}),C=e.on("change",N),O=e.on("selectionChange",N),U=e.on("error",N);return ()=>{x=true,C(),O(),U();}},[e]),i=react.useSyncExternalStore(a,()=>e?`${e.getReviewRevision()}:${e.getEditingMode()}`:"none",()=>"none"),s=react.useMemo(()=>e?e.getReviewItems(r).filter(v=>v.item.kind!=="custom"||v.item.carded):[],[e,i,r]),t=react.useMemo(()=>s.find(v=>v.isActive)?.key??null,[s]),n=react.useCallback((v,x)=>e?e.setActiveReviewItem(v,x).ok:false,[e]),o=react.useCallback(v=>!e||v.kind!=="revision"||v.readOnly?false:e.acceptReviewItem(v.key).ok,[e]),c=react.useCallback(v=>!e||v.kind!=="revision"||v.readOnly?false:e.rejectReviewItem(v.key).ok,[e]),d=react.useCallback(v=>!e||v.kind!=="comment"?false:e.setCommentResolved(v.key,true).ok,[e]),l=react.useCallback(v=>!e||v.kind!=="comment"?false:e.setCommentResolved(v.key,false).ok,[e]),m=e?.getEditingMode()==="viewing"?"the document is open for viewing":null,f=react.useCallback(v=>!e||v.kind==="custom"||v.kind==="revision"&&v.readOnly?false:e.deleteReviewItem(v.key).ok,[e]),w=react.useCallback((v,x,N)=>x.trim().length===0||!e?false:e.replyToReviewItem(v.key,x,N).ok,[e]),R=react.useMemo(()=>e?e.getSelectionPlacement()?.anchorY??null:null,[e,i]),b=react.useCallback((v,x)=>v.trim().length===0||!e?false:e.addComment(v,x).ok,[e]),g=react.useMemo(()=>e?e.isReviewPaneOpen():true,[e,i]),k=react.useCallback(v=>{!e||e.isReviewPaneOpen()===v||e.exec({type:"toggleReviewPane"});},[e]);return react.useMemo(()=>({items:s,activeKey:t,setActive:n,accept:o,reject:c,resolve:d,reopen:l,commentResolutionDisabledReason:m,remove:f,reply:w,selectionAnchorY:R,comment:b,paneOpen:g,setPaneOpen:k,ready:e!==null&&!e.snapshot().isLoading&&e.snapshot().parseError===null}),[s,t,n,o,c,d,l,m,f,w,R,b,g,k,e])}function an(e,r,a={}){let i=a.gap??8,s=a.scale??1,t=a.defaultHeight??0;return react.useMemo(()=>{let n=new Map,o=Number.NEGATIVE_INFINITY;for(let c of e){let d=c.anchorY===null?Number.isFinite(o)?o:0:Math.max(c.anchorY,o);n.set(c.key,d),o=d+((r.get(c.key)??t)+i)/s;}return n},[e,r,i,s,t])}var F=e=>jsxRuntime.jsx("svg",{viewBox:"0 -960 960 960",width:16,height:16,"aria-hidden":"true",focusable:"false",children:jsxRuntime.jsx("path",{d:e,fill:"currentColor"})}),pt="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",pe="M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z",wt="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",Rt="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",yt="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",ln="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",cn="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",dn="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",un="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??un;switch(e.revisionKind){case "insert":case "moveTo":return ln;case "delete":case "moveFrom":return cn;case "format":return dn;default:return vt}}function fn(e,r){return typeof r!="function"?e:typeof e!="function"?r:a=>{e(a),a.defaultPrevented||r(a);}}function pn(e,r){let a={...e,...r};for(let i of Object.keys(e))/^on[A-Z]/.test(i)?a[i]=fn(r[i],e[i]):i==="className"?a[i]=[e[i],r[i]].filter(Boolean).join(" "):i==="style"&&(a[i]={...e[i],...r[i]});return a}function ht(e){return e==="Enter"||e===" "}function wn(e){return ht(e.key)?(e.preventDefault(),e.stopPropagation(),true):false}function xt(e){return e.type==="button"}function Rn(e,r){return e.type==="a"||r.href!=null}function yn(e,r,a,i){let s=t=>{typeof a=="function"&&a(t);};return {onClick:t=>{typeof e=="function"&&e(t),t.defaultPrevented||s(t),i&&t.preventDefault();},onKeyDown:t=>{if(typeof r=="function"&&r(t),!ht(t.key))return;t.defaultPrevented||s(t),i&&t.preventDefault();}}}function W({engineDisabled:e,disabledReason:r,slotProps:a,children:i}){let s=react.Children.only(i);if(!react.isValidElement(s))return null;let t=s.props,n=pn(a,t);if(!e){if(!xt(s)){let o=yn(t.onClick,t.onKeyDown,a.onClick,Rn(s,t));n.onClick=o.onClick,n.onKeyDown=o.onKeyDown;}return react.cloneElement(s,n)}if(xt(s))n.disabled=true,delete n["aria-disabled"];else {delete n.disabled,n["aria-disabled"]=true,n["data-disabled"]="",n.tabIndex=-1,n.href=void 0,n.role===void 0&&(n.role="button");let o=n.onKeyDown;n.onKeyDown=c=>{wn(c)||typeof o=="function"&&o(c);};}return r&&(n.title=r),n.onClick=o=>{o.preventDefault(),o.stopPropagation();},react.cloneElement(s,n)}function Nt(e){function r({className:i,asChild:s,hidden:t,children:n,icon:o}){let c=e.useReview(),d=e.useItem(),l=e.useLabel();if(t||!d||d.kind!=="comment"||d.resolved)return null;let m=l("comments.resolve"),f=c.commentResolutionDisabledReason!==null,w=f?l("editingMode.viewingHint"):null,R={type:"button",className:`docx-review__action${i?` ${i}`:""}`,"data-testid":"review-resolve","aria-label":m,title:w??m,disabled:f,onMouseDown:e.guardMousedown,onClick:b=>{b.stopPropagation(),!f&&c.resolve(d);}};return s?jsxRuntime.jsx(W,{engineDisabled:f,disabledReason:w,slotProps:R,children:n}):jsxRuntime.jsx("button",{...R,children:o??n??F(pe)})}r.docxReviewPart="Resolve";function a({className:i,asChild:s,hidden:t,children:n,icon:o}){let c=e.useReview(),d=e.useItem(),l=e.useLabel();if(t||!d||d.kind!=="comment"||!d.resolved)return null;let m=l("comments.reopen"),f=c.commentResolutionDisabledReason!==null,w=f?l("editingMode.viewingHint"):null,R={type:"button",className:`docx-review__action${i?` ${i}`:""}`,"data-testid":"review-reopen","aria-label":m,title:w??m,disabled:f,onMouseDown:e.guardMousedown,onClick:b=>{b.stopPropagation(),!f&&c.reopen(d);}};return s?jsxRuntime.jsx(W,{engineDisabled:f,disabledReason:w,slotProps:R,children:n}):jsxRuntime.jsx("button",{...R,children:o??n??F(wt)})}return a.docxReviewPart="Reopen",{ReviewResolve:r,ReviewReopen:a}}function _t(e){function r({top:i=0,className:s,hidden:t}){let{review:n,endDraft:o,measure:c,readOnly:d}=e.useRail(),l=e.useLabel(),[m,f]=react.useState(""),[w,R]=react.useState(false),b=react.useRef(null),g=react.useId();react.useEffect(()=>{d||b.current?.focus({preventScroll:true});},[]);let k=react.useCallback(()=>{if(d||m.trim().length===0)return;let v=n.comment(m.trim());R(!v),v&&(f(""),o());},[d,m,n,o]);return t?null:jsxRuntime.jsx("div",{className:`docx-review__slot${s?` ${s}`:""}`,style:{position:"absolute",top:i},ref:v=>{c(v,e.composeKey);},children:jsxRuntime.jsx("div",{className:"docx-review__card","data-testid":"review-draft","data-draft":"",children:jsxRuntime.jsxs("form",{className:"docx-review__reply-box",onSubmit:v=>{v.preventDefault(),k();},children:[jsxRuntime.jsx("label",{className:"docx-editor-sr-only",htmlFor:g,children:l("comments.addComment")}),jsxRuntime.jsx("input",{id:g,ref:b,"data-testid":"review-draft-input",className:"docx-review__input",value:m,placeholder:l("comments.addComment"),readOnly:d,...w?{"aria-invalid":true}:{},onChange:v=>{d||(R(false),f(v.target.value));},onKeyDown:v=>{if(v.key==="Escape"){v.preventDefault(),o();return}d||v.key!=="Enter"||(v.preventDefault(),k());}}),jsxRuntime.jsxs("div",{className:"docx-review__reply-actions",children:[jsxRuntime.jsx("button",{type:"button","data-testid":"review-draft-cancel",className:"docx-review__text-button",onMouseDown:e.guardMousedown,onClick:o,children:l("common.cancel")}),jsxRuntime.jsx("button",{type:"submit","data-testid":"review-draft-submit",className:"docx-review__submit",disabled:d||m.trim().length===0,title:d?l("editingMode.viewingHint"):void 0,children:l("common.comment")})]}),w?jsxRuntime.jsx("span",{className:"docx-review__refused",role:"alert",children:l("review.commentRefused")}):null]})})})}r.docxReviewPart="Draft";function a({className:i,hidden:s,children:t}){let{review:n,readOnly:o}=e.useRail(),c=e.useItem(),d=e.useLabel(),[l,m]=react.useState(""),[f,w]=react.useState(false),R=react.useId(),b=react.useCallback(()=>{if(!c||o||l.trim().length===0)return;let g=n.reply(c,l.trim());w(!g),g&&m("");},[c,o,l,n]);return s||!c||!c.isActive?null:t?jsxRuntime.jsx(jsxRuntime.Fragment,{children:t}):jsxRuntime.jsxs("form",{className:`docx-review__reply-box${i?` ${i}`:""}`,onSubmit:g=>{g.preventDefault(),b();},children:[jsxRuntime.jsx("label",{className:"docx-editor-sr-only",htmlFor:R,children:d("comments.replyPlaceholder")}),jsxRuntime.jsx("input",{id:R,"data-testid":"review-reply-input",className:"docx-review__input",value:l,placeholder:d("comments.replyPlaceholder"),readOnly:o,...f?{"aria-invalid":true,"data-refused":""}:{},onChange:g=>{o||(w(false),m(g.target.value));},onClick:g=>g.stopPropagation(),onKeyDown:g=>{o||g.key!=="Enter"||(g.preventDefault(),b());}}),jsxRuntime.jsxs("div",{className:"docx-review__reply-actions",children:[jsxRuntime.jsx("button",{type:"button","data-testid":"review-reply-cancel",className:"docx-review__text-button",onMouseDown:e.guardMousedown,onClick:g=>{g.stopPropagation(),m(""),w(false),n.setActive(null);},children:d("common.cancel")}),jsxRuntime.jsx("button",{type:"submit","data-testid":"review-reply-submit",className:"docx-review__submit",disabled:o||l.trim().length===0,title:o?d("editingMode.viewingHint"):void 0,children:d("review.reply")})]}),f?jsxRuntime.jsx("span",{className:"docx-review__refused",role:"alert","data-testid":"review-reply-refused",children:d("review.replyRefused")}):null]})}return a.docxReviewPart="Reply",{ReviewDraft:r,ReviewReply:a}}function Se(e,r){if(e==="paragraphMark")return r==="delete"?"revisions.paragraphMarkDeleted":r==="moveFrom"?"revisions.paragraphMarkMovedFrom":r==="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 _n=e=>e.isLoading||e.parseError!==null||e.pageSetup==null,Pn=e=>e.editingMode==="viewing",Le=react.createContext(null),I=react.createContext(null);function kn(){return react.useContext(I)}var In={scale:96/72,top:0,left:null},Mn=16,xe="\0compose",It=600,At=8,An=72,Tn=64,Dn=480,Sn=30,On=Object.freeze({placement:false});function He(e,r){return e.kind!=="comment"?false:e.parentId!==void 0?r.has(e.parentId):e.parentRevisionId!==void 0?r.has(e.parentRevisionId):false}function Ke(e){return new Set(e.map(r=>r.id))}function j(e){let r=e.target?.tagName;r==="INPUT"||r==="SELECT"||r==="TEXTAREA"||e.preventDefault();}function K(){let e=react.useContext(Le);return e||Ln}function Y(){let{t:e}=react.useContext(Le)??{},{t:r}=react$1.useTranslation();return react.useCallback(a=>e?.(a)??r(a),[e,r])}var{ReviewResolve:Tt,ReviewReopen:Dt}=Nt({useReview:()=>K().review,useItem:()=>react.useContext(I),useLabel:Y,guardMousedown:j}),{ReviewDraft:St,ReviewReply:Ot}=_t({useRail:K,useItem:()=>react.useContext(I),useLabel:Y,guardMousedown:j,composeKey:xe}),Ln={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,byId:new Map,measure:()=>{},beginDraft:()=>{},endDraft:()=>{}};function Hn({className:e,furniture:r,asChild:a,hidden:i,children:s,t,card:n,preset:o=true,stack:c=true,gap:d=8,filter:l,structural:m=false,formatting:f=false}){let w=react$1.useDocxEditor(),R=react$1.useEditorState(_n),b=react$1.useEditorState(Pn),g=react.useMemo(()=>{let y=[];return m||y.push("structural"),f||y.push("format"),y.length>0?y:void 0},[m,f]),k=react.useMemo(()=>g?{excludeRevisionKinds:g}:void 0,[g]);react.useEffect(()=>(w?.setReviewActivationExclusions(g??null),()=>w?.setReviewActivationExclusions(null)),[w,g]);let v=fe(On),x=fe(k),N=x.setPaneOpen,{t:C}=react$1.useTranslation(),O=react.useCallback(y=>t?.(y)??C(y),[t,C]),U=react.useRef(null),oe=react.useContext(react$1.ReviewRailContext);react.useEffect(()=>oe?.register(),[oe]);let Z=x.paneOpen,L=react.useMemo(()=>l?x.items.filter(y=>l(y)):x.items,[x.items,l]),Ue=react.useMemo(()=>{let y=new Map;for(let p of L)p.author&&!y.has(p.author)&&y.set(p.author,y.size);return y},[L]),ze=react.useMemo(()=>{let y=new Map;for(let p of L)y.set(p.id,p);return y},[L]),[Qe,Vt]=react.useState(()=>new Map),Yt=react.useCallback((y,p)=>{p<=0||Vt(h=>{if(h.get(y)===p)return h;let P=new Map(h);return P.set(y,p),P});},[]),Ge=ut(Yt),[S,Zt]=react.useState(In);react.useEffect(()=>{let y=U.current;if(!w||!y)return;let p=y.offsetParent,h=p?.querySelector(".docx-paginated-surface")??null,P=()=>{Zt(A=>{let q=h&&p?h.getBoundingClientRect():null,H=q&&p?p.getBoundingClientRect():null,$={scale:w.getRenderScale(),top:q&&H&&p?q.top-H.top-p.clientTop+p.scrollTop:0,left:q&&H&&p?q.right-H.left-p.clientLeft+p.scrollLeft+Mn:null};return A.scale===$.scale&&A.top===$.top&&A.left===$.left?A:$});};P();let E=new ResizeObserver(P);return p&&E.observe(p),h&&E.observe(h),()=>E.disconnect()},[w,L,R,i]),react.useEffect(()=>{let y=U.current;if(!w||!y)return;let p=h=>{let P=h.target;if(!(P instanceof Node)||y.contains(P))return;let E=y.offsetParent;!E||!E.contains(P)||E.querySelector(".docx-paginated-surface")?.contains(P)||w.setActiveReviewItem(null);};return document.addEventListener("mousedown",p,true),()=>document.removeEventListener("mousedown",p,true)},[w,R,i]);let[Pe,Bt]=react.useState(null);react.useEffect(()=>{let y=U.current,p=y?.offsetParent;if(!p)return;let h=0,P=()=>{h=0,Bt(H=>{let $=p.scrollTop-It,ve=p.scrollTop+p.clientHeight+It;return H&&H.top===$&&H.bottom===ve?H:{top:$,bottom:ve}});},E=0,A=()=>{h===0&&(h=requestAnimationFrame(P)),y?.setAttribute("data-scrolling",""),window.clearTimeout(E),E=window.setTimeout(()=>y?.removeAttribute("data-scrolling"),150);};P(),p.addEventListener("scroll",A,{passive:true});let q=new ResizeObserver(A);return q.observe(p),()=>{h!==0&&cancelAnimationFrame(h),window.clearTimeout(E),p.removeEventListener("scroll",A),q.disconnect();}},[w,R,i]);let[B,ke]=react.useState(null),We=react.useCallback(()=>{!w||b||(w.surface?.retainSelection(),N(true),ke(w.getSelectionPlacement()?.anchorY??null));},[w,b,N]),Xe=react.useCallback(()=>{w?.surface?.releaseSelection(),ke(null),w?.focus();},[w]);react.useEffect(()=>{Z||B===null||(w?.surface?.releaseSelection(),ke(null));},[Z,B,w]);let Je=B??x.selectionAnchorY,z=react.useMemo(()=>{let y=Ke(L);return L.filter(p=>!He(p,y))},[L]),et=react.useMemo(()=>{if(B===null)return z;let y=z.findIndex(h=>h.anchorY!==null&&h.anchorY>B),p={key:xe,anchorY:B};return y===-1?[...z,p]:[...z.slice(0,y),p,...z.slice(y)]},[z,B]),tt=react.useMemo(()=>{let y=new Map(Qe);for(let p of z){if(y.has(p.key))continue;let h=p.text.length+(p.kind==="revision"?p.replacedText?.length??0:0),P=Math.min(6,Math.max(1,Math.ceil(h/36)));y.set(p.key,64+P*20);}return y},[Qe,z]),{stacked:Ie,collapsedKeys:nt}=react.useMemo(()=>{let y=S.scale,p=new Map,h=new Set,P=Number.NEGATIVE_INFINITY;for(let E of et){let A=E.anchorY===null?Number.isFinite(P)?P:0:Math.max(E.anchorY,P);p.set(E.key,A);let q=E.anchorY===null?0:(A-E.anchorY)*y,H="isActive"in E&&E.isActive,$=q>Dn&&!H&&E.key!==xe;$&&h.add(E.key);let ve=$?Tn:tt.get(E.key)??An;P=A+(ve+d)/y;}return {stacked:p,collapsedKeys:h}},[et,tt,d,S.scale]),Me=Je===null?null:S.top+(Ie.get(xe)??Je)*S.scale,ot=n?.className,Ft=react.useMemo(()=>({t,cardClassName:ot,readOnly:b,review:{...x,items:L},allItems:v.items,authorSlots:Ue,byId:ze,measure:Ge,beginDraft:We,endDraft:Xe}),[t,ot,b,x,v.items,L,Ue,ze,Ge,We,Xe]);if(i||R)return null;let rt={ref:U,className:`docx-review${e?` ${e}`:""}`,"data-testid":"review-rail","data-count":L.length,"data-open":Z?"":void 0,role:"complementary","aria-label":O("review.ariaLabel"),onMouseDown:j,style:S.left===null?void 0:{left:S.left,right:"auto"}},J=typeof s=="function"?{parts:{},rest:s}:Te(s,"root"),G=J.parts,re=(y,p)=>{if(!(y in G))return p;let h=G[y];return !react.isValidElement(h)||!react.isValidElement(p)?h:react.cloneElement(h,{...p.props,...h.props})},it=jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[o||"AddComment"in G?re("AddComment",jsxRuntime.jsx($e,{top:Me,drafting:B!==null})):null,!Z||B===null||Me===null||!o&&!("Draft"in G)?null:re("Draft",jsxRuntime.jsx(St,{top:Me})),o||"Balloon"in G?re("Balloon",jsxRuntime.jsx(Ve,{})):null]}),jt=jsxRuntime.jsx(he,{stack:c,positions:Ie,collapsed:nt,scale:S.scale,offset:S.top,window:Pe,children:J.rest}),Ut=jsxRuntime.jsx(qe,{scale:S.scale,offset:S.top,window:Pe}),zt=Z?o||"List"in G?re("List",jt):typeof J.rest=="function"?null:J.rest:o||"Markers"in G?re("Markers",Ut):typeof J.rest=="function"?null:J.rest;return jsxRuntime.jsx(Le.Provider,{value:Ft,children:a&&react.isValidElement(s)?jsxRuntime.jsx(react$1.Slot,{...rt,children:react.cloneElement(s,void 0,s.props.children,o?jsxRuntime.jsx(he,{stack:c,positions:Ie,collapsed:nt,scale:S.scale,offset:S.top,window:Pe}):null,it)}):jsxRuntime.jsxs("aside",{...rt,children:[Z&&r!==void 0?jsxRuntime.jsx("div",{className:"docx-review__furniture","data-testid":"review-furniture",children:r}):null,zt,it]})})}function he({stack:e=true,positions:r,collapsed:a,scale:i=1,offset:s=0,window:t=null,children:n,className:o,hidden:c}){let{review:d,measure:l,cardClassName:m}=K();if(c)return null;let f=typeof n=="function"?null:Te(n,"list"),w=Ke(d.items),R=d.items.filter(b=>!He(b,w));return R.length===0?typeof n=="function"?null:f?.parts.Empty??jsxRuntime.jsx(Ye,{}):jsxRuntime.jsx("div",{className:`docx-review__list${o?` ${o}`:""}`,children:R.map(b=>{let g=e?r?.get(b.key)??b.anchorY:b.anchorY,k=g==null?null:s+g*i;if(k!==null&&t&&(k<t.top||k>t.bottom))return null;let v=k===null?{}:{position:"absolute",top:k};return jsxRuntime.jsx(I.Provider,{value:b,children:jsxRuntime.jsx("div",{className:"docx-review__slot",style:v,...a?.has(b.key)?{"data-collapsed":""}:{},ref:x=>{l(x,b.key);},children:typeof n=="function"?n(b):f?.parts.Card&&react.isValidElement(f.parts.Card)?dt(f.parts.Card,m):jsxRuntime.jsx(Ze,{...m?{className:m}:{},children:f?.rest})})},b.key)})})}he.docxReviewPart="List";function qe({scale:e=1,offset:r=0,window:a=null,className:i,hidden:s,icon:t}){let{review:n}=K(),o=Y(),{roots:c,stackedTops:d}=react.useMemo(()=>{let l=Ke(n.items),m=n.items.filter(R=>!He(R,l)),f=new Map,w=Number.NEGATIVE_INFINITY;for(let R of m){if(R.anchorY===null)continue;let b=Math.max(r+R.anchorY*e,w);f.set(R.key,b),w=b+Sn;}return {roots:m,stackedTops:f}},[n.items,r,e]);return s?null:jsxRuntime.jsx("div",{className:`docx-review__markers${i?` ${i}`:""}`,children:c.map(l=>{let m=d.get(l.key);return m===void 0||a&&(m<a.top||m>a.bottom)?null:jsxRuntime.jsx("button",{type:"button",className:"docx-review__marker","data-testid":"review-marker","data-kind":l.kind==="revision"?l.revisionKind:l.kind,style:{position:"absolute",top:m},title:l.author?`${l.author}: ${l.text}`:l.text,"aria-label":`${o("review.showPane")}: ${l.author?`${l.author}. `:""}${l.text}`,onMouseDown:j,onClick:()=>{n.setPaneOpen(true),n.setActive(l.key);},children:(typeof t=="function"?t(l):t)??F(bt(l))},l.key)})})}qe.docxReviewPart="Markers";function $e({top:e=null,drafting:r=false,className:a,hidden:i,children:s}){let{beginDraft:t,readOnly:n}=K(),o=Y();if(i||r||e===null||n)return null;let c={type:"button",className:`docx-review__add${a?` ${a}`:""}`,"data-testid":"review-add-comment",style:{position:"absolute",top:e},"aria-label":o("common.comment"),title:o("common.comment"),onMouseDown:j,onClick:t};return s?jsxRuntime.jsx(react$1.Slot,{...c,children:s}):jsxRuntime.jsx("button",{...c,children:F(pt)})}$e.docxReviewPart="AddComment";function Ve({className:e,hidden:r}){let{review:a,allItems:i,authorSlots:s}=K(),t=Y(),n=react.useRef(null),[o,c]=react.useState(null),d=react.useRef(false);d.current=o!==null,react.useEffect(()=>{let R=n.current,b=R?.closest(".docx-review"),g=b?.closest(".docx-editor__scroll-container")??b?.offsetParent;if(!R||!b||!g)return;let k=(x,N)=>{let C=b.getBoundingClientRect(),O=x.getBoundingClientRect(),U=x.ownerDocument.defaultView?.innerHeight??1/0,oe=Number(x.dataset.start),Z=Number(x.dataset.end);c({revisionId:x.dataset.revisionId,author:x.dataset.revisionAuthor??"",...x.dataset.revisionDate!==void 0?{date:x.dataset.revisionDate}:{},...x.dataset.revisionKind!==void 0?{kind:x.dataset.revisionKind}:{},structuralSite:N,...x.dataset.paragraphId!==void 0?{paragraphId:x.dataset.paragraphId}:{},...Number.isFinite(oe)?{start:oe}:{},...Number.isFinite(Z)?{end:Z}:{},left:O.left-C.left,top:O.top-C.top,bottom:O.bottom-C.top,above:O.bottom+220>U});},v=x=>{let N=x.target;if(!(N instanceof Element)||R.contains(N))return;let C=N.closest("[data-revision-id]");if(C instanceof HTMLElement&&g.contains(C)){let O=C.classList.contains("docx-table-row--revision");if(C.dataset.revisionKind==="format"||O){k(C,O);return}}d.current&&c(null);};return g.addEventListener("pointerdown",v,true),g.addEventListener("mousedown",v,true),()=>{g.removeEventListener("pointerdown",v,true),g.removeEventListener("mousedown",v,true);}},[]);let l=react.useMemo(()=>{if(!o)return null;let R=null,b=false,g=null,k=false,v=null,x=false;for(let N of i)if(!(N.kind!=="revision"||N.item.kind!=="revision")){for(let C of N.item.addresses)if(C.id===o.revisionId){if(C.author===o.author){if(C.date===o.date)return N;R===null?R=N:R!==N&&(b=true);}g===null?g=N:g!==N&&(k=true);}if(o.paragraphId!==void 0&&o.start!==void 0&&o.end!==void 0&&(N.revisionKind==="format"||N.revisionKind==="structural")){for(let C of N.item.ranges)if(C.start.paragraphId===o.paragraphId&&C.start.offset<o.end&&C.end.offset>o.start){v===null?v=N:v!==N&&(x=true);break}}}return R!==null&&!b?R:g!==null&&!k?g:v!==null&&!x?v:null},[i,o]),m=l&&(l.revisionKind==="format"||l.revisionKind==="structural")?l:null,f=react.useRef(false);if(react.useEffect(()=>{if(m){f.current=true;return}f.current&&(f.current=false,c(null));},[m]),r)return null;let w=o?.kind==="format"?"format":"structural";return jsxRuntime.jsx("div",{ref:n,className:`docx-review__balloon-root${e?` ${e}`:""}`,children:o===null?null:jsxRuntime.jsx("div",{className:"docx-review__balloon","data-testid":"review-balloon",style:{left:o.left,top:o.above?o.top-6:o.bottom+6,transform:o.above?"translateY(-100%)":void 0},onMouseDown:j,children:m?jsxRuntime.jsx(I.Provider,{value:m,children:jsxRuntime.jsxs("div",{className:"docx-review__card","data-testid":"review-balloon-card","data-kind":m.revisionKind??"revision",style:{"--doc-review-author":`var(--doc-review-author-${(s.get(m.author)??0)%At})`},onClick:()=>a.setActive(m.key),children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[jsxRuntime.jsx(ae,{}),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[jsxRuntime.jsx(le,{}),jsxRuntime.jsx(ce,{})]}),m.kind==="revision"&&!m.readOnly?jsxRuntime.jsxs("div",{className:"docx-review__actions",children:[jsxRuntime.jsx(Ce,{}),jsxRuntime.jsx(Ee,{})]}):null]}),jsxRuntime.jsx(de,{})]})}):jsxRuntime.jsxs("div",{className:"docx-review__card","data-testid":"review-balloon-card","data-kind":w,children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[jsxRuntime.jsx("span",{className:"docx-review__avatar","aria-hidden":"true",children:Kn(o.author)}),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[jsxRuntime.jsx("span",{className:"docx-review__author",children:o.author||t("comments.unknown")}),o.date?jsxRuntime.jsx(qn,{raw:o.date}):null]})]}),jsxRuntime.jsx("div",{className:"docx-review__summary",children:jsxRuntime.jsx("span",{className:"docx-review__label","data-kind":w,children:t(Se(w))})})]})})})}Ve.docxReviewPart="Balloon";function Kn(e){let r=e.trim().split(/\s+/).filter(Boolean);return r.length===0?"?":r.slice(0,2).map(a=>a[0].toUpperCase()).join("")}function qn({raw:e}){let r=new Date(e);return Number.isNaN(r.getTime())?null:jsxRuntime.jsx("time",{className:"docx-review__time",dateTime:e,children:Lt.format(r)})}function Ye({className:e,hidden:r,children:a}){let i=Y();return r?null:jsxRuntime.jsx("div",{className:`docx-review__empty${e?` ${e}`:""}`,"data-testid":"review-empty",children:a??i("review.empty")})}Ye.docxReviewPart="Empty";function Ze({className:e,asChild:r,hidden:a,children:i}){let{review:s,authorSlots:t}=K(),n=react.useContext(I),o=react.useId();if(a||!n)return null;let c=t.get(n.author)??0,d={className:`docx-review__card${e?` ${e}`:""}`,"data-testid":"review-card","aria-labelledby":`${o}-author ${o}-summary`,"data-kind":n.kind==="revision"?n.revisionKind??"revision":n.kind,...n.kind==="custom"&&n.item.kind==="custom"?{"data-node-name":n.item.name}:{},...n.isActive?{"data-active":""}:{},...n.kind==="comment"&&n.resolved?{"data-resolved":""}:{},style:{"--doc-review-author":`var(--doc-review-author-${c%At})`},tabIndex:0,role:"button",id:o,onMouseDown:l=>{l.target?.closest("[data-review-selectable]")||l.currentTarget.focus({preventScroll:true});},onClick:()=>s.setActive(n.key),onKeyDown:l=>{l.target===l.currentTarget&&(l.key!=="Enter"&&l.key!==" "||(l.preventDefault(),s.setActive(n.key)));}};return r?jsxRuntime.jsx(react$1.Slot,{...d,children:i}):jsxRuntime.jsx("div",{...d,children:jsxRuntime.jsx($n,{children:i})})}Ze.docxReviewPart="Card";function $n({children:e}){let r=react.useContext(I),a=react.useMemo(()=>Vn(e),[e]),i=(t,n)=>t in a?a[t]:n;if(!r)return null;if(r.kind==="custom"&&r.item.kind==="custom"){let t=r.item;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[i("Avatar",null),jsxRuntime.jsx("div",{className:"docx-review__meta",children:i("Author",jsxRuntime.jsx("span",{className:"docx-review__author","data-testid":"review-custom-title",children:t.title}))})]}),i("Summary",t.detail?jsxRuntime.jsx("div",{className:"docx-review__summary","data-testid":"review-summary","data-review-selectable":"",children:jsxRuntime.jsx("span",{className:"docx-review__text",children:t.detail})}):null),a.__extra]})}let s=r.kind==="revision"&&!r.readOnly;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[i("Avatar",jsxRuntime.jsx(ae,{})),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[i("Author",jsxRuntime.jsx(le,{})),i("Time",jsxRuntime.jsx(ce,{}))]}),s||r.kind==="comment"?jsxRuntime.jsxs("div",{className:"docx-review__actions",children:[i("Accept",jsxRuntime.jsx(Ce,{})),i("Reject",jsxRuntime.jsx(Ee,{})),i("Resolve",jsxRuntime.jsx(Tt,{})),i("Reopen",jsxRuntime.jsx(Dt,{})),i("Delete",jsxRuntime.jsx(_e,{}))]}):null]}),i("Summary",jsxRuntime.jsx(de,{})),i("Replies",jsxRuntime.jsx(Be,{})),i("Reply",jsxRuntime.jsx(Ot,{})),a.__extra]})}function Vn(e){let r={},a=[],i=s=>{if(Array.isArray(s)){s.forEach(i);return}if(!s||typeof s!="object"||!("type"in s)){s&&a.push(s);return}if(s.type===react.Fragment){i(s.props.children);return}let t=s.type.docxReviewPart;t?r[t]=s:a.push(s);};return i(e),a.length>0&&(r.__extra=a),r}function ae({className:e,asChild:r,hidden:a,children:i}){let s=react.useContext(I);if(a||!s||i===void 0&&!s.initials)return null;let t={className:`docx-review__avatar${e?` ${e}`:""}`,"data-testid":"review-avatar","aria-hidden":true};return r?jsxRuntime.jsx(react$1.Slot,{...t,children:i}):jsxRuntime.jsx("span",{...t,children:i??s.initials})}ae.docxReviewPart="Avatar";function le({className:e,asChild:r,hidden:a,children:i}){let s=react.useContext(I),t=Y();if(a||!s)return null;let n=s.author||t("comments.unknown"),o={className:`docx-review__author${e?` ${e}`:""}`,"data-testid":"review-author"};return r?jsxRuntime.jsx(react$1.Slot,{...o,children:i}):jsxRuntime.jsx("span",{...o,children:i??n})}le.docxReviewPart="Author";function ce({className:e,asChild:r,hidden:a,children:i}){let s=react.useContext(I);if(a||!s)return null;let t=s.date;if(!t)return null;let n=new Date(t);if(Number.isNaN(n.getTime()))return null;let o={className:`docx-review__time${e?` ${e}`:""}`,"data-testid":"review-time",dateTime:t};return r?jsxRuntime.jsx(react$1.Slot,{...o,children:i}):jsxRuntime.jsx("time",{...o,children:i??Lt.format(n)})}ce.docxReviewPart="Time";var Lt=new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});function de({className:e,asChild:r,hidden:a,children:i}){let s=react.useContext(I),t=Y();if(a||!s)return null;let n=s.text,o=s.kind!=="revision"?null:t(Se(s.revisionKind,s.item.markDirection)),c=s.kind==="revision"&&s.revisionKind==="replace",d={className:`docx-review__summary${e?` ${e}`:""}`,"data-testid":"review-summary","data-review-selectable":""};return r?jsxRuntime.jsx(react$1.Slot,{...d,children:i}):jsxRuntime.jsx("div",{...d,children:i??(c?jsxRuntime.jsxs("span",{className:"docx-review__text",children:[t("review.replaced")," ",jsxRuntime.jsxs("span",{className:"docx-review__removed",children:['"',s.replacedText,'"']})," ",t("review.replacedWith")," ",jsxRuntime.jsxs("span",{className:"docx-review__added",children:['"',n,'"']})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[o?jsxRuntime.jsx("span",{className:"docx-review__label","data-kind":s.kind==="revision"?s.revisionKind:"revision",children:o}):null,n?jsxRuntime.jsx("span",{className:"docx-review__text",children:n}):null]}))})}de.docxReviewPart="Summary";function Ce({className:e,asChild:r,hidden:a,children:i,icon:s}){let{readOnly:t,review:n}=K(),o=react.useContext(I),c=Y();if(a||!o||o.kind!=="revision"||o.readOnly)return null;let d=c("review.accept"),l=t?c("editingMode.viewingHint"):null,m={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-accept","aria-label":d,title:l??d,disabled:t,onMouseDown:j,onClick:f=>{f.stopPropagation(),!t&&n.accept(o);}};return r?jsxRuntime.jsx(W,{engineDisabled:t,disabledReason:l,slotProps:m,children:i}):jsxRuntime.jsx("button",{...m,children:s??i??F(pe)})}Ce.docxReviewPart="Accept";function Ee({className:e,asChild:r,hidden:a,children:i,icon:s}){let{readOnly:t,review:n}=K(),o=react.useContext(I),c=Y();if(a||!o||o.kind!=="revision"||o.readOnly)return null;let d=c("review.reject"),l=t?c("editingMode.viewingHint"):null,m={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-reject","aria-label":d,title:l??d,disabled:t,onMouseDown:j,onClick:f=>{f.stopPropagation(),!t&&n.reject(o);}};return r?jsxRuntime.jsx(W,{engineDisabled:t,disabledReason:l,slotProps:m,children:i}):jsxRuntime.jsx("button",{...m,children:s??i??F(Rt)})}Ee.docxReviewPart="Reject";function _e({className:e,asChild:r,hidden:a,children:i,icon:s}){let{readOnly:t,review:n}=K(),o=react.useContext(I),{t:c}=react$1.useTranslation();if(a||!o||o.kind==="custom"||o.kind==="revision"&&o.readOnly)return null;let d=o.kind==="comment"?c("review.deleteComment"):c("review.discardChange"),l=t?c("editingMode.viewingHint"):null,m={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-delete","aria-label":d,title:l??d,disabled:t,onMouseDown:j,onClick:f=>{f.stopPropagation(),!t&&n.remove(o);}};return r?jsxRuntime.jsx(W,{engineDisabled:t,disabledReason:l,slotProps:m,children:i}):jsxRuntime.jsx("button",{...m,children:s??i??F(yt)})}_e.docxReviewPart="Delete";function Be({className:e,hidden:r}){let{byId:a}=K(),i=react.useContext(I);if(r||!i||i.kind==="custom")return null;let s=i.replyIds.map(t=>a.get(t)).filter(t=>t!==void 0);return s.length===0?null:jsxRuntime.jsx("ol",{className:`docx-review__replies${e?` ${e}`:""}`,children:s.map(t=>jsxRuntime.jsx(I.Provider,{value:t,children:jsxRuntime.jsxs("li",{className:"docx-review__reply","data-testid":"review-reply",children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[jsxRuntime.jsx(ae,{}),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[jsxRuntime.jsx(le,{}),jsxRuntime.jsx(ce,{})]}),jsxRuntime.jsx("div",{className:"docx-review__actions",children:jsxRuntime.jsx(_e,{})})]}),jsxRuntime.jsx(de,{})]})},t.key))})}Be.docxReviewPart="Replies";var Yn=Object.assign(Hn,{List:he,Empty:Ye,Card:Ze,Avatar:ae,Author:le,Time:ce,Summary:de,Accept:Ce,Reject:Ee,Resolve:Tt,Reopen:Dt,Delete:_e,Replies:Be,Reply:Ot,Markers:qe,AddComment:$e,Draft:St,Balloon:Ve});function ue(e){let r=react$1.useDocxEditor();return react.useMemo(()=>e||(r?.getCustomNodeDefinitions()??[]).filter(chunkQIMNGUJX_cjs.j),[e,r])}var jn=".docx-content-control-boundary";function te(e,r){let{node:a,definition:i,controlId:s}=e,t=s?r?.getReviewItems().find(c=>c.kind==="custom"&&c.item.id===s):void 0;if(t&&t.kind==="custom"){let c=t.item;return {...a,attrs:c.attrs,text:c.text,...c.data===void 0?{}:{data:c.data},...s?{nodeId:s}:{}}}let n=s?Un(r,s,i):void 0,o=i.fromDocx?i.fromDocx({attrs:a.attrs,text:"",...n===void 0?{}:{data:n}}):a.attrs;return o===null?null:{...a,attrs:o,...n===void 0?{}:{data:n},...s?{nodeId:s}:{}}}function Un(e,r,a){let i=e?.surface;if(!i)return;let s=i.session.part(),t=store.customNodePayloadsByControl(i.session.currentPackage(),s.name).get(r);if(!t)return;let n=chunkQIMNGUJX_cjs.e(a.schema,t.data);return n.ok?n.value:void 0}function ne(e,r){let a=e?.closest?.(jn),i=a?.closest(".docx-content-control-chrome"),s=i?.getAttribute("data-tag"),t=s?chunkQIMNGUJX_cjs.c(s):null;if(!a||!t||!s)return null;let n=r.find(o=>o.tagPrefix===t.prefix&&o.name===t.name);return n?{node:{name:t.name,attrs:t.attrs,tag:s,rect:a.getBoundingClientRect()},definition:n,controlId:i?.getAttribute("data-docx-content-control")??null}:null}var Fe=".docx-content-control-boundary",Qn=e=>{if(!chunkQIMNGUJX_cjs.k.test(e.tagPrefix)||!chunkQIMNGUJX_cjs.k.test(e.name))return [];let r=`${e.tagPrefix}:${e.name}`;return [`.docx-content-control-chrome[data-tag="${r}"]`,`.docx-content-control-chrome[data-tag^="${r}?"]`]};function Gn(e){let{onNodeClick:r,onNodeHover:a}=e,i=react$1.useDocxEditor(),s=ue(e.nodes);return react.useEffect(()=>{let t=document.createElement("style"),n=[];for(let o of s){let c=Qn(o);if(c.length===0)continue;let d=o.chrome?.color!==void 0&&CSS.supports("color",o.chrome.color)?o.chrome.color:"#2563eb";n.push(`${c.map(l=>`${l} ${Fe}`).join(", ")} {`," pointer-events: auto !important;"," opacity: 1;"," border: none;",` background: color-mix(in srgb, ${d} 12%, transparent);`," border-radius: 6px;"," cursor: default;","}");}return t.textContent=n.join(`
2
- `),document.head.append(t),()=>t.remove()},[s]),react.useEffect(()=>{let t=null,n=null,o=m=>ne(document.elementFromPoint(m.clientX,m.clientY),s),c=m=>{let f=m.button===0?o(m):null;t=f?.controlId??null,n=f?.node.tag??null;},d=m=>{let f=t,w=n;if(t=null,n=null,w===null)return;let R=o(m);if(!R||R.node.tag!==w||f!==null&&R.controlId!==f)return;let b=te(R,i);b&&(R.definition.onClick?.(b),r?.(b));},l=m=>{let f=ne(m.target,s);if(!f||m.relatedTarget?.closest?.(Fe)===m.target.closest(Fe))return;let R=te(f,i);R&&(f.definition.onHover?.(R),a?.(R));};return document.addEventListener("pointerdown",c,true),document.addEventListener("pointerup",d,true),document.addEventListener("mouseover",l),()=>{document.removeEventListener("pointerdown",c,true),document.removeEventListener("pointerup",d,true),document.removeEventListener("mouseover",l);}},[s,i,r,a]),null}function $t(e){let{onEditNode:r,onRemoveRefused:a,remove:i=true}=e,s=ue(e.nodes),t=react$1.useContextMenuTarget(),n=react$1.useDocxEditor(),{t:o}=react$1.useTranslation(),c=react.useMemo(()=>t?ne(t,s):null,[t,s]),d=react.useMemo(()=>c?te(c,n):null,[c,n]),l=react.useMemo(()=>!c?.definition.reviewCard||!d?null:c.definition.reviewCard({attrs:d.attrs,text:d.text??"",...d.data===void 0?{}:{data:d.data}}),[c,d]);if(!c||!d)return null;let{definition:m}=c,f=m.label??m.name,w=m.onEdit!==void 0||r!==void 0,R=i&&d.nodeId!==void 0&&n!==null;return !l&&!w&&!R?null:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[l?jsxRuntime.jsxs("div",{className:"docx-contextmenu__custom-info","data-testid":"custom-node-info",children:[jsxRuntime.jsx("span",{className:"docx-contextmenu__custom-title",children:l.title}),l.detail?jsxRuntime.jsx("span",{className:"docx-contextmenu__custom-detail",children:l.detail}):null]}):null,w?jsxRuntime.jsx(react$1.ContextMenuItem,{label:o("contextMenu.editCustomNode",{label:f}),className:"docx-contextmenu__custom-edit",onSelect:()=>{m.onEdit?.(d),r?.(d,m);}}):null,R?jsxRuntime.jsx(react$1.ContextMenuItem,{label:o("contextMenu.removeCustomNode",{label:f}),className:"docx-contextmenu__custom-remove",onSelect:()=>{let b=chunkQIMNGUJX_cjs.q(n,d.nodeId);b.ok||a?.(d,b.reason);}}):null,jsxRuntime.jsx("div",{role:"separator",className:"docx-toolbar__menu-separator"})]})}$t.docxRowPlacement="start";Object.defineProperty(exports,"reviewModule",{enumerable:true,get:function(){return chunkQIMNGUJX_cjs.o}});exports.CustomNodeChrome=Gn;exports.CustomNodeContextMenu=$t;exports.DocxEditorReview=Yn;exports.activatedCustomNodeOf=te;exports.resolveCustomNodeActivation=ne;exports.useCustomNodeDefinitions=ue;exports.useReview=fe;exports.useReviewItem=kn;exports.useReviewOf=mt;exports.useStackedReviewPositions=an;
1
+ 'use strict';var chunkQIMNGUJX_cjs=require('../chunk-QIMNGUJX.cjs'),react=require('react'),react$1=require('@docx-editor.dev/react'),jsxRuntime=require('react/jsx-runtime'),store=require('@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(!react.isValidElement(a)){a!=null&&a!==false&&s.push(a);return}if(a.type===react.Fragment){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 react.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]=react.useState(Dn);return react.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]=react.useState(null);return react.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=react.useRef(new WeakMap),l=react.useRef(new Map),i=react.useRef(null),s=react.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 react.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=react$1.useDocxEditor();return qt(o,e)}function qt(e,o){let l=react.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=react.useSyncExternalStore(l,()=>e?`${e.getReviewRevision()}:${e.getEditingMode()}`:"none",()=>"none"),s=react.useMemo(()=>e?e.getReviewItems(o).filter(R=>R.item.kind!=="custom"||R.item.carded):[],[e,i,o]),n=react.useMemo(()=>s.find(R=>R.isActive)?.key??null,[s]),a=react.useCallback((R,h)=>e?e.setActiveReviewItem(R,h).ok:false,[e]),t=react.useCallback(R=>!e||R.kind!=="revision"||R.readOnly?false:e.acceptReviewItem(R.key).ok,[e]),r=react.useCallback(R=>!e||R.kind!=="revision"||R.readOnly?false:e.rejectReviewItem(R.key).ok,[e]),c=react.useCallback(R=>!e||R.kind!=="comment"?false:e.setCommentResolved(R.key,true).ok,[e]),f=react.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=react.useCallback(R=>!e||R.kind==="custom"||R.kind==="revision"&&R.readOnly?false:e.deleteReviewItem(R.key).ok,[e]),u=react.useCallback((R,h,N)=>h.trim().length===0||!e?false:e.replyToReviewItem(R.key,h,N).ok,[e]),p=react.useMemo(()=>e?e.getSelectionPlacement()?.anchorY??null:null,[e,i]),w=react.useCallback((R,h)=>R.trim().length===0||!e?false:e.addComment(R,h).ok,[e]),g=react.useMemo(()=>e?e.isReviewPaneOpen():true,[e,i]),b=react.useCallback(R=>{!e||e.isReviewPaneOpen()===R||e.exec({type:"toggleReviewPane"});},[e]);return react.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 react.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=react.useRef(new Map);return react.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=>jsxRuntime.jsx("svg",{viewBox:"0 -960 960 960",width:16,height:16,"aria-hidden":"true",focusable:"false",children:jsxRuntime.jsx("path",{d:e,fill:"currentColor"})}),$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=()=>jsxRuntime.jsxs("span",{className:"docx-review__resolved-icon",children:[jsxRuntime.jsx("span",{className:"docx-review__resolved-comment",children:q(Fn)}),jsxRuntime.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=react.Children.only(i);if(!react.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 react.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();},react.cloneElement(s,a)}var Qt=react.createContext({key:null,open:()=>{},close:()=>{}});function Xt({items:e,children:o}){let[l,i]=react.useState(null);react.useEffect(()=>{l!==null&&!e.some(n=>n.key===l&&n.kind==="comment"&&n.resolved)&&i(null);},[e,l]);let s=react.useMemo(()=>({key:l,open:n=>i(n),close:()=>i(null)}),[l]);return jsxRuntime.jsx(Qt.Provider,{value:s,children:o})}function Je(){return react.useContext(Qt)}function Jt({label:e,statusLabel:o,entryKey:l,onActivate:i,onDeactivate:s,children:n,...a}){let t=Je(),r=react.useRef(null);return react.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]),jsxRuntime.jsxs("details",{ref:r,...a,open:t.key===l,onToggle:c=>{c.currentTarget.open?(t.open(l),i()):(t.close(),s());},children:[jsxRuntime.jsxs("summary",{className:"docx-review__resolved-toggle","aria-label":e,children:[jsxRuntime.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?jsxRuntime.jsx(Q,{engineDisabled:d,disabledReason:u,slotProps:p,children:a}):jsxRuntime.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?jsxRuntime.jsx(Q,{engineDisabled:d,disabledReason:u,slotProps:p,children:a}):jsxRuntime.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]=react.useState(""),[b,R]=react.useState(false),h=react.useRef(null),N=react.useId();react.useEffect(()=>{f||h.current?.focus({preventScroll:true});},[]);let E=react.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:jsxRuntime.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:jsxRuntime.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:jsxRuntime.jsxs("form",{className:"docx-review__reply-box",onSubmit:x=>{x.preventDefault(),E();},children:[jsxRuntime.jsx("label",{className:"docx-editor-sr-only",htmlFor:N,children:p("comments.addComment")}),jsxRuntime.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());}}),jsxRuntime.jsxs("div",{className:"docx-review__reply-actions",children:[jsxRuntime.jsx("button",{type:"button","data-testid":"review-draft-cancel",className:"docx-review__text-button",onMouseDown:e.guardMousedown,onClick:r,children:p("common.cancel")}),jsxRuntime.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?jsxRuntime.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]=react.useState(""),[d,u]=react.useState(false),p=react.useId(),w=react.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?jsxRuntime.jsx(jsxRuntime.Fragment,{children:n}):jsxRuntime.jsxs("form",{className:`docx-review__reply-box${i?` ${i}`:""}`,onSubmit:g=>{g.preventDefault(),w();},children:[jsxRuntime.jsx("label",{className:"docx-editor-sr-only",htmlFor:p,children:c("comments.replyPlaceholder")}),jsxRuntime.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());}}),jsxRuntime.jsxs("div",{className:"docx-review__reply-actions",children:[jsxRuntime.jsx("button",{type:"button","data-testid":"review-reply-cancel",className:"docx-review__text-button",onMouseDown:e.guardMousedown,onClick:g=>{g.stopPropagation(),v(""),u(false),a.setActive(null);},children:c("common.cancel")}),jsxRuntime.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?jsxRuntime.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=react.createContext(null),P=react.createContext(null);function ho(){return react.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=react.useContext(ot);return e||Io}function K(){let{t:e}=react.useContext(ot)??{},{t:o}=react$1.useTranslation();return react.useCallback(l=>e?.(l)??o(l),[e,o])}var{ReviewResolve:cn,ReviewReopen:un}=en({useReview:()=>H().review,useItem:()=>react.useContext(P),useLabel:K,guardMousedown:F}),{ReviewDraft:dn,ReviewReply:mn}=on({useRail:H,useItem:()=>react.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=react$1.useDocxEditor(),p=react$1.useEditorState(go),w=react$1.useEditorState(bo),g=react.useMemo(()=>{let y=[];return v||y.push("structural"),d||y.push("format"),y.length>0?y:void 0},[v,d]),b=react.useMemo(()=>g?{excludeRevisionKinds:g}:void 0,[g]);react.useEffect(()=>(u?.setReviewActivationExclusions(g??null),()=>u?.setReviewActivationExclusions(null)),[u,g]);let R=Me(Ao),h=Me(b),N=h.setPaneOpen,{t:E}=react$1.useTranslation(),x=react.useCallback(y=>n?.(y)??E(y),[n,E]),M=react.useRef(null),J=react.useContext(react$1.ReviewRailContext);react.useEffect(()=>J?.register(),[J]);let B=h.paneOpen,le=react$1.useReviewGutter(),ee=B&&le.inlineEnd>0&&le.inlineEnd<react$1.REVIEW_PANE_GUTTER,Ce=B&&!ee,S=react.useMemo(()=>f?h.items.filter(y=>f(y)):h.items,[h.items,f]),V=u?.getConfiguredAuthor()??null,Ne=react.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=react.useMemo(()=>{let y=new Map;for(let C of S)y.set(C.id,C);return y},[S]),[ft,yn]=react.useState(()=>new Map),gn=react.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);react.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]=react.useState(null),Ze=react.useRef(null),U=react.useCallback(()=>{let y=Ze.current;y&&(y.editor.releaseSelection(y.pin),Ze.current=null);},[]),Ee=react.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]);react.useEffect(()=>{if(!(i||w))return J?.registerCommentDraft(Ee)},[Ee,i,w,J]);let wt=react.useCallback(()=>{U(),Ye(null),u?.focus();},[u,U]);react.useEffect(()=>U,[U]),react.useEffect(()=>{B||Y===null||(U(),Ye(null));},[B,Y,U]);let Fe=Y??h.selectionAnchorY,Z=react.useMemo(()=>{let y=it(S);return S.filter(C=>!rt(C,y))},[S]),Rt=react.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=react.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}=react.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=react$1.useReviewAuthors(),je=Kt(bn,S,Ne,u),bt=V?Ne.get(V)??0:0,ht=V?je.get(V):void 0,hn=react.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 !react.isValidElement(A)||!react.isValidElement(C)?A:react.cloneElement(A,{...C.props,...A.props})},Ct=jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[t||"AddComment"in z?de("AddComment",jsxRuntime.jsx(at,{top:Ue,drafting:Y!==null})):null,!B||Y===null||Ue===null||!t&&!("Draft"in z)?null:de("Draft",jsxRuntime.jsx(dn,{top:Ue,left:ee?I.compactCardLeft:null})),t||"Balloon"in z?de("Balloon",jsxRuntime.jsx(lt,{})):null]}),xn=jsxRuntime.jsx(He,{stack:r,positions:Be,collapsed:gt,scale:I.scale,offset:I.top,window:ce,children:W.rest}),Nt=jsxRuntime.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&&react.isValidElement(Ae.parts.Card)?ze(Ae.parts.Card,ue):t?jsxRuntime.jsx(qe,{...ue?{className:ue}:{},children:Ae?.rest}):null,At=G&&Et!==null&&I.compactCardLeft!==null&&_t?jsxRuntime.jsx(P.Provider,{value:G,children:jsxRuntime.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?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[de("Markers",Nt),At]}):typeof W.rest=="function"?null:W.rest;return jsxRuntime.jsx(Xt,{items:S,children:jsxRuntime.jsx(ot.Provider,{value:hn,children:l&&react.isValidElement(s)?jsxRuntime.jsx(react$1.Slot,{...xt,children:react.cloneElement(s,void 0,s.props.children,t?Ce?jsxRuntime.jsx(He,{stack:r,positions:Be,collapsed:gt,scale:I.scale,offset:I.top,window:ce}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[Nt,At]}):null,Ct)}):jsxRuntime.jsxs("aside",{...xt,children:[Ce&&o!==void 0?jsxRuntime.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??jsxRuntime.jsx(ct,{}):jsxRuntime.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 jsxRuntime.jsx(P.Provider,{value:w,children:jsxRuntime.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&&react.isValidElement(d.parts.Card)?ze(d.parts.Card,v):jsxRuntime.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}=react.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:jsxRuntime.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:jsxRuntime.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?jsxRuntime.jsx(react$1.Slot,{...r,children:s}):jsxRuntime.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=react.useRef(null),[r,c]=react.useState(null),f=react.useRef(false);f.current=r!==null,react.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=react.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=react.useRef(false);if(react.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 jsxRuntime.jsx("div",{ref:t,className:`docx-review__balloon-root${e?` ${e}`:""}`,children:r===null?null:jsxRuntime.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?jsxRuntime.jsx(P.Provider,{value:d,children:jsxRuntime.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:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[jsxRuntime.jsx(Re,{}),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[jsxRuntime.jsx(ye,{}),jsxRuntime.jsx(ge,{})]}),d.kind==="revision"&&!d.readOnly?jsxRuntime.jsxs("div",{className:"docx-review__actions",children:[jsxRuntime.jsx(Ke,{}),jsxRuntime.jsx(Ve,{})]}):null]}),jsxRuntime.jsx(be,{})]})}):jsxRuntime.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:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[jsxRuntime.jsx("span",{className:"docx-review__avatar","aria-hidden":"true",children:ko(r.author)}),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[jsxRuntime.jsx("span",{className:"docx-review__author",children:r.author||a("comments.unknown")}),r.date?jsxRuntime.jsx(Mo,{raw:r.date}):null]})]}),jsxRuntime.jsx("div",{className:"docx-review__summary",children:jsxRuntime.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:jsxRuntime.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:jsxRuntime.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=react.useContext(P),r=react.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?jsxRuntime.jsx(react$1.Slot,{...d,children:i}):v?jsxRuntime.jsx(Jt,{...d,label:c("review.showResolvedComment"),statusLabel:c("review.resolved"),entryKey:t.key,onActivate:()=>s.setActive(t.key),onDeactivate:()=>s.setActive(null),children:jsxRuntime.jsx(an,{children:i})}):jsxRuntime.jsx("div",{...d,children:jsxRuntime.jsx(an,{children:i})})}qe.docxReviewPart="Card";function an({children:e}){let o=react.useContext(P),l=react.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 jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[i("Avatar",null),jsxRuntime.jsx("div",{className:"docx-review__meta",children:i("Author",jsxRuntime.jsx("span",{className:"docx-review__author","data-testid":"review-custom-title",children:n.title}))})]}),i("Summary",n.detail?jsxRuntime.jsx("div",{className:"docx-review__summary","data-testid":"review-summary","data-review-selectable":"",children:jsxRuntime.jsx("span",{className:"docx-review__text",children:n.detail})}):null),l.__extra]})}let s=o.kind==="revision"&&!o.readOnly;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[i("Avatar",jsxRuntime.jsx(Re,{})),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[i("Author",jsxRuntime.jsx(ye,{})),i("Time",jsxRuntime.jsx(ge,{}))]}),s||o.kind==="comment"?jsxRuntime.jsxs("div",{className:"docx-review__actions",children:[i("Accept",jsxRuntime.jsx(Ke,{})),i("Reject",jsxRuntime.jsx(Ve,{})),i("Resolve",jsxRuntime.jsx(cn,{})),i("Reopen",jsxRuntime.jsx(un,{})),i("Delete",jsxRuntime.jsx($e,{}))]}):null]}),i("Summary",jsxRuntime.jsx(be,{})),i("Replies",jsxRuntime.jsx(ut,{})),i("Reply",jsxRuntime.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===react.Fragment){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=react.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 jsxRuntime.jsx(react$1.Slot,{...a,children:i});let t=s.get(n.author)?.style?.avatarUrl,r=i??(t?jsxRuntime.jsx("img",{className:"docx-review__avatar-img",src:t,alt:"",loading:"lazy",decoding:"async",referrerPolicy:"no-referrer"}):void 0)??n.initials;return jsxRuntime.jsx("span",{...a,children:r})}Re.docxReviewPart="Avatar";function ye({className:e,asChild:o,hidden:l,children:i}){let s=react.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?jsxRuntime.jsx(react$1.Slot,{...t,children:i}):jsxRuntime.jsx("span",{...t,children:i??a})}ye.docxReviewPart="Author";function ge({className:e,asChild:o,hidden:l,children:i}){let s=react.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?jsxRuntime.jsx(react$1.Slot,{...t,children:i}):jsxRuntime.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=react.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?jsxRuntime.jsx(react$1.Slot,{...c,children:i}):jsxRuntime.jsx("div",{...c,children:i??(r?jsxRuntime.jsxs("span",{className:"docx-review__text",children:[n("review.replaced")," ",jsxRuntime.jsxs("span",{className:"docx-review__removed",children:['"',s.replacedText,'"']})," ",n("review.replacedWith")," ",jsxRuntime.jsxs("span",{className:"docx-review__added",children:['"',a,'"']})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[t?jsxRuntime.jsx("span",{className:"docx-review__label","data-kind":s.kind==="revision"?s.revisionKind:"revision",children:t}):null,a?jsxRuntime.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=react.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?jsxRuntime.jsx(Q,{engineDisabled:n,disabledReason:f,slotProps:v,children:i}):jsxRuntime.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=react.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?jsxRuntime.jsx(Q,{engineDisabled:n,disabledReason:f,slotProps:v,children:i}):jsxRuntime.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=react.useContext(P),{t:r}=react$1.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?jsxRuntime.jsx(Q,{engineDisabled:n,disabledReason:f,slotProps:v,children:i}):jsxRuntime.jsx("button",{...v,children:s??i??q(Ft)})}$e.docxReviewPart="Delete";function ut({className:e,hidden:o}){let{byId:l}=H(),i=react.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:jsxRuntime.jsx("ol",{className:`docx-review__replies${e?` ${e}`:""}`,children:s.map(n=>jsxRuntime.jsx(P.Provider,{value:n,children:jsxRuntime.jsxs("li",{className:"docx-review__reply","data-testid":"review-reply",children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[jsxRuntime.jsx(Re,{}),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[jsxRuntime.jsx(ye,{}),jsxRuntime.jsx(ge,{})]}),jsxRuntime.jsx("div",{className:"docx-review__actions",children:jsxRuntime.jsx($e,{})})]}),jsxRuntime.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=react$1.useDocxEditor();return react.useMemo(()=>e||(o?.getCustomNodeDefinitions()??[]).filter(chunkQIMNGUJX_cjs.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,o,l){let i=e?.surface;if(!i)return;let s=i.session.part(),n=store.customNodePayloadsByControl(i.session.currentPackage(),s.name).get(o);if(!n)return;let a=chunkQIMNGUJX_cjs.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?chunkQIMNGUJX_cjs.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(!chunkQIMNGUJX_cjs.k.test(e.tagPrefix)||!chunkQIMNGUJX_cjs.k.test(e.name))return [];let o=`${e.tagPrefix}:${e.name}`;return [`.docx-content-control-chrome[data-tag="${o}"]`,`.docx-content-control-chrome[data-tag^="${o}?"]`]};function $o(e){let{onNodeClick:o,onNodeHover:l}=e,i=react$1.useDocxEditor(),s=he(e.nodes);return react.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]),react.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=react$1.useContextMenuTarget(),a=react$1.useDocxEditor(),{t}=react$1.useTranslation(),r=react.useMemo(()=>n?ae(n,s):null,[n,s]),c=react.useMemo(()=>r?se(r,a):null,[r,a]),f=react$1.useEditorState(Uo),v=react.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:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[v?jsxRuntime.jsxs("div",{className:"docx-contextmenu__custom-info","data-testid":"custom-node-info",children:[jsxRuntime.jsx("span",{className:"docx-contextmenu__custom-title",children:v.title}),v.detail?jsxRuntime.jsx("span",{className:"docx-contextmenu__custom-detail",children:v.detail}):null]}):null,p?jsxRuntime.jsx(react$1.ContextMenuItem,{label:t("contextMenu.editCustomNode",{label:u}),className:"docx-contextmenu__custom-edit",onSelect:()=>{d.onEdit?.(c),o?.(c,d);}}):null,w?jsxRuntime.jsx(react$1.ContextMenuItem,{label:t("contextMenu.removeCustomNode",{label:u}),className:"docx-contextmenu__custom-remove",onSelect:()=>{let g=chunkQIMNGUJX_cjs.q(a,c.nodeId);g.ok||l?.(c,g.reason);}}):null,jsxRuntime.jsx("div",{role:"separator",className:"docx-toolbar__menu-separator"})]})}Rn.docxRowPlacement="start";Object.defineProperty(exports,"reviewModule",{enumerable:true,get:function(){return chunkQIMNGUJX_cjs.o}});exports.CustomNodeChrome=$o;exports.CustomNodeContextMenu=Rn;exports.DocxEditorReview=Do;exports.activatedCustomNodeOf=se;exports.resolveCustomNodeActivation=ae;exports.useCustomNodeDefinitions=he;exports.useReview=Me;exports.useReviewAuthor=xo;exports.useReviewItem=ho;exports.useReviewOf=qt;exports.useStackedReviewPositions=$n;
@@ -1,8 +1,8 @@
1
- import { a as CustomNodeDefinition, b as ActivatedCustomNode, A as AnyCustomNodeDefinition } from '../define-custom-node-RznSCnPr.cjs';
2
- export { P as ProLicenseOptions, j as ReviewModuleOptions, q as reviewModule } from '../define-custom-node-RznSCnPr.cjs';
1
+ import { a as CustomNodeDefinition, b as ActivatedCustomNode, A as AnyCustomNodeDefinition } from '../define-custom-node-Bk8kFO27.cjs';
2
+ export { P as ProLicenseOptions, j as ReviewModuleOptions, q as reviewModule } from '../define-custom-node-Bk8kFO27.cjs';
3
3
  import * as react from 'react';
4
4
  import { ReactNode } from 'react';
5
- import { ToolbarTranslate } from '@docx-editor.dev/react';
5
+ import { ToolbarTranslate, ReviewAuthorInfo } from '@docx-editor.dev/react';
6
6
  import { ReviewItemPlacement, ReviewActivationOptions, ReviewItemQuery, Editor } from '@docx-editor.dev/core/contracts/editor';
7
7
  export { ReviewActivationOptions } from '@docx-editor.dev/core/contracts/editor';
8
8
  import '@docx-editor.dev/core/editor';
@@ -29,10 +29,10 @@ interface UseReviewReturn {
29
29
  /** The item the caret is in, or null. */
30
30
  readonly activeKey: string | null;
31
31
  /**
32
- * Card to document: selects the item's range and scrolls to it.
32
+ * Card to document: puts the caret at the start of the item's range and scrolls to it. Nothing is selected; the open item draws its own highlight.
33
33
  *
34
34
  * Reports whether it landed, on the same terms as {@link accept}. False for an item whose
35
- * `activatable` is false — no range to select, or a revision kind this rail excluded — and
35
+ * `activatable` is false — no resolvable range, or a revision kind this rail excluded — and
36
36
  * for a story that will not open. A queue walked with next/previous controls has no other
37
37
  * way to tell a step that did nothing from one that worked, and skipping to the next item
38
38
  * is only possible if you can find out.
@@ -141,6 +141,31 @@ declare function useStackedReviewPositions(items: readonly {
141
141
  * @public
142
142
  */
143
143
  declare function useReviewItem(): ReviewItemView | null;
144
+ /**
145
+ * The resolved presentation of one author — colour, ramp slot, and any declared style —
146
+ * or `undefined` when no argument is given, or when the author is in neither the
147
+ * document's roster nor the review queue.
148
+ *
149
+ * COMMENT AUTHORS INCLUDED. The document's revision roster does not carry someone who only
150
+ * left comments, so this resolves their declaration directly; their card draws in the
151
+ * colour the host declared, exactly as a reviewer's does.
152
+ *
153
+ * The link between a CUSTOM card and the author styling system: a `List` render callback
154
+ * or card child reads the item's author here and draws with the same colours the painted
155
+ * document and the packaged cards use. Live: a `setRevisionStyles` call re-renders the
156
+ * rail, and this answer with it. Works anywhere under `DocxEditorReview`.
157
+ *
158
+ * ```tsx
159
+ * function MyCard({ item }: { item: ReviewItemView }) {
160
+ * const author = useReviewAuthor(item.author);
161
+ * return <div style={{ borderColor: author?.color }}>…</div>;
162
+ * }
163
+ * <DocxEditorReview.List>{(item) => <MyCard item={item} />}</DocxEditorReview.List>;
164
+ * ```
165
+ *
166
+ * @public
167
+ */
168
+ declare function useReviewAuthor(author: string | undefined): ReviewAuthorInfo | undefined;
144
169
  declare const ReviewResolve: {
145
170
  ({ className, asChild, hidden, children, icon: glyph }: ReviewActionProps): react.JSX.Element | null;
146
171
  docxReviewPart: "Resolve";
@@ -150,8 +175,9 @@ declare const ReviewReopen: {
150
175
  docxReviewPart: "Reopen";
151
176
  };
152
177
  declare const ReviewDraft: {
153
- ({ top, className, hidden }: ReviewPartProps & {
178
+ ({ top, left, className, hidden, }: ReviewPartProps & {
154
179
  top?: number;
180
+ left?: number | null;
155
181
  }): react.JSX.Element | null;
156
182
  docxReviewPart: "Draft";
157
183
  };
@@ -638,4 +664,4 @@ declare function activatedCustomNodeOf(resolved: ResolvedCustomNodeActivation, e
638
664
  */
639
665
  declare function resolveCustomNodeActivation(target: EventTarget | null, nodes: readonly AnyCustomNodeDefinition[]): ResolvedCustomNodeActivation | null;
640
666
 
641
- export { CustomNodeChrome, type CustomNodeChromeProps, CustomNodeContextMenu, type CustomNodeContextMenuProps, DocxEditorReview, type DocxEditorReviewNamespace, type ResolvedCustomNodeActivation, type ReviewActionProps, type ReviewItemView, type ReviewMarkersProps, type ReviewPartProps, type ReviewProps, type UseReviewReturn, activatedCustomNodeOf, resolveCustomNodeActivation, useCustomNodeDefinitions, useReview, useReviewItem, useReviewOf, useStackedReviewPositions };
667
+ export { CustomNodeChrome, type CustomNodeChromeProps, CustomNodeContextMenu, type CustomNodeContextMenuProps, DocxEditorReview, type DocxEditorReviewNamespace, type ResolvedCustomNodeActivation, type ReviewActionProps, type ReviewItemView, type ReviewMarkersProps, type ReviewPartProps, type ReviewProps, type UseReviewReturn, activatedCustomNodeOf, resolveCustomNodeActivation, useCustomNodeDefinitions, useReview, useReviewAuthor, useReviewItem, useReviewOf, useStackedReviewPositions };
@@ -1,8 +1,8 @@
1
- import { a as CustomNodeDefinition, b as ActivatedCustomNode, A as AnyCustomNodeDefinition } from '../define-custom-node-RznSCnPr.js';
2
- export { P as ProLicenseOptions, j as ReviewModuleOptions, q as reviewModule } from '../define-custom-node-RznSCnPr.js';
1
+ import { a as CustomNodeDefinition, b as ActivatedCustomNode, A as AnyCustomNodeDefinition } from '../define-custom-node-Bk8kFO27.js';
2
+ export { P as ProLicenseOptions, j as ReviewModuleOptions, q as reviewModule } from '../define-custom-node-Bk8kFO27.js';
3
3
  import * as react from 'react';
4
4
  import { ReactNode } from 'react';
5
- import { ToolbarTranslate } from '@docx-editor.dev/react';
5
+ import { ToolbarTranslate, ReviewAuthorInfo } from '@docx-editor.dev/react';
6
6
  import { ReviewItemPlacement, ReviewActivationOptions, ReviewItemQuery, Editor } from '@docx-editor.dev/core/contracts/editor';
7
7
  export { ReviewActivationOptions } from '@docx-editor.dev/core/contracts/editor';
8
8
  import '@docx-editor.dev/core/editor';
@@ -29,10 +29,10 @@ interface UseReviewReturn {
29
29
  /** The item the caret is in, or null. */
30
30
  readonly activeKey: string | null;
31
31
  /**
32
- * Card to document: selects the item's range and scrolls to it.
32
+ * Card to document: puts the caret at the start of the item's range and scrolls to it. Nothing is selected; the open item draws its own highlight.
33
33
  *
34
34
  * Reports whether it landed, on the same terms as {@link accept}. False for an item whose
35
- * `activatable` is false — no range to select, or a revision kind this rail excluded — and
35
+ * `activatable` is false — no resolvable range, or a revision kind this rail excluded — and
36
36
  * for a story that will not open. A queue walked with next/previous controls has no other
37
37
  * way to tell a step that did nothing from one that worked, and skipping to the next item
38
38
  * is only possible if you can find out.
@@ -141,6 +141,31 @@ declare function useStackedReviewPositions(items: readonly {
141
141
  * @public
142
142
  */
143
143
  declare function useReviewItem(): ReviewItemView | null;
144
+ /**
145
+ * The resolved presentation of one author — colour, ramp slot, and any declared style —
146
+ * or `undefined` when no argument is given, or when the author is in neither the
147
+ * document's roster nor the review queue.
148
+ *
149
+ * COMMENT AUTHORS INCLUDED. The document's revision roster does not carry someone who only
150
+ * left comments, so this resolves their declaration directly; their card draws in the
151
+ * colour the host declared, exactly as a reviewer's does.
152
+ *
153
+ * The link between a CUSTOM card and the author styling system: a `List` render callback
154
+ * or card child reads the item's author here and draws with the same colours the painted
155
+ * document and the packaged cards use. Live: a `setRevisionStyles` call re-renders the
156
+ * rail, and this answer with it. Works anywhere under `DocxEditorReview`.
157
+ *
158
+ * ```tsx
159
+ * function MyCard({ item }: { item: ReviewItemView }) {
160
+ * const author = useReviewAuthor(item.author);
161
+ * return <div style={{ borderColor: author?.color }}>…</div>;
162
+ * }
163
+ * <DocxEditorReview.List>{(item) => <MyCard item={item} />}</DocxEditorReview.List>;
164
+ * ```
165
+ *
166
+ * @public
167
+ */
168
+ declare function useReviewAuthor(author: string | undefined): ReviewAuthorInfo | undefined;
144
169
  declare const ReviewResolve: {
145
170
  ({ className, asChild, hidden, children, icon: glyph }: ReviewActionProps): react.JSX.Element | null;
146
171
  docxReviewPart: "Resolve";
@@ -150,8 +175,9 @@ declare const ReviewReopen: {
150
175
  docxReviewPart: "Reopen";
151
176
  };
152
177
  declare const ReviewDraft: {
153
- ({ top, className, hidden }: ReviewPartProps & {
178
+ ({ top, left, className, hidden, }: ReviewPartProps & {
154
179
  top?: number;
180
+ left?: number | null;
155
181
  }): react.JSX.Element | null;
156
182
  docxReviewPart: "Draft";
157
183
  };
@@ -638,4 +664,4 @@ declare function activatedCustomNodeOf(resolved: ResolvedCustomNodeActivation, e
638
664
  */
639
665
  declare function resolveCustomNodeActivation(target: EventTarget | null, nodes: readonly AnyCustomNodeDefinition[]): ResolvedCustomNodeActivation | null;
640
666
 
641
- export { CustomNodeChrome, type CustomNodeChromeProps, CustomNodeContextMenu, type CustomNodeContextMenuProps, DocxEditorReview, type DocxEditorReviewNamespace, type ResolvedCustomNodeActivation, type ReviewActionProps, type ReviewItemView, type ReviewMarkersProps, type ReviewPartProps, type ReviewProps, type UseReviewReturn, activatedCustomNodeOf, resolveCustomNodeActivation, useCustomNodeDefinitions, useReview, useReviewItem, useReviewOf, useStackedReviewPositions };
667
+ export { CustomNodeChrome, type CustomNodeChromeProps, CustomNodeContextMenu, type CustomNodeContextMenuProps, DocxEditorReview, type DocxEditorReviewNamespace, type ResolvedCustomNodeActivation, type ReviewActionProps, type ReviewItemView, type ReviewMarkersProps, type ReviewPartProps, type ReviewProps, type UseReviewReturn, activatedCustomNodeOf, resolveCustomNodeActivation, useCustomNodeDefinitions, useReview, useReviewAuthor, useReviewItem, useReviewOf, useStackedReviewPositions };