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

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 (565) hide show
  1. package/THIRD-PARTY-NOTICES.md +1 -1
  2. package/browser/esm/{DBIu6NUHIcxOOBQp.mjs → BEAY9XgKNx-bakXW.mjs} +2 -2
  3. package/browser/esm/BbSmt62FpFIpoVzu.mjs +392 -0
  4. package/browser/esm/BcHmrKHwMMOlzc9_.mjs +357 -0
  5. package/browser/esm/BgcZ-CoTbMfmyDJL.mjs +412 -0
  6. package/browser/esm/Bk7xxbdDpa7-sIwd.mjs +7 -0
  7. package/browser/esm/BqskM7wA8oPfFQue.mjs +20 -0
  8. package/browser/esm/Btg43M1Bf-ENDreu.mjs +540 -0
  9. package/browser/esm/BzLfNyc6OOShIErH.mjs +598 -0
  10. package/browser/esm/C9B0djuUarfNdoj0.mjs +466 -0
  11. package/browser/esm/{CHSahmMFYNB0Ajkf.mjs → CSx9ed1JOs7K5BXO.mjs} +2 -2
  12. package/browser/esm/CYyv6uGjo10ig5FP.mjs +142 -0
  13. package/browser/esm/CZ5oa92wZEAXebgk.mjs +622 -0
  14. package/browser/esm/CdLZWVcH8cncBUPJ.mjs +849 -0
  15. package/browser/esm/Cgd5BnM3hg9RyUel.mjs +171 -0
  16. package/browser/esm/CjsUGJEQSbGjnH6R.mjs +1001 -0
  17. package/browser/esm/ClB5ix51roQOpZEr.mjs +7402 -0
  18. package/browser/esm/{CKk58ZLcrllMzfou.mjs → Cqr3knDsBvoVZ6MN.mjs} +179 -202
  19. package/browser/esm/D4uVlrG0xEFctsSM.mjs +905 -0
  20. package/browser/esm/DOMHmhYzPcLVcpAW.mjs +7 -0
  21. package/browser/esm/DUvUK61b2_4pf4tG.mjs +484 -0
  22. package/browser/esm/De175LygU7ot4nQm.mjs +441 -0
  23. package/browser/esm/DhKkrCVASZ6Isvz6.mjs +527 -0
  24. package/browser/esm/Di58Ji1n--3Mgc_2.mjs +607 -0
  25. package/browser/esm/Dtoyt8q5RyGAlxCp.mjs +1141 -0
  26. package/browser/esm/Y79I7Sm8kjaYexhf.mjs +167 -0
  27. package/browser/esm/index.mjs +1472 -1023
  28. package/browser/esm/o8MFgcVXns987D6_.mjs +400 -0
  29. package/browser/esm/zqJOaweiXE9D8RY1.mjs +66681 -0
  30. package/licenses/dependencies.txt +209 -209
  31. package/node/esm/B6D7sSetrcOWLsKj.mjs +1135 -0
  32. package/node/esm/B9ljpEIZg6wOTzRE.mjs +142 -0
  33. package/node/esm/BH1v-E4Ro3bR7Znw.mjs +962 -0
  34. package/node/esm/BN9j8V9gCExMjVtJ.mjs +540 -0
  35. package/node/esm/{DUYP6faJJHCaW1Xf.mjs → Bh4dv6tMjXX3X4nI.mjs} +1 -1
  36. package/node/esm/Bqd62L8KFgdS0Vou.mjs +7 -0
  37. package/node/esm/Bsx9uijd4X_SKV3L.mjs +360 -0
  38. package/node/esm/BtuY37FumvLE7EBo.mjs +629 -0
  39. package/node/esm/C6ZXsNyLXI6zA63X.mjs +402 -0
  40. package/node/esm/CCouEwT37f08qO3V.mjs +7 -0
  41. package/node/esm/CD9wbvufChVYYkrI.mjs +451 -0
  42. package/node/esm/CImNvdz1iP-lUlro.mjs +610 -0
  43. package/node/esm/CT0CN82y0_Qgoryk.mjs +7568 -0
  44. package/node/esm/CUQi5ZtMO02nhG0W.mjs +596 -0
  45. package/node/esm/CUUoseJmFsCf82bb.mjs +28 -0
  46. package/node/esm/CnSQ7MTXAUAyBOoS.mjs +911 -0
  47. package/node/esm/D7MfcID2Wf6l6VpC.mjs +171 -0
  48. package/node/esm/DCplLG93GfTs1vNw.mjs +1860 -0
  49. package/node/esm/DHUADiCmxNQS1ARz.mjs +417 -0
  50. package/node/esm/DMD12JUh7HJw2-jl.mjs +638 -0
  51. package/node/esm/DdFgXl-Ux2cMBTs_.mjs +15 -0
  52. package/node/esm/DefYISWfdZJFx57m.mjs +255 -0
  53. package/node/esm/Ds0d8zXzmgOu3MGx.mjs +403 -0
  54. package/node/esm/MiU4rDOiocmJ-9Ry.mjs +1783 -0
  55. package/node/esm/index.mjs +49153 -36824
  56. package/package.json +15 -16
  57. package/resources/contents.json +64 -0
  58. package/resources/fonts/arial-bold-italic.metrics.json +139 -0
  59. package/resources/fonts/arial-bold.metrics.json +139 -0
  60. package/resources/fonts/arial-italic.metrics.json +139 -0
  61. package/resources/fonts/arial-regular.metrics.json +139 -0
  62. package/resources/fonts/calibri-bold-italic.metrics.json +137 -0
  63. package/resources/fonts/calibri-bold.metrics.json +137 -0
  64. package/resources/fonts/calibri-italic.metrics.json +137 -0
  65. package/resources/fonts/calibri-regular.metrics.json +137 -0
  66. package/resources/fonts/cambria-bold-italic.metrics.json +66 -0
  67. package/resources/fonts/cambria-bold.metrics.json +66 -0
  68. package/resources/fonts/cambria-italic.metrics.json +66 -0
  69. package/resources/fonts/cambria-regular.metrics.json +66 -0
  70. package/resources/fonts/contents.json +126 -0
  71. package/resources/fonts/courier-new-bold-italic.metrics.json +143 -0
  72. package/resources/fonts/courier-new-bold.metrics.json +143 -0
  73. package/resources/fonts/courier-new-italic.metrics.json +143 -0
  74. package/resources/fonts/courier-new-regular.metrics.json +143 -0
  75. package/resources/fonts/times-new-roman-bold-italic.metrics.json +141 -0
  76. package/resources/fonts/times-new-roman-bold.metrics.json +141 -0
  77. package/resources/fonts/times-new-roman-italic.metrics.json +143 -0
  78. package/resources/fonts/times-new-roman-regular.metrics.json +141 -0
  79. package/resources/locales/de/model.msg.json +112 -12
  80. package/resources/locales/en/model.msg.json +119 -13
  81. package/types/scripting-api.json +8048 -0
  82. package/types/scripting-enums.json +277 -106
  83. package/types/scripting.d.ts +18126 -7971
  84. package/types/src/anchored/AbstractAnchored.d.ts +18 -8
  85. package/types/src/anchored/AnchoredMap.d.ts +2 -0
  86. package/types/src/anchored/IAnchoredMap.d.ts +52 -4
  87. package/types/src/autoFill/AutoFill.d.ts +316 -32
  88. package/types/src/autoFill/IAutoFill.d.ts +232 -15
  89. package/types/src/border/{IBorder.d.ts → IBorders.d.ts} +42 -41
  90. package/types/src/border/index.d.ts +1 -1
  91. package/types/src/calculation/Calculation.d.ts +759 -49
  92. package/types/src/calculation/ExternalBookBindings.d.ts +118 -0
  93. package/types/src/calculation/FormulaText.d.ts +82 -0
  94. package/types/src/calculation/ICalculation.d.ts +318 -81
  95. package/types/src/calculation/INamedFormulasCollection.d.ts +5 -8
  96. package/types/src/calculation/NamedFormulaCollection.d.ts +139 -107
  97. package/types/src/calculation/NamedLambdaFunction.d.ts +28 -0
  98. package/types/src/calculation/TokenType.d.ts +9 -0
  99. package/types/src/calculation/Types.d.ts +83 -2
  100. package/types/src/calculation/_CloneBoundary.d.ts +80 -0
  101. package/types/src/calculation/_TableRename.d.ts +13 -0
  102. package/types/src/calculation/compiler/ASTTypes.d.ts +71 -0
  103. package/types/src/calculation/compiler/CompilerUtils.d.ts +135 -44
  104. package/types/src/calculation/compiler/FormulaCompiler.d.ts +29 -4
  105. package/types/src/calculation/compiler/FormulaParser.d.ts +1 -2
  106. package/types/src/calculation/compiler/LiteTransform.d.ts +17 -0
  107. package/types/src/calculation/compiler/ParserUtils.d.ts +26 -1
  108. package/types/src/calculation/compiler/SRParser.d.ts +2 -1
  109. package/types/src/calculation/compiler/Types.d.ts +79 -9
  110. package/types/src/calculation/executor/CalcExecutor.d.ts +422 -34
  111. package/types/src/calculation/executor/CalcExecutorUtils.d.ts +43 -2
  112. package/types/src/calculation/executor/CircularReference.d.ts +2 -0
  113. package/types/src/calculation/formula/Formula.d.ts +58 -21
  114. package/types/src/calculation/formula/FormulaBlock.d.ts +125 -23
  115. package/types/src/calculation/formula/FormulaRecordView.d.ts +79 -0
  116. package/types/src/calculation/formula/FunctionValues.d.ts +10 -0
  117. package/types/src/calculation/formula/IFormulaBlock.d.ts +261 -67
  118. package/types/src/calculation/formula/LambdaValue.d.ts +46 -23
  119. package/types/src/calculation/formula/LazyValue.d.ts +96 -0
  120. package/types/src/calculation/formula/TokenUtils.d.ts +25 -1
  121. package/types/src/calculation/formula/index.d.ts +1 -0
  122. package/types/src/calculation/functions/FunctionDeclarations.d.ts +31 -0
  123. package/types/src/calculation/functions/Operators.d.ts +8 -0
  124. package/types/src/calculation/functions/initializeFunctions.d.ts +15 -2
  125. package/types/src/calculation/grid/CalcGrid.d.ts +407 -158
  126. package/types/src/calculation/grid/CalcGridBackend.d.ts +493 -0
  127. package/types/src/calculation/grid/CalcGridProxy.d.ts +133 -0
  128. package/types/src/calculation/grid/CalcGridUtils.d.ts +62 -12
  129. package/types/src/calculation/grid/FormulaEntry.d.ts +129 -0
  130. package/types/src/calculation/grid/FormulaHost.d.ts +239 -0
  131. package/types/src/calculation/grid/ICalcGrid.d.ts +499 -141
  132. package/types/src/calculation/grid/_CalcRequest.d.ts +289 -0
  133. package/types/src/calculation/grid/index.d.ts +4 -0
  134. package/types/src/calculation/index.d.ts +2 -0
  135. package/types/src/calculation/spatial/ContentfulSpatialValue.d.ts +6 -2
  136. package/types/src/calculation/spatial/FormulaSpatialValue.d.ts +339 -11
  137. package/types/src/calculation/spatial/SpillEntry.d.ts +20 -5
  138. package/types/src/calculation/spatial/TouchedWindows.d.ts +86 -0
  139. package/types/src/calculation/spatial/index.d.ts +1 -0
  140. package/types/src/calculation/state/CalcInputs.d.ts +41 -0
  141. package/types/src/calculation/state/CalcNode.d.ts +160 -29
  142. package/types/src/calculation/state/CalcScope.d.ts +37 -0
  143. package/types/src/calculation/state/CalcState.d.ts +22 -1
  144. package/types/src/calculation/state/CalculationContext.d.ts +53 -4
  145. package/types/src/calculation/state/IContextContainer.d.ts +159 -26
  146. package/types/src/calculation/state/_PendingOverlayGrid.d.ts +163 -0
  147. package/types/src/calculation/state/_ReadObservedGrid.d.ts +74 -8
  148. package/types/src/calculation/state/index.d.ts +1 -0
  149. package/types/src/calculation/symbol/ExternalSheetSymbols.d.ts +80 -0
  150. package/types/src/calculation/symbol/ISymbolRegistry.d.ts +23 -0
  151. package/types/src/calculation/symbol/IndirectSymbolProvider.d.ts +16 -2
  152. package/types/src/calculation/symbol/SheetSymbolProvider.d.ts +63 -3
  153. package/types/src/calculation/symbol/SymbolRegistry.d.ts +20 -0
  154. package/types/src/calculation/symbol/index.d.ts +3 -2
  155. package/types/src/cell/ICell.d.ts +104 -29
  156. package/types/src/cell/ICellHeader.d.ts +24 -2
  157. package/types/src/cell/ICellProtection.d.ts +50 -10
  158. package/types/src/cellRange/ICellRange.d.ts +458 -97
  159. package/types/src/cellRange/ICellRanges.d.ts +23 -21
  160. package/types/src/chart/Chart.d.ts +41 -13
  161. package/types/src/chart/ChartCollection.d.ts +26 -0
  162. package/types/src/chart/IChart.d.ts +166 -12
  163. package/types/src/chart/IChartCollection.d.ts +25 -0
  164. package/types/src/chart/_ChartXml.d.ts +70 -0
  165. package/types/src/chart/index.d.ts +1 -3
  166. package/types/src/collections/ArraysGrid.d.ts +1 -1
  167. package/types/src/collections/IGrid.d.ts +1 -1
  168. package/types/src/collections/ISparseGrid.d.ts +9 -0
  169. package/types/src/collections/ISpatialMap.d.ts +59 -21
  170. package/types/src/collections/ImmutableList.d.ts +28 -0
  171. package/types/src/collections/MixedTypedArrayList.d.ts +168 -108
  172. package/types/src/collections/OverlappingRangeIterator.d.ts +13 -17
  173. package/types/src/collections/RepeatingList.d.ts +7 -0
  174. package/types/src/collections/ScalarGrid.d.ts +50 -0
  175. package/types/src/collections/SparseGrid.d.ts +1 -1
  176. package/types/src/collections/SpatialMap.d.ts +13 -21
  177. package/types/src/collections/Tuple.d.ts +128 -16
  178. package/types/src/collections/_GridUtils.d.ts +19 -6
  179. package/types/src/collections/_RangeSweep.d.ts +97 -0
  180. package/types/src/collections/_SpatialUtils.d.ts +20 -2
  181. package/types/src/collections/index.d.ts +1 -0
  182. package/types/src/color/_BuiltInIndexDefs.d.ts +6 -0
  183. package/types/src/comment/Comment.d.ts +223 -0
  184. package/types/src/comment/CommentCollection.d.ts +40 -0
  185. package/types/src/comment/IComment.d.ts +340 -50
  186. package/types/src/comment/ICommentCollection.d.ts +90 -0
  187. package/types/src/comment/NoteMovable.d.ts +26 -0
  188. package/types/src/comment/_CommentUtils.d.ts +50 -0
  189. package/types/src/comment/_NoteBox.d.ts +50 -0
  190. package/types/src/comment/index.d.ts +1 -0
  191. package/types/src/condition/AnchoredConditional.d.ts +82 -17
  192. package/types/src/condition/BuiltInOperators/AbstractOperator.d.ts +42 -12
  193. package/types/src/condition/BuiltInOperators/AfterEqualToOperator.d.ts +2 -0
  194. package/types/src/condition/BuiltInOperators/AfterOperator.d.ts +2 -0
  195. package/types/src/condition/BuiltInOperators/AndOperator.d.ts +3 -1
  196. package/types/src/condition/BuiltInOperators/AverageOperator.d.ts +2 -0
  197. package/types/src/condition/BuiltInOperators/BeforeEqualToOperator.d.ts +2 -0
  198. package/types/src/condition/BuiltInOperators/BeforeOperator.d.ts +2 -0
  199. package/types/src/condition/BuiltInOperators/BetweenOperator.d.ts +2 -0
  200. package/types/src/condition/BuiltInOperators/ColorOperator.d.ts +4 -0
  201. package/types/src/condition/BuiltInOperators/ContainsOperator.d.ts +2 -0
  202. package/types/src/condition/BuiltInOperators/EndsWithOperator.d.ts +2 -0
  203. package/types/src/condition/BuiltInOperators/EqualToOperator.d.ts +4 -1
  204. package/types/src/condition/BuiltInOperators/ExpressionOperator.d.ts +5 -6
  205. package/types/src/condition/BuiltInOperators/GreaterThanEqualToOperator.d.ts +2 -0
  206. package/types/src/condition/BuiltInOperators/GreaterThanOperator.d.ts +2 -0
  207. package/types/src/condition/BuiltInOperators/IconOperator.d.ts +4 -0
  208. package/types/src/condition/BuiltInOperators/InSetOperator.d.ts +22 -5
  209. package/types/src/condition/BuiltInOperators/LessThanEqualToOperator.d.ts +2 -0
  210. package/types/src/condition/BuiltInOperators/LessThanOperator.d.ts +2 -0
  211. package/types/src/condition/BuiltInOperators/NotOperator.d.ts +2 -0
  212. package/types/src/condition/BuiltInOperators/OrOperator.d.ts +3 -1
  213. package/types/src/condition/BuiltInOperators/StartsWithOperator.d.ts +2 -0
  214. package/types/src/condition/BuiltInOperators/TimePeriodOperator.d.ts +2 -0
  215. package/types/src/condition/BuiltInOperators/TopNOperator.d.ts +6 -0
  216. package/types/src/condition/BuiltinSelectors/BaseSelector.d.ts +21 -6
  217. package/types/src/condition/BuiltinSelectors/DateSelector.d.ts +4 -5
  218. package/types/src/condition/BuiltinSelectors/DisplaySelector.d.ts +20 -0
  219. package/types/src/condition/BuiltinSelectors/TextLengthSelector.d.ts +7 -5
  220. package/types/src/condition/BuiltinSelectors/TimeSelector.d.ts +3 -5
  221. package/types/src/condition/BuiltinSelectors/WholeSelector.d.ts +3 -5
  222. package/types/src/condition/BuiltinSelectors/index.d.ts +12 -6
  223. package/types/src/condition/Condition.d.ts +19 -1
  224. package/types/src/condition/ICondition.d.ts +293 -73
  225. package/types/src/condition/_ConditionFormula.d.ts +152 -0
  226. package/types/src/condition/_ConditionUtils.d.ts +167 -13
  227. package/types/src/conditionalFormat/ConditionalEntry.d.ts +3 -3
  228. package/types/src/conditionalFormat/ConditionalFormat.d.ts +25 -14
  229. package/types/src/conditionalFormat/ConditionalFormatCollection.d.ts +19 -8
  230. package/types/src/conditionalFormat/IConditionalFormat.d.ts +12 -10
  231. package/types/src/conditionalFormat/IConditionalFormatCollection.d.ts +2 -0
  232. package/types/src/dataValidation/DataValidation.d.ts +69 -3
  233. package/types/src/dataValidation/DataValidationCollection.d.ts +20 -9
  234. package/types/src/dataValidation/IDataValidation.d.ts +149 -30
  235. package/types/src/dataValidation/IDataValidationCollection.d.ts +10 -2
  236. package/types/src/date/DateUtils.d.ts +20 -0
  237. package/types/src/date/_DateUtils.d.ts +91 -7
  238. package/types/src/externalBook/ExternalBookCollection.d.ts +145 -12
  239. package/types/src/externalBook/ExternalBookName.d.ts +96 -0
  240. package/types/src/externalBook/IExternalBook.d.ts +170 -18
  241. package/types/src/externalBook/IExternalBookCollection.d.ts +79 -7
  242. package/types/src/externalBook/index.d.ts +1 -0
  243. package/types/src/{lib/file → file}/file.browser.d.ts +22 -8
  244. package/types/src/{lib/file → file}/file.node.d.ts +7 -2
  245. package/types/src/fill/IEffect.d.ts +5 -5
  246. package/types/src/fill/IFill.d.ts +123 -78
  247. package/types/src/fill/IStroke.d.ts +190 -64
  248. package/types/src/fill/RectAlignment.d.ts +20 -0
  249. package/types/src/fill/_Fills.d.ts +187 -0
  250. package/types/src/fill/_Stroke.d.ts +89 -0
  251. package/types/src/fill/index.d.ts +1 -0
  252. package/types/src/filter/IFilter.d.ts +188 -5
  253. package/types/src/font/AdvanceBuilder.d.ts +25 -0
  254. package/types/src/font/AdvanceTable.d.ts +114 -0
  255. package/types/src/font/FontCollection.d.ts +57 -0
  256. package/types/src/font/IFont.d.ts +17 -0
  257. package/types/src/font/IFontCollection.d.ts +120 -22
  258. package/types/src/font/TableFileAdvanceBuilder.d.ts +27 -0
  259. package/types/src/font/_BuiltinFontTables.d.ts +10 -0
  260. package/types/src/font/index.d.ts +4 -1
  261. package/types/src/group/Group.d.ts +136 -0
  262. package/types/src/group/GroupMovableCollection.d.ts +37 -0
  263. package/types/src/group/IGroup.d.ts +129 -0
  264. package/types/src/group/index.d.ts +2 -0
  265. package/types/src/history/IHistory.d.ts +3 -2
  266. package/types/src/hyperlink/IHyperlink.d.ts +13 -0
  267. package/types/src/hyperlink/_Hyperlink.d.ts +5 -1
  268. package/types/src/i18n/LanguagePack.d.ts +12 -4
  269. package/types/src/index.d.ts +5 -0
  270. package/types/src/io/AbstractBackingStore.d.ts +24 -1
  271. package/types/src/io/ArrayBackingStore.d.ts +1 -1
  272. package/types/src/io/EmbeddedPart.d.ts +20 -0
  273. package/types/src/io/IEmbeddedPart.d.ts +63 -0
  274. package/types/src/io/IWorkbookIO.d.ts +185 -18
  275. package/types/src/io/WorkbookIO.d.ts +9 -0
  276. package/types/src/io/WorkbookOrigin.d.ts +20 -11
  277. package/types/src/io/WorkbookOriginProvider.d.ts +46 -0
  278. package/types/src/io/_XmlFragment.d.ts +49 -0
  279. package/types/src/io/index.d.ts +1 -0
  280. package/types/src/license/LicenseDetails.d.ts +1 -0
  281. package/types/src/license/LicenseManager.d.ts +4 -1
  282. package/types/src/license/Types.d.ts +38 -0
  283. package/types/src/license/_Utils.d.ts +22 -0
  284. package/types/src/license/details.d.ts +24 -0
  285. package/types/src/license/license-key.d.ts +49 -2
  286. package/types/src/license/runtime.browser.d.ts +41 -0
  287. package/types/src/{lib/utils/utils.node.d.ts → license/runtime.node.d.ts} +9 -12
  288. package/types/src/listener/IListener.d.ts +12 -7
  289. package/types/src/listener/ListenerEmitter.d.ts +46 -5
  290. package/types/src/model/AbstractModel.d.ts +14 -5
  291. package/types/src/movable/AbstractMovableContent.d.ts +182 -0
  292. package/types/src/movable/CustomElement.d.ts +4 -5
  293. package/types/src/movable/ErrorContent.d.ts +49 -0
  294. package/types/src/movable/FormControl.d.ts +285 -0
  295. package/types/src/movable/GroupMember.d.ts +87 -0
  296. package/types/src/movable/ICustomElement.d.ts +7 -2
  297. package/types/src/movable/IErrorContent.d.ts +23 -0
  298. package/types/src/movable/IFormControl.d.ts +455 -0
  299. package/types/src/movable/IMovable.d.ts +378 -46
  300. package/types/src/movable/IMovableCollection.d.ts +63 -3
  301. package/types/src/movable/Movable.d.ts +149 -49
  302. package/types/src/movable/MovableCollection.d.ts +15 -8
  303. package/types/src/movable/MovableContentRegistry.d.ts +113 -0
  304. package/types/src/movable/_BuiltInContents.d.ts +14 -0
  305. package/types/src/movable/_ContentFactory.d.ts +35 -0
  306. package/types/src/movable/_DrawnBounds.d.ts +37 -0
  307. package/types/src/movable/_InsertableCollection.d.ts +28 -0
  308. package/types/src/movable/_MovableUtils.d.ts +5 -0
  309. package/types/src/movable/_PendingContent.d.ts +25 -0
  310. package/types/src/movable/_PlacementUtils.d.ts +55 -0
  311. package/types/src/movable/_RotatedFrame.d.ts +20 -0
  312. package/types/src/movable/index.d.ts +7 -1
  313. package/types/src/named/AbstractNamed.d.ts +1 -1
  314. package/types/src/named/INamed.d.ts +4 -1
  315. package/types/src/named/INamedCollection.d.ts +26 -0
  316. package/types/src/named/NamedCollection.d.ts +16 -15
  317. package/types/src/numFmt/BuiltInFormats.d.ts +20 -7
  318. package/types/src/numFmt/IFormatEngine.d.ts +2 -0
  319. package/types/src/numFmt/NumfmtFormatEngine.d.ts +2 -0
  320. package/types/src/numFmt/_FormatCell.d.ts +11 -2
  321. package/types/src/numFmt/_NumFmtUtils.d.ts +0 -1
  322. package/types/src/numFmt/vendor/numfmt/_sheetxl.d.ts +6 -0
  323. package/types/src/outline/IOutline.d.ts +186 -0
  324. package/types/src/outline/Outline.d.ts +157 -0
  325. package/types/src/outline/index.d.ts +2 -0
  326. package/types/src/person/IPerson.d.ts +99 -0
  327. package/types/src/person/IPersonCollection.d.ts +51 -0
  328. package/types/src/person/Person.d.ts +32 -0
  329. package/types/src/person/PersonCollection.d.ts +49 -0
  330. package/types/src/person/index.d.ts +4 -0
  331. package/types/src/picture/IPicture.d.ts +33 -3
  332. package/types/src/picture/Picture.d.ts +33 -13
  333. package/types/src/pivot/IPivotTable.d.ts +72 -0
  334. package/types/src/pivot/IPivotTableCollection.d.ts +25 -0
  335. package/types/src/pivot/PivotCache.d.ts +34 -0
  336. package/types/src/pivot/PivotTable.d.ts +61 -0
  337. package/types/src/pivot/PivotTableCollection.d.ts +25 -0
  338. package/types/src/pivot/_PivotXml.d.ts +24 -0
  339. package/types/src/pivot/index.d.ts +6 -0
  340. package/types/src/primitives/CompositeRangeStats.d.ts +2 -0
  341. package/types/src/primitives/Criteria.d.ts +1 -1
  342. package/types/src/primitives/Grouping.d.ts +65 -0
  343. package/types/src/primitives/LambdaBrand.d.ts +26 -0
  344. package/types/src/primitives/PrimitiveUtils.d.ts +60 -21
  345. package/types/src/primitives/Range.d.ts +136 -26
  346. package/types/src/primitives/RangeStats.d.ts +30 -2
  347. package/types/src/primitives/ReferenceRange.d.ts +44 -0
  348. package/types/src/primitives/Runtime.d.ts +15 -2
  349. package/types/src/primitives/environment.browser.d.ts +9 -0
  350. package/types/src/primitives/environment.node.d.ts +10 -0
  351. package/types/src/primitives/stats/AggregateStats.d.ts +49 -15
  352. package/types/src/primitives/stats/Cancellation.d.ts +13 -0
  353. package/types/src/primitives/stats/FrequencyStats.d.ts +10 -1
  354. package/types/src/primitives/stats/LookupIndex.d.ts +46 -0
  355. package/types/src/primitives/stats/Ranked.d.ts +1 -1
  356. package/types/src/primitives/stats/SortedNumbers.d.ts +4 -2
  357. package/types/src/primitives/stats/index.d.ts +1 -0
  358. package/types/src/print/IPrint.d.ts +0 -22
  359. package/types/src/protectedRange/IProtectedRange.d.ts +4 -0
  360. package/types/src/protectedRange/IProtectedRangeCollection.d.ts +2 -0
  361. package/types/src/protectedRange/ProtectedRange.d.ts +1 -4
  362. package/types/src/protectedRange/ProtectedRangeCollection.d.ts +19 -8
  363. package/types/src/protection/DefaultProtection.d.ts +12 -1
  364. package/types/src/protection/IProtection.d.ts +36 -2
  365. package/types/src/reference/ReferenceUtils.d.ts +80 -0
  366. package/types/src/reference/index.d.ts +2 -0
  367. package/types/src/resource/IResource.d.ts +21 -1
  368. package/types/src/resource/IResourceCollection.d.ts +9 -1
  369. package/types/src/resource/ResourceCollection.d.ts +6 -6
  370. package/types/src/scripting/FunctionArguments.d.ts +22 -0
  371. package/types/src/scripting/FunctionCollection.d.ts +49 -15
  372. package/types/src/scripting/IFunctionCollection.d.ts +62 -32
  373. package/types/src/scripting/IModule.d.ts +25 -0
  374. package/types/src/scripting/IModuleCollection.d.ts +17 -0
  375. package/types/src/scripting/IScript.d.ts +28 -26
  376. package/types/src/scripting/Module.d.ts +34 -6
  377. package/types/src/scripting/ModuleCollection.d.ts +17 -12
  378. package/types/src/scripting/Runtime.d.ts +15 -0
  379. package/types/src/scripting/Scripts.d.ts +3 -7
  380. package/types/src/scripting/TypedFunction.d.ts +200 -4
  381. package/types/src/scripting/_FunctionIndex.d.ts +8 -3
  382. package/types/src/scripting/_ModuleUtils.d.ts +11 -1
  383. package/types/src/scripting/_ScriptUtils.d.ts +3 -0
  384. package/types/src/scripting/declarations.browser.d.ts +10 -0
  385. package/types/src/scripting/declarations.d.ts +49 -0
  386. package/types/src/scripting/declarations.node.d.ts +9 -0
  387. package/types/src/scripting/index.d.ts +3 -0
  388. package/types/src/selection/IMovableSelection.d.ts +148 -0
  389. package/types/src/selection/IRangeSelection.d.ts +9 -4
  390. package/types/src/selection/MovableSelection.d.ts +48 -0
  391. package/types/src/selection/RangeSelection.d.ts +15 -0
  392. package/types/src/selection/index.d.ts +1 -0
  393. package/types/src/shape/GeometryPreset.d.ts +197 -0
  394. package/types/src/shape/IGeometry.d.ts +380 -0
  395. package/types/src/shape/IShape.d.ts +341 -194
  396. package/types/src/shape/IShapeStyle.d.ts +135 -0
  397. package/types/src/shape/Shape.d.ts +107 -21
  398. package/types/src/shape/ShapeStyleUtils.d.ts +54 -0
  399. package/types/src/shape/_ConnectorFrame.d.ts +32 -0
  400. package/types/src/shape/_ConnectorRoute.d.ts +33 -0
  401. package/types/src/shape/_Connectors.d.ts +108 -0
  402. package/types/src/shape/_Geometry.d.ts +14 -0
  403. package/types/src/shape/_GeometryLoader.d.ts +21 -0
  404. package/types/src/shape/_ShapeStyle.d.ts +70 -0
  405. package/types/src/shape/_builtIn/_BuiltInChunks.d.ts +10 -0
  406. package/types/src/shape/_builtIn/_BuiltInDef.d.ts +9 -0
  407. package/types/src/shape/_builtIn/arrows.d.ts +6 -0
  408. package/types/src/shape/_builtIn/basic.d.ts +6 -0
  409. package/types/src/shape/_builtIn/callouts.d.ts +6 -0
  410. package/types/src/shape/_builtIn/flowchart.d.ts +6 -0
  411. package/types/src/shape/_builtIn/lines.d.ts +6 -0
  412. package/types/src/shape/_builtIn/math.d.ts +6 -0
  413. package/types/src/shape/_builtIn/other.d.ts +6 -0
  414. package/types/src/shape/_builtIn/rectangles.d.ts +6 -0
  415. package/types/src/shape/_builtIn/starsBanners.d.ts +6 -0
  416. package/types/src/shape/geometry/_strokeEnds.d.ts +7 -0
  417. package/types/src/shape/geometry/format.d.ts +3 -0
  418. package/types/src/shape/geometry/geometry.d.ts +85 -0
  419. package/types/src/shape/geometry/guides.d.ts +54 -0
  420. package/types/src/shape/geometry/handles.d.ts +14 -0
  421. package/types/src/shape/geometry/index.d.ts +7 -0
  422. package/types/src/shape/geometry/lineEnds.d.ts +54 -0
  423. package/types/src/shape/geometry/paths.d.ts +35 -0
  424. package/types/src/shape/geometry/segments.d.ts +114 -0
  425. package/types/src/shape/index.d.ts +3 -0
  426. package/types/src/sheet/CellRegion.d.ts +6 -0
  427. package/types/src/sheet/ICellContainerOptions.d.ts +50 -0
  428. package/types/src/sheet/ISheet.d.ts +197 -50
  429. package/types/src/sheet/ISheetCollection.d.ts +2 -5
  430. package/types/src/sheet/NamedCellRange.d.ts +16 -7
  431. package/types/src/sheet/NamedRange.d.ts +8 -0
  432. package/types/src/sheet/Sheet.d.ts +923 -138
  433. package/types/src/sheet/SheetCell.d.ts +92 -32
  434. package/types/src/sheet/SheetCollection.d.ts +19 -8
  435. package/types/src/sheet/SheetRange.d.ts +92 -17
  436. package/types/src/sheet/SheetRanges.d.ts +22 -9
  437. package/types/src/sheet/_CellBuffer.d.ts +214 -0
  438. package/types/src/sheet/_HeldFormula.d.ts +69 -0
  439. package/types/src/sheet/_InvalidSheetRange.d.ts +7 -7
  440. package/types/src/sheet/_ListenerAnchor.d.ts +104 -0
  441. package/types/src/sheet/_RangeStateSweep.d.ts +16 -0
  442. package/types/src/sheet/_ScalarListFactory.d.ts +61 -0
  443. package/types/src/sheet/_SheetAutoFillUtils.d.ts +74 -0
  444. package/types/src/sheet/_SheetAutoFitUtils.d.ts +28 -0
  445. package/types/src/sheet/_SheetEvents.d.ts +43 -0
  446. package/types/src/sheet/_SheetFilterUtils.d.ts +49 -1
  447. package/types/src/sheet/_SheetIntents.d.ts +296 -0
  448. package/types/src/sheet/_SheetMutations.d.ts +182 -62
  449. package/types/src/sheet/_SheetStateReader.d.ts +19 -13
  450. package/types/src/sheet/_SheetStateTypes.d.ts +83 -78
  451. package/types/src/sheet/_SheetUtils.d.ts +39 -22
  452. package/types/src/sheet/_WatchAnchor.d.ts +93 -0
  453. package/types/src/sheet/spatial/HeldFormulaEntry.d.ts +36 -0
  454. package/types/src/sheet/spatial/index.d.ts +1 -0
  455. package/types/src/sheet/style/SheetCellStyle.d.ts +209 -304
  456. package/types/src/sheet/style/SheetDirectStyle.d.ts +30 -19
  457. package/types/src/sheet/style/SheetNamedStyle.d.ts +17 -17
  458. package/types/src/sheet/style/SheetTableStyle.d.ts +5 -5
  459. package/types/src/sheet/style/_Resolvers.d.ts +14 -8
  460. package/types/src/sheet/style/_StyleUtils.d.ts +38 -8
  461. package/types/src/sheetHeader/ISheetHeader.d.ts +94 -53
  462. package/types/src/sheetHeader/SheetCellHeader.d.ts +4 -0
  463. package/types/src/sheetHeader/SheetHeader.d.ts +42 -22
  464. package/types/src/sheetHeader/_HeaderMetrics.d.ts +37 -0
  465. package/types/src/sheetHeader/_HeaderUtils.d.ts +5 -3
  466. package/types/src/sheetProtection/ISheetProtection.d.ts +41 -7
  467. package/types/src/sheetProtection/SheetProtection.d.ts +12 -0
  468. package/types/src/sheetView/ISheetView.d.ts +69 -15
  469. package/types/src/sheetView/SheetView.d.ts +20 -11
  470. package/types/src/slicer/ISlicer.d.ts +304 -17
  471. package/types/src/slicer/ISlicerStyle.d.ts +109 -0
  472. package/types/src/slicer/Slicer.d.ts +128 -13
  473. package/types/src/slicer/SlicerStyle.d.ts +25 -0
  474. package/types/src/slicer/_BuiltInSlicerStyles.d.ts +13 -0
  475. package/types/src/slicer/_SlicerUtils.d.ts +30 -0
  476. package/types/src/slicer/index.d.ts +1 -0
  477. package/types/src/sort/ISort.d.ts +4 -2
  478. package/types/src/string/IStringCollection.d.ts +5 -0
  479. package/types/src/string/StringCollection.d.ts +6 -6
  480. package/types/src/style/{IStyle.d.ts → ICellStyle.d.ts} +72 -52
  481. package/types/src/style/INamedStyleCollection.d.ts +72 -0
  482. package/types/src/style/ISlicerStyleCollection.d.ts +77 -0
  483. package/types/src/style/IStyleCollection.d.ts +91 -60
  484. package/types/src/style/ITableStyleCollection.d.ts +89 -0
  485. package/types/src/style/NamedStyleCollection.d.ts +39 -0
  486. package/types/src/style/SlicerStyleCollection.d.ts +46 -0
  487. package/types/src/style/StyleCollection.d.ts +81 -26
  488. package/types/src/style/TableStyleCollection.d.ts +49 -0
  489. package/types/src/style/_BuiltInStyleDefs.d.ts +6 -6
  490. package/types/src/style/_BuiltInStyleNames.d.ts +2 -2
  491. package/types/src/style/index.d.ts +7 -1
  492. package/types/src/table/AnchoredTable.d.ts +701 -72
  493. package/types/src/table/AutoTable.d.ts +7 -5
  494. package/types/src/table/ITable.d.ts +261 -34
  495. package/types/src/table/ITableCollection.d.ts +12 -0
  496. package/types/src/table/ITableStyle.d.ts +37 -37
  497. package/types/src/table/TableCollection.d.ts +19 -8
  498. package/types/src/table/_FilterField.d.ts +19 -6
  499. package/types/src/table/_NamedTable.d.ts +17 -1
  500. package/types/src/table/_NamedTableSource.d.ts +1 -0
  501. package/types/src/table/_SortField.d.ts +2 -0
  502. package/types/src/table/_TableColumn.d.ts +13 -2
  503. package/types/src/table/_TableMessages.d.ts +1 -0
  504. package/types/src/table/_TableUtils.d.ts +40 -0
  505. package/types/src/text/Bullet.d.ts +4 -0
  506. package/types/src/text/IText.d.ts +182 -0
  507. package/types/src/text/ITextFrame.d.ts +110 -1
  508. package/types/src/text/TextBoxAlignment.d.ts +25 -16
  509. package/types/src/text/TextFrame.d.ts +4 -0
  510. package/types/src/text/TextLine.d.ts +4 -0
  511. package/types/src/text/TextParagraph.d.ts +4 -0
  512. package/types/src/text/TextRotation.d.ts +3 -3
  513. package/types/src/text/TextRun.d.ts +9 -0
  514. package/types/src/text/TextStacked.d.ts +83 -0
  515. package/types/src/text/index.d.ts +1 -0
  516. package/types/src/text/richtext/IRichText.d.ts +36 -0
  517. package/types/src/text/richtext/IStyledFont.d.ts +18 -18
  518. package/types/src/text/richtext/index.d.ts +1 -0
  519. package/types/src/theme/ITheme.d.ts +45 -4
  520. package/types/src/theme/IThemeCollection.d.ts +2 -0
  521. package/types/src/theme/ThemeCollection.d.ts +11 -7
  522. package/types/src/theme/_OfficeFormatScheme.d.ts +3 -0
  523. package/types/src/transaction/ITransaction.d.ts +258 -45
  524. package/types/src/transaction/Transaction.d.ts +101 -11
  525. package/types/src/transaction/TransactionUndoManager.d.ts +4 -1
  526. package/types/src/type/AbstractCollection.d.ts +101 -0
  527. package/types/src/type/ICollection.d.ts +117 -0
  528. package/types/src/type/ITypes.d.ts +9 -7
  529. package/types/src/type/index.d.ts +1 -0
  530. package/types/src/utils/_CSSUtils.d.ts +3 -3
  531. package/types/src/wasm/_sdkWasm.d.ts +7 -0
  532. package/types/src/wasm/index.d.ts +2 -0
  533. package/types/src/wasm/sdkWasm.d.ts +29 -0
  534. package/types/src/workbook/IWorkbook.d.ts +180 -40
  535. package/types/src/workbook/Workbook.d.ts +123 -10
  536. package/types/src/workbook/_WorkbookIntents.d.ts +36 -0
  537. package/types/src/workbookProtection/IWorkbookProtection.d.ts +7 -0
  538. package/types/src/workbookProtection/WorkbookProtection.d.ts +3 -0
  539. package/types/src/workbookView/IWorkbookView.d.ts +12 -0
  540. package/types/src/workbookView/WorkbookView.d.ts +5 -0
  541. package/browser/cjs/B7_pDFYCVzt-3hUs.cjs +0 -1
  542. package/browser/cjs/BF14ZEAnaqxXroSj.cjs +0 -1
  543. package/browser/cjs/BXtvdT1Z-MsB_o5F.cjs +0 -1
  544. package/browser/cjs/Bc4JjVVZfFo3R4He.cjs +0 -33
  545. package/browser/cjs/CD2RXdnfqSYNc6gX.cjs +0 -57
  546. package/browser/cjs/DcLpXGexEtOxi-dD.cjs +0 -1
  547. package/browser/cjs/Dv3x6zut1ZRUt3IF.cjs +0 -10
  548. package/browser/cjs/index.cjs +0 -3
  549. package/browser/esm/0Mj5WKM362q6CECb.mjs +0 -824
  550. package/browser/esm/CPTtL2f6_4iblmFM.mjs +0 -4436
  551. package/browser/esm/CoA-sUxjiIUIpTUF.mjs +0 -109
  552. package/browser/esm/Dy4Sdpju1T2icURu.mjs +0 -50854
  553. package/node/esm/BtGxbEbBm79YvF_k.mjs +0 -843
  554. package/node/esm/DqgWsVXROpSgKq6c.mjs +0 -114
  555. package/types/src/cellRange/_GraphNode.d.ts +0 -38
  556. package/types/src/condition/BuiltinSelectors/ListSelector.d.ts +0 -12
  557. package/types/src/dataValidation/_Utils.d.ts +0 -10
  558. package/types/src/lib/utils/_Utils.d.ts +0 -20
  559. package/types/src/lib/utils/utils.browser.d.ts +0 -33
  560. package/types/src/movable/IGroup.d.ts +0 -30
  561. package/types/src/movable/IMovableSelection.d.ts +0 -49
  562. package/types/src/sheet/listener/RangesListener.d.ts +0 -32
  563. package/types/src/sheet/listener/RangesListenerEntry.d.ts +0 -19
  564. package/types/src/sheet/listener/index.d.ts +0 -3
  565. /package/types/src/{lib/utils → license}/banner.d.ts +0 -0
@@ -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,18 @@
1
+ import { IRange, IRuntime, Scalar } 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 { ICondition } from '../condition';
8
+ import { ListSourceFormula } from '../condition/_ConditionFormula';
9
+ import { BlankResolver } from '../condition/_ConditionUtils';
6
10
  import { AnchoredConditional } from '../condition/AnchoredConditional';
7
11
  import { IDataValidation } from './IDataValidation';
8
12
  /**
9
13
  * Implementation of {@link IDataValidation}.
10
14
  */
11
- export declare class DataValidation extends AnchoredConditional<State, CommitView, IDataValidation.Events> implements IDataValidation {
15
+ export declare class DataValidation extends AnchoredConditional<State, IDataValidation.Events> implements IDataValidation {
12
16
  /**
13
17
  * Cache of failing cells for quick reads in {@link getAlertAt} — a plain field, NOT transactional
14
18
  * state, mirroring ConditionalFormat's `_matches`.
@@ -20,6 +24,21 @@ export declare class DataValidation extends AnchoredConditional<State, CommitVie
20
24
  * commit onto the undo stack for a change no user made.
21
25
  */
22
26
  protected _results: IGrid<boolean> | null;
27
+ /**
28
+ * How the EMPTY cells answer, one reader per anchored area, or `null` when every blank passes
29
+ * (Ignore blank on, or no condition). Swapped with {@link _results}, never materialized into it:
30
+ * a whole-column rule is one entry here, not a million there.
31
+ */
32
+ protected _blankAreas: BlankArea[] | null;
33
+ /**
34
+ * Whether the rule's answer for a blank can differ by position (it reads a formula). When it
35
+ * cannot, one question per area answers every blank in it.
36
+ */
37
+ protected _blankPerCell: boolean;
38
+ /** {@link _blankAreas} split into disjoint pieces, built on the first count or entries read. */
39
+ protected _blankPieces: BlankPiece[] | null;
40
+ /** {@link getAlertCount}'s answer for the current results, or `null` until asked. */
41
+ protected _alertCount: number | null;
23
42
  /**
24
43
  * Which evaluation round is current. Bumped once per {@link _processValueUpdates}; a round
25
44
  * writes its results only if it is still the newest when it finishes. Same shape and reason as
@@ -34,12 +53,50 @@ export declare class DataValidation extends AnchoredConditional<State, CommitVie
34
53
  protected _getDefaultState(options: DataValidation.ConstructorOptions): Readonly<State>;
35
54
  /** @internal */
36
55
  protected _processValueUpdates(_range?: ICellRange | null): void;
56
+ /** Swaps in one evaluation's answers; everything derived from the previous ones goes with them. */
57
+ protected _setResults(results: IGrid<boolean> | null, blankAreas: BlankArea[] | null, blankPerCell?: boolean): void;
58
+ /** Whether an EMPTY cell of `areas` fails. Every area covering the cell has a say, as for values. */
59
+ protected _isBlankFailing(areas: readonly BlankArea[], rowIndex: number, columnIndex: number): boolean;
60
+ /** One area's answer for a blank. A rule reading no formula answers once for the whole area. */
61
+ protected _isBlankPassing(blankArea: BlankArea, rowIndex: number, columnIndex: number): boolean;
62
+ /**
63
+ * The blank areas as disjoint pieces, each knowing every area that covers it — so an overlap is
64
+ * counted once and still answered by all of its rules. Disjoint areas are their own pieces.
65
+ */
66
+ protected _getBlankPieces(): BlankPiece[];
67
+ /** How many cells of `coords` hold a value — off the value grid's runs, never its cells. */
68
+ protected _countValues(coords: IRange.Coords): number;
37
69
  /** {@inheritDoc IDataValidation.getAlertAt} */
38
70
  getAlertAt(rowIndex: number, columnIndex: number): boolean;
39
71
  /** {@inheritDoc IDataValidation.getAlertEntries} */
40
72
  getAlertEntries(options?: ICellRange.IteratorOptions): IGrid.EntryIterator<boolean>;
73
+ /**
74
+ * Each piece in axis order: its stored results and its blanks, merged as the caller reads. A
75
+ * piece whose blanks pass is read off the results grid alone; one whose blanks fail walks its
76
+ * values, yielding the gaps between them without asking; one read per cell asks per gap cell.
77
+ */
78
+ protected _pieceEntries(pieces: readonly BlankPiece[], results: IGrid<boolean> | null, axis: IRange.Axis, reverse: boolean): Generator<IGrid.Entry<boolean>, undefined, undefined>;
41
79
  /** {@inheritDoc IDataValidation.getAlertCount} */
42
80
  getAlertCount(): number;
81
+ /** {@inheritDoc IDataValidation.getListItemsAt} */
82
+ getListItemsAt(rowIndex: number, columnIndex: number): Promise<readonly IDataValidation.ListItem[]>;
83
+ /**
84
+ * Appends what a live base lists at a cell to `listed`: its values, duplicates kept. Returns
85
+ * whether the base holds a blank (an empty cell or a `""` result), which is listed by the caller.
86
+ */
87
+ protected _listSourceItemsAt(condition: ICondition, source: ListSourceFormula, rowIndex: number, columnIndex: number, listed: IDataValidation.ListItem[]): Promise<boolean>;
88
+ /** {@inheritDoc IDataValidation.validateInputAt} */
89
+ validateInputAt(input: string | Scalar, rowIndex: number, columnIndex: number): Promise<boolean>;
90
+ /**
91
+ * The value an entry would leave in a cell: text read as typed text is, a formula evaluated at
92
+ * the cell. `null` for a blank entry.
93
+ */
94
+ protected _resolveEntryAt(input: string | Scalar, cell: IRange.CellCoords): Promise<Scalar>;
95
+ /**
96
+ * A list source's check for one entry: `MATCH` against the source as filled to the cell, the
97
+ * same check the rule watches per cell (P6), answered as a one-cell range at `cell`.
98
+ */
99
+ protected _checkListEntryAt(source: ListSourceFormula, value: Scalar, cell: IRange.CellCoords, runtime: IRuntime): Promise<IRange | null>;
43
100
  /** {@inheritDoc IDataValidation.setHideDropdown} */
44
101
  setHideDropdown(hide: boolean, options?: ITransaction.OperationOptions): this;
45
102
  /** {@inheritDoc IDataValidation.isHideDropdown} */
@@ -114,8 +171,17 @@ interface State extends AnchoredConditional.State {
114
171
  /** Opaque third-party payload. Carried, never interpreted. */
115
172
  ext: Record<string, unknown> | null;
116
173
  }
117
- /** @internal */
118
- interface CommitView extends AnchoredConditional.CommitView {
174
+ /** One anchored area's reader for its empty cells. */
175
+ interface BlankArea {
176
+ area: IRange.Coords;
177
+ resolve: BlankResolver;
178
+ /** The area's one answer when it cannot vary by position; `null` until asked. */
179
+ passes: boolean | null;
180
+ }
181
+ /** A disjoint piece of the blank areas, with every area that covers all of it. */
182
+ interface BlankPiece {
183
+ coords: IRange.Coords;
184
+ areas: readonly BlankArea[];
119
185
  }
120
186
  export {};
121
187
  //# 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
@@ -1,4 +1,4 @@
1
- import { 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 { IHistory } from '../history';
@@ -9,10 +9,19 @@ import { ICondition } from '../condition';
9
9
  import { ICellRange, ICellRanges } from '../cellRange';
10
10
  import { IDataValidationCollection } from './IDataValidationCollection';
11
11
  /**
12
- * Represents a data validation range.
12
+ * A data validation: a rule that a cell's value must satisfy, over one or more ranges of a sheet,
13
+ * with the prompt shown when the cell is selected and the alert for a value that fails.
13
14
  *
14
15
  * @remarks
15
- * Used for modifying the type and rules of a data validation entry.
16
+ * Validations may overlap, and every one covering a cell applies: the cell is valid only when each
17
+ * of them accepts its value. Where a single answer is needed, the rule with the lowest
18
+ * {@link getIndex} wins: the prompt is the first covering rule's that has one, the alert the first
19
+ * failing rule's, and the dropdown offers the items every covering list rule accepts. Excel keeps
20
+ * one validation per cell, and when it opens a file whose validations overlap it honors only the
21
+ * first; see {@link ICell.getDataValidation}.
22
+ *
23
+ * The rule judges the value a cell holds, whatever wrote it. A value set through the API, pasted
24
+ * or filled is never refused; it is simply invalid, and {@link getAlertAt} says so.
16
25
  */
17
26
  export interface IDataValidation extends IAnchored, ICondition.Stateful {
18
27
  /** @inheritdoc ICondition.Stateful.getCondition */
@@ -22,27 +31,83 @@ export interface IDataValidation extends IAnchored, ICondition.Stateful {
22
31
  */
23
32
  setCondition(condition: ICondition.Input | null, options?: ITransaction.OperationOptions): this;
24
33
  /**
25
- * Creates a default condition for the data validation based on its range and the data.
26
- */
27
- createDefaultCondition(): ICondition;
28
- /**
29
- * Returns the validation results at the specified cell coordinates.
34
+ * Whether the cell at the specified coordinates fails this validation.
35
+ *
36
+ * @param rowIndex The sheet row.
37
+ * @param columnIndex The sheet column.
30
38
  *
31
39
  * @remarks
32
- * If there are multiple validations this will return the first one to fail.
40
+ * This validation's answer alone. Where validations overlap, a cell is invalid when any of the
41
+ * ones covering it fails ({@link ICellRange.getDataValidations}).
42
+ *
43
+ * An empty cell fails when Ignore blank is off ({@link isIncludeBlanks} is `false`) and the rule
44
+ * rejects a blank there, as Excel's Circle Invalid Data circles it. With Ignore blank on, an
45
+ * empty cell never fails. A cell holding `""` (a formula's empty text) is a value, and is judged.
33
46
  */
34
47
  getAlertAt(rowIndex: number, columnIndex: number): boolean;
35
48
  /**
36
- * Returns an iterator that allows you to iterate over the individual alert entries within the range,
37
- * yielding pairs of `IteratorContext` and a `Value`.
49
+ * The cells that fail this validation, each as a `[coords, true]` entry, empty cells included.
50
+ *
51
+ * @param options `axis` and `reverse` set the order within each of the validation's ranges; the
52
+ * ranges are visited in their own order.
38
53
  *
39
- * @returns An iterator that yields `ICellRange.Entry<IDataValidation.Results>` tuples for each value within the range.
54
+ * @remarks
55
+ * Lazy: the cost is what the caller reads. Stop early to pay for the first few entries only. When
56
+ * empty cells pass (Ignore blank on), they are skipped without being visited. When they fail, a
57
+ * whole-column rule yields every one of its empty cells, so take what you need.
40
58
  */
41
59
  getAlertEntries(options?: ICellRange.IteratorOptions): IGrid.EntryIterator<boolean>;
42
60
  /**
43
- * Returns the count of alert entries within the range.
61
+ * The number of cells that fail this validation, empty cells included.
62
+ *
63
+ * @remarks
64
+ * A rule that judges every empty cell alike (no formula) counts them without visiting any. A rule
65
+ * with a formula, a custom formula or a range list source, reads each empty cell's answer, so
66
+ * the first call over a large range can be slow. The answer is kept until the values change.
44
67
  */
45
68
  getAlertCount(): number;
69
+ /**
70
+ * The items a list validation offers at a cell: what its in-cell dropdown lists.
71
+ *
72
+ * @param rowIndex The cell's row.
73
+ * @param columnIndex The cell's column. A relative source (`$F1:$G1`, `INDIRECT($E1)`) gives each
74
+ * cell its own list, as it does in Excel.
75
+ *
76
+ * @returns The set's members: its `items`, then what its `source` lists in source order,
77
+ * duplicates kept, then its typed `additions`, with any `subtractions` left out. Empty
78
+ * when this is not a list validation or the set lists nothing. Blank source cells are
79
+ * not listed.
80
+ *
81
+ * @remarks
82
+ * Evaluated when asked, for one cell — the check itself does not need the items, so nothing is
83
+ * resolved until a dropdown or a preview asks. `text` is what a source cell shows (a date list
84
+ * reads as dates), the item itself for a typed one.
85
+ */
86
+ getListItemsAt(rowIndex: number, columnIndex: number): Promise<readonly IDataValidation.ListItem[]>;
87
+ /**
88
+ * Whether an entry would pass this validation if it were typed into a cell: the check a cell
89
+ * editor makes before it writes.
90
+ *
91
+ * @param input What would be written, as `setValue` takes it. Text is read as typed text is: a
92
+ * number, a date or a boolean when it reads as one, a formula when it starts with
93
+ * `=`. Any other value is taken as is.
94
+ * @param rowIndex The cell's row.
95
+ * @param columnIndex The cell's column.
96
+ *
97
+ * @returns `false` when the entry fails. `true` when it passes, when the cell is outside this
98
+ * validation, or when the validation has no condition.
99
+ *
100
+ * @remarks
101
+ * Nothing is written. A formula is judged by its result at that cell (`=9` fails a whole number
102
+ * between 1 and 5). A blank entry passes whatever {@link isIncludeBlanks} says, as typed entry does
103
+ * in Excel. Everything else is read as it stands, so a rule that reads the cell itself
104
+ * (`=COUNTIF($A:$A,A1)=1`) sees the value the cell holds now, not the entry — as Excel does.
105
+ *
106
+ * This validation's answer alone, whatever {@link isShowAlertMessage} says: the caller decides
107
+ * which validations to ask and what to show. Excel asks the active cell's rule only, and only for
108
+ * what is typed or picked; a value set through the API, pasted or filled is never checked.
109
+ */
110
+ validateInputAt(input: string | Scalar, rowIndex: number, columnIndex: number): Promise<boolean>;
46
111
  /**
47
112
  * Set whether to suppress the in-cell dropdown arrow for a list validation.
48
113
  *
@@ -59,10 +124,11 @@ export interface IDataValidation extends IAnchored, ICondition.Stateful {
59
124
  */
60
125
  isHideDropdown(): boolean;
61
126
  /**
62
- * Message for a user prompt.
127
+ * The message shown while a cell the rule covers is selected (Excel's *Input Message*).
63
128
  *
64
129
  * @remarks
65
- * This may be a tooltip or other indicator depending on the client.
130
+ * Shown only while {@link isShowPromptMessage} is on. Where validations overlap, the first
131
+ * covering rule with a prompt shows its own.
66
132
  */
67
133
  setPromptMessage(message: string, options?: ITransaction.OperationOptions): this;
68
134
  /**
@@ -80,7 +146,11 @@ export interface IDataValidation extends IAnchored, ICondition.Stateful {
80
146
  */
81
147
  getPromptTitle(): string;
82
148
  /**
83
- * Sets whether to show the prompt message when the cell is selected.
149
+ * Sets whether to show the prompt when a cell the rule covers is selected.
150
+ *
151
+ * @remarks
152
+ * Separate from the prompt's text, as in Excel: turning the prompt off keeps its title and
153
+ * message, and turning it back on shows them again.
84
154
  */
85
155
  setShowPromptMessage(show: boolean, options?: ITransaction.OperationOptions): this;
86
156
  /**
@@ -88,7 +158,7 @@ export interface IDataValidation extends IAnchored, ICondition.Stateful {
88
158
  */
89
159
  isShowPromptMessage(): boolean;
90
160
  /**
91
- * Message text of the alert.
161
+ * The message of the alert raised for a value that fails the rule (Excel's *Error Message*).
92
162
  */
93
163
  setAlertMessage(message: string, options?: ITransaction.OperationOptions): this;
94
164
  /**
@@ -106,7 +176,11 @@ export interface IDataValidation extends IAnchored, ICondition.Stateful {
106
176
  */
107
177
  getAlertTitle(): string;
108
178
  /**
109
- * Sets whether to show the alert message when the cell is selected.
179
+ * Sets whether a value that fails the rule raises the alert when a user enters it.
180
+ *
181
+ * @remarks
182
+ * With the alert off, a failing entry is accepted silently, whatever the {@link getAlertStyle}.
183
+ * It is still invalid: {@link getAlertAt} reports it either way.
110
184
  */
111
185
  setShowAlertMessage(show: boolean, options?: ITransaction.OperationOptions): this;
112
186
  /**
@@ -114,12 +188,20 @@ export interface IDataValidation extends IAnchored, ICondition.Stateful {
114
188
  */
115
189
  isShowAlertMessage(): boolean;
116
190
  /**
117
- * Sets the style of the alert shown when validation fails.
191
+ * Sets the style of the alert raised when a user enters a value that fails the rule.
118
192
  *
119
193
  * @remarks
120
- * This controls whether alert values are blocked (`Stop`),
121
- * allowed with a warning (`Warning`), or allowed with an informational
122
- * message (`Information`).
194
+ * `Stop` refuses the entry, `Warning` asks before accepting it, and `Information` accepts it with
195
+ * a message. Where validations overlap, the first failing rule's style is the one used.
196
+ *
197
+ * The alert answers what a user types or picks, as in Excel. A value written through the API,
198
+ * pasted or filled raises no alert and is never refused.
199
+ *
200
+ * The style applies only while {@link setShowAlertMessage} is on. With it off, an invalid entry
201
+ * is accepted without a word whatever the style, as in Excel, so a rule meant to refuse entry
202
+ * needs both.
203
+ *
204
+ * @defaultValue `Stop`
123
205
  */
124
206
  setAlertStyle(alertStyle: IDataValidation.AlertStyle, options?: ITransaction.OperationOptions): this;
125
207
  /**
@@ -127,10 +209,15 @@ export interface IDataValidation extends IAnchored, ICondition.Stateful {
127
209
  */
128
210
  getAlertStyle(): IDataValidation.AlertStyle;
129
211
  /**
130
- * If the cell has custom rendering.
212
+ * How a cell the rule covers asks to be drawn and edited, as keywords a client may honor.
131
213
  *
132
214
  * @remarks
133
- * This could be a list or a checkbox or a custom editor
215
+ * Derived from the condition, never stored on it: a rule whose param carries candidates (its
216
+ * operator {@link ICondition.IOperator.getCandidates | lists them}, as `inSet` does under any
217
+ * selector) answers `list`, which is what an in-cell dropdown is shown for; a rule under a date selector
218
+ * answers `date` and `calendar`, under the time selector `time` and `clock`. Whether the
219
+ * dropdown is actually shown is the rule's own {@link isHideDropdown}. Empty when the rule has
220
+ * no condition or nothing to ask for.
134
221
  */
135
222
  getRenderHints(): readonly string[];
136
223
  /**
@@ -154,12 +241,16 @@ export interface IDataValidation extends IAnchored, ICondition.Stateful {
154
241
  */
155
242
  update(update: Partial<IDataValidation.Properties> | IDataValidation, options?: ITransaction.OperationOptions): this;
156
243
  /**
157
- * Returns the index of this data validation within its container.
244
+ * Returns the index of this data validation within its container: its priority, `0` first.
245
+ *
246
+ * @remarks
247
+ * Where validations overlap, the lowest index supplies the prompt and the alert style; see
248
+ * {@link IDataValidation}. The writer saves the rules in this order.
158
249
  */
159
250
  getIndex(): number;
160
251
  /**
161
252
  * Sets the index of this data validation within its container.
162
- * @param index The new index to set.
253
+ * @param index The new index to set. See {@link getIndex}.
163
254
  */
164
255
  setIndex(index: number): this;
165
256
  /**
@@ -199,7 +290,7 @@ export interface IDataValidation extends IAnchored, ICondition.Stateful {
199
290
  readonly isIDataValidation: true;
200
291
  }
201
292
  /**
202
- * Capabilities for working with conditional styling ranges.
293
+ * Types for working with data validations.
203
294
  *
204
295
  * @see
205
296
  * ### **Interface**
@@ -215,19 +306,28 @@ export declare namespace IDataValidation {
215
306
  */
216
307
  const AlertStyle: {
217
308
  /**
218
- * Stops the user from entering alert data.
309
+ * Refuses an invalid entry.
219
310
  */
220
311
  readonly Stop: "stop";
221
312
  /**
222
- * Shows a warning message when the user enters alert data.
313
+ * Warns about an invalid entry and asks whether to keep it.
223
314
  */
224
315
  readonly Warning: "warning";
225
316
  /**
226
- * Shows an information message when the user enters alert data.
317
+ * Accepts an invalid entry with an informational message.
227
318
  */
228
319
  readonly Information: "information";
229
320
  };
230
321
  type AlertStyle = typeof AlertStyle[keyof typeof AlertStyle];
322
+ /**
323
+ * One item a list validation offers. See {@link IDataValidation.getListItemsAt}.
324
+ */
325
+ interface ListItem {
326
+ /** The value a pick enters. */
327
+ value: Scalar;
328
+ /** The item as shown. */
329
+ text: string;
330
+ }
231
331
  /**
232
332
  * A set of values that can be set on a IDataValidation.
233
333
  *
@@ -235,12 +335,31 @@ export declare namespace IDataValidation {
235
335
  * {@link IDataValidation}
236
336
  */
237
337
  interface Properties {
338
+ /** See {@link IDataValidation.setPromptMessage}. */
238
339
  prompt?: string;
340
+ /** See {@link IDataValidation.setPromptTitle}. */
239
341
  promptTitle?: string;
342
+ /**
343
+ * See {@link IDataValidation.setShowPromptMessage}.
344
+ *
345
+ * @defaultValue false
346
+ */
240
347
  showPromptMessage?: boolean;
348
+ /** See {@link IDataValidation.setAlertMessage}. */
241
349
  alert?: string;
350
+ /** See {@link IDataValidation.setAlertTitle}. */
242
351
  alertTitle?: string;
352
+ /**
353
+ * See {@link IDataValidation.setShowAlertMessage}.
354
+ *
355
+ * @defaultValue false
356
+ */
243
357
  showAlertMessage?: boolean;
358
+ /**
359
+ * See {@link IDataValidation.setAlertStyle}.
360
+ *
361
+ * @defaultValue `Stop`
362
+ */
244
363
  alertStyle?: IDataValidation.AlertStyle;
245
364
  /**
246
365
  * The predicate a value must satisfy to be valid.
@@ -7,7 +7,8 @@ import { IDataValidation } from './IDataValidation';
7
7
  */
8
8
  export interface IDataValidationCollection extends ICollection<IDataValidation> {
9
9
  /**
10
- * Returns items that match the filter criteria.
10
+ * Returns items that match the filter criteria, in priority order
11
+ * ({@link IDataValidation.getIndex}).
11
12
  *
12
13
  * If no filter criteria is provided, all items will be returned.
13
14
  *
@@ -18,7 +19,12 @@ export interface IDataValidationCollection extends ICollection<IDataValidation>
18
19
  * Add an `IDataValidation` to the container.
19
20
  *
20
21
  * @param address The address of the item. May name several discontiguous ranges.
21
- * @param options Additional options available when adding a table or a `boolean` that indicates if the table has headers.
22
+ * @param options The new validation's properties, and where it goes in priority order.
23
+ *
24
+ * @remarks
25
+ * A validation already covering some of the cells keeps them, and both apply there (see
26
+ * {@link IDataValidation}); Excel's dialog would replace it. To take cells away from an existing
27
+ * validation, clear them first with `ICellRange.clear(ICell.Content.DataValidations)`.
22
28
  */
23
29
  add(address: ICellRanges.Address | IDataValidation, options?: IDataValidationCollection.AddOptions): IDataValidation;
24
30
  /**
@@ -27,6 +33,8 @@ export interface IDataValidationCollection extends ICollection<IDataValidation>
27
33
  * @param template A template to use for the temporary item.
28
34
  */
29
35
  createItem(template?: IDataValidation): IDataValidation;
36
+ /** For runtime type checking. */
37
+ readonly isIDataValidationCollection: true;
30
38
  }
31
39
  /**
32
40
  * {@inheritDoc IDataValidationCollection}
@@ -1,3 +1,23 @@
1
+ /**
2
+ * The unit a date step counts — what makes one date series a different series from another.
3
+ *
4
+ * @remarks
5
+ * `Weekday` is a BUSINESS day: Saturday and Sunday are not units of it, so `Fri` plus one weekday
6
+ * is the following Monday.
7
+ *
8
+ * @see {@link IAutoFill.DateSeries}, which reports the unit a template turns out to hold.
9
+ */
10
+ export declare const DateUnit: {
11
+ /** A calendar day. */
12
+ readonly Day: "d";
13
+ /** A business day — Saturday and Sunday are skipped. */
14
+ readonly Weekday: "wd";
15
+ /** A calendar month, the day-of-month carried across it. */
16
+ readonly Month: "m";
17
+ /** A calendar year. */
18
+ readonly Year: "y";
19
+ };
20
+ export type DateUnit = typeof DateUnit[keyof typeof DateUnit];
1
21
  /**
2
22
  * Returns Date.now() rounded to a nearest time.
3
23
  *
@@ -1,5 +1,6 @@
1
1
  import { NumberFormatRef } from '../numFmt/BuiltInFormats';
2
2
  import { IRuntime } from '@sheetxl/primitives';
3
+ import { DateUnit } from './DateUtils';
3
4
  export declare const MAX_SERIAL_DATE = 2958465;
4
5
  export declare function isValidDate(d: any, jsDateOnly?: boolean): boolean;
5
6
  export declare function minutesSinceMidnight(date: Date): number;
@@ -7,12 +8,82 @@ export declare function dayDiff(d1: Date, d2: Date): number;
7
8
  export declare function monthDiff(startDate: Date, endDate: Date): number;
8
9
  export declare function yearDiff(d1: Date, d2: Date): number;
9
10
  export declare function dateUnitDiff(d1: Date, d2: Date, unit: DateUnit | string): number | undefined;
10
- export declare const DateUnit: {
11
- readonly Day: "d";
12
- readonly Month: "m";
13
- readonly Year: "y";
14
- };
15
- export type DateUnit = typeof DateUnit[keyof typeof DateUnit];
11
+ /**
12
+ * Days in a 1-based `month` — the real calendar. Excel's phantom `1900-02-29` is not modelled here;
13
+ * `serialFromCivil` carries it in serial space, which is where it matters.
14
+ */
15
+ export declare function daysInMonth(year: number, month: number): number;
16
+ /**
17
+ * The month a serial falls in, as a single ordinal, so a whole-month delta is plain subtraction.
18
+ * `NaN` for a serial outside the calendar.
19
+ */
20
+ export declare function serialMonthOrdinal(serial: number, date1904?: boolean): number;
21
+ /** The day-of-month a serial falls on, or `NaN` for a serial outside the calendar. */
22
+ export declare function serialDayOfMonth(serial: number, date1904?: boolean): number;
23
+ /** `true` when the serial falls on the last day of its own month. */
24
+ export declare function serialIsMonthEnd(serial: number, date1904?: boolean): boolean;
25
+ /**
26
+ * Step `count` whole months in SERIAL space — no `Date` is constructed. The day-of-month is kept
27
+ * where the target month is long enough and clamped where it is not (Excel's `EDATE`: Jan 31 plus
28
+ * one month is Feb 28), and because every step is measured from the same anchor serial a day
29
+ * clamped through a short month recovers afterwards (Dec 29 → Feb 28 → Mar 29).
30
+ *
31
+ * @param monthEnd Land on the target month's LAST day instead — Excel's end-of-month series, where
32
+ * Feb 28 continues Mar 31, Apr 30 rather than Mar 28, Apr 28.
33
+ *
34
+ * @remarks
35
+ * The time-of-day fraction rides along untouched.
36
+ */
37
+ export declare function addMonthsToSerial(serial: number, count: number, monthEnd?: boolean, date1904?: boolean): number;
38
+ /**
39
+ * `true` when the serial falls on a Saturday or a Sunday.
40
+ *
41
+ * @remarks
42
+ * A weekend serial has no business day of its own, so this is what a caller checks before reading
43
+ * {@link serialWeekdayOrdinal} as a position: the ordinal rounds a weekend forward to the following
44
+ * Monday, which is right for stepping and wrong for deciding whether a template is a weekday series.
45
+ */
46
+ export declare function serialIsWeekend(serial: number, date1904?: boolean): boolean;
47
+ /**
48
+ * A serial's position in the run of BUSINESS days, so a difference of two of these is a count of
49
+ * weekdays — `Fri` to the following `Mon` is `1`, not `3`.
50
+ *
51
+ * @remarks
52
+ * A weekend serial has no business day of its own and takes the following Monday's, which makes
53
+ * this monotonic but not injective: `Sat`, `Sun` and `Mon` all report the same ordinal, so a
54
+ * template of weekend dates reads as a step of zero rather than as a series.
55
+ */
56
+ export declare function serialWeekdayOrdinal(serial: number, date1904?: boolean): number;
57
+ /**
58
+ * Step `count` BUSINESS days in SERIAL space — Saturday and Sunday are skipped, and no `Date` is
59
+ * constructed. The time-of-day fraction rides along untouched.
60
+ *
61
+ * @remarks
62
+ * A weekend anchor is not a business day, so it steps off in the direction of travel first: a
63
+ * Saturday going forward is one step from Monday (Excel's `Fri + 1` and `Sat + 1` are both Monday),
64
+ * and going back is one step from Friday. A `count` of zero simply lands on the next business day,
65
+ * which is what Excel's weekday series does from a weekend.
66
+ */
67
+ export declare function addWeekdaysToSerial(serial: number, count: number, date1904?: boolean): number;
68
+ /** The number of days in `month` (0-based) of `year` — JS day `0` is the previous month's last. */
69
+ export declare function lastDayOfMonth(year: number, month: number): number;
70
+ /** `true` when `date` falls on the last day of its own month. */
71
+ export declare function isMonthEnd(date: Date): boolean;
72
+ /** A date's month as a single ordinal, so a whole-month delta is plain subtraction. */
73
+ export declare function monthOrdinal(date: Date): number;
74
+ /**
75
+ * Step `count` whole months from `date`, keeping the day-of-month where the target month is long
76
+ * enough and clamping it where it is not — Excel's `EDATE`: Jan 31 plus one month is Feb 28, NOT
77
+ * March 3. Because every step is measured from the same anchor, a day clamped through a short month
78
+ * recovers afterwards (Dec 29 → Feb 28 → Mar 29).
79
+ *
80
+ * @param monthEnd Land on the target month's LAST day instead of the anchor's day — Excel's
81
+ * end-of-month series, where Feb 28 continues Mar 31, Apr 30 rather than Mar 28, Apr 28.
82
+ *
83
+ * @remarks
84
+ * Time-of-day is carried through untouched.
85
+ */
86
+ export declare function addMonthsClamped(date: Date, count: number, monthEnd?: boolean): Date;
16
87
  export declare function addDateUnit(date: Date, count: number, unit: DateUnit | string): Date | null;
17
88
  export declare function stringToLocalDate(value: string): Date | null;
18
89
  export declare function isISODateString(value: string): boolean;
@@ -46,6 +117,19 @@ export interface ParsedDateTime {
46
117
  /**
47
118
  * Splits a serial date into its calendar and clock fields.
48
119
  *
120
+ * @remarks
121
+ * Excel resolves a serial to whole seconds by adding HALF A SECOND TO THE SERIAL and then
122
+ * truncating — not by rounding the seconds themselves. The distinction is measurable, because
123
+ * the addition happens at the serial's magnitude, where a day is ~3e-7 s wide in the last bit:
124
+ * 12:30:30.5 comes back as :30 (the half second is lost in the sum) while 23:59:59.5 comes back
125
+ * as the next day's midnight. So a serial within half a second of midnight belongs to the NEXT
126
+ * day, in every field at once — `DAY`, `MONTH`, `YEAR` and `WEEKDAY` move together with the
127
+ * clock.
128
+ *
129
+ * Not every date function reads its argument through this. `WEEKNUM`, `ISOWEEKNUM`, `DAYS`,
130
+ * `EDATE`, `EOMONTH`, `WORKDAY` and `NETWORKDAYS` TRUNCATE the same serial instead, and each
131
+ * floors before it gets here — a per-function fact, not a rule with exceptions.
132
+ *
49
133
  * @param reuseParts Avoids allocating a fresh `ParsedDateTime`:
50
134
  * - An object: the fields are written into THIS object, which is returned. The caller owns the
51
135
  * buffer's lifetime — do not hold onto a previous result across a reused call, each call
@@ -60,7 +144,7 @@ export declare function parseSerialDate(serialDate: number, date1904?: boolean,
60
144
  * Serial date from parsed date/time fields.
61
145
  *
62
146
  * Computed directly from the fields (see {@link serialFromFields}) rather than
63
- * by building a JS `Date` and converting it — that round trip was both lossy
147
+ * by building a JS `Date` and converting it — that round trip is both lossy
64
148
  * (~1e-12, catastrophic for bare times) and unable to express Excel's phantom
65
149
  * `1900-02-29`, which a `Date` normalizes away.
66
150
  */