@microsoft/live-share-react 2.0.0-internal.5 → 2.0.0-internal.6

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 (380) hide show
  1. package/.nycrc.json +9 -9
  2. package/LICENSE +64 -61
  3. package/README.md +173 -168
  4. package/bin/cjs/index.d.ts +7 -0
  5. package/bin/cjs/index.d.ts.map +1 -0
  6. package/bin/cjs/index.js +23 -0
  7. package/bin/cjs/index.js.map +1 -0
  8. package/bin/cjs/interfaces/LiveInterfaceExtensions.d.ts.map +1 -0
  9. package/bin/cjs/interfaces/LiveInterfaceExtensions.js +7 -0
  10. package/bin/cjs/interfaces/LiveInterfaceExtensions.js.map +1 -0
  11. package/bin/cjs/interfaces/index.d.ts +2 -0
  12. package/bin/cjs/interfaces/index.d.ts.map +1 -0
  13. package/bin/cjs/interfaces/index.js +18 -0
  14. package/bin/cjs/interfaces/index.js.map +1 -0
  15. package/bin/cjs/internal/errors.d.ts.map +1 -0
  16. package/bin/cjs/internal/errors.js +48 -0
  17. package/bin/cjs/internal/errors.js.map +1 -0
  18. package/bin/cjs/internal/index.d.ts +3 -0
  19. package/bin/cjs/internal/index.d.ts.map +1 -0
  20. package/bin/cjs/internal/index.js +19 -0
  21. package/bin/cjs/internal/index.js.map +1 -0
  22. package/bin/{internal → cjs/internal}/type-guards.d.ts +1 -1
  23. package/bin/cjs/internal/type-guards.d.ts.map +1 -0
  24. package/bin/cjs/internal/type-guards.js +24 -0
  25. package/bin/cjs/internal/type-guards.js.map +1 -0
  26. package/bin/cjs/live-hooks/index.d.ts +8 -0
  27. package/bin/cjs/live-hooks/index.d.ts.map +1 -0
  28. package/bin/cjs/live-hooks/index.js +24 -0
  29. package/bin/cjs/live-hooks/index.js.map +1 -0
  30. package/bin/cjs/live-hooks/useLiveCanvas.d.ts +80 -0
  31. package/bin/cjs/live-hooks/useLiveCanvas.d.ts.map +1 -0
  32. package/bin/cjs/live-hooks/useLiveCanvas.js +244 -0
  33. package/bin/cjs/live-hooks/useLiveCanvas.js.map +1 -0
  34. package/bin/{live-hooks → cjs/live-hooks}/useLiveEvent.d.ts +37 -1
  35. package/bin/cjs/live-hooks/useLiveEvent.d.ts.map +1 -0
  36. package/bin/cjs/live-hooks/useLiveEvent.js +150 -0
  37. package/bin/cjs/live-hooks/useLiveEvent.js.map +1 -0
  38. package/bin/cjs/live-hooks/useLiveFollowMode.d.ts +163 -0
  39. package/bin/cjs/live-hooks/useLiveFollowMode.d.ts.map +1 -0
  40. package/bin/cjs/live-hooks/useLiveFollowMode.js +360 -0
  41. package/bin/cjs/live-hooks/useLiveFollowMode.js.map +1 -0
  42. package/bin/cjs/live-hooks/useLivePresence.d.ts +76 -0
  43. package/bin/cjs/live-hooks/useLivePresence.d.ts.map +1 -0
  44. package/bin/cjs/live-hooks/useLivePresence.js +166 -0
  45. package/bin/cjs/live-hooks/useLivePresence.js.map +1 -0
  46. package/bin/{live-hooks → cjs/live-hooks}/useLiveState.d.ts +46 -1
  47. package/bin/cjs/live-hooks/useLiveState.d.ts.map +1 -0
  48. package/bin/cjs/live-hooks/useLiveState.js +130 -0
  49. package/bin/cjs/live-hooks/useLiveState.js.map +1 -0
  50. package/bin/{live-hooks → cjs/live-hooks}/useLiveTimer.d.ts +56 -1
  51. package/bin/cjs/live-hooks/useLiveTimer.d.ts.map +1 -0
  52. package/bin/cjs/live-hooks/useLiveTimer.js +233 -0
  53. package/bin/cjs/live-hooks/useLiveTimer.js.map +1 -0
  54. package/bin/cjs/live-hooks/useMediaSynchronizer.d.ts +86 -0
  55. package/bin/cjs/live-hooks/useMediaSynchronizer.d.ts.map +1 -0
  56. package/bin/cjs/live-hooks/useMediaSynchronizer.js +301 -0
  57. package/bin/cjs/live-hooks/useMediaSynchronizer.js.map +1 -0
  58. package/bin/cjs/package.json +1 -0
  59. package/bin/{providers → cjs/providers}/AzureProvider.d.ts +9 -9
  60. package/bin/cjs/providers/AzureProvider.d.ts.map +1 -0
  61. package/bin/cjs/providers/AzureProvider.js +127 -0
  62. package/bin/cjs/providers/AzureProvider.js.map +1 -0
  63. package/bin/{providers → cjs/providers}/LiveShareProvider.d.ts +106 -4
  64. package/bin/cjs/providers/LiveShareProvider.d.ts.map +1 -0
  65. package/bin/cjs/providers/LiveShareProvider.js +205 -0
  66. package/bin/cjs/providers/LiveShareProvider.js.map +1 -0
  67. package/bin/cjs/providers/index.d.ts +3 -0
  68. package/bin/cjs/providers/index.d.ts.map +1 -0
  69. package/bin/cjs/providers/index.js +19 -0
  70. package/bin/cjs/providers/index.js.map +1 -0
  71. package/bin/cjs/shared-hooks/index.d.ts +7 -0
  72. package/bin/cjs/shared-hooks/index.d.ts.map +1 -0
  73. package/bin/cjs/shared-hooks/index.js +23 -0
  74. package/bin/cjs/shared-hooks/index.js.map +1 -0
  75. package/bin/cjs/shared-hooks/internals/tree-node-constants.d.ts +3 -0
  76. package/bin/cjs/shared-hooks/internals/tree-node-constants.d.ts.map +1 -0
  77. package/bin/cjs/shared-hooks/internals/tree-node-constants.js +6 -0
  78. package/bin/cjs/shared-hooks/internals/tree-node-constants.js.map +1 -0
  79. package/bin/cjs/shared-hooks/internals/tree-node-types.d.ts +10 -0
  80. package/bin/cjs/shared-hooks/internals/tree-node-types.d.ts.map +1 -0
  81. package/bin/cjs/shared-hooks/internals/tree-node-types.js +23 -0
  82. package/bin/cjs/shared-hooks/internals/tree-node-types.js.map +1 -0
  83. package/bin/cjs/shared-hooks/internals/tree-node-utils.d.ts +33 -0
  84. package/bin/cjs/shared-hooks/internals/tree-node-utils.d.ts.map +1 -0
  85. package/bin/cjs/shared-hooks/internals/tree-node-utils.js +193 -0
  86. package/bin/cjs/shared-hooks/internals/tree-node-utils.js.map +1 -0
  87. package/bin/{shared-hooks → cjs/shared-hooks}/useDynamicDDS.d.ts +4 -4
  88. package/bin/cjs/shared-hooks/useDynamicDDS.d.ts.map +1 -0
  89. package/bin/cjs/shared-hooks/useDynamicDDS.js +87 -0
  90. package/bin/cjs/shared-hooks/useDynamicDDS.js.map +1 -0
  91. package/bin/{shared-hooks → cjs/shared-hooks}/useSharedMap.d.ts +4 -2
  92. package/bin/cjs/shared-hooks/useSharedMap.d.ts.map +1 -0
  93. package/bin/cjs/shared-hooks/useSharedMap.js +134 -0
  94. package/bin/cjs/shared-hooks/useSharedMap.js.map +1 -0
  95. package/bin/{shared-hooks → cjs/shared-hooks}/useSharedState.d.ts +1 -1
  96. package/bin/cjs/shared-hooks/useSharedState.d.ts.map +1 -0
  97. package/bin/cjs/shared-hooks/useSharedState.js +80 -0
  98. package/bin/cjs/shared-hooks/useSharedState.js.map +1 -0
  99. package/bin/{shared-hooks → cjs/shared-hooks}/useSharedStateRegistry.d.ts +1 -1
  100. package/bin/cjs/shared-hooks/useSharedStateRegistry.d.ts.map +1 -0
  101. package/bin/cjs/shared-hooks/useSharedStateRegistry.js +120 -0
  102. package/bin/cjs/shared-hooks/useSharedStateRegistry.js.map +1 -0
  103. package/bin/cjs/shared-hooks/useSharedTree.d.ts +57 -0
  104. package/bin/cjs/shared-hooks/useSharedTree.d.ts.map +1 -0
  105. package/bin/cjs/shared-hooks/useSharedTree.js +123 -0
  106. package/bin/cjs/shared-hooks/useSharedTree.js.map +1 -0
  107. package/bin/cjs/shared-hooks/useTreeNode.d.ts +96 -0
  108. package/bin/cjs/shared-hooks/useTreeNode.d.ts.map +1 -0
  109. package/bin/cjs/shared-hooks/useTreeNode.js +135 -0
  110. package/bin/cjs/shared-hooks/useTreeNode.js.map +1 -0
  111. package/bin/{types → cjs/types}/ActionTypes.d.ts +7 -7
  112. package/bin/cjs/types/ActionTypes.d.ts.map +1 -0
  113. package/bin/cjs/types/ActionTypes.js +7 -0
  114. package/bin/cjs/types/ActionTypes.js.map +1 -0
  115. package/bin/cjs/types/PropTypes.d.ts +56 -0
  116. package/bin/cjs/types/PropTypes.d.ts.map +1 -0
  117. package/bin/cjs/types/PropTypes.js +7 -0
  118. package/bin/cjs/types/PropTypes.js.map +1 -0
  119. package/bin/{types → cjs/types}/ResultTypes.d.ts +46 -18
  120. package/bin/cjs/types/ResultTypes.d.ts.map +1 -0
  121. package/bin/cjs/types/ResultTypes.js +7 -0
  122. package/bin/cjs/types/ResultTypes.js.map +1 -0
  123. package/bin/cjs/types/index.d.ts +4 -0
  124. package/bin/cjs/types/index.d.ts.map +1 -0
  125. package/bin/cjs/types/index.js +20 -0
  126. package/bin/cjs/types/index.js.map +1 -0
  127. package/bin/cjs/utils/index.d.ts +2 -0
  128. package/bin/cjs/utils/index.d.ts.map +1 -0
  129. package/bin/cjs/utils/index.js +18 -0
  130. package/bin/cjs/utils/index.js.map +1 -0
  131. package/bin/cjs/utils/type-check.d.ts.map +1 -0
  132. package/bin/cjs/utils/type-check.js +62 -0
  133. package/bin/cjs/utils/type-check.js.map +1 -0
  134. package/bin/esm/index.d.ts +7 -0
  135. package/bin/esm/index.d.ts.map +1 -0
  136. package/bin/esm/index.js +7 -0
  137. package/bin/esm/index.js.map +1 -0
  138. package/bin/esm/interfaces/LiveInterfaceExtensions.d.ts +26 -0
  139. package/bin/esm/interfaces/LiveInterfaceExtensions.d.ts.map +1 -0
  140. package/bin/esm/interfaces/LiveInterfaceExtensions.js.map +1 -0
  141. package/bin/esm/interfaces/index.d.ts +2 -0
  142. package/bin/esm/interfaces/index.d.ts.map +1 -0
  143. package/bin/esm/interfaces/index.js +2 -0
  144. package/bin/esm/interfaces/index.js.map +1 -0
  145. package/bin/esm/internal/errors.d.ts +41 -0
  146. package/bin/esm/internal/errors.d.ts.map +1 -0
  147. package/bin/esm/internal/errors.js.map +1 -0
  148. package/bin/esm/internal/index.d.ts +3 -0
  149. package/bin/esm/internal/index.d.ts.map +1 -0
  150. package/bin/esm/internal/index.js +3 -0
  151. package/bin/esm/internal/index.js.map +1 -0
  152. package/bin/esm/internal/type-guards.d.ts +11 -0
  153. package/bin/esm/internal/type-guards.d.ts.map +1 -0
  154. package/bin/esm/internal/type-guards.js.map +1 -0
  155. package/bin/esm/live-hooks/index.d.ts +8 -0
  156. package/bin/esm/live-hooks/index.d.ts.map +1 -0
  157. package/bin/esm/live-hooks/index.js +8 -0
  158. package/bin/esm/live-hooks/index.js.map +1 -0
  159. package/bin/esm/live-hooks/useLiveCanvas.d.ts +80 -0
  160. package/bin/esm/live-hooks/useLiveCanvas.d.ts.map +1 -0
  161. package/bin/esm/live-hooks/useLiveCanvas.js +238 -0
  162. package/bin/esm/live-hooks/useLiveCanvas.js.map +1 -0
  163. package/bin/esm/live-hooks/useLiveEvent.d.ts +59 -0
  164. package/bin/esm/live-hooks/useLiveEvent.d.ts.map +1 -0
  165. package/bin/{live-hooks → esm/live-hooks}/useLiveEvent.js +41 -5
  166. package/bin/esm/live-hooks/useLiveEvent.js.map +1 -0
  167. package/bin/esm/live-hooks/useLiveFollowMode.d.ts +163 -0
  168. package/bin/esm/live-hooks/useLiveFollowMode.d.ts.map +1 -0
  169. package/bin/{live-hooks → esm/live-hooks}/useLiveFollowMode.js +148 -5
  170. package/bin/esm/live-hooks/useLiveFollowMode.js.map +1 -0
  171. package/bin/esm/live-hooks/useLivePresence.d.ts +76 -0
  172. package/bin/esm/live-hooks/useLivePresence.d.ts.map +1 -0
  173. package/bin/{live-hooks → esm/live-hooks}/useLivePresence.js +67 -13
  174. package/bin/esm/live-hooks/useLivePresence.js.map +1 -0
  175. package/bin/esm/live-hooks/useLiveState.d.ts +66 -0
  176. package/bin/esm/live-hooks/useLiveState.d.ts.map +1 -0
  177. package/bin/{live-hooks → esm/live-hooks}/useLiveState.js +48 -3
  178. package/bin/esm/live-hooks/useLiveState.js.map +1 -0
  179. package/bin/esm/live-hooks/useLiveTimer.d.ts +80 -0
  180. package/bin/esm/live-hooks/useLiveTimer.d.ts.map +1 -0
  181. package/bin/{live-hooks → esm/live-hooks}/useLiveTimer.js +58 -3
  182. package/bin/esm/live-hooks/useLiveTimer.js.map +1 -0
  183. package/bin/esm/live-hooks/useMediaSynchronizer.d.ts +86 -0
  184. package/bin/esm/live-hooks/useMediaSynchronizer.d.ts.map +1 -0
  185. package/bin/{live-hooks → esm/live-hooks}/useMediaSynchronizer.js +65 -4
  186. package/bin/esm/live-hooks/useMediaSynchronizer.js.map +1 -0
  187. package/bin/esm/providers/AzureProvider.d.ts +113 -0
  188. package/bin/esm/providers/AzureProvider.d.ts.map +1 -0
  189. package/bin/{providers → esm/providers}/AzureProvider.js +10 -10
  190. package/bin/esm/providers/AzureProvider.js.map +1 -0
  191. package/bin/esm/providers/LiveShareProvider.d.ts +193 -0
  192. package/bin/esm/providers/LiveShareProvider.d.ts.map +1 -0
  193. package/bin/{providers → esm/providers}/LiveShareProvider.js +111 -9
  194. package/bin/esm/providers/LiveShareProvider.js.map +1 -0
  195. package/bin/esm/providers/index.d.ts +3 -0
  196. package/bin/esm/providers/index.d.ts.map +1 -0
  197. package/bin/esm/providers/index.js +3 -0
  198. package/bin/esm/providers/index.js.map +1 -0
  199. package/bin/esm/shared-hooks/index.d.ts +7 -0
  200. package/bin/esm/shared-hooks/index.d.ts.map +1 -0
  201. package/bin/esm/shared-hooks/index.js +7 -0
  202. package/bin/esm/shared-hooks/index.js.map +1 -0
  203. package/bin/esm/shared-hooks/internals/tree-node-constants.d.ts +3 -0
  204. package/bin/esm/shared-hooks/internals/tree-node-constants.d.ts.map +1 -0
  205. package/bin/esm/shared-hooks/internals/tree-node-constants.js +3 -0
  206. package/bin/esm/shared-hooks/internals/tree-node-constants.js.map +1 -0
  207. package/bin/esm/shared-hooks/internals/tree-node-types.d.ts +10 -0
  208. package/bin/esm/shared-hooks/internals/tree-node-types.d.ts.map +1 -0
  209. package/bin/esm/shared-hooks/internals/tree-node-types.js +18 -0
  210. package/bin/esm/shared-hooks/internals/tree-node-types.js.map +1 -0
  211. package/bin/esm/shared-hooks/internals/tree-node-utils.d.ts +33 -0
  212. package/bin/esm/shared-hooks/internals/tree-node-utils.d.ts.map +1 -0
  213. package/bin/esm/shared-hooks/internals/tree-node-utils.js +188 -0
  214. package/bin/esm/shared-hooks/internals/tree-node-utils.js.map +1 -0
  215. package/bin/esm/shared-hooks/useDynamicDDS.d.ts +23 -0
  216. package/bin/esm/shared-hooks/useDynamicDDS.d.ts.map +1 -0
  217. package/bin/{shared-hooks → esm/shared-hooks}/useDynamicDDS.js +20 -11
  218. package/bin/esm/shared-hooks/useDynamicDDS.js.map +1 -0
  219. package/bin/esm/shared-hooks/useSharedMap.d.ts +25 -0
  220. package/bin/esm/shared-hooks/useSharedMap.d.ts.map +1 -0
  221. package/bin/{shared-hooks → esm/shared-hooks}/useSharedMap.js +27 -13
  222. package/bin/esm/shared-hooks/useSharedMap.js.map +1 -0
  223. package/bin/esm/shared-hooks/useSharedState.d.ts +22 -0
  224. package/bin/esm/shared-hooks/useSharedState.d.ts.map +1 -0
  225. package/bin/{shared-hooks → esm/shared-hooks}/useSharedState.js +2 -2
  226. package/bin/esm/shared-hooks/useSharedState.js.map +1 -0
  227. package/bin/esm/shared-hooks/useSharedStateRegistry.d.ts +37 -0
  228. package/bin/esm/shared-hooks/useSharedStateRegistry.d.ts.map +1 -0
  229. package/bin/{shared-hooks → esm/shared-hooks}/useSharedStateRegistry.js +27 -19
  230. package/bin/esm/shared-hooks/useSharedStateRegistry.js.map +1 -0
  231. package/bin/esm/shared-hooks/useSharedTree.d.ts +57 -0
  232. package/bin/esm/shared-hooks/useSharedTree.d.ts.map +1 -0
  233. package/bin/esm/shared-hooks/useSharedTree.js +117 -0
  234. package/bin/esm/shared-hooks/useSharedTree.js.map +1 -0
  235. package/bin/esm/shared-hooks/useTreeNode.d.ts +96 -0
  236. package/bin/esm/shared-hooks/useTreeNode.d.ts.map +1 -0
  237. package/bin/esm/shared-hooks/useTreeNode.js +132 -0
  238. package/bin/esm/shared-hooks/useTreeNode.js.map +1 -0
  239. package/bin/esm/types/ActionTypes.d.ts +112 -0
  240. package/bin/esm/types/ActionTypes.d.ts.map +1 -0
  241. package/bin/esm/types/ActionTypes.js.map +1 -0
  242. package/bin/esm/types/PropTypes.d.ts +56 -0
  243. package/bin/esm/types/PropTypes.d.ts.map +1 -0
  244. package/bin/esm/types/PropTypes.js.map +1 -0
  245. package/bin/esm/types/ResultTypes.d.ts +330 -0
  246. package/bin/esm/types/ResultTypes.d.ts.map +1 -0
  247. package/bin/esm/types/ResultTypes.js.map +1 -0
  248. package/bin/esm/types/index.d.ts +4 -0
  249. package/bin/esm/types/index.d.ts.map +1 -0
  250. package/bin/esm/types/index.js +4 -0
  251. package/bin/esm/types/index.js.map +1 -0
  252. package/bin/esm/utils/index.d.ts +2 -0
  253. package/bin/esm/utils/index.d.ts.map +1 -0
  254. package/bin/esm/utils/index.js +2 -0
  255. package/bin/esm/utils/index.js.map +1 -0
  256. package/bin/esm/utils/type-check.d.ts +15 -0
  257. package/bin/esm/utils/type-check.d.ts.map +1 -0
  258. package/bin/esm/utils/type-check.js.map +1 -0
  259. package/package.json +61 -47
  260. package/src/index.ts +6 -6
  261. package/src/interfaces/index.ts +1 -1
  262. package/src/internal/index.ts +2 -2
  263. package/src/internal/type-guards.ts +1 -1
  264. package/src/live-hooks/index.ts +7 -7
  265. package/src/live-hooks/useLiveCanvas.ts +154 -82
  266. package/src/live-hooks/useLiveEvent.ts +43 -7
  267. package/src/live-hooks/useLiveFollowMode.ts +149 -6
  268. package/src/live-hooks/useLivePresence.ts +74 -17
  269. package/src/live-hooks/useLiveState.ts +49 -4
  270. package/src/live-hooks/useLiveTimer.ts +59 -4
  271. package/src/live-hooks/useMediaSynchronizer.ts +70 -5
  272. package/src/providers/AzureProvider.tsx +21 -21
  273. package/src/providers/LiveShareProvider.tsx +115 -13
  274. package/src/providers/index.ts +2 -2
  275. package/src/shared-hooks/index.ts +6 -4
  276. package/src/shared-hooks/internals/tree-node-constants.ts +2 -0
  277. package/src/shared-hooks/internals/tree-node-types.ts +26 -0
  278. package/src/shared-hooks/internals/tree-node-utils.ts +269 -0
  279. package/src/shared-hooks/useDynamicDDS.ts +28 -17
  280. package/src/shared-hooks/useSharedMap.ts +42 -17
  281. package/src/shared-hooks/useSharedState.ts +6 -3
  282. package/src/shared-hooks/useSharedStateRegistry.ts +44 -22
  283. package/src/shared-hooks/useSharedTree.ts +144 -0
  284. package/src/shared-hooks/useTreeNode.ts +147 -0
  285. package/src/types/ActionTypes.ts +13 -9
  286. package/src/types/PropTypes.ts +57 -0
  287. package/src/types/ResultTypes.ts +67 -17
  288. package/src/types/index.ts +3 -3
  289. package/src/utils/index.ts +1 -1
  290. package/tsconfig.cjs.json +14 -0
  291. package/tsconfig.json +65 -70
  292. package/bin/index.d.ts +0 -7
  293. package/bin/index.d.ts.map +0 -1
  294. package/bin/index.js +0 -7
  295. package/bin/index.js.map +0 -1
  296. package/bin/interfaces/LiveInterfaceExtensions.d.ts.map +0 -1
  297. package/bin/interfaces/LiveInterfaceExtensions.js.map +0 -1
  298. package/bin/interfaces/index.d.ts +0 -2
  299. package/bin/interfaces/index.d.ts.map +0 -1
  300. package/bin/interfaces/index.js +0 -2
  301. package/bin/interfaces/index.js.map +0 -1
  302. package/bin/internal/errors.d.ts.map +0 -1
  303. package/bin/internal/errors.js.map +0 -1
  304. package/bin/internal/index.d.ts +0 -3
  305. package/bin/internal/index.d.ts.map +0 -1
  306. package/bin/internal/index.js +0 -3
  307. package/bin/internal/index.js.map +0 -1
  308. package/bin/internal/type-guards.d.ts.map +0 -1
  309. package/bin/internal/type-guards.js.map +0 -1
  310. package/bin/live-hooks/index.d.ts +0 -8
  311. package/bin/live-hooks/index.d.ts.map +0 -1
  312. package/bin/live-hooks/index.js +0 -8
  313. package/bin/live-hooks/index.js.map +0 -1
  314. package/bin/live-hooks/useLiveCanvas.d.ts +0 -29
  315. package/bin/live-hooks/useLiveCanvas.d.ts.map +0 -1
  316. package/bin/live-hooks/useLiveCanvas.js +0 -160
  317. package/bin/live-hooks/useLiveCanvas.js.map +0 -1
  318. package/bin/live-hooks/useLiveEvent.d.ts.map +0 -1
  319. package/bin/live-hooks/useLiveEvent.js.map +0 -1
  320. package/bin/live-hooks/useLiveFollowMode.d.ts +0 -24
  321. package/bin/live-hooks/useLiveFollowMode.d.ts.map +0 -1
  322. package/bin/live-hooks/useLiveFollowMode.js.map +0 -1
  323. package/bin/live-hooks/useLivePresence.d.ts +0 -26
  324. package/bin/live-hooks/useLivePresence.d.ts.map +0 -1
  325. package/bin/live-hooks/useLivePresence.js.map +0 -1
  326. package/bin/live-hooks/useLiveState.d.ts.map +0 -1
  327. package/bin/live-hooks/useLiveState.js.map +0 -1
  328. package/bin/live-hooks/useLiveTimer.d.ts.map +0 -1
  329. package/bin/live-hooks/useLiveTimer.js.map +0 -1
  330. package/bin/live-hooks/useMediaSynchronizer.d.ts +0 -25
  331. package/bin/live-hooks/useMediaSynchronizer.d.ts.map +0 -1
  332. package/bin/live-hooks/useMediaSynchronizer.js.map +0 -1
  333. package/bin/providers/AzureProvider.d.ts.map +0 -1
  334. package/bin/providers/AzureProvider.js.map +0 -1
  335. package/bin/providers/LiveShareProvider.d.ts.map +0 -1
  336. package/bin/providers/LiveShareProvider.js.map +0 -1
  337. package/bin/providers/index.d.ts +0 -3
  338. package/bin/providers/index.d.ts.map +0 -1
  339. package/bin/providers/index.js +0 -3
  340. package/bin/providers/index.js.map +0 -1
  341. package/bin/shared-hooks/index.d.ts +0 -5
  342. package/bin/shared-hooks/index.d.ts.map +0 -1
  343. package/bin/shared-hooks/index.js +0 -5
  344. package/bin/shared-hooks/index.js.map +0 -1
  345. package/bin/shared-hooks/useDynamicDDS.d.ts.map +0 -1
  346. package/bin/shared-hooks/useDynamicDDS.js.map +0 -1
  347. package/bin/shared-hooks/useSharedMap.d.ts.map +0 -1
  348. package/bin/shared-hooks/useSharedMap.js.map +0 -1
  349. package/bin/shared-hooks/useSharedState.d.ts.map +0 -1
  350. package/bin/shared-hooks/useSharedState.js.map +0 -1
  351. package/bin/shared-hooks/useSharedStateRegistry.d.ts.map +0 -1
  352. package/bin/shared-hooks/useSharedStateRegistry.js.map +0 -1
  353. package/bin/types/ActionTypes.d.ts.map +0 -1
  354. package/bin/types/ActionTypes.js.map +0 -1
  355. package/bin/types/PropTypes.d.ts +0 -8
  356. package/bin/types/PropTypes.d.ts.map +0 -1
  357. package/bin/types/PropTypes.js.map +0 -1
  358. package/bin/types/ResultTypes.d.ts.map +0 -1
  359. package/bin/types/ResultTypes.js.map +0 -1
  360. package/bin/types/index.d.ts +0 -4
  361. package/bin/types/index.d.ts.map +0 -1
  362. package/bin/types/index.js +0 -4
  363. package/bin/types/index.js.map +0 -1
  364. package/bin/utils/index.d.ts +0 -2
  365. package/bin/utils/index.d.ts.map +0 -1
  366. package/bin/utils/index.js +0 -2
  367. package/bin/utils/index.js.map +0 -1
  368. package/bin/utils/type-check.d.ts.map +0 -1
  369. package/bin/utils/type-check.js.map +0 -1
  370. package/tsconfig.build.json +0 -6
  371. /package/bin/{interfaces → cjs/interfaces}/LiveInterfaceExtensions.d.ts +0 -0
  372. /package/bin/{internal → cjs/internal}/errors.d.ts +0 -0
  373. /package/bin/{utils → cjs/utils}/type-check.d.ts +0 -0
  374. /package/bin/{interfaces → esm/interfaces}/LiveInterfaceExtensions.js +0 -0
  375. /package/bin/{internal → esm/internal}/errors.js +0 -0
  376. /package/bin/{internal → esm/internal}/type-guards.js +0 -0
  377. /package/bin/{types → esm/types}/ActionTypes.js +0 -0
  378. /package/bin/{types → esm/types}/PropTypes.js +0 -0
  379. /package/bin/{types → esm/types}/ResultTypes.js +0 -0
  380. /package/bin/{utils → esm/utils}/type-check.js +0 -0
@@ -9,10 +9,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import { jsx as _jsx } from "react/jsx-runtime";
11
11
  import React from "react";
12
- import { useSharedStateRegistry } from "../shared-hooks";
13
- import { FluidContext } from "./AzureProvider";
14
- import { LiveShareTurboClient } from "@microsoft/live-share-turbo";
15
- import { isITeamsJsSdkError } from "../internal";
12
+ import { useSharedStateRegistry } from "../shared-hooks/index.js";
13
+ import { LiveShareClient, } from "@microsoft/live-share";
14
+ import { FluidContext } from "./AzureProvider.js";
15
+ import { isITeamsJsSdkError } from "../internal/index.js";
16
16
  /**
17
17
  * @hidden
18
18
  */
@@ -25,6 +25,57 @@ export const LiveShareContext = React.createContext({});
25
25
  * See `useFluidObjectsContext` for other information related to the Live Share session, such as the `container`.
26
26
  *
27
27
  * @returns current state of `LiveShareContext`
28
+ *
29
+ * @example
30
+ ```jsx
31
+ // LiveShareApp.jsx
32
+ import { LiveShareProvider } from "@microsoft/live-share-react";
33
+ import { LiveShareHost } from "@microsoft/teams-js";
34
+
35
+ const host = LiveShareHost.create();
36
+
37
+ export function LiveShareApp() {
38
+ // Call app.initialize() from teams-js before rendering LiveShareProvider
39
+
40
+ return (
41
+ <LiveShareProvider
42
+ joinOnLoad={true}
43
+ host={host}
44
+ >
45
+ <LiveShareLoader>
46
+ <LiveCheckbox />
47
+ </LiveShareLoader>
48
+ </LiveShareProvider>
49
+ );
50
+ }
51
+
52
+ // LiveShareLoader.jsx
53
+ import { useLiveShareContext } from "@microsoft/live-share-react";
54
+
55
+ export function LiveShareLoader({ children }) {
56
+ const { joined, joinError } = useLiveShareContext();
57
+
58
+ if (joinError) return <>{joinError.message}</>;
59
+ if (!joined) return <>Joining Live Share session...</>;
60
+ return <>{children}</>
61
+ }
62
+
63
+ // LiveCheckbox.jsx
64
+ import { useLiveState } from "@microsoft/live-share-react";
65
+
66
+ export function LiveCheckbox() {
67
+ const [checked, setChecked] = useLiveState("MY-UNIQUE-ID", false);
68
+ return (
69
+ <input
70
+ type="checkbox"
71
+ checked={checked}
72
+ onChange={() => {
73
+ setChecked(!checked);
74
+ }}
75
+ />
76
+ );
77
+ }
78
+ ```
28
79
  */
29
80
  export const useLiveShareContext = () => {
30
81
  const context = React.useContext(LiveShareContext);
@@ -35,19 +86,70 @@ export const useLiveShareContext = () => {
35
86
  };
36
87
  /**
37
88
  * React Context provider component for using Live Share data objects & joining a Live Share session using `LiveShareClient`.
89
+ *
90
+ * @example
91
+ ```jsx
92
+ // LiveShareApp.jsx
93
+ import { LiveShareProvider } from "@microsoft/live-share-react";
94
+ import { LiveShareHost } from "@microsoft/teams-js";
95
+
96
+ const host = LiveShareHost.create();
97
+
98
+ export function LiveShareApp() {
99
+ // Call app.initialize() from teams-js before rendering LiveShareProvider
100
+
101
+ return (
102
+ <LiveShareProvider
103
+ joinOnLoad={true}
104
+ host={host}
105
+ >
106
+ <LiveShareLoader>
107
+ <LiveCheckbox />
108
+ </LiveShareLoader>
109
+ </LiveShareProvider>
110
+ );
111
+ }
112
+
113
+ // LiveShareLoader.jsx
114
+ import { useLiveShareContext } from "@microsoft/live-share-react";
115
+
116
+ export function LiveShareLoader({ children }) {
117
+ const { joined, joinError } = useLiveShareContext();
118
+
119
+ if (joinError) return <>{joinError.message}</>;
120
+ if (!joined) return <>Joining Live Share session...</>;
121
+ return <>{children}</>
122
+ }
123
+
124
+ // LiveCheckbox.jsx
125
+ import { useLiveState } from "@microsoft/live-share-react";
126
+
127
+ export function LiveCheckbox() {
128
+ const [checked, setChecked] = useLiveState("MY-UNIQUE-ID", false);
129
+ return (
130
+ <input
131
+ type="checkbox"
132
+ checked={checked}
133
+ onChange={() => {
134
+ setChecked(!checked);
135
+ }}
136
+ />
137
+ );
138
+ }
139
+ ```
38
140
  */
39
141
  export const LiveShareProvider = (props) => {
40
142
  const startedRef = React.useRef(false);
41
- const clientRef = React.useRef(new LiveShareTurboClient(props.host, props.clientOptions));
143
+ const clientRef = React.useRef(new LiveShareClient(props.host, props.clientOptions));
42
144
  const [results, setResults] = React.useState();
43
145
  const [joinError, setJoinError] = React.useState();
44
146
  const stateRegistryCallbacks = useSharedStateRegistry(results);
45
147
  /**
46
148
  * Join container callback for joining the Live Share session
47
149
  */
48
- const join = React.useCallback((initialObjects, onInitializeContainer) => __awaiter(void 0, void 0, void 0, function* () {
150
+ const join = React.useCallback((fluidContainerSchema, onInitializeContainer) => __awaiter(void 0, void 0, void 0, function* () {
49
151
  startedRef.current = true;
50
- const results = yield clientRef.current.join(initialObjects, onInitializeContainer);
152
+ const results = yield clientRef.current.join(fluidContainerSchema, onInitializeContainer);
51
153
  setResults(results);
52
154
  return results;
53
155
  }), []);
@@ -60,7 +162,7 @@ export const LiveShareProvider = (props) => {
60
162
  // We are not doing this here for backwards compatibility. View the README for more information.
61
163
  if (results !== undefined || startedRef.current || !props.joinOnLoad)
62
164
  return;
63
- join(props.initialObjects).catch((error) => {
165
+ join(props.fluidContainerSchema).catch((error) => {
64
166
  var _a;
65
167
  console.error(error);
66
168
  if (error instanceof Error) {
@@ -76,7 +178,7 @@ export const LiveShareProvider = (props) => {
76
178
  setJoinError(new Error("LiveShareProvider: An unknown error occurred while joining container."));
77
179
  }
78
180
  });
79
- }, [results, props.joinOnLoad, props.initialObjects, join]);
181
+ }, [results, props.joinOnLoad, props.fluidContainerSchema, join]);
80
182
  return (_jsx(LiveShareContext.Provider, { value: {
81
183
  created: !!(results === null || results === void 0 ? void 0 : results.created),
82
184
  timestampProvider: results === null || results === void 0 ? void 0 : results.timestampProvider,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiveShareProvider.js","sourceRoot":"","sources":["../../../src/providers/LiveShareProvider.tsx"],"names":[],"mappings":";;;;;;;;;;AAMA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAKH,eAAe,GAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAA0B,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AA2C1D;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAC/C,EAAuB,CAC1B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAsB,EAAE;IACvD,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IACnD,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACX,mRAAmR,CACtR,CAAC;IACN,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AA+BF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAsC,CAAC,KAAK,EAAE,EAAE;IAC1E,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAC1B,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,CACvD,CAAC;IACF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,EAEzC,CAAC;IACJ,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAqB,CAAC;IAEtE,MAAM,sBAAsB,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAE/D;;OAEG;IACH,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAC1B,CACI,oBAAsC,EACtC,qBAA4D,EAC9B,EAAE;QAChC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,CACxC,oBAAoB,EACpB,qBAAqB,CACxB,CAAC;QACF,UAAU,CAAC,OAAO,CAAC,CAAC;QACpB,OAAO,OAAO,CAAC;IACnB,CAAC,CAAA,EACD,EAAE,CACL,CAAC;IAEF;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,wFAAwF;QACxF,mGAAmG;QACnG,gGAAgG;QAChG,IAAI,OAAO,KAAK,SAAS,IAAI,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU;YAChE,OAAO;QACX,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;;YAC7C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBACzB,YAAY,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;iBAAM,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnC,YAAY,CACR,IAAI,KAAK,CACL,IAAI,KAAK,CAAC,SAAS,KACf,MAAA,KAAK,CAAC,OAAO,mCACb,oDACJ,EAAE,CACL,CACJ,CAAC;YACN,CAAC;iBAAM,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE,CAAC;gBAClC,YAAY,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACJ,YAAY,CACR,IAAI,KAAK,CACL,uEAAuE,CAC1E,CACJ,CAAC;YACN,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAC;IAElE,OAAO,CACH,KAAC,gBAAgB,CAAC,QAAQ,IACtB,KAAK,EAAE;YACH,OAAO,EAAE,CAAC,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAA;YAC3B,iBAAiB,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,iBAAiB;YAC7C,MAAM,EAAE,CAAC,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAA;YAC5B,SAAS;YACT,IAAI;SACP,YAED,KAAC,YAAY,CAAC,QAAQ,IAClB,KAAK,kBACD,SAAS,EACT,SAAS,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAC7B,QAAQ,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,EAC3B,SAAS,EACT,YAAY,EAAE,GAAS,EAAE;oBACrB,MAAM,IAAI,KAAK,CACX,qEAAqE,CACxE,CAAC;gBACN,CAAC,CAAA,EACD,eAAe,EAAE,GAAS,EAAE;oBACxB,MAAM,IAAI,KAAK,CACX,0EAA0E,CAC7E,CAAC;gBACN,CAAC,CAAA,IACE,sBAAsB,aAG5B,KAAK,CAAC,QAAQ,GACK,GACA,CAC/B,CAAC;AACN,CAAC,CAAC;AAEF,SAAS,kBAAkB,CAAC,KAAU;IAClC,OAAO,CACH,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAA,KAAK,SAAS,IAAI,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAA,KAAK,UAAU,CAC3E,CAAC;AACN,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./AzureProvider.js";
2
+ export * from "./LiveShareProvider.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./AzureProvider.js";
2
+ export * from "./LiveShareProvider.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from "./useSharedState.js";
2
+ export * from "./useSharedMap.js";
3
+ export * from "./useDynamicDDS.js";
4
+ export * from "./useSharedStateRegistry.js";
5
+ export * from "./useSharedTree.js";
6
+ export * from "./useTreeNode.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared-hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from "./useSharedState.js";
2
+ export * from "./useSharedMap.js";
3
+ export * from "./useDynamicDDS.js";
4
+ export * from "./useSharedStateRegistry.js";
5
+ export * from "./useSharedTree.js";
6
+ export * from "./useTreeNode.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/shared-hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const rawTNodeKey = "[[FluidTreeNode]]";
2
+ export declare const proxiedChildrenKey = "[[FluidChildNodes]]";
3
+ //# sourceMappingURL=tree-node-constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-node-constants.d.ts","sourceRoot":"","sources":["../../../../src/shared-hooks/internals/tree-node-constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,eAAO,MAAM,kBAAkB,wBAAwB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export const rawTNodeKey = "[[FluidTreeNode]]";
2
+ export const proxiedChildrenKey = "[[FluidChildNodes]]";
3
+ //# sourceMappingURL=tree-node-constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-node-constants.js","sourceRoot":"","sources":["../../../../src/shared-hooks/internals/tree-node-constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAC/C,MAAM,CAAC,MAAM,kBAAkB,GAAG,qBAAqB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { TreeNode } from "fluid-framework";
2
+ import { proxiedChildrenKey, rawTNodeKey } from "./tree-node-constants.js";
3
+ export interface ICustomProxyHandler<TNode extends TreeNode = TreeNode> {
4
+ [rawTNodeKey]: TNode;
5
+ [proxiedChildrenKey]: Record<string, TreeNode>;
6
+ }
7
+ export declare function isProxy(value: any): value is typeof Proxy;
8
+ export declare function isCustomProxyHandler<TNode extends TreeNode = TreeNode>(value: any): value is ICustomProxyHandler<TNode>;
9
+ export declare function isTreeNode(value: any): value is TreeNode;
10
+ //# sourceMappingURL=tree-node-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-node-types.d.ts","sourceRoot":"","sources":["../../../../src/shared-hooks/internals/tree-node-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAQ,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE3E,MAAM,WAAW,mBAAmB,CAAC,KAAK,SAAS,QAAQ,GAAG,QAAQ;IAClE,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC;IACrB,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CAClD;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,OAAO,KAAK,CAEzD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,SAAS,QAAQ,GAAG,QAAQ,EAClE,KAAK,EAAE,GAAG,GACX,KAAK,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAErC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,QAAQ,CAOxD"}
@@ -0,0 +1,18 @@
1
+ import { Tree } from "fluid-framework";
2
+ import { proxiedChildrenKey, rawTNodeKey } from "./tree-node-constants.js";
3
+ export function isProxy(value) {
4
+ return value && value["[[Handler]]"];
5
+ }
6
+ export function isCustomProxyHandler(value) {
7
+ return (value === null || value === void 0 ? void 0 : value[rawTNodeKey]) !== undefined;
8
+ }
9
+ export function isTreeNode(value) {
10
+ try {
11
+ Tree.schema(value);
12
+ return true;
13
+ }
14
+ catch (_) {
15
+ return false;
16
+ }
17
+ }
18
+ //# sourceMappingURL=tree-node-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-node-types.js","sourceRoot":"","sources":["../../../../src/shared-hooks/internals/tree-node-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAO3E,MAAM,UAAU,OAAO,CAAC,KAAU;IAC9B,OAAO,KAAK,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAChC,KAAU;IAEV,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,WAAW,CAAC,MAAK,SAAS,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAU;IACjC,IAAI,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { TreeNode } from "fluid-framework";
2
+ import { Dispatch, SetStateAction } from "react";
3
+ /**
4
+ * @internal
5
+ * Build a proxied version of a node and set its value to the treeMap provided
6
+ *
7
+ * @param rawNode the raw proxy node exposed by Fluid
8
+ * @param treeMap a map where Fluid's proxy node is mapped to our proxied node
9
+ * @returns TNode instance
10
+ */
11
+ export declare function buildProxy<TNode extends TreeNode = TreeNode>(rawNode: TNode, treeMap: WeakMap<TreeNode, TreeNode>): TNode;
12
+ /**
13
+ * @internal
14
+ * Set up listeners for a given TreeNode.
15
+ * Will recursively call this function for all children nodes of each children until there are no more child nodes.
16
+ *
17
+ * @param parentRawNode raw parent node
18
+ * @param rootNodeForListener root node being listened to in useTreeNode
19
+ * @param treeMap a map where Fluid's proxy node is mapped to our proxied node
20
+ * @param unsubscribeListeners list of unsubscribe listeners, where we set the unsubscribe callbacks
21
+ * @param setProxyNode setter to set the root proxy node listened to in useTreeNode
22
+ */
23
+ export declare function setUpListenersForNodeChildren<TNode extends TreeNode = TreeNode>(parentRawNode: TreeNode, rootNodeForListener: TreeNode, treeMap: WeakMap<TreeNode, TreeNode>, unsubscribeListeners: (() => void)[], setProxyNode: Dispatch<SetStateAction<TNode>>): void;
24
+ /**
25
+ * @internal
26
+ * Fluid only knows how to work with their proxied version of a TreeNode.
27
+ * We store a reference to that node in our proxied instances so we can easily use it when working with Fluid APIs.
28
+ *
29
+ * @param node get the raw node from the proxy
30
+ * @returns the raw proxied node that Fluid expects
31
+ */
32
+ export declare function getRawNode<TNode extends TreeNode | undefined = TreeNode>(node: TNode): TNode;
33
+ //# sourceMappingURL=tree-node-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-node-utils.d.ts","sourceRoot":"","sources":["../../../../src/shared-hooks/internals/tree-node-utils.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAQ,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAIjD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,KAAK,SAAS,QAAQ,GAAG,QAAQ,EACxD,OAAO,EAAE,KAAK,EACd,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,GACrC,KAAK,CAwCP;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,6BAA6B,CACzC,KAAK,SAAS,QAAQ,GAAG,QAAQ,EAEjC,aAAa,EAAE,QAAQ,EACvB,mBAAmB,EAAE,QAAQ,EAC7B,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACpC,oBAAoB,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,EACpC,YAAY,EAAE,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,QAmChD;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,KAAK,SAAS,QAAQ,GAAG,SAAS,GAAG,QAAQ,EACpE,IAAI,EAAE,KAAK,GACZ,KAAK,CAKP"}
@@ -0,0 +1,188 @@
1
+ import { proxiedChildrenKey, rawTNodeKey } from "./tree-node-constants.js";
2
+ import { isCustomProxyHandler, isTreeNode, isProxy, } from "./tree-node-types.js";
3
+ import { Tree } from "fluid-framework";
4
+ // Exported utils
5
+ /**
6
+ * @internal
7
+ * Build a proxied version of a node and set its value to the treeMap provided
8
+ *
9
+ * @param rawNode the raw proxy node exposed by Fluid
10
+ * @param treeMap a map where Fluid's proxy node is mapped to our proxied node
11
+ * @returns TNode instance
12
+ */
13
+ export function buildProxy(rawNode, treeMap) {
14
+ var _a;
15
+ const previousProxy = treeMap.get(rawNode);
16
+ const previousProxyHandler = previousProxy
17
+ ? getCustomProxyHandler(previousProxy)
18
+ : undefined;
19
+ const proxyHandler = {
20
+ // Add some extra stuff into the handler so we can store the original Fluid TreeNode and access it later
21
+ // Without overriding the rest of the getters in the object.
22
+ [rawTNodeKey]: rawNode,
23
+ [proxiedChildrenKey]: (_a = previousProxyHandler === null || previousProxyHandler === void 0 ? void 0 : previousProxyHandler[proxiedChildrenKey]) !== null && _a !== void 0 ? _a : {},
24
+ get: (target, prop, _) => {
25
+ if (prop === "[[Handler]]") {
26
+ return proxyHandler;
27
+ }
28
+ if (typeof prop === "string" &&
29
+ proxyHandler[proxiedChildrenKey][prop]) {
30
+ return proxyHandler[proxiedChildrenKey][prop];
31
+ }
32
+ // pass in the rawNode so Fluid doesn't get confused by our proxy object and can find the flex node
33
+ const value = Reflect.get(target, prop, rawNode);
34
+ return typeof value === "function" &&
35
+ typeof prop === "string" &&
36
+ // TODO: need a better way of identifying which types of functions need to be proxied
37
+ // This is because if a developer uses an array prototype function, we need to return proxied
38
+ // objects so React can detect changes to those nodes...
39
+ !["map", "flatMap", "filter", "find", "indexOf"].includes(prop)
40
+ ? value.bind(rawNode)
41
+ : value;
42
+ },
43
+ set(target, p, newValue, _) {
44
+ return Reflect.set(target, p, newValue, rawNode);
45
+ },
46
+ };
47
+ const proxy = new Proxy(rawNode, proxyHandler);
48
+ // Track the proxy for the rawNode
49
+ treeMap.set(rawNode, proxy);
50
+ // Set raw node getter so we can access it before things like Tree.on
51
+ return proxy;
52
+ }
53
+ /**
54
+ * @internal
55
+ * Set up listeners for a given TreeNode.
56
+ * Will recursively call this function for all children nodes of each children until there are no more child nodes.
57
+ *
58
+ * @param parentRawNode raw parent node
59
+ * @param rootNodeForListener root node being listened to in useTreeNode
60
+ * @param treeMap a map where Fluid's proxy node is mapped to our proxied node
61
+ * @param unsubscribeListeners list of unsubscribe listeners, where we set the unsubscribe callbacks
62
+ * @param setProxyNode setter to set the root proxy node listened to in useTreeNode
63
+ */
64
+ export function setUpListenersForNodeChildren(parentRawNode, rootNodeForListener, treeMap, unsubscribeListeners, setProxyNode) {
65
+ let entries = Object.entries(parentRawNode);
66
+ for (let i = 0; i < entries.length; i++) {
67
+ const [key, entry] = entries[i];
68
+ if (!entry ||
69
+ ["string", "boolean", "number", "function"].includes(typeof entry) ||
70
+ !isTreeNode(entry)) {
71
+ continue;
72
+ }
73
+ const rawEntry = getRawNode(entry);
74
+ const onNodeChanged = () => {
75
+ onTreeNodeChanged(key, rawEntry, rootNodeForListener, treeMap, setProxyNode);
76
+ };
77
+ const unsubscribe = Tree.on(rawEntry, "nodeChanged", onNodeChanged);
78
+ unsubscribeListeners.push(unsubscribe);
79
+ // Recursively listen to children nodes of this node
80
+ setUpListenersForNodeChildren(rawEntry, rootNodeForListener, treeMap, unsubscribeListeners, setProxyNode);
81
+ }
82
+ }
83
+ /**
84
+ * @internal
85
+ * Fluid only knows how to work with their proxied version of a TreeNode.
86
+ * We store a reference to that node in our proxied instances so we can easily use it when working with Fluid APIs.
87
+ *
88
+ * @param node get the raw node from the proxy
89
+ * @returns the raw proxied node that Fluid expects
90
+ */
91
+ export function getRawNode(node) {
92
+ if (isProxy(node)) {
93
+ return getRawNodeFromProxy(node);
94
+ }
95
+ return node;
96
+ }
97
+ // Non public utils
98
+ /**
99
+ * Callback for when a tree node changed
100
+ *
101
+ * @param key key where the object is stored in the parent
102
+ * @param rawNode the raw node that changed
103
+ * @param rootNodeForListener the root node that is being listened to in useTreeNode
104
+ * @param treeMap a map where Fluid's proxy node is mapped to our proxied node
105
+ * @param setProxyNode setter to set the root proxy node listened to in useTreeNode
106
+ */
107
+ function onTreeNodeChanged(key, rawNode, rootNodeForListener, treeMap, setProxyNode) {
108
+ const proxyNode = buildProxy(rawNode, treeMap);
109
+ const parent = Tree.parent(rawNode);
110
+ if (!parent) {
111
+ throw new Error("useTreeNode onTreeNodeChanged: no parent found for rawParentNode");
112
+ }
113
+ proxyParentForNode(key, parent, proxyNode, rootNodeForListener, treeMap, setProxyNode);
114
+ }
115
+ /**
116
+ * Proxies the parent and sets reference to the child node that changed.
117
+ *
118
+ * @param key key where the object is referenced in its parent node
119
+ * @param rawParentNode raw parent tree node
120
+ * @param proxyNode proxied instance of the node that changed
121
+ * @param rootNodeForListener root node listened to in useTreeNode
122
+ * @param treeMap a map where Fluid's proxy node is mapped to our proxied node
123
+ * @param setProxyNode setter to set the root proxy node listened to in useTreeNode
124
+ */
125
+ function proxyParentForNode(key, rawParentNode, proxyNode, rootNodeForListener, treeMap, setProxyNode) {
126
+ const parentProxy = buildProxy(rawParentNode, treeMap);
127
+ let parentProxyHandler = getCustomProxyHandler(parentProxy);
128
+ if (!parentProxyHandler) {
129
+ throw new Error("useTreeNode proxyParentForNode: unexpected error, should always find valid proxy handler");
130
+ }
131
+ parentProxyHandler[proxiedChildrenKey][key] = proxyNode;
132
+ if (rawParentNode === rootNodeForListener) {
133
+ setProxyNode(parentProxy);
134
+ }
135
+ else {
136
+ const parentOfParent = Tree.parent(rawParentNode);
137
+ if (!parentOfParent) {
138
+ throw new Error("useTreeNode proxyParentForNode: no parent found for rawParentNode");
139
+ }
140
+ const parentKey = findKeyOfNode(rawParentNode, parentOfParent);
141
+ proxyParentForNode(parentKey, parentOfParent, parentProxy, rootNodeForListener, treeMap, setProxyNode);
142
+ }
143
+ }
144
+ /**
145
+ * Returns key where parent[key] == nodeToCheck
146
+ *
147
+ * @param nodeToCheck tree node to check
148
+ * @param parent parent node where nodeToCheck is a child of
149
+ * @returns the key for node
150
+ */
151
+ function findKeyOfNode(nodeToCheck, parent) {
152
+ let entries = Object.entries(parent);
153
+ for (let i = 0; i < entries.length; i++) {
154
+ const [key, entry] = entries[i];
155
+ if (!entry ||
156
+ ["string", "boolean", "number", "function"].includes(typeof entry) ||
157
+ !isTreeNode(entry)) {
158
+ continue;
159
+ }
160
+ if (entry === nodeToCheck)
161
+ return key;
162
+ }
163
+ throw new Error("Did not find node as a child of parent");
164
+ }
165
+ // Type utils
166
+ /**
167
+ * Gets the proxy handler for a given TreeNode, assuming `isCustomProxyHandler` returns true.
168
+ * @param proxy the proxied TreeNode to get the handler for.
169
+ * @returns the handler if valid, otherwise undefined
170
+ */
171
+ function getCustomProxyHandler(proxy) {
172
+ const handler = proxy["[[Handler]]"];
173
+ if (isCustomProxyHandler(handler)) {
174
+ return handler;
175
+ }
176
+ return undefined;
177
+ }
178
+ /**
179
+ * Gets the raw node for a given proxied tree node
180
+ *
181
+ * @param proxy the proxied TreeNode to get the raw node for
182
+ * @returns the raw node if valid, otherwise undefined
183
+ */
184
+ function getRawNodeFromProxy(proxy) {
185
+ var _a;
186
+ return (_a = getCustomProxyHandler(proxy)) === null || _a === void 0 ? void 0 : _a[rawTNodeKey];
187
+ }
188
+ //# sourceMappingURL=tree-node-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-node-utils.js","sourceRoot":"","sources":["../../../../src/shared-hooks/internals/tree-node-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the Microsoft Live Share SDK License.
4
+ */
5
+ import { FluidObject, IFluidLoadable } from "@fluidframework/core-interfaces";
6
+ import { SharedObjectKind } from "fluid-framework";
7
+ /**
8
+ * Hook to gets or creates a DDS that corresponds to a given uniqueKey string.
9
+ *
10
+ * @remarks
11
+ * This hook can only be used in a child component of `<LiveShareProvider>` or `<AzureProvider>`.
12
+ *
13
+ * @template T Type of Fluid SharedObjectKind type to load. Must conform to IFluidLoadable interface.
14
+ * @param uniqueKey uniqueKey value for the data object
15
+ * @param objectKind Fluid SharedObjectKind<T> to create/load.
16
+ * @param onFirstInitialize Optional. Callback function for when the DDS is first loaded
17
+ * @returns the DDS object, which is of type T when loaded and undefined while loading
18
+ */
19
+ export declare function useDynamicDDS<T extends IFluidLoadable = FluidObject<any> & IFluidLoadable>(uniqueKey: string, objectClass: SharedObjectKind<T>, onFirstInitialize?: (dds: T) => void): {
20
+ dds: T | undefined;
21
+ error: Error | undefined;
22
+ };
23
+ //# sourceMappingURL=useDynamicDDS.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDynamicDDS.d.ts","sourceRoot":"","sources":["../../../src/shared-hooks/useDynamicDDS.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAE9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CACzB,CAAC,SAAS,cAAc,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,cAAc,EAE5D,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAChC,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,GACrC;IACC,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;CAC5B,CA6DA"}
@@ -12,41 +12,53 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
12
12
  });
13
13
  };
14
14
  import React from "react";
15
- import { useFluidObjectsContext } from "../providers";
15
+ import { useFluidObjectsContext } from "../providers/AzureProvider.js";
16
16
  /**
17
17
  * Hook to gets or creates a DDS that corresponds to a given uniqueKey string.
18
18
  *
19
19
  * @remarks
20
20
  * This hook can only be used in a child component of `<LiveShareProvider>` or `<AzureProvider>`.
21
21
  *
22
- * @template T Type of Fluid LoadableObjectClass type to load. Must conform to IFluidLoadable interface.
22
+ * @template T Type of Fluid SharedObjectKind type to load. Must conform to IFluidLoadable interface.
23
23
  * @param uniqueKey uniqueKey value for the data object
24
- * @param loadableObjectClass Fluid LoadableObjectClass<T> to create/load.
24
+ * @param objectKind Fluid SharedObjectKind<T> to create/load.
25
25
  * @param onFirstInitialize Optional. Callback function for when the DDS is first loaded
26
26
  * @returns the DDS object, which is of type T when loaded and undefined while loading
27
27
  */
28
- export function useDynamicDDS(uniqueKey, loadableObjectClass, onFirstInitialize) {
28
+ export function useDynamicDDS(uniqueKey, objectClass, onFirstInitialize) {
29
29
  const [dds, setDDS] = React.useState();
30
30
  const [error, setError] = React.useState();
31
31
  /**
32
32
  * Import container and DDS object register callbacks from AzureProvider.
33
33
  */
34
34
  const { container, clientRef } = useFluidObjectsContext();
35
+ const mountedRef = React.useRef(false);
36
+ React.useEffect(() => {
37
+ mountedRef.current = true;
38
+ return () => {
39
+ mountedRef.current = false;
40
+ };
41
+ }, []);
42
+ const getDDSPromisesRef = React.useRef(new Map());
35
43
  /**
36
44
  * Once container is available, this effect will register the setter method so that the DDS loaded
37
45
  * from `dynamicObjects` that matches `uniqueKey` can be passed back to this hook. If one does not yet exist,
38
46
  * a new DDS is automatically created. If multiple users try to create a DDS at the same time when this component first
39
- * mounts, `live-share-turbo` ensures it will ultimately self correct using last-writer wins.
47
+ * mounts, `live-share` ensures it will ultimately self correct using last-writer wins.
40
48
  */
41
49
  React.useEffect(() => {
42
50
  if (container === undefined)
43
51
  return;
44
- let mounted = true;
45
52
  // Callback method to set the `initialData` into the map when the DDS is first created.
46
53
  const onGetDDS = () => __awaiter(this, void 0, void 0, function* () {
47
54
  try {
48
- const dds = yield clientRef.current.getDDS(uniqueKey, loadableObjectClass, onFirstInitialize);
49
- if (mounted) {
55
+ let getPromise = getDDSPromisesRef.current.get(uniqueKey);
56
+ if (!getPromise) {
57
+ getPromise = clientRef.current.getDDS(uniqueKey, objectClass, onFirstInitialize);
58
+ getDDSPromisesRef.current.set(uniqueKey, getPromise);
59
+ }
60
+ const dds = yield getPromise;
61
+ if (mountedRef.current) {
50
62
  setDDS(dds);
51
63
  }
52
64
  }
@@ -60,9 +72,6 @@ export function useDynamicDDS(uniqueKey, loadableObjectClass, onFirstInitialize)
60
72
  }
61
73
  });
62
74
  onGetDDS();
63
- return () => {
64
- mounted = false;
65
- };
66
75
  }, [container, uniqueKey, onFirstInitialize]);
67
76
  return {
68
77
  dds,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDynamicDDS.js","sourceRoot":"","sources":["../../../src/shared-hooks/useDynamicDDS.ts"],"names":[],"mappings":"AAAA;;;GAGG;;;;;;;;;;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAGvE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAGzB,SAAiB,EACjB,WAAgC,EAChC,iBAAoC;IAKpC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAK,CAAC;IAC1C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAS,CAAC;IAClD;;OAEG;IACH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAE1D,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,OAAO,GAAG,EAAE;YACR,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;QAC/B,CAAC,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAA0B,IAAI,GAAG,EAAE,CAAC,CAAC;IAE3E;;;;;OAKG;IACH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO;QACpC,uFAAuF;QACvF,MAAM,QAAQ,GAAG,GAAS,EAAE;YACxB,IAAI,CAAC;gBACD,IAAI,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC1D,IAAI,CAAC,UAAU,EAAE,CAAC;oBACd,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CACjC,SAAS,EACT,WAAW,EACX,iBAAiB,CACpB,CAAC;oBACF,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;gBACzD,CAAC;gBACD,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC;gBAC7B,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;oBACrB,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;YACL,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACtB,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;oBACzB,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACpB,CAAC;qBAAM,CAAC;oBACJ,QAAQ,CACJ,IAAI,KAAK,CACL,gEAAgE,CACnE,CACJ,CAAC;gBACN,CAAC;YACL,CAAC;QACL,CAAC,CAAA,CAAC;QACF,QAAQ,EAAE,CAAC;IACf,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAE9C,OAAO;QACH,GAAG;QACH,KAAK;KACR,CAAC;AACN,CAAC"}
@@ -0,0 +1,25 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the Microsoft Live Share SDK License.
4
+ */
5
+ import { IUseSharedMapResults, SharedMapInitialData } from "../types/index.js";
6
+ /**
7
+ * @deprecated use {@link useSharedTree} instead.
8
+ *
9
+ * React hook for using a Fluid `SharedMap`.
10
+ *
11
+ * @remarks
12
+ * The primary benefit of using the `useSharedMap` hook rather than the Fluid `SharedMap`
13
+ * directly is that it integrates nicely with React state and automates repetitive tasks.
14
+ * If you want to use `SharedMap` this hook creates directly, you can do that as well.
15
+ * This hook can only be used in a child component of `<LiveShareProvider>` or `<AzureProvider>`.
16
+ *
17
+ * @template TData Optional typing for objects stored in the SharedMap. Default is `any` type.
18
+ * @param uniqueKey the unique key for the `SharedMap`. If one does not yet exist, a new `SharedMap`
19
+ * will be created, otherwise it will use the existing one.
20
+ * @param initialData a JS Map, entries array, or JSON object to insert into the `SharedMap` when creating
21
+ * the DDS for the first time.
22
+ * @returns the Fluid `sharedMap`.
23
+ */
24
+ export declare function useSharedMap<TData = any>(uniqueKey: string, initialData?: SharedMapInitialData<TData>): IUseSharedMapResults<TData>;
25
+ //# sourceMappingURL=useSharedMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSharedMap.d.ts","sourceRoot":"","sources":["../../../src/shared-hooks/useSharedMap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAU/E;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,KAAK,GAAG,GAAG,EACpC,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,oBAAoB,CAAC,KAAK,CAAC,GAC1C,oBAAoB,CAAC,KAAK,CAAC,CAyH7B"}