@silurus/ooxml 0.68.0 → 0.70.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +115 -9
- package/dist/docx-DkL5ADAb.js +3894 -0
- package/dist/docx.mjs +3 -3
- package/dist/docx_parser_bg.wasm +0 -0
- package/dist/index.mjs +3 -3
- package/dist/{src-dTwJJJoi.js → line-metrics-DG9p1RvA.js} +3592 -6462
- package/dist/math.mjs +18 -18
- package/dist/mathjax-stix2.js +15 -0
- package/dist/pptx-BU8N1QPE.js +3324 -0
- package/dist/pptx.mjs +3 -3
- package/dist/pptx_parser_bg.wasm +0 -0
- package/dist/render-worker-host-2V2UCnvB.js +27 -0
- package/dist/render-worker-host-BcmXt3yA.js +27 -0
- package/dist/render-worker-host-UUYE6Oqt.js +27 -0
- package/dist/segments-BTivjRMw.js +7 -0
- package/dist/types/docx.d.ts +602 -2
- package/dist/types/index.d.ts +1396 -351
- package/dist/types/pptx.d.ts +616 -108
- package/dist/types/xlsx.d.ts +606 -206
- package/dist/virtual-scroll-CsikPntn.js +873 -0
- package/dist/visible-index-B4ljB_dg.js +1266 -0
- package/dist/xlsx-CCmtIDr_.js +4274 -0
- package/dist/xlsx.mjs +2 -2
- package/dist/xlsx_parser_bg.wasm +0 -0
- package/package.json +14 -6
- package/dist/docx-ax5d8q4F.js +0 -3166
- package/dist/pptx-10-ZMrrs.js +0 -2066
- package/dist/render-worker-host-CZjrumRh.js +0 -27
- package/dist/render-worker-host-ClhHaLeZ.js +0 -27
- package/dist/render-worker-host-DW2Upw5x.js +0 -27
- package/dist/xlsx-BAnsE-gd.js +0 -4233
- /package/dist/{mathjax-Q1s8_eMq.js → mathjax-BRfWlbSJ.js} +0 -0
package/dist/types/xlsx.d.ts
CHANGED
|
@@ -206,166 +206,397 @@ export declare interface ChartAnchor {
|
|
|
206
206
|
toColOff: number;
|
|
207
207
|
toRow: number;
|
|
208
208
|
toRowOff: number;
|
|
209
|
-
chart
|
|
209
|
+
/** The chart payload, already in the canonical {@link ChartModel} shape the
|
|
210
|
+
* Rust parser emits. The parser adapts its internal parse structure into
|
|
211
|
+
* `ChartModel` (formerly the TS `adaptChartData`); this is passed straight
|
|
212
|
+
* to `renderChart`. */
|
|
213
|
+
chart: ChartModel;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
export declare interface ChartDataLabelOverride {
|
|
217
|
+
idx: number;
|
|
218
|
+
/** Empty string = label deleted (skip drawing). */
|
|
219
|
+
text: string;
|
|
220
|
+
/** "l"|"r"|"t"|"b"|"ctr"|"outEnd"|"bestFit". undefined = inherit. */
|
|
221
|
+
position?: string;
|
|
222
|
+
fontColor?: string;
|
|
223
|
+
fontSizeHpt?: number;
|
|
224
|
+
/** `<a:defRPr b="1">` inside the per-idx rich text. */
|
|
225
|
+
fontBold?: boolean;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
export declare interface ChartDataPointOverride {
|
|
229
|
+
idx: number;
|
|
230
|
+
/** Resolved fill hex (no `#`). */
|
|
231
|
+
color?: string;
|
|
232
|
+
markerSymbol?: string;
|
|
233
|
+
markerSize?: number;
|
|
234
|
+
markerFill?: string;
|
|
235
|
+
markerLine?: string;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
export declare interface ChartErrBars {
|
|
239
|
+
/** "x" | "y". */
|
|
240
|
+
dir: string;
|
|
241
|
+
/** "plus" | "minus" | "both". */
|
|
242
|
+
barType: string;
|
|
243
|
+
plus: (number | null)[];
|
|
244
|
+
minus: (number | null)[];
|
|
245
|
+
noEndCap: boolean;
|
|
246
|
+
/** Resolved hex (no `#`). */
|
|
247
|
+
color?: string;
|
|
248
|
+
lineWidthEmu?: number;
|
|
249
|
+
/** "solid"|"dash"|"dot"|"dashDot"|... */
|
|
250
|
+
dash?: string;
|
|
210
251
|
}
|
|
211
252
|
|
|
212
253
|
/**
|
|
213
|
-
*
|
|
214
|
-
*
|
|
215
|
-
*
|
|
254
|
+
* `<c:manualLayout>` block. Fractions are of the chart-space rect.
|
|
255
|
+
* `xMode`/`yMode`: "edge" = absolute fraction from top-left, "factor" =
|
|
256
|
+
* fraction offset from default position.
|
|
216
257
|
*/
|
|
217
|
-
export declare interface
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
258
|
+
export declare interface ChartManualLayout {
|
|
259
|
+
xMode: string;
|
|
260
|
+
yMode: string;
|
|
261
|
+
layoutTarget?: string;
|
|
262
|
+
x: number;
|
|
263
|
+
y: number;
|
|
264
|
+
w?: number;
|
|
265
|
+
h?: number;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
export declare interface ChartModel {
|
|
269
|
+
chartType: ChartType;
|
|
224
270
|
title: string | null;
|
|
225
271
|
categories: string[];
|
|
226
|
-
series:
|
|
227
|
-
/**
|
|
228
|
-
showDataLabels
|
|
229
|
-
/**
|
|
230
|
-
|
|
231
|
-
/**
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
/**
|
|
247
|
-
|
|
248
|
-
/**
|
|
249
|
-
|
|
250
|
-
/**
|
|
251
|
-
|
|
252
|
-
/**
|
|
253
|
-
|
|
254
|
-
/**
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
/**
|
|
272
|
+
series: ChartSeries[];
|
|
273
|
+
/** Show data labels on bars / points / slices. */
|
|
274
|
+
showDataLabels: boolean;
|
|
275
|
+
/** Explicit Y-axis minimum (OOXML `<c:valAx><c:min>`). */
|
|
276
|
+
valMin: number | null;
|
|
277
|
+
/** Explicit Y-axis maximum (OOXML `<c:valAx><c:max>`). */
|
|
278
|
+
valMax: number | null;
|
|
279
|
+
catAxisTitle: string | null;
|
|
280
|
+
valAxisTitle: string | null;
|
|
281
|
+
/** `<c:catAx><c:delete val="1"/>`. */
|
|
282
|
+
catAxisHidden: boolean;
|
|
283
|
+
/** `<c:valAx><c:delete val="1"/>`. */
|
|
284
|
+
valAxisHidden: boolean;
|
|
285
|
+
/** `<c:catAx><c:spPr><a:ln><a:noFill>` — hide just the axis LINE; labels
|
|
286
|
+
* and tick marks still render. Distinct from `catAxisHidden` (which
|
|
287
|
+
* removes everything via `<c:delete val="1"/>`). */
|
|
288
|
+
catAxisLineHidden: boolean;
|
|
289
|
+
/** `<c:valAx><c:spPr><a:ln><a:noFill>` — hide just the axis LINE; labels
|
|
290
|
+
* and tick marks still render. */
|
|
291
|
+
valAxisLineHidden: boolean;
|
|
292
|
+
/** Hex without '#'. From `<c:plotArea><c:spPr><a:solidFill>`. */
|
|
293
|
+
plotAreaBg: string | null;
|
|
294
|
+
/** Outer chartSpace background (hex without '#'). null when noFill/absent. */
|
|
295
|
+
chartBg: string | null;
|
|
296
|
+
/** True when `<c:legend>` is declared in the chart XML. False = no legend. */
|
|
297
|
+
showLegend: boolean;
|
|
298
|
+
/** `<c:legend><c:legendPos val>` — "r"|"l"|"t"|"b"|"tr". null = default (r). */
|
|
299
|
+
legendPos: 'r' | 'l' | 't' | 'b' | 'tr' | null;
|
|
300
|
+
/** `<c:catAx><c:crossBetween val="..."/>`. "between" inserts 0.5-step padding
|
|
301
|
+
* on each end of the category axis; "midCat" anchors endpoints to the axes. */
|
|
302
|
+
catAxisCrossBetween: 'between' | 'midCat' | string;
|
|
303
|
+
/** `<c:valAx><c:majorTickMark>`. ECMA-376 default is "cross". */
|
|
304
|
+
valAxisMajorTickMark: 'cross' | 'out' | 'in' | 'none' | string;
|
|
305
|
+
/** `<c:catAx><c:majorTickMark>`. */
|
|
306
|
+
catAxisMajorTickMark: 'cross' | 'out' | 'in' | 'none' | string;
|
|
307
|
+
/** `<c:valAx | catAx><c:minorTickMark>`. ECMA-376 default is "none". */
|
|
308
|
+
valAxisMinorTickMark?: 'cross' | 'out' | 'in' | 'none' | string | null;
|
|
309
|
+
catAxisMinorTickMark?: 'cross' | 'out' | 'in' | 'none' | string | null;
|
|
310
|
+
/** Title font size in OOXML hundredths of a point (1600 = 16pt). null = default. */
|
|
311
|
+
titleFontSizeHpt: number | null;
|
|
312
|
+
/** Title font color as a hex string without '#' (e.g. "1B4332"). null = default. */
|
|
313
|
+
titleFontColor: string | null;
|
|
314
|
+
/** Title font family from `<a:latin typeface>` (ECMA-376 §20.1.4.2.24). null = default. */
|
|
315
|
+
titleFontFace: string | null;
|
|
316
|
+
/** `<c:catAx><c:txPr>` font size (hpt). null = fall back to proportional default. */
|
|
317
|
+
catAxisFontSizeHpt: number | null;
|
|
318
|
+
/** `<c:valAx><c:txPr>` font size (hpt). null = fall back to proportional default. */
|
|
319
|
+
valAxisFontSizeHpt: number | null;
|
|
320
|
+
/** `<c:catAx><c:txPr>…<a:solidFill>` tick-label color (hex without '#').
|
|
321
|
+
* null = renderer default. Lets templates color category labels gray. */
|
|
322
|
+
catAxisFontColor?: string | null;
|
|
323
|
+
/** `<c:valAx><c:txPr>…<a:solidFill>` tick-label color (hex without '#'). */
|
|
324
|
+
valAxisFontColor?: string | null;
|
|
325
|
+
/** `<c:dLbls><c:txPr>` font size (hpt) for data-point value labels. */
|
|
326
|
+
dataLabelFontSizeHpt: number | null;
|
|
327
|
+
/** Waterfall subtotal category indices. */
|
|
328
|
+
subtotalIndices: number[];
|
|
329
|
+
/** `<c:legend><c:manualLayout>` absolute placement fractions of the chart
|
|
330
|
+
* space (ECMA-376 §21.2.2.31). Overrides the default side-based legend
|
|
331
|
+
* rectangle while still letting `legendPos` decide which side of the plot
|
|
332
|
+
* gets the reserved band. null = use default layout. */
|
|
269
333
|
legendManualLayout?: LegendManualLayout | null;
|
|
270
|
-
/**
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
/** `<c:catAx><c:spPr><a:ln><a:noFill>` — line-only hide (labels stay). */
|
|
275
|
-
catAxisLineHidden?: boolean;
|
|
276
|
-
/** `<c:valAx><c:spPr><a:ln><a:noFill>` — line-only hide (labels stay). */
|
|
277
|
-
valAxisLineHidden?: boolean;
|
|
278
|
-
/** `<c:radarChart><c:radarStyle val>` — "standard" (line only, default),
|
|
279
|
-
* "marker" (line + markers), "filled" (closed polygon with area fill).
|
|
280
|
-
* Sample-1 "Biodiversity Index" uses "marker" — Excel renders no area
|
|
281
|
-
* fill, but our renderer was filling at 25 % opacity regardless. */
|
|
282
|
-
radarStyle?: string | null;
|
|
283
|
-
/** `<c:valAx><c:numFmt@formatCode>` — number format for value-axis tick
|
|
284
|
-
* labels (ECMA-376 §21.2.2.21). */
|
|
334
|
+
/**
|
|
335
|
+
* `<c:valAx><c:numFmt@formatCode>` — format code applied to value-axis tick
|
|
336
|
+
* labels (ECMA-376 §21.2.2.21). null = plain numeric formatting.
|
|
337
|
+
*/
|
|
285
338
|
valAxisFormatCode?: string | null;
|
|
286
|
-
/**
|
|
287
|
-
*
|
|
339
|
+
/**
|
|
340
|
+
* `<c:barChart><c:gapWidth>` — space between category groups as a
|
|
341
|
+
* percentage of bar width (ECMA-376 §21.2.2.13). Default per spec is 150.
|
|
342
|
+
* null = renderer default.
|
|
343
|
+
*/
|
|
288
344
|
barGapWidth?: number | null;
|
|
289
|
-
/**
|
|
290
|
-
*
|
|
345
|
+
/**
|
|
346
|
+
* `<c:barChart><c:overlap>` — signed percentage overlap between bars in the
|
|
347
|
+
* same category cluster (ECMA-376 §21.2.2.25). Negative = gap, positive =
|
|
348
|
+
* overlap, 0 = flush. Range [-100, 100]. null = renderer default (0).
|
|
349
|
+
*/
|
|
291
350
|
barOverlap?: number | null;
|
|
292
|
-
/**
|
|
351
|
+
/**
|
|
352
|
+
* `<c:dLbls><c:dLblPos>` — data label position (ECMA-376 §21.2.2.16).
|
|
353
|
+
* "ctr"|"inBase"|"inEnd"|"outEnd"|"l"|"r"|"t"|"b"|"bestFit" etc.
|
|
354
|
+
*/
|
|
293
355
|
dataLabelPosition?: string | null;
|
|
294
|
-
/** Hex (no `#`) for data label text
|
|
356
|
+
/** Hex (no `#`) for data label text, resolved from `<c:dLbls><c:txPr>`. */
|
|
295
357
|
dataLabelFontColor?: string | null;
|
|
296
|
-
/**
|
|
297
|
-
*
|
|
358
|
+
/**
|
|
359
|
+
* `<c:dLbls><c:numFmt@formatCode>` — chart-level override for data label
|
|
360
|
+
* number format (ECMA-376 §21.2.2.35). When absent, `valFormatCode` on each
|
|
361
|
+
* series is used.
|
|
362
|
+
*/
|
|
298
363
|
dataLabelFormatCode?: string | null;
|
|
299
364
|
/** `<c:title>...defRPr@b>` chart title bold flag. */
|
|
300
|
-
titleFontBold?: boolean;
|
|
365
|
+
titleFontBold?: boolean | null;
|
|
301
366
|
/** `<c:catAx><c:txPr>...defRPr@b>` X-axis tick label bold flag. */
|
|
302
|
-
catAxisFontBold?: boolean;
|
|
367
|
+
catAxisFontBold?: boolean | null;
|
|
303
368
|
/** `<c:valAx><c:txPr>...defRPr@b>` Y-axis tick label bold flag. */
|
|
304
|
-
valAxisFontBold?: boolean;
|
|
305
|
-
/** `<c:catAx><c:
|
|
306
|
-
*
|
|
307
|
-
|
|
308
|
-
/** `<c:catAx><c:
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
/**
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
369
|
+
valAxisFontBold?: boolean | null;
|
|
370
|
+
/** `<c:catAx><c:title>` run-prop font size (hpt). Distinct from
|
|
371
|
+
* `catAxisFontSizeHpt` (tick labels). null = renderer default. */
|
|
372
|
+
catAxisTitleFontSizeHpt?: number | null;
|
|
373
|
+
/** `<c:catAx><c:title>` run-prop bold flag. null = not bold. */
|
|
374
|
+
catAxisTitleFontBold?: boolean | null;
|
|
375
|
+
/** `<c:catAx><c:title>` run-prop color (hex without '#'). null = default. */
|
|
376
|
+
catAxisTitleFontColor?: string | null;
|
|
377
|
+
/** `<c:valAx><c:title>` run-prop font size (hpt). null = renderer default. */
|
|
378
|
+
valAxisTitleFontSizeHpt?: number | null;
|
|
379
|
+
/** `<c:valAx><c:title>` run-prop bold flag. null = not bold. */
|
|
380
|
+
valAxisTitleFontBold?: boolean | null;
|
|
381
|
+
/** `<c:valAx><c:title>` run-prop color (hex without '#'). null = default. */
|
|
382
|
+
valAxisTitleFontColor?: string | null;
|
|
318
383
|
/** Explicit chart border color (hex without '#') from
|
|
319
384
|
* `<c:chartSpace><c:spPr><a:ln><a:solidFill><a:srgbClr>`. Only set when the
|
|
320
|
-
* XML explicitly declares a paintable line (no default
|
|
385
|
+
* XML explicitly declares a paintable line; null otherwise (no default
|
|
386
|
+
* border is drawn). */
|
|
321
387
|
chartBorderColor?: string | null;
|
|
322
|
-
/** `<c:chartSpace><c:spPr><a:ln@w>` border width in EMU.
|
|
388
|
+
/** `<c:chartSpace><c:spPr><a:ln@w>` border width in EMU. null = 1px hairline
|
|
389
|
+
* when a color is present. */
|
|
323
390
|
chartBorderWidthEmu?: number | null;
|
|
324
|
-
/**
|
|
325
|
-
*
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
391
|
+
/**
|
|
392
|
+
* `<c:catAx><c:crosses val>` (`autoZero` | `min` | `max`). Drives the Y
|
|
393
|
+
* coordinate where the X axis is drawn. Default `autoZero` puts the X
|
|
394
|
+
* axis at y=0 — that's how Excel "Project Timeline" templates split
|
|
395
|
+
* milestones (positive Y) above and tasks (negative Y) below the axis.
|
|
396
|
+
*/
|
|
397
|
+
catAxisCrosses?: string | null;
|
|
398
|
+
/** `<c:catAx><c:crossesAt val>` — explicit numeric override for the
|
|
399
|
+
* crossing point. Takes precedence over `catAxisCrosses`. */
|
|
400
|
+
catAxisCrossesAt?: number | null;
|
|
401
|
+
valAxisCrosses?: string | null;
|
|
402
|
+
valAxisCrossesAt?: number | null;
|
|
403
|
+
/** Axis line color (hex without `#`) and width in EMU from
|
|
404
|
+
* `<c:catAx|valAx><c:spPr><a:ln>`. */
|
|
405
|
+
catAxisLineColor?: string | null;
|
|
406
|
+
catAxisLineWidthEmu?: number | null;
|
|
407
|
+
valAxisLineColor?: string | null;
|
|
408
|
+
valAxisLineWidthEmu?: number | null;
|
|
409
|
+
/**
|
|
410
|
+
* `<c:catAx><c:numFmt@formatCode>` (or scatter X-axis valAx). When set,
|
|
411
|
+
* the renderer formats X-axis tick labels with this code (e.g. dates).
|
|
412
|
+
*/
|
|
413
|
+
catAxisFormatCode?: string | null;
|
|
414
|
+
/**
|
|
415
|
+
* `<c:catAx><c:scaling><c:min/max>` — explicit X-axis range. Used by
|
|
416
|
+
* scatter / bubble charts whose X axis is numeric. null = derive from
|
|
417
|
+
* data extents.
|
|
418
|
+
*/
|
|
419
|
+
catAxisMin?: number | null;
|
|
420
|
+
catAxisMax?: number | null;
|
|
421
|
+
/**
|
|
422
|
+
* `<c:title><c:layout><c:manualLayout>` (ECMA-376 §21.2.2.27) absolute
|
|
423
|
+
* placement for the chart title.
|
|
424
|
+
*/
|
|
425
|
+
titleManualLayout?: ChartManualLayout | null;
|
|
426
|
+
/**
|
|
427
|
+
* `<c:plotArea><c:layout><c:manualLayout>` absolute placement for the
|
|
428
|
+
* plot area. `layoutTarget="inner"` (default) describes the inner plot
|
|
429
|
+
* rect (no axes / labels); `outer` describes the outer rect (axes
|
|
430
|
+
* included).
|
|
431
|
+
*/
|
|
432
|
+
plotAreaManualLayout?: ChartManualLayout | null;
|
|
433
|
+
/**
|
|
434
|
+
* `<c:scatterChart><c:scatterStyle val>` (ECMA-376 §21.2.2.42). Drives
|
|
435
|
+
* whether scatter charts connect points with lines and whether those
|
|
436
|
+
* lines are smoothed. Values: "marker" (markers only — Excel default
|
|
437
|
+
* "Scatter"), "line" / "lineMarker" (straight segments), "smooth" /
|
|
438
|
+
* "smoothMarker" (cubic Bézier through points), "lineNoMarker",
|
|
439
|
+
* "smoothNoMarker". null = renderer default ("marker"). Only consulted
|
|
440
|
+
* for `chartType === "scatter"`; bubble ignores it.
|
|
441
|
+
*/
|
|
442
|
+
scatterStyle?: string | null;
|
|
443
|
+
/**
|
|
444
|
+
* `<c:radarChart><c:radarStyle val>` (ECMA-376 §21.2.3.10). Controls
|
|
445
|
+
* whether radar series render as line + markers ("standard" / "marker")
|
|
446
|
+
* or as a closed polygon with area fill ("filled"). null = default
|
|
447
|
+
* ("standard" — line, no fill). Only consulted for `chartType === "radar"`.
|
|
448
|
+
*/
|
|
449
|
+
radarStyle?: string | null;
|
|
450
|
+
/**
|
|
451
|
+
* Secondary value axis for combo charts (bar + line). When present, series
|
|
452
|
+
* with `useSecondaryAxis` are plotted against this axis's independent scale
|
|
453
|
+
* and the axis is drawn on the right edge of the plot. null/absent = single
|
|
454
|
+
* value axis (the common case). See {@link SecondaryValueAxis}.
|
|
455
|
+
*/
|
|
456
|
+
secondaryValAxis?: SecondaryValueAxis | null;
|
|
343
457
|
}
|
|
344
458
|
|
|
345
|
-
export declare interface
|
|
346
|
-
|
|
347
|
-
|
|
459
|
+
export declare interface ChartSeries {
|
|
460
|
+
name: string;
|
|
461
|
+
/** Hex without '#'. null = fall back to palette. */
|
|
462
|
+
color: string | null;
|
|
463
|
+
/** Numeric values; null = missing data point. */
|
|
464
|
+
values: (number | null)[];
|
|
465
|
+
/**
|
|
466
|
+
* Per-data-point colors (pie / doughnut). Hex without '#'. null inside the
|
|
467
|
+
* array = use palette for that slice. Omit entirely for non-pie series.
|
|
468
|
+
*/
|
|
469
|
+
dataPointColors?: (string | null)[] | null;
|
|
470
|
+
/**
|
|
471
|
+
* Per-data-point data-label text colors. Used by chartEx (`<cx:dataLabel idx>`)
|
|
472
|
+
* to override label colour per bar — sample-2's waterfall paints negative
|
|
473
|
+
* △ values in red while positive values stay black. Null inside the array =
|
|
474
|
+
* fall back to the chart-level `dataLabelFontColor`.
|
|
475
|
+
*/
|
|
476
|
+
dataLabelColors?: (string | null)[] | null;
|
|
477
|
+
/**
|
|
478
|
+
* Series-level data-label text colour (`<c:ser><c:dLbls><c:txPr>…solidFill`,
|
|
479
|
+
* ECMA-376 §21.2.2.216). Hex without '#'. Stacked-bar charts colour each
|
|
480
|
+
* segment's label independently (e.g. white on the dark segment, black on
|
|
481
|
+
* the light one), which a single chart-level `dataLabelFontColor` can't
|
|
482
|
+
* express. Takes precedence over `dataLabelFontColor`; null = no override.
|
|
483
|
+
*/
|
|
484
|
+
labelColor?: string | null;
|
|
485
|
+
/**
|
|
486
|
+
* Mixed chart: per-series chart type override. Currently only "line" (XLSX
|
|
487
|
+
* and PPTX combo charts) is honoured; other values are treated as the
|
|
488
|
+
* chart's primary type.
|
|
489
|
+
*/
|
|
490
|
+
seriesType?: string | null;
|
|
491
|
+
/**
|
|
492
|
+
* Combo chart: this series is plotted against the SECONDARY value axis
|
|
493
|
+
* (`ChartModel.secondaryValAxis`) — the `<c:valAx>` with `axPos="r"` /
|
|
494
|
+
* `<c:crosses val="max">`. When false/absent the series uses the primary
|
|
495
|
+
* (left) value-axis scale. PowerPoint's "Revenue vs. gross margin" combo
|
|
496
|
+
* (sample-14 slide-8) puts the margin line on a 0–100% secondary axis.
|
|
497
|
+
*/
|
|
498
|
+
useSecondaryAxis?: boolean | null;
|
|
499
|
+
/**
|
|
500
|
+
* Scatter-only X values (as strings). When null the series uses
|
|
501
|
+
* `ChartModel.categories` as X.
|
|
502
|
+
*/
|
|
503
|
+
categories?: string[] | null;
|
|
504
|
+
/**
|
|
505
|
+
* Resolved marker visibility for line/scatter series. ECMA-376 §21.2.2.32
|
|
506
|
+
* `<c:marker><c:symbol>` defaults to "none" for line charts unless the
|
|
507
|
+
* chart-level `<c:marker val="1"/>` or a per-series symbol opts in. When
|
|
508
|
+
* undefined/null the renderer uses its own default (visible) so callers
|
|
509
|
+
* that don't parse markers (e.g. pptx today) keep their existing behavior.
|
|
510
|
+
*/
|
|
511
|
+
showMarker?: boolean | null;
|
|
512
|
+
/**
|
|
513
|
+
* Excel number-format code for this series' values (ECMA-376 §21.2.2.37,
|
|
514
|
+
* `<c:val>/<c:numRef>/<c:formatCode>`). Used to format data labels when the
|
|
515
|
+
* chart-level `<c:dLbls><c:numFmt>` is not set. null = no series-level code.
|
|
516
|
+
*/
|
|
517
|
+
valFormatCode?: string | null;
|
|
518
|
+
/**
|
|
519
|
+
* `<c:marker><c:symbol val>` (ECMA-376 §21.2.2.32) — point marker shape.
|
|
520
|
+
* One of "circle"|"square"|"diamond"|"triangle"|"x"|"plus"|"star"|
|
|
521
|
+
* "dot"|"dash"|"picture"|"none". null = renderer default (circle when
|
|
522
|
+
* showMarker is true).
|
|
523
|
+
*/
|
|
524
|
+
markerSymbol?: string | null;
|
|
525
|
+
/**
|
|
526
|
+
* `<c:marker><c:size val>` (ECMA-376 §21.2.2.34) — marker side length in
|
|
527
|
+
* points. null = renderer default (~5 pt).
|
|
528
|
+
*/
|
|
529
|
+
markerSize?: number | null;
|
|
530
|
+
/** `<c:marker><c:spPr><a:solidFill>` resolved hex (no `#`). */
|
|
531
|
+
markerFill?: string | null;
|
|
532
|
+
/** `<c:marker><c:spPr><a:ln><a:solidFill>` resolved hex (no `#`). */
|
|
533
|
+
markerLine?: string | null;
|
|
534
|
+
/**
|
|
535
|
+
* Per-data-point overrides (ECMA-376 §21.2.2.39 `<c:dPt>`). Keyed by point
|
|
536
|
+
* index. Any unset field falls back to the series-level value.
|
|
537
|
+
*/
|
|
538
|
+
dataPointOverrides?: ChartDataPointOverride[] | null;
|
|
539
|
+
/**
|
|
540
|
+
* Per-data-point custom labels (ECMA-376 §21.2.2.45 `<c:dLbl idx>`).
|
|
541
|
+
* `text` is the resolved plain string — `<a:fld type="CELLRANGE">`
|
|
542
|
+
* placeholders are already substituted at parse time. An empty string
|
|
543
|
+
* means the point's label was deleted with `<c:delete val="1"/>` and
|
|
544
|
+
* the renderer should skip it.
|
|
545
|
+
*/
|
|
546
|
+
dataLabelOverrides?: ChartDataLabelOverride[] | null;
|
|
547
|
+
/**
|
|
548
|
+
* Series-level `<c:dLbls>` block (showVal / showSerName / position).
|
|
549
|
+
* Applied to every point lacking its own `<c:dLbl>` override.
|
|
550
|
+
*/
|
|
551
|
+
seriesDataLabels?: ChartSeriesDataLabels | null;
|
|
552
|
+
/**
|
|
553
|
+
* `<c:errBars>` per-series error bars (ECMA-376 §21.2.2.20). Up to two
|
|
554
|
+
* (one per direction). Plus / minus deltas are absolute per-point values
|
|
555
|
+
* regardless of `errValType`.
|
|
556
|
+
*/
|
|
557
|
+
errBars?: ChartErrBars[] | null;
|
|
558
|
+
/**
|
|
559
|
+
* `<c:bubbleSize>` per-point sizes for bubble charts (ECMA-376 §21.2.2.4).
|
|
560
|
+
* Drives marker radius — renderer treats the values as areas (radius
|
|
561
|
+
* scales by sqrt) so visual area is proportional to value, matching
|
|
562
|
+
* Excel. null / empty array = uniform marker size. Ignored for non-bubble
|
|
563
|
+
* series.
|
|
564
|
+
*/
|
|
565
|
+
bubbleSizes?: (number | null)[] | null;
|
|
348
566
|
}
|
|
349
567
|
|
|
350
|
-
export declare interface
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
568
|
+
export declare interface ChartSeriesDataLabels {
|
|
569
|
+
showVal: boolean;
|
|
570
|
+
showCatName: boolean;
|
|
571
|
+
showSerName: boolean;
|
|
572
|
+
showPercent: boolean;
|
|
354
573
|
position?: string;
|
|
355
574
|
fontColor?: string;
|
|
356
|
-
|
|
575
|
+
formatCode?: string;
|
|
576
|
+
/** Series-level bold default for data labels. */
|
|
357
577
|
fontBold?: boolean;
|
|
578
|
+
/** Series-level font size for data labels (OOXML hundredths of a point). */
|
|
579
|
+
fontSizeHpt?: number;
|
|
358
580
|
}
|
|
359
581
|
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
582
|
+
/**
|
|
583
|
+
* Canonical chart type vocabulary. Embeds direction (`H` = horizontal) and
|
|
584
|
+
* grouping (`Pct` = percent-stacked) so renderers do not need to inspect
|
|
585
|
+
* separate `barDir`/`grouping` fields.
|
|
586
|
+
*/
|
|
587
|
+
declare type ChartType = 'line' | 'stackedLine' | 'stackedLinePct' | 'clusteredBar' | 'clusteredBarH' | 'stackedBar' | 'stackedBarH' | 'stackedBarPct' | 'stackedBarHPct' | 'area' | 'stackedArea' | 'stackedAreaPct' | 'pie' | 'doughnut' | 'scatter' | 'bubble' | 'radar' | 'waterfall' | string;
|
|
588
|
+
|
|
589
|
+
export declare interface ConditionalFormat {
|
|
590
|
+
sqref: CellRange_2[];
|
|
591
|
+
rules: CfRule[];
|
|
367
592
|
}
|
|
368
593
|
|
|
594
|
+
/** @deprecated Use `ChartDataLabelOverride` from @silurus/ooxml-core. */
|
|
595
|
+
export declare type DataLabelOverride = ChartDataLabelOverride;
|
|
596
|
+
|
|
597
|
+
/** @deprecated Use `ChartDataPointOverride` from @silurus/ooxml-core. */
|
|
598
|
+
export declare type DataPointOverride = ChartDataPointOverride;
|
|
599
|
+
|
|
369
600
|
/** One `<dataValidation>` rule (ECMA-376 §18.3.1.33). `type` is the constraint
|
|
370
601
|
* class (`list` | `whole` | `decimal` | `date` | `time` | `textLength` |
|
|
371
602
|
* `custom`); `operator` qualifies it (`between` | `notBetween` | `equal` | …).
|
|
@@ -404,19 +635,8 @@ export declare interface Dxf {
|
|
|
404
635
|
numFmt?: NumFmt | null;
|
|
405
636
|
}
|
|
406
637
|
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
dir: string;
|
|
410
|
-
/** "plus" | "minus" | "both". */
|
|
411
|
-
barType: string;
|
|
412
|
-
plus: (number | null)[];
|
|
413
|
-
minus: (number | null)[];
|
|
414
|
-
noEndCap: boolean;
|
|
415
|
-
/** Resolved RGB hex (no `#`). */
|
|
416
|
-
color?: string;
|
|
417
|
-
lineWidthEmu?: number;
|
|
418
|
-
dash?: string;
|
|
419
|
-
}
|
|
638
|
+
/** @deprecated Use `ChartErrBars` from @silurus/ooxml-core. */
|
|
639
|
+
export declare type ErrBars = ChartErrBars;
|
|
420
640
|
|
|
421
641
|
export declare interface GradientFillSpec {
|
|
422
642
|
/** "linear" (default) or "path". */
|
|
@@ -434,6 +654,9 @@ export declare interface GradientFillSpec {
|
|
|
434
654
|
}[];
|
|
435
655
|
}
|
|
436
656
|
|
|
657
|
+
/** How {@link XlsxViewer} presents hidden sheets (`<sheet state>`, §18.2.19). */
|
|
658
|
+
export declare type HiddenSheetMode = 'show' | 'skip' | 'dim';
|
|
659
|
+
|
|
437
660
|
export declare interface Hyperlink {
|
|
438
661
|
col: number;
|
|
439
662
|
row: number;
|
|
@@ -491,8 +714,11 @@ export declare interface ImageAnchor {
|
|
|
491
714
|
}
|
|
492
715
|
|
|
493
716
|
export declare interface LegendManualLayout {
|
|
717
|
+
/** `"edge"` = `x`/`y` are fractions from top-left of chart space;
|
|
718
|
+
* `"factor"` = fractions offset from the default position. */
|
|
494
719
|
xMode: string;
|
|
495
720
|
yMode: string;
|
|
721
|
+
/** Fractions of chart space width/height. */
|
|
496
722
|
x: number;
|
|
497
723
|
y: number;
|
|
498
724
|
w: number;
|
|
@@ -534,6 +760,21 @@ declare interface LoadOptions_2 {
|
|
|
534
760
|
* via `@font-face` in your application CSS.
|
|
535
761
|
*/
|
|
536
762
|
useGoogleFonts?: boolean;
|
|
763
|
+
/**
|
|
764
|
+
* Override the URL the parser worker fetches the WebAssembly module from.
|
|
765
|
+
*
|
|
766
|
+
* By default each format resolves the `.wasm` asset that ships next to its
|
|
767
|
+
* bundle (relative to the module URL), so no configuration is needed. Set
|
|
768
|
+
* this to serve the parser WASM from a CDN or a self-hosted path instead — a
|
|
769
|
+
* relative value is resolved against the current document URL. The same
|
|
770
|
+
* dependency-injection contract across docx / pptx / xlsx.
|
|
771
|
+
*
|
|
772
|
+
* The referenced file must be the matching format's `*_parser_bg.wasm`
|
|
773
|
+
* artifact (the one wasm-bindgen emitted for that parser); pointing it at a
|
|
774
|
+
* mismatched or missing file makes `load()` reject when the worker
|
|
775
|
+
* instantiates it.
|
|
776
|
+
*/
|
|
777
|
+
wasmUrl?: string | URL;
|
|
537
778
|
/**
|
|
538
779
|
* Override the per-entry ZIP decompression cap (bytes) used by the zip-bomb
|
|
539
780
|
* guard in the Rust parser. Defaults to 512 MiB. Raise it to load documents
|
|
@@ -541,6 +782,16 @@ declare interface LoadOptions_2 {
|
|
|
541
782
|
* untrusted input. Zero / negative values fall back to the default.
|
|
542
783
|
*/
|
|
543
784
|
maxZipEntryBytes?: number;
|
|
785
|
+
/**
|
|
786
|
+
* Reject the parse request if the parser worker does not answer within this
|
|
787
|
+
* many milliseconds. Opt-in safety net for a wedged or crashed worker that
|
|
788
|
+
* would otherwise leave `load()` pending forever. **Default: unlimited** —
|
|
789
|
+
* parsing a large document with heavy embedded media can legitimately take
|
|
790
|
+
* tens of seconds, so no timeout is imposed unless you set one. A worker that
|
|
791
|
+
* throws or fails to load already rejects immediately regardless of this
|
|
792
|
+
* value; this bound only covers the "silent, never-responds" case.
|
|
793
|
+
*/
|
|
794
|
+
workerTimeoutMs?: number;
|
|
544
795
|
/**
|
|
545
796
|
* Opt-in OMML equation engine (MathJax + STIX Two Math, ~3 MB). Inject it
|
|
546
797
|
* **once** here and every render of this document / presentation / workbook
|
|
@@ -553,15 +804,8 @@ declare interface LoadOptions_2 {
|
|
|
553
804
|
math?: MathRenderer;
|
|
554
805
|
}
|
|
555
806
|
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
yMode: string;
|
|
559
|
-
layoutTarget?: string;
|
|
560
|
-
x: number;
|
|
561
|
-
y: number;
|
|
562
|
-
w?: number;
|
|
563
|
-
h?: number;
|
|
564
|
-
}
|
|
807
|
+
/** @deprecated Use `ChartManualLayout` from @silurus/ooxml-core. */
|
|
808
|
+
export declare type ManualLayout = ChartManualLayout;
|
|
565
809
|
|
|
566
810
|
/** Accent (`m:acc`), e.g. hat, bar, vector arrow over the base. */
|
|
567
811
|
declare interface MathAccent {
|
|
@@ -840,20 +1084,48 @@ export declare interface RunFont {
|
|
|
840
1084
|
vertAlign?: 'superscript' | 'subscript';
|
|
841
1085
|
}
|
|
842
1086
|
|
|
1087
|
+
/**
|
|
1088
|
+
* A secondary value axis (combo charts). Mirrors the primary value-axis
|
|
1089
|
+
* properties but lives in its own object so the flat primary-axis fields stay
|
|
1090
|
+
* untouched. Parsed from the right-hand `<c:valAx>` (`axPos="r"`,
|
|
1091
|
+
* `<c:crosses val="max">`).
|
|
1092
|
+
*/
|
|
1093
|
+
declare interface SecondaryValueAxis {
|
|
1094
|
+
/** `<c:scaling><c:min val>`. null = derive from the series data. */
|
|
1095
|
+
min: number | null;
|
|
1096
|
+
/** `<c:scaling><c:max val>`. null = derive from the series data. */
|
|
1097
|
+
max: number | null;
|
|
1098
|
+
/** `<c:title>` plain text. null = no title. */
|
|
1099
|
+
title: string | null;
|
|
1100
|
+
/** `<c:delete val="1"/>` — hide labels/ticks entirely. */
|
|
1101
|
+
hidden: boolean;
|
|
1102
|
+
/** `<c:numFmt formatCode>` for tick labels. */
|
|
1103
|
+
formatCode?: string | null;
|
|
1104
|
+
/** `<c:txPr>…<a:solidFill>` tick-label color (hex without '#'). */
|
|
1105
|
+
fontColor?: string | null;
|
|
1106
|
+
/** `<c:txPr>` tick-label font size (hpt). */
|
|
1107
|
+
fontSizeHpt?: number | null;
|
|
1108
|
+
/** `<c:spPr><a:ln><a:solidFill>` axis-line color (hex without '#'). */
|
|
1109
|
+
lineColor?: string | null;
|
|
1110
|
+
/** `<c:spPr><a:ln w>` axis-line width in EMU. */
|
|
1111
|
+
lineWidthEmu?: number | null;
|
|
1112
|
+
/** `<c:spPr><a:ln><a:noFill>` — hide just the axis rule. */
|
|
1113
|
+
lineHidden: boolean;
|
|
1114
|
+
/** `<c:majorTickMark>` — "cross" (default) | "out" | "in" | "none". */
|
|
1115
|
+
majorTickMark: string;
|
|
1116
|
+
/** `<c:title>` run-prop font size (hpt). */
|
|
1117
|
+
titleFontSizeHpt?: number | null;
|
|
1118
|
+
/** `<c:title>` run-prop bold flag. */
|
|
1119
|
+
titleFontBold?: boolean | null;
|
|
1120
|
+
/** `<c:title>` run-prop color (hex without '#'). */
|
|
1121
|
+
titleFontColor?: string | null;
|
|
1122
|
+
}
|
|
1123
|
+
|
|
843
1124
|
declare type SelectionMode_2 = 'cells' | 'rows' | 'cols' | 'all';
|
|
844
1125
|
export { SelectionMode_2 as SelectionMode }
|
|
845
1126
|
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
showCatName: boolean;
|
|
849
|
-
showSerName: boolean;
|
|
850
|
-
showPercent: boolean;
|
|
851
|
-
position?: string;
|
|
852
|
-
fontColor?: string;
|
|
853
|
-
formatCode?: string;
|
|
854
|
-
fontBold?: boolean;
|
|
855
|
-
fontSizeHpt?: number;
|
|
856
|
-
}
|
|
1127
|
+
/** @deprecated Use `ChartSeriesDataLabels` from @silurus/ooxml-core. */
|
|
1128
|
+
export declare type SeriesDataLabels = ChartSeriesDataLabels;
|
|
857
1129
|
|
|
858
1130
|
export declare interface ShapeAnchor {
|
|
859
1131
|
fromCol: number;
|
|
@@ -940,6 +1212,19 @@ export declare interface ShapeParagraph {
|
|
|
940
1212
|
/** `<a:pPr@rtl>` — whether the paragraph reads right-to-left
|
|
941
1213
|
* (ECMA-376 §21.1.2.2.7). Omitted (undefined) when false. */
|
|
942
1214
|
rtl?: boolean;
|
|
1215
|
+
/** `<a:pPr@marL>` — left margin in EMU (ECMA-376 §21.1.2.2.7,
|
|
1216
|
+
* `CT_TextParagraphProperties`). Direct attribute only — xlsx text boxes
|
|
1217
|
+
* have no lstStyle/level cascade. Omitted (undefined) when unset. */
|
|
1218
|
+
marL?: number;
|
|
1219
|
+
/** `<a:pPr@marR>` — right margin in EMU (ECMA-376 §21.1.2.2.7).
|
|
1220
|
+
* Omitted (undefined) when unset. */
|
|
1221
|
+
marR?: number;
|
|
1222
|
+
/** `<a:pPr@indent>` — first-line indent in EMU (negative = hanging),
|
|
1223
|
+
* ECMA-376 §21.1.2.2.7. Omitted (undefined) when unset. */
|
|
1224
|
+
indent?: number;
|
|
1225
|
+
/** `<a:pPr>/<a:lnSpc>` line spacing (ECMA-376 §21.1.2.2.5). Direct-only;
|
|
1226
|
+
* omitted when unset. */
|
|
1227
|
+
spaceLine?: SpaceLine | null;
|
|
943
1228
|
runs: ShapeTextRun[];
|
|
944
1229
|
}
|
|
945
1230
|
|
|
@@ -949,6 +1234,27 @@ export declare interface ShapeText {
|
|
|
949
1234
|
anchor: string;
|
|
950
1235
|
/** `<a:bodyPr@wrap>` — `square` (wrap to width) | `none`. */
|
|
951
1236
|
wrap: string;
|
|
1237
|
+
/** `<a:bodyPr>` autofit child — `'sp'` (`spAutoFit`), `'norm'` (`normAutofit`),
|
|
1238
|
+
* or `'none'` (`noAutofit`/absent). ECMA-376 §21.1.2.1.1-.3. Always present
|
|
1239
|
+
* (default `'none'`), mirroring the core `TextBody.autoFit`. */
|
|
1240
|
+
autoFit?: string;
|
|
1241
|
+
/** `<a:normAutofit@fontScale>` — stored font-shrink fraction (e.g. 0.625 for
|
|
1242
|
+
* `fontScale="62500"`). Null/absent when unset. Modeled for parity with
|
|
1243
|
+
* pptx; the xlsx renderer does not currently apply it. */
|
|
1244
|
+
fontScale?: number | null;
|
|
1245
|
+
/** `<a:normAutofit@lnSpcReduction>` — stored line-spacing reduction fraction
|
|
1246
|
+
* (e.g. 0.20 for `lnSpcReduction="20000"`). Null/absent when unset. */
|
|
1247
|
+
lnSpcReduction?: number | null;
|
|
1248
|
+
/** `<a:bodyPr@lIns>` — left text inset in EMU (ECMA-376 §21.1.2.1.1). Always
|
|
1249
|
+
* present; the spec default 91440 EMU (7.2 pt) when the attribute is absent.
|
|
1250
|
+
* Same EMU convention as `ShapeParagraph.marL`. */
|
|
1251
|
+
lIns: number;
|
|
1252
|
+
/** `<a:bodyPr@tIns>` — top text inset in EMU. Default 45720 (3.6 pt). */
|
|
1253
|
+
tIns: number;
|
|
1254
|
+
/** `<a:bodyPr@rIns>` — right text inset in EMU. Default 91440 (7.2 pt). */
|
|
1255
|
+
rIns: number;
|
|
1256
|
+
/** `<a:bodyPr@bIns>` — bottom text inset in EMU. Default 45720 (3.6 pt). */
|
|
1257
|
+
bIns: number;
|
|
952
1258
|
paragraphs: ShapeParagraph[];
|
|
953
1259
|
}
|
|
954
1260
|
|
|
@@ -966,6 +1272,18 @@ export declare type ShapeTextRun = {
|
|
|
966
1272
|
size: number;
|
|
967
1273
|
color?: string;
|
|
968
1274
|
fontFace?: string;
|
|
1275
|
+
/** East-Asian typeface (`<a:ea@typeface>`, ECMA-376 §21.1.2.3.1). The
|
|
1276
|
+
* common Japanese encoding sets Meiryo here while leaving `<a:latin>`
|
|
1277
|
+
* default; the renderer floors the line box by this face's design line
|
|
1278
|
+
* too (see `drawShapeText`). Undefined when the run declares no `<a:ea>`. */
|
|
1279
|
+
fontFaceEa?: string;
|
|
1280
|
+
/** Complex-script typeface (`<a:cs@typeface>`, ECMA-376 §21.1.2.3.1).
|
|
1281
|
+
* Parsed/modeled but NOT used in the line-box floor: the cs face renders
|
|
1282
|
+
* only complex-script glyphs (Arabic/Hebrew/Thai), so flooring the whole
|
|
1283
|
+
* line box by it would over-grow Latin/CJK runs (deferred to per-glyph
|
|
1284
|
+
* handling — see `drawShapeText`). Undefined when the run declares no
|
|
1285
|
+
* `<a:cs>`. */
|
|
1286
|
+
fontFaceCs?: string;
|
|
969
1287
|
} | {
|
|
970
1288
|
type: 'break';
|
|
971
1289
|
} | {
|
|
@@ -992,8 +1310,16 @@ export declare interface SheetMeta {
|
|
|
992
1310
|
* `#RRGGBB`. Surfaced at workbook-list time so tabs can be painted up front.
|
|
993
1311
|
* Absent when the sheet declares no tab color. */
|
|
994
1312
|
tabColor?: string | null;
|
|
1313
|
+
/** Sheet visibility (`<sheet state>`, ECMA-376 §18.2.19 `ST_SheetState`).
|
|
1314
|
+
* Absent ⇒ visible. `'veryHidden'` sheets are revealable only
|
|
1315
|
+
* programmatically in Excel. Read via `XlsxWorkbook.isHidden` /
|
|
1316
|
+
* `XlsxWorkbook.sheetVisibility`. */
|
|
1317
|
+
visibility?: 'hidden' | 'veryHidden';
|
|
995
1318
|
}
|
|
996
1319
|
|
|
1320
|
+
/** Sheet visibility (`<sheet state>`, ECMA-376 §18.2.19 `ST_SheetState`). */
|
|
1321
|
+
export declare type SheetVisibility = 'visible' | 'hidden' | 'veryHidden';
|
|
1322
|
+
|
|
997
1323
|
export declare interface SlicerAnchor {
|
|
998
1324
|
fromCol: number;
|
|
999
1325
|
fromColOff: number;
|
|
@@ -1012,6 +1338,14 @@ export declare interface SlicerItem {
|
|
|
1012
1338
|
selected: boolean;
|
|
1013
1339
|
}
|
|
1014
1340
|
|
|
1341
|
+
declare type SpaceLine = {
|
|
1342
|
+
type: 'pct';
|
|
1343
|
+
val: number;
|
|
1344
|
+
} | {
|
|
1345
|
+
type: 'pts';
|
|
1346
|
+
val: number;
|
|
1347
|
+
};
|
|
1348
|
+
|
|
1015
1349
|
export declare interface Sparkline {
|
|
1016
1350
|
/** 1-based row of the destination cell (`<xm:sqref>`). */
|
|
1017
1351
|
row: number;
|
|
@@ -1206,51 +1540,10 @@ export declare interface Worksheet {
|
|
|
1206
1540
|
}
|
|
1207
1541
|
|
|
1208
1542
|
/**
|
|
1209
|
-
*
|
|
1210
|
-
*
|
|
1543
|
+
* @deprecated Chart series are now the core {@link ChartModel}'s `ChartSeries`.
|
|
1544
|
+
* Kept as an alias for backward-compatible imports.
|
|
1211
1545
|
*/
|
|
1212
|
-
export declare
|
|
1213
|
-
name: string;
|
|
1214
|
-
/** Chart sub-type for this series (allows mixed charts). */
|
|
1215
|
-
seriesType: string;
|
|
1216
|
-
categories: string[];
|
|
1217
|
-
values: (number | null)[];
|
|
1218
|
-
/** Explicit fill color hex (from c:spPr). Undefined = use palette. */
|
|
1219
|
-
color?: string | null;
|
|
1220
|
-
/** Marker visibility resolved from `<c:marker>`/chart-level default
|
|
1221
|
-
* (ECMA-376 §21.2.2.32). */
|
|
1222
|
-
showMarker?: boolean;
|
|
1223
|
-
/** `<c:val>/<c:numRef>/<c:formatCode>` — Excel number format for series
|
|
1224
|
-
* values (ECMA-376 §21.2.2.37). */
|
|
1225
|
-
valFormatCode?: string | null;
|
|
1226
|
-
/** `<c:ser><c:dLbls><c:txPr>…solidFill` — per-series data-label text color
|
|
1227
|
-
* (ECMA-376 §21.2.2.216). Takes precedence over the chart-level color so
|
|
1228
|
-
* each series can color its labels independently. */
|
|
1229
|
-
labelColor?: string | null;
|
|
1230
|
-
/** `<c:ser><c:order>` — stacking/legend display order (§21.2.2.28). */
|
|
1231
|
-
order?: number;
|
|
1232
|
-
/** `<c:marker><c:symbol val>` — point marker shape (ECMA-376 §21.2.2.32). */
|
|
1233
|
-
markerSymbol?: string;
|
|
1234
|
-
/** `<c:marker><c:size val>` — point marker side length in pt (§21.2.2.34). */
|
|
1235
|
-
markerSize?: number;
|
|
1236
|
-
/** `<c:marker><c:spPr>` resolved fill (no `#`). */
|
|
1237
|
-
markerFill?: string;
|
|
1238
|
-
/** `<c:marker><c:spPr><a:ln>` resolved stroke (no `#`). */
|
|
1239
|
-
markerLine?: string;
|
|
1240
|
-
/** `<c:dPt>` per-data-point overrides (§21.2.2.39). */
|
|
1241
|
-
dataPointOverrides?: DataPointOverride[];
|
|
1242
|
-
/** Per-idx custom data labels (`<c:dLbl idx>`, §21.2.2.45). Custom rich
|
|
1243
|
-
* text is flattened to plain string at parse time; CELLRANGE field
|
|
1244
|
-
* placeholders are resolved against the series' `<c15:datalabelsRange>`
|
|
1245
|
-
* cache. */
|
|
1246
|
-
dataLabelOverrides?: DataLabelOverride[];
|
|
1247
|
-
/** Series-level `<c:dLbls>` defaults applied to every point lacking its
|
|
1248
|
-
* own override. */
|
|
1249
|
-
seriesDataLabels?: SeriesDataLabels;
|
|
1250
|
-
/** `<c:errBars>` (§21.2.2.20). At parse time, plus / minus deltas are
|
|
1251
|
-
* resolved into absolute per-point values regardless of `errValType`. */
|
|
1252
|
-
errBars?: ErrBars[];
|
|
1253
|
-
}
|
|
1546
|
+
export declare type XlsxChartSeries = ChartSeries;
|
|
1254
1547
|
|
|
1255
1548
|
/** One cell comment. Sourced from the classic notes file `xl/commentsN.xml`
|
|
1256
1549
|
* (ECMA-376 §18.7) when present, otherwise from the Office-365 threaded
|
|
@@ -1287,6 +1580,10 @@ export declare interface XlsxTextRunInfo {
|
|
|
1287
1580
|
|
|
1288
1581
|
export declare class XlsxViewer {
|
|
1289
1582
|
private wb;
|
|
1583
|
+
/** The single subtree root the constructor appended to the caller's
|
|
1584
|
+
* container. destroy() removes it to return the container to its original
|
|
1585
|
+
* (empty) state. */
|
|
1586
|
+
private wrapper;
|
|
1290
1587
|
private canvas;
|
|
1291
1588
|
private canvasArea;
|
|
1292
1589
|
private scrollHost;
|
|
@@ -1302,6 +1599,7 @@ export declare class XlsxViewer {
|
|
|
1302
1599
|
private zoomSlider;
|
|
1303
1600
|
private zoomLabel;
|
|
1304
1601
|
private currentSheet;
|
|
1602
|
+
private _hiddenSheetMode;
|
|
1305
1603
|
private currentWorksheet;
|
|
1306
1604
|
private opts;
|
|
1307
1605
|
/** 'main' renders on this thread; 'worker' paints worker-produced bitmaps. */
|
|
@@ -1311,6 +1609,32 @@ export declare class XlsxViewer {
|
|
|
1311
1609
|
* main-mode 2d render path is never used on the same canvas. */
|
|
1312
1610
|
private _bitmapCtx;
|
|
1313
1611
|
private resizeObserver;
|
|
1612
|
+
/**
|
|
1613
|
+
* Pending `requestAnimationFrame` handle for a coalesced re-render, or `null`
|
|
1614
|
+
* when none is scheduled. High-frequency event-driven repaints (scroll, live
|
|
1615
|
+
* resize drag, selection drag, container resize) route through
|
|
1616
|
+
* {@link scheduleRender} so at most one render runs per animation frame: a
|
|
1617
|
+
* burst of scroll events within a single frame collapses to one draw at the
|
|
1618
|
+
* frame's latest scroll position (`renderCurrentSheet` reads the live scroll
|
|
1619
|
+
* offset, so "latest wins" needs no stored position). Explicit API calls
|
|
1620
|
+
* (`showSheet`/`goToSheet`, `select`, `setScale`) stay synchronous — they must
|
|
1621
|
+
* paint immediately, not a frame later. `destroy()` cancels any pending frame.
|
|
1622
|
+
*/
|
|
1623
|
+
private _rafId;
|
|
1624
|
+
/**
|
|
1625
|
+
* Monotonic render-request counter for worker-mode stale-frame dropping.
|
|
1626
|
+
* Every {@link renderCurrentSheet} bumps it and captures the value before it
|
|
1627
|
+
* awaits the worker's bitmap; on resolution a captured value below the current
|
|
1628
|
+
* one means a newer render was requested meanwhile (scroll moved on, the sheet
|
|
1629
|
+
* switched, a zoom changed), so that bitmap is stale and must be closed and
|
|
1630
|
+
* dropped instead of painted over the fresher frame. The WorkerBridge already
|
|
1631
|
+
* correlates each request↔response by id, but requests overlap — a slow bitmap
|
|
1632
|
+
* for an old scroll position can resolve after a newer one — so the viewer
|
|
1633
|
+
* needs this generation guard, the single-canvas analogue of the pptx
|
|
1634
|
+
* scroll-viewer's per-slot render epoch (PR #663). The main-thread path renders
|
|
1635
|
+
* synchronously and cannot interleave, so it needs no guard.
|
|
1636
|
+
*/
|
|
1637
|
+
private _renderSeq;
|
|
1314
1638
|
/**
|
|
1315
1639
|
* Start-anchored horizontal scroll position (the {@link effectiveScrollLeft}
|
|
1316
1640
|
* value last produced by a real user scroll or a programmatic reset), kept
|
|
@@ -1419,6 +1743,10 @@ export declare class XlsxViewer {
|
|
|
1419
1743
|
goToSheet(index: number): Promise<void>;
|
|
1420
1744
|
nextSheet(): Promise<void>;
|
|
1421
1745
|
prevSheet(): Promise<void>;
|
|
1746
|
+
/** Next sheet index for sequential nav: skip mode jumps over hidden sheets. */
|
|
1747
|
+
private _stepSheet;
|
|
1748
|
+
/** Initial sheet for load() / entering skip mode: land on a visible sheet. */
|
|
1749
|
+
private _initialSheet;
|
|
1422
1750
|
/** Returns the cell at canvas-client coordinates, or null if outside the cell grid. */
|
|
1423
1751
|
getCellAt(clientX: number, clientY: number): CellAddress | null;
|
|
1424
1752
|
/** Returns the CSS-pixel rect of a cell within canvasArea, or null if not
|
|
@@ -1470,6 +1798,15 @@ export declare class XlsxViewer {
|
|
|
1470
1798
|
* immediately.
|
|
1471
1799
|
*/
|
|
1472
1800
|
setSelectionColor(color: string): void;
|
|
1801
|
+
/**
|
|
1802
|
+
* Switch the hidden-sheet mode at runtime: restyle the tabs and re-render.
|
|
1803
|
+
* Entering `'skip'` while on a hidden sheet advances to the nearest visible.
|
|
1804
|
+
*/
|
|
1805
|
+
setHiddenSheetMode(mode: HiddenSheetMode): Promise<void>;
|
|
1806
|
+
/** The current hidden-sheet mode. */
|
|
1807
|
+
get hiddenSheetMode(): HiddenSheetMode;
|
|
1808
|
+
/** Number of non-hidden sheets (absolute `sheetCount` is unchanged). */
|
|
1809
|
+
get visibleSheetCount(): number;
|
|
1473
1810
|
/** Copy the selected cell range as tab-separated text to the clipboard. */
|
|
1474
1811
|
private copySelection;
|
|
1475
1812
|
private updateSelectionOverlay;
|
|
@@ -1525,6 +1862,13 @@ export declare class XlsxViewer {
|
|
|
1525
1862
|
private updateNavButtons;
|
|
1526
1863
|
private updateTabActive;
|
|
1527
1864
|
private tabStyle;
|
|
1865
|
+
/**
|
|
1866
|
+
* Full inline style for the tab of sheet `i`, honoring the hidden-sheet mode:
|
|
1867
|
+
* `'skip'` hides the tab of a hidden/veryHidden sheet (`display:none`); `'dim'`
|
|
1868
|
+
* greys it but leaves it clickable; `'show'` styles every tab normally. Used
|
|
1869
|
+
* by both buildTabs and updateTabActive so navigation never wipes the styling.
|
|
1870
|
+
*/
|
|
1871
|
+
private tabCss;
|
|
1528
1872
|
/** Excel-style zoom control pinned to the right end of the tab bar:
|
|
1529
1873
|
* `− [────slider────] + 100%`. Live-updates the cell scale on input. */
|
|
1530
1874
|
private buildZoomControl;
|
|
@@ -1538,11 +1882,39 @@ export declare class XlsxViewer {
|
|
|
1538
1882
|
* aligned tab-nav width in sync. */
|
|
1539
1883
|
setScale(scale: number): void;
|
|
1540
1884
|
private updateSpacerSize;
|
|
1885
|
+
/**
|
|
1886
|
+
* Coalesce a re-render into the next animation frame. Called from the
|
|
1887
|
+
* high-frequency event-driven paths (scroll, live column/row resize, drag-
|
|
1888
|
+
* selection, container resize); a burst of these within one frame schedules a
|
|
1889
|
+
* single {@link renderCurrentSheet}, avoiding the previous behavior where every
|
|
1890
|
+
* scroll event forced its own synchronous full redraw. Already-scheduled frames
|
|
1891
|
+
* are not re-scheduled — the one pending render reads the live scroll/scale
|
|
1892
|
+
* state when it runs, so the most recent position always wins without threading
|
|
1893
|
+
* a coordinate through. Falls back to a synchronous render when
|
|
1894
|
+
* `requestAnimationFrame` is unavailable (e.g. a non-DOM host), preserving the
|
|
1895
|
+
* old semantics there.
|
|
1896
|
+
*/
|
|
1897
|
+
private scheduleRender;
|
|
1541
1898
|
private renderCurrentSheet;
|
|
1542
1899
|
private computeHeaderHighlight;
|
|
1543
1900
|
get sheetNames(): string[];
|
|
1544
1901
|
/** The underlying <canvas> element the grid is drawn on. */
|
|
1545
1902
|
get canvasElement(): HTMLCanvasElement;
|
|
1903
|
+
/**
|
|
1904
|
+
* Tear down the viewer and release resources.
|
|
1905
|
+
*
|
|
1906
|
+
* The caller's container is returned to the state it had before construction
|
|
1907
|
+
* (empty): the entire wrapper subtree the constructor appended is removed.
|
|
1908
|
+
* All document-level listeners are detached — the keydown handler here, and
|
|
1909
|
+
* the validation-panel outside-click handler via {@link hideValidationPanel}.
|
|
1910
|
+
* Listeners on elements inside the wrapper (scrollHost, tabs, …) need no
|
|
1911
|
+
* explicit removal: removing the subtree makes them unreachable and eligible
|
|
1912
|
+
* for GC. Safe to call more than once.
|
|
1913
|
+
*
|
|
1914
|
+
* NOTE: the shared `<style>` in `document.head` is intentionally NOT removed —
|
|
1915
|
+
* it is a class constant that any still-live viewer may depend on, and one
|
|
1916
|
+
* leftover sheet is a bounded, harmless cost (see {@link ensureViewerStyleInjected}).
|
|
1917
|
+
*/
|
|
1546
1918
|
destroy(): void;
|
|
1547
1919
|
}
|
|
1548
1920
|
|
|
@@ -1595,6 +1967,19 @@ export declare interface XlsxViewerOptions extends LoadOptions_2 {
|
|
|
1595
1967
|
* require `'main'` (the math engine cannot cross the worker boundary).
|
|
1596
1968
|
*/
|
|
1597
1969
|
mode?: 'main' | 'worker';
|
|
1970
|
+
/**
|
|
1971
|
+
* How hidden / veryHidden sheets (`<sheet state>`, ECMA-376 §18.2.19) are
|
|
1972
|
+
* presented:
|
|
1973
|
+
* - `'show'` (default): every sheet gets a tab — current behavior.
|
|
1974
|
+
* - `'skip'`: hidden/veryHidden sheets get no tab and are jumped over by
|
|
1975
|
+
* `nextSheet`/`prevSheet` and initial load; absolute indices are unchanged,
|
|
1976
|
+
* and an explicit `goToSheet(i)` to a hidden sheet is still honored.
|
|
1977
|
+
* - `'dim'`: hidden/veryHidden tabs are shown greyed but stay selectable.
|
|
1978
|
+
*
|
|
1979
|
+
* Named to match the {@link XlsxViewer.hiddenSheetMode} getter and
|
|
1980
|
+
* {@link XlsxViewer.setHiddenSheetMode} setter. Mirrors pptx `hiddenSlideMode`.
|
|
1981
|
+
*/
|
|
1982
|
+
hiddenSheetMode?: HiddenSheetMode;
|
|
1598
1983
|
}
|
|
1599
1984
|
|
|
1600
1985
|
export declare class XlsxWorkbook {
|
|
@@ -1631,6 +2016,21 @@ export declare class XlsxWorkbook {
|
|
|
1631
2016
|
/** Per-sheet tab colors (`#RRGGBB`) parallel to {@link sheetNames}.
|
|
1632
2017
|
* `null` for sheets that declare no tab color. */
|
|
1633
2018
|
get tabColors(): (string | null)[];
|
|
2019
|
+
/**
|
|
2020
|
+
* Full visibility fact for the sheet at `sheetIndex` (0-based):
|
|
2021
|
+
* `'visible'` | `'hidden'` | `'veryHidden'` (`<sheet state>`, ECMA-376
|
|
2022
|
+
* §18.2.19). NOT clamped — out-of-range / non-integer ⇒ `'visible'`. This is a
|
|
2023
|
+
* *fact*; deciding what to do with a hidden sheet (hide/skip/dim its tab) is
|
|
2024
|
+
* {@link XlsxViewer}'s policy. `'veryHidden'` is revealable only
|
|
2025
|
+
* programmatically in Excel; it is surfaced distinctly here.
|
|
2026
|
+
*/
|
|
2027
|
+
sheetVisibility(sheetIndex: number): SheetVisibility;
|
|
2028
|
+
/**
|
|
2029
|
+
* Whether the sheet at `sheetIndex` is hidden or veryHidden. Convenience over
|
|
2030
|
+
* {@link sheetVisibility}; mirrors {@link PptxPresentation.isHidden} (non-
|
|
2031
|
+
* clamped: out-of-range / non-integer ⇒ `false`).
|
|
2032
|
+
*/
|
|
2033
|
+
isHidden(sheetIndex: number): boolean;
|
|
1634
2034
|
getWorksheet(sheetIndex: number): Promise<Worksheet>;
|
|
1635
2035
|
/**
|
|
1636
2036
|
* Fetch an embedded image's bytes by zip path (e.g. `xl/media/image1.png`),
|