@betteroffice/docx 0.0.3 → 0.0.4

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.
Files changed (62) hide show
  1. package/README.md +20 -7
  2. package/dist/chunk-4V6MDZIK.mjs +1 -0
  3. package/dist/chunk-6KDV6AIL.mjs +1 -0
  4. package/dist/chunk-CTBUQRYQ.mjs +1 -0
  5. package/dist/{chunk-IFT6DUJX.mjs → chunk-LTVVQMHB.mjs} +1 -1
  6. package/dist/chunk-NBSLB77E.mjs +1 -0
  7. package/dist/chunk-NTSSE5QK.mjs +57 -0
  8. package/dist/chunk-YTILOUAA.mjs +16 -0
  9. package/dist/collaboration/index.d.mts +32 -8
  10. package/dist/collaboration/index.mjs +1 -1
  11. package/dist/{content-MOZ6hKP4.d.mts → content-C3sTRz-u.d.mts} +517 -650
  12. package/dist/core.d.mts +6 -6
  13. package/dist/core.mjs +1 -1
  14. package/dist/{displayListQueries-BJlo7Jkz.d.mts → displayListQueries-DLzpvJV6.d.mts} +14 -3
  15. package/dist/docx/index.d.mts +3 -3
  16. package/dist/docx/index.mjs +1 -1
  17. package/dist/editor/index.d.mts +7 -7
  18. package/dist/{fontLoader-aSewHMKF.d.mts → fontLoader-CMH3bZ2Z.d.mts} +127 -2
  19. package/dist/{formatting-D1EPSaJP.d.mts → formatting-BEkIBePP.d.mts} +77 -203
  20. package/dist/{frameDelta-D965X8yK.d.mts → frameDelta-B2kC6XiP.d.mts} +4 -2
  21. package/dist/generated/edit/docx_edit_bg.wasm +0 -0
  22. package/dist/generated/layout/docx_layout_bg.wasm +0 -0
  23. package/dist/generated/parse/docx_parse_bg.wasm +0 -0
  24. package/dist/{index-Dx4Z3lkz.d.mts → index-2piKi4gO.d.mts} +66 -3
  25. package/dist/layout/index.d.mts +8 -7
  26. package/dist/layout/index.mjs +1 -1
  27. package/dist/layout/pagination/index.d.mts +4 -4
  28. package/dist/layout/pagination/index.mjs +1 -1
  29. package/dist/layout/render/index.d.mts +10 -10
  30. package/dist/layout/render/index.mjs +1 -1
  31. package/dist/plugin-api/RenderedDomContext.d.mts +7 -7
  32. package/dist/plugin-api/index.d.mts +3 -3
  33. package/dist/plugin-api/resolveItemPositions.d.mts +3 -3
  34. package/dist/{rustDisplayList-BRuZBqdL.d.mts → rustDisplayList-B0M2eBkU.d.mts} +7 -2
  35. package/dist/styles/index.d.mts +2 -2
  36. package/dist/{styles-Dn_o3Vo5.d.mts → styles-BK3Jecxs.d.mts} +1 -1
  37. package/dist/types/content.d.mts +2 -2
  38. package/dist/types/document.d.mts +6 -6
  39. package/dist/{types-BfqUl2h_.d.mts → types-C1rv3KM-.d.mts} +2 -2
  40. package/dist/utils/comments.d.mts +2 -2
  41. package/dist/utils/index.d.mts +4 -4
  42. package/dist/utils/index.mjs +1 -1
  43. package/dist/utils/stylePreview.d.mts +2 -2
  44. package/dist/utils/units.d.mts +4 -34
  45. package/dist/utils/units.mjs +1 -1
  46. package/dist/wasm-F2ETFAYL.mjs +1 -0
  47. package/dist/wasm-JE7B3ROD.mjs +1 -0
  48. package/dist/wasm-edit.d.mts +24 -0
  49. package/dist/wasm-edit.mjs +1 -1
  50. package/dist/wasm-layout.d.mts +5 -1
  51. package/dist/wasm-layout.mjs +1 -1
  52. package/dist/yrs/index.d.mts +6 -6
  53. package/dist/yrs/index.mjs +1 -1
  54. package/dist/yrs/residentEngineWorker.mjs +1 -1
  55. package/package.json +1 -2
  56. package/dist/chunk-3UBMCDME.mjs +0 -1
  57. package/dist/chunk-AEQOEQJ7.mjs +0 -57
  58. package/dist/chunk-AZ52IWB6.mjs +0 -16
  59. package/dist/chunk-WON6K4FY.mjs +0 -1
  60. package/dist/chunk-Y7RUNRU2.mjs +0 -1
  61. package/dist/wasm-DO3BUV7C.mjs +0 -1
  62. package/dist/wasm-NWXX4H5G.mjs +0 -1
@@ -1,399 +1,213 @@
1
- import { C as ColorValue, P as ParagraphFormatting, a as TextFormatting, b as TableFormatting, c as TableRowFormatting, d as TableCellFormatting, B as BorderSpec, f as ThemeColorSlot } from './formatting-D1EPSaJP.mjs';
1
+ import { C as ColorValue, y as ThemeColorSlot, a as ParagraphFormatting, b as TextFormatting, c as TableFormatting, d as TableRowFormatting, e as TableCellFormatting, B as BorderSpec, m as ShapeType, k as ShapeFill, l as ShapeOutline, D as ShapeTextBody$1, P as PresetGeometryPathCommand } from './formatting-BEkIBePP.mjs';
2
2
  import { WrapType } from './docx/wrapTypes.mjs';
3
3
 
4
- /**
5
- * DrawingML shape primitives — preset shape types, fill/outline/text-body
6
- * types, and the pure a:-namespace parsers for gradients, line ends,
7
- * transforms (a:xfrm), and preset geometry.
8
- */
9
-
10
- /**
11
- * Shape types
12
- *
13
- * @public
14
- */
15
- type ShapeType = 'rect' | 'roundRect' | 'ellipse' | 'triangle' | 'rtTriangle' | 'parallelogram' | 'trapezoid' | 'pentagon' | 'hexagon' | 'heptagon' | 'octagon' | 'decagon' | 'dodecagon' | 'star4' | 'star5' | 'star6' | 'star7' | 'star8' | 'star10' | 'star12' | 'star16' | 'star24' | 'star32' | 'line' | 'straightConnector1' | 'bentConnector2' | 'bentConnector3' | 'bentConnector4' | 'bentConnector5' | 'curvedConnector2' | 'curvedConnector3' | 'curvedConnector4' | 'curvedConnector5' | 'rightArrow' | 'leftArrow' | 'upArrow' | 'downArrow' | 'leftRightArrow' | 'upDownArrow' | 'quadArrow' | 'leftRightUpArrow' | 'bentArrow' | 'uturnArrow' | 'leftUpArrow' | 'bentUpArrow' | 'curvedRightArrow' | 'curvedLeftArrow' | 'curvedUpArrow' | 'curvedDownArrow' | 'stripedRightArrow' | 'notchedRightArrow' | 'homePlate' | 'chevron' | 'rightArrowCallout' | 'downArrowCallout' | 'leftArrowCallout' | 'upArrowCallout' | 'leftRightArrowCallout' | 'quadArrowCallout' | 'circularArrow' | 'flowChartProcess' | 'flowChartAlternateProcess' | 'flowChartDecision' | 'flowChartInputOutput' | 'flowChartPredefinedProcess' | 'flowChartInternalStorage' | 'flowChartDocument' | 'flowChartMultidocument' | 'flowChartTerminator' | 'flowChartPreparation' | 'flowChartManualInput' | 'flowChartManualOperation' | 'flowChartConnector' | 'flowChartOffpageConnector' | 'flowChartPunchedCard' | 'flowChartPunchedTape' | 'flowChartSummingJunction' | 'flowChartOr' | 'flowChartCollate' | 'flowChartSort' | 'flowChartExtract' | 'flowChartMerge' | 'flowChartOnlineStorage' | 'flowChartDelay' | 'flowChartMagneticTape' | 'flowChartMagneticDisk' | 'flowChartMagneticDrum' | 'flowChartDisplay' | 'wedgeRectCallout' | 'wedgeRoundRectCallout' | 'wedgeEllipseCallout' | 'cloudCallout' | 'borderCallout1' | 'borderCallout2' | 'borderCallout3' | 'accentCallout1' | 'accentCallout2' | 'accentCallout3' | 'callout1' | 'callout2' | 'callout3' | 'accentBorderCallout1' | 'accentBorderCallout2' | 'accentBorderCallout3' | 'actionButtonBlank' | 'actionButtonHome' | 'actionButtonHelp' | 'actionButtonInformation' | 'actionButtonBackPrevious' | 'actionButtonForwardNext' | 'actionButtonBeginning' | 'actionButtonEnd' | 'actionButtonReturn' | 'actionButtonDocument' | 'actionButtonSound' | 'actionButtonMovie' | 'irregularSeal1' | 'irregularSeal2' | 'frame' | 'halfFrame' | 'corner' | 'diagStripe' | 'chord' | 'arc' | 'bracketPair' | 'bracePair' | 'leftBracket' | 'rightBracket' | 'leftBrace' | 'rightBrace' | 'can' | 'cube' | 'bevel' | 'donut' | 'noSmoking' | 'blockArc' | 'foldedCorner' | 'smileyFace' | 'heart' | 'lightningBolt' | 'sun' | 'moon' | 'cloud' | 'snip1Rect' | 'snip2SameRect' | 'snip2DiagRect' | 'snipRoundRect' | 'round1Rect' | 'round2SameRect' | 'round2DiagRect' | 'plaque' | 'teardrop' | 'mathPlus' | 'mathMinus' | 'mathMultiply' | 'mathDivide' | 'mathEqual' | 'mathNotEqual' | 'gear6' | 'gear9' | 'funnel' | 'pieWedge' | 'pie' | 'leftCircularArrow' | 'leftRightCircularArrow' | 'swooshArrow' | 'textBox';
16
- /**
17
- * Shape fill type
18
- *
19
- * @public
20
- */
21
- interface ShapeFill {
22
- type: 'none' | 'solid' | 'gradient' | 'pattern' | 'picture';
23
- /** Solid fill color */
4
+ interface ShapeFillPaint {
5
+ kind?: 'none' | 'solid' | 'gradient' | 'pattern' | 'picture' | 'theme';
24
6
  color?: ColorValue;
25
- /** Gradient stops for gradient fill */
26
- gradient?: {
27
- type: 'linear' | 'radial' | 'rectangular' | 'path';
28
- angle?: number;
29
- stops: Array<{
30
- position: number;
31
- color: ColorValue;
32
- }>;
7
+ themeColor?: ThemeColorSlot;
8
+ gradientType?: 'linear' | 'path' | 'radial' | 'rectangular';
9
+ angle?: number;
10
+ stops?: Array<{
11
+ position?: number;
12
+ color?: ColorValue;
13
+ }>;
14
+ pathShape?: 'circle' | 'rect' | 'shape';
15
+ focusRect?: {
16
+ left?: number;
17
+ top?: number;
18
+ right?: number;
19
+ bottom?: number;
20
+ };
21
+ rotateWithShape?: boolean;
22
+ patternPreset?: string;
23
+ foregroundColor?: ColorValue;
24
+ backgroundColor?: ColorValue;
25
+ picture?: Image;
26
+ themeRefIndex?: number;
27
+ srcRect?: {
28
+ left?: number;
29
+ top?: number;
30
+ right?: number;
31
+ bottom?: number;
32
+ };
33
+ fillMode?: 'stretch' | 'tile';
34
+ tile?: {
35
+ offsetX?: number;
36
+ offsetY?: number;
37
+ scaleX?: number;
38
+ scaleY?: number;
39
+ alignment?: string;
40
+ flip?: 'none' | 'x' | 'y' | 'xy';
41
+ };
42
+ stretchRect?: {
43
+ left?: number;
44
+ top?: number;
45
+ right?: number;
46
+ bottom?: number;
33
47
  };
48
+ pictureOpacity?: number;
34
49
  }
35
- /**
36
- * Shape outline/stroke
37
- *
38
- * @public
39
- */
40
- interface ShapeOutline {
41
- /** Line width in EMUs */
50
+ interface ShapeStrokePaint {
51
+ fill?: ShapeFillPaint;
42
52
  width?: number;
43
- /** Line color */
44
- color?: ColorValue;
45
- /** Line style */
46
- style?: 'solid' | 'dot' | 'dash' | 'lgDash' | 'dashDot' | 'lgDashDot' | 'lgDashDotDot' | 'sysDot' | 'sysDash' | 'sysDashDot' | 'sysDashDotDot';
47
- /** Line cap */
53
+ dash?: string;
54
+ customDash?: number[];
55
+ compound?: 'single' | 'double' | 'thickThin' | 'thinThick' | 'triple';
56
+ alignment?: 'center' | 'inset';
48
57
  cap?: 'flat' | 'round' | 'square';
49
- /** Line join */
50
58
  join?: 'bevel' | 'miter' | 'round';
51
- /** Head arrow */
59
+ miterLimit?: number;
52
60
  headEnd?: {
53
- type: 'none' | 'triangle' | 'stealth' | 'diamond' | 'oval' | 'arrow';
54
- width?: 'sm' | 'med' | 'lg';
55
- length?: 'sm' | 'med' | 'lg';
61
+ type?: string;
62
+ width?: string;
63
+ length?: string;
56
64
  };
57
- /** Tail arrow */
58
65
  tailEnd?: {
59
- type: 'none' | 'triangle' | 'stealth' | 'diamond' | 'oval' | 'arrow';
60
- width?: 'sm' | 'med' | 'lg';
61
- length?: 'sm' | 'med' | 'lg';
66
+ type?: string;
67
+ width?: string;
68
+ length?: string;
62
69
  };
70
+ themeRefIndex?: number;
63
71
  }
64
- /**
65
- * Text body inside a shape.
66
- *
67
- * `TContent` is the host's paragraph/content type — DrawingML itself does
68
- * not prescribe what a paragraph looks like (docx uses `w:p`, pptx `a:p`).
69
- *
70
- * @public
71
- */
72
- interface ShapeTextBody$1<TContent = unknown> {
73
- /** Text direction */
74
- vertical?: boolean;
75
- /** Rotation */
72
+ interface ShapeEffect {
73
+ kind?: 'shadow' | 'glow' | 'reflection' | 'softEdge' | 'blur' | 'unknown';
74
+ color?: ColorValue;
75
+ opacity?: number;
76
+ blurRadius?: number;
77
+ distance?: number;
78
+ direction?: number;
79
+ size?: number;
80
+ rawName?: string;
81
+ }
82
+ interface ShapeTextBodyProperties {
83
+ vertical?: 'horizontal' | 'vertical' | 'vertical270' | 'wordArtVertical' | 'eastAsianVertical' | 'mongolianVertical';
76
84
  rotation?: number;
77
- /** Anchor/vertical alignment */
85
+ upright?: boolean;
78
86
  anchor?: 'top' | 'middle' | 'bottom' | 'distributed' | 'justified';
79
- /** Anchor center */
80
87
  anchorCenter?: boolean;
81
- /** Auto fit */
82
- autoFit?: 'none' | 'normal' | 'shape';
83
- /** Text margins */
88
+ columns?: number;
89
+ columnSpacing?: number;
90
+ wrap?: 'square' | 'none';
91
+ horizontalOverflow?: 'clip' | 'overflow';
92
+ verticalOverflow?: 'clip' | 'ellipsis' | 'overflow';
84
93
  margins?: {
85
94
  top?: number;
86
95
  bottom?: number;
87
96
  left?: number;
88
97
  right?: number;
89
98
  };
90
- /** Paragraphs inside the shape */
91
- content: TContent[];
99
+ autoFit?: 'none' | 'normal' | 'shape';
100
+ fontScale?: number;
101
+ lineSpacingReduction?: number;
102
+ fromWordArt?: boolean;
103
+ presetTextWarp?: string;
104
+ }
105
+ interface DrawingSceneNode {
106
+ kind?: 'shape' | 'group' | 'canvas' | 'picture' | 'chart' | 'graphicFrame' | 'contentPart';
107
+ id?: string;
108
+ name?: string;
109
+ shape?: Shape;
110
+ image?: Image;
111
+ chart?: Chart;
112
+ children?: DrawingSceneNode[];
113
+ transform?: {
114
+ offsetX?: number;
115
+ offsetY?: number;
116
+ width?: number;
117
+ height?: number;
118
+ childOffsetX?: number;
119
+ childOffsetY?: number;
120
+ childWidth?: number;
121
+ childHeight?: number;
122
+ rotation?: number;
123
+ flipH?: boolean;
124
+ flipV?: boolean;
125
+ };
126
+ fill?: ShapeFillPaint;
127
+ effects?: ShapeEffect[];
128
+ relationshipId?: string;
129
+ }
130
+ interface DrawingScene {
131
+ version?: number;
132
+ root?: DrawingSceneNode;
133
+ title?: string;
134
+ description?: string;
135
+ decorative?: boolean;
136
+ hidden?: boolean;
92
137
  }
93
- /**
94
- * Normalized DrawingML preset-geometry path command.
95
- *
96
- * Coordinates are shape-local fractions in the `[0, 1]` box. Consumers scale
97
- * `x/y` and control points by the shape's resolved width/height.
98
- *
99
- * @public
100
- */
101
- type PresetGeometryPathCommand = {
102
- type: 'move';
103
- x: number;
104
- y: number;
105
- } | {
106
- type: 'line';
107
- x: number;
108
- y: number;
109
- } | {
110
- type: 'quad';
111
- cpx: number;
112
- cpy: number;
113
- x: number;
114
- y: number;
115
- } | {
116
- type: 'cubic';
117
- cp1x: number;
118
- cp1y: number;
119
- cp2x: number;
120
- cp2y: number;
121
- x: number;
122
- y: number;
123
- } | {
124
- type: 'close';
125
- };
126
138
 
127
139
  /**
128
- * Embedded images (`w:drawing` → `pic:pic`): size, wrap, position,
129
- * transform, padding, crop.
140
+ * Lists & Numbering Types
141
+ *
142
+ * Types for bullet lists, numbered lists, and numbering definitions.
130
143
  */
131
144
 
132
- /** One point in a `wp:wrapPolygon`, in the drawing's authored coordinates. */
133
- interface ImageWrapPoint {
134
- x?: number;
135
- y?: number;
136
- }
137
145
  /**
138
- * Image size specification
146
+ * Number format type
139
147
  */
140
- interface ImageSize {
141
- /** Width in EMUs (English Metric Units) */
142
- width: number;
143
- /** Height in EMUs */
144
- height: number;
145
- }
148
+ type NumberFormat = 'decimal' | 'upperRoman' | 'lowerRoman' | 'upperLetter' | 'lowerLetter' | 'ordinal' | 'cardinalText' | 'ordinalText' | 'hex' | 'chicago' | 'ideographDigital' | 'japaneseCounting' | 'aiueo' | 'iroha' | 'decimalFullWidth' | 'decimalHalfWidth' | 'japaneseLegal' | 'japaneseDigitalTenThousand' | 'decimalEnclosedCircle' | 'decimalFullWidth2' | 'aiueoFullWidth' | 'irohaFullWidth' | 'decimalZero' | 'decimalZero3' | 'decimalZero4' | 'decimalZero5' | 'bullet' | 'ganada' | 'chosung' | 'decimalEnclosedFullstop' | 'decimalEnclosedParen' | 'decimalEnclosedCircleChinese' | 'ideographEnclosedCircle' | 'ideographTraditional' | 'ideographZodiac' | 'ideographZodiacTraditional' | 'taiwaneseCounting' | 'ideographLegalTraditional' | 'taiwaneseCountingThousand' | 'taiwaneseDigital' | 'chineseCounting' | 'chineseLegalSimplified' | 'chineseCountingThousand' | 'koreanDigital' | 'koreanCounting' | 'koreanLegal' | 'koreanDigital2' | 'vietnameseCounting' | 'russianLower' | 'russianUpper' | 'none' | 'numberInDash' | 'hebrew1' | 'hebrew2' | 'arabicAlpha' | 'arabicAbjad' | 'hindiVowels' | 'hindiConsonants' | 'hindiNumbers' | 'hindiCounting' | 'thaiLetters' | 'thaiNumbers' | 'thaiCounting';
146
149
  /**
147
- * Image wrap type for floating images
150
+ * Multi-level suffix (what follows the number)
148
151
  */
149
- interface ImageWrap {
150
- type: WrapType;
151
- /** Wrap text direction */
152
- wrapText?: 'bothSides' | 'left' | 'right' | 'largest';
153
- /** Distance from text */
154
- distT?: number;
155
- distB?: number;
156
- distL?: number;
157
- distR?: number;
158
- /** Tight/through contour. Undefined = rectangular wrap. */
159
- polygon?: ImageWrapPoint[];
160
- }
152
+ type LevelSuffix = 'tab' | 'space' | 'nothing';
161
153
  /**
162
- * Position for floating images
154
+ * One indentation level of an abstract numbering definition (`w:lvl`).
155
+ * Carries the number format, the marker template (`lvlText` — e.g.
156
+ * `"%1.%2."`), the level's paragraph properties (indent, hanging) and
157
+ * character properties (font, size, color for the marker itself).
158
+ *
159
+ * `ilvl` ranges 0-8 in standard Word documents.
163
160
  */
164
- interface ImagePosition {
165
- /** Use `wp:simplePos` instead of positionH/V. Undefined = false. */
166
- useSimplePos?: boolean;
167
- /** `wp:simplePos` coordinates in EMUs. */
168
- simplePos?: {
169
- x?: number;
170
- y?: number;
171
- };
172
- /** Stable z-order (`wp:anchor/@relativeHeight`). Undefined = source order. */
173
- relativeHeight?: number;
174
- /** Behind-text plane (`wp:anchor/@behindDoc`). Undefined = false. */
175
- behindDoc?: boolean;
176
- /** Hidden drawing. Undefined = visible. */
177
- hidden?: boolean;
178
- /** Locked drawing metadata. Undefined = editable. */
179
- locked?: boolean;
180
- /** Horizontal positioning */
181
- horizontal: {
182
- relativeTo: 'character' | 'column' | 'insideMargin' | 'leftMargin' | 'margin' | 'outsideMargin' | 'page' | 'rightMargin';
183
- alignment?: 'left' | 'right' | 'center' | 'inside' | 'outside';
184
- posOffset?: number;
185
- };
186
- /** Vertical positioning */
187
- vertical: {
188
- relativeTo: 'insideMargin' | 'line' | 'margin' | 'outsideMargin' | 'page' | 'paragraph' | 'topMargin' | 'bottomMargin';
189
- alignment?: 'top' | 'bottom' | 'center' | 'inside' | 'outside';
190
- posOffset?: number;
161
+ interface ListLevel {
162
+ /** Level index (0-8) */
163
+ ilvl: number;
164
+ /** Starting number */
165
+ start?: number;
166
+ /** Number format */
167
+ numFmt: NumberFormat;
168
+ /** Level text (e.g., "%1." or "•") */
169
+ lvlText: string;
170
+ /** Justification */
171
+ lvlJc?: 'left' | 'center' | 'right';
172
+ /** Suffix after number */
173
+ suffix?: LevelSuffix;
174
+ /** Paragraph properties for this level */
175
+ pPr?: ParagraphFormatting;
176
+ /** Run properties for the number/bullet */
177
+ rPr?: TextFormatting;
178
+ /** Restart numbering from higher level */
179
+ lvlRestart?: number;
180
+ /** Is legal numbering style */
181
+ isLgl?: boolean;
182
+ /** Legacy settings */
183
+ legacy?: {
184
+ legacy?: boolean;
185
+ legacySpace?: number;
186
+ legacyIndent?: number;
191
187
  };
192
188
  }
193
189
  /**
194
- * Image transformation
190
+ * Abstract numbering definition (`w:abstractNum`) — the reusable template
191
+ * for a list: which `NumberFormat` at each indentation level, what
192
+ * marker text, what paragraph/character formatting. Multiple
193
+ * `NumberingInstance`s (`w:num`) can reference one abstract numbering
194
+ * to share the template while keeping independent counters.
195
+ *
196
+ * See ECMA-376 §17.9.
195
197
  */
196
- interface ImageTransform {
197
- /** Rotation in degrees */
198
- rotation?: number;
199
- /** Flip horizontal */
200
- flipH?: boolean;
201
- /** Flip vertical */
202
- flipV?: boolean;
203
- }
204
- /** Post-transform layout footprint, kept separate from the content frame. */
205
- interface ImageRotationBounds {
206
- width?: number;
207
- height?: number;
208
- offsetX?: number;
209
- offsetY?: number;
210
- }
211
- /** One ordered DrawingML blip effect. Unknown effects stay named and inert. */
212
- interface ImageEffect {
213
- kind?: 'brightnessContrast' | 'saturation' | 'grayscale' | 'biLevel' | 'colorChange' | 'duotone' | 'alpha' | 'blur' | 'unknown';
214
- amount?: number;
215
- threshold?: number;
216
- colors?: string[];
217
- rawName?: string;
218
- }
219
- /** Safe hyperlink metadata attached to picture non-visual properties. */
220
- interface ImageHyperlink {
221
- href?: string;
222
- tooltip?: string;
223
- target?: string;
224
- history?: boolean;
225
- docLocation?: string;
226
- }
227
- /**
228
- * Image padding/margins
229
- */
230
- interface ImagePadding {
231
- top?: number;
232
- bottom?: number;
233
- left?: number;
234
- right?: number;
235
- }
236
- /**
237
- * Image crop, expressed as fractions of the source image to trim from each
238
- * edge. OOXML's `<a:srcRect l="10000" t="0" r="5000" b="0"/>` uses units of
239
- * 1/100000 (so 10000 → 0.1 → 10% trimmed from the left). We store the
240
- * normalised fraction so both the renderer and the saver can read it
241
- * directly without re-parsing units.
242
- */
243
- interface ImageCrop {
244
- left?: number;
245
- top?: number;
246
- right?: number;
247
- bottom?: number;
248
- }
249
- /**
250
- * Embedded image (`w:drawing` with an inline or anchored picture). Carries
251
- * the relationship-id pointer to the binary in `word/media/`, its
252
- * resolved data URL (`src`), display dimensions, optional crop /
253
- * transform / wrap behaviors, and anchor positioning for floating
254
- * images.
255
- *
256
- * See ECMA-376 §20.4 (DrawingML wordprocessingDrawing).
257
- */
258
- interface Image {
259
- type: 'image';
260
- /** Unique ID */
261
- id?: string;
262
- /** Relationship ID for the image data */
263
- rId: string;
264
- /** Resolved image data (base64 or blob URL) */
265
- src?: string;
266
- /** Image MIME type */
267
- mimeType?: string;
268
- /** Original filename */
269
- filename?: string;
270
- /** Alt text for accessibility */
271
- alt?: string;
272
- /** Title/description */
273
- title?: string;
274
- /** Image size */
275
- size: ImageSize;
276
- /** Original size before any transforms */
277
- originalSize?: ImageSize;
278
- /** Wrap settings */
279
- wrap: ImageWrap;
280
- /** Position for floating images */
281
- position?: ImagePosition;
282
- /** Image transformations */
283
- transform?: ImageTransform;
284
- /** Padding around image */
285
- padding?: ImagePadding;
286
- /** Source-image crop (fractional, OOXML `a:srcRect`). */
287
- crop?: ImageCrop;
288
- /** Opacity in [0, 1] (OOXML `a:alphaModFix amt`). Undefined = fully opaque. */
289
- opacity?: number;
290
- /** Whether this is a decorative image */
291
- decorative?: boolean;
292
- /**
293
- * `wp:anchor layoutInCell` — when true (default), an anchored image inside
294
- * a table cell is constrained to the cell. When false, the image escapes
295
- * the cell into the page area. Round-tripped on save.
296
- */
297
- layoutInCell?: boolean;
298
- /**
299
- * `wp:anchor allowOverlap` — when true (default), anchored objects may
300
- * overlap; when false, Word repositions them to avoid collisions. We
301
- * don't currently reposition; we round-trip the flag so saving preserves
302
- * the author's intent.
303
- */
304
- allowOverlap?: boolean;
305
- /** Hyperlink URL for clickable image */
306
- hlinkHref?: string;
307
- /** Image outline/border */
308
- outline?: ShapeOutline;
309
- /** Image effects */
310
- effects?: {
311
- brightness?: number;
312
- contrast?: number;
313
- saturation?: number;
314
- /** Ordered blip-effect list. Undefined = legacy scalar effects only. */
315
- ordered?: ImageEffect[];
316
- };
317
- /** Rotated layout bbox. Undefined = use untransformed `size`. */
318
- rotationBounds?: ImageRotationBounds;
319
- /** Complete picture hyperlink metadata. Undefined = use `hlinkHref`. */
320
- hyperlink?: ImageHyperlink;
321
- /** Effect extents in EMUs. Undefined = no extra wrap/ink extent. */
322
- effectExtent?: ImagePadding;
323
- }
324
-
325
- /**
326
- * Lists & Numbering Types
327
- *
328
- * Types for bullet lists, numbered lists, and numbering definitions.
329
- */
330
-
331
- /**
332
- * Number format type
333
- */
334
- type NumberFormat = 'decimal' | 'upperRoman' | 'lowerRoman' | 'upperLetter' | 'lowerLetter' | 'ordinal' | 'cardinalText' | 'ordinalText' | 'hex' | 'chicago' | 'ideographDigital' | 'japaneseCounting' | 'aiueo' | 'iroha' | 'decimalFullWidth' | 'decimalHalfWidth' | 'japaneseLegal' | 'japaneseDigitalTenThousand' | 'decimalEnclosedCircle' | 'decimalFullWidth2' | 'aiueoFullWidth' | 'irohaFullWidth' | 'decimalZero' | 'decimalZero3' | 'decimalZero4' | 'decimalZero5' | 'bullet' | 'ganada' | 'chosung' | 'decimalEnclosedFullstop' | 'decimalEnclosedParen' | 'decimalEnclosedCircleChinese' | 'ideographEnclosedCircle' | 'ideographTraditional' | 'ideographZodiac' | 'ideographZodiacTraditional' | 'taiwaneseCounting' | 'ideographLegalTraditional' | 'taiwaneseCountingThousand' | 'taiwaneseDigital' | 'chineseCounting' | 'chineseLegalSimplified' | 'chineseCountingThousand' | 'koreanDigital' | 'koreanCounting' | 'koreanLegal' | 'koreanDigital2' | 'vietnameseCounting' | 'russianLower' | 'russianUpper' | 'none' | 'numberInDash' | 'hebrew1' | 'hebrew2' | 'arabicAlpha' | 'arabicAbjad' | 'hindiVowels' | 'hindiConsonants' | 'hindiNumbers' | 'hindiCounting' | 'thaiLetters' | 'thaiNumbers' | 'thaiCounting';
335
- /**
336
- * Multi-level suffix (what follows the number)
337
- */
338
- type LevelSuffix = 'tab' | 'space' | 'nothing';
339
- /**
340
- * One indentation level of an abstract numbering definition (`w:lvl`).
341
- * Carries the number format, the marker template (`lvlText` — e.g.
342
- * `"%1.%2."`), the level's paragraph properties (indent, hanging) and
343
- * character properties (font, size, color for the marker itself).
344
- *
345
- * `ilvl` ranges 0-8 in standard Word documents.
346
- */
347
- interface ListLevel {
348
- /** Level index (0-8) */
349
- ilvl: number;
350
- /** Starting number */
351
- start?: number;
352
- /** Number format */
353
- numFmt: NumberFormat;
354
- /** Level text (e.g., "%1." or "•") */
355
- lvlText: string;
356
- /** Justification */
357
- lvlJc?: 'left' | 'center' | 'right';
358
- /** Suffix after number */
359
- suffix?: LevelSuffix;
360
- /** Paragraph properties for this level */
361
- pPr?: ParagraphFormatting;
362
- /** Run properties for the number/bullet */
363
- rPr?: TextFormatting;
364
- /** Restart numbering from higher level */
365
- lvlRestart?: number;
366
- /** Is legal numbering style */
367
- isLgl?: boolean;
368
- /** Legacy settings */
369
- legacy?: {
370
- legacy?: boolean;
371
- legacySpace?: number;
372
- legacyIndent?: number;
373
- };
374
- }
375
- /**
376
- * Abstract numbering definition (`w:abstractNum`) — the reusable template
377
- * for a list: which `NumberFormat` at each indentation level, what
378
- * marker text, what paragraph/character formatting. Multiple
379
- * `NumberingInstance`s (`w:num`) can reference one abstract numbering
380
- * to share the template while keeping independent counters.
381
- *
382
- * See ECMA-376 §17.9.
383
- */
384
- interface AbstractNumbering {
385
- /** Abstract numbering ID */
386
- abstractNumId: number;
387
- /** Multi-level type */
388
- multiLevelType?: 'hybridMultilevel' | 'multilevel' | 'singleLevel';
389
- /** Numbering style link */
390
- numStyleLink?: string;
391
- /** Style link */
392
- styleLink?: string;
393
- /** Level definitions */
394
- levels: ListLevel[];
395
- /** Name */
396
- name?: string;
198
+ interface AbstractNumbering {
199
+ /** Abstract numbering ID */
200
+ abstractNumId: number;
201
+ /** Multi-level type */
202
+ multiLevelType?: 'hybridMultilevel' | 'multilevel' | 'singleLevel';
203
+ /** Numbering style link */
204
+ numStyleLink?: string;
205
+ /** Style link */
206
+ styleLink?: string;
207
+ /** Level definitions */
208
+ levels: ListLevel[];
209
+ /** Name */
210
+ name?: string;
397
211
  }
398
212
  /**
399
213
  * Numbering instance (w:num)
@@ -468,153 +282,42 @@ interface NumberingDefinitions {
468
282
  }
469
283
 
470
284
  /**
471
- * DrawingML chart model for basic rendered charts.
472
- *
473
- * This is intentionally normalized for display rather than lossless OOXML
474
- * round-trip. Unsupported chart families stay in the original package parts.
285
+ * Math equations (`m:oMath`, `m:oMathPara`). OMML XML is round-tripped
286
+ * verbatim to preserve fidelity Word/Pages/Docs can disagree on.
475
287
  */
288
+ /**
289
+ * Math equation content (m:oMath or m:oMathPara)
290
+ */
291
+ interface MathEquation {
292
+ type: 'mathEquation';
293
+ /** Whether this is a block (oMathPara) or inline (oMath) equation */
294
+ display: 'inline' | 'block';
295
+ /** Raw OMML XML for round-trip preservation */
296
+ ommlXml: string;
297
+ /** Plain text representation for accessibility/fallback */
298
+ plainText?: string;
299
+ }
476
300
 
477
- type ChartType = 'bar' | 'column' | 'line' | 'pie' | 'doughnut';
478
- type ChartGrouping = 'standard' | 'clustered' | 'stacked' | 'percentStacked';
479
- interface ChartPoint {
480
- index?: number;
481
- value?: number;
482
- category?: string;
483
- color?: string;
484
- explosion?: number;
485
- marker?: {
486
- symbol?: string;
487
- size?: number;
488
- color?: string;
489
- };
490
- label?: string;
491
- }
492
- interface ChartSeries {
493
- name?: string;
494
- categories: string[];
495
- values: number[];
496
- color?: string;
497
- index?: number;
498
- order?: number;
499
- categoryFormula?: string;
500
- valueFormula?: string;
501
- axisIds?: string[];
502
- points?: ChartPoint[];
503
- grouping?: ChartGrouping;
504
- marker?: {
505
- symbol?: string;
506
- size?: number;
507
- color?: string;
508
- };
509
- smooth?: boolean;
510
- }
511
- interface ChartAxis {
512
- id?: string;
513
- title?: string;
514
- min?: number;
515
- max?: number;
516
- labels?: string[];
517
- axisType?: 'category' | 'value' | 'date' | 'series';
518
- position?: 'left' | 'right' | 'top' | 'bottom';
519
- crossAxisId?: string;
520
- crosses?: 'autoZero' | 'min' | 'max' | 'value';
521
- crossesAt?: number;
522
- majorUnit?: number;
523
- minorUnit?: number;
524
- logarithmicBase?: number;
525
- reversed?: boolean;
526
- numberFormat?: string;
527
- majorTickMark?: string;
528
- minorTickMark?: string;
529
- tickLabelPosition?: string;
530
- hidden?: boolean;
531
- }
532
- /** One chart-family element inside `c:plotArea`. */
533
- interface ChartPlotGroup {
534
- chartType?: ChartType | 'area' | 'scatter' | 'radar' | 'stock' | 'bubble' | 'ofPie' | 'surface';
535
- grouping?: ChartGrouping;
536
- overlap?: number;
537
- gapWidth?: number;
538
- axisIds?: string[];
539
- series?: ChartSeries[];
540
- varyColors?: boolean;
541
- firstSliceAngle?: number;
542
- holeSize?: number;
543
- showDataLabels?: boolean;
544
- }
545
- interface ChartLegend {
546
- position?: 'left' | 'right' | 'top' | 'bottom';
547
- visible?: boolean;
548
- }
549
- interface Chart {
550
- type: 'chart';
551
- chartType: ChartType;
552
- /** Relationship id used by the owning drawing part. */
553
- rId?: string;
554
- /** Normalized package path, e.g. word/charts/chart1.xml. */
555
- path?: string;
556
- title?: string;
557
- legend?: ChartLegend;
558
- series: ChartSeries[];
559
- axes?: {
560
- category?: ChartAxis;
561
- value?: ChartAxis;
562
- };
563
- /** Drawing extent from wp:extent in EMUs. */
564
- size?: ImageSize;
565
- /** Wrap metadata from the containing drawing; v1 layout treats charts as inline blocks. */
566
- wrap?: ImageWrap;
567
- /** Floating anchor. Undefined = inline legacy behavior. */
568
- position?: ImagePosition;
569
- /** Multiple/combo plot groups. Undefined = synthesize one from legacy fields. */
570
- plotGroups?: ChartPlotGroup[];
571
- /** Complete axis collection keyed through plot-group `axisIds`. */
572
- axisList?: ChartAxis[];
573
- /** Chart accessibility description. */
574
- description?: string;
575
- /** Decorative flag. Undefined = false. */
576
- decorative?: boolean;
577
- /** Stable z-order for anchored charts. Undefined = source order. */
578
- relativeHeight?: number;
579
- }
580
-
581
- /**
582
- * Math equations (`m:oMath`, `m:oMathPara`). OMML XML is round-tripped
583
- * verbatim to preserve fidelity Word/Pages/Docs can disagree on.
584
- */
585
- /**
586
- * Math equation content (m:oMath or m:oMathPara)
587
- */
588
- interface MathEquation {
589
- type: 'mathEquation';
590
- /** Whether this is a block (oMathPara) or inline (oMath) equation */
591
- display: 'inline' | 'block';
592
- /** Raw OMML XML for round-trip preservation */
593
- ommlXml: string;
594
- /** Plain text representation for accessibility/fallback */
595
- plainText?: string;
596
- }
597
-
598
- /**
599
- * Tables (`w:tbl`), rows (`w:tr`), and cells (`w:tc`).
600
- */
601
-
602
- /**
603
- * Table cell (`w:tc`). Holds nested block content (paragraphs and nested
604
- * tables), cell-level formatting (borders, shading, vertical merge),
605
- * tracked property changes, and tracked structural changes for cell
606
- * insert/delete/merge operations.
607
- */
608
- interface TableCell {
609
- type: 'tableCell';
610
- /** Cell formatting */
611
- formatting?: TableCellFormatting;
612
- /** Cell-level tracked property changes (w:tcPrChange) */
613
- propertyChanges?: TableCellPropertyChange[];
614
- /** Tracked structural changes (cell insert/delete/merge) */
615
- structuralChange?: TableStructuralChangeInfo;
616
- /** Cell content (paragraphs, tables, etc.) */
617
- content: (Paragraph | Table)[];
301
+ /**
302
+ * Tables (`w:tbl`), rows (`w:tr`), and cells (`w:tc`).
303
+ */
304
+
305
+ /**
306
+ * Table cell (`w:tc`). Holds nested block content (paragraphs and nested
307
+ * tables), cell-level formatting (borders, shading, vertical merge),
308
+ * tracked property changes, and tracked structural changes for cell
309
+ * insert/delete/merge operations.
310
+ */
311
+ interface TableCell {
312
+ type: 'tableCell';
313
+ /** Cell formatting */
314
+ formatting?: TableCellFormatting;
315
+ /** Cell-level tracked property changes (w:tcPrChange) */
316
+ propertyChanges?: TableCellPropertyChange[];
317
+ /** Tracked structural changes (cell insert/delete/merge) */
318
+ structuralChange?: TableStructuralChangeInfo;
319
+ /** Cell content (paragraphs, tables, etc.) */
320
+ content: (Paragraph | Table)[];
618
321
  }
619
322
  /**
620
323
  * Table row (`w:tr`) — an ordered list of `TableCell` plus row-level
@@ -1958,151 +1661,6 @@ interface Paragraph {
1958
1661
  * Text body inside a shape (content typed as docx paragraphs)
1959
1662
  */
1960
1663
  type ShapeTextBody = ShapeTextBody$1<Paragraph>;
1961
- /** Detailed DrawingML paint server retained alongside the legacy shared fill. */
1962
- interface ShapeFillPaint {
1963
- kind?: 'none' | 'solid' | 'gradient' | 'pattern' | 'picture' | 'theme';
1964
- color?: ColorValue;
1965
- themeColor?: ThemeColorSlot;
1966
- gradientType?: 'linear' | 'path' | 'radial' | 'rectangular';
1967
- angle?: number;
1968
- stops?: Array<{
1969
- position?: number;
1970
- color?: ColorValue;
1971
- }>;
1972
- pathShape?: 'circle' | 'rect' | 'shape';
1973
- focusRect?: {
1974
- left?: number;
1975
- top?: number;
1976
- right?: number;
1977
- bottom?: number;
1978
- };
1979
- rotateWithShape?: boolean;
1980
- patternPreset?: string;
1981
- foregroundColor?: ColorValue;
1982
- backgroundColor?: ColorValue;
1983
- picture?: Image;
1984
- themeRefIndex?: number;
1985
- /** Picture-fill source crop fractions (`a:srcRect`, 0..1; negative = outset). */
1986
- srcRect?: {
1987
- left?: number;
1988
- top?: number;
1989
- right?: number;
1990
- bottom?: number;
1991
- };
1992
- /** Picture-fill mode: `a:stretch` (default) or `a:tile`. */
1993
- fillMode?: 'stretch' | 'tile';
1994
- /** Picture-fill tile parameters (`a:tile`). Offsets px, scales fractions. */
1995
- tile?: {
1996
- offsetX?: number;
1997
- offsetY?: number;
1998
- scaleX?: number;
1999
- scaleY?: number;
2000
- alignment?: string;
2001
- flip?: 'none' | 'x' | 'y' | 'xy';
2002
- };
2003
- /** Picture-fill stretch target rect fractions (`a:stretch/a:fillRect`, 0..1). */
2004
- stretchRect?: {
2005
- left?: number;
2006
- top?: number;
2007
- right?: number;
2008
- bottom?: number;
2009
- };
2010
- /** Picture-fill alpha 0..1 (`a:alphaModFix` on the blip). */
2011
- pictureOpacity?: number;
2012
- }
2013
- /** Detailed DrawingML line contract, including arrows and compound/custom dash. */
2014
- interface ShapeStrokePaint {
2015
- fill?: ShapeFillPaint;
2016
- width?: number;
2017
- dash?: string;
2018
- customDash?: number[];
2019
- compound?: 'single' | 'double' | 'thickThin' | 'thinThick' | 'triple';
2020
- alignment?: 'center' | 'inset';
2021
- cap?: 'flat' | 'round' | 'square';
2022
- join?: 'bevel' | 'miter' | 'round';
2023
- miterLimit?: number;
2024
- headEnd?: {
2025
- type?: string;
2026
- width?: string;
2027
- length?: string;
2028
- };
2029
- tailEnd?: {
2030
- type?: string;
2031
- width?: string;
2032
- length?: string;
2033
- };
2034
- themeRefIndex?: number;
2035
- }
2036
- /** Common 2-D shape effect. Missing parameters mean the OOXML default. */
2037
- interface ShapeEffect {
2038
- kind?: 'shadow' | 'glow' | 'reflection' | 'softEdge' | 'blur' | 'unknown';
2039
- color?: ColorValue;
2040
- opacity?: number;
2041
- blurRadius?: number;
2042
- distance?: number;
2043
- direction?: number;
2044
- size?: number;
2045
- rawName?: string;
2046
- }
2047
- /** Full `a:bodyPr` projection used by text-body/autofit layout. */
2048
- interface ShapeTextBodyProperties {
2049
- vertical?: 'horizontal' | 'vertical' | 'vertical270' | 'wordArtVertical' | 'eastAsianVertical' | 'mongolianVertical';
2050
- rotation?: number;
2051
- upright?: boolean;
2052
- anchor?: 'top' | 'middle' | 'bottom' | 'distributed' | 'justified';
2053
- anchorCenter?: boolean;
2054
- columns?: number;
2055
- columnSpacing?: number;
2056
- wrap?: 'square' | 'none';
2057
- horizontalOverflow?: 'clip' | 'overflow';
2058
- verticalOverflow?: 'clip' | 'ellipsis' | 'overflow';
2059
- margins?: {
2060
- top?: number;
2061
- bottom?: number;
2062
- left?: number;
2063
- right?: number;
2064
- };
2065
- autoFit?: 'none' | 'normal' | 'shape';
2066
- fontScale?: number;
2067
- lineSpacingReduction?: number;
2068
- fromWordArt?: boolean;
2069
- presetTextWarp?: string;
2070
- }
2071
- /** Heterogeneous DrawingML group/canvas scene node. */
2072
- interface DrawingSceneNode {
2073
- kind?: 'shape' | 'group' | 'canvas' | 'picture' | 'chart' | 'graphicFrame' | 'contentPart';
2074
- id?: string;
2075
- name?: string;
2076
- shape?: Shape;
2077
- image?: Image;
2078
- chart?: Chart;
2079
- children?: DrawingSceneNode[];
2080
- transform?: {
2081
- offsetX?: number;
2082
- offsetY?: number;
2083
- width?: number;
2084
- height?: number;
2085
- childOffsetX?: number;
2086
- childOffsetY?: number;
2087
- childWidth?: number;
2088
- childHeight?: number;
2089
- rotation?: number;
2090
- flipH?: boolean;
2091
- flipV?: boolean;
2092
- };
2093
- fill?: ShapeFillPaint;
2094
- effects?: ShapeEffect[];
2095
- relationshipId?: string;
2096
- }
2097
- /** Versioned general DrawingML scene. Undefined version reads as legacy v0. */
2098
- interface DrawingScene {
2099
- version?: number;
2100
- root?: DrawingSceneNode;
2101
- title?: string;
2102
- description?: string;
2103
- decorative?: boolean;
2104
- hidden?: boolean;
2105
- }
2106
1664
  /**
2107
1665
  * Shape/drawing object (wps:wsp)
2108
1666
  */
@@ -2199,4 +1757,313 @@ interface TextBox {
2199
1757
  bodyProperties?: ShapeTextBodyProperties;
2200
1758
  }
2201
1759
 
2202
- export { type FieldType as $, type AbstractNumbering as A, type BlockContent as B, type CellMarker as C, type DrawingScene as D, type EndnoteProperties as E, type FootnoteProperties as F, type CommentAuthor as G, type HeaderFooter as H, type CommentRangeEnd as I, type CommentRangeStart as J, type CommentReferenceContent as K, type ComplexField as L, type ContentPosition as M, type NoteKind as N, DEFAULT_WATERMARK_PRESETS as O, type PresetGeometryPathCommand as P, type Deletion as Q, type RevisionInfo as R, type SectionProperties as S, type DrawingContent as T, type DrawingSceneNode as U, type EndnotePosition as V, type Watermark as W, type Field as X, type FieldCharContent as Y, type FieldFormData as Z, type FieldInlineContent as _, type SdtControlState as a, type SimpleField as a$, type FooterReference as a0, type FootnotePosition as a1, type HeaderFooterType as a2, type HeaderReference as a3, type Hyperlink as a4, type HyperlinkContent as a5, type Image as a6, type ImageCrop as a7, type ImageEffect as a8, type ImageHyperlink as a9, type NumberFormat as aA, type NumberingInstance as aB, type PageNumberingProperties as aC, type PageOrientation as aD, type ParagraphContent as aE, type ParagraphPropertyChange as aF, type PictureWatermark as aG, type PropertyChangeInfo as aH, type Run as aI, type RunContent as aJ, type RunPropertyChange as aK, type SdtCheckboxGlyph as aL, type SdtDataBinding as aM, type SdtDateState as aN, type SdtGalleryState as aO, type SdtType as aP, type Section as aQ, type SectionStart as aR, type SeparatorContent as aS, type Shape as aT, type ShapeContent as aU, type ShapeFill as aV, type ShapeFillPaint as aW, type ShapeOutline as aX, type ShapeStrokePaint as aY, type ShapeTextBody as aZ, type ShapeType as a_, type ImagePadding as aa, type ImagePosition as ab, type ImageRotationBounds as ac, type ImageSize as ad, type ImageTransform as ae, type ImageWrap as af, type ImageWrapPoint as ag, type InlineSdt as ah, type Insertion as ai, type InstrTextContent as aj, type LevelSuffix as ak, type LineNumberRestart as al, type ListLevel as am, type ListRendering as an, type MathEquation as ao, type MoveFrom as ap, type MoveFromRangeEnd as aq, type MoveFromRangeStart as ar, type MoveTo as as, type MoveToRangeEnd as at, type MoveToRangeStart as au, type NoBreakHyphenContent as av, type NoteNumberRestart as aw, type NoteRefMarkContent as ax, type NoteReferenceContent as ay, type NoteSeparatorReference as az, type SdtProperties as b, type SoftHyphenContent as b0, type StructuredFieldContent as b1, type StructuredFieldTree as b2, type SymbolContent as b3, type TabContent as b4, type Table as b5, type TableCell as b6, type TableCellPropertyChange as b7, type TablePropertyChange as b8, type TableRow as b9, type TableRowPropertyChange as ba, type TableStructuralChangeInfo as bb, type TextBox as bc, type TextContent as bd, type TextWatermark as be, type TrackedChangeInfo as bf, type TrackedRunChange as bg, type VerticalAlign as bh, pictureWatermarkDisplayEmu as bi, type ShapeEffect as c, type ShapeTextBodyProperties as d, type Chart as e, type Paragraph as f, type Comment as g, type DocumentBody as h, type NumberingDefinitions as i, type Footnote as j, type Endnote as k, type BookmarkRange as l, type BlockSdt as m, type BookmarkEnd as n, type BookmarkStart as o, type BreakContent as p, type ChartAxis as q, type ChartContent as r, type ChartGrouping as s, type ChartLegend as t, type ChartPlotGroup as u, type ChartPoint as v, type ChartSeries as w, type ChartType as x, type Column as y, type CommentAnchorRange as z };
1760
+ /**
1761
+ * Embedded images (`w:drawing` → `pic:pic`): size, wrap, position,
1762
+ * transform, padding, crop.
1763
+ */
1764
+
1765
+ /** One point in a `wp:wrapPolygon`, in the drawing's authored coordinates. */
1766
+ interface ImageWrapPoint {
1767
+ x?: number;
1768
+ y?: number;
1769
+ }
1770
+ /**
1771
+ * Image size specification
1772
+ */
1773
+ interface ImageSize {
1774
+ /** Width in EMUs (English Metric Units) */
1775
+ width: number;
1776
+ /** Height in EMUs */
1777
+ height: number;
1778
+ }
1779
+ /**
1780
+ * Image wrap type for floating images
1781
+ */
1782
+ interface ImageWrap {
1783
+ type: WrapType;
1784
+ /** Wrap text direction */
1785
+ wrapText?: 'bothSides' | 'left' | 'right' | 'largest';
1786
+ /** Distance from text */
1787
+ distT?: number;
1788
+ distB?: number;
1789
+ distL?: number;
1790
+ distR?: number;
1791
+ /** Tight/through contour. Undefined = rectangular wrap. */
1792
+ polygon?: ImageWrapPoint[];
1793
+ }
1794
+ /**
1795
+ * Position for floating images
1796
+ */
1797
+ interface ImagePosition {
1798
+ /** Use `wp:simplePos` instead of positionH/V. Undefined = false. */
1799
+ useSimplePos?: boolean;
1800
+ /** `wp:simplePos` coordinates in EMUs. */
1801
+ simplePos?: {
1802
+ x?: number;
1803
+ y?: number;
1804
+ };
1805
+ /** Stable z-order (`wp:anchor/@relativeHeight`). Undefined = source order. */
1806
+ relativeHeight?: number;
1807
+ /** Behind-text plane (`wp:anchor/@behindDoc`). Undefined = false. */
1808
+ behindDoc?: boolean;
1809
+ /** Hidden drawing. Undefined = visible. */
1810
+ hidden?: boolean;
1811
+ /** Locked drawing metadata. Undefined = editable. */
1812
+ locked?: boolean;
1813
+ /** Horizontal positioning */
1814
+ horizontal: {
1815
+ relativeTo: 'character' | 'column' | 'insideMargin' | 'leftMargin' | 'margin' | 'outsideMargin' | 'page' | 'rightMargin';
1816
+ alignment?: 'left' | 'right' | 'center' | 'inside' | 'outside';
1817
+ posOffset?: number;
1818
+ };
1819
+ /** Vertical positioning */
1820
+ vertical: {
1821
+ relativeTo: 'insideMargin' | 'line' | 'margin' | 'outsideMargin' | 'page' | 'paragraph' | 'topMargin' | 'bottomMargin';
1822
+ alignment?: 'top' | 'bottom' | 'center' | 'inside' | 'outside';
1823
+ posOffset?: number;
1824
+ };
1825
+ }
1826
+ /**
1827
+ * Image transformation
1828
+ */
1829
+ interface ImageTransform {
1830
+ /** Rotation in degrees */
1831
+ rotation?: number;
1832
+ /** Flip horizontal */
1833
+ flipH?: boolean;
1834
+ /** Flip vertical */
1835
+ flipV?: boolean;
1836
+ }
1837
+ /** Post-transform layout footprint, kept separate from the content frame. */
1838
+ interface ImageRotationBounds {
1839
+ width?: number;
1840
+ height?: number;
1841
+ offsetX?: number;
1842
+ offsetY?: number;
1843
+ }
1844
+ /** One ordered DrawingML blip effect. Unknown effects stay named and inert. */
1845
+ interface ImageEffect {
1846
+ kind?: 'brightnessContrast' | 'saturation' | 'grayscale' | 'biLevel' | 'colorChange' | 'duotone' | 'alpha' | 'blur' | 'unknown';
1847
+ amount?: number;
1848
+ threshold?: number;
1849
+ colors?: string[];
1850
+ rawName?: string;
1851
+ }
1852
+ /** Safe hyperlink metadata attached to picture non-visual properties. */
1853
+ interface ImageHyperlink {
1854
+ href?: string;
1855
+ tooltip?: string;
1856
+ target?: string;
1857
+ history?: boolean;
1858
+ docLocation?: string;
1859
+ }
1860
+ /**
1861
+ * Image padding/margins
1862
+ */
1863
+ interface ImagePadding {
1864
+ top?: number;
1865
+ bottom?: number;
1866
+ left?: number;
1867
+ right?: number;
1868
+ }
1869
+ /**
1870
+ * Image crop, expressed as fractions of the source image to trim from each
1871
+ * edge. OOXML's `<a:srcRect l="10000" t="0" r="5000" b="0"/>` uses units of
1872
+ * 1/100000 (so 10000 → 0.1 → 10% trimmed from the left). We store the
1873
+ * normalised fraction so both the renderer and the saver can read it
1874
+ * directly without re-parsing units.
1875
+ */
1876
+ interface ImageCrop {
1877
+ left?: number;
1878
+ top?: number;
1879
+ right?: number;
1880
+ bottom?: number;
1881
+ }
1882
+ /**
1883
+ * Embedded image (`w:drawing` with an inline or anchored picture). Carries
1884
+ * the relationship-id pointer to the binary in `word/media/`, its
1885
+ * resolved data URL (`src`), display dimensions, optional crop /
1886
+ * transform / wrap behaviors, and anchor positioning for floating
1887
+ * images.
1888
+ *
1889
+ * See ECMA-376 §20.4 (DrawingML wordprocessingDrawing).
1890
+ */
1891
+ interface Image {
1892
+ type: 'image';
1893
+ /** Unique ID */
1894
+ id?: string;
1895
+ /** Relationship ID for the image data */
1896
+ rId: string;
1897
+ /** Resolved image data (base64 or blob URL) */
1898
+ src?: string;
1899
+ /** Image MIME type */
1900
+ mimeType?: string;
1901
+ /** Original filename */
1902
+ filename?: string;
1903
+ /** Alt text for accessibility */
1904
+ alt?: string;
1905
+ /** Title/description */
1906
+ title?: string;
1907
+ /** Image size */
1908
+ size: ImageSize;
1909
+ /** Original size before any transforms */
1910
+ originalSize?: ImageSize;
1911
+ /** Wrap settings */
1912
+ wrap: ImageWrap;
1913
+ /** Position for floating images */
1914
+ position?: ImagePosition;
1915
+ /** Image transformations */
1916
+ transform?: ImageTransform;
1917
+ /** Padding around image */
1918
+ padding?: ImagePadding;
1919
+ /** Source-image crop (fractional, OOXML `a:srcRect`). */
1920
+ crop?: ImageCrop;
1921
+ /** Opacity in [0, 1] (OOXML `a:alphaModFix amt`). Undefined = fully opaque. */
1922
+ opacity?: number;
1923
+ /** Whether this is a decorative image */
1924
+ decorative?: boolean;
1925
+ /**
1926
+ * `wp:anchor layoutInCell` — when true (default), an anchored image inside
1927
+ * a table cell is constrained to the cell. When false, the image escapes
1928
+ * the cell into the page area. Round-tripped on save.
1929
+ */
1930
+ layoutInCell?: boolean;
1931
+ /**
1932
+ * `wp:anchor allowOverlap` — when true (default), anchored objects may
1933
+ * overlap; when false, Word repositions them to avoid collisions. We
1934
+ * don't currently reposition; we round-trip the flag so saving preserves
1935
+ * the author's intent.
1936
+ */
1937
+ allowOverlap?: boolean;
1938
+ /** Hyperlink URL for clickable image */
1939
+ hlinkHref?: string;
1940
+ /** Image outline/border */
1941
+ outline?: ShapeOutline;
1942
+ /** Image effects */
1943
+ effects?: {
1944
+ brightness?: number;
1945
+ contrast?: number;
1946
+ saturation?: number;
1947
+ /** Ordered blip-effect list. Undefined = legacy scalar effects only. */
1948
+ ordered?: ImageEffect[];
1949
+ };
1950
+ /** Rotated layout bbox. Undefined = use untransformed `size`. */
1951
+ rotationBounds?: ImageRotationBounds;
1952
+ /** Complete picture hyperlink metadata. Undefined = use `hlinkHref`. */
1953
+ hyperlink?: ImageHyperlink;
1954
+ /** Effect extents in EMUs. Undefined = no extra wrap/ink extent. */
1955
+ effectExtent?: ImagePadding;
1956
+ }
1957
+
1958
+ /**
1959
+ * DrawingML chart model for basic rendered charts.
1960
+ *
1961
+ * This is intentionally normalized for display rather than lossless OOXML
1962
+ * round-trip. Unsupported chart families stay in the original package parts.
1963
+ */
1964
+
1965
+ type ChartType = 'bar' | 'column' | 'line' | 'pie' | 'doughnut';
1966
+ type ChartGrouping = 'standard' | 'clustered' | 'stacked' | 'percentStacked';
1967
+ interface ChartPoint {
1968
+ index?: number;
1969
+ value?: number;
1970
+ category?: string;
1971
+ color?: string;
1972
+ explosion?: number;
1973
+ marker?: {
1974
+ symbol?: string;
1975
+ size?: number;
1976
+ color?: string;
1977
+ };
1978
+ label?: string;
1979
+ }
1980
+ interface ChartSeries {
1981
+ name?: string;
1982
+ categories: string[];
1983
+ values: number[];
1984
+ color?: string;
1985
+ index?: number;
1986
+ order?: number;
1987
+ categoryFormula?: string;
1988
+ valueFormula?: string;
1989
+ axisIds?: string[];
1990
+ points?: ChartPoint[];
1991
+ grouping?: ChartGrouping;
1992
+ marker?: {
1993
+ symbol?: string;
1994
+ size?: number;
1995
+ color?: string;
1996
+ };
1997
+ smooth?: boolean;
1998
+ }
1999
+ interface ChartAxis {
2000
+ id?: string;
2001
+ title?: string;
2002
+ min?: number;
2003
+ max?: number;
2004
+ labels?: string[];
2005
+ axisType?: 'category' | 'value' | 'date' | 'series';
2006
+ position?: 'left' | 'right' | 'top' | 'bottom';
2007
+ crossAxisId?: string;
2008
+ crosses?: 'autoZero' | 'min' | 'max' | 'value';
2009
+ crossesAt?: number;
2010
+ majorUnit?: number;
2011
+ minorUnit?: number;
2012
+ logarithmicBase?: number;
2013
+ reversed?: boolean;
2014
+ numberFormat?: string;
2015
+ majorTickMark?: string;
2016
+ minorTickMark?: string;
2017
+ tickLabelPosition?: string;
2018
+ hidden?: boolean;
2019
+ }
2020
+ /** One chart-family element inside `c:plotArea`. */
2021
+ interface ChartPlotGroup {
2022
+ chartType?: ChartType | 'area' | 'scatter' | 'radar' | 'stock' | 'bubble' | 'ofPie' | 'surface';
2023
+ grouping?: ChartGrouping;
2024
+ overlap?: number;
2025
+ gapWidth?: number;
2026
+ axisIds?: string[];
2027
+ series?: ChartSeries[];
2028
+ varyColors?: boolean;
2029
+ firstSliceAngle?: number;
2030
+ holeSize?: number;
2031
+ showDataLabels?: boolean;
2032
+ }
2033
+ interface ChartLegend {
2034
+ position?: 'left' | 'right' | 'top' | 'bottom';
2035
+ visible?: boolean;
2036
+ }
2037
+ interface Chart {
2038
+ type: 'chart';
2039
+ chartType: ChartType;
2040
+ /** Relationship id used by the owning drawing part. */
2041
+ rId?: string;
2042
+ /** Normalized package path, e.g. word/charts/chart1.xml. */
2043
+ path?: string;
2044
+ title?: string;
2045
+ legend?: ChartLegend;
2046
+ series: ChartSeries[];
2047
+ axes?: {
2048
+ category?: ChartAxis;
2049
+ value?: ChartAxis;
2050
+ };
2051
+ /** Drawing extent from wp:extent in EMUs. */
2052
+ size?: ImageSize;
2053
+ /** Wrap metadata from the containing drawing; v1 layout treats charts as inline blocks. */
2054
+ wrap?: ImageWrap;
2055
+ /** Floating anchor. Undefined = inline legacy behavior. */
2056
+ position?: ImagePosition;
2057
+ /** Multiple/combo plot groups. Undefined = synthesize one from legacy fields. */
2058
+ plotGroups?: ChartPlotGroup[];
2059
+ /** Complete axis collection keyed through plot-group `axisIds`. */
2060
+ axisList?: ChartAxis[];
2061
+ /** Chart accessibility description. */
2062
+ description?: string;
2063
+ /** Decorative flag. Undefined = false. */
2064
+ decorative?: boolean;
2065
+ /** Stable z-order for anchored charts. Undefined = source order. */
2066
+ relativeHeight?: number;
2067
+ }
2068
+
2069
+ export { type FooterReference as $, type AbstractNumbering as A, type BlockContent as B, type CellMarker as C, type DrawingScene as D, type EndnoteProperties as E, type FootnoteProperties as F, type CommentRangeEnd as G, type HeaderFooter as H, type CommentRangeStart as I, type CommentReferenceContent as J, type ComplexField as K, type ContentPosition as L, DEFAULT_WATERMARK_PRESETS as M, type NoteKind as N, type Deletion as O, type Paragraph as P, type DrawingContent as Q, type RevisionInfo as R, type SectionProperties as S, type DrawingSceneNode as T, type EndnotePosition as U, type Field as V, type Watermark as W, type FieldCharContent as X, type FieldFormData as Y, type FieldInlineContent as Z, type FieldType as _, type SdtControlState as a, type SymbolContent as a$, type FootnotePosition as a0, type HeaderFooterType as a1, type HeaderReference as a2, type Hyperlink as a3, type HyperlinkContent as a4, type Image as a5, type ImageCrop as a6, type ImageEffect as a7, type ImageHyperlink as a8, type ImagePadding as a9, type NumberingInstance as aA, type PageNumberingProperties as aB, type PageOrientation as aC, type ParagraphContent as aD, type ParagraphPropertyChange as aE, type PictureWatermark as aF, type PropertyChangeInfo as aG, type Run as aH, type RunContent as aI, type RunPropertyChange as aJ, type SdtCheckboxGlyph as aK, type SdtDataBinding as aL, type SdtDateState as aM, type SdtGalleryState as aN, type SdtType as aO, type Section as aP, type SectionStart as aQ, type SeparatorContent as aR, type Shape as aS, type ShapeContent as aT, type ShapeFillPaint as aU, type ShapeStrokePaint as aV, type ShapeTextBody as aW, type SimpleField as aX, type SoftHyphenContent as aY, type StructuredFieldContent as aZ, type StructuredFieldTree as a_, type ImagePosition as aa, type ImageRotationBounds as ab, type ImageSize as ac, type ImageTransform as ad, type ImageWrap as ae, type ImageWrapPoint as af, type InlineSdt as ag, type Insertion as ah, type InstrTextContent as ai, type LevelSuffix as aj, type LineNumberRestart as ak, type ListLevel as al, type ListRendering as am, type MathEquation as an, type MoveFrom as ao, type MoveFromRangeEnd as ap, type MoveFromRangeStart as aq, type MoveTo as ar, type MoveToRangeEnd as as, type MoveToRangeStart as at, type NoBreakHyphenContent as au, type NoteNumberRestart as av, type NoteRefMarkContent as aw, type NoteReferenceContent as ax, type NoteSeparatorReference as ay, type NumberFormat as az, type SdtProperties as b, type TabContent as b0, type Table as b1, type TableCell as b2, type TableCellPropertyChange as b3, type TablePropertyChange as b4, type TableRow as b5, type TableRowPropertyChange as b6, type TableStructuralChangeInfo as b7, type TextBox as b8, type TextContent as b9, type TextWatermark as ba, type TrackedChangeInfo as bb, type TrackedRunChange as bc, type VerticalAlign as bd, pictureWatermarkDisplayEmu as be, type ShapeEffect as c, type ShapeTextBodyProperties as d, type Chart as e, type Comment as f, type DocumentBody as g, type NumberingDefinitions as h, type Footnote as i, type Endnote as j, type BookmarkRange as k, type BlockSdt as l, type BookmarkEnd as m, type BookmarkStart as n, type BreakContent as o, type ChartAxis as p, type ChartContent as q, type ChartGrouping as r, type ChartLegend as s, type ChartPlotGroup as t, type ChartPoint as u, type ChartSeries as v, type ChartType as w, type Column as x, type CommentAnchorRange as y, type CommentAuthor as z };