@fluidframework/tree 2.83.0 → 2.90.0-378676
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/api-report/tree.alpha.api.md +1 -0
- package/dist/core/change-family/changeFamily.d.ts +4 -1
- 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/index.d.ts +1 -1
- package/dist/core/change-family/index.d.ts.map +1 -1
- package/dist/core/change-family/index.js.map +1 -1
- package/dist/core/index.d.ts +3 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +6 -4
- package/dist/core/index.js.map +1 -1
- package/dist/core/rebase/changeRebaser.d.ts +6 -1
- package/dist/core/rebase/changeRebaser.d.ts.map +1 -1
- package/dist/core/rebase/changeRebaser.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 +2 -1
- package/dist/core/rebase/index.js.map +1 -1
- package/dist/core/rebase/types.d.ts +1 -0
- package/dist/core/rebase/types.d.ts.map +1 -1
- package/dist/core/rebase/types.js +5 -1
- package/dist/core/rebase/types.js.map +1 -1
- package/dist/core/rebase/utils.d.ts.map +1 -1
- package/dist/core/rebase/utils.js +25 -7
- package/dist/core/rebase/utils.js.map +1 -1
- package/dist/core/tree/delta.d.ts +5 -0
- package/dist/core/tree/delta.d.ts.map +1 -1
- package/dist/core/tree/delta.js.map +1 -1
- package/dist/core/tree/detachedFieldIndex.d.ts +13 -1
- package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndex.js +14 -1
- package/dist/core/tree/detachedFieldIndex.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexTypes.d.ts +4 -0
- 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 -2
- package/dist/core/tree/index.d.ts.map +1 -1
- package/dist/core/tree/index.js +4 -3
- package/dist/core/tree/index.js.map +1 -1
- package/dist/core/tree/pathTree.d.ts +11 -3
- package/dist/core/tree/pathTree.d.ts.map +1 -1
- package/dist/core/tree/pathTree.js +14 -2
- package/dist/core/tree/pathTree.js.map +1 -1
- package/dist/core/tree/visitDelta.d.ts.map +1 -1
- package/dist/core/tree/visitDelta.js +17 -13
- package/dist/core/tree/visitDelta.js.map +1 -1
- package/dist/feature-libraries/changeAtomIdBTree.d.ts +3 -2
- package/dist/feature-libraries/changeAtomIdBTree.d.ts.map +1 -1
- package/dist/feature-libraries/changeAtomIdBTree.js +15 -2
- package/dist/feature-libraries/changeAtomIdBTree.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +92 -44
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js +220 -70
- 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 +12 -2
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/dist/feature-libraries/default-schema/index.d.ts +2 -1
- package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/index.js +4 -2
- package/dist/feature-libraries/default-schema/index.js.map +1 -1
- package/dist/feature-libraries/default-schema/locationBasedEditBuilder.d.ts +40 -0
- package/dist/feature-libraries/default-schema/locationBasedEditBuilder.d.ts.map +1 -0
- package/dist/feature-libraries/default-schema/locationBasedEditBuilder.js +153 -0
- package/dist/feature-libraries/default-schema/locationBasedEditBuilder.js.map +1 -0
- package/dist/feature-libraries/default-schema/mappedEditBuilder.d.ts +7 -6
- package/dist/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/mappedEditBuilder.js +15 -0
- package/dist/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
- package/dist/feature-libraries/deltaUtils.d.ts +1 -0
- package/dist/feature-libraries/deltaUtils.d.ts.map +1 -1
- package/dist/feature-libraries/deltaUtils.js +6 -1
- package/dist/feature-libraries/deltaUtils.js.map +1 -1
- package/dist/feature-libraries/flex-tree/context.d.ts +9 -0
- package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/context.js +6 -0
- package/dist/feature-libraries/flex-tree/context.js.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +6 -6
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.d.ts +8 -7
- package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +39 -8
- package/dist/feature-libraries/flex-tree/lazyField.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 +8 -4
- 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 +2 -2
- package/dist/feature-libraries/mitigatedChangeFamily.js.map +1 -1
- package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts +100 -24
- package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/crossFieldQueries.js +8 -12
- package/dist/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +85 -51
- 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 +4 -9
- package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts +3 -3
- package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/index.js +2 -3
- package/dist/feature-libraries/modular-schema/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +18 -22
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js +276 -158
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV2.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV2.js +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV2.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV3.d.ts +15 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecV3.d.ts.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecV3.js +296 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecV3.js.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +8 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +56 -22
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +1390 -462
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +1 -2
- package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormatV2.js +3 -3
- package/dist/feature-libraries/modular-schema/modularChangeFormatV2.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormatV3.d.ts +74 -0
- package/dist/feature-libraries/modular-schema/modularChangeFormatV3.d.ts.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeFormatV3.js +35 -0
- package/dist/feature-libraries/modular-schema/modularChangeFormatV3.js.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts +49 -10
- package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeTypes.js +3 -3
- package/dist/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.d.ts +13 -32
- package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.js +257 -446
- package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV3.d.ts +23 -0
- package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV3.d.ts.map +1 -0
- package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV3.js +31 -0
- package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV3.js.map +1 -0
- package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts +31 -31
- package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecV2.js +57 -28
- package/dist/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecV3.d.ts +12 -0
- package/dist/feature-libraries/optional-field/optionalFieldCodecV3.d.ts.map +1 -0
- package/dist/feature-libraries/optional-field/optionalFieldCodecV3.js +57 -0
- package/dist/feature-libraries/optional-field/optionalFieldCodecV3.js.map +1 -0
- package/dist/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecs.js +5 -1
- package/dist/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
- package/dist/feature-libraries/optional-field/requiredField.d.ts +3 -2
- package/dist/feature-libraries/optional-field/requiredField.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/requiredField.js +6 -1
- package/dist/feature-libraries/optional-field/requiredField.js.map +1 -1
- package/dist/feature-libraries/sequence-field/compose.d.ts +6 -7
- package/dist/feature-libraries/sequence-field/compose.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/compose.js +81 -259
- package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
- package/dist/feature-libraries/sequence-field/helperTypes.d.ts +14 -10
- package/dist/feature-libraries/sequence-field/helperTypes.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/helperTypes.js.map +1 -1
- package/dist/feature-libraries/sequence-field/invert.d.ts +3 -3
- package/dist/feature-libraries/sequence-field/invert.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/invert.js +65 -167
- package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
- package/dist/feature-libraries/sequence-field/markQueue.d.ts +2 -2
- package/dist/feature-libraries/sequence-field/markQueue.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/markQueue.js.map +1 -1
- package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts +4 -56
- package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/moveEffectTable.js +7 -90
- package/dist/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
- package/dist/feature-libraries/sequence-field/rebase.d.ts +3 -3
- package/dist/feature-libraries/sequence-field/rebase.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/rebase.js +109 -116
- package/dist/feature-libraries/sequence-field/rebase.js.map +1 -1
- package/dist/feature-libraries/sequence-field/replaceRevisions.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/replaceRevisions.js +19 -32
- package/dist/feature-libraries/sequence-field/replaceRevisions.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 -2
- package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +22 -4
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js +388 -187
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js +20 -62
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +2 -2
- package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js +13 -13
- package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts +3 -2
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js +16 -111
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
- package/dist/feature-libraries/sequence-field/types.d.ts +37 -74
- package/dist/feature-libraries/sequence-field/types.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/types.js.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.d.ts +20 -25
- package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.js +159 -320
- package/dist/feature-libraries/sequence-field/utils.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/shared-tree/independentView.d.ts.map +1 -1
- package/dist/shared-tree/independentView.js +1 -1
- package/dist/shared-tree/independentView.js.map +1 -1
- package/dist/shared-tree/index.d.ts +1 -1
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/schematizeTree.d.ts +4 -4
- package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
- package/dist/shared-tree/schematizeTree.js +2 -1
- package/dist/shared-tree/schematizeTree.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +1 -5
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +21 -35
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +9 -3
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +4 -1
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +1 -0
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.js +8 -0
- package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts +4 -4
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.js +2 -2
- package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/dist/shared-tree/sharedTreeEditBuilder.d.ts +16 -6
- package/dist/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeEditBuilder.js +14 -7
- package/dist/shared-tree/sharedTreeEditBuilder.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +13 -11
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +56 -6
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/branch.d.ts +3 -2
- package/dist/shared-tree-core/branch.d.ts.map +1 -1
- package/dist/shared-tree-core/branch.js +4 -3
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/shared-tree-core/editManager.d.ts +2 -2
- package/dist/shared-tree-core/editManager.d.ts.map +1 -1
- package/dist/shared-tree-core/editManager.js +9 -9
- package/dist/shared-tree-core/editManager.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.d.ts +4 -0
- package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.js +10 -2
- package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
- package/dist/shared-tree-core/editManagerFormatCommons.d.ts +1 -0
- package/dist/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerFormatCommons.js +6 -0
- package/dist/shared-tree-core/editManagerFormatCommons.js.map +1 -1
- package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
- package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerFormatV1toV4.js +1 -0
- package/dist/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
- package/dist/shared-tree-core/index.d.ts +2 -2
- package/dist/shared-tree-core/index.d.ts.map +1 -1
- package/dist/shared-tree-core/index.js +3 -1
- package/dist/shared-tree-core/index.js.map +1 -1
- package/dist/shared-tree-core/messageCodecV1ToV4.d.ts +1 -1
- package/dist/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
- package/dist/shared-tree-core/messageCodecs.d.ts +4 -0
- package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecs.js +10 -2
- package/dist/shared-tree-core/messageCodecs.js.map +1 -1
- package/dist/shared-tree-core/messageFormat.d.ts +1 -0
- package/dist/shared-tree-core/messageFormat.d.ts.map +1 -1
- package/dist/shared-tree-core/messageFormat.js +6 -0
- package/dist/shared-tree-core/messageFormat.js.map +1 -1
- package/dist/shared-tree-core/messageFormatV1ToV4.d.ts +2 -2
- package/dist/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
- package/dist/shared-tree-core/messageFormatV1ToV4.js +1 -0
- package/dist/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts +1 -0
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts +16 -12
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.js +59 -8
- package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/dist/simple-tree/fieldSchema.d.ts +4 -4
- package/dist/simple-tree/fieldSchema.d.ts.map +1 -1
- package/dist/simple-tree/fieldSchema.js.map +1 -1
- package/dist/simple-tree/index.d.ts +2 -2
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +1 -1
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.js +5 -3
- package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/common.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/common.js +1 -1
- package/dist/simple-tree/node-kinds/common.js.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.js +2 -2
- package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.js +19 -19
- package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNode.js +4 -2
- package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/dist/simple-tree/prepareForInsertion.d.ts +54 -47
- package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -1
- package/dist/simple-tree/prepareForInsertion.js +183 -125
- package/dist/simple-tree/prepareForInsertion.js.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +8 -3
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js +27 -13
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/dist/treeFactory.d.ts.map +1 -1
- package/dist/treeFactory.js +12 -2
- package/dist/treeFactory.js.map +1 -1
- package/dist/util/index.d.ts +1 -1
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js +2 -1
- package/dist/util/index.js.map +1 -1
- package/dist/util/rangeMap.d.ts +23 -11
- package/dist/util/rangeMap.d.ts.map +1 -1
- package/dist/util/rangeMap.js +43 -10
- package/dist/util/rangeMap.js.map +1 -1
- package/lib/core/change-family/changeFamily.d.ts +4 -1
- 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/index.d.ts +1 -1
- package/lib/core/change-family/index.d.ts.map +1 -1
- package/lib/core/change-family/index.js.map +1 -1
- package/lib/core/index.d.ts +3 -3
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +2 -2
- package/lib/core/index.js.map +1 -1
- package/lib/core/rebase/changeRebaser.d.ts +6 -1
- package/lib/core/rebase/changeRebaser.d.ts.map +1 -1
- package/lib/core/rebase/changeRebaser.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 +1 -0
- package/lib/core/rebase/types.d.ts.map +1 -1
- package/lib/core/rebase/types.js +3 -0
- package/lib/core/rebase/types.js.map +1 -1
- package/lib/core/rebase/utils.d.ts.map +1 -1
- package/lib/core/rebase/utils.js +25 -7
- package/lib/core/rebase/utils.js.map +1 -1
- package/lib/core/tree/delta.d.ts +5 -0
- package/lib/core/tree/delta.d.ts.map +1 -1
- package/lib/core/tree/delta.js.map +1 -1
- package/lib/core/tree/detachedFieldIndex.d.ts +13 -1
- package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndex.js +15 -2
- package/lib/core/tree/detachedFieldIndex.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexTypes.d.ts +4 -0
- 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 -2
- package/lib/core/tree/index.d.ts.map +1 -1
- package/lib/core/tree/index.js +1 -1
- package/lib/core/tree/index.js.map +1 -1
- package/lib/core/tree/pathTree.d.ts +11 -3
- package/lib/core/tree/pathTree.d.ts.map +1 -1
- package/lib/core/tree/pathTree.js +12 -1
- package/lib/core/tree/pathTree.js.map +1 -1
- package/lib/core/tree/visitDelta.d.ts.map +1 -1
- package/lib/core/tree/visitDelta.js +17 -13
- package/lib/core/tree/visitDelta.js.map +1 -1
- package/lib/feature-libraries/changeAtomIdBTree.d.ts +3 -2
- package/lib/feature-libraries/changeAtomIdBTree.d.ts.map +1 -1
- package/lib/feature-libraries/changeAtomIdBTree.js +15 -3
- package/lib/feature-libraries/changeAtomIdBTree.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +92 -44
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js +217 -69
- 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 +12 -2
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/lib/feature-libraries/default-schema/index.d.ts +2 -1
- package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/index.js +2 -1
- package/lib/feature-libraries/default-schema/index.js.map +1 -1
- package/lib/feature-libraries/default-schema/locationBasedEditBuilder.d.ts +40 -0
- package/lib/feature-libraries/default-schema/locationBasedEditBuilder.d.ts.map +1 -0
- package/lib/feature-libraries/default-schema/locationBasedEditBuilder.js +149 -0
- package/lib/feature-libraries/default-schema/locationBasedEditBuilder.js.map +1 -0
- package/lib/feature-libraries/default-schema/mappedEditBuilder.d.ts +7 -6
- package/lib/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/mappedEditBuilder.js +15 -0
- package/lib/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
- package/lib/feature-libraries/deltaUtils.d.ts +1 -0
- package/lib/feature-libraries/deltaUtils.d.ts.map +1 -1
- package/lib/feature-libraries/deltaUtils.js +5 -1
- package/lib/feature-libraries/deltaUtils.js.map +1 -1
- package/lib/feature-libraries/flex-tree/context.d.ts +9 -0
- package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/context.js +6 -0
- package/lib/feature-libraries/flex-tree/context.js.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +6 -6
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.d.ts +8 -7
- package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +40 -9
- package/lib/feature-libraries/flex-tree/lazyField.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/mitigatedChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/mitigatedChangeFamily.js +2 -2
- package/lib/feature-libraries/mitigatedChangeFamily.js.map +1 -1
- package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts +100 -24
- package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/crossFieldQueries.js +7 -10
- package/lib/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +85 -51
- 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 +4 -9
- package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts +3 -3
- package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/index.js +1 -1
- package/lib/feature-libraries/modular-schema/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +18 -22
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js +267 -144
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV2.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV2.js +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV2.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV3.d.ts +15 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecV3.d.ts.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecV3.js +292 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecV3.js.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +8 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +56 -22
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +1387 -468
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +1 -2
- package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormatV2.js +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormatV2.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormatV3.d.ts +74 -0
- package/lib/feature-libraries/modular-schema/modularChangeFormatV3.d.ts.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeFormatV3.js +32 -0
- package/lib/feature-libraries/modular-schema/modularChangeFormatV3.js.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts +49 -10
- package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeTypes.js +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.d.ts +13 -32
- package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.js +254 -442
- package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV3.d.ts +23 -0
- package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV3.d.ts.map +1 -0
- package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV3.js +27 -0
- package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV3.js.map +1 -0
- package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts +31 -31
- package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecV2.js +55 -26
- package/lib/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecV3.d.ts +12 -0
- package/lib/feature-libraries/optional-field/optionalFieldCodecV3.d.ts.map +1 -0
- package/lib/feature-libraries/optional-field/optionalFieldCodecV3.js +53 -0
- package/lib/feature-libraries/optional-field/optionalFieldCodecV3.js.map +1 -0
- package/lib/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecs.js +5 -1
- package/lib/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
- package/lib/feature-libraries/optional-field/requiredField.d.ts +3 -2
- package/lib/feature-libraries/optional-field/requiredField.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/requiredField.js +5 -1
- package/lib/feature-libraries/optional-field/requiredField.js.map +1 -1
- package/lib/feature-libraries/sequence-field/compose.d.ts +6 -7
- package/lib/feature-libraries/sequence-field/compose.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/compose.js +83 -261
- package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
- package/lib/feature-libraries/sequence-field/helperTypes.d.ts +14 -10
- package/lib/feature-libraries/sequence-field/helperTypes.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/helperTypes.js.map +1 -1
- package/lib/feature-libraries/sequence-field/invert.d.ts +3 -3
- package/lib/feature-libraries/sequence-field/invert.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/invert.js +67 -169
- package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
- package/lib/feature-libraries/sequence-field/markQueue.d.ts +2 -2
- package/lib/feature-libraries/sequence-field/markQueue.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/markQueue.js.map +1 -1
- package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts +4 -56
- package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/moveEffectTable.js +6 -84
- package/lib/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
- package/lib/feature-libraries/sequence-field/rebase.d.ts +3 -3
- package/lib/feature-libraries/sequence-field/rebase.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/rebase.js +111 -118
- package/lib/feature-libraries/sequence-field/rebase.js.map +1 -1
- package/lib/feature-libraries/sequence-field/replaceRevisions.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/replaceRevisions.js +19 -32
- package/lib/feature-libraries/sequence-field/replaceRevisions.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 -3
- package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +22 -4
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js +379 -182
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js +21 -63
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +2 -2
- package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js +13 -13
- package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts +3 -2
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js +16 -111
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
- package/lib/feature-libraries/sequence-field/types.d.ts +37 -74
- package/lib/feature-libraries/sequence-field/types.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/types.js.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.d.ts +20 -25
- package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.js +155 -313
- package/lib/feature-libraries/sequence-field/utils.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/shared-tree/independentView.d.ts.map +1 -1
- package/lib/shared-tree/independentView.js +1 -1
- package/lib/shared-tree/independentView.js.map +1 -1
- package/lib/shared-tree/index.d.ts +1 -1
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/schematizeTree.d.ts +4 -4
- package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
- package/lib/shared-tree/schematizeTree.js +3 -2
- package/lib/shared-tree/schematizeTree.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +1 -5
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +24 -38
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +9 -3
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +4 -1
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +1 -0
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.js +8 -0
- package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts +4 -4
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.js +3 -3
- package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/lib/shared-tree/sharedTreeEditBuilder.d.ts +16 -6
- package/lib/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeEditBuilder.js +12 -6
- package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +13 -11
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +59 -9
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/branch.d.ts +3 -2
- package/lib/shared-tree-core/branch.d.ts.map +1 -1
- package/lib/shared-tree-core/branch.js +4 -3
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/shared-tree-core/editManager.d.ts +2 -2
- package/lib/shared-tree-core/editManager.d.ts.map +1 -1
- package/lib/shared-tree-core/editManager.js +9 -9
- package/lib/shared-tree-core/editManager.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.d.ts +4 -0
- package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.js +8 -1
- package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
- package/lib/shared-tree-core/editManagerFormatCommons.d.ts +1 -0
- package/lib/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerFormatCommons.js +6 -0
- package/lib/shared-tree-core/editManagerFormatCommons.js.map +1 -1
- package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
- package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerFormatV1toV4.js +1 -0
- package/lib/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
- package/lib/shared-tree-core/index.d.ts +2 -2
- package/lib/shared-tree-core/index.d.ts.map +1 -1
- package/lib/shared-tree-core/index.js +2 -2
- package/lib/shared-tree-core/index.js.map +1 -1
- package/lib/shared-tree-core/messageCodecV1ToV4.d.ts +1 -1
- package/lib/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
- package/lib/shared-tree-core/messageCodecs.d.ts +4 -0
- package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecs.js +8 -1
- package/lib/shared-tree-core/messageCodecs.js.map +1 -1
- package/lib/shared-tree-core/messageFormat.d.ts +1 -0
- package/lib/shared-tree-core/messageFormat.d.ts.map +1 -1
- package/lib/shared-tree-core/messageFormat.js +6 -0
- package/lib/shared-tree-core/messageFormat.js.map +1 -1
- package/lib/shared-tree-core/messageFormatV1ToV4.d.ts +2 -2
- package/lib/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
- package/lib/shared-tree-core/messageFormatV1ToV4.js +1 -0
- package/lib/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts +1 -0
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts +16 -12
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js +58 -8
- package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/lib/simple-tree/fieldSchema.d.ts +4 -4
- package/lib/simple-tree/fieldSchema.d.ts.map +1 -1
- package/lib/simple-tree/fieldSchema.js.map +1 -1
- package/lib/simple-tree/index.d.ts +2 -2
- 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/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.js +6 -4
- package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/common.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/common.js +2 -2
- package/lib/simple-tree/node-kinds/common.js.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.js +2 -2
- package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.js +20 -20
- package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNode.js +4 -2
- package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/lib/simple-tree/prepareForInsertion.d.ts +54 -47
- package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -1
- package/lib/simple-tree/prepareForInsertion.js +184 -125
- package/lib/simple-tree/prepareForInsertion.js.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +8 -3
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +23 -10
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/lib/treeFactory.d.ts.map +1 -1
- package/lib/treeFactory.js +13 -3
- package/lib/treeFactory.js.map +1 -1
- package/lib/util/index.d.ts +1 -1
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js +1 -1
- package/lib/util/index.js.map +1 -1
- package/lib/util/rangeMap.d.ts +23 -11
- package/lib/util/rangeMap.d.ts.map +1 -1
- package/lib/util/rangeMap.js +41 -9
- package/lib/util/rangeMap.js.map +1 -1
- package/package.json +21 -21
- package/src/core/change-family/changeFamily.ts +5 -0
- package/src/core/change-family/index.ts +1 -0
- package/src/core/index.ts +4 -1
- package/src/core/rebase/changeRebaser.ts +6 -1
- package/src/core/rebase/index.ts +1 -0
- package/src/core/rebase/types.ts +4 -0
- package/src/core/rebase/utils.ts +31 -7
- package/src/core/tree/delta.ts +6 -0
- package/src/core/tree/detachedFieldIndex.ts +29 -1
- package/src/core/tree/detachedFieldIndexTypes.ts +5 -0
- package/src/core/tree/index.ts +13 -12
- package/src/core/tree/pathTree.ts +16 -4
- package/src/core/tree/visitDelta.ts +31 -11
- package/src/feature-libraries/changeAtomIdBTree.ts +28 -3
- package/src/feature-libraries/default-schema/defaultEditBuilder.ts +369 -127
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +13 -4
- package/src/feature-libraries/default-schema/index.ts +16 -5
- package/src/feature-libraries/default-schema/locationBasedEditBuilder.ts +231 -0
- package/src/feature-libraries/default-schema/mappedEditBuilder.ts +35 -9
- package/src/feature-libraries/deltaUtils.ts +6 -1
- package/src/feature-libraries/flex-tree/context.ts +17 -0
- package/src/feature-libraries/flex-tree/flexTreeTypes.ts +7 -8
- package/src/feature-libraries/flex-tree/lazyField.ts +65 -24
- package/src/feature-libraries/index.ts +22 -9
- package/src/feature-libraries/mitigatedChangeFamily.ts +3 -1
- package/src/feature-libraries/modular-schema/crossFieldQueries.ts +144 -47
- package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +113 -58
- package/src/feature-libraries/modular-schema/genericFieldKind.ts +7 -18
- package/src/feature-libraries/modular-schema/index.ts +16 -16
- package/src/feature-libraries/modular-schema/modularChangeCodecV1.ts +623 -348
- package/src/feature-libraries/modular-schema/modularChangeCodecV2.ts +1 -0
- package/src/feature-libraries/modular-schema/modularChangeCodecV3.ts +649 -0
- package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +14 -0
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +2694 -748
- package/src/feature-libraries/modular-schema/modularChangeFormatV1.ts +1 -0
- package/src/feature-libraries/modular-schema/modularChangeFormatV2.ts +1 -1
- package/src/feature-libraries/modular-schema/modularChangeFormatV3.ts +67 -0
- package/src/feature-libraries/modular-schema/modularChangeTypes.ts +62 -10
- package/src/feature-libraries/optional-field/optionalField.ts +359 -568
- package/src/feature-libraries/optional-field/optionalFieldChangeFormatV3.ts +45 -0
- package/src/feature-libraries/optional-field/optionalFieldChangeTypes.ts +31 -35
- package/src/feature-libraries/optional-field/optionalFieldCodecV2.ts +89 -35
- package/src/feature-libraries/optional-field/optionalFieldCodecV3.ts +94 -0
- package/src/feature-libraries/optional-field/optionalFieldCodecs.ts +5 -1
- package/src/feature-libraries/optional-field/requiredField.ts +15 -2
- package/src/feature-libraries/sequence-field/compose.ts +137 -522
- package/src/feature-libraries/sequence-field/helperTypes.ts +34 -19
- package/src/feature-libraries/sequence-field/invert.ts +102 -228
- package/src/feature-libraries/sequence-field/markQueue.ts +2 -2
- package/src/feature-libraries/sequence-field/moveEffectTable.ts +8 -195
- package/src/feature-libraries/sequence-field/rebase.ts +171 -207
- package/src/feature-libraries/sequence-field/replaceRevisions.ts +26 -52
- package/src/feature-libraries/sequence-field/sequenceFieldChangeHandler.ts +8 -3
- package/src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts +677 -229
- package/src/feature-libraries/sequence-field/sequenceFieldCodecV3.ts +56 -70
- package/src/feature-libraries/sequence-field/sequenceFieldEditor.ts +28 -30
- package/src/feature-libraries/sequence-field/sequenceFieldToDelta.ts +21 -131
- package/src/feature-libraries/sequence-field/types.ts +40 -79
- package/src/feature-libraries/sequence-field/utils.ts +211 -370
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/independentView.ts +12 -6
- package/src/shared-tree/index.ts +3 -2
- package/src/shared-tree/schematizeTree.ts +21 -8
- package/src/shared-tree/schematizingTreeView.ts +38 -68
- package/src/shared-tree/sharedTree.ts +30 -15
- package/src/shared-tree/sharedTreeChangeCodecs.ts +8 -0
- package/src/shared-tree/sharedTreeChangeFamily.ts +7 -4
- package/src/shared-tree/sharedTreeEditBuilder.ts +43 -8
- package/src/shared-tree/treeCheckout.ts +93 -17
- package/src/shared-tree-core/branch.ts +8 -2
- package/src/shared-tree-core/editManager.ts +16 -2
- package/src/shared-tree-core/editManagerCodecs.ts +11 -1
- package/src/shared-tree-core/editManagerFormatCommons.ts +6 -0
- package/src/shared-tree-core/editManagerFormatV1toV4.ts +3 -1
- package/src/shared-tree-core/index.ts +2 -0
- package/src/shared-tree-core/messageCodecV1ToV4.ts +2 -1
- package/src/shared-tree-core/messageCodecs.ts +11 -1
- package/src/shared-tree-core/messageFormat.ts +6 -0
- package/src/shared-tree-core/messageFormatV1ToV4.ts +3 -1
- package/src/shared-tree-core/sharedTreeCore.ts +4 -1
- package/src/simple-tree/core/unhydratedFlexTree.ts +82 -35
- package/src/simple-tree/fieldSchema.ts +6 -4
- package/src/simple-tree/index.ts +2 -1
- package/src/simple-tree/node-kinds/array/arrayNode.ts +7 -5
- package/src/simple-tree/node-kinds/common.ts +2 -5
- package/src/simple-tree/node-kinds/map/mapNode.ts +4 -4
- package/src/simple-tree/node-kinds/object/objectNode.ts +26 -26
- package/src/simple-tree/node-kinds/record/recordNode.ts +10 -9
- package/src/simple-tree/prepareForInsertion.ts +342 -200
- package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +35 -15
- package/src/treeFactory.ts +16 -4
- package/src/util/index.ts +3 -0
- package/src/util/rangeMap.ts +68 -26
- package/dist/feature-libraries/sequence-field/relevantRemovedRoots.d.ts +0 -9
- package/dist/feature-libraries/sequence-field/relevantRemovedRoots.d.ts.map +0 -1
- package/dist/feature-libraries/sequence-field/relevantRemovedRoots.js +0 -50
- package/dist/feature-libraries/sequence-field/relevantRemovedRoots.js.map +0 -1
- package/docs/main/sequence-field/move-composition.md +0 -46
- package/lib/feature-libraries/sequence-field/relevantRemovedRoots.d.ts +0 -9
- package/lib/feature-libraries/sequence-field/relevantRemovedRoots.d.ts.map +0 -1
- package/lib/feature-libraries/sequence-field/relevantRemovedRoots.js +0 -46
- package/lib/feature-libraries/sequence-field/relevantRemovedRoots.js.map +0 -1
- package/src/feature-libraries/sequence-field/relevantRemovedRoots.ts +0 -57
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
import type { CodecWriteOptions, ICodecFamily } from "../../codec/index.js";
|
|
6
|
-
import { type ChangeEncodingContext, type ChangeFamily, type ChangeFamilyEditor, type ChangeRebaser, type DeltaDetachedNodeId, type DeltaRoot, type
|
|
6
|
+
import { type ChangeAtomId, type ChangeEncodingContext, type ChangeFamily, type ChangeFamilyEditor, type ChangeRebaser, type ChangesetLocalId, type DeltaDetachedNodeId, type DeltaRoot, type EditorOptions, type NormalizedFieldUpPath, type NormalizedUpPath, type RevisionTag, type TaggedChange, type TreeChunk } from "../../core/index.js";
|
|
7
7
|
import { type ModularChangeset } from "../modular-schema/index.js";
|
|
8
8
|
export type DefaultChangeset = ModularChangeset;
|
|
9
9
|
/**
|
|
@@ -11,12 +11,12 @@ export type DefaultChangeset = ModularChangeset;
|
|
|
11
11
|
*
|
|
12
12
|
* @sealed
|
|
13
13
|
*/
|
|
14
|
-
export declare class DefaultChangeFamily implements ChangeFamily<
|
|
14
|
+
export declare class DefaultChangeFamily implements ChangeFamily<IdBasedChangeFamilyDataEditor, DefaultChangeset> {
|
|
15
15
|
private readonly modularFamily;
|
|
16
16
|
constructor(codecs: ICodecFamily<ModularChangeset, ChangeEncodingContext>, codecOptions: CodecWriteOptions);
|
|
17
17
|
get rebaser(): ChangeRebaser<DefaultChangeset>;
|
|
18
18
|
get codecs(): ICodecFamily<DefaultChangeset, ChangeEncodingContext>;
|
|
19
|
-
buildEditor(mintRevisionTag: () => RevisionTag, changeReceiver: (change: TaggedChange<DefaultChangeset>) => void):
|
|
19
|
+
buildEditor(mintRevisionTag: () => RevisionTag, changeReceiver: (change: TaggedChange<DefaultChangeset>) => void, options?: EditorOptions): IdBasedChangeFamilyDataEditor;
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
22
|
* @param change - The change to convert into a delta.
|
|
@@ -37,8 +37,13 @@ export declare function intoDelta(taggedChange: TaggedChange<ModularChangeset>):
|
|
|
37
37
|
* @param change - The change to be applied.
|
|
38
38
|
*/
|
|
39
39
|
export declare function relevantRemovedRoots(change: ModularChangeset): Iterable<DeltaDetachedNodeId>;
|
|
40
|
+
export type DetachedRootIds = readonly DetachedRootIdRange[];
|
|
41
|
+
export interface DetachedRootIdRange {
|
|
42
|
+
readonly first: ChangeAtomId;
|
|
43
|
+
readonly count: number;
|
|
44
|
+
}
|
|
40
45
|
/**
|
|
41
|
-
* Default editor for
|
|
46
|
+
* Default editor for tree data changes.
|
|
42
47
|
* @privateRemarks
|
|
43
48
|
* When taking into account not just the content of the tree,
|
|
44
49
|
* but also how the merge identities (and thus anchors, flex-tree and simple-tree nodes) of nodes before and after the edits correspond,
|
|
@@ -54,29 +59,7 @@ export declare function relevantRemovedRoots(change: ModularChangeset): Iterable
|
|
|
54
59
|
* If/when such a mechanism becomes available, an evaluation should be done to determine if any existing editing operations should be changed to leverage it
|
|
55
60
|
* (Possibly by adding opt ins at the view schema layer).
|
|
56
61
|
*/
|
|
57
|
-
export interface
|
|
58
|
-
/**
|
|
59
|
-
* @param field - the value field which is being edited under the parent node
|
|
60
|
-
* @returns An object with methods to edit the given field of the given parent.
|
|
61
|
-
* The returned object can be used (i.e., have its methods called) multiple times but its lifetime
|
|
62
|
-
* is bounded by the lifetime of this edit builder.
|
|
63
|
-
*/
|
|
64
|
-
valueField(field: NormalizedFieldUpPath): ValueFieldEditBuilder<TContent>;
|
|
65
|
-
/**
|
|
66
|
-
* @param field - the optional field which is being edited under the parent node
|
|
67
|
-
* @returns An object with methods to edit the given field of the given parent.
|
|
68
|
-
* The returned object can be used (i.e., have its methods called) multiple times but its lifetime
|
|
69
|
-
* is bounded by the lifetime of this edit builder.
|
|
70
|
-
*/
|
|
71
|
-
optionalField(field: NormalizedFieldUpPath): OptionalFieldEditBuilder<TContent>;
|
|
72
|
-
/**
|
|
73
|
-
* @param field - the sequence field which is being edited under the parent node
|
|
74
|
-
*
|
|
75
|
-
* @returns An object with methods to edit the given field of the given parent.
|
|
76
|
-
* The returned object can be used (i.e., have its methods called) multiple times but its lifetime
|
|
77
|
-
* is bounded by the lifetime of this edit builder.
|
|
78
|
-
*/
|
|
79
|
-
sequenceField(field: NormalizedFieldUpPath): SequenceFieldEditBuilder<TContent>;
|
|
62
|
+
export interface DataEditor<TContent, TDetachedRoot, TDetachedRoots> {
|
|
80
63
|
/**
|
|
81
64
|
* Moves a subsequence from one sequence field to another sequence field.
|
|
82
65
|
*
|
|
@@ -102,49 +85,114 @@ export interface IDefaultEditBuilder<TContent = TreeChunk> {
|
|
|
102
85
|
* Add a constraint that, for the revert of this change to apply, the document must be in the same state immediately before the revert is applied as it was after this change was applied.
|
|
103
86
|
*/
|
|
104
87
|
addNoChangeConstraintOnRevert(): void;
|
|
88
|
+
/**
|
|
89
|
+
* Builds the detached roots for the given content.
|
|
90
|
+
* @param content - The content to be built into detached nodes.
|
|
91
|
+
*
|
|
92
|
+
* Requires SharedTreeFormatVersion.vDetachedRoots or later.
|
|
93
|
+
*/
|
|
94
|
+
buildRoots(content: TContent): TDetachedRoots;
|
|
95
|
+
/**
|
|
96
|
+
* @param field - the value field which is being edited under the parent node
|
|
97
|
+
* @returns An object with methods to edit the given field of the given parent.
|
|
98
|
+
* The returned object can be used (i.e., have its methods called) multiple times but its lifetime
|
|
99
|
+
* is bounded by the lifetime of this edit builder.
|
|
100
|
+
*/
|
|
101
|
+
valueField(field: NormalizedFieldUpPath): RequiredFieldEditor<TContent, TDetachedRoot>;
|
|
102
|
+
/**
|
|
103
|
+
* @param field - the optional field which is being edited under the parent node
|
|
104
|
+
* @returns An object with methods to edit the given field of the given parent.
|
|
105
|
+
* The returned object can be used (i.e., have its methods called) multiple times but its lifetime
|
|
106
|
+
* is bounded by the lifetime of this edit builder.
|
|
107
|
+
*/
|
|
108
|
+
optionalField(field: NormalizedFieldUpPath): OptionalFieldEditor<TContent, TDetachedRoot>;
|
|
109
|
+
/**
|
|
110
|
+
* @param field - the sequence field which is being edited under the parent node
|
|
111
|
+
*
|
|
112
|
+
* @returns An object with methods to edit the given field of the given parent.
|
|
113
|
+
* The returned object can be used (i.e., have its methods called) multiple times but its lifetime
|
|
114
|
+
* is bounded by the lifetime of this edit builder.
|
|
115
|
+
*/
|
|
116
|
+
sequenceField(field: NormalizedFieldUpPath): SequenceFieldEditor<TContent, TDetachedRoots>;
|
|
105
117
|
}
|
|
118
|
+
export type IdBasedChangeFamilyDataEditor = ChangeFamilyEditor & DataEditor<TreeChunk, ChangeAtomId, DetachedRootIds>;
|
|
119
|
+
export declare function offsetChangesetLocalId(id: ChangesetLocalId, offset: number): ChangesetLocalId;
|
|
120
|
+
export declare function subtractChangesetLocalId(a: ChangesetLocalId, b: ChangesetLocalId): number;
|
|
106
121
|
/**
|
|
107
|
-
* Implementation of {@link
|
|
122
|
+
* Implementation of {@link IdBasedChangeFamilyDataEditor} based on the default set of supported field kinds.
|
|
108
123
|
* @sealed
|
|
109
124
|
*/
|
|
110
|
-
export declare class
|
|
125
|
+
export declare class DefaultIdBasedDataEditor implements IdBasedChangeFamilyDataEditor {
|
|
111
126
|
private readonly mintRevisionTag;
|
|
127
|
+
private readonly options;
|
|
112
128
|
private readonly modularBuilder;
|
|
113
|
-
|
|
129
|
+
private readonly nodesWithoutCells;
|
|
130
|
+
constructor(family: ChangeFamily<ChangeFamilyEditor, DefaultChangeset>, mintRevisionTag: () => RevisionTag, changeReceiver: (change: TaggedChange<DefaultChangeset>) => void, options: EditorOptions, codecOptions: CodecWriteOptions);
|
|
114
131
|
enterTransaction(): void;
|
|
115
132
|
exitTransaction(): void;
|
|
116
|
-
addNodeExistsConstraint(path:
|
|
117
|
-
addNodeExistsConstraintOnRevert(path:
|
|
133
|
+
addNodeExistsConstraint(path: NormalizedUpPath): void;
|
|
134
|
+
addNodeExistsConstraintOnRevert(path: NormalizedUpPath): void;
|
|
118
135
|
addNoChangeConstraint(): void;
|
|
119
136
|
addNoChangeConstraintOnRevert(): void;
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
137
|
+
buildRoots(content: TreeChunk): DetachedRootIds;
|
|
138
|
+
valueField(field: NormalizedFieldUpPath): RequiredFieldEditor<TreeChunk, ChangeAtomId>;
|
|
139
|
+
optionalField(field: NormalizedFieldUpPath): OptionalFieldEditor<TreeChunk, ChangeAtomId>;
|
|
140
|
+
move(sourceField: NormalizedFieldUpPath, sourceIndex: number, count: number, destinationField: NormalizedFieldUpPath, destIndex: number): void;
|
|
141
|
+
sequenceField(field: NormalizedFieldUpPath): SequenceFieldEditor<TreeChunk, DetachedRootIds>;
|
|
124
142
|
}
|
|
125
|
-
export interface
|
|
143
|
+
export interface RequiredFieldEditor<TContent, TDetachedRoot> {
|
|
126
144
|
/**
|
|
127
|
-
* Issues a change which replaces the
|
|
145
|
+
* Issues a change which replaces the content of the field with the given detached node.
|
|
146
|
+
* @param content - The content to be attached in the field in the given order.
|
|
147
|
+
* Must represent a single detached node.
|
|
148
|
+
* Must have been created in the same JS turn.
|
|
149
|
+
*
|
|
150
|
+
* Requires SharedTreeFormatVersion.vDetachedRoots or later.
|
|
151
|
+
*/
|
|
152
|
+
attach(content: TDetachedRoot): void;
|
|
153
|
+
/**
|
|
154
|
+
* Issues a change which replaces the content of the field with `newContent`.
|
|
128
155
|
* @param newContent - the new content for the field.
|
|
129
156
|
*/
|
|
130
157
|
set(newContent: TContent): void;
|
|
131
158
|
}
|
|
132
|
-
export interface
|
|
159
|
+
export interface OptionalFieldEditor<TContent, TDetachedRoots> {
|
|
133
160
|
/**
|
|
134
|
-
* Issues a change which replaces the
|
|
161
|
+
* Issues a change which replaces the content of the field with the given detached node.
|
|
162
|
+
* @param content - The content to be attached in the field in the given order.
|
|
163
|
+
* Must represent a single detached node.
|
|
164
|
+
*
|
|
165
|
+
* Requires SharedTreeFormatVersion.vDetachedRoots or later.
|
|
166
|
+
*/
|
|
167
|
+
attach(content: TDetachedRoots | undefined, wasEmpty: boolean): void;
|
|
168
|
+
/**
|
|
169
|
+
* Issues a change which clears content of the field.
|
|
170
|
+
* @param wasEmpty - whether the field is empty when creating this change
|
|
171
|
+
*/
|
|
172
|
+
clear(wasEmpty: boolean): void;
|
|
173
|
+
/**
|
|
174
|
+
* Issues a change which replaces the content of the field with `newContent`
|
|
135
175
|
* @param newContent - the new content for the field.
|
|
136
|
-
* @param wasEmpty - whether the field is empty when creating this change
|
|
176
|
+
* @param wasEmpty - whether the field is empty when creating this change
|
|
137
177
|
*/
|
|
138
178
|
set(newContent: TContent | undefined, wasEmpty: boolean): void;
|
|
139
179
|
}
|
|
140
180
|
/**
|
|
141
|
-
*
|
|
181
|
+
* Editor for the sequence field kind.
|
|
142
182
|
*/
|
|
143
|
-
export interface
|
|
183
|
+
export interface SequenceFieldEditor<TContent, TDetachedRoots, TRemoved = void> {
|
|
184
|
+
/**
|
|
185
|
+
* Issues a change which attaches a sequence of detached nodes at the given `index`.
|
|
186
|
+
* @param index - The index at which to attach the detached nodes.
|
|
187
|
+
* @param detachedContent - The content to be attached in the field in the given order. Each node must be detached.
|
|
188
|
+
*
|
|
189
|
+
* Requires SharedTreeFormatVersion.vDetachedRoots or later.
|
|
190
|
+
*/
|
|
191
|
+
attach(index: number, detachedContent: TDetachedRoots): void;
|
|
144
192
|
/**
|
|
145
193
|
* Issues a change which inserts the `newContent` at the given `index`.
|
|
146
194
|
* @param index - the index at which to insert the `newContent`.
|
|
147
|
-
* @param newContent - the new content to be inserted in the field.
|
|
195
|
+
* @param newContent - the new content to be inserted in the field.
|
|
148
196
|
*/
|
|
149
197
|
insert(index: number, newContent: TContent): void;
|
|
150
198
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultEditBuilder.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/default-schema/defaultEditBuilder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,
|
|
1
|
+
{"version":3,"file":"defaultEditBuilder.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/default-schema/defaultEditBuilder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,SAAS,EAId,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAMN,KAAK,gBAAgB,EAIrB,MAAM,4BAA4B,CAAC;AAMpC,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAEhD;;;;GAIG;AACH,qBAAa,mBACZ,YAAW,YAAY,CAAC,6BAA6B,EAAE,gBAAgB,CAAC;IAExE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;gBAGnD,MAAM,EAAE,YAAY,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,EAC7D,YAAY,EAAE,iBAAiB;IAKhC,IAAW,OAAO,IAAI,aAAa,CAAC,gBAAgB,CAAC,CAEpD;IAED,IAAW,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAEzE;IAEM,WAAW,CACjB,eAAe,EAAE,MAAM,WAAW,EAClC,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAChE,OAAO,CAAC,EAAE,aAAa,GACrB,6BAA6B;CAShC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAEjF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAE5F;AAED,MAAM,MAAM,eAAe,GAAG,SAAS,mBAAmB,EAAE,CAAC;AAC7D,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,cAAc;IAClE;;;;;OAKG;IACH,IAAI,CACH,WAAW,EAAE,qBAAqB,EAClC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,qBAAqB,EACvC,gBAAgB,EAAE,MAAM,GACtB,IAAI,CAAC;IAER;;;OAGG;IACH,uBAAuB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAEtD;;;OAGG;IACH,+BAA+B,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAE9D;;OAEG;IACH,qBAAqB,IAAI,IAAI,CAAC;IAE9B;;OAEG;IACH,6BAA6B,IAAI,IAAI,CAAC;IAEtC;;;;;OAKG;IACH,UAAU,CAAC,OAAO,EAAE,QAAQ,GAAG,cAAc,CAAC;IAE9C;;;;;OAKG;IACH,UAAU,CAAC,KAAK,EAAE,qBAAqB,GAAG,mBAAmB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAEvF;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG,mBAAmB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAE1F;;;;;;OAMG;IACH,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG,mBAAmB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;CAC3F;AAED,MAAM,MAAM,6BAA6B,GAAG,kBAAkB,GAC7D,UAAU,CAAC,SAAS,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;AAEtD,wBAAgB,sBAAsB,CACrC,EAAE,EAAE,gBAAgB,EACpB,MAAM,EAAE,MAAM,GACZ,gBAAgB,CAElB;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAEzF;AAED;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,6BAA6B;IAS5E,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAVzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAGhC;gBAGD,MAAM,EAAE,YAAY,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,EACzC,eAAe,EAAE,MAAM,WAAW,EACnD,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAC/C,OAAO,EAAE,aAAoD,EAC9E,YAAY,EAAE,iBAAiB;IAWzB,gBAAgB,IAAI,IAAI;IAMxB,eAAe,IAAI,IAAI;IAOvB,uBAAuB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAIrD,+BAA+B,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAI7D,qBAAqB,IAAI,IAAI;IAI7B,6BAA6B,IAAI,IAAI;IAIrC,UAAU,CAAC,OAAO,EAAE,SAAS,GAAG,eAAe;IAiB/C,UAAU,CAChB,KAAK,EAAE,qBAAqB,GAC1B,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC;IAyCxC,aAAa,CACnB,KAAK,EAAE,qBAAqB,GAC1B,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC;IAkFxC,IAAI,CACV,WAAW,EAAE,qBAAqB,EAClC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,qBAAqB,EACvC,SAAS,EAAE,MAAM,GACf,IAAI;IA0GA,aAAa,CACnB,KAAK,EAAE,qBAAqB,GAC1B,mBAAmB,CAAC,SAAS,EAAE,eAAe,CAAC;CAwHlD;AAED,MAAM,WAAW,mBAAmB,CAAC,QAAQ,EAAE,aAAa;IAC3D;;;;;;;OAOG;IACH,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IAErC;;;OAGG;IACH,GAAG,CAAC,UAAU,EAAE,QAAQ,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB,CAAC,QAAQ,EAAE,cAAc;IAC5D;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IAErE;;;OAGG;IACH,KAAK,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IAE/B;;;;OAIG;IACH,GAAG,CAAC,UAAU,EAAE,QAAQ,GAAG,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;CAC/D;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,GAAG,IAAI;IAC7E;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,GAAG,IAAI,CAAC;IAE7D;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,GAAG,IAAI,CAAC;IAElD;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC/C"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { assert, oob } from "@fluidframework/core-utils/internal";
|
|
6
6
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
7
7
|
import { compareFieldUpPaths, topDownPath, } from "../../core/index.js";
|
|
8
|
-
import { brand } from "../../util/index.js";
|
|
8
|
+
import { brand, RangeMap } from "../../util/index.js";
|
|
9
9
|
import { ModularChangeFamily, ModularEditBuilder, intoDelta as intoModularDelta, relevantRemovedRoots as relevantModularRemovedRoots, } from "../modular-schema/index.js";
|
|
10
10
|
import { optional, required } from "../optional-field/index.js";
|
|
11
11
|
import { sequence } from "../sequence-field/index.js";
|
|
@@ -25,8 +25,8 @@ export class DefaultChangeFamily {
|
|
|
25
25
|
get codecs() {
|
|
26
26
|
return this.modularFamily.codecs;
|
|
27
27
|
}
|
|
28
|
-
buildEditor(mintRevisionTag, changeReceiver) {
|
|
29
|
-
return new
|
|
28
|
+
buildEditor(mintRevisionTag, changeReceiver, options) {
|
|
29
|
+
return new DefaultIdBasedDataEditor(this, mintRevisionTag, changeReceiver, options, this.modularFamily.codecOptions);
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
@@ -52,20 +52,34 @@ export function intoDelta(taggedChange) {
|
|
|
52
52
|
export function relevantRemovedRoots(change) {
|
|
53
53
|
return relevantModularRemovedRoots(change, fieldKinds);
|
|
54
54
|
}
|
|
55
|
+
export function offsetChangesetLocalId(id, offset) {
|
|
56
|
+
return brand(id + offset);
|
|
57
|
+
}
|
|
58
|
+
export function subtractChangesetLocalId(a, b) {
|
|
59
|
+
return a - b;
|
|
60
|
+
}
|
|
55
61
|
/**
|
|
56
|
-
* Implementation of {@link
|
|
62
|
+
* Implementation of {@link IdBasedChangeFamilyDataEditor} based on the default set of supported field kinds.
|
|
57
63
|
* @sealed
|
|
58
64
|
*/
|
|
59
|
-
export class
|
|
60
|
-
constructor(family, mintRevisionTag, changeReceiver, codecOptions) {
|
|
65
|
+
export class DefaultIdBasedDataEditor {
|
|
66
|
+
constructor(family, mintRevisionTag, changeReceiver, options = { enableDetachedRootEditing: false }, codecOptions) {
|
|
61
67
|
this.mintRevisionTag = mintRevisionTag;
|
|
62
|
-
this.
|
|
68
|
+
this.options = options;
|
|
69
|
+
this.nodesWithoutCells = new RangeMap(offsetChangesetLocalId, subtractChangesetLocalId);
|
|
70
|
+
this.modularBuilder = new ModularEditBuilder(family, fieldKinds, changeReceiver, codecOptions, options);
|
|
63
71
|
}
|
|
64
72
|
enterTransaction() {
|
|
73
|
+
if (this.modularBuilder.isInTransaction() === false) {
|
|
74
|
+
this.nodesWithoutCells.clear();
|
|
75
|
+
}
|
|
65
76
|
this.modularBuilder.enterTransaction();
|
|
66
77
|
}
|
|
67
78
|
exitTransaction() {
|
|
68
79
|
this.modularBuilder.exitTransaction();
|
|
80
|
+
if (this.modularBuilder.isInTransaction() === false) {
|
|
81
|
+
this.nodesWithoutCells.clear();
|
|
82
|
+
}
|
|
69
83
|
}
|
|
70
84
|
addNodeExistsConstraint(path) {
|
|
71
85
|
this.modularBuilder.addNodeExistsConstraint(path, this.mintRevisionTag());
|
|
@@ -79,50 +93,119 @@ export class DefaultEditBuilder {
|
|
|
79
93
|
addNoChangeConstraintOnRevert() {
|
|
80
94
|
this.modularBuilder.addNoChangeConstraintOnRevert(this.mintRevisionTag());
|
|
81
95
|
}
|
|
96
|
+
buildRoots(content) {
|
|
97
|
+
const detachedRoots = [];
|
|
98
|
+
const count = content.topLevelLength;
|
|
99
|
+
if (count > 0) {
|
|
100
|
+
const buildRevision = this.mintRevisionTag();
|
|
101
|
+
const buildId = {
|
|
102
|
+
localId: this.modularBuilder.generateId(count),
|
|
103
|
+
revision: buildRevision,
|
|
104
|
+
};
|
|
105
|
+
const build = this.modularBuilder.buildTrees(buildId.localId, content, buildRevision);
|
|
106
|
+
this.modularBuilder.submitChanges([build], buildRevision);
|
|
107
|
+
detachedRoots.push({ first: buildId, count });
|
|
108
|
+
this.nodesWithoutCells.set(buildId.localId, count, true);
|
|
109
|
+
}
|
|
110
|
+
return detachedRoots;
|
|
111
|
+
}
|
|
82
112
|
valueField(field) {
|
|
113
|
+
const makeAttachEditDescription = (fill, revision) => {
|
|
114
|
+
const detachLocalId = this.modularBuilder.generateId();
|
|
115
|
+
const detach = { localId: detachLocalId, revision };
|
|
116
|
+
const change = required.changeHandler.editor.set({ fill, detach });
|
|
117
|
+
return {
|
|
118
|
+
type: "field",
|
|
119
|
+
field,
|
|
120
|
+
fieldKind: required.identifier,
|
|
121
|
+
change: brand(change),
|
|
122
|
+
revision,
|
|
123
|
+
};
|
|
124
|
+
};
|
|
83
125
|
return {
|
|
84
126
|
set: (newContent) => {
|
|
85
|
-
assert(newContent.topLevelLength === 1,
|
|
127
|
+
assert(newContent.topLevelLength === 1, "Expected exactly one node");
|
|
86
128
|
const revision = this.mintRevisionTag();
|
|
87
|
-
const
|
|
88
|
-
const
|
|
89
|
-
const build = this.modularBuilder.buildTrees(
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
field
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
this.modularBuilder.submitChanges([build, edit], revision);
|
|
129
|
+
const buildLocalId = this.modularBuilder.generateId();
|
|
130
|
+
const buildId = { localId: buildLocalId, revision };
|
|
131
|
+
const build = this.modularBuilder.buildTrees(buildLocalId, newContent, revision);
|
|
132
|
+
const attach = makeAttachEditDescription(buildId, revision);
|
|
133
|
+
this.modularBuilder.submitChanges([build, attach], revision);
|
|
134
|
+
},
|
|
135
|
+
attach: (newContent) => {
|
|
136
|
+
const isWithoutCell = this.nodesWithoutCells.delete(newContent.localId, 1) === 1;
|
|
137
|
+
if (!isWithoutCell) {
|
|
138
|
+
throw new UsageError("A hydrated node that has been attached before cannot be attached into an object's required field. Assign new content to the field instead.");
|
|
139
|
+
}
|
|
140
|
+
const revision = this.mintRevisionTag();
|
|
141
|
+
const attach = makeAttachEditDescription(newContent, revision);
|
|
142
|
+
this.modularBuilder.submitChanges([attach], revision);
|
|
102
143
|
},
|
|
103
144
|
};
|
|
104
145
|
}
|
|
105
146
|
optionalField(field) {
|
|
106
|
-
|
|
147
|
+
const makeAttachEditDescription = (fill, revision, wasEmpty) => {
|
|
148
|
+
const detachLocalId = this.modularBuilder.generateId();
|
|
149
|
+
const detach = { localId: detachLocalId, revision };
|
|
150
|
+
const change = optional.changeHandler.editor.set(wasEmpty, { fill, detach });
|
|
151
|
+
return {
|
|
152
|
+
type: "field",
|
|
153
|
+
field,
|
|
154
|
+
fieldKind: optional.identifier,
|
|
155
|
+
change: brand(change),
|
|
156
|
+
revision,
|
|
157
|
+
};
|
|
158
|
+
};
|
|
159
|
+
const editBuilder = {
|
|
107
160
|
set: (newContent, wasEmpty) => {
|
|
108
|
-
// The choice to ban empty chunks here instead of treating them as a clear is a subjective choice made to err of the side of more explicitness and stricter validation.
|
|
109
|
-
assert(newContent === undefined || newContent.topLevelLength === 1, 0xc13 /* optional fields should have a single top level node, or undefined */);
|
|
110
|
-
const edits = [];
|
|
111
|
-
let optionalChange;
|
|
112
|
-
const revision = this.mintRevisionTag();
|
|
113
|
-
const detach = { localId: this.modularBuilder.generateId(), revision };
|
|
114
161
|
if (newContent === undefined) {
|
|
115
|
-
|
|
162
|
+
editBuilder.clear(wasEmpty);
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
assert(newContent.topLevelLength === 1, "Expected exactly one node");
|
|
166
|
+
const revision = this.mintRevisionTag();
|
|
167
|
+
const buildLocalId = this.modularBuilder.generateId();
|
|
168
|
+
const buildId = { localId: buildLocalId, revision };
|
|
169
|
+
const build = this.modularBuilder.buildTrees(buildLocalId, newContent, revision);
|
|
170
|
+
const attach = makeAttachEditDescription(buildId, revision, wasEmpty);
|
|
171
|
+
this.modularBuilder.submitChanges([build, attach], revision);
|
|
172
|
+
},
|
|
173
|
+
attach: (content, wasEmpty) => {
|
|
174
|
+
if (content === undefined) {
|
|
175
|
+
editBuilder.clear(wasEmpty);
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
const isWithoutCell = this.nodesWithoutCells.delete(content.localId, 1) === 1;
|
|
179
|
+
if (!isWithoutCell && this.options.enableDetachedRootEditing !== true) {
|
|
180
|
+
throw new UsageError(`Attach edits require a minimum version for collaboration >= TBD.`);
|
|
181
|
+
}
|
|
182
|
+
const revision = this.mintRevisionTag();
|
|
183
|
+
const edits = [];
|
|
184
|
+
let stableSrcId;
|
|
185
|
+
if (isWithoutCell) {
|
|
186
|
+
stableSrcId = content;
|
|
116
187
|
}
|
|
117
188
|
else {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
189
|
+
// If the node has an associated cell, then it may be concurrently moved to another location.
|
|
190
|
+
// We use a rename to ensure that the node will be moved to a specific grave before the attach.
|
|
191
|
+
stableSrcId = { localId: this.modularBuilder.generateId(), revision };
|
|
192
|
+
const rename = {
|
|
193
|
+
type: "global",
|
|
194
|
+
revision,
|
|
195
|
+
renames: [
|
|
196
|
+
{ count: 1, oldId: content, newId: stableSrcId, detachLocation: undefined },
|
|
197
|
+
],
|
|
198
|
+
};
|
|
199
|
+
edits.push(rename);
|
|
125
200
|
}
|
|
201
|
+
const attach = makeAttachEditDescription(stableSrcId, revision, wasEmpty);
|
|
202
|
+
edits.push(attach);
|
|
203
|
+
this.modularBuilder.submitChanges(edits, revision);
|
|
204
|
+
},
|
|
205
|
+
clear: (wasEmpty) => {
|
|
206
|
+
const revision = this.mintRevisionTag();
|
|
207
|
+
const detach = { localId: this.modularBuilder.generateId(), revision };
|
|
208
|
+
const optionalChange = optional.changeHandler.editor.clear(wasEmpty, detach);
|
|
126
209
|
const change = brand(optionalChange);
|
|
127
210
|
const edit = {
|
|
128
211
|
type: "field",
|
|
@@ -131,10 +214,10 @@ export class DefaultEditBuilder {
|
|
|
131
214
|
change,
|
|
132
215
|
revision,
|
|
133
216
|
};
|
|
134
|
-
|
|
135
|
-
this.modularBuilder.submitChanges(edits, revision);
|
|
217
|
+
this.modularBuilder.submitChanges([edit], revision);
|
|
136
218
|
},
|
|
137
219
|
};
|
|
220
|
+
return editBuilder;
|
|
138
221
|
}
|
|
139
222
|
move(sourceField, sourceIndex, count, destinationField, destIndex) {
|
|
140
223
|
if (count === 0) {
|
|
@@ -155,13 +238,13 @@ export class DefaultEditBuilder {
|
|
|
155
238
|
const attachPath = topDownPath(destinationField.parent);
|
|
156
239
|
const sharedDepth = getSharedPrefixLength(detachPath, attachPath);
|
|
157
240
|
let adjustedAttachField = destinationField;
|
|
158
|
-
//
|
|
159
|
-
// that both paths have in common.
|
|
241
|
+
// `sharedDepth` is the number of elements, starting from the root, that both paths have in common.
|
|
160
242
|
if (sharedDepth === detachPath.length) {
|
|
161
|
-
const
|
|
243
|
+
const lowestCommonAncestor = attachPath[sharedDepth];
|
|
244
|
+
const attachField = lowestCommonAncestor?.parentField ?? destinationField.field;
|
|
162
245
|
if (attachField === sourceField.field) {
|
|
163
246
|
// The detach occurs in an ancestor field of the field where the attach occurs.
|
|
164
|
-
|
|
247
|
+
const attachAncestorIndex = lowestCommonAncestor?.parentIndex ?? destIndex;
|
|
165
248
|
if (attachAncestorIndex < sourceIndex) {
|
|
166
249
|
// The attach path runs through a node located before the detached nodes.
|
|
167
250
|
// No need to adjust the attach path.
|
|
@@ -170,14 +253,18 @@ export class DefaultEditBuilder {
|
|
|
170
253
|
// The attach path runs through a node located after the detached nodes.
|
|
171
254
|
// adjust the index for the node at that depth of the path, so that it is interpreted correctly
|
|
172
255
|
// in the composition performed by `submitChanges`.
|
|
173
|
-
attachAncestorIndex
|
|
174
|
-
let parent =
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
256
|
+
const adjustedAttachAncestorIndex = attachAncestorIndex - count;
|
|
257
|
+
let parent = lowestCommonAncestor === undefined
|
|
258
|
+
? {
|
|
259
|
+
parent: undefined,
|
|
260
|
+
detachedNodeId: undefined,
|
|
261
|
+
parentIndex: adjustedAttachAncestorIndex,
|
|
262
|
+
parentField: destinationField.field,
|
|
263
|
+
}
|
|
264
|
+
: {
|
|
265
|
+
...lowestCommonAncestor,
|
|
266
|
+
parentIndex: adjustedAttachAncestorIndex,
|
|
267
|
+
};
|
|
181
268
|
for (let i = sharedDepth + 1; i < attachPath.length; i += 1) {
|
|
182
269
|
parent = {
|
|
183
270
|
...(attachPath[i] ?? oob()),
|
|
@@ -191,8 +278,8 @@ export class DefaultEditBuilder {
|
|
|
191
278
|
}
|
|
192
279
|
}
|
|
193
280
|
}
|
|
194
|
-
const moveOut = sequence.changeHandler.editor.
|
|
195
|
-
const moveIn = sequence.changeHandler.editor.
|
|
281
|
+
const moveOut = sequence.changeHandler.editor.remove(sourceIndex, count, detachCellId, revision);
|
|
282
|
+
const moveIn = sequence.changeHandler.editor.insert(destIndex, count, attachCellId, revision, detachCellId);
|
|
196
283
|
this.modularBuilder.submitChanges([
|
|
197
284
|
{
|
|
198
285
|
type: "field",
|
|
@@ -212,26 +299,86 @@ export class DefaultEditBuilder {
|
|
|
212
299
|
}
|
|
213
300
|
}
|
|
214
301
|
sequenceField(field) {
|
|
215
|
-
|
|
302
|
+
const makeAttachEditDescription = (index, { first, count }, revision, areWithoutCells) => {
|
|
303
|
+
const edits = [];
|
|
304
|
+
// If the nodes have never been attached in cell, then we must use a cell ID that matches the build ID.
|
|
305
|
+
// This ensures back-compatibility with the v1 ModularChangeFamily model which requires that every node be associated with cell
|
|
306
|
+
// by generating an insert whose destination cell is the cell associated with the build ID.
|
|
307
|
+
let stableSrcId;
|
|
308
|
+
if (areWithoutCells) {
|
|
309
|
+
stableSrcId = first;
|
|
310
|
+
}
|
|
311
|
+
else {
|
|
312
|
+
// If the node has an associated cell, then it may be concurrently moved to another location.
|
|
313
|
+
// We use a rename to ensure that the node will be moved to a specific grave before the attach.
|
|
314
|
+
stableSrcId = { localId: this.modularBuilder.generateId(count), revision };
|
|
315
|
+
const rename = {
|
|
316
|
+
type: "global",
|
|
317
|
+
revision,
|
|
318
|
+
renames: [
|
|
319
|
+
{
|
|
320
|
+
count,
|
|
321
|
+
oldId: first,
|
|
322
|
+
newId: stableSrcId,
|
|
323
|
+
detachLocation: undefined,
|
|
324
|
+
},
|
|
325
|
+
],
|
|
326
|
+
};
|
|
327
|
+
edits.push(rename);
|
|
328
|
+
}
|
|
329
|
+
assert(stableSrcId.revision !== undefined, "Detached nodes ID must have a revision");
|
|
330
|
+
const change = sequence.changeHandler.editor.insert(index, count, stableSrcId, stableSrcId.revision, stableSrcId.localId);
|
|
331
|
+
const attach = {
|
|
332
|
+
type: "field",
|
|
333
|
+
field,
|
|
334
|
+
fieldKind: sequence.identifier,
|
|
335
|
+
change: brand(change),
|
|
336
|
+
revision,
|
|
337
|
+
};
|
|
338
|
+
edits.push(attach);
|
|
339
|
+
return edits;
|
|
340
|
+
};
|
|
341
|
+
const editBuilder = {
|
|
216
342
|
insert: (index, content) => {
|
|
217
|
-
const
|
|
218
|
-
if (
|
|
343
|
+
const count = content.topLevelLength;
|
|
344
|
+
if (count === 0) {
|
|
219
345
|
return;
|
|
220
346
|
}
|
|
221
347
|
const revision = this.mintRevisionTag();
|
|
222
|
-
const
|
|
223
|
-
const build = this.modularBuilder.buildTrees(
|
|
224
|
-
const
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
field,
|
|
228
|
-
fieldKind: sequence.identifier,
|
|
229
|
-
change,
|
|
230
|
-
revision,
|
|
348
|
+
const buildLocalId = this.modularBuilder.generateId();
|
|
349
|
+
const build = this.modularBuilder.buildTrees(buildLocalId, content, revision);
|
|
350
|
+
const roots = {
|
|
351
|
+
first: { localId: buildLocalId, revision },
|
|
352
|
+
count,
|
|
231
353
|
};
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
354
|
+
const attach = makeAttachEditDescription(index, roots, revision, true);
|
|
355
|
+
this.modularBuilder.submitChanges([build, ...attach], revision);
|
|
356
|
+
},
|
|
357
|
+
attach: (index, newContent) => {
|
|
358
|
+
const attachRevision = this.mintRevisionTag();
|
|
359
|
+
let areAllWithoutCells = true;
|
|
360
|
+
let insertOffset = 0;
|
|
361
|
+
const edits = [];
|
|
362
|
+
for (const range of newContent) {
|
|
363
|
+
if (range.count === 0) {
|
|
364
|
+
continue;
|
|
365
|
+
}
|
|
366
|
+
const countWithoutCells = this.nodesWithoutCells.delete(range.first.localId, range.count);
|
|
367
|
+
assert(countWithoutCells === 0 || countWithoutCells === range.count, "All detached roots within the same ID range must either all have or all not have a cell");
|
|
368
|
+
const areWithoutCells = countWithoutCells === range.count;
|
|
369
|
+
if (!areWithoutCells) {
|
|
370
|
+
areAllWithoutCells = false;
|
|
371
|
+
}
|
|
372
|
+
const renameAndAttach = makeAttachEditDescription(index + insertOffset, range, attachRevision, areWithoutCells);
|
|
373
|
+
edits.push(...renameAndAttach);
|
|
374
|
+
insertOffset += range.count;
|
|
375
|
+
}
|
|
376
|
+
if (!areAllWithoutCells && this.options.enableDetachedRootEditing !== true) {
|
|
377
|
+
throw new UsageError(`Attach edits require a minimum version for collaboration >= TBD.`);
|
|
378
|
+
}
|
|
379
|
+
if (edits.length > 0) {
|
|
380
|
+
this.modularBuilder.submitChanges(edits, attachRevision);
|
|
381
|
+
}
|
|
235
382
|
},
|
|
236
383
|
remove: (index, count) => {
|
|
237
384
|
if (count === 0) {
|
|
@@ -243,6 +390,7 @@ export class DefaultEditBuilder {
|
|
|
243
390
|
this.modularBuilder.submitChange(field, sequence.identifier, change, revision);
|
|
244
391
|
},
|
|
245
392
|
};
|
|
393
|
+
return editBuilder;
|
|
246
394
|
}
|
|
247
395
|
}
|
|
248
396
|
/**
|