@sheetxl/sdk 0.8.0-beta.12 → 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 (290) hide show
  1. package/THIRD-PARTY-NOTICES.md +172 -0
  2. package/browser/esm/{DwwR3O2sEZApPSTF.mjs → -GEhXGMfNcWmHPby.mjs} +3 -3
  3. package/browser/esm/{DPhGQLNGmDZwODwJ.mjs → 9WXf_BTKjW1cQisZ.mjs} +94 -94
  4. package/browser/esm/{CRkYR-siY2C994KV.mjs → B2SgIPPBX0wjzuq8.mjs} +1 -1
  5. package/browser/esm/{CBYMTDzMf1Vh7pkw.mjs → BC2RwlNwCdRywkoD.mjs} +1 -1
  6. package/browser/esm/{-Jx-jNHmtIQQfLvK.mjs → BEqhm9xAUPiHUCFv.mjs} +1 -1
  7. package/browser/esm/BHgqi7KNrl7Vjr0W.mjs +348 -0
  8. package/browser/esm/{D64dM68B1pKYFzdP.mjs → BJKH0tDRx2FeSWvt.mjs} +2 -2
  9. package/browser/esm/{DobHLF6VjHr7Xi40.mjs → BTgWtqdQoh2cB6DL.mjs} +1 -1
  10. package/browser/esm/{CNdjyofiRu6CYOrr.mjs → BVshV1iY3bcUH9_E.mjs} +50 -48
  11. package/browser/esm/{qO-ujUrgq6H3TQix.mjs → BYQ63XU7JzB4_itX.mjs} +1 -1
  12. package/browser/esm/{C9u8FUewte5ugUjH.mjs → Bax5aOzQkbHKXW_X.mjs} +725 -716
  13. package/browser/esm/{Tah7cnFb_HNZdLtj.mjs → BiDGKhtzV6yIy66o.mjs} +3 -3
  14. package/browser/esm/BmYrWK5OmHRtgyqM.mjs +367 -0
  15. package/browser/esm/{DgrAuRD2qr2DvFeJ.mjs → BoAlHgjPQ6mxb_oO.mjs} +44 -44
  16. package/browser/esm/{CUzYuYTTGsChC_kZ.mjs → C0mjTq8lhrX3HiPa.mjs} +2052 -1583
  17. package/browser/esm/{w6Jea0TiclPrYZ2M.mjs → C5j0IdwtYkWlOftv.mjs} +509 -509
  18. package/browser/esm/{hCQJcmIzPDxDEv2q.mjs → CL84-iL2QeKlLzo5.mjs} +2 -2
  19. package/browser/esm/{2mIwPy2D2JUX-9wx.mjs → CLkBe-6n-pStQhnz.mjs} +2 -2
  20. package/browser/esm/{DZiivy0NmO1Vnyzk.mjs → CPzfhTPX2Y4dHX2p.mjs} +2 -2
  21. package/browser/esm/{fXWUMDhZ5yMSO629.mjs → CSJuIjYUOE387FIP.mjs} +1 -1
  22. package/browser/esm/{BIHrHjRGWVlJglcp.mjs → Cdw0mGuoV3IU2LhR.mjs} +2 -2
  23. package/browser/esm/{yuhcOYw6SHQ-RCm3.mjs → Ced5uyofOWHuL_Jy.mjs} +30 -30
  24. package/browser/esm/{B3wf5vZCsWfWsDbj.mjs → Ci_LJ4S_GvYX0STI.mjs} +1 -1
  25. package/browser/esm/{DK899HhWX1HINMC1.mjs → CwygVKP_RXmne5Ot.mjs} +25 -25
  26. package/browser/esm/{BdCJNawfifyPupCP.mjs → D-mfK0noQrM2jZLT.mjs} +1 -1
  27. package/browser/esm/{CwOPLXU3-9ZHGyOT.mjs → D9SH_8v3FYCnxOFK.mjs} +1 -1
  28. package/browser/esm/{D9xNz46kAfXMZzp4.mjs → DPD8fop6az9HZNiK.mjs} +2 -2
  29. package/browser/esm/{D2RZh0O9neOsyLAE.mjs → DW-MmlgMH87l-_cw.mjs} +69 -48
  30. package/browser/esm/{DwZCT7DZiiXoTweg.mjs → DctIlUsO78-OU2ht.mjs} +2 -2
  31. package/browser/esm/DdcKkVb4jM6Y_epY.mjs +184 -0
  32. package/browser/esm/{Cxjxk0ncRKx80I-w.mjs → DfKzE0IY0TjaEIxG.mjs} +1 -1
  33. package/browser/esm/{BnC4-27Igwb8oDf2.mjs → DkloMquaR1pbZCER.mjs} +44 -43
  34. package/browser/esm/{BudSIfXBAsTxvu-K.mjs → Dz86-De57bv2VYIi.mjs} +10111 -9269
  35. package/browser/esm/{BTFBedJMRWGvZyCE.mjs → HApSgmV2FXRRwQac.mjs} +1 -1
  36. package/browser/esm/{Bt8_m94tBdks209L.mjs → IbVAQU4YqtFqLwYk.mjs} +1 -1
  37. package/browser/esm/index.mjs +482 -440
  38. package/browser/esm/mHQ95RAfxHzcUN2r.mjs +18 -0
  39. package/browser/esm/{CdEO8CEee6lEhabA.mjs → pm00uZZu_H3gxHFx.mjs} +2 -2
  40. package/browser/esm/{Bg5Di9GLNAkbqQ1P.mjs → quEvwgrEuOb0h3q-.mjs} +1926 -1298
  41. package/browser/esm/{CndRBvVfQUJIYRRj.mjs → zZngLMg6mg6nnNGX.mjs} +50 -50
  42. package/licenses/dependencies.txt +71 -1
  43. package/node/esm/{C14-R6tifRh7pc0p.mjs → -K4Cek-bTUItkB_8.mjs} +1 -1
  44. package/node/esm/{D3ptRKzASqBut1DE.mjs → -b8yNV4v9qiq8EMY.mjs} +2 -2
  45. package/node/esm/{CBuEu5Jk-LfaDy-H.mjs → 1V-m67YHbxmg3xk2.mjs} +44 -44
  46. package/node/esm/{DhTya_mhmN53vskv.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/{Vocy-I9dKzZMr0Ct.mjs → BQ2XqExomMceAjfe.mjs} +10977 -10744
  50. package/node/esm/{Btw4148Ot8ifhNc1.mjs → Bfg7qjCXCwXbzW3K.mjs} +1 -1
  51. package/node/esm/{BNXLOEddJ6O9gYws.mjs → BtMeAB_dqJnOfzJM.mjs} +2 -2
  52. package/node/esm/{Q_S1g46ZOTrdhTae.mjs → Byc_bxU_MdjYtt0x.mjs} +1 -1
  53. package/node/esm/{Ci_zLYmCD7e-C79O.mjs → Bzrl292TNCK3Cpid.mjs} +1 -1
  54. package/node/esm/{DdoiuKg9BKubtF1V.mjs → C0P9zspoypRAj7yv.mjs} +1 -1
  55. package/node/esm/{C_aL7CGS1lrNn1Ng.mjs → C9gpMN3galHGZyoK.mjs} +1 -1
  56. package/node/esm/CKCG2peOkTq0gIIW.mjs +310 -0
  57. package/node/esm/{C99zzq8DImQXi4BQ.mjs → CWBS90g3Hz-kQDkY.mjs} +10 -10
  58. package/node/esm/{BskP3b8vUoIOGLY6.mjs → CoGSVnn-hNMtTEus.mjs} +2 -2
  59. package/node/esm/{DhS6yWjrrSNIJMsn.mjs → CzrLqStvrcPE2-hb.mjs} +234 -225
  60. package/node/esm/{CRt3vXe6YmXzqk3H.mjs → D16EdlZG1hX5WUUK.mjs} +102 -102
  61. package/node/esm/{DUTmDHbFbhLDT4F3.mjs → D1mDga2K5sjs8y07.mjs} +1 -1
  62. package/node/esm/{D4ROK9UwDpS6jO3Z.mjs → D2jtztjE6c23RKvZ.mjs} +1 -1
  63. package/node/esm/{icn2nX5Z8e_3mNAv.mjs → D9nRcWsYk3M82iD8.mjs} +1 -1
  64. package/node/esm/{CG-qBU5BAaVz7e-P.mjs → DALYzTxZ9Ur9C69Q.mjs} +1 -1
  65. package/node/esm/{DrCf6ITcBhVOFpRj.mjs → DF0nL7s01dp7n0Bx.mjs} +7 -7
  66. package/node/esm/{BL2iiEoqxDEV2Xrg.mjs → DO5ldLqhTvIfPXLW.mjs} +3348 -2610
  67. package/node/esm/DQz8J8ci7EJdqbuB.mjs +351 -0
  68. package/node/esm/{CiIymQN6aJCul62g.mjs → DR2OQTKqqyIkZnse.mjs} +9 -9
  69. package/node/esm/{eimUGjiIP-b8HiM6.mjs → DSTLPBgpsGW6qP9e.mjs} +52 -52
  70. package/node/esm/{DV5CU37aEbFbWFL0.mjs → DiXp7KSOZUSWXaZ5.mjs} +1 -1
  71. package/node/esm/{C_xf5Bz30VqiJjXn.mjs → DwvXHsycOQR219c7.mjs} +1 -1
  72. package/node/esm/{B-HUPAcqvK0eeeCz.mjs → Hc6B04OyVzHx2F5I.mjs} +38 -37
  73. package/node/esm/{lGJ42sHqg5if2bba.mjs → NkPNHsq2T3DXg76x.mjs} +458 -458
  74. package/node/esm/{-TA0MneBDKdGhsib.mjs → Nl_IIkO1jbk0s9i-.mjs} +3329 -2852
  75. package/node/esm/{DxazKtROyaI51dWl.mjs → OQT5lGqq8a4r5xNa.mjs} +1 -1
  76. package/node/esm/OTaaFGhF-k_iwobp.mjs +18 -0
  77. package/node/esm/{pYtP7wPyS96NQyXS.mjs → Z1elC_roIu7LhceZ.mjs} +25 -25
  78. package/node/esm/{CkRYLed8Mmn3giNg.mjs → e3F3OVXCxLJrSukW.mjs} +2 -2
  79. package/node/esm/index.mjs +584 -540
  80. package/node/esm/{D8hO07ToAibIuniw.mjs → suOBVUz-pca6ilJH.mjs} +138 -136
  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 +4 -0
  141. package/resources/locales/en/model.msg.json +4 -0
  142. package/types/scripting-api.json +9339 -9320
  143. package/types/scripting.d.ts +322 -200
  144. package/types/src/.generated/wasm/sdk.d.ts +5 -27
  145. package/types/src/address/AddressUtils.d.ts +8 -0
  146. package/types/src/address/_SheetNameQuoteChars.d.ts +3 -0
  147. package/types/src/anomalies/_FocusTable.d.ts +0 -6
  148. package/types/src/calculation/Calculation.d.ts +20 -95
  149. package/types/src/calculation/ExternalBookBindings.d.ts +0 -26
  150. package/types/src/calculation/NamedFormulaCollection.d.ts +6 -2
  151. package/types/src/calculation/TokenType.d.ts +0 -10
  152. package/types/src/calculation/_CloneBoundary.d.ts +0 -24
  153. package/types/src/calculation/_FormulaToolkit.d.ts +0 -5
  154. package/types/src/calculation/compiler/ASTTypes.d.ts +0 -13
  155. package/types/src/calculation/compiler/CompilerUtils.d.ts +0 -227
  156. package/types/src/calculation/compiler/FormulaLexer.d.ts +0 -8
  157. package/types/src/calculation/compiler/FormulaParser.d.ts +0 -61
  158. package/types/src/calculation/compiler/ParserUtils.d.ts +0 -24
  159. package/types/src/calculation/compiler/Types.d.ts +0 -52
  160. package/types/src/calculation/engine/CalcBackend.d.ts +15 -157
  161. package/types/src/calculation/engine/index.d.ts +0 -8
  162. package/types/src/calculation/executor/CalcExecutor.d.ts +13 -130
  163. package/types/src/calculation/executor/CalcExecutorUtils.d.ts +30 -11
  164. package/types/src/calculation/executor/CircularReference.d.ts +0 -17
  165. package/types/src/calculation/executor/_BlockOrder.d.ts +29 -0
  166. package/types/src/calculation/executor/_WhatIf.d.ts +0 -19
  167. package/types/src/calculation/formula/FormulaBlock.d.ts +0 -28
  168. package/types/src/calculation/formula/FormulaRecordView.d.ts +0 -15
  169. package/types/src/calculation/formula/IFormulaBlock.d.ts +0 -12
  170. package/types/src/calculation/formula/LambdaValue.d.ts +0 -15
  171. package/types/src/calculation/formula/TokenUtils.d.ts +1 -8
  172. package/types/src/calculation/grid/CalcGrid.d.ts +5 -59
  173. package/types/src/calculation/grid/CalcGridBackend.d.ts +8 -9
  174. package/types/src/calculation/grid/CalcGridProxy.d.ts +0 -13
  175. package/types/src/calculation/grid/CalcGridUtils.d.ts +18 -22
  176. package/types/src/calculation/grid/ICalcGrid.d.ts +13 -98
  177. package/types/src/calculation/grid/_CalcRequest.d.ts +1 -29
  178. package/types/src/calculation/spatial/CircularEntry.d.ts +0 -10
  179. package/types/src/calculation/spatial/FormulaSpatialValue.d.ts +52 -82
  180. package/types/src/calculation/spatial/SpillEntry.d.ts +10 -7
  181. package/types/src/calculation/state/CalcScope.d.ts +0 -9
  182. package/types/src/calculation/state/CalcState.d.ts +0 -12
  183. package/types/src/calculation/state/CalculationContext.d.ts +4 -37
  184. package/types/src/calculation/state/DeferredCalls.d.ts +11 -64
  185. package/types/src/calculation/state/IContextContainer.d.ts +4 -60
  186. package/types/src/calculation/state/_KeepBlanks.d.ts +5 -0
  187. package/types/src/calculation/state/_PendingOverlayGrid.d.ts +46 -33
  188. package/types/src/calculation/state/_WhatIfLayer.d.ts +0 -14
  189. package/types/src/calculation/symbol/ExternalSheetSymbols.d.ts +0 -42
  190. package/types/src/calculation/symbol/ISymbolRegistry.d.ts +0 -6
  191. package/types/src/calculation/symbol/SheetSymbolProvider.d.ts +0 -12
  192. package/types/src/calculation/symbol/SymbolRegistry.d.ts +0 -9
  193. package/types/src/calculation/toolkit/index.d.ts +0 -8
  194. package/types/src/cell/ICell.d.ts +14 -28
  195. package/types/src/cellRange/ICellRange.d.ts +22 -11
  196. package/types/src/chart/Chart.d.ts +0 -16
  197. package/types/src/chart/_ChartParts.d.ts +0 -39
  198. package/types/src/chart/_ChartSource.d.ts +0 -14
  199. package/types/src/chart/createChart.d.ts +1 -1
  200. package/types/src/chart/kinds/ChartKind.d.ts +4 -4
  201. package/types/src/chart/kinds/_Placeholder.d.ts +0 -1
  202. package/types/src/chart/layout/TextMeasurer.d.ts +0 -20
  203. package/types/src/chart/layout/_LayoutUtils.d.ts +0 -16
  204. package/types/src/chart/math/BoxStats.d.ts +0 -8
  205. package/types/src/chart/math/DateUnitCalcs.d.ts +0 -10
  206. package/types/src/chart/math/Histogram.d.ts +0 -17
  207. package/types/src/chart/math/OrdUnitCalcs.d.ts +0 -53
  208. package/types/src/chart/math/Treemap.d.ts +0 -15
  209. package/types/src/chart/math/Trendlines.d.ts +0 -8
  210. package/types/src/chart/math/UnitCalcs.d.ts +0 -22
  211. package/types/src/chart/model/_Edits.d.ts +0 -33
  212. package/types/src/chart/model/_Grouping.d.ts +0 -25
  213. package/types/src/chart/model/_Inference.d.ts +0 -18
  214. package/types/src/chart/model/_NewChart.d.ts +0 -41
  215. package/types/src/chart/model/_OfPie.d.ts +0 -7
  216. package/types/src/chart/resolve/_LegacyStyles.d.ts +0 -20
  217. package/types/src/chart/resolve/_Resolve.d.ts +0 -19
  218. package/types/src/chart/resolve/_ResolvedChart.d.ts +0 -6
  219. package/types/src/collections/_GridUtils.d.ts +0 -10
  220. package/types/src/comment/_NoteBox.d.ts +0 -15
  221. package/types/src/condition/AnchoredConditional.d.ts +1 -23
  222. package/types/src/condition/BuiltInOperators/AbstractOperator.d.ts +0 -49
  223. package/types/src/condition/BuiltinSelectors/DisplaySelector.d.ts +0 -10
  224. package/types/src/condition/ICondition.d.ts +2 -2
  225. package/types/src/condition/_ConditionUtils.d.ts +0 -38
  226. package/types/src/externalBook/ExternalBookCollection.d.ts +0 -15
  227. package/types/src/externalBook/ExternalBookName.d.ts +2 -3
  228. package/types/src/externalBook/IExternalBook.d.ts +13 -14
  229. package/types/src/fetch/IFetcher.d.ts +2 -1
  230. package/types/src/fetch/_WorkbookFetch.d.ts +1 -1
  231. package/types/src/font/AdvanceTable.d.ts +16 -42
  232. package/types/src/font/IFont.d.ts +32 -9
  233. package/types/src/font/TableFileAdvanceBuilder.d.ts +6 -3
  234. package/types/src/font/_FontUtils.d.ts +0 -8
  235. package/types/src/font/_StandIns.d.ts +33 -0
  236. package/types/src/io/IWorkbookIO.d.ts +3 -3
  237. package/types/src/io/WorkbookOrigin.d.ts +2 -2
  238. package/types/src/license/LicenseManager.d.ts +2 -1
  239. package/types/src/license/_Utils.d.ts +4 -3
  240. package/types/src/license/details.d.ts +3 -1
  241. package/types/src/license/keys.d.ts +6 -0
  242. package/types/src/license/license-key.d.ts +15 -33
  243. package/types/src/license/token.d.ts +55 -0
  244. package/types/src/picture/IPicture.d.ts +45 -0
  245. package/types/src/picture/Picture.d.ts +12 -0
  246. package/types/src/pivot/PivotTable.d.ts +0 -7
  247. package/types/src/primitives/AsyncValue.d.ts +0 -12
  248. package/types/src/primitives/PrimitiveUtils.d.ts +1 -110
  249. package/types/src/primitives/Range.d.ts +0 -60
  250. package/types/src/primitives/ScalarCollation.d.ts +0 -106
  251. package/types/src/primitives/stats/AggregateStats.d.ts +0 -19
  252. package/types/src/print/PageLayout.d.ts +0 -6
  253. package/types/src/reference/ReferenceUtils.d.ts +4 -2
  254. package/types/src/richData/RichDataRegistry.d.ts +6 -0
  255. package/types/src/scripting/TypedFunction.d.ts +0 -109
  256. package/types/src/sheet/IWorksheet.d.ts +2 -5
  257. package/types/src/sheet/NamedCellRange.d.ts +0 -21
  258. package/types/src/sheet/SheetCell.d.ts +8 -2
  259. package/types/src/sheet/Worksheet.d.ts +7 -48
  260. package/types/src/sheet/_DelimitedText.d.ts +13 -0
  261. package/types/src/sheet/_IgnoredErrors.d.ts +0 -12
  262. package/types/src/sheet/_ScalarListFactory.d.ts +0 -19
  263. package/types/src/sheet/_SheetCoords.d.ts +0 -7
  264. package/types/src/sheet/_SheetFilterUtils.d.ts +0 -8
  265. package/types/src/sheet/_SheetStateReader.d.ts +0 -10
  266. package/types/src/sheet/_SheetStateTypes.d.ts +0 -3
  267. package/types/src/sheet/_SheetUtils.d.ts +1 -1
  268. package/types/src/sheet/style/_RowLine.d.ts +32 -0
  269. package/types/src/sheet/style/_StyleUtils.d.ts +6 -14
  270. package/types/src/sheetView/_SheetViewUtils.d.ts +0 -1
  271. package/types/src/slicer/_BuiltInSlicerStyles.d.ts +0 -5
  272. package/types/src/style/ICellStyle.d.ts +4 -0
  273. package/types/src/table/AnchoredTable.d.ts +0 -147
  274. package/types/src/text/TextFrame.d.ts +4 -1
  275. package/types/src/text/TextStacked.d.ts +0 -24
  276. package/types/src/text/TextWrapper.d.ts +3 -5
  277. package/types/src/text/_LineBox.d.ts +24 -0
  278. package/types/src/text/_TextUtils.d.ts +5 -2
  279. package/types/src/text/_TextWrapperFallback.d.ts +2 -1
  280. package/types/src/wasm/sdkWasm.d.ts +1 -1
  281. package/types/src/workbook/Workbook.d.ts +0 -10
  282. package/browser/esm/2WuhYrIpYmOR5H73.mjs +0 -698
  283. package/browser/esm/CTe2qfmIUEad6FJv.mjs +0 -199
  284. package/browser/esm/CfRqiPDg6RBTg1EN.mjs +0 -367
  285. package/browser/esm/DVroRnhi-5IDXNgM.mjs +0 -210
  286. package/node/esm/BSvOluusoDM4z_dx.mjs +0 -811
  287. package/node/esm/CPI58duc0j0a-HpJ.mjs +0 -115
  288. package/node/esm/DggQ23jKMpwhENfa.mjs +0 -372
  289. package/node/esm/Dn1M7YWi25DeeYUb.mjs +0 -210
  290. package/node/esm/ZXPFcsT2zrALCZux.mjs +0 -289
@@ -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`.
@@ -50,6 +50,12 @@ export declare namespace RichDataRegistry {
50
50
  * Display only: the value still reads as nothing to calculation.
51
51
  */
52
52
  function toDisplayText(value: IRichData): string | null;
53
+ /**
54
+ * The text that stands for `value` as a whole, as in the formula bar: its display text
55
+ * ({@link toDisplayText}), else the label its kind was given in parentheses, `(Image)`, else
56
+ * `(Rich Object)`.
57
+ */
58
+ function toPlaceholderText(value: IRichData): string;
53
59
  /**
54
60
  * The `ScalarType` `value` lays out as in a cell: its primitive's when it has one (a hyperlink
55
61
  * named by a number is a number); `String` when it reads as nothing but shows text (an entity's
@@ -1,11 +1,5 @@
1
1
  import { ScalarType, FormulaError, IRange, IFunction, IFormulaContext } from '@sheetxl/primitives';
2
2
  import { FixedPackedArray } from '../primitives/PrimitiveUtils';
3
- /**
4
- * The per-call shape of a declaration that carries a repeating group, resolved from the ARGUMENT
5
- * COUNT alone (`Repeating<T>`; DESIGN-REPEATING §2). Excel is measured never to disambiguate by type —
6
- * `SORTBY(array, by1, by2, o2)` is refused where a type-directed parse would have read argument 2
7
- * as `by_array2` — so the arithmetic is the whole rule.
8
- */
9
3
  /**
10
4
  * What `_exec` needs to know about ONE parameter position, decided once per declaration (and
11
5
  * once per expanded {@link RepeatPlan}) rather than on every call: the normalized value types,
@@ -56,14 +50,6 @@ interface ParamSpec {
56
50
  * `#VALUE!`. Today that is the multi-area union; the body reads it through `getArgs`.
57
51
  */
58
52
  reportType: boolean;
59
- /**
60
- * `ReportType<NoLift<T>>` (either order): a multi-cell REFERENCE at this scalar slot neither
61
- * lifts (`NoLift`) nor refuses (`ReportType`), it is handed to the body WHOLE, as one
62
- * `IReferenceRange`; an array still lifts. Excel's `Boolean|Range` slot shape, no `Array` bit:
63
- * LINEST/LOGEST `const`/`stats`, TREND/GROWTH `const` (DESIGN-LIFT-AND-DEMAND §1). One flag
64
- * because the coercion loop and both lift walks ask the same question, and a slot carrying only
65
- * one of the two markers changes nothing here.
66
- */
67
53
  wholeReference: boolean;
68
54
  /** The effective policy and its `allowError` half — static per declaration. */
69
55
  policy: 'reject' | 'accept' | null;
@@ -139,15 +125,6 @@ export declare class TypedFunction implements IFunction {
139
125
  };
140
126
  protected _lc: boolean;
141
127
  protected _rlc: boolean;
142
- /**
143
- * Some parameter declares `NoLift<T>` — a multi-cell REFERENCE at that non-repeating scalar
144
- * slot is `#VALUE!` rather than a broadcast, per parameter as Excel needs
145
- * (`NETWORKDAYS.INTL` refuses a reference at its date slots and lifts at `weekend`,
146
- * CALC-ISSUES 31; DESIGN-FUNCTION-ARGUMENTS §2.3, §6). A declaration bit and not a body
147
- * concern, because the body never runs: without it the lift runs instead and answers one
148
- * result per cell, so there is nothing for a body-facing API to express. Precomputed so the
149
- * common call pays one boolean.
150
- */
151
128
  protected _nl: boolean;
152
129
  /** Whether ANY parameter (or repeating slot) is `Lazy` — the guard on the wrapping below. */
153
130
  protected _lz: boolean;
@@ -170,16 +147,6 @@ export declare class TypedFunction implements IFunction {
170
147
  * through the parameter's coercion.
171
148
  */
172
149
  protected _rs: ScalarType | null;
173
- /**
174
- * The reference half of the declared RETURN KIND pair (DESIGN-DECLARATION-SURFACE §3.1): may
175
- * this call answer a REFERENCE? True for a declared `IReferenceRange` return (`r:'p'` —
176
- * OFFSET/INDIRECT/XLOOKUP/TAKE/DROP) and for an UNTYPED return (`any` — the pass-through
177
- * selectors IF/IFS/SWITCH/CHOOSE/INDEX, and any UDF that declares nothing). False for every
178
- * provable value — a declared scalar (`'*'` included: IFERROR) or a ranged array producer.
179
- *
180
- * Read at the call exit (a value-declared function's reference result is demoted to its VALUE)
181
- * and at the `*`-slot union pass-through.
182
- */
183
150
  protected _rref: boolean;
184
151
  /**
185
152
  * The declared result kind is a SCALAR member of {@link ValueKind} — `ROW(A1)` is the number 3
@@ -195,15 +162,6 @@ export declare class TypedFunction implements IFunction {
195
162
  protected _ps: ParamSpec[];
196
163
  /** Index of the repeating-group parameter, or `-1`. */
197
164
  protected _gi: number;
198
- /**
199
- * Index of the one parameter that consumes a VARIABLE number of arguments — a repeating group or
200
- * a trailing rest — or `-1`.
201
- *
202
- * `getArgs()` indexes by PARAMETER (DESIGN-FUNCTION-ARGUMENTS §3.3) and this is the single place
203
- * parameter numbering and argument numbering part company, so it is resolved once here rather
204
- * than re-derived per call. `_gi` cannot serve: it covers `Repeating<T>` only, and a plain rest
205
- * parameter is the same thing to a body asking which parameter its argument landed in.
206
- */
207
165
  protected _va: number;
208
166
  /** The declaration's `volatile`, read once: what the call frame carries for `defer`. */
209
167
  protected _vol: boolean;
@@ -214,28 +172,6 @@ export declare class TypedFunction implements IFunction {
214
172
  constructor(json: IFunction.DeclarationJSON, fn: (...args: any) => any, getContext: () => IFormulaContext | null | undefined, desc?: IFunction.DescriptorJSON | ((locale?: string) => Promise<IFunction.DescriptorJSON>) | null, builtIn?: boolean);
215
173
  /** @inheritdoc IFunction.execute */
216
174
  execute<R = any>(...args: any[]): R;
217
- /**
218
- * Resolves this call's {@link RepeatPlan} from the argument count, or `null` when the count is
219
- * one the declaration refuses.
220
- *
221
- * `n = (argc − prefix − suffix) / period` and a non-zero remainder is an error, with ONE
222
- * exception: a group whose last slot is optional also accepts `period − 1` variable arguments,
223
- * which is `n = 1` with that slot omitted. Those two rules produce SORTBY's measured arities
224
- * exactly — 2 and 1+2n, with 4 refused (probe rows H7/H10).
225
- *
226
- * A trailing suffix may be OPTIONAL, so `suffix` is solved for alongside `n` rather than fixed.
227
- * SWITCH is the case: `prefix 1, period 2, one optional suffix` yields argument parity as the
228
- * whole rule — odd is pairs alone, even is pairs plus a default — and refuses argc 2, because
229
- * dropping the suffix still leaves the group owing its one repetition. That matches Excel row
230
- * for row (probe-switch-arity.ps1: 3/4/5/6 legal, 1 and 2 refused). The group's minimum stays
231
- * 1 regardless of the suffix; nothing here ever resolves `n = 0`.
232
- *
233
- * Period 1 ends at one rest-marked slot instead — see {@link RepeatPlan.params}.
234
- *
235
- * Must stay in step with `CompilerUtils.resolveRepeat`, its COMPILE-TIME twin. That one decides
236
- * `#PARSE!` and the per-argument binding, so a rule added only here is simply never reached: the
237
- * formula is refused before it ever executes.
238
- */
239
175
  protected _plan(argsLength: number): RepeatPlan | null;
240
176
  /**
241
177
  * Folds the flat, per-argument-position values back into the shape the BODY declares: the group
@@ -260,53 +196,8 @@ export declare class TypedFunction implements IFunction {
260
196
  * writes anything into it.
261
197
  */
262
198
  protected _exec<R = any>(argsEval: any[], argsLength: number): R;
263
- /**
264
- * `NoLift<T>`: is a multi-cell REFERENCE sitting at a non-repeating scalar parameter marked to
265
- * refuse one? (DESIGN-FUNCTION-ARGUMENTS §2.3, §2.7 rule 3.)
266
- *
267
- * Three qualifications, each measured rather than assumed
268
- * (`fn-battery/adhoc-container-at-slot{,2}`, Excel 16.0 build 20326):
269
- *
270
- * - **A REFERENCE, not an array.** `MROUND({3,4,5},5)` spills where `MROUND(A1:A3,5)` is
271
- * `#VALUE!`, so an array at the same slot still lifts. That is the whole reason this reads the
272
- * argument's shape rather than trusting the parameter: the engine hands a reference over as
273
- * COORDS and an array as an `IRange`.
274
- * - **MULTI-CELL.** A 1×1 reference collapses to its member and is an ordinary argument
275
- * (`EFFECT(J1,4)` over a text cell is `0.0824…`).
276
- * - **NON-REPEATING.** A repeating scalar slot ABSORBS a container as members whatever the
277
- * function's heritage — `GCD(C1:C3)` is 4, `MULTINOMIAL(A1:A3)` is 27720 — and those were the
278
- * rows that could have broken the rule and did not. Period-1 groups marshal through the rest
279
- * branch and are already excluded by `rest`; period 2+ expand to per-argument entries, so the
280
- * group's span is skipped explicitly.
281
- *
282
- * A multi-AREA union `(A1:A3,C1:C5)` arrives as an ARRAY of areas and is not treated as a
283
- * reference here — unmeasured at these slots, and inventing a verdict for it would be the kind
284
- * of unification §2.0 warns about.
285
- */
286
199
  protected _refusesReferenceLift(params: IFunction.ParameterTypeJSON[] | null | undefined, paramLength: number, argsEval: any[], argsLength: number, plan: RepeatPlan | null): boolean;
287
- /**
288
- * The consumer half of the lift (CALC-ISSUES item 22 change 2). Each `refLifts` entry is a
289
- * reference-only (r:'p') argument holding a producer lift's preserved per-element results.
290
- * The function runs once per output cell through {@link _exec} — a full re-invocation, so
291
- * every other argument re-coerces and the body re-runs per element (measured:
292
- * `SUBTOTAL(9,OFFSET(A1,{0;1},0,1,1),B1:B2)` = 31|32 — the plain range is consumed WHOLE in
293
- * each call). Shape rules are the scalar lift's: output dims = max over entries, dim-1 tiles,
294
- * a shorter dim pads `#N/A` (probe-lift-member-coercion.ps1: 2×1 beside 1×2 → 2×2).
295
- *
296
- * An element that is not a reference (a plain value in a reference-only position) is not
297
- * special-cased: the per-element coercion answers exactly as it would for the unlifted call
298
- * (item 23b's `#PARSE!`), which becomes that member of the output.
299
- */
300
200
  protected _refLift<R>(context: IFormulaContext, argsEval: any[], argsLength: number, refLifts: RefLiftEntry[], firstCell?: boolean): R;
301
- /**
302
- * @hidden
303
- * Vends a NEW instance whose evaluation context comes from `getContext` — the public-API
304
- * scope vend behind `IFunctionCollection.getByName(name, { sheet })` (CALC-ISSUES item 35).
305
- * The registry instance is what the ENGINE holds and its evaluation path stays
306
- * allocation-free; a vended instance additionally owns a private fast-path slot the engine
307
- * never loads, so callers may hold it across awaits (or re-enter it) without racing the
308
- * engine's synchronous argument hand-off.
309
- */
310
201
  _withContext(getContext: () => IFormulaContext | null | undefined): TypedFunction;
311
202
  /** @inheritdoc IFunction.getName */
312
203
  getName(): string;
@@ -784,7 +784,7 @@ export declare namespace IWorksheet {
784
784
  /**
785
785
  * The events that carry a {@link ChangeEvent}: what {@link ChangeEvent.getKind} names.
786
786
  */
787
- type ChangeEventKey = 'onDataChange' | 'onStyleChange' | 'onLayoutChange' | 'onMergesChange' | 'onSpillsChange';
787
+ type ChangeEventKey = 'onDataChange' | 'onStyleChange' | 'onMergesChange' | 'onSpillsChange';
788
788
  /**
789
789
  * What a change event announces: where the change landed and what wrote it.
790
790
  *
@@ -1024,11 +1024,8 @@ export declare namespace IWorksheet {
1024
1024
  * for "cell geometry moved".
1025
1025
  * * This can be be due to row/column sizes changes or changing the max rows columns.
1026
1026
  * * Zoom and viewport do not change the underlying layout.
1027
- *
1028
- * @param source The sheet.
1029
- * @param event The whole sheet: sizes are announced by the headers, which do not say where.
1030
1027
  */
1031
- onLayoutChange?(source: IWorksheet, event: IWorksheet.ChangeEvent): void;
1028
+ onLayoutChange?(source: IWorksheet): void;
1032
1029
  /**
1033
1030
  * Called when which rows are hidden has changed.
1034
1031
  */
@@ -4,27 +4,6 @@ import { INamedFormulasCollection } from '../calculation/INamedFormulasCollectio
4
4
  import { NamedRange } from './NamedRange';
5
5
  import { IWorksheetInternal } from './Worksheet';
6
6
  import { SheetRangeOptions } from './SheetRange';
7
- /**
8
- * A defined name as a NODE in the calculation graph — an `INamedRange` whose coords are the
9
- * name's ANCHOR (its defining cell), not a target.
10
- *
11
- * @remarks
12
- * This is how a name rides inside an ordinary `ICellRanges` graph answer next to plain cell
13
- * ranges: the brand (`isINamedRange`) carries the identity, the coords carry the anchor, and the
14
- * four graph methods answer the NAME question rather than the cell question at those coords
15
- * (DESIGN-NAMED-FORMULAS.md §4). Contrast {@link NamedRange}, which `getRange('Revenue')` returns
16
- * over the name's *target* — same brand, different referent, and only this one exists for a value
17
- * name (`Doubled = Base*2`), which has no target at all.
18
- *
19
- * The anchor matters to precedents (relative references in the body resolve from it) and is only
20
- * a label for dependents (the symbol index is global). Lead with the name when displaying one —
21
- * two names authored from the same active cell share an anchor address, and the name is the fact.
22
- *
23
- * Built from a {@link NamedNodeInfo} — plain data — and answers its five name questions by
24
- * resolving the id against the collection when asked. It does NOT capture the name object: a name
25
- * can be redefined or deleted while a graph answer is still held, and re-resolving means the
26
- * answer follows the definition rather than a snapshot of it. A name that is gone answers `null`.
27
- */
28
7
  export declare class NamedCellRange extends NamedRange {
29
8
  private readonly _info;
30
9
  private readonly _namedFormulas;
@@ -223,6 +223,12 @@ export declare class SheetCell implements ICell {
223
223
  getWorksheet(): IWorksheet;
224
224
  /** {@inheritDoc ICell.select} */
225
225
  select(options?: ITypes.SelectOptions): Promise<boolean>;
226
+ /**
227
+ * Follows an address as this cell's sheet follows a link: what a link beside the cells (a picture's)
228
+ * opens with.
229
+ * @internal
230
+ */
231
+ _openAddress(address: string, options: ITypes.SelectOptions | null, target?: string, features?: string): Promise<boolean>;
226
232
  /** {@inheritDoc ICell.getColumn} */
227
233
  getColumn(): ITable.IColumn | null;
228
234
  /** {@inheritDoc ICell.getTable} */
@@ -371,8 +377,8 @@ export declare class SheetCell implements ICell {
371
377
  /** {@inheritDoc ICell.getSpillKind} */
372
378
  getSpillKind(): ITypes.FormulaArrayKind | null;
373
379
  /**
374
- * The spill entry this cell answers for: the first live one, else a blocked one so the UI can
375
- * still show the range it would have taken.
380
+ * The spill entry this cell answers for: a live one, else a blocked one, so the UI can show the
381
+ * range it would have taken. Where blocked ones overlap, the one anchored here, else the first.
376
382
  */
377
383
  protected _getSpillEntry(): SpillEntry | null;
378
384
  /** {@inheritDoc ICell.isSpillOverflow} */