@fluidframework/tree 2.4.0-297027 → 2.4.0-299374
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/.dependency-cruiser-known-violations.json +0 -14
- package/.vscode/settings.json +9 -1
- package/api-report/tree.alpha.api.md +178 -21
- package/api-report/tree.beta.api.md +46 -21
- package/api-report/tree.legacy.alpha.api.md +46 -21
- package/api-report/tree.legacy.public.api.md +46 -21
- package/api-report/tree.public.api.md +46 -21
- package/dist/alpha.d.ts +29 -1
- package/dist/beta.d.ts +2 -0
- package/dist/codec/codec.d.ts +4 -4
- package/dist/codec/codec.js.map +1 -1
- package/dist/codec/noopValidator.d.ts +1 -1
- package/dist/codec/noopValidator.js +1 -1
- package/dist/codec/noopValidator.js.map +1 -1
- package/dist/core/change-family/changeFamily.d.ts +2 -2
- package/dist/core/change-family/changeFamily.d.ts.map +1 -1
- package/dist/core/change-family/changeFamily.js.map +1 -1
- package/dist/core/change-family/editBuilder.d.ts +3 -2
- package/dist/core/change-family/editBuilder.d.ts.map +1 -1
- package/dist/core/change-family/editBuilder.js.map +1 -1
- package/dist/core/rebase/changeRebaser.d.ts +2 -1
- package/dist/core/rebase/changeRebaser.d.ts.map +1 -1
- package/dist/core/rebase/changeRebaser.js.map +1 -1
- package/dist/core/rebase/utils.js +1 -1
- package/dist/core/rebase/utils.js.map +1 -1
- package/dist/core/tree/anchorSet.d.ts +159 -2
- package/dist/core/tree/anchorSet.d.ts.map +1 -1
- package/dist/core/tree/anchorSet.js +54 -12
- package/dist/core/tree/anchorSet.js.map +1 -1
- package/dist/external-utilities/typeboxValidator.d.ts +1 -1
- package/dist/external-utilities/typeboxValidator.js +1 -1
- package/dist/external-utilities/typeboxValidator.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +4 -3
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js +41 -30
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +4 -6
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.d.ts +4 -0
- package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +38 -6
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +0 -1
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +46 -49
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/mitigatedChangeFamily.js +4 -4
- package/dist/feature-libraries/mitigatedChangeFamily.js.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +1 -1
- 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/modularChangeFamily.d.ts +12 -8
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +179 -60
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.d.ts +10 -9
- package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.js +9 -7
- package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts +3 -10
- package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/schemaSummarizer.js +1 -8
- package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
- package/dist/feature-libraries/sequence-field/compose.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/compose.js +32 -20
- package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
- package/dist/feature-libraries/sequence-field/invert.d.ts +6 -1
- package/dist/feature-libraries/sequence-field/invert.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/invert.js +25 -9
- package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +17 -16
- package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js +19 -11
- package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
- package/dist/feature-libraries/treeCompressionUtils.d.ts +1 -1
- package/dist/feature-libraries/treeCompressionUtils.js +1 -1
- package/dist/feature-libraries/treeCompressionUtils.js.map +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/internalTypes.d.ts +2 -2
- package/dist/internalTypes.d.ts.map +1 -1
- package/dist/internalTypes.js.map +1 -1
- package/dist/legacy.d.ts +2 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/public.d.ts +2 -0
- package/dist/shared-tree/index.d.ts +2 -1
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js +5 -1
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +1 -14
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +24 -9
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +21 -9
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts +2 -2
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.js +4 -4
- package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/dist/shared-tree/sharedTreeEditBuilder.d.ts +2 -2
- package/dist/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeEditBuilder.js +15 -11
- package/dist/shared-tree/sharedTreeEditBuilder.js.map +1 -1
- package/dist/shared-tree/treeApi.d.ts +6 -6
- package/dist/shared-tree/treeApi.d.ts.map +1 -1
- package/dist/shared-tree/treeApi.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +4 -3
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/branch.d.ts +2 -3
- package/dist/shared-tree-core/branch.d.ts.map +1 -1
- package/dist/shared-tree-core/branch.js +10 -11
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/shared-tree-core/defaultResubmitMachine.d.ts +5 -5
- package/dist/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
- package/dist/shared-tree-core/defaultResubmitMachine.js +4 -4
- package/dist/shared-tree-core/defaultResubmitMachine.js.map +1 -1
- package/dist/shared-tree-core/editManager.d.ts.map +1 -1
- package/dist/shared-tree-core/editManager.js +1 -1
- package/dist/shared-tree-core/editManager.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +2 -2
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/simple-tree/api/conciseTree.d.ts +29 -0
- package/dist/simple-tree/api/conciseTree.d.ts.map +1 -0
- package/dist/simple-tree/api/conciseTree.js +25 -0
- package/dist/simple-tree/api/conciseTree.js.map +1 -0
- package/dist/simple-tree/api/customTree.d.ts +44 -0
- package/dist/simple-tree/api/customTree.d.ts.map +1 -0
- package/dist/simple-tree/api/customTree.js +63 -0
- package/dist/simple-tree/api/customTree.js.map +1 -0
- package/dist/simple-tree/api/index.d.ts +7 -2
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +5 -1
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/schemaCreationUtilities.d.ts +41 -26
- package/dist/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaCreationUtilities.js +43 -15
- package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
- package/dist/simple-tree/api/schemaFactory.d.ts +1 -2
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +8 -8
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +1 -2
- package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
- package/dist/simple-tree/api/storedSchema.d.ts +78 -0
- package/dist/simple-tree/api/storedSchema.d.ts.map +1 -0
- package/dist/simple-tree/api/storedSchema.js +107 -0
- package/dist/simple-tree/api/storedSchema.js.map +1 -0
- package/dist/simple-tree/api/testRecursiveDomain.d.ts +10 -10
- package/dist/simple-tree/api/tree.d.ts +12 -3
- package/dist/simple-tree/api/tree.d.ts.map +1 -1
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.js +5 -5
- package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/{typesUnsafe.d.ts → api/typesUnsafe.d.ts} +58 -10
- package/dist/simple-tree/api/typesUnsafe.d.ts.map +1 -0
- package/dist/simple-tree/api/typesUnsafe.js.map +1 -0
- package/dist/simple-tree/api/verboseTree.d.ts +6 -20
- package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/dist/simple-tree/api/verboseTree.js +10 -48
- package/dist/simple-tree/api/verboseTree.js.map +1 -1
- package/dist/simple-tree/arrayNode.d.ts +14 -3
- package/dist/simple-tree/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/arrayNode.js +1 -2
- package/dist/simple-tree/arrayNode.js.map +1 -1
- package/dist/simple-tree/core/index.d.ts +1 -1
- package/dist/simple-tree/core/index.d.ts.map +1 -1
- package/dist/simple-tree/core/index.js +2 -1
- package/dist/simple-tree/core/index.js.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.d.ts +9 -0
- package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +14 -1
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.d.ts +6 -5
- package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.js +3 -1
- package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/dist/simple-tree/core/withType.d.ts +3 -1
- package/dist/simple-tree/core/withType.d.ts.map +1 -1
- package/dist/simple-tree/core/withType.js.map +1 -1
- package/dist/simple-tree/flexList.d.ts.map +1 -0
- package/dist/simple-tree/flexList.js.map +1 -0
- package/dist/simple-tree/index.d.ts +6 -7
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +5 -3
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/mapNode.js +2 -3
- 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 +3 -4
- package/dist/simple-tree/objectNode.js.map +1 -1
- package/dist/simple-tree/schemaTypes.d.ts +60 -7
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js +11 -6
- package/dist/simple-tree/schemaTypes.js.map +1 -1
- package/dist/simple-tree/toFlexSchema.d.ts.map +1 -1
- package/dist/simple-tree/toFlexSchema.js +13 -15
- package/dist/simple-tree/toFlexSchema.js.map +1 -1
- package/dist/simple-tree/toMapTree.d.ts +4 -2
- package/dist/simple-tree/toMapTree.d.ts.map +1 -1
- package/dist/simple-tree/toMapTree.js +3 -3
- package/dist/simple-tree/toMapTree.js.map +1 -1
- package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
- package/dist/simple-tree/treeNodeValid.js +2 -1
- package/dist/simple-tree/treeNodeValid.js.map +1 -1
- package/dist/treeFactory.d.ts +1 -0
- package/dist/treeFactory.d.ts.map +1 -1
- package/dist/treeFactory.js +1 -0
- package/dist/treeFactory.js.map +1 -1
- package/dist/util/utils.d.ts +10 -8
- package/dist/util/utils.d.ts.map +1 -1
- package/dist/util/utils.js.map +1 -1
- package/docs/main/detached-trees.md +8 -8
- package/lib/alpha.d.ts +29 -1
- package/lib/beta.d.ts +2 -0
- package/lib/codec/codec.d.ts +4 -4
- package/lib/codec/codec.js.map +1 -1
- package/lib/codec/noopValidator.d.ts +1 -1
- package/lib/codec/noopValidator.js +1 -1
- package/lib/codec/noopValidator.js.map +1 -1
- package/lib/core/change-family/changeFamily.d.ts +2 -2
- package/lib/core/change-family/changeFamily.d.ts.map +1 -1
- package/lib/core/change-family/changeFamily.js.map +1 -1
- package/lib/core/change-family/editBuilder.d.ts +3 -2
- package/lib/core/change-family/editBuilder.d.ts.map +1 -1
- package/lib/core/change-family/editBuilder.js.map +1 -1
- package/lib/core/rebase/changeRebaser.d.ts +2 -1
- package/lib/core/rebase/changeRebaser.d.ts.map +1 -1
- package/lib/core/rebase/changeRebaser.js.map +1 -1
- package/lib/core/rebase/utils.js +1 -1
- package/lib/core/rebase/utils.js.map +1 -1
- package/lib/core/tree/anchorSet.d.ts +159 -2
- package/lib/core/tree/anchorSet.d.ts.map +1 -1
- package/lib/core/tree/anchorSet.js +54 -12
- package/lib/core/tree/anchorSet.js.map +1 -1
- package/lib/external-utilities/typeboxValidator.d.ts +1 -1
- package/lib/external-utilities/typeboxValidator.js +1 -1
- package/lib/external-utilities/typeboxValidator.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +4 -3
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js +41 -30
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +4 -6
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.d.ts +4 -0
- package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +36 -5
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +0 -1
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +0 -1
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/mitigatedChangeFamily.js +4 -4
- package/lib/feature-libraries/mitigatedChangeFamily.js.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +1 -1
- 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/modularChangeFamily.d.ts +12 -8
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +180 -61
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.d.ts +10 -9
- package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.js +9 -7
- package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts +3 -10
- package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/schemaSummarizer.js +1 -8
- package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
- package/lib/feature-libraries/sequence-field/compose.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/compose.js +32 -20
- package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
- package/lib/feature-libraries/sequence-field/invert.d.ts +6 -1
- package/lib/feature-libraries/sequence-field/invert.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/invert.js +25 -9
- package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +17 -16
- package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js +19 -11
- package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
- package/lib/feature-libraries/treeCompressionUtils.d.ts +1 -1
- package/lib/feature-libraries/treeCompressionUtils.js +1 -1
- package/lib/feature-libraries/treeCompressionUtils.js.map +1 -1
- package/lib/index.d.ts +6 -5
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -3
- package/lib/index.js.map +1 -1
- package/lib/internalTypes.d.ts +2 -2
- package/lib/internalTypes.d.ts.map +1 -1
- package/lib/internalTypes.js.map +1 -1
- package/lib/legacy.d.ts +2 -0
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/public.d.ts +2 -0
- package/lib/shared-tree/index.d.ts +2 -1
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js +2 -1
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +2 -15
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +24 -9
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +20 -9
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts +2 -2
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.js +4 -4
- package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/lib/shared-tree/sharedTreeEditBuilder.d.ts +2 -2
- package/lib/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeEditBuilder.js +15 -11
- package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
- package/lib/shared-tree/treeApi.d.ts +6 -6
- package/lib/shared-tree/treeApi.d.ts.map +1 -1
- package/lib/shared-tree/treeApi.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +5 -4
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/branch.d.ts +2 -3
- package/lib/shared-tree-core/branch.d.ts.map +1 -1
- package/lib/shared-tree-core/branch.js +11 -12
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/shared-tree-core/defaultResubmitMachine.d.ts +5 -5
- package/lib/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
- package/lib/shared-tree-core/defaultResubmitMachine.js +4 -4
- package/lib/shared-tree-core/defaultResubmitMachine.js.map +1 -1
- package/lib/shared-tree-core/editManager.d.ts.map +1 -1
- package/lib/shared-tree-core/editManager.js +2 -2
- package/lib/shared-tree-core/editManager.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +2 -2
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/simple-tree/api/conciseTree.d.ts +29 -0
- package/lib/simple-tree/api/conciseTree.d.ts.map +1 -0
- package/lib/simple-tree/api/conciseTree.js +21 -0
- package/lib/simple-tree/api/conciseTree.js.map +1 -0
- package/lib/simple-tree/api/customTree.d.ts +44 -0
- package/lib/simple-tree/api/customTree.d.ts.map +1 -0
- package/lib/simple-tree/api/customTree.js +59 -0
- package/lib/simple-tree/api/customTree.js.map +1 -0
- package/lib/simple-tree/api/index.d.ts +7 -2
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +1 -0
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/schemaCreationUtilities.d.ts +41 -26
- package/lib/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaCreationUtilities.js +43 -15
- package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
- package/lib/simple-tree/api/schemaFactory.d.ts +1 -2
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +1 -1
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +1 -2
- package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
- package/lib/simple-tree/api/storedSchema.d.ts +78 -0
- package/lib/simple-tree/api/storedSchema.d.ts.map +1 -0
- package/lib/simple-tree/api/storedSchema.js +101 -0
- package/lib/simple-tree/api/storedSchema.js.map +1 -0
- package/lib/simple-tree/api/testRecursiveDomain.d.ts +10 -10
- package/lib/simple-tree/api/tree.d.ts +12 -3
- package/lib/simple-tree/api/tree.d.ts.map +1 -1
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.js +3 -3
- package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
- package/lib/simple-tree/{typesUnsafe.d.ts → api/typesUnsafe.d.ts} +58 -10
- package/lib/simple-tree/api/typesUnsafe.d.ts.map +1 -0
- package/lib/simple-tree/api/typesUnsafe.js.map +1 -0
- package/lib/simple-tree/api/verboseTree.d.ts +6 -20
- package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/lib/simple-tree/api/verboseTree.js +11 -49
- package/lib/simple-tree/api/verboseTree.js.map +1 -1
- package/lib/simple-tree/arrayNode.d.ts +14 -3
- package/lib/simple-tree/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/arrayNode.js +1 -2
- package/lib/simple-tree/arrayNode.js.map +1 -1
- package/lib/simple-tree/core/index.d.ts +1 -1
- package/lib/simple-tree/core/index.d.ts.map +1 -1
- package/lib/simple-tree/core/index.js +1 -1
- package/lib/simple-tree/core/index.js.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.d.ts +9 -0
- package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +12 -0
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.d.ts +6 -5
- package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js +3 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/lib/simple-tree/core/withType.d.ts +3 -1
- package/lib/simple-tree/core/withType.d.ts.map +1 -1
- package/lib/simple-tree/core/withType.js.map +1 -1
- package/lib/simple-tree/flexList.d.ts.map +1 -0
- package/lib/simple-tree/flexList.js.map +1 -0
- package/lib/simple-tree/index.d.ts +6 -7
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +3 -4
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/mapNode.js +1 -2
- 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 +1 -2
- package/lib/simple-tree/objectNode.js.map +1 -1
- package/lib/simple-tree/schemaTypes.d.ts +60 -7
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js +6 -1
- package/lib/simple-tree/schemaTypes.js.map +1 -1
- package/lib/simple-tree/toFlexSchema.d.ts.map +1 -1
- package/lib/simple-tree/toFlexSchema.js +1 -3
- package/lib/simple-tree/toFlexSchema.js.map +1 -1
- package/lib/simple-tree/toMapTree.d.ts +4 -2
- package/lib/simple-tree/toMapTree.d.ts.map +1 -1
- package/lib/simple-tree/toMapTree.js +3 -3
- package/lib/simple-tree/toMapTree.js.map +1 -1
- package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
- package/lib/simple-tree/treeNodeValid.js +2 -1
- package/lib/simple-tree/treeNodeValid.js.map +1 -1
- package/lib/treeFactory.d.ts +1 -0
- package/lib/treeFactory.d.ts.map +1 -1
- package/lib/treeFactory.js +1 -0
- package/lib/treeFactory.js.map +1 -1
- package/lib/util/utils.d.ts +10 -8
- package/lib/util/utils.d.ts.map +1 -1
- package/lib/util/utils.js.map +1 -1
- package/package.json +44 -27
- package/src/codec/codec.ts +4 -4
- package/src/codec/noopValidator.ts +1 -1
- package/src/core/change-family/changeFamily.ts +5 -2
- package/src/core/change-family/editBuilder.ts +3 -2
- package/src/core/rebase/changeRebaser.ts +6 -1
- package/src/core/rebase/utils.ts +1 -1
- package/src/core/tree/anchorSet.ts +63 -13
- package/src/external-utilities/typeboxValidator.ts +1 -1
- package/src/feature-libraries/default-schema/defaultEditBuilder.ts +92 -47
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +7 -7
- package/src/feature-libraries/flex-tree/lazyField.ts +44 -7
- package/src/feature-libraries/index.ts +0 -10
- package/src/feature-libraries/mitigatedChangeFamily.ts +11 -4
- package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +1 -0
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +218 -175
- package/src/feature-libraries/optional-field/optionalField.ts +21 -17
- package/src/feature-libraries/schema-index/schemaSummarizer.ts +2 -10
- package/src/feature-libraries/sequence-field/compose.ts +67 -58
- package/src/feature-libraries/sequence-field/invert.ts +30 -6
- package/src/feature-libraries/sequence-field/sequenceFieldEditor.ts +65 -19
- package/src/feature-libraries/treeCompressionUtils.ts +1 -1
- package/src/index.ts +26 -6
- package/src/internalTypes.ts +4 -1
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/index.ts +5 -0
- package/src/shared-tree/schematizingTreeView.ts +7 -16
- package/src/shared-tree/sharedTree.ts +55 -23
- package/src/shared-tree/sharedTreeChangeFamily.ts +5 -1
- package/src/shared-tree/sharedTreeEditBuilder.ts +23 -12
- package/src/shared-tree/treeApi.ts +19 -9
- package/src/shared-tree/treeCheckout.ts +7 -6
- package/src/shared-tree-core/branch.ts +11 -14
- package/src/shared-tree-core/defaultResubmitMachine.ts +4 -4
- package/src/shared-tree-core/editManager.ts +2 -1
- package/src/shared-tree-core/sharedTreeCore.ts +4 -2
- package/src/simple-tree/api/conciseTree.ts +58 -0
- package/src/simple-tree/api/customTree.ts +119 -0
- package/src/simple-tree/api/index.ts +39 -1
- package/src/simple-tree/api/schemaCreationUtilities.ts +55 -36
- package/src/simple-tree/api/schemaFactory.ts +4 -6
- package/src/simple-tree/api/schemaFactoryRecursive.ts +1 -2
- package/src/simple-tree/api/storedSchema.ts +126 -0
- package/src/simple-tree/api/tree.ts +24 -2
- package/src/simple-tree/api/treeNodeApi.ts +3 -8
- package/src/simple-tree/{typesUnsafe.ts → api/typesUnsafe.ts} +95 -21
- package/src/simple-tree/api/verboseTree.ts +21 -76
- package/src/simple-tree/arrayNode.ts +35 -15
- package/src/simple-tree/core/index.ts +1 -0
- package/src/simple-tree/core/treeNodeKernel.ts +13 -0
- package/src/simple-tree/core/treeNodeSchema.ts +7 -5
- package/src/simple-tree/core/unhydratedFlexTree.ts +6 -1
- package/src/simple-tree/core/withType.ts +10 -1
- package/src/simple-tree/index.ts +41 -21
- package/src/simple-tree/mapNode.ts +1 -1
- package/src/simple-tree/objectNode.ts +1 -1
- package/src/simple-tree/schemaTypes.ts +70 -11
- package/src/simple-tree/toFlexSchema.ts +1 -3
- package/src/simple-tree/toMapTree.ts +7 -4
- package/src/simple-tree/treeNodeValid.ts +2 -1
- package/src/treeFactory.ts +1 -0
- package/src/util/utils.ts +10 -8
- package/dist/feature-libraries/flex-tree/unboxed.d.ts +0 -12
- package/dist/feature-libraries/flex-tree/unboxed.d.ts.map +0 -1
- package/dist/feature-libraries/flex-tree/unboxed.js +0 -20
- package/dist/feature-libraries/flex-tree/unboxed.js.map +0 -1
- package/dist/feature-libraries/typed-schema/flexList.d.ts.map +0 -1
- package/dist/feature-libraries/typed-schema/flexList.js.map +0 -1
- package/dist/feature-libraries/typed-schema/index.d.ts +0 -7
- package/dist/feature-libraries/typed-schema/index.d.ts.map +0 -1
- package/dist/feature-libraries/typed-schema/index.js +0 -12
- package/dist/feature-libraries/typed-schema/index.js.map +0 -1
- package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts +0 -14
- package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +0 -1
- package/dist/feature-libraries/typed-schema/typedTreeSchema.js +0 -7
- package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +0 -1
- package/dist/simple-tree/proxyBinding.d.ts +0 -15
- package/dist/simple-tree/proxyBinding.d.ts.map +0 -1
- package/dist/simple-tree/proxyBinding.js +0 -22
- package/dist/simple-tree/proxyBinding.js.map +0 -1
- package/dist/simple-tree/typesUnsafe.d.ts.map +0 -1
- package/dist/simple-tree/typesUnsafe.js.map +0 -1
- package/lib/feature-libraries/flex-tree/unboxed.d.ts +0 -12
- package/lib/feature-libraries/flex-tree/unboxed.d.ts.map +0 -1
- package/lib/feature-libraries/flex-tree/unboxed.js +0 -16
- package/lib/feature-libraries/flex-tree/unboxed.js.map +0 -1
- package/lib/feature-libraries/typed-schema/flexList.d.ts.map +0 -1
- package/lib/feature-libraries/typed-schema/flexList.js.map +0 -1
- package/lib/feature-libraries/typed-schema/index.d.ts +0 -7
- package/lib/feature-libraries/typed-schema/index.d.ts.map +0 -1
- package/lib/feature-libraries/typed-schema/index.js +0 -6
- package/lib/feature-libraries/typed-schema/index.js.map +0 -1
- package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts +0 -14
- package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +0 -1
- package/lib/feature-libraries/typed-schema/typedTreeSchema.js +0 -6
- package/lib/feature-libraries/typed-schema/typedTreeSchema.js.map +0 -1
- package/lib/simple-tree/proxyBinding.d.ts +0 -15
- package/lib/simple-tree/proxyBinding.d.ts.map +0 -1
- package/lib/simple-tree/proxyBinding.js +0 -18
- package/lib/simple-tree/proxyBinding.js.map +0 -1
- package/lib/simple-tree/typesUnsafe.d.ts.map +0 -1
- package/lib/simple-tree/typesUnsafe.js.map +0 -1
- package/src/feature-libraries/flex-tree/unboxed.ts +0 -24
- package/src/feature-libraries/typed-schema/README.md +0 -6
- package/src/feature-libraries/typed-schema/index.ts +0 -16
- package/src/feature-libraries/typed-schema/typedTreeSchema.ts +0 -14
- package/src/simple-tree/proxyBinding.ts +0 -20
- /package/dist/simple-tree/{typesUnsafe.js → api/typesUnsafe.js} +0 -0
- /package/dist/{feature-libraries/typed-schema → simple-tree}/flexList.d.ts +0 -0
- /package/dist/{feature-libraries/typed-schema → simple-tree}/flexList.js +0 -0
- /package/lib/simple-tree/{typesUnsafe.js → api/typesUnsafe.js} +0 -0
- /package/lib/{feature-libraries/typed-schema → simple-tree}/flexList.d.ts +0 -0
- /package/lib/{feature-libraries/typed-schema → simple-tree}/flexList.js +0 -0
- /package/src/simple-tree/{ProxyBinding.md → core/TreeNodeBinding.md} +0 -0
- /package/src/{feature-libraries/typed-schema → simple-tree}/flexList.ts +0 -0
|
@@ -266,6 +266,7 @@ export const optionalChangeRebaser: FieldChangeRebaser<OptionalChangeset> = {
|
|
|
266
266
|
change: OptionalChangeset,
|
|
267
267
|
isRollback: boolean,
|
|
268
268
|
genId: IdAllocator<ChangesetLocalId>,
|
|
269
|
+
revision: RevisionTag | undefined,
|
|
269
270
|
): OptionalChangeset => {
|
|
270
271
|
const { moves, childChanges } = change;
|
|
271
272
|
|
|
@@ -298,11 +299,13 @@ export const optionalChangeRebaser: FieldChangeRebaser<OptionalChangeset> = {
|
|
|
298
299
|
change.valueReplace.src === undefined
|
|
299
300
|
? {
|
|
300
301
|
isEmpty: true,
|
|
301
|
-
dst: makeChangeAtomId(genId.allocate()),
|
|
302
|
+
dst: makeChangeAtomId(genId.allocate(), revision),
|
|
302
303
|
}
|
|
303
304
|
: {
|
|
304
305
|
isEmpty: false,
|
|
305
|
-
dst: isRollback
|
|
306
|
+
dst: isRollback
|
|
307
|
+
? change.valueReplace.src
|
|
308
|
+
: makeChangeAtomId(genId.allocate(), revision),
|
|
306
309
|
};
|
|
307
310
|
if (change.valueReplace.isEmpty === false) {
|
|
308
311
|
replace.src = change.valueReplace.dst;
|
|
@@ -312,7 +315,7 @@ export const optionalChangeRebaser: FieldChangeRebaser<OptionalChangeset> = {
|
|
|
312
315
|
inverted.valueReplace = {
|
|
313
316
|
isEmpty: false,
|
|
314
317
|
src: "self",
|
|
315
|
-
dst: makeChangeAtomId(genId.allocate()),
|
|
318
|
+
dst: makeChangeAtomId(genId.allocate(), revision),
|
|
316
319
|
};
|
|
317
320
|
}
|
|
318
321
|
}
|
|
@@ -581,52 +584,53 @@ export function taggedRegister(id: RegisterId, revision: RevisionTag | undefined
|
|
|
581
584
|
|
|
582
585
|
export interface OptionalFieldEditor extends FieldEditor<OptionalChangeset> {
|
|
583
586
|
/**
|
|
584
|
-
* Creates a change which
|
|
585
|
-
*
|
|
587
|
+
* Creates a change which will replace the content already in the field (if any at the time the change applies)
|
|
588
|
+
* with new content.
|
|
589
|
+
* The content in the field will be moved to the `ids.detach` register.
|
|
590
|
+
* The content in the `ids.detach` register will be moved to into the field.
|
|
586
591
|
* @param wasEmpty - whether the field is empty when creating this change
|
|
587
|
-
* @param
|
|
588
|
-
* @param buildId - the ID associated with the creation of the `newContent`.
|
|
592
|
+
* @param ids - the "fill" and "detach" ids associated with the change.
|
|
589
593
|
*/
|
|
590
594
|
set(
|
|
591
595
|
wasEmpty: boolean,
|
|
592
596
|
ids: {
|
|
593
|
-
fill:
|
|
594
|
-
detach:
|
|
597
|
+
fill: ChangeAtomId;
|
|
598
|
+
detach: ChangeAtomId;
|
|
595
599
|
},
|
|
596
600
|
): OptionalChangeset;
|
|
597
601
|
|
|
598
602
|
/**
|
|
599
603
|
* Creates a change which clears the field's contents (if any).
|
|
600
604
|
* @param wasEmpty - whether the field is empty when creating this change
|
|
601
|
-
* @param
|
|
605
|
+
* @param detachId - the ID of the register that existing field content (if any) will be moved to.
|
|
602
606
|
*/
|
|
603
|
-
clear(wasEmpty: boolean,
|
|
607
|
+
clear(wasEmpty: boolean, detachId: ChangeAtomId): OptionalChangeset;
|
|
604
608
|
}
|
|
605
609
|
|
|
606
610
|
export const optionalFieldEditor: OptionalFieldEditor = {
|
|
607
611
|
set: (
|
|
608
612
|
wasEmpty: boolean,
|
|
609
613
|
ids: {
|
|
610
|
-
fill:
|
|
614
|
+
fill: ChangeAtomId;
|
|
611
615
|
// Should be interpreted as a set of an empty field if undefined.
|
|
612
|
-
detach:
|
|
616
|
+
detach: ChangeAtomId;
|
|
613
617
|
},
|
|
614
618
|
): OptionalChangeset => ({
|
|
615
619
|
moves: [],
|
|
616
620
|
childChanges: [],
|
|
617
621
|
valueReplace: {
|
|
618
622
|
isEmpty: wasEmpty,
|
|
619
|
-
src:
|
|
620
|
-
dst:
|
|
623
|
+
src: ids.fill,
|
|
624
|
+
dst: ids.detach,
|
|
621
625
|
},
|
|
622
626
|
}),
|
|
623
627
|
|
|
624
|
-
clear: (wasEmpty: boolean, detachId:
|
|
628
|
+
clear: (wasEmpty: boolean, detachId: ChangeAtomId): OptionalChangeset => ({
|
|
625
629
|
moves: [],
|
|
626
630
|
childChanges: [],
|
|
627
631
|
valueReplace: {
|
|
628
632
|
isEmpty: wasEmpty,
|
|
629
|
-
dst:
|
|
633
|
+
dst: detachId,
|
|
630
634
|
},
|
|
631
635
|
}),
|
|
632
636
|
|
|
@@ -29,7 +29,6 @@ import type {
|
|
|
29
29
|
SummaryElementParser,
|
|
30
30
|
SummaryElementStringifier,
|
|
31
31
|
} from "../../shared-tree-core/index.js";
|
|
32
|
-
import type { JsonCompatible } from "../../util/index.js";
|
|
33
32
|
import type { CollabWindow } from "../incrementalSummarizationUtils.js";
|
|
34
33
|
|
|
35
34
|
import { encodeRepo, makeSchemaCodec } from "./codec.js";
|
|
@@ -127,18 +126,11 @@ export class SchemaSummarizer implements Summarizable {
|
|
|
127
126
|
}
|
|
128
127
|
|
|
129
128
|
/**
|
|
130
|
-
* Dumps schema into a deterministic JSON compatible semi-human readable
|
|
129
|
+
* Dumps schema into a deterministic JSON compatible semi-human readable format.
|
|
131
130
|
*
|
|
132
131
|
* @remarks
|
|
133
132
|
* This can be used to help inspect schema for debugging, and to save a snapshot of schema to help detect and review changes to an applications schema.
|
|
134
|
-
*
|
|
135
|
-
* This format may change across major versions of this package: such changes are considered breaking.
|
|
136
|
-
* Beyond that, no compatibility guarantee is provided for this format: it should never be relied upon to load data, it should only be used for comparing outputs from this function.
|
|
137
|
-
* @privateRemarks
|
|
138
|
-
* This currently uses the schema summary format, but that could be changed to something more human readable (particularly if the encoded format becomes less human readable).
|
|
139
|
-
* This intentionally does not leak the format types in the API.
|
|
140
|
-
* @internal
|
|
141
133
|
*/
|
|
142
|
-
export function encodeTreeSchema(schema: TreeStoredSchema):
|
|
134
|
+
export function encodeTreeSchema(schema: TreeStoredSchema): Format {
|
|
143
135
|
return encodeRepo(schema);
|
|
144
136
|
}
|
|
@@ -34,6 +34,7 @@ import {
|
|
|
34
34
|
setMoveEffect,
|
|
35
35
|
} from "./moveEffectTable.js";
|
|
36
36
|
import {
|
|
37
|
+
type Attach,
|
|
37
38
|
type CellMark,
|
|
38
39
|
type Changeset,
|
|
39
40
|
type Detach,
|
|
@@ -277,13 +278,16 @@ function composeMarksIgnoreChild(
|
|
|
277
278
|
const baseAttachAndDetach = asAttachAndDetach(baseMark);
|
|
278
279
|
const newOutputId = getOutputCellId(newAttachAndDetach);
|
|
279
280
|
|
|
281
|
+
const originalAttach = { ...baseAttachAndDetach.attach };
|
|
282
|
+
const finalDetach = { ...newAttachAndDetach.detach };
|
|
283
|
+
|
|
284
|
+
handleMovePivot(baseMark.count, originalAttach, finalDetach, moveEffects);
|
|
285
|
+
|
|
280
286
|
if (areEqualCellIds(newOutputId, baseAttachAndDetach.cellId)) {
|
|
281
287
|
return { count: baseAttachAndDetach.count, cellId: baseAttachAndDetach.cellId };
|
|
282
288
|
}
|
|
283
289
|
|
|
284
290
|
// `newMark`'s attach portion cancels with `baseMark`'s detach portion.
|
|
285
|
-
const originalAttach = { ...baseAttachAndDetach.attach };
|
|
286
|
-
const finalDetach = { ...newAttachAndDetach.detach };
|
|
287
291
|
const detachRevision = finalDetach.revision;
|
|
288
292
|
if (detachRevision !== undefined) {
|
|
289
293
|
finalDetach.revision = detachRevision;
|
|
@@ -368,76 +372,81 @@ function composeMarksIgnoreChild(
|
|
|
368
372
|
const attach = extractMarkEffect(baseMark);
|
|
369
373
|
const detach = extractMarkEffect(newMark);
|
|
370
374
|
|
|
371
|
-
|
|
372
|
-
const finalSource = getEndpoint(attach);
|
|
373
|
-
const finalDest = getEndpoint(detach);
|
|
375
|
+
handleMovePivot(baseMark.count, attach, detach, moveEffects);
|
|
374
376
|
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
377
|
+
if (areEqualCellIds(getOutputCellId(newMark), baseMark.cellId)) {
|
|
378
|
+
// The output and input cell IDs are the same, so this mark has no effect.
|
|
379
|
+
return { count: baseMark.count, cellId: baseMark.cellId };
|
|
380
|
+
}
|
|
381
|
+
return normalizeCellRename(baseMark.cellId, baseMark.count, attach, detach);
|
|
382
|
+
} else {
|
|
383
|
+
const length = baseMark.count;
|
|
384
|
+
return createNoopMark(length, undefined);
|
|
385
|
+
}
|
|
386
|
+
}
|
|
382
387
|
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
388
|
+
/**
|
|
389
|
+
* Checks if `baseAttach` and `newDetach` are both moves, and if so updates their move endpoints as appropriate,
|
|
390
|
+
* and removes their `finalEndpoint` endpoint fields. Note that can mutate `baseAttach` and `newDetach`.
|
|
391
|
+
* If the effects are not both moves this function does nothing.
|
|
392
|
+
* @param count - The number of cells targeted
|
|
393
|
+
* @param baseAttach - The base attach effect at this location
|
|
394
|
+
* @param newDetach - The new detach effect at this location
|
|
395
|
+
*/
|
|
396
|
+
function handleMovePivot(
|
|
397
|
+
count: number,
|
|
398
|
+
baseAttach: Attach,
|
|
399
|
+
newDetach: Detach,
|
|
400
|
+
moveEffects: MoveEffectTable,
|
|
401
|
+
): void {
|
|
402
|
+
if (isMoveIn(baseAttach) && isMoveOut(newDetach)) {
|
|
403
|
+
const finalSource = getEndpoint(baseAttach);
|
|
404
|
+
const finalDest = getEndpoint(newDetach);
|
|
390
405
|
|
|
391
|
-
|
|
392
|
-
setTruncatedEndpoint(
|
|
393
|
-
moveEffects,
|
|
394
|
-
CrossFieldTarget.Destination,
|
|
395
|
-
finalDest,
|
|
396
|
-
baseMark.count,
|
|
397
|
-
truncatedEndpoint1,
|
|
398
|
-
);
|
|
399
|
-
}
|
|
406
|
+
setEndpoint(moveEffects, CrossFieldTarget.Source, finalSource, count, finalDest);
|
|
400
407
|
|
|
401
|
-
|
|
408
|
+
const truncatedEndpoint1 = getTruncatedEndpointForInner(
|
|
409
|
+
moveEffects,
|
|
410
|
+
CrossFieldTarget.Destination,
|
|
411
|
+
baseAttach.revision,
|
|
412
|
+
baseAttach.id,
|
|
413
|
+
count,
|
|
414
|
+
);
|
|
415
|
+
|
|
416
|
+
if (truncatedEndpoint1 !== undefined) {
|
|
417
|
+
setTruncatedEndpoint(
|
|
402
418
|
moveEffects,
|
|
403
419
|
CrossFieldTarget.Destination,
|
|
404
420
|
finalDest,
|
|
405
|
-
|
|
406
|
-
|
|
421
|
+
count,
|
|
422
|
+
truncatedEndpoint1,
|
|
407
423
|
);
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
setEndpoint(moveEffects, CrossFieldTarget.Destination, finalDest, count, finalSource);
|
|
408
427
|
|
|
409
|
-
|
|
428
|
+
const truncatedEndpoint2 = getTruncatedEndpointForInner(
|
|
429
|
+
moveEffects,
|
|
430
|
+
CrossFieldTarget.Source,
|
|
431
|
+
newDetach.revision,
|
|
432
|
+
newDetach.id,
|
|
433
|
+
count,
|
|
434
|
+
);
|
|
435
|
+
|
|
436
|
+
if (truncatedEndpoint2 !== undefined) {
|
|
437
|
+
setTruncatedEndpoint(
|
|
410
438
|
moveEffects,
|
|
411
439
|
CrossFieldTarget.Source,
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
440
|
+
finalSource,
|
|
441
|
+
count,
|
|
442
|
+
truncatedEndpoint2,
|
|
415
443
|
);
|
|
416
|
-
|
|
417
|
-
if (truncatedEndpoint2 !== undefined) {
|
|
418
|
-
setTruncatedEndpoint(
|
|
419
|
-
moveEffects,
|
|
420
|
-
CrossFieldTarget.Source,
|
|
421
|
-
finalSource,
|
|
422
|
-
baseMark.count,
|
|
423
|
-
truncatedEndpoint2,
|
|
424
|
-
);
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
// The `finalEndpoint` field of AttachAndDetach move effect pairs is not used,
|
|
428
|
-
// so we remove it as a normalization.
|
|
429
|
-
delete attach.finalEndpoint;
|
|
430
|
-
delete detach.finalEndpoint;
|
|
431
444
|
}
|
|
432
445
|
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
return normalizeCellRename(baseMark.cellId, baseMark.count, attach, detach);
|
|
438
|
-
} else {
|
|
439
|
-
const length = baseMark.count;
|
|
440
|
-
return createNoopMark(length, undefined);
|
|
446
|
+
// The `finalEndpoint` field of AttachAndDetach move effect pairs is not used,
|
|
447
|
+
// so we remove it as a normalization.
|
|
448
|
+
delete baseAttach.finalEndpoint;
|
|
449
|
+
delete newDetach.finalEndpoint;
|
|
441
450
|
}
|
|
442
451
|
}
|
|
443
452
|
|
|
@@ -46,6 +46,10 @@ import {
|
|
|
46
46
|
/**
|
|
47
47
|
* Inverts a given changeset.
|
|
48
48
|
* @param change - The changeset to produce the inverse of.
|
|
49
|
+
* @param isRollback - Whether the inverse is being produced for a rollback.
|
|
50
|
+
* @param genId - The ID allocator to use for generating new IDs.
|
|
51
|
+
* @param revision - The revision to use for the inverse changeset.
|
|
52
|
+
* @param crossFieldManager - The cross-field manager to use for tracking cross-field changes.
|
|
49
53
|
* @returns The inverse of the given `change` such that the inverse can be applied after `change`.
|
|
50
54
|
*
|
|
51
55
|
* WARNING! This implementation is incomplete:
|
|
@@ -55,20 +59,27 @@ export function invert(
|
|
|
55
59
|
change: Changeset,
|
|
56
60
|
isRollback: boolean,
|
|
57
61
|
genId: IdAllocator,
|
|
62
|
+
revision: RevisionTag | undefined,
|
|
58
63
|
crossFieldManager: CrossFieldManager,
|
|
59
64
|
): Changeset {
|
|
60
|
-
return invertMarkList(
|
|
65
|
+
return invertMarkList(
|
|
66
|
+
change,
|
|
67
|
+
isRollback,
|
|
68
|
+
crossFieldManager as CrossFieldManager<NodeId>,
|
|
69
|
+
revision,
|
|
70
|
+
);
|
|
61
71
|
}
|
|
62
72
|
|
|
63
73
|
function invertMarkList(
|
|
64
74
|
markList: MarkList,
|
|
65
75
|
isRollback: boolean,
|
|
66
76
|
crossFieldManager: CrossFieldManager<NodeId>,
|
|
77
|
+
revision: RevisionTag | undefined,
|
|
67
78
|
): MarkList {
|
|
68
79
|
const inverseMarkList = new MarkListFactory();
|
|
69
80
|
|
|
70
81
|
for (const mark of markList) {
|
|
71
|
-
const inverseMarks = invertMark(mark, isRollback, crossFieldManager);
|
|
82
|
+
const inverseMarks = invertMark(mark, isRollback, crossFieldManager, revision);
|
|
72
83
|
inverseMarkList.push(...inverseMarks);
|
|
73
84
|
}
|
|
74
85
|
|
|
@@ -79,6 +90,7 @@ function invertMark(
|
|
|
79
90
|
mark: Mark,
|
|
80
91
|
isRollback: boolean,
|
|
81
92
|
crossFieldManager: CrossFieldManager<NodeId>,
|
|
93
|
+
revision: RevisionTag | undefined,
|
|
82
94
|
): Mark[] {
|
|
83
95
|
if (!isImpactful(mark)) {
|
|
84
96
|
const inputId = getInputCellId(mark);
|
|
@@ -115,6 +127,7 @@ function invertMark(
|
|
|
115
127
|
id: mark.id,
|
|
116
128
|
cellId: outputId,
|
|
117
129
|
count: mark.count,
|
|
130
|
+
revision,
|
|
118
131
|
};
|
|
119
132
|
} else {
|
|
120
133
|
inverse = {
|
|
@@ -122,6 +135,7 @@ function invertMark(
|
|
|
122
135
|
id: mark.id,
|
|
123
136
|
cellId: outputId,
|
|
124
137
|
count: mark.count,
|
|
138
|
+
revision,
|
|
125
139
|
};
|
|
126
140
|
if (isRollback) {
|
|
127
141
|
inverse.idOverride = inputId;
|
|
@@ -136,6 +150,7 @@ function invertMark(
|
|
|
136
150
|
type: "Remove",
|
|
137
151
|
count: mark.count,
|
|
138
152
|
id: inputId.localId,
|
|
153
|
+
revision,
|
|
139
154
|
};
|
|
140
155
|
|
|
141
156
|
if (isRollback) {
|
|
@@ -168,10 +183,14 @@ function invertMark(
|
|
|
168
183
|
const moveIn: MoveIn = {
|
|
169
184
|
type: "MoveIn",
|
|
170
185
|
id: mark.id,
|
|
186
|
+
revision,
|
|
171
187
|
};
|
|
172
188
|
|
|
173
189
|
if (mark.finalEndpoint !== undefined) {
|
|
174
|
-
moveIn.finalEndpoint = {
|
|
190
|
+
moveIn.finalEndpoint = {
|
|
191
|
+
localId: mark.finalEndpoint.localId,
|
|
192
|
+
revision: mark.revision,
|
|
193
|
+
};
|
|
175
194
|
}
|
|
176
195
|
let effect: MarkEffect = moveIn;
|
|
177
196
|
const inputId = getInputCellId(mark);
|
|
@@ -179,6 +198,7 @@ function invertMark(
|
|
|
179
198
|
const detach: Mutable<Detach> = {
|
|
180
199
|
type: "Remove",
|
|
181
200
|
id: mark.id,
|
|
201
|
+
revision,
|
|
182
202
|
};
|
|
183
203
|
if (isRollback) {
|
|
184
204
|
detach.idOverride = inputId;
|
|
@@ -198,6 +218,7 @@ function invertMark(
|
|
|
198
218
|
type: "MoveOut",
|
|
199
219
|
id: mark.id,
|
|
200
220
|
count: mark.count,
|
|
221
|
+
revision,
|
|
201
222
|
};
|
|
202
223
|
|
|
203
224
|
if (isRollback) {
|
|
@@ -205,7 +226,10 @@ function invertMark(
|
|
|
205
226
|
}
|
|
206
227
|
|
|
207
228
|
if (mark.finalEndpoint) {
|
|
208
|
-
invertedMark.finalEndpoint = {
|
|
229
|
+
invertedMark.finalEndpoint = {
|
|
230
|
+
localId: mark.finalEndpoint.localId,
|
|
231
|
+
revision: mark.revision,
|
|
232
|
+
};
|
|
209
233
|
}
|
|
210
234
|
return applyMovedChanges(invertedMark, mark.revision, crossFieldManager);
|
|
211
235
|
}
|
|
@@ -225,8 +249,8 @@ function invertMark(
|
|
|
225
249
|
changes: mark.changes,
|
|
226
250
|
...mark.detach,
|
|
227
251
|
};
|
|
228
|
-
const attachInverses = invertMark(attach, isRollback, crossFieldManager);
|
|
229
|
-
const detachInverses = invertMark(detach, isRollback, crossFieldManager);
|
|
252
|
+
const attachInverses = invertMark(attach, isRollback, crossFieldManager, revision);
|
|
253
|
+
const detachInverses = invertMark(detach, isRollback, crossFieldManager, revision);
|
|
230
254
|
|
|
231
255
|
if (detachInverses.length === 0) {
|
|
232
256
|
return attachInverses;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
7
|
|
|
8
|
-
import type { ChangesetLocalId } from "../../core/index.js";
|
|
8
|
+
import type { ChangesetLocalId, RevisionTag } from "../../core/index.js";
|
|
9
9
|
import type { FieldEditor, NodeId } from "../modular-schema/index.js";
|
|
10
10
|
|
|
11
11
|
import { MarkListFactory } from "./markListFactory.js";
|
|
@@ -22,9 +22,15 @@ import type {
|
|
|
22
22
|
import { splitMark } from "./utils.js";
|
|
23
23
|
|
|
24
24
|
export interface SequenceFieldEditor extends FieldEditor<Changeset> {
|
|
25
|
-
insert(index: number, count: number, firstId:
|
|
26
|
-
remove(index: number, count: number, id: ChangesetLocalId): Changeset;
|
|
27
|
-
revive(
|
|
25
|
+
insert(index: number, count: number, firstId: CellId, revision: RevisionTag): Changeset;
|
|
26
|
+
remove(index: number, count: number, id: ChangesetLocalId, revision: RevisionTag): Changeset;
|
|
27
|
+
revive(
|
|
28
|
+
index: number,
|
|
29
|
+
count: number,
|
|
30
|
+
detachEvent: CellId,
|
|
31
|
+
revision: RevisionTag,
|
|
32
|
+
isIntention?: true,
|
|
33
|
+
): Changeset;
|
|
28
34
|
|
|
29
35
|
/**
|
|
30
36
|
*
|
|
@@ -32,22 +38,30 @@ export interface SequenceFieldEditor extends FieldEditor<Changeset> {
|
|
|
32
38
|
* @param count - The number of nodes to move
|
|
33
39
|
* @param destIndex - The index the nodes should be moved to, interpreted before detaching the moved nodes
|
|
34
40
|
* @param detachCellId - The local ID to assign to the first cell being emptied by the move
|
|
35
|
-
* @param attachCellId - The
|
|
41
|
+
* @param attachCellId - The ID to assign to the first cell being filled by the move
|
|
42
|
+
* @param revision - The revision to assign to the move marks
|
|
36
43
|
*/
|
|
37
44
|
move(
|
|
38
45
|
sourceIndex: number,
|
|
39
46
|
count: number,
|
|
40
47
|
destIndex: number,
|
|
41
48
|
detachCellId: ChangesetLocalId,
|
|
42
|
-
attachCellId:
|
|
49
|
+
attachCellId: CellId,
|
|
50
|
+
revision: RevisionTag,
|
|
43
51
|
): Changeset;
|
|
44
52
|
|
|
45
|
-
moveOut(
|
|
53
|
+
moveOut(
|
|
54
|
+
sourceIndex: number,
|
|
55
|
+
count: number,
|
|
56
|
+
id: ChangesetLocalId,
|
|
57
|
+
revision: RevisionTag,
|
|
58
|
+
): Changeset;
|
|
46
59
|
moveIn(
|
|
47
60
|
destIndex: number,
|
|
48
61
|
count: number,
|
|
49
62
|
moveId: ChangesetLocalId,
|
|
50
|
-
attachCellId:
|
|
63
|
+
attachCellId: CellId,
|
|
64
|
+
revision: RevisionTag,
|
|
51
65
|
): Changeset;
|
|
52
66
|
|
|
53
67
|
return(
|
|
@@ -56,31 +70,49 @@ export interface SequenceFieldEditor extends FieldEditor<Changeset> {
|
|
|
56
70
|
destIndex: number,
|
|
57
71
|
detachCellId: CellId,
|
|
58
72
|
attachCellId: CellId,
|
|
73
|
+
revision: RevisionTag,
|
|
59
74
|
): Changeset;
|
|
60
75
|
}
|
|
61
76
|
|
|
62
77
|
export const sequenceFieldEditor = {
|
|
63
78
|
buildChildChange: (index: number, change: NodeId): Changeset =>
|
|
64
79
|
markAtIndex(index, { count: 1, changes: change }),
|
|
65
|
-
insert: (
|
|
80
|
+
insert: (
|
|
81
|
+
index: number,
|
|
82
|
+
count: number,
|
|
83
|
+
firstId: CellId,
|
|
84
|
+
revision: RevisionTag | undefined,
|
|
85
|
+
): Changeset => {
|
|
66
86
|
const mark: CellMark<Insert> = {
|
|
67
87
|
type: "Insert",
|
|
68
|
-
id: firstId,
|
|
88
|
+
id: firstId.localId,
|
|
69
89
|
count,
|
|
70
|
-
cellId:
|
|
90
|
+
cellId: firstId,
|
|
91
|
+
revision,
|
|
71
92
|
};
|
|
72
93
|
return markAtIndex(index, mark);
|
|
73
94
|
},
|
|
74
|
-
remove: (
|
|
75
|
-
|
|
95
|
+
remove: (
|
|
96
|
+
index: number,
|
|
97
|
+
count: number,
|
|
98
|
+
id: ChangesetLocalId,
|
|
99
|
+
revision: RevisionTag | undefined,
|
|
100
|
+
): Changeset =>
|
|
101
|
+
count === 0 ? [] : markAtIndex(index, { type: "Remove", count, id, revision }),
|
|
76
102
|
|
|
77
|
-
revive: (
|
|
103
|
+
revive: (
|
|
104
|
+
index: number,
|
|
105
|
+
count: number,
|
|
106
|
+
detachEvent: CellId,
|
|
107
|
+
revision: RevisionTag | undefined,
|
|
108
|
+
): Changeset => {
|
|
78
109
|
assert(detachEvent.revision !== undefined, 0x724 /* Detach event must have a revision */);
|
|
79
110
|
const mark: CellMark<Insert> = {
|
|
80
111
|
type: "Insert",
|
|
81
112
|
id: detachEvent.localId,
|
|
82
113
|
count,
|
|
83
114
|
cellId: detachEvent,
|
|
115
|
+
revision,
|
|
84
116
|
};
|
|
85
117
|
return count === 0 ? [] : markAtIndex(index, mark);
|
|
86
118
|
},
|
|
@@ -90,27 +122,36 @@ export const sequenceFieldEditor = {
|
|
|
90
122
|
count: number,
|
|
91
123
|
destIndex: number,
|
|
92
124
|
detachCellId: ChangesetLocalId,
|
|
93
|
-
attachCellId:
|
|
125
|
+
attachCellId: CellId,
|
|
126
|
+
revision: RevisionTag | undefined,
|
|
94
127
|
): Changeset {
|
|
95
128
|
const moveIn: Mark = {
|
|
96
129
|
type: "MoveIn",
|
|
97
130
|
id: detachCellId,
|
|
98
131
|
count,
|
|
99
|
-
cellId:
|
|
132
|
+
cellId: attachCellId,
|
|
133
|
+
revision,
|
|
100
134
|
};
|
|
101
135
|
const moveOut: Mark = {
|
|
102
136
|
type: "MoveOut",
|
|
103
137
|
id: detachCellId,
|
|
104
138
|
count,
|
|
139
|
+
revision,
|
|
105
140
|
};
|
|
106
141
|
return moveMarksToMarkList(sourceIndex, count, destIndex, moveOut, moveIn);
|
|
107
142
|
},
|
|
108
143
|
|
|
109
|
-
moveOut(
|
|
144
|
+
moveOut(
|
|
145
|
+
sourceIndex: number,
|
|
146
|
+
count: number,
|
|
147
|
+
detachCellId: ChangesetLocalId,
|
|
148
|
+
revision: RevisionTag,
|
|
149
|
+
): Changeset {
|
|
110
150
|
const moveOut: Mark = {
|
|
111
151
|
type: "MoveOut",
|
|
112
152
|
id: detachCellId,
|
|
113
153
|
count,
|
|
154
|
+
revision,
|
|
114
155
|
};
|
|
115
156
|
return markAtIndex(sourceIndex, moveOut);
|
|
116
157
|
},
|
|
@@ -119,13 +160,15 @@ export const sequenceFieldEditor = {
|
|
|
119
160
|
destIndex: number,
|
|
120
161
|
count: number,
|
|
121
162
|
moveId: ChangesetLocalId,
|
|
122
|
-
attachCellId:
|
|
163
|
+
attachCellId: CellId,
|
|
164
|
+
revision: RevisionTag,
|
|
123
165
|
): Changeset {
|
|
124
166
|
const moveIn: Mark = {
|
|
125
167
|
type: "MoveIn",
|
|
126
168
|
id: moveId,
|
|
127
169
|
count,
|
|
128
|
-
cellId:
|
|
170
|
+
cellId: attachCellId,
|
|
171
|
+
revision,
|
|
129
172
|
};
|
|
130
173
|
return markAtIndex(destIndex, moveIn);
|
|
131
174
|
},
|
|
@@ -136,12 +179,14 @@ export const sequenceFieldEditor = {
|
|
|
136
179
|
destIndex: number,
|
|
137
180
|
detachCellId: CellId,
|
|
138
181
|
attachCellId: CellId,
|
|
182
|
+
revision: RevisionTag | undefined,
|
|
139
183
|
): Changeset {
|
|
140
184
|
const moveOut: CellMark<MoveOut> = {
|
|
141
185
|
type: "MoveOut",
|
|
142
186
|
id: attachCellId.localId,
|
|
143
187
|
idOverride: detachCellId,
|
|
144
188
|
count,
|
|
189
|
+
revision,
|
|
145
190
|
};
|
|
146
191
|
|
|
147
192
|
const returnTo: CellMark<MoveIn> = {
|
|
@@ -149,6 +194,7 @@ export const sequenceFieldEditor = {
|
|
|
149
194
|
id: attachCellId.localId,
|
|
150
195
|
count,
|
|
151
196
|
cellId: attachCellId,
|
|
197
|
+
revision,
|
|
152
198
|
};
|
|
153
199
|
|
|
154
200
|
return moveMarksToMarkList(sourceIndex, count, destIndex, moveOut, returnTo);
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* Selects which heuristics to use when encoding tree content.
|
|
8
8
|
* All encoding options here are compatible with the same decoder:
|
|
9
9
|
* the selection here does not impact compatibility.
|
|
10
|
-
* @
|
|
10
|
+
* @alpha
|
|
11
11
|
*/
|
|
12
12
|
export enum TreeCompressionStrategy {
|
|
13
13
|
/**
|