@docx-editor.dev/core 2.4.1 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/THIRD_PARTY_NOTICES.md +39 -1
- package/dist/automation.cjs +1 -1
- package/dist/automation.js +1 -1
- package/dist/binding.cjs +1 -1
- package/dist/binding.d.cts +8 -8
- package/dist/binding.d.ts +8 -8
- package/dist/binding.js +1 -1
- package/dist/chunk-4GQXAXTZ.js +5 -0
- package/dist/chunk-DGUHCJPF.cjs +18 -0
- package/dist/chunk-DY3QVCWC.cjs +10 -0
- package/dist/chunk-E7BXJ4BF.js +1 -0
- package/dist/chunk-F7Z6PWAZ.cjs +2 -0
- package/dist/chunk-IJ4V3LGV.cjs +2 -0
- package/dist/chunk-JEMP5YI5.cjs +15 -0
- package/dist/{chunk-YMIMLEX4.cjs → chunk-JZXK4DKV.cjs} +1 -1
- package/dist/chunk-NIGGABAA.js +15 -0
- package/dist/chunk-OPKOTVQQ.js +18 -0
- package/dist/{chunk-GOEBQ26R.js → chunk-PSZH2VXP.js} +1 -1
- package/dist/chunk-R75OLPL6.js +10 -0
- package/dist/chunk-SFMAIFEN.cjs +2 -0
- package/dist/chunk-SKWYEZCO.cjs +5 -0
- package/dist/chunk-SMRD66T5.js +2 -0
- package/dist/chunk-UVIUNAQ6.js +2 -0
- package/dist/chunk-WAVN7MAT.js +2 -0
- package/dist/chunk-WU7PUTVA.js +2 -0
- package/dist/{chunk-OHJQ7GPZ.cjs → chunk-YMYCPY5Y.cjs} +1 -1
- package/dist/contracts/editor.cjs +1 -1
- package/dist/contracts/editor.d.cts +8 -8
- package/dist/contracts/editor.d.ts +8 -8
- package/dist/contracts/editor.js +1 -1
- package/dist/contracts/interaction.d.cts +7 -7
- package/dist/contracts/interaction.d.ts +7 -7
- package/dist/contracts/modules.d.cts +4 -4
- package/dist/contracts/modules.d.ts +4 -4
- package/dist/contracts/types.d.cts +3 -1
- package/dist/contracts/types.d.ts +3 -1
- package/dist/{custom-node-writes-C5YRoPcc.d.cts → custom-node-writes-D9G3GKQ7.d.cts} +18 -3
- package/dist/{custom-node-writes-BkMgMXxs.d.ts → custom-node-writes-tJw8U9MO.d.ts} +18 -3
- package/dist/dist-YFULGVS3.js +2 -0
- package/dist/{editor-DYvC9CZs.d.cts → editor-BZEJL3vv.d.cts} +50 -19
- package/dist/{editor-D1qHfzOt.d.ts → editor-D2zOJztO.d.ts} +50 -19
- package/dist/editor.cjs +1 -1
- package/dist/editor.css +407 -38
- package/dist/editor.d.cts +38 -22
- package/dist/editor.d.ts +38 -22
- package/dist/editor.js +1 -1
- package/dist/harfbuzz.wasm +0 -0
- package/dist/{image-resources-DXvPZvXD.d.cts → image-resources-BaHz4QAd.d.cts} +1 -1
- package/dist/{image-resources-BG9DLyW7.d.ts → image-resources-Cl5_cNi9.d.ts} +1 -1
- package/dist/{index-DpY3WZuP.d.ts → index-D8L8WrNF.d.ts} +178 -23
- package/dist/{index-Bb-QAg_f.d.cts → index-_xF7n_z0.d.cts} +178 -23
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +16 -16
- package/dist/index.d.ts +16 -16
- package/dist/index.js +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.d.cts +159 -47
- package/dist/layout.d.ts +159 -47
- package/dist/layout.js +1 -1
- package/dist/node-module-shim-TTKTT66I.js +1 -0
- package/dist/output.cjs +1 -1
- package/dist/output.d.cts +20 -6
- package/dist/output.d.ts +20 -6
- package/dist/output.js +1 -1
- package/dist/{review-reads-CxgN62yp.d.cts → review-reads-Dr0CpW6u.d.cts} +25 -1
- package/dist/{review-reads-CQmU9Lcl.d.ts → review-reads-HDvoQXK2.d.ts} +25 -1
- package/dist/{review-support-DgXTIYBW.d.ts → review-support-D4ZBdUXa.d.ts} +46 -2
- package/dist/{review-support-BJ-YjGmD.d.cts → review-support-T-riLz4Y.d.cts} +46 -2
- package/dist/{revision-projection-DHAkcD_L.d.ts → revision-projection-UKqvPa4-.d.ts} +53 -2
- package/dist/{revision-projection-72ZApe-g.d.cts → revision-projection-WzlQGBJx.d.cts} +53 -2
- package/dist/{semantic-cell-selection-DZtyMXkH.d.ts → semantic-cell-selection-B5vfPz4Q.d.ts} +7 -4
- package/dist/{semantic-cell-selection--ezfezTe.d.cts → semantic-cell-selection-BTQFpN0S.d.cts} +7 -4
- package/dist/{semantic-interaction-DrgbgKg6.d.ts → semantic-interaction-CDNEU_Tx.d.cts} +2 -30
- package/dist/{semantic-interaction-2yxdv7q0.d.cts → semantic-interaction-lvpzZRpA.d.ts} +2 -30
- package/dist/{semantic-paint-BedBxkyY.d.ts → semantic-paint-BBPL3u5w.d.ts} +111 -3
- package/dist/{semantic-paint-BYjE0Xbl.d.cts → semantic-paint-IjbL-4CT.d.cts} +111 -3
- package/dist/{semantic-records-CR5hTqMK.d.ts → semantic-records-CdQvpUj1.d.ts} +106 -8
- package/dist/{semantic-records-DSD8WENa.d.cts → semantic-records-DEOs3_tE.d.cts} +106 -8
- package/dist/{shaped-measurer-CBOTJTV_.d.cts → shaped-measurer-C2SJAjV0.d.cts} +1 -1
- package/dist/{shaped-measurer-BL8g4AcW.d.ts → shaped-measurer-l4o5ITJ0.d.ts} +1 -1
- package/dist/store.cjs +1 -1
- package/dist/store.d.cts +38 -15
- package/dist/store.d.ts +38 -15
- package/dist/store.js +1 -1
- package/dist/{tree-op-types-EZXbR8bW.d.cts → tree-op-types-CUCwPWjT.d.cts} +1 -1
- package/dist/{tree-op-types-8a6xyRCN.d.ts → tree-op-types-D0fTNBVW.d.ts} +1 -1
- package/dist/{tree-session-SucW0znF.d.ts → tree-session-CH1oA75f.d.ts} +64 -42
- package/dist/{tree-session-DrMm8Cj2.d.cts → tree-session-b7bggR-S.d.cts} +64 -42
- package/dist/{tree-store-UYrGKF_Q.d.cts → tree-store-BqgeCa1Q.d.cts} +29 -2
- package/dist/{tree-store-BoM6eXaL.d.ts → tree-store-CIKASRHk.d.ts} +29 -2
- package/licenses/HarfBuzz-COPYING.txt +42 -0
- package/package.json +6 -4
- package/dist/chunk-33F6TRXO.js +0 -2
- package/dist/chunk-4WWEDTTE.js +0 -2
- package/dist/chunk-BS554B6D.cjs +0 -2
- package/dist/chunk-DQ5HGUWG.cjs +0 -12
- package/dist/chunk-EQO762XH.cjs +0 -10
- package/dist/chunk-F6WNPYOM.js +0 -2
- package/dist/chunk-FL4GWK76.js +0 -12
- package/dist/chunk-GWG5IVVX.cjs +0 -5
- package/dist/chunk-IZIL6BAW.cjs +0 -12
- package/dist/chunk-LIJPSHRA.js +0 -5
- package/dist/chunk-MHDO6HLI.cjs +0 -2
- package/dist/chunk-SG7OH2EK.js +0 -12
- package/dist/chunk-TCX3PVWR.js +0 -10
- package/dist/chunk-YTYKNA6X.cjs +0 -2
- package/dist/chunk-ZACHY6OS.js +0 -1
|
@@ -1,5 +1,98 @@
|
|
|
1
|
-
import { C as ContentControlBoundaryRecord, S as SemanticLayout } from './semantic-records-
|
|
2
|
-
import { V as ValidatedImageBytesHandle, R as RenderableImageMime } from './image-resources-
|
|
1
|
+
import { C as ContentControlBoundaryRecord, S as SemanticLayout } from './semantic-records-DEOs3_tE.cjs';
|
|
2
|
+
import { V as ValidatedImageBytesHandle, R as RenderableImageMime } from './image-resources-BaHz4QAd.cjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Everything a host can say about ONE author's presentation. Every field is optional and
|
|
6
|
+
* every field is presentation-only — nothing here is ever serialised into the document.
|
|
7
|
+
*
|
|
8
|
+
* Deliberately about the PAINTED DOCUMENT (which only the painter can style) plus the
|
|
9
|
+
* author's identity data. Review-card DESIGN is not configured here: the review chrome
|
|
10
|
+
* follows `color` as its accent automatically, and everything further is composition —
|
|
11
|
+
* a custom card reading this style through the review surface's `useReviewAuthor`, or
|
|
12
|
+
* CSS on the cards' `data-review-author`/`data-review-author-slot` hooks.
|
|
13
|
+
*
|
|
14
|
+
* @public
|
|
15
|
+
*/
|
|
16
|
+
interface RevisionAuthorStyle {
|
|
17
|
+
/**
|
|
18
|
+
* Ink and decoration colour of this author's changes in the document — and the accent
|
|
19
|
+
* the review chrome keys on (avatar disc, card variable, marker).
|
|
20
|
+
*/
|
|
21
|
+
color?: string;
|
|
22
|
+
/** Background wash behind this author's changes in the document. */
|
|
23
|
+
background?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Class names added to every painted span of this author's changes, for styling the
|
|
26
|
+
* typed fields do not cover. Keep the rules metric-safe (outlines, shadows, accents):
|
|
27
|
+
* the engine measures the text it paints, and a class that resizes glyphs drifts the
|
|
28
|
+
* page from its layout.
|
|
29
|
+
*/
|
|
30
|
+
spanClassName?: string;
|
|
31
|
+
/** Avatar image for this author; the packaged card renders it in place of initials. */
|
|
32
|
+
avatarUrl?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Per-author style assignments.
|
|
36
|
+
*
|
|
37
|
+
* Keys match `w:author` exactly; a value is a CSS colour or a full
|
|
38
|
+
* {@link RevisionAuthorStyle}. `others` says what authors WITHOUT an entry take: the
|
|
39
|
+
* `--doc-review-author-N` ramp by default, or `'kind'` to leave them on the kind colours —
|
|
40
|
+
* which is how "highlight these reviewers, leave everyone else green and red" is said.
|
|
41
|
+
*
|
|
42
|
+
* @public
|
|
43
|
+
*/
|
|
44
|
+
interface RevisionAuthorAssignments {
|
|
45
|
+
/** Authors without an entry: the ramp (default), or the `'kind'` colours. */
|
|
46
|
+
readonly others?: 'kind' | 'author';
|
|
47
|
+
readonly authors: Readonly<Record<string, string | RevisionAuthorStyle>>;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* How painted tracked changes are coloured.
|
|
51
|
+
*
|
|
52
|
+
* - `'author'` (the DEFAULT) — every change takes its author's colour from the
|
|
53
|
+
* `--doc-review-author-N` ramp, assigned by order of first appearance in the document.
|
|
54
|
+
* Word's own default, and the reason it is this engine's: a paragraph three people
|
|
55
|
+
* edited has to read as three people. Restyle a slot under `.docx-editor` to change the
|
|
56
|
+
* ramp.
|
|
57
|
+
* - `'kind'` — insertions and deletions take the two kind colours
|
|
58
|
+
* (`--doc-revision-insertion` / `--doc-revision-deletion`), so "added" and "removed" are
|
|
59
|
+
* what a reader tells apart at a glance, whoever proposed them.
|
|
60
|
+
* - {@link RevisionAuthorAssignments} — style the named authors; `others` decides whether
|
|
61
|
+
* the rest take the ramp (the default) or the kind colours.
|
|
62
|
+
*
|
|
63
|
+
* Presentation only: nothing here is ever serialised into the document.
|
|
64
|
+
*
|
|
65
|
+
* @public
|
|
66
|
+
*/
|
|
67
|
+
type RevisionStyles = 'kind' | 'author' | RevisionAuthorAssignments;
|
|
68
|
+
/**
|
|
69
|
+
* One document author, resolved: who, which ramp slot, and what they draw in.
|
|
70
|
+
*
|
|
71
|
+
* @public
|
|
72
|
+
*/
|
|
73
|
+
interface ReviewAuthorInfo {
|
|
74
|
+
/** The `w:author` string, exactly as the file carries it. */
|
|
75
|
+
readonly author: string;
|
|
76
|
+
/**
|
|
77
|
+
* Rank by order of first appearance — an UNBOUNDED index, not a ramp slot.
|
|
78
|
+
*
|
|
79
|
+
* The ramp defines {@link REVIEW_AUTHOR_SLOTS} colours and every DOM hook wraps into it,
|
|
80
|
+
* so the ninth author ranks 8 here and carries `data-review-author-slot="0"`. Building a
|
|
81
|
+
* selector from this value needs the same wrap: `slot % 8`.
|
|
82
|
+
*/
|
|
83
|
+
readonly slot: number;
|
|
84
|
+
/**
|
|
85
|
+
* The colour this author is DRAWN IN by the review chrome — their declared colour, or
|
|
86
|
+
* their ramp slot's token.
|
|
87
|
+
*
|
|
88
|
+
* Not necessarily what the document paints. `'kind'`, and `others: 'kind'` for an author
|
|
89
|
+
* with no declaration, colour the painted text by insertion/deletion instead, while the
|
|
90
|
+
* cards keep the per-author accent this reports.
|
|
91
|
+
*/
|
|
92
|
+
readonly color: string;
|
|
93
|
+
/** The host-supplied style, normalised; absent when the author rides the ramp. */
|
|
94
|
+
readonly style?: RevisionAuthorStyle;
|
|
95
|
+
}
|
|
3
96
|
|
|
4
97
|
/** Host port for safe blob URLs — only called for {@link ImageResourceState.kind} `ready`. */
|
|
5
98
|
interface PaintImageUrlPort {
|
|
@@ -67,6 +160,12 @@ interface PaintOptions {
|
|
|
67
160
|
readonly fieldShading?: FieldShadingMode;
|
|
68
161
|
/** See {@link PaintContext.shadeFormFields}. */
|
|
69
162
|
readonly shadeFormFields?: boolean;
|
|
163
|
+
/**
|
|
164
|
+
* How tracked changes are coloured: by AUTHOR through the `--doc-review-author-N`
|
|
165
|
+
* ramp (the default, as in Word), by kind, or by author with host-pinned colours.
|
|
166
|
+
* See {@link RevisionStyles}.
|
|
167
|
+
*/
|
|
168
|
+
readonly revisionStyles?: RevisionStyles;
|
|
70
169
|
/**
|
|
71
170
|
* Relationship id of the header/footer story currently open for editing.
|
|
72
171
|
*
|
|
@@ -116,6 +215,15 @@ interface PaintOptions {
|
|
|
116
215
|
readonly additionalBoundaries?: readonly ContentControlBoundaryRecord[];
|
|
117
216
|
/** Control ids that represent TOC regions (hover-only chrome; never caret-sticky). */
|
|
118
217
|
readonly tocControlIds?: ReadonlySet<string>;
|
|
218
|
+
/**
|
|
219
|
+
* No control may be written right now — viewing mode, or a protected document.
|
|
220
|
+
*
|
|
221
|
+
* The widget is a `<button>` the ENGINE paints, and a click on it commits a tree op, so
|
|
222
|
+
* an enabled-looking checkbox on a read-only document is not a cosmetic lie: it is the
|
|
223
|
+
* write itself. Disabling it here also stops the pointer lane, which already skips a
|
|
224
|
+
* widget carrying `data-disabled-reason`.
|
|
225
|
+
*/
|
|
226
|
+
readonly readOnly?: boolean;
|
|
119
227
|
};
|
|
120
228
|
readonly drawingStrings?: DrawingPaintStrings;
|
|
121
229
|
readonly imageUrlPort?: PaintImageUrlPort;
|
|
@@ -130,4 +238,4 @@ interface PaintOptions {
|
|
|
130
238
|
*/
|
|
131
239
|
declare function paintSemanticLayout(container: HTMLElement, layout: SemanticLayout, options?: PaintOptions): void;
|
|
132
240
|
|
|
133
|
-
export { DEFAULT_FIELD_SHADING as D, type FieldShadingMode as F, type PaintOptions as P, type
|
|
241
|
+
export { DEFAULT_FIELD_SHADING as D, type FieldShadingMode as F, type PaintOptions as P, type ReviewAuthorInfo as R, type RevisionAuthorAssignments as a, type RevisionAuthorStyle as b, type RevisionStyles as c, type DrawingPaintStrings as d, paintSemanticLayout as p };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { O as OoxmlProperty,
|
|
1
|
+
import { O as OoxmlProperty, k as DrawingAccessibility, S as SourceCrop, l as DrawingTransform, V as VectorShapeProjection, f as DrawingHorizontalReferenceFrame, g as DrawingVerticalReferenceFrame, b as ImageWrapTarget, D as DrawingProjection, m as TableBorderStyle } from './tree-op-types-D0fTNBVW.js';
|
|
2
2
|
import { O as OoxmlNode, o as OoxmlDrawingNode, a as OoxmlElement } from './ooxml-tree-BU0e3DVi.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { I as ImageResourceState } from './image-resources-Cl5_cNi9.js';
|
|
4
|
+
import { a as RevisionAttribution } from './revision-projection-UKqvPa4-.js';
|
|
5
5
|
|
|
6
6
|
/** Whether a paragraph must start a new page (`w:pageBreakBefore`). */
|
|
7
7
|
declare function paragraphBreaksBefore(props: readonly OoxmlProperty[]): boolean;
|
|
@@ -429,6 +429,21 @@ declare function runStylesEqual(a: ResolvedRunStyle, b: ResolvedRunStyle): boole
|
|
|
429
429
|
*/
|
|
430
430
|
declare function baselineShiftPtOf(style: ResolvedRunStyle): number;
|
|
431
431
|
|
|
432
|
+
type AllowlistedPageField = 'PAGE' | 'NUMPAGES' | 'SECTIONPAGES';
|
|
433
|
+
/**
|
|
434
|
+
* Which allowlisted page fields a header/footer story actually contains.
|
|
435
|
+
*
|
|
436
|
+
* Drives layout reuse: no fields → one baseline; NUMPAGES only → one layout per page count;
|
|
437
|
+
* SECTIONPAGES only → one layout per section page count; PAGE (alone or combined) → per
|
|
438
|
+
* distinct evaluated values with a bounded cache. Counts both complex markers and
|
|
439
|
+
* `w:fldSimple` (including an allowlisted page field nested inside a non-page simple field).
|
|
440
|
+
*/
|
|
441
|
+
interface StoryPageFieldNeeds {
|
|
442
|
+
readonly hasPage: boolean;
|
|
443
|
+
readonly hasNumPages: boolean;
|
|
444
|
+
readonly hasSectionPages: boolean;
|
|
445
|
+
}
|
|
446
|
+
|
|
432
447
|
interface DrawingPoint {
|
|
433
448
|
readonly x: number;
|
|
434
449
|
readonly y: number;
|
|
@@ -561,6 +576,21 @@ interface AnchoredDrawingRecord extends Omit<InlineDrawingRecord, 'kind' | 'base
|
|
|
561
576
|
readonly textboxStory?: TextboxStoryLayout;
|
|
562
577
|
}
|
|
563
578
|
|
|
579
|
+
/**
|
|
580
|
+
* One parsed `HYPERLINK` instruction: the raw, unsanitized pieces.
|
|
581
|
+
*
|
|
582
|
+
* `target` and `anchor` are verbatim from the instruction — the projector at the trust
|
|
583
|
+
* boundary decides what, if anything, they become in a DOM sink.
|
|
584
|
+
*/
|
|
585
|
+
interface HyperlinkFieldSpec {
|
|
586
|
+
/** The target as authored (first quoted or bare non-switch token), or null. */
|
|
587
|
+
readonly target: string | null;
|
|
588
|
+
/** `\l` — a bookmark name in this document, or null. */
|
|
589
|
+
readonly anchor: string | null;
|
|
590
|
+
/** `\o` — the hover tooltip, or null. */
|
|
591
|
+
readonly tooltip: string | null;
|
|
592
|
+
}
|
|
593
|
+
|
|
564
594
|
/**
|
|
565
595
|
* What a piece says about the FIELD result it came from, for Word's shading.
|
|
566
596
|
*
|
|
@@ -576,12 +606,40 @@ interface FieldAtomMarker {
|
|
|
576
606
|
* turns it off — because they mark the blanks somebody is meant to fill in.
|
|
577
607
|
*/
|
|
578
608
|
readonly formField: boolean;
|
|
609
|
+
/**
|
|
610
|
+
* A BODY PAGE / NUMPAGES / SECTIONPAGES atom whose value depends on pagination.
|
|
611
|
+
*
|
|
612
|
+
* The paragraph walk cannot know which page the field lands on — layout runs before the page
|
|
613
|
+
* count — so it paints a placeholder and records the field's kind here. Document finalize
|
|
614
|
+
* (`substituteBodyPageFields`) reads this marker and substitutes the real value per page.
|
|
615
|
+
* Absent in headers/footers, which evaluate live through their own per-page projector.
|
|
616
|
+
*/
|
|
617
|
+
readonly pageField?: {
|
|
618
|
+
readonly kind: AllowlistedPageField;
|
|
619
|
+
};
|
|
579
620
|
}
|
|
580
621
|
/** A half-open model-offset range, in the paragraph's own UTF-16 offset space. */
|
|
581
622
|
interface ModelRange {
|
|
582
623
|
readonly start: number;
|
|
583
624
|
readonly end: number;
|
|
584
625
|
}
|
|
626
|
+
/**
|
|
627
|
+
* How layout turns a typed `w:hyperlink` node into the sanitized record spans carry.
|
|
628
|
+
*
|
|
629
|
+
* Injected rather than computed here because resolving `r:id` needs the PACKAGE's
|
|
630
|
+
* relationships and this module only ever sees one part's tree. `null` means the caller
|
|
631
|
+
* declined to project — the runs still measure and paint, they simply carry no link, which is
|
|
632
|
+
* the right degradation: text is never lost for want of a target.
|
|
633
|
+
*/
|
|
634
|
+
type HyperlinkProjector = (link: OoxmlNode) => SpanLinkRecord | null;
|
|
635
|
+
/**
|
|
636
|
+
* How layout turns a parsed HYPERLINK field instruction into the sanitized record spans carry.
|
|
637
|
+
*
|
|
638
|
+
* Injected for the same reason as {@link HyperlinkProjector}: the spec's raw target must cross
|
|
639
|
+
* the surface's ONE href trust boundary, and layout owns no sanitization policy. `null` means
|
|
640
|
+
* no link — the cached result still paints as plain text, which is the right degradation.
|
|
641
|
+
*/
|
|
642
|
+
type FieldLinkProjector = (spec: HyperlinkFieldSpec) => SpanLinkRecord | null;
|
|
585
643
|
|
|
586
644
|
/** Test-only mutable counters; omitted by production call sites. Not package-public. */
|
|
587
645
|
interface TableBorderGridResolveWork {
|
|
@@ -1073,15 +1131,47 @@ interface ParagraphFragmentRecord {
|
|
|
1073
1131
|
*/
|
|
1074
1132
|
readonly shadingBox?: LayoutBox;
|
|
1075
1133
|
/**
|
|
1076
|
-
* The
|
|
1077
|
-
*
|
|
1134
|
+
* The revisions on this paragraph's own MARK (`w:pPr/w:rPr/w:ins|w:del`), absent when there
|
|
1135
|
+
* are none.
|
|
1078
1136
|
*
|
|
1079
|
-
* Carried on the fragment rather than on a span because
|
|
1137
|
+
* Carried on the fragment rather than on a span because they decorate no characters: the
|
|
1080
1138
|
* pilcrow was inserted or deleted, which is how a split or a merge is recorded. Only the
|
|
1081
|
-
* FINAL fragment carries
|
|
1139
|
+
* FINAL fragment carries them — the mark lives at the end of the paragraph, so a paragraph
|
|
1082
1140
|
* split across pages must not draw two of them.
|
|
1141
|
+
*
|
|
1142
|
+
* A LIST because one mark can hold two decisions at once — an insertion by one author and
|
|
1143
|
+
* a deletion of that insertion by the next. Published only in `all-markup`: the other two
|
|
1144
|
+
* display modes answer what the document WOULD be, and a resolved view draws no
|
|
1145
|
+
* attribution.
|
|
1146
|
+
*
|
|
1147
|
+
* Those two modes are ATTRIBUTION-resolved, not STRUCTURE-resolved. Taking a deleted mark
|
|
1148
|
+
* in `proposed` merges the paragraph into the next one, and taking an inserted mark in
|
|
1149
|
+
* `original` un-splits it, but `revision-visibility.ts` does that only for a paragraph that
|
|
1150
|
+
* renders no text. So a resolved view still shows the break — it just no longer draws a
|
|
1151
|
+
* coloured pilcrow beside it. The merge is the fix for that; suppressing the glyph is not,
|
|
1152
|
+
* and must not be read as it.
|
|
1153
|
+
*/
|
|
1154
|
+
readonly markRevisions?: readonly RevisionAttribution[];
|
|
1155
|
+
/**
|
|
1156
|
+
* The one decision a single-field reader sees, absent when there are none.
|
|
1157
|
+
*
|
|
1158
|
+
* Derived from {@link markRevisions} at publish time, never authored beside it, so the two
|
|
1159
|
+
* cannot disagree: a deletion when the mark carries one, because that is where the pair
|
|
1160
|
+
* lands once every decision is taken, and it is the face paint draws for the same reason.
|
|
1161
|
+
*
|
|
1162
|
+
* @deprecated Shows one of the decisions a mark can carry. Read {@link markRevisions}.
|
|
1083
1163
|
*/
|
|
1084
1164
|
readonly markRevision?: RevisionAttribution;
|
|
1165
|
+
/**
|
|
1166
|
+
* The tracked FORMAT change on this paragraph's mark (`w:pPr/w:rPr/w:rPrChange`), absent
|
|
1167
|
+
* when there is none. Final fragment only, and `all-markup` only, like the decisions above.
|
|
1168
|
+
*
|
|
1169
|
+
* Published without a glyph of its own on purpose. Word draws no pilcrow for a mark whose
|
|
1170
|
+
* only change is its own formatting — the decision belongs to the review pane, which lists
|
|
1171
|
+
* it either way. What was missing was GEOMETRY: with nothing on the fragment, a card had
|
|
1172
|
+
* no place on the page to point at.
|
|
1173
|
+
*/
|
|
1174
|
+
readonly markFormatRevision?: RevisionAttribution;
|
|
1085
1175
|
/**
|
|
1086
1176
|
* List marker painted in the hanging-indent slot of the FIRST fragment only.
|
|
1087
1177
|
*
|
|
@@ -1400,6 +1490,14 @@ interface PageRecord {
|
|
|
1400
1490
|
readonly sectionPageCount: number;
|
|
1401
1491
|
readonly format?: string;
|
|
1402
1492
|
};
|
|
1493
|
+
/**
|
|
1494
|
+
* `true` when this page's body flow (or a body table) carries a PAGE/NUMPAGES/SECTIONPAGES
|
|
1495
|
+
* placeholder that document finalize must substitute. Set when the page is assembled, so it
|
|
1496
|
+
* rides the record through incremental reuse. `false` lets `finalizePageFieldProjection` skip
|
|
1497
|
+
* the substitution walk; `undefined` (a page built by a path that does not stamp it) still
|
|
1498
|
+
* walks, which is safe.
|
|
1499
|
+
*/
|
|
1500
|
+
readonly hasBodyPageFields?: boolean;
|
|
1403
1501
|
/**
|
|
1404
1502
|
* Content-control boundaries whose geometry intersects this page.
|
|
1405
1503
|
*
|
|
@@ -1498,4 +1596,4 @@ declare function unionLayoutBoxes(boxes: readonly LayoutBox[]): LayoutBox | null
|
|
|
1498
1596
|
/** Collapse raw + ancestor locks into one `ST_Lock` vocabulary value. */
|
|
1499
1597
|
declare function effectiveContentControlLock(locks: readonly ContentControlLock[]): ContentControlLock;
|
|
1500
1598
|
|
|
1501
|
-
export {
|
|
1599
|
+
export { PARAGRAPH_BORDER_SIDES as $, type AnchoredDrawingRecord as A, type BlockFragmentRecord as B, type ContentControlBoundaryRecord as C, type DrawingPoint as D, DEFAULT_TAB_INTERVAL_PT as E, type FieldLinkProjector as F, DEFAULT_TAB_INTERVAL_TWIPS as G, type HyperlinkProjector as H, type InlineDrawingRecord as I, EMPTY_TAB_STOPS as J, type FieldAtomMarker as K, type LineRecord as L, type ModelRange as M, type HeaderFooterStoryRecord as N, type HyperlinkFieldSpec as O, type PageGeometry as P, type LineSpacingRule as Q, type ResolvedRunStyle as R, type SemanticLayout as S, type TextMeasurer as T, type ListMarkerRecord as U, MAX_BORDER_SPACE_PT as V, MAX_BORDER_WIDTH_PT as W, MAX_PARAGRAPH_SPACING_PT as X, MAX_TABLE_BORDER_STROKES as Y, MAX_TAB_POSITION_TWIPS as Z, MAX_TAB_STOPS as _, type StyleSpanRecord as a, type ParagraphAutoSpacingContext as a0, type ParagraphBorderSide as a1, type ParagraphBorderStrokeRecord as a2, type ParagraphBottomBorderRecord as a3, type ParagraphIndent as a4, type ResolvedCellBorders as a5, type ResolvedTableBorderEdge as a6, type ResolvedTableBorderEdgeSegment as a7, type ResolvedUnderline as a8, SINGLE_LINE_SPACING as a9, linesOf as aA, measureDisplayText as aB, nextTabDestination as aC, paragraphBorderExtentPt as aD, paragraphBorderStrokeWidthPt as aE, paragraphBorders as aF, paragraphBordersFingerprint as aG, paragraphBreaksBefore as aH, paragraphContextualSpacing as aI, paragraphFragmentsOf as aJ, paragraphFragmentsOfBlocks as aK, paragraphLineSpacing as aL, paragraphSpacing as aM, paragraphTabStops as aN, readBorderSide as aO, readCellBorders as aP, readTableBorders as aQ, resolveBorderConflict as aR, resolveRunStyle as aS, resolveTableCellBorderGrid as aT, runStylesEqual as aU, tabAdvanceWidth as aV, tabStopsFingerprint as aW, unionLayoutBoxes as aX, withDefaultTabInterval as aY, type SourceRange as aa, type SpanLinkRecord as ab, TAB_LEADER_GLYPH as ac, type TabAlignment as ad, type TabDestination as ae, type TabLeader as af, type TabStop as ag, type TableBorderSideName as ah, type TableBorderStrokeRecord as ai, type TableFragmentRecord as aj, type VerticalAlign as ak, appliedSpaceBefore as al, applyLineSpacing as am, baselineShiftPtOf as an, borderExtentPt as ao, borderWeight as ap, bottomBorderExtentPt as aq, cascadedParagraphBorders as ar, cascadedTabStops as as, collapsedSpaceBefore as at, contentControlsOfLayout as au, defaultTabIntervalFromSettings as av, displayText as aw, effectiveContentControlLock as ax, fragmentsOfParagraph as ay, lineAtPosition as az, type TableRowFragmentRecord as b, type TableCellFragmentRecord as c, type LayoutBox as d, type DrawingInsets as e, type ThemeFonts as f, type ParagraphSpacing as g, type ParagraphLineSpacing as h, type ParagraphBorderEdge as i, type ParagraphBorders as j, type ResolvedTabStops as k, type TableBorderSide as l, type InlineDrawingLayoutContext as m, type PageRecord as n, type ParagraphFragmentRecord as o, type StoryPageFieldNeeds as p, type CellBorderBox as q, type TableBorderBox as r, AUTO_PARAGRAPH_SPACING_PT as s, type BorderGridGeometry as t, type ContentControlGeometryFragment as u, type ContentControlLevel as v, type ContentControlLock as w, type ContentControlMappedType as x, DEFAULT_PAGE_GEOMETRY as y, DEFAULT_RUN_STYLE as z };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { O as OoxmlProperty,
|
|
1
|
+
import { O as OoxmlProperty, k as DrawingAccessibility, S as SourceCrop, l as DrawingTransform, V as VectorShapeProjection, f as DrawingHorizontalReferenceFrame, g as DrawingVerticalReferenceFrame, b as ImageWrapTarget, D as DrawingProjection, m as TableBorderStyle } from './tree-op-types-CUCwPWjT.cjs';
|
|
2
2
|
import { O as OoxmlNode, o as OoxmlDrawingNode, a as OoxmlElement } from './ooxml-tree-BU0e3DVi.cjs';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { I as ImageResourceState } from './image-resources-BaHz4QAd.cjs';
|
|
4
|
+
import { a as RevisionAttribution } from './revision-projection-WzlQGBJx.cjs';
|
|
5
5
|
|
|
6
6
|
/** Whether a paragraph must start a new page (`w:pageBreakBefore`). */
|
|
7
7
|
declare function paragraphBreaksBefore(props: readonly OoxmlProperty[]): boolean;
|
|
@@ -429,6 +429,21 @@ declare function runStylesEqual(a: ResolvedRunStyle, b: ResolvedRunStyle): boole
|
|
|
429
429
|
*/
|
|
430
430
|
declare function baselineShiftPtOf(style: ResolvedRunStyle): number;
|
|
431
431
|
|
|
432
|
+
type AllowlistedPageField = 'PAGE' | 'NUMPAGES' | 'SECTIONPAGES';
|
|
433
|
+
/**
|
|
434
|
+
* Which allowlisted page fields a header/footer story actually contains.
|
|
435
|
+
*
|
|
436
|
+
* Drives layout reuse: no fields → one baseline; NUMPAGES only → one layout per page count;
|
|
437
|
+
* SECTIONPAGES only → one layout per section page count; PAGE (alone or combined) → per
|
|
438
|
+
* distinct evaluated values with a bounded cache. Counts both complex markers and
|
|
439
|
+
* `w:fldSimple` (including an allowlisted page field nested inside a non-page simple field).
|
|
440
|
+
*/
|
|
441
|
+
interface StoryPageFieldNeeds {
|
|
442
|
+
readonly hasPage: boolean;
|
|
443
|
+
readonly hasNumPages: boolean;
|
|
444
|
+
readonly hasSectionPages: boolean;
|
|
445
|
+
}
|
|
446
|
+
|
|
432
447
|
interface DrawingPoint {
|
|
433
448
|
readonly x: number;
|
|
434
449
|
readonly y: number;
|
|
@@ -561,6 +576,21 @@ interface AnchoredDrawingRecord extends Omit<InlineDrawingRecord, 'kind' | 'base
|
|
|
561
576
|
readonly textboxStory?: TextboxStoryLayout;
|
|
562
577
|
}
|
|
563
578
|
|
|
579
|
+
/**
|
|
580
|
+
* One parsed `HYPERLINK` instruction: the raw, unsanitized pieces.
|
|
581
|
+
*
|
|
582
|
+
* `target` and `anchor` are verbatim from the instruction — the projector at the trust
|
|
583
|
+
* boundary decides what, if anything, they become in a DOM sink.
|
|
584
|
+
*/
|
|
585
|
+
interface HyperlinkFieldSpec {
|
|
586
|
+
/** The target as authored (first quoted or bare non-switch token), or null. */
|
|
587
|
+
readonly target: string | null;
|
|
588
|
+
/** `\l` — a bookmark name in this document, or null. */
|
|
589
|
+
readonly anchor: string | null;
|
|
590
|
+
/** `\o` — the hover tooltip, or null. */
|
|
591
|
+
readonly tooltip: string | null;
|
|
592
|
+
}
|
|
593
|
+
|
|
564
594
|
/**
|
|
565
595
|
* What a piece says about the FIELD result it came from, for Word's shading.
|
|
566
596
|
*
|
|
@@ -576,12 +606,40 @@ interface FieldAtomMarker {
|
|
|
576
606
|
* turns it off — because they mark the blanks somebody is meant to fill in.
|
|
577
607
|
*/
|
|
578
608
|
readonly formField: boolean;
|
|
609
|
+
/**
|
|
610
|
+
* A BODY PAGE / NUMPAGES / SECTIONPAGES atom whose value depends on pagination.
|
|
611
|
+
*
|
|
612
|
+
* The paragraph walk cannot know which page the field lands on — layout runs before the page
|
|
613
|
+
* count — so it paints a placeholder and records the field's kind here. Document finalize
|
|
614
|
+
* (`substituteBodyPageFields`) reads this marker and substitutes the real value per page.
|
|
615
|
+
* Absent in headers/footers, which evaluate live through their own per-page projector.
|
|
616
|
+
*/
|
|
617
|
+
readonly pageField?: {
|
|
618
|
+
readonly kind: AllowlistedPageField;
|
|
619
|
+
};
|
|
579
620
|
}
|
|
580
621
|
/** A half-open model-offset range, in the paragraph's own UTF-16 offset space. */
|
|
581
622
|
interface ModelRange {
|
|
582
623
|
readonly start: number;
|
|
583
624
|
readonly end: number;
|
|
584
625
|
}
|
|
626
|
+
/**
|
|
627
|
+
* How layout turns a typed `w:hyperlink` node into the sanitized record spans carry.
|
|
628
|
+
*
|
|
629
|
+
* Injected rather than computed here because resolving `r:id` needs the PACKAGE's
|
|
630
|
+
* relationships and this module only ever sees one part's tree. `null` means the caller
|
|
631
|
+
* declined to project — the runs still measure and paint, they simply carry no link, which is
|
|
632
|
+
* the right degradation: text is never lost for want of a target.
|
|
633
|
+
*/
|
|
634
|
+
type HyperlinkProjector = (link: OoxmlNode) => SpanLinkRecord | null;
|
|
635
|
+
/**
|
|
636
|
+
* How layout turns a parsed HYPERLINK field instruction into the sanitized record spans carry.
|
|
637
|
+
*
|
|
638
|
+
* Injected for the same reason as {@link HyperlinkProjector}: the spec's raw target must cross
|
|
639
|
+
* the surface's ONE href trust boundary, and layout owns no sanitization policy. `null` means
|
|
640
|
+
* no link — the cached result still paints as plain text, which is the right degradation.
|
|
641
|
+
*/
|
|
642
|
+
type FieldLinkProjector = (spec: HyperlinkFieldSpec) => SpanLinkRecord | null;
|
|
585
643
|
|
|
586
644
|
/** Test-only mutable counters; omitted by production call sites. Not package-public. */
|
|
587
645
|
interface TableBorderGridResolveWork {
|
|
@@ -1073,15 +1131,47 @@ interface ParagraphFragmentRecord {
|
|
|
1073
1131
|
*/
|
|
1074
1132
|
readonly shadingBox?: LayoutBox;
|
|
1075
1133
|
/**
|
|
1076
|
-
* The
|
|
1077
|
-
*
|
|
1134
|
+
* The revisions on this paragraph's own MARK (`w:pPr/w:rPr/w:ins|w:del`), absent when there
|
|
1135
|
+
* are none.
|
|
1078
1136
|
*
|
|
1079
|
-
* Carried on the fragment rather than on a span because
|
|
1137
|
+
* Carried on the fragment rather than on a span because they decorate no characters: the
|
|
1080
1138
|
* pilcrow was inserted or deleted, which is how a split or a merge is recorded. Only the
|
|
1081
|
-
* FINAL fragment carries
|
|
1139
|
+
* FINAL fragment carries them — the mark lives at the end of the paragraph, so a paragraph
|
|
1082
1140
|
* split across pages must not draw two of them.
|
|
1141
|
+
*
|
|
1142
|
+
* A LIST because one mark can hold two decisions at once — an insertion by one author and
|
|
1143
|
+
* a deletion of that insertion by the next. Published only in `all-markup`: the other two
|
|
1144
|
+
* display modes answer what the document WOULD be, and a resolved view draws no
|
|
1145
|
+
* attribution.
|
|
1146
|
+
*
|
|
1147
|
+
* Those two modes are ATTRIBUTION-resolved, not STRUCTURE-resolved. Taking a deleted mark
|
|
1148
|
+
* in `proposed` merges the paragraph into the next one, and taking an inserted mark in
|
|
1149
|
+
* `original` un-splits it, but `revision-visibility.ts` does that only for a paragraph that
|
|
1150
|
+
* renders no text. So a resolved view still shows the break — it just no longer draws a
|
|
1151
|
+
* coloured pilcrow beside it. The merge is the fix for that; suppressing the glyph is not,
|
|
1152
|
+
* and must not be read as it.
|
|
1153
|
+
*/
|
|
1154
|
+
readonly markRevisions?: readonly RevisionAttribution[];
|
|
1155
|
+
/**
|
|
1156
|
+
* The one decision a single-field reader sees, absent when there are none.
|
|
1157
|
+
*
|
|
1158
|
+
* Derived from {@link markRevisions} at publish time, never authored beside it, so the two
|
|
1159
|
+
* cannot disagree: a deletion when the mark carries one, because that is where the pair
|
|
1160
|
+
* lands once every decision is taken, and it is the face paint draws for the same reason.
|
|
1161
|
+
*
|
|
1162
|
+
* @deprecated Shows one of the decisions a mark can carry. Read {@link markRevisions}.
|
|
1083
1163
|
*/
|
|
1084
1164
|
readonly markRevision?: RevisionAttribution;
|
|
1165
|
+
/**
|
|
1166
|
+
* The tracked FORMAT change on this paragraph's mark (`w:pPr/w:rPr/w:rPrChange`), absent
|
|
1167
|
+
* when there is none. Final fragment only, and `all-markup` only, like the decisions above.
|
|
1168
|
+
*
|
|
1169
|
+
* Published without a glyph of its own on purpose. Word draws no pilcrow for a mark whose
|
|
1170
|
+
* only change is its own formatting — the decision belongs to the review pane, which lists
|
|
1171
|
+
* it either way. What was missing was GEOMETRY: with nothing on the fragment, a card had
|
|
1172
|
+
* no place on the page to point at.
|
|
1173
|
+
*/
|
|
1174
|
+
readonly markFormatRevision?: RevisionAttribution;
|
|
1085
1175
|
/**
|
|
1086
1176
|
* List marker painted in the hanging-indent slot of the FIRST fragment only.
|
|
1087
1177
|
*
|
|
@@ -1400,6 +1490,14 @@ interface PageRecord {
|
|
|
1400
1490
|
readonly sectionPageCount: number;
|
|
1401
1491
|
readonly format?: string;
|
|
1402
1492
|
};
|
|
1493
|
+
/**
|
|
1494
|
+
* `true` when this page's body flow (or a body table) carries a PAGE/NUMPAGES/SECTIONPAGES
|
|
1495
|
+
* placeholder that document finalize must substitute. Set when the page is assembled, so it
|
|
1496
|
+
* rides the record through incremental reuse. `false` lets `finalizePageFieldProjection` skip
|
|
1497
|
+
* the substitution walk; `undefined` (a page built by a path that does not stamp it) still
|
|
1498
|
+
* walks, which is safe.
|
|
1499
|
+
*/
|
|
1500
|
+
readonly hasBodyPageFields?: boolean;
|
|
1403
1501
|
/**
|
|
1404
1502
|
* Content-control boundaries whose geometry intersects this page.
|
|
1405
1503
|
*
|
|
@@ -1498,4 +1596,4 @@ declare function unionLayoutBoxes(boxes: readonly LayoutBox[]): LayoutBox | null
|
|
|
1498
1596
|
/** Collapse raw + ancestor locks into one `ST_Lock` vocabulary value. */
|
|
1499
1597
|
declare function effectiveContentControlLock(locks: readonly ContentControlLock[]): ContentControlLock;
|
|
1500
1598
|
|
|
1501
|
-
export {
|
|
1599
|
+
export { PARAGRAPH_BORDER_SIDES as $, type AnchoredDrawingRecord as A, type BlockFragmentRecord as B, type ContentControlBoundaryRecord as C, type DrawingPoint as D, DEFAULT_TAB_INTERVAL_PT as E, type FieldLinkProjector as F, DEFAULT_TAB_INTERVAL_TWIPS as G, type HyperlinkProjector as H, type InlineDrawingRecord as I, EMPTY_TAB_STOPS as J, type FieldAtomMarker as K, type LineRecord as L, type ModelRange as M, type HeaderFooterStoryRecord as N, type HyperlinkFieldSpec as O, type PageGeometry as P, type LineSpacingRule as Q, type ResolvedRunStyle as R, type SemanticLayout as S, type TextMeasurer as T, type ListMarkerRecord as U, MAX_BORDER_SPACE_PT as V, MAX_BORDER_WIDTH_PT as W, MAX_PARAGRAPH_SPACING_PT as X, MAX_TABLE_BORDER_STROKES as Y, MAX_TAB_POSITION_TWIPS as Z, MAX_TAB_STOPS as _, type StyleSpanRecord as a, type ParagraphAutoSpacingContext as a0, type ParagraphBorderSide as a1, type ParagraphBorderStrokeRecord as a2, type ParagraphBottomBorderRecord as a3, type ParagraphIndent as a4, type ResolvedCellBorders as a5, type ResolvedTableBorderEdge as a6, type ResolvedTableBorderEdgeSegment as a7, type ResolvedUnderline as a8, SINGLE_LINE_SPACING as a9, linesOf as aA, measureDisplayText as aB, nextTabDestination as aC, paragraphBorderExtentPt as aD, paragraphBorderStrokeWidthPt as aE, paragraphBorders as aF, paragraphBordersFingerprint as aG, paragraphBreaksBefore as aH, paragraphContextualSpacing as aI, paragraphFragmentsOf as aJ, paragraphFragmentsOfBlocks as aK, paragraphLineSpacing as aL, paragraphSpacing as aM, paragraphTabStops as aN, readBorderSide as aO, readCellBorders as aP, readTableBorders as aQ, resolveBorderConflict as aR, resolveRunStyle as aS, resolveTableCellBorderGrid as aT, runStylesEqual as aU, tabAdvanceWidth as aV, tabStopsFingerprint as aW, unionLayoutBoxes as aX, withDefaultTabInterval as aY, type SourceRange as aa, type SpanLinkRecord as ab, TAB_LEADER_GLYPH as ac, type TabAlignment as ad, type TabDestination as ae, type TabLeader as af, type TabStop as ag, type TableBorderSideName as ah, type TableBorderStrokeRecord as ai, type TableFragmentRecord as aj, type VerticalAlign as ak, appliedSpaceBefore as al, applyLineSpacing as am, baselineShiftPtOf as an, borderExtentPt as ao, borderWeight as ap, bottomBorderExtentPt as aq, cascadedParagraphBorders as ar, cascadedTabStops as as, collapsedSpaceBefore as at, contentControlsOfLayout as au, defaultTabIntervalFromSettings as av, displayText as aw, effectiveContentControlLock as ax, fragmentsOfParagraph as ay, lineAtPosition as az, type TableRowFragmentRecord as b, type TableCellFragmentRecord as c, type LayoutBox as d, type DrawingInsets as e, type ThemeFonts as f, type ParagraphSpacing as g, type ParagraphLineSpacing as h, type ParagraphBorderEdge as i, type ParagraphBorders as j, type ResolvedTabStops as k, type TableBorderSide as l, type InlineDrawingLayoutContext as m, type PageRecord as n, type ParagraphFragmentRecord as o, type StoryPageFieldNeeds as p, type CellBorderBox as q, type TableBorderBox as r, AUTO_PARAGRAPH_SPACING_PT as s, type BorderGridGeometry as t, type ContentControlGeometryFragment as u, type ContentControlLevel as v, type ContentControlLock as w, type ContentControlMappedType as x, DEFAULT_PAGE_GEOMETRY as y, DEFAULT_RUN_STYLE as z };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as ResolvedRunStyle, T as TextMeasurer } from './semantic-records-
|
|
1
|
+
import { R as ResolvedRunStyle, T as TextMeasurer } from './semantic-records-DEOs3_tE.cjs';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* A face, as something asks for it: family plus the two axes this engine admits.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as ResolvedRunStyle, T as TextMeasurer } from './semantic-records-
|
|
1
|
+
import { R as ResolvedRunStyle, T as TextMeasurer } from './semantic-records-CdQvpUj1.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* A face, as something asks for it: family plus the two axes this engine admits.
|