@fluidframework/tree 2.80.0 → 2.81.0-374083
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 +43 -7
- package/dist/alpha.d.ts +5 -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 +46 -8
- 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 +30 -8
- package/dist/core/rebase/utils.js.map +1 -1
- package/dist/core/tree/anchorSet.js +1 -0
- package/dist/core/tree/anchorSet.js.map +1 -1
- package/dist/core/tree/detachedFieldIndex.d.ts +6 -0
- package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndex.js +9 -0
- package/dist/core/tree/detachedFieldIndex.js.map +1 -1
- package/dist/core/tree/index.d.ts +1 -1
- 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 +3 -2
- package/dist/core/tree/visitDelta.js.map +1 -1
- package/dist/core/tree/visitorUtils.d.ts.map +1 -1
- package/dist/core/tree/visitorUtils.js +58 -18
- package/dist/core/tree/visitorUtils.js.map +1 -1
- package/dist/feature-libraries/changeAtomIdBTree.d.ts +10 -4
- package/dist/feature-libraries/changeAtomIdBTree.d.ts.map +1 -1
- package/dist/feature-libraries/changeAtomIdBTree.js +16 -2
- package/dist/feature-libraries/changeAtomIdBTree.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/basicChunk.js +7 -0
- package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.js +4 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.js +3 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +1 -0
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +93 -44
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js +238 -69
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js +11 -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 +5 -2
- package/dist/feature-libraries/default-schema/index.js.map +1 -1
- package/dist/feature-libraries/default-schema/locationBasedEditBuilder.d.ts +38 -0
- package/dist/feature-libraries/default-schema/locationBasedEditBuilder.d.ts.map +1 -0
- package/dist/feature-libraries/default-schema/locationBasedEditBuilder.js +132 -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 +40 -9
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.js +3 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +3 -3
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +8 -3
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/mapTreeCursor.d.ts.map +1 -1
- package/dist/feature-libraries/mapTreeCursor.js +1 -0
- package/dist/feature-libraries/mapTreeCursor.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 +97 -21
- package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/crossFieldQueries.js +4 -7
- package/dist/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +20 -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 +3 -9
- package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts +4 -4
- package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/index.js +2 -2
- package/dist/feature-libraries/modular-schema/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +11 -28
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js +255 -161
- package/dist/feature-libraries/modular-schema/modularChangeCodecV1.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 +393 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecV3.js.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +8 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +48 -20
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +1350 -476
- 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/modularChangeFormatV3.d.ts +146 -0
- package/dist/feature-libraries/modular-schema/modularChangeFormatV3.d.ts.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeFormatV3.js +32 -0
- package/dist/feature-libraries/modular-schema/modularChangeFormatV3.js.map +1 -0
- package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts +47 -11
- 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/object-forest/objectForest.d.ts.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.js +3 -1
- package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/dist/feature-libraries/optional-field/index.d.ts +2 -2
- package/dist/feature-libraries/optional-field/index.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/index.js +1 -2
- package/dist/feature-libraries/optional-field/index.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.d.ts +5 -26
- package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.js +221 -443
- 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 +24 -33
- 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/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 +83 -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/index.d.ts +2 -3
- package/dist/feature-libraries/sequence-field/index.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/index.js +1 -3
- package/dist/feature-libraries/sequence-field/index.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 +107 -114
- 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 +18 -31
- 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 +0 -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 +365 -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 +10 -10
- 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 +14 -109
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
- package/dist/feature-libraries/sequence-field/types.d.ts +30 -59
- 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 +15 -24
- package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.js +116 -305
- package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/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 +38 -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 +11 -0
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.js +1 -0
- package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeEnricher.js +1 -1
- package/dist/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts +5 -5
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.js +10 -4
- 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 +9 -10
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +63 -8
- 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 +9 -4
- 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 +20 -14
- 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/api/index.d.ts +1 -1
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +2 -1
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.js +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryBeta.js +1 -1
- package/dist/simple-tree/api/schemaFactoryBeta.js.map +1 -1
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +4 -4
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts +244 -0
- package/dist/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -1
- package/dist/simple-tree/api/snapshotCompatibilityChecker.js +297 -1
- package/dist/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
- package/dist/simple-tree/api/tree.d.ts +3 -1
- 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/core/treeNodeKernel.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +6 -2
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts +15 -15
- 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 +3 -3
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +4 -3
- 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 +7 -5
- 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 +184 -126
- package/dist/simple-tree/prepareForInsertion.js.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +13 -4
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js +31 -13
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/dist/text/index.d.ts +6 -0
- package/dist/text/index.d.ts.map +1 -0
- package/dist/text/index.js +10 -0
- package/dist/text/index.js.map +1 -0
- package/dist/text/textDomain.d.ts +138 -0
- package/dist/text/textDomain.d.ts.map +1 -0
- package/dist/text/textDomain.js +121 -0
- package/dist/text/textDomain.js.map +1 -0
- package/dist/treeFactory.d.ts.map +1 -1
- package/dist/treeFactory.js +12 -2
- package/dist/treeFactory.js.map +1 -1
- package/dist/util/bTreeUtils.d.ts +12 -4
- package/dist/util/bTreeUtils.d.ts.map +1 -1
- package/dist/util/bTreeUtils.js +14 -18
- package/dist/util/bTreeUtils.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/nestedMap.js +12 -12
- package/dist/util/nestedMap.js.map +1 -1
- package/dist/util/rangeMap.d.ts +24 -12
- package/dist/util/rangeMap.d.ts.map +1 -1
- package/dist/util/rangeMap.js +46 -6
- package/dist/util/rangeMap.js.map +1 -1
- package/docs/user-facing/merge-semantics.md +3 -2
- package/eslint.config.mts +4 -32
- package/lib/alpha.d.ts +5 -0
- 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 +46 -8
- 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 +30 -8
- package/lib/core/rebase/utils.js.map +1 -1
- package/lib/core/tree/anchorSet.js +1 -0
- package/lib/core/tree/anchorSet.js.map +1 -1
- package/lib/core/tree/detachedFieldIndex.d.ts +6 -0
- package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndex.js +10 -1
- package/lib/core/tree/detachedFieldIndex.js.map +1 -1
- package/lib/core/tree/index.d.ts +1 -1
- 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 +3 -2
- package/lib/core/tree/visitDelta.js.map +1 -1
- package/lib/core/tree/visitorUtils.d.ts.map +1 -1
- package/lib/core/tree/visitorUtils.js +58 -18
- package/lib/core/tree/visitorUtils.js.map +1 -1
- package/lib/feature-libraries/changeAtomIdBTree.d.ts +10 -4
- package/lib/feature-libraries/changeAtomIdBTree.d.ts.map +1 -1
- package/lib/feature-libraries/changeAtomIdBTree.js +14 -1
- package/lib/feature-libraries/changeAtomIdBTree.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/basicChunk.js +8 -1
- package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.js +4 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.js +3 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +1 -0
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +93 -44
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js +236 -70
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js +11 -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 +38 -0
- package/lib/feature-libraries/default-schema/locationBasedEditBuilder.d.ts.map +1 -0
- package/lib/feature-libraries/default-schema/locationBasedEditBuilder.js +128 -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 +41 -10
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.js +3 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +3 -3
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +2 -2
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/mapTreeCursor.d.ts.map +1 -1
- package/lib/feature-libraries/mapTreeCursor.js +2 -1
- package/lib/feature-libraries/mapTreeCursor.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 +97 -21
- package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/crossFieldQueries.js +3 -5
- package/lib/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +20 -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 +3 -9
- package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts +4 -4
- package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/index.js +2 -2
- package/lib/feature-libraries/modular-schema/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +11 -28
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js +247 -143
- package/lib/feature-libraries/modular-schema/modularChangeCodecV1.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 +389 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecV3.js.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +8 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +48 -20
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +1344 -479
- 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/modularChangeFormatV3.d.ts +146 -0
- package/lib/feature-libraries/modular-schema/modularChangeFormatV3.d.ts.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeFormatV3.js +29 -0
- package/lib/feature-libraries/modular-schema/modularChangeFormatV3.js.map +1 -0
- package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts +47 -11
- 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/object-forest/objectForest.d.ts.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.js +3 -1
- package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/lib/feature-libraries/optional-field/index.d.ts +2 -2
- package/lib/feature-libraries/optional-field/index.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/index.js +1 -1
- package/lib/feature-libraries/optional-field/index.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.d.ts +5 -26
- package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.js +221 -441
- 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 +24 -33
- 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/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 +85 -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/index.d.ts +2 -3
- package/lib/feature-libraries/sequence-field/index.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/index.js +0 -1
- package/lib/feature-libraries/sequence-field/index.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 +109 -116
- 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 +18 -31
- 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 +0 -2
- 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 +356 -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 +10 -10
- 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 +14 -109
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
- package/lib/feature-libraries/sequence-field/types.d.ts +30 -59
- 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 +15 -24
- package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.js +112 -298
- package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
- package/lib/index.d.ts +3 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/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 +41 -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 +11 -0
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.js +1 -0
- package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeEnricher.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeEnricher.js +2 -2
- package/lib/shared-tree/sharedTreeChangeEnricher.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts +5 -5
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.js +11 -5
- 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 +9 -10
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +66 -11
- 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 +9 -4
- 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 +20 -14
- 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/api/index.d.ts +1 -1
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +1 -1
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.js +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryBeta.js +1 -1
- package/lib/simple-tree/api/schemaFactoryBeta.js.map +1 -1
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +4 -4
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts +244 -0
- package/lib/simple-tree/api/snapshotCompatibilityChecker.d.ts.map +1 -1
- package/lib/simple-tree/api/snapshotCompatibilityChecker.js +270 -0
- package/lib/simple-tree/api/snapshotCompatibilityChecker.js.map +1 -1
- package/lib/simple-tree/api/tree.d.ts +3 -1
- 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/core/treeNodeKernel.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +6 -2
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts +15 -15
- 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 +3 -3
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +2 -2
- 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 +8 -6
- 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 +13 -4
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +28 -11
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/lib/text/index.d.ts +6 -0
- package/lib/text/index.d.ts.map +1 -0
- package/lib/text/index.js +6 -0
- package/lib/text/index.js.map +1 -0
- package/lib/text/textDomain.d.ts +138 -0
- package/lib/text/textDomain.d.ts.map +1 -0
- package/lib/text/textDomain.js +118 -0
- package/lib/text/textDomain.js.map +1 -0
- package/lib/treeFactory.d.ts.map +1 -1
- package/lib/treeFactory.js +13 -3
- package/lib/treeFactory.js.map +1 -1
- package/lib/util/bTreeUtils.d.ts +12 -4
- package/lib/util/bTreeUtils.d.ts.map +1 -1
- package/lib/util/bTreeUtils.js +15 -19
- package/lib/util/bTreeUtils.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/nestedMap.js +12 -12
- package/lib/util/nestedMap.js.map +1 -1
- package/lib/util/rangeMap.d.ts +24 -12
- package/lib/util/rangeMap.d.ts.map +1 -1
- package/lib/util/rangeMap.js +44 -5
- package/lib/util/rangeMap.js.map +1 -1
- package/package.json +25 -25
- package/src/core/change-family/changeFamily.ts +5 -0
- package/src/core/change-family/index.ts +1 -0
- package/src/core/index.ts +6 -1
- package/src/core/rebase/changeRebaser.ts +6 -1
- package/src/core/rebase/index.ts +3 -0
- package/src/core/rebase/types.ts +65 -21
- package/src/core/rebase/utils.ts +39 -11
- package/src/core/tree/anchorSet.ts +1 -0
- package/src/core/tree/detachedFieldIndex.ts +17 -1
- package/src/core/tree/index.ts +2 -1
- package/src/core/tree/pathTree.ts +16 -4
- package/src/core/tree/visitDelta.ts +6 -2
- package/src/core/tree/visitorUtils.ts +55 -19
- package/src/feature-libraries/changeAtomIdBTree.ts +37 -5
- package/src/feature-libraries/chunked-forest/basicChunk.ts +7 -1
- package/src/feature-libraries/chunked-forest/chunkTree.ts +6 -1
- package/src/feature-libraries/chunked-forest/chunkedForest.ts +3 -1
- package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +1 -0
- package/src/feature-libraries/default-schema/defaultEditBuilder.ts +399 -127
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +13 -5
- package/src/feature-libraries/default-schema/index.ts +17 -5
- package/src/feature-libraries/default-schema/locationBasedEditBuilder.ts +188 -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 +68 -25
- package/src/feature-libraries/forest-summary/forestSummarizer.ts +3 -1
- package/src/feature-libraries/index.ts +22 -8
- package/src/feature-libraries/mapTreeCursor.ts +2 -1
- package/src/feature-libraries/mitigatedChangeFamily.ts +3 -1
- package/src/feature-libraries/modular-schema/crossFieldQueries.ts +142 -44
- package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +32 -58
- package/src/feature-libraries/modular-schema/genericFieldKind.ts +6 -18
- package/src/feature-libraries/modular-schema/index.ts +16 -15
- package/src/feature-libraries/modular-schema/modularChangeCodecV1.ts +560 -351
- package/src/feature-libraries/modular-schema/modularChangeCodecV3.ts +760 -0
- package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +14 -1
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +2620 -782
- package/src/feature-libraries/modular-schema/modularChangeFormatV1.ts +1 -0
- package/src/feature-libraries/modular-schema/modularChangeFormatV3.ts +62 -0
- package/src/feature-libraries/modular-schema/modularChangeTypes.ts +58 -11
- package/src/feature-libraries/object-forest/objectForest.ts +3 -1
- package/src/feature-libraries/optional-field/index.ts +1 -3
- package/src/feature-libraries/optional-field/optionalField.ts +318 -562
- package/src/feature-libraries/optional-field/optionalFieldChangeFormatV3.ts +45 -0
- package/src/feature-libraries/optional-field/optionalFieldChangeTypes.ts +24 -38
- 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/sequence-field/compose.ts +139 -522
- package/src/feature-libraries/sequence-field/helperTypes.ts +34 -19
- package/src/feature-libraries/sequence-field/index.ts +0 -9
- package/src/feature-libraries/sequence-field/invert.ts +103 -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 +169 -205
- package/src/feature-libraries/sequence-field/replaceRevisions.ts +25 -47
- package/src/feature-libraries/sequence-field/sequenceFieldChangeHandler.ts +0 -2
- package/src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts +648 -228
- package/src/feature-libraries/sequence-field/sequenceFieldCodecV3.ts +56 -70
- package/src/feature-libraries/sequence-field/sequenceFieldEditor.ts +25 -27
- package/src/feature-libraries/sequence-field/sequenceFieldToDelta.ts +19 -129
- package/src/feature-libraries/sequence-field/types.ts +34 -64
- package/src/feature-libraries/sequence-field/utils.ts +139 -353
- package/src/index.ts +7 -0
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/index.ts +3 -2
- package/src/shared-tree/schematizeTree.ts +21 -8
- package/src/shared-tree/schematizingTreeView.ts +56 -70
- package/src/shared-tree/sharedTree.ts +20 -3
- package/src/shared-tree/sharedTreeChangeCodecs.ts +5 -1
- package/src/shared-tree/sharedTreeChangeEnricher.ts +2 -0
- package/src/shared-tree/sharedTreeChangeFamily.ts +15 -5
- package/src/shared-tree/sharedTreeEditBuilder.ts +39 -8
- package/src/shared-tree/treeCheckout.ts +95 -24
- package/src/shared-tree-core/branch.ts +13 -3
- package/src/shared-tree-core/editManager.ts +42 -28
- 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/api/index.ts +3 -0
- package/src/simple-tree/api/schemaFactoryAlpha.ts +1 -1
- package/src/simple-tree/api/schemaFactoryBeta.ts +1 -1
- package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +4 -4
- package/src/simple-tree/api/snapshotCompatibilityChecker.ts +501 -0
- package/src/simple-tree/api/tree.ts +3 -1
- package/src/simple-tree/core/treeNodeKernel.ts +6 -2
- package/src/simple-tree/core/unhydratedFlexTree.ts +87 -36
- package/src/simple-tree/fieldSchema.ts +6 -4
- package/src/simple-tree/index.ts +5 -1
- package/src/simple-tree/node-kinds/array/arrayNode.ts +9 -7
- 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 +343 -201
- package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +43 -15
- package/src/text/README.md +8 -0
- package/src/text/index.ts +6 -0
- package/src/text/textDomain.ts +199 -0
- package/src/treeFactory.ts +14 -4
- package/src/util/bTreeUtils.ts +33 -22
- package/src/util/index.ts +3 -0
- package/src/util/nestedMap.ts +12 -12
- package/src/util/rangeMap.ts +72 -18
- package/.eslintrc.cjs +0 -125
- package/assertTagging.config.mjs +0 -14
- 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
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
areEqualChangeAtomIds,
|
|
15
15
|
makeChangeAtomId,
|
|
16
16
|
} from "../../core/index.js";
|
|
17
|
-
import { type Mutable, brand } from "../../util/index.js";
|
|
17
|
+
import { type Mutable, areAdjacentIntegerRanges, brand } from "../../util/index.js";
|
|
18
18
|
import {
|
|
19
19
|
CrossFieldTarget,
|
|
20
20
|
type NodeId,
|
|
@@ -22,31 +22,21 @@ import {
|
|
|
22
22
|
type NestedChangesIndices,
|
|
23
23
|
} from "../modular-schema/index.js";
|
|
24
24
|
|
|
25
|
-
import type {
|
|
26
|
-
CellRename,
|
|
27
|
-
DetachOfRemovedNodes,
|
|
28
|
-
EmptyInputCellMark,
|
|
29
|
-
MoveMarkEffect,
|
|
30
|
-
} from "./helperTypes.js";
|
|
25
|
+
import type { DetachOfRemovedNodes, EmptyInputCellMark } from "./helperTypes.js";
|
|
31
26
|
import {
|
|
32
27
|
type Attach,
|
|
33
|
-
type AttachAndDetach,
|
|
34
28
|
type CellId,
|
|
35
29
|
type CellMark,
|
|
36
30
|
type Changeset,
|
|
37
31
|
type Detach,
|
|
38
|
-
type DetachFields,
|
|
39
32
|
type HasRevisionTag,
|
|
40
|
-
type Insert,
|
|
41
33
|
type Mark,
|
|
42
34
|
type MarkEffect,
|
|
43
|
-
type MoveIn,
|
|
44
|
-
type MoveOut,
|
|
45
35
|
type NoopMark,
|
|
46
36
|
NoopMarkType,
|
|
47
|
-
type Remove,
|
|
48
37
|
type CellCount,
|
|
49
38
|
type Rename,
|
|
39
|
+
type Pin,
|
|
50
40
|
} from "./types.js";
|
|
51
41
|
|
|
52
42
|
export function isEmpty(change: Changeset): boolean {
|
|
@@ -65,23 +55,14 @@ export function createEmpty(): Changeset {
|
|
|
65
55
|
export function getNestedChanges(change: Changeset): NestedChangesIndices {
|
|
66
56
|
const output: NestedChangesIndices = [];
|
|
67
57
|
let inputIndex = 0;
|
|
68
|
-
let outputIndex = 0;
|
|
69
58
|
for (const mark of change) {
|
|
70
59
|
const { changes, count } = mark;
|
|
71
60
|
if (changes !== undefined) {
|
|
72
|
-
output.push([
|
|
73
|
-
changes,
|
|
74
|
-
areInputCellsEmpty(mark) ? undefined : inputIndex /* inputIndex */,
|
|
75
|
-
areOutputCellsEmpty(mark) ? undefined : outputIndex /* outputIndex */,
|
|
76
|
-
]);
|
|
61
|
+
output.push([changes, inputIndex]);
|
|
77
62
|
}
|
|
78
63
|
if (!areInputCellsEmpty(mark)) {
|
|
79
64
|
inputIndex += count;
|
|
80
65
|
}
|
|
81
|
-
|
|
82
|
-
if (!areOutputCellsEmpty(mark)) {
|
|
83
|
-
outputIndex += count;
|
|
84
|
-
}
|
|
85
66
|
}
|
|
86
67
|
return output;
|
|
87
68
|
}
|
|
@@ -96,10 +77,9 @@ export function isNewAttachEffect(
|
|
|
96
77
|
revision?: RevisionTag,
|
|
97
78
|
): boolean {
|
|
98
79
|
return (
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
(isAttachAndDetachEffect(effect) && isNewAttachEffect(effect.attach, cellId, revision))
|
|
80
|
+
isAttach(effect) &&
|
|
81
|
+
cellId !== undefined &&
|
|
82
|
+
(effect.revision ?? revision) === (cellId.revision ?? revision)
|
|
103
83
|
);
|
|
104
84
|
}
|
|
105
85
|
|
|
@@ -107,12 +87,12 @@ export function isRename(mark: MarkEffect): mark is Rename {
|
|
|
107
87
|
return mark.type === "Rename";
|
|
108
88
|
}
|
|
109
89
|
|
|
110
|
-
export function isInsert(mark: MarkEffect): mark is
|
|
90
|
+
export function isInsert(mark: MarkEffect): mark is Attach {
|
|
111
91
|
return mark.type === "Insert";
|
|
112
92
|
}
|
|
113
93
|
|
|
114
94
|
export function isAttach(effect: MarkEffect): effect is Attach {
|
|
115
|
-
return effect.type === "Insert"
|
|
95
|
+
return effect.type === "Insert";
|
|
116
96
|
}
|
|
117
97
|
|
|
118
98
|
export function isReattach(mark: Mark): boolean {
|
|
@@ -125,7 +105,7 @@ export function isReattachEffect(effect: MarkEffect, cellId: CellId | undefined)
|
|
|
125
105
|
|
|
126
106
|
export function isActiveReattach(
|
|
127
107
|
mark: Mark,
|
|
128
|
-
): mark is CellMark<
|
|
108
|
+
): mark is CellMark<Attach> & { conflictsWith?: undefined } {
|
|
129
109
|
return isAttach(mark) && isReattachEffect(mark, mark.cellId) && mark.cellId !== undefined;
|
|
130
110
|
}
|
|
131
111
|
|
|
@@ -138,15 +118,24 @@ export function getInputCellId(mark: Mark): CellId | undefined {
|
|
|
138
118
|
}
|
|
139
119
|
|
|
140
120
|
export function getOutputCellId(mark: Mark): CellId | undefined {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
121
|
+
const type = mark.type;
|
|
122
|
+
switch (type) {
|
|
123
|
+
case NoopMarkType: {
|
|
124
|
+
return getInputCellId(mark);
|
|
125
|
+
}
|
|
126
|
+
case "Insert": {
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
129
|
+
case "Remove": {
|
|
130
|
+
return getDetachOutputCellId(mark);
|
|
131
|
+
}
|
|
132
|
+
case "Rename": {
|
|
133
|
+
return mark.idOverride;
|
|
134
|
+
}
|
|
135
|
+
default: {
|
|
136
|
+
unreachableCase(type);
|
|
137
|
+
}
|
|
147
138
|
}
|
|
148
|
-
|
|
149
|
-
return getInputCellId(mark);
|
|
150
139
|
}
|
|
151
140
|
|
|
152
141
|
export function cellSourcesFromMarks(
|
|
@@ -246,79 +235,72 @@ export function compareCellPositionsUsingTombstones(
|
|
|
246
235
|
|
|
247
236
|
// Note that these indices are for ordering the revisions in which the cells were named, not the revisions
|
|
248
237
|
// of the changesets in which the marks targeting these cells appear.
|
|
249
|
-
const
|
|
250
|
-
|
|
238
|
+
const revisionComparison = metadata.compareRevisions(
|
|
239
|
+
oldMarkCell.revision,
|
|
240
|
+
newMarkCell.revision,
|
|
241
|
+
);
|
|
251
242
|
|
|
252
243
|
// If the metadata defines an ordering for the revisions then the cell from the newer revision comes first.
|
|
253
|
-
if (
|
|
254
|
-
return
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
// The same scenario can arise in the context of compose (just consider composing `old'` and `new'` from
|
|
280
|
-
// the examples above) with the same resolution.
|
|
281
|
-
assert(false, 0x8a2 /* Invalid cell ordering scenario */);
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
// The absence of metadata for a cell with a defined revision means that the cell is from a revision that
|
|
285
|
-
// predates the edits that are within the scope of the metadata. Such a cell is therefore older than the one
|
|
286
|
-
// for which we do have metadata.
|
|
287
|
-
return oldCellRevisionIndex === undefined ? CellOrder.NewThenOld : CellOrder.OldThenNew;
|
|
244
|
+
if (revisionComparison !== 0) {
|
|
245
|
+
return revisionComparison > 0 ? CellOrder.NewThenOld : CellOrder.OldThenNew;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// While it is possible for both marks to refer to cells that were named in revisions that are outside
|
|
249
|
+
// the scope of the metadata, such a scenario should be handled above due to the fact that one of the two
|
|
250
|
+
// changesets should have tombstones or marks for both cells.
|
|
251
|
+
//
|
|
252
|
+
// To see this in the context of rebase, we must consider the lowest common ancestor (LCA) of each change's
|
|
253
|
+
// original (i.e., unrebased) edit with the head of the branch they will both reside on after the rebase.
|
|
254
|
+
// ...─(Ti)─...─(Tj)─...─(old')─(new') <- branch both change will reside on after rebase
|
|
255
|
+
// | └─...─(new)
|
|
256
|
+
// └─...─(old)
|
|
257
|
+
// In the diagram above we can see that by the time `new` is being rebased over `old`, both changesets have
|
|
258
|
+
// been rebased over, and therefore have cell information for, changes `Tj` onwards. This means that one of
|
|
259
|
+
// The two changesets (the `old` one in the diagram above) will have tombstones or marks for any cells that
|
|
260
|
+
// `new` refers to so long as those cells were not created on `new`'s branch.
|
|
261
|
+
// Note that the change that contains the superset of cells (again, ignoring cells created on the other
|
|
262
|
+
// change's branch) is not always the older change. Consider the following scenario:
|
|
263
|
+
// ...─(Ti)─...─(Tj)─...─(old')─(new')
|
|
264
|
+
// | └─...─(old)
|
|
265
|
+
// └─...─(new)
|
|
266
|
+
//
|
|
267
|
+
// The same scenario can arise in the context of compose (just consider composing `old'` and `new'` from
|
|
268
|
+
// the examples above) with the same resolution.
|
|
269
|
+
assert(false, 0x8a2 /* Invalid cell ordering scenario */);
|
|
288
270
|
}
|
|
289
271
|
}
|
|
290
272
|
|
|
291
273
|
/**
|
|
292
274
|
* Gets the ID of the cell in the output context of the given detach `mark`.
|
|
293
275
|
*/
|
|
294
|
-
export function getDetachOutputCellId(mark: Detach
|
|
295
|
-
if (
|
|
296
|
-
return mark.
|
|
276
|
+
export function getDetachOutputCellId(mark: Detach): ChangeAtomId {
|
|
277
|
+
if (mark.cellRename !== undefined) {
|
|
278
|
+
return mark.cellRename;
|
|
297
279
|
}
|
|
298
|
-
|
|
299
|
-
|
|
280
|
+
|
|
281
|
+
if (mark.detachCellId !== undefined) {
|
|
282
|
+
return mark.detachCellId;
|
|
300
283
|
}
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
284
|
+
|
|
285
|
+
return getDetachedRootId(mark);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* Gets the ID of the node to be attached in the input context of the given detach `mark`.
|
|
290
|
+
*/
|
|
291
|
+
export function getAttachedRootId(mark: Attach): ChangeAtomId {
|
|
292
|
+
return makeChangeAtomId(mark.id, mark.revision);
|
|
304
293
|
}
|
|
305
294
|
|
|
306
295
|
/**
|
|
307
296
|
* Gets the ID of the detached node in the output context of the given detach `mark`.
|
|
308
297
|
*/
|
|
309
|
-
export function
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
case "MoveOut": {
|
|
316
|
-
return makeChangeAtomId(mark.id, mark.revision);
|
|
317
|
-
}
|
|
318
|
-
default: {
|
|
319
|
-
unreachableCase(mark);
|
|
320
|
-
}
|
|
321
|
-
}
|
|
298
|
+
export function getDetachedRootId(mark: Detach): ChangeAtomId {
|
|
299
|
+
return makeChangeAtomId(mark.id, mark.revision);
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
export function getMovedNodeId(mark: Attach | Detach): ChangeAtomId {
|
|
303
|
+
return makeChangeAtomId(mark.id, mark.revision);
|
|
322
304
|
}
|
|
323
305
|
|
|
324
306
|
/**
|
|
@@ -329,67 +311,20 @@ export function normalizeCellRename(
|
|
|
329
311
|
count: CellCount,
|
|
330
312
|
attach: Attach,
|
|
331
313
|
detach: Detach,
|
|
332
|
-
): CellMark<
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
// because the resulting Rename may be rebased over other changes that rename the input cell,
|
|
339
|
-
// eventually leading to an impactful rename.
|
|
340
|
-
return {
|
|
341
|
-
type: "Rename",
|
|
342
|
-
count,
|
|
343
|
-
cellId,
|
|
344
|
-
idOverride: outputId,
|
|
345
|
-
};
|
|
346
|
-
}
|
|
347
|
-
} else {
|
|
348
|
-
// Normalization: when the attach is an insert/revive, we rely on the implicit reviving semantics of the
|
|
349
|
-
// detach instead of using an explicit revive effect in an AttachAndDetach
|
|
350
|
-
return {
|
|
351
|
-
...detach,
|
|
352
|
-
count,
|
|
353
|
-
cellId,
|
|
354
|
-
};
|
|
355
|
-
}
|
|
314
|
+
): CellMark<DetachOfRemovedNodes | Rename | NoopMark> {
|
|
315
|
+
const outputId = getDetachOutputCellId(detach);
|
|
316
|
+
// Note that the output ID may be the same as the cellId. In such a scenario,
|
|
317
|
+
// we output an (impact-less) Rename mark anyway (as opposed to a Skip)
|
|
318
|
+
// because the resulting Rename may be rebased over other changes that rename the input cell,
|
|
319
|
+
// eventually leading to an impactful rename.
|
|
356
320
|
return {
|
|
357
|
-
type: "
|
|
358
|
-
attach,
|
|
359
|
-
detach,
|
|
321
|
+
type: "Rename",
|
|
360
322
|
count,
|
|
361
323
|
cellId,
|
|
324
|
+
idOverride: outputId,
|
|
362
325
|
};
|
|
363
326
|
}
|
|
364
327
|
|
|
365
|
-
/**
|
|
366
|
-
* Preserves the semantics of the given `mark` but repackages it into an `AttachAndDetach` mark if it is not already one.
|
|
367
|
-
*/
|
|
368
|
-
export function asAttachAndDetach(mark: CellMark<CellRename>): CellMark<AttachAndDetach> {
|
|
369
|
-
if (mark.type === "AttachAndDetach") {
|
|
370
|
-
return mark;
|
|
371
|
-
}
|
|
372
|
-
const { cellId, count, changes, revision, ...effect } = mark;
|
|
373
|
-
const attachAndDetach: CellMark<AttachAndDetach | Detach> = {
|
|
374
|
-
type: "AttachAndDetach",
|
|
375
|
-
count,
|
|
376
|
-
cellId,
|
|
377
|
-
attach: {
|
|
378
|
-
type: "Insert",
|
|
379
|
-
id: mark.id,
|
|
380
|
-
},
|
|
381
|
-
detach: effect,
|
|
382
|
-
};
|
|
383
|
-
if (changes !== undefined) {
|
|
384
|
-
attachAndDetach.changes = changes;
|
|
385
|
-
}
|
|
386
|
-
if (revision !== undefined) {
|
|
387
|
-
attachAndDetach.attach.revision = revision;
|
|
388
|
-
attachAndDetach.detach.revision = revision;
|
|
389
|
-
}
|
|
390
|
-
return attachAndDetach;
|
|
391
|
-
}
|
|
392
|
-
|
|
393
328
|
export function cloneMark<TMark extends Mark>(mark: TMark): TMark {
|
|
394
329
|
const clone: TMark = { ...cloneMarkEffect(mark), count: mark.count };
|
|
395
330
|
|
|
@@ -401,10 +336,6 @@ export function cloneMark<TMark extends Mark>(mark: TMark): TMark {
|
|
|
401
336
|
|
|
402
337
|
export function cloneMarkEffect<TEffect extends MarkEffect>(effect: TEffect): TEffect {
|
|
403
338
|
const clone = { ...effect };
|
|
404
|
-
if (clone.type === "AttachAndDetach") {
|
|
405
|
-
clone.attach = cloneMarkEffect(clone.attach);
|
|
406
|
-
clone.detach = cloneMarkEffect(clone.detach);
|
|
407
|
-
}
|
|
408
339
|
return clone;
|
|
409
340
|
}
|
|
410
341
|
|
|
@@ -443,18 +374,6 @@ export function markHasCellEffect(mark: Mark): boolean {
|
|
|
443
374
|
return areInputCellsEmpty(mark) !== areOutputCellsEmpty(mark);
|
|
444
375
|
}
|
|
445
376
|
|
|
446
|
-
export function isAttachAndDetachEffect(effect: MarkEffect): effect is AttachAndDetach {
|
|
447
|
-
return effect.type === "AttachAndDetach";
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
export function isDetachOfRemovedNodes(mark: Mark): mark is CellMark<DetachOfRemovedNodes> {
|
|
451
|
-
return isDetach(mark) && mark.cellId !== undefined;
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
export function isImpactfulCellRename(mark: Mark): mark is CellMark<CellRename> {
|
|
455
|
-
return (isAttachAndDetachEffect(mark) || isDetachOfRemovedNodes(mark)) && isImpactful(mark);
|
|
456
|
-
}
|
|
457
|
-
|
|
458
377
|
export function areInputCellsEmpty(mark: Mark): mark is EmptyInputCellMark {
|
|
459
378
|
return mark.cellId !== undefined;
|
|
460
379
|
}
|
|
@@ -466,12 +385,9 @@ export function areOutputCellsEmpty(mark: Mark): boolean {
|
|
|
466
385
|
return mark.cellId !== undefined;
|
|
467
386
|
}
|
|
468
387
|
case "Remove":
|
|
469
|
-
case "Rename":
|
|
470
|
-
case "MoveOut":
|
|
471
|
-
case "AttachAndDetach": {
|
|
388
|
+
case "Rename": {
|
|
472
389
|
return true;
|
|
473
390
|
}
|
|
474
|
-
case "MoveIn":
|
|
475
391
|
case "Insert": {
|
|
476
392
|
return false;
|
|
477
393
|
}
|
|
@@ -481,20 +397,6 @@ export function areOutputCellsEmpty(mark: Mark): boolean {
|
|
|
481
397
|
}
|
|
482
398
|
}
|
|
483
399
|
|
|
484
|
-
/**
|
|
485
|
-
* Creates a mark that is equivalent to the given `mark` but with effects removed if those have no impact in the input
|
|
486
|
-
* context of that mark.
|
|
487
|
-
*
|
|
488
|
-
* @param mark - The mark to settle. Never mutated.
|
|
489
|
-
* @returns either the original mark or a shallow clone of it with effects stripped out.
|
|
490
|
-
*/
|
|
491
|
-
export function settleMark(mark: Mark): Mark {
|
|
492
|
-
if (isImpactful(mark)) {
|
|
493
|
-
return mark;
|
|
494
|
-
}
|
|
495
|
-
return omitMarkEffect(mark);
|
|
496
|
-
}
|
|
497
|
-
|
|
498
400
|
/**
|
|
499
401
|
* Returns true if and only iff the given `mark` would have impact on the field when applied.
|
|
500
402
|
*
|
|
@@ -520,15 +422,6 @@ export function isImpactful(mark: Mark): boolean {
|
|
|
520
422
|
assert(outputId !== undefined, 0x824 /* Remove marks must have an output cell ID */);
|
|
521
423
|
return !areEqualChangeAtomIds(inputId, outputId);
|
|
522
424
|
}
|
|
523
|
-
case "AttachAndDetach":
|
|
524
|
-
case "MoveOut": {
|
|
525
|
-
return true;
|
|
526
|
-
}
|
|
527
|
-
case "MoveIn": {
|
|
528
|
-
// MoveIn marks always target an empty cell.
|
|
529
|
-
assert(mark.cellId !== undefined, 0x825 /* MoveIn marks should target empty cells */);
|
|
530
|
-
return true;
|
|
531
|
-
}
|
|
532
425
|
case "Insert": {
|
|
533
426
|
// A Revive has no impact if the nodes are already in the document.
|
|
534
427
|
return mark.cellId !== undefined;
|
|
@@ -576,14 +469,18 @@ export function compareCellsFromSameRevision(
|
|
|
576
469
|
|
|
577
470
|
export function isDetach(mark: MarkEffect | undefined): mark is Detach {
|
|
578
471
|
const type = mark?.type;
|
|
579
|
-
return type === "Remove"
|
|
472
|
+
return type === "Remove";
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
export function isPin(mark: Mark): mark is Pin {
|
|
476
|
+
return mark?.type === "Insert" && mark.cellId === undefined;
|
|
580
477
|
}
|
|
581
478
|
|
|
582
|
-
export function isRemoveMark(mark: Mark | undefined): mark is CellMark<
|
|
479
|
+
export function isRemoveMark(mark: Mark | undefined): mark is CellMark<Detach> {
|
|
583
480
|
return mark?.type === "Remove";
|
|
584
481
|
}
|
|
585
482
|
|
|
586
|
-
function areMergeableChangeAtoms(
|
|
483
|
+
export function areMergeableChangeAtoms(
|
|
587
484
|
lhs: ChangeAtomId | undefined,
|
|
588
485
|
lhsCount: number,
|
|
589
486
|
rhs: ChangeAtomId | undefined,
|
|
@@ -593,29 +490,11 @@ function areMergeableChangeAtoms(
|
|
|
593
490
|
}
|
|
594
491
|
|
|
595
492
|
return (
|
|
596
|
-
lhs.revision === rhs.revision &&
|
|
493
|
+
lhs.revision === rhs.revision &&
|
|
494
|
+
areAdjacentIntegerRanges(lhs.localId, lhsCount, rhs.localId)
|
|
597
495
|
);
|
|
598
496
|
}
|
|
599
497
|
|
|
600
|
-
function areAdjacentIdRanges(
|
|
601
|
-
firstStart: ChangesetLocalId,
|
|
602
|
-
firstLength: number,
|
|
603
|
-
secondStart: ChangesetLocalId,
|
|
604
|
-
): boolean {
|
|
605
|
-
return (firstStart as number) + firstLength === secondStart;
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
function haveMergeableIdOverrides(
|
|
609
|
-
lhs: DetachFields,
|
|
610
|
-
lhsCount: number,
|
|
611
|
-
rhs: DetachFields,
|
|
612
|
-
): boolean {
|
|
613
|
-
if (lhs.idOverride !== undefined && rhs.idOverride !== undefined) {
|
|
614
|
-
return areMergeableCellIds(lhs.idOverride, lhsCount, rhs.idOverride);
|
|
615
|
-
}
|
|
616
|
-
return (lhs.idOverride === undefined) === (rhs.idOverride === undefined);
|
|
617
|
-
}
|
|
618
|
-
|
|
619
498
|
function areMergeableCellIds(
|
|
620
499
|
lhs: CellId | undefined,
|
|
621
500
|
lhsCount: number,
|
|
@@ -665,48 +544,28 @@ function tryMergeEffects(
|
|
|
665
544
|
return lhs;
|
|
666
545
|
}
|
|
667
546
|
|
|
668
|
-
if (rhs.type === "AttachAndDetach") {
|
|
669
|
-
const lhsAttachAndDetach = lhs as AttachAndDetach;
|
|
670
|
-
const attach = tryMergeEffects(lhsAttachAndDetach.attach, rhs.attach, lhsCount);
|
|
671
|
-
const detach = tryMergeEffects(lhsAttachAndDetach.detach, rhs.detach, lhsCount);
|
|
672
|
-
if (attach === undefined || detach === undefined) {
|
|
673
|
-
return undefined;
|
|
674
|
-
}
|
|
675
|
-
|
|
676
|
-
assert(
|
|
677
|
-
isAttach(attach) && isDetach(detach),
|
|
678
|
-
0x826 /* Merged marks should be same type as input marks */,
|
|
679
|
-
);
|
|
680
|
-
return { ...lhsAttachAndDetach, attach, detach };
|
|
681
|
-
}
|
|
682
|
-
|
|
683
547
|
if (
|
|
684
548
|
(lhs as Partial<HasRevisionTag>).revision !== (rhs as Partial<HasRevisionTag>).revision
|
|
685
549
|
) {
|
|
686
550
|
return undefined;
|
|
687
551
|
}
|
|
688
552
|
|
|
689
|
-
if (
|
|
553
|
+
if (
|
|
554
|
+
isDetach(lhs) &&
|
|
555
|
+
isDetach(rhs) &&
|
|
556
|
+
!areMergeableChangeAtoms(lhs.cellRename, lhsCount, rhs.cellRename)
|
|
557
|
+
) {
|
|
690
558
|
return undefined;
|
|
691
559
|
}
|
|
692
560
|
|
|
693
561
|
const type = rhs.type;
|
|
694
562
|
switch (type) {
|
|
695
|
-
case "MoveIn": {
|
|
696
|
-
const lhsMoveIn = lhs as MoveIn;
|
|
697
|
-
if (
|
|
698
|
-
(lhsMoveIn.id as number) + lhsCount === rhs.id &&
|
|
699
|
-
areMergeableChangeAtoms(lhsMoveIn.finalEndpoint, lhsCount, rhs.finalEndpoint)
|
|
700
|
-
) {
|
|
701
|
-
return lhsMoveIn;
|
|
702
|
-
}
|
|
703
|
-
break;
|
|
704
|
-
}
|
|
705
563
|
case "Remove": {
|
|
706
|
-
const lhsDetach = lhs as
|
|
564
|
+
const lhsDetach = lhs as Detach;
|
|
707
565
|
if (
|
|
708
566
|
(lhsDetach.id as number) + lhsCount === rhs.id &&
|
|
709
|
-
|
|
567
|
+
areMergeableChangeAtoms(lhsDetach.cellRename, lhsCount, rhs.cellRename) &&
|
|
568
|
+
areMergeableChangeAtoms(lhsDetach.detachCellId, lhsCount, rhs.detachCellId)
|
|
710
569
|
) {
|
|
711
570
|
return lhsDetach;
|
|
712
571
|
}
|
|
@@ -714,25 +573,17 @@ function tryMergeEffects(
|
|
|
714
573
|
}
|
|
715
574
|
case "Rename": {
|
|
716
575
|
const lhsDetach = lhs as Rename;
|
|
717
|
-
if (
|
|
576
|
+
if (areMergeableChangeAtoms(lhsDetach.idOverride, lhsCount, rhs.idOverride)) {
|
|
718
577
|
return lhsDetach;
|
|
719
578
|
}
|
|
720
579
|
break;
|
|
721
580
|
}
|
|
722
|
-
case "
|
|
723
|
-
const
|
|
581
|
+
case "Insert": {
|
|
582
|
+
const lhsInsert = lhs as Attach;
|
|
724
583
|
if (
|
|
725
|
-
(
|
|
726
|
-
|
|
727
|
-
areMergeableChangeAtoms(lhsMoveOut.finalEndpoint, lhsCount, rhs.finalEndpoint)
|
|
584
|
+
(lhsInsert.id as number) + lhsCount === rhs.id &&
|
|
585
|
+
areMergeableChangeAtoms(lhsInsert.detachCellId, lhsCount, rhs.detachCellId)
|
|
728
586
|
) {
|
|
729
|
-
return lhsMoveOut;
|
|
730
|
-
}
|
|
731
|
-
break;
|
|
732
|
-
}
|
|
733
|
-
case "Insert": {
|
|
734
|
-
const lhsInsert = lhs as Insert;
|
|
735
|
-
if ((lhsInsert.id as number) + lhsCount === rhs.id) {
|
|
736
587
|
return lhsInsert;
|
|
737
588
|
}
|
|
738
589
|
break;
|
|
@@ -791,23 +642,23 @@ export function splitMarkEffect<TEffect extends MarkEffect>(
|
|
|
791
642
|
...effect,
|
|
792
643
|
id: (effect.id as number) + length,
|
|
793
644
|
};
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
const effect2: TEffect = { ...effect, id: (effect.id as number) + length };
|
|
798
|
-
const move2 = effect2 as MoveIn;
|
|
799
|
-
if (move2.finalEndpoint !== undefined) {
|
|
800
|
-
move2.finalEndpoint = splitDetachEvent(move2.finalEndpoint, length);
|
|
645
|
+
|
|
646
|
+
if (effect.detachCellId !== undefined) {
|
|
647
|
+
(effect2 as Attach).detachCellId = splitDetachEvent(effect.detachCellId, length);
|
|
801
648
|
}
|
|
802
|
-
return [
|
|
649
|
+
return [effect1, effect2];
|
|
803
650
|
}
|
|
804
651
|
case "Remove": {
|
|
805
652
|
const effect1 = { ...effect };
|
|
806
653
|
const id2: ChangesetLocalId = brand((effect.id as number) + length);
|
|
807
654
|
const effect2 = { ...effect, id: id2 };
|
|
808
|
-
const effect2Remove = effect2 as Mutable<
|
|
809
|
-
if (effect2Remove.
|
|
810
|
-
effect2Remove.
|
|
655
|
+
const effect2Remove = effect2 as Mutable<Detach>;
|
|
656
|
+
if (effect2Remove.cellRename !== undefined) {
|
|
657
|
+
effect2Remove.cellRename = splitDetachEvent(effect2Remove.cellRename, length);
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
if (effect2Remove.detachCellId !== undefined) {
|
|
661
|
+
effect2Remove.detachCellId = splitDetachEvent(effect2Remove.detachCellId, length);
|
|
811
662
|
}
|
|
812
663
|
return [effect1, effect2];
|
|
813
664
|
}
|
|
@@ -820,40 +671,6 @@ export function splitMarkEffect<TEffect extends MarkEffect>(
|
|
|
820
671
|
}
|
|
821
672
|
return [effect1, effect2];
|
|
822
673
|
}
|
|
823
|
-
case "MoveOut": {
|
|
824
|
-
const effect2 = {
|
|
825
|
-
...effect,
|
|
826
|
-
id: (effect.id as number) + length,
|
|
827
|
-
};
|
|
828
|
-
|
|
829
|
-
const return2 = effect2 as Mutable<MoveOut>;
|
|
830
|
-
|
|
831
|
-
if (return2.idOverride !== undefined) {
|
|
832
|
-
return2.idOverride = splitDetachEvent(return2.idOverride, length);
|
|
833
|
-
}
|
|
834
|
-
|
|
835
|
-
if (return2.finalEndpoint !== undefined) {
|
|
836
|
-
return2.finalEndpoint = splitDetachEvent(return2.finalEndpoint, length);
|
|
837
|
-
}
|
|
838
|
-
return [effect, effect2];
|
|
839
|
-
}
|
|
840
|
-
case "AttachAndDetach": {
|
|
841
|
-
const [attach1, attach2] = splitMarkEffect(effect.attach, length);
|
|
842
|
-
const [detach1, detach2] = splitMarkEffect(effect.detach, length);
|
|
843
|
-
const effect1 = {
|
|
844
|
-
...effect,
|
|
845
|
-
attach: attach1,
|
|
846
|
-
detach: detach1,
|
|
847
|
-
};
|
|
848
|
-
|
|
849
|
-
const effect2 = {
|
|
850
|
-
...effect,
|
|
851
|
-
attach: attach2,
|
|
852
|
-
detach: detach2,
|
|
853
|
-
};
|
|
854
|
-
|
|
855
|
-
return [effect1, effect2];
|
|
856
|
-
}
|
|
857
674
|
default: {
|
|
858
675
|
unreachableCase(type);
|
|
859
676
|
}
|
|
@@ -923,12 +740,6 @@ function addRevision(effect: MarkEffect, revision: RevisionTag): void {
|
|
|
923
740
|
return;
|
|
924
741
|
}
|
|
925
742
|
|
|
926
|
-
if (effect.type === "AttachAndDetach") {
|
|
927
|
-
addRevision(effect.attach, revision);
|
|
928
|
-
addRevision(effect.detach, revision);
|
|
929
|
-
return;
|
|
930
|
-
}
|
|
931
|
-
|
|
932
743
|
assert(
|
|
933
744
|
effect.revision === undefined || effect.revision === revision,
|
|
934
745
|
0x829 /* Should not overwrite mark revision */,
|
|
@@ -936,76 +747,51 @@ function addRevision(effect: MarkEffect, revision: RevisionTag): void {
|
|
|
936
747
|
effect.revision = revision;
|
|
937
748
|
}
|
|
938
749
|
|
|
939
|
-
export function getEndpoint(effect: MoveMarkEffect): ChangeAtomId {
|
|
940
|
-
return effect.finalEndpoint ?? { revision: effect.revision, localId: effect.id };
|
|
941
|
-
}
|
|
942
|
-
|
|
943
750
|
export function getCrossFieldKeys(change: Changeset): CrossFieldKeyRange[] {
|
|
944
751
|
const keys: CrossFieldKeyRange[] = [];
|
|
945
752
|
for (const mark of change) {
|
|
946
|
-
keys.push(...
|
|
753
|
+
keys.push(...getCrossFieldKeysForMark(mark, mark.count));
|
|
947
754
|
}
|
|
948
755
|
|
|
949
756
|
return keys;
|
|
950
757
|
}
|
|
951
758
|
|
|
952
|
-
function
|
|
953
|
-
|
|
954
|
-
count: number,
|
|
955
|
-
): CrossFieldKeyRange[] {
|
|
956
|
-
switch (effect.type) {
|
|
759
|
+
function getCrossFieldKeysForMark(mark: Mark, count: number): CrossFieldKeyRange[] {
|
|
760
|
+
switch (mark.type) {
|
|
957
761
|
case "Insert": {
|
|
958
|
-
|
|
959
|
-
// An insert can become a move when after rebasing.
|
|
960
|
-
return [
|
|
961
|
-
{
|
|
962
|
-
key: {
|
|
963
|
-
target: CrossFieldTarget.Source,
|
|
964
|
-
revision: effect.revision,
|
|
965
|
-
localId: effect.id,
|
|
966
|
-
},
|
|
967
|
-
count,
|
|
968
|
-
},
|
|
762
|
+
const keys = [
|
|
969
763
|
{
|
|
970
764
|
key: {
|
|
765
|
+
revision: mark.revision,
|
|
766
|
+
localId: mark.id,
|
|
971
767
|
target: CrossFieldTarget.Destination,
|
|
972
|
-
revision: effect.revision,
|
|
973
|
-
localId: effect.id,
|
|
974
768
|
},
|
|
975
769
|
count,
|
|
976
770
|
},
|
|
977
771
|
];
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
{
|
|
982
|
-
key: {
|
|
983
|
-
target: CrossFieldTarget.Source,
|
|
984
|
-
revision: effect.revision,
|
|
985
|
-
localId: effect.id,
|
|
986
|
-
},
|
|
772
|
+
|
|
773
|
+
if (mark.cellId === undefined) {
|
|
774
|
+
// This is a pin, which is treated as a detach and attach.
|
|
775
|
+
keys.push({
|
|
776
|
+
key: { revision: mark.revision, localId: mark.id, target: CrossFieldTarget.Source },
|
|
987
777
|
count,
|
|
988
|
-
}
|
|
989
|
-
|
|
778
|
+
});
|
|
779
|
+
}
|
|
780
|
+
|
|
781
|
+
return keys;
|
|
990
782
|
}
|
|
991
|
-
case "
|
|
783
|
+
case "Remove": {
|
|
992
784
|
return [
|
|
993
785
|
{
|
|
994
786
|
key: {
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
787
|
+
revision: mark.revision,
|
|
788
|
+
localId: mark.id,
|
|
789
|
+
target: CrossFieldTarget.Source,
|
|
998
790
|
},
|
|
999
791
|
count,
|
|
1000
792
|
},
|
|
1001
793
|
];
|
|
1002
794
|
}
|
|
1003
|
-
case "AttachAndDetach": {
|
|
1004
|
-
return [
|
|
1005
|
-
...getCrossFieldKeysForMarkEffect(effect.attach, count),
|
|
1006
|
-
...getCrossFieldKeysForMarkEffect(effect.detach, count),
|
|
1007
|
-
];
|
|
1008
|
-
}
|
|
1009
795
|
default: {
|
|
1010
796
|
return [];
|
|
1011
797
|
}
|