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