@dxos/plugin-space 0.8.4-main.84f28bd → 0.8.4-main.ae835ea

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 (310) hide show
  1. package/dist/lib/browser/CollectionMain-HTKSZCRR.mjs +31 -0
  2. package/dist/lib/browser/CollectionMain-HTKSZCRR.mjs.map +7 -0
  3. package/dist/lib/browser/ObjectDetailsPanel-5B45G744.mjs +145 -0
  4. package/dist/lib/browser/ObjectDetailsPanel-5B45G744.mjs.map +7 -0
  5. package/dist/lib/browser/ObjectSettings-UFTKBP7B.mjs +146 -0
  6. package/dist/lib/browser/ObjectSettings-UFTKBP7B.mjs.map +7 -0
  7. package/dist/lib/browser/RecordMain-BCSXTSEB.mjs +99 -0
  8. package/dist/lib/browser/RecordMain-BCSXTSEB.mjs.map +7 -0
  9. package/dist/lib/browser/app-graph-builder-QJFO4ANM.mjs +520 -0
  10. package/dist/lib/browser/app-graph-builder-QJFO4ANM.mjs.map +7 -0
  11. package/dist/lib/browser/{app-graph-serializer-UKYMBX4O.mjs → app-graph-serializer-3R5NVV7U.mjs} +14 -14
  12. package/dist/lib/browser/app-graph-serializer-3R5NVV7U.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-2NS3VPSY.mjs +20 -0
  14. package/dist/lib/browser/chunk-2NS3VPSY.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-6VLSHG4A.mjs → chunk-4V4JNJ33.mjs} +80 -10
  16. package/dist/lib/browser/chunk-4V4JNJ33.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-GVTXQCIW.mjs → chunk-ENBBJSNE.mjs} +482 -448
  18. package/dist/lib/browser/chunk-ENBBJSNE.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-HS2VD6DN.mjs +166 -0
  20. package/dist/lib/browser/chunk-HS2VD6DN.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-WBSEOLEM.mjs → chunk-OWNBEI5J.mjs} +221 -57
  22. package/dist/lib/browser/chunk-OWNBEI5J.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-S6NY637J.mjs → chunk-SLDQWMQ2.mjs} +77 -12
  24. package/dist/lib/browser/chunk-SLDQWMQ2.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-VZBIIYFM.mjs +16 -0
  26. package/dist/lib/browser/chunk-VZBIIYFM.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-WJXU4GKV.mjs +19 -0
  28. package/dist/lib/browser/chunk-WJXU4GKV.mjs.map +7 -0
  29. package/dist/lib/browser/{identity-created-23XJJV2N.mjs → identity-created-PW2BA46S.mjs} +4 -4
  30. package/dist/lib/browser/{identity-created-23XJJV2N.mjs.map → identity-created-PW2BA46S.mjs.map} +3 -3
  31. package/dist/lib/browser/index.mjs +109 -40
  32. package/dist/lib/browser/index.mjs.map +3 -3
  33. package/dist/lib/browser/{intent-resolver-WK5WYFH3.mjs → intent-resolver-MBVOLXFQ.mjs} +194 -32
  34. package/dist/lib/browser/intent-resolver-MBVOLXFQ.mjs.map +7 -0
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/{react-root-7S6FIC5G.mjs → react-root-NKEKCEYM.mjs} +11 -11
  37. package/dist/lib/browser/react-root-NKEKCEYM.mjs.map +7 -0
  38. package/dist/lib/browser/{react-surface-6C3YJNDK.mjs → react-surface-PYSN2MBY.mjs} +78 -77
  39. package/dist/lib/browser/react-surface-PYSN2MBY.mjs.map +7 -0
  40. package/dist/lib/browser/{schema-defs-K3B3OAH4.mjs → schema-defs-DWYK7TYW.mjs} +5 -5
  41. package/dist/lib/browser/schema-defs-DWYK7TYW.mjs.map +7 -0
  42. package/dist/lib/browser/{settings-XNWYRWNM.mjs → settings-ZUCC3ZLB.mjs} +5 -5
  43. package/dist/lib/browser/{settings-XNWYRWNM.mjs.map → settings-ZUCC3ZLB.mjs.map} +1 -1
  44. package/dist/lib/browser/{spaces-ready-K7NSNBHM.mjs → spaces-ready-HTWWJHLR.mjs} +18 -16
  45. package/dist/lib/browser/spaces-ready-HTWWJHLR.mjs.map +7 -0
  46. package/dist/lib/browser/{state-522XTUR4.mjs → state-ISVAKMO7.mjs} +7 -7
  47. package/dist/lib/browser/state-ISVAKMO7.mjs.map +7 -0
  48. package/dist/lib/browser/types/index.mjs +2 -2
  49. package/dist/lib/node-esm/CollectionMain-OUHGG6OC.mjs +32 -0
  50. package/dist/lib/node-esm/CollectionMain-OUHGG6OC.mjs.map +7 -0
  51. package/dist/lib/node-esm/ObjectDetailsPanel-4SDHQVQU.mjs +146 -0
  52. package/dist/lib/node-esm/ObjectDetailsPanel-4SDHQVQU.mjs.map +7 -0
  53. package/dist/lib/node-esm/ObjectSettings-EU6F43RP.mjs +147 -0
  54. package/dist/lib/node-esm/ObjectSettings-EU6F43RP.mjs.map +7 -0
  55. package/dist/lib/node-esm/RecordMain-SD76DGOR.mjs +100 -0
  56. package/dist/lib/node-esm/RecordMain-SD76DGOR.mjs.map +7 -0
  57. package/dist/lib/node-esm/{app-graph-builder-TO72W6MI.mjs → app-graph-builder-B23W62HY.mjs} +215 -58
  58. package/dist/lib/node-esm/app-graph-builder-B23W62HY.mjs.map +7 -0
  59. package/dist/lib/node-esm/{app-graph-serializer-LA3IZDXJ.mjs → app-graph-serializer-3Z3EXEEF.mjs} +14 -14
  60. package/dist/lib/node-esm/app-graph-serializer-3Z3EXEEF.mjs.map +7 -0
  61. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs +18 -0
  62. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-SXD6T2N4.mjs → chunk-G4PDWB7G.mjs} +80 -10
  64. package/dist/lib/node-esm/chunk-G4PDWB7G.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-H4JILUJK.mjs +20 -0
  66. package/dist/lib/node-esm/chunk-H4JILUJK.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-OUBADVJE.mjs → chunk-KKPCCA5O.mjs} +482 -448
  68. package/dist/lib/node-esm/chunk-KKPCCA5O.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-PM4ZIGKC.mjs +167 -0
  70. package/dist/lib/node-esm/chunk-PM4ZIGKC.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-HJJHLWKY.mjs → chunk-XEVIWD3O.mjs} +221 -57
  72. package/dist/lib/node-esm/chunk-XEVIWD3O.mjs.map +7 -0
  73. package/dist/lib/node-esm/{chunk-2THX6G4C.mjs → chunk-YFQXFQGT.mjs} +77 -12
  74. package/dist/lib/node-esm/chunk-YFQXFQGT.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-ZLMFLI7G.mjs +21 -0
  76. package/dist/lib/node-esm/chunk-ZLMFLI7G.mjs.map +7 -0
  77. package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs → identity-created-MWTLGQRU.mjs} +4 -4
  78. package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs.map → identity-created-MWTLGQRU.mjs.map} +3 -3
  79. package/dist/lib/node-esm/index.mjs +109 -40
  80. package/dist/lib/node-esm/index.mjs.map +3 -3
  81. package/dist/lib/node-esm/{intent-resolver-HSR27ME4.mjs → intent-resolver-IWI47NTW.mjs} +194 -32
  82. package/dist/lib/node-esm/intent-resolver-IWI47NTW.mjs.map +7 -0
  83. package/dist/lib/node-esm/meta.json +1 -1
  84. package/dist/lib/node-esm/{react-root-HUK3ANLV.mjs → react-root-LX7SIG6M.mjs} +11 -11
  85. package/dist/lib/node-esm/react-root-LX7SIG6M.mjs.map +7 -0
  86. package/dist/lib/node-esm/{react-surface-AGAWX7DD.mjs → react-surface-6SVGOZNJ.mjs} +78 -77
  87. package/dist/lib/node-esm/react-surface-6SVGOZNJ.mjs.map +7 -0
  88. package/dist/lib/node-esm/{schema-defs-4MCDG4DV.mjs → schema-defs-EOG2UPJU.mjs} +5 -5
  89. package/dist/lib/node-esm/schema-defs-EOG2UPJU.mjs.map +7 -0
  90. package/dist/lib/node-esm/{settings-YGKHGFPH.mjs → settings-ZDJNLFGW.mjs} +5 -5
  91. package/dist/lib/node-esm/{settings-YGKHGFPH.mjs.map → settings-ZDJNLFGW.mjs.map} +1 -1
  92. package/dist/lib/node-esm/{spaces-ready-UM2P3DCR.mjs → spaces-ready-VUGYPF4L.mjs} +18 -16
  93. package/dist/lib/node-esm/spaces-ready-VUGYPF4L.mjs.map +7 -0
  94. package/dist/lib/node-esm/{state-C4IOXPZP.mjs → state-QZ4Q6ZRL.mjs} +7 -7
  95. package/dist/lib/node-esm/state-QZ4Q6ZRL.mjs.map +7 -0
  96. package/dist/lib/node-esm/types/index.mjs +2 -2
  97. package/dist/types/src/SpacePlugin.d.ts +1 -1
  98. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  100. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/app-graph-serializer.d.ts +1 -1
  102. package/dist/types/src/capabilities/capabilities.d.ts +12 -5
  103. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/identity-created.d.ts +1 -1
  105. package/dist/types/src/capabilities/identity-created.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/index.d.ts +11 -12
  107. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  109. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/react-root.d.ts +2 -2
  111. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  113. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/schema-defs.d.ts +1 -1
  115. package/dist/types/src/capabilities/schema-defs.d.ts.map +1 -1
  116. package/dist/types/src/capabilities/settings.d.ts +1 -1
  117. package/dist/types/src/capabilities/spaces-ready.d.ts +1 -1
  118. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  119. package/dist/types/src/capabilities/state.d.ts +1 -1
  120. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  121. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  122. package/dist/types/src/components/CollectionMain.d.ts +1 -0
  123. package/dist/types/src/components/CollectionMain.d.ts.map +1 -1
  124. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +5 -4
  125. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  126. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1664 -4
  127. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  128. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +5 -3
  129. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  130. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -1
  131. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  132. package/dist/types/src/components/JoinDialog.d.ts +1 -1
  133. package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
  134. package/dist/types/src/components/MembersContainer.d.ts +3 -2
  135. package/dist/types/src/components/MembersContainer.d.ts.map +1 -1
  136. package/dist/types/src/components/MembersContainer.stories.d.ts +1664 -5
  137. package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -1
  138. package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
  139. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +9 -0
  140. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -0
  141. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts +10 -0
  142. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -0
  143. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts +3 -0
  144. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts.map +1 -0
  145. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  146. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +2 -2
  147. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
  148. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +1500 -0
  149. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -0
  150. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +1 -1
  151. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
  152. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -1
  153. package/dist/types/src/components/ObjectSettings/index.d.ts +2 -1
  154. package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -1
  155. package/dist/types/src/components/PersistenceStatus.d.ts.map +1 -1
  156. package/dist/types/src/components/PopoverRenameObject.d.ts +2 -2
  157. package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
  158. package/dist/types/src/components/PopoverRenameSpace.d.ts +1 -1
  159. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
  160. package/dist/types/src/components/RecordMain.d.ts +8 -0
  161. package/dist/types/src/components/RecordMain.d.ts.map +1 -0
  162. package/dist/types/src/components/RecordMain.stories.d.ts +1667 -0
  163. package/dist/types/src/components/RecordMain.stories.d.ts.map +1 -0
  164. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  165. package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
  166. package/dist/types/src/components/SpacePresence.stories.d.ts +1492 -4
  167. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  168. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  169. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1497 -4
  170. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  171. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +1 -1
  172. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  173. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1498 -5
  174. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  175. package/dist/types/src/components/SyncStatus/status.d.ts +5 -5
  176. package/dist/types/src/components/ViewEditor.d.ts +8 -0
  177. package/dist/types/src/components/ViewEditor.d.ts.map +1 -0
  178. package/dist/types/src/components/index.d.ts +13 -2
  179. package/dist/types/src/components/index.d.ts.map +1 -1
  180. package/dist/types/src/events.d.ts +1 -0
  181. package/dist/types/src/events.d.ts.map +1 -1
  182. package/dist/types/src/hooks/index.d.ts +1 -0
  183. package/dist/types/src/hooks/index.d.ts.map +1 -1
  184. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  185. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +1 -1
  186. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  187. package/dist/types/src/hooks/usePath.d.ts +1 -1
  188. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  189. package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
  190. package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
  191. package/dist/types/src/meta.d.ts +0 -1
  192. package/dist/types/src/meta.d.ts.map +1 -1
  193. package/dist/types/src/translations.d.ts +1342 -11
  194. package/dist/types/src/translations.d.ts.map +1 -1
  195. package/dist/types/src/types/types.d.ts +128 -66
  196. package/dist/types/src/types/types.d.ts.map +1 -1
  197. package/dist/types/src/util.d.ts +37 -7
  198. package/dist/types/src/util.d.ts.map +1 -1
  199. package/dist/types/tsconfig.tsbuildinfo +1 -1
  200. package/package.json +63 -60
  201. package/src/SpacePlugin.ts +201 -139
  202. package/src/capabilities/app-graph-builder.ts +265 -47
  203. package/src/capabilities/app-graph-serializer.ts +7 -7
  204. package/src/capabilities/capabilities.ts +20 -9
  205. package/src/capabilities/identity-created.ts +1 -1
  206. package/src/capabilities/index.ts +0 -1
  207. package/src/capabilities/intent-resolver.ts +147 -21
  208. package/src/capabilities/react-root.tsx +4 -3
  209. package/src/capabilities/react-surface.tsx +79 -99
  210. package/src/capabilities/schema-defs.ts +3 -2
  211. package/src/capabilities/spaces-ready.ts +11 -8
  212. package/src/capabilities/state.ts +5 -4
  213. package/src/components/AwaitingObject.tsx +7 -9
  214. package/src/components/CollectionMain.tsx +4 -2
  215. package/src/components/CollectionSection.tsx +2 -2
  216. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +11 -10
  217. package/src/components/CreateDialog/CreateObjectDialog.tsx +51 -36
  218. package/src/components/CreateDialog/CreateObjectPanel.tsx +22 -11
  219. package/src/components/CreateDialog/CreateSpaceDialog.tsx +6 -5
  220. package/src/components/JoinDialog.tsx +7 -7
  221. package/src/components/MembersContainer.stories.tsx +36 -10
  222. package/src/components/MembersContainer.tsx +18 -17
  223. package/src/components/MenuFooter.tsx +4 -5
  224. package/src/components/ObjectDetailsPanel/ObjectDetailsPanel.tsx +52 -0
  225. package/src/components/ObjectDetailsPanel/ObjectForm.tsx +75 -0
  226. package/src/components/ObjectDetailsPanel/index.ts +7 -0
  227. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +4 -3
  228. package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
  229. package/src/components/ObjectSettings/BaseObjectSettings.tsx +86 -26
  230. package/src/components/ObjectSettings/ForeignKeys.tsx +3 -3
  231. package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +3 -2
  232. package/src/components/ObjectSettings/index.ts +3 -1
  233. package/src/components/PersistenceStatus.tsx +7 -8
  234. package/src/components/PopoverRenameObject.tsx +10 -16
  235. package/src/components/PopoverRenameSpace.tsx +4 -4
  236. package/src/components/RecordMain.stories.tsx +116 -0
  237. package/src/components/RecordMain.tsx +83 -0
  238. package/src/components/SchemaContainer.tsx +5 -5
  239. package/src/components/SpacePluginSettings.tsx +8 -9
  240. package/src/components/SpacePresence.stories.tsx +23 -22
  241. package/src/components/SpacePresence.tsx +10 -10
  242. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +17 -9
  243. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +19 -18
  244. package/src/components/SyncStatus/InlineSyncStatus.tsx +7 -7
  245. package/src/components/SyncStatus/SyncStatus.stories.tsx +9 -9
  246. package/src/components/SyncStatus/SyncStatus.tsx +98 -7
  247. package/src/components/SyncStatus/status.ts +4 -4
  248. package/src/components/ViewEditor.tsx +58 -0
  249. package/src/components/index.ts +8 -2
  250. package/src/events.ts +7 -6
  251. package/src/hooks/index.ts +1 -0
  252. package/src/hooks/useActiveSpace.ts +2 -2
  253. package/src/hooks/useInputSurfaceLookup.tsx +2 -2
  254. package/src/hooks/usePath.ts +1 -1
  255. package/src/hooks/useTypeOptions.ts +59 -0
  256. package/src/meta.ts +6 -3
  257. package/src/translations.ts +77 -5
  258. package/src/types/types.ts +78 -16
  259. package/src/util.tsx +215 -57
  260. package/dist/lib/browser/app-graph-builder-PMDF6PJV.mjs +0 -363
  261. package/dist/lib/browser/app-graph-builder-PMDF6PJV.mjs.map +0 -7
  262. package/dist/lib/browser/app-graph-serializer-UKYMBX4O.mjs.map +0 -7
  263. package/dist/lib/browser/chunk-6VLSHG4A.mjs.map +0 -7
  264. package/dist/lib/browser/chunk-C7KGJTAL.mjs +0 -18
  265. package/dist/lib/browser/chunk-C7KGJTAL.mjs.map +0 -7
  266. package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
  267. package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
  268. package/dist/lib/browser/chunk-GVTXQCIW.mjs.map +0 -7
  269. package/dist/lib/browser/chunk-S6NY637J.mjs.map +0 -7
  270. package/dist/lib/browser/chunk-VLBRSGJ2.mjs +0 -94
  271. package/dist/lib/browser/chunk-VLBRSGJ2.mjs.map +0 -7
  272. package/dist/lib/browser/chunk-WBSEOLEM.mjs.map +0 -7
  273. package/dist/lib/browser/chunk-XXIPJLJF.mjs +0 -19
  274. package/dist/lib/browser/chunk-XXIPJLJF.mjs.map +0 -7
  275. package/dist/lib/browser/intent-resolver-WK5WYFH3.mjs.map +0 -7
  276. package/dist/lib/browser/react-root-7S6FIC5G.mjs.map +0 -7
  277. package/dist/lib/browser/react-surface-6C3YJNDK.mjs.map +0 -7
  278. package/dist/lib/browser/schema-defs-K3B3OAH4.mjs.map +0 -7
  279. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs +0 -124
  280. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs.map +0 -7
  281. package/dist/lib/browser/spaces-ready-K7NSNBHM.mjs.map +0 -7
  282. package/dist/lib/browser/state-522XTUR4.mjs.map +0 -7
  283. package/dist/lib/node-esm/app-graph-builder-TO72W6MI.mjs.map +0 -7
  284. package/dist/lib/node-esm/app-graph-serializer-LA3IZDXJ.mjs.map +0 -7
  285. package/dist/lib/node-esm/chunk-2THX6G4C.mjs.map +0 -7
  286. package/dist/lib/node-esm/chunk-72QMMRKC.mjs +0 -19
  287. package/dist/lib/node-esm/chunk-72QMMRKC.mjs.map +0 -7
  288. package/dist/lib/node-esm/chunk-AT7LGFER.mjs +0 -20
  289. package/dist/lib/node-esm/chunk-AT7LGFER.mjs.map +0 -7
  290. package/dist/lib/node-esm/chunk-HJJHLWKY.mjs.map +0 -7
  291. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs +0 -15
  292. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
  293. package/dist/lib/node-esm/chunk-OUBADVJE.mjs.map +0 -7
  294. package/dist/lib/node-esm/chunk-SSLBYZEY.mjs +0 -96
  295. package/dist/lib/node-esm/chunk-SSLBYZEY.mjs.map +0 -7
  296. package/dist/lib/node-esm/chunk-SXD6T2N4.mjs.map +0 -7
  297. package/dist/lib/node-esm/intent-resolver-HSR27ME4.mjs.map +0 -7
  298. package/dist/lib/node-esm/react-root-HUK3ANLV.mjs.map +0 -7
  299. package/dist/lib/node-esm/react-surface-AGAWX7DD.mjs.map +0 -7
  300. package/dist/lib/node-esm/schema-defs-4MCDG4DV.mjs.map +0 -7
  301. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs +0 -126
  302. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs.map +0 -7
  303. package/dist/lib/node-esm/spaces-ready-UM2P3DCR.mjs.map +0 -7
  304. package/dist/lib/node-esm/state-C4IOXPZP.mjs.map +0 -7
  305. package/dist/types/src/capabilities/schema-tool.test.d.ts +0 -2
  306. package/dist/types/src/capabilities/schema-tool.test.d.ts.map +0 -1
  307. package/dist/types/src/capabilities/schema-tools.d.ts +0 -13
  308. package/dist/types/src/capabilities/schema-tools.d.ts.map +0 -1
  309. package/src/capabilities/schema-tool.test.ts +0 -44
  310. package/src/capabilities/schema-tools.ts +0 -125
@@ -1,32 +1,29 @@
1
1
  import {
2
2
  useInputSurfaceLookup,
3
3
  usePath
4
- } from "./chunk-VLBRSGJ2.mjs";
4
+ } from "./chunk-HS2VD6DN.mjs";
5
5
  import {
6
6
  SpaceCapabilities
7
- } from "./chunk-XXIPJLJF.mjs";
7
+ } from "./chunk-2NS3VPSY.mjs";
8
8
  import {
9
9
  COMPOSER_SPACE_LOCK,
10
10
  getSpaceDisplayName
11
- } from "./chunk-WBSEOLEM.mjs";
11
+ } from "./chunk-OWNBEI5J.mjs";
12
12
  import {
13
13
  SpaceAction,
14
14
  SpaceForm
15
- } from "./chunk-S6NY637J.mjs";
15
+ } from "./chunk-SLDQWMQ2.mjs";
16
16
  import {
17
- SPACE_PLUGIN,
18
17
  meta
19
- } from "./chunk-FBCGT5YY.mjs";
18
+ } from "./chunk-VZBIIYFM.mjs";
20
19
 
21
20
  // src/components/AwaitingObject.tsx
22
21
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
23
- import { CheckCircle, CircleDashed, CircleNotch } from "@phosphor-icons/react";
24
22
  import React, { useCallback, useEffect, useState } from "react";
25
- import { createIntent, LayoutAction, useIntentDispatcher, useLayout } from "@dxos/app-framework";
23
+ import { LayoutAction, createIntent, useIntentDispatcher, useLayout } from "@dxos/app-framework";
26
24
  import { useClient } from "@dxos/react-client";
27
25
  import { Filter, fullyQualifiedId, useQuery } from "@dxos/react-client/echo";
28
- import { Button, Toast, useTranslation } from "@dxos/react-ui";
29
- import { getSize, mx } from "@dxos/react-ui-theme";
26
+ import { Button, Icon, Toast, useTranslation } from "@dxos/react-ui";
30
27
  var WAIT_FOR_OBJECT_TIMEOUT = 18e4;
31
28
  var TOAST_TIMEOUT = 24e4;
32
29
  var AwaitingObject = ({ id }) => {
@@ -35,7 +32,7 @@ var AwaitingObject = ({ id }) => {
35
32
  const [open, setOpen] = useState(true);
36
33
  const [waiting, setWaiting] = useState(true);
37
34
  const [found, setFound] = useState(false);
38
- const { t } = useTranslation(SPACE_PLUGIN);
35
+ const { t } = useTranslation(meta.id);
39
36
  const { dispatchPromise: dispatch } = useIntentDispatcher();
40
37
  const layout = useLayout();
41
38
  const client = useClient();
@@ -87,12 +84,16 @@ var AwaitingObject = ({ id }) => {
87
84
  onOpenChange: setOpen
88
85
  }, /* @__PURE__ */ React.createElement(Toast.Body, null, /* @__PURE__ */ React.createElement(Toast.Title, {
89
86
  classNames: "flex items-center gap-2"
90
- }, found ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(CheckCircle, {
91
- className: getSize(5)
92
- }), /* @__PURE__ */ React.createElement("span", null, t("found object label"))) : waiting ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(CircleNotch, {
93
- className: mx(getSize(5), "animate-spin")
94
- }), /* @__PURE__ */ React.createElement("span", null, t("waiting for object label"))) : /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(CircleDashed, {
95
- className: getSize(5)
87
+ }, found ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Icon, {
88
+ icon: "ph--check-circle--regular",
89
+ size: 5
90
+ }), /* @__PURE__ */ React.createElement("span", null, t("found object label"))) : waiting ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Icon, {
91
+ icon: "ph--circle-notch--regular",
92
+ size: 5,
93
+ classNames: "animate-spin"
94
+ }), /* @__PURE__ */ React.createElement("span", null, t("waiting for object label"))) : /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Icon, {
95
+ icon: "ph--circle-dashed--regular",
96
+ size: 5
96
97
  }), /* @__PURE__ */ React.createElement("span", null, t("object not found label")))), /* @__PURE__ */ React.createElement(Toast.Description, null, t(found ? "found object description" : waiting ? "waiting for object description" : "object not found description"))), /* @__PURE__ */ React.createElement(Toast.Actions, null, found ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Toast.Action, {
97
98
  altText: t("go to object alt"),
98
99
  asChild: true
@@ -119,34 +120,43 @@ var AwaitingObject = ({ id }) => {
119
120
 
120
121
  // src/components/CreateDialog/CreateObjectDialog.tsx
121
122
  import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
122
- import { pipe } from "effect";
123
+ import * as Effect from "effect/Effect";
124
+ import * as Function from "effect/Function";
123
125
  import React3, { useCallback as useCallback3, useRef, useState as useState2 } from "react";
124
126
  import { Capabilities, LayoutAction as LayoutAction2, chain, createIntent as createIntent2, useCapabilities, useIntentDispatcher as useIntentDispatcher2, usePluginManager } from "@dxos/app-framework";
125
- import { Query, Type as Type2 } from "@dxos/echo";
127
+ import { Obj, Query, Type as Type2 } from "@dxos/echo";
126
128
  import { invariant } from "@dxos/invariant";
127
129
  import { useClient as useClient2 } from "@dxos/react-client";
128
130
  import { getSpace, isLiveObject, isSpace, useQuery as useQuery2, useSpaces } from "@dxos/react-client/echo";
129
- import { Button as Button2, Dialog, Icon as Icon2, useTranslation as useTranslation3 } from "@dxos/react-ui";
131
+ import { Button as Button2, Dialog, Icon as Icon3, useTranslation as useTranslation3 } from "@dxos/react-ui";
130
132
  import { cardDialogContent, cardDialogHeader } from "@dxos/react-ui-stack";
131
- import { DataType } from "@dxos/schema";
133
+ import { DataType, getTypenameFromQuery } from "@dxos/schema";
132
134
  import { isNonNullable as isNonNullable2 } from "@dxos/util";
133
135
 
134
136
  // src/components/CreateDialog/CreateObjectPanel.tsx
135
137
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
138
+ import * as Option from "effect/Option";
136
139
  import React2, { useCallback as useCallback2 } from "react";
137
140
  import { Type } from "@dxos/echo";
138
- import { getTypeAnnotation } from "@dxos/echo-schema";
139
- import { Icon, toLocalizedString, useTranslation as useTranslation2 } from "@dxos/react-ui";
141
+ import { ViewAnnotation, getTypeAnnotation } from "@dxos/echo/internal";
142
+ import { Icon as Icon2, toLocalizedString, useDefaultValue, useTranslation as useTranslation2 } from "@dxos/react-ui";
140
143
  import { Form } from "@dxos/react-ui-form";
141
144
  import { SearchList } from "@dxos/react-ui-searchlist";
142
145
  import { cardDialogOverflow, cardDialogPaddedOverflow, cardDialogSearchListRoot } from "@dxos/react-ui-stack";
143
146
  import { isNonNullable } from "@dxos/util";
144
- var CreateObjectPanel = ({ forms, spaces, typename, target, name: initialName, defaultSpaceId, resolve, onTargetChange, onTypenameChange, onCreateObject }) => {
147
+ var CreateObjectPanel = ({ forms, spaces, typename, target, views, initialFormValues: _initialFormValues, defaultSpaceId, resolve, onTargetChange, onTypenameChange, onCreateObject }) => {
145
148
  var _effect = _useSignals2();
146
149
  try {
147
- const { t } = useTranslation2(SPACE_PLUGIN);
150
+ const { t } = useTranslation2(meta.id);
151
+ const initialFormValues = useDefaultValue(_initialFormValues, () => ({}));
148
152
  const form = forms.find((form2) => Type.getTypename(form2.objectSchema) === typename);
149
- const options = forms.map((form2) => getTypeAnnotation(form2.objectSchema)).filter(isNonNullable).sort((a, b) => {
153
+ const options = forms.filter((form2) => {
154
+ if (views == null) {
155
+ return true;
156
+ } else {
157
+ return views === ViewAnnotation.get(form2.objectSchema).pipe(Option.getOrElse(() => false));
158
+ }
159
+ }).map((form2) => getTypeAnnotation(form2.objectSchema)).filter(isNonNullable).sort((a, b) => {
150
160
  const nameA = t("typename label", {
151
161
  ns: a.typename,
152
162
  defaultValue: a.typename
@@ -198,9 +208,7 @@ var CreateObjectPanel = ({ forms, spaces, typename, target, name: initialName, d
198
208
  className: cardDialogOverflow
199
209
  }, /* @__PURE__ */ React2.createElement(Form, {
200
210
  autoFocus: true,
201
- values: {
202
- name: initialName
203
- },
211
+ values: initialFormValues,
204
212
  schema: form.formSchema,
205
213
  testId: "create-object-form",
206
214
  onSave: handleCreateObject,
@@ -214,7 +222,7 @@ var CreateObjectPanel = ({ forms, spaces, typename, target, name: initialName, d
214
222
  var SelectSpace = ({ spaces, defaultSpaceId, onChange }) => {
215
223
  var _effect = _useSignals2();
216
224
  try {
217
- const { t } = useTranslation2(SPACE_PLUGIN);
225
+ const { t } = useTranslation2(meta.id);
218
226
  return /* @__PURE__ */ React2.createElement(SearchList.Root, {
219
227
  label: t("space input label"),
220
228
  classNames: cardDialogSearchListRoot
@@ -254,7 +262,7 @@ var SelectSpace = ({ spaces, defaultSpaceId, onChange }) => {
254
262
  var SelectSchema = ({ options, resolve, onChange }) => {
255
263
  var _effect = _useSignals2();
256
264
  try {
257
- const { t } = useTranslation2(SPACE_PLUGIN);
265
+ const { t } = useTranslation2(meta.id);
258
266
  return /* @__PURE__ */ React2.createElement(SearchList.Root, {
259
267
  label: t("schema input label"),
260
268
  classNames: cardDialogSearchListRoot
@@ -274,7 +282,7 @@ var SelectSchema = ({ options, resolve, onChange }) => {
274
282
  classNames: "flex items-center gap-2"
275
283
  }, /* @__PURE__ */ React2.createElement("span", {
276
284
  className: "flex gap-2 items-center grow truncate"
277
- }, /* @__PURE__ */ React2.createElement(Icon, {
285
+ }, /* @__PURE__ */ React2.createElement(Icon2, {
278
286
  icon: resolve?.(option.typename).icon ?? "ph--placeholder--regular",
279
287
  size: 5
280
288
  }), t("typename label", {
@@ -286,42 +294,28 @@ var SelectSchema = ({ options, resolve, onChange }) => {
286
294
  }
287
295
  };
288
296
 
289
- // src/capabilities/index.ts
290
- import { lazy } from "@dxos/app-framework";
291
- var AppGraphBuilder = lazy(() => import("./app-graph-builder-PMDF6PJV.mjs"));
292
- var AppGraphSerializer = lazy(() => import("./app-graph-serializer-UKYMBX4O.mjs"));
293
- var IdentityCreated = lazy(() => import("./identity-created-23XJJV2N.mjs"));
294
- var IntentResolver = lazy(() => import("./intent-resolver-WK5WYFH3.mjs"));
295
- var ReactRoot = lazy(() => import("./react-root-7S6FIC5G.mjs"));
296
- var ReactSurface = lazy(() => import("./react-surface-6C3YJNDK.mjs"));
297
- var SchemaDefs = lazy(() => import("./schema-defs-K3B3OAH4.mjs"));
298
- var SchemaTools = lazy(() => import("./schema-tools-BNP4JTD7.mjs"));
299
- var SpaceSettings = lazy(() => import("./settings-XNWYRWNM.mjs"));
300
- var SpaceState = lazy(() => import("./state-522XTUR4.mjs"));
301
- var SpacesReady = lazy(() => import("./spaces-ready-K7NSNBHM.mjs"));
302
-
303
297
  // src/components/CreateDialog/CreateObjectDialog.tsx
304
298
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/CreateDialog/CreateObjectDialog.tsx";
305
- var CREATE_OBJECT_DIALOG = `${SPACE_PLUGIN}/CreateObjectDialog`;
306
- var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, name, shouldNavigate: _shouldNavigate }) => {
299
+ var CREATE_OBJECT_DIALOG = `${meta.id}/CreateObjectDialog`;
300
+ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, views, initialFormValues, onCreateObject, shouldNavigate: _shouldNavigate }) => {
307
301
  var _effect = _useSignals3();
308
302
  try {
309
303
  const closeRef = useRef(null);
310
304
  const manager = usePluginManager();
311
- const { t } = useTranslation3(SPACE_PLUGIN);
305
+ const { t } = useTranslation3(meta.id);
312
306
  const client = useClient2();
313
307
  const spaces = useSpaces();
314
- const { dispatchPromise: dispatch } = useIntentDispatcher2();
308
+ const { dispatch } = useIntentDispatcher2();
315
309
  const forms = useCapabilities(SpaceCapabilities.ObjectForm);
316
310
  const [target, setTarget] = useState2(initialTarget);
317
311
  const [typename, setTypename] = useState2(initialTypename);
318
312
  const space = isSpace(target) ? target : getSpace(target);
319
313
  const queryCollections = useQuery2(space, Query.type(DataType.QueryCollection));
320
- const hiddenTypenames = queryCollections.map((collection) => collection.query.typename).filter(isNonNullable2);
314
+ const hiddenTypenames = queryCollections.map((collection) => getTypenameFromQuery(collection.query)).filter(isNonNullable2);
321
315
  const resolve = useCallback3((typename2) => manager.context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename2)?.metadata ?? {}, [
322
316
  manager
323
317
  ]);
324
- const handleCreateObject = useCallback3(async ({ form, data = {} }) => {
318
+ const handleCreateObject = useCallback3(({ form, data = {} }) => Effect.gen(function* () {
325
319
  if (!target) {
326
320
  return;
327
321
  }
@@ -329,18 +323,17 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, na
329
323
  const space2 = isSpace(target) ? target : getSpace(target);
330
324
  invariant(space2, "Missing space", {
331
325
  F: __dxlog_file,
332
- L: 73,
333
- S: void 0,
326
+ L: 84,
327
+ S: this,
334
328
  A: [
335
329
  "space",
336
330
  "'Missing space'"
337
331
  ]
338
332
  });
339
- const result = await dispatch(form.getIntent(data, {
333
+ const { object } = yield* dispatch(form.getIntent(data, {
340
334
  space: space2
341
335
  }));
342
- const object = result.data?.object;
343
- if (isLiveObject(object)) {
336
+ if (isLiveObject(object) && !Obj.instanceOf(DataType.StoredSchema, object)) {
344
337
  const hidden = form.hidden || hiddenTypenames.includes(Type2.getTypename(form.objectSchema));
345
338
  const addObjectIntent = createIntent2(SpaceAction.AddObject, {
346
339
  target,
@@ -349,14 +342,15 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, na
349
342
  });
350
343
  const shouldNavigate = _shouldNavigate ?? (() => true);
351
344
  if (shouldNavigate(object)) {
352
- await dispatch(pipe(addObjectIntent, chain(LayoutAction2.Open, {
345
+ yield* dispatch(Function.pipe(addObjectIntent, chain(LayoutAction2.Open, {
353
346
  part: "main"
354
347
  })));
355
348
  } else {
356
- await dispatch(addObjectIntent);
349
+ yield* dispatch(addObjectIntent);
357
350
  }
351
+ onCreateObject?.(object);
358
352
  }
359
- }, [
353
+ }).pipe(Effect.runPromise), [
360
354
  dispatch,
361
355
  target,
362
356
  resolve,
@@ -374,7 +368,7 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, na
374
368
  }, /* @__PURE__ */ React3.createElement(Dialog.Title, null, t("create object dialog title", {
375
369
  object: t("typename label", {
376
370
  ns: typename,
377
- defaultValue: "Item"
371
+ defaultValue: views ? "View" : "Item"
378
372
  })
379
373
  })), /* @__PURE__ */ React3.createElement(Dialog.Close, {
380
374
  asChild: true
@@ -383,15 +377,16 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, na
383
377
  density: "fine",
384
378
  variant: "ghost",
385
379
  autoFocus: true
386
- }, /* @__PURE__ */ React3.createElement(Icon2, {
380
+ }, /* @__PURE__ */ React3.createElement(Icon3, {
387
381
  icon: "ph--x--regular",
388
382
  size: 4
389
383
  })))), /* @__PURE__ */ React3.createElement(CreateObjectPanel, {
390
384
  forms,
391
385
  spaces,
392
386
  target,
387
+ views,
393
388
  typename,
394
- name,
389
+ initialFormValues,
395
390
  defaultSpaceId: client.spaces.default.id,
396
391
  resolve,
397
392
  onTargetChange: setTarget,
@@ -406,13 +401,13 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, na
406
401
 
407
402
  // src/components/CreateDialog/CreateSpaceDialog.tsx
408
403
  import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
409
- import { Effect } from "effect";
404
+ import * as Effect2 from "effect/Effect";
410
405
  import React4, { useCallback as useCallback4, useRef as useRef2 } from "react";
411
- import { createIntent as createIntent3, LayoutAction as LayoutAction3, useIntentDispatcher as useIntentDispatcher3 } from "@dxos/app-framework";
412
- import { Button as Button3, Dialog as Dialog2, Icon as Icon3, useTranslation as useTranslation4 } from "@dxos/react-ui";
406
+ import { LayoutAction as LayoutAction3, createIntent as createIntent3, useIntentDispatcher as useIntentDispatcher3 } from "@dxos/app-framework";
407
+ import { Button as Button3, Dialog as Dialog2, Icon as Icon4, useTranslation as useTranslation4 } from "@dxos/react-ui";
413
408
  import { Form as Form2 } from "@dxos/react-ui-form";
414
409
  import { cardDialogContent as cardDialogContent2, cardDialogHeader as cardDialogHeader2 } from "@dxos/react-ui-stack";
415
- var CREATE_SPACE_DIALOG = `${SPACE_PLUGIN}/CreateSpaceDialog`;
410
+ var CREATE_SPACE_DIALOG = `${meta.id}/CreateSpaceDialog`;
416
411
  var initialValues = {
417
412
  edgeReplication: true
418
413
  };
@@ -420,11 +415,11 @@ var CreateSpaceDialog = () => {
420
415
  var _effect = _useSignals4();
421
416
  try {
422
417
  const closeRef = useRef2(null);
423
- const { t } = useTranslation4(SPACE_PLUGIN);
418
+ const { t } = useTranslation4(meta.id);
424
419
  const { dispatch } = useIntentDispatcher3();
425
420
  const inputSurfaceLookup = useInputSurfaceLookup();
426
421
  const handleCreateSpace = useCallback4(async (data) => {
427
- const program = Effect.gen(function* () {
422
+ const program = Effect2.gen(function* () {
428
423
  const { space } = yield* dispatch(createIntent3(SpaceAction.Create, data));
429
424
  yield* dispatch(createIntent3(LayoutAction3.SwitchWorkspace, {
430
425
  part: "workspace",
@@ -437,7 +432,7 @@ var CreateSpaceDialog = () => {
437
432
  }
438
433
  }));
439
434
  });
440
- await Effect.runPromise(program);
435
+ await Effect2.runPromise(program);
441
436
  }, [
442
437
  dispatch
443
438
  ]);
@@ -456,7 +451,7 @@ var CreateSpaceDialog = () => {
456
451
  density: "fine",
457
452
  variant: "ghost",
458
453
  autoFocus: true
459
- }, /* @__PURE__ */ React4.createElement(Icon3, {
454
+ }, /* @__PURE__ */ React4.createElement(Icon4, {
460
455
  icon: "ph--x--regular",
461
456
  size: 4
462
457
  })))), /* @__PURE__ */ React4.createElement("div", {
@@ -477,39 +472,17 @@ var CreateSpaceDialog = () => {
477
472
  }
478
473
  };
479
474
 
480
- // src/components/CollectionMain.tsx
475
+ // src/components/CollectionSection.tsx
481
476
  import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
482
477
  import React5 from "react";
483
478
  import { useTranslation as useTranslation5 } from "@dxos/react-ui";
484
- import { baseSurface, descriptionMessage, mx as mx2 } from "@dxos/react-ui-theme";
485
- var CollectionMain = ({ collection }) => {
479
+ var CollectionSection = ({ collection }) => {
486
480
  var _effect = _useSignals5();
487
481
  try {
488
- const { t } = useTranslation5(SPACE_PLUGIN);
482
+ const { t } = useTranslation5(meta.id);
489
483
  return /* @__PURE__ */ React5.createElement("div", {
490
- role: "none",
491
- className: mx2(baseSurface, "min-bs-screen is-full flex items-center justify-center p-8"),
492
- "data-testid": "composer.firstRunMessage"
493
- }, /* @__PURE__ */ React5.createElement("p", {
494
- role: "alert",
495
- className: mx2(descriptionMessage, "rounded-md p-8 font-normal text-lg max-is-[24rem] break-words")
496
- }, collection.name ?? t("unnamed collection label")));
497
- } finally {
498
- _effect.f();
499
- }
500
- };
501
-
502
- // src/components/CollectionSection.tsx
503
- import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
504
- import React6 from "react";
505
- import { useTranslation as useTranslation6 } from "@dxos/react-ui";
506
- var CollectionSection = ({ collection }) => {
507
- var _effect = _useSignals6();
508
- try {
509
- const { t } = useTranslation6(SPACE_PLUGIN);
510
- return /* @__PURE__ */ React6.createElement("div", {
511
484
  className: "min-bs-[3.5rem] grid grid-rows-subgrid grid-cols-subgrid items-center"
512
- }, /* @__PURE__ */ React6.createElement("span", {
485
+ }, /* @__PURE__ */ React5.createElement("span", {
513
486
  className: "truncate"
514
487
  }, collection.name ?? t("unnamed collection label")));
515
488
  } finally {
@@ -518,22 +491,22 @@ var CollectionSection = ({ collection }) => {
518
491
  };
519
492
 
520
493
  // src/components/JoinDialog.tsx
521
- import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
522
- import React7, { useCallback as useCallback5 } from "react";
523
- import { createIntent as createIntent4, LayoutAction as LayoutAction4, useAppGraph, useIntentDispatcher as useIntentDispatcher4 } from "@dxos/app-framework";
494
+ import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
495
+ import React6, { useCallback as useCallback5 } from "react";
496
+ import { LayoutAction as LayoutAction4, createIntent as createIntent4, useAppGraph, useIntentDispatcher as useIntentDispatcher4 } from "@dxos/app-framework";
524
497
  import { Trigger } from "@dxos/async";
525
498
  import { ObservabilityAction } from "@dxos/plugin-observability/types";
526
499
  import { useClient as useClient3 } from "@dxos/react-client";
527
- import { Dialog as Dialog3, useTranslation as useTranslation7 } from "@dxos/react-ui";
500
+ import { Dialog as Dialog3, useTranslation as useTranslation6 } from "@dxos/react-ui";
528
501
  import { JoinPanel } from "@dxos/shell/react";
529
- var JOIN_DIALOG = `${SPACE_PLUGIN}/JoinDialog`;
502
+ var JOIN_DIALOG = `${meta.id}/JoinDialog`;
530
503
  var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
531
- var _effect = _useSignals7();
504
+ var _effect = _useSignals6();
532
505
  try {
533
506
  const { dispatchPromise: dispatch } = useIntentDispatcher4();
534
507
  const client = useClient3();
535
508
  const { graph } = useAppGraph();
536
- const { t } = useTranslation7(SPACE_PLUGIN);
509
+ const { t } = useTranslation6(meta.id);
537
510
  const handleDone = useCallback5(async (result) => {
538
511
  const spaceKey = result?.spaceKey;
539
512
  if (!spaceKey) {
@@ -543,18 +516,18 @@ var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
543
516
  dispatch(createIntent4(LayoutAction4.AddToast, {
544
517
  part: "toast",
545
518
  subject: {
546
- id: `${SPACE_PLUGIN}/join-success`,
519
+ id: `${meta.id}/join-success`,
547
520
  duration: 5e3,
548
521
  title: [
549
522
  "join success label",
550
523
  {
551
- ns: SPACE_PLUGIN
524
+ ns: meta.id
552
525
  }
553
526
  ],
554
527
  closeLabel: [
555
528
  "dismiss label",
556
529
  {
557
- ns: SPACE_PLUGIN
530
+ ns: meta.id
558
531
  }
559
532
  ]
560
533
  }
@@ -614,16 +587,16 @@ var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
614
587
  client,
615
588
  graph
616
589
  ]);
617
- return /* @__PURE__ */ React7.createElement(Dialog3.Content, null, /* @__PURE__ */ React7.createElement(Dialog3.Title, {
590
+ return /* @__PURE__ */ React6.createElement(Dialog3.Content, null, /* @__PURE__ */ React6.createElement(Dialog3.Title, {
618
591
  classNames: "sr-only"
619
592
  }, t("join space label", {
620
593
  ns: "os"
621
- })), /* @__PURE__ */ React7.createElement(JoinPanel, {
594
+ })), /* @__PURE__ */ React6.createElement(JoinPanel, {
622
595
  ...props,
623
- exitActionParent: /* @__PURE__ */ React7.createElement(Dialog3.Close, {
596
+ exitActionParent: /* @__PURE__ */ React6.createElement(Dialog3.Close, {
624
597
  asChild: true
625
598
  }),
626
- doneActionParent: /* @__PURE__ */ React7.createElement(Dialog3.Close, {
599
+ doneActionParent: /* @__PURE__ */ React6.createElement(Dialog3.Close, {
627
600
  asChild: true
628
601
  }),
629
602
  onDone: handleDone
@@ -634,19 +607,17 @@ var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
634
607
  };
635
608
 
636
609
  // src/components/MembersContainer.tsx
637
- import { useSignals as _useSignals8 } from "@preact-signals/safe-react/tracking";
638
- import { Check, X } from "@phosphor-icons/react";
639
- import React8, { useCallback as useCallback6, useMemo, useState as useState3 } from "react";
610
+ import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
611
+ import React7, { useCallback as useCallback6, useMemo, useState as useState3 } from "react";
640
612
  import { QR } from "react-qr-rounded";
641
613
  import { createIntent as createIntent5, useIntentDispatcher as useIntentDispatcher5 } from "@dxos/app-framework";
642
614
  import { log } from "@dxos/log";
643
615
  import { useConfig } from "@dxos/react-client";
644
616
  import { fullyQualifiedId as fullyQualifiedId2, useSpaceInvitations } from "@dxos/react-client/echo";
645
617
  import { Invitation, InvitationEncoder } from "@dxos/react-client/invitations";
646
- import { Button as Button4, Clipboard, Icon as Icon4, Input, useId, useTranslation as useTranslation8 } from "@dxos/react-ui";
647
- import { ControlPage, ControlSection, ControlFrame, ControlFrameItem, ControlItemInput } from "@dxos/react-ui-form";
618
+ import { Button as Button4, Clipboard, Icon as Icon5, Input, useId, useTranslation as useTranslation7 } from "@dxos/react-ui";
619
+ import { ControlFrame, ControlFrameItem, ControlItemInput, ControlPage, ControlSection } from "@dxos/react-ui-form";
648
620
  import { StackItem } from "@dxos/react-ui-stack";
649
- import { getSize as getSize2, mx as mx3 } from "@dxos/react-ui-theme";
650
621
  import { DataType as DataType2 } from "@dxos/schema";
651
622
  import { AuthCode, BifurcatedAction, Centered, Emoji, InvitationList, SpaceMemberList, Viewport } from "@dxos/shell/react";
652
623
  import { hexToEmoji } from "@dxos/util";
@@ -660,7 +631,7 @@ var handleInvitationEvent = (invitation, subscription) => {
660
631
  authCode: invitation.authCode
661
632
  }), void 0, {
662
633
  F: __dxlog_file2,
663
- L: 41,
634
+ L: 39,
664
635
  S: void 0,
665
636
  C: (f, a) => f(...a)
666
637
  });
@@ -668,9 +639,9 @@ var handleInvitationEvent = (invitation, subscription) => {
668
639
  }
669
640
  };
670
641
  var MembersContainer = ({ space, createInvitationUrl }) => {
671
- var _effect = _useSignals8();
642
+ var _effect = _useSignals7();
672
643
  try {
673
- const { t } = useTranslation8(SPACE_PLUGIN);
644
+ const { t } = useTranslation7(meta.id);
674
645
  const config = useConfig();
675
646
  const { dispatchPromise: dispatch } = useIntentDispatcher5();
676
647
  const invitations = useSpaceInvitations(space.key);
@@ -698,10 +669,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
698
669
  description: t("invite one description", {
699
670
  ns: "os"
700
671
  }),
701
- icon: () => /* @__PURE__ */ React8.createElement(Icon4, {
702
- icon: "ph--user-plus--regular",
703
- size: 5
704
- }),
672
+ icon: "ph--user-plus--regular",
705
673
  testId: "membersContainer.inviteOne",
706
674
  onClick: async () => {
707
675
  const { data: invitation } = await dispatch(createIntent5(SpaceAction.Share, {
@@ -723,10 +691,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
723
691
  description: t("invite many description", {
724
692
  ns: "os"
725
693
  }),
726
- icon: () => /* @__PURE__ */ React8.createElement(Icon4, {
727
- icon: "ph--users-three--regular",
728
- size: 5
729
- }),
694
+ icon: "ph--users-three--regular",
730
695
  testId: "membersContainer.inviteMany",
731
696
  onClick: async () => {
732
697
  const { data: invitation } = await dispatch(createIntent5(SpaceAction.Share, {
@@ -753,44 +718,44 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
753
718
  const handleBack = () => {
754
719
  setSelectedInvitation(null);
755
720
  };
756
- return /* @__PURE__ */ React8.createElement(Clipboard.Provider, null, /* @__PURE__ */ React8.createElement(StackItem.Content, {
757
- classNames: "block overflow-y-auto"
758
- }, /* @__PURE__ */ React8.createElement(ControlPage, null, /* @__PURE__ */ React8.createElement(ControlSection, {
721
+ return /* @__PURE__ */ React7.createElement(Clipboard.Provider, null, /* @__PURE__ */ React7.createElement(StackItem.Content, {
722
+ scrollable: true
723
+ }, /* @__PURE__ */ React7.createElement(ControlPage, null, /* @__PURE__ */ React7.createElement(ControlSection, {
759
724
  title: t("members verbose label"),
760
725
  description: t("members description")
761
- }, /* @__PURE__ */ React8.createElement(ControlFrame, null, /* @__PURE__ */ React8.createElement(ControlFrameItem, {
726
+ }, /* @__PURE__ */ React7.createElement(ControlFrame, null, /* @__PURE__ */ React7.createElement(ControlFrameItem, {
762
727
  title: t("members label")
763
- }, /* @__PURE__ */ React8.createElement(SpaceMemberList, {
728
+ }, /* @__PURE__ */ React7.createElement(SpaceMemberList, {
764
729
  spaceKey: space.key,
765
730
  includeSelf: true
766
- })), locked && /* @__PURE__ */ React8.createElement(ControlFrameItem, {
731
+ })), locked && /* @__PURE__ */ React7.createElement(ControlFrameItem, {
767
732
  title: t("invitations label")
768
- }, /* @__PURE__ */ React8.createElement("p", {
733
+ }, /* @__PURE__ */ React7.createElement("p", {
769
734
  className: "text-description mbe-2"
770
- }, t("locked space description"))), !locked && /* @__PURE__ */ React8.createElement(ControlFrameItem, {
735
+ }, t("locked space description"))), !locked && /* @__PURE__ */ React7.createElement(ControlFrameItem, {
771
736
  title: t("invitations label")
772
- }, selectedInvitation && /* @__PURE__ */ React8.createElement(InvitationSection, {
737
+ }, selectedInvitation && /* @__PURE__ */ React7.createElement(InvitationSection, {
773
738
  ...selectedInvitation,
774
739
  onBack: handleBack
775
- }), !selectedInvitation && /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement("p", {
740
+ }), !selectedInvitation && /* @__PURE__ */ React7.createElement(React7.Fragment, null, /* @__PURE__ */ React7.createElement("p", {
776
741
  className: "text-description mbe-2"
777
- }, t("space invitation description")), /* @__PURE__ */ React8.createElement(InvitationList, {
742
+ }, t("space invitation description")), /* @__PURE__ */ React7.createElement(InvitationList, {
778
743
  className: "mb-2",
779
744
  send: handleSend,
780
745
  invitations: visibleInvitations ?? [],
781
746
  onClickRemove: (invitation) => invitation.cancel(),
782
747
  createInvitationUrl
783
- }), /* @__PURE__ */ React8.createElement(BifurcatedAction, {
748
+ }), /* @__PURE__ */ React7.createElement(BifurcatedAction, {
784
749
  actions: inviteActions,
785
750
  activeAction,
786
751
  onChangeActiveAction: setActiveAction,
787
752
  "data-testid": "membersContainer.createInvitation"
788
- })))), /* @__PURE__ */ React8.createElement("div", {
789
- className: "justify-center gap-4 p-0 mbs-4 container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]"
790
- }, /* @__PURE__ */ React8.createElement(ControlItemInput, {
753
+ })))), /* @__PURE__ */ React7.createElement("div", {
754
+ className: "justify-center p-0 mbs-4 container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]"
755
+ }, /* @__PURE__ */ React7.createElement(ControlItemInput, {
791
756
  title: t("space locked label"),
792
757
  description: t("space locked description")
793
- }, /* @__PURE__ */ React8.createElement(Input.Switch, {
758
+ }, /* @__PURE__ */ React7.createElement(Input.Switch, {
794
759
  checked: locked,
795
760
  onCheckedChange: handleChangeLocked,
796
761
  classNames: "justify-self-end"
@@ -800,26 +765,26 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
800
765
  }
801
766
  };
802
767
  var InvitationSection = ({ state = Invitation.State.INIT, authCode, invitationId = "never", url = "never", onBack }) => {
803
- var _effect = _useSignals8();
768
+ var _effect = _useSignals7();
804
769
  try {
805
770
  const activeView = state < 0 ? "init" : state >= Invitation.State.CANCELLED ? "complete" : state >= Invitation.State.READY_FOR_AUTHENTICATION && authCode ? "auth-code" : "qr-code";
806
- return /* @__PURE__ */ React8.createElement(Viewport.Root, {
771
+ return /* @__PURE__ */ React7.createElement(Viewport.Root, {
807
772
  activeView
808
- }, /* @__PURE__ */ React8.createElement(Viewport.Views, null, /* @__PURE__ */ React8.createElement(Viewport.View, {
773
+ }, /* @__PURE__ */ React7.createElement(Viewport.Views, null, /* @__PURE__ */ React7.createElement(Viewport.View, {
809
774
  id: "init"
810
- }), /* @__PURE__ */ React8.createElement(Viewport.View, {
775
+ }), /* @__PURE__ */ React7.createElement(Viewport.View, {
811
776
  id: "complete"
812
- }, /* @__PURE__ */ React8.createElement(InvitationComplete, {
777
+ }, /* @__PURE__ */ React7.createElement(InvitationComplete, {
813
778
  statusValue: state
814
- })), /* @__PURE__ */ React8.createElement(Viewport.View, {
779
+ })), /* @__PURE__ */ React7.createElement(Viewport.View, {
815
780
  id: "auth-code"
816
- }, /* @__PURE__ */ React8.createElement(InvitationAuthCode, {
781
+ }, /* @__PURE__ */ React7.createElement(InvitationAuthCode, {
817
782
  id: invitationId,
818
783
  code: authCode ?? "never",
819
784
  onCancel: onBack
820
- })), /* @__PURE__ */ React8.createElement(Viewport.View, {
785
+ })), /* @__PURE__ */ React7.createElement(Viewport.View, {
821
786
  id: "qr-code"
822
- }, /* @__PURE__ */ React8.createElement(InvitationQR, {
787
+ }, /* @__PURE__ */ React7.createElement(InvitationQR, {
823
788
  id: invitationId,
824
789
  url,
825
790
  onCancel: onBack
@@ -829,36 +794,36 @@ var InvitationSection = ({ state = Invitation.State.INIT, authCode, invitationId
829
794
  }
830
795
  };
831
796
  var InvitationQR = ({ id, url, onCancel }) => {
832
- var _effect = _useSignals8();
797
+ var _effect = _useSignals7();
833
798
  try {
834
- const { t } = useTranslation8("os");
799
+ const { t } = useTranslation7("os");
835
800
  const qrLabel = useId("members-container__qr-code");
836
801
  const emoji = hexToEmoji(id);
837
- return /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement("p", {
802
+ return /* @__PURE__ */ React7.createElement(React7.Fragment, null, /* @__PURE__ */ React7.createElement("p", {
838
803
  className: "text-description"
839
804
  }, t("qr code description", {
840
- ns: SPACE_PLUGIN
841
- })), /* @__PURE__ */ React8.createElement("div", {
805
+ ns: meta.id
806
+ })), /* @__PURE__ */ React7.createElement("div", {
842
807
  role: "group",
843
808
  className: "grid grid-cols-[1fr_min-content] mlb-2 gap-2"
844
- }, /* @__PURE__ */ React8.createElement("div", {
809
+ }, /* @__PURE__ */ React7.createElement("div", {
845
810
  role: "none",
846
811
  className: "is-full aspect-square relative text-description"
847
- }, /* @__PURE__ */ React8.createElement(QR, {
812
+ }, /* @__PURE__ */ React7.createElement(QR, {
848
813
  rounding: 100,
849
814
  backgroundColor: "transparent",
850
815
  color: "currentColor",
851
816
  "aria-labelledby": qrLabel,
852
817
  errorCorrectionLevel: "Q",
853
818
  cutout: true
854
- }, url ?? "never"), /* @__PURE__ */ React8.createElement(Centered, null, /* @__PURE__ */ React8.createElement(Emoji, {
819
+ }, url ?? "never"), /* @__PURE__ */ React7.createElement(Centered, null, /* @__PURE__ */ React7.createElement(Emoji, {
855
820
  text: emoji
856
- }))), /* @__PURE__ */ React8.createElement("span", {
821
+ }))), /* @__PURE__ */ React7.createElement("span", {
857
822
  id: qrLabel,
858
823
  className: "sr-only"
859
- }, t("qr label")), /* @__PURE__ */ React8.createElement(Clipboard.Button, {
824
+ }, t("qr label")), /* @__PURE__ */ React7.createElement(Clipboard.Button, {
860
825
  value: url ?? "never"
861
- })), /* @__PURE__ */ React8.createElement(Button4, {
826
+ })), /* @__PURE__ */ React7.createElement(Button4, {
862
827
  variant: "ghost",
863
828
  onClick: onCancel
864
829
  }, t("cancel label")));
@@ -867,22 +832,22 @@ var InvitationQR = ({ id, url, onCancel }) => {
867
832
  }
868
833
  };
869
834
  var InvitationAuthCode = ({ id, code, onCancel }) => {
870
- var _effect = _useSignals8();
835
+ var _effect = _useSignals7();
871
836
  try {
872
- const { t } = useTranslation8("os");
837
+ const { t } = useTranslation7("os");
873
838
  const emoji = hexToEmoji(id);
874
- return /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement("p", {
839
+ return /* @__PURE__ */ React7.createElement(React7.Fragment, null, /* @__PURE__ */ React7.createElement("p", {
875
840
  className: "text-description"
876
- }, t("auth other device emoji message")), emoji && /* @__PURE__ */ React8.createElement(Emoji, {
841
+ }, t("auth other device emoji message")), emoji && /* @__PURE__ */ React7.createElement(Emoji, {
877
842
  text: emoji,
878
843
  className: "mli-auto mlb-2 text-center"
879
- }), /* @__PURE__ */ React8.createElement("p", {
844
+ }), /* @__PURE__ */ React7.createElement("p", {
880
845
  className: "text-description"
881
- }, t("auth code message")), /* @__PURE__ */ React8.createElement(AuthCode, {
846
+ }, t("auth code message")), /* @__PURE__ */ React7.createElement(AuthCode, {
882
847
  code,
883
848
  large: true,
884
849
  classNames: "mli-auto mlb-2 text-center grow"
885
- }), /* @__PURE__ */ React8.createElement(Button4, {
850
+ }), /* @__PURE__ */ React7.createElement(Button4, {
886
851
  variant: "ghost",
887
852
  onClick: onCancel
888
853
  }, t("cancel label")));
@@ -891,12 +856,16 @@ var InvitationAuthCode = ({ id, code, onCancel }) => {
891
856
  }
892
857
  };
893
858
  var InvitationComplete = ({ statusValue }) => {
894
- var _effect = _useSignals8();
859
+ var _effect = _useSignals7();
895
860
  try {
896
- return statusValue > 0 ? /* @__PURE__ */ React8.createElement(Check, {
897
- className: mx3("m-1.5", getSize2(6))
898
- }) : /* @__PURE__ */ React8.createElement(X, {
899
- className: mx3("m-1.5", getSize2(6))
861
+ return statusValue > 0 ? /* @__PURE__ */ React7.createElement(Icon5, {
862
+ icon: "ph--check--regular",
863
+ size: 6,
864
+ classNames: "m-1.5"
865
+ }) : /* @__PURE__ */ React7.createElement(Icon5, {
866
+ icon: "ph--x--regular",
867
+ size: 6,
868
+ classNames: "m-1.5"
900
869
  });
901
870
  } finally {
902
871
  _effect.f();
@@ -904,109 +873,45 @@ var InvitationComplete = ({ statusValue }) => {
904
873
  };
905
874
 
906
875
  // src/components/MenuFooter.tsx
907
- import { useSignals as _useSignals9 } from "@preact-signals/safe-react/tracking";
908
- import { Planet } from "@phosphor-icons/react";
909
- import React9 from "react";
876
+ import { useSignals as _useSignals8 } from "@preact-signals/safe-react/tracking";
877
+ import React8 from "react";
910
878
  import { getSpace as getSpace2 } from "@dxos/client/echo";
911
879
  import { useClient as useClient4 } from "@dxos/react-client";
912
- import { DropdownMenu, toLocalizedString as toLocalizedString2, useTranslation as useTranslation9 } from "@dxos/react-ui";
880
+ import { DropdownMenu, Icon as Icon6, toLocalizedString as toLocalizedString2, useTranslation as useTranslation8 } from "@dxos/react-ui";
913
881
  var MenuFooter = ({ object }) => {
914
- var _effect = _useSignals9();
882
+ var _effect = _useSignals8();
915
883
  try {
916
- const { t } = useTranslation9(SPACE_PLUGIN);
884
+ const { t } = useTranslation8(meta.id);
917
885
  const client = useClient4();
918
886
  const space = getSpace2(object);
919
887
  const spaceName = space ? getSpaceDisplayName(space, {
920
888
  personal: client.spaces.default === space
921
889
  }) : "";
922
- return space ? /* @__PURE__ */ React9.createElement(React9.Fragment, null, /* @__PURE__ */ React9.createElement(DropdownMenu.Separator, null), /* @__PURE__ */ React9.createElement(DropdownMenu.GroupLabel, null, t("menu footer label")), /* @__PURE__ */ React9.createElement("dl", {
890
+ return space ? /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement(DropdownMenu.Separator, null), /* @__PURE__ */ React8.createElement(DropdownMenu.GroupLabel, null, t("menu footer label")), /* @__PURE__ */ React8.createElement("dl", {
923
891
  className: "pis-2 mbe-2 text-xs grid grid-cols-[max-content_1fr] gap-2"
924
- }, /* @__PURE__ */ React9.createElement("dt", {
892
+ }, /* @__PURE__ */ React8.createElement("dt", {
925
893
  className: "uppercase text-[.75em] tracking-wide font-medium mbs-px self-start"
926
- }, t("location label")), /* @__PURE__ */ React9.createElement("dd", {
894
+ }, t("location label")), /* @__PURE__ */ React8.createElement("dd", {
927
895
  className: "line-clamp-3"
928
- }, /* @__PURE__ */ React9.createElement(Planet, {
929
- className: "inline-block mie-1"
896
+ }, /* @__PURE__ */ React8.createElement(Icon6, {
897
+ icon: "ph--planet--regular",
898
+ classNames: "inline-block mie-1"
930
899
  }), toLocalizedString2(spaceName, t)))) : null;
931
900
  } finally {
932
901
  _effect.f();
933
902
  }
934
903
  };
935
904
 
936
- // src/components/ObjectSettings/ObjectSettingsContainer.tsx
937
- import { useSignals as _useSignals11 } from "@preact-signals/safe-react/tracking";
938
- import React11, { useMemo as useMemo2 } from "react";
939
- import { Surface } from "@dxos/app-framework";
940
- import { Clipboard as Clipboard2 } from "@dxos/react-ui";
941
- import { StackItem as StackItem2 } from "@dxos/react-ui-stack";
942
-
943
- // src/components/ObjectSettings/BaseObjectSettings.tsx
944
- import { useSignals as _useSignals10 } from "@preact-signals/safe-react/tracking";
945
- import React10, { useRef as useRef3 } from "react";
946
- import { Input as Input2, useTranslation as useTranslation10 } from "@dxos/react-ui";
947
- var BaseObjectSettings = ({ classNames, children, object }) => {
948
- var _effect = _useSignals10();
949
- try {
950
- const { t } = useTranslation10(meta.id);
951
- const inputRef = useRef3(null);
952
- return /* @__PURE__ */ React10.createElement(React10.Fragment, null, /* @__PURE__ */ React10.createElement(Input2.Root, null, /* @__PURE__ */ React10.createElement(Input2.Label, null, t("name label")), /* @__PURE__ */ React10.createElement(Input2.TextInput, {
953
- ref: inputRef,
954
- placeholder: t("name placeholder"),
955
- // TODO(burdon): Use annotation to get the name field.
956
- value: object.name ?? "",
957
- onChange: (event) => {
958
- object.name = event.target.value;
959
- },
960
- onKeyDown: (event) => {
961
- if (event.key === "Enter") {
962
- inputRef.current?.blur();
963
- }
964
- }
965
- })), children);
966
- } finally {
967
- _effect.f();
968
- }
969
- };
970
-
971
- // src/components/ObjectSettings/ObjectSettingsContainer.tsx
972
- var ObjectSettingsContainer = ({ object, role }) => {
973
- var _effect = _useSignals11();
974
- try {
975
- const data = useMemo2(() => ({
976
- subject: object
977
- }), [
978
- object
979
- ]);
980
- return /* @__PURE__ */ React11.createElement(Clipboard2.Provider, null, /* @__PURE__ */ React11.createElement(StackItem2.Content, {
981
- toolbar: false
982
- }, /* @__PURE__ */ React11.createElement("div", {
983
- role: "none",
984
- className: "overflow-y-auto pli-cardSpacingInline plb-cardSpacingBlock"
985
- }, /* @__PURE__ */ React11.createElement(BaseObjectSettings, {
986
- object
987
- }, /* @__PURE__ */ React11.createElement(Surface, {
988
- role: "base-object-settings",
989
- data
990
- })), /* @__PURE__ */ React11.createElement(Surface, {
991
- role: "object-settings",
992
- data
993
- }))));
994
- } finally {
995
- _effect.f();
996
- }
997
- };
998
-
999
905
  // src/components/PersistenceStatus.tsx
1000
- import { useSignals as _useSignals12 } from "@preact-signals/safe-react/tracking";
1001
- import { ArrowsCounterClockwise, CheckCircle as CheckCircle2, Warning } from "@phosphor-icons/react";
1002
- import React12, { useEffect as useEffect2, useState as useState4 } from "react";
906
+ import { useSignals as _useSignals9 } from "@preact-signals/safe-react/tracking";
907
+ import React9, { useEffect as useEffect2, useState as useState4 } from "react";
1003
908
  import { debounce } from "@dxos/async";
1004
- import { Tooltip, useTranslation as useTranslation11 } from "@dxos/react-ui";
1005
- import { getSize as getSize3, mx as mx4, staticPlaceholderText, warningText } from "@dxos/react-ui-theme";
909
+ import { Icon as Icon7, Tooltip, useTranslation as useTranslation9 } from "@dxos/react-ui";
910
+ import { mx, staticPlaceholderText, warningText } from "@dxos/react-ui-theme";
1006
911
  var PersistenceStatus = ({ db }) => {
1007
- var _effect = _useSignals12();
912
+ var _effect = _useSignals9();
1008
913
  try {
1009
- const { t } = useTranslation11(SPACE_PLUGIN);
914
+ const { t } = useTranslation9(meta.id);
1010
915
  const [displayMessage, setDisplayMessage] = useState4(false);
1011
916
  const [status, naturalSetStatus] = useState4(0);
1012
917
  const [prevStatus, setPrevStatus] = useState4(0);
@@ -1023,32 +928,38 @@ var PersistenceStatus = ({ db }) => {
1023
928
  ]);
1024
929
  switch (status) {
1025
930
  case 2:
1026
- return /* @__PURE__ */ React12.createElement("div", {
931
+ return /* @__PURE__ */ React9.createElement("div", {
1027
932
  className: "flex items-center"
1028
- }, /* @__PURE__ */ React12.createElement(Warning, {
1029
- className: mx4(getSize3(4), "me-1")
1030
- }), /* @__PURE__ */ React12.createElement("span", {
1031
- className: mx4("text-sm", warningText)
933
+ }, /* @__PURE__ */ React9.createElement(Icon7, {
934
+ icon: "ph--warning--regular",
935
+ size: 4,
936
+ classNames: "me-1"
937
+ }), /* @__PURE__ */ React9.createElement("span", {
938
+ className: mx("text-sm", warningText)
1032
939
  }, t("persistence error label")));
1033
940
  case 1:
1034
- return /* @__PURE__ */ React12.createElement("div", {
941
+ return /* @__PURE__ */ React9.createElement("div", {
1035
942
  className: "flex items-center"
1036
- }, /* @__PURE__ */ React12.createElement(ArrowsCounterClockwise, {
1037
- className: mx4(getSize3(4), "me-1")
1038
- }), /* @__PURE__ */ React12.createElement("span", {
1039
- className: mx4("text-sm", staticPlaceholderText)
943
+ }, /* @__PURE__ */ React9.createElement(Icon7, {
944
+ icon: "ph--arrows-counter-clockwise--regular",
945
+ size: 4,
946
+ classNames: "me-1"
947
+ }), /* @__PURE__ */ React9.createElement("span", {
948
+ className: mx("text-sm", staticPlaceholderText)
1040
949
  }, t("persistence pending label")));
1041
950
  case 0:
1042
951
  default:
1043
- return /* @__PURE__ */ React12.createElement(Tooltip.Trigger, {
952
+ return /* @__PURE__ */ React9.createElement(Tooltip.Trigger, {
1044
953
  delayDuration: 400,
1045
954
  role: "status",
1046
955
  content: t("persisted locally message"),
1047
956
  className: "flex items-center"
1048
- }, /* @__PURE__ */ React12.createElement(CheckCircle2, {
1049
- className: mx4(getSize3(4), "me-1")
1050
- }), displayMessage && /* @__PURE__ */ React12.createElement("span", {
1051
- className: mx4("text-sm", staticPlaceholderText)
957
+ }, /* @__PURE__ */ React9.createElement(Icon7, {
958
+ icon: "ph--check-circle--regular",
959
+ size: 4,
960
+ classNames: "me-1"
961
+ }), displayMessage && /* @__PURE__ */ React9.createElement("span", {
962
+ className: mx("text-sm", staticPlaceholderText)
1052
963
  }, t("persisted locally label")));
1053
964
  }
1054
965
  } finally {
@@ -1057,37 +968,33 @@ var PersistenceStatus = ({ db }) => {
1057
968
  };
1058
969
 
1059
970
  // src/components/PopoverRenameObject.tsx
1060
- import { useSignals as _useSignals13 } from "@preact-signals/safe-react/tracking";
1061
- import React13, { useCallback as useCallback7, useRef as useRef4, useState as useState5 } from "react";
1062
- import { createIntent as createIntent6, LayoutAction as LayoutAction5, useIntentDispatcher as useIntentDispatcher6 } from "@dxos/app-framework";
971
+ import { useSignals as _useSignals10 } from "@preact-signals/safe-react/tracking";
972
+ import React10, { useCallback as useCallback7, useRef as useRef3, useState as useState5 } from "react";
973
+ import { LayoutAction as LayoutAction5, createIntent as createIntent6, useIntentDispatcher as useIntentDispatcher6 } from "@dxos/app-framework";
974
+ import { Obj as Obj2 } from "@dxos/echo";
1063
975
  import { log as log2 } from "@dxos/log";
1064
- import { Button as Button5, Input as Input3, useTranslation as useTranslation12 } from "@dxos/react-ui";
976
+ import { Button as Button5, Input as Input2, useTranslation as useTranslation10 } from "@dxos/react-ui";
1065
977
  var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx";
1066
- var POPOVER_RENAME_OBJECT = `${SPACE_PLUGIN}/PopoverRenameObject`;
1067
- var PopoverRenameObject = ({ object: obj }) => {
1068
- var _effect = _useSignals13();
978
+ var POPOVER_RENAME_OBJECT = `${meta.id}/PopoverRenameObject`;
979
+ var PopoverRenameObject = ({ object }) => {
980
+ var _effect = _useSignals10();
1069
981
  try {
1070
- const { t } = useTranslation12(SPACE_PLUGIN);
1071
- const doneButton = useRef4(null);
1072
- const object = obj;
1073
- const [name, setName] = useState5(object.name || object.title || "");
982
+ const { t } = useTranslation10(meta.id);
983
+ const doneButton = useRef3(null);
984
+ const [name, setName] = useState5(Obj2.getLabel(object));
1074
985
  const { dispatchPromise: dispatch } = useIntentDispatcher6();
1075
986
  const handleDone = useCallback7(() => {
1076
987
  try {
1077
- object.name = name;
1078
- } catch {
1079
- try {
1080
- object.title = name;
1081
- } catch (err) {
1082
- log2.error("Failed to rename object", {
1083
- err
1084
- }, {
1085
- F: __dxlog_file3,
1086
- L: 32,
1087
- S: void 0,
1088
- C: (f, a) => f(...a)
1089
- });
1090
- }
988
+ name && Obj2.setLabel(object, name);
989
+ } catch (err) {
990
+ log2.error("Failed to rename object", {
991
+ err
992
+ }, {
993
+ F: __dxlog_file3,
994
+ L: 27,
995
+ S: void 0,
996
+ C: (f, a) => f(...a)
997
+ });
1091
998
  }
1092
999
  void dispatch(createIntent6(LayoutAction5.UpdatePopover, {
1093
1000
  part: "popover",
@@ -1101,21 +1008,21 @@ var PopoverRenameObject = ({ object: obj }) => {
1101
1008
  object,
1102
1009
  name
1103
1010
  ]);
1104
- return /* @__PURE__ */ React13.createElement("div", {
1011
+ return /* @__PURE__ */ React10.createElement("div", {
1105
1012
  role: "none",
1106
1013
  className: "p-2 flex gap-2"
1107
- }, /* @__PURE__ */ React13.createElement("div", {
1014
+ }, /* @__PURE__ */ React10.createElement("div", {
1108
1015
  role: "none",
1109
1016
  className: "flex-1"
1110
- }, /* @__PURE__ */ React13.createElement(Input3.Root, null, /* @__PURE__ */ React13.createElement(Input3.Label, {
1017
+ }, /* @__PURE__ */ React10.createElement(Input2.Root, null, /* @__PURE__ */ React10.createElement(Input2.Label, {
1111
1018
  srOnly: true
1112
- }, t("object name label")), /* @__PURE__ */ React13.createElement(Input3.TextInput, {
1019
+ }, t("object name label")), /* @__PURE__ */ React10.createElement(Input2.TextInput, {
1113
1020
  placeholder: t("object placeholder"),
1114
1021
  value: name,
1115
1022
  "data-testid": "spacePlugin.renameObject.input",
1116
1023
  onChange: ({ target: { value } }) => setName(value),
1117
1024
  onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
1118
- }))), /* @__PURE__ */ React13.createElement(Button5, {
1025
+ }))), /* @__PURE__ */ React10.createElement(Button5, {
1119
1026
  ref: doneButton,
1120
1027
  classNames: "self-stretch",
1121
1028
  onClick: handleDone
@@ -1128,16 +1035,16 @@ var PopoverRenameObject = ({ object: obj }) => {
1128
1035
  };
1129
1036
 
1130
1037
  // src/components/PopoverRenameSpace.tsx
1131
- import { useSignals as _useSignals14 } from "@preact-signals/safe-react/tracking";
1132
- import React14, { useCallback as useCallback8, useRef as useRef5, useState as useState6 } from "react";
1133
- import { createIntent as createIntent7, LayoutAction as LayoutAction6, useIntentDispatcher as useIntentDispatcher7 } from "@dxos/app-framework";
1134
- import { Button as Button6, Input as Input4, Popover, useTranslation as useTranslation13 } from "@dxos/react-ui";
1135
- var POPOVER_RENAME_SPACE = `${SPACE_PLUGIN}/PopoverRenameSpace`;
1038
+ import { useSignals as _useSignals11 } from "@preact-signals/safe-react/tracking";
1039
+ import React11, { useCallback as useCallback8, useRef as useRef4, useState as useState6 } from "react";
1040
+ import { LayoutAction as LayoutAction6, createIntent as createIntent7, useIntentDispatcher as useIntentDispatcher7 } from "@dxos/app-framework";
1041
+ import { Button as Button6, Input as Input3, Popover, useTranslation as useTranslation11 } from "@dxos/react-ui";
1042
+ var POPOVER_RENAME_SPACE = `${meta.id}/PopoverRenameSpace`;
1136
1043
  var PopoverRenameSpace = ({ space }) => {
1137
- var _effect = _useSignals14();
1044
+ var _effect = _useSignals11();
1138
1045
  try {
1139
- const { t } = useTranslation13(SPACE_PLUGIN);
1140
- const doneButton = useRef5(null);
1046
+ const { t } = useTranslation11(meta.id);
1047
+ const doneButton = useRef4(null);
1141
1048
  const [name, setName] = useState6(space.properties.name ?? "");
1142
1049
  const { dispatchPromise: dispatch } = useIntentDispatcher7();
1143
1050
  const handleDone = useCallback8(() => {
@@ -1154,24 +1061,24 @@ var PopoverRenameSpace = ({ space }) => {
1154
1061
  space,
1155
1062
  name
1156
1063
  ]);
1157
- return /* @__PURE__ */ React14.createElement("div", {
1064
+ return /* @__PURE__ */ React11.createElement("div", {
1158
1065
  role: "none",
1159
1066
  className: "p-2 flex gap-2"
1160
- }, /* @__PURE__ */ React14.createElement("div", {
1067
+ }, /* @__PURE__ */ React11.createElement("div", {
1161
1068
  role: "none",
1162
1069
  className: "flex-1"
1163
- }, /* @__PURE__ */ React14.createElement(Input4.Root, null, /* @__PURE__ */ React14.createElement(Input4.Label, {
1070
+ }, /* @__PURE__ */ React11.createElement(Input3.Root, null, /* @__PURE__ */ React11.createElement(Input3.Label, {
1164
1071
  srOnly: true
1165
- }, t("space name label")), /* @__PURE__ */ React14.createElement(Input4.TextInput, {
1072
+ }, t("space name label")), /* @__PURE__ */ React11.createElement(Input3.TextInput, {
1166
1073
  defaultValue: space.properties.name ?? "",
1167
1074
  placeholder: t("unnamed space label"),
1168
1075
  onChange: ({ target: { value } }) => setName(value),
1169
1076
  // TODO(wittjosiah): Ideally this should access the popover context to close the popover.
1170
1077
  // Currently this is not possible because Radix does not expose the popover context.
1171
1078
  onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
1172
- }))), /* @__PURE__ */ React14.createElement(Popover.Close, {
1079
+ }))), /* @__PURE__ */ React11.createElement(Popover.Close, {
1173
1080
  asChild: true
1174
- }, /* @__PURE__ */ React14.createElement(Button6, {
1081
+ }, /* @__PURE__ */ React11.createElement(Button6, {
1175
1082
  ref: doneButton,
1176
1083
  classNames: "self-stretch",
1177
1084
  onClick: handleDone
@@ -1184,11 +1091,11 @@ var PopoverRenameSpace = ({ space }) => {
1184
1091
  };
1185
1092
 
1186
1093
  // src/components/SchemaContainer.tsx
1187
- import { useSignals as _useSignals15 } from "@preact-signals/safe-react/tracking";
1188
- import React15, { useState as useState7, useEffect as useEffect3 } from "react";
1189
- import { useTranslation as useTranslation14 } from "@dxos/react-ui";
1190
- import { controlItemClasses, ControlPage as ControlPage2, ControlSection as ControlSection2 } from "@dxos/react-ui-form";
1191
- import { StackItem as StackItem3 } from "@dxos/react-ui-stack";
1094
+ import { useSignals as _useSignals12 } from "@preact-signals/safe-react/tracking";
1095
+ import React12, { useEffect as useEffect3, useState as useState7 } from "react";
1096
+ import { useTranslation as useTranslation12 } from "@dxos/react-ui";
1097
+ import { ControlPage as ControlPage2, ControlSection as ControlSection2, controlItemClasses } from "@dxos/react-ui-form";
1098
+ import { StackItem as StackItem2 } from "@dxos/react-ui-stack";
1192
1099
  var useQuerySpaceSchemas = (space) => {
1193
1100
  const [schemas, setSchemas] = useState7([]);
1194
1101
  useEffect3(() => {
@@ -1203,38 +1110,38 @@ var useQuerySpaceSchemas = (space) => {
1203
1110
  return schemas;
1204
1111
  };
1205
1112
  var SchemaContainer = ({ space }) => {
1206
- var _effect = _useSignals15();
1113
+ var _effect = _useSignals12();
1207
1114
  try {
1208
- const { t } = useTranslation14(SPACE_PLUGIN);
1115
+ const { t } = useTranslation12(meta.id);
1209
1116
  const schemas = useQuerySpaceSchemas(space);
1210
- return /* @__PURE__ */ React15.createElement(StackItem3.Content, {
1211
- classNames: "block overflow-y-auto"
1212
- }, /* @__PURE__ */ React15.createElement(ControlPage2, null, /* @__PURE__ */ React15.createElement(ControlSection2, {
1117
+ return /* @__PURE__ */ React12.createElement(StackItem2.Content, {
1118
+ scrollable: true
1119
+ }, /* @__PURE__ */ React12.createElement(ControlPage2, null, /* @__PURE__ */ React12.createElement(ControlSection2, {
1213
1120
  title: t("schema verbose label"),
1214
1121
  description: t("schema description")
1215
- }, /* @__PURE__ */ React15.createElement("div", {
1122
+ }, /* @__PURE__ */ React12.createElement("div", {
1216
1123
  role: "none",
1217
1124
  className: controlItemClasses
1218
- }, schemas.length === 0 && /* @__PURE__ */ React15.createElement("div", {
1125
+ }, schemas.length === 0 && /* @__PURE__ */ React12.createElement("div", {
1219
1126
  className: "text-center plb-4"
1220
- }, t("no schemas found message")), schemas.map((schema) => /* @__PURE__ */ React15.createElement("div", {
1127
+ }, t("no schemas found message")), schemas.map((schema) => /* @__PURE__ */ React12.createElement("div", {
1221
1128
  key: schema.id
1222
- }, /* @__PURE__ */ React15.createElement("div", null, schema.typename)))))));
1129
+ }, /* @__PURE__ */ React12.createElement("div", null, schema.typename)))))));
1223
1130
  } finally {
1224
1131
  _effect.f();
1225
1132
  }
1226
1133
  };
1227
1134
 
1228
1135
  // src/components/SpacePresence.tsx
1229
- import { useSignals as _useSignals16 } from "@preact-signals/safe-react/tracking";
1230
- import { Option } from "effect";
1231
- import React16, { forwardRef, useCallback as useCallback9, useEffect as useEffect4, useState as useState8 } from "react";
1136
+ import { useSignals as _useSignals13 } from "@preact-signals/safe-react/tracking";
1137
+ import * as Option2 from "effect/Option";
1138
+ import React13, { forwardRef, useCallback as useCallback9, useEffect as useEffect4, useState as useState8 } from "react";
1232
1139
  import { useAppGraph as useAppGraph2, useCapability } from "@dxos/app-framework";
1233
1140
  import { generateName } from "@dxos/display-name";
1234
1141
  import { PublicKey, useClient as useClient5 } from "@dxos/react-client";
1235
- import { getSpace as getSpace3, useMembers, fullyQualifiedId as fullyQualifiedId3 } from "@dxos/react-client/echo";
1142
+ import { fullyQualifiedId as fullyQualifiedId3, getSpace as getSpace3, useMembers } from "@dxos/react-client/echo";
1236
1143
  import { useIdentity } from "@dxos/react-client/halo";
1237
- import { Avatar, Tooltip as Tooltip2, Popover as Popover2, useTranslation as useTranslation15, List, ListItem, useDefaultValue } from "@dxos/react-ui";
1144
+ import { Avatar, List, ListItem, Popover as Popover2, Tooltip as Tooltip2, useDefaultValue as useDefaultValue2, useTranslation as useTranslation13 } from "@dxos/react-ui";
1238
1145
  import { AttentionGlyph, useAttended, useAttention } from "@dxos/react-ui-attention";
1239
1146
  import { ComplexMap, keyToFallback } from "@dxos/util";
1240
1147
  var REFRESH_INTERVAL = 5e3;
@@ -1242,7 +1149,7 @@ var ACTIVITY_DURATION = 3e4;
1242
1149
  var noViewers = new ComplexMap(PublicKey.hash);
1243
1150
  var getName = (identity) => identity.profile?.displayName ?? generateName(identity.identityKey.toHex());
1244
1151
  var SpacePresence = ({ object, spaceKey }) => {
1245
- var _effect = _useSignals16();
1152
+ var _effect = _useSignals13();
1246
1153
  try {
1247
1154
  const spaceState = useCapability(SpaceCapabilities.MutableState);
1248
1155
  const client = useClient5();
@@ -1272,7 +1179,7 @@ var SpacePresence = ({ object, spaceKey }) => {
1272
1179
  lastSeen
1273
1180
  };
1274
1181
  }).toSorted((a, b) => a.lastSeen - b.lastSeen);
1275
- return /* @__PURE__ */ React16.createElement(FullPresence, {
1182
+ return /* @__PURE__ */ React13.createElement(FullPresence, {
1276
1183
  members: membersForObject
1277
1184
  });
1278
1185
  } finally {
@@ -1280,46 +1187,46 @@ var SpacePresence = ({ object, spaceKey }) => {
1280
1187
  }
1281
1188
  };
1282
1189
  var FullPresence = (props) => {
1283
- var _effect = _useSignals16();
1190
+ var _effect = _useSignals13();
1284
1191
  try {
1285
1192
  const { size = 9, onMemberClick } = props;
1286
- const members = useDefaultValue(props.members, () => []);
1193
+ const members = useDefaultValue2(props.members, () => []);
1287
1194
  if (members.length === 0) {
1288
1195
  return null;
1289
1196
  }
1290
- return /* @__PURE__ */ React16.createElement("div", {
1197
+ return /* @__PURE__ */ React13.createElement("div", {
1291
1198
  className: "dx-avatar-group",
1292
1199
  "data-testid": "spacePlugin.presence"
1293
- }, members.slice(0, 3).map((member, i) => /* @__PURE__ */ React16.createElement(Tooltip2.Trigger, {
1200
+ }, members.slice(0, 3).map((member, i) => /* @__PURE__ */ React13.createElement(Tooltip2.Trigger, {
1294
1201
  key: member.identity.identityKey.toHex(),
1295
1202
  side: "bottom",
1296
1203
  content: getName(member.identity),
1297
1204
  className: "grid focus:outline-none"
1298
- }, /* @__PURE__ */ React16.createElement(PresenceAvatar, {
1205
+ }, /* @__PURE__ */ React13.createElement(PresenceAvatar, {
1299
1206
  identity: member.identity,
1300
1207
  match: member.currentlyAttended,
1301
1208
  index: members.length - i,
1302
1209
  onClick: () => onMemberClick?.(member),
1303
1210
  size
1304
- }))), members.length > 3 && /* @__PURE__ */ React16.createElement(Popover2.Root, null, /* @__PURE__ */ React16.createElement(Popover2.Trigger, {
1211
+ }))), members.length > 3 && /* @__PURE__ */ React13.createElement(Popover2.Root, null, /* @__PURE__ */ React13.createElement(Popover2.Trigger, {
1305
1212
  className: "grid focus:outline-none"
1306
- }, /* @__PURE__ */ React16.createElement(Avatar.Root, null, /* @__PURE__ */ React16.createElement(Avatar.Content, {
1213
+ }, /* @__PURE__ */ React13.createElement(Avatar.Root, null, /* @__PURE__ */ React13.createElement(Avatar.Content, {
1307
1214
  status: "inactive",
1308
1215
  style: {
1309
1216
  zIndex: members.length - 4
1310
1217
  },
1311
1218
  fallback: `+${members.length - 3}`,
1312
1219
  size
1313
- }))), /* @__PURE__ */ React16.createElement(Popover2.Portal, null, /* @__PURE__ */ React16.createElement(Popover2.Content, {
1220
+ }))), /* @__PURE__ */ React13.createElement(Popover2.Portal, null, /* @__PURE__ */ React13.createElement(Popover2.Content, {
1314
1221
  side: "bottom"
1315
- }, /* @__PURE__ */ React16.createElement(Popover2.Arrow, null), /* @__PURE__ */ React16.createElement(Popover2.Viewport, {
1222
+ }, /* @__PURE__ */ React13.createElement(Popover2.Arrow, null), /* @__PURE__ */ React13.createElement(Popover2.Viewport, {
1316
1223
  classNames: "max-bs-56"
1317
- }, /* @__PURE__ */ React16.createElement(List, null, members.map((member) => /* @__PURE__ */ React16.createElement(ListItem.Root, {
1224
+ }, /* @__PURE__ */ React13.createElement(List, null, members.map((member) => /* @__PURE__ */ React13.createElement(ListItem.Root, {
1318
1225
  key: member.identity.identityKey.toHex(),
1319
1226
  classNames: "flex gap-2 items-center cursor-pointer mbe-2",
1320
1227
  onClick: () => onMemberClick?.(member),
1321
1228
  "data-testid": "identity-list-item"
1322
- }, /* @__PURE__ */ React16.createElement(PresenceAvatar, {
1229
+ }, /* @__PURE__ */ React13.createElement(PresenceAvatar, {
1323
1230
  identity: member.identity,
1324
1231
  size,
1325
1232
  showName: true,
@@ -1330,11 +1237,11 @@ var FullPresence = (props) => {
1330
1237
  }
1331
1238
  };
1332
1239
  var PresenceAvatar = /* @__PURE__ */ forwardRef(({ identity, showName, match, index, onClick, size }, forwardedRef) => {
1333
- var _effect = _useSignals16();
1240
+ var _effect = _useSignals13();
1334
1241
  try {
1335
1242
  const status = match ? "current" : "active";
1336
1243
  const fallbackValue = keyToFallback(identity.identityKey);
1337
- return /* @__PURE__ */ React16.createElement(Avatar.Root, null, /* @__PURE__ */ React16.createElement(Avatar.Content, {
1244
+ return /* @__PURE__ */ React13.createElement(Avatar.Root, null, /* @__PURE__ */ React13.createElement(Avatar.Content, {
1338
1245
  status,
1339
1246
  hue: identity.profile?.data?.hue || fallbackValue.hue,
1340
1247
  "data-testid": "spacePlugin.presence.member",
@@ -1348,7 +1255,7 @@ var PresenceAvatar = /* @__PURE__ */ forwardRef(({ identity, showName, match, in
1348
1255
  onClick,
1349
1256
  fallback: identity.profile?.data?.emoji || fallbackValue.emoji,
1350
1257
  ref: forwardedRef
1351
- }), /* @__PURE__ */ React16.createElement(Avatar.Label, {
1258
+ }), /* @__PURE__ */ React13.createElement(Avatar.Label, {
1352
1259
  classNames: showName ? "text-sm truncate pli-2" : "sr-only"
1353
1260
  }, getName(identity)));
1354
1261
  } finally {
@@ -1356,7 +1263,7 @@ var PresenceAvatar = /* @__PURE__ */ forwardRef(({ identity, showName, match, in
1356
1263
  }
1357
1264
  });
1358
1265
  var SmallPresenceLive = ({ id, open, viewers }) => {
1359
- var _effect = _useSignals16();
1266
+ var _effect = _useSignals13();
1360
1267
  try {
1361
1268
  const { hasAttention, isAncestor, isRelated } = useAttention(id);
1362
1269
  const isAttended = hasAttention || isAncestor || isRelated;
@@ -1364,7 +1271,7 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
1364
1271
  const attended = useAttended();
1365
1272
  const startOfAttention = attended.at(-1);
1366
1273
  const path = usePath(graph, startOfAttention);
1367
- const containsAttended = !open && !isAttended && id && Option.isSome(path) ? path.value.includes(id) : false;
1274
+ const containsAttended = !open && !isAttended && id && Option2.isSome(path) ? path.value.includes(id) : false;
1368
1275
  const getActiveViewers = (viewers2) => {
1369
1276
  const moment = Date.now();
1370
1277
  return Array.from(viewers2.values()).filter((viewer) => moment - viewer.lastSeen < ACTIVITY_DURATION);
@@ -1381,7 +1288,7 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
1381
1288
  }, [
1382
1289
  viewers
1383
1290
  ]);
1384
- return /* @__PURE__ */ React16.createElement(SmallPresence, {
1291
+ return /* @__PURE__ */ React13.createElement(SmallPresence, {
1385
1292
  count: activeViewers.length,
1386
1293
  attended: isAttended,
1387
1294
  containsAttended
@@ -1391,16 +1298,16 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
1391
1298
  }
1392
1299
  };
1393
1300
  var SmallPresence = ({ count = 0, attended, containsAttended }) => {
1394
- var _effect = _useSignals16();
1301
+ var _effect = _useSignals13();
1395
1302
  try {
1396
- const { t } = useTranslation15(SPACE_PLUGIN);
1397
- return /* @__PURE__ */ React16.createElement(Tooltip2.Trigger, {
1303
+ const { t } = useTranslation13(meta.id);
1304
+ return /* @__PURE__ */ React13.createElement(Tooltip2.Trigger, {
1398
1305
  asChild: true,
1399
1306
  content: t("presence label", {
1400
1307
  count
1401
1308
  }),
1402
1309
  side: "bottom"
1403
- }, /* @__PURE__ */ React16.createElement(AttentionGlyph, {
1310
+ }, /* @__PURE__ */ React13.createElement(AttentionGlyph, {
1404
1311
  attended,
1405
1312
  containsAttended,
1406
1313
  presence: count > 1 ? "many" : count === 1 ? "one" : "none",
@@ -1412,45 +1319,43 @@ var SmallPresence = ({ count = 0, attended, containsAttended }) => {
1412
1319
  };
1413
1320
 
1414
1321
  // src/components/SpacePluginSettings.tsx
1415
- import { useSignals as _useSignals17 } from "@preact-signals/safe-react/tracking";
1416
- import React17 from "react";
1322
+ import { useSignals as _useSignals14 } from "@preact-signals/safe-react/tracking";
1323
+ import React14 from "react";
1417
1324
  import { createIntent as createIntent8, useIntentDispatcher as useIntentDispatcher8 } from "@dxos/app-framework";
1418
1325
  import { useClient as useClient6 } from "@dxos/react-client";
1419
1326
  import { useSpaces as useSpaces2 } from "@dxos/react-client/echo";
1420
- import { Input as Input5, toLocalizedString as toLocalizedString3, useTranslation as useTranslation16, List as List2, ListItem as ListItem2, IconButton } from "@dxos/react-ui";
1421
- import { controlItemClasses as controlItemClasses2, ControlPage as ControlPage3, ControlSection as ControlSection3, DeprecatedFormInput } from "@dxos/react-ui-form";
1327
+ import { IconButton, Input as Input4, List as List2, ListItem as ListItem2, toLocalizedString as toLocalizedString3, useTranslation as useTranslation14 } from "@dxos/react-ui";
1328
+ import { ControlGroup, ControlItemInput as ControlItemInput2, ControlPage as ControlPage3, ControlSection as ControlSection3, controlItemClasses as controlItemClasses2 } from "@dxos/react-ui-form";
1422
1329
  var SpacePluginSettings = ({ settings }) => {
1423
- var _effect = _useSignals17();
1330
+ var _effect = _useSignals14();
1424
1331
  try {
1425
- const { t } = useTranslation16(SPACE_PLUGIN);
1332
+ const { t } = useTranslation14(meta.id);
1426
1333
  const client = useClient6();
1427
1334
  const spaces = useSpaces2({
1428
1335
  all: settings.showHidden
1429
1336
  });
1430
1337
  const { dispatchPromise: dispatch } = useIntentDispatcher8();
1431
- return /* @__PURE__ */ React17.createElement(ControlPage3, null, /* @__PURE__ */ React17.createElement(ControlSection3, {
1338
+ return /* @__PURE__ */ React14.createElement(ControlPage3, null, /* @__PURE__ */ React14.createElement(ControlSection3, {
1432
1339
  title: t("space settings label"),
1433
1340
  description: t("space settings description")
1434
- }, /* @__PURE__ */ React17.createElement("div", {
1435
- className: "pli-trimMd container-max-width"
1436
- }, /* @__PURE__ */ React17.createElement(DeprecatedFormInput, {
1437
- label: t("show hidden spaces label")
1438
- }, /* @__PURE__ */ React17.createElement(Input5.Switch, {
1341
+ }, /* @__PURE__ */ React14.createElement(ControlGroup, null, /* @__PURE__ */ React14.createElement(ControlItemInput2, {
1342
+ title: t("show hidden spaces label")
1343
+ }, /* @__PURE__ */ React14.createElement(Input4.Switch, {
1439
1344
  checked: settings.showHidden,
1440
1345
  onCheckedChange: (checked) => settings.showHidden = !!checked
1441
- }))), /* @__PURE__ */ React17.createElement(List2, {
1346
+ }))), /* @__PURE__ */ React14.createElement(List2, {
1442
1347
  classNames: [
1443
1348
  controlItemClasses2,
1444
1349
  "flex flex-col gap-trimSm"
1445
1350
  ]
1446
- }, spaces.map((space) => /* @__PURE__ */ React17.createElement(ListItem2.Root, {
1351
+ }, spaces.map((space) => /* @__PURE__ */ React14.createElement(ListItem2.Root, {
1447
1352
  key: space.id,
1448
1353
  classNames: "is-full items-center"
1449
- }, /* @__PURE__ */ React17.createElement(ListItem2.Heading, {
1354
+ }, /* @__PURE__ */ React14.createElement(ListItem2.Heading, {
1450
1355
  classNames: "grow truncate !min-bs-0"
1451
1356
  }, toLocalizedString3(getSpaceDisplayName(space, {
1452
1357
  personal: space === client.spaces.default
1453
- }), t)), /* @__PURE__ */ React17.createElement(IconButton, {
1358
+ }), t)), /* @__PURE__ */ React14.createElement(IconButton, {
1454
1359
  icon: "ph--faders--regular",
1455
1360
  onClick: () => dispatch(createIntent8(SpaceAction.OpenSettings, {
1456
1361
  space
@@ -1463,18 +1368,19 @@ var SpacePluginSettings = ({ settings }) => {
1463
1368
  };
1464
1369
 
1465
1370
  // src/components/SpaceSettings/SpaceSettingsContainer.tsx
1466
- import { useSignals as _useSignals18 } from "@preact-signals/safe-react/tracking";
1467
- import { pipe as pipe2, Schema } from "effect";
1468
- import React18, { useCallback as useCallback10, useMemo as useMemo3, useState as useState9 } from "react";
1469
- import { chain as chain2, createIntent as createIntent9, LayoutAction as LayoutAction7, useIntentDispatcher as useIntentDispatcher9 } from "@dxos/app-framework";
1371
+ import { useSignals as _useSignals15 } from "@preact-signals/safe-react/tracking";
1372
+ import * as Function2 from "effect/Function";
1373
+ import * as Schema from "effect/Schema";
1374
+ import React15, { useCallback as useCallback10, useMemo as useMemo2, useState as useState9 } from "react";
1375
+ import { LayoutAction as LayoutAction7, chain as chain2, createIntent as createIntent9, useIntentDispatcher as useIntentDispatcher9 } from "@dxos/app-framework";
1470
1376
  import { log as log3 } from "@dxos/log";
1471
1377
  import { EdgeReplicationSetting } from "@dxos/protocols/proto/dxos/echo/metadata";
1472
1378
  import { useClient as useClient7 } from "@dxos/react-client";
1473
- import { SpaceState as SpaceState2 } from "@dxos/react-client/echo";
1474
- import { Button as Button7, Input as Input6, useMulticastObservable, useTranslation as useTranslation17 } from "@dxos/react-ui";
1475
- import { Form as Form3, ControlItem, ControlItemInput as ControlItemInput2, ControlSection as ControlSection4, ControlPage as ControlPage4 } from "@dxos/react-ui-form";
1379
+ import { SpaceState } from "@dxos/react-client/echo";
1380
+ import { Button as Button7, Input as Input5, useMulticastObservable, useTranslation as useTranslation15 } from "@dxos/react-ui";
1381
+ import { ControlItem, ControlItemInput as ControlItemInput3, ControlPage as ControlPage4, ControlSection as ControlSection4, Form as Form3 } from "@dxos/react-ui-form";
1476
1382
  import { HuePicker, IconPicker } from "@dxos/react-ui-pickers";
1477
- import { StackItem as StackItem4 } from "@dxos/react-ui-stack";
1383
+ import { StackItem as StackItem3 } from "@dxos/react-ui-stack";
1478
1384
  var __dxlog_file4 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/SpaceSettings/SpaceSettingsContainer.tsx";
1479
1385
  var FormSchema = SpaceForm.pipe(Schema.extend(Schema.Struct({
1480
1386
  archived: Schema.Boolean.annotations({
@@ -1482,19 +1388,19 @@ var FormSchema = SpaceForm.pipe(Schema.extend(Schema.Struct({
1482
1388
  })
1483
1389
  })));
1484
1390
  var SpaceSettingsContainer = ({ space }) => {
1485
- var _effect = _useSignals18();
1391
+ var _effect = _useSignals15();
1486
1392
  try {
1487
- const { t } = useTranslation17(SPACE_PLUGIN);
1393
+ const { t } = useTranslation15(meta.id);
1488
1394
  const { dispatchPromise: dispatch } = useIntentDispatcher9();
1489
1395
  const client = useClient7();
1490
- const archived = useMulticastObservable(space.state) === SpaceState2.SPACE_INACTIVE;
1396
+ const archived = useMulticastObservable(space.state) === SpaceState.SPACE_INACTIVE;
1491
1397
  const [edgeReplication, setEdgeReplication] = useState9(space.internal.data.edgeReplication === EdgeReplicationSetting.ENABLED);
1492
1398
  const toggleEdgeReplication = useCallback10(async (next) => {
1493
1399
  setEdgeReplication(next);
1494
1400
  await space?.internal.setEdgeReplicationPreference(next ? EdgeReplicationSetting.ENABLED : EdgeReplicationSetting.DISABLED).catch((err) => {
1495
1401
  log3.catch(err, void 0, {
1496
1402
  F: __dxlog_file4,
1497
- L: 51,
1403
+ L: 52,
1498
1404
  S: void 0,
1499
1405
  C: (f, a) => f(...a)
1500
1406
  });
@@ -1515,7 +1421,7 @@ var SpaceSettingsContainer = ({ space }) => {
1515
1421
  space.properties.hue = properties.hue;
1516
1422
  }
1517
1423
  if (properties.archived && !archived) {
1518
- void dispatch(pipe2(createIntent9(SpaceAction.Close, {
1424
+ void dispatch(Function2.pipe(createIntent9(SpaceAction.Close, {
1519
1425
  space
1520
1426
  }), chain2(LayoutAction7.SwitchWorkspace, {
1521
1427
  part: "workspace",
@@ -1531,7 +1437,7 @@ var SpaceSettingsContainer = ({ space }) => {
1531
1437
  toggleEdgeReplication,
1532
1438
  archived
1533
1439
  ]);
1534
- const values = useMemo3(() => ({
1440
+ const values = useMemo2(() => ({
1535
1441
  name: space.properties.name,
1536
1442
  icon: space.properties.icon,
1537
1443
  hue: space.properties.hue,
@@ -1544,16 +1450,16 @@ var SpaceSettingsContainer = ({ space }) => {
1544
1450
  edgeReplication,
1545
1451
  archived
1546
1452
  ]);
1547
- const customElements = useMemo3(() => ({
1453
+ const customElements = useMemo2(() => ({
1548
1454
  name: ({ type, label, getValue, onValueChange }) => {
1549
1455
  const handleChange = useCallback10(({ target: { value } }) => onValueChange(type, value), [
1550
1456
  onValueChange,
1551
1457
  type
1552
1458
  ]);
1553
- return /* @__PURE__ */ React18.createElement(ControlItemInput2, {
1459
+ return /* @__PURE__ */ React15.createElement(ControlItemInput3, {
1554
1460
  title: label,
1555
1461
  description: t("display name description")
1556
- }, /* @__PURE__ */ React18.createElement(Input6.TextInput, {
1462
+ }, /* @__PURE__ */ React15.createElement(Input5.TextInput, {
1557
1463
  value: getValue(),
1558
1464
  onChange: handleChange,
1559
1465
  placeholder: t("display name input placeholder"),
@@ -1561,21 +1467,21 @@ var SpaceSettingsContainer = ({ space }) => {
1561
1467
  }));
1562
1468
  },
1563
1469
  icon: ({ type, label, getValue, onValueChange }) => {
1564
- const handleChange = useCallback10((nextEmoji) => onValueChange(type, nextEmoji), [
1470
+ const handleChange = useCallback10((icon) => onValueChange(type, icon), [
1565
1471
  onValueChange,
1566
1472
  type
1567
1473
  ]);
1568
- const handleEmojiReset = useCallback10(() => onValueChange(type, void 0), [
1474
+ const handleReset = useCallback10(() => onValueChange(type, void 0), [
1569
1475
  onValueChange,
1570
1476
  type
1571
1477
  ]);
1572
- return /* @__PURE__ */ React18.createElement(ControlItem, {
1478
+ return /* @__PURE__ */ React15.createElement(ControlItem, {
1573
1479
  title: label,
1574
1480
  description: t("icon description")
1575
- }, /* @__PURE__ */ React18.createElement(IconPicker, {
1481
+ }, /* @__PURE__ */ React15.createElement(IconPicker, {
1576
1482
  value: getValue(),
1577
1483
  onChange: handleChange,
1578
- onReset: handleEmojiReset,
1484
+ onReset: handleReset,
1579
1485
  classNames: "justify-self-end",
1580
1486
  iconSize: 5
1581
1487
  }));
@@ -1585,17 +1491,17 @@ var SpaceSettingsContainer = ({ space }) => {
1585
1491
  onValueChange,
1586
1492
  type
1587
1493
  ]);
1588
- const handleHueReset = useCallback10(() => onValueChange(type, void 0), [
1494
+ const handleReset = useCallback10(() => onValueChange(type, void 0), [
1589
1495
  onValueChange,
1590
1496
  type
1591
1497
  ]);
1592
- return /* @__PURE__ */ React18.createElement(ControlItem, {
1498
+ return /* @__PURE__ */ React15.createElement(ControlItem, {
1593
1499
  title: label,
1594
1500
  description: t("hue description")
1595
- }, /* @__PURE__ */ React18.createElement(HuePicker, {
1501
+ }, /* @__PURE__ */ React15.createElement(HuePicker, {
1596
1502
  value: getValue(),
1597
1503
  onChange: handleChange,
1598
- onReset: handleHueReset,
1504
+ onReset: handleReset,
1599
1505
  classNames: "[--hue-preview-size:1.25rem] justify-self-end"
1600
1506
  }));
1601
1507
  },
@@ -1604,10 +1510,10 @@ var SpaceSettingsContainer = ({ space }) => {
1604
1510
  onValueChange,
1605
1511
  type
1606
1512
  ]);
1607
- return /* @__PURE__ */ React18.createElement(ControlItemInput2, {
1513
+ return /* @__PURE__ */ React15.createElement(ControlItemInput3, {
1608
1514
  title: label,
1609
1515
  description: t("edge replication description")
1610
- }, /* @__PURE__ */ React18.createElement(Input6.Switch, {
1516
+ }, /* @__PURE__ */ React15.createElement(Input5.Switch, {
1611
1517
  checked: getValue(),
1612
1518
  onCheckedChange: handleChange,
1613
1519
  classNames: "justify-self-end"
@@ -1619,10 +1525,10 @@ var SpaceSettingsContainer = ({ space }) => {
1619
1525
  type,
1620
1526
  getValue
1621
1527
  ]);
1622
- return /* @__PURE__ */ React18.createElement(ControlItemInput2, {
1528
+ return /* @__PURE__ */ React15.createElement(ControlItemInput3, {
1623
1529
  title: label,
1624
1530
  description: t("archive space description")
1625
- }, /* @__PURE__ */ React18.createElement(Button7, {
1531
+ }, /* @__PURE__ */ React15.createElement(Button7, {
1626
1532
  disabled: space === client.spaces.default,
1627
1533
  onClick: handleChange
1628
1534
  }, getValue() ? t("unarchive space label") : t("archive space label")));
@@ -1631,23 +1537,23 @@ var SpaceSettingsContainer = ({ space }) => {
1631
1537
  t,
1632
1538
  space
1633
1539
  ]);
1634
- return /* @__PURE__ */ React18.createElement(StackItem4.Content, {
1635
- classNames: "block overflow-y-auto pli-2"
1636
- }, /* @__PURE__ */ React18.createElement(ControlPage4, null, /* @__PURE__ */ React18.createElement(ControlSection4, {
1540
+ return /* @__PURE__ */ React15.createElement(StackItem3.Content, {
1541
+ scrollable: true
1542
+ }, /* @__PURE__ */ React15.createElement(ControlPage4, null, /* @__PURE__ */ React15.createElement(ControlSection4, {
1637
1543
  title: t("space properties settings verbose label", {
1638
- ns: SPACE_PLUGIN
1544
+ ns: meta.id
1639
1545
  }),
1640
1546
  description: t("space properties settings description", {
1641
- ns: SPACE_PLUGIN
1547
+ ns: meta.id
1642
1548
  })
1643
- }, /* @__PURE__ */ React18.createElement(Form3, {
1549
+ }, /* @__PURE__ */ React15.createElement(Form3, {
1644
1550
  schema: FormSchema,
1645
1551
  values,
1646
1552
  autoSave: true,
1647
1553
  onSave: handleSave,
1648
1554
  Custom: customElements,
1649
1555
  outerSpacing: false,
1650
- classNames: "container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content] gap-4"
1556
+ classNames: "container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]"
1651
1557
  }))));
1652
1558
  } finally {
1653
1559
  _effect.f();
@@ -1655,22 +1561,22 @@ var SpaceSettingsContainer = ({ space }) => {
1655
1561
  };
1656
1562
 
1657
1563
  // src/components/SyncStatus/InlineSyncStatus.tsx
1658
- import { useSignals as _useSignals19 } from "@preact-signals/safe-react/tracking";
1659
- import { Option as Option2 } from "effect";
1660
- import React19, { useEffect as useEffect5, useState as useState10 } from "react";
1564
+ import { useSignals as _useSignals16 } from "@preact-signals/safe-react/tracking";
1565
+ import * as Option3 from "effect/Option";
1566
+ import React16, { useEffect as useEffect5, useState as useState10 } from "react";
1661
1567
  import { useAppGraph as useAppGraph3 } from "@dxos/app-framework";
1662
1568
  import { EdgeStatus } from "@dxos/protocols/proto/dxos/client/services";
1663
1569
  import { EdgeReplicationSetting as EdgeReplicationSetting2 } from "@dxos/protocols/proto/dxos/echo/metadata";
1664
1570
  import { useClient as useClient8 } from "@dxos/react-client";
1665
1571
  import { useSpaceSyncState } from "@dxos/react-client/echo";
1666
- import { Tooltip as Tooltip3, useTranslation as useTranslation18 } from "@dxos/react-ui";
1572
+ import { Tooltip as Tooltip3, useTranslation as useTranslation16 } from "@dxos/react-ui";
1667
1573
  import { AttentionGlyph as AttentionGlyph2, useAttended as useAttended2, useAttention as useAttention2 } from "@dxos/react-ui-attention";
1668
1574
  var useEdgeStatus = () => {
1669
- const [status, setStatus] = useState10(EdgeStatus.NOT_CONNECTED);
1575
+ const [status, setStatus] = useState10(EdgeStatus.ConnectionState.NOT_CONNECTED);
1670
1576
  const client = useClient8();
1671
1577
  useEffect5(() => {
1672
1578
  client.services.services.EdgeAgentService?.queryEdgeStatus().subscribe(({ status: status2 }) => {
1673
- setStatus(status2);
1579
+ setStatus(status2.state);
1674
1580
  });
1675
1581
  }, [
1676
1582
  client
@@ -1678,9 +1584,9 @@ var useEdgeStatus = () => {
1678
1584
  return status;
1679
1585
  };
1680
1586
  var InlineSyncStatus = ({ space, open }) => {
1681
- var _effect = _useSignals19();
1587
+ var _effect = _useSignals16();
1682
1588
  try {
1683
- const { t } = useTranslation18(SPACE_PLUGIN);
1589
+ const { t } = useTranslation16(meta.id);
1684
1590
  const id = space.id;
1685
1591
  const { hasAttention, isAncestor, isRelated } = useAttention2(id);
1686
1592
  const isAttended = hasAttention || isAncestor || isRelated;
@@ -1688,16 +1594,16 @@ var InlineSyncStatus = ({ space, open }) => {
1688
1594
  const attended = useAttended2();
1689
1595
  const startOfAttention = attended.at(-1);
1690
1596
  const path = usePath(graph, startOfAttention);
1691
- const containsAttended = !open && !isAttended && id && Option2.isSome(path) ? path.value.includes(id) : false;
1692
- const connectedToEdge = useEdgeStatus() === EdgeStatus.CONNECTED;
1597
+ const containsAttended = !open && !isAttended && id && Option3.isSome(path) ? path.value.includes(id) : false;
1598
+ const connectedToEdge = useEdgeStatus() === EdgeStatus.ConnectionState.CONNECTED;
1693
1599
  const edgeSyncEnabled = space.internal.data.edgeReplication === EdgeReplicationSetting2.ENABLED;
1694
1600
  const syncState = useSpaceSyncState(space);
1695
1601
  const syncing = connectedToEdge && edgeSyncEnabled && syncState && syncState.missingOnLocal > 0;
1696
- return /* @__PURE__ */ React19.createElement(Tooltip3.Trigger, {
1602
+ return /* @__PURE__ */ React16.createElement(Tooltip3.Trigger, {
1697
1603
  asChild: true,
1698
1604
  content: t("syncing label"),
1699
1605
  side: "bottom"
1700
- }, /* @__PURE__ */ React19.createElement(AttentionGlyph2, {
1606
+ }, /* @__PURE__ */ React16.createElement(AttentionGlyph2, {
1701
1607
  syncing,
1702
1608
  attended: isAttended,
1703
1609
  containsAttended,
@@ -1709,12 +1615,16 @@ var InlineSyncStatus = ({ space, open }) => {
1709
1615
  };
1710
1616
 
1711
1617
  // src/components/SyncStatus/SyncStatus.tsx
1712
- import { useSignals as _useSignals20 } from "@preact-signals/safe-react/tracking";
1713
- import React20, { useEffect as useEffect6, useState as useState11 } from "react";
1618
+ import { useSignals as _useSignals17 } from "@preact-signals/safe-react/tracking";
1619
+ import React17, { useEffect as useEffect6, useState as useState11 } from "react";
1714
1620
  import { StatusBar } from "@dxos/plugin-status-bar";
1621
+ import { EdgeStatus as EdgeStatus2 } from "@dxos/protocols/proto/dxos/client/services";
1715
1622
  import { useClient as useClient9 } from "@dxos/react-client";
1623
+ import { useStream } from "@dxos/react-client/devtools";
1716
1624
  import { getSyncSummary, useSyncState } from "@dxos/react-client/echo";
1717
- import { Icon as Icon5, useTranslation as useTranslation19 } from "@dxos/react-ui";
1625
+ import { Icon as Icon8, Popover as Popover3, useTranslation as useTranslation17 } from "@dxos/react-ui";
1626
+ import { mx as mx2 } from "@dxos/react-ui-theme";
1627
+ import { Unit } from "@dxos/util";
1718
1628
 
1719
1629
  // src/components/SyncStatus/save-tracker.ts
1720
1630
  import { Context } from "@dxos/context";
@@ -1810,7 +1720,7 @@ var getIcon = (status) => {
1810
1720
  // src/components/SyncStatus/SyncStatus.tsx
1811
1721
  var SYNC_STALLED_TIMEOUT = 5e3;
1812
1722
  var SyncStatus = () => {
1813
- var _effect = _useSignals20();
1723
+ var _effect = _useSignals17();
1814
1724
  try {
1815
1725
  const client = useClient9();
1816
1726
  const state = useSyncState();
@@ -1820,7 +1730,7 @@ var SyncStatus = () => {
1820
1730
  setSaved(state2 === "saved");
1821
1731
  });
1822
1732
  }, []);
1823
- return /* @__PURE__ */ React20.createElement(SyncStatusIndicator, {
1733
+ return /* @__PURE__ */ React17.createElement(SyncStatusIndicator, {
1824
1734
  state,
1825
1735
  saved
1826
1736
  });
@@ -1829,9 +1739,9 @@ var SyncStatus = () => {
1829
1739
  }
1830
1740
  };
1831
1741
  var SyncStatusIndicator = ({ state, saved }) => {
1832
- var _effect = _useSignals20();
1742
+ var _effect = _useSignals17();
1833
1743
  try {
1834
- const { t } = useTranslation19(SPACE_PLUGIN);
1744
+ const { t } = useTranslation17(meta.id);
1835
1745
  const summary = getSyncSummary(state);
1836
1746
  const offline = Object.values(state).length === 0;
1837
1747
  const needsToUpload = summary.differentDocuments > 0 || summary.missingOnRemote > 0;
@@ -1858,32 +1768,162 @@ var SyncStatusIndicator = ({ state, saved }) => {
1858
1768
  needsToDownload
1859
1769
  ]);
1860
1770
  const title = t(`${status} label`);
1861
- const icon = /* @__PURE__ */ React20.createElement(Icon5, {
1771
+ const icon = /* @__PURE__ */ React17.createElement(Icon8, {
1862
1772
  icon: getIcon(status),
1863
- size: 4,
1864
1773
  classNames
1865
1774
  });
1866
- return /* @__PURE__ */ React20.createElement(StatusBar.Item, {
1775
+ return /* @__PURE__ */ React17.createElement(Popover3.Root, null, /* @__PURE__ */ React17.createElement(Popover3.Trigger, {
1776
+ asChild: true
1777
+ }, /* @__PURE__ */ React17.createElement(StatusBar.Item, {
1867
1778
  title
1868
- }, icon);
1779
+ }, icon)), /* @__PURE__ */ React17.createElement(Popover3.Portal, null, /* @__PURE__ */ React17.createElement(Popover3.Content, null, /* @__PURE__ */ React17.createElement(EdgeConnectionPopover, null), /* @__PURE__ */ React17.createElement(Popover3.Arrow, null))));
1780
+ } finally {
1781
+ _effect.f();
1782
+ }
1783
+ };
1784
+ var useEdgeStatus2 = () => {
1785
+ const client = useClient9();
1786
+ const { status } = useStream(() => client.services.services.EdgeAgentService.queryEdgeStatus(), {});
1787
+ return status;
1788
+ };
1789
+ var EdgeConnectionPopover = () => {
1790
+ var _effect = _useSignals17();
1791
+ try {
1792
+ const status = useEdgeStatus2();
1793
+ const { t } = useTranslation17(meta.id);
1794
+ const isConnected = status?.state === EdgeStatus2.ConnectionState.CONNECTED;
1795
+ return /* @__PURE__ */ React17.createElement("div", {
1796
+ className: "min-is-[240px] p-2"
1797
+ }, /* @__PURE__ */ React17.createElement("div", {
1798
+ className: "flex items-center gap-2 mbe-2"
1799
+ }, /* @__PURE__ */ React17.createElement(Icon8, {
1800
+ icon: isConnected ? "ph--check-circle--regular" : "ph--warning-circle--regular",
1801
+ classNames: mx2(isConnected ? "text-successText" : "text-errorText animate-pulse")
1802
+ }), /* @__PURE__ */ React17.createElement("span", {
1803
+ className: "font-medium text-sm"
1804
+ }, isConnected ? t("sync edge connected label") : t("sync edge disconnected label"))), status?.state === EdgeStatus2.ConnectionState.NOT_CONNECTED && /* @__PURE__ */ React17.createElement("div", {
1805
+ className: "flex items-center gap-2 text-sm text-description"
1806
+ }, /* @__PURE__ */ React17.createElement(Icon8, {
1807
+ icon: "ph--cloud-x--regular"
1808
+ }), /* @__PURE__ */ React17.createElement("span", null, t("sync no connection label"))), status?.state === EdgeStatus2.ConnectionState.CONNECTED && /* @__PURE__ */ React17.createElement("div", {
1809
+ className: "space-y-2"
1810
+ }, /* @__PURE__ */ React17.createElement("div", {
1811
+ className: "flex items-center justify-between"
1812
+ }, /* @__PURE__ */ React17.createElement("div", {
1813
+ className: "flex items-center gap-2 text-sm text-description"
1814
+ }, /* @__PURE__ */ React17.createElement(Icon8, {
1815
+ icon: "ph--timer--regular"
1816
+ }), /* @__PURE__ */ React17.createElement("span", null, t("sync latency label"))), /* @__PURE__ */ React17.createElement("span", {
1817
+ className: "text-sm font-mono text-subdued"
1818
+ }, status.rtt.toFixed(0), "ms")), /* @__PURE__ */ React17.createElement("div", {
1819
+ className: "flex items-center justify-between"
1820
+ }, /* @__PURE__ */ React17.createElement("div", {
1821
+ className: "flex items-center gap-2 text-sm text-description"
1822
+ }, /* @__PURE__ */ React17.createElement(Icon8, {
1823
+ icon: "ph--arrow-up--regular"
1824
+ }), /* @__PURE__ */ React17.createElement("span", null, t("sync upload label"))), /* @__PURE__ */ React17.createElement("span", {
1825
+ className: "text-sm font-mono text-subdued"
1826
+ }, Unit.Kilobyte(status.rateBytesUp, 0), "/s")), /* @__PURE__ */ React17.createElement("div", {
1827
+ className: "flex items-center justify-between"
1828
+ }, /* @__PURE__ */ React17.createElement("div", {
1829
+ className: "flex items-center gap-2 text-sm text-description"
1830
+ }, /* @__PURE__ */ React17.createElement(Icon8, {
1831
+ icon: "ph--arrow-down--regular"
1832
+ }), /* @__PURE__ */ React17.createElement("span", null, t("sync download label"))), /* @__PURE__ */ React17.createElement("span", {
1833
+ className: "text-sm font-mono text-subdued"
1834
+ }, Unit.Kilobyte(status.rateBytesDown, 0), "/s"))));
1869
1835
  } finally {
1870
1836
  _effect.f();
1871
1837
  }
1872
1838
  };
1873
1839
 
1840
+ // src/components/ViewEditor.tsx
1841
+ import { useSignals as _useSignals18 } from "@preact-signals/safe-react/tracking";
1842
+ import React18, { useCallback as useCallback11 } from "react";
1843
+ import { createIntent as createIntent10, useIntentDispatcher as useIntentDispatcher10 } from "@dxos/app-framework";
1844
+ import { Type as Type3 } from "@dxos/echo";
1845
+ import { invariant as invariant2 } from "@dxos/invariant";
1846
+ import { useClient as useClient10 } from "@dxos/react-client";
1847
+ import { getSpace as getSpace4, useSchema } from "@dxos/react-client/echo";
1848
+ import { ViewEditor as NaturalViewEditor } from "@dxos/react-ui-form";
1849
+ import { getTypenameFromQuery as getTypenameFromQuery2 } from "@dxos/schema";
1850
+ var __dxlog_file6 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/ViewEditor.tsx";
1851
+ var ViewEditor = ({ view }) => {
1852
+ var _effect = _useSignals18();
1853
+ try {
1854
+ const { dispatchPromise: dispatch } = useIntentDispatcher10();
1855
+ const client = useClient10();
1856
+ const space = getSpace4(view);
1857
+ const typename = view.query ? getTypenameFromQuery2(view.query.ast) : void 0;
1858
+ const schema = useSchema(client, space, typename);
1859
+ const handleUpdateQuery = useCallback11((newQuery) => {
1860
+ invariant2(schema, void 0, {
1861
+ F: __dxlog_file6,
1862
+ L: 28,
1863
+ S: void 0,
1864
+ A: [
1865
+ "schema",
1866
+ ""
1867
+ ]
1868
+ });
1869
+ invariant2(Type3.isMutable(schema), void 0, {
1870
+ F: __dxlog_file6,
1871
+ L: 29,
1872
+ S: void 0,
1873
+ A: [
1874
+ "Type.isMutable(schema)",
1875
+ ""
1876
+ ]
1877
+ });
1878
+ view.query.ast = newQuery;
1879
+ schema.updateTypename(getTypenameFromQuery2(newQuery));
1880
+ }, [
1881
+ view,
1882
+ schema
1883
+ ]);
1884
+ const handleDelete = useCallback11((fieldId) => {
1885
+ void dispatch(createIntent10(SpaceAction.DeleteField, {
1886
+ view,
1887
+ fieldId
1888
+ }));
1889
+ }, [
1890
+ dispatch,
1891
+ view
1892
+ ]);
1893
+ if (!space || !schema) {
1894
+ return null;
1895
+ }
1896
+ return /* @__PURE__ */ React18.createElement(NaturalViewEditor, {
1897
+ registry: space.db.schemaRegistry,
1898
+ schema,
1899
+ view,
1900
+ onQueryChanged: Type3.isMutable(schema) ? handleUpdateQuery : void 0,
1901
+ onDelete: Type3.isMutable(schema) ? handleDelete : void 0,
1902
+ outerSpacing: false
1903
+ });
1904
+ } finally {
1905
+ _effect.f();
1906
+ }
1907
+ };
1908
+
1909
+ // src/components/index.ts
1910
+ import { lazy } from "react";
1911
+ var CollectionMain = lazy(() => import("./CollectionMain-HTKSZCRR.mjs"));
1912
+ var ObjectDetailsPanel = lazy(() => import("./ObjectDetailsPanel-5B45G744.mjs"));
1913
+ var ObjectSettingsContainer = lazy(() => import("./ObjectSettings-UFTKBP7B.mjs"));
1914
+ var RecordMain = lazy(() => import("./RecordMain-BCSXTSEB.mjs"));
1915
+
1874
1916
  export {
1875
1917
  AwaitingObject,
1876
1918
  CREATE_OBJECT_DIALOG,
1877
1919
  CreateObjectDialog,
1878
1920
  CREATE_SPACE_DIALOG,
1879
1921
  CreateSpaceDialog,
1880
- CollectionMain,
1881
1922
  CollectionSection,
1882
1923
  JOIN_DIALOG,
1883
1924
  JoinDialog,
1884
1925
  MembersContainer,
1885
1926
  MenuFooter,
1886
- ObjectSettingsContainer,
1887
1927
  PersistenceStatus,
1888
1928
  POPOVER_RENAME_OBJECT,
1889
1929
  PopoverRenameObject,
@@ -1900,16 +1940,10 @@ export {
1900
1940
  InlineSyncStatus,
1901
1941
  SyncStatus,
1902
1942
  SyncStatusIndicator,
1903
- AppGraphBuilder,
1904
- AppGraphSerializer,
1905
- IdentityCreated,
1906
- IntentResolver,
1907
- ReactRoot,
1908
- ReactSurface,
1909
- SchemaDefs,
1910
- SchemaTools,
1911
- SpaceSettings,
1912
- SpaceState,
1913
- SpacesReady
1943
+ ViewEditor,
1944
+ CollectionMain,
1945
+ ObjectDetailsPanel,
1946
+ ObjectSettingsContainer,
1947
+ RecordMain
1914
1948
  };
1915
- //# sourceMappingURL=chunk-GVTXQCIW.mjs.map
1949
+ //# sourceMappingURL=chunk-ENBBJSNE.mjs.map