@dxos/plugin-client 0.8.4-main.70d3990 → 0.8.4-main.7996785055

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 (575) hide show
  1. package/dist/lib/browser/DevicesContainer-6AMXWDQC.mjs +270 -0
  2. package/dist/lib/browser/DevicesContainer-6AMXWDQC.mjs.map +7 -0
  3. package/dist/lib/browser/JoinDialog-V6E5PRDR.mjs +61 -0
  4. package/dist/lib/browser/JoinDialog-V6E5PRDR.mjs.map +7 -0
  5. package/dist/lib/browser/ProfileContainer-NY67SRMY.mjs +172 -0
  6. package/dist/lib/browser/ProfileContainer-NY67SRMY.mjs.map +7 -0
  7. package/dist/lib/browser/RecoveryCodeDialog-EI2PAJSC.mjs +61 -0
  8. package/dist/lib/browser/RecoveryCodeDialog-EI2PAJSC.mjs.map +7 -0
  9. package/dist/lib/browser/RecoveryCredentialsContainer-EY7S2Z5D.mjs +59 -0
  10. package/dist/lib/browser/RecoveryCredentialsContainer-EY7S2Z5D.mjs.map +7 -0
  11. package/dist/lib/browser/ResetDialog-IG33IDFF.mjs +54 -0
  12. package/dist/lib/browser/ResetDialog-IG33IDFF.mjs.map +7 -0
  13. package/dist/lib/browser/app-graph-builder-VALIFJHW.mjs +125 -0
  14. package/dist/lib/browser/app-graph-builder-VALIFJHW.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-5JMLFUGB.mjs +177 -0
  16. package/dist/lib/browser/chunk-5JMLFUGB.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-RDIG75CA.mjs → chunk-AYDQURY2.mjs} +35 -13
  18. package/dist/lib/browser/chunk-AYDQURY2.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-C2DNTTWV.mjs +18 -0
  20. package/dist/lib/browser/chunk-C2DNTTWV.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-HSFDKP5D.mjs +15 -0
  22. package/dist/lib/browser/chunk-HSFDKP5D.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  24. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
  25. package/dist/lib/browser/{chunk-ZRVMXLDR.mjs → chunk-JHSBBOCI.mjs} +2 -2
  26. package/dist/lib/browser/chunk-JHSBBOCI.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-RGQBPDPU.mjs +8 -0
  28. package/dist/lib/browser/chunk-RGQBPDPU.mjs.map +7 -0
  29. package/dist/lib/browser/cli/index.mjs +1071 -0
  30. package/dist/lib/browser/cli/index.mjs.map +7 -0
  31. package/dist/lib/browser/client-ZBVFWBCD.mjs +95 -0
  32. package/dist/lib/browser/client-ZBVFWBCD.mjs.map +7 -0
  33. package/dist/lib/browser/create-agent-RVXHS2OH.mjs +35 -0
  34. package/dist/lib/browser/create-agent-RVXHS2OH.mjs.map +7 -0
  35. package/dist/lib/browser/create-identity-4WNBRKDW.mjs +31 -0
  36. package/dist/lib/browser/create-identity-4WNBRKDW.mjs.map +7 -0
  37. package/dist/lib/browser/create-passkey-2EEPMDV5.mjs +90 -0
  38. package/dist/lib/browser/create-passkey-2EEPMDV5.mjs.map +7 -0
  39. package/dist/lib/browser/create-recovery-code-BPF6HKWF.mjs +45 -0
  40. package/dist/lib/browser/create-recovery-code-BPF6HKWF.mjs.map +7 -0
  41. package/dist/lib/browser/index.mjs +76 -84
  42. package/dist/lib/browser/index.mjs.map +4 -4
  43. package/dist/lib/browser/join-identity-DVJMX65P.mjs +28 -0
  44. package/dist/lib/browser/join-identity-DVJMX65P.mjs.map +7 -0
  45. package/dist/lib/browser/meta.json +1 -1
  46. package/dist/lib/browser/migrations-I3DAEO7O.mjs +26 -0
  47. package/dist/lib/browser/migrations-I3DAEO7O.mjs.map +7 -0
  48. package/dist/lib/browser/operation-handler-C4KCDS7Z.mjs +17 -0
  49. package/dist/lib/browser/operation-handler-C4KCDS7Z.mjs.map +7 -0
  50. package/dist/lib/browser/operations/index.mjs +13 -0
  51. package/dist/lib/browser/operations/index.mjs.map +7 -0
  52. package/dist/lib/browser/react-context-YAEJ65GW.mjs +27 -0
  53. package/dist/lib/browser/react-context-YAEJ65GW.mjs.map +7 -0
  54. package/dist/lib/browser/react-surface-FLUCQMIE.mjs +78 -0
  55. package/dist/lib/browser/react-surface-FLUCQMIE.mjs.map +7 -0
  56. package/dist/lib/browser/recover-identity-74HATOKZ.mjs +27 -0
  57. package/dist/lib/browser/recover-identity-74HATOKZ.mjs.map +7 -0
  58. package/dist/lib/browser/redeem-passkey-FUNL7BVW.mjs +55 -0
  59. package/dist/lib/browser/redeem-passkey-FUNL7BVW.mjs.map +7 -0
  60. package/dist/lib/browser/redeem-token-GIPESPST.mjs +38 -0
  61. package/dist/lib/browser/redeem-token-GIPESPST.mjs.map +7 -0
  62. package/dist/lib/browser/reset-storage-GLHDCVZ4.mjs +27 -0
  63. package/dist/lib/browser/reset-storage-GLHDCVZ4.mjs.map +7 -0
  64. package/dist/lib/browser/schema-defs-VNCHLGPQ.mjs +29 -0
  65. package/dist/lib/browser/schema-defs-VNCHLGPQ.mjs.map +7 -0
  66. package/dist/lib/browser/share-identity-VWFBNFO3.mjs +32 -0
  67. package/dist/lib/browser/share-identity-VWFBNFO3.mjs.map +7 -0
  68. package/dist/lib/browser/testing/index.mjs +22 -0
  69. package/dist/lib/browser/testing/index.mjs.map +7 -0
  70. package/dist/lib/browser/types/index.mjs +9 -4
  71. package/dist/lib/node-esm/DevicesContainer-FCHPW753.mjs +271 -0
  72. package/dist/lib/node-esm/DevicesContainer-FCHPW753.mjs.map +7 -0
  73. package/dist/lib/node-esm/JoinDialog-PQHUAN5Y.mjs +62 -0
  74. package/dist/lib/node-esm/JoinDialog-PQHUAN5Y.mjs.map +7 -0
  75. package/dist/lib/node-esm/ProfileContainer-H24VZJE3.mjs +173 -0
  76. package/dist/lib/node-esm/ProfileContainer-H24VZJE3.mjs.map +7 -0
  77. package/dist/lib/node-esm/RecoveryCodeDialog-PWBHIQ6D.mjs +62 -0
  78. package/dist/lib/node-esm/RecoveryCodeDialog-PWBHIQ6D.mjs.map +7 -0
  79. package/dist/lib/node-esm/RecoveryCredentialsContainer-BLURHMW6.mjs +60 -0
  80. package/dist/lib/node-esm/RecoveryCredentialsContainer-BLURHMW6.mjs.map +7 -0
  81. package/dist/lib/node-esm/ResetDialog-NSALOOOA.mjs +55 -0
  82. package/dist/lib/node-esm/ResetDialog-NSALOOOA.mjs.map +7 -0
  83. package/dist/lib/node-esm/app-graph-builder-44YGDMXN.mjs +126 -0
  84. package/dist/lib/node-esm/app-graph-builder-44YGDMXN.mjs.map +7 -0
  85. package/dist/lib/node-esm/chunk-42EQVH2Q.mjs +10 -0
  86. package/dist/lib/node-esm/chunk-42EQVH2Q.mjs.map +7 -0
  87. package/dist/lib/node-esm/{chunk-VENKFPBC.mjs → chunk-5NENK2KO.mjs} +35 -13
  88. package/dist/lib/node-esm/chunk-5NENK2KO.mjs.map +7 -0
  89. package/dist/lib/node-esm/{chunk-QT3EQXDU.mjs → chunk-BOTJSPCT.mjs} +2 -2
  90. package/dist/lib/node-esm/chunk-BOTJSPCT.mjs.map +7 -0
  91. package/dist/lib/node-esm/chunk-ETBW54NV.mjs +20 -0
  92. package/dist/lib/node-esm/chunk-ETBW54NV.mjs.map +7 -0
  93. package/dist/lib/node-esm/chunk-FU7MBWDD.mjs +178 -0
  94. package/dist/lib/node-esm/chunk-FU7MBWDD.mjs.map +7 -0
  95. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  96. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  97. package/dist/lib/node-esm/chunk-VLNCZYIC.mjs +16 -0
  98. package/dist/lib/node-esm/chunk-VLNCZYIC.mjs.map +7 -0
  99. package/dist/lib/node-esm/cli/index.mjs +1072 -0
  100. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  101. package/dist/lib/node-esm/client-OFM3CBYZ.mjs +96 -0
  102. package/dist/lib/node-esm/client-OFM3CBYZ.mjs.map +7 -0
  103. package/dist/lib/node-esm/create-agent-QIWBTZSQ.mjs +36 -0
  104. package/dist/lib/node-esm/create-agent-QIWBTZSQ.mjs.map +7 -0
  105. package/dist/lib/node-esm/create-identity-P7WDMAE7.mjs +32 -0
  106. package/dist/lib/node-esm/create-identity-P7WDMAE7.mjs.map +7 -0
  107. package/dist/lib/node-esm/create-passkey-77HCW3ES.mjs +91 -0
  108. package/dist/lib/node-esm/create-passkey-77HCW3ES.mjs.map +7 -0
  109. package/dist/lib/node-esm/create-recovery-code-CCDGTSPG.mjs +46 -0
  110. package/dist/lib/node-esm/create-recovery-code-CCDGTSPG.mjs.map +7 -0
  111. package/dist/lib/node-esm/index.mjs +76 -84
  112. package/dist/lib/node-esm/index.mjs.map +4 -4
  113. package/dist/lib/node-esm/join-identity-NOGEP7RA.mjs +29 -0
  114. package/dist/lib/node-esm/join-identity-NOGEP7RA.mjs.map +7 -0
  115. package/dist/lib/node-esm/meta.json +1 -1
  116. package/dist/lib/node-esm/migrations-UXF725OZ.mjs +27 -0
  117. package/dist/lib/node-esm/migrations-UXF725OZ.mjs.map +7 -0
  118. package/dist/lib/node-esm/operation-handler-KC5K4KGW.mjs +18 -0
  119. package/dist/lib/node-esm/operation-handler-KC5K4KGW.mjs.map +7 -0
  120. package/dist/lib/node-esm/operations/index.mjs +14 -0
  121. package/dist/lib/node-esm/operations/index.mjs.map +7 -0
  122. package/dist/lib/node-esm/react-context-QBDHUDWD.mjs +28 -0
  123. package/dist/lib/node-esm/react-context-QBDHUDWD.mjs.map +7 -0
  124. package/dist/lib/node-esm/react-surface-P5WSXPAW.mjs +79 -0
  125. package/dist/lib/node-esm/react-surface-P5WSXPAW.mjs.map +7 -0
  126. package/dist/lib/node-esm/recover-identity-DTFXXLZD.mjs +28 -0
  127. package/dist/lib/node-esm/recover-identity-DTFXXLZD.mjs.map +7 -0
  128. package/dist/lib/node-esm/redeem-passkey-BXNNAV2J.mjs +56 -0
  129. package/dist/lib/node-esm/redeem-passkey-BXNNAV2J.mjs.map +7 -0
  130. package/dist/lib/node-esm/redeem-token-XBW7OPDA.mjs +39 -0
  131. package/dist/lib/node-esm/redeem-token-XBW7OPDA.mjs.map +7 -0
  132. package/dist/lib/node-esm/reset-storage-SXIZA4DV.mjs +28 -0
  133. package/dist/lib/node-esm/reset-storage-SXIZA4DV.mjs.map +7 -0
  134. package/dist/lib/node-esm/schema-defs-2UZZD4Q4.mjs +30 -0
  135. package/dist/lib/node-esm/schema-defs-2UZZD4Q4.mjs.map +7 -0
  136. package/dist/lib/node-esm/share-identity-TEHV6CZC.mjs +33 -0
  137. package/dist/lib/node-esm/share-identity-TEHV6CZC.mjs.map +7 -0
  138. package/dist/lib/node-esm/testing/index.mjs +23 -0
  139. package/dist/lib/node-esm/testing/index.mjs.map +7 -0
  140. package/dist/lib/node-esm/types/index.mjs +9 -4
  141. package/dist/types/src/ClientPlugin.d.ts +2 -1
  142. package/dist/types/src/ClientPlugin.d.ts.map +1 -1
  143. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  144. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  145. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  146. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  147. package/dist/types/src/capabilities/client/client.d.ts +8 -0
  148. package/dist/types/src/capabilities/client/client.d.ts.map +1 -0
  149. package/dist/types/src/capabilities/client/index.d.ts +18 -0
  150. package/dist/types/src/capabilities/client/index.d.ts.map +1 -0
  151. package/dist/types/src/capabilities/index.d.ts +7 -19
  152. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  153. package/dist/types/src/capabilities/migrations/index.d.ts +3 -0
  154. package/dist/types/src/capabilities/migrations/index.d.ts.map +1 -0
  155. package/dist/types/src/capabilities/migrations/migrations.d.ts +5 -0
  156. package/dist/types/src/capabilities/migrations/migrations.d.ts.map +1 -0
  157. package/dist/types/src/capabilities/operation-handler/index.d.ts +4 -0
  158. package/dist/types/src/capabilities/operation-handler/index.d.ts.map +1 -0
  159. package/dist/types/src/capabilities/operation-handler/operation-handler.d.ts +6 -0
  160. package/dist/types/src/capabilities/operation-handler/operation-handler.d.ts.map +1 -0
  161. package/dist/types/src/capabilities/react-context/index.d.ts +7 -0
  162. package/dist/types/src/capabilities/react-context/index.d.ts.map +1 -0
  163. package/dist/types/src/capabilities/react-context/react-context.d.ts +10 -0
  164. package/dist/types/src/capabilities/react-context/react-context.d.ts.map +1 -0
  165. package/dist/types/src/capabilities/react-surface/index.d.ts +5 -0
  166. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  167. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +9 -0
  168. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  169. package/dist/types/src/capabilities/schema-defs/index.d.ts +3 -0
  170. package/dist/types/src/capabilities/schema-defs/index.d.ts.map +1 -0
  171. package/dist/types/src/capabilities/schema-defs/schema-defs.d.ts +5 -0
  172. package/dist/types/src/capabilities/schema-defs/schema-defs.d.ts.map +1 -0
  173. package/dist/types/src/cli/commands/config/index.d.ts +5 -0
  174. package/dist/types/src/cli/commands/config/index.d.ts.map +1 -0
  175. package/dist/types/src/cli/commands/config/view.d.ts +5 -0
  176. package/dist/types/src/cli/commands/config/view.d.ts.map +1 -0
  177. package/dist/types/src/cli/commands/device/index.d.ts +7 -0
  178. package/dist/types/src/cli/commands/device/index.d.ts.map +1 -0
  179. package/dist/types/src/cli/commands/device/info/index.d.ts +2 -0
  180. package/dist/types/src/cli/commands/device/info/index.d.ts.map +1 -0
  181. package/dist/types/src/cli/commands/device/info/info.d.ts +7 -0
  182. package/dist/types/src/cli/commands/device/info/info.d.ts.map +1 -0
  183. package/dist/types/src/cli/commands/device/info/info.test.d.ts +2 -0
  184. package/dist/types/src/cli/commands/device/info/info.test.d.ts.map +1 -0
  185. package/dist/types/src/cli/commands/device/list/index.d.ts +2 -0
  186. package/dist/types/src/cli/commands/device/list/index.d.ts.map +1 -0
  187. package/dist/types/src/cli/commands/device/list/list.d.ts +7 -0
  188. package/dist/types/src/cli/commands/device/list/list.d.ts.map +1 -0
  189. package/dist/types/src/cli/commands/device/list/list.test.d.ts +2 -0
  190. package/dist/types/src/cli/commands/device/list/list.test.d.ts.map +1 -0
  191. package/dist/types/src/cli/commands/device/update/index.d.ts +2 -0
  192. package/dist/types/src/cli/commands/device/update/index.d.ts.map +1 -0
  193. package/dist/types/src/cli/commands/device/update/update.d.ts +11 -0
  194. package/dist/types/src/cli/commands/device/update/update.d.ts.map +1 -0
  195. package/dist/types/src/cli/commands/device/util.d.ts +16 -0
  196. package/dist/types/src/cli/commands/device/util.d.ts.map +1 -0
  197. package/dist/types/src/cli/commands/edge/index.d.ts +5 -0
  198. package/dist/types/src/cli/commands/edge/index.d.ts.map +1 -0
  199. package/dist/types/src/cli/commands/edge/status.d.ts +7 -0
  200. package/dist/types/src/cli/commands/edge/status.d.ts.map +1 -0
  201. package/dist/types/src/cli/commands/halo/create/create.d.ts +15 -0
  202. package/dist/types/src/cli/commands/halo/create/create.d.ts.map +1 -0
  203. package/dist/types/src/cli/commands/halo/create/create.test.d.ts +2 -0
  204. package/dist/types/src/cli/commands/halo/create/create.test.d.ts.map +1 -0
  205. package/dist/types/src/cli/commands/halo/create/index.d.ts +2 -0
  206. package/dist/types/src/cli/commands/halo/create/index.d.ts.map +1 -0
  207. package/dist/types/src/cli/commands/halo/credential/add/add.d.ts +13 -0
  208. package/dist/types/src/cli/commands/halo/credential/add/add.d.ts.map +1 -0
  209. package/dist/types/src/cli/commands/halo/credential/add/index.d.ts +2 -0
  210. package/dist/types/src/cli/commands/halo/credential/add/index.d.ts.map +1 -0
  211. package/dist/types/src/cli/commands/halo/credential/index.d.ts +12 -0
  212. package/dist/types/src/cli/commands/halo/credential/index.d.ts.map +1 -0
  213. package/dist/types/src/cli/commands/halo/credential/list/index.d.ts +2 -0
  214. package/dist/types/src/cli/commands/halo/credential/list/index.d.ts.map +1 -0
  215. package/dist/types/src/cli/commands/halo/credential/list/list.d.ts +19 -0
  216. package/dist/types/src/cli/commands/halo/credential/list/list.d.ts.map +1 -0
  217. package/dist/types/src/cli/commands/halo/credential/list/list.test.d.ts +2 -0
  218. package/dist/types/src/cli/commands/halo/credential/list/list.test.d.ts.map +1 -0
  219. package/dist/types/src/cli/commands/halo/identity/identity.d.ts +7 -0
  220. package/dist/types/src/cli/commands/halo/identity/identity.d.ts.map +1 -0
  221. package/dist/types/src/cli/commands/halo/identity/identity.test.d.ts +2 -0
  222. package/dist/types/src/cli/commands/halo/identity/identity.test.d.ts.map +1 -0
  223. package/dist/types/src/cli/commands/halo/identity/index.d.ts +2 -0
  224. package/dist/types/src/cli/commands/halo/identity/index.d.ts.map +1 -0
  225. package/dist/types/src/cli/commands/halo/index.d.ts +3 -0
  226. package/dist/types/src/cli/commands/halo/index.d.ts.map +1 -0
  227. package/dist/types/src/cli/commands/halo/join/index.d.ts +2 -0
  228. package/dist/types/src/cli/commands/halo/join/index.d.ts.map +1 -0
  229. package/dist/types/src/cli/commands/halo/join/join.d.ts +8 -0
  230. package/dist/types/src/cli/commands/halo/join/join.d.ts.map +1 -0
  231. package/dist/types/src/cli/commands/halo/join/join.test.d.ts +2 -0
  232. package/dist/types/src/cli/commands/halo/join/join.test.d.ts.map +1 -0
  233. package/dist/types/src/cli/commands/halo/keys/index.d.ts +2 -0
  234. package/dist/types/src/cli/commands/halo/keys/index.d.ts.map +1 -0
  235. package/dist/types/src/cli/commands/halo/keys/keys.d.ts +7 -0
  236. package/dist/types/src/cli/commands/halo/keys/keys.d.ts.map +1 -0
  237. package/dist/types/src/cli/commands/halo/keys/keys.test.d.ts +2 -0
  238. package/dist/types/src/cli/commands/halo/keys/keys.test.d.ts.map +1 -0
  239. package/dist/types/src/cli/commands/halo/recover/index.d.ts +2 -0
  240. package/dist/types/src/cli/commands/halo/recover/index.d.ts.map +1 -0
  241. package/dist/types/src/cli/commands/halo/recover/recover.d.ts +7 -0
  242. package/dist/types/src/cli/commands/halo/recover/recover.d.ts.map +1 -0
  243. package/dist/types/src/cli/commands/halo/recover/recover.test.d.ts +2 -0
  244. package/dist/types/src/cli/commands/halo/recover/recover.test.d.ts.map +1 -0
  245. package/dist/types/src/cli/commands/halo/seed/index.d.ts +2 -0
  246. package/dist/types/src/cli/commands/halo/seed/index.d.ts.map +1 -0
  247. package/dist/types/src/cli/commands/halo/seed/seed.d.ts +7 -0
  248. package/dist/types/src/cli/commands/halo/seed/seed.d.ts.map +1 -0
  249. package/dist/types/src/cli/commands/halo/share/index.d.ts +2 -0
  250. package/dist/types/src/cli/commands/halo/share/index.d.ts.map +1 -0
  251. package/dist/types/src/cli/commands/halo/share/share.d.ts +15 -0
  252. package/dist/types/src/cli/commands/halo/share/share.d.ts.map +1 -0
  253. package/dist/types/src/cli/commands/halo/update/index.d.ts +2 -0
  254. package/dist/types/src/cli/commands/halo/update/index.d.ts.map +1 -0
  255. package/dist/types/src/cli/commands/halo/update/update.d.ts +11 -0
  256. package/dist/types/src/cli/commands/halo/update/update.d.ts.map +1 -0
  257. package/dist/types/src/cli/commands/halo/update/update.test.d.ts +2 -0
  258. package/dist/types/src/cli/commands/halo/update/update.test.d.ts.map +1 -0
  259. package/dist/types/src/cli/commands/halo/util.d.ts +13 -0
  260. package/dist/types/src/cli/commands/halo/util.d.ts.map +1 -0
  261. package/dist/types/src/cli/commands/index.d.ts +6 -0
  262. package/dist/types/src/cli/commands/index.d.ts.map +1 -0
  263. package/dist/types/src/cli/commands/profile/create.d.ts +10 -0
  264. package/dist/types/src/cli/commands/profile/create.d.ts.map +1 -0
  265. package/dist/types/src/cli/commands/profile/delete.d.ts +8 -0
  266. package/dist/types/src/cli/commands/profile/delete.d.ts.map +1 -0
  267. package/dist/types/src/cli/commands/profile/import.d.ts +17 -0
  268. package/dist/types/src/cli/commands/profile/import.d.ts.map +1 -0
  269. package/dist/types/src/cli/commands/profile/index.d.ts +19 -0
  270. package/dist/types/src/cli/commands/profile/index.d.ts.map +1 -0
  271. package/dist/types/src/cli/commands/profile/inspect.d.ts +13 -0
  272. package/dist/types/src/cli/commands/profile/inspect.d.ts.map +1 -0
  273. package/dist/types/src/cli/commands/profile/list.d.ts +6 -0
  274. package/dist/types/src/cli/commands/profile/list.d.ts.map +1 -0
  275. package/dist/types/src/cli/commands/profile/reset.d.ts +8 -0
  276. package/dist/types/src/cli/commands/profile/reset.d.ts.map +1 -0
  277. package/dist/types/src/cli/commands/profile/util.d.ts +24 -0
  278. package/dist/types/src/cli/commands/profile/util.d.ts.map +1 -0
  279. package/dist/types/src/cli/index.d.ts +2 -0
  280. package/dist/types/src/cli/index.d.ts.map +1 -0
  281. package/dist/types/src/cli/plugin.d.ts +4 -0
  282. package/dist/types/src/cli/plugin.d.ts.map +1 -0
  283. package/dist/types/src/cli/testing/test-console.d.ts +37 -0
  284. package/dist/types/src/cli/testing/test-console.d.ts.map +1 -0
  285. package/dist/types/src/components/index.d.ts +0 -6
  286. package/dist/types/src/components/index.d.ts.map +1 -1
  287. package/dist/types/src/constants.d.ts +4 -0
  288. package/dist/types/src/constants.d.ts.map +1 -0
  289. package/dist/types/src/containers/DevicesContainer/DevicesContainer.d.ts.map +1 -0
  290. package/dist/types/src/{components → containers/DevicesContainer}/DevicesContainer.stories.d.ts +10 -54
  291. package/dist/types/src/containers/DevicesContainer/DevicesContainer.stories.d.ts.map +1 -0
  292. package/dist/types/src/containers/DevicesContainer/index.d.ts +3 -0
  293. package/dist/types/src/containers/DevicesContainer/index.d.ts.map +1 -0
  294. package/dist/types/src/{components → containers/JoinDialog}/JoinDialog.d.ts +0 -1
  295. package/dist/types/src/containers/JoinDialog/JoinDialog.d.ts.map +1 -0
  296. package/dist/types/src/containers/JoinDialog/JoinDialog.stories.d.ts +15 -0
  297. package/dist/types/src/containers/JoinDialog/JoinDialog.stories.d.ts.map +1 -0
  298. package/dist/types/src/containers/JoinDialog/index.d.ts +3 -0
  299. package/dist/types/src/containers/JoinDialog/index.d.ts.map +1 -0
  300. package/dist/types/src/containers/ProfileContainer/ProfileContainer.d.ts.map +1 -0
  301. package/dist/types/src/containers/ProfileContainer/ProfileContainer.stories.d.ts +14 -0
  302. package/dist/types/src/containers/ProfileContainer/ProfileContainer.stories.d.ts.map +1 -0
  303. package/dist/types/src/containers/ProfileContainer/index.d.ts +3 -0
  304. package/dist/types/src/containers/ProfileContainer/index.d.ts.map +1 -0
  305. package/dist/types/src/{components → containers/RecoveryCodeDialog}/RecoveryCodeDialog.d.ts +0 -1
  306. package/dist/types/src/containers/RecoveryCodeDialog/RecoveryCodeDialog.d.ts.map +1 -0
  307. package/dist/types/src/containers/RecoveryCodeDialog/RecoveryCodeDialog.stories.d.ts +16 -0
  308. package/dist/types/src/containers/RecoveryCodeDialog/RecoveryCodeDialog.stories.d.ts.map +1 -0
  309. package/dist/types/src/containers/RecoveryCodeDialog/index.d.ts +4 -0
  310. package/dist/types/src/containers/RecoveryCodeDialog/index.d.ts.map +1 -0
  311. package/dist/types/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.d.ts.map +1 -0
  312. package/dist/types/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.stories.d.ts +14 -0
  313. package/dist/types/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.stories.d.ts.map +1 -0
  314. package/dist/types/src/containers/RecoveryCredentialsContainer/index.d.ts +3 -0
  315. package/dist/types/src/containers/RecoveryCredentialsContainer/index.d.ts.map +1 -0
  316. package/dist/types/src/containers/ResetDialog/ResetDialog.d.ts +9 -0
  317. package/dist/types/src/containers/ResetDialog/ResetDialog.d.ts.map +1 -0
  318. package/dist/types/src/containers/ResetDialog/ResetDialog.stories.d.ts +19 -0
  319. package/dist/types/src/containers/ResetDialog/ResetDialog.stories.d.ts.map +1 -0
  320. package/dist/types/src/containers/ResetDialog/index.d.ts +4 -0
  321. package/dist/types/src/containers/ResetDialog/index.d.ts.map +1 -0
  322. package/dist/types/src/containers/index.d.ts +10 -0
  323. package/dist/types/src/containers/index.d.ts.map +1 -0
  324. package/dist/types/src/index.d.ts +1 -2
  325. package/dist/types/src/index.d.ts.map +1 -1
  326. package/dist/types/src/meta.d.ts +2 -2
  327. package/dist/types/src/meta.d.ts.map +1 -1
  328. package/dist/types/src/operations/create-agent.d.ts +5 -0
  329. package/dist/types/src/operations/create-agent.d.ts.map +1 -0
  330. package/dist/types/src/operations/create-identity.d.ts +5 -0
  331. package/dist/types/src/operations/create-identity.d.ts.map +1 -0
  332. package/dist/types/src/operations/create-passkey.d.ts +5 -0
  333. package/dist/types/src/operations/create-passkey.d.ts.map +1 -0
  334. package/dist/types/src/operations/create-recovery-code.d.ts +5 -0
  335. package/dist/types/src/operations/create-recovery-code.d.ts.map +1 -0
  336. package/dist/types/src/operations/definitions.d.ts +36 -0
  337. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  338. package/dist/types/src/operations/index.d.ts +4 -0
  339. package/dist/types/src/operations/index.d.ts.map +1 -0
  340. package/dist/types/src/operations/join-identity.d.ts +5 -0
  341. package/dist/types/src/operations/join-identity.d.ts.map +1 -0
  342. package/dist/types/src/operations/recover-identity.d.ts +5 -0
  343. package/dist/types/src/operations/recover-identity.d.ts.map +1 -0
  344. package/dist/types/src/operations/redeem-passkey.d.ts +5 -0
  345. package/dist/types/src/operations/redeem-passkey.d.ts.map +1 -0
  346. package/dist/types/src/operations/redeem-token.d.ts +5 -0
  347. package/dist/types/src/operations/redeem-token.d.ts.map +1 -0
  348. package/dist/types/src/operations/reset-storage.d.ts +5 -0
  349. package/dist/types/src/operations/reset-storage.d.ts.map +1 -0
  350. package/dist/types/src/operations/share-identity.d.ts +5 -0
  351. package/dist/types/src/operations/share-identity.d.ts.map +1 -0
  352. package/dist/types/src/testing/index.d.ts +2 -0
  353. package/dist/types/src/testing/index.d.ts.map +1 -0
  354. package/dist/types/src/testing/initializeIdentity.d.ts +13 -0
  355. package/dist/types/src/testing/initializeIdentity.d.ts.map +1 -0
  356. package/dist/types/src/translations.d.ts +2 -48
  357. package/dist/types/src/translations.d.ts.map +1 -1
  358. package/dist/types/src/types/capabilities.d.ts +10 -0
  359. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  360. package/dist/types/src/types/events.d.ts +9 -0
  361. package/dist/types/src/types/events.d.ts.map +1 -0
  362. package/dist/types/src/types/index.d.ts +2 -0
  363. package/dist/types/src/types/index.d.ts.map +1 -1
  364. package/dist/types/src/types/schema.d.ts +36 -31
  365. package/dist/types/src/types/schema.d.ts.map +1 -1
  366. package/dist/types/tsconfig.tsbuildinfo +1 -1
  367. package/package.json +74 -38
  368. package/src/ClientPlugin.ts +45 -55
  369. package/src/capabilities/app-graph-builder/app-graph-builder.ts +97 -0
  370. package/src/capabilities/app-graph-builder/index.ts +7 -0
  371. package/src/capabilities/client/client.ts +79 -0
  372. package/src/capabilities/client/index.ts +7 -0
  373. package/src/capabilities/index.ts +7 -11
  374. package/src/capabilities/migrations/index.ts +7 -0
  375. package/src/capabilities/migrations/migrations.ts +30 -0
  376. package/src/capabilities/operation-handler/index.ts +11 -0
  377. package/src/capabilities/operation-handler/operation-handler.ts +16 -0
  378. package/src/capabilities/react-context/index.ts +7 -0
  379. package/src/capabilities/react-context/react-context.tsx +25 -0
  380. package/src/capabilities/react-surface/index.ts +7 -0
  381. package/src/capabilities/react-surface/react-surface.tsx +74 -0
  382. package/src/capabilities/schema-defs/index.ts +7 -0
  383. package/src/capabilities/schema-defs/schema-defs.ts +36 -0
  384. package/src/cli/commands/config/index.ts +12 -0
  385. package/src/cli/commands/config/view.ts +29 -0
  386. package/src/cli/commands/device/index.ts +14 -0
  387. package/src/cli/commands/device/info/index.ts +5 -0
  388. package/src/cli/commands/device/info/info.test.ts +28 -0
  389. package/src/cli/commands/device/info/info.ts +48 -0
  390. package/src/cli/commands/device/list/index.ts +5 -0
  391. package/src/cli/commands/device/list/list.test.ts +30 -0
  392. package/src/cli/commands/device/list/list.ts +28 -0
  393. package/src/cli/commands/device/update/index.ts +5 -0
  394. package/src/cli/commands/device/update/update.ts +68 -0
  395. package/src/cli/commands/device/util.ts +55 -0
  396. package/src/cli/commands/edge/index.ts +12 -0
  397. package/src/cli/commands/edge/status.ts +46 -0
  398. package/src/cli/commands/halo/create/create.test.ts +52 -0
  399. package/src/cli/commands/halo/create/create.ts +82 -0
  400. package/src/cli/commands/halo/create/index.ts +5 -0
  401. package/src/cli/commands/halo/credential/add/add.ts +97 -0
  402. package/src/cli/commands/halo/credential/add/index.ts +5 -0
  403. package/src/cli/commands/halo/credential/index.ts +13 -0
  404. package/src/cli/commands/halo/credential/list/index.ts +5 -0
  405. package/src/cli/commands/halo/credential/list/list.test.ts +27 -0
  406. package/src/cli/commands/halo/credential/list/list.ts +115 -0
  407. package/src/cli/commands/halo/identity/identity.test.ts +40 -0
  408. package/src/cli/commands/halo/identity/identity.ts +45 -0
  409. package/src/cli/commands/halo/identity/index.ts +5 -0
  410. package/src/cli/commands/halo/index.ts +21 -0
  411. package/src/cli/commands/halo/join/index.ts +5 -0
  412. package/src/cli/commands/halo/join/join.test.ts +10 -0
  413. package/src/cli/commands/halo/join/join.ts +87 -0
  414. package/src/cli/commands/halo/keys/index.ts +5 -0
  415. package/src/cli/commands/halo/keys/keys.test.ts +29 -0
  416. package/src/cli/commands/halo/keys/keys.ts +40 -0
  417. package/src/cli/commands/halo/recover/index.ts +5 -0
  418. package/src/cli/commands/halo/recover/recover.test.ts +10 -0
  419. package/src/cli/commands/halo/recover/recover.ts +44 -0
  420. package/src/cli/commands/halo/seed/index.ts +5 -0
  421. package/src/cli/commands/halo/seed/seed.ts +36 -0
  422. package/src/cli/commands/halo/share/index.ts +5 -0
  423. package/src/cli/commands/halo/share/share.ts +97 -0
  424. package/src/cli/commands/halo/update/index.ts +5 -0
  425. package/src/cli/commands/halo/update/update.test.ts +28 -0
  426. package/src/cli/commands/halo/update/update.ts +67 -0
  427. package/src/cli/commands/halo/util.ts +18 -0
  428. package/src/cli/commands/index.ts +9 -0
  429. package/src/cli/commands/profile/create.ts +90 -0
  430. package/src/cli/commands/profile/delete.ts +36 -0
  431. package/src/cli/commands/profile/import.ts +101 -0
  432. package/src/cli/commands/profile/index.ts +17 -0
  433. package/src/cli/commands/profile/inspect.ts +64 -0
  434. package/src/cli/commands/profile/list.ts +55 -0
  435. package/src/cli/commands/profile/reset.ts +45 -0
  436. package/src/cli/commands/profile/util.ts +48 -0
  437. package/src/cli/index.ts +5 -0
  438. package/src/cli/plugin.ts +34 -0
  439. package/src/cli/testing/test-console.ts +88 -0
  440. package/src/components/index.ts +0 -7
  441. package/src/constants.ts +9 -0
  442. package/src/{components → containers/DevicesContainer}/DevicesContainer.stories.tsx +15 -10
  443. package/src/{components → containers/DevicesContainer}/DevicesContainer.tsx +60 -66
  444. package/src/containers/DevicesContainer/index.ts +7 -0
  445. package/src/containers/JoinDialog/JoinDialog.stories.tsx +43 -0
  446. package/src/containers/JoinDialog/JoinDialog.tsx +56 -0
  447. package/src/containers/JoinDialog/index.ts +7 -0
  448. package/src/{components → containers/ProfileContainer}/ProfileContainer.stories.tsx +4 -4
  449. package/src/{components → containers/ProfileContainer}/ProfileContainer.tsx +65 -54
  450. package/src/containers/ProfileContainer/index.ts +7 -0
  451. package/src/{components → containers/RecoveryCodeDialog}/RecoveryCodeDialog.stories.tsx +4 -4
  452. package/src/{components → containers/RecoveryCodeDialog}/RecoveryCodeDialog.tsx +28 -27
  453. package/src/containers/RecoveryCodeDialog/index.ts +8 -0
  454. package/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.stories.tsx +47 -0
  455. package/src/{components → containers/RecoveryCredentialsContainer}/RecoveryCredentialsContainer.tsx +22 -23
  456. package/src/containers/RecoveryCredentialsContainer/index.ts +7 -0
  457. package/src/containers/ResetDialog/ResetDialog.stories.tsx +73 -0
  458. package/src/containers/ResetDialog/ResetDialog.tsx +50 -0
  459. package/src/containers/ResetDialog/index.ts +8 -0
  460. package/src/containers/index.ts +15 -0
  461. package/src/index.ts +1 -2
  462. package/src/meta.ts +3 -3
  463. package/src/operations/create-agent.ts +27 -0
  464. package/src/operations/create-identity.ts +30 -0
  465. package/src/operations/create-passkey.ts +64 -0
  466. package/src/operations/create-recovery-code.ts +35 -0
  467. package/src/operations/definitions.ts +107 -0
  468. package/src/operations/index.ts +20 -0
  469. package/src/operations/join-identity.ts +29 -0
  470. package/src/operations/recover-identity.ts +29 -0
  471. package/src/operations/redeem-passkey.ts +55 -0
  472. package/src/operations/redeem-token.ts +32 -0
  473. package/src/operations/reset-storage.ts +28 -0
  474. package/src/operations/share-identity.ts +27 -0
  475. package/src/testing/index.ts +5 -0
  476. package/src/testing/initializeIdentity.ts +24 -0
  477. package/src/translations.ts +6 -3
  478. package/src/types/capabilities.ts +16 -0
  479. package/src/types/events.ts +15 -0
  480. package/src/types/index.ts +2 -0
  481. package/src/types/schema.ts +27 -19
  482. package/dist/lib/browser/app-graph-builder-7LBCMPIW.mjs +0 -124
  483. package/dist/lib/browser/app-graph-builder-7LBCMPIW.mjs.map +0 -7
  484. package/dist/lib/browser/chunk-4G4YWIUQ.mjs +0 -686
  485. package/dist/lib/browser/chunk-4G4YWIUQ.mjs.map +0 -7
  486. package/dist/lib/browser/chunk-4LRO3Y2O.mjs +0 -19
  487. package/dist/lib/browser/chunk-4LRO3Y2O.mjs.map +0 -7
  488. package/dist/lib/browser/chunk-RDIG75CA.mjs.map +0 -7
  489. package/dist/lib/browser/chunk-UZTC5O5A.mjs +0 -17
  490. package/dist/lib/browser/chunk-UZTC5O5A.mjs.map +0 -7
  491. package/dist/lib/browser/chunk-ZRVMXLDR.mjs.map +0 -7
  492. package/dist/lib/browser/client-KIPUUVWJ.mjs +0 -43
  493. package/dist/lib/browser/client-KIPUUVWJ.mjs.map +0 -7
  494. package/dist/lib/browser/intent-resolver-AUL6FRHW.mjs +0 -305
  495. package/dist/lib/browser/intent-resolver-AUL6FRHW.mjs.map +0 -7
  496. package/dist/lib/browser/migrations-RCNZRP3I.mjs +0 -23
  497. package/dist/lib/browser/migrations-RCNZRP3I.mjs.map +0 -7
  498. package/dist/lib/browser/react-context-JYJ63L5S.mjs +0 -25
  499. package/dist/lib/browser/react-context-JYJ63L5S.mjs.map +0 -7
  500. package/dist/lib/browser/react-surface-RCXEA65V.mjs +0 -66
  501. package/dist/lib/browser/react-surface-RCXEA65V.mjs.map +0 -7
  502. package/dist/lib/browser/schema-defs-JXPIP3K5.mjs +0 -25
  503. package/dist/lib/browser/schema-defs-JXPIP3K5.mjs.map +0 -7
  504. package/dist/lib/node-esm/app-graph-builder-4CVWKYZ6.mjs +0 -125
  505. package/dist/lib/node-esm/app-graph-builder-4CVWKYZ6.mjs.map +0 -7
  506. package/dist/lib/node-esm/chunk-7M7VWQJW.mjs +0 -20
  507. package/dist/lib/node-esm/chunk-7M7VWQJW.mjs.map +0 -7
  508. package/dist/lib/node-esm/chunk-DJ6XKSE4.mjs +0 -687
  509. package/dist/lib/node-esm/chunk-DJ6XKSE4.mjs.map +0 -7
  510. package/dist/lib/node-esm/chunk-DQDFIOXV.mjs +0 -18
  511. package/dist/lib/node-esm/chunk-DQDFIOXV.mjs.map +0 -7
  512. package/dist/lib/node-esm/chunk-QT3EQXDU.mjs.map +0 -7
  513. package/dist/lib/node-esm/chunk-VENKFPBC.mjs.map +0 -7
  514. package/dist/lib/node-esm/client-W5DQW2E7.mjs +0 -44
  515. package/dist/lib/node-esm/client-W5DQW2E7.mjs.map +0 -7
  516. package/dist/lib/node-esm/intent-resolver-UK6L6NJH.mjs +0 -306
  517. package/dist/lib/node-esm/intent-resolver-UK6L6NJH.mjs.map +0 -7
  518. package/dist/lib/node-esm/migrations-TZFOPRPE.mjs +0 -24
  519. package/dist/lib/node-esm/migrations-TZFOPRPE.mjs.map +0 -7
  520. package/dist/lib/node-esm/react-context-7BJGZI5D.mjs +0 -26
  521. package/dist/lib/node-esm/react-context-7BJGZI5D.mjs.map +0 -7
  522. package/dist/lib/node-esm/react-surface-SQBRXVMZ.mjs +0 -67
  523. package/dist/lib/node-esm/react-surface-SQBRXVMZ.mjs.map +0 -7
  524. package/dist/lib/node-esm/schema-defs-C6XNE5MT.mjs +0 -26
  525. package/dist/lib/node-esm/schema-defs-C6XNE5MT.mjs.map +0 -7
  526. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  527. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  528. package/dist/types/src/capabilities/capabilities.d.ts +0 -9
  529. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  530. package/dist/types/src/capabilities/client.d.ts +0 -9
  531. package/dist/types/src/capabilities/client.d.ts.map +0 -1
  532. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -8
  533. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  534. package/dist/types/src/capabilities/migrations.d.ts +0 -4
  535. package/dist/types/src/capabilities/migrations.d.ts.map +0 -1
  536. package/dist/types/src/capabilities/react-context.d.ts +0 -8
  537. package/dist/types/src/capabilities/react-context.d.ts.map +0 -1
  538. package/dist/types/src/capabilities/react-surface.d.ts +0 -8
  539. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  540. package/dist/types/src/capabilities/schema-defs.d.ts +0 -4
  541. package/dist/types/src/capabilities/schema-defs.d.ts.map +0 -1
  542. package/dist/types/src/components/DevicesContainer.d.ts.map +0 -1
  543. package/dist/types/src/components/DevicesContainer.stories.d.ts.map +0 -1
  544. package/dist/types/src/components/JoinDialog.d.ts.map +0 -1
  545. package/dist/types/src/components/ProfileContainer.d.ts.map +0 -1
  546. package/dist/types/src/components/ProfileContainer.stories.d.ts +0 -60
  547. package/dist/types/src/components/ProfileContainer.stories.d.ts.map +0 -1
  548. package/dist/types/src/components/RecoveryCodeDialog.d.ts.map +0 -1
  549. package/dist/types/src/components/RecoveryCodeDialog.stories.d.ts +0 -62
  550. package/dist/types/src/components/RecoveryCodeDialog.stories.d.ts.map +0 -1
  551. package/dist/types/src/components/RecoveryCredentialsContainer.d.ts.map +0 -1
  552. package/dist/types/src/components/RecoveryCredentialsContainer.stories.d.ts +0 -60
  553. package/dist/types/src/components/RecoveryCredentialsContainer.stories.d.ts.map +0 -1
  554. package/dist/types/src/components/ResetDialog.d.ts +0 -7
  555. package/dist/types/src/components/ResetDialog.d.ts.map +0 -1
  556. package/dist/types/src/components/ResetDialog.stories.d.ts +0 -65
  557. package/dist/types/src/components/ResetDialog.stories.d.ts.map +0 -1
  558. package/dist/types/src/events.d.ts +0 -8
  559. package/dist/types/src/events.d.ts.map +0 -1
  560. package/src/capabilities/app-graph-builder.ts +0 -115
  561. package/src/capabilities/capabilities.ts +0 -16
  562. package/src/capabilities/client.ts +0 -43
  563. package/src/capabilities/intent-resolver.ts +0 -251
  564. package/src/capabilities/migrations.ts +0 -25
  565. package/src/capabilities/react-context.tsx +0 -22
  566. package/src/capabilities/react-surface.tsx +0 -67
  567. package/src/capabilities/schema-defs.ts +0 -30
  568. package/src/components/JoinDialog.tsx +0 -54
  569. package/src/components/RecoveryCredentialsContainer.stories.tsx +0 -42
  570. package/src/components/ResetDialog.stories.tsx +0 -52
  571. package/src/components/ResetDialog.tsx +0 -50
  572. package/src/events.ts +0 -15
  573. /package/dist/types/src/{components → containers/DevicesContainer}/DevicesContainer.d.ts +0 -0
  574. /package/dist/types/src/{components → containers/ProfileContainer}/ProfileContainer.d.ts +0 -0
  575. /package/dist/types/src/{components → containers/RecoveryCredentialsContainer}/RecoveryCredentialsContainer.d.ts +0 -0
@@ -0,0 +1,270 @@
1
+ import "./chunk-RGQBPDPU.mjs";
2
+ import {
3
+ definitions_exports
4
+ } from "./chunk-5JMLFUGB.mjs";
5
+ import {
6
+ meta
7
+ } from "./chunk-JHSBBOCI.mjs";
8
+ import "./chunk-J5LGTIGS.mjs";
9
+
10
+ // src/containers/DevicesContainer/DevicesContainer.tsx
11
+ import React, { useCallback, useEffect, useState } from "react";
12
+ import { QR } from "react-qr-rounded";
13
+ import { useOperationInvoker } from "@dxos/app-framework/ui";
14
+ import { log } from "@dxos/log";
15
+ import { useClient, useMulticastObservable } from "@dxos/react-client";
16
+ import { useDevices } from "@dxos/react-client/halo";
17
+ import { Invitation, InvitationEncoder } from "@dxos/react-client/invitations";
18
+ import { useNetworkStatus } from "@dxos/react-client/mesh";
19
+ import { Button, Clipboard, Icon, IconButton, List, useId, useTranslation } from "@dxos/react-ui";
20
+ import { Settings } from "@dxos/react-ui-form";
21
+ import { AuthCode, Centered, DeviceListItem, Emoji, Viewport, translationKey } from "@dxos/shell/react";
22
+ import { osTranslations } from "@dxos/ui-theme";
23
+ import { hexToEmoji } from "@dxos/util";
24
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-client/src/containers/DevicesContainer/DevicesContainer.tsx";
25
+ var DevicesContainer = ({ createInvitationUrl }) => {
26
+ const { t } = useTranslation(translationKey);
27
+ const { invokePromise } = useOperationInvoker();
28
+ const devices = useDevices();
29
+ const { swarm: connectionState } = useNetworkStatus();
30
+ const handleResetStorage = useCallback(() => invokePromise(definitions_exports.ResetStorage, {}), [
31
+ invokePromise
32
+ ]);
33
+ const handleRecover = useCallback(() => invokePromise(definitions_exports.ResetStorage, {
34
+ mode: "recover"
35
+ }), [
36
+ invokePromise
37
+ ]);
38
+ const handleJoinNewIdentity = useCallback(() => invokePromise(definitions_exports.ResetStorage, {
39
+ mode: "join new identity"
40
+ }), [
41
+ invokePromise
42
+ ]);
43
+ return /* @__PURE__ */ React.createElement(Clipboard.Provider, null, /* @__PURE__ */ React.createElement(Settings.Root, null, /* @__PURE__ */ React.createElement(Settings.Section, {
44
+ title: t("devices verbose label", {
45
+ ns: meta.id
46
+ }),
47
+ description: t("devices description", {
48
+ ns: meta.id
49
+ })
50
+ }, /* @__PURE__ */ React.createElement(Settings.Frame, null, /* @__PURE__ */ React.createElement(Settings.FrameItem, {
51
+ title: t("devices label", {
52
+ ns: meta.id
53
+ })
54
+ }, /* @__PURE__ */ React.createElement(List, null, devices.map((device) => /* @__PURE__ */ React.createElement(DeviceListItem, {
55
+ key: device.deviceKey.toHex(),
56
+ device,
57
+ connectionState
58
+ })))), createInvitationUrl && /* @__PURE__ */ React.createElement(Settings.FrameItem, {
59
+ title: "Add device"
60
+ }, /* @__PURE__ */ React.createElement(DeviceInvitation, {
61
+ createInvitationUrl
62
+ })))), /* @__PURE__ */ React.createElement(Settings.Section, {
63
+ title: t("danger zone title", {
64
+ ns: meta.id
65
+ }),
66
+ description: t("danger zone description", {
67
+ ns: meta.id
68
+ })
69
+ }, /* @__PURE__ */ React.createElement(Settings.Group, null, /* @__PURE__ */ React.createElement(Settings.Item, {
70
+ title: t("reset device label"),
71
+ description: t("reset device description", {
72
+ ns: meta.id
73
+ })
74
+ }, /* @__PURE__ */ React.createElement(Button, {
75
+ variant: "destructive",
76
+ onClick: handleResetStorage,
77
+ "data-testid": "devicesContainer.reset"
78
+ }, t("reset device label"))), /* @__PURE__ */ React.createElement(Settings.Item, {
79
+ title: t("recover identity label"),
80
+ description: t("recover identity description", {
81
+ ns: meta.id
82
+ })
83
+ }, /* @__PURE__ */ React.createElement(Button, {
84
+ variant: "destructive",
85
+ onClick: handleRecover,
86
+ "data-testid": "devicesContainer.recover"
87
+ }, t("recover identity label"))), /* @__PURE__ */ React.createElement(Settings.Item, {
88
+ title: t("join new identity label"),
89
+ description: t("join new identity description", {
90
+ ns: meta.id
91
+ })
92
+ }, /* @__PURE__ */ React.createElement(Button, {
93
+ variant: "destructive",
94
+ onClick: handleJoinNewIdentity,
95
+ "data-testid": "devicesContainer.joinExisting"
96
+ }, t("join new identity label")))))));
97
+ };
98
+ var DeviceInvitation = (props) => {
99
+ const client = useClient();
100
+ const [invitation, setInvitation] = useState();
101
+ const onInvitationCreate = useCallback(() => {
102
+ const invitation2 = client.halo.share();
103
+ if (client.config.values.runtime?.app?.env?.DX_ENVIRONMENT !== "production") {
104
+ const subscription = invitation2.subscribe((invitation3) => {
105
+ const invitationCode = InvitationEncoder.encode(invitation3);
106
+ if (invitation3.state === Invitation.State.CONNECTING) {
107
+ log.info(JSON.stringify({
108
+ invitationCode,
109
+ authCode: invitation3.authCode
110
+ }), void 0, {
111
+ F: __dxlog_file,
112
+ L: 117,
113
+ S: void 0,
114
+ C: (f, a) => f(...a)
115
+ });
116
+ subscription.unsubscribe();
117
+ }
118
+ });
119
+ }
120
+ setInvitation(invitation2);
121
+ }, [
122
+ client
123
+ ]);
124
+ const onInvitationDone = useCallback(() => {
125
+ setInvitation(void 0);
126
+ }, []);
127
+ if (invitation) {
128
+ return /* @__PURE__ */ React.createElement(DeviceInvitationImpl, {
129
+ ...props,
130
+ invitation,
131
+ onInvitationCreate,
132
+ onInvitationDone
133
+ });
134
+ } else {
135
+ return /* @__PURE__ */ React.createElement(InvitationSection, {
136
+ ...props,
137
+ onInvitationCreate,
138
+ onInvitationDone
139
+ });
140
+ }
141
+ };
142
+ var DeviceInvitationImpl = ({ invitation: invitationObservable, createInvitationUrl, onInvitationDone, onInvitationCreate }) => {
143
+ const invitation = useMulticastObservable(invitationObservable);
144
+ const url = createInvitationUrl(InvitationEncoder.encode(invitation));
145
+ useEffect(() => {
146
+ if (invitation.state >= Invitation.State.SUCCESS) {
147
+ onInvitationDone();
148
+ }
149
+ }, [
150
+ invitation.state
151
+ ]);
152
+ return /* @__PURE__ */ React.createElement(InvitationSection, {
153
+ ...invitation,
154
+ url,
155
+ onInvitationDone,
156
+ onInvitationCreate
157
+ });
158
+ };
159
+ var InvitationSection = ({ state = -1, authCode, invitationId = "never", url = "never", onInvitationDone = () => {
160
+ }, onInvitationCreate = () => {
161
+ } }) => {
162
+ const { t } = useTranslation(meta.id);
163
+ const activeView = state < 0 ? "init" : state >= Invitation.State.CANCELLED ? "complete" : state >= Invitation.State.READY_FOR_AUTHENTICATION && authCode ? "auth-code" : "qr-code";
164
+ return activeView === "init" ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("p", {
165
+ className: "text-description mb-2"
166
+ }, t("add device description")), /* @__PURE__ */ React.createElement(IconButton, {
167
+ icon: "ph--plus--regular",
168
+ label: t("create device invitation label"),
169
+ disabled: state >= 0,
170
+ classNames: "w-full",
171
+ "data-testid": "devicesContainer.createInvitation",
172
+ onClick: onInvitationCreate
173
+ })) : /* @__PURE__ */ React.createElement(Viewport.Root, {
174
+ activeView
175
+ }, /* @__PURE__ */ React.createElement(Viewport.Views, null, /* @__PURE__ */ React.createElement(Viewport.View, {
176
+ id: "init"
177
+ }), /* @__PURE__ */ React.createElement(Viewport.View, {
178
+ id: "complete"
179
+ }, /* @__PURE__ */ React.createElement(InvitationComplete, {
180
+ statusValue: state
181
+ })), /* @__PURE__ */ React.createElement(Viewport.View, {
182
+ id: "auth-code"
183
+ }, /* @__PURE__ */ React.createElement(InvitationAuthCode, {
184
+ id: invitationId,
185
+ code: authCode ?? "never",
186
+ onCancel: onInvitationDone
187
+ })), /* @__PURE__ */ React.createElement(Viewport.View, {
188
+ id: "qr-code"
189
+ }, /* @__PURE__ */ React.createElement(InvitationQR, {
190
+ id: invitationId,
191
+ url,
192
+ onCancel: onInvitationDone
193
+ }))));
194
+ };
195
+ var InvitationQR = ({ id, url, onCancel }) => {
196
+ const { t } = useTranslation(osTranslations);
197
+ const qrLabel = useId("devices-container__qr-code");
198
+ const emoji = hexToEmoji(id);
199
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("p", {
200
+ className: "text-description"
201
+ }, t("qr code description", {
202
+ ns: meta.id
203
+ })), /* @__PURE__ */ React.createElement("div", {
204
+ role: "group",
205
+ className: "grid grid-cols-[1fr_min-content]"
206
+ }, /* @__PURE__ */ React.createElement("div", {
207
+ className: "flex justify-center py-4"
208
+ }, /* @__PURE__ */ React.createElement("div", {
209
+ role: "none",
210
+ className: "w-full md:max-w-80 aspect-square relative text-description"
211
+ }, /* @__PURE__ */ React.createElement(QR, {
212
+ rounding: 100,
213
+ backgroundColor: "transparent",
214
+ color: "currentColor",
215
+ "aria-labelledby": qrLabel,
216
+ errorCorrectionLevel: "Q",
217
+ cutout: true
218
+ }, url ?? "never"), /* @__PURE__ */ React.createElement(Centered, null, /* @__PURE__ */ React.createElement(Emoji, {
219
+ text: emoji
220
+ })))), /* @__PURE__ */ React.createElement("span", {
221
+ id: qrLabel,
222
+ className: "sr-only"
223
+ }, t("qr label"))), /* @__PURE__ */ React.createElement("div", {
224
+ className: "flex justify-center"
225
+ }, /* @__PURE__ */ React.createElement("div", {
226
+ className: "flex gap-2"
227
+ }, /* @__PURE__ */ React.createElement(Clipboard.Button, {
228
+ value: url ?? "never"
229
+ }), /* @__PURE__ */ React.createElement(Button, {
230
+ variant: "ghost",
231
+ onClick: onCancel
232
+ }, t("cancel label")))));
233
+ };
234
+ var InvitationAuthCode = ({ id, code, onCancel }) => {
235
+ const { t } = useTranslation(osTranslations);
236
+ const emoji = hexToEmoji(id);
237
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("p", {
238
+ className: "text-description"
239
+ }, t("auth other device emoji message")), emoji && /* @__PURE__ */ React.createElement(Emoji, {
240
+ text: emoji,
241
+ className: "mx-auto my-2 text-center"
242
+ }), /* @__PURE__ */ React.createElement("p", {
243
+ className: "text-description"
244
+ }, t("auth code message")), /* @__PURE__ */ React.createElement(AuthCode, {
245
+ code,
246
+ large: true,
247
+ classNames: "mx-auto my-2 text-center grow"
248
+ }), /* @__PURE__ */ React.createElement(Button, {
249
+ variant: "ghost",
250
+ onClick: onCancel
251
+ }, t("cancel label")));
252
+ };
253
+ var InvitationComplete = ({ statusValue }) => {
254
+ return statusValue > 0 ? /* @__PURE__ */ React.createElement(Icon, {
255
+ icon: "ph--check--regular",
256
+ size: 6,
257
+ classNames: "m-1.5"
258
+ }) : /* @__PURE__ */ React.createElement(Icon, {
259
+ icon: "ph--x--regular",
260
+ size: 6,
261
+ classNames: "m-1.5"
262
+ });
263
+ };
264
+
265
+ // src/containers/DevicesContainer/index.ts
266
+ var DevicesContainer_default = DevicesContainer;
267
+ export {
268
+ DevicesContainer_default as default
269
+ };
270
+ //# sourceMappingURL=DevicesContainer-6AMXWDQC.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/DevicesContainer/DevicesContainer.tsx", "../../../src/containers/DevicesContainer/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { QR } from 'react-qr-rounded';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { log } from '@dxos/log';\nimport { useClient, useMulticastObservable } from '@dxos/react-client';\nimport { type Device, useDevices } from '@dxos/react-client/halo';\nimport { type CancellableInvitationObservable, Invitation, InvitationEncoder } from '@dxos/react-client/invitations';\nimport { useNetworkStatus } from '@dxos/react-client/mesh';\nimport { Button, Clipboard, Icon, IconButton, List, useId, useTranslation } from '@dxos/react-ui';\nimport { Settings } from '@dxos/react-ui-form';\nimport { AuthCode, Centered, DeviceListItem, Emoji, Viewport, translationKey } from '@dxos/shell/react';\nimport { osTranslations } from '@dxos/ui-theme';\nimport { hexToEmoji } from '@dxos/util';\n\nimport { meta } from '../../meta';\nimport { ClientOperation } from '../../operations';\n\nexport type DevicesContainerProps = {\n createInvitationUrl?: (invitationCode: string) => string;\n};\n\nexport const DevicesContainer = ({ createInvitationUrl }: DevicesContainerProps) => {\n const { t } = useTranslation(translationKey);\n const { invokePromise } = useOperationInvoker();\n const devices = useDevices();\n const { swarm: connectionState } = useNetworkStatus();\n\n const handleResetStorage = useCallback(() => invokePromise(ClientOperation.ResetStorage, {}), [invokePromise]);\n\n const handleRecover = useCallback(\n () => invokePromise(ClientOperation.ResetStorage, { mode: 'recover' }),\n [invokePromise],\n );\n\n const handleJoinNewIdentity = useCallback(\n () => invokePromise(ClientOperation.ResetStorage, { mode: 'join new identity' }),\n [invokePromise],\n );\n\n return (\n <Clipboard.Provider>\n <Settings.Root>\n <Settings.Section\n title={t('devices verbose label', { ns: meta.id })}\n description={t('devices description', { ns: meta.id })}\n >\n <Settings.Frame>\n <Settings.FrameItem title={t('devices label', { ns: meta.id })}>\n <List>\n {devices.map((device: Device) => (\n <DeviceListItem key={device.deviceKey.toHex()} device={device} connectionState={connectionState} />\n ))}\n </List>\n </Settings.FrameItem>\n {createInvitationUrl && (\n <Settings.FrameItem title='Add device'>\n <DeviceInvitation createInvitationUrl={createInvitationUrl} />\n </Settings.FrameItem>\n )}\n </Settings.Frame>\n </Settings.Section>\n <Settings.Section\n title={t('danger zone title', { ns: meta.id })}\n description={t('danger zone description', { ns: meta.id })}\n >\n <Settings.Group>\n <Settings.Item title={t('reset device label')} description={t('reset device description', { ns: meta.id })}>\n <Button variant='destructive' onClick={handleResetStorage} data-testid='devicesContainer.reset'>\n {t('reset device label')}\n </Button>\n </Settings.Item>\n <Settings.Item\n title={t('recover identity label')}\n description={t('recover identity description', { ns: meta.id })}\n >\n <Button variant='destructive' onClick={handleRecover} data-testid='devicesContainer.recover'>\n {t('recover identity label')}\n </Button>\n </Settings.Item>\n <Settings.Item\n title={t('join new identity label')}\n description={t('join new identity description', { ns: meta.id })}\n >\n <Button variant='destructive' onClick={handleJoinNewIdentity} data-testid='devicesContainer.joinExisting'>\n {t('join new identity label')}\n </Button>\n </Settings.Item>\n </Settings.Group>\n </Settings.Section>\n </Settings.Root>\n </Clipboard.Provider>\n );\n};\n\ntype DeviceInvitationProps = {\n invitation?: CancellableInvitationObservable;\n createInvitationUrl: (invitationCode: string) => string;\n onInvitationDone: () => void;\n onInvitationCreate: () => void;\n};\n\nconst DeviceInvitation = (props: Pick<DeviceInvitationProps, 'createInvitationUrl'>) => {\n const client = useClient();\n const [invitation, setInvitation] = useState<CancellableInvitationObservable>();\n\n const onInvitationCreate = useCallback(() => {\n const invitation = client.halo.share();\n if (client.config.values.runtime?.app?.env?.DX_ENVIRONMENT !== 'production') {\n const subscription = invitation.subscribe((invitation: Invitation) => {\n const invitationCode = InvitationEncoder.encode(invitation);\n if (invitation.state === Invitation.State.CONNECTING) {\n log.info(JSON.stringify({ invitationCode, authCode: invitation.authCode }));\n subscription.unsubscribe();\n }\n });\n }\n setInvitation(invitation);\n }, [client]);\n\n const onInvitationDone = useCallback(() => {\n setInvitation(undefined);\n }, []);\n\n if (invitation) {\n return <DeviceInvitationImpl {...props} {...{ invitation, onInvitationCreate, onInvitationDone }} />;\n } else {\n return <InvitationSection {...props} {...{ onInvitationCreate, onInvitationDone }} />;\n }\n};\n\nconst DeviceInvitationImpl = ({\n invitation: invitationObservable,\n createInvitationUrl,\n onInvitationDone,\n onInvitationCreate,\n}: DeviceInvitationProps) => {\n const invitation = useMulticastObservable(invitationObservable!);\n const url = createInvitationUrl(InvitationEncoder.encode(invitation));\n\n useEffect(() => {\n if (invitation.state >= Invitation.State.SUCCESS) {\n onInvitationDone();\n }\n }, [invitation.state]);\n\n return <InvitationSection {...invitation} {...{ url, onInvitationDone, onInvitationCreate }} />;\n};\n\ntype InvitationComponentProps = Partial<\n Pick<Invitation, 'authCode' | 'invitationId'> &\n Pick<DeviceInvitationProps, 'onInvitationDone' | 'onInvitationCreate'> & {\n state: number;\n url: string;\n }\n>;\n\nconst InvitationSection = ({\n state = -1,\n authCode,\n invitationId = 'never',\n url = 'never',\n onInvitationDone = () => {},\n onInvitationCreate = () => {},\n}: InvitationComponentProps) => {\n const { t } = useTranslation(meta.id);\n const activeView =\n state < 0\n ? 'init'\n : state >= Invitation.State.CANCELLED\n ? 'complete'\n : state >= Invitation.State.READY_FOR_AUTHENTICATION && authCode\n ? 'auth-code'\n : 'qr-code';\n\n return activeView === 'init' ? (\n <>\n <p className='text-description mb-2'>{t('add device description')}</p>\n <IconButton\n icon='ph--plus--regular'\n label={t('create device invitation label')}\n disabled={state >= 0}\n classNames='w-full'\n data-testid='devicesContainer.createInvitation'\n onClick={onInvitationCreate}\n />\n </>\n ) : (\n <Viewport.Root activeView={activeView}>\n <Viewport.Views>\n <Viewport.View id='init'>\n {/* This view intentionally left blank while conditionally rendering the viewport. */}\n </Viewport.View>\n <Viewport.View id='complete'>\n <InvitationComplete statusValue={state} />\n </Viewport.View>\n <Viewport.View id='auth-code'>\n <InvitationAuthCode id={invitationId} code={authCode ?? 'never'} onCancel={onInvitationDone} />\n </Viewport.View>\n <Viewport.View id='qr-code'>\n <InvitationQR id={invitationId} url={url} onCancel={onInvitationDone} />\n </Viewport.View>\n </Viewport.Views>\n </Viewport.Root>\n );\n};\n\nconst InvitationQR = ({ id, url, onCancel }: { id: string; url: string; onCancel: () => void }) => {\n const { t } = useTranslation(osTranslations);\n const qrLabel = useId('devices-container__qr-code');\n const emoji = hexToEmoji(id);\n return (\n <>\n <p className='text-description'>{t('qr code description', { ns: meta.id })}</p>\n <div role='group' className='grid grid-cols-[1fr_min-content]'>\n <div className='flex justify-center py-4'>\n <div role='none' className='w-full md:max-w-80 aspect-square relative text-description'>\n <QR\n rounding={100}\n backgroundColor='transparent'\n color='currentColor'\n aria-labelledby={qrLabel}\n errorCorrectionLevel='Q'\n cutout={true}\n >\n {url ?? 'never'}\n </QR>\n <Centered>\n <Emoji text={emoji} />\n </Centered>\n </div>\n </div>\n <span id={qrLabel} className='sr-only'>\n {t('qr label')}\n </span>\n </div>\n {/* TODO(burdon): Factor out button bar */}\n <div className='flex justify-center'>\n <div className='flex gap-2'>\n <Clipboard.Button value={url ?? 'never'} />\n <Button variant='ghost' onClick={onCancel}>\n {t('cancel label')}\n </Button>\n </div>\n </div>\n </>\n );\n};\n\nconst InvitationAuthCode = ({ id, code, onCancel }: { id: string; code: string; onCancel: () => void }) => {\n const { t } = useTranslation(osTranslations);\n const emoji = hexToEmoji(id);\n\n return (\n <>\n <p className='text-description'>{t('auth other device emoji message')}</p>\n {emoji && <Emoji text={emoji} className='mx-auto my-2 text-center' />}\n <p className='text-description'>{t('auth code message')}</p>\n <AuthCode code={code} large classNames='mx-auto my-2 text-center grow' />\n <Button variant='ghost' onClick={onCancel}>\n {t('cancel label')}\n </Button>\n </>\n );\n};\n\nconst InvitationComplete = ({ statusValue }: { statusValue: number }) => {\n return statusValue > 0 ? (\n <Icon icon='ph--check--regular' size={6} classNames='m-1.5' />\n ) : (\n <Icon icon='ph--x--regular' size={6} classNames='m-1.5' />\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { DevicesContainer } from './DevicesContainer';\n\nexport default DevicesContainer;\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useCallback", "useEffect", "useState", "QR", "useOperationInvoker", "log", "useClient", "useMulticastObservable", "useDevices", "Invitation", "InvitationEncoder", "useNetworkStatus", "Button", "Clipboard", "Icon", "IconButton", "List", "useId", "useTranslation", "Settings", "AuthCode", "Centered", "DeviceListItem", "Emoji", "Viewport", "translationKey", "osTranslations", "hexToEmoji", "DevicesContainer", "createInvitationUrl", "t", "useTranslation", "translationKey", "invokePromise", "useOperationInvoker", "devices", "useDevices", "swarm", "connectionState", "useNetworkStatus", "handleResetStorage", "useCallback", "ClientOperation", "ResetStorage", "handleRecover", "mode", "handleJoinNewIdentity", "Clipboard", "Provider", "Settings", "Root", "Section", "title", "ns", "meta", "id", "description", "Frame", "FrameItem", "List", "map", "device", "DeviceListItem", "key", "deviceKey", "toHex", "DeviceInvitation", "Group", "Item", "Button", "variant", "onClick", "data-testid", "props", "client", "useClient", "invitation", "setInvitation", "useState", "onInvitationCreate", "halo", "share", "config", "values", "runtime", "app", "env", "DX_ENVIRONMENT", "subscription", "subscribe", "invitationCode", "InvitationEncoder", "encode", "state", "Invitation", "State", "CONNECTING", "log", "info", "JSON", "stringify", "authCode", "unsubscribe", "onInvitationDone", "undefined", "DeviceInvitationImpl", "InvitationSection", "invitationObservable", "useMulticastObservable", "url", "useEffect", "SUCCESS", "invitationId", "activeView", "CANCELLED", "READY_FOR_AUTHENTICATION", "p", "className", "IconButton", "icon", "label", "disabled", "classNames", "Viewport", "Views", "View", "InvitationComplete", "statusValue", "InvitationAuthCode", "code", "onCancel", "InvitationQR", "osTranslations", "qrLabel", "useId", "emoji", "hexToEmoji", "div", "role", "QR", "rounding", "backgroundColor", "color", "aria-labelledby", "errorCorrectionLevel", "cutout", "Centered", "Emoji", "text", "span", "value", "AuthCode", "large", "Icon", "size", "DevicesContainer"]
7
+ }
@@ -0,0 +1,61 @@
1
+ import "./chunk-RGQBPDPU.mjs";
2
+ import {
3
+ definitions_exports
4
+ } from "./chunk-5JMLFUGB.mjs";
5
+ import {
6
+ meta
7
+ } from "./chunk-JHSBBOCI.mjs";
8
+ import "./chunk-J5LGTIGS.mjs";
9
+
10
+ // src/containers/JoinDialog/JoinDialog.tsx
11
+ import React, { useCallback } from "react";
12
+ import { useOperationInvoker } from "@dxos/app-framework/ui";
13
+ import { LayoutOperation } from "@dxos/app-toolkit";
14
+ import { ObservabilityOperation } from "@dxos/plugin-observability/operations";
15
+ import { Dialog, useTranslation } from "@dxos/react-ui";
16
+ import { JoinPanel } from "@dxos/shell/react";
17
+ import { osTranslations } from "@dxos/ui-theme";
18
+ var JoinDialog = (props) => {
19
+ const { invokePromise } = useOperationInvoker();
20
+ const { t } = useTranslation(meta.id);
21
+ const handleCancelResetStorage = useCallback(() => invokePromise(definitions_exports.ShareIdentity), [
22
+ invokePromise
23
+ ]);
24
+ const handleDone = useCallback(async (result) => {
25
+ if (result?.identityKey) {
26
+ await Promise.all([
27
+ invokePromise(LayoutOperation.UpdateDialog, {
28
+ state: false
29
+ }),
30
+ invokePromise(ObservabilityOperation.SendEvent, {
31
+ name: props.initialDisposition === "recover-identity" ? "identity.recover" : "identity.join"
32
+ })
33
+ ]);
34
+ }
35
+ }, [
36
+ invokePromise
37
+ ]);
38
+ return /* @__PURE__ */ React.createElement(Dialog.Content, null, /* @__PURE__ */ React.createElement(Dialog.Header, null, /* @__PURE__ */ React.createElement(Dialog.Title, {
39
+ classNames: "sr-only"
40
+ }, t("join space label", {
41
+ ns: osTranslations
42
+ }))), /* @__PURE__ */ React.createElement(Dialog.Body, null, /* @__PURE__ */ React.createElement(JoinPanel, {
43
+ ...props,
44
+ mode: "halo-only",
45
+ exitActionParent: /* @__PURE__ */ React.createElement(Dialog.Close, {
46
+ asChild: true
47
+ }),
48
+ doneActionParent: /* @__PURE__ */ React.createElement(Dialog.Close, {
49
+ asChild: true
50
+ }),
51
+ onCancelResetStorage: handleCancelResetStorage,
52
+ onDone: handleDone
53
+ })));
54
+ };
55
+
56
+ // src/containers/JoinDialog/index.ts
57
+ var JoinDialog_default = JoinDialog;
58
+ export {
59
+ JoinDialog_default as default
60
+ };
61
+ //# sourceMappingURL=JoinDialog-V6E5PRDR.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/JoinDialog/JoinDialog.tsx", "../../../src/containers/JoinDialog/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { ObservabilityOperation } from '@dxos/plugin-observability/operations';\nimport { type InvitationResult } from '@dxos/react-client/invitations';\nimport { Dialog, useTranslation } from '@dxos/react-ui';\nimport { JoinPanel, type JoinPanelProps } from '@dxos/shell/react';\nimport { osTranslations } from '@dxos/ui-theme';\n\nimport { meta } from '../../meta';\nimport { ClientOperation } from '../../operations';\n\nexport const JoinDialog = (props: JoinPanelProps) => {\n const { invokePromise } = useOperationInvoker();\n const { t } = useTranslation(meta.id);\n\n const handleCancelResetStorage = useCallback(() => invokePromise(ClientOperation.ShareIdentity), [invokePromise]);\n\n const handleDone = useCallback(\n async (result: InvitationResult | null) => {\n if (result?.identityKey) {\n await Promise.all([\n invokePromise(LayoutOperation.UpdateDialog, { state: false }),\n invokePromise(ObservabilityOperation.SendEvent, {\n name: props.initialDisposition === 'recover-identity' ? 'identity.recover' : 'identity.join',\n }),\n ]);\n }\n },\n [invokePromise],\n );\n\n // TODO(burdon): Move JoinHeading into Dialog.Heading.\n return (\n <Dialog.Content>\n <Dialog.Header>\n <Dialog.Title classNames='sr-only'>{t('join space label', { ns: osTranslations })}</Dialog.Title>\n </Dialog.Header>\n <Dialog.Body>\n <JoinPanel\n {...props}\n mode='halo-only'\n exitActionParent={<Dialog.Close asChild />}\n doneActionParent={<Dialog.Close asChild />}\n onCancelResetStorage={handleCancelResetStorage}\n onDone={handleDone}\n />\n </Dialog.Body>\n </Dialog.Content>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { JoinDialog } from './JoinDialog';\n\nexport default JoinDialog;\n"],
5
+ "mappings": ";;;;;;;;;;AAIA,OAAOA,SAASC,mBAAmB;AAEnC,SAASC,2BAA2B;AACpC,SAASC,uBAAuB;AAChC,SAASC,8BAA8B;AAEvC,SAASC,QAAQC,sBAAsB;AACvC,SAASC,iBAAsC;AAC/C,SAASC,sBAAsB;AAKxB,IAAMC,aAAa,CAACC,UAAAA;AACzB,QAAM,EAAEC,cAAa,IAAKC,oBAAAA;AAC1B,QAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AAEpC,QAAMC,2BAA2BC,YAAY,MAAMP,cAAcQ,oBAAgBC,aAAa,GAAG;IAACT;GAAc;AAEhH,QAAMU,aAAaH,YACjB,OAAOI,WAAAA;AACL,QAAIA,QAAQC,aAAa;AACvB,YAAMC,QAAQC,IAAI;QAChBd,cAAce,gBAAgBC,cAAc;UAAEC,OAAO;QAAM,CAAA;QAC3DjB,cAAckB,uBAAuBC,WAAW;UAC9CC,MAAMrB,MAAMsB,uBAAuB,qBAAqB,qBAAqB;QAC/E,CAAA;OACD;IACH;EACF,GACA;IAACrB;GAAc;AAIjB,SACE,sBAAA,cAACsB,OAAOC,SAAO,MACb,sBAAA,cAACD,OAAOE,QAAM,MACZ,sBAAA,cAACF,OAAOG,OAAK;IAACC,YAAW;KAAWxB,EAAE,oBAAoB;IAAEyB,IAAIC;EAAe,CAAA,CAAA,CAAA,GAEjF,sBAAA,cAACN,OAAOO,MAAI,MACV,sBAAA,cAACC,WAAAA;IACE,GAAG/B;IACJgC,MAAK;IACLC,kBAAkB,sBAAA,cAACV,OAAOW,OAAK;MAACC,SAAAA;;IAChCC,kBAAkB,sBAAA,cAACb,OAAOW,OAAK;MAACC,SAAAA;;IAChCE,sBAAsB9B;IACtB+B,QAAQ3B;;AAKlB;;;ACjDA,IAAA,qBAAe4B;",
6
+ "names": ["React", "useCallback", "useOperationInvoker", "LayoutOperation", "ObservabilityOperation", "Dialog", "useTranslation", "JoinPanel", "osTranslations", "JoinDialog", "props", "invokePromise", "useOperationInvoker", "t", "useTranslation", "meta", "id", "handleCancelResetStorage", "useCallback", "ClientOperation", "ShareIdentity", "handleDone", "result", "identityKey", "Promise", "all", "LayoutOperation", "UpdateDialog", "state", "ObservabilityOperation", "SendEvent", "name", "initialDisposition", "Dialog", "Content", "Header", "Title", "classNames", "ns", "osTranslations", "Body", "JoinPanel", "mode", "exitActionParent", "Close", "asChild", "doneActionParent", "onCancelResetStorage", "onDone", "JoinDialog"]
7
+ }
@@ -0,0 +1,172 @@
1
+ import {
2
+ meta
3
+ } from "./chunk-JHSBBOCI.mjs";
4
+ import "./chunk-J5LGTIGS.mjs";
5
+
6
+ // src/containers/ProfileContainer/ProfileContainer.tsx
7
+ import * as Schema from "effect/Schema";
8
+ import React, { useCallback, useMemo, useState } from "react";
9
+ import { debounce } from "@dxos/async";
10
+ import { useClient } from "@dxos/react-client";
11
+ import { useIdentity } from "@dxos/react-client/halo";
12
+ import { ButtonGroup, Clipboard, Input, useTranslation } from "@dxos/react-ui";
13
+ import { Form, Settings } from "@dxos/react-ui-form";
14
+ import { EmojiPickerBlock, HuePicker } from "@dxos/react-ui-pickers";
15
+ import { hexToEmoji, hexToHue } from "@dxos/util";
16
+ var UserProfile = Schema.Struct({
17
+ did: Schema.String.annotations({
18
+ title: "DID"
19
+ }),
20
+ displayName: Schema.String.annotations({
21
+ title: "Display name"
22
+ }),
23
+ emoji: Schema.String.annotations({
24
+ title: "Avatar"
25
+ }),
26
+ hue: Schema.String.annotations({
27
+ title: "Color"
28
+ })
29
+ });
30
+ var getDefaultHueValue = (identity) => hexToHue(identity?.identityKey.toHex() ?? "0");
31
+ var getHueValue = (identity) => identity?.profile?.data?.hue || getDefaultHueValue(identity);
32
+ var getDefaultEmojiValue = (identity) => hexToEmoji(identity?.identityKey.toHex() ?? "0");
33
+ var getEmojiValue = (identity) => identity?.profile?.data?.emoji || getDefaultEmojiValue(identity);
34
+ var ProfileContainer = () => {
35
+ const { t } = useTranslation(meta.id);
36
+ const client = useClient();
37
+ const identity = useIdentity();
38
+ const [displayName, setDisplayNameDirectly] = useState(identity?.profile?.displayName ?? "");
39
+ const [emoji, setEmojiDirectly] = useState(getEmojiValue(identity));
40
+ const [hue, setHueDirectly] = useState(getHueValue(identity));
41
+ const updateProfile = useMemo(() => debounce((profile) => client.halo.updateProfile({
42
+ displayName: profile.displayName,
43
+ data: {
44
+ emoji: profile.emoji,
45
+ hue: profile.hue
46
+ }
47
+ }), 2e3), []);
48
+ const handleChange = useCallback((profile, meta2) => {
49
+ for (const [path, changed] of Object.entries(meta2.changed)) {
50
+ if (changed) {
51
+ switch (path) {
52
+ case "displayName":
53
+ setDisplayNameDirectly(profile.displayName ?? "");
54
+ break;
55
+ case "emoji":
56
+ setEmojiDirectly(profile.emoji ?? getDefaultEmojiValue(identity));
57
+ break;
58
+ case "hue":
59
+ setHueDirectly(profile.hue ?? getDefaultHueValue(identity));
60
+ break;
61
+ default:
62
+ break;
63
+ }
64
+ }
65
+ }
66
+ void updateProfile(profile);
67
+ }, [
68
+ identity
69
+ ]);
70
+ const values = useMemo(() => ({
71
+ did: identity?.did,
72
+ displayName,
73
+ emoji,
74
+ hue
75
+ }), [
76
+ identity,
77
+ displayName,
78
+ emoji,
79
+ hue
80
+ ]);
81
+ const fieldMap = useMemo(() => ({
82
+ displayName: ({ type, label, getValue, onValueChange }) => {
83
+ const handleChange2 = useCallback(({ target: { value } }) => onValueChange(type, value), [
84
+ onValueChange,
85
+ type
86
+ ]);
87
+ return /* @__PURE__ */ React.createElement(Settings.ItemInput, {
88
+ title: label,
89
+ description: t("display name description")
90
+ }, /* @__PURE__ */ React.createElement(Input.TextInput, {
91
+ value: getValue(),
92
+ onChange: handleChange2,
93
+ placeholder: t("display name input placeholder"),
94
+ classNames: "min-w-64"
95
+ }));
96
+ },
97
+ emoji: ({ type, label, getValue, onValueChange }) => {
98
+ const handleChange2 = useCallback((nextEmoji) => onValueChange(type, nextEmoji), [
99
+ onValueChange,
100
+ type
101
+ ]);
102
+ const handleEmojiReset = useCallback(() => onValueChange(type, getDefaultEmojiValue(identity)), [
103
+ onValueChange,
104
+ type
105
+ ]);
106
+ return /* @__PURE__ */ React.createElement(Settings.Item, {
107
+ title: label,
108
+ description: t("icon description")
109
+ }, /* @__PURE__ */ React.createElement(EmojiPickerBlock, {
110
+ triggerVariant: "default",
111
+ emoji: getValue(),
112
+ onChangeEmoji: handleChange2,
113
+ onClickClear: handleEmojiReset,
114
+ classNames: "justify-self-end"
115
+ }));
116
+ },
117
+ hue: ({ type, label, getValue, onValueChange }) => {
118
+ const handleChange2 = useCallback((nextHue) => onValueChange(type, nextHue), [
119
+ onValueChange,
120
+ type
121
+ ]);
122
+ const handleHueReset = useCallback(() => onValueChange(type, getDefaultHueValue(identity)), [
123
+ onValueChange,
124
+ type
125
+ ]);
126
+ return /* @__PURE__ */ React.createElement(Settings.Item, {
127
+ title: label,
128
+ description: t("hue description")
129
+ }, /* @__PURE__ */ React.createElement("div", {
130
+ role: "none",
131
+ className: "flex justify-self-end"
132
+ }, /* @__PURE__ */ React.createElement(HuePicker, {
133
+ value: getValue(),
134
+ onChange: handleChange2,
135
+ onReset: handleHueReset
136
+ })));
137
+ },
138
+ // TODO(wittjosiah): We need text input annotations for disabled and copyable.
139
+ did: ({ label, getValue }) => {
140
+ return /* @__PURE__ */ React.createElement(Settings.ItemInput, {
141
+ title: label,
142
+ description: t("did description")
143
+ }, /* @__PURE__ */ React.createElement(ButtonGroup, {
144
+ classNames: "w-full"
145
+ }, /* @__PURE__ */ React.createElement(Input.TextInput, {
146
+ value: getValue(),
147
+ disabled: true,
148
+ classNames: "min-w-64"
149
+ }), /* @__PURE__ */ React.createElement(Clipboard.IconButton, {
150
+ value: getValue() ?? ""
151
+ })));
152
+ }
153
+ }), [
154
+ t
155
+ ]);
156
+ return /* @__PURE__ */ React.createElement(Clipboard.Provider, null, /* @__PURE__ */ React.createElement(Settings.Root, null, /* @__PURE__ */ React.createElement(Settings.Section, {
157
+ title: t("profile label"),
158
+ description: t("profile description")
159
+ }, /* @__PURE__ */ React.createElement(Form.Root, {
160
+ schema: UserProfile,
161
+ values,
162
+ fieldMap,
163
+ onValuesChanged: handleChange
164
+ }, /* @__PURE__ */ React.createElement(Form.Content, null, /* @__PURE__ */ React.createElement(Form.FieldSet, null))))));
165
+ };
166
+
167
+ // src/containers/ProfileContainer/index.ts
168
+ var ProfileContainer_default = ProfileContainer;
169
+ export {
170
+ ProfileContainer_default as default
171
+ };
172
+ //# sourceMappingURL=ProfileContainer-NY67SRMY.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/ProfileContainer/ProfileContainer.tsx", "../../../src/containers/ProfileContainer/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\nimport React, { type ChangeEvent, useCallback, useMemo, useState } from 'react';\n\nimport { debounce } from '@dxos/async';\nimport { useClient } from '@dxos/react-client';\nimport { type Identity, useIdentity } from '@dxos/react-client/halo';\nimport { ButtonGroup, Clipboard, Input, useTranslation } from '@dxos/react-ui';\nimport { Form, type FormFieldMap, type FormUpdateMeta, Settings } from '@dxos/react-ui-form';\nimport { EmojiPickerBlock, HuePicker } from '@dxos/react-ui-pickers';\nimport { hexToEmoji, hexToHue } from '@dxos/util';\n\nimport { meta } from '../../meta';\n\n// TOOD(burdon): Factor out?\n// TODO(wittjosiah): Integrate annotations with translations.\nconst UserProfile = Schema.Struct({\n did: Schema.String.annotations({ title: 'DID' }),\n displayName: Schema.String.annotations({ title: 'Display name' }),\n emoji: Schema.String.annotations({ title: 'Avatar' }),\n hue: Schema.String.annotations({ title: 'Color' }),\n});\n\ntype UserProfile = Schema.Schema.Type<typeof UserProfile>;\n\n// TODO(thure): Factor out?\nconst getDefaultHueValue = (identity: Identity | null) => hexToHue(identity?.identityKey.toHex() ?? '0');\nconst getHueValue = (identity: Identity | null) => identity?.profile?.data?.hue || getDefaultHueValue(identity);\nconst getDefaultEmojiValue = (identity: Identity | null) => hexToEmoji(identity?.identityKey.toHex() ?? '0');\nconst getEmojiValue = (identity: Identity | null) => identity?.profile?.data?.emoji || getDefaultEmojiValue(identity);\n\nexport const ProfileContainer = () => {\n const { t } = useTranslation(meta.id);\n const client = useClient();\n const identity = useIdentity();\n const [displayName, setDisplayNameDirectly] = useState(identity?.profile?.displayName ?? '');\n const [emoji, setEmojiDirectly] = useState<string>(getEmojiValue(identity));\n const [hue, setHueDirectly] = useState<string>(getHueValue(identity));\n\n const updateProfile = useMemo(\n () =>\n debounce(\n (profile: Partial<UserProfile>) =>\n client.halo.updateProfile({\n displayName: profile.displayName,\n data: {\n emoji: profile.emoji,\n hue: profile.hue,\n },\n }),\n 2_000,\n ),\n [],\n );\n\n const handleChange = useCallback(\n (profile: Partial<UserProfile>, meta: FormUpdateMeta<UserProfile>) => {\n for (const [path, changed] of Object.entries(meta.changed)) {\n if (changed) {\n switch (path) {\n case 'displayName':\n setDisplayNameDirectly(profile.displayName ?? '');\n break;\n case 'emoji':\n setEmojiDirectly(profile.emoji ?? getDefaultEmojiValue(identity));\n break;\n case 'hue':\n setHueDirectly(profile.hue ?? getDefaultHueValue(identity));\n break;\n default:\n break;\n }\n }\n }\n\n void updateProfile(profile);\n },\n [identity],\n );\n\n const values = useMemo(\n () => ({\n did: identity?.did,\n displayName,\n emoji,\n hue,\n }),\n [identity, displayName, emoji, hue],\n );\n\n // TODO(wittjosiah): Integrate descriptions with the form schema.\n const fieldMap = useMemo<FormFieldMap>(\n () => ({\n displayName: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback(\n ({ target: { value } }: ChangeEvent<HTMLInputElement>) => onValueChange(type, value),\n [onValueChange, type],\n );\n\n return (\n <Settings.ItemInput title={label} description={t('display name description')}>\n <Input.TextInput\n value={getValue()}\n onChange={handleChange}\n placeholder={t('display name input placeholder')}\n classNames='min-w-64'\n />\n </Settings.ItemInput>\n );\n },\n emoji: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback((nextEmoji: string) => onValueChange(type, nextEmoji), [onValueChange, type]);\n const handleEmojiReset = useCallback(\n () => onValueChange(type, getDefaultEmojiValue(identity)),\n [onValueChange, type],\n );\n\n return (\n <Settings.Item title={label} description={t('icon description')}>\n <EmojiPickerBlock\n triggerVariant='default'\n emoji={getValue()}\n onChangeEmoji={handleChange}\n onClickClear={handleEmojiReset}\n classNames='justify-self-end'\n />\n </Settings.Item>\n );\n },\n hue: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback((nextHue: string) => onValueChange(type, nextHue), [onValueChange, type]);\n const handleHueReset = useCallback(\n () => onValueChange(type, getDefaultHueValue(identity)),\n [onValueChange, type],\n );\n\n return (\n <Settings.Item title={label} description={t('hue description')}>\n <div role='none' className='flex justify-self-end'>\n <HuePicker value={getValue()} onChange={handleChange} onReset={handleHueReset} />\n </div>\n </Settings.Item>\n );\n },\n // TODO(wittjosiah): We need text input annotations for disabled and copyable.\n did: ({ label, getValue }) => {\n return (\n <Settings.ItemInput title={label} description={t('did description')}>\n <ButtonGroup classNames='w-full'>\n <Input.TextInput value={getValue()} disabled classNames='min-w-64' />\n <Clipboard.IconButton value={getValue() ?? ''} />\n </ButtonGroup>\n </Settings.ItemInput>\n );\n },\n }),\n [t],\n );\n\n return (\n <Clipboard.Provider>\n <Settings.Root>\n <Settings.Section title={t('profile label')} description={t('profile description')}>\n <Form.Root schema={UserProfile} values={values} fieldMap={fieldMap} onValuesChanged={handleChange}>\n <Form.Content>\n <Form.FieldSet />\n </Form.Content>\n </Form.Root>\n </Settings.Section>\n </Settings.Root>\n </Clipboard.Provider>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { ProfileContainer } from './ProfileContainer';\n\nexport default ProfileContainer;\n"],
5
+ "mappings": "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",
6
+ "names": ["Schema", "React", "useCallback", "useMemo", "useState", "debounce", "useClient", "useIdentity", "ButtonGroup", "Clipboard", "Input", "useTranslation", "Form", "Settings", "EmojiPickerBlock", "HuePicker", "hexToEmoji", "hexToHue", "UserProfile", "Struct", "did", "String", "annotations", "title", "displayName", "emoji", "hue", "getDefaultHueValue", "identity", "hexToHue", "identityKey", "toHex", "getHueValue", "profile", "data", "getDefaultEmojiValue", "hexToEmoji", "getEmojiValue", "ProfileContainer", "t", "useTranslation", "meta", "id", "client", "useClient", "useIdentity", "setDisplayNameDirectly", "useState", "setEmojiDirectly", "setHueDirectly", "updateProfile", "useMemo", "debounce", "halo", "handleChange", "useCallback", "path", "changed", "Object", "entries", "values", "fieldMap", "type", "label", "getValue", "onValueChange", "target", "value", "Settings", "ItemInput", "description", "Input", "TextInput", "onChange", "placeholder", "classNames", "nextEmoji", "handleEmojiReset", "Item", "EmojiPickerBlock", "triggerVariant", "onChangeEmoji", "onClickClear", "nextHue", "handleHueReset", "div", "role", "className", "HuePicker", "onReset", "ButtonGroup", "disabled", "Clipboard", "IconButton", "Provider", "Root", "Section", "Form", "schema", "onValuesChanged", "Content", "FieldSet", "ProfileContainer"]
7
+ }