@docx-editor.dev/pro 2.9.2 → 2.11.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 +1 -7
- package/dist/chunk-32RB7HPL.js +3 -0
- package/dist/chunk-4HGT2OVX.cjs +3 -0
- package/dist/chunk-6DEUT2RQ.js +1 -0
- package/dist/chunk-7QSJBMZV.js +3 -0
- package/dist/chunk-EMO6YTKO.cjs +1 -0
- package/dist/chunk-GDTCNTK7.cjs +1 -0
- package/dist/chunk-HJB77VBO.js +1 -0
- package/dist/chunk-LUUFBXJ5.cjs +1 -0
- package/dist/chunk-NQW54J56.js +1 -0
- package/dist/chunk-Q2VBO66F.js +1 -0
- package/dist/chunk-Q4YPX2DT.cjs +1 -0
- package/dist/chunk-QLZH2Q2C.cjs +1 -0
- package/dist/chunk-W3V54DWZ.js +1 -0
- package/dist/chunk-YJM6R76M.cjs +3 -0
- package/dist/collaboration/hocuspocus.cjs +1 -0
- package/dist/collaboration/hocuspocus.d.cts +58 -0
- package/dist/collaboration/hocuspocus.d.ts +58 -0
- package/dist/collaboration/hocuspocus.js +1 -0
- package/dist/collaboration/index.cjs +2 -0
- package/dist/collaboration/index.d.cts +22 -0
- package/dist/collaboration/index.d.ts +22 -0
- package/dist/collaboration/index.js +2 -0
- package/dist/collaboration/webrtc.cjs +2 -0
- package/dist/collaboration/webrtc.d.cts +86 -0
- package/dist/collaboration/webrtc.d.ts +86 -0
- package/dist/collaboration/webrtc.js +2 -0
- package/dist/collaboration-module-BgRxhW5b.d.cts +45 -0
- package/dist/collaboration-module-BgRxhW5b.d.ts +45 -0
- package/dist/{define-custom-node-Bk8kFO27.d.cts → define-custom-node-B_p2nr9T.d.cts} +2 -20
- package/dist/{define-custom-node-Bk8kFO27.d.ts → define-custom-node-BehI3jWX.d.ts} +2 -20
- package/dist/document-session-2B3QFWBQ.cjs +1 -0
- package/dist/document-session-6UET6BWT.js +1 -0
- package/dist/document-session-DVa53DAw.d.cts +94 -0
- package/dist/document-session-DiBuzWwA.d.ts +94 -0
- package/dist/document-session-RGNZHMWF.js +1 -0
- package/dist/document-session-TU7WVBRB.cjs +1 -0
- package/dist/hocuspocus-EUC4BGDD.js +1 -0
- package/dist/hocuspocus-YIKH6ENE.cjs +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +4 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.js +1 -1
- package/dist/react/hocuspocus.cjs +1 -0
- package/dist/react/hocuspocus.d.cts +104 -0
- package/dist/react/hocuspocus.d.ts +104 -0
- package/dist/react/hocuspocus.js +1 -0
- package/dist/react/index.cjs +2 -2
- package/dist/react/index.d.cts +320 -5
- package/dist/react/index.d.ts +320 -5
- package/dist/react/index.js +2 -2
- package/dist/react/webrtc.cjs +1 -0
- package/dist/react/webrtc.d.cts +98 -0
- package/dist/react/webrtc.d.ts +98 -0
- package/dist/react/webrtc.js +1 -0
- package/dist/room-id-BfudXOZz.d.cts +13 -0
- package/dist/room-id-BfudXOZz.d.ts +13 -0
- package/dist/session-BH7Qgyp6.d.cts +140 -0
- package/dist/session-BH7Qgyp6.d.ts +140 -0
- package/dist/session-okdqygLg.d.cts +82 -0
- package/dist/session-okdqygLg.d.ts +82 -0
- package/dist/vue/hocuspocus.cjs +1 -0
- package/dist/vue/hocuspocus.d.cts +105 -0
- package/dist/vue/hocuspocus.d.ts +105 -0
- package/dist/vue/hocuspocus.js +1 -0
- package/dist/vue/index.cjs +2 -2
- package/dist/vue/index.d.cts +437 -1
- package/dist/vue/index.d.ts +437 -1
- package/dist/vue/index.js +2 -2
- package/dist/vue/webrtc.cjs +1 -0
- package/dist/vue/webrtc.d.cts +99 -0
- package/dist/vue/webrtc.d.ts +99 -0
- package/dist/vue/webrtc.js +1 -0
- package/dist/webrtc-36GPPCW4.js +2 -0
- package/dist/webrtc-CDIFHCQY.cjs +2 -0
- package/package.json +62 -7
- package/dist/chunk-4LFF2FXG.cjs +0 -1
- package/dist/chunk-TH5PXU6L.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunkQ4YPX2DT_cjs=require('../chunk-Q4YPX2DT.cjs'),vue=require('vue');var c=Symbol("useHocuspocusCollaboration.createRoom");function p(o){return o?`${o.url}:${o.roomId}:${o.bootstrap.kind}:${o.identity.actorId}`:""}async function d(o){let{createHocuspocusCollaboration:r}=await import('../hocuspocus-YIKH6ENE.cjs');return r(o)}function y(o){return o?.[c]??d}function C(o){let r=vue.getCurrentInstance(),e=chunkQ4YPX2DT_cjs.d({ownerKey:`vue-hocuspocus:${String(r?.uid??"anonymous")}`,hookName:"useHocuspocusCollaboration",createRoomOf:()=>y(vue.toValue(o)),hostModulesOf:()=>vue.toValue(o)?.modules??chunkQ4YPX2DT_cjs.c,autoRoomOf:()=>vue.toValue(o)?.room??null,autoKeyOf:()=>p(vue.toValue(o)?.room),rejoinOptionsOf:l=>({...l,bootstrap:{kind:"join"}}),identityOf:l=>l.identity});return {document:vue.readonly(e.document),modules:vue.readonly(e.modules),session:vue.readonly(e.session),ydoc:vue.computed(()=>e.room.value?.ydoc??null),provider:vue.computed(()=>e.room.value?.provider??null),pending:vue.readonly(e.pending),error:vue.readonly(e.error),connect:e.connect,leave:e.leave,rejoin:e.rejoin}}exports.useHocuspocusCollaboration=C;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { Ref, MaybeRefOrGetter } from 'vue';
|
|
2
|
+
import * as Y from 'yjs';
|
|
3
|
+
import { HocuspocusProvider } from '@hocuspocus/provider';
|
|
4
|
+
import { CollaborationIdentity, CollaborationFailure } from '@docx-editor.dev/core/collaboration';
|
|
5
|
+
import { EditorModule } from '@docx-editor.dev/core/editor';
|
|
6
|
+
import { a as CollaborationBootstrap, C as CollaborationSession } from '../session-okdqygLg.cjs';
|
|
7
|
+
export { b as CollaborationIdentityUpdate } from '../session-okdqygLg.cjs';
|
|
8
|
+
|
|
9
|
+
/** Bootstrap for one Hocuspocus room. @public */
|
|
10
|
+
type UseHocuspocusCollaborationBootstrap = CollaborationBootstrap;
|
|
11
|
+
/** Arguments for {@link UseHocuspocusCollaborationReturn.connect}. @public */
|
|
12
|
+
interface UseHocuspocusCollaborationConnectOptions {
|
|
13
|
+
/** Hocuspocus server WebSocket URL, for example `wss://collab.example.test`. */
|
|
14
|
+
readonly url: string;
|
|
15
|
+
readonly roomId: string;
|
|
16
|
+
/**
|
|
17
|
+
* Authentication token the provider sends in its auth handshake. Pass a callback and the
|
|
18
|
+
* provider re-evaluates it on every reconnect, which is how expiring JWTs renew.
|
|
19
|
+
*/
|
|
20
|
+
readonly token?: string | (() => string | Promise<string>);
|
|
21
|
+
readonly identity: CollaborationIdentity;
|
|
22
|
+
readonly bootstrap: UseHocuspocusCollaborationBootstrap;
|
|
23
|
+
/** Bound on the wait for the server's initial sync. Default 30000 ms. */
|
|
24
|
+
readonly syncedTimeoutMs?: number;
|
|
25
|
+
/**
|
|
26
|
+
* Admit local edits while the transport is `disconnected`. Buffered updates merge on
|
|
27
|
+
* reconnect. See {@link CreateDocumentCollaborationOptions.offlineEditing}.
|
|
28
|
+
*/
|
|
29
|
+
readonly offlineEditing?: boolean;
|
|
30
|
+
}
|
|
31
|
+
/** Input for {@link useHocuspocusCollaboration}. @public */
|
|
32
|
+
interface UseHocuspocusCollaborationOptions {
|
|
33
|
+
/**
|
|
34
|
+
* Host modules. The hook adds `collaborationModule` when a room is ready.
|
|
35
|
+
* A host collaboration contribution is a configuration error and throws.
|
|
36
|
+
*/
|
|
37
|
+
readonly modules?: readonly EditorModule[];
|
|
38
|
+
/**
|
|
39
|
+
* Connect this room when the composable starts. Omit it and call
|
|
40
|
+
* {@link UseHocuspocusCollaborationReturn.connect} after the user chooses a room.
|
|
41
|
+
*/
|
|
42
|
+
readonly room?: UseHocuspocusCollaborationConnectOptions | null;
|
|
43
|
+
}
|
|
44
|
+
/** Values {@link useHocuspocusCollaboration} returns. @public */
|
|
45
|
+
interface UseHocuspocusCollaborationReturn {
|
|
46
|
+
readonly document: Readonly<Ref<Uint8Array | null>>;
|
|
47
|
+
readonly modules: Readonly<Ref<readonly EditorModule[]>>;
|
|
48
|
+
readonly session: Readonly<Ref<CollaborationSession | null>>;
|
|
49
|
+
/**
|
|
50
|
+
* The room's shared Yjs document, owned by the composable. Null while no room is
|
|
51
|
+
* connected.
|
|
52
|
+
*
|
|
53
|
+
* Read-only escape hatch: observe it or wire additional providers, but leave teardown to
|
|
54
|
+
* the composable.
|
|
55
|
+
*/
|
|
56
|
+
readonly ydoc: Readonly<Ref<Y.Doc | null>>;
|
|
57
|
+
/**
|
|
58
|
+
* The owned `@hocuspocus/provider` instance. Null while no room is connected.
|
|
59
|
+
*
|
|
60
|
+
* Read-only escape hatch for transport-level access (`disconnect()`/`connect()`,
|
|
61
|
+
* server events). The composable destroys it on leave and unmount.
|
|
62
|
+
*/
|
|
63
|
+
readonly provider: Readonly<Ref<HocuspocusProvider | null>>;
|
|
64
|
+
readonly pending: Readonly<Ref<boolean>>;
|
|
65
|
+
readonly error: Readonly<Ref<CollaborationFailure | null>>;
|
|
66
|
+
/**
|
|
67
|
+
* Connect a room. RESOLVES with the failure, or null on success — it does not reject.
|
|
68
|
+
*
|
|
69
|
+
* A rejection carried nothing the resolved value does not, and it made the ordinary call
|
|
70
|
+
* site wrong by default: `onClick={() => connect(options)}` produced an unhandled rejection
|
|
71
|
+
* on every failed connect. `error` reports the same failure for renderers.
|
|
72
|
+
*/
|
|
73
|
+
readonly connect: (options: UseHocuspocusCollaborationConnectOptions) => Promise<CollaborationFailure | null>;
|
|
74
|
+
/**
|
|
75
|
+
* Destroy the room and carry on editing locally.
|
|
76
|
+
*
|
|
77
|
+
* The current bytes live in the editor, not in this composable, so the argument is
|
|
78
|
+
* required: pass `await editor.save()` to keep what the room typed. The host remounts the
|
|
79
|
+
* editor from exactly these bytes.
|
|
80
|
+
*/
|
|
81
|
+
readonly leave: (nextDocument: Uint8Array) => void;
|
|
82
|
+
/**
|
|
83
|
+
* Recover a session that reached status `error`: leave with `nextDocument`, then connect
|
|
84
|
+
* again to the same room with the same identity, url, and token.
|
|
85
|
+
*
|
|
86
|
+
* The reconnect always uses bootstrap `{ kind: 'join' }`, because the server still holds
|
|
87
|
+
* the room. When the server no longer holds it, the join rejects with
|
|
88
|
+
* `initialization-timeout` — nothing is lost, because `nextDocument` (your saved bytes)
|
|
89
|
+
* stays mounted locally. A connect that failed also counts as the prior attempt, so
|
|
90
|
+
* rejoin retries it as a joiner.
|
|
91
|
+
*/
|
|
92
|
+
readonly rejoin: (nextDocument: Uint8Array) => Promise<CollaborationFailure | null>;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Own a Hocuspocus collaboration room for a Vue host.
|
|
96
|
+
*
|
|
97
|
+
* The default Pro Vue entry does not import this composable. Import it from
|
|
98
|
+
* `@docx-editor.dev/pro/vue/hocuspocus` so a review-only bundle does not load
|
|
99
|
+
* a network provider.
|
|
100
|
+
*
|
|
101
|
+
* @public
|
|
102
|
+
*/
|
|
103
|
+
declare function useHocuspocusCollaboration(options?: MaybeRefOrGetter<UseHocuspocusCollaborationOptions | null>): UseHocuspocusCollaborationReturn;
|
|
104
|
+
|
|
105
|
+
export { CollaborationSession, type UseHocuspocusCollaborationBootstrap, type UseHocuspocusCollaborationConnectOptions, type UseHocuspocusCollaborationOptions, type UseHocuspocusCollaborationReturn, useHocuspocusCollaboration };
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { Ref, MaybeRefOrGetter } from 'vue';
|
|
2
|
+
import * as Y from 'yjs';
|
|
3
|
+
import { HocuspocusProvider } from '@hocuspocus/provider';
|
|
4
|
+
import { CollaborationIdentity, CollaborationFailure } from '@docx-editor.dev/core/collaboration';
|
|
5
|
+
import { EditorModule } from '@docx-editor.dev/core/editor';
|
|
6
|
+
import { a as CollaborationBootstrap, C as CollaborationSession } from '../session-okdqygLg.js';
|
|
7
|
+
export { b as CollaborationIdentityUpdate } from '../session-okdqygLg.js';
|
|
8
|
+
|
|
9
|
+
/** Bootstrap for one Hocuspocus room. @public */
|
|
10
|
+
type UseHocuspocusCollaborationBootstrap = CollaborationBootstrap;
|
|
11
|
+
/** Arguments for {@link UseHocuspocusCollaborationReturn.connect}. @public */
|
|
12
|
+
interface UseHocuspocusCollaborationConnectOptions {
|
|
13
|
+
/** Hocuspocus server WebSocket URL, for example `wss://collab.example.test`. */
|
|
14
|
+
readonly url: string;
|
|
15
|
+
readonly roomId: string;
|
|
16
|
+
/**
|
|
17
|
+
* Authentication token the provider sends in its auth handshake. Pass a callback and the
|
|
18
|
+
* provider re-evaluates it on every reconnect, which is how expiring JWTs renew.
|
|
19
|
+
*/
|
|
20
|
+
readonly token?: string | (() => string | Promise<string>);
|
|
21
|
+
readonly identity: CollaborationIdentity;
|
|
22
|
+
readonly bootstrap: UseHocuspocusCollaborationBootstrap;
|
|
23
|
+
/** Bound on the wait for the server's initial sync. Default 30000 ms. */
|
|
24
|
+
readonly syncedTimeoutMs?: number;
|
|
25
|
+
/**
|
|
26
|
+
* Admit local edits while the transport is `disconnected`. Buffered updates merge on
|
|
27
|
+
* reconnect. See {@link CreateDocumentCollaborationOptions.offlineEditing}.
|
|
28
|
+
*/
|
|
29
|
+
readonly offlineEditing?: boolean;
|
|
30
|
+
}
|
|
31
|
+
/** Input for {@link useHocuspocusCollaboration}. @public */
|
|
32
|
+
interface UseHocuspocusCollaborationOptions {
|
|
33
|
+
/**
|
|
34
|
+
* Host modules. The hook adds `collaborationModule` when a room is ready.
|
|
35
|
+
* A host collaboration contribution is a configuration error and throws.
|
|
36
|
+
*/
|
|
37
|
+
readonly modules?: readonly EditorModule[];
|
|
38
|
+
/**
|
|
39
|
+
* Connect this room when the composable starts. Omit it and call
|
|
40
|
+
* {@link UseHocuspocusCollaborationReturn.connect} after the user chooses a room.
|
|
41
|
+
*/
|
|
42
|
+
readonly room?: UseHocuspocusCollaborationConnectOptions | null;
|
|
43
|
+
}
|
|
44
|
+
/** Values {@link useHocuspocusCollaboration} returns. @public */
|
|
45
|
+
interface UseHocuspocusCollaborationReturn {
|
|
46
|
+
readonly document: Readonly<Ref<Uint8Array | null>>;
|
|
47
|
+
readonly modules: Readonly<Ref<readonly EditorModule[]>>;
|
|
48
|
+
readonly session: Readonly<Ref<CollaborationSession | null>>;
|
|
49
|
+
/**
|
|
50
|
+
* The room's shared Yjs document, owned by the composable. Null while no room is
|
|
51
|
+
* connected.
|
|
52
|
+
*
|
|
53
|
+
* Read-only escape hatch: observe it or wire additional providers, but leave teardown to
|
|
54
|
+
* the composable.
|
|
55
|
+
*/
|
|
56
|
+
readonly ydoc: Readonly<Ref<Y.Doc | null>>;
|
|
57
|
+
/**
|
|
58
|
+
* The owned `@hocuspocus/provider` instance. Null while no room is connected.
|
|
59
|
+
*
|
|
60
|
+
* Read-only escape hatch for transport-level access (`disconnect()`/`connect()`,
|
|
61
|
+
* server events). The composable destroys it on leave and unmount.
|
|
62
|
+
*/
|
|
63
|
+
readonly provider: Readonly<Ref<HocuspocusProvider | null>>;
|
|
64
|
+
readonly pending: Readonly<Ref<boolean>>;
|
|
65
|
+
readonly error: Readonly<Ref<CollaborationFailure | null>>;
|
|
66
|
+
/**
|
|
67
|
+
* Connect a room. RESOLVES with the failure, or null on success — it does not reject.
|
|
68
|
+
*
|
|
69
|
+
* A rejection carried nothing the resolved value does not, and it made the ordinary call
|
|
70
|
+
* site wrong by default: `onClick={() => connect(options)}` produced an unhandled rejection
|
|
71
|
+
* on every failed connect. `error` reports the same failure for renderers.
|
|
72
|
+
*/
|
|
73
|
+
readonly connect: (options: UseHocuspocusCollaborationConnectOptions) => Promise<CollaborationFailure | null>;
|
|
74
|
+
/**
|
|
75
|
+
* Destroy the room and carry on editing locally.
|
|
76
|
+
*
|
|
77
|
+
* The current bytes live in the editor, not in this composable, so the argument is
|
|
78
|
+
* required: pass `await editor.save()` to keep what the room typed. The host remounts the
|
|
79
|
+
* editor from exactly these bytes.
|
|
80
|
+
*/
|
|
81
|
+
readonly leave: (nextDocument: Uint8Array) => void;
|
|
82
|
+
/**
|
|
83
|
+
* Recover a session that reached status `error`: leave with `nextDocument`, then connect
|
|
84
|
+
* again to the same room with the same identity, url, and token.
|
|
85
|
+
*
|
|
86
|
+
* The reconnect always uses bootstrap `{ kind: 'join' }`, because the server still holds
|
|
87
|
+
* the room. When the server no longer holds it, the join rejects with
|
|
88
|
+
* `initialization-timeout` — nothing is lost, because `nextDocument` (your saved bytes)
|
|
89
|
+
* stays mounted locally. A connect that failed also counts as the prior attempt, so
|
|
90
|
+
* rejoin retries it as a joiner.
|
|
91
|
+
*/
|
|
92
|
+
readonly rejoin: (nextDocument: Uint8Array) => Promise<CollaborationFailure | null>;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Own a Hocuspocus collaboration room for a Vue host.
|
|
96
|
+
*
|
|
97
|
+
* The default Pro Vue entry does not import this composable. Import it from
|
|
98
|
+
* `@docx-editor.dev/pro/vue/hocuspocus` so a review-only bundle does not load
|
|
99
|
+
* a network provider.
|
|
100
|
+
*
|
|
101
|
+
* @public
|
|
102
|
+
*/
|
|
103
|
+
declare function useHocuspocusCollaboration(options?: MaybeRefOrGetter<UseHocuspocusCollaborationOptions | null>): UseHocuspocusCollaborationReturn;
|
|
104
|
+
|
|
105
|
+
export { CollaborationSession, type UseHocuspocusCollaborationBootstrap, type UseHocuspocusCollaborationConnectOptions, type UseHocuspocusCollaborationOptions, type UseHocuspocusCollaborationReturn, useHocuspocusCollaboration };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {d as d$1,c as c$1}from'../chunk-W3V54DWZ.js';import {getCurrentInstance,toValue,readonly,computed}from'vue';var c=Symbol("useHocuspocusCollaboration.createRoom");function p(o){return o?`${o.url}:${o.roomId}:${o.bootstrap.kind}:${o.identity.actorId}`:""}async function d(o){let{createHocuspocusCollaboration:r}=await import('../hocuspocus-EUC4BGDD.js');return r(o)}function y(o){return o?.[c]??d}function C(o){let r=getCurrentInstance(),e=d$1({ownerKey:`vue-hocuspocus:${String(r?.uid??"anonymous")}`,hookName:"useHocuspocusCollaboration",createRoomOf:()=>y(toValue(o)),hostModulesOf:()=>toValue(o)?.modules??c$1,autoRoomOf:()=>toValue(o)?.room??null,autoKeyOf:()=>p(toValue(o)?.room),rejoinOptionsOf:l=>({...l,bootstrap:{kind:"join"}}),identityOf:l=>l.identity});return {document:readonly(e.document),modules:readonly(e.modules),session:readonly(e.session),ydoc:computed(()=>e.room.value?.ydoc??null),provider:computed(()=>e.room.value?.provider??null),pending:readonly(e.pending),error:readonly(e.error),connect:e.connect,leave:e.leave,rejoin:e.rejoin}}export{C as useHocuspocusCollaboration};
|
package/dist/vue/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var store=require('@docx-editor.dev/core/store'),layout=require('@docx-editor.dev/core/layout'),vue=require('vue'),vue$1=require('@docx-editor.dev/vue'),jsxRuntime=require('vue/jsx-runtime'),editor=require('@docx-editor.dev/core/editor');function Zt(e){}var uo=new Set(["__proto__","constructor","prototype"]);function ze(e){if(e.length>64)return null;let t=e.indexOf(":");if(t<=0)return null;let r=e.slice(0,t),n=e.slice(t+1),o=n.indexOf("?"),i=o===-1?n:n.slice(0,o);if(i.length===0)return null;let s=Object.create(null);if(o!==-1)for(let[a,u]of new URLSearchParams(n.slice(o+1))){if(uo.has(a))return null;s[a]=u;}return {prefix:r,name:i,attrs:s}}function Xe(e,t){if(t.length===0)return {ok:false,reason:"malformed",issues:["the node carries no payload"]};if(t.length>262144)return {ok:false,reason:"malformed",issues:[`the payload is ${String(t.length)} characters; the cap is ${String(262144)}`]};let r;try{r=JSON.parse(t);}catch(i){return {ok:false,reason:"malformed",issues:[i instanceof Error?i.message:"the payload is not JSON"]}}let n=xt(r);if(!e)return {ok:true,value:n};let o=e["~standard"].validate(n);return co(o)?{ok:false,reason:"async",issues:["the schema validates asynchronously, which the read path cannot await"]}:o.issues?{ok:false,reason:"invalid",issues:o.issues.map(mo)}:{ok:true,value:o.value}}function co(e){return typeof e.then=="function"}function mo(e){let t=(e.path??[]).map(r=>String(typeof r=="object"?r.key:r)).join(".");return t.length>0?`${t}: ${e.message}`:e.message}var fo=new Set(["__proto__","constructor","prototype"]);function xt(e){if(Array.isArray(e))return e.map(xt);if(e===null||typeof e!="object")return e;let t=Object.create(null);for(let[r,n]of Object.entries(e))fo.has(r)||(t[r]=xt(n));return t}function Je(e){return typeof e=="object"&&e!==null&&typeof e.name=="string"&&typeof e.tagPrefix=="string"}var Nt=/^[A-Za-z0-9_.-]+$/;function po(e){for(let t of e.children)if(!(t.kind==="textValue"||t.localName!=="sdtPr")){for(let r of t.children)if(!(r.kind==="textValue"||r.localName!=="tag")){for(let n of r.attributes)if(n.localName==="val")return n.value}}}function Wt(e){if(e.kind==="textValue")return e.value;let t="";for(let r of e.children)t+=Wt(r);return t}function zt(e,t,r={}){if(t.length===0)return [];let n=new Map;for(let s of t){let a=`${s.tagPrefix}:${s.name}`;if(n.has(a))throw new Error(`recognizeCustomNodes: duplicate definition for ${JSON.stringify(a)}`);n.set(a,s);}let o=[],i=(s,a)=>{if(!(s.kind==="textValue"||a>64)){if(s.kind==="contentControl"){let u=po(s),d=u!==void 0?ze(u):null,l=d?n.get(`${d.prefix}:${d.name}`):void 0;if(d&&l&&u!==void 0){let c=Wt(s),f=yo(l,s.id,r.payloads?.get(s.id),store.contentControlPropertiesOf(s).dataBinding!==void 0,r.onDiagnostic),m=l.fromDocx?l.fromDocx({attrs:d.attrs,text:c,...f.present?{data:f.value}:{}}):d.attrs;if(m!==null){o.push({name:l.name,attrs:m,text:c,nodeId:s.id,tag:u,...f.present?{data:f.value}:{}});return}}}for(let u of s.children)i(u,a+1);}};return i(e.root,0),o}function yo(e,t,r,n,o){if(!r)return n&&o?.({code:"payload-missing",name:e.name,nodeId:t,issues:["the control binds a store node this document does not hold"]}),{present:false};let i=Xe(e.schema,r.data);return i.ok?{present:true,value:i.value}:(o?.({code:"payload-invalid",name:e.name,nodeId:t,issues:i.issues}),{present:false})}function Jt(e,t){let r=store.findNode(e,t);return !r||r.kind!=="paragraph"?[]:store.revisionItemsOf({id:e.id,name:e.name,contentType:e.contentType,root:r})}function No(e,t,r,n){if(t.length===0)return [];let o=zt(e,t,{...r===void 0?{}:{payloads:r},...n===void 0?{}:{onDiagnostic:n}});if(o.length===0)return [];let i=store.locateSites(e),s=[];for(let a of o){let u=t.find(c=>c.name===a.name&&a.tag.startsWith(`${c.tagPrefix}:`));if(!u)continue;let d=u.reviewCard?u.reviewCard({attrs:a.attrs,text:a.text,...a.data===void 0?{}:{data:a.data}}):null;if(u.reviewCard&&d===null)continue;let l=i.get(a.nodeId);s.push({kind:"custom",id:a.nodeId,name:a.name,tag:a.tag,attrs:a.attrs,text:a.text,...a.data===void 0?{}:{data:a.data},carded:u.reviewCard!==void 0&&d!==null,title:d?.title??"",...d?.detail!==void 0?{detail:d.detail}:{},...d?.icon!==void 0?{icon:d.icon}:{},range:l?{partName:e.name,start:{paragraphId:l.paragraphId,offset:l.start},end:{paragraphId:l.paragraphId,offset:l.end}}:null});}return s}function Qt(e){let t=store.collectReviewItems(e),r=(e.customNodes??[]).filter(Je);if(r.length===0)return t;let n=[e.storyPart],o=new Set([e.storyPart.name]);for(let u of e.furnitureParts??[])o.has(u.name)||(o.add(u.name),n.push(u));let i=[],s=new Map;for(let u of n){i.push(...No(u,r,e.customNodePayloads,e.reportCustomNodeDiagnostic));let d=s.size;for(let[l,c]of store.paragraphOrderOfPart(u))s.has(l)||s.set(l,d+c);}return i.length===0?t:[...t,...i].sort((u,d)=>layout.reviewItemPositionRank(u,s)-layout.reviewItemPositionRank(d,s))}function Co(e={}){return Zt(e.licenseKey),{id:"review",review:{displayModes:["all-markup","proposed","original"],collectReviewItems:Qt,revisionItemsOfParagraph:Jt}}}var en=Symbol("proEditorRenderRevision");function tn(e){return vue.provide(en,e),e}function fe(){let e=vue.inject(en,null);if(e)return e;let t=vue$1.useDocxEditor(),r=vue.shallowRef("none");return vue.watch(()=>t.value,(n,o,i)=>{if(!n){r.value="none";return}let s=n,a=`${s.getReviewRevision()}:${s.getEditingMode()}`;r.value=a;let u=false,d=null,l=()=>{u||d!==null||(d=setTimeout(()=>{if(d=null,u)return;let g=`${s.getReviewRevision()}:${s.getEditingMode()}`;g!==a&&(a=g,r.value=g);},0));},c=s.on("change",l),f=s.on("selectionChange",l),m=s.on("error",l);i(()=>{u=true,d!==null&&clearTimeout(d),c(),f(),m();});},{immediate:true,flush:"sync"}),r}function Qe(e){if(e!==void 0)return typeof e=="function"?e():typeof e=="object"&&e!==null&&"value"in e?e.value:e}function nn(e){return `${e.getReviewRevision()}:${e.getEditingMode()}`}function Oo(e){let t=vue$1.useDocxEditor(),r=fe();return bt(t,e,r)}function Ct(e,t){let r=vue$1.useDocxEditor();return bt(r,e,t)}function _o(e,t){return bt(e,t)}function bt(e,t,r){let n=r?null:vue.shallowRef("none"),o=()=>{(r??n)?.value;};r||vue.watch(()=>e.value,(w,x,P)=>{if(!w){n.value="none";return}let K=nn(w);n.value=K;let J=false,Y=null,ne=()=>{J||Y!==null||(Y=setTimeout(()=>{if(Y=null,J)return;let Ne=nn(w);Ne!==K&&(K=Ne,n.value=Ne);},0));},pt=w.on("change",ne),yt=w.on("selectionChange",ne),Fe=w.on("error",ne);P(()=>{J=true,Y!==null&&clearTimeout(Y),pt(),yt(),Fe();});},{immediate:true,flush:"sync"});let i=vue.computed(()=>{o();let w=e.value,x=Qe(t);return w?w.getReviewItems(x).filter(P=>P.item.kind!=="custom"||P.item.carded):[]}),s=vue.computed(()=>i.value.find(w=>w.isActive)?.key??null),a=(w,x)=>{let P=e.value;return P?P.setActiveReviewItem(w,x).ok:false},u=w=>{let x=e.value;return !x||w.kind!=="revision"||w.readOnly?false:x.acceptReviewItem(w.key).ok},d=w=>{let x=e.value;return !x||w.kind!=="revision"||w.readOnly?false:x.rejectReviewItem(w.key).ok},l=w=>{let x=e.value;return !x||w.kind!=="comment"?false:x.setCommentResolved(w.key,true).ok},c=w=>{let x=e.value;return !x||w.kind!=="comment"?false:x.setCommentResolved(w.key,false).ok},f=vue.computed(()=>(o(),e.value?.getEditingMode()==="viewing"?"the document is open for viewing":null)),m=w=>{let x=e.value;return !x||w.kind==="custom"||w.kind==="revision"&&w.readOnly?false:x.deleteReviewItem(w.key).ok},g=(w,x,P)=>x.trim().length===0||!e.value?false:e.value.replyToReviewItem(w.key,x,P).ok,p=vue.computed(()=>{o();let w=e.value;return w?w.getSelectionPlacement()?.anchorY??null:null}),N=(w,x)=>w.trim().length===0||!e.value?false:e.value.addComment(w,x).ok,I=vue.computed(()=>{o();let w=e.value;return w?w.isReviewPaneOpen():true}),y=w=>{let x=e.value;!x||x.isReviewPaneOpen()===w||x.exec({type:"toggleReviewPane"});},E=vue.computed(()=>{o();let w=e.value;if(w===null)return false;let x=w.snapshot();return !x.isLoading&&x.parseError===null});return {items:i,activeKey:s,setActive:a,accept:u,reject:d,resolve:l,reopen:c,commentResolutionDisabledReason:f,remove:m,reply:g,selectionAnchorY:p,comment:N,paneOpen:I,setPaneOpen:y,ready:E}}function Po(e,t,r={}){return vue.computed(()=>{let n=Qe(e)??[],o=Qe(t)??new Map,i=Qe(r)??{},s=i.gap??8,a=i.scale??1,u=i.defaultHeight??0,d=new Map,l=Number.NEGATIVE_INFINITY;for(let c of n){let f=c.anchorY===null?Number.isFinite(l)?l:0:Math.max(c.anchorY,l);d.set(c.key,f),l=f+((o.get(c.key)??u)+s)/a;}return d})}var Lo=new Set(["List","Markers","AddComment","Draft","Balloon"]),$o=new Set(["Card","Empty"]);function Ko(e){return vue.isVNode(e)}function Ee(e,t){let r=t==="root"?Lo:$o,n={},o=[],i=s=>{for(let a of s){if(!Ko(a))continue;if(a.type===vue.Fragment){let d=Array.isArray(a.children)?a.children:[];i(d);continue}let u=a.type.docxReviewPart;u&&r.has(u)?n[u]=a:o.push(a);}};return i(e),{parts:n,rest:o}}function et(e,t){if(!t)return e;let r=e.props.class;return vue.cloneVNode(e,{class:`${t}${r?` ${r}`:""}`})}var rn=e=>e.isLoading||e.parseError!==null||e.pageSetup==null,ke=e=>e.editingMode==="viewing",an={scale:96/72,top:0,left:null,compactCardLeft:null},sn=16,Te=300,ln=12,te="\0compose",tt=600,nt=8,dn=72,un=64,cn=480,mn=30,fn=Object.freeze({placement:false});function Ae(e,t){return e.kind!=="comment"?false:e.parentId!==void 0?t.has(e.parentId):e.parentRevisionId!==void 0?t.has(e.parentRevisionId):false}function Oe(e){return new Set(e.map(t=>t.id))}function L(e){let t=e.target?.tagName;t==="INPUT"||t==="SELECT"||t==="TEXTAREA"||e.preventDefault();}function vn(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"?":t.slice(0,2).map(r=>r[0].toUpperCase()).join("")}var ot=new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});function pn(e){let t={},r=[],n=o=>{if(!o)return;let i=Array.isArray(o)?o:[o];for(let s of i){if(!vue.isVNode(s))continue;if(s.type===vue.Fragment){n(s.children);continue}let a=s.type.docxReviewPart;a?t[a]=s:r.push(s);}};return n(e),r.length>0&&(t.__extra=r),t}function A(e,t){return e.docxReviewPart=t,e}var St=Symbol("ReviewContext"),Et=Symbol("ReviewItemContext"),Yo={items:[],activeKey:null,setActive:()=>false,accept:()=>false,reject:()=>false,resolve:()=>false,reopen:()=>false,commentResolutionDisabledReason:null,remove:()=>false,reply:()=>false,selectionAnchorY:null,comment:()=>false,paneOpen:true,setPaneOpen:()=>{},ready:false},Go={t:void 0,cardClassName:void 0,readOnly:false,composeTop:null,review:Yo,allItems:[],authorSlots:new Map,authorInfo:new Map,draftAuthor:null,draftAuthorInfo:void 0,draftAuthorSlot:0,byId:new Map,measure:()=>{},beginDraft:()=>{},endDraft:()=>{},expandedResolvedKey:null,setExpandedResolvedKey:()=>{}};function O(){return vue.inject(St,vue.computed(()=>Go))}var Zo=vue.computed(()=>null);function $(){return vue.inject(Et,Zo)}function Wo(e){let t=O();return vue.computed(()=>{let r=vue.toValue(e);return r===void 0?void 0:t.value.authorInfo.get(r)})}function j(){let e=O(),{t}=vue$1.useTranslation();return r=>e.value.t?.(r)??t(r)}function zo(e){return [e.key,e.isActive?"active":"idle",e.readOnly?"readonly":"editable",e.kind==="comment"&&e.resolved?"resolved":"open",e.text,...e.replyIds].join("\0")}var rt=vue.defineComponent({name:"ReviewItemScope",props:{entry:{type:Object,required:true},measureKey:String,collapsed:Boolean,className:String,testId:String,style:{type:Object,default:void 0}},setup(e,{slots:t}){let r=O(),n=vue.shallowRef(e.entry);vue.watchEffect(()=>{let a=r.value.byId.get(e.entry.id)??e.entry;n.value={...a,replyIds:[...a.replyIds]};}),vue.provide(Et,n);let o=null,i=null,s=a=>{let u=a instanceof HTMLElement?a:null,d=u&&e.measureKey?e.measureKey:null;o===u&&i===d||(i&&r.value.measure(null,i),o=u,i=d,o&&i&&r.value.measure(o,i));};return vue.onBeforeUnmount(()=>{s(null);}),()=>vue.h("div",{onVnodeMounted:a=>{s(a.el instanceof Element?a.el:null);},onVnodeUpdated:a=>{s(a.el instanceof Element?a.el:null);},onVnodeBeforeUnmount:()=>{s(null);},class:`docx-review__slot${e.className?` ${e.className}`:""}`,...e.testId?{"data-testid":e.testId}:{},style:e.style,...e.collapsed?{"data-collapsed":""}:{}},[vue.h(vue.Fragment,{key:zo(n.value)},t.default?.())])}}),at=vue.defineComponent({name:"ReviewReplyScope",props:{entry:{type:Object,required:true}},setup(e,{slots:t}){let r=O(),n=vue.shallowRef(e.entry);return vue.watchEffect(()=>{let o=r.value.byId.get(e.entry.id)??e.entry;n.value={...o,replyIds:[...o.replyIds]};}),vue.provide(Et,n),()=>t.default?.()}});function Nn(e){let t=vue.ref(new WeakMap),r=vue.ref(new Map),n=vue.ref(null),o=(i,s)=>{let a=r.value.get(s);if(!i){a&&(n.value?.unobserve(a),t.value.delete(a),r.value.delete(s));return}typeof ResizeObserver>"u"||(e(s,i.offsetHeight),n.value??=new ResizeObserver(u=>{for(let d of u){let l=t.value.get(d.target);l&&e(l,d.target.offsetHeight);}}),!(a===i&&t.value.get(i)===s)&&(a&&(n.value.unobserve(a),t.value.delete(a)),t.value.set(i,s),r.value.set(s,i),n.value.observe(i)));};return vue.onUnmounted(()=>{n.value?.disconnect(),r.value.clear();}),o}function Tt(e,t){return e?.color??`var(--doc-review-author-${t%nt})`}function se(e,t,r){return e?{"--doc-review-author-current":Tt(t,r)}:{}}function ve(e,t){return (e?.slot??t)%nt}function Cn(e,t,r,n,o){let i=new Map;for(let a of e)i.set(a.author,a);let s=[...t.map(a=>a.author),n?.getConfiguredAuthor()];for(let a of s){if(!a||i.has(a))continue;let u=r.get(a)??0,d=n?.getReviewAuthorStyle(a),l=d?.color??`var(--doc-review-author-${u%nt})`,c=o.get(a),f=c?.slot===u&&c.color===l&&c.style===d?c:{author:a,slot:u,color:l,...d?{style:d}:{}};o.set(a,f),i.set(a,f);}return i}var F=e=>vue.h("svg",{viewBox:"0 -960 960 960",width:16,height:16,ariaHidden:true,focusable:false},[vue.h("path",{d:e,fill:"currentColor"})]),In="M440-400h80v-120h120v-80H520v-120h-80v120H320v80h120v120ZM80-80v-720q0-33 23.5-56.5T160-880h640q33 0 56.5 23.5T880-800v480q0 33-23.5 56.5T800-240H240L80-80Zm126-240h594v-480H160v525l46-45Zm-46 0v-480 480Z",bn="M240-400h480v-80H240v80Zm0-120h480v-80H240v80Zm0-120h480v-80H240v80ZM880-80 720-240H160q-33 0-56.5-23.5T80-320v-480q0-33 23.5-56.5T160-880h640q33 0 56.5 23.5T880-800v720ZM160-320h594l46 45v-525H160v480Zm0 0v-480 480Z",Jo="M880-80 720-240H160q-33 0-56.5-23.5T80-320v-480q0-33 23.5-56.5T160-880h640q33 0 56.5 23.5T880-800v720ZM160-320h594l46 45v-525H160v480Zm0 0v-480 480Z",Pe="M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z",it=()=>vue.h("span",{class:"docx-review__resolved-icon"},[vue.h("span",{class:"docx-review__resolved-comment"},[F(Jo)]),vue.h("span",{class:"docx-review__resolved-tick"},[F(Pe)])]),Sn="M480-160q-134 0-227-93t-93-227q0-134 93-227t227-93q69 0 132 28.5T720-690v-110h80v280H520v-80h168q-32-56-87.5-88T480-720q-100 0-170 70t-70 170q0 100 70 170t170 70q77 0 139-44t87-116h84q-28 106-114 173t-196 67Z",En="m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z",kn="M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520ZM360-280h80v-360h-80v360Zm160 0h80v-360h-80v360ZM280-720v520-520Z",Qo="M200-200h57l391-391-57-57-391 391v57Zm-80 80v-170l528-527q12-11 26.5-17t30.5-6q16 0 31 6t26 18l55 56q12 11 17.5 26t5.5 30q0 16-5.5 30.5T817-647L290-120H120Zm640-584-56-56 56 56Zm-141 85-28-29 57 57-29-28Z",er="M486-160q-76 0-135-45t-85-123l88-38q14 48 48.5 78t85.5 30q42 0 76-20t34-64q0-18-7-33t-19-27h112q5 14 7.5 28.5T694-341q0 86-61.5 133.5T486-160ZM80-520v-80h800v80H80Zm402-360q66 0 116 30t74 84l-88 38q-11-28-38.5-47T480-794q-42 0-72 19t-30 51q0 15 6 27t18 22H272q-6-13-9-27t-3-30q0-70 55-114t167-44Z",tr="M360-160q-83 0-141.5-58.5T160-360v-360q0-83 58.5-141.5T360-920q83 0 141.5 58.5T560-720v360q0 83-58.5 141.5T360-160Zm0-80q50 0 85-35t35-85v-360q0-50-35-85t-85-35q-50 0-85 35t-35 85v360q0 50 35 85t85 35Zm300 80q29 0 49.5-20.5T730-230q0-22-12.5-40T684-296l-64-32v-232l100 100q23 23 51.5 35.5T832-412v-80q-17 0-32-6.5T773-517L633-657q-12-12-27.5-17.5T573-680h-13v520h100ZM360-720Z",nr="M580-360q-25 0-42.5-17.5T520-420v-160q0-25 17.5-42.5T580-640h160q25 0 42.5 17.5T800-580v260q0 66-47 113t-113 47v-80q33 0 56.5-23.5T720-320v-40H580Zm-360 0q-25 0-42.5-17.5T160-420v-160q0-25 17.5-42.5T220-640h160q25 0 42.5 17.5T440-580v260q0 66-47 113t-113 47v-80q33 0 56.5-23.5T360-320v-40H220Z";function Tn(e){if(e.kind==="comment")return bn;if(e.kind==="custom")return e.item.icon??nr;switch(e.revisionKind){case "insert":case "moveTo":return Qo;case "delete":case "moveFrom":return er;case "format":return tr;default:return bn}}function st(e,t){if(e==="paragraphMark")return t==="delete"?"revisions.paragraphMarkDeleted":t==="moveFrom"?"revisions.paragraphMarkMovedFrom":t==="moveTo"?"revisions.paragraphMarkMovedTo":"revisions.paragraphMarkInserted";switch(e){case "insert":return "review.inserted";case "delete":return "review.deleted";case "replace":return "review.replaced";case "moveFrom":return "review.movedFrom";case "moveTo":return "review.movedTo";case "format":return "revisions.runPropertiesChanged";default:return "review.structural"}}function ar(e,t){return typeof t!="function"?e:typeof e!="function"?t:r=>{e(r),r.defaultPrevented||t(r);}}function ir(e,t){let r=vue.mergeProps(e,t);for(let n of Object.keys(e))/^on[A-Z]/.test(n)?r[n]=ar(t[n],e[n]):n==="class"?r[n]=[e[n],t[n]].filter(Boolean).join(" "):n==="style"&&(r[n]={...e[n],...t[n]});return r}function Pn(e){return e==="Enter"||e===" "}function sr(e){return Pn(e.key)?(e.preventDefault(),e.stopPropagation(),true):false}function On(e){return e==="button"}function _n(e,t){return e==="a"||t.href!=null}var pe=vue.defineComponent({name:"ReviewActionSlot",props:{engineDisabled:{type:Boolean,required:true},disabledReason:{type:String,default:null},slotProps:{type:Object,required:true}},setup(e,{slots:t}){return ()=>{let r=t.default?.()??[];if(r.length!==1)return null;let n=r[0];if(!n||typeof n!="object")return null;let o=n.props??{},i=ir(e.slotProps,o);if(!e.engineDisabled){if(!On(n.type)){let s={onClick:a=>{typeof o.onClick=="function"&&o.onClick(a),!a.defaultPrevented&&typeof e.slotProps.onClick=="function"&&e.slotProps.onClick(a),_n(n.type,o)&&a.preventDefault();},onKeydown:a=>{typeof o.onKeydown=="function"&&o.onKeydown(a),Pn(a.key)&&(!a.defaultPrevented&&typeof e.slotProps.onClick=="function"&&e.slotProps.onClick(a),_n(n.type,o)&&a.preventDefault());}};i.onClick=s.onClick,i.onKeydown=s.onKeydown;}return vue.cloneVNode(n,i)}if(On(n.type))i.disabled=true,delete i["aria-disabled"];else {delete i.disabled,i["aria-disabled"]=true,i["data-disabled"]="",i.tabIndex=-1,i.href=void 0,i.role===void 0&&(i.role="button");let s=i.onKeydown;i.onKeydown=a=>{sr(a)||typeof s=="function"&&s(a);};}return e.disabledReason&&(i.title=e.disabledReason),i.onClick=s=>{s.preventDefault(),s.stopPropagation();},vue.cloneVNode(n,i)}}});function Vn(e){let t=A(vue.defineComponent({name:"ReviewResolve",props:{className:String,asChild:Boolean,hidden:Boolean,icon:{type:[Object,String],default:void 0}},setup(n,{slots:o}){let i=e.useRail(),s=e.useItem(),a=e.useLabel(),u=vue$1.useEditorState(ke);return ()=>{let d=s.value;if(n.hidden||!d||d.kind!=="comment"||d.resolved)return null;let l=i.value.review,c=a("comments.resolve"),f=u.value||l.commentResolutionDisabledReason!==null,m=f?a("editingMode.viewingHint"):null,g={type:"button",class:`docx-review__action${n.className?` ${n.className}`:""}`,"data-testid":"review-resolve","aria-label":c,title:m??c,disabled:f,onMousedown:L,onClick:p=>{p.stopPropagation(),!f&&l.resolve(d);}};return n.asChild?vue.h(pe,{engineDisabled:f,disabledReason:m,slotProps:g},o.default):vue.h("button",g,n.icon??o.default?.()??F(Pe))}}}),"Resolve"),r=A(vue.defineComponent({name:"ReviewReopen",props:{className:String,asChild:Boolean,hidden:Boolean,icon:{type:[Object,String],default:void 0}},setup(n,{slots:o}){let i=e.useRail(),s=e.useItem(),a=e.useLabel(),u=vue$1.useEditorState(ke);return ()=>{let d=s.value;if(n.hidden||!d||d.kind!=="comment"||!d.resolved)return null;let l=i.value.review,c=a("comments.reopen"),f=u.value||l.commentResolutionDisabledReason!==null,m=f?a("editingMode.viewingHint"):null,g={type:"button",class:`docx-review__action${n.className?` ${n.className}`:""}`,"data-testid":"review-reopen","aria-label":c,title:m??c,disabled:f,onMousedown:L,onClick:p=>{p.stopPropagation(),!f&&l.reopen(d);}};return n.asChild?vue.h(pe,{engineDisabled:f,disabledReason:m,slotProps:g},o.default):vue.h("button",g,n.icon??o.default?.()??F(Sn))}}}),"Reopen");return {ReviewResolve:t,ReviewReopen:r}}var Ln=new WeakMap;function Me(e){let t=vue.getCurrentInstance();if(!t)throw new Error("useReviewStableId must run during component setup");let r=t.appContext,n=Ln.get(r)??0;return Ln.set(r,n+1),`docx-review-${n}-${e}`}function Hn(e){let t=A(vue.defineComponent({name:"ReviewDraft",props:{top:{type:Number,default:0},left:{type:Number,default:null},className:String,hidden:Boolean},setup(n){let o=e.useRail(),i=e.useLabel(),s=vue.ref(""),a=vue.ref(false),u=Me("draft"),d=null;vue.onMounted(()=>{let c=vue.getCurrentInstance()?.proxy?.$el;if(c instanceof HTMLElement&&(d=o.value.measure,d(c,te)),o.value.readOnly)return;(c instanceof HTMLElement?c.querySelector('[data-testid="review-draft-input"]'):null)?.focus({preventScroll:true});}),vue.onBeforeUnmount(()=>{d?.(null,te);});let l=()=>{let{review:c,endDraft:f,readOnly:m}=o.value;if(m||s.value.trim().length===0)return;let g=c.comment(s.value.trim());a.value=!g,g&&(s.value="",f());};return ()=>{if(n.hidden)return null;let{readOnly:c,draftAuthor:f,draftAuthorInfo:m,draftAuthorSlot:g}=o.value;return vue.h("div",{class:`docx-review__slot${n.left===null?"":" docx-review__slot--compact"}${n.className?` ${n.className}`:""}`,style:{position:"absolute",top:`${n.top}px`,...n.left===null?{}:{left:`${n.left}px`,width:`${Te}px`}}},[vue.h("div",{class:"docx-review__card","data-testid":"review-draft","data-draft":"",...f?{"data-review-author":f,"data-review-author-slot":g}:{},style:se(f??void 0,m,g)},[vue.h("form",{class:"docx-review__reply-box",onSubmit:p=>{p.preventDefault(),l();}},[vue.h("label",{class:"docx-editor-sr-only",for:u},i("comments.addComment")),vue.h("input",{id:u,"data-testid":"review-draft-input",class:"docx-review__input",value:s.value,placeholder:i("comments.addComment"),readonly:c,...a.value?{"aria-invalid":true}:{},onInput:p=>{c||(a.value=false,s.value=p.target.value);},onKeydown:p=>{if(p.key==="Escape"){p.preventDefault(),o.value.endDraft();return}c||p.key!=="Enter"||(p.preventDefault(),l());}}),vue.h("div",{class:"docx-review__reply-actions"},[vue.h("button",{type:"button","data-testid":"review-draft-cancel",class:"docx-review__text-button",onMousedown:L,onClick:()=>o.value.endDraft()},i("common.cancel")),vue.h("button",{type:"submit","data-testid":"review-draft-submit",class:"docx-review__submit",disabled:c||s.value.trim().length===0,title:c?i("editingMode.viewingHint"):void 0},i("common.comment"))]),a.value?vue.h("span",{class:"docx-review__refused",role:"alert"},i("review.commentRefused")):null])])])}}}),"Draft"),r=A(vue.defineComponent({name:"ReviewReply",props:{className:String,hidden:Boolean},setup(n,{slots:o}){let i=e.useRail(),s=e.useItem(),a=e.useLabel(),u=vue.ref(""),d=vue.ref(false),l=Me("reply"),c=fe(),f=vue$1.useDocxEditor(),m=g=>{let p=s.value,{review:N,readOnly:I,byId:y}=i.value,E=g?.querySelector('[data-testid="review-reply-input"]'),w=(E?.value??u.value).trim(),x=p?y.get(p.id)??p:null;if(!x||I||w.length===0)return;let P=f.value?.replyToReviewItem(x.key,w).ok??N.reply(x,w);d.value=!P,P&&(u.value="",E&&(E.value=""));};return ()=>{c.value;let g=s.value;if(n.hidden||!g||!g.isActive||g.kind==="comment"&&g.resolved)return null;let{review:p,readOnly:N}=i.value,I=o.default?.();return I?.length?I:jsxRuntime.jsxs("div",{class:`docx-review__reply-box${n.className?` ${n.className}`:""}`,children:[jsxRuntime.jsx("label",{class:"docx-editor-sr-only",for:l,children:a("comments.replyPlaceholder")}),jsxRuntime.jsx("input",{id:l,"data-testid":"review-reply-input",class:"docx-review__input",placeholder:a("comments.replyPlaceholder"),readonly:N,...d.value?{"aria-invalid":true,"data-refused":""}:{},onInput:y=>{N||(d.value=false,u.value=y.target.value);},onClick:y=>y.stopPropagation(),onKeydown:y=>{N||y.key!=="Enter"||(y.preventDefault(),m(y.currentTarget.closest(".docx-review__reply-box")));}}),jsxRuntime.jsxs("div",{class:"docx-review__reply-actions",children:[jsxRuntime.jsx("button",{type:"button","data-testid":"review-reply-cancel",class:"docx-review__text-button",onMousedown:L,onClick:y=>{y.stopPropagation(),u.value="",d.value=false,p.setActive(null);},children:a("common.cancel")}),jsxRuntime.jsx("button",{type:"button","data-testid":"review-reply-submit",class:"docx-review__submit",disabled:N,title:N?a("editingMode.viewingHint"):void 0,onClick:y=>{y.preventDefault(),y.stopPropagation(),m(y.currentTarget.closest(".docx-review__reply-box"));},children:a("review.reply")})]}),d.value?jsxRuntime.jsx("span",{class:"docx-review__refused",role:"alert","data-testid":"review-reply-refused",children:a("review.replyRefused")}):null]})}}}),"Reply");return {ReviewDraft:t,ReviewReply:r}}var{ReviewResolve:Ot,ReviewReopen:_t}=Vn({useRail:O,useItem:$,useLabel:j}),{ReviewDraft:Pt,ReviewReply:Mt}=Hn({useRail:O,useItem:$,useLabel:j});var ut=A(vue.defineComponent({name:"ReviewEmpty",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let r=j();return ()=>e.hidden?null:jsxRuntime.jsx("div",{class:`docx-review__empty${e.className?` ${e.className}`:""}`,"data-testid":"review-empty",children:t.default?.()??r("review.empty")})}}),"Empty"),ye=A(vue.defineComponent({name:"ReviewAvatar",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let r=$(),n=O();return ()=>{let o=r.value;if(e.hidden||!o)return null;let i=t.default?.();if(i===void 0&&!o.initials)return null;let s={class:`docx-review__avatar${e.className?` ${e.className}`:""}`,"data-testid":"review-avatar","aria-hidden":true};if(e.asChild)return jsxRuntime.jsx(vue$1.Slot,{...s,children:i});let a=n.value.authorInfo.get(o.author)?.style?.avatarUrl,u=i??(a?jsxRuntime.jsx("img",{class:"docx-review__avatar-img",src:a,alt:"",loading:"lazy",decoding:"async",referrerpolicy:"no-referrer"}):void 0)??o.initials;return jsxRuntime.jsx("span",{...s,children:u})}}}),"Avatar"),we=A(vue.defineComponent({name:"ReviewAuthor",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let r=$(),n=j();return ()=>{let o=r.value;if(e.hidden||!o)return null;let i=o.author||n("comments.unknown"),s={class:`docx-review__author${e.className?` ${e.className}`:""}`,"data-testid":"review-author"};return e.asChild?jsxRuntime.jsx(vue$1.Slot,{...s,children:t.default?.()}):jsxRuntime.jsx("span",{...s,children:t.default?.()??i})}}}),"Author"),Re=A(vue.defineComponent({name:"ReviewTime",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let r=$();return ()=>{let n=r.value;if(e.hidden||!n)return null;let o=n.date;if(!o)return null;let i=new Date(o);if(Number.isNaN(i.getTime()))return null;let s={class:`docx-review__time${e.className?` ${e.className}`:""}`,"data-testid":"review-time",datetime:o};return e.asChild?jsxRuntime.jsx(vue$1.Slot,{...s,children:t.default?.()}):jsxRuntime.jsx("time",{...s,children:t.default?.()??ot.format(i)})}}}),"Time"),ge=A(vue.defineComponent({name:"ReviewSummary",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let r=$(),n=j();return ()=>{let o=r.value;if(e.hidden||!o)return null;let i=o.text,s=o.kind!=="revision"?null:n(st(o.revisionKind,o.item.markDirection)),a=o.kind==="revision"&&o.revisionKind==="replace",u={class:`docx-review__summary${e.className?` ${e.className}`:""}`,"data-testid":"review-summary","data-review-selectable":""};if(e.asChild)return jsxRuntime.jsx(vue$1.Slot,{...u,children:t.default?.()});let d=t.default?.();return d?jsxRuntime.jsx("div",{...u,children:d}):jsxRuntime.jsx("div",{...u,children:a?jsxRuntime.jsxs("span",{class:"docx-review__text",children:[n("review.replaced")," ",jsxRuntime.jsxs("span",{class:"docx-review__removed",children:['"',o.replacedText,'"']})," ",n("review.replacedWith")," ",jsxRuntime.jsxs("span",{class:"docx-review__added",children:['"',i,'"']})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[s?jsxRuntime.jsx("span",{class:"docx-review__label","data-kind":o.kind==="revision"?o.revisionKind:"revision",children:s}):null,i?jsxRuntime.jsx("span",{class:"docx-review__text",children:i}):null]})})}}}),"Summary");function Bn(e,t,r,n,o,i,s){return A(vue.defineComponent({name:e,props:{className:String,asChild:Boolean,hidden:Boolean,icon:{type:[Object,String],default:void 0}},setup(a,{slots:u}){let d=O(),l=$(),c=j();return ()=>{let f=l.value,{readOnly:m,review:g}=d.value;if(a.hidden||!f||!s(f))return null;let p=c(n),N=m?c("editingMode.viewingHint"):null,I={type:"button",class:`docx-review__action${a.className?` ${a.className}`:""}`,"data-testid":r,"aria-label":p,title:N??p,disabled:m,onMousedown:L,onClick:y=>{y.stopPropagation(),!m&&i(g,f);}};return a.asChild?jsxRuntime.jsx(pe,{engineDisabled:m,disabledReason:N,slotProps:I,children:u.default?.()}):jsxRuntime.jsx("button",{...I,children:a.icon??u.default?.()??F(o)})}}}),t)}var $e=Bn("ReviewAccept","Accept","review-accept","review.accept",Pe,(e,t)=>e.accept(t),e=>e.kind==="revision"&&!e.readOnly),Ke=Bn("ReviewReject","Reject","review-reject","review.reject",En,(e,t)=>e.reject(t),e=>e.kind==="revision"&&!e.readOnly),ct=A(vue.defineComponent({name:"ReviewDelete",props:{className:String,asChild:Boolean,hidden:Boolean,icon:{type:[Object,String],default:void 0}},setup(e,{slots:t}){let r=O(),n=$(),{t:o}=vue$1.useTranslation();return ()=>{let i=n.value,{readOnly:s,review:a}=r.value;if(e.hidden||!i||i.kind==="custom"||i.kind==="revision"&&i.readOnly)return null;let u=i.kind==="comment"?o("review.deleteComment"):o("review.discardChange"),d=s?o("editingMode.viewingHint"):null,l={type:"button",class:`docx-review__action${e.className?` ${e.className}`:""}`,"data-testid":"review-delete","aria-label":u,title:d??u,disabled:s,onMousedown:L,onClick:c=>{c.stopPropagation(),!s&&a.remove(i);}};return e.asChild?jsxRuntime.jsx(pe,{engineDisabled:s,disabledReason:d,slotProps:l,children:t.default?.()}):jsxRuntime.jsx("button",{...l,children:e.icon??t.default?.()??F(kn)})}}}),"Delete"),Dt=A(vue.defineComponent({name:"ReviewReplies",props:{className:String,hidden:Boolean},setup(e){let t=O(),r=$();return ()=>{let n=r.value;if(e.hidden||!n||n.kind==="custom")return null;let i=(t.value.byId.get(n.id)??n).replyIds.map(s=>t.value.byId.get(s)).filter(s=>s!==void 0);return i.length===0?null:jsxRuntime.jsx("ol",{class:`docx-review__replies${e.className?` ${e.className}`:""}`,children:i.map(s=>jsxRuntime.jsx(at,{entry:s,children:jsxRuntime.jsxs("li",{class:"docx-review__reply","data-testid":"review-reply",children:[jsxRuntime.jsxs("div",{class:"docx-review__head",children:[jsxRuntime.jsx(ye,{}),jsxRuntime.jsxs("div",{class:"docx-review__meta",children:[jsxRuntime.jsx(we,{}),jsxRuntime.jsx(Re,{})]}),jsxRuntime.jsx("div",{class:"docx-review__actions",children:jsxRuntime.jsx(ct,{})})]}),jsxRuntime.jsx(ge,{})]})},s.key))})}}}),"Replies"),qn=vue.defineComponent({name:"ReviewCardPreset",setup(e,{slots:t}){let r=$(),n=vue.computed(()=>pn(t.default?.()));return ()=>{let o=r.value;if(!o)return null;let i=(a,u)=>a in n.value?n.value[a]:u;if(o.kind==="custom"&&o.item.kind==="custom"){let a=o.item;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{class:"docx-review__head",children:[i("Avatar",null),jsxRuntime.jsx("div",{class:"docx-review__meta",children:i("Author",jsxRuntime.jsx("span",{class:"docx-review__author","data-testid":"review-custom-title",children:a.title}))})]}),i("Summary",a.detail?jsxRuntime.jsx("div",{class:"docx-review__summary","data-testid":"review-summary","data-review-selectable":"",children:jsxRuntime.jsx("span",{class:"docx-review__text",children:a.detail})}):null),n.value.__extra]})}let s=o.kind==="revision"&&!o.readOnly;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{class:"docx-review__head",children:[i("Avatar",jsxRuntime.jsx(ye,{})),jsxRuntime.jsxs("div",{class:"docx-review__meta",children:[i("Author",jsxRuntime.jsx(we,{})),i("Time",jsxRuntime.jsx(Re,{}))]}),s||o.kind==="comment"?jsxRuntime.jsxs("div",{class:"docx-review__actions",children:[i("Accept",jsxRuntime.jsx($e,{})),i("Reject",jsxRuntime.jsx(Ke,{})),i("Resolve",jsxRuntime.jsx(Ot,{})),i("Reopen",jsxRuntime.jsx(_t,{})),i("Delete",jsxRuntime.jsx(ct,{}))]}):null]}),i("Summary",jsxRuntime.jsx(ge,{})),i("Replies",jsxRuntime.jsx(Dt,{})),i("Reply",jsxRuntime.jsx(Mt,{})),n.value.__extra]})}}}),He=A(vue.defineComponent({name:"ReviewCard",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let r=O(),n=$(),o=Me("card"),i=j(),s=null,a=d=>{s=d.el instanceof HTMLDetailsElement?d.el:s;},u=d=>{s?.open&&d.target instanceof Node&&!s.contains(d.target)&&(r.value.setExpandedResolvedKey(null),r.value.review.setActive(null),s.open=false);};return vue.onMounted(()=>document.addEventListener("pointerdown",u,true)),vue.onBeforeUnmount(()=>document.removeEventListener("pointerdown",u,true)),()=>{let d=n.value;if(e.hidden||!d)return null;let{review:l,authorSlots:c,authorInfo:f,expandedResolvedKey:m,setExpandedResolvedKey:g}=r.value,p=c.get(d.author)??0,N=!e.asChild&&d.kind==="comment"&&d.resolved,I={class:`docx-review__card${e.className?` ${e.className}`:""}`,"data-testid":"review-card",...N?{}:{"aria-labelledby":`${o}-author ${o}-summary`},"data-kind":d.kind==="revision"?d.revisionKind??"revision":d.kind,...d.author?{"data-review-author":d.author,"data-review-author-slot":ve(f.get(d.author),p)}:{},...d.kind==="custom"&&d.item.kind==="custom"?{"data-node-name":d.item.name}:{},...d.isActive?{"data-active":""}:{},...d.kind==="comment"&&d.resolved?{"data-resolved":""}:{},...N?{"data-resolved-miniature":""}:{},style:se(d.author,f.get(d.author),p),...N?{}:{tabIndex:0,role:"button"},id:o,...N?{}:{onMousedown:y=>{y.target?.closest("[data-review-selectable]")||y.currentTarget.focus({preventScroll:true});},onClick:y=>{y.target?.closest("button, input, textarea, .docx-review__reply-box, [data-review-selectable]")||d.isActive||l.setActive(d.key);},onKeydown:y=>{y.target===y.currentTarget&&(y.key!=="Enter"&&y.key!==" "||(y.preventDefault(),l.setActive(d.key)));}}};return e.asChild?jsxRuntime.jsx(vue$1.Slot,{...I,children:t.default?.()}):N?vue.h("details",{...I,open:m===d.key,onVnodeMounted:a,onVnodeUpdated:a,onVnodeBeforeUnmount:()=>{s=null;},onToggle:y=>{let E=y.currentTarget.open;g(E?d.key:null),l.setActive(E?d.key:null);}},[vue.h("summary",{class:"docx-review__resolved-toggle","aria-label":i("review.showResolvedComment")},[vue.h("span",{class:"docx-review__resolved-status"},i("review.resolved")),it()]),vue.h(qn,null,{default:()=>t.default?.()})]):jsxRuntime.jsx("div",{...I,children:vue.h(qn,null,{default:()=>t.default?.()})})}}}),"Card");var $t=A(vue.defineComponent({name:"ReviewList",props:{stack:{type:Boolean,default:true},positions:{type:Object,default:void 0},collapsed:{type:Object,default:void 0},scale:{type:Number,default:1},offset:{type:Number,default:0},window:{type:Object,default:null},className:String,hidden:Boolean},setup(e,{slots:t}){let r=O();return ()=>{if(e.hidden)return null;let{review:n,cardClassName:o}=r.value,i=t.default?.()??[],s=t.item,a=s?null:Ee(i,"list"),u=Oe(n.items),d=n.items.filter(l=>!Ae(l,u));return d.length===0?s?null:a?.parts.Empty??jsxRuntime.jsx(ut,{}):vue.h("div",{class:`docx-review__list${e.className?` ${e.className}`:""}`},d.map(l=>{let c=e.stack?e.positions?.get(l.key)??l.anchorY:l.anchorY,f=c==null?null:e.offset+c*e.scale;if(f!==null&&e.window&&(f<e.window.top||f>e.window.bottom))return null;let m=f===null?{}:{position:"absolute",top:`${f}px`};return vue.h(rt,{key:l.key,entry:l,measureKey:l.key,collapsed:e.collapsed?.has(l.key),style:m},()=>s?s({item:l}):a?.parts.Card?et(a.parts.Card,o):vue.h(He,o?{className:o}:{},()=>a?.rest))}))}}}),"List"),Kt=A(vue.defineComponent({name:"ReviewMarkers",props:{scale:{type:Number,default:1},offset:{type:Number,default:0},window:{type:Object,default:null},className:String,hidden:Boolean,icon:{type:[Object,Function],default:void 0}},setup(e){let t=O(),r=j(),n=vue.computed(()=>{let{review:o}=t.value,i=Oe(o.items),s=o.items.filter(d=>!Ae(d,i)),a=new Map,u=Number.NEGATIVE_INFINITY;for(let d of s){if(d.anchorY===null)continue;let l=Math.max(e.offset+d.anchorY*e.scale,u);a.set(d.key,l),u=l+mn;}return {roots:s,stackedTops:a}});return ()=>{if(e.hidden)return null;let{review:o,authorSlots:i,authorInfo:s,setExpandedResolvedKey:a}=t.value,{roots:u,stackedTops:d}=n.value;return jsxRuntime.jsx("div",{class:`docx-review__markers${e.className?` ${e.className}`:""}`,children:u.map(l=>{let c=d.get(l.key);return c===void 0||e.window&&(c<e.window.top||c>e.window.bottom)?null:jsxRuntime.jsx("button",{type:"button",class:"docx-review__marker","data-testid":"review-marker","data-kind":l.kind==="revision"?l.revisionKind:l.kind,...l.author?{"data-review-author":l.author,"data-review-author-slot":ve(s.get(l.author),i.get(l.author)??0)}:{},style:{position:"absolute",top:`${c}px`,...l.author?{"--doc-review-author-current":Tt(s.get(l.author),i.get(l.author)??0)}:{}},title:l.author?`${l.author}: ${l.text}`:l.text,"aria-label":`${r("review.showPane")}: ${l.author?`${l.author}. `:""}${l.text}`,onMousedown:L,onClick:()=>{l.kind==="comment"&&l.resolved&&a(l.key),o.setPaneOpen(true),o.setActive(l.key);},children:(typeof e.icon=="function"?e.icon(l):e.icon)??(l.kind==="comment"&&l.resolved?it():F(Tn(l)))},l.key)})})}}}),"Markers"),Ht=A(vue.defineComponent({name:"ReviewAddComment",props:{top:{type:Number,default:null},drafting:{type:Boolean,default:false},className:String,hidden:Boolean},setup(e,{slots:t}){let r=O(),n=j();return ()=>{let{beginDraft:o,composeTop:i,readOnly:s}=r.value;if(e.hidden||e.drafting||i===null||s)return null;let a={type:"button",class:`docx-review__add${e.className?` ${e.className}`:""}`,"data-testid":"review-add-comment",style:{position:"absolute",top:`${i}px`},"aria-label":n("common.comment"),title:n("common.comment"),onMousedown:L,onClick:o},u=t.default?.();return u?.length?vue.h(vue$1.Slot,a,()=>u):vue.h("button",a,F(In))}}}),"AddComment"),hr=vue.defineComponent({name:"BalloonTime",props:{raw:{type:String,required:true}},setup(e){return ()=>{let t=new Date(e.raw);return Number.isNaN(t.getTime())?null:jsxRuntime.jsx("time",{class:"docx-review__time",datetime:e.raw,children:ot.format(t)})}}}),qt=A(vue.defineComponent({name:"ReviewBalloon",props:{className:String,hidden:Boolean},setup(e){let t=vue.getCurrentInstance(),r=O(),n=j(),o=vue.ref(null),i=vue.ref(false),s=vue.ref(false);vue.watch(o,l=>{i.value=l!==null;});let a;vue.onMounted(()=>{let l=vue.getCurrentInstance()?.proxy?.$el,c=l?.closest(".docx-review"),f=c?.closest(".docx-editor__scroll-container")??c?.offsetParent;if(!l||!c||!f)return;let m=(p,N)=>{let I=c.getBoundingClientRect(),y=p.getBoundingClientRect(),E=p.ownerDocument.defaultView?.innerHeight??1/0,w=Number(p.dataset.start),x=Number(p.dataset.end);o.value={revisionId:p.dataset.revisionId,author:p.dataset.reviewAuthor??"",...p.dataset.revisionDate!==void 0?{date:p.dataset.revisionDate}:{},...p.dataset.revisionKind!==void 0?{kind:p.dataset.revisionKind}:{},structuralSite:N,...p.dataset.paragraphId!==void 0?{paragraphId:p.dataset.paragraphId}:{},...Number.isFinite(w)?{start:w}:{},...Number.isFinite(x)?{end:x}:{},left:y.left-I.left,top:y.top-I.top,bottom:y.bottom-I.top,above:y.bottom+220>E},t?.proxy?.$forceUpdate();},g=p=>{let N=p.target;if(!(N instanceof Element)||l.contains(N))return;let I=N.closest("[data-revision-id]");if(I instanceof HTMLElement&&f.contains(I)){let y=I.classList.contains("docx-table-row--revision");if(I.dataset.revisionKind==="format"||y){m(I,y);return}}i.value&&(o.value=null,t?.proxy?.$forceUpdate());};f.addEventListener("pointerdown",g,true),f.addEventListener("mousedown",g,true),a=()=>{f.removeEventListener("pointerdown",g,true),f.removeEventListener("mousedown",g,true);};}),vue.onUnmounted(()=>a?.());let u=vue.computed(()=>{let l=o.value;if(!l)return null;let{allItems:c}=r.value,f=null,m=false,g=null,p=false,N=null,I=false;for(let y of c)if(!(y.kind!=="revision"||y.item.kind!=="revision")){for(let E of y.item.addresses)if(E.id===l.revisionId){if(E.author===l.author){if(E.date===l.date)return y;f===null?f=y:f!==y&&(m=true);}g===null?g=y:g!==y&&(p=true);}if(l.paragraphId!==void 0&&l.start!==void 0&&l.end!==void 0&&(y.revisionKind==="format"||y.revisionKind==="structural")){for(let E of y.item.ranges)if(E.start.paragraphId===l.paragraphId&&E.start.offset<l.end&&E.end.offset>l.start){N===null?N=y:N!==y&&(I=true);break}}}return f!==null&&!m?f:g!==null&&!p?g:N!==null&&!I?N:null}),d=vue.computed(()=>{let l=u.value;return l&&(l.revisionKind==="format"||l.revisionKind==="structural")?l:null});return vue.watch(d,l=>{if(l){s.value=true;return}s.value&&(s.value=false,o.value=null);}),()=>{if(e.hidden)return null;let{review:l,authorSlots:c,authorInfo:f}=r.value,m=o.value,g=m?.kind==="format"?"format":"structural",p=d.value,N=m===null?null:vue.h("div",{class:"docx-review__balloon","data-testid":"review-balloon",style:{left:`${m.left}px`,top:`${m.above?m.top-6:m.bottom+6}px`,transform:m.above?"translateY(-100%)":void 0},onMousedown:L},p?vue.h(at,{entry:p},()=>vue.h("div",{class:"docx-review__card","data-testid":"review-balloon-card","data-kind":p.revisionKind??"revision",...p.author?{"data-review-author":p.author,"data-review-author-slot":ve(f.get(p.author),c.get(p.author)??0)}:{},style:se(p.author,f.get(p.author),c.get(p.author)??0),onClick:()=>l.setActive(p.key)},[vue.h("div",{class:"docx-review__head"},[vue.h(ye),vue.h("div",{class:"docx-review__meta"},[vue.h(we),vue.h(Re)]),p.kind==="revision"&&!p.readOnly?vue.h("div",{class:"docx-review__actions"},[vue.h($e),vue.h(Ke)]):null]),vue.h(ge)])):vue.h("div",{class:"docx-review__card","data-testid":"review-balloon-card","data-kind":g,...m.author?{"data-review-author":m.author,"data-review-author-slot":ve(f.get(m.author),c.get(m.author)??0)}:{},style:se(m.author,f.get(m.author),c.get(m.author)??0)},[vue.h("div",{class:"docx-review__head"},[vue.h("span",{class:"docx-review__avatar","aria-hidden":true},vn(m.author)),vue.h("div",{class:"docx-review__meta"},[vue.h("span",{class:"docx-review__author"},m.author||n("comments.unknown")),m.date?vue.h(hr,{raw:m.date}):null])]),vue.h("div",{class:"docx-review__summary"},[vue.h("span",{class:"docx-review__label","data-kind":g},n(st(g)))])]));return vue.h("div",{class:`docx-review__balloon-root${e.className?` ${e.className}`:""}`},N===null?void 0:[N])}}}),"Balloon");function Be(e,t,r){if(!(e in r))return t;let n=r[e];return !vue.isVNode(n)||!vue.isVNode(t)?n:vue.cloneVNode(n,vue.mergeProps(t.props??{},n.props??{}))}var Pr=vue.defineComponent({name:"ReviewDraftMount",props:{top:{type:Number,required:true},left:{type:Number,default:null}},setup(e){return ()=>vue.h(Pt,{top:e.top,left:e.left})}});function Mr(e,t){return {items:t,activeKey:e.activeKey.value,setActive:e.setActive,accept:e.accept,reject:e.reject,resolve:e.resolve,reopen:e.reopen,commentResolutionDisabledReason:e.commentResolutionDisabledReason.value,remove:e.remove,reply:e.reply,selectionAnchorY:e.selectionAnchorY.value,comment:e.comment,paneOpen:e.paneOpen.value,setPaneOpen:e.setPaneOpen,ready:e.ready.value}}var Dr=vue.defineComponent({name:"DocxEditorReview",props:{className:String,asChild:Boolean,hidden:Boolean,t:{type:Function,default:void 0},card:{type:Object,default:void 0},furniture:{type:[Object,Array],default:void 0},preset:{type:Boolean,default:true},stack:{type:Boolean,default:true},gap:{type:Number,default:8},filter:{type:Function,default:void 0},structural:{type:Boolean,default:false},formatting:{type:Boolean,default:false}},setup(e,{slots:t}){let r=vue.getCurrentInstance(),n=vue$1.useDocxEditor(),o=vue$1.useEditorState(rn),i=vue$1.useEditorState(ke),s=fe(),a=vue.computed(()=>{let v=[];return e.structural||v.push("structural"),e.formatting||v.push("format"),v.length>0?v:void 0}),u=vue.computed(()=>a.value?{excludeRevisionKinds:a.value}:void 0);vue.watch([n,a],()=>{n.value?.setReviewActivationExclusions(a.value??null);},{immediate:true}),vue.onUnmounted(()=>{n.value?.setReviewActivationExclusions(null);}),tn(s);let d=Ct(fn,s),l=Ct(()=>u.value,s),{t:c}=vue$1.useTranslation(),f=(v,R)=>e.t?.(v,R)??c(v,R),m=vue.shallowRef(null),g=vue.inject(vue$1.ReviewRailContext,vue.shallowRef({mounted:0,register:()=>()=>{},registerCommentDraft:()=>()=>{},requestCommentDraft:()=>false})),p=vue.ref(false),N,I=()=>{if(!p.value||e.hidden){N?.(),N=void 0;return}N??=g.value.register();};vue.onMounted(()=>{p.value=true,I();}),vue.watch(()=>e.hidden,I);let y=vue.computed(()=>l.paneOpen.value),E=vue$1.useReviewGutter(),w=vue.ref(null),x=vue.computed(()=>y.value&&(w.value??E.value.inlineEnd)>0&&(w.value??E.value.inlineEnd)<vue$1.REVIEW_PANE_GUTTER),P=vue.computed(()=>y.value&&!x.value),K=vue.computed(()=>e.filter?l.items.value.filter(v=>e.filter(v)):l.items.value),J=vue.ref(null);vue.watch(K,v=>{let R=J.value;R!==null&&!v.some(h=>h.key===R&&h.kind==="comment"&&h.resolved)&&(J.value=null);},{flush:"sync"});let Y=vue.computed(()=>n.value?.getConfiguredAuthor()??null),ne=vue.computed(()=>{let v=new Map;for(let R of K.value)R.author&&!v.has(R.author)&&v.set(R.author,v.size);return Y.value&&!v.has(Y.value)&&v.set(Y.value,v.size),v}),pt=vue$1.useReviewAuthors(),yt=new Map,Fe=vue.computed(()=>Cn(pt.value,K.value,ne.value,n.value,yt)),Ne=vue.computed(()=>{let v=new Map;for(let R of d.items.value)v.set(R.id,R);return v}),Ye=vue.ref(new Map),no=Nn((v,R)=>{if(R<=0||Ye.value.get(v)===R)return;let h=new Map(Ye.value);h.set(v,R),Ye.value=h;}),M=vue.ref(an),Ce;vue.watch([n,K,o,()=>e.hidden,m,x],()=>{Ce?.(),Ce=void 0;let v=m.value,R=n.value;if(!R||!v||o.value||e.hidden)return;let h=v.offsetParent,k=h?.querySelector(".docx-paginated-surface")??null,b=()=>{if(h){let me=Number.parseFloat(getComputedStyle(h).getPropertyValue("--docx-review-gutter"));w.value=Number.isFinite(me)?me:null;}else w.value=null;let V=k&&h?k.getBoundingClientRect():null,ee=V&&h?h.getBoundingClientRect():null,ue=V&&ee&&h?V.right-ee.left-h.clientLeft+h.scrollLeft+sn:null,re={scale:R.getRenderScale(),top:V&&ee&&h?V.top-ee.top-h.clientTop+h.scrollTop:0,left:ue,compactCardLeft:ue===null||!h?null:h.scrollLeft+h.clientWidth-ue-Te-ln},ce=M.value;(ce.scale!==re.scale||ce.top!==re.top||ce.left!==re.left||ce.compactCardLeft!==re.compactCardLeft)&&(M.value=re);};b();let T=new ResizeObserver(b);h&&T.observe(h),k&&T.observe(k);let U=h&&typeof MutationObserver<"u"?new MutationObserver(b):null;if(U?.observe(h,{attributes:true,attributeFilter:["style"]}),!x.value||!h){Ce=()=>{U?.disconnect(),T.disconnect();};return}let B=0,D=()=>{B===0&&(B=requestAnimationFrame(()=>{B=0,b();}));};h.addEventListener("scroll",D,{passive:true}),Ce=()=>{B!==0&&cancelAnimationFrame(B),h.removeEventListener("scroll",D),U?.disconnect(),T.disconnect();};},{flush:"post"}),vue.onUnmounted(()=>Ce?.());let Ge;vue.watch([n,o,()=>e.hidden,m],()=>{Ge?.(),Ge=void 0;let v=m.value,R=n.value;if(!R||!v||o.value||e.hidden)return;let h=k=>{let b=k.target;if(!(b instanceof Node)||v.contains(b))return;let T=v.offsetParent;!T||!T.contains(b)||T.querySelector(".docx-paginated-surface")?.contains(b)||R.setActiveReviewItem(null);};document.addEventListener("mousedown",h,true),Ge=()=>document.removeEventListener("mousedown",h,true);},{flush:"post"}),vue.onUnmounted(()=>Ge?.());let de=vue.ref(null),Ze;vue.watch([n,o,()=>e.hidden,m],()=>{Ze?.(),Ze=void 0;let v=m.value,R=v?.offsetParent;if(!R||o.value||e.hidden)return;let h=0,k=()=>{h=0;let B=R.scrollTop-tt,D=R.scrollTop+R.clientHeight+tt,V=de.value;de.value=V&&V.top===B&&V.bottom===D?V:{top:B,bottom:D};},b=0,T=()=>{h===0&&(h=requestAnimationFrame(k)),v?.setAttribute("data-scrolling",""),window.clearTimeout(b),b=window.setTimeout(()=>v?.removeAttribute("data-scrolling"),150);};k(),R.addEventListener("scroll",T,{passive:true});let U=new ResizeObserver(T);U.observe(R),Ze=()=>{h!==0&&cancelAnimationFrame(h),window.clearTimeout(b),R.removeEventListener("scroll",T),U.disconnect();};},{flush:"post"}),vue.onUnmounted(()=>Ze?.());let Q=vue.ref(null),We=vue.shallowRef(null),be=()=>{let v=We.value;v&&v.editor.releaseSelection(v.pin),We.value=null,Q.value=null;};vue.watch(()=>n.value,(v,R)=>{R&&R!==v&&We.value?.editor===R&&be();});let Ft=()=>{let v=n.value;if(!v||i.value)return;let R=v.getSelectionPlacement()?.anchorY??null;if(R===null)return;be();let h=v.retainSelection();h&&(We.value={editor:v,pin:h},l.setPaneOpen(true),Q.value=R,r?.proxy?.$forceUpdate());},Ie,Yt=()=>{if(!p.value||e.hidden){Ie?.(),Ie=void 0;return}Ie??=g.value.registerCommentDraft(Ft);};vue.onMounted(Yt),vue.watch(()=>e.hidden,Yt);let oo=()=>{be(),n.value?.focus(),r?.proxy?.$forceUpdate();};vue.watch(y,v=>{v||Q.value===null||be();}),vue.onBeforeUnmount(()=>{p.value=false,N?.(),N=void 0,Ie?.(),Ie=void 0,be();});let wt=vue.computed(()=>Q.value??l.selectionAnchorY.value),oe=vue.computed(()=>{let v=Oe(K.value);return K.value.filter(R=>!Ae(R,v))}),ro=vue.computed(()=>{let v=Q.value;if(v===null)return oe.value;let R=oe.value.findIndex(k=>k.anchorY!==null&&k.anchorY>v),h={key:te,anchorY:v};return R===-1?[...oe.value,h]:[...oe.value.slice(0,R),h,...oe.value.slice(R)]}),ao=vue.computed(()=>{let v=new Map(Ye.value);for(let R of oe.value){if(v.has(R.key))continue;let h=R.text.length+(R.kind==="revision"?R.replacedText?.length??0:0),k=Math.min(6,Math.max(1,Math.ceil(h/36)));v.set(R.key,64+k*20);}return v}),Rt=vue.computed(()=>{let v=M.value.scale,R=new Map,h=new Set,k=Number.NEGATIVE_INFINITY;for(let b of ro.value){let T=b.anchorY===null?Number.isFinite(k)?k:0:Math.max(b.anchorY,k);R.set(b.key,T);let U=b.anchorY===null?0:(T-b.anchorY)*v,B="isActive"in b&&b.isActive,D=U>cn&&!B&&b.key!==te;D&&h.add(b.key);let V=D?un:ao.value.get(b.key)??dn;k=T+(V+e.gap)/v;}return {stacked:R,collapsedKeys:h}}),Se=vue.computed(()=>wt.value===null?null:M.value.top+(x.value?wt.value:Rt.value.stacked.get(te)??wt.value)*M.value.scale),io=vue.computed(()=>(l.commentResolutionDisabledReason.value,l.selectionAnchorY.value,l.paneOpen.value,l.items.value.length,Mr(l,K.value))),gt=()=>{let v=Y.value,R=v?ne.value.get(v)??0:0;return {t:e.t,cardClassName:e.card?.className,readOnly:i.value,composeTop:Se.value,review:io.value,allItems:d.items.value,authorSlots:ne.value,authorInfo:Fe.value,draftAuthor:v,draftAuthorInfo:v?Fe.value.get(v):void 0,draftAuthorSlot:R,byId:Ne.value,measure:no,beginDraft:Ft,endDraft:oo,expandedResolvedKey:J.value,setExpandedResolvedKey:h=>{J.value=h;}}},ht=vue.shallowRef(gt());return vue.watchEffect(()=>{ht.value=gt();}),vue.watch(()=>s.value,()=>{ht.value=gt(),r?.proxy?.$forceUpdate();},{flush:"sync"}),vue.provide(St,ht),()=>{if(e.hidden||o.value)return null;s.value,d.items.value,Q.value,K.value.length,l.selectionAnchorY.value,l.paneOpen.value,l.commentResolutionDisabledReason.value,Se.value;let v=z=>{m.value=z.el instanceof HTMLElement?z.el:null;},R={onVnodeMounted:v,onVnodeUpdated:v,onVnodeBeforeUnmount:()=>{m.value=null;},class:`docx-review${e.className?` ${e.className}`:""}`,"data-testid":"review-rail","data-count":K.value.length,"data-open":P.value?"":void 0,"data-compact":x.value?"":void 0,role:"complementary","aria-label":f("review.ariaLabel"),onMousedown:L,style:M.value.left===null?void 0:{left:`${M.value.left}px`,right:"auto"}},h=t.default?.()??[],k=e.asChild&&h.length===1&&vue.isVNode(h[0])?h[0]:null,{parts:b,rest:T}=Ee(k?[]:h,"root"),U={stack:e.stack,positions:Rt.value.stacked,collapsed:Rt.value.collapsedKeys,scale:M.value.scale,offset:M.value.top,window:de.value},B=vue.h(Kt,{scale:M.value.scale,offset:M.value.top,window:de.value}),D=x.value?oe.value.find(z=>z.key===l.activeKey.value)??null:null,V=D===null?null:D.anchorY!==null?M.value.top+D.anchorY*M.value.scale:de.value!==null?de.value.top+tt+24:null,ee=Ee(T,"list"),ue=D&&t.item?t.item({item:D}):ee.parts.Card?et(ee.parts.Card,e.card?.className):e.preset?vue.h(He,e.card?.className?{className:e.card.className}:{},()=>ee.rest):null,re=D&&V!==null&&M.value.compactCardLeft!==null&&ue?vue.h(rt,{entry:D,className:"docx-review__slot--compact",testId:"review-compact-card",style:{position:"absolute",top:`${V}px`,left:`${M.value.compactCardLeft}px`,width:`${Te}px`}},()=>ue):null,ce=P.value?e.preset||"List"in b?Be("List",vue.h($t,U,{...T.length>0?{default:()=>T}:{},...t.item?{item:t.item}:{}}),b):T:e.preset||"Markers"in b?[Be("Markers",B,b),re]:T,me=[P.value&&e.furniture!==void 0?vue.h("div",{class:"docx-review__furniture","data-testid":"review-furniture"},[e.furniture]):null,ce,...e.preset||"AddComment"in b?[Be("AddComment",vue.h(Ht,{top:Se.value,drafting:Q.value!==null}),b)]:[],...Q.value===null||Se.value===null||!y.value||!e.preset&&!("Draft"in b)?[]:[Be("Draft",vue.h(Pr,{top:Se.value??0,left:x.value?M.value.compactCardLeft:null}),b)],...e.preset||"Balloon"in b?[Be("Balloon",vue.h(qt),b)]:[]],H=k;if(!H)return vue.h("aside",R,me);let ae=vue.cloneVNode(H,R,true);if(typeof H.type=="string"){let z=Array.isArray(H.children)?H.children:H.children==null?[]:typeof H.children=="string"||typeof H.children=="number"?[H.children]:[];ae.children=[...z,...me],ae.shapeFlag=ae.shapeFlag&-9|16;}else {let z=H.children&&!Array.isArray(H.children)&&typeof H.children=="object"?H.children:{},Gt=z.default;ae.children={...z,default:(...so)=>[...Gt?[Gt(...so)]:[],...me]},ae.shapeFlag=ae.shapeFlag&-25|32;}return ae}}});var Vr=Object.assign(Dr,{List:$t,Empty:ut,Card:He,Avatar:ye,Author:we,Time:Re,Summary:ge,Accept:$e,Reject:Ke,Resolve:Ot,Reopen:_t,Delete:ct,Replies:Dt,Reply:Mt,Markers:Kt,AddComment:Ht,Draft:Pt,Balloon:qt});function je(e){let t=vue$1.useDocxEditor();return vue.computed(()=>{let r=vue.toValue(e);return r||(t.value?.getCustomNodeDefinitions()??[]).filter(Je)})}var Br=".docx-content-control-boundary";function he(e,t){let{node:r,definition:n,controlId:o}=e,i=o?t?.getReviewItems().find(u=>u.kind==="custom"&&u.item.id===o):void 0;if(i?.kind==="custom"){let u=i.item;return {...r,attrs:u.attrs,text:u.text,...u.data===void 0?{}:{data:u.data},...o?{nodeId:o}:{}}}let s=o?jr(t,o,n):void 0,a=n.fromDocx?n.fromDocx({attrs:r.attrs,text:"",...s===void 0?{}:{data:s}}):r.attrs;return a===null?null:{...r,attrs:a,...s===void 0?{}:{data:s},...o?{nodeId:o}:{}}}function jr(e,t,r){let n=e?.surface;if(!n)return;let o=editor.partOfNodeId(n.session,t),i=store.customNodePayloadsByControl(n.session.currentPackage(),(o??n.session.part()).name,n.session.part().name).get(t);if(!i)return;let s=Xe(r.schema,i.data);return s.ok?s.value:void 0}function xe(e,t){let r=e?.closest?.(Br),n=r?.closest(".docx-content-control-chrome"),o=n?.getAttribute("data-tag"),i=o?ze(o):null;if(!r||!i||!o)return null;let s=t.find(a=>a.tagPrefix===i.prefix&&a.name===i.name);return s?{node:{name:i.name,attrs:i.attrs,tag:o,rect:r.getBoundingClientRect()},definition:s,controlId:n?.getAttribute("data-docx-content-control")??null}:null}var jt=".docx-content-control-boundary";function Wr(e){if(!Nt.test(e.tagPrefix)||!Nt.test(e.name))return [];let t=`${e.tagPrefix}:${e.name}`;return [`.docx-content-control-chrome[data-tag="${t}"]`,`.docx-content-control-chrome[data-tag^="${t}?"]`]}var zr=vue.defineComponent({name:"CustomNodeChrome",props:{nodes:{type:Array,default:void 0},onNodeClick:{type:Function,default:void 0},onNodeHover:{type:Function,default:void 0}},setup(e){let t=vue$1.useDocxEditor(),r=je(()=>e.nodes),n,o=null,i=null,s=l=>xe(document.elementFromPoint(l.clientX,l.clientY),r.value),a=l=>{let c=l.button===0?s(l):null;o=c?.controlId??null,i=c?.node.tag??null;},u=l=>{let c=o,f=i;if(o=null,i=null,f===null)return;let m=s(l);if(!m||m.node.tag!==f||c!==null&&m.controlId!==c)return;let g=he(m,t.value);g&&(m.definition.onClick?.(g),e.onNodeClick?.(g));},d=l=>{let c=xe(l.target,r.value);if(!c||l.relatedTarget?.closest?.(jt)===l.target.closest(jt))return;let m=he(c,t.value);m&&(c.definition.onHover?.(m),e.onNodeHover?.(m));};return vue.onMounted(()=>{n=vue.watch(r,(l,c,f)=>{let m=document.createElement("style"),g=[];for(let p of l){let N=Wr(p);if(N.length===0)continue;let I=p.chrome?.color,y=I!==void 0&&typeof CSS<"u"&&CSS.supports("color",I)?I:"var(--doc-accent)";g.push(`${N.map(E=>`${E} ${jt}`).join(", ")} {`," pointer-events: auto !important;"," opacity: 1;"," border: none;",` background: color-mix(in srgb, ${y} 12%, transparent);`," border-radius: 6px;"," cursor: default;","}");}m.textContent=g.join(`
|
|
2
|
-
`),document.head.append(
|
|
1
|
+
'use strict';var chunkQ4YPX2DT_cjs=require('../chunk-Q4YPX2DT.cjs'),store=require('@docx-editor.dev/core/store'),layout=require('@docx-editor.dev/core/layout'),vue=require('vue'),vue$1=require('@docx-editor.dev/vue'),jsxRuntime=require('vue/jsx-runtime'),collaboration=require('@docx-editor.dev/core/collaboration'),editor=require('@docx-editor.dev/core/editor');var Vn=new Set(["__proto__","constructor","prototype"]);function tt(e){if(e.length>64)return null;let t=e.indexOf(":");if(t<=0)return null;let n=e.slice(0,t),o=e.slice(t+1),r=o.indexOf("?"),i=r===-1?o:o.slice(0,r);if(i.length===0)return null;let s=Object.create(null);if(r!==-1)for(let[a,u]of new URLSearchParams(o.slice(r+1))){if(Vn.has(a))return null;s[a]=u;}return {prefix:n,name:i,attrs:s}}function ot(e,t){if(t.length===0)return {ok:false,reason:"malformed",issues:["the node carries no payload"]};if(t.length>262144)return {ok:false,reason:"malformed",issues:[`the payload is ${String(t.length)} characters; the cap is ${String(262144)}`]};let n;try{n=JSON.parse(t);}catch(i){return {ok:false,reason:"malformed",issues:[i instanceof Error?i.message:"the payload is not JSON"]}}let o=_t(n);if(!e)return {ok:true,value:o};let r=e["~standard"].validate(o);return Ln(r)?{ok:false,reason:"async",issues:["the schema validates asynchronously, which the read path cannot await"]}:r.issues?{ok:false,reason:"invalid",issues:r.issues.map($n)}:{ok:true,value:r.value}}function Ln(e){return typeof e.then=="function"}function $n(e){let t=(e.path??[]).map(n=>String(typeof n=="object"?n.key:n)).join(".");return t.length>0?`${t}: ${e.message}`:e.message}var Kn=new Set(["__proto__","constructor","prototype"]);function _t(e){if(Array.isArray(e))return e.map(_t);if(e===null||typeof e!="object")return e;let t=Object.create(null);for(let[n,o]of Object.entries(e))Kn.has(n)||(t[n]=_t(o));return t}function nt(e){return typeof e=="object"&&e!==null&&typeof e.name=="string"&&typeof e.tagPrefix=="string"}var Mt=/^[A-Za-z0-9_.-]+$/;function Hn(e){for(let t of e.children)if(!(t.kind==="textValue"||t.localName!=="sdtPr")){for(let n of t.children)if(!(n.kind==="textValue"||n.localName!=="tag")){for(let o of n.attributes)if(o.localName==="val")return o.value}}}function po(e){if(e.kind==="textValue")return e.value;let t="";for(let n of e.children)t+=po(n);return t}function yo(e,t,n={}){if(t.length===0)return [];let o=new Map;for(let s of t){let a=`${s.tagPrefix}:${s.name}`;if(o.has(a))throw new Error(`recognizeCustomNodes: duplicate definition for ${JSON.stringify(a)}`);o.set(a,s);}let r=[],i=(s,a)=>{if(!(s.kind==="textValue"||a>64)){if(s.kind==="contentControl"){let u=Hn(s),d=u!==void 0?tt(u):null,l=d?o.get(`${d.prefix}:${d.name}`):void 0;if(d&&l&&u!==void 0){let c=po(s),m=qn(l,s.id,n.payloads?.get(s.id),store.contentControlPropertiesOf(s).dataBinding!==void 0,n.onDiagnostic),f=l.fromDocx?l.fromDocx({attrs:d.attrs,text:c,...m.present?{data:m.value}:{}}):d.attrs;if(f!==null){r.push({name:l.name,attrs:f,text:c,nodeId:s.id,tag:u,...m.present?{data:m.value}:{}});return}}}for(let u of s.children)i(u,a+1);}};return i(e.root,0),r}function qn(e,t,n,o,r){if(!n)return o&&r?.({code:"payload-missing",name:e.name,nodeId:t,issues:["the control binds a store node this document does not hold"]}),{present:false};let i=ot(e.schema,n.data);return i.ok?{present:true,value:i.value}:(r?.({code:"payload-invalid",name:e.name,nodeId:t,issues:i.issues}),{present:false})}function wo(e,t){let n=store.findNode(e,t);return !n||n.kind!=="paragraph"?[]:store.revisionItemsOf({id:e.id,name:e.name,contentType:e.contentType,root:n})}function Zn(e,t,n,o){if(t.length===0)return [];let r=yo(e,t,{...n===void 0?{}:{payloads:n},...o===void 0?{}:{onDiagnostic:o}});if(r.length===0)return [];let i=store.locateSites(e),s=[];for(let a of r){let u=t.find(c=>c.name===a.name&&a.tag.startsWith(`${c.tagPrefix}:`));if(!u)continue;let d=u.reviewCard?u.reviewCard({attrs:a.attrs,text:a.text,...a.data===void 0?{}:{data:a.data}}):null;if(u.reviewCard&&d===null)continue;let l=i.get(a.nodeId);s.push({kind:"custom",id:a.nodeId,name:a.name,tag:a.tag,attrs:a.attrs,text:a.text,...a.data===void 0?{}:{data:a.data},carded:u.reviewCard!==void 0&&d!==null,title:d?.title??"",...d?.detail!==void 0?{detail:d.detail}:{},...d?.icon!==void 0?{icon:d.icon}:{},range:l?{partName:e.name,start:{paragraphId:l.paragraphId,offset:l.start},end:{paragraphId:l.paragraphId,offset:l.end}}:null});}return s}function go(e){let t=store.collectReviewItems(e),n=(e.customNodes??[]).filter(nt);if(n.length===0)return t;let o=[e.storyPart],r=new Set([e.storyPart.name]);for(let u of e.furnitureParts??[])r.has(u.name)||(r.add(u.name),o.push(u));let i=[],s=new Map;for(let u of o){i.push(...Zn(u,n,e.customNodePayloads,e.reportCustomNodeDiagnostic));let d=s.size;for(let[l,c]of store.paragraphOrderOfPart(u))s.has(l)||s.set(l,d+c);}return i.length===0?t:[...t,...i].sort((u,d)=>layout.reviewItemPositionRank(u,s)-layout.reviewItemPositionRank(d,s))}function zn(e={}){return chunkQ4YPX2DT_cjs.a(e.licenseKey),{id:"review",review:{displayModes:["all-markup","proposed","original"],collectReviewItems:go,revisionItemsOfParagraph:wo}}}var ho=Symbol("proEditorRenderRevision");function Co(e){return vue.provide(ho,e),e}function pe(){let e=vue.inject(ho,null);if(e)return e;let t=vue$1.useDocxEditor(),n=vue.shallowRef("none");return vue.watch(()=>t.value,(o,r,i)=>{if(!o){n.value="none";return}let s=o,a=`${s.getReviewRevision()}:${s.getEditingMode()}`;n.value=a;let u=false,d=null,l=()=>{u||d!==null||(d=setTimeout(()=>{if(d=null,u)return;let v=`${s.getReviewRevision()}:${s.getEditingMode()}`;v!==a&&(a=v,n.value=v);},0));},c=s.on("change",l),m=s.on("selectionChange",l),f=s.on("error",l);i(()=>{u=true,d!==null&&clearTimeout(d),c(),m(),f();});},{immediate:true,flush:"sync"}),n}function rt(e){if(e!==void 0)return typeof e=="function"?e():typeof e=="object"&&e!==null&&"value"in e?e.value:e}function bo(e){return `${e.getReviewRevision()}:${e.getEditingMode()}`}function nr(e){let t=vue$1.useDocxEditor(),n=pe();return Vt(t,e,n)}function Dt(e,t){let n=vue$1.useDocxEditor();return Vt(n,e,t)}function rr(e,t){return Vt(e,t)}function Vt(e,t,n){let o=n?null:vue.shallowRef("none"),r=()=>{(n??o)?.value;};n||vue.watch(()=>e.value,(w,C,_)=>{if(!w){o.value="none";return}let K=bo(w);o.value=K;let J=false,Y=null,ne=()=>{J||Y!==null||(Y=setTimeout(()=>{if(Y=null,J)return;let Ne=bo(w);Ne!==K&&(K=Ne,o.value=Ne);},0));},Et=w.on("change",ne),At=w.on("selectionChange",ne),We=w.on("error",ne);_(()=>{J=true,Y!==null&&clearTimeout(Y),Et(),At(),We();});},{immediate:true,flush:"sync"});let i=vue.computed(()=>{r();let w=e.value,C=rt(t);return w?w.getReviewItems(C).filter(_=>_.item.kind!=="custom"||_.item.carded):[]}),s=vue.computed(()=>i.value.find(w=>w.isActive)?.key??null),a=(w,C)=>{let _=e.value;return _?_.setActiveReviewItem(w,C).ok:false},u=w=>{let C=e.value;return !C||w.kind!=="revision"||w.readOnly?false:C.acceptReviewItem(w.key).ok},d=w=>{let C=e.value;return !C||w.kind!=="revision"||w.readOnly?false:C.rejectReviewItem(w.key).ok},l=w=>{let C=e.value;return !C||w.kind!=="comment"?false:C.setCommentResolved(w.key,true).ok},c=w=>{let C=e.value;return !C||w.kind!=="comment"?false:C.setCommentResolved(w.key,false).ok},m=vue.computed(()=>(r(),e.value?.getEditingMode()==="viewing"?"the document is open for viewing":null)),f=w=>{let C=e.value;return !C||w.kind==="custom"||w.kind==="revision"&&w.readOnly?false:C.deleteReviewItem(w.key).ok},v=(w,C,_)=>C.trim().length===0||!e.value?false:e.value.replyToReviewItem(w.key,C,_).ok,y=vue.computed(()=>{r();let w=e.value;return w?w.getSelectionPlacement()?.anchorY??null:null}),b=(w,C)=>w.trim().length===0||!e.value?false:e.value.addComment(w,C).ok,S=vue.computed(()=>{r();let w=e.value;return w?w.isReviewPaneOpen():true}),R=w=>{let C=e.value;!C||C.isReviewPaneOpen()===w||C.exec({type:"toggleReviewPane"});},E=vue.computed(()=>{r();let w=e.value;if(w===null)return false;let C=w.snapshot();return !C.isLoading&&C.parseError===null});return {items:i,activeKey:s,setActive:a,accept:u,reject:d,resolve:l,reopen:c,commentResolutionDisabledReason:m,remove:f,reply:v,selectionAnchorY:y,comment:b,paneOpen:S,setPaneOpen:R,ready:E}}function ar(e,t,n={}){return vue.computed(()=>{let o=rt(e)??[],r=rt(t)??new Map,i=rt(n)??{},s=i.gap??8,a=i.scale??1,u=i.defaultHeight??0,d=new Map,l=Number.NEGATIVE_INFINITY;for(let c of o){let m=c.anchorY===null?Number.isFinite(l)?l:0:Math.max(c.anchorY,l);d.set(c.key,m),l=m+((r.get(c.key)??u)+s)/a;}return d})}var dr=new Set(["List","Markers","AddComment","Draft","Balloon"]),ur=new Set(["Card","Empty"]);function cr(e){return vue.isVNode(e)}function Oe(e,t){let n=t==="root"?dr:ur,o={},r=[],i=s=>{for(let a of s){if(!cr(a))continue;if(a.type===vue.Fragment){let d=Array.isArray(a.children)?a.children:[];i(d);continue}let u=a.type.docxReviewPart;u&&n.has(u)?o[u]=a:r.push(a);}};return i(e),{parts:o,rest:r}}function at(e,t){if(!t)return e;let n=e.props.class;return vue.cloneVNode(e,{class:`${t}${n?` ${n}`:""}`})}var No=e=>e.isLoading||e.parseError!==null||e.pageSetup==null,ke=e=>e.editingMode==="viewing",So={scale:96/72,top:0,left:null,compactCardLeft:null},Io=16,Pe=300,Eo=12,te="\0compose",it=600,st=8,Ao=72,Oo=64,ko=480,Po=30,To=Object.freeze({placement:false});function Te(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 _e(e){return new Set(e.map(t=>t.id))}function L(e){let t=e.target?.tagName;t==="INPUT"||t==="SELECT"||t==="TEXTAREA"||e.preventDefault();}function _o(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"?":t.slice(0,2).map(n=>n[0].toUpperCase()).join("")}var lt=new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});function Mo(e){let t={},n=[],o=r=>{if(!r)return;let i=Array.isArray(r)?r:[r];for(let s of i){if(!vue.isVNode(s))continue;if(s.type===vue.Fragment){o(s.children);continue}let a=s.type.docxReviewPart;a?t[a]=s:n.push(s);}};return o(e),n.length>0&&(t.__extra=n),t}function k(e,t){return e.docxReviewPart=t,e}var $t=Symbol("ReviewContext"),Kt=Symbol("ReviewItemContext"),wr={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},gr={t:void 0,cardClassName:void 0,readOnly:false,composeTop:null,review:wr,allItems:[],authorSlots:new Map,authorInfo:new Map,draftAuthor:null,draftAuthorInfo:void 0,draftAuthorSlot:0,byId:new Map,measure:()=>{},beginDraft:()=>{},endDraft:()=>{},expandedResolvedKey:null,setExpandedResolvedKey:()=>{}};function P(){return vue.inject($t,vue.computed(()=>gr))}var hr=vue.computed(()=>null);function $(){return vue.inject(Kt,hr)}function Cr(e){let t=P();return vue.computed(()=>{let n=vue.toValue(e);return n===void 0?void 0:t.value.authorInfo.get(n)})}function B(){let e=P(),{t}=vue$1.useTranslation();return n=>e.value.t?.(n)??t(n)}function br(e){return [e.key,e.isActive?"active":"idle",e.readOnly?"readonly":"editable",e.kind==="comment"&&e.resolved?"resolved":"open",e.text,...e.replyIds].join("\0")}var dt=vue.defineComponent({name:"ReviewItemScope",props:{entry:{type:Object,required:true},measureKey:String,collapsed:Boolean,className:String,testId:String,style:{type:Object,default:void 0}},setup(e,{slots:t}){let n=P(),o=vue.shallowRef(e.entry);vue.watchEffect(()=>{let a=n.value.byId.get(e.entry.id)??e.entry;o.value={...a,replyIds:[...a.replyIds]};}),vue.provide(Kt,o);let r=null,i=null,s=a=>{let u=a instanceof HTMLElement?a:null,d=u&&e.measureKey?e.measureKey:null;r===u&&i===d||(i&&n.value.measure(null,i),r=u,i=d,r&&i&&n.value.measure(r,i));};return vue.onBeforeUnmount(()=>{s(null);}),()=>vue.h("div",{onVnodeMounted:a=>{s(a.el instanceof Element?a.el:null);},onVnodeUpdated:a=>{s(a.el instanceof Element?a.el:null);},onVnodeBeforeUnmount:()=>{s(null);},class:`docx-review__slot${e.className?` ${e.className}`:""}`,...e.testId?{"data-testid":e.testId}:{},style:e.style,...e.collapsed?{"data-collapsed":""}:{}},[vue.h(vue.Fragment,{key:br(o.value)},t.default?.())])}}),ut=vue.defineComponent({name:"ReviewReplyScope",props:{entry:{type:Object,required:true}},setup(e,{slots:t}){let n=P(),o=vue.shallowRef(e.entry);return vue.watchEffect(()=>{let r=n.value.byId.get(e.entry.id)??e.entry;o.value={...r,replyIds:[...r.replyIds]};}),vue.provide(Kt,o),()=>t.default?.()}});function Ho(e){let t=vue.ref(new WeakMap),n=vue.ref(new Map),o=vue.ref(null),r=(i,s)=>{let a=n.value.get(s);if(!i){a&&(o.value?.unobserve(a),t.value.delete(a),n.value.delete(s));return}typeof ResizeObserver>"u"||(e(s,i.offsetHeight),o.value??=new ResizeObserver(u=>{for(let d of u){let l=t.value.get(d.target);l&&e(l,d.target.offsetHeight);}}),!(a===i&&t.value.get(i)===s)&&(a&&(o.value.unobserve(a),t.value.delete(a)),t.value.set(i,s),n.value.set(s,i),o.value.observe(i)));};return vue.onUnmounted(()=>{o.value?.disconnect(),n.value.clear();}),r}function Ht(e,t){return e?.color??`var(--doc-review-author-${t%st})`}function le(e,t,n){return e?{"--doc-review-author-current":Ht(t,n)}:{}}function ye(e,t){return (e?.slot??t)%st}function qo(e,t,n,o,r){let i=new Map;for(let a of e)i.set(a.author,a);let s=[...t.map(a=>a.author),o?.getConfiguredAuthor()];for(let a of s){if(!a||i.has(a))continue;let u=n.get(a)??0,d=o?.getReviewAuthorStyle(a),l=d?.color??`var(--doc-review-author-${u%st})`,c=r.get(a),m=c?.slot===u&&c.color===l&&c.style===d?c:{author:a,slot:u,color:l,...d?{style:d}:{}};r.set(a,m),i.set(a,m);}return i}var j=e=>vue.h("svg",{viewBox:"0 -960 960 960",width:16,height:16,ariaHidden:true,focusable:false},[vue.h("path",{d:e,fill:"currentColor"})]),Fo="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",Bo="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",Nr="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",De="M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z",ct=()=>vue.h("span",{class:"docx-review__resolved-icon"},[vue.h("span",{class:"docx-review__resolved-comment"},[j(Nr)]),vue.h("span",{class:"docx-review__resolved-tick"},[j(De)])]),jo="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",Yo="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",Go="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",Sr="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",Ir="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",Er="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",Ar="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 Zo(e){if(e.kind==="comment")return Bo;if(e.kind==="custom")return e.item.icon??Ar;switch(e.revisionKind){case "insert":case "moveTo":return Sr;case "delete":case "moveFrom":return Ir;case "format":return Er;default:return Bo}}function mt(e,t){if(e==="paragraphMark")return t==="delete"?"revisions.paragraphMarkDeleted":t==="moveFrom"?"revisions.paragraphMarkMovedFrom":t==="moveTo"?"revisions.paragraphMarkMovedTo":"revisions.paragraphMarkInserted";switch(e){case "insert":return "review.inserted";case "delete":return "review.deleted";case "replace":return "review.replaced";case "moveFrom":return "review.movedFrom";case "moveTo":return "review.movedTo";case "format":return "revisions.runPropertiesChanged";default:return "review.structural"}}function Pr(e,t){return typeof t!="function"?e:typeof e!="function"?t:n=>{e(n),n.defaultPrevented||t(n);}}function Tr(e,t){let n=vue.mergeProps(e,t);for(let o of Object.keys(e))/^on[A-Z]/.test(o)?n[o]=Pr(t[o],e[o]):o==="class"?n[o]=[e[o],t[o]].filter(Boolean).join(" "):o==="style"&&(n[o]={...e[o],...t[o]});return n}function Jo(e){return e==="Enter"||e===" "}function _r(e){return Jo(e.key)?(e.preventDefault(),e.stopPropagation(),true):false}function Wo(e){return e==="button"}function Xo(e,t){return e==="a"||t.href!=null}var Re=vue.defineComponent({name:"ReviewActionSlot",props:{engineDisabled:{type:Boolean,required:true},disabledReason:{type:String,default:null},slotProps:{type:Object,required:true}},setup(e,{slots:t}){return ()=>{let n=t.default?.()??[];if(n.length!==1)return null;let o=n[0];if(!o||typeof o!="object")return null;let r=o.props??{},i=Tr(e.slotProps,r);if(!e.engineDisabled){if(!Wo(o.type)){let s={onClick:a=>{typeof r.onClick=="function"&&r.onClick(a),!a.defaultPrevented&&typeof e.slotProps.onClick=="function"&&e.slotProps.onClick(a),Xo(o.type,r)&&a.preventDefault();},onKeydown:a=>{typeof r.onKeydown=="function"&&r.onKeydown(a),Jo(a.key)&&(!a.defaultPrevented&&typeof e.slotProps.onClick=="function"&&e.slotProps.onClick(a),Xo(o.type,r)&&a.preventDefault());}};i.onClick=s.onClick,i.onKeydown=s.onKeydown;}return vue.cloneVNode(o,i)}if(Wo(o.type))i.disabled=true,delete i["aria-disabled"];else {delete i.disabled,i["aria-disabled"]=true,i["data-disabled"]="",i.tabIndex=-1,i.href=void 0,i.role===void 0&&(i.role="button");let s=i.onKeydown;i.onKeydown=a=>{_r(a)||typeof s=="function"&&s(a);};}return e.disabledReason&&(i.title=e.disabledReason),i.onClick=s=>{s.preventDefault(),s.stopPropagation();},vue.cloneVNode(o,i)}}});function tn(e){let t=k(vue.defineComponent({name:"ReviewResolve",props:{className:String,asChild:Boolean,hidden:Boolean,icon:{type:[Object,String],default:void 0}},setup(o,{slots:r}){let i=e.useRail(),s=e.useItem(),a=e.useLabel(),u=vue$1.useEditorState(ke);return ()=>{let d=s.value;if(o.hidden||!d||d.kind!=="comment"||d.resolved)return null;let l=i.value.review,c=a("comments.resolve"),m=u.value||l.commentResolutionDisabledReason!==null,f=m?a("editingMode.viewingHint"):null,v={type:"button",class:`docx-review__action${o.className?` ${o.className}`:""}`,"data-testid":"review-resolve","aria-label":c,title:f??c,disabled:m,onMousedown:L,onClick:y=>{y.stopPropagation(),!m&&l.resolve(d);}};return o.asChild?vue.h(Re,{engineDisabled:m,disabledReason:f,slotProps:v},r.default):vue.h("button",v,o.icon??r.default?.()??j(De))}}}),"Resolve"),n=k(vue.defineComponent({name:"ReviewReopen",props:{className:String,asChild:Boolean,hidden:Boolean,icon:{type:[Object,String],default:void 0}},setup(o,{slots:r}){let i=e.useRail(),s=e.useItem(),a=e.useLabel(),u=vue$1.useEditorState(ke);return ()=>{let d=s.value;if(o.hidden||!d||d.kind!=="comment"||!d.resolved)return null;let l=i.value.review,c=a("comments.reopen"),m=u.value||l.commentResolutionDisabledReason!==null,f=m?a("editingMode.viewingHint"):null,v={type:"button",class:`docx-review__action${o.className?` ${o.className}`:""}`,"data-testid":"review-reopen","aria-label":c,title:f??c,disabled:m,onMousedown:L,onClick:y=>{y.stopPropagation(),!m&&l.reopen(d);}};return o.asChild?vue.h(Re,{engineDisabled:m,disabledReason:f,slotProps:v},r.default):vue.h("button",v,o.icon??r.default?.()??j(jo))}}}),"Reopen");return {ReviewResolve:t,ReviewReopen:n}}var on=new WeakMap;function Ve(e){let t=vue.getCurrentInstance();if(!t)throw new Error("useReviewStableId must run during component setup");let n=t.appContext,o=on.get(n)??0;return on.set(n,o+1),`docx-review-${o}-${e}`}function an(e){let t=k(vue.defineComponent({name:"ReviewDraft",props:{top:{type:Number,default:0},left:{type:Number,default:null},className:String,hidden:Boolean},setup(o){let r=e.useRail(),i=e.useLabel(),s=vue.ref(""),a=vue.ref(false),u=Ve("draft"),d=null;vue.onMounted(()=>{let c=vue.getCurrentInstance()?.proxy?.$el;if(c instanceof HTMLElement&&(d=r.value.measure,d(c,te)),r.value.readOnly)return;(c instanceof HTMLElement?c.querySelector('[data-testid="review-draft-input"]'):null)?.focus({preventScroll:true});}),vue.onBeforeUnmount(()=>{d?.(null,te);});let l=()=>{let{review:c,endDraft:m,readOnly:f}=r.value;if(f||s.value.trim().length===0)return;let v=c.comment(s.value.trim());a.value=!v,v&&(s.value="",m());};return ()=>{if(o.hidden)return null;let{readOnly:c,draftAuthor:m,draftAuthorInfo:f,draftAuthorSlot:v}=r.value;return vue.h("div",{class:`docx-review__slot${o.left===null?"":" docx-review__slot--compact"}${o.className?` ${o.className}`:""}`,style:{position:"absolute",top:`${o.top}px`,...o.left===null?{}:{left:`${o.left}px`,width:`${Pe}px`}}},[vue.h("div",{class:"docx-review__card","data-testid":"review-draft","data-draft":"",...m?{"data-review-author":m,"data-review-author-slot":v}:{},style:le(m??void 0,f,v)},[vue.h("form",{class:"docx-review__reply-box",onSubmit:y=>{y.preventDefault(),l();}},[vue.h("label",{class:"docx-editor-sr-only",for:u},i("comments.addComment")),vue.h("input",{id:u,"data-testid":"review-draft-input",class:"docx-review__input",value:s.value,placeholder:i("comments.addComment"),readonly:c,...a.value?{"aria-invalid":true}:{},onInput:y=>{c||(a.value=false,s.value=y.target.value);},onKeydown:y=>{if(y.key==="Escape"){y.preventDefault(),r.value.endDraft();return}c||y.key!=="Enter"||(y.preventDefault(),l());}}),vue.h("div",{class:"docx-review__reply-actions"},[vue.h("button",{type:"button","data-testid":"review-draft-cancel",class:"docx-review__text-button",onMousedown:L,onClick:()=>r.value.endDraft()},i("common.cancel")),vue.h("button",{type:"submit","data-testid":"review-draft-submit",class:"docx-review__submit",disabled:c||s.value.trim().length===0,title:c?i("editingMode.viewingHint"):void 0},i("common.comment"))]),a.value?vue.h("span",{class:"docx-review__refused",role:"alert"},i("review.commentRefused")):null])])])}}}),"Draft"),n=k(vue.defineComponent({name:"ReviewReply",props:{className:String,hidden:Boolean},setup(o,{slots:r}){let i=e.useRail(),s=e.useItem(),a=e.useLabel(),u=vue.ref(""),d=vue.ref(false),l=Ve("reply"),c=pe(),m=vue$1.useDocxEditor(),f=v=>{let y=s.value,{review:b,readOnly:S,byId:R}=i.value,E=v?.querySelector('[data-testid="review-reply-input"]'),w=(E?.value??u.value).trim(),C=y?R.get(y.id)??y:null;if(!C||S||w.length===0)return;let _=m.value?.replyToReviewItem(C.key,w).ok??b.reply(C,w);d.value=!_,_&&(u.value="",E&&(E.value=""));};return ()=>{c.value;let v=s.value;if(o.hidden||!v||!v.isActive||v.kind==="comment"&&v.resolved)return null;let{review:y,readOnly:b}=i.value,S=r.default?.();return S?.length?S:jsxRuntime.jsxs("div",{class:`docx-review__reply-box${o.className?` ${o.className}`:""}`,children:[jsxRuntime.jsx("label",{class:"docx-editor-sr-only",for:l,children:a("comments.replyPlaceholder")}),jsxRuntime.jsx("input",{id:l,"data-testid":"review-reply-input",class:"docx-review__input",placeholder:a("comments.replyPlaceholder"),readonly:b,...d.value?{"aria-invalid":true,"data-refused":""}:{},onInput:R=>{b||(d.value=false,u.value=R.target.value);},onClick:R=>R.stopPropagation(),onKeydown:R=>{b||R.key!=="Enter"||(R.preventDefault(),f(R.currentTarget.closest(".docx-review__reply-box")));}}),jsxRuntime.jsxs("div",{class:"docx-review__reply-actions",children:[jsxRuntime.jsx("button",{type:"button","data-testid":"review-reply-cancel",class:"docx-review__text-button",onMousedown:L,onClick:R=>{R.stopPropagation(),u.value="",d.value=false,y.setActive(null);},children:a("common.cancel")}),jsxRuntime.jsx("button",{type:"button","data-testid":"review-reply-submit",class:"docx-review__submit",disabled:b,title:b?a("editingMode.viewingHint"):void 0,onClick:R=>{R.preventDefault(),R.stopPropagation(),f(R.currentTarget.closest(".docx-review__reply-box"));},children:a("review.reply")})]}),d.value?jsxRuntime.jsx("span",{class:"docx-review__refused",role:"alert","data-testid":"review-reply-refused",children:a("review.replyRefused")}):null]})}}}),"Reply");return {ReviewDraft:t,ReviewReply:n}}var{ReviewResolve:Bt,ReviewReopen:Ft}=tn({useRail:P,useItem:$,useLabel:B}),{ReviewDraft:jt,ReviewReply:Yt}=an({useRail:P,useItem:$,useLabel:B});var pt=k(vue.defineComponent({name:"ReviewEmpty",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let n=B();return ()=>e.hidden?null:jsxRuntime.jsx("div",{class:`docx-review__empty${e.className?` ${e.className}`:""}`,"data-testid":"review-empty",children:t.default?.()??n("review.empty")})}}),"Empty"),we=k(vue.defineComponent({name:"ReviewAvatar",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let n=$(),o=P();return ()=>{let r=n.value;if(e.hidden||!r)return null;let i=t.default?.();if(i===void 0&&!r.initials)return null;let s={class:`docx-review__avatar${e.className?` ${e.className}`:""}`,"data-testid":"review-avatar","aria-hidden":true};if(e.asChild)return jsxRuntime.jsx(vue$1.Slot,{...s,children:i});let a=o.value.authorInfo.get(r.author)?.style?.avatarUrl,u=i??(a?jsxRuntime.jsx("img",{class:"docx-review__avatar-img",src:a,alt:"",loading:"lazy",decoding:"async",referrerpolicy:"no-referrer"}):void 0)??r.initials;return jsxRuntime.jsx("span",{...s,children:u})}}}),"Avatar"),ge=k(vue.defineComponent({name:"ReviewAuthor",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let n=$(),o=B();return ()=>{let r=n.value;if(e.hidden||!r)return null;let i=r.author||o("comments.unknown"),s={class:`docx-review__author${e.className?` ${e.className}`:""}`,"data-testid":"review-author"};return e.asChild?jsxRuntime.jsx(vue$1.Slot,{...s,children:t.default?.()}):jsxRuntime.jsx("span",{...s,children:t.default?.()??i})}}}),"Author"),he=k(vue.defineComponent({name:"ReviewTime",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let n=$();return ()=>{let o=n.value;if(e.hidden||!o)return null;let r=o.date;if(!r)return null;let i=new Date(r);if(Number.isNaN(i.getTime()))return null;let s={class:`docx-review__time${e.className?` ${e.className}`:""}`,"data-testid":"review-time",datetime:r};return e.asChild?jsxRuntime.jsx(vue$1.Slot,{...s,children:t.default?.()}):jsxRuntime.jsx("time",{...s,children:t.default?.()??lt.format(i)})}}}),"Time"),Ce=k(vue.defineComponent({name:"ReviewSummary",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let n=$(),o=B();return ()=>{let r=n.value;if(e.hidden||!r)return null;let i=r.text,s=r.kind!=="revision"?null:o(mt(r.revisionKind,r.item.markDirection)),a=r.kind==="revision"&&r.revisionKind==="replace",u={class:`docx-review__summary${e.className?` ${e.className}`:""}`,"data-testid":"review-summary","data-review-selectable":""};if(e.asChild)return jsxRuntime.jsx(vue$1.Slot,{...u,children:t.default?.()});let d=t.default?.();return d?jsxRuntime.jsx("div",{...u,children:d}):jsxRuntime.jsx("div",{...u,children:a?jsxRuntime.jsxs("span",{class:"docx-review__text",children:[o("review.replaced")," ",jsxRuntime.jsxs("span",{class:"docx-review__removed",children:['"',r.replacedText,'"']})," ",o("review.replacedWith")," ",jsxRuntime.jsxs("span",{class:"docx-review__added",children:['"',i,'"']})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[s?jsxRuntime.jsx("span",{class:"docx-review__label","data-kind":r.kind==="revision"?r.revisionKind:"revision",children:s}):null,i?jsxRuntime.jsx("span",{class:"docx-review__text",children:i}):null]})})}}}),"Summary");function ln(e,t,n,o,r,i,s){return k(vue.defineComponent({name:e,props:{className:String,asChild:Boolean,hidden:Boolean,icon:{type:[Object,String],default:void 0}},setup(a,{slots:u}){let d=P(),l=$(),c=B();return ()=>{let m=l.value,{readOnly:f,review:v}=d.value;if(a.hidden||!m||!s(m))return null;let y=c(o),b=f?c("editingMode.viewingHint"):null,S={type:"button",class:`docx-review__action${a.className?` ${a.className}`:""}`,"data-testid":n,"aria-label":y,title:b??y,disabled:f,onMousedown:L,onClick:R=>{R.stopPropagation(),!f&&i(v,m);}};return a.asChild?jsxRuntime.jsx(Re,{engineDisabled:f,disabledReason:b,slotProps:S,children:u.default?.()}):jsxRuntime.jsx("button",{...S,children:a.icon??u.default?.()??j(r)})}}}),t)}var Ue=ln("ReviewAccept","Accept","review-accept","review.accept",De,(e,t)=>e.accept(t),e=>e.kind==="revision"&&!e.readOnly),He=ln("ReviewReject","Reject","review-reject","review.reject",Yo,(e,t)=>e.reject(t),e=>e.kind==="revision"&&!e.readOnly),yt=k(vue.defineComponent({name:"ReviewDelete",props:{className:String,asChild:Boolean,hidden:Boolean,icon:{type:[Object,String],default:void 0}},setup(e,{slots:t}){let n=P(),o=$(),{t:r}=vue$1.useTranslation();return ()=>{let i=o.value,{readOnly:s,review:a}=n.value;if(e.hidden||!i||i.kind==="custom"||i.kind==="revision"&&i.readOnly)return null;let u=i.kind==="comment"?r("review.deleteComment"):r("review.discardChange"),d=s?r("editingMode.viewingHint"):null,l={type:"button",class:`docx-review__action${e.className?` ${e.className}`:""}`,"data-testid":"review-delete","aria-label":u,title:d??u,disabled:s,onMousedown:L,onClick:c=>{c.stopPropagation(),!s&&a.remove(i);}};return e.asChild?jsxRuntime.jsx(Re,{engineDisabled:s,disabledReason:d,slotProps:l,children:t.default?.()}):jsxRuntime.jsx("button",{...l,children:e.icon??t.default?.()??j(Go)})}}}),"Delete"),Gt=k(vue.defineComponent({name:"ReviewReplies",props:{className:String,hidden:Boolean},setup(e){let t=P(),n=$();return ()=>{let o=n.value;if(e.hidden||!o||o.kind==="custom")return null;let i=(t.value.byId.get(o.id)??o).replyIds.map(s=>t.value.byId.get(s)).filter(s=>s!==void 0);return i.length===0?null:jsxRuntime.jsx("ol",{class:`docx-review__replies${e.className?` ${e.className}`:""}`,children:i.map(s=>jsxRuntime.jsx(ut,{entry:s,children:jsxRuntime.jsxs("li",{class:"docx-review__reply","data-testid":"review-reply",children:[jsxRuntime.jsxs("div",{class:"docx-review__head",children:[jsxRuntime.jsx(we,{}),jsxRuntime.jsxs("div",{class:"docx-review__meta",children:[jsxRuntime.jsx(ge,{}),jsxRuntime.jsx(he,{})]}),jsxRuntime.jsx("div",{class:"docx-review__actions",children:jsxRuntime.jsx(yt,{})})]}),jsxRuntime.jsx(Ce,{})]})},s.key))})}}}),"Replies"),sn=vue.defineComponent({name:"ReviewCardPreset",setup(e,{slots:t}){let n=$(),o=vue.computed(()=>Mo(t.default?.()));return ()=>{let r=n.value;if(!r)return null;let i=(a,u)=>a in o.value?o.value[a]:u;if(r.kind==="custom"&&r.item.kind==="custom"){let a=r.item;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{class:"docx-review__head",children:[i("Avatar",null),jsxRuntime.jsx("div",{class:"docx-review__meta",children:i("Author",jsxRuntime.jsx("span",{class:"docx-review__author","data-testid":"review-custom-title",children:a.title}))})]}),i("Summary",a.detail?jsxRuntime.jsx("div",{class:"docx-review__summary","data-testid":"review-summary","data-review-selectable":"",children:jsxRuntime.jsx("span",{class:"docx-review__text",children:a.detail})}):null),o.value.__extra]})}let s=r.kind==="revision"&&!r.readOnly;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{class:"docx-review__head",children:[i("Avatar",jsxRuntime.jsx(we,{})),jsxRuntime.jsxs("div",{class:"docx-review__meta",children:[i("Author",jsxRuntime.jsx(ge,{})),i("Time",jsxRuntime.jsx(he,{}))]}),s||r.kind==="comment"?jsxRuntime.jsxs("div",{class:"docx-review__actions",children:[i("Accept",jsxRuntime.jsx(Ue,{})),i("Reject",jsxRuntime.jsx(He,{})),i("Resolve",jsxRuntime.jsx(Bt,{})),i("Reopen",jsxRuntime.jsx(Ft,{})),i("Delete",jsxRuntime.jsx(yt,{}))]}):null]}),i("Summary",jsxRuntime.jsx(Ce,{})),i("Replies",jsxRuntime.jsx(Gt,{})),i("Reply",jsxRuntime.jsx(Yt,{})),o.value.__extra]})}}}),qe=k(vue.defineComponent({name:"ReviewCard",props:{className:String,hidden:Boolean,asChild:Boolean},setup(e,{slots:t}){let n=P(),o=$(),r=Ve("card"),i=B(),s=null,a=d=>{s=d.el instanceof HTMLDetailsElement?d.el:s;},u=d=>{s?.open&&d.target instanceof Node&&!s.contains(d.target)&&(n.value.setExpandedResolvedKey(null),n.value.review.setActive(null),s.open=false);};return vue.onMounted(()=>document.addEventListener("pointerdown",u,true)),vue.onBeforeUnmount(()=>document.removeEventListener("pointerdown",u,true)),()=>{let d=o.value;if(e.hidden||!d)return null;let{review:l,authorSlots:c,authorInfo:m,expandedResolvedKey:f,setExpandedResolvedKey:v}=n.value,y=c.get(d.author)??0,b=!e.asChild&&d.kind==="comment"&&d.resolved,S={class:`docx-review__card${e.className?` ${e.className}`:""}`,"data-testid":"review-card",...b?{}:{"aria-labelledby":`${r}-author ${r}-summary`},"data-kind":d.kind==="revision"?d.revisionKind??"revision":d.kind,...d.author?{"data-review-author":d.author,"data-review-author-slot":ye(m.get(d.author),y)}:{},...d.kind==="custom"&&d.item.kind==="custom"?{"data-node-name":d.item.name}:{},...d.isActive?{"data-active":""}:{},...d.kind==="comment"&&d.resolved?{"data-resolved":""}:{},...b?{"data-resolved-miniature":""}:{},style:le(d.author,m.get(d.author),y),...b?{}:{tabIndex:0,role:"button"},id:r,...b?{}:{onMousedown:R=>{R.target?.closest("[data-review-selectable]")||R.currentTarget.focus({preventScroll:true});},onClick:R=>{R.target?.closest("button, input, textarea, .docx-review__reply-box, [data-review-selectable]")||d.isActive||l.setActive(d.key);},onKeydown:R=>{R.target===R.currentTarget&&(R.key!=="Enter"&&R.key!==" "||(R.preventDefault(),l.setActive(d.key)));}}};return e.asChild?jsxRuntime.jsx(vue$1.Slot,{...S,children:t.default?.()}):b?vue.h("details",{...S,open:f===d.key,onVnodeMounted:a,onVnodeUpdated:a,onVnodeBeforeUnmount:()=>{s=null;},onToggle:R=>{let E=R.currentTarget.open;v(E?d.key:null),l.setActive(E?d.key:null);}},[vue.h("summary",{class:"docx-review__resolved-toggle","aria-label":i("review.showResolvedComment")},[vue.h("span",{class:"docx-review__resolved-status"},i("review.resolved")),ct()]),vue.h(sn,null,{default:()=>t.default?.()})]):jsxRuntime.jsx("div",{...S,children:vue.h(sn,null,{default:()=>t.default?.()})})}}}),"Card");var Wt=k(vue.defineComponent({name:"ReviewList",props:{stack:{type:Boolean,default:true},positions:{type:Object,default:void 0},collapsed:{type:Object,default:void 0},scale:{type:Number,default:1},offset:{type:Number,default:0},window:{type:Object,default:null},className:String,hidden:Boolean},setup(e,{slots:t}){let n=P();return ()=>{if(e.hidden)return null;let{review:o,cardClassName:r}=n.value,i=t.default?.()??[],s=t.item,a=s?null:Oe(i,"list"),u=_e(o.items),d=o.items.filter(l=>!Te(l,u));return d.length===0?s?null:a?.parts.Empty??jsxRuntime.jsx(pt,{}):vue.h("div",{class:`docx-review__list${e.className?` ${e.className}`:""}`},d.map(l=>{let c=e.stack?e.positions?.get(l.key)??l.anchorY:l.anchorY,m=c==null?null:e.offset+c*e.scale;if(m!==null&&e.window&&(m<e.window.top||m>e.window.bottom))return null;let f=m===null?{}:{position:"absolute",top:`${m}px`};return vue.h(dt,{key:l.key,entry:l,measureKey:l.key,collapsed:e.collapsed?.has(l.key),style:f},()=>s?s({item:l}):a?.parts.Card?at(a.parts.Card,r):vue.h(qe,r?{className:r}:{},()=>a?.rest))}))}}}),"List"),Xt=k(vue.defineComponent({name:"ReviewMarkers",props:{scale:{type:Number,default:1},offset:{type:Number,default:0},window:{type:Object,default:null},className:String,hidden:Boolean,icon:{type:[Object,Function],default:void 0}},setup(e){let t=P(),n=B(),o=vue.computed(()=>{let{review:r}=t.value,i=_e(r.items),s=r.items.filter(d=>!Te(d,i)),a=new Map,u=Number.NEGATIVE_INFINITY;for(let d of s){if(d.anchorY===null)continue;let l=Math.max(e.offset+d.anchorY*e.scale,u);a.set(d.key,l),u=l+Po;}return {roots:s,stackedTops:a}});return ()=>{if(e.hidden)return null;let{review:r,authorSlots:i,authorInfo:s,setExpandedResolvedKey:a}=t.value,{roots:u,stackedTops:d}=o.value;return jsxRuntime.jsx("div",{class:`docx-review__markers${e.className?` ${e.className}`:""}`,children:u.map(l=>{let c=d.get(l.key);return c===void 0||e.window&&(c<e.window.top||c>e.window.bottom)?null:jsxRuntime.jsx("button",{type:"button",class:"docx-review__marker","data-testid":"review-marker","data-kind":l.kind==="revision"?l.revisionKind:l.kind,...l.author?{"data-review-author":l.author,"data-review-author-slot":ye(s.get(l.author),i.get(l.author)??0)}:{},style:{position:"absolute",top:`${c}px`,...l.author?{"--doc-review-author-current":Ht(s.get(l.author),i.get(l.author)??0)}:{}},title:l.author?`${l.author}: ${l.text}`:l.text,"aria-label":`${n("review.showPane")}: ${l.author?`${l.author}. `:""}${l.text}`,onMousedown:L,onClick:()=>{l.kind==="comment"&&l.resolved&&a(l.key),r.setPaneOpen(true),r.setActive(l.key);},children:(typeof e.icon=="function"?e.icon(l):e.icon)??(l.kind==="comment"&&l.resolved?ct():j(Zo(l)))},l.key)})})}}}),"Markers"),Jt=k(vue.defineComponent({name:"ReviewAddComment",props:{top:{type:Number,default:null},drafting:{type:Boolean,default:false},className:String,hidden:Boolean},setup(e,{slots:t}){let n=P(),o=B();return ()=>{let{beginDraft:r,composeTop:i,readOnly:s}=n.value;if(e.hidden||e.drafting||i===null||s)return null;let a={type:"button",class:`docx-review__add${e.className?` ${e.className}`:""}`,"data-testid":"review-add-comment",style:{position:"absolute",top:`${i}px`},"aria-label":o("common.comment"),title:o("common.comment"),onMousedown:L,onClick:r},u=t.default?.();return u?.length?vue.h(vue$1.Slot,a,()=>u):vue.h("button",a,j(Fo))}}}),"AddComment"),Yr=vue.defineComponent({name:"BalloonTime",props:{raw:{type:String,required:true}},setup(e){return ()=>{let t=new Date(e.raw);return Number.isNaN(t.getTime())?null:jsxRuntime.jsx("time",{class:"docx-review__time",datetime:e.raw,children:lt.format(t)})}}}),Qt=k(vue.defineComponent({name:"ReviewBalloon",props:{className:String,hidden:Boolean},setup(e){let t=vue.getCurrentInstance(),n=P(),o=B(),r=vue.ref(null),i=vue.ref(false),s=vue.ref(false);vue.watch(r,l=>{i.value=l!==null;});let a;vue.onMounted(()=>{let l=vue.getCurrentInstance()?.proxy?.$el,c=l?.closest(".docx-review"),m=c?.closest(".docx-editor__scroll-container")??c?.offsetParent;if(!l||!c||!m)return;let f=(y,b)=>{let S=c.getBoundingClientRect(),R=y.getBoundingClientRect(),E=y.ownerDocument.defaultView?.innerHeight??1/0,w=Number(y.dataset.start),C=Number(y.dataset.end);r.value={revisionId:y.dataset.revisionId,author:y.dataset.reviewAuthor??"",...y.dataset.revisionDate!==void 0?{date:y.dataset.revisionDate}:{},...y.dataset.revisionKind!==void 0?{kind:y.dataset.revisionKind}:{},structuralSite:b,...y.dataset.paragraphId!==void 0?{paragraphId:y.dataset.paragraphId}:{},...Number.isFinite(w)?{start:w}:{},...Number.isFinite(C)?{end:C}:{},left:R.left-S.left,top:R.top-S.top,bottom:R.bottom-S.top,above:R.bottom+220>E},t?.proxy?.$forceUpdate();},v=y=>{let b=y.target;if(!(b instanceof Element)||l.contains(b))return;let S=b.closest("[data-revision-id]");if(S instanceof HTMLElement&&m.contains(S)){let R=S.classList.contains("docx-table-row--revision");if(S.dataset.revisionKind==="format"||R){f(S,R);return}}i.value&&(r.value=null,t?.proxy?.$forceUpdate());};m.addEventListener("pointerdown",v,true),m.addEventListener("mousedown",v,true),a=()=>{m.removeEventListener("pointerdown",v,true),m.removeEventListener("mousedown",v,true);};}),vue.onUnmounted(()=>a?.());let u=vue.computed(()=>{let l=r.value;if(!l)return null;let{allItems:c}=n.value,m=null,f=false,v=null,y=false,b=null,S=false;for(let R of c)if(!(R.kind!=="revision"||R.item.kind!=="revision")){for(let E of R.item.addresses)if(E.id===l.revisionId){if(E.author===l.author){if(E.date===l.date)return R;m===null?m=R:m!==R&&(f=true);}v===null?v=R:v!==R&&(y=true);}if(l.paragraphId!==void 0&&l.start!==void 0&&l.end!==void 0&&(R.revisionKind==="format"||R.revisionKind==="structural")){for(let E of R.item.ranges)if(E.start.paragraphId===l.paragraphId&&E.start.offset<l.end&&E.end.offset>l.start){b===null?b=R:b!==R&&(S=true);break}}}return m!==null&&!f?m:v!==null&&!y?v:b!==null&&!S?b:null}),d=vue.computed(()=>{let l=u.value;return l&&(l.revisionKind==="format"||l.revisionKind==="structural")?l:null});return vue.watch(d,l=>{if(l){s.value=true;return}s.value&&(s.value=false,r.value=null);}),()=>{if(e.hidden)return null;let{review:l,authorSlots:c,authorInfo:m}=n.value,f=r.value,v=f?.kind==="format"?"format":"structural",y=d.value,b=f===null?null:vue.h("div",{class:"docx-review__balloon","data-testid":"review-balloon",style:{left:`${f.left}px`,top:`${f.above?f.top-6:f.bottom+6}px`,transform:f.above?"translateY(-100%)":void 0},onMousedown:L},y?vue.h(ut,{entry:y},()=>vue.h("div",{class:"docx-review__card","data-testid":"review-balloon-card","data-kind":y.revisionKind??"revision",...y.author?{"data-review-author":y.author,"data-review-author-slot":ye(m.get(y.author),c.get(y.author)??0)}:{},style:le(y.author,m.get(y.author),c.get(y.author)??0),onClick:()=>l.setActive(y.key)},[vue.h("div",{class:"docx-review__head"},[vue.h(we),vue.h("div",{class:"docx-review__meta"},[vue.h(ge),vue.h(he)]),y.kind==="revision"&&!y.readOnly?vue.h("div",{class:"docx-review__actions"},[vue.h(Ue),vue.h(He)]):null]),vue.h(Ce)])):vue.h("div",{class:"docx-review__card","data-testid":"review-balloon-card","data-kind":v,...f.author?{"data-review-author":f.author,"data-review-author-slot":ye(m.get(f.author),c.get(f.author)??0)}:{},style:le(f.author,m.get(f.author),c.get(f.author)??0)},[vue.h("div",{class:"docx-review__head"},[vue.h("span",{class:"docx-review__avatar","aria-hidden":true},_o(f.author)),vue.h("div",{class:"docx-review__meta"},[vue.h("span",{class:"docx-review__author"},f.author||o("comments.unknown")),f.date?vue.h(Yr,{raw:f.date}):null])]),vue.h("div",{class:"docx-review__summary"},[vue.h("span",{class:"docx-review__label","data-kind":v},o(mt(v)))])]));return vue.h("div",{class:`docx-review__balloon-root${e.className?` ${e.className}`:""}`},b===null?void 0:[b])}}}),"Balloon");function Fe(e,t,n){if(!(e in n))return t;let o=n[e];return !vue.isVNode(o)||!vue.isVNode(t)?o:vue.cloneVNode(o,vue.mergeProps(t.props??{},o.props??{}))}var aa=vue.defineComponent({name:"ReviewDraftMount",props:{top:{type:Number,required:true},left:{type:Number,default:null}},setup(e){return ()=>vue.h(jt,{top:e.top,left:e.left})}});function ia(e,t){return {items:t,activeKey:e.activeKey.value,setActive:e.setActive,accept:e.accept,reject:e.reject,resolve:e.resolve,reopen:e.reopen,commentResolutionDisabledReason:e.commentResolutionDisabledReason.value,remove:e.remove,reply:e.reply,selectionAnchorY:e.selectionAnchorY.value,comment:e.comment,paneOpen:e.paneOpen.value,setPaneOpen:e.setPaneOpen,ready:e.ready.value}}var sa=vue.defineComponent({name:"DocxEditorReview",props:{className:String,asChild:Boolean,hidden:Boolean,t:{type:Function,default:void 0},card:{type:Object,default:void 0},furniture:{type:[Object,Array],default:void 0},preset:{type:Boolean,default:true},stack:{type:Boolean,default:true},gap:{type:Number,default:8},filter:{type:Function,default:void 0},structural:{type:Boolean,default:false},formatting:{type:Boolean,default:false}},setup(e,{slots:t}){let n=vue.getCurrentInstance(),o=vue$1.useDocxEditor(),r=vue$1.useEditorState(No),i=vue$1.useEditorState(ke),s=pe(),a=vue.computed(()=>{let p=[];return e.structural||p.push("structural"),e.formatting||p.push("format"),p.length>0?p:void 0}),u=vue.computed(()=>a.value?{excludeRevisionKinds:a.value}:void 0);vue.watch([o,a],()=>{o.value?.setReviewActivationExclusions(a.value??null);},{immediate:true}),vue.onUnmounted(()=>{o.value?.setReviewActivationExclusions(null);}),Co(s);let d=Dt(To,s),l=Dt(()=>u.value,s),{t:c}=vue$1.useTranslation(),m=(p,g)=>e.t?.(p,g)??c(p,g),f=vue.shallowRef(null),v=vue.inject(vue$1.ReviewRailContext,vue.shallowRef({mounted:0,register:()=>()=>{},registerCommentDraft:()=>()=>{},requestCommentDraft:()=>false})),y=vue.ref(false),b,S=()=>{if(!y.value||e.hidden){b?.(),b=void 0;return}b??=v.value.register();};vue.onMounted(()=>{y.value=true,S();}),vue.watch(()=>e.hidden,S);let R=vue.computed(()=>l.paneOpen.value),E=vue$1.useReviewGutter(),w=vue.ref(null),C=vue.computed(()=>R.value&&(w.value??E.value.inlineEnd)>0&&(w.value??E.value.inlineEnd)<vue$1.REVIEW_PANE_GUTTER),_=vue.computed(()=>R.value&&!C.value),K=vue.computed(()=>e.filter?l.items.value.filter(p=>e.filter(p)):l.items.value),J=vue.ref(null);vue.watch(K,p=>{let g=J.value;g!==null&&!p.some(h=>h.key===g&&h.kind==="comment"&&h.resolved)&&(J.value=null);},{flush:"sync"});let Y=vue.computed(()=>o.value?.getConfiguredAuthor()??null),ne=vue.computed(()=>{let p=new Map;for(let g of K.value)g.author&&!p.has(g.author)&&p.set(g.author,p.size);return Y.value&&!p.has(Y.value)&&p.set(Y.value,p.size),p}),Et=vue$1.useReviewAuthors(),At=new Map,We=vue.computed(()=>qo(Et.value,K.value,ne.value,o.value,At)),Ne=vue.computed(()=>{let p=new Map;for(let g of d.items.value)p.set(g.id,g);return p}),Xe=vue.ref(new Map),On=Ho((p,g)=>{if(g<=0||Xe.value.get(p)===g)return;let h=new Map(Xe.value);h.set(p,g),Xe.value=h;}),M=vue.ref(So),Se;vue.watch([o,K,r,()=>e.hidden,f,C],()=>{Se?.(),Se=void 0;let p=f.value,g=o.value;if(!g||!p||r.value||e.hidden)return;let h=p.offsetParent,A=h?.querySelector(".docx-paginated-surface")??null,N=()=>{if(h){let ve=Number.parseFloat(getComputedStyle(h).getPropertyValue("--docx-review-gutter"));w.value=Number.isFinite(ve)?ve:null;}else w.value=null;let V=A&&h?A.getBoundingClientRect():null,ee=V&&h?h.getBoundingClientRect():null,me=V&&ee&&h?V.right-ee.left-h.clientLeft+h.scrollLeft+Io:null,ae={scale:g.getRenderScale(),top:V&&ee&&h?V.top-ee.top-h.clientTop+h.scrollTop:0,left:me,compactCardLeft:me===null||!h?null:h.scrollLeft+h.clientWidth-me-Pe-Eo},fe=M.value;(fe.scale!==ae.scale||fe.top!==ae.top||fe.left!==ae.left||fe.compactCardLeft!==ae.compactCardLeft)&&(M.value=ae);};N();let O=new ResizeObserver(N);h&&O.observe(h),A&&O.observe(A);let F=h&&typeof MutationObserver<"u"?new MutationObserver(N):null;if(F?.observe(h,{attributes:true,attributeFilter:["style"]}),!C.value||!h){Se=()=>{F?.disconnect(),O.disconnect();};return}let q=0,D=()=>{q===0&&(q=requestAnimationFrame(()=>{q=0,N();}));};h.addEventListener("scroll",D,{passive:true}),Se=()=>{q!==0&&cancelAnimationFrame(q),h.removeEventListener("scroll",D),F?.disconnect(),O.disconnect();};},{flush:"post"}),vue.onUnmounted(()=>Se?.());let Je;vue.watch([o,r,()=>e.hidden,f],()=>{Je?.(),Je=void 0;let p=f.value,g=o.value;if(!g||!p||r.value||e.hidden)return;let h=A=>{let N=A.target;if(!(N instanceof Node)||p.contains(N))return;let O=p.offsetParent;!O||!O.contains(N)||O.querySelector(".docx-paginated-surface")?.contains(N)||g.setActiveReviewItem(null);};document.addEventListener("mousedown",h,true),Je=()=>document.removeEventListener("mousedown",h,true);},{flush:"post"}),vue.onUnmounted(()=>Je?.());let ce=vue.ref(null),Qe;vue.watch([o,r,()=>e.hidden,f],()=>{Qe?.(),Qe=void 0;let p=f.value,g=p?.offsetParent;if(!g||r.value||e.hidden)return;let h=0,A=()=>{h=0;let q=g.scrollTop-it,D=g.scrollTop+g.clientHeight+it,V=ce.value;ce.value=V&&V.top===q&&V.bottom===D?V:{top:q,bottom:D};},N=0,O=()=>{h===0&&(h=requestAnimationFrame(A)),p?.setAttribute("data-scrolling",""),window.clearTimeout(N),N=window.setTimeout(()=>p?.removeAttribute("data-scrolling"),150);};A(),g.addEventListener("scroll",O,{passive:true});let F=new ResizeObserver(O);F.observe(g),Qe=()=>{h!==0&&cancelAnimationFrame(h),window.clearTimeout(N),g.removeEventListener("scroll",O),F.disconnect();};},{flush:"post"}),vue.onUnmounted(()=>Qe?.());let Q=vue.ref(null),et=vue.shallowRef(null),Ie=()=>{let p=et.value;p&&p.editor.releaseSelection(p.pin),et.value=null,Q.value=null;};vue.watch(()=>o.value,(p,g)=>{g&&g!==p&&et.value?.editor===g&&Ie();});let lo=()=>{let p=o.value;if(!p||i.value)return;let g=p.getSelectionPlacement()?.anchorY??null;if(g===null)return;Ie();let h=p.retainSelection();h&&(et.value={editor:p,pin:h},l.setPaneOpen(true),Q.value=g,n?.proxy?.$forceUpdate());},Ee,uo=()=>{if(!y.value||e.hidden){Ee?.(),Ee=void 0;return}Ee??=v.value.registerCommentDraft(lo);};vue.onMounted(uo),vue.watch(()=>e.hidden,uo);let kn=()=>{Ie(),o.value?.focus(),n?.proxy?.$forceUpdate();};vue.watch(R,p=>{p||Q.value===null||Ie();}),vue.onBeforeUnmount(()=>{y.value=false,b?.(),b=void 0,Ee?.(),Ee=void 0,Ie();});let Ot=vue.computed(()=>Q.value??l.selectionAnchorY.value),re=vue.computed(()=>{let p=_e(K.value);return K.value.filter(g=>!Te(g,p))}),Pn=vue.computed(()=>{let p=Q.value;if(p===null)return re.value;let g=re.value.findIndex(A=>A.anchorY!==null&&A.anchorY>p),h={key:te,anchorY:p};return g===-1?[...re.value,h]:[...re.value.slice(0,g),h,...re.value.slice(g)]}),Tn=vue.computed(()=>{let p=new Map(Xe.value);for(let g of re.value){if(p.has(g.key))continue;let h=g.text.length+(g.kind==="revision"?g.replacedText?.length??0:0),A=Math.min(6,Math.max(1,Math.ceil(h/36)));p.set(g.key,64+A*20);}return p}),kt=vue.computed(()=>{let p=M.value.scale,g=new Map,h=new Set,A=Number.NEGATIVE_INFINITY;for(let N of Pn.value){let O=N.anchorY===null?Number.isFinite(A)?A:0:Math.max(N.anchorY,A);g.set(N.key,O);let F=N.anchorY===null?0:(O-N.anchorY)*p,q="isActive"in N&&N.isActive,D=F>ko&&!q&&N.key!==te;D&&h.add(N.key);let V=D?Oo:Tn.value.get(N.key)??Ao;A=O+(V+e.gap)/p;}return {stacked:g,collapsedKeys:h}}),Ae=vue.computed(()=>Ot.value===null?null:M.value.top+(C.value?Ot.value:kt.value.stacked.get(te)??Ot.value)*M.value.scale),_n=vue.computed(()=>(l.commentResolutionDisabledReason.value,l.selectionAnchorY.value,l.paneOpen.value,l.items.value.length,ia(l,K.value))),Pt=()=>{let p=Y.value,g=p?ne.value.get(p)??0:0;return {t:e.t,cardClassName:e.card?.className,readOnly:i.value,composeTop:Ae.value,review:_n.value,allItems:d.items.value,authorSlots:ne.value,authorInfo:We.value,draftAuthor:p,draftAuthorInfo:p?We.value.get(p):void 0,draftAuthorSlot:g,byId:Ne.value,measure:On,beginDraft:lo,endDraft:kn,expandedResolvedKey:J.value,setExpandedResolvedKey:h=>{J.value=h;}}},Tt=vue.shallowRef(Pt());return vue.watchEffect(()=>{Tt.value=Pt();}),vue.watch(()=>s.value,()=>{Tt.value=Pt(),n?.proxy?.$forceUpdate();},{flush:"sync"}),vue.provide($t,Tt),()=>{if(e.hidden||r.value)return null;s.value,d.items.value,Q.value,K.value.length,l.selectionAnchorY.value,l.paneOpen.value,l.commentResolutionDisabledReason.value,Ae.value;let p=W=>{f.value=W.el instanceof HTMLElement?W.el:null;},g={onVnodeMounted:p,onVnodeUpdated:p,onVnodeBeforeUnmount:()=>{f.value=null;},class:`docx-review${e.className?` ${e.className}`:""}`,"data-testid":"review-rail","data-count":K.value.length,"data-open":_.value?"":void 0,"data-compact":C.value?"":void 0,role:"complementary","aria-label":m("review.ariaLabel"),onMousedown:L,style:M.value.left===null?void 0:{left:`${M.value.left}px`,right:"auto"}},h=t.default?.()??[],A=e.asChild&&h.length===1&&vue.isVNode(h[0])?h[0]:null,{parts:N,rest:O}=Oe(A?[]:h,"root"),F={stack:e.stack,positions:kt.value.stacked,collapsed:kt.value.collapsedKeys,scale:M.value.scale,offset:M.value.top,window:ce.value},q=vue.h(Xt,{scale:M.value.scale,offset:M.value.top,window:ce.value}),D=C.value?re.value.find(W=>W.key===l.activeKey.value)??null:null,V=D===null?null:D.anchorY!==null?M.value.top+D.anchorY*M.value.scale:ce.value!==null?ce.value.top+it+24:null,ee=Oe(O,"list"),me=D&&t.item?t.item({item:D}):ee.parts.Card?at(ee.parts.Card,e.card?.className):e.preset?vue.h(qe,e.card?.className?{className:e.card.className}:{},()=>ee.rest):null,ae=D&&V!==null&&M.value.compactCardLeft!==null&&me?vue.h(dt,{entry:D,className:"docx-review__slot--compact",testId:"review-compact-card",style:{position:"absolute",top:`${V}px`,left:`${M.value.compactCardLeft}px`,width:`${Pe}px`}},()=>me):null,fe=_.value?e.preset||"List"in N?Fe("List",vue.h(Wt,F,{...O.length>0?{default:()=>O}:{},...t.item?{item:t.item}:{}}),N):O:e.preset||"Markers"in N?[Fe("Markers",q,N),ae]:O,ve=[_.value&&e.furniture!==void 0?vue.h("div",{class:"docx-review__furniture","data-testid":"review-furniture"},[e.furniture]):null,fe,...e.preset||"AddComment"in N?[Fe("AddComment",vue.h(Jt,{top:Ae.value,drafting:Q.value!==null}),N)]:[],...Q.value===null||Ae.value===null||!R.value||!e.preset&&!("Draft"in N)?[]:[Fe("Draft",vue.h(aa,{top:Ae.value??0,left:C.value?M.value.compactCardLeft:null}),N)],...e.preset||"Balloon"in N?[Fe("Balloon",vue.h(Qt),N)]:[]],U=A;if(!U)return vue.h("aside",g,ve);let ie=vue.cloneVNode(U,g,true);if(typeof U.type=="string"){let W=Array.isArray(U.children)?U.children:U.children==null?[]:typeof U.children=="string"||typeof U.children=="number"?[U.children]:[];ie.children=[...W,...ve],ie.shapeFlag=ie.shapeFlag&-9|16;}else {let W=U.children&&!Array.isArray(U.children)&&typeof U.children=="object"?U.children:{},co=W.default;ie.children={...W,default:(...Mn)=>[...co?[co(...Mn)]:[],...ve]},ie.shapeFlag=ie.shapeFlag&-25|32;}return ie}}});var la=Object.assign(sa,{List:Wt,Empty:pt,Card:qe,Avatar:we,Author:ge,Time:he,Summary:Ce,Accept:Ue,Reject:He,Resolve:Bt,Reopen:Ft,Delete:yt,Replies:Gt,Reply:Yt,Markers:Xt,AddComment:Jt,Draft:jt,Balloon:Qt});function oe(){let e=vue$1.useDocxEditor(),t=vue$1.useEditorState(n=>n.collaborationStatus);return {session:vue.computed(()=>(t.value,e.value?.collaborationSession()??null))}}function va(e){let t=oe(),n=vue.shallowRef("inactive"),o=vue.shallowRef(void 0),r=vue.shallowRef(void 0),i=vue.shallowRef(false);return vue.watch(()=>e===void 0?t.session.value:vue.toValue(e),(s,a,u)=>{let d=()=>{if(!s){n.value="inactive",o.value=void 0,r.value=void 0,i.value=false;return}let l=s.statusSnapshot();n.value=l.status,o.value=l.reason,r.value=l.lastFailure,i.value=s.attached??false;};d(),s&&u(s.subscribeStatus(()=>d()));},{immediate:true}),{status:vue.readonly(n),reason:vue.readonly(o),lastFailure:vue.readonly(r),attached:vue.readonly(i),live:vue.computed(()=>n.value==="ready"),diverged:vue.computed(()=>n.value==="error"||n.value==="destroyed")}}var yn=Object.freeze([]);function ga(e,t){if(e===t)return true;if(e.length!==t.length)return false;for(let n=0;n<e.length;n+=1){let o=e[n],r=t[n];if(o.actorId!==r.actorId||o.name!==r.name||o.color!==r.color||o.role!==r.role||o.isLocal!==r.isLocal)return false}return true}function bt(e){let t=oe(),n=vue.shallowRef(yn);return vue.watch(()=>e===void 0?t.session.value:vue.toValue(e),(o,r,i)=>{let s=()=>{let a=o?o.participants():yn;ga(n.value,a)||(n.value=a);};s(),o&&i(o.subscribeParticipants(()=>s()));},{immediate:true}),{participants:vue.readonly(n)}}var xa=vue.defineComponent({name:"DocxEditorCollaborationRoot",inheritAttrs:false,props:{collaboration:{type:Object,required:true}},setup(e,{slots:t,attrs:n}){return ()=>{let{document:o,modules:r,session:i}=e.collaboration;if(!o)return t.fallback?.()??null;let s=n.author??i?.identity.name;return vue.h(vue$1.DocxEditorRoot,{...n,key:i?.sessionId??"local",document:o,modules:r,...s!==void 0?{author:s}:{}},t.default?{default:t.default}:void 0)}}});var Sa=Symbol("useDocumentCollaboration.createRoom");async function Ia(e){let{createDocumentCollaboration:t}=await import('../document-session-TU7WVBRB.cjs');return t(e)}function Ea(e){return e?.[Sa]??Ia}function Aa(e){return e?`${e.documentId}:${e.bootstrap.kind}:${e.identity.actorId}`:""}function Oa(e){let t=vue.getCurrentInstance(),n=chunkQ4YPX2DT_cjs.d({ownerKey:`vue-document:${String(t?.uid??"anonymous")}`,hookName:"useDocumentCollaboration",createRoomOf:()=>Ea(vue.toValue(e)),hostModulesOf:()=>vue.toValue(e)?.modules??chunkQ4YPX2DT_cjs.c,autoRoomOf:()=>vue.toValue(e)?.room??null,autoKeyOf:()=>Aa(vue.toValue(e)?.room),rejoinOptionsOf:o=>({...o,bootstrap:{kind:"join"}}),identityOf:o=>o.identity});return {document:vue.readonly(n.document),modules:vue.readonly(n.modules),session:vue.readonly(n.session),pending:vue.readonly(n.pending),error:vue.readonly(n.error),connect:n.connect,leave:n.leave}}var Ye=8;function Rn(e){let t=/^var\(--doc-review-author-(\d{1,2})\)$/.exec(e);return t?Number(t[1])%Ye:null}function St(e,t,n,o){let r=new Map(e.map(a=>[a.author,a])),i=new Map,s=new Map;for(let a of t){if(s.has(a.actorId))continue;let u=collaboration.safeParticipantColor(o?.(a.name));if(u!==void 0){s.set(a.actorId,{color:u,slot:Rn(u)});continue}let d=collaboration.safeParticipantColor(a.color);if(d!==void 0){s.set(a.actorId,{color:d,slot:null});continue}let l=r.get(a.name),c=collaboration.safeParticipantColor(n?.(a.name));if(c!==void 0){s.set(a.actorId,{color:c,slot:Rn(c)??(l?l.slot%Ye:null)});continue}if(l!==void 0){let f=l.slot%Ye;s.set(a.actorId,{color:collaboration.safeParticipantColor(l.color)??`var(--doc-review-author-${f})`,slot:f});continue}let m=i.get(a.name);m===void 0&&(m=e.length+i.size,i.set(a.name,m)),s.set(a.actorId,{color:`var(--doc-review-author-${m%Ye})`,slot:m%Ye});}return s}function to(e,t,n,o){return St(e,[t],n,o).get(t.actorId)}function oo(e){let t=e.trim().split(/\s+/,2),n="";for(let o of t){let r=[...o][0];r!==void 0&&(n+=r.toUpperCase());}return n}function wn(e){return [...e].sort((t,n)=>{if(t.isLocal!==n.isLocal)return t.isLocal?-1:1;let o=t.name.localeCompare(n.name);return o!==0?o:t.actorId<n.actorId?-1:t.actorId>n.actorId?1:0})}function It(e,t,n){for(let o of e)if(o.author===t)return o.style?.avatarUrl;return n?.(t)?.avatarUrl}var gn=Symbol("docx-collaboration-avatar-accents");function hn(e){return e!==void 0?{avatarUrl:e}:{}}function La(e,t,n,o){return vue.h("span",{class:`docx-collaboration-avatar${n?` ${n}`:""}`,"data-collaboration-avatar":"",...e.isLocal?{"data-local":""}:{},...t.slot!==null?{"data-collaboration-author-slot":t.slot}:{},title:e.name,role:"img","aria-label":e.name,style:{"--doc-collaboration-accent":t.color}},o)}var Cn=vue.defineComponent({name:"CollaborationAvatar",props:{participant:{type:Object,required:true},className:{type:String,default:void 0}},setup(e,{slots:t}){let n=vue$1.useDocxEditor(),o=vue$1.useReviewAuthors(),r=vue.inject(gn,null);return ()=>{let i=n.value,s=r?.value.get(e.participant.actorId)??to(o.value,e.participant,i?d=>i.presenceColorFor(d):void 0,i?d=>i.getReviewAuthorStyle(d)?.color:void 0),a=It(o.value,e.participant.name,i?d=>i.getReviewAuthorStyle(d):void 0),u=t.default?.()??(a!==void 0?vue.h("img",{class:"docx-collaboration-avatar__image",src:a,alt:""}):oo(e.participant.name));return La(e.participant,s,e.className,u)}}}),$a=vue.defineComponent({name:"CollaborationAvatars",props:{session:{type:Object,default:void 0},max:{type:Number,default:void 0},className:{type:String,default:void 0}},setup(e,{slots:t}){let n=vue$1.useDocxEditor(),o=oe(),r=vue.computed(()=>e.session===void 0?o.session.value:e.session),{participants:i}=bt(r),s=vue$1.useReviewAuthors(),{t:a}=vue$1.useTranslation(),u=vue.computed(()=>{let c=n.value;return St(s.value,i.value,c?m=>c.presenceColorFor(m):void 0,c?m=>c.getReviewAuthorStyle(m)?.color:void 0)}),d=vue.computed(()=>{let c=n.value,m=c?v=>c.getReviewAuthorStyle(v):void 0,f=new Map;for(let v of i.value){if(f.has(v.name))continue;let y=It(s.value,v.name,m);y!==void 0&&f.set(v.name,y);}return f}),l=vue.computed(()=>wn(i.value));return vue.provide(gn,u),()=>{if(l.value.length===0)return null;let c=e.max===void 0?l.value:l.value.slice(0,Math.max(0,e.max)),m=l.value.length-c.length,f=a("collaboration.moreParticipants",{count:m});return vue.h("span",{class:`docx-collaboration-avatars${e.className?` ${e.className}`:""}`,"data-collaboration-avatars":"",role:"group","aria-label":a("collaboration.participants")},[...c.map(v=>t.default?vue.h(vue.Fragment,{key:v.actorId},[t.default({participant:v,color:u.value.get(v.actorId).color,initials:oo(v.name),...hn(d.value.get(v.name))})]):vue.h(Cn,{key:v.actorId,participant:v})),m>0?vue.h("span",{class:"docx-collaboration-avatar","data-collaboration-avatar":"","data-overflow":"",title:f,role:"img","aria-label":f},`+${m}`):null])}}}),Ka=vue.defineComponent({name:"CollaborationCaretLabels",props:{session:{type:Object,default:void 0}},setup(e,{slots:t}){let n=vue$1.useDocxEditor(),o=oe(),r=vue.computed(()=>e.session===void 0?o.session.value:e.session),{participants:i}=bt(r),s=vue$1.useReviewAuthors(),a=vue.shallowRef([]);return vue.watch([n,r],([u,d],l,c)=>{!u||!d||(u.setRemoteCaretLabelHost({publish:m=>{a.value=[...m];}}),c(()=>{u.setRemoteCaretLabelHost(null),a.value=[];}));},{immediate:true}),()=>{if(a.value.length===0)return null;let u=St(s.value,i.value);return a.value.map(d=>{let{selection:l}=d,c=i.value.find(v=>v.actorId===l.actorId)??null,m=d.element.style.getPropertyValue("--doc-remote-color"),f=m!==""?m:u.get(l.actorId)?.color??to(s.value,{actorId:l.actorId,name:l.name,...l.color!==void 0?{color:l.color}:{},isLocal:false}).color;return vue.h(vue.Teleport,{to:d.element,key:l.actorId},[t.default?t.default({selection:l,participant:c,color:f,...hn(It(s.value,l.name,n.value?v=>n.value.getReviewAuthorStyle(v):void 0))}):l.name])})}}}),Ua={CaretLabels:Ka,Avatars:$a,Avatar:Cn};function Ze(e){let t=vue$1.useDocxEditor();return vue.computed(()=>{let n=vue.toValue(e);return n||(t.value?.getCustomNodeDefinitions()??[]).filter(nt)})}var Ya=".docx-content-control-boundary";function be(e,t){let{node:n,definition:o,controlId:r}=e,i=r?t?.getReviewItems().find(u=>u.kind==="custom"&&u.item.id===r):void 0;if(i?.kind==="custom"){let u=i.item;return {...n,attrs:u.attrs,text:u.text,...u.data===void 0?{}:{data:u.data},...r?{nodeId:r}:{}}}let s=r?Ga(t,r,o):void 0,a=o.fromDocx?o.fromDocx({attrs:n.attrs,text:"",...s===void 0?{}:{data:s}}):n.attrs;return a===null?null:{...n,attrs:a,...s===void 0?{}:{data:s},...r?{nodeId:r}:{}}}function Ga(e,t,n){let o=e?.surface;if(!o)return;let r=editor.partOfNodeId(o.session,t),i=store.customNodePayloadsByControl(o.session.currentPackage(),(r??o.session.part()).name,o.session.part().name).get(t);if(!i)return;let s=ot(n.schema,i.data);return s.ok?s.value:void 0}function xe(e,t){let n=e?.closest?.(Ya),o=n?.closest(".docx-content-control-chrome"),r=o?.getAttribute("data-tag"),i=r?tt(r):null;if(!n||!i||!r)return null;let s=t.find(a=>a.tagPrefix===i.prefix&&a.name===i.name);return s?{node:{name:i.name,attrs:i.attrs,tag:r,rect:n.getBoundingClientRect()},definition:s,controlId:o?.getAttribute("data-docx-content-control")??null}:null}var io=".docx-content-control-boundary";function Qa(e){if(!Mt.test(e.tagPrefix)||!Mt.test(e.name))return [];let t=`${e.tagPrefix}:${e.name}`;return [`.docx-content-control-chrome[data-tag="${t}"]`,`.docx-content-control-chrome[data-tag^="${t}?"]`]}var ei=vue.defineComponent({name:"CustomNodeChrome",props:{nodes:{type:Array,default:void 0},onNodeClick:{type:Function,default:void 0},onNodeHover:{type:Function,default:void 0}},setup(e){let t=vue$1.useDocxEditor(),n=Ze(()=>e.nodes),o,r=null,i=null,s=l=>xe(document.elementFromPoint(l.clientX,l.clientY),n.value),a=l=>{let c=l.button===0?s(l):null;r=c?.controlId??null,i=c?.node.tag??null;},u=l=>{let c=r,m=i;if(r=null,i=null,m===null)return;let f=s(l);if(!f||f.node.tag!==m||c!==null&&f.controlId!==c)return;let v=be(f,t.value);v&&(f.definition.onClick?.(v),e.onNodeClick?.(v));},d=l=>{let c=xe(l.target,n.value);if(!c||l.relatedTarget?.closest?.(io)===l.target.closest(io))return;let f=be(c,t.value);f&&(c.definition.onHover?.(f),e.onNodeHover?.(f));};return vue.onMounted(()=>{o=vue.watch(n,(l,c,m)=>{let f=document.createElement("style"),v=[];for(let y of l){let b=Qa(y);if(b.length===0)continue;let S=y.chrome?.color,R=S!==void 0&&typeof CSS<"u"&&CSS.supports("color",S)?S:"var(--doc-accent)";v.push(`${b.map(E=>`${E} ${io}`).join(", ")} {`," pointer-events: auto !important;"," opacity: 1;"," border: none;",` background: color-mix(in srgb, ${R} 12%, transparent);`," border-radius: 6px;"," cursor: default;","}");}f.textContent=v.join(`
|
|
2
|
+
`),document.head.append(f),m(()=>f.remove());},{immediate:true}),document.addEventListener("pointerdown",a,true),document.addEventListener("pointerup",u,true),document.addEventListener("mouseover",d);}),vue.onBeforeUnmount(()=>{o?.(),document.removeEventListener("pointerdown",a,true),document.removeEventListener("pointerup",u,true),document.removeEventListener("mouseover",d);}),()=>null}});function oi(e){return e.surface??null}function xn(e){let t=e.detail?`${e.reason}: ${e.detail}`:e.reason;return {ok:false,code:ni.has(e.reason)?"invalidArgs":"unsupported",reason:t}}var ni=new Set(["payload-too-large","unaddressable-payload","store-not-authored","offset-out-of-range","invalid-range","invalid-property-value","splits-surrogate-pair"]);function Nn(e){return e.getEditingMode()==="viewing"?{ok:false,code:"locked",reason:"the document is open for viewing"}:null}function bn(e){let t=e.getActiveScope();if(t.kind==="headerFooter")return {kind:"headerFooter",rId:t.rId};if(t.kind==="note"){let n=store.parseNoteScopeId(t.id);if(n)return {kind:"notesPart",noteKind:n.noteKind}}return {kind:"body"}}function Sn(e,t){let n=oi(e),o=t===void 0?"":t.slice(0,t.indexOf("#"));if(!n||o.length===0)return bn(e);if(o===n.session.part().name)return {kind:"body"};for(let r of n.session.headerFooterResolutionBySection())for(let i of [r.headers,r.footers])for(let s of i.values())if(s.partName===o)return {kind:"headerFooter",rId:s.rId};for(let r of ["footnote","endnote"])if(n.session.partFor({kind:"notesPart",noteKind:r})?.name===o)return {kind:"notesPart",noteKind:r};return bn(e)}function ri(e){return e.surface??null}function In(e,t){let n=ri(e);if(!n)return {ok:false,code:"notFound",reason:"no document is mounted"};let o=Nn(e);if(o)return o;n.flushPendingInput();let r=n.session.removeCustomNode(t,Sn(e,t));return r.ok?{ok:true,changed:true}:xn(r)}var ui=Object.assign(vue.defineComponent({name:"CustomNodeContextMenu",props:{nodes:{type:Array,default:void 0},onEditNode:{type:Function,default:void 0},remove:{type:Boolean,default:true},onRemoveRefused:{type:Function,default:void 0}},setup(e){let t=Ze(()=>e.nodes),n=vue$1.useContextMenuTarget(),o=vue$1.useDocxEditor(),{t:r}=vue$1.useTranslation(),i=vue.computed(()=>xe(n,t.value)),s=vue.computed(()=>{let u=i.value;return u?be(u,o.value):null}),a=vue.computed(()=>{let u=i.value,d=s.value;return !u?.definition.reviewCard||!d?null:u.definition.reviewCard({attrs:d.attrs,text:d.text??"",...d.data===void 0?{}:{data:d.data}})});return ()=>{let u=i.value,d=s.value;if(!u||!d)return null;let{definition:l}=u,c=l.label??l.name,m=l.onEdit!==void 0||e.onEditNode!==void 0,f=e.remove&&d.nodeId!==void 0&&o.value!==null;return !a.value&&!m&&!f?null:jsxRuntime.jsxs(vue.Fragment,{children:[a.value?jsxRuntime.jsxs("div",{class:"docx-contextmenu__custom-info","data-testid":"custom-node-info",children:[jsxRuntime.jsx("span",{class:"docx-contextmenu__custom-title",children:a.value.title}),a.value.detail?jsxRuntime.jsx("span",{class:"docx-contextmenu__custom-detail",children:a.value.detail}):null]}):null,m?jsxRuntime.jsx(vue$1.ContextMenuItem,{label:r("contextMenu.editCustomNode",{label:c}),className:"docx-contextmenu__custom-edit",onSelect:()=>{l.onEdit?.(d),e.onEditNode?.(d,l);}}):null,f?jsxRuntime.jsx(vue$1.ContextMenuItem,{label:r("contextMenu.removeCustomNode",{label:c}),className:"docx-contextmenu__custom-remove",onSelect:()=>{let v=In(o.value,d.nodeId);v.ok||e.onRemoveRefused?.(d,v.reason);}}):null,jsxRuntime.jsx("div",{role:"separator",class:"docx-toolbar__menu-separator"})]})}}}),{docxRowPlacement:"start"});Object.defineProperty(exports,"collaborationModule",{enumerable:true,get:function(){return chunkQ4YPX2DT_cjs.b}});exports.CustomNodeChrome=ei;exports.CustomNodeContextMenu=ui;exports.DocxEditorCollaboration=Ua;exports.DocxEditorCollaborationRoot=xa;exports.DocxEditorReview=la;exports.activatedCustomNodeOf=be;exports.resolveCustomNodeActivation=xe;exports.reviewModule=zn;exports.useCollaborationParticipants=bt;exports.useCollaborationSession=oe;exports.useCollaborationStatus=va;exports.useCustomNodeDefinitions=Ze;exports.useDocumentCollaboration=Oa;exports.useReview=nr;exports.useReviewAuthor=Cr;exports.useReviewItem=$;exports.useReviewOf=rr;exports.useStackedReviewPositions=ar;
|