@docx-editor.dev/pro 2.5.0 → 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1088 @@
1
+ import { EditorModule } from '@docx-editor.dev/core/editor';
2
+ import * as vue_jsx_runtime from 'vue/jsx-runtime';
3
+ import * as vue from 'vue';
4
+ import { ComputedRef, Ref, VNode, MaybeRefOrGetter as MaybeRefOrGetter$1, PropType } from 'vue';
5
+ import { ReviewItemPlacement, ReviewActivationOptions, ReviewItemQuery, Editor } from '@docx-editor.dev/core/contracts/editor';
6
+ export { ReviewActivationOptions } from '@docx-editor.dev/core/contracts/editor';
7
+ import { MaybeRefOrGetter, ReviewAuthorInfo } from '@docx-editor.dev/vue';
8
+
9
+ /**
10
+ * Licensing, v1: honor system.
11
+ *
12
+ * The key is accepted and remembered so that adding offline (Ed25519)
13
+ * verification later is not a breaking change — but nothing validates it,
14
+ * nothing warns, nothing renders differently, and NOTHING EVER LEAVES THE
15
+ * PROCESS: no network request is made for licensing, ever. That last property
16
+ * is a spec requirement (`pro-licensing`), not an implementation detail.
17
+ */
18
+ /** Accepted by every pro entry point. */
19
+ interface ProLicenseOptions {
20
+ /**
21
+ * Your license key from docx-editor.dev. Optional in v1: unlicensed use in
22
+ * development and evaluation is permitted, production use requires a
23
+ * license (see LICENSE.md) — the package trusts you either way.
24
+ */
25
+ readonly licenseKey?: string;
26
+ }
27
+
28
+ /**
29
+ * The review module: comments, tracked changes, and markup rendering as an
30
+ * `EditorModule` for `createDocxEditor({ modules })`.
31
+ *
32
+ * Registering it is the whole enablement story: the review chrome slots light
33
+ * up through the same `toolbarCommandState` they were disabled by, suggesting
34
+ * mode becomes reachable, and the editor renders revisions in markup rather
35
+ * than the free tier's final-state projection.
36
+ */
37
+
38
+ /**
39
+ * How {@link reviewModule} is configured. Carries only the licence key today, so
40
+ * `reviewModule()` with no argument is the ordinary call.
41
+ *
42
+ * @public
43
+ */
44
+ interface ReviewModuleOptions extends ProLicenseOptions {
45
+ }
46
+ /** Build the review module. Construction never validates the key and never touches the network. */
47
+ declare function reviewModule(options?: ReviewModuleOptions): EditorModule;
48
+
49
+ /** @public */
50
+ type ReviewItemView = ReviewItemPlacement;
51
+
52
+ /** @public */
53
+ interface UseReviewReturn {
54
+ readonly items: ComputedRef<readonly ReviewItemView[]>;
55
+ readonly activeKey: ComputedRef<string | null>;
56
+ readonly setActive: (key: string | null, options?: ReviewActivationOptions) => boolean;
57
+ readonly accept: (item: ReviewItemView) => boolean;
58
+ readonly reject: (item: ReviewItemView) => boolean;
59
+ readonly resolve: (item: ReviewItemView) => boolean;
60
+ readonly reopen: (item: ReviewItemView) => boolean;
61
+ readonly commentResolutionDisabledReason: ComputedRef<string | null>;
62
+ readonly remove: (item: ReviewItemView) => boolean;
63
+ readonly reply: (item: ReviewItemView, text: string, author?: string) => boolean;
64
+ readonly selectionAnchorY: ComputedRef<number | null>;
65
+ readonly comment: (text: string, author?: string) => boolean;
66
+ readonly paneOpen: ComputedRef<boolean>;
67
+ readonly setPaneOpen: (open: boolean) => void;
68
+ readonly ready: ComputedRef<boolean>;
69
+ }
70
+ /** @public */
71
+ declare function useReview(query?: MaybeRefOrGetter<ReviewItemQuery | undefined>): UseReviewReturn;
72
+ /** @public */
73
+ declare function useReviewOf(editorRef: Ref<Editor | null>, query?: MaybeRefOrGetter<ReviewItemQuery | undefined>): UseReviewReturn;
74
+ /** @public */
75
+ declare function useStackedReviewPositions(items: MaybeRefOrGetter<readonly {
76
+ readonly key: string;
77
+ readonly anchorY: number | null;
78
+ }[]>, heights: MaybeRefOrGetter<ReadonlyMap<string, number>>, options?: MaybeRefOrGetter<{
79
+ readonly gap?: number;
80
+ readonly scale?: number;
81
+ readonly defaultHeight?: number;
82
+ }>): ComputedRef<ReadonlyMap<string, number>>;
83
+
84
+ /** @public */
85
+ interface ReviewPartProps {
86
+ className?: string;
87
+ asChild?: boolean;
88
+ hidden?: boolean;
89
+ children?: VNode | VNode[];
90
+ }
91
+ /** @public */
92
+ interface ReviewActionProps extends ReviewPartProps {
93
+ icon?: VNode | string;
94
+ }
95
+ /** @public */
96
+ interface ReviewMarkersProps extends ReviewPartProps {
97
+ scale?: number;
98
+ offset?: number;
99
+ window?: {
100
+ top: number;
101
+ bottom: number;
102
+ } | null;
103
+ icon?: VNode | ((item: ReviewItemView) => VNode | null | undefined);
104
+ }
105
+ /** @public */
106
+ interface ReviewProps extends Omit<ReviewPartProps, 'children' | 'hidden'> {
107
+ t?: (key: string, params?: Record<string, string | number>) => string;
108
+ card?: {
109
+ className?: string;
110
+ };
111
+ furniture?: VNode | VNode[];
112
+ preset?: boolean;
113
+ stack?: boolean;
114
+ gap?: number;
115
+ filter?: (item: ReviewItemView) => boolean;
116
+ structural?: boolean;
117
+ formatting?: boolean;
118
+ hidden?: boolean;
119
+ /** Scoped slot for custom card render: `#default="{ item }"`. */
120
+ children?: VNode | VNode[];
121
+ }
122
+
123
+ /** @public */
124
+ declare function useReviewItem(): ComputedRef<ReviewItemView | null>;
125
+ /**
126
+ * Returns the resolved color, slot, and declared style for one review author.
127
+ *
128
+ * The result updates when the author or revision style declarations change.
129
+ *
130
+ * @public
131
+ */
132
+ declare function useReviewAuthor(author: MaybeRefOrGetter$1<string | undefined>): ComputedRef<ReviewAuthorInfo | undefined>;
133
+
134
+ declare const DocxEditorReview: {
135
+ new (...args: any[]): vue.CreateComponentPublicInstanceWithMixins<Readonly<vue.ExtractPropTypes<{
136
+ className: StringConstructor;
137
+ asChild: BooleanConstructor;
138
+ hidden: BooleanConstructor;
139
+ t: {
140
+ type: PropType<(key: string, params?: Record<string, string | number>) => string>;
141
+ default: undefined;
142
+ };
143
+ card: {
144
+ type: PropType<{
145
+ className?: string;
146
+ }>;
147
+ default: undefined;
148
+ };
149
+ furniture: {
150
+ type: PropType<VNode | VNode[]>;
151
+ default: undefined;
152
+ };
153
+ preset: {
154
+ type: BooleanConstructor;
155
+ default: boolean;
156
+ };
157
+ stack: {
158
+ type: BooleanConstructor;
159
+ default: boolean;
160
+ };
161
+ gap: {
162
+ type: NumberConstructor;
163
+ default: number;
164
+ };
165
+ filter: {
166
+ type: PropType<(item: ReviewItemView) => boolean>;
167
+ default: undefined;
168
+ };
169
+ structural: {
170
+ type: BooleanConstructor;
171
+ default: boolean;
172
+ };
173
+ formatting: {
174
+ type: BooleanConstructor;
175
+ default: boolean;
176
+ };
177
+ }>> & Readonly<{}>, () => VNode<vue.RendererNode, vue.RendererElement, {
178
+ [key: string]: any;
179
+ }> | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, vue.PublicProps, {
180
+ filter: (item: ReviewItemView) => boolean;
181
+ hidden: boolean;
182
+ t: (key: string, params?: Record<string, string | number>) => string;
183
+ structural: boolean;
184
+ furniture: VNode<vue.RendererNode, vue.RendererElement, {
185
+ [key: string]: any;
186
+ }> | VNode<vue.RendererNode, vue.RendererElement, {
187
+ [key: string]: any;
188
+ }>[];
189
+ formatting: boolean;
190
+ asChild: boolean;
191
+ gap: number;
192
+ preset: boolean;
193
+ card: {
194
+ className?: string;
195
+ };
196
+ stack: boolean;
197
+ }, true, {}, {}, vue.GlobalComponents, vue.GlobalDirectives, string, {}, any, vue.ComponentProvideOptions, {
198
+ P: {};
199
+ B: {};
200
+ D: {};
201
+ C: {};
202
+ M: {};
203
+ Defaults: {};
204
+ }, Readonly<vue.ExtractPropTypes<{
205
+ className: StringConstructor;
206
+ asChild: BooleanConstructor;
207
+ hidden: BooleanConstructor;
208
+ t: {
209
+ type: PropType<(key: string, params?: Record<string, string | number>) => string>;
210
+ default: undefined;
211
+ };
212
+ card: {
213
+ type: PropType<{
214
+ className?: string;
215
+ }>;
216
+ default: undefined;
217
+ };
218
+ furniture: {
219
+ type: PropType<VNode | VNode[]>;
220
+ default: undefined;
221
+ };
222
+ preset: {
223
+ type: BooleanConstructor;
224
+ default: boolean;
225
+ };
226
+ stack: {
227
+ type: BooleanConstructor;
228
+ default: boolean;
229
+ };
230
+ gap: {
231
+ type: NumberConstructor;
232
+ default: number;
233
+ };
234
+ filter: {
235
+ type: PropType<(item: ReviewItemView) => boolean>;
236
+ default: undefined;
237
+ };
238
+ structural: {
239
+ type: BooleanConstructor;
240
+ default: boolean;
241
+ };
242
+ formatting: {
243
+ type: BooleanConstructor;
244
+ default: boolean;
245
+ };
246
+ }>> & Readonly<{}>, () => VNode<vue.RendererNode, vue.RendererElement, {
247
+ [key: string]: any;
248
+ }> | null, {}, {}, {}, {
249
+ filter: (item: ReviewItemView) => boolean;
250
+ hidden: boolean;
251
+ t: (key: string, params?: Record<string, string | number>) => string;
252
+ structural: boolean;
253
+ furniture: VNode<vue.RendererNode, vue.RendererElement, {
254
+ [key: string]: any;
255
+ }> | VNode<vue.RendererNode, vue.RendererElement, {
256
+ [key: string]: any;
257
+ }>[];
258
+ formatting: boolean;
259
+ asChild: boolean;
260
+ gap: number;
261
+ preset: boolean;
262
+ card: {
263
+ className?: string;
264
+ };
265
+ stack: boolean;
266
+ }>;
267
+ __isFragment?: never;
268
+ __isTeleport?: never;
269
+ __isSuspense?: never;
270
+ } & vue.ComponentOptionsBase<Readonly<vue.ExtractPropTypes<{
271
+ className: StringConstructor;
272
+ asChild: BooleanConstructor;
273
+ hidden: BooleanConstructor;
274
+ t: {
275
+ type: PropType<(key: string, params?: Record<string, string | number>) => string>;
276
+ default: undefined;
277
+ };
278
+ card: {
279
+ type: PropType<{
280
+ className?: string;
281
+ }>;
282
+ default: undefined;
283
+ };
284
+ furniture: {
285
+ type: PropType<VNode | VNode[]>;
286
+ default: undefined;
287
+ };
288
+ preset: {
289
+ type: BooleanConstructor;
290
+ default: boolean;
291
+ };
292
+ stack: {
293
+ type: BooleanConstructor;
294
+ default: boolean;
295
+ };
296
+ gap: {
297
+ type: NumberConstructor;
298
+ default: number;
299
+ };
300
+ filter: {
301
+ type: PropType<(item: ReviewItemView) => boolean>;
302
+ default: undefined;
303
+ };
304
+ structural: {
305
+ type: BooleanConstructor;
306
+ default: boolean;
307
+ };
308
+ formatting: {
309
+ type: BooleanConstructor;
310
+ default: boolean;
311
+ };
312
+ }>> & Readonly<{}>, () => VNode<vue.RendererNode, vue.RendererElement, {
313
+ [key: string]: any;
314
+ }> | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, {
315
+ filter: (item: ReviewItemView) => boolean;
316
+ hidden: boolean;
317
+ t: (key: string, params?: Record<string, string | number>) => string;
318
+ structural: boolean;
319
+ furniture: VNode<vue.RendererNode, vue.RendererElement, {
320
+ [key: string]: any;
321
+ }> | VNode<vue.RendererNode, vue.RendererElement, {
322
+ [key: string]: any;
323
+ }>[];
324
+ formatting: boolean;
325
+ asChild: boolean;
326
+ gap: number;
327
+ preset: boolean;
328
+ card: {
329
+ className?: string;
330
+ };
331
+ stack: boolean;
332
+ }, {}, string, {}, vue.GlobalComponents, vue.GlobalDirectives, string, vue.ComponentProvideOptions> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
333
+ List: vue.DefineComponent<vue.ExtractPropTypes<{
334
+ stack: {
335
+ type: BooleanConstructor;
336
+ default: boolean;
337
+ };
338
+ positions: {
339
+ type: PropType<ReadonlyMap<string, number>>;
340
+ default: undefined;
341
+ };
342
+ collapsed: {
343
+ type: PropType<ReadonlySet<string>>;
344
+ default: undefined;
345
+ };
346
+ scale: {
347
+ type: NumberConstructor;
348
+ default: number;
349
+ };
350
+ offset: {
351
+ type: NumberConstructor;
352
+ default: number;
353
+ };
354
+ window: {
355
+ type: PropType<{
356
+ top: number;
357
+ bottom: number;
358
+ } | null>;
359
+ default: null;
360
+ };
361
+ className: StringConstructor;
362
+ hidden: BooleanConstructor;
363
+ }>, () => VNode<vue.RendererNode, vue.RendererElement, {
364
+ [key: string]: any;
365
+ }> | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
366
+ stack: {
367
+ type: BooleanConstructor;
368
+ default: boolean;
369
+ };
370
+ positions: {
371
+ type: PropType<ReadonlyMap<string, number>>;
372
+ default: undefined;
373
+ };
374
+ collapsed: {
375
+ type: PropType<ReadonlySet<string>>;
376
+ default: undefined;
377
+ };
378
+ scale: {
379
+ type: NumberConstructor;
380
+ default: number;
381
+ };
382
+ offset: {
383
+ type: NumberConstructor;
384
+ default: number;
385
+ };
386
+ window: {
387
+ type: PropType<{
388
+ top: number;
389
+ bottom: number;
390
+ } | null>;
391
+ default: null;
392
+ };
393
+ className: StringConstructor;
394
+ hidden: BooleanConstructor;
395
+ }>> & Readonly<{}>, {
396
+ hidden: boolean;
397
+ offset: number;
398
+ window: {
399
+ top: number;
400
+ bottom: number;
401
+ } | null;
402
+ scale: number;
403
+ collapsed: ReadonlySet<string>;
404
+ stack: boolean;
405
+ positions: ReadonlyMap<string, number>;
406
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
407
+ Empty: vue.DefineComponent<vue.ExtractPropTypes<{
408
+ className: StringConstructor;
409
+ hidden: BooleanConstructor;
410
+ asChild: BooleanConstructor;
411
+ }>, () => vue_jsx_runtime.JSX.Element | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
412
+ className: StringConstructor;
413
+ hidden: BooleanConstructor;
414
+ asChild: BooleanConstructor;
415
+ }>> & Readonly<{}>, {
416
+ hidden: boolean;
417
+ asChild: boolean;
418
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
419
+ Card: vue.DefineComponent<vue.ExtractPropTypes<{
420
+ className: StringConstructor;
421
+ hidden: BooleanConstructor;
422
+ asChild: BooleanConstructor;
423
+ }>, () => VNode<vue.RendererNode, vue.RendererElement, {
424
+ [key: string]: any;
425
+ }> | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
426
+ className: StringConstructor;
427
+ hidden: BooleanConstructor;
428
+ asChild: BooleanConstructor;
429
+ }>> & Readonly<{}>, {
430
+ hidden: boolean;
431
+ asChild: boolean;
432
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
433
+ Avatar: vue.DefineComponent<vue.ExtractPropTypes<{
434
+ className: StringConstructor;
435
+ hidden: BooleanConstructor;
436
+ asChild: BooleanConstructor;
437
+ }>, () => vue_jsx_runtime.JSX.Element | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
438
+ className: StringConstructor;
439
+ hidden: BooleanConstructor;
440
+ asChild: BooleanConstructor;
441
+ }>> & Readonly<{}>, {
442
+ hidden: boolean;
443
+ asChild: boolean;
444
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
445
+ Author: vue.DefineComponent<vue.ExtractPropTypes<{
446
+ className: StringConstructor;
447
+ hidden: BooleanConstructor;
448
+ asChild: BooleanConstructor;
449
+ }>, () => vue_jsx_runtime.JSX.Element | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
450
+ className: StringConstructor;
451
+ hidden: BooleanConstructor;
452
+ asChild: BooleanConstructor;
453
+ }>> & Readonly<{}>, {
454
+ hidden: boolean;
455
+ asChild: boolean;
456
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
457
+ Time: vue.DefineComponent<vue.ExtractPropTypes<{
458
+ className: StringConstructor;
459
+ hidden: BooleanConstructor;
460
+ asChild: BooleanConstructor;
461
+ }>, () => vue_jsx_runtime.JSX.Element | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
462
+ className: StringConstructor;
463
+ hidden: BooleanConstructor;
464
+ asChild: BooleanConstructor;
465
+ }>> & Readonly<{}>, {
466
+ hidden: boolean;
467
+ asChild: boolean;
468
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
469
+ Summary: vue.DefineComponent<vue.ExtractPropTypes<{
470
+ className: StringConstructor;
471
+ hidden: BooleanConstructor;
472
+ asChild: BooleanConstructor;
473
+ }>, () => vue_jsx_runtime.JSX.Element | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
474
+ className: StringConstructor;
475
+ hidden: BooleanConstructor;
476
+ asChild: BooleanConstructor;
477
+ }>> & Readonly<{}>, {
478
+ hidden: boolean;
479
+ asChild: boolean;
480
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
481
+ Accept: vue.DefineComponent<vue.ExtractPropTypes<{
482
+ className: StringConstructor;
483
+ asChild: BooleanConstructor;
484
+ hidden: BooleanConstructor;
485
+ icon: {
486
+ type: PropType<VNode | string>;
487
+ default: undefined;
488
+ };
489
+ }>, () => vue_jsx_runtime.JSX.Element | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
490
+ className: StringConstructor;
491
+ asChild: BooleanConstructor;
492
+ hidden: BooleanConstructor;
493
+ icon: {
494
+ type: PropType<VNode | string>;
495
+ default: undefined;
496
+ };
497
+ }>> & Readonly<{}>, {
498
+ hidden: boolean;
499
+ icon: string | VNode<vue.RendererNode, vue.RendererElement, {
500
+ [key: string]: any;
501
+ }>;
502
+ asChild: boolean;
503
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
504
+ Reject: vue.DefineComponent<vue.ExtractPropTypes<{
505
+ className: StringConstructor;
506
+ asChild: BooleanConstructor;
507
+ hidden: BooleanConstructor;
508
+ icon: {
509
+ type: PropType<VNode | string>;
510
+ default: undefined;
511
+ };
512
+ }>, () => vue_jsx_runtime.JSX.Element | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
513
+ className: StringConstructor;
514
+ asChild: BooleanConstructor;
515
+ hidden: BooleanConstructor;
516
+ icon: {
517
+ type: PropType<VNode | string>;
518
+ default: undefined;
519
+ };
520
+ }>> & Readonly<{}>, {
521
+ hidden: boolean;
522
+ icon: string | VNode<vue.RendererNode, vue.RendererElement, {
523
+ [key: string]: any;
524
+ }>;
525
+ asChild: boolean;
526
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
527
+ Resolve: vue.DefineComponent<vue.ExtractPropTypes<{
528
+ className: StringConstructor;
529
+ asChild: BooleanConstructor;
530
+ hidden: BooleanConstructor;
531
+ icon: {
532
+ type: PropType<VNode | string>;
533
+ default: undefined;
534
+ };
535
+ }>, () => VNode<vue.RendererNode, vue.RendererElement, {
536
+ [key: string]: any;
537
+ }> | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
538
+ className: StringConstructor;
539
+ asChild: BooleanConstructor;
540
+ hidden: BooleanConstructor;
541
+ icon: {
542
+ type: PropType<VNode | string>;
543
+ default: undefined;
544
+ };
545
+ }>> & Readonly<{}>, {
546
+ hidden: boolean;
547
+ icon: string | VNode<vue.RendererNode, vue.RendererElement, {
548
+ [key: string]: any;
549
+ }>;
550
+ asChild: boolean;
551
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
552
+ Reopen: vue.DefineComponent<vue.ExtractPropTypes<{
553
+ className: StringConstructor;
554
+ asChild: BooleanConstructor;
555
+ hidden: BooleanConstructor;
556
+ icon: {
557
+ type: PropType<VNode | string>;
558
+ default: undefined;
559
+ };
560
+ }>, () => VNode<vue.RendererNode, vue.RendererElement, {
561
+ [key: string]: any;
562
+ }> | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
563
+ className: StringConstructor;
564
+ asChild: BooleanConstructor;
565
+ hidden: BooleanConstructor;
566
+ icon: {
567
+ type: PropType<VNode | string>;
568
+ default: undefined;
569
+ };
570
+ }>> & Readonly<{}>, {
571
+ hidden: boolean;
572
+ icon: string | VNode<vue.RendererNode, vue.RendererElement, {
573
+ [key: string]: any;
574
+ }>;
575
+ asChild: boolean;
576
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
577
+ Delete: vue.DefineComponent<vue.ExtractPropTypes<{
578
+ className: StringConstructor;
579
+ asChild: BooleanConstructor;
580
+ hidden: BooleanConstructor;
581
+ icon: {
582
+ type: PropType<VNode | string>;
583
+ default: undefined;
584
+ };
585
+ }>, () => vue_jsx_runtime.JSX.Element | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
586
+ className: StringConstructor;
587
+ asChild: BooleanConstructor;
588
+ hidden: BooleanConstructor;
589
+ icon: {
590
+ type: PropType<VNode | string>;
591
+ default: undefined;
592
+ };
593
+ }>> & Readonly<{}>, {
594
+ hidden: boolean;
595
+ icon: string | VNode<vue.RendererNode, vue.RendererElement, {
596
+ [key: string]: any;
597
+ }>;
598
+ asChild: boolean;
599
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
600
+ Replies: vue.DefineComponent<vue.ExtractPropTypes<{
601
+ className: StringConstructor;
602
+ hidden: BooleanConstructor;
603
+ }>, () => vue_jsx_runtime.JSX.Element | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
604
+ className: StringConstructor;
605
+ hidden: BooleanConstructor;
606
+ }>> & Readonly<{}>, {
607
+ hidden: boolean;
608
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
609
+ Reply: vue.DefineComponent<vue.ExtractPropTypes<{
610
+ className: StringConstructor;
611
+ hidden: BooleanConstructor;
612
+ }>, () => VNode<vue.RendererNode, vue.RendererElement, {
613
+ [key: string]: any;
614
+ }>[] | vue_jsx_runtime.JSX.Element | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
615
+ className: StringConstructor;
616
+ hidden: BooleanConstructor;
617
+ }>> & Readonly<{}>, {
618
+ hidden: boolean;
619
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
620
+ Markers: vue.DefineComponent<vue.ExtractPropTypes<{
621
+ scale: {
622
+ type: NumberConstructor;
623
+ default: number;
624
+ };
625
+ offset: {
626
+ type: NumberConstructor;
627
+ default: number;
628
+ };
629
+ window: {
630
+ type: PropType<{
631
+ top: number;
632
+ bottom: number;
633
+ } | null>;
634
+ default: null;
635
+ };
636
+ className: StringConstructor;
637
+ hidden: BooleanConstructor;
638
+ icon: {
639
+ type: PropType<VNode | ((item: ReviewItemView) => VNode | null | undefined)>;
640
+ default: undefined;
641
+ };
642
+ }>, () => vue_jsx_runtime.JSX.Element | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
643
+ scale: {
644
+ type: NumberConstructor;
645
+ default: number;
646
+ };
647
+ offset: {
648
+ type: NumberConstructor;
649
+ default: number;
650
+ };
651
+ window: {
652
+ type: PropType<{
653
+ top: number;
654
+ bottom: number;
655
+ } | null>;
656
+ default: null;
657
+ };
658
+ className: StringConstructor;
659
+ hidden: BooleanConstructor;
660
+ icon: {
661
+ type: PropType<VNode | ((item: ReviewItemView) => VNode | null | undefined)>;
662
+ default: undefined;
663
+ };
664
+ }>> & Readonly<{}>, {
665
+ hidden: boolean;
666
+ offset: number;
667
+ window: {
668
+ top: number;
669
+ bottom: number;
670
+ } | null;
671
+ icon: VNode<vue.RendererNode, vue.RendererElement, {
672
+ [key: string]: any;
673
+ }> | ((item: ReviewItemView) => VNode | null | undefined);
674
+ scale: number;
675
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
676
+ AddComment: vue.DefineComponent<vue.ExtractPropTypes<{
677
+ top: {
678
+ type: PropType<number | null>;
679
+ default: null;
680
+ };
681
+ drafting: {
682
+ type: BooleanConstructor;
683
+ default: boolean;
684
+ };
685
+ className: StringConstructor;
686
+ hidden: BooleanConstructor;
687
+ }>, () => VNode<vue.RendererNode, vue.RendererElement, {
688
+ [key: string]: any;
689
+ }> | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
690
+ top: {
691
+ type: PropType<number | null>;
692
+ default: null;
693
+ };
694
+ drafting: {
695
+ type: BooleanConstructor;
696
+ default: boolean;
697
+ };
698
+ className: StringConstructor;
699
+ hidden: BooleanConstructor;
700
+ }>> & Readonly<{}>, {
701
+ top: number | null;
702
+ hidden: boolean;
703
+ drafting: boolean;
704
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
705
+ Draft: vue.DefineComponent<vue.ExtractPropTypes<{
706
+ top: {
707
+ type: NumberConstructor;
708
+ default: number;
709
+ };
710
+ left: {
711
+ type: PropType<number | null>;
712
+ default: null;
713
+ };
714
+ className: StringConstructor;
715
+ hidden: BooleanConstructor;
716
+ }>, () => VNode<vue.RendererNode, vue.RendererElement, {
717
+ [key: string]: any;
718
+ }> | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
719
+ top: {
720
+ type: NumberConstructor;
721
+ default: number;
722
+ };
723
+ left: {
724
+ type: PropType<number | null>;
725
+ default: null;
726
+ };
727
+ className: StringConstructor;
728
+ hidden: BooleanConstructor;
729
+ }>> & Readonly<{}>, {
730
+ left: number | null;
731
+ top: number;
732
+ hidden: boolean;
733
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
734
+ Balloon: vue.DefineComponent<vue.ExtractPropTypes<{
735
+ className: StringConstructor;
736
+ hidden: BooleanConstructor;
737
+ }>, () => VNode<vue.RendererNode, vue.RendererElement, {
738
+ [key: string]: any;
739
+ }> | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
740
+ className: StringConstructor;
741
+ hidden: BooleanConstructor;
742
+ }>> & Readonly<{}>, {
743
+ hidden: boolean;
744
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
745
+ };
746
+ /** @public */
747
+ type DocxEditorReviewNamespace = typeof DocxEditorReview;
748
+
749
+ /**
750
+ * The Standard Schema interface, vendored.
751
+ *
752
+ * Any zod, valibot or arktype schema satisfies it. See https://standardschema.dev.
753
+ *
754
+ * Reduced to the parts used here rather than copied: the spec's namespace, `Props`,
755
+ * `SuccessResult`/`FailureResult`, `PathSegment` and `InferInput` are all absent. Assignability
756
+ * with a real schema is what matters, and is checked against zod in the tests.
757
+ */
758
+ interface StandardSchemaV1<Input = unknown, Output = Input> {
759
+ readonly '~standard': {
760
+ readonly version: 1;
761
+ readonly vendor: string;
762
+ readonly validate: (value: unknown) => StandardSchemaResult<Output> | Promise<StandardSchemaResult<Output>>;
763
+ readonly types?: {
764
+ readonly input: Input;
765
+ readonly output: Output;
766
+ } | undefined;
767
+ };
768
+ }
769
+ /** What a Standard Schema validation answers. */
770
+ type StandardSchemaResult<Output> = {
771
+ readonly value: Output;
772
+ readonly issues?: undefined;
773
+ } | {
774
+ readonly issues: readonly StandardSchemaIssue[];
775
+ };
776
+ /** One validation failure. `path` is what tells a host WHICH field was wrong. */
777
+ interface StandardSchemaIssue {
778
+ readonly message: string;
779
+ readonly path?: readonly (PropertyKey | {
780
+ readonly key: PropertyKey;
781
+ })[] | undefined;
782
+ }
783
+ /**
784
+ * The type a schema produces, for a definition to hand back to its host.
785
+ *
786
+ * `unknown` for a definition with no schema, which is the honest description of an unchecked
787
+ * payload — not `never`, which would make the field unusable rather than merely unguaranteed.
788
+ */
789
+ type InferSchemaOutput<Schema> = 0 extends 1 & Schema ? any : Schema extends StandardSchemaV1<unknown, infer Output> ? Output : unknown;
790
+
791
+ /**
792
+ * One integrator-defined inline node, anchored on a run-level SDT whose `w:tag` carries its
793
+ * identity.
794
+ *
795
+ * A definition claims a tag PREFIX, so `acme` recognizes every `acme:*` tag. An SDT whose prefix
796
+ * no definition claims stays literal — which is also what the free tier and Word itself render,
797
+ * so an unrecognized node never loses content or locks editing.
798
+ *
799
+ * Build one with {@link defineCustomNode}, which validates the shape, then register it through
800
+ * {@link customNodesModule}.
801
+ *
802
+ * @example
803
+ * ```ts
804
+ * const citation = defineCustomNode({
805
+ * name: 'citation',
806
+ * tagPrefix: 'acme',
807
+ * chrome: { color: '#2563eb' },
808
+ * onClick: (node) => openCitation(node.attrs.key),
809
+ * });
810
+ * ```
811
+ *
812
+ * @public
813
+ */
814
+ interface CustomNodeDefinition<Schema extends StandardSchemaV1 | undefined = any> {
815
+ /** Node type name — the second segment of the tag (`<prefix>:<name>?…`). */
816
+ readonly name: string;
817
+ /** Tag prefix this definition claims (`acme` claims `acme:*`). No colons. */
818
+ readonly tagPrefix: string;
819
+ /**
820
+ * What the document SHOWS for this node, from its payload.
821
+ *
822
+ * The one thing most definitions need beyond an identity and a schema:
823
+ *
824
+ * ```ts
825
+ * defineCustomNode({
826
+ * name: 'citation',
827
+ * tagPrefix: 'docx',
828
+ * schema: CitationData,
829
+ * text: (data) => `(${data.authors[0]} ${data.year})`,
830
+ * });
831
+ * ```
832
+ *
833
+ * With it, a write takes the payload alone — `insertCustomNode(editor, Citation, { data })` —
834
+ * and the words in the paragraph are computed, so they cannot drift from the data they
835
+ * describe. Without it, pass `text` on every call and keep the two in step yourself.
836
+ *
837
+ * Word paints a bound control's text from the payload and will not let a user type into it,
838
+ * so this is the only thing that decides what a reader sees.
839
+ */
840
+ readonly text?: (data: InferSchemaOutput<Schema>) => string;
841
+ /**
842
+ * Extra identity to put in the `w:tag`, from the payload. Rarely needed.
843
+ *
844
+ * The tag already carries `<prefix>:<name>`, which is what recognition matches on, so most
845
+ * nodes need nothing here. Add it when a reader that opens the document WITHOUT the payload
846
+ * store should still be able to tell which one this is — a `sourceId` on a citation, say.
847
+ *
848
+ * Word caps the encoded tag at 64 characters, prefix and name included.
849
+ */
850
+ readonly tagAttrs?: (data: InferSchemaOutput<Schema>) => Readonly<Record<string, string>>;
851
+ /**
852
+ * Recognition hook. Receives the decoded attrs and the SDT's literal text
853
+ * (so label drift from Word edits is visible) and returns the attrs the node
854
+ * should carry — or null to leave this SDT unrecognized and literal.
855
+ *
856
+ * Every input value originates in a file an attacker controls; treat it as
857
+ * untrusted and never build DOM or URLs from it without sanitizing.
858
+ */
859
+ readonly fromDocx?: (input: {
860
+ readonly attrs: Readonly<Record<string, string>>;
861
+ readonly text: string;
862
+ /**
863
+ * The bound payload, already through `schema` — so this is the type the definition
864
+ * declared, not `unknown`. Undefined when the node carries none or it did not match.
865
+ */
866
+ readonly data?: InferSchemaOutput<Schema>;
867
+ }) => Readonly<Record<string, string>> | null;
868
+ /**
869
+ * Chip appearance, HOST-authored (never file data). `color` tints the chip
870
+ * and its border; applied by `CustomNodeChrome` from the adapter-specific Pro entry.
871
+ */
872
+ readonly chrome?: {
873
+ readonly color?: string;
874
+ };
875
+ /** Click on the painted chip. UI state belongs in `CustomNodeChrome`'s `onNodeClick`. */
876
+ readonly onClick?: (node: ActivatedCustomNode) => void;
877
+ /** Pointer enters the painted chip. */
878
+ readonly onHover?: (node: ActivatedCustomNode) => void;
879
+ /**
880
+ * Contribute a card to the review sidebar for every recognized node of this
881
+ * definition, anchored at the node's range. Return null to skip one node.
882
+ *
883
+ * `attrs` and `text` originate in the file — untrusted; the returned strings
884
+ * are rendered as TEXT by the pane, never markup. The context-menu section
885
+ * reuses this hook for its info block and may invoke it with `text: ''` when
886
+ * no review module is registered (the DOM decode alone cannot see the text).
887
+ */
888
+ readonly reviewCard?: (node: {
889
+ readonly attrs: Readonly<Record<string, string>>;
890
+ readonly text: string;
891
+ /** The bound payload, already through `schema` — see {@link CustomNodeDefinition.fromDocx}. */
892
+ readonly data?: InferSchemaOutput<Schema>;
893
+ }) => {
894
+ readonly title: string;
895
+ readonly detail?: string;
896
+ /**
897
+ * Glyph for this node in the COLLAPSED rail, as an SVG path in a `0 -960 960 960`
898
+ * viewBox (a Material Symbol path is exactly this). Without one every marker in the
899
+ * gutter is the generic comment bubble, so a citation, a tracked deletion and a
900
+ * comment are indistinguishable until the pane is opened.
901
+ *
902
+ * HOST-AUTHORED. Unlike `title` and `detail`, this is not derived from `attrs` or
903
+ * `text`: it lands in an SVG `d` attribute, and a path out of a document would be
904
+ * attacker-controlled markup.
905
+ */
906
+ readonly icon?: string;
907
+ } | null;
908
+ /**
909
+ * The "Edit {label}" row the context menu shows at the top when the
910
+ * right-click lands on the node's chip. The HOST owns the dialog.
911
+ *
912
+ * Re-author with `updateCustomNode(editor, definition, node.nodeId, attrs, text, { data })`:
913
+ * one transaction, one undo step. The activation carries `nodeId`, the node's `text` and its
914
+ * `data`, which is everything a prefilled form needs.
915
+ */
916
+ readonly onEdit?: (node: ActivatedCustomNode) => void;
917
+ /**
918
+ * Display name for chrome — the "Edit {label}" context-menu row. Defaults to
919
+ * `name`. Host-authored, never file data; provide a localized string.
920
+ */
921
+ readonly label?: string;
922
+ /**
923
+ * The shape of this node's payload, as a zod (or valibot, or arktype) schema.
924
+ *
925
+ * A payload lives in a customXml data part, so it arrives from a file the sender controls.
926
+ * Declaring the shape means it is parsed and checked ONCE, at the read boundary, after which
927
+ * the `data` handed to the hooks is the type that was asked for rather than something every
928
+ * caller has to re-guard. Without one, `data` is whatever JSON the file held, typed
929
+ * `unknown`, which is the honest description of an unchecked payload.
930
+ *
931
+ * Any Standard Schema satisfies this, which is what zod produces:
932
+ *
933
+ * ```ts
934
+ * const Citation = z.object({ sourceId: z.string(), year: z.number() });
935
+ * defineCustomNode({ name: 'citation', tagPrefix: 'acme', schema: Citation });
936
+ * ```
937
+ *
938
+ * Validated on the way IN as well as on the way out, so a payload that does not match is
939
+ * refused at the insert rather than written and rejected on the next open.
940
+ */
941
+ readonly schema?: Schema;
942
+ /**
943
+ * The customXml store this definition's payloads live in.
944
+ *
945
+ * One store per namespace, per document, so this is what decides whether two definitions
946
+ * share a store or get one each. Defaults to a namespace derived from `tagPrefix`, which
947
+ * means a host that never thinks about it still gets one store per prefix and never collides
948
+ * with another integrator's.
949
+ *
950
+ * Set it to interoperate with something that already reads a namespace of its own. Whatever
951
+ * it is, it must be free of quotes and angle brackets: it is written into an XPath prefix
952
+ * declaration, where there is no escape for either.
953
+ */
954
+ readonly payloadNamespace?: string;
955
+ /**
956
+ * What happens to this node when a document is exported OUTSIDE the system that made it.
957
+ *
958
+ * A host may not want its own markup travelling in a file its users download: a `w:tag`
959
+ * naming the tool, or a payload with no meaning anywhere else. This declares the fate, and
960
+ * the save that applies it picks the pipeline — so one document can serialize one way at
961
+ * rest and another on the way out.
962
+ *
963
+ * - `true` (default) — the node and its payload survive untouched.
964
+ * - `'text'` — the control is unwrapped: a reader still sees the words, while the tag, the
965
+ * binding and the payload are gone. Right for a citation, whose text is the point of it.
966
+ * - `false` — the node goes, and takes its content with it.
967
+ *
968
+ * Applied by `prepareForExport`, which is a pipeline of its own rather than something
969
+ * `save()` does — that is what lets one document serialize one way at rest and another on the
970
+ * way out.
971
+ *
972
+ * IT DOES NOT MAKE A DOCUMENT ANONYMOUS. It removes this library's markup and nothing else. A
973
+ * `.docx` carries its origin in `docProps/app.xml`, `docProps/core.xml`, comment and revision
974
+ * authors, rsids and custom document properties.
975
+ */
976
+ readonly preserveOnExport?: boolean | 'text';
977
+ }
978
+ /**
979
+ * A definition of any payload shape, spelled out.
980
+ *
981
+ * The AUTHORED shape, which is what every collection and every internal helper takes: they read
982
+ * `name`, `schema`, `text` and `preserveOnExport` and never need `dataOf`. A {@link CustomNode}
983
+ * is assignable to it, so `defineCustomNode`'s result goes wherever this is asked for.
984
+ *
985
+ * The same thing bare `CustomNodeDefinition` already means — the interface defaults its
986
+ * parameter to `any` for exactly this reason. `CustomNodeDefinition<Schema>` is INVARIANT in
987
+ * `Schema`, because the schema's output type appears in the PARAMETER of `fromDocx` and
988
+ * `reviewCard`; that is what makes those hooks typed, and it also means two definitions with
989
+ * different schemas are not assignable to one another. Had the default been `undefined`, the
990
+ * obvious annotation — `const nodes: CustomNodeDefinition[] = [citation, figure]` — would fail
991
+ * with a message naming neither the cause nor this alias.
992
+ *
993
+ * The cost, stated plainly: `data` is unchecked wherever a definition is held under this type.
994
+ * Pull one out of a registry and `insertCustomNode(editor, def, attrs, text, { data })` accepts
995
+ * any shape at all. Payload typing lives where the definition is WRITTEN — `defineCustomNode`
996
+ * infers the schema, and its hooks are typed from it.
997
+ */
998
+ type AnyCustomNodeDefinition = CustomNodeDefinition;
999
+ /**
1000
+ * A chip activation: identity + attrs, plus where it sits.
1001
+ *
1002
+ * `attrs` are the definition's OWN shape — the raw tag decode has already been
1003
+ * through `fromDocx`, exactly as the review derivation runs it, so every
1004
+ * surface (click, hover, edit, cards) sees one attrs vocabulary. `text` and
1005
+ * `nodeId` are present when the surface could resolve them (a registered
1006
+ * review module resolves both).
1007
+ */
1008
+ interface ActivatedCustomNode {
1009
+ readonly name: string;
1010
+ readonly attrs: Readonly<Record<string, string>>;
1011
+ readonly tag: string;
1012
+ /** Viewport-relative rect of the chip's boundary, for anchoring host UI. */
1013
+ readonly rect: DOMRect;
1014
+ /** The SDT node's canonical id — the address `removeContentControl` takes. */
1015
+ readonly nodeId?: string;
1016
+ /** The node's literal content text, when resolvable. */
1017
+ readonly text?: string;
1018
+ /**
1019
+ * The node's payload, when the surface could resolve one.
1020
+ *
1021
+ * Present only where the review derivation has already run — a chip's own click and hover
1022
+ * resolve through the review item, which is what carries the payload. Undefined otherwise,
1023
+ * and undefined for a node whose payload failed its schema.
1024
+ */
1025
+ readonly data?: unknown;
1026
+ }
1027
+
1028
+ /** Props for custom-node chip colors and pointer activation. @public */
1029
+ interface CustomNodeChromeProps {
1030
+ /** Definitions to style. Defaults to definitions registered on the editor. */
1031
+ readonly nodes?: readonly CustomNodeDefinition[];
1032
+ /** Receives primary-button activation after the definition's own hook. */
1033
+ readonly onNodeClick?: (node: ActivatedCustomNode) => void;
1034
+ /** Receives pointer-entry activation after the definition's own hook. */
1035
+ readonly onNodeHover?: (node: ActivatedCustomNode) => void;
1036
+ }
1037
+ /**
1038
+ * Applies custom-node chip colors and dispatches click and hover activation.
1039
+ *
1040
+ * Mount this component once inside `DocxEditorRoot`. It renders no element.
1041
+ *
1042
+ * @public
1043
+ */
1044
+ declare const CustomNodeChrome: {
1045
+ new (): {
1046
+ $props: CustomNodeChromeProps;
1047
+ };
1048
+ };
1049
+
1050
+ /** Props for the custom-node context-menu section. @public */
1051
+ interface CustomNodeContextMenuProps {
1052
+ /** Definitions to offer. Defaults to definitions registered on the editor. */
1053
+ readonly nodes?: readonly CustomNodeDefinition[];
1054
+ /** Runs after the definition's own edit hook. */
1055
+ readonly onEditNode?: (node: ActivatedCustomNode, definition: CustomNodeDefinition) => void;
1056
+ /** Adds the remove row. Defaults to `true`. */
1057
+ readonly remove?: boolean;
1058
+ /** Receives the engine reason when removal is refused. */
1059
+ readonly onRemoveRefused?: (node: ActivatedCustomNode, reason: string) => void;
1060
+ }
1061
+ /**
1062
+ * Adds custom-node information, edit, and remove rows to the context menu.
1063
+ *
1064
+ * Place this component inside `DocxEditorContextMenu`.
1065
+ *
1066
+ * @public
1067
+ */
1068
+ declare const CustomNodeContextMenu: {
1069
+ readonly docxRowPlacement: "start";
1070
+ new (): {
1071
+ $props: CustomNodeContextMenuProps;
1072
+ };
1073
+ };
1074
+
1075
+ /** Returns custom-node definitions from a prop or the mounted editor. @public */
1076
+ declare function useCustomNodeDefinitions(nodes?: MaybeRefOrGetter$1<readonly AnyCustomNodeDefinition[] | undefined>): ComputedRef<readonly AnyCustomNodeDefinition[]>;
1077
+ /** A custom-node definition and decoded node under a pointer target. @public */
1078
+ interface ResolvedCustomNodeActivation {
1079
+ readonly node: ActivatedCustomNode;
1080
+ readonly definition: AnyCustomNodeDefinition;
1081
+ readonly controlId: string | null;
1082
+ }
1083
+ /** Resolves the host-facing custom-node activation payload. @public */
1084
+ declare function activatedCustomNodeOf(resolved: ResolvedCustomNodeActivation, editor: Editor | null | undefined): ActivatedCustomNode | null;
1085
+ /** Resolves a painted pointer target to a registered custom-node definition. @public */
1086
+ declare function resolveCustomNodeActivation(target: EventTarget | null, nodes: readonly AnyCustomNodeDefinition[]): ResolvedCustomNodeActivation | null;
1087
+
1088
+ export { CustomNodeChrome, type CustomNodeChromeProps, CustomNodeContextMenu, type CustomNodeContextMenuProps, DocxEditorReview, type DocxEditorReviewNamespace, type ProLicenseOptions, type ResolvedCustomNodeActivation, type ReviewActionProps, type ReviewItemView, type ReviewMarkersProps, type ReviewModuleOptions, type ReviewPartProps, type ReviewProps, type UseReviewReturn, activatedCustomNodeOf, resolveCustomNodeActivation, reviewModule, useCustomNodeDefinitions, useReview, useReviewAuthor, useReviewItem, useReviewOf, useStackedReviewPositions };