@docx-editor.dev/pro 2.12.0 → 2.14.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/README.md +27 -6
- package/dist/chunk-ABW4JBFQ.js +3 -0
- package/dist/chunk-L6J5LQXZ.cjs +3 -0
- package/dist/chunk-MTNG3CRI.js +3 -0
- package/dist/chunk-VRIYIY2Y.cjs +3 -0
- package/dist/collaboration/hocuspocus.cjs +1 -1
- package/dist/collaboration/hocuspocus.js +1 -1
- package/dist/collaboration/index.cjs +2 -2
- package/dist/collaboration/index.js +1 -1
- package/dist/collaboration/webrtc.cjs +1 -1
- package/dist/collaboration/webrtc.js +1 -1
- package/dist/document-session-2QOWIMD7.js +1 -0
- package/dist/document-session-2YB34CXA.js +1 -0
- package/dist/document-session-BIMEOZBG.cjs +1 -0
- package/dist/document-session-DPSXU7I7.cjs +1 -0
- package/dist/{hocuspocus-FC5NXRLW.js → hocuspocus-ABVDFDOK.js} +1 -1
- package/dist/{hocuspocus-3FLNEX7M.cjs → hocuspocus-IIJMOMM5.cjs} +1 -1
- package/dist/react/index.cjs +2 -2
- package/dist/react/index.js +2 -2
- package/dist/vue/hocuspocus.cjs +1 -1
- package/dist/vue/hocuspocus.js +1 -1
- package/dist/vue/index.cjs +2 -2
- package/dist/vue/index.js +2 -2
- package/dist/vue/webrtc.cjs +1 -1
- package/dist/vue/webrtc.js +1 -1
- package/dist/{webrtc-UAS5I63G.cjs → webrtc-2WNLDNHU.cjs} +1 -1
- package/dist/{webrtc-V2JQ2NO7.js → webrtc-PZCIQ4FZ.js} +1 -1
- package/package.json +4 -4
- package/dist/chunk-C4RVARMI.cjs +0 -3
- package/dist/chunk-DHIPX767.js +0 -3
- package/dist/chunk-KOGVHJ7U.js +0 -3
- package/dist/chunk-QA3F5EUJ.cjs +0 -3
- package/dist/document-session-I77CU7RQ.cjs +0 -1
- package/dist/document-session-MTK2LEYT.cjs +0 -1
- package/dist/document-session-NFUE7UBO.js +0 -1
- package/dist/document-session-WEZH77T3.js +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{b as collaborationModule}from'../chunk-Q2VBO66F.js';import {d,f,g,h as h$1,i,e,a,b}from'../chunk-KOGVHJ7U.js';export{d as CollaborationSchemaError,c as MAX_BASELINE_BYTES,a as PROTOCOL_VERSION,b as SCHEMA_VERSION,m as createDocumentCollaboration,k as readCollaborationDocument,j as readCollaborationResourceUsage}from'../chunk-KOGVHJ7U.js';import*as l from'yjs';import {ORIGIN_IDS}from'@docx-editor.dev/core/store';import {createCollaborationStatusTracker,isCollaborationFailureCode}from'@docx-editor.dev/core/collaboration';var C="docxEditor",h=256,O=256,I=1e6,D=3e4;function B(a){let t=a.actorId.trim(),n=a.name.trim();if(t.length===0||t.length>h||n.length===0||n.length>h)throw new d("invalid-identity");if(a.color!==void 0&&a.color.length>64)throw new d("invalid-identity-color");return Object.freeze({actorId:t,name:n,...a.color?{color:a.color}:{},role:a.role??"human"})}function F(a){let t=a.trim();if(t.length===0||t.length>h)throw new d("invalid-document-id");return t}function N(a){let t=a?.trim()||globalThis.crypto.randomUUID();if(t.length===0||t.length>h)throw new d("invalid-session-id");return t}function H(a,t){let n=a.toString();if(n===t)return;let o=0;for(;o<n.length&&o<t.length&&n.charCodeAt(o)===t.charCodeAt(o);)o+=1;let e=0;for(;e<n.length-o&&e<t.length-o&&n.charCodeAt(n.length-e-1)===t.charCodeAt(t.length-e-1);)e+=1;let r=n.length-o-e;r>0&&a.delete(o,r);let i=t.slice(o,t.length-e);i.length>0&&a.insert(o,i);}function R(a){if(typeof a!="object"||a===null||Array.isArray(a))return null;let t=a;return typeof t.paragraphId!="string"||t.paragraphId.length!==8||typeof t.position!="string"||t.position.length===0||t.position.length>2048||!/^[A-Za-z0-9_-]+$/.test(t.position)?null:{paragraphId:t.paragraphId,position:t.position}}function V(a){if(a===void 0||typeof a!="object"||a===null||Array.isArray(a))return;let t=a,n=R(t.anchor),o=R(t.head);if(n&&o)return {anchor:n,head:o};if(typeof t.paragraphId=="string"&&t.paragraphId.length===8&&typeof t.anchor=="string"&&typeof t.head=="string"&&t.anchor.length>0&&t.head.length>0&&t.anchor.length<=2048&&t.head.length<=2048&&/^[A-Za-z0-9_-]+$/.test(t.anchor)&&/^[A-Za-z0-9_-]+$/.test(t.head))return {anchor:{paragraphId:t.paragraphId,position:t.anchor},head:{paragraphId:t.paragraphId,position:t.head}}}function L(a){if(typeof a!="object"||a===null||Array.isArray(a))return null;let t=a;if(typeof t.actorId!="string"||t.actorId.length===0||t.actorId.length>h||typeof t.name!="string"||t.name.length===0||t.name.length>h)return null;let n=typeof t.color=="string"&&t.color.length<=64?t.color:void 0,o=t.role==="agent"?"agent":"human",e=V(t.selection);return {actorId:t.actorId,name:t.name,...n?{color:n}:{},role:o,...e?{selection:e}:{}}}function X(a){let t="";for(let n of a)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function $(a){let t=a.replace(/-/g,"+").replace(/_/g,"/"),n=atob(t+"=".repeat((4-t.length%4)%4));return Uint8Array.from(n,o=>o.charCodeAt(0))}var w=class{constructor(t,n,o,e$1,r,i){this.ydoc=t;this.awareness=n;this.baseline=i;this.documentId=o,this.sessionId=e$1,this.identity=r;let{root:d,paragraphs:p}=e(t);this.baselineSha256=String(d.get("baselineSha256")),this.initializedBy=String(d.get("initializedBy")),this.undoManager=new l.UndoManager([...p.values()],{trackedOrigins:new Set([this.localOrigin]),captureTimeout:0}),t.on("afterTransaction",this.onYjsTransaction),n.on("change",this.onAwarenessChange),this.publishAwareness(),this.setStatus("ready");}ydoc;awareness;baseline;documentId;sessionId;identity;statusState=createCollaborationStatusTracker();statusListeners=new Set;selectionListeners=new Set;participantListeners=new Set;localOrigin=Object.freeze({kind:"docx-collaboration-local"});undoManager;baselineSha256;initializedBy;port=null;detachPort=null;applyingSharedState=false;remoteCounter=0;destroyed=false;status(){return this.statusState.status()}statusSnapshot(){return this.statusState.snapshot()}subscribeStatus(t){return this.statusListeners.add(t),()=>this.statusListeners.delete(t)}setTransportStatus(t,n,o){if(!this.destroyed&&!(this.statusState.status()==="error"&&t!=="error")){if(n!==void 0){this.setStatus(t,n,o);return}this.setStatus(t);}}get attached(){return this.port!==null}attach(t){if(this.destroyed)return ()=>{};if(this.port)return ()=>{};if(t.documentId!==this.documentId)return this.setStatus("error","document-id-mismatch"),()=>{};this.validateParagraphSet(t),this.port=t,this.reconcilePortFromYjs();let n=t.subscribe(o=>{if(!(this.destroyed||this.applyingSharedState)&&!(o.origin===ORIGIN_IDS.mutationRemote||o.origin===ORIGIN_IDS.projection||o.origin===ORIGIN_IDS.awareness))try{this.reconcileYjsFromPort();}catch(e){this.setStatus("error",e instanceof d?e.code:"local-mirror-failed",e instanceof d?e.detail:void 0);}});return this.detachPort=()=>{this.flushPendingJournals(),n(),this.port===t&&(this.port=null),this.detachPort=null;},()=>this.detachPort?.()}gateOperations(t,n){if(this.destroyed)return "collaboration-session-destroyed";if(this.statusState.status()!=="ready")return "collaboration-session-not-ready";if(!this.port)return "collaboration-session-not-attached";if(n.kind!=="body")return "experimental-collaboration-body-text-only";let o=new Map(this.port.paragraphs().map(e=>[e.nodeId,e.text.length]));for(let e of t){if(e.op!=="insertText"&&e.op!=="deleteText")return "experimental-collaboration-text-only";if("revision"in e&&e.revision!==void 0)return "experimental-collaboration-untracked-text-only";if(!this.port.paragraphByNodeId(e.paragraphId))return "experimental-collaboration-existing-paragraphs-only";let r=o.get(e.paragraphId);if(r===void 0)return "experimental-collaboration-existing-paragraphs-only";let i=e.op==="insertText"?r+e.text.length:r-Math.max(0,e.end-e.start);if(i>I)return "collaboration-text-limit";o.set(e.paragraphId,Math.max(0,i));}return null}canUndo(){return !this.destroyed&&this.statusState.status()==="ready"&&this.undoManager.undoStack.length>0}canRedo(){return !this.destroyed&&this.statusState.status()==="ready"&&this.undoManager.redoStack.length>0}undo(){return this.canUndo()?(this.undoManager.undo(),true):false}redo(){return this.canRedo()?(this.undoManager.redo(),true):false}setLocalSelection(t){if(this.destroyed)return;let{paragraphs:n}=e(this.ydoc),o=(r,i)=>{let d=n.get(r.toUpperCase());if(d)return {paragraphId:r.toUpperCase(),position:X(l.encodeRelativePosition(l.createRelativePositionFromTypeIndex(d,Math.max(0,Math.min(i,d.length)))))}},e$1;if(t){let r=o(t.anchor.paragraphId,t.anchor.offset),i=o(t.head.paragraphId,t.head.offset);r&&i&&(e$1={anchor:r,head:i});}this.publishAwareness(e$1);}participants(){let t=[],n=[...this.awareness.getStates().entries()].slice(0,O);for(let[o,e]of n){let r=L(e[C]);r&&t.push({actorId:r.actorId,name:r.name,...r.color?{color:r.color}:{},role:r.role??"human",isLocal:o===this.awareness.clientID});}return Object.freeze(t)}subscribeParticipants(t){return this.participantListeners.add(t),()=>this.participantListeners.delete(t)}remoteSelections(){if(!this.port)return [];let t=[...this.awareness.getStates().entries()].slice(0,O),{paragraphs:n}=e(this.ydoc),o=[];for(let[e,r]of t){if(e===this.awareness.clientID)continue;let i=L(r[C]);if(!i?.selection)continue;let d=y=>{let x=n.get(y.paragraphId);if(!x)return null;let u;try{u=l.createAbsolutePositionFromRelativePosition(l.decodeRelativePosition($(y.position)),this.ydoc);}catch{return null}if(!u||u.type!==x)return null;let f=this.port?.paragraphs().find(M=>M.paragraphId===y.paragraphId);return f?{paragraphId:f.paragraphId,nodeId:f.nodeId,offset:u.index}:null},p=d(i.selection.anchor),v=d(i.selection.head);!p||!v||o.push(Object.freeze({actorId:i.actorId,name:i.name,...i.color?{color:i.color}:{},anchor:Object.freeze(p),head:Object.freeze(v)}));}return Object.freeze(o)}subscribeRemoteSelections(t){return this.selectionListeners.add(t),()=>this.selectionListeners.delete(t)}destroy(){this.destroyed||(this.flushPendingJournals(),this.detachPort?.(),this.destroyed=true,this.ydoc.off("afterTransaction",this.onYjsTransaction),this.awareness.off("change",this.onAwarenessChange),this.awareness.setLocalState(null),this.undoManager.destroy(),this.setStatus("destroyed"),this.statusListeners.clear(),this.selectionListeners.clear(),this.participantListeners.clear());}flushPendingJournals(){this.port?.flushPendingJournals();}onYjsTransaction=t=>{if(!this.destroyed&&t.origin!==this.localOrigin){try{this.validateImmutableSchema();}catch(n){this.setStatus("error",n instanceof d?n.code:"shared-schema-invalid",n instanceof d?n.detail:void 0);return}this.port&&this.reconcilePortFromYjs();}};onAwarenessChange=()=>{if(this.destroyed)return;let t=this.remoteSelections();for(let o of [...this.selectionListeners])o(t);let n=this.participants();for(let o of [...this.participantListeners])o(n);};publishAwareness(t){let n={actorId:this.identity.actorId,name:this.identity.name,...this.identity.color?{color:this.identity.color}:{},role:this.identity.role??"human",...t?{selection:t}:{}};this.awareness.setLocalStateField(C,n);}validateParagraphSet(t){let{paragraphs:n}=e(this.ydoc),o=t.paragraphs();if(o.length!==n.size||o.some(e=>!n.has(e.paragraphId)||!(n.get(e.paragraphId)instanceof l.Text)||n.get(e.paragraphId).length>I))throw new d("paragraph-set-mismatch")}validateImmutableSchema(){let{root:t,paragraphs:n}=e(this.ydoc),o=new Set(["protocolVersion","schemaVersion","documentId","baselineSha256","baselineByteLength","initializedBy","baseline","initialized"]);if([...t.keys()].some(r=>!o.has(r)))throw new d("unsupported-root-key");if(t.get("protocolVersion")!==a||t.get("schemaVersion")!==b||t.get("documentId")!==this.documentId||t.get("baselineSha256")!==this.baselineSha256||t.get("baselineByteLength")!==this.baseline.bytes.byteLength||t.get("initializedBy")!==this.initializedBy||t.get("initialized")!==true)throw new d("immutable-metadata-changed");let e$1=t.get("baseline");if(!(e$1 instanceof Uint8Array)||e$1.byteLength!==this.baseline.bytes.byteLength||e$1.some((r,i)=>r!==this.baseline.bytes[i]))throw new d("immutable-baseline-changed");for(let[r,i]of n)if(!this.baseline.paragraphs.some(d=>d.paragraphId===r)||!(i instanceof l.Text)||i.length>I)throw new d("paragraph-set-mismatch")}reconcileYjsFromPort(){let t=this.port;if(!t)return;let{paragraphs:n}=e(this.ydoc);this.ydoc.transact(()=>{for(let o of t.paragraphs()){let e=n.get(o.paragraphId);if(!e)throw new d("paragraph-set-mismatch");H(e,o.text);}},this.localOrigin),this.undoManager.stopCapturing();}reconcilePortFromYjs(){let t=this.port;if(!t||this.applyingSharedState)return;let{paragraphs:n}=e(this.ydoc);this.applyingSharedState=true;try{this.validateParagraphSet(t);let o=[];for(let e of t.paragraphs()){let r=n.get(e.paragraphId);if(!r)throw new d("paragraph-set-mismatch");let i=r.toString();i!==e.text&&o.push({paragraphId:e.paragraphId,text:i});}if(o.length>0){this.remoteCounter+=1;let e=t.applyParagraphTexts(o,{origin:ORIGIN_IDS.mutationRemote,actorId:"remote",operationId:`remote:${this.remoteCounter}`});if(!e.ok)throw new d(isCollaborationFailureCode(e.reason)?e.reason:"remote-apply-failed",isCollaborationFailureCode(e.reason)?void 0:e.reason)}}catch(o){this.setStatus("error",o instanceof d?o.code:"remote-apply-failed",o instanceof d?o.detail:void 0);}finally{this.applyingSharedState=false;}}setStatus(t,n,o){if(!this.statusState.set(t,n,o))return;let e=this.statusState.snapshot();for(let r of [...this.statusListeners])r(e.status,e.reason?.code,e.reason?.detail);}};async function J(a,t,n){if(a.bootstrap.kind==="create-or-join")throw new TypeError("createTextCollaboration does not support bootstrap kind 'create-or-join'. Use createDocumentCollaboration.");if(a.bootstrap.kind==="create"){let o=f(a.bootstrap.document,t);return await g(a.ydoc,t,n.actorId,o),h$1(a.ydoc,t)}return await i(a.ydoc,a.bootstrap.timeoutMs??D,a.bootstrap.signal),h$1(a.ydoc,t)}async function Z(a){let t=F(a.documentId),n=N(a.sessionId),o=B(a.identity),e=await J(a,t,o),r=new w(a.ydoc,a.awareness,t,n,o,e);return Object.freeze({document:new Uint8Array(e.bytes),session:r,destroy:()=>r.destroy()})}
|
|
1
|
+
export{b as collaborationModule}from'../chunk-Q2VBO66F.js';import {d,f,g,h as h$1,i,e,a,b}from'../chunk-MTNG3CRI.js';export{d as CollaborationSchemaError,c as MAX_BASELINE_BYTES,a as PROTOCOL_VERSION,b as SCHEMA_VERSION,m as createDocumentCollaboration,k as readCollaborationDocument,j as readCollaborationResourceUsage}from'../chunk-MTNG3CRI.js';import*as l from'yjs';import {ORIGIN_IDS}from'@docx-editor.dev/core/store';import {createCollaborationStatusTracker,isCollaborationFailureCode}from'@docx-editor.dev/core/collaboration';var C="docxEditor",h=256,O=256,I=1e6,D=3e4;function B(a){let t=a.actorId.trim(),n=a.name.trim();if(t.length===0||t.length>h||n.length===0||n.length>h)throw new d("invalid-identity");if(a.color!==void 0&&a.color.length>64)throw new d("invalid-identity-color");return Object.freeze({actorId:t,name:n,...a.color?{color:a.color}:{},role:a.role??"human"})}function F(a){let t=a.trim();if(t.length===0||t.length>h)throw new d("invalid-document-id");return t}function N(a){let t=a?.trim()||globalThis.crypto.randomUUID();if(t.length===0||t.length>h)throw new d("invalid-session-id");return t}function H(a,t){let n=a.toString();if(n===t)return;let o=0;for(;o<n.length&&o<t.length&&n.charCodeAt(o)===t.charCodeAt(o);)o+=1;let e=0;for(;e<n.length-o&&e<t.length-o&&n.charCodeAt(n.length-e-1)===t.charCodeAt(t.length-e-1);)e+=1;let r=n.length-o-e;r>0&&a.delete(o,r);let i=t.slice(o,t.length-e);i.length>0&&a.insert(o,i);}function R(a){if(typeof a!="object"||a===null||Array.isArray(a))return null;let t=a;return typeof t.paragraphId!="string"||t.paragraphId.length!==8||typeof t.position!="string"||t.position.length===0||t.position.length>2048||!/^[A-Za-z0-9_-]+$/.test(t.position)?null:{paragraphId:t.paragraphId,position:t.position}}function V(a){if(a===void 0||typeof a!="object"||a===null||Array.isArray(a))return;let t=a,n=R(t.anchor),o=R(t.head);if(n&&o)return {anchor:n,head:o};if(typeof t.paragraphId=="string"&&t.paragraphId.length===8&&typeof t.anchor=="string"&&typeof t.head=="string"&&t.anchor.length>0&&t.head.length>0&&t.anchor.length<=2048&&t.head.length<=2048&&/^[A-Za-z0-9_-]+$/.test(t.anchor)&&/^[A-Za-z0-9_-]+$/.test(t.head))return {anchor:{paragraphId:t.paragraphId,position:t.anchor},head:{paragraphId:t.paragraphId,position:t.head}}}function L(a){if(typeof a!="object"||a===null||Array.isArray(a))return null;let t=a;if(typeof t.actorId!="string"||t.actorId.length===0||t.actorId.length>h||typeof t.name!="string"||t.name.length===0||t.name.length>h)return null;let n=typeof t.color=="string"&&t.color.length<=64?t.color:void 0,o=t.role==="agent"?"agent":"human",e=V(t.selection);return {actorId:t.actorId,name:t.name,...n?{color:n}:{},role:o,...e?{selection:e}:{}}}function X(a){let t="";for(let n of a)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function $(a){let t=a.replace(/-/g,"+").replace(/_/g,"/"),n=atob(t+"=".repeat((4-t.length%4)%4));return Uint8Array.from(n,o=>o.charCodeAt(0))}var w=class{constructor(t,n,o,e$1,r,i){this.ydoc=t;this.awareness=n;this.baseline=i;this.documentId=o,this.sessionId=e$1,this.identity=r;let{root:d,paragraphs:p}=e(t);this.baselineSha256=String(d.get("baselineSha256")),this.initializedBy=String(d.get("initializedBy")),this.undoManager=new l.UndoManager([...p.values()],{trackedOrigins:new Set([this.localOrigin]),captureTimeout:0}),t.on("afterTransaction",this.onYjsTransaction),n.on("change",this.onAwarenessChange),this.publishAwareness(),this.setStatus("ready");}ydoc;awareness;baseline;documentId;sessionId;identity;statusState=createCollaborationStatusTracker();statusListeners=new Set;selectionListeners=new Set;participantListeners=new Set;localOrigin=Object.freeze({kind:"docx-collaboration-local"});undoManager;baselineSha256;initializedBy;port=null;detachPort=null;applyingSharedState=false;remoteCounter=0;destroyed=false;status(){return this.statusState.status()}statusSnapshot(){return this.statusState.snapshot()}subscribeStatus(t){return this.statusListeners.add(t),()=>this.statusListeners.delete(t)}setTransportStatus(t,n,o){if(!this.destroyed&&!(this.statusState.status()==="error"&&t!=="error")){if(n!==void 0){this.setStatus(t,n,o);return}this.setStatus(t);}}get attached(){return this.port!==null}attach(t){if(this.destroyed)return ()=>{};if(this.port)return ()=>{};if(t.documentId!==this.documentId)return this.setStatus("error","document-id-mismatch"),()=>{};this.validateParagraphSet(t),this.port=t,this.reconcilePortFromYjs();let n=t.subscribe(o=>{if(!(this.destroyed||this.applyingSharedState)&&!(o.origin===ORIGIN_IDS.mutationRemote||o.origin===ORIGIN_IDS.projection||o.origin===ORIGIN_IDS.awareness))try{this.reconcileYjsFromPort();}catch(e){this.setStatus("error",e instanceof d?e.code:"local-mirror-failed",e instanceof d?e.detail:void 0);}});return this.detachPort=()=>{this.flushPendingJournals(),n(),this.port===t&&(this.port=null),this.detachPort=null;},()=>this.detachPort?.()}gateOperations(t,n){if(this.destroyed)return "collaboration-session-destroyed";if(this.statusState.status()!=="ready")return "collaboration-session-not-ready";if(!this.port)return "collaboration-session-not-attached";if(n.kind!=="body")return "experimental-collaboration-body-text-only";let o=new Map(this.port.paragraphs().map(e=>[e.nodeId,e.text.length]));for(let e of t){if(e.op!=="insertText"&&e.op!=="deleteText")return "experimental-collaboration-text-only";if("revision"in e&&e.revision!==void 0)return "experimental-collaboration-untracked-text-only";if(!this.port.paragraphByNodeId(e.paragraphId))return "experimental-collaboration-existing-paragraphs-only";let r=o.get(e.paragraphId);if(r===void 0)return "experimental-collaboration-existing-paragraphs-only";let i=e.op==="insertText"?r+e.text.length:r-Math.max(0,e.end-e.start);if(i>I)return "collaboration-text-limit";o.set(e.paragraphId,Math.max(0,i));}return null}canUndo(){return !this.destroyed&&this.statusState.status()==="ready"&&this.undoManager.undoStack.length>0}canRedo(){return !this.destroyed&&this.statusState.status()==="ready"&&this.undoManager.redoStack.length>0}undo(){return this.canUndo()?(this.undoManager.undo(),true):false}redo(){return this.canRedo()?(this.undoManager.redo(),true):false}setLocalSelection(t){if(this.destroyed)return;let{paragraphs:n}=e(this.ydoc),o=(r,i)=>{let d=n.get(r.toUpperCase());if(d)return {paragraphId:r.toUpperCase(),position:X(l.encodeRelativePosition(l.createRelativePositionFromTypeIndex(d,Math.max(0,Math.min(i,d.length)))))}},e$1;if(t){let r=o(t.anchor.paragraphId,t.anchor.offset),i=o(t.head.paragraphId,t.head.offset);r&&i&&(e$1={anchor:r,head:i});}this.publishAwareness(e$1);}participants(){let t=[],n=[...this.awareness.getStates().entries()].slice(0,O);for(let[o,e]of n){let r=L(e[C]);r&&t.push({actorId:r.actorId,name:r.name,...r.color?{color:r.color}:{},role:r.role??"human",isLocal:o===this.awareness.clientID});}return Object.freeze(t)}subscribeParticipants(t){return this.participantListeners.add(t),()=>this.participantListeners.delete(t)}remoteSelections(){if(!this.port)return [];let t=[...this.awareness.getStates().entries()].slice(0,O),{paragraphs:n}=e(this.ydoc),o=[];for(let[e,r]of t){if(e===this.awareness.clientID)continue;let i=L(r[C]);if(!i?.selection)continue;let d=y=>{let x=n.get(y.paragraphId);if(!x)return null;let u;try{u=l.createAbsolutePositionFromRelativePosition(l.decodeRelativePosition($(y.position)),this.ydoc);}catch{return null}if(!u||u.type!==x)return null;let f=this.port?.paragraphs().find(M=>M.paragraphId===y.paragraphId);return f?{paragraphId:f.paragraphId,nodeId:f.nodeId,offset:u.index}:null},p=d(i.selection.anchor),v=d(i.selection.head);!p||!v||o.push(Object.freeze({actorId:i.actorId,name:i.name,...i.color?{color:i.color}:{},anchor:Object.freeze(p),head:Object.freeze(v)}));}return Object.freeze(o)}subscribeRemoteSelections(t){return this.selectionListeners.add(t),()=>this.selectionListeners.delete(t)}destroy(){this.destroyed||(this.flushPendingJournals(),this.detachPort?.(),this.destroyed=true,this.ydoc.off("afterTransaction",this.onYjsTransaction),this.awareness.off("change",this.onAwarenessChange),this.awareness.setLocalState(null),this.undoManager.destroy(),this.setStatus("destroyed"),this.statusListeners.clear(),this.selectionListeners.clear(),this.participantListeners.clear());}flushPendingJournals(){this.port?.flushPendingJournals();}onYjsTransaction=t=>{if(!this.destroyed&&t.origin!==this.localOrigin){try{this.validateImmutableSchema();}catch(n){this.setStatus("error",n instanceof d?n.code:"shared-schema-invalid",n instanceof d?n.detail:void 0);return}this.port&&this.reconcilePortFromYjs();}};onAwarenessChange=()=>{if(this.destroyed)return;let t=this.remoteSelections();for(let o of [...this.selectionListeners])o(t);let n=this.participants();for(let o of [...this.participantListeners])o(n);};publishAwareness(t){let n={actorId:this.identity.actorId,name:this.identity.name,...this.identity.color?{color:this.identity.color}:{},role:this.identity.role??"human",...t?{selection:t}:{}};this.awareness.setLocalStateField(C,n);}validateParagraphSet(t){let{paragraphs:n}=e(this.ydoc),o=t.paragraphs();if(o.length!==n.size||o.some(e=>!n.has(e.paragraphId)||!(n.get(e.paragraphId)instanceof l.Text)||n.get(e.paragraphId).length>I))throw new d("paragraph-set-mismatch")}validateImmutableSchema(){let{root:t,paragraphs:n}=e(this.ydoc),o=new Set(["protocolVersion","schemaVersion","documentId","baselineSha256","baselineByteLength","initializedBy","baseline","initialized"]);if([...t.keys()].some(r=>!o.has(r)))throw new d("unsupported-root-key");if(t.get("protocolVersion")!==a||t.get("schemaVersion")!==b||t.get("documentId")!==this.documentId||t.get("baselineSha256")!==this.baselineSha256||t.get("baselineByteLength")!==this.baseline.bytes.byteLength||t.get("initializedBy")!==this.initializedBy||t.get("initialized")!==true)throw new d("immutable-metadata-changed");let e$1=t.get("baseline");if(!(e$1 instanceof Uint8Array)||e$1.byteLength!==this.baseline.bytes.byteLength||e$1.some((r,i)=>r!==this.baseline.bytes[i]))throw new d("immutable-baseline-changed");for(let[r,i]of n)if(!this.baseline.paragraphs.some(d=>d.paragraphId===r)||!(i instanceof l.Text)||i.length>I)throw new d("paragraph-set-mismatch")}reconcileYjsFromPort(){let t=this.port;if(!t)return;let{paragraphs:n}=e(this.ydoc);this.ydoc.transact(()=>{for(let o of t.paragraphs()){let e=n.get(o.paragraphId);if(!e)throw new d("paragraph-set-mismatch");H(e,o.text);}},this.localOrigin),this.undoManager.stopCapturing();}reconcilePortFromYjs(){let t=this.port;if(!t||this.applyingSharedState)return;let{paragraphs:n}=e(this.ydoc);this.applyingSharedState=true;try{this.validateParagraphSet(t);let o=[];for(let e of t.paragraphs()){let r=n.get(e.paragraphId);if(!r)throw new d("paragraph-set-mismatch");let i=r.toString();i!==e.text&&o.push({paragraphId:e.paragraphId,text:i});}if(o.length>0){this.remoteCounter+=1;let e=t.applyParagraphTexts(o,{origin:ORIGIN_IDS.mutationRemote,actorId:"remote",operationId:`remote:${this.remoteCounter}`});if(!e.ok)throw new d(isCollaborationFailureCode(e.reason)?e.reason:"remote-apply-failed",isCollaborationFailureCode(e.reason)?void 0:e.reason)}}catch(o){this.setStatus("error",o instanceof d?o.code:"remote-apply-failed",o instanceof d?o.detail:void 0);}finally{this.applyingSharedState=false;}}setStatus(t,n,o){if(!this.statusState.set(t,n,o))return;let e=this.statusState.snapshot();for(let r of [...this.statusListeners])r(e.status,e.reason?.code,e.reason?.detail);}};async function J(a,t,n){if(a.bootstrap.kind==="create-or-join")throw new TypeError("createTextCollaboration does not support bootstrap kind 'create-or-join'. Use createDocumentCollaboration.");if(a.bootstrap.kind==="create"){let o=f(a.bootstrap.document,t);return await g(a.ydoc,t,n.actorId,o),h$1(a.ydoc,t)}return await i(a.ydoc,a.bootstrap.timeoutMs??D,a.bootstrap.signal),h$1(a.ydoc,t)}async function Z(a){let t=F(a.documentId),n=N(a.sessionId),o=B(a.identity),e=await J(a,t,o),r=new w(a.ydoc,a.awareness,t,n,o,e);return Object.freeze({document:new Uint8Array(e.bytes),session:r,destroy:()=>r.destroy()})}
|
|
2
2
|
export{Z as createTextCollaboration};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var chunkLUUFBXJ5_cjs=require('../chunk-LUUFBXJ5.cjs'),
|
|
1
|
+
'use strict';var chunkLUUFBXJ5_cjs=require('../chunk-LUUFBXJ5.cjs'),chunkVRIYIY2Y_cjs=require('../chunk-VRIYIY2Y.cjs'),F=require('yjs'),awareness=require('y-protocols/awareness'),yWebrtc=require('y-webrtc');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var F__namespace=/*#__PURE__*/_interopNamespace(F);var D=new WeakSet,T=(e,n)=>(e[n]<<24|e[n+1]<<16|e[n+2]<<8|e[n+3])>>>0,w=(e,n,i)=>{e[n]=i>>>24&255,e[n+1]=i>>>16&255,e[n+2]=i>>>8&255,e[n+3]=i&255;},B=e=>e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):null,Y=e=>new Promise(n=>{setTimeout(n,e);});function L(e,n){if(D.has(e))return;D.add(e);let i=e.send.bind(e),o=e._onChannelMessage.bind(e),d=n?.partialTimeoutMs,c=typeof d=="number"&&Number.isFinite(d)&&d>0?d:3e4,l=n?.onAbandonedMessage,f=[],s=new Map,b=false,E=1,h=t=>{let r=s.get(t);r&&(r.timer!==void 0&&clearTimeout(r.timer),s.delete(t),e.destroyed!==true&&l?.());},S=t=>{let r=s.get(t);r&&(r.timer!==void 0&&clearTimeout(r.timer),r.timer=setTimeout(()=>{h(t);},c));},u=()=>e._channel?.bufferedAmount??0,p=async()=>{let t=0;for(;u()>1048576;){if(e.destroyed===true||t>=3e4)return false;await Y(20),t+=20;}return e.destroyed!==true},I=async t=>{let r=Math.ceil(t.byteLength/16371);if(r>8192)throw new Error(`collaboration message needs ${r} chunks, above the 8192 limit`);let g=E;E=E+1>>>0||1;for(let A=0;A<r;A+=1){if(!await p())return;let y=A*16371,a=t.subarray(y,Math.min(y+16371,t.byteLength)),m=new Uint8Array(13+a.byteLength);m[0]=251,w(m,1,g),w(m,5,A),w(m,9,r),m.set(a,13),i(m);}},k=async()=>{if(!b){b=true;try{for(;f.length>0;){let t=f.shift();if(t){if(e.destroyed===!0)return;await I(t);}}}finally{b=false;}}};e.send=t=>{if(typeof t=="string"||t.byteLength<=16371){i(t);return}f.push(t),k();},e._onChannelMessage=t=>{let r=B(t.data);if(!r||r.byteLength<13||r[0]!==251){o(t);return}let g=T(r,1),A=T(r,5),y=T(r,9);if(y===0||y>8192||A>=y)return;let a=s.get(g);if(!a){if(s.size>=4){let _=s.keys().next();_.done||h(_.value);}a={chunks:new Array(y),count:y,received:0,bytes:0,timer:void 0},s.set(g,a);}if(a.count!==y||a.chunks[A])return;let m=r.subarray(13);if(a.chunks[A]=m,a.received+=1,a.bytes+=m.byteLength,a.received!==a.count){S(g);return}a.timer!==void 0&&clearTimeout(a.timer),s.delete(g);let v=new Uint8Array(a.bytes),P=0;for(let _ of a.chunks){if(!_)return;v.set(_,P),P+=_.byteLength;}e.destroyed!==true&&e.push(v);};}var W=Object.freeze(["wss://turn.0docker.com/ws"]),R=false;function H(e){e===void 0&&(R||(R=true,console.warn("[docx-editor] createWebrtcCollaboration was called without `signaling`, so it uses the public demo endpoints. They are shared, unauthenticated, and can go away. Pass your own `signaling` URLs (and TURN `iceServers`) in production, or pass `signaling: DEMO_SIGNALING_ENDPOINTS` explicitly to accept the demo endpoints.")));}function V(){R=false;}var G=/^[A-Za-z0-9_-]{24,256}$/,U="#collab=";function X(e){let n=e.password?.trim()??"";return n.length>0?n:K(e.href)}var K=e=>{let n=e??(typeof globalThis.location=="object"&&globalThis.location!==null?String(globalThis.location.href??""):"");if(n.length===0)return;let i;try{i=new URL(n).hash;}catch{return}if(!i.startsWith(U))return;let o;try{o=decodeURIComponent(i.slice(U.length));}catch{return}if(G.test(o))return o},z=(e,n)=>{Promise.resolve(e.key).then(()=>{let i=e.room;if(!i)return;let o=i.webrtcConns,d=l=>{L(l.peer,{onAbandonedMessage:n});};for(let l of o.values())d(l);let c=o.set.bind(o);o.set=(l,f)=>(d(f),c(l,f));});};async function ee(e){let n=chunkLUUFBXJ5_cjs.b(e.roomId);H(e.signaling);let i=X({password:e.password}),o=new F__namespace.Doc,d=new awareness.Awareness(o),c=null,l=()=>{},f=()=>{let u=new yWebrtc.WebrtcProvider(n,o,{awareness:d,signaling:[...e.signaling??W],...i!==void 0?{password:i}:{},...e.iceServers?{peerOpts:{config:{iceServers:e.iceServers.map(p=>({...p}))}}}:{}});return z(u,()=>l()),u},s;try{e.bootstrap.kind!=="create"&&(c=f()),s=await chunkVRIYIY2Y_cjs.m({ydoc:o,awareness:d,documentId:n,identity:e.identity,bootstrap:e.bootstrap,offlineEditing:e.offlineEditing}),c||(c=f());}catch(u){throw c?.destroy(),d.destroy(),o.destroy(),u}if(!c)throw s.destroy(),d.destroy(),o.destroy(),new Error("WebRTC provider did not initialize");let b=c,E=s.session;l=()=>{E.setTransportStatus("error","transport","incomplete chunk");};let h=u=>{E.setTransportStatus(u.connected?"ready":"disconnected",u.connected?void 0:"transport-disconnected",u.connected?void 0:"webrtc disconnected");};b.on("status",h);let S=false;return Object.freeze({document:s.document,session:E,ydoc:o,provider:b,destroy(){S||(S=true,b.off("status",h),s.destroy(),b.destroy(),d.destroy(),o.destroy());}})}
|
|
2
2
|
Object.defineProperty(exports,"createCollaborationRoomId",{enumerable:true,get:function(){return chunkLUUFBXJ5_cjs.a}});Object.defineProperty(exports,"validateRoomId",{enumerable:true,get:function(){return chunkLUUFBXJ5_cjs.b}});exports.DEMO_SIGNALING_ENDPOINTS=W;exports.createWebrtcCollaboration=ee;exports.resetDemoSignalingWarningForTests=V;exports.resolveWebrtcRoomPassword=X;exports.warnOnDemoSignalingFallback=H;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {b}from'../chunk-6DEUT2RQ.js';export{a as createCollaborationRoomId,b as validateRoomId}from'../chunk-6DEUT2RQ.js';import {m}from'../chunk-
|
|
1
|
+
import {b}from'../chunk-6DEUT2RQ.js';export{a as createCollaborationRoomId,b as validateRoomId}from'../chunk-6DEUT2RQ.js';import {m}from'../chunk-MTNG3CRI.js';import*as F from'yjs';import {Awareness}from'y-protocols/awareness';import {WebrtcProvider}from'y-webrtc';var D=new WeakSet,T=(e,n)=>(e[n]<<24|e[n+1]<<16|e[n+2]<<8|e[n+3])>>>0,w=(e,n,i)=>{e[n]=i>>>24&255,e[n+1]=i>>>16&255,e[n+2]=i>>>8&255,e[n+3]=i&255;},B=e=>e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):null,Y=e=>new Promise(n=>{setTimeout(n,e);});function L(e,n){if(D.has(e))return;D.add(e);let i=e.send.bind(e),o=e._onChannelMessage.bind(e),d=n?.partialTimeoutMs,c=typeof d=="number"&&Number.isFinite(d)&&d>0?d:3e4,l=n?.onAbandonedMessage,f=[],s=new Map,b=false,E=1,h=t=>{let r=s.get(t);r&&(r.timer!==void 0&&clearTimeout(r.timer),s.delete(t),e.destroyed!==true&&l?.());},S=t=>{let r=s.get(t);r&&(r.timer!==void 0&&clearTimeout(r.timer),r.timer=setTimeout(()=>{h(t);},c));},u=()=>e._channel?.bufferedAmount??0,p=async()=>{let t=0;for(;u()>1048576;){if(e.destroyed===true||t>=3e4)return false;await Y(20),t+=20;}return e.destroyed!==true},I=async t=>{let r=Math.ceil(t.byteLength/16371);if(r>8192)throw new Error(`collaboration message needs ${r} chunks, above the 8192 limit`);let g=E;E=E+1>>>0||1;for(let A=0;A<r;A+=1){if(!await p())return;let y=A*16371,a=t.subarray(y,Math.min(y+16371,t.byteLength)),m=new Uint8Array(13+a.byteLength);m[0]=251,w(m,1,g),w(m,5,A),w(m,9,r),m.set(a,13),i(m);}},k=async()=>{if(!b){b=true;try{for(;f.length>0;){let t=f.shift();if(t){if(e.destroyed===!0)return;await I(t);}}}finally{b=false;}}};e.send=t=>{if(typeof t=="string"||t.byteLength<=16371){i(t);return}f.push(t),k();},e._onChannelMessage=t=>{let r=B(t.data);if(!r||r.byteLength<13||r[0]!==251){o(t);return}let g=T(r,1),A=T(r,5),y=T(r,9);if(y===0||y>8192||A>=y)return;let a=s.get(g);if(!a){if(s.size>=4){let _=s.keys().next();_.done||h(_.value);}a={chunks:new Array(y),count:y,received:0,bytes:0,timer:void 0},s.set(g,a);}if(a.count!==y||a.chunks[A])return;let m=r.subarray(13);if(a.chunks[A]=m,a.received+=1,a.bytes+=m.byteLength,a.received!==a.count){S(g);return}a.timer!==void 0&&clearTimeout(a.timer),s.delete(g);let v=new Uint8Array(a.bytes),P=0;for(let _ of a.chunks){if(!_)return;v.set(_,P),P+=_.byteLength;}e.destroyed!==true&&e.push(v);};}var W=Object.freeze(["wss://turn.0docker.com/ws"]),R=false;function H(e){e===void 0&&(R||(R=true,console.warn("[docx-editor] createWebrtcCollaboration was called without `signaling`, so it uses the public demo endpoints. They are shared, unauthenticated, and can go away. Pass your own `signaling` URLs (and TURN `iceServers`) in production, or pass `signaling: DEMO_SIGNALING_ENDPOINTS` explicitly to accept the demo endpoints.")));}function V(){R=false;}var G=/^[A-Za-z0-9_-]{24,256}$/,U="#collab=";function X(e){let n=e.password?.trim()??"";return n.length>0?n:K(e.href)}var K=e=>{let n=e??(typeof globalThis.location=="object"&&globalThis.location!==null?String(globalThis.location.href??""):"");if(n.length===0)return;let i;try{i=new URL(n).hash;}catch{return}if(!i.startsWith(U))return;let o;try{o=decodeURIComponent(i.slice(U.length));}catch{return}if(G.test(o))return o},z=(e,n)=>{Promise.resolve(e.key).then(()=>{let i=e.room;if(!i)return;let o=i.webrtcConns,d=l=>{L(l.peer,{onAbandonedMessage:n});};for(let l of o.values())d(l);let c=o.set.bind(o);o.set=(l,f)=>(d(f),c(l,f));});};async function ee(e){let n=b(e.roomId);H(e.signaling);let i=X({password:e.password}),o=new F.Doc,d=new Awareness(o),c=null,l=()=>{},f=()=>{let u=new WebrtcProvider(n,o,{awareness:d,signaling:[...e.signaling??W],...i!==void 0?{password:i}:{},...e.iceServers?{peerOpts:{config:{iceServers:e.iceServers.map(p=>({...p}))}}}:{}});return z(u,()=>l()),u},s;try{e.bootstrap.kind!=="create"&&(c=f()),s=await m({ydoc:o,awareness:d,documentId:n,identity:e.identity,bootstrap:e.bootstrap,offlineEditing:e.offlineEditing}),c||(c=f());}catch(u){throw c?.destroy(),d.destroy(),o.destroy(),u}if(!c)throw s.destroy(),d.destroy(),o.destroy(),new Error("WebRTC provider did not initialize");let b$1=c,E=s.session;l=()=>{E.setTransportStatus("error","transport","incomplete chunk");};let h=u=>{E.setTransportStatus(u.connected?"ready":"disconnected",u.connected?void 0:"transport-disconnected",u.connected?void 0:"webrtc disconnected");};b$1.on("status",h);let S=false;return Object.freeze({document:s.document,session:E,ydoc:o,provider:b$1,destroy(){S||(S=true,b$1.off("status",h),s.destroy(),b$1.destroy(),d.destroy(),o.destroy());}})}
|
|
2
2
|
export{W as DEMO_SIGNALING_ENDPOINTS,ee as createWebrtcCollaboration,V as resetDemoSignalingWarningForTests,X as resolveWebrtcRoomPassword,H as warnOnDemoSignalingFallback};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{c as ATTACH_WATCHDOG_MS_FOR_TESTS,d as createDocumentCollaboration,b as readCollaborationDocument}from'./chunk-ABW4JBFQ.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{l as ATTACH_WATCHDOG_MS_FOR_TESTS,m as createDocumentCollaboration,k as readCollaborationDocument}from'./chunk-MTNG3CRI.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkVRIYIY2Y_cjs=require('./chunk-VRIYIY2Y.cjs');Object.defineProperty(exports,"ATTACH_WATCHDOG_MS_FOR_TESTS",{enumerable:true,get:function(){return chunkVRIYIY2Y_cjs.l}});Object.defineProperty(exports,"createDocumentCollaboration",{enumerable:true,get:function(){return chunkVRIYIY2Y_cjs.m}});Object.defineProperty(exports,"readCollaborationDocument",{enumerable:true,get:function(){return chunkVRIYIY2Y_cjs.k}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkL6J5LQXZ_cjs=require('./chunk-L6J5LQXZ.cjs');Object.defineProperty(exports,"ATTACH_WATCHDOG_MS_FOR_TESTS",{enumerable:true,get:function(){return chunkL6J5LQXZ_cjs.c}});Object.defineProperty(exports,"createDocumentCollaboration",{enumerable:true,get:function(){return chunkL6J5LQXZ_cjs.d}});Object.defineProperty(exports,"readCollaborationDocument",{enumerable:true,get:function(){return chunkL6J5LQXZ_cjs.b}});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {b}from'./chunk-6DEUT2RQ.js';export{a as createCollaborationRoomId,b as validateRoomId}from'./chunk-6DEUT2RQ.js';import {d,a}from'./chunk-
|
|
1
|
+
import {b}from'./chunk-6DEUT2RQ.js';export{a as createCollaborationRoomId,b as validateRoomId}from'./chunk-6DEUT2RQ.js';import {d,a}from'./chunk-ABW4JBFQ.js';import*as P from'yjs';import {Awareness}from'y-protocols/awareness';import {HocuspocusProvider}from'@hocuspocus/provider';var g=3e4,S=Symbol("createHocuspocusCollaboration.provider"),O=o=>new HocuspocusProvider({url:o.url,name:o.name,document:o.document,awareness:o.awareness,...o.token!==void 0?{token:o.token}:{}});function F(o,d){return new Promise((c,e)=>{if(o.isSynced){c();return}let n=()=>{clearTimeout(s),o.off("synced",a$1),o.off("authenticationFailed",t);},a$1=()=>{n(),c();},t=r=>{n(),e(new a("initialization-aborted",`authentication failed: ${r.reason}`));},s=setTimeout(()=>{n(),e(new a("initialization-timeout"));},d);o.on("synced",a$1),o.on("authenticationFailed",t);})}async function E(o){let d$1=b(o.roomId),c=o[S]??O,e=new P.Doc,n=new Awareness(e),a=()=>c({url:o.url,name:d$1,document:e,awareness:n,...o.token!==void 0?{token:o.token}:{}}),t=null,s=null;try{o.bootstrap.kind!=="create"&&(t=a(),await F(t,o.syncedTimeoutMs??g)),s=await d({ydoc:e,awareness:n,documentId:d$1,identity:o.identity,bootstrap:o.bootstrap,offlineEditing:o.offlineEditing}),t||(t=a());}catch(i){throw s?.destroy(),t?.destroy(),n.destroy(),e.destroy(),i}let r=t,u=s,l=u.session,f=i=>{l.setTransportStatus(i.status==="connected"?"ready":"disconnected",i.status==="connected"?void 0:"transport-disconnected",i.status==="connected"?void 0:"websocket disconnected");};r.on("status",f);let p=()=>{l.setTransportStatus("error","authentication-failed");};r.on("authenticationFailed",p);let b$1=false;return Object.freeze({document:u.document,session:l,ydoc:e,provider:r,destroy(){b$1||(b$1=true,r.off("status",f),r.off("authenticationFailed",p),u.destroy(),r.destroy(),n.destroy(),e.destroy());}})}export{S as HOCUSPOCUS_PROVIDER_FOR_TESTS,E as createHocuspocusCollaboration};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var chunkLUUFBXJ5_cjs=require('./chunk-LUUFBXJ5.cjs'),
|
|
1
|
+
'use strict';var chunkLUUFBXJ5_cjs=require('./chunk-LUUFBXJ5.cjs'),chunkL6J5LQXZ_cjs=require('./chunk-L6J5LQXZ.cjs'),P=require('yjs'),awareness=require('y-protocols/awareness'),provider=require('@hocuspocus/provider');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var P__namespace=/*#__PURE__*/_interopNamespace(P);var g=3e4,S=Symbol("createHocuspocusCollaboration.provider"),O=o=>new provider.HocuspocusProvider({url:o.url,name:o.name,document:o.document,awareness:o.awareness,...o.token!==void 0?{token:o.token}:{}});function F(o,d){return new Promise((c,e)=>{if(o.isSynced){c();return}let n=()=>{clearTimeout(s),o.off("synced",a),o.off("authenticationFailed",t);},a=()=>{n(),c();},t=r=>{n(),e(new chunkL6J5LQXZ_cjs.a("initialization-aborted",`authentication failed: ${r.reason}`));},s=setTimeout(()=>{n(),e(new chunkL6J5LQXZ_cjs.a("initialization-timeout"));},d);o.on("synced",a),o.on("authenticationFailed",t);})}async function E(o){let d=chunkLUUFBXJ5_cjs.b(o.roomId),c=o[S]??O,e=new P__namespace.Doc,n=new awareness.Awareness(e),a=()=>c({url:o.url,name:d,document:e,awareness:n,...o.token!==void 0?{token:o.token}:{}}),t=null,s=null;try{o.bootstrap.kind!=="create"&&(t=a(),await F(t,o.syncedTimeoutMs??g)),s=await chunkL6J5LQXZ_cjs.d({ydoc:e,awareness:n,documentId:d,identity:o.identity,bootstrap:o.bootstrap,offlineEditing:o.offlineEditing}),t||(t=a());}catch(i){throw s?.destroy(),t?.destroy(),n.destroy(),e.destroy(),i}let r=t,u=s,l=u.session,f=i=>{l.setTransportStatus(i.status==="connected"?"ready":"disconnected",i.status==="connected"?void 0:"transport-disconnected",i.status==="connected"?void 0:"websocket disconnected");};r.on("status",f);let p=()=>{l.setTransportStatus("error","authentication-failed");};r.on("authenticationFailed",p);let b=false;return Object.freeze({document:u.document,session:l,ydoc:e,provider:r,destroy(){b||(b=true,r.off("status",f),r.off("authenticationFailed",p),u.destroy(),r.destroy(),n.destroy(),e.destroy());}})}Object.defineProperty(exports,"createCollaborationRoomId",{enumerable:true,get:function(){return chunkLUUFBXJ5_cjs.a}});Object.defineProperty(exports,"validateRoomId",{enumerable:true,get:function(){return chunkLUUFBXJ5_cjs.b}});exports.HOCUSPOCUS_PROVIDER_FOR_TESTS=S;exports.createHocuspocusCollaboration=E;
|
package/dist/react/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var chunkEMO6YTKO_cjs=require('../chunk-EMO6YTKO.cjs'),chunkGDTCNTK7_cjs=require('../chunk-GDTCNTK7.cjs'),chunkQLZH2Q2C_cjs=require('../chunk-QLZH2Q2C.cjs'),react=require('react'),react$1=require('@docx-editor.dev/react'),jsxRuntime=require('react/jsx-runtime'),reactDom=require('react-dom'),collaboration=require('@docx-editor.dev/core/collaboration'),store=require('@docx-editor.dev/core/store'),editor=require('@docx-editor.dev/core/editor');var rn=new Set(["List","Markers","AddComment","Draft","Balloon"]),an=new Set(["Card","Empty"]);function De(e,t){let r=t==="root"?rn:an,o={},a=[],i=l=>{if(Array.isArray(l)){for(let s of l)i(s);return}if(!react.isValidElement(l)){l!=null&&l!==false&&a.push(l);return}if(l.type===react.Fragment){i(l.props.children);return}let n=l.type.docxReviewPart;n&&r.has(n)?o[n]=l:a.push(l);};return i(e),{parts:o,rest:a}}function at(e,t){if(!t)return e;let r=e.props.className;return react.cloneElement(e,{className:`${t}${r?` ${r}`:""}`})}var sn={scale:96/72,top:0,left:null,compactCardLeft:null},ln=16,ve=300,cn=12,ke=600;function Xt(e,t,r,o,a=false){let[i,l]=react.useState(sn);return react.useEffect(()=>{let n=t.current;if(!e||!n)return;let s=n.offsetParent,d=s?.querySelector(".docx-paginated-surface")??null,f=()=>{l(p=>{let w=d&&s?d.getBoundingClientRect():null,R=w&&s?s.getBoundingClientRect():null,C=w&&R&&s?w.right-R.left-s.clientLeft+s.scrollLeft+ln:null,y={scale:e.getRenderScale(),top:w&&R&&s?w.top-R.top-s.clientTop+s.scrollTop:0,left:C,compactCardLeft:C===null||!s?null:s.scrollLeft+s.clientWidth-C-ve-cn};return p.scale===y.scale&&p.top===y.top&&p.left===y.left&&p.compactCardLeft===y.compactCardLeft?p:y});};f();let u=new ResizeObserver(f);if(s&&u.observe(s),d&&u.observe(d),!a||!s)return ()=>u.disconnect();let m=0,c=()=>{m===0&&(m=requestAnimationFrame(()=>{m=0,f();}));};return s.addEventListener("scroll",c,{passive:true}),()=>{m!==0&&cancelAnimationFrame(m),s.removeEventListener("scroll",c),u.disconnect();}},[e,t,r,o,a]),i}function Jt(e,t,r){let[o,a]=react.useState(null);return react.useEffect(()=>{let i=t.current,l=i?.offsetParent;if(!l)return;let n=0,s=()=>{n=0,a(m=>{let c=l.scrollTop-ke,p=l.scrollTop+l.clientHeight+ke;return m&&m.top===c&&m.bottom===p?m:{top:c,bottom:p}});},d=0,f=()=>{n===0&&(n=requestAnimationFrame(s)),i?.setAttribute("data-scrolling",""),window.clearTimeout(d),d=window.setTimeout(()=>i?.removeAttribute("data-scrolling"),150);};s(),l.addEventListener("scroll",f,{passive:true});let u=new ResizeObserver(f);return u.observe(l),()=>{n!==0&&cancelAnimationFrame(n),window.clearTimeout(d),l.removeEventListener("scroll",f),u.disconnect();}},[e,t,r]),o}function eo(e){let t=react.useRef(new WeakMap),r=react.useRef(new Map),o=react.useRef(null),a=react.useCallback((i,l)=>{let n=r.current.get(l);if(!i){n&&(o.current?.unobserve(n),t.current.delete(n),r.current.delete(l));return}typeof ResizeObserver>"u"||(e(l,i.offsetHeight),o.current??=new ResizeObserver(s=>{for(let d of s){let f=t.current.get(d.target);f&&e(f,d.target.offsetHeight);}}),!(n===i&&t.current.get(i)===l)&&(n&&(o.current.unobserve(n),t.current.delete(n)),t.current.set(i,l),r.current.set(l,i),o.current.observe(i)));},[e]);return react.useEffect(()=>()=>{o.current?.disconnect(),r.current.clear();},[]),a}function pn(e){let t=false;return ()=>{if(!t){if(!react$1.notificationYieldsToTask()){e();return}t=true,setTimeout(()=>{t=false,e();},0);}}}function Te(e){let t=react$1.useDocxEditor();return to(t,e)}function to(e,t){let r=react.useCallback(y=>{if(!e)return ()=>{};let g=false,A=pn(()=>{g||y();}),E=e.on("change",A),h=e.on("selectionChange",A),M=e.on("error",A);return ()=>{g=true,E(),h(),M();}},[e]),o=react.useSyncExternalStore(r,()=>e?`${e.getReviewRevision()}:${e.getEditingMode()}`:"none",()=>"none"),a=react.useMemo(()=>e?e.getReviewItems(t).filter(y=>y.item.kind!=="custom"||y.item.carded):[],[e,o,t]),i=react.useMemo(()=>a.find(y=>y.isActive)?.key??null,[a]),l=react.useCallback((y,g)=>e?e.setActiveReviewItem(y,g).ok:false,[e]),n=react.useCallback(y=>!e||y.kind!=="revision"||y.readOnly?false:e.acceptReviewItem(y.key).ok,[e]),s=react.useCallback(y=>!e||y.kind!=="revision"||y.readOnly?false:e.rejectReviewItem(y.key).ok,[e]),d=react.useCallback(y=>!e||y.kind!=="comment"?false:e.setCommentResolved(y.key,true).ok,[e]),f=react.useCallback(y=>!e||y.kind!=="comment"?false:e.setCommentResolved(y.key,false).ok,[e]),u=e?.getEditingMode()==="viewing"?"the document is open for viewing":null,m=react.useCallback(y=>!e||y.kind==="custom"||y.kind==="revision"&&y.readOnly?false:e.deleteReviewItem(y.key).ok,[e]),c=react.useCallback((y,g,A)=>g.trim().length===0||!e?false:e.replyToReviewItem(y.key,g,A).ok,[e]),p=react.useMemo(()=>e?e.getSelectionPlacement()?.anchorY??null:null,[e,o]),w=react.useCallback((y,g)=>y.trim().length===0||!e?false:e.addComment(y,g).ok,[e]),R=react.useMemo(()=>e?e.isReviewPaneOpen():true,[e,o]),C=react.useCallback(y=>{!e||e.isReviewPaneOpen()===y||e.exec({type:"toggleReviewPane"});},[e]);return react.useMemo(()=>({items:a,activeKey:i,setActive:l,accept:n,reject:s,resolve:d,reopen:f,commentResolutionDisabledReason:u,remove:m,reply:c,selectionAnchorY:p,comment:w,paneOpen:R,setPaneOpen:C,ready:e!==null&&!e.snapshot().isLoading&&e.snapshot().parseError===null}),[a,i,l,n,s,d,f,u,m,c,p,w,R,C,e])}function wn(e,t,r={}){let o=r.gap??8,a=r.scale??1,i=r.defaultHeight??0;return react.useMemo(()=>{let l=new Map,n=Number.NEGATIVE_INFINITY;for(let s of e){let d=s.anchorY===null?Number.isFinite(n)?n:0:Math.max(s.anchorY,n);l.set(s.key,d),n=d+((t.get(s.key)??i)+o)/a;}return l},[e,t,o,a,i])}var st=8;function lt(e,t){return e?.color??`var(--doc-review-author-${t%st})`}function re(e,t,r){return e?{"--doc-review-author-current":lt(t,r)}:{}}function pe(e,t){return (e?.slot??t)%st}function oo(e,t,r,o){let a=react.useRef(new Map);return react.useMemo(()=>{let i=new Map;for(let n of e)i.set(n.author,n);let l=[...t.map(n=>n.author),o?.getConfiguredAuthor()];for(let n of l){if(!n||i.has(n))continue;let s=r.get(n)??0,d=o?.getReviewAuthorStyle(n),f=d?.color??`var(--doc-review-author-${s%st})`,u=a.current.get(n),m=u!==void 0&&u.slot===s&&u.color===f&&u.style===d?u:{author:n,slot:s,color:f,...d?{style:d}:{}};a.current.set(n,m),i.set(n,m);}return i},[e,t,r,o])}var $=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"})}),ro="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",no="M240-400h480v-80H240v80Zm0-120h480v-80H240v80Zm0-120h480v-80H240v80ZM880-80 720-240H160q-33 0-56.5-23.5T80-320v-480q0-33 23.5-56.5T160-880h640q33 0 56.5 23.5T880-800v720ZM160-320h594l46 45v-525H160v480Zm0 0v-480 480Z",bn="M880-80 720-240H160q-33 0-56.5-23.5T80-320v-480q0-33 23.5-56.5T160-880h640q33 0 56.5 23.5T880-800v720ZM160-320h594l46 45v-525H160v480Zm0 0v-480 480Z",we="M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z",Le=()=>jsxRuntime.jsxs("span",{className:"docx-review__resolved-icon",children:[jsxRuntime.jsx("span",{className:"docx-review__resolved-comment",children:$(bn)}),jsxRuntime.jsx("span",{className:"docx-review__resolved-tick",children:$(we)})]}),ao="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",io="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",so="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",Cn="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",gn="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",hn="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",xn="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 lo(e){if(e.kind==="comment")return no;if(e.kind==="custom")return e.item.icon??xn;switch(e.revisionKind){case "insert":case "moveTo":return Cn;case "delete":case "moveFrom":return gn;case "format":return hn;default:return no}}function Pn(e,t){return typeof t!="function"?e:typeof e!="function"?t:r=>{e(r),r.defaultPrevented||t(r);}}function In(e,t){let r={...e,...t};for(let o of Object.keys(e))/^on[A-Z]/.test(o)?r[o]=Pn(t[o],e[o]):o==="className"?r[o]=[e[o],t[o]].filter(Boolean).join(" "):o==="style"&&(r[o]={...e[o],...t[o]});return r}function mo(e){return e==="Enter"||e===" "}function _n(e){return mo(e.key)?(e.preventDefault(),e.stopPropagation(),true):false}function uo(e){return e.type==="button"}function Sn(e,t){return e.type==="a"||t.href!=null}function Mn(e,t,r,o){let a=i=>{typeof r=="function"&&r(i);};return {onClick:i=>{typeof e=="function"&&e(i),i.defaultPrevented||a(i),o&&i.preventDefault();},onKeyDown:i=>{if(typeof t=="function"&&t(i),!mo(i.key))return;i.defaultPrevented||a(i),o&&i.preventDefault();}}}function Q({engineDisabled:e,disabledReason:t,slotProps:r,children:o}){let a=react.Children.only(o);if(!react.isValidElement(a))return null;let i=a.props,l=In(r,i);if(!e){if(!uo(a)){let n=Mn(i.onClick,i.onKeyDown,r.onClick,Sn(a,i));l.onClick=n.onClick,l.onKeyDown=n.onKeyDown;}return react.cloneElement(a,l)}if(uo(a))l.disabled=true,delete l["aria-disabled"];else {delete l.disabled,l["aria-disabled"]=true,l["data-disabled"]="",l.tabIndex=-1,l.href=void 0,l.role===void 0&&(l.role="button");let n=l.onKeyDown;l.onKeyDown=s=>{_n(s)||typeof n=="function"&&n(s);};}return t&&(l.title=t),l.onClick=n=>{n.preventDefault(),n.stopPropagation();},react.cloneElement(a,l)}var po=react.createContext({key:null,open:()=>{},close:()=>{}});function wo({items:e,children:t}){let[r,o]=react.useState(null);react.useEffect(()=>{r!==null&&!e.some(i=>i.key===r&&i.kind==="comment"&&i.resolved)&&o(null);},[e,r]);let a=react.useMemo(()=>({key:r,open:i=>o(i),close:()=>o(null)}),[r]);return jsxRuntime.jsx(po.Provider,{value:a,children:t})}function ct(){return react.useContext(po)}function yo({label:e,statusLabel:t,entryKey:r,onActivate:o,onDeactivate:a,children:i,...l}){let n=ct(),s=react.useRef(null);return react.useEffect(()=>{let d=f=>{let u=s.current;u?.open&&f.target instanceof Node&&!u.contains(f.target)&&(n.close(),a());};return document.addEventListener("pointerdown",d,true),()=>document.removeEventListener("pointerdown",d,true)},[n,a]),jsxRuntime.jsxs("details",{ref:s,...l,open:n.key===r,onToggle:d=>{d.currentTarget.open?(n.open(r),o()):(n.close(),a());},children:[jsxRuntime.jsxs("summary",{className:"docx-review__resolved-toggle","aria-label":e,children:[jsxRuntime.jsx("span",{className:"docx-review__resolved-status",children:t}),Le()]}),i]})}function Ro(e){function t({className:o,asChild:a,hidden:i,children:l,icon:n}){let s=e.useReview(),d=e.useItem(),f=e.useLabel();if(i||!d||d.kind!=="comment"||d.resolved)return null;let u=f("comments.resolve"),m=s.commentResolutionDisabledReason!==null,c=m?f("editingMode.viewingHint"):null,p={type:"button",className:`docx-review__action${o?` ${o}`:""}`,"data-testid":"review-resolve","aria-label":u,title:c??u,disabled:m,onMouseDown:e.guardMousedown,onClick:w=>{w.stopPropagation(),!m&&s.resolve(d);}};return a?jsxRuntime.jsx(Q,{engineDisabled:m,disabledReason:c,slotProps:p,children:l}):jsxRuntime.jsx("button",{...p,children:n??l??$(we)})}t.docxReviewPart="Resolve";function r({className:o,asChild:a,hidden:i,children:l,icon:n}){let s=e.useReview(),d=e.useItem(),f=e.useLabel();if(i||!d||d.kind!=="comment"||!d.resolved)return null;let u=f("comments.reopen"),m=s.commentResolutionDisabledReason!==null,c=m?f("editingMode.viewingHint"):null,p={type:"button",className:`docx-review__action${o?` ${o}`:""}`,"data-testid":"review-reopen","aria-label":u,title:c??u,disabled:m,onMouseDown:e.guardMousedown,onClick:w=>{w.stopPropagation(),!m&&s.reopen(d);}};return a?jsxRuntime.jsx(Q,{engineDisabled:m,disabledReason:c,slotProps:p,children:l}):jsxRuntime.jsx("button",{...p,children:n??l??$(ao)})}return r.docxReviewPart="Reopen",{ReviewResolve:t,ReviewReopen:r}}function go(e){function t({top:o=0,left:a=null,className:i,hidden:l}){let{review:n,endDraft:s,measure:d,readOnly:f,draftAuthor:u,draftAuthorInfo:m,draftAuthorSlot:c}=e.useRail(),p=e.useLabel(),[w,R]=react.useState(""),[C,y]=react.useState(false),g=react.useRef(null),A=react.useId();react.useEffect(()=>{f||g.current?.focus({preventScroll:true});},[]);let E=react.useCallback(()=>{if(f||w.trim().length===0)return;let h=n.comment(w.trim());y(!h),h&&(R(""),s());},[f,w,n,s]);return l?null:jsxRuntime.jsx("div",{className:`docx-review__slot${i?` ${i}`:""}${a===null?"":" docx-review__slot--compact"}`,style:{position:"absolute",top:o,...a===null?{}:{left:a,width:ve}},ref:h=>{d(h,e.composeKey);},children:jsxRuntime.jsx("div",{className:"docx-review__card","data-testid":"review-draft","data-draft":"",...u?{"data-review-author":u,"data-review-author-slot":c}:{},style:re(u??void 0,m,c),children:jsxRuntime.jsxs("form",{className:"docx-review__reply-box",onSubmit:h=>{h.preventDefault(),E();},children:[jsxRuntime.jsx("label",{className:"docx-editor-sr-only",htmlFor:A,children:p("comments.addComment")}),jsxRuntime.jsx("input",{id:A,ref:g,"data-testid":"review-draft-input",className:"docx-review__input",value:w,placeholder:p("comments.addComment"),readOnly:f,...C?{"aria-invalid":true}:{},onChange:h=>{f||(y(false),R(h.target.value));},onKeyDown:h=>{if(h.key==="Escape"){h.preventDefault(),s();return}f||h.key!=="Enter"||(h.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:s,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")})]}),C?jsxRuntime.jsx("span",{className:"docx-review__refused",role:"alert",children:p("review.commentRefused")}):null]})})})}t.docxReviewPart="Draft";function r({className:o,hidden:a,children:i}){let{review:l,readOnly:n}=e.useRail(),s=e.useItem(),d=e.useLabel(),[f,u]=react.useState(""),[m,c]=react.useState(false),p=react.useId(),w=react.useCallback(()=>{if(!s||n||f.trim().length===0)return;let R=l.reply(s,f.trim());c(!R),R&&u("");},[s,n,f,l]);return a||!s||!s.isActive||s.kind==="comment"&&s.resolved?null:i?jsxRuntime.jsx(jsxRuntime.Fragment,{children:i}):jsxRuntime.jsxs("form",{className:`docx-review__reply-box${o?` ${o}`:""}`,onSubmit:R=>{R.preventDefault(),w();},children:[jsxRuntime.jsx("label",{className:"docx-editor-sr-only",htmlFor:p,children:d("comments.replyPlaceholder")}),jsxRuntime.jsx("input",{id:p,"data-testid":"review-reply-input",className:"docx-review__input",value:f,placeholder:d("comments.replyPlaceholder"),readOnly:n,...m?{"aria-invalid":true,"data-refused":""}:{},onChange:R=>{n||(c(false),u(R.target.value));},onClick:R=>R.stopPropagation(),onKeyDown:R=>{n||R.key!=="Enter"||(R.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:R=>{R.stopPropagation(),u(""),c(false),l.setActive(null);},children:d("common.cancel")}),jsxRuntime.jsx("button",{type:"submit","data-testid":"review-reply-submit",className:"docx-review__submit",disabled:n||f.trim().length===0,title:n?d("editingMode.viewingHint"):void 0,children:d("review.reply")})]}),m?jsxRuntime.jsx("span",{className:"docx-review__refused",role:"alert","data-testid":"review-reply-refused",children:d("review.replyRefused")}):null]})}return r.docxReviewPart="Reply",{ReviewDraft:t,ReviewReply:r}}function dt(e,t){if(e==="paragraphMark")return t==="delete"?"revisions.paragraphMarkDeleted":t==="moveFrom"?"revisions.paragraphMarkMovedFrom":t==="moveTo"?"revisions.paragraphMarkMovedTo":"revisions.paragraphMarkInserted";switch(e){case "insert":return "review.inserted";case "delete":return "review.deleted";case "replace":return "review.replaced";case "moveFrom":return "review.movedFrom";case "moveTo":return "review.movedTo";case "format":return "revisions.runPropertiesChanged";default:return "review.structural"}}var Bn=e=>e.isLoading||e.parseError!==null||e.pageSetup==null,zn=e=>e.editingMode==="viewing",ft=react.createContext(null),_=react.createContext(null);function Wn(){return react.useContext(_)}function Gn(e){let{authorInfo:t}=H();return e===void 0?void 0:t.get(e)}var qe="\0compose",Qn=72,Xn=64,Jn=480,er=30,tr=Object.freeze({placement:false});function vt(e,t){return e.kind!=="comment"?false:e.parentId!==void 0?t.has(e.parentId):e.parentRevisionId!==void 0?t.has(e.parentRevisionId):false}function pt(e){return new Set(e.map(t=>t.id))}function Y(e){let t=e.target?.tagName;t==="INPUT"||t==="SELECT"||t==="TEXTAREA"||e.preventDefault();}function H(){let e=react.useContext(ft);return e||or}function q(){let{t:e}=react.useContext(ft)??{},{t}=react$1.useTranslation();return react.useCallback(r=>e?.(r)??t(r),[e,t])}var{ReviewResolve:No,ReviewReopen:Po}=Ro({useReview:()=>H().review,useItem:()=>react.useContext(_),useLabel:q,guardMousedown:Y}),{ReviewDraft:Io,ReviewReply:_o}=go({useRail:H,useItem:()=>react.useContext(_),useLabel:q,guardMousedown:Y,composeKey:qe}),or={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 nr({className:e,furniture:t,asChild:r,hidden:o,children:a,t:i,card:l,preset:n=true,stack:s=true,gap:d=8,filter:f,structural:u=false,formatting:m=false}){let c=react$1.useDocxEditor(),p=react$1.useEditorState(Bn),w=react$1.useEditorState(zn),R=react.useMemo(()=>{let b=[];return u||b.push("structural"),m||b.push("format"),b.length>0?b:void 0},[u,m]),C=react.useMemo(()=>R?{excludeRevisionKinds:R}:void 0,[R]);react.useEffect(()=>(c?.setReviewActivationExclusions(R??null),()=>c?.setReviewActivationExclusions(null)),[c,R]);let y=Te(tr),g=Te(C),A=g.setPaneOpen,{t:E}=react$1.useTranslation(),h=react.useCallback(b=>i?.(b)??E(b),[i,E]),M=react.useRef(null),te=react.useContext(react$1.ReviewRailContext);react.useEffect(()=>te?.register(),[te]);let Z=g.paneOpen,de=react$1.useReviewGutter(),oe=Z&&de.inlineEnd>0&&de.inlineEnd<react$1.REVIEW_PANE_GUTTER,Ne=Z&&!oe,T=react.useMemo(()=>f?g.items.filter(b=>f(b)):g.items,[g.items,f]),K=c?.getConfiguredAuthor()??null,Pe=react.useMemo(()=>{let b=new Map;for(let x of T)x.author&&!b.has(x.author)&&b.set(x.author,b.size);return K&&!b.has(K)&&b.set(K,b.size),b},[T,K]),It=react.useMemo(()=>{let b=new Map;for(let x of T)b.set(x.id,x);return b},[T]),[_t,Yo]=react.useState(()=>new Map),Zo=react.useCallback((b,x)=>{x<=0||Yo(P=>{if(P.get(b)===x)return P;let D=new Map(P);return D.set(b,x),D});},[]),St=eo(Zo),I=Xt(c,M,T,!p&&!o,oe),ue=Jt(c,M,!p&&!o);react.useEffect(()=>{let b=M.current;if(!c||!b)return;let x=P=>{let D=P.target;if(!(D instanceof Node)||b.contains(D))return;let k=b.offsetParent;!k||!k.contains(D)||k.querySelector(".docx-paginated-surface")?.contains(D)||c.setActiveReviewItem(null);};return document.addEventListener("mousedown",x,true),()=>document.removeEventListener("mousedown",x,true)},[c,p,o]);let[V,Xe]=react.useState(null),Je=react.useRef(null),j=react.useCallback(()=>{let b=Je.current;b&&(b.editor.releaseSelection(b.pin),Je.current=null);},[]),Ie=react.useCallback(()=>{if(!c||w)return;let b=c.getSelectionPlacement()?.anchorY??null;if(b===null)return;j();let x=c.retainSelection();x&&(Je.current={editor:c,pin:x},A(true),Xe(b));},[c,w,j,A]);react.useEffect(()=>{if(!(o||w))return te?.registerCommentDraft(Ie)},[Ie,o,w,te]);let Mt=react.useCallback(()=>{j(),Xe(null),c?.focus();},[c,j]);react.useEffect(()=>j,[j]),react.useEffect(()=>{Z||V===null||(j(),Xe(null));},[Z,V,j]);let et=V??g.selectionAnchorY,F=react.useMemo(()=>{let b=pt(T);return T.filter(x=>!vt(x,b))},[T]),Dt=react.useMemo(()=>{if(V===null)return F;let b=F.findIndex(P=>P.anchorY!==null&&P.anchorY>V),x={key:qe,anchorY:V};return b===-1?[...F,x]:[...F.slice(0,b),x,...F.slice(b)]},[F,V]),kt=react.useMemo(()=>{let b=new Map(_t);for(let x of F){if(b.has(x.key))continue;let P=x.text.length+(x.kind==="revision"?x.replacedText?.length??0:0),D=Math.min(6,Math.max(1,Math.ceil(P/36)));b.set(x.key,64+D*20);}return b},[_t,F]),{stacked:tt,collapsedKeys:Tt}=react.useMemo(()=>{let b=I.scale,x=new Map,P=new Set,D=Number.NEGATIVE_INFINITY;for(let k of Dt){let Me=k.anchorY===null?Number.isFinite(D)?D:0:Math.max(k.anchorY,D);x.set(k.key,Me);let Go=k.anchorY===null?0:(Me-k.anchorY)*b,Qo="isActive"in k&&k.isActive,Ft=Go>Jn&&!Qo&&k.key!==qe;Ft&&P.add(k.key);let Xo=Ft?Xn:kt.get(k.key)??Qn;D=Me+(Xo+d)/b;}return {stacked:x,collapsedKeys:P}},[Dt,kt,d,I.scale]),ot=et===null?null:I.top+(oe?et:tt.get(qe)??et)*I.scale,me=l?.className,jo=react$1.useReviewAuthors(),nt=oo(jo,T,Pe,c),Ot=K?Pe.get(K)??0:0,Lt=K?nt.get(K):void 0,Bo=react.useMemo(()=>({t:i,cardClassName:me,readOnly:w,review:{...g,items:T},allItems:y.items,authorSlots:Pe,authorInfo:nt,draftAuthor:K,draftAuthorInfo:Lt,draftAuthorSlot:Ot,byId:It,measure:St,beginDraft:Ie,endDraft:Mt}),[i,me,w,g,y.items,T,Pe,nt,K,Lt,Ot,It,St,Ie,Mt]);if(o||p)return null;let Ht={ref:M,className:`docx-review${e?` ${e}`:""}`,"data-testid":"review-rail","data-count":T.length,"data-open":Ne?"":void 0,"data-compact":oe?"":void 0,role:"complementary","aria-label":h("review.ariaLabel"),onMouseDown:Y,style:I.left===null?void 0:{left:I.left,right:"auto"}},z=typeof a=="function"?{parts:{},rest:a}:De(a,"root"),W=z.parts,fe=(b,x)=>{if(!(b in W))return x;let P=W[b];return !react.isValidElement(P)||!react.isValidElement(x)?P:react.cloneElement(P,{...x.props,...P.props})},$t=jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[n||"AddComment"in W?fe("AddComment",jsxRuntime.jsx(yt,{top:ot,drafting:V!==null})):null,!Z||V===null||ot===null||!n&&!("Draft"in W)?null:fe("Draft",jsxRuntime.jsx(Io,{top:ot,left:oe?I.compactCardLeft:null})),n||"Balloon"in W?fe("Balloon",jsxRuntime.jsx(Rt,{})):null]}),zo=jsxRuntime.jsx(Ke,{stack:s,positions:tt,collapsed:Tt,scale:I.scale,offset:I.top,window:ue,children:z.rest}),qt=jsxRuntime.jsx(wt,{scale:I.scale,offset:I.top,window:ue}),G=oe?F.find(b=>b.key===g.activeKey)??null:null,Kt=G===null?null:G.anchorY!==null?I.top+G.anchorY*I.scale:ue!==null?ue.top+ke+24:null,_e=r?null:z.rest,Se=typeof _e=="function"?null:De(_e,"list"),Ut=typeof _e=="function"?G&&_e(G):Se?.parts.Card&&react.isValidElement(Se.parts.Card)?at(Se.parts.Card,me):n?jsxRuntime.jsx(Ue,{...me?{className:me}:{},children:Se?.rest}):null,Vt=G&&Kt!==null&&I.compactCardLeft!==null&&Ut?jsxRuntime.jsx(_.Provider,{value:G,children:jsxRuntime.jsx("div",{className:"docx-review__slot docx-review__slot--compact","data-testid":"review-compact-card",style:{position:"absolute",top:Kt,left:I.compactCardLeft,width:ve},children:Ut})}):null,Wo=Ne?n||"List"in W?fe("List",zo):typeof z.rest=="function"?null:z.rest:n||"Markers"in W?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[fe("Markers",qt),Vt]}):typeof z.rest=="function"?null:z.rest;return jsxRuntime.jsx(wo,{items:T,children:jsxRuntime.jsx(ft.Provider,{value:Bo,children:r&&react.isValidElement(a)?jsxRuntime.jsx(react$1.Slot,{...Ht,children:react.cloneElement(a,void 0,a.props.children,n?Ne?jsxRuntime.jsx(Ke,{stack:s,positions:tt,collapsed:Tt,scale:I.scale,offset:I.top,window:ue}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[qt,Vt]}):null,$t)}):jsxRuntime.jsxs("aside",{...Ht,children:[Ne&&t!==void 0?jsxRuntime.jsx("div",{className:"docx-review__furniture","data-testid":"review-furniture",children:t}):null,Wo,$t]})})})}function Ke({stack:e=true,positions:t,collapsed:r,scale:o=1,offset:a=0,window:i=null,children:l,className:n,hidden:s}){let{review:d,measure:f,cardClassName:u}=H();if(s)return null;let m=typeof l=="function"?null:De(l,"list"),c=pt(d.items),p=d.items.filter(w=>!vt(w,c));return p.length===0?typeof l=="function"?null:m?.parts.Empty??jsxRuntime.jsx(bt,{}):jsxRuntime.jsx("div",{className:`docx-review__list${n?` ${n}`:""}`,children:p.map(w=>{let R=e?t?.get(w.key)??w.anchorY:w.anchorY,C=R==null?null:a+R*o;if(C!==null&&i&&(C<i.top||C>i.bottom))return null;let y=C===null?{}:{position:"absolute",top:C};return jsxRuntime.jsx(_.Provider,{value:w,children:jsxRuntime.jsx("div",{className:"docx-review__slot",style:y,...r?.has(w.key)?{"data-collapsed":""}:{},ref:g=>{f(g,w.key);},children:typeof l=="function"?l(w):m?.parts.Card&&react.isValidElement(m.parts.Card)?at(m.parts.Card,u):jsxRuntime.jsx(Ue,{...u?{className:u}:{},children:m?.rest})})},w.key)})})}Ke.docxReviewPart="List";function wt({scale:e=1,offset:t=0,window:r=null,className:o,hidden:a,icon:i}){let{review:l,authorSlots:n,authorInfo:s}=H(),d=ct(),f=q(),{roots:u,stackedTops:m}=react.useMemo(()=>{let c=pt(l.items),p=l.items.filter(C=>!vt(C,c)),w=new Map,R=Number.NEGATIVE_INFINITY;for(let C of p){if(C.anchorY===null)continue;let y=Math.max(t+C.anchorY*e,R);w.set(C.key,y),R=y+er;}return {roots:p,stackedTops:w}},[l.items,t,e]);return a?null:jsxRuntime.jsx("div",{className:`docx-review__markers${o?` ${o}`:""}`,children:u.map(c=>{let p=m.get(c.key);return p===void 0||r&&(p<r.top||p>r.bottom)?null:jsxRuntime.jsx("button",{type:"button",className:"docx-review__marker","data-testid":"review-marker","data-kind":c.kind==="revision"?c.revisionKind:c.kind,...c.author?{"data-review-author":c.author,"data-review-author-slot":pe(s.get(c.author),n.get(c.author)??0)}:{},style:{position:"absolute",top:p,...c.author?{"--doc-review-author-current":lt(s.get(c.author),n.get(c.author)??0)}:{}},title:c.author?`${c.author}: ${c.text}`:c.text,"aria-label":`${f("review.showPane")}: ${c.author?`${c.author}. `:""}${c.text}`,onMouseDown:Y,onClick:()=>{c.kind==="comment"&&c.resolved&&d.open(c.key),l.setPaneOpen(true),l.setActive(c.key);},children:(typeof i=="function"?i(c):i)??(c.kind==="comment"&&c.resolved?Le():$(lo(c)))},c.key)})})}wt.docxReviewPart="Markers";function yt({top:e=null,drafting:t=false,className:r,hidden:o,children:a}){let{beginDraft:i,readOnly:l}=H(),n=q();if(o||t||e===null||l)return null;let s={type:"button",className:`docx-review__add${r?` ${r}`:""}`,"data-testid":"review-add-comment",style:{position:"absolute",top:e},"aria-label":n("common.comment"),title:n("common.comment"),onMouseDown:Y,onClick:i};return a?jsxRuntime.jsx(react$1.Slot,{...s,children:a}):jsxRuntime.jsx("button",{...s,children:$(ro)})}yt.docxReviewPart="AddComment";function Rt({className:e,hidden:t}){let{review:r,allItems:o,authorSlots:a,authorInfo:i}=H(),l=q(),n=react.useRef(null),[s,d]=react.useState(null),f=react.useRef(false);f.current=s!==null,react.useEffect(()=>{let w=n.current,R=w?.closest(".docx-review"),C=R?.closest(".docx-editor__scroll-container")??R?.offsetParent;if(!w||!R||!C)return;let y=(A,E)=>{let h=R.getBoundingClientRect(),M=A.getBoundingClientRect(),te=A.ownerDocument.defaultView?.innerHeight??1/0,Z=Number(A.dataset.start),de=Number(A.dataset.end);d({revisionId:A.dataset.revisionId,author:A.dataset.reviewAuthor??"",...A.dataset.revisionDate!==void 0?{date:A.dataset.revisionDate}:{},...A.dataset.revisionKind!==void 0?{kind:A.dataset.revisionKind}:{},structuralSite:E,...A.dataset.paragraphId!==void 0?{paragraphId:A.dataset.paragraphId}:{},...Number.isFinite(Z)?{start:Z}:{},...Number.isFinite(de)?{end:de}:{},left:M.left-h.left,top:M.top-h.top,bottom:M.bottom-h.top,above:M.bottom+220>te});},g=A=>{let E=A.target;if(!(E instanceof Element)||w.contains(E))return;let h=E.closest("[data-revision-id]");if(h instanceof HTMLElement&&C.contains(h)){let M=h.classList.contains("docx-table-row--revision");if(h.dataset.revisionKind==="format"||M){y(h,M);return}}f.current&&d(null);};return C.addEventListener("pointerdown",g,true),C.addEventListener("mousedown",g,true),()=>{C.removeEventListener("pointerdown",g,true),C.removeEventListener("mousedown",g,true);}},[]);let u=react.useMemo(()=>{if(!s)return null;let w=null,R=false,C=null,y=false,g=null,A=false;for(let E of o)if(!(E.kind!=="revision"||E.item.kind!=="revision")){for(let h of E.item.addresses)if(h.id===s.revisionId){if(h.author===s.author){if(h.date===s.date)return E;w===null?w=E:w!==E&&(R=true);}C===null?C=E:C!==E&&(y=true);}if(s.paragraphId!==void 0&&s.start!==void 0&&s.end!==void 0&&(E.revisionKind==="format"||E.revisionKind==="structural")){for(let h of E.item.ranges)if(h.start.paragraphId===s.paragraphId&&h.start.offset<s.end&&h.end.offset>s.start){g===null?g=E:g!==E&&(A=true);break}}}return w!==null&&!R?w:C!==null&&!y?C:g!==null&&!A?g:null},[o,s]),m=u&&(u.revisionKind==="format"||u.revisionKind==="structural")?u:null,c=react.useRef(false);if(react.useEffect(()=>{if(m){c.current=true;return}c.current&&(c.current=false,d(null));},[m]),t)return null;let p=s?.kind==="format"?"format":"structural";return jsxRuntime.jsx("div",{ref:n,className:`docx-review__balloon-root${e?` ${e}`:""}`,children:s===null?null:jsxRuntime.jsx("div",{className:"docx-review__balloon","data-testid":"review-balloon",style:{left:s.left,top:s.above?s.top-6:s.bottom+6,transform:s.above?"translateY(-100%)":void 0},onMouseDown:Y,children:m?jsxRuntime.jsx(_.Provider,{value:m,children:jsxRuntime.jsxs("div",{className:"docx-review__card","data-testid":"review-balloon-card","data-kind":m.revisionKind??"revision",...m.author?{"data-review-author":m.author,"data-review-author-slot":pe(i.get(m.author),a.get(m.author)??0)}:{},style:re(m.author,i.get(m.author),a.get(m.author)??0),onClick:()=>r.setActive(m.key),children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[jsxRuntime.jsx(be,{}),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[jsxRuntime.jsx(Ce,{}),jsxRuntime.jsx(ge,{})]}),m.kind==="revision"&&!m.readOnly?jsxRuntime.jsxs("div",{className:"docx-review__actions",children:[jsxRuntime.jsx(Ve,{}),jsxRuntime.jsx(Fe,{})]}):null]}),jsxRuntime.jsx(he,{})]})}):jsxRuntime.jsxs("div",{className:"docx-review__card","data-testid":"review-balloon-card","data-kind":p,...s.author?{"data-review-author":s.author,"data-review-author-slot":pe(i.get(s.author),a.get(s.author)??0)}:{},style:re(s.author,i.get(s.author),a.get(s.author)??0),children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[jsxRuntime.jsx("span",{className:"docx-review__avatar","aria-hidden":"true",children:rr(s.author)}),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[jsxRuntime.jsx("span",{className:"docx-review__author",children:s.author||l("comments.unknown")}),s.date?jsxRuntime.jsx(ar,{raw:s.date}):null]})]}),jsxRuntime.jsx("div",{className:"docx-review__summary",children:jsxRuntime.jsx("span",{className:"docx-review__label","data-kind":p,children:l(dt(p))})})]})})})}Rt.docxReviewPart="Balloon";function rr(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"?":t.slice(0,2).map(r=>r[0].toUpperCase()).join("")}function ar({raw:e}){let t=new Date(e);return Number.isNaN(t.getTime())?null:jsxRuntime.jsx("time",{className:"docx-review__time",dateTime:e,children:So.format(t)})}function bt({className:e,hidden:t,children:r}){let o=q();return t?null:jsxRuntime.jsx("div",{className:`docx-review__empty${e?` ${e}`:""}`,"data-testid":"review-empty",children:r??o("review.empty")})}bt.docxReviewPart="Empty";function Ue({className:e,asChild:t,hidden:r,children:o}){let{review:a,authorSlots:i,authorInfo:l}=H(),n=react.useContext(_),s=react.useId(),d=q();if(r||!n)return null;let f=i.get(n.author)??0,u=!t&&n.kind==="comment"&&n.resolved,m={className:`docx-review__card${e?` ${e}`:""}`,"data-testid":"review-card",...u?{}:{"aria-labelledby":`${s}-author ${s}-summary`},"data-kind":n.kind==="revision"?n.revisionKind??"revision":n.kind,...n.author?{"data-review-author":n.author,"data-review-author-slot":pe(l.get(n.author),f)}:{},...n.kind==="custom"&&n.item.kind==="custom"?{"data-node-name":n.item.name}:{},...n.isActive?{"data-active":""}:{},...n.kind==="comment"&&n.resolved?{"data-resolved":""}:{},...u?{"data-resolved-miniature":""}:{},style:re(n.author,l.get(n.author),f),...u?{}:{tabIndex:0,role:"button"},id:s,...u?{}:{onMouseDown:c=>{c.target?.closest("[data-review-selectable]")||c.currentTarget.focus({preventScroll:true});},onClick:()=>a.setActive(n.key),onKeyDown:c=>{c.target===c.currentTarget&&(c.key!=="Enter"&&c.key!==" "||(c.preventDefault(),a.setActive(n.key)));}}};return t?jsxRuntime.jsx(react$1.Slot,{...m,children:o}):u?jsxRuntime.jsx(yo,{...m,label:d("review.showResolvedComment"),statusLabel:d("review.resolved"),entryKey:n.key,onActivate:()=>a.setActive(n.key),onDeactivate:()=>a.setActive(null),children:jsxRuntime.jsx(Ao,{children:o})}):jsxRuntime.jsx("div",{...m,children:jsxRuntime.jsx(Ao,{children:o})})}Ue.docxReviewPart="Card";function Ao({children:e}){let t=react.useContext(_),r=react.useMemo(()=>ir(e),[e]),o=(i,l)=>i in r?r[i]:l;if(!t)return null;if(t.kind==="custom"&&t.item.kind==="custom"){let i=t.item;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[o("Avatar",null),jsxRuntime.jsx("div",{className:"docx-review__meta",children:o("Author",jsxRuntime.jsx("span",{className:"docx-review__author","data-testid":"review-custom-title",children:i.title}))})]}),o("Summary",i.detail?jsxRuntime.jsx("div",{className:"docx-review__summary","data-testid":"review-summary","data-review-selectable":"",children:jsxRuntime.jsx("span",{className:"docx-review__text",children:i.detail})}):null),r.__extra]})}let a=t.kind==="revision"&&!t.readOnly;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[o("Avatar",jsxRuntime.jsx(be,{})),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[o("Author",jsxRuntime.jsx(Ce,{})),o("Time",jsxRuntime.jsx(ge,{}))]}),a||t.kind==="comment"?jsxRuntime.jsxs("div",{className:"docx-review__actions",children:[o("Accept",jsxRuntime.jsx(Ve,{})),o("Reject",jsxRuntime.jsx(Fe,{})),o("Resolve",jsxRuntime.jsx(No,{})),o("Reopen",jsxRuntime.jsx(Po,{})),o("Delete",jsxRuntime.jsx(Ye,{}))]}):null]}),o("Summary",jsxRuntime.jsx(he,{})),o("Replies",jsxRuntime.jsx(Ct,{})),o("Reply",jsxRuntime.jsx(_o,{})),r.__extra]})}function ir(e){let t={},r=[],o=a=>{if(Array.isArray(a)){a.forEach(o);return}if(!a||typeof a!="object"||!("type"in a)){a&&r.push(a);return}if(a.type===react.Fragment){o(a.props.children);return}let i=a.type.docxReviewPart;i?t[i]=a:r.push(a);};return o(e),r.length>0&&(t.__extra=r),t}function be({className:e,asChild:t,hidden:r,children:o}){let{authorInfo:a}=H(),i=react.useContext(_);if(r||!i||o===void 0&&!i.initials)return null;let l={className:`docx-review__avatar${e?` ${e}`:""}`,"data-testid":"review-avatar","aria-hidden":true};if(t)return jsxRuntime.jsx(react$1.Slot,{...l,children:o});let n=a.get(i.author)?.style?.avatarUrl,s=o??(n?jsxRuntime.jsx("img",{className:"docx-review__avatar-img",src:n,alt:"",loading:"lazy",decoding:"async",referrerPolicy:"no-referrer"}):void 0)??i.initials;return jsxRuntime.jsx("span",{...l,children:s})}be.docxReviewPart="Avatar";function Ce({className:e,asChild:t,hidden:r,children:o}){let a=react.useContext(_),i=q();if(r||!a)return null;let l=a.author||i("comments.unknown"),n={className:`docx-review__author${e?` ${e}`:""}`,"data-testid":"review-author"};return t?jsxRuntime.jsx(react$1.Slot,{...n,children:o}):jsxRuntime.jsx("span",{...n,children:o??l})}Ce.docxReviewPart="Author";function ge({className:e,asChild:t,hidden:r,children:o}){let a=react.useContext(_);if(r||!a)return null;let i=a.date;if(!i)return null;let l=new Date(i);if(Number.isNaN(l.getTime()))return null;let n={className:`docx-review__time${e?` ${e}`:""}`,"data-testid":"review-time",dateTime:i};return t?jsxRuntime.jsx(react$1.Slot,{...n,children:o}):jsxRuntime.jsx("time",{...n,children:o??So.format(l)})}ge.docxReviewPart="Time";var So=new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});function he({className:e,asChild:t,hidden:r,children:o}){let a=react.useContext(_),i=q();if(r||!a)return null;let l=a.text,n=a.kind!=="revision"?null:i(dt(a.revisionKind,a.item.markDirection)),s=a.kind==="revision"&&a.revisionKind==="replace",d={className:`docx-review__summary${e?` ${e}`:""}`,"data-testid":"review-summary","data-review-selectable":""};return t?jsxRuntime.jsx(react$1.Slot,{...d,children:o}):jsxRuntime.jsx("div",{...d,children:o??(s?jsxRuntime.jsxs("span",{className:"docx-review__text",children:[i("review.replaced")," ",jsxRuntime.jsxs("span",{className:"docx-review__removed",children:['"',a.replacedText,'"']})," ",i("review.replacedWith")," ",jsxRuntime.jsxs("span",{className:"docx-review__added",children:['"',l,'"']})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[n?jsxRuntime.jsx("span",{className:"docx-review__label","data-kind":a.kind==="revision"?a.revisionKind:"revision",children:n}):null,l?jsxRuntime.jsx("span",{className:"docx-review__text",children:l}):null]}))})}he.docxReviewPart="Summary";function Ve({className:e,asChild:t,hidden:r,children:o,icon:a}){let{readOnly:i,review:l}=H(),n=react.useContext(_),s=q();if(r||!n||n.kind!=="revision"||n.readOnly)return null;let d=s("review.accept"),f=i?s("editingMode.viewingHint"):null,u={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-accept","aria-label":d,title:f??d,disabled:i,onMouseDown:Y,onClick:m=>{m.stopPropagation(),!i&&l.accept(n);}};return t?jsxRuntime.jsx(Q,{engineDisabled:i,disabledReason:f,slotProps:u,children:o}):jsxRuntime.jsx("button",{...u,children:a??o??$(we)})}Ve.docxReviewPart="Accept";function Fe({className:e,asChild:t,hidden:r,children:o,icon:a}){let{readOnly:i,review:l}=H(),n=react.useContext(_),s=q();if(r||!n||n.kind!=="revision"||n.readOnly)return null;let d=s("review.reject"),f=i?s("editingMode.viewingHint"):null,u={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-reject","aria-label":d,title:f??d,disabled:i,onMouseDown:Y,onClick:m=>{m.stopPropagation(),!i&&l.reject(n);}};return t?jsxRuntime.jsx(Q,{engineDisabled:i,disabledReason:f,slotProps:u,children:o}):jsxRuntime.jsx("button",{...u,children:a??o??$(io)})}Fe.docxReviewPart="Reject";function Ye({className:e,asChild:t,hidden:r,children:o,icon:a}){let{readOnly:i,review:l}=H(),n=react.useContext(_),{t:s}=react$1.useTranslation();if(r||!n||n.kind==="custom"||n.kind==="revision"&&n.readOnly)return null;let d=n.kind==="comment"?s("review.deleteComment"):s("review.discardChange"),f=i?s("editingMode.viewingHint"):null,u={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-delete","aria-label":d,title:f??d,disabled:i,onMouseDown:Y,onClick:m=>{m.stopPropagation(),!i&&l.remove(n);}};return t?jsxRuntime.jsx(Q,{engineDisabled:i,disabledReason:f,slotProps:u,children:o}):jsxRuntime.jsx("button",{...u,children:a??o??$(so)})}Ye.docxReviewPart="Delete";function Ct({className:e,hidden:t}){let{byId:r}=H(),o=react.useContext(_);if(t||!o||o.kind==="custom")return null;let a=o.replyIds.map(i=>r.get(i)).filter(i=>i!==void 0);return a.length===0?null:jsxRuntime.jsx("ol",{className:`docx-review__replies${e?` ${e}`:""}`,children:a.map(i=>jsxRuntime.jsx(_.Provider,{value:i,children:jsxRuntime.jsxs("li",{className:"docx-review__reply","data-testid":"review-reply",children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[jsxRuntime.jsx(be,{}),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[jsxRuntime.jsx(Ce,{}),jsxRuntime.jsx(ge,{})]}),jsxRuntime.jsx("div",{className:"docx-review__actions",children:jsxRuntime.jsx(Ye,{})})]}),jsxRuntime.jsx(he,{})]})},i.key))})}Ct.docxReviewPart="Replies";var sr=Object.assign(nr,{List:Ke,Empty:bt,Card:Ue,Avatar:be,Author:Ce,Time:ge,Summary:he,Accept:Ve,Reject:Fe,Resolve:No,Reopen:Po,Delete:Ye,Replies:Ct,Reply:_o,Markers:wt,AddComment:yt,Draft:Io,Balloon:Rt});var xe=8;function Mo(e){let t=/^var\(--doc-review-author-(\d{1,2})\)$/.exec(e);return t?Number(t[1])%xe:null}function je(e,t,r,o){let a=new Map(e.map(n=>[n.author,n])),i=new Map,l=new Map;for(let n of t){if(l.has(n.actorId))continue;let s=collaboration.safeParticipantColor(o?.(n.name));if(s!==void 0){l.set(n.actorId,{color:s,slot:Mo(s)});continue}let d=collaboration.safeParticipantColor(n.color);if(d!==void 0){l.set(n.actorId,{color:d,slot:null});continue}let f=a.get(n.name),u=collaboration.safeParticipantColor(r?.(n.name));if(u!==void 0){l.set(n.actorId,{color:u,slot:Mo(u)??(f?f.slot%xe:null)});continue}if(f!==void 0){let c=f.slot%xe;l.set(n.actorId,{color:collaboration.safeParticipantColor(f.color)??`var(--doc-review-author-${c})`,slot:c});continue}let m=i.get(n.name);m===void 0&&(m=e.length+i.size,i.set(n.name,m)),l.set(n.actorId,{color:`var(--doc-review-author-${m%xe})`,slot:m%xe});}return l}function gt(e,t,r,o){return je(e,[t],r,o).get(t.actorId)}function ht(e){let t=e.trim().split(/\s+/,2),r="";for(let o of t){let a=[...o][0];a!==void 0&&(r+=a.toUpperCase());}return r}function Do(e){return [...e].sort((t,r)=>{if(t.isLocal!==r.isLocal)return t.isLocal?-1:1;let o=t.name.localeCompare(r.name);return o!==0?o:t.actorId<r.actorId?-1:t.actorId>r.actorId?1:0})}function Be(e,t,r){for(let o of e)if(o.author===t)return o.style?.avatarUrl;return r?.(t)?.avatarUrl}var dr=e=>e.collaborationStatus;function J(){let e=react$1.useDocxEditor();return react$1.useEditorState(dr),e?.collaborationSession()??null}var xt=Object.freeze([]);function fr(e,t){if(e===t)return true;if(e.length!==t.length)return false;for(let r=0;r<e.length;r+=1){let o=e[r],a=t[r];if(o.actorId!==a.actorId||o.name!==a.name||o.color!==a.color||o.role!==a.role||o.isLocal!==a.isLocal)return false}return true}function ko(e,t){if(!e)return t.current=xt,xt;let r=e.participants();return fr(t.current,r)?t.current:(t.current=r,r)}function ze(e){let t=J(),r=e===void 0?t:e,o=react.useRef(xt);return react.useSyncExternalStore(a=>r?.subscribeParticipants(()=>a())??(()=>{}),()=>ko(r,o),()=>ko(r,o))}var To=react.createContext(null);function hr(e){return {"--doc-collaboration-accent":e.color}}function Oo(e){return e!==void 0?{avatarUrl:e}:{}}function Lo({participant:e,className:t,children:r}){let o=react$1.useDocxEditor(),a=react$1.useReviewAuthors(),l=react.useContext(To)?.get(e.actorId)??gt(a,e,o?s=>o.presenceColorFor(s):void 0,o?s=>o.getReviewAuthorStyle(s)?.color:void 0),n=xr(e.name);return jsxRuntime.jsx("span",{className:`docx-collaboration-avatar${t?` ${t}`:""}`,"data-collaboration-avatar":"",...e.isLocal?{"data-local":""}:{},...l.slot!==null?{"data-collaboration-author-slot":l.slot}:{},title:e.name,role:"img","aria-label":e.name,style:hr(l),children:r??(n!==void 0?jsxRuntime.jsx("img",{className:"docx-collaboration-avatar__image",src:n,alt:""}):ht(e.name))})}function xr(e){let t=react$1.useDocxEditor(),r=react$1.useReviewAuthors();return Be(r,e,t?o=>t.getReviewAuthorStyle(o):void 0)}function Ar({session:e,max:t,className:r,children:o}){let a=react$1.useDocxEditor(),i=ze(e),l=react$1.useReviewAuthors(),{t:n}=react$1.useTranslation(),s=react.useMemo(()=>je(l,i,a?p=>a.presenceColorFor(p):void 0,a?p=>a.getReviewAuthorStyle(p)?.color:void 0),[l,i,a]),d=react.useMemo(()=>{let p=a?R=>a.getReviewAuthorStyle(R):void 0,w=new Map;for(let R of i){if(w.has(R.name))continue;let C=Be(l,R.name,p);C!==void 0&&w.set(R.name,C);}return w},[a,i,l]),f=react.useMemo(()=>Do(i),[i]);if(f.length===0)return null;let u=t===void 0?f:f.slice(0,Math.max(0,t)),m=f.length-u.length,c=n("collaboration.moreParticipants",{count:m});return jsxRuntime.jsxs("span",{className:`docx-collaboration-avatars${r?` ${r}`:""}`,"data-collaboration-avatars":"",role:"group","aria-label":n("collaboration.participants"),children:[jsxRuntime.jsx(To.Provider,{value:s,children:u.map(p=>o?jsxRuntime.jsx(react.Fragment,{children:o({participant:p,color:s.get(p.actorId).color,initials:ht(p.name),...Oo(d.get(p.name))})},p.actorId):jsxRuntime.jsx(Lo,{participant:p},p.actorId))}),m>0?jsxRuntime.jsx("span",{className:"docx-collaboration-avatar","data-collaboration-avatar":"","data-overflow":"",title:c,role:"img","aria-label":c,children:`+${m}`}):null]})}var We=Object.freeze([]);function Er(){return We}function Nr(){let e=react.useRef(null);if(e.current===null){let t=We,r=false,o=new Set;e.current={subscribe:a=>(o.add(a),()=>o.delete(a)),read:()=>t,write:a=>{t=a.length===0?We:a,!r&&(r=true,queueMicrotask(()=>{r=false;for(let i of [...o])i();}));}};}return e.current}function Pr({session:e,children:t}){let r=react$1.useDocxEditor(),o=J(),a=e===void 0?o:e,i=ze(a),l=react$1.useReviewAuthors(),n=Nr(),s=react.useSyncExternalStore(n.subscribe,n.read,Er);if(react.useEffect(()=>{if(!(!r||!a))return r.setRemoteCaretLabelHost({publish:n.write}),()=>{r.setRemoteCaretLabelHost(null),n.write(We);}},[r,a,n]),s.length===0)return null;let d=je(l,i);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:s.map(f=>{let{selection:u}=f,m=i.find(w=>w.actorId===u.actorId)??null,c=f.element.style.getPropertyValue("--doc-remote-color"),p=c!==""?c:d.get(u.actorId)?.color??gt(l,{actorId:u.actorId,name:u.name,...u.color!==void 0?{color:u.color}:{},isLocal:false}).color;return reactDom.createPortal(t?t({selection:u,participant:m,color:p,...Oo(Be(l,u.name,r?w=>r.getReviewAuthorStyle(w):void 0))}):u.name,f.element,u.actorId)})})}var Ir=Object.freeze({CaretLabels:Pr,Avatars:Ar,Avatar:Lo});function Ae(e){let t=react$1.useDocxEditor();return react.useMemo(()=>e||(t?.getCustomNodeDefinitions()??[]).filter(chunkEMO6YTKO_cjs.j),[e,t])}var Or=".docx-content-control-boundary";function le(e,t){let{node:r,definition:o,controlId:a}=e,i=a?t?.getReviewItems().find(s=>s.kind==="custom"&&s.item.id===a):void 0;if(i&&i.kind==="custom"){let s=i.item;return {...r,attrs:s.attrs,text:s.text,...s.data===void 0?{}:{data:s.data},...a?{nodeId:a}:{}}}let l=a?Lr(t,a,o):void 0,n=o.fromDocx?o.fromDocx({attrs:r.attrs,text:"",...l===void 0?{}:{data:l}}):r.attrs;return n===null?null:{...r,attrs:n,...l===void 0?{}:{data:l},...a?{nodeId:a}:{}}}function Lr(e,t,r){let o=e?.surface;if(!o)return;let a=editor.partOfNodeId(o.session,t),i=store.customNodePayloadsByControl(o.session.currentPackage(),(a??o.session.part()).name,o.session.part().name).get(t);if(!i)return;let l=chunkEMO6YTKO_cjs.e(r.schema,i.data);return l.ok?l.value:void 0}function ce(e,t){let r=e?.closest?.(Or),o=r?.closest(".docx-content-control-chrome"),a=o?.getAttribute("data-tag"),i=a?chunkEMO6YTKO_cjs.c(a):null;if(!r||!i||!a)return null;let l=t.find(n=>n.tagPrefix===i.prefix&&n.name===i.name);return l?{node:{name:i.name,attrs:i.attrs,tag:a,rect:r.getBoundingClientRect()},definition:l,controlId:o?.getAttribute("data-docx-content-control")??null}:null}var Et=".docx-content-control-boundary",$r=e=>{if(!chunkEMO6YTKO_cjs.k.test(e.tagPrefix)||!chunkEMO6YTKO_cjs.k.test(e.name))return [];let t=`${e.tagPrefix}:${e.name}`;return [`.docx-content-control-chrome[data-tag="${t}"]`,`.docx-content-control-chrome[data-tag^="${t}?"]`]};function qr(e){let{onNodeClick:t,onNodeHover:r}=e,o=react$1.useDocxEditor(),a=Ae(e.nodes);return react.useEffect(()=>{let i=document.createElement("style"),l=[];for(let n of a){let s=$r(n);if(s.length===0)continue;let d=n.chrome?.color!==void 0&&CSS.supports("color",n.chrome.color)?n.chrome.color:"var(--doc-accent)";l.push(`${s.map(f=>`${f} ${Et}`).join(", ")} {`," pointer-events: auto !important;"," opacity: 1;"," border: none;",` background: color-mix(in srgb, ${d} 12%, transparent);`," border-radius: 6px;"," cursor: default;","}");}return i.textContent=l.join(`
|
|
2
|
-
`),document.head.append(i),()=>i.remove()},[a]),react.useEffect(()=>{let i=null,l=null,n=u=>ce(document.elementFromPoint(u.clientX,u.clientY),a),s=u=>{let m=u.button===0?n(u):null;i=m?.controlId??null,l=m?.node.tag??null;},d=u=>{let m=i,c=l;if(i=null,l=null,c===null)return;let p=n(u);if(!p||p.node.tag!==c||m!==null&&p.controlId!==m)return;let w=le(p,o);w&&(p.definition.onClick?.(w),t?.(w));},f=u=>{let m=ce(u.target,a);if(!m||u.relatedTarget?.closest?.(Et)===u.target.closest(Et))return;let p=le(m,o);p&&(m.definition.onHover?.(p),r?.(p));};return document.addEventListener("pointerdown",s,true),document.addEventListener("pointerup",d,true),document.addEventListener("mouseover",f),()=>{document.removeEventListener("pointerdown",s,true),document.removeEventListener("pointerup",d,true),document.removeEventListener("mouseover",f);}},[a,o,t,r]),null}var
|
|
1
|
+
'use strict';var chunkEMO6YTKO_cjs=require('../chunk-EMO6YTKO.cjs'),chunkGDTCNTK7_cjs=require('../chunk-GDTCNTK7.cjs'),chunkQLZH2Q2C_cjs=require('../chunk-QLZH2Q2C.cjs'),react=require('react'),react$1=require('@docx-editor.dev/react'),jsxRuntime=require('react/jsx-runtime'),reactDom=require('react-dom'),collaboration=require('@docx-editor.dev/core/collaboration'),store=require('@docx-editor.dev/core/store'),editor=require('@docx-editor.dev/core/editor');var rn=new Set(["List","Markers","AddComment","Draft","Balloon"]),an=new Set(["Card","Empty"]);function De(e,t){let r=t==="root"?rn:an,o={},a=[],i=l=>{if(Array.isArray(l)){for(let s of l)i(s);return}if(!react.isValidElement(l)){l!=null&&l!==false&&a.push(l);return}if(l.type===react.Fragment){i(l.props.children);return}let n=l.type.docxReviewPart;n&&r.has(n)?o[n]=l:a.push(l);};return i(e),{parts:o,rest:a}}function at(e,t){if(!t)return e;let r=e.props.className;return react.cloneElement(e,{className:`${t}${r?` ${r}`:""}`})}var sn={scale:96/72,top:0,left:null,compactCardLeft:null},ln=16,ve=300,cn=12,ke=600;function Jt(e,t,r,o,a=false){let[i,l]=react.useState(sn);return react.useEffect(()=>{let n=t.current;if(!e||!n)return;let s=n.offsetParent,d=s?.querySelector(".docx-paginated-surface")??null,f=()=>{l(p=>{let w=d&&s?d.getBoundingClientRect():null,R=w&&s?s.getBoundingClientRect():null,C=w&&R&&s?w.right-R.left-s.clientLeft+s.scrollLeft+ln:null,y={scale:e.getRenderScale(),top:w&&R&&s?w.top-R.top-s.clientTop+s.scrollTop:0,left:C,compactCardLeft:C===null||!s?null:s.scrollLeft+s.clientWidth-C-ve-cn};return p.scale===y.scale&&p.top===y.top&&p.left===y.left&&p.compactCardLeft===y.compactCardLeft?p:y});};f();let u=new ResizeObserver(f);if(s&&u.observe(s),d&&u.observe(d),!a||!s)return ()=>u.disconnect();let m=0,c=()=>{m===0&&(m=requestAnimationFrame(()=>{m=0,f();}));};return s.addEventListener("scroll",c,{passive:true}),()=>{m!==0&&cancelAnimationFrame(m),s.removeEventListener("scroll",c),u.disconnect();}},[e,t,r,o,a]),i}function Xt(e,t,r){let[o,a]=react.useState(null);return react.useEffect(()=>{let i=t.current,l=i?.offsetParent;if(!l)return;let n=0,s=()=>{n=0,a(m=>{let c=l.scrollTop-ke,p=l.scrollTop+l.clientHeight+ke;return m&&m.top===c&&m.bottom===p?m:{top:c,bottom:p}});},d=0,f=()=>{n===0&&(n=requestAnimationFrame(s)),i?.setAttribute("data-scrolling",""),window.clearTimeout(d),d=window.setTimeout(()=>i?.removeAttribute("data-scrolling"),150);};s(),l.addEventListener("scroll",f,{passive:true});let u=new ResizeObserver(f);return u.observe(l),()=>{n!==0&&cancelAnimationFrame(n),window.clearTimeout(d),l.removeEventListener("scroll",f),u.disconnect();}},[e,t,r]),o}function eo(e){let t=react.useRef(new WeakMap),r=react.useRef(new Map),o=react.useRef(null),a=react.useCallback((i,l)=>{let n=r.current.get(l);if(!i){n&&(o.current?.unobserve(n),t.current.delete(n),r.current.delete(l));return}typeof ResizeObserver>"u"||(e(l,i.offsetHeight),o.current??=new ResizeObserver(s=>{for(let d of s){let f=t.current.get(d.target);f&&e(f,d.target.offsetHeight);}}),!(n===i&&t.current.get(i)===l)&&(n&&(o.current.unobserve(n),t.current.delete(n)),t.current.set(i,l),r.current.set(l,i),o.current.observe(i)));},[e]);return react.useEffect(()=>()=>{o.current?.disconnect(),r.current.clear();},[]),a}function pn(e){let t=false;return ()=>{if(!t){if(!react$1.notificationYieldsToTask()){e();return}t=true,setTimeout(()=>{t=false,e();},0);}}}function wn(e){let t=e.snapshot?.();return JSON.stringify(t?.hiddenReviewAuthors??[])}function Te(e){let t=react$1.useDocxEditor();return to(t,e)}function to(e,t){let r=react.useCallback(y=>{if(!e)return ()=>{};let g=false,A=pn(()=>{g||y();}),E=e.on("change",A),h=e.on("selectionChange",A),M=e.on("error",A);return ()=>{g=true,E(),h(),M();}},[e]),o=react.useSyncExternalStore(r,()=>e?`${e.getReviewRevision()}:${e.getEditingMode()}:${wn(e)}`:"none",()=>"none"),a=react.useMemo(()=>e?e.getReviewItems(t).filter(y=>y.item.kind!=="custom"||y.item.carded):[],[e,o,t]),i=react.useMemo(()=>a.find(y=>y.isActive)?.key??null,[a]),l=react.useCallback((y,g)=>e?e.setActiveReviewItem(y,g).ok:false,[e]),n=react.useCallback(y=>!e||y.kind!=="revision"||y.readOnly?false:e.acceptReviewItem(y.key).ok,[e]),s=react.useCallback(y=>!e||y.kind!=="revision"||y.readOnly?false:e.rejectReviewItem(y.key).ok,[e]),d=react.useCallback(y=>!e||y.kind!=="comment"?false:e.setCommentResolved(y.key,true).ok,[e]),f=react.useCallback(y=>!e||y.kind!=="comment"?false:e.setCommentResolved(y.key,false).ok,[e]),u=e?.getEditingMode()==="viewing"?"the document is open for viewing":null,m=react.useCallback(y=>!e||y.kind==="custom"||y.kind==="revision"&&y.readOnly?false:e.deleteReviewItem(y.key).ok,[e]),c=react.useCallback((y,g,A)=>g.trim().length===0||!e?false:e.replyToReviewItem(y.key,g,A).ok,[e]),p=react.useMemo(()=>e?e.getSelectionPlacement()?.anchorY??null:null,[e,o]),w=react.useCallback((y,g)=>y.trim().length===0||!e?false:e.addComment(y,g).ok,[e]),R=react.useMemo(()=>e?e.isReviewPaneOpen():true,[e,o]),C=react.useCallback(y=>{!e||e.isReviewPaneOpen()===y||e.exec({type:"toggleReviewPane"});},[e]);return react.useMemo(()=>({items:a,activeKey:i,setActive:l,accept:n,reject:s,resolve:d,reopen:f,commentResolutionDisabledReason:u,remove:m,reply:c,selectionAnchorY:p,comment:w,paneOpen:R,setPaneOpen:C,ready:e!==null&&!e.snapshot().isLoading&&e.snapshot().parseError===null}),[a,i,l,n,s,d,f,u,m,c,p,w,R,C,e])}function yn(e,t,r={}){let o=r.gap??8,a=r.scale??1,i=r.defaultHeight??0;return react.useMemo(()=>{let l=new Map,n=Number.NEGATIVE_INFINITY;for(let s of e){let d=s.anchorY===null?Number.isFinite(n)?n:0:Math.max(s.anchorY,n);l.set(s.key,d),n=d+((t.get(s.key)??i)+o)/a;}return l},[e,t,o,a,i])}var st=8;function lt(e,t){return e?.color??`var(--doc-review-author-${t%st})`}function re(e,t,r){return e?{"--doc-review-author-current":lt(t,r)}:{}}function pe(e,t){return (e?.slot??t)%st}function oo(e,t,r,o){let a=react.useRef(new Map);return react.useMemo(()=>{let i=new Map;for(let n of e)i.set(n.author,n);let l=[...t.map(n=>n.author),o?.getConfiguredAuthor()];for(let n of l){if(!n||i.has(n))continue;let s=r.get(n)??0,d=o?.getReviewAuthorStyle(n),f=d?.color??`var(--doc-review-author-${s%st})`,u=a.current.get(n),m=u!==void 0&&u.slot===s&&u.color===f&&u.style===d?u:{author:n,slot:s,color:f,...d?{style:d}:{}};a.current.set(n,m),i.set(n,m);}return i},[e,t,r,o])}var $=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"})}),ro="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",no="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",Cn="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",we="M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z",Le=()=>jsxRuntime.jsxs("span",{className:"docx-review__resolved-icon",children:[jsxRuntime.jsx("span",{className:"docx-review__resolved-comment",children:$(Cn)}),jsxRuntime.jsx("span",{className:"docx-review__resolved-tick",children:$(we)})]}),ao="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",io="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",so="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",gn="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",hn="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",xn="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",An="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 lo(e){if(e.kind==="comment")return no;if(e.kind==="custom")return e.item.icon??An;switch(e.revisionKind){case "insert":case "moveTo":return gn;case "delete":case "moveFrom":return hn;case "format":return xn;default:return no}}function In(e,t){return typeof t!="function"?e:typeof e!="function"?t:r=>{e(r),r.defaultPrevented||t(r);}}function _n(e,t){let r={...e,...t};for(let o of Object.keys(e))/^on[A-Z]/.test(o)?r[o]=In(t[o],e[o]):o==="className"?r[o]=[e[o],t[o]].filter(Boolean).join(" "):o==="style"&&(r[o]={...e[o],...t[o]});return r}function mo(e){return e==="Enter"||e===" "}function Sn(e){return mo(e.key)?(e.preventDefault(),e.stopPropagation(),true):false}function uo(e){return e.type==="button"}function Mn(e,t){return e.type==="a"||t.href!=null}function Dn(e,t,r,o){let a=i=>{typeof r=="function"&&r(i);};return {onClick:i=>{typeof e=="function"&&e(i),i.defaultPrevented||a(i),o&&i.preventDefault();},onKeyDown:i=>{if(typeof t=="function"&&t(i),!mo(i.key))return;i.defaultPrevented||a(i),o&&i.preventDefault();}}}function Q({engineDisabled:e,disabledReason:t,slotProps:r,children:o}){let a=react.Children.only(o);if(!react.isValidElement(a))return null;let i=a.props,l=_n(r,i);if(!e){if(!uo(a)){let n=Dn(i.onClick,i.onKeyDown,r.onClick,Mn(a,i));l.onClick=n.onClick,l.onKeyDown=n.onKeyDown;}return react.cloneElement(a,l)}if(uo(a))l.disabled=true,delete l["aria-disabled"];else {delete l.disabled,l["aria-disabled"]=true,l["data-disabled"]="",l.tabIndex=-1,l.href=void 0,l.role===void 0&&(l.role="button");let n=l.onKeyDown;l.onKeyDown=s=>{Sn(s)||typeof n=="function"&&n(s);};}return t&&(l.title=t),l.onClick=n=>{n.preventDefault(),n.stopPropagation();},react.cloneElement(a,l)}var po=react.createContext({key:null,open:()=>{},close:()=>{}});function wo({items:e,children:t}){let[r,o]=react.useState(null);react.useEffect(()=>{r!==null&&!e.some(i=>i.key===r&&i.kind==="comment"&&i.resolved)&&o(null);},[e,r]);let a=react.useMemo(()=>({key:r,open:i=>o(i),close:()=>o(null)}),[r]);return jsxRuntime.jsx(po.Provider,{value:a,children:t})}function ct(){return react.useContext(po)}function yo({label:e,statusLabel:t,entryKey:r,onActivate:o,onDeactivate:a,children:i,...l}){let n=ct(),s=react.useRef(null);return react.useEffect(()=>{let d=f=>{let u=s.current;u?.open&&f.target instanceof Node&&!u.contains(f.target)&&(n.close(),a());};return document.addEventListener("pointerdown",d,true),()=>document.removeEventListener("pointerdown",d,true)},[n,a]),jsxRuntime.jsxs("details",{ref:s,...l,open:n.key===r,onToggle:d=>{d.currentTarget.open?(n.open(r),o()):(n.close(),a());},children:[jsxRuntime.jsxs("summary",{className:"docx-review__resolved-toggle","aria-label":e,children:[jsxRuntime.jsx("span",{className:"docx-review__resolved-status",children:t}),Le()]}),i]})}function Ro(e){function t({className:o,asChild:a,hidden:i,children:l,icon:n}){let s=e.useReview(),d=e.useItem(),f=e.useLabel();if(i||!d||d.kind!=="comment"||d.resolved)return null;let u=f("comments.resolve"),m=s.commentResolutionDisabledReason!==null,c=m?f("editingMode.viewingHint"):null,p={type:"button",className:`docx-review__action${o?` ${o}`:""}`,"data-testid":"review-resolve","aria-label":u,title:c??u,disabled:m,onMouseDown:e.guardMousedown,onClick:w=>{w.stopPropagation(),!m&&s.resolve(d);}};return a?jsxRuntime.jsx(Q,{engineDisabled:m,disabledReason:c,slotProps:p,children:l}):jsxRuntime.jsx("button",{...p,children:n??l??$(we)})}t.docxReviewPart="Resolve";function r({className:o,asChild:a,hidden:i,children:l,icon:n}){let s=e.useReview(),d=e.useItem(),f=e.useLabel();if(i||!d||d.kind!=="comment"||!d.resolved)return null;let u=f("comments.reopen"),m=s.commentResolutionDisabledReason!==null,c=m?f("editingMode.viewingHint"):null,p={type:"button",className:`docx-review__action${o?` ${o}`:""}`,"data-testid":"review-reopen","aria-label":u,title:c??u,disabled:m,onMouseDown:e.guardMousedown,onClick:w=>{w.stopPropagation(),!m&&s.reopen(d);}};return a?jsxRuntime.jsx(Q,{engineDisabled:m,disabledReason:c,slotProps:p,children:l}):jsxRuntime.jsx("button",{...p,children:n??l??$(ao)})}return r.docxReviewPart="Reopen",{ReviewResolve:t,ReviewReopen:r}}function go(e){function t({top:o=0,left:a=null,className:i,hidden:l}){let{review:n,endDraft:s,measure:d,readOnly:f,draftAuthor:u,draftAuthorInfo:m,draftAuthorSlot:c}=e.useRail(),p=e.useLabel(),[w,R]=react.useState(""),[C,y]=react.useState(false),g=react.useRef(null),A=react.useId();react.useEffect(()=>{f||g.current?.focus({preventScroll:true});},[]);let E=react.useCallback(()=>{if(f||w.trim().length===0)return;let h=n.comment(w.trim());y(!h),h&&(R(""),s());},[f,w,n,s]);return l?null:jsxRuntime.jsx("div",{className:`docx-review__slot${i?` ${i}`:""}${a===null?"":" docx-review__slot--compact"}`,style:{position:"absolute",top:o,...a===null?{}:{left:a,width:ve}},ref:h=>{d(h,e.composeKey);},children:jsxRuntime.jsx("div",{className:"docx-review__card","data-testid":"review-draft","data-draft":"",...u?{"data-review-author":u,"data-review-author-slot":c}:{},style:re(u??void 0,m,c),children:jsxRuntime.jsxs("form",{className:"docx-review__reply-box",onSubmit:h=>{h.preventDefault(),E();},children:[jsxRuntime.jsx("label",{className:"docx-editor-sr-only",htmlFor:A,children:p("comments.addComment")}),jsxRuntime.jsx("input",{id:A,ref:g,"data-testid":"review-draft-input",className:"docx-review__input",value:w,placeholder:p("comments.addComment"),readOnly:f,...C?{"aria-invalid":true}:{},onChange:h=>{f||(y(false),R(h.target.value));},onKeyDown:h=>{if(h.key==="Escape"){h.preventDefault(),s();return}f||h.key!=="Enter"||(h.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:s,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")})]}),C?jsxRuntime.jsx("span",{className:"docx-review__refused",role:"alert",children:p("review.commentRefused")}):null]})})})}t.docxReviewPart="Draft";function r({className:o,hidden:a,children:i}){let{review:l,readOnly:n}=e.useRail(),s=e.useItem(),d=e.useLabel(),[f,u]=react.useState(""),[m,c]=react.useState(false),p=react.useId(),w=react.useCallback(()=>{if(!s||n||f.trim().length===0)return;let R=l.reply(s,f.trim());c(!R),R&&u("");},[s,n,f,l]);return a||!s||!s.isActive||s.kind==="comment"&&s.resolved?null:i?jsxRuntime.jsx(jsxRuntime.Fragment,{children:i}):jsxRuntime.jsxs("form",{className:`docx-review__reply-box${o?` ${o}`:""}`,onSubmit:R=>{R.preventDefault(),w();},children:[jsxRuntime.jsx("label",{className:"docx-editor-sr-only",htmlFor:p,children:d("comments.replyPlaceholder")}),jsxRuntime.jsx("input",{id:p,"data-testid":"review-reply-input",className:"docx-review__input",value:f,placeholder:d("comments.replyPlaceholder"),readOnly:n,...m?{"aria-invalid":true,"data-refused":""}:{},onChange:R=>{n||(c(false),u(R.target.value));},onClick:R=>R.stopPropagation(),onKeyDown:R=>{n||R.key!=="Enter"||(R.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:R=>{R.stopPropagation(),u(""),c(false),l.setActive(null);},children:d("common.cancel")}),jsxRuntime.jsx("button",{type:"submit","data-testid":"review-reply-submit",className:"docx-review__submit",disabled:n||f.trim().length===0,title:n?d("editingMode.viewingHint"):void 0,children:d("review.reply")})]}),m?jsxRuntime.jsx("span",{className:"docx-review__refused",role:"alert","data-testid":"review-reply-refused",children:d("review.replyRefused")}):null]})}return r.docxReviewPart="Reply",{ReviewDraft:t,ReviewReply:r}}function dt(e,t){if(e==="paragraphMark")return t==="delete"?"revisions.paragraphMarkDeleted":t==="moveFrom"?"revisions.paragraphMarkMovedFrom":t==="moveTo"?"revisions.paragraphMarkMovedTo":"revisions.paragraphMarkInserted";switch(e){case "insert":return "review.inserted";case "delete":return "review.deleted";case "replace":return "review.replaced";case "moveFrom":return "review.movedFrom";case "moveTo":return "review.movedTo";case "format":return "revisions.runPropertiesChanged";default:return "review.structural"}}var zn=e=>e.isLoading||e.parseError!==null||e.pageSetup==null,Wn=e=>e.editingMode==="viewing",ft=react.createContext(null),_=react.createContext(null);function Gn(){return react.useContext(_)}function Qn(e){let{authorInfo:t}=H();return e===void 0?void 0:t.get(e)}var Ke="\0compose",Jn=72,Xn=64,er=480,tr=30,or=Object.freeze({placement:false});function vt(e,t){return e.kind!=="comment"?false:e.parentId!==void 0?t.has(e.parentId):e.parentRevisionId!==void 0?t.has(e.parentRevisionId):false}function pt(e){return new Set(e.map(t=>t.id))}function Y(e){let t=e.target?.tagName;t==="INPUT"||t==="SELECT"||t==="TEXTAREA"||e.preventDefault();}function H(){let e=react.useContext(ft);return e||nr}function K(){let{t:e}=react.useContext(ft)??{},{t}=react$1.useTranslation();return react.useCallback(r=>e?.(r)??t(r),[e,t])}var{ReviewResolve:No,ReviewReopen:Po}=Ro({useReview:()=>H().review,useItem:()=>react.useContext(_),useLabel:K,guardMousedown:Y}),{ReviewDraft:Io,ReviewReply:_o}=go({useRail:H,useItem:()=>react.useContext(_),useLabel:K,guardMousedown:Y,composeKey:Ke}),nr={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 rr({className:e,furniture:t,asChild:r,hidden:o,children:a,t:i,card:l,preset:n=true,stack:s=true,gap:d=8,filter:f,structural:u=false,formatting:m=false}){let c=react$1.useDocxEditor(),p=react$1.useEditorState(zn),w=react$1.useEditorState(Wn),R=react.useMemo(()=>{let b=[];return u||b.push("structural"),m||b.push("format"),b.length>0?b:void 0},[u,m]),C=react.useMemo(()=>R?{excludeRevisionKinds:R}:void 0,[R]);react.useEffect(()=>(c?.setReviewActivationExclusions(R??null),()=>c?.setReviewActivationExclusions(null)),[c,R]);let y=Te(or),g=Te(C),A=g.setPaneOpen,{t:E}=react$1.useTranslation(),h=react.useCallback(b=>i?.(b)??E(b),[i,E]),M=react.useRef(null),te=react.useContext(react$1.ReviewRailContext);react.useEffect(()=>te?.register(),[te]);let Z=g.paneOpen,de=react$1.useReviewGutter(),oe=Z&&de.inlineEnd>0&&de.inlineEnd<react$1.REVIEW_PANE_GUTTER,Ne=Z&&!oe,T=react.useMemo(()=>f?g.items.filter(b=>f(b)):g.items,[g.items,f]),q=c?.getConfiguredAuthor()??null,Pe=react.useMemo(()=>{let b=new Map;for(let x of T)x.author&&!b.has(x.author)&&b.set(x.author,b.size);return q&&!b.has(q)&&b.set(q,b.size),b},[T,q]),It=react.useMemo(()=>{let b=new Map;for(let x of T)b.set(x.id,x);return b},[T]),[_t,Yo]=react.useState(()=>new Map),Zo=react.useCallback((b,x)=>{x<=0||Yo(P=>{if(P.get(b)===x)return P;let D=new Map(P);return D.set(b,x),D});},[]),St=eo(Zo),I=Jt(c,M,T,!p&&!o,oe),ue=Xt(c,M,!p&&!o);react.useEffect(()=>{let b=M.current;if(!c||!b)return;let x=P=>{let D=P.target;if(!(D instanceof Node)||b.contains(D))return;let k=b.offsetParent;!k||!k.contains(D)||k.querySelector(".docx-paginated-surface")?.contains(D)||c.setActiveReviewItem(null);};return document.addEventListener("mousedown",x,true),()=>document.removeEventListener("mousedown",x,true)},[c,p,o]);let[V,Je]=react.useState(null),Xe=react.useRef(null),j=react.useCallback(()=>{let b=Xe.current;b&&(b.editor.releaseSelection(b.pin),Xe.current=null);},[]),Ie=react.useCallback(()=>{if(!c||w)return;let b=c.getSelectionPlacement()?.anchorY??null;if(b===null)return;j();let x=c.retainSelection();x&&(Xe.current={editor:c,pin:x},A(true),Je(b));},[c,w,j,A]);react.useEffect(()=>{if(!(o||w))return te?.registerCommentDraft(Ie)},[Ie,o,w,te]);let Mt=react.useCallback(()=>{j(),Je(null),c?.focus();},[c,j]);react.useEffect(()=>j,[j]),react.useEffect(()=>{Z||V===null||(j(),Je(null));},[Z,V,j]);let et=V??g.selectionAnchorY,F=react.useMemo(()=>{let b=pt(T);return T.filter(x=>!vt(x,b))},[T]),Dt=react.useMemo(()=>{if(V===null)return F;let b=F.findIndex(P=>P.anchorY!==null&&P.anchorY>V),x={key:Ke,anchorY:V};return b===-1?[...F,x]:[...F.slice(0,b),x,...F.slice(b)]},[F,V]),kt=react.useMemo(()=>{let b=new Map(_t);for(let x of F){if(b.has(x.key))continue;let P=x.text.length+(x.kind==="revision"?x.replacedText?.length??0:0),D=Math.min(6,Math.max(1,Math.ceil(P/36)));b.set(x.key,64+D*20);}return b},[_t,F]),{stacked:tt,collapsedKeys:Tt}=react.useMemo(()=>{let b=I.scale,x=new Map,P=new Set,D=Number.NEGATIVE_INFINITY;for(let k of Dt){let Me=k.anchorY===null?Number.isFinite(D)?D:0:Math.max(k.anchorY,D);x.set(k.key,Me);let Go=k.anchorY===null?0:(Me-k.anchorY)*b,Qo="isActive"in k&&k.isActive,Ft=Go>er&&!Qo&&k.key!==Ke;Ft&&P.add(k.key);let Jo=Ft?Xn:kt.get(k.key)??Jn;D=Me+(Jo+d)/b;}return {stacked:x,collapsedKeys:P}},[Dt,kt,d,I.scale]),ot=et===null?null:I.top+(oe?et:tt.get(Ke)??et)*I.scale,me=l?.className,jo=react$1.useReviewAuthors(),nt=oo(jo,T,Pe,c),Ot=q?Pe.get(q)??0:0,Lt=q?nt.get(q):void 0,Bo=react.useMemo(()=>({t:i,cardClassName:me,readOnly:w,review:{...g,items:T},allItems:y.items,authorSlots:Pe,authorInfo:nt,draftAuthor:q,draftAuthorInfo:Lt,draftAuthorSlot:Ot,byId:It,measure:St,beginDraft:Ie,endDraft:Mt}),[i,me,w,g,y.items,T,Pe,nt,q,Lt,Ot,It,St,Ie,Mt]);if(o||p)return null;let Ht={ref:M,className:`docx-review${e?` ${e}`:""}`,"data-testid":"review-rail","data-count":T.length,"data-open":Ne?"":void 0,"data-compact":oe?"":void 0,role:"complementary","aria-label":h("review.ariaLabel"),onMouseDown:Y,style:I.left===null?void 0:{left:I.left,right:"auto"}},z=typeof a=="function"?{parts:{},rest:a}:De(a,"root"),W=z.parts,fe=(b,x)=>{if(!(b in W))return x;let P=W[b];return !react.isValidElement(P)||!react.isValidElement(x)?P:react.cloneElement(P,{...x.props,...P.props})},$t=jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[n||"AddComment"in W?fe("AddComment",jsxRuntime.jsx(yt,{top:ot,drafting:V!==null})):null,!Z||V===null||ot===null||!n&&!("Draft"in W)?null:fe("Draft",jsxRuntime.jsx(Io,{top:ot,left:oe?I.compactCardLeft:null})),n||"Balloon"in W?fe("Balloon",jsxRuntime.jsx(Rt,{})):null]}),zo=jsxRuntime.jsx(qe,{stack:s,positions:tt,collapsed:Tt,scale:I.scale,offset:I.top,window:ue,children:z.rest}),Kt=jsxRuntime.jsx(wt,{scale:I.scale,offset:I.top,window:ue}),G=oe?F.find(b=>b.key===g.activeKey)??null:null,qt=G===null?null:G.anchorY!==null?I.top+G.anchorY*I.scale:ue!==null?ue.top+ke+24:null,_e=r?null:z.rest,Se=typeof _e=="function"?null:De(_e,"list"),Ut=typeof _e=="function"?G&&_e(G):Se?.parts.Card&&react.isValidElement(Se.parts.Card)?at(Se.parts.Card,me):n?jsxRuntime.jsx(Ue,{...me?{className:me}:{},children:Se?.rest}):null,Vt=G&&qt!==null&&I.compactCardLeft!==null&&Ut?jsxRuntime.jsx(_.Provider,{value:G,children:jsxRuntime.jsx("div",{className:"docx-review__slot docx-review__slot--compact","data-testid":"review-compact-card",style:{position:"absolute",top:qt,left:I.compactCardLeft,width:ve},children:Ut})}):null,Wo=Ne?n||"List"in W?fe("List",zo):typeof z.rest=="function"?null:z.rest:n||"Markers"in W?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[fe("Markers",Kt),Vt]}):typeof z.rest=="function"?null:z.rest;return jsxRuntime.jsx(wo,{items:T,children:jsxRuntime.jsx(ft.Provider,{value:Bo,children:r&&react.isValidElement(a)?jsxRuntime.jsx(react$1.Slot,{...Ht,children:react.cloneElement(a,void 0,a.props.children,n?Ne?jsxRuntime.jsx(qe,{stack:s,positions:tt,collapsed:Tt,scale:I.scale,offset:I.top,window:ue}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[Kt,Vt]}):null,$t)}):jsxRuntime.jsxs("aside",{...Ht,children:[Ne&&t!==void 0?jsxRuntime.jsx("div",{className:"docx-review__furniture","data-testid":"review-furniture",children:t}):null,Wo,$t]})})})}function qe({stack:e=true,positions:t,collapsed:r,scale:o=1,offset:a=0,window:i=null,children:l,className:n,hidden:s}){let{review:d,measure:f,cardClassName:u}=H();if(s)return null;let m=typeof l=="function"?null:De(l,"list"),c=pt(d.items),p=d.items.filter(w=>!vt(w,c));return p.length===0?typeof l=="function"?null:m?.parts.Empty??jsxRuntime.jsx(bt,{}):jsxRuntime.jsx("div",{className:`docx-review__list${n?` ${n}`:""}`,children:p.map(w=>{let R=e?t?.get(w.key)??w.anchorY:w.anchorY,C=R==null?null:a+R*o;if(C!==null&&i&&(C<i.top||C>i.bottom))return null;let y=C===null?{}:{position:"absolute",top:C};return jsxRuntime.jsx(_.Provider,{value:w,children:jsxRuntime.jsx("div",{className:"docx-review__slot",style:y,...r?.has(w.key)?{"data-collapsed":""}:{},ref:g=>{f(g,w.key);},children:typeof l=="function"?l(w):m?.parts.Card&&react.isValidElement(m.parts.Card)?at(m.parts.Card,u):jsxRuntime.jsx(Ue,{...u?{className:u}:{},children:m?.rest})})},w.key)})})}qe.docxReviewPart="List";function wt({scale:e=1,offset:t=0,window:r=null,className:o,hidden:a,icon:i}){let{review:l,authorSlots:n,authorInfo:s}=H(),d=ct(),f=K(),{roots:u,stackedTops:m}=react.useMemo(()=>{let c=pt(l.items),p=l.items.filter(C=>!vt(C,c)),w=new Map,R=Number.NEGATIVE_INFINITY;for(let C of p){if(C.anchorY===null)continue;let y=Math.max(t+C.anchorY*e,R);w.set(C.key,y),R=y+tr;}return {roots:p,stackedTops:w}},[l.items,t,e]);return a?null:jsxRuntime.jsx("div",{className:`docx-review__markers${o?` ${o}`:""}`,children:u.map(c=>{let p=m.get(c.key);return p===void 0||r&&(p<r.top||p>r.bottom)?null:jsxRuntime.jsx("button",{type:"button",className:"docx-review__marker","data-testid":"review-marker","data-kind":c.kind==="revision"?c.revisionKind:c.kind,...c.author?{"data-review-author":c.author,"data-review-author-slot":pe(s.get(c.author),n.get(c.author)??0)}:{},style:{position:"absolute",top:p,...c.author?{"--doc-review-author-current":lt(s.get(c.author),n.get(c.author)??0)}:{}},title:c.author?`${c.author}: ${c.text}`:c.text,"aria-label":`${f("review.showPane")}: ${c.author?`${c.author}. `:""}${c.text}`,onMouseDown:Y,onClick:()=>{c.kind==="comment"&&c.resolved&&d.open(c.key),l.setPaneOpen(true),l.setActive(c.key);},children:(typeof i=="function"?i(c):i)??(c.kind==="comment"&&c.resolved?Le():$(lo(c)))},c.key)})})}wt.docxReviewPart="Markers";function yt({top:e=null,drafting:t=false,className:r,hidden:o,children:a}){let{beginDraft:i,readOnly:l}=H(),n=K();if(o||t||e===null||l)return null;let s={type:"button",className:`docx-review__add${r?` ${r}`:""}`,"data-testid":"review-add-comment",style:{position:"absolute",top:e},"aria-label":n("common.comment"),title:n("common.comment"),onMouseDown:Y,onClick:i};return a?jsxRuntime.jsx(react$1.Slot,{...s,children:a}):jsxRuntime.jsx("button",{...s,children:$(ro)})}yt.docxReviewPart="AddComment";function Rt({className:e,hidden:t}){let{review:r,allItems:o,authorSlots:a,authorInfo:i}=H(),l=K(),n=react.useRef(null),[s,d]=react.useState(null),f=react.useRef(false);f.current=s!==null,react.useEffect(()=>{let w=n.current,R=w?.closest(".docx-review"),C=R?.closest(".docx-editor__scroll-container")??R?.offsetParent;if(!w||!R||!C)return;let y=(A,E)=>{let h=R.getBoundingClientRect(),M=A.getBoundingClientRect(),te=A.ownerDocument.defaultView?.innerHeight??1/0,Z=Number(A.dataset.start),de=Number(A.dataset.end);d({revisionId:A.dataset.revisionId,author:A.dataset.reviewAuthor??"",...A.dataset.revisionDate!==void 0?{date:A.dataset.revisionDate}:{},...A.dataset.revisionKind!==void 0?{kind:A.dataset.revisionKind}:{},structuralSite:E,...A.dataset.paragraphId!==void 0?{paragraphId:A.dataset.paragraphId}:{},...Number.isFinite(Z)?{start:Z}:{},...Number.isFinite(de)?{end:de}:{},left:M.left-h.left,top:M.top-h.top,bottom:M.bottom-h.top,above:M.bottom+220>te});},g=A=>{let E=A.target;if(!(E instanceof Element)||w.contains(E))return;let h=E.closest("[data-revision-id]");if(h instanceof HTMLElement&&C.contains(h)){let M=h.classList.contains("docx-table-row--revision");if(h.dataset.revisionKind==="format"||M){y(h,M);return}}f.current&&d(null);};return C.addEventListener("pointerdown",g,true),C.addEventListener("mousedown",g,true),()=>{C.removeEventListener("pointerdown",g,true),C.removeEventListener("mousedown",g,true);}},[]);let u=react.useMemo(()=>{if(!s)return null;let w=null,R=false,C=null,y=false,g=null,A=false;for(let E of o)if(!(E.kind!=="revision"||E.item.kind!=="revision")){for(let h of E.item.addresses)if(h.id===s.revisionId){if(h.author===s.author){if(h.date===s.date)return E;w===null?w=E:w!==E&&(R=true);}C===null?C=E:C!==E&&(y=true);}if(s.paragraphId!==void 0&&s.start!==void 0&&s.end!==void 0&&(E.revisionKind==="format"||E.revisionKind==="structural")){for(let h of E.item.ranges)if(h.start.paragraphId===s.paragraphId&&h.start.offset<s.end&&h.end.offset>s.start){g===null?g=E:g!==E&&(A=true);break}}}return w!==null&&!R?w:C!==null&&!y?C:g!==null&&!A?g:null},[o,s]),m=u&&(u.revisionKind==="format"||u.revisionKind==="structural")?u:null,c=react.useRef(false);if(react.useEffect(()=>{if(m){c.current=true;return}c.current&&(c.current=false,d(null));},[m]),t)return null;let p=s?.kind==="format"?"format":"structural";return jsxRuntime.jsx("div",{ref:n,className:`docx-review__balloon-root${e?` ${e}`:""}`,children:s===null?null:jsxRuntime.jsx("div",{className:"docx-review__balloon","data-testid":"review-balloon",style:{left:s.left,top:s.above?s.top-6:s.bottom+6,transform:s.above?"translateY(-100%)":void 0},onMouseDown:Y,children:m?jsxRuntime.jsx(_.Provider,{value:m,children:jsxRuntime.jsxs("div",{className:"docx-review__card","data-testid":"review-balloon-card","data-kind":m.revisionKind??"revision",...m.author?{"data-review-author":m.author,"data-review-author-slot":pe(i.get(m.author),a.get(m.author)??0)}:{},style:re(m.author,i.get(m.author),a.get(m.author)??0),onClick:()=>r.setActive(m.key),children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[jsxRuntime.jsx(be,{}),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[jsxRuntime.jsx(Ce,{}),jsxRuntime.jsx(ge,{})]}),m.kind==="revision"&&!m.readOnly?jsxRuntime.jsxs("div",{className:"docx-review__actions",children:[jsxRuntime.jsx(Ve,{}),jsxRuntime.jsx(Fe,{})]}):null]}),jsxRuntime.jsx(he,{})]})}):jsxRuntime.jsxs("div",{className:"docx-review__card","data-testid":"review-balloon-card","data-kind":p,...s.author?{"data-review-author":s.author,"data-review-author-slot":pe(i.get(s.author),a.get(s.author)??0)}:{},style:re(s.author,i.get(s.author),a.get(s.author)??0),children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[jsxRuntime.jsx("span",{className:"docx-review__avatar","aria-hidden":"true",children:ar(s.author)}),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[jsxRuntime.jsx("span",{className:"docx-review__author",children:s.author||l("comments.unknown")}),s.date?jsxRuntime.jsx(ir,{raw:s.date}):null]})]}),jsxRuntime.jsx("div",{className:"docx-review__summary",children:jsxRuntime.jsx("span",{className:"docx-review__label","data-kind":p,children:l(dt(p))})})]})})})}Rt.docxReviewPart="Balloon";function ar(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"?":t.slice(0,2).map(r=>r[0].toUpperCase()).join("")}function ir({raw:e}){let t=new Date(e);return Number.isNaN(t.getTime())?null:jsxRuntime.jsx("time",{className:"docx-review__time",dateTime:e,children:So.format(t)})}function bt({className:e,hidden:t,children:r}){let o=K();return t?null:jsxRuntime.jsx("div",{className:`docx-review__empty${e?` ${e}`:""}`,"data-testid":"review-empty",children:r??o("review.empty")})}bt.docxReviewPart="Empty";function Ue({className:e,asChild:t,hidden:r,children:o}){let{review:a,authorSlots:i,authorInfo:l}=H(),n=react.useContext(_),s=react.useId(),d=K();if(r||!n)return null;let f=i.get(n.author)??0,u=!t&&n.kind==="comment"&&n.resolved,m={className:`docx-review__card${e?` ${e}`:""}`,"data-testid":"review-card",...u?{}:{"aria-labelledby":`${s}-author ${s}-summary`},"data-kind":n.kind==="revision"?n.revisionKind??"revision":n.kind,...n.author?{"data-review-author":n.author,"data-review-author-slot":pe(l.get(n.author),f)}:{},...n.kind==="custom"&&n.item.kind==="custom"?{"data-node-name":n.item.name}:{},...n.isActive?{"data-active":""}:{},...n.kind==="comment"&&n.resolved?{"data-resolved":""}:{},...u?{"data-resolved-miniature":""}:{},style:re(n.author,l.get(n.author),f),...u?{}:{tabIndex:0,role:"button"},id:s,...u?{}:{onMouseDown:c=>{c.target?.closest("[data-review-selectable]")||c.currentTarget.focus({preventScroll:true});},onClick:()=>a.setActive(n.key),onKeyDown:c=>{c.target===c.currentTarget&&(c.key!=="Enter"&&c.key!==" "||(c.preventDefault(),a.setActive(n.key)));}}};return t?jsxRuntime.jsx(react$1.Slot,{...m,children:o}):u?jsxRuntime.jsx(yo,{...m,label:d("review.showResolvedComment"),statusLabel:d("review.resolved"),entryKey:n.key,onActivate:()=>a.setActive(n.key),onDeactivate:()=>a.setActive(null),children:jsxRuntime.jsx(Ao,{children:o})}):jsxRuntime.jsx("div",{...m,children:jsxRuntime.jsx(Ao,{children:o})})}Ue.docxReviewPart="Card";function Ao({children:e}){let t=react.useContext(_),r=react.useMemo(()=>sr(e),[e]),o=(i,l)=>i in r?r[i]:l;if(!t)return null;if(t.kind==="custom"&&t.item.kind==="custom"){let i=t.item;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[o("Avatar",null),jsxRuntime.jsx("div",{className:"docx-review__meta",children:o("Author",jsxRuntime.jsx("span",{className:"docx-review__author","data-testid":"review-custom-title",children:i.title}))})]}),o("Summary",i.detail?jsxRuntime.jsx("div",{className:"docx-review__summary","data-testid":"review-summary","data-review-selectable":"",children:jsxRuntime.jsx("span",{className:"docx-review__text",children:i.detail})}):null),r.__extra]})}let a=t.kind==="revision"&&!t.readOnly;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[o("Avatar",jsxRuntime.jsx(be,{})),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[o("Author",jsxRuntime.jsx(Ce,{})),o("Time",jsxRuntime.jsx(ge,{}))]}),a||t.kind==="comment"?jsxRuntime.jsxs("div",{className:"docx-review__actions",children:[o("Accept",jsxRuntime.jsx(Ve,{})),o("Reject",jsxRuntime.jsx(Fe,{})),o("Resolve",jsxRuntime.jsx(No,{})),o("Reopen",jsxRuntime.jsx(Po,{})),o("Delete",jsxRuntime.jsx(Ye,{}))]}):null]}),o("Summary",jsxRuntime.jsx(he,{})),o("Replies",jsxRuntime.jsx(Ct,{})),o("Reply",jsxRuntime.jsx(_o,{})),r.__extra]})}function sr(e){let t={},r=[],o=a=>{if(Array.isArray(a)){a.forEach(o);return}if(!a||typeof a!="object"||!("type"in a)){a&&r.push(a);return}if(a.type===react.Fragment){o(a.props.children);return}let i=a.type.docxReviewPart;i?t[i]=a:r.push(a);};return o(e),r.length>0&&(t.__extra=r),t}function be({className:e,asChild:t,hidden:r,children:o}){let{authorInfo:a}=H(),i=react.useContext(_);if(r||!i||o===void 0&&!i.initials)return null;let l={className:`docx-review__avatar${e?` ${e}`:""}`,"data-testid":"review-avatar","aria-hidden":true};if(t)return jsxRuntime.jsx(react$1.Slot,{...l,children:o});let n=a.get(i.author)?.style?.avatarUrl,s=o??(n?jsxRuntime.jsx("img",{className:"docx-review__avatar-img",src:n,alt:"",loading:"lazy",decoding:"async",referrerPolicy:"no-referrer"}):void 0)??i.initials;return jsxRuntime.jsx("span",{...l,children:s})}be.docxReviewPart="Avatar";function Ce({className:e,asChild:t,hidden:r,children:o}){let a=react.useContext(_),i=K();if(r||!a)return null;let l=a.author||i("comments.unknown"),n={className:`docx-review__author${e?` ${e}`:""}`,"data-testid":"review-author"};return t?jsxRuntime.jsx(react$1.Slot,{...n,children:o}):jsxRuntime.jsx("span",{...n,children:o??l})}Ce.docxReviewPart="Author";function ge({className:e,asChild:t,hidden:r,children:o}){let a=react.useContext(_);if(r||!a)return null;let i=a.date;if(!i)return null;let l=new Date(i);if(Number.isNaN(l.getTime()))return null;let n={className:`docx-review__time${e?` ${e}`:""}`,"data-testid":"review-time",dateTime:i};return t?jsxRuntime.jsx(react$1.Slot,{...n,children:o}):jsxRuntime.jsx("time",{...n,children:o??So.format(l)})}ge.docxReviewPart="Time";var So=new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});function he({className:e,asChild:t,hidden:r,children:o}){let a=react.useContext(_),i=K();if(r||!a)return null;let l=a.text,n=a.kind!=="revision"?null:i(dt(a.revisionKind,a.item.markDirection)),s=a.kind==="revision"&&a.revisionKind==="replace",d={className:`docx-review__summary${e?` ${e}`:""}`,"data-testid":"review-summary","data-review-selectable":""};return t?jsxRuntime.jsx(react$1.Slot,{...d,children:o}):jsxRuntime.jsx("div",{...d,children:o??(s?jsxRuntime.jsxs("span",{className:"docx-review__text",children:[i("review.replaced")," ",jsxRuntime.jsxs("span",{className:"docx-review__removed",children:['"',a.replacedText,'"']})," ",i("review.replacedWith")," ",jsxRuntime.jsxs("span",{className:"docx-review__added",children:['"',l,'"']})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[n?jsxRuntime.jsx("span",{className:"docx-review__label","data-kind":a.kind==="revision"?a.revisionKind:"revision",children:n}):null,l?jsxRuntime.jsx("span",{className:"docx-review__text",children:l}):null]}))})}he.docxReviewPart="Summary";function Ve({className:e,asChild:t,hidden:r,children:o,icon:a}){let{readOnly:i,review:l}=H(),n=react.useContext(_),s=K();if(r||!n||n.kind!=="revision"||n.readOnly)return null;let d=s("review.accept"),f=i?s("editingMode.viewingHint"):null,u={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-accept","aria-label":d,title:f??d,disabled:i,onMouseDown:Y,onClick:m=>{m.stopPropagation(),!i&&l.accept(n);}};return t?jsxRuntime.jsx(Q,{engineDisabled:i,disabledReason:f,slotProps:u,children:o}):jsxRuntime.jsx("button",{...u,children:a??o??$(we)})}Ve.docxReviewPart="Accept";function Fe({className:e,asChild:t,hidden:r,children:o,icon:a}){let{readOnly:i,review:l}=H(),n=react.useContext(_),s=K();if(r||!n||n.kind!=="revision"||n.readOnly)return null;let d=s("review.reject"),f=i?s("editingMode.viewingHint"):null,u={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-reject","aria-label":d,title:f??d,disabled:i,onMouseDown:Y,onClick:m=>{m.stopPropagation(),!i&&l.reject(n);}};return t?jsxRuntime.jsx(Q,{engineDisabled:i,disabledReason:f,slotProps:u,children:o}):jsxRuntime.jsx("button",{...u,children:a??o??$(io)})}Fe.docxReviewPart="Reject";function Ye({className:e,asChild:t,hidden:r,children:o,icon:a}){let{readOnly:i,review:l}=H(),n=react.useContext(_),{t:s}=react$1.useTranslation();if(r||!n||n.kind==="custom"||n.kind==="revision"&&n.readOnly)return null;let d=n.kind==="comment"?s("review.deleteComment"):s("review.discardChange"),f=i?s("editingMode.viewingHint"):null,u={type:"button",className:`docx-review__action${e?` ${e}`:""}`,"data-testid":"review-delete","aria-label":d,title:f??d,disabled:i,onMouseDown:Y,onClick:m=>{m.stopPropagation(),!i&&l.remove(n);}};return t?jsxRuntime.jsx(Q,{engineDisabled:i,disabledReason:f,slotProps:u,children:o}):jsxRuntime.jsx("button",{...u,children:a??o??$(so)})}Ye.docxReviewPart="Delete";function Ct({className:e,hidden:t}){let{byId:r}=H(),o=react.useContext(_);if(t||!o||o.kind==="custom")return null;let a=o.replyIds.map(i=>r.get(i)).filter(i=>i!==void 0);return a.length===0?null:jsxRuntime.jsx("ol",{className:`docx-review__replies${e?` ${e}`:""}`,children:a.map(i=>jsxRuntime.jsx(_.Provider,{value:i,children:jsxRuntime.jsxs("li",{className:"docx-review__reply","data-testid":"review-reply",children:[jsxRuntime.jsxs("div",{className:"docx-review__head",children:[jsxRuntime.jsx(be,{}),jsxRuntime.jsxs("div",{className:"docx-review__meta",children:[jsxRuntime.jsx(Ce,{}),jsxRuntime.jsx(ge,{})]}),jsxRuntime.jsx("div",{className:"docx-review__actions",children:jsxRuntime.jsx(Ye,{})})]}),jsxRuntime.jsx(he,{})]})},i.key))})}Ct.docxReviewPart="Replies";var lr=Object.assign(rr,{List:qe,Empty:bt,Card:Ue,Avatar:be,Author:Ce,Time:ge,Summary:he,Accept:Ve,Reject:Fe,Resolve:No,Reopen:Po,Delete:Ye,Replies:Ct,Reply:_o,Markers:wt,AddComment:yt,Draft:Io,Balloon:Rt});var xe=8;function Mo(e){let t=/^var\(--doc-review-author-(\d{1,2})\)$/.exec(e);return t?Number(t[1])%xe:null}function je(e,t,r,o){let a=new Map(e.map(n=>[n.author,n])),i=new Map,l=new Map;for(let n of t){if(l.has(n.actorId))continue;let s=collaboration.safeParticipantColor(o?.(n.name));if(s!==void 0){l.set(n.actorId,{color:s,slot:Mo(s)});continue}let d=collaboration.safeParticipantColor(n.color);if(d!==void 0){l.set(n.actorId,{color:d,slot:null});continue}let f=a.get(n.name),u=collaboration.safeParticipantColor(r?.(n.name));if(u!==void 0){l.set(n.actorId,{color:u,slot:Mo(u)??(f?f.slot%xe:null)});continue}if(f!==void 0){let c=f.slot%xe;l.set(n.actorId,{color:collaboration.safeParticipantColor(f.color)??`var(--doc-review-author-${c})`,slot:c});continue}let m=i.get(n.name);m===void 0&&(m=e.length+i.size,i.set(n.name,m)),l.set(n.actorId,{color:`var(--doc-review-author-${m%xe})`,slot:m%xe});}return l}function gt(e,t,r,o){return je(e,[t],r,o).get(t.actorId)}function ht(e){let t=e.trim().split(/\s+/,2),r="";for(let o of t){let a=[...o][0];a!==void 0&&(r+=a.toUpperCase());}return r}function Do(e){return [...e].sort((t,r)=>{if(t.isLocal!==r.isLocal)return t.isLocal?-1:1;let o=t.name.localeCompare(r.name);return o!==0?o:t.actorId<r.actorId?-1:t.actorId>r.actorId?1:0})}function Be(e,t,r){for(let o of e)if(o.author===t)return o.style?.avatarUrl;return r?.(t)?.avatarUrl}var ur=e=>e.collaborationStatus;function X(){let e=react$1.useDocxEditor();return react$1.useEditorState(ur),e?.collaborationSession()??null}var xt=Object.freeze([]);function vr(e,t){if(e===t)return true;if(e.length!==t.length)return false;for(let r=0;r<e.length;r+=1){let o=e[r],a=t[r];if(o.actorId!==a.actorId||o.name!==a.name||o.color!==a.color||o.role!==a.role||o.isLocal!==a.isLocal)return false}return true}function ko(e,t){if(!e)return t.current=xt,xt;let r=e.participants();return vr(t.current,r)?t.current:(t.current=r,r)}function ze(e){let t=X(),r=e===void 0?t:e,o=react.useRef(xt);return react.useSyncExternalStore(a=>r?.subscribeParticipants(()=>a())??(()=>{}),()=>ko(r,o),()=>ko(r,o))}var To=react.createContext(null);function xr(e){return {"--doc-collaboration-accent":e.color}}function Oo(e){return e!==void 0?{avatarUrl:e}:{}}function Lo({participant:e,className:t,children:r}){let o=react$1.useDocxEditor(),a=react$1.useReviewAuthors(),l=react.useContext(To)?.get(e.actorId)??gt(a,e,o?s=>o.presenceColorFor(s):void 0,o?s=>o.getReviewAuthorStyle(s)?.color:void 0),n=Ar(e.name);return jsxRuntime.jsx("span",{className:`docx-collaboration-avatar${t?` ${t}`:""}`,"data-collaboration-avatar":"",...e.isLocal?{"data-local":""}:{},...l.slot!==null?{"data-collaboration-author-slot":l.slot}:{},title:e.name,role:"img","aria-label":e.name,style:xr(l),children:r??(n!==void 0?jsxRuntime.jsx("img",{className:"docx-collaboration-avatar__image",src:n,alt:""}):ht(e.name))})}function Ar(e){let t=react$1.useDocxEditor(),r=react$1.useReviewAuthors();return Be(r,e,t?o=>t.getReviewAuthorStyle(o):void 0)}function Er({session:e,max:t,className:r,children:o}){let a=react$1.useDocxEditor(),i=ze(e),l=react$1.useReviewAuthors(),{t:n}=react$1.useTranslation(),s=react.useMemo(()=>je(l,i,a?p=>a.presenceColorFor(p):void 0,a?p=>a.getReviewAuthorStyle(p)?.color:void 0),[l,i,a]),d=react.useMemo(()=>{let p=a?R=>a.getReviewAuthorStyle(R):void 0,w=new Map;for(let R of i){if(w.has(R.name))continue;let C=Be(l,R.name,p);C!==void 0&&w.set(R.name,C);}return w},[a,i,l]),f=react.useMemo(()=>Do(i),[i]);if(f.length===0)return null;let u=t===void 0?f:f.slice(0,Math.max(0,t)),m=f.length-u.length,c=n("collaboration.moreParticipants",{count:m});return jsxRuntime.jsxs("span",{className:`docx-collaboration-avatars${r?` ${r}`:""}`,"data-collaboration-avatars":"",role:"group","aria-label":n("collaboration.participants"),children:[jsxRuntime.jsx(To.Provider,{value:s,children:u.map(p=>o?jsxRuntime.jsx(react.Fragment,{children:o({participant:p,color:s.get(p.actorId).color,initials:ht(p.name),...Oo(d.get(p.name))})},p.actorId):jsxRuntime.jsx(Lo,{participant:p},p.actorId))}),m>0?jsxRuntime.jsx("span",{className:"docx-collaboration-avatar","data-collaboration-avatar":"","data-overflow":"",title:c,role:"img","aria-label":c,children:`+${m}`}):null]})}var We=Object.freeze([]);function Nr(){return We}function Pr(){let e=react.useRef(null);if(e.current===null){let t=We,r=false,o=new Set;e.current={subscribe:a=>(o.add(a),()=>o.delete(a)),read:()=>t,write:a=>{t=a.length===0?We:a,!r&&(r=true,queueMicrotask(()=>{r=false;for(let i of [...o])i();}));}};}return e.current}function Ir({session:e,children:t}){let r=react$1.useDocxEditor(),o=X(),a=e===void 0?o:e,i=ze(a),l=react$1.useReviewAuthors(),n=Pr(),s=react.useSyncExternalStore(n.subscribe,n.read,Nr);if(react.useEffect(()=>{if(!(!r||!a))return r.setRemoteCaretLabelHost({publish:n.write}),()=>{r.setRemoteCaretLabelHost(null),n.write(We);}},[r,a,n]),s.length===0)return null;let d=je(l,i);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:s.map(f=>{let{selection:u}=f,m=i.find(w=>w.actorId===u.actorId)??null,c=f.element.style.getPropertyValue("--doc-remote-color"),p=c!==""?c:d.get(u.actorId)?.color??gt(l,{actorId:u.actorId,name:u.name,...u.color!==void 0?{color:u.color}:{},isLocal:false}).color;return reactDom.createPortal(t?t({selection:u,participant:m,color:p,...Oo(Be(l,u.name,r?w=>r.getReviewAuthorStyle(w):void 0))}):u.name,f.element,u.actorId)})})}var _r=Object.freeze({CaretLabels:Ir,Avatars:Er,Avatar:Lo});function Ae(e){let t=react$1.useDocxEditor();return react.useMemo(()=>e||(t?.getCustomNodeDefinitions()??[]).filter(chunkEMO6YTKO_cjs.j),[e,t])}var Lr=".docx-content-control-boundary";function le(e,t){let{node:r,definition:o,controlId:a}=e,i=a?t?.getReviewItems().find(s=>s.kind==="custom"&&s.item.id===a):void 0;if(i&&i.kind==="custom"){let s=i.item;return {...r,attrs:s.attrs,text:s.text,...s.data===void 0?{}:{data:s.data},...a?{nodeId:a}:{}}}let l=a?Hr(t,a,o):void 0,n=o.fromDocx?o.fromDocx({attrs:r.attrs,text:"",...l===void 0?{}:{data:l}}):r.attrs;return n===null?null:{...r,attrs:n,...l===void 0?{}:{data:l},...a?{nodeId:a}:{}}}function Hr(e,t,r){let o=e?.surface;if(!o)return;let a=editor.partOfNodeId(o.session,t),i=store.customNodePayloadsByControl(o.session.currentPackage(),(a??o.session.part()).name,o.session.part().name).get(t);if(!i)return;let l=chunkEMO6YTKO_cjs.e(r.schema,i.data);return l.ok?l.value:void 0}function ce(e,t){let r=e?.closest?.(Lr),o=r?.closest(".docx-content-control-chrome"),a=o?.getAttribute("data-tag"),i=a?chunkEMO6YTKO_cjs.c(a):null;if(!r||!i||!a)return null;let l=t.find(n=>n.tagPrefix===i.prefix&&n.name===i.name);return l?{node:{name:i.name,attrs:i.attrs,tag:a,rect:r.getBoundingClientRect()},definition:l,controlId:o?.getAttribute("data-docx-content-control")??null}:null}var Et=".docx-content-control-boundary",Kr=e=>{if(!chunkEMO6YTKO_cjs.k.test(e.tagPrefix)||!chunkEMO6YTKO_cjs.k.test(e.name))return [];let t=`${e.tagPrefix}:${e.name}`;return [`.docx-content-control-chrome[data-tag="${t}"]`,`.docx-content-control-chrome[data-tag^="${t}?"]`]};function qr(e){let{onNodeClick:t,onNodeHover:r}=e,o=react$1.useDocxEditor(),a=Ae(e.nodes);return react.useEffect(()=>{let i=document.createElement("style"),l=[];for(let n of a){let s=Kr(n);if(s.length===0)continue;let d=n.chrome?.color!==void 0&&CSS.supports("color",n.chrome.color)?n.chrome.color:"var(--doc-accent)";l.push(`${s.map(f=>`${f} ${Et}`).join(", ")} {`," pointer-events: auto !important;"," opacity: 1;"," border: none;",` background: color-mix(in srgb, ${d} 12%, transparent);`," border-radius: 6px;"," cursor: default;","}");}return i.textContent=l.join(`
|
|
2
|
+
`),document.head.append(i),()=>i.remove()},[a]),react.useEffect(()=>{let i=null,l=null,n=u=>ce(document.elementFromPoint(u.clientX,u.clientY),a),s=u=>{let m=u.button===0?n(u):null;i=m?.controlId??null,l=m?.node.tag??null;},d=u=>{let m=i,c=l;if(i=null,l=null,c===null)return;let p=n(u);if(!p||p.node.tag!==c||m!==null&&p.controlId!==m)return;let w=le(p,o);w&&(p.definition.onClick?.(w),t?.(w));},f=u=>{let m=ce(u.target,a);if(!m||u.relatedTarget?.closest?.(Et)===u.target.closest(Et))return;let p=le(m,o);p&&(m.definition.onHover?.(p),r?.(p));};return document.addEventListener("pointerdown",s,true),document.addEventListener("pointerup",d,true),document.addEventListener("mouseover",f),()=>{document.removeEventListener("pointerdown",s,true),document.removeEventListener("pointerup",d,true),document.removeEventListener("mouseover",f);}},[a,o,t,r]),null}var Zr=e=>e.editingMode==="viewing";function qo(e){let{onEditNode:t,onRemoveRefused:r,remove:o=true}=e,a=Ae(e.nodes),i=react$1.useContextMenuTarget(),l=react$1.useDocxEditor(),{t:n}=react$1.useTranslation(),s=react.useMemo(()=>i?ce(i,a):null,[i,a]),d=react.useMemo(()=>s?le(s,l):null,[s,l]),f=react$1.useEditorState(Zr),u=react.useMemo(()=>!s?.definition.reviewCard||!d?null:s.definition.reviewCard({attrs:d.attrs,text:d.text??"",...d.data===void 0?{}:{data:d.data}}),[s,d]);if(!s||!d)return null;let{definition:m}=s,c=m.label??m.name,p=!f&&(m.onEdit!==void 0||t!==void 0),w=!f&&o&&d.nodeId!==void 0&&l!==null;return !u&&!p&&!w?null:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[u?jsxRuntime.jsxs("div",{className:"docx-contextmenu__custom-info","data-testid":"custom-node-info",children:[jsxRuntime.jsx("span",{className:"docx-contextmenu__custom-title",children:u.title}),u.detail?jsxRuntime.jsx("span",{className:"docx-contextmenu__custom-detail",children:u.detail}):null]}):null,p?jsxRuntime.jsx(react$1.ContextMenuItem,{label:n("contextMenu.editCustomNode",{label:c}),className:"docx-contextmenu__custom-edit",onSelect:()=>{m.onEdit?.(d),t?.(d,m);}}):null,w?jsxRuntime.jsx(react$1.ContextMenuItem,{label:n("contextMenu.removeCustomNode",{label:c}),className:"docx-contextmenu__custom-remove",onSelect:()=>{let R=chunkEMO6YTKO_cjs.q(l,d.nodeId);R.ok||r?.(d,R.reason);}}):null,jsxRuntime.jsx("div",{role:"separator",className:"docx-toolbar__menu-separator"})]})}qo.docxRowPlacement="start";var Pt=Object.freeze({status:"inactive",reason:void 0,lastFailure:void 0,live:false,diverged:false,attached:false});function Uo(e,t){return e===t?true:!e||!t?false:e.code===t.code&&e.detail===t.detail}function Wr(e,t){return e.status===t.status&&Uo(e.reason,t.reason)&&Uo(e.lastFailure,t.lastFailure)}function Gr(e){return e.attached??false}function Vo(e,t){if(!e)return t.current=Pt,Pt;let r=e.statusSnapshot(),o=Gr(e);if(Wr(t.current,r)&&t.current.attached===o)return t.current;let a=Object.freeze({status:r.status,reason:r.reason,lastFailure:r.lastFailure,live:r.status==="ready",diverged:r.status==="error"||r.status==="destroyed",attached:o});return t.current=a,a}function Qr(e){let t=X(),r=e===void 0?t:e,o=react.useRef(Pt);return react.useSyncExternalStore(a=>r?.subscribeStatus(()=>a())??(()=>{}),()=>Vo(r,o),()=>Vo(r,o))}function Xr({collaboration:e,fallback:t=null,author:r,children:o,...a}){let{document:i,modules:l,session:n}=e;if(!i)return jsxRuntime.jsx(jsxRuntime.Fragment,{children:t});let s=r??n?.identity.name;return jsxRuntime.jsx(react$1.DocxEditorRoot,{document:i,modules:l,...s!==void 0?{author:s}:{},...a,children:o},n?.sessionId??"local")}var na=Symbol("useDocumentCollaboration.createRoom");async function ra(e){let{createDocumentCollaboration:t}=await import('../document-session-BIMEOZBG.cjs');return t(e)}function aa(e){return e[na]??ra}function ia(e){return e?`${e.documentId}:${e.bootstrap.kind}:${e.identity.actorId}`:""}function sa(e={}){let t=react.useId(),r=chunkGDTCNTK7_cjs.b({ownerKey:`react-document:${t}`,hookName:"useDocumentCollaboration",createRoom:aa(e),hostModules:e.modules??chunkGDTCNTK7_cjs.a,autoRoom:e.room??null,autoKey:ia(e.room??null),rejoinOptionsOf:o=>({...o,bootstrap:{kind:"join"}}),identityOf:o=>o.identity});return react.useMemo(()=>({document:r.document,modules:r.modules,session:r.session,pending:r.pending,error:r.error,connect:r.connect,leave:r.leave}),[r])}Object.defineProperty(exports,"reviewModule",{enumerable:true,get:function(){return chunkEMO6YTKO_cjs.o}});Object.defineProperty(exports,"collaborationModule",{enumerable:true,get:function(){return chunkQLZH2Q2C_cjs.b}});exports.CustomNodeChrome=qr;exports.CustomNodeContextMenu=qo;exports.DocxEditorCollaboration=_r;exports.DocxEditorCollaborationRoot=Xr;exports.DocxEditorReview=lr;exports.activatedCustomNodeOf=le;exports.resolveCustomNodeActivation=ce;exports.useCollaborationParticipants=ze;exports.useCollaborationSession=X;exports.useCollaborationStatus=Qr;exports.useCustomNodeDefinitions=Ae;exports.useDocumentCollaboration=sa;exports.useReview=Te;exports.useReviewAuthor=Qn;exports.useReviewItem=Gn;exports.useReviewOf=to;exports.useStackedReviewPositions=yn;
|