@dxos/plugin-space 0.8.4-main.3a94e84 → 0.8.4-main.406dc2a

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 (305) hide show
  1. package/dist/lib/browser/{CollectionMain-D2B75XBS.mjs → CollectionMain-AX7KKXWP.mjs} +4 -4
  2. package/dist/lib/browser/CollectionMain-AX7KKXWP.mjs.map +7 -0
  3. package/dist/lib/browser/ObjectDetailsPanel-MQBHG666.mjs +145 -0
  4. package/dist/lib/browser/ObjectDetailsPanel-MQBHG666.mjs.map +7 -0
  5. package/dist/lib/browser/ObjectSettings-KNUZFCGS.mjs +151 -0
  6. package/dist/lib/browser/ObjectSettings-KNUZFCGS.mjs.map +7 -0
  7. package/dist/lib/browser/RecordMain-H4DVHICS.mjs +116 -0
  8. package/dist/lib/browser/RecordMain-H4DVHICS.mjs.map +7 -0
  9. package/dist/lib/browser/{app-graph-builder-7CZZJS3S.mjs → app-graph-builder-3R5GGT46.mjs} +102 -61
  10. package/dist/lib/browser/app-graph-builder-3R5GGT46.mjs.map +7 -0
  11. package/dist/lib/browser/{app-graph-serializer-H6AW7KGS.mjs → app-graph-serializer-25Z5BG22.mjs} +14 -14
  12. package/dist/lib/browser/app-graph-serializer-25Z5BG22.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-V7MJSSBQ.mjs → chunk-522KZGQF.mjs} +310 -342
  14. package/dist/lib/browser/chunk-522KZGQF.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-7XOTWRZ3.mjs +166 -0
  16. package/dist/lib/browser/chunk-7XOTWRZ3.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-EIXZABXD.mjs +19 -0
  18. package/dist/lib/browser/chunk-EIXZABXD.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-IRKDREHY.mjs +11 -0
  20. package/dist/lib/browser/chunk-IRKDREHY.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-XUYKJUU7.mjs → chunk-OV6D543A.mjs} +99 -44
  22. package/dist/lib/browser/chunk-OV6D543A.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-QACNNDOT.mjs → chunk-PTGRQQ6J.mjs} +13 -10
  24. package/dist/lib/browser/chunk-PTGRQQ6J.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-RLI2IAHK.mjs +20 -0
  26. package/dist/lib/browser/chunk-RLI2IAHK.mjs.map +7 -0
  27. package/dist/lib/browser/{chunk-SGTQ52SU.mjs → chunk-WS2PJDES.mjs} +22 -12
  28. package/dist/lib/browser/chunk-WS2PJDES.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 +36 -53
  32. package/dist/lib/browser/index.mjs.map +3 -3
  33. package/dist/lib/browser/{intent-resolver-TIXVDYN7.mjs → intent-resolver-ICGUSVH6.mjs} +52 -45
  34. package/dist/lib/browser/intent-resolver-ICGUSVH6.mjs.map +7 -0
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/{react-root-N2J7TDRX.mjs → react-root-H56QN474.mjs} +11 -11
  37. package/dist/lib/browser/react-root-H56QN474.mjs.map +7 -0
  38. package/dist/lib/browser/{react-surface-TPNLWJJH.mjs → react-surface-VOE2ILKO.mjs} +57 -77
  39. package/dist/lib/browser/react-surface-VOE2ILKO.mjs.map +7 -0
  40. package/dist/lib/browser/{schema-defs-Z6FC4AHC.mjs → schema-defs-7R7RKCAE.mjs} +5 -5
  41. package/dist/lib/browser/schema-defs-7R7RKCAE.mjs.map +7 -0
  42. package/dist/lib/browser/{settings-4IMP5RYT.mjs → settings-OBFJ67ZG.mjs} +5 -5
  43. package/dist/lib/browser/{settings-4IMP5RYT.mjs.map → settings-OBFJ67ZG.mjs.map} +1 -1
  44. package/dist/lib/browser/{spaces-ready-TOPG6IV4.mjs → spaces-ready-MFIVK6I6.mjs} +18 -16
  45. package/dist/lib/browser/spaces-ready-MFIVK6I6.mjs.map +7 -0
  46. package/dist/lib/browser/{state-QYZAB45H.mjs → state-LSPRFIRO.mjs} +7 -7
  47. package/dist/lib/browser/state-LSPRFIRO.mjs.map +7 -0
  48. package/dist/lib/browser/types/index.mjs +2 -2
  49. package/dist/lib/node-esm/{CollectionMain-ZJIFCWKZ.mjs → CollectionMain-EU57SRYK.mjs} +4 -4
  50. package/dist/lib/node-esm/CollectionMain-EU57SRYK.mjs.map +7 -0
  51. package/dist/lib/node-esm/ObjectDetailsPanel-NABA2S56.mjs +146 -0
  52. package/dist/lib/node-esm/ObjectDetailsPanel-NABA2S56.mjs.map +7 -0
  53. package/dist/lib/node-esm/ObjectSettings-GXGTITF5.mjs +152 -0
  54. package/dist/lib/node-esm/ObjectSettings-GXGTITF5.mjs.map +7 -0
  55. package/dist/lib/node-esm/RecordMain-MYFTAQ2U.mjs +117 -0
  56. package/dist/lib/node-esm/RecordMain-MYFTAQ2U.mjs.map +7 -0
  57. package/dist/lib/node-esm/{app-graph-builder-KGIGWC72.mjs → app-graph-builder-VGRMD5TP.mjs} +102 -61
  58. package/dist/lib/node-esm/app-graph-builder-VGRMD5TP.mjs.map +7 -0
  59. package/dist/lib/node-esm/{app-graph-serializer-2ICUGQQT.mjs → app-graph-serializer-U4GHXWRG.mjs} +14 -14
  60. package/dist/lib/node-esm/app-graph-serializer-U4GHXWRG.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-JH6F4C3I.mjs → chunk-4F25JKVT.mjs} +22 -12
  62. package/dist/lib/node-esm/chunk-4F25JKVT.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-6X5DLJM5.mjs → chunk-DG5YEEPZ.mjs} +310 -342
  64. package/dist/lib/node-esm/chunk-DG5YEEPZ.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-H5UPFRRH.mjs +21 -0
  66. package/dist/lib/node-esm/chunk-H5UPFRRH.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-P442DOQ3.mjs → chunk-HAKW2RFD.mjs} +13 -10
  68. package/dist/lib/node-esm/chunk-HAKW2RFD.mjs.map +7 -0
  69. package/dist/lib/node-esm/{chunk-HWNG4MEU.mjs → chunk-MWNATOXL.mjs} +2 -4
  70. package/dist/lib/node-esm/chunk-MWNATOXL.mjs.map +7 -0
  71. package/dist/lib/node-esm/chunk-PAAWJ4RE.mjs +167 -0
  72. package/dist/lib/node-esm/chunk-PAAWJ4RE.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-SVFKU7EW.mjs +20 -0
  74. package/dist/lib/node-esm/chunk-SVFKU7EW.mjs.map +7 -0
  75. package/dist/lib/node-esm/{chunk-4AOMYKDE.mjs → chunk-TNUWML33.mjs} +99 -44
  76. package/dist/lib/node-esm/chunk-TNUWML33.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 +36 -53
  80. package/dist/lib/node-esm/index.mjs.map +3 -3
  81. package/dist/lib/node-esm/{intent-resolver-MHGHRGDT.mjs → intent-resolver-KVB2A4YC.mjs} +52 -45
  82. package/dist/lib/node-esm/intent-resolver-KVB2A4YC.mjs.map +7 -0
  83. package/dist/lib/node-esm/meta.json +1 -1
  84. package/dist/lib/node-esm/{react-root-KW3TGJGY.mjs → react-root-56PGW5PH.mjs} +11 -11
  85. package/dist/lib/node-esm/react-root-56PGW5PH.mjs.map +7 -0
  86. package/dist/lib/node-esm/{react-surface-UUIUUD6P.mjs → react-surface-NYEQ23A4.mjs} +57 -77
  87. package/dist/lib/node-esm/react-surface-NYEQ23A4.mjs.map +7 -0
  88. package/dist/lib/node-esm/{schema-defs-WHJM7UZE.mjs → schema-defs-RYG5DSUE.mjs} +5 -5
  89. package/dist/lib/node-esm/schema-defs-RYG5DSUE.mjs.map +7 -0
  90. package/dist/lib/node-esm/{settings-SAOBPND3.mjs → settings-QGWWNMMZ.mjs} +5 -5
  91. package/dist/lib/node-esm/{settings-SAOBPND3.mjs.map → settings-QGWWNMMZ.mjs.map} +1 -1
  92. package/dist/lib/node-esm/{spaces-ready-HIUKNDZK.mjs → spaces-ready-TC27M7MP.mjs} +18 -16
  93. package/dist/lib/node-esm/spaces-ready-TC27M7MP.mjs.map +7 -0
  94. package/dist/lib/node-esm/{state-ZVEHQ4BJ.mjs → state-TCGOPLRO.mjs} +7 -7
  95. package/dist/lib/node-esm/state-TCGOPLRO.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 +5 -4
  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/CreateDialog/CreateObjectDialog.d.ts +3 -3
  122. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  123. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1604 -4
  124. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  125. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +5 -3
  126. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  127. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -1
  128. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  129. package/dist/types/src/components/JoinDialog.d.ts +1 -1
  130. package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
  131. package/dist/types/src/components/MembersContainer.d.ts +3 -2
  132. package/dist/types/src/components/MembersContainer.d.ts.map +1 -1
  133. package/dist/types/src/components/MembersContainer.stories.d.ts +1604 -5
  134. package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -1
  135. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +9 -0
  136. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -0
  137. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts +10 -0
  138. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -0
  139. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts +3 -0
  140. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts.map +1 -0
  141. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  142. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +1 -1
  143. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
  144. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +1440 -0
  145. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -0
  146. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +1 -1
  147. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
  148. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -1
  149. package/dist/types/src/components/ObjectSettings/index.d.ts +2 -1
  150. package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -1
  151. package/dist/types/src/components/PopoverRenameObject.d.ts +2 -2
  152. package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
  153. package/dist/types/src/components/PopoverRenameSpace.d.ts +1 -1
  154. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
  155. package/dist/types/src/components/RecordMain.d.ts +7 -0
  156. package/dist/types/src/components/RecordMain.d.ts.map +1 -0
  157. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  158. package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
  159. package/dist/types/src/components/SpacePresence.stories.d.ts +1432 -4
  160. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  161. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  162. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1437 -4
  163. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  164. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  165. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1438 -5
  166. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  167. package/dist/types/src/components/ViewEditor.d.ts +1 -1
  168. package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
  169. package/dist/types/src/components/index.d.ts +9 -3
  170. package/dist/types/src/components/index.d.ts.map +1 -1
  171. package/dist/types/src/events.d.ts.map +1 -1
  172. package/dist/types/src/hooks/index.d.ts +1 -0
  173. package/dist/types/src/hooks/index.d.ts.map +1 -1
  174. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  175. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +1 -1
  176. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  177. package/dist/types/src/hooks/usePath.d.ts +1 -1
  178. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  179. package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
  180. package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
  181. package/dist/types/src/meta.d.ts +0 -1
  182. package/dist/types/src/meta.d.ts.map +1 -1
  183. package/dist/types/src/translations.d.ts +1236 -26
  184. package/dist/types/src/translations.d.ts.map +1 -1
  185. package/dist/types/src/types/types.d.ts +78 -96
  186. package/dist/types/src/types/types.d.ts.map +1 -1
  187. package/dist/types/src/util.d.ts +10 -7
  188. package/dist/types/src/util.d.ts.map +1 -1
  189. package/dist/types/tsconfig.tsbuildinfo +1 -1
  190. package/package.json +63 -58
  191. package/src/SpacePlugin.ts +206 -220
  192. package/src/capabilities/app-graph-builder.ts +127 -69
  193. package/src/capabilities/app-graph-serializer.ts +7 -7
  194. package/src/capabilities/capabilities.ts +18 -12
  195. package/src/capabilities/identity-created.ts +1 -1
  196. package/src/capabilities/index.ts +0 -1
  197. package/src/capabilities/intent-resolver.ts +40 -28
  198. package/src/capabilities/react-root.tsx +4 -3
  199. package/src/capabilities/react-surface.tsx +50 -107
  200. package/src/capabilities/schema-defs.ts +3 -2
  201. package/src/capabilities/spaces-ready.ts +11 -8
  202. package/src/capabilities/state.ts +5 -4
  203. package/src/components/AwaitingObject.tsx +3 -3
  204. package/src/components/CollectionMain.tsx +2 -2
  205. package/src/components/CollectionSection.tsx +2 -2
  206. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +11 -10
  207. package/src/components/CreateDialog/CreateObjectDialog.tsx +24 -13
  208. package/src/components/CreateDialog/CreateObjectPanel.tsx +22 -11
  209. package/src/components/CreateDialog/CreateSpaceDialog.tsx +6 -5
  210. package/src/components/JoinDialog.tsx +7 -7
  211. package/src/components/MembersContainer.stories.tsx +36 -10
  212. package/src/components/MembersContainer.tsx +13 -14
  213. package/src/components/MenuFooter.tsx +2 -2
  214. package/src/components/ObjectDetailsPanel/ObjectDetailsPanel.tsx +52 -0
  215. package/src/components/ObjectDetailsPanel/ObjectForm.tsx +75 -0
  216. package/src/components/ObjectDetailsPanel/index.ts +7 -0
  217. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +4 -3
  218. package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
  219. package/src/components/ObjectSettings/BaseObjectSettings.tsx +96 -26
  220. package/src/components/ObjectSettings/ForeignKeys.tsx +3 -3
  221. package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +3 -2
  222. package/src/components/ObjectSettings/index.ts +3 -1
  223. package/src/components/PersistenceStatus.tsx +2 -2
  224. package/src/components/PopoverRenameObject.tsx +9 -15
  225. package/src/components/PopoverRenameSpace.tsx +4 -4
  226. package/src/components/RecordMain.tsx +87 -0
  227. package/src/components/SchemaContainer.tsx +5 -5
  228. package/src/components/SpacePluginSettings.tsx +8 -9
  229. package/src/components/SpacePresence.stories.tsx +23 -22
  230. package/src/components/SpacePresence.tsx +10 -10
  231. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +17 -9
  232. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +19 -18
  233. package/src/components/SyncStatus/InlineSyncStatus.tsx +7 -7
  234. package/src/components/SyncStatus/SyncStatus.stories.tsx +6 -7
  235. package/src/components/SyncStatus/SyncStatus.tsx +93 -5
  236. package/src/components/ViewEditor.tsx +14 -20
  237. package/src/components/index.ts +2 -1
  238. package/src/events.ts +7 -7
  239. package/src/hooks/index.ts +1 -0
  240. package/src/hooks/useActiveSpace.ts +2 -2
  241. package/src/hooks/useInputSurfaceLookup.tsx +2 -2
  242. package/src/hooks/usePath.ts +1 -1
  243. package/src/hooks/useTypeOptions.ts +59 -0
  244. package/src/meta.ts +1 -3
  245. package/src/translations.ts +11 -8
  246. package/src/types/types.ts +21 -13
  247. package/src/util.tsx +97 -40
  248. package/dist/lib/browser/CollectionMain-D2B75XBS.mjs.map +0 -7
  249. package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs +0 -88
  250. package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs.map +0 -7
  251. package/dist/lib/browser/app-graph-builder-7CZZJS3S.mjs.map +0 -7
  252. package/dist/lib/browser/app-graph-serializer-H6AW7KGS.mjs.map +0 -7
  253. package/dist/lib/browser/chunk-CEFHNVU7.mjs +0 -20
  254. package/dist/lib/browser/chunk-CEFHNVU7.mjs.map +0 -7
  255. package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
  256. package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
  257. package/dist/lib/browser/chunk-JS3MMC42.mjs +0 -19
  258. package/dist/lib/browser/chunk-JS3MMC42.mjs.map +0 -7
  259. package/dist/lib/browser/chunk-QACNNDOT.mjs.map +0 -7
  260. package/dist/lib/browser/chunk-SGTQ52SU.mjs.map +0 -7
  261. package/dist/lib/browser/chunk-V7MJSSBQ.mjs.map +0 -7
  262. package/dist/lib/browser/chunk-VLBRSGJ2.mjs +0 -94
  263. package/dist/lib/browser/chunk-VLBRSGJ2.mjs.map +0 -7
  264. package/dist/lib/browser/chunk-XUYKJUU7.mjs.map +0 -7
  265. package/dist/lib/browser/intent-resolver-TIXVDYN7.mjs.map +0 -7
  266. package/dist/lib/browser/react-root-N2J7TDRX.mjs.map +0 -7
  267. package/dist/lib/browser/react-surface-TPNLWJJH.mjs.map +0 -7
  268. package/dist/lib/browser/schema-defs-Z6FC4AHC.mjs.map +0 -7
  269. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs +0 -124
  270. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs.map +0 -7
  271. package/dist/lib/browser/spaces-ready-TOPG6IV4.mjs.map +0 -7
  272. package/dist/lib/browser/state-QYZAB45H.mjs.map +0 -7
  273. package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs.map +0 -7
  274. package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs +0 -89
  275. package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs.map +0 -7
  276. package/dist/lib/node-esm/app-graph-builder-KGIGWC72.mjs.map +0 -7
  277. package/dist/lib/node-esm/app-graph-serializer-2ICUGQQT.mjs.map +0 -7
  278. package/dist/lib/node-esm/chunk-4AOMYKDE.mjs.map +0 -7
  279. package/dist/lib/node-esm/chunk-5HHYE264.mjs +0 -20
  280. package/dist/lib/node-esm/chunk-5HHYE264.mjs.map +0 -7
  281. package/dist/lib/node-esm/chunk-5T3ZH23B.mjs +0 -21
  282. package/dist/lib/node-esm/chunk-5T3ZH23B.mjs.map +0 -7
  283. package/dist/lib/node-esm/chunk-6X5DLJM5.mjs.map +0 -7
  284. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
  285. package/dist/lib/node-esm/chunk-JH6F4C3I.mjs.map +0 -7
  286. package/dist/lib/node-esm/chunk-P442DOQ3.mjs.map +0 -7
  287. package/dist/lib/node-esm/chunk-SSLBYZEY.mjs +0 -96
  288. package/dist/lib/node-esm/chunk-SSLBYZEY.mjs.map +0 -7
  289. package/dist/lib/node-esm/intent-resolver-MHGHRGDT.mjs.map +0 -7
  290. package/dist/lib/node-esm/react-root-KW3TGJGY.mjs.map +0 -7
  291. package/dist/lib/node-esm/react-surface-UUIUUD6P.mjs.map +0 -7
  292. package/dist/lib/node-esm/schema-defs-WHJM7UZE.mjs.map +0 -7
  293. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs +0 -126
  294. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs.map +0 -7
  295. package/dist/lib/node-esm/spaces-ready-HIUKNDZK.mjs.map +0 -7
  296. package/dist/lib/node-esm/state-ZVEHQ4BJ.mjs.map +0 -7
  297. package/dist/types/src/capabilities/schema-tool.test.d.ts +0 -2
  298. package/dist/types/src/capabilities/schema-tool.test.d.ts.map +0 -1
  299. package/dist/types/src/capabilities/schema-tools.d.ts +0 -13
  300. package/dist/types/src/capabilities/schema-tools.d.ts.map +0 -1
  301. package/dist/types/src/components/ObjectDetailsPanel.d.ts +0 -9
  302. package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +0 -1
  303. package/src/capabilities/schema-tool.test.ts +0 -44
  304. package/src/capabilities/schema-tools.ts +0 -125
  305. package/src/components/ObjectDetailsPanel.tsx +0 -77
@@ -1,27 +1,26 @@
1
1
  import {
2
2
  useInputSurfaceLookup,
3
3
  usePath
4
- } from "./chunk-VLBRSGJ2.mjs";
4
+ } from "./chunk-7XOTWRZ3.mjs";
5
5
  import {
6
6
  SpaceCapabilities
7
- } from "./chunk-CEFHNVU7.mjs";
7
+ } from "./chunk-RLI2IAHK.mjs";
8
8
  import {
9
9
  COMPOSER_SPACE_LOCK,
10
10
  getSpaceDisplayName
11
- } from "./chunk-XUYKJUU7.mjs";
11
+ } from "./chunk-OV6D543A.mjs";
12
12
  import {
13
13
  SpaceAction,
14
14
  SpaceForm
15
- } from "./chunk-SGTQ52SU.mjs";
15
+ } from "./chunk-WS2PJDES.mjs";
16
16
  import {
17
- SPACE_PLUGIN,
18
17
  meta
19
- } from "./chunk-FBCGT5YY.mjs";
18
+ } from "./chunk-IRKDREHY.mjs";
20
19
 
21
20
  // src/components/AwaitingObject.tsx
22
21
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
23
22
  import React, { useCallback, useEffect, useState } from "react";
24
- import { createIntent, LayoutAction, useIntentDispatcher, useLayout } from "@dxos/app-framework";
23
+ import { LayoutAction, createIntent, useIntentDispatcher, useLayout } from "@dxos/app-framework";
25
24
  import { useClient } from "@dxos/react-client";
26
25
  import { Filter, fullyQualifiedId, useQuery } from "@dxos/react-client/echo";
27
26
  import { Button, Icon, Toast, useTranslation } from "@dxos/react-ui";
@@ -33,7 +32,7 @@ var AwaitingObject = ({ id }) => {
33
32
  const [open, setOpen] = useState(true);
34
33
  const [waiting, setWaiting] = useState(true);
35
34
  const [found, setFound] = useState(false);
36
- const { t } = useTranslation(SPACE_PLUGIN);
35
+ const { t } = useTranslation(meta.id);
37
36
  const { dispatchPromise: dispatch } = useIntentDispatcher();
38
37
  const layout = useLayout();
39
38
  const client = useClient();
@@ -121,7 +120,8 @@ var AwaitingObject = ({ id }) => {
121
120
 
122
121
  // src/components/CreateDialog/CreateObjectDialog.tsx
123
122
  import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
124
- import { Effect, pipe } from "effect";
123
+ import * as Effect from "effect/Effect";
124
+ import * as Function from "effect/Function";
125
125
  import React3, { useCallback as useCallback3, useRef, useState as useState2 } from "react";
126
126
  import { Capabilities, LayoutAction as LayoutAction2, chain, createIntent as createIntent2, useCapabilities, useIntentDispatcher as useIntentDispatcher2, usePluginManager } from "@dxos/app-framework";
127
127
  import { Obj, Query, Type as Type2 } from "@dxos/echo";
@@ -130,25 +130,33 @@ import { useClient as useClient2 } from "@dxos/react-client";
130
130
  import { getSpace, isLiveObject, isSpace, useQuery as useQuery2, useSpaces } from "@dxos/react-client/echo";
131
131
  import { Button as Button2, Dialog, Icon as Icon3, useTranslation as useTranslation3 } from "@dxos/react-ui";
132
132
  import { cardDialogContent, cardDialogHeader } from "@dxos/react-ui-stack";
133
- import { DataType } from "@dxos/schema";
133
+ import { DataType, getTypenameFromQuery } from "@dxos/schema";
134
134
  import { isNonNullable as isNonNullable2 } from "@dxos/util";
135
135
 
136
136
  // src/components/CreateDialog/CreateObjectPanel.tsx
137
137
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
138
+ import * as Option from "effect/Option";
138
139
  import React2, { useCallback as useCallback2 } from "react";
139
140
  import { Type } from "@dxos/echo";
140
- import { getTypeAnnotation } from "@dxos/echo-schema";
141
- import { Icon as Icon2, toLocalizedString, useTranslation as useTranslation2 } from "@dxos/react-ui";
141
+ import { ViewAnnotation, getTypeAnnotation } from "@dxos/echo/internal";
142
+ import { Icon as Icon2, toLocalizedString, useDefaultValue, useTranslation as useTranslation2 } from "@dxos/react-ui";
142
143
  import { Form } from "@dxos/react-ui-form";
143
144
  import { SearchList } from "@dxos/react-ui-searchlist";
144
145
  import { cardDialogOverflow, cardDialogPaddedOverflow, cardDialogSearchListRoot } from "@dxos/react-ui-stack";
145
146
  import { isNonNullable } from "@dxos/util";
146
- var CreateObjectPanel = ({ forms, spaces, typename, target, name: initialName, defaultSpaceId, resolve, onTargetChange, onTypenameChange, onCreateObject }) => {
147
+ var CreateObjectPanel = ({ forms, spaces, typename, target, views, initialFormValues: _initialFormValues, defaultSpaceId, resolve, onTargetChange, onTypenameChange, onCreateObject }) => {
147
148
  var _effect = _useSignals2();
148
149
  try {
149
- const { t } = useTranslation2(SPACE_PLUGIN);
150
+ const { t } = useTranslation2(meta.id);
151
+ const initialFormValues = useDefaultValue(_initialFormValues, () => ({}));
150
152
  const form = forms.find((form2) => Type.getTypename(form2.objectSchema) === typename);
151
- const options = forms.map((form2) => getTypeAnnotation(form2.objectSchema)).filter(isNonNullable).sort((a, b) => {
153
+ const options = forms.filter((form2) => {
154
+ if (views == null) {
155
+ return true;
156
+ } else {
157
+ return views === ViewAnnotation.get(form2.objectSchema).pipe(Option.getOrElse(() => false));
158
+ }
159
+ }).map((form2) => getTypeAnnotation(form2.objectSchema)).filter(isNonNullable).sort((a, b) => {
152
160
  const nameA = t("typename label", {
153
161
  ns: a.typename,
154
162
  defaultValue: a.typename
@@ -200,9 +208,7 @@ var CreateObjectPanel = ({ forms, spaces, typename, target, name: initialName, d
200
208
  className: cardDialogOverflow
201
209
  }, /* @__PURE__ */ React2.createElement(Form, {
202
210
  autoFocus: true,
203
- values: {
204
- name: initialName
205
- },
211
+ values: initialFormValues,
206
212
  schema: form.formSchema,
207
213
  testId: "create-object-form",
208
214
  onSave: handleCreateObject,
@@ -216,7 +222,7 @@ var CreateObjectPanel = ({ forms, spaces, typename, target, name: initialName, d
216
222
  var SelectSpace = ({ spaces, defaultSpaceId, onChange }) => {
217
223
  var _effect = _useSignals2();
218
224
  try {
219
- const { t } = useTranslation2(SPACE_PLUGIN);
225
+ const { t } = useTranslation2(meta.id);
220
226
  return /* @__PURE__ */ React2.createElement(SearchList.Root, {
221
227
  label: t("space input label"),
222
228
  classNames: cardDialogSearchListRoot
@@ -256,7 +262,7 @@ var SelectSpace = ({ spaces, defaultSpaceId, onChange }) => {
256
262
  var SelectSchema = ({ options, resolve, onChange }) => {
257
263
  var _effect = _useSignals2();
258
264
  try {
259
- const { t } = useTranslation2(SPACE_PLUGIN);
265
+ const { t } = useTranslation2(meta.id);
260
266
  return /* @__PURE__ */ React2.createElement(SearchList.Root, {
261
267
  label: t("schema input label"),
262
268
  classNames: cardDialogSearchListRoot
@@ -288,29 +294,15 @@ var SelectSchema = ({ options, resolve, onChange }) => {
288
294
  }
289
295
  };
290
296
 
291
- // src/capabilities/index.ts
292
- import { lazy } from "@dxos/app-framework";
293
- var AppGraphBuilder = lazy(() => import("./app-graph-builder-7CZZJS3S.mjs"));
294
- var AppGraphSerializer = lazy(() => import("./app-graph-serializer-H6AW7KGS.mjs"));
295
- var IdentityCreated = lazy(() => import("./identity-created-23XJJV2N.mjs"));
296
- var IntentResolver = lazy(() => import("./intent-resolver-TIXVDYN7.mjs"));
297
- var ReactRoot = lazy(() => import("./react-root-N2J7TDRX.mjs"));
298
- var ReactSurface = lazy(() => import("./react-surface-TPNLWJJH.mjs"));
299
- var SchemaDefs = lazy(() => import("./schema-defs-Z6FC4AHC.mjs"));
300
- var SchemaTools = lazy(() => import("./schema-tools-BNP4JTD7.mjs"));
301
- var SpaceSettings = lazy(() => import("./settings-4IMP5RYT.mjs"));
302
- var SpaceState = lazy(() => import("./state-QYZAB45H.mjs"));
303
- var SpacesReady = lazy(() => import("./spaces-ready-TOPG6IV4.mjs"));
304
-
305
297
  // src/components/CreateDialog/CreateObjectDialog.tsx
306
298
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/CreateDialog/CreateObjectDialog.tsx";
307
- var CREATE_OBJECT_DIALOG = `${SPACE_PLUGIN}/CreateObjectDialog`;
308
- var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, name, onCreateObject, shouldNavigate: _shouldNavigate }) => {
299
+ var CREATE_OBJECT_DIALOG = `${meta.id}/CreateObjectDialog`;
300
+ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, views, initialFormValues, onCreateObject, shouldNavigate: _shouldNavigate }) => {
309
301
  var _effect = _useSignals3();
310
302
  try {
311
303
  const closeRef = useRef(null);
312
304
  const manager = usePluginManager();
313
- const { t } = useTranslation3(SPACE_PLUGIN);
305
+ const { t } = useTranslation3(meta.id);
314
306
  const client = useClient2();
315
307
  const spaces = useSpaces();
316
308
  const { dispatch } = useIntentDispatcher2();
@@ -319,7 +311,7 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, na
319
311
  const [typename, setTypename] = useState2(initialTypename);
320
312
  const space = isSpace(target) ? target : getSpace(target);
321
313
  const queryCollections = useQuery2(space, Query.type(DataType.QueryCollection));
322
- const hiddenTypenames = queryCollections.map((collection) => collection.query.typename).filter(isNonNullable2);
314
+ const hiddenTypenames = queryCollections.map((collection) => getTypenameFromQuery(collection.query)).filter(isNonNullable2);
323
315
  const resolve = useCallback3((typename2) => manager.context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename2)?.metadata ?? {}, [
324
316
  manager
325
317
  ]);
@@ -331,7 +323,7 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, na
331
323
  const space2 = isSpace(target) ? target : getSpace(target);
332
324
  invariant(space2, "Missing space", {
333
325
  F: __dxlog_file,
334
- L: 76,
326
+ L: 84,
335
327
  S: this,
336
328
  A: [
337
329
  "space",
@@ -350,7 +342,7 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, na
350
342
  });
351
343
  const shouldNavigate = _shouldNavigate ?? (() => true);
352
344
  if (shouldNavigate(object)) {
353
- yield* dispatch(pipe(addObjectIntent, chain(LayoutAction2.Open, {
345
+ yield* dispatch(Function.pipe(addObjectIntent, chain(LayoutAction2.Open, {
354
346
  part: "main"
355
347
  })));
356
348
  } else {
@@ -376,7 +368,7 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, na
376
368
  }, /* @__PURE__ */ React3.createElement(Dialog.Title, null, t("create object dialog title", {
377
369
  object: t("typename label", {
378
370
  ns: typename,
379
- defaultValue: "Item"
371
+ defaultValue: views ? "View" : "Item"
380
372
  })
381
373
  })), /* @__PURE__ */ React3.createElement(Dialog.Close, {
382
374
  asChild: true
@@ -392,8 +384,9 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, na
392
384
  forms,
393
385
  spaces,
394
386
  target,
387
+ views,
395
388
  typename,
396
- name,
389
+ initialFormValues,
397
390
  defaultSpaceId: client.spaces.default.id,
398
391
  resolve,
399
392
  onTargetChange: setTarget,
@@ -408,13 +401,13 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, na
408
401
 
409
402
  // src/components/CreateDialog/CreateSpaceDialog.tsx
410
403
  import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
411
- import { Effect as Effect2 } from "effect";
404
+ import * as Effect2 from "effect/Effect";
412
405
  import React4, { useCallback as useCallback4, useRef as useRef2 } from "react";
413
- import { createIntent as createIntent3, LayoutAction as LayoutAction3, useIntentDispatcher as useIntentDispatcher3 } from "@dxos/app-framework";
406
+ import { LayoutAction as LayoutAction3, createIntent as createIntent3, useIntentDispatcher as useIntentDispatcher3 } from "@dxos/app-framework";
414
407
  import { Button as Button3, Dialog as Dialog2, Icon as Icon4, useTranslation as useTranslation4 } from "@dxos/react-ui";
415
408
  import { Form as Form2 } from "@dxos/react-ui-form";
416
409
  import { cardDialogContent as cardDialogContent2, cardDialogHeader as cardDialogHeader2 } from "@dxos/react-ui-stack";
417
- var CREATE_SPACE_DIALOG = `${SPACE_PLUGIN}/CreateSpaceDialog`;
410
+ var CREATE_SPACE_DIALOG = `${meta.id}/CreateSpaceDialog`;
418
411
  var initialValues = {
419
412
  edgeReplication: true
420
413
  };
@@ -422,7 +415,7 @@ var CreateSpaceDialog = () => {
422
415
  var _effect = _useSignals4();
423
416
  try {
424
417
  const closeRef = useRef2(null);
425
- const { t } = useTranslation4(SPACE_PLUGIN);
418
+ const { t } = useTranslation4(meta.id);
426
419
  const { dispatch } = useIntentDispatcher3();
427
420
  const inputSurfaceLookup = useInputSurfaceLookup();
428
421
  const handleCreateSpace = useCallback4(async (data) => {
@@ -486,7 +479,7 @@ import { useTranslation as useTranslation5 } from "@dxos/react-ui";
486
479
  var CollectionSection = ({ collection }) => {
487
480
  var _effect = _useSignals5();
488
481
  try {
489
- const { t } = useTranslation5(SPACE_PLUGIN);
482
+ const { t } = useTranslation5(meta.id);
490
483
  return /* @__PURE__ */ React5.createElement("div", {
491
484
  className: "min-bs-[3.5rem] grid grid-rows-subgrid grid-cols-subgrid items-center"
492
485
  }, /* @__PURE__ */ React5.createElement("span", {
@@ -500,20 +493,20 @@ var CollectionSection = ({ collection }) => {
500
493
  // src/components/JoinDialog.tsx
501
494
  import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
502
495
  import React6, { useCallback as useCallback5 } from "react";
503
- import { createIntent as createIntent4, LayoutAction as LayoutAction4, useAppGraph, useIntentDispatcher as useIntentDispatcher4 } from "@dxos/app-framework";
496
+ import { LayoutAction as LayoutAction4, createIntent as createIntent4, useAppGraph, useIntentDispatcher as useIntentDispatcher4 } from "@dxos/app-framework";
504
497
  import { Trigger } from "@dxos/async";
505
498
  import { ObservabilityAction } from "@dxos/plugin-observability/types";
506
499
  import { useClient as useClient3 } from "@dxos/react-client";
507
500
  import { Dialog as Dialog3, useTranslation as useTranslation6 } from "@dxos/react-ui";
508
501
  import { JoinPanel } from "@dxos/shell/react";
509
- var JOIN_DIALOG = `${SPACE_PLUGIN}/JoinDialog`;
502
+ var JOIN_DIALOG = `${meta.id}/JoinDialog`;
510
503
  var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
511
504
  var _effect = _useSignals6();
512
505
  try {
513
506
  const { dispatchPromise: dispatch } = useIntentDispatcher4();
514
507
  const client = useClient3();
515
508
  const { graph } = useAppGraph();
516
- const { t } = useTranslation6(SPACE_PLUGIN);
509
+ const { t } = useTranslation6(meta.id);
517
510
  const handleDone = useCallback5(async (result) => {
518
511
  const spaceKey = result?.spaceKey;
519
512
  if (!spaceKey) {
@@ -523,18 +516,18 @@ var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
523
516
  dispatch(createIntent4(LayoutAction4.AddToast, {
524
517
  part: "toast",
525
518
  subject: {
526
- id: `${SPACE_PLUGIN}/join-success`,
519
+ id: `${meta.id}/join-success`,
527
520
  duration: 5e3,
528
521
  title: [
529
522
  "join success label",
530
523
  {
531
- ns: SPACE_PLUGIN
524
+ ns: meta.id
532
525
  }
533
526
  ],
534
527
  closeLabel: [
535
528
  "dismiss label",
536
529
  {
537
- ns: SPACE_PLUGIN
530
+ ns: meta.id
538
531
  }
539
532
  ]
540
533
  }
@@ -623,7 +616,7 @@ import { useConfig } from "@dxos/react-client";
623
616
  import { fullyQualifiedId as fullyQualifiedId2, useSpaceInvitations } from "@dxos/react-client/echo";
624
617
  import { Invitation, InvitationEncoder } from "@dxos/react-client/invitations";
625
618
  import { Button as Button4, Clipboard, Icon as Icon5, Input, useId, useTranslation as useTranslation7 } from "@dxos/react-ui";
626
- import { ControlPage, ControlSection, ControlFrame, ControlFrameItem, ControlItemInput } from "@dxos/react-ui-form";
619
+ import { ControlFrame, ControlFrameItem, ControlItemInput, ControlPage, ControlSection } from "@dxos/react-ui-form";
627
620
  import { StackItem } from "@dxos/react-ui-stack";
628
621
  import { DataType as DataType2 } from "@dxos/schema";
629
622
  import { AuthCode, BifurcatedAction, Centered, Emoji, InvitationList, SpaceMemberList, Viewport } from "@dxos/shell/react";
@@ -648,7 +641,7 @@ var handleInvitationEvent = (invitation, subscription) => {
648
641
  var MembersContainer = ({ space, createInvitationUrl }) => {
649
642
  var _effect = _useSignals7();
650
643
  try {
651
- const { t } = useTranslation7(SPACE_PLUGIN);
644
+ const { t } = useTranslation7(meta.id);
652
645
  const config = useConfig();
653
646
  const { dispatchPromise: dispatch } = useIntentDispatcher5();
654
647
  const invitations = useSpaceInvitations(space.key);
@@ -676,10 +669,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
676
669
  description: t("invite one description", {
677
670
  ns: "os"
678
671
  }),
679
- icon: () => /* @__PURE__ */ React7.createElement(Icon5, {
680
- icon: "ph--user-plus--regular",
681
- size: 5
682
- }),
672
+ icon: "ph--user-plus--regular",
683
673
  testId: "membersContainer.inviteOne",
684
674
  onClick: async () => {
685
675
  const { data: invitation } = await dispatch(createIntent5(SpaceAction.Share, {
@@ -701,10 +691,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
701
691
  description: t("invite many description", {
702
692
  ns: "os"
703
693
  }),
704
- icon: () => /* @__PURE__ */ React7.createElement(Icon5, {
705
- icon: "ph--users-three--regular",
706
- size: 5
707
- }),
694
+ icon: "ph--users-three--regular",
708
695
  testId: "membersContainer.inviteMany",
709
696
  onClick: async () => {
710
697
  const { data: invitation } = await dispatch(createIntent5(SpaceAction.Share, {
@@ -732,7 +719,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
732
719
  setSelectedInvitation(null);
733
720
  };
734
721
  return /* @__PURE__ */ React7.createElement(Clipboard.Provider, null, /* @__PURE__ */ React7.createElement(StackItem.Content, {
735
- classNames: "block overflow-y-auto"
722
+ scrollable: true
736
723
  }, /* @__PURE__ */ React7.createElement(ControlPage, null, /* @__PURE__ */ React7.createElement(ControlSection, {
737
724
  title: t("members verbose label"),
738
725
  description: t("members description")
@@ -764,7 +751,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
764
751
  onChangeActiveAction: setActiveAction,
765
752
  "data-testid": "membersContainer.createInvitation"
766
753
  })))), /* @__PURE__ */ React7.createElement("div", {
767
- className: "justify-center gap-4 p-0 mbs-4 container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]"
754
+ className: "justify-center p-0 mbs-4 container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]"
768
755
  }, /* @__PURE__ */ React7.createElement(ControlItemInput, {
769
756
  title: t("space locked label"),
770
757
  description: t("space locked description")
@@ -815,7 +802,7 @@ var InvitationQR = ({ id, url, onCancel }) => {
815
802
  return /* @__PURE__ */ React7.createElement(React7.Fragment, null, /* @__PURE__ */ React7.createElement("p", {
816
803
  className: "text-description"
817
804
  }, t("qr code description", {
818
- ns: SPACE_PLUGIN
805
+ ns: meta.id
819
806
  })), /* @__PURE__ */ React7.createElement("div", {
820
807
  role: "group",
821
808
  className: "grid grid-cols-[1fr_min-content] mlb-2 gap-2"
@@ -894,7 +881,7 @@ import { DropdownMenu, Icon as Icon6, toLocalizedString as toLocalizedString2, u
894
881
  var MenuFooter = ({ object }) => {
895
882
  var _effect = _useSignals8();
896
883
  try {
897
- const { t } = useTranslation8(SPACE_PLUGIN);
884
+ const { t } = useTranslation8(meta.id);
898
885
  const client = useClient4();
899
886
  const space = getSpace2(object);
900
887
  const spaceName = space ? getSpaceDisplayName(space, {
@@ -915,79 +902,16 @@ var MenuFooter = ({ object }) => {
915
902
  }
916
903
  };
917
904
 
918
- // src/components/ObjectSettings/ObjectSettingsContainer.tsx
919
- import { useSignals as _useSignals10 } from "@preact-signals/safe-react/tracking";
920
- import React10, { useMemo as useMemo2 } from "react";
921
- import { Surface } from "@dxos/app-framework";
922
- import { Clipboard as Clipboard2 } from "@dxos/react-ui";
923
- import { StackItem as StackItem2 } from "@dxos/react-ui-stack";
924
-
925
- // src/components/ObjectSettings/BaseObjectSettings.tsx
926
- import { useSignals as _useSignals9 } from "@preact-signals/safe-react/tracking";
927
- import React9, { useRef as useRef3 } from "react";
928
- import { Input as Input2, useTranslation as useTranslation9 } from "@dxos/react-ui";
929
- var BaseObjectSettings = ({ classNames, children, object }) => {
930
- var _effect = _useSignals9();
931
- try {
932
- const { t } = useTranslation9(meta.id);
933
- const inputRef = useRef3(null);
934
- return /* @__PURE__ */ React9.createElement(React9.Fragment, null, /* @__PURE__ */ React9.createElement(Input2.Root, null, /* @__PURE__ */ React9.createElement(Input2.Label, null, t("name label")), /* @__PURE__ */ React9.createElement(Input2.TextInput, {
935
- ref: inputRef,
936
- placeholder: t("name placeholder"),
937
- // TODO(burdon): Use annotation to get the name field.
938
- value: object.name ?? "",
939
- onChange: (event) => {
940
- object.name = event.target.value;
941
- },
942
- onKeyDown: (event) => {
943
- if (event.key === "Enter") {
944
- inputRef.current?.blur();
945
- }
946
- }
947
- })), children);
948
- } finally {
949
- _effect.f();
950
- }
951
- };
952
-
953
- // src/components/ObjectSettings/ObjectSettingsContainer.tsx
954
- var ObjectSettingsContainer = ({ object, role }) => {
955
- var _effect = _useSignals10();
956
- try {
957
- const data = useMemo2(() => ({
958
- subject: object
959
- }), [
960
- object
961
- ]);
962
- return /* @__PURE__ */ React10.createElement(Clipboard2.Provider, null, /* @__PURE__ */ React10.createElement(StackItem2.Content, {
963
- toolbar: false
964
- }, /* @__PURE__ */ React10.createElement("div", {
965
- role: "none",
966
- className: "overflow-y-auto pli-cardSpacingInline plb-cardSpacingBlock"
967
- }, /* @__PURE__ */ React10.createElement(BaseObjectSettings, {
968
- object
969
- }, /* @__PURE__ */ React10.createElement(Surface, {
970
- role: "base-object-settings",
971
- data
972
- })), /* @__PURE__ */ React10.createElement(Surface, {
973
- role: "object-settings",
974
- data
975
- }))));
976
- } finally {
977
- _effect.f();
978
- }
979
- };
980
-
981
905
  // src/components/PersistenceStatus.tsx
982
- import { useSignals as _useSignals11 } from "@preact-signals/safe-react/tracking";
983
- import React11, { useEffect as useEffect2, useState as useState4 } from "react";
906
+ import { useSignals as _useSignals9 } from "@preact-signals/safe-react/tracking";
907
+ import React9, { useEffect as useEffect2, useState as useState4 } from "react";
984
908
  import { debounce } from "@dxos/async";
985
- import { Icon as Icon7, Tooltip, useTranslation as useTranslation10 } from "@dxos/react-ui";
909
+ import { Icon as Icon7, Tooltip, useTranslation as useTranslation9 } from "@dxos/react-ui";
986
910
  import { mx, staticPlaceholderText, warningText } from "@dxos/react-ui-theme";
987
911
  var PersistenceStatus = ({ db }) => {
988
- var _effect = _useSignals11();
912
+ var _effect = _useSignals9();
989
913
  try {
990
- const { t } = useTranslation10(SPACE_PLUGIN);
914
+ const { t } = useTranslation9(meta.id);
991
915
  const [displayMessage, setDisplayMessage] = useState4(false);
992
916
  const [status, naturalSetStatus] = useState4(0);
993
917
  const [prevStatus, setPrevStatus] = useState4(0);
@@ -1004,37 +928,37 @@ var PersistenceStatus = ({ db }) => {
1004
928
  ]);
1005
929
  switch (status) {
1006
930
  case 2:
1007
- return /* @__PURE__ */ React11.createElement("div", {
931
+ return /* @__PURE__ */ React9.createElement("div", {
1008
932
  className: "flex items-center"
1009
- }, /* @__PURE__ */ React11.createElement(Icon7, {
933
+ }, /* @__PURE__ */ React9.createElement(Icon7, {
1010
934
  icon: "ph--warning--regular",
1011
935
  size: 4,
1012
936
  classNames: "me-1"
1013
- }), /* @__PURE__ */ React11.createElement("span", {
937
+ }), /* @__PURE__ */ React9.createElement("span", {
1014
938
  className: mx("text-sm", warningText)
1015
939
  }, t("persistence error label")));
1016
940
  case 1:
1017
- return /* @__PURE__ */ React11.createElement("div", {
941
+ return /* @__PURE__ */ React9.createElement("div", {
1018
942
  className: "flex items-center"
1019
- }, /* @__PURE__ */ React11.createElement(Icon7, {
943
+ }, /* @__PURE__ */ React9.createElement(Icon7, {
1020
944
  icon: "ph--arrows-counter-clockwise--regular",
1021
945
  size: 4,
1022
946
  classNames: "me-1"
1023
- }), /* @__PURE__ */ React11.createElement("span", {
947
+ }), /* @__PURE__ */ React9.createElement("span", {
1024
948
  className: mx("text-sm", staticPlaceholderText)
1025
949
  }, t("persistence pending label")));
1026
950
  case 0:
1027
951
  default:
1028
- return /* @__PURE__ */ React11.createElement(Tooltip.Trigger, {
952
+ return /* @__PURE__ */ React9.createElement(Tooltip.Trigger, {
1029
953
  delayDuration: 400,
1030
954
  role: "status",
1031
955
  content: t("persisted locally message"),
1032
956
  className: "flex items-center"
1033
- }, /* @__PURE__ */ React11.createElement(Icon7, {
957
+ }, /* @__PURE__ */ React9.createElement(Icon7, {
1034
958
  icon: "ph--check-circle--regular",
1035
959
  size: 4,
1036
960
  classNames: "me-1"
1037
- }), displayMessage && /* @__PURE__ */ React11.createElement("span", {
961
+ }), displayMessage && /* @__PURE__ */ React9.createElement("span", {
1038
962
  className: mx("text-sm", staticPlaceholderText)
1039
963
  }, t("persisted locally label")));
1040
964
  }
@@ -1044,37 +968,33 @@ var PersistenceStatus = ({ db }) => {
1044
968
  };
1045
969
 
1046
970
  // src/components/PopoverRenameObject.tsx
1047
- import { useSignals as _useSignals12 } from "@preact-signals/safe-react/tracking";
1048
- import React12, { useCallback as useCallback7, useRef as useRef4, useState as useState5 } from "react";
1049
- import { createIntent as createIntent6, LayoutAction as LayoutAction5, useIntentDispatcher as useIntentDispatcher6 } from "@dxos/app-framework";
971
+ import { useSignals as _useSignals10 } from "@preact-signals/safe-react/tracking";
972
+ import React10, { useCallback as useCallback7, useRef as useRef3, useState as useState5 } from "react";
973
+ import { LayoutAction as LayoutAction5, createIntent as createIntent6, useIntentDispatcher as useIntentDispatcher6 } from "@dxos/app-framework";
974
+ import { Obj as Obj2 } from "@dxos/echo";
1050
975
  import { log as log2 } from "@dxos/log";
1051
- import { Button as Button5, Input as Input3, useTranslation as useTranslation11 } from "@dxos/react-ui";
976
+ import { Button as Button5, Input as Input2, useTranslation as useTranslation10 } from "@dxos/react-ui";
1052
977
  var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx";
1053
- var POPOVER_RENAME_OBJECT = `${SPACE_PLUGIN}/PopoverRenameObject`;
1054
- var PopoverRenameObject = ({ object: obj }) => {
1055
- var _effect = _useSignals12();
978
+ var POPOVER_RENAME_OBJECT = `${meta.id}/PopoverRenameObject`;
979
+ var PopoverRenameObject = ({ object }) => {
980
+ var _effect = _useSignals10();
1056
981
  try {
1057
- const { t } = useTranslation11(SPACE_PLUGIN);
1058
- const doneButton = useRef4(null);
1059
- const object = obj;
1060
- const [name, setName] = useState5(object.name || object.title || "");
982
+ const { t } = useTranslation10(meta.id);
983
+ const doneButton = useRef3(null);
984
+ const [name, setName] = useState5(Obj2.getLabel(object));
1061
985
  const { dispatchPromise: dispatch } = useIntentDispatcher6();
1062
986
  const handleDone = useCallback7(() => {
1063
987
  try {
1064
- object.name = name;
988
+ name && Obj2.setLabel(object, name);
1065
989
  } catch (err) {
1066
- try {
1067
- object.title = name;
1068
- } catch {
1069
- log2.error("Failed to rename object", {
1070
- err
1071
- }, {
1072
- F: __dxlog_file3,
1073
- L: 32,
1074
- S: void 0,
1075
- C: (f, a) => f(...a)
1076
- });
1077
- }
990
+ log2.error("Failed to rename object", {
991
+ err
992
+ }, {
993
+ F: __dxlog_file3,
994
+ L: 27,
995
+ S: void 0,
996
+ C: (f, a) => f(...a)
997
+ });
1078
998
  }
1079
999
  void dispatch(createIntent6(LayoutAction5.UpdatePopover, {
1080
1000
  part: "popover",
@@ -1088,21 +1008,21 @@ var PopoverRenameObject = ({ object: obj }) => {
1088
1008
  object,
1089
1009
  name
1090
1010
  ]);
1091
- return /* @__PURE__ */ React12.createElement("div", {
1011
+ return /* @__PURE__ */ React10.createElement("div", {
1092
1012
  role: "none",
1093
1013
  className: "p-2 flex gap-2"
1094
- }, /* @__PURE__ */ React12.createElement("div", {
1014
+ }, /* @__PURE__ */ React10.createElement("div", {
1095
1015
  role: "none",
1096
1016
  className: "flex-1"
1097
- }, /* @__PURE__ */ React12.createElement(Input3.Root, null, /* @__PURE__ */ React12.createElement(Input3.Label, {
1017
+ }, /* @__PURE__ */ React10.createElement(Input2.Root, null, /* @__PURE__ */ React10.createElement(Input2.Label, {
1098
1018
  srOnly: true
1099
- }, t("object name label")), /* @__PURE__ */ React12.createElement(Input3.TextInput, {
1019
+ }, t("object name label")), /* @__PURE__ */ React10.createElement(Input2.TextInput, {
1100
1020
  placeholder: t("object placeholder"),
1101
1021
  value: name,
1102
1022
  "data-testid": "spacePlugin.renameObject.input",
1103
1023
  onChange: ({ target: { value } }) => setName(value),
1104
1024
  onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
1105
- }))), /* @__PURE__ */ React12.createElement(Button5, {
1025
+ }))), /* @__PURE__ */ React10.createElement(Button5, {
1106
1026
  ref: doneButton,
1107
1027
  classNames: "self-stretch",
1108
1028
  onClick: handleDone
@@ -1115,16 +1035,16 @@ var PopoverRenameObject = ({ object: obj }) => {
1115
1035
  };
1116
1036
 
1117
1037
  // src/components/PopoverRenameSpace.tsx
1118
- import { useSignals as _useSignals13 } from "@preact-signals/safe-react/tracking";
1119
- import React13, { useCallback as useCallback8, useRef as useRef5, useState as useState6 } from "react";
1120
- import { createIntent as createIntent7, LayoutAction as LayoutAction6, useIntentDispatcher as useIntentDispatcher7 } from "@dxos/app-framework";
1121
- import { Button as Button6, Input as Input4, Popover, useTranslation as useTranslation12 } from "@dxos/react-ui";
1122
- var POPOVER_RENAME_SPACE = `${SPACE_PLUGIN}/PopoverRenameSpace`;
1038
+ import { useSignals as _useSignals11 } from "@preact-signals/safe-react/tracking";
1039
+ import React11, { useCallback as useCallback8, useRef as useRef4, useState as useState6 } from "react";
1040
+ import { LayoutAction as LayoutAction6, createIntent as createIntent7, useIntentDispatcher as useIntentDispatcher7 } from "@dxos/app-framework";
1041
+ import { Button as Button6, Input as Input3, Popover, useTranslation as useTranslation11 } from "@dxos/react-ui";
1042
+ var POPOVER_RENAME_SPACE = `${meta.id}/PopoverRenameSpace`;
1123
1043
  var PopoverRenameSpace = ({ space }) => {
1124
- var _effect = _useSignals13();
1044
+ var _effect = _useSignals11();
1125
1045
  try {
1126
- const { t } = useTranslation12(SPACE_PLUGIN);
1127
- const doneButton = useRef5(null);
1046
+ const { t } = useTranslation11(meta.id);
1047
+ const doneButton = useRef4(null);
1128
1048
  const [name, setName] = useState6(space.properties.name ?? "");
1129
1049
  const { dispatchPromise: dispatch } = useIntentDispatcher7();
1130
1050
  const handleDone = useCallback8(() => {
@@ -1141,24 +1061,24 @@ var PopoverRenameSpace = ({ space }) => {
1141
1061
  space,
1142
1062
  name
1143
1063
  ]);
1144
- return /* @__PURE__ */ React13.createElement("div", {
1064
+ return /* @__PURE__ */ React11.createElement("div", {
1145
1065
  role: "none",
1146
1066
  className: "p-2 flex gap-2"
1147
- }, /* @__PURE__ */ React13.createElement("div", {
1067
+ }, /* @__PURE__ */ React11.createElement("div", {
1148
1068
  role: "none",
1149
1069
  className: "flex-1"
1150
- }, /* @__PURE__ */ React13.createElement(Input4.Root, null, /* @__PURE__ */ React13.createElement(Input4.Label, {
1070
+ }, /* @__PURE__ */ React11.createElement(Input3.Root, null, /* @__PURE__ */ React11.createElement(Input3.Label, {
1151
1071
  srOnly: true
1152
- }, t("space name label")), /* @__PURE__ */ React13.createElement(Input4.TextInput, {
1072
+ }, t("space name label")), /* @__PURE__ */ React11.createElement(Input3.TextInput, {
1153
1073
  defaultValue: space.properties.name ?? "",
1154
1074
  placeholder: t("unnamed space label"),
1155
1075
  onChange: ({ target: { value } }) => setName(value),
1156
1076
  // TODO(wittjosiah): Ideally this should access the popover context to close the popover.
1157
1077
  // Currently this is not possible because Radix does not expose the popover context.
1158
1078
  onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
1159
- }))), /* @__PURE__ */ React13.createElement(Popover.Close, {
1079
+ }))), /* @__PURE__ */ React11.createElement(Popover.Close, {
1160
1080
  asChild: true
1161
- }, /* @__PURE__ */ React13.createElement(Button6, {
1081
+ }, /* @__PURE__ */ React11.createElement(Button6, {
1162
1082
  ref: doneButton,
1163
1083
  classNames: "self-stretch",
1164
1084
  onClick: handleDone
@@ -1171,11 +1091,11 @@ var PopoverRenameSpace = ({ space }) => {
1171
1091
  };
1172
1092
 
1173
1093
  // src/components/SchemaContainer.tsx
1174
- import { useSignals as _useSignals14 } from "@preact-signals/safe-react/tracking";
1175
- import React14, { useState as useState7, useEffect as useEffect3 } from "react";
1176
- import { useTranslation as useTranslation13 } from "@dxos/react-ui";
1177
- import { controlItemClasses, ControlPage as ControlPage2, ControlSection as ControlSection2 } from "@dxos/react-ui-form";
1178
- import { StackItem as StackItem3 } from "@dxos/react-ui-stack";
1094
+ import { useSignals as _useSignals12 } from "@preact-signals/safe-react/tracking";
1095
+ import React12, { useEffect as useEffect3, useState as useState7 } from "react";
1096
+ import { useTranslation as useTranslation12 } from "@dxos/react-ui";
1097
+ import { ControlPage as ControlPage2, ControlSection as ControlSection2, controlItemClasses } from "@dxos/react-ui-form";
1098
+ import { StackItem as StackItem2 } from "@dxos/react-ui-stack";
1179
1099
  var useQuerySpaceSchemas = (space) => {
1180
1100
  const [schemas, setSchemas] = useState7([]);
1181
1101
  useEffect3(() => {
@@ -1190,38 +1110,38 @@ var useQuerySpaceSchemas = (space) => {
1190
1110
  return schemas;
1191
1111
  };
1192
1112
  var SchemaContainer = ({ space }) => {
1193
- var _effect = _useSignals14();
1113
+ var _effect = _useSignals12();
1194
1114
  try {
1195
- const { t } = useTranslation13(SPACE_PLUGIN);
1115
+ const { t } = useTranslation12(meta.id);
1196
1116
  const schemas = useQuerySpaceSchemas(space);
1197
- return /* @__PURE__ */ React14.createElement(StackItem3.Content, {
1198
- classNames: "block overflow-y-auto"
1199
- }, /* @__PURE__ */ React14.createElement(ControlPage2, null, /* @__PURE__ */ React14.createElement(ControlSection2, {
1117
+ return /* @__PURE__ */ React12.createElement(StackItem2.Content, {
1118
+ scrollable: true
1119
+ }, /* @__PURE__ */ React12.createElement(ControlPage2, null, /* @__PURE__ */ React12.createElement(ControlSection2, {
1200
1120
  title: t("schema verbose label"),
1201
1121
  description: t("schema description")
1202
- }, /* @__PURE__ */ React14.createElement("div", {
1122
+ }, /* @__PURE__ */ React12.createElement("div", {
1203
1123
  role: "none",
1204
1124
  className: controlItemClasses
1205
- }, schemas.length === 0 && /* @__PURE__ */ React14.createElement("div", {
1125
+ }, schemas.length === 0 && /* @__PURE__ */ React12.createElement("div", {
1206
1126
  className: "text-center plb-4"
1207
- }, t("no schemas found message")), schemas.map((schema) => /* @__PURE__ */ React14.createElement("div", {
1127
+ }, t("no schemas found message")), schemas.map((schema) => /* @__PURE__ */ React12.createElement("div", {
1208
1128
  key: schema.id
1209
- }, /* @__PURE__ */ React14.createElement("div", null, schema.typename)))))));
1129
+ }, /* @__PURE__ */ React12.createElement("div", null, schema.typename)))))));
1210
1130
  } finally {
1211
1131
  _effect.f();
1212
1132
  }
1213
1133
  };
1214
1134
 
1215
1135
  // src/components/SpacePresence.tsx
1216
- import { useSignals as _useSignals15 } from "@preact-signals/safe-react/tracking";
1217
- import { Option } from "effect";
1218
- import React15, { forwardRef, useCallback as useCallback9, useEffect as useEffect4, useState as useState8 } from "react";
1136
+ import { useSignals as _useSignals13 } from "@preact-signals/safe-react/tracking";
1137
+ import * as Option2 from "effect/Option";
1138
+ import React13, { forwardRef, useCallback as useCallback9, useEffect as useEffect4, useState as useState8 } from "react";
1219
1139
  import { useAppGraph as useAppGraph2, useCapability } from "@dxos/app-framework";
1220
1140
  import { generateName } from "@dxos/display-name";
1221
1141
  import { PublicKey, useClient as useClient5 } from "@dxos/react-client";
1222
- import { getSpace as getSpace3, useMembers, fullyQualifiedId as fullyQualifiedId3 } from "@dxos/react-client/echo";
1142
+ import { fullyQualifiedId as fullyQualifiedId3, getSpace as getSpace3, useMembers } from "@dxos/react-client/echo";
1223
1143
  import { useIdentity } from "@dxos/react-client/halo";
1224
- import { Avatar, Tooltip as Tooltip2, Popover as Popover2, useTranslation as useTranslation14, List, ListItem, useDefaultValue } from "@dxos/react-ui";
1144
+ import { Avatar, List, ListItem, Popover as Popover2, Tooltip as Tooltip2, useDefaultValue as useDefaultValue2, useTranslation as useTranslation13 } from "@dxos/react-ui";
1225
1145
  import { AttentionGlyph, useAttended, useAttention } from "@dxos/react-ui-attention";
1226
1146
  import { ComplexMap, keyToFallback } from "@dxos/util";
1227
1147
  var REFRESH_INTERVAL = 5e3;
@@ -1229,7 +1149,7 @@ var ACTIVITY_DURATION = 3e4;
1229
1149
  var noViewers = new ComplexMap(PublicKey.hash);
1230
1150
  var getName = (identity) => identity.profile?.displayName ?? generateName(identity.identityKey.toHex());
1231
1151
  var SpacePresence = ({ object, spaceKey }) => {
1232
- var _effect = _useSignals15();
1152
+ var _effect = _useSignals13();
1233
1153
  try {
1234
1154
  const spaceState = useCapability(SpaceCapabilities.MutableState);
1235
1155
  const client = useClient5();
@@ -1259,7 +1179,7 @@ var SpacePresence = ({ object, spaceKey }) => {
1259
1179
  lastSeen
1260
1180
  };
1261
1181
  }).toSorted((a, b) => a.lastSeen - b.lastSeen);
1262
- return /* @__PURE__ */ React15.createElement(FullPresence, {
1182
+ return /* @__PURE__ */ React13.createElement(FullPresence, {
1263
1183
  members: membersForObject
1264
1184
  });
1265
1185
  } finally {
@@ -1267,46 +1187,46 @@ var SpacePresence = ({ object, spaceKey }) => {
1267
1187
  }
1268
1188
  };
1269
1189
  var FullPresence = (props) => {
1270
- var _effect = _useSignals15();
1190
+ var _effect = _useSignals13();
1271
1191
  try {
1272
1192
  const { size = 9, onMemberClick } = props;
1273
- const members = useDefaultValue(props.members, () => []);
1193
+ const members = useDefaultValue2(props.members, () => []);
1274
1194
  if (members.length === 0) {
1275
1195
  return null;
1276
1196
  }
1277
- return /* @__PURE__ */ React15.createElement("div", {
1197
+ return /* @__PURE__ */ React13.createElement("div", {
1278
1198
  className: "dx-avatar-group",
1279
1199
  "data-testid": "spacePlugin.presence"
1280
- }, members.slice(0, 3).map((member, i) => /* @__PURE__ */ React15.createElement(Tooltip2.Trigger, {
1200
+ }, members.slice(0, 3).map((member, i) => /* @__PURE__ */ React13.createElement(Tooltip2.Trigger, {
1281
1201
  key: member.identity.identityKey.toHex(),
1282
1202
  side: "bottom",
1283
1203
  content: getName(member.identity),
1284
1204
  className: "grid focus:outline-none"
1285
- }, /* @__PURE__ */ React15.createElement(PresenceAvatar, {
1205
+ }, /* @__PURE__ */ React13.createElement(PresenceAvatar, {
1286
1206
  identity: member.identity,
1287
1207
  match: member.currentlyAttended,
1288
1208
  index: members.length - i,
1289
1209
  onClick: () => onMemberClick?.(member),
1290
1210
  size
1291
- }))), members.length > 3 && /* @__PURE__ */ React15.createElement(Popover2.Root, null, /* @__PURE__ */ React15.createElement(Popover2.Trigger, {
1211
+ }))), members.length > 3 && /* @__PURE__ */ React13.createElement(Popover2.Root, null, /* @__PURE__ */ React13.createElement(Popover2.Trigger, {
1292
1212
  className: "grid focus:outline-none"
1293
- }, /* @__PURE__ */ React15.createElement(Avatar.Root, null, /* @__PURE__ */ React15.createElement(Avatar.Content, {
1213
+ }, /* @__PURE__ */ React13.createElement(Avatar.Root, null, /* @__PURE__ */ React13.createElement(Avatar.Content, {
1294
1214
  status: "inactive",
1295
1215
  style: {
1296
1216
  zIndex: members.length - 4
1297
1217
  },
1298
1218
  fallback: `+${members.length - 3}`,
1299
1219
  size
1300
- }))), /* @__PURE__ */ React15.createElement(Popover2.Portal, null, /* @__PURE__ */ React15.createElement(Popover2.Content, {
1220
+ }))), /* @__PURE__ */ React13.createElement(Popover2.Portal, null, /* @__PURE__ */ React13.createElement(Popover2.Content, {
1301
1221
  side: "bottom"
1302
- }, /* @__PURE__ */ React15.createElement(Popover2.Arrow, null), /* @__PURE__ */ React15.createElement(Popover2.Viewport, {
1222
+ }, /* @__PURE__ */ React13.createElement(Popover2.Arrow, null), /* @__PURE__ */ React13.createElement(Popover2.Viewport, {
1303
1223
  classNames: "max-bs-56"
1304
- }, /* @__PURE__ */ React15.createElement(List, null, members.map((member) => /* @__PURE__ */ React15.createElement(ListItem.Root, {
1224
+ }, /* @__PURE__ */ React13.createElement(List, null, members.map((member) => /* @__PURE__ */ React13.createElement(ListItem.Root, {
1305
1225
  key: member.identity.identityKey.toHex(),
1306
1226
  classNames: "flex gap-2 items-center cursor-pointer mbe-2",
1307
1227
  onClick: () => onMemberClick?.(member),
1308
1228
  "data-testid": "identity-list-item"
1309
- }, /* @__PURE__ */ React15.createElement(PresenceAvatar, {
1229
+ }, /* @__PURE__ */ React13.createElement(PresenceAvatar, {
1310
1230
  identity: member.identity,
1311
1231
  size,
1312
1232
  showName: true,
@@ -1317,11 +1237,11 @@ var FullPresence = (props) => {
1317
1237
  }
1318
1238
  };
1319
1239
  var PresenceAvatar = /* @__PURE__ */ forwardRef(({ identity, showName, match, index, onClick, size }, forwardedRef) => {
1320
- var _effect = _useSignals15();
1240
+ var _effect = _useSignals13();
1321
1241
  try {
1322
1242
  const status = match ? "current" : "active";
1323
1243
  const fallbackValue = keyToFallback(identity.identityKey);
1324
- return /* @__PURE__ */ React15.createElement(Avatar.Root, null, /* @__PURE__ */ React15.createElement(Avatar.Content, {
1244
+ return /* @__PURE__ */ React13.createElement(Avatar.Root, null, /* @__PURE__ */ React13.createElement(Avatar.Content, {
1325
1245
  status,
1326
1246
  hue: identity.profile?.data?.hue || fallbackValue.hue,
1327
1247
  "data-testid": "spacePlugin.presence.member",
@@ -1335,7 +1255,7 @@ var PresenceAvatar = /* @__PURE__ */ forwardRef(({ identity, showName, match, in
1335
1255
  onClick,
1336
1256
  fallback: identity.profile?.data?.emoji || fallbackValue.emoji,
1337
1257
  ref: forwardedRef
1338
- }), /* @__PURE__ */ React15.createElement(Avatar.Label, {
1258
+ }), /* @__PURE__ */ React13.createElement(Avatar.Label, {
1339
1259
  classNames: showName ? "text-sm truncate pli-2" : "sr-only"
1340
1260
  }, getName(identity)));
1341
1261
  } finally {
@@ -1343,7 +1263,7 @@ var PresenceAvatar = /* @__PURE__ */ forwardRef(({ identity, showName, match, in
1343
1263
  }
1344
1264
  });
1345
1265
  var SmallPresenceLive = ({ id, open, viewers }) => {
1346
- var _effect = _useSignals15();
1266
+ var _effect = _useSignals13();
1347
1267
  try {
1348
1268
  const { hasAttention, isAncestor, isRelated } = useAttention(id);
1349
1269
  const isAttended = hasAttention || isAncestor || isRelated;
@@ -1351,7 +1271,7 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
1351
1271
  const attended = useAttended();
1352
1272
  const startOfAttention = attended.at(-1);
1353
1273
  const path = usePath(graph, startOfAttention);
1354
- const containsAttended = !open && !isAttended && id && Option.isSome(path) ? path.value.includes(id) : false;
1274
+ const containsAttended = !open && !isAttended && id && Option2.isSome(path) ? path.value.includes(id) : false;
1355
1275
  const getActiveViewers = (viewers2) => {
1356
1276
  const moment = Date.now();
1357
1277
  return Array.from(viewers2.values()).filter((viewer) => moment - viewer.lastSeen < ACTIVITY_DURATION);
@@ -1368,7 +1288,7 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
1368
1288
  }, [
1369
1289
  viewers
1370
1290
  ]);
1371
- return /* @__PURE__ */ React15.createElement(SmallPresence, {
1291
+ return /* @__PURE__ */ React13.createElement(SmallPresence, {
1372
1292
  count: activeViewers.length,
1373
1293
  attended: isAttended,
1374
1294
  containsAttended
@@ -1378,16 +1298,16 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
1378
1298
  }
1379
1299
  };
1380
1300
  var SmallPresence = ({ count = 0, attended, containsAttended }) => {
1381
- var _effect = _useSignals15();
1301
+ var _effect = _useSignals13();
1382
1302
  try {
1383
- const { t } = useTranslation14(SPACE_PLUGIN);
1384
- return /* @__PURE__ */ React15.createElement(Tooltip2.Trigger, {
1303
+ const { t } = useTranslation13(meta.id);
1304
+ return /* @__PURE__ */ React13.createElement(Tooltip2.Trigger, {
1385
1305
  asChild: true,
1386
1306
  content: t("presence label", {
1387
1307
  count
1388
1308
  }),
1389
1309
  side: "bottom"
1390
- }, /* @__PURE__ */ React15.createElement(AttentionGlyph, {
1310
+ }, /* @__PURE__ */ React13.createElement(AttentionGlyph, {
1391
1311
  attended,
1392
1312
  containsAttended,
1393
1313
  presence: count > 1 ? "many" : count === 1 ? "one" : "none",
@@ -1399,45 +1319,43 @@ var SmallPresence = ({ count = 0, attended, containsAttended }) => {
1399
1319
  };
1400
1320
 
1401
1321
  // src/components/SpacePluginSettings.tsx
1402
- import { useSignals as _useSignals16 } from "@preact-signals/safe-react/tracking";
1403
- import React16 from "react";
1322
+ import { useSignals as _useSignals14 } from "@preact-signals/safe-react/tracking";
1323
+ import React14 from "react";
1404
1324
  import { createIntent as createIntent8, useIntentDispatcher as useIntentDispatcher8 } from "@dxos/app-framework";
1405
1325
  import { useClient as useClient6 } from "@dxos/react-client";
1406
1326
  import { useSpaces as useSpaces2 } from "@dxos/react-client/echo";
1407
- import { Input as Input5, toLocalizedString as toLocalizedString3, useTranslation as useTranslation15, List as List2, ListItem as ListItem2, IconButton } from "@dxos/react-ui";
1408
- import { controlItemClasses as controlItemClasses2, ControlPage as ControlPage3, ControlSection as ControlSection3, DeprecatedFormInput } from "@dxos/react-ui-form";
1327
+ import { IconButton, Input as Input4, List as List2, ListItem as ListItem2, toLocalizedString as toLocalizedString3, useTranslation as useTranslation14 } from "@dxos/react-ui";
1328
+ import { ControlGroup, ControlItemInput as ControlItemInput2, ControlPage as ControlPage3, ControlSection as ControlSection3, controlItemClasses as controlItemClasses2 } from "@dxos/react-ui-form";
1409
1329
  var SpacePluginSettings = ({ settings }) => {
1410
- var _effect = _useSignals16();
1330
+ var _effect = _useSignals14();
1411
1331
  try {
1412
- const { t } = useTranslation15(SPACE_PLUGIN);
1332
+ const { t } = useTranslation14(meta.id);
1413
1333
  const client = useClient6();
1414
1334
  const spaces = useSpaces2({
1415
1335
  all: settings.showHidden
1416
1336
  });
1417
1337
  const { dispatchPromise: dispatch } = useIntentDispatcher8();
1418
- return /* @__PURE__ */ React16.createElement(ControlPage3, null, /* @__PURE__ */ React16.createElement(ControlSection3, {
1338
+ return /* @__PURE__ */ React14.createElement(ControlPage3, null, /* @__PURE__ */ React14.createElement(ControlSection3, {
1419
1339
  title: t("space settings label"),
1420
1340
  description: t("space settings description")
1421
- }, /* @__PURE__ */ React16.createElement("div", {
1422
- className: "pli-trimMd container-max-width"
1423
- }, /* @__PURE__ */ React16.createElement(DeprecatedFormInput, {
1424
- label: t("show hidden spaces label")
1425
- }, /* @__PURE__ */ React16.createElement(Input5.Switch, {
1341
+ }, /* @__PURE__ */ React14.createElement(ControlGroup, null, /* @__PURE__ */ React14.createElement(ControlItemInput2, {
1342
+ title: t("show hidden spaces label")
1343
+ }, /* @__PURE__ */ React14.createElement(Input4.Switch, {
1426
1344
  checked: settings.showHidden,
1427
1345
  onCheckedChange: (checked) => settings.showHidden = !!checked
1428
- }))), /* @__PURE__ */ React16.createElement(List2, {
1346
+ }))), /* @__PURE__ */ React14.createElement(List2, {
1429
1347
  classNames: [
1430
1348
  controlItemClasses2,
1431
1349
  "flex flex-col gap-trimSm"
1432
1350
  ]
1433
- }, spaces.map((space) => /* @__PURE__ */ React16.createElement(ListItem2.Root, {
1351
+ }, spaces.map((space) => /* @__PURE__ */ React14.createElement(ListItem2.Root, {
1434
1352
  key: space.id,
1435
1353
  classNames: "is-full items-center"
1436
- }, /* @__PURE__ */ React16.createElement(ListItem2.Heading, {
1354
+ }, /* @__PURE__ */ React14.createElement(ListItem2.Heading, {
1437
1355
  classNames: "grow truncate !min-bs-0"
1438
1356
  }, toLocalizedString3(getSpaceDisplayName(space, {
1439
1357
  personal: space === client.spaces.default
1440
- }), t)), /* @__PURE__ */ React16.createElement(IconButton, {
1358
+ }), t)), /* @__PURE__ */ React14.createElement(IconButton, {
1441
1359
  icon: "ph--faders--regular",
1442
1360
  onClick: () => dispatch(createIntent8(SpaceAction.OpenSettings, {
1443
1361
  space
@@ -1450,18 +1368,19 @@ var SpacePluginSettings = ({ settings }) => {
1450
1368
  };
1451
1369
 
1452
1370
  // src/components/SpaceSettings/SpaceSettingsContainer.tsx
1453
- import { useSignals as _useSignals17 } from "@preact-signals/safe-react/tracking";
1454
- import { pipe as pipe2, Schema } from "effect";
1455
- import React17, { useCallback as useCallback10, useMemo as useMemo3, useState as useState9 } from "react";
1456
- import { chain as chain2, createIntent as createIntent9, LayoutAction as LayoutAction7, useIntentDispatcher as useIntentDispatcher9 } from "@dxos/app-framework";
1371
+ import { useSignals as _useSignals15 } from "@preact-signals/safe-react/tracking";
1372
+ import * as Function2 from "effect/Function";
1373
+ import * as Schema from "effect/Schema";
1374
+ import React15, { useCallback as useCallback10, useMemo as useMemo2, useState as useState9 } from "react";
1375
+ import { LayoutAction as LayoutAction7, chain as chain2, createIntent as createIntent9, useIntentDispatcher as useIntentDispatcher9 } from "@dxos/app-framework";
1457
1376
  import { log as log3 } from "@dxos/log";
1458
1377
  import { EdgeReplicationSetting } from "@dxos/protocols/proto/dxos/echo/metadata";
1459
1378
  import { useClient as useClient7 } from "@dxos/react-client";
1460
- import { SpaceState as SpaceState2 } from "@dxos/react-client/echo";
1461
- import { Button as Button7, Input as Input6, useMulticastObservable, useTranslation as useTranslation16 } from "@dxos/react-ui";
1462
- import { Form as Form3, ControlItem, ControlItemInput as ControlItemInput2, ControlSection as ControlSection4, ControlPage as ControlPage4 } from "@dxos/react-ui-form";
1379
+ import { SpaceState } from "@dxos/react-client/echo";
1380
+ import { Button as Button7, Input as Input5, useMulticastObservable, useTranslation as useTranslation15 } from "@dxos/react-ui";
1381
+ import { ControlItem, ControlItemInput as ControlItemInput3, ControlPage as ControlPage4, ControlSection as ControlSection4, Form as Form3 } from "@dxos/react-ui-form";
1463
1382
  import { HuePicker, IconPicker } from "@dxos/react-ui-pickers";
1464
- import { StackItem as StackItem4 } from "@dxos/react-ui-stack";
1383
+ import { StackItem as StackItem3 } from "@dxos/react-ui-stack";
1465
1384
  var __dxlog_file4 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/SpaceSettings/SpaceSettingsContainer.tsx";
1466
1385
  var FormSchema = SpaceForm.pipe(Schema.extend(Schema.Struct({
1467
1386
  archived: Schema.Boolean.annotations({
@@ -1469,19 +1388,19 @@ var FormSchema = SpaceForm.pipe(Schema.extend(Schema.Struct({
1469
1388
  })
1470
1389
  })));
1471
1390
  var SpaceSettingsContainer = ({ space }) => {
1472
- var _effect = _useSignals17();
1391
+ var _effect = _useSignals15();
1473
1392
  try {
1474
- const { t } = useTranslation16(SPACE_PLUGIN);
1393
+ const { t } = useTranslation15(meta.id);
1475
1394
  const { dispatchPromise: dispatch } = useIntentDispatcher9();
1476
1395
  const client = useClient7();
1477
- const archived = useMulticastObservable(space.state) === SpaceState2.SPACE_INACTIVE;
1396
+ const archived = useMulticastObservable(space.state) === SpaceState.SPACE_INACTIVE;
1478
1397
  const [edgeReplication, setEdgeReplication] = useState9(space.internal.data.edgeReplication === EdgeReplicationSetting.ENABLED);
1479
1398
  const toggleEdgeReplication = useCallback10(async (next) => {
1480
1399
  setEdgeReplication(next);
1481
1400
  await space?.internal.setEdgeReplicationPreference(next ? EdgeReplicationSetting.ENABLED : EdgeReplicationSetting.DISABLED).catch((err) => {
1482
1401
  log3.catch(err, void 0, {
1483
1402
  F: __dxlog_file4,
1484
- L: 51,
1403
+ L: 52,
1485
1404
  S: void 0,
1486
1405
  C: (f, a) => f(...a)
1487
1406
  });
@@ -1502,7 +1421,7 @@ var SpaceSettingsContainer = ({ space }) => {
1502
1421
  space.properties.hue = properties.hue;
1503
1422
  }
1504
1423
  if (properties.archived && !archived) {
1505
- void dispatch(pipe2(createIntent9(SpaceAction.Close, {
1424
+ void dispatch(Function2.pipe(createIntent9(SpaceAction.Close, {
1506
1425
  space
1507
1426
  }), chain2(LayoutAction7.SwitchWorkspace, {
1508
1427
  part: "workspace",
@@ -1518,7 +1437,7 @@ var SpaceSettingsContainer = ({ space }) => {
1518
1437
  toggleEdgeReplication,
1519
1438
  archived
1520
1439
  ]);
1521
- const values = useMemo3(() => ({
1440
+ const values = useMemo2(() => ({
1522
1441
  name: space.properties.name,
1523
1442
  icon: space.properties.icon,
1524
1443
  hue: space.properties.hue,
@@ -1531,16 +1450,16 @@ var SpaceSettingsContainer = ({ space }) => {
1531
1450
  edgeReplication,
1532
1451
  archived
1533
1452
  ]);
1534
- const customElements = useMemo3(() => ({
1453
+ const customElements = useMemo2(() => ({
1535
1454
  name: ({ type, label, getValue, onValueChange }) => {
1536
1455
  const handleChange = useCallback10(({ target: { value } }) => onValueChange(type, value), [
1537
1456
  onValueChange,
1538
1457
  type
1539
1458
  ]);
1540
- return /* @__PURE__ */ React17.createElement(ControlItemInput2, {
1459
+ return /* @__PURE__ */ React15.createElement(ControlItemInput3, {
1541
1460
  title: label,
1542
1461
  description: t("display name description")
1543
- }, /* @__PURE__ */ React17.createElement(Input6.TextInput, {
1462
+ }, /* @__PURE__ */ React15.createElement(Input5.TextInput, {
1544
1463
  value: getValue(),
1545
1464
  onChange: handleChange,
1546
1465
  placeholder: t("display name input placeholder"),
@@ -1548,21 +1467,21 @@ var SpaceSettingsContainer = ({ space }) => {
1548
1467
  }));
1549
1468
  },
1550
1469
  icon: ({ type, label, getValue, onValueChange }) => {
1551
- const handleChange = useCallback10((nextEmoji) => onValueChange(type, nextEmoji), [
1470
+ const handleChange = useCallback10((icon) => onValueChange(type, icon), [
1552
1471
  onValueChange,
1553
1472
  type
1554
1473
  ]);
1555
- const handleEmojiReset = useCallback10(() => onValueChange(type, void 0), [
1474
+ const handleReset = useCallback10(() => onValueChange(type, void 0), [
1556
1475
  onValueChange,
1557
1476
  type
1558
1477
  ]);
1559
- return /* @__PURE__ */ React17.createElement(ControlItem, {
1478
+ return /* @__PURE__ */ React15.createElement(ControlItem, {
1560
1479
  title: label,
1561
1480
  description: t("icon description")
1562
- }, /* @__PURE__ */ React17.createElement(IconPicker, {
1481
+ }, /* @__PURE__ */ React15.createElement(IconPicker, {
1563
1482
  value: getValue(),
1564
1483
  onChange: handleChange,
1565
- onReset: handleEmojiReset,
1484
+ onReset: handleReset,
1566
1485
  classNames: "justify-self-end",
1567
1486
  iconSize: 5
1568
1487
  }));
@@ -1572,17 +1491,17 @@ var SpaceSettingsContainer = ({ space }) => {
1572
1491
  onValueChange,
1573
1492
  type
1574
1493
  ]);
1575
- const handleHueReset = useCallback10(() => onValueChange(type, void 0), [
1494
+ const handleReset = useCallback10(() => onValueChange(type, void 0), [
1576
1495
  onValueChange,
1577
1496
  type
1578
1497
  ]);
1579
- return /* @__PURE__ */ React17.createElement(ControlItem, {
1498
+ return /* @__PURE__ */ React15.createElement(ControlItem, {
1580
1499
  title: label,
1581
1500
  description: t("hue description")
1582
- }, /* @__PURE__ */ React17.createElement(HuePicker, {
1501
+ }, /* @__PURE__ */ React15.createElement(HuePicker, {
1583
1502
  value: getValue(),
1584
1503
  onChange: handleChange,
1585
- onReset: handleHueReset,
1504
+ onReset: handleReset,
1586
1505
  classNames: "[--hue-preview-size:1.25rem] justify-self-end"
1587
1506
  }));
1588
1507
  },
@@ -1591,10 +1510,10 @@ var SpaceSettingsContainer = ({ space }) => {
1591
1510
  onValueChange,
1592
1511
  type
1593
1512
  ]);
1594
- return /* @__PURE__ */ React17.createElement(ControlItemInput2, {
1513
+ return /* @__PURE__ */ React15.createElement(ControlItemInput3, {
1595
1514
  title: label,
1596
1515
  description: t("edge replication description")
1597
- }, /* @__PURE__ */ React17.createElement(Input6.Switch, {
1516
+ }, /* @__PURE__ */ React15.createElement(Input5.Switch, {
1598
1517
  checked: getValue(),
1599
1518
  onCheckedChange: handleChange,
1600
1519
  classNames: "justify-self-end"
@@ -1606,10 +1525,10 @@ var SpaceSettingsContainer = ({ space }) => {
1606
1525
  type,
1607
1526
  getValue
1608
1527
  ]);
1609
- return /* @__PURE__ */ React17.createElement(ControlItemInput2, {
1528
+ return /* @__PURE__ */ React15.createElement(ControlItemInput3, {
1610
1529
  title: label,
1611
1530
  description: t("archive space description")
1612
- }, /* @__PURE__ */ React17.createElement(Button7, {
1531
+ }, /* @__PURE__ */ React15.createElement(Button7, {
1613
1532
  disabled: space === client.spaces.default,
1614
1533
  onClick: handleChange
1615
1534
  }, getValue() ? t("unarchive space label") : t("archive space label")));
@@ -1618,23 +1537,23 @@ var SpaceSettingsContainer = ({ space }) => {
1618
1537
  t,
1619
1538
  space
1620
1539
  ]);
1621
- return /* @__PURE__ */ React17.createElement(StackItem4.Content, {
1622
- classNames: "block overflow-y-auto pli-2"
1623
- }, /* @__PURE__ */ React17.createElement(ControlPage4, null, /* @__PURE__ */ React17.createElement(ControlSection4, {
1540
+ return /* @__PURE__ */ React15.createElement(StackItem3.Content, {
1541
+ scrollable: true
1542
+ }, /* @__PURE__ */ React15.createElement(ControlPage4, null, /* @__PURE__ */ React15.createElement(ControlSection4, {
1624
1543
  title: t("space properties settings verbose label", {
1625
- ns: SPACE_PLUGIN
1544
+ ns: meta.id
1626
1545
  }),
1627
1546
  description: t("space properties settings description", {
1628
- ns: SPACE_PLUGIN
1547
+ ns: meta.id
1629
1548
  })
1630
- }, /* @__PURE__ */ React17.createElement(Form3, {
1549
+ }, /* @__PURE__ */ React15.createElement(Form3, {
1631
1550
  schema: FormSchema,
1632
1551
  values,
1633
1552
  autoSave: true,
1634
1553
  onSave: handleSave,
1635
1554
  Custom: customElements,
1636
1555
  outerSpacing: false,
1637
- classNames: "container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content] gap-4"
1556
+ classNames: "container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]"
1638
1557
  }))));
1639
1558
  } finally {
1640
1559
  _effect.f();
@@ -1642,22 +1561,22 @@ var SpaceSettingsContainer = ({ space }) => {
1642
1561
  };
1643
1562
 
1644
1563
  // src/components/SyncStatus/InlineSyncStatus.tsx
1645
- import { useSignals as _useSignals18 } from "@preact-signals/safe-react/tracking";
1646
- import { Option as Option2 } from "effect";
1647
- import React18, { useEffect as useEffect5, useState as useState10 } from "react";
1564
+ import { useSignals as _useSignals16 } from "@preact-signals/safe-react/tracking";
1565
+ import * as Option3 from "effect/Option";
1566
+ import React16, { useEffect as useEffect5, useState as useState10 } from "react";
1648
1567
  import { useAppGraph as useAppGraph3 } from "@dxos/app-framework";
1649
1568
  import { EdgeStatus } from "@dxos/protocols/proto/dxos/client/services";
1650
1569
  import { EdgeReplicationSetting as EdgeReplicationSetting2 } from "@dxos/protocols/proto/dxos/echo/metadata";
1651
1570
  import { useClient as useClient8 } from "@dxos/react-client";
1652
1571
  import { useSpaceSyncState } from "@dxos/react-client/echo";
1653
- import { Tooltip as Tooltip3, useTranslation as useTranslation17 } from "@dxos/react-ui";
1572
+ import { Tooltip as Tooltip3, useTranslation as useTranslation16 } from "@dxos/react-ui";
1654
1573
  import { AttentionGlyph as AttentionGlyph2, useAttended as useAttended2, useAttention as useAttention2 } from "@dxos/react-ui-attention";
1655
1574
  var useEdgeStatus = () => {
1656
- const [status, setStatus] = useState10(EdgeStatus.NOT_CONNECTED);
1575
+ const [status, setStatus] = useState10(EdgeStatus.ConnectionState.NOT_CONNECTED);
1657
1576
  const client = useClient8();
1658
1577
  useEffect5(() => {
1659
1578
  client.services.services.EdgeAgentService?.queryEdgeStatus().subscribe(({ status: status2 }) => {
1660
- setStatus(status2);
1579
+ setStatus(status2.state);
1661
1580
  });
1662
1581
  }, [
1663
1582
  client
@@ -1665,9 +1584,9 @@ var useEdgeStatus = () => {
1665
1584
  return status;
1666
1585
  };
1667
1586
  var InlineSyncStatus = ({ space, open }) => {
1668
- var _effect = _useSignals18();
1587
+ var _effect = _useSignals16();
1669
1588
  try {
1670
- const { t } = useTranslation17(SPACE_PLUGIN);
1589
+ const { t } = useTranslation16(meta.id);
1671
1590
  const id = space.id;
1672
1591
  const { hasAttention, isAncestor, isRelated } = useAttention2(id);
1673
1592
  const isAttended = hasAttention || isAncestor || isRelated;
@@ -1675,16 +1594,16 @@ var InlineSyncStatus = ({ space, open }) => {
1675
1594
  const attended = useAttended2();
1676
1595
  const startOfAttention = attended.at(-1);
1677
1596
  const path = usePath(graph, startOfAttention);
1678
- const containsAttended = !open && !isAttended && id && Option2.isSome(path) ? path.value.includes(id) : false;
1679
- const connectedToEdge = useEdgeStatus() === EdgeStatus.CONNECTED;
1597
+ const containsAttended = !open && !isAttended && id && Option3.isSome(path) ? path.value.includes(id) : false;
1598
+ const connectedToEdge = useEdgeStatus() === EdgeStatus.ConnectionState.CONNECTED;
1680
1599
  const edgeSyncEnabled = space.internal.data.edgeReplication === EdgeReplicationSetting2.ENABLED;
1681
1600
  const syncState = useSpaceSyncState(space);
1682
1601
  const syncing = connectedToEdge && edgeSyncEnabled && syncState && syncState.missingOnLocal > 0;
1683
- return /* @__PURE__ */ React18.createElement(Tooltip3.Trigger, {
1602
+ return /* @__PURE__ */ React16.createElement(Tooltip3.Trigger, {
1684
1603
  asChild: true,
1685
1604
  content: t("syncing label"),
1686
1605
  side: "bottom"
1687
- }, /* @__PURE__ */ React18.createElement(AttentionGlyph2, {
1606
+ }, /* @__PURE__ */ React16.createElement(AttentionGlyph2, {
1688
1607
  syncing,
1689
1608
  attended: isAttended,
1690
1609
  containsAttended,
@@ -1696,12 +1615,15 @@ var InlineSyncStatus = ({ space, open }) => {
1696
1615
  };
1697
1616
 
1698
1617
  // src/components/SyncStatus/SyncStatus.tsx
1699
- import { useSignals as _useSignals19 } from "@preact-signals/safe-react/tracking";
1700
- import React19, { useEffect as useEffect6, useState as useState11 } from "react";
1618
+ import { useSignals as _useSignals17 } from "@preact-signals/safe-react/tracking";
1619
+ import React17, { useEffect as useEffect6, useState as useState11 } from "react";
1701
1620
  import { StatusBar } from "@dxos/plugin-status-bar";
1621
+ import { EdgeStatus as EdgeStatus2 } from "@dxos/protocols/proto/dxos/client/services";
1702
1622
  import { useClient as useClient9 } from "@dxos/react-client";
1623
+ import { useStream } from "@dxos/react-client/devtools";
1703
1624
  import { getSyncSummary, useSyncState } from "@dxos/react-client/echo";
1704
- import { Icon as Icon8, useTranslation as useTranslation18 } from "@dxos/react-ui";
1625
+ import { Icon as Icon8, Popover as Popover3, useTranslation as useTranslation17 } from "@dxos/react-ui";
1626
+ import { Unit } from "@dxos/util";
1705
1627
 
1706
1628
  // src/components/SyncStatus/save-tracker.ts
1707
1629
  import { Context } from "@dxos/context";
@@ -1797,7 +1719,7 @@ var getIcon = (status) => {
1797
1719
  // src/components/SyncStatus/SyncStatus.tsx
1798
1720
  var SYNC_STALLED_TIMEOUT = 5e3;
1799
1721
  var SyncStatus = () => {
1800
- var _effect = _useSignals19();
1722
+ var _effect = _useSignals17();
1801
1723
  try {
1802
1724
  const client = useClient9();
1803
1725
  const state = useSyncState();
@@ -1807,7 +1729,7 @@ var SyncStatus = () => {
1807
1729
  setSaved(state2 === "saved");
1808
1730
  });
1809
1731
  }, []);
1810
- return /* @__PURE__ */ React19.createElement(SyncStatusIndicator, {
1732
+ return /* @__PURE__ */ React17.createElement(SyncStatusIndicator, {
1811
1733
  state,
1812
1734
  saved
1813
1735
  });
@@ -1816,9 +1738,9 @@ var SyncStatus = () => {
1816
1738
  }
1817
1739
  };
1818
1740
  var SyncStatusIndicator = ({ state, saved }) => {
1819
- var _effect = _useSignals19();
1741
+ var _effect = _useSignals17();
1820
1742
  try {
1821
- const { t } = useTranslation18(SPACE_PLUGIN);
1743
+ const { t } = useTranslation17(meta.id);
1822
1744
  const summary = getSyncSummary(state);
1823
1745
  const offline = Object.values(state).length === 0;
1824
1746
  const needsToUpload = summary.differentDocuments > 0 || summary.missingOnRemote > 0;
@@ -1845,45 +1767,102 @@ var SyncStatusIndicator = ({ state, saved }) => {
1845
1767
  needsToDownload
1846
1768
  ]);
1847
1769
  const title = t(`${status} label`);
1848
- const icon = /* @__PURE__ */ React19.createElement(Icon8, {
1770
+ const icon = /* @__PURE__ */ React17.createElement(Icon8, {
1849
1771
  icon: getIcon(status),
1850
1772
  size: 4,
1851
1773
  classNames
1852
1774
  });
1853
- return /* @__PURE__ */ React19.createElement(StatusBar.Item, {
1775
+ return /* @__PURE__ */ React17.createElement(Popover3.Root, null, /* @__PURE__ */ React17.createElement(Popover3.Trigger, {
1776
+ asChild: true
1777
+ }, /* @__PURE__ */ React17.createElement(StatusBar.Item, {
1854
1778
  title
1855
- }, icon);
1779
+ }, icon)), /* @__PURE__ */ React17.createElement(Popover3.Portal, null, /* @__PURE__ */ React17.createElement(Popover3.Content, null, /* @__PURE__ */ React17.createElement(EdgeConnectionPopover, null), /* @__PURE__ */ React17.createElement(Popover3.Arrow, null))));
1780
+ } finally {
1781
+ _effect.f();
1782
+ }
1783
+ };
1784
+ var useEdgeStatus2 = () => {
1785
+ const client = useClient9();
1786
+ const { status } = useStream(() => client.services.services.EdgeAgentService.queryEdgeStatus(), {});
1787
+ return status;
1788
+ };
1789
+ var EdgeConnectionPopover = () => {
1790
+ var _effect = _useSignals17();
1791
+ try {
1792
+ const status = useEdgeStatus2();
1793
+ const { t } = useTranslation17(meta.id);
1794
+ const isConnected = status?.state === EdgeStatus2.ConnectionState.CONNECTED;
1795
+ return /* @__PURE__ */ React17.createElement("div", {
1796
+ className: "p-3 min-w-[240px]"
1797
+ }, /* @__PURE__ */ React17.createElement("div", {
1798
+ className: "flex items-center gap-2 mb-3 pb-2 border-b border-neutral-100 dark:border-neutral-800"
1799
+ }, /* @__PURE__ */ React17.createElement("div", {
1800
+ className: `w-2 h-2 rounded-full ${isConnected ? "bg-success-500 animate-pulse" : "bg-error-500"}`
1801
+ }), /* @__PURE__ */ React17.createElement("span", {
1802
+ className: "font-medium text-sm text-neutral-900 dark:text-neutral-100"
1803
+ }, isConnected ? t("Edge connected") : t("Edge disconnected"))), status?.state === EdgeStatus2.ConnectionState.NOT_CONNECTED && /* @__PURE__ */ React17.createElement("div", {
1804
+ className: "flex items-center gap-2 text-sm text-neutral-600 dark:text-neutral-400"
1805
+ }, /* @__PURE__ */ React17.createElement(Icon8, {
1806
+ icon: "ph--cloud-x--regular",
1807
+ size: 4
1808
+ }), /* @__PURE__ */ React17.createElement("span", null, t("No connection to edge service"))), status?.state === EdgeStatus2.ConnectionState.CONNECTED && /* @__PURE__ */ React17.createElement("div", {
1809
+ className: "space-y-2"
1810
+ }, /* @__PURE__ */ React17.createElement("div", {
1811
+ className: "flex items-center justify-between"
1812
+ }, /* @__PURE__ */ React17.createElement("div", {
1813
+ className: "flex items-center gap-2 text-sm text-neutral-600 dark:text-neutral-400"
1814
+ }, /* @__PURE__ */ React17.createElement(Icon8, {
1815
+ icon: "ph--timer--regular",
1816
+ size: 4
1817
+ }), /* @__PURE__ */ React17.createElement("span", null, t("Latency"))), /* @__PURE__ */ React17.createElement("span", {
1818
+ className: "text-sm font-mono text-neutral-900 dark:text-neutral-100"
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-neutral-600 dark:text-neutral-400"
1823
+ }, /* @__PURE__ */ React17.createElement(Icon8, {
1824
+ icon: "ph--arrow-up--regular",
1825
+ size: 4
1826
+ }), /* @__PURE__ */ React17.createElement("span", null, t("Upload"))), /* @__PURE__ */ React17.createElement("span", {
1827
+ className: "text-sm font-mono text-neutral-900 dark:text-neutral-100"
1828
+ }, Unit.Kilobyte(status.rateBytesUp, 0), "/s")), /* @__PURE__ */ React17.createElement("div", {
1829
+ className: "flex items-center justify-between"
1830
+ }, /* @__PURE__ */ React17.createElement("div", {
1831
+ className: "flex items-center gap-2 text-sm text-neutral-600 dark:text-neutral-400"
1832
+ }, /* @__PURE__ */ React17.createElement(Icon8, {
1833
+ icon: "ph--arrow-down--regular",
1834
+ size: 4
1835
+ }), /* @__PURE__ */ React17.createElement("span", null, t("Download"))), /* @__PURE__ */ React17.createElement("span", {
1836
+ className: "text-sm font-mono text-neutral-900 dark:text-neutral-100"
1837
+ }, Unit.Kilobyte(status.rateBytesDown, 0), "/s"))));
1856
1838
  } finally {
1857
1839
  _effect.f();
1858
1840
  }
1859
1841
  };
1860
1842
 
1861
1843
  // src/components/ViewEditor.tsx
1862
- import { useSignals as _useSignals20 } from "@preact-signals/safe-react/tracking";
1863
- import React20, { useCallback as useCallback11, useMemo as useMemo4 } from "react";
1844
+ import { useSignals as _useSignals18 } from "@preact-signals/safe-react/tracking";
1845
+ import React18, { useCallback as useCallback11 } from "react";
1864
1846
  import { createIntent as createIntent10, useIntentDispatcher as useIntentDispatcher10 } from "@dxos/app-framework";
1865
1847
  import { Type as Type3 } from "@dxos/echo";
1866
1848
  import { invariant as invariant2 } from "@dxos/invariant";
1867
1849
  import { useClient as useClient10 } from "@dxos/react-client";
1868
- import { Filter as Filter2, getSpace as getSpace4, useQuery as useQuery3, useSchema } from "@dxos/react-client/echo";
1869
- import { ViewEditor as NativeViewEditor } from "@dxos/react-ui-form";
1870
- import { DataType as DataType3 } from "@dxos/schema";
1850
+ import { getSpace as getSpace4, useSchema } from "@dxos/react-client/echo";
1851
+ import { ViewEditor as NaturalViewEditor } from "@dxos/react-ui-form";
1852
+ import { getTypenameFromQuery as getTypenameFromQuery2 } from "@dxos/schema";
1871
1853
  var __dxlog_file6 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/ViewEditor.tsx";
1872
1854
  var ViewEditor = ({ view }) => {
1873
- var _effect = _useSignals20();
1855
+ var _effect = _useSignals18();
1874
1856
  try {
1875
1857
  const { dispatchPromise: dispatch } = useIntentDispatcher10();
1876
1858
  const client = useClient10();
1877
1859
  const space = getSpace4(view);
1878
- const schema = useSchema(client, space, view.query.typename);
1879
- const views = useQuery3(space, Filter2.type(DataType3.View));
1880
- const currentTypename = useMemo4(() => view.query?.typename, [
1881
- view.query?.typename
1882
- ]);
1883
- const handleUpdateTypename = useCallback11((typename) => {
1860
+ const typename = view.query ? getTypenameFromQuery2(view.query.ast) : void 0;
1861
+ const schema = useSchema(client, space, typename);
1862
+ const handleUpdateQuery = useCallback11((newQuery) => {
1884
1863
  invariant2(schema, void 0, {
1885
1864
  F: __dxlog_file6,
1886
- L: 30,
1865
+ L: 28,
1887
1866
  S: void 0,
1888
1867
  A: [
1889
1868
  "schema",
@@ -1892,20 +1871,17 @@ var ViewEditor = ({ view }) => {
1892
1871
  });
1893
1872
  invariant2(Type3.isMutable(schema), void 0, {
1894
1873
  F: __dxlog_file6,
1895
- L: 31,
1874
+ L: 29,
1896
1875
  S: void 0,
1897
1876
  A: [
1898
1877
  "Type.isMutable(schema)",
1899
1878
  ""
1900
1879
  ]
1901
1880
  });
1902
- const matchingViews = views.filter((view2) => view2.query.typename === currentTypename);
1903
- for (const view2 of matchingViews) {
1904
- view2.query.typename = typename;
1905
- }
1906
- schema.updateTypename(typename);
1881
+ view.query.ast = newQuery;
1882
+ schema.updateTypename(getTypenameFromQuery2(newQuery));
1907
1883
  }, [
1908
- views,
1884
+ view,
1909
1885
  schema
1910
1886
  ]);
1911
1887
  const handleDelete = useCallback11((fieldId) => {
@@ -1920,11 +1896,11 @@ var ViewEditor = ({ view }) => {
1920
1896
  if (!space || !schema) {
1921
1897
  return null;
1922
1898
  }
1923
- return /* @__PURE__ */ React20.createElement(NativeViewEditor, {
1899
+ return /* @__PURE__ */ React18.createElement(NaturalViewEditor, {
1924
1900
  registry: space.db.schemaRegistry,
1925
1901
  schema,
1926
1902
  view,
1927
- onTypenameChanged: Type3.isMutable(schema) ? handleUpdateTypename : void 0,
1903
+ onQueryChanged: Type3.isMutable(schema) ? handleUpdateQuery : void 0,
1928
1904
  onDelete: Type3.isMutable(schema) ? handleDelete : void 0,
1929
1905
  outerSpacing: false
1930
1906
  });
@@ -1934,9 +1910,11 @@ var ViewEditor = ({ view }) => {
1934
1910
  };
1935
1911
 
1936
1912
  // src/components/index.ts
1937
- import { lazy as lazy2 } from "react";
1938
- var CollectionMain = lazy2(() => import("./CollectionMain-D2B75XBS.mjs"));
1939
- var ObjectDetailsPanel = lazy2(() => import("./ObjectDetailsPanel-YPTDQKMG.mjs"));
1913
+ import { lazy } from "react";
1914
+ var CollectionMain = lazy(() => import("./CollectionMain-AX7KKXWP.mjs"));
1915
+ var ObjectDetailsPanel = lazy(() => import("./ObjectDetailsPanel-MQBHG666.mjs"));
1916
+ var ObjectSettingsContainer = lazy(() => import("./ObjectSettings-KNUZFCGS.mjs"));
1917
+ var RecordMain = lazy(() => import("./RecordMain-H4DVHICS.mjs"));
1940
1918
 
1941
1919
  export {
1942
1920
  AwaitingObject,
@@ -1949,7 +1927,6 @@ export {
1949
1927
  JoinDialog,
1950
1928
  MembersContainer,
1951
1929
  MenuFooter,
1952
- ObjectSettingsContainer,
1953
1930
  PersistenceStatus,
1954
1931
  POPOVER_RENAME_OBJECT,
1955
1932
  PopoverRenameObject,
@@ -1969,16 +1946,7 @@ export {
1969
1946
  ViewEditor,
1970
1947
  CollectionMain,
1971
1948
  ObjectDetailsPanel,
1972
- AppGraphBuilder,
1973
- AppGraphSerializer,
1974
- IdentityCreated,
1975
- IntentResolver,
1976
- ReactRoot,
1977
- ReactSurface,
1978
- SchemaDefs,
1979
- SchemaTools,
1980
- SpaceSettings,
1981
- SpaceState,
1982
- SpacesReady
1949
+ ObjectSettingsContainer,
1950
+ RecordMain
1983
1951
  };
1984
- //# sourceMappingURL=chunk-V7MJSSBQ.mjs.map
1952
+ //# sourceMappingURL=chunk-522KZGQF.mjs.map