@docx-editor.dev/core 2.27.0 → 2.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/automation.cjs +1 -1
- package/dist/automation.d.ts +26 -13
- package/dist/automation.js +1 -1
- package/dist/binding.cjs +1 -1
- package/dist/binding.d.ts +20 -9
- package/dist/binding.js +1 -1
- package/dist/chunk-2GO5T2JU.cjs +1 -0
- package/dist/chunk-2RC2EPND.js +3 -0
- package/dist/chunk-4GBTELJV.cjs +28 -0
- package/dist/chunk-4R3TEXMN.js +18 -0
- package/dist/chunk-5CSUYANV.js +1 -0
- package/dist/chunk-6APGXLBB.cjs +3 -0
- package/dist/chunk-6AWEKBLB.cjs +1 -0
- package/dist/chunk-6EYYL7FL.js +1 -0
- package/dist/chunk-E7BQA6UP.js +2 -0
- package/dist/chunk-EO4C5QJW.cjs +2 -0
- package/dist/chunk-ETTO6GK3.js +1 -0
- package/dist/chunk-FIJZIQXA.cjs +18 -0
- package/dist/chunk-FRXAOVTB.js +28 -0
- package/dist/chunk-J6BVWIDB.js +2 -0
- package/dist/chunk-JGNVNT2A.cjs +2 -0
- package/dist/chunk-K5U2PLDP.cjs +2 -0
- package/dist/chunk-KKIJG3C6.js +2 -0
- package/dist/chunk-LWDSDCMO.js +27 -0
- package/dist/chunk-O2AL2HSJ.cjs +1 -0
- package/dist/chunk-QMLCVPCD.cjs +1 -0
- package/dist/chunk-RCHS4ZEH.cjs +27 -0
- package/dist/chunk-SRPILEWV.cjs +5 -0
- package/dist/chunk-TSLBZ26X.js +1 -0
- package/dist/chunk-VDNNLG6X.js +2 -0
- package/dist/chunk-VHAVHCQY.js +7 -0
- package/dist/chunk-VX43VBAX.cjs +7 -0
- package/dist/chunk-Z6WBFXJU.js +5 -0
- package/dist/{chunk-2GK7YQB2.cjs → chunk-ZUHOMK52.cjs} +1 -1
- package/dist/collaboration/replication.cjs +1 -1
- package/dist/collaboration/replication.d.ts +41 -5
- package/dist/collaboration/replication.js +1 -1
- package/dist/collaboration.cjs +1 -1
- package/dist/collaboration.d.ts +98 -6
- package/dist/collaboration.js +1 -1
- package/dist/contracts/document.d.ts +17 -2
- package/dist/contracts/editor.d.ts +19 -9
- package/dist/contracts/interaction.d.ts +29 -0
- package/dist/contracts/modules.d.ts +31 -7
- package/dist/contracts/types.d.ts +10 -1
- package/dist/{custom-node-writes-Vzpq9I8_.d.ts → custom-node-writes-cvL5rhcD.d.ts} +2 -2
- package/dist/{document-protection-9zpIHWTE.d.ts → document-protection-BAGVGqaP.d.ts} +1 -1
- package/dist/{editor-B3OBYNrF.d.ts → editor-Ci7IZGmG.d.ts} +392 -140
- package/dist/editor.cjs +1 -1
- package/dist/editor.css +5 -5
- package/dist/editor.d.ts +415 -30
- package/dist/editor.js +1 -1
- package/dist/export.cjs +2 -2
- package/dist/export.d.ts +23 -13
- package/dist/export.js +2 -2
- package/dist/failure-NS2lsya4.d.ts +115 -0
- package/dist/{font-resolver-DN0xNOf_.d.ts → font-resolver-BVQB14qT.d.ts} +1 -1
- package/dist/{headless-document-view-ICYqNkQ1.d.ts → headless-document-view-qH331moE.d.ts} +2 -2
- package/dist/{image-resources-BDFxcu7W.d.ts → image-resources-BN-hUgCn.d.ts} +9 -9
- package/dist/{index-CkQVRJtJ.d.ts → index-Bsg7oIKP.d.ts} +234 -111
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +46 -19
- package/dist/index.js +1 -1
- package/dist/{layout-shaping-BvZD_VKP.d.ts → layout-shaping-BEyuiQOk.d.ts} +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.d.ts +170 -78
- package/dist/layout.js +1 -1
- package/dist/{note-properties-CkAk7g-n.d.ts → note-properties-4Y9o6Gyk.d.ts} +1 -1
- package/dist/{omml-equation-DuczgG5o.d.ts → omml-equation-CuzBL5DD.d.ts} +1 -1
- package/dist/output.cjs +1 -1
- package/dist/output.d.ts +18 -8
- package/dist/output.js +1 -1
- package/dist/{protocol-aKYr8r3u.d.ts → protocol-Bqk4Izjc.d.ts} +44 -4
- package/dist/review-pane-D9jm8DcY.d.ts +128 -0
- package/dist/{review-paragraph-order-Ddj5d6rp.d.ts → review-paragraph-order-DT-n6ouC.d.ts} +5 -2
- package/dist/{revision-projection-CSNFudZY.d.ts → revision-projection-DZ4kKVev.d.ts} +1 -1
- package/dist/{semantic-cell-selection-DoqYCz_F.d.ts → semantic-cell-selection-D9D1KSXq.d.ts} +8 -6
- package/dist/{semantic-interaction-G0bjmmmk.d.ts → semantic-interaction-CIC-PooQ.d.ts} +25 -34
- package/dist/{semantic-paint-CsMzF8-O.d.ts → semantic-paint-BME37OMv.d.ts} +4 -4
- package/dist/{semantic-record-queries-1du6lQqS.d.ts → semantic-record-queries-CBlZqZNa.d.ts} +1 -1
- package/dist/{semantic-records-B9OolWGN.d.ts → semantic-records-4B3WwFAi.d.ts} +74 -42
- package/dist/store.cjs +1 -1
- package/dist/store.d.ts +157 -134
- package/dist/store.js +1 -1
- package/dist/{tree-package-fragment-DYZIk1rY.d.ts → tree-package-fragment-BeeKxDw8.d.ts} +77 -57
- package/dist/{tree-session-contract-DQVJOOkv.d.ts → tree-session-contract-CVbmlMlq.d.ts} +7 -5
- package/dist/{types-barrel-BFKR8Pzp.d.ts → types-barrel-D3xCgQX6.d.ts} +462 -362
- package/package.json +2 -2
- package/dist/chunk-4KZ6L5YF.cjs +0 -15
- package/dist/chunk-55AT3MOU.cjs +0 -25
- package/dist/chunk-6ZQMII6V.js +0 -1
- package/dist/chunk-7IGCWG4H.js +0 -2
- package/dist/chunk-7MYITTAH.js +0 -5
- package/dist/chunk-AVKVRU7Z.cjs +0 -5
- package/dist/chunk-CWRBFNK5.cjs +0 -5
- package/dist/chunk-DGPA3TST.cjs +0 -27
- package/dist/chunk-DNXVNQEO.js +0 -1
- package/dist/chunk-FQN4KSFL.cjs +0 -7
- package/dist/chunk-GVUOWHTO.cjs +0 -1
- package/dist/chunk-GWQJ5774.js +0 -5
- package/dist/chunk-HAQ72KD7.js +0 -1
- package/dist/chunk-HO5XFO32.cjs +0 -3
- package/dist/chunk-IGR23DV2.js +0 -1
- package/dist/chunk-JSIX2EOH.js +0 -3
- package/dist/chunk-K246T47S.cjs +0 -1
- package/dist/chunk-KAXOGCGA.js +0 -1
- package/dist/chunk-LZLTN5A3.cjs +0 -1
- package/dist/chunk-OHAXVTWG.cjs +0 -1
- package/dist/chunk-S74GRBNE.js +0 -7
- package/dist/chunk-UBLUVNZR.js +0 -27
- package/dist/chunk-UMRSBLO7.js +0 -15
- package/dist/chunk-VIPMGGUT.js +0 -25
- package/dist/chunk-WG4KMSX2.cjs +0 -2
- package/dist/chunk-WRLKVNNR.cjs +0 -1
- package/dist/chunk-ZU7IVN6G.js +0 -2
- package/dist/failure-BIPVQbRm.d.ts +0 -65
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { d as ResolvedRevisionMarkup, a as ReviewDisplayMode } from './revision-projection-
|
|
2
|
-
import {
|
|
1
|
+
import { d as ResolvedRevisionMarkup, a as ReviewDisplayMode } from './revision-projection-DZ4kKVev.js';
|
|
2
|
+
import { a as ResolvedReviewPane } from './review-pane-D9jm8DcY.js';
|
|
3
|
+
import { t as DocAnchor, g as ReviewRevisionKind, c as ReviewCommentItem, b as ReviewRevisionItem, d as ReviewCustomItem, al as SourceCrop, am as DrawingKind, an as ImageWrapTarget, ao as DrawingPositionInput, ap as DrawingLocks, r as ColorValue, x as ExecErrorCode, aq as ParagraphFormatCommand, ar as Watermark, E as ExecResult, n as ContentControlFilter, o as DocRange, k as RunFormatting, p as Revision, as as Rect, at as SelectionPin, au as Unsubscribe } from './types-barrel-D3xCgQX6.js';
|
|
3
4
|
import { H as HistoryDiagnostic, V as ViewScope, a as HistoryGroup, b as EditorExecOptions, E as EditorScope } from './editor-scope-OHPwVQ5l.js';
|
|
4
5
|
import { DocEdits, DocQueries, DocQueryResults, ContentControlSummary } from './contracts/document.js';
|
|
5
6
|
import { InteractionOutcome } from './contracts/interaction.js';
|
|
6
|
-
import { a as SemanticSelection, S as SemanticPosition } from './semantic-interaction-
|
|
7
|
-
import { b as ImageResourceState, S as SupportedImageMime } from './image-resources-
|
|
8
|
-
import { D as DocumentProtectionState } from './document-protection-
|
|
9
|
-
import { C as CollaborationStatus } from './failure-
|
|
7
|
+
import { a as SemanticSelection, S as SemanticPosition } from './semantic-interaction-CIC-PooQ.js';
|
|
8
|
+
import { b as ImageResourceState, S as SupportedImageMime } from './image-resources-BN-hUgCn.js';
|
|
9
|
+
import { D as DocumentProtectionState } from './document-protection-BAGVGqaP.js';
|
|
10
|
+
import { C as CollaborationStatus } from './failure-NS2lsya4.js';
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* What a fit mode fits the page to.
|
|
@@ -56,7 +57,55 @@ interface EditorEvents {
|
|
|
56
57
|
selectionChange: (snapshot: EditorSnapshot) => void;
|
|
57
58
|
error: (error: EditorError) => void;
|
|
58
59
|
historyDiagnostic: (diagnostic: HistoryDiagnostic) => void;
|
|
60
|
+
/**
|
|
61
|
+
* An explicit request landed on a review item, and its card or balloon should open.
|
|
62
|
+
*
|
|
63
|
+
* Fires each time Next Change or Previous Change lands (`source: 'navigate'`), and each time
|
|
64
|
+
* `setActiveReviewItem(key, { announce: true })` succeeds (`source: 'host'`). It fires again
|
|
65
|
+
* when the item was already active, so a card the reader closed can open again.
|
|
66
|
+
*
|
|
67
|
+
* It does not fire for a caret move, a click in the page, a dismissal (`key` of `null`), a
|
|
68
|
+
* refused activation, or `setActiveReviewItem(key)` without `announce: true`. A remote edit in a
|
|
69
|
+
* collaboration session never fires it: it is a local view event.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```ts
|
|
73
|
+
* editor.on('reviewItemReveal', ({ key, source }) => {
|
|
74
|
+
* openMyBalloon(key); // `source` is 'navigate' or 'host'
|
|
75
|
+
* });
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
reviewItemReveal: (event: ReviewItemRevealEvent) => void;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* The payload of the `reviewItemReveal` event.
|
|
82
|
+
*
|
|
83
|
+
* @public
|
|
84
|
+
*/
|
|
85
|
+
interface ReviewItemRevealEvent {
|
|
86
|
+
/**
|
|
87
|
+
* The key of the review item to open, as `getReviewItems()` without `pairReplacements`
|
|
88
|
+
* lists it. Next Change and Previous Change step through that unpaired queue, so for a
|
|
89
|
+
* replacement this is the key of its deletion or its insertion. `setActiveReviewItem`
|
|
90
|
+
* reports the key it was given, so a call with a pair's key reports that key here and in
|
|
91
|
+
* {@link ReviewItemRevealEvent.pairKey}.
|
|
92
|
+
*/
|
|
93
|
+
readonly key: string;
|
|
94
|
+
/**
|
|
95
|
+
* The key that `getReviewItems({ pairReplacements: true })` gives the replacement this item
|
|
96
|
+
* belongs to. Present only when the item is a paired replacement or one half of one. A
|
|
97
|
+
* host that lists pairs opens `pairKey ?? key`.
|
|
98
|
+
*/
|
|
99
|
+
readonly pairKey?: string;
|
|
100
|
+
/**
|
|
101
|
+
* What asked for the item. `'navigate'` is Next Change or Previous Change, from the menu,
|
|
102
|
+
* the toolbar, a shortcut, or `exec({ type: 'navigateReviewChange' })`. `'host'` is a call
|
|
103
|
+
* to `setActiveReviewItem` (and so `useReview().setActive`) with `announce: true`.
|
|
104
|
+
*/
|
|
105
|
+
readonly source: ReviewItemRevealSource;
|
|
59
106
|
}
|
|
107
|
+
/** What asked to reveal a review item. See {@link ReviewItemRevealEvent.source}. @public */
|
|
108
|
+
type ReviewItemRevealSource = 'navigate' | 'host';
|
|
60
109
|
/**
|
|
61
110
|
* The payload of the `change` event / `onChange`. It carries revision + identity
|
|
62
111
|
* deltas, NOT serialized bytes: serializing a whole DOCX on every keystroke would
|
|
@@ -73,13 +122,30 @@ interface DocumentChange {
|
|
|
73
122
|
readonly dirty?: readonly string[];
|
|
74
123
|
}
|
|
75
124
|
|
|
125
|
+
/**
|
|
126
|
+
* Where a scroll places its target in the viewport.
|
|
127
|
+
*
|
|
128
|
+
* - `'start'`: near the top, like a jump to a heading.
|
|
129
|
+
* - `'center'`: centred.
|
|
130
|
+
* - `'centerIfNeeded'`: still while the target is on screen, centred when it has to move.
|
|
131
|
+
* - `'nearest'`: the minimum scroll, which leaves the target at the edge it came in from.
|
|
132
|
+
*
|
|
133
|
+
* Each method that takes a placement states its own default.
|
|
134
|
+
*
|
|
135
|
+
* @public
|
|
136
|
+
*/
|
|
137
|
+
type ScrollPlacement = 'start' | 'center' | 'centerIfNeeded' | 'nearest';
|
|
76
138
|
/**
|
|
77
139
|
* Scroll settings for {@link EditorAnchorNavigation.scrollToAnchor}. Every field is optional.
|
|
78
140
|
* The fields match document refresh `NavigateToChangeOptions`. @public
|
|
79
141
|
*/
|
|
80
142
|
interface ScrollToAnchorOptions {
|
|
81
|
-
/**
|
|
82
|
-
|
|
143
|
+
/**
|
|
144
|
+
* Target placement. The default depends on the method: `scrollToAnchor` uses
|
|
145
|
+
* `'centerIfNeeded'`, which keeps the viewport still for a visible target, and
|
|
146
|
+
* `scrollToBlock` uses `'start'`.
|
|
147
|
+
*/
|
|
148
|
+
readonly block?: ScrollPlacement;
|
|
83
149
|
/** Default: instant. Reduced motion uses instant even when smooth is requested. */
|
|
84
150
|
readonly behavior?: 'instant' | 'smooth';
|
|
85
151
|
/** Edge padding for start/nearest placement, in CSS pixels. Default: 24. Finite and nonnegative. */
|
|
@@ -310,6 +376,243 @@ interface EditorHighlights {
|
|
|
310
376
|
getHighlightsAt<R extends HighlightRange = HighlightRange>(clientX: number, clientY: number): readonly HighlightHit<R>[];
|
|
311
377
|
}
|
|
312
378
|
|
|
379
|
+
/** One review item under a client point. @public */
|
|
380
|
+
interface ReviewItemHit {
|
|
381
|
+
/** The item, as `getReviewItems()` with the same query returns it. */
|
|
382
|
+
readonly placement: ReviewItemPlacement;
|
|
383
|
+
/**
|
|
384
|
+
* The item's painted band on the line under the point, in client coordinates. It covers the
|
|
385
|
+
* part of the item's range on that line, not the whole range. Anchor popovers to it.
|
|
386
|
+
*/
|
|
387
|
+
readonly rect: HighlightRect;
|
|
388
|
+
}
|
|
389
|
+
/** Hit testing for hosts that draw their own review chrome. @public */
|
|
390
|
+
interface EditorReviewHits {
|
|
391
|
+
/**
|
|
392
|
+
* The review items whose text is under a client point, innermost first.
|
|
393
|
+
*
|
|
394
|
+
* An item hits when the CHARACTER under the point is inside one of its ranges, so the
|
|
395
|
+
* right half of a range's last character still hits, and the left half of the next
|
|
396
|
+
* character does not. Ranges that cover no characters, such as a tracked paragraph mark or
|
|
397
|
+
* a comment on an empty range, never hit. Items without a range never hit.
|
|
398
|
+
*
|
|
399
|
+
* The test covers every story the review queue lists and the pages paint: the body,
|
|
400
|
+
* tables, headers, footers, footnotes, and endnotes. Only painted pages are tested, so a
|
|
401
|
+
* point over a page that is not built returns no items.
|
|
402
|
+
*
|
|
403
|
+
* The result reports every item whose range covers the character, including replies,
|
|
404
|
+
* which share their thread's range, and resolved comments. Filter on
|
|
405
|
+
* `placement.parentId`, `placement.parentRevisionId`, or `placement.resolved` to find the
|
|
406
|
+
* card that owns the hit. Order follows the review queue's own rule for the caret: the
|
|
407
|
+
* narrowest range first, then comments before custom nodes before revisions, then the
|
|
408
|
+
* most deeply nested revision.
|
|
409
|
+
*
|
|
410
|
+
* A point hits the glyph band of a line, the same band a text highlight marks. A point in
|
|
411
|
+
* the spacing between lines hits nothing. `query` filters the items the same way it
|
|
412
|
+
* filters `getReviewItems()`. Coordinates that are not finite numbers return an empty
|
|
413
|
+
* array. Each call reads the whole review queue, so call it from a click, not on every
|
|
414
|
+
* pointer move.
|
|
415
|
+
*
|
|
416
|
+
* @example
|
|
417
|
+
* ```ts
|
|
418
|
+
* pages.addEventListener('click', (event) => {
|
|
419
|
+
* const [hit] = editor.getReviewItemsAt(event.clientX, event.clientY);
|
|
420
|
+
* if (hit) showBalloon(hit.placement.key, hit.rect);
|
|
421
|
+
* });
|
|
422
|
+
* ```
|
|
423
|
+
* @public
|
|
424
|
+
*/
|
|
425
|
+
getReviewItemsAt(clientX: number, clientY: number, query?: ReviewItemQuery): readonly ReviewItemHit[];
|
|
426
|
+
/**
|
|
427
|
+
* The bands one review item paints, one per line part, in client coordinates.
|
|
428
|
+
*
|
|
429
|
+
* `key` is a `ReviewItemPlacement.key`. Bands follow page order, and within a page the
|
|
430
|
+
* body comes before headers, footers, and notes. Only painted pages contribute. An unknown
|
|
431
|
+
* key, an item without a range, or an item with no text on a painted page returns an
|
|
432
|
+
* empty array. Anchor a balloon to the first band, or join the bands for an outline.
|
|
433
|
+
*
|
|
434
|
+
* @example
|
|
435
|
+
* ```ts
|
|
436
|
+
* const [first] = editor.getReviewItemRects(placement.key);
|
|
437
|
+
* if (first) positionBalloon(first);
|
|
438
|
+
* ```
|
|
439
|
+
* @public
|
|
440
|
+
*/
|
|
441
|
+
getReviewItemRects(key: string): readonly HighlightRect[];
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
/**
|
|
445
|
+
* Narrows what `getReviewItems` returns.
|
|
446
|
+
*
|
|
447
|
+
* Filtering revision kinds is how a host hides structural cards it has no UI for,
|
|
448
|
+
* `placement: false` skips the layout pass entirely when only metadata is wanted, and
|
|
449
|
+
* `pairReplacements` lists a typed-over selection as one decision.
|
|
450
|
+
*/
|
|
451
|
+
interface ReviewItemQuery {
|
|
452
|
+
/**
|
|
453
|
+
* Revision kinds to leave out of the returned items, for example structural kinds that the
|
|
454
|
+
* host has no card for. Default: none. Comments and custom items are never removed. This
|
|
455
|
+
* filters only the returned data; to stop the caret from activating the same kinds, call
|
|
456
|
+
* `setReviewActivationExclusions`.
|
|
457
|
+
*/
|
|
458
|
+
readonly excludeRevisionKinds?: readonly ReviewRevisionKind[];
|
|
459
|
+
/** When false, skip layout geometry; metadata is unchanged and anchors are null. Default true. */
|
|
460
|
+
readonly placement?: boolean;
|
|
461
|
+
/**
|
|
462
|
+
* When true, list a deletion and the insertion that directly follows it as one
|
|
463
|
+
* `'replace'` item. Default false.
|
|
464
|
+
*
|
|
465
|
+
* Two revisions pair when they are next to each other among the queue's revisions, the
|
|
466
|
+
* deletion comes first, both have the same author, nesting level and `readOnly` value, and
|
|
467
|
+
* the deletion's last range ends at the same paragraph and offset where the insertion's
|
|
468
|
+
* first range starts. The pair's `text` is the inserted words and `replacedText` the
|
|
469
|
+
* deleted words. The two halves are not listed separately.
|
|
470
|
+
*
|
|
471
|
+
* Kinds in {@link excludeRevisionKinds} are removed before pairing, so an excluded deletion
|
|
472
|
+
* or insertion never pairs. Excluding `'replace'` removes the pairs too.
|
|
473
|
+
*
|
|
474
|
+
* The pair's `key` is stable while both halves are pending, and every key-addressed verb
|
|
475
|
+
* accepts it whatever query you read it with. Accepting or rejecting it resolves both
|
|
476
|
+
* halves in one transaction and one undo step. Activating it opens the deletion; the pair
|
|
477
|
+
* reports `isActive` while either half is active. A reply anchors over the inserted words,
|
|
478
|
+
* and replies to either half are listed under the pair.
|
|
479
|
+
*/
|
|
480
|
+
readonly pairReplacements?: boolean;
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
/**
|
|
484
|
+
* How activating a review item places it in the viewport, and whether it announces the
|
|
485
|
+
* reveal.
|
|
486
|
+
*
|
|
487
|
+
* @public
|
|
488
|
+
*/
|
|
489
|
+
interface ReviewActivationOptions {
|
|
490
|
+
/**
|
|
491
|
+
* Where the item lands, or `false` to open it without scrolling at all.
|
|
492
|
+
*
|
|
493
|
+
* Default `'centerIfNeeded'`: silent while the item is already on screen, centred when it
|
|
494
|
+
* has to travel. `'nearest'` scrolls the minimum instead, which parks the item flush
|
|
495
|
+
* against the edge it came in from; `'start'` puts it near the top, the way a jump to a
|
|
496
|
+
* heading reads. `false` is for a host whose own list already drives the scroll and does
|
|
497
|
+
* not want the engine competing with it.
|
|
498
|
+
*
|
|
499
|
+
* It governs the reveal of the ITEM. An item in a header, a footer or a note also opens
|
|
500
|
+
* that story, and opening one always brings its band into view — a story the reader cannot
|
|
501
|
+
* see is one they cannot read the change in, which is the whole point of activating it.
|
|
502
|
+
*/
|
|
503
|
+
readonly reveal?: ScrollPlacement | false;
|
|
504
|
+
/**
|
|
505
|
+
* Whether a successful activation fires the `reviewItemReveal` event. Default `false`.
|
|
506
|
+
*
|
|
507
|
+
* Pass `true` to open the item the way Next Change does: the packaged review UI opens its
|
|
508
|
+
* balloon, or opens a closed review pane at its card when the pane's `opening` setting is
|
|
509
|
+
* `'auto'`. The item becomes active either way.
|
|
510
|
+
*
|
|
511
|
+
* @example
|
|
512
|
+
* ```ts
|
|
513
|
+
* editor.setActiveReviewItem(key, { announce: true });
|
|
514
|
+
* ```
|
|
515
|
+
*/
|
|
516
|
+
readonly announce?: boolean;
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
/**
|
|
520
|
+
* What every review card carries, whatever kind of decision it represents.
|
|
521
|
+
*
|
|
522
|
+
* Presentation-ready by design: author, initials, date and text are derived by the ENGINE,
|
|
523
|
+
* because deriving them means walking runs and reading `w15:commentsEx`. An adapter doing that
|
|
524
|
+
* walk would put document derivation in the host and would have to be written once per
|
|
525
|
+
* framework.
|
|
526
|
+
*/
|
|
527
|
+
interface ReviewItemPlacementBase {
|
|
528
|
+
/** Stable and unique per decision within this editor instance. */
|
|
529
|
+
readonly key: string;
|
|
530
|
+
/** The engine's own id for the comment, the revision, or the custom node. */
|
|
531
|
+
readonly id: string;
|
|
532
|
+
readonly author: string;
|
|
533
|
+
/** Initials for an avatar: `@w:initials` when the file carries one, else from the name. */
|
|
534
|
+
readonly initials: string;
|
|
535
|
+
/** `@w:date`, absent when the file omits it — Word does when date stamping is off. */
|
|
536
|
+
readonly date?: string;
|
|
537
|
+
/**
|
|
538
|
+
* The comment's body, the words the revision covers, or the custom card's detail.
|
|
539
|
+
*
|
|
540
|
+
* PLAIN TEXT, and it must be rendered as text: a `.docx` is a zip of XML an attacker
|
|
541
|
+
* controls end to end, so this string is untrusted and never markup.
|
|
542
|
+
*/
|
|
543
|
+
readonly text: string;
|
|
544
|
+
/**
|
|
545
|
+
* Replies to this item, in document order.
|
|
546
|
+
*
|
|
547
|
+
* Comments AND revisions carry them: OOXML gives `w:ins` and `w:del` no body, so replying
|
|
548
|
+
* to a tracked change writes a comment over the change's own range, and the reply belongs
|
|
549
|
+
* inside the card for the change rather than beside it.
|
|
550
|
+
*/
|
|
551
|
+
readonly replyIds: readonly string[];
|
|
552
|
+
/**
|
|
553
|
+
* True when the engine cannot resolve this kind structurally, so accept and reject must
|
|
554
|
+
* not be offered. A card offering a button the engine will refuse is worse than one that
|
|
555
|
+
* explains why it cannot.
|
|
556
|
+
*/
|
|
557
|
+
readonly readOnly: boolean;
|
|
558
|
+
/**
|
|
559
|
+
* Whether {@link Editor.setActiveReviewItem} would take this key.
|
|
560
|
+
*
|
|
561
|
+
* False for an item with no resolvable range, for a custom node without `reviewCard`
|
|
562
|
+
* (`carded: false`), and for a revision kind the host's rail excluded through
|
|
563
|
+
* {@link Editor.setReviewActivationExclusions} — the queue still LISTS
|
|
564
|
+
* those, because `getReviewItems` answers "what does this document hold" rather than "what
|
|
565
|
+
* may be clicked", and a host filtering the two apart needs to be told which is which. A
|
|
566
|
+
* card drawn for an item that cannot be activated is a card that does nothing when clicked.
|
|
567
|
+
*/
|
|
568
|
+
readonly activatable: boolean;
|
|
569
|
+
/** Document-space Y of the anchor, or null when the item has no resolvable range. */
|
|
570
|
+
readonly anchorY: number | null;
|
|
571
|
+
readonly pageIndex: number | null;
|
|
572
|
+
readonly isActive: boolean;
|
|
573
|
+
}
|
|
574
|
+
/** A comment thread's card. @public */
|
|
575
|
+
interface ReviewCommentPlacement extends ReviewItemPlacementBase {
|
|
576
|
+
readonly kind: 'comment';
|
|
577
|
+
/** Whether `w15:commentsEx` marks the thread done. */
|
|
578
|
+
readonly resolved: boolean;
|
|
579
|
+
/** The comment this replies to, absent at the top of a thread. */
|
|
580
|
+
readonly parentId?: string;
|
|
581
|
+
/**
|
|
582
|
+
* The REVISION this comment answers, absent unless it does.
|
|
583
|
+
*
|
|
584
|
+
* A surface listing top-level cards must skip these as well as the ones with a
|
|
585
|
+
* {@link parentId}: the card is rendered inside the change it answers, and a rail that
|
|
586
|
+
* only checked `parentId` drew the reply twice.
|
|
587
|
+
*/
|
|
588
|
+
readonly parentRevisionId?: string;
|
|
589
|
+
readonly item: ReviewCommentItem;
|
|
590
|
+
}
|
|
591
|
+
/** A tracked change's card. @public */
|
|
592
|
+
interface ReviewRevisionPlacement extends ReviewItemPlacementBase {
|
|
593
|
+
readonly kind: 'revision';
|
|
594
|
+
/** Which decision this is. */
|
|
595
|
+
readonly revisionKind: ReviewRevisionKind;
|
|
596
|
+
/**
|
|
597
|
+
* The words a replacement decision removes when {@link revisionKind} is `'replace'`.
|
|
598
|
+
* The built-in reader lists separate deletion and insertion cards unless the query sets
|
|
599
|
+
* {@link ReviewItemQuery.pairReplacements}.
|
|
600
|
+
*/
|
|
601
|
+
readonly replacedText?: string;
|
|
602
|
+
readonly item: ReviewRevisionItem;
|
|
603
|
+
}
|
|
604
|
+
/** A custom node's card (`defineCustomNode` with a `reviewCard` hook). @public */
|
|
605
|
+
interface ReviewCustomPlacement extends ReviewItemPlacementBase {
|
|
606
|
+
readonly kind: 'custom';
|
|
607
|
+
readonly item: ReviewCustomItem;
|
|
608
|
+
}
|
|
609
|
+
/**
|
|
610
|
+
* A DISCRIMINATED union on {@link ReviewItemPlacementBase.kind}: narrowing the kind
|
|
611
|
+
* narrows `item` and the kind-specific fields with it, so a consumer never writes the
|
|
612
|
+
* `placement.kind === 'custom' && placement.item.kind === 'custom'` double check.
|
|
613
|
+
*/
|
|
614
|
+
type ReviewItemPlacement = ReviewCommentPlacement | ReviewRevisionPlacement | ReviewCustomPlacement;
|
|
615
|
+
|
|
313
616
|
/** Selection and unsupported-change policy for a bulk review decision. @public */
|
|
314
617
|
interface ResolveReviewChangesOptions {
|
|
315
618
|
action: 'accept' | 'reject';
|
|
@@ -320,6 +623,40 @@ interface ResolveReviewChangesOptions {
|
|
|
320
623
|
/** Defaults to skip. Strict refuses the entire selection if any target cannot resolve. */
|
|
321
624
|
unsupported?: 'skip' | 'fail';
|
|
322
625
|
}
|
|
626
|
+
/**
|
|
627
|
+
* Who and when a change of tracked-change author records. Shared by both selections.
|
|
628
|
+
* @public
|
|
629
|
+
*/
|
|
630
|
+
interface ReviewChangesAttribution {
|
|
631
|
+
/**
|
|
632
|
+
* The author to record. Defaults to the editor's `author`, so a reviewer adopts changes as
|
|
633
|
+
* their own. A command with neither refuses, because `w:author` is required.
|
|
634
|
+
*/
|
|
635
|
+
author?: string;
|
|
636
|
+
/** An ISO 8601 `xsd:dateTime` to record. Omit it to keep each change's own date. */
|
|
637
|
+
date?: string;
|
|
638
|
+
/** Defaults to skip. Strict refuses the entire selection if any target cannot change. */
|
|
639
|
+
unsupported?: 'skip' | 'fail';
|
|
640
|
+
}
|
|
641
|
+
/**
|
|
642
|
+
* Selection and attribution for a change of tracked-change author. The changes stay pending.
|
|
643
|
+
*
|
|
644
|
+
* Select exact `keys` from `getReviewItems()`, or a `scope` narrowed by `authors`. The two
|
|
645
|
+
* selections exclude each other.
|
|
646
|
+
* @public
|
|
647
|
+
*/
|
|
648
|
+
type SetReviewChangesAuthorOptions = ReviewChangesAttribution & ({
|
|
649
|
+
/** Exact keys from getReviewItems(). Duplicate keys change once. */
|
|
650
|
+
keys: readonly string[];
|
|
651
|
+
scope?: never;
|
|
652
|
+
authors?: never;
|
|
653
|
+
} | {
|
|
654
|
+
keys?: never;
|
|
655
|
+
/** Defaults to revisions shown by author visibility and the tracked-changes filter. */
|
|
656
|
+
scope?: 'visible' | 'document';
|
|
657
|
+
/** Only the changes these authors made, within `scope`. Matches `w:author` exactly. */
|
|
658
|
+
authors?: readonly string[];
|
|
659
|
+
});
|
|
323
660
|
|
|
324
661
|
/**
|
|
325
662
|
* How a keystroke reaches the document.
|
|
@@ -880,7 +1217,7 @@ type CanResult = {
|
|
|
880
1217
|
* const bytesOut = await editor.save();
|
|
881
1218
|
* ```
|
|
882
1219
|
*/
|
|
883
|
-
interface Editor extends EditorAnchorNavigation, EditorHighlights {
|
|
1220
|
+
interface Editor extends EditorAnchorNavigation, EditorHighlights, EditorReviewHits {
|
|
884
1221
|
/**
|
|
885
1222
|
* Load a new document (DOCX bytes, `'blank'`, or a handle), replacing the current one.
|
|
886
1223
|
*
|
|
@@ -1165,8 +1502,37 @@ interface Editor extends EditorAnchorNavigation, EditorHighlights {
|
|
|
1165
1502
|
* {@link setReviewActivationExclusions}), for a custom node without `reviewCard`, and when
|
|
1166
1503
|
* the story it lives in will not open — and a host walking a queue with next/previous
|
|
1167
1504
|
* controls has no other way to learn that a step did nothing. Consult {@link ReviewItemPlacement.activatable} to avoid asking.
|
|
1505
|
+
*
|
|
1506
|
+
* With `options.announce: true`, a call that lands fires `reviewItemReveal` with
|
|
1507
|
+
* `source: 'host'`, also when the item was already active, so the packaged review UI opens
|
|
1508
|
+
* the item's balloon or card. By default it fires nothing. A `null` key fires nothing.
|
|
1168
1509
|
*/
|
|
1169
1510
|
setActiveReviewItem(key: string | null, options?: ReviewActivationOptions): ExecResult;
|
|
1511
|
+
/**
|
|
1512
|
+
* The key of the ACTIVATED review item: the one {@link setActiveReviewItem}, Next Change, or
|
|
1513
|
+
* Previous Change made active, while the caret stays in it.
|
|
1514
|
+
*
|
|
1515
|
+
* Two ideas of "active" exist. The caret-active item is the one the caret is in, however it
|
|
1516
|
+
* got there: `isActive` on the placements {@link getReviewItems} returns, and `activeKey` in
|
|
1517
|
+
* `useReview()`. The activated item is narrower: only an explicit activation sets it, so a
|
|
1518
|
+
* caret that merely lands in a change leaves this `null`. Open a balloon or card for the
|
|
1519
|
+
* activated item, and highlight the caret-active one.
|
|
1520
|
+
*
|
|
1521
|
+
* Pass the query you read items with, so the key matches theirs: with
|
|
1522
|
+
* `pairReplacements: true`, a paired replacement reports the pair's key; without it, the
|
|
1523
|
+
* key of the half the caret is in. The value changes with the selection, so read it again
|
|
1524
|
+
* on `selectionChange`.
|
|
1525
|
+
*
|
|
1526
|
+
* @example
|
|
1527
|
+
* ```ts
|
|
1528
|
+
* const query = { pairReplacements: true };
|
|
1529
|
+
* editor.on('selectionChange', () => {
|
|
1530
|
+
* const activated = editor.getActivatedReviewItemKey(query);
|
|
1531
|
+
* if (activated !== null) showMyCard(activated);
|
|
1532
|
+
* });
|
|
1533
|
+
* ```
|
|
1534
|
+
*/
|
|
1535
|
+
getActivatedReviewItemKey(query?: ReviewItemQuery): string | null;
|
|
1170
1536
|
/**
|
|
1171
1537
|
* Revision kinds the caret must never activate, or null for none.
|
|
1172
1538
|
*
|
|
@@ -1256,7 +1622,12 @@ interface Editor extends EditorAnchorNavigation, EditorHighlights {
|
|
|
1256
1622
|
* the host has no scroll container — a caller can tell "not found" from "scrolled".
|
|
1257
1623
|
*/
|
|
1258
1624
|
scrollToPage(pageNumber: number): boolean;
|
|
1259
|
-
|
|
1625
|
+
/**
|
|
1626
|
+
* `options` takes the {@link ScrollToAnchorOptions} fields. `block` defaults to `'start'`
|
|
1627
|
+
* here (`scrollToAnchor` defaults to `'centerIfNeeded'`), `behavior` to `'instant'`, and
|
|
1628
|
+
* `offsetPx` to 24. An invalid option also returns false, and nothing scrolls.
|
|
1629
|
+
*/
|
|
1630
|
+
scrollToBlock(blockId: string, options?: ScrollToAnchorOptions): boolean;
|
|
1260
1631
|
getZoom(): number;
|
|
1261
1632
|
/**
|
|
1262
1633
|
* Set the display scale. Values outside a sane range are rejected rather than
|
|
@@ -1337,134 +1708,6 @@ type EditorCommandShape<T> = {
|
|
|
1337
1708
|
type TrackedChangePredicate = (revision: ReviewRevisionItem) => boolean;
|
|
1338
1709
|
/** How revisions excluded by a tracked-changes predicate project into the view. */
|
|
1339
1710
|
type TrackedChangeFilterMode = 'accept' | 'reject';
|
|
1340
|
-
/**
|
|
1341
|
-
* Narrows what `getReviewItems` returns.
|
|
1342
|
-
*
|
|
1343
|
-
* Both fields exist to keep the review rail cheap: filtering revision kinds is how a host hides
|
|
1344
|
-
* structural cards it has no UI for, and `placement: false` skips the layout pass entirely when
|
|
1345
|
-
* only metadata is wanted.
|
|
1346
|
-
*/
|
|
1347
|
-
interface ReviewItemQuery {
|
|
1348
|
-
readonly excludeRevisionKinds?: readonly ReviewRevisionKind[];
|
|
1349
|
-
/** When false, skip layout geometry; metadata is unchanged and anchors are null. Default true. */
|
|
1350
|
-
readonly placement?: boolean;
|
|
1351
|
-
}
|
|
1352
|
-
/**
|
|
1353
|
-
* What every review card carries, whatever kind of decision it represents.
|
|
1354
|
-
*
|
|
1355
|
-
* Presentation-ready by design: author, initials, date and text are derived by the ENGINE,
|
|
1356
|
-
* because deriving them means walking runs and reading `w15:commentsEx`. An adapter doing that
|
|
1357
|
-
* walk would put document derivation in the host and would have to be written once per
|
|
1358
|
-
* framework.
|
|
1359
|
-
*/
|
|
1360
|
-
interface ReviewItemPlacementBase {
|
|
1361
|
-
/** Stable and unique per decision within this editor instance. */
|
|
1362
|
-
readonly key: string;
|
|
1363
|
-
/** The engine's own id for the comment, the revision, or the custom node. */
|
|
1364
|
-
readonly id: string;
|
|
1365
|
-
readonly author: string;
|
|
1366
|
-
/** Initials for an avatar: `@w:initials` when the file carries one, else from the name. */
|
|
1367
|
-
readonly initials: string;
|
|
1368
|
-
/** `@w:date`, absent when the file omits it — Word does when date stamping is off. */
|
|
1369
|
-
readonly date?: string;
|
|
1370
|
-
/**
|
|
1371
|
-
* The comment's body, the words the revision covers, or the custom card's detail.
|
|
1372
|
-
*
|
|
1373
|
-
* PLAIN TEXT, and it must be rendered as text: a `.docx` is a zip of XML an attacker
|
|
1374
|
-
* controls end to end, so this string is untrusted and never markup.
|
|
1375
|
-
*/
|
|
1376
|
-
readonly text: string;
|
|
1377
|
-
/**
|
|
1378
|
-
* Replies to this item, in document order.
|
|
1379
|
-
*
|
|
1380
|
-
* Comments AND revisions carry them: OOXML gives `w:ins` and `w:del` no body, so replying
|
|
1381
|
-
* to a tracked change writes a comment over the change's own range, and the reply belongs
|
|
1382
|
-
* inside the card for the change rather than beside it.
|
|
1383
|
-
*/
|
|
1384
|
-
readonly replyIds: readonly string[];
|
|
1385
|
-
/**
|
|
1386
|
-
* True when the engine cannot resolve this kind structurally, so accept and reject must
|
|
1387
|
-
* not be offered. A card offering a button the engine will refuse is worse than one that
|
|
1388
|
-
* explains why it cannot.
|
|
1389
|
-
*/
|
|
1390
|
-
readonly readOnly: boolean;
|
|
1391
|
-
/**
|
|
1392
|
-
* Whether {@link Editor.setActiveReviewItem} would take this key.
|
|
1393
|
-
*
|
|
1394
|
-
* False for an item with no resolvable range, for a custom node without `reviewCard`
|
|
1395
|
-
* (`carded: false`), and for a revision kind the host's rail excluded through
|
|
1396
|
-
* {@link Editor.setReviewActivationExclusions} — the queue still LISTS
|
|
1397
|
-
* those, because `getReviewItems` answers "what does this document hold" rather than "what
|
|
1398
|
-
* may be clicked", and a host filtering the two apart needs to be told which is which. A
|
|
1399
|
-
* card drawn for an item that cannot be activated is a card that does nothing when clicked.
|
|
1400
|
-
*/
|
|
1401
|
-
readonly activatable: boolean;
|
|
1402
|
-
/** Document-space Y of the anchor, or null when the item has no resolvable range. */
|
|
1403
|
-
readonly anchorY: number | null;
|
|
1404
|
-
readonly pageIndex: number | null;
|
|
1405
|
-
readonly isActive: boolean;
|
|
1406
|
-
}
|
|
1407
|
-
/**
|
|
1408
|
-
* How activating a review item places it in the viewport.
|
|
1409
|
-
*
|
|
1410
|
-
* @public
|
|
1411
|
-
*/
|
|
1412
|
-
interface ReviewActivationOptions {
|
|
1413
|
-
/**
|
|
1414
|
-
* Where the item lands, or `false` to open it without scrolling at all.
|
|
1415
|
-
*
|
|
1416
|
-
* Default `'centerIfNeeded'`: silent while the item is already on screen, centred when it
|
|
1417
|
-
* has to travel. `'nearest'` scrolls the minimum instead, which parks the item flush
|
|
1418
|
-
* against the edge it came in from; `'start'` puts it near the top, the way a jump to a
|
|
1419
|
-
* heading reads. `false` is for a host whose own list already drives the scroll and does
|
|
1420
|
-
* not want the engine competing with it.
|
|
1421
|
-
*
|
|
1422
|
-
* It governs the reveal of the ITEM. An item in a header, a footer or a note also opens
|
|
1423
|
-
* that story, and opening one always brings its band into view — a story the reader cannot
|
|
1424
|
-
* see is one they cannot read the change in, which is the whole point of activating it.
|
|
1425
|
-
*/
|
|
1426
|
-
readonly reveal?: 'start' | 'center' | 'centerIfNeeded' | 'nearest' | false;
|
|
1427
|
-
}
|
|
1428
|
-
/** A comment thread's card. @public */
|
|
1429
|
-
interface ReviewCommentPlacement extends ReviewItemPlacementBase {
|
|
1430
|
-
readonly kind: 'comment';
|
|
1431
|
-
/** Whether `w15:commentsEx` marks the thread done. */
|
|
1432
|
-
readonly resolved: boolean;
|
|
1433
|
-
/** The comment this replies to, absent at the top of a thread. */
|
|
1434
|
-
readonly parentId?: string;
|
|
1435
|
-
/**
|
|
1436
|
-
* The REVISION this comment answers, absent unless it does.
|
|
1437
|
-
*
|
|
1438
|
-
* A surface listing top-level cards must skip these as well as the ones with a
|
|
1439
|
-
* {@link parentId}: the card is rendered inside the change it answers, and a rail that
|
|
1440
|
-
* only checked `parentId` drew the reply twice.
|
|
1441
|
-
*/
|
|
1442
|
-
readonly parentRevisionId?: string;
|
|
1443
|
-
readonly item: ReviewCommentItem;
|
|
1444
|
-
}
|
|
1445
|
-
/** A tracked change's card. @public */
|
|
1446
|
-
interface ReviewRevisionPlacement extends ReviewItemPlacementBase {
|
|
1447
|
-
readonly kind: 'revision';
|
|
1448
|
-
/** Which decision this is. */
|
|
1449
|
-
readonly revisionKind: ReviewRevisionKind;
|
|
1450
|
-
/**
|
|
1451
|
-
* The words a custom replacement decision removes when {@link revisionKind} is `'replace'`.
|
|
1452
|
-
* The built-in reader exposes separate deletion and insertion cards.
|
|
1453
|
-
*/
|
|
1454
|
-
readonly replacedText?: string;
|
|
1455
|
-
readonly item: ReviewRevisionItem;
|
|
1456
|
-
}
|
|
1457
|
-
/** A custom node's card (`defineCustomNode` with a `reviewCard` hook). @public */
|
|
1458
|
-
interface ReviewCustomPlacement extends ReviewItemPlacementBase {
|
|
1459
|
-
readonly kind: 'custom';
|
|
1460
|
-
readonly item: ReviewCustomItem;
|
|
1461
|
-
}
|
|
1462
|
-
/**
|
|
1463
|
-
* A DISCRIMINATED union on {@link ReviewItemPlacementBase.kind}: narrowing the kind
|
|
1464
|
-
* narrows `item` and the kind-specific fields with it, so a consumer never writes the
|
|
1465
|
-
* `placement.kind === 'custom' && placement.item.kind === 'custom'` double check.
|
|
1466
|
-
*/
|
|
1467
|
-
type ReviewItemPlacement = ReviewCommentPlacement | ReviewRevisionPlacement | ReviewCustomPlacement;
|
|
1468
1711
|
|
|
1469
1712
|
/**
|
|
1470
1713
|
* Every command the editor accepts, keyed by name with its payload as the value.
|
|
@@ -1498,6 +1741,8 @@ interface EditorCommands extends EditorCommandShape<DocEdits>, EditorHeaderFoote
|
|
|
1498
1741
|
};
|
|
1499
1742
|
/** Resolve eligible changes shown by the active filters, or an explicit scope, in one undo step. */
|
|
1500
1743
|
resolveAllReviewChanges: ResolveReviewChangesOptions;
|
|
1744
|
+
/** Attribute eligible changes to another author, keeping them pending, in one undo step. */
|
|
1745
|
+
setReviewChangesAuthor: SetReviewChangesAuthorOptions;
|
|
1501
1746
|
/** Change the review projection without accepting or rejecting document revisions. */
|
|
1502
1747
|
setReviewDisplayMode: {
|
|
1503
1748
|
mode: ReviewDisplayMode;
|
|
@@ -2114,6 +2359,13 @@ interface EditorSnapshot {
|
|
|
2114
2359
|
* value-equal snapshot correctly refuses to re-render.
|
|
2115
2360
|
*/
|
|
2116
2361
|
readonly reviewPaneOpen?: boolean;
|
|
2362
|
+
/**
|
|
2363
|
+
* The review pane settings in force: every field of `ReviewPaneOptions`, such as when the
|
|
2364
|
+
* pane opens by itself and what it does when its card column does not fit. Change them with
|
|
2365
|
+
* `setReviewPaneOptions`. Never saved. Always
|
|
2366
|
+
* set: an editor without a review module reports `DEFAULT_REVIEW_PANE`.
|
|
2367
|
+
*/
|
|
2368
|
+
readonly reviewPane: ResolvedReviewPane;
|
|
2117
2369
|
/** Whether Show/Hide paragraph marks is enabled. */
|
|
2118
2370
|
readonly showParagraphMarks?: boolean;
|
|
2119
2371
|
/** The document's `w:documentProtection`, as the file states it; null with no document. */
|
|
@@ -2192,5 +2444,5 @@ interface EditorError extends Error {
|
|
|
2192
2444
|
readonly code?: string;
|
|
2193
2445
|
}
|
|
2194
2446
|
|
|
2195
|
-
export { EditorFontError as E, cropPercentFromCropPermille as
|
|
2196
|
-
export type {
|
|
2447
|
+
export { EditorFontError as E, cropPercentFromCropPermille as s, cropPercentFromPermille as t, cropPercentFromSourceCrop as u, cropPermilleFromCropPercent as v, cropPermilleFromPercent as w, sourceCropFromCropPercent as x, validateImageCropPercent as y };
|
|
2448
|
+
export type { EditorHighlights as $, AnchorHighlightOptions as A, TableBorderEdgeTarget as B, CanResult as C, DocumentSource as D, FontFaceRequest as F, TableBorderSpec as G, HighlightRange as H, ImageContext as I, TableBorderStyle as J, TableContext as K, AuthoredNoteNumbering as L, DocumentChange as M, DocumentEditingMode as N, DocumentHandle as O, EditorAnchorNavigation as P, EditorCommandShape as Q, ReviewItemHit as R, ScrollToAnchorOptions as S, TextMatch as T, EditorCommands as U, EditorError as V, EditorEvents as W, EditorFontErrorCode as X, EditorFormatPainterCommands as Y, ZoomMode as Z, EditorHeaderFooterCommands as _, FontConfiguration as a, EditorNoteCommands as a0, EditorPosition as a1, EditorQueries as a2, EditorQuery as a3, EditorQueryResults as a4, EditorReviewHits as a5, EditorSelection as a6, FormatPainterLevel as a7, FormatPainterMode as a8, FurnitureVariant as a9, ZoomFitTarget as aA, HeaderFooterSlotArgs as aa, HeaderFooterState as ab, HyperlinkInfo as ac, NoteKind as ad, NotePropertiesSide as ae, NotePropertiesState as af, PageSetup as ag, ResolveReviewChangesOptions as ah, ResolvedNoteNumbering as ai, ReviewActivationOptions as aj, ReviewChangesAttribution as ak, ReviewCommentPlacement as al, ReviewCustomPlacement as am, ReviewItemPlacement as an, ReviewItemPlacementBase as ao, ReviewItemQuery as ap, ReviewItemRevealEvent as aq, ReviewItemRevealSource as ar, ReviewRevisionPlacement as as, SetReviewChangesAuthorOptions as at, TableBorderTarget as au, TableCellVerticalAlignment as av, TableColumnDividerResizeTarget as aw, TableColumnOccurrenceTarget as ax, TableRightEdgeResizeTarget as ay, TableRowOccurrenceTarget as az, FontSource as b, FontSourceSubstitution as c, EditorSnapshot as d, EditorCommand as e, ClearAnchorHighlightOptions as f, ScrollPlacement as g, AnchorHighlightAnimation as h, Editor as i, HighlightResult as j, HighlightOptions as k, HighlightHit as l, HighlightRect as m, ImageCropPercent as n, ImageCropPermille as o, SelectedImageState as p, TrackedChangeFilterMode as q, TrackedChangePredicate as r, FormatPainterSurfaceState as z };
|