@sheetxl/sdk 0.8.0-beta.11 → 0.8.0-beta.13

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 (349) hide show
  1. package/THIRD-PARTY-NOTICES.md +172 -0
  2. package/browser/esm/{BMyDRQ716j79h_bH.mjs → -GEhXGMfNcWmHPby.mjs} +6 -6
  3. package/browser/esm/{B7aUIvgUjncMMD_i.mjs → 9WXf_BTKjW1cQisZ.mjs} +95 -94
  4. package/browser/esm/{PcHFjNzQsE54POri.mjs → B2SgIPPBX0wjzuq8.mjs} +1 -1
  5. package/browser/esm/{DEiPS3Dr-s4fPbVZ.mjs → BC2RwlNwCdRywkoD.mjs} +1 -1
  6. package/browser/esm/{BpgskG1Er_lGQ_yS.mjs → BEqhm9xAUPiHUCFv.mjs} +1 -1
  7. package/browser/esm/BHgqi7KNrl7Vjr0W.mjs +348 -0
  8. package/browser/esm/{BkBhLS0l6z8sxI6D.mjs → BJKH0tDRx2FeSWvt.mjs} +2 -2
  9. package/browser/esm/{CU3DmJ-YnVVrC1_k.mjs → BTgWtqdQoh2cB6DL.mjs} +1 -1
  10. package/browser/esm/{Dyq_ivuHvlXLwPCl.mjs → BVshV1iY3bcUH9_E.mjs} +1135 -1129
  11. package/browser/esm/{BFagR2JeWs74iAG3.mjs → BYQ63XU7JzB4_itX.mjs} +1 -1
  12. package/browser/esm/{DvAaxH6z_tGvrRzl.mjs → Bax5aOzQkbHKXW_X.mjs} +239 -230
  13. package/browser/esm/{DLLE0FZNsKxbBzRn.mjs → BiDGKhtzV6yIy66o.mjs} +45 -45
  14. package/browser/esm/BmYrWK5OmHRtgyqM.mjs +367 -0
  15. package/browser/esm/{ClPfI4lODvCece29.mjs → BoAlHgjPQ6mxb_oO.mjs} +74 -74
  16. package/browser/esm/{BoV6zPBnfqCBCqZ7.mjs → C0mjTq8lhrX3HiPa.mjs} +4328 -3166
  17. package/browser/esm/{nvU0ClAbf0g94YBK.mjs → C5j0IdwtYkWlOftv.mjs} +604 -596
  18. package/browser/esm/{DWNzqw7DUKwoxjri.mjs → CL84-iL2QeKlLzo5.mjs} +2 -2
  19. package/browser/esm/{Ctjb0SsxV4K4MMqG.mjs → CLkBe-6n-pStQhnz.mjs} +2 -2
  20. package/{node/esm/CZICGK_ss0HoGHCP.mjs → browser/esm/CPzfhTPX2Y4dHX2p.mjs} +2 -2
  21. package/browser/esm/{Dlmig06rIo7cInRk.mjs → CSJuIjYUOE387FIP.mjs} +1 -1
  22. package/browser/esm/{BjkCiv5Jz6WYKZeu.mjs → Cdw0mGuoV3IU2LhR.mjs} +2 -2
  23. package/browser/esm/Ced5uyofOWHuL_Jy.mjs +114 -0
  24. package/browser/esm/{CkxWugaJFjDGZNZ-.mjs → Ci_LJ4S_GvYX0STI.mjs} +1 -1
  25. package/browser/esm/{zlLuW405RSguy4Kn.mjs → CwygVKP_RXmne5Ot.mjs} +47 -47
  26. package/browser/esm/{C4MqfLn9Dm-l3OIk.mjs → D-mfK0noQrM2jZLT.mjs} +1 -1
  27. package/browser/esm/{BnG31I6Oj_HEtSPS.mjs → D9SH_8v3FYCnxOFK.mjs} +1 -1
  28. package/browser/esm/{BVDiOXGMc5_FMGfy.mjs → DPD8fop6az9HZNiK.mjs} +2 -2
  29. package/browser/esm/DW-MmlgMH87l-_cw.mjs +302 -0
  30. package/browser/esm/{CaB7J-xgfKO2uAkG.mjs → DctIlUsO78-OU2ht.mjs} +2 -2
  31. package/browser/esm/DdcKkVb4jM6Y_epY.mjs +184 -0
  32. package/browser/esm/{CHU6iu_WGlm7fLET.mjs → DfKzE0IY0TjaEIxG.mjs} +1 -1
  33. package/browser/esm/{C2VbEI_XVAoseAwa.mjs → DkloMquaR1pbZCER.mjs} +44 -43
  34. package/browser/esm/{C16ycKja6zG0crV_.mjs → Dz86-De57bv2VYIi.mjs} +19447 -16481
  35. package/browser/esm/{BtvLTTfSBdAKplVG.mjs → HApSgmV2FXRRwQac.mjs} +1 -1
  36. package/browser/esm/{CQYjO777cmAznUzK.mjs → IbVAQU4YqtFqLwYk.mjs} +1 -1
  37. package/browser/esm/index.mjs +823 -644
  38. package/browser/esm/mHQ95RAfxHzcUN2r.mjs +18 -0
  39. package/browser/esm/pm00uZZu_H3gxHFx.mjs +117 -0
  40. package/browser/esm/{CV5EGEjG5_-CPpP0.mjs → quEvwgrEuOb0h3q-.mjs} +1926 -1298
  41. package/browser/esm/{ClbvFbFzFzXLBKNN.mjs → zZngLMg6mg6nnNGX.mjs} +66 -66
  42. package/licenses/dependencies.txt +71 -1
  43. package/node/esm/{BqiexuA89caYnAPz.mjs → -K4Cek-bTUItkB_8.mjs} +1 -1
  44. package/node/esm/-b8yNV4v9qiq8EMY.mjs +117 -0
  45. package/node/esm/{D8zEN-6ZdDqDvTxM.mjs → 1V-m67YHbxmg3xk2.mjs} +74 -74
  46. package/node/esm/{D_t5AUxSm7_icjzq.mjs → 4ROAfJC1mokmqubv.mjs} +1 -1
  47. package/node/esm/B89et7t3uRmtxk4v.mjs +115 -0
  48. package/node/esm/BKBkCBNGhMU0nQdY.mjs +372 -0
  49. package/node/esm/{OVfaSb506tNSIvbv.mjs → BQ2XqExomMceAjfe.mjs} +20822 -18373
  50. package/node/esm/{2Kihw_-5lVTEnwMa.mjs → Bfg7qjCXCwXbzW3K.mjs} +1 -1
  51. package/node/esm/{D1TKBVmoKGAXf37B.mjs → BtMeAB_dqJnOfzJM.mjs} +2 -2
  52. package/node/esm/{D6e2z7eZpxOJXHc7.mjs → Byc_bxU_MdjYtt0x.mjs} +1 -1
  53. package/node/esm/{CNCNJNg890KdgkWh.mjs → Bzrl292TNCK3Cpid.mjs} +1 -1
  54. package/node/esm/{De2IONBxQhz-Qbyh.mjs → C0P9zspoypRAj7yv.mjs} +1 -1
  55. package/node/esm/{CzXT00vrQa1_gvW9.mjs → C9gpMN3galHGZyoK.mjs} +1 -1
  56. package/node/esm/CKCG2peOkTq0gIIW.mjs +310 -0
  57. package/node/esm/{DUTskXCXref-IJnI.mjs → CWBS90g3Hz-kQDkY.mjs} +46 -46
  58. package/node/esm/{BIwObuhTJYf0jpUa.mjs → CoGSVnn-hNMtTEus.mjs} +2 -2
  59. package/node/esm/{CwePQwTILHHjGDkZ.mjs → CzrLqStvrcPE2-hb.mjs} +194 -185
  60. package/node/esm/{CCN5vD410obwdz38.mjs → D16EdlZG1hX5WUUK.mjs} +96 -95
  61. package/node/esm/{CDHdgJXH2vS71WMc.mjs → D1mDga2K5sjs8y07.mjs} +1 -1
  62. package/node/esm/{cGwrLA1RCE-WhJ7w.mjs → D2jtztjE6c23RKvZ.mjs} +1 -1
  63. package/node/esm/{Bbf1Pm9Gk7YpLTvg.mjs → D9nRcWsYk3M82iD8.mjs} +1 -1
  64. package/node/esm/{yavzZOiZW_EjG9lE.mjs → DALYzTxZ9Ur9C69Q.mjs} +1 -1
  65. package/node/esm/{DkwIPzKc3UwdUIfM.mjs → DF0nL7s01dp7n0Bx.mjs} +10 -10
  66. package/node/esm/{DNRhGK-8Tr9xcRyc.mjs → DO5ldLqhTvIfPXLW.mjs} +3348 -2610
  67. package/node/esm/DQz8J8ci7EJdqbuB.mjs +351 -0
  68. package/node/esm/{BIRq1kT7lLRzns9t.mjs → DR2OQTKqqyIkZnse.mjs} +2 -2
  69. package/node/esm/{857CIBgQgGpnqrXk.mjs → DSTLPBgpsGW6qP9e.mjs} +73 -73
  70. package/node/esm/{CGp6VZL-gZa9Uezx.mjs → DiXp7KSOZUSWXaZ5.mjs} +1 -1
  71. package/node/esm/{CZiqiay42tFTrLI4.mjs → DwvXHsycOQR219c7.mjs} +1 -1
  72. package/node/esm/{B21JjOLghRoDOrkx.mjs → Hc6B04OyVzHx2F5I.mjs} +38 -37
  73. package/node/esm/{Ct3h15sCus4Tgt6M.mjs → NkPNHsq2T3DXg76x.mjs} +561 -553
  74. package/node/esm/{B084DssTcdBheTp_.mjs → Nl_IIkO1jbk0s9i-.mjs} +4552 -3373
  75. package/node/esm/{D2KBymQJd1XhpeQD.mjs → OQT5lGqq8a4r5xNa.mjs} +1 -1
  76. package/node/esm/OTaaFGhF-k_iwobp.mjs +18 -0
  77. package/node/esm/{CdJHUJSBRHZoryPe.mjs → Z1elC_roIu7LhceZ.mjs} +53 -53
  78. package/{browser/esm/D5np__Jb1euAyaLw.mjs → node/esm/e3F3OVXCxLJrSukW.mjs} +2 -2
  79. package/node/esm/index.mjs +806 -625
  80. package/node/esm/{mFiBSM7XgBHV9AY7.mjs → suOBVUz-pca6ilJH.mjs} +1607 -1601
  81. package/package.json +8 -6
  82. package/resources/contents.json +108 -0
  83. package/resources/fonts/aptos-bold-italic.hinted.json +125 -0
  84. package/resources/fonts/aptos-bold-italic.metrics.json +221 -0
  85. package/resources/fonts/aptos-bold-italic.rows.json +8 -0
  86. package/resources/fonts/aptos-bold.hinted.json +125 -0
  87. package/resources/fonts/aptos-bold.metrics.json +221 -0
  88. package/resources/fonts/aptos-bold.rows.json +8 -0
  89. package/resources/fonts/aptos-display-bold-italic.hinted.json +125 -0
  90. package/resources/fonts/aptos-display-bold-italic.metrics.json +221 -0
  91. package/resources/fonts/aptos-display-bold-italic.rows.json +8 -0
  92. package/resources/fonts/aptos-display-bold.hinted.json +125 -0
  93. package/resources/fonts/aptos-display-bold.metrics.json +221 -0
  94. package/resources/fonts/aptos-display-bold.rows.json +8 -0
  95. package/resources/fonts/aptos-display-italic.hinted.json +124 -0
  96. package/resources/fonts/aptos-display-italic.metrics.json +221 -0
  97. package/resources/fonts/aptos-display-italic.rows.json +8 -0
  98. package/resources/fonts/aptos-display-regular.hinted.json +125 -0
  99. package/resources/fonts/aptos-display-regular.metrics.json +221 -0
  100. package/resources/fonts/aptos-display-regular.rows.json +8 -0
  101. package/resources/fonts/aptos-italic.hinted.json +125 -0
  102. package/resources/fonts/aptos-italic.metrics.json +221 -0
  103. package/resources/fonts/aptos-italic.rows.json +8 -0
  104. package/resources/fonts/aptos-narrow-bold-italic.hinted.json +125 -0
  105. package/resources/fonts/aptos-narrow-bold-italic.metrics.json +221 -0
  106. package/resources/fonts/aptos-narrow-bold-italic.rows.json +8 -0
  107. package/resources/fonts/aptos-narrow-bold.hinted.json +125 -0
  108. package/resources/fonts/aptos-narrow-bold.metrics.json +221 -0
  109. package/resources/fonts/aptos-narrow-bold.rows.json +8 -0
  110. package/resources/fonts/aptos-narrow-italic.hinted.json +125 -0
  111. package/resources/fonts/aptos-narrow-italic.metrics.json +221 -0
  112. package/resources/fonts/aptos-narrow-italic.rows.json +8 -0
  113. package/resources/fonts/aptos-narrow-regular.hinted.json +125 -0
  114. package/resources/fonts/aptos-narrow-regular.metrics.json +221 -0
  115. package/resources/fonts/aptos-narrow-regular.rows.json +8 -0
  116. package/resources/fonts/aptos-regular.hinted.json +125 -0
  117. package/resources/fonts/aptos-regular.metrics.json +221 -0
  118. package/resources/fonts/aptos-regular.rows.json +8 -0
  119. package/resources/fonts/arial-bold-italic.rows.json +0 -1
  120. package/resources/fonts/arial-bold.rows.json +0 -1
  121. package/resources/fonts/arial-italic.rows.json +0 -1
  122. package/resources/fonts/arial-regular.rows.json +0 -1
  123. package/resources/fonts/calibri-bold-italic.rows.json +0 -1
  124. package/resources/fonts/calibri-bold.rows.json +0 -1
  125. package/resources/fonts/calibri-italic.rows.json +0 -1
  126. package/resources/fonts/calibri-regular.rows.json +0 -1
  127. package/resources/fonts/cambria-bold-italic.rows.json +0 -1
  128. package/resources/fonts/cambria-bold.rows.json +0 -1
  129. package/resources/fonts/cambria-italic.rows.json +0 -1
  130. package/resources/fonts/cambria-regular.rows.json +0 -1
  131. package/resources/fonts/contents.json +240 -0
  132. package/resources/fonts/courier-new-bold-italic.rows.json +0 -1
  133. package/resources/fonts/courier-new-bold.rows.json +0 -1
  134. package/resources/fonts/courier-new-italic.rows.json +0 -1
  135. package/resources/fonts/courier-new-regular.rows.json +0 -1
  136. package/resources/fonts/times-new-roman-bold-italic.rows.json +0 -1
  137. package/resources/fonts/times-new-roman-bold.rows.json +0 -1
  138. package/resources/fonts/times-new-roman-italic.rows.json +0 -1
  139. package/resources/fonts/times-new-roman-regular.rows.json +0 -1
  140. package/resources/locales/de/model.msg.json +12 -2
  141. package/resources/locales/en/model.msg.json +13 -2
  142. package/types/scripting-api.json +10638 -10446
  143. package/types/scripting-enums.json +20 -1
  144. package/types/scripting.d.ts +1536 -477
  145. package/types/src/.generated/wasm/sdk.d.ts +5 -27
  146. package/types/src/address/AddressUtils.d.ts +8 -0
  147. package/types/src/address/_SheetNameQuoteChars.d.ts +3 -0
  148. package/types/src/{sheet → anomalies}/_Anomalies.d.ts +3 -3
  149. package/types/src/anomalies/_FocusTable.d.ts +5 -0
  150. package/types/src/{sheet/_AnomalyFormulaChecks.d.ts → anomalies/_FormulaChecks.d.ts} +10 -2
  151. package/types/src/{sheet/_AnomalyLabelChecks.d.ts → anomalies/_LabelChecks.d.ts} +1 -1
  152. package/types/src/anomalies/_LiteralChecks.d.ts +35 -0
  153. package/types/src/anomalies/_SeriesChecks.d.ts +13 -0
  154. package/types/src/calculation/Calculation.d.ts +61 -98
  155. package/types/src/calculation/ExternalBookBindings.d.ts +2 -29
  156. package/types/src/calculation/ICalculation.d.ts +96 -9
  157. package/types/src/calculation/NamedFormulaCollection.d.ts +110 -10
  158. package/types/src/calculation/TokenType.d.ts +0 -10
  159. package/types/src/calculation/_CloneBoundary.d.ts +0 -24
  160. package/types/src/calculation/_FormulaToolkit.d.ts +0 -5
  161. package/types/src/calculation/compiler/ASTTypes.d.ts +6 -15
  162. package/types/src/calculation/compiler/CompilerUtils.d.ts +0 -227
  163. package/types/src/calculation/compiler/FormulaLexer.d.ts +0 -8
  164. package/types/src/calculation/compiler/FormulaParser.d.ts +0 -61
  165. package/types/src/calculation/compiler/ParserUtils.d.ts +0 -24
  166. package/types/src/calculation/compiler/Types.d.ts +1 -45
  167. package/types/src/calculation/engine/CalcBackend.d.ts +83 -127
  168. package/types/src/calculation/engine/index.d.ts +0 -8
  169. package/types/src/calculation/executor/CalcExecutor.d.ts +50 -116
  170. package/types/src/calculation/executor/CalcExecutorUtils.d.ts +47 -12
  171. package/types/src/calculation/executor/CircularReference.d.ts +0 -17
  172. package/types/src/calculation/executor/_BlockOrder.d.ts +29 -0
  173. package/types/src/calculation/executor/_WhatIf.d.ts +31 -0
  174. package/types/src/calculation/formula/FormulaBlock.d.ts +4 -31
  175. package/types/src/calculation/formula/FormulaRecordView.d.ts +0 -15
  176. package/types/src/calculation/formula/IFormulaBlock.d.ts +5 -12
  177. package/types/src/calculation/formula/LambdaValue.d.ts +0 -15
  178. package/types/src/calculation/formula/TokenUtils.d.ts +1 -8
  179. package/types/src/calculation/functions/_DataTableFunction.d.ts +14 -0
  180. package/types/src/calculation/grid/CalcGrid.d.ts +8 -64
  181. package/types/src/calculation/grid/CalcGridBackend.d.ts +12 -35
  182. package/types/src/calculation/grid/CalcGridProxy.d.ts +0 -15
  183. package/types/src/calculation/grid/CalcGridUtils.d.ts +21 -23
  184. package/types/src/calculation/grid/ICalcGrid.d.ts +28 -109
  185. package/types/src/calculation/grid/_CalcRequest.d.ts +17 -33
  186. package/types/src/calculation/spatial/CircularEntry.d.ts +0 -10
  187. package/types/src/calculation/spatial/FormulaSpatialValue.d.ts +54 -82
  188. package/types/src/calculation/spatial/SpillEntry.d.ts +20 -3
  189. package/types/src/calculation/state/CalcNode.d.ts +0 -1
  190. package/types/src/calculation/state/CalcScope.d.ts +29 -9
  191. package/types/src/calculation/state/CalcState.d.ts +19 -9
  192. package/types/src/calculation/state/CalculationContext.d.ts +32 -38
  193. package/types/src/calculation/state/DeferredCalls.d.ts +207 -0
  194. package/types/src/calculation/state/IContextContainer.d.ts +19 -55
  195. package/types/src/calculation/state/_KeepBlanks.d.ts +5 -0
  196. package/types/src/calculation/state/_PendingOverlayGrid.d.ts +52 -33
  197. package/types/src/calculation/state/_WhatIfLayer.d.ts +77 -0
  198. package/types/src/calculation/symbol/ExternalSheetSymbols.d.ts +0 -42
  199. package/types/src/calculation/symbol/ISymbolRegistry.d.ts +0 -6
  200. package/types/src/calculation/symbol/SheetSymbolProvider.d.ts +0 -12
  201. package/types/src/calculation/symbol/SymbolRegistry.d.ts +0 -9
  202. package/types/src/calculation/toolkit/index.d.ts +0 -8
  203. package/types/src/cell/ICell.d.ts +59 -54
  204. package/types/src/cellControl/CellControl.d.ts +67 -0
  205. package/types/src/cellControl/CellControlCollection.d.ts +29 -0
  206. package/types/src/cellControl/CellControlRegistry.d.ts +47 -0
  207. package/types/src/cellControl/ICellControl.d.ts +99 -0
  208. package/types/src/cellControl/ICellControlCollection.d.ts +67 -0
  209. package/types/src/cellControl/index.d.ts +4 -0
  210. package/types/src/cellRange/ICellRange.d.ts +226 -67
  211. package/types/src/cellRange/ICellRanges.d.ts +4 -3
  212. package/types/src/chart/Chart.d.ts +0 -16
  213. package/types/src/chart/_ChartParts.d.ts +0 -39
  214. package/types/src/chart/_ChartSource.d.ts +0 -14
  215. package/types/src/chart/createChart.d.ts +1 -1
  216. package/types/src/chart/kinds/ChartKind.d.ts +4 -4
  217. package/types/src/chart/kinds/_Placeholder.d.ts +0 -1
  218. package/types/src/chart/layout/ChartLayout.d.ts +5 -1
  219. package/types/src/chart/layout/TextMeasurer.d.ts +0 -20
  220. package/types/src/chart/layout/_LayoutUtils.d.ts +0 -16
  221. package/types/src/chart/math/BoxStats.d.ts +0 -8
  222. package/types/src/chart/math/DateUnitCalcs.d.ts +0 -10
  223. package/types/src/chart/math/Histogram.d.ts +0 -17
  224. package/types/src/chart/math/OrdUnitCalcs.d.ts +0 -53
  225. package/types/src/chart/math/Treemap.d.ts +0 -15
  226. package/types/src/chart/math/Trendlines.d.ts +0 -8
  227. package/types/src/chart/math/UnitCalcs.d.ts +0 -22
  228. package/types/src/chart/model/_Edits.d.ts +0 -33
  229. package/types/src/chart/model/_Grouping.d.ts +0 -25
  230. package/types/src/chart/model/_Inference.d.ts +0 -18
  231. package/types/src/chart/model/_NewChart.d.ts +0 -41
  232. package/types/src/chart/model/_OfPie.d.ts +0 -7
  233. package/types/src/chart/resolve/_LegacyStyles.d.ts +0 -20
  234. package/types/src/chart/resolve/_Resolve.d.ts +3 -12
  235. package/types/src/chart/resolve/_ResolvedChart.d.ts +5 -8
  236. package/types/src/collections/ISparseGrid.d.ts +11 -2
  237. package/types/src/collections/MixedTypedArrayList.d.ts +8 -2
  238. package/types/src/collections/SparseGrid.d.ts +3 -8
  239. package/types/src/collections/_GridUtils.d.ts +0 -10
  240. package/types/src/comment/_NoteBox.d.ts +0 -15
  241. package/types/src/condition/AnchoredConditional.d.ts +3 -25
  242. package/types/src/condition/BuiltInOperators/AbstractOperator.d.ts +0 -49
  243. package/types/src/condition/BuiltinSelectors/DisplaySelector.d.ts +0 -10
  244. package/types/src/condition/ICondition.d.ts +2 -2
  245. package/types/src/condition/_ConditionUtils.d.ts +0 -38
  246. package/types/src/externalBook/ExternalBookCollection.d.ts +0 -15
  247. package/types/src/externalBook/ExternalBookName.d.ts +2 -3
  248. package/types/src/externalBook/IExternalBook.d.ts +16 -18
  249. package/types/src/fetch/Fetcher.d.ts +15 -0
  250. package/types/src/fetch/IFetcher.d.ts +48 -0
  251. package/types/src/fetch/_WorkbookFetch.d.ts +43 -0
  252. package/types/src/fetch/index.d.ts +3 -0
  253. package/types/src/fill/PaintUtils.d.ts +3 -1
  254. package/types/src/font/AdvanceTable.d.ts +16 -42
  255. package/types/src/font/IFont.d.ts +32 -9
  256. package/types/src/font/TableFileAdvanceBuilder.d.ts +6 -3
  257. package/types/src/font/_FontUtils.d.ts +0 -8
  258. package/types/src/font/_StandIns.d.ts +33 -0
  259. package/types/src/hyperlink/IHyperlink.d.ts +10 -0
  260. package/types/src/hyperlink/_Hyperlink.d.ts +4 -1
  261. package/types/src/index.d.ts +2 -1
  262. package/types/src/io/IWorkbookIO.d.ts +3 -3
  263. package/types/src/io/WorkbookOrigin.d.ts +2 -2
  264. package/types/src/license/LicenseManager.d.ts +2 -1
  265. package/types/src/license/_Utils.d.ts +4 -3
  266. package/types/src/license/details.d.ts +3 -1
  267. package/types/src/license/keys.d.ts +6 -0
  268. package/types/src/license/license-key.d.ts +15 -33
  269. package/types/src/license/token.d.ts +55 -0
  270. package/types/src/named/INamedCollection.d.ts +36 -0
  271. package/types/src/named/NamedCollection.d.ts +18 -0
  272. package/types/src/picture/IPicture.d.ts +45 -0
  273. package/types/src/picture/Picture.d.ts +12 -0
  274. package/types/src/pivot/PivotTable.d.ts +0 -7
  275. package/types/src/primitives/AsyncValue.d.ts +46 -0
  276. package/types/src/primitives/PrimitiveUtils.d.ts +1 -110
  277. package/types/src/primitives/Range.d.ts +0 -60
  278. package/types/src/primitives/ScalarCollation.d.ts +0 -106
  279. package/types/src/primitives/stats/AggregateStats.d.ts +0 -19
  280. package/types/src/print/PageLayout.d.ts +0 -6
  281. package/types/src/reference/ReferenceUtils.d.ts +4 -2
  282. package/types/src/resource/IResource.d.ts +9 -0
  283. package/types/src/resource/IResourceCollection.d.ts +4 -0
  284. package/types/src/resource/Resource.d.ts +2 -0
  285. package/types/src/resource/_AddResource.d.ts +13 -0
  286. package/types/src/richData/CellImage.d.ts +95 -0
  287. package/types/src/richData/Hyperlink.d.ts +49 -0
  288. package/types/src/richData/IRichDataCollection.d.ts +76 -0
  289. package/types/src/richData/IRichDataKind.d.ts +55 -11
  290. package/types/src/richData/RichArray.d.ts +42 -0
  291. package/types/src/richData/RichDataCollection.d.ts +23 -0
  292. package/types/src/richData/RichDataRegistry.d.ts +52 -14
  293. package/types/src/richData/RichDataValues.d.ts +20 -0
  294. package/types/src/richData/RichRecord.d.ts +68 -0
  295. package/types/src/richData/RichText.d.ts +5 -5
  296. package/types/src/richData/index.d.ts +6 -0
  297. package/types/src/scripting/FunctionArguments.d.ts +17 -1
  298. package/types/src/scripting/FunctionCollection.d.ts +8 -0
  299. package/types/src/scripting/Scripts.d.ts +10 -0
  300. package/types/src/scripting/TypedFunction.d.ts +2 -109
  301. package/types/src/sheet/ICellContainerOptions.d.ts +6 -0
  302. package/types/src/sheet/IWorksheet.d.ts +26 -22
  303. package/types/src/sheet/NamedCellRange.d.ts +0 -21
  304. package/types/src/sheet/SheetCell.d.ts +25 -3
  305. package/types/src/sheet/SheetRange.d.ts +8 -2
  306. package/types/src/sheet/SheetRanges.d.ts +2 -2
  307. package/types/src/sheet/Worksheet.d.ts +117 -104
  308. package/types/src/sheet/_DelimitedText.d.ts +13 -0
  309. package/types/src/sheet/_IgnoredErrors.d.ts +0 -12
  310. package/types/src/sheet/_ListenerAnchor.d.ts +7 -1
  311. package/types/src/sheet/_ScalarListFactory.d.ts +46 -17
  312. package/types/src/sheet/_SheetCoords.d.ts +0 -7
  313. package/types/src/sheet/_SheetFilterUtils.d.ts +0 -8
  314. package/types/src/sheet/_SheetMutations.d.ts +4 -1
  315. package/types/src/sheet/_SheetStateReader.d.ts +0 -10
  316. package/types/src/sheet/_SheetStateTypes.d.ts +23 -14
  317. package/types/src/sheet/_SheetUtils.d.ts +1 -1
  318. package/types/src/sheet/style/_RowLine.d.ts +32 -0
  319. package/types/src/sheet/style/_StyleUtils.d.ts +6 -14
  320. package/types/src/sheetView/_SheetViewUtils.d.ts +0 -1
  321. package/types/src/slicer/_BuiltInSlicerStyles.d.ts +0 -5
  322. package/types/src/style/ICellStyle.d.ts +4 -0
  323. package/types/src/table/AnchoredTable.d.ts +0 -147
  324. package/types/src/text/TextFrame.d.ts +4 -1
  325. package/types/src/text/TextStacked.d.ts +0 -24
  326. package/types/src/text/TextWrapper.d.ts +3 -5
  327. package/types/src/text/_LineBox.d.ts +24 -0
  328. package/types/src/text/_TextUtils.d.ts +5 -2
  329. package/types/src/text/_TextWrapperFallback.d.ts +2 -1
  330. package/types/src/wasm/sdkWasm.d.ts +1 -1
  331. package/types/src/workbook/IWorkbook.d.ts +40 -1
  332. package/types/src/workbook/Workbook.d.ts +25 -13
  333. package/types/src/workbook/WorkbookRanges.d.ts +1 -1
  334. package/browser/esm/BGOFfpxr2jPIdqmV.mjs +0 -40
  335. package/browser/esm/BLoUBId2xZpXAK_H.mjs +0 -698
  336. package/browser/esm/C5E6zSGAALWf61n4.mjs +0 -199
  337. package/browser/esm/S2dNNx1a5ydRnARM.mjs +0 -367
  338. package/browser/esm/f1IoRb7tEb0QmCSt.mjs +0 -110
  339. package/browser/esm/gssVX_FH1XFN-twD.mjs +0 -210
  340. package/node/esm/BrCKGFRsX_ezFJ4B.mjs +0 -811
  341. package/node/esm/DOU54VsOjG-m-NyQ.mjs +0 -210
  342. package/node/esm/Db0v7zXNnyjBIjjI.mjs +0 -372
  343. package/node/esm/Df1bL6VFvrqIdSLB.mjs +0 -40
  344. package/node/esm/DrTZbfemSLq2mseG.mjs +0 -111
  345. package/types/src/dataTable/DataTable.d.ts +0 -67
  346. package/types/src/dataTable/DataTableCollection.d.ts +0 -19
  347. package/types/src/dataTable/IDataTable.d.ts +0 -99
  348. package/types/src/dataTable/IDataTableCollection.d.ts +0 -18
  349. package/types/src/dataTable/index.d.ts +0 -6
@@ -60,6 +60,51 @@ export interface IPicture extends IModel, IMovable.IContent {
60
60
  * ```
61
61
  */
62
62
  setShapeType(shapeType: IGeometry.Preset | string, options?: ITransaction.OperationOptions): this;
63
+ /**
64
+ * Returns the shape's outline at a size, for drawing the picture cropped to its shape.
65
+ *
66
+ * @param width The frame's width in pixels. Defaults to the movable's.
67
+ * @param height The frame's height in pixels. Defaults to the movable's.
68
+ * @returns `null` for a preset this SDK does not know, or for a picture with no movable and no size.
69
+ */
70
+ getGeometry(width?: number, height?: number): Promise<IGeometry | null>;
71
+ /**
72
+ * Returns the part of the image shown, as percentages of the image's size inset from each edge.
73
+ *
74
+ * @remarks
75
+ * An edge not cropped is absent, so an uncropped picture answers `{}`. A negative inset shows empty
76
+ * space beyond that edge of the image, which is how a picture fits inside a frame of another shape.
77
+ */
78
+ getCrop(): IFill.RectInsets;
79
+ /**
80
+ * Sets the part of the image shown. The frame stays as it is, so the part shown is stretched over
81
+ * it; to keep the image's scale, change the frame with {@link IMovable.setBounds} as well.
82
+ *
83
+ * @param crop Percentages of the image's size, inset from each edge; `null` shows the whole image.
84
+ * @throws ExpectedError when the insets leave nothing to show.
85
+ *
86
+ * @example
87
+ * ```ts
88
+ * picture.setCrop({ left: 10, right: 10 });
89
+ * ```
90
+ */
91
+ setCrop(crop: IFill.RectInsets | null, options?: ITransaction.OperationOptions): this;
92
+ /**
93
+ * Returns the hyperlink a click on the picture follows, or `null` for none.
94
+ */
95
+ getHyperlink(): IHyperlink | null;
96
+ /**
97
+ * Sets the hyperlink a click on the picture follows.
98
+ *
99
+ * @param hyperlink An address, the link's properties, or `null` to remove it. An address takes the
100
+ * form a cell's does: a url, or `#Sheet1!A1` for a location in this workbook.
101
+ *
102
+ * @example
103
+ * ```ts
104
+ * picture.setHyperlink('https://www.sheetxl.com');
105
+ * ```
106
+ */
107
+ setHyperlink(hyperlink: IHyperlink.Update, options?: ITransaction.OperationOptions): this;
63
108
  /**
64
109
  * What the picture's frame draws with: the fill behind the image and the border around it.
65
110
  * A picture has no theme style, so each is only what the picture states; by default neither
@@ -1,6 +1,8 @@
1
1
  import { ITransaction } from '../transaction';
2
2
  import { IResource, IResourceCollection } from '../resource';
3
3
  import { IAnchored } from '../anchored';
4
+ import { IFill } from '../fill';
5
+ import { IHyperlink } from '../hyperlink';
4
6
  import { IMovable } from '../movable/IMovable';
5
7
  import { AbstractMovableContent } from '../movable/AbstractMovableContent';
6
8
  import { IGeometry, IShapeStyle } from '../shape';
@@ -32,6 +34,16 @@ export declare class Picture extends AbstractMovableContent<State, IPicture.JSON
32
34
  getShapeType(): string;
33
35
  /** {@inheritDoc IPicture.setShapeType} */
34
36
  setShapeType(shapeType: IGeometry.Preset | string, options?: ITransaction.OperationOptions): this;
37
+ /** {@inheritDoc IPicture.getGeometry} */
38
+ getGeometry(width?: number, height?: number): Promise<IGeometry | null>;
39
+ /** {@inheritDoc IPicture.getCrop} */
40
+ getCrop(): IFill.RectInsets;
41
+ /** {@inheritDoc IPicture.setCrop} */
42
+ setCrop(crop: IFill.RectInsets | null, options?: ITransaction.OperationOptions): this;
43
+ /** {@inheritDoc IPicture.getHyperlink} */
44
+ getHyperlink(): IHyperlink | null;
45
+ /** {@inheritDoc IPicture.setHyperlink} */
46
+ setHyperlink(hyperlink: IHyperlink.Update, options?: ITransaction.OperationOptions): this;
35
47
  /** {@inheritDoc IPicture.getStyle} */
36
48
  getStyle(): IShapeStyle;
37
49
  /** Writes what the picture states of its fill and border: a key `undefined` is removed. */
@@ -38,13 +38,6 @@ export declare class PivotTable extends AbstractAnchored<State, IPivotTable.Even
38
38
  getCacheId(): number;
39
39
  /** {@inheritDoc IPivotTable.toJSON} */
40
40
  toJSON(toResourceId?: (resource: IResource) => number | null): IPivotTable.JSON | null;
41
- /**
42
- * Excel's rule, from `pivot-probes/probe-pivot-structural.ps1` (2026-10-15): the table moves
43
- * whole or goes whole. A shift that would split it or change its extent - a row or column cut
44
- * through it, an insert inside it, a shift of some of its columns - is refused with Excel's own
45
- * refusal, as a user error, before anything of the edit commits.
46
- * @internal
47
- */
48
41
  protected _processContainerShift(options: Anchored.ShiftOptions): IRange.Coords | null | void;
49
42
  /** @internal */
50
43
  protected _getActionDescription(action: 'delete' | 'initialize' | 'updateListener'): string | null;
@@ -0,0 +1,46 @@
1
+ import { IRange, Scalar } from '@sheetxl/primitives';
2
+ /**
3
+ * Whether any holder has been made in this process: what gates the value layer's reads (a range,
4
+ * the stats walks), which cannot ask a backend. Until the first `defer`, they pay nothing.
5
+ */
6
+ export declare const holdersMade: () => boolean;
7
+ /**
8
+ * How many times a call's latest has moved in this process. A settle writes nothing into a grid,
9
+ * so a cache keyed on a run that holds holders is stamped with this and stands only while it holds.
10
+ */
11
+ export declare const settleCount: () => number;
12
+ /** Records that a call's latest moved. */
13
+ export declare const noteSettle: () => void;
14
+ export declare class AsyncValue<C extends AsyncValue.Call = AsyncValue.Call> {
15
+ /**
16
+ * What the formula calculated, from its calls' initials. A range for an evaluation that
17
+ * spilled: that holder rides the spill's entry, never a cell, and no cell reads it.
18
+ */
19
+ readonly value: Scalar | IRange;
20
+ /** The calls the formula made, by ordinal. */
21
+ readonly calls: readonly C[];
22
+ /** The formula's root is its only call: the cell reads as that call's latest once it has one. */
23
+ readonly direct: boolean;
24
+ constructor(value: Scalar | IRange, calls: readonly C[], direct: boolean);
25
+ /** The brand every recognizing site reads. */
26
+ get isAsyncValue(): true;
27
+ }
28
+ export declare namespace AsyncValue {
29
+ /** What a holder reads of a call. */
30
+ interface Call {
31
+ /** The most recent result; `undefined` until one arrives. */
32
+ readonly latest: unknown;
33
+ }
34
+ }
35
+ /** Whether `value` is an {@link AsyncValue}. */
36
+ export declare const isAsyncValue: (value: unknown) => value is AsyncValue;
37
+ /**
38
+ * `value` as a reader sees it: a holder reads as its root call's latest when `direct` and the call
39
+ * has one, else as what the formula calculated. Anything else is itself.
40
+ *
41
+ * @remarks
42
+ * A blank latest reads as `0`, as a formula's blank result is stored (`finalizeValue`): the
43
+ * latest is the cell's value and was never finalized.
44
+ */
45
+ export declare const readAsync: <T = Scalar>(value: T) => T | Scalar | IRange;
46
+ //# sourceMappingURL=AsyncValue.d.ts.map
@@ -36,46 +36,9 @@ export declare function maxGetEntireCoords(): IRange.Coords;
36
36
  */
37
37
  export declare const typeFromJsValue: (jsV: InteropScalar, checkDate?: boolean) => ScalarType;
38
38
  export declare function valueTypeToString(type: IFunction.ValueTypeJSON): string;
39
- /**
40
- * The largest magnitude Excel will PARSE from text or a formula literal — the biggest
41
- * 15-significant-digit value below 1E+308. Measured (formula-tests/probe-boundaries.ps1):
42
- * `=9.99999999999999E+307` commits, `=1.00000000000000E+308` is refused outright.
43
- *
44
- * An ENTRY rule only. Computed results are bounded by the double, not by this — `8.9E+307*2`
45
- * = 1.78E+308 is far past it and Excel keeps, compares and round-trips the value happily.
46
- */
47
39
  export declare const EXCEL_MAX_NUMBER = 9.99999999999999e+307;
48
- /**
49
- * Renders a number the way Excel coerces one to TEXT (`&`, CONCAT, `LEFT(1/3,5)`, ...).
50
- *
51
- * This is NOT display "General" (that one is column-width-aware and caps at ~11 digits —
52
- * `numfmt` implements it). Coercion General, measured against Excel 16.0
53
- * (`spreadsheetbench/formula-tests/probe-general-coercion.ps1`):
54
- *
55
- * 1. round to 15 significant digits, trim trailing fraction zeros (`0.1+0.2` → `0.3`,
56
- * `2^0.5` → `1.4142135623731`);
57
- * 2. write the plain decimal expansion if it fits in 20 characters, sign excluded
58
- * (`1/3*1E-3` → `0.000333333333333333` at exactly 20; `2^60` → `1152921504606850000`,
59
- * integers pad with zeros);
60
- * 3. otherwise scientific with a two-digit-minimum exponent (`1E+20`, `3.33333333333333E-05` —
61
- * note `-99999999999999900000` is still decimal, but `1E+20` is not);
62
- * 4. the DECIMAL SEPARATOR is the workbook locale's (`probe-general-locale.ps1`: `="" & 1.5`
63
- * is `1,5` once Excel's decimal separator is `,`). Only that one separator moves —
64
- * coercion never groups, so `1234.5` is `1234,5` and never `1.234,5`.
65
- *
66
- * This cannot route to `numfmt`: its `General` is the display one, its 11-character budget is
67
- * not configurable (there is no precision option on `FormatOptions`), and "15 significant
68
- * digits capped at 20 characters" is not expressible as an ECMA-376 pattern either —
69
- * `0.##############` counts decimal PLACES, not significant digits.
70
- *
71
- * Formula modules reach this as `IFormulaContext.toText`, which is the only entry point that
72
- * also handles non-numbers; this is the number-only form the coercion paths use.
73
- *
74
- * @param value The number to render.
75
- * @param runtime Supplies the locale profile. `IRuntime.getLocaleProfile` is the single
76
- * authority for separators — never derive one independently.
77
- */
78
40
  export declare function formatNumberGeneral(value: number, runtime: IRuntime): string;
41
+ export declare function formatNumberLiteral(value: number, decimal?: string): string;
79
42
  /**
80
43
  * Renders any scalar the way Excel coerces one to TEXT — the full
81
44
  * {@link IFormulaContext.toText} rule, of which {@link formatNumberGeneral} is the number
@@ -135,38 +98,6 @@ noMemberFilter?: boolean): void | FormulaError.Known;
135
98
  export declare function convertTo2D(context: IFormulaContext, currentArg: any, // IRange or coords
136
99
  rangeType: string | null, scalarType: ScalarType | null, // the scalar preference. If not specified no coercion will occur.
137
100
  isDirect: boolean, errors?: 'reject' | 'accept' | null): IRange | any[][] | FormulaError.Known;
138
- /**
139
- * This will coerce a value and add it to the coercedArr. This is used in the argument coercion of typed functions.
140
- *
141
- * CoercedValues behave in special ways
142
- *
143
- * 1. If a value is *direct* (a scalar, whether typed or computed) it always coerces to the type.
144
- * 2. If a value is a MEMBER of an array or a reference
145
- * a. It ignores everything except like values and errors
146
- * 3. We then coerce to Ranges.
147
- *
148
- * `isDirect` is Excel's "the argument itself" vs "a member of a container" distinction —
149
- * `SUM(1,TRUE)` is `2` but `SUM({1,TRUE})` is `1`. Callers derive it from the runtime shape of the
150
- * evaluated argument; see `isDirectArg` in `TypedFunction`.
151
- *
152
- * Two things it is NOT, both measured (`probe-direct-vs-literal.ps1`, pinned in
153
- * `__tests__/functions/coercion/DIRECT-VS-MEMBER.json`):
154
- *
155
- * - **Not literalness.** `{1,TRUE}` and `A1:A2` behave IDENTICALLY (members of both are filtered),
156
- * and the COMPUTED `A2>0` behaves like a typed `TRUE`. A container being a literal or a
157
- * reference changes nothing anywhere in the matrix.
158
- * - **Not a property of the argument alone.** Membership requires a slot that CONSUMES members:
159
- * a scalar parameter takes one value, so a single-cell reference reaching it is dereferenced and
160
- * IS the argument (`ABS(A1)` and `MONTH(A1)` are 1 with A1=TRUE, while `SUM(A1)` is 0). Hence
161
- * `isMember` below is `!isDirect && flatten`, not `!isDirect`.
162
- *
163
- * The two halves at an aggregating slot: DIRECT arguments are COERCED (and a bad one errors —
164
- * `SUM(1,"7e")` is `#VALUE!`), MEMBERS are TYPE-FILTERED (skipped silently, never coerced —
165
- * `SUM({1,"7","7e","TRUE",TRUE})` is `1`).
166
- *
167
- * Some Built-in excel functions behave differently. When this occurs
168
- * the use an argument type of Scalar (no coerce) and manage themselves
169
- */
170
101
  export declare function addCoercedValue(context: IFormulaContext, coercedArr: FixedPackedArray | Scalar[], currentArg: any, isDirect: boolean, rangeType: 'p' | 'r' | 'm' | null, scalarType: ScalarType | null, // the scalar preference. If not specified then no coercion will occur.
171
102
  allowError: boolean, flatten: boolean, // indicates we should flatten
172
103
  errors?: 'reject' | 'accept' | null, // effective error policy (TypedFunction resolves the default)
@@ -187,39 +118,7 @@ export declare function addCoercedScalar(context: IFormulaContext, coercedArr: F
187
118
  /**
188
119
  * Minimal validation used from the return value of functions.
189
120
  */
190
- /**
191
- * Makes a raw JS double look like an Excel one: ANY non-finite value is #NUM! — NaN and
192
- * ±Infinity alike. `9E+307*2`, `9E+307+9E+307` and `9E+307/0.1` all report `ERROR.TYPE` 6, and a
193
- * raw NaN or ±Infinity written through the Value2 API lands as #NUM! too. Infinity does NOT mean
194
- * #DIV/0!: Excel never derives that error from a float, it raises it deliberately before
195
- * dividing. Functions say so themselves by returning `FormulaError.BuiltIn.Div0`.
196
- *
197
- * Measured against Excel 16.0 (formula-tests: probe-num-overflow.ps1, probe-boundaries.ps1,
198
- * probe-api-nonfinite.ps1). This rule applies at every boundary; the SUBNORMAL rule does not —
199
- * see {@link flushSubnormal}.
200
- */
201
121
  export declare function normalizeNumber(value: number): number | FormulaError.Known;
202
- /**
203
- * Zeroes a magnitude below the smallest NORMAL double, which also folds -0 to 0.
204
- *
205
- * "Excel has no subnormals" is true of its ARITHMETIC and of its write path, and false of its
206
- * function results — so this is a rule three callers apply deliberately rather than one the
207
- * boundary applies to everything (measured 2026-08-30,
208
- * `fn-battery/mathTrig/adhoc-subnormal-store`):
209
- *
210
- * * MULTIPLICATION, DIVISION and EXPONENTIATION flush. `1E-300*2.224E-8` is 0 while
211
- * `1E-300*2.226E-8` survives, `2^-1022/2` is 0, and the flush lands before the next operator
212
- * reads it — `=1/(1E-300*1E-100)` is #DIV/0!, not a huge number.
213
- * * ADDITION and SUBTRACTION do NOT. With `Z1` holding 5E-324, `Z1+0`, `-Z1` and `Z1+Z1` all
214
- * keep the value, and `Z1*1` is 0.
215
- * * A FUNCTION RESULT does not either, and it survives the cell it is stored in: `EXP(-745)` is
216
- * 5E-324 and `EXP(-745)*1E300` is 4.94E-24. SUM, MIN, ABS, IF, INDEX and ROUND all pass it
217
- * through. EXP reaches zero only below -745.1332, the true IEEE underflow.
218
- * * The API WRITE path flushes: `Double.Epsilon` set through `Value2` reads back 0.
219
- * * The BOOLEAN reading flushes, and so does `SWITCH`'s comparison — both are tests against zero
220
- * (`IF(EXP(-745),…)` takes the false branch and `SWITCH(EXP(-745),0,…)` matches), which the
221
- * comparison OPERATORS do not do: `EXP(-745)=0` is FALSE.
222
- */
223
122
  export declare function flushSubnormal(value: number): number;
224
123
  export declare function minCoerce(value: any, context?: IFormulaContext | null, type?: string): any;
225
124
  /**
@@ -281,14 +180,6 @@ export declare const BooleanCoerceTypes: readonly InteropScalarType[];
281
180
  * `date` has to coerce from number, or every date function over a range matches nothing at all.
282
181
  */
283
182
  export declare const DateCoerceTypes: readonly InteropScalarType[];
284
- /**
285
- * What a `null` read accepts. Coercing TO `null` asks for each value's empty equivalent — `0`,
286
- * `''`, `false` — which is exactly what the branch in {@link createCoerceScalarFn} already
287
- * implemented, and which was unreachable for the same reason `date`'s was (CALC-ISSUES §14 H2).
288
- *
289
- * Not reachable from a declaration — `TypedFunction` normalizes a `null` scalar param to "no
290
- * type" — so this serves a direct `toType(ScalarType.Null)` caller.
291
- */
292
183
  export declare const NullCoerceTypes: readonly InteropScalarType[];
293
184
  export declare const AllScalarTypes: readonly InteropScalarType[];
294
185
  //# sourceMappingURL=PrimitiveUtils.d.ts.map
@@ -18,29 +18,6 @@ export declare class Range<T extends Scalar = Scalar> implements IRange<T> {
18
18
  protected _localRangeStats: IRangeStats | null;
19
19
  /** The `options` {@link _localRangeStats} was built for — the memo's key. See `getStats`. */
20
20
  protected _localRangeStatsOptions: IRange.IteratorOptions | undefined;
21
- /**
22
- * What a cell the grid does not store reads as - `null` for an ordinary range.
23
- *
24
- * @remarks
25
- * A grid can hold only part of its range's answer: a watch body's blank region shares one value
26
- * that the engine keeps on the block rather than writing per cell (PLAN-WATCHES-BLANK-AWARE
27
- * §4c), so within that body "absent" means "the shared answer", never "empty". A range with a
28
- * non-null empty value is therefore DENSE: `getValueAt` answers it for every absent cell, and
29
- * the iterators visit those cells whether or not `includeEmpty` was asked, since they are
30
- * content. A STORED empty (`null`) is still empty.
31
- *
32
- * It is also how an elementwise operation carries its answer for the blank cells: `map`,
33
- * `broadcast` and `zip` walk what their operands STORE, answer the absent region once, and
34
- * hand that answer to the result here rather than writing it as a run per line — so the next
35
- * operator finds the blank region again and a whole-column chain stays O(stored + runs)
36
- * (CALC-PERFORMANCE §5). `fillEmpty` over the whole range sets it the same way.
37
- *
38
- * Every reader agrees on it: the iterators and `getValueAt` above; a transform over the same
39
- * grid carries it (`slice`, `toType`, `clone`); one that derives a grid either writes every
40
- * position or writes it out first (`_materializeEmpty` — `resize`, `tile`, a partial `fill`);
41
- * and a reader that goes to the grid rather than through the range (the stats walk, the calc
42
- * grid's write of a result, a sheet write) reads the written-out grid.
43
- */
44
21
  protected _absentValue: Scalar;
45
22
  constructor(runtime: IRuntime, values: ISparseGrid<Scalar>, coords: IRange.Coords | null, optionsIterator?: IRange.IteratorOptions | null, isLiteral?: boolean, isDirectScalar?: boolean, absentValue?: Scalar);
46
23
  /** @inheritdoc IRange.argsort */
@@ -238,29 +215,6 @@ export declare class Range<T extends Scalar = Scalar> implements IRange<T> {
238
215
  * Returns self but accounts for literal status.
239
216
  */
240
217
  protected _self(): this;
241
- /**
242
- * Returns this range with its read type dropped, or `this` when there is nothing to drop.
243
- *
244
- * @remarks
245
- * For a range whose values are no longer the ones the type described — see `map`. `coerce` goes
246
- * with it: it is inert without a `type` (both `_entries` and `_coerceValue` gate on one), and
247
- * leaving it behind would let the SOURCE's coercion rules apply to a later `toType` on values
248
- * the source never held.
249
- *
250
- * **The contract, so this stays consistent.** A read type is a claim about the values a range
251
- * HOLDS. It survives exactly as long as those values do:
252
- *
253
- * | operation | type | why |
254
- * | --- | --- | --- |
255
- * | `map` · `broadcast` · `zip` | **dropped** | a callback produced new values; the range cannot know what they are. A caller that DOES know retypes after — `TypedFunction` does, from the declared return type. |
256
- * | `filter` · `slice` · `sort` · `resize` | **kept** | selection and rearrangement only. Every surviving member is one the source already held, so the claim is still true — a filtered `number` range is still a `number` range. |
257
- * | `replace` · `fillEmpty` · `fill` · `mask` | **kept** | substitution with CALLER-supplied values. Kept deliberately (these are overwhelmingly used to write same-typed values), but it is the one row that is a judgement rather than a consequence: a caller that substitutes a differently-typed value re-reads it through the old type. Unaudited; no instance found.
258
- *
259
- * Note this is NOT "any operation returning a range drops its type" — only the three that run
260
- * a callback do. Getting that wrong in either direction is a silent value bug: dropping too
261
- * eagerly loses `MONTH`'s number-ness, keeping too eagerly is CALC-ISSUES item 36
262
- * (`SUMPRODUCT(--ISNUMBER(SEARCH(...)))` → 0).
263
- */
264
218
  protected _untyped(): this;
265
219
  /** This range's options without its skips: for a result whose cells are laid out anew. */
266
220
  protected _optionsFresh(): Omit<IRange.IteratorOptions, 'axis'> & {
@@ -308,20 +262,6 @@ export declare class Range<T extends Scalar = Scalar> implements IRange<T> {
308
262
  /** @inheritdoc IRange.isIRange */
309
263
  get isIRange(): true;
310
264
  }
311
- /**
312
- * A `Range` whose `getCoords()`/shape is unchanged, but whose `getStats()` is rescoped to
313
- * `visibleCoords` — used by `condition/_ConditionUtils.ts` so `AverageOperator`/`TopNOperator`
314
- * get correct order-dependent Top N / Average semantics under a running filter mask
315
- * (`condition/DESIGN-FILTER.md` §2), via `RangeStats.toLocalCoords`.
316
- *
317
- * Lives here (rather than in `condition/`, where it's used) so `extends Range` is resolved by
318
- * plain source order within this file, not cross-module import order: `condition/` sits deep in
319
- * an import cycle that reaches back into `primitives/` through `PrimitiveUtils.ts` →
320
- * `sheet/_SheetUtils.ts` → … → `condition/Condition.ts`, and a top-level `extends Range` declared
321
- * in `condition/` can execute before that cycle has finished defining `Range`
322
- * (`ReferenceError: Cannot access 'Range' before initialization` — reproduced 2026-08-18 by
323
- * running the actual bundle; see git history).
324
- */
325
265
  export declare class _VisibleScopedRange extends Range {
326
266
  protected _visibleCoords: readonly IRange.Coords[];
327
267
  constructor(runtime: IRuntime, values: ISparseGrid<Scalar>, coords: IRange.Coords, visibleCoords: readonly IRange.Coords[]);
@@ -1,110 +1,4 @@
1
1
  import { Scalar, LocaleProfile } from '@sheetxl/primitives';
2
- /**
3
- * Excel's comparison rule for {@link Scalar} values, as one total order.
4
- *
5
- * @remarks
6
- * This is the rule behind `=`, `<>`, `<`, `<=`, `>`, `>=`, behind the criteria comparisons in
7
- * `COUNTIF`/`SUMIF`/`DSUM`, and behind `SORT`/`SORTBY`/`IRange.argsort`.
8
- *
9
- * ### Not public API
10
- *
11
- * `@sheetxl/primitives` declares the rule as `IFormulaContext.compare` and stubs it with a basic
12
- * ordering; THIS is the Excel one, and it is deliberately not exported from the package barrel.
13
- * Callers -- including `@sheetxl/formulas`, which sits BELOW this package and cannot import it at
14
- * all -- reach it by way of the calculation context they are handed, which is what binds the rule
15
- * to the workbook's locale. Only `CalculationContext` and the sort collators call in here directly;
16
- * anything reading the global `FormulaContext` singleton outside an installed scope gets the basic
17
- * ordering instead, which is a bug at the call site.
18
- *
19
- * ### Cross-type: rank, never coerce
20
- *
21
- * Excel does not coerce across types to compare; it ranks them, so **every** number is less than
22
- * **every** text, and every text is less than every logical:
23
- *
24
- * > `number` &lt; `text` &lt; `FALSE` &lt; `TRUE`
25
- *
26
- * Hence `=1<"0"` is `TRUE` and `="9">TRUE` is `FALSE`. Errors sort last here so the order stays
27
- * total. The OPERATORS never reach that case -- an error operand propagates before any comparison
28
- * happens -- but a criteria does: `COUNTIF(A1:A9,">=#N/A")` counts the `#N/A` rows, and the code
29
- * order below is Excel's, #NULL! &lt; #DIV/0! &lt; #VALUE! &lt; #REF! &lt; #NAME? &lt; #NUM! &lt;
30
- * #N/A (measured, `formula-tests/probe-criteria-empty-operand2.ps1`).
31
- *
32
- * A criteria does NOT rank across types the way an operator does, though: it only considers values
33
- * of the operand's own type, so `COUNTIF` with `"<TRUE"` counts no number even though `=1<TRUE` is
34
- * `TRUE`. That partition lives in `Criteria`, not here.
35
- *
36
- * ### Blank
37
- *
38
- * A blank cell takes the *other* operand's type -- `0`, `""`, or `FALSE` -- so `=A1=0`, `=A1=""`
39
- * and `=A1=FALSE` are all `TRUE` for an empty `A1`. Blank against blank is equal. (This is why
40
- * `ISBLANK` exists: no comparison can distinguish a blank from those three values.)
41
- *
42
- * ### Numbers
43
- *
44
- * Equal when they agree to 15 SIGNIFICANT digits -- the same clamp Excel uses for display, which
45
- * is what makes `=(0.1+0.2)=0.3` report `TRUE` while `=1E-12=2E-12` reports `FALSE`. Being
46
- * relative matters at both ends: `=2^60=1152921504606850000` is `TRUE` even though subtracting
47
- * them gives `-3072`. Excel forgives float noise at the COMPARISON, never in the arithmetic.
48
- *
49
- * ### Text
50
- *
51
- * Case-INSENSITIVE (`="PM"="pm"` is `TRUE`; `EXACT` is the case-sensitive form) and COLLATED in
52
- * the workbook locale, so `="a"<"B"` is `TRUE` and `="ä"<"z"` is `TRUE`. Accents and punctuation
53
- * are real differences: `="a"="ä"` and `="co-op"="coop"` are both `FALSE`.
54
- *
55
- * Case is folded OUT of the operands and the collator then runs at FULL strength, rather than the
56
- * collator being weakened to `sensitivity: 'accent'`. The two are not the same: in ICU, case, WIDTH
57
- * and KANA are all tertiary differences, so a strength low enough to ignore case also ties
58
- * fullwidth `A` with `A` -- which Excel does not (`probe-text-equality-nls.ps1`). Folding case
59
- * separately is the only way to ignore one tertiary difference and keep the others.
60
- *
61
- * The case toggle is therefore what a caller's `sensitivity` selects: `accent`/`base` fold, and
62
- * `variant`/`case` do not. That is the user-facing switch the **sort** feature exposes
63
- * (`Sort.CaseSensitiveOptions` / `LocaleProfile.collator`); the word sort below, the expansions,
64
- * and the collation locale are shared either way. Sort does use a different TYPE order (errors and
65
- * blanks last, blanks last even descending).
66
- *
67
- * ### Expansions
68
- *
69
- * A closed set of characters compares EQUAL to a letter sequence -- `="straße"="strasse"` and
70
- * `="æ"="ae"` are both `TRUE`, and so are the ligatures and the LJ/NJ/DZ digraphs. This is Windows
71
- * NLS behavior that ICU does not reproduce at any strength: at `accent` these are all unequal, and
72
- * at `base`, where they do fold, accents fold away with them. They are therefore rewritten before
73
- * collating, by `foldForCompare` in `./TextFold` -- which is also where the measured membership is
74
- * documented, and which `UNIQUE` shares for the hashing side of the same rule.
75
- *
76
- * ### Word sort
77
- *
78
- * On top of the collator, Excel applies the "word sort" its Sort dialog documents -- and, measured,
79
- * the operators apply it too. Dashes and apostrophes do not count when ordering; they only break a
80
- * tie, where the string carrying them sorts LAST:
81
- *
82
- * > `"coop"` &lt; `"co-op"` &lt; `"cop"`
83
- *
84
- * A plain collator gives `"co-op" < "coop"` instead (`-` outranks `o`), which is the bug this
85
- * exists to avoid. Equality is untouched -- the tiebreak never returns 0 for distinct strings, so
86
- * `="co-op"="coop"` stays `FALSE`. Other punctuation is ordinary and still sorts before letters
87
- * (`="a_b"<"ab"` is `TRUE`), which is why the collator stays non-ignorable.
88
- *
89
- * The ignorable set is the one Excel 16.0 actually uses, not a Unicode category -- notably U+2019
90
- * (the "smart" apostrophe Word autocorrects to) is NOT in it, while U+02BC is. See
91
- * `formula-tests/probe-wordsort.ps1`.
92
- *
93
- * ### Punctuation
94
- *
95
- * Every other mark is ordered by {@link _compareOrdered} rather than by the collator, because ICU
96
- * and Windows NLS disagree about punctuation almost completely -- 191 of 741 measured pairs invert.
97
- * `="*"<"?"` is `TRUE` in Excel and `FALSE` from a bare collator. Three classes, code-point order
98
- * inside each: ordinary punctuation, then `+ < = >`, then digits and letters (where ICU is already
99
- * right and still decides). See that function for what is measured and what is generalized.
100
- *
101
- * ### Determinism
102
- *
103
- * Collation is ICU data and varies by host. The locale is always the workbook's persisted tag,
104
- * never the ambient host locale (passing `undefined` to `localeCompare` is a bug -- it reads the
105
- * host). Note that a `small-icu` Node build carries `en-US` only and will silently collate a
106
- * `de-DE` workbook as English; ship `full-icu` for non-English workbooks.
107
- */
108
2
  export declare const ScalarCollation: {
109
3
  /**
110
4
  * The fixed `Intl.Collator` options for Excel's text comparison.
@@ -112,25 +112,6 @@ export declare const EmptyAggregates: Readonly<IRangeStats.Aggregates>;
112
112
  * Returns `null` when the grid is empty.
113
113
  */
114
114
  export declare function iterateAndCollectStats(runtime: IRuntime, grid: ISparseGrid<Scalar>, range: IRange | null, localCoords: readonly (IRange.Coords | null)[], optionsIterator: IRange.IteratorOptions | undefined, segmentCache: AggSegmentCache, zoneSizeMinor: number, skipOrigin?: IRange.CellCoords): AggResults | null;
115
- /**
116
- * The value Excel added LAST — the final numeric member in ROW-major order, which is the
117
- * traversal Excel's accumulators use (measured: `probe-sum-cancel-order.ps1`, two mirrored 2-D
118
- * layouts). Coerces exactly as the aggregate scan does, so `AVERAGEA`'s text-counts-as-zero
119
- * agrees here and a trailing text cell defeats the cancellation snap just as a trailing `0`
120
- * does.
121
- *
122
- * Returns `undefined` when the query holds no numbers.
123
- *
124
- * @remarks
125
- * Deliberately NOT part of `AggResults` and NOT segment-cached. Row-major "last" is a position
126
- * comparison, and segments merge in GRID-axis order, so carrying it through the cache would mean
127
- * tracking `(row, col)` per value in `_doAggregateValue` — a cost on the hottest loop in the
128
- * engine, paid by every caller, to serve a rule that fires only on catastrophic cancellation.
129
- * Instead this is a separate scan behind {@link mayCancel}'s gate, which rejects any ordinary
130
- * total using `min`/`max` the aggregates already carry. A forward scan tracking the maximum
131
- * `(row, col)` is used rather than reverse iteration because the grid's run iterator has no
132
- * reverse, and this way the result is independent of the grid's axis.
133
- */
134
115
  export declare function findLastNumber(runtime: IRuntime, grid: ISparseGrid<Scalar>, range: IRange | null, localCoords: readonly (IRange.Coords | null)[], optionsIterator: IRange.IteratorOptions | undefined, skipOrigin?: IRange.CellCoords): number | undefined;
135
116
  /**
136
117
  * Resolves an iterator's `coerce` option into the callable pair the scans use.
@@ -165,12 +165,6 @@ export declare class PageLayout implements IPageLayout {
165
165
  _getBreaks(axis: IRange.Axis): readonly IPageLayout.BreakJSON[];
166
166
  /** @internal */
167
167
  _setBreaks(axis: IRange.Axis, breaks: IPageLayout.BreakJSON[], options?: ITransaction.OperationOptions): this;
168
- /**
169
- * Moves the breaks as rows (or columns) `start` to `end` are inserted or deleted: a break at or
170
- * after an insert moves with it, a break before a deleted row goes with it, and a break past a
171
- * delete moves back. Excel's behavior (`scripts/openpy-parity/probe-print-setup.ps1`).
172
- * @internal
173
- */
174
168
  _shiftBreaks(axis: IRange.Axis, start: number, end: number, isInsert: boolean): void;
175
169
  /** The manual breaks on an axis. */
176
170
  protected _getPageBreaks(axis: IRange.Axis): IPageLayout.IPageBreak[];
@@ -64,14 +64,16 @@ export declare function shiftReferenceAxis(start: number, end: number, shiftStar
64
64
  * @param immuneEnd `true` if the end endpoint must not move.
65
65
  */
66
66
  export declare function moveReferenceAxis(start: number, end: number, moveBy: number, immuneStart?: boolean, immuneEnd?: boolean): [start: number, end: number];
67
+ export declare function edgeMoveReferenceAxis(start: number, end: number, cutStart: number, cutEnd: number, moveBy: number, toOtherSheet: boolean): [start: number, end: number] | null;
67
68
  /**
68
69
  * Whether a cut of `from` carries `reference` with it.
69
70
  *
70
71
  * @remarks
71
72
  * Excel's test, and the graph's: a reference moves only when the cut rectangle FULLY ENCLOSES it.
72
73
  * Cut A1:C3 and `=SUM(A1:B2)` follows to the destination; `=SUM(A1:C5)` reaches outside the cut
73
- * and so is left exactly where it is, pointing at cells that are now empty. There is no partial
74
- * answer and no split - a reference that is only half carried would name two different rectangles.
74
+ * and so is not carried. A reference that is only half carried would name two different rectangles;
75
+ * the one partial answer is a cut of its EDGE, which moves that edge alone
76
+ * ({@link edgeMoveReferenceAxis}).
75
77
  *
76
78
  * A formula BLOCK asks a longer version of this question, because each of its cells has a
77
79
  * reference of its own and all of them have to be enclosed; see `movePrecedents`.
@@ -12,6 +12,11 @@ export interface IResource extends JSONSerializableAsync<IResource.JSON> {
12
12
  * An optional name for the resource.
13
13
  */
14
14
  getName(): string | null;
15
+ /**
16
+ * The URL the bytes were fetched from, when the resource is a picture the workbook keeps for it
17
+ * (an `IMAGE` source): a fetch of that URL answers from these bytes. `null` otherwise.
18
+ */
19
+ getFetchedFrom(): string | null;
15
20
  /**
16
21
  * For saving to json resources.
17
22
  */
@@ -113,6 +118,10 @@ export declare namespace IResource {
113
118
  * This is optional but if provided then resource lookup will use this as a cache key.
114
119
  */
115
120
  name?: string;
121
+ /**
122
+ * The URL the embedded bytes were fetched from: the workbook keeps them as that URL's picture.
123
+ */
124
+ fetchedFrom?: string;
116
125
  }
117
126
  }
118
127
  //# sourceMappingURL=IResource.d.ts.map
@@ -52,6 +52,10 @@ export declare namespace IResourceCollection {
52
52
  * This is optional and purely for human consumption and is not used by the system.
53
53
  */
54
54
  name?: string;
55
+ /**
56
+ * The URL the bytes were fetched from, for a picture the workbook keeps for it.
57
+ */
58
+ fetchedFrom?: string;
55
59
  }
56
60
  /**
57
61
  * A type that represents the various ways to provide a resource source.
@@ -2,6 +2,7 @@ import { IResource } from './IResource';
2
2
  import { IResourceCollection } from './IResourceCollection';
3
3
  export declare class Resource implements IResource {
4
4
  private _name;
5
+ private _fetchedFrom;
5
6
  private _refs;
6
7
  private _listeners;
7
8
  private _isClosed;
@@ -17,6 +18,7 @@ export declare class Resource implements IResource {
17
18
  protected _resolveArrayBuffer(): Promise<ArrayBuffer>;
18
19
  /** {@inheritDoc IResource.getName} */
19
20
  getName(): string | null;
21
+ getFetchedFrom(): string | null;
20
22
  /** {@inheritDoc IResource.toJSONAsync} */
21
23
  toJSONAsync(): Promise<IResource.JSON>;
22
24
  /** {@inheritDoc IResource.toBuffer} */
@@ -0,0 +1,13 @@
1
+ import { IResource } from './IResource';
2
+ import { IResourceCollection } from './IResourceCollection';
3
+ /**
4
+ * Adds bytes to `resources` as a resource. With `fetchedFrom` the resource is the collection's copy
5
+ * of that URL, so adding the URL again answers the one already there. With no collection, a
6
+ * resource of no workbook.
7
+ *
8
+ * @internal
9
+ */
10
+ export declare const addResource: (resources: IResourceCollection | null, buffer: ArrayBuffer, options?: {
11
+ fetchedFrom?: string;
12
+ }) => IResource;
13
+ //# sourceMappingURL=_AddResource.d.ts.map