@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
@@ -0,0 +1,152 @@
1
+ import { IRange, Scalar } from '@sheetxl/primitives';
2
+ import { ITransaction } from '../transaction';
3
+ import { ICellRanges, ICellRange } from '../cellRange';
4
+ import { ICalculation } from '../calculation/ICalculation';
5
+ import { FormulaHost } from '../calculation/grid';
6
+ /**
7
+ * What a condition formula needs from the rule that owns it: the engine to compile with, and the
8
+ * cell — and sheet — its text is authored at.
9
+ */
10
+ export interface ConditionFormulaBinding {
11
+ getCalculation(): ICalculation | null;
12
+ getAnchor(): IRange.CellCoords | null;
13
+ /** The display name of the sheet the rule is on. */
14
+ getScope(): string | null;
15
+ }
16
+ /**
17
+ * `text` (as a view images it at `at`) imaged through `transform`, or the text itself when there
18
+ * is no transform, the text does not parse, or the transform changes nothing.
19
+ */
20
+ export declare function imageTransformed(text: string, at: IRange.CellCoords, transform: ICalculation.FormulaTransform | undefined): string;
21
+ /** Drops the qualifier from a cell reference to `sheetName`, so it reads as authored on that sheet. */
22
+ export declare function unqualifyTransform(sheetName: string): ICalculation.FormulaTransform;
23
+ /**
24
+ * Compiles storage `text` at `anchor`, or `null` when the engine cannot compile yet.
25
+ */
26
+ export declare function createStoredFormula(calculation: ICalculation, text: string, anchor: Partial<IRange.CellCoords> | null): ICalculation.IFormula | null;
27
+ /**
28
+ * A formula held by a condition — an `expression` param, a comparison operand, a between bound.
29
+ *
30
+ * @remarks
31
+ * Its text is CANONICAL, and once the owning rule watches it the engine holds the body: the text is
32
+ * then read back from the watch's body on every access, so what the engine did to the body — a row
33
+ * insert, a sheet rename, an undo — is what the condition reports and what `toJSON` persists. Before
34
+ * that (no engine, a standalone condition) it answers from the text it was created with, and it keeps
35
+ * the last text the body had when the watch goes away.
36
+ *
37
+ * The rest of {@link ICalculation.IFormula} is a detached formula compiled from that text, with the
38
+ * storage compiler, at the rule's anchor.
39
+ */
40
+ export declare class ConditionFormula implements ICalculation.IFormula {
41
+ protected _text: string;
42
+ protected readonly _marked: boolean;
43
+ protected _host: FormulaHost | null;
44
+ protected _binding: ConditionFormulaBinding | null;
45
+ protected _compiled: {
46
+ key: string;
47
+ formula: ICalculation.IFormula;
48
+ } | null;
49
+ /**
50
+ * @param text Canonical formula text, with or without a leading `=`.
51
+ * @param marked Whether the slot spells the formula with a leading `=` on the wire (a comparison
52
+ * operand, a between bound) or bare (an `expression` param).
53
+ */
54
+ constructor(text: string, marked: boolean);
55
+ /** Whether the wire form carries the leading `=`. */
56
+ isMarked(): boolean;
57
+ /** @internal */
58
+ bind(binding: ConditionFormulaBinding | null): void;
59
+ /**
60
+ * Reads the text from `host`'s body from now on; `null` stops, keeping the body's last text.
61
+ * @internal
62
+ */
63
+ bindHost(host: FormulaHost | null): void;
64
+ protected _readHost(host: FormulaHost): string | null;
65
+ /** The transform the body's text is imaged through; see {@link _readHost}. */
66
+ protected _readTransform(scope: string | null): ICalculation.FormulaTransform | undefined;
67
+ /** The canonical text, without a leading `=`. */
68
+ getText(): string;
69
+ protected _formula(): ICalculation.IFormula | null;
70
+ /** {@inheritDoc ICalculation.IFormula.evaluate} */
71
+ evaluate(options?: number | ICalculation.EvaluateOptions): Promise<Scalar | IRange>;
72
+ /** {@inheritDoc ICalculation.IFormula.getCalculationStatus} */
73
+ getCalculationStatus(): ICalculation.ResultStatus;
74
+ /** {@inheritDoc ICalculation.IFormula.isCompiled} */
75
+ isCompiled(): boolean;
76
+ /** {@inheritDoc ICalculation.IFormula.getExpression} */
77
+ getExpression(options?: ICalculation.FormulaTextOptions): string;
78
+ /** {@inheritDoc ICalculation.IFormula.getAnchor} */
79
+ getAnchor(): IRange.CellCoords | null;
80
+ /** {@inheritDoc ICalculation.IFormula.shift} */
81
+ shift(target: IRange.CellCoords): ICalculation.IFormula | null;
82
+ /** {@inheritDoc ICalculation.IFormula.getReferences} */
83
+ getReferences(): ICellRanges | null;
84
+ /** {@inheritDoc ICalculation.IFormula.hasRefError} */
85
+ hasRefError(): boolean;
86
+ /**
87
+ * {@inheritDoc ICalculation.IFormula.setReferenceAt}
88
+ *
89
+ * @remarks
90
+ * Not supported: a condition's formula changes by setting the condition.
91
+ */
92
+ setReferenceAt(_index: number, _reference: ICellRange.Address, _options?: string | ITransaction.OperationOptions): Promise<this>;
93
+ /**
94
+ * {@inheritDoc ICalculation.IFormula.setReferenceModeAt}
95
+ *
96
+ * @remarks
97
+ * Not supported: a condition's formula changes by setting the condition.
98
+ */
99
+ setReferenceModeAt(_index: number, _side?: ICalculation.ReferenceSide, _mode?: number, _options?: string | ITransaction.OperationOptions): Promise<this>;
100
+ /** {@inheritDoc ICalculation.IFormula.isReferenceOnly} */
101
+ isReferenceOnly(): boolean;
102
+ /** {@inheritDoc ICalculation.IFormula.isVolatile} */
103
+ isVolatile(): Promise<boolean>;
104
+ /** {@inheritDoc ICalculation.IFormula.getTokens} */
105
+ getTokens(evalIndex?: number): readonly ICalculation.FormulaToken[];
106
+ /** {@inheritDoc ICalculation.IFormula.isValid} */
107
+ isValid(): boolean;
108
+ /** {@inheritDoc ICalculation.IFormula.autoCorrect} */
109
+ autoCorrect(): ICalculation.IFormula | null;
110
+ /** The wire form: canonical text, `=`-prefixed for a marked slot. */
111
+ toJSON(): string;
112
+ /** The expression, `=`-prefixed for a marked slot. */
113
+ toString(): string;
114
+ get [Symbol.toStringTag](): string;
115
+ /** {@inheritDoc ICalculation.IFormula.isIFormula} */
116
+ get isIFormula(): true;
117
+ }
118
+ /**
119
+ * The source of a list condition (`inSet` with formula text for its items): a reference, a name,
120
+ * or a formula whose result is the list.
121
+ *
122
+ * @remarks
123
+ * What the rule WATCHES is not the source but the check Excel makes with it,
124
+ * `ISNUMBER(MATCH(<cell>, <source>, 0))`: `MATCH`'s exact mode is Excel's list-validation rule
125
+ * (wildcards, text case-insensitive, type strict), and as a per-cell formula it resolves a
126
+ * relative source (`INDIRECT($E11)`) against each cell's own row the way every condition formula
127
+ * does. The text this holds is still the source's: read back from the watched body with the root
128
+ * swapped for `MATCH`'s second argument, so a row insert above the source moves the source here
129
+ * as it does any condition formula.
130
+ */
131
+ export declare class ListSourceFormula extends ConditionFormula {
132
+ constructor(text: string);
133
+ /**
134
+ * The per-cell check, authored at `at`: `<cell>` is `at` itself, relative, so a fill to each
135
+ * cell tests that cell's own value.
136
+ *
137
+ * @remarks
138
+ * A source that does not compile on its own fails every cell (`FALSE`) rather than being spliced
139
+ * in: an unclosed one (`OFFSET($A$1,0,0,3`) would take the check's own `,0))` as its arguments,
140
+ * and the text read back from the check would carry them.
141
+ */
142
+ getCheckExpression(at: IRange.CellCoords): string;
143
+ /**
144
+ * Not for a source that does not compile: its check does not hold it (see
145
+ * {@link getCheckExpression}), so its text stays as authored.
146
+ */
147
+ bindHost(host: FormulaHost | null): void;
148
+ /** {@inheritDoc ConditionFormula._readTransform} */
149
+ protected _readTransform(scope: string | null): ICalculation.FormulaTransform | undefined;
150
+ get [Symbol.toStringTag](): string;
151
+ }
152
+ //# sourceMappingURL=_ConditionFormula.d.ts.map
@@ -3,6 +3,7 @@ import { RunCoords, MaybePromise } from '@sheetxl/utils';
3
3
  import { ISparseGrid } from '../collections';
4
4
  import { ICalculation } from '../calculation';
5
5
  import { ICondition } from './ICondition';
6
+ import { ConditionFormula } from './_ConditionFormula';
6
7
  export declare class ConditionOperator<P = any> implements ICondition.IOperator<P> {
7
8
  protected _delegate: ICondition.IOperator;
8
9
  protected _types: readonly (InteropScalarType | null)[] | null;
@@ -48,6 +49,46 @@ export declare function encodeParamJSON(param: any): any;
48
49
  * are left encoded — they decode when their own input resolves.
49
50
  */
50
51
  export declare function decodeParamJSON(param: any): any;
52
+ /**
53
+ * The operators whose Scalar param may be a `=`-prefixed formula operand. The text rules
54
+ * (`textContains` &c.) are not among them: their param is text by type.
55
+ */
56
+ export declare const FormulaOperandOperators: ReadonlySet<string>;
57
+ /**
58
+ * Lifts the formula slots of `param`, for `operatorName`, into {@link ConditionFormula}s: an
59
+ * `expression` param, a `=`-prefixed comparison operand, a between bound, and the same inside a
60
+ * combinator's raw children. An `IFormula` is taken by its canonical text.
61
+ */
62
+ export declare function liftFormulaParam(operatorName: string | null | undefined, param: any): any;
63
+ /**
64
+ * Whether `text` is a list LITERAL (`"a,b,c"`): one string token, a doubled quote inside being one
65
+ * quote. Anything else is a reference or a formula whose result is the list.
66
+ */
67
+ export declare function isListLiteral(text: string): boolean;
68
+ /**
69
+ * The items of a list literal, or `null` when `text` is not one (see {@link isListLiteral}).
70
+ *
71
+ * @remarks
72
+ * Excel's reading: the string's doubled quotes become one quote, then the whole is split on `,`
73
+ * with no quoting inside, so `"q,r",s` is the three items `"q`, `r"` and `s`. The items are returned
74
+ * as stored, spaces and all; matching is {@link createListLiteralMatcher}'s business.
75
+ */
76
+ export declare function parseListLiteral(text: string): string[] | null;
77
+ /**
78
+ * `items` spelled as a list literal (`"a,b,c"`), the inverse of {@link parseListLiteral}: items kept
79
+ * as given, a quote doubled. `null` when an item holds `,`, which a literal has no way to spell.
80
+ */
81
+ export declare function formatListLiteral(items: readonly string[]): string | null;
82
+ /**
83
+ * Whether a cell's `text` is on a literal list, the way Excel checks one: the text trimmed of
84
+ * spaces, against each item with its LEADING spaces dropped, case-sensitively. An item with a
85
+ * trailing space can therefore never match, as in Excel.
86
+ */
87
+ export declare function createListLiteralMatcher(items: readonly string[]): (text: string) => boolean;
88
+ /**
89
+ * Visits every {@link ConditionFormula} a condition holds, at any combinator depth.
90
+ */
91
+ export declare function forEachConditionFormula(condition: ICondition | null | undefined, visit: (formula: ConditionFormula) => void): void;
51
92
  export declare function resolveInput(condition: ICondition.Input | null): ICondition | null;
52
93
  /**
53
94
  * A condition whose selector or operator is not in the registry.
@@ -99,6 +140,15 @@ export declare class UnresolvedCondition<P = any> implements ICondition<P> {
99
140
  * of an exception that costs the caller the entire rule.
100
141
  */
101
142
  export declare function fromJSON<P = any>(json: ICondition.JSON<P> | null | undefined): ICondition<P> | null;
143
+ /**
144
+ * Per-condition options shared by the single-condition ({@link evalConditions}) and
145
+ * multi-condition ({@link evalRangeConditions}) drivers.
146
+ */
147
+ /**
148
+ * The condition's answer for the BLANK cells of a range, asked per cell — lazily, by the caller,
149
+ * for the cells it actually reads. Blank cells are never visited by the engine.
150
+ */
151
+ export type BlankResolver = (rowIndex: number, colIndex: number) => boolean;
102
152
  /**
103
153
  * Iterates through all values executing a single condition (`conditions[0]`) and calling the
104
154
  * appropriate callbacks. Used by Data Validation and Conditional Formatting.
@@ -120,7 +170,7 @@ export interface DoRunRangeConditionsOptions extends ICondition.RangeOptions {
120
170
  * long-lived owner; absent for a one-shot evaluation, which leaves the operator to evaluate for
121
171
  * itself.
122
172
  */
123
- watchFormula?: ((expression: string) => MaybePromise<IRange | null>) | null;
173
+ watchFormula?: ((formula: ICalculation.IFormula | string) => MaybePromise<IRange | null>) | null;
124
174
  values: ISparseGrid<Scalar>;
125
175
  coords: Readonly<IRange.Coords>;
126
176
  getHiddenRuns?: (axis: IRange.Axis) => readonly RunCoords[];
@@ -135,6 +185,15 @@ export interface DoRunRangeConditionsOptions extends ICondition.RangeOptions {
135
185
  */
136
186
  onHiddenRun?: (run: Readonly<RunCoords>) => void;
137
187
  }
188
+ /**
189
+ * The `RangeOptions` a filter call means: a bare `ICondition.Input` is one condition at index 0
190
+ * (the JSDoc example on `ICellRange.filter`), a `RangeOptions` (identified by its `conditions`
191
+ * array) passes through unchanged, and nothing is an empty list.
192
+ *
193
+ * @remarks
194
+ * Shared by `ICellRange.filter` and `ITable.filter`, so a bare input means the same to both.
195
+ */
196
+ export declare function normalizeFilterInput(condition: ICondition.Input | ICondition.RangeOptions | null | undefined): ICondition.RangeOptions;
138
197
  /**
139
198
  * Evaluates `conditions[]` in array order against the row (or column) axis, ANDing each condition
140
199
  * into a running visibility mask — Excel's own AutoFilter model (DESIGN-FILTER.md §2): a dynamic
@@ -151,13 +210,12 @@ export declare function evalRangeConditions(options: DoRunRangeConditionsOptions
151
210
  export interface DoRunConditionsOptions extends ICondition.RangeOptions {
152
211
  runtime: IRuntime;
153
212
  /**
154
- * The calculation engine backing {@link ICondition.IContext.createFormula} /
155
- * {@link ICondition.IContext.resolveFormula}.
213
+ * The calculation engine backing {@link ICondition.IContext.createFormula} and the unwatched
214
+ * fallback of {@link ICondition.IContext.watchFormula}.
156
215
  *
157
216
  * @remarks
158
217
  * Optional — a caller with no live workbook (e.g. a headless condition eval) simply gets a
159
- * context where those two methods return `null` / the value unchanged, same as before either
160
- * was implemented. See `ConditionContext.createFormula`.
218
+ * context where both return `null`. See `ConditionContext.createFormula`.
161
219
  */
162
220
  calculation?: ICalculation | null;
163
221
  /**
@@ -166,7 +224,7 @@ export interface DoRunConditionsOptions extends ICondition.RangeOptions {
166
224
  * long-lived owner; absent for a one-shot evaluation, which leaves the operator to evaluate for
167
225
  * itself.
168
226
  */
169
- watchFormula?: ((expression: string) => MaybePromise<IRange | null>) | null;
227
+ watchFormula?: ((formula: ICalculation.IFormula | string) => MaybePromise<IRange | null>) | null;
170
228
  values: ISparseGrid<Scalar>;
171
229
  coords: Readonly<IRange.Coords>;
172
230
  getHiddenRuns?: (axis: IRange.Axis) => readonly RunCoords[];
@@ -179,12 +237,17 @@ export interface DoRunConditionsOptions extends ICondition.RangeOptions {
179
237
  */
180
238
  onFalse?: (coords: IRange.CellCoords, value: Scalar) => void;
181
239
  /**
182
- * Call on blank.
240
+ * How to answer for the BLANK cells of `coords`, delivered ONCE per evaluation and only when
241
+ * the range has at least one.
183
242
  *
184
243
  * @remarks
185
- * Only called once.
186
- * Only called if there is at least one blank.
244
+ * Blank cells are not stored and are never visited. What the caller gets is a reader to ask per
245
+ * cell, lazily, for the cells it actually reads — a render asks for the cells on screen — so the
246
+ * evaluation itself costs nothing for them however many there are. A reader rather than one
247
+ * precomputed answer because the answer can differ per blank: an `expression` shifts its
248
+ * references with the cell, so `Key!B3="#"` over an all-blank grid is TRUE in some cells and
249
+ * FALSE in others, and the formula's own block evaluation already holds each one.
187
250
  */
188
- onBlank?: (isTrue: boolean) => void;
251
+ onBlank?: (resolve: BlankResolver) => void;
189
252
  }
190
253
  //# sourceMappingURL=_ConditionUtils.d.ts.map
@@ -1,4 +1,4 @@
1
- import { Scalar, IRange } from '@sheetxl/primitives';
1
+ import { IRange, Scalar } from '@sheetxl/primitives';
2
2
  import { ReferenceableClipboard } from '@sheetxl/utils';
3
3
  import { ITransaction } from '../transaction';
4
4
  import { IListener } from '../listener';
@@ -6,12 +6,15 @@ import { ICellRange, ICellRanges } from '../cellRange';
6
6
  import { IStyle, IStyleCollection } from '../style';
7
7
  import { ISheet } from '../sheet';
8
8
  import { ISparseGrid, ISpatialMap } from '../collections';
9
+ import { ICalculation } from '../calculation';
10
+ import { BlankResolver } from '../condition/_ConditionUtils';
11
+ import { ConditionFormula } from '../condition/_ConditionFormula';
9
12
  import { AnchoredConditional } from '../condition/AnchoredConditional';
10
13
  import { IConditionalFormat } from './IConditionalFormat';
11
14
  /**
12
15
  * Implementation of {@link IConditionalFormat}.
13
16
  */
14
- export declare class ConditionalFormat extends AnchoredConditional<State, CommitView, IConditionalFormat.Events> implements IConditionalFormat {
17
+ export declare class ConditionalFormat extends AnchoredConditional<State, IConditionalFormat.Events> implements IConditionalFormat {
15
18
  protected _styles: IStyleCollection;
16
19
  protected _stylesRemoveListener: IListener.Remove | null;
17
20
  protected _colorScale: PreparedColorScale | null;
@@ -19,7 +22,16 @@ export declare class ConditionalFormat extends AnchoredConditional<State, Commit
19
22
  protected _iconSet: PreparedIconSet | null;
20
23
  protected _matches: ISparseGrid<boolean> | null;
21
24
  /**
22
- * What each `formula` stop currently resolves to, keyed by its expression — kept fresh by the
25
+ * How to answer for the BLANK cells, one reader per anchored area, asked per cell read. Blanks
26
+ * are never materialized into `_matches`: a rule over a whole empty column is one entry here,
27
+ * not a million there.
28
+ */
29
+ protected _blankResolvers: {
30
+ area: IRange.Coords;
31
+ resolve: BlankResolver;
32
+ }[] | null;
33
+ /**
34
+ * What each `formula` stop currently resolves to, keyed by its formula — kept fresh by the
23
35
  * watches {@link _syncStopWatches} registers, and read (never computed) while preparing a scale.
24
36
  *
25
37
  * @remarks
@@ -27,9 +39,10 @@ export declare class ConditionalFormat extends AnchoredConditional<State, Commit
27
39
  * listener cannot see. Resolving it during the prepare therefore answered once and then aged
28
40
  * silently; a watch is what makes it keep answering.
29
41
  */
30
- protected _stopValues: Map<string, number | null>;
31
- /** Removes for those watches, and the (anchor, expressions) pair they were registered for. */
42
+ protected _stopValues: Map<ICalculation.IFormula, number | null>;
43
+ /** Removes for those watches, the formulas they hold, and the (anchor, formulas) pair they were registered for. */
32
44
  protected _stopWatchRemoves: IListener.Remove[] | null;
45
+ protected _stopWatchFormulas: ConditionFormula[] | null;
33
46
  protected _stopWatchKey: string | null;
34
47
  /**
35
48
  * Which round of prepares is current. Bumped once per {@link _processValueUpdates}; a prepare
@@ -68,9 +81,9 @@ export declare class ConditionalFormat extends AnchoredConditional<State, Commit
68
81
  */
69
82
  protected _resolveStopValues(ranges: ICellRanges, stops: IConditionalFormat.Stop[]): Promise<(number | null)[]>;
70
83
  /**
71
- * The cell a stop's formula is anchored at — the top-left of the rule's FIRST range, the same
72
- * origin an `expression` rule's relative references shift from (and the origin the writer
73
- * anchors a generated formula to).
84
+ * The cell a stop's formula is anchored at — the top-left of the bounding box of the rule's
85
+ * ranges, the same origin an `expression` rule's relative references shift from (and the origin
86
+ * the writer anchors a generated formula to).
74
87
  */
75
88
  protected _formulaAnchor(ranges: ICellRanges): Partial<IRange.CellCoords> | null;
76
89
  /**
@@ -173,8 +186,6 @@ interface State extends AnchoredConditional.State {
173
186
  /** Opaque third-party payload. Carried, never interpreted. */
174
187
  ext: Record<string, unknown> | null;
175
188
  }
176
- interface CommitView extends AnchoredConditional.CommitView {
177
- }
178
189
  type RGB = readonly [number, number, number];
179
190
  interface ResolvedStop {
180
191
  v: number;
@@ -1,20 +1,31 @@
1
1
  import { ICellRanges } from '../cellRange';
2
+ import { ICollection, AbstractCollection } from '../type';
3
+ import { IListener } from '../listener';
2
4
  import { IConditionalFormatCollection } from './IConditionalFormatCollection';
3
5
  import { IConditionalFormat } from './IConditionalFormat';
4
- export declare class ConditionalFormatCollection implements IConditionalFormatCollection {
6
+ /**
7
+ * Implementation for {@link IConditionalFormatCollection}.
8
+ *
9
+ * @remarks
10
+ * A front over the sheet's own conditional-format state — the sheet keeps the store and the
11
+ * events, this class keeps the API. `onCollectionChange` is the sheet's
12
+ * `onConditionalFormatsChange`, forwarded with this collection as the source.
13
+ */
14
+ export declare class ConditionalFormatCollection extends AbstractCollection<IConditionalFormat, IConditionalFormatCollection.GetItemsOptions> implements IConditionalFormatCollection {
5
15
  private _add;
6
16
  private _get;
7
17
  private _createItem;
8
- constructor(add: (address: ICellRanges.Address | IConditionalFormat, options?: IConditionalFormatCollection.AddOptions) => IConditionalFormat, get: (address: ICellRanges.Address | null | undefined, ignoreHidden?: boolean, fullyContained?: boolean) => IConditionalFormat[], createItem: (template?: IConditionalFormat | null) => IConditionalFormat);
18
+ private _addListeners;
19
+ constructor(add: (address: ICellRanges.Address | IConditionalFormat, options?: IConditionalFormatCollection.AddOptions) => IConditionalFormat, get: (address: ICellRanges.Address | null | undefined, ignoreHidden?: boolean, fullyContained?: boolean) => IConditionalFormat[], createItem: (template?: IConditionalFormat | null) => IConditionalFormat, addListeners: (listeners: ICollection.IListeners, options?: IListener.Options) => IListener.Remove);
9
20
  /** {@inheritDoc IConditionalFormatCollection.add} */
10
21
  add(address: ICellRanges.Address | IConditionalFormat, options?: IConditionalFormatCollection.AddOptions): IConditionalFormat;
11
- /** {@inheritDoc ICollection.[Symbol.iterator]} */
12
- [Symbol.iterator](): IterableIterator<IConditionalFormat>;
13
- /** {@inheritDoc IConditionalFormatCollection.getItems} */
14
- getItems(options?: IConditionalFormatCollection.GetItemsOptions): IConditionalFormat[];
22
+ /** {@inheritDoc AbstractCollection._getItems} */
23
+ protected _getItems(options?: IConditionalFormatCollection.GetItemsOptions): IConditionalFormat[];
15
24
  /** {@inheritDoc IConditionalFormatCollection.createItem} */
16
25
  createItem(template?: IConditionalFormat | null): IConditionalFormat;
17
- /** {@inheritDoc IConditionalFormatCollection.getCount} */
18
- getCount(): number;
26
+ /** {@inheritDoc ICollection.addListeners} */
27
+ addListeners(listeners: ICollection.IListeners, options?: IListener.Options): IListener.Remove;
28
+ /** {@inheritDoc IConditionalFormatCollection.isIConditionalFormatCollection} */
29
+ get isIConditionalFormatCollection(): true;
19
30
  }
20
31
  //# sourceMappingURL=ConditionalFormatCollection.d.ts.map
@@ -6,6 +6,7 @@ import { IHistory } from '../history';
6
6
  import { IAnchored } from '../anchored';
7
7
  import { ICellRanges } from '../cellRange';
8
8
  import { IListener } from '../listener';
9
+ import { ICalculation } from '../calculation';
9
10
  import { ICondition } from '../condition';
10
11
  import { IStyle } from '../style';
11
12
  import { IConditionalFormatCollection } from './IConditionalFormatCollection';
@@ -241,10 +242,11 @@ export declare namespace IConditionalFormat {
241
242
  * - Num: absolute number
242
243
  * - Percent: 0..100 of min..max span
243
244
  * - Percentile: 0..100 quantile (requires percentile stats)
244
- * * For strings:
245
- * - Formula: a formula that evaluates to a string value.
245
+ * * For formulas:
246
+ * - Formula: a formula whose result is the threshold. Authored as formula text or an
247
+ * {@link ICalculation.IFormula}; a rule holds it as an `IFormula`.
246
248
  */
247
- value?: number | string;
249
+ value?: number | string | ICalculation.IFormula;
248
250
  /**
249
251
  * Upper bound exclusivity.
250
252
  *
@@ -27,6 +27,8 @@ export interface IConditionalFormatCollection extends ICollection<IConditionalFo
27
27
  * @param template A template to use for the temporary item.
28
28
  */
29
29
  createItem(template?: IConditionalFormat): IConditionalFormat;
30
+ /** For runtime type checking. */
31
+ readonly isIConditionalFormatCollection: true;
30
32
  }
31
33
  /**
32
34
  * {@inheritDoc IConditionalFormatCollection}
@@ -1,14 +1,16 @@
1
+ import { IRange } from '@sheetxl/primitives';
1
2
  import { ReferenceableClipboard } from '@sheetxl/utils';
2
3
  import { IListener } from '../listener';
3
4
  import { ITransaction } from '../transaction';
4
5
  import { IGrid } from '../collections';
5
6
  import { ICellRange } from '../cellRange';
7
+ import { BlankResolver } from '../condition/_ConditionUtils';
6
8
  import { AnchoredConditional } from '../condition/AnchoredConditional';
7
9
  import { IDataValidation } from './IDataValidation';
8
10
  /**
9
11
  * Implementation of {@link IDataValidation}.
10
12
  */
11
- export declare class DataValidation extends AnchoredConditional<State, CommitView, IDataValidation.Events> implements IDataValidation {
13
+ export declare class DataValidation extends AnchoredConditional<State, IDataValidation.Events> implements IDataValidation {
12
14
  /**
13
15
  * Cache of failing cells for quick reads in {@link getAlertAt} — a plain field, NOT transactional
14
16
  * state, mirroring ConditionalFormat's `_matches`.
@@ -20,6 +22,21 @@ export declare class DataValidation extends AnchoredConditional<State, CommitVie
20
22
  * commit onto the undo stack for a change no user made.
21
23
  */
22
24
  protected _results: IGrid<boolean> | null;
25
+ /**
26
+ * How the EMPTY cells answer, one reader per anchored area, or `null` when every blank passes
27
+ * (Ignore blank on, or no condition). Swapped with {@link _results}, never materialized into it:
28
+ * a whole-column rule is one entry here, not a million there.
29
+ */
30
+ protected _blankAreas: BlankArea[] | null;
31
+ /**
32
+ * Whether the rule's answer for a blank can differ by position (it reads a formula). When it
33
+ * cannot, one question per area answers every blank in it.
34
+ */
35
+ protected _blankPerCell: boolean;
36
+ /** {@link _blankAreas} split into disjoint pieces, built on the first count or entries read. */
37
+ protected _blankPieces: BlankPiece[] | null;
38
+ /** {@link getAlertCount}'s answer for the current results, or `null` until asked. */
39
+ protected _alertCount: number | null;
23
40
  /**
24
41
  * Which evaluation round is current. Bumped once per {@link _processValueUpdates}; a round
25
42
  * writes its results only if it is still the newest when it finishes. Same shape and reason as
@@ -34,12 +51,33 @@ export declare class DataValidation extends AnchoredConditional<State, CommitVie
34
51
  protected _getDefaultState(options: DataValidation.ConstructorOptions): Readonly<State>;
35
52
  /** @internal */
36
53
  protected _processValueUpdates(_range?: ICellRange | null): void;
54
+ /** Swaps in one evaluation's answers; everything derived from the previous ones goes with them. */
55
+ protected _setResults(results: IGrid<boolean> | null, blankAreas: BlankArea[] | null, blankPerCell?: boolean): void;
56
+ /** Whether an EMPTY cell of `areas` fails. Every area covering the cell has a say, as for values. */
57
+ protected _isBlankFailing(areas: readonly BlankArea[], rowIndex: number, columnIndex: number): boolean;
58
+ /** One area's answer for a blank. A rule reading no formula answers once for the whole area. */
59
+ protected _isBlankPassing(blankArea: BlankArea, rowIndex: number, columnIndex: number): boolean;
60
+ /**
61
+ * The blank areas as disjoint pieces, each knowing every area that covers it — so an overlap is
62
+ * counted once and still answered by all of its rules. Disjoint areas are their own pieces.
63
+ */
64
+ protected _getBlankPieces(): BlankPiece[];
65
+ /** How many cells of `coords` hold a value — off the value grid's runs, never its cells. */
66
+ protected _countValues(coords: IRange.Coords): number;
37
67
  /** {@inheritDoc IDataValidation.getAlertAt} */
38
68
  getAlertAt(rowIndex: number, columnIndex: number): boolean;
39
69
  /** {@inheritDoc IDataValidation.getAlertEntries} */
40
70
  getAlertEntries(options?: ICellRange.IteratorOptions): IGrid.EntryIterator<boolean>;
71
+ /**
72
+ * Each piece in axis order: its stored results and its blanks, merged as the caller reads. A
73
+ * piece whose blanks pass is read off the results grid alone; one whose blanks fail walks its
74
+ * values, yielding the gaps between them without asking; one read per cell asks per gap cell.
75
+ */
76
+ protected _pieceEntries(pieces: readonly BlankPiece[], results: IGrid<boolean> | null, axis: IRange.Axis, reverse: boolean): Generator<IGrid.Entry<boolean>, undefined, undefined>;
41
77
  /** {@inheritDoc IDataValidation.getAlertCount} */
42
78
  getAlertCount(): number;
79
+ /** {@inheritDoc IDataValidation.getListItemsAt} */
80
+ getListItemsAt(rowIndex: number, columnIndex: number): Promise<readonly IDataValidation.ListItem[]>;
43
81
  /** {@inheritDoc IDataValidation.setHideDropdown} */
44
82
  setHideDropdown(hide: boolean, options?: ITransaction.OperationOptions): this;
45
83
  /** {@inheritDoc IDataValidation.isHideDropdown} */
@@ -114,8 +152,17 @@ interface State extends AnchoredConditional.State {
114
152
  /** Opaque third-party payload. Carried, never interpreted. */
115
153
  ext: Record<string, unknown> | null;
116
154
  }
117
- /** @internal */
118
- interface CommitView extends AnchoredConditional.CommitView {
155
+ /** One anchored area's reader for its empty cells. */
156
+ interface BlankArea {
157
+ area: IRange.Coords;
158
+ resolve: BlankResolver;
159
+ /** The area's one answer when it cannot vary by position; `null` until asked. */
160
+ passes: boolean | null;
161
+ }
162
+ /** A disjoint piece of the blank areas, with every area that covers all of it. */
163
+ interface BlankPiece {
164
+ coords: IRange.Coords;
165
+ areas: readonly BlankArea[];
119
166
  }
120
167
  export {};
121
168
  //# sourceMappingURL=DataValidation.d.ts.map
@@ -1,20 +1,31 @@
1
1
  import { ICellRanges } from '../cellRange';
2
+ import { ICollection, AbstractCollection } from '../type';
3
+ import { IListener } from '../listener';
2
4
  import { IDataValidationCollection } from './IDataValidationCollection';
3
5
  import { IDataValidation } from './IDataValidation';
4
- export declare class DataValidationCollection implements IDataValidationCollection {
6
+ /**
7
+ * Implementation for {@link IDataValidationCollection}.
8
+ *
9
+ * @remarks
10
+ * A front over the sheet's own data-validation state — the sheet keeps the store and the
11
+ * events, this class keeps the API. `onCollectionChange` is the sheet's
12
+ * `onDataValidationsChange`, forwarded with this collection as the source.
13
+ */
14
+ export declare class DataValidationCollection extends AbstractCollection<IDataValidation, IDataValidationCollection.GetItemsOptions> implements IDataValidationCollection {
5
15
  private _add;
6
16
  private _get;
7
17
  private _createItem;
8
- constructor(add: (address: ICellRanges.Address | IDataValidation, options?: IDataValidationCollection.AddOptions) => IDataValidation, get: (address: ICellRanges.Address | null | undefined, ignoreHidden?: boolean, fullyContained?: boolean) => IDataValidation[], createItem: (template?: IDataValidation | null) => IDataValidation);
18
+ private _addListeners;
19
+ constructor(add: (address: ICellRanges.Address | IDataValidation, options?: IDataValidationCollection.AddOptions) => IDataValidation, get: (address: ICellRanges.Address | null | undefined, ignoreHidden?: boolean, fullyContained?: boolean) => IDataValidation[], createItem: (template?: IDataValidation | null) => IDataValidation, addListeners: (listeners: ICollection.IListeners, options?: IListener.Options) => IListener.Remove);
9
20
  /** {@inheritDoc IDataValidationCollection.add} */
10
21
  add(address: ICellRanges.Address | IDataValidation, options?: IDataValidationCollection.AddOptions): IDataValidation;
11
- /** {@inheritDoc ICollection.[Symbol.iterator]} */
12
- [Symbol.iterator](): IterableIterator<IDataValidation>;
13
- /** {@inheritDoc IDataValidationCollection.getItems} */
14
- getItems(options?: IDataValidationCollection.GetItemsOptions): IDataValidation[];
15
- /** {@inheritDoc IDataValidationCollection.getCount} */
16
- getCount(): number;
17
- /** {@inheritDoc IDataValidationCollection.getCount} */
22
+ /** {@inheritDoc AbstractCollection._getItems} */
23
+ protected _getItems(options?: IDataValidationCollection.GetItemsOptions): IDataValidation[];
24
+ /** {@inheritDoc IDataValidationCollection.createItem} */
18
25
  createItem(template?: IDataValidation | null): IDataValidation;
26
+ /** {@inheritDoc ICollection.addListeners} */
27
+ addListeners(listeners: ICollection.IListeners, options?: IListener.Options): IListener.Remove;
28
+ /** {@inheritDoc IDataValidationCollection.isIDataValidationCollection} */
29
+ get isIDataValidationCollection(): true;
19
30
  }
20
31
  //# sourceMappingURL=DataValidationCollection.d.ts.map