@sheetxl/sdk 0.8.0-beta.12 → 0.8.0-beta.14

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 (292) hide show
  1. package/THIRD-PARTY-NOTICES.md +172 -0
  2. package/browser/esm/{CBYMTDzMf1Vh7pkw.mjs → 3t4S9eda2I6jFad0.mjs} +1 -1
  3. package/browser/esm/{Bg5Di9GLNAkbqQ1P.mjs → AXlD9K1gCwPU4gCO.mjs} +1926 -1298
  4. package/browser/esm/{w6Jea0TiclPrYZ2M.mjs → B1aH_qa-czVyEVHd.mjs} +509 -509
  5. package/browser/esm/{DZiivy0NmO1Vnyzk.mjs → BEDfJP2tcuRy2Y2E.mjs} +2 -2
  6. package/browser/esm/{BdCJNawfifyPupCP.mjs → BLYl-afJe_3std8i.mjs} +1 -1
  7. package/browser/esm/{D2RZh0O9neOsyLAE.mjs → BPPMKyMn65i1a1mE.mjs} +69 -48
  8. package/browser/esm/{yuhcOYw6SHQ-RCm3.mjs → BSXQAXwZdJKYTO4P.mjs} +30 -30
  9. package/browser/esm/{-Jx-jNHmtIQQfLvK.mjs → BVqIknGhQCLUB_7Q.mjs} +1 -1
  10. package/browser/esm/{fXWUMDhZ5yMSO629.mjs → BWoz4kQdA5KKJfl6.mjs} +1 -1
  11. package/browser/esm/{DwwR3O2sEZApPSTF.mjs → Bdcd3QOzsc0aVMjN.mjs} +3 -3
  12. package/browser/esm/{2mIwPy2D2JUX-9wx.mjs → BpwULQPKbb4R9Jew.mjs} +2 -2
  13. package/browser/esm/{CwOPLXU3-9ZHGyOT.mjs → C7hpfT-sX2lyLS-D.mjs} +1 -1
  14. package/browser/esm/{BIHrHjRGWVlJglcp.mjs → CImFKFaYToUH-bSE.mjs} +2 -2
  15. package/browser/esm/{BTFBedJMRWGvZyCE.mjs → CM_X1zZYzEUPaNJL.mjs} +1 -1
  16. package/browser/esm/CPIWV3Enlh_BF2TY.mjs +19 -0
  17. package/browser/esm/{CndRBvVfQUJIYRRj.mjs → ChYgQL-8qIDFmX31.mjs} +50 -50
  18. package/browser/esm/{BudSIfXBAsTxvu-K.mjs → CtC__ALh4I8PKIln.mjs} +10071 -9246
  19. package/browser/esm/{qO-ujUrgq6H3TQix.mjs → Cy8uYCggktF83278.mjs} +1 -1
  20. package/browser/esm/D2NFcBM4xsv0JJ1q.mjs +184 -0
  21. package/browser/esm/{D9xNz46kAfXMZzp4.mjs → D39XcmtPXVtMN4yF.mjs} +2 -2
  22. package/browser/esm/{CdEO8CEee6lEhabA.mjs → DBvu0tdSf-5vol4e.mjs} +2 -2
  23. package/browser/esm/{Tah7cnFb_HNZdLtj.mjs → DIfAk63CvaOZ3QKi.mjs} +3 -3
  24. package/browser/esm/{B3wf5vZCsWfWsDbj.mjs → D_XMi4_5iO2rkET5.mjs} +1 -1
  25. package/browser/esm/{DgrAuRD2qr2DvFeJ.mjs → Dh84MDs-OhdCPCIg.mjs} +44 -44
  26. package/browser/esm/{DPhGQLNGmDZwODwJ.mjs → Dhw5XEJYFrkYjdU2.mjs} +94 -94
  27. package/browser/esm/{Cxjxk0ncRKx80I-w.mjs → DiXeQjc0WJGLSVEo.mjs} +1 -1
  28. package/browser/esm/DnR0xY7_iE3TmMcg.mjs +348 -0
  29. package/browser/esm/{DK899HhWX1HINMC1.mjs → DnqwX3-2NfGBaXXl.mjs} +25 -25
  30. package/browser/esm/{D64dM68B1pKYFzdP.mjs → DonQz2Tc3k9lNT8E.mjs} +2 -2
  31. package/browser/esm/{Bt8_m94tBdks209L.mjs → DvvqmUQ9Z0NFm1-4.mjs} +1 -1
  32. package/browser/esm/{BnC4-27Igwb8oDf2.mjs → Ln4gsmhqH1LyoANj.mjs} +44 -43
  33. package/browser/esm/{CUzYuYTTGsChC_kZ.mjs → MuNBN02MyZ558c_K.mjs} +2052 -1583
  34. package/browser/esm/{CRkYR-siY2C994KV.mjs → SwLp-iElwDjfcJtv.mjs} +1 -1
  35. package/browser/esm/{C9u8FUewte5ugUjH.mjs → UMQTbO0zNmBpzW1V.mjs} +725 -716
  36. package/browser/esm/aRXqxIzjuSLwawMh.mjs +18 -0
  37. package/browser/esm/index.mjs +482 -440
  38. package/browser/esm/{hCQJcmIzPDxDEv2q.mjs → oSCy1X5CJ1iYtGDp.mjs} +2 -2
  39. package/browser/esm/{DobHLF6VjHr7Xi40.mjs → qCqzZW74-fhaIG2V.mjs} +1 -1
  40. package/browser/esm/{CNdjyofiRu6CYOrr.mjs → r_EZapMBdyS4gUd-.mjs} +50 -48
  41. package/browser/esm/yuF8SbWfjBfrxcq5.mjs +367 -0
  42. package/licenses/dependencies.txt +71 -1
  43. package/node/esm/99miMotf3dOuG5Jk.mjs +372 -0
  44. package/node/esm/{-TA0MneBDKdGhsib.mjs → B3hBxzqJ2_hUylNr.mjs} +3329 -2852
  45. package/node/esm/{BNXLOEddJ6O9gYws.mjs → B5VmOC0jO9Zbh9Mq.mjs} +2 -2
  46. package/node/esm/{DhS6yWjrrSNIJMsn.mjs → B6jhx5pHPs2W5GE7.mjs} +234 -225
  47. package/node/esm/{DUTmDHbFbhLDT4F3.mjs → BCjHRVU8tC5lYypg.mjs} +1 -1
  48. package/node/esm/BEBt5fo__rvT2q_u.mjs +310 -0
  49. package/node/esm/{icn2nX5Z8e_3mNAv.mjs → BELc5aQ_pFPgbiso.mjs} +1 -1
  50. package/node/esm/{DrCf6ITcBhVOFpRj.mjs → BEdxa3I4VOiCsvy7.mjs} +7 -7
  51. package/node/esm/{D3ptRKzASqBut1DE.mjs → BLPrFp_jKGYgWPX1.mjs} +2 -2
  52. package/node/esm/{BskP3b8vUoIOGLY6.mjs → BSVttk12GXNfKZ9k.mjs} +2 -2
  53. package/node/esm/{D4ROK9UwDpS6jO3Z.mjs → BXg-D8Rc_iyB8p7X.mjs} +1 -1
  54. package/node/esm/{DV5CU37aEbFbWFL0.mjs → BfEdeOg4iYXaYTlh.mjs} +1 -1
  55. package/node/esm/BuyAYLI4s33-vmgG.mjs +18 -0
  56. package/node/esm/{C_xf5Bz30VqiJjXn.mjs → C-5JLSNof0FhkuFd.mjs} +1 -1
  57. package/node/esm/{eimUGjiIP-b8HiM6.mjs → C3S4hF1vn0NyJPPd.mjs} +52 -52
  58. package/node/esm/{BL2iiEoqxDEV2Xrg.mjs → CI8UIWR01z9QDlzH.mjs} +3348 -2610
  59. package/node/esm/{pYtP7wPyS96NQyXS.mjs → CPsGyt3vnOdLTShj.mjs} +25 -25
  60. package/node/esm/{CG-qBU5BAaVz7e-P.mjs → Ccocd9DTvOnlOE9D.mjs} +1 -1
  61. package/node/esm/{C14-R6tifRh7pc0p.mjs → CdSTmD2ZvG9NesNR.mjs} +1 -1
  62. package/node/esm/{Q_S1g46ZOTrdhTae.mjs → Crn6dnSQQRCQAnQ-.mjs} +1 -1
  63. package/node/esm/{DdoiuKg9BKubtF1V.mjs → Cyeq1rDslIqF1LKz.mjs} +1 -1
  64. package/node/esm/{Ci_zLYmCD7e-C79O.mjs → D30rC6AWaGGf3CaC.mjs} +1 -1
  65. package/node/esm/D4Y1WJgjiFEgbWrW.mjs +115 -0
  66. package/node/esm/{Vocy-I9dKzZMr0Ct.mjs → DLdXl0O0TXuyqLU4.mjs} +10898 -10685
  67. package/node/esm/{D8hO07ToAibIuniw.mjs → DbPUG2DcQ3T_QhcJ.mjs} +138 -136
  68. package/node/esm/{lGJ42sHqg5if2bba.mjs → DeFE8QfuCeGw-mvd.mjs} +458 -458
  69. package/node/esm/{CiIymQN6aJCul62g.mjs → DiCMnYA2bttmrX3q.mjs} +9 -9
  70. package/node/esm/{DhTya_mhmN53vskv.mjs → Dlk2ZYExFgQ0xE2H.mjs} +1 -1
  71. package/node/esm/{Btw4148Ot8ifhNc1.mjs → I-FZojIFWluC6X-j.mjs} +1 -1
  72. package/node/esm/{C99zzq8DImQXi4BQ.mjs → Lj98EH6coGdKUzuS.mjs} +10 -10
  73. package/node/esm/{B-HUPAcqvK0eeeCz.mjs → NA-8urR7T1NCwrgD.mjs} +38 -37
  74. package/node/esm/{DxazKtROyaI51dWl.mjs → YpOpRyciqQLIY1-G.mjs} +1 -1
  75. package/node/esm/{CkRYLed8Mmn3giNg.mjs → b3XnssSr9lmvAC2N.mjs} +2 -2
  76. package/node/esm/clgEkmEwfB28nkz2.mjs +351 -0
  77. package/node/esm/index.mjs +584 -540
  78. package/node/esm/{CRt3vXe6YmXzqk3H.mjs → pF2vCOTmrxPAB41Q.mjs} +102 -102
  79. package/node/esm/{CBuEu5Jk-LfaDy-H.mjs → uLrulyR7IXq0SF4j.mjs} +44 -44
  80. package/node/esm/{C_aL7CGS1lrNn1Ng.mjs → xRGObcoaGDnAZFnj.mjs} +1 -1
  81. package/package.json +10 -7
  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/scripting/enumManifest.browser.d.ts +7 -2
  257. package/types/src/sheet/IWorksheet.d.ts +2 -5
  258. package/types/src/sheet/NamedCellRange.d.ts +0 -21
  259. package/types/src/sheet/SheetCell.d.ts +8 -2
  260. package/types/src/sheet/Worksheet.d.ts +7 -48
  261. package/types/src/sheet/_DelimitedText.d.ts +13 -0
  262. package/types/src/sheet/_IgnoredErrors.d.ts +0 -12
  263. package/types/src/sheet/_ScalarListFactory.d.ts +0 -19
  264. package/types/src/sheet/_SheetCoords.d.ts +0 -7
  265. package/types/src/sheet/_SheetFilterUtils.d.ts +0 -8
  266. package/types/src/sheet/_SheetStateReader.d.ts +0 -10
  267. package/types/src/sheet/_SheetStateTypes.d.ts +0 -3
  268. package/types/src/sheet/_SheetUtils.d.ts +1 -1
  269. package/types/src/sheet/style/_RowLine.d.ts +32 -0
  270. package/types/src/sheet/style/_StyleUtils.d.ts +6 -14
  271. package/types/src/sheetView/_SheetViewUtils.d.ts +0 -1
  272. package/types/src/slicer/_BuiltInSlicerStyles.d.ts +0 -5
  273. package/types/src/style/ICellStyle.d.ts +4 -0
  274. package/types/src/table/AnchoredTable.d.ts +0 -147
  275. package/types/src/text/TextFrame.d.ts +4 -1
  276. package/types/src/text/TextStacked.d.ts +0 -24
  277. package/types/src/text/TextWrapper.d.ts +3 -5
  278. package/types/src/text/_LineBox.d.ts +24 -0
  279. package/types/src/text/_TextUtils.d.ts +5 -2
  280. package/types/src/text/_TextWrapperFallback.d.ts +2 -1
  281. package/types/src/wasm/sdkWasm.d.ts +1 -1
  282. package/types/src/workbook/Workbook.d.ts +0 -10
  283. package/browser/esm/2WuhYrIpYmOR5H73.mjs +0 -698
  284. package/browser/esm/CTe2qfmIUEad6FJv.mjs +0 -199
  285. package/browser/esm/CfRqiPDg6RBTg1EN.mjs +0 -367
  286. package/browser/esm/DVroRnhi-5IDXNgM.mjs +0 -210
  287. package/browser/esm/DwZCT7DZiiXoTweg.mjs +0 -14
  288. package/node/esm/BSvOluusoDM4z_dx.mjs +0 -811
  289. package/node/esm/CPI58duc0j0a-HpJ.mjs +0 -115
  290. package/node/esm/DggQ23jKMpwhENfa.mjs +0 -372
  291. package/node/esm/Dn1M7YWi25DeeYUb.mjs +0 -210
  292. package/node/esm/ZXPFcsT2zrALCZux.mjs +0 -289
@@ -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} */
@@ -1,26 +1,26 @@
1
1
  import { IRange, Scalar, InteropScalar, IRangeStats, IRuntime } from '@sheetxl/primitives';
2
2
  import { CoordUtils, Size, Bounds, Point } from '@sheetxl/utils';
3
3
  import { ITypes, ICollection, IProperties } from '../type';
4
- import { IWorkbook } from '../workbook';
5
- import { IListener } from '../listener';
6
4
  import { ITransaction } from '../transaction';
7
- import { BatchHandle } from '../transaction/_BatchHandle';
5
+ import { IListener } from '../listener';
8
6
  import { IResource, IResourceCollection } from '../resource';
9
7
  import { IStringCollection } from '../string';
10
8
  import { IProtection } from '../protection';
11
9
  import { IComment, ICommentCollection } from '../comment';
12
10
  import { IColor } from '../color';
13
11
  import { IHyperlink } from '../hyperlink';
12
+ import { IWorkbook } from '../workbook';
14
13
  import { ISort } from '../sort';
15
14
  import { IAutoFill } from '../autoFill';
15
+ import { ITable, ITableCollection } from '../table';
16
+ import { INamedCollection } from '../named';
17
+ import { IModuleCollection } from '../scripting';
18
+ import { BatchHandle } from '../transaction/_BatchHandle';
16
19
  import { IAnchored } from '../anchored';
17
20
  import { Anchored } from '../anchored/Anchored';
18
21
  import { IAnchoredMap } from '../anchored/IAnchoredMap';
19
- import { ITable, ITableCollection } from '../table';
20
22
  import { NamedTableSource } from '../table/_NamedTableSource';
21
23
  import { AnchoredTable } from '../table/AnchoredTable';
22
- import { INamedCollection } from '../named';
23
- import { IModuleCollection } from '../scripting';
24
24
  import { ModuleCollection } from '../scripting/ModuleCollection';
25
25
  import { IMovable, IMovableCollection } from '../movable';
26
26
  import { Movable } from '../movable/Movable';
@@ -75,9 +75,9 @@ import { ProtectionCheck } from './_SheetCoords';
75
75
  import { WorksheetProtection } from '../sheetProtection/WorksheetProtection';
76
76
  import { Outline } from '../outline/Outline';
77
77
  import { PageLayout } from '../print/PageLayout';
78
- import { SheetCellOptions } from './SheetCell';
79
78
  import { ICalculation } from '../calculation';
80
79
  import { ICalcGrid } from '../calculation/grid';
80
+ import { SheetCellOptions } from './SheetCell';
81
81
  import * as _SheetFilterUtils from './_SheetFilterUtils';
82
82
  /** The font colors a workbook writes its roles in, and a key that compares by content. */
83
83
  interface WorkbookRoleColors {
@@ -508,19 +508,6 @@ export declare class Worksheet implements IWorksheet {
508
508
  * @internal
509
509
  */
510
510
  protected _getKinds(): ISpatialMap<CellKind>;
511
- /**
512
- * The sheet's grid: the synchronous half of the calculation service for this sheet
513
- * (DESIGN-CALC-SERVICE §13.23, §13.24), holding everything a cell contains - the formulas, the
514
- * values and the indexes over them - and forwarding every verb to its backend.
515
- *
516
- * @remarks
517
- * A plain field, NOT part of `State` (§13.24 a): one grid serves every version of the sheet, so
518
- * a versioned slot would answer with the CURRENT maps from a historic record - which the sheet
519
- * reads (`_resolveInheritedFormats`, the snapshot sheets). What the grid HOLDS versions, in its
520
- * own record; its reads take the transaction to answer for. Opened by `_fromJSON`, so it is
521
- * absent until then; a snapshot sheet is handed the source's grid by `_clone`.
522
- * @internal
523
- */
524
511
  protected _calcGrid: ICalcGrid;
525
512
  /** `false` for a snapshot sheet, which holds its source's grid and must not close it. */
526
513
  protected _ownsCalcGrid: boolean;
@@ -1777,14 +1764,6 @@ export declare class Worksheet implements IWorksheet {
1777
1764
  getRowHeaders(): ISheetHeader;
1778
1765
  /** {@inheritDoc IWorksheet.getColumnHeaders} */
1779
1766
  getColumnHeaders(): ISheetHeader;
1780
- /**
1781
- * The sheet's grid, whatever the calculation hands back (DESIGN-CALC-SERVICE §5): opened from
1782
- * `json` (§6.6), the file's formulas, array extents and cached values, trusted. What the engine
1783
- * makes of them arrives through the grid's `onComplete`, before this returns when the engine is
1784
- * `Running`. The grid holds every cell map, and answers an `Off` save and a start's seed itself.
1785
- * A snapshot sheet over another sheet's state (a copy) shares the grid: the owner answers, with
1786
- * the state as it is now.
1787
- */
1788
1767
  protected _openCalcGrid(json: ICalcGrid.JSON | undefined): ICalcGrid;
1789
1768
  /** {@inheritDoc IWorksheet.toJSON} */
1790
1769
  toJSON(options?: IWorksheet.ToJSONOptions): Promise<IWorksheet.JSON>;
@@ -1923,16 +1902,6 @@ export declare class Worksheet implements IWorksheet {
1923
1902
  getCharts(): IChartCollection;
1924
1903
  /** @internal */
1925
1904
  protected _validateOrRemoveOverlaps(rangeCoords: IRange.Coords, type: string, table?: ITable | null, removeIfContains?: boolean, absorbAutoTable?: boolean): void;
1926
- /**
1927
- * The filter and sort criteria a sheet AutoFilter hands over to a table built in its place.
1928
- *
1929
- * @remarks
1930
- * Read BEFORE `_validateOrRemoveOverlaps` absorbs the AutoFilter and replayed once the table
1931
- * exists. Excel moves them across only when the table takes EXACTLY the AutoFilter's range —
1932
- * probed: one extra row or column, or a shifted start, and the new table starts clean. Answers
1933
- * `null` when there is nothing to carry, which is the common case.
1934
- * @internal
1935
- */
1936
1905
  protected _getAutoTableCarryOver(rangeCoords: IRange.Coords): {
1937
1906
  conditions: ICondition.Input[];
1938
1907
  sorts: ISort.Options[];
@@ -2100,16 +2069,6 @@ export declare class Worksheet implements IWorksheet {
2100
2069
  protected _getStyle(ranges: IRange.Coords[], anchor?: IRangeSelection.Coords, updateStyles?: (update: ICellStyle.Update, options?: ICellStyle.UpdateOptions) => void): ICellStyle;
2101
2070
  /** @internal */
2102
2071
  protected _initHeadersState(jsonColumns?: ISheetHeader.JSON, jsonRows?: ISheetHeader.JSON): void;
2103
- /**
2104
- * Tells the grid which rows or columns are hidden now, from inside the operation that changed
2105
- * them: the formulas that skip hidden cells recalculate under that operation.
2106
- *
2107
- * @remarks
2108
- * A restore is heard here too, with no operation open, and is not told: the grid's record of
2109
- * the set is restored with the sheet's, and the engine's with its own history
2110
- * (DESIGN-CALC-SERVICE §7.5). Telling it as well would land the restored set under the snapshot
2111
- * being left.
2112
- */
2113
2072
  protected _tellHidden(axis: IRange.Axis): void;
2114
2073
  /**
2115
2074
  * Drop every read-through cache that a data change can invalidate.
@@ -0,0 +1,13 @@
1
+ import { IFormulaContext, IRuntime, Scalar } from '@sheetxl/primitives';
2
+ /**
3
+ * Reads delimited text into rows of values, each field read as typed entry: what
4
+ * `IDeferContext.parseText` answers, and what a CSV import writes.
5
+ *
6
+ * @remarks
7
+ * Empty fields are blank. A last line with nothing on it is the file's closing newline, not a row.
8
+ * Rows are padded with blanks to the widest.
9
+ *
10
+ * @internal
11
+ */
12
+ export declare const parseDelimitedText: (runtime: IRuntime, text: string, options?: IFormulaContext.IDeferContext.ParseTextOptions) => Promise<Scalar[][]>;
13
+ //# sourceMappingURL=_DelimitedText.d.ts.map
@@ -11,18 +11,6 @@ import { IWorksheet } from './IWorksheet';
11
11
  export type ErrorCheckSet = readonly ICell.ErrorCheck[];
12
12
  /** The interned set of `checks`; `null` for none (an unknown name is dropped). */
13
13
  export declare function internChecks(checks: Iterable<ICell.ErrorCheck>): ErrorCheckSet | null;
14
- /**
15
- * The cells where Excel's error checks are ignored: one spatial map whose payload is the set of
16
- * checks a cell ignores. Presence is the ignore; an entry goes when its set empties. Immutable;
17
- * each change returns a new holder.
18
- *
19
- * @remarks
20
- * Excel's rules (`openpy-parity/probe-ignored-errors.ps1`, 2026-10-18): the regions move with
21
- * structural edits like cell content, an insert inside one splitting it; they are never copied
22
- * (copy, paste, fill, the destination of a cut); and writing or clearing a cell, contents or
23
- * formats, removes its ignores.
24
- * @internal
25
- */
26
14
  export declare class IgnoredErrors {
27
15
  static readonly Empty: IgnoredErrors;
28
16
  private readonly _map;
@@ -3,25 +3,6 @@ import { IStringCollection } from '../string';
3
3
  import { IRichDataKind, IRichDataCollection } from '../richData';
4
4
  import { IListLike } from '../collections';
5
5
  import { MixedTypedArrayList } from '../collections/MixedTypedArrayList';
6
- /**
7
- * Makes the list a run of cell values is stored as, over the sheet's string collection.
8
- *
9
- * The representation is chosen from what the writer saw ({@link Tuple.Hint}) and the run's length,
10
- * never by looking at the values again:
11
- * - shorter than {@link ScalarListFactory.TypedThreshold}: a plain array (a typed list costs
12
- * more than its values below that, measured at 64 on Node);
13
- * - one value throughout: a `RepeatingList` of period 1, which the engine reads once;
14
- * - otherwise a {@link MixedTypedArrayList}, strings, errors and rich values by id.
15
- *
16
- * @remarks
17
- * The typed list is the representation that crosses threads: a worker or the Rust engine reads
18
- * the codes and numbers from (shared) array buffers, and a string travels as its id into the
19
- * string table, a rich value as its id into the rich data collection (DESIGN-RICH-DATA-REGISTRY
20
- * §3.3; the wire format is DESIGN-CALC-SERVICE G7). A factory made with no rich data collection
21
- * keeps a run holding rich data as a plain array of the values.
22
- *
23
- * @internal
24
- */
25
6
  export declare class ScalarListFactory {
26
7
  /** Below this length a run is a plain array. */
27
8
  static readonly TypedThreshold = 64;
@@ -3,13 +3,6 @@ import { ICell } from '../cell';
3
3
  import { ICellRange, ICellRanges } from '../cellRange';
4
4
  import { IWorksheetProtection } from '../sheetProtection';
5
5
  import { SheetCoordContext } from './Worksheet';
6
- /**
7
- * Coordinate/address resolution for a {@link Sheet}: parses addresses into coords, validates bounds,
8
- * runs protection checks, and constructs the `ICellRange`/`ICellRanges` handles. Functions take a
9
- * {@link SheetCoordContext} (the caches/options/collections they read) rather than the sheet
10
- * instance; `Sheet` keeps thin delegators. See `private-assets/design/SHEET-SPLIT-DESIGN.md` §5.
11
- * @internal
12
- */
13
6
  /**
14
7
  * A callback that, given the parsed coords of an operation, returns the protection keys the operation
15
8
  * requires. Passed to {@link rangesToCoords} / {@link rangeToCoords} / {@link protectionCheck} so the
@@ -40,14 +40,6 @@ export interface FilterRuns {
40
40
  * Read-only: resolves every condition and settles the final visible and hidden runs.
41
41
  */
42
42
  export declare function evalFilter(sheet: Worksheet, coords: Readonly<IRange.Coords>, condition: ICondition.Input | ICondition.RangeOptions | null | undefined): Promise<FilterRuns>;
43
- /**
44
- * Writes the hidden bits {@link evalFilter} settled. Inside the caller's open transaction.
45
- *
46
- * @remarks
47
- * Full recompute, every apply (DESIGN-FILTER.md §2): unhide every row/column that now matches,
48
- * then hide every row/column that doesn't — including one the user hid manually, matching real
49
- * Excel AutoFilter (there's no persisted "hidden by filter" vs. "hidden by user" bit to preserve).
50
- */
51
43
  export declare function applyFilterRuns(sheet: Worksheet, runs: FilterRuns, options?: ITransaction.OperationOptions): void;
52
44
  /**
53
45
  * Sheet specific filter utils. Mirrors `_SheetSortUtils.doSort`: {@link evalFilter}, then one
@@ -71,16 +71,6 @@ export interface SheetReadContext {
71
71
  */
72
72
  getRoles?(): ISpatialMap<ICell.Role>;
73
73
  }
74
- /**
75
- * The read engine for a {@link Sheet}'s versioned state.
76
- *
77
- * These are stateless free functions: they take the pieces of sheet state they need explicitly
78
- * (spatial maps, headers) and never reach back into the `Sheet` instance. `Sheet` keeps thin
79
- * delegators that forward its internal fields here (see `_getRangedEntries`). Extracting the logic
80
- * this way keeps it testable in isolation and lets the state re-key / feature-map reworks touch a
81
- * small, self-contained surface. See `private-assets/design/SHEET-SPLIT-DESIGN.md` §5.2.
82
- * @internal
83
- */
84
74
  /** Header iterator options that walk only the visible spans (used for the ignore-hidden paths). */
85
75
  export declare const OptionRangeIteratorVisibleOnly: ICellHeaderRange.IteratorOptions;
86
76
  export interface GetTypedRangeOptions<T = any, E = any> {
@@ -297,9 +297,6 @@ export declare namespace RangeState {
297
297
  readonly Spills: "spills";
298
298
  readonly CalcStatus: "calcStatus";
299
299
  readonly CalcError: "calcError";
300
- /**
301
- * In a reference cycle, or downstream of one — evaluates to `0` (DESIGN-CIRCULAR-CALC.md §7).
302
- */
303
300
  readonly Circular: "circular";
304
301
  /**
305
302
  * Error VALUES (the `Error` scalar kind). Backed by the RECONCILED view
@@ -189,7 +189,7 @@ export declare function mergeOptions(optionsA: any, optionsB: any): any;
189
189
  /**
190
190
  * Returns a regEx. Either a regular regex or a Excel like wildcard regex.
191
191
  */
192
- export declare function builtFindReg(findText: string, matchCase: boolean, useRegex: boolean): RegExp;
192
+ export declare function builtFindReg(findText: string, matchCase: boolean, useRegex: boolean, matchEntireCell: boolean): RegExp;
193
193
  export declare function rangeTopLeft(range: IRange.Coords): IRange.Coords;
194
194
  /**
195
195
  * Given a selection, find the 'natural' bounding area to sort.
@@ -0,0 +1,32 @@
1
+ import { IFont } from '../../font/IFont';
2
+ import { LineBox, LineHeightRule } from '../../text/_LineBox';
3
+ /** One pixel above the font's box and one below. */
4
+ export declare const CELL_GUTTER_PX = 2;
5
+ /** The `format` of a `.rows.json` this version reads. */
6
+ export declare const ROWS_FORMAT = "sheetxl-font-rows/1";
7
+ /**
8
+ * A `.rows.json`, shipped beside a face's tables: Excel's row height for the face, in px at
9
+ * 96 dpi, at every integer ppem from `firstPpem` up to Excel's 409 pt cap.
10
+ */
11
+ export interface RowsJSON {
12
+ format: typeof ROWS_FORMAT;
13
+ family: string;
14
+ weight: number;
15
+ italic: boolean;
16
+ firstPpem: number;
17
+ /** `pitches[i]` is the pitch at `firstPpem + i`. */
18
+ pitches: number[];
19
+ }
20
+ /**
21
+ * Records a face's `.rows.json`; cells in that face size their lines by it from then on.
22
+ *
23
+ * @throws when the format is not one this reads, or fewer than two sizes are listed.
24
+ */
25
+ export declare function registerRows(json: RowsJSON): void;
26
+ /** Whether a face's `.rows.json` has been recorded. */
27
+ export declare function hasRows(face: IFont.AdvanceTable.Face): boolean;
28
+ /** The height of a row sized to one line of text in `table`'s face at `px` pixels per em. */
29
+ export declare const rowLineHeight: LineHeightRule;
30
+ /** The line a cell gives one line of text in `table`'s face at `px` pixels per em. */
31
+ export declare function cellLine(table: IFont.AdvanceTable, px: number): LineBox;
32
+ //# sourceMappingURL=_RowLine.d.ts.map
@@ -15,6 +15,12 @@ export declare function resolveAlwaysUnlocked(styles: IStyleCollection, direct:
15
15
  * @internal
16
16
  */
17
17
  export declare function resolveShowFormulas(styles: IStyleCollection, direct: Readonly<ICellStyle.Properties> | null | undefined): boolean;
18
+ /**
19
+ * The number format a cell with these direct content properties was given: its own, then its named
20
+ * style's. A named style's `General` is no format, and Normal's is not given to any cell.
21
+ * @internal
22
+ */
23
+ export declare function resolveGivenNumberFormat(styles: IStyleCollection, direct: Readonly<ICellStyle.Properties> | null | undefined): string | undefined;
18
24
  /**
19
25
  * The formula entries over `bounds` that protection lets a reader see.
20
26
  *
@@ -45,19 +51,5 @@ export declare function isEqualStrokeProperties(a: IBorders.StrokeProperties | u
45
51
  * same pieces a real stroke would.
46
52
  */
47
53
  export declare function splitBorderRange(border: IBorders.Properties, rangeFrom: IRange.Coords, rangeTo: IRange.Coords, isColumn: boolean): Partial<IBorders.Properties> | null | undefined;
48
- /**
49
- * Performs a shift but uses the entire range to ensure edge styles.
50
- *
51
- * @param options
52
- * @param entireRange
53
- *
54
- * @remarks
55
- * Returns an entry but requires the value be set/cloned.
56
- *
57
- * An entry that reaches the sheet's far edge is a header's: it keeps reaching it. An entry that
58
- * only starts at the near edge is an ordinary block, and moves or grows as the shift says: an
59
- * insert at its first row or column moves it whole, one strictly inside grows it (Excel-probed
60
- * 2026-10-18 for a fill and a merge: `A1:A3` + insert rows 1:2 is `A3:A5`, + insert row 2 is `A1:A4`).
61
- */
62
54
  export declare function getEdgeAwareShifted<T = any>(options: ISpatialMap.ShiftDetails<T>, entireRange?: IRange.Coords): ISpatialMap.Entry<T> | null;
63
55
  //# sourceMappingURL=_StyleUtils.d.ts.map
@@ -9,7 +9,6 @@ export declare const EmptyFreezePanes: IWorksheetView.FreezePanes;
9
9
  */
10
10
  export declare const EmptySelection: IRangeSelection.Coords;
11
11
  export declare const DefaultSheetProperties: IWorksheetView.Properties;
12
- /** The zoom a view mode opens at before one is set in it. Measured against Excel. */
13
12
  export declare const DefaultViewModeZoom: Readonly<Record<IWorksheetView.ViewMode, number>>;
14
13
  /**
15
14
  * A simple stepper.
@@ -1,9 +1,4 @@
1
1
  import { ISlicerStyle } from './ISlicerStyle';
2
- /**
3
- * Excel's built-in slicer styles, taken from Excel (each built-in duplicated and saved, the dxfs
4
- * read back; `private-assets/design/shapes/fixtures/slicers/`). Light 1–6 and Dark 1–6 are each one
5
- * design over the six accents; Other 1 and 2 stand alone.
6
- */
7
2
  /** The style a slicer is given when nothing names another. */
8
3
  export declare const DefaultSlicerStyleName: string;
9
4
  /**
@@ -147,6 +147,10 @@ export interface ICellStyle extends IFillable<ICellStyle, IFill.ISolid | IFill.I
147
147
  /**
148
148
  * Measure the text using the styling properties
149
149
  *
150
+ * @remarks
151
+ * The vertical metrics are a cell's line: `lineHeight` is the height of a row sized to one
152
+ * line of this text, which leaves room around the font's ascent and descent as Excel does.
153
+ *
150
154
  * @param text The text to measure.
151
155
  * @param size Size @defaultValue 'to the cell font.size'
152
156
  * @param family Family @defaultValue 'to the cell font.family'
@@ -238,27 +238,6 @@ export declare class AnchoredTable extends AbstractAnchored<State, ITable.Events
238
238
  * props, where {@link _showTotalsFromProps} finds it when the row comes back.
239
239
  */
240
240
  private _holdTotalsFromCells;
241
- /**
242
- * Keep every totals EXPRESSION a live formula while its row is hidden.
243
- *
244
- * @remarks
245
- * Excel's held totals formulas are live (probed, T2): hidden, they follow a column rename, a table
246
- * rename, a row inserted above and a row added to the table, A1 references included. Text in the
247
- * props follows none of that. So while the row is hidden each expression is ALSO a watch - a
248
- * formula the engine holds without a cell, which gets everything a cell formula gets - anchored
249
- * on the row below the table, where the totals row was and will be again. It moves with that row
250
- * on an insert, as the table's end does; when the table's end moves without one (a resize, an
251
- * auto expansion) it is re-anchored with the text it has by then, which is a move and leaves its
252
- * references where they were. Only the row matters: the text is A1, so it reads the same from
253
- * any column, and a column shift inside the table is no reason to touch it.
254
- *
255
- * The props keep the text the watch was made from. They are what a snapshot can restore and what
256
- * there is to read until the engine has registered the watch; {@link _readHeldTotal} prefers what
257
- * the engine has. A function number needs none of this - it is spelled from the column's name
258
- * when it is shown - and neither does a label.
259
- *
260
- * Derived from state, like the listeners, and called wherever they are re-derived.
261
- */
262
241
  private _syncHeldTotals;
263
242
  /**
264
243
  * A held expression as the model's grid holds it, or `null` when it holds none - not registered
@@ -266,22 +245,6 @@ export declare class AnchoredTable extends AbstractAnchored<State, ITable.Events
266
245
  */
267
246
  private _readHeldTotal;
268
247
  private _removeHeldTotals;
269
- /**
270
- * Keep every calculated column's formula a live formula.
271
- *
272
- * @remarks
273
- * A calculated column remembers its formula apart from its cells - any of them may hold
274
- * something else, the first included - and Excel's is live (probed, G5 of
275
- * `probe-table-columnfill-edges.ps1`): it follows a sheet row inserted above the table, a column
276
- * inserted inside it and a column rename, exceptions or not. It is the problem
277
- * {@link _syncHeldTotals} solves and the same holder: the text in the column props, and a watch
278
- * made from it, here on a body cell of the column.
279
- *
280
- * The text is always the formula as it reads in the FIRST body row, which is how a file stores
281
- * it and what {@link _readHeldCalculated} images, wherever in the body the watch has been pushed
282
- * to. So a watch is only made again when it has left the column's body, or when the props hold
283
- * a different text.
284
- */
285
248
  private _syncHeldCalculated;
286
249
  /**
287
250
  * A calculated column's formula as the engine has it now, as it reads in the first body row, or
@@ -303,19 +266,6 @@ export declare class AnchoredTable extends AbstractAnchored<State, ITable.Events
303
266
  * after it.
304
267
  */
305
268
  private _calculatedTextAt;
306
- /**
307
- * What Excel gives a totals row the FIRST time it is shown, and never again: an aggregate in the
308
- * last column, chosen by what the column holds. Held in the props, which is where
309
- * {@link _showTotalsFromProps} is about to look.
310
- *
311
- * @remarks
312
- * Probed (`probe-table-totals-firstshow.ps1`): `109` (sum) when every cell of the body that holds
313
- * anything holds a number - a formula's result counts, and so does a currency or a percent
314
- * format - and `103` (count) as soon as one is text, a boolean, an error, or a number shown as a
315
- * date or a time, and for a column with nothing in it. A row shown a second time is given
316
- * nothing, even when the aggregate was cleared in between, which is what `totalsRowShown` records.
317
- * The `Total` label is the first column's from the day the table is made.
318
- */
319
269
  private _holdFirstShowTotals;
320
270
  /**
321
271
  * The region a bare cursor on this table traverses within, or `null` to leave the move alone.
@@ -465,61 +415,8 @@ export declare class AnchoredTable extends AbstractAnchored<State, ITable.Events
465
415
  /** @internal */
466
416
  protected _processExpandListener(): void;
467
417
  private _onExpandListenerEvent;
468
- /**
469
- * A formula has been entered in the row just below the table: that row becomes the totals row, in
470
- * the one step of the expansion (Excel: `Table AutoExpansion`).
471
- *
472
- * @remarks
473
- * Probed (`probe-table-autototals.ps1`). What was entered stays where it is and is its column's
474
- * total from here on. The other columns total nothing - not the `Total` label a table is made
475
- * with, not the aggregate a first showing gives - unless the table has shown a totals row before,
476
- * whose totals then come back beside it as they would with the row toggled on.
477
- */
478
418
  private _takeRowBelowAsTotals;
479
- /**
480
- * What a commit that wrote into the body means for the columns it wrote to: a formula to fill
481
- * down the column, a formula to remember, or one to forget.
482
- *
483
- * @remarks
484
- * Probed (`probe-table-columnfill.ps1` and `-edges.ps1`). A formula written to ONE body cell is
485
- * filled down its column when every other body cell of the column is blank, or when the column
486
- * is calculated and every other body cell still holds one formula - so editing the formula of
487
- * a calculated column edits the column, and a column holding an exception, a blank one
488
- * included, is left alone. Nothing is asked about what the written cell held before. A write of
489
- * two cells or more never fills, whatever it wrote. The fill is a commit of its own (Excel:
490
- * `Fill`), recorded after the write it follows, so the first undo takes back the fill and
491
- * leaves the formula that was typed. Hidden and filtered rows are filled like any other, and
492
- * the totals row never is.
493
- *
494
- * A write that fills nothing can still change what the column remembers, and that is part of
495
- * the write, not a step of its own: a formula written over the whole body in one write is
496
- * remembered, and a column left with no formula in it at all remembers none.
497
- *
498
- * Everything here is asked of whole rectangles and of formula blocks - a filled column is one
499
- * block - never cell by cell.
500
- *
501
- * @param changed Every range the commit changed, unclipped.
502
- * @param bodyBefore The body as it was when the commit landed. A row the table has taken since
503
- * is not one the write could have filled from: a formula written just below a table becomes a
504
- * row of it and fills nothing.
505
- */
506
419
  private _processBodyWrite;
507
- /**
508
- * A table has just been made over cells that were already there: a column whose cells hold one
509
- * formula is a calculated column from the start.
510
- *
511
- * @remarks
512
- * Probed (`probe-table-columnfill-created.ps1`). Excel looks at the LAST five body rows and no
513
- * further. The column remembers the formula of its last body cell when at most one of the other
514
- * four holds anything else - another formula, a constant, a blank. So `aaaaaabbbb` remembers
515
- * `b`, `baaaa` and `ab` remember `a` and `b`, and `aabbb`, `aaab` and `aaa_` remember nothing.
516
- * It is not a majority, and nothing above the five rows is ever asked.
517
- *
518
- * The sheet calls this for a table it has just made, never for one it loads: a file says which
519
- * of its columns are calculated, and a column of identical formulas is not one unless it does.
520
- *
521
- * @internal
522
- */
523
420
  _detectCalculatedColumns(): void;
524
421
  /**
525
422
  * Every calculated column's formula as it reads in `rowIndex`, by column index, or `null` when
@@ -532,13 +429,6 @@ export declare class AnchoredTable extends AbstractAnchored<State, ITable.Events
532
429
  * an insert, which the new row names as it was before the insert moved it.
533
430
  */
534
431
  private _calculatedTextsAt;
535
- /**
536
- * Give new body rows each calculated column's formula (probed, F4: a row added to the table is
537
- * given it whatever the column's other cells hold). A column whose new cells already hold
538
- * something - the write the table expanded for - keeps it.
539
- *
540
- * @param texts From {@link _calculatedTextsAt}, for `rowStart`.
541
- */
542
432
  private _writeCalculatedRows;
543
433
  /**
544
434
  * Fill the formula in `from` down the body of its column, and have the column remember it.
@@ -802,43 +692,6 @@ export declare class AnchoredTable extends AbstractAnchored<State, ITable.Events
802
692
  * its header cell rather than by a generated one.
803
693
  */
804
694
  private _setAnchor;
805
- /**
806
- * Move the totals row to the row a resize ends the table on.
807
- *
808
- * @remarks
809
- * Excel moves the row rather than rewriting it (probed, `probe-table-totals-refit.ps1`): what it
810
- * passes on the way becomes body - growing over `70, 80` makes them the last two body rows, and
811
- * shrinking leaves the body rows given up sitting below the totals - and nothing outside the
812
- * table's columns or below the two rows involved ends up anywhere else.
813
- *
814
- * That is a rotation of the totals row past the rows between, done here with the sheet's own
815
- * shifts - inserts and deletes of the table's columns - so that what names a cell follows it and
816
- * nothing below the two rows is left anywhere else. A shift carries cells but cannot reorder
817
- * them, so one side of the rotation has to be written again, and which side depends on what the
818
- * totals row passes:
819
- *
820
- * - **Growing over blank rows**, the usual case, the blank rows are the side given up. Rows are
821
- * inserted above the totals row, which carries it down whole - its formats, its formulas and
822
- * every reference to its cells, exactly as Excel has them - and the blank rows it pushed out
823
- * below are deleted.
824
- * - **Growing over content, and shrinking**, the rows between are the user's and have to travel,
825
- * so the totals row is the side written again: a blank row is opened where it is going, its
826
- * cells are written there - formula, value and the cell's own format - and the row they came
827
- * from is deleted, which closes the gap. Two divergences follow from writing rather than
828
- * moving. A reference to a totals CELL from elsewhere (`=C7`) becomes `#REF!` where Excel
829
- * re-points it; `Table[[#Totals],[Column]]` is unaffected. And, shrinking, an A1 reference
830
- * into the rows being given up is not pushed down with them (Excel: `SUM(C3:C5)` becomes
831
- * `SUM(C3:C6)`), because the engine re-images a formula for a shift once it has settled and
832
- * the text written here is from before; Excel's own result there is a circular reference,
833
- * the totals cell sitting inside that range.
834
- *
835
- * The table steps back above both rows first. A shift inside a table is the table's business
836
- * ({@link _processContainerShift} would hide a totals row whose row is deleted); one below it is
837
- * not.
838
- *
839
- * @param from The anchor the table has now, totals row included.
840
- * @param rowEnd The row the totals row is going to.
841
- */
842
695
  private _moveTotalsRow;
843
696
  /**
844
697
  * Bring the column properties in line with a new width: a column taken in is appended (or
@@ -5,6 +5,7 @@ import { ITextLine } from './TextLine';
5
5
  import { ITextParagraph } from './TextParagraph';
6
6
  import { ITextFrame } from './ITextFrame';
7
7
  import { ITextBoxAlignment } from './TextBoxAlignment';
8
+ import { LineHeightRule } from './_LineBox';
8
9
  export declare class TextFrame {
9
10
  private _private;
10
11
  private _bounds;
@@ -16,7 +17,9 @@ export declare class TextFrame {
16
17
  private _lastLayoutFonts;
17
18
  private _defaultFont;
18
19
  private _alignment;
19
- constructor(overrides: Partial<ITextFrame>, defaultFont: IFontStyle, alignment: ITextBoxAlignment, lines?: ITextLine[] | null, bounds?: Bounds | null, textBounds?: Bounds | null);
20
+ /** How tall each line is when laid out; the font's own line when `null`. */
21
+ private _lineHeight;
22
+ constructor(overrides: Partial<ITextFrame>, defaultFont: IFontStyle, alignment: ITextBoxAlignment, lines?: ITextLine[] | null, bounds?: Bounds | null, textBounds?: Bounds | null, lineHeight?: LineHeightRule | null);
20
23
  visitParas(visitor: TextVisitor): void;
21
24
  visitLines(visitor: TextVisitor): void;
22
25
  layout(size?: Partial<Size> | null): ITextFrame;
@@ -1,29 +1,5 @@
1
1
  import { Bounds } from '@sheetxl/utils';
2
2
  import { ITextFrame } from './ITextFrame';
3
- /**
4
- * Stacked cell-text layout — Excel's "Vertical Text" (`textRotation="255"`).
5
- *
6
- * Stacked text is not rotated. Every glyph stays upright and occupies one SLOT of the font's line
7
- * pitch, glyphs advancing downward in a column. Measured against Excel (hidden-COM probes, see
8
- * `VERTICAL-TEXT-PLAN.md`):
9
- *
10
- * 1. Columns come from explicit line breaks — one column per line, left → right in reading order —
11
- * and, when the cell wraps, from breaking a column that would exceed the content height: greedy
12
- * at spaces (the space at a break is consumed), per glyph inside a word longer than the capacity.
13
- * It is the horizontal wrap rule transposed. An unwrapped cell keeps one column; a line break
14
- * there is a blank slot.
15
- * 2. Leading and trailing spaces of a column are measured but never painted (see
16
- * {@link layoutColumns}); inner spaces are blank slots.
17
- * 3. Each column is aligned on its own by the vertical alignment (Top / Center / Bottom; Justify
18
- * and Distributed behave as Top and Center — nothing is spread). The horizontal alignment places
19
- * the group of columns; the caller resolves General (Excel centers it). Columns are one pitch
20
- * wide and glyphs center in them.
21
- * 4. Nothing overflows: the footprint clips to the cell on both axes.
22
- *
23
- * All output is pure geometry, renderer-agnostic: a DOM renderer maps each column to a box of
24
- * `pitch` line-height with one glyph per line; a canvas renderer paints each glyph centered in
25
- * its slot.
26
- */
27
3
  /**
28
4
  * One stacked column.
29
5
  */
@@ -1,4 +1,5 @@
1
1
  import { IFontCollection } from '../font';
2
+ import { LineHeightRule } from './_LineBox';
2
3
  /**
3
4
  * Simple Text Line Wrapper. Is not useful for Rich Text (yet). see TextLayout.
4
5
  */
@@ -18,6 +19,8 @@ export interface TextWrapperOptions {
18
19
  * This affects the width but not the height of the line.
19
20
  */
20
21
  superSub?: boolean;
22
+ /** How tall each line is; without one a line is as tall as the font's own metrics ask. */
23
+ lineHeight?: LineHeightRule | null;
21
24
  indent?: number;
22
25
  }
23
26
  export interface TextWrapperResults {
@@ -74,11 +77,6 @@ export declare class TextWrapper {
74
77
  /** Whether the next wrap runs in the Rust wrapper. */
75
78
  get isNative(): boolean;
76
79
  wrap(text: string, options?: TextWrapperOptions | null): TextWrapperResults;
77
- /**
78
- * The wrap through the Rust wrapper: the text crosses the boundary once and the lines come
79
- * back as one flat array, {@link NATIVE_LINE_STRIDE} numbers each (DESIGN-FONTS §6.2:
80
- * one call per wrap). Its offsets are UTF-8 bytes, turned into UTF-16 positions here.
81
- */
82
80
  private _wrapNative;
83
81
  }
84
82
  //# sourceMappingURL=TextWrapper.d.ts.map