@sheetxl/sdk 0.8.0-beta.11 → 0.8.0-beta.13
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.
- package/THIRD-PARTY-NOTICES.md +172 -0
- package/browser/esm/{BMyDRQ716j79h_bH.mjs → -GEhXGMfNcWmHPby.mjs} +6 -6
- package/browser/esm/{B7aUIvgUjncMMD_i.mjs → 9WXf_BTKjW1cQisZ.mjs} +95 -94
- package/browser/esm/{PcHFjNzQsE54POri.mjs → B2SgIPPBX0wjzuq8.mjs} +1 -1
- package/browser/esm/{DEiPS3Dr-s4fPbVZ.mjs → BC2RwlNwCdRywkoD.mjs} +1 -1
- package/browser/esm/{BpgskG1Er_lGQ_yS.mjs → BEqhm9xAUPiHUCFv.mjs} +1 -1
- package/browser/esm/BHgqi7KNrl7Vjr0W.mjs +348 -0
- package/browser/esm/{BkBhLS0l6z8sxI6D.mjs → BJKH0tDRx2FeSWvt.mjs} +2 -2
- package/browser/esm/{CU3DmJ-YnVVrC1_k.mjs → BTgWtqdQoh2cB6DL.mjs} +1 -1
- package/browser/esm/{Dyq_ivuHvlXLwPCl.mjs → BVshV1iY3bcUH9_E.mjs} +1135 -1129
- package/browser/esm/{BFagR2JeWs74iAG3.mjs → BYQ63XU7JzB4_itX.mjs} +1 -1
- package/browser/esm/{DvAaxH6z_tGvrRzl.mjs → Bax5aOzQkbHKXW_X.mjs} +239 -230
- package/browser/esm/{DLLE0FZNsKxbBzRn.mjs → BiDGKhtzV6yIy66o.mjs} +45 -45
- package/browser/esm/BmYrWK5OmHRtgyqM.mjs +367 -0
- package/browser/esm/{ClPfI4lODvCece29.mjs → BoAlHgjPQ6mxb_oO.mjs} +74 -74
- package/browser/esm/{BoV6zPBnfqCBCqZ7.mjs → C0mjTq8lhrX3HiPa.mjs} +4328 -3166
- package/browser/esm/{nvU0ClAbf0g94YBK.mjs → C5j0IdwtYkWlOftv.mjs} +604 -596
- package/browser/esm/{DWNzqw7DUKwoxjri.mjs → CL84-iL2QeKlLzo5.mjs} +2 -2
- package/browser/esm/{Ctjb0SsxV4K4MMqG.mjs → CLkBe-6n-pStQhnz.mjs} +2 -2
- package/{node/esm/CZICGK_ss0HoGHCP.mjs → browser/esm/CPzfhTPX2Y4dHX2p.mjs} +2 -2
- package/browser/esm/{Dlmig06rIo7cInRk.mjs → CSJuIjYUOE387FIP.mjs} +1 -1
- package/browser/esm/{BjkCiv5Jz6WYKZeu.mjs → Cdw0mGuoV3IU2LhR.mjs} +2 -2
- package/browser/esm/Ced5uyofOWHuL_Jy.mjs +114 -0
- package/browser/esm/{CkxWugaJFjDGZNZ-.mjs → Ci_LJ4S_GvYX0STI.mjs} +1 -1
- package/browser/esm/{zlLuW405RSguy4Kn.mjs → CwygVKP_RXmne5Ot.mjs} +47 -47
- package/browser/esm/{C4MqfLn9Dm-l3OIk.mjs → D-mfK0noQrM2jZLT.mjs} +1 -1
- package/browser/esm/{BnG31I6Oj_HEtSPS.mjs → D9SH_8v3FYCnxOFK.mjs} +1 -1
- package/browser/esm/{BVDiOXGMc5_FMGfy.mjs → DPD8fop6az9HZNiK.mjs} +2 -2
- package/browser/esm/DW-MmlgMH87l-_cw.mjs +302 -0
- package/browser/esm/{CaB7J-xgfKO2uAkG.mjs → DctIlUsO78-OU2ht.mjs} +2 -2
- package/browser/esm/DdcKkVb4jM6Y_epY.mjs +184 -0
- package/browser/esm/{CHU6iu_WGlm7fLET.mjs → DfKzE0IY0TjaEIxG.mjs} +1 -1
- package/browser/esm/{C2VbEI_XVAoseAwa.mjs → DkloMquaR1pbZCER.mjs} +44 -43
- package/browser/esm/{C16ycKja6zG0crV_.mjs → Dz86-De57bv2VYIi.mjs} +19447 -16481
- package/browser/esm/{BtvLTTfSBdAKplVG.mjs → HApSgmV2FXRRwQac.mjs} +1 -1
- package/browser/esm/{CQYjO777cmAznUzK.mjs → IbVAQU4YqtFqLwYk.mjs} +1 -1
- package/browser/esm/index.mjs +823 -644
- package/browser/esm/mHQ95RAfxHzcUN2r.mjs +18 -0
- package/browser/esm/pm00uZZu_H3gxHFx.mjs +117 -0
- package/browser/esm/{CV5EGEjG5_-CPpP0.mjs → quEvwgrEuOb0h3q-.mjs} +1926 -1298
- package/browser/esm/{ClbvFbFzFzXLBKNN.mjs → zZngLMg6mg6nnNGX.mjs} +66 -66
- package/licenses/dependencies.txt +71 -1
- package/node/esm/{BqiexuA89caYnAPz.mjs → -K4Cek-bTUItkB_8.mjs} +1 -1
- package/node/esm/-b8yNV4v9qiq8EMY.mjs +117 -0
- package/node/esm/{D8zEN-6ZdDqDvTxM.mjs → 1V-m67YHbxmg3xk2.mjs} +74 -74
- package/node/esm/{D_t5AUxSm7_icjzq.mjs → 4ROAfJC1mokmqubv.mjs} +1 -1
- package/node/esm/B89et7t3uRmtxk4v.mjs +115 -0
- package/node/esm/BKBkCBNGhMU0nQdY.mjs +372 -0
- package/node/esm/{OVfaSb506tNSIvbv.mjs → BQ2XqExomMceAjfe.mjs} +20822 -18373
- package/node/esm/{2Kihw_-5lVTEnwMa.mjs → Bfg7qjCXCwXbzW3K.mjs} +1 -1
- package/node/esm/{D1TKBVmoKGAXf37B.mjs → BtMeAB_dqJnOfzJM.mjs} +2 -2
- package/node/esm/{D6e2z7eZpxOJXHc7.mjs → Byc_bxU_MdjYtt0x.mjs} +1 -1
- package/node/esm/{CNCNJNg890KdgkWh.mjs → Bzrl292TNCK3Cpid.mjs} +1 -1
- package/node/esm/{De2IONBxQhz-Qbyh.mjs → C0P9zspoypRAj7yv.mjs} +1 -1
- package/node/esm/{CzXT00vrQa1_gvW9.mjs → C9gpMN3galHGZyoK.mjs} +1 -1
- package/node/esm/CKCG2peOkTq0gIIW.mjs +310 -0
- package/node/esm/{DUTskXCXref-IJnI.mjs → CWBS90g3Hz-kQDkY.mjs} +46 -46
- package/node/esm/{BIwObuhTJYf0jpUa.mjs → CoGSVnn-hNMtTEus.mjs} +2 -2
- package/node/esm/{CwePQwTILHHjGDkZ.mjs → CzrLqStvrcPE2-hb.mjs} +194 -185
- package/node/esm/{CCN5vD410obwdz38.mjs → D16EdlZG1hX5WUUK.mjs} +96 -95
- package/node/esm/{CDHdgJXH2vS71WMc.mjs → D1mDga2K5sjs8y07.mjs} +1 -1
- package/node/esm/{cGwrLA1RCE-WhJ7w.mjs → D2jtztjE6c23RKvZ.mjs} +1 -1
- package/node/esm/{Bbf1Pm9Gk7YpLTvg.mjs → D9nRcWsYk3M82iD8.mjs} +1 -1
- package/node/esm/{yavzZOiZW_EjG9lE.mjs → DALYzTxZ9Ur9C69Q.mjs} +1 -1
- package/node/esm/{DkwIPzKc3UwdUIfM.mjs → DF0nL7s01dp7n0Bx.mjs} +10 -10
- package/node/esm/{DNRhGK-8Tr9xcRyc.mjs → DO5ldLqhTvIfPXLW.mjs} +3348 -2610
- package/node/esm/DQz8J8ci7EJdqbuB.mjs +351 -0
- package/node/esm/{BIRq1kT7lLRzns9t.mjs → DR2OQTKqqyIkZnse.mjs} +2 -2
- package/node/esm/{857CIBgQgGpnqrXk.mjs → DSTLPBgpsGW6qP9e.mjs} +73 -73
- package/node/esm/{CGp6VZL-gZa9Uezx.mjs → DiXp7KSOZUSWXaZ5.mjs} +1 -1
- package/node/esm/{CZiqiay42tFTrLI4.mjs → DwvXHsycOQR219c7.mjs} +1 -1
- package/node/esm/{B21JjOLghRoDOrkx.mjs → Hc6B04OyVzHx2F5I.mjs} +38 -37
- package/node/esm/{Ct3h15sCus4Tgt6M.mjs → NkPNHsq2T3DXg76x.mjs} +561 -553
- package/node/esm/{B084DssTcdBheTp_.mjs → Nl_IIkO1jbk0s9i-.mjs} +4552 -3373
- package/node/esm/{D2KBymQJd1XhpeQD.mjs → OQT5lGqq8a4r5xNa.mjs} +1 -1
- package/node/esm/OTaaFGhF-k_iwobp.mjs +18 -0
- package/node/esm/{CdJHUJSBRHZoryPe.mjs → Z1elC_roIu7LhceZ.mjs} +53 -53
- package/{browser/esm/D5np__Jb1euAyaLw.mjs → node/esm/e3F3OVXCxLJrSukW.mjs} +2 -2
- package/node/esm/index.mjs +806 -625
- package/node/esm/{mFiBSM7XgBHV9AY7.mjs → suOBVUz-pca6ilJH.mjs} +1607 -1601
- package/package.json +8 -6
- package/resources/contents.json +108 -0
- package/resources/fonts/aptos-bold-italic.hinted.json +125 -0
- package/resources/fonts/aptos-bold-italic.metrics.json +221 -0
- package/resources/fonts/aptos-bold-italic.rows.json +8 -0
- package/resources/fonts/aptos-bold.hinted.json +125 -0
- package/resources/fonts/aptos-bold.metrics.json +221 -0
- package/resources/fonts/aptos-bold.rows.json +8 -0
- package/resources/fonts/aptos-display-bold-italic.hinted.json +125 -0
- package/resources/fonts/aptos-display-bold-italic.metrics.json +221 -0
- package/resources/fonts/aptos-display-bold-italic.rows.json +8 -0
- package/resources/fonts/aptos-display-bold.hinted.json +125 -0
- package/resources/fonts/aptos-display-bold.metrics.json +221 -0
- package/resources/fonts/aptos-display-bold.rows.json +8 -0
- package/resources/fonts/aptos-display-italic.hinted.json +124 -0
- package/resources/fonts/aptos-display-italic.metrics.json +221 -0
- package/resources/fonts/aptos-display-italic.rows.json +8 -0
- package/resources/fonts/aptos-display-regular.hinted.json +125 -0
- package/resources/fonts/aptos-display-regular.metrics.json +221 -0
- package/resources/fonts/aptos-display-regular.rows.json +8 -0
- package/resources/fonts/aptos-italic.hinted.json +125 -0
- package/resources/fonts/aptos-italic.metrics.json +221 -0
- package/resources/fonts/aptos-italic.rows.json +8 -0
- package/resources/fonts/aptos-narrow-bold-italic.hinted.json +125 -0
- package/resources/fonts/aptos-narrow-bold-italic.metrics.json +221 -0
- package/resources/fonts/aptos-narrow-bold-italic.rows.json +8 -0
- package/resources/fonts/aptos-narrow-bold.hinted.json +125 -0
- package/resources/fonts/aptos-narrow-bold.metrics.json +221 -0
- package/resources/fonts/aptos-narrow-bold.rows.json +8 -0
- package/resources/fonts/aptos-narrow-italic.hinted.json +125 -0
- package/resources/fonts/aptos-narrow-italic.metrics.json +221 -0
- package/resources/fonts/aptos-narrow-italic.rows.json +8 -0
- package/resources/fonts/aptos-narrow-regular.hinted.json +125 -0
- package/resources/fonts/aptos-narrow-regular.metrics.json +221 -0
- package/resources/fonts/aptos-narrow-regular.rows.json +8 -0
- package/resources/fonts/aptos-regular.hinted.json +125 -0
- package/resources/fonts/aptos-regular.metrics.json +221 -0
- package/resources/fonts/aptos-regular.rows.json +8 -0
- package/resources/fonts/arial-bold-italic.rows.json +0 -1
- package/resources/fonts/arial-bold.rows.json +0 -1
- package/resources/fonts/arial-italic.rows.json +0 -1
- package/resources/fonts/arial-regular.rows.json +0 -1
- package/resources/fonts/calibri-bold-italic.rows.json +0 -1
- package/resources/fonts/calibri-bold.rows.json +0 -1
- package/resources/fonts/calibri-italic.rows.json +0 -1
- package/resources/fonts/calibri-regular.rows.json +0 -1
- package/resources/fonts/cambria-bold-italic.rows.json +0 -1
- package/resources/fonts/cambria-bold.rows.json +0 -1
- package/resources/fonts/cambria-italic.rows.json +0 -1
- package/resources/fonts/cambria-regular.rows.json +0 -1
- package/resources/fonts/contents.json +240 -0
- package/resources/fonts/courier-new-bold-italic.rows.json +0 -1
- package/resources/fonts/courier-new-bold.rows.json +0 -1
- package/resources/fonts/courier-new-italic.rows.json +0 -1
- package/resources/fonts/courier-new-regular.rows.json +0 -1
- package/resources/fonts/times-new-roman-bold-italic.rows.json +0 -1
- package/resources/fonts/times-new-roman-bold.rows.json +0 -1
- package/resources/fonts/times-new-roman-italic.rows.json +0 -1
- package/resources/fonts/times-new-roman-regular.rows.json +0 -1
- package/resources/locales/de/model.msg.json +12 -2
- package/resources/locales/en/model.msg.json +13 -2
- package/types/scripting-api.json +10638 -10446
- package/types/scripting-enums.json +20 -1
- package/types/scripting.d.ts +1536 -477
- package/types/src/.generated/wasm/sdk.d.ts +5 -27
- package/types/src/address/AddressUtils.d.ts +8 -0
- package/types/src/address/_SheetNameQuoteChars.d.ts +3 -0
- package/types/src/{sheet → anomalies}/_Anomalies.d.ts +3 -3
- package/types/src/anomalies/_FocusTable.d.ts +5 -0
- package/types/src/{sheet/_AnomalyFormulaChecks.d.ts → anomalies/_FormulaChecks.d.ts} +10 -2
- package/types/src/{sheet/_AnomalyLabelChecks.d.ts → anomalies/_LabelChecks.d.ts} +1 -1
- package/types/src/anomalies/_LiteralChecks.d.ts +35 -0
- package/types/src/anomalies/_SeriesChecks.d.ts +13 -0
- package/types/src/calculation/Calculation.d.ts +61 -98
- package/types/src/calculation/ExternalBookBindings.d.ts +2 -29
- package/types/src/calculation/ICalculation.d.ts +96 -9
- package/types/src/calculation/NamedFormulaCollection.d.ts +110 -10
- package/types/src/calculation/TokenType.d.ts +0 -10
- package/types/src/calculation/_CloneBoundary.d.ts +0 -24
- package/types/src/calculation/_FormulaToolkit.d.ts +0 -5
- package/types/src/calculation/compiler/ASTTypes.d.ts +6 -15
- package/types/src/calculation/compiler/CompilerUtils.d.ts +0 -227
- package/types/src/calculation/compiler/FormulaLexer.d.ts +0 -8
- package/types/src/calculation/compiler/FormulaParser.d.ts +0 -61
- package/types/src/calculation/compiler/ParserUtils.d.ts +0 -24
- package/types/src/calculation/compiler/Types.d.ts +1 -45
- package/types/src/calculation/engine/CalcBackend.d.ts +83 -127
- package/types/src/calculation/engine/index.d.ts +0 -8
- package/types/src/calculation/executor/CalcExecutor.d.ts +50 -116
- package/types/src/calculation/executor/CalcExecutorUtils.d.ts +47 -12
- package/types/src/calculation/executor/CircularReference.d.ts +0 -17
- package/types/src/calculation/executor/_BlockOrder.d.ts +29 -0
- package/types/src/calculation/executor/_WhatIf.d.ts +31 -0
- package/types/src/calculation/formula/FormulaBlock.d.ts +4 -31
- package/types/src/calculation/formula/FormulaRecordView.d.ts +0 -15
- package/types/src/calculation/formula/IFormulaBlock.d.ts +5 -12
- package/types/src/calculation/formula/LambdaValue.d.ts +0 -15
- package/types/src/calculation/formula/TokenUtils.d.ts +1 -8
- package/types/src/calculation/functions/_DataTableFunction.d.ts +14 -0
- package/types/src/calculation/grid/CalcGrid.d.ts +8 -64
- package/types/src/calculation/grid/CalcGridBackend.d.ts +12 -35
- package/types/src/calculation/grid/CalcGridProxy.d.ts +0 -15
- package/types/src/calculation/grid/CalcGridUtils.d.ts +21 -23
- package/types/src/calculation/grid/ICalcGrid.d.ts +28 -109
- package/types/src/calculation/grid/_CalcRequest.d.ts +17 -33
- package/types/src/calculation/spatial/CircularEntry.d.ts +0 -10
- package/types/src/calculation/spatial/FormulaSpatialValue.d.ts +54 -82
- package/types/src/calculation/spatial/SpillEntry.d.ts +20 -3
- package/types/src/calculation/state/CalcNode.d.ts +0 -1
- package/types/src/calculation/state/CalcScope.d.ts +29 -9
- package/types/src/calculation/state/CalcState.d.ts +19 -9
- package/types/src/calculation/state/CalculationContext.d.ts +32 -38
- package/types/src/calculation/state/DeferredCalls.d.ts +207 -0
- package/types/src/calculation/state/IContextContainer.d.ts +19 -55
- package/types/src/calculation/state/_KeepBlanks.d.ts +5 -0
- package/types/src/calculation/state/_PendingOverlayGrid.d.ts +52 -33
- package/types/src/calculation/state/_WhatIfLayer.d.ts +77 -0
- package/types/src/calculation/symbol/ExternalSheetSymbols.d.ts +0 -42
- package/types/src/calculation/symbol/ISymbolRegistry.d.ts +0 -6
- package/types/src/calculation/symbol/SheetSymbolProvider.d.ts +0 -12
- package/types/src/calculation/symbol/SymbolRegistry.d.ts +0 -9
- package/types/src/calculation/toolkit/index.d.ts +0 -8
- package/types/src/cell/ICell.d.ts +59 -54
- package/types/src/cellControl/CellControl.d.ts +67 -0
- package/types/src/cellControl/CellControlCollection.d.ts +29 -0
- package/types/src/cellControl/CellControlRegistry.d.ts +47 -0
- package/types/src/cellControl/ICellControl.d.ts +99 -0
- package/types/src/cellControl/ICellControlCollection.d.ts +67 -0
- package/types/src/cellControl/index.d.ts +4 -0
- package/types/src/cellRange/ICellRange.d.ts +226 -67
- package/types/src/cellRange/ICellRanges.d.ts +4 -3
- package/types/src/chart/Chart.d.ts +0 -16
- package/types/src/chart/_ChartParts.d.ts +0 -39
- package/types/src/chart/_ChartSource.d.ts +0 -14
- package/types/src/chart/createChart.d.ts +1 -1
- package/types/src/chart/kinds/ChartKind.d.ts +4 -4
- package/types/src/chart/kinds/_Placeholder.d.ts +0 -1
- package/types/src/chart/layout/ChartLayout.d.ts +5 -1
- package/types/src/chart/layout/TextMeasurer.d.ts +0 -20
- package/types/src/chart/layout/_LayoutUtils.d.ts +0 -16
- package/types/src/chart/math/BoxStats.d.ts +0 -8
- package/types/src/chart/math/DateUnitCalcs.d.ts +0 -10
- package/types/src/chart/math/Histogram.d.ts +0 -17
- package/types/src/chart/math/OrdUnitCalcs.d.ts +0 -53
- package/types/src/chart/math/Treemap.d.ts +0 -15
- package/types/src/chart/math/Trendlines.d.ts +0 -8
- package/types/src/chart/math/UnitCalcs.d.ts +0 -22
- package/types/src/chart/model/_Edits.d.ts +0 -33
- package/types/src/chart/model/_Grouping.d.ts +0 -25
- package/types/src/chart/model/_Inference.d.ts +0 -18
- package/types/src/chart/model/_NewChart.d.ts +0 -41
- package/types/src/chart/model/_OfPie.d.ts +0 -7
- package/types/src/chart/resolve/_LegacyStyles.d.ts +0 -20
- package/types/src/chart/resolve/_Resolve.d.ts +3 -12
- package/types/src/chart/resolve/_ResolvedChart.d.ts +5 -8
- package/types/src/collections/ISparseGrid.d.ts +11 -2
- package/types/src/collections/MixedTypedArrayList.d.ts +8 -2
- package/types/src/collections/SparseGrid.d.ts +3 -8
- package/types/src/collections/_GridUtils.d.ts +0 -10
- package/types/src/comment/_NoteBox.d.ts +0 -15
- package/types/src/condition/AnchoredConditional.d.ts +3 -25
- package/types/src/condition/BuiltInOperators/AbstractOperator.d.ts +0 -49
- package/types/src/condition/BuiltinSelectors/DisplaySelector.d.ts +0 -10
- package/types/src/condition/ICondition.d.ts +2 -2
- package/types/src/condition/_ConditionUtils.d.ts +0 -38
- package/types/src/externalBook/ExternalBookCollection.d.ts +0 -15
- package/types/src/externalBook/ExternalBookName.d.ts +2 -3
- package/types/src/externalBook/IExternalBook.d.ts +16 -18
- package/types/src/fetch/Fetcher.d.ts +15 -0
- package/types/src/fetch/IFetcher.d.ts +48 -0
- package/types/src/fetch/_WorkbookFetch.d.ts +43 -0
- package/types/src/fetch/index.d.ts +3 -0
- package/types/src/fill/PaintUtils.d.ts +3 -1
- package/types/src/font/AdvanceTable.d.ts +16 -42
- package/types/src/font/IFont.d.ts +32 -9
- package/types/src/font/TableFileAdvanceBuilder.d.ts +6 -3
- package/types/src/font/_FontUtils.d.ts +0 -8
- package/types/src/font/_StandIns.d.ts +33 -0
- package/types/src/hyperlink/IHyperlink.d.ts +10 -0
- package/types/src/hyperlink/_Hyperlink.d.ts +4 -1
- package/types/src/index.d.ts +2 -1
- package/types/src/io/IWorkbookIO.d.ts +3 -3
- package/types/src/io/WorkbookOrigin.d.ts +2 -2
- package/types/src/license/LicenseManager.d.ts +2 -1
- package/types/src/license/_Utils.d.ts +4 -3
- package/types/src/license/details.d.ts +3 -1
- package/types/src/license/keys.d.ts +6 -0
- package/types/src/license/license-key.d.ts +15 -33
- package/types/src/license/token.d.ts +55 -0
- package/types/src/named/INamedCollection.d.ts +36 -0
- package/types/src/named/NamedCollection.d.ts +18 -0
- package/types/src/picture/IPicture.d.ts +45 -0
- package/types/src/picture/Picture.d.ts +12 -0
- package/types/src/pivot/PivotTable.d.ts +0 -7
- package/types/src/primitives/AsyncValue.d.ts +46 -0
- package/types/src/primitives/PrimitiveUtils.d.ts +1 -110
- package/types/src/primitives/Range.d.ts +0 -60
- package/types/src/primitives/ScalarCollation.d.ts +0 -106
- package/types/src/primitives/stats/AggregateStats.d.ts +0 -19
- package/types/src/print/PageLayout.d.ts +0 -6
- package/types/src/reference/ReferenceUtils.d.ts +4 -2
- package/types/src/resource/IResource.d.ts +9 -0
- package/types/src/resource/IResourceCollection.d.ts +4 -0
- package/types/src/resource/Resource.d.ts +2 -0
- package/types/src/resource/_AddResource.d.ts +13 -0
- package/types/src/richData/CellImage.d.ts +95 -0
- package/types/src/richData/Hyperlink.d.ts +49 -0
- package/types/src/richData/IRichDataCollection.d.ts +76 -0
- package/types/src/richData/IRichDataKind.d.ts +55 -11
- package/types/src/richData/RichArray.d.ts +42 -0
- package/types/src/richData/RichDataCollection.d.ts +23 -0
- package/types/src/richData/RichDataRegistry.d.ts +52 -14
- package/types/src/richData/RichDataValues.d.ts +20 -0
- package/types/src/richData/RichRecord.d.ts +68 -0
- package/types/src/richData/RichText.d.ts +5 -5
- package/types/src/richData/index.d.ts +6 -0
- package/types/src/scripting/FunctionArguments.d.ts +17 -1
- package/types/src/scripting/FunctionCollection.d.ts +8 -0
- package/types/src/scripting/Scripts.d.ts +10 -0
- package/types/src/scripting/TypedFunction.d.ts +2 -109
- package/types/src/sheet/ICellContainerOptions.d.ts +6 -0
- package/types/src/sheet/IWorksheet.d.ts +26 -22
- package/types/src/sheet/NamedCellRange.d.ts +0 -21
- package/types/src/sheet/SheetCell.d.ts +25 -3
- package/types/src/sheet/SheetRange.d.ts +8 -2
- package/types/src/sheet/SheetRanges.d.ts +2 -2
- package/types/src/sheet/Worksheet.d.ts +117 -104
- package/types/src/sheet/_DelimitedText.d.ts +13 -0
- package/types/src/sheet/_IgnoredErrors.d.ts +0 -12
- package/types/src/sheet/_ListenerAnchor.d.ts +7 -1
- package/types/src/sheet/_ScalarListFactory.d.ts +46 -17
- package/types/src/sheet/_SheetCoords.d.ts +0 -7
- package/types/src/sheet/_SheetFilterUtils.d.ts +0 -8
- package/types/src/sheet/_SheetMutations.d.ts +4 -1
- package/types/src/sheet/_SheetStateReader.d.ts +0 -10
- package/types/src/sheet/_SheetStateTypes.d.ts +23 -14
- package/types/src/sheet/_SheetUtils.d.ts +1 -1
- package/types/src/sheet/style/_RowLine.d.ts +32 -0
- package/types/src/sheet/style/_StyleUtils.d.ts +6 -14
- package/types/src/sheetView/_SheetViewUtils.d.ts +0 -1
- package/types/src/slicer/_BuiltInSlicerStyles.d.ts +0 -5
- package/types/src/style/ICellStyle.d.ts +4 -0
- package/types/src/table/AnchoredTable.d.ts +0 -147
- package/types/src/text/TextFrame.d.ts +4 -1
- package/types/src/text/TextStacked.d.ts +0 -24
- package/types/src/text/TextWrapper.d.ts +3 -5
- package/types/src/text/_LineBox.d.ts +24 -0
- package/types/src/text/_TextUtils.d.ts +5 -2
- package/types/src/text/_TextWrapperFallback.d.ts +2 -1
- package/types/src/wasm/sdkWasm.d.ts +1 -1
- package/types/src/workbook/IWorkbook.d.ts +40 -1
- package/types/src/workbook/Workbook.d.ts +25 -13
- package/types/src/workbook/WorkbookRanges.d.ts +1 -1
- package/browser/esm/BGOFfpxr2jPIdqmV.mjs +0 -40
- package/browser/esm/BLoUBId2xZpXAK_H.mjs +0 -698
- package/browser/esm/C5E6zSGAALWf61n4.mjs +0 -199
- package/browser/esm/S2dNNx1a5ydRnARM.mjs +0 -367
- package/browser/esm/f1IoRb7tEb0QmCSt.mjs +0 -110
- package/browser/esm/gssVX_FH1XFN-twD.mjs +0 -210
- package/node/esm/BrCKGFRsX_ezFJ4B.mjs +0 -811
- package/node/esm/DOU54VsOjG-m-NyQ.mjs +0 -210
- package/node/esm/Db0v7zXNnyjBIjjI.mjs +0 -372
- package/node/esm/Df1bL6VFvrqIdSLB.mjs +0 -40
- package/node/esm/DrTZbfemSLq2mseG.mjs +0 -111
- package/types/src/dataTable/DataTable.d.ts +0 -67
- package/types/src/dataTable/DataTableCollection.d.ts +0 -19
- package/types/src/dataTable/IDataTable.d.ts +0 -99
- package/types/src/dataTable/IDataTableCollection.d.ts +0 -18
- package/types/src/dataTable/index.d.ts +0 -6
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { IFormulaContext, IRange, IRichData, Scalar } from '@sheetxl/primitives';
|
|
2
|
+
import { ISpatialMap } from '../../collections';
|
|
3
|
+
import { AsyncValue } from '../../primitives/AsyncValue';
|
|
4
|
+
import { CalcNode } from './CalcNode';
|
|
5
|
+
import { CalcScope } from './CalcScope';
|
|
6
|
+
/**
|
|
7
|
+
* Where a call stands: still wanted and unanswered, answered, failed, or closed.
|
|
8
|
+
*/
|
|
9
|
+
export declare const CallState: {
|
|
10
|
+
readonly Open: 0;
|
|
11
|
+
readonly Settled: 1;
|
|
12
|
+
readonly Rejected: 2;
|
|
13
|
+
readonly Closed: 3;
|
|
14
|
+
};
|
|
15
|
+
export type CallState = typeof CallState[keyof typeof CallState];
|
|
16
|
+
export declare class DeferredCall implements IFormulaContext.DeferredCall {
|
|
17
|
+
readonly id: number;
|
|
18
|
+
readonly executor: IFormulaContext.DeferExecutor;
|
|
19
|
+
readonly payload: unknown;
|
|
20
|
+
/** Which function made the call (its declaration), or `null` for one with none. */
|
|
21
|
+
readonly site: object | null;
|
|
22
|
+
owner: CalcNode | null;
|
|
23
|
+
state: CallState;
|
|
24
|
+
/** The most recent result; `undefined` until one arrives. */
|
|
25
|
+
latest: unknown;
|
|
26
|
+
protected _onCancel: (() => void)[] | null;
|
|
27
|
+
protected _onMoved: ((call: DeferredCall) => void) | null;
|
|
28
|
+
/** Told of the call's final answer: the manager, which holds the call only until then. */
|
|
29
|
+
protected _onFinal: ((call: DeferredCall) => void) | null;
|
|
30
|
+
/** Makes a result cell-ready (see {@link DeferredCalls.Normalize}). */
|
|
31
|
+
protected _normalize: DeferredCalls.Normalize;
|
|
32
|
+
constructor(id: number, executor: IFormulaContext.DeferExecutor, payload: unknown, site: object | null, owner: CalcNode | null, onMoved?: ((call: DeferredCall) => void) | null, onFinal?: ((call: DeferredCall) => void) | null, normalize?: DeferredCalls.Normalize);
|
|
33
|
+
/** @inheritdoc IFormulaContext.DeferredCall.resolve */
|
|
34
|
+
resolve(value: unknown, options?: IFormulaContext.DeferredCall.ResolveOptions): void;
|
|
35
|
+
/** @inheritdoc IFormulaContext.DeferredCall.reject */
|
|
36
|
+
reject(error: unknown): void;
|
|
37
|
+
/** @inheritdoc IFormulaContext.DeferredCall.onCancel */
|
|
38
|
+
onCancel(fn: () => void): void;
|
|
39
|
+
/** @inheritdoc IFormulaContext.DeferredCall.cancelled */
|
|
40
|
+
get cancelled(): boolean;
|
|
41
|
+
/** Whether the call has not answered yet: it is running, and a recalculation leaves it be. */
|
|
42
|
+
isOpen(): boolean;
|
|
43
|
+
/** Closes the call; `onCancel` runs when it had not finished. */
|
|
44
|
+
close(): void;
|
|
45
|
+
protected _moved(): void;
|
|
46
|
+
protected _final(): void;
|
|
47
|
+
}
|
|
48
|
+
export declare const DefaultSettleWindow = 100;
|
|
49
|
+
/** What an evaluation that deferred leaves for the cell: its calls, and whether the root is the only one. */
|
|
50
|
+
export interface DeferredEvaluation {
|
|
51
|
+
readonly calls: readonly DeferredCall[];
|
|
52
|
+
/** The formula's root is its only call: the cell's value is that call's answer. */
|
|
53
|
+
readonly direct: boolean;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The holder at a cell, if any: the engine grid's value there, or the entry of the spill anchored
|
|
57
|
+
* there when the cell is an anchor (the anchor cell itself holds the first element).
|
|
58
|
+
*/
|
|
59
|
+
export type HeldAt = (gridId: string, row: number, column: number) => AsyncValue<DeferredCall> | null;
|
|
60
|
+
export declare class DeferredCalls {
|
|
61
|
+
protected _scope: CalcScope;
|
|
62
|
+
protected _heldAt: HeldAt;
|
|
63
|
+
protected _getRandom: () => number;
|
|
64
|
+
protected _nextId: number;
|
|
65
|
+
/** The calls that have not given their final answer, by id. A holder names any other by pointer. */
|
|
66
|
+
protected _calls: Map<number, DeferredCall>;
|
|
67
|
+
protected _onFinal: (call: DeferredCall) => void;
|
|
68
|
+
/** Whether a holder has ever been written: until then no read needs to look for one. */
|
|
69
|
+
protected _holders: boolean;
|
|
70
|
+
/** The calls of the evaluation in progress, by ordinal, and which of them it made. */
|
|
71
|
+
protected _current: DeferredCall[];
|
|
72
|
+
protected _made: DeferredCall[];
|
|
73
|
+
/** The calls made since the last {@link flush}, by executor: each executor's batch. */
|
|
74
|
+
protected _batch: Map<IFormulaContext.DeferExecutor, DeferredCall[]>;
|
|
75
|
+
/** What each executor keeps between batches (`IDeferContext.getState`). */
|
|
76
|
+
protected _states: Map<IFormulaContext.DeferExecutor, unknown>;
|
|
77
|
+
protected _deferContext: IFormulaContext.IDeferContext;
|
|
78
|
+
protected _setCurrent: (executor: IFormulaContext.DeferExecutor | null) => void;
|
|
79
|
+
protected _moved: Set<DeferredCall>;
|
|
80
|
+
protected _onMoved: (call: DeferredCall) => void;
|
|
81
|
+
protected _onSettle: (() => void) | null;
|
|
82
|
+
protected _settleWindow: number;
|
|
83
|
+
protected _settleTimer: ReturnType<typeof setTimeout> | null;
|
|
84
|
+
protected _settledAt: number;
|
|
85
|
+
/** The grids a settle told the model about without a write: the next pass vends their records. */
|
|
86
|
+
protected _repaintGrids: Set<string>;
|
|
87
|
+
/** The cells a settle marked for re-evaluation, scoped: the next pass's seeds, beside its own. */
|
|
88
|
+
protected _settleDirty: ISpatialMap.Entry[];
|
|
89
|
+
protected _normalize: DeferredCalls.Normalize;
|
|
90
|
+
protected _serving: boolean;
|
|
91
|
+
/** The batch the next {@link flush} hands out fetches past the workbook's cache (`CalculateOptions.external`). */
|
|
92
|
+
protected _external: boolean;
|
|
93
|
+
/** {@link _deferContext}, with a `fetch` that goes to the source. */
|
|
94
|
+
protected _reloadContext: IFormulaContext.IDeferContext;
|
|
95
|
+
/**
|
|
96
|
+
* The last answer the site's call gave for the same question, read by `IFormulaContext.defer`
|
|
97
|
+
* right after {@link defer}: `undefined` when there was none.
|
|
98
|
+
*/
|
|
99
|
+
previous: unknown;
|
|
100
|
+
/** The {@link whenChanged} waits in progress: woken by a final answer, a settle pass starting, a cancel. */
|
|
101
|
+
protected _waiters: Set<() => void>;
|
|
102
|
+
/**
|
|
103
|
+
* Told when the counts may have changed, at the moments they become visible: calls handed out,
|
|
104
|
+
* a settle pass starting, a cancel, a close. Never per answer: a million answers are one settle.
|
|
105
|
+
*/
|
|
106
|
+
protected _onCountsChange: (() => void) | null;
|
|
107
|
+
constructor(scope: CalcScope, heldAt: HeldAt, getRandom: () => number, onSettle?: (() => void) | null, settleWindow?: number, normalize?: DeferredCalls.Normalize, services?: DeferredCalls.Services, onCountsChange?: (() => void) | null);
|
|
108
|
+
/** How many calls have not answered. `0` lets a pass skip every pending-input check. */
|
|
109
|
+
getOpenCount(): number;
|
|
110
|
+
/** The held calls whose owner is a cell of `gridId`. */
|
|
111
|
+
getCallsOf(gridId: string): DeferredCall[];
|
|
112
|
+
/** Whether an answer that landed has yet to be applied: its settle pass is still to run. */
|
|
113
|
+
hasSettleWork(): boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Resolves at the next change a wait for answers cares about — a call's final answer, a settle
|
|
116
|
+
* pass starting, a cancel — or after `timeout` ms, whichever is first.
|
|
117
|
+
*/
|
|
118
|
+
whenChanged(timeout: number): Promise<void>;
|
|
119
|
+
protected _wake(): void;
|
|
120
|
+
/**
|
|
121
|
+
* Closes every held call whose owner `cover` covers (`ICalculation.cancelAsync`): `onCancel`
|
|
122
|
+
* runs, and a later answer is dropped. A cancelled call stays in its holders: its cell is served
|
|
123
|
+
* what it shows now, and asks again only on an external calculation.
|
|
124
|
+
*
|
|
125
|
+
* @param cover `true` for every call, a grid id for one grid's, scoped coords for a range's.
|
|
126
|
+
* @returns The calls closed, for the caller to re-evaluate their owners.
|
|
127
|
+
*/
|
|
128
|
+
cancel(cover: true | string | IRange.Coords): DeferredCall[];
|
|
129
|
+
/** Closes `calls`: those still owed an answer run `onCancel`, and a later answer is dropped. */
|
|
130
|
+
closeCalls(calls: Iterable<DeferredCall>): void;
|
|
131
|
+
/** Whether any grid of this backend may hold an {@link AsyncValue}: what gates every unwrap. */
|
|
132
|
+
hasHolders(): boolean;
|
|
133
|
+
/** The open call with `id`; `undefined` once it has given its final answer, or for one unknown. */
|
|
134
|
+
getCall(id: number): DeferredCall | undefined;
|
|
135
|
+
/** Drains the port: every call whose latest moved since the last drain. */
|
|
136
|
+
takeMoved(): DeferredCall[];
|
|
137
|
+
/** Records that a settle told the model about a cell of `gridId` without a write. */
|
|
138
|
+
noteRepaint(gridId: string): void;
|
|
139
|
+
/** Marks `cells` (scoped) for the next pass to collect: a settled composite owner, or a dependent of a direct one. */
|
|
140
|
+
addSettleDirty(cells: readonly ISpatialMap.Entry[]): void;
|
|
141
|
+
/** The cells settles marked since the last pass; empties them. */
|
|
142
|
+
takeSettleDirty(): ISpatialMap.Entry[];
|
|
143
|
+
/** The grids with a repaint since the last pass, for the pass to vend; empties them. */
|
|
144
|
+
takeRepaintGrids(): string[];
|
|
145
|
+
/**
|
|
146
|
+
* Asks for a settle pass: at once on the leading edge, else when the window since the last one
|
|
147
|
+
* ends. Always a fresh task, so an executor settling synchronously cannot re-enter the pass that
|
|
148
|
+
* ran it.
|
|
149
|
+
*/
|
|
150
|
+
protected _requestSettle(): void;
|
|
151
|
+
/**
|
|
152
|
+
* The cell's value for an evaluation that deferred; for one that spilled, what its spill entry
|
|
153
|
+
* carries. From here on reads must look for holders.
|
|
154
|
+
*/
|
|
155
|
+
newHolder(value: Scalar | IRange, evaluation: DeferredEvaluation): AsyncValue<DeferredCall>;
|
|
156
|
+
defer(executor: IFormulaContext.DeferExecutor, payload: unknown, site?: object | null, volatile?: boolean): DeferredCall | null;
|
|
157
|
+
/**
|
|
158
|
+
* Ends the deferring evaluation in progress: its calls, by ordinal. Resets the scope's
|
|
159
|
+
* per-evaluation fields.
|
|
160
|
+
*/
|
|
161
|
+
endEvaluation(): DeferredEvaluation;
|
|
162
|
+
/**
|
|
163
|
+
* Ends an evaluation that will not stand — a probe of whether an answer can be shared — without
|
|
164
|
+
* keeping its calls: what it made never reaches an executor.
|
|
165
|
+
*/
|
|
166
|
+
abandonEvaluation(): void;
|
|
167
|
+
flush(): void;
|
|
168
|
+
/** Closes every open call and drops every batch and state: the backend is going away. */
|
|
169
|
+
close(): void;
|
|
170
|
+
/**
|
|
171
|
+
* Whether every site is served its call until the next {@link flush}: a settle pass, whose
|
|
172
|
+
* re-evaluations are answers landing, or an evaluation waiting on its own calls.
|
|
173
|
+
*/
|
|
174
|
+
setServing(serving: boolean): void;
|
|
175
|
+
/**
|
|
176
|
+
* Whether the batch the next {@link flush} hands out fetches past the workbook's cache, to the
|
|
177
|
+
* source (`CalculateOptions.external`, `cache: 'reload'`).
|
|
178
|
+
*/
|
|
179
|
+
setExternal(external: boolean): void;
|
|
180
|
+
protected _coversCell(cover: true | string | IRange.Coords, gridId: string | null, row: number, column: number): boolean;
|
|
181
|
+
protected _batchFor(executor: IFormulaContext.DeferExecutor): DeferredCall[];
|
|
182
|
+
/**
|
|
183
|
+
* The call this site of the evaluation in progress made last time: what its cell's holder names,
|
|
184
|
+
* or, for a formula held in no cell (a temporary one), the holder its node keeps.
|
|
185
|
+
*/
|
|
186
|
+
protected _siteCall(ordinal: number): DeferredCall | undefined;
|
|
187
|
+
}
|
|
188
|
+
export declare namespace DeferredCalls {
|
|
189
|
+
type Normalize = (value: unknown, options?: IFormulaContext.DeferredCall.ResolveOptions) => unknown;
|
|
190
|
+
/** What the backend lends an executor through its defer context; each omitted, a default. */
|
|
191
|
+
interface Services {
|
|
192
|
+
/** Makes rich values for the backend's workbook. Omitted, made outside any workbook. */
|
|
193
|
+
createRichData?: (type: string, data?: any) => IRichData;
|
|
194
|
+
/** Adds resources to the backend's workbook. Omitted, made outside any workbook. */
|
|
195
|
+
addResource?: (buffer: ArrayBuffer, options?: {
|
|
196
|
+
fetchedFrom?: string;
|
|
197
|
+
}) => object;
|
|
198
|
+
/** The workbook's fetch. Omitted, the global `fetch`. */
|
|
199
|
+
fetch?: (input: string, init?: RequestInit) => Promise<Response>;
|
|
200
|
+
/** The workbook's context with no cell. Omitted, asking for it throws. */
|
|
201
|
+
getFormulaContext?: () => IFormulaContext;
|
|
202
|
+
/** Reads delimited text as the workbook reads typed entry. Omitted, it rejects. */
|
|
203
|
+
parseText?: (text: string, options?: IFormulaContext.IDeferContext.ParseTextOptions) => Promise<Scalar[][]>;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
export declare const samePayload: (a: unknown, b: unknown) => boolean;
|
|
207
|
+
//# sourceMappingURL=DeferredCalls.d.ts.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Scalar, IRange, IRuntime, IFormulaContext } from '@sheetxl/primitives';
|
|
2
2
|
import { ISparseGrid, ISpatialMap, ISpatialMap3D, ISpatialQuery } from '../../collections';
|
|
3
|
+
import { IRichDataKind } from '../../richData';
|
|
3
4
|
import { ISymbolRegistry } from '../symbol';
|
|
4
5
|
import { IFormulaBlock, FormulaImager } from '../formula';
|
|
5
6
|
import { PrecedentSpatialValue, PrecedentKind, FormulaSpatialValue } from '../spatial';
|
|
@@ -9,6 +10,8 @@ import { ICalculation } from '../ICalculation';
|
|
|
9
10
|
import { NamedNodeInfo } from '../Types';
|
|
10
11
|
import { CalcNode } from './CalcNode';
|
|
11
12
|
import { CalcScope } from './CalcScope';
|
|
13
|
+
import { DeferredCalls } from './DeferredCalls';
|
|
14
|
+
import { WhatIfTable } from '../executor/_WhatIf';
|
|
12
15
|
/**
|
|
13
16
|
* Interface to allow grids to interact with calculation container.
|
|
14
17
|
*/
|
|
@@ -62,7 +65,18 @@ export interface IContextContainer {
|
|
|
62
65
|
*/
|
|
63
66
|
isGridless?: (sheetId: string) => boolean;
|
|
64
67
|
getScope(): CalcScope;
|
|
68
|
+
/**
|
|
69
|
+
* The calls the container's evaluations deferred (`IFormulaContext.defer`), with each
|
|
70
|
+
* executor's batch. Absent, or `null`, where nothing can answer later: a deferring function's
|
|
71
|
+
* return value is then its answer.
|
|
72
|
+
*/
|
|
73
|
+
getDeferred?(): DeferredCalls | null;
|
|
65
74
|
getRuntime(): IRuntime;
|
|
75
|
+
/**
|
|
76
|
+
* What rich values a formula makes are made for: the workbook's resources and strings.
|
|
77
|
+
* Absent, they are made outside any workbook.
|
|
78
|
+
*/
|
|
79
|
+
getRichDataContext?(): IRichDataKind.Context;
|
|
66
80
|
/**
|
|
67
81
|
* Returns the current datetime in milliseconds.
|
|
68
82
|
*/
|
|
@@ -125,36 +139,8 @@ export interface IContextContainer {
|
|
|
125
139
|
* Returns the grid for a given gridId. This is used to get other grids when calculating.
|
|
126
140
|
*/
|
|
127
141
|
getGrid(gridId: string): CalcGridBackend | null;
|
|
128
|
-
/**
|
|
129
|
-
* Runs a request against the engine's state, landing what it writes under the snapshot it
|
|
130
|
-
* names (DESIGN-CALC-SERVICE §13.13: the engine keeps its own history keyed by the model's
|
|
131
|
-
* ids).
|
|
132
|
-
*
|
|
133
|
-
* @param landingId The engine commit the request lands in: the model's commit for a root
|
|
134
|
-
* transaction, its savepoint for a nested one, or `undefined` for a request naming no snapshot
|
|
135
|
-
* (a caller with no model), which is applied as it is.
|
|
136
|
-
* @param action The request; its writes land together.
|
|
137
|
-
*/
|
|
138
142
|
landRequest<R>(landingId: string | undefined, action: () => R): R;
|
|
139
|
-
/**
|
|
140
|
-
* Sends a grid request through the service's channel (DESIGN-CALC-SERVICE §4, §7.2).
|
|
141
|
-
*
|
|
142
|
-
* @param gridId The grid the request is for.
|
|
143
|
-
* @param landingId The engine commit a request applied now lands in - see {@link landRequest}.
|
|
144
|
-
* @param request The request, as data.
|
|
145
|
-
*
|
|
146
|
-
* @remarks
|
|
147
|
-
* On a `Running` engine the request is applied at once and lands under `landingId`. While the
|
|
148
|
-
* engine is `Starting` it is held, in send order, and applied once the engine is up, behind the
|
|
149
|
-
* seeds; one whose snapshot the model has undone by then is dropped. On an `Off` engine nothing
|
|
150
|
-
* is recorded and the request resolves with nothing: a later start is seeded from the model.
|
|
151
|
-
*/
|
|
152
143
|
sendRequest(gridId: string, landingId: string | undefined, request: CalcRequest): Promise<ICalcGrid.Results>;
|
|
153
|
-
/**
|
|
154
|
-
* What images a grid's records for the model (DESIGN-CALC-SERVICE §8): the model's symbol
|
|
155
|
-
* map, the grid as home scope, its bounds, the reader's locale. The facade's, read where a
|
|
156
|
-
* response crosses to the model.
|
|
157
|
-
*/
|
|
158
144
|
getImager(gridId: string): FormulaImager;
|
|
159
145
|
/**
|
|
160
146
|
* Records the regions a request touched on the commit it is landing in, so a revert knows what
|
|
@@ -334,32 +320,7 @@ export interface IContextContainer {
|
|
|
334
320
|
* recover which is which from the coords.
|
|
335
321
|
*/
|
|
336
322
|
addDynamicPrecedent(calcNode: CalcNode, range: IRange.Coords | undefined, kind: PrecedentKind): void;
|
|
337
|
-
|
|
338
|
-
* Queues an action to run at the engine's next safe point, and schedules that point.
|
|
339
|
-
*
|
|
340
|
-
* @remarks
|
|
341
|
-
* Safe means two things, and they are why this exists rather than calling inline: the engine can
|
|
342
|
-
* actually do the work (the compiler is loaded, grids are populated), and the synchronous work
|
|
343
|
-
* that queued the action has finished — a `setInputs` run re-entrantly during an active commit is
|
|
344
|
-
* what produced the intermittent `OutOfOrderError` in the value builder.
|
|
345
|
-
*
|
|
346
|
-
* No guard is required. Queuing schedules its own drain, so an action queued here always runs:
|
|
347
|
-
* while `Starting` it is held for `start()`'s drain, inside a drain it joins the pass already
|
|
348
|
-
* running, and on a settled engine a microtask drain is posted for it.
|
|
349
|
-
*
|
|
350
|
-
* It did require one, and was called `whenStarting` for that reason — the queue was pumped only
|
|
351
|
-
* as a side effect of `start`/`ready`/`calculate`, so an action queued on a settled engine waited
|
|
352
|
-
* for a calculation that might never come and was dropped rather than delayed. Callers written
|
|
353
|
-
* against that rule (guarding on {@link isLoading} or a `Starting` status) remain correct; the
|
|
354
|
-
* guard is now redundant, not wrong.
|
|
355
|
-
*
|
|
356
|
-
* What a caller does owe: the action must be safe to run at an arbitrary microtask boundary, not
|
|
357
|
-
* only from inside a calculation.
|
|
358
|
-
*
|
|
359
|
-
* For the engine's own deferrals (wiring a name, recompiling its dependents), which stay
|
|
360
|
-
* backend-side. A grid request is never queued here: it goes through {@link sendRequest}, as
|
|
361
|
-
* data, so the channel can hold it (DESIGN-CALC-SERVICE §6.2).
|
|
362
|
-
*/
|
|
323
|
+
evaluateWhatIf(table: WhatIfTable): Scalar[][];
|
|
363
324
|
whenSafe(action: () => Promise<unknown>): void;
|
|
364
325
|
/**
|
|
365
326
|
* `true` while the engine is either `Starting` or inside a pending-action drain — at any drain
|
|
@@ -381,8 +342,11 @@ export interface IContextContainer {
|
|
|
381
342
|
* so dependents pick up the change. A recompile, not a dirty-mark, on purpose: a definition
|
|
382
343
|
* change requires dependents to re-derive their precedents (`setInputs`), which `markDirty` does
|
|
383
344
|
* not do. Where a re-evaluation suffices, use {@link invalidateNamed} instead.
|
|
345
|
+
*
|
|
346
|
+
* @param loaded The name's definition has not changed: its body is the one the file holds, only
|
|
347
|
+
* now compiled. A formula still as it was loaded re-derives its precedents and keeps its value.
|
|
384
348
|
*/
|
|
385
|
-
recompileNamed(nameId: string): void;
|
|
349
|
+
recompileNamed(nameId: string, loaded?: boolean): void;
|
|
386
350
|
/**
|
|
387
351
|
* Marks every formula that references `nameId` — directly or through another name — dirty, so it
|
|
388
352
|
* re-evaluates against the name's current definition.
|
|
@@ -3,48 +3,51 @@ import { Direction, RangeAxis, CellCoords, RangeCoords } from '@sheetxl/utils';
|
|
|
3
3
|
import { IGrid, ISparseGrid, Tuple, IListLike } from '../../collections';
|
|
4
4
|
import { ReferenceErrorIndex } from '../../primitives/ReferenceRange';
|
|
5
5
|
/**
|
|
6
|
-
* The
|
|
6
|
+
* The batch's cells: every result of a pass goes in here and most are read straight back out, so
|
|
7
|
+
* this is an open-addressed table on (row, col) rather than a `Map`.
|
|
7
8
|
*
|
|
8
9
|
* @remarks
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* writes into the same long runs. This grid serves those reads from the batch instead, so the
|
|
13
|
-
* executor commits every N results and the writes are few and contiguous.
|
|
14
|
-
*
|
|
15
|
-
* It is a SUBSTITUTION view: iteration walks the committed runs and swaps in the pending value
|
|
16
|
-
* where one exists. That only describes a cell the committed grid already holds; a result for a
|
|
17
|
-
* cell with no committed run under it (a formula's first result — new after load, entry, paste)
|
|
18
|
-
* cannot be shown this way, so such a push marks the overlay `uncovered` and the next ITERATION
|
|
19
|
-
* over the pending box commits first (`_coverFor`), which is exactly the old behavior; a point
|
|
20
|
-
* read is answered by the map and never commits. A steady-state recalc never trips it. Reads
|
|
21
|
-
* outside the batch's bounding box never touch the map.
|
|
22
|
-
*
|
|
23
|
-
* Operations that materialize or write go through a commit first and then the committed grid —
|
|
24
|
-
* the safe fallback for anything a substitution cannot answer (`getValues`, `copyTo`, `clone`,
|
|
25
|
-
* every write). `cloneEmpty` needs no values.
|
|
26
|
-
*
|
|
27
|
-
* It is also the error index of references built over it ({@link ReferenceErrorIndex}): the
|
|
28
|
-
* committed index plus a scan of the pending map, taken only while the batch holds an error.
|
|
29
|
-
*
|
|
30
|
-
* A second layer holds DEMAND results (DESIGN-CIRCULAR-CALC.md §4.6): what demand evaluation and
|
|
31
|
-
* the iteration sweeps compute ahead of the plan. It is not part of the batch — a commit leaves it
|
|
32
|
-
* alone — and an entry lives until the plan takes its node ({@link takeDemand}), which then pushes
|
|
33
|
-
* the same value to the batch. A sweep rewrites its members many times, and every rewrite is a map
|
|
34
|
-
* write, not a persistent one. Substitution still needs a committed run under the cell, so the
|
|
35
|
-
* first result for a cell with nothing under it is written through as well; every later one is
|
|
36
|
-
* substituted.
|
|
10
|
+
* Consecutive rows of a column take consecutive slots, which is the order a filled block runs in,
|
|
11
|
+
* so a chain probes once per cell. A commit empties it, so it is never much larger than a batch. A
|
|
12
|
+
* value of `undefined` means no entry; a blank is held as `null`.
|
|
37
13
|
*/
|
|
14
|
+
declare class PendingCells {
|
|
15
|
+
size: number;
|
|
16
|
+
private _keys;
|
|
17
|
+
private _values;
|
|
18
|
+
/** The occupied slots in the order they were filled. */
|
|
19
|
+
private _order;
|
|
20
|
+
private _mask;
|
|
21
|
+
/** The slot holding the cell, or the empty one it would take. The table is never full. */
|
|
22
|
+
private _slotOf;
|
|
23
|
+
get(row: number, col: number): Scalar | undefined;
|
|
24
|
+
/** @returns What the cell held, or `undefined` for a new one. */
|
|
25
|
+
set(row: number, col: number, value: Scalar): Scalar | undefined;
|
|
26
|
+
clear(): void;
|
|
27
|
+
/** Whether a cell added at or after position `from` of the fill order has nothing in `grid`. */
|
|
28
|
+
anyAbsentFrom(from: number, grid: ISparseGrid<Scalar>): boolean;
|
|
29
|
+
/** Whether an error is held inside the rectangle. */
|
|
30
|
+
hasErrorIn(rowStart: number, colStart: number, rowEnd: number, colEnd: number): boolean;
|
|
31
|
+
private _grow;
|
|
32
|
+
}
|
|
38
33
|
export declare class PendingOverlayGrid implements ISparseGrid<Scalar>, ReferenceErrorIndex {
|
|
39
34
|
protected readonly _inner: ISparseGrid<Scalar>;
|
|
40
35
|
protected readonly _committed: ReferenceErrorIndex;
|
|
41
36
|
protected readonly _flush: () => void;
|
|
42
37
|
protected readonly _isColumn: boolean;
|
|
43
|
-
protected _pending:
|
|
38
|
+
protected _pending: PendingCells;
|
|
39
|
+
/** Results pushed before anything read through here: counted, and not in {@link _pending}. */
|
|
40
|
+
protected _unobserved: number;
|
|
41
|
+
/** A read has landed in the pending box this pass, so results are held in {@link _pending}. */
|
|
42
|
+
observed: boolean;
|
|
44
43
|
/** Pending values that are errors — the pending scan in {@link hasErrorIn} runs only while > 0. */
|
|
45
44
|
protected _errors: number;
|
|
46
45
|
/** A pending cell has no committed run under it; substitution cannot show it. */
|
|
47
46
|
protected _uncovered: boolean;
|
|
47
|
+
/** The pending cells {@link _uncovered} has answered for. Only an iteration asks, so a push does not look. */
|
|
48
|
+
protected _coverChecked: number;
|
|
49
|
+
/** Where the copy {@link _substituteRun} last made starts. */
|
|
50
|
+
protected _substitutedFrom: number;
|
|
48
51
|
protected _rowStart: number;
|
|
49
52
|
protected _rowEnd: number;
|
|
50
53
|
protected _colStart: number;
|
|
@@ -89,6 +92,8 @@ export declare class PendingOverlayGrid implements ISparseGrid<Scalar>, Referenc
|
|
|
89
92
|
protected _growAny(row: number, col: number): void;
|
|
90
93
|
/** Rebuilds the union box from the two layers' own. */
|
|
91
94
|
protected _resetAny(): void;
|
|
95
|
+
/** From here on results are held in the map; what was pushed before it is committed now. */
|
|
96
|
+
observe(): void;
|
|
92
97
|
/** Does a rectangle overlap the bounding box of the cells either layer holds? */
|
|
93
98
|
intersects(rowStart: number, colStart: number, rowEnd: number, colEnd: number): boolean;
|
|
94
99
|
/** Does a rectangle overlap the pending (batch) cells' bounding box? */
|
|
@@ -104,7 +109,7 @@ export declare class PendingOverlayGrid implements ISparseGrid<Scalar>, Referenc
|
|
|
104
109
|
*/
|
|
105
110
|
protected _writeDemandIn(bounds: Partial<RangeCoords> | null | undefined): void;
|
|
106
111
|
/** The cell's value in either layer (they never share a cell), or `undefined`. */
|
|
107
|
-
protected _layered(
|
|
112
|
+
protected _layered(row: number, col: number): Scalar | undefined;
|
|
108
113
|
/**
|
|
109
114
|
* Before an ITERATION over `bounds`: commits when a pending cell substitution cannot show
|
|
110
115
|
* (`uncovered`) lies inside them. A point read never needs this — the map answers it — and
|
|
@@ -118,8 +123,15 @@ export declare class PendingOverlayGrid implements ISparseGrid<Scalar>, Referenc
|
|
|
118
123
|
protected _inBounds(row: number, col: number): boolean;
|
|
119
124
|
/** Nothing in either layer: every read is the committed grid's. */
|
|
120
125
|
protected _isEmpty(): boolean;
|
|
121
|
-
/**
|
|
122
|
-
|
|
126
|
+
/**
|
|
127
|
+
* The part of a run a read asked for with pending values swapped in, or the run itself when none
|
|
128
|
+
* fall inside that part. A copy starts at {@link _substitutedFrom}.
|
|
129
|
+
*
|
|
130
|
+
* @remarks
|
|
131
|
+
* A stored run can be a whole column, so a copy is never wider than the read: a short range over
|
|
132
|
+
* a long run costs what the range costs.
|
|
133
|
+
*/
|
|
134
|
+
protected _substituteRun(major: number, minorFrom: number, run: IListLike<Scalar>, readFrom: number, readTo: number): IListLike<Scalar>;
|
|
123
135
|
/** {@inheritDoc IGrid.getValueAt} */
|
|
124
136
|
getValueAt(row: number, column: number): Scalar;
|
|
125
137
|
/** {@inheritDoc ISparseGrid.getRuns} */
|
|
@@ -160,4 +172,11 @@ export declare class PendingOverlayGrid implements ISparseGrid<Scalar>, Referenc
|
|
|
160
172
|
protected _commitAll(): void;
|
|
161
173
|
get [Symbol.toStringTag](): string;
|
|
162
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* Whether `grid` reads an error inside the rectangle, by walking it. Shared with `WhatIfLayer`.
|
|
177
|
+
*
|
|
178
|
+
* @internal
|
|
179
|
+
*/
|
|
180
|
+
export declare function _scanHasError(grid: ISparseGrid<Scalar>, coords: IRange.Coords): boolean;
|
|
181
|
+
export {};
|
|
163
182
|
//# sourceMappingURL=_PendingOverlayGrid.d.ts.map
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { IRange, Scalar } from '@sheetxl/primitives';
|
|
2
|
+
import { Direction, RangeAxis, CellCoords, RangeCoords } from '@sheetxl/utils';
|
|
3
|
+
import { Tuple, IGrid, ISparseGrid, IListLike } from '../../collections';
|
|
4
|
+
import { ReferenceErrorIndex } from '../../primitives/ReferenceRange';
|
|
5
|
+
export declare class WhatIfLayer implements ISparseGrid<Scalar>, ReferenceErrorIndex {
|
|
6
|
+
protected readonly _inner: ISparseGrid<Scalar>;
|
|
7
|
+
protected readonly _committed: ReferenceErrorIndex;
|
|
8
|
+
protected readonly _isColumn: boolean;
|
|
9
|
+
protected _map: Map<number, Scalar>;
|
|
10
|
+
/** Substituted values that are errors — the scan in {@link hasErrorIn} runs only while > 0. */
|
|
11
|
+
protected _errors: number;
|
|
12
|
+
protected _rowStart: number;
|
|
13
|
+
protected _rowEnd: number;
|
|
14
|
+
protected _colStart: number;
|
|
15
|
+
protected _colEnd: number;
|
|
16
|
+
constructor(inner: ISparseGrid<Scalar>, committed: ReferenceErrorIndex);
|
|
17
|
+
get isWhatIfLayer(): true;
|
|
18
|
+
/** The committed grid. */
|
|
19
|
+
getInner(): ISparseGrid<Scalar>;
|
|
20
|
+
/** Substituted cells. */
|
|
21
|
+
get size(): number;
|
|
22
|
+
/** Substitutes `value` at the cell. A blank is kept as a blank (`null`), as an axis cell's is. */
|
|
23
|
+
set(row: number, col: number, value: Scalar): void;
|
|
24
|
+
/** Drops every substitution: the committed grid answers everything again. */
|
|
25
|
+
clear(): void;
|
|
26
|
+
/** Does a rectangle overlap the bounding box of the substituted cells? */
|
|
27
|
+
intersects(rowStart: number, colStart: number, rowEnd: number, colEnd: number): boolean;
|
|
28
|
+
/** {@inheritDoc ReferenceErrorIndex.hasErrorIn} */
|
|
29
|
+
hasErrorIn(coords: IRange.Coords): boolean;
|
|
30
|
+
/** Is the cell inside the substituted box? */
|
|
31
|
+
protected _inBounds(row: number, col: number): boolean;
|
|
32
|
+
/** The run with substituted values swapped in, or the run itself when none fall inside it. */
|
|
33
|
+
protected _substituteRun(major: number, minorFrom: number, run: IListLike<Scalar>): IListLike<Scalar>;
|
|
34
|
+
/** {@inheritDoc IGrid.getValueAt} */
|
|
35
|
+
getValueAt(row: number, column: number): Scalar;
|
|
36
|
+
/**
|
|
37
|
+
* {@inheritDoc ISparseGrid.getRuns}
|
|
38
|
+
*
|
|
39
|
+
* @remarks
|
|
40
|
+
* A substituted cell the committed grid does not hold at all (an input that was never written)
|
|
41
|
+
* is not shown by a run iteration: substitution only describes cells with a run under them, as
|
|
42
|
+
* the pending overlay's does. A point read answers it.
|
|
43
|
+
*/
|
|
44
|
+
getRuns(options?: ISparseGrid.RunIteratorOptions): ISparseGrid.RunIterableIterator<Scalar>;
|
|
45
|
+
/** {@inheritDoc IGrid.entries} */
|
|
46
|
+
entries(options?: IGrid.IteratorOptions): IGrid.EntryIterator<Scalar>;
|
|
47
|
+
/** {@inheritDoc IGrid.values} */
|
|
48
|
+
values(options?: IGrid.IteratorOptions): IGrid.ValueIterator;
|
|
49
|
+
/** {@inheritDoc IGrid.keys} */
|
|
50
|
+
keys(options?: IGrid.IteratorOptions): IGrid.KeyIterator;
|
|
51
|
+
/** {@inheritDoc IGrid.getValues} */
|
|
52
|
+
getValues(coords?: RangeCoords): Tuple.Region<Scalar> | null;
|
|
53
|
+
/** {@inheritDoc IGrid.copyTo} */
|
|
54
|
+
copyTo(destination: IGrid, topLeft: CellCoords, from: RangeCoords): void;
|
|
55
|
+
/** {@inheritDoc IGrid.getAxis} */
|
|
56
|
+
getAxis(): RangeAxis;
|
|
57
|
+
/** {@inheritDoc IGrid.getCount} */
|
|
58
|
+
getCount(): number;
|
|
59
|
+
/** {@inheritDoc IGrid.getCoords} */
|
|
60
|
+
getCoords(): RangeCoords | null;
|
|
61
|
+
/** {@inheritDoc IGrid.getMaxCoords} */
|
|
62
|
+
getMaxCoords(): RangeCoords | null;
|
|
63
|
+
/** {@inheritDoc IGrid.clone} */
|
|
64
|
+
clone(_cloneKey?: any): this;
|
|
65
|
+
/** {@inheritDoc IGrid.cloneEmpty} */
|
|
66
|
+
cloneEmpty(cloneKey?: any): this;
|
|
67
|
+
/** {@inheritDoc IGrid.setValues} */
|
|
68
|
+
setValues(_values: Tuple.GridTuple<Scalar>): this;
|
|
69
|
+
/** {@inheritDoc IGrid.setValueAt} */
|
|
70
|
+
setValueAt(_row: number, _column: number, _value: Scalar): void;
|
|
71
|
+
/** {@inheritDoc IGrid.delete} */
|
|
72
|
+
delete(_coords: RangeCoords | null): boolean;
|
|
73
|
+
/** {@inheritDoc IGrid.shift} */
|
|
74
|
+
shift(_coords: RangeCoords, _direction: Direction): boolean;
|
|
75
|
+
get [Symbol.toStringTag](): string;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=_WhatIfLayer.d.ts.map
|
|
@@ -1,16 +1,6 @@
|
|
|
1
1
|
import { IExternalBookCollection, ExternalScopeParts } from '../../externalBook';
|
|
2
2
|
import { ExternalBookCollection } from '../../externalBook/ExternalBookCollection';
|
|
3
3
|
import { SheetSymbolHandle } from './SheetSymbolProvider';
|
|
4
|
-
/**
|
|
5
|
-
* The stable-id prefix that marks a sheet symbol as living in an external book.
|
|
6
|
-
*
|
|
7
|
-
* @remarks
|
|
8
|
-
* `ext:<bookId>` is the book-scoped form (`[1]!Name`); `ext:<bookId>:<sheetIndex>` adds a sheet, and
|
|
9
|
-
* `ext:<bookId>:<first>:<last>` is a 3-D span across the book's sheets (`[1]Alpha:Data Sheet`). The
|
|
10
|
-
* prefix is the test every consumer uses — "is this scope external" is a `startsWith`, which is why
|
|
11
|
-
* external books needed no new {@link SymbolType} and no new branch in the twenty-odd places that
|
|
12
|
-
* ask the Sheet provider (DESIGN-EXTERNAL-LINKS §4B).
|
|
13
|
-
*/
|
|
14
4
|
export declare const EXTERNAL_ID_PREFIX = "ext:";
|
|
15
5
|
/** Is this stable id an external sheet or book? */
|
|
16
6
|
export declare const isExternalSymbolId: (stableId: string | null | undefined) => boolean;
|
|
@@ -41,39 +31,7 @@ export interface ExternalBookMinter {
|
|
|
41
31
|
/** Records `sheetName` on an existing book — answers the sheet's index. */
|
|
42
32
|
addSheet(bookId: string, sheetName: string): number;
|
|
43
33
|
}
|
|
44
|
-
/**
|
|
45
|
-
* Binds a sheet scope that names an external book, or `null` if it names none of this workbook's.
|
|
46
|
-
*
|
|
47
|
-
* @remarks
|
|
48
|
-
* Every spelling a book answers to binds to the SAME id, so the storage form (`[1]Sheet1`), the
|
|
49
|
-
* closed display form (`C:\dir\[Book.xlsx]Sheet1`) and the open one (`[Book.xlsx]Sheet1`) are three
|
|
50
|
-
* ways of writing one symbol — which is the invariant that lets a handle's `toString()` be fed
|
|
51
|
-
* straight back to `bind` (see {@link SheetSymbolProvider}).
|
|
52
|
-
*
|
|
53
|
-
* A position that does not exist (`[7]` of three books) answers `null`: the typed image is kept
|
|
54
|
-
* verbatim, the reference is `#REF!`, and the writer warns. A file name matching more than one book
|
|
55
|
-
* answers `null` too — the citation is genuinely ambiguous and `[n]` is the only spelling that is
|
|
56
|
-
* not — unless the typed directory picks one of them out.
|
|
57
|
-
*
|
|
58
|
-
* A 3-D span (`[1]Alpha:Data Sheet`) binds to one id with its sheets in the book's own order, so
|
|
59
|
-
* `[1]Data Sheet:Alpha` is the same symbol; both sheets must be listed.
|
|
60
|
-
*
|
|
61
|
-
* With a `minter`, a file name no book carries MINTS one (DESIGN-EXTERNAL-LINKS §4C): typing
|
|
62
|
-
* `'C:\dir\[Book.xlsx]Sheet1'!A1` creates the link, cache empty, exactly as Excel does when it cannot
|
|
63
|
-
* see the source. A sheet a known book does not list is recorded on it the same way. A `[n]` is never
|
|
64
|
-
* minted — a position is a citation of something that exists, and a directory that differs from a
|
|
65
|
-
* same-named book's is a different book, not a respelling of it. A span never mints either.
|
|
66
|
-
*/
|
|
67
34
|
export declare function bindExternalScope(books: ExternalBookCollection | null | undefined, displayName: string, minter?: ExternalBookMinter | null, withinBook?: string | null): string | null;
|
|
68
|
-
/**
|
|
69
|
-
* Resolves an `ext:` stable id to a sheet handle, or `null` if the book has since been removed.
|
|
70
|
-
*
|
|
71
|
-
* @remarks
|
|
72
|
-
* `toString()` is the projection DESIGN-EXTERNAL-LINKS §4B describes: `[n]Sheet1` by default — the
|
|
73
|
-
* form a formula is STORED as, read off the book's current position — and the book's display name
|
|
74
|
-
* when the caller asks for one. Both bind back. A span spells both sheets after one book prefix
|
|
75
|
-
* (`[1]Alpha:Data Sheet`), as Excel writes it.
|
|
76
|
-
*/
|
|
77
35
|
export declare function resolveExternalSymbol(books: ExternalBookCollection | null | undefined, stableId: string, display: boolean): SheetSymbolHandle | null;
|
|
78
36
|
/** The `AddOptions` a minted book starts from: the typed directory and file, the typed sheet. */
|
|
79
37
|
export declare function mintedBookOptions(parts: ExternalScopeParts): IExternalBookCollection.AddOptions;
|
|
@@ -19,12 +19,6 @@ export interface SheetCtx {
|
|
|
19
19
|
* (`'C:\dir\[Book.xlsx]Sheet1'`). A local sheet has one name and ignores this.
|
|
20
20
|
*/
|
|
21
21
|
display?: boolean;
|
|
22
|
-
/**
|
|
23
|
-
* Bind is AUTHORING: a scope that names an external book this workbook has none of may create
|
|
24
|
-
* one (`'C:\dir\[Book.xlsx]Sheet1'` typed into a cell is how a link is made — DESIGN-EXTERNAL-LINKS
|
|
25
|
-
* §5 step 13). Off by default, and off for an editing compile, so a keystroke mints nothing; a
|
|
26
|
-
* local sheet is never minted.
|
|
27
|
-
*/
|
|
28
22
|
mint?: boolean;
|
|
29
23
|
/**
|
|
30
24
|
* The formula being linked belongs to an external BOOK — a cached defined name's body — so a
|
|
@@ -1,17 +1,5 @@
|
|
|
1
1
|
import { IRange } from '@sheetxl/primitives';
|
|
2
2
|
import { ISymbolProvider, SymbolHandle } from './ISymbolRegistry';
|
|
3
|
-
/**
|
|
4
|
-
* Strict provider for sheet symbols.
|
|
5
|
-
*
|
|
6
|
-
* @remarks
|
|
7
|
-
* An EXTERNAL sheet is a sheet symbol too. A scope this workbook has no sheet for, and which names
|
|
8
|
-
* a book (`[1]Sheet1`, `C:\dir\[Book.xlsx]Sheet1`), falls through to `_getExternal` rather than to a
|
|
9
|
-
* `SymbolType` of its own — the twenty-odd consumers of a scope all ask this provider, and teaching
|
|
10
|
-
* one provider a second spelling touches none of them (DESIGN-EXTERNAL-LINKS §4B).
|
|
11
|
-
*
|
|
12
|
-
* So is a 3-D span (`Alpha:Gamma`, PLAN-3D-REFS §2.1): one symbol naming its two endpoint sheets,
|
|
13
|
-
* `<firstId>:<lastId>`, with the endpoints in tab order.
|
|
14
|
-
*/
|
|
15
3
|
export declare class SheetSymbolProvider implements ISymbolProvider {
|
|
16
4
|
private readonly _getId;
|
|
17
5
|
private readonly _getById;
|
|
@@ -16,15 +16,6 @@ export declare class SymbolRegistry implements ISymbolRegistry {
|
|
|
16
16
|
/** @inheritdoc ISymbolRegistry.resolve */
|
|
17
17
|
resolve(type: SymbolType, stableId: string, ctx?: Record<string, unknown>): SymbolHandle | null;
|
|
18
18
|
}
|
|
19
|
-
/**
|
|
20
|
-
* A registry that answers some symbol types from providers of its own and every other from a base.
|
|
21
|
-
*
|
|
22
|
-
* @remarks
|
|
23
|
-
* The model's symbol map (DESIGN-CALC-SERVICE §8) is this over the engine's: the types the engine
|
|
24
|
-
* keeps a copy of resolve through the model's live items here, while the rest resolve through the
|
|
25
|
-
* engine's providers. Registering a provider registers it on the base, so a provider that arrives
|
|
26
|
-
* late (the functions, once their module loads) is seen by both.
|
|
27
|
-
*/
|
|
28
19
|
export declare class OverlaidSymbolRegistry implements ISymbolRegistry {
|
|
29
20
|
private readonly _base;
|
|
30
21
|
private readonly _overrides;
|