@office-kit/xlsx 0.9.2 → 0.10.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.
Files changed (61) hide show
  1. package/dist/{cell-style-CN9JXOwm.mjs → cell-style-DuvS_Lsg.mjs} +2 -2
  2. package/dist/cell-style-DuvS_Lsg.mjs.map +1 -0
  3. package/dist/{differential-YEjxNScf.mjs → differential-DvKU8fJt.mjs} +2 -2
  4. package/dist/{differential-YEjxNScf.mjs.map → differential-DvKU8fJt.mjs.map} +1 -1
  5. package/dist/drawing/drawing-xml.d.ts +7 -0
  6. package/dist/drawing/drawing.d.ts +25 -0
  7. package/dist/drawing-BxzLuryn.mjs.map +1 -1
  8. package/dist/io.mjs +2 -2
  9. package/dist/{load-BA30X4-M.mjs → load-CnPfhGo3.mjs} +54 -10
  10. package/dist/load-CnPfhGo3.mjs.map +1 -0
  11. package/dist/{manifest-CVL1_t0O.mjs → manifest-Cm9K7D62.mjs} +5 -5
  12. package/dist/{manifest-CVL1_t0O.mjs.map → manifest-Cm9K7D62.mjs.map} +1 -1
  13. package/dist/node.mjs +1 -1
  14. package/dist/packaging.mjs +1 -1
  15. package/dist/{parser-nk0Lqmcb.mjs → parser-D3SLaOFe.mjs} +27 -4
  16. package/dist/parser-D3SLaOFe.mjs.map +1 -0
  17. package/dist/{save-C9ChJfWM.mjs → save-2moCT3Af.mjs} +68 -34
  18. package/dist/save-2moCT3Af.mjs.map +1 -0
  19. package/dist/schema.mjs +1 -1
  20. package/dist/{serialize-55EnT30e.mjs → serialize-BC2Wu3bR.mjs} +2 -2
  21. package/dist/{serialize-55EnT30e.mjs.map → serialize-BC2Wu3bR.mjs.map} +1 -1
  22. package/dist/{serializer-DQzTTNOS.mjs → serializer-BtO2TrI7.mjs} +21 -9
  23. package/dist/serializer-BtO2TrI7.mjs.map +1 -0
  24. package/dist/streaming.mjs +9 -12
  25. package/dist/streaming.mjs.map +1 -1
  26. package/dist/styles/stylesheet.d.ts +8 -0
  27. package/dist/styles.mjs +3 -3
  28. package/dist/{stylesheet-writer-DOGKBGEk.mjs → stylesheet-writer-BrOw4jMY.mjs} +87 -41
  29. package/dist/stylesheet-writer-BrOw4jMY.mjs.map +1 -0
  30. package/dist/{table-BifavDVW.mjs → table-1P8we2gS.mjs} +2 -2
  31. package/dist/{table-BifavDVW.mjs.map → table-1P8we2gS.mjs.map} +1 -1
  32. package/dist/{tree-Bbs1C8Rc.mjs → tree-BX-sRRVp.mjs} +3 -1
  33. package/dist/tree-BX-sRRVp.mjs.map +1 -0
  34. package/dist/{utf8-D91g1XTG.mjs → utf8-Tn3nzyik.mjs} +2 -2
  35. package/dist/{utf8-D91g1XTG.mjs.map → utf8-Tn3nzyik.mjs.map} +1 -1
  36. package/dist/workbook/shared-strings.d.ts +15 -5
  37. package/dist/workbook/views.d.ts +7 -0
  38. package/dist/workbook/workbook.d.ts +15 -0
  39. package/dist/{workbook-T1Y3lstQ.mjs → workbook-CARZS94U.mjs} +39 -14
  40. package/dist/workbook-CARZS94U.mjs.map +1 -0
  41. package/dist/workbook.mjs +1 -1
  42. package/dist/workbook.mjs.map +1 -1
  43. package/dist/worksheet/hyperlinks.d.ts +5 -0
  44. package/dist/worksheet/reader.d.ts +7 -2
  45. package/dist/worksheet/worksheet.d.ts +4 -0
  46. package/dist/{worksheet-C6CWgvP5.mjs → worksheet-C5Ensf_j.mjs} +167 -135
  47. package/dist/worksheet-C5Ensf_j.mjs.map +1 -0
  48. package/dist/worksheet.mjs +2 -2
  49. package/dist/xml/parser.d.ts +20 -0
  50. package/dist/xml/serializer.d.ts +8 -0
  51. package/dist/xml.mjs +4 -4
  52. package/package.json +1 -1
  53. package/dist/cell-style-CN9JXOwm.mjs.map +0 -1
  54. package/dist/load-BA30X4-M.mjs.map +0 -1
  55. package/dist/parser-nk0Lqmcb.mjs.map +0 -1
  56. package/dist/save-C9ChJfWM.mjs.map +0 -1
  57. package/dist/serializer-DQzTTNOS.mjs.map +0 -1
  58. package/dist/stylesheet-writer-DOGKBGEk.mjs.map +0 -1
  59. package/dist/tree-Bbs1C8Rc.mjs.map +0 -1
  60. package/dist/workbook-T1Y3lstQ.mjs.map +0 -1
  61. package/dist/worksheet-C6CWgvP5.mjs.map +0 -1
@@ -1,126 +1,6 @@
1
1
  import { o as OpenXmlSchemaError } from "./exceptions-D-CFwxgm.mjs";
2
2
  import { a as columnLetterFromIndex, g as tupleToCoordinate, h as rangeBoundaries, i as columnIndexFromLetter, n as MAX_ROW, r as boundariesToRangeString, s as coordinateToTuple, t as MAX_COL } from "./coordinate-96Ecci4d.mjs";
3
3
  import { o as cellValueAsString, y as makeCell } from "./cell-BucgGwl3.mjs";
4
- //#region src/worksheet/cell-range.ts
5
- /** Build a CellRange from explicit 1-based bounds. */
6
- function makeCellRange(minRow, minCol, maxRow, maxCol) {
7
- if (!Number.isInteger(minRow) || !Number.isInteger(minCol) || !Number.isInteger(maxRow) || !Number.isInteger(maxCol)) throw new OpenXmlSchemaError("CellRange bounds must be integers");
8
- if (minRow < 1 || maxRow < 1 || minRow > 1048576 || maxRow > 1048576) throw new OpenXmlSchemaError(`CellRange row bounds must be in [1, ${MAX_ROW}]`);
9
- if (minCol < 1 || maxCol < 1 || minCol > 16384 || maxCol > 16384) throw new OpenXmlSchemaError(`CellRange col bounds must be in [1, ${MAX_COL}]`);
10
- return {
11
- minRow: Math.min(minRow, maxRow),
12
- minCol: Math.min(minCol, maxCol),
13
- maxRow: Math.max(minRow, maxRow),
14
- maxCol: Math.max(minCol, maxCol)
15
- };
16
- }
17
- /** Parse a range expression — wraps {@link rangeBoundaries}. */
18
- function parseRange(input) {
19
- return rangeBoundaries(input);
20
- }
21
- /** Format a CellRange back into the canonical OOXML string. */
22
- function rangeToString(r) {
23
- return boundariesToRangeString(r);
24
- }
25
- /** Inclusive containment of a single (row, col) within a range. */
26
- function rangeContainsCell(r, row, col) {
27
- return row >= r.minRow && row <= r.maxRow && col >= r.minCol && col <= r.maxCol;
28
- }
29
- /**
30
- * A1-string convenience for {@link rangeContainsCell}. Parses `cellRef` (e.g.
31
- * `"B3"`) and `rangeRef` (e.g. `"A1:C5"`) and returns `true` iff the cell sits
32
- * inside the range (boundary-inclusive). Throws when either input is malformed.
33
- */
34
- function isCellInRange(cellRef, rangeRef) {
35
- const { col, row } = coordinateToTuple(cellRef);
36
- return rangeContainsCell(parseRange(rangeRef), row, col);
37
- }
38
- /**
39
- * A1-string convenience for {@link rangeContainsRange}. Returns `true` iff the
40
- * `inner` range is wholly contained by `outer` (boundary-inclusive).
41
- * Single-cell refs are accepted on either side via parseRange. Throws on
42
- * malformed input.
43
- */
44
- function isRangeInRange(inner, outer) {
45
- return rangeContainsRange(parseRange(outer), parseRange(inner));
46
- }
47
- /**
48
- * Expand (or shrink) an A1 range by adding `deltaRows` to its bottom edge and
49
- * `deltaCols` to its right edge. The top-left corner is preserved. Negative
50
- * deltas shrink the range; the result must still have at least 1 row and 1
51
- * column (otherwise throws).
52
- *
53
- * Useful for "this is the data range — also reserve room for a totals row" or
54
- * "include one more column to the right" patterns.
55
- */
56
- function expandRangeStr(range, deltaRows, deltaCols) {
57
- if (!Number.isInteger(deltaRows) || !Number.isInteger(deltaCols)) throw new OpenXmlSchemaError("expandRangeStr: deltas must be integers");
58
- const r = parseRange(range);
59
- return rangeToString(makeCellRange(r.minRow, r.minCol, r.maxRow + deltaRows, r.maxCol + deltaCols));
60
- }
61
- /** Inclusive containment of `inner` within `outer`. */
62
- function rangeContainsRange(outer, inner) {
63
- return inner.minRow >= outer.minRow && inner.maxRow <= outer.maxRow && inner.minCol >= outer.minCol && inner.maxCol <= outer.maxCol;
64
- }
65
- /**
66
- * Shift a range by (dr, dc) integer offsets. The returned range is clamped to
67
- * the OOXML grid; callers that want hard bounds should pass values that keep
68
- * the result inside the spec.
69
- */
70
- function shiftRange(r, dr, dc) {
71
- if (!Number.isInteger(dr) || !Number.isInteger(dc)) throw new OpenXmlSchemaError("shiftRange: dr / dc must be integers");
72
- return makeCellRange(r.minRow + dr, r.minCol + dc, r.maxRow + dr, r.maxCol + dc);
73
- }
74
- /** Bounding-box union of two ranges. Always non-null. */
75
- function unionRange(a, b) {
76
- return {
77
- minRow: Math.min(a.minRow, b.minRow),
78
- minCol: Math.min(a.minCol, b.minCol),
79
- maxRow: Math.max(a.maxRow, b.maxRow),
80
- maxCol: Math.max(a.maxCol, b.maxCol)
81
- };
82
- }
83
- /** Returns the rectangular intersection of two ranges, or `null` when disjoint. */
84
- function intersectionRange(a, b) {
85
- const minRow = Math.max(a.minRow, b.minRow);
86
- const minCol = Math.max(a.minCol, b.minCol);
87
- const maxRow = Math.min(a.maxRow, b.maxRow);
88
- const maxCol = Math.min(a.maxCol, b.maxCol);
89
- if (minRow > maxRow || minCol > maxCol) return null;
90
- return {
91
- minRow,
92
- minCol,
93
- maxRow,
94
- maxCol
95
- };
96
- }
97
- /** True iff two ranges share at least one cell. */
98
- function rangesOverlap(a, b) {
99
- return intersectionRange(a, b) !== null;
100
- }
101
- /** Inclusive cell count covered by a range. */
102
- function rangeArea(r) {
103
- return (r.maxRow - r.minRow + 1) * (r.maxCol - r.minCol + 1);
104
- }
105
- /** Parse an sqref string: `"A1:B2 D5 E10:F20"`. Whitespace-delimited. */
106
- function parseMultiCellRange(input) {
107
- const ranges = [];
108
- for (const piece of input.split(/\s+/)) {
109
- if (piece.length === 0) continue;
110
- ranges.push(parseRange(piece));
111
- }
112
- return { ranges };
113
- }
114
- /** Format a MultiCellRange back into an sqref string. */
115
- function multiCellRangeToString(m) {
116
- return m.ranges.map(rangeToString).join(" ");
117
- }
118
- /** True iff any contained range covers (row, col). */
119
- function multiCellRangeContainsCell(m, row, col) {
120
- for (const r of m.ranges) if (rangeContainsCell(r, row, col)) return true;
121
- return false;
122
- }
123
- //#endregion
124
4
  //#region src/styles/colors.ts
125
5
  /**
126
6
  * Legacy 64-entry palette indexed colours fall back to. Verbatim from
@@ -418,6 +298,126 @@ function hslToHex(h, s, l, alpha = 255) {
418
298
  return `${toHexByte(Math.max(0, Math.min(255, Math.round(alpha))))}${toHexByte((rp + m) * 255)}${toHexByte((gp + m) * 255)}${toHexByte((bp + m) * 255)}`;
419
299
  }
420
300
  //#endregion
301
+ //#region src/worksheet/cell-range.ts
302
+ /** Build a CellRange from explicit 1-based bounds. */
303
+ function makeCellRange(minRow, minCol, maxRow, maxCol) {
304
+ if (!Number.isInteger(minRow) || !Number.isInteger(minCol) || !Number.isInteger(maxRow) || !Number.isInteger(maxCol)) throw new OpenXmlSchemaError("CellRange bounds must be integers");
305
+ if (minRow < 1 || maxRow < 1 || minRow > 1048576 || maxRow > 1048576) throw new OpenXmlSchemaError(`CellRange row bounds must be in [1, ${MAX_ROW}]`);
306
+ if (minCol < 1 || maxCol < 1 || minCol > 16384 || maxCol > 16384) throw new OpenXmlSchemaError(`CellRange col bounds must be in [1, ${MAX_COL}]`);
307
+ return {
308
+ minRow: Math.min(minRow, maxRow),
309
+ minCol: Math.min(minCol, maxCol),
310
+ maxRow: Math.max(minRow, maxRow),
311
+ maxCol: Math.max(minCol, maxCol)
312
+ };
313
+ }
314
+ /** Parse a range expression — wraps {@link rangeBoundaries}. */
315
+ function parseRange(input) {
316
+ return rangeBoundaries(input);
317
+ }
318
+ /** Format a CellRange back into the canonical OOXML string. */
319
+ function rangeToString(r) {
320
+ return boundariesToRangeString(r);
321
+ }
322
+ /** Inclusive containment of a single (row, col) within a range. */
323
+ function rangeContainsCell(r, row, col) {
324
+ return row >= r.minRow && row <= r.maxRow && col >= r.minCol && col <= r.maxCol;
325
+ }
326
+ /**
327
+ * A1-string convenience for {@link rangeContainsCell}. Parses `cellRef` (e.g.
328
+ * `"B3"`) and `rangeRef` (e.g. `"A1:C5"`) and returns `true` iff the cell sits
329
+ * inside the range (boundary-inclusive). Throws when either input is malformed.
330
+ */
331
+ function isCellInRange(cellRef, rangeRef) {
332
+ const { col, row } = coordinateToTuple(cellRef);
333
+ return rangeContainsCell(parseRange(rangeRef), row, col);
334
+ }
335
+ /**
336
+ * A1-string convenience for {@link rangeContainsRange}. Returns `true` iff the
337
+ * `inner` range is wholly contained by `outer` (boundary-inclusive).
338
+ * Single-cell refs are accepted on either side via parseRange. Throws on
339
+ * malformed input.
340
+ */
341
+ function isRangeInRange(inner, outer) {
342
+ return rangeContainsRange(parseRange(outer), parseRange(inner));
343
+ }
344
+ /**
345
+ * Expand (or shrink) an A1 range by adding `deltaRows` to its bottom edge and
346
+ * `deltaCols` to its right edge. The top-left corner is preserved. Negative
347
+ * deltas shrink the range; the result must still have at least 1 row and 1
348
+ * column (otherwise throws).
349
+ *
350
+ * Useful for "this is the data range — also reserve room for a totals row" or
351
+ * "include one more column to the right" patterns.
352
+ */
353
+ function expandRangeStr(range, deltaRows, deltaCols) {
354
+ if (!Number.isInteger(deltaRows) || !Number.isInteger(deltaCols)) throw new OpenXmlSchemaError("expandRangeStr: deltas must be integers");
355
+ const r = parseRange(range);
356
+ return rangeToString(makeCellRange(r.minRow, r.minCol, r.maxRow + deltaRows, r.maxCol + deltaCols));
357
+ }
358
+ /** Inclusive containment of `inner` within `outer`. */
359
+ function rangeContainsRange(outer, inner) {
360
+ return inner.minRow >= outer.minRow && inner.maxRow <= outer.maxRow && inner.minCol >= outer.minCol && inner.maxCol <= outer.maxCol;
361
+ }
362
+ /**
363
+ * Shift a range by (dr, dc) integer offsets. The returned range is clamped to
364
+ * the OOXML grid; callers that want hard bounds should pass values that keep
365
+ * the result inside the spec.
366
+ */
367
+ function shiftRange(r, dr, dc) {
368
+ if (!Number.isInteger(dr) || !Number.isInteger(dc)) throw new OpenXmlSchemaError("shiftRange: dr / dc must be integers");
369
+ return makeCellRange(r.minRow + dr, r.minCol + dc, r.maxRow + dr, r.maxCol + dc);
370
+ }
371
+ /** Bounding-box union of two ranges. Always non-null. */
372
+ function unionRange(a, b) {
373
+ return {
374
+ minRow: Math.min(a.minRow, b.minRow),
375
+ minCol: Math.min(a.minCol, b.minCol),
376
+ maxRow: Math.max(a.maxRow, b.maxRow),
377
+ maxCol: Math.max(a.maxCol, b.maxCol)
378
+ };
379
+ }
380
+ /** Returns the rectangular intersection of two ranges, or `null` when disjoint. */
381
+ function intersectionRange(a, b) {
382
+ const minRow = Math.max(a.minRow, b.minRow);
383
+ const minCol = Math.max(a.minCol, b.minCol);
384
+ const maxRow = Math.min(a.maxRow, b.maxRow);
385
+ const maxCol = Math.min(a.maxCol, b.maxCol);
386
+ if (minRow > maxRow || minCol > maxCol) return null;
387
+ return {
388
+ minRow,
389
+ minCol,
390
+ maxRow,
391
+ maxCol
392
+ };
393
+ }
394
+ /** True iff two ranges share at least one cell. */
395
+ function rangesOverlap(a, b) {
396
+ return intersectionRange(a, b) !== null;
397
+ }
398
+ /** Inclusive cell count covered by a range. */
399
+ function rangeArea(r) {
400
+ return (r.maxRow - r.minRow + 1) * (r.maxCol - r.minCol + 1);
401
+ }
402
+ /** Parse an sqref string: `"A1:B2 D5 E10:F20"`. Whitespace-delimited. */
403
+ function parseMultiCellRange(input) {
404
+ const ranges = [];
405
+ for (const piece of input.split(/\s+/)) {
406
+ if (piece.length === 0) continue;
407
+ ranges.push(parseRange(piece));
408
+ }
409
+ return { ranges };
410
+ }
411
+ /** Format a MultiCellRange back into an sqref string. */
412
+ function multiCellRangeToString(m) {
413
+ return m.ranges.map(rangeToString).join(" ");
414
+ }
415
+ /** True iff any contained range covers (row, col). */
416
+ function multiCellRangeContainsCell(m, row, col) {
417
+ for (const r of m.ranges) if (rangeContainsCell(r, row, col)) return true;
418
+ return false;
419
+ }
420
+ //#endregion
421
421
  //#region src/worksheet/dimensions.ts
422
422
  /** Build a single-column ColumnDimension entry covering `col`. */
423
423
  function makeColumnDimension(col, opts = {}) {
@@ -444,19 +444,6 @@ function makeRowDimension(opts = {}) {
444
444
  };
445
445
  }
446
446
  //#endregion
447
- //#region src/worksheet/hyperlinks.ts
448
- function makeHyperlink(opts) {
449
- if (opts.ref === void 0 || opts.ref.length === 0) throw new OpenXmlSchemaError("Hyperlink: ref is required");
450
- return {
451
- ref: opts.ref,
452
- ...opts.target !== void 0 ? { target: opts.target } : {},
453
- ...opts.location !== void 0 ? { location: opts.location } : {},
454
- ...opts.tooltip !== void 0 ? { tooltip: opts.tooltip } : {},
455
- ...opts.display !== void 0 ? { display: opts.display } : {},
456
- ...opts.rId !== void 0 ? { rId: opts.rId } : {}
457
- };
458
- }
459
- //#endregion
460
447
  //#region src/worksheet/views.ts
461
448
  /** Build a SheetView with sensible defaults. */
462
449
  function makeSheetView(opts = {}) {
@@ -538,6 +525,47 @@ const makeSheetProperties = (opts = {}) => {
538
525
  return out;
539
526
  };
540
527
  //#endregion
528
+ //#region src/worksheet/hyperlinks.ts
529
+ /**
530
+ * Anything the OPC `Target` attribute (`xsd:anyURI`) cannot carry: whitespace,
531
+ * C0/C1 controls, and DEL. Excel does not ignore the one bad link — it refuses
532
+ * the whole package and drops content on repair.
533
+ */
534
+ const ILLEGAL_TARGET_CHAR = /[\u0000-\u0020\u007f-\u009f]/;
535
+ /** The authority of a `scheme://authority/…` target, if the target has one. */
536
+ const AUTHORITY = /^[A-Za-z][A-Za-z0-9+.-]*:\/\/([^/?#]*)/;
537
+ const describeChar = (ch) => ch === " " ? "a space" : `U+${ch.codePointAt(0)?.toString(16).toUpperCase().padStart(4, "0")}`;
538
+ /**
539
+ * Reject a target the writer would emit verbatim into the rels and Excel would
540
+ * then refuse. Applied when the hyperlink is authored, not when one is read
541
+ * back off disk — a file that already carries a broken target still loads, so
542
+ * it can be inspected and repaired.
543
+ */
544
+ function assertValidTarget(target) {
545
+ if (target.length === 0) throw new OpenXmlSchemaError("Hyperlink: target is empty — pass a URI, or use `location` for an in-workbook jump");
546
+ const illegal = ILLEGAL_TARGET_CHAR.exec(target);
547
+ if (illegal?.[0] !== void 0) throw new OpenXmlSchemaError(`Hyperlink: target "${target}" contains ${describeChar(illegal[0])} at index ${illegal.index}. The rels Target attribute is xsd:anyURI and Excel refuses the file; percent-encode it or drop it.`);
548
+ const authority = AUTHORITY.exec(target)?.[1];
549
+ if (authority !== void 0 && /[^\u0021-\u007e]/.test(authority)) throw new OpenXmlSchemaError(`Hyperlink: target "${target}" has a non-ASCII host. Percent-encoding does not rescue it — convert the host to punycode (xn--…).`);
550
+ }
551
+ /**
552
+ * Build a validated {@link Hyperlink}. `target` is checked against what the
553
+ * OPC `Target` attribute accepts, so a bad URL fails here rather than as an
554
+ * Excel repair prompt on a package that has already been written.
555
+ */
556
+ function makeHyperlink(opts) {
557
+ if (opts.ref === void 0 || opts.ref.length === 0) throw new OpenXmlSchemaError("Hyperlink: ref is required");
558
+ if (opts.target !== void 0) assertValidTarget(opts.target);
559
+ return {
560
+ ref: opts.ref,
561
+ ...opts.target !== void 0 ? { target: opts.target } : {},
562
+ ...opts.location !== void 0 ? { location: opts.location } : {},
563
+ ...opts.tooltip !== void 0 ? { tooltip: opts.tooltip } : {},
564
+ ...opts.display !== void 0 ? { display: opts.display } : {},
565
+ ...opts.rId !== void 0 ? { rId: opts.rId } : {}
566
+ };
567
+ }
568
+ //#endregion
541
569
  //#region src/worksheet/worksheet.ts
542
570
  /** Build a Worksheet shell. */
543
571
  function makeWorksheet(title) {
@@ -1565,6 +1593,10 @@ function unhideRows(ws, fromRow, toRow) {
1565
1593
  * Replace any prior hyperlink on the same `ref` with the given options. Pass `{
1566
1594
  * target }` for an external URL, `{ location }` for an internal jump, or both.
1567
1595
  * Returns the resulting Hyperlink record.
1596
+ *
1597
+ * `target` is validated against what the rels `Target` attribute (`xsd:anyURI`)
1598
+ * accepts — whitespace, control characters and a non-ASCII host throw an
1599
+ * {@link OpenXmlSchemaError} here rather than producing a package Excel refuses.
1568
1600
  */
1569
1601
  function setHyperlink(ws, ref, opts) {
1570
1602
  if (opts.target === void 0 && opts.location === void 0) throw new OpenXmlSchemaError("setHyperlink: one of target / location is required");
@@ -1721,6 +1753,6 @@ function removeIgnoredErrors(ws, predicate) {
1721
1753
  return before - ws.ignoredErrors.length;
1722
1754
  }
1723
1755
  //#endregion
1724
- export { iterRows as $, makeRowDimension as $t, getCellsInRow as A, unionRange as An, setRangeValues as At, getPopulatedRowIndices as B, unhideColumns as Bt, getAutoFilter as C, parseRange as Cn, setColumnWidth as Ct, getCellHyperlink as D, rangeToString as Dn, setDefaultRowHeight as Dt, getCellComment as E, rangeContainsRange as En, setDefaultColumnWidth as Et, getMaxRow as F, setSheetViewMode as Ft, groupRows as G, writeRange as Gt, getRowDimension as H, unhideRows as Ht, getMergedCells as I, setSheetZoom as It, hideRow as J, freezePaneRef as Jt, hideColumn as K, makeSheetProperties as Kt, getMergedRangeAt as L, ungroupColumns as Lt, getDataExtent as M, setRowHeight as Mt, getFreezePanes as N, setRowHeights as Nt, getCellsInColumn as O, rangesOverlap as On, setFreezePanes as Ot, getMaxCol as P, setSheetTabColor as Pt, iterCells as Q, makeColumnDimension as Qt, getNonEmptyCellCount as R, ungroupRows as Rt, freezePanes as S, parseMultiCellRange as Sn, setColumnDimension as St, getCellByCoord as T, rangeContainsCell as Tn, setComment as Tt, getTable as U, unmergeCells as Ut, getRangeValues as V, unhideRow as Vt, groupColumns as W, unmergeCellsAt as Wt, isMergedCell as X, makeSheetView as Xt, hideRows as Y, makeFreezePane as Yt, isWorksheetEmpty as Z, makeHyperlink as Zt, countCellsByKind as _, intersectionRange as _n, removeIgnoredErrors as _t, addTable as a, hexToHsl as an, makeWorksheet as at, expandRowGroup as b, multiCellRangeContainsCell as bn, setCell as bt, applyToRange as c, luminance as cn, removeAllComments as ct, clearAllCells as d, normaliseRgb as dn, removeAllHyperlinks as dt, adjustLightness as en, iterValues as et, clearRange as f, pickReadableTextColor as fn, removeAllMergedRanges as ft, countCells as g, expandRangeStr as gn, removeHyperlink as gt, copyRange as h, rotateHue as hn, removeDataValidations as ht, addIgnoredError as i, darken as in, listTables as it, getColumnDimension as j, setRowDimension as jt, getCellsInRange as k, shiftRange as kn, setHyperlink as kt, autofitColumns as l, makeColor as ln, removeAllConditionalFormatting as lt, collapseRowGroup as m, rgbColor as mn, removeCellWatches as mt, addConditionalFormatting as n, colorToHex as nn, listDataValidations as nt, appendRow as o, hslToHex as on, mergeCells as ot, collapseColumnGroup as p, resolveIndexedColor as pn, removeAllTables as pt, hideColumns as q, makeLegacyComment as qt, addDataValidation as r, contrastRatio as rn, listHyperlinks as rt, appendRows as s, lighten as sn, moveRange as st, addCellWatch as t, adjustSaturation as tn, listComments as tt, classifyCellValue as u, mixColors as un, removeAllDataValidations as ut, deleteCell as v, isCellInRange as vn, removeTable as vt, getCell as w, rangeArea as wn, setColumnWidths as wt, findCells as x, multiCellRangeToString as xn, setCellByCoord as xt, expandColumnGroup as y, isRangeInRange as yn, setAutoFilter as yt, getPopulatedColumnIndices as z, unhideColumn as zt };
1756
+ export { iterRows as $, makeRowDimension as $t, getCellsInRow as A, rotateHue as An, setRangeValues as At, getPopulatedRowIndices as B, unhideColumns as Bt, getAutoFilter as C, luminance as Cn, setColumnWidth as Ct, getCellHyperlink as D, pickReadableTextColor as Dn, setDefaultRowHeight as Dt, getCellComment as E, normaliseRgb as En, setDefaultColumnWidth as Et, getMaxRow as F, setSheetViewMode as Ft, groupRows as G, writeRange as Gt, getRowDimension as H, unhideRows as Ht, getMergedCells as I, setSheetZoom as It, hideRow as J, makeLegacyComment as Jt, hideColumn as K, makeHyperlink as Kt, getMergedRangeAt as L, ungroupColumns as Lt, getDataExtent as M, setRowHeight as Mt, getFreezePanes as N, setRowHeights as Nt, getCellsInColumn as O, resolveIndexedColor as On, setFreezePanes as Ot, getMaxCol as P, setSheetTabColor as Pt, iterCells as Q, makeColumnDimension as Qt, getNonEmptyCellCount as R, ungroupRows as Rt, freezePanes as S, lighten as Sn, setColumnDimension as St, getCellByCoord as T, mixColors as Tn, setComment as Tt, getTable as U, unmergeCells as Ut, getRangeValues as V, unhideRow as Vt, groupColumns as W, unmergeCellsAt as Wt, isMergedCell as X, makeFreezePane as Xt, hideRows as Y, freezePaneRef as Yt, isWorksheetEmpty as Z, makeSheetView as Zt, countCellsByKind as _, colorToHex as _n, removeIgnoredErrors as _t, addTable as a, multiCellRangeToString as an, makeWorksheet as at, expandRowGroup as b, hexToHsl as bn, setCell as bt, applyToRange as c, rangeArea as cn, removeAllComments as ct, clearAllCells as d, rangeToString as dn, removeAllHyperlinks as dt, expandRangeStr as en, iterValues as et, clearRange as f, rangesOverlap as fn, removeAllMergedRanges as ft, countCells as g, adjustSaturation as gn, removeHyperlink as gt, copyRange as h, adjustLightness as hn, removeDataValidations as ht, addIgnoredError as i, multiCellRangeContainsCell as in, listTables as it, getColumnDimension as j, setRowDimension as jt, getCellsInRange as k, rgbColor as kn, setHyperlink as kt, autofitColumns as l, rangeContainsCell as ln, removeAllConditionalFormatting as lt, collapseRowGroup as m, unionRange as mn, removeCellWatches as mt, addConditionalFormatting as n, isCellInRange as nn, listDataValidations as nt, appendRow as o, parseMultiCellRange as on, mergeCells as ot, collapseColumnGroup as p, shiftRange as pn, removeAllTables as pt, hideColumns as q, makeSheetProperties as qt, addDataValidation as r, isRangeInRange as rn, listHyperlinks as rt, appendRows as s, parseRange as sn, moveRange as st, addCellWatch as t, intersectionRange as tn, listComments as tt, classifyCellValue as u, rangeContainsRange as un, removeAllDataValidations as ut, deleteCell as v, contrastRatio as vn, removeTable as vt, getCell as w, makeColor as wn, setColumnWidths as wt, findCells as x, hslToHex as xn, setCellByCoord as xt, expandColumnGroup as y, darken as yn, setAutoFilter as yt, getPopulatedColumnIndices as z, unhideColumn as zt };
1725
1757
 
1726
- //# sourceMappingURL=worksheet-C6CWgvP5.mjs.map
1758
+ //# sourceMappingURL=worksheet-C5Ensf_j.mjs.map