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