@sheetxl/sdk 0.7.28-beta.4 → 0.8.0-beta.2

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 (355) hide show
  1. package/THIRD-PARTY-NOTICES.md +1 -1
  2. package/browser/cjs/4f5eoQQfV-V7LO2_.cjs +1 -0
  3. package/browser/cjs/BEnEDC1m546-gzWS.cjs +1 -0
  4. package/browser/cjs/CwCUa4IzGNGissLL.cjs +1 -0
  5. package/browser/cjs/Dg3GaW0QWwnlqetX.cjs +1 -0
  6. package/browser/cjs/KWQPie2u7AP69web.cjs +93 -0
  7. package/browser/cjs/index.cjs +2 -2
  8. package/browser/esm/{DBIu6NUHIcxOOBQp.mjs → BJ9hcZAGY8Tj5_9L.mjs} +1 -1
  9. package/browser/esm/C8vpA2ZBtZf6w4nq.mjs +394 -0
  10. package/browser/esm/DDojiE2-oycJ7qGi.mjs +20 -0
  11. package/browser/esm/DEPT7zmpiMdZ-_qC.mjs +70253 -0
  12. package/browser/esm/DOvCi3lf49To36WP.mjs +8 -0
  13. package/browser/esm/{CHSahmMFYNB0Ajkf.mjs → Dq3sc4B_HQHBrT5N.mjs} +2 -2
  14. package/browser/esm/index.mjs +871 -696
  15. package/browser/esm/{CKk58ZLcrllMzfou.mjs → trwZArJQQq7K9kL7.mjs} +2 -2
  16. package/licenses/dependencies.txt +204 -204
  17. package/node/esm/CGWsQOMWdnDeF4dX.mjs +8 -0
  18. package/node/esm/{DUYP6faJJHCaW1Xf.mjs → CL9MI-b6D9BmtVXW.mjs} +1 -1
  19. package/node/esm/CressiwiIhxCVp1v.mjs +28 -0
  20. package/node/esm/O2cOO3xIynWUgOWe.mjs +403 -0
  21. package/node/esm/index.mjs +53973 -38584
  22. package/package.json +6 -7
  23. package/resources/locales/de/model.msg.json +45 -9
  24. package/resources/locales/en/model.msg.json +42 -9
  25. package/types/scripting-api.json +7093 -0
  26. package/types/scripting-enums.json +54 -4
  27. package/types/scripting.d.ts +7185 -1079
  28. package/types/src/anchored/AbstractAnchored.d.ts +18 -8
  29. package/types/src/anchored/AnchoredMap.d.ts +2 -0
  30. package/types/src/anchored/IAnchoredMap.d.ts +52 -4
  31. package/types/src/autoFill/AutoFill.d.ts +316 -32
  32. package/types/src/autoFill/IAutoFill.d.ts +232 -15
  33. package/types/src/border/{IBorder.d.ts → IBorders.d.ts} +41 -40
  34. package/types/src/border/index.d.ts +1 -1
  35. package/types/src/calculation/Calculation.d.ts +745 -35
  36. package/types/src/calculation/ExternalBookBindings.d.ts +118 -0
  37. package/types/src/calculation/FormulaText.d.ts +74 -0
  38. package/types/src/calculation/ICalculation.d.ts +318 -81
  39. package/types/src/calculation/INamedFormulasCollection.d.ts +5 -8
  40. package/types/src/calculation/NamedFormulaCollection.d.ts +139 -107
  41. package/types/src/calculation/NamedLambdaFunction.d.ts +28 -0
  42. package/types/src/calculation/TokenType.d.ts +9 -0
  43. package/types/src/calculation/Types.d.ts +83 -2
  44. package/types/src/calculation/_CloneBoundary.d.ts +80 -0
  45. package/types/src/calculation/compiler/ASTTypes.d.ts +58 -0
  46. package/types/src/calculation/compiler/CompilerUtils.d.ts +134 -12
  47. package/types/src/calculation/compiler/FormulaCompiler.d.ts +29 -4
  48. package/types/src/calculation/compiler/FormulaParser.d.ts +1 -2
  49. package/types/src/calculation/compiler/LiteTransform.d.ts +17 -0
  50. package/types/src/calculation/compiler/ParserUtils.d.ts +26 -1
  51. package/types/src/calculation/compiler/SRParser.d.ts +2 -1
  52. package/types/src/calculation/compiler/Types.d.ts +79 -9
  53. package/types/src/calculation/executor/CalcExecutor.d.ts +422 -34
  54. package/types/src/calculation/executor/CalcExecutorUtils.d.ts +43 -2
  55. package/types/src/calculation/executor/CircularReference.d.ts +2 -0
  56. package/types/src/calculation/formula/Formula.d.ts +58 -21
  57. package/types/src/calculation/formula/FormulaBlock.d.ts +124 -21
  58. package/types/src/calculation/formula/FormulaRecordView.d.ts +79 -0
  59. package/types/src/calculation/formula/IFormulaBlock.d.ts +261 -67
  60. package/types/src/calculation/formula/LambdaValue.d.ts +15 -16
  61. package/types/src/calculation/formula/LazyValue.d.ts +96 -0
  62. package/types/src/calculation/formula/TokenUtils.d.ts +25 -1
  63. package/types/src/calculation/formula/index.d.ts +1 -0
  64. package/types/src/calculation/functions/FunctionDeclarations.d.ts +31 -0
  65. package/types/src/calculation/functions/initializeFunctions.d.ts +15 -2
  66. package/types/src/calculation/grid/CalcGrid.d.ts +384 -158
  67. package/types/src/calculation/grid/CalcGridBackend.d.ts +450 -0
  68. package/types/src/calculation/grid/CalcGridProxy.d.ts +133 -0
  69. package/types/src/calculation/grid/CalcGridUtils.d.ts +62 -12
  70. package/types/src/calculation/grid/FormulaEntry.d.ts +129 -0
  71. package/types/src/calculation/grid/FormulaHost.d.ts +236 -0
  72. package/types/src/calculation/grid/ICalcGrid.d.ts +456 -143
  73. package/types/src/calculation/grid/_CalcRequest.d.ts +272 -0
  74. package/types/src/calculation/grid/index.d.ts +4 -0
  75. package/types/src/calculation/index.d.ts +2 -0
  76. package/types/src/calculation/spatial/ContentfulSpatialValue.d.ts +6 -2
  77. package/types/src/calculation/spatial/FormulaSpatialValue.d.ts +339 -11
  78. package/types/src/calculation/spatial/SpillEntry.d.ts +20 -5
  79. package/types/src/calculation/spatial/TouchedWindows.d.ts +86 -0
  80. package/types/src/calculation/spatial/index.d.ts +1 -0
  81. package/types/src/calculation/state/CalcInputs.d.ts +41 -0
  82. package/types/src/calculation/state/CalcNode.d.ts +160 -29
  83. package/types/src/calculation/state/CalcScope.d.ts +37 -0
  84. package/types/src/calculation/state/CalcState.d.ts +22 -1
  85. package/types/src/calculation/state/CalculationContext.d.ts +39 -3
  86. package/types/src/calculation/state/IContextContainer.d.ts +159 -26
  87. package/types/src/calculation/state/_PendingOverlayGrid.d.ts +163 -0
  88. package/types/src/calculation/state/_ReadObservedGrid.d.ts +74 -8
  89. package/types/src/calculation/state/index.d.ts +1 -0
  90. package/types/src/calculation/symbol/ExternalSheetSymbols.d.ts +80 -0
  91. package/types/src/calculation/symbol/ISymbolRegistry.d.ts +23 -0
  92. package/types/src/calculation/symbol/IndirectSymbolProvider.d.ts +16 -2
  93. package/types/src/calculation/symbol/SheetSymbolProvider.d.ts +63 -3
  94. package/types/src/calculation/symbol/SymbolRegistry.d.ts +20 -0
  95. package/types/src/calculation/symbol/index.d.ts +3 -2
  96. package/types/src/cell/ICell.d.ts +78 -23
  97. package/types/src/cell/ICellProtection.d.ts +50 -10
  98. package/types/src/cellRange/ICellRange.d.ts +368 -90
  99. package/types/src/cellRange/ICellRanges.d.ts +9 -7
  100. package/types/src/chart/Chart.d.ts +72 -2
  101. package/types/src/chart/ChartCollection.d.ts +26 -0
  102. package/types/src/chart/IChart.d.ts +162 -9
  103. package/types/src/chart/IChartCollection.d.ts +25 -0
  104. package/types/src/chart/_ChartXml.d.ts +70 -0
  105. package/types/src/chart/index.d.ts +1 -3
  106. package/types/src/collections/ArraysGrid.d.ts +1 -1
  107. package/types/src/collections/IGrid.d.ts +1 -1
  108. package/types/src/collections/ISparseGrid.d.ts +9 -0
  109. package/types/src/collections/ISpatialMap.d.ts +59 -21
  110. package/types/src/collections/ImmutableList.d.ts +28 -0
  111. package/types/src/collections/MixedTypedArrayList.d.ts +168 -108
  112. package/types/src/collections/OverlappingRangeIterator.d.ts +13 -17
  113. package/types/src/collections/RepeatingList.d.ts +7 -0
  114. package/types/src/collections/ScalarGrid.d.ts +50 -0
  115. package/types/src/collections/SparseGrid.d.ts +1 -1
  116. package/types/src/collections/SpatialMap.d.ts +13 -21
  117. package/types/src/collections/Tuple.d.ts +128 -16
  118. package/types/src/collections/_GridUtils.d.ts +19 -6
  119. package/types/src/collections/_RangeSweep.d.ts +97 -0
  120. package/types/src/collections/_SpatialUtils.d.ts +20 -2
  121. package/types/src/collections/index.d.ts +1 -0
  122. package/types/src/comment/Comment.d.ts +159 -0
  123. package/types/src/comment/CommentCollection.d.ts +40 -0
  124. package/types/src/comment/IComment.d.ts +319 -48
  125. package/types/src/comment/ICommentCollection.d.ts +90 -0
  126. package/types/src/comment/_CommentUtils.d.ts +28 -0
  127. package/types/src/comment/index.d.ts +1 -0
  128. package/types/src/condition/AnchoredConditional.d.ts +76 -17
  129. package/types/src/condition/BuiltInOperators/AbstractOperator.d.ts +8 -7
  130. package/types/src/condition/BuiltInOperators/EqualToOperator.d.ts +2 -1
  131. package/types/src/condition/BuiltInOperators/ExpressionOperator.d.ts +3 -6
  132. package/types/src/condition/BuiltInOperators/InSetOperator.d.ts +1 -1
  133. package/types/src/condition/BuiltinSelectors/BaseSelector.d.ts +7 -0
  134. package/types/src/condition/BuiltinSelectors/ListSelector.d.ts +9 -0
  135. package/types/src/condition/Condition.d.ts +16 -0
  136. package/types/src/condition/ICondition.d.ts +86 -33
  137. package/types/src/condition/_ConditionFormula.d.ts +152 -0
  138. package/types/src/condition/_ConditionUtils.d.ts +73 -10
  139. package/types/src/conditionalFormat/ConditionalFormat.d.ts +21 -10
  140. package/types/src/conditionalFormat/ConditionalFormatCollection.d.ts +19 -8
  141. package/types/src/conditionalFormat/IConditionalFormat.d.ts +5 -3
  142. package/types/src/conditionalFormat/IConditionalFormatCollection.d.ts +2 -0
  143. package/types/src/dataValidation/DataValidation.d.ts +50 -3
  144. package/types/src/dataValidation/DataValidationCollection.d.ts +20 -9
  145. package/types/src/dataValidation/IDataValidation.d.ts +119 -30
  146. package/types/src/dataValidation/IDataValidationCollection.d.ts +10 -2
  147. package/types/src/date/DateUtils.d.ts +20 -0
  148. package/types/src/date/_DateUtils.d.ts +91 -7
  149. package/types/src/externalBook/ExternalBookCollection.d.ts +145 -12
  150. package/types/src/externalBook/ExternalBookName.d.ts +96 -0
  151. package/types/src/externalBook/IExternalBook.d.ts +170 -18
  152. package/types/src/externalBook/IExternalBookCollection.d.ts +79 -7
  153. package/types/src/externalBook/index.d.ts +1 -0
  154. package/types/src/fill/IStroke.d.ts +1 -1
  155. package/types/src/filter/IFilter.d.ts +29 -4
  156. package/types/src/font/IFont.d.ts +17 -0
  157. package/types/src/history/IHistory.d.ts +3 -2
  158. package/types/src/i18n/LanguagePack.d.ts +12 -4
  159. package/types/src/index.d.ts +3 -0
  160. package/types/src/io/AbstractBackingStore.d.ts +24 -1
  161. package/types/src/io/ArrayBackingStore.d.ts +1 -1
  162. package/types/src/io/EmbeddedPart.d.ts +20 -0
  163. package/types/src/io/IEmbeddedPart.d.ts +63 -0
  164. package/types/src/io/IWorkbookIO.d.ts +185 -18
  165. package/types/src/io/WorkbookIO.d.ts +9 -0
  166. package/types/src/io/WorkbookOrigin.d.ts +20 -11
  167. package/types/src/io/WorkbookOriginProvider.d.ts +46 -0
  168. package/types/src/io/_XmlFragment.d.ts +49 -0
  169. package/types/src/io/index.d.ts +1 -0
  170. package/types/src/lib/file/file.browser.d.ts +19 -5
  171. package/types/src/lib/file/file.node.d.ts +5 -0
  172. package/types/src/lib/utils/_Utils.d.ts +18 -0
  173. package/types/src/lib/utils/utils.browser.d.ts +9 -3
  174. package/types/src/license/license-key.d.ts +27 -0
  175. package/types/src/listener/IListener.d.ts +12 -7
  176. package/types/src/listener/ListenerEmitter.d.ts +46 -5
  177. package/types/src/model/AbstractModel.d.ts +14 -5
  178. package/types/src/movable/Control.d.ts +57 -0
  179. package/types/src/movable/IControl.d.ts +84 -0
  180. package/types/src/movable/IMovable.d.ts +23 -1
  181. package/types/src/movable/IMovableCollection.d.ts +2 -0
  182. package/types/src/movable/Movable.d.ts +4 -6
  183. package/types/src/movable/MovableCollection.d.ts +7 -7
  184. package/types/src/movable/index.d.ts +4 -0
  185. package/types/src/named/AbstractNamed.d.ts +1 -1
  186. package/types/src/named/INamed.d.ts +4 -1
  187. package/types/src/named/INamedCollection.d.ts +26 -0
  188. package/types/src/named/NamedCollection.d.ts +16 -15
  189. package/types/src/numFmt/BuiltInFormats.d.ts +15 -7
  190. package/types/src/numFmt/IFormatEngine.d.ts +2 -0
  191. package/types/src/numFmt/NumfmtFormatEngine.d.ts +2 -0
  192. package/types/src/person/IPerson.d.ts +99 -0
  193. package/types/src/person/IPersonCollection.d.ts +51 -0
  194. package/types/src/person/Person.d.ts +32 -0
  195. package/types/src/person/PersonCollection.d.ts +49 -0
  196. package/types/src/person/index.d.ts +3 -0
  197. package/types/src/picture/IPicture.d.ts +2 -0
  198. package/types/src/picture/Picture.d.ts +2 -0
  199. package/types/src/pivot/IPivotTable.d.ts +107 -0
  200. package/types/src/pivot/IPivotTableCollection.d.ts +25 -0
  201. package/types/src/pivot/PivotTable.d.ts +57 -0
  202. package/types/src/pivot/PivotTableCollection.d.ts +25 -0
  203. package/types/src/pivot/index.d.ts +6 -0
  204. package/types/src/primitives/CompositeRangeStats.d.ts +2 -0
  205. package/types/src/primitives/Criteria.d.ts +1 -1
  206. package/types/src/primitives/LambdaBrand.d.ts +21 -0
  207. package/types/src/primitives/PrimitiveUtils.d.ts +60 -21
  208. package/types/src/primitives/Range.d.ts +105 -25
  209. package/types/src/primitives/RangeStats.d.ts +24 -1
  210. package/types/src/primitives/ReferenceRange.d.ts +42 -0
  211. package/types/src/primitives/Runtime.d.ts +15 -2
  212. package/types/src/primitives/stats/FrequencyStats.d.ts +9 -0
  213. package/types/src/primitives/stats/LookupIndex.d.ts +46 -0
  214. package/types/src/primitives/stats/SortedNumbers.d.ts +2 -0
  215. package/types/src/primitives/stats/index.d.ts +1 -0
  216. package/types/src/print/IPrint.d.ts +0 -22
  217. package/types/src/protectedRange/IProtectedRange.d.ts +4 -0
  218. package/types/src/protectedRange/IProtectedRangeCollection.d.ts +2 -0
  219. package/types/src/protectedRange/ProtectedRange.d.ts +1 -4
  220. package/types/src/protectedRange/ProtectedRangeCollection.d.ts +19 -8
  221. package/types/src/protection/DefaultProtection.d.ts +12 -1
  222. package/types/src/protection/IProtection.d.ts +36 -2
  223. package/types/src/reference/ReferenceUtils.d.ts +80 -0
  224. package/types/src/reference/index.d.ts +2 -0
  225. package/types/src/resource/IResource.d.ts +21 -1
  226. package/types/src/resource/IResourceCollection.d.ts +9 -1
  227. package/types/src/resource/ResourceCollection.d.ts +6 -6
  228. package/types/src/scripting/FunctionArguments.d.ts +22 -0
  229. package/types/src/scripting/FunctionCollection.d.ts +41 -11
  230. package/types/src/scripting/IFunctionCollection.d.ts +41 -0
  231. package/types/src/scripting/IModule.d.ts +25 -0
  232. package/types/src/scripting/IModuleCollection.d.ts +17 -0
  233. package/types/src/scripting/IScript.d.ts +18 -0
  234. package/types/src/scripting/Module.d.ts +34 -6
  235. package/types/src/scripting/ModuleCollection.d.ts +17 -12
  236. package/types/src/scripting/Runtime.d.ts +15 -0
  237. package/types/src/scripting/Scripts.d.ts +2 -0
  238. package/types/src/scripting/TypedFunction.d.ts +197 -4
  239. package/types/src/scripting/_FunctionIndex.d.ts +5 -0
  240. package/types/src/scripting/_ModuleUtils.d.ts +11 -1
  241. package/types/src/scripting/_ScriptUtils.d.ts +3 -0
  242. package/types/src/scripting/declarations.browser.d.ts +10 -0
  243. package/types/src/scripting/declarations.d.ts +49 -0
  244. package/types/src/scripting/declarations.node.d.ts +9 -0
  245. package/types/src/scripting/index.d.ts +3 -0
  246. package/types/src/selection/IRangeSelection.d.ts +9 -4
  247. package/types/src/selection/RangeSelection.d.ts +2 -0
  248. package/types/src/shape/IShape.d.ts +41 -3
  249. package/types/src/shape/Shape.d.ts +10 -0
  250. package/types/src/shape/_ShapeXml.d.ts +28 -0
  251. package/types/src/sheet/CellRegion.d.ts +6 -0
  252. package/types/src/sheet/ICellContainerOptions.d.ts +50 -0
  253. package/types/src/sheet/ISheet.d.ts +224 -41
  254. package/types/src/sheet/ISheetCollection.d.ts +2 -5
  255. package/types/src/sheet/NamedCellRange.d.ts +16 -7
  256. package/types/src/sheet/Sheet.d.ts +757 -114
  257. package/types/src/sheet/SheetCell.d.ts +81 -21
  258. package/types/src/sheet/SheetCollection.d.ts +19 -8
  259. package/types/src/sheet/SheetRange.d.ts +65 -14
  260. package/types/src/sheet/SheetRanges.d.ts +4 -6
  261. package/types/src/sheet/_CellBuffer.d.ts +214 -0
  262. package/types/src/sheet/_InvalidSheetRange.d.ts +5 -5
  263. package/types/src/sheet/_ListenerAnchor.d.ts +104 -0
  264. package/types/src/sheet/_RangeStateSweep.d.ts +16 -0
  265. package/types/src/sheet/_ScalarListFactory.d.ts +61 -0
  266. package/types/src/sheet/_SheetAutoFillUtils.d.ts +74 -0
  267. package/types/src/sheet/_SheetAutoFitUtils.d.ts +28 -0
  268. package/types/src/sheet/_SheetEvents.d.ts +43 -0
  269. package/types/src/sheet/_SheetFilterUtils.d.ts +32 -1
  270. package/types/src/sheet/_SheetIntents.d.ts +250 -0
  271. package/types/src/sheet/_SheetMutations.d.ts +179 -59
  272. package/types/src/sheet/_SheetStateReader.d.ts +16 -10
  273. package/types/src/sheet/_SheetStateTypes.d.ts +57 -73
  274. package/types/src/sheet/_SheetUtils.d.ts +2 -18
  275. package/types/src/sheet/_WatchAnchor.d.ts +93 -0
  276. package/types/src/sheet/spatial/HeldFormulaEntry.d.ts +36 -0
  277. package/types/src/sheet/spatial/index.d.ts +1 -0
  278. package/types/src/sheet/style/SheetCellStyle.d.ts +91 -64
  279. package/types/src/sheet/style/SheetDirectStyle.d.ts +16 -5
  280. package/types/src/sheet/style/_Resolvers.d.ts +5 -3
  281. package/types/src/sheet/style/_StyleUtils.d.ts +37 -7
  282. package/types/src/sheetHeader/ISheetHeader.d.ts +2 -0
  283. package/types/src/sheetHeader/SheetHeader.d.ts +14 -0
  284. package/types/src/sheetProtection/ISheetProtection.d.ts +41 -7
  285. package/types/src/sheetProtection/SheetProtection.d.ts +12 -0
  286. package/types/src/sheetView/ISheetView.d.ts +45 -1
  287. package/types/src/sheetView/SheetView.d.ts +11 -0
  288. package/types/src/slicer/ISlicer.d.ts +2 -0
  289. package/types/src/slicer/Slicer.d.ts +2 -0
  290. package/types/src/sort/ISort.d.ts +2 -0
  291. package/types/src/string/IStringCollection.d.ts +5 -0
  292. package/types/src/string/StringCollection.d.ts +6 -6
  293. package/types/src/style/INamedStyleCollection.d.ts +72 -0
  294. package/types/src/style/IStyle.d.ts +30 -10
  295. package/types/src/style/IStyleCollection.d.ts +63 -42
  296. package/types/src/style/ITableStyleCollection.d.ts +89 -0
  297. package/types/src/style/NamedStyleCollection.d.ts +39 -0
  298. package/types/src/style/StyleCollection.d.ts +41 -5
  299. package/types/src/style/TableStyleCollection.d.ts +49 -0
  300. package/types/src/style/_BuiltInStyleDefs.d.ts +3 -3
  301. package/types/src/style/index.d.ts +4 -0
  302. package/types/src/table/AnchoredTable.d.ts +644 -68
  303. package/types/src/table/AutoTable.d.ts +5 -5
  304. package/types/src/table/ITable.d.ts +228 -30
  305. package/types/src/table/ITableCollection.d.ts +2 -0
  306. package/types/src/table/TableCollection.d.ts +19 -8
  307. package/types/src/table/_FilterField.d.ts +7 -5
  308. package/types/src/table/_NamedTable.d.ts +17 -1
  309. package/types/src/table/_NamedTableSource.d.ts +1 -0
  310. package/types/src/table/_SortField.d.ts +2 -0
  311. package/types/src/table/_TableColumn.d.ts +13 -2
  312. package/types/src/table/_TableMessages.d.ts +1 -0
  313. package/types/src/table/_TableUtils.d.ts +40 -0
  314. package/types/src/text/Bullet.d.ts +4 -0
  315. package/types/src/text/ITextFrame.d.ts +25 -1
  316. package/types/src/text/TextBoxAlignment.d.ts +15 -6
  317. package/types/src/text/TextFrame.d.ts +4 -0
  318. package/types/src/text/TextLine.d.ts +4 -0
  319. package/types/src/text/TextParagraph.d.ts +4 -0
  320. package/types/src/text/TextRun.d.ts +9 -0
  321. package/types/src/text/TextStacked.d.ts +83 -0
  322. package/types/src/text/index.d.ts +1 -0
  323. package/types/src/theme/ITheme.d.ts +2 -0
  324. package/types/src/theme/IThemeCollection.d.ts +2 -0
  325. package/types/src/theme/ThemeCollection.d.ts +8 -7
  326. package/types/src/transaction/ITransaction.d.ts +238 -36
  327. package/types/src/transaction/Transaction.d.ts +99 -11
  328. package/types/src/type/AbstractCollection.d.ts +101 -0
  329. package/types/src/type/ICollection.d.ts +117 -0
  330. package/types/src/type/ITypes.d.ts +9 -7
  331. package/types/src/type/index.d.ts +1 -0
  332. package/types/src/utils/_CSSUtils.d.ts +3 -3
  333. package/types/src/workbook/IWorkbook.d.ts +171 -40
  334. package/types/src/workbook/Workbook.d.ts +103 -7
  335. package/types/src/workbook/_WorkbookIntents.d.ts +36 -0
  336. package/types/src/workbookProtection/IWorkbookProtection.d.ts +7 -0
  337. package/types/src/workbookProtection/WorkbookProtection.d.ts +3 -0
  338. package/types/src/workbookView/IWorkbookView.d.ts +12 -0
  339. package/types/src/workbookView/WorkbookView.d.ts +5 -0
  340. package/browser/cjs/BF14ZEAnaqxXroSj.cjs +0 -1
  341. package/browser/cjs/BXtvdT1Z-MsB_o5F.cjs +0 -1
  342. package/browser/cjs/Bc4JjVVZfFo3R4He.cjs +0 -33
  343. package/browser/cjs/CD2RXdnfqSYNc6gX.cjs +0 -57
  344. package/browser/cjs/DcLpXGexEtOxi-dD.cjs +0 -1
  345. package/browser/esm/0Mj5WKM362q6CECb.mjs +0 -824
  346. package/browser/esm/CPTtL2f6_4iblmFM.mjs +0 -4436
  347. package/browser/esm/CoA-sUxjiIUIpTUF.mjs +0 -109
  348. package/browser/esm/Dy4Sdpju1T2icURu.mjs +0 -50854
  349. package/node/esm/BtGxbEbBm79YvF_k.mjs +0 -843
  350. package/node/esm/DqgWsVXROpSgKq6c.mjs +0 -114
  351. package/types/src/cellRange/_GraphNode.d.ts +0 -38
  352. package/types/src/dataValidation/_Utils.d.ts +0 -10
  353. package/types/src/sheet/listener/RangesListener.d.ts +0 -32
  354. package/types/src/sheet/listener/RangesListenerEntry.d.ts +0 -19
  355. package/types/src/sheet/listener/index.d.ts +0 -3
@@ -1,10 +1,12 @@
1
1
  import { Scalar, IRange, IRuntime, IFormulaContext } from '@sheetxl/primitives';
2
2
  import { ISparseGrid, ISpatialMap, ISpatialMap3D, ISpatialQuery } from '../../collections';
3
3
  import { ISymbolRegistry } from '../symbol';
4
- import { IFormulaBlock } from '../formula';
4
+ import { IFormulaBlock, FormulaImager } from '../formula';
5
5
  import { PrecedentSpatialValue, PrecedentKind, FormulaSpatialValue } from '../spatial';
6
- import { ICalcGrid } from '../grid';
6
+ import { ICalcGrid, CalcGridBackend } from '../grid';
7
+ import { CalcRequest } from '../grid/_CalcRequest';
7
8
  import { ICalculation } from '../ICalculation';
9
+ import { NamedNodeInfo } from '../Types';
8
10
  import { CalcNode } from './CalcNode';
9
11
  import { CalcScope } from './CalcScope';
10
12
  /**
@@ -17,14 +19,19 @@ export interface IContextContainer {
17
19
  * @remarks
18
20
  * This is passed in so that the Calculation engine can lazy load
19
21
  *
20
- * @param editing If `true` the block is compiled with the `'editing'` compiler profile — the
22
+ * @param editing When set, the block is compiled with the `'editing'` compiler profile — the
21
23
  * expression is preserved exactly as typed and a parse failure gets maximum recovery (see
22
- * `FormulaCompilerProfile`). Used by `createFormula` (the formula editor); the default
23
- * (`'calc'`) profile normalizes and spends nothing on recovery.
24
- * @param formulaTransform A structural transform applied to the parsed tree (pre-link) — the
25
- * READ half of the dialect hook, supplied only by format loads (see `ICalcGrid.fromJSON`).
24
+ * `FormulaCompilerProfile`) — reading `'storage'` or `'display'` text. Used by `createFormula`;
25
+ * absent, the (`'calc'`) profile reads storage text, normalizes and spends nothing on recovery.
26
26
  */
27
- createFormulaBlock(gridId: string, context: IFormulaContext, expression: string, rowIndex: number, colIndex: number, editing?: boolean, formulaTransform?: ICalculation.FormulaTransform): IFormulaBlock;
27
+ /**
28
+ * Compiles a formula for a grid.
29
+ *
30
+ * @param legacyIntersect Compile in the legacy entry era: every call intersects
31
+ * ({@link ICalculation.JSON.legacyIntersect}). What a loaded block that is not an array anchor
32
+ * gets when the calculation is in that era.
33
+ */
34
+ createFormulaBlock(gridId: string, context: IFormulaContext, expression: string, rowIndex: number, colIndex: number, editing?: ICalculation.FormulaTarget, legacyIntersect?: boolean): IFormulaBlock;
28
35
  /**
29
36
  * Returns the symbol registry for name → stableId resolution.
30
37
  */
@@ -38,6 +45,17 @@ export interface IContextContainer {
38
45
  resolveScope(scope: string): string | undefined;
39
46
  getSheetIndex?: (sheetName?: string) => number;
40
47
  getSheetCount?: () => number;
48
+ /**
49
+ * The grid ids a 3-D span covers — every sheet from its first endpoint to its last in current tab
50
+ * order, hidden sheets included — or `null` when `scopeId` is not a span or an endpoint is gone.
51
+ *
52
+ * @remarks
53
+ * Asked at read time rather than stored: inserting, moving or deleting a sheet changes the members
54
+ * without changing the span.
55
+ */
56
+ getSheetSpanIds?: (scopeId: string) => string[] | null;
57
+ /** Every sheet's grid id in tab order, hidden sheets included. */
58
+ getSheetIds?: () => readonly string[];
41
59
  getScope(): CalcScope;
42
60
  getRuntime(): IRuntime;
43
61
  /**
@@ -51,6 +69,11 @@ export interface IContextContainer {
51
69
  * Returns `null` if the container does not track volatiles.
52
70
  */
53
71
  getVolatiles(): Set<CalcNode> | null;
72
+ /**
73
+ * Whether the calculation's unmarked formulas are in the legacy entry era
74
+ * ({@link ICalculation.JSON.legacyIntersect}).
75
+ */
76
+ isLegacyIntersect(): boolean;
54
77
  /**
55
78
  * Returns a 3D formulas.
56
79
  */
@@ -77,10 +100,11 @@ export interface IContextContainer {
77
100
  * Returns the current block-level dynamic precedent map, keyed by FormulaSpatialValue.
78
101
  *
79
102
  * @remarks
80
- * At most one entry per (block, {@link PrecedentKind}) — so at most two, because one block can be
81
- * BOTH kinds at once: `=INDIRECT("A1:A3")` reads a range it discovers at runtime AND spills over
82
- * one it writes. Those two rectangles have nothing to do with each other, and the single slot this
83
- * map used to hold forced them into a bounding box that described neither.
103
+ * At most one entry per (block, {@link PrecedentKind}, grid). One block can be BOTH kinds at once:
104
+ * `=INDIRECT("A1:A3")` reads a range it discovers at runtime AND spills over one it writes. Those
105
+ * two rectangles have nothing to do with each other, and the single slot this map used to hold
106
+ * forced them into a bounding box that described neither. And one block can read on several
107
+ * grids — a 3-D reference reads every sheet it covers — which a bounding box cannot express at all.
84
108
  *
85
109
  * Every path that replaces a block evicts through this map, so it must list ALL of the block's
86
110
  * entries: one left behind points at a dead block, whose CalcNodes the dirty walk then collects
@@ -95,20 +119,71 @@ export interface IContextContainer {
95
119
  /**
96
120
  * Returns the grid for a given gridId. This is used to get other grids when calculating.
97
121
  */
98
- getGrid(gridId: string): ICalcGrid | null;
122
+ getGrid(gridId: string): CalcGridBackend | null;
123
+ /**
124
+ * Runs a request against the engine's state, landing what it writes under the snapshot it
125
+ * names (DESIGN-CALC-SERVICE §13.13: the engine keeps its own history keyed by the model's
126
+ * ids).
127
+ *
128
+ * @param landingId The engine commit the request lands in: the model's commit for a root
129
+ * transaction, its savepoint for a nested one, or `undefined` for a request naming no snapshot
130
+ * (a caller with no model), which is applied as it is.
131
+ * @param action The request; its writes land together.
132
+ */
133
+ landRequest<R>(landingId: string | undefined, action: () => R): R;
134
+ /**
135
+ * Sends a grid request through the service's channel (DESIGN-CALC-SERVICE §4, §7.2).
136
+ *
137
+ * @param gridId The grid the request is for.
138
+ * @param landingId The engine commit a request applied now lands in - see {@link landRequest}.
139
+ * @param request The request, as data.
140
+ *
141
+ * @remarks
142
+ * On a `Running` engine the request is applied at once and lands under `landingId`. While the
143
+ * engine is `Starting` it is held, in send order, and applied once the engine is up, behind the
144
+ * seeds; one whose snapshot the model has undone by then is dropped. On an `Off` engine nothing
145
+ * is recorded and the request resolves with nothing: a later start is seeded from the model.
146
+ */
147
+ sendRequest(gridId: string, landingId: string | undefined, request: CalcRequest): Promise<ICalcGrid.Results>;
148
+ /**
149
+ * What images a grid's records for the model (DESIGN-CALC-SERVICE §8): the model's symbol
150
+ * map, the grid as home scope, its bounds, the reader's locale. The facade's, read where a
151
+ * response crosses to the model.
152
+ */
153
+ getImager(gridId: string): FormulaImager;
154
+ /**
155
+ * Records the regions a request touched on the commit it is landing in, so a revert knows what
156
+ * to re-vend. A no-op outside a landing request.
157
+ */
158
+ recordTouched(gridId: string, regions: readonly IRange.Coords[]): void;
159
+ /**
160
+ * Records a grid's per-grid maps (values, spills, ...) in the engine's history, under the
161
+ * commit landing now: a restore hands them back to the grid. The maps are the grid's own
162
+ * objects, copy-on-write per request.
163
+ */
164
+ setGridMaps(gridId: string, maps: object): void;
165
+ /**
166
+ * The model has restored itself to `commitId` (an undo, a redo): restore the engine's history
167
+ * to it, once, and answer the regions of `gridId` that changed between the two snapshots. A
168
+ * grid asking after the engine is already there gets the regions of that same restore.
169
+ *
170
+ * @returns The changed regions of the grid, or `null` when the engine holds no history for the
171
+ * id (it restarts from a seed) or nothing changed on that grid.
172
+ */
173
+ revertTo(commitId: string, gridId: string): IRange.Coords[] | null;
99
174
  /**
100
175
  * Upserts a grid into the container's registry (create or replace), keyed by its `gridId`.
101
176
  *
102
177
  * @remarks
103
178
  * Called in two situations:
104
- * 1. **Construction** — a newly created `CalcGrid` self-registers so it is reachable via
179
+ * 1. **Construction** — a newly created `CalcGridBackend` self-registers so it is reachable via
105
180
  * {@link getGrid} / {@link getGridValues}.
106
181
  * 2. **Clone** — the cloned grid re-registers under the same `gridId`, atomically replacing
107
182
  * the previous iteration in the registry and enabling swap-in-place semantics.
108
183
  *
109
184
  * @param calcGrid The grid instance to register.
110
185
  */
111
- registerGrid(calcGrid: ICalcGrid): void;
186
+ registerGrid(calcGrid: CalcGridBackend): void;
112
187
  /**
113
188
  * Removes the grid with the given `gridId` from the container's registry.
114
189
  *
@@ -140,6 +215,18 @@ export interface IContextContainer {
140
215
  * @param options Optional calculation options.
141
216
  */
142
217
  calculateGrid(gridId: string, options?: ICalculation.CalculateOptions): Promise<ICalculation.Status>;
218
+ /**
219
+ * Ask for the reactive pass that evaluates what `gridId` has dirty, once the current flush is
220
+ * over.
221
+ *
222
+ * @remarks
223
+ * Unlike {@link calculateGrid}, which runs the pass now, this posts it: every grid that asks
224
+ * during one synchronous flush is answered by ONE pass, at the flush's end. A watch registering
225
+ * asks this way, so a paint's worth of rules registering together costs one pass, not one each.
226
+ *
227
+ * @param gridId The grid whose dirty body the pass is owed for.
228
+ */
229
+ requestCalculateGrid(gridId: string): void;
143
230
  /**
144
231
  * Returns the monotonically incrementing generation counter for the calculation engine.
145
232
  *
@@ -156,6 +243,42 @@ export interface IContextContainer {
156
243
  * still carry, and the "already visited this cycle" guards would skip their re-evaluation.
157
244
  */
158
245
  getCycleId(): number;
246
+ /**
247
+ * The id of the last transaction commit a calculation pass was run for, or `null` before the
248
+ * first pass. What a record the engine pushes answers for (`ICalcGrid.Results.commitId`).
249
+ */
250
+ getCalculatedCommitId(): string | null;
251
+ /**
252
+ * The graph-version counters the executor's plan caches key on (CALC-PERFORMANCE-PLAN.md §1.1).
253
+ *
254
+ * `staticEpoch` advances whenever the static edges may have changed — formula block
255
+ * register/unregister/edit, structural shift, sheet add/remove, undo/redo state swap — and
256
+ * governs order-stamp validity. `precedentEpoch` advances whenever `staticEpoch` does, plus on
257
+ * dynamic-precedent commits (spill/INDIRECT watchers), and governs `CalcNode.dependents`
258
+ * validity. The split is load-bearing: a dynamic commit changes who is affected, never the
259
+ * static topological constraints, so a sheet with a spill keeps a valid order cache.
260
+ *
261
+ * READING is what synchronizes: the implementation compares the identities of the spatial maps
262
+ * it last saw and advances the counters when a clone-then-swap happened (edits, shifts, undo/
263
+ * redo, pass-end dynamic commits all publish fresh maps). Sites that mutate the CURRENT maps in
264
+ * place — a seed (`CalcGridBackend._seedNow`), an un-cloned `shift` — must call {@link bumpCalcEpochs}
265
+ * explicitly, because no identity changes there.
266
+ *
267
+ * Both counters are monotonic and deliberately NOT transactional, for the same reason as
268
+ * {@link getCycleId}: they are compared against stamps on plain mutable graph objects that
269
+ * undo/redo never rewinds, so rewinding a counter would re-validate stale stamps.
270
+ */
271
+ getCalcEpochs(): {
272
+ staticEpoch: number;
273
+ precedentEpoch: number;
274
+ };
275
+ /**
276
+ * Advances the epoch counters for an IN-PLACE mutation of the current spatial maps — the paths
277
+ * identity comparison in {@link getCalcEpochs} cannot see. `includeStatic: true` advances both
278
+ * counters (a formula/structure change); `false` advances only `precedentEpoch` (a
279
+ * dynamic-precedent-only change).
280
+ */
281
+ bumpCalcEpochs(includeStatic: boolean): void;
159
282
  /**
160
283
  * Returns the committed or in-progress scalar values for the given grid.
161
284
  *
@@ -221,30 +344,27 @@ export interface IContextContainer {
221
344
  * What a caller does owe: the action must be safe to run at an arbitrary microtask boundary, not
222
345
  * only from inside a calculation.
223
346
  *
224
- * Used by surfaces (e.g. `CalcGrid`) to defer writes that arrive while the engine is still
225
- * populating. That drain happens inline at the tail of `Calculation.start()`, so `await start()`
226
- * still resolves only after queued work completes.
347
+ * For the engine's own deferrals (wiring a name, recompiling its dependents), which stay
348
+ * backend-side. A grid request is never queued here: it goes through {@link sendRequest}, as
349
+ * data, so the channel can hold it (DESIGN-CALC-SERVICE §6.2).
227
350
  */
228
351
  whenSafe(action: () => Promise<unknown>): void;
229
352
  /**
230
353
  * `true` while the engine is either `Starting` or inside a pending-action drain — at any drain
231
- * site, not only the load drain in `Calculation.start()`.
354
+ * site, the start batch included.
232
355
  *
233
356
  * @remarks
234
357
  * A grid must NOT trigger a calc while this is `true`: a formula could evaluate against a sibling
235
- * sheet whose values have not been drained yet (e.g. a volatile/cross-sheet formula reading an
236
- * empty cell). Defer such calcs via {@link whenSafe} so they run after the full drain.
237
- *
238
- * This used to be set by the load drain alone, so during a drain ahead of a calculation it read
239
- * `false` and a grid populating there took the inline branch — a calc re-entered from inside a
240
- * drain, the exact shape the deferral exists to avoid.
358
+ * sheet whose seed has not been applied yet (e.g. a volatile/cross-sheet formula reading an
359
+ * empty cell). Owe the pass instead ({@link requestCalculateGrid}); the batch runs one once
360
+ * every seed is in.
241
361
  */
242
362
  isLoading(): boolean;
243
363
  /**
244
364
  * Recompiles every formula that references `nameId`, directly or through another name.
245
365
  *
246
366
  * @remarks
247
- * Brute-force all3D scan over `formulaSpatial`, matched via `IFormulaBlock.getNamedIds` against
367
+ * Brute-force all3D scan over `formulaSpatial`, matched via `IFormulaBlock.getReferencedSymbolIds` against
248
368
  * `nameId` and {@link getNamedDependentNames}. Called after a named formula is wired or deleted
249
369
  * so dependents pick up the change. A recompile, not a dirty-mark, on purpose: a definition
250
370
  * change requires dependents to re-derive their precedents (`setInputs`), which `markDirty` does
@@ -295,6 +415,19 @@ export interface IContextContainer {
295
415
  * resolve the scope and drop what is not a sheet.
296
416
  */
297
417
  getNamedDependents(nameId: string): readonly IRange.Coords[];
418
+ /**
419
+ * A name's identity and anchor as plain data, or `null` when `nameId` names nothing.
420
+ *
421
+ * @param nameId The name's stable id.
422
+ * @param live When `true`, answers `null` for a name nothing currently references - the
423
+ * dependents rule, where a name no formula reads is a definition rather than a dependent.
424
+ *
425
+ * @remarks
426
+ * Sits beside {@link getNamedDependents}: both are facts about a name, by id, asked from inside
427
+ * the calculation. This is what lets a grid answer a graph question with a name in it without
428
+ * handing out an engine-bound object.
429
+ */
430
+ getNamedNodeInfo(nameId: string, live?: boolean): NamedNodeInfo | null;
298
431
  /**
299
432
  * The ids of every NAME that references `nameId`, transitively. Excludes `nameId` itself unless
300
433
  * a cycle genuinely leads back to it.
@@ -0,0 +1,163 @@
1
+ import { IRange, Scalar } from '@sheetxl/primitives';
2
+ import { Direction, RangeAxis, CellCoords, RangeCoords } from '@sheetxl/utils';
3
+ import { IGrid, ISparseGrid, Tuple, IListLike } from '../../collections';
4
+ import { ReferenceErrorIndex } from '../../primitives/ReferenceRange';
5
+ /**
6
+ * The calc grid's committed values with the pass's UNCOMMITTED results laid over them.
7
+ *
8
+ * @remarks
9
+ * The executor batches results and commits them in one write (`writeCalcs`); a reference built
10
+ * during the pass used to force that commit whenever it could see a batched cell. On a row-chained
11
+ * sheet (`SUM($K$51:K#)` on every row) that was a commit per row — thousands of small persistent
12
+ * writes into the same long runs. This grid serves those reads from the batch instead, so the
13
+ * executor commits every N results and the writes are few and contiguous.
14
+ *
15
+ * It is a SUBSTITUTION view: iteration walks the committed runs and swaps in the pending value
16
+ * where one exists. That only describes a cell the committed grid already holds; a result for a
17
+ * cell with no committed run under it (a formula's first result — new after load, entry, paste)
18
+ * cannot be shown this way, so such a push marks the overlay `uncovered` and the next ITERATION
19
+ * over the pending box commits first (`_coverFor`), which is exactly the old behavior; a point
20
+ * read is answered by the map and never commits. A steady-state recalc never trips it. Reads
21
+ * outside the batch's bounding box never touch the map.
22
+ *
23
+ * Operations that materialize or write go through a commit first and then the committed grid —
24
+ * the safe fallback for anything a substitution cannot answer (`getValues`, `copyTo`, `clone`,
25
+ * every write). `cloneEmpty` needs no values.
26
+ *
27
+ * It is also the error index of references built over it ({@link ReferenceErrorIndex}): the
28
+ * committed index plus a scan of the pending map, taken only while the batch holds an error.
29
+ *
30
+ * A second layer holds DEMAND results (DESIGN-CIRCULAR-CALC.md §4.6): what demand evaluation and
31
+ * the iteration sweeps compute ahead of the plan. It is not part of the batch — a commit leaves it
32
+ * alone — and an entry lives until the plan takes its node ({@link takeDemand}), which then pushes
33
+ * the same value to the batch. A sweep rewrites its members many times, and every rewrite is a map
34
+ * write, not a persistent one. Substitution still needs a committed run under the cell, so the
35
+ * first result for a cell with nothing under it is written through as well; every later one is
36
+ * substituted.
37
+ */
38
+ export declare class PendingOverlayGrid implements ISparseGrid<Scalar>, ReferenceErrorIndex {
39
+ protected readonly _inner: ISparseGrid<Scalar>;
40
+ protected readonly _committed: ReferenceErrorIndex;
41
+ protected readonly _flush: () => void;
42
+ protected readonly _isColumn: boolean;
43
+ protected _pending: Map<number, Scalar>;
44
+ /** Pending values that are errors — the pending scan in {@link hasErrorIn} runs only while > 0. */
45
+ protected _errors: number;
46
+ /** A pending cell has no committed run under it; substitution cannot show it. */
47
+ protected _uncovered: boolean;
48
+ protected _rowStart: number;
49
+ protected _rowEnd: number;
50
+ protected _colStart: number;
51
+ protected _colEnd: number;
52
+ /** Demand results the plan has not taken yet; a commit leaves them. */
53
+ protected _demand: Map<number, Scalar>;
54
+ /** Demand values that are errors, as {@link _errors} is for the batch. */
55
+ protected _demandErrors: number;
56
+ protected _demandRowStart: number;
57
+ protected _demandRowEnd: number;
58
+ protected _demandColStart: number;
59
+ protected _demandColEnd: number;
60
+ protected _anyRowStart: number;
61
+ protected _anyRowEnd: number;
62
+ protected _anyColStart: number;
63
+ protected _anyColEnd: number;
64
+ constructor(inner: ISparseGrid<Scalar>, committed: ReferenceErrorIndex, flush: () => void);
65
+ get isPendingOverlay(): true;
66
+ /** The committed grid. */
67
+ getInner(): ISparseGrid<Scalar>;
68
+ /** Pending results. */
69
+ get size(): number;
70
+ /** Demand results the plan has not taken yet. */
71
+ get demandSize(): number;
72
+ /** Records one result. The executor's batch and this map are emptied together by a commit. */
73
+ push(row: number, col: number, value: Scalar): void;
74
+ /**
75
+ * Records one demand result, replacing the cell's last. A cell with nothing committed under it
76
+ * gets the value written through as well, so its later results can be substituted.
77
+ */
78
+ pushDemand(row: number, col: number, value: Scalar): void;
79
+ /** The plan has taken the cell's node: its result goes on as an ordinary one, or is written already. */
80
+ takeDemand(row: number, col: number): void;
81
+ /**
82
+ * Writes every demand result the plan did not take into the committed grid and empties the
83
+ * layer, so nothing computed is lost with the overlay.
84
+ */
85
+ commitDemand(): void;
86
+ /** After a commit: the committed grid now holds everything that was pending. Demand results stay. */
87
+ reset(): void;
88
+ protected _resetDemand(): void;
89
+ protected _growAny(row: number, col: number): void;
90
+ /** Rebuilds the union box from the two layers' own. */
91
+ protected _resetAny(): void;
92
+ /** Does a rectangle overlap the bounding box of the cells either layer holds? */
93
+ intersects(rowStart: number, colStart: number, rowEnd: number, colEnd: number): boolean;
94
+ /** Does a rectangle overlap the pending (batch) cells' bounding box? */
95
+ protected _pendingIntersects(rowStart: number, colStart: number, rowEnd: number, colEnd: number): boolean;
96
+ /** {@inheritDoc ReferenceErrorIndex.hasErrorIn} */
97
+ hasErrorIn(coords: IRange.Coords): boolean;
98
+ /** Does a (possibly partial) bounds box overlap the pending cells' box? Missing sides are open. */
99
+ protected _boundsIntersect(bounds: Partial<RangeCoords> | null | undefined): boolean;
100
+ /**
101
+ * Writes the demand results inside `bounds` (every one for `null`) into the committed grid, for
102
+ * a path that reads it without substituting. They stay in the layer — the grid now agrees with
103
+ * it, and the plan still takes each one.
104
+ */
105
+ protected _writeDemandIn(bounds: Partial<RangeCoords> | null | undefined): void;
106
+ /** The cell's value in either layer (they never share a cell), or `undefined`. */
107
+ protected _layered(key: number): Scalar | undefined;
108
+ /**
109
+ * Before an ITERATION over `bounds`: commits when a pending cell substitution cannot show
110
+ * (`uncovered`) lies inside them. A point read never needs this — the map answers it — and
111
+ * on a first calc, where every result is uncovered, a commit per read would be a commit per
112
+ * node. Nothing happens for reads outside the pending box.
113
+ */
114
+ protected _coverFor(bounds: Partial<RangeCoords> | null | undefined): void;
115
+ /** Before a MATERIALIZATION of `bounds` (no substitution on that path): commits what it would miss. */
116
+ protected _flushIfPendingIn(bounds: Partial<RangeCoords> | null | undefined): void;
117
+ /** Is the cell inside the box of either layer? */
118
+ protected _inBounds(row: number, col: number): boolean;
119
+ /** Nothing in either layer: every read is the committed grid's. */
120
+ protected _isEmpty(): boolean;
121
+ /** The run with pending values swapped in, or the run itself when none fall inside it. */
122
+ protected _substituteRun(major: number, minorFrom: number, run: IListLike<Scalar>): IListLike<Scalar>;
123
+ /** {@inheritDoc IGrid.getValueAt} */
124
+ getValueAt(row: number, column: number): Scalar;
125
+ /** {@inheritDoc ISparseGrid.getRuns} */
126
+ getRuns(options?: ISparseGrid.RunIteratorOptions): ISparseGrid.RunIterableIterator<Scalar>;
127
+ /** {@inheritDoc IGrid.entries} */
128
+ entries(options?: IGrid.IteratorOptions): IGrid.EntryIterator<Scalar>;
129
+ /** {@inheritDoc IGrid.values} */
130
+ values(options?: IGrid.IteratorOptions): IGrid.ValueIterator;
131
+ /** {@inheritDoc IGrid.keys} */
132
+ keys(options?: IGrid.IteratorOptions): IGrid.KeyIterator;
133
+ /** {@inheritDoc IGrid.getValues} */
134
+ getValues(coords?: RangeCoords): Tuple.Region<Scalar> | null;
135
+ /** {@inheritDoc IGrid.copyTo} */
136
+ copyTo(destination: IGrid, topLeft: CellCoords, from: RangeCoords): void;
137
+ /** {@inheritDoc IGrid.getAxis} */
138
+ getAxis(): RangeAxis;
139
+ /** {@inheritDoc IGrid.getCount} */
140
+ getCount(): number;
141
+ /** {@inheritDoc IGrid.getCoords} */
142
+ getCoords(): RangeCoords | null;
143
+ /** {@inheritDoc IGrid.getMaxCoords} */
144
+ getMaxCoords(): RangeCoords | null;
145
+ /** {@inheritDoc IGrid.clone} */
146
+ clone(cloneKey?: any): this;
147
+ /** {@inheritDoc IGrid.cloneEmpty} */
148
+ cloneEmpty(cloneKey?: any): this;
149
+ /** {@inheritDoc IGrid.setValues} */
150
+ setValues(values: Tuple.GridTuple<Scalar>): this;
151
+ /** {@inheritDoc IGrid.setValueAt} */
152
+ setValueAt(row: number, column: number, value: Scalar): void;
153
+ /** {@inheritDoc IGrid.delete} */
154
+ delete(coords: RangeCoords | null): boolean;
155
+ /** {@inheritDoc IGrid.clear} */
156
+ clear(): void;
157
+ /** {@inheritDoc IGrid.shift} */
158
+ shift(coords: RangeCoords, direction: Direction): boolean;
159
+ /** Both layers into the committed grid, so neither can shadow a write that follows. */
160
+ protected _commitAll(): void;
161
+ get [Symbol.toStringTag](): string;
162
+ }
163
+ //# sourceMappingURL=_PendingOverlayGrid.d.ts.map
@@ -5,16 +5,61 @@ import { IGrid, ISparseGrid, Tuple } from '../../collections';
5
5
  * Receives every value read a formula makes while a read hook is armed.
6
6
  *
7
7
  * @remarks
8
- * A single-cell read reports a 1x1 rectangle; a block read (iteration, runs, bounded tuples)
9
- * reports the rectangle it was asked for — the cells it *may* open — because a sparse iterator
10
- * cannot tell an empty cell from a formula cell whose value is not there yet, and the second is
11
- * exactly the read a cycle check must see. Coordinates are absolute and closed.
8
+ * A single-cell read reports a 1x1 rectangle. A block read reports the span the consumer actually
9
+ * SWEPT: the iterator is wrapped and each position reported as it is reached, so a function that
10
+ * stops early (`VLOOKUP` at its hit) never reports the tail it did not look at, while positions
11
+ * the iterator skipped over — an `includeEmpty: false` sweep past a formula cell whose value is
12
+ * not there yet — are reported, because a sparse iterator cannot tell such a cell from an empty
13
+ * one and that is exactly the read a cycle check must see. Coordinates are absolute and closed.
14
+ *
15
+ * `prefetch` marks the ONE call such a sweep makes up front, naming the rectangle it was asked
16
+ * for. It is not a claim that those cells were opened — only the decisions that must be made
17
+ * ahead of the first read belong to it (bringing unevaluated precedents forward); whether any
18
+ * cell in the rectangle was opened is answered by the per-position reports that follow. Its
19
+ * RETURN says whether those reports can tell the caller anything: `false` means nothing in the
20
+ * rectangle could ever produce an answer, and the sweep is left unobserved.
12
21
  *
13
22
  * The hook may throw; the throw propagates through the reading function up to the evaluation
14
23
  * that armed it. Nothing is reported for constructing a reference, for its coords or size, or for
15
24
  * a copy made to hold derived values.
16
25
  */
17
- export type ReadHook = (gridId: string, rowStart: number, colStart: number, rowEnd: number, colEnd: number) => void;
26
+ export type ReadHook = (gridId: string, rowStart: number, colStart: number, rowEnd: number, colEnd: number, prefetch?: boolean) => boolean;
27
+ /**
28
+ * Turns the positions an iterator reaches into rectangles, in iteration order.
29
+ *
30
+ * @remarks
31
+ * Positions are numbered along the iteration's own axis and direction, so the cells between the
32
+ * last one reported and the one just reached are always a contiguous run of that numbering — at
33
+ * most three rectangles: the tail of the first major line, the whole lines between, and the head
34
+ * of the last.
35
+ */
36
+ declare class SweptSpan {
37
+ private readonly _onRead;
38
+ private readonly _gridId;
39
+ private readonly _rowStart;
40
+ private readonly _colStart;
41
+ private readonly _rowEnd;
42
+ private readonly _colEnd;
43
+ /** The major axis is the column: positions run down a column, then on to the next. */
44
+ private readonly _byColumn;
45
+ private readonly _reverse;
46
+ /** Positions per major line — the height for a column sweep, the width for a row sweep. */
47
+ private readonly _minorCount;
48
+ private readonly _total;
49
+ /** The last position reported, in iteration order; `-1` before the first. */
50
+ private _cursor;
51
+ constructor(onRead: ReadHook, gridId: string, rowStart: number, colStart: number, rowEnd: number, colEnd: number, byColumn: boolean, reverse: boolean);
52
+ /** Reports everything from the last reported position up to and including this cell. */
53
+ reach(row: number, col: number): void;
54
+ /** A minor index (the row of a column sweep, the column of a row sweep) held inside the span. */
55
+ clampMinor(minor: number): number;
56
+ /** Reports the tail: an iterator run to exhaustion looked at everything it could yield. */
57
+ finish(): void;
58
+ /** Reports iteration positions `(cursor, to]`, then moves the cursor to `to`. */
59
+ private _advance;
60
+ /** One rectangle, in major/minor offsets from the sweep's origin. */
61
+ private _report;
62
+ }
18
63
  /**
19
64
  * An `ISparseGrid` that reports every value access on an inner grid to a {@link ReadHook}.
20
65
  *
@@ -23,6 +68,13 @@ export type ReadHook = (gridId: string, rowStart: number, colStart: number, rowE
23
68
  * and never touches the sheet directly, so wrapping that grid observes every value read the
24
69
  * reference makes — through any `Range` view derived from it, since views share the grid.
25
70
  *
71
+ * A block read is wrapped rather than reported whole: the iterator reports each position as it is
72
+ * reached, so a consumer that stops early — every exact-match lookup — never reports the tail it
73
+ * did not look at, and one run to exhaustion reports everything. Positions the iterator skipped
74
+ * over are reported with the one that follows them, because skipping is what a sparse iterator
75
+ * does to a formula cell whose value is not there yet. A materialization (`getValues`, `copyTo`)
76
+ * has no span and reports its rectangle whole.
77
+ *
26
78
  * `clone`/`cloneEmpty` hand back the inner grid's copy UNWRAPPED. A `Range` operation clones
27
79
  * its grid only as scratch space for a derived result (`fill`, `map`, a scalar broadcast) and
28
80
  * overwrites what it later reads back; the coordinates in such a copy no longer name sheet
@@ -38,6 +90,8 @@ export declare class ReadObservedGrid implements ISparseGrid<Scalar> {
38
90
  * A pass that Kahn orders builds none; tests pin that the ordinary path stays unwrapped.
39
91
  */
40
92
  static created: number;
93
+ /** {@inheritDoc ISparseGrid.observesReads} */
94
+ readonly observesReads: true;
41
95
  protected readonly _inner: ISparseGrid<Scalar>;
42
96
  protected readonly _gridId: string;
43
97
  protected readonly _onRead: ReadHook;
@@ -45,10 +99,21 @@ export declare class ReadObservedGrid implements ISparseGrid<Scalar> {
45
99
  /** The grid being observed. */
46
100
  getInner(): ISparseGrid<Scalar>;
47
101
  /**
48
- * Reports a block read. Missing sides of a partial bound are taken from the grid's maximum
49
- * extent, then from its data extent; a grid with neither has nothing to read.
102
+ * The rectangle a block read names, absolute and closed. Missing sides of a partial bound are
103
+ * taken from the grid's maximum extent, then from its data extent; a grid with neither has
104
+ * nothing to read, and answers `null`.
105
+ */
106
+ protected _resolveBounds(bounds: Partial<RangeCoords> | null | undefined): RangeCoords | null;
107
+ /**
108
+ * Reports a rectangle whose every cell the caller does open.
50
109
  */
51
110
  protected _reportBounds(bounds: Partial<RangeCoords> | null | undefined): void;
111
+ /**
112
+ * Announces the rectangle an iteration was asked for and opens a {@link SweptSpan} over it, or
113
+ * answers `null` when the sweep need not be observed at all — either the rectangle could not be
114
+ * resolved, or the hook says nothing in it can produce an answer.
115
+ */
116
+ protected _openSweep(bounds: Partial<RangeCoords> | null | undefined, axis: RangeAxis | undefined, reverse: boolean | undefined): SweptSpan | null;
52
117
  /** {@inheritDoc IGrid.getValueAt} */
53
118
  getValueAt(row: number, column: number): Scalar;
54
119
  /** {@inheritDoc ISparseGrid.getRuns} */
@@ -60,7 +125,7 @@ export declare class ReadObservedGrid implements ISparseGrid<Scalar> {
60
125
  /** {@inheritDoc IGrid.keys} */
61
126
  keys(options?: IGrid.IteratorOptions): IGrid.KeyIterator;
62
127
  /** {@inheritDoc IGrid.getValues} */
63
- getValues(coords?: RangeCoords): Tuple.BoundedTuples<Scalar> | null;
128
+ getValues(coords?: RangeCoords): Tuple.Region<Scalar> | null;
64
129
  /** {@inheritDoc IGrid.copyTo} */
65
130
  copyTo(destination: IGrid, topLeft: CellCoords, from: RangeCoords): void;
66
131
  /** {@inheritDoc IGrid.getAxis} */
@@ -87,4 +152,5 @@ export declare class ReadObservedGrid implements ISparseGrid<Scalar> {
87
152
  shift(coords: RangeCoords, direction: Direction): boolean;
88
153
  get [Symbol.toStringTag](): string;
89
154
  }
155
+ export {};
90
156
  //# sourceMappingURL=_ReadObservedGrid.d.ts.map
@@ -1,4 +1,5 @@
1
1
  export * from './CalcNode';
2
+ export * from './CalcInputs';
2
3
  export * from './CalcScope';
3
4
  export * from './CalcState';
4
5
  export * from './IContextContainer';