@docx-editor.dev/pro 2.5.0 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{define-custom-node-RznSCnPr.d.cts → define-custom-node-Bk8kFO27.d.cts} +1 -1
- package/dist/{define-custom-node-RznSCnPr.d.ts → define-custom-node-Bk8kFO27.d.ts} +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/react/index.cjs +2 -2
- package/dist/react/index.d.cts +33 -7
- package/dist/react/index.d.ts +33 -7
- package/dist/react/index.js +2 -2
- package/dist/vue/index.cjs +2 -0
- package/dist/vue/index.d.cts +1088 -0
- package/dist/vue/index.d.ts +1088 -0
- package/dist/vue/index.js +2 -0
- package/package.json +18 -4
|
@@ -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
|
|
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
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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';
|
package/dist/react/index.cjs
CHANGED
|
@@ -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(
|
|
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,r={},s=[],n=a=>{if(Array.isArray(a)){for(let i of a)n(i);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)?r[t]=a:s.push(a);};return n(e),{parts:r,rest:s}}function ze(e,o){if(!o)return e;let l=e.props.className;return 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,r,s=false){let[n,a]=react.useState(Dn);return react.useEffect(()=>{let t=o.current;if(!e||!t)return;let i=t.offsetParent,c=i?.querySelector(".docx-paginated-surface")??null,f=()=>{a(p=>{let w=c&&i?c.getBoundingClientRect():null,g=w&&i?i.getBoundingClientRect():null,b=w&&g&&i?w.right-g.left-i.clientLeft+i.scrollLeft+Sn:null,R={scale:e.getRenderScale(),top:w&&g&&i?w.top-g.top-i.clientTop+i.scrollTop:0,left:b,compactCardLeft:b===null||!i?null:i.scrollLeft+i.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(i&&v.observe(i),c&&v.observe(c),!s||!i)return ()=>v.disconnect();let d=0,u=()=>{d===0&&(d=requestAnimationFrame(()=>{d=0,f();}));};return i.addEventListener("scroll",u,{passive:true}),()=>{d!==0&&cancelAnimationFrame(d),i.removeEventListener("scroll",u),v.disconnect();}},[e,o,l,r,s]),n}function Lt(e,o,l){let[r,s]=react.useState(null);return react.useEffect(()=>{let n=o.current,a=n?.offsetParent;if(!a)return;let t=0,i=()=>{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(i)),n?.setAttribute("data-scrolling",""),window.clearTimeout(c),c=window.setTimeout(()=>n?.removeAttribute("data-scrolling"),150);};i(),a.addEventListener("scroll",f,{passive:true});let v=new ResizeObserver(f);return v.observe(a),()=>{t!==0&&cancelAnimationFrame(t),window.clearTimeout(c),a.removeEventListener("scroll",f),v.disconnect();}},[e,o,l]),r}function Ht(e){let o=react.useRef(new WeakMap),l=react.useRef(new Map),r=react.useRef(null),s=react.useCallback((n,a)=>{let t=l.current.get(a);if(!n){t&&(r.current?.unobserve(t),o.current.delete(t),l.current.delete(a));return}typeof ResizeObserver>"u"||(e(a,n.offsetHeight),r.current??(r.current=new ResizeObserver(i=>{for(let c of i){let f=o.current.get(c.target);f&&e(f,c.target.offsetHeight);}})),!(t===n&&o.current.get(n)===a)&&(t&&(r.current.unobserve(t),o.current.delete(t)),o.current.set(n,a),l.current.set(a,n),r.current.observe(n)));},[e]);return react.useEffect(()=>()=>{r.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]),r=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,r,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]),i=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,r]),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,r]),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:i,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,i,c,f,v,d,u,p,w,g,b,e])}function $n(e,o,l={}){let r=l.gap??8,s=l.scale??1,n=l.defaultHeight??0;return react.useMemo(()=>{let a=new Map,t=Number.NEGATIVE_INFINITY;for(let i of e){let c=i.anchorY===null?Number.isFinite(t)?t:0:Math.max(i.anchorY,t);a.set(i.key,c),t=c+((o.get(i.key)??n)+r)/s;}return a},[e,o,r,s,n])}var Qe=8;function Xe(e,o){return e?.color??`var(--doc-review-author-${o%Qe})`}function ne(e,o,l){return e?{"--doc-review-author-current":Xe(o,l)}:{}}function ve(e,o){return (e?.slot??o)%Qe}function Kt(e,o,l,r){let s=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),r?.getConfiguredAuthor()];for(let t of a){if(!t||n.has(t))continue;let i=l.get(t)??0,c=r?.getReviewAuthorStyle(t),f=c?.color??`var(--doc-review-author-${i%Qe})`,v=s.current.get(t),d=v!==void 0&&v.slot===i&&v.color===f&&v.style===c?v:{author:t,slot:i,color:f,...c?{style:c}:{}};s.current.set(t,d),n.set(t,d);}return n},[e,o,l,r])}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 r of Object.keys(e))/^on[A-Z]/.test(r)?l[r]=Xn(o[r],e[r]):r==="className"?l[r]=[e[r],o[r]].filter(Boolean).join(" "):r==="style"&&(l[r]={...e[r],...o[r]});return l}function Wt(e){return e==="Enter"||e===" "}function 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,r){let s=n=>{typeof l=="function"&&l(n);};return {onClick:n=>{typeof e=="function"&&e(n),n.defaultPrevented||s(n),r&&n.preventDefault();},onKeyDown:n=>{if(typeof o=="function"&&o(n),!Wt(n.key))return;n.defaultPrevented||s(n),r&&n.preventDefault();}}}function Q({engineDisabled:e,disabledReason:o,slotProps:l,children:r}){let s=react.Children.only(r);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=i=>{eo(i)||typeof t=="function"&&t(i);};}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,r]=react.useState(null);react.useEffect(()=>{l!==null&&!e.some(n=>n.key===l&&n.kind==="comment"&&n.resolved)&&r(null);},[e,l]);let s=react.useMemo(()=>({key:l,open:n=>r(n),close:()=>r(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:r,onDeactivate:s,children:n,...a}){let t=Je(),i=react.useRef(null);return react.useEffect(()=>{let c=f=>{let v=i.current;v?.open&&f.target instanceof Node&&!v.contains(f.target)&&(t.close(),s());};return document.addEventListener("pointerdown",c,true),()=>document.removeEventListener("pointerdown",c,true)},[t,s]),jsxRuntime.jsxs("details",{ref:i,...a,open:t.key===l,onToggle:c=>{c.currentTarget.open?(t.open(l),r()):(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:r,asChild:s,hidden:n,children:a,icon:t}){let i=e.useReview(),c=e.useItem(),f=e.useLabel();if(n||!c||c.kind!=="comment"||c.resolved)return null;let v=f("comments.resolve"),d=i.commentResolutionDisabledReason!==null,u=d?f("editingMode.viewingHint"):null,p={type:"button",className:`docx-review__action${r?` ${r}`:""}`,"data-testid":"review-resolve","aria-label":v,title:u??v,disabled:d,onMouseDown:e.guardMousedown,onClick:w=>{w.stopPropagation(),!d&&i.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:r,asChild:s,hidden:n,children:a,icon:t}){let i=e.useReview(),c=e.useItem(),f=e.useLabel();if(n||!c||c.kind!=="comment"||!c.resolved)return null;let v=f("comments.reopen"),d=i.commentResolutionDisabledReason!==null,u=d?f("editingMode.viewingHint"):null,p={type:"button",className:`docx-review__action${r?` ${r}`:""}`,"data-testid":"review-reopen","aria-label":v,title:u??v,disabled:d,onMouseDown:e.guardMousedown,onClick:w=>{w.stopPropagation(),!d&&i.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:r=0,left:s=null,className:n,hidden:a}){let{review:t,endDraft:i,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(""),i());},[f,w,t,i]);return a?null:jsxRuntime.jsx("div",{className:`docx-review__slot${n?` ${n}`:""}${s===null?"":" docx-review__slot--compact"}`,style:{position:"absolute",top:r,...s===null?{}:{left:s,width:me}},ref:x=>{c(x,e.composeKey);},children: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(),i();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:i,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:r,hidden:s,children:n}){let{review:a,readOnly:t}=e.useRail(),i=e.useItem(),c=e.useLabel(),[f,v]=react.useState(""),[d,u]=react.useState(false),p=react.useId(),w=react.useCallback(()=>{if(!i||t||f.trim().length===0)return;let g=a.reply(i,f.trim());u(!g),g&&v("");},[i,t,f,a]);return s||!i||!i.isActive||i.kind==="comment"&&i.resolved?null:n?jsxRuntime.jsx(jsxRuntime.Fragment,{children:n}):jsxRuntime.jsxs("form",{className:`docx-review__reply-box${r?` ${r}`:""}`,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:r,children:s,t:n,card:a,preset:t=true,stack:i=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&&!r,ee),ce=Lt(u,M,!p&&!r);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,r]);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(!(r||w))return J?.registerCommentDraft(Ee)},[Ee,r,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(r||p)return null;let xt={ref:M,className:`docx-review${e?` ${e}`:""}`,"data-testid":"review-rail","data-count":S.length,"data-open":Ce?"":void 0,"data-compact":ee?"":void 0,role:"complementary","aria-label":x("review.ariaLabel"),onMouseDown:F,style:I.left===null?void 0:{left:I.left,right:"auto"}},W=typeof s=="function"?{parts:{},rest:s}:Pe(s,"root"),z=W.parts,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:i,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:i,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:r=1,offset:s=0,window:n=null,children:a,className:t,hidden:i}){let{review:c,measure:f,cardClassName:v}=H();if(i)return null;let 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*r;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:r,hidden:s,icon:n}){let{review:a,authorSlots:t,authorInfo:i}=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${r?` ${r}`:""}`,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(i.get(u.author),t.get(u.author)??0)}:{},style:{position:"absolute",top:p,...u.author?{"--doc-review-author-current":Xe(i.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:r,children:s}){let{beginDraft:n,readOnly:a}=H(),t=K();if(r||o||e===null||a)return null;let i={type:"button",className:`docx-review__add${l?` ${l}`:""}`,"data-testid":"review-add-comment",style:{position:"absolute",top:e},"aria-label":t("common.comment"),title:t("common.comment"),onMouseDown:F,onClick:n};return s?jsxRuntime.jsx(react$1.Slot,{...i,children:s}):jsxRuntime.jsx("button",{...i,children:q($t)})}at.docxReviewPart="AddComment";function lt({className:e,hidden:o}){let{review:l,allItems:r,authorSlots:s,authorInfo:n}=H(),a=K(),t=react.useRef(null),[i,c]=react.useState(null),f=react.useRef(false);f.current=i!==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(!i)return null;let w=null,g=false,b=null,R=false,h=null,N=false;for(let E of r)if(!(E.kind!=="revision"||E.item.kind!=="revision")){for(let x of E.item.addresses)if(x.id===i.revisionId){if(x.author===i.author){if(x.date===i.date)return E;w===null?w=E:w!==E&&(g=true);}b===null?b=E:b!==E&&(R=true);}if(i.paragraphId!==void 0&&i.start!==void 0&&i.end!==void 0&&(E.revisionKind==="format"||E.revisionKind==="structural")){for(let x of E.item.ranges)if(x.start.paragraphId===i.paragraphId&&x.start.offset<i.end&&x.end.offset>i.start){h===null?h=E:h!==E&&(N=true);break}}}return w!==null&&!g?w:b!==null&&!R?b:h!==null&&!N?h:null},[r,i]),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=i?.kind==="format"?"format":"structural";return jsxRuntime.jsx("div",{ref:t,className:`docx-review__balloon-root${e?` ${e}`:""}`,children:i===null?null:jsxRuntime.jsx("div",{className:"docx-review__balloon","data-testid":"review-balloon",style:{left:i.left,top:i.above?i.top-6:i.bottom+6,transform:i.above?"translateY(-100%)":void 0},onMouseDown: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,...i.author?{"data-review-author":i.author,"data-review-author-slot":ve(n.get(i.author),s.get(i.author)??0)}:{},style:ne(i.author,n.get(i.author),s.get(i.author)??0),children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[jsxRuntime.jsx("span",{className:"docx-review__avatar","aria-hidden":"true",children:ko(i.author)}),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[jsxRuntime.jsx("span",{className:"docx-review__author",children:i.author||a("comments.unknown")}),i.date?jsxRuntime.jsx(Mo,{raw:i.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 r=K();return o?null:jsxRuntime.jsx("div",{className:`docx-review__empty${e?` ${e}`:""}`,"data-testid":"review-empty",children:l??r("review.empty")})}ct.docxReviewPart="Empty";function qe({className:e,asChild:o,hidden:l,children:r}){let{review:s,authorSlots:n,authorInfo:a}=H(),t=react.useContext(P),i=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":`${i}-author ${i}-summary`},"data-kind":t.kind==="revision"?t.revisionKind??"revision":t.kind,...t.author?{"data-review-author":t.author,"data-review-author-slot":ve(a.get(t.author),f)}:{},...t.kind==="custom"&&t.item.kind==="custom"?{"data-node-name":t.item.name}:{},...t.isActive?{"data-active":""}:{},...t.kind==="comment"&&t.resolved?{"data-resolved":""}:{},...v?{"data-resolved-miniature":""}:{},style:ne(t.author,a.get(t.author),f),...v?{}:{tabIndex:0,role:"button"},id:i,...v?{}:{onMouseDown: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:r}):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:r})}):jsxRuntime.jsx("div",{...d,children:jsxRuntime.jsx(an,{children:r})})}qe.docxReviewPart="Card";function an({children:e}){let o=react.useContext(P),l=react.useMemo(()=>To(e),[e]),r=(n,a)=>n in l?l[n]:a;if(!o)return null;if(o.kind==="custom"&&o.item.kind==="custom"){let n=o.item;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[r("Avatar",null),jsxRuntime.jsx("div",{className:"docx-review__meta",children:r("Author",jsxRuntime.jsx("span",{className:"docx-review__author","data-testid":"review-custom-title",children:n.title}))})]}),r("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:[r("Avatar",jsxRuntime.jsx(Re,{})),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[r("Author",jsxRuntime.jsx(ye,{})),r("Time",jsxRuntime.jsx(ge,{}))]}),s||o.kind==="comment"?jsxRuntime.jsxs("div",{className:"docx-review__actions",children:[r("Accept",jsxRuntime.jsx(Ke,{})),r("Reject",jsxRuntime.jsx(Ve,{})),r("Resolve",jsxRuntime.jsx(cn,{})),r("Reopen",jsxRuntime.jsx(un,{})),r("Delete",jsxRuntime.jsx($e,{}))]}):null]}),r("Summary",jsxRuntime.jsx(be,{})),r("Replies",jsxRuntime.jsx(ut,{})),r("Reply",jsxRuntime.jsx(mn,{})),l.__extra]})}function To(e){let o={},l=[],r=s=>{if(Array.isArray(s)){s.forEach(r);return}if(!s||typeof s!="object"||!("type"in s)){s&&l.push(s);return}if(s.type===react.Fragment){r(s.props.children);return}let n=s.type.docxReviewPart;n?o[n]=s:l.push(s);};return r(e),l.length>0&&(o.__extra=l),o}function Re({className:e,asChild:o,hidden:l,children:r}){let{authorInfo:s}=H(),n=react.useContext(P);if(l||!n||r===void 0&&!n.initials)return null;let a={className:`docx-review__avatar${e?` ${e}`:""}`,"data-testid":"review-avatar","aria-hidden":true};if(o)return jsxRuntime.jsx(react$1.Slot,{...a,children:r});let t=s.get(n.author)?.style?.avatarUrl,i=r??(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:i})}Re.docxReviewPart="Avatar";function ye({className:e,asChild:o,hidden:l,children:r}){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:r}):jsxRuntime.jsx("span",{...t,children:r??a})}ye.docxReviewPart="Author";function ge({className:e,asChild:o,hidden:l,children:r}){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:r}):jsxRuntime.jsx("time",{...t,children:r??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:r}){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)),i=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:r}):jsxRuntime.jsx("div",{...c,children:r??(i?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:r,icon:s}){let{readOnly:n,review:a}=H(),t=react.useContext(P),i=K();if(l||!t||t.kind!=="revision"||t.readOnly)return null;let c=i("review.accept"),f=n?i("editingMode.viewingHint"):null,v={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-accept","aria-label":c,title:f??c,disabled:n,onMouseDown:F,onClick:d=>{d.stopPropagation(),!n&&a.accept(t);}};return o?jsxRuntime.jsx(Q,{engineDisabled:n,disabledReason:f,slotProps:v,children:r}):jsxRuntime.jsx("button",{...v,children:s??r??q(fe)})}Ke.docxReviewPart="Accept";function Ve({className:e,asChild:o,hidden:l,children:r,icon:s}){let{readOnly:n,review:a}=H(),t=react.useContext(P),i=K();if(l||!t||t.kind!=="revision"||t.readOnly)return null;let c=i("review.reject"),f=n?i("editingMode.viewingHint"):null,v={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-reject","aria-label":c,title:f??c,disabled:n,onMouseDown:F,onClick:d=>{d.stopPropagation(),!n&&a.reject(t);}};return o?jsxRuntime.jsx(Q,{engineDisabled:n,disabledReason:f,slotProps:v,children:r}):jsxRuntime.jsx("button",{...v,children:s??r??q(Zt)})}Ve.docxReviewPart="Reject";function $e({className:e,asChild:o,hidden:l,children:r,icon:s}){let{readOnly:n,review:a}=H(),t=react.useContext(P),{t:i}=react$1.useTranslation();if(l||!t||t.kind==="custom"||t.kind==="revision"&&t.readOnly)return null;let c=t.kind==="comment"?i("review.deleteComment"):i("review.discardChange"),f=n?i("editingMode.viewingHint"):null,v={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-delete","aria-label":c,title:f??c,disabled:n,onMouseDown:F,onClick:d=>{d.stopPropagation(),!n&&a.remove(t);}};return o?jsxRuntime.jsx(Q,{engineDisabled:n,disabledReason:f,slotProps:v,children:r}):jsxRuntime.jsx("button",{...v,children:s??r??q(Ft)})}$e.docxReviewPart="Delete";function ut({className:e,hidden:o}){let{byId:l}=H(),r=react.useContext(P);if(o||!r||r.kind==="custom")return null;let s=r.replyIds.map(n=>l.get(n)).filter(n=>n!==void 0);return s.length===0?null: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:r,controlId:s}=e,n=s?o?.getReviewItems().find(i=>i.kind==="custom"&&i.item.id===s):void 0;if(n&&n.kind==="custom"){let i=n.item;return {...l,attrs:i.attrs,text:i.text,...i.data===void 0?{}:{data:i.data},...s?{nodeId:s}:{}}}let a=s?qo(o,s,r):void 0,t=r.fromDocx?r.fromDocx({attrs:l.attrs,text:"",...a===void 0?{}:{data:a}}):l.attrs;return t===null?null:{...l,attrs:t,...a===void 0?{}:{data:a},...s?{nodeId:s}:{}}}function qo(e,o,l){let r=e?.surface;if(!r)return;let s=r.session.part(),n=store.customNodePayloadsByControl(r.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),r=l?.closest(".docx-content-control-chrome"),s=r?.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:r?.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,r=react$1.useDocxEditor(),s=he(e.nodes);return react.useEffect(()=>{let n=document.createElement("style"),a=[];for(let t of s){let i=Vo(t);if(i.length===0)continue;let c=t.chrome?.color!==void 0&&CSS.supports("color",t.chrome.color)?t.chrome.color:"var(--doc-accent)";a.push(`${i.map(f=>`${f} ${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),i=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,r);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,r);p&&(d.definition.onHover?.(p),l?.(p));};return document.addEventListener("pointerdown",i,true),document.addEventListener("pointerup",c,true),document.addEventListener("mouseover",f),()=>{document.removeEventListener("pointerdown",i,true),document.removeEventListener("pointerup",c,true),document.removeEventListener("mouseover",f);}},[s,r,o,l]),null}var Uo=e=>e.editingMode==="viewing";function Rn(e){let{onEditNode:o,onRemoveRefused:l,remove:r=true}=e,s=he(e.nodes),n=react$1.useContextMenuTarget(),a=react$1.useDocxEditor(),{t}=react$1.useTranslation(),i=react.useMemo(()=>n?ae(n,s):null,[n,s]),c=react.useMemo(()=>i?se(i,a):null,[i,a]),f=react$1.useEditorState(Uo),v=react.useMemo(()=>!i?.definition.reviewCard||!c?null:i.definition.reviewCard({attrs:c.attrs,text:c.text??"",...c.data===void 0?{}:{data:c.data}}),[i,c]);if(!i||!c)return null;let{definition:d}=i,u=d.label??d.name,p=!f&&(d.onEdit!==void 0||o!==void 0),w=!f&&r&&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;
|
package/dist/react/index.d.cts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { a as CustomNodeDefinition, b as ActivatedCustomNode, A as AnyCustomNodeDefinition } from '../define-custom-node-
|
|
2
|
-
export { P as ProLicenseOptions, j as ReviewModuleOptions, q as reviewModule } from '../define-custom-node-
|
|
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:
|
|
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
|
|
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 };
|
package/dist/react/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { a as CustomNodeDefinition, b as ActivatedCustomNode, A as AnyCustomNodeDefinition } from '../define-custom-node-
|
|
2
|
-
export { P as ProLicenseOptions, j as ReviewModuleOptions, q as reviewModule } from '../define-custom-node-
|
|
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:
|
|
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
|
|
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 };
|