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

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 (191) hide show
  1. package/browser/esm/{BpgskG1Er_lGQ_yS.mjs → -Jx-jNHmtIQQfLvK.mjs} +1 -1
  2. package/browser/esm/{BLoUBId2xZpXAK_H.mjs → 2WuhYrIpYmOR5H73.mjs} +15 -15
  3. package/browser/esm/{Ctjb0SsxV4K4MMqG.mjs → 2mIwPy2D2JUX-9wx.mjs} +2 -2
  4. package/browser/esm/{CkxWugaJFjDGZNZ-.mjs → B3wf5vZCsWfWsDbj.mjs} +1 -1
  5. package/browser/esm/{BjkCiv5Jz6WYKZeu.mjs → BIHrHjRGWVlJglcp.mjs} +2 -2
  6. package/browser/esm/{BtvLTTfSBdAKplVG.mjs → BTFBedJMRWGvZyCE.mjs} +1 -1
  7. package/browser/esm/{C4MqfLn9Dm-l3OIk.mjs → BdCJNawfifyPupCP.mjs} +1 -1
  8. package/browser/esm/{CV5EGEjG5_-CPpP0.mjs → Bg5Di9GLNAkbqQ1P.mjs} +3 -3
  9. package/browser/esm/{C2VbEI_XVAoseAwa.mjs → BnC4-27Igwb8oDf2.mjs} +2 -2
  10. package/browser/esm/{CQYjO777cmAznUzK.mjs → Bt8_m94tBdks209L.mjs} +1 -1
  11. package/browser/esm/{C16ycKja6zG0crV_.mjs → BudSIfXBAsTxvu-K.mjs} +17836 -15712
  12. package/browser/esm/{DvAaxH6z_tGvrRzl.mjs → C9u8FUewte5ugUjH.mjs} +686 -686
  13. package/browser/esm/{DEiPS3Dr-s4fPbVZ.mjs → CBYMTDzMf1Vh7pkw.mjs} +1 -1
  14. package/browser/esm/{Dyq_ivuHvlXLwPCl.mjs → CNdjyofiRu6CYOrr.mjs} +1106 -1102
  15. package/browser/esm/{PcHFjNzQsE54POri.mjs → CRkYR-siY2C994KV.mjs} +1 -1
  16. package/browser/esm/{C5E6zSGAALWf61n4.mjs → CTe2qfmIUEad6FJv.mjs} +2 -2
  17. package/browser/esm/{BoV6zPBnfqCBCqZ7.mjs → CUzYuYTTGsChC_kZ.mjs} +3841 -3148
  18. package/browser/esm/CdEO8CEee6lEhabA.mjs +117 -0
  19. package/browser/esm/{S2dNNx1a5ydRnARM.mjs → CfRqiPDg6RBTg1EN.mjs} +2 -2
  20. package/browser/esm/{ClbvFbFzFzXLBKNN.mjs → CndRBvVfQUJIYRRj.mjs} +50 -50
  21. package/browser/esm/{BnG31I6Oj_HEtSPS.mjs → CwOPLXU3-9ZHGyOT.mjs} +1 -1
  22. package/browser/esm/{CHU6iu_WGlm7fLET.mjs → Cxjxk0ncRKx80I-w.mjs} +1 -1
  23. package/browser/esm/D2RZh0O9neOsyLAE.mjs +281 -0
  24. package/browser/esm/{BkBhLS0l6z8sxI6D.mjs → D64dM68B1pKYFzdP.mjs} +2 -2
  25. package/browser/esm/{BVDiOXGMc5_FMGfy.mjs → D9xNz46kAfXMZzp4.mjs} +2 -2
  26. package/browser/esm/{zlLuW405RSguy4Kn.mjs → DK899HhWX1HINMC1.mjs} +53 -53
  27. package/browser/esm/{B7aUIvgUjncMMD_i.mjs → DPhGQLNGmDZwODwJ.mjs} +5 -4
  28. package/browser/esm/{gssVX_FH1XFN-twD.mjs → DVroRnhi-5IDXNgM.mjs} +1 -1
  29. package/{node/esm/CZICGK_ss0HoGHCP.mjs → browser/esm/DZiivy0NmO1Vnyzk.mjs} +2 -2
  30. package/browser/esm/{ClPfI4lODvCece29.mjs → DgrAuRD2qr2DvFeJ.mjs} +61 -61
  31. package/browser/esm/{CU3DmJ-YnVVrC1_k.mjs → DobHLF6VjHr7Xi40.mjs} +1 -1
  32. package/browser/esm/{CaB7J-xgfKO2uAkG.mjs → DwZCT7DZiiXoTweg.mjs} +2 -2
  33. package/browser/esm/{BMyDRQ716j79h_bH.mjs → DwwR3O2sEZApPSTF.mjs} +6 -6
  34. package/browser/esm/{DLLE0FZNsKxbBzRn.mjs → Tah7cnFb_HNZdLtj.mjs} +45 -45
  35. package/browser/esm/{Dlmig06rIo7cInRk.mjs → fXWUMDhZ5yMSO629.mjs} +1 -1
  36. package/browser/esm/{DWNzqw7DUKwoxjri.mjs → hCQJcmIzPDxDEv2q.mjs} +2 -2
  37. package/browser/esm/index.mjs +679 -542
  38. package/browser/esm/{BFagR2JeWs74iAG3.mjs → qO-ujUrgq6H3TQix.mjs} +1 -1
  39. package/browser/esm/w6Jea0TiclPrYZ2M.mjs +1703 -0
  40. package/browser/esm/yuhcOYw6SHQ-RCm3.mjs +114 -0
  41. package/node/esm/-TA0MneBDKdGhsib.mjs +8668 -0
  42. package/node/esm/{B21JjOLghRoDOrkx.mjs → B-HUPAcqvK0eeeCz.mjs} +1 -1
  43. package/node/esm/{DNRhGK-8Tr9xcRyc.mjs → BL2iiEoqxDEV2Xrg.mjs} +3 -3
  44. package/node/esm/{D1TKBVmoKGAXf37B.mjs → BNXLOEddJ6O9gYws.mjs} +2 -2
  45. package/node/esm/{BrCKGFRsX_ezFJ4B.mjs → BSvOluusoDM4z_dx.mjs} +15 -15
  46. package/node/esm/{BIwObuhTJYf0jpUa.mjs → BskP3b8vUoIOGLY6.mjs} +2 -2
  47. package/node/esm/{2Kihw_-5lVTEnwMa.mjs → Btw4148Ot8ifhNc1.mjs} +1 -1
  48. package/node/esm/{BqiexuA89caYnAPz.mjs → C14-R6tifRh7pc0p.mjs} +1 -1
  49. package/node/esm/{DUTskXCXref-IJnI.mjs → C99zzq8DImQXi4BQ.mjs} +47 -47
  50. package/node/esm/{D8zEN-6ZdDqDvTxM.mjs → CBuEu5Jk-LfaDy-H.mjs} +61 -61
  51. package/node/esm/{yavzZOiZW_EjG9lE.mjs → CG-qBU5BAaVz7e-P.mjs} +1 -1
  52. package/node/esm/CPI58duc0j0a-HpJ.mjs +115 -0
  53. package/node/esm/{CCN5vD410obwdz38.mjs → CRt3vXe6YmXzqk3H.mjs} +15 -14
  54. package/node/esm/{CzXT00vrQa1_gvW9.mjs → C_aL7CGS1lrNn1Ng.mjs} +1 -1
  55. package/node/esm/{CZiqiay42tFTrLI4.mjs → C_xf5Bz30VqiJjXn.mjs} +1 -1
  56. package/node/esm/{BIRq1kT7lLRzns9t.mjs → CiIymQN6aJCul62g.mjs} +9 -9
  57. package/node/esm/{CNCNJNg890KdgkWh.mjs → Ci_zLYmCD7e-C79O.mjs} +1 -1
  58. package/{browser/esm/D5np__Jb1euAyaLw.mjs → node/esm/CkRYLed8Mmn3giNg.mjs} +2 -2
  59. package/node/esm/D3ptRKzASqBut1DE.mjs +117 -0
  60. package/node/esm/{cGwrLA1RCE-WhJ7w.mjs → D4ROK9UwDpS6jO3Z.mjs} +1 -1
  61. package/node/esm/{mFiBSM7XgBHV9AY7.mjs → D8hO07ToAibIuniw.mjs} +1535 -1531
  62. package/node/esm/{CDHdgJXH2vS71WMc.mjs → DUTmDHbFbhLDT4F3.mjs} +1 -1
  63. package/node/esm/{CGp6VZL-gZa9Uezx.mjs → DV5CU37aEbFbWFL0.mjs} +1 -1
  64. package/node/esm/{De2IONBxQhz-Qbyh.mjs → DdoiuKg9BKubtF1V.mjs} +1 -1
  65. package/node/esm/{Db0v7zXNnyjBIjjI.mjs → DggQ23jKMpwhENfa.mjs} +2 -2
  66. package/node/esm/{CwePQwTILHHjGDkZ.mjs → DhS6yWjrrSNIJMsn.mjs} +204 -204
  67. package/node/esm/{D_t5AUxSm7_icjzq.mjs → DhTya_mhmN53vskv.mjs} +1 -1
  68. package/node/esm/{DOU54VsOjG-m-NyQ.mjs → Dn1M7YWi25DeeYUb.mjs} +1 -1
  69. package/node/esm/{DkwIPzKc3UwdUIfM.mjs → DrCf6ITcBhVOFpRj.mjs} +6 -6
  70. package/node/esm/{D2KBymQJd1XhpeQD.mjs → DxazKtROyaI51dWl.mjs} +1 -1
  71. package/node/esm/{D6e2z7eZpxOJXHc7.mjs → Q_S1g46ZOTrdhTae.mjs} +1 -1
  72. package/node/esm/{OVfaSb506tNSIvbv.mjs → Vocy-I9dKzZMr0Ct.mjs} +19038 -16822
  73. package/node/esm/ZXPFcsT2zrALCZux.mjs +289 -0
  74. package/node/esm/{857CIBgQgGpnqrXk.mjs → eimUGjiIP-b8HiM6.mjs} +55 -55
  75. package/node/esm/{Bbf1Pm9Gk7YpLTvg.mjs → icn2nX5Z8e_3mNAv.mjs} +1 -1
  76. package/node/esm/index.mjs +740 -603
  77. package/node/esm/{Ct3h15sCus4Tgt6M.mjs → lGJ42sHqg5if2bba.mjs} +624 -616
  78. package/node/esm/{CdJHUJSBRHZoryPe.mjs → pYtP7wPyS96NQyXS.mjs} +59 -59
  79. package/package.json +6 -6
  80. package/resources/locales/de/model.msg.json +8 -2
  81. package/resources/locales/en/model.msg.json +9 -2
  82. package/types/scripting-api.json +10619 -10446
  83. package/types/scripting-enums.json +20 -1
  84. package/types/scripting.d.ts +1233 -296
  85. package/types/src/{sheet → anomalies}/_Anomalies.d.ts +3 -3
  86. package/types/src/anomalies/_FocusTable.d.ts +11 -0
  87. package/types/src/{sheet/_AnomalyFormulaChecks.d.ts → anomalies/_FormulaChecks.d.ts} +10 -2
  88. package/types/src/{sheet/_AnomalyLabelChecks.d.ts → anomalies/_LabelChecks.d.ts} +1 -1
  89. package/types/src/anomalies/_LiteralChecks.d.ts +35 -0
  90. package/types/src/anomalies/_SeriesChecks.d.ts +13 -0
  91. package/types/src/calculation/Calculation.d.ts +47 -9
  92. package/types/src/calculation/ExternalBookBindings.d.ts +2 -3
  93. package/types/src/calculation/ICalculation.d.ts +96 -9
  94. package/types/src/calculation/NamedFormulaCollection.d.ts +104 -8
  95. package/types/src/calculation/_CloneBoundary.d.ts +1 -1
  96. package/types/src/calculation/compiler/ASTTypes.d.ts +6 -2
  97. package/types/src/calculation/compiler/Types.d.ts +8 -0
  98. package/types/src/calculation/engine/CalcBackend.d.ts +104 -6
  99. package/types/src/calculation/executor/CalcExecutor.d.ts +73 -22
  100. package/types/src/calculation/executor/CalcExecutorUtils.d.ts +17 -1
  101. package/types/src/calculation/executor/_WhatIf.d.ts +50 -0
  102. package/types/src/calculation/formula/FormulaBlock.d.ts +4 -3
  103. package/types/src/calculation/formula/IFormulaBlock.d.ts +5 -0
  104. package/types/src/calculation/functions/_DataTableFunction.d.ts +14 -0
  105. package/types/src/calculation/grid/CalcGrid.d.ts +4 -6
  106. package/types/src/calculation/grid/CalcGridBackend.d.ts +5 -27
  107. package/types/src/calculation/grid/CalcGridProxy.d.ts +0 -2
  108. package/types/src/calculation/grid/CalcGridUtils.d.ts +4 -2
  109. package/types/src/calculation/grid/ICalcGrid.d.ts +16 -12
  110. package/types/src/calculation/grid/_CalcRequest.d.ts +17 -5
  111. package/types/src/calculation/spatial/FormulaSpatialValue.d.ts +2 -0
  112. package/types/src/calculation/spatial/SpillEntry.d.ts +16 -2
  113. package/types/src/calculation/state/CalcNode.d.ts +0 -1
  114. package/types/src/calculation/state/CalcScope.d.ts +29 -0
  115. package/types/src/calculation/state/CalcState.d.ts +26 -4
  116. package/types/src/calculation/state/CalculationContext.d.ts +28 -1
  117. package/types/src/calculation/state/DeferredCalls.d.ts +260 -0
  118. package/types/src/calculation/state/IContextContainer.d.ts +20 -0
  119. package/types/src/calculation/state/_PendingOverlayGrid.d.ts +6 -0
  120. package/types/src/calculation/state/_WhatIfLayer.d.ts +91 -0
  121. package/types/src/cell/ICell.d.ts +53 -34
  122. package/types/src/cellControl/CellControl.d.ts +67 -0
  123. package/types/src/cellControl/CellControlCollection.d.ts +29 -0
  124. package/types/src/cellControl/CellControlRegistry.d.ts +47 -0
  125. package/types/src/cellControl/ICellControl.d.ts +99 -0
  126. package/types/src/cellControl/ICellControlCollection.d.ts +67 -0
  127. package/types/src/cellControl/index.d.ts +4 -0
  128. package/types/src/cellRange/ICellRange.d.ts +207 -59
  129. package/types/src/cellRange/ICellRanges.d.ts +4 -3
  130. package/types/src/chart/layout/ChartLayout.d.ts +5 -1
  131. package/types/src/chart/resolve/_Resolve.d.ts +10 -0
  132. package/types/src/chart/resolve/_ResolvedChart.d.ts +5 -2
  133. package/types/src/collections/ISparseGrid.d.ts +11 -2
  134. package/types/src/collections/MixedTypedArrayList.d.ts +8 -2
  135. package/types/src/collections/SparseGrid.d.ts +3 -8
  136. package/types/src/condition/AnchoredConditional.d.ts +2 -2
  137. package/types/src/externalBook/IExternalBook.d.ts +3 -4
  138. package/types/src/fetch/Fetcher.d.ts +15 -0
  139. package/types/src/fetch/IFetcher.d.ts +47 -0
  140. package/types/src/fetch/_WorkbookFetch.d.ts +43 -0
  141. package/types/src/fetch/index.d.ts +3 -0
  142. package/types/src/fill/PaintUtils.d.ts +3 -1
  143. package/types/src/hyperlink/IHyperlink.d.ts +10 -0
  144. package/types/src/hyperlink/_Hyperlink.d.ts +4 -1
  145. package/types/src/index.d.ts +2 -1
  146. package/types/src/named/INamedCollection.d.ts +36 -0
  147. package/types/src/named/NamedCollection.d.ts +18 -0
  148. package/types/src/primitives/AsyncValue.d.ts +58 -0
  149. package/types/src/resource/IResource.d.ts +9 -0
  150. package/types/src/resource/IResourceCollection.d.ts +4 -0
  151. package/types/src/resource/Resource.d.ts +2 -0
  152. package/types/src/resource/_AddResource.d.ts +13 -0
  153. package/types/src/richData/CellImage.d.ts +95 -0
  154. package/types/src/richData/Hyperlink.d.ts +49 -0
  155. package/types/src/richData/IRichDataCollection.d.ts +76 -0
  156. package/types/src/richData/IRichDataKind.d.ts +55 -11
  157. package/types/src/richData/RichArray.d.ts +42 -0
  158. package/types/src/richData/RichDataCollection.d.ts +23 -0
  159. package/types/src/richData/RichDataRegistry.d.ts +46 -14
  160. package/types/src/richData/RichDataValues.d.ts +20 -0
  161. package/types/src/richData/RichRecord.d.ts +68 -0
  162. package/types/src/richData/RichText.d.ts +5 -5
  163. package/types/src/richData/index.d.ts +6 -0
  164. package/types/src/scripting/FunctionArguments.d.ts +17 -1
  165. package/types/src/scripting/FunctionCollection.d.ts +8 -0
  166. package/types/src/scripting/Scripts.d.ts +10 -0
  167. package/types/src/scripting/TypedFunction.d.ts +2 -0
  168. package/types/src/sheet/ICellContainerOptions.d.ts +6 -0
  169. package/types/src/sheet/IWorksheet.d.ts +24 -17
  170. package/types/src/sheet/SheetCell.d.ts +17 -1
  171. package/types/src/sheet/SheetRange.d.ts +8 -2
  172. package/types/src/sheet/SheetRanges.d.ts +2 -2
  173. package/types/src/sheet/Worksheet.d.ts +110 -56
  174. package/types/src/sheet/_ListenerAnchor.d.ts +7 -1
  175. package/types/src/sheet/_ScalarListFactory.d.ts +54 -6
  176. package/types/src/sheet/_SheetMutations.d.ts +4 -1
  177. package/types/src/sheet/_SheetStateTypes.d.ts +23 -11
  178. package/types/src/workbook/IWorkbook.d.ts +40 -1
  179. package/types/src/workbook/Workbook.d.ts +25 -3
  180. package/types/src/workbook/WorkbookRanges.d.ts +1 -1
  181. package/browser/esm/BGOFfpxr2jPIdqmV.mjs +0 -40
  182. package/browser/esm/f1IoRb7tEb0QmCSt.mjs +0 -110
  183. package/browser/esm/nvU0ClAbf0g94YBK.mjs +0 -1695
  184. package/node/esm/B084DssTcdBheTp_.mjs +0 -7966
  185. package/node/esm/Df1bL6VFvrqIdSLB.mjs +0 -40
  186. package/node/esm/DrTZbfemSLq2mseG.mjs +0 -111
  187. package/types/src/dataTable/DataTable.d.ts +0 -67
  188. package/types/src/dataTable/DataTableCollection.d.ts +0 -19
  189. package/types/src/dataTable/IDataTable.d.ts +0 -99
  190. package/types/src/dataTable/IDataTableCollection.d.ts +0 -18
  191. package/types/src/dataTable/index.d.ts +0 -6
@@ -72,14 +72,15 @@ export interface ICellRanges {
72
72
  * This is Excel's `Ctrl+Enter` fill: the same scalar is written to all selected cells — across every
73
73
  * discontiguous range — as a single {@link ICellRanges.doBatch} operation (one undo step). A formula
74
74
  * string (e.g. `"=A1+1"`) is coerced and its relative references adjust per cell, exactly as
75
- * {@link ICellRange.setValue} does within one range.
75
+ * {@link ICellRange.setValue} does within one range. It takes what that does: a `Date`, or a rich
76
+ * value's JSON (`{ type, data }`), which each cell makes into its own value.
76
77
  *
77
78
  * Only the scalar-broadcast form exists (no `setValues`): a 2D shape has no coherent meaning spread
78
79
  * across discontiguous ranges of differing sizes.
79
80
  * @see
80
81
  * {@link ICellRange.setValue}
81
82
  */
82
- setValue(value: ICellRange.ScalarUpdate, options?: ICellRange.SetValuesOptions): this;
83
+ setValue(value: ICellRange.InteropScalarUpdate, options?: ICellRange.SetValuesOptions): this;
83
84
  /**
84
85
  * {@inheritDoc ICellRange.merge}
85
86
  */
@@ -335,7 +336,7 @@ export interface ICellRanges {
335
336
  /**
336
337
  * {@inheritDoc ICellRange.addListener}
337
338
  */
338
- addListener(listener: ICellRange.Listener, options?: ICellRange.ListenerOptions): IListener.Remove;
339
+ addListener(listener: ICellRange.Listener<ICellRanges>, options?: ICellRange.ListenerOptions): IListener.Remove;
339
340
  /**
340
341
  * {@link ICellRange.addWatch} across every area, as ONE expression authored at a shared origin.
341
342
  *
@@ -24,7 +24,11 @@ export interface ChartLayout {
24
24
  width: number;
25
25
  height: number;
26
26
  chartArea: {
27
- fill: IFill.JSON | null;
27
+ /**
28
+ * `undefined` where the chart states no fill: the chart area is the background of where it is
29
+ * drawn (Excel draws it in the theme's background color).
30
+ */
31
+ fill: IFill.JSON | null | undefined;
28
32
  border: IStroke.JSON | null;
29
33
  /** The radius of the chart area's corners, measured along the border's path; 0 for square corners. */
30
34
  cornerRadius: number;
@@ -45,6 +45,16 @@ export declare const formatValue: (formatCode: string, value: number, date1904:
45
45
  * scatter's point, best fit on a pie. A bubble's and a radar's are believed.
46
46
  */
47
47
  export declare const defaultLabelPosition: (group: Pick<ChartModel.Group, "type" | "grouping">) => ResolvedChart.LabelPosition;
48
+ /**
49
+ * The label positions Excel offers a classic group's type, `null` for a 2016 or custom type
50
+ * (measured 2026-10-24 through `DataLabels.Position`): every bar position on a clustered bar, none
51
+ * outside a stacked one, around the point on a line, stock, scatter or bubble, the end positions and
52
+ * best fit on a pie; none on an area, a doughnut, a radar, a surface, or a 3-D bar, line or area.
53
+ * Excel refuses a file that states any other `dLblPos` for the type.
54
+ */
55
+ export declare const labelPositionsOf: (group: Pick<ChartModel.Group, "type" | "grouping" | "is3D">) => readonly ResolvedChart.LabelPosition[] | null;
56
+ /** Where a group's labels sit: the stated position where the type offers it, else the type's default. */
57
+ export declare const labelPositionOf: (group: Pick<ChartModel.Group, "type" | "grouping" | "is3D">, stated: ResolvedChart.LabelPosition | undefined) => ResolvedChart.LabelPosition;
48
58
  /** A series' automatic color, `#RRGGBB`: what it is drawn in where it states no color (the legacy style's, S3). */
49
59
  export declare function automaticSeriesColor(model: ChartModel.ChartSpace, theme: ChartTheme, idx: number): string;
50
60
  export declare function resolveChart(model: ChartModel.ChartSpace, theme: ChartTheme, data?: ChartDataReader | null): ResolvedChart;
@@ -20,9 +20,12 @@ export interface ResolvedChart {
20
20
  chartEx?: boolean;
21
21
  /** The chart's own text font: what text with no font of its own is drawn in. */
22
22
  font: ResolvedChart.Font;
23
- /** `cornerRadius` in points: 0 for square corners. */
23
+ /**
24
+ * `fill` is `undefined` where the chart states none: it is drawn in the background of where it is
25
+ * drawn. `cornerRadius` in points: 0 for square corners.
26
+ */
24
27
  chartArea: {
25
- fill: IFill.JSON | null;
28
+ fill: IFill.JSON | null | undefined;
26
29
  border: ResolvedChart.Stroke | null;
27
30
  cornerRadius: number;
28
31
  };
@@ -43,8 +43,8 @@ export declare namespace ISparseGrid {
43
43
  */
44
44
  type RunIteratorResult<T = any> = IteratorResult<ISparseGrid.RunEntry<T>>;
45
45
  /**
46
- * Run Iterator extends {@link IReadableList.IteratorOptions} but removes support for
47
- * processSkip and downcasts reuseResult.
46
+ * Options for {@link ISparseGrid.getRuns}. Runs always follow the grid's own axis, in order;
47
+ * there is no reverse or skip.
48
48
  */
49
49
  interface RunIteratorOptions {
50
50
  /**
@@ -65,6 +65,15 @@ export declare namespace ISparseGrid {
65
65
  * This is used as a performance optimization for iterators that are reading gaps. (fillEmpty)
66
66
  */
67
67
  overflowRun?: boolean;
68
+ /**
69
+ * Returns the same iterator result from every `next`, with its entry rewritten.
70
+ *
71
+ * `true` reuses one result per iterator; an object reuses that object. This avoids an
72
+ * allocation per run, but a result must be read before the next call to `next`.
73
+ *
74
+ * @defaultValue false
75
+ */
76
+ reuseResult?: boolean | ISparseGrid.RunIteratorResult<any>;
68
77
  }
69
78
  }
70
79
  //# sourceMappingURL=ISparseGrid.d.ts.map
@@ -2,8 +2,8 @@ import { IList, IListLike } from './IList';
2
2
  /**
3
3
  * An immutable run of mixed scalar values in ONE `ArrayBuffer` or `SharedArrayBuffer`.
4
4
  *
5
- * Numbers, booleans and blanks are stored natively; strings and errors as `int32` ids that a
6
- * {@link MixedTypedArrayList.Codec} resolves. The buffer is the whole list: another thread that
5
+ * Numbers, booleans and blanks are stored natively; strings, errors and rich values as `int32`
6
+ * ids that a {@link MixedTypedArrayList.Codec} resolves. The buffer is the whole list: another thread that
7
7
  * receives its {@link MixedTypedArrayList.Handle} (and has the same codec) reads it without a copy.
8
8
  *
9
9
  * @remarks
@@ -150,6 +150,12 @@ export declare namespace MixedTypedArrayList {
150
150
  encodeError(value: T): number;
151
151
  /** The error for a code. */
152
152
  decodeError(code: number): T;
153
+ /** Whether `value` is a rich value {@link encodeRich} stores. Omitted, none is. */
154
+ isRich?(value: object): boolean;
155
+ /** The id of a rich value. */
156
+ encodeRich?(value: T): number;
157
+ /** The rich value an id names. */
158
+ decodeRich?(id: number): T;
153
159
  }
154
160
  /**
155
161
  * What rebuilds a list over its buffer. Passes through `structuredClone` and `postMessage`.
@@ -1,4 +1,4 @@
1
- import { CellCoords, Direction, RangeAxis, RangeCoords } from '@sheetxl/utils';
1
+ import { Direction, RangeAxis, CellCoords, RangeCoords } from '@sheetxl/utils';
2
2
  import { Tuple } from './Tuple';
3
3
  import { IReadableList } from './IReadableList';
4
4
  import { IGrid } from './IGrid';
@@ -20,13 +20,7 @@ export declare class SparseGrid<T = any> implements ISparseGrid<T> {
20
20
  private _isShared;
21
21
  private _createRun;
22
22
  constructor(options?: SparseGrid.ConstructorOptions);
23
- /**
24
- * Returns an IterableIterator over all the runs in the sparse grid.
25
- * Each run is a contiguous list of values in the grid.
26
- *
27
- * @returns An iterator that yields [majorIndex, minorIndex, IReadableList] entries
28
- */
29
- /** {@inheritDoc ISparseGrid.getMaxCoords} */
23
+ /** {@inheritDoc ISparseGrid.getRuns} */
30
24
  getRuns(options?: ISparseGrid.RunIteratorOptions): ISparseGrid.RunIterableIterator<T>;
31
25
  /** {@inheritDoc IGrid.getAxis} */
32
26
  getAxis(): RangeAxis;
@@ -36,6 +30,7 @@ export declare class SparseGrid<T = any> implements ISparseGrid<T> {
36
30
  values(options?: IGrid.IteratorOptions): IGrid.ValueIterator;
37
31
  /** {@inheritDoc IGrid.keys} */
38
32
  keys(options?: IGrid.IteratorOptions): IGrid.KeyIterator;
33
+ private _entriesPrivateResult;
39
34
  private _updateMajorSpan;
40
35
  /** {@inheritDoc IGrid.setValues} */
41
36
  setValues(values: Tuple.GridTuple<T>): this;
@@ -16,7 +16,7 @@ import * as _ConditionUtils from '../condition/_ConditionUtils';
16
16
  * Implementation of {@link IDataValidation}.
17
17
  */
18
18
  export declare abstract class AnchoredConditional<STATE extends AnchoredConditional.State, EVENTS extends ICondition.Events = ICondition.Events, JSON = any> extends AbstractAnchored<STATE, EVENTS> implements IAnchored, ITransaction.ITransactional, IListener.ISource<IAnchored> {
19
- protected _rangeListener: ICellRange.Listener | null;
19
+ protected _rangeListener: ICellRange.Listener<ICellRanges> | null;
20
20
  protected _getValueGrid: () => ISparseGrid<Scalar>;
21
21
  /**
22
22
  * One registered watch per formula the condition asked for, keyed by the formula: its remove, and
@@ -86,7 +86,7 @@ export declare abstract class AnchoredConditional<STATE extends AnchoredConditio
86
86
  * cluster: one calc pass notifies each rule it intersects, and a burst of deliveries would
87
87
  * otherwise start a burst of evaluations for the newest one to win. Coalescing on a microtask
88
88
  * rather than a commit hook is deliberate: the calc-results path notifies AFTER its transaction
89
- * commits (`trigger: 'calc'`), so a commit hook never sees the most frequent trigger.
89
+ * commits (a `'data'` event with no commit), so a commit hook never sees the most frequent trigger.
90
90
  *
91
91
  * Two same-tick marks widen to the whole rule rather than accumulating a range list — the
92
92
  * subclasses evaluate per whole range anyway, and a rule's ranges are small.
@@ -1,6 +1,5 @@
1
- import { IRange } from '@sheetxl/primitives';
1
+ import { IRange, Scalar } from '@sheetxl/primitives';
2
2
  import { Tuple } from '../collections';
3
- import { ICell } from '../cell';
4
3
  import { ITransaction } from '../transaction';
5
4
  /**
6
5
  * A cached snapshot of another workbook, referenced from a formula as `[n]Sheet1!$A$1`.
@@ -226,11 +225,11 @@ export declare namespace IExternalBook {
226
225
  /** `<sheetData refreshError="1">` — Excel could not refresh this sheet's cache last time it tried. */
227
226
  refreshError?: boolean;
228
227
  /**
229
- * Sparse cell values — the same encoding `IWorksheet.JSON.data` uses (`ICell.JSON` is already just
228
+ * Sparse cell values — the same encoding `IWorksheet.JSON.data` uses (`Scalar.JSON` is already just
230
229
  * the value+type pair; style/formula live in sibling fields there, none of which apply to a
231
230
  * values-only cache — design doc §2.5).
232
231
  */
233
- data: Tuple.GridTuple<ICell.JSON>;
232
+ data: Tuple.GridTuple<Scalar.JSON>;
234
233
  }
235
234
  interface JSON {
236
235
  /**
@@ -0,0 +1,15 @@
1
+ import { IFetcher } from './IFetcher';
2
+ /**
3
+ * The default {@link IFetcher}: `http:` and `https:` through the global `fetch`, and whatever
4
+ * else is registered.
5
+ */
6
+ export declare class Fetcher implements IFetcher {
7
+ private readonly _handlers;
8
+ /** {@inheritDoc IFetcher.fetch} */
9
+ fetch(input: string, init?: RequestInit): Promise<Response>;
10
+ /** {@inheritDoc IFetcher.register} */
11
+ register(scheme: string, handler: IFetcher.Handler): () => void;
12
+ /** {@inheritDoc IFetcher.isIFetcher} */
13
+ get isIFetcher(): true;
14
+ }
15
+ //# sourceMappingURL=Fetcher.d.ts.map
@@ -0,0 +1,47 @@
1
+ /**
2
+ * How a workbook reaches what lives outside it: the picture an `IMAGE` names, a web service's
3
+ * answer. A handler per URL scheme; a host registers its own to add authentication, or to serve a
4
+ * scheme of its own.
5
+ *
6
+ * @remarks
7
+ * Each workbook has one, given as `IWorkbook.ConstructorOptions.fetcher`, or a default that
8
+ * answers `http:` and `https:` with the global `fetch`.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const fetcher = new Fetcher();
13
+ * fetcher.register('https', (url, init) => fetch(url, {
14
+ * ...init,
15
+ * headers: { ...init?.headers, Authorization: `Bearer ${token}` }
16
+ * }));
17
+ * const workbook = new Workbook({ fetcher });
18
+ * ```
19
+ */
20
+ export interface IFetcher {
21
+ /**
22
+ * Fetches `input` with the handler registered for its scheme. A URL without a scheme goes to
23
+ * the `https` handler.
24
+ *
25
+ * @returns The response; rejects with a `TypeError` when no handler serves the scheme, as
26
+ * `fetch` does for a URL it cannot reach.
27
+ */
28
+ fetch(input: string, init?: RequestInit): Promise<Response>;
29
+ /**
30
+ * Serves a URL scheme with `handler`, replacing the handler it had.
31
+ *
32
+ * @param scheme The scheme, with or without its colon: `'https'`, `'resource:'`.
33
+ * @returns A function that removes the registration.
34
+ */
35
+ register(scheme: string, handler: IFetcher.Handler): () => void;
36
+ /**
37
+ * For runtime type checking.
38
+ */
39
+ readonly isIFetcher: true;
40
+ }
41
+ export declare namespace IFetcher {
42
+ /**
43
+ * Answers a fetch for one scheme, with the signature of the standard `fetch`.
44
+ */
45
+ type Handler = (url: string, init?: RequestInit) => Promise<Response>;
46
+ }
47
+ //# sourceMappingURL=IFetcher.d.ts.map
@@ -0,0 +1,43 @@
1
+ import { IResource } from '../resource/IResource';
2
+ import { IResourceCollection } from '../resource/IResourceCollection';
3
+ import { IFetcher } from './IFetcher';
4
+ /**
5
+ * A workbook's fetch: its {@link IFetcher}, in front of the workbook's resources. A resource that
6
+ * says where it was fetched from is the workbook's copy of that URL, and a fetch of the URL answers
7
+ * from it without a request. Any other successful answer that is not a picture is cached while the
8
+ * workbook is open and never saved. Plain GETs of one URL in flight together share one request. A
9
+ * response whose bytes are a picture says what they are, whatever the server called them.
10
+ *
11
+ * It saves nothing itself: what holds a picture adds it as a resource (`IMAGE` through
12
+ * `IBatchContext.addResource`), and the workbook saves a resource while a value holds it.
13
+ *
14
+ * @internal
15
+ */
16
+ export declare class WorkbookFetch {
17
+ private readonly _resources;
18
+ private readonly _fetcher;
19
+ private readonly _kept;
20
+ /** Answers that are not pictures, by URL: a cache for the session, not saved. */
21
+ private readonly _cached;
22
+ private readonly _inFlight;
23
+ constructor(resources: IResourceCollection, fetcher: IFetcher);
24
+ /** The fetcher behind this: what the host registered. */
25
+ getFetcher(): IFetcher;
26
+ /** {@inheritDoc IWorkbook.fetch} */
27
+ fetch(input: string, init?: RequestInit): Promise<Response>;
28
+ /**
29
+ * Keeps every resource that says where it was fetched from as that URL's picture: what a file
30
+ * carried. Called once the workbook's resources are loaded.
31
+ */
32
+ adopt(resources: readonly IResource[]): void;
33
+ /**
34
+ * Keeps `resource` as the bytes of `uri`. A fetch of `uri` answers from it without asking the
35
+ * fetcher.
36
+ */
37
+ keep(uri: string, resource: IResource): void;
38
+ /** A resource added under `uri` since the last load, kept now that it is asked for. */
39
+ private _findHeld;
40
+ private _fromKept;
41
+ private _request;
42
+ }
43
+ //# sourceMappingURL=_WorkbookFetch.d.ts.map
@@ -0,0 +1,3 @@
1
+ export * from './IFetcher';
2
+ export * from './Fetcher';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -8,8 +8,10 @@ export type ColorToCSS = (color: string) => string | null;
8
8
  /**
9
9
  * A color as concrete CSS: `#RRGGBB`, or `rgba(r,g,b,a)` when it is not opaque. Never a theme
10
10
  * reference, a CSS variable or `light-dark()`.
11
+ *
12
+ * @param darkMode The color as a dark grid draws it (`IColor.toRGBA(true)`).
11
13
  */
12
- export declare function toConcreteCSS(color: IColor): string;
14
+ export declare function toConcreteCSS(color: IColor, darkMode?: boolean): string;
13
15
  /**
14
16
  * A fill with each of its colors drawn through `css`: a solid fill's color, a gradient's stops, a
15
17
  * pattern's foreground and background. What it does not color (an image, the gradient's geometry,
@@ -57,8 +57,18 @@ export interface IHyperlink {
57
57
  getTarget(): string;
58
58
  /**
59
59
  * Removes the link from the cell it is attached to. The cell's text stays.
60
+ *
61
+ * @throws When the link is read-only ({@link isReadOnly}).
60
62
  */
61
63
  delete(options?: ITransaction.OperationOptions): void;
64
+ /**
65
+ * Whether the link can only be followed: it is not edited or removed as a link.
66
+ *
67
+ * @remarks
68
+ * A link that is the cell's value (a `HYPERLINK()` result) is read-only; it changes with its
69
+ * formula.
70
+ */
71
+ isReadOnly(): boolean;
62
72
  /**
63
73
  * For runtime type checking.
64
74
  */
@@ -12,7 +12,10 @@ export declare class Hyperlink implements IHyperlink {
12
12
  protected _p: IHyperlink.Properties;
13
13
  protected _r: (address: string, options: ITypes.SelectOptions | null, target: string, features?: string) => Promise<boolean>;
14
14
  protected _d: ((options?: ITransaction.OperationOptions) => void) | undefined;
15
- constructor(textToDisplay: () => string, resolver: (address: string, options: ITypes.SelectOptions | null, target: string, features?: string) => Promise<boolean>, json: IHyperlink.JSON, remover?: (options?: ITransaction.OperationOptions) => void);
15
+ protected _readOnly: boolean;
16
+ constructor(textToDisplay: () => string, resolver: (address: string, options: ITypes.SelectOptions | null, target: string, features?: string) => Promise<boolean>, json: IHyperlink.JSON, remover?: (options?: ITransaction.OperationOptions) => void, readOnly?: boolean);
17
+ /** {@inheritDoc IHyperlink.isReadOnly} */
18
+ isReadOnly(): boolean;
16
19
  /** {@inheritDoc IHyperlink.delete} */
17
20
  delete(options?: ITransaction.OperationOptions): void;
18
21
  /** {@inheritDoc IHyperlink.open} */
@@ -28,12 +28,12 @@ export * from './hyperlink';
28
28
  export * from './numFmt';
29
29
  export * from './style';
30
30
  export * from './resource';
31
+ export * from './fetch';
31
32
  export * from './string';
32
33
  export * from './richData';
33
34
  export * from './anchored';
34
35
  export * from './chart';
35
36
  export * from './pivot';
36
- export * from './dataTable';
37
37
  export * from './picture';
38
38
  export * from './shape';
39
39
  export * from './group';
@@ -51,6 +51,7 @@ export * from './externalBook';
51
51
  export * from './dataValidation';
52
52
  export * from './conditionalFormat';
53
53
  export * from './protectedRange';
54
+ export * from './cellControl';
54
55
  export * from './slicer';
55
56
  export * from './table';
56
57
  export { Table } from './table/Table';
@@ -78,6 +78,25 @@ export interface INamedCollection extends ICollection<INamed> {
78
78
  * take the first.
79
79
  */
80
80
  getByRanges(ranges: ICellRanges.Address, options?: INamedCollection.GetByRangesOptions): string[];
81
+ /**
82
+ * Deletes the defined names nothing reads, as one operation.
83
+ *
84
+ * @param options `hiddenOnly` limits it to names flagged hidden; `dryRun` counts without deleting.
85
+ * @returns How many names were deleted, or with `dryRun`, would be.
86
+ * @throws `Error` if the names are read-only (a protected workbook structure) and this is not a dry run.
87
+ *
88
+ * @remarks
89
+ * A name is read when a cell formula, a conditional format, a data validation, a chart or another
90
+ * name refers to it — the readers `ICalculation.INamedFormula.getDependents` reports. A name
91
+ * that a kept name's definition mentions is kept too, whether or not anything reads that one.
92
+ * Only defined names are considered; a table is named by the table it belongs to. Excel's built-in
93
+ * names (`_xlnm.Print_Area`, `_xlnm.Print_Titles`, `_xlnm._FilterDatabase`) are read by the sheet
94
+ * itself, not by formulas, and are never removed.
95
+ *
96
+ * One operation, so one undo puts every name back. Asked of a sheet's collection
97
+ * (`IWorksheet.getNames()`), only the names scoped to that sheet are considered.
98
+ */
99
+ removeUnused(options?: INamedCollection.RemoveUnusedOptions): Promise<number>;
81
100
  /**
82
101
  * Lookup a named range with a given name.
83
102
  *
@@ -216,6 +235,23 @@ export declare namespace INamedCollection {
216
235
  */
217
236
  includeHidden?: boolean;
218
237
  }
238
+ /**
239
+ * Options for {@link INamedCollection.removeUnused}.
240
+ */
241
+ interface RemoveUnusedOptions {
242
+ /**
243
+ * Only names flagged hidden — the ones a user cannot see to delete.
244
+ *
245
+ * @defaultValue false
246
+ */
247
+ hiddenOnly?: boolean;
248
+ /**
249
+ * Count the names that would be deleted, and delete none.
250
+ *
251
+ * @defaultValue false
252
+ */
253
+ dryRun?: boolean;
254
+ }
219
255
  /**
220
256
  * Options for {@link INamedCollection.getByRanges}.
221
257
  *
@@ -143,6 +143,14 @@ export declare class NamedCollection extends AbstractCollection<INamed, INamedCo
143
143
  * {@link _scopedTo}.
144
144
  */
145
145
  addFormula(name: string, expression: string, replaceExisting?: boolean): INamed;
146
+ /** {@inheritDoc INamedCollection.removeUnused} */
147
+ removeUnused(options?: INamedCollection.RemoveUnusedOptions): Promise<number>;
148
+ /**
149
+ * {@link removeUnused}, limited to one scope — see {@link _scopedTo}.
150
+ *
151
+ * @param scope The sheet whose names are considered; `undefined` for every scope.
152
+ */
153
+ _removeUnused(options: INamedCollection.RemoveUnusedOptions | undefined, scope: string | undefined): Promise<number>;
146
154
  /** {@link addFormula}, against an explicit `scope` — see {@link _scopedTo}. */
147
155
  _addFormula(name: string, expression: string, replaceExisting?: boolean, scope?: string | null): INamed;
148
156
  /** {@inheritDoc ITransaction.ITransactional.beginCommit} */
@@ -249,6 +257,16 @@ export declare namespace NamedCollection {
249
257
  * nothing to prepare and leaves it undefined.
250
258
  */
251
259
  prepareRanges?(items: readonly INamed[]): void;
260
+ /**
261
+ * Backs {@link INamedCollection.removeUnused} for the source that owns defined names.
262
+ *
263
+ * @remarks
264
+ * `scope`, when given, is the sheet whose own names are considered (a sheet's collection);
265
+ * `undefined` considers every scope.
266
+ */
267
+ removeUnused?(options: INamedCollection.RemoveUnusedOptions & {
268
+ scope?: string;
269
+ }): Promise<number>;
252
270
  }
253
271
  /**
254
272
  * What {@link Source.add} needs to define a name.
@@ -0,0 +1,58 @@
1
+ import { IRange, Scalar } from '@sheetxl/primitives';
2
+ /**
3
+ * Whether any holder has been made in this process: what gates the value layer's reads (a range,
4
+ * the stats walks), which cannot ask a backend. Until the first `defer`, they pay nothing.
5
+ */
6
+ export declare const holdersMade: () => boolean;
7
+ /**
8
+ * How many times a call's latest has moved in this process. A settle writes nothing into a grid,
9
+ * so a cache keyed on a run that holds holders is stamped with this and stands only while it holds.
10
+ */
11
+ export declare const settleCount: () => number;
12
+ /** Records that a call's latest moved. */
13
+ export declare const noteSettle: () => void;
14
+ /**
15
+ * What a cell holds when its formula's evaluation deferred (DESIGN-ASYNC §4.4): the node's
16
+ * `cachedValue` and the engine grid's value at the cell. Immutable; what moves is the call, which
17
+ * holds the latest. Each deferring evaluation makes a new one.
18
+ *
19
+ * @remarks
20
+ * Seen only by the formula block and the engine. Every other reader reads it through
21
+ * {@link readAsync}: the push into a dependent's input, a range read of the engine grid, and the
22
+ * copy of results to the model, which never receives one.
23
+ *
24
+ * The calls are the calculation layer's; all a read needs of one is its latest.
25
+ */
26
+ export declare class AsyncValue<C extends AsyncValue.Call = AsyncValue.Call> {
27
+ /**
28
+ * What the formula calculated, from its calls' initials. A range for an evaluation that
29
+ * spilled: that holder rides the spill's entry, never a cell, and no cell reads it.
30
+ */
31
+ readonly value: Scalar | IRange;
32
+ /** The calls the formula made, by ordinal. */
33
+ readonly calls: readonly C[];
34
+ /** The formula's root is its only call: the cell reads as that call's latest once it has one. */
35
+ readonly direct: boolean;
36
+ constructor(value: Scalar | IRange, calls: readonly C[], direct: boolean);
37
+ /** The brand every recognizing site reads. */
38
+ get isAsyncValue(): true;
39
+ }
40
+ export declare namespace AsyncValue {
41
+ /** What a holder reads of a call. */
42
+ interface Call {
43
+ /** The most recent result; `undefined` until one arrives. */
44
+ readonly latest: unknown;
45
+ }
46
+ }
47
+ /** Whether `value` is an {@link AsyncValue}. */
48
+ export declare const isAsyncValue: (value: unknown) => value is AsyncValue;
49
+ /**
50
+ * `value` as a reader sees it: a holder reads as its root call's latest when `direct` and the call
51
+ * has one, else as what the formula calculated. Anything else is itself.
52
+ *
53
+ * @remarks
54
+ * A blank latest reads as `0`, as a formula's blank result is stored (`finalizeValue`): the
55
+ * latest is the cell's value and was never finalized.
56
+ */
57
+ export declare const readAsync: <T = Scalar>(value: T) => T | Scalar | IRange;
58
+ //# sourceMappingURL=AsyncValue.d.ts.map
@@ -12,6 +12,11 @@ export interface IResource extends JSONSerializableAsync<IResource.JSON> {
12
12
  * An optional name for the resource.
13
13
  */
14
14
  getName(): string | null;
15
+ /**
16
+ * The URL the bytes were fetched from, when the resource is a picture the workbook keeps for it
17
+ * (an `IMAGE` source): a fetch of that URL answers from these bytes. `null` otherwise.
18
+ */
19
+ getFetchedFrom(): string | null;
15
20
  /**
16
21
  * For saving to json resources.
17
22
  */
@@ -113,6 +118,10 @@ export declare namespace IResource {
113
118
  * This is optional but if provided then resource lookup will use this as a cache key.
114
119
  */
115
120
  name?: string;
121
+ /**
122
+ * The URL the embedded bytes were fetched from: the workbook keeps them as that URL's picture.
123
+ */
124
+ fetchedFrom?: string;
116
125
  }
117
126
  }
118
127
  //# sourceMappingURL=IResource.d.ts.map
@@ -52,6 +52,10 @@ export declare namespace IResourceCollection {
52
52
  * This is optional and purely for human consumption and is not used by the system.
53
53
  */
54
54
  name?: string;
55
+ /**
56
+ * The URL the bytes were fetched from, for a picture the workbook keeps for it.
57
+ */
58
+ fetchedFrom?: string;
55
59
  }
56
60
  /**
57
61
  * A type that represents the various ways to provide a resource source.
@@ -2,6 +2,7 @@ import { IResource } from './IResource';
2
2
  import { IResourceCollection } from './IResourceCollection';
3
3
  export declare class Resource implements IResource {
4
4
  private _name;
5
+ private _fetchedFrom;
5
6
  private _refs;
6
7
  private _listeners;
7
8
  private _isClosed;
@@ -17,6 +18,7 @@ export declare class Resource implements IResource {
17
18
  protected _resolveArrayBuffer(): Promise<ArrayBuffer>;
18
19
  /** {@inheritDoc IResource.getName} */
19
20
  getName(): string | null;
21
+ getFetchedFrom(): string | null;
20
22
  /** {@inheritDoc IResource.toJSONAsync} */
21
23
  toJSONAsync(): Promise<IResource.JSON>;
22
24
  /** {@inheritDoc IResource.toBuffer} */
@@ -0,0 +1,13 @@
1
+ import { IResource } from './IResource';
2
+ import { IResourceCollection } from './IResourceCollection';
3
+ /**
4
+ * Adds bytes to `resources` as a resource. With `fetchedFrom` the resource is the collection's copy
5
+ * of that URL, so adding the URL again answers the one already there. With no collection, a
6
+ * resource of no workbook.
7
+ *
8
+ * @internal
9
+ */
10
+ export declare const addResource: (resources: IResourceCollection | null, buffer: ArrayBuffer, options?: {
11
+ fetchedFrom?: string;
12
+ }) => IResource;
13
+ //# sourceMappingURL=_AddResource.d.ts.map