@fluidframework/tree 2.3.1 → 2.4.0-297027

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 (674) hide show
  1. package/api-report/tree.alpha.api.md +77 -38
  2. package/api-report/tree.beta.api.md +50 -30
  3. package/api-report/tree.legacy.alpha.api.md +50 -30
  4. package/api-report/tree.legacy.public.api.md +50 -30
  5. package/api-report/tree.public.api.md +50 -30
  6. package/dist/alpha.d.ts +7 -0
  7. package/dist/beta.d.ts +4 -0
  8. package/dist/core/index.d.ts +1 -1
  9. package/dist/core/index.d.ts.map +1 -1
  10. package/dist/core/index.js +2 -1
  11. package/dist/core/index.js.map +1 -1
  12. package/dist/core/rebase/index.d.ts +1 -1
  13. package/dist/core/rebase/index.d.ts.map +1 -1
  14. package/dist/core/rebase/index.js +2 -1
  15. package/dist/core/rebase/index.js.map +1 -1
  16. package/dist/core/rebase/types.d.ts +1 -0
  17. package/dist/core/rebase/types.d.ts.map +1 -1
  18. package/dist/core/rebase/types.js +8 -1
  19. package/dist/core/rebase/types.js.map +1 -1
  20. package/dist/core/schema-stored/schema.d.ts +7 -0
  21. package/dist/core/schema-stored/schema.d.ts.map +1 -1
  22. package/dist/core/schema-stored/schema.js +9 -0
  23. package/dist/core/schema-stored/schema.js.map +1 -1
  24. package/dist/core/tree/anchorSet.d.ts +1 -2
  25. package/dist/core/tree/anchorSet.d.ts.map +1 -1
  26. package/dist/core/tree/anchorSet.js +2 -2
  27. package/dist/core/tree/anchorSet.js.map +1 -1
  28. package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
  29. package/dist/core/tree/detachedFieldIndex.js +13 -2
  30. package/dist/core/tree/detachedFieldIndex.js.map +1 -1
  31. package/dist/core/tree/detachedFieldIndexTypes.d.ts +1 -1
  32. package/dist/core/tree/detachedFieldIndexTypes.js.map +1 -1
  33. package/dist/feature-libraries/editableTreeBinder.d.ts +3 -230
  34. package/dist/feature-libraries/editableTreeBinder.d.ts.map +1 -1
  35. package/dist/feature-libraries/editableTreeBinder.js +1 -539
  36. package/dist/feature-libraries/editableTreeBinder.js.map +1 -1
  37. package/dist/feature-libraries/flex-tree/context.d.ts +7 -14
  38. package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
  39. package/dist/feature-libraries/flex-tree/context.js +3 -3
  40. package/dist/feature-libraries/flex-tree/context.js.map +1 -1
  41. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +2 -16
  42. package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  43. package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  44. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts +2 -3
  45. package/dist/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  46. package/dist/feature-libraries/flex-tree/lazyEntity.js +1 -2
  47. package/dist/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  48. package/dist/feature-libraries/flex-tree/lazyField.d.ts +10 -15
  49. package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  50. package/dist/feature-libraries/flex-tree/lazyField.js +18 -20
  51. package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
  52. package/dist/feature-libraries/flex-tree/lazyNode.d.ts +4 -5
  53. package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  54. package/dist/feature-libraries/flex-tree/lazyNode.js +13 -23
  55. package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  56. package/dist/feature-libraries/flex-tree/utilities.js +1 -1
  57. package/dist/feature-libraries/flex-tree/utilities.js.map +1 -1
  58. package/dist/feature-libraries/index.d.ts +4 -7
  59. package/dist/feature-libraries/index.d.ts.map +1 -1
  60. package/dist/feature-libraries/index.js +5 -31
  61. package/dist/feature-libraries/index.js.map +1 -1
  62. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +7 -0
  63. package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  64. package/dist/feature-libraries/modular-schema/modularChangeFamily.js +61 -17
  65. package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  66. package/dist/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  67. package/dist/feature-libraries/sequence-field/compose.js +3 -0
  68. package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
  69. package/dist/feature-libraries/sequence-field/formatV1.d.ts +18 -18
  70. package/dist/feature-libraries/sequence-field/formatV2.d.ts +18 -18
  71. package/dist/feature-libraries/sequence-field/formatV3.d.ts +27 -27
  72. package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  73. package/dist/feature-libraries/sequence-field/utils.js +1 -4
  74. package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
  75. package/dist/feature-libraries/typed-schema/flexList.d.ts +1 -46
  76. package/dist/feature-libraries/typed-schema/flexList.d.ts.map +1 -1
  77. package/dist/feature-libraries/typed-schema/flexList.js +1 -13
  78. package/dist/feature-libraries/typed-schema/flexList.js.map +1 -1
  79. package/dist/feature-libraries/typed-schema/index.d.ts +2 -4
  80. package/dist/feature-libraries/typed-schema/index.d.ts.map +1 -1
  81. package/dist/feature-libraries/typed-schema/index.js +1 -19
  82. package/dist/feature-libraries/typed-schema/index.js.map +1 -1
  83. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts +0 -212
  84. package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
  85. package/dist/feature-libraries/typed-schema/typedTreeSchema.js +0 -266
  86. package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
  87. package/dist/index.d.ts +3 -3
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +2 -1
  90. package/dist/index.js.map +1 -1
  91. package/dist/internalTypes.d.ts +1 -1
  92. package/dist/internalTypes.d.ts.map +1 -1
  93. package/dist/internalTypes.js.map +1 -1
  94. package/dist/legacy.d.ts +4 -0
  95. package/dist/packageVersion.d.ts +1 -1
  96. package/dist/packageVersion.d.ts.map +1 -1
  97. package/dist/packageVersion.js +1 -1
  98. package/dist/packageVersion.js.map +1 -1
  99. package/dist/public.d.ts +4 -0
  100. package/dist/shared-tree/checkoutFlexTreeView.d.ts +3 -3
  101. package/dist/shared-tree/checkoutFlexTreeView.d.ts.map +1 -1
  102. package/dist/shared-tree/checkoutFlexTreeView.js +1 -1
  103. package/dist/shared-tree/checkoutFlexTreeView.js.map +1 -1
  104. package/dist/shared-tree/index.d.ts +3 -3
  105. package/dist/shared-tree/index.d.ts.map +1 -1
  106. package/dist/shared-tree/index.js +2 -3
  107. package/dist/shared-tree/index.js.map +1 -1
  108. package/dist/shared-tree/schematizeTree.d.ts +1 -40
  109. package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
  110. package/dist/shared-tree/schematizeTree.js +2 -11
  111. package/dist/shared-tree/schematizeTree.js.map +1 -1
  112. package/dist/shared-tree/schematizingTreeView.d.ts +9 -7
  113. package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
  114. package/dist/shared-tree/schematizingTreeView.js +19 -8
  115. package/dist/shared-tree/schematizingTreeView.js.map +1 -1
  116. package/dist/shared-tree/sharedTree.d.ts +19 -2
  117. package/dist/shared-tree/sharedTree.d.ts.map +1 -1
  118. package/dist/shared-tree/sharedTree.js +10 -2
  119. package/dist/shared-tree/sharedTree.js.map +1 -1
  120. package/dist/shared-tree/treeCheckout.d.ts +71 -41
  121. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  122. package/dist/shared-tree/treeCheckout.js +116 -84
  123. package/dist/shared-tree/treeCheckout.js.map +1 -1
  124. package/dist/shared-tree-core/branch.d.ts +8 -11
  125. package/dist/shared-tree-core/branch.d.ts.map +1 -1
  126. package/dist/shared-tree-core/branch.js +12 -15
  127. package/dist/shared-tree-core/branch.js.map +1 -1
  128. package/dist/simple-tree/api/create.d.ts +1 -1
  129. package/dist/simple-tree/api/create.d.ts.map +1 -1
  130. package/dist/simple-tree/api/create.js +11 -13
  131. package/dist/simple-tree/api/create.js.map +1 -1
  132. package/dist/simple-tree/api/getJsonSchema.d.ts +3 -3
  133. package/dist/simple-tree/api/getJsonSchema.d.ts.map +1 -1
  134. package/dist/simple-tree/api/getJsonSchema.js +1 -1
  135. package/dist/simple-tree/api/getJsonSchema.js.map +1 -1
  136. package/dist/simple-tree/api/getSimpleSchema.d.ts +2 -2
  137. package/dist/simple-tree/api/getSimpleSchema.d.ts.map +1 -1
  138. package/dist/simple-tree/api/getSimpleSchema.js.map +1 -1
  139. package/dist/simple-tree/api/index.d.ts +2 -1
  140. package/dist/simple-tree/api/index.d.ts.map +1 -1
  141. package/dist/simple-tree/api/index.js +3 -1
  142. package/dist/simple-tree/api/index.js.map +1 -1
  143. package/dist/simple-tree/api/jsonSchema.d.ts +13 -14
  144. package/dist/simple-tree/api/jsonSchema.d.ts.map +1 -1
  145. package/dist/simple-tree/api/jsonSchema.js.map +1 -1
  146. package/dist/simple-tree/api/schemaFactory.d.ts +14 -8
  147. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  148. package/dist/simple-tree/api/schemaFactory.js +21 -2
  149. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  150. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +3 -3
  151. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  152. package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  153. package/dist/simple-tree/api/simpleSchema.d.ts +18 -10
  154. package/dist/simple-tree/api/simpleSchema.d.ts.map +1 -1
  155. package/dist/simple-tree/api/simpleSchema.js.map +1 -1
  156. package/dist/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
  157. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js +30 -17
  158. package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  159. package/dist/simple-tree/api/tree.d.ts +16 -6
  160. package/dist/simple-tree/api/tree.d.ts.map +1 -1
  161. package/dist/simple-tree/api/tree.js +4 -4
  162. package/dist/simple-tree/api/tree.js.map +1 -1
  163. package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  164. package/dist/simple-tree/api/treeNodeApi.js +8 -6
  165. package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
  166. package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
  167. package/dist/simple-tree/api/verboseTree.js +6 -10
  168. package/dist/simple-tree/api/verboseTree.js.map +1 -1
  169. package/{lib/feature-libraries/typed-schema → dist/simple-tree/api}/view.d.ts +4 -11
  170. package/dist/simple-tree/api/view.d.ts.map +1 -0
  171. package/dist/{feature-libraries/typed-schema → simple-tree/api}/view.js +9 -9
  172. package/dist/simple-tree/api/view.js.map +1 -0
  173. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts +2 -2
  174. package/dist/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  175. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js +11 -1
  176. package/dist/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  177. package/dist/simple-tree/arrayNode.d.ts +147 -14
  178. package/dist/simple-tree/arrayNode.d.ts.map +1 -1
  179. package/dist/simple-tree/arrayNode.js +32 -20
  180. package/dist/simple-tree/arrayNode.js.map +1 -1
  181. package/dist/simple-tree/core/context.d.ts +55 -0
  182. package/dist/simple-tree/core/context.d.ts.map +1 -0
  183. package/dist/simple-tree/core/context.js +60 -0
  184. package/dist/simple-tree/core/context.js.map +1 -0
  185. package/dist/simple-tree/core/getOrCreateNode.d.ts +15 -0
  186. package/dist/simple-tree/core/getOrCreateNode.d.ts.map +1 -0
  187. package/dist/simple-tree/core/getOrCreateNode.js +36 -0
  188. package/dist/simple-tree/core/getOrCreateNode.js.map +1 -0
  189. package/dist/simple-tree/core/index.d.ts +7 -3
  190. package/dist/simple-tree/core/index.d.ts.map +1 -1
  191. package/dist/simple-tree/core/index.js +16 -7
  192. package/dist/simple-tree/core/index.js.map +1 -1
  193. package/dist/simple-tree/core/schemaCaching.d.ts +5 -13
  194. package/dist/simple-tree/core/schemaCaching.d.ts.map +1 -1
  195. package/dist/simple-tree/core/schemaCaching.js +16 -45
  196. package/dist/simple-tree/core/schemaCaching.js.map +1 -1
  197. package/dist/simple-tree/core/treeNodeKernel.d.ts +29 -7
  198. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  199. package/dist/simple-tree/core/treeNodeKernel.js +94 -58
  200. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  201. package/dist/simple-tree/core/treeNodeSchema.d.ts +24 -0
  202. package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  203. package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
  204. package/dist/simple-tree/core/types.d.ts +0 -5
  205. package/dist/simple-tree/core/types.d.ts.map +1 -1
  206. package/dist/simple-tree/core/types.js.map +1 -1
  207. package/dist/simple-tree/core/unhydratedFlexTree.d.ts +139 -0
  208. package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -0
  209. package/dist/{feature-libraries/flex-map-tree/mapTreeNode.js → simple-tree/core/unhydratedFlexTree.js} +112 -132
  210. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -0
  211. package/dist/simple-tree/{walkSchema.d.ts → core/walkSchema.d.ts} +8 -4
  212. package/dist/simple-tree/core/walkSchema.d.ts.map +1 -0
  213. package/dist/simple-tree/core/walkSchema.js +34 -0
  214. package/dist/simple-tree/core/walkSchema.js.map +1 -0
  215. package/dist/simple-tree/createContext.d.ts +11 -0
  216. package/dist/simple-tree/createContext.d.ts.map +1 -0
  217. package/dist/simple-tree/createContext.js +25 -0
  218. package/dist/simple-tree/createContext.js.map +1 -0
  219. package/dist/simple-tree/index.d.ts +4 -5
  220. package/dist/simple-tree/index.d.ts.map +1 -1
  221. package/dist/simple-tree/index.js +7 -7
  222. package/dist/simple-tree/index.js.map +1 -1
  223. package/dist/simple-tree/leafNodeSchema.d.ts +1 -0
  224. package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
  225. package/dist/simple-tree/leafNodeSchema.js +1 -2
  226. package/dist/simple-tree/leafNodeSchema.js.map +1 -1
  227. package/dist/simple-tree/mapNode.d.ts +4 -4
  228. package/dist/simple-tree/mapNode.d.ts.map +1 -1
  229. package/dist/simple-tree/mapNode.js +9 -5
  230. package/dist/simple-tree/mapNode.js.map +1 -1
  231. package/dist/simple-tree/objectNode.d.ts +8 -8
  232. package/dist/simple-tree/objectNode.d.ts.map +1 -1
  233. package/dist/simple-tree/objectNode.js +33 -14
  234. package/dist/simple-tree/objectNode.js.map +1 -1
  235. package/dist/simple-tree/objectNodeTypes.d.ts +7 -3
  236. package/dist/simple-tree/objectNodeTypes.d.ts.map +1 -1
  237. package/dist/simple-tree/objectNodeTypes.js.map +1 -1
  238. package/dist/simple-tree/proxies.d.ts +1 -2
  239. package/dist/simple-tree/proxies.d.ts.map +1 -1
  240. package/dist/simple-tree/proxies.js +6 -22
  241. package/dist/simple-tree/proxies.js.map +1 -1
  242. package/dist/simple-tree/schemaTypes.d.ts +44 -4
  243. package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
  244. package/dist/simple-tree/schemaTypes.js +10 -0
  245. package/dist/simple-tree/schemaTypes.js.map +1 -1
  246. package/dist/simple-tree/toFlexSchema.d.ts +6 -36
  247. package/dist/simple-tree/toFlexSchema.d.ts.map +1 -1
  248. package/dist/simple-tree/toFlexSchema.js +58 -142
  249. package/dist/simple-tree/toFlexSchema.js.map +1 -1
  250. package/dist/simple-tree/toMapTree.d.ts.map +1 -1
  251. package/dist/simple-tree/toMapTree.js +2 -2
  252. package/dist/simple-tree/toMapTree.js.map +1 -1
  253. package/dist/simple-tree/treeNodeValid.d.ts +13 -5
  254. package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
  255. package/dist/simple-tree/treeNodeValid.js +19 -10
  256. package/dist/simple-tree/treeNodeValid.js.map +1 -1
  257. package/dist/simple-tree/typesUnsafe.d.ts +4 -4
  258. package/dist/simple-tree/typesUnsafe.d.ts.map +1 -1
  259. package/dist/simple-tree/typesUnsafe.js.map +1 -1
  260. package/dist/simple-tree/walkFieldSchema.d.ts +11 -0
  261. package/dist/simple-tree/walkFieldSchema.d.ts.map +1 -0
  262. package/dist/simple-tree/walkFieldSchema.js +17 -0
  263. package/dist/simple-tree/walkFieldSchema.js.map +1 -0
  264. package/dist/util/index.d.ts +1 -1
  265. package/dist/util/index.d.ts.map +1 -1
  266. package/dist/util/index.js.map +1 -1
  267. package/dist/util/typeUtils.d.ts +14 -45
  268. package/dist/util/typeUtils.d.ts.map +1 -1
  269. package/dist/util/typeUtils.js.map +1 -1
  270. package/lib/alpha.d.ts +7 -0
  271. package/lib/beta.d.ts +4 -0
  272. package/lib/core/index.d.ts +1 -1
  273. package/lib/core/index.d.ts.map +1 -1
  274. package/lib/core/index.js +1 -1
  275. package/lib/core/index.js.map +1 -1
  276. package/lib/core/rebase/index.d.ts +1 -1
  277. package/lib/core/rebase/index.d.ts.map +1 -1
  278. package/lib/core/rebase/index.js +1 -1
  279. package/lib/core/rebase/index.js.map +1 -1
  280. package/lib/core/rebase/types.d.ts +1 -0
  281. package/lib/core/rebase/types.d.ts.map +1 -1
  282. package/lib/core/rebase/types.js +6 -0
  283. package/lib/core/rebase/types.js.map +1 -1
  284. package/lib/core/schema-stored/schema.d.ts +7 -0
  285. package/lib/core/schema-stored/schema.d.ts.map +1 -1
  286. package/lib/core/schema-stored/schema.js +9 -0
  287. package/lib/core/schema-stored/schema.js.map +1 -1
  288. package/lib/core/tree/anchorSet.d.ts +1 -2
  289. package/lib/core/tree/anchorSet.d.ts.map +1 -1
  290. package/lib/core/tree/anchorSet.js +2 -2
  291. package/lib/core/tree/anchorSet.js.map +1 -1
  292. package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
  293. package/lib/core/tree/detachedFieldIndex.js +13 -2
  294. package/lib/core/tree/detachedFieldIndex.js.map +1 -1
  295. package/lib/core/tree/detachedFieldIndexTypes.d.ts +1 -1
  296. package/lib/core/tree/detachedFieldIndexTypes.js.map +1 -1
  297. package/lib/feature-libraries/editableTreeBinder.d.ts +3 -230
  298. package/lib/feature-libraries/editableTreeBinder.d.ts.map +1 -1
  299. package/lib/feature-libraries/editableTreeBinder.js +1 -532
  300. package/lib/feature-libraries/editableTreeBinder.js.map +1 -1
  301. package/lib/feature-libraries/flex-tree/context.d.ts +7 -14
  302. package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
  303. package/lib/feature-libraries/flex-tree/context.js +3 -3
  304. package/lib/feature-libraries/flex-tree/context.js.map +1 -1
  305. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +2 -16
  306. package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
  307. package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
  308. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts +2 -3
  309. package/lib/feature-libraries/flex-tree/lazyEntity.d.ts.map +1 -1
  310. package/lib/feature-libraries/flex-tree/lazyEntity.js +1 -2
  311. package/lib/feature-libraries/flex-tree/lazyEntity.js.map +1 -1
  312. package/lib/feature-libraries/flex-tree/lazyField.d.ts +10 -15
  313. package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
  314. package/lib/feature-libraries/flex-tree/lazyField.js +18 -20
  315. package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
  316. package/lib/feature-libraries/flex-tree/lazyNode.d.ts +4 -5
  317. package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
  318. package/lib/feature-libraries/flex-tree/lazyNode.js +13 -23
  319. package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
  320. package/lib/feature-libraries/flex-tree/utilities.js +1 -1
  321. package/lib/feature-libraries/flex-tree/utilities.js.map +1 -1
  322. package/lib/feature-libraries/index.d.ts +4 -7
  323. package/lib/feature-libraries/index.d.ts.map +1 -1
  324. package/lib/feature-libraries/index.js +4 -6
  325. package/lib/feature-libraries/index.js.map +1 -1
  326. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +7 -0
  327. package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
  328. package/lib/feature-libraries/modular-schema/modularChangeFamily.js +62 -18
  329. package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
  330. package/lib/feature-libraries/sequence-field/compose.d.ts.map +1 -1
  331. package/lib/feature-libraries/sequence-field/compose.js +3 -0
  332. package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
  333. package/lib/feature-libraries/sequence-field/formatV1.d.ts +18 -18
  334. package/lib/feature-libraries/sequence-field/formatV2.d.ts +18 -18
  335. package/lib/feature-libraries/sequence-field/formatV3.d.ts +27 -27
  336. package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
  337. package/lib/feature-libraries/sequence-field/utils.js +2 -5
  338. package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
  339. package/lib/feature-libraries/typed-schema/flexList.d.ts +1 -46
  340. package/lib/feature-libraries/typed-schema/flexList.d.ts.map +1 -1
  341. package/lib/feature-libraries/typed-schema/flexList.js +0 -11
  342. package/lib/feature-libraries/typed-schema/flexList.js.map +1 -1
  343. package/lib/feature-libraries/typed-schema/index.d.ts +2 -4
  344. package/lib/feature-libraries/typed-schema/index.d.ts.map +1 -1
  345. package/lib/feature-libraries/typed-schema/index.js +0 -3
  346. package/lib/feature-libraries/typed-schema/index.js.map +1 -1
  347. package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts +0 -212
  348. package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
  349. package/lib/feature-libraries/typed-schema/typedTreeSchema.js +1 -253
  350. package/lib/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
  351. package/lib/index.d.ts +3 -3
  352. package/lib/index.d.ts.map +1 -1
  353. package/lib/index.js +1 -1
  354. package/lib/index.js.map +1 -1
  355. package/lib/internalTypes.d.ts +1 -1
  356. package/lib/internalTypes.d.ts.map +1 -1
  357. package/lib/internalTypes.js.map +1 -1
  358. package/lib/legacy.d.ts +4 -0
  359. package/lib/packageVersion.d.ts +1 -1
  360. package/lib/packageVersion.d.ts.map +1 -1
  361. package/lib/packageVersion.js +1 -1
  362. package/lib/packageVersion.js.map +1 -1
  363. package/lib/public.d.ts +4 -0
  364. package/lib/shared-tree/checkoutFlexTreeView.d.ts +3 -3
  365. package/lib/shared-tree/checkoutFlexTreeView.d.ts.map +1 -1
  366. package/lib/shared-tree/checkoutFlexTreeView.js +1 -1
  367. package/lib/shared-tree/checkoutFlexTreeView.js.map +1 -1
  368. package/lib/shared-tree/index.d.ts +3 -3
  369. package/lib/shared-tree/index.d.ts.map +1 -1
  370. package/lib/shared-tree/index.js +1 -2
  371. package/lib/shared-tree/index.js.map +1 -1
  372. package/lib/shared-tree/schematizeTree.d.ts +1 -40
  373. package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
  374. package/lib/shared-tree/schematizeTree.js +1 -9
  375. package/lib/shared-tree/schematizeTree.js.map +1 -1
  376. package/lib/shared-tree/schematizingTreeView.d.ts +9 -7
  377. package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
  378. package/lib/shared-tree/schematizingTreeView.js +22 -11
  379. package/lib/shared-tree/schematizingTreeView.js.map +1 -1
  380. package/lib/shared-tree/sharedTree.d.ts +19 -2
  381. package/lib/shared-tree/sharedTree.d.ts.map +1 -1
  382. package/lib/shared-tree/sharedTree.js +10 -3
  383. package/lib/shared-tree/sharedTree.js.map +1 -1
  384. package/lib/shared-tree/treeCheckout.d.ts +71 -41
  385. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  386. package/lib/shared-tree/treeCheckout.js +118 -86
  387. package/lib/shared-tree/treeCheckout.js.map +1 -1
  388. package/lib/shared-tree-core/branch.d.ts +8 -11
  389. package/lib/shared-tree-core/branch.d.ts.map +1 -1
  390. package/lib/shared-tree-core/branch.js +12 -15
  391. package/lib/shared-tree-core/branch.js.map +1 -1
  392. package/lib/simple-tree/api/create.d.ts +1 -1
  393. package/lib/simple-tree/api/create.d.ts.map +1 -1
  394. package/lib/simple-tree/api/create.js +14 -16
  395. package/lib/simple-tree/api/create.js.map +1 -1
  396. package/lib/simple-tree/api/getJsonSchema.d.ts +3 -3
  397. package/lib/simple-tree/api/getJsonSchema.d.ts.map +1 -1
  398. package/lib/simple-tree/api/getJsonSchema.js +1 -1
  399. package/lib/simple-tree/api/getJsonSchema.js.map +1 -1
  400. package/lib/simple-tree/api/getSimpleSchema.d.ts +2 -2
  401. package/lib/simple-tree/api/getSimpleSchema.d.ts.map +1 -1
  402. package/lib/simple-tree/api/getSimpleSchema.js.map +1 -1
  403. package/lib/simple-tree/api/index.d.ts +2 -1
  404. package/lib/simple-tree/api/index.d.ts.map +1 -1
  405. package/lib/simple-tree/api/index.js +1 -0
  406. package/lib/simple-tree/api/index.js.map +1 -1
  407. package/lib/simple-tree/api/jsonSchema.d.ts +13 -14
  408. package/lib/simple-tree/api/jsonSchema.d.ts.map +1 -1
  409. package/lib/simple-tree/api/jsonSchema.js.map +1 -1
  410. package/lib/simple-tree/api/schemaFactory.d.ts +14 -8
  411. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  412. package/lib/simple-tree/api/schemaFactory.js +21 -2
  413. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  414. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +3 -3
  415. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  416. package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  417. package/lib/simple-tree/api/simpleSchema.d.ts +18 -10
  418. package/lib/simple-tree/api/simpleSchema.d.ts.map +1 -1
  419. package/lib/simple-tree/api/simpleSchema.js.map +1 -1
  420. package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
  421. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js +31 -18
  422. package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
  423. package/lib/simple-tree/api/tree.d.ts +16 -6
  424. package/lib/simple-tree/api/tree.d.ts.map +1 -1
  425. package/lib/simple-tree/api/tree.js +4 -4
  426. package/lib/simple-tree/api/tree.js.map +1 -1
  427. package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
  428. package/lib/simple-tree/api/treeNodeApi.js +10 -8
  429. package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
  430. package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
  431. package/lib/simple-tree/api/verboseTree.js +6 -10
  432. package/lib/simple-tree/api/verboseTree.js.map +1 -1
  433. package/{dist/feature-libraries/typed-schema → lib/simple-tree/api}/view.d.ts +4 -11
  434. package/lib/simple-tree/api/view.d.ts.map +1 -0
  435. package/lib/{feature-libraries/typed-schema → simple-tree/api}/view.js +9 -9
  436. package/lib/simple-tree/api/view.js.map +1 -0
  437. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts +2 -2
  438. package/lib/simple-tree/api/viewSchemaToSimpleSchema.d.ts.map +1 -1
  439. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js +11 -1
  440. package/lib/simple-tree/api/viewSchemaToSimpleSchema.js.map +1 -1
  441. package/lib/simple-tree/arrayNode.d.ts +147 -14
  442. package/lib/simple-tree/arrayNode.d.ts.map +1 -1
  443. package/lib/simple-tree/arrayNode.js +37 -25
  444. package/lib/simple-tree/arrayNode.js.map +1 -1
  445. package/lib/simple-tree/core/context.d.ts +55 -0
  446. package/lib/simple-tree/core/context.d.ts.map +1 -0
  447. package/lib/simple-tree/core/context.js +55 -0
  448. package/lib/simple-tree/core/context.js.map +1 -0
  449. package/lib/simple-tree/core/getOrCreateNode.d.ts +15 -0
  450. package/lib/simple-tree/core/getOrCreateNode.d.ts.map +1 -0
  451. package/lib/simple-tree/core/getOrCreateNode.js +32 -0
  452. package/lib/simple-tree/core/getOrCreateNode.js.map +1 -0
  453. package/lib/simple-tree/core/index.d.ts +7 -3
  454. package/lib/simple-tree/core/index.d.ts.map +1 -1
  455. package/lib/simple-tree/core/index.js +6 -2
  456. package/lib/simple-tree/core/index.js.map +1 -1
  457. package/lib/simple-tree/core/schemaCaching.d.ts +5 -13
  458. package/lib/simple-tree/core/schemaCaching.d.ts.map +1 -1
  459. package/lib/simple-tree/core/schemaCaching.js +13 -39
  460. package/lib/simple-tree/core/schemaCaching.js.map +1 -1
  461. package/lib/simple-tree/core/treeNodeKernel.d.ts +29 -7
  462. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  463. package/lib/simple-tree/core/treeNodeKernel.js +89 -54
  464. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  465. package/lib/simple-tree/core/treeNodeSchema.d.ts +24 -0
  466. package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
  467. package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
  468. package/lib/simple-tree/core/types.d.ts +0 -5
  469. package/lib/simple-tree/core/types.d.ts.map +1 -1
  470. package/lib/simple-tree/core/types.js.map +1 -1
  471. package/lib/simple-tree/core/unhydratedFlexTree.d.ts +139 -0
  472. package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -0
  473. package/lib/{feature-libraries/flex-map-tree/mapTreeNode.js → simple-tree/core/unhydratedFlexTree.js} +110 -128
  474. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -0
  475. package/lib/simple-tree/{walkSchema.d.ts → core/walkSchema.d.ts} +8 -4
  476. package/lib/simple-tree/core/walkSchema.d.ts.map +1 -0
  477. package/lib/simple-tree/core/walkSchema.js +29 -0
  478. package/lib/simple-tree/core/walkSchema.js.map +1 -0
  479. package/lib/simple-tree/createContext.d.ts +11 -0
  480. package/lib/simple-tree/createContext.d.ts.map +1 -0
  481. package/lib/simple-tree/createContext.js +21 -0
  482. package/lib/simple-tree/createContext.js.map +1 -0
  483. package/lib/simple-tree/index.d.ts +4 -5
  484. package/lib/simple-tree/index.d.ts.map +1 -1
  485. package/lib/simple-tree/index.js +3 -4
  486. package/lib/simple-tree/index.js.map +1 -1
  487. package/lib/simple-tree/leafNodeSchema.d.ts +1 -0
  488. package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
  489. package/lib/simple-tree/leafNodeSchema.js +3 -4
  490. package/lib/simple-tree/leafNodeSchema.js.map +1 -1
  491. package/lib/simple-tree/mapNode.d.ts +4 -4
  492. package/lib/simple-tree/mapNode.d.ts.map +1 -1
  493. package/lib/simple-tree/mapNode.js +12 -8
  494. package/lib/simple-tree/mapNode.js.map +1 -1
  495. package/lib/simple-tree/objectNode.d.ts +8 -8
  496. package/lib/simple-tree/objectNode.d.ts.map +1 -1
  497. package/lib/simple-tree/objectNode.js +36 -17
  498. package/lib/simple-tree/objectNode.js.map +1 -1
  499. package/lib/simple-tree/objectNodeTypes.d.ts +7 -3
  500. package/lib/simple-tree/objectNodeTypes.d.ts.map +1 -1
  501. package/lib/simple-tree/objectNodeTypes.js.map +1 -1
  502. package/lib/simple-tree/proxies.d.ts +1 -2
  503. package/lib/simple-tree/proxies.d.ts.map +1 -1
  504. package/lib/simple-tree/proxies.js +7 -22
  505. package/lib/simple-tree/proxies.js.map +1 -1
  506. package/lib/simple-tree/schemaTypes.d.ts +44 -4
  507. package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
  508. package/lib/simple-tree/schemaTypes.js +10 -0
  509. package/lib/simple-tree/schemaTypes.js.map +1 -1
  510. package/lib/simple-tree/toFlexSchema.d.ts +6 -36
  511. package/lib/simple-tree/toFlexSchema.d.ts.map +1 -1
  512. package/lib/simple-tree/toFlexSchema.js +61 -142
  513. package/lib/simple-tree/toFlexSchema.js.map +1 -1
  514. package/lib/simple-tree/toMapTree.d.ts.map +1 -1
  515. package/lib/simple-tree/toMapTree.js +4 -4
  516. package/lib/simple-tree/toMapTree.js.map +1 -1
  517. package/lib/simple-tree/treeNodeValid.d.ts +13 -5
  518. package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
  519. package/lib/simple-tree/treeNodeValid.js +21 -12
  520. package/lib/simple-tree/treeNodeValid.js.map +1 -1
  521. package/lib/simple-tree/typesUnsafe.d.ts +4 -4
  522. package/lib/simple-tree/typesUnsafe.d.ts.map +1 -1
  523. package/lib/simple-tree/typesUnsafe.js.map +1 -1
  524. package/lib/simple-tree/walkFieldSchema.d.ts +11 -0
  525. package/lib/simple-tree/walkFieldSchema.d.ts.map +1 -0
  526. package/lib/simple-tree/walkFieldSchema.js +13 -0
  527. package/lib/simple-tree/walkFieldSchema.js.map +1 -0
  528. package/lib/util/index.d.ts +1 -1
  529. package/lib/util/index.d.ts.map +1 -1
  530. package/lib/util/index.js.map +1 -1
  531. package/lib/util/typeUtils.d.ts +14 -45
  532. package/lib/util/typeUtils.d.ts.map +1 -1
  533. package/lib/util/typeUtils.js.map +1 -1
  534. package/package.json +41 -22
  535. package/src/core/index.ts +1 -0
  536. package/src/core/rebase/index.ts +1 -0
  537. package/src/core/rebase/types.ts +11 -0
  538. package/src/core/schema-stored/schema.ts +18 -0
  539. package/src/core/tree/anchorSet.ts +3 -4
  540. package/src/core/tree/detachedFieldIndex.ts +14 -3
  541. package/src/core/tree/detachedFieldIndexTypes.ts +1 -1
  542. package/src/feature-libraries/editableTreeBinder.ts +2 -915
  543. package/src/feature-libraries/flex-tree/context.ts +7 -20
  544. package/src/feature-libraries/flex-tree/flexTreeTypes.ts +2 -18
  545. package/src/feature-libraries/flex-tree/lazyEntity.ts +1 -4
  546. package/src/feature-libraries/flex-tree/lazyField.ts +22 -78
  547. package/src/feature-libraries/flex-tree/lazyNode.ts +24 -39
  548. package/src/feature-libraries/flex-tree/utilities.ts +1 -1
  549. package/src/feature-libraries/index.ts +3 -71
  550. package/src/feature-libraries/modular-schema/modularChangeFamily.ts +97 -10
  551. package/src/feature-libraries/sequence-field/compose.ts +3 -0
  552. package/src/feature-libraries/sequence-field/utils.ts +2 -4
  553. package/src/feature-libraries/typed-schema/flexList.ts +3 -84
  554. package/src/feature-libraries/typed-schema/index.ts +1 -33
  555. package/src/feature-libraries/typed-schema/typedTreeSchema.ts +0 -458
  556. package/src/index.ts +7 -0
  557. package/src/internalTypes.ts +0 -1
  558. package/src/packageVersion.ts +1 -1
  559. package/src/shared-tree/checkoutFlexTreeView.ts +3 -3
  560. package/src/shared-tree/index.ts +4 -8
  561. package/src/shared-tree/schematizeTree.ts +2 -56
  562. package/src/shared-tree/schematizingTreeView.ts +38 -15
  563. package/src/shared-tree/sharedTree.ts +36 -8
  564. package/src/shared-tree/treeCheckout.ts +225 -128
  565. package/src/shared-tree-core/branch.ts +15 -26
  566. package/src/simple-tree/api/create.ts +18 -20
  567. package/src/simple-tree/api/getJsonSchema.ts +3 -3
  568. package/src/simple-tree/api/getSimpleSchema.ts +2 -2
  569. package/src/simple-tree/api/index.ts +2 -0
  570. package/src/simple-tree/api/jsonSchema.ts +19 -17
  571. package/src/simple-tree/api/schemaFactory.ts +53 -18
  572. package/src/simple-tree/api/schemaFactoryRecursive.ts +3 -6
  573. package/src/simple-tree/api/simpleSchema.ts +20 -10
  574. package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +40 -19
  575. package/src/simple-tree/api/tree.ts +20 -9
  576. package/src/simple-tree/api/treeNodeApi.ts +12 -10
  577. package/src/simple-tree/api/verboseTree.ts +6 -12
  578. package/src/{feature-libraries/typed-schema → simple-tree/api}/view.ts +9 -22
  579. package/src/simple-tree/api/viewSchemaToSimpleSchema.ts +18 -4
  580. package/src/simple-tree/arrayNode.ts +202 -53
  581. package/src/simple-tree/core/context.ts +78 -0
  582. package/src/simple-tree/core/getOrCreateNode.ts +38 -0
  583. package/src/simple-tree/core/index.ts +11 -7
  584. package/src/simple-tree/core/schemaCaching.ts +13 -50
  585. package/src/simple-tree/core/treeNodeKernel.ts +117 -78
  586. package/src/simple-tree/core/treeNodeSchema.ts +35 -1
  587. package/src/simple-tree/core/types.ts +0 -5
  588. package/src/{feature-libraries/flex-map-tree/mapTreeNode.ts → simple-tree/core/unhydratedFlexTree.ts} +167 -210
  589. package/src/simple-tree/{walkSchema.ts → core/walkSchema.ts} +12 -34
  590. package/src/simple-tree/createContext.ts +24 -0
  591. package/src/simple-tree/index.ts +6 -2
  592. package/src/simple-tree/leafNodeSchema.ts +3 -9
  593. package/src/simple-tree/mapNode.ts +20 -17
  594. package/src/simple-tree/objectNode.ts +63 -38
  595. package/src/simple-tree/objectNodeTypes.ts +8 -5
  596. package/src/simple-tree/proxies.ts +8 -26
  597. package/src/simple-tree/schemaTypes.ts +55 -5
  598. package/src/simple-tree/toFlexSchema.ts +71 -204
  599. package/src/simple-tree/toMapTree.ts +5 -5
  600. package/src/simple-tree/treeNodeValid.ts +28 -22
  601. package/src/simple-tree/typesUnsafe.ts +4 -4
  602. package/src/simple-tree/walkFieldSchema.ts +19 -0
  603. package/src/util/index.ts +1 -5
  604. package/src/util/typeUtils.ts +14 -56
  605. package/dist/feature-libraries/fieldGenerator.d.ts +0 -43
  606. package/dist/feature-libraries/fieldGenerator.d.ts.map +0 -1
  607. package/dist/feature-libraries/fieldGenerator.js +0 -13
  608. package/dist/feature-libraries/fieldGenerator.js.map +0 -1
  609. package/dist/feature-libraries/flex-map-tree/index.d.ts +0 -6
  610. package/dist/feature-libraries/flex-map-tree/index.d.ts.map +0 -1
  611. package/dist/feature-libraries/flex-map-tree/index.js +0 -14
  612. package/dist/feature-libraries/flex-map-tree/index.js.map +0 -1
  613. package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts +0 -157
  614. package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +0 -1
  615. package/dist/feature-libraries/flex-map-tree/mapTreeNode.js.map +0 -1
  616. package/dist/feature-libraries/storedToViewSchema.d.ts +0 -17
  617. package/dist/feature-libraries/storedToViewSchema.d.ts.map +0 -1
  618. package/dist/feature-libraries/storedToViewSchema.js +0 -67
  619. package/dist/feature-libraries/storedToViewSchema.js.map +0 -1
  620. package/dist/feature-libraries/typed-schema/schemaCollection.d.ts +0 -58
  621. package/dist/feature-libraries/typed-schema/schemaCollection.d.ts.map +0 -1
  622. package/dist/feature-libraries/typed-schema/schemaCollection.js +0 -160
  623. package/dist/feature-libraries/typed-schema/schemaCollection.js.map +0 -1
  624. package/dist/feature-libraries/typed-schema/typeUtils.d.ts +0 -15
  625. package/dist/feature-libraries/typed-schema/typeUtils.d.ts.map +0 -1
  626. package/dist/feature-libraries/typed-schema/typeUtils.js +0 -14
  627. package/dist/feature-libraries/typed-schema/typeUtils.js.map +0 -1
  628. package/dist/feature-libraries/typed-schema/view.d.ts.map +0 -1
  629. package/dist/feature-libraries/typed-schema/view.js.map +0 -1
  630. package/dist/simple-tree/getSimpleFieldSchema.d.ts +0 -14
  631. package/dist/simple-tree/getSimpleFieldSchema.d.ts.map +0 -1
  632. package/dist/simple-tree/getSimpleFieldSchema.js +0 -29
  633. package/dist/simple-tree/getSimpleFieldSchema.js.map +0 -1
  634. package/dist/simple-tree/walkSchema.d.ts.map +0 -1
  635. package/dist/simple-tree/walkSchema.js +0 -49
  636. package/dist/simple-tree/walkSchema.js.map +0 -1
  637. package/lib/feature-libraries/fieldGenerator.d.ts +0 -43
  638. package/lib/feature-libraries/fieldGenerator.d.ts.map +0 -1
  639. package/lib/feature-libraries/fieldGenerator.js +0 -12
  640. package/lib/feature-libraries/fieldGenerator.js.map +0 -1
  641. package/lib/feature-libraries/flex-map-tree/index.d.ts +0 -6
  642. package/lib/feature-libraries/flex-map-tree/index.d.ts.map +0 -1
  643. package/lib/feature-libraries/flex-map-tree/index.js +0 -6
  644. package/lib/feature-libraries/flex-map-tree/index.js.map +0 -1
  645. package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts +0 -157
  646. package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +0 -1
  647. package/lib/feature-libraries/flex-map-tree/mapTreeNode.js.map +0 -1
  648. package/lib/feature-libraries/storedToViewSchema.d.ts +0 -17
  649. package/lib/feature-libraries/storedToViewSchema.d.ts.map +0 -1
  650. package/lib/feature-libraries/storedToViewSchema.js +0 -62
  651. package/lib/feature-libraries/storedToViewSchema.js.map +0 -1
  652. package/lib/feature-libraries/typed-schema/schemaCollection.d.ts +0 -58
  653. package/lib/feature-libraries/typed-schema/schemaCollection.d.ts.map +0 -1
  654. package/lib/feature-libraries/typed-schema/schemaCollection.js +0 -153
  655. package/lib/feature-libraries/typed-schema/schemaCollection.js.map +0 -1
  656. package/lib/feature-libraries/typed-schema/typeUtils.d.ts +0 -15
  657. package/lib/feature-libraries/typed-schema/typeUtils.d.ts.map +0 -1
  658. package/lib/feature-libraries/typed-schema/typeUtils.js +0 -10
  659. package/lib/feature-libraries/typed-schema/typeUtils.js.map +0 -1
  660. package/lib/feature-libraries/typed-schema/view.d.ts.map +0 -1
  661. package/lib/feature-libraries/typed-schema/view.js.map +0 -1
  662. package/lib/simple-tree/getSimpleFieldSchema.d.ts +0 -14
  663. package/lib/simple-tree/getSimpleFieldSchema.d.ts.map +0 -1
  664. package/lib/simple-tree/getSimpleFieldSchema.js +0 -25
  665. package/lib/simple-tree/getSimpleFieldSchema.js.map +0 -1
  666. package/lib/simple-tree/walkSchema.d.ts.map +0 -1
  667. package/lib/simple-tree/walkSchema.js +0 -43
  668. package/lib/simple-tree/walkSchema.js.map +0 -1
  669. package/src/feature-libraries/fieldGenerator.ts +0 -47
  670. package/src/feature-libraries/flex-map-tree/index.ts +0 -14
  671. package/src/feature-libraries/storedToViewSchema.ts +0 -100
  672. package/src/feature-libraries/typed-schema/schemaCollection.ts +0 -254
  673. package/src/feature-libraries/typed-schema/typeUtils.ts +0 -29
  674. package/src/simple-tree/getSimpleFieldSchema.ts +0 -36
@@ -0,0 +1,15 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import type { TreeValue } from "../../core/index.js";
6
+ import { type InnerNode } from "./treeNodeKernel.js";
7
+ import type { TreeNode } from "./types.js";
8
+ /**
9
+ * Returns the TreeNode or TreeValue for the provided {@link InnerNode}.
10
+ * This will allocate a new one if needed, and otherwise return one from cache.
11
+ * @remarks
12
+ * This supports both hydrated and unhydrated nodes.
13
+ */
14
+ export declare function getOrCreateNodeFromInnerNode(flexNode: InnerNode): TreeNode | TreeValue;
15
+ //# sourceMappingURL=getOrCreateNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getOrCreateNode.d.ts","sourceRoot":"","sources":["../../../src/simple-tree/core/getOrCreateNode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,KAAK,SAAS,EAAiC,MAAM,qBAAqB,CAAC;AAEpF,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,YAAY,CAAC;AAG7D;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAkBtF"}
@@ -0,0 +1,32 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import { fail } from "../../util/index.js";
6
+ import { mapTreeNodeToProxy, proxySlot } from "./treeNodeKernel.js";
7
+ import { getSimpleNodeSchemaFromInnerNode } from "./schemaCaching.js";
8
+ import { UnhydratedFlexTreeNode } from "./unhydratedFlexTree.js";
9
+ /**
10
+ * Returns the TreeNode or TreeValue for the provided {@link InnerNode}.
11
+ * This will allocate a new one if needed, and otherwise return one from cache.
12
+ * @remarks
13
+ * This supports both hydrated and unhydrated nodes.
14
+ */
15
+ export function getOrCreateNodeFromInnerNode(flexNode) {
16
+ const cached = flexNode instanceof UnhydratedFlexTreeNode
17
+ ? mapTreeNodeToProxy.get(flexNode)
18
+ : flexNode.anchorNode.slots.get(proxySlot);
19
+ if (cached !== undefined) {
20
+ return cached;
21
+ }
22
+ const classSchema = getSimpleNodeSchemaFromInnerNode(flexNode) ?? fail("Missing schema");
23
+ const node = flexNode;
24
+ // eslint-disable-next-line unicorn/prefer-ternary
25
+ if (typeof classSchema === "function") {
26
+ return new classSchema(node);
27
+ }
28
+ else {
29
+ return classSchema.create(flexNode);
30
+ }
31
+ }
32
+ //# sourceMappingURL=getOrCreateNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getOrCreateNode.js","sourceRoot":"","sources":["../../../src/simple-tree/core/getOrCreateNode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAkB,kBAAkB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAAC,QAAmB;IAC/D,MAAM,MAAM,GACX,QAAQ,YAAY,sBAAsB;QACzC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAE7C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC;IACf,CAAC;IAED,MAAM,WAAW,GAAG,gCAAgC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACzF,MAAM,IAAI,GAAG,QAAuC,CAAC;IACrD,kDAAkD;IAClD,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE,CAAC;QACvC,OAAO,IAAI,WAAW,CAAC,IAAI,CAAa,CAAC;IAC1C,CAAC;SAAM,CAAC;QACP,OAAQ,WAAyD,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpF,CAAC;AACF,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { TreeValue } from \"../../core/index.js\";\nimport type { FlexTreeNode } from \"../../feature-libraries/index.js\";\nimport { fail } from \"../../util/index.js\";\nimport { type InnerNode, mapTreeNodeToProxy, proxySlot } from \"./treeNodeKernel.js\";\nimport { getSimpleNodeSchemaFromInnerNode } from \"./schemaCaching.js\";\nimport type { TreeNode, InternalTreeNode } from \"./types.js\";\nimport { UnhydratedFlexTreeNode } from \"./unhydratedFlexTree.js\";\n\n/**\n * Returns the TreeNode or TreeValue for the provided {@link InnerNode}.\n * This will allocate a new one if needed, and otherwise return one from cache.\n * @remarks\n * This supports both hydrated and unhydrated nodes.\n */\nexport function getOrCreateNodeFromInnerNode(flexNode: InnerNode): TreeNode | TreeValue {\n\tconst cached =\n\t\tflexNode instanceof UnhydratedFlexTreeNode\n\t\t\t? mapTreeNodeToProxy.get(flexNode)\n\t\t\t: flexNode.anchorNode.slots.get(proxySlot);\n\n\tif (cached !== undefined) {\n\t\treturn cached;\n\t}\n\n\tconst classSchema = getSimpleNodeSchemaFromInnerNode(flexNode) ?? fail(\"Missing schema\");\n\tconst node = flexNode as unknown as InternalTreeNode;\n\t// eslint-disable-next-line unicorn/prefer-ternary\n\tif (typeof classSchema === \"function\") {\n\t\treturn new classSchema(node) as TreeNode;\n\t} else {\n\t\treturn (classSchema as { create(data: FlexTreeNode): TreeValue }).create(flexNode);\n\t}\n}\n"]}
@@ -2,9 +2,13 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- export { isTreeNode, TreeNodeKernel, getKernel, tryGetTreeNodeSchema, type InnerNode, tryGetCachedTreeNode, tryDisposeTreeNode, } from "./treeNodeKernel.js";
5
+ export { isTreeNode, TreeNodeKernel, getKernel, tryGetTreeNodeSchema, type InnerNode, tryDisposeTreeNode, tryGetTreeNodeFromMapNode, } from "./treeNodeKernel.js";
6
6
  export { type WithType, typeNameSymbol, typeSchemaSymbol } from "./withType.js";
7
7
  export { type TreeChangeEvents, TreeNode, type Unhydrated, inPrototypeChain, type InternalTreeNode, privateToken, } from "./types.js";
8
- export { type TreeNodeSchema, NodeKind, type TreeNodeSchemaClass, type TreeNodeSchemaNonClass, type TreeNodeSchemaCore, } from "./treeNodeSchema.js";
9
- export { getSimpleNodeSchema, setFlexSchemaFromClassSchema, tryGetSimpleNodeSchema, cachedFlexSchemaFromClassSchema, getSimpleNodeSchemaFromNode, } from "./schemaCaching.js";
8
+ export { type TreeNodeSchema, NodeKind, type TreeNodeSchemaClass, type TreeNodeSchemaNonClass, type TreeNodeSchemaCore, type TreeNodeSchemaBoth, } from "./treeNodeSchema.js";
9
+ export { getSimpleNodeSchemaFromInnerNode } from "./schemaCaching.js";
10
+ export { walkAllowedTypes, type SchemaVisitor } from "./walkSchema.js";
11
+ export { Context, HydratedContext, SimpleContextSlot } from "./context.js";
12
+ export { getOrCreateNodeFromInnerNode } from "./getOrCreateNode.js";
13
+ export { UnhydratedFlexTreeNode, UnhydratedTreeSequenceField, tryUnhydratedFlexTreeNode, UnhydratedContext, } from "./unhydratedFlexTree.js";
10
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/simple-tree/core/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,UAAU,EACV,cAAc,EACd,SAAS,EACT,oBAAoB,EACpB,KAAK,SAAS,EACd,oBAAoB,EACpB,kBAAkB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EACN,KAAK,gBAAgB,EACrB,QAAQ,EACR,KAAK,UAAU,EACf,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,YAAY,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,KAAK,cAAc,EACnB,QAAQ,EACR,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,mBAAmB,EACnB,4BAA4B,EAC5B,sBAAsB,EACtB,+BAA+B,EAC/B,2BAA2B,GAC3B,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/simple-tree/core/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,UAAU,EACV,cAAc,EACd,SAAS,EACT,oBAAoB,EACpB,KAAK,SAAS,EACd,kBAAkB,EAClB,yBAAyB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EACN,KAAK,gBAAgB,EACrB,QAAQ,EACR,KAAK,UAAU,EACf,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,YAAY,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,KAAK,cAAc,EACnB,QAAQ,EACR,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EACN,sBAAsB,EACtB,2BAA2B,EAC3B,yBAAyB,EACzB,iBAAiB,GACjB,MAAM,yBAAyB,CAAC"}
@@ -2,9 +2,13 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- export { isTreeNode, TreeNodeKernel, getKernel, tryGetTreeNodeSchema, tryGetCachedTreeNode, tryDisposeTreeNode, } from "./treeNodeKernel.js";
5
+ export { isTreeNode, TreeNodeKernel, getKernel, tryGetTreeNodeSchema, tryDisposeTreeNode, tryGetTreeNodeFromMapNode, } from "./treeNodeKernel.js";
6
6
  export { typeNameSymbol, typeSchemaSymbol } from "./withType.js";
7
7
  export { TreeNode, inPrototypeChain, privateToken, } from "./types.js";
8
8
  export { NodeKind, } from "./treeNodeSchema.js";
9
- export { getSimpleNodeSchema, setFlexSchemaFromClassSchema, tryGetSimpleNodeSchema, cachedFlexSchemaFromClassSchema, getSimpleNodeSchemaFromNode, } from "./schemaCaching.js";
9
+ export { getSimpleNodeSchemaFromInnerNode } from "./schemaCaching.js";
10
+ export { walkAllowedTypes } from "./walkSchema.js";
11
+ export { Context, HydratedContext, SimpleContextSlot } from "./context.js";
12
+ export { getOrCreateNodeFromInnerNode } from "./getOrCreateNode.js";
13
+ export { UnhydratedFlexTreeNode, UnhydratedTreeSequenceField, tryUnhydratedFlexTreeNode, UnhydratedContext, } from "./unhydratedFlexTree.js";
10
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/simple-tree/core/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,UAAU,EACV,cAAc,EACd,SAAS,EACT,oBAAoB,EAEpB,oBAAoB,EACpB,kBAAkB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAiB,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAEN,QAAQ,EAER,gBAAgB,EAEhB,YAAY,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAEN,QAAQ,GAIR,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,mBAAmB,EACnB,4BAA4B,EAC5B,sBAAsB,EACtB,+BAA+B,EAC/B,2BAA2B,GAC3B,MAAM,oBAAoB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport {\n\tisTreeNode,\n\tTreeNodeKernel,\n\tgetKernel,\n\ttryGetTreeNodeSchema,\n\ttype InnerNode,\n\ttryGetCachedTreeNode,\n\ttryDisposeTreeNode,\n} from \"./treeNodeKernel.js\";\nexport { type WithType, typeNameSymbol, typeSchemaSymbol } from \"./withType.js\";\nexport {\n\ttype TreeChangeEvents,\n\tTreeNode,\n\ttype Unhydrated,\n\tinPrototypeChain,\n\ttype InternalTreeNode,\n\tprivateToken,\n} from \"./types.js\";\nexport {\n\ttype TreeNodeSchema,\n\tNodeKind,\n\ttype TreeNodeSchemaClass,\n\ttype TreeNodeSchemaNonClass,\n\ttype TreeNodeSchemaCore,\n} from \"./treeNodeSchema.js\";\nexport {\n\tgetSimpleNodeSchema,\n\tsetFlexSchemaFromClassSchema,\n\ttryGetSimpleNodeSchema,\n\tcachedFlexSchemaFromClassSchema,\n\tgetSimpleNodeSchemaFromNode,\n} from \"./schemaCaching.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/simple-tree/core/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,UAAU,EACV,cAAc,EACd,SAAS,EACT,oBAAoB,EAEpB,kBAAkB,EAClB,yBAAyB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAiB,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAEN,QAAQ,EAER,gBAAgB,EAEhB,YAAY,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAEN,QAAQ,GAKR,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAsB,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EACN,sBAAsB,EACtB,2BAA2B,EAC3B,yBAAyB,EACzB,iBAAiB,GACjB,MAAM,yBAAyB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport {\n\tisTreeNode,\n\tTreeNodeKernel,\n\tgetKernel,\n\ttryGetTreeNodeSchema,\n\ttype InnerNode,\n\ttryDisposeTreeNode,\n\ttryGetTreeNodeFromMapNode,\n} from \"./treeNodeKernel.js\";\nexport { type WithType, typeNameSymbol, typeSchemaSymbol } from \"./withType.js\";\nexport {\n\ttype TreeChangeEvents,\n\tTreeNode,\n\ttype Unhydrated,\n\tinPrototypeChain,\n\ttype InternalTreeNode,\n\tprivateToken,\n} from \"./types.js\";\nexport {\n\ttype TreeNodeSchema,\n\tNodeKind,\n\ttype TreeNodeSchemaClass,\n\ttype TreeNodeSchemaNonClass,\n\ttype TreeNodeSchemaCore,\n\ttype TreeNodeSchemaBoth,\n} from \"./treeNodeSchema.js\";\nexport { getSimpleNodeSchemaFromInnerNode } from \"./schemaCaching.js\";\nexport { walkAllowedTypes, type SchemaVisitor } from \"./walkSchema.js\";\nexport { Context, HydratedContext, SimpleContextSlot } from \"./context.js\";\nexport { getOrCreateNodeFromInnerNode } from \"./getOrCreateNode.js\";\nexport {\n\tUnhydratedFlexTreeNode,\n\tUnhydratedTreeSequenceField,\n\ttryUnhydratedFlexTreeNode,\n\tUnhydratedContext,\n} from \"./unhydratedFlexTree.js\";\n"]}
@@ -2,23 +2,15 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import type { FlexTreeNodeSchema, TreeNodeSchemaBase } from "../../feature-libraries/index.js";
6
5
  import type { TreeNodeSchema } from "./treeNodeSchema.js";
7
6
  import type { InnerNode } from "./treeNodeKernel.js";
8
- export declare function cachedFlexSchemaFromClassSchema(schema: TreeNodeSchema): TreeNodeSchemaBase | undefined;
9
- export declare function setFlexSchemaFromClassSchema(simple: TreeNodeSchema, flex: TreeNodeSchemaBase): void;
7
+ import { type Context } from "./context.js";
10
8
  /**
11
- * Gets the {@link TreeNodeSchema} cached on the provided {@link FlexTreeNodeSchema | flexSchema}.
12
- * Returns `undefined` if no cached value is found.
13
- */
14
- export declare function tryGetSimpleNodeSchema(flexSchema: FlexTreeNodeSchema): TreeNodeSchema | undefined;
15
- /**
16
- * Gets the {@link TreeNodeSchema} cached on the provided {@link FlexTreeNodeSchema | flexSchema}.
17
- * Fails if no cached value is found.
9
+ * Gets the {@link TreeNodeSchema} for the {@link InnerNode}.
18
10
  */
19
- export declare function getSimpleNodeSchema(flexSchema: FlexTreeNodeSchema): TreeNodeSchema;
11
+ export declare function getSimpleNodeSchemaFromInnerNode(innerNode: InnerNode): TreeNodeSchema;
20
12
  /**
21
- * Gets the {@link TreeNodeSchema} for the {@link InnerNode}.
13
+ * Gets the {@link Context} for the {@link InnerNode}.
22
14
  */
23
- export declare function getSimpleNodeSchemaFromNode(innerNode: InnerNode): TreeNodeSchema;
15
+ export declare function getSimpleContextFromInnerNode(innerNode: InnerNode): Context;
24
16
  //# sourceMappingURL=schemaCaching.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemaCaching.d.ts","sourceRoot":"","sources":["../../../src/simple-tree/core/schemaCaching.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAG/F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAarD,wBAAgB,+BAA+B,CAC9C,MAAM,EAAE,cAAc,GACpB,kBAAkB,GAAG,SAAS,CAGhC;AAED,wBAAgB,4BAA4B,CAC3C,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,kBAAkB,GACtB,IAAI,CAON;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,UAAU,EAAE,kBAAkB,GAC5B,cAAc,GAAG,SAAS,CAK5B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,kBAAkB,GAAG,cAAc,CAElF;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,SAAS,GAAG,cAAc,CAIhF"}
1
+ {"version":3,"file":"schemaCaching.d.ts","sourceRoot":"","sources":["../../../src/simple-tree/core/schemaCaching.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAqB,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAE/D;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,SAAS,EAAE,SAAS,GAAG,cAAc,CAGrF;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAS3E"}
@@ -4,50 +4,24 @@
4
4
  */
5
5
  import { assert } from "@fluidframework/core-utils/internal";
6
6
  import { fail } from "../../util/index.js";
7
+ import { UnhydratedFlexTreeNode } from "./unhydratedFlexTree.js";
8
+ import { SimpleContextSlot } from "./context.js";
7
9
  /**
8
- * A symbol for storing FlexTreeSchema on TreeNodeSchema.
9
- * Eagerly set on leaves, and lazily set for other cases.
10
- */
11
- const flexSchemaSymbol = Symbol(`flexSchema`);
12
- /**
13
- * A symbol for storing TreeNodeSchema on FlexTreeNode's schema.
10
+ * Gets the {@link TreeNodeSchema} for the {@link InnerNode}.
14
11
  */
15
- const simpleNodeSchemaSymbol = Symbol(`simpleNodeSchema`);
16
- export function cachedFlexSchemaFromClassSchema(schema) {
17
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
- return schema[flexSchemaSymbol];
19
- }
20
- export function setFlexSchemaFromClassSchema(simple, flex) {
21
- assert(!(flexSchemaSymbol in simple), 0x91f /* simple schema already marked */);
22
- assert(!(simpleNodeSchemaSymbol in flex), 0x920 /* flex schema already marked */);
23
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
- simple[flexSchemaSymbol] = flex;
25
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
- flex[simpleNodeSchemaSymbol] = simple;
12
+ export function getSimpleNodeSchemaFromInnerNode(innerNode) {
13
+ const context = getSimpleContextFromInnerNode(innerNode);
14
+ return context.schema.get(innerNode.schema) ?? fail("missing schema from context");
27
15
  }
28
16
  /**
29
- * Gets the {@link TreeNodeSchema} cached on the provided {@link FlexTreeNodeSchema | flexSchema}.
30
- * Returns `undefined` if no cached value is found.
17
+ * Gets the {@link Context} for the {@link InnerNode}.
31
18
  */
32
- export function tryGetSimpleNodeSchema(flexSchema) {
33
- if (simpleNodeSchemaSymbol in flexSchema) {
34
- return flexSchema[simpleNodeSchemaSymbol];
19
+ export function getSimpleContextFromInnerNode(innerNode) {
20
+ if (innerNode instanceof UnhydratedFlexTreeNode) {
21
+ return innerNode.simpleContext;
35
22
  }
36
- return undefined;
37
- }
38
- /**
39
- * Gets the {@link TreeNodeSchema} cached on the provided {@link FlexTreeNodeSchema | flexSchema}.
40
- * Fails if no cached value is found.
41
- */
42
- export function getSimpleNodeSchema(flexSchema) {
43
- return tryGetSimpleNodeSchema(flexSchema) ?? fail("missing simple schema");
44
- }
45
- /**
46
- * Gets the {@link TreeNodeSchema} for the {@link InnerNode}.
47
- */
48
- export function getSimpleNodeSchemaFromNode(innerNode) {
49
- // TODO: to make this work without depending on flex tree schema, a new caching/lookup mechanism will be required, likely leveraging the FlexTreeContext:
50
- // A SimpleTreeContext could be defined and associated with the FlexTreeContext, and used to look up simple-tree schema by identifier.
51
- return getSimpleNodeSchema(innerNode.flexSchema);
23
+ const context = innerNode.anchorNode.anchorSet.slots.get(SimpleContextSlot);
24
+ assert(context !== undefined, "missing simple tree context");
25
+ return context;
52
26
  }
53
27
  //# sourceMappingURL=schemaCaching.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemaCaching.js","sourceRoot":"","sources":["../../../src/simple-tree/core/schemaCaching.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAG7D,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAK3C;;;GAGG;AACH,MAAM,gBAAgB,GAAkB,MAAM,CAAC,YAAY,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,sBAAsB,GAAkB,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAEzE,MAAM,UAAU,+BAA+B,CAC9C,MAAsB;IAEtB,8DAA8D;IAC9D,OAAQ,MAAc,CAAC,gBAAgB,CAAmC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC3C,MAAsB,EACtB,IAAwB;IAExB,MAAM,CAAC,CAAC,CAAC,gBAAgB,IAAI,MAAM,CAAC,EAAE,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAChF,MAAM,CAAC,CAAC,CAAC,sBAAsB,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAClF,8DAA8D;IAC7D,MAAc,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IACzC,8DAA8D;IAC7D,IAAY,CAAC,sBAAsB,CAAC,GAAG,MAAM,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACrC,UAA8B;IAE9B,IAAI,sBAAsB,IAAI,UAAU,EAAE,CAAC;QAC1C,OAAO,UAAU,CAAC,sBAAsB,CAAmB,CAAC;IAC7D,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAA8B;IACjE,OAAO,sBAAsB,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,uBAAuB,CAAC,CAAC;AAC5E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,SAAoB;IAC/D,yJAAyJ;IACzJ,sIAAsI;IACtI,OAAO,mBAAmB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAClD,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert } from \"@fluidframework/core-utils/internal\";\n\nimport type { FlexTreeNodeSchema, TreeNodeSchemaBase } from \"../../feature-libraries/index.js\";\nimport { fail } from \"../../util/index.js\";\n\nimport type { TreeNodeSchema } from \"./treeNodeSchema.js\";\nimport type { InnerNode } from \"./treeNodeKernel.js\";\n\n/**\n * A symbol for storing FlexTreeSchema on TreeNodeSchema.\n * Eagerly set on leaves, and lazily set for other cases.\n */\nconst flexSchemaSymbol: unique symbol = Symbol(`flexSchema`);\n\n/**\n * A symbol for storing TreeNodeSchema on FlexTreeNode's schema.\n */\nconst simpleNodeSchemaSymbol: unique symbol = Symbol(`simpleNodeSchema`);\n\nexport function cachedFlexSchemaFromClassSchema(\n\tschema: TreeNodeSchema,\n): TreeNodeSchemaBase | undefined {\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\treturn (schema as any)[flexSchemaSymbol] as TreeNodeSchemaBase | undefined;\n}\n\nexport function setFlexSchemaFromClassSchema(\n\tsimple: TreeNodeSchema,\n\tflex: TreeNodeSchemaBase,\n): void {\n\tassert(!(flexSchemaSymbol in simple), 0x91f /* simple schema already marked */);\n\tassert(!(simpleNodeSchemaSymbol in flex), 0x920 /* flex schema already marked */);\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t(simple as any)[flexSchemaSymbol] = flex;\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t(flex as any)[simpleNodeSchemaSymbol] = simple;\n}\n\n/**\n * Gets the {@link TreeNodeSchema} cached on the provided {@link FlexTreeNodeSchema | flexSchema}.\n * Returns `undefined` if no cached value is found.\n */\nexport function tryGetSimpleNodeSchema(\n\tflexSchema: FlexTreeNodeSchema,\n): TreeNodeSchema | undefined {\n\tif (simpleNodeSchemaSymbol in flexSchema) {\n\t\treturn flexSchema[simpleNodeSchemaSymbol] as TreeNodeSchema;\n\t}\n\treturn undefined;\n}\n\n/**\n * Gets the {@link TreeNodeSchema} cached on the provided {@link FlexTreeNodeSchema | flexSchema}.\n * Fails if no cached value is found.\n */\nexport function getSimpleNodeSchema(flexSchema: FlexTreeNodeSchema): TreeNodeSchema {\n\treturn tryGetSimpleNodeSchema(flexSchema) ?? fail(\"missing simple schema\");\n}\n\n/**\n * Gets the {@link TreeNodeSchema} for the {@link InnerNode}.\n */\nexport function getSimpleNodeSchemaFromNode(innerNode: InnerNode): TreeNodeSchema {\n\t// TODO: to make this work without depending on flex tree schema, a new caching/lookup mechanism will be required, likely leveraging the FlexTreeContext:\n\t// A SimpleTreeContext could be defined and associated with the FlexTreeContext, and used to look up simple-tree schema by identifier.\n\treturn getSimpleNodeSchema(innerNode.flexSchema);\n}\n"]}
1
+ {"version":3,"file":"schemaCaching.js","sourceRoot":"","sources":["../../../src/simple-tree/core/schemaCaching.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAE7D,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAI3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAgB,MAAM,cAAc,CAAC;AAE/D;;GAEG;AACH,MAAM,UAAU,gCAAgC,CAAC,SAAoB;IACpE,MAAM,OAAO,GAAY,6BAA6B,CAAC,SAAS,CAAC,CAAC;IAClE,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,6BAA6B,CAAC,CAAC;AACpF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAAC,SAAoB;IACjE,IAAI,SAAS,YAAY,sBAAsB,EAAE,CAAC;QACjD,OAAO,SAAS,CAAC,aAAa,CAAC;IAChC,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC5E,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,6BAA6B,CAAC,CAAC;IAE7D,OAAO,OAAO,CAAC;AAChB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert } from \"@fluidframework/core-utils/internal\";\n\nimport { fail } from \"../../util/index.js\";\n\nimport type { TreeNodeSchema } from \"./treeNodeSchema.js\";\nimport type { InnerNode } from \"./treeNodeKernel.js\";\nimport { UnhydratedFlexTreeNode } from \"./unhydratedFlexTree.js\";\nimport { SimpleContextSlot, type Context } from \"./context.js\";\n\n/**\n * Gets the {@link TreeNodeSchema} for the {@link InnerNode}.\n */\nexport function getSimpleNodeSchemaFromInnerNode(innerNode: InnerNode): TreeNodeSchema {\n\tconst context: Context = getSimpleContextFromInnerNode(innerNode);\n\treturn context.schema.get(innerNode.schema) ?? fail(\"missing schema from context\");\n}\n\n/**\n * Gets the {@link Context} for the {@link InnerNode}.\n */\nexport function getSimpleContextFromInnerNode(innerNode: InnerNode): Context {\n\tif (innerNode instanceof UnhydratedFlexTreeNode) {\n\t\treturn innerNode.simpleContext;\n\t}\n\n\tconst context = innerNode.anchorNode.anchorSet.slots.get(SimpleContextSlot);\n\tassert(context !== undefined, \"missing simple tree context\");\n\n\treturn context;\n}\n"]}
@@ -5,8 +5,10 @@
5
5
  import { type Listenable, type Off } from "../../events/index.js";
6
6
  import type { TreeNode, Unhydrated } from "./types.js";
7
7
  import { type AnchorEvents, type AnchorNode, type AnchorSet, type UpPath } from "../../core/index.js";
8
- import { TreeStatus, type FlexTreeNode, type MapTreeNode } from "../../feature-libraries/index.js";
8
+ import { TreeStatus, type FlexTreeNode } from "../../feature-libraries/index.js";
9
9
  import type { TreeNodeSchema } from "./treeNodeSchema.js";
10
+ import { type Context } from "./context.js";
11
+ import { UnhydratedFlexTreeNode } from "./unhydratedFlexTree.js";
10
12
  export declare function getKernel(node: TreeNode): TreeNodeKernel;
11
13
  /**
12
14
  * Detects if the given 'candidate' is a TreeNode.
@@ -42,6 +44,7 @@ export declare class TreeNodeKernel implements Listenable<KernelEvents> {
42
44
  readonly node: TreeNode;
43
45
  readonly schema: TreeNodeSchema;
44
46
  private innerNode;
47
+ private readonly initialContext;
45
48
  private disposed;
46
49
  /**
47
50
  * Generation number which is incremented any time we have an edit on the node.
@@ -57,20 +60,21 @@ export declare class TreeNodeKernel implements Listenable<KernelEvents> {
57
60
  /**
58
61
  * Create a TreeNodeKernel which can be looked up with {@link getKernel}.
59
62
  *
63
+ * @param initialContext - context from when this node was originally crated.
60
64
  * @param innerNode - When unhydrated/raw or marinated the MapTreeNode. FlexTreeNode when cooked.
61
65
  * @remarks
62
66
  * Exactly one kernel per TreeNode should be created.
63
67
  */
64
- constructor(node: TreeNode, schema: TreeNodeSchema, innerNode: InnerNode);
68
+ constructor(node: TreeNode, schema: TreeNodeSchema, innerNode: InnerNode, initialContext: Context);
69
+ get context(): Context;
65
70
  /**
66
71
  * Transition from {@link Unhydrated} to hydrated.
67
72
  * Bi-directionally associates the given hydrated TreeNode to the given anchor node.
68
73
  * @remarks
69
74
  * Happens at most once for any given node.
70
- * Cleans up mappings to {@link MapTreeNode} - it is assumed that they are no longer needed once the proxy has an anchor node.
75
+ * Cleans up mappings to {@link UnhydratedFlexTreeNode} - it is assumed that they are no longer needed once the proxy has an anchor node.
71
76
  */
72
77
  hydrate(anchorNode: AnchorNode): void;
73
- isHydrated(): boolean;
74
78
  getStatus(): TreeStatus;
75
79
  on<K extends keyof KernelEvents>(eventName: K, listener: KernelEvents[K]): Off;
76
80
  dispose(): void;
@@ -118,11 +122,29 @@ type KernelEvents = Pick<AnchorEvents, (typeof kernelEvents)[number]>;
118
122
  * TODO: The inconsistent handling of "marinated" cases should be cleaned up.
119
123
  * Maybe getOrCreateInnerNode should cook marinated nodes so they have a proper InnerNode?
120
124
  */
121
- export type InnerNode = FlexTreeNode | MapTreeNode;
125
+ export type InnerNode = FlexTreeNode | UnhydratedFlexTreeNode;
122
126
  /**
123
- * Retrieves the proxy associated with the given flex node via {@link setInnerNode}, if any.
127
+ * {@inheritdoc proxyToMapTreeNode}
124
128
  */
125
- export declare function tryGetCachedTreeNode(flexNode: InnerNode): TreeNode | undefined;
129
+ export declare const mapTreeNodeToProxy: WeakMap<UnhydratedFlexTreeNode, TreeNode>;
130
+ /**
131
+ * An anchor slot which associates an anchor with its corresponding TreeNode, if there is one.
132
+ * @remarks
133
+ * For this to work, we have to require that there is at most a single view using a given AnchorSet.
134
+ * FlexTree already has this assumption, and we also assume there is a single simple-tree per FlexTree, so this is valid.
135
+ */
136
+ export declare const proxySlot: import("../../core/index.js").AnchorSlot<TreeNode>;
137
+ /**
138
+ * Retrieves the node associated with the given MapTreeNode node if any.
139
+ */
140
+ export declare function tryGetTreeNodeFromMapNode(flexNode: UnhydratedFlexTreeNode): TreeNode | undefined;
126
141
  export declare function tryDisposeTreeNode(anchorNode: AnchorNode): void;
142
+ /**
143
+ * Lookup a TreeNodeSchema from a Hydrated FlexTreeNode.
144
+ * @privateRemarks
145
+ * This provides a way to access simple tree schema from the flex tree without depending on {@link FlexTreeSchema} which is in the process of being removed.
146
+ * This is currently limited to hydrated nodes: this limitation will have to be fixed before {@link FlexTreeSchema} can be fully removed.
147
+ */
148
+ export declare function getTreeNodeSchemaFromHydratedFlexNode(flexNode: FlexTreeNode): TreeNodeSchema;
127
149
  export {};
128
150
  //# sourceMappingURL=treeNodeKernel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"treeNodeKernel.d.ts","sourceRoot":"","sources":["../../../src/simple-tree/core/treeNodeKernel.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAIN,KAAK,UAAU,EACf,KAAK,GAAG,EACR,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAEN,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,MAAM,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAQN,UAAU,EAEV,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAQ1D,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,CAIxD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,IAAI,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAE3F;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,cAAc,CAG/E;AAED;;;;;GAKG;AACH,qBAAa,cAAe,YAAW,UAAU,CAAC,YAAY,CAAC;;aAyD7C,IAAI,EAAE,QAAQ;aACd,MAAM,EAAE,cAAc;IACtC,OAAO,CAAC,SAAS;IA1DlB,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;;;;;;;OASG;IACI,gBAAgB,EAAE,MAAM,CAAK;IAoCpC;;;;;;OAMG;gBAEc,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,cAAc,EAC9B,SAAS,EAAE,SAAS;IAkB7B;;;;;;OAMG;IACI,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAuCrC,UAAU,IAAI,OAAO;IAKrB,SAAS,IAAI,UAAU;IAoBvB,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG;IAI9E,OAAO,IAAI,IAAI;IAQtB;;;;;;;OAOG;IACI,oBAAoB,CAAC,UAAU,UAAQ,GAAG,SAAS;IAiC1D;;;;;;;;;;OAUG;IACI,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU;IAiBhE;;;;;;OAMG;IACI,eAAe,IAAI,SAAS,GAAG,SAAS;CAgB/C;AAOD,QAAA,MAAM,YAAY,oEAAqE,CAAC;AAExF,KAAK,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAEtE;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,WAAW,CAAC;AAenD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAO9E;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAM/D"}
1
+ {"version":3,"file":"treeNodeKernel.d.ts","sourceRoot":"","sources":["../../../src/simple-tree/core/treeNodeKernel.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAiB,KAAK,UAAU,EAAE,KAAK,GAAG,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAEN,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,MAAM,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAON,UAAU,EAEV,KAAK,YAAY,EACjB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAK1D,OAAO,EAAqB,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAIjE,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,CAIxD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,IAAI,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAE3F;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,cAAc,CAG/E;AAqBD;;;;;GAKG;AACH,qBAAa,cAAe,YAAW,UAAU,CAAC,YAAY,CAAC;;aAoC7C,IAAI,EAAE,QAAQ;aACd,MAAM,EAAE,cAAc;IACtC,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAtChC,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;;;;;;;OASG;IACI,gBAAgB,EAAE,MAAM,CAAK;IAcpC;;;;;;;OAOG;gBAEc,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,cAAc,EAC9B,SAAS,EAAE,SAAS,EACX,cAAc,EAAE,OAAO;IAuCzC,IAAW,OAAO,IAAI,OAAO,CAS5B;IAED;;;;;;OAMG;IACI,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAqCrC,SAAS,IAAI,UAAU;IAoBvB,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG;IAS9E,OAAO,IAAI,IAAI;IAUtB;;;;;;;OAOG;IACI,oBAAoB,CAAC,UAAU,UAAQ,GAAG,SAAS;IAgC1D;;;;;;;;;;OAUG;IACI,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU;IAiBhE;;;;;;OAMG;IACI,eAAe,IAAI,SAAS,GAAG,SAAS;CAe/C;AAOD,QAAA,MAAM,YAAY,oEAAqE,CAAC;AAExF,KAAK,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAEtE;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,sBAAsB,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,kBAAkB,2CAAkD,CAAC;AAElF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,oDAAyB,CAAC;AAEhD;;GAEG;AACH,wBAAgB,yBAAyB,CACxC,QAAQ,EAAE,sBAAsB,GAC9B,QAAQ,GAAG,SAAS,CAEtB;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAM/D;AAED;;;;;GAKG;AACH,wBAAgB,qCAAqC,CAAC,QAAQ,EAAE,YAAY,GAAG,cAAc,CAW5F"}
@@ -13,15 +13,17 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
13
13
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
14
14
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
15
15
  };
16
- var _TreeNodeKernel_instances, _TreeNodeKernel_hydrated, _TreeNodeKernel_preHydrationEvents, _TreeNodeKernel_events_get;
17
- import { assert } from "@fluidframework/core-utils/internal";
18
- import { createEmitter, } from "../../events/index.js";
16
+ var _TreeNodeKernel_hydrationState, _TreeNodeKernel_unhydratedEvents;
17
+ import { assert, Lazy } from "@fluidframework/core-utils/internal";
18
+ import { createEmitter } from "../../events/index.js";
19
19
  import { anchorSlot, } from "../../core/index.js";
20
- import { assertFlexTreeEntityNotFreed, ContextSlot, flexTreeSlot, isFlexTreeNode, isFreedSymbol, isMapTreeNode, LazyEntity, TreeStatus, treeStatusFromAnchorCache, } from "../../feature-libraries/index.js";
20
+ import { assertFlexTreeEntityNotFreed, ContextSlot, flexTreeSlot, isFlexTreeNode, isFreedSymbol, LazyEntity, TreeStatus, treeStatusFromAnchorCache, } from "../../feature-libraries/index.js";
21
21
  import { fail } from "../../util/index.js";
22
22
  // TODO: decide how to deal with dependencies on flex-tree implementation.
23
23
  // eslint-disable-next-line import/no-internal-modules
24
24
  import { makeTree } from "../../feature-libraries/flex-tree/lazyNode.js";
25
+ import { SimpleContextSlot } from "./context.js";
26
+ import { UnhydratedFlexTreeNode } from "./unhydratedFlexTree.js";
25
27
  const treeNodeToKernel = new WeakMap();
26
28
  export function getKernel(node) {
27
29
  const kernel = treeNodeToKernel.get(node);
@@ -56,6 +58,10 @@ export function tryGetTreeNodeSchema(value) {
56
58
  const kernel = treeNodeToKernel.get(value);
57
59
  return kernel?.schema;
58
60
  }
61
+ /** True if and only if the given {@link HydrationState} is post-hydration */
62
+ function isHydrated(state) {
63
+ return typeof state === "object";
64
+ }
59
65
  /**
60
66
  * Contains state and an internal API for managing {@link TreeNode}s.
61
67
  * @remarks All {@link TreeNode}s have an associated kernel object.
@@ -66,15 +72,16 @@ export class TreeNodeKernel {
66
72
  /**
67
73
  * Create a TreeNodeKernel which can be looked up with {@link getKernel}.
68
74
  *
75
+ * @param initialContext - context from when this node was originally crated.
69
76
  * @param innerNode - When unhydrated/raw or marinated the MapTreeNode. FlexTreeNode when cooked.
70
77
  * @remarks
71
78
  * Exactly one kernel per TreeNode should be created.
72
79
  */
73
- constructor(node, schema, innerNode) {
74
- _TreeNodeKernel_instances.add(this);
80
+ constructor(node, schema, innerNode, initialContext) {
75
81
  this.node = node;
76
82
  this.schema = schema;
77
83
  this.innerNode = innerNode;
84
+ this.initialContext = initialContext;
78
85
  this.disposed = false;
79
86
  /**
80
87
  * Generation number which is incremented any time we have an edit on the node.
@@ -87,18 +94,38 @@ export class TreeNodeKernel {
87
94
  * but they only way to do that is add a separate public accessor and make it private, which was deemed not worth the boilerplate, runtime overhead and bundle size.
88
95
  */
89
96
  this.generationNumber = 0;
90
- _TreeNodeKernel_hydrated.set(this, void 0);
97
+ _TreeNodeKernel_hydrationState.set(this, () => { });
91
98
  /**
92
99
  * Events registered before hydration.
93
100
  * @remarks
94
- * As an optimization these are allocated lazily as they are usually unused.
101
+ * Since these are usually not used, they are allocated lazily as an optimization.
102
+ * The laziness also avoids extra forwarding overhead for events from this kernel's anchor node and also avoids registering for events that are unneeded.
103
+ * This means optimizations like skipping processing data in subtrees where no subtreeChanged events are subscribed to would be able to work,
104
+ * since the kernel does not unconditionally subscribe to those events (like a design which simply forwards all events would).
95
105
  */
96
- _TreeNodeKernel_preHydrationEvents.set(this, void 0);
106
+ _TreeNodeKernel_unhydratedEvents.set(this, new Lazy((createEmitter)));
97
107
  assert(!treeNodeToKernel.has(node), 0xa1a /* only one kernel per node can be made */);
98
108
  treeNodeToKernel.set(node, this);
99
- if (isMapTreeNode(innerNode)) {
109
+ if (innerNode instanceof UnhydratedFlexTreeNode) {
100
110
  // Unhydrated case
101
111
  mapTreeNodeToProxy.set(innerNode, node);
112
+ // Register for change events from the unhydrated flex node.
113
+ // These will be fired if the unhydrated node is edited, and will also be forwarded later to the hydrated node.
114
+ __classPrivateFieldSet(this, _TreeNodeKernel_hydrationState, innerNode.events.on("childrenChangedAfterBatch", ({ changedFields }) => {
115
+ __classPrivateFieldGet(this, _TreeNodeKernel_unhydratedEvents, "f").value.emit("childrenChangedAfterBatch", {
116
+ changedFields,
117
+ });
118
+ let n = innerNode;
119
+ while (n !== undefined) {
120
+ const treeNode = mapTreeNodeToProxy.get(n);
121
+ if (treeNode !== undefined) {
122
+ const kernel = getKernel(treeNode);
123
+ __classPrivateFieldGet(kernel, _TreeNodeKernel_unhydratedEvents, "f").value.emit("subtreeChangedAfterBatch");
124
+ }
125
+ // This cast is safe because the parent (if it exists) of an unhydrated flex node is always another unhydrated flex node.
126
+ n = n.parentField.parent.parent;
127
+ }
128
+ }), "f");
102
129
  }
103
130
  else {
104
131
  // Hydrated case
@@ -106,23 +133,31 @@ export class TreeNodeKernel {
106
133
  this.hydrate(innerNode.anchorNode);
107
134
  }
108
135
  }
136
+ get context() {
137
+ if (isHydrated(__classPrivateFieldGet(this, _TreeNodeKernel_hydrationState, "f"))) {
138
+ // This can't be cached on this.#hydrated during hydration since initial tree is hydrated before the context is cached on the anchorSet.
139
+ return (__classPrivateFieldGet(this, _TreeNodeKernel_hydrationState, "f")?.anchorNode.anchorSet.slots.get(SimpleContextSlot) ??
140
+ fail("missing simple-tree context"));
141
+ }
142
+ return this.initialContext;
143
+ }
109
144
  /**
110
145
  * Transition from {@link Unhydrated} to hydrated.
111
146
  * Bi-directionally associates the given hydrated TreeNode to the given anchor node.
112
147
  * @remarks
113
148
  * Happens at most once for any given node.
114
- * Cleans up mappings to {@link MapTreeNode} - it is assumed that they are no longer needed once the proxy has an anchor node.
149
+ * Cleans up mappings to {@link UnhydratedFlexTreeNode} - it is assumed that they are no longer needed once the proxy has an anchor node.
115
150
  */
116
151
  hydrate(anchorNode) {
117
152
  assert(!this.disposed, 0xa2a /* cannot hydrate a disposed node */);
118
- assert(__classPrivateFieldGet(this, _TreeNodeKernel_hydrated, "f") === undefined, 0xa2b /* hydration should only happen once */);
153
+ assert(!isHydrated(__classPrivateFieldGet(this, _TreeNodeKernel_hydrationState, "f")), 0xa2b /* hydration should only happen once */);
119
154
  // If the this node is raw and thus has a MapTreeNode, forget it:
120
- if (isMapTreeNode(this.innerNode)) {
155
+ if (this.innerNode instanceof UnhydratedFlexTreeNode) {
121
156
  mapTreeNodeToProxy.delete(this.innerNode);
122
157
  }
123
158
  // However, it's fine for an anchor node to rotate through different proxies when the content at that place in the tree is replaced.
124
159
  anchorNode.slots.set(proxySlot, this.node);
125
- __classPrivateFieldSet(this, _TreeNodeKernel_hydrated, {
160
+ __classPrivateFieldSet(this, _TreeNodeKernel_hydrationState, {
126
161
  anchorNode,
127
162
  offAnchorNode: new Set([
128
163
  anchorNode.on("afterDestroy", () => this.dispose()),
@@ -133,45 +168,48 @@ export class TreeNodeKernel {
133
168
  ]),
134
169
  }, "f");
135
170
  // If needed, register forwarding emitters for events from before hydration
136
- if (__classPrivateFieldGet(this, _TreeNodeKernel_preHydrationEvents, "f") !== undefined) {
171
+ if (__classPrivateFieldGet(this, _TreeNodeKernel_unhydratedEvents, "f").evaluated) {
172
+ const events = __classPrivateFieldGet(this, _TreeNodeKernel_unhydratedEvents, "f").value;
137
173
  for (const eventName of kernelEvents) {
138
- if (__classPrivateFieldGet(this, _TreeNodeKernel_preHydrationEvents, "f").hasListeners(eventName)) {
139
- __classPrivateFieldGet(this, _TreeNodeKernel_hydrated, "f").offAnchorNode.add(
174
+ if (events.hasListeners(eventName)) {
175
+ __classPrivateFieldGet(this, _TreeNodeKernel_hydrationState, "f").offAnchorNode.add(
140
176
  // Argument is forwarded between matching events, so the type should be correct.
141
177
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
142
- anchorNode.on(eventName, (arg) => __classPrivateFieldGet(this, _TreeNodeKernel_preHydrationEvents, "f")?.emit(eventName, arg)));
178
+ anchorNode.on(eventName, (arg) => events.emit(eventName, arg)));
143
179
  }
144
180
  }
145
181
  }
146
182
  }
147
- isHydrated() {
148
- assert(!this.disposed, 0xa2c /* cannot use a disposed node */);
149
- return __classPrivateFieldGet(this, _TreeNodeKernel_hydrated, "f") !== undefined;
150
- }
151
183
  getStatus() {
152
184
  if (this.disposed) {
153
185
  return TreeStatus.Deleted;
154
186
  }
155
- if (__classPrivateFieldGet(this, _TreeNodeKernel_hydrated, "f")?.anchorNode === undefined) {
187
+ if (!isHydrated(__classPrivateFieldGet(this, _TreeNodeKernel_hydrationState, "f"))) {
156
188
  return TreeStatus.New;
157
189
  }
158
190
  // TODO: Replace this check with the proper check against the cursor state when the cursor becomes part of the kernel
159
- const flex = __classPrivateFieldGet(this, _TreeNodeKernel_hydrated, "f").anchorNode.slots.get(flexTreeSlot);
191
+ const flex = __classPrivateFieldGet(this, _TreeNodeKernel_hydrationState, "f").anchorNode.slots.get(flexTreeSlot);
160
192
  if (flex !== undefined) {
161
193
  assert(flex instanceof LazyEntity, 0x9b4 /* Unexpected flex node implementation */);
162
194
  if (flex[isFreedSymbol]()) {
163
195
  return TreeStatus.Deleted;
164
196
  }
165
197
  }
166
- return treeStatusFromAnchorCache(__classPrivateFieldGet(this, _TreeNodeKernel_hydrated, "f").anchorNode);
198
+ return treeStatusFromAnchorCache(__classPrivateFieldGet(this, _TreeNodeKernel_hydrationState, "f").anchorNode);
167
199
  }
168
200
  on(eventName, listener) {
169
- return __classPrivateFieldGet(this, _TreeNodeKernel_instances, "a", _TreeNodeKernel_events_get).on(eventName, listener);
201
+ // Retrieve the correct events object based on whether this node is pre or post hydration.
202
+ const events = isHydrated(__classPrivateFieldGet(this, _TreeNodeKernel_hydrationState, "f"))
203
+ ? __classPrivateFieldGet(this, _TreeNodeKernel_hydrationState, "f").anchorNode
204
+ : __classPrivateFieldGet(this, _TreeNodeKernel_unhydratedEvents, "f").value;
205
+ return events.on(eventName, listener);
170
206
  }
171
207
  dispose() {
172
208
  this.disposed = true;
173
- for (const off of __classPrivateFieldGet(this, _TreeNodeKernel_hydrated, "f")?.offAnchorNode ?? []) {
174
- off();
209
+ if (isHydrated(__classPrivateFieldGet(this, _TreeNodeKernel_hydrationState, "f"))) {
210
+ for (const off of __classPrivateFieldGet(this, _TreeNodeKernel_hydrationState, "f").offAnchorNode) {
211
+ off();
212
+ }
175
213
  }
176
214
  // TODO: go to the context and remove myself from withAnchors
177
215
  }
@@ -184,16 +222,15 @@ export class TreeNodeKernel {
184
222
  * Note that for "marinated" nodes, this FlexTreeNode exists and returns it: it does not return the MapTreeNode which is the current InnerNode.
185
223
  */
186
224
  getOrCreateInnerNode(allowFreed = false) {
187
- if (!isMapTreeNode(this.innerNode)) {
225
+ if (!(this.innerNode instanceof UnhydratedFlexTreeNode)) {
188
226
  // Cooked case
189
227
  return this.innerNode;
190
228
  }
191
- if (__classPrivateFieldGet(this, _TreeNodeKernel_hydrated, "f") === undefined) {
192
- // Unhydrated case
229
+ if (!isHydrated(__classPrivateFieldGet(this, _TreeNodeKernel_hydrationState, "f"))) {
193
230
  return this.innerNode;
194
231
  }
195
232
  // Marinated case -> cooked
196
- const anchorNode = __classPrivateFieldGet(this, _TreeNodeKernel_hydrated, "f").anchorNode;
233
+ const anchorNode = __classPrivateFieldGet(this, _TreeNodeKernel_hydrationState, "f").anchorNode;
197
234
  // The proxy is bound to an anchor node, but it may or may not have an actual flex node yet
198
235
  const flexNode = anchorNode.slots.get(flexTreeSlot);
199
236
  if (flexNode !== undefined) {
@@ -252,25 +289,16 @@ export class TreeNodeKernel {
252
289
  // Cooked case
253
290
  return this.innerNode;
254
291
  }
255
- if (__classPrivateFieldGet(this, _TreeNodeKernel_hydrated, "f") === undefined) {
256
- // Unhydrated case
292
+ if (!isHydrated(__classPrivateFieldGet(this, _TreeNodeKernel_hydrationState, "f"))) {
257
293
  return this.innerNode;
258
294
  }
259
295
  // Marinated case -> cooked
260
- const anchorNode = __classPrivateFieldGet(this, _TreeNodeKernel_hydrated, "f").anchorNode;
296
+ const anchorNode = __classPrivateFieldGet(this, _TreeNodeKernel_hydrationState, "f").anchorNode;
261
297
  // The proxy is bound to an anchor node, but it may or may not have an actual flex node yet
262
298
  return anchorNode.slots.get(flexTreeSlot);
263
299
  }
264
300
  }
265
- _TreeNodeKernel_hydrated = new WeakMap(), _TreeNodeKernel_preHydrationEvents = new WeakMap(), _TreeNodeKernel_instances = new WeakSet(), _TreeNodeKernel_events_get = function _TreeNodeKernel_events_get() {
266
- if (__classPrivateFieldGet(this, _TreeNodeKernel_hydrated, "f") === undefined) {
267
- __classPrivateFieldSet(this, _TreeNodeKernel_preHydrationEvents, __classPrivateFieldGet(this, _TreeNodeKernel_preHydrationEvents, "f") ?? createEmitter(), "f");
268
- return __classPrivateFieldGet(this, _TreeNodeKernel_preHydrationEvents, "f");
269
- }
270
- else {
271
- return __classPrivateFieldGet(this, _TreeNodeKernel_hydrated, "f").anchorNode;
272
- }
273
- };
301
+ _TreeNodeKernel_hydrationState = new WeakMap(), _TreeNodeKernel_unhydratedEvents = new WeakMap();
274
302
  /**
275
303
  * Used by {@link anchorProxy} as an optimization to ensure that only one anchor is remembered at a time for a given anchor node
276
304
  */
@@ -279,24 +307,19 @@ const kernelEvents = ["childrenChangedAfterBatch", "subtreeChangedAfterBatch"];
279
307
  /**
280
308
  * {@inheritdoc proxyToMapTreeNode}
281
309
  */
282
- const mapTreeNodeToProxy = new WeakMap();
310
+ export const mapTreeNodeToProxy = new WeakMap();
283
311
  /**
284
312
  * An anchor slot which associates an anchor with its corresponding TreeNode, if there is one.
285
313
  * @remarks
286
314
  * For this to work, we have to require that there is at most a single view using a given AnchorSet.
287
315
  * FlexTree already has this assumption, and we also assume there is a single simple-tree per FlexTree, so this is valid.
288
316
  */
289
- const proxySlot = anchorSlot();
317
+ export const proxySlot = anchorSlot();
290
318
  /**
291
- * Retrieves the proxy associated with the given flex node via {@link setInnerNode}, if any.
319
+ * Retrieves the node associated with the given MapTreeNode node if any.
292
320
  */
293
- export function tryGetCachedTreeNode(flexNode) {
294
- if (isMapTreeNode(flexNode)) {
295
- // Unhydrated case
296
- return mapTreeNodeToProxy.get(flexNode);
297
- }
298
- // Hydrated case
299
- return flexNode.anchorNode.slots.get(proxySlot);
321
+ export function tryGetTreeNodeFromMapNode(flexNode) {
322
+ return mapTreeNodeToProxy.get(flexNode);
300
323
  }
301
324
  export function tryDisposeTreeNode(anchorNode) {
302
325
  const treeNode = anchorNode.slots.get(proxySlot);
@@ -305,4 +328,16 @@ export function tryDisposeTreeNode(anchorNode) {
305
328
  kernel.dispose();
306
329
  }
307
330
  }
331
+ /**
332
+ * Lookup a TreeNodeSchema from a Hydrated FlexTreeNode.
333
+ * @privateRemarks
334
+ * This provides a way to access simple tree schema from the flex tree without depending on {@link FlexTreeSchema} which is in the process of being removed.
335
+ * This is currently limited to hydrated nodes: this limitation will have to be fixed before {@link FlexTreeSchema} can be fully removed.
336
+ */
337
+ export function getTreeNodeSchemaFromHydratedFlexNode(flexNode) {
338
+ assert(flexNode.context.isHydrated(), "getTreeNodeSchemaFromHydratedFlexNode only allows hydrated flex tree nodes");
339
+ const context = flexNode.anchorNode.anchorSet.slots.get(SimpleContextSlot) ??
340
+ fail("Missing SimpleContextSlot");
341
+ return context.schema.get(flexNode.schema) ?? fail("Missing schema");
342
+ }
308
343
  //# sourceMappingURL=treeNodeKernel.js.map