@dxos/react-client 0.8.3 → 0.8.4-main.1068cf700f

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 (417) hide show
  1. package/.storybook/main.mts +11 -0
  2. package/.storybook/preview.mts +8 -0
  3. package/.swc/plugins/linux_x86_64_19.0.0/727453fb3a62f7f1d952a41e051ca8a6f88cadc45cee43c6a4d1aa45f9b75665.wasmer-v7 +0 -0
  4. package/dist/lib/browser/chunk-5UKA2BMA.mjs +179 -0
  5. package/dist/lib/browser/chunk-5UKA2BMA.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-AL2CUQ46.mjs → chunk-LO3TU5CK.mjs} +8 -8
  7. package/dist/lib/browser/chunk-LO3TU5CK.mjs.map +7 -0
  8. package/dist/lib/browser/chunk-PFF63FPR.mjs +16 -0
  9. package/dist/lib/browser/chunk-PFF63FPR.mjs.map +7 -0
  10. package/dist/lib/browser/chunk-TSF6Y5VB.mjs +8 -0
  11. package/dist/lib/browser/chunk-TSF6Y5VB.mjs.map +7 -0
  12. package/dist/lib/browser/devtools/index.mjs +7 -6
  13. package/dist/lib/browser/devtools/index.mjs.map +3 -3
  14. package/dist/lib/browser/echo/index.mjs +67 -117
  15. package/dist/lib/browser/echo/index.mjs.map +4 -4
  16. package/dist/lib/browser/halo/index.mjs +12 -10
  17. package/dist/lib/browser/halo/index.mjs.map +3 -3
  18. package/dist/lib/browser/index.mjs +115 -13
  19. package/dist/lib/browser/index.mjs.map +4 -4
  20. package/dist/lib/browser/invitations/index.mjs +1 -1
  21. package/dist/lib/browser/mesh/index.mjs +4 -3
  22. package/dist/lib/browser/mesh/index.mjs.map +1 -1
  23. package/dist/lib/browser/meta.json +1 -1
  24. package/dist/lib/browser/testing/index.mjs +125 -119
  25. package/dist/lib/browser/testing/index.mjs.map +3 -3
  26. package/dist/lib/browser/worker.mjs +1 -1
  27. package/dist/lib/node-esm/chunk-373DPHEQ.mjs +10 -0
  28. package/dist/lib/node-esm/chunk-373DPHEQ.mjs.map +7 -0
  29. package/dist/lib/node-esm/{chunk-UYJUBYMU.mjs → chunk-AQJH2UNZ.mjs} +8 -8
  30. package/dist/lib/node-esm/chunk-AQJH2UNZ.mjs.map +7 -0
  31. package/dist/lib/node-esm/chunk-NETTSER2.mjs +17 -0
  32. package/dist/lib/node-esm/chunk-NETTSER2.mjs.map +7 -0
  33. package/dist/lib/node-esm/chunk-T3QTQHBD.mjs +180 -0
  34. package/dist/lib/node-esm/chunk-T3QTQHBD.mjs.map +7 -0
  35. package/dist/lib/node-esm/devtools/index.mjs +7 -6
  36. package/dist/lib/node-esm/devtools/index.mjs.map +3 -3
  37. package/dist/lib/node-esm/echo/index.mjs +67 -117
  38. package/dist/lib/node-esm/echo/index.mjs.map +4 -4
  39. package/dist/lib/node-esm/halo/index.mjs +12 -10
  40. package/dist/lib/node-esm/halo/index.mjs.map +3 -3
  41. package/dist/lib/node-esm/index.mjs +115 -13
  42. package/dist/lib/node-esm/index.mjs.map +4 -4
  43. package/dist/lib/node-esm/invitations/index.mjs +1 -1
  44. package/dist/lib/node-esm/mesh/index.mjs +4 -3
  45. package/dist/lib/node-esm/mesh/index.mjs.map +1 -1
  46. package/dist/lib/node-esm/meta.json +1 -1
  47. package/dist/lib/node-esm/testing/index.mjs +125 -119
  48. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  49. package/dist/lib/node-esm/worker.mjs +1 -1
  50. package/dist/types/src/client/AgentHostingProvider.d.ts.map +1 -1
  51. package/dist/types/src/client/ClientProvider.d.ts +0 -10
  52. package/dist/types/src/client/ClientProvider.d.ts.map +1 -1
  53. package/dist/types/src/echo/index.d.ts +2 -2
  54. package/dist/types/src/echo/index.d.ts.map +1 -1
  55. package/dist/types/src/echo/useMembers.d.ts +2 -2
  56. package/dist/types/src/echo/useMembers.d.ts.map +1 -1
  57. package/dist/types/src/echo/useQueue.d.ts +2 -2
  58. package/dist/types/src/echo/useQueue.d.ts.map +1 -1
  59. package/dist/types/src/echo/useSpaceInvitations.d.ts +3 -2
  60. package/dist/types/src/echo/useSpaceInvitations.d.ts.map +1 -1
  61. package/dist/types/src/echo/useSpaceProperties.d.ts +13 -0
  62. package/dist/types/src/echo/useSpaceProperties.d.ts.map +1 -0
  63. package/dist/types/src/echo/useSpaces.d.ts +17 -8
  64. package/dist/types/src/echo/useSpaces.d.ts.map +1 -1
  65. package/dist/types/src/echo/useSubscription.d.ts +1 -1
  66. package/dist/types/src/echo/useSubscription.d.ts.map +1 -1
  67. package/dist/types/src/echo/useSyncState.d.ts +1 -1
  68. package/dist/types/src/echo/useSyncState.d.ts.map +1 -1
  69. package/dist/types/src/halo/Passkey.stories.d.ts +5 -5
  70. package/dist/types/src/halo/Passkey.stories.d.ts.map +1 -1
  71. package/dist/types/src/halo/useHaloInvitations.d.ts.map +1 -1
  72. package/dist/types/src/invitations/useInvitationStatus.d.ts +1 -1
  73. package/dist/types/src/invitations/useInvitationStatus.d.ts.map +1 -1
  74. package/dist/types/src/testing/ClientRepeater.d.ts +6 -5
  75. package/dist/types/src/testing/ClientRepeater.d.ts.map +1 -1
  76. package/dist/types/src/testing/ClientRepeater.stories.d.ts +6 -10
  77. package/dist/types/src/testing/ClientRepeater.stories.d.ts.map +1 -1
  78. package/dist/types/src/testing/context.d.ts +4 -2
  79. package/dist/types/src/testing/context.d.ts.map +1 -1
  80. package/dist/types/src/testing/withClientProvider.d.ts +6 -10
  81. package/dist/types/src/testing/withClientProvider.d.ts.map +1 -1
  82. package/dist/types/src/testing/withClientProvider.stories.d.ts +8 -9
  83. package/dist/types/src/testing/withClientProvider.stories.d.ts.map +1 -1
  84. package/dist/types/tsconfig.tsbuildinfo +1 -1
  85. package/moon.yml +23 -0
  86. package/package.json +43 -32
  87. package/src/client/AgentHostingProvider.tsx +1 -1
  88. package/src/client/ClientProvider.test.tsx +3 -2
  89. package/src/client/ClientProvider.tsx +33 -50
  90. package/src/client/useConfig.test.tsx +2 -1
  91. package/src/devtools/useStream.ts +1 -1
  92. package/src/echo/index.ts +2 -2
  93. package/src/echo/useMembers.ts +5 -3
  94. package/src/echo/useQueue.ts +2 -2
  95. package/src/echo/useSpaceInvitations.ts +11 -5
  96. package/src/echo/useSpaceProperties.ts +28 -0
  97. package/src/echo/useSpaces.test.tsx +3 -2
  98. package/src/echo/useSpaces.ts +37 -20
  99. package/src/echo/useSubscription.ts +1 -1
  100. package/src/echo/useSyncState.ts +3 -3
  101. package/src/halo/Passkey.stories.tsx +17 -14
  102. package/src/halo/useDevices.test.tsx +2 -1
  103. package/src/halo/useHaloInvitations.ts +1 -1
  104. package/src/invitations/useInvitationStatus.ts +9 -8
  105. package/src/testing/ClientRepeater.stories.tsx +21 -12
  106. package/src/testing/ClientRepeater.tsx +29 -36
  107. package/src/testing/context.tsx +4 -3
  108. package/src/testing/withClientProvider.stories.tsx +32 -16
  109. package/src/testing/withClientProvider.tsx +81 -64
  110. package/tsconfig.json +3 -6
  111. package/vitest.config.ts +12 -16
  112. package/.eslintrc.cjs +0 -12
  113. package/README.yml +0 -33
  114. package/dist/lib/browser/chunk-72QD3PXL.mjs +0 -312
  115. package/dist/lib/browser/chunk-72QD3PXL.mjs.map +0 -7
  116. package/dist/lib/browser/chunk-AL2CUQ46.mjs.map +0 -7
  117. package/dist/lib/node/chunk-5RUIFUEC.cjs +0 -334
  118. package/dist/lib/node/chunk-5RUIFUEC.cjs.map +0 -7
  119. package/dist/lib/node/chunk-FYOAVV65.cjs +0 -188
  120. package/dist/lib/node/chunk-FYOAVV65.cjs.map +0 -7
  121. package/dist/lib/node/devtools/index.cjs +0 -62
  122. package/dist/lib/node/devtools/index.cjs.map +0 -7
  123. package/dist/lib/node/echo/index.cjs +0 -302
  124. package/dist/lib/node/echo/index.cjs.map +0 -7
  125. package/dist/lib/node/halo/index.cjs +0 -123
  126. package/dist/lib/node/halo/index.cjs.map +0 -7
  127. package/dist/lib/node/index.cjs +0 -55
  128. package/dist/lib/node/index.cjs.map +0 -7
  129. package/dist/lib/node/invitations/index.cjs +0 -39
  130. package/dist/lib/node/invitations/index.cjs.map +0 -7
  131. package/dist/lib/node/mesh/index.cjs +0 -37
  132. package/dist/lib/node/mesh/index.cjs.map +0 -7
  133. package/dist/lib/node/meta.json +0 -1
  134. package/dist/lib/node/testing/index.cjs +0 -278
  135. package/dist/lib/node/testing/index.cjs.map +0 -7
  136. package/dist/lib/node/worker.cjs +0 -23
  137. package/dist/lib/node/worker.cjs.map +0 -7
  138. package/dist/lib/node-esm/chunk-NBTZZNQ5.mjs +0 -314
  139. package/dist/lib/node-esm/chunk-NBTZZNQ5.mjs.map +0 -7
  140. package/dist/lib/node-esm/chunk-UYJUBYMU.mjs.map +0 -7
  141. package/dist/types/src/echo/useQuery.d.ts +0 -11
  142. package/dist/types/src/echo/useQuery.d.ts.map +0 -1
  143. package/dist/types/src/echo/useQuery.test.d.ts +0 -2
  144. package/dist/types/src/echo/useQuery.test.d.ts.map +0 -1
  145. package/dist/types/src/echo/useSchema.d.ts +0 -8
  146. package/dist/types/src/echo/useSchema.d.ts.map +0 -1
  147. package/dist/types/src/playwright/playwright.config.d.cts +0 -3
  148. package/dist/types/src/playwright/playwright.config.d.cts.map +0 -1
  149. package/dist/types/src/playwright/smoke.spec.d.ts +0 -2
  150. package/dist/types/src/playwright/smoke.spec.d.ts.map +0 -1
  151. package/project.json +0 -40
  152. package/src/echo/useQuery.test.tsx +0 -128
  153. package/src/echo/useQuery.ts +0 -56
  154. package/src/echo/useSchema.ts +0 -54
  155. package/src/playwright/playwright.config.cts +0 -18
  156. package/src/playwright/smoke.spec.ts +0 -26
  157. package/typedoc/.nojekyll +0 -1
  158. package/typedoc/assets/hierarchy.js +0 -1
  159. package/typedoc/assets/highlight.css +0 -99
  160. package/typedoc/assets/icons.js +0 -18
  161. package/typedoc/assets/icons.svg +0 -1
  162. package/typedoc/assets/main.js +0 -60
  163. package/typedoc/assets/navigation.js +0 -1
  164. package/typedoc/assets/search.js +0 -1
  165. package/typedoc/assets/style.css +0 -1640
  166. package/typedoc/classes/echo.Hypergraph.html +0 -17
  167. package/typedoc/classes/echo.PropertiesType.html +0 -19
  168. package/typedoc/classes/echo.QueryResult.html +0 -18
  169. package/typedoc/classes/halo.KeyStore.html +0 -6
  170. package/typedoc/classes/index.AgentClientServiceProvider.html +0 -10
  171. package/typedoc/classes/index.AgentManagerClient.html +0 -22
  172. package/typedoc/classes/index.AlreadyJoinedError.html +0 -15
  173. package/typedoc/classes/index.ApiError.html +0 -16
  174. package/typedoc/classes/index.CancelledError.html +0 -16
  175. package/typedoc/classes/index.Client.html +0 -51
  176. package/typedoc/classes/index.ClientServicesProxy.html +0 -12
  177. package/typedoc/classes/index.Config.html +0 -17
  178. package/typedoc/classes/index.DataCorruptionError.html +0 -16
  179. package/typedoc/classes/index.DatabaseError.html +0 -15
  180. package/typedoc/classes/index.EntityNotFoundError.html +0 -15
  181. package/typedoc/classes/index.FakeAgentHostingProvider.html +0 -7
  182. package/typedoc/classes/index.IFrameManager.html +0 -6
  183. package/typedoc/classes/index.IdentityNotInitializedError.html +0 -15
  184. package/typedoc/classes/index.InvalidConfigError.html +0 -16
  185. package/typedoc/classes/index.InvalidInvitationError.html +0 -15
  186. package/typedoc/classes/index.InvalidInvitationExtensionRoleError.html +0 -16
  187. package/typedoc/classes/index.InvalidStorageVersionError.html +0 -15
  188. package/typedoc/classes/index.LocalClientServices.html +0 -12
  189. package/typedoc/classes/index.PublicKey.html +0 -55
  190. package/typedoc/classes/index.RemoteServiceConnectionError.html +0 -15
  191. package/typedoc/classes/index.RemoteServiceConnectionTimeout.html +0 -15
  192. package/typedoc/classes/index.RpcClosedError.html +0 -15
  193. package/typedoc/classes/index.RpcNotOpenError.html +0 -15
  194. package/typedoc/classes/index.SharedWorkerConnection.html +0 -5
  195. package/typedoc/classes/index.Shell.html +0 -35
  196. package/typedoc/classes/index.ShellManager.html +0 -9
  197. package/typedoc/classes/index.SystemError.html +0 -16
  198. package/typedoc/classes/index.UnknownModelError.html +0 -15
  199. package/typedoc/classes/index.WorkerClientServices.html +0 -12
  200. package/typedoc/classes/invitations.AuthenticatingInvitationObservable.html +0 -30
  201. package/typedoc/classes/invitations.CancellableInvitationObservable.html +0 -29
  202. package/typedoc/classes/invitations.InvitationEncoder.html +0 -5
  203. package/typedoc/classes/invitations.InvitationsProxy.html +0 -12
  204. package/typedoc/enums/devtools.KeyType.html +0 -9
  205. package/typedoc/enums/echo.HaloSpaceMember.Role.html +0 -9
  206. package/typedoc/enums/echo.IndexKind.Kind.html +0 -8
  207. package/typedoc/enums/echo.QueryOptions.DataLocation.html +0 -6
  208. package/typedoc/enums/echo.QueryOptions.ShowDeletedOption.html +0 -6
  209. package/typedoc/enums/echo.ResultFormat.html +0 -10
  210. package/typedoc/enums/echo.SpaceMember.PresenceState.html +0 -5
  211. package/typedoc/enums/echo.SpaceState.html +0 -13
  212. package/typedoc/enums/echo.TextKind.html +0 -5
  213. package/typedoc/enums/halo.Device.PresenceState.html +0 -6
  214. package/typedoc/enums/halo.DeviceKind.html +0 -5
  215. package/typedoc/enums/halo.DeviceType.html +0 -9
  216. package/typedoc/enums/index.ShellDisplay.html +0 -5
  217. package/typedoc/enums/index.ShellLayout.html +0 -13
  218. package/typedoc/enums/index.SystemStatus.html +0 -5
  219. package/typedoc/enums/invitations.Invitation.AuthMethod.html +0 -6
  220. package/typedoc/enums/invitations.Invitation.Kind.html +0 -5
  221. package/typedoc/enums/invitations.Invitation.State.html +0 -13
  222. package/typedoc/enums/invitations.Invitation.Type.html +0 -6
  223. package/typedoc/enums/mesh.ConnectionState.html +0 -5
  224. package/typedoc/functions/devtools.useDevtools.html +0 -1
  225. package/typedoc/functions/devtools.useStream.html +0 -2
  226. package/typedoc/functions/echo.useMembers.html +0 -1
  227. package/typedoc/functions/echo.useQueue.html +0 -2
  228. package/typedoc/functions/echo.useSchema.html +0 -2
  229. package/typedoc/functions/echo.useSpace.html +0 -6
  230. package/typedoc/functions/echo.useSpaceInvitation.html +0 -1
  231. package/typedoc/functions/echo.useSpaceInvitations.html +0 -1
  232. package/typedoc/functions/echo.useSpaceSyncState.html +0 -2
  233. package/typedoc/functions/echo.useSpaces.html +0 -5
  234. package/typedoc/functions/echo.useSubscription.html +0 -3
  235. package/typedoc/functions/echo.useSyncState.html +0 -2
  236. package/typedoc/functions/halo.useContacts.html +0 -4
  237. package/typedoc/functions/halo.useCredentials.html +0 -1
  238. package/typedoc/functions/halo.useDevices.html +0 -1
  239. package/typedoc/functions/halo.useHaloInvitation.html +0 -1
  240. package/typedoc/functions/halo.useHaloInvitations.html +0 -1
  241. package/typedoc/functions/halo.useIdentity.html +0 -3
  242. package/typedoc/functions/halo.useKeyStore.html +0 -3
  243. package/typedoc/functions/index.AgentHostingProvider.html +0 -2
  244. package/typedoc/functions/index.useAgentHostingClient.html +0 -1
  245. package/typedoc/functions/index.useClient.html +0 -3
  246. package/typedoc/functions/index.useClientStatus.html +0 -1
  247. package/typedoc/functions/index.useConfig.html +0 -3
  248. package/typedoc/functions/index.useShell.html +0 -2
  249. package/typedoc/functions/index.useShellDisplay.html +0 -2
  250. package/typedoc/functions/index.useStatus.html +0 -1
  251. package/typedoc/functions/invitations.useInvitationStatus.html +0 -1
  252. package/typedoc/functions/mesh.useNetworkStatus.html +0 -2
  253. package/typedoc/hierarchy.html +0 -1
  254. package/typedoc/index.html +0 -23
  255. package/typedoc/interfaces/devtools.DevtoolsHook.html +0 -22
  256. package/typedoc/interfaces/devtools.DevtoolsHost.html +0 -26
  257. package/typedoc/interfaces/echo.DocAccessor.html +0 -3
  258. package/typedoc/interfaces/echo.Echo.html +0 -39
  259. package/typedoc/interfaces/echo.EchoDatabase.html +0 -25
  260. package/typedoc/interfaces/echo.Expando.html +0 -3
  261. package/typedoc/interfaces/echo.Filter.html +0 -3
  262. package/typedoc/interfaces/echo.HaloSpaceMember.html +0 -18
  263. package/typedoc/interfaces/echo.IDocHandle.html +0 -6
  264. package/typedoc/interfaces/echo.IndexKind.html +0 -9
  265. package/typedoc/interfaces/echo.Query.html +0 -34
  266. package/typedoc/interfaces/echo.QueryOptions.html +0 -39
  267. package/typedoc/interfaces/echo.Queue.html +0 -17
  268. package/typedoc/interfaces/echo.Ref.html +0 -32
  269. package/typedoc/interfaces/echo.Space.html +0 -39
  270. package/typedoc/interfaces/echo.SpaceMember.html +0 -7
  271. package/typedoc/interfaces/echo.SpaceSyncState.PeerState.html +0 -14
  272. package/typedoc/interfaces/echo.SpaceSyncState.html +0 -4
  273. package/typedoc/interfaces/echo.SubscriptionHandle.html +0 -5
  274. package/typedoc/interfaces/echo.TypedObject.html +0 -16
  275. package/typedoc/interfaces/halo.Contact.html +0 -10
  276. package/typedoc/interfaces/halo.Credential.html +0 -27
  277. package/typedoc/interfaces/halo.Device.html +0 -11
  278. package/typedoc/interfaces/halo.Halo.html +0 -16
  279. package/typedoc/interfaces/halo.Identity.html +0 -15
  280. package/typedoc/interfaces/index.AgentHostingProviderClient.html +0 -6
  281. package/typedoc/interfaces/index.AppContextRequest.html +0 -33
  282. package/typedoc/interfaces/index.ClientServicesProvider.html +0 -9
  283. package/typedoc/interfaces/index.InvitationUrlRequest.html +0 -9
  284. package/typedoc/interfaces/index.LayoutRequest.html +0 -29
  285. package/typedoc/interfaces/index.ShellRuntime.html +0 -15
  286. package/typedoc/interfaces/invitations.Invitation.html +0 -92
  287. package/typedoc/interfaces/invitations.Invitations.html +0 -5
  288. package/typedoc/interfaces/mesh.GossipMessage.html +0 -10
  289. package/typedoc/interfaces/mesh.NetworkStatus.Signal.html +0 -5
  290. package/typedoc/interfaces/mesh.NetworkStatus.html +0 -6
  291. package/typedoc/media/LICENSE +0 -8
  292. package/typedoc/modules/devtools.html +0 -1
  293. package/typedoc/modules/echo.Filter.html +0 -1
  294. package/typedoc/modules/echo.HaloSpaceMember.html +0 -1
  295. package/typedoc/modules/echo.IndexKind.html +0 -1
  296. package/typedoc/modules/echo.Query.html +0 -1
  297. package/typedoc/modules/echo.QueryOptions.html +0 -1
  298. package/typedoc/modules/echo.Ref.html +0 -2
  299. package/typedoc/modules/echo.SpaceMember.html +0 -1
  300. package/typedoc/modules/echo.SpaceSyncState.html +0 -1
  301. package/typedoc/modules/echo.html +0 -1
  302. package/typedoc/modules/halo.Device.html +0 -1
  303. package/typedoc/modules/halo.html +0 -1
  304. package/typedoc/modules/index.html +0 -1
  305. package/typedoc/modules/invitations.Invitation.html +0 -1
  306. package/typedoc/modules/invitations.html +0 -1
  307. package/typedoc/modules/mesh.NetworkStatus.html +0 -1
  308. package/typedoc/modules/mesh.html +0 -1
  309. package/typedoc/modules/worker.html +0 -1
  310. package/typedoc/modules.html +0 -1
  311. package/typedoc/types/devtools.MountOptions.html +0 -3
  312. package/typedoc/types/echo.AnyLiveObject.html +0 -2
  313. package/typedoc/types/echo.Filter.And.html +0 -1
  314. package/typedoc/types/echo.Filter.Any.html +0 -1
  315. package/typedoc/types/echo.Filter.Or.html +0 -1
  316. package/typedoc/types/echo.Filter.Props.html +0 -1
  317. package/typedoc/types/echo.Filter.Type.html +0 -1
  318. package/typedoc/types/echo.Live.html +0 -5
  319. package/typedoc/types/echo.ObjectMeta.html +0 -1
  320. package/typedoc/types/echo.ObjectMigration.html +0 -7
  321. package/typedoc/types/echo.ObjectVersion.html +0 -2
  322. package/typedoc/types/echo.PeerSyncState.html +0 -1
  323. package/typedoc/types/echo.Progress.html +0 -3
  324. package/typedoc/types/echo.PropertiesTypeProps.html +0 -1
  325. package/typedoc/types/echo.Query.Any.html +0 -1
  326. package/typedoc/types/echo.Query.TextSearchOptions.html +0 -2
  327. package/typedoc/types/echo.Query.Type.html +0 -1
  328. package/typedoc/types/echo.Ref.Target.html +0 -2
  329. package/typedoc/types/echo.Selection.html +0 -1
  330. package/typedoc/types/echo.SpaceId.html +0 -6
  331. package/typedoc/types/echo.SpaceSyncStateMap.html +0 -1
  332. package/typedoc/types/echo.UseQueueOptions.html +0 -2
  333. package/typedoc/types/echo.UseSpacesParams.html +0 -3
  334. package/typedoc/types/index.AgentHostingProviderProps.html +0 -3
  335. package/typedoc/types/index.ClientContextProps.html +0 -3
  336. package/typedoc/types/index.ClientOptions.html +0 -12
  337. package/typedoc/types/index.ClientProviderProps.html +0 -2
  338. package/typedoc/types/index.ClientServices.html +0 -15
  339. package/typedoc/types/index.FromAgentOptions.html +0 -2
  340. package/typedoc/types/index.PublicKeyLike.html +0 -2
  341. package/typedoc/types/invitations.InvitationAction.html +0 -1
  342. package/typedoc/types/invitations.InvitationResult.html +0 -5
  343. package/typedoc/types/invitations.InvitationStatus.html +0 -15
  344. package/typedoc/variables/devtools.mountDevtoolsHooks.html +0 -1
  345. package/typedoc/variables/devtools.unmountDevtoolsHooks.html +0 -1
  346. package/typedoc/variables/echo.DocAccessor.html +0 -1
  347. package/typedoc/variables/echo.EchoObjectSchema.html +0 -1
  348. package/typedoc/variables/echo.Expando.html +0 -1
  349. package/typedoc/variables/echo.FQ_ID_LENGTH.html +0 -1
  350. package/typedoc/variables/echo.Filter.html +0 -1
  351. package/typedoc/variables/echo.OBJECT_ID_LENGTH.html +0 -1
  352. package/typedoc/variables/echo.ObjectVersion.html +0 -1
  353. package/typedoc/variables/echo.Query.html +0 -1
  354. package/typedoc/variables/echo.Queue.html +0 -1
  355. package/typedoc/variables/echo.ReactiveObjectSchema.html +0 -1
  356. package/typedoc/variables/echo.Ref.html +0 -2
  357. package/typedoc/variables/echo.RefArray.html +0 -2
  358. package/typedoc/variables/echo.SPACE_ID_LENGTH.html +0 -1
  359. package/typedoc/variables/echo.SpaceId.html +0 -1
  360. package/typedoc/variables/echo.SpaceSchema.html +0 -1
  361. package/typedoc/variables/echo.TypedObject.html +0 -3
  362. package/typedoc/variables/echo.compareForeignKeys.html +0 -1
  363. package/typedoc/variables/echo.createDocAccessor.html +0 -1
  364. package/typedoc/variables/echo.createEmptyEdgeSyncState.html +0 -1
  365. package/typedoc/variables/echo.createObject.html +0 -1
  366. package/typedoc/variables/echo.createQueueDXN.html +0 -2
  367. package/typedoc/variables/echo.createSubscription.html +0 -5
  368. package/typedoc/variables/echo.defineObjectMigration.html +0 -1
  369. package/typedoc/variables/echo.fromCursor.html +0 -1
  370. package/typedoc/variables/echo.fullyQualifiedId.html +0 -4
  371. package/typedoc/variables/echo.getMeta.html +0 -1
  372. package/typedoc/variables/echo.getObjectCore.html +0 -1
  373. package/typedoc/variables/echo.getRangeFromCursor.html +0 -1
  374. package/typedoc/variables/echo.getSchema.html +0 -2
  375. package/typedoc/variables/echo.getSource.html +0 -4
  376. package/typedoc/variables/echo.getSpace.html +0 -1
  377. package/typedoc/variables/echo.getSyncSummary.html +0 -1
  378. package/typedoc/variables/echo.getTarget.html +0 -4
  379. package/typedoc/variables/echo.getTextInRange.html +0 -2
  380. package/typedoc/variables/echo.getType.html +0 -5
  381. package/typedoc/variables/echo.getTypename.html +0 -6
  382. package/typedoc/variables/echo.getVersion.html +0 -3
  383. package/typedoc/variables/echo.importSpace.html +0 -1
  384. package/typedoc/variables/echo.internalDecodeReference.html +0 -1
  385. package/typedoc/variables/echo.isEchoObject.html +0 -2
  386. package/typedoc/variables/echo.isLiveObject.html +0 -2
  387. package/typedoc/variables/echo.isRelation.html +0 -2
  388. package/typedoc/variables/echo.isSpace.html +0 -1
  389. package/typedoc/variables/echo.live.html +0 -3
  390. package/typedoc/variables/echo.loadObjectReferences.html +0 -7
  391. package/typedoc/variables/echo.makeRef.html +0 -2
  392. package/typedoc/variables/echo.parseFullyQualifiedId.html +0 -2
  393. package/typedoc/variables/echo.parseId.html +0 -1
  394. package/typedoc/variables/echo.refFromDXN.html +0 -2
  395. package/typedoc/variables/echo.toCursor.html +0 -1
  396. package/typedoc/variables/echo.toCursorRange.html +0 -1
  397. package/typedoc/variables/echo.updateText.html +0 -6
  398. package/typedoc/variables/echo.useQuery.html +0 -2
  399. package/typedoc/variables/index.AgentHostingContext.html +0 -1
  400. package/typedoc/variables/index.ClientProvider.html +0 -3
  401. package/typedoc/variables/index.DXOS_VERSION.html +0 -1
  402. package/typedoc/variables/index.Defaults.html +0 -2
  403. package/typedoc/variables/index.Dynamics.html +0 -2
  404. package/typedoc/variables/index.Envs.html +0 -2
  405. package/typedoc/variables/index.Local.html +0 -2
  406. package/typedoc/variables/index.Remote.html +0 -1
  407. package/typedoc/variables/index.Storage.html +0 -2
  408. package/typedoc/variables/index.createClientServices.html +0 -4
  409. package/typedoc/variables/index.fromAgent.html +0 -2
  410. package/typedoc/variables/index.fromHost.html +0 -2
  411. package/typedoc/variables/index.fromSocket.html +0 -2
  412. package/typedoc/variables/index.fromWorker.html +0 -2
  413. package/typedoc/variables/index.getUnixSocket.html +0 -1
  414. package/typedoc/variables/index.resolveRef.html +0 -1
  415. package/typedoc/variables/index.useMulticastObservable.html +0 -3
  416. package/typedoc/variables/worker.getWorkerServiceHost.html +0 -1
  417. package/typedoc/variables/worker.onconnect.html +0 -1
@@ -4,7 +4,7 @@
4
4
 
5
5
  import { useEffect, useState } from 'react';
6
6
 
7
- import { type PeerSyncState, type SpaceSyncStateMap, type Space } from '@dxos/client/echo';
7
+ import { type PeerSyncState, type Space, type SpaceSyncStateMap } from '@dxos/client/echo';
8
8
  import { Context } from '@dxos/context';
9
9
  import { type SpaceId } from '@dxos/keys';
10
10
  import { EdgeService } from '@dxos/protocols';
@@ -30,7 +30,7 @@ export const useSyncState = (): SpaceSyncStateMap => {
30
30
  }
31
31
 
32
32
  ctx.onDispose(
33
- space.crud.subscribeToSyncState(ctx, ({ peers = [] }) => {
33
+ space.internal.db.subscribeToSyncState(ctx, ({ peers = [] }) => {
34
34
  const syncState = peers.find((state) => isEdgePeerId(state.peerId, space.id));
35
35
  if (syncState) {
36
36
  setSpaceState((spaceState) => ({ ...spaceState, [space.id]: syncState }));
@@ -62,7 +62,7 @@ export const useSpaceSyncState = (space: Space): PeerSyncState | undefined => {
62
62
 
63
63
  useEffect(() => {
64
64
  const ctx = new Context();
65
- space.crud.subscribeToSyncState(ctx, ({ peers = [] }) => {
65
+ space.internal.db.subscribeToSyncState(ctx, ({ peers = [] }) => {
66
66
  const syncState = peers.find((state) => isEdgePeerId(state.peerId, space.id));
67
67
  if (syncState) {
68
68
  setSpaceState(syncState);
@@ -2,22 +2,22 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
7
6
  import React, { useCallback } from 'react';
8
7
 
9
8
  import { Config, PublicKey } from '@dxos/client';
10
9
  import { invariant } from '@dxos/invariant';
11
10
  import { log } from '@dxos/log';
12
11
  import { Button } from '@dxos/react-ui';
12
+ import { withTheme } from '@dxos/react-ui/testing';
13
13
  import { SyntaxHighlighter } from '@dxos/react-ui-syntax-highlighter';
14
- import { withTheme } from '@dxos/storybook-utils';
15
14
 
16
- import { useCredentials } from './useCredentials';
17
- import { useIdentity } from './useIdentity';
18
15
  import { useClient } from '../client';
19
16
  import { withClientProvider } from '../testing';
20
17
 
18
+ import { useCredentials } from './useCredentials';
19
+ import { useIdentity } from './useIdentity';
20
+
21
21
  const getNewChallenge = () => Math.random().toString(36).substring(2);
22
22
 
23
23
  const Test = () => {
@@ -43,7 +43,7 @@ const Test = () => {
43
43
  challenge: new TextEncoder().encode(challenge),
44
44
  rp: { id: location.hostname, name: 'Test' },
45
45
  user: {
46
- id: lookupKey.asUint8Array(),
46
+ id: lookupKey.asUint8Array() as Uint8Array<ArrayBuffer>,
47
47
  name: identity.did,
48
48
  displayName: identity.profile?.displayName ?? '',
49
49
  },
@@ -125,11 +125,6 @@ const Test = () => {
125
125
  );
126
126
  };
127
127
 
128
- export default {
129
- title: 'sdk/react-client/Passkeys',
130
- render: Test,
131
- };
132
-
133
128
  const config = new Config({
134
129
  runtime: {
135
130
  client: {
@@ -150,6 +145,14 @@ const config = new Config({
150
145
  },
151
146
  });
152
147
 
153
- export const Default = {
154
- decorators: [withClientProvider({ config }), withTheme],
155
- };
148
+ const meta = {
149
+ title: 'sdk/react-client/Passkeys',
150
+ render: Test,
151
+ decorators: [withClientProvider({ config }), withTheme()],
152
+ } satisfies Meta;
153
+
154
+ export default meta;
155
+
156
+ type Story = StoryObj<typeof meta>;
157
+
158
+ export const Default: Story = {};
@@ -5,9 +5,10 @@
5
5
  import { renderHook } from '@testing-library/react';
6
6
  import { describe, expect, test } from 'vitest';
7
7
 
8
- import { useDevices } from './useDevices';
9
8
  import { createClient, createClientContextProvider } from '../testing/util';
10
9
 
10
+ import { useDevices } from './useDevices';
11
+
11
12
  describe('useDevices', () => {
12
13
  test('lists existing devices', async () => {
13
14
  const { client } = await createClient({ createIdentity: true });
@@ -7,7 +7,7 @@ import { useMemo } from 'react';
7
7
  import { useMulticastObservable } from '@dxos/react-hooks';
8
8
 
9
9
  import { useClient } from '../client';
10
- import { useInvitationStatus, type CancellableInvitationObservable } from '../invitations';
10
+ import { type CancellableInvitationObservable, useInvitationStatus } from '../invitations';
11
11
 
12
12
  export const useHaloInvitations = (): CancellableInvitationObservable[] => {
13
13
  const client = useClient();
@@ -2,7 +2,7 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import { useReducer, type Reducer, useMemo, useCallback, useEffect } from 'react';
5
+ import { useCallback, useEffect, useMemo, useReducer } from 'react';
6
6
 
7
7
  import { type PublicKey } from '@dxos/client';
8
8
  import {
@@ -24,9 +24,10 @@ interface InvitationReducerState {
24
24
  status: Invitation.State; // TODO(burdon): Rename state.
25
25
  haltedAt?: Invitation.State;
26
26
  result: InvitationResult;
27
- error?: number;
27
+ error?: Error;
28
28
  id?: string;
29
29
  multiUse?: boolean;
30
+ shareable?: boolean;
30
31
  invitationCode?: string;
31
32
  authCode?: string;
32
33
  authMethod?: Invitation.AuthMethod;
@@ -72,7 +73,7 @@ export type InvitationStatus = {
72
73
  multiUse?: boolean;
73
74
  shareable?: boolean;
74
75
  result: InvitationResult;
75
- error?: number;
76
+ error?: Error;
76
77
  cancel(): void;
77
78
  // TODO(wittjosiah): Remove?
78
79
  connect(observable: CancellableInvitationObservable): void;
@@ -82,11 +83,11 @@ export type InvitationStatus = {
82
83
  // Without private key, the invitation code cannot be created.
83
84
  // These invitations are only available to be accepted but not shared.
84
85
  const isShareableInvitation = (invitation: Invitation) =>
85
- invitation.authMethod !== Invitation.AuthMethod.KNOWN_PUBLIC_KEY || invitation.guestKeypair?.privateKey;
86
+ invitation.authMethod !== Invitation.AuthMethod.KNOWN_PUBLIC_KEY || !!invitation.guestKeypair?.privateKey;
86
87
 
87
88
  export const useInvitationStatus = (observable?: CancellableInvitationObservable): InvitationStatus => {
88
- const [state, dispatch] = useReducer<Reducer<InvitationReducerState, InvitationAction>, null>(
89
- (prev, action) => {
89
+ const [state, dispatch] = useReducer(
90
+ (prev: InvitationReducerState, action: InvitationAction): InvitationReducerState => {
90
91
  log('useInvitationStatus', { action });
91
92
  const invitationProps =
92
93
  'invitation' in action
@@ -115,10 +116,10 @@ export const useInvitationStatus = (observable?: CancellableInvitationObservable
115
116
  action.status === Invitation.State.TIMEOUT) && {
116
117
  haltedAt: typeof prev.haltedAt === 'undefined' ? action.haltedAt : prev.haltedAt,
117
118
  }),
118
- } as InvitationReducerState;
119
+ };
119
120
  },
120
121
  null,
121
- (_arg: null) => {
122
+ (_arg: null): InvitationReducerState => {
122
123
  const invitation = observable?.get();
123
124
  return {
124
125
  status: Invitation.State.INIT,
@@ -2,22 +2,27 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
7
6
  import React from 'react';
8
7
 
8
+ import { Obj } from '@dxos/echo';
9
9
  import { Input } from '@dxos/react-ui';
10
+ import { withTheme } from '@dxos/react-ui/testing';
10
11
  import { SyntaxHighlighter } from '@dxos/react-ui-syntax-highlighter';
11
- import { withTheme } from '@dxos/storybook-utils';
12
12
 
13
- import { ClientRepeater, type ClientRepeatedComponentProps } from './ClientRepeater';
14
13
  import { useClient } from '../client';
15
14
  import { useSpace } from '../echo';
16
15
 
17
- export default {
16
+ import { type ClientRepeatedComponentProps, ClientRepeater } from './ClientRepeater';
17
+
18
+ const meta = {
18
19
  title: 'sdk/react-client/ClientRepeater',
19
- decorators: [withTheme],
20
- };
20
+ decorators: [withTheme()],
21
+ } satisfies Meta<typeof Input>;
22
+
23
+ export default meta;
24
+
25
+ type Story = StoryObj<typeof meta>;
21
26
 
22
27
  const JsonPanel = ({ value }: { value: any }) => (
23
28
  <SyntaxHighlighter language='json'>{JSON.stringify(value, undefined, 2)}</SyntaxHighlighter>
@@ -28,9 +33,9 @@ const ClientStory = () => {
28
33
  return <JsonPanel value={client.toJSON()} />;
29
34
  };
30
35
 
31
- const ClientSpace = ({ spaceKey }: ClientRepeatedComponentProps) => {
36
+ const ClientSpace = ({ spaceId }: ClientRepeatedComponentProps) => {
32
37
  const client = useClient();
33
- const space = useSpace(spaceKey);
38
+ const space = useSpace(spaceId);
34
39
  if (!space?.isOpen) {
35
40
  return null;
36
41
  }
@@ -41,7 +46,11 @@ const ClientSpace = ({ spaceKey }: ClientRepeatedComponentProps) => {
41
46
  <Input.TextInput
42
47
  placeholder='Name'
43
48
  value={space.properties.name}
44
- onChange={(event) => (space.properties.name = event.target.value)}
49
+ onChange={(event) =>
50
+ Obj.change(space.properties, (p) => {
51
+ p.name = event.target.value;
52
+ })
53
+ }
45
54
  />
46
55
  </Input.Root>
47
56
  <JsonPanel value={client.toJSON()} />
@@ -49,10 +58,10 @@ const ClientSpace = ({ spaceKey }: ClientRepeatedComponentProps) => {
49
58
  );
50
59
  };
51
60
 
52
- export const Default = {
61
+ export const Default: Story = {
53
62
  render: () => <ClientRepeater component={ClientStory} count={2} />,
54
63
  };
55
64
 
56
- export const Space = {
65
+ export const Space: Story = {
57
66
  render: () => <ClientRepeater component={ClientSpace} count={2} createSpace />,
58
67
  };
@@ -2,18 +2,20 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import React, { useState, type FC, useEffect, useRef } from 'react';
5
+ import React, { type FC, useRef, useState } from 'react';
6
6
 
7
- import { Client, type PublicKey } from '@dxos/client';
7
+ import { Client } from '@dxos/client';
8
8
  import { TestBuilder, performInvitation } from '@dxos/client/testing';
9
- import { type TypedObject } from '@dxos/echo-schema';
10
- import { registerSignalsRuntime } from '@dxos/echo-signals/react';
9
+ import { type Type } from '@dxos/echo';
11
10
  import { faker } from '@dxos/random';
11
+ import { useAsyncEffect } from '@dxos/react-hooks';
12
12
 
13
- import { type WithClientProviderProps } from './withClientProvider';
14
13
  import { ClientProvider } from '../client';
14
+ import { type SpaceId } from '../echo';
15
+
16
+ import { type WithClientProviderProps } from './withClientProvider';
15
17
 
16
- export type ClientRepeatedComponentProps = { id: number; count: number; spaceKey?: PublicKey };
18
+ export type ClientRepeatedComponentProps = { id: number; count: number; spaceId?: SpaceId };
17
19
 
18
20
  export type ClientRepeaterControlsProps = { clients: Client[] };
19
21
 
@@ -24,9 +26,9 @@ export type ClientRepeaterProps<P extends ClientRepeatedComponentProps> = {
24
26
  controls?: FC<ClientRepeaterControlsProps>;
25
27
  count?: number;
26
28
  clients?: Client[];
27
- types?: TypedObject[];
29
+ types?: Type.Obj.Any[];
28
30
  args?: Omit<P, 'id' | 'count'>;
29
- } & Pick<WithClientProviderProps, 'createIdentity' | 'createSpace' | 'onSpaceCreated'>;
31
+ } & Pick<WithClientProviderProps, 'createIdentity' | 'createSpace' | 'onCreateSpace'>;
30
32
 
31
33
  /**
32
34
  * Utility component for Storybook stories which sets up clients for n peers.
@@ -46,41 +48,32 @@ export const ClientRepeater = <P extends ClientRepeatedComponentProps>(props: Cl
46
48
  types,
47
49
  createIdentity,
48
50
  createSpace,
49
- onSpaceCreated,
51
+ onCreateSpace,
50
52
  } = props;
51
- useEffect(() => {
52
- registerSignalsRuntime();
53
- }, []);
54
53
 
55
54
  const [clients, setClients] = useState(props.clients ?? []);
56
- const [spaceKey, setSpaceKey] = useState<PublicKey>();
55
+ const [spaceId, setSpaceId] = useState<SpaceId>();
57
56
 
58
57
  const testBuilder = useRef(new TestBuilder());
59
- useEffect(() => {
60
- const timeout = setTimeout(async () => {
61
- const clients = [...Array(count)].map(
62
- (_) => new Client({ services: testBuilder.current.createLocalClientServices(), types }),
63
- );
64
-
65
- await Promise.all(clients.map((client) => client.initialize()));
66
- if (createIdentity || createSpace) {
67
- await Promise.all(clients.map((client) => client.halo.createIdentity()));
68
- }
58
+ useAsyncEffect(async () => {
59
+ const clients = [...Array(count)].map(
60
+ (_) => new Client({ services: testBuilder.current.createLocalClientServices(), types }),
61
+ );
69
62
 
70
- if (createSpace) {
71
- const client = clients[0];
72
- const space = await client.spaces.create({ name: faker.commerce.productName() });
73
- setSpaceKey(space.key);
74
- await onSpaceCreated?.({ client, space }, {});
75
- await Promise.all(
76
- clients.slice(1).flatMap((client) => performInvitation({ host: space, guest: client.spaces })),
77
- );
78
- }
63
+ await Promise.all(clients.map((client) => client.initialize()));
64
+ if (createIdentity || createSpace) {
65
+ await Promise.all(clients.map((client) => client.halo.createIdentity()));
66
+ }
79
67
 
80
- setClients(clients);
81
- });
68
+ if (createSpace) {
69
+ const client = clients[0];
70
+ const space = await client.spaces.create({ name: faker.commerce.productName() });
71
+ setSpaceId(space.id);
72
+ await onCreateSpace?.({ client, space }, {});
73
+ await Promise.all(clients.slice(1).flatMap((client) => performInvitation({ host: space, guest: client.spaces })));
74
+ }
82
75
 
83
- return () => clearTimeout(timeout);
76
+ setClients(clients);
84
77
  }, []);
85
78
 
86
79
  if (clients.length === 0) {
@@ -92,7 +85,7 @@ export const ClientRepeater = <P extends ClientRepeatedComponentProps>(props: Cl
92
85
  {Controls && <Controls clients={clients} />}
93
86
  {clients.map((client, index) => (
94
87
  <ClientProvider key={index} client={client}>
95
- <Component id={index} count={clients.length} spaceKey={spaceKey} {...{ ...props.args }} />
88
+ <Component id={index} count={clients.length} spaceId={spaceId} {...{ ...props.args }} />
96
89
  </ClientProvider>
97
90
  ))}
98
91
  </>
@@ -4,16 +4,17 @@
4
4
 
5
5
  import { createContext, useContext } from 'react';
6
6
 
7
- import { type Space } from '@dxos/client/echo';
7
+ import { type Space, type SpaceId } from '@dxos/client/echo';
8
8
  import { raise } from '@dxos/debug';
9
9
 
10
10
  export type ClientStory = {
11
+ index?: number;
12
+ spaceId?: SpaceId;
11
13
  space?: Space;
12
14
  };
13
15
 
14
- // TODO(wittjosiah): Add to multi-client as well.
15
16
  export const ClientStory = createContext<ClientStory | undefined>(undefined);
16
17
 
17
- export const useClientProvider = (): ClientStory => {
18
+ export const useClientStory = (): ClientStory => {
18
19
  return useContext(ClientStory) ?? raise(new Error('Missing ClientStory'));
19
20
  };
@@ -2,24 +2,26 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
7
6
  import React from 'react';
7
+ import { expect, within } from 'storybook/test';
8
8
 
9
9
  import { log } from '@dxos/log';
10
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
10
11
  import { SyntaxHighlighter } from '@dxos/react-ui-syntax-highlighter';
11
- import { withLayout, withTheme } from '@dxos/storybook-utils';
12
+ import { render } from '@dxos/storybook-utils';
12
13
 
13
- import { withClientProvider, type WithClientProviderProps, withMultiClientProvider } from './withClientProvider';
14
14
  import { useClient } from '../client';
15
15
  import { type Space, useSpaces } from '../echo';
16
16
 
17
+ import { type WithClientProviderProps, withClientProvider, withMultiClientProvider } from './withClientProvider';
18
+
17
19
  const SpaceInfo = ({ space }: { space: Space }) => {
18
20
  const name = space.isOpen ? space.properties.name : '';
19
21
  return <SyntaxHighlighter language='json'>{JSON.stringify({ id: space.id, name }, null, 2)}</SyntaxHighlighter>;
20
22
  };
21
23
 
22
- const Test = () => {
24
+ const DefaultStory = () => {
23
25
  const client = useClient();
24
26
  const spaces = useSpaces();
25
27
  if (!client) {
@@ -27,7 +29,7 @@ const Test = () => {
27
29
  }
28
30
 
29
31
  return (
30
- <div className='flex flex-col min-w-[28rem] divide-y divide-separator border border-separator rounded'>
32
+ <div className='flex flex-col divide-y divide-separator border border-separator'>
31
33
  <SyntaxHighlighter language='json'>{JSON.stringify(client.toJSON(), null, 2)}</SyntaxHighlighter>
32
34
  {spaces.map((space) => (
33
35
  <SpaceInfo key={space.id} space={space} />
@@ -36,10 +38,16 @@ const Test = () => {
36
38
  );
37
39
  };
38
40
 
39
- export default {
41
+ const meta = {
40
42
  title: 'sdk/react-client/withClientProvider',
41
- render: Test,
42
- };
43
+ render: render(DefaultStory),
44
+ decorators: [withTheme()],
45
+ tags: ['test'],
46
+ } satisfies Meta<typeof DefaultStory>;
47
+
48
+ export default meta;
49
+
50
+ type Story = StoryObj<typeof meta>;
43
51
 
44
52
  const clientProps: WithClientProviderProps = {
45
53
  createIdentity: true,
@@ -47,19 +55,27 @@ const clientProps: WithClientProviderProps = {
47
55
  onInitialized: async (client) => {
48
56
  log.info('onInitialized', { client });
49
57
  },
50
- onSpaceCreated: async ({ client, space }) => {
51
- log.info('onSpaceCreated', { client, space });
58
+ onCreateSpace: async ({ client, space }) => {
59
+ log.info('onCreateSpace', { client, space });
52
60
  },
53
61
  };
54
62
 
55
- export const Default = {
56
- decorators: [withClientProvider(clientProps), withTheme, withLayout({ classNames: ['flex gap-2'] })],
63
+ export const Default: Story = {
64
+ decorators: [withClientProvider(clientProps)],
65
+ parameters: {
66
+ layout: 'centered',
67
+ },
68
+ play: async ({ canvasElement }) => {
69
+ const canvas = within(canvasElement);
70
+ const initializedText = await canvas.findByText(/"initialized": true/i, {}, { timeout: 30_000 });
71
+ await expect(initializedText).toBeVisible();
72
+ },
57
73
  };
58
74
 
59
- export const Multiple = {
75
+ export const Multiple: Story = {
60
76
  decorators: [
77
+ withTheme(),
78
+ withLayout({ classNames: 'grid grid-cols-3' }),
61
79
  withMultiClientProvider({ ...clientProps, numClients: 3 }),
62
- withTheme,
63
- withLayout({ classNames: ['flex gap-2'] }),
64
80
  ],
65
81
  };