@fluidframework/tree 2.1.0-276985 → 2.1.0
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/.eslintrc.cjs +7 -0
- package/.vscode/Tree.code-workspace +9 -2
- package/CHANGELOG.md +38 -0
- package/README.md +55 -12
- package/api-report/tree.alpha.api.md +2 -1
- package/api-report/tree.beta.api.md +2 -1
- package/api-report/tree.public.api.md +2 -1
- package/beta.d.ts +1 -1
- package/dist/beta.d.ts +1 -1
- package/dist/core/forest/editableForest.d.ts +6 -3
- package/dist/core/forest/editableForest.d.ts.map +1 -1
- package/dist/core/forest/editableForest.js +16 -4
- package/dist/core/forest/editableForest.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/rebase/index.d.ts +1 -1
- package/dist/core/rebase/index.d.ts.map +1 -1
- package/dist/core/rebase/index.js +3 -1
- package/dist/core/rebase/index.js.map +1 -1
- package/dist/core/rebase/types.d.ts +2 -0
- package/dist/core/rebase/types.d.ts.map +1 -1
- package/dist/core/rebase/types.js +9 -1
- package/dist/core/rebase/types.js.map +1 -1
- package/dist/core/tree/anchorSet.d.ts +1 -0
- package/dist/core/tree/anchorSet.d.ts.map +1 -1
- package/dist/core/tree/anchorSet.js +13 -0
- package/dist/core/tree/anchorSet.js.map +1 -1
- package/dist/core/tree/detachedFieldIndex.d.ts +48 -11
- package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndex.js +144 -20
- package/dist/core/tree/detachedFieldIndex.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodec.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodec.js +13 -4
- package/dist/core/tree/detachedFieldIndexCodec.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexFormat.d.ts +1 -1
- package/dist/core/tree/detachedFieldIndexFormat.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexFormat.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexTypes.d.ts +39 -4
- package/dist/core/tree/detachedFieldIndexTypes.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexTypes.js.map +1 -1
- package/dist/core/tree/index.d.ts +2 -1
- package/dist/core/tree/index.d.ts.map +1 -1
- package/dist/core/tree/index.js.map +1 -1
- package/dist/core/tree/visitDelta.d.ts +3 -1
- package/dist/core/tree/visitDelta.d.ts.map +1 -1
- package/dist/core/tree/visitDelta.js +31 -15
- package/dist/core/tree/visitDelta.js.map +1 -1
- package/dist/core/tree/visitorUtils.d.ts +3 -3
- package/dist/core/tree/visitorUtils.d.ts.map +1 -1
- package/dist/core/tree/visitorUtils.js +4 -4
- package/dist/core/tree/visitorUtils.js.map +1 -1
- package/dist/events/events.d.ts +4 -1
- package/dist/events/events.d.ts.map +1 -1
- package/dist/events/events.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js +1 -0
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/dist/feature-libraries/editableTreeBinder.js +1 -1
- package/dist/feature-libraries/editableTreeBinder.js.map +1 -1
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts +1 -10
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.js +0 -72
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.js.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +1 -51
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js +0 -2
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/dist/feature-libraries/flex-tree/index.d.ts +3 -2
- package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/index.js +5 -1
- package/dist/feature-libraries/flex-tree/index.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyEntity.d.ts +1 -2
- package/dist/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.d.ts +1 -6
- package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +11 -32
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts +1 -5
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.js +0 -30
- package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.js +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +3 -3
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +6 -3
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts +11 -0
- package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
- package/dist/feature-libraries/modular-schema/discrepancies.d.ts +96 -0
- package/dist/feature-libraries/modular-schema/discrepancies.d.ts.map +1 -0
- package/dist/feature-libraries/modular-schema/discrepancies.js +264 -0
- package/dist/feature-libraries/modular-schema/discrepancies.js.map +1 -0
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +9 -2
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKind.js +3 -0
- package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts +2 -1
- package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/index.js +3 -1
- package/dist/feature-libraries/modular-schema/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +42 -26
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +51 -2
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +827 -245
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormat.js +2 -0
- package/dist/feature-libraries/modular-schema/modularChangeFormat.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts +44 -1
- package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
- package/dist/feature-libraries/node-key/index.d.ts +0 -1
- package/dist/feature-libraries/node-key/index.d.ts.map +1 -1
- package/dist/feature-libraries/node-key/index.js +1 -3
- package/dist/feature-libraries/node-key/index.js.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.d.ts +3 -2
- package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.js +5 -4
- package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.js +1 -0
- package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/dist/feature-libraries/sequence-field/index.d.ts +1 -1
- package/dist/feature-libraries/sequence-field/index.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/index.js +1 -2
- package/dist/feature-libraries/sequence-field/index.js.map +1 -1
- package/dist/feature-libraries/sequence-field/invert.js +1 -1
- package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
- package/dist/feature-libraries/sequence-field/rebase.js +6 -1
- package/dist/feature-libraries/sequence-field/rebase.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.js +1 -0
- package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.d.ts +2 -17
- package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.js +31 -39
- package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
- package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts +1 -0
- package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
- package/dist/feature-libraries/typed-schema/typedTreeSchema.js +2 -0
- package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/public.d.ts +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +4 -2
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +240 -184
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +5 -1
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +157 -90
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeEnricher.js +1 -1
- package/dist/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
- package/dist/shared-tree/treeApi.js +1 -1
- package/dist/shared-tree/treeApi.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +10 -1
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +47 -3
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree/treeView.d.ts.map +1 -1
- package/dist/shared-tree/treeView.js +7 -3
- package/dist/shared-tree/treeView.js.map +1 -1
- package/dist/shared-tree-core/branch.d.ts +6 -0
- package/dist/shared-tree-core/branch.d.ts.map +1 -1
- package/dist/shared-tree-core/branch.js +3 -0
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts +8 -6
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +271 -209
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/simple-tree/arrayNode.d.ts +4 -0
- package/dist/simple-tree/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/arrayNode.js +36 -19
- package/dist/simple-tree/arrayNode.js.map +1 -1
- package/dist/simple-tree/index.d.ts +3 -3
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +2 -1
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/leafNodeSchema.d.ts +22 -1
- package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/leafNodeSchema.js +2 -1
- package/dist/simple-tree/leafNodeSchema.js.map +1 -1
- package/dist/simple-tree/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/mapNode.js.map +1 -1
- package/dist/simple-tree/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/objectNode.js +2 -1
- package/dist/simple-tree/objectNode.js.map +1 -1
- package/dist/simple-tree/proxies.d.ts.map +1 -1
- package/dist/simple-tree/proxies.js +9 -25
- package/dist/simple-tree/proxies.js.map +1 -1
- package/dist/simple-tree/proxyBinding.d.ts +4 -0
- package/dist/simple-tree/proxyBinding.d.ts.map +1 -1
- package/dist/simple-tree/proxyBinding.js +23 -1
- package/dist/simple-tree/proxyBinding.js.map +1 -1
- package/dist/simple-tree/schemaFactory.d.ts +16 -1
- package/dist/simple-tree/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/schemaFactory.js +32 -4
- package/dist/simple-tree/schemaFactory.js.map +1 -1
- package/dist/simple-tree/schemaTypes.d.ts +36 -1
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js.map +1 -1
- package/dist/simple-tree/toFlexSchema.d.ts +2 -2
- package/dist/simple-tree/toFlexSchema.d.ts.map +1 -1
- package/dist/simple-tree/toFlexSchema.js +3 -2
- package/dist/simple-tree/toFlexSchema.js.map +1 -1
- package/dist/simple-tree/tree.d.ts +4 -1
- package/dist/simple-tree/tree.d.ts.map +1 -1
- package/dist/simple-tree/tree.js +48 -1
- package/dist/simple-tree/tree.js.map +1 -1
- package/dist/simple-tree/treeNodeApi.d.ts +2 -75
- package/dist/simple-tree/treeNodeApi.d.ts.map +1 -1
- package/dist/simple-tree/treeNodeApi.js +17 -25
- package/dist/simple-tree/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/treeNodeKernel.d.ts +26 -0
- package/dist/simple-tree/treeNodeKernel.d.ts.map +1 -0
- package/dist/simple-tree/treeNodeKernel.js +83 -0
- package/dist/simple-tree/treeNodeKernel.js.map +1 -0
- package/dist/simple-tree/types.d.ts +95 -3
- package/dist/simple-tree/types.d.ts.map +1 -1
- package/dist/simple-tree/types.js +120 -21
- package/dist/simple-tree/types.js.map +1 -1
- package/dist/util/breakable.d.ts +83 -0
- package/dist/util/breakable.d.ts.map +1 -0
- package/dist/util/breakable.js +178 -0
- package/dist/util/breakable.js.map +1 -0
- package/dist/util/index.d.ts +3 -2
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js +9 -2
- package/dist/util/index.js.map +1 -1
- package/dist/util/nestedMap.d.ts +17 -3
- package/dist/util/nestedMap.d.ts.map +1 -1
- package/dist/util/nestedMap.js +21 -1
- package/dist/util/nestedMap.js.map +1 -1
- package/dist/util/utils.d.ts +7 -0
- package/dist/util/utils.d.ts.map +1 -1
- package/dist/util/utils.js +15 -1
- package/dist/util/utils.js.map +1 -1
- package/internal.d.ts +1 -1
- package/lib/beta.d.ts +1 -1
- package/lib/core/forest/editableForest.d.ts +6 -3
- package/lib/core/forest/editableForest.d.ts.map +1 -1
- package/lib/core/forest/editableForest.js +17 -5
- package/lib/core/forest/editableForest.js.map +1 -1
- package/lib/core/index.d.ts +1 -1
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +1 -1
- package/lib/core/index.js.map +1 -1
- package/lib/core/rebase/index.d.ts +1 -1
- package/lib/core/rebase/index.d.ts.map +1 -1
- package/lib/core/rebase/index.js +1 -1
- package/lib/core/rebase/index.js.map +1 -1
- package/lib/core/rebase/types.d.ts +2 -0
- package/lib/core/rebase/types.d.ts.map +1 -1
- package/lib/core/rebase/types.js +7 -1
- package/lib/core/rebase/types.js.map +1 -1
- package/lib/core/tree/anchorSet.d.ts +1 -0
- package/lib/core/tree/anchorSet.d.ts.map +1 -1
- package/lib/core/tree/anchorSet.js +13 -0
- package/lib/core/tree/anchorSet.js.map +1 -1
- package/lib/core/tree/detachedFieldIndex.d.ts +48 -11
- package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndex.js +145 -21
- package/lib/core/tree/detachedFieldIndex.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodec.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodec.js +13 -4
- package/lib/core/tree/detachedFieldIndexCodec.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexFormat.d.ts +1 -1
- package/lib/core/tree/detachedFieldIndexFormat.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexFormat.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexTypes.d.ts +39 -4
- package/lib/core/tree/detachedFieldIndexTypes.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexTypes.js.map +1 -1
- package/lib/core/tree/index.d.ts +2 -1
- package/lib/core/tree/index.d.ts.map +1 -1
- package/lib/core/tree/index.js.map +1 -1
- package/lib/core/tree/visitDelta.d.ts +3 -1
- package/lib/core/tree/visitDelta.d.ts.map +1 -1
- package/lib/core/tree/visitDelta.js +31 -15
- package/lib/core/tree/visitDelta.js.map +1 -1
- package/lib/core/tree/visitorUtils.d.ts +3 -3
- package/lib/core/tree/visitorUtils.d.ts.map +1 -1
- package/lib/core/tree/visitorUtils.js +4 -4
- package/lib/core/tree/visitorUtils.js.map +1 -1
- package/lib/events/events.d.ts +4 -1
- package/lib/events/events.d.ts.map +1 -1
- package/lib/events/events.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js +1 -0
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/lib/feature-libraries/editableTreeBinder.js +1 -1
- package/lib/feature-libraries/editableTreeBinder.js.map +1 -1
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts +1 -10
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.js +2 -74
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.js.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +1 -51
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js +0 -2
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/lib/feature-libraries/flex-tree/index.d.ts +3 -2
- package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/index.js +2 -1
- package/lib/feature-libraries/flex-tree/index.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyEntity.d.ts +1 -2
- package/lib/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.d.ts +1 -6
- package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +13 -34
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts +1 -5
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.js +3 -33
- package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.js +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +3 -3
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +3 -3
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts +11 -0
- package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
- package/lib/feature-libraries/modular-schema/discrepancies.d.ts +96 -0
- package/lib/feature-libraries/modular-schema/discrepancies.d.ts.map +1 -0
- package/lib/feature-libraries/modular-schema/discrepancies.js +260 -0
- package/lib/feature-libraries/modular-schema/discrepancies.js.map +1 -0
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +9 -2
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKind.js +3 -0
- package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts +2 -1
- package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/index.js +1 -0
- package/lib/feature-libraries/modular-schema/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +42 -26
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +51 -2
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +826 -247
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormat.js +2 -0
- package/lib/feature-libraries/modular-schema/modularChangeFormat.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts +44 -1
- package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
- package/lib/feature-libraries/node-key/index.d.ts +0 -1
- package/lib/feature-libraries/node-key/index.d.ts.map +1 -1
- package/lib/feature-libraries/node-key/index.js +0 -1
- package/lib/feature-libraries/node-key/index.js.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.d.ts +3 -2
- package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.js +5 -4
- package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.js +1 -0
- package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/lib/feature-libraries/sequence-field/index.d.ts +1 -1
- package/lib/feature-libraries/sequence-field/index.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/index.js +1 -1
- package/lib/feature-libraries/sequence-field/index.js.map +1 -1
- package/lib/feature-libraries/sequence-field/invert.js +1 -1
- package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
- package/lib/feature-libraries/sequence-field/rebase.js +6 -1
- package/lib/feature-libraries/sequence-field/rebase.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js +2 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.d.ts +2 -17
- package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.js +31 -39
- package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
- package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts +1 -0
- package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
- package/lib/feature-libraries/typed-schema/typedTreeSchema.js +4 -2
- package/lib/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/public.d.ts +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +4 -2
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +242 -185
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +5 -1
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +158 -90
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeEnricher.js +1 -1
- package/lib/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
- package/lib/shared-tree/treeApi.js +1 -1
- package/lib/shared-tree/treeApi.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +10 -1
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +47 -3
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree/treeView.d.ts.map +1 -1
- package/lib/shared-tree/treeView.js +4 -0
- package/lib/shared-tree/treeView.js.map +1 -1
- package/lib/shared-tree-core/branch.d.ts +6 -0
- package/lib/shared-tree-core/branch.d.ts.map +1 -1
- package/lib/shared-tree-core/branch.js +3 -0
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts +8 -6
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +273 -210
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/simple-tree/arrayNode.d.ts +4 -0
- package/lib/simple-tree/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/arrayNode.js +39 -22
- package/lib/simple-tree/arrayNode.js.map +1 -1
- package/lib/simple-tree/index.d.ts +3 -3
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +1 -1
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/leafNodeSchema.d.ts +22 -1
- package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/leafNodeSchema.js +1 -1
- package/lib/simple-tree/leafNodeSchema.js.map +1 -1
- package/lib/simple-tree/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/mapNode.js.map +1 -1
- package/lib/simple-tree/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/objectNode.js +3 -2
- package/lib/simple-tree/objectNode.js.map +1 -1
- package/lib/simple-tree/proxies.d.ts.map +1 -1
- package/lib/simple-tree/proxies.js +9 -25
- package/lib/simple-tree/proxies.js.map +1 -1
- package/lib/simple-tree/proxyBinding.d.ts +4 -0
- package/lib/simple-tree/proxyBinding.d.ts.map +1 -1
- package/lib/simple-tree/proxyBinding.js +19 -0
- package/lib/simple-tree/proxyBinding.js.map +1 -1
- package/lib/simple-tree/schemaFactory.d.ts +16 -1
- package/lib/simple-tree/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/schemaFactory.js +30 -3
- package/lib/simple-tree/schemaFactory.js.map +1 -1
- package/lib/simple-tree/schemaTypes.d.ts +36 -1
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js.map +1 -1
- package/lib/simple-tree/toFlexSchema.d.ts +2 -2
- package/lib/simple-tree/toFlexSchema.d.ts.map +1 -1
- package/lib/simple-tree/toFlexSchema.js +3 -2
- package/lib/simple-tree/toFlexSchema.js.map +1 -1
- package/lib/simple-tree/tree.d.ts +4 -1
- package/lib/simple-tree/tree.d.ts.map +1 -1
- package/lib/simple-tree/tree.js +44 -0
- package/lib/simple-tree/tree.js.map +1 -1
- package/lib/simple-tree/treeNodeApi.d.ts +2 -75
- package/lib/simple-tree/treeNodeApi.d.ts.map +1 -1
- package/lib/simple-tree/treeNodeApi.js +20 -28
- package/lib/simple-tree/treeNodeApi.js.map +1 -1
- package/lib/simple-tree/treeNodeKernel.d.ts +26 -0
- package/lib/simple-tree/treeNodeKernel.d.ts.map +1 -0
- package/lib/simple-tree/treeNodeKernel.js +79 -0
- package/lib/simple-tree/treeNodeKernel.js.map +1 -0
- package/lib/simple-tree/types.d.ts +95 -3
- package/lib/simple-tree/types.d.ts.map +1 -1
- package/lib/simple-tree/types.js +121 -22
- package/lib/simple-tree/types.js.map +1 -1
- package/lib/util/breakable.d.ts +83 -0
- package/lib/util/breakable.d.ts.map +1 -0
- package/lib/util/breakable.js +171 -0
- package/lib/util/breakable.js.map +1 -0
- package/lib/util/index.d.ts +3 -2
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js +3 -2
- package/lib/util/index.js.map +1 -1
- package/lib/util/nestedMap.d.ts +17 -3
- package/lib/util/nestedMap.d.ts.map +1 -1
- package/lib/util/nestedMap.js +19 -0
- package/lib/util/nestedMap.js.map +1 -1
- package/lib/util/utils.d.ts +7 -0
- package/lib/util/utils.d.ts.map +1 -1
- package/lib/util/utils.js +13 -0
- package/lib/util/utils.js.map +1 -1
- package/package.json +29 -27
- package/src/core/forest/editableForest.ts +25 -4
- package/src/core/index.ts +2 -0
- package/src/core/rebase/index.ts +2 -0
- package/src/core/rebase/types.ts +17 -0
- package/src/core/tree/anchorSet.ts +14 -0
- package/src/core/tree/detachedFieldIndex.ts +217 -35
- package/src/core/tree/detachedFieldIndexCodec.ts +17 -8
- package/src/core/tree/detachedFieldIndexFormat.ts +1 -1
- package/src/core/tree/detachedFieldIndexTypes.ts +41 -5
- package/src/core/tree/index.ts +2 -1
- package/src/core/tree/visitDelta.ts +58 -16
- package/src/core/tree/visitorUtils.ts +7 -4
- package/src/events/events.ts +4 -2
- package/src/feature-libraries/default-schema/defaultEditBuilder.ts +1 -1
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +1 -0
- package/src/feature-libraries/editableTreeBinder.ts +1 -1
- package/src/feature-libraries/flex-map-tree/mapTreeNode.ts +1 -95
- package/src/feature-libraries/flex-tree/flexTreeTypes.ts +0 -62
- package/src/feature-libraries/flex-tree/index.ts +7 -2
- package/src/feature-libraries/flex-tree/lazyEntity.ts +0 -3
- package/src/feature-libraries/flex-tree/lazyField.ts +15 -47
- package/src/feature-libraries/flex-tree/lazyNode.ts +1 -48
- package/src/feature-libraries/forest-summary/forestSummarizer.ts +1 -0
- package/src/feature-libraries/index.ts +4 -2
- package/src/feature-libraries/modular-schema/crossFieldQueries.ts +18 -0
- package/src/feature-libraries/modular-schema/discrepancies.ts +395 -0
- package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +10 -2
- package/src/feature-libraries/modular-schema/genericFieldKind.ts +3 -0
- package/src/feature-libraries/modular-schema/index.ts +2 -0
- package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +81 -35
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +1521 -444
- package/src/feature-libraries/modular-schema/modularChangeFormat.ts +2 -0
- package/src/feature-libraries/modular-schema/modularChangeTypes.ts +51 -0
- package/src/feature-libraries/node-key/index.ts +0 -1
- package/src/feature-libraries/object-forest/objectForest.ts +7 -3
- package/src/feature-libraries/optional-field/optionalField.ts +1 -0
- package/src/feature-libraries/sequence-field/index.ts +0 -2
- package/src/feature-libraries/sequence-field/invert.ts +1 -1
- package/src/feature-libraries/sequence-field/rebase.ts +7 -1
- package/src/feature-libraries/sequence-field/sequenceFieldChangeHandler.ts +2 -1
- package/src/feature-libraries/sequence-field/utils.ts +37 -85
- package/src/feature-libraries/typed-schema/typedTreeSchema.ts +10 -0
- package/src/index.ts +0 -1
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/schematizingTreeView.ts +6 -2
- package/src/shared-tree/sharedTree.ts +12 -1
- package/src/shared-tree/sharedTreeChangeEnricher.ts +1 -1
- package/src/shared-tree/treeApi.ts +1 -1
- package/src/shared-tree/treeCheckout.ts +60 -5
- package/src/shared-tree/treeView.ts +5 -0
- package/src/shared-tree-core/branch.ts +10 -0
- package/src/shared-tree-core/sharedTreeCore.ts +25 -6
- package/src/simple-tree/arrayNode.ts +50 -23
- package/src/simple-tree/index.ts +3 -3
- package/src/simple-tree/leafNodeSchema.ts +1 -1
- package/src/simple-tree/mapNode.ts +2 -2
- package/src/simple-tree/objectNode.ts +9 -3
- package/src/simple-tree/proxies.ts +10 -33
- package/src/simple-tree/proxyBinding.ts +23 -0
- package/src/simple-tree/schemaFactory.ts +37 -2
- package/src/simple-tree/schemaTypes.ts +36 -1
- package/src/simple-tree/toFlexSchema.ts +5 -4
- package/src/simple-tree/tree.ts +68 -4
- package/src/simple-tree/treeNodeApi.ts +29 -111
- package/src/simple-tree/treeNodeKernel.ts +91 -0
- package/src/simple-tree/types.ts +292 -31
- package/src/util/breakable.ts +214 -0
- package/src/util/index.ts +11 -0
- package/src/util/nestedMap.ts +33 -3
- package/src/util/utils.ts +17 -0
- package/dist/feature-libraries/node-key/nodeKeyIndex.d.ts +0 -41
- package/dist/feature-libraries/node-key/nodeKeyIndex.d.ts.map +0 -1
- package/dist/feature-libraries/node-key/nodeKeyIndex.js +0 -101
- package/dist/feature-libraries/node-key/nodeKeyIndex.js.map +0 -1
- package/lib/feature-libraries/node-key/nodeKeyIndex.d.ts +0 -41
- package/lib/feature-libraries/node-key/nodeKeyIndex.d.ts.map +0 -1
- package/lib/feature-libraries/node-key/nodeKeyIndex.js +0 -97
- package/lib/feature-libraries/node-key/nodeKeyIndex.js.map +0 -1
- package/src/feature-libraries/node-key/nodeKeyIndex.ts +0 -132
|
@@ -7,11 +7,12 @@ import { assert } from "@fluidframework/core-utils/internal";
|
|
|
7
7
|
|
|
8
8
|
import type { ICodecOptions } from "../../codec/index.js";
|
|
9
9
|
import { type IdAllocator, idAllocatorFromMaxId } from "../../util/index.js";
|
|
10
|
-
import type { RevisionTagCodec } from "../rebase/index.js";
|
|
10
|
+
import type { RevisionTag, RevisionTagCodec } from "../rebase/index.js";
|
|
11
11
|
import type { FieldKey } from "../schema-stored/index.js";
|
|
12
12
|
|
|
13
13
|
import type { ProtoNodes, Root } from "./delta.js";
|
|
14
|
-
import { DetachedFieldIndex
|
|
14
|
+
import { DetachedFieldIndex } from "./detachedFieldIndex.js";
|
|
15
|
+
import type { ForestRootId } from "./detachedFieldIndexTypes.js";
|
|
15
16
|
import type { PlaceIndex, Range } from "./pathTree.js";
|
|
16
17
|
import { type DeltaVisitor, visitDelta } from "./visitDelta.js";
|
|
17
18
|
import type { IIdCompressor } from "@fluidframework/id-compressor";
|
|
@@ -33,21 +34,23 @@ export function makeDetachedFieldIndex(
|
|
|
33
34
|
|
|
34
35
|
export function applyDelta(
|
|
35
36
|
delta: Root,
|
|
37
|
+
latestRevision: RevisionTag | undefined,
|
|
36
38
|
deltaProcessor: { acquireVisitor: () => DeltaVisitor },
|
|
37
39
|
detachedFieldIndex: DetachedFieldIndex,
|
|
38
40
|
): void {
|
|
39
41
|
const visitor = deltaProcessor.acquireVisitor();
|
|
40
|
-
visitDelta(delta, visitor, detachedFieldIndex);
|
|
42
|
+
visitDelta(delta, visitor, detachedFieldIndex, latestRevision);
|
|
41
43
|
visitor.free();
|
|
42
44
|
}
|
|
43
45
|
|
|
44
46
|
export function announceDelta(
|
|
45
47
|
delta: Root,
|
|
48
|
+
latestRevision: RevisionTag | undefined,
|
|
46
49
|
deltaProcessor: { acquireVisitor: () => DeltaVisitor & AnnouncedVisitor },
|
|
47
50
|
detachedFieldIndex: DetachedFieldIndex,
|
|
48
51
|
): void {
|
|
49
52
|
const visitor = deltaProcessor.acquireVisitor();
|
|
50
|
-
visitDelta(delta, combineVisitors([visitor], [visitor]), detachedFieldIndex);
|
|
53
|
+
visitDelta(delta, combineVisitors([visitor], [visitor]), detachedFieldIndex, latestRevision);
|
|
51
54
|
visitor.free();
|
|
52
55
|
}
|
|
53
56
|
|
package/src/events/events.ts
CHANGED
|
@@ -8,9 +8,11 @@ import { getOrCreate } from "../util/index.js";
|
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Convert a union of types to an intersection of those types. Useful for `TransformEvents`.
|
|
11
|
+
* @privateRemarks
|
|
12
|
+
* First an always true extends clause is used (T extends T) to distribute T into to a union of types contravariant over each member of the T union.
|
|
13
|
+
* Then the constraint on the type parameter in this new context is inferred, giving the intersection.
|
|
11
14
|
*/
|
|
12
|
-
|
|
13
|
-
export type UnionToIntersection<T> = (T extends any ? (k: T) => unknown : never) extends (
|
|
15
|
+
export type UnionToIntersection<T> = (T extends T ? (k: T) => unknown : never) extends (
|
|
14
16
|
k: infer U,
|
|
15
17
|
) => unknown
|
|
16
18
|
? U
|
|
@@ -170,7 +170,7 @@ export class DefaultEditBuilder implements ChangeFamilyEditor, IDefaultEditBuild
|
|
|
170
170
|
family: ChangeFamily<ChangeFamilyEditor, DefaultChangeset>,
|
|
171
171
|
changeReceiver: (change: DefaultChangeset) => void,
|
|
172
172
|
) {
|
|
173
|
-
this.modularBuilder = new ModularEditBuilder(family, changeReceiver);
|
|
173
|
+
this.modularBuilder = new ModularEditBuilder(family, fieldKinds, changeReceiver);
|
|
174
174
|
}
|
|
175
175
|
|
|
176
176
|
public enterTransaction(): void {
|
|
@@ -48,6 +48,7 @@ export const noChangeHandler: FieldChangeHandler<0> = {
|
|
|
48
48
|
isEmpty: (change: 0) => true,
|
|
49
49
|
getNestedChanges: (change: 0) => [],
|
|
50
50
|
createEmpty: () => 0,
|
|
51
|
+
getCrossFieldKeys: () => [],
|
|
51
52
|
};
|
|
52
53
|
|
|
53
54
|
export interface ValueFieldEditor extends FieldEditor<OptionalChangeset> {
|
|
@@ -741,7 +741,7 @@ class AbstractDataBinder<
|
|
|
741
741
|
const visitor = getOrCreate(this.visitors, anchor, () => {
|
|
742
742
|
const newVisitor = this.visitorFactory(anchor);
|
|
743
743
|
this.unregisterHandles.add(
|
|
744
|
-
anchor.on("subtreeChanging", (upPath: UpPath) => {
|
|
744
|
+
anchor.anchorNode.on("subtreeChanging", (upPath: UpPath) => {
|
|
745
745
|
assert(newVisitor !== undefined, 0x6dc /* visitor expected to be defined */);
|
|
746
746
|
if (!this.visitorLocations.has(newVisitor)) {
|
|
747
747
|
this.visitorLocations.set(newVisitor, upPath);
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
type TreeValue,
|
|
15
15
|
type Value,
|
|
16
16
|
} from "../../core/index.js";
|
|
17
|
-
import { brand, fail,
|
|
17
|
+
import { brand, fail, mapIterable } from "../../util/index.js";
|
|
18
18
|
import {
|
|
19
19
|
type FlexTreeContext,
|
|
20
20
|
FlexTreeEntityKind,
|
|
@@ -23,7 +23,6 @@ import {
|
|
|
23
23
|
type FlexTreeLeafNode,
|
|
24
24
|
type FlexTreeMapNode,
|
|
25
25
|
type FlexTreeNode,
|
|
26
|
-
type FlexTreeNodeEvents,
|
|
27
26
|
type FlexTreeOptionalField,
|
|
28
27
|
type FlexTreeRequiredField,
|
|
29
28
|
type FlexTreeSequenceField,
|
|
@@ -34,7 +33,6 @@ import {
|
|
|
34
33
|
type FlexTreeUnboxNodeUnion,
|
|
35
34
|
type FlexibleFieldContent,
|
|
36
35
|
type FlexibleNodeSubSequence,
|
|
37
|
-
TreeStatus,
|
|
38
36
|
flexTreeMarker,
|
|
39
37
|
indexForAt,
|
|
40
38
|
} from "../flex-tree/index.js";
|
|
@@ -54,7 +52,6 @@ import {
|
|
|
54
52
|
import { type FlexImplicitAllowedTypes, normalizeAllowedTypes } from "../schemaBuilderBase.js";
|
|
55
53
|
import type { FlexFieldKind } from "../modular-schema/index.js";
|
|
56
54
|
import { FieldKinds, type SequenceFieldEditBuilder } from "../default-schema/index.js";
|
|
57
|
-
import { ComposableEventEmitter, type Listenable, type Off } from "../../events/index.js";
|
|
58
55
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
59
56
|
|
|
60
57
|
// #region Nodes
|
|
@@ -66,7 +63,6 @@ import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
|
66
63
|
*/
|
|
67
64
|
export interface MapTreeNode extends FlexTreeNode {
|
|
68
65
|
readonly mapTree: MapTree;
|
|
69
|
-
forwardEvents(to: Listenable<FlexTreeNodeEvents>): void;
|
|
70
66
|
}
|
|
71
67
|
|
|
72
68
|
/**
|
|
@@ -82,38 +78,6 @@ interface LocationInField {
|
|
|
82
78
|
readonly index: number;
|
|
83
79
|
}
|
|
84
80
|
|
|
85
|
-
/**
|
|
86
|
-
* Allows events to be forwarded to another event emitter.
|
|
87
|
-
* @remarks TODO: After the eventing library is simplified, find a way to support this pattern elegantly in the library.
|
|
88
|
-
*/
|
|
89
|
-
class ForwardingEventEmitter extends ComposableEventEmitter<FlexTreeNodeEvents> {
|
|
90
|
-
// A map from deregistration functions produced by this class to deregistration functions of Listenables that have been forwarded to
|
|
91
|
-
private readonly forwardedOffs = new Map<Off, Off[]>();
|
|
92
|
-
|
|
93
|
-
public override on<K extends keyof FlexTreeNodeEvents>(
|
|
94
|
-
eventName: K,
|
|
95
|
-
listener: FlexTreeNodeEvents[K],
|
|
96
|
-
): Off {
|
|
97
|
-
const off = super.on(eventName, listener);
|
|
98
|
-
// Return a deregister function which...
|
|
99
|
-
return (): void => {
|
|
100
|
-
off(); // ...deregisters the event in this emitter,
|
|
101
|
-
// and also deregisters the event in any Listenable that it gets forwarded to
|
|
102
|
-
(this.forwardedOffs.get(off) ?? []).forEach((f) => f());
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
public forwardEvents(to: Listenable<FlexTreeNodeEvents>): void {
|
|
107
|
-
for (const [eventName, listeners] of this.listeners) {
|
|
108
|
-
for (const [off, listener] of listeners) {
|
|
109
|
-
// For every one of our listeners, make the same subscription in the Listenable that we're forwarding to,
|
|
110
|
-
// and then create a mapping from our deregistration function to theirs, so we can call it later if need be.
|
|
111
|
-
getOrCreate(this.forwardedOffs, off, () => []).push(to.on(eventName, listener));
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
81
|
/**
|
|
118
82
|
* A readonly implementation of {@link FlexTreeNode} which wraps a {@link MapTree}.
|
|
119
83
|
* @remarks Any methods that would mutate the node will fail,
|
|
@@ -123,10 +87,6 @@ class ForwardingEventEmitter extends ComposableEventEmitter<FlexTreeNodeEvents>
|
|
|
123
87
|
*/
|
|
124
88
|
export class EagerMapTreeNode<TSchema extends FlexTreeNodeSchema> implements MapTreeNode {
|
|
125
89
|
public readonly [flexTreeMarker] = FlexTreeEntityKind.Node as const;
|
|
126
|
-
private readonly events = new ForwardingEventEmitter();
|
|
127
|
-
public forwardEvents(to: Listenable<FlexTreeNodeEvents>): void {
|
|
128
|
-
this.events.forwardEvents(to);
|
|
129
|
-
}
|
|
130
90
|
|
|
131
91
|
/**
|
|
132
92
|
* Create a new MapTreeNode.
|
|
@@ -212,27 +172,10 @@ export class EagerMapTreeNode<TSchema extends FlexTreeNodeSchema> implements Map
|
|
|
212
172
|
);
|
|
213
173
|
}
|
|
214
174
|
|
|
215
|
-
public treeStatus(): TreeStatus {
|
|
216
|
-
return TreeStatus.New;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
175
|
public get value(): Value {
|
|
220
176
|
return this.mapTree.value;
|
|
221
177
|
}
|
|
222
178
|
|
|
223
|
-
public on<K extends keyof FlexTreeNodeEvents>(
|
|
224
|
-
eventName: K,
|
|
225
|
-
listener: FlexTreeNodeEvents[K],
|
|
226
|
-
): () => void {
|
|
227
|
-
switch (eventName) {
|
|
228
|
-
case "nodeChanged":
|
|
229
|
-
case "treeChanged":
|
|
230
|
-
return this.events.on(eventName, listener);
|
|
231
|
-
default:
|
|
232
|
-
throw unsupportedUsageError(`Subscribing to ${eventName}`);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
|
|
236
179
|
public get context(): FlexTreeContext {
|
|
237
180
|
// This API is relevant to `LazyTreeNode`s, but not `MapTreeNode`s.
|
|
238
181
|
// TODO: Refactor the FlexTreeNode interface so that stubbing this out isn't necessary.
|
|
@@ -282,16 +225,6 @@ export class EagerMapTreeFieldNode<TSchema extends FlexFieldNodeSchema>
|
|
|
282
225
|
return unboxedField(field, EmptyKey, this.mapTree, this);
|
|
283
226
|
}
|
|
284
227
|
|
|
285
|
-
public get boxedContent(): FlexTreeTypedField<TSchema["info"]> {
|
|
286
|
-
const field = this.mapTree.fields.get(EmptyKey) ?? [];
|
|
287
|
-
return getOrCreateField(
|
|
288
|
-
this,
|
|
289
|
-
EmptyKey,
|
|
290
|
-
field,
|
|
291
|
-
this.schema.info,
|
|
292
|
-
) as unknown as FlexTreeTypedField<TSchema["info"]>;
|
|
293
|
-
}
|
|
294
|
-
|
|
295
228
|
public override getBoxed(key: string): FlexTreeTypedField<TSchema["info"]> {
|
|
296
229
|
return super.getBoxed(key) as FlexTreeTypedField<TSchema["info"]>;
|
|
297
230
|
}
|
|
@@ -418,9 +351,6 @@ export const rootMapTreeField: MapTreeField<FlexAllowedTypes> = {
|
|
|
418
351
|
is<TSchema extends FlexFieldSchema>(schema: TSchema) {
|
|
419
352
|
return schema === (FlexFieldSchema.empty as FlexFieldSchema);
|
|
420
353
|
},
|
|
421
|
-
isSameAs(other: FlexTreeField): boolean {
|
|
422
|
-
return other === this;
|
|
423
|
-
},
|
|
424
354
|
boxedIterator(): IterableIterator<FlexTreeNode> {
|
|
425
355
|
return [].values();
|
|
426
356
|
},
|
|
@@ -431,9 +361,6 @@ export const rootMapTreeField: MapTreeField<FlexAllowedTypes> = {
|
|
|
431
361
|
get context(): FlexTreeContext {
|
|
432
362
|
return fail("MapTreeField does not implement context");
|
|
433
363
|
},
|
|
434
|
-
treeStatus(): TreeStatus {
|
|
435
|
-
return TreeStatus.New;
|
|
436
|
-
},
|
|
437
364
|
mapTrees: [],
|
|
438
365
|
};
|
|
439
366
|
|
|
@@ -476,15 +403,6 @@ class MapTreeField<T extends FlexAllowedTypes> implements FlexTreeField {
|
|
|
476
403
|
return this.schema.equals(schema);
|
|
477
404
|
}
|
|
478
405
|
|
|
479
|
-
public isSameAs(other: FlexTreeField): boolean {
|
|
480
|
-
if (other.parent === this.parent && other.key === this.key) {
|
|
481
|
-
assert(other === this, 0x992 /* Expected field to be cached */);
|
|
482
|
-
return true;
|
|
483
|
-
}
|
|
484
|
-
|
|
485
|
-
return false;
|
|
486
|
-
}
|
|
487
|
-
|
|
488
406
|
public boxedIterator(): IterableIterator<FlexTreeTypedNodeUnion<T>> {
|
|
489
407
|
return this.mapTrees
|
|
490
408
|
.map(
|
|
@@ -514,10 +432,6 @@ class MapTreeField<T extends FlexAllowedTypes> implements FlexTreeField {
|
|
|
514
432
|
public get context(): FlexTreeContext {
|
|
515
433
|
return fail("MapTreeField does not implement context");
|
|
516
434
|
}
|
|
517
|
-
|
|
518
|
-
public treeStatus(): TreeStatus {
|
|
519
|
-
return TreeStatus.New;
|
|
520
|
-
}
|
|
521
435
|
}
|
|
522
436
|
|
|
523
437
|
class MapTreeRequiredField<T extends FlexAllowedTypes>
|
|
@@ -530,10 +444,6 @@ class MapTreeRequiredField<T extends FlexAllowedTypes>
|
|
|
530
444
|
public set content(_: FlexTreeUnboxNodeUnion<T>) {
|
|
531
445
|
throw unsupportedUsageError("Setting an optional field");
|
|
532
446
|
}
|
|
533
|
-
|
|
534
|
-
public get boxedContent(): FlexTreeTypedNodeUnion<T> {
|
|
535
|
-
return this.boxedAt(0) ?? fail("Required field must have exactly one node");
|
|
536
|
-
}
|
|
537
447
|
}
|
|
538
448
|
|
|
539
449
|
class MapTreeOptionalField<T extends FlexAllowedTypes>
|
|
@@ -548,10 +458,6 @@ class MapTreeOptionalField<T extends FlexAllowedTypes>
|
|
|
548
458
|
public set content(_: FlexTreeUnboxNodeUnion<T> | undefined) {
|
|
549
459
|
throw unsupportedUsageError("Setting an optional field");
|
|
550
460
|
}
|
|
551
|
-
|
|
552
|
-
public get boxedContent(): FlexTreeTypedNodeUnion<T> | undefined {
|
|
553
|
-
return this.boxedAt(0);
|
|
554
|
-
}
|
|
555
461
|
}
|
|
556
462
|
|
|
557
463
|
class MapTreeSequenceField<T extends FlexAllowedTypes>
|
|
@@ -14,7 +14,6 @@ import {
|
|
|
14
14
|
import type { Assume, FlattenKeys } from "../../util/index.js";
|
|
15
15
|
import type { FieldKinds, SequenceFieldEditBuilder } from "../default-schema/index.js";
|
|
16
16
|
import type { FlexFieldKind } from "../modular-schema/index.js";
|
|
17
|
-
import type { LocalNodeKey, StableNodeKey } from "../node-key/index.js";
|
|
18
17
|
import type {
|
|
19
18
|
AllowedTypesToFlexInsertableTree,
|
|
20
19
|
InsertableFlexField,
|
|
@@ -35,7 +34,6 @@ import type {
|
|
|
35
34
|
} from "../typed-schema/index.js";
|
|
36
35
|
|
|
37
36
|
import type { FlexTreeContext } from "./context.js";
|
|
38
|
-
import type { FlexTreeNodeEvents } from "./treeEvents.js";
|
|
39
37
|
|
|
40
38
|
/**
|
|
41
39
|
* An anchor slot which records the {@link FlexTreeNode} associated with that anchor, if there is one.
|
|
@@ -99,14 +97,6 @@ export interface FlexTreeEntity<out TSchema = unknown> {
|
|
|
99
97
|
*/
|
|
100
98
|
readonly context: FlexTreeContext;
|
|
101
99
|
|
|
102
|
-
/**
|
|
103
|
-
* Gets the {@link TreeStatus} of this tree.
|
|
104
|
-
*
|
|
105
|
-
* @remarks
|
|
106
|
-
* For non-root fields, this is the status of the parent node, since fields do not have a separate lifetime.
|
|
107
|
-
*/
|
|
108
|
-
treeStatus(): TreeStatus;
|
|
109
|
-
|
|
110
100
|
/**
|
|
111
101
|
* Iterate through all nodes/fields in this field/node.
|
|
112
102
|
*
|
|
@@ -168,14 +158,6 @@ export interface FlexTreeNode extends FlexTreeEntity<FlexTreeNodeSchema> {
|
|
|
168
158
|
*/
|
|
169
159
|
readonly value?: TreeValue;
|
|
170
160
|
|
|
171
|
-
/**
|
|
172
|
-
* {@inheritDoc ISubscribable#on}
|
|
173
|
-
*/
|
|
174
|
-
on<K extends keyof FlexTreeNodeEvents>(
|
|
175
|
-
eventName: K,
|
|
176
|
-
listener: FlexTreeNodeEvents[K],
|
|
177
|
-
): () => void;
|
|
178
|
-
|
|
179
161
|
/**
|
|
180
162
|
* Gets a field of this node, if it is not empty.
|
|
181
163
|
*/
|
|
@@ -262,18 +244,6 @@ export interface FlexTreeField extends FlexTreeEntity<FlexFieldSchema> {
|
|
|
262
244
|
|
|
263
245
|
boxedIterator(): IterableIterator<FlexTreeNode>;
|
|
264
246
|
|
|
265
|
-
/**
|
|
266
|
-
* Check if this field is the same as a different field.
|
|
267
|
-
* This is defined to mean that both are in the same flex tree, and are the same field on the same node.
|
|
268
|
-
* This is more than just a reference comparison because unlike FlexTree nodes, fields are not cached on anchors and can be duplicated.
|
|
269
|
-
*
|
|
270
|
-
* @privateRemarks
|
|
271
|
-
* TODO:
|
|
272
|
-
* If practical, cache TreeField instances so use of this method can be replaced with `===` to compare object identity.
|
|
273
|
-
* Implementing this will require some care to preserve lazy-ness and work efficiently (without leaks) for empty fields, particularly on MapNodes.
|
|
274
|
-
*/
|
|
275
|
-
isSameAs(other: FlexTreeField): boolean;
|
|
276
|
-
|
|
277
247
|
/**
|
|
278
248
|
* Gets a node of this field by its index without unboxing.
|
|
279
249
|
* @param index - Zero-based index of the item to retrieve. Negative values are interpreted from the end of the sequence.
|
|
@@ -468,20 +438,8 @@ export interface FlexTreeFieldNode<in out TSchema extends FlexFieldNodeSchema>
|
|
|
468
438
|
|
|
469
439
|
/**
|
|
470
440
|
* The content this field node wraps.
|
|
471
|
-
* @remarks
|
|
472
|
-
* This is a version of {@link FlexTreeFieldNode.boxedContent} but does unboxing.
|
|
473
|
-
* Since field node are usually used to wrap fields which don't do unboxing (like {@link FlexTreeSequenceField})
|
|
474
441
|
*/
|
|
475
442
|
readonly content: FlexTreeUnboxField<TSchema["info"]>;
|
|
476
|
-
/**
|
|
477
|
-
* The field this field node wraps.
|
|
478
|
-
*
|
|
479
|
-
* @remarks
|
|
480
|
-
* Since field nodes are usually used to wrap fields which don't do unboxing (like {@link FlexTreeSequenceField}),
|
|
481
|
-
* this is usually the same as {@link FlexTreeFieldNode.content}.
|
|
482
|
-
* This is also the same as `[...this][0]`.
|
|
483
|
-
*/
|
|
484
|
-
readonly boxedContent: FlexTreeTypedField<TSchema["info"]>;
|
|
485
443
|
}
|
|
486
444
|
|
|
487
445
|
/**
|
|
@@ -507,11 +465,6 @@ export interface FlexTreeFieldNode<in out TSchema extends FlexFieldNodeSchema>
|
|
|
507
465
|
*/
|
|
508
466
|
export interface FlexTreeObjectNode extends FlexTreeNode {
|
|
509
467
|
readonly schema: FlexObjectNodeSchema;
|
|
510
|
-
|
|
511
|
-
/**
|
|
512
|
-
* {@link LocalNodeKey} that identifies this node.
|
|
513
|
-
*/
|
|
514
|
-
readonly localNodeKey?: LocalNodeKey;
|
|
515
468
|
}
|
|
516
469
|
|
|
517
470
|
/**
|
|
@@ -615,10 +568,8 @@ export const reservedObjectNodeFieldPropertyNames = [
|
|
|
615
568
|
"constructor",
|
|
616
569
|
"context",
|
|
617
570
|
"is",
|
|
618
|
-
"on",
|
|
619
571
|
"parentField",
|
|
620
572
|
"schema",
|
|
621
|
-
"treeStatus",
|
|
622
573
|
"tryGetField",
|
|
623
574
|
"type",
|
|
624
575
|
"value",
|
|
@@ -987,8 +938,6 @@ export interface FlexTreeRequiredField<in out TTypes extends FlexAllowedTypes>
|
|
|
987
938
|
extends FlexTreeField {
|
|
988
939
|
get content(): FlexTreeUnboxNodeUnion<TTypes>;
|
|
989
940
|
set content(content: FlexibleNodeContent<TTypes>);
|
|
990
|
-
|
|
991
|
-
readonly boxedContent: FlexTreeTypedNodeUnion<TTypes>;
|
|
992
941
|
}
|
|
993
942
|
|
|
994
943
|
/**
|
|
@@ -1009,17 +958,6 @@ export interface FlexTreeOptionalField<in out TTypes extends FlexAllowedTypes>
|
|
|
1009
958
|
extends FlexTreeField {
|
|
1010
959
|
get content(): FlexTreeUnboxNodeUnion<TTypes> | undefined;
|
|
1011
960
|
set content(newContent: FlexibleNodeContent<TTypes> | undefined);
|
|
1012
|
-
|
|
1013
|
-
readonly boxedContent?: FlexTreeTypedNodeUnion<TTypes>;
|
|
1014
|
-
}
|
|
1015
|
-
|
|
1016
|
-
/**
|
|
1017
|
-
* Field that contains an immutable {@link StableNodeKey} identifying this node.
|
|
1018
|
-
* @internal
|
|
1019
|
-
*/
|
|
1020
|
-
export interface FlexTreeNodeKeyField extends FlexTreeField {
|
|
1021
|
-
readonly localNodeKey: LocalNodeKey;
|
|
1022
|
-
readonly stableNodeKey: StableNodeKey;
|
|
1023
961
|
}
|
|
1024
962
|
|
|
1025
963
|
// #endregion
|
|
@@ -56,11 +56,16 @@ export type {
|
|
|
56
56
|
FlexTreeObjectNodeFields,
|
|
57
57
|
FlexTreeUnboxNode,
|
|
58
58
|
FlexTreeUnboxNodeUnion,
|
|
59
|
-
FlexTreeNodeKeyField,
|
|
60
59
|
IsArrayOfOne,
|
|
61
60
|
FlexibleNodeSubSequence,
|
|
62
61
|
} from "./flexTreeTypes.js";
|
|
63
62
|
|
|
64
|
-
export {
|
|
63
|
+
export {
|
|
64
|
+
assertFlexTreeEntityNotFreed,
|
|
65
|
+
isFreedSymbol,
|
|
66
|
+
LazyEntity,
|
|
67
|
+
} from "./lazyEntity.js";
|
|
65
68
|
|
|
66
69
|
export { getSchemaAndPolicy, indexForAt } from "./utilities.js";
|
|
70
|
+
|
|
71
|
+
export { treeStatusFromAnchorCache } from "./utilities.js";
|
|
@@ -16,7 +16,6 @@ import type { Context } from "./context.js";
|
|
|
16
16
|
import {
|
|
17
17
|
type FlexTreeEntity,
|
|
18
18
|
type FlexTreeEntityKind,
|
|
19
|
-
type TreeStatus,
|
|
20
19
|
flexTreeMarker,
|
|
21
20
|
} from "./flexTreeTypes.js";
|
|
22
21
|
|
|
@@ -65,8 +64,6 @@ export abstract class LazyEntity<TSchema = unknown, TAnchor = unknown>
|
|
|
65
64
|
public abstract boxedIterator(): IterableIterator<FlexTreeEntity>;
|
|
66
65
|
public abstract get [flexTreeMarker](): FlexTreeEntityKind;
|
|
67
66
|
|
|
68
|
-
public abstract treeStatus(): TreeStatus;
|
|
69
|
-
|
|
70
67
|
public [disposeSymbol](): void {
|
|
71
68
|
this.#lazyCursor.free();
|
|
72
69
|
this.context.withCursors.delete(this);
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
inCursorNode,
|
|
17
17
|
isCursor,
|
|
18
18
|
iterateCursorField,
|
|
19
|
-
|
|
19
|
+
rootFieldKey,
|
|
20
20
|
} from "../../core/index.js";
|
|
21
21
|
import {
|
|
22
22
|
assertValidIndex,
|
|
@@ -64,11 +64,7 @@ import {
|
|
|
64
64
|
} from "./lazyEntity.js";
|
|
65
65
|
import { type LazyTreeNode, makeTree } from "./lazyNode.js";
|
|
66
66
|
import { unboxedUnion } from "./unboxed.js";
|
|
67
|
-
import {
|
|
68
|
-
indexForAt,
|
|
69
|
-
treeStatusFromAnchorCache,
|
|
70
|
-
treeStatusFromDetachedField,
|
|
71
|
-
} from "./utilities.js";
|
|
67
|
+
import { indexForAt, treeStatusFromAnchorCache } from "./utilities.js";
|
|
72
68
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
73
69
|
|
|
74
70
|
/**
|
|
@@ -190,14 +186,6 @@ export abstract class LazyField<
|
|
|
190
186
|
return this.schema.equals(schema);
|
|
191
187
|
}
|
|
192
188
|
|
|
193
|
-
public isSameAs(other: FlexTreeField): boolean {
|
|
194
|
-
assert(
|
|
195
|
-
other.context === this.context,
|
|
196
|
-
0x77d /* Content from different flex trees should not be used together */,
|
|
197
|
-
);
|
|
198
|
-
return this.key === other.key && this.parent === other.parent;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
189
|
public get parent(): FlexTreeNode | undefined {
|
|
202
190
|
if (this[anchorSymbol].parent === undefined) {
|
|
203
191
|
return undefined;
|
|
@@ -267,23 +255,6 @@ export abstract class LazyField<
|
|
|
267
255
|
);
|
|
268
256
|
}
|
|
269
257
|
|
|
270
|
-
public treeStatus(): TreeStatus {
|
|
271
|
-
if (this[isFreedSymbol]()) {
|
|
272
|
-
return TreeStatus.Deleted;
|
|
273
|
-
}
|
|
274
|
-
const fieldAnchor = this[anchorSymbol];
|
|
275
|
-
const parentAnchor = fieldAnchor.parent;
|
|
276
|
-
// If the parentAnchor is undefined it is a detached field.
|
|
277
|
-
if (parentAnchor === undefined) {
|
|
278
|
-
return treeStatusFromDetachedField(keyAsDetachedField(fieldAnchor.fieldKey));
|
|
279
|
-
}
|
|
280
|
-
const parentAnchorNode = this.context.checkout.forest.anchors.locate(parentAnchor);
|
|
281
|
-
|
|
282
|
-
// As the "parentAnchor === undefined" case is handled above, parentAnchorNode should exist.
|
|
283
|
-
assert(parentAnchorNode !== undefined, 0x77e /* parentAnchorNode must exist. */);
|
|
284
|
-
return treeStatusFromAnchorCache(parentAnchorNode);
|
|
285
|
-
}
|
|
286
|
-
|
|
287
258
|
public getFieldPath(): FieldUpPath {
|
|
288
259
|
return this[cursorSymbol].getFieldPath();
|
|
289
260
|
}
|
|
@@ -293,10 +264,19 @@ export abstract class LazyField<
|
|
|
293
264
|
* This path is not valid to hold onto across edits: this must be recalled for each edit.
|
|
294
265
|
*/
|
|
295
266
|
public getFieldPathForEditing(): FieldUpPath {
|
|
296
|
-
if (this
|
|
297
|
-
|
|
267
|
+
if (!this[isFreedSymbol]()) {
|
|
268
|
+
if (
|
|
269
|
+
// Only allow editing if we are the root document field...
|
|
270
|
+
(this.parent === undefined && this[anchorSymbol].fieldKey === rootFieldKey) ||
|
|
271
|
+
// ...or are under a node in the document
|
|
272
|
+
(this.parent !== undefined &&
|
|
273
|
+
treeStatusFromAnchorCache(this.parent.anchorNode) === TreeStatus.InDocument)
|
|
274
|
+
) {
|
|
275
|
+
return this.getFieldPath();
|
|
276
|
+
}
|
|
298
277
|
}
|
|
299
|
-
|
|
278
|
+
|
|
279
|
+
throw new UsageError("Editing only allowed on fields with TreeStatus.InDocument status");
|
|
300
280
|
}
|
|
301
281
|
}
|
|
302
282
|
|
|
@@ -444,7 +424,7 @@ export class LazySequence<TTypes extends FlexAllowedTypes>
|
|
|
444
424
|
sourceEnd: number,
|
|
445
425
|
source?: FlexTreeSequenceField<FlexAllowedTypes>,
|
|
446
426
|
): void {
|
|
447
|
-
const sourceField = source
|
|
427
|
+
const sourceField = source ?? this;
|
|
448
428
|
|
|
449
429
|
// TODO: determine support for move across different sequence types
|
|
450
430
|
assert(
|
|
@@ -495,10 +475,6 @@ export class ReadonlyLazyValueField<TTypes extends FlexAllowedTypes>
|
|
|
495
475
|
public set content(newContent: FlexibleNodeContent<TTypes>) {
|
|
496
476
|
fail("cannot set content in readonly field");
|
|
497
477
|
}
|
|
498
|
-
|
|
499
|
-
public get boxedContent(): FlexTreeTypedNodeUnion<TTypes> {
|
|
500
|
-
return this.boxedAt(0) ?? fail("value node must have 1 item");
|
|
501
|
-
}
|
|
502
478
|
}
|
|
503
479
|
|
|
504
480
|
export class LazyValueField<TTypes extends FlexAllowedTypes>
|
|
@@ -532,10 +508,6 @@ export class LazyValueField<TTypes extends FlexAllowedTypes>
|
|
|
532
508
|
assert(content.length === 1, 0x780 /* value field content should normalize to one item */);
|
|
533
509
|
fieldEditor.set(content[0]);
|
|
534
510
|
}
|
|
535
|
-
|
|
536
|
-
public override get boxedContent(): FlexTreeTypedNodeUnion<TTypes> {
|
|
537
|
-
return this.boxedAt(0) ?? fail("value node must have 1 item");
|
|
538
|
-
}
|
|
539
511
|
}
|
|
540
512
|
|
|
541
513
|
export class LazyIdentifierField<TTypes extends FlexAllowedTypes>
|
|
@@ -589,10 +561,6 @@ export class LazyOptionalField<TTypes extends FlexAllowedTypes>
|
|
|
589
561
|
);
|
|
590
562
|
fieldEditor.set(content.length === 0 ? undefined : content[0], this.length === 0);
|
|
591
563
|
}
|
|
592
|
-
|
|
593
|
-
public get boxedContent(): FlexTreeTypedNodeUnion<TTypes> | undefined {
|
|
594
|
-
return this.length === 0 ? undefined : this.boxedAt(0);
|
|
595
|
-
}
|
|
596
564
|
}
|
|
597
565
|
|
|
598
566
|
export class LazyForbiddenField<TTypes extends FlexAllowedTypes> extends LazyField<
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { assert
|
|
6
|
+
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
7
|
|
|
8
8
|
import {
|
|
9
9
|
type Anchor,
|
|
@@ -55,7 +55,6 @@ import {
|
|
|
55
55
|
type FlexibleFieldContent,
|
|
56
56
|
type FlexibleNodeContent,
|
|
57
57
|
type PropertyNameFromFieldKey,
|
|
58
|
-
TreeStatus,
|
|
59
58
|
flexTreeMarker,
|
|
60
59
|
flexTreeSlot,
|
|
61
60
|
reservedObjectNodeFieldPropertyNamePrefixes,
|
|
@@ -66,13 +65,10 @@ import {
|
|
|
66
65
|
anchorSymbol,
|
|
67
66
|
cursorSymbol,
|
|
68
67
|
forgetAnchorSymbol,
|
|
69
|
-
isFreedSymbol,
|
|
70
68
|
tryMoveCursorToAnchorSymbol,
|
|
71
69
|
} from "./lazyEntity.js";
|
|
72
70
|
import { makeField } from "./lazyField.js";
|
|
73
|
-
import type { FlexTreeNodeEvents } from "./treeEvents.js";
|
|
74
71
|
import { unboxedField } from "./unboxed.js";
|
|
75
|
-
import { treeStatusFromAnchorCache } from "./utilities.js";
|
|
76
72
|
|
|
77
73
|
/**
|
|
78
74
|
* @param cursor - This does not take ownership of this cursor: Node will fork it as needed.
|
|
@@ -256,43 +252,6 @@ export abstract class LazyTreeNode<TSchema extends FlexTreeNodeSchema = FlexTree
|
|
|
256
252
|
|
|
257
253
|
return { parent: proxifiedField, index };
|
|
258
254
|
}
|
|
259
|
-
|
|
260
|
-
public override treeStatus(): TreeStatus {
|
|
261
|
-
if (this[isFreedSymbol]()) {
|
|
262
|
-
return TreeStatus.Deleted;
|
|
263
|
-
}
|
|
264
|
-
return treeStatusFromAnchorCache(this.anchorNode);
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
public on<K extends keyof FlexTreeNodeEvents>(
|
|
268
|
-
eventName: K,
|
|
269
|
-
listener: FlexTreeNodeEvents[K],
|
|
270
|
-
): () => void {
|
|
271
|
-
switch (eventName) {
|
|
272
|
-
case "changing": {
|
|
273
|
-
const unsubscribeFromChildrenChange = this.anchorNode.on(
|
|
274
|
-
"childrenChanging",
|
|
275
|
-
(anchorNode: AnchorNode) => listener(anchorNode),
|
|
276
|
-
);
|
|
277
|
-
return unsubscribeFromChildrenChange;
|
|
278
|
-
}
|
|
279
|
-
case "subtreeChanging": {
|
|
280
|
-
const unsubscribeFromSubtreeChange = this.anchorNode.on(
|
|
281
|
-
"subtreeChanging",
|
|
282
|
-
(anchorNode: AnchorNode) => listener(anchorNode),
|
|
283
|
-
);
|
|
284
|
-
return unsubscribeFromSubtreeChange;
|
|
285
|
-
}
|
|
286
|
-
case "nodeChanged": {
|
|
287
|
-
return this.anchorNode.on("childrenChangedAfterBatch", listener);
|
|
288
|
-
}
|
|
289
|
-
case "treeChanged": {
|
|
290
|
-
return this.anchorNode.on("subtreeChangedAfterBatch", listener);
|
|
291
|
-
}
|
|
292
|
-
default:
|
|
293
|
-
unreachableCase(eventName);
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
255
|
}
|
|
297
256
|
|
|
298
257
|
export class LazyMap<TSchema extends FlexMapNodeSchema>
|
|
@@ -434,12 +393,6 @@ export class LazyFieldNode<TSchema extends FlexFieldNodeSchema>
|
|
|
434
393
|
unboxedField(this.context, this.schema.info, cursor),
|
|
435
394
|
) as FlexTreeUnboxField<TSchema["info"]>;
|
|
436
395
|
}
|
|
437
|
-
|
|
438
|
-
public get boxedContent(): FlexTreeTypedField<TSchema["info"]> {
|
|
439
|
-
return inCursorField(this[cursorSymbol], EmptyKey, (cursor) =>
|
|
440
|
-
makeField(this.context, this.schema.info, cursor),
|
|
441
|
-
) as FlexTreeTypedField<TSchema["info"]>;
|
|
442
|
-
}
|
|
443
396
|
}
|
|
444
397
|
|
|
445
398
|
/**
|
|
@@ -158,6 +158,7 @@ export class ForestSummarizer implements Summarizable {
|
|
|
158
158
|
assert(this.forest.isEmpty, 0x797 /* forest must be empty */);
|
|
159
159
|
applyDelta(
|
|
160
160
|
{ build, fields: new Map(fieldChanges) },
|
|
161
|
+
undefined,
|
|
161
162
|
this.forest,
|
|
162
163
|
makeDetachedFieldIndex("init", this.revisionTagCodec, this.idCompressor),
|
|
163
164
|
);
|