@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.
Files changed (781) hide show
  1. package/api-report/tree.alpha.api.md +1 -0
  2. package/dist/core/change-family/changeFamily.d.ts +4 -1
  3. package/dist/core/change-family/changeFamily.d.ts.map +1 -1
  4. package/dist/core/change-family/changeFamily.js.map +1 -1
  5. package/dist/core/change-family/index.d.ts +1 -1
  6. package/dist/core/change-family/index.d.ts.map +1 -1
  7. package/dist/core/change-family/index.js.map +1 -1
  8. package/dist/core/index.d.ts +3 -3
  9. package/dist/core/index.d.ts.map +1 -1
  10. package/dist/core/index.js +6 -4
  11. package/dist/core/index.js.map +1 -1
  12. package/dist/core/rebase/changeRebaser.d.ts +6 -1
  13. package/dist/core/rebase/changeRebaser.d.ts.map +1 -1
  14. package/dist/core/rebase/changeRebaser.js.map +1 -1
  15. package/dist/core/rebase/index.d.ts +1 -1
  16. package/dist/core/rebase/index.d.ts.map +1 -1
  17. package/dist/core/rebase/index.js +2 -1
  18. package/dist/core/rebase/index.js.map +1 -1
  19. package/dist/core/rebase/types.d.ts +1 -0
  20. package/dist/core/rebase/types.d.ts.map +1 -1
  21. package/dist/core/rebase/types.js +5 -1
  22. package/dist/core/rebase/types.js.map +1 -1
  23. package/dist/core/rebase/utils.d.ts.map +1 -1
  24. package/dist/core/rebase/utils.js +25 -7
  25. package/dist/core/rebase/utils.js.map +1 -1
  26. package/dist/core/tree/delta.d.ts +5 -0
  27. package/dist/core/tree/delta.d.ts.map +1 -1
  28. package/dist/core/tree/delta.js.map +1 -1
  29. package/dist/core/tree/detachedFieldIndex.d.ts +13 -1
  30. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  31. package/dist/core/tree/detachedFieldIndex.js +14 -1
  32. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  33. package/dist/core/tree/detachedFieldIndexTypes.d.ts +4 -0
  34. package/dist/core/tree/detachedFieldIndexTypes.d.ts.map +1 -1
  35. package/dist/core/tree/detachedFieldIndexTypes.js.map +1 -1
  36. package/dist/core/tree/index.d.ts +2 -2
  37. package/dist/core/tree/index.d.ts.map +1 -1
  38. package/dist/core/tree/index.js +4 -3
  39. package/dist/core/tree/index.js.map +1 -1
  40. package/dist/core/tree/pathTree.d.ts +11 -3
  41. package/dist/core/tree/pathTree.d.ts.map +1 -1
  42. package/dist/core/tree/pathTree.js +14 -2
  43. package/dist/core/tree/pathTree.js.map +1 -1
  44. package/dist/core/tree/visitDelta.d.ts.map +1 -1
  45. package/dist/core/tree/visitDelta.js +17 -13
  46. package/dist/core/tree/visitDelta.js.map +1 -1
  47. package/dist/feature-libraries/changeAtomIdBTree.d.ts +3 -2
  48. package/dist/feature-libraries/changeAtomIdBTree.d.ts.map +1 -1
  49. package/dist/feature-libraries/changeAtomIdBTree.js +15 -2
  50. package/dist/feature-libraries/changeAtomIdBTree.js.map +1 -1
  51. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +92 -44
  52. package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  53. package/dist/feature-libraries/default-schema/defaultEditBuilder.js +220 -70
  54. package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  55. package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  56. package/dist/feature-libraries/default-schema/defaultFieldKinds.js +12 -2
  57. package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  58. package/dist/feature-libraries/default-schema/index.d.ts +2 -1
  59. package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
  60. package/dist/feature-libraries/default-schema/index.js +4 -2
  61. package/dist/feature-libraries/default-schema/index.js.map +1 -1
  62. package/dist/feature-libraries/default-schema/locationBasedEditBuilder.d.ts +40 -0
  63. package/dist/feature-libraries/default-schema/locationBasedEditBuilder.d.ts.map +1 -0
  64. package/dist/feature-libraries/default-schema/locationBasedEditBuilder.js +153 -0
  65. package/dist/feature-libraries/default-schema/locationBasedEditBuilder.js.map +1 -0
  66. package/dist/feature-libraries/default-schema/mappedEditBuilder.d.ts +7 -6
  67. package/dist/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
  68. package/dist/feature-libraries/default-schema/mappedEditBuilder.js +15 -0
  69. package/dist/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
  70. package/dist/feature-libraries/deltaUtils.d.ts +1 -0
  71. package/dist/feature-libraries/deltaUtils.d.ts.map +1 -1
  72. package/dist/feature-libraries/deltaUtils.js +6 -1
  73. package/dist/feature-libraries/deltaUtils.js.map +1 -1
  74. package/dist/feature-libraries/flex-tree/context.d.ts +9 -0
  75. package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
  76. package/dist/feature-libraries/flex-tree/context.js +6 -0
  77. package/dist/feature-libraries/flex-tree/context.js.map +1 -1
  78. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +6 -6
  79. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  80. package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  81. package/dist/feature-libraries/flex-tree/lazyField.d.ts +8 -7
  82. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  83. package/dist/feature-libraries/flex-tree/lazyField.js +39 -8
  84. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  85. package/dist/feature-libraries/index.d.ts +3 -3
  86. package/dist/feature-libraries/index.d.ts.map +1 -1
  87. package/dist/feature-libraries/index.js +8 -4
  88. package/dist/feature-libraries/index.js.map +1 -1
  89. package/dist/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
  90. package/dist/feature-libraries/mitigatedChangeFamily.js +2 -2
  91. package/dist/feature-libraries/mitigatedChangeFamily.js.map +1 -1
  92. package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts +100 -24
  93. package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
  94. package/dist/feature-libraries/modular-schema/crossFieldQueries.js +8 -12
  95. package/dist/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
  96. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +85 -51
  97. package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  98. package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  99. package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  100. package/dist/feature-libraries/modular-schema/genericFieldKind.js +4 -9
  101. package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  102. package/dist/feature-libraries/modular-schema/index.d.ts +3 -3
  103. package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
  104. package/dist/feature-libraries/modular-schema/index.js +2 -3
  105. package/dist/feature-libraries/modular-schema/index.js.map +1 -1
  106. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +18 -22
  107. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
  108. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js +276 -158
  109. package/dist/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
  110. package/dist/feature-libraries/modular-schema/modularChangeCodecV2.d.ts.map +1 -1
  111. package/dist/feature-libraries/modular-schema/modularChangeCodecV2.js +1 -1
  112. package/dist/feature-libraries/modular-schema/modularChangeCodecV2.js.map +1 -1
  113. package/dist/feature-libraries/modular-schema/modularChangeCodecV3.d.ts +15 -0
  114. package/dist/feature-libraries/modular-schema/modularChangeCodecV3.d.ts.map +1 -0
  115. package/dist/feature-libraries/modular-schema/modularChangeCodecV3.js +296 -0
  116. package/dist/feature-libraries/modular-schema/modularChangeCodecV3.js.map +1 -0
  117. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts +1 -0
  118. package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  119. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +8 -0
  120. package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  121. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +56 -22
  122. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  123. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +1390 -462
  124. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  125. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -1
  126. package/dist/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -1
  127. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +1 -2
  128. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -1
  129. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.js +3 -3
  130. package/dist/feature-libraries/modular-schema/modularChangeFormatV2.js.map +1 -1
  131. package/dist/feature-libraries/modular-schema/modularChangeFormatV3.d.ts +74 -0
  132. package/dist/feature-libraries/modular-schema/modularChangeFormatV3.d.ts.map +1 -0
  133. package/dist/feature-libraries/modular-schema/modularChangeFormatV3.js +35 -0
  134. package/dist/feature-libraries/modular-schema/modularChangeFormatV3.js.map +1 -0
  135. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts +49 -10
  136. package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  137. package/dist/feature-libraries/modular-schema/modularChangeTypes.js +3 -3
  138. package/dist/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  139. package/dist/feature-libraries/optional-field/optionalField.d.ts +13 -32
  140. package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  141. package/dist/feature-libraries/optional-field/optionalField.js +257 -446
  142. package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
  143. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV3.d.ts +23 -0
  144. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV3.d.ts.map +1 -0
  145. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV3.js +31 -0
  146. package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV3.js.map +1 -0
  147. package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts +31 -31
  148. package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts.map +1 -1
  149. package/dist/feature-libraries/optional-field/optionalFieldChangeTypes.js.map +1 -1
  150. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +1 -1
  151. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -1
  152. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.js +57 -28
  153. package/dist/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -1
  154. package/dist/feature-libraries/optional-field/optionalFieldCodecV3.d.ts +12 -0
  155. package/dist/feature-libraries/optional-field/optionalFieldCodecV3.d.ts.map +1 -0
  156. package/dist/feature-libraries/optional-field/optionalFieldCodecV3.js +57 -0
  157. package/dist/feature-libraries/optional-field/optionalFieldCodecV3.js.map +1 -0
  158. package/dist/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
  159. package/dist/feature-libraries/optional-field/optionalFieldCodecs.js +5 -1
  160. package/dist/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
  161. package/dist/feature-libraries/optional-field/requiredField.d.ts +3 -2
  162. package/dist/feature-libraries/optional-field/requiredField.d.ts.map +1 -1
  163. package/dist/feature-libraries/optional-field/requiredField.js +6 -1
  164. package/dist/feature-libraries/optional-field/requiredField.js.map +1 -1
  165. package/dist/feature-libraries/sequence-field/compose.d.ts +6 -7
  166. package/dist/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  167. package/dist/feature-libraries/sequence-field/compose.js +81 -259
  168. package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
  169. package/dist/feature-libraries/sequence-field/helperTypes.d.ts +14 -10
  170. package/dist/feature-libraries/sequence-field/helperTypes.d.ts.map +1 -1
  171. package/dist/feature-libraries/sequence-field/helperTypes.js.map +1 -1
  172. package/dist/feature-libraries/sequence-field/invert.d.ts +3 -3
  173. package/dist/feature-libraries/sequence-field/invert.d.ts.map +1 -1
  174. package/dist/feature-libraries/sequence-field/invert.js +65 -167
  175. package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
  176. package/dist/feature-libraries/sequence-field/markQueue.d.ts +2 -2
  177. package/dist/feature-libraries/sequence-field/markQueue.d.ts.map +1 -1
  178. package/dist/feature-libraries/sequence-field/markQueue.js.map +1 -1
  179. package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts +4 -56
  180. package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
  181. package/dist/feature-libraries/sequence-field/moveEffectTable.js +7 -90
  182. package/dist/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
  183. package/dist/feature-libraries/sequence-field/rebase.d.ts +3 -3
  184. package/dist/feature-libraries/sequence-field/rebase.d.ts.map +1 -1
  185. package/dist/feature-libraries/sequence-field/rebase.js +109 -116
  186. package/dist/feature-libraries/sequence-field/rebase.js.map +1 -1
  187. package/dist/feature-libraries/sequence-field/replaceRevisions.d.ts.map +1 -1
  188. package/dist/feature-libraries/sequence-field/replaceRevisions.js +19 -32
  189. package/dist/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
  190. package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts.map +1 -1
  191. package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.js +1 -2
  192. package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
  193. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +22 -4
  194. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
  195. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js +388 -187
  196. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  197. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
  198. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js +20 -62
  199. package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
  200. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +2 -2
  201. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
  202. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js +13 -13
  203. package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
  204. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts +3 -2
  205. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
  206. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js +16 -111
  207. package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
  208. package/dist/feature-libraries/sequence-field/types.d.ts +37 -74
  209. package/dist/feature-libraries/sequence-field/types.d.ts.map +1 -1
  210. package/dist/feature-libraries/sequence-field/types.js.map +1 -1
  211. package/dist/feature-libraries/sequence-field/utils.d.ts +20 -25
  212. package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  213. package/dist/feature-libraries/sequence-field/utils.js +159 -320
  214. package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
  215. package/dist/packageVersion.d.ts +1 -1
  216. package/dist/packageVersion.d.ts.map +1 -1
  217. package/dist/packageVersion.js +1 -1
  218. package/dist/packageVersion.js.map +1 -1
  219. package/dist/shared-tree/independentView.d.ts.map +1 -1
  220. package/dist/shared-tree/independentView.js +1 -1
  221. package/dist/shared-tree/independentView.js.map +1 -1
  222. package/dist/shared-tree/index.d.ts +1 -1
  223. package/dist/shared-tree/index.d.ts.map +1 -1
  224. package/dist/shared-tree/index.js.map +1 -1
  225. package/dist/shared-tree/schematizeTree.d.ts +4 -4
  226. package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
  227. package/dist/shared-tree/schematizeTree.js +2 -1
  228. package/dist/shared-tree/schematizeTree.js.map +1 -1
  229. package/dist/shared-tree/schematizingTreeView.d.ts +1 -5
  230. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  231. package/dist/shared-tree/schematizingTreeView.js +21 -35
  232. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  233. package/dist/shared-tree/sharedTree.d.ts +9 -3
  234. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  235. package/dist/shared-tree/sharedTree.js +4 -1
  236. package/dist/shared-tree/sharedTree.js.map +1 -1
  237. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts +1 -0
  238. package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  239. package/dist/shared-tree/sharedTreeChangeCodecs.js +8 -0
  240. package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  241. package/dist/shared-tree/sharedTreeChangeFamily.d.ts +4 -4
  242. package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  243. package/dist/shared-tree/sharedTreeChangeFamily.js +2 -2
  244. package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  245. package/dist/shared-tree/sharedTreeEditBuilder.d.ts +16 -6
  246. package/dist/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
  247. package/dist/shared-tree/sharedTreeEditBuilder.js +14 -7
  248. package/dist/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  249. package/dist/shared-tree/treeCheckout.d.ts +13 -11
  250. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  251. package/dist/shared-tree/treeCheckout.js +56 -6
  252. package/dist/shared-tree/treeCheckout.js.map +1 -1
  253. package/dist/shared-tree-core/branch.d.ts +3 -2
  254. package/dist/shared-tree-core/branch.d.ts.map +1 -1
  255. package/dist/shared-tree-core/branch.js +4 -3
  256. package/dist/shared-tree-core/branch.js.map +1 -1
  257. package/dist/shared-tree-core/editManager.d.ts +2 -2
  258. package/dist/shared-tree-core/editManager.d.ts.map +1 -1
  259. package/dist/shared-tree-core/editManager.js +9 -9
  260. package/dist/shared-tree-core/editManager.js.map +1 -1
  261. package/dist/shared-tree-core/editManagerCodecs.d.ts +4 -0
  262. package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  263. package/dist/shared-tree-core/editManagerCodecs.js +10 -2
  264. package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
  265. package/dist/shared-tree-core/editManagerFormatCommons.d.ts +1 -0
  266. package/dist/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  267. package/dist/shared-tree-core/editManagerFormatCommons.js +6 -0
  268. package/dist/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  269. package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
  270. package/dist/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
  271. package/dist/shared-tree-core/editManagerFormatV1toV4.js +1 -0
  272. package/dist/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
  273. package/dist/shared-tree-core/index.d.ts +2 -2
  274. package/dist/shared-tree-core/index.d.ts.map +1 -1
  275. package/dist/shared-tree-core/index.js +3 -1
  276. package/dist/shared-tree-core/index.js.map +1 -1
  277. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts +1 -1
  278. package/dist/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  279. package/dist/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  280. package/dist/shared-tree-core/messageCodecs.d.ts +4 -0
  281. package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
  282. package/dist/shared-tree-core/messageCodecs.js +10 -2
  283. package/dist/shared-tree-core/messageCodecs.js.map +1 -1
  284. package/dist/shared-tree-core/messageFormat.d.ts +1 -0
  285. package/dist/shared-tree-core/messageFormat.d.ts.map +1 -1
  286. package/dist/shared-tree-core/messageFormat.js +6 -0
  287. package/dist/shared-tree-core/messageFormat.js.map +1 -1
  288. package/dist/shared-tree-core/messageFormatV1ToV4.d.ts +2 -2
  289. package/dist/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
  290. package/dist/shared-tree-core/messageFormatV1ToV4.js +1 -0
  291. package/dist/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
  292. package/dist/shared-tree-core/sharedTreeCore.d.ts +1 -0
  293. package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  294. package/dist/shared-tree-core/sharedTreeCore.js +1 -1
  295. package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
  296. package/dist/simple-tree/core/unhydratedFlexTree.d.ts +16 -12
  297. package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  298. package/dist/simple-tree/core/unhydratedFlexTree.js +59 -8
  299. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  300. package/dist/simple-tree/fieldSchema.d.ts +4 -4
  301. package/dist/simple-tree/fieldSchema.d.ts.map +1 -1
  302. package/dist/simple-tree/fieldSchema.js.map +1 -1
  303. package/dist/simple-tree/index.d.ts +2 -2
  304. package/dist/simple-tree/index.d.ts.map +1 -1
  305. package/dist/simple-tree/index.js +1 -1
  306. package/dist/simple-tree/index.js.map +1 -1
  307. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  308. package/dist/simple-tree/node-kinds/array/arrayNode.js +5 -3
  309. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  310. package/dist/simple-tree/node-kinds/common.d.ts.map +1 -1
  311. package/dist/simple-tree/node-kinds/common.js +1 -1
  312. package/dist/simple-tree/node-kinds/common.js.map +1 -1
  313. package/dist/simple-tree/node-kinds/map/mapNode.js +2 -2
  314. package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  315. package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  316. package/dist/simple-tree/node-kinds/object/objectNode.js +19 -19
  317. package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  318. package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  319. package/dist/simple-tree/node-kinds/record/recordNode.js +4 -2
  320. package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  321. package/dist/simple-tree/prepareForInsertion.d.ts +54 -47
  322. package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -1
  323. package/dist/simple-tree/prepareForInsertion.js +183 -125
  324. package/dist/simple-tree/prepareForInsertion.js.map +1 -1
  325. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +8 -3
  326. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
  327. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js +27 -13
  328. package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
  329. package/dist/treeFactory.d.ts.map +1 -1
  330. package/dist/treeFactory.js +12 -2
  331. package/dist/treeFactory.js.map +1 -1
  332. package/dist/util/index.d.ts +1 -1
  333. package/dist/util/index.d.ts.map +1 -1
  334. package/dist/util/index.js +2 -1
  335. package/dist/util/index.js.map +1 -1
  336. package/dist/util/rangeMap.d.ts +23 -11
  337. package/dist/util/rangeMap.d.ts.map +1 -1
  338. package/dist/util/rangeMap.js +43 -10
  339. package/dist/util/rangeMap.js.map +1 -1
  340. package/lib/core/change-family/changeFamily.d.ts +4 -1
  341. package/lib/core/change-family/changeFamily.d.ts.map +1 -1
  342. package/lib/core/change-family/changeFamily.js.map +1 -1
  343. package/lib/core/change-family/index.d.ts +1 -1
  344. package/lib/core/change-family/index.d.ts.map +1 -1
  345. package/lib/core/change-family/index.js.map +1 -1
  346. package/lib/core/index.d.ts +3 -3
  347. package/lib/core/index.d.ts.map +1 -1
  348. package/lib/core/index.js +2 -2
  349. package/lib/core/index.js.map +1 -1
  350. package/lib/core/rebase/changeRebaser.d.ts +6 -1
  351. package/lib/core/rebase/changeRebaser.d.ts.map +1 -1
  352. package/lib/core/rebase/changeRebaser.js.map +1 -1
  353. package/lib/core/rebase/index.d.ts +1 -1
  354. package/lib/core/rebase/index.d.ts.map +1 -1
  355. package/lib/core/rebase/index.js +1 -1
  356. package/lib/core/rebase/index.js.map +1 -1
  357. package/lib/core/rebase/types.d.ts +1 -0
  358. package/lib/core/rebase/types.d.ts.map +1 -1
  359. package/lib/core/rebase/types.js +3 -0
  360. package/lib/core/rebase/types.js.map +1 -1
  361. package/lib/core/rebase/utils.d.ts.map +1 -1
  362. package/lib/core/rebase/utils.js +25 -7
  363. package/lib/core/rebase/utils.js.map +1 -1
  364. package/lib/core/tree/delta.d.ts +5 -0
  365. package/lib/core/tree/delta.d.ts.map +1 -1
  366. package/lib/core/tree/delta.js.map +1 -1
  367. package/lib/core/tree/detachedFieldIndex.d.ts +13 -1
  368. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  369. package/lib/core/tree/detachedFieldIndex.js +15 -2
  370. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  371. package/lib/core/tree/detachedFieldIndexTypes.d.ts +4 -0
  372. package/lib/core/tree/detachedFieldIndexTypes.d.ts.map +1 -1
  373. package/lib/core/tree/detachedFieldIndexTypes.js.map +1 -1
  374. package/lib/core/tree/index.d.ts +2 -2
  375. package/lib/core/tree/index.d.ts.map +1 -1
  376. package/lib/core/tree/index.js +1 -1
  377. package/lib/core/tree/index.js.map +1 -1
  378. package/lib/core/tree/pathTree.d.ts +11 -3
  379. package/lib/core/tree/pathTree.d.ts.map +1 -1
  380. package/lib/core/tree/pathTree.js +12 -1
  381. package/lib/core/tree/pathTree.js.map +1 -1
  382. package/lib/core/tree/visitDelta.d.ts.map +1 -1
  383. package/lib/core/tree/visitDelta.js +17 -13
  384. package/lib/core/tree/visitDelta.js.map +1 -1
  385. package/lib/feature-libraries/changeAtomIdBTree.d.ts +3 -2
  386. package/lib/feature-libraries/changeAtomIdBTree.d.ts.map +1 -1
  387. package/lib/feature-libraries/changeAtomIdBTree.js +15 -3
  388. package/lib/feature-libraries/changeAtomIdBTree.js.map +1 -1
  389. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +92 -44
  390. package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
  391. package/lib/feature-libraries/default-schema/defaultEditBuilder.js +217 -69
  392. package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
  393. package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
  394. package/lib/feature-libraries/default-schema/defaultFieldKinds.js +12 -2
  395. package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
  396. package/lib/feature-libraries/default-schema/index.d.ts +2 -1
  397. package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
  398. package/lib/feature-libraries/default-schema/index.js +2 -1
  399. package/lib/feature-libraries/default-schema/index.js.map +1 -1
  400. package/lib/feature-libraries/default-schema/locationBasedEditBuilder.d.ts +40 -0
  401. package/lib/feature-libraries/default-schema/locationBasedEditBuilder.d.ts.map +1 -0
  402. package/lib/feature-libraries/default-schema/locationBasedEditBuilder.js +149 -0
  403. package/lib/feature-libraries/default-schema/locationBasedEditBuilder.js.map +1 -0
  404. package/lib/feature-libraries/default-schema/mappedEditBuilder.d.ts +7 -6
  405. package/lib/feature-libraries/default-schema/mappedEditBuilder.d.ts.map +1 -1
  406. package/lib/feature-libraries/default-schema/mappedEditBuilder.js +15 -0
  407. package/lib/feature-libraries/default-schema/mappedEditBuilder.js.map +1 -1
  408. package/lib/feature-libraries/deltaUtils.d.ts +1 -0
  409. package/lib/feature-libraries/deltaUtils.d.ts.map +1 -1
  410. package/lib/feature-libraries/deltaUtils.js +5 -1
  411. package/lib/feature-libraries/deltaUtils.js.map +1 -1
  412. package/lib/feature-libraries/flex-tree/context.d.ts +9 -0
  413. package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
  414. package/lib/feature-libraries/flex-tree/context.js +6 -0
  415. package/lib/feature-libraries/flex-tree/context.js.map +1 -1
  416. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +6 -6
  417. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  418. package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  419. package/lib/feature-libraries/flex-tree/lazyField.d.ts +8 -7
  420. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  421. package/lib/feature-libraries/flex-tree/lazyField.js +40 -9
  422. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  423. package/lib/feature-libraries/index.d.ts +3 -3
  424. package/lib/feature-libraries/index.d.ts.map +1 -1
  425. package/lib/feature-libraries/index.js +3 -3
  426. package/lib/feature-libraries/index.js.map +1 -1
  427. package/lib/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
  428. package/lib/feature-libraries/mitigatedChangeFamily.js +2 -2
  429. package/lib/feature-libraries/mitigatedChangeFamily.js.map +1 -1
  430. package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts +100 -24
  431. package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
  432. package/lib/feature-libraries/modular-schema/crossFieldQueries.js +7 -10
  433. package/lib/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
  434. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +85 -51
  435. package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
  436. package/lib/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
  437. package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
  438. package/lib/feature-libraries/modular-schema/genericFieldKind.js +4 -9
  439. package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
  440. package/lib/feature-libraries/modular-schema/index.d.ts +3 -3
  441. package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
  442. package/lib/feature-libraries/modular-schema/index.js +1 -1
  443. package/lib/feature-libraries/modular-schema/index.js.map +1 -1
  444. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts +18 -22
  445. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.d.ts.map +1 -1
  446. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js +267 -144
  447. package/lib/feature-libraries/modular-schema/modularChangeCodecV1.js.map +1 -1
  448. package/lib/feature-libraries/modular-schema/modularChangeCodecV2.d.ts.map +1 -1
  449. package/lib/feature-libraries/modular-schema/modularChangeCodecV2.js +1 -1
  450. package/lib/feature-libraries/modular-schema/modularChangeCodecV2.js.map +1 -1
  451. package/lib/feature-libraries/modular-schema/modularChangeCodecV3.d.ts +15 -0
  452. package/lib/feature-libraries/modular-schema/modularChangeCodecV3.d.ts.map +1 -0
  453. package/lib/feature-libraries/modular-schema/modularChangeCodecV3.js +292 -0
  454. package/lib/feature-libraries/modular-schema/modularChangeCodecV3.js.map +1 -0
  455. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts +1 -0
  456. package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
  457. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +8 -0
  458. package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
  459. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +56 -22
  460. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  461. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +1387 -468
  462. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  463. package/lib/feature-libraries/modular-schema/modularChangeFormatV1.d.ts.map +1 -1
  464. package/lib/feature-libraries/modular-schema/modularChangeFormatV1.js.map +1 -1
  465. package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts +1 -2
  466. package/lib/feature-libraries/modular-schema/modularChangeFormatV2.d.ts.map +1 -1
  467. package/lib/feature-libraries/modular-schema/modularChangeFormatV2.js +1 -1
  468. package/lib/feature-libraries/modular-schema/modularChangeFormatV2.js.map +1 -1
  469. package/lib/feature-libraries/modular-schema/modularChangeFormatV3.d.ts +74 -0
  470. package/lib/feature-libraries/modular-schema/modularChangeFormatV3.d.ts.map +1 -0
  471. package/lib/feature-libraries/modular-schema/modularChangeFormatV3.js +32 -0
  472. package/lib/feature-libraries/modular-schema/modularChangeFormatV3.js.map +1 -0
  473. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts +49 -10
  474. package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
  475. package/lib/feature-libraries/modular-schema/modularChangeTypes.js +1 -1
  476. package/lib/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
  477. package/lib/feature-libraries/optional-field/optionalField.d.ts +13 -32
  478. package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
  479. package/lib/feature-libraries/optional-field/optionalField.js +254 -442
  480. package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
  481. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV3.d.ts +23 -0
  482. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV3.d.ts.map +1 -0
  483. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV3.js +27 -0
  484. package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV3.js.map +1 -0
  485. package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts +31 -31
  486. package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.d.ts.map +1 -1
  487. package/lib/feature-libraries/optional-field/optionalFieldChangeTypes.js.map +1 -1
  488. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts +1 -1
  489. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.d.ts.map +1 -1
  490. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.js +55 -26
  491. package/lib/feature-libraries/optional-field/optionalFieldCodecV2.js.map +1 -1
  492. package/lib/feature-libraries/optional-field/optionalFieldCodecV3.d.ts +12 -0
  493. package/lib/feature-libraries/optional-field/optionalFieldCodecV3.d.ts.map +1 -0
  494. package/lib/feature-libraries/optional-field/optionalFieldCodecV3.js +53 -0
  495. package/lib/feature-libraries/optional-field/optionalFieldCodecV3.js.map +1 -0
  496. package/lib/feature-libraries/optional-field/optionalFieldCodecs.d.ts.map +1 -1
  497. package/lib/feature-libraries/optional-field/optionalFieldCodecs.js +5 -1
  498. package/lib/feature-libraries/optional-field/optionalFieldCodecs.js.map +1 -1
  499. package/lib/feature-libraries/optional-field/requiredField.d.ts +3 -2
  500. package/lib/feature-libraries/optional-field/requiredField.d.ts.map +1 -1
  501. package/lib/feature-libraries/optional-field/requiredField.js +5 -1
  502. package/lib/feature-libraries/optional-field/requiredField.js.map +1 -1
  503. package/lib/feature-libraries/sequence-field/compose.d.ts +6 -7
  504. package/lib/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  505. package/lib/feature-libraries/sequence-field/compose.js +83 -261
  506. package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
  507. package/lib/feature-libraries/sequence-field/helperTypes.d.ts +14 -10
  508. package/lib/feature-libraries/sequence-field/helperTypes.d.ts.map +1 -1
  509. package/lib/feature-libraries/sequence-field/helperTypes.js.map +1 -1
  510. package/lib/feature-libraries/sequence-field/invert.d.ts +3 -3
  511. package/lib/feature-libraries/sequence-field/invert.d.ts.map +1 -1
  512. package/lib/feature-libraries/sequence-field/invert.js +67 -169
  513. package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
  514. package/lib/feature-libraries/sequence-field/markQueue.d.ts +2 -2
  515. package/lib/feature-libraries/sequence-field/markQueue.d.ts.map +1 -1
  516. package/lib/feature-libraries/sequence-field/markQueue.js.map +1 -1
  517. package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts +4 -56
  518. package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
  519. package/lib/feature-libraries/sequence-field/moveEffectTable.js +6 -84
  520. package/lib/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
  521. package/lib/feature-libraries/sequence-field/rebase.d.ts +3 -3
  522. package/lib/feature-libraries/sequence-field/rebase.d.ts.map +1 -1
  523. package/lib/feature-libraries/sequence-field/rebase.js +111 -118
  524. package/lib/feature-libraries/sequence-field/rebase.js.map +1 -1
  525. package/lib/feature-libraries/sequence-field/replaceRevisions.d.ts.map +1 -1
  526. package/lib/feature-libraries/sequence-field/replaceRevisions.js +19 -32
  527. package/lib/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
  528. package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts.map +1 -1
  529. package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js +2 -3
  530. package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
  531. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +22 -4
  532. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
  533. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js +379 -182
  534. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
  535. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -1
  536. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js +21 -63
  537. package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -1
  538. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +2 -2
  539. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
  540. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js +13 -13
  541. package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
  542. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts +3 -2
  543. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
  544. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js +16 -111
  545. package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
  546. package/lib/feature-libraries/sequence-field/types.d.ts +37 -74
  547. package/lib/feature-libraries/sequence-field/types.d.ts.map +1 -1
  548. package/lib/feature-libraries/sequence-field/types.js.map +1 -1
  549. package/lib/feature-libraries/sequence-field/utils.d.ts +20 -25
  550. package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  551. package/lib/feature-libraries/sequence-field/utils.js +155 -313
  552. package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
  553. package/lib/packageVersion.d.ts +1 -1
  554. package/lib/packageVersion.d.ts.map +1 -1
  555. package/lib/packageVersion.js +1 -1
  556. package/lib/packageVersion.js.map +1 -1
  557. package/lib/shared-tree/independentView.d.ts.map +1 -1
  558. package/lib/shared-tree/independentView.js +1 -1
  559. package/lib/shared-tree/independentView.js.map +1 -1
  560. package/lib/shared-tree/index.d.ts +1 -1
  561. package/lib/shared-tree/index.d.ts.map +1 -1
  562. package/lib/shared-tree/index.js.map +1 -1
  563. package/lib/shared-tree/schematizeTree.d.ts +4 -4
  564. package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
  565. package/lib/shared-tree/schematizeTree.js +3 -2
  566. package/lib/shared-tree/schematizeTree.js.map +1 -1
  567. package/lib/shared-tree/schematizingTreeView.d.ts +1 -5
  568. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  569. package/lib/shared-tree/schematizingTreeView.js +24 -38
  570. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  571. package/lib/shared-tree/sharedTree.d.ts +9 -3
  572. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  573. package/lib/shared-tree/sharedTree.js +4 -1
  574. package/lib/shared-tree/sharedTree.js.map +1 -1
  575. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts +1 -0
  576. package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
  577. package/lib/shared-tree/sharedTreeChangeCodecs.js +8 -0
  578. package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
  579. package/lib/shared-tree/sharedTreeChangeFamily.d.ts +4 -4
  580. package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
  581. package/lib/shared-tree/sharedTreeChangeFamily.js +3 -3
  582. package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
  583. package/lib/shared-tree/sharedTreeEditBuilder.d.ts +16 -6
  584. package/lib/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
  585. package/lib/shared-tree/sharedTreeEditBuilder.js +12 -6
  586. package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
  587. package/lib/shared-tree/treeCheckout.d.ts +13 -11
  588. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  589. package/lib/shared-tree/treeCheckout.js +59 -9
  590. package/lib/shared-tree/treeCheckout.js.map +1 -1
  591. package/lib/shared-tree-core/branch.d.ts +3 -2
  592. package/lib/shared-tree-core/branch.d.ts.map +1 -1
  593. package/lib/shared-tree-core/branch.js +4 -3
  594. package/lib/shared-tree-core/branch.js.map +1 -1
  595. package/lib/shared-tree-core/editManager.d.ts +2 -2
  596. package/lib/shared-tree-core/editManager.d.ts.map +1 -1
  597. package/lib/shared-tree-core/editManager.js +9 -9
  598. package/lib/shared-tree-core/editManager.js.map +1 -1
  599. package/lib/shared-tree-core/editManagerCodecs.d.ts +4 -0
  600. package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
  601. package/lib/shared-tree-core/editManagerCodecs.js +8 -1
  602. package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
  603. package/lib/shared-tree-core/editManagerFormatCommons.d.ts +1 -0
  604. package/lib/shared-tree-core/editManagerFormatCommons.d.ts.map +1 -1
  605. package/lib/shared-tree-core/editManagerFormatCommons.js +6 -0
  606. package/lib/shared-tree-core/editManagerFormatCommons.js.map +1 -1
  607. package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts +2 -2
  608. package/lib/shared-tree-core/editManagerFormatV1toV4.d.ts.map +1 -1
  609. package/lib/shared-tree-core/editManagerFormatV1toV4.js +1 -0
  610. package/lib/shared-tree-core/editManagerFormatV1toV4.js.map +1 -1
  611. package/lib/shared-tree-core/index.d.ts +2 -2
  612. package/lib/shared-tree-core/index.d.ts.map +1 -1
  613. package/lib/shared-tree-core/index.js +2 -2
  614. package/lib/shared-tree-core/index.js.map +1 -1
  615. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts +1 -1
  616. package/lib/shared-tree-core/messageCodecV1ToV4.d.ts.map +1 -1
  617. package/lib/shared-tree-core/messageCodecV1ToV4.js.map +1 -1
  618. package/lib/shared-tree-core/messageCodecs.d.ts +4 -0
  619. package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
  620. package/lib/shared-tree-core/messageCodecs.js +8 -1
  621. package/lib/shared-tree-core/messageCodecs.js.map +1 -1
  622. package/lib/shared-tree-core/messageFormat.d.ts +1 -0
  623. package/lib/shared-tree-core/messageFormat.d.ts.map +1 -1
  624. package/lib/shared-tree-core/messageFormat.js +6 -0
  625. package/lib/shared-tree-core/messageFormat.js.map +1 -1
  626. package/lib/shared-tree-core/messageFormatV1ToV4.d.ts +2 -2
  627. package/lib/shared-tree-core/messageFormatV1ToV4.d.ts.map +1 -1
  628. package/lib/shared-tree-core/messageFormatV1ToV4.js +1 -0
  629. package/lib/shared-tree-core/messageFormatV1ToV4.js.map +1 -1
  630. package/lib/shared-tree-core/sharedTreeCore.d.ts +1 -0
  631. package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
  632. package/lib/shared-tree-core/sharedTreeCore.js +1 -1
  633. package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
  634. package/lib/simple-tree/core/unhydratedFlexTree.d.ts +16 -12
  635. package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  636. package/lib/simple-tree/core/unhydratedFlexTree.js +58 -8
  637. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  638. package/lib/simple-tree/fieldSchema.d.ts +4 -4
  639. package/lib/simple-tree/fieldSchema.d.ts.map +1 -1
  640. package/lib/simple-tree/fieldSchema.js.map +1 -1
  641. package/lib/simple-tree/index.d.ts +2 -2
  642. package/lib/simple-tree/index.d.ts.map +1 -1
  643. package/lib/simple-tree/index.js +1 -1
  644. package/lib/simple-tree/index.js.map +1 -1
  645. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  646. package/lib/simple-tree/node-kinds/array/arrayNode.js +6 -4
  647. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  648. package/lib/simple-tree/node-kinds/common.d.ts.map +1 -1
  649. package/lib/simple-tree/node-kinds/common.js +2 -2
  650. package/lib/simple-tree/node-kinds/common.js.map +1 -1
  651. package/lib/simple-tree/node-kinds/map/mapNode.js +2 -2
  652. package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
  653. package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
  654. package/lib/simple-tree/node-kinds/object/objectNode.js +20 -20
  655. package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
  656. package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
  657. package/lib/simple-tree/node-kinds/record/recordNode.js +4 -2
  658. package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
  659. package/lib/simple-tree/prepareForInsertion.d.ts +54 -47
  660. package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -1
  661. package/lib/simple-tree/prepareForInsertion.js +184 -125
  662. package/lib/simple-tree/prepareForInsertion.js.map +1 -1
  663. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +8 -3
  664. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
  665. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +23 -10
  666. package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
  667. package/lib/treeFactory.d.ts.map +1 -1
  668. package/lib/treeFactory.js +13 -3
  669. package/lib/treeFactory.js.map +1 -1
  670. package/lib/util/index.d.ts +1 -1
  671. package/lib/util/index.d.ts.map +1 -1
  672. package/lib/util/index.js +1 -1
  673. package/lib/util/index.js.map +1 -1
  674. package/lib/util/rangeMap.d.ts +23 -11
  675. package/lib/util/rangeMap.d.ts.map +1 -1
  676. package/lib/util/rangeMap.js +41 -9
  677. package/lib/util/rangeMap.js.map +1 -1
  678. package/package.json +21 -21
  679. package/src/core/change-family/changeFamily.ts +5 -0
  680. package/src/core/change-family/index.ts +1 -0
  681. package/src/core/index.ts +4 -1
  682. package/src/core/rebase/changeRebaser.ts +6 -1
  683. package/src/core/rebase/index.ts +1 -0
  684. package/src/core/rebase/types.ts +4 -0
  685. package/src/core/rebase/utils.ts +31 -7
  686. package/src/core/tree/delta.ts +6 -0
  687. package/src/core/tree/detachedFieldIndex.ts +29 -1
  688. package/src/core/tree/detachedFieldIndexTypes.ts +5 -0
  689. package/src/core/tree/index.ts +13 -12
  690. package/src/core/tree/pathTree.ts +16 -4
  691. package/src/core/tree/visitDelta.ts +31 -11
  692. package/src/feature-libraries/changeAtomIdBTree.ts +28 -3
  693. package/src/feature-libraries/default-schema/defaultEditBuilder.ts +369 -127
  694. package/src/feature-libraries/default-schema/defaultFieldKinds.ts +13 -4
  695. package/src/feature-libraries/default-schema/index.ts +16 -5
  696. package/src/feature-libraries/default-schema/locationBasedEditBuilder.ts +231 -0
  697. package/src/feature-libraries/default-schema/mappedEditBuilder.ts +35 -9
  698. package/src/feature-libraries/deltaUtils.ts +6 -1
  699. package/src/feature-libraries/flex-tree/context.ts +17 -0
  700. package/src/feature-libraries/flex-tree/flexTreeTypes.ts +7 -8
  701. package/src/feature-libraries/flex-tree/lazyField.ts +65 -24
  702. package/src/feature-libraries/index.ts +22 -9
  703. package/src/feature-libraries/mitigatedChangeFamily.ts +3 -1
  704. package/src/feature-libraries/modular-schema/crossFieldQueries.ts +144 -47
  705. package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +113 -58
  706. package/src/feature-libraries/modular-schema/genericFieldKind.ts +7 -18
  707. package/src/feature-libraries/modular-schema/index.ts +16 -16
  708. package/src/feature-libraries/modular-schema/modularChangeCodecV1.ts +623 -348
  709. package/src/feature-libraries/modular-schema/modularChangeCodecV2.ts +1 -0
  710. package/src/feature-libraries/modular-schema/modularChangeCodecV3.ts +649 -0
  711. package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +14 -0
  712. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +2694 -748
  713. package/src/feature-libraries/modular-schema/modularChangeFormatV1.ts +1 -0
  714. package/src/feature-libraries/modular-schema/modularChangeFormatV2.ts +1 -1
  715. package/src/feature-libraries/modular-schema/modularChangeFormatV3.ts +67 -0
  716. package/src/feature-libraries/modular-schema/modularChangeTypes.ts +62 -10
  717. package/src/feature-libraries/optional-field/optionalField.ts +359 -568
  718. package/src/feature-libraries/optional-field/optionalFieldChangeFormatV3.ts +45 -0
  719. package/src/feature-libraries/optional-field/optionalFieldChangeTypes.ts +31 -35
  720. package/src/feature-libraries/optional-field/optionalFieldCodecV2.ts +89 -35
  721. package/src/feature-libraries/optional-field/optionalFieldCodecV3.ts +94 -0
  722. package/src/feature-libraries/optional-field/optionalFieldCodecs.ts +5 -1
  723. package/src/feature-libraries/optional-field/requiredField.ts +15 -2
  724. package/src/feature-libraries/sequence-field/compose.ts +137 -522
  725. package/src/feature-libraries/sequence-field/helperTypes.ts +34 -19
  726. package/src/feature-libraries/sequence-field/invert.ts +102 -228
  727. package/src/feature-libraries/sequence-field/markQueue.ts +2 -2
  728. package/src/feature-libraries/sequence-field/moveEffectTable.ts +8 -195
  729. package/src/feature-libraries/sequence-field/rebase.ts +171 -207
  730. package/src/feature-libraries/sequence-field/replaceRevisions.ts +26 -52
  731. package/src/feature-libraries/sequence-field/sequenceFieldChangeHandler.ts +8 -3
  732. package/src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts +677 -229
  733. package/src/feature-libraries/sequence-field/sequenceFieldCodecV3.ts +56 -70
  734. package/src/feature-libraries/sequence-field/sequenceFieldEditor.ts +28 -30
  735. package/src/feature-libraries/sequence-field/sequenceFieldToDelta.ts +21 -131
  736. package/src/feature-libraries/sequence-field/types.ts +40 -79
  737. package/src/feature-libraries/sequence-field/utils.ts +211 -370
  738. package/src/packageVersion.ts +1 -1
  739. package/src/shared-tree/independentView.ts +12 -6
  740. package/src/shared-tree/index.ts +3 -2
  741. package/src/shared-tree/schematizeTree.ts +21 -8
  742. package/src/shared-tree/schematizingTreeView.ts +38 -68
  743. package/src/shared-tree/sharedTree.ts +30 -15
  744. package/src/shared-tree/sharedTreeChangeCodecs.ts +8 -0
  745. package/src/shared-tree/sharedTreeChangeFamily.ts +7 -4
  746. package/src/shared-tree/sharedTreeEditBuilder.ts +43 -8
  747. package/src/shared-tree/treeCheckout.ts +93 -17
  748. package/src/shared-tree-core/branch.ts +8 -2
  749. package/src/shared-tree-core/editManager.ts +16 -2
  750. package/src/shared-tree-core/editManagerCodecs.ts +11 -1
  751. package/src/shared-tree-core/editManagerFormatCommons.ts +6 -0
  752. package/src/shared-tree-core/editManagerFormatV1toV4.ts +3 -1
  753. package/src/shared-tree-core/index.ts +2 -0
  754. package/src/shared-tree-core/messageCodecV1ToV4.ts +2 -1
  755. package/src/shared-tree-core/messageCodecs.ts +11 -1
  756. package/src/shared-tree-core/messageFormat.ts +6 -0
  757. package/src/shared-tree-core/messageFormatV1ToV4.ts +3 -1
  758. package/src/shared-tree-core/sharedTreeCore.ts +4 -1
  759. package/src/simple-tree/core/unhydratedFlexTree.ts +82 -35
  760. package/src/simple-tree/fieldSchema.ts +6 -4
  761. package/src/simple-tree/index.ts +2 -1
  762. package/src/simple-tree/node-kinds/array/arrayNode.ts +7 -5
  763. package/src/simple-tree/node-kinds/common.ts +2 -5
  764. package/src/simple-tree/node-kinds/map/mapNode.ts +4 -4
  765. package/src/simple-tree/node-kinds/object/objectNode.ts +26 -26
  766. package/src/simple-tree/node-kinds/record/recordNode.ts +10 -9
  767. package/src/simple-tree/prepareForInsertion.ts +342 -200
  768. package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +35 -15
  769. package/src/treeFactory.ts +16 -4
  770. package/src/util/index.ts +3 -0
  771. package/src/util/rangeMap.ts +68 -26
  772. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.d.ts +0 -9
  773. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.d.ts.map +0 -1
  774. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.js +0 -50
  775. package/dist/feature-libraries/sequence-field/relevantRemovedRoots.js.map +0 -1
  776. package/docs/main/sequence-field/move-composition.md +0 -46
  777. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.d.ts +0 -9
  778. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.d.ts.map +0 -1
  779. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.js +0 -46
  780. package/lib/feature-libraries/sequence-field/relevantRemovedRoots.js.map +0 -1
  781. package/src/feature-libraries/sequence-field/relevantRemovedRoots.ts +0 -57
@@ -7,14 +7,13 @@ import { fail } from "@fluidframework/core-utils/internal";
7
7
 
8
8
  import type { CodecTree } from "../../codec/index.js";
9
9
  import {
10
- type DeltaDetachedNodeId,
10
+ type DeltaFieldChanges,
11
11
  type FieldKindIdentifier,
12
12
  forbiddenFieldKindIdentifier,
13
13
  Multiplicity,
14
14
  } from "../../core/index.js";
15
15
  import { identifierFieldIdentifier } from "../fieldKindIdentifiers.js";
16
16
  import {
17
- type FieldChangeDelta,
18
17
  type FieldChangeHandler,
19
18
  type FieldEditor,
20
19
  type FieldKindConfiguration,
@@ -42,12 +41,12 @@ export const noChangeHandler: FieldChangeHandler<0> = {
42
41
  }),
43
42
  codecsFactory: () => noChangeCodecFamily,
44
43
  editor: { buildChildChanges: () => fail(0xb0d /* Child changes not supported */) },
45
- intoDelta: (change, deltaFromChild: ToDelta): FieldChangeDelta => ({}),
46
- relevantRemovedRoots: (change): Iterable<DeltaDetachedNodeId> => [],
44
+ intoDelta: (change, deltaFromChild: ToDelta): DeltaFieldChanges => ({ marks: [] }),
47
45
  isEmpty: (change: 0) => true,
48
46
  getNestedChanges: (change: 0) => [],
49
47
  createEmpty: () => 0,
50
48
  getCrossFieldKeys: () => [],
49
+ getDetachCellIds: () => [],
51
50
  };
52
51
 
53
52
  /**
@@ -138,6 +137,16 @@ export const fieldKindConfigurations: ReadonlyMap<
138
137
  [identifier.identifier, { kind: identifier, formatVersion: 1 }],
139
138
  ]),
140
139
  ],
140
+ [
141
+ ModularChangeFormatVersion.vDetachedRoots,
142
+ new Map<FieldKindIdentifier, FieldKindConfigurationEntry>([
143
+ [required.identifier, { kind: required, formatVersion: 2 }],
144
+ [optional.identifier, { kind: optional, formatVersion: 3 }],
145
+ [sequence.identifier, { kind: sequence, formatVersion: 2 }],
146
+ [forbidden.identifier, { kind: forbidden, formatVersion: 1 }],
147
+ [identifier.identifier, { kind: identifier, formatVersion: 1 }],
148
+ ]),
149
+ ],
141
150
  ]);
142
151
 
143
152
  export function getCodecTreeForModularChangeFormat(
@@ -13,14 +13,25 @@ export {
13
13
 
14
14
  export {
15
15
  type DefaultChangeset,
16
+ type DetachedRootIds,
17
+ type DetachedRootIdRange,
16
18
  DefaultChangeFamily,
17
- DefaultEditBuilder,
18
- type IDefaultEditBuilder,
19
- type ValueFieldEditBuilder,
20
- type OptionalFieldEditBuilder,
21
- type SequenceFieldEditBuilder,
19
+ type IdBasedChangeFamilyDataEditor,
20
+ DefaultIdBasedDataEditor,
21
+ type DataEditor,
22
+ type RequiredFieldEditor,
23
+ type OptionalFieldEditor,
24
+ type SequenceFieldEditor,
22
25
  intoDelta,
23
26
  relevantRemovedRoots,
24
27
  } from "./defaultEditBuilder.js";
25
28
 
29
+ export {
30
+ type DetachedRootLocation,
31
+ type DetachedRootsLocation,
32
+ type Locator,
33
+ LocationBasedDataEditor,
34
+ type ILocationBasedDataEditor,
35
+ } from "./locationBasedEditBuilder.js";
36
+
26
37
  export { MappedEditBuilder } from "./mappedEditBuilder.js";
@@ -0,0 +1,231 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import { UsageError } from "@fluidframework/telemetry-utils/internal";
7
+
8
+ import {
9
+ type ChangeAtomId,
10
+ type FieldKey,
11
+ type FieldUpPath,
12
+ type UpPath,
13
+ type TreeChunk,
14
+ type NormalizedUpPath,
15
+ type NormalizedFieldUpPath,
16
+ rootFieldKey,
17
+ makeDetachedNodeId,
18
+ offsetChangeAtomId,
19
+ type EditorOptions,
20
+ } from "../../core/index.js";
21
+
22
+ import type {
23
+ DetachedRootIds,
24
+ DataEditor,
25
+ OptionalFieldEditor,
26
+ RequiredFieldEditor,
27
+ SequenceFieldEditor,
28
+ } from "./defaultEditBuilder.js";
29
+
30
+ export type DetachedRootLocation = FieldKey;
31
+ export type DetachedRootsLocation = readonly DetachedRootRangeLocation[];
32
+ export interface DetachedRootRangeLocation {
33
+ readonly field: FieldKey;
34
+ readonly count: number;
35
+ }
36
+
37
+ export interface Locator {
38
+ locationFromId(id: ChangeAtomId): DetachedRootLocation;
39
+ idFromLocation(id: DetachedRootLocation): ChangeAtomId;
40
+ locationsFromIdRanges(id: DetachedRootIds): DetachedRootsLocation;
41
+ idRangesFromLocations(id: DetachedRootsLocation): DetachedRootIds;
42
+ isAttachable(id: ChangeAtomId): boolean | undefined;
43
+ }
44
+
45
+ export type ILocationBasedDataEditor = DataEditor<
46
+ TreeChunk,
47
+ DetachedRootLocation,
48
+ DetachedRootsLocation
49
+ >;
50
+
51
+ /**
52
+ * Implementation of {@link DataEditor} based on the default set of supported field kinds.
53
+ * @sealed
54
+ */
55
+ export class LocationBasedDataEditor
56
+ implements DataEditor<TreeChunk, DetachedRootLocation, DetachedRootsLocation>
57
+ {
58
+ public constructor(
59
+ private readonly idBasedEditor: DataEditor<TreeChunk, ChangeAtomId, DetachedRootIds>,
60
+ private readonly locator: Locator,
61
+ private readonly options: EditorOptions,
62
+ ) {}
63
+
64
+ public addNodeExistsConstraint(path: UpPath): void {
65
+ const normal = normalizeUpPath(path, this.locator, this.options);
66
+ this.idBasedEditor.addNodeExistsConstraint(normal);
67
+ }
68
+
69
+ public addNodeExistsConstraintOnRevert(path: UpPath): void {
70
+ const normal = normalizeUpPath(path, this.locator, this.options);
71
+ this.idBasedEditor.addNodeExistsConstraintOnRevert(normal);
72
+ }
73
+
74
+ public addNoChangeConstraint(): void {
75
+ this.idBasedEditor.addNoChangeConstraint();
76
+ }
77
+
78
+ public addNoChangeConstraintOnRevert(): void {
79
+ this.idBasedEditor.addNoChangeConstraintOnRevert();
80
+ }
81
+
82
+ public buildRoots(content: TreeChunk): DetachedRootsLocation {
83
+ const roots = this.idBasedEditor.buildRoots(content);
84
+ const locations = this.locator.locationsFromIdRanges(roots);
85
+ return locations;
86
+ }
87
+
88
+ public valueField(field: FieldUpPath): RequiredFieldEditor<TreeChunk, DetachedRootLocation> {
89
+ const normal = normalizeFieldUpPath(field, this.locator, this.options);
90
+ const lowLevelEditor = this.idBasedEditor.valueField(normal);
91
+ const locator = this.locator;
92
+ const editBuilder = {
93
+ set: (newContent: TreeChunk): void => {
94
+ lowLevelEditor.set(newContent);
95
+ },
96
+ attach: (newContent: DetachedRootLocation): void => {
97
+ const changeAtom = locator.idFromLocation(newContent);
98
+ validateIsAttachable(changeAtom, locator);
99
+ lowLevelEditor.attach(changeAtom);
100
+ },
101
+ };
102
+ return editBuilder;
103
+ }
104
+
105
+ public optionalField(
106
+ field: FieldUpPath,
107
+ ): OptionalFieldEditor<TreeChunk, DetachedRootLocation> {
108
+ const normal = normalizeFieldUpPath(field, this.locator, this.options);
109
+ const lowLevelEditor = this.idBasedEditor.optionalField(normal);
110
+ const locator = this.locator;
111
+ const editBuilder = {
112
+ set: (newContent: TreeChunk | undefined, wasEmpty: boolean): void => {
113
+ lowLevelEditor.set(newContent, wasEmpty);
114
+ },
115
+ attach: (newContent: DetachedRootLocation | undefined, wasEmpty: boolean): void => {
116
+ if (newContent === undefined) {
117
+ editBuilder.clear(wasEmpty);
118
+ return;
119
+ }
120
+ const changeAtom = locator.idFromLocation(newContent);
121
+ validateIsAttachable(changeAtom, locator);
122
+ lowLevelEditor.attach(changeAtom, wasEmpty);
123
+ },
124
+ clear: (wasEmpty: boolean): void => {
125
+ lowLevelEditor.clear(wasEmpty);
126
+ },
127
+ };
128
+ return editBuilder;
129
+ }
130
+
131
+ public move(
132
+ sourceField: FieldUpPath,
133
+ sourceIndex: number,
134
+ count: number,
135
+ destinationField: FieldUpPath,
136
+ destIndex: number,
137
+ ): void {
138
+ const normalSource = normalizeFieldUpPath(sourceField, this.locator, this.options);
139
+ const normalDestination = normalizeFieldUpPath(
140
+ destinationField,
141
+ this.locator,
142
+ this.options,
143
+ );
144
+ this.idBasedEditor.move(normalSource, sourceIndex, count, normalDestination, destIndex);
145
+ }
146
+
147
+ public sequenceField(
148
+ field: FieldUpPath,
149
+ ): SequenceFieldEditor<TreeChunk, DetachedRootsLocation> {
150
+ const normal = normalizeFieldUpPath(field, this.locator, this.options);
151
+ const lowLevelEditor = this.idBasedEditor.sequenceField(normal);
152
+ const locator = this.locator;
153
+ const editBuilder = {
154
+ insert: (index: number, content: TreeChunk): void => {
155
+ lowLevelEditor.insert(index, content);
156
+ },
157
+ attach: (index: number, newContent: DetachedRootsLocation): void => {
158
+ const range = locator.idRangesFromLocations(newContent);
159
+ validateAreAttachable(range, locator);
160
+ lowLevelEditor.attach(index, range);
161
+ },
162
+ remove: (index: number, count: number): void => {
163
+ lowLevelEditor.remove(index, count);
164
+ },
165
+ };
166
+ return editBuilder;
167
+ }
168
+ }
169
+
170
+ function normalizeUpPath(
171
+ path: UpPath,
172
+ locator: Locator,
173
+ options: EditorOptions,
174
+ ): NormalizedUpPath {
175
+ if (path.parent === undefined) {
176
+ if (path.parentField === rootFieldKey) {
177
+ return { ...path, parent: undefined, detachedNodeId: undefined };
178
+ } else {
179
+ if (options.enableDetachedRootEditing !== true) {
180
+ throw new UsageError(
181
+ `Edits and constraints on detached trees require a minimum version for collaboration >= TBD.`,
182
+ );
183
+ }
184
+ const nodeId = locator.idFromLocation(path.parentField);
185
+ const detachedNodeId = makeDetachedNodeId(nodeId.revision, nodeId.localId);
186
+ return { ...path, parent: undefined, detachedNodeId };
187
+ }
188
+ } else {
189
+ return {
190
+ parent: normalizeUpPath(path.parent, locator, options),
191
+ parentField: path.parentField,
192
+ parentIndex: path.parentIndex,
193
+ };
194
+ }
195
+ }
196
+
197
+ function normalizeFieldUpPath(
198
+ path: FieldUpPath,
199
+ locator: Locator,
200
+ options: EditorOptions,
201
+ ): NormalizedFieldUpPath {
202
+ if (path.parent === undefined) {
203
+ if (path.field === rootFieldKey) {
204
+ return { parent: undefined, field: rootFieldKey };
205
+ } else {
206
+ throw new UsageError(
207
+ "Editing only allowed on the root field or on fields under nodes with TreeStatus.InDocument or TreeStatus.Removed status",
208
+ );
209
+ }
210
+ } else {
211
+ return { parent: normalizeUpPath(path.parent, locator, options), field: path.field };
212
+ }
213
+ }
214
+
215
+ function validateAreAttachable(nodeIds: DetachedRootIds, locator: Locator): void {
216
+ for (const idRange of nodeIds) {
217
+ const baseAtom = idRange.first;
218
+ for (let idOffset = 0; idOffset < idRange.count; idOffset++) {
219
+ validateIsAttachable(offsetChangeAtomId(baseAtom, idOffset), locator);
220
+ }
221
+ }
222
+ }
223
+
224
+ function validateIsAttachable(nodeId: ChangeAtomId, locator: Locator): void {
225
+ const isAttachable = locator.isAttachable(nodeId);
226
+ if (!(isAttachable ?? false)) {
227
+ throw new UsageError(
228
+ `Nodes that may have been detached from a required field can only be re-attached by reverting the detach.`,
229
+ );
230
+ }
231
+ }
@@ -6,30 +6,45 @@
6
6
  import type { NormalizedFieldUpPath, NormalizedUpPath } from "../../core/index.js";
7
7
 
8
8
  import type {
9
- IDefaultEditBuilder,
10
- OptionalFieldEditBuilder,
11
- SequenceFieldEditBuilder,
12
- ValueFieldEditBuilder,
9
+ DataEditor,
10
+ OptionalFieldEditor,
11
+ SequenceFieldEditor,
12
+ RequiredFieldEditor,
13
13
  } from "./defaultEditBuilder.js";
14
14
 
15
15
  /**
16
16
  * An IDefaultEditBuilder implementation based on another IDefaultEditBuilder that uses a different content type for insertions.
17
17
  */
18
- export class MappedEditBuilder<TBase, TAdapted> implements IDefaultEditBuilder<TAdapted> {
18
+ export class MappedEditBuilder<TBase, TAdapted, TDetachedRoot, TDetachedRoots>
19
+ implements DataEditor<TAdapted, TDetachedRoot, TDetachedRoots>
20
+ {
19
21
  public constructor(
20
- private readonly baseBuilder: IDefaultEditBuilder<TBase>,
22
+ private readonly baseBuilder: DataEditor<TBase, TDetachedRoot, TDetachedRoots>,
21
23
  private readonly mapDelegate: (input: TAdapted) => TBase,
22
24
  ) {}
23
- public valueField(field: NormalizedFieldUpPath): ValueFieldEditBuilder<TAdapted> {
25
+
26
+ public buildRoots(content: TAdapted): TDetachedRoots {
27
+ return this.baseBuilder.buildRoots(this.mapDelegate(content));
28
+ }
29
+
30
+ public valueField(
31
+ field: NormalizedFieldUpPath,
32
+ ): RequiredFieldEditor<TAdapted, TDetachedRoot> {
24
33
  const baseField = this.baseBuilder.valueField(field);
25
34
  return {
26
35
  set: (newContent: TAdapted): void => {
27
36
  const mappedContent = this.mapDelegate(newContent);
28
37
  baseField.set(mappedContent);
29
38
  },
39
+ attach: (content: TDetachedRoot): void => {
40
+ baseField.attach(content);
41
+ },
30
42
  };
31
43
  }
32
- public optionalField(field: NormalizedFieldUpPath): OptionalFieldEditBuilder<TAdapted> {
44
+
45
+ public optionalField(
46
+ field: NormalizedFieldUpPath,
47
+ ): OptionalFieldEditor<TAdapted, TDetachedRoot> {
33
48
  const baseField = this.baseBuilder.optionalField(field);
34
49
  return {
35
50
  set: (newContent: TAdapted | undefined, wasEmpty: boolean): void => {
@@ -37,9 +52,17 @@ export class MappedEditBuilder<TBase, TAdapted> implements IDefaultEditBuilder<T
37
52
  newContent === undefined ? undefined : this.mapDelegate(newContent);
38
53
  baseField.set(mappedContent, wasEmpty);
39
54
  },
55
+ attach: (content, wasEmpty: boolean): void => {
56
+ baseField.attach(content, wasEmpty);
57
+ },
58
+ clear(wasEmpty: boolean): void {
59
+ baseField.clear(wasEmpty);
60
+ },
40
61
  };
41
62
  }
42
- public sequenceField(field: NormalizedFieldUpPath): SequenceFieldEditBuilder<TAdapted> {
63
+ public sequenceField(
64
+ field: NormalizedFieldUpPath,
65
+ ): SequenceFieldEditor<TAdapted, TDetachedRoots> {
43
66
  const baseField = this.baseBuilder.sequenceField(field);
44
67
  return {
45
68
  insert: (index: number, content: TAdapted): void => {
@@ -49,6 +72,9 @@ export class MappedEditBuilder<TBase, TAdapted> implements IDefaultEditBuilder<T
49
72
  remove: (index: number, count: number): void => {
50
73
  baseField.remove(index, count);
51
74
  },
75
+ attach: (index: number, detachedContent: TDetachedRoots): void => {
76
+ baseField.attach(index, detachedContent);
77
+ },
52
78
  };
53
79
  }
54
80
  public move(
@@ -7,14 +7,19 @@ import {
7
7
  type ChangeAtomId,
8
8
  type DeltaDetachedNodeId,
9
9
  type DeltaRoot,
10
+ makeChangeAtomId,
10
11
  makeDetachedNodeId,
11
12
  } from "../core/index.js";
12
- import type { Mutable } from "../util/index.js";
13
+ import { brand, type Mutable } from "../util/index.js";
13
14
 
14
15
  export function nodeIdFromChangeAtom(changeAtom: ChangeAtomId): DeltaDetachedNodeId {
15
16
  return makeDetachedNodeId(changeAtom.revision, changeAtom.localId);
16
17
  }
17
18
 
19
+ export function changeAtomFromDetachedNodeId(changeAtom: DeltaDetachedNodeId): ChangeAtomId {
20
+ return makeChangeAtomId(brand(changeAtom.minor), changeAtom.major);
21
+ }
22
+
18
23
  /**
19
24
  * Converts a `Delta.Root` whose tree content is represented with by `TIn` instances
20
25
  * into a `Delta.Root`whose tree content is represented with by `TOut` instances.
@@ -51,6 +51,8 @@ export interface FlexTreeContext {
51
51
  * If true, none of the nodes in this context can be used.
52
52
  */
53
53
  isDisposed(): boolean;
54
+
55
+ runInTransaction(fn: () => void): void;
54
56
  }
55
57
 
56
58
  /**
@@ -66,6 +68,14 @@ export interface FlexTreeHydratedContextMinimal {
66
68
  * The checkout object associated with this context.
67
69
  */
68
70
  readonly checkout: ITreeCheckout;
71
+
72
+ /**
73
+ * Returns a new {@link FlexTreeField} that will live as long as the caller allows up to the next call to {@link clear} or disposal of the context.
74
+ * @remarks
75
+ * Due to limited support for detached fields, not all operations are supported.
76
+ * Additionally if the detached field's content is deleted, the field will become out of schema if it is required: it must not be used after that point.
77
+ */
78
+ detachedField?(key: DetachedField, schema: FieldKindIdentifier): FlexTreeField;
69
79
  }
70
80
 
71
81
  /**
@@ -152,6 +162,13 @@ export class Context implements FlexTreeHydratedContext, IDisposable {
152
162
  return this.checkout.storedSchema;
153
163
  }
154
164
 
165
+ public runInTransaction(fn: () => void): void {
166
+ debugAssert(() => !this.disposed || "Disposed");
167
+ this.checkout.transaction.start(false);
168
+ fn();
169
+ this.checkout.transaction.commit();
170
+ }
171
+
155
172
  /**
156
173
  * Called before editing.
157
174
  * Clears all cursors so editing can proceed.
@@ -14,15 +14,14 @@ import {
14
14
  } from "../../core/index.js";
15
15
  import type {
16
16
  FieldKinds,
17
- SequenceFieldEditBuilder,
18
- ValueFieldEditBuilder,
19
- OptionalFieldEditBuilder,
17
+ SequenceFieldEditor,
18
+ RequiredFieldEditor,
19
+ OptionalFieldEditor,
20
20
  } from "../default-schema/index.js";
21
21
  import type {
22
22
  MapTreeFieldViewGeneric,
23
23
  MapTreeNodeViewGeneric,
24
24
  MinimalFieldMap,
25
- MinimalMapTreeNodeView,
26
25
  } from "../mapTreeCursor.js";
27
26
  import type { FlexFieldKind } from "../modular-schema/index.js";
28
27
 
@@ -309,7 +308,7 @@ export type FlexibleFieldContent = readonly FlexibleNodeContent[];
309
308
  /**
310
309
  * Tree for inserting as a node.
311
310
  */
312
- export type FlexibleNodeContent = MinimalMapTreeNodeView;
311
+ export type FlexibleNodeContent = FlexTreeNode;
313
312
 
314
313
  /**
315
314
  * {@link FlexTreeField} that stores a sequence of children.
@@ -354,7 +353,7 @@ export interface FlexTreeSequenceField extends FlexTreeField {
354
353
  /**
355
354
  * Get an editor for this sequence.
356
355
  */
357
- readonly editor: SequenceFieldEditBuilder<FlexibleFieldContent>;
356
+ readonly editor: SequenceFieldEditor<FlexibleFieldContent, readonly FlexTreeNode[]>;
358
357
  }
359
358
 
360
359
  /**
@@ -366,7 +365,7 @@ export interface FlexTreeSequenceField extends FlexTreeField {
366
365
  export interface FlexTreeRequiredField extends FlexTreeField {
367
366
  get content(): FlexTreeUnknownUnboxed;
368
367
 
369
- readonly editor: ValueFieldEditBuilder<FlexibleNodeContent>;
368
+ readonly editor: RequiredFieldEditor<FlexibleNodeContent, FlexTreeNode>;
370
369
  }
371
370
 
372
371
  /**
@@ -385,7 +384,7 @@ export interface FlexTreeRequiredField extends FlexTreeField {
385
384
  export interface FlexTreeOptionalField extends FlexTreeField {
386
385
  get content(): FlexTreeUnknownUnboxed | undefined;
387
386
 
388
- readonly editor: OptionalFieldEditBuilder<FlexibleNodeContent>;
387
+ readonly editor: OptionalFieldEditor<FlexibleNodeContent, FlexTreeNode>;
389
388
  }
390
389
 
391
390
  // #endregion
@@ -9,7 +9,6 @@ import { UsageError } from "@fluidframework/telemetry-utils/internal";
9
9
  import {
10
10
  type AnchorNode,
11
11
  CursorLocationType,
12
- type ExclusiveMapTree,
13
12
  type FieldAnchor,
14
13
  type FieldKey,
15
14
  type FieldKindIdentifier,
@@ -27,18 +26,21 @@ import { combineChunks } from "../chunked-forest/index.js";
27
26
  import {
28
27
  FieldKinds,
29
28
  MappedEditBuilder,
30
- type IDefaultEditBuilder,
31
- type OptionalFieldEditBuilder,
32
- type SequenceFieldEditBuilder,
33
- type ValueFieldEditBuilder,
29
+ type SequenceFieldEditor,
30
+ type RequiredFieldEditor,
31
+ type DataEditor,
32
+ type OptionalFieldEditor,
33
+ type DetachedRootLocation,
34
+ type DetachedRootsLocation,
34
35
  } from "../default-schema/index.js";
35
- import { cursorForMapTreeField } from "../mapTreeCursor.js";
36
+ import { cursorForMapTreeField, type MinimalMapTreeNodeView } from "../mapTreeCursor.js";
36
37
  import type { FlexFieldKind } from "../modular-schema/index.js";
37
38
 
38
39
  import type { Context } from "./context.js";
39
40
  import {
40
41
  FlexTreeEntityKind,
41
42
  type FlexTreeField,
43
+ type FlexTreeNode,
42
44
  type FlexTreeOptionalField,
43
45
  type FlexTreeRequiredField,
44
46
  type FlexTreeSequenceField,
@@ -52,7 +54,7 @@ import {
52
54
  flexTreeSlot,
53
55
  } from "./flexTreeTypes.js";
54
56
  import { LazyEntity } from "./lazyEntity.js";
55
- import { type LazyTreeNode, getOrCreateHydratedFlexTreeNode } from "./lazyNode.js";
57
+ import { LazyTreeNode, getOrCreateHydratedFlexTreeNode } from "./lazyNode.js";
56
58
  import { indexForAt, treeStatusFromAnchorCache } from "./utilities.js";
57
59
 
58
60
  /**
@@ -230,21 +232,28 @@ export abstract class LazyField extends LazyEntity<FieldAnchor> implements FlexT
230
232
  * This path is not valid to hold onto across edits: this must be recalled for each edit.
231
233
  */
232
234
  public getFieldPathForEditing(): NormalizedFieldUpPath {
233
- if (
234
- !this.isFreed() &&
235
+ if (!this.isFreed()) {
235
236
  // Only allow editing if we are the root document field...
236
- ((this.parent === undefined && this.anchor.fieldKey === rootFieldKey) ||
237
- // ...or are under a node in the document
238
- (this.parent !== undefined &&
239
- treeStatusFromAnchorCache(this.parent.anchorNode) === TreeStatus.InDocument))
240
- ) {
241
- return this.getFieldPath();
237
+ if (this.parent === undefined && this.anchor.fieldKey === rootFieldKey) {
238
+ return this.getFieldPath();
239
+ }
240
+ // ...or are under a node in the document
241
+ if (this.parent !== undefined) {
242
+ const status = treeStatusFromAnchorCache(this.parent.anchorNode);
243
+ if (status === TreeStatus.InDocument || status === TreeStatus.Removed) {
244
+ return this.getFieldPath();
245
+ }
246
+ }
242
247
  }
243
248
 
244
249
  throw new UsageError("Editing only allowed on fields with TreeStatus.InDocument status");
245
250
  }
246
251
 
247
- protected getEditor(): IDefaultEditBuilder<ITreeCursorSynchronous> {
252
+ protected getEditor(): DataEditor<
253
+ ITreeCursorSynchronous,
254
+ DetachedRootLocation,
255
+ DetachedRootsLocation
256
+ > {
248
257
  return new MappedEditBuilder(
249
258
  this.context.checkout.editor,
250
259
  (cursor: ITreeCursorSynchronous) =>
@@ -253,6 +262,11 @@ export abstract class LazyField extends LazyEntity<FieldAnchor> implements FlexT
253
262
  }
254
263
  }
255
264
 
265
+ function fieldFromNode(node: FlexTreeNode): FieldKey {
266
+ assert(node instanceof LazyTreeNode, "Invalid tree type");
267
+ return node.anchorNode.parentField;
268
+ }
269
+
256
270
  export class LazySequence extends LazyField implements FlexTreeSequenceField {
257
271
  public at(index: number): FlexTreeUnknownUnboxed | undefined {
258
272
  const finalIndex = indexForAt(index, this.length);
@@ -267,32 +281,48 @@ export class LazySequence extends LazyField implements FlexTreeSequenceField {
267
281
  return this.map((x) => x);
268
282
  }
269
283
 
270
- public editor: SequenceFieldEditBuilder<FlexibleFieldContent> = {
284
+ public editor: SequenceFieldEditor<FlexibleFieldContent, readonly FlexTreeNode[]> = {
271
285
  insert: (index, newContent) => {
272
286
  this.sequenceEditor().insert(index, cursorForMapTreeField(newContent));
273
287
  },
274
288
  remove: (index, count) => {
275
289
  this.sequenceEditor().remove(index, count);
276
290
  },
291
+ attach: (index, content) => {
292
+ const contentLocations: DetachedRootsLocation = content.map((node) => ({
293
+ field: fieldFromNode(node),
294
+ count: 1,
295
+ }));
296
+ this.sequenceEditor().attach(index, contentLocations);
297
+ },
277
298
  };
278
299
 
279
- private sequenceEditor(): SequenceFieldEditBuilder<ITreeCursorSynchronous> {
300
+ private sequenceEditor(): SequenceFieldEditor<
301
+ ITreeCursorSynchronous,
302
+ DetachedRootsLocation
303
+ > {
280
304
  const fieldPath = this.getFieldPathForEditing();
281
305
  return this.getEditor().sequenceField(fieldPath);
282
306
  }
283
307
  }
284
308
 
285
309
  export class LazyValueField extends LazyField implements FlexTreeRequiredField {
286
- public editor: ValueFieldEditBuilder<FlexibleNodeContent> = {
310
+ public editor: RequiredFieldEditor<FlexibleNodeContent, FlexTreeNode> = {
287
311
  set: (newContent) => {
288
312
  this.valueFieldEditor().set(cursorForMapTreeField([newContent]));
289
313
  },
314
+ attach: (content) => {
315
+ const root = fieldFromNode(content);
316
+ this.valueFieldEditor().attach(root);
317
+ },
290
318
  };
291
319
 
292
- private valueFieldEditor(): ValueFieldEditBuilder<ITreeCursorSynchronous> {
320
+ private valueFieldEditor(): RequiredFieldEditor<
321
+ ITreeCursorSynchronous,
322
+ DetachedRootLocation
323
+ > {
293
324
  const fieldPath = this.getFieldPathForEditing();
294
- const fieldEditor = this.getEditor().valueField(fieldPath);
295
- return fieldEditor;
325
+ return this.getEditor().valueField(fieldPath);
296
326
  }
297
327
 
298
328
  public get content(): FlexTreeUnknownUnboxed {
@@ -301,16 +331,27 @@ export class LazyValueField extends LazyField implements FlexTreeRequiredField {
301
331
  }
302
332
 
303
333
  export class LazyOptionalField extends LazyField implements FlexTreeOptionalField {
304
- public editor: OptionalFieldEditBuilder<ExclusiveMapTree> = {
334
+ public editor: OptionalFieldEditor<MinimalMapTreeNodeView, FlexTreeNode> = {
305
335
  set: (newContent, wasEmpty) => {
306
336
  this.optionalEditor().set(
307
337
  newContent === undefined ? newContent : cursorForMapTreeField([newContent]),
308
338
  wasEmpty,
309
339
  );
310
340
  },
341
+ attach: (content, wasEmpty) => {
342
+ if (content === undefined) {
343
+ this.optionalEditor().clear(wasEmpty);
344
+ } else {
345
+ const root = fieldFromNode(content);
346
+ this.optionalEditor().attach(root, wasEmpty);
347
+ }
348
+ },
349
+ clear: (wasEmpty) => {
350
+ this.optionalEditor().clear(wasEmpty);
351
+ },
311
352
  };
312
353
 
313
- private optionalEditor(): OptionalFieldEditBuilder<ITreeCursorSynchronous> {
354
+ private optionalEditor(): OptionalFieldEditor<ITreeCursorSynchronous, DetachedRootLocation> {
314
355
  const fieldPath = this.getFieldPathForEditing();
315
356
  const fieldEditor = this.getEditor().optionalField(fieldPath);
316
357
  return fieldEditor;