@dxos/plugin-space 0.8.4-main.67995b8 → 0.8.4-main.72ec0f3

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 (363) hide show
  1. package/dist/lib/browser/{CollectionMain-D2B75XBS.mjs → CollectionArticle-WTHWY4YS.mjs} +10 -10
  2. package/dist/lib/browser/CollectionArticle-WTHWY4YS.mjs.map +7 -0
  3. package/dist/lib/browser/ObjectDetailsPanel-2BRUBHP6.mjs +141 -0
  4. package/dist/lib/browser/ObjectDetailsPanel-2BRUBHP6.mjs.map +7 -0
  5. package/dist/lib/browser/ObjectSettings-5LLWCVEK.mjs +144 -0
  6. package/dist/lib/browser/ObjectSettings-5LLWCVEK.mjs.map +7 -0
  7. package/dist/lib/browser/RecordArticle-SXDRWTTU.mjs +116 -0
  8. package/dist/lib/browser/RecordArticle-SXDRWTTU.mjs.map +7 -0
  9. package/dist/lib/browser/{app-graph-builder-V3MP3CDK.mjs → app-graph-builder-VQAB3GCQ.mjs} +138 -90
  10. package/dist/lib/browser/app-graph-builder-VQAB3GCQ.mjs.map +7 -0
  11. package/dist/lib/browser/{app-graph-serializer-H6AW7KGS.mjs → app-graph-serializer-KSLKMEPP.mjs} +19 -19
  12. package/dist/lib/browser/app-graph-serializer-KSLKMEPP.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-XUYKJUU7.mjs → chunk-ERQMHU7L.mjs} +124 -63
  14. package/dist/lib/browser/chunk-ERQMHU7L.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-FBJEXW54.mjs → chunk-J2BUK5E6.mjs} +587 -513
  16. package/dist/lib/browser/chunk-J2BUK5E6.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-K5J7ZB5P.mjs +20 -0
  18. package/dist/lib/browser/chunk-K5J7ZB5P.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-SGTQ52SU.mjs → chunk-M2Z6D4ZI.mjs} +32 -21
  20. package/dist/lib/browser/chunk-M2Z6D4ZI.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-QACNNDOT.mjs → chunk-OLBBSOVI.mjs} +30 -17
  22. package/dist/lib/browser/chunk-OLBBSOVI.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-PU5IOFMG.mjs +167 -0
  24. package/dist/lib/browser/chunk-PU5IOFMG.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-VZBIIYFM.mjs +16 -0
  26. package/dist/lib/browser/chunk-VZBIIYFM.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-WJXU4GKV.mjs +19 -0
  28. package/dist/lib/browser/chunk-WJXU4GKV.mjs.map +7 -0
  29. package/dist/lib/browser/{identity-created-23XJJV2N.mjs → identity-created-NAXTPQXE.mjs} +6 -6
  30. package/dist/lib/browser/identity-created-NAXTPQXE.mjs.map +7 -0
  31. package/dist/lib/browser/index.mjs +91 -91
  32. package/dist/lib/browser/index.mjs.map +3 -3
  33. package/dist/lib/browser/{intent-resolver-XHGD73WZ.mjs → intent-resolver-Q2XWHAVA.mjs} +87 -85
  34. package/dist/lib/browser/intent-resolver-Q2XWHAVA.mjs.map +7 -0
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/react-root-MM4HADPE.mjs +30 -0
  37. package/dist/lib/browser/react-root-MM4HADPE.mjs.map +7 -0
  38. package/dist/lib/browser/{react-surface-YWZZQF7H.mjs → react-surface-SGZC3Y4U.mjs} +81 -105
  39. package/dist/lib/browser/react-surface-SGZC3Y4U.mjs.map +7 -0
  40. package/dist/lib/browser/{schema-defs-Z6FC4AHC.mjs → schema-defs-QPI2JU3X.mjs} +6 -6
  41. package/dist/lib/browser/schema-defs-QPI2JU3X.mjs.map +7 -0
  42. package/dist/lib/browser/{settings-4IMP5RYT.mjs → settings-WKLGKUHQ.mjs} +5 -5
  43. package/dist/lib/browser/{settings-4IMP5RYT.mjs.map → settings-WKLGKUHQ.mjs.map} +1 -1
  44. package/dist/lib/browser/{spaces-ready-TOPG6IV4.mjs → spaces-ready-C5QC2UFL.mjs} +21 -18
  45. package/dist/lib/browser/spaces-ready-C5QC2UFL.mjs.map +7 -0
  46. package/dist/lib/browser/{state-QYZAB45H.mjs → state-Q7YRE5KG.mjs} +7 -7
  47. package/dist/lib/browser/state-Q7YRE5KG.mjs.map +7 -0
  48. package/dist/lib/browser/types/index.mjs +2 -2
  49. package/dist/lib/node-esm/{CollectionMain-ZJIFCWKZ.mjs → CollectionArticle-KHXYT3SH.mjs} +10 -10
  50. package/dist/lib/node-esm/CollectionArticle-KHXYT3SH.mjs.map +7 -0
  51. package/dist/lib/node-esm/ObjectDetailsPanel-6PZQIQG3.mjs +142 -0
  52. package/dist/lib/node-esm/ObjectDetailsPanel-6PZQIQG3.mjs.map +7 -0
  53. package/dist/lib/node-esm/ObjectSettings-OQSBOH7K.mjs +145 -0
  54. package/dist/lib/node-esm/ObjectSettings-OQSBOH7K.mjs.map +7 -0
  55. package/dist/lib/node-esm/RecordArticle-NACBH42P.mjs +117 -0
  56. package/dist/lib/node-esm/RecordArticle-NACBH42P.mjs.map +7 -0
  57. package/dist/lib/node-esm/{app-graph-builder-SG4VECBB.mjs → app-graph-builder-24JCLJPX.mjs} +138 -90
  58. package/dist/lib/node-esm/app-graph-builder-24JCLJPX.mjs.map +7 -0
  59. package/dist/lib/node-esm/{app-graph-serializer-2ICUGQQT.mjs → app-graph-serializer-R723K764.mjs} +19 -19
  60. package/dist/lib/node-esm/app-graph-serializer-R723K764.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-JH6F4C3I.mjs → chunk-2PN7QNGV.mjs} +32 -21
  62. package/dist/lib/node-esm/chunk-2PN7QNGV.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs +18 -0
  64. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-H4JILUJK.mjs +20 -0
  66. package/dist/lib/node-esm/chunk-H4JILUJK.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-2A3VBXBP.mjs → chunk-ITQFSFQ3.mjs} +587 -513
  68. package/dist/lib/node-esm/chunk-ITQFSFQ3.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-TJPQDQNI.mjs +168 -0
  70. package/dist/lib/node-esm/chunk-TJPQDQNI.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-4AOMYKDE.mjs → chunk-VH2EBZEV.mjs} +124 -63
  72. package/dist/lib/node-esm/chunk-VH2EBZEV.mjs.map +7 -0
  73. package/dist/lib/node-esm/{chunk-P442DOQ3.mjs → chunk-WC4VBFMA.mjs} +30 -17
  74. package/dist/lib/node-esm/chunk-WC4VBFMA.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-Z7BB6HC2.mjs +21 -0
  76. package/dist/lib/node-esm/chunk-Z7BB6HC2.mjs.map +7 -0
  77. package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs → identity-created-OXLKCJE3.mjs} +6 -6
  78. package/dist/lib/node-esm/identity-created-OXLKCJE3.mjs.map +7 -0
  79. package/dist/lib/node-esm/index.mjs +91 -91
  80. package/dist/lib/node-esm/index.mjs.map +3 -3
  81. package/dist/lib/node-esm/{intent-resolver-LEANKSKZ.mjs → intent-resolver-YK4ESSET.mjs} +87 -85
  82. package/dist/lib/node-esm/intent-resolver-YK4ESSET.mjs.map +7 -0
  83. package/dist/lib/node-esm/meta.json +1 -1
  84. package/dist/lib/node-esm/{react-root-5Y7LJRX6.mjs → react-root-5ANDLQMX.mjs} +13 -12
  85. package/dist/lib/node-esm/react-root-5ANDLQMX.mjs.map +7 -0
  86. package/dist/lib/node-esm/{react-surface-YQFNIKYT.mjs → react-surface-V7J2QB44.mjs} +81 -105
  87. package/dist/lib/node-esm/react-surface-V7J2QB44.mjs.map +7 -0
  88. package/dist/lib/node-esm/{schema-defs-WHJM7UZE.mjs → schema-defs-ZS2D47XW.mjs} +6 -6
  89. package/dist/lib/node-esm/schema-defs-ZS2D47XW.mjs.map +7 -0
  90. package/dist/lib/node-esm/{settings-SAOBPND3.mjs → settings-RBB5633M.mjs} +5 -5
  91. package/dist/lib/node-esm/{settings-SAOBPND3.mjs.map → settings-RBB5633M.mjs.map} +1 -1
  92. package/dist/lib/node-esm/{spaces-ready-HIUKNDZK.mjs → spaces-ready-SJCXV6YH.mjs} +21 -18
  93. package/dist/lib/node-esm/spaces-ready-SJCXV6YH.mjs.map +7 -0
  94. package/dist/lib/node-esm/{state-ZVEHQ4BJ.mjs → state-362I5BMK.mjs} +7 -7
  95. package/dist/lib/node-esm/state-362I5BMK.mjs.map +7 -0
  96. package/dist/lib/node-esm/types/index.mjs +2 -2
  97. package/dist/types/src/SpacePlugin.d.ts +1 -1
  98. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  100. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/app-graph-serializer.d.ts +1 -1
  102. package/dist/types/src/capabilities/capabilities.d.ts +7 -6
  103. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/identity-created.d.ts +1 -1
  105. package/dist/types/src/capabilities/identity-created.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/index.d.ts +11 -12
  107. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  109. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/react-root.d.ts +2 -2
  111. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  113. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/schema-defs.d.ts +1 -1
  115. package/dist/types/src/capabilities/schema-defs.d.ts.map +1 -1
  116. package/dist/types/src/capabilities/settings.d.ts +1 -1
  117. package/dist/types/src/capabilities/spaces-ready.d.ts +1 -1
  118. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  119. package/dist/types/src/capabilities/state.d.ts +1 -1
  120. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  121. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  122. package/dist/types/src/components/CollectionArticle.d.ts +6 -0
  123. package/dist/types/src/components/CollectionArticle.d.ts.map +1 -0
  124. package/dist/types/src/components/CollectionSection.d.ts +3 -4
  125. package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
  126. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +3 -3
  127. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  128. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1694 -4
  129. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  130. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +7 -5
  131. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  132. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -1
  133. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  134. package/dist/types/src/components/{JoinDialog.d.ts → JoinDialog/JoinDialog.d.ts} +1 -1
  135. package/dist/types/src/components/JoinDialog/JoinDialog.d.ts.map +1 -0
  136. package/dist/types/src/components/JoinDialog/index.d.ts +2 -0
  137. package/dist/types/src/components/JoinDialog/index.d.ts.map +1 -0
  138. package/dist/types/src/components/{MembersContainer.d.ts → MembersContainer/MembersContainer.d.ts} +3 -2
  139. package/dist/types/src/components/MembersContainer/MembersContainer.d.ts.map +1 -0
  140. package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts +1697 -0
  141. package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts.map +1 -0
  142. package/dist/types/src/components/MembersContainer/index.d.ts +2 -0
  143. package/dist/types/src/components/MembersContainer/index.d.ts.map +1 -0
  144. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +9 -0
  145. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -0
  146. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts +10 -0
  147. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -0
  148. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts +3 -0
  149. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts.map +1 -0
  150. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts +7 -0
  151. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts.map +1 -0
  152. package/dist/types/src/components/ObjectRenamePopover/index.d.ts +2 -0
  153. package/dist/types/src/components/ObjectRenamePopover/index.d.ts.map +1 -0
  154. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  155. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +2 -2
  156. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
  157. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +1530 -0
  158. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -0
  159. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +1 -1
  160. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
  161. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -1
  162. package/dist/types/src/components/ObjectSettings/index.d.ts +2 -1
  163. package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -1
  164. package/dist/types/src/components/RecordArticle.d.ts +5 -0
  165. package/dist/types/src/components/RecordArticle.d.ts.map +1 -0
  166. package/dist/types/src/components/RecordArticle.stories.d.ts +1697 -0
  167. package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -0
  168. package/dist/types/src/components/SchemaContainer.d.ts +1 -1
  169. package/dist/types/src/components/SchemaContainer.d.ts.map +1 -1
  170. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  171. package/dist/types/src/components/{SpacePresence.d.ts → SpacePresence/SpacePresence.d.ts} +4 -3
  172. package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -0
  173. package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts +1527 -0
  174. package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts.map +1 -0
  175. package/dist/types/src/components/SpacePresence/index.d.ts +2 -0
  176. package/dist/types/src/components/SpacePresence/index.d.ts.map +1 -0
  177. package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts +7 -0
  178. package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts.map +1 -0
  179. package/dist/types/src/components/SpaceRenamePopover/index.d.ts +2 -0
  180. package/dist/types/src/components/SpaceRenamePopover/index.d.ts.map +1 -0
  181. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  182. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1527 -4
  183. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  184. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  185. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1528 -5
  186. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  187. package/dist/types/src/components/ViewEditor.d.ts +3 -4
  188. package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
  189. package/dist/types/src/components/index.d.ts +10 -11
  190. package/dist/types/src/components/index.d.ts.map +1 -1
  191. package/dist/types/src/events.d.ts.map +1 -1
  192. package/dist/types/src/helpers/index.d.ts +2 -0
  193. package/dist/types/src/helpers/index.d.ts.map +1 -0
  194. package/dist/types/src/helpers/query.d.ts +8 -0
  195. package/dist/types/src/helpers/query.d.ts.map +1 -0
  196. package/dist/types/src/helpers/query.test.d.ts +2 -0
  197. package/dist/types/src/helpers/query.test.d.ts.map +1 -0
  198. package/dist/types/src/hooks/index.d.ts +1 -0
  199. package/dist/types/src/hooks/index.d.ts.map +1 -1
  200. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  201. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +1 -1
  202. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  203. package/dist/types/src/hooks/usePath.d.ts +1 -1
  204. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  205. package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
  206. package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
  207. package/dist/types/src/index.d.ts +1 -0
  208. package/dist/types/src/index.d.ts.map +1 -1
  209. package/dist/types/src/meta.d.ts +0 -1
  210. package/dist/types/src/meta.d.ts.map +1 -1
  211. package/dist/types/src/translations.d.ts +1326 -26
  212. package/dist/types/src/translations.d.ts.map +1 -1
  213. package/dist/types/src/types/types.d.ts +78 -96
  214. package/dist/types/src/types/types.d.ts.map +1 -1
  215. package/dist/types/src/util.d.ts +16 -11
  216. package/dist/types/src/util.d.ts.map +1 -1
  217. package/dist/types/tsconfig.tsbuildinfo +1 -1
  218. package/package.json +68 -63
  219. package/src/SpacePlugin.ts +230 -220
  220. package/src/capabilities/app-graph-builder.ts +214 -133
  221. package/src/capabilities/app-graph-serializer.ts +12 -12
  222. package/src/capabilities/capabilities.ts +19 -13
  223. package/src/capabilities/identity-created.ts +3 -3
  224. package/src/capabilities/index.ts +0 -1
  225. package/src/capabilities/intent-resolver.ts +81 -65
  226. package/src/capabilities/react-root.tsx +6 -4
  227. package/src/capabilities/react-surface.tsx +78 -145
  228. package/src/capabilities/schema-defs.ts +4 -3
  229. package/src/capabilities/spaces-ready.ts +16 -10
  230. package/src/capabilities/state.ts +5 -4
  231. package/src/components/AwaitingObject.tsx +12 -14
  232. package/src/components/{CollectionMain.tsx → CollectionArticle.tsx} +7 -6
  233. package/src/components/CollectionSection.tsx +8 -6
  234. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +17 -16
  235. package/src/components/CreateDialog/CreateObjectDialog.tsx +51 -33
  236. package/src/components/CreateDialog/CreateObjectPanel.tsx +24 -13
  237. package/src/components/CreateDialog/CreateSpaceDialog.tsx +30 -11
  238. package/src/components/{JoinDialog.tsx → JoinDialog/JoinDialog.tsx} +26 -10
  239. package/src/components/JoinDialog/index.ts +5 -0
  240. package/src/components/MembersContainer/MembersContainer.stories.tsx +56 -0
  241. package/src/components/{MembersContainer.tsx → MembersContainer/MembersContainer.tsx} +22 -21
  242. package/src/components/MembersContainer/index.ts +5 -0
  243. package/src/components/MenuFooter.tsx +2 -2
  244. package/src/components/ObjectDetailsPanel/ObjectDetailsPanel.tsx +51 -0
  245. package/src/components/ObjectDetailsPanel/ObjectForm.tsx +72 -0
  246. package/src/components/ObjectDetailsPanel/index.ts +7 -0
  247. package/src/components/{PopoverRenameObject.tsx → ObjectRenamePopover/ObjectRenamePopover.tsx} +10 -16
  248. package/src/components/ObjectRenamePopover/index.ts +5 -0
  249. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +4 -3
  250. package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
  251. package/src/components/ObjectSettings/BaseObjectSettings.tsx +90 -26
  252. package/src/components/ObjectSettings/ForeignKeys.tsx +4 -4
  253. package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +4 -3
  254. package/src/components/ObjectSettings/index.ts +3 -1
  255. package/src/components/RecordArticle.stories.tsx +115 -0
  256. package/src/components/RecordArticle.tsx +114 -0
  257. package/src/components/SchemaContainer.tsx +25 -28
  258. package/src/components/SpacePluginSettings.tsx +16 -11
  259. package/src/components/{SpacePresence.stories.tsx → SpacePresence/SpacePresence.stories.tsx} +24 -23
  260. package/src/components/{SpacePresence.tsx → SpacePresence/SpacePresence.tsx} +22 -17
  261. package/src/components/SpacePresence/index.ts +5 -0
  262. package/src/components/{PopoverRenameSpace.tsx → SpaceRenamePopover/SpaceRenamePopover.tsx} +7 -6
  263. package/src/components/SpaceRenamePopover/index.ts +5 -0
  264. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +17 -9
  265. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +49 -28
  266. package/src/components/SyncStatus/InlineSyncStatus.tsx +8 -8
  267. package/src/components/SyncStatus/SyncStatus.stories.tsx +9 -9
  268. package/src/components/SyncStatus/SyncStatus.tsx +109 -12
  269. package/src/components/ViewEditor.tsx +51 -23
  270. package/src/components/index.ts +7 -7
  271. package/src/events.ts +7 -7
  272. package/src/helpers/index.ts +5 -0
  273. package/src/helpers/query.test.ts +24 -0
  274. package/src/helpers/query.ts +158 -0
  275. package/src/hooks/index.ts +1 -0
  276. package/src/hooks/useActiveSpace.ts +3 -2
  277. package/src/hooks/useInputSurfaceLookup.tsx +8 -3
  278. package/src/hooks/usePath.ts +1 -1
  279. package/src/hooks/useTypeOptions.ts +59 -0
  280. package/src/index.ts +1 -0
  281. package/src/meta.ts +6 -3
  282. package/src/translations.ts +29 -14
  283. package/src/types/types.ts +31 -22
  284. package/src/util.tsx +131 -66
  285. package/dist/lib/browser/CollectionMain-D2B75XBS.mjs.map +0 -7
  286. package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs +0 -88
  287. package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs.map +0 -7
  288. package/dist/lib/browser/app-graph-builder-V3MP3CDK.mjs.map +0 -7
  289. package/dist/lib/browser/app-graph-serializer-H6AW7KGS.mjs.map +0 -7
  290. package/dist/lib/browser/chunk-CEFHNVU7.mjs +0 -20
  291. package/dist/lib/browser/chunk-CEFHNVU7.mjs.map +0 -7
  292. package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
  293. package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
  294. package/dist/lib/browser/chunk-FBJEXW54.mjs.map +0 -7
  295. package/dist/lib/browser/chunk-JS3MMC42.mjs +0 -19
  296. package/dist/lib/browser/chunk-JS3MMC42.mjs.map +0 -7
  297. package/dist/lib/browser/chunk-QACNNDOT.mjs.map +0 -7
  298. package/dist/lib/browser/chunk-SGTQ52SU.mjs.map +0 -7
  299. package/dist/lib/browser/chunk-VLBRSGJ2.mjs +0 -94
  300. package/dist/lib/browser/chunk-VLBRSGJ2.mjs.map +0 -7
  301. package/dist/lib/browser/chunk-XUYKJUU7.mjs.map +0 -7
  302. package/dist/lib/browser/identity-created-23XJJV2N.mjs.map +0 -7
  303. package/dist/lib/browser/intent-resolver-XHGD73WZ.mjs.map +0 -7
  304. package/dist/lib/browser/react-root-CMWOGJG5.mjs +0 -29
  305. package/dist/lib/browser/react-root-CMWOGJG5.mjs.map +0 -7
  306. package/dist/lib/browser/react-surface-YWZZQF7H.mjs.map +0 -7
  307. package/dist/lib/browser/schema-defs-Z6FC4AHC.mjs.map +0 -7
  308. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs +0 -124
  309. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs.map +0 -7
  310. package/dist/lib/browser/spaces-ready-TOPG6IV4.mjs.map +0 -7
  311. package/dist/lib/browser/state-QYZAB45H.mjs.map +0 -7
  312. package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs.map +0 -7
  313. package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs +0 -89
  314. package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs.map +0 -7
  315. package/dist/lib/node-esm/app-graph-builder-SG4VECBB.mjs.map +0 -7
  316. package/dist/lib/node-esm/app-graph-serializer-2ICUGQQT.mjs.map +0 -7
  317. package/dist/lib/node-esm/chunk-2A3VBXBP.mjs.map +0 -7
  318. package/dist/lib/node-esm/chunk-4AOMYKDE.mjs.map +0 -7
  319. package/dist/lib/node-esm/chunk-5HHYE264.mjs +0 -20
  320. package/dist/lib/node-esm/chunk-5HHYE264.mjs.map +0 -7
  321. package/dist/lib/node-esm/chunk-5T3ZH23B.mjs +0 -21
  322. package/dist/lib/node-esm/chunk-5T3ZH23B.mjs.map +0 -7
  323. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs +0 -15
  324. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
  325. package/dist/lib/node-esm/chunk-JH6F4C3I.mjs.map +0 -7
  326. package/dist/lib/node-esm/chunk-P442DOQ3.mjs.map +0 -7
  327. package/dist/lib/node-esm/chunk-SSLBYZEY.mjs +0 -96
  328. package/dist/lib/node-esm/chunk-SSLBYZEY.mjs.map +0 -7
  329. package/dist/lib/node-esm/identity-created-IJQO6GCR.mjs.map +0 -7
  330. package/dist/lib/node-esm/intent-resolver-LEANKSKZ.mjs.map +0 -7
  331. package/dist/lib/node-esm/react-root-5Y7LJRX6.mjs.map +0 -7
  332. package/dist/lib/node-esm/react-surface-YQFNIKYT.mjs.map +0 -7
  333. package/dist/lib/node-esm/schema-defs-WHJM7UZE.mjs.map +0 -7
  334. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs +0 -126
  335. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs.map +0 -7
  336. package/dist/lib/node-esm/spaces-ready-HIUKNDZK.mjs.map +0 -7
  337. package/dist/lib/node-esm/state-ZVEHQ4BJ.mjs.map +0 -7
  338. package/dist/types/src/capabilities/schema-tool.test.d.ts +0 -2
  339. package/dist/types/src/capabilities/schema-tool.test.d.ts.map +0 -1
  340. package/dist/types/src/capabilities/schema-tools.d.ts +0 -13
  341. package/dist/types/src/capabilities/schema-tools.d.ts.map +0 -1
  342. package/dist/types/src/components/CollectionMain.d.ts +0 -7
  343. package/dist/types/src/components/CollectionMain.d.ts.map +0 -1
  344. package/dist/types/src/components/JoinDialog.d.ts.map +0 -1
  345. package/dist/types/src/components/MembersContainer.d.ts.map +0 -1
  346. package/dist/types/src/components/MembersContainer.stories.d.ts +0 -8
  347. package/dist/types/src/components/MembersContainer.stories.d.ts.map +0 -1
  348. package/dist/types/src/components/ObjectDetailsPanel.d.ts +0 -9
  349. package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +0 -1
  350. package/dist/types/src/components/PersistenceStatus.d.ts +0 -6
  351. package/dist/types/src/components/PersistenceStatus.d.ts.map +0 -1
  352. package/dist/types/src/components/PopoverRenameObject.d.ts +0 -7
  353. package/dist/types/src/components/PopoverRenameObject.d.ts.map +0 -1
  354. package/dist/types/src/components/PopoverRenameSpace.d.ts +0 -7
  355. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +0 -1
  356. package/dist/types/src/components/SpacePresence.d.ts.map +0 -1
  357. package/dist/types/src/components/SpacePresence.stories.d.ts +0 -9
  358. package/dist/types/src/components/SpacePresence.stories.d.ts.map +0 -1
  359. package/src/capabilities/schema-tool.test.ts +0 -44
  360. package/src/capabilities/schema-tools.ts +0 -125
  361. package/src/components/MembersContainer.stories.tsx +0 -30
  362. package/src/components/ObjectDetailsPanel.tsx +0 -77
  363. package/src/components/PersistenceStatus.tsx +0 -83
@@ -1,40 +1,42 @@
1
1
  import {
2
2
  useInputSurfaceLookup,
3
- usePath
4
- } from "./chunk-VLBRSGJ2.mjs";
3
+ usePath,
4
+ useTypeOptions
5
+ } from "./chunk-PU5IOFMG.mjs";
5
6
  import {
6
7
  SpaceCapabilities
7
- } from "./chunk-CEFHNVU7.mjs";
8
+ } from "./chunk-K5J7ZB5P.mjs";
8
9
  import {
9
10
  COMPOSER_SPACE_LOCK,
10
11
  getSpaceDisplayName
11
- } from "./chunk-XUYKJUU7.mjs";
12
+ } from "./chunk-ERQMHU7L.mjs";
12
13
  import {
13
14
  SpaceAction,
14
15
  SpaceForm
15
- } from "./chunk-SGTQ52SU.mjs";
16
+ } from "./chunk-M2Z6D4ZI.mjs";
16
17
  import {
17
- SPACE_PLUGIN,
18
18
  meta
19
- } from "./chunk-FBCGT5YY.mjs";
19
+ } from "./chunk-VZBIIYFM.mjs";
20
20
 
21
21
  // src/components/AwaitingObject.tsx
22
22
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
23
23
  import React, { useCallback, useEffect, useState } from "react";
24
- import { createIntent, LayoutAction, 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";
25
27
  import { useClient } from "@dxos/react-client";
26
- import { Filter, fullyQualifiedId, useQuery } from "@dxos/react-client/echo";
28
+ import { Filter, useQuery } from "@dxos/react-client/echo";
27
29
  import { Button, Icon, Toast, useTranslation } from "@dxos/react-ui";
28
- var WAIT_FOR_OBJECT_TIMEOUT = 18e4;
29
- var TOAST_TIMEOUT = 24e4;
30
+ var WAIT_FOR_OBJECT_TIMEOUT = 3 * 60 * 1e3;
31
+ var TOAST_TIMEOUT = 4 * 60 * 1e3;
30
32
  var AwaitingObject = ({ id }) => {
31
33
  var _effect = _useSignals();
32
34
  try {
35
+ const { t } = useTranslation(meta.id);
36
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
33
37
  const [open, setOpen] = useState(true);
34
38
  const [waiting, setWaiting] = useState(true);
35
39
  const [found, setFound] = useState(false);
36
- const { t } = useTranslation(SPACE_PLUGIN);
37
- const { dispatchPromise: dispatch } = useIntentDispatcher();
38
40
  const layout = useLayout();
39
41
  const client = useClient();
40
42
  const objects = useQuery(client.spaces, Filter.everything());
@@ -42,15 +44,13 @@ var AwaitingObject = ({ id }) => {
42
44
  if (!id) {
43
45
  return;
44
46
  }
45
- const timeout = setTimeout(() => {
46
- setWaiting(false);
47
- }, WAIT_FOR_OBJECT_TIMEOUT);
48
- () => clearTimeout(timeout);
47
+ const timeout = setTimeout(() => setWaiting(false), WAIT_FOR_OBJECT_TIMEOUT);
48
+ return () => clearTimeout(timeout);
49
49
  }, [
50
50
  id
51
51
  ]);
52
52
  useEffect(() => {
53
- if (objects.findIndex((object) => fullyQualifiedId(object) === id) > -1) {
53
+ if (objects.findIndex((object) => Obj.getDXN(object).toString() === id) > -1) {
54
54
  setFound(true);
55
55
  if (layout.active.includes(id)) {
56
56
  setOpen(false);
@@ -121,34 +121,44 @@ var AwaitingObject = ({ id }) => {
121
121
 
122
122
  // src/components/CreateDialog/CreateObjectDialog.tsx
123
123
  import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
124
- import { Effect, pipe } from "effect";
124
+ import * as Effect from "effect/Effect";
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 } 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
137
139
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
140
+ import * as Option from "effect/Option";
138
141
  import React2, { useCallback as useCallback2 } from "react";
139
142
  import { Type } from "@dxos/echo";
140
- import { getTypeAnnotation } from "@dxos/echo-schema";
141
- import { Icon as Icon2, toLocalizedString, useTranslation as useTranslation2 } from "@dxos/react-ui";
143
+ import { ViewAnnotation, getTypeAnnotation } from "@dxos/echo/internal";
144
+ import { Icon as Icon2, toLocalizedString, useDefaultValue, useTranslation as useTranslation2 } from "@dxos/react-ui";
142
145
  import { Form } from "@dxos/react-ui-form";
143
146
  import { SearchList } from "@dxos/react-ui-searchlist";
144
147
  import { cardDialogOverflow, cardDialogPaddedOverflow, cardDialogSearchListRoot } from "@dxos/react-ui-stack";
145
148
  import { isNonNullable } from "@dxos/util";
146
- var CreateObjectPanel = ({ forms, spaces, typename, target, name: initialName, defaultSpaceId, resolve, onTargetChange, onTypenameChange, onCreateObject }) => {
149
+ var CreateObjectPanel = ({ forms, spaces, typename, target, views, initialFormValues: _initialFormValues, defaultSpaceId, resolve, onTargetChange, onTypenameChange, onCreateObject }) => {
147
150
  var _effect = _useSignals2();
148
151
  try {
149
- const { t } = useTranslation2(SPACE_PLUGIN);
152
+ const { t } = useTranslation2(meta.id);
153
+ const initialFormValues = useDefaultValue(_initialFormValues, () => ({}));
150
154
  const form = forms.find((form2) => Type.getTypename(form2.objectSchema) === typename);
151
- const options = forms.map((form2) => getTypeAnnotation(form2.objectSchema)).filter(isNonNullable).sort((a, b) => {
155
+ const options = forms.filter((form2) => {
156
+ if (views == null) {
157
+ return true;
158
+ } else {
159
+ return views === ViewAnnotation.get(form2.objectSchema).pipe(Option.getOrElse(() => false));
160
+ }
161
+ }).map((form2) => getTypeAnnotation(form2.objectSchema)).filter(isNonNullable).sort((a, b) => {
152
162
  const nameA = t("typename label", {
153
163
  ns: a.typename,
154
164
  defaultValue: a.typename
@@ -200,9 +210,7 @@ var CreateObjectPanel = ({ forms, spaces, typename, target, name: initialName, d
200
210
  className: cardDialogOverflow
201
211
  }, /* @__PURE__ */ React2.createElement(Form, {
202
212
  autoFocus: true,
203
- values: {
204
- name: initialName
205
- },
213
+ values: initialFormValues,
206
214
  schema: form.formSchema,
207
215
  testId: "create-object-form",
208
216
  onSave: handleCreateObject,
@@ -216,7 +224,7 @@ var CreateObjectPanel = ({ forms, spaces, typename, target, name: initialName, d
216
224
  var SelectSpace = ({ spaces, defaultSpaceId, onChange }) => {
217
225
  var _effect = _useSignals2();
218
226
  try {
219
- const { t } = useTranslation2(SPACE_PLUGIN);
227
+ const { t } = useTranslation2(meta.id);
220
228
  return /* @__PURE__ */ React2.createElement(SearchList.Root, {
221
229
  label: t("space input label"),
222
230
  classNames: cardDialogSearchListRoot
@@ -256,7 +264,7 @@ var SelectSpace = ({ spaces, defaultSpaceId, onChange }) => {
256
264
  var SelectSchema = ({ options, resolve, onChange }) => {
257
265
  var _effect = _useSignals2();
258
266
  try {
259
- const { t } = useTranslation2(SPACE_PLUGIN);
267
+ const { t } = useTranslation2(meta.id);
260
268
  return /* @__PURE__ */ React2.createElement(SearchList.Root, {
261
269
  label: t("schema input label"),
262
270
  classNames: cardDialogSearchListRoot
@@ -288,38 +296,24 @@ var SelectSchema = ({ options, resolve, onChange }) => {
288
296
  }
289
297
  };
290
298
 
291
- // src/capabilities/index.ts
292
- import { lazy } from "@dxos/app-framework";
293
- var AppGraphBuilder = lazy(() => import("./app-graph-builder-V3MP3CDK.mjs"));
294
- var AppGraphSerializer = lazy(() => import("./app-graph-serializer-H6AW7KGS.mjs"));
295
- var IdentityCreated = lazy(() => import("./identity-created-23XJJV2N.mjs"));
296
- var IntentResolver = lazy(() => import("./intent-resolver-XHGD73WZ.mjs"));
297
- var ReactRoot = lazy(() => import("./react-root-CMWOGJG5.mjs"));
298
- var ReactSurface = lazy(() => import("./react-surface-YWZZQF7H.mjs"));
299
- var SchemaDefs = lazy(() => import("./schema-defs-Z6FC4AHC.mjs"));
300
- var SchemaTools = lazy(() => import("./schema-tools-BNP4JTD7.mjs"));
301
- var SpaceSettings = lazy(() => import("./settings-4IMP5RYT.mjs"));
302
- var SpaceState = lazy(() => import("./state-QYZAB45H.mjs"));
303
- var SpacesReady = lazy(() => import("./spaces-ready-TOPG6IV4.mjs"));
304
-
305
299
  // src/components/CreateDialog/CreateObjectDialog.tsx
306
300
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/CreateDialog/CreateObjectDialog.tsx";
307
- var CREATE_OBJECT_DIALOG = `${SPACE_PLUGIN}/CreateObjectDialog`;
308
- var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, name, onCreateObject, shouldNavigate: _shouldNavigate }) => {
301
+ var CREATE_OBJECT_DIALOG = `${meta.id}/CreateObjectDialog`;
302
+ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, views, initialFormValues, onCreateObject, shouldNavigate: _shouldNavigate }) => {
309
303
  var _effect = _useSignals3();
310
304
  try {
311
- const closeRef = useRef(null);
312
305
  const manager = usePluginManager();
313
- const { t } = useTranslation3(SPACE_PLUGIN);
314
- const client = useClient2();
315
- const spaces = useSpaces();
306
+ const { t } = useTranslation3(meta.id);
316
307
  const { dispatch } = useIntentDispatcher2();
317
308
  const forms = useCapabilities(SpaceCapabilities.ObjectForm);
318
309
  const [target, setTarget] = useState2(initialTarget);
319
310
  const [typename, setTypename] = useState2(initialTypename);
311
+ const client = useClient2();
312
+ const spaces = useSpaces();
320
313
  const space = isSpace(target) ? target : getSpace(target);
321
- const queryCollections = useQuery2(space, Query.type(DataType.QueryCollection));
322
- const hiddenTypenames = queryCollections.map((collection) => collection.query.typename).filter(isNonNullable2);
314
+ const queryCollections = useQuery2(space, Query.type(Collection.QueryCollection));
315
+ const hiddenTypenames = queryCollections.map((collection) => getTypenameFromQuery(collection.query)).filter(isNonNullable2);
316
+ const closeRef = useRef(null);
323
317
  const resolve = useCallback3((typename2) => manager.context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename2)?.metadata ?? {}, [
324
318
  manager
325
319
  ]);
@@ -331,7 +325,7 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, na
331
325
  const space2 = isSpace(target) ? target : getSpace(target);
332
326
  invariant(space2, "Missing space", {
333
327
  F: __dxlog_file,
334
- L: 76,
328
+ L: 77,
335
329
  S: this,
336
330
  A: [
337
331
  "space",
@@ -341,7 +335,7 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, na
341
335
  const { object } = yield* dispatch(form.getIntent(data, {
342
336
  space: space2
343
337
  }));
344
- if (isLiveObject(object) && !Obj.instanceOf(DataType.StoredSchema, object)) {
338
+ if (isLiveObject(object) && !Obj2.instanceOf(StoredSchema, object)) {
345
339
  const hidden = form.hidden || hiddenTypenames.includes(Type2.getTypename(form.objectSchema));
346
340
  const addObjectIntent = createIntent2(SpaceAction.AddObject, {
347
341
  target,
@@ -350,7 +344,7 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, na
350
344
  });
351
345
  const shouldNavigate = _shouldNavigate ?? (() => true);
352
346
  if (shouldNavigate(object)) {
353
- yield* dispatch(pipe(addObjectIntent, chain(LayoutAction2.Open, {
347
+ yield* dispatch(Function2.pipe(addObjectIntent, chain(LayoutAction2.Open, {
354
348
  part: "main"
355
349
  })));
356
350
  } else {
@@ -376,24 +370,26 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, na
376
370
  }, /* @__PURE__ */ React3.createElement(Dialog.Title, null, t("create object dialog title", {
377
371
  object: t("typename label", {
378
372
  ns: typename,
379
- defaultValue: "Item"
373
+ defaultValue: views ? "View" : "Item"
380
374
  })
381
375
  })), /* @__PURE__ */ React3.createElement(Dialog.Close, {
382
376
  asChild: true
383
- }, /* @__PURE__ */ React3.createElement(Button2, {
377
+ }, /* @__PURE__ */ React3.createElement(IconButton, {
384
378
  ref: closeRef,
379
+ icon: "ph--x--regular",
380
+ size: 4,
381
+ label: "Close",
382
+ iconOnly: true,
385
383
  density: "fine",
386
384
  variant: "ghost",
387
385
  autoFocus: true
388
- }, /* @__PURE__ */ React3.createElement(Icon3, {
389
- icon: "ph--x--regular",
390
- size: 4
391
- })))), /* @__PURE__ */ React3.createElement(CreateObjectPanel, {
386
+ }))), /* @__PURE__ */ React3.createElement(CreateObjectPanel, {
392
387
  forms,
393
388
  spaces,
394
389
  target,
390
+ views,
395
391
  typename,
396
- name,
392
+ initialFormValues,
397
393
  defaultSpaceId: client.spaces.default.id,
398
394
  resolve,
399
395
  onTargetChange: setTarget,
@@ -408,13 +404,14 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, na
408
404
 
409
405
  // src/components/CreateDialog/CreateSpaceDialog.tsx
410
406
  import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
411
- import { Effect as Effect2 } from "effect";
407
+ import * as Effect2 from "effect/Effect";
412
408
  import React4, { useCallback as useCallback4, useRef as useRef2 } from "react";
413
- import { createIntent as createIntent3, LayoutAction as LayoutAction3, useIntentDispatcher as useIntentDispatcher3 } from "@dxos/app-framework";
414
- 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";
415
412
  import { Form as Form2 } from "@dxos/react-ui-form";
416
413
  import { cardDialogContent as cardDialogContent2, cardDialogHeader as cardDialogHeader2 } from "@dxos/react-ui-stack";
417
- var CREATE_SPACE_DIALOG = `${SPACE_PLUGIN}/CreateSpaceDialog`;
414
+ var CREATE_SPACE_DIALOG = `${meta.id}/CreateSpaceDialog`;
418
415
  var initialValues = {
419
416
  edgeReplication: true
420
417
  };
@@ -422,7 +419,7 @@ var CreateSpaceDialog = () => {
422
419
  var _effect = _useSignals4();
423
420
  try {
424
421
  const closeRef = useRef2(null);
425
- const { t } = useTranslation4(SPACE_PLUGIN);
422
+ const { t } = useTranslation4(meta.id);
426
423
  const { dispatch } = useIntentDispatcher3();
427
424
  const inputSurfaceLookup = useInputSurfaceLookup();
428
425
  const handleCreateSpace = useCallback4(async (data) => {
@@ -453,15 +450,16 @@ var CreateSpaceDialog = () => {
453
450
  className: cardDialogHeader2
454
451
  }, /* @__PURE__ */ React4.createElement(Dialog2.Title, null, t("create space dialog title")), /* @__PURE__ */ React4.createElement(Dialog2.Close, {
455
452
  asChild: true
456
- }, /* @__PURE__ */ React4.createElement(Button3, {
453
+ }, /* @__PURE__ */ React4.createElement(IconButton2, {
457
454
  ref: closeRef,
455
+ icon: "ph--x--regular",
456
+ size: 4,
457
+ label: "Close",
458
+ iconOnly: true,
458
459
  density: "fine",
459
460
  variant: "ghost",
460
461
  autoFocus: true
461
- }, /* @__PURE__ */ React4.createElement(Icon4, {
462
- icon: "ph--x--regular",
463
- size: 4
464
- })))), /* @__PURE__ */ React4.createElement("div", {
462
+ }))), /* @__PURE__ */ React4.createElement("div", {
465
463
  role: "none",
466
464
  className: "contents"
467
465
  }, /* @__PURE__ */ React4.createElement(Form2, {
@@ -483,37 +481,39 @@ var CreateSpaceDialog = () => {
483
481
  import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
484
482
  import React5 from "react";
485
483
  import { useTranslation as useTranslation5 } from "@dxos/react-ui";
486
- var CollectionSection = ({ collection }) => {
484
+ var CollectionSection = ({ role, subject }) => {
487
485
  var _effect = _useSignals5();
488
486
  try {
489
- const { t } = useTranslation5(SPACE_PLUGIN);
487
+ const { t } = useTranslation5(meta.id);
490
488
  return /* @__PURE__ */ React5.createElement("div", {
489
+ role,
491
490
  className: "min-bs-[3.5rem] grid grid-rows-subgrid grid-cols-subgrid items-center"
492
491
  }, /* @__PURE__ */ React5.createElement("span", {
493
492
  className: "truncate"
494
- }, collection.name ?? t("unnamed collection label")));
493
+ }, subject.name ?? t("unnamed collection label")));
495
494
  } finally {
496
495
  _effect.f();
497
496
  }
498
497
  };
499
498
 
500
- // src/components/JoinDialog.tsx
499
+ // src/components/JoinDialog/JoinDialog.tsx
501
500
  import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
502
501
  import React6, { useCallback as useCallback5 } from "react";
503
- import { createIntent as createIntent4, LayoutAction as LayoutAction4, 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";
504
504
  import { Trigger } from "@dxos/async";
505
505
  import { ObservabilityAction } from "@dxos/plugin-observability/types";
506
506
  import { useClient as useClient3 } from "@dxos/react-client";
507
507
  import { Dialog as Dialog3, useTranslation as useTranslation6 } from "@dxos/react-ui";
508
508
  import { JoinPanel } from "@dxos/shell/react";
509
- var JOIN_DIALOG = `${SPACE_PLUGIN}/JoinDialog`;
509
+ var JOIN_DIALOG = `${meta.id}/JoinDialog`;
510
510
  var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
511
511
  var _effect = _useSignals6();
512
512
  try {
513
513
  const { dispatchPromise: dispatch } = useIntentDispatcher4();
514
514
  const client = useClient3();
515
515
  const { graph } = useAppGraph();
516
- const { t } = useTranslation6(SPACE_PLUGIN);
516
+ const { t } = useTranslation6(meta.id);
517
517
  const handleDone = useCallback5(async (result) => {
518
518
  const spaceKey = result?.spaceKey;
519
519
  if (!spaceKey) {
@@ -523,18 +523,18 @@ var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
523
523
  dispatch(createIntent4(LayoutAction4.AddToast, {
524
524
  part: "toast",
525
525
  subject: {
526
- id: `${SPACE_PLUGIN}/join-success`,
526
+ id: `${meta.id}/join-success`,
527
527
  duration: 5e3,
528
528
  title: [
529
529
  "join success label",
530
530
  {
531
- ns: SPACE_PLUGIN
531
+ ns: meta.id
532
532
  }
533
533
  ],
534
534
  closeLabel: [
535
535
  "dismiss label",
536
536
  {
537
- ns: SPACE_PLUGIN
537
+ ns: meta.id
538
538
  }
539
539
  ]
540
540
  }
@@ -613,22 +613,24 @@ var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
613
613
  }
614
614
  };
615
615
 
616
- // src/components/MembersContainer.tsx
616
+ // src/components/MembersContainer/MembersContainer.tsx
617
617
  import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
618
618
  import React7, { useCallback as useCallback6, useMemo, useState as useState3 } from "react";
619
619
  import { QR } from "react-qr-rounded";
620
- 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";
621
623
  import { log } from "@dxos/log";
622
624
  import { useConfig } from "@dxos/react-client";
623
- import { fullyQualifiedId as fullyQualifiedId2, useSpaceInvitations } from "@dxos/react-client/echo";
625
+ import { useSpaceInvitations } from "@dxos/react-client/echo";
624
626
  import { Invitation, InvitationEncoder } from "@dxos/react-client/invitations";
625
- import { Button as Button4, Clipboard, Icon as Icon5, Input, useId, useTranslation as useTranslation7 } from "@dxos/react-ui";
626
- import { ControlPage, ControlSection, ControlFrame, ControlFrameItem, ControlItemInput } from "@dxos/react-ui-form";
627
+ import { Button as Button2, Clipboard, Icon as Icon3, Input, useId, useTranslation as useTranslation7 } from "@dxos/react-ui";
628
+ import { ControlFrame, ControlFrameItem, ControlItemInput, ControlPage, ControlSection } from "@dxos/react-ui-form";
627
629
  import { StackItem } from "@dxos/react-ui-stack";
628
- import { DataType as DataType2 } from "@dxos/schema";
630
+ import { Collection as Collection2 } from "@dxos/schema";
629
631
  import { AuthCode, BifurcatedAction, Centered, Emoji, InvitationList, SpaceMemberList, Viewport } from "@dxos/shell/react";
630
632
  import { hexToEmoji } from "@dxos/util";
631
- 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";
632
634
  var activeActionKey = "dxos:react-shell/space-manager/active-action";
633
635
  var handleInvitationEvent = (invitation, subscription) => {
634
636
  const invitationCode = InvitationEncoder.encode(invitation);
@@ -638,7 +640,7 @@ var handleInvitationEvent = (invitation, subscription) => {
638
640
  authCode: invitation.authCode
639
641
  }), void 0, {
640
642
  F: __dxlog_file2,
641
- L: 39,
643
+ L: 41,
642
644
  S: void 0,
643
645
  C: (f, a) => f(...a)
644
646
  });
@@ -648,7 +650,7 @@ var handleInvitationEvent = (invitation, subscription) => {
648
650
  var MembersContainer = ({ space, createInvitationUrl }) => {
649
651
  var _effect = _useSignals7();
650
652
  try {
651
- const { t } = useTranslation7(SPACE_PLUGIN);
653
+ const { t } = useTranslation7(meta.id);
652
654
  const config = useConfig();
653
655
  const { dispatchPromise: dispatch } = useIntentDispatcher5();
654
656
  const invitations = useSpaceInvitations(space.key);
@@ -660,7 +662,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
660
662
  setInternalActiveAction(nextAction);
661
663
  localStorage.setItem(activeActionKey, nextAction);
662
664
  };
663
- const target = space.properties[DataType2.Collection.typename]?.target?.objects[0]?.target;
665
+ const target = space.properties[Collection2.Collection.typename]?.target?.objects[0]?.target;
664
666
  const locked = space.properties[COMPOSER_SPACE_LOCK];
665
667
  const handleChangeLocked = useCallback6(() => {
666
668
  space.properties[COMPOSER_SPACE_LOCK] = !locked;
@@ -676,10 +678,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
676
678
  description: t("invite one description", {
677
679
  ns: "os"
678
680
  }),
679
- icon: () => /* @__PURE__ */ React7.createElement(Icon5, {
680
- icon: "ph--user-plus--regular",
681
- size: 5
682
- }),
681
+ icon: "ph--user-plus--regular",
683
682
  testId: "membersContainer.inviteOne",
684
683
  onClick: async () => {
685
684
  const { data: invitation } = await dispatch(createIntent5(SpaceAction.Share, {
@@ -687,7 +686,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
687
686
  type: Invitation.Type.INTERACTIVE,
688
687
  authMethod: Invitation.AuthMethod.SHARED_SECRET,
689
688
  multiUse: false,
690
- target: target && fullyQualifiedId2(target)
689
+ target: target && Obj3.getDXN(target).toString()
691
690
  }));
692
691
  if (invitation && config.values.runtime?.app?.env?.DX_ENVIRONMENT !== "production") {
693
692
  const subscription = invitation.subscribe((invitation2) => handleInvitationEvent(invitation2, subscription));
@@ -701,10 +700,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
701
700
  description: t("invite many description", {
702
701
  ns: "os"
703
702
  }),
704
- icon: () => /* @__PURE__ */ React7.createElement(Icon5, {
705
- icon: "ph--users-three--regular",
706
- size: 5
707
- }),
703
+ icon: "ph--users-three--regular",
708
704
  testId: "membersContainer.inviteMany",
709
705
  onClick: async () => {
710
706
  const { data: invitation } = await dispatch(createIntent5(SpaceAction.Share, {
@@ -712,7 +708,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
712
708
  type: Invitation.Type.DELEGATED,
713
709
  authMethod: Invitation.AuthMethod.KNOWN_PUBLIC_KEY,
714
710
  multiUse: true,
715
- target: target && fullyQualifiedId2(target)
711
+ target: target && Obj3.getDXN(target).toString()
716
712
  }));
717
713
  if (invitation && config.values.runtime?.app?.env?.DX_ENVIRONMENT !== "production") {
718
714
  const subscription = invitation.subscribe((invitation2) => handleInvitationEvent(invitation2, subscription));
@@ -732,7 +728,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
732
728
  setSelectedInvitation(null);
733
729
  };
734
730
  return /* @__PURE__ */ React7.createElement(Clipboard.Provider, null, /* @__PURE__ */ React7.createElement(StackItem.Content, {
735
- classNames: "block overflow-y-auto"
731
+ scrollable: true
736
732
  }, /* @__PURE__ */ React7.createElement(ControlPage, null, /* @__PURE__ */ React7.createElement(ControlSection, {
737
733
  title: t("members verbose label"),
738
734
  description: t("members description")
@@ -764,7 +760,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
764
760
  onChangeActiveAction: setActiveAction,
765
761
  "data-testid": "membersContainer.createInvitation"
766
762
  })))), /* @__PURE__ */ React7.createElement("div", {
767
- className: "justify-center gap-4 p-0 mbs-4 container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]"
763
+ className: "justify-center p-0 mbs-4 container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]"
768
764
  }, /* @__PURE__ */ React7.createElement(ControlItemInput, {
769
765
  title: t("space locked label"),
770
766
  description: t("space locked description")
@@ -815,7 +811,7 @@ var InvitationQR = ({ id, url, onCancel }) => {
815
811
  return /* @__PURE__ */ React7.createElement(React7.Fragment, null, /* @__PURE__ */ React7.createElement("p", {
816
812
  className: "text-description"
817
813
  }, t("qr code description", {
818
- ns: SPACE_PLUGIN
814
+ ns: meta.id
819
815
  })), /* @__PURE__ */ React7.createElement("div", {
820
816
  role: "group",
821
817
  className: "grid grid-cols-[1fr_min-content] mlb-2 gap-2"
@@ -836,7 +832,7 @@ var InvitationQR = ({ id, url, onCancel }) => {
836
832
  className: "sr-only"
837
833
  }, t("qr label")), /* @__PURE__ */ React7.createElement(Clipboard.Button, {
838
834
  value: url ?? "never"
839
- })), /* @__PURE__ */ React7.createElement(Button4, {
835
+ })), /* @__PURE__ */ React7.createElement(Button2, {
840
836
  variant: "ghost",
841
837
  onClick: onCancel
842
838
  }, t("cancel label")));
@@ -860,7 +856,7 @@ var InvitationAuthCode = ({ id, code, onCancel }) => {
860
856
  code,
861
857
  large: true,
862
858
  classNames: "mli-auto mlb-2 text-center grow"
863
- }), /* @__PURE__ */ React7.createElement(Button4, {
859
+ }), /* @__PURE__ */ React7.createElement(Button2, {
864
860
  variant: "ghost",
865
861
  onClick: onCancel
866
862
  }, t("cancel label")));
@@ -871,11 +867,11 @@ var InvitationAuthCode = ({ id, code, onCancel }) => {
871
867
  var InvitationComplete = ({ statusValue }) => {
872
868
  var _effect = _useSignals7();
873
869
  try {
874
- return statusValue > 0 ? /* @__PURE__ */ React7.createElement(Icon5, {
870
+ return statusValue > 0 ? /* @__PURE__ */ React7.createElement(Icon3, {
875
871
  icon: "ph--check--regular",
876
872
  size: 6,
877
873
  classNames: "m-1.5"
878
- }) : /* @__PURE__ */ React7.createElement(Icon5, {
874
+ }) : /* @__PURE__ */ React7.createElement(Icon3, {
879
875
  icon: "ph--x--regular",
880
876
  size: 6,
881
877
  classNames: "m-1.5"
@@ -890,11 +886,11 @@ import { useSignals as _useSignals8 } from "@preact-signals/safe-react/tracking"
890
886
  import React8 from "react";
891
887
  import { getSpace as getSpace2 } from "@dxos/client/echo";
892
888
  import { useClient as useClient4 } from "@dxos/react-client";
893
- 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";
894
890
  var MenuFooter = ({ object }) => {
895
891
  var _effect = _useSignals8();
896
892
  try {
897
- const { t } = useTranslation8(SPACE_PLUGIN);
893
+ const { t } = useTranslation8(meta.id);
898
894
  const client = useClient4();
899
895
  const space = getSpace2(object);
900
896
  const spaceName = space ? getSpaceDisplayName(space, {
@@ -906,7 +902,7 @@ var MenuFooter = ({ object }) => {
906
902
  className: "uppercase text-[.75em] tracking-wide font-medium mbs-px self-start"
907
903
  }, t("location label")), /* @__PURE__ */ React8.createElement("dd", {
908
904
  className: "line-clamp-3"
909
- }, /* @__PURE__ */ React8.createElement(Icon6, {
905
+ }, /* @__PURE__ */ React8.createElement(Icon4, {
910
906
  icon: "ph--planet--regular",
911
907
  classNames: "inline-block mie-1"
912
908
  }), toLocalizedString2(spaceName, t)))) : null;
@@ -915,166 +911,35 @@ var MenuFooter = ({ object }) => {
915
911
  }
916
912
  };
917
913
 
918
- // src/components/ObjectSettings/ObjectSettingsContainer.tsx
919
- import { useSignals as _useSignals10 } from "@preact-signals/safe-react/tracking";
920
- import React10, { useMemo as useMemo2 } from "react";
921
- import { Surface } from "@dxos/app-framework";
922
- import { Clipboard as Clipboard2 } from "@dxos/react-ui";
923
- import { StackItem as StackItem2 } from "@dxos/react-ui-stack";
924
-
925
- // src/components/ObjectSettings/BaseObjectSettings.tsx
914
+ // src/components/ObjectRenamePopover/ObjectRenamePopover.tsx
926
915
  import { useSignals as _useSignals9 } from "@preact-signals/safe-react/tracking";
927
- import React9, { useRef as useRef3 } from "react";
928
- import { Input as Input2, useTranslation as useTranslation9 } from "@dxos/react-ui";
929
- var BaseObjectSettings = ({ classNames, children, object }) => {
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 }) => {
930
925
  var _effect = _useSignals9();
931
926
  try {
932
927
  const { t } = useTranslation9(meta.id);
933
- const inputRef = useRef3(null);
934
- return /* @__PURE__ */ React9.createElement(React9.Fragment, null, /* @__PURE__ */ React9.createElement(Input2.Root, null, /* @__PURE__ */ React9.createElement(Input2.Label, null, t("name label")), /* @__PURE__ */ React9.createElement(Input2.TextInput, {
935
- ref: inputRef,
936
- placeholder: t("name placeholder"),
937
- // TODO(burdon): Use annotation to get the name field.
938
- value: object.name ?? "",
939
- onChange: (event) => {
940
- object.name = event.target.value;
941
- },
942
- onKeyDown: (event) => {
943
- if (event.key === "Enter") {
944
- inputRef.current?.blur();
945
- }
946
- }
947
- })), children);
948
- } finally {
949
- _effect.f();
950
- }
951
- };
952
-
953
- // src/components/ObjectSettings/ObjectSettingsContainer.tsx
954
- var ObjectSettingsContainer = ({ object, role }) => {
955
- var _effect = _useSignals10();
956
- try {
957
- const data = useMemo2(() => ({
958
- subject: object
959
- }), [
960
- object
961
- ]);
962
- return /* @__PURE__ */ React10.createElement(Clipboard2.Provider, null, /* @__PURE__ */ React10.createElement(StackItem2.Content, {
963
- toolbar: false
964
- }, /* @__PURE__ */ React10.createElement("div", {
965
- role: "none",
966
- className: "overflow-y-auto pli-cardSpacingInline plb-cardSpacingBlock"
967
- }, /* @__PURE__ */ React10.createElement(BaseObjectSettings, {
968
- object
969
- }, /* @__PURE__ */ React10.createElement(Surface, {
970
- role: "base-object-settings",
971
- data
972
- })), /* @__PURE__ */ React10.createElement(Surface, {
973
- role: "object-settings",
974
- data
975
- }))));
976
- } finally {
977
- _effect.f();
978
- }
979
- };
980
-
981
- // src/components/PersistenceStatus.tsx
982
- import { useSignals as _useSignals11 } from "@preact-signals/safe-react/tracking";
983
- import React11, { useEffect as useEffect2, useState as useState4 } from "react";
984
- import { debounce } from "@dxos/async";
985
- import { Icon as Icon7, Tooltip, useTranslation as useTranslation10 } from "@dxos/react-ui";
986
- import { mx, staticPlaceholderText, warningText } from "@dxos/react-ui-theme";
987
- var PersistenceStatus = ({ db }) => {
988
- var _effect = _useSignals11();
989
- try {
990
- const { t } = useTranslation10(SPACE_PLUGIN);
991
- const [displayMessage, setDisplayMessage] = useState4(false);
992
- const [status, naturalSetStatus] = useState4(0);
993
- const [prevStatus, setPrevStatus] = useState4(0);
994
- const _setStatus = debounce(naturalSetStatus, 500);
995
- useEffect2(() => {
996
- setPrevStatus(status);
997
- if (prevStatus !== status && status === 0) {
998
- setDisplayMessage(true);
999
- const timeout = setTimeout(() => setDisplayMessage(false), 5e3);
1000
- return () => clearTimeout(timeout);
1001
- }
1002
- }, [
1003
- status
1004
- ]);
1005
- switch (status) {
1006
- case 2:
1007
- return /* @__PURE__ */ React11.createElement("div", {
1008
- className: "flex items-center"
1009
- }, /* @__PURE__ */ React11.createElement(Icon7, {
1010
- icon: "ph--warning--regular",
1011
- size: 4,
1012
- classNames: "me-1"
1013
- }), /* @__PURE__ */ React11.createElement("span", {
1014
- className: mx("text-sm", warningText)
1015
- }, t("persistence error label")));
1016
- case 1:
1017
- return /* @__PURE__ */ React11.createElement("div", {
1018
- className: "flex items-center"
1019
- }, /* @__PURE__ */ React11.createElement(Icon7, {
1020
- icon: "ph--arrows-counter-clockwise--regular",
1021
- size: 4,
1022
- classNames: "me-1"
1023
- }), /* @__PURE__ */ React11.createElement("span", {
1024
- className: mx("text-sm", staticPlaceholderText)
1025
- }, t("persistence pending label")));
1026
- case 0:
1027
- default:
1028
- return /* @__PURE__ */ React11.createElement(Tooltip.Trigger, {
1029
- delayDuration: 400,
1030
- role: "status",
1031
- content: t("persisted locally message"),
1032
- className: "flex items-center"
1033
- }, /* @__PURE__ */ React11.createElement(Icon7, {
1034
- icon: "ph--check-circle--regular",
1035
- size: 4,
1036
- classNames: "me-1"
1037
- }), displayMessage && /* @__PURE__ */ React11.createElement("span", {
1038
- className: mx("text-sm", staticPlaceholderText)
1039
- }, t("persisted locally label")));
1040
- }
1041
- } finally {
1042
- _effect.f();
1043
- }
1044
- };
1045
-
1046
- // src/components/PopoverRenameObject.tsx
1047
- import { useSignals as _useSignals12 } from "@preact-signals/safe-react/tracking";
1048
- import React12, { useCallback as useCallback7, useRef as useRef4, useState as useState5 } from "react";
1049
- import { createIntent as createIntent6, LayoutAction as LayoutAction5, useIntentDispatcher as useIntentDispatcher6 } from "@dxos/app-framework";
1050
- import { log as log2 } from "@dxos/log";
1051
- import { Button as Button5, Input as Input3, useTranslation as useTranslation11 } from "@dxos/react-ui";
1052
- var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx";
1053
- var POPOVER_RENAME_OBJECT = `${SPACE_PLUGIN}/PopoverRenameObject`;
1054
- var PopoverRenameObject = ({ object: obj }) => {
1055
- var _effect = _useSignals12();
1056
- try {
1057
- const { t } = useTranslation11(SPACE_PLUGIN);
1058
- const doneButton = useRef4(null);
1059
- const object = obj;
1060
- const [name, setName] = useState5(object.name || object.title || "");
928
+ const doneButton = useRef3(null);
929
+ const [name, setName] = useState4(Obj4.getLabel(object));
1061
930
  const { dispatchPromise: dispatch } = useIntentDispatcher6();
1062
931
  const handleDone = useCallback7(() => {
1063
932
  try {
1064
- object.name = name;
933
+ name && Obj4.setLabel(object, name);
1065
934
  } catch (err) {
1066
- try {
1067
- object.title = name;
1068
- } catch {
1069
- log2.error("Failed to rename object", {
1070
- err
1071
- }, {
1072
- F: __dxlog_file3,
1073
- L: 32,
1074
- S: void 0,
1075
- C: (f, a) => f(...a)
1076
- });
1077
- }
935
+ log2.error("Failed to rename object", {
936
+ err
937
+ }, {
938
+ F: __dxlog_file3,
939
+ L: 27,
940
+ S: void 0,
941
+ C: (f, a) => f(...a)
942
+ });
1078
943
  }
1079
944
  void dispatch(createIntent6(LayoutAction5.UpdatePopover, {
1080
945
  part: "popover",
@@ -1088,21 +953,21 @@ var PopoverRenameObject = ({ object: obj }) => {
1088
953
  object,
1089
954
  name
1090
955
  ]);
1091
- return /* @__PURE__ */ React12.createElement("div", {
956
+ return /* @__PURE__ */ React9.createElement("div", {
1092
957
  role: "none",
1093
958
  className: "p-2 flex gap-2"
1094
- }, /* @__PURE__ */ React12.createElement("div", {
959
+ }, /* @__PURE__ */ React9.createElement("div", {
1095
960
  role: "none",
1096
961
  className: "flex-1"
1097
- }, /* @__PURE__ */ React12.createElement(Input3.Root, null, /* @__PURE__ */ React12.createElement(Input3.Label, {
962
+ }, /* @__PURE__ */ React9.createElement(Input2.Root, null, /* @__PURE__ */ React9.createElement(Input2.Label, {
1098
963
  srOnly: true
1099
- }, t("object name label")), /* @__PURE__ */ React12.createElement(Input3.TextInput, {
964
+ }, t("object name label")), /* @__PURE__ */ React9.createElement(Input2.TextInput, {
1100
965
  placeholder: t("object placeholder"),
1101
966
  value: name,
1102
967
  "data-testid": "spacePlugin.renameObject.input",
1103
- onChange: ({ target: { value } }) => setName(value),
968
+ onChange: ({ target: { value: value2 } }) => setName(value2),
1104
969
  onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
1105
- }))), /* @__PURE__ */ React12.createElement(Button5, {
970
+ }))), /* @__PURE__ */ React9.createElement(Button3, {
1106
971
  ref: doneButton,
1107
972
  classNames: "self-stretch",
1108
973
  onClick: handleDone
@@ -1114,18 +979,19 @@ var PopoverRenameObject = ({ object: obj }) => {
1114
979
  }
1115
980
  };
1116
981
 
1117
- // src/components/PopoverRenameSpace.tsx
1118
- import { useSignals as _useSignals13 } from "@preact-signals/safe-react/tracking";
1119
- import React13, { useCallback as useCallback8, useRef as useRef5, useState as useState6 } from "react";
1120
- import { createIntent as createIntent7, LayoutAction as LayoutAction6, useIntentDispatcher as useIntentDispatcher7 } from "@dxos/app-framework";
1121
- import { Button as Button6, Input as Input4, Popover, useTranslation as useTranslation12 } from "@dxos/react-ui";
1122
- var POPOVER_RENAME_SPACE = `${SPACE_PLUGIN}/PopoverRenameSpace`;
1123
- var PopoverRenameSpace = ({ space }) => {
1124
- var _effect = _useSignals13();
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();
1125
991
  try {
1126
- const { t } = useTranslation12(SPACE_PLUGIN);
1127
- const doneButton = useRef5(null);
1128
- const [name, setName] = useState6(space.properties.name ?? "");
992
+ const { t } = useTranslation10(meta.id);
993
+ const doneButton = useRef4(null);
994
+ const [name, setName] = useState5(space.properties.name ?? "");
1129
995
  const { dispatchPromise: dispatch } = useIntentDispatcher7();
1130
996
  const handleDone = useCallback8(() => {
1131
997
  space.properties.name = name;
@@ -1141,24 +1007,24 @@ var PopoverRenameSpace = ({ space }) => {
1141
1007
  space,
1142
1008
  name
1143
1009
  ]);
1144
- return /* @__PURE__ */ React13.createElement("div", {
1010
+ return /* @__PURE__ */ React10.createElement("div", {
1145
1011
  role: "none",
1146
1012
  className: "p-2 flex gap-2"
1147
- }, /* @__PURE__ */ React13.createElement("div", {
1013
+ }, /* @__PURE__ */ React10.createElement("div", {
1148
1014
  role: "none",
1149
1015
  className: "flex-1"
1150
- }, /* @__PURE__ */ React13.createElement(Input4.Root, null, /* @__PURE__ */ React13.createElement(Input4.Label, {
1016
+ }, /* @__PURE__ */ React10.createElement(Input3.Root, null, /* @__PURE__ */ React10.createElement(Input3.Label, {
1151
1017
  srOnly: true
1152
- }, t("space name label")), /* @__PURE__ */ React13.createElement(Input4.TextInput, {
1018
+ }, t("space name label")), /* @__PURE__ */ React10.createElement(Input3.TextInput, {
1153
1019
  defaultValue: space.properties.name ?? "",
1154
1020
  placeholder: t("unnamed space label"),
1155
- onChange: ({ target: { value } }) => setName(value),
1021
+ onChange: ({ target: { value: value2 } }) => setName(value2),
1156
1022
  // TODO(wittjosiah): Ideally this should access the popover context to close the popover.
1157
1023
  // Currently this is not possible because Radix does not expose the popover context.
1158
1024
  onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
1159
- }))), /* @__PURE__ */ React13.createElement(Popover.Close, {
1025
+ }))), /* @__PURE__ */ React10.createElement(Popover.Close, {
1160
1026
  asChild: true
1161
- }, /* @__PURE__ */ React13.createElement(Button6, {
1027
+ }, /* @__PURE__ */ React10.createElement(Button4, {
1162
1028
  ref: doneButton,
1163
1029
  classNames: "self-stretch",
1164
1030
  onClick: handleDone
@@ -1171,57 +1037,59 @@ var PopoverRenameSpace = ({ space }) => {
1171
1037
  };
1172
1038
 
1173
1039
  // src/components/SchemaContainer.tsx
1174
- import { useSignals as _useSignals14 } from "@preact-signals/safe-react/tracking";
1175
- import React14, { useState as useState7, useEffect as useEffect3 } from "react";
1176
- import { useTranslation as useTranslation13 } from "@dxos/react-ui";
1177
- import { controlItemClasses, ControlPage as ControlPage2, ControlSection as ControlSection2 } from "@dxos/react-ui-form";
1178
- import { StackItem as StackItem3 } from "@dxos/react-ui-stack";
1179
- var useQuerySpaceSchemas = (space) => {
1180
- const [schemas, setSchemas] = useState7([]);
1181
- useEffect3(() => {
1182
- const query = space.db.schemaRegistry.query();
1183
- const initialResults = query.runSync();
1184
- setSchemas(initialResults);
1185
- const unsubscribe = query.subscribe(() => setSchemas(query.results));
1186
- return () => unsubscribe();
1187
- }, [
1188
- space
1189
- ]);
1190
- return schemas;
1191
- };
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";
1043
+ import { ControlPage as ControlPage2, ControlSection as ControlSection2, controlItemClasses } from "@dxos/react-ui-form";
1044
+ import { StackItem as StackItem2 } from "@dxos/react-ui-stack";
1192
1045
  var SchemaContainer = ({ space }) => {
1193
- var _effect = _useSignals14();
1046
+ var _effect = _useSignals11();
1194
1047
  try {
1195
- const { t } = useTranslation13(SPACE_PLUGIN);
1048
+ const { t } = useTranslation11(meta.id);
1196
1049
  const schemas = useQuerySpaceSchemas(space);
1197
- return /* @__PURE__ */ React14.createElement(StackItem3.Content, {
1198
- classNames: "block overflow-y-auto"
1199
- }, /* @__PURE__ */ React14.createElement(ControlPage2, null, /* @__PURE__ */ React14.createElement(ControlSection2, {
1050
+ return /* @__PURE__ */ React11.createElement(StackItem2.Content, {
1051
+ scrollable: true
1052
+ }, /* @__PURE__ */ React11.createElement(ControlPage2, null, /* @__PURE__ */ React11.createElement(ControlSection2, {
1200
1053
  title: t("schema verbose label"),
1201
1054
  description: t("schema description")
1202
- }, /* @__PURE__ */ React14.createElement("div", {
1055
+ }, /* @__PURE__ */ React11.createElement("div", {
1203
1056
  role: "none",
1204
1057
  className: controlItemClasses
1205
- }, schemas.length === 0 && /* @__PURE__ */ React14.createElement("div", {
1058
+ }, schemas.length === 0 && /* @__PURE__ */ React11.createElement("div", {
1206
1059
  className: "text-center plb-4"
1207
- }, t("no schemas found message")), schemas.map((schema) => /* @__PURE__ */ React14.createElement("div", {
1060
+ }, t("no schemas found message")), schemas.map((schema) => /* @__PURE__ */ React11.createElement("div", {
1061
+ role: "none",
1208
1062
  key: schema.id
1209
- }, /* @__PURE__ */ React14.createElement("div", null, schema.typename)))))));
1063
+ }, schema.typename))))));
1210
1064
  } finally {
1211
1065
  _effect.f();
1212
1066
  }
1213
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
+ };
1214
1081
 
1215
- // src/components/SpacePresence.tsx
1216
- import { useSignals as _useSignals15 } from "@preact-signals/safe-react/tracking";
1217
- import { Option } from "effect";
1218
- import React15, { forwardRef, useCallback as useCallback9, useEffect as useEffect4, useState as useState8 } from "react";
1219
- import { useAppGraph as useAppGraph2, useCapability } from "@dxos/app-framework";
1082
+ // src/components/SpacePresence/SpacePresence.tsx
1083
+ import { useSignals as _useSignals12 } from "@preact-signals/safe-react/tracking";
1084
+ import * as Option2 from "effect/Option";
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";
1220
1087
  import { generateName } from "@dxos/display-name";
1088
+ import { Obj as Obj5 } from "@dxos/echo";
1221
1089
  import { PublicKey, useClient as useClient5 } from "@dxos/react-client";
1222
- import { getSpace as getSpace3, useMembers, fullyQualifiedId as fullyQualifiedId3 } from "@dxos/react-client/echo";
1090
+ import { getSpace as getSpace3, useMembers } from "@dxos/react-client/echo";
1223
1091
  import { useIdentity } from "@dxos/react-client/halo";
1224
- import { Avatar, Tooltip as Tooltip2, Popover as Popover2, useTranslation as useTranslation14, List, ListItem, useDefaultValue } from "@dxos/react-ui";
1092
+ import { Avatar, List, ListItem, Popover as Popover2, Tooltip, useDefaultValue as useDefaultValue2, useTranslation as useTranslation12 } from "@dxos/react-ui";
1225
1093
  import { AttentionGlyph, useAttended, useAttention } from "@dxos/react-ui-attention";
1226
1094
  import { ComplexMap, keyToFallback } from "@dxos/util";
1227
1095
  var REFRESH_INTERVAL = 5e3;
@@ -1229,15 +1097,15 @@ var ACTIVITY_DURATION = 3e4;
1229
1097
  var noViewers = new ComplexMap(PublicKey.hash);
1230
1098
  var getName = (identity) => identity.profile?.displayName ?? generateName(identity.identityKey.toHex());
1231
1099
  var SpacePresence = ({ object, spaceKey }) => {
1232
- var _effect = _useSignals15();
1100
+ var _effect = _useSignals12();
1233
1101
  try {
1234
1102
  const spaceState = useCapability(SpaceCapabilities.MutableState);
1235
1103
  const client = useClient5();
1236
1104
  const identity = useIdentity();
1237
1105
  const space = spaceKey ? client.spaces.get(spaceKey) : getSpace3(object);
1238
1106
  const spaceMembers = useMembers(space?.key);
1239
- const [_moment, setMoment] = useState8(Date.now());
1240
- useEffect4(() => {
1107
+ const [_moment, setMoment] = useState7(Date.now());
1108
+ useEffect3(() => {
1241
1109
  const interval = setInterval(() => setMoment(Date.now()), REFRESH_INTERVAL);
1242
1110
  return () => clearInterval(interval);
1243
1111
  }, []);
@@ -1248,7 +1116,7 @@ var SpacePresence = ({ object, spaceKey }) => {
1248
1116
  if (!identity || !spaceState || !space) {
1249
1117
  return null;
1250
1118
  }
1251
- const currentObjectViewers = spaceState.viewersByObject[fullyQualifiedId3(object)] ?? noViewers;
1119
+ const currentObjectViewers = spaceState.viewersByObject[Obj5.getDXN(object).toString()] ?? noViewers;
1252
1120
  const membersForObject = spaceMembers.filter((member) => memberOnline(member) && memberIsNotSelf(member)).filter((member) => currentObjectViewers.has(member.identity.identityKey)).map((member) => {
1253
1121
  const objectView = currentObjectViewers.get(member.identity.identityKey);
1254
1122
  const lastSeen = objectView?.lastSeen ?? -Infinity;
@@ -1259,7 +1127,7 @@ var SpacePresence = ({ object, spaceKey }) => {
1259
1127
  lastSeen
1260
1128
  };
1261
1129
  }).toSorted((a, b) => a.lastSeen - b.lastSeen);
1262
- return /* @__PURE__ */ React15.createElement(FullPresence, {
1130
+ return /* @__PURE__ */ React12.createElement(FullPresence, {
1263
1131
  members: membersForObject
1264
1132
  });
1265
1133
  } finally {
@@ -1267,46 +1135,46 @@ var SpacePresence = ({ object, spaceKey }) => {
1267
1135
  }
1268
1136
  };
1269
1137
  var FullPresence = (props) => {
1270
- var _effect = _useSignals15();
1138
+ var _effect = _useSignals12();
1271
1139
  try {
1272
1140
  const { size = 9, onMemberClick } = props;
1273
- const members = useDefaultValue(props.members, () => []);
1141
+ const members = useDefaultValue2(props.members, () => []);
1274
1142
  if (members.length === 0) {
1275
1143
  return null;
1276
1144
  }
1277
- return /* @__PURE__ */ React15.createElement("div", {
1145
+ return /* @__PURE__ */ React12.createElement("div", {
1278
1146
  className: "dx-avatar-group",
1279
1147
  "data-testid": "spacePlugin.presence"
1280
- }, members.slice(0, 3).map((member, i) => /* @__PURE__ */ React15.createElement(Tooltip2.Trigger, {
1148
+ }, members.slice(0, 3).map((member, i) => /* @__PURE__ */ React12.createElement(Tooltip.Trigger, {
1281
1149
  key: member.identity.identityKey.toHex(),
1282
1150
  side: "bottom",
1283
1151
  content: getName(member.identity),
1284
1152
  className: "grid focus:outline-none"
1285
- }, /* @__PURE__ */ React15.createElement(PresenceAvatar, {
1153
+ }, /* @__PURE__ */ React12.createElement(PresenceAvatar, {
1286
1154
  identity: member.identity,
1287
1155
  match: member.currentlyAttended,
1288
1156
  index: members.length - i,
1289
1157
  onClick: () => onMemberClick?.(member),
1290
1158
  size
1291
- }))), members.length > 3 && /* @__PURE__ */ React15.createElement(Popover2.Root, null, /* @__PURE__ */ React15.createElement(Popover2.Trigger, {
1159
+ }))), members.length > 3 && /* @__PURE__ */ React12.createElement(Popover2.Root, null, /* @__PURE__ */ React12.createElement(Popover2.Trigger, {
1292
1160
  className: "grid focus:outline-none"
1293
- }, /* @__PURE__ */ React15.createElement(Avatar.Root, null, /* @__PURE__ */ React15.createElement(Avatar.Content, {
1161
+ }, /* @__PURE__ */ React12.createElement(Avatar.Root, null, /* @__PURE__ */ React12.createElement(Avatar.Content, {
1294
1162
  status: "inactive",
1295
1163
  style: {
1296
1164
  zIndex: members.length - 4
1297
1165
  },
1298
1166
  fallback: `+${members.length - 3}`,
1299
1167
  size
1300
- }))), /* @__PURE__ */ React15.createElement(Popover2.Portal, null, /* @__PURE__ */ React15.createElement(Popover2.Content, {
1168
+ }))), /* @__PURE__ */ React12.createElement(Popover2.Portal, null, /* @__PURE__ */ React12.createElement(Popover2.Content, {
1301
1169
  side: "bottom"
1302
- }, /* @__PURE__ */ React15.createElement(Popover2.Arrow, null), /* @__PURE__ */ React15.createElement(Popover2.Viewport, {
1170
+ }, /* @__PURE__ */ React12.createElement(Popover2.Arrow, null), /* @__PURE__ */ React12.createElement(Popover2.Viewport, {
1303
1171
  classNames: "max-bs-56"
1304
- }, /* @__PURE__ */ React15.createElement(List, null, members.map((member) => /* @__PURE__ */ React15.createElement(ListItem.Root, {
1172
+ }, /* @__PURE__ */ React12.createElement(List, null, members.map((member) => /* @__PURE__ */ React12.createElement(ListItem.Root, {
1305
1173
  key: member.identity.identityKey.toHex(),
1306
1174
  classNames: "flex gap-2 items-center cursor-pointer mbe-2",
1307
1175
  onClick: () => onMemberClick?.(member),
1308
1176
  "data-testid": "identity-list-item"
1309
- }, /* @__PURE__ */ React15.createElement(PresenceAvatar, {
1177
+ }, /* @__PURE__ */ React12.createElement(PresenceAvatar, {
1310
1178
  identity: member.identity,
1311
1179
  size,
1312
1180
  showName: true,
@@ -1316,12 +1184,12 @@ var FullPresence = (props) => {
1316
1184
  _effect.f();
1317
1185
  }
1318
1186
  };
1319
- var PresenceAvatar = /* @__PURE__ */ forwardRef(({ identity, showName, match, index, onClick, size }, forwardedRef) => {
1320
- var _effect = _useSignals15();
1187
+ var PresenceAvatar = /* @__PURE__ */ forwardRef(({ identity, showName, match: match2, index, onClick, size }, forwardedRef) => {
1188
+ var _effect = _useSignals12();
1321
1189
  try {
1322
- const status = match ? "current" : "active";
1190
+ const status = match2 ? "current" : "active";
1323
1191
  const fallbackValue = keyToFallback(identity.identityKey);
1324
- return /* @__PURE__ */ React15.createElement(Avatar.Root, null, /* @__PURE__ */ React15.createElement(Avatar.Content, {
1192
+ return /* @__PURE__ */ React12.createElement(Avatar.Root, null, /* @__PURE__ */ React12.createElement(Avatar.Content, {
1325
1193
  status,
1326
1194
  hue: identity.profile?.data?.hue || fallbackValue.hue,
1327
1195
  "data-testid": "spacePlugin.presence.member",
@@ -1335,7 +1203,7 @@ var PresenceAvatar = /* @__PURE__ */ forwardRef(({ identity, showName, match, in
1335
1203
  onClick,
1336
1204
  fallback: identity.profile?.data?.emoji || fallbackValue.emoji,
1337
1205
  ref: forwardedRef
1338
- }), /* @__PURE__ */ React15.createElement(Avatar.Label, {
1206
+ }), /* @__PURE__ */ React12.createElement(Avatar.Label, {
1339
1207
  classNames: showName ? "text-sm truncate pli-2" : "sr-only"
1340
1208
  }, getName(identity)));
1341
1209
  } finally {
@@ -1343,7 +1211,7 @@ var PresenceAvatar = /* @__PURE__ */ forwardRef(({ identity, showName, match, in
1343
1211
  }
1344
1212
  });
1345
1213
  var SmallPresenceLive = ({ id, open, viewers }) => {
1346
- var _effect = _useSignals15();
1214
+ var _effect = _useSignals12();
1347
1215
  try {
1348
1216
  const { hasAttention, isAncestor, isRelated } = useAttention(id);
1349
1217
  const isAttended = hasAttention || isAncestor || isRelated;
@@ -1351,13 +1219,13 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
1351
1219
  const attended = useAttended();
1352
1220
  const startOfAttention = attended.at(-1);
1353
1221
  const path = usePath(graph, startOfAttention);
1354
- const containsAttended = !open && !isAttended && id && Option.isSome(path) ? path.value.includes(id) : false;
1222
+ const containsAttended = !open && !isAttended && id && Option2.isSome(path) ? path.value.includes(id) : false;
1355
1223
  const getActiveViewers = (viewers2) => {
1356
1224
  const moment = Date.now();
1357
1225
  return Array.from(viewers2.values()).filter((viewer) => moment - viewer.lastSeen < ACTIVITY_DURATION);
1358
1226
  };
1359
- const [activeViewers, setActiveViewers] = useState8(viewers ? getActiveViewers(viewers) : []);
1360
- useEffect4(() => {
1227
+ const [activeViewers, setActiveViewers] = useState7(viewers ? getActiveViewers(viewers) : []);
1228
+ useEffect3(() => {
1361
1229
  if (viewers) {
1362
1230
  setActiveViewers(getActiveViewers(viewers));
1363
1231
  const interval = setInterval(() => {
@@ -1368,7 +1236,7 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
1368
1236
  }, [
1369
1237
  viewers
1370
1238
  ]);
1371
- return /* @__PURE__ */ React15.createElement(SmallPresence, {
1239
+ return /* @__PURE__ */ React12.createElement(SmallPresence, {
1372
1240
  count: activeViewers.length,
1373
1241
  attended: isAttended,
1374
1242
  containsAttended
@@ -1378,16 +1246,16 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
1378
1246
  }
1379
1247
  };
1380
1248
  var SmallPresence = ({ count = 0, attended, containsAttended }) => {
1381
- var _effect = _useSignals15();
1249
+ var _effect = _useSignals12();
1382
1250
  try {
1383
- const { t } = useTranslation14(SPACE_PLUGIN);
1384
- return /* @__PURE__ */ React15.createElement(Tooltip2.Trigger, {
1251
+ const { t } = useTranslation12(meta.id);
1252
+ return /* @__PURE__ */ React12.createElement(Tooltip.Trigger, {
1385
1253
  asChild: true,
1386
1254
  content: t("presence label", {
1387
1255
  count
1388
1256
  }),
1389
1257
  side: "bottom"
1390
- }, /* @__PURE__ */ React15.createElement(AttentionGlyph, {
1258
+ }, /* @__PURE__ */ React12.createElement(AttentionGlyph, {
1391
1259
  attended,
1392
1260
  containsAttended,
1393
1261
  presence: count > 1 ? "many" : count === 1 ? "one" : "none",
@@ -1399,45 +1267,44 @@ var SmallPresence = ({ count = 0, attended, containsAttended }) => {
1399
1267
  };
1400
1268
 
1401
1269
  // src/components/SpacePluginSettings.tsx
1402
- import { useSignals as _useSignals16 } from "@preact-signals/safe-react/tracking";
1403
- import React16 from "react";
1404
- 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";
1405
1274
  import { useClient as useClient6 } from "@dxos/react-client";
1406
1275
  import { useSpaces as useSpaces2 } from "@dxos/react-client/echo";
1407
- import { Input as Input5, toLocalizedString as toLocalizedString3, useTranslation as useTranslation15, List as List2, ListItem as ListItem2, IconButton } from "@dxos/react-ui";
1408
- import { controlItemClasses as controlItemClasses2, ControlPage as ControlPage3, ControlSection as ControlSection3, DeprecatedFormInput } from "@dxos/react-ui-form";
1276
+ import { IconButton as IconButton3, Input as Input4, List as List2, ListItem as ListItem2, toLocalizedString as toLocalizedString3, useTranslation as useTranslation13 } from "@dxos/react-ui";
1277
+ import { ControlGroup, ControlItemInput as ControlItemInput2, ControlPage as ControlPage3, ControlSection as ControlSection3, controlItemClasses as controlItemClasses2 } from "@dxos/react-ui-form";
1409
1278
  var SpacePluginSettings = ({ settings }) => {
1410
- var _effect = _useSignals16();
1279
+ var _effect = _useSignals13();
1411
1280
  try {
1412
- const { t } = useTranslation15(SPACE_PLUGIN);
1281
+ const { t } = useTranslation13(meta.id);
1413
1282
  const client = useClient6();
1414
1283
  const spaces = useSpaces2({
1415
1284
  all: settings.showHidden
1416
1285
  });
1417
1286
  const { dispatchPromise: dispatch } = useIntentDispatcher8();
1418
- return /* @__PURE__ */ React16.createElement(ControlPage3, null, /* @__PURE__ */ React16.createElement(ControlSection3, {
1287
+ return /* @__PURE__ */ React13.createElement(ControlPage3, null, /* @__PURE__ */ React13.createElement(ControlSection3, {
1419
1288
  title: t("space settings label"),
1420
1289
  description: t("space settings description")
1421
- }, /* @__PURE__ */ React16.createElement("div", {
1422
- className: "pli-trimMd container-max-width"
1423
- }, /* @__PURE__ */ React16.createElement(DeprecatedFormInput, {
1424
- label: t("show hidden spaces label")
1425
- }, /* @__PURE__ */ React16.createElement(Input5.Switch, {
1290
+ }, /* @__PURE__ */ React13.createElement(ControlGroup, null, /* @__PURE__ */ React13.createElement(ControlItemInput2, {
1291
+ title: t("show hidden spaces label")
1292
+ }, /* @__PURE__ */ React13.createElement(Input4.Switch, {
1426
1293
  checked: settings.showHidden,
1427
1294
  onCheckedChange: (checked) => settings.showHidden = !!checked
1428
- }))), /* @__PURE__ */ React16.createElement(List2, {
1295
+ }))), /* @__PURE__ */ React13.createElement(List2, {
1429
1296
  classNames: [
1430
1297
  controlItemClasses2,
1431
1298
  "flex flex-col gap-trimSm"
1432
1299
  ]
1433
- }, spaces.map((space) => /* @__PURE__ */ React16.createElement(ListItem2.Root, {
1300
+ }, spaces.map((space) => /* @__PURE__ */ React13.createElement(ListItem2.Root, {
1434
1301
  key: space.id,
1435
1302
  classNames: "is-full items-center"
1436
- }, /* @__PURE__ */ React16.createElement(ListItem2.Heading, {
1303
+ }, /* @__PURE__ */ React13.createElement(ListItem2.Heading, {
1437
1304
  classNames: "grow truncate !min-bs-0"
1438
1305
  }, toLocalizedString3(getSpaceDisplayName(space, {
1439
1306
  personal: space === client.spaces.default
1440
- }), t)), /* @__PURE__ */ React16.createElement(IconButton, {
1307
+ }), t)), /* @__PURE__ */ React13.createElement(IconButton3, {
1441
1308
  icon: "ph--faders--regular",
1442
1309
  onClick: () => dispatch(createIntent8(SpaceAction.OpenSettings, {
1443
1310
  space
@@ -1450,38 +1317,40 @@ var SpacePluginSettings = ({ settings }) => {
1450
1317
  };
1451
1318
 
1452
1319
  // src/components/SpaceSettings/SpaceSettingsContainer.tsx
1453
- import { useSignals as _useSignals17 } from "@preact-signals/safe-react/tracking";
1454
- import { pipe as pipe2, Schema } from "effect";
1455
- import React17, { useCallback as useCallback10, useMemo as useMemo3, useState as useState9 } from "react";
1456
- import { chain as chain2, createIntent as createIntent9, LayoutAction as LayoutAction7, useIntentDispatcher as useIntentDispatcher9 } from "@dxos/app-framework";
1320
+ import { useSignals as _useSignals14 } from "@preact-signals/safe-react/tracking";
1321
+ import * as Function3 from "effect/Function";
1322
+ import * as Schema from "effect/Schema";
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";
1457
1326
  import { log as log3 } from "@dxos/log";
1458
1327
  import { EdgeReplicationSetting } from "@dxos/protocols/proto/dxos/echo/metadata";
1459
1328
  import { useClient as useClient7 } from "@dxos/react-client";
1460
- import { SpaceState as SpaceState2 } from "@dxos/react-client/echo";
1461
- import { Button as Button7, Input as Input6, useMulticastObservable, useTranslation as useTranslation16 } from "@dxos/react-ui";
1462
- import { Form as Form3, ControlItem, ControlItemInput as ControlItemInput2, ControlSection as ControlSection4, ControlPage as ControlPage4 } from "@dxos/react-ui-form";
1329
+ import { SpaceState } from "@dxos/react-client/echo";
1330
+ import { Button as Button5, Input as Input5, useFileDownload, useMulticastObservable, useTranslation as useTranslation14 } from "@dxos/react-ui";
1331
+ import { ControlItem, ControlItemInput as ControlItemInput3, ControlPage as ControlPage4, ControlSection as ControlSection4, Form as Form3 } from "@dxos/react-ui-form";
1463
1332
  import { HuePicker, IconPicker } from "@dxos/react-ui-pickers";
1464
- import { StackItem as StackItem4 } from "@dxos/react-ui-stack";
1333
+ import { StackItem as StackItem3 } from "@dxos/react-ui-stack";
1465
1334
  var __dxlog_file4 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/SpaceSettings/SpaceSettingsContainer.tsx";
1466
1335
  var FormSchema = SpaceForm.pipe(Schema.extend(Schema.Struct({
1467
1336
  archived: Schema.Boolean.annotations({
1468
- title: "Archive space"
1337
+ title: "Archive Space"
1469
1338
  })
1470
1339
  })));
1471
1340
  var SpaceSettingsContainer = ({ space }) => {
1472
- var _effect = _useSignals17();
1341
+ var _effect = _useSignals14();
1473
1342
  try {
1474
- const { t } = useTranslation16(SPACE_PLUGIN);
1343
+ const { t } = useTranslation14(meta.id);
1475
1344
  const { dispatchPromise: dispatch } = useIntentDispatcher9();
1476
1345
  const client = useClient7();
1477
- const archived = useMulticastObservable(space.state) === SpaceState2.SPACE_INACTIVE;
1478
- const [edgeReplication, setEdgeReplication] = useState9(space.internal.data.edgeReplication === EdgeReplicationSetting.ENABLED);
1346
+ const archived = useMulticastObservable(space.state) === SpaceState.SPACE_INACTIVE;
1347
+ const [edgeReplication, setEdgeReplication] = useState8(space.internal.data.edgeReplication === EdgeReplicationSetting.ENABLED);
1479
1348
  const toggleEdgeReplication = useCallback10(async (next) => {
1480
1349
  setEdgeReplication(next);
1481
1350
  await space?.internal.setEdgeReplicationPreference(next ? EdgeReplicationSetting.ENABLED : EdgeReplicationSetting.DISABLED).catch((err) => {
1482
1351
  log3.catch(err, void 0, {
1483
1352
  F: __dxlog_file4,
1484
- L: 51,
1353
+ L: 57,
1485
1354
  S: void 0,
1486
1355
  C: (f, a) => f(...a)
1487
1356
  });
@@ -1502,7 +1371,7 @@ var SpaceSettingsContainer = ({ space }) => {
1502
1371
  space.properties.hue = properties.hue;
1503
1372
  }
1504
1373
  if (properties.archived && !archived) {
1505
- void dispatch(pipe2(createIntent9(SpaceAction.Close, {
1374
+ void dispatch(Function3.pipe(createIntent9(SpaceAction.Close, {
1506
1375
  space
1507
1376
  }), chain2(LayoutAction7.SwitchWorkspace, {
1508
1377
  part: "workspace",
@@ -1518,7 +1387,7 @@ var SpaceSettingsContainer = ({ space }) => {
1518
1387
  toggleEdgeReplication,
1519
1388
  archived
1520
1389
  ]);
1521
- const values = useMemo3(() => ({
1390
+ const values = useMemo2(() => ({
1522
1391
  name: space.properties.name,
1523
1392
  icon: space.properties.icon,
1524
1393
  hue: space.properties.hue,
@@ -1531,16 +1400,16 @@ var SpaceSettingsContainer = ({ space }) => {
1531
1400
  edgeReplication,
1532
1401
  archived
1533
1402
  ]);
1534
- const customElements = useMemo3(() => ({
1403
+ const customElements = useMemo2(() => ({
1535
1404
  name: ({ type, label, getValue, onValueChange }) => {
1536
- const handleChange = useCallback10(({ target: { value } }) => onValueChange(type, value), [
1405
+ const handleChange = useCallback10(({ target: { value: value2 } }) => onValueChange(type, value2), [
1537
1406
  onValueChange,
1538
1407
  type
1539
1408
  ]);
1540
- return /* @__PURE__ */ React17.createElement(ControlItemInput2, {
1409
+ return /* @__PURE__ */ React14.createElement(ControlItemInput3, {
1541
1410
  title: label,
1542
1411
  description: t("display name description")
1543
- }, /* @__PURE__ */ React17.createElement(Input6.TextInput, {
1412
+ }, /* @__PURE__ */ React14.createElement(Input5.TextInput, {
1544
1413
  value: getValue(),
1545
1414
  onChange: handleChange,
1546
1415
  placeholder: t("display name input placeholder"),
@@ -1548,23 +1417,22 @@ var SpaceSettingsContainer = ({ space }) => {
1548
1417
  }));
1549
1418
  },
1550
1419
  icon: ({ type, label, getValue, onValueChange }) => {
1551
- const handleChange = useCallback10((nextEmoji) => onValueChange(type, nextEmoji), [
1420
+ const handleChange = useCallback10((icon) => onValueChange(type, icon), [
1552
1421
  onValueChange,
1553
1422
  type
1554
1423
  ]);
1555
- const handleEmojiReset = useCallback10(() => onValueChange(type, void 0), [
1424
+ const handleReset = useCallback10(() => onValueChange(type, void 0), [
1556
1425
  onValueChange,
1557
1426
  type
1558
1427
  ]);
1559
- return /* @__PURE__ */ React17.createElement(ControlItem, {
1428
+ return /* @__PURE__ */ React14.createElement(ControlItem, {
1560
1429
  title: label,
1561
1430
  description: t("icon description")
1562
- }, /* @__PURE__ */ React17.createElement(IconPicker, {
1431
+ }, /* @__PURE__ */ React14.createElement(IconPicker, {
1563
1432
  value: getValue(),
1564
1433
  onChange: handleChange,
1565
- onReset: handleEmojiReset,
1566
- classNames: "justify-self-end",
1567
- iconSize: 5
1434
+ onReset: handleReset,
1435
+ classNames: "justify-self-end"
1568
1436
  }));
1569
1437
  },
1570
1438
  hue: ({ type, label, getValue, onValueChange }) => {
@@ -1572,18 +1440,18 @@ var SpaceSettingsContainer = ({ space }) => {
1572
1440
  onValueChange,
1573
1441
  type
1574
1442
  ]);
1575
- const handleHueReset = useCallback10(() => onValueChange(type, void 0), [
1443
+ const handleReset = useCallback10(() => onValueChange(type, void 0), [
1576
1444
  onValueChange,
1577
1445
  type
1578
1446
  ]);
1579
- return /* @__PURE__ */ React17.createElement(ControlItem, {
1447
+ return /* @__PURE__ */ React14.createElement(ControlItem, {
1580
1448
  title: label,
1581
1449
  description: t("hue description")
1582
- }, /* @__PURE__ */ React17.createElement(HuePicker, {
1450
+ }, /* @__PURE__ */ React14.createElement(HuePicker, {
1583
1451
  value: getValue(),
1584
1452
  onChange: handleChange,
1585
- onReset: handleHueReset,
1586
- classNames: "[--hue-preview-size:1.25rem] justify-self-end"
1453
+ onReset: handleReset,
1454
+ classNames: "justify-self-end"
1587
1455
  }));
1588
1456
  },
1589
1457
  edgeReplication: ({ type, label, getValue, onValueChange }) => {
@@ -1591,10 +1459,10 @@ var SpaceSettingsContainer = ({ space }) => {
1591
1459
  onValueChange,
1592
1460
  type
1593
1461
  ]);
1594
- return /* @__PURE__ */ React17.createElement(ControlItemInput2, {
1462
+ return /* @__PURE__ */ React14.createElement(ControlItemInput3, {
1595
1463
  title: label,
1596
1464
  description: t("edge replication description")
1597
- }, /* @__PURE__ */ React17.createElement(Input6.Switch, {
1465
+ }, /* @__PURE__ */ React14.createElement(Input5.Switch, {
1598
1466
  checked: getValue(),
1599
1467
  onCheckedChange: handleChange,
1600
1468
  classNames: "justify-self-end"
@@ -1606,11 +1474,12 @@ var SpaceSettingsContainer = ({ space }) => {
1606
1474
  type,
1607
1475
  getValue
1608
1476
  ]);
1609
- return /* @__PURE__ */ React17.createElement(ControlItemInput2, {
1477
+ return /* @__PURE__ */ React14.createElement(ControlItemInput3, {
1610
1478
  title: label,
1611
1479
  description: t("archive space description")
1612
- }, /* @__PURE__ */ React17.createElement(Button7, {
1480
+ }, /* @__PURE__ */ React14.createElement(Button5, {
1613
1481
  disabled: space === client.spaces.default,
1482
+ variant: getValue() ? "default" : "destructive",
1614
1483
  onClick: handleChange
1615
1484
  }, getValue() ? t("unarchive space label") : t("archive space label")));
1616
1485
  }
@@ -1618,46 +1487,65 @@ var SpaceSettingsContainer = ({ space }) => {
1618
1487
  t,
1619
1488
  space
1620
1489
  ]);
1621
- return /* @__PURE__ */ React17.createElement(StackItem4.Content, {
1622
- classNames: "block overflow-y-auto pli-2"
1623
- }, /* @__PURE__ */ React17.createElement(ControlPage4, null, /* @__PURE__ */ React17.createElement(ControlSection4, {
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, {
1501
+ scrollable: true
1502
+ }, /* @__PURE__ */ React14.createElement(ControlPage4, null, /* @__PURE__ */ React14.createElement(ControlSection4, {
1624
1503
  title: t("space properties settings verbose label", {
1625
- ns: SPACE_PLUGIN
1504
+ ns: meta.id
1626
1505
  }),
1627
1506
  description: t("space properties settings description", {
1628
- ns: SPACE_PLUGIN
1507
+ ns: meta.id
1629
1508
  })
1630
- }, /* @__PURE__ */ React17.createElement(Form3, {
1509
+ }, /* @__PURE__ */ React14.createElement(Form3, {
1631
1510
  schema: FormSchema,
1632
1511
  values,
1633
1512
  autoSave: true,
1634
1513
  onSave: handleSave,
1635
1514
  Custom: customElements,
1636
1515
  outerSpacing: false,
1637
- classNames: "container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content] gap-4"
1638
- }))));
1516
+ classNames: "container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]"
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")))));
1639
1527
  } finally {
1640
1528
  _effect.f();
1641
1529
  }
1642
1530
  };
1643
1531
 
1644
1532
  // src/components/SyncStatus/InlineSyncStatus.tsx
1645
- import { useSignals as _useSignals18 } from "@preact-signals/safe-react/tracking";
1646
- import { Option as Option2 } from "effect";
1647
- import React18, { useEffect as useEffect5, useState as useState10 } from "react";
1648
- import { useAppGraph as useAppGraph3 } from "@dxos/app-framework";
1533
+ import { useSignals as _useSignals15 } from "@preact-signals/safe-react/tracking";
1534
+ import * as Option3 from "effect/Option";
1535
+ import React15, { useEffect as useEffect4, useState as useState9 } from "react";
1536
+ import { useAppGraph as useAppGraph3 } from "@dxos/app-framework/react";
1649
1537
  import { EdgeStatus } from "@dxos/protocols/proto/dxos/client/services";
1650
1538
  import { EdgeReplicationSetting as EdgeReplicationSetting2 } from "@dxos/protocols/proto/dxos/echo/metadata";
1651
1539
  import { useClient as useClient8 } from "@dxos/react-client";
1652
1540
  import { useSpaceSyncState } from "@dxos/react-client/echo";
1653
- import { Tooltip as Tooltip3, useTranslation as useTranslation17 } from "@dxos/react-ui";
1541
+ import { Tooltip as Tooltip2, useTranslation as useTranslation15 } from "@dxos/react-ui";
1654
1542
  import { AttentionGlyph as AttentionGlyph2, useAttended as useAttended2, useAttention as useAttention2 } from "@dxos/react-ui-attention";
1655
1543
  var useEdgeStatus = () => {
1656
- const [status, setStatus] = useState10(EdgeStatus.NOT_CONNECTED);
1544
+ const [status, setStatus] = useState9(EdgeStatus.ConnectionState.NOT_CONNECTED);
1657
1545
  const client = useClient8();
1658
- useEffect5(() => {
1546
+ useEffect4(() => {
1659
1547
  client.services.services.EdgeAgentService?.queryEdgeStatus().subscribe(({ status: status2 }) => {
1660
- setStatus(status2);
1548
+ setStatus(status2.state);
1661
1549
  });
1662
1550
  }, [
1663
1551
  client
@@ -1665,9 +1553,9 @@ var useEdgeStatus = () => {
1665
1553
  return status;
1666
1554
  };
1667
1555
  var InlineSyncStatus = ({ space, open }) => {
1668
- var _effect = _useSignals18();
1556
+ var _effect = _useSignals15();
1669
1557
  try {
1670
- const { t } = useTranslation17(SPACE_PLUGIN);
1558
+ const { t } = useTranslation15(meta.id);
1671
1559
  const id = space.id;
1672
1560
  const { hasAttention, isAncestor, isRelated } = useAttention2(id);
1673
1561
  const isAttended = hasAttention || isAncestor || isRelated;
@@ -1675,16 +1563,16 @@ var InlineSyncStatus = ({ space, open }) => {
1675
1563
  const attended = useAttended2();
1676
1564
  const startOfAttention = attended.at(-1);
1677
1565
  const path = usePath(graph, startOfAttention);
1678
- const containsAttended = !open && !isAttended && id && Option2.isSome(path) ? path.value.includes(id) : false;
1679
- const connectedToEdge = useEdgeStatus() === EdgeStatus.CONNECTED;
1566
+ const containsAttended = !open && !isAttended && id && Option3.isSome(path) ? path.value.includes(id) : false;
1567
+ const connectedToEdge = useEdgeStatus() === EdgeStatus.ConnectionState.CONNECTED;
1680
1568
  const edgeSyncEnabled = space.internal.data.edgeReplication === EdgeReplicationSetting2.ENABLED;
1681
1569
  const syncState = useSpaceSyncState(space);
1682
1570
  const syncing = connectedToEdge && edgeSyncEnabled && syncState && syncState.missingOnLocal > 0;
1683
- return /* @__PURE__ */ React18.createElement(Tooltip3.Trigger, {
1571
+ return /* @__PURE__ */ React15.createElement(Tooltip2.Trigger, {
1684
1572
  asChild: true,
1685
1573
  content: t("syncing label"),
1686
1574
  side: "bottom"
1687
- }, /* @__PURE__ */ React18.createElement(AttentionGlyph2, {
1575
+ }, /* @__PURE__ */ React15.createElement(AttentionGlyph2, {
1688
1576
  syncing,
1689
1577
  attended: isAttended,
1690
1578
  containsAttended,
@@ -1696,12 +1584,16 @@ var InlineSyncStatus = ({ space, open }) => {
1696
1584
  };
1697
1585
 
1698
1586
  // src/components/SyncStatus/SyncStatus.tsx
1699
- import { useSignals as _useSignals19 } from "@preact-signals/safe-react/tracking";
1700
- import React19, { useEffect as useEffect6, useState as useState11 } from "react";
1587
+ import { useSignals as _useSignals16 } from "@preact-signals/safe-react/tracking";
1588
+ import React16, { useEffect as useEffect5, useState as useState10 } from "react";
1701
1589
  import { StatusBar } from "@dxos/plugin-status-bar";
1590
+ import { EdgeStatus as EdgeStatus2 } from "@dxos/protocols/proto/dxos/client/services";
1702
1591
  import { useClient as useClient9 } from "@dxos/react-client";
1592
+ import { useStream } from "@dxos/react-client/devtools";
1703
1593
  import { getSyncSummary, useSyncState } from "@dxos/react-client/echo";
1704
- import { Icon as Icon8, useTranslation as useTranslation18 } 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";
1596
+ import { Unit } from "@dxos/util";
1705
1597
 
1706
1598
  // src/components/SyncStatus/save-tracker.ts
1707
1599
  import { Context } from "@dxos/context";
@@ -1797,17 +1689,13 @@ var getIcon = (status) => {
1797
1689
  // src/components/SyncStatus/SyncStatus.tsx
1798
1690
  var SYNC_STALLED_TIMEOUT = 5e3;
1799
1691
  var SyncStatus = () => {
1800
- var _effect = _useSignals19();
1692
+ var _effect = _useSignals16();
1801
1693
  try {
1802
1694
  const client = useClient9();
1803
1695
  const state = useSyncState();
1804
- const [saved, setSaved] = useState11(true);
1805
- useEffect6(() => {
1806
- return createClientSaveTracker(client, (state2) => {
1807
- setSaved(state2 === "saved");
1808
- });
1809
- }, []);
1810
- return /* @__PURE__ */ React19.createElement(SyncStatusIndicator, {
1696
+ const [saved, setSaved] = useState10(true);
1697
+ useEffect5(() => createClientSaveTracker(client, (state2) => setSaved(state2 === "saved")), []);
1698
+ return /* @__PURE__ */ React16.createElement(SyncStatusIndicator, {
1811
1699
  state,
1812
1700
  saved
1813
1701
  });
@@ -1816,9 +1704,9 @@ var SyncStatus = () => {
1816
1704
  }
1817
1705
  };
1818
1706
  var SyncStatusIndicator = ({ state, saved }) => {
1819
- var _effect = _useSignals19();
1707
+ var _effect = _useSignals16();
1820
1708
  try {
1821
- const { t } = useTranslation18(SPACE_PLUGIN);
1709
+ const { t } = useTranslation16(meta.id);
1822
1710
  const summary = getSyncSummary(state);
1823
1711
  const offline = Object.values(state).length === 0;
1824
1712
  const needsToUpload = summary.differentDocuments > 0 || summary.missingOnRemote > 0;
@@ -1829,8 +1717,8 @@ var SyncStatusIndicator = ({ state, saved }) => {
1829
1717
  needsToUpload,
1830
1718
  needsToDownload
1831
1719
  });
1832
- const [classNames, setClassNames] = useState11();
1833
- useEffect6(() => {
1720
+ const [classNames, setClassNames] = useState10();
1721
+ useEffect5(() => {
1834
1722
  setClassNames(void 0);
1835
1723
  if (offline || !needsToUpload && !needsToDownload) {
1836
1724
  return;
@@ -1845,67 +1733,256 @@ var SyncStatusIndicator = ({ state, saved }) => {
1845
1733
  needsToDownload
1846
1734
  ]);
1847
1735
  const title = t(`${status} label`);
1848
- const icon = /* @__PURE__ */ React19.createElement(Icon8, {
1736
+ const icon = /* @__PURE__ */ React16.createElement(Icon5, {
1849
1737
  icon: getIcon(status),
1850
- size: 4,
1851
1738
  classNames
1852
1739
  });
1853
- return /* @__PURE__ */ React19.createElement(StatusBar.Item, {
1740
+ return /* @__PURE__ */ React16.createElement(Popover3.Root, null, /* @__PURE__ */ React16.createElement(Popover3.Trigger, {
1741
+ asChild: true
1742
+ }, /* @__PURE__ */ React16.createElement(StatusBar.Item, {
1854
1743
  title
1855
- }, icon);
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))));
1856
1745
  } finally {
1857
1746
  _effect.f();
1858
1747
  }
1859
1748
  };
1749
+ var useEdgeStatus2 = () => {
1750
+ const client = useClient9();
1751
+ const { status } = useStream(() => client.services.services.EdgeAgentService.queryEdgeStatus(), {});
1752
+ return status;
1753
+ };
1754
+ var EdgeConnectionPopover = () => {
1755
+ var _effect = _useSignals16();
1756
+ try {
1757
+ const status = useEdgeStatus2();
1758
+ const { t } = useTranslation16(meta.id);
1759
+ const isConnected = status?.state === EdgeStatus2.ConnectionState.CONNECTED;
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", {
1774
+ className: "space-y-2"
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
+ }))));
1805
+ } finally {
1806
+ _effect.f();
1807
+ }
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
+ };
1860
1919
 
1861
1920
  // src/components/ViewEditor.tsx
1862
- import { useSignals as _useSignals20 } from "@preact-signals/safe-react/tracking";
1863
- import React20, { useCallback as useCallback11, useMemo as useMemo4 } from "react";
1864
- import { createIntent as createIntent10, useIntentDispatcher as useIntentDispatcher10 } from "@dxos/app-framework";
1865
- import { Type as Type3 } from "@dxos/echo";
1866
- 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";
1867
1927
  import { useClient as useClient10 } from "@dxos/react-client";
1868
- import { Filter as Filter2, getSpace as getSpace4, useQuery as useQuery3, useSchema } from "@dxos/react-client/echo";
1869
- import { ViewEditor as NativeViewEditor } from "@dxos/react-ui-form";
1870
- import { DataType as DataType3 } from "@dxos/schema";
1871
- var __dxlog_file6 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/ViewEditor.tsx";
1928
+ import { getSpace as getSpace4, useQuery as useQuery3 } from "@dxos/react-client/echo";
1929
+ import { useAsyncEffect } from "@dxos/react-ui";
1930
+ import { ViewEditor as NaturalViewEditor } from "@dxos/react-ui-form";
1931
+ import { View } from "@dxos/schema";
1872
1932
  var ViewEditor = ({ view }) => {
1873
- var _effect = _useSignals20();
1933
+ var _effect = _useSignals17();
1874
1934
  try {
1875
1935
  const { dispatchPromise: dispatch } = useIntentDispatcher10();
1876
1936
  const client = useClient10();
1877
1937
  const space = getSpace4(view);
1878
- const schema = useSchema(client, space, view.query.typename);
1879
- const views = useQuery3(space, Filter2.type(DataType3.View));
1880
- const currentTypename = useMemo4(() => view.query?.typename, [
1881
- view.query?.typename
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
1882
1961
  ]);
1883
- const handleUpdateTypename = useCallback11((typename) => {
1884
- invariant2(schema, void 0, {
1885
- F: __dxlog_file6,
1886
- L: 30,
1887
- S: void 0,
1888
- A: [
1889
- "schema",
1890
- ""
1891
- ]
1892
- });
1893
- invariant2(Type3.isMutable(schema), void 0, {
1894
- F: __dxlog_file6,
1895
- L: 31,
1896
- S: void 0,
1897
- A: [
1898
- "Type.isMutable(schema)",
1899
- ""
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
1900
1970
  ]
1901
- });
1902
- const matchingViews = views.filter((view2) => view2.query.typename === currentTypename);
1903
- for (const view2 of matchingViews) {
1904
- view2.query.typename = typename;
1971
+ }) : Query3.fromAst(newQuery);
1972
+ view.query.ast = query.ast;
1973
+ const newSchema = await resolveSchemaWithClientAndSpace(client, space, query.ast);
1974
+ if (!newSchema) {
1975
+ return;
1905
1976
  }
1906
- schema.updateTypename(typename);
1977
+ const newView = View.make({
1978
+ query,
1979
+ jsonSchema: Type3.toJsonSchema(newSchema),
1980
+ presentation: Obj6.make(Type3.Expando, {})
1981
+ });
1982
+ view.projection = Obj6.getSnapshot(newView).projection;
1983
+ setSchema(() => newSchema);
1907
1984
  }, [
1908
- views,
1985
+ view,
1909
1986
  schema
1910
1987
  ]);
1911
1988
  const handleDelete = useCallback11((fieldId) => {
@@ -1920,13 +1997,16 @@ var ViewEditor = ({ view }) => {
1920
1997
  if (!space || !schema) {
1921
1998
  return null;
1922
1999
  }
1923
- return /* @__PURE__ */ React20.createElement(NativeViewEditor, {
2000
+ return /* @__PURE__ */ React17.createElement(NaturalViewEditor, {
1924
2001
  registry: space.db.schemaRegistry,
1925
2002
  schema,
1926
2003
  view,
1927
- onTypenameChanged: Type3.isMutable(schema) ? handleUpdateTypename : void 0,
1928
- onDelete: Type3.isMutable(schema) ? handleDelete : void 0,
1929
- outerSpacing: false
2004
+ mode: "query",
2005
+ outerSpacing: false,
2006
+ tags,
2007
+ types,
2008
+ onQueryChanged: handleQueryChanged,
2009
+ onDelete: Type3.isMutable(schema) ? handleDelete : void 0
1930
2010
  });
1931
2011
  } finally {
1932
2012
  _effect.f();
@@ -1934,9 +2014,11 @@ var ViewEditor = ({ view }) => {
1934
2014
  };
1935
2015
 
1936
2016
  // src/components/index.ts
1937
- import { lazy as lazy2 } from "react";
1938
- var CollectionMain = lazy2(() => import("./CollectionMain-D2B75XBS.mjs"));
1939
- var ObjectDetailsPanel = lazy2(() => import("./ObjectDetailsPanel-YPTDQKMG.mjs"));
2017
+ import { lazy } from "react";
2018
+ var CollectionArticle = lazy(() => import("./CollectionArticle-WTHWY4YS.mjs"));
2019
+ var ObjectDetailsPanel = lazy(() => import("./ObjectDetailsPanel-2BRUBHP6.mjs"));
2020
+ var ObjectSettingsContainer = lazy(() => import("./ObjectSettings-5LLWCVEK.mjs"));
2021
+ var RecordArticle = lazy(() => import("./RecordArticle-SXDRWTTU.mjs"));
1940
2022
 
1941
2023
  export {
1942
2024
  AwaitingObject,
@@ -1949,14 +2031,12 @@ export {
1949
2031
  JoinDialog,
1950
2032
  MembersContainer,
1951
2033
  MenuFooter,
1952
- ObjectSettingsContainer,
1953
- PersistenceStatus,
1954
- POPOVER_RENAME_OBJECT,
1955
- PopoverRenameObject,
1956
- POPOVER_RENAME_SPACE,
1957
- PopoverRenameSpace,
1958
- useQuerySpaceSchemas,
2034
+ OBJECT_RENAME_POPOVER,
2035
+ ObjectRenamePopover,
2036
+ SPACE_RENAME_POPOVER,
2037
+ SpaceRenamePopover,
1959
2038
  SchemaContainer,
2039
+ useQuerySpaceSchemas,
1960
2040
  SpacePresence,
1961
2041
  FullPresence,
1962
2042
  SmallPresenceLive,
@@ -1966,19 +2046,13 @@ export {
1966
2046
  InlineSyncStatus,
1967
2047
  SyncStatus,
1968
2048
  SyncStatusIndicator,
2049
+ evalQuery,
2050
+ resolveSchemaWithClientAndSpace,
2051
+ getQueryTarget,
1969
2052
  ViewEditor,
1970
- CollectionMain,
2053
+ CollectionArticle,
1971
2054
  ObjectDetailsPanel,
1972
- AppGraphBuilder,
1973
- AppGraphSerializer,
1974
- IdentityCreated,
1975
- IntentResolver,
1976
- ReactRoot,
1977
- ReactSurface,
1978
- SchemaDefs,
1979
- SchemaTools,
1980
- SpaceSettings,
1981
- SpaceState,
1982
- SpacesReady
2055
+ ObjectSettingsContainer,
2056
+ RecordArticle
1983
2057
  };
1984
- //# sourceMappingURL=chunk-FBJEXW54.mjs.map
2058
+ //# sourceMappingURL=chunk-J2BUK5E6.mjs.map