ooxml-core 1.1.0 → 1.2.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 (833) hide show
  1. package/README.md +18 -18
  2. package/dist/{PptxHandler-75LOVF7I.mjs → PptxHandler-SJTINPU4.mjs} +3 -3
  3. package/dist/automation/index.cjs +6550 -4115
  4. package/dist/automation/index.mjs +6550 -4115
  5. package/dist/chart/color-palettes.d.ts +2 -2
  6. package/dist/chart/color-palettes.d.ts.map +1 -1
  7. package/dist/chart/data-cache.d.ts +6 -0
  8. package/dist/chart/data-cache.d.ts.map +1 -0
  9. package/dist/chart/gradient-coincident-stops.d.ts +17 -0
  10. package/dist/chart/gradient-coincident-stops.d.ts.map +1 -0
  11. package/dist/chart/gradient-definition.d.ts +3 -3
  12. package/dist/chart/gradient-definition.d.ts.map +1 -1
  13. package/dist/chart/index.cjs +3065 -139
  14. package/dist/chart/index.d.ts +7 -0
  15. package/dist/chart/index.d.ts.map +1 -1
  16. package/dist/chart/index.mjs +3045 -140
  17. package/dist/chart/model-chrome.d.ts +39 -0
  18. package/dist/chart/model-chrome.d.ts.map +1 -0
  19. package/dist/chart/model-series.d.ts +189 -0
  20. package/dist/chart/model-series.d.ts.map +1 -0
  21. package/dist/chart/model.d.ts +202 -0
  22. package/dist/chart/model.d.ts.map +1 -0
  23. package/dist/chart/parse-chrome.d.ts +16 -0
  24. package/dist/chart/parse-chrome.d.ts.map +1 -0
  25. package/dist/chart/parse-plot.d.ts +11 -0
  26. package/dist/chart/parse-plot.d.ts.map +1 -0
  27. package/dist/chart/parse-series.d.ts +8 -0
  28. package/dist/chart/parse-series.d.ts.map +1 -0
  29. package/dist/chart/parse-space.d.ts +8 -0
  30. package/dist/chart/parse-space.d.ts.map +1 -0
  31. package/dist/chart/parse-text.d.ts +12 -0
  32. package/dist/chart/parse-text.d.ts.map +1 -0
  33. package/dist/chart/parse-util.d.ts +42 -0
  34. package/dist/chart/parse-util.d.ts.map +1 -0
  35. package/dist/{xlsx/layout → chart/render}/chart-appearance.d.ts +4 -4
  36. package/dist/chart/render/chart-appearance.d.ts.map +1 -0
  37. package/dist/chart/render/chart-colors.d.ts +9 -0
  38. package/dist/chart/render/chart-colors.d.ts.map +1 -0
  39. package/dist/chart/render/chart-scale.d.ts.map +1 -0
  40. package/dist/chart/render/chart-spacing.d.ts +6 -0
  41. package/dist/chart/render/chart-spacing.d.ts.map +1 -0
  42. package/dist/{xlsx/layout → chart/render}/chart-svg-appearance.d.ts +1 -1
  43. package/dist/chart/render/chart-svg-appearance.d.ts.map +1 -0
  44. package/dist/chart/render/chart-svg-bars.d.ts.map +1 -0
  45. package/dist/chart/render/chart-svg-cartesian.d.ts.map +1 -0
  46. package/dist/chart/render/chart-svg-legend.d.ts.map +1 -0
  47. package/dist/chart/render/chart-svg-radial.d.ts.map +1 -0
  48. package/dist/chart/render/chart-svg-text-metrics.d.ts.map +1 -0
  49. package/dist/chart/render/chart-svg-title-text.d.ts.map +1 -0
  50. package/dist/chart/render/chart-svg-util.d.ts.map +1 -0
  51. package/dist/chart/render/chart-svg.d.ts.map +1 -0
  52. package/dist/chart/render/chart-title-text.d.ts +14 -0
  53. package/dist/chart/render/chart-title-text.d.ts.map +1 -0
  54. package/dist/chart/render/chart-value-axis.d.ts +6 -0
  55. package/dist/chart/render/chart-value-axis.d.ts.map +1 -0
  56. package/dist/chart/render/chart-view.d.ts +71 -0
  57. package/dist/chart/render/chart-view.d.ts.map +1 -0
  58. package/dist/chart/render/index.d.ts +9 -0
  59. package/dist/chart/render/index.d.ts.map +1 -0
  60. package/dist/chart/render/render-space.d.ts +34 -0
  61. package/dist/chart/render/render-space.d.ts.map +1 -0
  62. package/dist/chart/render/summary-from-space.d.ts +15 -0
  63. package/dist/chart/render/summary-from-space.d.ts.map +1 -0
  64. package/dist/chart/render/summary.d.ts +51 -0
  65. package/dist/chart/render/summary.d.ts.map +1 -0
  66. package/dist/chart/render/theme-palette.d.ts +8 -0
  67. package/dist/chart/render/theme-palette.d.ts.map +1 -0
  68. package/dist/chart/style-definition.d.ts +7 -7
  69. package/dist/chart/style-definition.d.ts.map +1 -1
  70. package/dist/chart/write-axes.d.ts +5 -0
  71. package/dist/chart/write-axes.d.ts.map +1 -0
  72. package/dist/chart/write-chrome.d.ts +9 -0
  73. package/dist/chart/write-chrome.d.ts.map +1 -0
  74. package/dist/chart/write-plot.d.ts +7 -0
  75. package/dist/chart/write-plot.d.ts.map +1 -0
  76. package/dist/chart/write-series.d.ts +7 -0
  77. package/dist/chart/write-series.d.ts.map +1 -0
  78. package/dist/chart/write-shape.d.ts +21 -0
  79. package/dist/chart/write-shape.d.ts.map +1 -0
  80. package/dist/chart/write-space.d.ts +15 -0
  81. package/dist/chart/write-space.d.ts.map +1 -0
  82. package/dist/chart/write-text-body.d.ts +6 -0
  83. package/dist/chart/write-text-body.d.ts.map +1 -0
  84. package/dist/chart/write-text.d.ts +15 -0
  85. package/dist/chart/write-text.d.ts.map +1 -0
  86. package/dist/chart/write-util.d.ts +24 -0
  87. package/dist/chart/write-util.d.ts.map +1 -0
  88. package/dist/chart/xml-fragment.d.ts +13 -0
  89. package/dist/chart/xml-fragment.d.ts.map +1 -0
  90. package/dist/{chunk-HUBK4EOT.mjs → chunk-3IT6ZD7K.mjs} +2 -0
  91. package/dist/{chunk-TS3E27NK.mjs → chunk-3UMDVJRN.mjs} +12 -1
  92. package/dist/{chunk-P22OKTRK.mjs → chunk-54S5A5PZ.mjs} +208 -159
  93. package/dist/{chunk-75LA7H3F.mjs → chunk-CQQAPUAG.mjs} +27440 -27402
  94. package/dist/{chunk-Q27H4HFS.mjs → chunk-FI4RSJ24.mjs} +1 -1
  95. package/dist/{chunk-OJI3N5AY.cjs → chunk-FRUB573B.cjs} +2 -0
  96. package/dist/{chunk-OMGH6IKY.mjs → chunk-TEOAOAIF.mjs} +42 -5
  97. package/dist/{chunk-RFX7AJDZ.mjs → chunk-VYTA2OUN.mjs} +2 -2
  98. package/dist/{chunk-LA7D6ZYQ.mjs → chunk-XCZ7U3GZ.mjs} +3569 -2075
  99. package/dist/{chunk-2C72N64G.cjs → chunk-XROY25LN.cjs} +12 -0
  100. package/dist/collab/index.cjs +1 -0
  101. package/dist/collab/index.mjs +1 -0
  102. package/dist/collab/transport-provider.d.ts.map +1 -1
  103. package/dist/color/hex-rgb.d.ts +5 -0
  104. package/dist/color/hex-rgb.d.ts.map +1 -0
  105. package/dist/color/index.cjs +12 -0
  106. package/dist/color/index.d.ts +1 -0
  107. package/dist/color/index.d.ts.map +1 -1
  108. package/dist/color/index.mjs +11 -1
  109. package/dist/diagram/engine/alg-composite.d.ts +18 -0
  110. package/dist/diagram/engine/alg-composite.d.ts.map +1 -0
  111. package/dist/diagram/engine/alg-connector.d.ts +17 -0
  112. package/dist/diagram/engine/alg-connector.d.ts.map +1 -0
  113. package/dist/diagram/engine/alg-cycle.d.ts +28 -0
  114. package/dist/diagram/engine/alg-cycle.d.ts.map +1 -0
  115. package/dist/diagram/engine/alg-hier.d.ts +33 -0
  116. package/dist/diagram/engine/alg-hier.d.ts.map +1 -0
  117. package/dist/diagram/engine/alg-linear.d.ts +24 -0
  118. package/dist/diagram/engine/alg-linear.d.ts.map +1 -0
  119. package/dist/diagram/engine/alg-pyra.d.ts +117 -0
  120. package/dist/diagram/engine/alg-pyra.d.ts.map +1 -0
  121. package/dist/diagram/engine/alg-snake.d.ts +21 -0
  122. package/dist/diagram/engine/alg-snake.d.ts.map +1 -0
  123. package/dist/diagram/engine/axis.d.ts +24 -0
  124. package/dist/diagram/engine/axis.d.ts.map +1 -0
  125. package/dist/diagram/engine/conditions.d.ts +12 -0
  126. package/dist/diagram/engine/conditions.d.ts.map +1 -0
  127. package/dist/diagram/engine/connector-shape.d.ts +25 -0
  128. package/dist/diagram/engine/connector-shape.d.ts.map +1 -0
  129. package/dist/diagram/engine/connector-size.d.ts +30 -0
  130. package/dist/diagram/engine/connector-size.d.ts.map +1 -0
  131. package/dist/diagram/engine/constraint-eval.d.ts +37 -0
  132. package/dist/diagram/engine/constraint-eval.d.ts.map +1 -0
  133. package/dist/diagram/engine/constraint-fill-idiom.d.ts +61 -0
  134. package/dist/diagram/engine/constraint-fill-idiom.d.ts.map +1 -0
  135. package/dist/diagram/engine/constraint-units.d.ts +35 -0
  136. package/dist/diagram/engine/constraint-units.d.ts.map +1 -0
  137. package/dist/diagram/engine/data-points.d.ts +48 -0
  138. package/dist/diagram/engine/data-points.d.ts.map +1 -0
  139. package/dist/diagram/engine/engine-context.d.ts +21 -0
  140. package/dist/diagram/engine/engine-context.d.ts.map +1 -0
  141. package/dist/diagram/engine/engine-first-allowlist.d.ts +31 -0
  142. package/dist/diagram/engine/engine-first-allowlist.d.ts.map +1 -0
  143. package/dist/diagram/engine/engine-fonts.d.ts +26 -0
  144. package/dist/diagram/engine/engine-fonts.d.ts.map +1 -0
  145. package/dist/diagram/engine/engine-node.d.ts +72 -0
  146. package/dist/diagram/engine/engine-node.d.ts.map +1 -0
  147. package/dist/diagram/engine/engine-to-result.d.ts +43 -0
  148. package/dist/diagram/engine/engine-to-result.d.ts.map +1 -0
  149. package/dist/diagram/engine/engine.d.ts +18 -0
  150. package/dist/diagram/engine/engine.d.ts.map +1 -0
  151. package/dist/diagram/engine/font-groups.d.ts +33 -0
  152. package/dist/diagram/engine/font-groups.d.ts.map +1 -0
  153. package/dist/diagram/engine/font-length.d.ts +26 -0
  154. package/dist/diagram/engine/font-length.d.ts.map +1 -0
  155. package/dist/diagram/engine/font-search.d.ts +38 -0
  156. package/dist/diagram/engine/font-search.d.ts.map +1 -0
  157. package/dist/diagram/engine/hier-assistants.d.ts +47 -0
  158. package/dist/diagram/engine/hier-assistants.d.ts.map +1 -0
  159. package/dist/diagram/engine/hier-hang.d.ts +28 -0
  160. package/dist/diagram/engine/hier-hang.d.ts.map +1 -0
  161. package/dist/diagram/engine/hier-measure.d.ts +33 -0
  162. package/dist/diagram/engine/hier-measure.d.ts.map +1 -0
  163. package/dist/diagram/engine/hier-node-size.d.ts +23 -0
  164. package/dist/diagram/engine/hier-node-size.d.ts.map +1 -0
  165. package/dist/diagram/engine/hier-shape.d.ts +31 -0
  166. package/dist/diagram/engine/hier-shape.d.ts.map +1 -0
  167. package/dist/diagram/engine/index.d.ts +6 -0
  168. package/dist/diagram/engine/index.d.ts.map +1 -0
  169. package/dist/diagram/engine/layout-def-parse.d.ts +13 -0
  170. package/dist/diagram/engine/layout-def-parse.d.ts.map +1 -0
  171. package/dist/diagram/engine/layout-def-types.d.ts +118 -0
  172. package/dist/diagram/engine/layout-def-types.d.ts.map +1 -0
  173. package/dist/diagram/engine/layout-driver.d.ts +41 -0
  174. package/dist/diagram/engine/layout-driver.d.ts.map +1 -0
  175. package/dist/diagram/engine/layout-font.d.ts +27 -0
  176. package/dist/diagram/engine/layout-font.d.ts.map +1 -0
  177. package/dist/diagram/engine/move-with-merge.d.ts +49 -0
  178. package/dist/diagram/engine/move-with-merge.d.ts.map +1 -0
  179. package/dist/diagram/engine/node-text.d.ts +20 -0
  180. package/dist/diagram/engine/node-text.d.ts.map +1 -0
  181. package/dist/diagram/engine/ordered-xml.d.ts +30 -0
  182. package/dist/diagram/engine/ordered-xml.d.ts.map +1 -0
  183. package/dist/diagram/engine/preferred-size.d.ts +28 -0
  184. package/dist/diagram/engine/preferred-size.d.ts.map +1 -0
  185. package/dist/diagram/engine/pres-tree.d.ts +58 -0
  186. package/dist/diagram/engine/pres-tree.d.ts.map +1 -0
  187. package/dist/diagram/engine/registry.d.ts +7 -0
  188. package/dist/diagram/engine/registry.d.ts.map +1 -0
  189. package/dist/diagram/engine/render-filter.d.ts +43 -0
  190. package/dist/diagram/engine/render-filter.d.ts.map +1 -0
  191. package/dist/diagram/engine/shape-adjust.d.ts +16 -0
  192. package/dist/diagram/engine/shape-adjust.d.ts.map +1 -0
  193. package/dist/diagram/engine/shape-transform.d.ts +14 -0
  194. package/dist/diagram/engine/shape-transform.d.ts.map +1 -0
  195. package/dist/diagram/engine/snake-rule-fit.d.ts +34 -0
  196. package/dist/diagram/engine/snake-rule-fit.d.ts.map +1 -0
  197. package/dist/diagram/engine/style-label.d.ts +24 -0
  198. package/dist/diagram/engine/style-label.d.ts.map +1 -0
  199. package/dist/diagram/engine/text-fit.d.ts +61 -0
  200. package/dist/diagram/engine/text-fit.d.ts.map +1 -0
  201. package/dist/diagram/engine/text-grow.d.ts +33 -0
  202. package/dist/diagram/engine/text-grow.d.ts.map +1 -0
  203. package/dist/diagram/engine/text-measure.d.ts +77 -0
  204. package/dist/diagram/engine/text-measure.d.ts.map +1 -0
  205. package/dist/diagram/hierarchy/index.d.ts +5 -0
  206. package/dist/diagram/hierarchy/index.d.ts.map +1 -0
  207. package/dist/diagram/hierarchy/smartart-hierarchy-axis-pitch.d.ts +65 -0
  208. package/dist/diagram/hierarchy/smartart-hierarchy-axis-pitch.d.ts.map +1 -0
  209. package/dist/diagram/hierarchy/smartart-hierarchy-axis-swap-orientation.d.ts +68 -0
  210. package/dist/diagram/hierarchy/smartart-hierarchy-axis-swap-orientation.d.ts.map +1 -0
  211. package/dist/diagram/hierarchy/smartart-hierarchy-branch-mode.d.ts +54 -0
  212. package/dist/diagram/hierarchy/smartart-hierarchy-branch-mode.d.ts.map +1 -0
  213. package/dist/diagram/hierarchy/smartart-hierarchy-cascade.d.ts +58 -0
  214. package/dist/diagram/hierarchy/smartart-hierarchy-cascade.d.ts.map +1 -0
  215. package/dist/diagram/hierarchy/smartart-hierarchy-centered-fan-axis.d.ts +63 -0
  216. package/dist/diagram/hierarchy/smartart-hierarchy-centered-fan-axis.d.ts.map +1 -0
  217. package/dist/diagram/hierarchy/smartart-hierarchy-child-order.d.ts +41 -0
  218. package/dist/diagram/hierarchy/smartart-hierarchy-child-order.d.ts.map +1 -0
  219. package/dist/diagram/hierarchy/smartart-hierarchy-composite-child.d.ts +129 -0
  220. package/dist/diagram/hierarchy/smartart-hierarchy-composite-child.d.ts.map +1 -0
  221. package/dist/diagram/hierarchy/smartart-hierarchy-constraint-lookup.d.ts +76 -0
  222. package/dist/diagram/hierarchy/smartart-hierarchy-constraint-lookup.d.ts.map +1 -0
  223. package/dist/diagram/hierarchy/smartart-hierarchy-corner-plan.d.ts +49 -0
  224. package/dist/diagram/hierarchy/smartart-hierarchy-corner-plan.d.ts.map +1 -0
  225. package/dist/diagram/hierarchy/smartart-hierarchy-dispatch-lindir.d.ts +58 -0
  226. package/dist/diagram/hierarchy/smartart-hierarchy-dispatch-lindir.d.ts.map +1 -0
  227. package/dist/diagram/hierarchy/smartart-hierarchy-fan-aware-width.d.ts +48 -0
  228. package/dist/diagram/hierarchy/smartart-hierarchy-fan-aware-width.d.ts.map +1 -0
  229. package/dist/diagram/hierarchy/smartart-hierarchy-fan.d.ts +97 -0
  230. package/dist/diagram/hierarchy/smartart-hierarchy-fan.d.ts.map +1 -0
  231. package/dist/diagram/hierarchy/smartart-hierarchy-fanned-hang-geometry.d.ts +42 -0
  232. package/dist/diagram/hierarchy/smartart-hierarchy-fanned-hang-geometry.d.ts.map +1 -0
  233. package/dist/diagram/hierarchy/smartart-hierarchy-fanned-hang.d.ts +74 -0
  234. package/dist/diagram/hierarchy/smartart-hierarchy-fanned-hang.d.ts.map +1 -0
  235. package/dist/diagram/hierarchy/smartart-hierarchy-fit-item-box.d.ts +111 -0
  236. package/dist/diagram/hierarchy/smartart-hierarchy-fit-item-box.d.ts.map +1 -0
  237. package/dist/diagram/hierarchy/smartart-hierarchy-fold-depth.d.ts +44 -0
  238. package/dist/diagram/hierarchy/smartart-hierarchy-fold-depth.d.ts.map +1 -0
  239. package/dist/diagram/hierarchy/smartart-hierarchy-generation-gap.d.ts +60 -0
  240. package/dist/diagram/hierarchy/smartart-hierarchy-generation-gap.d.ts.map +1 -0
  241. package/dist/diagram/hierarchy/smartart-hierarchy-generation-templates.d.ts +106 -0
  242. package/dist/diagram/hierarchy/smartart-hierarchy-generation-templates.d.ts.map +1 -0
  243. package/dist/diagram/hierarchy/smartart-hierarchy-hang-depth.d.ts +133 -0
  244. package/dist/diagram/hierarchy/smartart-hierarchy-hang-depth.d.ts.map +1 -0
  245. package/dist/diagram/hierarchy/smartart-hierarchy-hang-dispatch.d.ts +28 -0
  246. package/dist/diagram/hierarchy/smartart-hierarchy-hang-dispatch.d.ts.map +1 -0
  247. package/dist/diagram/hierarchy/smartart-hierarchy-hanging-arrange.d.ts +28 -0
  248. package/dist/diagram/hierarchy/smartart-hierarchy-hanging-arrange.d.ts.map +1 -0
  249. package/dist/diagram/hierarchy/smartart-hierarchy-hanging-box.d.ts +86 -0
  250. package/dist/diagram/hierarchy/smartart-hierarchy-hanging-box.d.ts.map +1 -0
  251. package/dist/diagram/hierarchy/smartart-hierarchy-hanging-fold.d.ts +36 -0
  252. package/dist/diagram/hierarchy/smartart-hierarchy-hanging-fold.d.ts.map +1 -0
  253. package/dist/diagram/hierarchy/smartart-hierarchy-hanging.d.ts +118 -0
  254. package/dist/diagram/hierarchy/smartart-hierarchy-hanging.d.ts.map +1 -0
  255. package/dist/diagram/hierarchy/smartart-hierarchy-item-template.d.ts +64 -0
  256. package/dist/diagram/hierarchy/smartart-hierarchy-item-template.d.ts.map +1 -0
  257. package/dist/diagram/hierarchy/smartart-hierarchy-orgchart-tree.d.ts +53 -0
  258. package/dist/diagram/hierarchy/smartart-hierarchy-orgchart-tree.d.ts.map +1 -0
  259. package/dist/diagram/hierarchy/smartart-hierarchy-orientation-resolve.d.ts +36 -0
  260. package/dist/diagram/hierarchy/smartart-hierarchy-orientation-resolve.d.ts.map +1 -0
  261. package/dist/diagram/hierarchy/smartart-hierarchy-orientation-types.d.ts +81 -0
  262. package/dist/diagram/hierarchy/smartart-hierarchy-orientation-types.d.ts.map +1 -0
  263. package/dist/diagram/hierarchy/smartart-hierarchy-orientation.d.ts +78 -0
  264. package/dist/diagram/hierarchy/smartart-hierarchy-orientation.d.ts.map +1 -0
  265. package/dist/diagram/hierarchy/smartart-hierarchy-pitch.d.ts +140 -0
  266. package/dist/diagram/hierarchy/smartart-hierarchy-pitch.d.ts.map +1 -0
  267. package/dist/diagram/hierarchy/smartart-hierarchy-shared.d.ts +131 -0
  268. package/dist/diagram/hierarchy/smartart-hierarchy-shared.d.ts.map +1 -0
  269. package/dist/diagram/hierarchy/smartart-hierarchy-standard-options.d.ts +91 -0
  270. package/dist/diagram/hierarchy/smartart-hierarchy-standard-options.d.ts.map +1 -0
  271. package/dist/diagram/hierarchy/smartart-hierarchy-standard-rows.d.ts +21 -0
  272. package/dist/diagram/hierarchy/smartart-hierarchy-standard-rows.d.ts.map +1 -0
  273. package/dist/diagram/hierarchy/smartart-hierarchy-standard.d.ts +36 -0
  274. package/dist/diagram/hierarchy/smartart-hierarchy-standard.d.ts.map +1 -0
  275. package/dist/diagram/hierarchy/smartart-hierarchy-tailed-placer.d.ts +20 -0
  276. package/dist/diagram/hierarchy/smartart-hierarchy-tailed-placer.d.ts.map +1 -0
  277. package/dist/diagram/hierarchy/smartart-hierarchy-tailed-transpose.d.ts +50 -0
  278. package/dist/diagram/hierarchy/smartart-hierarchy-tailed-transpose.d.ts.map +1 -0
  279. package/dist/diagram/hierarchy/smartart-hierarchy-transpose.d.ts +23 -0
  280. package/dist/diagram/hierarchy/smartart-hierarchy-transpose.d.ts.map +1 -0
  281. package/dist/diagram/hierarchy/smartart-hierarchy-transposed-orientation.d.ts +22 -0
  282. package/dist/diagram/hierarchy/smartart-hierarchy-transposed-orientation.d.ts.map +1 -0
  283. package/dist/diagram/hierarchy/smartart-hierarchy-wrapped-groups.d.ts +93 -0
  284. package/dist/diagram/hierarchy/smartart-hierarchy-wrapped-groups.d.ts.map +1 -0
  285. package/dist/diagram/hierarchy/smartart-layout-interpreter-hierarchy.d.ts +49 -0
  286. package/dist/diagram/hierarchy/smartart-layout-interpreter-hierarchy.d.ts.map +1 -0
  287. package/dist/diagram/index.cjs +22537 -80
  288. package/dist/diagram/index.d.ts +4 -0
  289. package/dist/diagram/index.d.ts.map +1 -1
  290. package/dist/diagram/index.mjs +22453 -81
  291. package/dist/diagram/layout/index.d.ts +38 -0
  292. package/dist/diagram/layout/index.d.ts.map +1 -0
  293. package/dist/diagram/layout/smartart-choose-xml.d.ts +32 -0
  294. package/dist/diagram/layout/smartart-choose-xml.d.ts.map +1 -0
  295. package/dist/diagram/layout/smartart-constraint-branch-index.d.ts +49 -0
  296. package/dist/diagram/layout/smartart-constraint-branch-index.d.ts.map +1 -0
  297. package/dist/diagram/layout/smartart-constraint-declared-by.d.ts +64 -0
  298. package/dist/diagram/layout/smartart-constraint-declared-by.d.ts.map +1 -0
  299. package/dist/diagram/layout/smartart-constraint-ratio-fallback.d.ts +18 -0
  300. package/dist/diagram/layout/smartart-constraint-ratio-fallback.d.ts.map +1 -0
  301. package/dist/diagram/layout/smartart-constraint-resolve.d.ts +24 -0
  302. package/dist/diagram/layout/smartart-constraint-resolve.d.ts.map +1 -0
  303. package/dist/diagram/layout/smartart-constraint-rules.d.ts +26 -0
  304. package/dist/diagram/layout/smartart-constraint-rules.d.ts.map +1 -0
  305. package/dist/diagram/layout/smartart-constraint-sibling-roles.d.ts +100 -0
  306. package/dist/diagram/layout/smartart-constraint-sibling-roles.d.ts.map +1 -0
  307. package/dist/diagram/layout/smartart-constraint-solver.d.ts +133 -0
  308. package/dist/diagram/layout/smartart-constraint-solver.d.ts.map +1 -0
  309. package/dist/diagram/layout/smartart-constraint-values.d.ts +5 -0
  310. package/dist/diagram/layout/smartart-constraint-values.d.ts.map +1 -0
  311. package/dist/diagram/layout/smartart-font-table.d.ts +14 -0
  312. package/dist/diagram/layout/smartart-font-table.d.ts.map +1 -0
  313. package/dist/diagram/layout/smartart-interpreter-fold-text.d.ts +75 -0
  314. package/dist/diagram/layout/smartart-interpreter-fold-text.d.ts.map +1 -0
  315. package/dist/diagram/layout/smartart-layout-control-flow.d.ts +25 -0
  316. package/dist/diagram/layout/smartart-layout-control-flow.d.ts.map +1 -0
  317. package/dist/diagram/layout/smartart-layout-interpreter-arranged-selection.d.ts +56 -0
  318. package/dist/diagram/layout/smartart-layout-interpreter-arranged-selection.d.ts.map +1 -0
  319. package/dist/diagram/layout/smartart-layout-interpreter-arrangement-kind.d.ts +37 -0
  320. package/dist/diagram/layout/smartart-layout-interpreter-arrangement-kind.d.ts.map +1 -0
  321. package/dist/diagram/layout/smartart-layout-interpreter-aux.d.ts +66 -0
  322. package/dist/diagram/layout/smartart-layout-interpreter-aux.d.ts.map +1 -0
  323. package/dist/diagram/layout/smartart-layout-interpreter-axis-count.d.ts +128 -0
  324. package/dist/diagram/layout/smartart-layout-interpreter-axis-count.d.ts.map +1 -0
  325. package/dist/diagram/layout/smartart-layout-interpreter-axis-depth.d.ts +73 -0
  326. package/dist/diagram/layout/smartart-layout-interpreter-axis-depth.d.ts.map +1 -0
  327. package/dist/diagram/layout/smartart-layout-interpreter-axis-hop.d.ts +48 -0
  328. package/dist/diagram/layout/smartart-layout-interpreter-axis-hop.d.ts.map +1 -0
  329. package/dist/diagram/layout/smartart-layout-interpreter-axis-range.d.ts +19 -0
  330. package/dist/diagram/layout/smartart-layout-interpreter-axis-range.d.ts.map +1 -0
  331. package/dist/diagram/layout/smartart-layout-interpreter-choose-algorithm.d.ts +60 -0
  332. package/dist/diagram/layout/smartart-layout-interpreter-choose-algorithm.d.ts.map +1 -0
  333. package/dist/diagram/layout/smartart-layout-interpreter-choose-branch.d.ts +36 -0
  334. package/dist/diagram/layout/smartart-layout-interpreter-choose-branch.d.ts.map +1 -0
  335. package/dist/diagram/layout/smartart-layout-interpreter-choose-composite.d.ts +42 -0
  336. package/dist/diagram/layout/smartart-layout-interpreter-choose-composite.d.ts.map +1 -0
  337. package/dist/diagram/layout/smartart-layout-interpreter-choose-depth.d.ts +102 -0
  338. package/dist/diagram/layout/smartart-layout-interpreter-choose-depth.d.ts.map +1 -0
  339. package/dist/diagram/layout/smartart-layout-interpreter-choose-resolve.d.ts +32 -0
  340. package/dist/diagram/layout/smartart-layout-interpreter-choose-resolve.d.ts.map +1 -0
  341. package/dist/diagram/layout/smartart-layout-interpreter-composite-alternative.d.ts +33 -0
  342. package/dist/diagram/layout/smartart-layout-interpreter-composite-alternative.d.ts.map +1 -0
  343. package/dist/diagram/layout/smartart-layout-interpreter-composite-anchor.d.ts +95 -0
  344. package/dist/diagram/layout/smartart-layout-interpreter-composite-anchor.d.ts.map +1 -0
  345. package/dist/diagram/layout/smartart-layout-interpreter-composite-aspect.d.ts +84 -0
  346. package/dist/diagram/layout/smartart-layout-interpreter-composite-aspect.d.ts.map +1 -0
  347. package/dist/diagram/layout/smartart-layout-interpreter-composite-candidates.d.ts +60 -0
  348. package/dist/diagram/layout/smartart-layout-interpreter-composite-candidates.d.ts.map +1 -0
  349. package/dist/diagram/layout/smartart-layout-interpreter-composite-children.d.ts +86 -0
  350. package/dist/diagram/layout/smartart-layout-interpreter-composite-children.d.ts.map +1 -0
  351. package/dist/diagram/layout/smartart-layout-interpreter-composite-choose-groups.d.ts +44 -0
  352. package/dist/diagram/layout/smartart-layout-interpreter-composite-choose-groups.d.ts.map +1 -0
  353. package/dist/diagram/layout/smartart-layout-interpreter-composite-choose.d.ts +109 -0
  354. package/dist/diagram/layout/smartart-layout-interpreter-composite-choose.d.ts.map +1 -0
  355. package/dist/diagram/layout/smartart-layout-interpreter-composite-detect.d.ts +182 -0
  356. package/dist/diagram/layout/smartart-layout-interpreter-composite-detect.d.ts.map +1 -0
  357. package/dist/diagram/layout/smartart-layout-interpreter-composite-fontfit.d.ts +60 -0
  358. package/dist/diagram/layout/smartart-layout-interpreter-composite-fontfit.d.ts.map +1 -0
  359. package/dist/diagram/layout/smartart-layout-interpreter-composite-foreach.d.ts +36 -0
  360. package/dist/diagram/layout/smartart-layout-interpreter-composite-foreach.d.ts.map +1 -0
  361. package/dist/diagram/layout/smartart-layout-interpreter-composite-group-slots.d.ts +92 -0
  362. package/dist/diagram/layout/smartart-layout-interpreter-composite-group-slots.d.ts.map +1 -0
  363. package/dist/diagram/layout/smartart-layout-interpreter-composite-iteration.d.ts +45 -0
  364. package/dist/diagram/layout/smartart-layout-interpreter-composite-iteration.d.ts.map +1 -0
  365. package/dist/diagram/layout/smartart-layout-interpreter-composite-nested-cycle.d.ts +57 -0
  366. package/dist/diagram/layout/smartart-layout-interpreter-composite-nested-cycle.d.ts.map +1 -0
  367. package/dist/diagram/layout/smartart-layout-interpreter-composite-order-fallback.d.ts +24 -0
  368. package/dist/diagram/layout/smartart-layout-interpreter-composite-order-fallback.d.ts.map +1 -0
  369. package/dist/diagram/layout/smartart-layout-interpreter-composite-order.d.ts +41 -0
  370. package/dist/diagram/layout/smartart-layout-interpreter-composite-order.d.ts.map +1 -0
  371. package/dist/diagram/layout/smartart-layout-interpreter-composite-pairs.d.ts +34 -0
  372. package/dist/diagram/layout/smartart-layout-interpreter-composite-pairs.d.ts.map +1 -0
  373. package/dist/diagram/layout/smartart-layout-interpreter-composite-render.d.ts +29 -0
  374. package/dist/diagram/layout/smartart-layout-interpreter-composite-render.d.ts.map +1 -0
  375. package/dist/diagram/layout/smartart-layout-interpreter-composite-ring.d.ts +40 -0
  376. package/dist/diagram/layout/smartart-layout-interpreter-composite-ring.d.ts.map +1 -0
  377. package/dist/diagram/layout/smartart-layout-interpreter-composite-slot-dim.d.ts +22 -0
  378. package/dist/diagram/layout/smartart-layout-interpreter-composite-slot-dim.d.ts.map +1 -0
  379. package/dist/diagram/layout/smartart-layout-interpreter-composite-slots.d.ts +69 -0
  380. package/dist/diagram/layout/smartart-layout-interpreter-composite-slots.d.ts.map +1 -0
  381. package/dist/diagram/layout/smartart-layout-interpreter-composite.d.ts +56 -0
  382. package/dist/diagram/layout/smartart-layout-interpreter-composite.d.ts.map +1 -0
  383. package/dist/diagram/layout/smartart-layout-interpreter-conn-path.d.ts +42 -0
  384. package/dist/diagram/layout/smartart-layout-interpreter-conn-path.d.ts.map +1 -0
  385. package/dist/diagram/layout/smartart-layout-interpreter-connector-order.d.ts +23 -0
  386. package/dist/diagram/layout/smartart-layout-interpreter-connector-order.d.ts.map +1 -0
  387. package/dist/diagram/layout/smartart-layout-interpreter-constraints.d.ts +28 -0
  388. package/dist/diagram/layout/smartart-layout-interpreter-constraints.d.ts.map +1 -0
  389. package/dist/diagram/layout/smartart-layout-interpreter-custom.d.ts +31 -0
  390. package/dist/diagram/layout/smartart-layout-interpreter-custom.d.ts.map +1 -0
  391. package/dist/diagram/layout/smartart-layout-interpreter-cycle-boxes.d.ts +36 -0
  392. package/dist/diagram/layout/smartart-layout-interpreter-cycle-boxes.d.ts.map +1 -0
  393. package/dist/diagram/layout/smartart-layout-interpreter-cycle-connectors.d.ts +21 -0
  394. package/dist/diagram/layout/smartart-layout-interpreter-cycle-connectors.d.ts.map +1 -0
  395. package/dist/diagram/layout/smartart-layout-interpreter-cycle-constraints.d.ts +116 -0
  396. package/dist/diagram/layout/smartart-layout-interpreter-cycle-constraints.d.ts.map +1 -0
  397. package/dist/diagram/layout/smartart-layout-interpreter-cycle-extension.d.ts +110 -0
  398. package/dist/diagram/layout/smartart-layout-interpreter-cycle-extension.d.ts.map +1 -0
  399. package/dist/diagram/layout/smartart-layout-interpreter-cycle-fontfit.d.ts +50 -0
  400. package/dist/diagram/layout/smartart-layout-interpreter-cycle-fontfit.d.ts.map +1 -0
  401. package/dist/diagram/layout/smartart-layout-interpreter-cycle-hub-detect.d.ts +66 -0
  402. package/dist/diagram/layout/smartart-layout-interpreter-cycle-hub-detect.d.ts.map +1 -0
  403. package/dist/diagram/layout/smartart-layout-interpreter-cycle-hub-ratio-usersize.d.ts +81 -0
  404. package/dist/diagram/layout/smartart-layout-interpreter-cycle-hub-ratio-usersize.d.ts.map +1 -0
  405. package/dist/diagram/layout/smartart-layout-interpreter-cycle-hub-ratio.d.ts +109 -0
  406. package/dist/diagram/layout/smartart-layout-interpreter-cycle-hub-ratio.d.ts.map +1 -0
  407. package/dist/diagram/layout/smartart-layout-interpreter-cycle-item-aspect.d.ts +121 -0
  408. package/dist/diagram/layout/smartart-layout-interpreter-cycle-item-aspect.d.ts.map +1 -0
  409. package/dist/diagram/layout/smartart-layout-interpreter-cycle-item-node.d.ts +57 -0
  410. package/dist/diagram/layout/smartart-layout-interpreter-cycle-item-node.d.ts.map +1 -0
  411. package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-bulge.d.ts +34 -0
  412. package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-bulge.d.ts.map +1 -0
  413. package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-item.d.ts +39 -0
  414. package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-item.d.ts.map +1 -0
  415. package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-nested-hub.d.ts +22 -0
  416. package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-nested-hub.d.ts.map +1 -0
  417. package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-offset.d.ts +43 -0
  418. package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring-offset.d.ts.map +1 -0
  419. package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring.d.ts +76 -0
  420. package/dist/diagram/layout/smartart-layout-interpreter-cycle-ring.d.ts.map +1 -0
  421. package/dist/diagram/layout/smartart-layout-interpreter-cycle-sibtrans.d.ts +40 -0
  422. package/dist/diagram/layout/smartart-layout-interpreter-cycle-sibtrans.d.ts.map +1 -0
  423. package/dist/diagram/layout/smartart-layout-interpreter-cycle.d.ts +69 -0
  424. package/dist/diagram/layout/smartart-layout-interpreter-cycle.d.ts.map +1 -0
  425. package/dist/diagram/layout/smartart-layout-interpreter-dispatch.d.ts +18 -0
  426. package/dist/diagram/layout/smartart-layout-interpreter-dispatch.d.ts.map +1 -0
  427. package/dist/diagram/layout/smartart-layout-interpreter-flow-direction.d.ts +29 -0
  428. package/dist/diagram/layout/smartart-layout-interpreter-flow-direction.d.ts.map +1 -0
  429. package/dist/diagram/layout/smartart-layout-interpreter-flow.d.ts +49 -0
  430. package/dist/diagram/layout/smartart-layout-interpreter-flow.d.ts.map +1 -0
  431. package/dist/diagram/layout/smartart-layout-interpreter-hierarchy-descendant.d.ts +60 -0
  432. package/dist/diagram/layout/smartart-layout-interpreter-hierarchy-descendant.d.ts.map +1 -0
  433. package/dist/diagram/layout/smartart-layout-interpreter-hierarchy-fontfit.d.ts +45 -0
  434. package/dist/diagram/layout/smartart-layout-interpreter-hierarchy-fontfit.d.ts.map +1 -0
  435. package/dist/diagram/layout/smartart-layout-interpreter-hub-detect.d.ts +26 -0
  436. package/dist/diagram/layout/smartart-layout-interpreter-hub-detect.d.ts.map +1 -0
  437. package/dist/diagram/layout/smartart-layout-interpreter-hub.d.ts +62 -0
  438. package/dist/diagram/layout/smartart-layout-interpreter-hub.d.ts.map +1 -0
  439. package/dist/diagram/layout/smartart-layout-interpreter-item-role-compound.d.ts +36 -0
  440. package/dist/diagram/layout/smartart-layout-interpreter-item-role-compound.d.ts.map +1 -0
  441. package/dist/diagram/layout/smartart-layout-interpreter-item-role-orientation.d.ts +80 -0
  442. package/dist/diagram/layout/smartart-layout-interpreter-item-role-orientation.d.ts.map +1 -0
  443. package/dist/diagram/layout/smartart-layout-interpreter-item-role-shared.d.ts +102 -0
  444. package/dist/diagram/layout/smartart-layout-interpreter-item-role-shared.d.ts.map +1 -0
  445. package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack-columns.d.ts +23 -0
  446. package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack-columns.d.ts.map +1 -0
  447. package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack-fields.d.ts +77 -0
  448. package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack-fields.d.ts.map +1 -0
  449. package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack-rect.d.ts +20 -0
  450. package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack-rect.d.ts.map +1 -0
  451. package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack.d.ts +53 -0
  452. package/dist/diagram/layout/smartart-layout-interpreter-item-role-stack.d.ts.map +1 -0
  453. package/dist/diagram/layout/smartart-layout-interpreter-item-role-transition.d.ts +50 -0
  454. package/dist/diagram/layout/smartart-layout-interpreter-item-role-transition.d.ts.map +1 -0
  455. package/dist/diagram/layout/smartart-layout-interpreter-item-roles-recursive.d.ts +87 -0
  456. package/dist/diagram/layout/smartart-layout-interpreter-item-roles-recursive.d.ts.map +1 -0
  457. package/dist/diagram/layout/smartart-layout-interpreter-item-roles-unwrap.d.ts +57 -0
  458. package/dist/diagram/layout/smartart-layout-interpreter-item-roles-unwrap.d.ts.map +1 -0
  459. package/dist/diagram/layout/smartart-layout-interpreter-item-roles.d.ts +109 -0
  460. package/dist/diagram/layout/smartart-layout-interpreter-item-roles.d.ts.map +1 -0
  461. package/dist/diagram/layout/smartart-layout-interpreter-linear-content-size.d.ts +42 -0
  462. package/dist/diagram/layout/smartart-layout-interpreter-linear-content-size.d.ts.map +1 -0
  463. package/dist/diagram/layout/smartart-layout-interpreter-linear-item-aspect.d.ts +94 -0
  464. package/dist/diagram/layout/smartart-layout-interpreter-linear-item-aspect.d.ts.map +1 -0
  465. package/dist/diagram/layout/smartart-layout-interpreter-linear-main-axis.d.ts +17 -0
  466. package/dist/diagram/layout/smartart-layout-interpreter-linear-main-axis.d.ts.map +1 -0
  467. package/dist/diagram/layout/smartart-layout-interpreter-linear-shared.d.ts +21 -0
  468. package/dist/diagram/layout/smartart-layout-interpreter-linear-shared.d.ts.map +1 -0
  469. package/dist/diagram/layout/smartart-layout-interpreter-linear-table.d.ts +76 -0
  470. package/dist/diagram/layout/smartart-layout-interpreter-linear-table.d.ts.map +1 -0
  471. package/dist/diagram/layout/smartart-layout-interpreter-linear.d.ts +20 -0
  472. package/dist/diagram/layout/smartart-layout-interpreter-linear.d.ts.map +1 -0
  473. package/dist/diagram/layout/smartart-layout-interpreter-model.d.ts +77 -0
  474. package/dist/diagram/layout/smartart-layout-interpreter-model.d.ts.map +1 -0
  475. package/dist/diagram/layout/smartart-layout-interpreter-named-rules.d.ts +93 -0
  476. package/dist/diagram/layout/smartart-layout-interpreter-named-rules.d.ts.map +1 -0
  477. package/dist/diagram/layout/smartart-layout-interpreter-position-family.d.ts +58 -0
  478. package/dist/diagram/layout/smartart-layout-interpreter-position-family.d.ts.map +1 -0
  479. package/dist/diagram/layout/smartart-layout-interpreter-preset-node.d.ts +61 -0
  480. package/dist/diagram/layout/smartart-layout-interpreter-preset-node.d.ts.map +1 -0
  481. package/dist/diagram/layout/smartart-layout-interpreter-presof-choose.d.ts +29 -0
  482. package/dist/diagram/layout/smartart-layout-interpreter-presof-choose.d.ts.map +1 -0
  483. package/dist/diagram/layout/smartart-layout-interpreter-pyramid-bands.d.ts +41 -0
  484. package/dist/diagram/layout/smartart-layout-interpreter-pyramid-bands.d.ts.map +1 -0
  485. package/dist/diagram/layout/smartart-layout-interpreter-pyramid.d.ts +100 -0
  486. package/dist/diagram/layout/smartart-layout-interpreter-pyramid.d.ts.map +1 -0
  487. package/dist/diagram/layout/smartart-layout-interpreter-render.d.ts +86 -0
  488. package/dist/diagram/layout/smartart-layout-interpreter-render.d.ts.map +1 -0
  489. package/dist/diagram/layout/smartart-layout-interpreter-snake.d.ts +18 -0
  490. package/dist/diagram/layout/smartart-layout-interpreter-snake.d.ts.map +1 -0
  491. package/dist/diagram/layout/smartart-layout-interpreter-tree-location.d.ts +28 -0
  492. package/dist/diagram/layout/smartart-layout-interpreter-tree-location.d.ts.map +1 -0
  493. package/dist/diagram/layout/smartart-layout-interpreter-when-numeric.d.ts +15 -0
  494. package/dist/diagram/layout/smartart-layout-interpreter-when-numeric.d.ts.map +1 -0
  495. package/dist/diagram/layout/smartart-layout-interpreter-when-var.d.ts +12 -0
  496. package/dist/diagram/layout/smartart-layout-interpreter-when-var.d.ts.map +1 -0
  497. package/dist/diagram/layout/smartart-layout-interpreter-when.d.ts +69 -0
  498. package/dist/diagram/layout/smartart-layout-interpreter-when.d.ts.map +1 -0
  499. package/dist/diagram/layout/smartart-layout-interpreter.d.ts +80 -0
  500. package/dist/diagram/layout/smartart-layout-interpreter.d.ts.map +1 -0
  501. package/dist/diagram/layout/smartart-layout-item-font-role.d.ts +80 -0
  502. package/dist/diagram/layout/smartart-layout-item-font-role.d.ts.map +1 -0
  503. package/dist/diagram/layout/smartart-layout-item-font-size.d.ts +129 -0
  504. package/dist/diagram/layout/smartart-layout-item-font-size.d.ts.map +1 -0
  505. package/dist/diagram/layout/smartart-layout-item-font-tier-fit.d.ts +70 -0
  506. package/dist/diagram/layout/smartart-layout-item-font-tier-fit.d.ts.map +1 -0
  507. package/dist/diagram/layout/smartart-layout-item-font-tier.d.ts +139 -0
  508. package/dist/diagram/layout/smartart-layout-item-font-tier.d.ts.map +1 -0
  509. package/dist/diagram/layout/smartart-layout-item-tx-anchor.d.ts +105 -0
  510. package/dist/diagram/layout/smartart-layout-item-tx-anchor.d.ts.map +1 -0
  511. package/dist/diagram/layout/smartart-layout-shape-polygon.d.ts +17 -0
  512. package/dist/diagram/layout/smartart-layout-shape-polygon.d.ts.map +1 -0
  513. package/dist/diagram/layout/smartart-layout-shape-preset.d.ts +127 -0
  514. package/dist/diagram/layout/smartart-layout-shape-preset.d.ts.map +1 -0
  515. package/dist/diagram/layout/smartart-layout-snake-grid.d.ts +43 -0
  516. package/dist/diagram/layout/smartart-layout-snake-grid.d.ts.map +1 -0
  517. package/dist/diagram/layout/smartart-layout-style-helpers.d.ts +84 -0
  518. package/dist/diagram/layout/smartart-layout-style-helpers.d.ts.map +1 -0
  519. package/dist/diagram/layout/smartart-layout-types.d.ts +253 -0
  520. package/dist/diagram/layout/smartart-layout-types.d.ts.map +1 -0
  521. package/dist/diagram/layout/smartart-line-pitch.d.ts +29 -0
  522. package/dist/diagram/layout/smartart-line-pitch.d.ts.map +1 -0
  523. package/dist/diagram/layout/smartart-node-role-colors.d.ts +30 -0
  524. package/dist/diagram/layout/smartart-node-role-colors.d.ts.map +1 -0
  525. package/dist/diagram/layout/smartart-node-tree-axis.d.ts +91 -0
  526. package/dist/diagram/layout/smartart-node-tree-axis.d.ts.map +1 -0
  527. package/dist/diagram/layout/smartart-text-wrap-fit.d.ts +84 -0
  528. package/dist/diagram/layout/smartart-text-wrap-fit.d.ts.map +1 -0
  529. package/dist/diagram/layout/smartart-tree.d.ts +33 -0
  530. package/dist/diagram/layout/smartart-tree.d.ts.map +1 -0
  531. package/dist/diagram/model/constraint-rules.d.ts +31 -0
  532. package/dist/diagram/model/constraint-rules.d.ts.map +1 -0
  533. package/dist/diagram/model/data.d.ts +109 -0
  534. package/dist/diagram/model/data.d.ts.map +1 -0
  535. package/dist/diagram/model/index.d.ts +7 -0
  536. package/dist/diagram/model/index.d.ts.map +1 -0
  537. package/dist/diagram/model/layout-definition.d.ts +276 -0
  538. package/dist/diagram/model/layout-definition.d.ts.map +1 -0
  539. package/dist/diagram/model/layout-primitives.d.ts +82 -0
  540. package/dist/diagram/model/layout-primitives.d.ts.map +1 -0
  541. package/dist/diagram/model/node.d.ts +194 -0
  542. package/dist/diagram/model/node.d.ts.map +1 -0
  543. package/dist/diagram/model/style-definition.d.ts +131 -0
  544. package/dist/diagram/model/style-definition.d.ts.map +1 -0
  545. package/dist/docx/chart-paint.d.ts +14 -0
  546. package/dist/docx/chart-paint.d.ts.map +1 -0
  547. package/dist/docx/chart.d.ts +43 -0
  548. package/dist/docx/chart.d.ts.map +1 -0
  549. package/dist/docx/drawing.d.ts.map +1 -1
  550. package/dist/docx/embedded.cjs +1393 -326
  551. package/dist/docx/embedded.mjs +1393 -326
  552. package/dist/docx/index.cjs +4042 -683
  553. package/dist/docx/index.d.ts +2 -0
  554. package/dist/docx/index.d.ts.map +1 -1
  555. package/dist/docx/index.mjs +4038 -684
  556. package/dist/docx/inline-model.d.ts +3 -0
  557. package/dist/docx/inline-model.d.ts.map +1 -1
  558. package/dist/docx/layout/adapter.d.ts.map +1 -1
  559. package/dist/docx/layout/index.cjs +2672 -88
  560. package/dist/docx/layout/index.mjs +2673 -89
  561. package/dist/docx/layout/input.d.ts +5 -0
  562. package/dist/docx/layout/input.d.ts.map +1 -1
  563. package/dist/docx/load/index.cjs +1616 -549
  564. package/dist/docx/load/index.mjs +1616 -549
  565. package/dist/docx/parse.d.ts.map +1 -1
  566. package/dist/docx/ui/chart-spec.d.ts +10 -0
  567. package/dist/docx/ui/chart-spec.d.ts.map +1 -0
  568. package/dist/docx/ui/index.cjs +2600 -186
  569. package/dist/docx/ui/index.d.ts +1 -0
  570. package/dist/docx/ui/index.d.ts.map +1 -1
  571. package/dist/docx/ui/index.mjs +2599 -188
  572. package/dist/docx/ui/inline-content-schema.d.ts.map +1 -1
  573. package/dist/docx/ui/run-adapter.d.ts.map +1 -1
  574. package/dist/drawingml/write-line.d.ts +7 -0
  575. package/dist/drawingml/write-line.d.ts.map +1 -0
  576. package/dist/geometry/ooxml-arc.d.ts +31 -0
  577. package/dist/geometry/ooxml-arc.d.ts.map +1 -0
  578. package/dist/geometry/preset-shape-evaluator.d.ts +73 -0
  579. package/dist/geometry/preset-shape-evaluator.d.ts.map +1 -0
  580. package/dist/index.cjs +34835 -18367
  581. package/dist/index.mjs +34831 -18367
  582. package/dist/opc/embedded-packages.d.ts +11 -0
  583. package/dist/opc/embedded-packages.d.ts.map +1 -0
  584. package/dist/opc/index.cjs +365 -70
  585. package/dist/opc/index.d.ts +1 -0
  586. package/dist/opc/index.d.ts.map +1 -1
  587. package/dist/opc/index.mjs +353 -71
  588. package/dist/opc/properties/app.d.ts +9 -3
  589. package/dist/opc/properties/app.d.ts.map +1 -1
  590. package/dist/opc/properties/core.d.ts +5 -1
  591. package/dist/opc/properties/core.d.ts.map +1 -1
  592. package/dist/opc/properties/custom.d.ts +19 -0
  593. package/dist/opc/properties/custom.d.ts.map +1 -1
  594. package/dist/opc/properties/index.d.ts +6 -3
  595. package/dist/opc/properties/index.d.ts.map +1 -1
  596. package/dist/opc/properties/patch.d.ts +38 -0
  597. package/dist/opc/properties/patch.d.ts.map +1 -0
  598. package/dist/opc/properties/title-groups.d.ts +30 -0
  599. package/dist/opc/properties/title-groups.d.ts.map +1 -0
  600. package/dist/opc/properties/types.d.ts +15 -0
  601. package/dist/opc/properties/types.d.ts.map +1 -1
  602. package/dist/pptx/automation/index.cjs +9023 -7151
  603. package/dist/pptx/automation/index.d.ts +4 -4
  604. package/dist/pptx/automation/index.mjs +6 -6
  605. package/dist/pptx/chunks/{index-BYkdcS8J.d.ts → index-EZJZ7USt.d.ts} +907 -962
  606. package/dist/pptx/chunks/index-EZJZ7USt.d.ts.map +1 -0
  607. package/dist/pptx/chunks/{index-BHqL5KXH.d.ts → index-JNv7AJx5.d.ts} +163 -210
  608. package/dist/pptx/chunks/index-JNv7AJx5.d.ts.map +1 -0
  609. package/dist/pptx/chunks/{smart-art-CO2jmJFf.d.ts → smart-art-Q2kZQtHh.d.ts} +436 -374
  610. package/dist/pptx/chunks/smart-art-Q2kZQtHh.d.ts.map +1 -0
  611. package/dist/pptx/chunks/{text-operations-DEJ7alZR.d.ts → text-operations-DtCxXrMh.d.ts} +55 -4
  612. package/dist/pptx/chunks/text-operations-DtCxXrMh.d.ts.map +1 -0
  613. package/dist/pptx/cli/index.cjs +8702 -6830
  614. package/dist/pptx/cli/index.d.ts +1 -1
  615. package/dist/pptx/cli/index.mjs +5 -5
  616. package/dist/pptx/converter/index.cjs +7124 -7136
  617. package/dist/pptx/converter/index.d.ts +1 -1
  618. package/dist/pptx/converter/index.mjs +3 -3
  619. package/dist/pptx/editor/render/table-cell-edit.cjs +7 -3
  620. package/dist/pptx/editor/render/table-cell-edit.d.ts +16 -1
  621. package/dist/pptx/editor/render/table-cell-edit.d.ts.map +1 -1
  622. package/dist/pptx/editor/render/table-cell-edit.mjs +1 -1
  623. package/dist/pptx/editor/render/table-cell-merge.cjs +3 -3
  624. package/dist/pptx/editor/render/table-cell-merge.mjs +1 -1
  625. package/dist/pptx/editor/render/table-data-grid-ops.cjs +7 -7
  626. package/dist/pptx/editor/render/table-data-grid-ops.mjs +2 -2
  627. package/dist/pptx/editor/render/table-layout.cjs +6 -6
  628. package/dist/pptx/editor/render/table-layout.d.ts.map +1 -1
  629. package/dist/pptx/editor/render/table-layout.mjs +1 -1
  630. package/dist/pptx/editor/render/table-merge.cjs +5 -5
  631. package/dist/pptx/editor/render/table-merge.mjs +1 -1
  632. package/dist/pptx/index.cjs +9345 -7304
  633. package/dist/pptx/index.d.ts +5 -5
  634. package/dist/pptx/index.mjs +6 -6
  635. package/dist/pptx/smartart-layouts/index.cjs +135 -106
  636. package/dist/pptx/smartart-layouts/index.d.ts +1 -1
  637. package/dist/pptx/smartart-layouts/index.mjs +1 -1
  638. package/dist/teams/content.d.ts.map +1 -1
  639. package/dist/teams/index.cjs +3778 -1999
  640. package/dist/teams/index.d.ts +1 -0
  641. package/dist/teams/index.d.ts.map +1 -1
  642. package/dist/teams/index.mjs +3777 -1999
  643. package/dist/teams/server-file-storage.d.ts +11 -0
  644. package/dist/teams/server-file-storage.d.ts.map +1 -0
  645. package/dist/teams/store.d.ts +2 -0
  646. package/dist/teams/store.d.ts.map +1 -1
  647. package/dist/teams/stored-file.d.ts.map +1 -1
  648. package/dist/{xlsx/layout/font-family.d.ts → text/css-font-family.d.ts} +1 -1
  649. package/dist/text/css-font-family.d.ts.map +1 -0
  650. package/dist/text/font-metrics/font-advance-widths-aptos-display.generated.d.ts +10 -0
  651. package/dist/text/font-metrics/font-advance-widths-aptos-display.generated.d.ts.map +1 -0
  652. package/dist/text/font-metrics/font-advance-widths-aptos.generated.d.ts +10 -0
  653. package/dist/text/font-metrics/font-advance-widths-aptos.generated.d.ts.map +1 -0
  654. package/dist/text/font-metrics/font-advance-widths-arial.generated.d.ts +10 -0
  655. package/dist/text/font-metrics/font-advance-widths-arial.generated.d.ts.map +1 -0
  656. package/dist/text/font-metrics/font-advance-widths-calibri-light.generated.d.ts +10 -0
  657. package/dist/text/font-metrics/font-advance-widths-calibri-light.generated.d.ts.map +1 -0
  658. package/dist/text/font-metrics/font-advance-widths-calibri.generated.d.ts +10 -0
  659. package/dist/text/font-metrics/font-advance-widths-calibri.generated.d.ts.map +1 -0
  660. package/dist/text/font-metrics/font-advance-widths-segoe-ui.generated.d.ts +10 -0
  661. package/dist/text/font-metrics/font-advance-widths-segoe-ui.generated.d.ts.map +1 -0
  662. package/dist/text/font-metrics/font-advance-widths-times-new-roman.generated.d.ts +10 -0
  663. package/dist/text/font-metrics/font-advance-widths-times-new-roman.generated.d.ts.map +1 -0
  664. package/dist/text/font-metrics/font-advance-widths.generated.d.ts +48 -0
  665. package/dist/text/font-metrics/font-advance-widths.generated.d.ts.map +1 -0
  666. package/dist/text/font-metrics/font-kerning.d.ts +19 -0
  667. package/dist/text/font-metrics/font-kerning.d.ts.map +1 -0
  668. package/dist/visio/index.cjs +645 -119
  669. package/dist/visio/index.mjs +645 -119
  670. package/dist/visio/theme-color.d.ts +13 -3
  671. package/dist/visio/theme-color.d.ts.map +1 -1
  672. package/dist/visio/theme-resolve.d.ts +2 -1
  673. package/dist/visio/theme-resolve.d.ts.map +1 -1
  674. package/dist/visio/theme.d.ts +5 -2
  675. package/dist/visio/theme.d.ts.map +1 -1
  676. package/dist/xlsx/collab/adapter.d.ts +18 -0
  677. package/dist/xlsx/collab/adapter.d.ts.map +1 -0
  678. package/dist/xlsx/collab/apply.d.ts +8 -0
  679. package/dist/xlsx/collab/apply.d.ts.map +1 -0
  680. package/dist/xlsx/collab/bind.d.ts +34 -0
  681. package/dist/xlsx/collab/bind.d.ts.map +1 -0
  682. package/dist/xlsx/collab/codec.d.ts +35 -0
  683. package/dist/xlsx/collab/codec.d.ts.map +1 -0
  684. package/dist/xlsx/collab/dirty.d.ts +23 -0
  685. package/dist/xlsx/collab/dirty.d.ts.map +1 -0
  686. package/dist/xlsx/collab/index.cjs +1245 -0
  687. package/dist/xlsx/collab/index.d.ts +10 -0
  688. package/dist/xlsx/collab/index.d.ts.map +1 -0
  689. package/dist/xlsx/collab/index.mjs +1207 -0
  690. package/dist/xlsx/collab/lines.d.ts +22 -0
  691. package/dist/xlsx/collab/lines.d.ts.map +1 -0
  692. package/dist/xlsx/collab/names.d.ts +16 -0
  693. package/dist/xlsx/collab/names.d.ts.map +1 -0
  694. package/dist/xlsx/collab/presence.d.ts +31 -0
  695. package/dist/xlsx/collab/presence.d.ts.map +1 -0
  696. package/dist/xlsx/collab/schema.d.ts +30 -0
  697. package/dist/xlsx/collab/schema.d.ts.map +1 -0
  698. package/dist/xlsx/collab/sheets.d.ts +34 -0
  699. package/dist/xlsx/collab/sheets.d.ts.map +1 -0
  700. package/dist/xlsx/collab/styles.d.ts +26 -0
  701. package/dist/xlsx/collab/styles.d.ts.map +1 -0
  702. package/dist/xlsx/collab/write.d.ts +14 -0
  703. package/dist/xlsx/collab/write.d.ts.map +1 -0
  704. package/dist/xlsx/edit/chart-colors.d.ts +2 -2
  705. package/dist/xlsx/edit/chart-colors.d.ts.map +1 -1
  706. package/dist/xlsx/edit/chart-element-fill.d.ts +3 -3
  707. package/dist/xlsx/edit/chart-element-fill.d.ts.map +1 -1
  708. package/dist/xlsx/edit/chart-series-fill.d.ts +2 -2
  709. package/dist/xlsx/edit/chart-series-fill.d.ts.map +1 -1
  710. package/dist/xlsx/edit/chart-series-gradient.d.ts +3 -3
  711. package/dist/xlsx/edit/chart-series-gradient.d.ts.map +1 -1
  712. package/dist/xlsx/edit/chart-series-target.d.ts +15 -0
  713. package/dist/xlsx/edit/chart-series-target.d.ts.map +1 -0
  714. package/dist/xlsx/edit/chart-series-transparency.d.ts +2 -2
  715. package/dist/xlsx/edit/chart-series-transparency.d.ts.map +1 -1
  716. package/dist/xlsx/edit/external.d.ts +28 -0
  717. package/dist/xlsx/edit/external.d.ts.map +1 -0
  718. package/dist/xlsx/edit/index.d.ts +1 -0
  719. package/dist/xlsx/edit/index.d.ts.map +1 -1
  720. package/dist/xlsx/edit/session-calc.d.ts +7 -0
  721. package/dist/xlsx/edit/session-calc.d.ts.map +1 -1
  722. package/dist/xlsx/edit/session.d.ts.map +1 -1
  723. package/dist/xlsx/edit/types.d.ts +14 -1
  724. package/dist/xlsx/edit/types.d.ts.map +1 -1
  725. package/dist/xlsx/formula/engine.d.ts.map +1 -1
  726. package/dist/xlsx/formula/lexemes.d.ts +6 -0
  727. package/dist/xlsx/formula/lexemes.d.ts.map +1 -1
  728. package/dist/xlsx/formula/tokenizer.d.ts.map +1 -1
  729. package/dist/xlsx/index.cjs +4599 -2399
  730. package/dist/xlsx/index.mjs +4589 -2400
  731. package/dist/xlsx/layout/cell-view.d.ts.map +1 -1
  732. package/dist/xlsx/layout/chart-view.d.ts +3 -54
  733. package/dist/xlsx/layout/chart-view.d.ts.map +1 -1
  734. package/dist/xlsx/layout/colors.d.ts +1 -4
  735. package/dist/xlsx/layout/colors.d.ts.map +1 -1
  736. package/dist/xlsx/layout/index.d.ts +7 -4
  737. package/dist/xlsx/layout/index.d.ts.map +1 -1
  738. package/dist/xlsx/layout/remote-selections.d.ts +40 -0
  739. package/dist/xlsx/layout/remote-selections.d.ts.map +1 -0
  740. package/dist/xlsx/layout/sparkline-data.d.ts +19 -0
  741. package/dist/xlsx/layout/sparkline-data.d.ts.map +1 -0
  742. package/dist/xlsx/layout/sparkline-view.d.ts +52 -0
  743. package/dist/xlsx/layout/sparkline-view.d.ts.map +1 -0
  744. package/dist/xlsx/layout/tint.d.ts +3 -12
  745. package/dist/xlsx/layout/tint.d.ts.map +1 -1
  746. package/dist/xlsx/layout/types.d.ts +3 -0
  747. package/dist/xlsx/layout/types.d.ts.map +1 -1
  748. package/dist/xlsx/load/index.cjs +3036 -1286
  749. package/dist/xlsx/load/index.mjs +3036 -1286
  750. package/dist/xlsx/model-sparklines.d.ts +52 -0
  751. package/dist/xlsx/model-sparklines.d.ts.map +1 -0
  752. package/dist/xlsx/model.d.ts +10 -47
  753. package/dist/xlsx/model.d.ts.map +1 -1
  754. package/dist/xlsx/read/chart.d.ts +1 -4
  755. package/dist/xlsx/read/chart.d.ts.map +1 -1
  756. package/dist/xlsx/read/index.d.ts +1 -0
  757. package/dist/xlsx/read/index.d.ts.map +1 -1
  758. package/dist/xlsx/read/sheet-data-source.d.ts +10 -0
  759. package/dist/xlsx/read/sheet-data-source.d.ts.map +1 -0
  760. package/dist/xlsx/read/sparklines.d.ts +12 -0
  761. package/dist/xlsx/read/sparklines.d.ts.map +1 -0
  762. package/dist/xlsx/read/worksheet.d.ts.map +1 -1
  763. package/dist/xlsx/ui/commands/i18n/navigation.d.ts.map +1 -1
  764. package/dist/xlsx/ui/context.d.ts +15 -1
  765. package/dist/xlsx/ui/context.d.ts.map +1 -1
  766. package/dist/xlsx/ui/grid/cell-items.d.ts.map +1 -1
  767. package/dist/xlsx/ui/grid/cell-paint.d.ts +1 -1
  768. package/dist/xlsx/ui/grid/cell-paint.d.ts.map +1 -1
  769. package/dist/xlsx/ui/grid/view-cache.d.ts.map +1 -1
  770. package/dist/xlsx/ui/index.cjs +1127 -559
  771. package/dist/xlsx/ui/index.mjs +1127 -560
  772. package/dist/xlsx/ui/locales/de/collab.d.ts +2 -0
  773. package/dist/xlsx/ui/locales/de/collab.d.ts.map +1 -0
  774. package/dist/xlsx/ui/locales/de/index.d.ts.map +1 -1
  775. package/dist/xlsx/ui/locales/en/collab.d.ts +2 -0
  776. package/dist/xlsx/ui/locales/en/collab.d.ts.map +1 -0
  777. package/dist/xlsx/ui/locales/en/index.d.ts.map +1 -1
  778. package/dist/xlsx/ui/locales/es/collab.d.ts +2 -0
  779. package/dist/xlsx/ui/locales/es/collab.d.ts.map +1 -0
  780. package/dist/xlsx/ui/locales/es/index.d.ts.map +1 -1
  781. package/dist/xlsx/ui/locales/fr/collab.d.ts +2 -0
  782. package/dist/xlsx/ui/locales/fr/collab.d.ts.map +1 -0
  783. package/dist/xlsx/ui/locales/fr/index.d.ts.map +1 -1
  784. package/dist/xlsx/ui/locales/zh-CN/collab.d.ts +2 -0
  785. package/dist/xlsx/ui/locales/zh-CN/collab.d.ts.map +1 -0
  786. package/dist/xlsx/ui/locales/zh-CN/index.d.ts.map +1 -1
  787. package/dist/xlsx/ui/ribbon/icon-paths.d.ts.map +1 -1
  788. package/dist/xlsx/write/chart-colors.d.ts +3 -0
  789. package/dist/xlsx/write/chart-colors.d.ts.map +1 -1
  790. package/dist/xlsx/write/chart-space.d.ts +5 -0
  791. package/dist/xlsx/write/chart-space.d.ts.map +1 -0
  792. package/dist/xlsx/write/chart-title.d.ts +4 -1
  793. package/dist/xlsx/write/chart-title.d.ts.map +1 -1
  794. package/dist/xlsx/write/chart.d.ts +4 -1
  795. package/dist/xlsx/write/chart.d.ts.map +1 -1
  796. package/dist/xml/index.cjs +162 -0
  797. package/dist/xml/index.d.ts +1 -0
  798. package/dist/xml/index.d.ts.map +1 -1
  799. package/dist/xml/index.mjs +161 -1
  800. package/dist/xml/lite.d.ts +30 -0
  801. package/dist/xml/lite.d.ts.map +1 -0
  802. package/package.json +6 -1
  803. package/dist/pptx/chunks/index-BHqL5KXH.d.ts.map +0 -1
  804. package/dist/pptx/chunks/index-BYkdcS8J.d.ts.map +0 -1
  805. package/dist/pptx/chunks/smart-art-CO2jmJFf.d.ts.map +0 -1
  806. package/dist/pptx/chunks/text-operations-DEJ7alZR.d.ts.map +0 -1
  807. package/dist/xlsx/layout/chart-appearance.d.ts.map +0 -1
  808. package/dist/xlsx/layout/chart-colors.d.ts +0 -9
  809. package/dist/xlsx/layout/chart-colors.d.ts.map +0 -1
  810. package/dist/xlsx/layout/chart-scale.d.ts.map +0 -1
  811. package/dist/xlsx/layout/chart-spacing.d.ts +0 -6
  812. package/dist/xlsx/layout/chart-spacing.d.ts.map +0 -1
  813. package/dist/xlsx/layout/chart-svg-appearance.d.ts.map +0 -1
  814. package/dist/xlsx/layout/chart-svg-bars.d.ts.map +0 -1
  815. package/dist/xlsx/layout/chart-svg-cartesian.d.ts.map +0 -1
  816. package/dist/xlsx/layout/chart-svg-legend.d.ts.map +0 -1
  817. package/dist/xlsx/layout/chart-svg-radial.d.ts.map +0 -1
  818. package/dist/xlsx/layout/chart-svg-text-metrics.d.ts.map +0 -1
  819. package/dist/xlsx/layout/chart-svg-title-text.d.ts.map +0 -1
  820. package/dist/xlsx/layout/chart-svg-util.d.ts.map +0 -1
  821. package/dist/xlsx/layout/chart-svg.d.ts.map +0 -1
  822. package/dist/xlsx/layout/chart-title-text.d.ts +0 -14
  823. package/dist/xlsx/layout/chart-title-text.d.ts.map +0 -1
  824. package/dist/xlsx/layout/font-family.d.ts.map +0 -1
  825. /package/dist/{xlsx/layout → chart/render}/chart-scale.d.ts +0 -0
  826. /package/dist/{xlsx/layout → chart/render}/chart-svg-bars.d.ts +0 -0
  827. /package/dist/{xlsx/layout → chart/render}/chart-svg-cartesian.d.ts +0 -0
  828. /package/dist/{xlsx/layout → chart/render}/chart-svg-legend.d.ts +0 -0
  829. /package/dist/{xlsx/layout → chart/render}/chart-svg-radial.d.ts +0 -0
  830. /package/dist/{xlsx/layout → chart/render}/chart-svg-text-metrics.d.ts +0 -0
  831. /package/dist/{xlsx/layout → chart/render}/chart-svg-title-text.d.ts +0 -0
  832. /package/dist/{xlsx/layout → chart/render}/chart-svg-util.d.ts +0 -0
  833. /package/dist/{xlsx/layout → chart/render}/chart-svg.d.ts +0 -0
@@ -103,31 +103,31 @@ function quoteSheetName(name) {
103
103
  }
104
104
 
105
105
  // xlsx/address-r1c1.ts
106
- var dimension = (text, base, size) => {
107
- if (!text) return base;
108
- if (text.startsWith("[")) {
109
- const offset2 = Number(text.slice(1, -1));
106
+ var dimension = (text2, base, size) => {
107
+ if (!text2) return base;
108
+ if (text2.startsWith("[")) {
109
+ const offset2 = Number(text2.slice(1, -1));
110
110
  if (Math.abs(offset2) >= size) return void 0;
111
111
  return ((base + offset2) % size + size) % size;
112
112
  }
113
- const at = Number(text) - 1;
113
+ const at = Number(text2) - 1;
114
114
  return at >= 0 && at < size ? at : void 0;
115
115
  };
116
- function corner(text, base) {
117
- const cell = /^R(\[[+-]?\d+\]|\d+)?C(\[[+-]?\d+\]|\d+)?$/i.exec(text);
116
+ function corner(text2, base) {
117
+ const cell = /^R(\[[+-]?\d+\]|\d+)?C(\[[+-]?\d+\]|\d+)?$/i.exec(text2);
118
118
  if (cell) {
119
119
  const row2 = dimension(cell[1], base.row, MAX_ROW + 1);
120
120
  const col = dimension(cell[2], base.col, MAX_COL + 1);
121
121
  if (row2 === void 0 || col === void 0) return void 0;
122
122
  return { kind: "cell", range: { start: { row: row2, col }, end: { row: row2, col } } };
123
123
  }
124
- const rowMatch = /^R(\[[+-]?\d+\]|\d+)?$/i.exec(text);
124
+ const rowMatch = /^R(\[[+-]?\d+\]|\d+)?$/i.exec(text2);
125
125
  if (rowMatch) {
126
126
  const row2 = dimension(rowMatch[1], base.row, MAX_ROW + 1);
127
127
  if (row2 === void 0) return void 0;
128
128
  return { kind: "row", range: { start: { row: row2, col: 0 }, end: { row: row2, col: MAX_COL } } };
129
129
  }
130
- const colMatch = /^C(\[[+-]?\d+\]|\d+)?$/i.exec(text);
130
+ const colMatch = /^C(\[[+-]?\d+\]|\d+)?$/i.exec(text2);
131
131
  if (colMatch) {
132
132
  const col = dimension(colMatch[1], base.col, MAX_COL + 1);
133
133
  if (col === void 0) return void 0;
@@ -135,10 +135,10 @@ function corner(text, base) {
135
135
  }
136
136
  return void 0;
137
137
  }
138
- function parseR1C1Range(text, base) {
138
+ function parseR1C1Range(text2, base) {
139
139
  if (!Number.isInteger(base.row) || !Number.isInteger(base.col) || base.row < 0 || base.row > MAX_ROW || base.col < 0 || base.col > MAX_COL)
140
140
  return void 0;
141
- const parts = text.trim().split(":");
141
+ const parts = text2.trim().split(":");
142
142
  if (parts.length > 2) return void 0;
143
143
  const a = corner(parts[0] ?? "", base);
144
144
  const b = parts.length === 1 ? a : corner(parts[1] ?? "", base);
@@ -323,27 +323,27 @@ function styleAt(workbook, styleId) {
323
323
  }
324
324
  function internStyle(workbook, style2) {
325
325
  const key = styleKey(style2);
326
- const cache2 = styleCache(workbook);
327
- const known = cache2.get(key);
326
+ const cache3 = styleCache(workbook);
327
+ const known = cache3.get(key);
328
328
  if (known !== void 0 && workbook.styles[known] && styleKey(workbook.styles[known]) === key)
329
329
  return known;
330
330
  const index2 = workbook.styles.findIndex((candidate) => styleKey(candidate) === key);
331
331
  if (index2 >= 0) {
332
- cache2.set(key, index2);
332
+ cache3.set(key, index2);
333
333
  return index2;
334
334
  }
335
335
  workbook.styles.push(style2);
336
- cache2.set(key, workbook.styles.length - 1);
336
+ cache3.set(key, workbook.styles.length - 1);
337
337
  return workbook.styles.length - 1;
338
338
  }
339
339
  var caches = /* @__PURE__ */ new WeakMap();
340
340
  function styleCache(workbook) {
341
- let cache2 = caches.get(workbook);
342
- if (!cache2) {
343
- cache2 = /* @__PURE__ */ new Map();
344
- caches.set(workbook, cache2);
341
+ let cache3 = caches.get(workbook);
342
+ if (!cache3) {
343
+ cache3 = /* @__PURE__ */ new Map();
344
+ caches.set(workbook, cache3);
345
345
  }
346
- return cache2;
346
+ return cache3;
347
347
  }
348
348
  function compact(value2) {
349
349
  const out = {};
@@ -669,15 +669,15 @@ function isElapsedOnly(tokens) {
669
669
  }
670
670
  function renderElapsedOnly(serial, tokens) {
671
671
  const seconds = Math.round(Math.abs(serial) * 86400);
672
- let text = "";
672
+ let text2 = "";
673
673
  for (const tok of tokens) {
674
- if (tok.t === "lit") text += tok.v;
674
+ if (tok.t === "lit") text2 += tok.v;
675
675
  else if (tok.t === "elapsed") {
676
676
  const amount = tok.unit === "h" ? Math.floor(seconds / 3600) : tok.unit === "m" ? Math.floor(seconds / 60) : seconds;
677
- text += String(amount).padStart(tok.width, "0");
677
+ text2 += String(amount).padStart(tok.width, "0");
678
678
  }
679
679
  }
680
- return text;
680
+ return text2;
681
681
  }
682
682
  function renderDate(serial, tokens, date1904) {
683
683
  if (!(serial >= 0) || serial >= MAX_DATE_SERIAL + 1) return void 0;
@@ -686,21 +686,21 @@ function renderDate(serial, tokens, date1904) {
686
686
  if (p.year > 9999) return void 0;
687
687
  const twelve = tokens.some((t) => t.t === "ampm");
688
688
  const hour12 = p.hours % 12 === 0 ? 12 : p.hours % 12;
689
- let text = "";
689
+ let text2 = "";
690
690
  for (const tok of tokens) {
691
- if (tok.t === "lit") text += tok.v;
691
+ if (tok.t === "lit") text2 += tok.v;
692
692
  else if (tok.t === "ampm") {
693
693
  const pm = p.hours >= 12;
694
- text += tok.kind === "AM/PM" ? pm ? "PM" : "AM" : tok.kind === "A/P" ? pm ? "P" : "A" : pm ? "p" : "a";
694
+ text2 += tok.kind === "AM/PM" ? pm ? "PM" : "AM" : tok.kind === "A/P" ? pm ? "P" : "A" : pm ? "p" : "a";
695
695
  } else if (tok.t === "subsec") {
696
696
  const digits2 = String(p.subsec).padStart(precision, "0");
697
- text += `.${digits2.slice(0, tok.digits).padEnd(tok.digits, "0")}`;
697
+ text2 += `.${digits2.slice(0, tok.digits).padEnd(tok.digits, "0")}`;
698
698
  } else if (tok.t === "elapsed") {
699
699
  const amount = tok.unit === "h" ? Math.floor(p.totalSeconds / 3600) : tok.unit === "m" ? Math.floor(p.totalSeconds / 60) : p.totalSeconds;
700
- text += String(amount).padStart(tok.width, "0");
701
- } else if (tok.t === "date") text += datePart(tok.part, p, twelve ? hour12 : p.hours);
700
+ text2 += String(amount).padStart(tok.width, "0");
701
+ } else if (tok.t === "date") text2 += datePart(tok.part, p, twelve ? hour12 : p.hours);
702
702
  }
703
- return text;
703
+ return text2;
704
704
  }
705
705
  function datePart(part, p, hour) {
706
706
  switch (part) {
@@ -939,25 +939,25 @@ function renderFraction(value2, plan) {
939
939
  const dropSeparator = hideFraction || hasInt && intText === "" && numHash;
940
940
  const lastInt = plan.tokens.reduce((last, t, i2) => t.r === "int" ? i2 : last, -1);
941
941
  const firstNum = plan.tokens.findIndex((t) => t.r === "num");
942
- let text = "";
942
+ let text2 = "";
943
943
  let intDone = false;
944
944
  plan.tokens.forEach((tok, i2) => {
945
945
  if (tok.r === "lit") {
946
- if (!(dropSeparator && i2 > lastInt && i2 < firstNum)) text += tok.v;
946
+ if (!(dropSeparator && i2 > lastInt && i2 < firstNum)) text2 += tok.v;
947
947
  } else if (tok.r === "int") {
948
- if (!intDone) text += intText;
948
+ if (!intDone) text2 += intText;
949
949
  intDone = true;
950
950
  } else if (hideFraction) ; else if (blank) {
951
- if (tok.r === "num") text += " ";
952
- else if (tok.r === "slash") text += " ";
953
- else text += " ".repeat(plan.fixedDenominator ? plan.denWidth : 1);
951
+ if (tok.r === "num") text2 += " ";
952
+ else if (tok.r === "slash") text2 += " ";
953
+ else text2 += " ".repeat(plan.fixedDenominator ? plan.denWidth : 1);
954
954
  } else if (tok.r === "num") {
955
- if (tok.index === 0) text += padLeft(String(n), plan.numDigits);
956
- } else if (tok.r === "slash") text += "/";
957
- else if (plan.fixedDenominator) text += String(d);
958
- else if (tok.index === 0) text += padRight(String(d), plan.denDigits);
955
+ if (tok.index === 0) text2 += padLeft(String(n), plan.numDigits);
956
+ } else if (tok.r === "slash") text2 += "/";
957
+ else if (plan.fixedDenominator) text2 += String(d);
958
+ else if (tok.index === 0) text2 += padRight(String(d), plan.denDigits);
959
959
  });
960
- return { text, zero };
960
+ return { text: text2, zero };
961
961
  }
962
962
 
963
963
  // xlsx/numfmt/decimal.ts
@@ -1162,18 +1162,18 @@ function renderNumber(value2, plan) {
1162
1162
  } else rounded = roundDecimals(v, plan.fracDigits.length);
1163
1163
  const ints = plan.exponent && isZero(rounded) ? plan.intDigits.map(() => "0") : placeIntegers(integerPart(rounded), plan.intDigits, plan.grouping);
1164
1164
  const fracs = placeFraction(fractionPart(rounded, plan.fracDigits.length), plan.fracDigits);
1165
- let text = "";
1165
+ let text2 = "";
1166
1166
  for (const tok of plan.tokens) {
1167
- if (tok.r === "lit") text += tok.v;
1168
- else if (tok.r === "int") text += ints[tok.index] ?? "";
1169
- else if (tok.r === "frac") text += fracs[tok.index] ?? "";
1170
- else if (tok.r === "point") text += ".";
1167
+ if (tok.r === "lit") text2 += tok.v;
1168
+ else if (tok.r === "int") text2 += ints[tok.index] ?? "";
1169
+ else if (tok.r === "frac") text2 += fracs[tok.index] ?? "";
1170
+ else if (tok.r === "point") text2 += ".";
1171
1171
  else if (plan.exponent) {
1172
1172
  const sign2 = exp2 < 0 ? "-" : plan.exponent.plus ? "+" : "";
1173
- text += `E${sign2}${String(Math.abs(exp2)).padStart(plan.exponent.digits, "0")}`;
1173
+ text2 += `E${sign2}${String(Math.abs(exp2)).padStart(plan.exponent.digits, "0")}`;
1174
1174
  }
1175
1175
  }
1176
- return { text, zero: isZero(rounded) };
1176
+ return { text: text2, zero: isZero(rounded) };
1177
1177
  }
1178
1178
 
1179
1179
  // xlsx/numfmt/tokenizer.ts
@@ -1464,14 +1464,14 @@ function compileFormat(format) {
1464
1464
  const code = format.trim() === "" ? "General" : format;
1465
1465
  const sections = splitSections(code).slice(0, 4).map(compileSection);
1466
1466
  let numeric2;
1467
- let text;
1467
+ let text2;
1468
1468
  const last = sections[sections.length - 1];
1469
1469
  if (sections.length === 4) {
1470
1470
  numeric2 = sections.slice(0, 3);
1471
- text = sections[3];
1471
+ text2 = sections[3];
1472
1472
  } else if (last && last.kind === "text") {
1473
1473
  numeric2 = sections.slice(0, -1);
1474
- text = last;
1474
+ text2 = last;
1475
1475
  } else numeric2 = sections;
1476
1476
  if (numeric2.length === 0) numeric2 = [generalSection()];
1477
1477
  const conditional = numeric2.some((s) => s.condition !== void 0);
@@ -1481,7 +1481,7 @@ function compileFormat(format) {
1481
1481
  conditional,
1482
1482
  isDate: numeric2.some((s) => s.kind === "date")
1483
1483
  };
1484
- if (text) compiled.text = text;
1484
+ if (text2) compiled.text = text2;
1485
1485
  if (cache.size >= CACHE_LIMIT) cache.clear();
1486
1486
  cache.set(format, compiled);
1487
1487
  return compiled;
@@ -1555,16 +1555,16 @@ function generalDigits(v, width) {
1555
1555
  }
1556
1556
  function formatGeneral(value2, width = GENERAL_WIDTH) {
1557
1557
  if (!Number.isFinite(value2)) return "#NUM!";
1558
- const text = generalDigits(
1558
+ const text2 = generalDigits(
1559
1559
  toDigits(value2),
1560
1560
  Math.max(1, Math.min(GENERAL_WIDTH, Math.floor(width)))
1561
1561
  );
1562
- return value2 < 0 && text !== "0" ? `-${text}` : text;
1562
+ return value2 < 0 && text2 !== "0" ? `-${text2}` : text2;
1563
1563
  }
1564
1564
 
1565
1565
  // xlsx/numfmt/format.ts
1566
1566
  var OVERFLOW_TEXT = "########";
1567
- var result = (text, section) => section?.color ? { text, color: section.color } : { text };
1567
+ var result = (text2, section) => section?.color ? { text: text2, color: section.color } : { text: text2 };
1568
1568
  function tokenSource(tok) {
1569
1569
  switch (tok.t) {
1570
1570
  case "lit":
@@ -1597,21 +1597,21 @@ function tokenSource(tok) {
1597
1597
  return "";
1598
1598
  }
1599
1599
  }
1600
- function formatText(text, section) {
1601
- if (!section) return { text };
1600
+ function formatText(text2, section) {
1601
+ if (!section) return { text: text2 };
1602
1602
  let out = "";
1603
- for (const tok of section.tokens) out += tok.t === "text" ? text : tokenSource(tok);
1603
+ for (const tok of section.tokens) out += tok.t === "text" ? text2 : tokenSource(tok);
1604
1604
  return result(out, section);
1605
1605
  }
1606
1606
  function renderAbs(v, section, generalWidth) {
1607
1607
  if (section.fraction) return renderFraction(v, section.fraction);
1608
1608
  if (section.number) return renderNumber(v, section.number);
1609
1609
  const general = formatGeneral(Math.abs(v), generalWidth);
1610
- let text = "";
1610
+ let text2 = "";
1611
1611
  for (const tok of section.tokens) {
1612
- text += tok.t === "general" || tok.t === "text" ? general : tokenSource(tok);
1612
+ text2 += tok.t === "general" || tok.t === "text" ? general : tokenSource(tok);
1613
1613
  }
1614
- return { text, zero: general === "0" };
1614
+ return { text: text2, zero: general === "0" };
1615
1615
  }
1616
1616
  function hashFill(options) {
1617
1617
  const width = options.width ?? 0;
@@ -1621,7 +1621,7 @@ function hashFill(options) {
1621
1621
  function fitNumber(value2, format, options) {
1622
1622
  const date1904 = options.date1904 ?? false;
1623
1623
  const width = options.width ?? 0;
1624
- const fits = (text) => (options.measure ? options.measure(text) : text.length) <= width;
1624
+ const fits = (text2) => (options.measure ? options.measure(text2) : text2.length) <= width;
1625
1625
  const first2 = formatNumber(value2, format, date1904);
1626
1626
  if (fits(first2.text) || first2.text === OVERFLOW_TEXT) return first2;
1627
1627
  const choice = chooseSection(compileFormat(format), value2);
@@ -1644,15 +1644,15 @@ function formatNumber(value2, format, date1904, generalWidth) {
1644
1644
  if (section.kind === "date") {
1645
1645
  const serial = abs2 ? Math.abs(value2) : value2;
1646
1646
  if (isElapsedOnly(section.tokens)) {
1647
- const text3 = renderElapsedOnly(serial, section.tokens);
1648
- return result(serial < 0 ? `-${text3}` : text3, section);
1647
+ const text4 = renderElapsedOnly(serial, section.tokens);
1648
+ return result(serial < 0 ? `-${text4}` : text4, section);
1649
1649
  }
1650
- const text2 = renderDate(serial, section.tokens, date1904);
1651
- return text2 === void 0 ? { text: OVERFLOW_TEXT } : result(text2, section);
1650
+ const text3 = renderDate(serial, section.tokens, date1904);
1651
+ return text3 === void 0 ? { text: OVERFLOW_TEXT } : result(text3, section);
1652
1652
  }
1653
- const { text, zero } = renderAbs(value2, section, generalWidth);
1653
+ const { text: text2, zero } = renderAbs(value2, section, generalWidth);
1654
1654
  const minus = value2 < 0 && !abs2 && !zero;
1655
- return result(minus ? `-${text}` : text, section);
1655
+ return result(minus ? `-${text2}` : text2, section);
1656
1656
  }
1657
1657
  function formatValue(value2, format, options = {}) {
1658
1658
  if (value2 === null) return { text: "" };
@@ -1689,9 +1689,9 @@ function monthFromName(name) {
1689
1689
  );
1690
1690
  return index2 < 0 ? void 0 : index2 + 1;
1691
1691
  }
1692
- function fullYear(text) {
1693
- const y = Number(text);
1694
- if (text.length > 2) return y;
1692
+ function fullYear(text2) {
1693
+ const y = Number(text2);
1694
+ if (text2.length > 2) return y;
1695
1695
  return y < 30 ? 2e3 + y : 1900 + y;
1696
1696
  }
1697
1697
  function serialOf(year, month, day, date1904) {
@@ -1705,8 +1705,8 @@ function serialOf(year, month, day, date1904) {
1705
1705
  return serial < minimum ? void 0 : serial;
1706
1706
  }
1707
1707
  var TIME_RE = /^(\d{1,5}):(\d{1,2})(?::(\d{1,2}))?(?:\.(\d+))?\s*(am|pm|a|p)?$/i;
1708
- function parseTime(text) {
1709
- const m = TIME_RE.exec(text);
1708
+ function parseTime(text2) {
1709
+ const m = TIME_RE.exec(text2);
1710
1710
  if (!m) return void 0;
1711
1711
  const [, a = "0", b = "0", c, frac, ampm] = m;
1712
1712
  let hours = Number(a);
@@ -1733,11 +1733,11 @@ function parseTime(text) {
1733
1733
  return { fraction: (hours * 3600 + minutes * 60 + seconds) / 86400, format };
1734
1734
  }
1735
1735
  var currentYear = () => (/* @__PURE__ */ new Date()).getFullYear();
1736
- function parseDay(text) {
1737
- let m = /^(\d{4})[-/](\d{1,2})[-/](\d{1,2})$/.exec(text);
1736
+ function parseDay(text2) {
1737
+ let m = /^(\d{4})[-/](\d{1,2})[-/](\d{1,2})$/.exec(text2);
1738
1738
  if (m)
1739
1739
  return { year: Number(m[1]), month: Number(m[2]), day: Number(m[3]), format: "yyyy-mm-dd" };
1740
- m = /^(\d{1,2})([-/])(\d{1,2})\2(\d{2}|\d{4})$/.exec(text);
1740
+ m = /^(\d{1,2})([-/])(\d{1,2})\2(\d{2}|\d{4})$/.exec(text2);
1741
1741
  if (m)
1742
1742
  return {
1743
1743
  year: fullYear(m[4] ?? ""),
@@ -1745,9 +1745,9 @@ function parseDay(text) {
1745
1745
  day: Number(m[3]),
1746
1746
  format: "m/d/yyyy"
1747
1747
  };
1748
- m = /^(\d{1,2})\/(\d{1,2})$/.exec(text);
1748
+ m = /^(\d{1,2})\/(\d{1,2})$/.exec(text2);
1749
1749
  if (m) return { year: currentYear(), month: Number(m[1]), day: Number(m[2]), format: "d-mmm" };
1750
- m = /^(\d{1,2})[- ]([a-z]+)\.?(?:[- ,]+(\d{2}|\d{4}))?$/i.exec(text);
1750
+ m = /^(\d{1,2})[- ]([a-z]+)\.?(?:[- ,]+(\d{2}|\d{4}))?$/i.exec(text2);
1751
1751
  if (m) {
1752
1752
  const month = monthFromName(m[2] ?? "");
1753
1753
  if (!month) return void 0;
@@ -1755,12 +1755,12 @@ function parseDay(text) {
1755
1755
  return { year: currentYear(), month, day: Number(m[1]), format: "d-mmm" };
1756
1756
  return { year: fullYear(m[3]), month, day: Number(m[1]), format: "d-mmm-yy" };
1757
1757
  }
1758
- m = /^([a-z]+)\.?[- ](\d{1,2}),?[- ](\d{4})$/i.exec(text);
1758
+ m = /^([a-z]+)\.?[- ](\d{1,2}),?[- ](\d{4})$/i.exec(text2);
1759
1759
  if (m) {
1760
1760
  const month = monthFromName(m[1] ?? "");
1761
1761
  return month ? { year: Number(m[3]), month, day: Number(m[2]), format: "d-mmm-yy" } : void 0;
1762
1762
  }
1763
- m = /^([a-z]{3,})[- ]?(\d{1,2})$/i.exec(text);
1763
+ m = /^([a-z]{3,})[- ]?(\d{1,2})$/i.exec(text2);
1764
1764
  if (m) {
1765
1765
  const month = monthFromName(m[1] ?? "");
1766
1766
  if (!month) return void 0;
@@ -1770,19 +1770,19 @@ function parseDay(text) {
1770
1770
  return { year, month, day: n, format: "d-mmm" };
1771
1771
  return { year: fullYear(m[2] ?? ""), month, day: 1, format: "mmm-yy" };
1772
1772
  }
1773
- m = /^([a-z]+)\.?[- ](\d{4})$/i.exec(text);
1773
+ m = /^([a-z]+)\.?[- ](\d{4})$/i.exec(text2);
1774
1774
  if (m) {
1775
1775
  const month = monthFromName(m[1] ?? "");
1776
1776
  return month ? { year: Number(m[2]), month, day: 1, format: "mmm-yy" } : void 0;
1777
1777
  }
1778
1778
  return void 0;
1779
1779
  }
1780
- function parseDateTimeInput(text, date1904) {
1781
- const time = parseTime(text);
1780
+ function parseDateTimeInput(text2, date1904) {
1781
+ const time = parseTime(text2);
1782
1782
  if (time) return { value: time.fraction, numFmt: time.format };
1783
- const tail = /(?:\s{1,8}|T)(\d{1,2}:\d{1,2}(?::\d{1,2})?(?:\s{0,8}(?:am|pm|a|p))?)$/i.exec(text);
1784
- const split = tail && tail.index > 0 ? [tail[0], text.slice(0, tail.index), tail[1]] : null;
1785
- const dayText = split ? split[1] ?? "" : text;
1783
+ const tail = /(?:\s{1,8}|T)(\d{1,2}:\d{1,2}(?::\d{1,2})?(?:\s{0,8}(?:am|pm|a|p))?)$/i.exec(text2);
1784
+ const split = tail && tail.index > 0 ? [tail[0], text2.slice(0, tail.index), tail[1]] : null;
1785
+ const dayText = split ? split[1] ?? "" : text2;
1786
1786
  const day = parseDay(dayText);
1787
1787
  if (!day) return void 0;
1788
1788
  const serial = serialOf(day.year, day.month, day.day, date1904);
@@ -1801,8 +1801,8 @@ function currencyFormat(symbol2, decimals2) {
1801
1801
  if (symbol2 === "$") return `$${body2}_);[Red]($${body2})`;
1802
1802
  return `${symbol2}${body2}`;
1803
1803
  }
1804
- function parseNumberInput(text) {
1805
- let s = text.trim();
1804
+ function parseNumberInput(text2) {
1805
+ let s = text2.trim();
1806
1806
  let negative = false;
1807
1807
  let parenthesized = false;
1808
1808
  if (s.startsWith("(") && s.endsWith(")")) {
@@ -1859,8 +1859,8 @@ function parseNumberInput(text) {
1859
1859
  if (grouped) return { value: value2, numFmt: decimals2 ? "#,##0.00" : "#,##0" };
1860
1860
  return { value: value2 };
1861
1861
  }
1862
- function parseFractionInput(text) {
1863
- const m = /^([-+]?)(\d+)\s+(\d+)\/(\d+)$/.exec(text.trim());
1862
+ function parseFractionInput(text2) {
1863
+ const m = /^([-+]?)(\d+)\s+(\d+)\/(\d+)$/.exec(text2.trim());
1864
1864
  if (!m) return void 0;
1865
1865
  const den = Number(m[4]);
1866
1866
  const num2 = Number(m[3]);
@@ -1871,27 +1871,27 @@ function parseFractionInput(text) {
1871
1871
  numFmt: den < 10 ? "# ?/?" : "# ??/??"
1872
1872
  };
1873
1873
  }
1874
- function parseCellInput(text, options = {}) {
1875
- if (text === "") return { value: null };
1876
- if (text.startsWith("=") && text.length > 1) return { value: null, formula: text.slice(1) };
1877
- if (text.startsWith("'")) return { value: text.slice(1) };
1878
- const trimmed = text.trim();
1879
- if (trimmed === "") return { value: text };
1874
+ function parseCellInput(text2, options = {}) {
1875
+ if (text2 === "") return { value: null };
1876
+ if (text2.startsWith("=") && text2.length > 1) return { value: null, formula: text2.slice(1) };
1877
+ if (text2.startsWith("'")) return { value: text2.slice(1) };
1878
+ const trimmed = text2.trim();
1879
+ if (trimmed === "") return { value: text2 };
1880
1880
  const upper2 = trimmed.toUpperCase();
1881
- if (trimmed === text) {
1881
+ if (trimmed === text2) {
1882
1882
  if (upper2 === "TRUE" || upper2 === "FALSE") return { value: upper2 === "TRUE" };
1883
1883
  if (isErrorCode(upper2)) return { value: cellError(upper2) };
1884
1884
  }
1885
1885
  const parsed = parseNumberInput(trimmed) ?? parseFractionInput(trimmed) ?? parseDateTimeInput(trimmed, options.date1904 ?? false);
1886
- if (!parsed) return { value: text };
1886
+ if (!parsed) return { value: text2 };
1887
1887
  return parsed.numFmt ? { value: parsed.value, numFmt: parsed.numFmt } : { value: parsed.value };
1888
1888
  }
1889
1889
 
1890
1890
  // xlsx/numfmt/decimals.ts
1891
1891
  function fromGeneral(delta, sample) {
1892
- const text = typeof sample === "number" ? formatGeneral(Math.abs(sample)) : "";
1893
- const sci = /^(\d)(?:\.(\d+))?E/.exec(text);
1894
- const shown = sci ? sci[2]?.length ?? 0 : /\.(\d+)/.exec(text)?.[1]?.length ?? 0;
1892
+ const text2 = typeof sample === "number" ? formatGeneral(Math.abs(sample)) : "";
1893
+ const sci = /^(\d)(?:\.(\d+))?E/.exec(text2);
1894
+ const shown = sci ? sci[2]?.length ?? 0 : /\.(\d+)/.exec(text2)?.[1]?.length ?? 0;
1895
1895
  const next = Math.max(0, shown + delta);
1896
1896
  const body2 = next ? `0.${"0".repeat(next)}` : "0";
1897
1897
  return sci ? `${body2}E+00` : body2;
@@ -1965,15 +1965,15 @@ var SPECIALS = {
1965
1965
  "#totals": "#Totals",
1966
1966
  "#this row": "#This Row"
1967
1967
  };
1968
- var unescape = (text) => text.replace(/'(.)/g, "$1");
1969
- function splitItems(text) {
1968
+ var unescape = (text2) => text2.replace(/'(.)/g, "$1");
1969
+ function splitItems(text2) {
1970
1970
  const items = [];
1971
1971
  let depth = 0;
1972
1972
  let current = "";
1973
- for (let i2 = 0; i2 < text.length; i2++) {
1974
- const ch = text[i2] ?? "";
1973
+ for (let i2 = 0; i2 < text2.length; i2++) {
1974
+ const ch = text2[i2] ?? "";
1975
1975
  if (ch === "'") {
1976
- current += ch + (text[i2 + 1] ?? "");
1976
+ current += ch + (text2[i2 + 1] ?? "");
1977
1977
  i2++;
1978
1978
  continue;
1979
1979
  }
@@ -1990,9 +1990,9 @@ function splitItems(text) {
1990
1990
  return items;
1991
1991
  }
1992
1992
  var strip = (item) => item.startsWith("[") && item.endsWith("]") ? item.slice(1, -1) : item;
1993
- function parseStructured(text, tableName) {
1994
- const open = text.indexOf("[");
1995
- const inner2 = text.slice(open + 1, -1);
1993
+ function parseStructured(text2, tableName) {
1994
+ const open = text2.indexOf("[");
1995
+ const inner2 = text2.slice(open + 1, -1);
1996
1996
  const out = { specials: [] };
1997
1997
  if (tableName) out.table = tableName;
1998
1998
  const addColumns = (spec2) => {
@@ -2017,7 +2017,7 @@ function parseStructured(text, tableName) {
2017
2017
  out.specials.push(special);
2018
2018
  return;
2019
2019
  }
2020
- if (out.column !== void 0) throw new FormulaError(`Invalid structured reference ${text}`);
2020
+ if (out.column !== void 0) throw new FormulaError(`Invalid structured reference ${text2}`);
2021
2021
  addColumns(item);
2022
2022
  };
2023
2023
  if (!inner2.includes("[")) {
@@ -2036,13 +2036,28 @@ function parseStructured(text, tableName) {
2036
2036
 
2037
2037
  // xlsx/formula/lexemes.ts
2038
2038
  var ERRORS_BY_LENGTH = [...ERROR_CODES].sort((a, b) => b.length - a.length);
2039
- var NAME_START = /[A-Za-z_\\\u00A1-\uFFFF]/;
2040
- var NAME_CHAR = /[A-Za-z0-9_.?\\\u00A1-\uFFFF]/;
2041
2039
  var NAME_RE = /^[A-Za-z_\\\u00A1-\uFFFF][A-Za-z0-9_.?\\\u00A1-\uFFFF]*/;
2042
2040
  var CELL_RE = /^(\$?)([A-Za-z]{1,3})(\$?)(\d{1,7})/;
2043
2041
  var COLS_RE = /^(\$?)([A-Za-z]{1,3}):(\$?)([A-Za-z]{1,3})/;
2044
2042
  var ROWS_RE = /^(\$?)(\d{1,7}):(\$?)(\d{1,7})/;
2045
2043
  var NUMBER_RE2 = /^(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/;
2044
+ var sticky = (re) => new RegExp(re.source.replace(/^\^/, ""), "y");
2045
+ var CELL_AT = sticky(CELL_RE);
2046
+ var COLS_AT = sticky(COLS_RE);
2047
+ var ROWS_AT = sticky(ROWS_RE);
2048
+ var NAME_AT = sticky(NAME_RE);
2049
+ var NUMBER_AT = sticky(NUMBER_RE2);
2050
+ function matchAt(re, source, at) {
2051
+ re.lastIndex = at;
2052
+ return re.exec(source);
2053
+ }
2054
+ var isDigitAt = (source, at) => isDigitCode(source.charCodeAt(at));
2055
+ function rangeStartAt(source, at, accept, max) {
2056
+ let i2 = source[at] === "$" ? at + 1 : at;
2057
+ const from = i2;
2058
+ while (i2 - from <= max && accept(source.charCodeAt(i2))) i2++;
2059
+ return i2 > from && i2 - from <= max && source[i2] === ":";
2060
+ }
2046
2061
  var OPERATORS = [
2047
2062
  "<=",
2048
2063
  ">=",
@@ -2060,7 +2075,12 @@ var OPERATORS = [
2060
2075
  ":",
2061
2076
  "@"
2062
2077
  ];
2063
- var isNameChar = (ch) => ch !== void 0 && NAME_CHAR.test(ch);
2078
+ var isLetterCode = (code) => code >= 65 && code <= 90 || code >= 97 && code <= 122;
2079
+ var isDigitCode = (code) => code >= 48 && code <= 57;
2080
+ var isNameStartCode = (code) => isLetterCode(code) || code === 95 || code === 92 || code >= 161;
2081
+ var isNameCharCode = (code) => isNameStartCode(code) || isDigitCode(code) || code === 46 || code === 63;
2082
+ var isSheetCharCode = (code) => isLetterCode(code) || isDigitCode(code) || code === 95 || code === 46 || code >= 161;
2083
+ var isNameChar = (ch) => ch !== void 0 && ch !== "" && isNameCharCode(ch.charCodeAt(0));
2064
2084
  function matchError(source, at) {
2065
2085
  const upper2 = source.slice(at, at + 14).toUpperCase();
2066
2086
  return ERRORS_BY_LENGTH.find((code) => upper2.startsWith(code));
@@ -2076,14 +2096,13 @@ var boundary = (source, end) => {
2076
2096
  return !isNameChar(next) && next !== "(" && next !== "!" && next !== "[";
2077
2097
  };
2078
2098
  function readReference(source, at) {
2079
- const rest = source.slice(at);
2080
- const cell = CELL_RE.exec(rest);
2099
+ const cell = matchAt(CELL_AT, source, at);
2081
2100
  if (cell) {
2082
2101
  const start = corner2(cell[1] ?? "", cell[2] ?? "", cell[3] ?? "", cell[4] ?? "");
2083
2102
  let length = cell[0].length;
2084
2103
  if (start) {
2085
- if (rest[length] === ":") {
2086
- const second = CELL_RE.exec(rest.slice(length + 1));
2104
+ if (source[at + length] === ":") {
2105
+ const second = matchAt(CELL_AT, source, at + length + 1);
2087
2106
  if (second) {
2088
2107
  const end = corner2(second[1] ?? "", second[2] ?? "", second[3] ?? "", second[4] ?? "");
2089
2108
  const total2 = length + 1 + second[0].length;
@@ -2097,8 +2116,8 @@ function readReference(source, at) {
2097
2116
  }
2098
2117
  length = 0;
2099
2118
  }
2100
- const cols = COLS_RE.exec(rest);
2101
- if (cols && boundary(source, at + cols[0].length) && !/^\d/.test(rest.slice(cols[0].length))) {
2119
+ const cols = rangeStartAt(source, at, isLetterCode, 3) ? matchAt(COLS_AT, source, at) : null;
2120
+ if (cols && boundary(source, at + cols[0].length) && !isDigitAt(source, at + cols[0].length)) {
2102
2121
  const c1 = columnIndex(cols[2] ?? "");
2103
2122
  const c2 = columnIndex(cols[4] ?? "");
2104
2123
  if (c1 >= 0 && c1 <= MAX_COL && c2 >= 0 && c2 <= MAX_COL) {
@@ -2112,7 +2131,7 @@ function readReference(source, at) {
2112
2131
  };
2113
2132
  }
2114
2133
  }
2115
- const rows2 = ROWS_RE.exec(rest);
2134
+ const rows2 = rangeStartAt(source, at, isDigitCode, 7) ? matchAt(ROWS_AT, source, at) : null;
2116
2135
  if (rows2 && boundary(source, at + rows2[0].length) && source[at + rows2[0].length] !== ".") {
2117
2136
  const r1 = Number(rows2[2]) - 1;
2118
2137
  const r2 = Number(rows2[4]) - 1;
@@ -2165,8 +2184,8 @@ function readBrackets(source, at) {
2165
2184
  }
2166
2185
  throw new FormulaError("Unterminated structured reference", at);
2167
2186
  }
2168
- function splitSheets(text) {
2169
- let rest = text;
2187
+ function splitSheets(text2) {
2188
+ let rest = text2;
2170
2189
  let book;
2171
2190
  const bookMatch = /^\[([^\]]*)\]/.exec(rest);
2172
2191
  if (bookMatch) {
@@ -2181,6 +2200,7 @@ function splitSheets(text) {
2181
2200
  if (book !== void 0) out.book = book;
2182
2201
  return out;
2183
2202
  }
2203
+ var PREFIX_AT = /(\[\d+\])?([A-Za-z0-9_.\u00A1-\uFFFF]+)(?::([A-Za-z0-9_.\u00A1-\uFFFF]+))?!/y;
2184
2204
  function readPrefix(source, at) {
2185
2205
  const ch = source[at];
2186
2206
  if (ch === "'") {
@@ -2189,19 +2209,27 @@ function readPrefix(source, at) {
2189
2209
  const length = quoted.length + 1;
2190
2210
  return { prefix: { text: source.slice(at, at + length), ...splitSheets(quoted.name) }, length };
2191
2211
  }
2192
- const m = /^(\[\d+\])?([A-Za-z0-9_.\u00A1-\uFFFF]+)(?::([A-Za-z0-9_.\u00A1-\uFFFF]+))?!/.exec(
2193
- source.slice(at)
2194
- );
2212
+ let i2 = at;
2213
+ if (ch === "[") {
2214
+ i2++;
2215
+ while (isDigitCode(source.charCodeAt(i2))) i2++;
2216
+ if (i2 === at + 1 || source[i2] !== "]") return void 0;
2217
+ i2++;
2218
+ }
2219
+ while (i2 < source.length && isSheetCharCode(source.charCodeAt(i2))) i2++;
2220
+ if (source[i2] !== "!" && source[i2] !== ":") return void 0;
2221
+ const m = matchAt(PREFIX_AT, source, at);
2195
2222
  if (!m) return void 0;
2196
2223
  if (!m[1] && /^\d/.test(m[2] ?? "") && !m[3]) return void 0;
2197
2224
  const raw = m[0].slice(0, -1);
2198
2225
  return { prefix: { text: m[0], ...splitSheets(raw) }, length: m[0].length };
2199
2226
  }
2200
- function numberLiteral(text) {
2201
- const [mantissa = "", exponent] = text.toLowerCase().split("e");
2227
+ function numberLiteral(text2) {
2228
+ if (text2.length <= 15) return Number(text2);
2229
+ const [mantissa = "", exponent] = text2.toLowerCase().split("e");
2202
2230
  const digits2 = mantissa.replace(".", "");
2203
2231
  const firstSignificant = digits2.search(/[1-9]/);
2204
- if (firstSignificant < 0 || digits2.length - firstSignificant <= 15) return Number(text);
2232
+ if (firstSignificant < 0 || digits2.length - firstSignificant <= 15) return Number(text2);
2205
2233
  const point = mantissa.includes(".") ? mantissa.indexOf(".") : mantissa.length;
2206
2234
  const kept = digits2.slice(0, firstSignificant + 15);
2207
2235
  const truncated = kept.length >= point ? `${kept.slice(0, point)}.${kept.slice(point)}` : kept + "0".repeat(point - kept.length);
@@ -2209,6 +2237,17 @@ function numberLiteral(text) {
2209
2237
  }
2210
2238
 
2211
2239
  // xlsx/formula/tokenizer.ts
2240
+ var SINGLE = {
2241
+ "(": "open",
2242
+ ")": "close",
2243
+ ",": "comma",
2244
+ ";": "semicolon",
2245
+ "{": "lbrace",
2246
+ "}": "rbrace"
2247
+ };
2248
+ var BOOK_INDEX = /\[\d+\]/y;
2249
+ var isSpace = (code) => code === 32 || code === 9 || code === 13 || code === 10;
2250
+ var isDigit3 = (code) => code >= 48 && code <= 57;
2212
2251
  function tokenize(formula) {
2213
2252
  const source = formula;
2214
2253
  const tokens = [];
@@ -2220,61 +2259,55 @@ function tokenize(formula) {
2220
2259
  };
2221
2260
  while (i2 < source.length) {
2222
2261
  const ch = source[i2] ?? "";
2262
+ const code = source.charCodeAt(i2);
2223
2263
  const start = i2;
2224
- if (/[ \t\r\n]/.test(ch)) {
2225
- const m = /^[ \t\r\n]+/.exec(source.slice(i2));
2226
- push3({ kind: "ws", text: m?.[0] ?? ch, start });
2264
+ if (isSpace(code)) {
2265
+ let j = i2 + 1;
2266
+ while (j < source.length && isSpace(source.charCodeAt(j))) j++;
2267
+ push3({ kind: "ws", text: source.slice(i2, j), start });
2227
2268
  continue;
2228
2269
  }
2229
2270
  if (ch === '"') {
2230
2271
  let j = i2 + 1;
2231
2272
  let value2 = "";
2232
2273
  for (; ; ) {
2233
- if (j >= source.length) throw new FormulaError("Unterminated string", start);
2234
- if (source[j] === '"') {
2235
- if (source[j + 1] === '"') {
2236
- value2 += '"';
2237
- j += 2;
2238
- continue;
2239
- }
2240
- break;
2274
+ const quote = source.indexOf('"', j);
2275
+ if (quote < 0) throw new FormulaError("Unterminated string", start);
2276
+ value2 += source.slice(j, quote);
2277
+ if (source[quote + 1] === '"') {
2278
+ value2 += '"';
2279
+ j = quote + 2;
2280
+ continue;
2241
2281
  }
2242
- value2 += source[j];
2243
- j++;
2282
+ j = quote;
2283
+ break;
2244
2284
  }
2245
2285
  push3({ kind: "string", text: source.slice(start, j + 1), start, value: value2 });
2246
2286
  continue;
2247
2287
  }
2248
2288
  if (ch === "#") {
2249
- const code = matchError(source, i2);
2250
- if (!code) throw new FormulaError(`Unexpected '#'`, start);
2289
+ const code2 = matchError(source, i2);
2290
+ if (!code2) throw new FormulaError(`Unexpected '#'`, start);
2251
2291
  push3({
2252
- kind: code === "#REF!" ? "ref" : "error",
2253
- text: source.slice(i2, i2 + code.length),
2292
+ kind: code2 === "#REF!" ? "ref" : "error",
2293
+ text: source.slice(i2, i2 + code2.length),
2254
2294
  start,
2255
- value: code
2295
+ value: code2
2256
2296
  });
2257
2297
  continue;
2258
2298
  }
2259
- const single = {
2260
- "(": "open",
2261
- ")": "close",
2262
- ",": "comma",
2263
- ";": "semicolon",
2264
- "{": "lbrace",
2265
- "}": "rbrace"
2266
- };
2267
- const kind = single[ch];
2299
+ const kind = SINGLE[ch];
2268
2300
  if (kind) {
2269
2301
  push3({ kind, text: ch, start });
2270
2302
  continue;
2271
2303
  }
2272
- if (ch === "[" && !/^\[\d+\]/.test(source.slice(i2))) {
2304
+ if (ch === "[" && !matchAt(BOOK_INDEX, source, i2)) {
2273
2305
  const length = readBrackets(source, i2);
2274
2306
  push3({ kind: "structured", text: source.slice(i2, i2 + length), start, value: "" });
2275
2307
  continue;
2276
2308
  }
2277
- const prefixed = ch === "'" || ch === "[" || NAME_START.test(ch) || /\d/.test(ch);
2309
+ const nameStart = isNameStartCode(code);
2310
+ const prefixed = ch === "'" || ch === "[" || nameStart || isDigit3(code);
2278
2311
  if (prefixed) {
2279
2312
  const prefix = readPrefix(source, i2);
2280
2313
  if (prefix) {
@@ -2283,14 +2316,15 @@ function tokenize(formula) {
2283
2316
  }
2284
2317
  if (ch === "'" || ch === "[") throw new FormulaError("Malformed sheet reference", start);
2285
2318
  }
2286
- if (/[\d.]/.test(ch) || ch === "$" || NAME_START.test(ch)) {
2319
+ const numeric2 = isDigit3(code) || ch === ".";
2320
+ if (numeric2 || ch === "$" || nameStart) {
2287
2321
  const ref = readReference(source, i2);
2288
2322
  if (ref) {
2289
2323
  push3(refToken(source, start, i2 + ref.length, ref.ref, void 0));
2290
2324
  continue;
2291
2325
  }
2292
- if (/[\d.]/.test(ch)) {
2293
- const m = NUMBER_RE2.exec(source.slice(i2));
2326
+ if (numeric2) {
2327
+ const m = matchAt(NUMBER_AT, source, i2);
2294
2328
  if (!m) throw new FormulaError(`Unexpected '${ch}'`, start);
2295
2329
  push3({ kind: "number", text: m[0], start, value: numberLiteral(m[0]) });
2296
2330
  continue;
@@ -2327,11 +2361,12 @@ function readAfterPrefix(source, at, start, prefix) {
2327
2361
  }
2328
2362
  const ref = readReference(source, at);
2329
2363
  if (ref) return refToken(source, start, at + ref.length, ref.ref, prefix);
2330
- if (NAME_START.test(source[at] ?? "")) return readName(source, at, start, prefix);
2364
+ if (at < source.length && isNameStartCode(source.charCodeAt(at)))
2365
+ return readName(source, at, start, prefix);
2331
2366
  throw new FormulaError("Invalid reference after sheet name", at);
2332
2367
  }
2333
2368
  function readName(source, at, start, prefix) {
2334
- const m = NAME_RE.exec(source.slice(at));
2369
+ const m = matchAt(NAME_AT, source, at);
2335
2370
  if (!m) throw new FormulaError("Invalid name", at);
2336
2371
  const name = m[0];
2337
2372
  let end = at + name.length;
@@ -2687,8 +2722,8 @@ function monthFromName2(name) {
2687
2722
  }
2688
2723
  var NUMBER_RE3 = /^(\d+(?:,\d{3,})+|\d*)(\.\d*)?(?:e([+-]?\d+))?$/i;
2689
2724
  var TIME_RE2 = /^(\d{1,4})(?::(\d+))?(?::(\d+(?:\.\d*)?))?(?:\s+(am|pm|a|p))?$/i;
2690
- function parsePlainNumber(text) {
2691
- const match2 = NUMBER_RE3.exec(text);
2725
+ function parsePlainNumber(text2) {
2726
+ const match2 = NUMBER_RE3.exec(text2);
2692
2727
  if (!match2) return void 0;
2693
2728
  const int2 = (match2[1] ?? "").replace(/,/g, "");
2694
2729
  const frac = match2[2] ?? "";
@@ -2696,8 +2731,8 @@ function parsePlainNumber(text) {
2696
2731
  const value2 = Number(`${int2 || "0"}${frac === "." ? "" : frac}${match2[3] ? `e${match2[3]}` : ""}`);
2697
2732
  return Number.isFinite(value2) ? value2 : void 0;
2698
2733
  }
2699
- function parseTime2(text) {
2700
- const match2 = TIME_RE2.exec(text);
2734
+ function parseTime2(text2) {
2735
+ const match2 = TIME_RE2.exec(text2);
2701
2736
  if (!match2) return void 0;
2702
2737
  let hours = Number(match2[1]);
2703
2738
  const minutes = Number(match2[2] ?? 0);
@@ -2720,28 +2755,28 @@ function serialOrUndefined(year, month, day) {
2720
2755
  }
2721
2756
  return ymdToSerial(year, month, day, currentDate1904());
2722
2757
  }
2723
- var fullYear2 = (text) => {
2724
- const year = Number(text);
2725
- if (text.length > 2) return year;
2758
+ var fullYear2 = (text2) => {
2759
+ const year = Number(text2);
2760
+ if (text2.length > 2) return year;
2726
2761
  return year < 30 ? 2e3 + year : 1900 + year;
2727
2762
  };
2728
- function parseDate(text) {
2763
+ function parseDate(text2) {
2729
2764
  const thisYear = (/* @__PURE__ */ new Date()).getFullYear();
2730
- let m = /^(\d{4})[-/](\d{1,2})[-/](\d{1,2})$/.exec(text);
2765
+ let m = /^(\d{4})[-/](\d{1,2})[-/](\d{1,2})$/.exec(text2);
2731
2766
  if (m) return serialOrUndefined(Number(m[1]), Number(m[2]), Number(m[3]));
2732
- m = /^(\d{1,2})\/(\d{1,2})(?:\/(\d{2}|\d{4}))?$/.exec(text);
2767
+ m = /^(\d{1,2})\/(\d{1,2})(?:\/(\d{2}|\d{4}))?$/.exec(text2);
2733
2768
  if (m) return serialOrUndefined(m[3] ? fullYear2(m[3]) : thisYear, Number(m[1]), Number(m[2]));
2734
- m = /^(\d{1,2})[-\s]([a-z]+)\.?(?:[-\s,]+(\d{2}|\d{4}))?$/i.exec(text);
2769
+ m = /^(\d{1,2})[-\s]([a-z]+)\.?(?:[-\s,]+(\d{2}|\d{4}))?$/i.exec(text2);
2735
2770
  if (m) {
2736
2771
  const month = monthFromName2(m[2] ?? "");
2737
2772
  if (month) return serialOrUndefined(m[3] ? fullYear2(m[3]) : thisYear, month, Number(m[1]));
2738
2773
  }
2739
- m = /^([a-z]+)\.?[-\s](\d{1,2})(?:,?\s*(\d{4}))?$/i.exec(text);
2774
+ m = /^([a-z]+)\.?[-\s](\d{1,2})(?:,?\s*(\d{4}))?$/i.exec(text2);
2740
2775
  if (m) {
2741
2776
  const month = monthFromName2(m[1] ?? "");
2742
2777
  if (month) return serialOrUndefined(m[3] ? Number(m[3]) : thisYear, month, Number(m[2]));
2743
2778
  }
2744
- m = /^([a-z]+)\.?[-\s](\d{4})$/i.exec(text);
2779
+ m = /^([a-z]+)\.?[-\s](\d{4})$/i.exec(text2);
2745
2780
  if (m) {
2746
2781
  const month = monthFromName2(m[1] ?? "");
2747
2782
  if (month) return serialOrUndefined(Number(m[2]), month, 1);
@@ -2749,43 +2784,43 @@ function parseDate(text) {
2749
2784
  return void 0;
2750
2785
  }
2751
2786
  function parseNumberText(input) {
2752
- let text = input.trim();
2753
- if (text === "") return void 0;
2787
+ let text2 = input.trim();
2788
+ if (text2 === "") return void 0;
2754
2789
  let scale2 = 1;
2755
- if (text.endsWith("%")) {
2790
+ if (text2.endsWith("%")) {
2756
2791
  scale2 = 0.01;
2757
- text = text.slice(0, -1).trimEnd();
2792
+ text2 = text2.slice(0, -1).trimEnd();
2758
2793
  }
2759
2794
  let sign2 = 1;
2760
- if (text.startsWith("(") && text.endsWith(")")) {
2795
+ if (text2.startsWith("(") && text2.endsWith(")")) {
2761
2796
  sign2 = -1;
2762
- text = text.slice(1, -1).trim();
2797
+ text2 = text2.slice(1, -1).trim();
2763
2798
  }
2764
- const signed = /^([+-]?)\s*\$?\s*([+-]?)\s*/.exec(text);
2799
+ const signed = /^([+-]?)\s*\$?\s*([+-]?)\s*/.exec(text2);
2765
2800
  const signText = `${signed?.[1] ?? ""}${signed?.[2] ?? ""}`;
2766
2801
  if (signText.length <= 1) {
2767
- const body2 = text.slice(signed?.[0].length ?? 0);
2802
+ const body2 = text2.slice(signed?.[0].length ?? 0);
2768
2803
  const plain2 = parsePlainNumber(body2);
2769
2804
  if (plain2 !== void 0) return (signText === "-" ? -1 : 1) * sign2 * plain2 * scale2;
2770
2805
  }
2771
2806
  if (scale2 !== 1 || sign2 !== 1) return void 0;
2772
- const fraction = /^([+-]?)(?:(\d+)\s+)?(\d+)\/(\d+)$/.exec(text);
2807
+ const fraction = /^([+-]?)(?:(\d+)\s+)?(\d+)\/(\d+)$/.exec(text2);
2773
2808
  if (fraction && fraction[2] !== void 0) {
2774
2809
  const den = Number(fraction[4]);
2775
2810
  if (den === 0) return void 0;
2776
2811
  const value2 = Number(fraction[2]) + Number(fraction[3]) / den;
2777
2812
  return fraction[1] === "-" ? -value2 : value2;
2778
2813
  }
2779
- const time = parseTime2(text);
2814
+ const time = parseTime2(text2);
2780
2815
  if (time !== void 0) return time;
2781
- const date = parseDate(text);
2816
+ const date = parseDate(text2);
2782
2817
  if (date !== void 0) return date;
2783
- const space = text.lastIndexOf(" ");
2818
+ const space = text2.lastIndexOf(" ");
2784
2819
  if (space > 0) {
2785
- const datePart2 = parseDate(text.slice(0, space).trim());
2786
- const timePart = parseTime2(text.slice(space + 1).trim());
2820
+ const datePart2 = parseDate(text2.slice(0, space).trim());
2821
+ const timePart = parseTime2(text2.slice(space + 1).trim());
2787
2822
  if (datePart2 !== void 0 && timePart !== void 0) return datePart2 + timePart;
2788
- const amPm = /^(.*\S)\s+(\S+\s*(?:am|pm))$/i.exec(text);
2823
+ const amPm = /^(.*\S)\s+(\S+\s*(?:am|pm))$/i.exec(text2);
2789
2824
  if (amPm) {
2790
2825
  const d = parseDate(amPm[1] ?? "");
2791
2826
  const t = parseTime2(amPm[2] ?? "");
@@ -3109,8 +3144,8 @@ function wildcardRegex(pattern) {
3109
3144
  }
3110
3145
  return new RegExp(`^${source}$`, "i");
3111
3146
  }
3112
- var escapeRegex = (text) => text.replace(/[.*+?^${}()|[\]\\/]/g, "\\$&");
3113
- var hasWildcards = (text) => /[*?~]/.test(text);
3147
+ var escapeRegex = (text2) => text2.replace(/[.*+?^${}()|[\]\\/]/g, "\\$&");
3148
+ var hasWildcards = (text2) => /[*?~]/.test(text2);
3114
3149
  function makeCriteria(criteria) {
3115
3150
  if (isError(criteria)) return (value2) => isError(value2) && value2.error === criteria.error;
3116
3151
  if (typeof criteria === "number") {
@@ -4362,22 +4397,22 @@ var NUMBER = String.raw`(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?`;
4362
4397
  var REAL_ONLY = new RegExp(`^([+-]?${NUMBER})$`);
4363
4398
  var IMAGINARY_ONLY = new RegExp(`^([+-]?(?:${NUMBER})?)([ij])$`);
4364
4399
  var BOTH = new RegExp(`^([+-]?${NUMBER})([+-])((?:${NUMBER})?)([ij])$`);
4365
- var coefficient = (text) => text === "" || text === "+" ? 1 : text === "-" ? -1 : Number(text);
4400
+ var coefficient = (text2) => text2 === "" || text2 === "+" ? 1 : text2 === "-" ? -1 : Number(text2);
4366
4401
  function parseComplex(value2) {
4367
4402
  if (isError(value2)) fail(value2);
4368
4403
  if (typeof value2 === "number") return { re: value2, im: 0, suffix: "i" };
4369
- const text = toText(value2);
4370
- if (text === "") return { re: 0, im: 0, suffix: "i" };
4371
- const real = REAL_ONLY.exec(text);
4404
+ const text2 = toText(value2);
4405
+ if (text2 === "") return { re: 0, im: 0, suffix: "i" };
4406
+ const real = REAL_ONLY.exec(text2);
4372
4407
  if (real) return { re: Number(real[1]), im: 0, suffix: "i" };
4373
- const imaginary = IMAGINARY_ONLY.exec(text);
4408
+ const imaginary = IMAGINARY_ONLY.exec(text2);
4374
4409
  if (imaginary)
4375
4410
  return {
4376
4411
  re: 0,
4377
4412
  im: coefficient(imaginary[1] ?? ""),
4378
4413
  suffix: imaginary[2] === "j" ? "j" : "i"
4379
4414
  };
4380
- const both = BOTH.exec(text);
4415
+ const both = BOTH.exec(text2);
4381
4416
  if (!both) return fail(ERR.NUM);
4382
4417
  const sign2 = both[2] === "-" ? -1 : 1;
4383
4418
  return {
@@ -4387,9 +4422,9 @@ function parseComplex(value2) {
4387
4422
  };
4388
4423
  }
4389
4424
  function digits(n) {
4390
- const text = Number(n.toPrecision(15)).toString();
4391
- const match2 = /^(-?[\d.]+)e([+-])(\d+)$/.exec(text);
4392
- return match2 ? `${match2[1]}E${match2[2]}${(match2[3] ?? "").padStart(2, "0")}` : text;
4425
+ const text2 = Number(n.toPrecision(15)).toString();
4426
+ const match2 = /^(-?[\d.]+)e([+-])(\d+)$/.exec(text2);
4427
+ return match2 ? `${match2[1]}E${match2[2]}${(match2[3] ?? "").padStart(2, "0")}` : text2;
4393
4428
  }
4394
4429
  function formatComplex({ re, im, suffix }) {
4395
4430
  const r = Math.abs(re) < 1e-15 * Math.max(1, Math.abs(im)) ? 0 : re;
@@ -4741,15 +4776,15 @@ var C7 = "Engineering";
4741
4776
  var BASES = { BIN: 2, OCT: 8, DEC: 10, HEX: 16 };
4742
4777
  var BITS = { BIN: 10, OCT: 30, DEC: 0, HEX: 40 };
4743
4778
  function parseBase(value2, base) {
4744
- const text = toText(scalar(value2)).trim().toUpperCase();
4779
+ const text2 = toText(scalar(value2)).trim().toUpperCase();
4745
4780
  if (base === "DEC") return Math.trunc(num(value2));
4746
4781
  const radix = BASES[base];
4747
4782
  const digits2 = radix === 2 ? /^[01]{1,10}$/ : radix === 8 ? /^[0-7]{1,10}$/ : /^[0-9A-F]{1,10}$/;
4748
- if (text === "") return 0;
4749
- if (!digits2.test(text)) fail(ERR.NUM);
4750
- let n = parseInt(text, radix);
4783
+ if (text2 === "") return 0;
4784
+ if (!digits2.test(text2)) fail(ERR.NUM);
4785
+ let n = parseInt(text2, radix);
4751
4786
  const bits = BITS[base];
4752
- if (text.length === 10 && n >= Math.pow(2, bits - 1)) n -= Math.pow(2, bits);
4787
+ if (text2.length === 10 && n >= Math.pow(2, bits - 1)) n -= Math.pow(2, bits);
4753
4788
  return n;
4754
4789
  }
4755
4790
  function formatBase(n, base, places) {
@@ -4758,10 +4793,10 @@ function formatBase(n, base, places) {
4758
4793
  const limit2 = Math.pow(2, bits - 1);
4759
4794
  if (n < -limit2 || n >= limit2) fail(ERR.NUM);
4760
4795
  if (n < 0) return (Math.pow(2, bits) + n).toString(radix).toUpperCase();
4761
- const text = n.toString(radix).toUpperCase();
4762
- if (places === void 0) return text;
4763
- if (places < text.length || places > 10) fail(ERR.NUM);
4764
- return text.padStart(Math.trunc(places), "0");
4796
+ const text2 = n.toString(radix).toUpperCase();
4797
+ if (places === void 0) return text2;
4798
+ if (places < text2.length || places > 10) fail(ERR.NUM);
4799
+ return text2.padStart(Math.trunc(places), "0");
4765
4800
  }
4766
4801
  var conversions = [];
4767
4802
  for (const from of Object.keys(BASES)) {
@@ -4896,9 +4931,9 @@ var ENGINEERING_FUNCTIONS = [
4896
4931
  1,
4897
4932
  1,
4898
4933
  (args) => {
4899
- const text = str(args[0]).trim().toUpperCase();
4900
- const negative = text.startsWith("-");
4901
- const body2 = negative ? text.slice(1) : text;
4934
+ const text2 = str(args[0]).trim().toUpperCase();
4935
+ const negative = text2.startsWith("-");
4936
+ const body2 = negative ? text2.slice(1) : text2;
4902
4937
  if (!/^[MDCLXVI]*$/.test(body2)) fail(ERR.VALUE);
4903
4938
  const value2 = { M: 1e3, D: 500, C: 100, L: 50, X: 10, V: 5, I: 1 };
4904
4939
  let total2 = 0;
@@ -4932,11 +4967,11 @@ var ENGINEERING_FUNCTIONS = [
4932
4967
  2,
4933
4968
  2,
4934
4969
  (args) => {
4935
- const text = str(args[0]).trim().toLowerCase();
4970
+ const text2 = str(args[0]).trim().toLowerCase();
4936
4971
  const radix = Math.trunc(num(args[1]));
4937
4972
  if (radix < 2 || radix > 36) fail(ERR.NUM);
4938
4973
  let total2 = 0;
4939
- for (const ch of text) {
4974
+ for (const ch of text2) {
4940
4975
  const d = parseInt(ch, 36);
4941
4976
  if (Number.isNaN(d) || d >= radix) fail(ERR.NUM);
4942
4977
  total2 = total2 * radix + d;
@@ -4973,14 +5008,14 @@ function couponFacts(settlement, maturity, frequency2, basis, ctx) {
4973
5008
  const daysToNext = basis === 0 ? daysInPeriod - daysSincePrevious : basis === 4 ? days360(s, next, true, ctx) : next - s;
4974
5009
  return { previous, next, count: count2, daysSincePrevious, daysInPeriod, daysToNext };
4975
5010
  }
4976
- var security = (name, description, pick2) => spec(
5011
+ var security = (name, description, pick3) => spec(
4977
5012
  name,
4978
5013
  C8,
4979
5014
  `${name}(settlement, maturity, frequency, [basis])`,
4980
5015
  description,
4981
5016
  3,
4982
5017
  4,
4983
- (args, ctx) => pick2(
5018
+ (args, ctx) => pick3(
4984
5019
  couponFacts(
4985
5020
  serialArg(args[0]),
4986
5021
  serialArg(args[1]),
@@ -6857,15 +6892,15 @@ function offset(args) {
6857
6892
  { sheet: area.sheet, range: { start: { row: r1, col: c1 }, end: { row: r2, col: c2 } } }
6858
6893
  ]);
6859
6894
  }
6860
- function parseR1C1(text, ctx) {
6861
- const bang = text.lastIndexOf("!");
6895
+ function parseR1C1(text2, ctx) {
6896
+ const bang = text2.lastIndexOf("!");
6862
6897
  let sheet = ctx.sheet;
6863
- let body2 = text;
6898
+ let body2 = text2;
6864
6899
  if (bang >= 0) {
6865
- const name = text.slice(0, bang).replace(/^'(.*)'$/, "$1").replace(/''/g, "'");
6900
+ const name = text2.slice(0, bang).replace(/^'(.*)'$/, "$1").replace(/''/g, "'");
6866
6901
  sheet = sheetIndex(ctx.frame.host, name);
6867
6902
  if (sheet < 0) return void 0;
6868
- body2 = text.slice(bang + 1);
6903
+ body2 = text2.slice(bang + 1);
6869
6904
  }
6870
6905
  const range2 = parseR1C1Range(body2, { row: ctx.row, col: ctx.col });
6871
6906
  if (!range2) return void 0;
@@ -6928,9 +6963,9 @@ var REFERENCE_FUNCTIONS = [
6928
6963
  1,
6929
6964
  2,
6930
6965
  (args, ctx) => {
6931
- const text = str(args[0]).trim();
6966
+ const text2 = str(args[0]).trim();
6932
6967
  const a1 = args.length > 1 ? bool(args[1]) : true;
6933
- const ref = a1 ? ctx.parseReference(text) : parseR1C1(text, ctx);
6968
+ const ref = a1 ? ctx.parseReference(text2) : parseR1C1(text2, ctx);
6934
6969
  return ref ?? ERR.REF;
6935
6970
  },
6936
6971
  void 0,
@@ -7301,13 +7336,13 @@ var numberKey = (n) => `n${round15(n)}`;
7301
7336
  function equalityKey(criteria) {
7302
7337
  if (typeof criteria === "number") return numberKey(criteria);
7303
7338
  if (typeof criteria !== "string") return void 0;
7304
- const text = criteria.startsWith("=") ? criteria.slice(1) : criteria;
7305
- if (/^(<|>)/.test(text) || text === "" || hasWildcards(text) || text.startsWith("#"))
7339
+ const text2 = criteria.startsWith("=") ? criteria.slice(1) : criteria;
7340
+ if (/^(<|>)/.test(text2) || text2 === "" || hasWildcards(text2) || text2.startsWith("#"))
7306
7341
  return void 0;
7307
- const upper2 = text.toUpperCase();
7342
+ const upper2 = text2.toUpperCase();
7308
7343
  if (upper2 === "TRUE" || upper2 === "FALSE") return void 0;
7309
- const n = parseNumberText(text);
7310
- return n !== void 0 ? numberKey(n) : `s${text.toLowerCase()}`;
7344
+ const n = parseNumberText(text2);
7345
+ return n !== void 0 ? numberKey(n) : `s${text2.toLowerCase()}`;
7311
7346
  }
7312
7347
  function valueKeys(value2, out) {
7313
7348
  out.length = 0;
@@ -10413,12 +10448,12 @@ function fixed(value2, decimals2, commas) {
10413
10448
  const d = Math.trunc(decimals2);
10414
10449
  const rounded = roundTo(value2, d, "half");
10415
10450
  const abs2 = Math.abs(rounded);
10416
- let text = abs2.toFixed(Math.max(0, Math.min(d, 99)));
10451
+ let text2 = abs2.toFixed(Math.max(0, Math.min(d, 99)));
10417
10452
  if (commas) {
10418
- const [int2 = "", frac] = text.split(".");
10419
- text = int2.replace(/\B(?=(\d{3})+(?!\d))/g, ",") + (frac !== void 0 ? `.${frac}` : "");
10453
+ const [int2 = "", frac] = text2.split(".");
10454
+ text2 = int2.replace(/\B(?=(\d{3})+(?!\d))/g, ",") + (frac !== void 0 ? `.${frac}` : "");
10420
10455
  }
10421
- return rounded < 0 ? `-${text}` : text;
10456
+ return rounded < 0 ? `-${text2}` : text2;
10422
10457
  }
10423
10458
  var TEXT_CONVERT = [
10424
10459
  spec(
@@ -10454,19 +10489,19 @@ var TEXT_CONVERT = [
10454
10489
  (args) => {
10455
10490
  const decimal = (args.length > 1 ? str(args[1]) : ".").charAt(0) || ".";
10456
10491
  const group = (args.length > 2 ? str(args[2]) : ",").charAt(0) || ",";
10457
- let text = str(args[0]).replace(/\s+/g, "");
10458
- if (text === "") return 0;
10492
+ let text2 = str(args[0]).replace(/\s+/g, "");
10493
+ if (text2 === "") return 0;
10459
10494
  let percent = 0;
10460
- while (text.endsWith("%")) {
10495
+ while (text2.endsWith("%")) {
10461
10496
  percent++;
10462
- text = text.slice(0, -1);
10497
+ text2 = text2.slice(0, -1);
10463
10498
  }
10464
- const decimalAt = text.indexOf(decimal);
10465
- if (decimalAt >= 0 && text.slice(decimalAt + 1).includes(group)) fail(ERR.VALUE);
10466
- text = text.split(group).join("");
10467
- if (decimal !== ".") text = text.replace(decimal, ".");
10468
- const value2 = Number(text);
10469
- if (!/^[+-]?(\d+\.?\d*|\.\d+)(e[+-]?\d+)?$/i.test(text) || !Number.isFinite(value2))
10499
+ const decimalAt = text2.indexOf(decimal);
10500
+ if (decimalAt >= 0 && text2.slice(decimalAt + 1).includes(group)) fail(ERR.VALUE);
10501
+ text2 = text2.split(group).join("");
10502
+ if (decimal !== ".") text2 = text2.replace(decimal, ".");
10503
+ const value2 = Number(text2);
10504
+ if (!/^[+-]?(\d+\.?\d*|\.\d+)(e[+-]?\d+)?$/i.test(text2) || !Number.isFinite(value2))
10470
10505
  fail(ERR.VALUE);
10471
10506
  return value2 / Math.pow(100, percent);
10472
10507
  }
@@ -10489,8 +10524,8 @@ var TEXT_CONVERT = [
10489
10524
  2,
10490
10525
  (args) => {
10491
10526
  const value2 = num(args[0]);
10492
- const text = fixed(Math.abs(value2), optNum(args, 1, 2), true);
10493
- return value2 < 0 && text.replace(/[0.,]/g, "") !== "" ? `($${text})` : `$${text}`;
10527
+ const text2 = fixed(Math.abs(value2), optNum(args, 1, 2), true);
10528
+ return value2 < 0 && text2.replace(/[0.,]/g, "") !== "" ? `($${text2})` : `$${text2}`;
10494
10529
  }
10495
10530
  ),
10496
10531
  spec("CHAR", C33, "CHAR(number)", "The character for a code (Windows-1252).", 1, 1, (args) => {
@@ -10499,9 +10534,9 @@ var TEXT_CONVERT = [
10499
10534
  return String.fromCharCode(CP1252[n] ?? n);
10500
10535
  }),
10501
10536
  spec("CODE", C33, "CODE(text)", "The code of the first character (Windows-1252).", 1, 1, (args) => {
10502
- const text = str(args[0]);
10503
- if (text === "") fail(ERR.VALUE);
10504
- const code = text.charCodeAt(0);
10537
+ const text2 = str(args[0]);
10538
+ if (text2 === "") fail(ERR.VALUE);
10539
+ const code = text2.charCodeAt(0);
10505
10540
  return CP1252_REVERSE.get(code) ?? (code <= 255 ? code : 63);
10506
10541
  }),
10507
10542
  spec("UNICHAR", C33, "UNICHAR(number)", "The Unicode character for a code point.", 1, 1, (args) => {
@@ -10510,9 +10545,9 @@ var TEXT_CONVERT = [
10510
10545
  return String.fromCodePoint(n);
10511
10546
  }),
10512
10547
  spec("UNICODE", C33, "UNICODE(text)", "The code point of the first character.", 1, 1, (args) => {
10513
- const text = str(args[0]);
10514
- if (text === "") fail(ERR.VALUE);
10515
- return text.codePointAt(0) ?? fail(ERR.VALUE);
10548
+ const text2 = str(args[0]);
10549
+ if (text2 === "") fail(ERR.VALUE);
10550
+ return text2.codePointAt(0) ?? fail(ERR.VALUE);
10516
10551
  }),
10517
10552
  spec("T", C33, "T(value)", "The text of a value, or empty text.", 1, 1, (args) => {
10518
10553
  const v = scalar(args[0]);
@@ -10536,37 +10571,37 @@ function lowerChar(ch, before, after) {
10536
10571
  const points = [...low];
10537
10572
  return points.length === 1 ? low : points[0] ?? ch;
10538
10573
  }
10539
- function mapChars(text, fn) {
10540
- const chars = [...text];
10574
+ function mapChars(text2, fn) {
10575
+ const chars = [...text2];
10541
10576
  let out = "";
10542
10577
  for (let i2 = 0; i2 < chars.length; i2++) out += fn(chars[i2], i2, chars);
10543
10578
  return out;
10544
10579
  }
10545
- var upper = (text) => mapChars(text, upperChar);
10546
- var lower = (text) => mapChars(text, (ch, i2, all2) => lowerChar(ch, all2[i2 - 1], all2[i2 + 1]));
10547
- var proper = (text) => mapChars(text, (ch, i2, all2) => {
10580
+ var upper = (text2) => mapChars(text2, upperChar);
10581
+ var lower = (text2) => mapChars(text2, (ch, i2, all2) => lowerChar(ch, all2[i2 - 1], all2[i2 + 1]));
10582
+ var proper = (text2) => mapChars(text2, (ch, i2, all2) => {
10548
10583
  if (!isLetter(ch)) return ch;
10549
10584
  const before = all2[i2 - 1];
10550
10585
  return before !== void 0 && isLetter(before) ? lowerChar(ch, before, all2[i2 + 1]) : upperChar(ch);
10551
10586
  });
10552
10587
  var isHigh = (code) => code >= 55296 && code <= 56319;
10553
10588
  var isLow = (code) => code >= 56320 && code <= 57343;
10554
- function left(text, n) {
10555
- let end = Math.min(n, text.length);
10556
- if (end > 0 && end < text.length && isHigh(text.charCodeAt(end - 1))) end++;
10557
- return text.slice(0, end);
10589
+ function left(text2, n) {
10590
+ let end = Math.min(n, text2.length);
10591
+ if (end > 0 && end < text2.length && isHigh(text2.charCodeAt(end - 1))) end++;
10592
+ return text2.slice(0, end);
10558
10593
  }
10559
- function right(text, n) {
10594
+ function right(text2, n) {
10560
10595
  if (n <= 0) return "";
10561
- let start = Math.max(0, text.length - n);
10562
- if (start > 0 && isLow(text.charCodeAt(start))) start--;
10563
- return text.slice(start);
10596
+ let start = Math.max(0, text2.length - n);
10597
+ if (start > 0 && isLow(text2.charCodeAt(start))) start--;
10598
+ return text2.slice(start);
10564
10599
  }
10565
10600
 
10566
10601
  // xlsx/formula/functions/text.ts
10567
10602
  var C34 = "Text";
10568
10603
  var MAX_TEXT = 32767;
10569
- var limit = (text) => text.length > MAX_TEXT ? fail(ERR.VALUE) : text;
10604
+ var limit = (text2) => text2.length > MAX_TEXT ? fail(ERR.VALUE) : text2;
10570
10605
  function find(args, insensitive) {
10571
10606
  const needle = str(args[0]);
10572
10607
  const haystack = str(args[1]);
@@ -10731,19 +10766,19 @@ var TEXT_FUNCTIONS = [
10731
10766
  3,
10732
10767
  4,
10733
10768
  (args) => {
10734
- const text = str(args[0]);
10769
+ const text2 = str(args[0]);
10735
10770
  const oldText = str(args[1]);
10736
10771
  const newText = str(args[2]);
10737
- if (oldText === "") return text;
10738
- if (args.length < 4) return limit(text.split(oldText).join(newText));
10772
+ if (oldText === "") return text2;
10773
+ if (args.length < 4) return limit(text2.split(oldText).join(newText));
10739
10774
  const instance = Math.trunc(num(args[3]));
10740
10775
  if (instance < 1) fail(ERR.VALUE);
10741
10776
  let at = -1;
10742
10777
  for (let i2 = 0; i2 < instance; i2++) {
10743
- at = text.indexOf(oldText, at + 1);
10744
- if (at < 0) return text;
10778
+ at = text2.indexOf(oldText, at + 1);
10779
+ if (at < 0) return text2;
10745
10780
  }
10746
- return limit(text.slice(0, at) + newText + text.slice(at + oldText.length));
10781
+ return limit(text2.slice(0, at) + newText + text2.slice(at + oldText.length));
10747
10782
  }
10748
10783
  ),
10749
10784
  ...["REPLACE", "REPLACEB"].map(
@@ -10755,11 +10790,11 @@ var TEXT_FUNCTIONS = [
10755
10790
  4,
10756
10791
  4,
10757
10792
  (args) => {
10758
- const text = str(args[0]);
10793
+ const text2 = str(args[0]);
10759
10794
  const start = Math.trunc(num(args[1]));
10760
10795
  const n = Math.trunc(num(args[2]));
10761
10796
  if (start < 1 || n < 0) fail(ERR.VALUE);
10762
- return limit(text.slice(0, start - 1) + str(args[3]) + text.slice(start - 1 + n));
10797
+ return limit(text2.slice(0, start - 1) + str(args[3]) + text2.slice(start - 1 + n));
10763
10798
  }
10764
10799
  )
10765
10800
  ),
@@ -10787,9 +10822,9 @@ var TEXT_FUNCTIONS = [
10787
10822
  ),
10788
10823
  spec("REPT", C34, "REPT(text, number_times)", "Repeats a text.", 2, 2, (args) => {
10789
10824
  const n = Math.trunc(num(args[1]));
10790
- const text = str(args[0]);
10791
- if (n < 0 || text.length * n > MAX_TEXT) fail(ERR.VALUE);
10792
- return text.repeat(n);
10825
+ const text2 = str(args[0]);
10826
+ if (n < 0 || text2.length * n > MAX_TEXT) fail(ERR.VALUE);
10827
+ return text2.repeat(n);
10793
10828
  }),
10794
10829
  spec(
10795
10830
  "EXACT",
@@ -10813,8 +10848,8 @@ function compile(pattern, caseMode2, global) {
10813
10848
  }
10814
10849
  }
10815
10850
  var caseMode = (args, index2) => optNum(args, index2, 0);
10816
- function encodeUrl(text) {
10817
- return encodeURIComponent(text).replace(
10851
+ function encodeUrl(text2) {
10852
+ return encodeURIComponent(text2).replace(
10818
10853
  /[!'()*]/g,
10819
10854
  (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`
10820
10855
  );
@@ -10859,15 +10894,15 @@ var TEXT_REGEX_FUNCTIONS = [
10859
10894
  3,
10860
10895
  5,
10861
10896
  (args) => {
10862
- const text = str(args[0]);
10897
+ const text2 = str(args[0]);
10863
10898
  const regex = compile(str(args[1]), caseMode(args, 4), true);
10864
10899
  const replacement = str(args[2]);
10865
10900
  const occurrence = args.length > 3 && args[3] !== null ? int(args[3]) : 0;
10866
- if (occurrence === 0) return text.replace(regex, replacement);
10867
- const matches2 = [...text.matchAll(regex)];
10901
+ if (occurrence === 0) return text2.replace(regex, replacement);
10902
+ const matches2 = [...text2.matchAll(regex)];
10868
10903
  const picked = occurrence > 0 ? matches2[occurrence - 1] : matches2.at(occurrence);
10869
- if (!picked || picked.index === void 0) return text;
10870
- return text.slice(0, picked.index) + picked[0].replace(new RegExp(regex.source, regex.flags.replace("g", "")), replacement) + text.slice(picked.index + picked[0].length);
10904
+ if (!picked || picked.index === void 0) return text2;
10905
+ return text2.slice(0, picked.index) + picked[0].replace(new RegExp(regex.source, regex.flags.replace("g", "")), replacement) + text2.slice(picked.index + picked[0].length);
10871
10906
  }
10872
10907
  )
10873
10908
  ];
@@ -10881,8 +10916,8 @@ function delimitersOf(ctx, value2) {
10881
10916
  return toText(v);
10882
10917
  });
10883
10918
  }
10884
- function occurrences(text, delimiters, insensitive) {
10885
- const hay = insensitive ? text.toLowerCase() : text;
10919
+ function occurrences(text2, delimiters, insensitive) {
10920
+ const hay = insensitive ? text2.toLowerCase() : text2;
10886
10921
  const needles = delimiters.map((d) => insensitive ? d.toLowerCase() : d);
10887
10922
  const out = [];
10888
10923
  let i2 = 0;
@@ -10902,35 +10937,35 @@ function occurrences(text, delimiters, insensitive) {
10902
10937
  return out;
10903
10938
  }
10904
10939
  function textAround(args, ctx, before) {
10905
- const text = str(args[0]);
10940
+ const text2 = str(args[0]);
10906
10941
  const delimiters = delimitersOf(ctx, args[1]);
10907
10942
  const instance = Math.trunc(optNum(args, 2, 1));
10908
10943
  const insensitive = optNum(args, 3, 0) === 1;
10909
10944
  const matchEnd = optBool(args, 4, false);
10910
10945
  const notFound = args.length > 5 ? scalar(args[5]) ?? ERR.NA : ERR.NA;
10911
- if (instance === 0 || Math.abs(instance) > text.length + 1) fail(ERR.VALUE);
10946
+ if (instance === 0 || Math.abs(instance) > text2.length + 1) fail(ERR.VALUE);
10912
10947
  if (delimiters.length === 0 || delimiters.every((d) => d === "")) {
10913
- return before ? instance > 0 ? "" : text : instance > 0 ? text : "";
10948
+ return before ? instance > 0 ? "" : text2 : instance > 0 ? text2 : "";
10914
10949
  }
10915
- const found = occurrences(text, delimiters, insensitive);
10950
+ const found = occurrences(text2, delimiters, insensitive);
10916
10951
  if (matchEnd) {
10917
- if (instance > 0) found.push({ at: text.length, length: 0 });
10952
+ if (instance > 0) found.push({ at: text2.length, length: 0 });
10918
10953
  else found.unshift({ at: 0, length: 0 });
10919
10954
  }
10920
10955
  const index2 = instance > 0 ? instance - 1 : found.length + instance;
10921
10956
  const hit = found[index2];
10922
10957
  if (!hit || index2 < 0) return notFound;
10923
- return before ? text.slice(0, hit.at) : text.slice(hit.at + hit.length);
10958
+ return before ? text2.slice(0, hit.at) : text2.slice(hit.at + hit.length);
10924
10959
  }
10925
- function splitText(text, delimiters, insensitive, ignoreEmpty) {
10926
- if (delimiters.length === 0) return [text];
10960
+ function splitText(text2, delimiters, insensitive, ignoreEmpty) {
10961
+ if (delimiters.length === 0) return [text2];
10927
10962
  const parts = [];
10928
10963
  let last = 0;
10929
- for (const hit of occurrences(text, delimiters, insensitive)) {
10930
- parts.push(text.slice(last, hit.at));
10964
+ for (const hit of occurrences(text2, delimiters, insensitive)) {
10965
+ parts.push(text2.slice(last, hit.at));
10931
10966
  last = hit.at + hit.length;
10932
10967
  }
10933
- parts.push(text.slice(last));
10968
+ parts.push(text2.slice(last));
10934
10969
  return ignoreEmpty ? parts.filter((p) => p !== "") : parts;
10935
10970
  }
10936
10971
  function valueToText(value2, strict) {
@@ -10968,14 +11003,14 @@ var TEXT_EXTRA_FUNCTIONS = [
10968
11003
  2,
10969
11004
  6,
10970
11005
  (args, ctx) => {
10971
- const text = str(ctx.toScalar(args[0] ?? null));
11006
+ const text2 = str(ctx.toScalar(args[0] ?? null));
10972
11007
  const colDelims = delimitersOf(ctx, args[1]);
10973
11008
  const rowDelims = delimitersOf(ctx, args[2]);
10974
11009
  const ignoreEmpty = args.length > 3 && args[3] !== null && Boolean(scalar(ctx.toScalar(args[3] ?? null)));
10975
11010
  const insensitive = args.length > 4 && optNum([ctx.toScalar(args[4] ?? null)], 0, 0) === 1;
10976
11011
  const pad4 = args.length > 5 ? ctx.toScalar(args[5] ?? null) : ERR.NA;
10977
11012
  if (colDelims.length === 0 && rowDelims.length === 0) fail(ERR.VALUE);
10978
- const rows2 = splitText(text, rowDelims, insensitive, ignoreEmpty).map(
11013
+ const rows2 = splitText(text2, rowDelims, insensitive, ignoreEmpty).map(
10979
11014
  (line2) => splitText(line2, colDelims, insensitive, ignoreEmpty)
10980
11015
  );
10981
11016
  const width = rows2.reduce((w, r) => Math.max(w, r.length), 0);
@@ -11169,10 +11204,10 @@ function createContext(frame) {
11169
11204
  scope ? { ...frame, scope, root: void 0 } : { ...frame, root: void 0 }
11170
11205
  ),
11171
11206
  callLambda: (fn, args) => invokeLambda(fn, args, frame),
11172
- parseReference(text) {
11207
+ parseReference(text2) {
11173
11208
  let ast;
11174
11209
  try {
11175
- ast = parseFormula(text.trim());
11210
+ ast = parseFormula(text2.trim());
11176
11211
  } catch (e) {
11177
11212
  if (e instanceof FormulaError) return void 0;
11178
11213
  throw e;
@@ -12394,11 +12429,17 @@ var Engine = class extends EngineCore {
12394
12429
  this.run(new Set(this.allNodes()), true);
12395
12430
  }
12396
12431
  recalculateFrom(changes) {
12397
- if (!this.built || this.needsFull) {
12432
+ const seeds = /* @__PURE__ */ new Set();
12433
+ if (!this.built && !this.needsFull) {
12434
+ this.build();
12435
+ if (!this.trustsStoredValues(changes, seeds)) {
12436
+ this.recalculateAll();
12437
+ return;
12438
+ }
12439
+ } else if (!this.built || this.needsFull) {
12398
12440
  this.recalculateAll();
12399
12441
  return;
12400
12442
  }
12401
- const seeds = /* @__PURE__ */ new Set();
12402
12443
  const changed = [];
12403
12444
  let structural = false;
12404
12445
  for (const change of changes) {
@@ -12439,6 +12480,22 @@ var Engine = class extends EngineCore {
12439
12480
  for (const node of this.allNodes()) if (node.volatile) seeds.add(node);
12440
12481
  this.run(seeds, false);
12441
12482
  }
12483
+ /**
12484
+ * Whether the stored results can stand for a fresh graph: apart from the changed cells, every
12485
+ * formula has legacy or CSE array semantics (none can spill). Collects the formulas stored
12486
+ * without a value into `missing`.
12487
+ */
12488
+ trustsStoredValues(changes, missing) {
12489
+ const changed = new Set(changes.map((c) => `${c.sheet}:${cellKey(c.row, c.col)}`));
12490
+ for (const node of this.allNodes()) {
12491
+ const legacyOrArray = node.legacy || node.arrayRange;
12492
+ if (!legacyOrArray && !changed.has(`${node.sheet}:${cellKey(node.row, node.col)}`))
12493
+ return false;
12494
+ const cell = this.workbook.sheets[node.sheet]?.rows.get(node.row)?.get(node.col);
12495
+ if (cell && cell.value === null && !node.keepCached) missing.add(node);
12496
+ }
12497
+ return true;
12498
+ }
12442
12499
  /**
12443
12500
  * Whether a spilled cell is still part of its anchor's live spill, so a change reported for it
12444
12501
  * is a user overwrite. A cell whose anchor is blocked (or gone) keeps its marker: it was
@@ -12570,10 +12627,10 @@ function mergeSpacedAreas(tokens) {
12570
12627
  const colon = tokens[j];
12571
12628
  const last = tokens[k];
12572
12629
  if (plainCell(first2) && colon?.kind === "op" && colon.text === ":" && plainCell(last) && !last?.prefix && k > i2 + 2 && first2.ref && last?.ref) {
12573
- const text = tokens.slice(i2, k + 1).map((t) => t.text).join("");
12630
+ const text2 = tokens.slice(i2, k + 1).map((t) => t.text).join("");
12574
12631
  out.push({
12575
12632
  ...first2,
12576
- text,
12633
+ text: text2,
12577
12634
  ref: { kind: "area", start: first2.ref.start, end: last.ref.start }
12578
12635
  });
12579
12636
  i2 = k;
@@ -12636,9 +12693,9 @@ function renameSheetInFormula(formula, oldName, newName) {
12636
12693
  if (!first2 && !second) continue;
12637
12694
  const renamed = { ...prefix, sheet: first2 ? newName : prefix.sheet };
12638
12695
  if (prefix.sheet2 !== void 0) renamed.sheet2 = second ? newName : prefix.sheet2;
12639
- const text = prefixText(renamed);
12640
- token.text = text + token.text.slice(prefix.text.length);
12641
- renamed.text = text;
12696
+ const text2 = prefixText(renamed);
12697
+ token.text = text2 + token.text.slice(prefix.text.length);
12698
+ renamed.text = text2;
12642
12699
  token.prefix = renamed;
12643
12700
  }
12644
12701
  return joinTokens(tokens);
@@ -12938,6 +12995,16 @@ function parseColor(element2, palette) {
12938
12995
  return Object.keys(color).length ? color : void 0;
12939
12996
  }
12940
12997
 
12998
+ // color/hex-rgb.ts
12999
+ function parseArgbHex(hex2) {
13000
+ const clean2 = hex2.replace(/^#/, "");
13001
+ const rgb2 = clean2.length === 8 ? clean2.slice(2) : clean2;
13002
+ if (!/^[0-9a-fA-F]{6}$/.test(rgb2)) return void 0;
13003
+ return [0, 2, 4].map((i2) => parseInt(rgb2.slice(i2, i2 + 2), 16));
13004
+ }
13005
+ var clamp255 = (v) => Math.max(0, Math.min(255, v));
13006
+ var rgbToUpperHex = (rgb2) => `#${rgb2.map((v) => clamp255(Math.round(v)).toString(16).padStart(2, "0")).join("").toUpperCase()}`;
13007
+
12941
13008
  // xlsx/read/sheet-props.ts
12942
13009
  function parseSqref(sqref) {
12943
13010
  if (!sqref) return [];
@@ -12968,6 +13035,104 @@ function rewriteConditionalExtension(rule, rewrite2) {
12968
13035
  if (changed) rule.extensionXml = buildXml(doc);
12969
13036
  }
12970
13037
 
13038
+ // xlsx/read/sparklines.ts
13039
+ var XM2 = "http://schemas.microsoft.com/office/excel/2006/main";
13040
+ var TYPES = ["line", "column", "stacked"];
13041
+ var EMPTY = ["gap", "zero", "span"];
13042
+ var AXES = ["individual", "group", "custom"];
13043
+ var COLORS = [
13044
+ "colorSeries",
13045
+ "colorNegative",
13046
+ "colorAxis",
13047
+ "colorMarkers",
13048
+ "colorFirst",
13049
+ "colorLast",
13050
+ "colorHigh",
13051
+ "colorLow"
13052
+ ];
13053
+ function pick2(value2, allowed, fallback) {
13054
+ return allowed.includes(value2) ? value2 : fallback;
13055
+ }
13056
+ var text = (element2) => {
13057
+ const value2 = element2?.textContent?.trim();
13058
+ return value2 ? value2 : void 0;
13059
+ };
13060
+ function readSparklineGroup(node) {
13061
+ const attr = (name) => node.hasAttribute(name) ? node.getAttribute(name) : null;
13062
+ const group = {
13063
+ type: pick2(attr("type"), TYPES, "line"),
13064
+ lineWeight: numAttr(node, "lineWeight") ?? 0.75,
13065
+ dateAxis: boolAttr(node, "dateAxis", false),
13066
+ markers: boolAttr(node, "markers", false),
13067
+ high: boolAttr(node, "high", false),
13068
+ low: boolAttr(node, "low", false),
13069
+ first: boolAttr(node, "first", false),
13070
+ last: boolAttr(node, "last", false),
13071
+ negative: boolAttr(node, "negative", false),
13072
+ displayEmptyCellsAs: pick2(attr("displayEmptyCellsAs"), EMPTY, "zero"),
13073
+ displayXAxis: boolAttr(node, "displayXAxis", false),
13074
+ displayHidden: boolAttr(node, "displayHidden", false),
13075
+ rightToLeft: boolAttr(node, "rightToLeft", false),
13076
+ minAxisType: pick2(attr("minAxisType"), AXES, "individual"),
13077
+ maxAxisType: pick2(attr("maxAxisType"), AXES, "individual"),
13078
+ sparklines: []
13079
+ };
13080
+ const manualMin = numAttr(node, "manualMin");
13081
+ const manualMax = numAttr(node, "manualMax");
13082
+ if (manualMin !== void 0) group.manualMin = manualMin;
13083
+ if (manualMax !== void 0) group.manualMax = manualMax;
13084
+ for (const name of COLORS) {
13085
+ const color = parseColor(first(node, name, NS.x14));
13086
+ if (color) group[name] = color;
13087
+ }
13088
+ const dates = text(first(node, "f", XM2));
13089
+ if (dates) group.dateFormula = dates;
13090
+ for (const line2 of children(first(node, "sparklines", NS.x14) ?? node, "sparkline", NS.x14)) {
13091
+ const host = parseRange(text(first(line2, "sqref", XM2)) ?? "");
13092
+ if (!host) continue;
13093
+ const formula = text(first(line2, "f", XM2));
13094
+ group.sparklines.push(formula ? { formula, host } : { host });
13095
+ }
13096
+ return group;
13097
+ }
13098
+ function readSparklineGroups(extLst) {
13099
+ const groups = [];
13100
+ for (const xml of extLst) {
13101
+ if (!xml.includes("sparklineGroup")) continue;
13102
+ let root;
13103
+ try {
13104
+ root = parseXml(xml).documentElement;
13105
+ } catch {
13106
+ continue;
13107
+ }
13108
+ for (const node of descendants(root, "sparklineGroup", NS.x14))
13109
+ groups.push(readSparklineGroup(node));
13110
+ }
13111
+ return groups;
13112
+ }
13113
+ var cache2 = /* @__PURE__ */ new WeakMap();
13114
+ function sheetSparklineGroups(sheet) {
13115
+ const source = sheet.preserved.get("extLst") ?? [];
13116
+ const hit = cache2.get(sheet);
13117
+ if (hit && hit.source.length === source.length && hit.source.every((xml, i2) => xml === source[i2]))
13118
+ return hit.groups;
13119
+ const groups = readSparklineGroups(source);
13120
+ cache2.set(sheet, { source: [...source], groups });
13121
+ return groups;
13122
+ }
13123
+
13124
+ // chart/bar-cluster-geometry.ts
13125
+ function assertBarClusterOptions(options) {
13126
+ for (const [field, min, max] of [
13127
+ ["barGapWidth", 0, 500],
13128
+ ["barOverlap", -100, 100]
13129
+ ]) {
13130
+ const value2 = options[field];
13131
+ if (value2 !== void 0 && (!Number.isInteger(value2) || value2 < min || value2 > max))
13132
+ throw new RangeError(`${field} must be an integer from ${min} to ${max}`);
13133
+ }
13134
+ }
13135
+
12971
13136
  // chart/color-palettes.ts
12972
13137
  var COLORFUL_VARIATIONS = [
12973
13138
  {},
@@ -13153,24 +13318,19 @@ function hueToRgb(n1, n2, hue) {
13153
13318
  return n1 + idiv((n2 - n1) * (idiv(HLSMAX * 2, 3) - h2) + idiv(HLSMAX, 12), sixth);
13154
13319
  return n1;
13155
13320
  }
13156
- var clamp255 = (v) => Math.max(0, Math.min(255, v));
13321
+ var clamp2552 = (v) => Math.max(0, Math.min(255, v));
13157
13322
  function hls240ToRgb({ h: h2, l, s }) {
13158
13323
  if (s === 0) {
13159
- const v = clamp255(Math.round(l * RGBMAX / HLSMAX));
13324
+ const v = clamp2552(Math.round(l * RGBMAX / HLSMAX));
13160
13325
  return [v, v, v];
13161
13326
  }
13162
13327
  const m2 = l <= HLSMAX / 2 ? idiv(l * (HLSMAX + s) + idiv(HLSMAX, 2), HLSMAX) : l + s - idiv(l * s + idiv(HLSMAX, 2), HLSMAX);
13163
13328
  const m1 = 2 * l - m2;
13164
- const channel = (hue) => clamp255(idiv(hueToRgb(m1, m2, hue) * RGBMAX + idiv(HLSMAX, 2), HLSMAX));
13329
+ const channel = (hue) => clamp2552(idiv(hueToRgb(m1, m2, hue) * RGBMAX + idiv(HLSMAX, 2), HLSMAX));
13165
13330
  return [channel(h2 + idiv(HLSMAX, 3)), channel(h2), channel(h2 - idiv(HLSMAX, 3))];
13166
13331
  }
13167
- function parseHex(hex2) {
13168
- const clean2 = hex2.replace(/^#/, "");
13169
- const rgb2 = clean2.length === 8 ? clean2.slice(2) : clean2;
13170
- if (!/^[0-9a-fA-F]{6}$/.test(rgb2)) return void 0;
13171
- return [0, 2, 4].map((i2) => parseInt(rgb2.slice(i2, i2 + 2), 16));
13172
- }
13173
- var toHexColor = (rgb2) => `#${rgb2.map((v) => clamp255(Math.round(v)).toString(16).padStart(2, "0")).join("").toUpperCase()}`;
13332
+ var parseHex = parseArgbHex;
13333
+ var toHexColor = rgbToUpperHex;
13174
13334
  function applyTint(hex2, tint) {
13175
13335
  const rgb2 = parseHex(hex2) ?? [0, 0, 0];
13176
13336
  if (!tint) return toHexColor(rgb2);
@@ -13180,6 +13340,40 @@ function applyTint(hex2, tint) {
13180
13340
  return toHexColor(hls240ToRgb({ ...hls, l: Math.max(0, Math.min(HLSMAX, l)) }));
13181
13341
  }
13182
13342
 
13343
+ // chart/render/theme-palette.ts
13344
+ var THEME_SLOTS = [
13345
+ "lt1",
13346
+ "dk1",
13347
+ "lt2",
13348
+ "dk2",
13349
+ "accent1",
13350
+ "accent2",
13351
+ "accent3",
13352
+ "accent4",
13353
+ "accent5",
13354
+ "accent6",
13355
+ "hlink",
13356
+ "folHlink"
13357
+ ];
13358
+ var DEFAULT_THEME_COLORS = [
13359
+ "FFFFFF",
13360
+ "000000",
13361
+ "E7E6E6",
13362
+ "44546A",
13363
+ "4472C4",
13364
+ "ED7D31",
13365
+ "A5A5A5",
13366
+ "FFC000",
13367
+ "5B9BD5",
13368
+ "70AD47",
13369
+ "0563C1",
13370
+ "954F72"
13371
+ ];
13372
+ function themeColor(theme2, index2) {
13373
+ const hex2 = theme2.colors[index2] ?? DEFAULT_THEME_COLORS[index2];
13374
+ return hex2 && parseArgbHex(hex2) ? hex2.replace(/^#/, "") : void 0;
13375
+ }
13376
+
13183
13377
  // xlsx/layout/colors.ts
13184
13378
  var INDEXED_COLORS = [
13185
13379
  "000000",
@@ -13249,38 +13443,6 @@ var INDEXED_COLORS = [
13249
13443
  "000000",
13250
13444
  "FFFFFF"
13251
13445
  ];
13252
- var THEME_SLOTS = [
13253
- "lt1",
13254
- "dk1",
13255
- "lt2",
13256
- "dk2",
13257
- "accent1",
13258
- "accent2",
13259
- "accent3",
13260
- "accent4",
13261
- "accent5",
13262
- "accent6",
13263
- "hlink",
13264
- "folHlink"
13265
- ];
13266
- var FALLBACK_THEME = [
13267
- "FFFFFF",
13268
- "000000",
13269
- "E7E6E6",
13270
- "44546A",
13271
- "4472C4",
13272
- "ED7D31",
13273
- "A5A5A5",
13274
- "FFC000",
13275
- "5B9BD5",
13276
- "70AD47",
13277
- "0563C1",
13278
- "954F72"
13279
- ];
13280
- function themeColor(theme2, index2) {
13281
- const hex2 = theme2.colors[index2] ?? FALLBACK_THEME[index2];
13282
- return hex2 && parseHex(hex2) ? hex2.replace(/^#/, "") : void 0;
13283
- }
13284
13446
  function resolveColor(color, theme2, fallback, indexed = INDEXED_COLORS) {
13285
13447
  if (!color) return fallback;
13286
13448
  let base;
@@ -13303,18 +13465,6 @@ function mixColors(a, b, t, rounding = "nearest") {
13303
13465
  );
13304
13466
  }
13305
13467
 
13306
- // chart/bar-cluster-geometry.ts
13307
- function assertBarClusterOptions(options) {
13308
- for (const [field, min, max] of [
13309
- ["barGapWidth", 0, 500],
13310
- ["barOverlap", -100, 100]
13311
- ]) {
13312
- const value2 = options[field];
13313
- if (value2 !== void 0 && (!Number.isInteger(value2) || value2 < min || value2 > max))
13314
- throw new RangeError(`${field} must be an integer from ${min} to ${max}`);
13315
- }
13316
- }
13317
-
13318
13468
  // xlsx/edit/range-math.ts
13319
13469
  var axisMax = (axis) => axis === "row" ? MAX_ROW : MAX_COL;
13320
13470
  function shiftSpan(start, end, shift2) {
@@ -13523,8 +13673,8 @@ function syncTableHeader(ctx, sheet, row2, col) {
13523
13673
  if (!table2) return;
13524
13674
  const column = table2.columns[col - table2.range.start.col];
13525
13675
  if (!column) return;
13526
- const text = displayText(ctx.workbook, getCell(sheet, row2, col)).trim();
13527
- if (text) column.name = text;
13676
+ const text2 = displayText(ctx.workbook, getCell(sheet, row2, col)).trim();
13677
+ if (text2) column.name = text2;
13528
13678
  }
13529
13679
  function writeScopes(sheet, index2, range2, parts = []) {
13530
13680
  const r = normalizeRange(range2);
@@ -13539,11 +13689,11 @@ function writeScopes(sheet, index2, range2, parts = []) {
13539
13689
  if (all2.length) scopes.push({ kind: "parts", sheet: index2, parts: all2 });
13540
13690
  return scopes;
13541
13691
  }
13542
- function writeInput(ctx, sheet, row2, col, text) {
13692
+ function writeInput(ctx, sheet, row2, col, text2) {
13543
13693
  const { workbook } = ctx;
13544
13694
  const existing = getCell(sheet, row2, col);
13545
13695
  const format = styleAt(workbook, existing?.styleId ?? baseStyleId(sheet, row2, col)).numFmt;
13546
- if (text === "") {
13696
+ if (text2 === "") {
13547
13697
  if (existing) clearContents(existing);
13548
13698
  pruneCell(sheet, row2, col);
13549
13699
  return;
@@ -13551,10 +13701,10 @@ function writeInput(ctx, sheet, row2, col, text) {
13551
13701
  const cell = ensureCell(sheet, row2, col);
13552
13702
  clearContents(cell);
13553
13703
  if (format === "@") {
13554
- cell.value = text;
13704
+ cell.value = text2;
13555
13705
  return;
13556
13706
  }
13557
- const parsed = parseCellInput(text, { date1904: workbook.date1904 });
13707
+ const parsed = parseCellInput(text2, { date1904: workbook.date1904 });
13558
13708
  if (parsed.formula !== void 0) cell.formula = parsed.formula;
13559
13709
  else cell.value = parsed.value;
13560
13710
  if (parsed.numFmt && format === "General")
@@ -13580,7 +13730,7 @@ function clearContents(cell) {
13580
13730
  delete cell.legacyFormula;
13581
13731
  delete cell.spillAnchor;
13582
13732
  }
13583
- function setCellInput(ctx, s, row2, col, text) {
13733
+ function setCellInput(ctx, s, row2, col, text2) {
13584
13734
  const sheet = sheetAt(ctx.workbook, s);
13585
13735
  const range2 = cellRange(row2, col);
13586
13736
  ctx.run(
@@ -13588,7 +13738,7 @@ function setCellInput(ctx, s, row2, col, text) {
13588
13738
  "cells",
13589
13739
  writeScopes(sheet, s, range2),
13590
13740
  () => {
13591
- writeInput(ctx, sheet, row2, col, text);
13741
+ writeInput(ctx, sheet, row2, col, text2);
13592
13742
  syncTableHeader(ctx, sheet, row2, col);
13593
13743
  },
13594
13744
  { sheet: s, ranges: [range2] }
@@ -13656,10 +13806,10 @@ function clearRange(ctx, s, range2, what) {
13656
13806
  );
13657
13807
  }
13658
13808
  function clearIn(ctx, sheet, r, what) {
13659
- const positions = [];
13660
- forEachCellInRange(sheet, r, (_cell, row2, col) => positions.push([row2, col]));
13809
+ const positions2 = [];
13810
+ forEachCellInRange(sheet, r, (_cell, row2, col) => positions2.push([row2, col]));
13661
13811
  if (what === "contents" || what === "all" || what === "formats") {
13662
- for (const [row2, col] of positions) {
13812
+ for (const [row2, col] of positions2) {
13663
13813
  const cell = getCell(sheet, row2, col);
13664
13814
  if (!cell) continue;
13665
13815
  if (what === "all") deleteCell(sheet, row2, col);
@@ -13670,7 +13820,7 @@ function clearIn(ctx, sheet, r, what) {
13670
13820
  }
13671
13821
  }
13672
13822
  if (what === "contents")
13673
- for (const [row2, col] of positions) syncTableHeader(ctx, sheet, row2, col);
13823
+ for (const [row2, col] of positions2) syncTableHeader(ctx, sheet, row2, col);
13674
13824
  }
13675
13825
  if (what === "all" || what === "formats") {
13676
13826
  sheet.merges = sheet.merges.filter((m) => !rangesIntersect(m, r));
@@ -13877,8 +14027,8 @@ var LISTS = [
13877
14027
  "December"
13878
14028
  ]
13879
14029
  ];
13880
- function listMatch(text) {
13881
- const lower2 = text.toLowerCase();
14030
+ function listMatch(text2) {
14031
+ const lower2 = text2.toLowerCase();
13882
14032
  for (const list of LISTS) {
13883
14033
  const index2 = list.findIndex((item) => item.toLowerCase() === lower2);
13884
14034
  if (index2 >= 0) return { list, index: index2 };
@@ -13903,14 +14053,14 @@ function linearTrend(values2) {
13903
14053
  const slope = den ? num2 / den : 0;
13904
14054
  return (k) => Number((meanY + slope * (k - meanX)).toPrecision(15));
13905
14055
  }
13906
- var isDigit3 = (ch) => ch !== void 0 && ch >= "0" && ch <= "9";
13907
- function matchTextNumber(text) {
13908
- let end = text.length;
13909
- while (end > 0 && !isDigit3(text[end - 1])) end--;
14056
+ var isDigit4 = (ch) => ch !== void 0 && ch >= "0" && ch <= "9";
14057
+ function matchTextNumber(text2) {
14058
+ let end = text2.length;
14059
+ while (end > 0 && !isDigit4(text2[end - 1])) end--;
13910
14060
  if (end === 0) return null;
13911
14061
  let start = end;
13912
- while (start > 0 && isDigit3(text[start - 1])) start--;
13913
- return [text, text.slice(0, start), text.slice(start, end), text.slice(end)];
14062
+ while (start > 0 && isDigit4(text2[start - 1])) start--;
14063
+ return [text2, text2.slice(0, start), text2.slice(start, end), text2.slice(end)];
13914
14064
  }
13915
14065
  var QUARTER = /^(q|qtr|quarter)(\s?)([1-4])$/i;
13916
14066
  function textSeries(texts) {
@@ -14315,26 +14465,26 @@ function pasteConditionalFormats(sheet, dest, cells, transpose2, skipBlanks, cut
14315
14465
  }
14316
14466
 
14317
14467
  // xlsx/edit/annotations.ts
14318
- function setComment(ctx, s, at, text, author) {
14468
+ function setComment(ctx, s, at, text2, author) {
14319
14469
  const sheet = sheetAt(ctx.workbook, s);
14320
14470
  const index2 = sheet.comments.findIndex(
14321
14471
  (c) => c.address.row === at.row && c.address.col === at.col
14322
14472
  );
14323
- if (index2 < 0 && text === void 0) return;
14473
+ if (index2 < 0 && text2 === void 0) return;
14324
14474
  ctx.run(
14325
- text === void 0 ? "Delete comment" : index2 < 0 ? "New comment" : "Edit comment",
14475
+ text2 === void 0 ? "Delete comment" : index2 < 0 ? "New comment" : "Edit comment",
14326
14476
  "annotations",
14327
14477
  [{ kind: "sheet", sheet: s }],
14328
14478
  () => {
14329
- if (text === void 0) {
14479
+ if (text2 === void 0) {
14330
14480
  sheet.comments.splice(index2, 1);
14331
14481
  return;
14332
14482
  }
14333
14483
  const existing = sheet.comments[index2];
14334
14484
  if (existing) {
14335
- existing.text = text;
14485
+ existing.text = text2;
14336
14486
  existing.author = author;
14337
- } else sheet.comments.push({ address: { row: at.row, col: at.col }, author, text });
14487
+ } else sheet.comments.push({ address: { row: at.row, col: at.col }, author, text: text2 });
14338
14488
  },
14339
14489
  { sheet: s, ranges: [{ start: at, end: at }] }
14340
14490
  );
@@ -14523,7 +14673,7 @@ function setBorders(ctx, s, range2, preset, edge = { style: "thin" }) {
14523
14673
  }
14524
14674
 
14525
14675
  // xlsx/edit/shift-preserved.ts
14526
- var XM2 = "http://schemas.microsoft.com/office/excel/2006/main";
14676
+ var XM3 = "http://schemas.microsoft.com/office/excel/2006/main";
14527
14677
  function descendants2(root, ns, local) {
14528
14678
  return Array.from(root.getElementsByTagNameNS(ns, local));
14529
14679
  }
@@ -14583,14 +14733,14 @@ function removeUpwards(node, root) {
14583
14733
  }
14584
14734
  function shiftSqrefs(root, moveRange) {
14585
14735
  let changed = false;
14586
- for (const sqref of descendants2(root, XM2, "sqref")) {
14736
+ for (const sqref of descendants2(root, XM3, "sqref")) {
14587
14737
  const old = sqref.textContent ?? "";
14588
14738
  const ranges = parseSqref(old).map(moveRange).filter((r) => !!r);
14589
- const text = ranges.map(formatRange).join(" ");
14590
- if (text === old.trim()) continue;
14739
+ const text2 = ranges.map(formatRange).join(" ");
14740
+ if (text2 === old.trim()) continue;
14591
14741
  changed = true;
14592
14742
  const owner = sqref.parentNode;
14593
- if (ranges.length) sqref.textContent = text;
14743
+ if (ranges.length) sqref.textContent = text2;
14594
14744
  else if (owner) removeUpwards(owner, root);
14595
14745
  }
14596
14746
  if (!changed) return "same";
@@ -14620,15 +14770,15 @@ function rewritePreservedFormulas(sheet, rewrite2) {
14620
14770
  "extLst",
14621
14771
  (root) => {
14622
14772
  let changed = false;
14623
- for (const f6 of descendants2(root, XM2, "f")) {
14624
- const text = f6.textContent ?? "";
14625
- let next = text;
14773
+ for (const f6 of descendants2(root, XM3, "f")) {
14774
+ const text2 = f6.textContent ?? "";
14775
+ let next = text2;
14626
14776
  try {
14627
- next = rewrite2(text, sheet.name);
14777
+ next = rewrite2(text2, sheet.name);
14628
14778
  } catch {
14629
- next = text;
14779
+ next = text2;
14630
14780
  }
14631
- if (next === text) continue;
14781
+ if (next === text2) continue;
14632
14782
  f6.textContent = next;
14633
14783
  changed = true;
14634
14784
  }
@@ -14979,7 +15129,7 @@ function pasteHyperlinks(sheet, dest, cells, transpose2, skipBlanks, cutLocation
14979
15129
  }
14980
15130
 
14981
15131
  // xlsx/edit/clipboard-html.ts
14982
- var escapeHtml = (text) => text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
15132
+ var escapeHtml = (text2) => text2.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
14983
15133
  function cssColor(color, theme2) {
14984
15134
  if (!color || color.auto) return void 0;
14985
15135
  if (color.rgb) return `#${color.rgb.slice(-6)}`;
@@ -15044,12 +15194,12 @@ function toHtml(cells, theme2) {
15044
15194
  if (cell && typeof cell.value === "number") attrs.push(`x:num="${cell.value}"`);
15045
15195
  const css = cssFor(cell?.style, theme2);
15046
15196
  if (css) attrs.push(`style="${escapeHtml(css)}"`);
15047
- let text = escapeHtml(cell?.text ?? "").replace(/\n/g, "<br>");
15197
+ let text2 = escapeHtml(cell?.text ?? "").replace(/\n/g, "<br>");
15048
15198
  const link = links.get(`${r},${c}`);
15049
15199
  const href = htmlHref(link);
15050
15200
  if (href)
15051
- text = `<a href="${escapeHtml(href)}"${link?.tooltip ? ` title="${escapeHtml(link.tooltip)}"` : ""}>${text}</a>`;
15052
- tds.push(`<td${attrs.length ? ` ${attrs.join(" ")}` : ""}>${text}</td>`);
15201
+ text2 = `<a href="${escapeHtml(href)}"${link?.tooltip ? ` title="${escapeHtml(link.tooltip)}"` : ""}>${text2}</a>`;
15202
+ tds.push(`<td${attrs.length ? ` ${attrs.join(" ")}` : ""}>${text2}</td>`);
15053
15203
  }
15054
15204
  rows2.push(`<tr>${tds.join("")}</tr>`);
15055
15205
  }
@@ -15077,8 +15227,8 @@ var NAMED_COLORS2 = {
15077
15227
  aqua: "00FFFF",
15078
15228
  fuchsia: "FF00FF"
15079
15229
  };
15080
- function parseCssColor(text) {
15081
- const value2 = text.trim().toLowerCase();
15230
+ function parseCssColor(text2) {
15231
+ const value2 = text2.trim().toLowerCase();
15082
15232
  const hex2 = /^#([0-9a-f]{3}|[0-9a-f]{6})$/.exec(value2)?.[1];
15083
15233
  if (hex2)
15084
15234
  return {
@@ -15100,33 +15250,33 @@ var ENTITIES = {
15100
15250
  apos: "'",
15101
15251
  nbsp: " "
15102
15252
  };
15103
- function decodeEntities(text) {
15104
- return text.replace(/&(#x[0-9a-f]+|#\d+|[a-z]+);/gi, (whole, name) => {
15253
+ function decodeEntities(text2) {
15254
+ return text2.replace(/&(#x[0-9a-f]+|#\d+|[a-z]+);/gi, (whole, name) => {
15105
15255
  if (name.startsWith("#x") || name.startsWith("#X"))
15106
15256
  return String.fromCodePoint(parseInt(name.slice(2), 16));
15107
15257
  if (name.startsWith("#")) return String.fromCodePoint(Number(name.slice(1)));
15108
15258
  return ENTITIES[name.toLowerCase()] ?? whole;
15109
15259
  });
15110
15260
  }
15111
- function parseAttributes(text) {
15261
+ function parseAttributes(text2) {
15112
15262
  const attrs = /* @__PURE__ */ new Map();
15113
- for (const m of text.matchAll(
15263
+ for (const m of text2.matchAll(
15114
15264
  /([\w:-]{1,64})\s{0,16}=\s{0,16}(?:"([^"]*)"|'([^']*)'|([^\s>]+))/g
15115
15265
  ))
15116
15266
  attrs.set((m[1] ?? "").toLowerCase(), decodeEntities(m[2] ?? m[3] ?? m[4] ?? ""));
15117
15267
  return attrs;
15118
15268
  }
15119
- function parseCss(text) {
15269
+ function parseCss(text2) {
15120
15270
  const out = /* @__PURE__ */ new Map();
15121
- for (const decl of text.split(";")) {
15271
+ for (const decl of text2.split(";")) {
15122
15272
  const colon = decl.indexOf(":");
15123
15273
  if (colon < 0) continue;
15124
15274
  out.set(decl.slice(0, colon).trim().toLowerCase(), decl.slice(colon + 1).trim());
15125
15275
  }
15126
15276
  return out;
15127
15277
  }
15128
- function decodeNumberFormat(text) {
15129
- return text.replace(/^["']|["']$/g, "").replace(/\\([0-9A-Fa-f]{4})/g, (_m, hex2) => String.fromCharCode(parseInt(hex2, 16))).replace(/\\(.)/g, "$1");
15278
+ function decodeNumberFormat(text2) {
15279
+ return text2.replace(/^["']|["']$/g, "").replace(/\\([0-9A-Fa-f]{4})/g, (_m, hex2) => String.fromCharCode(parseInt(hex2, 16))).replace(/\\(.)/g, "$1");
15130
15280
  }
15131
15281
  var H_ALIGN = {
15132
15282
  left: "left",
@@ -15167,26 +15317,26 @@ function stylePatchFromCss(css, inner2) {
15167
15317
  if (numFmt) patch.numFmt = decodeNumberFormat(numFmt);
15168
15318
  return patch;
15169
15319
  }
15170
- function removeComments(text) {
15320
+ function removeComments(text2) {
15171
15321
  let out = "";
15172
15322
  let from = 0;
15173
15323
  for (; ; ) {
15174
- const open = text.indexOf("<!--", from);
15175
- const close = open < 0 ? -1 : text.indexOf("-->", open + 4);
15176
- if (close < 0) return out + text.slice(from);
15177
- out += text.slice(from, open);
15324
+ const open = text2.indexOf("<!--", from);
15325
+ const close = open < 0 ? -1 : text2.indexOf("-->", open + 4);
15326
+ if (close < 0) return out + text2.slice(from);
15327
+ out += text2.slice(from, open);
15178
15328
  from = close + 3;
15179
15329
  }
15180
15330
  }
15181
- function removeTags(text) {
15331
+ function removeTags(text2) {
15182
15332
  let out = "";
15183
15333
  let i2 = 0;
15184
- while (i2 < text.length) {
15185
- const ch = text[i2];
15334
+ while (i2 < text2.length) {
15335
+ const ch = text2[i2];
15186
15336
  if (ch === "<") {
15187
15337
  let j = i2 + 1;
15188
- while (j < text.length && text[j] !== "<" && text[j] !== ">") j++;
15189
- if (text[j] === ">") {
15338
+ while (j < text2.length && text2[j] !== "<" && text2[j] !== ">") j++;
15339
+ if (text2[j] === ">") {
15190
15340
  i2 = j + 1;
15191
15341
  continue;
15192
15342
  }
@@ -15198,15 +15348,15 @@ function removeTags(text) {
15198
15348
  }
15199
15349
  function stripTags(markup) {
15200
15350
  let previous;
15201
- let text = markup;
15351
+ let text2 = markup;
15202
15352
  do {
15203
- previous = text;
15204
- text = removeTags(removeComments(text));
15205
- } while (text !== previous);
15206
- return removeAll(text, ["<!--", "-->"]);
15353
+ previous = text2;
15354
+ text2 = removeTags(removeComments(text2));
15355
+ } while (text2 !== previous);
15356
+ return removeAll(text2, ["<!--", "-->"]);
15207
15357
  }
15208
- function removeAll(text, tokens) {
15209
- let current = text;
15358
+ function removeAll(text2, tokens) {
15359
+ let current = text2;
15210
15360
  let previous;
15211
15361
  do {
15212
15362
  previous = current;
@@ -15248,8 +15398,8 @@ function parseHtmlTable(html, base) {
15248
15398
  for (const [k, v] of parseCss(attrs.get("style") ?? "")) css.set(k, v);
15249
15399
  const patch = stylePatchFromCss(css, inner2);
15250
15400
  if (td[1]?.toLowerCase() === "h") patch.font = { bold: true, ...patch.font };
15251
- const text = cellText(inner2);
15252
- row2[c] = text === "" && !Object.keys(patch).length ? null : toCell(text, attrs, patch, base);
15401
+ const text2 = cellText(inner2);
15402
+ row2[c] = text2 === "" && !Object.keys(patch).length ? null : toCell(text2, attrs, patch, base);
15253
15403
  const rowSpan = Math.max(1, Number(attrs.get("rowspan") ?? 1) || 1);
15254
15404
  const colSpan = Math.max(1, Number(attrs.get("colspan") ?? 1) || 1);
15255
15405
  const anchor = /<a\b([^>]*)>/i.exec(inner2);
@@ -15281,35 +15431,35 @@ function parseHtmlTable(html, base) {
15281
15431
  );
15282
15432
  return rows2 && cols ? { rows: rows2, cols, data, merges, hyperlinks } : void 0;
15283
15433
  }
15284
- function toCell(text, attrs, patch, base) {
15285
- let value2 = text;
15434
+ function toCell(text2, attrs, patch, base) {
15435
+ let value2 = text2;
15286
15436
  const num2 = attrs.get("x:num");
15287
15437
  if (num2 !== void 0 && num2 !== "" && Number.isFinite(Number(num2))) value2 = Number(num2);
15288
- else if (attrs.has("x:bool")) value2 = text.toUpperCase() === "TRUE";
15289
- else if (patch.numFmt !== "@" && text !== "") {
15290
- const parsed = parseCellInput(text);
15438
+ else if (attrs.has("x:bool")) value2 = text2.toUpperCase() === "TRUE";
15439
+ else if (patch.numFmt !== "@" && text2 !== "") {
15440
+ const parsed = parseCellInput(text2);
15291
15441
  if (parsed.formula === void 0) value2 = parsed.value;
15292
15442
  if (!patch.numFmt && parsed.numFmt && typeof value2 === "number") patch.numFmt = parsed.numFmt;
15293
15443
  }
15294
- return { value: value2, text, style: patchStyle(base, patch) };
15444
+ return { value: value2, text: text2, style: patchStyle(base, patch) };
15295
15445
  }
15296
15446
 
15297
15447
  // xlsx/edit/clipboard-text.ts
15298
- function quoteField(text) {
15299
- return /[\t\r\n"]/.test(text) ? `"${text.replace(/"/g, '""')}"` : text;
15448
+ function quoteField(text2) {
15449
+ return /[\t\r\n"]/.test(text2) ? `"${text2.replace(/"/g, '""')}"` : text2;
15300
15450
  }
15301
15451
  function toTsv(rows2) {
15302
15452
  if (!rows2.length) return "";
15303
15453
  return rows2.map((row2) => row2.map(quoteField).join(" ")).join("\r\n") + "\r\n";
15304
15454
  }
15305
- function parseTsv(text) {
15455
+ function parseTsv(text2) {
15306
15456
  const rows2 = [];
15307
15457
  let row2 = [];
15308
15458
  let field = "";
15309
15459
  let i2 = 0;
15310
15460
  let atFieldStart = true;
15311
- const body2 = text.replace(/\r\n?/g, "\n").replace(/\n$/, "");
15312
- if (body2 === "") return text === "" ? [] : [[""]];
15461
+ const body2 = text2.replace(/\r\n?/g, "\n").replace(/\n$/, "");
15462
+ if (body2 === "") return text2 === "" ? [] : [[""]];
15313
15463
  while (i2 < body2.length) {
15314
15464
  const ch = body2[i2] ?? "";
15315
15465
  if (atFieldStart && ch === '"') {
@@ -15344,10 +15494,10 @@ function parseTsv(text) {
15344
15494
  for (const r of rows2) while (r.length < width) r.push("");
15345
15495
  return rows2;
15346
15496
  }
15347
- function findClosingQuote(text, from) {
15348
- for (let i2 = from; i2 < text.length; i2++) {
15349
- if (text[i2] !== '"') continue;
15350
- if (text[i2 + 1] === '"') {
15497
+ function findClosingQuote(text2, from) {
15498
+ for (let i2 = from; i2 < text2.length; i2++) {
15499
+ if (text2[i2] !== '"') continue;
15500
+ if (text2[i2 + 1] === '"') {
15351
15501
  i2++;
15352
15502
  continue;
15353
15503
  }
@@ -15624,12 +15774,12 @@ function copyRange(workbook, s, range2) {
15624
15774
  cells
15625
15775
  };
15626
15776
  }
15627
- function cellsFromText(workbook, text) {
15628
- if (/<table\b/i.test(text)) {
15629
- const parsed = parseHtmlTable(text, styleAt(workbook, 0));
15777
+ function cellsFromText(workbook, text2) {
15778
+ if (/<table\b/i.test(text2)) {
15779
+ const parsed = parseHtmlTable(text2, styleAt(workbook, 0));
15630
15780
  if (parsed) return parsed;
15631
15781
  }
15632
- const grid6 = parseTsv(text);
15782
+ const grid6 = parseTsv(text2);
15633
15783
  const data = grid6.map(
15634
15784
  (line2) => line2.map((field) => {
15635
15785
  if (field === "") return null;
@@ -15824,13 +15974,32 @@ function pasteSelection(ctx, sheet, selection, payload, request) {
15824
15974
  );
15825
15975
  }
15826
15976
 
15977
+ // xlsx/edit/external.ts
15978
+ function applyExternal(host, apply) {
15979
+ if (host.busy()) throw new Error("Cannot apply an external change inside an edit");
15980
+ const change = apply();
15981
+ if (!change) return false;
15982
+ const structural = change.structural ?? false;
15983
+ host.calculator.afterExternal(structural, change.cells ?? []);
15984
+ const out = {
15985
+ kind: change.kind ?? "remote",
15986
+ label: change.label,
15987
+ structural,
15988
+ external: true
15989
+ };
15990
+ if (change.sheet !== void 0) out.sheet = change.sheet;
15991
+ if (change.ranges?.length) out.ranges = change.ranges;
15992
+ host.emit(out);
15993
+ return true;
15994
+ }
15995
+
15827
15996
  // xlsx/edit/dimensions.ts
15828
15997
  var MDW = 7;
15829
15998
  var MAX_WIDTH = 255;
15830
15999
  var MAX_HEIGHT = 409;
15831
- function estimateWidth(text, style2) {
16000
+ function estimateWidth(text2, style2) {
15832
16001
  const scale2 = (style2.font.size ?? 11) / 11;
15833
- const longest = Math.max(...text.split("\n").map((line2) => line2.length));
16002
+ const longest = Math.max(...text2.split("\n").map((line2) => line2.length));
15834
16003
  return longest * MDW * scale2 * (style2.font.bold ? 1.1 : 1);
15835
16004
  }
15836
16005
  var pixelsToWidth = (px) => Math.round((px + 5) / MDW * 256) / 256;
@@ -15839,9 +16008,9 @@ function fitColumnWidth(ctx, sheet, col, measure2) {
15839
16008
  for (const [row2, cells] of sheet.rows) {
15840
16009
  const cell = cells.get(col);
15841
16010
  if (!cell || sheet.rowInfo.get(row2)?.hidden) continue;
15842
- const text = displayText(ctx.workbook, cell);
15843
- if (!text) continue;
15844
- widest = Math.max(widest, measure2(text, styleAt(ctx.workbook, cell.styleId)));
16011
+ const text2 = displayText(ctx.workbook, cell);
16012
+ if (!text2) continue;
16013
+ widest = Math.max(widest, measure2(text2, styleAt(ctx.workbook, cell.styleId)));
15845
16014
  }
15846
16015
  return widest < 0 ? void 0 : Math.min(MAX_WIDTH, pixelsToWidth(widest));
15847
16016
  }
@@ -16092,8 +16261,8 @@ function applyFilter(ctx, sheet, filter2) {
16092
16261
  for (let row2 = range2.start.row + 1; row2 <= range2.end.row; row2++) {
16093
16262
  const visible = (filter2.columns ?? []).every((fc) => {
16094
16263
  if (!fc.values && !fc.blank) return true;
16095
- const text = displayText(ctx.workbook, getCell(sheet, row2, range2.start.col + fc.offset));
16096
- return text === "" ? !!fc.blank : (fc.values ?? []).includes(text);
16264
+ const text2 = displayText(ctx.workbook, getCell(sheet, row2, range2.start.col + fc.offset));
16265
+ return text2 === "" ? !!fc.blank : (fc.values ?? []).includes(text2);
16097
16266
  });
16098
16267
  const info = { ...sheet.rowInfo.get(row2) };
16099
16268
  if (visible) delete info.hidden;
@@ -16192,11 +16361,11 @@ function formulaBarText(workbook, cell, options = {}) {
16192
16361
  styleAt(workbook, cell.styleId).numFmt || "General",
16193
16362
  workbook.date1904
16194
16363
  );
16195
- const text = cell.richText?.length ? cell.richText.map((run) => run.text).join("") : value2;
16196
- if (text === "" || options.quote === false) return text;
16197
- const parsed = parseCellInput(text, { date1904: workbook.date1904 });
16198
- const literal2 = parsed.formula === void 0 && parsed.value === text;
16199
- return literal2 ? text : `'${text}`;
16364
+ const text2 = cell.richText?.length ? cell.richText.map((run) => run.text).join("") : value2;
16365
+ if (text2 === "" || options.quote === false) return text2;
16366
+ const parsed = parseCellInput(text2, { date1904: workbook.date1904 });
16367
+ const literal2 = parsed.formula === void 0 && parsed.value === text2;
16368
+ return literal2 ? text2 : `'${text2}`;
16200
16369
  }
16201
16370
 
16202
16371
  // xlsx/edit/find.ts
@@ -16215,7 +16384,7 @@ function queryPattern(query, global = false) {
16215
16384
  if (query.wholeCell) source = `^(?:${source})$`;
16216
16385
  return new RegExp(source, `${query.matchCase ? "" : "i"}${global ? "g" : ""}`);
16217
16386
  }
16218
- var escapeRegex2 = (text) => text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
16387
+ var escapeRegex2 = (text2) => text2.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
16219
16388
  function searchText(workbook, query, sheet, row2, col) {
16220
16389
  const ws = workbook.sheets[sheet];
16221
16390
  if (!ws) return "";
@@ -16232,25 +16401,25 @@ function findAll(workbook, query) {
16232
16401
  for (const s of indices) {
16233
16402
  const sheet = workbook.sheets[s];
16234
16403
  if (!sheet) continue;
16235
- const positions = [];
16404
+ const positions2 = [];
16236
16405
  if (query.lookIn === "comments")
16237
- for (const c of sheet.comments) positions.push([c.address.row, c.address.col]);
16238
- else forEachCell(sheet, (_cell, row2, col) => positions.push([row2, col]));
16239
- if (query.order === "columns") positions.sort((a, b) => a[1] - b[1] || a[0] - b[0]);
16240
- else positions.sort((a, b) => a[0] - b[0] || a[1] - b[1]);
16241
- for (const [row2, col] of positions) {
16406
+ for (const c of sheet.comments) positions2.push([c.address.row, c.address.col]);
16407
+ else forEachCell(sheet, (_cell, row2, col) => positions2.push([row2, col]));
16408
+ if (query.order === "columns") positions2.sort((a, b) => a[1] - b[1] || a[0] - b[0]);
16409
+ else positions2.sort((a, b) => a[0] - b[0] || a[1] - b[1]);
16410
+ for (const [row2, col] of positions2) {
16242
16411
  if (query.range && query.sheet !== void 0 && !rangeContains(query.range, { row: row2, col }))
16243
16412
  continue;
16244
- const text = searchText(workbook, query, s, row2, col);
16245
- if (text && pattern.test(text)) matches2.push({ sheet: s, row: row2, col, text });
16413
+ const text2 = searchText(workbook, query, s, row2, col);
16414
+ if (text2 && pattern.test(text2)) matches2.push({ sheet: s, row: row2, col, text: text2 });
16246
16415
  }
16247
16416
  }
16248
16417
  return matches2;
16249
16418
  }
16250
- function replaceText(text, query, replacement) {
16419
+ function replaceText(text2, query, replacement) {
16251
16420
  const pattern = queryPattern(query, true);
16252
- if (!pattern) return text;
16253
- return text.replace(pattern, (match2) => match2 === "" ? "" : replacement);
16421
+ if (!pattern) return text2;
16422
+ return text2.replace(pattern, (match2) => match2 === "" ? "" : replacement);
16254
16423
  }
16255
16424
  var isSpilledAt = (workbook, at) => {
16256
16425
  const sheet = workbook.sheets[at.sheet];
@@ -16309,10 +16478,10 @@ function replaceOne(ctx, query, replacement, at) {
16309
16478
  const q = replaceQuery(query);
16310
16479
  if (q.lookIn !== "comments" && isSpilledAt(ctx.workbook, at)) return false;
16311
16480
  const pattern = queryPattern(q);
16312
- const text = searchText(ctx.workbook, q, at.sheet, at.row, at.col);
16313
- if (!pattern || !text || !pattern.test(text)) return false;
16314
- const match2 = { ...at, text };
16315
- if (replaceText(text, q, replacement) === text) return false;
16481
+ const text2 = searchText(ctx.workbook, q, at.sheet, at.row, at.col);
16482
+ if (!pattern || !text2 || !pattern.test(text2)) return false;
16483
+ const match2 = { ...at, text: text2 };
16484
+ if (replaceText(text2, q, replacement) === text2) return false;
16316
16485
  ctx.run(
16317
16486
  "Replace",
16318
16487
  "cells",
@@ -16678,10 +16847,22 @@ var SessionCalculator = class {
16678
16847
  if (isStructural(step)) this.staleGraph = true;
16679
16848
  return;
16680
16849
  }
16850
+ this.recalc(isStructural(step), () => touchedCells(step));
16851
+ }
16852
+ /** Recalculates after a change applied outside the history (a collaborator's edit). */
16853
+ afterExternal(structural, cells) {
16854
+ if (!this.enabled) return;
16855
+ if (calcModeOf(this.workbook) === "manual") {
16856
+ if (structural) this.staleGraph = true;
16857
+ return;
16858
+ }
16859
+ this.recalc(structural, () => cells);
16860
+ }
16861
+ recalc(structural, cells) {
16681
16862
  try {
16682
- if (this.staleGraph || isStructural(step)) this.full();
16863
+ if (this.staleGraph || structural) this.full();
16683
16864
  else {
16684
- const changed = touchedCells(step);
16865
+ const changed = cells();
16685
16866
  if (changed.length) this.calc.recalculateFrom(changed);
16686
16867
  }
16687
16868
  } catch (error) {
@@ -17014,8 +17195,8 @@ function nextTableName(workbook) {
17014
17195
  }
17015
17196
  function uniqueHeaders(texts) {
17016
17197
  const used = /* @__PURE__ */ new Set();
17017
- return texts.map((text, i2) => {
17018
- let base = text.trim() || `Column${i2 + 1}`;
17198
+ return texts.map((text2, i2) => {
17199
+ let base = text2.trim() || `Column${i2 + 1}`;
17019
17200
  if (!used.has(base.toLowerCase())) {
17020
17201
  used.add(base.toLowerCase());
17021
17202
  return base;
@@ -17490,8 +17671,8 @@ function normalizeDigestAlgorithmName(name) {
17490
17671
  // digest/base64.ts
17491
17672
  var ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
17492
17673
  var VALUES = new Map([...ALPHABET].map((char, index2) => [char, index2]));
17493
- function decodeBase64(text) {
17494
- const compact3 = text.replace(/\s+/g, "");
17674
+ function decodeBase64(text2) {
17675
+ const compact3 = text2.replace(/\s+/g, "");
17495
17676
  const body2 = compact3.replace(/={1,2}$/, "");
17496
17677
  if (body2.length % 4 === 1) return void 0;
17497
17678
  if (compact3.length !== body2.length && compact3.length % 4 !== 0) return void 0;
@@ -19500,6 +19681,222 @@ function bordersView(border, theme2) {
19500
19681
  return out;
19501
19682
  }
19502
19683
 
19684
+ // xlsx/layout/sparkline-view.ts
19685
+ var DEFAULTS = {
19686
+ colorSeries: "#376092",
19687
+ colorNegative: "#D00000",
19688
+ colorAxis: "#000000",
19689
+ colorMarkers: "#D00000",
19690
+ colorFirst: "#D00000",
19691
+ colorLast: "#D00000",
19692
+ colorHigh: "#D00000",
19693
+ colorLow: "#D00000"
19694
+ };
19695
+ var COLUMN_GAP = 0.2;
19696
+ function extent(values2) {
19697
+ let min = Infinity;
19698
+ let max = -Infinity;
19699
+ for (const v of values2) {
19700
+ if (v === null) continue;
19701
+ if (v < min) min = v;
19702
+ if (v > max) max = v;
19703
+ }
19704
+ return min <= max ? { min, max } : void 0;
19705
+ }
19706
+ function sparklineValues(group, values2) {
19707
+ return group.displayEmptyCellsAs === "zero" ? values2.map((v) => v ?? 0) : [...values2];
19708
+ }
19709
+ function sparklineScale(group, all2, index2) {
19710
+ const own = extent(sparklineValues(group, all2[index2]?.values ?? []));
19711
+ const needsGroup = group.minAxisType === "group" || group.maxAxisType === "group";
19712
+ const shared = needsGroup ? extent(all2.flatMap((data) => sparklineValues(group, data.values))) : void 0;
19713
+ const end = (type, manual, key) => {
19714
+ if (type === "custom" && manual !== void 0) return manual;
19715
+ if (type === "group" && shared) return shared[key];
19716
+ return own?.[key];
19717
+ };
19718
+ const min = end(group.minAxisType, group.manualMin, "min");
19719
+ const max = end(group.maxAxisType, group.manualMax, "max");
19720
+ return min === void 0 || max === void 0 ? void 0 : { min, max };
19721
+ }
19722
+ function positions(group, data, n) {
19723
+ const dates = data.dates;
19724
+ if (group.dateAxis && dates && dates.length === n) {
19725
+ const span4 = extent(dates);
19726
+ if (span4) {
19727
+ const width = span4.max - span4.min;
19728
+ return dates.map((d) => d === null ? null : width ? (d - span4.min) / width : 0.5);
19729
+ }
19730
+ }
19731
+ return Array.from({ length: n }, (_, i2) => n === 1 ? 0.5 : i2 / (n - 1));
19732
+ }
19733
+ function pointFacts(values2) {
19734
+ const numbers3 = values2.filter((x) => x !== null);
19735
+ let last = values2.length - 1;
19736
+ while (last >= 0 && values2[last] === null) last--;
19737
+ return {
19738
+ high: Math.max(...numbers3),
19739
+ low: Math.min(...numbers3),
19740
+ first: values2.findIndex((x) => x !== null),
19741
+ last
19742
+ };
19743
+ }
19744
+ function pointColor(group, v, i2, facts, colors, markers) {
19745
+ let color = markers && group.markers ? colors.colorMarkers : void 0;
19746
+ if (group.negative && v < 0) color = colors.colorNegative;
19747
+ if (group.high && v === facts.high) color = colors.colorHigh;
19748
+ if (group.low && v === facts.low) color = colors.colorLow;
19749
+ if (group.first && i2 === facts.first) color = colors.colorFirst;
19750
+ if (group.last && i2 === facts.last) color = colors.colorLast;
19751
+ return color;
19752
+ }
19753
+ function resolveColors(group, theme2) {
19754
+ const out = { ...DEFAULTS };
19755
+ for (const key of Object.keys(DEFAULTS)) {
19756
+ const color = group[key];
19757
+ out[key] = resolveColor(color, theme2, DEFAULTS[key]) ?? DEFAULTS[key];
19758
+ }
19759
+ return out;
19760
+ }
19761
+ function sparklineView(group, data, scale2, theme2) {
19762
+ const colors = resolveColors(group, theme2);
19763
+ const view = {
19764
+ type: group.type,
19765
+ color: colors.colorSeries,
19766
+ lineWeightPt: group.lineWeight,
19767
+ lines: [],
19768
+ markers: [],
19769
+ columns: []
19770
+ };
19771
+ const values2 = sparklineValues(group, data.values);
19772
+ const n = values2.length;
19773
+ if (!n || !scale2) return view;
19774
+ const facts = pointFacts(values2);
19775
+ const xs = positions(group, data, n);
19776
+ const flip = (x) => group.rightToLeft ? 1 - x : x;
19777
+ const range2 = scale2.max - scale2.min;
19778
+ const yOf = (v) => range2 ? Math.max(0, Math.min(1, (scale2.max - v) / range2)) : 0.5;
19779
+ if (group.type === "line") {
19780
+ let segment = [];
19781
+ values2.forEach((v, i2) => {
19782
+ const x = xs[i2];
19783
+ if (v === null || x === null || x === void 0) {
19784
+ if (group.displayEmptyCellsAs === "gap" && segment.length) {
19785
+ view.lines.push(segment);
19786
+ segment = [];
19787
+ }
19788
+ return;
19789
+ }
19790
+ const point = { x: flip(x), y: yOf(v) };
19791
+ segment.push(point);
19792
+ const color = pointColor(group, v, i2, facts, colors, true);
19793
+ if (color) view.markers.push({ ...point, color });
19794
+ });
19795
+ if (segment.length) view.lines.push(segment);
19796
+ } else {
19797
+ const slot = 1 / n;
19798
+ const w = slot * (1 - COLUMN_GAP);
19799
+ const base = yOf(Math.max(scale2.min, Math.min(scale2.max, 0)));
19800
+ values2.forEach((v, i2) => {
19801
+ const position = xs[i2];
19802
+ if (v === null || position === null || position === void 0) return;
19803
+ if (v === 0) return;
19804
+ let top;
19805
+ let bottom;
19806
+ if (group.type === "stacked") [top, bottom] = v > 0 ? [0, 0.5] : [0.5, 1];
19807
+ else if (!range2) [top, bottom] = [0, 1];
19808
+ else [top, bottom] = [Math.min(base, yOf(v)), Math.max(base, yOf(v))];
19809
+ const centre = flip(slot / 2 + position * (1 - slot));
19810
+ const color = pointColor(group, v, i2, facts, colors, false) ?? view.color;
19811
+ view.columns.push({ x: centre - w / 2, y: top, w, h: bottom - top, color });
19812
+ });
19813
+ }
19814
+ if (group.type === "stacked") {
19815
+ if (group.displayXAxis) view.axis = { y: 0.5, color: colors.colorAxis };
19816
+ } else if (group.displayXAxis && range2 && scale2.min <= 0 && scale2.max >= 0)
19817
+ view.axis = { y: yOf(0), color: colors.colorAxis };
19818
+ return view;
19819
+ }
19820
+
19821
+ // xlsx/layout/sparkline-data.ts
19822
+ var MAX_POINTS = 1e4;
19823
+ var hostIndex = /* @__PURE__ */ new WeakMap();
19824
+ function hosts(sheet) {
19825
+ const groups = sheetSparklineGroups(sheet);
19826
+ let index2 = hostIndex.get(groups);
19827
+ if (!index2) {
19828
+ index2 = /* @__PURE__ */ new Map();
19829
+ for (const group of groups)
19830
+ group.sparklines.forEach((line2, i2) => {
19831
+ const key = cellKey(line2.host.start.row, line2.host.start.col);
19832
+ if (!index2.has(key)) index2.set(key, { group, index: i2 });
19833
+ });
19834
+ hostIndex.set(groups, index2);
19835
+ }
19836
+ return index2;
19837
+ }
19838
+ function hasSparklineAt(sheet, row2, col) {
19839
+ return hosts(sheet).has(cellKey(row2, col));
19840
+ }
19841
+ function resolveSparklineRange(workbook, sheet, formula) {
19842
+ const ref = formula.trim().replace(/^=/, "");
19843
+ const bang = ref.lastIndexOf("!");
19844
+ let target2 = sheet;
19845
+ if (bang >= 0) {
19846
+ const raw = ref.slice(0, bang);
19847
+ const name = /^'.*'$/.test(raw) ? raw.slice(1, -1).replace(/''/g, "'") : raw;
19848
+ target2 = sheetByName(workbook, name);
19849
+ }
19850
+ const range2 = parseRange(ref.slice(bang + 1).replace(/\$/g, ""));
19851
+ return target2 && range2 ? { sheet: target2, range: normalizeRange(range2) } : void 0;
19852
+ }
19853
+ var rowHidden = (sheet, row2) => sheet.rowInfo.get(row2)?.hidden === true;
19854
+ var colHidden = (sheet, col) => sheet.columns.some((c) => c.hidden === true && col >= c.min && col <= c.max);
19855
+ function readSparklineValues(sheet, range2, displayHidden) {
19856
+ let endRow = range2.end.row;
19857
+ if (endRow - range2.start.row >= MAX_POINTS) {
19858
+ let lastRow = range2.start.row;
19859
+ for (const row2 of sheet.rows.keys()) if (row2 > lastRow) lastRow = row2;
19860
+ endRow = Math.min(endRow, lastRow);
19861
+ }
19862
+ const out = [];
19863
+ for (let row2 = range2.start.row; row2 <= endRow && out.length < MAX_POINTS; row2++) {
19864
+ if (!displayHidden && rowHidden(sheet, row2)) continue;
19865
+ for (let col = range2.start.col; col <= range2.end.col && out.length < MAX_POINTS; col++) {
19866
+ if (!displayHidden && colHidden(sheet, col)) continue;
19867
+ const value2 = getCell(sheet, row2, col)?.value;
19868
+ out.push(typeof value2 === "number" && Number.isFinite(value2) ? value2 : null);
19869
+ }
19870
+ }
19871
+ return out;
19872
+ }
19873
+ function groupData(workbook, sheet, group) {
19874
+ const dateRange = group.dateAxis && group.dateFormula;
19875
+ const dates = dateRange ? resolveSparklineRange(workbook, sheet, dateRange) : void 0;
19876
+ const dateValues = dates ? readSparklineValues(dates.sheet, dates.range, group.displayHidden) : void 0;
19877
+ return group.sparklines.map((line2) => {
19878
+ const source = line2.formula ? resolveSparklineRange(workbook, sheet, line2.formula) : void 0;
19879
+ const values2 = source ? readSparklineValues(source.sheet, source.range, group.displayHidden) : [];
19880
+ return dateValues ? { values: values2, dates: dateValues } : { values: values2 };
19881
+ });
19882
+ }
19883
+ function sparklineViewAt(workbook, sheetIndex2, row2, col) {
19884
+ const sheet = workbook.sheets[sheetIndex2];
19885
+ if (!sheet) return void 0;
19886
+ const entry = hosts(sheet).get(cellKey(row2, col));
19887
+ if (!entry) return void 0;
19888
+ const { group, index: index2 } = entry;
19889
+ const needsGroup = group.minAxisType === "group" || group.maxAxisType === "group";
19890
+ const data = needsGroup ? groupData(workbook, sheet, group) : groupData(workbook, sheet, { ...group, sparklines: [group.sparklines[index2]] });
19891
+ const at = needsGroup ? index2 : 0;
19892
+ return sparklineView(
19893
+ group,
19894
+ data[at] ?? { values: [] },
19895
+ sparklineScale(group, data, at),
19896
+ workbook.theme
19897
+ );
19898
+ }
19899
+
19503
19900
  // xlsx/layout/units.ts
19504
19901
  var DEFAULT_MAX_DIGIT_WIDTH = 7;
19505
19902
  var DEFAULT_BASE_COL_WIDTH = 8;
@@ -19603,6 +20000,8 @@ function cellView(workbook, sheetIndex2, row2, col, cf, options = {}) {
19603
20000
  if (fill) view.fill = fill;
19604
20001
  if (conditional?.dataBar) view.dataBar = conditional.dataBar;
19605
20002
  if (conditional?.icon) view.icon = conditional.icon;
20003
+ const sparkline = sparklineViewAt(workbook, sheetIndex2, row2, col);
20004
+ if (sparkline) view.sparkline = sparkline;
19606
20005
  const link = sheet.hyperlinks.find((h2) => rangeContains(h2.range, { row: row2, col }));
19607
20006
  if (link) {
19608
20007
  view.hasHyperlink = true;
@@ -19809,9 +20208,9 @@ function lineHeightPoints(sizePt) {
19809
20208
  }
19810
20209
  return Math.max(0.75, Math.ceil(height / 0.75 - 1e-9) * 0.75);
19811
20210
  }
19812
- function wrappedLineCount(text, width, measure2) {
20211
+ function wrappedLineCount(text2, width, measure2) {
19813
20212
  let lines = 0;
19814
- for (const paragraph of text.split(/\r?\n/)) {
20213
+ for (const paragraph of text2.split(/\r?\n/)) {
19815
20214
  lines++;
19816
20215
  if (width <= 0) continue;
19817
20216
  let current = "";
@@ -19852,13 +20251,13 @@ function autoFitRowHeight(workbook, sheetIndex2, row2, measure2) {
19852
20251
  let lines = 1;
19853
20252
  if (view.wrap) {
19854
20253
  const width = metrics.colWidth(col) - COLUMN_PADDING_PX - 1 - view.indentPx;
19855
- lines = wrappedLineCount(view.text, width, (text) => measure2(text, view.font));
20254
+ lines = wrappedLineCount(view.text, width, (text2) => measure2(text2, view.font));
19856
20255
  }
19857
20256
  tallest = Math.max(tallest, lines * lineHeightPoints(sizePt));
19858
20257
  }
19859
20258
  return tallest > 0 ? tallest : sheet.defaultRowHeight;
19860
20259
  }
19861
- var approximateMeasure = (text, font) => text.length * font.sizePx * (font.bold ? 0.58 : 0.53);
20260
+ var approximateMeasure = (text2, font) => text2.length * font.sizePx * (font.bold ? 0.58 : 0.53);
19862
20261
 
19863
20262
  // xlsx/edit/row-autofit.ts
19864
20263
  var MAX_HEIGHT2 = 409;
@@ -20121,19 +20520,19 @@ function setTabColor(ctx, index2, color) {
20121
20520
 
20122
20521
  // xlsx/edit/validation-list.ts
20123
20522
  function listSource(workbook, sheet, formula, evaluate, at, depth = 0) {
20124
- const text = formula.replace(/^=/, "").trim();
20125
- const literal2 = /^"((?:[^"]|"")*)"$/.exec(text);
20523
+ const text2 = formula.replace(/^=/, "").trim();
20524
+ const literal2 = /^"((?:[^"]|"")*)"$/.exec(text2);
20126
20525
  if (literal2)
20127
20526
  return (literal2[1] ?? "").replace(/""/g, '"').split(",").map((s) => s.trim()).filter((s) => s !== "").map((s) => ({ text: s, value: parseCellInput(s, { date1904: workbook.date1904 }).value }));
20128
20527
  const named2 = workbook.definedNames.find(
20129
- (n) => n.name.toLowerCase() === text.toLowerCase() && (n.localSheet === void 0 || n.localSheet === sheet)
20528
+ (n) => n.name.toLowerCase() === text2.toLowerCase() && (n.localSheet === void 0 || n.localSheet === sheet)
20130
20529
  );
20131
20530
  if (named2 && depth < 4)
20132
20531
  return listSource(workbook, sheet, named2.formula, evaluate, at, depth + 1);
20133
- const ref = /^(?:'((?:[^']|'')+)'|([^'!]+))!(.+)$/.exec(text);
20532
+ const ref = /^(?:'((?:[^']|'')+)'|([^'!]+))!(.+)$/.exec(text2);
20134
20533
  const sheetName = ref ? ref[1]?.replace(/''/g, "'") ?? ref[2] : void 0;
20135
20534
  const target2 = sheetName ? sheetByName(workbook, sheetName) : workbook.sheets[sheet];
20136
- const range2 = parseRange((ref ? ref[3] ?? "" : text).replace(/\$/g, ""));
20535
+ const range2 = parseRange((ref ? ref[3] ?? "" : text2).replace(/\$/g, ""));
20137
20536
  if (target2 && range2) {
20138
20537
  const out = [];
20139
20538
  forEachCellInRange(target2, range2, (cell) => {
@@ -20144,7 +20543,7 @@ function listSource(workbook, sheet, formula, evaluate, at, depth = 0) {
20144
20543
  }
20145
20544
  if (!evaluate) return void 0;
20146
20545
  try {
20147
- const value2 = evaluate(text, at);
20546
+ const value2 = evaluate(text2, at);
20148
20547
  return value2 === null ? [] : [{ text: rawText(value2), value: value2 }];
20149
20548
  } catch {
20150
20549
  return void 0;
@@ -20183,12 +20582,12 @@ function validationAt(workbook, sheet, row2, col) {
20183
20582
  }
20184
20583
  function operand3(formula, evaluate, at) {
20185
20584
  if (formula === void 0) return void 0;
20186
- const text = formula.replace(/^=/, "").trim();
20187
- if (text !== "" && Number.isFinite(Number(text))) return Number(text);
20188
- const quoted = /^"((?:[^"]|"")*)"$/.exec(text);
20585
+ const text2 = formula.replace(/^=/, "").trim();
20586
+ if (text2 !== "" && Number.isFinite(Number(text2))) return Number(text2);
20587
+ const quoted = /^"((?:[^"]|"")*)"$/.exec(text2);
20189
20588
  if (quoted) return (quoted[1] ?? "").replace(/""/g, '"');
20190
20589
  try {
20191
- return evaluate(text, at);
20590
+ return evaluate(text2, at);
20192
20591
  } catch {
20193
20592
  return void 0;
20194
20593
  }
@@ -20230,8 +20629,8 @@ function relativeTo(dv, formula, at) {
20230
20629
  const dRow = at.row - top;
20231
20630
  const dCol = at.col - left2;
20232
20631
  if (dRow === 0 && dCol === 0) return formula;
20233
- const text = formula.replace(/^=/, "");
20234
- return translateFormula(text, dRow, dCol);
20632
+ const text2 = formula.replace(/^=/, "");
20633
+ return translateFormula(text2, dRow, dCol);
20235
20634
  }
20236
20635
  function withProposedValue(workbook, at, value2, fn) {
20237
20636
  const sheet = workbook.sheets[at.sheet];
@@ -20454,7 +20853,7 @@ function createEditSession(workbook, options = {}) {
20454
20853
  return {
20455
20854
  workbook,
20456
20855
  calc,
20457
- setCellInput: (s, r, c, text) => setCellInput(ctx, s, r, c, text),
20856
+ setCellInput: (s, r, c, text2) => setCellInput(ctx, s, r, c, text2),
20458
20857
  setCellValue: (s, r, c, value2) => setCellValue(ctx, s, r, c, value2),
20459
20858
  setRangeValues: (s, at, rows2) => setRangeValues(ctx, s, at, rows2),
20460
20859
  clearRange: (s, range2, what) => clearRange(ctx, s, range2, what),
@@ -20487,7 +20886,7 @@ function createEditSession(workbook, options = {}) {
20487
20886
  setSheetState: (i2, state) => setSheetState(ctx, i2, state),
20488
20887
  setTabColor: (i2, color) => setTabColor(ctx, i2, color),
20489
20888
  setFreeze: (s, freeze) => setFreeze(ctx, s, freeze),
20490
- setComment: (s, at, text, author) => setComment(ctx, s, at, text, author),
20889
+ setComment: (s, at, text2, author) => setComment(ctx, s, at, text2, author),
20491
20890
  setHyperlink: (s, range2, link) => setHyperlink(ctx, s, range2, link),
20492
20891
  addConditionalFormat: (s, cf) => addConditionalFormat(ctx, s, cf),
20493
20892
  clearConditionalFormats: (s, range2) => clearConditionalFormats(ctx, s, range2),
@@ -20564,18 +20963,19 @@ function createEditSession(workbook, options = {}) {
20564
20963
  onChange(listener) {
20565
20964
  listeners2.add(listener);
20566
20965
  return () => listeners2.delete(listener);
20567
- }
20966
+ },
20967
+ applyExternal: (apply) => applyExternal({ calculator, emit, busy: () => !!open }, apply)
20568
20968
  };
20569
20969
  }
20570
20970
 
20571
20971
  // xlsx/layout/cf-helpers.ts
20572
20972
  function literal(formula) {
20573
- const text = formula.trim();
20574
- if (/^[+-]?(\d+\.?\d*|\.\d+)(e[+-]?\d+)?$/i.test(text)) return Number(text);
20575
- const quoted = /^"((?:[^"]|"")*)"$/.exec(text);
20973
+ const text2 = formula.trim();
20974
+ if (/^[+-]?(\d+\.?\d*|\.\d+)(e[+-]?\d+)?$/i.test(text2)) return Number(text2);
20975
+ const quoted = /^"((?:[^"]|"")*)"$/.exec(text2);
20576
20976
  if (quoted) return (quoted[1] ?? "").replace(/""/g, '"');
20577
- if (/^TRUE$/i.test(text)) return true;
20578
- if (/^FALSE$/i.test(text)) return false;
20977
+ if (/^TRUE$/i.test(text2)) return true;
20978
+ if (/^FALSE$/i.test(text2)) return false;
20579
20979
  return void 0;
20580
20980
  }
20581
20981
  function localTodaySerial(date1904) {
@@ -20922,12 +21322,12 @@ function createConditionalFormatEvaluator(workbook, sheetIndex2, evaluate, optio
20922
21322
  case "beginsWith":
20923
21323
  case "endsWith": {
20924
21324
  if (isCellError(value2)) return false;
20925
- const text = valueText(value2).toLowerCase();
21325
+ const text2 = valueText(value2).toLowerCase();
20926
21326
  const needle = rule.text.toLowerCase();
20927
- if (rule.type === "containsText") return text.includes(needle);
20928
- if (rule.type === "notContainsText") return !text.includes(needle);
20929
- if (rule.type === "beginsWith") return text.startsWith(needle);
20930
- return text.endsWith(needle);
21327
+ if (rule.type === "containsText") return text2.includes(needle);
21328
+ if (rule.type === "notContainsText") return !text2.includes(needle);
21329
+ if (rule.type === "beginsWith") return text2.startsWith(needle);
21330
+ return text2.endsWith(needle);
20931
21331
  }
20932
21332
  case "timePeriod":
20933
21333
  return typeof value2 === "number" && inTimePeriod(rule.timePeriod, value2, today(), workbook.date1904);
@@ -21058,7 +21458,7 @@ function overflowExtent(sheet, metrics, row2, col, textWidth, hAlign, maxSpan =
21058
21458
  return result2();
21059
21459
  }
21060
21460
 
21061
- // xlsx/layout/font-family.ts
21461
+ // text/css-font-family.ts
21062
21462
  var FALLBACKS = {
21063
21463
  calibri: '"Calibri", "Carlito", "Segoe UI", Arial, sans-serif',
21064
21464
  "calibri light": '"Calibri Light", "Calibri", "Carlito", "Segoe UI", Arial, sans-serif',
@@ -21459,7 +21859,7 @@ function styleCssFont(style2) {
21459
21859
  }
21460
21860
  function measure(ctx) {
21461
21861
  const grid6 = ctx.grid();
21462
- return grid6 ? (text, style2) => grid6.measureText(text, styleCssFont(style2)) : void 0;
21862
+ return grid6 ? (text2, style2) => grid6.measureText(text2, styleCssFont(style2)) : void 0;
21463
21863
  }
21464
21864
  var UNSET = void 0;
21465
21865
 
@@ -21838,19 +22238,19 @@ function mergeMessageModules(modules) {
21838
22238
  for (const value2 of Object.values(module)) {
21839
22239
  if (!value2 || typeof value2 !== "object" || Array.isArray(value2)) continue;
21840
22240
  const entries = Object.entries(value2);
21841
- if (!entries.every(([, text]) => typeof text === "string")) continue;
21842
- for (const [key, text] of entries) merged[key] = text;
22241
+ if (!entries.every(([, text2]) => typeof text2 === "string")) continue;
22242
+ for (const [key, text2] of entries) merged[key] = text2;
21843
22243
  }
21844
22244
  }
21845
22245
  return merged;
21846
22246
  }
21847
22247
 
21848
22248
  // i18n/translator.ts
21849
- var SINGLE = /\{(\w+)\}/g;
22249
+ var SINGLE2 = /\{(\w+)\}/g;
21850
22250
  var DOUBLE = /\{\{\s*(\w+)\s*\}\}/g;
21851
22251
  function interpolate(template, params, placeholder = "single") {
21852
22252
  if (!params) return template;
21853
- const pattern = placeholder === "double" ? DOUBLE : SINGLE;
22253
+ const pattern = placeholder === "double" ? DOUBLE : SINGLE2;
21854
22254
  return template.replace(
21855
22255
  pattern,
21856
22256
  (match2, name) => Object.prototype.hasOwnProperty.call(params, name) && params[name] !== void 0 ? String(params[name]) : match2
@@ -21859,15 +22259,45 @@ function interpolate(template, params, placeholder = "single") {
21859
22259
  function createTranslator(messages, fallbacks = [], options = {}) {
21860
22260
  const placeholder = options.placeholder ?? "single";
21861
22261
  return (key, params) => {
21862
- let text = messages?.[key];
21863
- for (let i2 = 0; text === void 0 && i2 < fallbacks.length; i2++) text = fallbacks[i2]?.[key];
21864
- return interpolate(text ?? options.missing?.(key) ?? key, params, placeholder);
22262
+ let text2 = messages?.[key];
22263
+ for (let i2 = 0; text2 === void 0 && i2 < fallbacks.length; i2++) text2 = fallbacks[i2]?.[key];
22264
+ return interpolate(text2 ?? options.missing?.(key) ?? key, params, placeholder);
21865
22265
  };
21866
22266
  }
21867
22267
 
21868
22268
  // xlsx/ui/locales/merge.ts
21869
22269
  var mergeStringModules = mergeMessageModules;
21870
22270
 
22271
+ // xlsx/ui/locales/de/collab.ts
22272
+ var collab_exports = {};
22273
+ __export(collab_exports, {
22274
+ collab: () => collab
22275
+ });
22276
+ var collab = {
22277
+ Share: "Freigeben",
22278
+ "Session name": "Sitzungsname",
22279
+ "Start sharing": "Freigabe starten",
22280
+ "Stop sharing": "Freigabe beenden",
22281
+ "People in this session": "Personen in dieser Sitzung",
22282
+ "Session: {room}": "Sitzung: {room}",
22283
+ "Not sharing.": "Keine Freigabe aktiv.",
22284
+ "Connecting...": "Verbindung wird hergestellt...",
22285
+ "Connected.": "Verbunden.",
22286
+ "Joining the session...": "Sitzung wird beigetreten...",
22287
+ "Disconnected. Changes are kept and sent when the connection returns.": "Getrennt. \xC4nderungen bleiben erhalten und werden gesendet, sobald die Verbindung zur\xFCck ist.",
22288
+ "The connection failed. Changes are kept and sent when the connection returns.": "Die Verbindung ist fehlgeschlagen. \xC4nderungen bleiben erhalten und werden gesendet, sobald die Verbindung zur\xFCck ist.",
22289
+ "Edit this workbook together with other people. Everyone who joins the same session sees changes as they are made.": "Bearbeiten Sie diese Arbeitsmappe gemeinsam mit anderen. Alle, die derselben Sitzung beitreten, sehen \xC4nderungen sofort.",
22290
+ "Cell values, formulas, formats, sheets, rows, columns, merges and names are shared. Charts, pictures, comments, conditional formats, data validation, tables and page setup stay in this window.": "Zellwerte, Formeln, Formate, Bl\xE4tter, Zeilen, Spalten, verbundene Zellen und Namen werden geteilt. Diagramme, Bilder, Kommentare, bedingte Formatierungen, Daten\xFCberpr\xFCfung, Tabellen und Seiteneinrichtung bleiben in diesem Fenster.",
22291
+ "Without a server set by the page, a session connects only windows and tabs of this browser. Nothing is uploaded.": "Ohne einen von der Seite festgelegten Server verbindet eine Sitzung nur Fenster und Tabs dieses Browsers. Es wird nichts hochgeladen.",
22292
+ "Reconnected. Changes made while offline were sent.": "Wieder verbunden. Offline vorgenommene \xC4nderungen wurden gesendet.",
22293
+ "Connection lost. Keep working; your changes are sent when it returns.": "Verbindung verloren. Arbeiten Sie weiter; Ihre \xC4nderungen werden gesendet, sobald sie zur\xFCck ist.",
22294
+ "Sharing stopped because another workbook was opened.": "Die Freigabe wurde beendet, weil eine andere Arbeitsmappe ge\xF6ffnet wurde.",
22295
+ "Open or create a workbook before sharing it.": "\xD6ffnen oder erstellen Sie eine Arbeitsmappe, bevor Sie sie freigeben.",
22296
+ "Use 1 to 128 letters, digits, hyphens or underscores for the room name.": "Verwenden Sie f\xFCr den Sitzungsnamen 1 bis 128 Buchstaben, Ziffern, Bindestriche oder Unterstriche.",
22297
+ "This browser cannot share between windows; pass a server URL.": "Dieser Browser kann nicht zwischen Fenstern teilen; geben Sie eine Server-URL an.",
22298
+ "Stop the current collaboration session first.": "Beenden Sie zuerst die aktuelle Zusammenarbeitssitzung."
22299
+ };
22300
+
21871
22301
  // xlsx/ui/locales/de/commands.ts
21872
22302
  var commands_exports = {};
21873
22303
  __export(commands_exports, {
@@ -23437,11 +23867,17 @@ var NAVIGATION_STRINGS = {
23437
23867
  Hyperlinks: ["Liens hypertexte", "Hyperlinks", "Hiperv\xEDnculos", "\u8D85\u94FE\u63A5"],
23438
23868
  "Sort and filter": ["Tri et filtre", "Sortieren und Filtern", "Ordenar y filtrar", "\u6392\u5E8F\u548C\u7B5B\u9009"],
23439
23869
  "Freeze panes": ["Figer les volets", "Fenster fixieren", "Inmovilizar paneles", "\u51BB\u7ED3\u7A97\u683C"],
23440
- "Pivot tables and sparklines (kept in the file but not shown)": [
23441
- "Tableaux crois\xE9s dynamiques et graphiques sparkline (conserv\xE9s dans le fichier mais non affich\xE9s)",
23442
- "PivotTables und Sparklines (in der Datei erhalten, aber nicht angezeigt)",
23443
- "Tablas din\xE1micas y minigr\xE1ficos (se conservan en el archivo, pero no se muestran)",
23444
- "\u6570\u636E\u900F\u89C6\u8868\u548C\u8FF7\u4F60\u56FE(\u4FDD\u7559\u5728\u6587\u4EF6\u4E2D\u4F46\u4E0D\u663E\u793A)"
23870
+ "Pivot tables (kept in the file but not shown)": [
23871
+ "Tableaux crois\xE9s dynamiques (conserv\xE9s dans le fichier mais non affich\xE9s)",
23872
+ "PivotTables (in der Datei erhalten, aber nicht angezeigt)",
23873
+ "Tablas din\xE1micas (se conservan en el archivo, pero no se muestran)",
23874
+ "\u6570\u636E\u900F\u89C6\u8868(\u4FDD\u7559\u5728\u6587\u4EF6\u4E2D\u4F46\u4E0D\u663E\u793A)"
23875
+ ],
23876
+ "Creating or editing sparklines (existing ones are shown)": [
23877
+ "Cr\xE9ation ou modification de graphiques sparkline (ceux existants sont affich\xE9s)",
23878
+ "Sparklines erstellen oder bearbeiten (vorhandene werden angezeigt)",
23879
+ "Crear o editar minigr\xE1ficos (los existentes se muestran)",
23880
+ "\u521B\u5EFA\u6216\u7F16\u8F91\u8FF7\u4F60\u56FE(\u73B0\u6709\u8FF7\u4F60\u56FE\u4F1A\u663E\u793A)"
23445
23881
  ],
23446
23882
  "Show Formulas": ["Afficher les formules", "Formeln anzeigen", "Mostrar f\xF3rmulas", "\u663E\u793A\u516C\u5F0F"],
23447
23883
  "Manual calculation": ["Calcul manuel", "Manuelle Berechnung", "C\xE1lculo manual", "\u624B\u52A8\u8BA1\u7B97"],
@@ -25940,7 +26376,7 @@ var shell = {
25940
26376
  "Inspect Workbook": "Arbeitsmappe pr\xFCfen",
25941
26377
  "Compatibility notes": "Kompatibilit\xE4tshinweise",
25942
26378
  "No compatibility notes for this workbook.": "Keine Kompatibilit\xE4tshinweise f\xFCr diese Arbeitsmappe.",
25943
- "Charts are shown but not edited; pivot tables, sparklines, macros and other unsupported parts are kept in the file but not shown.": "Diagramme werden angezeigt, aber nicht bearbeitet; PivotTables, Sparklines, Makros und andere nicht unterst\xFCtzte Teile bleiben in der Datei erhalten, werden aber nicht angezeigt.",
26379
+ "Charts and sparklines are shown but not edited; pivot tables, macros and other unsupported parts are kept in the file but not shown.": "Diagramme und Sparklines werden angezeigt, aber nicht bearbeitet; PivotTables, Makros und andere nicht unterst\xFCtzte Teile bleiben in der Datei erhalten, werden aber nicht angezeigt.",
25944
26380
  "This workbook was opened from an Excel 97-2003 file (.xls). Save writes an Excel Workbook (.xlsx); the original .xls file is not changed.": "Diese Arbeitsmappe wurde aus einer Excel 97-2003-Datei (.xls) ge\xF6ffnet. Beim Speichern entsteht eine Excel-Arbeitsmappe (.xlsx); die urspr\xFCngliche .xls-Datei bleibt unver\xE4ndert.",
25945
26381
  "This workbook was opened from a CSV file, which keeps values only. Save writes an Excel Workbook (.xlsx); use Export to write CSV.": "Diese Arbeitsmappe wurde aus einer CSV-Datei ge\xF6ffnet, die nur Werte enth\xE4lt. Beim Speichern entsteht eine Excel-Arbeitsmappe (.xlsx); verwenden Sie Exportieren, um CSV zu schreiben.",
25946
26382
  "Macros are kept in the file but do not run in this editor.": "Makros bleiben in der Datei erhalten, werden in diesem Editor aber nicht ausgef\xFChrt.",
@@ -26057,11 +26493,42 @@ var shell = {
26057
26493
 
26058
26494
  // xlsx/ui/locales/de/index.ts
26059
26495
  var de = mergeStringModules({
26496
+ "./collab.ts": collab_exports,
26060
26497
  "./commands.ts": commands_exports,
26061
26498
  "./grid.ts": grid_exports,
26062
26499
  "./shell.ts": shell_exports
26063
26500
  });
26064
26501
 
26502
+ // xlsx/ui/locales/en/collab.ts
26503
+ var collab_exports2 = {};
26504
+ __export(collab_exports2, {
26505
+ collab: () => collab2
26506
+ });
26507
+ var collab2 = {
26508
+ Share: "Share",
26509
+ "Session name": "Session name",
26510
+ "Start sharing": "Start sharing",
26511
+ "Stop sharing": "Stop sharing",
26512
+ "People in this session": "People in this session",
26513
+ "Session: {room}": "Session: {room}",
26514
+ "Not sharing.": "Not sharing.",
26515
+ "Connecting...": "Connecting...",
26516
+ "Connected.": "Connected.",
26517
+ "Joining the session...": "Joining the session...",
26518
+ "Disconnected. Changes are kept and sent when the connection returns.": "Disconnected. Changes are kept and sent when the connection returns.",
26519
+ "The connection failed. Changes are kept and sent when the connection returns.": "The connection failed. Changes are kept and sent when the connection returns.",
26520
+ "Edit this workbook together with other people. Everyone who joins the same session sees changes as they are made.": "Edit this workbook together with other people. Everyone who joins the same session sees changes as they are made.",
26521
+ "Cell values, formulas, formats, sheets, rows, columns, merges and names are shared. Charts, pictures, comments, conditional formats, data validation, tables and page setup stay in this window.": "Cell values, formulas, formats, sheets, rows, columns, merges and names are shared. Charts, pictures, comments, conditional formats, data validation, tables and page setup stay in this window.",
26522
+ "Without a server set by the page, a session connects only windows and tabs of this browser. Nothing is uploaded.": "Without a server set by the page, a session connects only windows and tabs of this browser. Nothing is uploaded.",
26523
+ "Reconnected. Changes made while offline were sent.": "Reconnected. Changes made while offline were sent.",
26524
+ "Connection lost. Keep working; your changes are sent when it returns.": "Connection lost. Keep working; your changes are sent when it returns.",
26525
+ "Sharing stopped because another workbook was opened.": "Sharing stopped because another workbook was opened.",
26526
+ "Open or create a workbook before sharing it.": "Open or create a workbook before sharing it.",
26527
+ "Use 1 to 128 letters, digits, hyphens or underscores for the room name.": "Use 1 to 128 letters, digits, hyphens or underscores for the room name.",
26528
+ "This browser cannot share between windows; pass a server URL.": "This browser cannot share between windows; pass a server URL.",
26529
+ "Stop the current collaboration session first.": "Stop the current collaboration session first."
26530
+ };
26531
+
26065
26532
  // xlsx/ui/locales/en/commands.ts
26066
26533
  var commands_exports2 = {};
26067
26534
  __export(commands_exports2, {
@@ -26294,7 +26761,7 @@ var shell2 = {
26294
26761
  "Inspect Workbook": "Inspect Workbook",
26295
26762
  "Compatibility notes": "Compatibility notes",
26296
26763
  "No compatibility notes for this workbook.": "No compatibility notes for this workbook.",
26297
- "Charts are shown but not edited; pivot tables, sparklines, macros and other unsupported parts are kept in the file but not shown.": "Charts are shown but not edited; pivot tables, sparklines, macros and other unsupported parts are kept in the file but not shown.",
26764
+ "Charts and sparklines are shown but not edited; pivot tables, macros and other unsupported parts are kept in the file but not shown.": "Charts and sparklines are shown but not edited; pivot tables, macros and other unsupported parts are kept in the file but not shown.",
26298
26765
  "This workbook was opened from an Excel 97-2003 file (.xls). Save writes an Excel Workbook (.xlsx); the original .xls file is not changed.": "This workbook was opened from an Excel 97-2003 file (.xls). Save writes an Excel Workbook (.xlsx); the original .xls file is not changed.",
26299
26766
  "This workbook was opened from a CSV file, which keeps values only. Save writes an Excel Workbook (.xlsx); use Export to write CSV.": "This workbook was opened from a CSV file, which keeps values only. Save writes an Excel Workbook (.xlsx); use Export to write CSV.",
26300
26767
  "Macros are kept in the file but do not run in this editor.": "Macros are kept in the file but do not run in this editor.",
@@ -26411,11 +26878,42 @@ var shell2 = {
26411
26878
 
26412
26879
  // xlsx/ui/locales/en/index.ts
26413
26880
  var en = mergeStringModules({
26881
+ "./collab.ts": collab_exports2,
26414
26882
  "./commands.ts": commands_exports2,
26415
26883
  "./grid.ts": grid_exports2,
26416
26884
  "./shell.ts": shell_exports2
26417
26885
  });
26418
26886
 
26887
+ // xlsx/ui/locales/es/collab.ts
26888
+ var collab_exports3 = {};
26889
+ __export(collab_exports3, {
26890
+ collab: () => collab3
26891
+ });
26892
+ var collab3 = {
26893
+ Share: "Compartir",
26894
+ "Session name": "Nombre de la sesi\xF3n",
26895
+ "Start sharing": "Empezar a compartir",
26896
+ "Stop sharing": "Dejar de compartir",
26897
+ "People in this session": "Personas en esta sesi\xF3n",
26898
+ "Session: {room}": "Sesi\xF3n: {room}",
26899
+ "Not sharing.": "No se est\xE1 compartiendo.",
26900
+ "Connecting...": "Conectando...",
26901
+ "Connected.": "Conectado.",
26902
+ "Joining the session...": "Uni\xE9ndose a la sesi\xF3n...",
26903
+ "Disconnected. Changes are kept and sent when the connection returns.": "Desconectado. Los cambios se conservan y se env\xEDan cuando vuelva la conexi\xF3n.",
26904
+ "The connection failed. Changes are kept and sent when the connection returns.": "La conexi\xF3n fall\xF3. Los cambios se conservan y se env\xEDan cuando vuelva la conexi\xF3n.",
26905
+ "Edit this workbook together with other people. Everyone who joins the same session sees changes as they are made.": "Edite este libro junto con otras personas. Todos los que se unan a la misma sesi\xF3n ver\xE1n los cambios a medida que se hacen.",
26906
+ "Cell values, formulas, formats, sheets, rows, columns, merges and names are shared. Charts, pictures, comments, conditional formats, data validation, tables and page setup stay in this window.": "Se comparten los valores, f\xF3rmulas, formatos, hojas, filas, columnas, celdas combinadas y nombres. Los gr\xE1ficos, im\xE1genes, comentarios, formatos condicionales, validaci\xF3n de datos, tablas y la configuraci\xF3n de p\xE1gina permanecen en esta ventana.",
26907
+ "Without a server set by the page, a session connects only windows and tabs of this browser. Nothing is uploaded.": "Sin un servidor definido por la p\xE1gina, una sesi\xF3n solo conecta ventanas y pesta\xF1as de este navegador. No se sube nada.",
26908
+ "Reconnected. Changes made while offline were sent.": "Reconectado. Se enviaron los cambios hechos sin conexi\xF3n.",
26909
+ "Connection lost. Keep working; your changes are sent when it returns.": "Se perdi\xF3 la conexi\xF3n. Siga trabajando; sus cambios se enviar\xE1n cuando vuelva.",
26910
+ "Sharing stopped because another workbook was opened.": "Se dej\xF3 de compartir porque se abri\xF3 otro libro.",
26911
+ "Open or create a workbook before sharing it.": "Abra o cree un libro antes de compartirlo.",
26912
+ "Use 1 to 128 letters, digits, hyphens or underscores for the room name.": "Use de 1 a 128 letras, d\xEDgitos, guiones o guiones bajos para el nombre de la sesi\xF3n.",
26913
+ "This browser cannot share between windows; pass a server URL.": "Este navegador no puede compartir entre ventanas; indique la URL de un servidor.",
26914
+ "Stop the current collaboration session first.": "Detenga primero la sesi\xF3n de colaboraci\xF3n actual."
26915
+ };
26916
+
26419
26917
  // xlsx/ui/locales/es/commands.ts
26420
26918
  var commands_exports3 = {};
26421
26919
  __export(commands_exports3, {
@@ -26648,7 +27146,7 @@ var shell3 = {
26648
27146
  "Inspect Workbook": "Inspeccionar libro",
26649
27147
  "Compatibility notes": "Notas de compatibilidad",
26650
27148
  "No compatibility notes for this workbook.": "No hay notas de compatibilidad para este libro.",
26651
- "Charts are shown but not edited; pivot tables, sparklines, macros and other unsupported parts are kept in the file but not shown.": "Los gr\xE1ficos se muestran pero no se editan; las tablas din\xE1micas, minigr\xE1ficos, macros y otras partes no compatibles se conservan en el archivo pero no se muestran.",
27149
+ "Charts and sparklines are shown but not edited; pivot tables, macros and other unsupported parts are kept in the file but not shown.": "Los gr\xE1ficos y minigr\xE1ficos se muestran pero no se editan; las tablas din\xE1micas, macros y otras partes no compatibles se conservan en el archivo pero no se muestran.",
26652
27150
  "This workbook was opened from an Excel 97-2003 file (.xls). Save writes an Excel Workbook (.xlsx); the original .xls file is not changed.": "Este libro se abri\xF3 desde un archivo de Excel 97-2003 (.xls). Al guardar se escribe un libro de Excel (.xlsx); el archivo .xls original no se modifica.",
26653
27151
  "This workbook was opened from a CSV file, which keeps values only. Save writes an Excel Workbook (.xlsx); use Export to write CSV.": "Este libro se abri\xF3 desde un archivo CSV, que solo conserva valores. Al guardar se escribe un libro de Excel (.xlsx); use Exportar para escribir CSV.",
26654
27152
  "Macros are kept in the file but do not run in this editor.": "Las macros se conservan en el archivo pero no se ejecutan en este editor.",
@@ -26765,11 +27263,42 @@ var shell3 = {
26765
27263
 
26766
27264
  // xlsx/ui/locales/es/index.ts
26767
27265
  var es = mergeStringModules({
27266
+ "./collab.ts": collab_exports3,
26768
27267
  "./commands.ts": commands_exports3,
26769
27268
  "./grid.ts": grid_exports3,
26770
27269
  "./shell.ts": shell_exports3
26771
27270
  });
26772
27271
 
27272
+ // xlsx/ui/locales/fr/collab.ts
27273
+ var collab_exports4 = {};
27274
+ __export(collab_exports4, {
27275
+ collab: () => collab4
27276
+ });
27277
+ var collab4 = {
27278
+ Share: "Partager",
27279
+ "Session name": "Nom de la session",
27280
+ "Start sharing": "Commencer le partage",
27281
+ "Stop sharing": "Arr\xEAter le partage",
27282
+ "People in this session": "Personnes dans cette session",
27283
+ "Session: {room}": "Session : {room}",
27284
+ "Not sharing.": "Aucun partage en cours.",
27285
+ "Connecting...": "Connexion...",
27286
+ "Connected.": "Connect\xE9.",
27287
+ "Joining the session...": "Connexion \xE0 la session...",
27288
+ "Disconnected. Changes are kept and sent when the connection returns.": "D\xE9connect\xE9. Les modifications sont conserv\xE9es et envoy\xE9es au retour de la connexion.",
27289
+ "The connection failed. Changes are kept and sent when the connection returns.": "La connexion a \xE9chou\xE9. Les modifications sont conserv\xE9es et envoy\xE9es au retour de la connexion.",
27290
+ "Edit this workbook together with other people. Everyone who joins the same session sees changes as they are made.": "Modifiez ce classeur avec d'autres personnes. Toutes les personnes qui rejoignent la m\xEAme session voient les modifications au fur et \xE0 mesure.",
27291
+ "Cell values, formulas, formats, sheets, rows, columns, merges and names are shared. Charts, pictures, comments, conditional formats, data validation, tables and page setup stay in this window.": "Les valeurs, formules, formats, feuilles, lignes, colonnes, fusions et noms sont partag\xE9s. Les graphiques, images, commentaires, mises en forme conditionnelles, validations des donn\xE9es, tableaux et la mise en page restent dans cette fen\xEAtre.",
27292
+ "Without a server set by the page, a session connects only windows and tabs of this browser. Nothing is uploaded.": "Sans serveur d\xE9fini par la page, une session ne relie que les fen\xEAtres et onglets de ce navigateur. Rien n'est t\xE9l\xE9vers\xE9.",
27293
+ "Reconnected. Changes made while offline were sent.": "Reconnect\xE9. Les modifications faites hors connexion ont \xE9t\xE9 envoy\xE9es.",
27294
+ "Connection lost. Keep working; your changes are sent when it returns.": "Connexion perdue. Continuez \xE0 travailler ; vos modifications seront envoy\xE9es \xE0 son retour.",
27295
+ "Sharing stopped because another workbook was opened.": "Le partage s'est arr\xEAt\xE9 car un autre classeur a \xE9t\xE9 ouvert.",
27296
+ "Open or create a workbook before sharing it.": "Ouvrez ou cr\xE9ez un classeur avant de le partager.",
27297
+ "Use 1 to 128 letters, digits, hyphens or underscores for the room name.": "Utilisez de 1 \xE0 128 lettres, chiffres, traits d'union ou traits de soulignement pour le nom de la session.",
27298
+ "This browser cannot share between windows; pass a server URL.": "Ce navigateur ne peut pas partager entre fen\xEAtres ; indiquez l'URL d'un serveur.",
27299
+ "Stop the current collaboration session first.": "Arr\xEAtez d'abord la session de collaboration en cours."
27300
+ };
27301
+
26773
27302
  // xlsx/ui/locales/fr/commands.ts
26774
27303
  var commands_exports4 = {};
26775
27304
  __export(commands_exports4, {
@@ -27002,7 +27531,7 @@ var shell4 = {
27002
27531
  "Inspect Workbook": "Inspecter le classeur",
27003
27532
  "Compatibility notes": "Notes de compatibilit\xE9",
27004
27533
  "No compatibility notes for this workbook.": "Aucune note de compatibilit\xE9 pour ce classeur.",
27005
- "Charts are shown but not edited; pivot tables, sparklines, macros and other unsupported parts are kept in the file but not shown.": "Les graphiques sont affich\xE9s mais non modifiables ; les tableaux crois\xE9s dynamiques, graphiques sparkline, macros et autres \xE9l\xE9ments non pris en charge sont conserv\xE9s dans le fichier mais pas affich\xE9s.",
27534
+ "Charts and sparklines are shown but not edited; pivot tables, macros and other unsupported parts are kept in the file but not shown.": "Les graphiques et graphiques sparkline sont affich\xE9s mais non modifiables ; les tableaux crois\xE9s dynamiques, macros et autres \xE9l\xE9ments non pris en charge sont conserv\xE9s dans le fichier mais pas affich\xE9s.",
27006
27535
  "This workbook was opened from an Excel 97-2003 file (.xls). Save writes an Excel Workbook (.xlsx); the original .xls file is not changed.": "Ce classeur a \xE9t\xE9 ouvert \xE0 partir d'un fichier Excel 97-2003 (.xls). L'enregistrement cr\xE9e un classeur Excel (.xlsx) ; le fichier .xls d'origine n'est pas modifi\xE9.",
27007
27536
  "This workbook was opened from a CSV file, which keeps values only. Save writes an Excel Workbook (.xlsx); use Export to write CSV.": "Ce classeur a \xE9t\xE9 ouvert \xE0 partir d'un fichier CSV, qui ne conserve que les valeurs. L'enregistrement cr\xE9e un classeur Excel (.xlsx) ; utilisez Exporter pour \xE9crire un CSV.",
27008
27537
  "Macros are kept in the file but do not run in this editor.": "Les macros sont conserv\xE9es dans le fichier mais ne s'ex\xE9cutent pas dans cet \xE9diteur.",
@@ -27119,11 +27648,42 @@ var shell4 = {
27119
27648
 
27120
27649
  // xlsx/ui/locales/fr/index.ts
27121
27650
  var fr = mergeStringModules({
27651
+ "./collab.ts": collab_exports4,
27122
27652
  "./commands.ts": commands_exports4,
27123
27653
  "./grid.ts": grid_exports4,
27124
27654
  "./shell.ts": shell_exports4
27125
27655
  });
27126
27656
 
27657
+ // xlsx/ui/locales/zh-CN/collab.ts
27658
+ var collab_exports5 = {};
27659
+ __export(collab_exports5, {
27660
+ collab: () => collab5
27661
+ });
27662
+ var collab5 = {
27663
+ Share: "\u5171\u4EAB",
27664
+ "Session name": "\u4F1A\u8BDD\u540D\u79F0",
27665
+ "Start sharing": "\u5F00\u59CB\u5171\u4EAB",
27666
+ "Stop sharing": "\u505C\u6B62\u5171\u4EAB",
27667
+ "People in this session": "\u6B64\u4F1A\u8BDD\u4E2D\u7684\u4EBA\u5458",
27668
+ "Session: {room}": "\u4F1A\u8BDD\uFF1A{room}",
27669
+ "Not sharing.": "\u672A\u5728\u5171\u4EAB\u3002",
27670
+ "Connecting...": "\u6B63\u5728\u8FDE\u63A5...",
27671
+ "Connected.": "\u5DF2\u8FDE\u63A5\u3002",
27672
+ "Joining the session...": "\u6B63\u5728\u52A0\u5165\u4F1A\u8BDD...",
27673
+ "Disconnected. Changes are kept and sent when the connection returns.": "\u5DF2\u65AD\u5F00\u8FDE\u63A5\u3002\u66F4\u6539\u4F1A\u88AB\u4FDD\u7559\uFF0C\u5E76\u5728\u8FDE\u63A5\u6062\u590D\u540E\u53D1\u9001\u3002",
27674
+ "The connection failed. Changes are kept and sent when the connection returns.": "\u8FDE\u63A5\u5931\u8D25\u3002\u66F4\u6539\u4F1A\u88AB\u4FDD\u7559\uFF0C\u5E76\u5728\u8FDE\u63A5\u6062\u590D\u540E\u53D1\u9001\u3002",
27675
+ "Edit this workbook together with other people. Everyone who joins the same session sees changes as they are made.": "\u4E0E\u4ED6\u4EBA\u4E00\u8D77\u7F16\u8F91\u6B64\u5DE5\u4F5C\u7C3F\u3002\u52A0\u5165\u540C\u4E00\u4F1A\u8BDD\u7684\u6BCF\u4E2A\u4EBA\u90FD\u4F1A\u5B9E\u65F6\u770B\u5230\u66F4\u6539\u3002",
27676
+ "Cell values, formulas, formats, sheets, rows, columns, merges and names are shared. Charts, pictures, comments, conditional formats, data validation, tables and page setup stay in this window.": "\u5355\u5143\u683C\u503C\u3001\u516C\u5F0F\u3001\u683C\u5F0F\u3001\u5DE5\u4F5C\u8868\u3001\u884C\u3001\u5217\u3001\u5408\u5E76\u5355\u5143\u683C\u548C\u540D\u79F0\u4F1A\u88AB\u5171\u4EAB\u3002\u56FE\u8868\u3001\u56FE\u7247\u3001\u6279\u6CE8\u3001\u6761\u4EF6\u683C\u5F0F\u3001\u6570\u636E\u9A8C\u8BC1\u3001\u8868\u683C\u548C\u9875\u9762\u8BBE\u7F6E\u4EC5\u4FDD\u7559\u5728\u6B64\u7A97\u53E3\u4E2D\u3002",
27677
+ "Without a server set by the page, a session connects only windows and tabs of this browser. Nothing is uploaded.": "\u5982\u679C\u9875\u9762\u672A\u8BBE\u7F6E\u670D\u52A1\u5668\uFF0C\u4F1A\u8BDD\u53EA\u8FDE\u63A5\u6B64\u6D4F\u89C8\u5668\u4E2D\u7684\u7A97\u53E3\u548C\u6807\u7B7E\u9875\u3002\u4E0D\u4F1A\u4E0A\u4F20\u4EFB\u4F55\u5185\u5BB9\u3002",
27678
+ "Reconnected. Changes made while offline were sent.": "\u5DF2\u91CD\u65B0\u8FDE\u63A5\u3002\u79BB\u7EBF\u65F6\u6240\u505A\u7684\u66F4\u6539\u5DF2\u53D1\u9001\u3002",
27679
+ "Connection lost. Keep working; your changes are sent when it returns.": "\u8FDE\u63A5\u5DF2\u65AD\u5F00\u3002\u8BF7\u7EE7\u7EED\u5DE5\u4F5C\uFF0C\u8FDE\u63A5\u6062\u590D\u540E\u4F1A\u53D1\u9001\u60A8\u7684\u66F4\u6539\u3002",
27680
+ "Sharing stopped because another workbook was opened.": "\u7531\u4E8E\u6253\u5F00\u4E86\u53E6\u4E00\u4E2A\u5DE5\u4F5C\u7C3F\uFF0C\u5171\u4EAB\u5DF2\u505C\u6B62\u3002",
27681
+ "Open or create a workbook before sharing it.": "\u8BF7\u5148\u6253\u5F00\u6216\u521B\u5EFA\u5DE5\u4F5C\u7C3F\uFF0C\u7136\u540E\u518D\u5171\u4EAB\u3002",
27682
+ "Use 1 to 128 letters, digits, hyphens or underscores for the room name.": "\u4F1A\u8BDD\u540D\u79F0\u8BF7\u4F7F\u7528 1 \u5230 128 \u4E2A\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u8FDE\u5B57\u7B26\u6216\u4E0B\u5212\u7EBF\u3002",
27683
+ "This browser cannot share between windows; pass a server URL.": "\u6B64\u6D4F\u89C8\u5668\u65E0\u6CD5\u5728\u7A97\u53E3\u4E4B\u95F4\u5171\u4EAB\uFF1B\u8BF7\u63D0\u4F9B\u670D\u52A1\u5668 URL\u3002",
27684
+ "Stop the current collaboration session first.": "\u8BF7\u5148\u505C\u6B62\u5F53\u524D\u534F\u4F5C\u4F1A\u8BDD\u3002"
27685
+ };
27686
+
27127
27687
  // xlsx/ui/locales/zh-CN/commands.ts
27128
27688
  var commands_exports5 = {};
27129
27689
  __export(commands_exports5, {
@@ -27356,7 +27916,7 @@ var shell5 = {
27356
27916
  "Inspect Workbook": "\u68C0\u67E5\u5DE5\u4F5C\u7C3F",
27357
27917
  "Compatibility notes": "\u517C\u5BB9\u6027\u8BF4\u660E",
27358
27918
  "No compatibility notes for this workbook.": "\u6B64\u5DE5\u4F5C\u7C3F\u6CA1\u6709\u517C\u5BB9\u6027\u8BF4\u660E\u3002",
27359
- "Charts are shown but not edited; pivot tables, sparklines, macros and other unsupported parts are kept in the file but not shown.": "\u56FE\u8868\u4EC5\u663E\u793A\uFF0C\u4E0D\u53EF\u7F16\u8F91\uFF1B\u6570\u636E\u900F\u89C6\u8868\u3001\u8FF7\u4F60\u56FE\u3001\u5B8F\u548C\u5176\u4ED6\u4E0D\u652F\u6301\u7684\u90E8\u5206\u4F1A\u4FDD\u7559\u5728\u6587\u4EF6\u4E2D\uFF0C\u4F46\u4E0D\u663E\u793A\u3002",
27919
+ "Charts and sparklines are shown but not edited; pivot tables, macros and other unsupported parts are kept in the file but not shown.": "\u56FE\u8868\u548C\u8FF7\u4F60\u56FE\u4EC5\u663E\u793A\uFF0C\u4E0D\u53EF\u7F16\u8F91\uFF1B\u6570\u636E\u900F\u89C6\u8868\u3001\u5B8F\u548C\u5176\u4ED6\u4E0D\u652F\u6301\u7684\u90E8\u5206\u4F1A\u4FDD\u7559\u5728\u6587\u4EF6\u4E2D\uFF0C\u4F46\u4E0D\u663E\u793A\u3002",
27360
27920
  "This workbook was opened from an Excel 97-2003 file (.xls). Save writes an Excel Workbook (.xlsx); the original .xls file is not changed.": "\u6B64\u5DE5\u4F5C\u7C3F\u662F\u4ECE Excel 97-2003 \u6587\u4EF6 (.xls) \u6253\u5F00\u7684\u3002\u4FDD\u5B58\u65F6\u4F1A\u5199\u5165 Excel \u5DE5\u4F5C\u7C3F (.xlsx)\uFF1B\u539F\u59CB .xls \u6587\u4EF6\u4E0D\u4F1A\u66F4\u6539\u3002",
27361
27921
  "This workbook was opened from a CSV file, which keeps values only. Save writes an Excel Workbook (.xlsx); use Export to write CSV.": "\u6B64\u5DE5\u4F5C\u7C3F\u662F\u4ECE\u4EC5\u4FDD\u7559\u503C\u7684 CSV \u6587\u4EF6\u6253\u5F00\u7684\u3002\u4FDD\u5B58\u65F6\u4F1A\u5199\u5165 Excel \u5DE5\u4F5C\u7C3F (.xlsx)\uFF1B\u4F7F\u7528\u201C\u5BFC\u51FA\u201D\u5199\u5165 CSV\u3002",
27362
27922
  "Macros are kept in the file but do not run in this editor.": "\u5B8F\u4F1A\u4FDD\u7559\u5728\u6587\u4EF6\u4E2D\uFF0C\u4F46\u4E0D\u4F1A\u5728\u6B64\u7F16\u8F91\u5668\u4E2D\u8FD0\u884C\u3002",
@@ -27473,6 +28033,7 @@ var shell5 = {
27473
28033
 
27474
28034
  // xlsx/ui/locales/zh-CN/index.ts
27475
28035
  var zhCN = mergeStringModules({
28036
+ "./collab.ts": collab_exports5,
27476
28037
  "./commands.ts": commands_exports5,
27477
28038
  "./grid.ts": grid_exports5,
27478
28039
  "./shell.ts": shell_exports5
@@ -27490,8 +28051,8 @@ var STRINGS = {
27490
28051
  function normalizeEditorLocale(value2) {
27491
28052
  return normalizeLocale(value2, EDITOR_LOCALES, "en");
27492
28053
  }
27493
- function fillTemplate(text, vars) {
27494
- return interpolate(text, vars);
28054
+ function fillTemplate(text2, vars) {
28055
+ return interpolate(text2, vars);
27495
28056
  }
27496
28057
  function translate(locale, key, vars) {
27497
28058
  return createTranslator(STRINGS[locale], [STRINGS.en])(key, vars);
@@ -27508,8 +28069,8 @@ function formatNumber2(locale, value2, digits2 = 10) {
27508
28069
  }
27509
28070
  function sheetBaseName(t) {
27510
28071
  const key = "sheet.default-name";
27511
- const text = t(key);
27512
- return text && text !== key ? text : "Sheet";
28072
+ const text2 = t(key);
28073
+ return text2 && text2 !== key ? text2 : "Sheet";
27513
28074
  }
27514
28075
 
27515
28076
  // xlsx/ui/commands/cells.ts
@@ -29269,6 +29830,11 @@ function tabMenu(state, actions) {
29269
29830
  );
29270
29831
  }
29271
29832
 
29833
+ // xlsx/ui/context.ts
29834
+ function historyOf(ctx) {
29835
+ return ctx.history ? ctx.history() : ctx.session();
29836
+ }
29837
+
29272
29838
  // xlsx/ui/dialogs.ts
29273
29839
  function createDialogRegistry(context, onError) {
29274
29840
  const openers = /* @__PURE__ */ new Map();
@@ -29524,8 +30090,8 @@ var DirtyState = class {
29524
30090
  };
29525
30091
 
29526
30092
  // xlsx/ui/formula-bar/name-resolve.ts
29527
- function parseSheetReference(workbook, activeSheet, text) {
29528
- const ref = text.trim().replace(/^=/, "");
30093
+ function parseSheetReference(workbook, activeSheet, text2) {
30094
+ const ref = text2.trim().replace(/^=/, "");
29529
30095
  const bang = ref.lastIndexOf("!");
29530
30096
  let sheet = activeSheet;
29531
30097
  if (bang >= 0) {
@@ -29543,8 +30109,8 @@ function findDefinedName2(workbook, sheet, name) {
29543
30109
  const matches2 = workbook.definedNames.filter((d) => d.name.toLowerCase() === lower2);
29544
30110
  return matches2.find((d) => d.localSheet === sheet) ?? matches2.find((d) => d.localSheet === void 0);
29545
30111
  }
29546
- function resolveNameBox(workbook, activeSheet, text) {
29547
- const input = text.trim();
30112
+ function resolveNameBox(workbook, activeSheet, text2) {
30113
+ const input = text2.trim();
29548
30114
  if (!input) return { kind: "invalid" };
29549
30115
  const ref = parseSheetReference(workbook, activeSheet, input);
29550
30116
  if (ref) return { kind: "go", ...ref };
@@ -29655,10 +30221,10 @@ function textAlign(hAlign) {
29655
30221
  if (hAlign === "justify" || hAlign === "distributed") return "justify";
29656
30222
  return "left";
29657
30223
  }
29658
- function repeatToFill(text, textWidth, cellWidth) {
29659
- if (!text || textWidth <= 0) return text;
30224
+ function repeatToFill(text2, textWidth, cellWidth) {
30225
+ if (!text2 || textWidth <= 0) return text2;
29660
30226
  const times = Math.max(1, Math.floor(cellWidth / textWidth));
29661
- return text.repeat(Math.min(times, 500));
30227
+ return text2.repeat(Math.min(times, 500));
29662
30228
  }
29663
30229
  function hashes(cellInnerWidth, hashWidth) {
29664
30230
  const n = Math.max(1, Math.floor(cellInnerWidth / Math.max(1, hashWidth)));
@@ -29668,9 +30234,9 @@ function hashes(cellInnerWidth, hashWidth) {
29668
30234
  // xlsx/ui/grid/cell-items.ts
29669
30235
  var PADDING = 2;
29670
30236
  function isBlankView(view) {
29671
- return view.text === "" && !view.fill && !hasBorders(view.borders) && !view.dataBar && !view.icon && !view.hasComment;
30237
+ return view.text === "" && !view.fill && !hasBorders(view.borders) && !view.dataBar && !view.icon && !view.sparkline && !view.hasComment;
29672
30238
  }
29673
- function textWidthOf(input, view, text) {
30239
+ function textWidthOf(input, view, text2) {
29674
30240
  if (view.rich?.length)
29675
30241
  return view.rich.reduce(
29676
30242
  (sum2, run) => sum2 + input.measure(run.text, cssFont(run.font, input.zoom)),
@@ -29678,7 +30244,7 @@ function textWidthOf(input, view, text) {
29678
30244
  );
29679
30245
  const font = cssFont(view.font, input.zoom);
29680
30246
  let widest = 0;
29681
- for (const line2 of text.split("\n")) widest = Math.max(widest, input.measure(line2, font));
30247
+ for (const line2 of text2.split("\n")) widest = Math.max(widest, input.measure(line2, font));
29682
30248
  return widest;
29683
30249
  }
29684
30250
  function makeItem(input, row2, col, view, merge2) {
@@ -29721,7 +30287,7 @@ function makeItem(input, row2, col, view, merge2) {
29721
30287
  return item;
29722
30288
  }
29723
30289
  if (view.overflow && !merge2 && measured > inner2) {
29724
- const extent = overflowExtent(
30290
+ const extent2 = overflowExtent(
29725
30291
  input.sheet,
29726
30292
  metrics,
29727
30293
  row2,
@@ -29729,9 +30295,9 @@ function makeItem(input, row2, col, view, merge2) {
29729
30295
  measured + 2 * PADDING,
29730
30296
  view.hAlign
29731
30297
  );
29732
- item.textLeft = extent.left - x;
29733
- item.textWidth = extent.right - extent.left;
29734
- item.overflowing = extent.startCol !== col || extent.endCol !== col;
30298
+ item.textLeft = extent2.left - x;
30299
+ item.textWidth = extent2.right - extent2.left;
30300
+ item.overflowing = extent2.startCol !== col || extent2.endCol !== col;
29735
30301
  }
29736
30302
  return item;
29737
30303
  }
@@ -29840,9 +30406,9 @@ function createEditBridge() {
29840
30406
  return () => listeners2.delete(listener);
29841
30407
  },
29842
30408
  begin: (options = {}) => driver?.begin(options) ?? false,
29843
- update(text, caret, source) {
30409
+ update(text2, caret, source) {
29844
30410
  if (!state.editing) return;
29845
- state = { ...state, text, caret, source };
30411
+ state = { ...state, text: text2, caret, source };
29846
30412
  driver?.changed(source);
29847
30413
  emit(source);
29848
30414
  },
@@ -30207,18 +30773,18 @@ function activeRef(selection) {
30207
30773
  return formatAddress(selection.active);
30208
30774
  }
30209
30775
  function parseSelectionRef(ref, workbook) {
30210
- let text = ref.trim();
30776
+ let text2 = ref.trim();
30211
30777
  let sheet;
30212
- const bang = text.lastIndexOf("!");
30778
+ const bang = text2.lastIndexOf("!");
30213
30779
  if (bang > 0) {
30214
- const name = text.slice(0, bang).replace(/^'(.*)'$/, "$1").replace(/''/g, "'");
30780
+ const name = text2.slice(0, bang).replace(/^'(.*)'$/, "$1").replace(/''/g, "'");
30215
30781
  const index2 = workbook?.sheets.findIndex((item) => item.name.toLowerCase() === name.toLowerCase()) ?? -1;
30216
30782
  if (index2 < 0) return void 0;
30217
30783
  sheet = index2;
30218
- text = text.slice(bang + 1);
30784
+ text2 = text2.slice(bang + 1);
30219
30785
  }
30220
30786
  const ranges = [];
30221
- for (const part of text.split(",")) {
30787
+ for (const part of text2.split(",")) {
30222
30788
  const range2 = parseRange(part.trim());
30223
30789
  if (!range2) return void 0;
30224
30790
  ranges.push(range2);
@@ -30384,7 +30950,7 @@ var CellViewCache = class {
30384
30950
  let result2 = null;
30385
30951
  if (workbook && sheet) {
30386
30952
  const stored = getCell(sheet, row2, col);
30387
- const plain2 = !stored && effectiveStyleId(sheet, row2, col) === 0 && !cfCovers(sheet, row2, col);
30953
+ const plain2 = !stored && effectiveStyleId(sheet, row2, col) === 0 && !cfCovers(sheet, row2, col) && !hasSparklineAt(sheet, row2, col);
30388
30954
  if (!plain2) {
30389
30955
  const view = cellView(workbook, this.#source.sheetIndex(), row2, col, this.#evaluator());
30390
30956
  result2 = isBlankView(view) ? null : view;
@@ -30447,6 +31013,7 @@ var ICON_PATHS = {
30447
31013
  link: "M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7l-1 1 M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1-1",
30448
31014
  comment: "M4 5h16v11H10l-4 4v-4H4z M8 9h8 M8 12h5",
30449
31015
  comments: "M3 4h13v9H9l-3 3v-3H3z M9 17h6l3 3v-3h3V8h-3",
31016
+ share: "M14 4l6 6-6 6M20 10h-8a8 8 0 0 0-8 8",
30450
31017
  deleteComment: "M4 5h16v11H10l-4 4v-4H4z M9 8.5l5 5 M14 8.5l-5 5",
30451
31018
  previous: "M6 14l6-6 6 6",
30452
31019
  next: "M6 10l6 6 6-6",
@@ -30897,4 +31464,4 @@ function applyThemeColors(host, previous, colors) {
30897
31464
  return Object.keys(vars);
30898
31465
  }
30899
31466
 
30900
- export { ACCOUNTING_FORMATS, ALL_RANGE, AUTOSUM_FUNCTIONS, BORDER_PRESETS, CATEGORIES, COLOR_SCALES, COMMAND_TABLES, CORE_FEATURE_STRINGS, CellViewCache, DATA_BAR_COLORS, DATE_CODES, DEFAULT_OPTIONS, DirtyState, EDITOR_LOCALES, EDITOR_THEME_MODES, FONT_NAMES, FONT_SIZES, FORMAT_CELLS_STRINGS, FRACTION_CODES, FUNCTION_MENUS, GridGeometry, HIGHLIGHT_STYLES, ICON_ACCENTS, ICON_PATHS, ICON_SETS, MARGIN_PRESETS, MESSAGE_STRINGS, MORE_FUNCTION_CATEGORIES, NAVIGATION_STRINGS, ORIENTATIONS, PAPER_SIZES, QUADRANTS, RIBBON_HOME_STRINGS, RIBBON_TAB_STRINGS, RULES_STRINGS, SHEET_ICONS, SPECIAL_CODES, STRINGS, SYMBOLS, SheetSelections, TABLE_STYLES, TEMPLATES, THEME_KEYS, TIME_CODES, TOOLS_STRINGS, UNSET, absoluteReference, activeChart, activeRef, activeStyle, activeTable, addRange, alignItems, alignmentCommands, applyThemeColors, autoSumRange, buildChart, buildCode, buildItems, cellCommands, cellMenu, cellRange3 as cellRange, cellStyleItems, clampAddress, clipState, clipboardCommands, colSelected, colorScaleRule, colsOf, colsRange, columnHeaderHeight, columnHeaderMenu, commandStrings, contextualCommands, createCommandRegistry, createDialogRegistry, createEditBridge, createSelectionModel, createTemplateWorkbook, cssFont, cssFontFamily, darkTheme, dataBarRule, dataCommands, detectCategory, diagonalSvg, dxfCss, edgeCss, editBridge, editChart, editing, editingCommands, evaluateRef, expandForMerges, extendSelection, fillPaint, fillSource, fillTemplate, findDefinedName2 as findDefinedName, findSpecial, fitNumber2 as fitNumber, fontCommands, formatNumber2 as formatNumber, formulaCommands, functionsIn, guessHeader, hasBorders, hasWorkbook, hashes, helpTab, icon, iconCount, iconSetRule, iconSvg, iconThresholds, initialSelection, insertFunctionCall, installFormatPainter, isBlankView, isMenuSeparator, isSingleCell, isTabHidden, isWholeCols, isWholeRows2 as isWholeRows, justify, lightTheme, measure, moveWithinSelection, movingEnd, nameForRange, negativeCodes, normalizeEditorLocale, normalizeThemeMode, noteFunctionUse, numberCommands, numberFormatOptions, onRibbonTabsChange, pageLayoutCommands, parseBorderArg, parseSelectionRef, parseSheetReference, pasteWith, patternImage, pickColor, rangeRef, recentFunctions, refresh, regionOf, registerRibbonTabs, repeatToFill, resetRibbonTabs, resolveNameBox, reviewTab, ribbonTabs, rowHeaderMenu, rowHeaderWidth, rowSelected, rowsOf, rowsRange, scrollToReveal, searchCommands, selectCell, selectSpecial, selectTab, selectionCellCount, selectionRef, setTabHidden, sheetBaseName, sheetLocked, sortCommands, span3 as span, spanRange, stepFontSize, structureLocked, style, styleCssFont, tabButton, tabMenu, tableAt, tableStyleColor, tableStylePreview, target, textAlign, textDecoration, themePaletteItems, themeToCssVars, translate, translator, viewTab, viewing, wholeColumns, wholeRows, withTarget };
31467
+ export { ACCOUNTING_FORMATS, ALL_RANGE, AUTOSUM_FUNCTIONS, BORDER_PRESETS, CATEGORIES, COLOR_SCALES, COMMAND_TABLES, CORE_FEATURE_STRINGS, CellViewCache, DATA_BAR_COLORS, DATE_CODES, DEFAULT_OPTIONS, DirtyState, EDITOR_LOCALES, EDITOR_THEME_MODES, FONT_NAMES, FONT_SIZES, FORMAT_CELLS_STRINGS, FRACTION_CODES, FUNCTION_MENUS, GridGeometry, HIGHLIGHT_STYLES, ICON_ACCENTS, ICON_PATHS, ICON_SETS, MARGIN_PRESETS, MESSAGE_STRINGS, MORE_FUNCTION_CATEGORIES, NAVIGATION_STRINGS, ORIENTATIONS, PAPER_SIZES, QUADRANTS, RIBBON_HOME_STRINGS, RIBBON_TAB_STRINGS, RULES_STRINGS, SHEET_ICONS, SPECIAL_CODES, STRINGS, SYMBOLS, SheetSelections, TABLE_STYLES, TEMPLATES, THEME_KEYS, TIME_CODES, TOOLS_STRINGS, UNSET, absoluteReference, activeChart, activeRef, activeStyle, activeTable, addRange, alignItems, alignmentCommands, applyThemeColors, autoSumRange, buildChart, buildCode, buildItems, cellCommands, cellMenu, cellRange3 as cellRange, cellStyleItems, clampAddress, clipState, clipboardCommands, colSelected, colorScaleRule, colsOf, colsRange, columnHeaderHeight, columnHeaderMenu, commandStrings, contextualCommands, createCommandRegistry, createDialogRegistry, createEditBridge, createSelectionModel, createTemplateWorkbook, cssFont, cssFontFamily, darkTheme, dataBarRule, dataCommands, detectCategory, diagonalSvg, dxfCss, edgeCss, editBridge, editChart, editing, editingCommands, evaluateRef, expandForMerges, extendSelection, fillPaint, fillSource, fillTemplate, findDefinedName2 as findDefinedName, findSpecial, fitNumber2 as fitNumber, fontCommands, formatNumber2 as formatNumber, formulaCommands, functionsIn, guessHeader, hasBorders, hasWorkbook, hashes, helpTab, historyOf, icon, iconCount, iconSetRule, iconSvg, iconThresholds, initialSelection, insertFunctionCall, installFormatPainter, isBlankView, isMenuSeparator, isSingleCell, isTabHidden, isWholeCols, isWholeRows2 as isWholeRows, justify, lightTheme, measure, moveWithinSelection, movingEnd, nameForRange, negativeCodes, normalizeEditorLocale, normalizeThemeMode, noteFunctionUse, numberCommands, numberFormatOptions, onRibbonTabsChange, pageLayoutCommands, parseBorderArg, parseSelectionRef, parseSheetReference, pasteWith, patternImage, pickColor, rangeRef, recentFunctions, refresh, regionOf, registerRibbonTabs, repeatToFill, resetRibbonTabs, resolveNameBox, reviewTab, ribbonTabs, rowHeaderMenu, rowHeaderWidth, rowSelected, rowsOf, rowsRange, scrollToReveal, searchCommands, selectCell, selectSpecial, selectTab, selectionCellCount, selectionRef, setTabHidden, sheetBaseName, sheetLocked, sortCommands, span3 as span, spanRange, stepFontSize, structureLocked, style, styleCssFont, tabButton, tabMenu, tableAt, tableStyleColor, tableStylePreview, target, textAlign, textDecoration, themePaletteItems, themeToCssVars, translate, translator, viewTab, viewing, wholeColumns, wholeRows, withTarget };