@sheetxl/sdk 0.8.0-beta.1 → 0.8.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/THIRD-PARTY-NOTICES.md +1 -1
- package/browser/cjs/4f5eoQQfV-V7LO2_.cjs +1 -0
- package/browser/cjs/BEnEDC1m546-gzWS.cjs +1 -0
- package/browser/cjs/CwCUa4IzGNGissLL.cjs +1 -0
- package/browser/cjs/{a0Z-SXs_N71CtqYb.cjs → Dg3GaW0QWwnlqetX.cjs} +1 -1
- package/browser/cjs/KWQPie2u7AP69web.cjs +93 -0
- package/browser/cjs/index.cjs +2 -2
- package/browser/esm/{B0HS42a7lga1k1U_.mjs → BJ9hcZAGY8Tj5_9L.mjs} +1 -1
- package/browser/esm/C8vpA2ZBtZf6w4nq.mjs +394 -0
- package/browser/esm/DDojiE2-oycJ7qGi.mjs +20 -0
- package/browser/esm/DEPT7zmpiMdZ-_qC.mjs +70253 -0
- package/browser/esm/DOvCi3lf49To36WP.mjs +8 -0
- package/browser/esm/{uyWBMSIxMlt8n5Z3.mjs → Dq3sc4B_HQHBrT5N.mjs} +2 -2
- package/browser/esm/index.mjs +871 -696
- package/browser/esm/{DlPMeIyxT9tG_WDk.mjs → trwZArJQQq7K9kL7.mjs} +2 -2
- package/licenses/dependencies.txt +204 -204
- package/node/esm/CGWsQOMWdnDeF4dX.mjs +8 -0
- package/node/esm/{Cku7XiUvw1xrRasi.mjs → CL9MI-b6D9BmtVXW.mjs} +1 -1
- package/node/esm/CressiwiIhxCVp1v.mjs +28 -0
- package/node/esm/O2cOO3xIynWUgOWe.mjs +403 -0
- package/node/esm/index.mjs +52356 -37345
- package/package.json +6 -7
- package/resources/locales/de/model.msg.json +45 -9
- package/resources/locales/en/model.msg.json +42 -9
- package/types/scripting-api.json +7093 -0
- package/types/scripting-enums.json +54 -8
- package/types/scripting.d.ts +7006 -1202
- package/types/src/anchored/AbstractAnchored.d.ts +18 -8
- package/types/src/anchored/AnchoredMap.d.ts +2 -0
- package/types/src/anchored/IAnchoredMap.d.ts +52 -4
- package/types/src/autoFill/AutoFill.d.ts +316 -32
- package/types/src/autoFill/IAutoFill.d.ts +232 -15
- package/types/src/border/{IBorder.d.ts → IBorders.d.ts} +41 -40
- package/types/src/border/index.d.ts +1 -1
- package/types/src/calculation/Calculation.d.ts +740 -35
- package/types/src/calculation/ExternalBookBindings.d.ts +118 -0
- package/types/src/calculation/FormulaText.d.ts +74 -0
- package/types/src/calculation/ICalculation.d.ts +318 -81
- package/types/src/calculation/INamedFormulasCollection.d.ts +5 -8
- package/types/src/calculation/NamedFormulaCollection.d.ts +139 -107
- package/types/src/calculation/NamedLambdaFunction.d.ts +28 -0
- package/types/src/calculation/TokenType.d.ts +9 -0
- package/types/src/calculation/Types.d.ts +83 -2
- package/types/src/calculation/_CloneBoundary.d.ts +80 -0
- package/types/src/calculation/compiler/ASTTypes.d.ts +58 -0
- package/types/src/calculation/compiler/CompilerUtils.d.ts +134 -12
- package/types/src/calculation/compiler/FormulaCompiler.d.ts +29 -4
- package/types/src/calculation/compiler/FormulaParser.d.ts +1 -2
- package/types/src/calculation/compiler/LiteTransform.d.ts +17 -0
- package/types/src/calculation/compiler/ParserUtils.d.ts +26 -1
- package/types/src/calculation/compiler/SRParser.d.ts +2 -1
- package/types/src/calculation/compiler/Types.d.ts +79 -9
- package/types/src/calculation/executor/CalcExecutor.d.ts +312 -33
- package/types/src/calculation/executor/CalcExecutorUtils.d.ts +43 -2
- package/types/src/calculation/executor/CircularReference.d.ts +2 -0
- package/types/src/calculation/formula/Formula.d.ts +58 -21
- package/types/src/calculation/formula/FormulaBlock.d.ts +124 -21
- package/types/src/calculation/formula/FormulaRecordView.d.ts +79 -0
- package/types/src/calculation/formula/IFormulaBlock.d.ts +261 -67
- package/types/src/calculation/formula/LambdaValue.d.ts +15 -16
- package/types/src/calculation/formula/LazyValue.d.ts +96 -0
- package/types/src/calculation/formula/TokenUtils.d.ts +25 -1
- package/types/src/calculation/formula/index.d.ts +1 -0
- package/types/src/calculation/functions/FunctionDeclarations.d.ts +31 -0
- package/types/src/calculation/functions/initializeFunctions.d.ts +15 -2
- package/types/src/calculation/grid/CalcGrid.d.ts +384 -158
- package/types/src/calculation/grid/CalcGridBackend.d.ts +450 -0
- package/types/src/calculation/grid/CalcGridProxy.d.ts +133 -0
- package/types/src/calculation/grid/CalcGridUtils.d.ts +62 -12
- package/types/src/calculation/grid/FormulaEntry.d.ts +129 -0
- package/types/src/calculation/grid/FormulaHost.d.ts +236 -0
- package/types/src/calculation/grid/ICalcGrid.d.ts +456 -143
- package/types/src/calculation/grid/_CalcRequest.d.ts +272 -0
- package/types/src/calculation/grid/index.d.ts +4 -0
- package/types/src/calculation/index.d.ts +2 -0
- package/types/src/calculation/spatial/ContentfulSpatialValue.d.ts +6 -2
- package/types/src/calculation/spatial/FormulaSpatialValue.d.ts +339 -11
- package/types/src/calculation/spatial/SpillEntry.d.ts +20 -5
- package/types/src/calculation/spatial/TouchedWindows.d.ts +86 -0
- package/types/src/calculation/spatial/index.d.ts +1 -0
- package/types/src/calculation/state/CalcInputs.d.ts +41 -0
- package/types/src/calculation/state/CalcNode.d.ts +141 -30
- package/types/src/calculation/state/CalcScope.d.ts +37 -0
- package/types/src/calculation/state/CalcState.d.ts +22 -1
- package/types/src/calculation/state/CalculationContext.d.ts +36 -2
- package/types/src/calculation/state/IContextContainer.d.ts +129 -27
- package/types/src/calculation/state/_PendingOverlayGrid.d.ts +163 -0
- package/types/src/calculation/state/_ReadObservedGrid.d.ts +74 -8
- package/types/src/calculation/state/index.d.ts +1 -0
- package/types/src/calculation/symbol/ExternalSheetSymbols.d.ts +80 -0
- package/types/src/calculation/symbol/ISymbolRegistry.d.ts +23 -0
- package/types/src/calculation/symbol/IndirectSymbolProvider.d.ts +16 -2
- package/types/src/calculation/symbol/SheetSymbolProvider.d.ts +63 -3
- package/types/src/calculation/symbol/SymbolRegistry.d.ts +20 -0
- package/types/src/calculation/symbol/index.d.ts +3 -2
- package/types/src/cell/ICell.d.ts +78 -23
- package/types/src/cell/ICellProtection.d.ts +50 -10
- package/types/src/cellRange/ICellRange.d.ts +329 -72
- package/types/src/cellRange/ICellRanges.d.ts +9 -7
- package/types/src/chart/Chart.d.ts +72 -2
- package/types/src/chart/ChartCollection.d.ts +26 -0
- package/types/src/chart/IChart.d.ts +162 -9
- package/types/src/chart/IChartCollection.d.ts +25 -0
- package/types/src/chart/_ChartXml.d.ts +70 -0
- package/types/src/chart/index.d.ts +1 -3
- package/types/src/collections/ArraysGrid.d.ts +1 -1
- package/types/src/collections/IGrid.d.ts +1 -1
- package/types/src/collections/ISparseGrid.d.ts +9 -0
- package/types/src/collections/ISpatialMap.d.ts +59 -21
- package/types/src/collections/ImmutableList.d.ts +28 -0
- package/types/src/collections/MixedTypedArrayList.d.ts +168 -108
- package/types/src/collections/OverlappingRangeIterator.d.ts +13 -17
- package/types/src/collections/RepeatingList.d.ts +7 -0
- package/types/src/collections/ScalarGrid.d.ts +50 -0
- package/types/src/collections/SparseGrid.d.ts +1 -1
- package/types/src/collections/SpatialMap.d.ts +13 -21
- package/types/src/collections/Tuple.d.ts +128 -16
- package/types/src/collections/_GridUtils.d.ts +19 -6
- package/types/src/collections/_RangeSweep.d.ts +97 -0
- package/types/src/collections/_SpatialUtils.d.ts +20 -2
- package/types/src/collections/index.d.ts +1 -0
- package/types/src/comment/Comment.d.ts +159 -0
- package/types/src/comment/CommentCollection.d.ts +40 -0
- package/types/src/comment/IComment.d.ts +319 -48
- package/types/src/comment/ICommentCollection.d.ts +90 -0
- package/types/src/comment/_CommentUtils.d.ts +28 -0
- package/types/src/comment/index.d.ts +1 -0
- package/types/src/condition/AnchoredConditional.d.ts +76 -17
- package/types/src/condition/BuiltInOperators/AbstractOperator.d.ts +8 -7
- package/types/src/condition/BuiltInOperators/EqualToOperator.d.ts +2 -1
- package/types/src/condition/BuiltInOperators/ExpressionOperator.d.ts +3 -6
- package/types/src/condition/BuiltInOperators/InSetOperator.d.ts +1 -1
- package/types/src/condition/BuiltinSelectors/BaseSelector.d.ts +7 -0
- package/types/src/condition/BuiltinSelectors/ListSelector.d.ts +9 -0
- package/types/src/condition/Condition.d.ts +16 -0
- package/types/src/condition/ICondition.d.ts +86 -33
- package/types/src/condition/_ConditionFormula.d.ts +152 -0
- package/types/src/condition/_ConditionUtils.d.ts +73 -10
- package/types/src/conditionalFormat/ConditionalFormat.d.ts +21 -10
- package/types/src/conditionalFormat/ConditionalFormatCollection.d.ts +19 -8
- package/types/src/conditionalFormat/IConditionalFormat.d.ts +5 -3
- package/types/src/conditionalFormat/IConditionalFormatCollection.d.ts +2 -0
- package/types/src/dataValidation/DataValidation.d.ts +50 -3
- package/types/src/dataValidation/DataValidationCollection.d.ts +20 -9
- package/types/src/dataValidation/IDataValidation.d.ts +119 -30
- package/types/src/dataValidation/IDataValidationCollection.d.ts +10 -2
- package/types/src/date/DateUtils.d.ts +20 -0
- package/types/src/date/_DateUtils.d.ts +91 -7
- package/types/src/externalBook/ExternalBookCollection.d.ts +145 -12
- package/types/src/externalBook/ExternalBookName.d.ts +96 -0
- package/types/src/externalBook/IExternalBook.d.ts +170 -18
- package/types/src/externalBook/IExternalBookCollection.d.ts +79 -7
- package/types/src/externalBook/index.d.ts +1 -0
- package/types/src/fill/IStroke.d.ts +1 -1
- package/types/src/filter/IFilter.d.ts +29 -4
- package/types/src/font/IFont.d.ts +17 -0
- package/types/src/history/IHistory.d.ts +3 -2
- package/types/src/i18n/LanguagePack.d.ts +12 -4
- package/types/src/index.d.ts +3 -0
- package/types/src/io/AbstractBackingStore.d.ts +24 -1
- package/types/src/io/ArrayBackingStore.d.ts +1 -1
- package/types/src/io/EmbeddedPart.d.ts +20 -0
- package/types/src/io/IEmbeddedPart.d.ts +63 -0
- package/types/src/io/IWorkbookIO.d.ts +185 -18
- package/types/src/io/WorkbookIO.d.ts +9 -0
- package/types/src/io/WorkbookOrigin.d.ts +20 -11
- package/types/src/io/WorkbookOriginProvider.d.ts +46 -0
- package/types/src/io/_XmlFragment.d.ts +49 -0
- package/types/src/io/index.d.ts +1 -0
- package/types/src/lib/file/file.browser.d.ts +19 -5
- package/types/src/lib/file/file.node.d.ts +5 -0
- package/types/src/lib/utils/_Utils.d.ts +11 -0
- package/types/src/lib/utils/utils.browser.d.ts +9 -3
- package/types/src/license/license-key.d.ts +27 -0
- package/types/src/listener/IListener.d.ts +12 -7
- package/types/src/listener/ListenerEmitter.d.ts +46 -5
- package/types/src/model/AbstractModel.d.ts +14 -5
- package/types/src/movable/Control.d.ts +57 -0
- package/types/src/movable/IControl.d.ts +84 -0
- package/types/src/movable/IMovable.d.ts +23 -1
- package/types/src/movable/IMovableCollection.d.ts +2 -0
- package/types/src/movable/Movable.d.ts +4 -6
- package/types/src/movable/MovableCollection.d.ts +7 -7
- package/types/src/movable/index.d.ts +4 -0
- package/types/src/named/AbstractNamed.d.ts +1 -1
- package/types/src/named/INamed.d.ts +4 -1
- package/types/src/named/INamedCollection.d.ts +26 -0
- package/types/src/named/NamedCollection.d.ts +16 -15
- package/types/src/numFmt/BuiltInFormats.d.ts +15 -7
- package/types/src/numFmt/IFormatEngine.d.ts +2 -0
- package/types/src/numFmt/NumfmtFormatEngine.d.ts +2 -0
- package/types/src/person/IPerson.d.ts +99 -0
- package/types/src/person/IPersonCollection.d.ts +51 -0
- package/types/src/person/Person.d.ts +32 -0
- package/types/src/person/PersonCollection.d.ts +49 -0
- package/types/src/person/index.d.ts +3 -0
- package/types/src/picture/IPicture.d.ts +2 -0
- package/types/src/picture/Picture.d.ts +2 -0
- package/types/src/pivot/IPivotTable.d.ts +107 -0
- package/types/src/pivot/IPivotTableCollection.d.ts +25 -0
- package/types/src/pivot/PivotTable.d.ts +57 -0
- package/types/src/pivot/PivotTableCollection.d.ts +25 -0
- package/types/src/pivot/index.d.ts +6 -0
- package/types/src/primitives/CompositeRangeStats.d.ts +2 -0
- package/types/src/primitives/Criteria.d.ts +1 -1
- package/types/src/primitives/LambdaBrand.d.ts +21 -0
- package/types/src/primitives/PrimitiveUtils.d.ts +56 -19
- package/types/src/primitives/Range.d.ts +102 -24
- package/types/src/primitives/RangeStats.d.ts +24 -1
- package/types/src/primitives/ReferenceRange.d.ts +42 -0
- package/types/src/primitives/Runtime.d.ts +15 -2
- package/types/src/primitives/stats/FrequencyStats.d.ts +9 -0
- package/types/src/primitives/stats/LookupIndex.d.ts +46 -0
- package/types/src/primitives/stats/SortedNumbers.d.ts +2 -0
- package/types/src/primitives/stats/index.d.ts +1 -0
- package/types/src/print/IPrint.d.ts +0 -22
- package/types/src/protectedRange/IProtectedRange.d.ts +4 -0
- package/types/src/protectedRange/IProtectedRangeCollection.d.ts +2 -0
- package/types/src/protectedRange/ProtectedRange.d.ts +1 -4
- package/types/src/protectedRange/ProtectedRangeCollection.d.ts +19 -8
- package/types/src/protection/DefaultProtection.d.ts +12 -1
- package/types/src/protection/IProtection.d.ts +36 -2
- package/types/src/reference/ReferenceUtils.d.ts +80 -0
- package/types/src/reference/index.d.ts +2 -0
- package/types/src/resource/IResource.d.ts +21 -1
- package/types/src/resource/IResourceCollection.d.ts +9 -1
- package/types/src/resource/ResourceCollection.d.ts +6 -6
- package/types/src/scripting/FunctionCollection.d.ts +41 -11
- package/types/src/scripting/IFunctionCollection.d.ts +41 -0
- package/types/src/scripting/IModule.d.ts +25 -0
- package/types/src/scripting/IModuleCollection.d.ts +17 -0
- package/types/src/scripting/IScript.d.ts +18 -0
- package/types/src/scripting/Module.d.ts +34 -6
- package/types/src/scripting/ModuleCollection.d.ts +17 -12
- package/types/src/scripting/Runtime.d.ts +15 -0
- package/types/src/scripting/Scripts.d.ts +2 -0
- package/types/src/scripting/TypedFunction.d.ts +151 -18
- package/types/src/scripting/_FunctionIndex.d.ts +5 -0
- package/types/src/scripting/_ModuleUtils.d.ts +11 -1
- package/types/src/scripting/_ScriptUtils.d.ts +3 -0
- package/types/src/scripting/declarations.browser.d.ts +10 -0
- package/types/src/scripting/declarations.d.ts +49 -0
- package/types/src/scripting/declarations.node.d.ts +9 -0
- package/types/src/scripting/index.d.ts +3 -0
- package/types/src/selection/IRangeSelection.d.ts +9 -4
- package/types/src/selection/RangeSelection.d.ts +2 -0
- package/types/src/shape/IShape.d.ts +41 -3
- package/types/src/shape/Shape.d.ts +10 -0
- package/types/src/shape/_ShapeXml.d.ts +28 -0
- package/types/src/sheet/CellRegion.d.ts +6 -0
- package/types/src/sheet/ICellContainerOptions.d.ts +50 -0
- package/types/src/sheet/ISheet.d.ts +224 -41
- package/types/src/sheet/ISheetCollection.d.ts +2 -5
- package/types/src/sheet/NamedCellRange.d.ts +16 -7
- package/types/src/sheet/Sheet.d.ts +749 -114
- package/types/src/sheet/SheetCell.d.ts +81 -21
- package/types/src/sheet/SheetCollection.d.ts +19 -8
- package/types/src/sheet/SheetRange.d.ts +62 -14
- package/types/src/sheet/SheetRanges.d.ts +4 -6
- package/types/src/sheet/_CellBuffer.d.ts +214 -0
- package/types/src/sheet/_InvalidSheetRange.d.ts +5 -5
- package/types/src/sheet/_ListenerAnchor.d.ts +104 -0
- package/types/src/sheet/_RangeStateSweep.d.ts +16 -0
- package/types/src/sheet/_ScalarListFactory.d.ts +61 -0
- package/types/src/sheet/_SheetAutoFillUtils.d.ts +74 -0
- package/types/src/sheet/_SheetAutoFitUtils.d.ts +2 -2
- package/types/src/sheet/_SheetEvents.d.ts +43 -0
- package/types/src/sheet/_SheetFilterUtils.d.ts +32 -1
- package/types/src/sheet/_SheetIntents.d.ts +250 -0
- package/types/src/sheet/_SheetMutations.d.ts +179 -59
- package/types/src/sheet/_SheetStateReader.d.ts +16 -10
- package/types/src/sheet/_SheetStateTypes.d.ts +57 -73
- package/types/src/sheet/_SheetUtils.d.ts +2 -18
- package/types/src/sheet/_WatchAnchor.d.ts +93 -0
- package/types/src/sheet/spatial/HeldFormulaEntry.d.ts +36 -0
- package/types/src/sheet/spatial/index.d.ts +1 -0
- package/types/src/sheet/style/SheetCellStyle.d.ts +91 -64
- package/types/src/sheet/style/SheetDirectStyle.d.ts +16 -5
- package/types/src/sheet/style/_Resolvers.d.ts +5 -3
- package/types/src/sheet/style/_StyleUtils.d.ts +37 -7
- package/types/src/sheetHeader/ISheetHeader.d.ts +2 -0
- package/types/src/sheetHeader/SheetHeader.d.ts +14 -0
- package/types/src/sheetProtection/ISheetProtection.d.ts +41 -7
- package/types/src/sheetProtection/SheetProtection.d.ts +12 -0
- package/types/src/sheetView/ISheetView.d.ts +45 -1
- package/types/src/sheetView/SheetView.d.ts +11 -0
- package/types/src/slicer/ISlicer.d.ts +2 -0
- package/types/src/slicer/Slicer.d.ts +2 -0
- package/types/src/sort/ISort.d.ts +2 -0
- package/types/src/string/IStringCollection.d.ts +5 -0
- package/types/src/string/StringCollection.d.ts +6 -6
- package/types/src/style/INamedStyleCollection.d.ts +72 -0
- package/types/src/style/IStyle.d.ts +30 -10
- package/types/src/style/IStyleCollection.d.ts +63 -42
- package/types/src/style/ITableStyleCollection.d.ts +89 -0
- package/types/src/style/NamedStyleCollection.d.ts +39 -0
- package/types/src/style/StyleCollection.d.ts +41 -5
- package/types/src/style/TableStyleCollection.d.ts +49 -0
- package/types/src/style/_BuiltInStyleDefs.d.ts +3 -3
- package/types/src/style/index.d.ts +4 -0
- package/types/src/table/AnchoredTable.d.ts +644 -68
- package/types/src/table/AutoTable.d.ts +5 -5
- package/types/src/table/ITable.d.ts +228 -30
- package/types/src/table/ITableCollection.d.ts +2 -0
- package/types/src/table/TableCollection.d.ts +19 -8
- package/types/src/table/_FilterField.d.ts +7 -5
- package/types/src/table/_NamedTable.d.ts +17 -1
- package/types/src/table/_NamedTableSource.d.ts +1 -0
- package/types/src/table/_SortField.d.ts +2 -0
- package/types/src/table/_TableColumn.d.ts +13 -2
- package/types/src/table/_TableMessages.d.ts +1 -0
- package/types/src/table/_TableUtils.d.ts +40 -0
- package/types/src/text/Bullet.d.ts +4 -0
- package/types/src/text/ITextFrame.d.ts +25 -1
- package/types/src/text/TextBoxAlignment.d.ts +15 -6
- package/types/src/text/TextFrame.d.ts +4 -0
- package/types/src/text/TextLine.d.ts +4 -0
- package/types/src/text/TextParagraph.d.ts +4 -0
- package/types/src/text/TextRun.d.ts +9 -0
- package/types/src/text/TextStacked.d.ts +83 -0
- package/types/src/text/index.d.ts +1 -0
- package/types/src/theme/ITheme.d.ts +2 -0
- package/types/src/theme/IThemeCollection.d.ts +2 -0
- package/types/src/theme/ThemeCollection.d.ts +8 -7
- package/types/src/transaction/ITransaction.d.ts +238 -36
- package/types/src/transaction/Transaction.d.ts +99 -11
- package/types/src/type/AbstractCollection.d.ts +101 -0
- package/types/src/type/ICollection.d.ts +117 -0
- package/types/src/type/ITypes.d.ts +9 -7
- package/types/src/type/index.d.ts +1 -0
- package/types/src/utils/_CSSUtils.d.ts +3 -3
- package/types/src/workbook/IWorkbook.d.ts +171 -40
- package/types/src/workbook/Workbook.d.ts +103 -7
- package/types/src/workbook/_WorkbookIntents.d.ts +36 -0
- package/types/src/workbookProtection/IWorkbookProtection.d.ts +7 -0
- package/types/src/workbookProtection/WorkbookProtection.d.ts +3 -0
- package/types/src/workbookView/IWorkbookView.d.ts +12 -0
- package/types/src/workbookView/WorkbookView.d.ts +5 -0
- package/browser/cjs/BatsV2UUraVDCRXm.cjs +0 -57
- package/browser/cjs/CUz53T65cRGQRgvv.cjs +0 -33
- package/browser/cjs/DU0kYUtdFa3jK-im.cjs +0 -1
- package/browser/cjs/Dv4yIPLV98M5zLHa.cjs +0 -1
- package/browser/esm/6JKSOvc5czaQB2Bj.mjs +0 -109
- package/browser/esm/BtuJ9AGzeURtAsGo.mjs +0 -51241
- package/browser/esm/DGU6sM25u0EWCKl1.mjs +0 -824
- package/browser/esm/f2G3QRgEbvFJcoa2.mjs +0 -4436
- package/node/esm/-pxdn3M3tc6PLHs7.mjs +0 -114
- package/node/esm/0n5bslM9jhO1JnI2.mjs +0 -843
- package/types/src/cellRange/_GraphNode.d.ts +0 -38
- package/types/src/dataValidation/_Utils.d.ts +0 -10
- package/types/src/sheet/listener/RangesListener.d.ts +0 -32
- package/types/src/sheet/listener/RangesListenerEntry.d.ts +0 -19
- package/types/src/sheet/listener/index.d.ts +0 -3
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { IRange, Scalar } from '@sheetxl/primitives';
|
|
2
|
+
import { Direction, RangeAxis, CellCoords, RangeCoords } from '@sheetxl/utils';
|
|
3
|
+
import { IGrid, ISparseGrid, Tuple, IListLike } from '../../collections';
|
|
4
|
+
import { ReferenceErrorIndex } from '../../primitives/ReferenceRange';
|
|
5
|
+
/**
|
|
6
|
+
* The calc grid's committed values with the pass's UNCOMMITTED results laid over them.
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* The executor batches results and commits them in one write (`writeCalcs`); a reference built
|
|
10
|
+
* during the pass used to force that commit whenever it could see a batched cell. On a row-chained
|
|
11
|
+
* sheet (`SUM($K$51:K#)` on every row) that was a commit per row — thousands of small persistent
|
|
12
|
+
* writes into the same long runs. This grid serves those reads from the batch instead, so the
|
|
13
|
+
* executor commits every N results and the writes are few and contiguous.
|
|
14
|
+
*
|
|
15
|
+
* It is a SUBSTITUTION view: iteration walks the committed runs and swaps in the pending value
|
|
16
|
+
* where one exists. That only describes a cell the committed grid already holds; a result for a
|
|
17
|
+
* cell with no committed run under it (a formula's first result — new after load, entry, paste)
|
|
18
|
+
* cannot be shown this way, so such a push marks the overlay `uncovered` and the next ITERATION
|
|
19
|
+
* over the pending box commits first (`_coverFor`), which is exactly the old behavior; a point
|
|
20
|
+
* read is answered by the map and never commits. A steady-state recalc never trips it. Reads
|
|
21
|
+
* outside the batch's bounding box never touch the map.
|
|
22
|
+
*
|
|
23
|
+
* Operations that materialize or write go through a commit first and then the committed grid —
|
|
24
|
+
* the safe fallback for anything a substitution cannot answer (`getValues`, `copyTo`, `clone`,
|
|
25
|
+
* every write). `cloneEmpty` needs no values.
|
|
26
|
+
*
|
|
27
|
+
* It is also the error index of references built over it ({@link ReferenceErrorIndex}): the
|
|
28
|
+
* committed index plus a scan of the pending map, taken only while the batch holds an error.
|
|
29
|
+
*
|
|
30
|
+
* A second layer holds DEMAND results (DESIGN-CIRCULAR-CALC.md §4.6): what demand evaluation and
|
|
31
|
+
* the iteration sweeps compute ahead of the plan. It is not part of the batch — a commit leaves it
|
|
32
|
+
* alone — and an entry lives until the plan takes its node ({@link takeDemand}), which then pushes
|
|
33
|
+
* the same value to the batch. A sweep rewrites its members many times, and every rewrite is a map
|
|
34
|
+
* write, not a persistent one. Substitution still needs a committed run under the cell, so the
|
|
35
|
+
* first result for a cell with nothing under it is written through as well; every later one is
|
|
36
|
+
* substituted.
|
|
37
|
+
*/
|
|
38
|
+
export declare class PendingOverlayGrid implements ISparseGrid<Scalar>, ReferenceErrorIndex {
|
|
39
|
+
protected readonly _inner: ISparseGrid<Scalar>;
|
|
40
|
+
protected readonly _committed: ReferenceErrorIndex;
|
|
41
|
+
protected readonly _flush: () => void;
|
|
42
|
+
protected readonly _isColumn: boolean;
|
|
43
|
+
protected _pending: Map<number, Scalar>;
|
|
44
|
+
/** Pending values that are errors — the pending scan in {@link hasErrorIn} runs only while > 0. */
|
|
45
|
+
protected _errors: number;
|
|
46
|
+
/** A pending cell has no committed run under it; substitution cannot show it. */
|
|
47
|
+
protected _uncovered: boolean;
|
|
48
|
+
protected _rowStart: number;
|
|
49
|
+
protected _rowEnd: number;
|
|
50
|
+
protected _colStart: number;
|
|
51
|
+
protected _colEnd: number;
|
|
52
|
+
/** Demand results the plan has not taken yet; a commit leaves them. */
|
|
53
|
+
protected _demand: Map<number, Scalar>;
|
|
54
|
+
/** Demand values that are errors, as {@link _errors} is for the batch. */
|
|
55
|
+
protected _demandErrors: number;
|
|
56
|
+
protected _demandRowStart: number;
|
|
57
|
+
protected _demandRowEnd: number;
|
|
58
|
+
protected _demandColStart: number;
|
|
59
|
+
protected _demandColEnd: number;
|
|
60
|
+
protected _anyRowStart: number;
|
|
61
|
+
protected _anyRowEnd: number;
|
|
62
|
+
protected _anyColStart: number;
|
|
63
|
+
protected _anyColEnd: number;
|
|
64
|
+
constructor(inner: ISparseGrid<Scalar>, committed: ReferenceErrorIndex, flush: () => void);
|
|
65
|
+
get isPendingOverlay(): true;
|
|
66
|
+
/** The committed grid. */
|
|
67
|
+
getInner(): ISparseGrid<Scalar>;
|
|
68
|
+
/** Pending results. */
|
|
69
|
+
get size(): number;
|
|
70
|
+
/** Demand results the plan has not taken yet. */
|
|
71
|
+
get demandSize(): number;
|
|
72
|
+
/** Records one result. The executor's batch and this map are emptied together by a commit. */
|
|
73
|
+
push(row: number, col: number, value: Scalar): void;
|
|
74
|
+
/**
|
|
75
|
+
* Records one demand result, replacing the cell's last. A cell with nothing committed under it
|
|
76
|
+
* gets the value written through as well, so its later results can be substituted.
|
|
77
|
+
*/
|
|
78
|
+
pushDemand(row: number, col: number, value: Scalar): void;
|
|
79
|
+
/** The plan has taken the cell's node: its result goes on as an ordinary one, or is written already. */
|
|
80
|
+
takeDemand(row: number, col: number): void;
|
|
81
|
+
/**
|
|
82
|
+
* Writes every demand result the plan did not take into the committed grid and empties the
|
|
83
|
+
* layer, so nothing computed is lost with the overlay.
|
|
84
|
+
*/
|
|
85
|
+
commitDemand(): void;
|
|
86
|
+
/** After a commit: the committed grid now holds everything that was pending. Demand results stay. */
|
|
87
|
+
reset(): void;
|
|
88
|
+
protected _resetDemand(): void;
|
|
89
|
+
protected _growAny(row: number, col: number): void;
|
|
90
|
+
/** Rebuilds the union box from the two layers' own. */
|
|
91
|
+
protected _resetAny(): void;
|
|
92
|
+
/** Does a rectangle overlap the bounding box of the cells either layer holds? */
|
|
93
|
+
intersects(rowStart: number, colStart: number, rowEnd: number, colEnd: number): boolean;
|
|
94
|
+
/** Does a rectangle overlap the pending (batch) cells' bounding box? */
|
|
95
|
+
protected _pendingIntersects(rowStart: number, colStart: number, rowEnd: number, colEnd: number): boolean;
|
|
96
|
+
/** {@inheritDoc ReferenceErrorIndex.hasErrorIn} */
|
|
97
|
+
hasErrorIn(coords: IRange.Coords): boolean;
|
|
98
|
+
/** Does a (possibly partial) bounds box overlap the pending cells' box? Missing sides are open. */
|
|
99
|
+
protected _boundsIntersect(bounds: Partial<RangeCoords> | null | undefined): boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Writes the demand results inside `bounds` (every one for `null`) into the committed grid, for
|
|
102
|
+
* a path that reads it without substituting. They stay in the layer — the grid now agrees with
|
|
103
|
+
* it, and the plan still takes each one.
|
|
104
|
+
*/
|
|
105
|
+
protected _writeDemandIn(bounds: Partial<RangeCoords> | null | undefined): void;
|
|
106
|
+
/** The cell's value in either layer (they never share a cell), or `undefined`. */
|
|
107
|
+
protected _layered(key: number): Scalar | undefined;
|
|
108
|
+
/**
|
|
109
|
+
* Before an ITERATION over `bounds`: commits when a pending cell substitution cannot show
|
|
110
|
+
* (`uncovered`) lies inside them. A point read never needs this — the map answers it — and
|
|
111
|
+
* on a first calc, where every result is uncovered, a commit per read would be a commit per
|
|
112
|
+
* node. Nothing happens for reads outside the pending box.
|
|
113
|
+
*/
|
|
114
|
+
protected _coverFor(bounds: Partial<RangeCoords> | null | undefined): void;
|
|
115
|
+
/** Before a MATERIALIZATION of `bounds` (no substitution on that path): commits what it would miss. */
|
|
116
|
+
protected _flushIfPendingIn(bounds: Partial<RangeCoords> | null | undefined): void;
|
|
117
|
+
/** Is the cell inside the box of either layer? */
|
|
118
|
+
protected _inBounds(row: number, col: number): boolean;
|
|
119
|
+
/** Nothing in either layer: every read is the committed grid's. */
|
|
120
|
+
protected _isEmpty(): boolean;
|
|
121
|
+
/** The run with pending values swapped in, or the run itself when none fall inside it. */
|
|
122
|
+
protected _substituteRun(major: number, minorFrom: number, run: IListLike<Scalar>): IListLike<Scalar>;
|
|
123
|
+
/** {@inheritDoc IGrid.getValueAt} */
|
|
124
|
+
getValueAt(row: number, column: number): Scalar;
|
|
125
|
+
/** {@inheritDoc ISparseGrid.getRuns} */
|
|
126
|
+
getRuns(options?: ISparseGrid.RunIteratorOptions): ISparseGrid.RunIterableIterator<Scalar>;
|
|
127
|
+
/** {@inheritDoc IGrid.entries} */
|
|
128
|
+
entries(options?: IGrid.IteratorOptions): IGrid.EntryIterator<Scalar>;
|
|
129
|
+
/** {@inheritDoc IGrid.values} */
|
|
130
|
+
values(options?: IGrid.IteratorOptions): IGrid.ValueIterator;
|
|
131
|
+
/** {@inheritDoc IGrid.keys} */
|
|
132
|
+
keys(options?: IGrid.IteratorOptions): IGrid.KeyIterator;
|
|
133
|
+
/** {@inheritDoc IGrid.getValues} */
|
|
134
|
+
getValues(coords?: RangeCoords): Tuple.Region<Scalar> | null;
|
|
135
|
+
/** {@inheritDoc IGrid.copyTo} */
|
|
136
|
+
copyTo(destination: IGrid, topLeft: CellCoords, from: RangeCoords): void;
|
|
137
|
+
/** {@inheritDoc IGrid.getAxis} */
|
|
138
|
+
getAxis(): RangeAxis;
|
|
139
|
+
/** {@inheritDoc IGrid.getCount} */
|
|
140
|
+
getCount(): number;
|
|
141
|
+
/** {@inheritDoc IGrid.getCoords} */
|
|
142
|
+
getCoords(): RangeCoords | null;
|
|
143
|
+
/** {@inheritDoc IGrid.getMaxCoords} */
|
|
144
|
+
getMaxCoords(): RangeCoords | null;
|
|
145
|
+
/** {@inheritDoc IGrid.clone} */
|
|
146
|
+
clone(cloneKey?: any): this;
|
|
147
|
+
/** {@inheritDoc IGrid.cloneEmpty} */
|
|
148
|
+
cloneEmpty(cloneKey?: any): this;
|
|
149
|
+
/** {@inheritDoc IGrid.setValues} */
|
|
150
|
+
setValues(values: Tuple.GridTuple<Scalar>): this;
|
|
151
|
+
/** {@inheritDoc IGrid.setValueAt} */
|
|
152
|
+
setValueAt(row: number, column: number, value: Scalar): void;
|
|
153
|
+
/** {@inheritDoc IGrid.delete} */
|
|
154
|
+
delete(coords: RangeCoords | null): boolean;
|
|
155
|
+
/** {@inheritDoc IGrid.clear} */
|
|
156
|
+
clear(): void;
|
|
157
|
+
/** {@inheritDoc IGrid.shift} */
|
|
158
|
+
shift(coords: RangeCoords, direction: Direction): boolean;
|
|
159
|
+
/** Both layers into the committed grid, so neither can shadow a write that follows. */
|
|
160
|
+
protected _commitAll(): void;
|
|
161
|
+
get [Symbol.toStringTag](): string;
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=_PendingOverlayGrid.d.ts.map
|
|
@@ -5,16 +5,61 @@ import { IGrid, ISparseGrid, Tuple } from '../../collections';
|
|
|
5
5
|
* Receives every value read a formula makes while a read hook is armed.
|
|
6
6
|
*
|
|
7
7
|
* @remarks
|
|
8
|
-
* A single-cell read reports a 1x1 rectangle
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* A single-cell read reports a 1x1 rectangle. A block read reports the span the consumer actually
|
|
9
|
+
* SWEPT: the iterator is wrapped and each position reported as it is reached, so a function that
|
|
10
|
+
* stops early (`VLOOKUP` at its hit) never reports the tail it did not look at, while positions
|
|
11
|
+
* the iterator skipped over — an `includeEmpty: false` sweep past a formula cell whose value is
|
|
12
|
+
* not there yet — are reported, because a sparse iterator cannot tell such a cell from an empty
|
|
13
|
+
* one and that is exactly the read a cycle check must see. Coordinates are absolute and closed.
|
|
14
|
+
*
|
|
15
|
+
* `prefetch` marks the ONE call such a sweep makes up front, naming the rectangle it was asked
|
|
16
|
+
* for. It is not a claim that those cells were opened — only the decisions that must be made
|
|
17
|
+
* ahead of the first read belong to it (bringing unevaluated precedents forward); whether any
|
|
18
|
+
* cell in the rectangle was opened is answered by the per-position reports that follow. Its
|
|
19
|
+
* RETURN says whether those reports can tell the caller anything: `false` means nothing in the
|
|
20
|
+
* rectangle could ever produce an answer, and the sweep is left unobserved.
|
|
12
21
|
*
|
|
13
22
|
* The hook may throw; the throw propagates through the reading function up to the evaluation
|
|
14
23
|
* that armed it. Nothing is reported for constructing a reference, for its coords or size, or for
|
|
15
24
|
* a copy made to hold derived values.
|
|
16
25
|
*/
|
|
17
|
-
export type ReadHook = (gridId: string, rowStart: number, colStart: number, rowEnd: number, colEnd: number) =>
|
|
26
|
+
export type ReadHook = (gridId: string, rowStart: number, colStart: number, rowEnd: number, colEnd: number, prefetch?: boolean) => boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Turns the positions an iterator reaches into rectangles, in iteration order.
|
|
29
|
+
*
|
|
30
|
+
* @remarks
|
|
31
|
+
* Positions are numbered along the iteration's own axis and direction, so the cells between the
|
|
32
|
+
* last one reported and the one just reached are always a contiguous run of that numbering — at
|
|
33
|
+
* most three rectangles: the tail of the first major line, the whole lines between, and the head
|
|
34
|
+
* of the last.
|
|
35
|
+
*/
|
|
36
|
+
declare class SweptSpan {
|
|
37
|
+
private readonly _onRead;
|
|
38
|
+
private readonly _gridId;
|
|
39
|
+
private readonly _rowStart;
|
|
40
|
+
private readonly _colStart;
|
|
41
|
+
private readonly _rowEnd;
|
|
42
|
+
private readonly _colEnd;
|
|
43
|
+
/** The major axis is the column: positions run down a column, then on to the next. */
|
|
44
|
+
private readonly _byColumn;
|
|
45
|
+
private readonly _reverse;
|
|
46
|
+
/** Positions per major line — the height for a column sweep, the width for a row sweep. */
|
|
47
|
+
private readonly _minorCount;
|
|
48
|
+
private readonly _total;
|
|
49
|
+
/** The last position reported, in iteration order; `-1` before the first. */
|
|
50
|
+
private _cursor;
|
|
51
|
+
constructor(onRead: ReadHook, gridId: string, rowStart: number, colStart: number, rowEnd: number, colEnd: number, byColumn: boolean, reverse: boolean);
|
|
52
|
+
/** Reports everything from the last reported position up to and including this cell. */
|
|
53
|
+
reach(row: number, col: number): void;
|
|
54
|
+
/** A minor index (the row of a column sweep, the column of a row sweep) held inside the span. */
|
|
55
|
+
clampMinor(minor: number): number;
|
|
56
|
+
/** Reports the tail: an iterator run to exhaustion looked at everything it could yield. */
|
|
57
|
+
finish(): void;
|
|
58
|
+
/** Reports iteration positions `(cursor, to]`, then moves the cursor to `to`. */
|
|
59
|
+
private _advance;
|
|
60
|
+
/** One rectangle, in major/minor offsets from the sweep's origin. */
|
|
61
|
+
private _report;
|
|
62
|
+
}
|
|
18
63
|
/**
|
|
19
64
|
* An `ISparseGrid` that reports every value access on an inner grid to a {@link ReadHook}.
|
|
20
65
|
*
|
|
@@ -23,6 +68,13 @@ export type ReadHook = (gridId: string, rowStart: number, colStart: number, rowE
|
|
|
23
68
|
* and never touches the sheet directly, so wrapping that grid observes every value read the
|
|
24
69
|
* reference makes — through any `Range` view derived from it, since views share the grid.
|
|
25
70
|
*
|
|
71
|
+
* A block read is wrapped rather than reported whole: the iterator reports each position as it is
|
|
72
|
+
* reached, so a consumer that stops early — every exact-match lookup — never reports the tail it
|
|
73
|
+
* did not look at, and one run to exhaustion reports everything. Positions the iterator skipped
|
|
74
|
+
* over are reported with the one that follows them, because skipping is what a sparse iterator
|
|
75
|
+
* does to a formula cell whose value is not there yet. A materialization (`getValues`, `copyTo`)
|
|
76
|
+
* has no span and reports its rectangle whole.
|
|
77
|
+
*
|
|
26
78
|
* `clone`/`cloneEmpty` hand back the inner grid's copy UNWRAPPED. A `Range` operation clones
|
|
27
79
|
* its grid only as scratch space for a derived result (`fill`, `map`, a scalar broadcast) and
|
|
28
80
|
* overwrites what it later reads back; the coordinates in such a copy no longer name sheet
|
|
@@ -38,6 +90,8 @@ export declare class ReadObservedGrid implements ISparseGrid<Scalar> {
|
|
|
38
90
|
* A pass that Kahn orders builds none; tests pin that the ordinary path stays unwrapped.
|
|
39
91
|
*/
|
|
40
92
|
static created: number;
|
|
93
|
+
/** {@inheritDoc ISparseGrid.observesReads} */
|
|
94
|
+
readonly observesReads: true;
|
|
41
95
|
protected readonly _inner: ISparseGrid<Scalar>;
|
|
42
96
|
protected readonly _gridId: string;
|
|
43
97
|
protected readonly _onRead: ReadHook;
|
|
@@ -45,10 +99,21 @@ export declare class ReadObservedGrid implements ISparseGrid<Scalar> {
|
|
|
45
99
|
/** The grid being observed. */
|
|
46
100
|
getInner(): ISparseGrid<Scalar>;
|
|
47
101
|
/**
|
|
48
|
-
*
|
|
49
|
-
* extent, then from its data extent; a grid with neither has
|
|
102
|
+
* The rectangle a block read names, absolute and closed. Missing sides of a partial bound are
|
|
103
|
+
* taken from the grid's maximum extent, then from its data extent; a grid with neither has
|
|
104
|
+
* nothing to read, and answers `null`.
|
|
105
|
+
*/
|
|
106
|
+
protected _resolveBounds(bounds: Partial<RangeCoords> | null | undefined): RangeCoords | null;
|
|
107
|
+
/**
|
|
108
|
+
* Reports a rectangle whose every cell the caller does open.
|
|
50
109
|
*/
|
|
51
110
|
protected _reportBounds(bounds: Partial<RangeCoords> | null | undefined): void;
|
|
111
|
+
/**
|
|
112
|
+
* Announces the rectangle an iteration was asked for and opens a {@link SweptSpan} over it, or
|
|
113
|
+
* answers `null` when the sweep need not be observed at all — either the rectangle could not be
|
|
114
|
+
* resolved, or the hook says nothing in it can produce an answer.
|
|
115
|
+
*/
|
|
116
|
+
protected _openSweep(bounds: Partial<RangeCoords> | null | undefined, axis: RangeAxis | undefined, reverse: boolean | undefined): SweptSpan | null;
|
|
52
117
|
/** {@inheritDoc IGrid.getValueAt} */
|
|
53
118
|
getValueAt(row: number, column: number): Scalar;
|
|
54
119
|
/** {@inheritDoc ISparseGrid.getRuns} */
|
|
@@ -60,7 +125,7 @@ export declare class ReadObservedGrid implements ISparseGrid<Scalar> {
|
|
|
60
125
|
/** {@inheritDoc IGrid.keys} */
|
|
61
126
|
keys(options?: IGrid.IteratorOptions): IGrid.KeyIterator;
|
|
62
127
|
/** {@inheritDoc IGrid.getValues} */
|
|
63
|
-
getValues(coords?: RangeCoords): Tuple.
|
|
128
|
+
getValues(coords?: RangeCoords): Tuple.Region<Scalar> | null;
|
|
64
129
|
/** {@inheritDoc IGrid.copyTo} */
|
|
65
130
|
copyTo(destination: IGrid, topLeft: CellCoords, from: RangeCoords): void;
|
|
66
131
|
/** {@inheritDoc IGrid.getAxis} */
|
|
@@ -87,4 +152,5 @@ export declare class ReadObservedGrid implements ISparseGrid<Scalar> {
|
|
|
87
152
|
shift(coords: RangeCoords, direction: Direction): boolean;
|
|
88
153
|
get [Symbol.toStringTag](): string;
|
|
89
154
|
}
|
|
155
|
+
export {};
|
|
90
156
|
//# sourceMappingURL=_ReadObservedGrid.d.ts.map
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { IExternalBookCollection, ExternalScopeParts } from '../../externalBook';
|
|
2
|
+
import { ExternalBookCollection } from '../../externalBook/ExternalBookCollection';
|
|
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
|
+
export declare const EXTERNAL_ID_PREFIX = "ext:";
|
|
15
|
+
/** Is this stable id an external sheet or book? */
|
|
16
|
+
export declare const isExternalSymbolId: (stableId: string | null | undefined) => boolean;
|
|
17
|
+
/**
|
|
18
|
+
* The book id and sheet positions inside an `ext:` stable id, or `null` if it is not one.
|
|
19
|
+
*
|
|
20
|
+
* @remarks
|
|
21
|
+
* A book is `sheetIndex` and `sheetEnd` of `-1`; a sheet has both equal; a 3-D span has the first and
|
|
22
|
+
* last sheet. A uuid carries no `:`, so every `:` after the book id is a separator.
|
|
23
|
+
*/
|
|
24
|
+
export declare function splitExternalSymbolId(stableId: string): {
|
|
25
|
+
bookId: string;
|
|
26
|
+
sheetIndex: number;
|
|
27
|
+
sheetEnd: number;
|
|
28
|
+
} | null;
|
|
29
|
+
/**
|
|
30
|
+
* The stable id of a book (`sheetIndex < 0`), of one of its sheets, or of a 3-D span from
|
|
31
|
+
* `sheetIndex` to `sheetEnd` — the inverse of {@link splitExternalSymbolId}.
|
|
32
|
+
*/
|
|
33
|
+
export declare const externalSymbolId: (bookId: string, sheetIndex: number, sheetEnd?: number) => string;
|
|
34
|
+
/**
|
|
35
|
+
* The authoring half of {@link bindExternalScope}: how a scope that names no existing book, or a
|
|
36
|
+
* sheet no book lists, becomes one. Supplied by the engine from the collection it owns.
|
|
37
|
+
*/
|
|
38
|
+
export interface ExternalBookMinter {
|
|
39
|
+
/** A new book for a typed `<dir>[<file>]` — answers its id. */
|
|
40
|
+
addBook(parts: ExternalScopeParts): string;
|
|
41
|
+
/** Records `sheetName` on an existing book — answers the sheet's index. */
|
|
42
|
+
addSheet(bookId: string, sheetName: string): number;
|
|
43
|
+
}
|
|
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
|
+
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
|
+
export declare function resolveExternalSymbol(books: ExternalBookCollection | null | undefined, stableId: string, display: boolean): SheetSymbolHandle | null;
|
|
78
|
+
/** The `AddOptions` a minted book starts from: the typed directory and file, the typed sheet. */
|
|
79
|
+
export declare function mintedBookOptions(parts: ExternalScopeParts): IExternalBookCollection.AddOptions;
|
|
80
|
+
//# sourceMappingURL=ExternalSheetSymbols.d.ts.map
|
|
@@ -10,6 +10,29 @@ export declare const SymbolType: {
|
|
|
10
10
|
};
|
|
11
11
|
export type SymbolType = typeof SymbolType[keyof typeof SymbolType];
|
|
12
12
|
export interface SheetCtx {
|
|
13
|
+
/**
|
|
14
|
+
* Resolve to the form a READER sees rather than the form a formula is stored as.
|
|
15
|
+
*
|
|
16
|
+
* @remarks
|
|
17
|
+
* The two differ only for an external book: stored is `[n]Sheet1`, where `n` is a position
|
|
18
|
+
* projected from the book's place in the collection, and display is the book's own spelling
|
|
19
|
+
* (`'C:\dir\[Book.xlsx]Sheet1'`). A local sheet has one name and ignores this.
|
|
20
|
+
*/
|
|
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
|
+
mint?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* The formula being linked belongs to an external BOOK — a cached defined name's body — so a
|
|
31
|
+
* plain sheet name (`Alpha`) is that book's sheet, never one of this workbook's, and a `[n]`
|
|
32
|
+
* position cites the source's own links, which this workbook cannot see (`null`). Nothing is
|
|
33
|
+
* minted inside a book.
|
|
34
|
+
*/
|
|
35
|
+
book?: string;
|
|
13
36
|
}
|
|
14
37
|
export interface NamedFormulaCtx {
|
|
15
38
|
/** The stableId of the sheet that owns the formula scope, if any. */
|
|
@@ -57,6 +57,11 @@ export declare class IndirectSymbolProvider<T extends INamed.INamedValue = IName
|
|
|
57
57
|
*/
|
|
58
58
|
private readonly _getByName;
|
|
59
59
|
private readonly _getById;
|
|
60
|
+
/**
|
|
61
|
+
* The name an item goes by for this provider's reader - what a bind matches and a resolve
|
|
62
|
+
* displays. The item's own name unless the reader holds a copy of the names of its own.
|
|
63
|
+
*/
|
|
64
|
+
private readonly _nameOf;
|
|
60
65
|
private _byName;
|
|
61
66
|
private _byId;
|
|
62
67
|
/**
|
|
@@ -79,7 +84,12 @@ export declare class IndirectSymbolProvider<T extends INamed.INamedValue = IName
|
|
|
79
84
|
* shadowing (a name scoped to that sheet beats a global of the same name). Providers with no
|
|
80
85
|
* scoped items — tables — may ignore it.
|
|
81
86
|
*/
|
|
82
|
-
_getByName: (name: string, scope?: string | null) => T | null, _getById: (id: string) => T | null
|
|
87
|
+
_getByName: (name: string, scope?: string | null) => T | null, _getById: (id: string) => T | null,
|
|
88
|
+
/**
|
|
89
|
+
* The name an item goes by for this provider's reader - what a bind matches and a resolve
|
|
90
|
+
* displays. The item's own name unless the reader holds a copy of the names of its own.
|
|
91
|
+
*/
|
|
92
|
+
_nameOf?: (item: T) => string);
|
|
83
93
|
/**
|
|
84
94
|
* @inheritdoc ISymbolProvider.bind
|
|
85
95
|
*
|
|
@@ -98,8 +108,12 @@ export declare class IndirectSymbolProvider<T extends INamed.INamedValue = IName
|
|
|
98
108
|
* it heals to turns out to be scoped.
|
|
99
109
|
*
|
|
100
110
|
* A miss on `_byName` is not proof the item has no proxy — see {@link _byRealId}.
|
|
111
|
+
*
|
|
112
|
+
* `ctx.existing: true` asks only whether the name is an item NOW: it answers `null` rather than
|
|
113
|
+
* minting a proxy for a name nothing holds. For a caller deciding what a spelling IS (a bare name
|
|
114
|
+
* that may be a table) — a proxy minted for every other name would never heal into anything.
|
|
101
115
|
*/
|
|
102
|
-
bind(displayName: string, ctx?: Record<string, unknown>): string;
|
|
116
|
+
bind(displayName: string, ctx?: Record<string, unknown>): string | null;
|
|
103
117
|
/** Points a proxy at its real item, keeping {@link _byRealId} in step. */
|
|
104
118
|
private _adopt;
|
|
105
119
|
/** Moves a proxy to the `_byName` key its current name/scope spell. */
|
|
@@ -2,17 +2,77 @@ import { IRange } from '@sheetxl/primitives';
|
|
|
2
2
|
import { ISymbolProvider, SymbolHandle } from './ISymbolRegistry';
|
|
3
3
|
/**
|
|
4
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.
|
|
5
14
|
*/
|
|
6
15
|
export declare class SheetSymbolProvider implements ISymbolProvider {
|
|
7
16
|
private readonly _getId;
|
|
8
17
|
private readonly _getById;
|
|
9
|
-
|
|
18
|
+
private readonly _external?;
|
|
19
|
+
/** A sheet's position in tab order, hidden sheets included, or `-1`. */
|
|
20
|
+
private readonly _getIndexById?;
|
|
21
|
+
constructor(_getId: (displayName: string) => string | null, _getById: (sheetId: string) => SheetSymbolHandle | null, _external?: (ExternalSheetSymbols | null) | undefined,
|
|
22
|
+
/** A sheet's position in tab order, hidden sheets included, or `-1`. */
|
|
23
|
+
_getIndexById?: ((sheetId: string) => number) | null | undefined);
|
|
10
24
|
/** @inheritdoc ISymbolProvider.bind */
|
|
11
|
-
bind(displayName: string,
|
|
25
|
+
bind(displayName: string, ctx?: Record<string, unknown>): string | null;
|
|
12
26
|
/** @inheritdoc ISymbolProvider.resolve */
|
|
13
|
-
resolve(stableId: string,
|
|
27
|
+
resolve(stableId: string, ctx?: Record<string, unknown>): SheetSymbolHandle | null;
|
|
28
|
+
/**
|
|
29
|
+
* `First:Last` (names or ids) to a span id with the endpoints in tab order, the plain sheet id when
|
|
30
|
+
* both ends are one sheet (`Alpha:Alpha` is `Alpha`, as Excel normalizes it), or `null` when either
|
|
31
|
+
* end is not a sheet of this workbook.
|
|
32
|
+
*/
|
|
33
|
+
private _bindSpan;
|
|
34
|
+
/** One end of a span: a sheet's id or name, never a virtual grid (which has no name). */
|
|
35
|
+
private _bindEndpoint;
|
|
36
|
+
private _resolveSpan;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The two endpoint sheet ids of a LOCAL span id (`<firstId>:<lastId>`), or `null` if it is not one.
|
|
40
|
+
*
|
|
41
|
+
* @remarks
|
|
42
|
+
* A sheet id is `<name>-<uuid>` and a sheet name cannot contain `:`, so a `:` in a non-external id is
|
|
43
|
+
* the separator. Both halves must end in a uuid: typed text that never bound (`Alpha:Nope`) reaches
|
|
44
|
+
* `resolve` too, and must not be mistaken for a span whose sheets are gone.
|
|
45
|
+
*/
|
|
46
|
+
export declare function splitSheetSpanSymbolId(stableId: string | null | undefined): [string, string] | null;
|
|
47
|
+
/**
|
|
48
|
+
* What a local span id becomes when tab order changes from `before` to `after` — `undefined` when it
|
|
49
|
+
* stands.
|
|
50
|
+
*
|
|
51
|
+
* @remarks
|
|
52
|
+
* An endpoint that is gone, or that `movedId` carried across the other endpoint, is replaced by its
|
|
53
|
+
* inward neighbor in `before`: the nearest sheet between the endpoints that is still there. When both
|
|
54
|
+
* ends land on one sheet the answer is that sheet's plain id, as Excel collapses `Alpha:Beta` to
|
|
55
|
+
* `Beta!A1`. A span that lost every sheet stands too; it has nothing to shrink to.
|
|
56
|
+
*/
|
|
57
|
+
export declare function replaceSheetSpanEndpoints(spanId: string, before: readonly string[], after: readonly string[], movedId?: string): string | undefined;
|
|
58
|
+
/** Whether a sheet stable id is a 3-D span — local `<firstId>:<lastId>` or external `ext:<bookId>:<i>:<j>`. */
|
|
59
|
+
export declare function isSpanSymbolId(stableId: string | null | undefined): boolean;
|
|
60
|
+
/** The external-book half of {@link SheetSymbolProvider}, supplied by `Calculation`. */
|
|
61
|
+
export interface ExternalSheetSymbols {
|
|
62
|
+
/**
|
|
63
|
+
* `mint`: a scope naming a book this workbook has none of may CREATE one — see {@link SheetCtx.mint}.
|
|
64
|
+
* `withinBook`: the id of the book a plain sheet name belongs to — see {@link SheetCtx.book}.
|
|
65
|
+
*/
|
|
66
|
+
bind(displayName: string, mint: boolean, withinBook?: string | null): string | null;
|
|
67
|
+
resolve(stableId: string, display: boolean): SheetSymbolHandle | null;
|
|
14
68
|
}
|
|
15
69
|
export interface SheetSymbolHandle extends SymbolHandle {
|
|
16
70
|
getEntireCoords(): IRange.Coords | null;
|
|
71
|
+
/**
|
|
72
|
+
* The sheet's own name, `null` for a sheet that has none. `toString` is the DISPLAY form and
|
|
73
|
+
* substitutes a placeholder for a nameless sheet; a caller that means to bind or compare a
|
|
74
|
+
* name reads this instead. Absent on a handle that is not a sheet (a virtual grid).
|
|
75
|
+
*/
|
|
76
|
+
getName?(): string | null;
|
|
17
77
|
}
|
|
18
78
|
//# sourceMappingURL=SheetSymbolProvider.d.ts.map
|
|
@@ -16,4 +16,24 @@ 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
|
+
export declare class OverlaidSymbolRegistry implements ISymbolRegistry {
|
|
29
|
+
private readonly _base;
|
|
30
|
+
private readonly _overrides;
|
|
31
|
+
constructor(_base: ISymbolRegistry, _overrides: ReadonlyMap<SymbolType, ISymbolProvider>);
|
|
32
|
+
/** @inheritdoc ISymbolRegistry.registerProvider */
|
|
33
|
+
registerProvider(type: SymbolType, provider: ISymbolProvider): void;
|
|
34
|
+
/** @inheritdoc ISymbolRegistry.bind */
|
|
35
|
+
bind(type: SymbolType, displayName: string, ctx?: Record<string, unknown>): string | null;
|
|
36
|
+
/** @inheritdoc ISymbolRegistry.resolve */
|
|
37
|
+
resolve(type: SymbolType, stableId: string, ctx?: Record<string, unknown>): SymbolHandle | null;
|
|
38
|
+
}
|
|
19
39
|
//# sourceMappingURL=SymbolRegistry.d.ts.map
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export { type ISymbolRegistry, type ISymbolProvider, type SymbolHandle, SymbolType } from './ISymbolRegistry';
|
|
2
2
|
export { type SheetCtx, type NamedFormulaCtx, type TableCtx, type ColumnCtx, type FunctionCtx } from './ISymbolRegistry';
|
|
3
|
-
export { SymbolRegistry } from './SymbolRegistry';
|
|
4
|
-
export { SheetSymbolProvider } from './SheetSymbolProvider';
|
|
3
|
+
export { SymbolRegistry, OverlaidSymbolRegistry } from './SymbolRegistry';
|
|
4
|
+
export { SheetSymbolProvider, isSpanSymbolId, splitSheetSpanSymbolId, replaceSheetSpanEndpoints, type SheetSymbolHandle, type ExternalSheetSymbols } from './SheetSymbolProvider';
|
|
5
|
+
export { EXTERNAL_ID_PREFIX, isExternalSymbolId, splitExternalSymbolId, externalSymbolId, bindExternalScope, resolveExternalSymbol, mintedBookOptions, type ExternalBookMinter } from './ExternalSheetSymbols';
|
|
5
6
|
export { TableSymbolProvider } from './TableSymbolProvider';
|
|
6
7
|
export { IndirectSymbolProvider, IndirectProxy } from './IndirectSymbolProvider';
|
|
7
8
|
export { TableColumnSymbolProvider } from './TableColumnSymbolProvider';
|