@dxos/plugin-space 0.8.4-main.406dc2a → 0.8.4-main.548089c

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 (293) hide show
  1. package/dist/lib/browser/{CollectionMain-AX7KKXWP.mjs → CollectionArticle-ABGFK4VO.mjs} +8 -8
  2. package/dist/lib/browser/CollectionArticle-ABGFK4VO.mjs.map +7 -0
  3. package/dist/lib/browser/{ObjectDetailsPanel-MQBHG666.mjs → ObjectDetailsPanel-2BRUBHP6.mjs} +16 -20
  4. package/dist/lib/browser/ObjectDetailsPanel-2BRUBHP6.mjs.map +7 -0
  5. package/dist/lib/browser/{ObjectSettings-KNUZFCGS.mjs → ObjectSettings-5LLWCVEK.mjs} +33 -40
  6. package/dist/lib/browser/ObjectSettings-5LLWCVEK.mjs.map +7 -0
  7. package/dist/lib/browser/RecordArticle-G4BCSFFA.mjs +116 -0
  8. package/dist/lib/browser/RecordArticle-G4BCSFFA.mjs.map +7 -0
  9. package/dist/lib/browser/{app-graph-builder-3R5GGT46.mjs → app-graph-builder-FFPJHWFB.mjs} +53 -45
  10. package/dist/lib/browser/app-graph-builder-FFPJHWFB.mjs.map +7 -0
  11. package/dist/lib/browser/{app-graph-serializer-25Z5BG22.mjs → app-graph-serializer-QMWE2YE4.mjs} +10 -10
  12. package/dist/lib/browser/app-graph-serializer-QMWE2YE4.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-OV6D543A.mjs → chunk-I4W2BHA2.mjs} +36 -30
  14. package/dist/lib/browser/chunk-I4W2BHA2.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-RLI2IAHK.mjs → chunk-K5J7ZB5P.mjs} +2 -2
  16. package/dist/lib/browser/chunk-K5J7ZB5P.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-7XOTWRZ3.mjs → chunk-K6TOP4E6.mjs} +19 -18
  18. package/dist/lib/browser/chunk-K6TOP4E6.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-WS2PJDES.mjs → chunk-M2Z6D4ZI.mjs} +12 -11
  20. package/dist/lib/browser/chunk-M2Z6D4ZI.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-522KZGQF.mjs → chunk-MHXNG2X2.mjs} +487 -381
  22. package/dist/lib/browser/chunk-MHXNG2X2.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-PTGRQQ6J.mjs → chunk-OLBBSOVI.mjs} +23 -13
  24. package/dist/lib/browser/chunk-OLBBSOVI.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-VZBIIYFM.mjs +16 -0
  26. package/dist/lib/browser/chunk-VZBIIYFM.mjs.map +7 -0
  27. package/dist/lib/browser/{chunk-EIXZABXD.mjs → chunk-WJXU4GKV.mjs} +2 -2
  28. package/dist/lib/browser/{identity-created-PW2BA46S.mjs → identity-created-NAXTPQXE.mjs} +3 -3
  29. package/dist/lib/browser/identity-created-NAXTPQXE.mjs.map +7 -0
  30. package/dist/lib/browser/index.mjs +63 -46
  31. package/dist/lib/browser/index.mjs.map +3 -3
  32. package/dist/lib/browser/{intent-resolver-ICGUSVH6.mjs → intent-resolver-WLFWCHDH.mjs} +53 -58
  33. package/dist/lib/browser/intent-resolver-WLFWCHDH.mjs.map +7 -0
  34. package/dist/lib/browser/meta.json +1 -1
  35. package/dist/lib/browser/{react-root-H56QN474.mjs → react-root-BPPTUFLV.mjs} +9 -8
  36. package/dist/lib/browser/react-root-BPPTUFLV.mjs.map +7 -0
  37. package/dist/lib/browser/{react-surface-VOE2ILKO.mjs → react-surface-3KTOA5PM.mjs} +37 -40
  38. package/dist/lib/browser/react-surface-3KTOA5PM.mjs.map +7 -0
  39. package/dist/lib/browser/{schema-defs-7R7RKCAE.mjs → schema-defs-XCNOO2WT.mjs} +3 -3
  40. package/dist/lib/browser/{settings-OBFJ67ZG.mjs → settings-WKLGKUHQ.mjs} +3 -3
  41. package/dist/lib/browser/{spaces-ready-MFIVK6I6.mjs → spaces-ready-XVW7I5MQ.mjs} +12 -11
  42. package/dist/lib/browser/spaces-ready-XVW7I5MQ.mjs.map +7 -0
  43. package/dist/lib/browser/{state-LSPRFIRO.mjs → state-Q7YRE5KG.mjs} +3 -3
  44. package/dist/lib/browser/types/index.mjs +2 -2
  45. package/dist/lib/node-esm/{CollectionMain-EU57SRYK.mjs → CollectionArticle-G3V4QXPI.mjs} +8 -8
  46. package/dist/lib/node-esm/CollectionArticle-G3V4QXPI.mjs.map +7 -0
  47. package/dist/lib/node-esm/{ObjectDetailsPanel-NABA2S56.mjs → ObjectDetailsPanel-6PZQIQG3.mjs} +16 -20
  48. package/dist/lib/node-esm/ObjectDetailsPanel-6PZQIQG3.mjs.map +7 -0
  49. package/dist/lib/node-esm/{ObjectSettings-GXGTITF5.mjs → ObjectSettings-OQSBOH7K.mjs} +33 -40
  50. package/dist/lib/node-esm/ObjectSettings-OQSBOH7K.mjs.map +7 -0
  51. package/dist/lib/node-esm/RecordArticle-PBMLYY5K.mjs +117 -0
  52. package/dist/lib/node-esm/RecordArticle-PBMLYY5K.mjs.map +7 -0
  53. package/dist/lib/node-esm/{app-graph-builder-VGRMD5TP.mjs → app-graph-builder-3BTVV7LE.mjs} +53 -45
  54. package/dist/lib/node-esm/app-graph-builder-3BTVV7LE.mjs.map +7 -0
  55. package/dist/lib/node-esm/{app-graph-serializer-U4GHXWRG.mjs → app-graph-serializer-BU7KO2G5.mjs} +10 -10
  56. package/dist/lib/node-esm/app-graph-serializer-BU7KO2G5.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-4F25JKVT.mjs → chunk-2PN7QNGV.mjs} +12 -11
  58. package/dist/lib/node-esm/chunk-2PN7QNGV.mjs.map +7 -0
  59. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs +18 -0
  60. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-PAAWJ4RE.mjs → chunk-FAWIRIP4.mjs} +19 -18
  62. package/dist/lib/node-esm/chunk-FAWIRIP4.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-SVFKU7EW.mjs → chunk-H4JILUJK.mjs} +2 -2
  64. package/dist/lib/node-esm/{chunk-TNUWML33.mjs → chunk-HQMFTMJE.mjs} +36 -30
  65. package/dist/lib/node-esm/chunk-HQMFTMJE.mjs.map +7 -0
  66. package/dist/lib/node-esm/{chunk-DG5YEEPZ.mjs → chunk-MI4A5XUX.mjs} +487 -381
  67. package/dist/lib/node-esm/chunk-MI4A5XUX.mjs.map +7 -0
  68. package/dist/lib/node-esm/{chunk-HAKW2RFD.mjs → chunk-WC4VBFMA.mjs} +23 -13
  69. package/dist/lib/node-esm/chunk-WC4VBFMA.mjs.map +7 -0
  70. package/dist/lib/node-esm/{chunk-H5UPFRRH.mjs → chunk-Z7BB6HC2.mjs} +2 -2
  71. package/dist/lib/node-esm/chunk-Z7BB6HC2.mjs.map +7 -0
  72. package/dist/lib/node-esm/{identity-created-MWTLGQRU.mjs → identity-created-OXLKCJE3.mjs} +3 -3
  73. package/dist/lib/node-esm/identity-created-OXLKCJE3.mjs.map +7 -0
  74. package/dist/lib/node-esm/index.mjs +63 -46
  75. package/dist/lib/node-esm/index.mjs.map +3 -3
  76. package/dist/lib/node-esm/{intent-resolver-KVB2A4YC.mjs → intent-resolver-QHH5SXLC.mjs} +53 -58
  77. package/dist/lib/node-esm/intent-resolver-QHH5SXLC.mjs.map +7 -0
  78. package/dist/lib/node-esm/meta.json +1 -1
  79. package/dist/lib/node-esm/{react-root-56PGW5PH.mjs → react-root-QRONKFKI.mjs} +9 -8
  80. package/dist/lib/node-esm/react-root-QRONKFKI.mjs.map +7 -0
  81. package/dist/lib/node-esm/{react-surface-NYEQ23A4.mjs → react-surface-OZBWNTW2.mjs} +37 -40
  82. package/dist/lib/node-esm/react-surface-OZBWNTW2.mjs.map +7 -0
  83. package/dist/lib/node-esm/{schema-defs-RYG5DSUE.mjs → schema-defs-5TDB7T5J.mjs} +3 -3
  84. package/dist/lib/node-esm/{settings-QGWWNMMZ.mjs → settings-RBB5633M.mjs} +3 -3
  85. package/dist/lib/node-esm/{spaces-ready-TC27M7MP.mjs → spaces-ready-J6RWPI2X.mjs} +12 -11
  86. package/dist/lib/node-esm/spaces-ready-J6RWPI2X.mjs.map +7 -0
  87. package/dist/lib/node-esm/{state-TCGOPLRO.mjs → state-362I5BMK.mjs} +3 -3
  88. package/dist/lib/node-esm/types/index.mjs +2 -2
  89. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  90. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  91. package/dist/types/src/capabilities/capabilities.d.ts +2 -2
  92. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  94. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  95. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  96. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  97. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  98. package/dist/types/src/components/CollectionArticle.d.ts +6 -0
  99. package/dist/types/src/components/CollectionArticle.d.ts.map +1 -0
  100. package/dist/types/src/components/CollectionSection.d.ts +3 -4
  101. package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
  102. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  103. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +91 -1
  104. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  105. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +2 -2
  106. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  107. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  108. package/dist/types/src/components/JoinDialog/JoinDialog.d.ts.map +1 -0
  109. package/dist/types/src/components/JoinDialog/index.d.ts +2 -0
  110. package/dist/types/src/components/JoinDialog/index.d.ts.map +1 -0
  111. package/dist/types/src/components/MembersContainer/MembersContainer.d.ts.map +1 -0
  112. package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts +1697 -0
  113. package/dist/types/src/components/{MembersContainer.stories.d.ts.map → MembersContainer/MembersContainer.stories.d.ts.map} +1 -1
  114. package/dist/types/src/components/MembersContainer/index.d.ts +2 -0
  115. package/dist/types/src/components/MembersContainer/index.d.ts.map +1 -0
  116. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +2 -2
  117. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -1
  118. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -1
  119. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts +7 -0
  120. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts.map +1 -0
  121. package/dist/types/src/components/ObjectRenamePopover/index.d.ts +2 -0
  122. package/dist/types/src/components/ObjectRenamePopover/index.d.ts.map +1 -0
  123. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +1 -1
  124. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
  125. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +91 -1
  126. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -1
  127. package/dist/types/src/components/RecordArticle.d.ts +5 -0
  128. package/dist/types/src/components/RecordArticle.d.ts.map +1 -0
  129. package/dist/types/src/components/{MembersContainer.stories.d.ts → RecordArticle.stories.d.ts} +92 -2
  130. package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -0
  131. package/dist/types/src/components/SchemaContainer.d.ts +1 -1
  132. package/dist/types/src/components/SchemaContainer.d.ts.map +1 -1
  133. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  134. package/dist/types/src/components/{SpacePresence.d.ts → SpacePresence/SpacePresence.d.ts} +4 -3
  135. package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -0
  136. package/dist/types/src/components/{SpacePresence.stories.d.ts → SpacePresence/SpacePresence.stories.d.ts} +91 -1
  137. package/dist/types/src/components/{SpacePresence.stories.d.ts.map → SpacePresence/SpacePresence.stories.d.ts.map} +1 -1
  138. package/dist/types/src/components/SpacePresence/index.d.ts +2 -0
  139. package/dist/types/src/components/SpacePresence/index.d.ts.map +1 -0
  140. package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts +7 -0
  141. package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts.map +1 -0
  142. package/dist/types/src/components/SpaceRenamePopover/index.d.ts +2 -0
  143. package/dist/types/src/components/SpaceRenamePopover/index.d.ts.map +1 -0
  144. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  145. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +91 -1
  146. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  147. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  148. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +92 -2
  149. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  150. package/dist/types/src/components/ViewEditor.d.ts +3 -4
  151. package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
  152. package/dist/types/src/components/index.d.ts +9 -16
  153. package/dist/types/src/components/index.d.ts.map +1 -1
  154. package/dist/types/src/helpers/index.d.ts +2 -0
  155. package/dist/types/src/helpers/index.d.ts.map +1 -0
  156. package/dist/types/src/helpers/query.d.ts +8 -0
  157. package/dist/types/src/helpers/query.d.ts.map +1 -0
  158. package/dist/types/src/helpers/query.test.d.ts +2 -0
  159. package/dist/types/src/helpers/query.test.d.ts.map +1 -0
  160. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  161. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  162. package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -1
  163. package/dist/types/src/index.d.ts +1 -0
  164. package/dist/types/src/index.d.ts.map +1 -1
  165. package/dist/types/src/meta.d.ts.map +1 -1
  166. package/dist/types/src/translations.d.ts +91 -1
  167. package/dist/types/src/translations.d.ts.map +1 -1
  168. package/dist/types/src/types/types.d.ts +2 -2
  169. package/dist/types/src/types/types.d.ts.map +1 -1
  170. package/dist/types/src/util.d.ts +6 -4
  171. package/dist/types/src/util.d.ts.map +1 -1
  172. package/dist/types/tsconfig.tsbuildinfo +1 -1
  173. package/package.json +53 -51
  174. package/src/SpacePlugin.ts +49 -25
  175. package/src/capabilities/app-graph-builder.ts +86 -60
  176. package/src/capabilities/app-graph-serializer.ts +5 -5
  177. package/src/capabilities/capabilities.ts +2 -2
  178. package/src/capabilities/identity-created.ts +2 -2
  179. package/src/capabilities/intent-resolver.ts +46 -41
  180. package/src/capabilities/react-root.tsx +2 -1
  181. package/src/capabilities/react-surface.tsx +35 -40
  182. package/src/capabilities/spaces-ready.ts +7 -4
  183. package/src/components/AwaitingObject.tsx +11 -13
  184. package/src/components/{CollectionMain.tsx → CollectionArticle.tsx} +5 -4
  185. package/src/components/CollectionSection.tsx +6 -4
  186. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +6 -6
  187. package/src/components/CreateDialog/CreateObjectDialog.tsx +29 -22
  188. package/src/components/CreateDialog/CreateObjectPanel.tsx +2 -2
  189. package/src/components/CreateDialog/CreateSpaceDialog.tsx +25 -7
  190. package/src/components/{JoinDialog.tsx → JoinDialog/JoinDialog.tsx} +21 -5
  191. package/src/components/JoinDialog/index.ts +5 -0
  192. package/src/components/{MembersContainer.stories.tsx → MembersContainer/MembersContainer.stories.tsx} +1 -1
  193. package/src/components/{MembersContainer.tsx → MembersContainer/MembersContainer.tsx} +11 -9
  194. package/src/components/MembersContainer/index.ts +5 -0
  195. package/src/components/ObjectDetailsPanel/ObjectDetailsPanel.tsx +2 -3
  196. package/src/components/ObjectDetailsPanel/ObjectForm.tsx +9 -12
  197. package/src/components/{PopoverRenameObject.tsx → ObjectRenamePopover/ObjectRenamePopover.tsx} +5 -5
  198. package/src/components/ObjectRenamePopover/index.ts +5 -0
  199. package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +6 -6
  200. package/src/components/ObjectSettings/BaseObjectSettings.tsx +34 -40
  201. package/src/components/ObjectSettings/ForeignKeys.tsx +1 -1
  202. package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +1 -1
  203. package/src/components/RecordArticle.stories.tsx +115 -0
  204. package/src/components/RecordArticle.tsx +114 -0
  205. package/src/components/SchemaContainer.tsx +21 -24
  206. package/src/components/SpacePluginSettings.tsx +8 -2
  207. package/src/components/{SpacePresence.stories.tsx → SpacePresence/SpacePresence.stories.tsx} +1 -1
  208. package/src/components/{SpacePresence.tsx → SpacePresence/SpacePresence.tsx} +14 -9
  209. package/src/components/SpacePresence/index.ts +5 -0
  210. package/src/components/{PopoverRenameSpace.tsx → SpaceRenamePopover/SpaceRenamePopover.tsx} +6 -5
  211. package/src/components/SpaceRenamePopover/index.ts +5 -0
  212. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +33 -13
  213. package/src/components/SyncStatus/InlineSyncStatus.tsx +1 -1
  214. package/src/components/SyncStatus/SyncStatus.stories.tsx +3 -2
  215. package/src/components/SyncStatus/SyncStatus.tsx +45 -36
  216. package/src/components/ViewEditor.tsx +51 -17
  217. package/src/components/index.ts +6 -7
  218. package/src/helpers/index.ts +5 -0
  219. package/src/helpers/query.test.ts +24 -0
  220. package/src/helpers/query.ts +158 -0
  221. package/src/hooks/useActiveSpace.ts +2 -1
  222. package/src/hooks/useInputSurfaceLookup.tsx +7 -2
  223. package/src/hooks/useTypeOptions.ts +3 -3
  224. package/src/index.ts +1 -0
  225. package/src/meta.ts +5 -0
  226. package/src/translations.ts +22 -10
  227. package/src/types/types.ts +11 -10
  228. package/src/util.tsx +44 -36
  229. package/dist/lib/browser/CollectionMain-AX7KKXWP.mjs.map +0 -7
  230. package/dist/lib/browser/ObjectDetailsPanel-MQBHG666.mjs.map +0 -7
  231. package/dist/lib/browser/ObjectSettings-KNUZFCGS.mjs.map +0 -7
  232. package/dist/lib/browser/RecordMain-H4DVHICS.mjs +0 -116
  233. package/dist/lib/browser/RecordMain-H4DVHICS.mjs.map +0 -7
  234. package/dist/lib/browser/app-graph-builder-3R5GGT46.mjs.map +0 -7
  235. package/dist/lib/browser/app-graph-serializer-25Z5BG22.mjs.map +0 -7
  236. package/dist/lib/browser/chunk-522KZGQF.mjs.map +0 -7
  237. package/dist/lib/browser/chunk-7XOTWRZ3.mjs.map +0 -7
  238. package/dist/lib/browser/chunk-IRKDREHY.mjs +0 -11
  239. package/dist/lib/browser/chunk-IRKDREHY.mjs.map +0 -7
  240. package/dist/lib/browser/chunk-OV6D543A.mjs.map +0 -7
  241. package/dist/lib/browser/chunk-PTGRQQ6J.mjs.map +0 -7
  242. package/dist/lib/browser/chunk-RLI2IAHK.mjs.map +0 -7
  243. package/dist/lib/browser/chunk-WS2PJDES.mjs.map +0 -7
  244. package/dist/lib/browser/identity-created-PW2BA46S.mjs.map +0 -7
  245. package/dist/lib/browser/intent-resolver-ICGUSVH6.mjs.map +0 -7
  246. package/dist/lib/browser/react-root-H56QN474.mjs.map +0 -7
  247. package/dist/lib/browser/react-surface-VOE2ILKO.mjs.map +0 -7
  248. package/dist/lib/browser/spaces-ready-MFIVK6I6.mjs.map +0 -7
  249. package/dist/lib/node-esm/CollectionMain-EU57SRYK.mjs.map +0 -7
  250. package/dist/lib/node-esm/ObjectDetailsPanel-NABA2S56.mjs.map +0 -7
  251. package/dist/lib/node-esm/ObjectSettings-GXGTITF5.mjs.map +0 -7
  252. package/dist/lib/node-esm/RecordMain-MYFTAQ2U.mjs +0 -117
  253. package/dist/lib/node-esm/RecordMain-MYFTAQ2U.mjs.map +0 -7
  254. package/dist/lib/node-esm/app-graph-builder-VGRMD5TP.mjs.map +0 -7
  255. package/dist/lib/node-esm/app-graph-serializer-U4GHXWRG.mjs.map +0 -7
  256. package/dist/lib/node-esm/chunk-4F25JKVT.mjs.map +0 -7
  257. package/dist/lib/node-esm/chunk-DG5YEEPZ.mjs.map +0 -7
  258. package/dist/lib/node-esm/chunk-H5UPFRRH.mjs.map +0 -7
  259. package/dist/lib/node-esm/chunk-HAKW2RFD.mjs.map +0 -7
  260. package/dist/lib/node-esm/chunk-MWNATOXL.mjs +0 -13
  261. package/dist/lib/node-esm/chunk-MWNATOXL.mjs.map +0 -7
  262. package/dist/lib/node-esm/chunk-PAAWJ4RE.mjs.map +0 -7
  263. package/dist/lib/node-esm/chunk-TNUWML33.mjs.map +0 -7
  264. package/dist/lib/node-esm/identity-created-MWTLGQRU.mjs.map +0 -7
  265. package/dist/lib/node-esm/intent-resolver-KVB2A4YC.mjs.map +0 -7
  266. package/dist/lib/node-esm/react-root-56PGW5PH.mjs.map +0 -7
  267. package/dist/lib/node-esm/react-surface-NYEQ23A4.mjs.map +0 -7
  268. package/dist/lib/node-esm/spaces-ready-TC27M7MP.mjs.map +0 -7
  269. package/dist/types/src/components/CollectionMain.d.ts +0 -7
  270. package/dist/types/src/components/CollectionMain.d.ts.map +0 -1
  271. package/dist/types/src/components/JoinDialog.d.ts.map +0 -1
  272. package/dist/types/src/components/MembersContainer.d.ts.map +0 -1
  273. package/dist/types/src/components/PersistenceStatus.d.ts +0 -6
  274. package/dist/types/src/components/PersistenceStatus.d.ts.map +0 -1
  275. package/dist/types/src/components/PopoverRenameObject.d.ts +0 -7
  276. package/dist/types/src/components/PopoverRenameObject.d.ts.map +0 -1
  277. package/dist/types/src/components/PopoverRenameSpace.d.ts +0 -7
  278. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +0 -1
  279. package/dist/types/src/components/RecordMain.d.ts +0 -7
  280. package/dist/types/src/components/RecordMain.d.ts.map +0 -1
  281. package/dist/types/src/components/SpacePresence.d.ts.map +0 -1
  282. package/src/components/PersistenceStatus.tsx +0 -83
  283. package/src/components/RecordMain.tsx +0 -87
  284. /package/dist/lib/browser/{chunk-EIXZABXD.mjs.map → chunk-WJXU4GKV.mjs.map} +0 -0
  285. /package/dist/lib/browser/{schema-defs-7R7RKCAE.mjs.map → schema-defs-XCNOO2WT.mjs.map} +0 -0
  286. /package/dist/lib/browser/{settings-OBFJ67ZG.mjs.map → settings-WKLGKUHQ.mjs.map} +0 -0
  287. /package/dist/lib/browser/{state-LSPRFIRO.mjs.map → state-Q7YRE5KG.mjs.map} +0 -0
  288. /package/dist/lib/node-esm/{chunk-SVFKU7EW.mjs.map → chunk-H4JILUJK.mjs.map} +0 -0
  289. /package/dist/lib/node-esm/{schema-defs-RYG5DSUE.mjs.map → schema-defs-5TDB7T5J.mjs.map} +0 -0
  290. /package/dist/lib/node-esm/{settings-QGWWNMMZ.mjs.map → settings-RBB5633M.mjs.map} +0 -0
  291. /package/dist/lib/node-esm/{state-TCGOPLRO.mjs.map → state-362I5BMK.mjs.map} +0 -0
  292. /package/dist/types/src/components/{JoinDialog.d.ts → JoinDialog/JoinDialog.d.ts} +0 -0
  293. /package/dist/types/src/components/{MembersContainer.d.ts → MembersContainer/MembersContainer.d.ts} +0 -0
@@ -1,40 +1,43 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  useInputSurfaceLookup,
4
- usePath
5
- } from "./chunk-PAAWJ4RE.mjs";
4
+ usePath,
5
+ useTypeOptions
6
+ } from "./chunk-FAWIRIP4.mjs";
6
7
  import {
7
8
  SpaceCapabilities
8
- } from "./chunk-H5UPFRRH.mjs";
9
+ } from "./chunk-Z7BB6HC2.mjs";
9
10
  import {
10
11
  COMPOSER_SPACE_LOCK,
11
12
  getSpaceDisplayName
12
- } from "./chunk-TNUWML33.mjs";
13
+ } from "./chunk-HQMFTMJE.mjs";
13
14
  import {
14
15
  SpaceAction,
15
16
  SpaceForm
16
- } from "./chunk-4F25JKVT.mjs";
17
+ } from "./chunk-2PN7QNGV.mjs";
17
18
  import {
18
19
  meta
19
- } from "./chunk-MWNATOXL.mjs";
20
+ } from "./chunk-BDEFTL6K.mjs";
20
21
 
21
22
  // src/components/AwaitingObject.tsx
22
23
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
23
24
  import React, { useCallback, useEffect, useState } from "react";
24
- import { LayoutAction, createIntent, useIntentDispatcher, useLayout } from "@dxos/app-framework";
25
+ import { LayoutAction, createIntent } from "@dxos/app-framework";
26
+ import { useIntentDispatcher, useLayout } from "@dxos/app-framework/react";
27
+ import { Obj } from "@dxos/echo";
25
28
  import { useClient } from "@dxos/react-client";
26
- import { Filter, fullyQualifiedId, useQuery } from "@dxos/react-client/echo";
29
+ import { Filter, useQuery } from "@dxos/react-client/echo";
27
30
  import { Button, Icon, Toast, useTranslation } from "@dxos/react-ui";
28
- var WAIT_FOR_OBJECT_TIMEOUT = 18e4;
29
- var TOAST_TIMEOUT = 24e4;
31
+ var WAIT_FOR_OBJECT_TIMEOUT = 3 * 60 * 1e3;
32
+ var TOAST_TIMEOUT = 4 * 60 * 1e3;
30
33
  var AwaitingObject = ({ id }) => {
31
34
  var _effect = _useSignals();
32
35
  try {
36
+ const { t } = useTranslation(meta.id);
37
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
33
38
  const [open, setOpen] = useState(true);
34
39
  const [waiting, setWaiting] = useState(true);
35
40
  const [found, setFound] = useState(false);
36
- const { t } = useTranslation(meta.id);
37
- const { dispatchPromise: dispatch } = useIntentDispatcher();
38
41
  const layout = useLayout();
39
42
  const client = useClient();
40
43
  const objects = useQuery(client.spaces, Filter.everything());
@@ -42,15 +45,13 @@ var AwaitingObject = ({ id }) => {
42
45
  if (!id) {
43
46
  return;
44
47
  }
45
- const timeout = setTimeout(() => {
46
- setWaiting(false);
47
- }, WAIT_FOR_OBJECT_TIMEOUT);
48
- () => clearTimeout(timeout);
48
+ const timeout = setTimeout(() => setWaiting(false), WAIT_FOR_OBJECT_TIMEOUT);
49
+ return () => clearTimeout(timeout);
49
50
  }, [
50
51
  id
51
52
  ]);
52
53
  useEffect(() => {
53
- if (objects.findIndex((object) => fullyQualifiedId(object) === id) > -1) {
54
+ if (objects.findIndex((object) => Obj.getDXN(object).toString() === id) > -1) {
54
55
  setFound(true);
55
56
  if (layout.active.includes(id)) {
56
57
  setOpen(false);
@@ -122,16 +123,17 @@ var AwaitingObject = ({ id }) => {
122
123
  // src/components/CreateDialog/CreateObjectDialog.tsx
123
124
  import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
124
125
  import * as Effect from "effect/Effect";
125
- import * as Function from "effect/Function";
126
+ import * as Function2 from "effect/Function";
126
127
  import React3, { useCallback as useCallback3, useRef, useState as useState2 } from "react";
127
- import { Capabilities, LayoutAction as LayoutAction2, chain, createIntent as createIntent2, useCapabilities, useIntentDispatcher as useIntentDispatcher2, usePluginManager } from "@dxos/app-framework";
128
- import { Obj, Query, Type as Type2 } from "@dxos/echo";
128
+ import { Capabilities, LayoutAction as LayoutAction2, chain, createIntent as createIntent2 } from "@dxos/app-framework";
129
+ import { useCapabilities, useIntentDispatcher as useIntentDispatcher2, usePluginManager } from "@dxos/app-framework/react";
130
+ import { Obj as Obj2, Query, Type as Type2 } from "@dxos/echo";
129
131
  import { invariant } from "@dxos/invariant";
130
132
  import { useClient as useClient2 } from "@dxos/react-client";
131
133
  import { getSpace, isLiveObject, isSpace, useQuery as useQuery2, useSpaces } from "@dxos/react-client/echo";
132
- import { Button as Button2, Dialog, Icon as Icon3, useTranslation as useTranslation3 } from "@dxos/react-ui";
134
+ import { Dialog, IconButton, useTranslation as useTranslation3 } from "@dxos/react-ui";
133
135
  import { cardDialogContent, cardDialogHeader } from "@dxos/react-ui-stack";
134
- import { DataType, getTypenameFromQuery } from "@dxos/schema";
136
+ import { Collection, StoredSchema, getTypenameFromQuery } from "@dxos/schema";
135
137
  import { isNonNullable as isNonNullable2 } from "@dxos/util";
136
138
 
137
139
  // src/components/CreateDialog/CreateObjectPanel.tsx
@@ -301,18 +303,18 @@ var CREATE_OBJECT_DIALOG = `${meta.id}/CreateObjectDialog`;
301
303
  var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, views, initialFormValues, onCreateObject, shouldNavigate: _shouldNavigate }) => {
302
304
  var _effect = _useSignals3();
303
305
  try {
304
- const closeRef = useRef(null);
305
306
  const manager = usePluginManager();
306
307
  const { t } = useTranslation3(meta.id);
307
- const client = useClient2();
308
- const spaces = useSpaces();
309
308
  const { dispatch } = useIntentDispatcher2();
310
309
  const forms = useCapabilities(SpaceCapabilities.ObjectForm);
311
310
  const [target, setTarget] = useState2(initialTarget);
312
311
  const [typename, setTypename] = useState2(initialTypename);
312
+ const client = useClient2();
313
+ const spaces = useSpaces();
313
314
  const space = isSpace(target) ? target : getSpace(target);
314
- const queryCollections = useQuery2(space, Query.type(DataType.QueryCollection));
315
+ const queryCollections = useQuery2(space, Query.type(Collection.QueryCollection));
315
316
  const hiddenTypenames = queryCollections.map((collection) => getTypenameFromQuery(collection.query)).filter(isNonNullable2);
317
+ const closeRef = useRef(null);
316
318
  const resolve = useCallback3((typename2) => manager.context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename2)?.metadata ?? {}, [
317
319
  manager
318
320
  ]);
@@ -324,7 +326,7 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, vi
324
326
  const space2 = isSpace(target) ? target : getSpace(target);
325
327
  invariant(space2, "Missing space", {
326
328
  F: __dxlog_file,
327
- L: 84,
329
+ L: 77,
328
330
  S: this,
329
331
  A: [
330
332
  "space",
@@ -334,7 +336,7 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, vi
334
336
  const { object } = yield* dispatch(form.getIntent(data, {
335
337
  space: space2
336
338
  }));
337
- if (isLiveObject(object) && !Obj.instanceOf(DataType.StoredSchema, object)) {
339
+ if (isLiveObject(object) && !Obj2.instanceOf(StoredSchema, object)) {
338
340
  const hidden = form.hidden || hiddenTypenames.includes(Type2.getTypename(form.objectSchema));
339
341
  const addObjectIntent = createIntent2(SpaceAction.AddObject, {
340
342
  target,
@@ -343,7 +345,7 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, vi
343
345
  });
344
346
  const shouldNavigate = _shouldNavigate ?? (() => true);
345
347
  if (shouldNavigate(object)) {
346
- yield* dispatch(Function.pipe(addObjectIntent, chain(LayoutAction2.Open, {
348
+ yield* dispatch(Function2.pipe(addObjectIntent, chain(LayoutAction2.Open, {
347
349
  part: "main"
348
350
  })));
349
351
  } else {
@@ -373,15 +375,16 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, vi
373
375
  })
374
376
  })), /* @__PURE__ */ React3.createElement(Dialog.Close, {
375
377
  asChild: true
376
- }, /* @__PURE__ */ React3.createElement(Button2, {
378
+ }, /* @__PURE__ */ React3.createElement(IconButton, {
377
379
  ref: closeRef,
380
+ icon: "ph--x--regular",
381
+ size: 4,
382
+ label: "Close",
383
+ iconOnly: true,
378
384
  density: "fine",
379
385
  variant: "ghost",
380
386
  autoFocus: true
381
- }, /* @__PURE__ */ React3.createElement(Icon3, {
382
- icon: "ph--x--regular",
383
- size: 4
384
- })))), /* @__PURE__ */ React3.createElement(CreateObjectPanel, {
387
+ }))), /* @__PURE__ */ React3.createElement(CreateObjectPanel, {
385
388
  forms,
386
389
  spaces,
387
390
  target,
@@ -404,8 +407,9 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, vi
404
407
  import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
405
408
  import * as Effect2 from "effect/Effect";
406
409
  import React4, { useCallback as useCallback4, useRef as useRef2 } from "react";
407
- import { LayoutAction as LayoutAction3, createIntent as createIntent3, useIntentDispatcher as useIntentDispatcher3 } from "@dxos/app-framework";
408
- import { Button as Button3, Dialog as Dialog2, Icon as Icon4, useTranslation as useTranslation4 } from "@dxos/react-ui";
410
+ import { LayoutAction as LayoutAction3, createIntent as createIntent3 } from "@dxos/app-framework";
411
+ import { useIntentDispatcher as useIntentDispatcher3 } from "@dxos/app-framework/react";
412
+ import { Dialog as Dialog2, IconButton as IconButton2, useTranslation as useTranslation4 } from "@dxos/react-ui";
409
413
  import { Form as Form2 } from "@dxos/react-ui-form";
410
414
  import { cardDialogContent as cardDialogContent2, cardDialogHeader as cardDialogHeader2 } from "@dxos/react-ui-stack";
411
415
  var CREATE_SPACE_DIALOG = `${meta.id}/CreateSpaceDialog`;
@@ -447,15 +451,16 @@ var CreateSpaceDialog = () => {
447
451
  className: cardDialogHeader2
448
452
  }, /* @__PURE__ */ React4.createElement(Dialog2.Title, null, t("create space dialog title")), /* @__PURE__ */ React4.createElement(Dialog2.Close, {
449
453
  asChild: true
450
- }, /* @__PURE__ */ React4.createElement(Button3, {
454
+ }, /* @__PURE__ */ React4.createElement(IconButton2, {
451
455
  ref: closeRef,
456
+ icon: "ph--x--regular",
457
+ size: 4,
458
+ label: "Close",
459
+ iconOnly: true,
452
460
  density: "fine",
453
461
  variant: "ghost",
454
462
  autoFocus: true
455
- }, /* @__PURE__ */ React4.createElement(Icon4, {
456
- icon: "ph--x--regular",
457
- size: 4
458
- })))), /* @__PURE__ */ React4.createElement("div", {
463
+ }))), /* @__PURE__ */ React4.createElement("div", {
459
464
  role: "none",
460
465
  className: "contents"
461
466
  }, /* @__PURE__ */ React4.createElement(Form2, {
@@ -477,24 +482,26 @@ var CreateSpaceDialog = () => {
477
482
  import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
478
483
  import React5 from "react";
479
484
  import { useTranslation as useTranslation5 } from "@dxos/react-ui";
480
- var CollectionSection = ({ collection }) => {
485
+ var CollectionSection = ({ role, object }) => {
481
486
  var _effect = _useSignals5();
482
487
  try {
483
488
  const { t } = useTranslation5(meta.id);
484
489
  return /* @__PURE__ */ React5.createElement("div", {
490
+ role,
485
491
  className: "min-bs-[3.5rem] grid grid-rows-subgrid grid-cols-subgrid items-center"
486
492
  }, /* @__PURE__ */ React5.createElement("span", {
487
493
  className: "truncate"
488
- }, collection.name ?? t("unnamed collection label")));
494
+ }, object.name ?? t("unnamed collection label")));
489
495
  } finally {
490
496
  _effect.f();
491
497
  }
492
498
  };
493
499
 
494
- // src/components/JoinDialog.tsx
500
+ // src/components/JoinDialog/JoinDialog.tsx
495
501
  import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
496
502
  import React6, { useCallback as useCallback5 } from "react";
497
- import { LayoutAction as LayoutAction4, createIntent as createIntent4, useAppGraph, useIntentDispatcher as useIntentDispatcher4 } from "@dxos/app-framework";
503
+ import { LayoutAction as LayoutAction4, createIntent as createIntent4 } from "@dxos/app-framework";
504
+ import { useAppGraph, useIntentDispatcher as useIntentDispatcher4 } from "@dxos/app-framework/react";
498
505
  import { Trigger } from "@dxos/async";
499
506
  import { ObservabilityAction } from "@dxos/plugin-observability/types";
500
507
  import { useClient as useClient3 } from "@dxos/react-client";
@@ -607,22 +614,24 @@ var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
607
614
  }
608
615
  };
609
616
 
610
- // src/components/MembersContainer.tsx
617
+ // src/components/MembersContainer/MembersContainer.tsx
611
618
  import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
612
619
  import React7, { useCallback as useCallback6, useMemo, useState as useState3 } from "react";
613
620
  import { QR } from "react-qr-rounded";
614
- import { createIntent as createIntent5, useIntentDispatcher as useIntentDispatcher5 } from "@dxos/app-framework";
621
+ import { createIntent as createIntent5 } from "@dxos/app-framework";
622
+ import { useIntentDispatcher as useIntentDispatcher5 } from "@dxos/app-framework/react";
623
+ import { Obj as Obj3 } from "@dxos/echo";
615
624
  import { log } from "@dxos/log";
616
625
  import { useConfig } from "@dxos/react-client";
617
- import { fullyQualifiedId as fullyQualifiedId2, useSpaceInvitations } from "@dxos/react-client/echo";
626
+ import { useSpaceInvitations } from "@dxos/react-client/echo";
618
627
  import { Invitation, InvitationEncoder } from "@dxos/react-client/invitations";
619
- import { Button as Button4, Clipboard, Icon as Icon5, Input, useId, useTranslation as useTranslation7 } from "@dxos/react-ui";
628
+ import { Button as Button2, Clipboard, Icon as Icon3, Input, useId, useTranslation as useTranslation7 } from "@dxos/react-ui";
620
629
  import { ControlFrame, ControlFrameItem, ControlItemInput, ControlPage, ControlSection } from "@dxos/react-ui-form";
621
630
  import { StackItem } from "@dxos/react-ui-stack";
622
- import { DataType as DataType2 } from "@dxos/schema";
631
+ import { Collection as Collection2 } from "@dxos/schema";
623
632
  import { AuthCode, BifurcatedAction, Centered, Emoji, InvitationList, SpaceMemberList, Viewport } from "@dxos/shell/react";
624
633
  import { hexToEmoji } from "@dxos/util";
625
- var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/MembersContainer.tsx";
634
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/MembersContainer/MembersContainer.tsx";
626
635
  var activeActionKey = "dxos:react-shell/space-manager/active-action";
627
636
  var handleInvitationEvent = (invitation, subscription) => {
628
637
  const invitationCode = InvitationEncoder.encode(invitation);
@@ -632,7 +641,7 @@ var handleInvitationEvent = (invitation, subscription) => {
632
641
  authCode: invitation.authCode
633
642
  }), void 0, {
634
643
  F: __dxlog_file2,
635
- L: 39,
644
+ L: 41,
636
645
  S: void 0,
637
646
  C: (f, a) => f(...a)
638
647
  });
@@ -654,7 +663,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
654
663
  setInternalActiveAction(nextAction);
655
664
  localStorage.setItem(activeActionKey, nextAction);
656
665
  };
657
- const target = space.properties[DataType2.Collection.typename]?.target?.objects[0]?.target;
666
+ const target = space.properties[Collection2.Collection.typename]?.target?.objects[0]?.target;
658
667
  const locked = space.properties[COMPOSER_SPACE_LOCK];
659
668
  const handleChangeLocked = useCallback6(() => {
660
669
  space.properties[COMPOSER_SPACE_LOCK] = !locked;
@@ -678,7 +687,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
678
687
  type: Invitation.Type.INTERACTIVE,
679
688
  authMethod: Invitation.AuthMethod.SHARED_SECRET,
680
689
  multiUse: false,
681
- target: target && fullyQualifiedId2(target)
690
+ target: target && Obj3.getDXN(target).toString()
682
691
  }));
683
692
  if (invitation && config.values.runtime?.app?.env?.DX_ENVIRONMENT !== "production") {
684
693
  const subscription = invitation.subscribe((invitation2) => handleInvitationEvent(invitation2, subscription));
@@ -700,7 +709,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
700
709
  type: Invitation.Type.DELEGATED,
701
710
  authMethod: Invitation.AuthMethod.KNOWN_PUBLIC_KEY,
702
711
  multiUse: true,
703
- target: target && fullyQualifiedId2(target)
712
+ target: target && Obj3.getDXN(target).toString()
704
713
  }));
705
714
  if (invitation && config.values.runtime?.app?.env?.DX_ENVIRONMENT !== "production") {
706
715
  const subscription = invitation.subscribe((invitation2) => handleInvitationEvent(invitation2, subscription));
@@ -824,7 +833,7 @@ var InvitationQR = ({ id, url, onCancel }) => {
824
833
  className: "sr-only"
825
834
  }, t("qr label")), /* @__PURE__ */ React7.createElement(Clipboard.Button, {
826
835
  value: url ?? "never"
827
- })), /* @__PURE__ */ React7.createElement(Button4, {
836
+ })), /* @__PURE__ */ React7.createElement(Button2, {
828
837
  variant: "ghost",
829
838
  onClick: onCancel
830
839
  }, t("cancel label")));
@@ -848,7 +857,7 @@ var InvitationAuthCode = ({ id, code, onCancel }) => {
848
857
  code,
849
858
  large: true,
850
859
  classNames: "mli-auto mlb-2 text-center grow"
851
- }), /* @__PURE__ */ React7.createElement(Button4, {
860
+ }), /* @__PURE__ */ React7.createElement(Button2, {
852
861
  variant: "ghost",
853
862
  onClick: onCancel
854
863
  }, t("cancel label")));
@@ -859,11 +868,11 @@ var InvitationAuthCode = ({ id, code, onCancel }) => {
859
868
  var InvitationComplete = ({ statusValue }) => {
860
869
  var _effect = _useSignals7();
861
870
  try {
862
- return statusValue > 0 ? /* @__PURE__ */ React7.createElement(Icon5, {
871
+ return statusValue > 0 ? /* @__PURE__ */ React7.createElement(Icon3, {
863
872
  icon: "ph--check--regular",
864
873
  size: 6,
865
874
  classNames: "m-1.5"
866
- }) : /* @__PURE__ */ React7.createElement(Icon5, {
875
+ }) : /* @__PURE__ */ React7.createElement(Icon3, {
867
876
  icon: "ph--x--regular",
868
877
  size: 6,
869
878
  classNames: "m-1.5"
@@ -878,7 +887,7 @@ import { useSignals as _useSignals8 } from "@preact-signals/safe-react/tracking"
878
887
  import React8 from "react";
879
888
  import { getSpace as getSpace2 } from "@dxos/client/echo";
880
889
  import { useClient as useClient4 } from "@dxos/react-client";
881
- import { DropdownMenu, Icon as Icon6, toLocalizedString as toLocalizedString2, useTranslation as useTranslation8 } from "@dxos/react-ui";
890
+ import { DropdownMenu, Icon as Icon4, toLocalizedString as toLocalizedString2, useTranslation as useTranslation8 } from "@dxos/react-ui";
882
891
  var MenuFooter = ({ object }) => {
883
892
  var _effect = _useSignals8();
884
893
  try {
@@ -894,7 +903,7 @@ var MenuFooter = ({ object }) => {
894
903
  className: "uppercase text-[.75em] tracking-wide font-medium mbs-px self-start"
895
904
  }, t("location label")), /* @__PURE__ */ React8.createElement("dd", {
896
905
  className: "line-clamp-3"
897
- }, /* @__PURE__ */ React8.createElement(Icon6, {
906
+ }, /* @__PURE__ */ React8.createElement(Icon4, {
898
907
  icon: "ph--planet--regular",
899
908
  classNames: "inline-block mie-1"
900
909
  }), toLocalizedString2(spaceName, t)))) : null;
@@ -903,90 +912,26 @@ var MenuFooter = ({ object }) => {
903
912
  }
904
913
  };
905
914
 
906
- // src/components/PersistenceStatus.tsx
915
+ // src/components/ObjectRenamePopover/ObjectRenamePopover.tsx
907
916
  import { useSignals as _useSignals9 } from "@preact-signals/safe-react/tracking";
908
- import React9, { useEffect as useEffect2, useState as useState4 } from "react";
909
- import { debounce } from "@dxos/async";
910
- import { Icon as Icon7, Tooltip, useTranslation as useTranslation9 } from "@dxos/react-ui";
911
- import { mx, staticPlaceholderText, warningText } from "@dxos/react-ui-theme";
912
- var PersistenceStatus = ({ db }) => {
917
+ import React9, { useCallback as useCallback7, useRef as useRef3, useState as useState4 } from "react";
918
+ import { LayoutAction as LayoutAction5, createIntent as createIntent6 } from "@dxos/app-framework";
919
+ import { useIntentDispatcher as useIntentDispatcher6 } from "@dxos/app-framework/react";
920
+ import { Obj as Obj4 } from "@dxos/echo";
921
+ import { log as log2 } from "@dxos/log";
922
+ import { Button as Button3, Input as Input2, useTranslation as useTranslation9 } from "@dxos/react-ui";
923
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/ObjectRenamePopover/ObjectRenamePopover.tsx";
924
+ var OBJECT_RENAME_POPOVER = `${meta.id}/ObjectRenamePopover`;
925
+ var ObjectRenamePopover = ({ object }) => {
913
926
  var _effect = _useSignals9();
914
927
  try {
915
928
  const { t } = useTranslation9(meta.id);
916
- const [displayMessage, setDisplayMessage] = useState4(false);
917
- const [status, naturalSetStatus] = useState4(0);
918
- const [prevStatus, setPrevStatus] = useState4(0);
919
- const _setStatus = debounce(naturalSetStatus, 500);
920
- useEffect2(() => {
921
- setPrevStatus(status);
922
- if (prevStatus !== status && status === 0) {
923
- setDisplayMessage(true);
924
- const timeout = setTimeout(() => setDisplayMessage(false), 5e3);
925
- return () => clearTimeout(timeout);
926
- }
927
- }, [
928
- status
929
- ]);
930
- switch (status) {
931
- case 2:
932
- return /* @__PURE__ */ React9.createElement("div", {
933
- className: "flex items-center"
934
- }, /* @__PURE__ */ React9.createElement(Icon7, {
935
- icon: "ph--warning--regular",
936
- size: 4,
937
- classNames: "me-1"
938
- }), /* @__PURE__ */ React9.createElement("span", {
939
- className: mx("text-sm", warningText)
940
- }, t("persistence error label")));
941
- case 1:
942
- return /* @__PURE__ */ React9.createElement("div", {
943
- className: "flex items-center"
944
- }, /* @__PURE__ */ React9.createElement(Icon7, {
945
- icon: "ph--arrows-counter-clockwise--regular",
946
- size: 4,
947
- classNames: "me-1"
948
- }), /* @__PURE__ */ React9.createElement("span", {
949
- className: mx("text-sm", staticPlaceholderText)
950
- }, t("persistence pending label")));
951
- case 0:
952
- default:
953
- return /* @__PURE__ */ React9.createElement(Tooltip.Trigger, {
954
- delayDuration: 400,
955
- role: "status",
956
- content: t("persisted locally message"),
957
- className: "flex items-center"
958
- }, /* @__PURE__ */ React9.createElement(Icon7, {
959
- icon: "ph--check-circle--regular",
960
- size: 4,
961
- classNames: "me-1"
962
- }), displayMessage && /* @__PURE__ */ React9.createElement("span", {
963
- className: mx("text-sm", staticPlaceholderText)
964
- }, t("persisted locally label")));
965
- }
966
- } finally {
967
- _effect.f();
968
- }
969
- };
970
-
971
- // src/components/PopoverRenameObject.tsx
972
- import { useSignals as _useSignals10 } from "@preact-signals/safe-react/tracking";
973
- import React10, { useCallback as useCallback7, useRef as useRef3, useState as useState5 } from "react";
974
- import { LayoutAction as LayoutAction5, createIntent as createIntent6, useIntentDispatcher as useIntentDispatcher6 } from "@dxos/app-framework";
975
- import { Obj as Obj2 } from "@dxos/echo";
976
- import { log as log2 } from "@dxos/log";
977
- import { Button as Button5, Input as Input2, useTranslation as useTranslation10 } from "@dxos/react-ui";
978
- var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx";
979
- var POPOVER_RENAME_OBJECT = `${meta.id}/PopoverRenameObject`;
980
- var PopoverRenameObject = ({ object }) => {
981
- var _effect = _useSignals10();
982
- try {
983
- const { t } = useTranslation10(meta.id);
984
929
  const doneButton = useRef3(null);
985
- const [name, setName] = useState5(Obj2.getLabel(object));
930
+ const [name, setName] = useState4(Obj4.getLabel(object));
986
931
  const { dispatchPromise: dispatch } = useIntentDispatcher6();
987
932
  const handleDone = useCallback7(() => {
988
933
  try {
989
- name && Obj2.setLabel(object, name);
934
+ name && Obj4.setLabel(object, name);
990
935
  } catch (err) {
991
936
  log2.error("Failed to rename object", {
992
937
  err
@@ -1009,21 +954,21 @@ var PopoverRenameObject = ({ object }) => {
1009
954
  object,
1010
955
  name
1011
956
  ]);
1012
- return /* @__PURE__ */ React10.createElement("div", {
957
+ return /* @__PURE__ */ React9.createElement("div", {
1013
958
  role: "none",
1014
959
  className: "p-2 flex gap-2"
1015
- }, /* @__PURE__ */ React10.createElement("div", {
960
+ }, /* @__PURE__ */ React9.createElement("div", {
1016
961
  role: "none",
1017
962
  className: "flex-1"
1018
- }, /* @__PURE__ */ React10.createElement(Input2.Root, null, /* @__PURE__ */ React10.createElement(Input2.Label, {
963
+ }, /* @__PURE__ */ React9.createElement(Input2.Root, null, /* @__PURE__ */ React9.createElement(Input2.Label, {
1019
964
  srOnly: true
1020
- }, t("object name label")), /* @__PURE__ */ React10.createElement(Input2.TextInput, {
965
+ }, t("object name label")), /* @__PURE__ */ React9.createElement(Input2.TextInput, {
1021
966
  placeholder: t("object placeholder"),
1022
967
  value: name,
1023
968
  "data-testid": "spacePlugin.renameObject.input",
1024
- onChange: ({ target: { value } }) => setName(value),
969
+ onChange: ({ target: { value: value2 } }) => setName(value2),
1025
970
  onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
1026
- }))), /* @__PURE__ */ React10.createElement(Button5, {
971
+ }))), /* @__PURE__ */ React9.createElement(Button3, {
1027
972
  ref: doneButton,
1028
973
  classNames: "self-stretch",
1029
974
  onClick: handleDone
@@ -1035,18 +980,19 @@ var PopoverRenameObject = ({ object }) => {
1035
980
  }
1036
981
  };
1037
982
 
1038
- // src/components/PopoverRenameSpace.tsx
1039
- import { useSignals as _useSignals11 } from "@preact-signals/safe-react/tracking";
1040
- import React11, { useCallback as useCallback8, useRef as useRef4, useState as useState6 } from "react";
1041
- import { LayoutAction as LayoutAction6, createIntent as createIntent7, useIntentDispatcher as useIntentDispatcher7 } from "@dxos/app-framework";
1042
- import { Button as Button6, Input as Input3, Popover, useTranslation as useTranslation11 } from "@dxos/react-ui";
1043
- var POPOVER_RENAME_SPACE = `${meta.id}/PopoverRenameSpace`;
1044
- var PopoverRenameSpace = ({ space }) => {
1045
- var _effect = _useSignals11();
983
+ // src/components/SpaceRenamePopover/SpaceRenamePopover.tsx
984
+ import { useSignals as _useSignals10 } from "@preact-signals/safe-react/tracking";
985
+ import React10, { useCallback as useCallback8, useRef as useRef4, useState as useState5 } from "react";
986
+ import { LayoutAction as LayoutAction6, createIntent as createIntent7 } from "@dxos/app-framework";
987
+ import { useIntentDispatcher as useIntentDispatcher7 } from "@dxos/app-framework/react";
988
+ import { Button as Button4, Input as Input3, Popover, useTranslation as useTranslation10 } from "@dxos/react-ui";
989
+ var SPACE_RENAME_POPOVER = `${meta.id}/SpaceRenamePopover`;
990
+ var SpaceRenamePopover = ({ space }) => {
991
+ var _effect = _useSignals10();
1046
992
  try {
1047
- const { t } = useTranslation11(meta.id);
993
+ const { t } = useTranslation10(meta.id);
1048
994
  const doneButton = useRef4(null);
1049
- const [name, setName] = useState6(space.properties.name ?? "");
995
+ const [name, setName] = useState5(space.properties.name ?? "");
1050
996
  const { dispatchPromise: dispatch } = useIntentDispatcher7();
1051
997
  const handleDone = useCallback8(() => {
1052
998
  space.properties.name = name;
@@ -1062,24 +1008,24 @@ var PopoverRenameSpace = ({ space }) => {
1062
1008
  space,
1063
1009
  name
1064
1010
  ]);
1065
- return /* @__PURE__ */ React11.createElement("div", {
1011
+ return /* @__PURE__ */ React10.createElement("div", {
1066
1012
  role: "none",
1067
1013
  className: "p-2 flex gap-2"
1068
- }, /* @__PURE__ */ React11.createElement("div", {
1014
+ }, /* @__PURE__ */ React10.createElement("div", {
1069
1015
  role: "none",
1070
1016
  className: "flex-1"
1071
- }, /* @__PURE__ */ React11.createElement(Input3.Root, null, /* @__PURE__ */ React11.createElement(Input3.Label, {
1017
+ }, /* @__PURE__ */ React10.createElement(Input3.Root, null, /* @__PURE__ */ React10.createElement(Input3.Label, {
1072
1018
  srOnly: true
1073
- }, t("space name label")), /* @__PURE__ */ React11.createElement(Input3.TextInput, {
1019
+ }, t("space name label")), /* @__PURE__ */ React10.createElement(Input3.TextInput, {
1074
1020
  defaultValue: space.properties.name ?? "",
1075
1021
  placeholder: t("unnamed space label"),
1076
- onChange: ({ target: { value } }) => setName(value),
1022
+ onChange: ({ target: { value: value2 } }) => setName(value2),
1077
1023
  // TODO(wittjosiah): Ideally this should access the popover context to close the popover.
1078
1024
  // Currently this is not possible because Radix does not expose the popover context.
1079
1025
  onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
1080
- }))), /* @__PURE__ */ React11.createElement(Popover.Close, {
1026
+ }))), /* @__PURE__ */ React10.createElement(Popover.Close, {
1081
1027
  asChild: true
1082
- }, /* @__PURE__ */ React11.createElement(Button6, {
1028
+ }, /* @__PURE__ */ React10.createElement(Button4, {
1083
1029
  ref: doneButton,
1084
1030
  classNames: "self-stretch",
1085
1031
  onClick: handleDone
@@ -1092,57 +1038,59 @@ var PopoverRenameSpace = ({ space }) => {
1092
1038
  };
1093
1039
 
1094
1040
  // src/components/SchemaContainer.tsx
1095
- import { useSignals as _useSignals12 } from "@preact-signals/safe-react/tracking";
1096
- import React12, { useEffect as useEffect3, useState as useState7 } from "react";
1097
- import { useTranslation as useTranslation12 } from "@dxos/react-ui";
1041
+ import { useSignals as _useSignals11 } from "@preact-signals/safe-react/tracking";
1042
+ import React11, { useEffect as useEffect2, useState as useState6 } from "react";
1043
+ import { useTranslation as useTranslation11 } from "@dxos/react-ui";
1098
1044
  import { ControlPage as ControlPage2, ControlSection as ControlSection2, controlItemClasses } from "@dxos/react-ui-form";
1099
1045
  import { StackItem as StackItem2 } from "@dxos/react-ui-stack";
1100
- var useQuerySpaceSchemas = (space) => {
1101
- const [schemas, setSchemas] = useState7([]);
1102
- useEffect3(() => {
1103
- const query = space.db.schemaRegistry.query();
1104
- const initialResults = query.runSync();
1105
- setSchemas(initialResults);
1106
- const unsubscribe = query.subscribe(() => setSchemas(query.results));
1107
- return () => unsubscribe();
1108
- }, [
1109
- space
1110
- ]);
1111
- return schemas;
1112
- };
1113
1046
  var SchemaContainer = ({ space }) => {
1114
- var _effect = _useSignals12();
1047
+ var _effect = _useSignals11();
1115
1048
  try {
1116
- const { t } = useTranslation12(meta.id);
1049
+ const { t } = useTranslation11(meta.id);
1117
1050
  const schemas = useQuerySpaceSchemas(space);
1118
- return /* @__PURE__ */ React12.createElement(StackItem2.Content, {
1051
+ return /* @__PURE__ */ React11.createElement(StackItem2.Content, {
1119
1052
  scrollable: true
1120
- }, /* @__PURE__ */ React12.createElement(ControlPage2, null, /* @__PURE__ */ React12.createElement(ControlSection2, {
1053
+ }, /* @__PURE__ */ React11.createElement(ControlPage2, null, /* @__PURE__ */ React11.createElement(ControlSection2, {
1121
1054
  title: t("schema verbose label"),
1122
1055
  description: t("schema description")
1123
- }, /* @__PURE__ */ React12.createElement("div", {
1056
+ }, /* @__PURE__ */ React11.createElement("div", {
1124
1057
  role: "none",
1125
1058
  className: controlItemClasses
1126
- }, schemas.length === 0 && /* @__PURE__ */ React12.createElement("div", {
1059
+ }, schemas.length === 0 && /* @__PURE__ */ React11.createElement("div", {
1127
1060
  className: "text-center plb-4"
1128
- }, t("no schemas found message")), schemas.map((schema) => /* @__PURE__ */ React12.createElement("div", {
1061
+ }, t("no schemas found message")), schemas.map((schema) => /* @__PURE__ */ React11.createElement("div", {
1062
+ role: "none",
1129
1063
  key: schema.id
1130
- }, /* @__PURE__ */ React12.createElement("div", null, schema.typename)))))));
1064
+ }, schema.typename))))));
1131
1065
  } finally {
1132
1066
  _effect.f();
1133
1067
  }
1134
1068
  };
1069
+ var useQuerySpaceSchemas = (space) => {
1070
+ const [schemas, setSchemas] = useState6([]);
1071
+ useEffect2(() => {
1072
+ const query = space.db.schemaRegistry.query();
1073
+ const initialResults = query.runSync();
1074
+ setSchemas(initialResults);
1075
+ const unsubscribe = query.subscribe(() => setSchemas(query.results));
1076
+ return () => unsubscribe();
1077
+ }, [
1078
+ space
1079
+ ]);
1080
+ return schemas;
1081
+ };
1135
1082
 
1136
- // src/components/SpacePresence.tsx
1137
- import { useSignals as _useSignals13 } from "@preact-signals/safe-react/tracking";
1083
+ // src/components/SpacePresence/SpacePresence.tsx
1084
+ import { useSignals as _useSignals12 } from "@preact-signals/safe-react/tracking";
1138
1085
  import * as Option2 from "effect/Option";
1139
- import React13, { forwardRef, useCallback as useCallback9, useEffect as useEffect4, useState as useState8 } from "react";
1140
- import { useAppGraph as useAppGraph2, useCapability } from "@dxos/app-framework";
1086
+ import React12, { forwardRef, useCallback as useCallback9, useEffect as useEffect3, useState as useState7 } from "react";
1087
+ import { useAppGraph as useAppGraph2, useCapability } from "@dxos/app-framework/react";
1141
1088
  import { generateName } from "@dxos/display-name";
1089
+ import { Obj as Obj5 } from "@dxos/echo";
1142
1090
  import { PublicKey, useClient as useClient5 } from "@dxos/react-client";
1143
- import { fullyQualifiedId as fullyQualifiedId3, getSpace as getSpace3, useMembers } from "@dxos/react-client/echo";
1091
+ import { getSpace as getSpace3, useMembers } from "@dxos/react-client/echo";
1144
1092
  import { useIdentity } from "@dxos/react-client/halo";
1145
- import { Avatar, List, ListItem, Popover as Popover2, Tooltip as Tooltip2, useDefaultValue as useDefaultValue2, useTranslation as useTranslation13 } from "@dxos/react-ui";
1093
+ import { Avatar, List, ListItem, Popover as Popover2, Tooltip, useDefaultValue as useDefaultValue2, useTranslation as useTranslation12 } from "@dxos/react-ui";
1146
1094
  import { AttentionGlyph, useAttended, useAttention } from "@dxos/react-ui-attention";
1147
1095
  import { ComplexMap, keyToFallback } from "@dxos/util";
1148
1096
  var REFRESH_INTERVAL = 5e3;
@@ -1150,15 +1098,15 @@ var ACTIVITY_DURATION = 3e4;
1150
1098
  var noViewers = new ComplexMap(PublicKey.hash);
1151
1099
  var getName = (identity) => identity.profile?.displayName ?? generateName(identity.identityKey.toHex());
1152
1100
  var SpacePresence = ({ object, spaceKey }) => {
1153
- var _effect = _useSignals13();
1101
+ var _effect = _useSignals12();
1154
1102
  try {
1155
1103
  const spaceState = useCapability(SpaceCapabilities.MutableState);
1156
1104
  const client = useClient5();
1157
1105
  const identity = useIdentity();
1158
1106
  const space = spaceKey ? client.spaces.get(spaceKey) : getSpace3(object);
1159
1107
  const spaceMembers = useMembers(space?.key);
1160
- const [_moment, setMoment] = useState8(Date.now());
1161
- useEffect4(() => {
1108
+ const [_moment, setMoment] = useState7(Date.now());
1109
+ useEffect3(() => {
1162
1110
  const interval = setInterval(() => setMoment(Date.now()), REFRESH_INTERVAL);
1163
1111
  return () => clearInterval(interval);
1164
1112
  }, []);
@@ -1169,7 +1117,7 @@ var SpacePresence = ({ object, spaceKey }) => {
1169
1117
  if (!identity || !spaceState || !space) {
1170
1118
  return null;
1171
1119
  }
1172
- const currentObjectViewers = spaceState.viewersByObject[fullyQualifiedId3(object)] ?? noViewers;
1120
+ const currentObjectViewers = spaceState.viewersByObject[Obj5.getDXN(object).toString()] ?? noViewers;
1173
1121
  const membersForObject = spaceMembers.filter((member) => memberOnline(member) && memberIsNotSelf(member)).filter((member) => currentObjectViewers.has(member.identity.identityKey)).map((member) => {
1174
1122
  const objectView = currentObjectViewers.get(member.identity.identityKey);
1175
1123
  const lastSeen = objectView?.lastSeen ?? -Infinity;
@@ -1180,7 +1128,7 @@ var SpacePresence = ({ object, spaceKey }) => {
1180
1128
  lastSeen
1181
1129
  };
1182
1130
  }).toSorted((a, b) => a.lastSeen - b.lastSeen);
1183
- return /* @__PURE__ */ React13.createElement(FullPresence, {
1131
+ return /* @__PURE__ */ React12.createElement(FullPresence, {
1184
1132
  members: membersForObject
1185
1133
  });
1186
1134
  } finally {
@@ -1188,46 +1136,46 @@ var SpacePresence = ({ object, spaceKey }) => {
1188
1136
  }
1189
1137
  };
1190
1138
  var FullPresence = (props) => {
1191
- var _effect = _useSignals13();
1139
+ var _effect = _useSignals12();
1192
1140
  try {
1193
1141
  const { size = 9, onMemberClick } = props;
1194
1142
  const members = useDefaultValue2(props.members, () => []);
1195
1143
  if (members.length === 0) {
1196
1144
  return null;
1197
1145
  }
1198
- return /* @__PURE__ */ React13.createElement("div", {
1146
+ return /* @__PURE__ */ React12.createElement("div", {
1199
1147
  className: "dx-avatar-group",
1200
1148
  "data-testid": "spacePlugin.presence"
1201
- }, members.slice(0, 3).map((member, i) => /* @__PURE__ */ React13.createElement(Tooltip2.Trigger, {
1149
+ }, members.slice(0, 3).map((member, i) => /* @__PURE__ */ React12.createElement(Tooltip.Trigger, {
1202
1150
  key: member.identity.identityKey.toHex(),
1203
1151
  side: "bottom",
1204
1152
  content: getName(member.identity),
1205
1153
  className: "grid focus:outline-none"
1206
- }, /* @__PURE__ */ React13.createElement(PresenceAvatar, {
1154
+ }, /* @__PURE__ */ React12.createElement(PresenceAvatar, {
1207
1155
  identity: member.identity,
1208
1156
  match: member.currentlyAttended,
1209
1157
  index: members.length - i,
1210
1158
  onClick: () => onMemberClick?.(member),
1211
1159
  size
1212
- }))), members.length > 3 && /* @__PURE__ */ React13.createElement(Popover2.Root, null, /* @__PURE__ */ React13.createElement(Popover2.Trigger, {
1160
+ }))), members.length > 3 && /* @__PURE__ */ React12.createElement(Popover2.Root, null, /* @__PURE__ */ React12.createElement(Popover2.Trigger, {
1213
1161
  className: "grid focus:outline-none"
1214
- }, /* @__PURE__ */ React13.createElement(Avatar.Root, null, /* @__PURE__ */ React13.createElement(Avatar.Content, {
1162
+ }, /* @__PURE__ */ React12.createElement(Avatar.Root, null, /* @__PURE__ */ React12.createElement(Avatar.Content, {
1215
1163
  status: "inactive",
1216
1164
  style: {
1217
1165
  zIndex: members.length - 4
1218
1166
  },
1219
1167
  fallback: `+${members.length - 3}`,
1220
1168
  size
1221
- }))), /* @__PURE__ */ React13.createElement(Popover2.Portal, null, /* @__PURE__ */ React13.createElement(Popover2.Content, {
1169
+ }))), /* @__PURE__ */ React12.createElement(Popover2.Portal, null, /* @__PURE__ */ React12.createElement(Popover2.Content, {
1222
1170
  side: "bottom"
1223
- }, /* @__PURE__ */ React13.createElement(Popover2.Arrow, null), /* @__PURE__ */ React13.createElement(Popover2.Viewport, {
1171
+ }, /* @__PURE__ */ React12.createElement(Popover2.Arrow, null), /* @__PURE__ */ React12.createElement(Popover2.Viewport, {
1224
1172
  classNames: "max-bs-56"
1225
- }, /* @__PURE__ */ React13.createElement(List, null, members.map((member) => /* @__PURE__ */ React13.createElement(ListItem.Root, {
1173
+ }, /* @__PURE__ */ React12.createElement(List, null, members.map((member) => /* @__PURE__ */ React12.createElement(ListItem.Root, {
1226
1174
  key: member.identity.identityKey.toHex(),
1227
1175
  classNames: "flex gap-2 items-center cursor-pointer mbe-2",
1228
1176
  onClick: () => onMemberClick?.(member),
1229
1177
  "data-testid": "identity-list-item"
1230
- }, /* @__PURE__ */ React13.createElement(PresenceAvatar, {
1178
+ }, /* @__PURE__ */ React12.createElement(PresenceAvatar, {
1231
1179
  identity: member.identity,
1232
1180
  size,
1233
1181
  showName: true,
@@ -1237,12 +1185,12 @@ var FullPresence = (props) => {
1237
1185
  _effect.f();
1238
1186
  }
1239
1187
  };
1240
- var PresenceAvatar = /* @__PURE__ */ forwardRef(({ identity, showName, match, index, onClick, size }, forwardedRef) => {
1241
- var _effect = _useSignals13();
1188
+ var PresenceAvatar = /* @__PURE__ */ forwardRef(({ identity, showName, match: match2, index, onClick, size }, forwardedRef) => {
1189
+ var _effect = _useSignals12();
1242
1190
  try {
1243
- const status = match ? "current" : "active";
1191
+ const status = match2 ? "current" : "active";
1244
1192
  const fallbackValue = keyToFallback(identity.identityKey);
1245
- return /* @__PURE__ */ React13.createElement(Avatar.Root, null, /* @__PURE__ */ React13.createElement(Avatar.Content, {
1193
+ return /* @__PURE__ */ React12.createElement(Avatar.Root, null, /* @__PURE__ */ React12.createElement(Avatar.Content, {
1246
1194
  status,
1247
1195
  hue: identity.profile?.data?.hue || fallbackValue.hue,
1248
1196
  "data-testid": "spacePlugin.presence.member",
@@ -1256,7 +1204,7 @@ var PresenceAvatar = /* @__PURE__ */ forwardRef(({ identity, showName, match, in
1256
1204
  onClick,
1257
1205
  fallback: identity.profile?.data?.emoji || fallbackValue.emoji,
1258
1206
  ref: forwardedRef
1259
- }), /* @__PURE__ */ React13.createElement(Avatar.Label, {
1207
+ }), /* @__PURE__ */ React12.createElement(Avatar.Label, {
1260
1208
  classNames: showName ? "text-sm truncate pli-2" : "sr-only"
1261
1209
  }, getName(identity)));
1262
1210
  } finally {
@@ -1264,7 +1212,7 @@ var PresenceAvatar = /* @__PURE__ */ forwardRef(({ identity, showName, match, in
1264
1212
  }
1265
1213
  });
1266
1214
  var SmallPresenceLive = ({ id, open, viewers }) => {
1267
- var _effect = _useSignals13();
1215
+ var _effect = _useSignals12();
1268
1216
  try {
1269
1217
  const { hasAttention, isAncestor, isRelated } = useAttention(id);
1270
1218
  const isAttended = hasAttention || isAncestor || isRelated;
@@ -1277,8 +1225,8 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
1277
1225
  const moment = Date.now();
1278
1226
  return Array.from(viewers2.values()).filter((viewer) => moment - viewer.lastSeen < ACTIVITY_DURATION);
1279
1227
  };
1280
- const [activeViewers, setActiveViewers] = useState8(viewers ? getActiveViewers(viewers) : []);
1281
- useEffect4(() => {
1228
+ const [activeViewers, setActiveViewers] = useState7(viewers ? getActiveViewers(viewers) : []);
1229
+ useEffect3(() => {
1282
1230
  if (viewers) {
1283
1231
  setActiveViewers(getActiveViewers(viewers));
1284
1232
  const interval = setInterval(() => {
@@ -1289,7 +1237,7 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
1289
1237
  }, [
1290
1238
  viewers
1291
1239
  ]);
1292
- return /* @__PURE__ */ React13.createElement(SmallPresence, {
1240
+ return /* @__PURE__ */ React12.createElement(SmallPresence, {
1293
1241
  count: activeViewers.length,
1294
1242
  attended: isAttended,
1295
1243
  containsAttended
@@ -1299,16 +1247,16 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
1299
1247
  }
1300
1248
  };
1301
1249
  var SmallPresence = ({ count = 0, attended, containsAttended }) => {
1302
- var _effect = _useSignals13();
1250
+ var _effect = _useSignals12();
1303
1251
  try {
1304
- const { t } = useTranslation13(meta.id);
1305
- return /* @__PURE__ */ React13.createElement(Tooltip2.Trigger, {
1252
+ const { t } = useTranslation12(meta.id);
1253
+ return /* @__PURE__ */ React12.createElement(Tooltip.Trigger, {
1306
1254
  asChild: true,
1307
1255
  content: t("presence label", {
1308
1256
  count
1309
1257
  }),
1310
1258
  side: "bottom"
1311
- }, /* @__PURE__ */ React13.createElement(AttentionGlyph, {
1259
+ }, /* @__PURE__ */ React12.createElement(AttentionGlyph, {
1312
1260
  attended,
1313
1261
  containsAttended,
1314
1262
  presence: count > 1 ? "many" : count === 1 ? "one" : "none",
@@ -1320,43 +1268,44 @@ var SmallPresence = ({ count = 0, attended, containsAttended }) => {
1320
1268
  };
1321
1269
 
1322
1270
  // src/components/SpacePluginSettings.tsx
1323
- import { useSignals as _useSignals14 } from "@preact-signals/safe-react/tracking";
1324
- import React14 from "react";
1325
- import { createIntent as createIntent8, useIntentDispatcher as useIntentDispatcher8 } from "@dxos/app-framework";
1271
+ import { useSignals as _useSignals13 } from "@preact-signals/safe-react/tracking";
1272
+ import React13 from "react";
1273
+ import { createIntent as createIntent8 } from "@dxos/app-framework";
1274
+ import { useIntentDispatcher as useIntentDispatcher8 } from "@dxos/app-framework/react";
1326
1275
  import { useClient as useClient6 } from "@dxos/react-client";
1327
1276
  import { useSpaces as useSpaces2 } from "@dxos/react-client/echo";
1328
- import { IconButton, Input as Input4, List as List2, ListItem as ListItem2, toLocalizedString as toLocalizedString3, useTranslation as useTranslation14 } from "@dxos/react-ui";
1277
+ import { IconButton as IconButton3, Input as Input4, List as List2, ListItem as ListItem2, toLocalizedString as toLocalizedString3, useTranslation as useTranslation13 } from "@dxos/react-ui";
1329
1278
  import { ControlGroup, ControlItemInput as ControlItemInput2, ControlPage as ControlPage3, ControlSection as ControlSection3, controlItemClasses as controlItemClasses2 } from "@dxos/react-ui-form";
1330
1279
  var SpacePluginSettings = ({ settings }) => {
1331
- var _effect = _useSignals14();
1280
+ var _effect = _useSignals13();
1332
1281
  try {
1333
- const { t } = useTranslation14(meta.id);
1282
+ const { t } = useTranslation13(meta.id);
1334
1283
  const client = useClient6();
1335
1284
  const spaces = useSpaces2({
1336
1285
  all: settings.showHidden
1337
1286
  });
1338
1287
  const { dispatchPromise: dispatch } = useIntentDispatcher8();
1339
- return /* @__PURE__ */ React14.createElement(ControlPage3, null, /* @__PURE__ */ React14.createElement(ControlSection3, {
1288
+ return /* @__PURE__ */ React13.createElement(ControlPage3, null, /* @__PURE__ */ React13.createElement(ControlSection3, {
1340
1289
  title: t("space settings label"),
1341
1290
  description: t("space settings description")
1342
- }, /* @__PURE__ */ React14.createElement(ControlGroup, null, /* @__PURE__ */ React14.createElement(ControlItemInput2, {
1291
+ }, /* @__PURE__ */ React13.createElement(ControlGroup, null, /* @__PURE__ */ React13.createElement(ControlItemInput2, {
1343
1292
  title: t("show hidden spaces label")
1344
- }, /* @__PURE__ */ React14.createElement(Input4.Switch, {
1293
+ }, /* @__PURE__ */ React13.createElement(Input4.Switch, {
1345
1294
  checked: settings.showHidden,
1346
1295
  onCheckedChange: (checked) => settings.showHidden = !!checked
1347
- }))), /* @__PURE__ */ React14.createElement(List2, {
1296
+ }))), /* @__PURE__ */ React13.createElement(List2, {
1348
1297
  classNames: [
1349
1298
  controlItemClasses2,
1350
1299
  "flex flex-col gap-trimSm"
1351
1300
  ]
1352
- }, spaces.map((space) => /* @__PURE__ */ React14.createElement(ListItem2.Root, {
1301
+ }, spaces.map((space) => /* @__PURE__ */ React13.createElement(ListItem2.Root, {
1353
1302
  key: space.id,
1354
1303
  classNames: "is-full items-center"
1355
- }, /* @__PURE__ */ React14.createElement(ListItem2.Heading, {
1304
+ }, /* @__PURE__ */ React13.createElement(ListItem2.Heading, {
1356
1305
  classNames: "grow truncate !min-bs-0"
1357
1306
  }, toLocalizedString3(getSpaceDisplayName(space, {
1358
1307
  personal: space === client.spaces.default
1359
- }), t)), /* @__PURE__ */ React14.createElement(IconButton, {
1308
+ }), t)), /* @__PURE__ */ React13.createElement(IconButton3, {
1360
1309
  icon: "ph--faders--regular",
1361
1310
  onClick: () => dispatch(createIntent8(SpaceAction.OpenSettings, {
1362
1311
  space
@@ -1369,39 +1318,40 @@ var SpacePluginSettings = ({ settings }) => {
1369
1318
  };
1370
1319
 
1371
1320
  // src/components/SpaceSettings/SpaceSettingsContainer.tsx
1372
- import { useSignals as _useSignals15 } from "@preact-signals/safe-react/tracking";
1373
- import * as Function2 from "effect/Function";
1321
+ import { useSignals as _useSignals14 } from "@preact-signals/safe-react/tracking";
1322
+ import * as Function3 from "effect/Function";
1374
1323
  import * as Schema from "effect/Schema";
1375
- import React15, { useCallback as useCallback10, useMemo as useMemo2, useState as useState9 } from "react";
1376
- import { LayoutAction as LayoutAction7, chain as chain2, createIntent as createIntent9, useIntentDispatcher as useIntentDispatcher9 } from "@dxos/app-framework";
1324
+ import React14, { useCallback as useCallback10, useMemo as useMemo2, useState as useState8 } from "react";
1325
+ import { LayoutAction as LayoutAction7, chain as chain2, createIntent as createIntent9 } from "@dxos/app-framework";
1326
+ import { useIntentDispatcher as useIntentDispatcher9 } from "@dxos/app-framework/react";
1377
1327
  import { log as log3 } from "@dxos/log";
1378
1328
  import { EdgeReplicationSetting } from "@dxos/protocols/proto/dxos/echo/metadata";
1379
1329
  import { useClient as useClient7 } from "@dxos/react-client";
1380
1330
  import { SpaceState } from "@dxos/react-client/echo";
1381
- import { Button as Button7, Input as Input5, useMulticastObservable, useTranslation as useTranslation15 } from "@dxos/react-ui";
1331
+ import { Button as Button5, Input as Input5, useFileDownload, useMulticastObservable, useTranslation as useTranslation14 } from "@dxos/react-ui";
1382
1332
  import { ControlItem, ControlItemInput as ControlItemInput3, ControlPage as ControlPage4, ControlSection as ControlSection4, Form as Form3 } from "@dxos/react-ui-form";
1383
1333
  import { HuePicker, IconPicker } from "@dxos/react-ui-pickers";
1384
1334
  import { StackItem as StackItem3 } from "@dxos/react-ui-stack";
1385
1335
  var __dxlog_file4 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/SpaceSettings/SpaceSettingsContainer.tsx";
1386
1336
  var FormSchema = SpaceForm.pipe(Schema.extend(Schema.Struct({
1387
1337
  archived: Schema.Boolean.annotations({
1388
- title: "Archive space"
1338
+ title: "Archive Space"
1389
1339
  })
1390
1340
  })));
1391
1341
  var SpaceSettingsContainer = ({ space }) => {
1392
- var _effect = _useSignals15();
1342
+ var _effect = _useSignals14();
1393
1343
  try {
1394
- const { t } = useTranslation15(meta.id);
1344
+ const { t } = useTranslation14(meta.id);
1395
1345
  const { dispatchPromise: dispatch } = useIntentDispatcher9();
1396
1346
  const client = useClient7();
1397
1347
  const archived = useMulticastObservable(space.state) === SpaceState.SPACE_INACTIVE;
1398
- const [edgeReplication, setEdgeReplication] = useState9(space.internal.data.edgeReplication === EdgeReplicationSetting.ENABLED);
1348
+ const [edgeReplication, setEdgeReplication] = useState8(space.internal.data.edgeReplication === EdgeReplicationSetting.ENABLED);
1399
1349
  const toggleEdgeReplication = useCallback10(async (next) => {
1400
1350
  setEdgeReplication(next);
1401
1351
  await space?.internal.setEdgeReplicationPreference(next ? EdgeReplicationSetting.ENABLED : EdgeReplicationSetting.DISABLED).catch((err) => {
1402
1352
  log3.catch(err, void 0, {
1403
1353
  F: __dxlog_file4,
1404
- L: 52,
1354
+ L: 57,
1405
1355
  S: void 0,
1406
1356
  C: (f, a) => f(...a)
1407
1357
  });
@@ -1422,7 +1372,7 @@ var SpaceSettingsContainer = ({ space }) => {
1422
1372
  space.properties.hue = properties.hue;
1423
1373
  }
1424
1374
  if (properties.archived && !archived) {
1425
- void dispatch(Function2.pipe(createIntent9(SpaceAction.Close, {
1375
+ void dispatch(Function3.pipe(createIntent9(SpaceAction.Close, {
1426
1376
  space
1427
1377
  }), chain2(LayoutAction7.SwitchWorkspace, {
1428
1378
  part: "workspace",
@@ -1453,14 +1403,14 @@ var SpaceSettingsContainer = ({ space }) => {
1453
1403
  ]);
1454
1404
  const customElements = useMemo2(() => ({
1455
1405
  name: ({ type, label, getValue, onValueChange }) => {
1456
- const handleChange = useCallback10(({ target: { value } }) => onValueChange(type, value), [
1406
+ const handleChange = useCallback10(({ target: { value: value2 } }) => onValueChange(type, value2), [
1457
1407
  onValueChange,
1458
1408
  type
1459
1409
  ]);
1460
- return /* @__PURE__ */ React15.createElement(ControlItemInput3, {
1410
+ return /* @__PURE__ */ React14.createElement(ControlItemInput3, {
1461
1411
  title: label,
1462
1412
  description: t("display name description")
1463
- }, /* @__PURE__ */ React15.createElement(Input5.TextInput, {
1413
+ }, /* @__PURE__ */ React14.createElement(Input5.TextInput, {
1464
1414
  value: getValue(),
1465
1415
  onChange: handleChange,
1466
1416
  placeholder: t("display name input placeholder"),
@@ -1476,15 +1426,14 @@ var SpaceSettingsContainer = ({ space }) => {
1476
1426
  onValueChange,
1477
1427
  type
1478
1428
  ]);
1479
- return /* @__PURE__ */ React15.createElement(ControlItem, {
1429
+ return /* @__PURE__ */ React14.createElement(ControlItem, {
1480
1430
  title: label,
1481
1431
  description: t("icon description")
1482
- }, /* @__PURE__ */ React15.createElement(IconPicker, {
1432
+ }, /* @__PURE__ */ React14.createElement(IconPicker, {
1483
1433
  value: getValue(),
1484
1434
  onChange: handleChange,
1485
1435
  onReset: handleReset,
1486
- classNames: "justify-self-end",
1487
- iconSize: 5
1436
+ classNames: "justify-self-end"
1488
1437
  }));
1489
1438
  },
1490
1439
  hue: ({ type, label, getValue, onValueChange }) => {
@@ -1496,14 +1445,14 @@ var SpaceSettingsContainer = ({ space }) => {
1496
1445
  onValueChange,
1497
1446
  type
1498
1447
  ]);
1499
- return /* @__PURE__ */ React15.createElement(ControlItem, {
1448
+ return /* @__PURE__ */ React14.createElement(ControlItem, {
1500
1449
  title: label,
1501
1450
  description: t("hue description")
1502
- }, /* @__PURE__ */ React15.createElement(HuePicker, {
1451
+ }, /* @__PURE__ */ React14.createElement(HuePicker, {
1503
1452
  value: getValue(),
1504
1453
  onChange: handleChange,
1505
1454
  onReset: handleReset,
1506
- classNames: "[--hue-preview-size:1.25rem] justify-self-end"
1455
+ classNames: "justify-self-end"
1507
1456
  }));
1508
1457
  },
1509
1458
  edgeReplication: ({ type, label, getValue, onValueChange }) => {
@@ -1511,10 +1460,10 @@ var SpaceSettingsContainer = ({ space }) => {
1511
1460
  onValueChange,
1512
1461
  type
1513
1462
  ]);
1514
- return /* @__PURE__ */ React15.createElement(ControlItemInput3, {
1463
+ return /* @__PURE__ */ React14.createElement(ControlItemInput3, {
1515
1464
  title: label,
1516
1465
  description: t("edge replication description")
1517
- }, /* @__PURE__ */ React15.createElement(Input5.Switch, {
1466
+ }, /* @__PURE__ */ React14.createElement(Input5.Switch, {
1518
1467
  checked: getValue(),
1519
1468
  onCheckedChange: handleChange,
1520
1469
  classNames: "justify-self-end"
@@ -1526,11 +1475,12 @@ var SpaceSettingsContainer = ({ space }) => {
1526
1475
  type,
1527
1476
  getValue
1528
1477
  ]);
1529
- return /* @__PURE__ */ React15.createElement(ControlItemInput3, {
1478
+ return /* @__PURE__ */ React14.createElement(ControlItemInput3, {
1530
1479
  title: label,
1531
1480
  description: t("archive space description")
1532
- }, /* @__PURE__ */ React15.createElement(Button7, {
1481
+ }, /* @__PURE__ */ React14.createElement(Button5, {
1533
1482
  disabled: space === client.spaces.default,
1483
+ variant: getValue() ? "default" : "destructive",
1534
1484
  onClick: handleChange
1535
1485
  }, getValue() ? t("unarchive space label") : t("archive space label")));
1536
1486
  }
@@ -1538,16 +1488,26 @@ var SpaceSettingsContainer = ({ space }) => {
1538
1488
  t,
1539
1489
  space
1540
1490
  ]);
1541
- return /* @__PURE__ */ React15.createElement(StackItem3.Content, {
1491
+ const download = useFileDownload();
1492
+ const handleBackup = useCallback10(async () => {
1493
+ const archive = await space.internal.export();
1494
+ download(new Blob([
1495
+ archive.contents
1496
+ ]), archive.filename);
1497
+ }, [
1498
+ space,
1499
+ download
1500
+ ]);
1501
+ return /* @__PURE__ */ React14.createElement(StackItem3.Content, {
1542
1502
  scrollable: true
1543
- }, /* @__PURE__ */ React15.createElement(ControlPage4, null, /* @__PURE__ */ React15.createElement(ControlSection4, {
1503
+ }, /* @__PURE__ */ React14.createElement(ControlPage4, null, /* @__PURE__ */ React14.createElement(ControlSection4, {
1544
1504
  title: t("space properties settings verbose label", {
1545
1505
  ns: meta.id
1546
1506
  }),
1547
1507
  description: t("space properties settings description", {
1548
1508
  ns: meta.id
1549
1509
  })
1550
- }, /* @__PURE__ */ React15.createElement(Form3, {
1510
+ }, /* @__PURE__ */ React14.createElement(Form3, {
1551
1511
  schema: FormSchema,
1552
1512
  values,
1553
1513
  autoSave: true,
@@ -1555,27 +1515,36 @@ var SpaceSettingsContainer = ({ space }) => {
1555
1515
  Custom: customElements,
1556
1516
  outerSpacing: false,
1557
1517
  classNames: "container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]"
1558
- }))));
1518
+ })), /* @__PURE__ */ React14.createElement(ControlItemInput3, {
1519
+ title: t("backup space label", {
1520
+ ns: meta.id
1521
+ }),
1522
+ description: t("backup space description", {
1523
+ ns: meta.id
1524
+ })
1525
+ }, /* @__PURE__ */ React14.createElement(Button5, {
1526
+ onClick: handleBackup
1527
+ }, t("download backup")))));
1559
1528
  } finally {
1560
1529
  _effect.f();
1561
1530
  }
1562
1531
  };
1563
1532
 
1564
1533
  // src/components/SyncStatus/InlineSyncStatus.tsx
1565
- import { useSignals as _useSignals16 } from "@preact-signals/safe-react/tracking";
1534
+ import { useSignals as _useSignals15 } from "@preact-signals/safe-react/tracking";
1566
1535
  import * as Option3 from "effect/Option";
1567
- import React16, { useEffect as useEffect5, useState as useState10 } from "react";
1568
- import { useAppGraph as useAppGraph3 } from "@dxos/app-framework";
1536
+ import React15, { useEffect as useEffect4, useState as useState9 } from "react";
1537
+ import { useAppGraph as useAppGraph3 } from "@dxos/app-framework/react";
1569
1538
  import { EdgeStatus } from "@dxos/protocols/proto/dxos/client/services";
1570
1539
  import { EdgeReplicationSetting as EdgeReplicationSetting2 } from "@dxos/protocols/proto/dxos/echo/metadata";
1571
1540
  import { useClient as useClient8 } from "@dxos/react-client";
1572
1541
  import { useSpaceSyncState } from "@dxos/react-client/echo";
1573
- import { Tooltip as Tooltip3, useTranslation as useTranslation16 } from "@dxos/react-ui";
1542
+ import { Tooltip as Tooltip2, useTranslation as useTranslation15 } from "@dxos/react-ui";
1574
1543
  import { AttentionGlyph as AttentionGlyph2, useAttended as useAttended2, useAttention as useAttention2 } from "@dxos/react-ui-attention";
1575
1544
  var useEdgeStatus = () => {
1576
- const [status, setStatus] = useState10(EdgeStatus.ConnectionState.NOT_CONNECTED);
1545
+ const [status, setStatus] = useState9(EdgeStatus.ConnectionState.NOT_CONNECTED);
1577
1546
  const client = useClient8();
1578
- useEffect5(() => {
1547
+ useEffect4(() => {
1579
1548
  client.services.services.EdgeAgentService?.queryEdgeStatus().subscribe(({ status: status2 }) => {
1580
1549
  setStatus(status2.state);
1581
1550
  });
@@ -1585,9 +1554,9 @@ var useEdgeStatus = () => {
1585
1554
  return status;
1586
1555
  };
1587
1556
  var InlineSyncStatus = ({ space, open }) => {
1588
- var _effect = _useSignals16();
1557
+ var _effect = _useSignals15();
1589
1558
  try {
1590
- const { t } = useTranslation16(meta.id);
1559
+ const { t } = useTranslation15(meta.id);
1591
1560
  const id = space.id;
1592
1561
  const { hasAttention, isAncestor, isRelated } = useAttention2(id);
1593
1562
  const isAttended = hasAttention || isAncestor || isRelated;
@@ -1600,11 +1569,11 @@ var InlineSyncStatus = ({ space, open }) => {
1600
1569
  const edgeSyncEnabled = space.internal.data.edgeReplication === EdgeReplicationSetting2.ENABLED;
1601
1570
  const syncState = useSpaceSyncState(space);
1602
1571
  const syncing = connectedToEdge && edgeSyncEnabled && syncState && syncState.missingOnLocal > 0;
1603
- return /* @__PURE__ */ React16.createElement(Tooltip3.Trigger, {
1572
+ return /* @__PURE__ */ React15.createElement(Tooltip2.Trigger, {
1604
1573
  asChild: true,
1605
1574
  content: t("syncing label"),
1606
1575
  side: "bottom"
1607
- }, /* @__PURE__ */ React16.createElement(AttentionGlyph2, {
1576
+ }, /* @__PURE__ */ React15.createElement(AttentionGlyph2, {
1608
1577
  syncing,
1609
1578
  attended: isAttended,
1610
1579
  containsAttended,
@@ -1616,14 +1585,15 @@ var InlineSyncStatus = ({ space, open }) => {
1616
1585
  };
1617
1586
 
1618
1587
  // src/components/SyncStatus/SyncStatus.tsx
1619
- import { useSignals as _useSignals17 } from "@preact-signals/safe-react/tracking";
1620
- import React17, { useEffect as useEffect6, useState as useState11 } from "react";
1588
+ import { useSignals as _useSignals16 } from "@preact-signals/safe-react/tracking";
1589
+ import React16, { useEffect as useEffect5, useState as useState10 } from "react";
1621
1590
  import { StatusBar } from "@dxos/plugin-status-bar";
1622
1591
  import { EdgeStatus as EdgeStatus2 } from "@dxos/protocols/proto/dxos/client/services";
1623
1592
  import { useClient as useClient9 } from "@dxos/react-client";
1624
1593
  import { useStream } from "@dxos/react-client/devtools";
1625
1594
  import { getSyncSummary, useSyncState } from "@dxos/react-client/echo";
1626
- import { Icon as Icon8, Popover as Popover3, useTranslation as useTranslation17 } from "@dxos/react-ui";
1595
+ import { Icon as Icon5, Popover as Popover3, useTranslation as useTranslation16 } from "@dxos/react-ui";
1596
+ import { mx } from "@dxos/react-ui-theme";
1627
1597
  import { Unit } from "@dxos/util";
1628
1598
 
1629
1599
  // src/components/SyncStatus/save-tracker.ts
@@ -1720,17 +1690,13 @@ var getIcon = (status) => {
1720
1690
  // src/components/SyncStatus/SyncStatus.tsx
1721
1691
  var SYNC_STALLED_TIMEOUT = 5e3;
1722
1692
  var SyncStatus = () => {
1723
- var _effect = _useSignals17();
1693
+ var _effect = _useSignals16();
1724
1694
  try {
1725
1695
  const client = useClient9();
1726
1696
  const state = useSyncState();
1727
- const [saved, setSaved] = useState11(true);
1728
- useEffect6(() => {
1729
- return createClientSaveTracker(client, (state2) => {
1730
- setSaved(state2 === "saved");
1731
- });
1732
- }, []);
1733
- return /* @__PURE__ */ React17.createElement(SyncStatusIndicator, {
1697
+ const [saved, setSaved] = useState10(true);
1698
+ useEffect5(() => createClientSaveTracker(client, (state2) => setSaved(state2 === "saved")), []);
1699
+ return /* @__PURE__ */ React16.createElement(SyncStatusIndicator, {
1734
1700
  state,
1735
1701
  saved
1736
1702
  });
@@ -1739,9 +1705,9 @@ var SyncStatus = () => {
1739
1705
  }
1740
1706
  };
1741
1707
  var SyncStatusIndicator = ({ state, saved }) => {
1742
- var _effect = _useSignals17();
1708
+ var _effect = _useSignals16();
1743
1709
  try {
1744
- const { t } = useTranslation17(meta.id);
1710
+ const { t } = useTranslation16(meta.id);
1745
1711
  const summary = getSyncSummary(state);
1746
1712
  const offline = Object.values(state).length === 0;
1747
1713
  const needsToUpload = summary.differentDocuments > 0 || summary.missingOnRemote > 0;
@@ -1752,8 +1718,8 @@ var SyncStatusIndicator = ({ state, saved }) => {
1752
1718
  needsToUpload,
1753
1719
  needsToDownload
1754
1720
  });
1755
- const [classNames, setClassNames] = useState11();
1756
- useEffect6(() => {
1721
+ const [classNames, setClassNames] = useState10();
1722
+ useEffect5(() => {
1757
1723
  setClassNames(void 0);
1758
1724
  if (offline || !needsToUpload && !needsToDownload) {
1759
1725
  return;
@@ -1768,16 +1734,15 @@ var SyncStatusIndicator = ({ state, saved }) => {
1768
1734
  needsToDownload
1769
1735
  ]);
1770
1736
  const title = t(`${status} label`);
1771
- const icon = /* @__PURE__ */ React17.createElement(Icon8, {
1737
+ const icon = /* @__PURE__ */ React16.createElement(Icon5, {
1772
1738
  icon: getIcon(status),
1773
- size: 4,
1774
1739
  classNames
1775
1740
  });
1776
- return /* @__PURE__ */ React17.createElement(Popover3.Root, null, /* @__PURE__ */ React17.createElement(Popover3.Trigger, {
1741
+ return /* @__PURE__ */ React16.createElement(Popover3.Root, null, /* @__PURE__ */ React16.createElement(Popover3.Trigger, {
1777
1742
  asChild: true
1778
- }, /* @__PURE__ */ React17.createElement(StatusBar.Item, {
1743
+ }, /* @__PURE__ */ React16.createElement(StatusBar.Item, {
1779
1744
  title
1780
- }, icon)), /* @__PURE__ */ React17.createElement(Popover3.Portal, null, /* @__PURE__ */ React17.createElement(Popover3.Content, null, /* @__PURE__ */ React17.createElement(EdgeConnectionPopover, null), /* @__PURE__ */ React17.createElement(Popover3.Arrow, null))));
1745
+ }, icon)), /* @__PURE__ */ React16.createElement(Popover3.Portal, null, /* @__PURE__ */ React16.createElement(Popover3.Content, null, /* @__PURE__ */ React16.createElement(EdgeConnectionPopover, null), /* @__PURE__ */ React16.createElement(Popover3.Arrow, null))));
1781
1746
  } finally {
1782
1747
  _effect.f();
1783
1748
  }
@@ -1788,99 +1753,235 @@ var useEdgeStatus2 = () => {
1788
1753
  return status;
1789
1754
  };
1790
1755
  var EdgeConnectionPopover = () => {
1791
- var _effect = _useSignals17();
1756
+ var _effect = _useSignals16();
1792
1757
  try {
1793
1758
  const status = useEdgeStatus2();
1794
- const { t } = useTranslation17(meta.id);
1759
+ const { t } = useTranslation16(meta.id);
1795
1760
  const isConnected = status?.state === EdgeStatus2.ConnectionState.CONNECTED;
1796
- return /* @__PURE__ */ React17.createElement("div", {
1797
- className: "p-3 min-w-[240px]"
1798
- }, /* @__PURE__ */ React17.createElement("div", {
1799
- className: "flex items-center gap-2 mb-3 pb-2 border-b border-neutral-100 dark:border-neutral-800"
1800
- }, /* @__PURE__ */ React17.createElement("div", {
1801
- className: `w-2 h-2 rounded-full ${isConnected ? "bg-success-500 animate-pulse" : "bg-error-500"}`
1802
- }), /* @__PURE__ */ React17.createElement("span", {
1803
- className: "font-medium text-sm text-neutral-900 dark:text-neutral-100"
1804
- }, isConnected ? t("Edge connected") : t("Edge disconnected"))), status?.state === EdgeStatus2.ConnectionState.NOT_CONNECTED && /* @__PURE__ */ React17.createElement("div", {
1805
- className: "flex items-center gap-2 text-sm text-neutral-600 dark:text-neutral-400"
1806
- }, /* @__PURE__ */ React17.createElement(Icon8, {
1807
- icon: "ph--cloud-x--regular",
1808
- size: 4
1809
- }), /* @__PURE__ */ React17.createElement("span", null, t("No connection to edge service"))), status?.state === EdgeStatus2.ConnectionState.CONNECTED && /* @__PURE__ */ React17.createElement("div", {
1761
+ return /* @__PURE__ */ React16.createElement("div", {
1762
+ className: "min-is-[240px] p-2"
1763
+ }, /* @__PURE__ */ React16.createElement("div", {
1764
+ className: "flex items-center gap-2 mbe-2"
1765
+ }, /* @__PURE__ */ React16.createElement(Icon5, {
1766
+ icon: isConnected ? "ph--check-circle--regular" : "ph--warning-circle--regular",
1767
+ classNames: mx(isConnected ? "text-successText" : "text-errorText animate-pulse")
1768
+ }), /* @__PURE__ */ React16.createElement("span", {
1769
+ className: "font-medium text-sm"
1770
+ }, isConnected ? t("sync edge connected label") : t("sync edge disconnected label"))), status?.state === EdgeStatus2.ConnectionState.NOT_CONNECTED && /* @__PURE__ */ React16.createElement("div", {
1771
+ className: "flex items-center gap-2 text-sm text-description"
1772
+ }, /* @__PURE__ */ React16.createElement(Icon5, {
1773
+ icon: "ph--cloud-x--regular"
1774
+ }), /* @__PURE__ */ React16.createElement("span", null, t("sync no connection label"))), status?.state === EdgeStatus2.ConnectionState.CONNECTED && /* @__PURE__ */ React16.createElement("div", {
1810
1775
  className: "space-y-2"
1811
- }, /* @__PURE__ */ React17.createElement("div", {
1812
- className: "flex items-center justify-between"
1813
- }, /* @__PURE__ */ React17.createElement("div", {
1814
- className: "flex items-center gap-2 text-sm text-neutral-600 dark:text-neutral-400"
1815
- }, /* @__PURE__ */ React17.createElement(Icon8, {
1816
- icon: "ph--timer--regular",
1817
- size: 4
1818
- }), /* @__PURE__ */ React17.createElement("span", null, t("Latency"))), /* @__PURE__ */ React17.createElement("span", {
1819
- className: "text-sm font-mono text-neutral-900 dark:text-neutral-100"
1820
- }, status.rtt.toFixed(0), " ms")), /* @__PURE__ */ React17.createElement("div", {
1821
- className: "flex items-center justify-between"
1822
- }, /* @__PURE__ */ React17.createElement("div", {
1823
- className: "flex items-center gap-2 text-sm text-neutral-600 dark:text-neutral-400"
1824
- }, /* @__PURE__ */ React17.createElement(Icon8, {
1825
- icon: "ph--arrow-up--regular",
1826
- size: 4
1827
- }), /* @__PURE__ */ React17.createElement("span", null, t("Upload"))), /* @__PURE__ */ React17.createElement("span", {
1828
- className: "text-sm font-mono text-neutral-900 dark:text-neutral-100"
1829
- }, Unit.Kilobyte(status.rateBytesUp, 0), "/s")), /* @__PURE__ */ React17.createElement("div", {
1830
- className: "flex items-center justify-between"
1831
- }, /* @__PURE__ */ React17.createElement("div", {
1832
- className: "flex items-center gap-2 text-sm text-neutral-600 dark:text-neutral-400"
1833
- }, /* @__PURE__ */ React17.createElement(Icon8, {
1834
- icon: "ph--arrow-down--regular",
1835
- size: 4
1836
- }), /* @__PURE__ */ React17.createElement("span", null, t("Download"))), /* @__PURE__ */ React17.createElement("span", {
1837
- className: "text-sm font-mono text-neutral-900 dark:text-neutral-100"
1838
- }, Unit.Kilobyte(status.rateBytesDown, 0), "/s"))));
1776
+ }, /* @__PURE__ */ React16.createElement("div", {
1777
+ className: "flex items-center justify-between text-sm"
1778
+ }, /* @__PURE__ */ React16.createElement("div", {
1779
+ className: "flex items-center gap-2 text-description"
1780
+ }, /* @__PURE__ */ React16.createElement(Icon5, {
1781
+ icon: "ph--timer--regular"
1782
+ }), /* @__PURE__ */ React16.createElement("span", null, t("sync latency label"))), /* @__PURE__ */ React16.createElement(UnitValue, {
1783
+ value: status.rtt,
1784
+ format: Unit.Millisecond
1785
+ })), /* @__PURE__ */ React16.createElement("div", {
1786
+ className: "flex items-center justify-between text-sm"
1787
+ }, /* @__PURE__ */ React16.createElement("div", {
1788
+ className: "flex items-center gap-2 text-description"
1789
+ }, /* @__PURE__ */ React16.createElement(Icon5, {
1790
+ icon: "ph--arrow-up--regular"
1791
+ }), /* @__PURE__ */ React16.createElement("span", null, t("sync upload label"))), /* @__PURE__ */ React16.createElement(UnitValue, {
1792
+ value: status.rateBytesUp,
1793
+ format: Unit.Kilobyte,
1794
+ suffix: "/s"
1795
+ })), /* @__PURE__ */ React16.createElement("div", {
1796
+ className: "flex items-center justify-between text-sm"
1797
+ }, /* @__PURE__ */ React16.createElement("div", {
1798
+ className: "flex items-center gap-2 text-sm text-description"
1799
+ }, /* @__PURE__ */ React16.createElement(Icon5, {
1800
+ icon: "ph--arrow-down--regular"
1801
+ }), /* @__PURE__ */ React16.createElement("span", null, t("sync download label"))), /* @__PURE__ */ React16.createElement(UnitValue, {
1802
+ value: status.rateBytesDown,
1803
+ format: Unit.Kilobyte,
1804
+ suffix: "/s"
1805
+ }))));
1839
1806
  } finally {
1840
1807
  _effect.f();
1841
1808
  }
1842
1809
  };
1810
+ var UnitValue = ({ value: input, format, suffix }) => {
1811
+ var _effect = _useSignals16();
1812
+ try {
1813
+ const { formattedValue, unit } = format(input);
1814
+ return /* @__PURE__ */ React16.createElement("span", {
1815
+ className: "font-mono"
1816
+ }, formattedValue, /* @__PURE__ */ React16.createElement("span", {
1817
+ className: "mis-1 text-subdued"
1818
+ }, unit.symbol, suffix));
1819
+ } finally {
1820
+ _effect.f();
1821
+ }
1822
+ };
1823
+
1824
+ // src/helpers/query.ts
1825
+ import * as Array2 from "effect/Array";
1826
+ import * as Effect3 from "effect/Effect";
1827
+ import * as EffectFunction from "effect/Function";
1828
+ import * as Match from "effect/Match";
1829
+ import * as Option4 from "effect/Option";
1830
+ import * as SchemaAST from "effect/SchemaAST";
1831
+ import { DXN, Filter as Filter2, Query as Query2 } from "@dxos/echo";
1832
+ import { ReferenceAnnotationId, getTypeAnnotation as getTypeAnnotation2, unwrapOptional } from "@dxos/echo/internal";
1833
+ import { log as log4 } from "@dxos/log";
1834
+ import { Person } from "@dxos/types";
1835
+ var __dxlog_file6 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/helpers/query.ts";
1836
+ var evalQuery = (queryString) => {
1837
+ const globals = {
1838
+ Query: Query2,
1839
+ Filter: Filter2,
1840
+ Person
1841
+ };
1842
+ try {
1843
+ return new Function(...Object.keys(globals), `return ${queryString}`)(...Object.values(globals));
1844
+ } catch (err) {
1845
+ log4.catch(err, void 0, {
1846
+ F: __dxlog_file6,
1847
+ L: 33,
1848
+ S: void 0,
1849
+ C: (f, a) => f(...a)
1850
+ });
1851
+ return Query2.select(Filter2.nothing());
1852
+ }
1853
+ };
1854
+ var resolveSchemaWithClientAndSpace = (client, space, query) => {
1855
+ const resolve = Effect3.fn(function* (dxn) {
1856
+ const typename = DXN.parse(dxn).asTypeDXN()?.type;
1857
+ if (!typename) {
1858
+ return Option4.none();
1859
+ }
1860
+ const staticSchema = client.graph.schemaRegistry.getSchema(typename);
1861
+ if (staticSchema) {
1862
+ return Option4.some(staticSchema);
1863
+ }
1864
+ const query2 = space.db.schemaRegistry.query({
1865
+ typename
1866
+ });
1867
+ const schemas = yield* Effect3.promise(() => query2.run());
1868
+ return Array2.head(schemas).pipe(Option4.map((schema) => schema.snapshot));
1869
+ });
1870
+ return resolveSchema(query, resolve).pipe(Effect3.map((schema) => Option4.getOrUndefined(schema)), Effect3.runPromise);
1871
+ };
1872
+ var resolveSchema = (query, resolve) => {
1873
+ return Match.value(query).pipe(
1874
+ Match.withReturnType(),
1875
+ // TODO(wittjosiah): Reconcile with filter match?
1876
+ Match.when({
1877
+ type: "select"
1878
+ }, ({ filter }) => typenameFromFilter(filter).pipe(Option4.map((typename) => resolve(typename)), Option4.getOrElse(() => Effect3.succeed(Option4.none())))),
1879
+ Match.when({
1880
+ type: "filter"
1881
+ }, ({ filter }) => typenameFromFilter(filter).pipe(Option4.map((typename) => resolve(typename)), Option4.getOrElse(() => Effect3.succeed(Option4.none())))),
1882
+ Match.when({
1883
+ type: "reference-traversal"
1884
+ }, ({ anchor, property }) => resolveSchema(anchor, resolve).pipe(Effect3.map((base) => base.pipe(Option4.map((schema) => SchemaAST.getPropertySignatures(schema.ast)), Option4.flatMap((properties) => Array2.findFirst(properties, (p) => p.name === property)), Option4.flatMap((property2) => SchemaAST.getAnnotation(ReferenceAnnotationId)(unwrapOptional(property2))), Option4.map((annotation) => annotation.typename))), Effect3.flatMap(Option4.match({
1885
+ onNone: () => Effect3.succeed(Option4.none()),
1886
+ onSome: (typename) => resolve(DXN.fromTypename(typename).toString())
1887
+ })))),
1888
+ Match.when({
1889
+ type: "relation",
1890
+ filter: Match.defined
1891
+ }, ({ filter }) => typenameFromFilter(filter).pipe(Option4.map((typename) => resolve(typename)), Option4.getOrElse(() => Effect3.succeed(Option4.none())))),
1892
+ Match.when({
1893
+ type: "relation-traversal"
1894
+ }, ({ anchor, direction }) => resolveSchema(anchor, resolve).pipe(Effect3.map((base) => base.pipe(Option4.map((schema) => getTypeAnnotation2(schema)), Option4.flatMap((annotation) => Option4.fromNullable(direction === "source" ? annotation?.sourceSchema : annotation?.targetSchema)))), Effect3.flatMap(Option4.match({
1895
+ onNone: () => Effect3.succeed(Option4.none()),
1896
+ onSome: (typename) => resolve(typename)
1897
+ })))),
1898
+ Match.when({
1899
+ type: "options"
1900
+ }, ({ query: query2 }) => resolveSchema(query2, resolve)),
1901
+ Match.orElse((_q) => {
1902
+ return Effect3.succeed(Option4.none());
1903
+ })
1904
+ );
1905
+ };
1906
+ var typenameFromFilter = (filter) => Match.value(filter).pipe(Match.withReturnType(), Match.when({
1907
+ type: "object"
1908
+ }, ({ typename }) => Option4.fromNullable(typename)), Match.when({
1909
+ type: "and"
1910
+ }, ({ filters }) => EffectFunction.pipe(filters, Array2.map(typenameFromFilter), Array2.findFirst(Option4.isSome), Option4.flatten)), Match.when({
1911
+ type: "or"
1912
+ }, ({ filters }) => EffectFunction.pipe(filters, Array2.map(typenameFromFilter), Array2.findFirst(Option4.isSome), Option4.flatten)), Match.orElse(() => Option4.none()));
1913
+ var getQueryTarget = (query, space) => {
1914
+ return Match.value(query).pipe(Match.when({
1915
+ type: "options"
1916
+ }, ({ options }) => {
1917
+ return Option4.fromNullable(options.queues).pipe(Option4.flatMap((queues) => Array2.head(queues)), Option4.flatMap((queueDxn) => Option4.fromNullable(DXN.tryParse(queueDxn))), Option4.flatMap((queueDxn) => Option4.fromNullable(space?.queues.get(queueDxn))), Option4.getOrElse(() => space));
1918
+ }), Match.orElse(() => space));
1919
+ };
1843
1920
 
1844
1921
  // src/components/ViewEditor.tsx
1845
- import { useSignals as _useSignals18 } from "@preact-signals/safe-react/tracking";
1846
- import React18, { useCallback as useCallback11 } from "react";
1847
- import { createIntent as createIntent10, useIntentDispatcher as useIntentDispatcher10 } from "@dxos/app-framework";
1848
- import { Type as Type3 } from "@dxos/echo";
1849
- import { invariant as invariant2 } from "@dxos/invariant";
1922
+ import { useSignals as _useSignals17 } from "@preact-signals/safe-react/tracking";
1923
+ import * as Schema2 from "effect/Schema";
1924
+ import React17, { useCallback as useCallback11, useState as useState11 } from "react";
1925
+ import { createIntent as createIntent10 } from "@dxos/app-framework";
1926
+ import { useIntentDispatcher as useIntentDispatcher10 } from "@dxos/app-framework/react";
1927
+ import { DXN as DXN2, Filter as Filter3, Obj as Obj6, Query as Query3, Tag, Type as Type3 } from "@dxos/echo";
1850
1928
  import { useClient as useClient10 } from "@dxos/react-client";
1851
- import { getSpace as getSpace4, useSchema } from "@dxos/react-client/echo";
1929
+ import { getSpace as getSpace4, useQuery as useQuery3 } from "@dxos/react-client/echo";
1930
+ import { useAsyncEffect } from "@dxos/react-ui";
1852
1931
  import { ViewEditor as NaturalViewEditor } from "@dxos/react-ui-form";
1853
- import { getTypenameFromQuery as getTypenameFromQuery2 } from "@dxos/schema";
1854
- var __dxlog_file6 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/ViewEditor.tsx";
1932
+ import { View } from "@dxos/schema";
1855
1933
  var ViewEditor = ({ view }) => {
1856
- var _effect = _useSignals18();
1934
+ var _effect = _useSignals17();
1857
1935
  try {
1858
1936
  const { dispatchPromise: dispatch } = useIntentDispatcher10();
1859
1937
  const client = useClient10();
1860
1938
  const space = getSpace4(view);
1861
- const typename = view.query ? getTypenameFromQuery2(view.query.ast) : void 0;
1862
- const schema = useSchema(client, space, typename);
1863
- const handleUpdateQuery = useCallback11((newQuery) => {
1864
- invariant2(schema, void 0, {
1865
- F: __dxlog_file6,
1866
- L: 28,
1867
- S: void 0,
1868
- A: [
1869
- "schema",
1870
- ""
1871
- ]
1872
- });
1873
- invariant2(Type3.isMutable(schema), void 0, {
1874
- F: __dxlog_file6,
1875
- L: 29,
1876
- S: void 0,
1877
- A: [
1878
- "Type.isMutable(schema)",
1879
- ""
1939
+ const [schema, setSchema] = useState11(() => Schema2.Struct({}));
1940
+ const tags = useQuery3(space, Filter3.type(Tag.Tag));
1941
+ const types = useTypeOptions({
1942
+ space,
1943
+ annotation: [
1944
+ "dynamic",
1945
+ "limited-static",
1946
+ "object-form"
1947
+ ]
1948
+ });
1949
+ useAsyncEffect(async () => {
1950
+ if (!view?.query || !space) {
1951
+ return;
1952
+ }
1953
+ const foundSchema = await resolveSchemaWithClientAndSpace(client, space, view.query.ast);
1954
+ if (foundSchema && foundSchema !== schema) {
1955
+ setSchema(() => foundSchema);
1956
+ }
1957
+ }, [
1958
+ client,
1959
+ space,
1960
+ view,
1961
+ schema
1962
+ ]);
1963
+ const handleQueryChanged = useCallback11(async (newQuery, target) => {
1964
+ if (!view || !space) {
1965
+ return;
1966
+ }
1967
+ const queue = target && DXN2.tryParse(target) ? target : void 0;
1968
+ const query = queue ? Query3.fromAst(newQuery).options({
1969
+ queues: [
1970
+ queue
1880
1971
  ]
1972
+ }) : Query3.fromAst(newQuery);
1973
+ view.query.ast = query.ast;
1974
+ const newSchema = await resolveSchemaWithClientAndSpace(client, space, query.ast);
1975
+ if (!newSchema) {
1976
+ return;
1977
+ }
1978
+ const newView = View.make({
1979
+ query,
1980
+ jsonSchema: Type3.toJsonSchema(newSchema),
1981
+ presentation: Obj6.make(Type3.Expando, {})
1881
1982
  });
1882
- view.query.ast = newQuery;
1883
- schema.updateTypename(getTypenameFromQuery2(newQuery));
1983
+ view.projection = Obj6.getSnapshot(newView).projection;
1984
+ setSchema(() => newSchema);
1884
1985
  }, [
1885
1986
  view,
1886
1987
  schema
@@ -1897,13 +1998,16 @@ var ViewEditor = ({ view }) => {
1897
1998
  if (!space || !schema) {
1898
1999
  return null;
1899
2000
  }
1900
- return /* @__PURE__ */ React18.createElement(NaturalViewEditor, {
2001
+ return /* @__PURE__ */ React17.createElement(NaturalViewEditor, {
1901
2002
  registry: space.db.schemaRegistry,
1902
2003
  schema,
1903
2004
  view,
1904
- onQueryChanged: Type3.isMutable(schema) ? handleUpdateQuery : void 0,
1905
- onDelete: Type3.isMutable(schema) ? handleDelete : void 0,
1906
- outerSpacing: false
2005
+ mode: "query",
2006
+ outerSpacing: false,
2007
+ tags,
2008
+ types,
2009
+ onQueryChanged: handleQueryChanged,
2010
+ onDelete: Type3.isMutable(schema) ? handleDelete : void 0
1907
2011
  });
1908
2012
  } finally {
1909
2013
  _effect.f();
@@ -1912,10 +2016,10 @@ var ViewEditor = ({ view }) => {
1912
2016
 
1913
2017
  // src/components/index.ts
1914
2018
  import { lazy } from "react";
1915
- var CollectionMain = lazy(() => import("./CollectionMain-EU57SRYK.mjs"));
1916
- var ObjectDetailsPanel = lazy(() => import("./ObjectDetailsPanel-NABA2S56.mjs"));
1917
- var ObjectSettingsContainer = lazy(() => import("./ObjectSettings-GXGTITF5.mjs"));
1918
- var RecordMain = lazy(() => import("./RecordMain-MYFTAQ2U.mjs"));
2019
+ var CollectionArticle = lazy(() => import("./CollectionArticle-G3V4QXPI.mjs"));
2020
+ var ObjectDetailsPanel = lazy(() => import("./ObjectDetailsPanel-6PZQIQG3.mjs"));
2021
+ var ObjectSettingsContainer = lazy(() => import("./ObjectSettings-OQSBOH7K.mjs"));
2022
+ var RecordArticle = lazy(() => import("./RecordArticle-PBMLYY5K.mjs"));
1919
2023
 
1920
2024
  export {
1921
2025
  AwaitingObject,
@@ -1928,13 +2032,12 @@ export {
1928
2032
  JoinDialog,
1929
2033
  MembersContainer,
1930
2034
  MenuFooter,
1931
- PersistenceStatus,
1932
- POPOVER_RENAME_OBJECT,
1933
- PopoverRenameObject,
1934
- POPOVER_RENAME_SPACE,
1935
- PopoverRenameSpace,
1936
- useQuerySpaceSchemas,
2035
+ OBJECT_RENAME_POPOVER,
2036
+ ObjectRenamePopover,
2037
+ SPACE_RENAME_POPOVER,
2038
+ SpaceRenamePopover,
1937
2039
  SchemaContainer,
2040
+ useQuerySpaceSchemas,
1938
2041
  SpacePresence,
1939
2042
  FullPresence,
1940
2043
  SmallPresenceLive,
@@ -1944,10 +2047,13 @@ export {
1944
2047
  InlineSyncStatus,
1945
2048
  SyncStatus,
1946
2049
  SyncStatusIndicator,
2050
+ evalQuery,
2051
+ resolveSchemaWithClientAndSpace,
2052
+ getQueryTarget,
1947
2053
  ViewEditor,
1948
- CollectionMain,
2054
+ CollectionArticle,
1949
2055
  ObjectDetailsPanel,
1950
2056
  ObjectSettingsContainer,
1951
- RecordMain
2057
+ RecordArticle
1952
2058
  };
1953
- //# sourceMappingURL=chunk-DG5YEEPZ.mjs.map
2059
+ //# sourceMappingURL=chunk-MI4A5XUX.mjs.map