ooxml-core 1.2.0 → 1.3.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 (206) hide show
  1. package/dist/{PptxHandler-SJTINPU4.mjs → PptxHandler-ZPJNHEZZ.mjs} +2 -2
  2. package/dist/automation/index.cjs +3294 -661
  3. package/dist/automation/index.mjs +3294 -661
  4. package/dist/chart/bar-cluster-geometry.d.ts +6 -0
  5. package/dist/chart/bar-cluster-geometry.d.ts.map +1 -1
  6. package/dist/chart/index.cjs +5 -2
  7. package/dist/chart/index.mjs +5 -3
  8. package/dist/chart/render/chart-spacing.d.ts.map +1 -1
  9. package/dist/{chunk-TEOAOAIF.mjs → chunk-BB55ASTX.mjs} +3 -3
  10. package/dist/{chunk-CQQAPUAG.mjs → chunk-H4TPDZV4.mjs} +11 -9
  11. package/dist/{chunk-VYTA2OUN.mjs → chunk-IVDC75E5.mjs} +1 -1
  12. package/dist/{chunk-FI4RSJ24.mjs → chunk-QPQDLSJQ.mjs} +1 -1
  13. package/dist/{chunk-XCZ7U3GZ.mjs → chunk-XGLKW3JJ.mjs} +13 -9
  14. package/dist/docx/index.cjs +4 -2
  15. package/dist/docx/index.mjs +4 -2
  16. package/dist/docx/layout/index.cjs +4 -2
  17. package/dist/docx/layout/index.mjs +4 -2
  18. package/dist/docx/ui/index.cjs +4 -2
  19. package/dist/docx/ui/index.mjs +4 -2
  20. package/dist/index.cjs +5 -2
  21. package/dist/index.mjs +5 -2
  22. package/dist/pptx/automation/index.cjs +29 -17
  23. package/dist/pptx/automation/index.mjs +5 -5
  24. package/dist/pptx/chunks/index-EZJZ7USt.d.ts.map +1 -1
  25. package/dist/pptx/cli/index.cjs +29 -17
  26. package/dist/pptx/cli/index.mjs +4 -4
  27. package/dist/pptx/converter/index.mjs +2 -2
  28. package/dist/pptx/index.cjs +29 -17
  29. package/dist/pptx/index.mjs +5 -5
  30. package/dist/teams/index.cjs +176 -92
  31. package/dist/teams/index.mjs +176 -92
  32. package/dist/visio/clipboard-resources.d.ts +11 -0
  33. package/dist/visio/clipboard-resources.d.ts.map +1 -0
  34. package/dist/visio/clipboard-types.d.ts +26 -0
  35. package/dist/visio/clipboard-types.d.ts.map +1 -0
  36. package/dist/visio/clipboard-xml.d.ts +8 -0
  37. package/dist/visio/clipboard-xml.d.ts.map +1 -0
  38. package/dist/visio/clipboard.d.ts +7 -0
  39. package/dist/visio/clipboard.d.ts.map +1 -0
  40. package/dist/visio/create-document.d.ts +8 -0
  41. package/dist/visio/create-document.d.ts.map +1 -0
  42. package/dist/visio/edit-commands.d.ts +19 -2
  43. package/dist/visio/edit-commands.d.ts.map +1 -1
  44. package/dist/visio/edit-delete.d.ts +9 -0
  45. package/dist/visio/edit-delete.d.ts.map +1 -0
  46. package/dist/visio/edit-duplicate-commands.d.ts +14 -0
  47. package/dist/visio/edit-duplicate-commands.d.ts.map +1 -0
  48. package/dist/visio/edit-duplicate-scope.d.ts +4 -0
  49. package/dist/visio/edit-duplicate-scope.d.ts.map +1 -0
  50. package/dist/visio/edit-duplicate.d.ts +10 -0
  51. package/dist/visio/edit-duplicate.d.ts.map +1 -0
  52. package/dist/visio/edit-formatting-cell-admission.d.ts +3 -0
  53. package/dist/visio/edit-formatting-cell-admission.d.ts.map +1 -0
  54. package/dist/visio/edit-formatting-commands.d.ts +46 -0
  55. package/dist/visio/edit-formatting-commands.d.ts.map +1 -0
  56. package/dist/visio/edit-formatting-font.d.ts +6 -0
  57. package/dist/visio/edit-formatting-font.d.ts.map +1 -0
  58. package/dist/visio/edit-formatting-paint-scope.d.ts +6 -0
  59. package/dist/visio/edit-formatting-paint-scope.d.ts.map +1 -0
  60. package/dist/visio/edit-formatting-paint.d.ts +6 -0
  61. package/dist/visio/edit-formatting-paint.d.ts.map +1 -0
  62. package/dist/visio/edit-formatting-rows.d.ts +14 -0
  63. package/dist/visio/edit-formatting-rows.d.ts.map +1 -0
  64. package/dist/visio/edit-formatting-scope.d.ts +6 -0
  65. package/dist/visio/edit-formatting-scope.d.ts.map +1 -0
  66. package/dist/visio/edit-formatting-text.d.ts +8 -0
  67. package/dist/visio/edit-formatting-text.d.ts.map +1 -0
  68. package/dist/visio/edit-formatting.d.ts +12 -0
  69. package/dist/visio/edit-formatting.d.ts.map +1 -0
  70. package/dist/visio/edit-geometry.d.ts.map +1 -1
  71. package/dist/visio/edit-paste-commands.d.ts +15 -0
  72. package/dist/visio/edit-paste-commands.d.ts.map +1 -0
  73. package/dist/visio/edit-paste.d.ts +5 -0
  74. package/dist/visio/edit-paste.d.ts.map +1 -0
  75. package/dist/visio/edit-recalculate.d.ts +3 -1
  76. package/dist/visio/edit-recalculate.d.ts.map +1 -1
  77. package/dist/visio/edit-resize-anchor.d.ts +8 -0
  78. package/dist/visio/edit-resize-anchor.d.ts.map +1 -0
  79. package/dist/visio/edit-scope.d.ts.map +1 -1
  80. package/dist/visio/edit-shape-create.d.ts +1 -1
  81. package/dist/visio/edit-shape-create.d.ts.map +1 -1
  82. package/dist/visio/edit-shape-order.d.ts +7 -0
  83. package/dist/visio/edit-shape-order.d.ts.map +1 -0
  84. package/dist/visio/edit-style-admission.d.ts +17 -0
  85. package/dist/visio/edit-style-admission.d.ts.map +1 -0
  86. package/dist/visio/edit-text-scope.d.ts +7 -0
  87. package/dist/visio/edit-text-scope.d.ts.map +1 -0
  88. package/dist/visio/edit-text.d.ts +1 -1
  89. package/dist/visio/edit-text.d.ts.map +1 -1
  90. package/dist/visio/edit.d.ts +1 -1
  91. package/dist/visio/edit.d.ts.map +1 -1
  92. package/dist/visio/index.cjs +3245 -1077
  93. package/dist/visio/index.d.ts +3 -1
  94. package/dist/visio/index.d.ts.map +1 -1
  95. package/dist/visio/index.mjs +3241 -1079
  96. package/dist/visio/line-pattern.d.ts +1 -1
  97. package/dist/visio/line-pattern.d.ts.map +1 -1
  98. package/dist/visio/line-style.d.ts.map +1 -1
  99. package/dist/visio/model.d.ts +23 -3
  100. package/dist/visio/model.d.ts.map +1 -1
  101. package/dist/visio/parser.d.ts.map +1 -1
  102. package/dist/visio/plain-text.d.ts +5 -0
  103. package/dist/visio/plain-text.d.ts.map +1 -0
  104. package/dist/visio/resize-anchor.d.ts +27 -0
  105. package/dist/visio/resize-anchor.d.ts.map +1 -0
  106. package/dist/visio/source-paint.d.ts +5 -0
  107. package/dist/visio/source-paint.d.ts.map +1 -0
  108. package/dist/visio/style.d.ts.map +1 -1
  109. package/dist/visio/theme-root.d.ts.map +1 -1
  110. package/dist/visio/ui/contract.d.ts +10 -6
  111. package/dist/visio/ui/contract.d.ts.map +1 -1
  112. package/dist/visio/ui/draw-plan.d.ts +32 -0
  113. package/dist/visio/ui/draw-plan.d.ts.map +1 -0
  114. package/dist/visio/ui/edit-commands.d.ts.map +1 -1
  115. package/dist/visio/ui/formatting.d.ts +28 -0
  116. package/dist/visio/ui/formatting.d.ts.map +1 -0
  117. package/dist/visio/ui/index.cjs +1305 -15
  118. package/dist/visio/ui/index.d.ts +15 -0
  119. package/dist/visio/ui/index.d.ts.map +1 -1
  120. package/dist/visio/ui/index.mjs +1261 -16
  121. package/dist/visio/ui/line-dash.d.ts +4 -0
  122. package/dist/visio/ui/line-dash.d.ts.map +1 -0
  123. package/dist/visio/ui/marquee.d.ts +15 -0
  124. package/dist/visio/ui/marquee.d.ts.map +1 -0
  125. package/dist/visio/ui/page-edit.d.ts.map +1 -1
  126. package/dist/visio/ui/scene-validation.d.ts.map +1 -1
  127. package/dist/visio/ui/selection.d.ts +12 -0
  128. package/dist/visio/ui/selection.d.ts.map +1 -0
  129. package/dist/visio/ui/shape-arrange.d.ts +17 -0
  130. package/dist/visio/ui/shape-arrange.d.ts.map +1 -0
  131. package/dist/visio/ui/shape-clipboard.d.ts +10 -0
  132. package/dist/visio/ui/shape-clipboard.d.ts.map +1 -0
  133. package/dist/visio/ui/shape-duplicate.d.ts +5 -0
  134. package/dist/visio/ui/shape-duplicate.d.ts.map +1 -0
  135. package/dist/visio/ui/shape-formatting.d.ts +14 -0
  136. package/dist/visio/ui/shape-formatting.d.ts.map +1 -0
  137. package/dist/visio/ui/shape-move.d.ts +14 -0
  138. package/dist/visio/ui/shape-move.d.ts.map +1 -0
  139. package/dist/visio/ui/shape-order.d.ts +4 -0
  140. package/dist/visio/ui/shape-order.d.ts.map +1 -0
  141. package/dist/visio/ui/shape-resize.d.ts +61 -0
  142. package/dist/visio/ui/shape-resize.d.ts.map +1 -0
  143. package/dist/visio/ui/size-position.d.ts +19 -0
  144. package/dist/visio/ui/size-position.d.ts.map +1 -0
  145. package/dist/visio/ui/snapshot-scene.d.ts.map +1 -1
  146. package/dist/visio/ui/svg-stroke.d.ts +8 -0
  147. package/dist/visio/ui/svg-stroke.d.ts.map +1 -0
  148. package/dist/visio/ui/text-replace-selection.d.ts +9 -0
  149. package/dist/visio/ui/text-replace-selection.d.ts.map +1 -0
  150. package/dist/visio/ui/text-replace-snapshot.d.ts +14 -0
  151. package/dist/visio/ui/text-replace-snapshot.d.ts.map +1 -0
  152. package/dist/visio/ui/text-replace-types.d.ts +48 -0
  153. package/dist/visio/ui/text-replace-types.d.ts.map +1 -0
  154. package/dist/visio/ui/text-replace.d.ts +18 -0
  155. package/dist/visio/ui/text-replace.d.ts.map +1 -0
  156. package/dist/xlsx/edit/context.d.ts +3 -1
  157. package/dist/xlsx/edit/context.d.ts.map +1 -1
  158. package/dist/xlsx/edit/history.d.ts +18 -0
  159. package/dist/xlsx/edit/history.d.ts.map +1 -1
  160. package/dist/xlsx/edit/session-calc.d.ts +30 -8
  161. package/dist/xlsx/edit/session-calc.d.ts.map +1 -1
  162. package/dist/xlsx/edit/session.d.ts.map +1 -1
  163. package/dist/xlsx/edit/sheets.d.ts.map +1 -1
  164. package/dist/xlsx/edit/types.d.ts +23 -3
  165. package/dist/xlsx/edit/types.d.ts.map +1 -1
  166. package/dist/xlsx/formula/engine-core.d.ts.map +1 -1
  167. package/dist/xlsx/formula/engine-host.d.ts +6 -2
  168. package/dist/xlsx/formula/engine-host.d.ts.map +1 -1
  169. package/dist/xlsx/formula/engine-prepare.d.ts +33 -0
  170. package/dist/xlsx/formula/engine-prepare.d.ts.map +1 -0
  171. package/dist/xlsx/formula/engine-structure.d.ts +40 -0
  172. package/dist/xlsx/formula/engine-structure.d.ts.map +1 -0
  173. package/dist/xlsx/formula/engine-types.d.ts +26 -0
  174. package/dist/xlsx/formula/engine-types.d.ts.map +1 -1
  175. package/dist/xlsx/formula/engine.d.ts.map +1 -1
  176. package/dist/xlsx/formula/formula-shape.d.ts +28 -0
  177. package/dist/xlsx/formula/formula-shape.d.ts.map +1 -0
  178. package/dist/xlsx/formula/graph-index.d.ts +3 -1
  179. package/dist/xlsx/formula/graph-index.d.ts.map +1 -1
  180. package/dist/xlsx/formula/graph.d.ts +5 -0
  181. package/dist/xlsx/formula/graph.d.ts.map +1 -1
  182. package/dist/xlsx/formula/lexemes.d.ts.map +1 -1
  183. package/dist/xlsx/formula/parse-cache.d.ts +9 -0
  184. package/dist/xlsx/formula/parse-cache.d.ts.map +1 -0
  185. package/dist/xlsx/formula/parser.d.ts +3 -0
  186. package/dist/xlsx/formula/parser.d.ts.map +1 -1
  187. package/dist/xlsx/formula/ref-text.d.ts +14 -0
  188. package/dist/xlsx/formula/ref-text.d.ts.map +1 -0
  189. package/dist/xlsx/formula/references.d.ts.map +1 -1
  190. package/dist/xlsx/formula/shift-formula.d.ts +19 -0
  191. package/dist/xlsx/formula/shift-formula.d.ts.map +1 -0
  192. package/dist/xlsx/formula/shift-graph.d.ts +42 -0
  193. package/dist/xlsx/formula/shift-graph.d.ts.map +1 -0
  194. package/dist/xlsx/formula/transform.d.ts +2 -23
  195. package/dist/xlsx/formula/transform.d.ts.map +1 -1
  196. package/dist/xlsx/index.cjs +1087 -338
  197. package/dist/xlsx/index.mjs +1087 -339
  198. package/dist/xlsx/layout/index.d.ts +1 -1
  199. package/dist/xlsx/layout/index.d.ts.map +1 -1
  200. package/dist/xlsx/layout/sheet-queries.d.ts +7 -0
  201. package/dist/xlsx/layout/sheet-queries.d.ts.map +1 -1
  202. package/dist/xlsx/load/index.cjs +170 -99
  203. package/dist/xlsx/load/index.mjs +170 -99
  204. package/dist/xlsx/ui/index.cjs +1072 -332
  205. package/dist/xlsx/ui/index.mjs +1072 -332
  206. package/package.json +1 -1
@@ -13,7 +13,7 @@ export { hasSparklineAt, readSparklineValues, resolveSparklineRange, sparklineVi
13
13
  export { cellView, effectiveStyleId, generalAlignment, rotationDegrees, type CellViewOptions, } from './cell-view.js';
14
14
  export { createConditionalFormatEvaluator, scaleColor, type CellAt, type ConditionalFormatOptions, type FormulaEvaluator, } from './cf-evaluator.js';
15
15
  export { compareValues, percentile } from './cf-values.js';
16
- export { isOverflowTarget, mergeView, overflowExtent, selectionStats, type OverflowExtent, type SelectionStats, } from './sheet-queries.js';
16
+ export { formatSelectionStat, isOverflowTarget, mergeView, overflowExtent, selectionStats, type OverflowExtent, type SelectionStats, } from './sheet-queries.js';
17
17
  export { navigate, type NavigationKey } from './navigate.js';
18
18
  export { autoFitColumnWidth, type MeasureText } from './autofit.js';
19
19
  export { autoSeriesColor, modulateLuminance, chartColorScheme, } from '../../chart/render/chart-colors.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../xlsx/layout/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../xlsx/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,cAAc,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EACN,iBAAiB,EACjB,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACvB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,YAAY,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EACN,sBAAsB,EACtB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,4BAA4B,GACjC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,yBAAyB,EACzB,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,UAAU,EACf,KAAK,QAAQ,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC5F,YAAY,EACX,WAAW,EACX,QAAQ,EACR,0BAA0B,EAC1B,uBAAuB,EACvB,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,SAAS,EACT,UAAU,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACnG,OAAO,EACN,cAAc,EACd,eAAe,EACf,aAAa,EACb,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,aAAa,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,KAAK,eAAe,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,gCAAgC,EAChC,UAAU,EACV,KAAK,MAAM,EACX,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EACN,mBAAmB,EACnB,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,cAAc,EACd,KAAK,cAAc,EACnB,KAAK,cAAc,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EACN,eAAe,EACf,iBAAiB,EACjB,gBAAgB,GAChB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACN,eAAe,EACf,SAAS,EACT,aAAa,EACb,KAAK,SAAS,EACd,KAAK,gBAAgB,GACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACN,cAAc,EACd,SAAS,EACT,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,aAAa,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EACN,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GAChB,MAAM,eAAe,CAAC"}
@@ -13,12 +13,19 @@ export interface SelectionStats {
13
13
  average?: number;
14
14
  min?: number;
15
15
  max?: number;
16
+ /**
17
+ * The number format of the first numeric cell, which Excel shows the average, minimum,
18
+ * maximum and sum in (see {@link formatSelectionStat}). Present with numbers.
19
+ */
20
+ numFmt?: string;
16
21
  }
17
22
  /**
18
23
  * Status-bar statistics over selected ranges. Only stored cells are visited, so whole-column
19
24
  * selections stay cheap. Overlapping ranges count their shared cells once.
20
25
  */
21
26
  export declare function selectionStats(workbook: Workbook, sheet: number | Worksheet, ranges: CellRange[]): SelectionStats;
27
+ /** A statistic as the status bar shows it: in the selection's number format (General without). */
28
+ export declare function formatSelectionStat(workbook: Workbook, stats: SelectionStats, value: number): string;
22
29
  /** A cell that text may overflow into: nothing stored there, or an empty value without a formula. */
23
30
  export declare function isOverflowTarget(sheet: Worksheet, row: number, col: number): boolean;
24
31
  export interface OverflowExtent {
@@ -1 +1 @@
1
- {"version":3,"file":"sheet-queries.d.ts","sourceRoot":"","sources":["../../../xlsx/layout/sheet-queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAErD,wCAAwC;AACxC,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAK/E;AAED,MAAM,WAAW,cAAc;IAC9B,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC7B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,EAAE,SAAS,EAAE,GACjB,cAAc,CA8BhB;AAED,qGAAqG;AACrG,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAIpF;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC7B,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,UAAU,EAClB,OAAO,SAAM,GACX,cAAc,CA+BhB"}
1
+ {"version":3,"file":"sheet-queries.d.ts","sourceRoot":"","sources":["../../../xlsx/layout/sheet-queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAIpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAErD,wCAAwC;AACxC,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAK/E;AAED,MAAM,WAAW,cAAc;IAC9B,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC7B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,EAAE,SAAS,EAAE,GACjB,cAAc,CAiChB;AAED,kGAAkG;AAClG,wBAAgB,mBAAmB,CAClC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,MAAM,GACX,MAAM,CAER;AAED,qGAAqG;AACrG,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAIpF;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC7B,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,UAAU,EAClB,OAAO,SAAM,GACX,cAAc,CA+BhB"}
@@ -5039,7 +5039,7 @@ var NAME_RE = /^[A-Za-z_\\\u00A1-\uFFFF][A-Za-z0-9_.?\\\u00A1-\uFFFF]*/;
5039
5039
  var CELL_RE = /^(\$?)([A-Za-z]{1,3})(\$?)(\d{1,7})/;
5040
5040
  var COLS_RE = /^(\$?)([A-Za-z]{1,3}):(\$?)([A-Za-z]{1,3})/;
5041
5041
  var ROWS_RE = /^(\$?)(\d{1,7}):(\$?)(\d{1,7})/;
5042
- var NUMBER_RE = /^(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/;
5042
+ var NUMBER_RE = /^(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?/;
5043
5043
  var sticky = (re) => new RegExp(re.source.replace(/^\^/, ""), "y");
5044
5044
  var CELL_AT = sticky(CELL_RE);
5045
5045
  var COLS_AT = sticky(COLS_RE);
@@ -5199,14 +5199,13 @@ function splitSheets(text) {
5199
5199
  if (book !== void 0) out.book = book;
5200
5200
  return out;
5201
5201
  }
5202
- var PREFIX_AT = /(\[\d+\])?([A-Za-z0-9_.\u00A1-\uFFFF]+)(?::([A-Za-z0-9_.\u00A1-\uFFFF]+))?!/y;
5203
5202
  function readPrefix(source2, at) {
5204
5203
  const ch = source2[at];
5205
5204
  if (ch === "'") {
5206
5205
  const quoted = readQuoted(source2, at);
5207
5206
  if (source2[at + quoted.length] !== "!") return void 0;
5208
- const length = quoted.length + 1;
5209
- return { prefix: { text: source2.slice(at, at + length), ...splitSheets(quoted.name) }, length };
5207
+ const length2 = quoted.length + 1;
5208
+ return { prefix: { text: source2.slice(at, at + length2), ...splitSheets(quoted.name) }, length: length2 };
5210
5209
  }
5211
5210
  let i2 = at;
5212
5211
  if (ch === "[") {
@@ -5215,13 +5214,23 @@ function readPrefix(source2, at) {
5215
5214
  if (i2 === at + 1 || source2[i2] !== "]") return void 0;
5216
5215
  i2++;
5217
5216
  }
5217
+ const sheetFrom = i2;
5218
5218
  while (i2 < source2.length && isSheetCharCode(source2.charCodeAt(i2))) i2++;
5219
- if (source2[i2] !== "!" && source2[i2] !== ":") return void 0;
5220
- const m = matchAt(PREFIX_AT, source2, at);
5221
- if (!m) return void 0;
5222
- if (!m[1] && /^\d/.test(m[2] ?? "") && !m[3]) return void 0;
5223
- const raw2 = m[0].slice(0, -1);
5224
- return { prefix: { text: m[0], ...splitSheets(raw2) }, length: m[0].length };
5219
+ if (i2 === sheetFrom) return void 0;
5220
+ let lastFrom = -1;
5221
+ if (source2[i2] === ":") {
5222
+ lastFrom = i2 + 1;
5223
+ i2 = lastFrom;
5224
+ while (i2 < source2.length && isSheetCharCode(source2.charCodeAt(i2))) i2++;
5225
+ if (i2 === lastFrom) return void 0;
5226
+ }
5227
+ if (source2[i2] !== "!") return void 0;
5228
+ if (ch !== "[" && lastFrom < 0 && isDigitCode(source2.charCodeAt(sheetFrom))) return void 0;
5229
+ const length = i2 + 1 - at;
5230
+ return {
5231
+ prefix: { text: source2.slice(at, at + length), ...splitSheets(source2.slice(at, i2)) },
5232
+ length
5233
+ };
5225
5234
  }
5226
5235
  function numberLiteral(text) {
5227
5236
  if (text.length <= 15) return Number(text);
@@ -5386,7 +5395,7 @@ function readName(source2, at, start, prefix) {
5386
5395
  }
5387
5396
  var joinTokens = (tokens2) => tokens2.map((t) => t.text).join("");
5388
5397
 
5389
- // xlsx/formula/transform.ts
5398
+ // xlsx/formula/ref-text.ts
5390
5399
  function safeTokens(formula) {
5391
5400
  try {
5392
5401
  return tokenize(formula);
@@ -5405,50 +5414,26 @@ function formatRefSpec(spec2) {
5405
5414
  if (spec2.kind === "cell") return a2;
5406
5415
  return `${a2}:${cornerText(spec2.end, spec2.kind)}`;
5407
5416
  }
5408
- function rewrite(token, ref) {
5417
+ function rewriteRef(token, ref) {
5409
5418
  const prefix = token.prefix?.text ?? "";
5410
5419
  if (!ref) return `${prefix}#REF!`;
5411
5420
  return `${prefix}${formatRefSpec(ref)}${token.spill ? "#" : ""}`;
5412
5421
  }
5413
5422
  var sameSpec = (a2, b) => a2.kind === b.kind && a2.start.row === b.start.row && a2.start.col === b.start.col && a2.end.row === b.end.row && a2.end.col === b.end.col;
5414
- function translateFormula(formula, dRow, dCol) {
5415
- const tokens2 = safeTokens(formula);
5416
- if (!tokens2) return formula;
5417
- for (const token of tokens2) {
5418
- if (token.kind !== "ref" || !token.ref) continue;
5419
- const spec2 = token.ref;
5420
- const move = (c2) => {
5421
- const row2 = spec2.kind === "cols" || c2.rowAbs ? c2.row : c2.row + dRow;
5422
- const col = spec2.kind === "rows" || c2.colAbs ? c2.col : c2.col + dCol;
5423
- if (row2 < 0 || row2 > MAX_ROW || col < 0 || col > MAX_COL) return void 0;
5424
- return { ...c2, row: row2, col };
5425
- };
5426
- const start = move(spec2.start);
5427
- const end = move(spec2.end);
5428
- const next = start && end ? { kind: spec2.kind, start, end } : void 0;
5429
- if (next && sameSpec(next, spec2)) continue;
5430
- token.text = rewrite(token, next);
5431
- }
5432
- return joinTokens(tokens2);
5423
+ var needsQuote = (name) => !/^[A-Za-z_¡-￿][A-Za-z0-9_.¡-￿]*$/.test(name) || /^[A-Za-z]{1,3}\d+$/.test(name) || /^(?:R\d*C?\d*|C\d*)$/i.test(name) || /^(?:TRUE|FALSE)$/i.test(name);
5424
+ function prefixText(prefix) {
5425
+ const sheets = prefix.sheet2 !== void 0 ? `${prefix.sheet}:${prefix.sheet2}` : prefix.sheet;
5426
+ const book = prefix.book !== void 0 ? `[${prefix.book}]` : "";
5427
+ const quote2 = needsQuote(prefix.sheet) || prefix.sheet2 !== void 0 && needsQuote(prefix.sheet2);
5428
+ return quote2 ? `'${(book + sheets).replace(/'/g, "''")}'!` : `${book}${sheets}!`;
5433
5429
  }
5434
- var sheetMatches = (prefix, formulaSheet, sheet) => {
5435
- if (prefix?.book !== void 0) return false;
5436
- const name = prefix ? prefix.sheet : formulaSheet;
5437
- return name.toLowerCase() === sheet.toLowerCase();
5438
- };
5439
- function shiftInterval(a2, b, at, count2, max) {
5440
- if (count2 > 0) {
5441
- const na2 = a2 >= at ? a2 + count2 : a2;
5442
- const nb2 = b >= at ? b + count2 : b;
5443
- if (nb2 > max) return na2 > max ? void 0 : [na2, max];
5444
- return [na2, nb2];
5445
- }
5446
- const n = -count2;
5447
- const last = at + n - 1;
5448
- if (a2 >= at && b <= last) return void 0;
5449
- const na = a2 < at ? a2 : a2 <= last ? at : a2 - n;
5450
- const nb = b < at ? b : b <= last ? at - 1 : b - n;
5451
- return [na, nb];
5430
+
5431
+ // xlsx/formula/shift-formula.ts
5432
+ var templates = /* @__PURE__ */ new Map();
5433
+ var MAX_TEMPLATES = 2e5;
5434
+ function remember(text, template) {
5435
+ if (templates.size >= MAX_TEMPLATES) templates.clear();
5436
+ templates.set(text, template);
5452
5437
  }
5453
5438
  function mergeSpacedAreas(tokens2) {
5454
5439
  const out = [];
@@ -5475,63 +5460,145 @@ function mergeSpacedAreas(tokens2) {
5475
5460
  }
5476
5461
  return out;
5477
5462
  }
5478
- function shiftFormula(formula, formulaSheet, spec2) {
5479
- if (spec2.count === 0) return formula;
5463
+ function templateOf(formula) {
5464
+ const cached = templates.get(formula);
5465
+ if (cached !== void 0) return cached;
5480
5466
  const raw2 = safeTokens(formula);
5481
- if (!raw2) return formula;
5482
- const tokens2 = mergeSpacedAreas(raw2);
5483
- const isRow = spec2.axis === "row";
5484
- for (const token of tokens2) {
5485
- if (token.kind !== "ref" || !token.ref || !sheetMatches(token.prefix, formulaSheet, spec2.sheet))
5486
- continue;
5487
- const ref = token.ref;
5488
- if (isRow && ref.kind === "cols" || !isRow && ref.kind === "rows") continue;
5489
- const startFirst = isRow ? ref.start.row <= ref.end.row : ref.start.col <= ref.end.col;
5490
- const lo = startFirst ? ref.start : ref.end;
5491
- const hi = startFirst ? ref.end : ref.start;
5492
- const shifted = shiftInterval(
5493
- isRow ? lo.row : lo.col,
5494
- isRow ? hi.row : hi.col,
5495
- spec2.at,
5496
- spec2.count,
5497
- isRow ? MAX_ROW : MAX_COL
5498
- );
5499
- let next;
5500
- if (shifted) {
5501
- const [a2, b] = shifted;
5502
- const nlo = isRow ? { ...lo, row: a2 } : { ...lo, col: a2 };
5503
- const nhi = isRow ? { ...hi, row: b } : { ...hi, col: b };
5504
- next = { kind: ref.kind, start: startFirst ? nlo : nhi, end: startFirst ? nhi : nlo };
5505
- if (ref.kind === "cell") next.end = next.start;
5467
+ let template = null;
5468
+ if (raw2) {
5469
+ template = [];
5470
+ let literal = "";
5471
+ for (const token of mergeSpacedAreas(raw2)) {
5472
+ if (token.kind !== "ref" && !(token.kind === "name" && token.prefix)) {
5473
+ literal += token.text;
5474
+ continue;
5475
+ }
5476
+ if (literal) template.push(literal);
5477
+ literal = "";
5478
+ const part = { kind: token.kind, text: token.text };
5479
+ if (token.prefix) {
5480
+ part.prefix = token.prefix;
5481
+ if (token.prefix.book === void 0) part.sheet = token.prefix.sheet.toLowerCase();
5482
+ }
5483
+ if (token.ref) part.ref = token.ref;
5484
+ if (token.spill) part.spill = true;
5485
+ template.push(part);
5506
5486
  }
5507
- if (next && sameSpec(next, ref)) continue;
5508
- token.text = rewrite(token, next);
5487
+ if (literal) template.push(literal);
5509
5488
  }
5510
- return joinTokens(tokens2);
5489
+ remember(formula, template);
5490
+ return template;
5511
5491
  }
5512
- var needsQuote = (name) => !/^[A-Za-z_\u00A1-\uFFFF][A-Za-z0-9_.\u00A1-\uFFFF]*$/.test(name) || /^[A-Za-z]{1,3}\d+$/.test(name) || /^(?:R\d*C?\d*|C\d*)$/i.test(name) || /^(?:TRUE|FALSE)$/i.test(name);
5513
- function prefixText(prefix) {
5514
- const sheets = prefix.sheet2 !== void 0 ? `${prefix.sheet}:${prefix.sheet2}` : prefix.sheet;
5515
- const book = prefix.book !== void 0 ? `[${prefix.book}]` : "";
5516
- const quote2 = needsQuote(prefix.sheet) || prefix.sheet2 !== void 0 && needsQuote(prefix.sheet2);
5517
- return quote2 ? `'${(book + sheets).replace(/'/g, "''")}'!` : `${book}${sheets}!`;
5492
+ function rewriteTemplate(formula, rewrite2) {
5493
+ const template = templateOf(formula);
5494
+ if (!template) return formula;
5495
+ let next;
5496
+ for (let i2 = 0; i2 < template.length; i2++) {
5497
+ const part = template[i2];
5498
+ if (typeof part === "string") continue;
5499
+ const changed = rewrite2(part);
5500
+ if (!changed) continue;
5501
+ next ??= template.slice();
5502
+ next[i2] = changed;
5503
+ }
5504
+ if (!next) return formula;
5505
+ const text = next.map((part) => typeof part === "string" ? part : part.text).join("");
5506
+ remember(text, next);
5507
+ return text;
5508
+ }
5509
+ function shiftInterval(a2, b, at, count2, max) {
5510
+ if (count2 > 0) {
5511
+ const na2 = a2 >= at ? a2 + count2 : a2;
5512
+ const nb2 = b >= at ? b + count2 : b;
5513
+ if (nb2 > max) return na2 > max ? void 0 : [na2, max];
5514
+ return [na2, nb2];
5515
+ }
5516
+ const n = -count2;
5517
+ const last = at + n - 1;
5518
+ if (a2 >= at && b <= last) return void 0;
5519
+ const na = a2 < at ? a2 : a2 <= last ? at : a2 - n;
5520
+ const nb = b < at ? b : b <= last ? at - 1 : b - n;
5521
+ return [na, nb];
5522
+ }
5523
+ function shiftRef(ref, spec2) {
5524
+ const isRow = spec2.axis === "row";
5525
+ if (isRow && ref.kind === "cols" || !isRow && ref.kind === "rows") return ref;
5526
+ const startFirst = isRow ? ref.start.row <= ref.end.row : ref.start.col <= ref.end.col;
5527
+ const lo = startFirst ? ref.start : ref.end;
5528
+ const hi = startFirst ? ref.end : ref.start;
5529
+ const shifted = shiftInterval(
5530
+ isRow ? lo.row : lo.col,
5531
+ isRow ? hi.row : hi.col,
5532
+ spec2.at,
5533
+ spec2.count,
5534
+ isRow ? MAX_ROW : MAX_COL
5535
+ );
5536
+ if (!shifted) return void 0;
5537
+ const [a2, b] = shifted;
5538
+ const nlo = isRow ? { ...lo, row: a2 } : { ...lo, col: a2 };
5539
+ const nhi = isRow ? { ...hi, row: b } : { ...hi, col: b };
5540
+ const next = {
5541
+ kind: ref.kind,
5542
+ start: startFirst ? nlo : nhi,
5543
+ end: startFirst ? nhi : nlo
5544
+ };
5545
+ if (ref.kind === "cell") next.end = next.start;
5546
+ return sameSpec(next, ref) ? ref : next;
5547
+ }
5548
+ function shiftFormula(formula, formulaSheet, spec2) {
5549
+ if (spec2.count === 0) return formula;
5550
+ const sheet = spec2.sheet.toLowerCase();
5551
+ const own = formulaSheet.toLowerCase() === sheet;
5552
+ return rewriteTemplate(formula, (part) => {
5553
+ if (part.kind !== "ref" || !part.ref || (part.prefix ? part.sheet !== sheet : !own))
5554
+ return void 0;
5555
+ const next = shiftRef(part.ref, spec2);
5556
+ if (next === part.ref) return void 0;
5557
+ const out = { kind: "ref", text: rewriteRef(part, next) };
5558
+ if (part.prefix) out.prefix = part.prefix;
5559
+ if (part.sheet !== void 0) out.sheet = part.sheet;
5560
+ if (next) out.ref = next;
5561
+ if (part.spill) out.spill = true;
5562
+ return out;
5563
+ });
5518
5564
  }
5519
5565
  function renameSheetInFormula(formula, oldName, newName) {
5520
- const tokens2 = safeTokens(formula);
5521
- if (!tokens2) return formula;
5522
5566
  const lower2 = oldName.toLowerCase();
5523
- for (const token of tokens2) {
5524
- const prefix = token.prefix;
5525
- if (!prefix || prefix.book !== void 0) continue;
5526
- const first2 = prefix.sheet.toLowerCase() === lower2;
5567
+ return rewriteTemplate(formula, (part) => {
5568
+ const prefix = part.prefix;
5569
+ if (!prefix || part.sheet === void 0) return void 0;
5570
+ const first2 = part.sheet === lower2;
5527
5571
  const second = prefix.sheet2?.toLowerCase() === lower2;
5528
- if (!first2 && !second) continue;
5572
+ if (!first2 && !second) return void 0;
5529
5573
  const renamed = { ...prefix, sheet: first2 ? newName : prefix.sheet };
5530
5574
  if (prefix.sheet2 !== void 0) renamed.sheet2 = second ? newName : prefix.sheet2;
5531
5575
  const text = prefixText(renamed);
5532
- token.text = text + token.text.slice(prefix.text.length);
5533
5576
  renamed.text = text;
5534
- token.prefix = renamed;
5577
+ const out = { ...part, text: text + part.text.slice(prefix.text.length) };
5578
+ out.prefix = renamed;
5579
+ out.sheet = renamed.sheet.toLowerCase();
5580
+ return out;
5581
+ });
5582
+ }
5583
+
5584
+ // xlsx/formula/transform.ts
5585
+ function translateFormula(formula, dRow, dCol) {
5586
+ const tokens2 = safeTokens(formula);
5587
+ if (!tokens2) return formula;
5588
+ for (const token of tokens2) {
5589
+ if (token.kind !== "ref" || !token.ref) continue;
5590
+ const spec2 = token.ref;
5591
+ const move = (c2) => {
5592
+ const row2 = spec2.kind === "cols" || c2.rowAbs ? c2.row : c2.row + dRow;
5593
+ const col = spec2.kind === "rows" || c2.colAbs ? c2.col : c2.col + dCol;
5594
+ if (row2 < 0 || row2 > MAX_ROW || col < 0 || col > MAX_COL) return void 0;
5595
+ return { ...c2, row: row2, col };
5596
+ };
5597
+ const start = move(spec2.start);
5598
+ const end = move(spec2.end);
5599
+ const next = start && end ? { kind: spec2.kind, start, end } : void 0;
5600
+ if (next && sameSpec(next, spec2)) continue;
5601
+ token.text = rewriteRef(token, next);
5535
5602
  }
5536
5603
  return joinTokens(tokens2);
5537
5604
  }
@@ -5620,7 +5687,7 @@ var FUTURE_FUNCTIONS = new Set(
5620
5687
  "AGGREGATE BETA.DIST BETA.INV BINOM.DIST BINOM.INV CEILING.PRECISE CHISQ.DIST CHISQ.DIST.RT CHISQ.INV CHISQ.INV.RT CHISQ.TEST CONFIDENCE.NORM CONFIDENCE.T COVARIANCE.P COVARIANCE.S ERF.PRECISE ERFC.PRECISE EXPON.DIST F.DIST F.DIST.RT F.INV F.INV.RT F.TEST FLOOR.PRECISE GAMMA.DIST GAMMA.INV GAMMALN.PRECISE HYPGEOM.DIST LOGNORM.DIST LOGNORM.INV MODE.MULT MODE.SNGL NEGBINOM.DIST NETWORKDAYS.INTL NORM.DIST NORM.INV NORM.S.DIST NORM.S.INV PERCENTILE.EXC PERCENTILE.INC PERCENTRANK.EXC PERCENTRANK.INC POISSON.DIST QUARTILE.EXC QUARTILE.INC RANK.AVG RANK.EQ STDEV.P STDEV.S T.DIST T.DIST.2T T.DIST.RT T.INV T.INV.2T T.TEST VAR.P VAR.S WEIBULL.DIST WORKDAY.INTL ACOT ACOTH ARABIC BASE BINOM.DIST.RANGE BITAND BITLSHIFT BITOR BITRSHIFT BITXOR CEILING.MATH COMBINA COT COTH CSC CSCH DAYS DECIMAL ENCODEURL FILTERXML FLOOR.MATH FORMULATEXT GAMMA GAUSS IFNA IMCOSH IMCOT IMCSC IMCSCH IMSEC IMSECH IMSINH IMTAN ISFORMULA ISOWEEKNUM MUNIT NUMBERVALUE PDURATION PERMUTATIONA PHI RRI SEC SECH SHEET SHEETS SKEW.P UNICHAR UNICODE WEBSERVICE XOR CONCAT FORECAST.ETS FORECAST.ETS.CONFINT FORECAST.ETS.SEASONALITY FORECAST.ETS.STAT FORECAST.LINEAR IFS MAXIFS MINIFS SWITCH TEXTJOIN XLOOKUP XMATCH FILTER SORT SORTBY UNIQUE SEQUENCE RANDARRAY LET LAMBDA TEXTBEFORE TEXTAFTER TEXTSPLIT VSTACK HSTACK TAKE DROP CHOOSEROWS CHOOSECOLS TOCOL TOROW WRAPROWS WRAPCOLS EXPAND ARRAYTOTEXT VALUETOTEXT ISOMITTED BYROW BYCOL MAP REDUCE SCAN MAKEARRAY IMAGE GROUPBY PIVOTBY PERCENTOF REGEXTEST REGEXEXTRACT REGEXREPLACE TRIMRANGE ANCHORARRAY SINGLE STOCKHISTORY FIELDVALUE".split(" ")
5621
5688
  );
5622
5689
  var WORKSHEET_PREFIXED = /* @__PURE__ */ new Set(["FILTER", "SORT"]);
5623
- function rewrite2(formula, visit) {
5690
+ function rewrite(formula, visit) {
5624
5691
  const out = [];
5625
5692
  let i2 = 0;
5626
5693
  while (i2 < formula.length) {
@@ -5663,7 +5730,7 @@ function rewrite2(formula, visit) {
5663
5730
  }
5664
5731
  function stripFuturePrefixes(formula) {
5665
5732
  if (!formula.includes("_xl")) return formula;
5666
- const plain2 = rewrite2(formula, (token, next, out) => {
5733
+ const plain2 = rewrite(formula, (token, next, out) => {
5667
5734
  if (!next.startsWith("(")) return false;
5668
5735
  const stripped = token.replace(/^(_xlfn\.)?(_xlws\.)?/i, "");
5669
5736
  if (stripped === token) return false;
@@ -5673,7 +5740,7 @@ function stripFuturePrefixes(formula) {
5673
5740
  return fromStoredSyntax(plain2);
5674
5741
  }
5675
5742
  function addFuturePrefixes(formula) {
5676
- return rewrite2(toStoredSyntax(formula), (token, next, out) => {
5743
+ return rewrite(toStoredSyntax(formula), (token, next, out) => {
5677
5744
  if (!next.startsWith("(")) return false;
5678
5745
  const upper2 = token.toUpperCase();
5679
5746
  if (!FUTURE_FUNCTIONS.has(upper2)) return false;
@@ -12201,7 +12268,9 @@ var PREC_INTERSECT = 9;
12201
12268
  var PREC_RANGE = 10;
12202
12269
  var OPERAND_START = /* @__PURE__ */ new Set(["ref", "name", "func", "open", "structured"]);
12203
12270
  function parseFormula(formula) {
12204
- const all2 = tokenize(formula);
12271
+ return parseTokens(tokenize(formula));
12272
+ }
12273
+ function parseTokens(all2) {
12205
12274
  const tokens2 = [];
12206
12275
  const wsBefore = [];
12207
12276
  let sawWs = false;
@@ -15630,8 +15699,10 @@ var FINANCIAL_FUNCTIONS = [
15630
15699
 
15631
15700
  // xlsx/formula/references.ts
15632
15701
  function sheetIndex(host, name) {
15702
+ const sheets = host.workbook.sheets;
15703
+ for (let i2 = 0; i2 < sheets.length; i2++) if (sheets[i2]?.name === name) return i2;
15633
15704
  const lower2 = name.toLowerCase();
15634
- return host.workbook.sheets.findIndex((sheet) => sheet.name.toLowerCase() === lower2);
15705
+ return sheets.findIndex((sheet) => sheet.name.toLowerCase() === lower2);
15635
15706
  }
15636
15707
 
15637
15708
  // xlsx/formula/functions/info.ts