@dxos/plugin-space 0.7.5-main.9d2a38b → 0.7.5-main.c41020f

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 (251) hide show
  1. package/dist/lib/browser/{app-graph-builder-F6XSETHX.mjs → app-graph-builder-MGK5HWPZ.mjs} +26 -103
  2. package/dist/lib/browser/app-graph-builder-MGK5HWPZ.mjs.map +7 -0
  3. package/dist/lib/browser/{app-graph-serializer-FYJE23GN.mjs → app-graph-serializer-FOWFLYGU.mjs} +5 -5
  4. package/dist/lib/browser/{chunk-IZ7QKQ2E.mjs → chunk-23RVI5FZ.mjs} +27 -11
  5. package/dist/lib/browser/chunk-23RVI5FZ.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-UH5P4UL3.mjs → chunk-NU7WDVGN.mjs} +4 -2
  7. package/dist/lib/browser/chunk-NU7WDVGN.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-SOXNANA6.mjs → chunk-PQXZCNAU.mjs} +3 -2
  9. package/dist/lib/browser/{chunk-SOXNANA6.mjs.map → chunk-PQXZCNAU.mjs.map} +3 -3
  10. package/dist/lib/browser/{chunk-XXD33C4E.mjs → chunk-S6B7627U.mjs} +486 -349
  11. package/dist/lib/browser/chunk-S6B7627U.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-T36CIHPG.mjs → chunk-UDWHTKB5.mjs} +7 -4
  13. package/dist/lib/browser/chunk-UDWHTKB5.mjs.map +7 -0
  14. package/dist/lib/browser/{chunk-SSJ772GK.mjs → chunk-ULA2UQJ4.mjs} +18 -5
  15. package/dist/lib/browser/chunk-ULA2UQJ4.mjs.map +7 -0
  16. package/dist/lib/browser/{identity-created-4Q4PFIC5.mjs → identity-created-FYGS6TBH.mjs} +3 -3
  17. package/dist/lib/browser/index.mjs +59 -24
  18. package/dist/lib/browser/index.mjs.map +3 -3
  19. package/dist/lib/browser/intent-resolver-QVR4MSJV.mjs +555 -0
  20. package/dist/lib/browser/intent-resolver-QVR4MSJV.mjs.map +7 -0
  21. package/dist/lib/browser/meta.json +1 -1
  22. package/dist/lib/browser/{react-root-BDOPFJGJ.mjs → react-root-IP2ZB245.mjs} +6 -6
  23. package/dist/lib/browser/{react-surface-EGOL2JBL.mjs → react-surface-BT3EHB6V.mjs} +36 -49
  24. package/dist/lib/browser/react-surface-BT3EHB6V.mjs.map +7 -0
  25. package/dist/lib/browser/schema-5W3DSY2E.mjs +24 -0
  26. package/dist/lib/browser/schema-5W3DSY2E.mjs.map +7 -0
  27. package/dist/lib/browser/{settings-WF67QZSD.mjs → settings-PHPCXX33.mjs} +3 -3
  28. package/dist/lib/browser/{spaces-ready-WVU7US3C.mjs → spaces-ready-K47RR7N2.mjs} +31 -32
  29. package/dist/lib/browser/spaces-ready-K47RR7N2.mjs.map +7 -0
  30. package/dist/lib/browser/{state-MS4KYJWI.mjs → state-INJ63O57.mjs} +3 -3
  31. package/dist/lib/browser/types/index.mjs +6 -4
  32. package/dist/lib/node/{app-graph-builder-GKLVZ4PM.cjs → app-graph-builder-ZIUBXRPA.cjs} +59 -136
  33. package/dist/lib/node/app-graph-builder-ZIUBXRPA.cjs.map +7 -0
  34. package/dist/lib/node/{app-graph-serializer-RMTU5YSC.cjs → app-graph-serializer-VQOGHKXL.cjs} +21 -21
  35. package/dist/lib/node/{chunk-AJRP7AD6.cjs → chunk-N2FS7PRA.cjs} +552 -414
  36. package/dist/lib/node/chunk-N2FS7PRA.cjs.map +7 -0
  37. package/dist/lib/node/{chunk-5D4RWKTV.cjs → chunk-OVGKWJOC.cjs} +78 -62
  38. package/dist/lib/node/chunk-OVGKWJOC.cjs.map +7 -0
  39. package/dist/lib/node/{chunk-UENH2YBM.cjs → chunk-U6DYXAR3.cjs} +12 -9
  40. package/dist/lib/node/chunk-U6DYXAR3.cjs.map +7 -0
  41. package/dist/lib/node/{chunk-YCBBGTFD.cjs → chunk-WAJKBO3J.cjs} +25 -11
  42. package/dist/lib/node/chunk-WAJKBO3J.cjs.map +7 -0
  43. package/dist/lib/node/{chunk-AO4EW2RX.cjs → chunk-WZR6OAN3.cjs} +6 -5
  44. package/dist/lib/node/{chunk-AO4EW2RX.cjs.map → chunk-WZR6OAN3.cjs.map} +3 -3
  45. package/dist/lib/node/{chunk-56NGXG2A.cjs → chunk-YZKNRFHU.cjs} +10 -8
  46. package/dist/lib/node/chunk-YZKNRFHU.cjs.map +7 -0
  47. package/dist/lib/node/{identity-created-QQWX7WX3.cjs → identity-created-AXI64BLE.cjs} +7 -7
  48. package/dist/lib/node/index.cjs +132 -98
  49. package/dist/lib/node/index.cjs.map +3 -3
  50. package/dist/lib/node/intent-resolver-MLENGECT.cjs +553 -0
  51. package/dist/lib/node/intent-resolver-MLENGECT.cjs.map +7 -0
  52. package/dist/lib/node/meta.json +1 -1
  53. package/dist/lib/node/{react-root-ZTR2J2I3.cjs → react-root-3OX5Z5CX.cjs} +12 -12
  54. package/dist/lib/node/{react-surface-75KRPQYT.cjs → react-surface-5NYCMXSM.cjs} +77 -89
  55. package/dist/lib/node/react-surface-5NYCMXSM.cjs.map +7 -0
  56. package/dist/lib/node/schema-YN7WVFRX.cjs +40 -0
  57. package/dist/lib/node/schema-YN7WVFRX.cjs.map +7 -0
  58. package/dist/lib/node/{settings-KOVSPA3S.cjs → settings-5QYFWNH7.cjs} +8 -8
  59. package/dist/lib/node/{spaces-ready-ILVGUHJH.cjs → spaces-ready-FQNAKR7G.cjs} +39 -40
  60. package/dist/lib/node/spaces-ready-FQNAKR7G.cjs.map +7 -0
  61. package/dist/lib/node/{state-4UIOUKLJ.cjs → state-57UE3DYE.cjs} +8 -8
  62. package/dist/lib/node/types/index.cjs +19 -17
  63. package/dist/lib/node/types/index.cjs.map +2 -2
  64. package/dist/lib/node-esm/{app-graph-builder-NEHQ5Z63.mjs → app-graph-builder-TERVM2SL.mjs} +26 -103
  65. package/dist/lib/node-esm/app-graph-builder-TERVM2SL.mjs.map +7 -0
  66. package/dist/lib/node-esm/{app-graph-serializer-UWWS5OVC.mjs → app-graph-serializer-GZRSWHEN.mjs} +5 -5
  67. package/dist/lib/node-esm/{chunk-E5DWIQ3N.mjs → chunk-2TQ2AJEZ.mjs} +7 -4
  68. package/dist/lib/node-esm/chunk-2TQ2AJEZ.mjs.map +7 -0
  69. package/dist/lib/node-esm/{chunk-375RB3CZ.mjs → chunk-6RSVVEPS.mjs} +4 -2
  70. package/dist/lib/node-esm/chunk-6RSVVEPS.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-GVOPDPS2.mjs → chunk-DIKRH2IK.mjs} +486 -349
  72. package/dist/lib/node-esm/chunk-DIKRH2IK.mjs.map +7 -0
  73. package/dist/lib/node-esm/{chunk-7FUVU45N.mjs → chunk-ICCM4YRJ.mjs} +3 -2
  74. package/dist/lib/node-esm/{chunk-7FUVU45N.mjs.map → chunk-ICCM4YRJ.mjs.map} +3 -3
  75. package/dist/lib/node-esm/{chunk-5QMAPAZD.mjs → chunk-PGH5L7MV.mjs} +27 -11
  76. package/dist/lib/node-esm/chunk-PGH5L7MV.mjs.map +7 -0
  77. package/dist/lib/node-esm/{chunk-HTBGWQEU.mjs → chunk-TRNZQEEN.mjs} +18 -5
  78. package/dist/lib/node-esm/chunk-TRNZQEEN.mjs.map +7 -0
  79. package/dist/lib/node-esm/{identity-created-HMNY2MPB.mjs → identity-created-3CGEXNPO.mjs} +3 -3
  80. package/dist/lib/node-esm/index.mjs +59 -24
  81. package/dist/lib/node-esm/index.mjs.map +3 -3
  82. package/dist/lib/node-esm/intent-resolver-BLW4RM6X.mjs +556 -0
  83. package/dist/lib/node-esm/intent-resolver-BLW4RM6X.mjs.map +7 -0
  84. package/dist/lib/node-esm/meta.json +1 -1
  85. package/dist/lib/node-esm/{react-root-OUPJA4RY.mjs → react-root-7XXGP56B.mjs} +6 -6
  86. package/dist/lib/node-esm/{react-surface-7EVWCKIP.mjs → react-surface-R2ECJSFB.mjs} +36 -49
  87. package/dist/lib/node-esm/react-surface-R2ECJSFB.mjs.map +7 -0
  88. package/dist/lib/node-esm/schema-LOR2EVGY.mjs +25 -0
  89. package/dist/lib/node-esm/schema-LOR2EVGY.mjs.map +7 -0
  90. package/dist/lib/node-esm/{settings-EDK6WI3V.mjs → settings-H6MXTEQM.mjs} +3 -3
  91. package/dist/lib/node-esm/{spaces-ready-CH3W7OGN.mjs → spaces-ready-HKAQG5SA.mjs} +31 -32
  92. package/dist/lib/node-esm/spaces-ready-HKAQG5SA.mjs.map +7 -0
  93. package/dist/lib/node-esm/{state-BMISGQ2O.mjs → state-VYA6OFHD.mjs} +3 -3
  94. package/dist/lib/node-esm/types/index.mjs +6 -4
  95. package/dist/types/src/SpacePlugin.d.ts +5 -1
  96. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/app-graph-builder.d.ts +110 -110
  98. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/capabilities.d.ts +8 -1
  100. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/index.d.ts +123 -121
  102. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/intent-resolver.d.ts +2 -1
  104. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/schema.d.ts +4 -0
  107. package/dist/types/src/capabilities/schema.d.ts.map +1 -0
  108. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  109. package/dist/types/src/components/AdvancedObjectSettings/AdvancedObjectSettings.d.ts +1 -2
  110. package/dist/types/src/components/AdvancedObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  111. package/dist/types/src/components/AdvancedObjectSettings/ForeignKeys.d.ts +1 -2
  112. package/dist/types/src/components/AdvancedObjectSettings/ForeignKeys.d.ts.map +1 -1
  113. package/dist/types/src/components/AwaitingObject.d.ts +1 -2
  114. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  115. package/dist/types/src/components/BaseObjectSettings.d.ts +1 -2
  116. package/dist/types/src/components/BaseObjectSettings.d.ts.map +1 -1
  117. package/dist/types/src/components/CollectionMain.d.ts +1 -2
  118. package/dist/types/src/components/CollectionMain.d.ts.map +1 -1
  119. package/dist/types/src/components/CollectionSection.d.ts +1 -2
  120. package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
  121. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +2 -4
  122. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  123. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  124. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +8 -9
  125. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  126. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -2
  127. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  128. package/dist/types/src/components/JoinDialog.d.ts +1 -2
  129. package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
  130. package/dist/types/src/components/MenuFooter.d.ts +1 -2
  131. package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
  132. package/dist/types/src/components/PersistenceStatus.d.ts +1 -2
  133. package/dist/types/src/components/PersistenceStatus.d.ts.map +1 -1
  134. package/dist/types/src/components/PopoverAddSpace.d.ts +3 -0
  135. package/dist/types/src/components/PopoverAddSpace.d.ts.map +1 -0
  136. package/dist/types/src/components/PopoverRenameObject.d.ts +1 -2
  137. package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
  138. package/dist/types/src/components/PopoverRenameSpace.d.ts +1 -2
  139. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
  140. package/dist/types/src/components/ShareSpaceButton.d.ts +2 -3
  141. package/dist/types/src/components/ShareSpaceButton.d.ts.map +1 -1
  142. package/dist/types/src/components/SpacePluginSettings.d.ts +1 -2
  143. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  144. package/dist/types/src/components/SpacePresence.d.ts +4 -5
  145. package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
  146. package/dist/types/src/components/SpacePresence.stories.d.ts +2 -3
  147. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  148. package/dist/types/src/components/SpaceSettings/SpaceSettingsDialog.d.ts +1 -2
  149. package/dist/types/src/components/SpaceSettings/SpaceSettingsDialog.d.ts.map +1 -1
  150. package/dist/types/src/components/SpaceSettings/SpaceSettingsPanel.d.ts +3 -5
  151. package/dist/types/src/components/SpaceSettings/SpaceSettingsPanel.d.ts.map +1 -1
  152. package/dist/types/src/components/SpaceSettings/SpaceSettingsPanel.stories.d.ts.map +1 -1
  153. package/dist/types/src/components/SyncStatus/InlineSyncStatus.d.ts +1 -2
  154. package/dist/types/src/components/SyncStatus/InlineSyncStatus.d.ts.map +1 -1
  155. package/dist/types/src/components/SyncStatus/Space.d.ts +2 -3
  156. package/dist/types/src/components/SyncStatus/Space.d.ts.map +1 -1
  157. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +3 -4
  158. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  159. package/dist/types/src/components/index.d.ts +1 -0
  160. package/dist/types/src/components/index.d.ts.map +1 -1
  161. package/dist/types/src/events.d.ts +4 -0
  162. package/dist/types/src/events.d.ts.map +1 -1
  163. package/dist/types/src/index.d.ts +1 -1
  164. package/dist/types/src/index.d.ts.map +1 -1
  165. package/dist/types/src/meta.d.ts +1 -0
  166. package/dist/types/src/meta.d.ts.map +1 -1
  167. package/dist/types/src/translations.d.ts +9 -0
  168. package/dist/types/src/translations.d.ts.map +1 -1
  169. package/dist/types/src/types/collection.d.ts +2 -2
  170. package/dist/types/src/types/thread.d.ts +34 -34
  171. package/dist/types/src/types/types.d.ts +37 -12
  172. package/dist/types/src/types/types.d.ts.map +1 -1
  173. package/dist/types/src/util.d.ts +3 -2
  174. package/dist/types/src/util.d.ts.map +1 -1
  175. package/package.json +41 -38
  176. package/src/SpacePlugin.tsx +44 -15
  177. package/src/capabilities/app-graph-builder.ts +19 -92
  178. package/src/capabilities/capabilities.ts +7 -2
  179. package/src/capabilities/index.ts +1 -0
  180. package/src/capabilities/intent-resolver.ts +428 -312
  181. package/src/capabilities/react-surface.tsx +32 -56
  182. package/src/capabilities/schema.ts +27 -0
  183. package/src/capabilities/spaces-ready.ts +20 -21
  184. package/src/components/AwaitingObject.tsx +5 -5
  185. package/src/components/BaseObjectSettings.tsx +7 -0
  186. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +1 -3
  187. package/src/components/CreateDialog/CreateObjectDialog.tsx +42 -34
  188. package/src/components/CreateDialog/CreateObjectPanel.tsx +126 -129
  189. package/src/components/CreateDialog/CreateSpaceDialog.tsx +18 -9
  190. package/src/components/JoinDialog.tsx +27 -19
  191. package/src/components/PopoverAddSpace.tsx +46 -0
  192. package/src/components/SpacePluginSettings.tsx +3 -3
  193. package/src/components/SpacePresence.stories.tsx +2 -2
  194. package/src/components/SpacePresence.tsx +2 -3
  195. package/src/components/SpaceSettings/SpaceSettingsDialog.tsx +16 -1
  196. package/src/components/SpaceSettings/SpaceSettingsPanel.stories.tsx +5 -1
  197. package/src/components/SpaceSettings/SpaceSettingsPanel.tsx +30 -8
  198. package/src/components/SyncStatus/InlineSyncStatus.tsx +2 -2
  199. package/src/components/SyncStatus/SyncStatus.tsx +2 -1
  200. package/src/components/index.ts +1 -0
  201. package/src/events.ts +6 -0
  202. package/src/index.ts +1 -1
  203. package/src/meta.ts +1 -0
  204. package/src/translations.ts +3 -0
  205. package/src/types/types.ts +23 -4
  206. package/src/util.tsx +16 -6
  207. package/dist/lib/browser/app-graph-builder-F6XSETHX.mjs.map +0 -7
  208. package/dist/lib/browser/chunk-IZ7QKQ2E.mjs.map +0 -7
  209. package/dist/lib/browser/chunk-SSJ772GK.mjs.map +0 -7
  210. package/dist/lib/browser/chunk-T36CIHPG.mjs.map +0 -7
  211. package/dist/lib/browser/chunk-UH5P4UL3.mjs.map +0 -7
  212. package/dist/lib/browser/chunk-XXD33C4E.mjs.map +0 -7
  213. package/dist/lib/browser/intent-resolver-XRZYCXXX.mjs +0 -459
  214. package/dist/lib/browser/intent-resolver-XRZYCXXX.mjs.map +0 -7
  215. package/dist/lib/browser/react-surface-EGOL2JBL.mjs.map +0 -7
  216. package/dist/lib/browser/spaces-ready-WVU7US3C.mjs.map +0 -7
  217. package/dist/lib/node/app-graph-builder-GKLVZ4PM.cjs.map +0 -7
  218. package/dist/lib/node/chunk-56NGXG2A.cjs.map +0 -7
  219. package/dist/lib/node/chunk-5D4RWKTV.cjs.map +0 -7
  220. package/dist/lib/node/chunk-AJRP7AD6.cjs.map +0 -7
  221. package/dist/lib/node/chunk-UENH2YBM.cjs.map +0 -7
  222. package/dist/lib/node/chunk-YCBBGTFD.cjs.map +0 -7
  223. package/dist/lib/node/intent-resolver-3NI6AUAI.cjs +0 -458
  224. package/dist/lib/node/intent-resolver-3NI6AUAI.cjs.map +0 -7
  225. package/dist/lib/node/react-surface-75KRPQYT.cjs.map +0 -7
  226. package/dist/lib/node/spaces-ready-ILVGUHJH.cjs.map +0 -7
  227. package/dist/lib/node-esm/app-graph-builder-NEHQ5Z63.mjs.map +0 -7
  228. package/dist/lib/node-esm/chunk-375RB3CZ.mjs.map +0 -7
  229. package/dist/lib/node-esm/chunk-5QMAPAZD.mjs.map +0 -7
  230. package/dist/lib/node-esm/chunk-E5DWIQ3N.mjs.map +0 -7
  231. package/dist/lib/node-esm/chunk-GVOPDPS2.mjs.map +0 -7
  232. package/dist/lib/node-esm/chunk-HTBGWQEU.mjs.map +0 -7
  233. package/dist/lib/node-esm/intent-resolver-P5EVBOGP.mjs +0 -460
  234. package/dist/lib/node-esm/intent-resolver-P5EVBOGP.mjs.map +0 -7
  235. package/dist/lib/node-esm/react-surface-7EVWCKIP.mjs.map +0 -7
  236. package/dist/lib/node-esm/spaces-ready-CH3W7OGN.mjs.map +0 -7
  237. /package/dist/lib/browser/{app-graph-serializer-FYJE23GN.mjs.map → app-graph-serializer-FOWFLYGU.mjs.map} +0 -0
  238. /package/dist/lib/browser/{identity-created-4Q4PFIC5.mjs.map → identity-created-FYGS6TBH.mjs.map} +0 -0
  239. /package/dist/lib/browser/{react-root-BDOPFJGJ.mjs.map → react-root-IP2ZB245.mjs.map} +0 -0
  240. /package/dist/lib/browser/{settings-WF67QZSD.mjs.map → settings-PHPCXX33.mjs.map} +0 -0
  241. /package/dist/lib/browser/{state-MS4KYJWI.mjs.map → state-INJ63O57.mjs.map} +0 -0
  242. /package/dist/lib/node/{app-graph-serializer-RMTU5YSC.cjs.map → app-graph-serializer-VQOGHKXL.cjs.map} +0 -0
  243. /package/dist/lib/node/{identity-created-QQWX7WX3.cjs.map → identity-created-AXI64BLE.cjs.map} +0 -0
  244. /package/dist/lib/node/{react-root-ZTR2J2I3.cjs.map → react-root-3OX5Z5CX.cjs.map} +0 -0
  245. /package/dist/lib/node/{settings-KOVSPA3S.cjs.map → settings-5QYFWNH7.cjs.map} +0 -0
  246. /package/dist/lib/node/{state-4UIOUKLJ.cjs.map → state-57UE3DYE.cjs.map} +0 -0
  247. /package/dist/lib/node-esm/{app-graph-serializer-UWWS5OVC.mjs.map → app-graph-serializer-GZRSWHEN.mjs.map} +0 -0
  248. /package/dist/lib/node-esm/{identity-created-HMNY2MPB.mjs.map → identity-created-3CGEXNPO.mjs.map} +0 -0
  249. /package/dist/lib/node-esm/{react-root-OUPJA4RY.mjs.map → react-root-7XXGP56B.mjs.map} +0 -0
  250. /package/dist/lib/node-esm/{settings-EDK6WI3V.mjs.map → settings-H6MXTEQM.mjs.map} +0 -0
  251. /package/dist/lib/node-esm/{state-BMISGQ2O.mjs.map → state-VYA6OFHD.mjs.map} +0 -0
@@ -26,8 +26,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_AJRP7AD6_exports = {};
30
- __export(chunk_AJRP7AD6_exports, {
29
+ var chunk_N2FS7PRA_exports = {};
30
+ __export(chunk_N2FS7PRA_exports, {
31
31
  AdvancedObjectSettings: () => AdvancedObjectSettings,
32
32
  AppGraphBuilder: () => AppGraphBuilder,
33
33
  AppGraphSerializer: () => AppGraphSerializer,
@@ -46,14 +46,17 @@ __export(chunk_AJRP7AD6_exports, {
46
46
  JOIN_DIALOG: () => JOIN_DIALOG,
47
47
  JoinDialog: () => JoinDialog,
48
48
  MenuFooter: () => MenuFooter,
49
+ POPOVER_ADD_SPACE: () => POPOVER_ADD_SPACE,
49
50
  POPOVER_RENAME_OBJECT: () => POPOVER_RENAME_OBJECT,
50
51
  POPOVER_RENAME_SPACE: () => POPOVER_RENAME_SPACE,
51
52
  PersistenceStatus: () => PersistenceStatus,
53
+ PopoverAddSpace: () => PopoverAddSpace,
52
54
  PopoverRenameObject: () => PopoverRenameObject,
53
55
  PopoverRenameSpace: () => PopoverRenameSpace,
54
56
  ReactRoot: () => ReactRoot,
55
57
  ReactSurface: () => ReactSurface,
56
58
  SPACE_SETTINGS_DIALOG: () => SPACE_SETTINGS_DIALOG,
59
+ Schema: () => Schema,
57
60
  ShareSpaceButton: () => ShareSpaceButton,
58
61
  ShareSpaceButtonImpl: () => ShareSpaceButtonImpl,
59
62
  SmallPresence: () => SmallPresence,
@@ -69,11 +72,11 @@ __export(chunk_AJRP7AD6_exports, {
69
72
  SyncStatusDetail: () => SyncStatusDetail,
70
73
  SyncStatusIndicator: () => SyncStatusIndicator
71
74
  });
72
- module.exports = __toCommonJS(chunk_AJRP7AD6_exports);
73
- var import_chunk_56NGXG2A = require("./chunk-56NGXG2A.cjs");
74
- var import_chunk_5D4RWKTV = require("./chunk-5D4RWKTV.cjs");
75
- var import_chunk_YCBBGTFD = require("./chunk-YCBBGTFD.cjs");
76
- var import_chunk_AO4EW2RX = require("./chunk-AO4EW2RX.cjs");
75
+ module.exports = __toCommonJS(chunk_N2FS7PRA_exports);
76
+ var import_chunk_YZKNRFHU = require("./chunk-YZKNRFHU.cjs");
77
+ var import_chunk_OVGKWJOC = require("./chunk-OVGKWJOC.cjs");
78
+ var import_chunk_WAJKBO3J = require("./chunk-WAJKBO3J.cjs");
79
+ var import_chunk_WZR6OAN3 = require("./chunk-WZR6OAN3.cjs");
77
80
  var import_react = __toESM(require("react"));
78
81
  var import_echo_schema = require("@dxos/echo-schema");
79
82
  var import_echo = require("@dxos/react-client/echo");
@@ -93,99 +96,105 @@ var import_react_ui4 = require("@dxos/react-ui");
93
96
  var import_effect = require("effect");
94
97
  var import_react6 = __toESM(require("react"));
95
98
  var import_app_framework2 = require("@dxos/app-framework");
99
+ var import_invariant = require("@dxos/invariant");
96
100
  var import_react_client2 = require("@dxos/react-client");
97
101
  var import_echo3 = require("@dxos/react-client/echo");
98
102
  var import_react_ui5 = require("@dxos/react-ui");
99
103
  var import_react7 = __toESM(require("react"));
100
104
  var import_app_framework3 = require("@dxos/app-framework");
101
105
  var import_echo_schema2 = require("@dxos/echo-schema");
102
- var import_echo4 = require("@dxos/react-client/echo");
106
+ var import_invariant2 = require("@dxos/invariant");
103
107
  var import_react_ui6 = require("@dxos/react-ui");
104
108
  var import_react_ui_form2 = require("@dxos/react-ui-form");
105
109
  var import_react_ui_searchlist = require("@dxos/react-ui-searchlist");
110
+ var import_react_ui_theme2 = require("@dxos/react-ui-theme");
106
111
  var import_util = require("@dxos/util");
107
- var import_react8 = __toESM(require("react"));
108
112
  var import_app_framework4 = require("@dxos/app-framework");
113
+ var import_effect2 = require("effect");
114
+ var import_react8 = __toESM(require("react"));
115
+ var import_app_framework5 = require("@dxos/app-framework");
109
116
  var import_react_ui7 = require("@dxos/react-ui");
110
117
  var import_react_ui_form3 = require("@dxos/react-ui-form");
111
118
  var import_react9 = __toESM(require("react"));
112
119
  var import_react_ui8 = require("@dxos/react-ui");
113
- var import_react_ui_theme2 = require("@dxos/react-ui-theme");
120
+ var import_react_ui_theme3 = require("@dxos/react-ui-theme");
114
121
  var import_react10 = __toESM(require("react"));
115
122
  var import_react_ui9 = require("@dxos/react-ui");
116
123
  var import_react11 = __toESM(require("react"));
117
- var import_app_framework5 = require("@dxos/app-framework");
118
- var import_plugin_graph = require("@dxos/plugin-graph");
124
+ var import_app_framework6 = require("@dxos/app-framework");
125
+ var import_log = require("@dxos/log");
119
126
  var import_types = require("@dxos/plugin-observability/types");
120
- var import_echo5 = require("@dxos/react-client/echo");
127
+ var import_react_client3 = require("@dxos/react-client");
121
128
  var import_react_ui10 = require("@dxos/react-ui");
122
129
  var import_react12 = require("@dxos/shell/react");
123
130
  var import_react13 = require("@phosphor-icons/react");
124
131
  var import_react14 = __toESM(require("react"));
125
- var import_echo6 = require("@dxos/client/echo");
126
- var import_react_client3 = require("@dxos/react-client");
132
+ var import_echo4 = require("@dxos/client/echo");
133
+ var import_react_client4 = require("@dxos/react-client");
127
134
  var import_react_ui11 = require("@dxos/react-ui");
128
135
  var import_react15 = require("@phosphor-icons/react");
129
136
  var import_react16 = __toESM(require("react"));
130
137
  var import_async = require("@dxos/async");
131
138
  var import_react_ui12 = require("@dxos/react-ui");
132
- var import_react_ui_theme3 = require("@dxos/react-ui-theme");
139
+ var import_react_ui_theme4 = require("@dxos/react-ui-theme");
133
140
  var import_react17 = __toESM(require("react"));
134
- var import_log = require("@dxos/log");
141
+ var import_app_framework7 = require("@dxos/app-framework");
135
142
  var import_react_ui13 = require("@dxos/react-ui");
136
143
  var import_react18 = __toESM(require("react"));
144
+ var import_log2 = require("@dxos/log");
137
145
  var import_react_ui14 = require("@dxos/react-ui");
138
146
  var import_react19 = __toESM(require("react"));
139
- var import_app_framework6 = require("@dxos/app-framework");
140
147
  var import_react_ui15 = require("@dxos/react-ui");
141
148
  var import_react20 = __toESM(require("react"));
142
- var import_app_framework7 = require("@dxos/app-framework");
149
+ var import_app_framework8 = require("@dxos/app-framework");
150
+ var import_react_ui16 = require("@dxos/react-ui");
151
+ var import_react21 = __toESM(require("react"));
152
+ var import_app_framework9 = require("@dxos/app-framework");
143
153
  var import_display_name = require("@dxos/display-name");
144
- var import_plugin_graph2 = require("@dxos/plugin-graph");
145
- var import_react_client4 = require("@dxos/react-client");
146
- var import_echo7 = require("@dxos/react-client/echo");
154
+ var import_react_client5 = require("@dxos/react-client");
155
+ var import_echo5 = require("@dxos/react-client/echo");
147
156
  var import_halo = require("@dxos/react-client/halo");
148
- var import_react_ui16 = require("@dxos/react-ui");
157
+ var import_react_ui17 = require("@dxos/react-ui");
149
158
  var import_react_ui_attention = require("@dxos/react-ui-attention");
150
159
  var import_util2 = require("@dxos/util");
151
- var import_app_framework8 = require("@dxos/app-framework");
152
- var import_react21 = require("react");
153
- var import_react22 = __toESM(require("react"));
154
- var import_react_ui17 = require("@dxos/react-ui");
155
- var import_react_ui_form4 = require("@dxos/react-ui-form");
160
+ var import_react22 = require("react");
156
161
  var import_react23 = __toESM(require("react"));
157
- var import_log2 = require("@dxos/log");
158
- var import_metadata = require("@dxos/protocols/proto/dxos/echo/metadata");
159
- var import_react_client5 = require("@dxos/react-client");
160
162
  var import_react_ui18 = require("@dxos/react-ui");
161
- var import_react_ui_form5 = require("@dxos/react-ui-form");
162
- var import_react_ui_theme4 = require("@dxos/react-ui-theme");
163
+ var import_react_ui_form4 = require("@dxos/react-ui-form");
163
164
  var import_react24 = __toESM(require("react"));
165
+ var import_log3 = require("@dxos/log");
166
+ var import_metadata = require("@dxos/protocols/proto/dxos/echo/metadata");
164
167
  var import_react_client6 = require("@dxos/react-client");
165
168
  var import_react_ui19 = require("@dxos/react-ui");
169
+ var import_react_ui_form5 = require("@dxos/react-ui-form");
170
+ var import_react_ui_pickers = require("@dxos/react-ui-pickers");
171
+ var import_react25 = __toESM(require("react"));
172
+ var import_app_framework10 = require("@dxos/app-framework");
173
+ var import_react_client7 = require("@dxos/react-client");
174
+ var import_react_ui20 = require("@dxos/react-ui");
166
175
  var import_react_ui_tabs = require("@dxos/react-ui-tabs");
167
- var import_react25 = require("@dxos/shell/react");
168
- var import_react26 = __toESM(require("react"));
169
- var import_plugin_graph3 = require("@dxos/plugin-graph");
176
+ var import_react26 = require("@dxos/shell/react");
177
+ var import_react27 = __toESM(require("react"));
178
+ var import_app_framework11 = require("@dxos/app-framework");
170
179
  var import_services = require("@dxos/protocols/proto/dxos/client/services");
171
180
  var import_metadata2 = require("@dxos/protocols/proto/dxos/echo/metadata");
172
- var import_react_client7 = require("@dxos/react-client");
173
- var import_react_ui20 = require("@dxos/react-ui");
181
+ var import_react_client8 = require("@dxos/react-client");
182
+ var import_react_ui21 = require("@dxos/react-ui");
174
183
  var import_react_ui_attention2 = require("@dxos/react-ui-attention");
175
- var import_react27 = require("react");
184
+ var import_react28 = require("react");
176
185
  var import_context = require("@dxos/context");
177
186
  var import_protocols = require("@dxos/protocols");
178
- var import_react_client8 = require("@dxos/react-client");
179
- var import_react28 = __toESM(require("react"));
180
- var import_plugin_status_bar = require("@dxos/plugin-status-bar");
181
187
  var import_react_client9 = require("@dxos/react-client");
182
- var import_react_ui21 = require("@dxos/react-ui");
183
- var import_react_ui_syntax_highlighter = require("@dxos/react-ui-syntax-highlighter");
184
- var import_react_ui_theme5 = require("@dxos/react-ui-theme");
185
188
  var import_react29 = __toESM(require("react"));
189
+ var import_plugin_status_bar = require("@dxos/plugin-status-bar");
186
190
  var import_react_client10 = require("@dxos/react-client");
187
- var import_echo8 = require("@dxos/react-client/echo");
188
191
  var import_react_ui22 = require("@dxos/react-ui");
192
+ var import_react_ui_syntax_highlighter = require("@dxos/react-ui-syntax-highlighter");
193
+ var import_react_ui_theme5 = require("@dxos/react-ui-theme");
194
+ var import_react30 = __toESM(require("react"));
195
+ var import_react_client11 = require("@dxos/react-client");
196
+ var import_echo6 = require("@dxos/react-client/echo");
197
+ var import_react_ui23 = require("@dxos/react-ui");
189
198
  var import_react_ui_theme6 = require("@dxos/react-ui-theme");
190
199
  var import_context2 = require("@dxos/context");
191
200
  var ForeignKeys = ({ keys, onDelete }) => {
@@ -198,7 +207,7 @@ var ForeignKeys = ({ keys, onDelete }) => {
198
207
  })));
199
208
  };
200
209
  var KeyItem = ({ forignKey, onDelete }) => {
201
- const { t } = (0, import_react_ui2.useTranslation)(import_chunk_AO4EW2RX.SPACE_PLUGIN);
210
+ const { t } = (0, import_react_ui2.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
202
211
  const handleDelete = (0, import_react2.useCallback)(() => {
203
212
  onDelete?.(forignKey);
204
213
  }, [
@@ -224,7 +233,7 @@ var initialValues = {
224
233
  id: ""
225
234
  };
226
235
  var AdvancedObjectSettings = ({ object }) => {
227
- const { t } = (0, import_react_ui.useTranslation)(import_chunk_AO4EW2RX.SPACE_PLUGIN);
236
+ const { t } = (0, import_react_ui.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
228
237
  const [adding, setAdding] = (0, import_react.useState)(false);
229
238
  const keys = (0, import_echo.getMeta)(object).keys;
230
239
  const handleNew = (0, import_react.useCallback)(() => setAdding(true), []);
@@ -275,9 +284,9 @@ var AwaitingObject = ({ id }) => {
275
284
  const [open, setOpen] = (0, import_react4.useState)(true);
276
285
  const [waiting, setWaiting] = (0, import_react4.useState)(true);
277
286
  const [found, setFound] = (0, import_react4.useState)(false);
278
- const { t } = (0, import_react_ui3.useTranslation)(import_chunk_AO4EW2RX.SPACE_PLUGIN);
287
+ const { t } = (0, import_react_ui3.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
279
288
  const { dispatchPromise: dispatch } = (0, import_app_framework.useIntentDispatcher)();
280
- const location = (0, import_app_framework.useCapability)(import_app_framework.Capabilities.Location);
289
+ const layout = (0, import_app_framework.useLayout)();
281
290
  const client = (0, import_react_client.useClient)();
282
291
  const objects = (0, import_echo2.useQuery)(client.spaces, import_echo2.Filter.all());
283
292
  (0, import_react4.useEffect)(() => {
@@ -294,27 +303,26 @@ var AwaitingObject = ({ id }) => {
294
303
  (0, import_react4.useEffect)(() => {
295
304
  if (objects.findIndex((object) => (0, import_echo2.fullyQualifiedId)(object) === id) > -1) {
296
305
  setFound(true);
297
- if (location.active.solo?.[0].id === id) {
306
+ if (layout.active.includes(id)) {
298
307
  setOpen(false);
299
308
  }
300
309
  }
301
310
  }, [
302
311
  id,
303
312
  objects,
304
- location
313
+ layout
305
314
  ]);
306
- const handleClose = (0, import_react4.useCallback)(async () => dispatch((0, import_app_framework.createIntent)(import_chunk_YCBBGTFD.SpaceAction.WaitForObject, {
315
+ const handleClose = (0, import_react4.useCallback)(async () => dispatch((0, import_app_framework.createIntent)(import_chunk_WAJKBO3J.SpaceAction.WaitForObject, {
307
316
  id: void 0
308
317
  })), [
309
318
  dispatch
310
319
  ]);
311
320
  const handleNavigate = (0, import_react4.useCallback)(() => {
312
- void dispatch((0, import_app_framework.createIntent)(import_app_framework.NavigationAction.Open, {
313
- activeParts: {
314
- main: [
315
- id
316
- ]
317
- }
321
+ void dispatch((0, import_app_framework.createIntent)(import_app_framework.LayoutAction.Open, {
322
+ part: "main",
323
+ subject: [
324
+ id
325
+ ]
318
326
  }));
319
327
  void handleClose();
320
328
  }, [
@@ -355,18 +363,26 @@ var AwaitingObject = ({ id }) => {
355
363
  })))));
356
364
  };
357
365
  var BaseObjectSettings = ({ object }) => {
358
- const { t } = (0, import_react_ui4.useTranslation)(import_chunk_AO4EW2RX.SPACE_PLUGIN);
366
+ const { t } = (0, import_react_ui4.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
367
+ const inputRef = import_react5.default.useRef(null);
359
368
  return /* @__PURE__ */ import_react5.default.createElement("div", {
360
369
  role: "form",
361
370
  className: "flex flex-col w-full p-2 gap-1"
362
371
  }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui4.Input.Root, null, /* @__PURE__ */ import_react5.default.createElement(import_react_ui4.Input.Label, null, t("name label")), /* @__PURE__ */ import_react5.default.createElement(import_react_ui4.Input.TextInput, {
372
+ ref: inputRef,
363
373
  placeholder: t("name placeholder"),
364
374
  value: object.name ?? "",
365
375
  onChange: (event) => {
366
376
  object.name = event.target.value;
377
+ },
378
+ onKeyDown: (event) => {
379
+ if (event.key === "Enter") {
380
+ inputRef.current?.blur();
381
+ }
367
382
  }
368
383
  })));
369
384
  };
385
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/CreateDialog/CreateObjectPanel.tsx";
370
386
  var useInputSurfaceLookup = (baseData) => {
371
387
  const pluginManager = (0, import_app_framework3.usePluginManager)();
372
388
  return (0, import_react7.useCallback)(({ prop, schema, inputProps }) => {
@@ -391,38 +407,122 @@ var useInputSurfaceLookup = (baseData) => {
391
407
  baseData
392
408
  ]);
393
409
  };
394
- var CreateObjectPanel = ({ schemas, spaces, typename: initialTypename, target: initialTarget, name: initialName, defaultSpaceId, resolve, onCreateObject }) => {
395
- const { t } = (0, import_react_ui6.useTranslation)(import_chunk_AO4EW2RX.SPACE_PLUGIN);
410
+ var CreateObjectPanel = ({ classNames, forms, spaces, typename: initialTypename, target: initialTarget, name: initialName, defaultSpaceId, resolve, onCreateObject }) => {
411
+ const { t } = (0, import_react_ui6.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
396
412
  const [typename, setTypename] = (0, import_react7.useState)(initialTypename);
397
413
  const [target, setTarget] = (0, import_react7.useState)(initialTarget);
398
- const schema = schemas.find((schema2) => (0, import_echo_schema2.getObjectAnnotation)(schema2)?.typename === typename);
399
- const options = schemas.map(import_echo_schema2.getObjectAnnotation).filter(import_util.nonNullable);
400
- const handleClearSchema = (0, import_react7.useCallback)(() => setTypename(void 0), []);
401
- const handleClearTarget = (0, import_react7.useCallback)(() => setTarget(void 0), []);
414
+ const form = forms.find((form2) => (0, import_echo_schema2.getObjectAnnotation)(form2.objectSchema)?.typename === typename);
415
+ const options = forms.map((form2) => (0, import_echo_schema2.getObjectAnnotation)(form2.objectSchema)).filter(import_util.isNonNullable).sort((a, b) => {
416
+ const nameA = t("typename label", {
417
+ ns: a.typename,
418
+ defaultValue: a.typename
419
+ });
420
+ const nameB = t("typename label", {
421
+ ns: b.typename,
422
+ defaultValue: b.typename
423
+ });
424
+ return nameA.localeCompare(nameB);
425
+ });
402
426
  const handleCreateObject = (0, import_react7.useCallback)(async (props) => {
403
- if (!schema || !target) {
427
+ if (!form || !target) {
404
428
  return;
405
429
  }
406
430
  await onCreateObject?.({
407
- schema,
431
+ form,
408
432
  target,
409
433
  data: props
410
434
  });
411
435
  }, [
412
436
  onCreateObject,
413
- schema,
437
+ form,
414
438
  target
415
439
  ]);
416
- const metadata = (0, import_react7.useMemo)(() => {
417
- if (!typename) {
418
- return;
440
+ const handleSetTypename = (0, import_react7.useCallback)(async (typename2) => {
441
+ (0, import_invariant2.invariant)(target, "target is required", {
442
+ F: __dxlog_file,
443
+ L: 94,
444
+ S: void 0,
445
+ A: [
446
+ "target",
447
+ "'target is required'"
448
+ ]
449
+ });
450
+ const form2 = forms.find((form3) => (0, import_echo_schema2.getObjectAnnotation)(form3.objectSchema)?.typename === typename2);
451
+ if (form2 && !form2.formSchema) {
452
+ await onCreateObject?.({
453
+ form: form2,
454
+ target
455
+ });
456
+ } else {
457
+ setTypename(typename2);
419
458
  }
420
- return resolve?.(typename);
421
459
  }, [
422
- resolve,
423
- typename
460
+ forms,
461
+ onCreateObject,
462
+ target
424
463
  ]);
425
- const schemaInput = /* @__PURE__ */ import_react7.default.createElement(import_react_ui_searchlist.SearchList.Root, {
464
+ const inputSurfaceLookup = useInputSurfaceLookup({
465
+ target
466
+ });
467
+ return /* @__PURE__ */ import_react7.default.createElement("div", {
468
+ role: "form",
469
+ className: (0, import_react_ui_theme2.mx)("flex flex-col gap-2", classNames)
470
+ }, !form ? /* @__PURE__ */ import_react7.default.createElement(SelectSchema, {
471
+ options,
472
+ resolve,
473
+ onChange: handleSetTypename
474
+ }) : !target ? /* @__PURE__ */ import_react7.default.createElement(SelectSpace, {
475
+ spaces,
476
+ defaultSpaceId,
477
+ onChange: setTarget
478
+ }) : form.formSchema ? /* @__PURE__ */ import_react7.default.createElement(import_react_ui_form2.Form, {
479
+ classNames: "!p-0",
480
+ autoFocus: true,
481
+ values: {
482
+ name: initialName
483
+ },
484
+ schema: form.formSchema,
485
+ testId: "create-object-form",
486
+ onSave: handleCreateObject,
487
+ lookupComponent: inputSurfaceLookup
488
+ }) : void 0);
489
+ };
490
+ var SelectSpace = ({ spaces, defaultSpaceId, onChange }) => {
491
+ const { t } = (0, import_react_ui6.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
492
+ return /* @__PURE__ */ import_react7.default.createElement(import_react_ui_searchlist.SearchList.Root, {
493
+ label: t("space input label"),
494
+ classNames: "flex flex-col grow overflow-hidden"
495
+ }, /* @__PURE__ */ import_react7.default.createElement(import_react_ui_searchlist.SearchList.Input, {
496
+ autoFocus: true,
497
+ "data-testid": "create-object-form.space-input",
498
+ placeholder: t("space input placeholder"),
499
+ classNames: "px-1 my-2"
500
+ }), /* @__PURE__ */ import_react7.default.createElement(import_react_ui_searchlist.SearchList.Content, {
501
+ classNames: "max-bs-[24rem] overflow-auto"
502
+ }, spaces.sort((a, b) => {
503
+ const aName = (0, import_react_ui6.toLocalizedString)((0, import_chunk_OVGKWJOC.getSpaceDisplayName)(a, {
504
+ personal: a.id === defaultSpaceId
505
+ }), t);
506
+ const bName = (0, import_react_ui6.toLocalizedString)((0, import_chunk_OVGKWJOC.getSpaceDisplayName)(b, {
507
+ personal: b.id === defaultSpaceId
508
+ }), t);
509
+ return aName.localeCompare(bName);
510
+ }).map((space) => /* @__PURE__ */ import_react7.default.createElement(import_react_ui_searchlist.SearchList.Item, {
511
+ key: space.id,
512
+ value: (0, import_react_ui6.toLocalizedString)((0, import_chunk_OVGKWJOC.getSpaceDisplayName)(space, {
513
+ personal: space.id === defaultSpaceId
514
+ }), t),
515
+ onSelect: () => onChange(space),
516
+ classNames: "flex items-center gap-2"
517
+ }, /* @__PURE__ */ import_react7.default.createElement("span", {
518
+ className: "grow truncate"
519
+ }, (0, import_react_ui6.toLocalizedString)((0, import_chunk_OVGKWJOC.getSpaceDisplayName)(space, {
520
+ personal: space.id === defaultSpaceId
521
+ }), t))))));
522
+ };
523
+ var SelectSchema = ({ options, resolve, onChange }) => {
524
+ const { t } = (0, import_react_ui6.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
525
+ return /* @__PURE__ */ import_react7.default.createElement(import_react_ui_searchlist.SearchList.Root, {
426
526
  label: t("schema input label"),
427
527
  classNames: "flex flex-col grow overflow-hidden"
428
528
  }, /* @__PURE__ */ import_react7.default.createElement(import_react_ui_searchlist.SearchList.Input, {
@@ -438,7 +538,7 @@ var CreateObjectPanel = ({ schemas, spaces, typename: initialTypename, target: i
438
538
  ns: option.typename,
439
539
  defaultValue: option.typename
440
540
  }),
441
- onSelect: () => setTypename(option.typename),
541
+ onSelect: () => onChange(option.typename),
442
542
  classNames: "flex items-center gap-2"
443
543
  }, /* @__PURE__ */ import_react7.default.createElement("span", {
444
544
  className: "flex gap-2 items-center grow truncate"
@@ -449,113 +549,60 @@ var CreateObjectPanel = ({ schemas, spaces, typename: initialTypename, target: i
449
549
  ns: option.typename,
450
550
  defaultValue: option.typename
451
551
  }))))));
452
- const spaceInput = /* @__PURE__ */ import_react7.default.createElement(import_react_ui_searchlist.SearchList.Root, {
453
- label: t("space input label"),
454
- classNames: "flex flex-col grow overflow-hidden"
455
- }, /* @__PURE__ */ import_react7.default.createElement(import_react_ui_searchlist.SearchList.Input, {
456
- autoFocus: true,
457
- "data-testid": "create-object-form.space-input",
458
- placeholder: t("space input placeholder"),
459
- classNames: "px-1 my-2"
460
- }), /* @__PURE__ */ import_react7.default.createElement(import_react_ui_searchlist.SearchList.Content, {
461
- classNames: "max-bs-[24rem] overflow-auto"
462
- }, spaces.map((space) => /* @__PURE__ */ import_react7.default.createElement(import_react_ui_searchlist.SearchList.Item, {
463
- key: space.id,
464
- value: (0, import_react_ui6.toLocalizedString)((0, import_chunk_5D4RWKTV.getSpaceDisplayName)(space, {
465
- personal: space.id === defaultSpaceId
466
- }), t),
467
- onSelect: () => setTarget(space),
468
- classNames: "flex items-center gap-2"
469
- }, /* @__PURE__ */ import_react7.default.createElement("span", {
470
- className: "grow truncate"
471
- }, (0, import_react_ui6.toLocalizedString)((0, import_chunk_5D4RWKTV.getSpaceDisplayName)(space, {
472
- personal: space.id === defaultSpaceId
473
- }), t))))));
474
- const inputSurfaceLookup = useInputSurfaceLookup({
475
- target
476
- });
477
- const form = (0, import_react7.useMemo)(() => {
478
- const schema2 = metadata?.creationSchema ?? import_echo_schema2.S.Struct({
479
- name: import_echo_schema2.S.optional(import_echo_schema2.S.String)
480
- });
481
- return /* @__PURE__ */ import_react7.default.createElement(import_react_ui_form2.Form, {
482
- autoFocus: true,
483
- values: {
484
- name: initialName
485
- },
486
- schema: schema2,
487
- testId: "create-object-form",
488
- onSave: handleCreateObject,
489
- lookupComponent: inputSurfaceLookup
490
- });
491
- }, [
492
- initialName,
493
- handleCreateObject,
494
- metadata
495
- ]);
496
- return /* @__PURE__ */ import_react7.default.createElement("div", {
497
- role: "form",
498
- className: "flex flex-col gap-2"
499
- }, target && /* @__PURE__ */ import_react7.default.createElement("div", {
500
- role: "none"
501
- }, /* @__PURE__ */ import_react7.default.createElement(import_react_ui6.Input.Root, null, /* @__PURE__ */ import_react7.default.createElement(import_react_ui_form2.InputHeader, null, /* @__PURE__ */ import_react7.default.createElement(import_react_ui6.Input.Label, null, t((0, import_echo4.isSpace)(target) ? "creating in space label" : "creating in collection label"))), /* @__PURE__ */ import_react7.default.createElement("div", {
502
- role: "none",
503
- className: "flex gap-2"
504
- }, /* @__PURE__ */ import_react7.default.createElement(import_react_ui6.Input.TextInput, {
505
- disabled: true,
506
- value: (0, import_echo4.isSpace)(target) ? (0, import_react_ui6.toLocalizedString)((0, import_chunk_5D4RWKTV.getSpaceDisplayName)(target, {
507
- personal: target.id === defaultSpaceId
508
- }), t) : target.name || t("unnamed collection label")
509
- }), /* @__PURE__ */ import_react7.default.createElement(import_react_ui6.IconButton, {
510
- iconOnly: true,
511
- icon: "ph--x--regular",
512
- label: t("clear input label"),
513
- onClick: handleClearTarget
514
- })))), schema && /* @__PURE__ */ import_react7.default.createElement("div", {
515
- role: "none"
516
- }, /* @__PURE__ */ import_react7.default.createElement(import_react_ui6.Input.Root, null, /* @__PURE__ */ import_react7.default.createElement(import_react_ui_form2.InputHeader, null, /* @__PURE__ */ import_react7.default.createElement(import_react_ui6.Input.Label, null, t("creating object type label"))), /* @__PURE__ */ import_react7.default.createElement("div", {
517
- role: "none",
518
- className: "flex gap-2"
519
- }, /* @__PURE__ */ import_react7.default.createElement(import_react_ui6.Input.TextInput, {
520
- disabled: true,
521
- value: t("typename label", {
522
- ns: schema.typename,
523
- defaultValue: schema.typename
524
- })
525
- }), /* @__PURE__ */ import_react7.default.createElement(import_react_ui6.IconButton, {
526
- iconOnly: true,
527
- icon: "ph--x--regular",
528
- label: t("clear input label"),
529
- onClick: handleClearSchema
530
- })))), !schema ? schemaInput : !target ? spaceInput : form);
531
552
  };
532
- var CREATE_OBJECT_DIALOG = `${import_chunk_AO4EW2RX.SPACE_PLUGIN}/CreateObjectDialog`;
533
- var CreateObjectDialog = ({ schemas, target, typename, name, shouldNavigate: _shouldNavigate, resolve }) => {
553
+ var AppGraphBuilder = (0, import_app_framework4.lazy)(() => import("./app-graph-builder-ZIUBXRPA.cjs"));
554
+ var AppGraphSerializer = (0, import_app_framework4.lazy)(() => import("./app-graph-serializer-VQOGHKXL.cjs"));
555
+ var IdentityCreated = (0, import_app_framework4.lazy)(() => import("./identity-created-AXI64BLE.cjs"));
556
+ var IntentResolver = (0, import_app_framework4.lazy)(() => import("./intent-resolver-MLENGECT.cjs"));
557
+ var ReactRoot = (0, import_app_framework4.lazy)(() => import("./react-root-3OX5Z5CX.cjs"));
558
+ var ReactSurface = (0, import_app_framework4.lazy)(() => import("./react-surface-5NYCMXSM.cjs"));
559
+ var Schema = (0, import_app_framework4.lazy)(() => import("./schema-YN7WVFRX.cjs"));
560
+ var SpaceSettings = (0, import_app_framework4.lazy)(() => import("./settings-5QYFWNH7.cjs"));
561
+ var SpaceState = (0, import_app_framework4.lazy)(() => import("./state-57UE3DYE.cjs"));
562
+ var SpacesReady = (0, import_app_framework4.lazy)(() => import("./spaces-ready-FQNAKR7G.cjs"));
563
+ var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/CreateDialog/CreateObjectDialog.tsx";
564
+ var CREATE_OBJECT_DIALOG = `${import_chunk_WZR6OAN3.SPACE_PLUGIN}/CreateObjectDialog`;
565
+ var CreateObjectDialog = ({ target, typename, name, shouldNavigate: _shouldNavigate }) => {
534
566
  const closeRef = (0, import_react6.useRef)(null);
535
- const { t } = (0, import_react_ui5.useTranslation)(import_chunk_AO4EW2RX.SPACE_PLUGIN);
567
+ const manager = (0, import_app_framework2.usePluginManager)();
568
+ const { t } = (0, import_react_ui5.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
536
569
  const client = (0, import_react_client2.useClient)();
537
570
  const spaces = (0, import_echo3.useSpaces)();
538
571
  const { dispatchPromise: dispatch } = (0, import_app_framework2.useIntentDispatcher)();
539
- const handleCreateObject = (0, import_react6.useCallback)(async ({ schema, target: _target, data }) => {
540
- const target2 = (0, import_echo3.isSpace)(_target) ? _target.properties[import_chunk_YCBBGTFD.CollectionType.typename]?.target : _target;
541
- const createObjectIntent = resolve?.(schema.typename)?.createObject;
542
- if (!createObjectIntent || !target2) {
572
+ const forms = (0, import_app_framework2.useCapabilities)(import_chunk_YZKNRFHU.SpaceCapabilities.ObjectForm);
573
+ const resolve = (0, import_react6.useCallback)((typename2) => manager.context.requestCapabilities(import_app_framework2.Capabilities.Metadata).find(({ id }) => id === typename2)?.metadata ?? {}, [
574
+ manager
575
+ ]);
576
+ const handleCreateObject = (0, import_react6.useCallback)(async ({ form, target: _target, data = {} }) => {
577
+ const target2 = (0, import_echo3.isSpace)(_target) ? _target.properties[import_chunk_WAJKBO3J.CollectionType.typename]?.target : _target;
578
+ if (!target2) {
543
579
  return;
544
580
  }
545
581
  closeRef.current?.click();
546
582
  const space = (0, import_echo3.isSpace)(target2) ? target2 : (0, import_echo3.getSpace)(target2);
547
- const result = await dispatch(createObjectIntent(data, {
583
+ (0, import_invariant.invariant)(space, "Missing space", {
584
+ F: __dxlog_file2,
585
+ L: 75,
586
+ S: void 0,
587
+ A: [
588
+ "space",
589
+ "'Missing space'"
590
+ ]
591
+ });
592
+ const result = await dispatch(form.getIntent(data, {
548
593
  space
549
594
  }));
550
595
  const object = result.data?.object;
551
596
  if ((0, import_echo3.isReactiveObject)(object)) {
552
- const addObjectIntent = (0, import_app_framework2.createIntent)(import_chunk_YCBBGTFD.SpaceAction.AddObject, {
597
+ const addObjectIntent = (0, import_app_framework2.createIntent)(import_chunk_WAJKBO3J.SpaceAction.AddObject, {
553
598
  target: target2,
554
599
  object
555
600
  });
556
601
  const shouldNavigate = _shouldNavigate ?? (() => true);
557
602
  if (shouldNavigate(object)) {
558
- await dispatch((0, import_effect.pipe)(addObjectIntent, (0, import_app_framework2.chain)(import_app_framework2.NavigationAction.Open, {})));
603
+ await dispatch((0, import_effect.pipe)(addObjectIntent, (0, import_app_framework2.chain)(import_app_framework2.LayoutAction.Open, {
604
+ part: "main"
605
+ })));
559
606
  } else {
560
607
  await dispatch(addObjectIntent);
561
608
  }
@@ -568,7 +615,7 @@ var CreateObjectDialog = ({ schemas, target, typename, name, shouldNavigate: _sh
568
615
  // TODO(wittjosiah): The tablist dialog pattern is copied from @dxos/plugin-manager.
569
616
  // Consider factoring it out to the tabs package.
570
617
  /* @__PURE__ */ import_react6.default.createElement(import_react_ui5.Dialog.Content, {
571
- classNames: "p-0 bs-content min-bs-[15rem] max-bs-full md:max-is-[40rem] overflow-hidden"
618
+ classNames: "p-0 bs-content max-bs-full md:max-is-[40rem] overflow-hidden"
572
619
  }, /* @__PURE__ */ import_react6.default.createElement("div", {
573
620
  role: "none",
574
621
  className: "flex justify-between pbs-2 pis-2 pie-2 @md:pbs-4 @md:pis-4 @md:pie-4"
@@ -582,10 +629,9 @@ var CreateObjectDialog = ({ schemas, target, typename, name, shouldNavigate: _sh
582
629
  }, /* @__PURE__ */ import_react6.default.createElement(import_react_ui5.Icon, {
583
630
  icon: "ph--x--regular",
584
631
  size: 4
585
- })))), /* @__PURE__ */ import_react6.default.createElement("div", {
586
- className: "p-4"
587
- }, /* @__PURE__ */ import_react6.default.createElement(CreateObjectPanel, {
588
- schemas,
632
+ })))), /* @__PURE__ */ import_react6.default.createElement(CreateObjectPanel, {
633
+ classNames: "p-4",
634
+ forms,
589
635
  spaces,
590
636
  target,
591
637
  typename,
@@ -593,25 +639,29 @@ var CreateObjectDialog = ({ schemas, target, typename, name, shouldNavigate: _sh
593
639
  defaultSpaceId: client.spaces.default.id,
594
640
  resolve,
595
641
  onCreateObject: handleCreateObject
596
- })))
642
+ }))
597
643
  );
598
644
  };
599
- var CREATE_SPACE_DIALOG = `${import_chunk_AO4EW2RX.SPACE_PLUGIN}/CreateSpaceDialog`;
645
+ var CREATE_SPACE_DIALOG = `${import_chunk_WZR6OAN3.SPACE_PLUGIN}/CreateSpaceDialog`;
600
646
  var initialValues2 = {
601
647
  edgeReplication: true
602
648
  };
603
649
  var CreateSpaceDialog = () => {
604
650
  const closeRef = (0, import_react8.useRef)(null);
605
- const { t } = (0, import_react_ui7.useTranslation)(import_chunk_AO4EW2RX.SPACE_PLUGIN);
606
- const { dispatchPromise: dispatch } = (0, import_app_framework4.useIntentDispatcher)();
651
+ const { t } = (0, import_react_ui7.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
652
+ const { dispatch } = (0, import_app_framework5.useIntentDispatcher)();
607
653
  const handleCreateSpace = (0, import_react8.useCallback)(async (data) => {
608
- const result = await dispatch((0, import_app_framework4.createIntent)(import_chunk_YCBBGTFD.SpaceAction.Create, data));
609
- const target = result.data?.space;
610
- if (target) {
611
- await dispatch((0, import_app_framework4.createIntent)(import_chunk_YCBBGTFD.SpaceAction.OpenCreateObject, {
612
- target
654
+ const program = import_effect2.Effect.gen(function* () {
655
+ const { space } = yield* dispatch((0, import_app_framework5.createIntent)(import_chunk_WAJKBO3J.SpaceAction.Create, data));
656
+ yield* dispatch((0, import_app_framework5.createIntent)(import_app_framework5.LayoutAction.SwitchWorkspace, {
657
+ part: "workspace",
658
+ subject: space.id
613
659
  }));
614
- }
660
+ yield* dispatch((0, import_app_framework5.createIntent)(import_chunk_WAJKBO3J.SpaceAction.OpenCreateObject, {
661
+ target: space
662
+ }));
663
+ });
664
+ await import_effect2.Effect.runPromise(program);
615
665
  }, [
616
666
  dispatch
617
667
  ]);
@@ -619,7 +669,7 @@ var CreateSpaceDialog = () => {
619
669
  // TODO(wittjosiah): The tablist dialog pattern is copied from @dxos/plugin-manager.
620
670
  // Consider factoring it out to the tabs package.
621
671
  /* @__PURE__ */ import_react8.default.createElement(import_react_ui7.Dialog.Content, {
622
- classNames: "p-0 bs-content min-bs-[15rem] max-bs-full md:max-is-[40rem] overflow-hidden"
672
+ classNames: "p-0 bs-content min-bs-[16rem] max-bs-full md:max-is-[32rem] overflow-hidden"
623
673
  }, /* @__PURE__ */ import_react8.default.createElement("div", {
624
674
  role: "none",
625
675
  className: "flex justify-between pbs-2 pis-2 pie-2 @md:pbs-4 @md:pis-4 @md:pie-4"
@@ -637,56 +687,83 @@ var CreateSpaceDialog = () => {
637
687
  className: "p-4"
638
688
  }, /* @__PURE__ */ import_react8.default.createElement(import_react_ui_form3.Form, {
639
689
  testId: "create-space-form",
690
+ classNames: "!p-0",
691
+ autoFocus: true,
640
692
  values: initialValues2,
641
- schema: import_chunk_YCBBGTFD.SpaceForm,
693
+ schema: import_chunk_WAJKBO3J.SpaceForm,
642
694
  onSave: handleCreateSpace
643
695
  })))
644
696
  );
645
697
  };
646
698
  var CollectionMain = ({ collection }) => {
647
- const { t } = (0, import_react_ui8.useTranslation)(import_chunk_AO4EW2RX.SPACE_PLUGIN);
699
+ const { t } = (0, import_react_ui8.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
648
700
  return /* @__PURE__ */ import_react9.default.createElement("div", {
649
701
  role: "none",
650
- className: (0, import_react_ui_theme2.mx)(import_react_ui_theme2.baseSurface, "min-bs-screen is-full flex items-center justify-center p-8"),
702
+ className: (0, import_react_ui_theme3.mx)(import_react_ui_theme3.baseSurface, "min-bs-screen is-full flex items-center justify-center p-8"),
651
703
  "data-testid": "composer.firstRunMessage"
652
704
  }, /* @__PURE__ */ import_react9.default.createElement("p", {
653
705
  role: "alert",
654
- className: (0, import_react_ui_theme2.mx)(import_react_ui_theme2.descriptionText, "border border-dashed border-neutral-400/50 rounded-lg p-8 font-normal text-lg max-is-[24rem] break-words")
706
+ className: (0, import_react_ui_theme3.mx)(import_react_ui_theme3.descriptionText, "border border-dashed border-neutral-400/50 rounded-lg p-8 font-normal text-lg max-is-[24rem] break-words")
655
707
  }, collection.name ?? t("unnamed collection label")));
656
708
  };
657
709
  var CollectionSection = ({ collection }) => {
658
- const { t } = (0, import_react_ui9.useTranslation)(import_chunk_AO4EW2RX.SPACE_PLUGIN);
710
+ const { t } = (0, import_react_ui9.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
659
711
  return /* @__PURE__ */ import_react10.default.createElement("div", {
660
712
  className: "min-bs-[3.5rem] grid grid-rows-subgrid grid-cols-subgrid items-center"
661
713
  }, /* @__PURE__ */ import_react10.default.createElement("span", {
662
714
  className: "truncate"
663
715
  }, collection.name ?? t("unnamed collection label")));
664
716
  };
665
- var JOIN_DIALOG = `${import_chunk_AO4EW2RX.SPACE_PLUGIN}/JoinDialog`;
717
+ var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/JoinDialog.tsx";
718
+ var JOIN_DIALOG = `${import_chunk_WZR6OAN3.SPACE_PLUGIN}/JoinDialog`;
666
719
  var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
667
- const { t } = (0, import_react_ui10.useTranslation)(import_chunk_AO4EW2RX.SPACE_PLUGIN);
668
- const { dispatchPromise: dispatch } = (0, import_app_framework5.useIntentDispatcher)();
669
- const spaces = (0, import_echo5.useSpaces)();
670
- const { graph } = (0, import_plugin_graph.useGraph)();
720
+ const { dispatchPromise: dispatch } = (0, import_app_framework6.useIntentDispatcher)();
721
+ const client = (0, import_react_client3.useClient)();
722
+ const { graph } = (0, import_app_framework6.useAppGraph)();
671
723
  const handleDone = (0, import_react11.useCallback)(async (result) => {
672
724
  if (result?.spaceKey) {
673
725
  await Promise.all([
674
- dispatch((0, import_app_framework5.createIntent)(import_app_framework5.LayoutAction.SetLayout, {
675
- element: "toast",
726
+ dispatch((0, import_app_framework6.createIntent)(import_app_framework6.LayoutAction.AddToast, {
727
+ part: "toast",
676
728
  subject: {
677
- id: `${import_chunk_AO4EW2RX.SPACE_PLUGIN}/join-success`,
729
+ id: `${import_chunk_WZR6OAN3.SPACE_PLUGIN}/join-success`,
678
730
  duration: 5e3,
679
- title: t("join success label"),
680
- closeLabel: t("dismiss label")
731
+ title: [
732
+ "join success label",
733
+ {
734
+ ns: import_chunk_WZR6OAN3.SPACE_PLUGIN
735
+ }
736
+ ],
737
+ closeLabel: [
738
+ "dismiss label",
739
+ {
740
+ ns: import_chunk_WZR6OAN3.SPACE_PLUGIN
741
+ }
742
+ ]
681
743
  }
682
744
  })),
683
- dispatch((0, import_app_framework5.createIntent)(import_app_framework5.LayoutAction.SetLayout, {
684
- element: "dialog",
685
- state: false
745
+ dispatch((0, import_app_framework6.createIntent)(import_app_framework6.LayoutAction.UpdateDialog, {
746
+ part: "dialog",
747
+ options: {
748
+ state: false
749
+ }
686
750
  }))
687
751
  ]);
688
752
  }
689
- const space = spaces.find(({ key }) => result?.spaceKey?.equals(key));
753
+ const space = result?.spaceKey ? client.spaces.get(result.spaceKey) : void 0;
754
+ if (!space) {
755
+ import_log.log.warn("Space not found", result?.spaceKey, {
756
+ F: __dxlog_file3,
757
+ L: 56,
758
+ S: void 0,
759
+ C: (f, a) => f(...a)
760
+ });
761
+ return;
762
+ }
763
+ await dispatch((0, import_app_framework6.createIntent)(import_app_framework6.LayoutAction.SwitchWorkspace, {
764
+ part: "workspace",
765
+ subject: space.id
766
+ }));
690
767
  const target = result?.target || (navigableCollections ? space?.id : void 0);
691
768
  if (target) {
692
769
  await graph.waitForPath({
@@ -694,21 +771,21 @@ var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
694
771
  }).catch(() => {
695
772
  });
696
773
  await Promise.all([
697
- dispatch((0, import_app_framework5.createIntent)(import_app_framework5.NavigationAction.Open, {
698
- activeParts: {
699
- main: [
700
- target
701
- ]
702
- }
774
+ dispatch((0, import_app_framework6.createIntent)(import_app_framework6.LayoutAction.Open, {
775
+ part: "main",
776
+ subject: [
777
+ target
778
+ ]
703
779
  })),
704
- dispatch((0, import_app_framework5.createIntent)(import_app_framework5.NavigationAction.Expose, {
705
- id: target
780
+ dispatch((0, import_app_framework6.createIntent)(import_app_framework6.LayoutAction.Expose, {
781
+ part: "navigation",
782
+ subject: target
706
783
  }))
707
784
  ]);
708
785
  }
709
786
  await onDone?.(result);
710
787
  if (space) {
711
- await dispatch((0, import_app_framework5.createIntent)(import_types.ObservabilityAction.SendEvent, {
788
+ await dispatch((0, import_app_framework6.createIntent)(import_types.ObservabilityAction.SendEvent, {
712
789
  name: "space.join",
713
790
  properties: {
714
791
  spaceId: space.id
@@ -717,7 +794,8 @@ var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
717
794
  }
718
795
  }, [
719
796
  dispatch,
720
- spaces
797
+ client,
798
+ graph
721
799
  ]);
722
800
  return /* @__PURE__ */ import_react11.default.createElement(import_react_ui10.Dialog.Content, null, /* @__PURE__ */ import_react11.default.createElement(import_react12.JoinPanel, {
723
801
  ...props,
@@ -731,10 +809,10 @@ var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
731
809
  }));
732
810
  };
733
811
  var MenuFooter = ({ object }) => {
734
- const { t } = (0, import_react_ui11.useTranslation)(import_chunk_AO4EW2RX.SPACE_PLUGIN);
735
- const client = (0, import_react_client3.useClient)();
736
- const space = (0, import_echo6.getSpace)(object);
737
- const spaceName = space ? (0, import_chunk_5D4RWKTV.getSpaceDisplayName)(space, {
812
+ const { t } = (0, import_react_ui11.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
813
+ const client = (0, import_react_client4.useClient)();
814
+ const space = (0, import_echo4.getSpace)(object);
815
+ const spaceName = space ? (0, import_chunk_OVGKWJOC.getSpaceDisplayName)(space, {
738
816
  personal: client.spaces.default === space
739
817
  }) : "";
740
818
  return space ? /* @__PURE__ */ import_react14.default.createElement(import_react14.default.Fragment, null, /* @__PURE__ */ import_react14.default.createElement(import_react_ui11.DropdownMenu.Separator, null), /* @__PURE__ */ import_react14.default.createElement(import_react_ui11.DropdownMenu.GroupLabel, null, t("menu footer label")), /* @__PURE__ */ import_react14.default.createElement("dl", {
@@ -754,7 +832,7 @@ var Status;
754
832
  Status2[Status2["ERROR"] = 2] = "ERROR";
755
833
  })(Status || (Status = {}));
756
834
  var PersistenceStatus = ({ db }) => {
757
- const { t } = (0, import_react_ui12.useTranslation)(import_chunk_AO4EW2RX.SPACE_PLUGIN);
835
+ const { t } = (0, import_react_ui12.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
758
836
  const [displayMessage, setDisplayMessage] = (0, import_react16.useState)(false);
759
837
  const [status, naturalSetStatus] = (0, import_react16.useState)(0);
760
838
  const [prevStatus, setPrevStatus] = (0, import_react16.useState)(0);
@@ -774,17 +852,17 @@ var PersistenceStatus = ({ db }) => {
774
852
  return /* @__PURE__ */ import_react16.default.createElement("div", {
775
853
  className: "flex items-center"
776
854
  }, /* @__PURE__ */ import_react16.default.createElement(import_react15.Warning, {
777
- className: (0, import_react_ui_theme3.mx)((0, import_react_ui_theme3.getSize)(4), "me-1")
855
+ className: (0, import_react_ui_theme4.mx)((0, import_react_ui_theme4.getSize)(4), "me-1")
778
856
  }), /* @__PURE__ */ import_react16.default.createElement("span", {
779
- className: (0, import_react_ui_theme3.mx)("text-sm", import_react_ui_theme3.warningText)
857
+ className: (0, import_react_ui_theme4.mx)("text-sm", import_react_ui_theme4.warningText)
780
858
  }, t("persistence error label")));
781
859
  case 1:
782
860
  return /* @__PURE__ */ import_react16.default.createElement("div", {
783
861
  className: "flex items-center"
784
862
  }, /* @__PURE__ */ import_react16.default.createElement(import_react15.ArrowsCounterClockwise, {
785
- className: (0, import_react_ui_theme3.mx)((0, import_react_ui_theme3.getSize)(4), "me-1")
863
+ className: (0, import_react_ui_theme4.mx)((0, import_react_ui_theme4.getSize)(4), "me-1")
786
864
  }), /* @__PURE__ */ import_react16.default.createElement("span", {
787
- className: (0, import_react_ui_theme3.mx)("text-sm", import_react_ui_theme3.staticPlaceholderText)
865
+ className: (0, import_react_ui_theme4.mx)("text-sm", import_react_ui_theme4.staticPlaceholderText)
788
866
  }, t("persistence pending label")));
789
867
  case 0:
790
868
  default:
@@ -794,30 +872,69 @@ var PersistenceStatus = ({ db }) => {
794
872
  role: "status",
795
873
  className: "flex items-center"
796
874
  }, /* @__PURE__ */ import_react16.default.createElement(import_react15.CheckCircle, {
797
- className: (0, import_react_ui_theme3.mx)((0, import_react_ui_theme3.getSize)(4), "me-1")
875
+ className: (0, import_react_ui_theme4.mx)((0, import_react_ui_theme4.getSize)(4), "me-1")
798
876
  }), displayMessage && /* @__PURE__ */ import_react16.default.createElement("span", {
799
- className: (0, import_react_ui_theme3.mx)("text-sm", import_react_ui_theme3.staticPlaceholderText)
877
+ className: (0, import_react_ui_theme4.mx)("text-sm", import_react_ui_theme4.staticPlaceholderText)
800
878
  }, t("persisted locally label"))), /* @__PURE__ */ import_react16.default.createElement(import_react_ui12.Tooltip.Portal, null, /* @__PURE__ */ import_react16.default.createElement(import_react_ui12.Tooltip.Content, null, t("persisted locally message"), /* @__PURE__ */ import_react16.default.createElement(import_react_ui12.Tooltip.Arrow, null))));
801
879
  }
802
880
  };
803
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx";
804
- var POPOVER_RENAME_OBJECT = `${import_chunk_AO4EW2RX.SPACE_PLUGIN}/PopoverRenameObject`;
881
+ var POPOVER_ADD_SPACE = `${import_chunk_WZR6OAN3.SPACE_PLUGIN}/PopoverRenameSpace`;
882
+ var PopoverAddSpace = () => {
883
+ const { t } = (0, import_react_ui13.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
884
+ const { dispatchPromise: dispatch } = (0, import_app_framework7.useIntentDispatcher)();
885
+ return /* @__PURE__ */ import_react17.default.createElement("div", {
886
+ role: "none",
887
+ className: "grid grid-cols-1 gap-1 [&>button]:justify-start"
888
+ }, /* @__PURE__ */ import_react17.default.createElement(import_react_ui13.IconButton, {
889
+ variant: "ghost",
890
+ label: t("create space label"),
891
+ icon: "ph--plus--regular",
892
+ onClick: () => {
893
+ void dispatch((0, import_app_framework7.createIntent)(import_chunk_WAJKBO3J.SpaceAction.OpenCreateSpace));
894
+ void dispatch((0, import_app_framework7.createIntent)(import_app_framework7.LayoutAction.UpdatePopover, {
895
+ part: "popover",
896
+ options: {
897
+ anchorId: "",
898
+ state: false
899
+ }
900
+ }));
901
+ },
902
+ "data-testid": "spacePlugin.createSpace"
903
+ }), /* @__PURE__ */ import_react17.default.createElement(import_react_ui13.IconButton, {
904
+ variant: "ghost",
905
+ label: t("join space label"),
906
+ icon: "ph--sign-in--regular",
907
+ onClick: () => {
908
+ void dispatch((0, import_app_framework7.createIntent)(import_chunk_WAJKBO3J.SpaceAction.Join));
909
+ void dispatch((0, import_app_framework7.createIntent)(import_app_framework7.LayoutAction.UpdatePopover, {
910
+ part: "popover",
911
+ options: {
912
+ anchorId: "",
913
+ state: false
914
+ }
915
+ }));
916
+ },
917
+ "data-testid": "spacePlugin.joinSpace"
918
+ }));
919
+ };
920
+ var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx";
921
+ var POPOVER_RENAME_OBJECT = `${import_chunk_WZR6OAN3.SPACE_PLUGIN}/PopoverRenameObject`;
805
922
  var PopoverRenameObject = ({ object: obj }) => {
806
- const { t } = (0, import_react_ui13.useTranslation)(import_chunk_AO4EW2RX.SPACE_PLUGIN);
807
- const doneButton = (0, import_react17.useRef)(null);
923
+ const { t } = (0, import_react_ui14.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
924
+ const doneButton = (0, import_react18.useRef)(null);
808
925
  const object = obj;
809
- const [name, setName] = (0, import_react17.useState)(object.name || object.title || "");
810
- const handleDone = (0, import_react17.useCallback)(() => {
926
+ const [name, setName] = (0, import_react18.useState)(object.name || object.title || "");
927
+ const handleDone = (0, import_react18.useCallback)(() => {
811
928
  try {
812
929
  object.name = name;
813
930
  } catch {
814
931
  try {
815
932
  object.title = name;
816
933
  } catch (err) {
817
- import_log.log.error("Failed to rename object", {
934
+ import_log2.log.error("Failed to rename object", {
818
935
  err
819
936
  }, {
820
- F: __dxlog_file,
937
+ F: __dxlog_file4,
821
938
  L: 30,
822
939
  S: void 0,
823
940
  C: (f, a) => f(...a)
@@ -828,23 +945,23 @@ var PopoverRenameObject = ({ object: obj }) => {
828
945
  object,
829
946
  name
830
947
  ]);
831
- return /* @__PURE__ */ import_react17.default.createElement("div", {
948
+ return /* @__PURE__ */ import_react18.default.createElement("div", {
832
949
  role: "none",
833
950
  className: "p-1 flex gap-2"
834
- }, /* @__PURE__ */ import_react17.default.createElement("div", {
951
+ }, /* @__PURE__ */ import_react18.default.createElement("div", {
835
952
  role: "none",
836
953
  className: "flex-1"
837
- }, /* @__PURE__ */ import_react17.default.createElement(import_react_ui13.Input.Root, null, /* @__PURE__ */ import_react17.default.createElement(import_react_ui13.Input.Label, {
954
+ }, /* @__PURE__ */ import_react18.default.createElement(import_react_ui14.Input.Root, null, /* @__PURE__ */ import_react18.default.createElement(import_react_ui14.Input.Label, {
838
955
  srOnly: true
839
- }, t("object name label")), /* @__PURE__ */ import_react17.default.createElement(import_react_ui13.Input.TextInput, {
956
+ }, t("object name label")), /* @__PURE__ */ import_react18.default.createElement(import_react_ui14.Input.TextInput, {
840
957
  placeholder: t("object title placeholder"),
841
958
  value: name,
842
959
  "data-testid": "spacePlugin.renameObject.input",
843
960
  onChange: ({ target: { value } }) => setName(value),
844
961
  onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
845
- }))), /* @__PURE__ */ import_react17.default.createElement(import_react_ui13.Popover.Close, {
962
+ }))), /* @__PURE__ */ import_react18.default.createElement(import_react_ui14.Popover.Close, {
846
963
  asChild: true
847
- }, /* @__PURE__ */ import_react17.default.createElement(import_react_ui13.Button, {
964
+ }, /* @__PURE__ */ import_react18.default.createElement(import_react_ui14.Button, {
848
965
  ref: doneButton,
849
966
  classNames: "self-stretch",
850
967
  onClick: handleDone
@@ -852,35 +969,35 @@ var PopoverRenameObject = ({ object: obj }) => {
852
969
  ns: "os"
853
970
  }))));
854
971
  };
855
- var POPOVER_RENAME_SPACE = `${import_chunk_AO4EW2RX.SPACE_PLUGIN}/PopoverRenameSpace`;
972
+ var POPOVER_RENAME_SPACE = `${import_chunk_WZR6OAN3.SPACE_PLUGIN}/PopoverRenameSpace`;
856
973
  var PopoverRenameSpace = ({ space }) => {
857
- const { t } = (0, import_react_ui14.useTranslation)(import_chunk_AO4EW2RX.SPACE_PLUGIN);
858
- const doneButton = (0, import_react18.useRef)(null);
859
- const [name, setName] = (0, import_react18.useState)(space.properties.name ?? "");
860
- const handleDone = (0, import_react18.useCallback)(() => {
974
+ const { t } = (0, import_react_ui15.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
975
+ const doneButton = (0, import_react19.useRef)(null);
976
+ const [name, setName] = (0, import_react19.useState)(space.properties.name ?? "");
977
+ const handleDone = (0, import_react19.useCallback)(() => {
861
978
  space.properties.name = name;
862
979
  }, [
863
980
  space,
864
981
  name
865
982
  ]);
866
- return /* @__PURE__ */ import_react18.default.createElement("div", {
983
+ return /* @__PURE__ */ import_react19.default.createElement("div", {
867
984
  role: "none",
868
985
  className: "p-1 flex gap-2"
869
- }, /* @__PURE__ */ import_react18.default.createElement("div", {
986
+ }, /* @__PURE__ */ import_react19.default.createElement("div", {
870
987
  role: "none",
871
988
  className: "flex-1"
872
- }, /* @__PURE__ */ import_react18.default.createElement(import_react_ui14.Input.Root, null, /* @__PURE__ */ import_react18.default.createElement(import_react_ui14.Input.Label, {
989
+ }, /* @__PURE__ */ import_react19.default.createElement(import_react_ui15.Input.Root, null, /* @__PURE__ */ import_react19.default.createElement(import_react_ui15.Input.Label, {
873
990
  srOnly: true
874
- }, t("space name label")), /* @__PURE__ */ import_react18.default.createElement(import_react_ui14.Input.TextInput, {
991
+ }, t("space name label")), /* @__PURE__ */ import_react19.default.createElement(import_react_ui15.Input.TextInput, {
875
992
  defaultValue: space.properties.name ?? "",
876
993
  placeholder: t("unnamed space label"),
877
994
  onChange: ({ target: { value } }) => setName(value),
878
995
  // TODO(wittjosiah): Ideally this should access the popover context to close the popover.
879
996
  // Currently this is not possible because Radix does not expose the popover context.
880
997
  onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
881
- }))), /* @__PURE__ */ import_react18.default.createElement(import_react_ui14.Popover.Close, {
998
+ }))), /* @__PURE__ */ import_react19.default.createElement(import_react_ui15.Popover.Close, {
882
999
  asChild: true
883
- }, /* @__PURE__ */ import_react18.default.createElement(import_react_ui14.Button, {
1000
+ }, /* @__PURE__ */ import_react19.default.createElement(import_react_ui15.Button, {
884
1001
  ref: doneButton,
885
1002
  classNames: "self-stretch",
886
1003
  onClick: handleDone
@@ -889,36 +1006,27 @@ var PopoverRenameSpace = ({ space }) => {
889
1006
  }))));
890
1007
  };
891
1008
  var ShareSpaceButton = ({ space }) => {
892
- const { dispatchPromise: dispatch } = (0, import_app_framework6.useIntentDispatcher)();
893
- return /* @__PURE__ */ import_react19.default.createElement(ShareSpaceButtonImpl, {
894
- onClick: () => dispatch((0, import_app_framework6.createIntent)(import_chunk_YCBBGTFD.SpaceAction.Share, {
1009
+ const { dispatchPromise: dispatch } = (0, import_app_framework8.useIntentDispatcher)();
1010
+ return /* @__PURE__ */ import_react20.default.createElement(ShareSpaceButtonImpl, {
1011
+ onClick: () => dispatch((0, import_app_framework8.createIntent)(import_chunk_WAJKBO3J.SpaceAction.Share, {
895
1012
  space
896
1013
  }))
897
1014
  });
898
1015
  };
899
1016
  var ShareSpaceButtonImpl = ({ onClick }) => {
900
- const { t } = (0, import_react_ui15.useTranslation)(import_chunk_AO4EW2RX.SPACE_PLUGIN);
901
- return /* @__PURE__ */ import_react19.default.createElement(import_react_ui15.IconButton, {
1017
+ const { t } = (0, import_react_ui16.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
1018
+ return /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.IconButton, {
902
1019
  "data-testid": "spacePlugin.shareSpaceButton",
903
1020
  icon: "ph--users--regular",
904
1021
  label: t("share space label"),
905
1022
  onClick
906
1023
  });
907
1024
  };
908
- var AppGraphBuilder = (0, import_app_framework8.lazy)(() => import("./app-graph-builder-GKLVZ4PM.cjs"));
909
- var AppGraphSerializer = (0, import_app_framework8.lazy)(() => import("./app-graph-serializer-RMTU5YSC.cjs"));
910
- var IdentityCreated = (0, import_app_framework8.lazy)(() => import("./identity-created-QQWX7WX3.cjs"));
911
- var IntentResolver = (0, import_app_framework8.lazy)(() => import("./intent-resolver-3NI6AUAI.cjs"));
912
- var ReactRoot = (0, import_app_framework8.lazy)(() => import("./react-root-ZTR2J2I3.cjs"));
913
- var ReactSurface = (0, import_app_framework8.lazy)(() => import("./react-surface-75KRPQYT.cjs"));
914
- var SpaceSettings = (0, import_app_framework8.lazy)(() => import("./settings-KOVSPA3S.cjs"));
915
- var SpaceState = (0, import_app_framework8.lazy)(() => import("./state-4UIOUKLJ.cjs"));
916
- var SpacesReady = (0, import_app_framework8.lazy)(() => import("./spaces-ready-ILVGUHJH.cjs"));
917
1025
  var usePath = (graph, id, timeout) => {
918
- const [pathState, setPathState] = (0, import_react21.useState)(id ? graph.getPath({
1026
+ const [pathState, setPathState] = (0, import_react22.useState)(id ? graph.getPath({
919
1027
  target: id
920
1028
  }) : void 0);
921
- (0, import_react21.useEffect)(() => {
1029
+ (0, import_react22.useEffect)(() => {
922
1030
  if (!id && pathState) {
923
1031
  setPathState(void 0);
924
1032
  }
@@ -949,27 +1057,27 @@ var usePath = (graph, id, timeout) => {
949
1057
  };
950
1058
  var REFRESH_INTERVAL = 5e3;
951
1059
  var ACTIVITY_DURATION = 3e4;
952
- var noViewers = new import_util2.ComplexMap(import_react_client4.PublicKey.hash);
1060
+ var noViewers = new import_util2.ComplexMap(import_react_client5.PublicKey.hash);
953
1061
  var getName = (identity) => identity.profile?.displayName ?? (0, import_display_name.generateName)(identity.identityKey.toHex());
954
1062
  var SpacePresence = ({ object, spaceKey }) => {
955
- const spaceState = (0, import_app_framework7.useCapability)(import_chunk_56NGXG2A.SpaceCapabilities.MutableState);
956
- const client = (0, import_react_client4.useClient)();
1063
+ const spaceState = (0, import_app_framework9.useCapability)(import_chunk_YZKNRFHU.SpaceCapabilities.MutableState);
1064
+ const client = (0, import_react_client5.useClient)();
957
1065
  const identity = (0, import_halo.useIdentity)();
958
- const space = spaceKey ? client.spaces.get(spaceKey) : (0, import_echo7.getSpace)(object);
959
- const spaceMembers = (0, import_echo7.useMembers)(space?.key);
960
- const [_moment, setMoment] = (0, import_react20.useState)(Date.now());
961
- (0, import_react20.useEffect)(() => {
1066
+ const space = spaceKey ? client.spaces.get(spaceKey) : (0, import_echo5.getSpace)(object);
1067
+ const spaceMembers = (0, import_echo5.useMembers)(space?.key);
1068
+ const [_moment, setMoment] = (0, import_react21.useState)(Date.now());
1069
+ (0, import_react21.useEffect)(() => {
962
1070
  const interval = setInterval(() => setMoment(Date.now()), REFRESH_INTERVAL);
963
1071
  return () => clearInterval(interval);
964
1072
  }, []);
965
- const memberOnline = (0, import_react20.useCallback)((member) => member.presence === 1, []);
966
- const memberIsNotSelf = (0, import_react20.useCallback)((member) => !identity?.identityKey.equals(member.identity.identityKey), [
1073
+ const memberOnline = (0, import_react21.useCallback)((member) => member.presence === 1, []);
1074
+ const memberIsNotSelf = (0, import_react21.useCallback)((member) => !identity?.identityKey.equals(member.identity.identityKey), [
967
1075
  identity?.identityKey
968
1076
  ]);
969
1077
  if (!identity || !spaceState || !space) {
970
1078
  return null;
971
1079
  }
972
- const currentObjectViewers = spaceState.viewersByObject[(0, import_echo7.fullyQualifiedId)(object)] ?? noViewers;
1080
+ const currentObjectViewers = spaceState.viewersByObject[(0, import_echo5.fullyQualifiedId)(object)] ?? noViewers;
973
1081
  const membersForObject = spaceMembers.filter((member) => memberOnline(member) && memberIsNotSelf(member)).filter((member) => currentObjectViewers.has(member.identity.identityKey)).map((member) => {
974
1082
  const objectView = currentObjectViewers.get(member.identity.identityKey);
975
1083
  const lastSeen = objectView?.lastSeen ?? -Infinity;
@@ -980,61 +1088,61 @@ var SpacePresence = ({ object, spaceKey }) => {
980
1088
  lastSeen
981
1089
  };
982
1090
  }).toSorted((a, b) => a.lastSeen - b.lastSeen);
983
- return /* @__PURE__ */ import_react20.default.createElement(FullPresence, {
1091
+ return /* @__PURE__ */ import_react21.default.createElement(FullPresence, {
984
1092
  members: membersForObject
985
1093
  });
986
1094
  };
987
1095
  var FullPresence = (props) => {
988
1096
  const { size = 9, onMemberClick } = props;
989
- const members = (0, import_react_ui16.useDefaultValue)(props.members, () => []);
1097
+ const members = (0, import_react_ui17.useDefaultValue)(props.members, () => []);
990
1098
  if (members.length === 0) {
991
1099
  return null;
992
1100
  }
993
- return /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.AvatarGroup.Root, {
1101
+ return /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.AvatarGroup.Root, {
994
1102
  size,
995
1103
  classNames: "mbs-2 mie-4",
996
1104
  "data-testid": "spacePlugin.presence"
997
- }, members.slice(0, 3).map((member, i) => /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.Tooltip.Root, {
1105
+ }, members.slice(0, 3).map((member, i) => /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.Tooltip.Root, {
998
1106
  key: member.identity.identityKey.toHex()
999
- }, /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.Tooltip.Trigger, null, /* @__PURE__ */ import_react20.default.createElement(PrensenceAvatar, {
1107
+ }, /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.Tooltip.Trigger, null, /* @__PURE__ */ import_react21.default.createElement(PrensenceAvatar, {
1000
1108
  identity: member.identity,
1001
1109
  group: true,
1002
1110
  match: member.currentlyAttended,
1003
1111
  index: members.length - i,
1004
1112
  onClick: () => onMemberClick?.(member)
1005
- })), /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.Tooltip.Portal, null, /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.Tooltip.Content, {
1113
+ })), /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.Tooltip.Portal, null, /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.Tooltip.Content, {
1006
1114
  side: "bottom"
1007
- }, /* @__PURE__ */ import_react20.default.createElement("span", null, getName(member.identity)), /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.Tooltip.Arrow, null))))), members.length > 3 && /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.Tooltip.Root, null, /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.Tooltip.Trigger, null, /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.AvatarGroupItem.Root, {
1115
+ }, /* @__PURE__ */ import_react21.default.createElement("span", null, getName(member.identity)), /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.Tooltip.Arrow, null))))), members.length > 3 && /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.Tooltip.Root, null, /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.Tooltip.Trigger, null, /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.AvatarGroupItem.Root, {
1008
1116
  status: "inactive"
1009
- }, /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.Avatar.Frame, {
1117
+ }, /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.Avatar.Frame, {
1010
1118
  style: {
1011
1119
  zIndex: members.length - 4
1012
1120
  }
1013
- }, /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.Avatar.Fallback, {
1121
+ }, /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.Avatar.Fallback, {
1014
1122
  text: `+${members.length - 3}`
1015
- })))), /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.Tooltip.Portal, null, /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.Tooltip.Content, {
1123
+ })))), /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.Tooltip.Portal, null, /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.Tooltip.Content, {
1016
1124
  side: "bottom"
1017
- }, /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.Tooltip.Arrow, null), /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.List, {
1125
+ }, /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.Tooltip.Arrow, null), /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.List, {
1018
1126
  classNames: "max-h-56 overflow-y-auto"
1019
- }, members.map((member) => /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.ListItem.Root, {
1127
+ }, members.map((member) => /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.ListItem.Root, {
1020
1128
  key: member.identity.identityKey.toHex(),
1021
1129
  classNames: "flex gap-2 items-center cursor-pointer mbe-2",
1022
1130
  onClick: () => onMemberClick?.(member),
1023
1131
  "data-testid": "identity-list-item"
1024
- }, /* @__PURE__ */ import_react20.default.createElement(PrensenceAvatar, {
1132
+ }, /* @__PURE__ */ import_react21.default.createElement(PrensenceAvatar, {
1025
1133
  identity: member.identity,
1026
1134
  showName: true,
1027
1135
  match: member.currentlyAttended
1028
1136
  }))))))));
1029
1137
  };
1030
1138
  var PrensenceAvatar = ({ identity, showName, match, group, index, onClick }) => {
1031
- const Root = group ? import_react_ui16.AvatarGroupItem.Root : import_react_ui16.Avatar.Root;
1139
+ const Root = group ? import_react_ui17.AvatarGroupItem.Root : import_react_ui17.Avatar.Root;
1032
1140
  const status = match ? "current" : "active";
1033
1141
  const fallbackValue = (0, import_util2.keyToFallback)(identity.identityKey);
1034
- return /* @__PURE__ */ import_react20.default.createElement(Root, {
1142
+ return /* @__PURE__ */ import_react21.default.createElement(Root, {
1035
1143
  status,
1036
1144
  hue: identity.profile?.data?.hue || fallbackValue.hue
1037
- }, /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.Avatar.Frame, {
1145
+ }, /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.Avatar.Frame, {
1038
1146
  "data-testid": "spacePlugin.presence.member",
1039
1147
  "data-status": status,
1040
1148
  ...index ? {
@@ -1043,16 +1151,16 @@ var PrensenceAvatar = ({ identity, showName, match, group, index, onClick }) =>
1043
1151
  }
1044
1152
  } : {},
1045
1153
  onClick: () => onClick?.()
1046
- }, /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.Avatar.Fallback, {
1154
+ }, /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.Avatar.Fallback, {
1047
1155
  text: identity.profile?.data?.emoji || fallbackValue.emoji
1048
- })), showName && /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.Avatar.Label, {
1156
+ })), showName && /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.Avatar.Label, {
1049
1157
  classNames: "text-sm truncate pli-2"
1050
1158
  }, getName(identity)));
1051
1159
  };
1052
1160
  var SmallPresenceLive = ({ id, open, viewers }) => {
1053
1161
  const { hasAttention, isAncestor, isRelated } = (0, import_react_ui_attention.useAttention)(id);
1054
1162
  const isAttended = hasAttention || isAncestor || isRelated;
1055
- const { graph } = (0, import_plugin_graph2.useGraph)();
1163
+ const { graph } = (0, import_app_framework9.useAppGraph)();
1056
1164
  const attended = (0, import_react_ui_attention.useAttended)();
1057
1165
  const startOfAttention = attended.at(-1);
1058
1166
  const path = usePath(graph, startOfAttention);
@@ -1061,8 +1169,8 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
1061
1169
  const moment = Date.now();
1062
1170
  return Array.from(viewers2.values()).filter((viewer) => moment - viewer.lastSeen < ACTIVITY_DURATION);
1063
1171
  };
1064
- const [activeViewers, setActiveViewers] = (0, import_react20.useState)(viewers ? getActiveViewers(viewers) : []);
1065
- (0, import_react20.useEffect)(() => {
1172
+ const [activeViewers, setActiveViewers] = (0, import_react21.useState)(viewers ? getActiveViewers(viewers) : []);
1173
+ (0, import_react21.useEffect)(() => {
1066
1174
  if (viewers) {
1067
1175
  setActiveViewers(getActiveViewers(viewers));
1068
1176
  const interval = setInterval(() => {
@@ -1073,47 +1181,47 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
1073
1181
  }, [
1074
1182
  viewers
1075
1183
  ]);
1076
- return /* @__PURE__ */ import_react20.default.createElement(SmallPresence, {
1184
+ return /* @__PURE__ */ import_react21.default.createElement(SmallPresence, {
1077
1185
  count: activeViewers.length,
1078
1186
  attended: isAttended,
1079
1187
  containsAttended
1080
1188
  });
1081
1189
  };
1082
1190
  var SmallPresence = ({ count = 0, attended, containsAttended }) => {
1083
- const { t } = (0, import_react_ui16.useTranslation)(import_chunk_AO4EW2RX.SPACE_PLUGIN);
1084
- return /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.Tooltip.Root, null, /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.Tooltip.Trigger, {
1191
+ const { t } = (0, import_react_ui17.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
1192
+ return /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.Tooltip.Root, null, /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.Tooltip.Trigger, {
1085
1193
  asChild: true
1086
- }, /* @__PURE__ */ import_react20.default.createElement(import_react_ui_attention.AttentionGlyph, {
1194
+ }, /* @__PURE__ */ import_react21.default.createElement(import_react_ui_attention.AttentionGlyph, {
1087
1195
  attended,
1088
1196
  containsAttended,
1089
1197
  presence: count > 1 ? "many" : count === 1 ? "one" : "none",
1090
1198
  classNames: "self-center mie-1"
1091
- })), /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.Tooltip.Portal, null, /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.Tooltip.Content, {
1199
+ })), /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.Tooltip.Portal, null, /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.Tooltip.Content, {
1092
1200
  side: "bottom"
1093
- }, /* @__PURE__ */ import_react20.default.createElement("span", null, t("presence label", {
1201
+ }, /* @__PURE__ */ import_react21.default.createElement("span", null, t("presence label", {
1094
1202
  count
1095
- })), /* @__PURE__ */ import_react20.default.createElement(import_react_ui16.Tooltip.Arrow, null))));
1203
+ })), /* @__PURE__ */ import_react21.default.createElement(import_react_ui17.Tooltip.Arrow, null))));
1096
1204
  };
1097
1205
  var SpacePluginSettings = ({ settings }) => {
1098
- const { t } = (0, import_react_ui17.useTranslation)(import_chunk_AO4EW2RX.SPACE_PLUGIN);
1099
- return /* @__PURE__ */ import_react22.default.createElement(import_react22.default.Fragment, null, /* @__PURE__ */ import_react22.default.createElement(import_react_ui_form4.DeprecatedFormInput, {
1206
+ const { t } = (0, import_react_ui18.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
1207
+ return /* @__PURE__ */ import_react23.default.createElement(import_react_ui_form4.DeprecatedFormContainer, null, /* @__PURE__ */ import_react23.default.createElement(import_react_ui_form4.DeprecatedFormInput, {
1100
1208
  label: t("show hidden spaces label")
1101
- }, /* @__PURE__ */ import_react22.default.createElement(import_react_ui17.Input.Switch, {
1209
+ }, /* @__PURE__ */ import_react23.default.createElement(import_react_ui18.Input.Switch, {
1102
1210
  checked: settings.showHidden,
1103
1211
  onCheckedChange: (checked) => settings.showHidden = !!checked
1104
1212
  })));
1105
1213
  };
1106
- var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SpaceSettings/SpaceSettingsPanel.tsx";
1107
- var SpaceSettingsPanel = ({ classNames, space }) => {
1108
- const { t } = (0, import_react_ui18.useTranslation)(import_chunk_AO4EW2RX.SPACE_PLUGIN);
1109
- const client = (0, import_react_client5.useClient)();
1214
+ var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SpaceSettings/SpaceSettingsPanel.tsx";
1215
+ var SpaceSettingsPanel = ({ space }) => {
1216
+ const { t } = (0, import_react_ui19.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
1217
+ const client = (0, import_react_client6.useClient)();
1110
1218
  const edgeEnabled = Boolean(client.config.values.runtime?.client?.edgeFeatures?.echoReplicator);
1111
- const [edgeReplication, setEdgeReplication] = (0, import_react23.useState)(space.internal.data.edgeReplication === import_metadata.EdgeReplicationSetting.ENABLED);
1112
- const toggleEdgeReplication = (0, import_react23.useCallback)(async (next) => {
1219
+ const [edgeReplication, setEdgeReplication] = (0, import_react24.useState)(space.internal.data.edgeReplication === import_metadata.EdgeReplicationSetting.ENABLED);
1220
+ const toggleEdgeReplication = (0, import_react24.useCallback)(async (next) => {
1113
1221
  setEdgeReplication(next);
1114
1222
  await space?.internal.setEdgeReplicationPreference(next ? import_metadata.EdgeReplicationSetting.ENABLED : import_metadata.EdgeReplicationSetting.DISABLED).catch((err) => {
1115
- import_log2.log.catch(err, void 0, {
1116
- F: __dxlog_file2,
1223
+ import_log3.log.catch(err, void 0, {
1224
+ F: __dxlog_file5,
1117
1225
  L: 36,
1118
1226
  S: void 0,
1119
1227
  C: (f, a) => f(...a)
@@ -1123,104 +1231,133 @@ var SpaceSettingsPanel = ({ classNames, space }) => {
1123
1231
  }, [
1124
1232
  space
1125
1233
  ]);
1126
- return /* @__PURE__ */ import_react23.default.createElement("div", {
1127
- role: "form",
1128
- className: (0, import_react_ui_theme4.mx)("flex flex-col", classNames)
1129
- }, /* @__PURE__ */ import_react23.default.createElement(import_react_ui_form5.DeprecatedFormInput, {
1234
+ return /* @__PURE__ */ import_react24.default.createElement(import_react_ui_form5.DeprecatedFormContainer, null, /* @__PURE__ */ import_react24.default.createElement(import_react_ui_form5.DeprecatedFormInput, {
1130
1235
  label: t("name label")
1131
- }, /* @__PURE__ */ import_react23.default.createElement(import_react_ui18.Input.TextInput, {
1236
+ }, /* @__PURE__ */ import_react24.default.createElement(import_react_ui19.Input.TextInput, {
1132
1237
  placeholder: t("unnamed space label"),
1133
1238
  value: space.properties.name ?? "",
1134
1239
  onChange: (event) => {
1135
1240
  space.properties.name = event.target.value;
1136
1241
  }
1137
- })), edgeEnabled && /* @__PURE__ */ import_react23.default.createElement(import_react_ui_form5.DeprecatedFormInput, {
1242
+ })), /* @__PURE__ */ import_react24.default.createElement(import_react_ui_form5.DeprecatedFormInput, {
1243
+ label: t("icon label")
1244
+ }, /* @__PURE__ */ import_react24.default.createElement(import_react_ui19.Toolbar.Root, null, /* @__PURE__ */ import_react24.default.createElement(import_react_ui_pickers.IconPicker, {
1245
+ value: space.properties.icon,
1246
+ onChange: (nextIcon) => space.properties.icon = nextIcon,
1247
+ onReset: () => {
1248
+ space.properties.icon = void 0;
1249
+ }
1250
+ }))), /* @__PURE__ */ import_react24.default.createElement(import_react_ui_form5.DeprecatedFormInput, {
1251
+ label: t("hue label")
1252
+ }, /* @__PURE__ */ import_react24.default.createElement(import_react_ui19.Toolbar.Root, null, /* @__PURE__ */ import_react24.default.createElement(import_react_ui_pickers.HuePicker, {
1253
+ value: space.properties.hue,
1254
+ onChange: (nextHue) => space.properties.hue = nextHue,
1255
+ onReset: () => {
1256
+ space.properties.hue = void 0;
1257
+ }
1258
+ }))), edgeEnabled && /* @__PURE__ */ import_react24.default.createElement(import_react_ui_form5.DeprecatedFormInput, {
1138
1259
  label: t("edge replication label")
1139
- }, /* @__PURE__ */ import_react23.default.createElement(import_react_ui18.Input.Switch, {
1260
+ }, /* @__PURE__ */ import_react24.default.createElement(import_react_ui19.Input.Switch, {
1140
1261
  checked: edgeReplication,
1141
1262
  onCheckedChange: toggleEdgeReplication
1142
1263
  })));
1143
1264
  };
1144
- var SPACE_SETTINGS_DIALOG = `${import_chunk_AO4EW2RX.SPACE_PLUGIN}/SpaceSettingsDialog`;
1265
+ var SPACE_SETTINGS_DIALOG = `${import_chunk_WZR6OAN3.SPACE_PLUGIN}/SpaceSettingsDialog`;
1145
1266
  var SpaceSettingsDialog = ({ space, target, createInvitationUrl, initialTab = "members", namesCache }) => {
1146
- const { t } = (0, import_react_ui19.useTranslation)(import_chunk_AO4EW2RX.SPACE_PLUGIN);
1147
- const client = (0, import_react_client6.useClient)();
1148
- const [tabsActivePart, setTabsActivePart] = (0, import_react24.useState)("list");
1149
- const [selected, setSelected] = (0, import_react24.useState)(initialTab);
1150
- const locked = space.properties[import_chunk_5D4RWKTV.COMPOSER_SPACE_LOCK];
1151
- const name = (0, import_chunk_5D4RWKTV.getSpaceDisplayName)(space, {
1267
+ const { t } = (0, import_react_ui20.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
1268
+ const client = (0, import_react_client7.useClient)();
1269
+ const [tabsActivePart, setTabsActivePart] = (0, import_react25.useState)("list");
1270
+ const [selected, setSelected] = (0, import_react25.useState)(initialTab);
1271
+ const locked = space.properties[import_chunk_OVGKWJOC.COMPOSER_SPACE_LOCK];
1272
+ const name = (0, import_chunk_OVGKWJOC.getSpaceDisplayName)(space, {
1152
1273
  personal: client.spaces.default === space,
1153
1274
  namesCache
1154
1275
  });
1276
+ const panels = (0, import_app_framework10.useCapabilities)(import_chunk_YZKNRFHU.SpaceCapabilities.SettingsPanel);
1277
+ const data = (0, import_react25.useMemo)(() => ({
1278
+ subject: space
1279
+ }), [
1280
+ space
1281
+ ]);
1155
1282
  return (
1156
1283
  // TODO(wittjosiah): The tablist dialog pattern is copied from @dxos/plugin-manager.
1157
1284
  // Consider factoring it out to the tabs package.
1158
- /* @__PURE__ */ import_react24.default.createElement(import_react_ui19.Dialog.Content, {
1285
+ /* @__PURE__ */ import_react25.default.createElement(import_react_ui20.Dialog.Content, {
1159
1286
  classNames: "p-0 bs-content min-bs-[15rem] max-bs-full md:max-is-[40rem] overflow-hidden"
1160
- }, /* @__PURE__ */ import_react24.default.createElement("div", {
1287
+ }, /* @__PURE__ */ import_react25.default.createElement("div", {
1161
1288
  role: "none",
1162
1289
  className: "flex justify-between pbs-2 pis-2 pie-2 @md:pbs-4 @md:pis-4 @md:pie-4"
1163
- }, /* @__PURE__ */ import_react24.default.createElement(import_react_ui19.Dialog.Title, {
1290
+ }, /* @__PURE__ */ import_react25.default.createElement(import_react_ui20.Dialog.Title, {
1164
1291
  onClick: () => setTabsActivePart("list"),
1165
1292
  "aria-description": t("click to return to tablist description"),
1166
1293
  classNames: "flex cursor-pointer items-center group/title"
1167
- }, /* @__PURE__ */ import_react24.default.createElement(import_react_ui19.Icon, {
1294
+ }, /* @__PURE__ */ import_react25.default.createElement(import_react_ui20.Icon, {
1168
1295
  icon: "ph--caret-left--regular",
1169
1296
  size: 4,
1170
1297
  classNames: [
1171
1298
  "@md:hidden",
1172
1299
  tabsActivePart === "list" && "invisible"
1173
1300
  ]
1174
- }), /* @__PURE__ */ import_react24.default.createElement("span", {
1301
+ }), /* @__PURE__ */ import_react25.default.createElement("span", {
1175
1302
  className: tabsActivePart !== "list" ? "group-hover/title:underline @md:group-hover/title:no-underline underline-offset-4 decoration-1" : ""
1176
- }, (0, import_react_ui19.toLocalizedString)(name, t))), /* @__PURE__ */ import_react24.default.createElement(import_react_ui19.Dialog.Close, {
1303
+ }, (0, import_react_ui20.toLocalizedString)(name, t))), /* @__PURE__ */ import_react25.default.createElement(import_react_ui20.Dialog.Close, {
1177
1304
  asChild: true
1178
- }, /* @__PURE__ */ import_react24.default.createElement(import_react_ui19.Button, {
1305
+ }, /* @__PURE__ */ import_react25.default.createElement(import_react_ui20.Button, {
1179
1306
  density: "fine",
1180
1307
  variant: "ghost",
1181
1308
  autoFocus: true
1182
- }, /* @__PURE__ */ import_react24.default.createElement(import_react_ui19.Icon, {
1309
+ }, /* @__PURE__ */ import_react25.default.createElement(import_react_ui20.Icon, {
1183
1310
  icon: "ph--x--regular",
1184
1311
  size: 4
1185
- })))), /* @__PURE__ */ import_react24.default.createElement(import_react_ui_tabs.Tabs.Root, {
1312
+ })))), /* @__PURE__ */ import_react25.default.createElement(import_react_ui_tabs.Tabs.Root, {
1186
1313
  orientation: "vertical",
1187
1314
  value: selected,
1188
1315
  onValueChange: setSelected,
1189
1316
  activePart: tabsActivePart,
1190
1317
  onActivePartChange: setTabsActivePart,
1191
1318
  classNames: "flex flex-col flex-1 mbs-2"
1192
- }, /* @__PURE__ */ import_react24.default.createElement(import_react_ui_tabs.Tabs.Viewport, {
1319
+ }, /* @__PURE__ */ import_react25.default.createElement(import_react_ui_tabs.Tabs.Viewport, {
1193
1320
  classNames: "flex-1 min-bs-0"
1194
- }, /* @__PURE__ */ import_react24.default.createElement("div", {
1321
+ }, /* @__PURE__ */ import_react25.default.createElement("div", {
1195
1322
  role: "none",
1196
1323
  className: "overflow-y-auto pli-3 @md:pis-2 @md:pie-0 mbe-4 border-r border-separator"
1197
- }, /* @__PURE__ */ import_react24.default.createElement(import_react_ui_tabs.Tabs.Tablist, {
1324
+ }, /* @__PURE__ */ import_react25.default.createElement(import_react_ui_tabs.Tabs.Tablist, {
1198
1325
  classNames: "flex flex-col max-bs-none min-is-[200px] gap-4 overflow-y-auto"
1199
- }, /* @__PURE__ */ import_react24.default.createElement("div", {
1326
+ }, /* @__PURE__ */ import_react25.default.createElement("div", {
1200
1327
  role: "none",
1201
1328
  className: "flex flex-col ml-1"
1202
- }, /* @__PURE__ */ import_react24.default.createElement(import_react_ui_tabs.Tabs.Tab, {
1329
+ }, /* @__PURE__ */ import_react25.default.createElement(import_react_ui_tabs.Tabs.Tab, {
1203
1330
  value: "settings"
1204
- }, t("settings tab label")), /* @__PURE__ */ import_react24.default.createElement(import_react_ui_tabs.Tabs.Tab, {
1331
+ }, t("settings tab label")), /* @__PURE__ */ import_react25.default.createElement(import_react_ui_tabs.Tabs.Tab, {
1205
1332
  value: "members",
1206
1333
  disabled: locked
1207
- }, t("members tab label"))))), /* @__PURE__ */ import_react24.default.createElement(import_react_ui_tabs.Tabs.Tabpanel, {
1334
+ }, t("members tab label")), panels.map((panel) => /* @__PURE__ */ import_react25.default.createElement(import_react_ui_tabs.Tabs.Tab, {
1335
+ key: panel.id,
1336
+ value: panel.id
1337
+ }, (0, import_react_ui20.toLocalizedString)(panel.label, t)))))), /* @__PURE__ */ import_react25.default.createElement(import_react_ui_tabs.Tabs.Tabpanel, {
1208
1338
  value: "settings",
1209
1339
  classNames: "pli-3 @md:pli-5 max-bs-dvh overflow-y-auto"
1210
- }, /* @__PURE__ */ import_react24.default.createElement(SpaceSettingsPanel, {
1340
+ }, /* @__PURE__ */ import_react25.default.createElement(SpaceSettingsPanel, {
1211
1341
  space
1212
- })), /* @__PURE__ */ import_react24.default.createElement(import_react_ui_tabs.Tabs.Tabpanel, {
1342
+ })), /* @__PURE__ */ import_react25.default.createElement(import_react_ui_tabs.Tabs.Tabpanel, {
1213
1343
  value: "members",
1214
1344
  classNames: "pli-3 @md:pli-5 max-bs-dvh overflow-y-auto"
1215
- }, /* @__PURE__ */ import_react24.default.createElement(import_react_ui19.Clipboard.Provider, null, /* @__PURE__ */ import_react24.default.createElement(import_react25.SpacePanel, {
1345
+ }, /* @__PURE__ */ import_react25.default.createElement(import_react_ui20.Clipboard.Provider, null, /* @__PURE__ */ import_react25.default.createElement(import_react26.SpacePanel, {
1216
1346
  space,
1217
1347
  hideHeading: true,
1218
1348
  target,
1219
1349
  createInvitationUrl
1350
+ }))), panels.map((panel) => /* @__PURE__ */ import_react25.default.createElement(import_react_ui_tabs.Tabs.Tabpanel, {
1351
+ key: panel.id,
1352
+ value: panel.id,
1353
+ classNames: "pli-3 @md:pli-5 max-bs-dvh overflow-y-auto"
1354
+ }, /* @__PURE__ */ import_react25.default.createElement(import_app_framework10.Surface, {
1355
+ role: `space-settings--${panel.id}`,
1356
+ data
1220
1357
  }))))))
1221
1358
  );
1222
1359
  };
1223
- var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SyncStatus/sync-state.ts";
1360
+ var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SyncStatus/sync-state.ts";
1224
1361
  var createEmptyEdgeSyncState = () => ({
1225
1362
  missingOnLocal: 0,
1226
1363
  missingOnRemote: 0,
@@ -1240,11 +1377,11 @@ var getSyncSummary = (syncMap) => {
1240
1377
  };
1241
1378
  var isEdgePeerId = (peerId, spaceId) => peerId.startsWith(`${import_protocols.EdgeService.AUTOMERGE_REPLICATOR}:${spaceId}`);
1242
1379
  var useSyncState = () => {
1243
- const client = (0, import_react_client8.useClient)();
1244
- const [spaceState, setSpaceState] = (0, import_react27.useState)({});
1245
- (0, import_react27.useEffect)(() => {
1380
+ const client = (0, import_react_client9.useClient)();
1381
+ const [spaceState, setSpaceState] = (0, import_react28.useState)({});
1382
+ (0, import_react28.useEffect)(() => {
1246
1383
  const ctx = new import_context.Context(void 0, {
1247
- F: __dxlog_file3,
1384
+ F: __dxlog_file6,
1248
1385
  L: 48
1249
1386
  });
1250
1387
  const createSubscriptions = (spaces) => {
@@ -1276,10 +1413,10 @@ var useSyncState = () => {
1276
1413
  return spaceState;
1277
1414
  };
1278
1415
  var useSpaceSyncState = (space) => {
1279
- const [spaceState, setSpaceState] = (0, import_react27.useState)();
1280
- (0, import_react27.useEffect)(() => {
1416
+ const [spaceState, setSpaceState] = (0, import_react28.useState)();
1417
+ (0, import_react28.useEffect)(() => {
1281
1418
  const ctx = new import_context.Context(void 0, {
1282
- F: __dxlog_file3,
1419
+ F: __dxlog_file6,
1283
1420
  L: 87
1284
1421
  });
1285
1422
  space.crud.subscribeToSyncState(ctx, ({ peers = [] }) => {
@@ -1297,9 +1434,9 @@ var useSpaceSyncState = (space) => {
1297
1434
  return spaceState;
1298
1435
  };
1299
1436
  var useEdgeStatus = () => {
1300
- const [status, setStatus] = (0, import_react26.useState)(import_services.QueryEdgeStatusResponse.EdgeStatus.NOT_CONNECTED);
1301
- const client = (0, import_react_client7.useClient)();
1302
- (0, import_react26.useEffect)(() => {
1437
+ const [status, setStatus] = (0, import_react27.useState)(import_services.QueryEdgeStatusResponse.EdgeStatus.NOT_CONNECTED);
1438
+ const client = (0, import_react_client8.useClient)();
1439
+ (0, import_react27.useEffect)(() => {
1303
1440
  client.services.services.EdgeAgentService?.queryEdgeStatus().subscribe(({ status: status2 }) => {
1304
1441
  setStatus(status2);
1305
1442
  });
@@ -1309,11 +1446,11 @@ var useEdgeStatus = () => {
1309
1446
  return status;
1310
1447
  };
1311
1448
  var InlineSyncStatus = ({ space, open }) => {
1312
- const { t } = (0, import_react_ui20.useTranslation)(import_chunk_AO4EW2RX.SPACE_PLUGIN);
1449
+ const { t } = (0, import_react_ui21.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
1313
1450
  const id = space.id;
1314
1451
  const { hasAttention, isAncestor, isRelated } = (0, import_react_ui_attention2.useAttention)(id);
1315
1452
  const isAttended = hasAttention || isAncestor || isRelated;
1316
- const { graph } = (0, import_plugin_graph3.useGraph)();
1453
+ const { graph } = (0, import_app_framework11.useAppGraph)();
1317
1454
  const attended = (0, import_react_ui_attention2.useAttended)();
1318
1455
  const startOfAttention = attended.at(-1);
1319
1456
  const path = usePath(graph, startOfAttention);
@@ -1322,17 +1459,17 @@ var InlineSyncStatus = ({ space, open }) => {
1322
1459
  const edgeSyncEnabled = space.internal.data.edgeReplication === import_metadata2.EdgeReplicationSetting.ENABLED;
1323
1460
  const syncState = useSpaceSyncState(space);
1324
1461
  const syncing = connectedToEdge && edgeSyncEnabled && syncState && syncState.missingOnLocal > 0;
1325
- return /* @__PURE__ */ import_react26.default.createElement(import_react_ui20.Tooltip.Root, null, /* @__PURE__ */ import_react26.default.createElement(import_react_ui20.Tooltip.Trigger, {
1462
+ return /* @__PURE__ */ import_react27.default.createElement(import_react_ui21.Tooltip.Root, null, /* @__PURE__ */ import_react27.default.createElement(import_react_ui21.Tooltip.Trigger, {
1326
1463
  asChild: true
1327
- }, /* @__PURE__ */ import_react26.default.createElement(import_react_ui_attention2.AttentionGlyph, {
1464
+ }, /* @__PURE__ */ import_react27.default.createElement(import_react_ui_attention2.AttentionGlyph, {
1328
1465
  syncing,
1329
1466
  attended: isAttended,
1330
1467
  containsAttended,
1331
1468
  classNames: "self-center mie-1"
1332
- })), /* @__PURE__ */ import_react26.default.createElement(import_react_ui20.Tooltip.Portal, null, /* @__PURE__ */ import_react26.default.createElement(import_react_ui20.Tooltip.Content, {
1469
+ })), /* @__PURE__ */ import_react27.default.createElement(import_react_ui21.Tooltip.Portal, null, /* @__PURE__ */ import_react27.default.createElement(import_react_ui21.Tooltip.Content, {
1333
1470
  side: "bottom",
1334
1471
  classNames: "z-[70]"
1335
- }, /* @__PURE__ */ import_react26.default.createElement("span", null, t("syncing label")), /* @__PURE__ */ import_react26.default.createElement(import_react_ui20.Tooltip.Arrow, null))));
1472
+ }, /* @__PURE__ */ import_react27.default.createElement("span", null, t("syncing label")), /* @__PURE__ */ import_react27.default.createElement(import_react_ui21.Tooltip.Arrow, null))));
1336
1473
  };
1337
1474
  var SYNC_STALLED_TIMEOUT = 5e3;
1338
1475
  var styles = {
@@ -1341,9 +1478,9 @@ var styles = {
1341
1478
  barHover: "dark:hover:bg-green-500"
1342
1479
  };
1343
1480
  var useActive = (count) => {
1344
- const [current, setCurrent] = (0, import_react29.useState)(count);
1345
- const [active, setActive] = (0, import_react29.useState)(false);
1346
- (0, import_react29.useEffect)(() => {
1481
+ const [current, setCurrent] = (0, import_react30.useState)(count);
1482
+ const [active, setActive] = (0, import_react30.useState)(false);
1483
+ (0, import_react30.useEffect)(() => {
1347
1484
  let t;
1348
1485
  if (count !== current) {
1349
1486
  setActive(true);
@@ -1364,16 +1501,16 @@ var useActive = (count) => {
1364
1501
  return active;
1365
1502
  };
1366
1503
  var SpaceRowContainer = ({ spaceId, state }) => {
1367
- const { t } = (0, import_react_ui22.useTranslation)(import_chunk_AO4EW2RX.SPACE_PLUGIN);
1368
- const client = (0, import_react_client10.useClient)();
1369
- const space = (0, import_echo8.useSpace)(spaceId);
1504
+ const { t } = (0, import_react_ui23.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
1505
+ const client = (0, import_react_client11.useClient)();
1506
+ const space = (0, import_echo6.useSpace)(spaceId);
1370
1507
  if (!space) {
1371
1508
  return null;
1372
1509
  }
1373
- const spaceName = (0, import_react_ui22.toLocalizedString)((0, import_chunk_5D4RWKTV.getSpaceDisplayName)(space, {
1510
+ const spaceName = (0, import_react_ui23.toLocalizedString)((0, import_chunk_OVGKWJOC.getSpaceDisplayName)(space, {
1374
1511
  personal: space === client.spaces.default
1375
1512
  }), t);
1376
- return /* @__PURE__ */ import_react29.default.createElement(SpaceRow, {
1513
+ return /* @__PURE__ */ import_react30.default.createElement(SpaceRow, {
1377
1514
  spaceId,
1378
1515
  spaceName,
1379
1516
  state
@@ -1382,19 +1519,19 @@ var SpaceRowContainer = ({ spaceId, state }) => {
1382
1519
  var SpaceRow = ({ spaceId, spaceName, state: { localDocumentCount, remoteDocumentCount, missingOnLocal, missingOnRemote } }) => {
1383
1520
  const downActive = useActive(localDocumentCount);
1384
1521
  const upActive = useActive(remoteDocumentCount);
1385
- return /* @__PURE__ */ import_react29.default.createElement("div", {
1522
+ return /* @__PURE__ */ import_react30.default.createElement("div", {
1386
1523
  className: "flex items-center mx-0.5 gap-0.5 cursor-pointer",
1387
1524
  title: spaceId,
1388
1525
  onClick: () => {
1389
1526
  void navigator.clipboard.writeText(spaceId);
1390
1527
  }
1391
- }, /* @__PURE__ */ import_react29.default.createElement("span", {
1528
+ }, /* @__PURE__ */ import_react30.default.createElement("span", {
1392
1529
  className: "is-1/2 truncate"
1393
- }, spaceName), /* @__PURE__ */ import_react29.default.createElement(import_react_ui22.Icon, {
1530
+ }, spaceName), /* @__PURE__ */ import_react30.default.createElement(import_react_ui23.Icon, {
1394
1531
  icon: "ph--arrow-fat-line-left--regular",
1395
1532
  size: 3,
1396
1533
  classNames: (0, import_react_ui_theme6.mx)(downActive && "animate-[pulse_1s_infinite]")
1397
- }), /* @__PURE__ */ import_react29.default.createElement(Candle, {
1534
+ }), /* @__PURE__ */ import_react30.default.createElement(Candle, {
1398
1535
  up: {
1399
1536
  count: remoteDocumentCount,
1400
1537
  total: remoteDocumentCount + missingOnRemote
@@ -1404,41 +1541,41 @@ var SpaceRow = ({ spaceId, spaceName, state: { localDocumentCount, remoteDocumen
1404
1541
  total: localDocumentCount + missingOnLocal
1405
1542
  },
1406
1543
  title: spaceId
1407
- }), /* @__PURE__ */ import_react29.default.createElement(import_react_ui22.Icon, {
1544
+ }), /* @__PURE__ */ import_react30.default.createElement(import_react_ui23.Icon, {
1408
1545
  icon: "ph--arrow-fat-line-right--regular",
1409
1546
  size: 3,
1410
1547
  classNames: (0, import_react_ui_theme6.mx)(upActive && "animate-[pulse_1s_step-start_infinite]")
1411
1548
  }));
1412
1549
  };
1413
1550
  var Candle = ({ classNames, up, down }) => {
1414
- return /* @__PURE__ */ import_react29.default.createElement("div", {
1551
+ return /* @__PURE__ */ import_react30.default.createElement("div", {
1415
1552
  className: (0, import_react_ui_theme6.mx)("grid grid-cols-[1fr_2rem_1fr] w-full h-3", classNames)
1416
- }, /* @__PURE__ */ import_react29.default.createElement(Bar, {
1553
+ }, /* @__PURE__ */ import_react30.default.createElement(Bar, {
1417
1554
  classNames: "justify-end",
1418
1555
  ...up
1419
- }), /* @__PURE__ */ import_react29.default.createElement("div", {
1556
+ }), /* @__PURE__ */ import_react30.default.createElement("div", {
1420
1557
  className: "relative"
1421
- }, /* @__PURE__ */ import_react29.default.createElement("div", {
1558
+ }, /* @__PURE__ */ import_react30.default.createElement("div", {
1422
1559
  className: (0, import_react_ui_theme6.mx)("absolute inset-0 flex items-center justify-center text-xs", styles.barBg)
1423
- }, up.total)), /* @__PURE__ */ import_react29.default.createElement(Bar, down));
1560
+ }, up.total)), /* @__PURE__ */ import_react30.default.createElement(Bar, down));
1424
1561
  };
1425
1562
  var Bar = ({ classNames, count, total }) => {
1426
1563
  let p = count / total * 100;
1427
1564
  if (count < total) {
1428
1565
  p = Math.min(p, 95);
1429
1566
  }
1430
- return /* @__PURE__ */ import_react29.default.createElement("div", {
1567
+ return /* @__PURE__ */ import_react30.default.createElement("div", {
1431
1568
  className: (0, import_react_ui_theme6.mx)("relative flex w-full", styles.barBg, classNames)
1432
- }, /* @__PURE__ */ import_react29.default.createElement("div", {
1569
+ }, /* @__PURE__ */ import_react30.default.createElement("div", {
1433
1570
  className: (0, import_react_ui_theme6.mx)("shrink-0", styles.barFg),
1434
1571
  style: {
1435
1572
  width: `${p}%`
1436
1573
  }
1437
- }), count !== total && /* @__PURE__ */ import_react29.default.createElement("div", {
1574
+ }), count !== total && /* @__PURE__ */ import_react30.default.createElement("div", {
1438
1575
  className: "absolute top-0 bottom-0 flex items-center mx-0.5 text-black text-xs"
1439
1576
  }, count));
1440
1577
  };
1441
- var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SyncStatus/save-tracker.ts";
1578
+ var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SyncStatus/save-tracker.ts";
1442
1579
  var createClientSaveTracker = (client, cb) => {
1443
1580
  const unsubscribeCallbacks = {};
1444
1581
  const state = {};
@@ -1466,7 +1603,7 @@ var createClientSaveTracker = (client, cb) => {
1466
1603
  };
1467
1604
  var createSpaceSaveTracker = (space, cb) => {
1468
1605
  const ctx = new import_context2.Context(void 0, {
1469
- F: __dxlog_file4,
1606
+ F: __dxlog_file7,
1470
1607
  L: 40
1471
1608
  });
1472
1609
  void space.waitUntilReady().then(() => {
@@ -1525,21 +1662,21 @@ var getIcon = (status) => {
1525
1662
  }
1526
1663
  };
1527
1664
  var SyncStatus = () => {
1528
- const client = (0, import_react_client9.useClient)();
1665
+ const client = (0, import_react_client10.useClient)();
1529
1666
  const state = useSyncState();
1530
- const [saved, setSaved] = (0, import_react28.useState)(true);
1531
- (0, import_react28.useEffect)(() => {
1667
+ const [saved, setSaved] = (0, import_react29.useState)(true);
1668
+ (0, import_react29.useEffect)(() => {
1532
1669
  return createClientSaveTracker(client, (state2) => {
1533
1670
  setSaved(state2 === "saved");
1534
1671
  });
1535
1672
  }, []);
1536
- return /* @__PURE__ */ import_react28.default.createElement(SyncStatusIndicator, {
1673
+ return /* @__PURE__ */ import_react29.default.createElement(SyncStatusIndicator, {
1537
1674
  state,
1538
1675
  saved
1539
1676
  });
1540
1677
  };
1541
1678
  var SyncStatusIndicator = ({ state, saved }) => {
1542
- const { t } = (0, import_react_ui21.useTranslation)(import_chunk_AO4EW2RX.SPACE_PLUGIN);
1679
+ const { t } = (0, import_react_ui22.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
1543
1680
  const summary = getSyncSummary(state);
1544
1681
  const offline = Object.values(state).length === 0;
1545
1682
  const needsToUpload = summary.differentDocuments > 0 || summary.missingOnRemote > 0;
@@ -1550,8 +1687,8 @@ var SyncStatusIndicator = ({ state, saved }) => {
1550
1687
  needsToUpload,
1551
1688
  needsToDownload
1552
1689
  });
1553
- const [classNames, setClassNames] = (0, import_react28.useState)();
1554
- (0, import_react28.useEffect)(() => {
1690
+ const [classNames, setClassNames] = (0, import_react29.useState)();
1691
+ (0, import_react29.useEffect)(() => {
1555
1692
  setClassNames(void 0);
1556
1693
  if (offline || !needsToUpload && !needsToDownload) {
1557
1694
  return;
@@ -1566,60 +1703,58 @@ var SyncStatusIndicator = ({ state, saved }) => {
1566
1703
  needsToDownload
1567
1704
  ]);
1568
1705
  const title = t(`${status} label`);
1569
- const icon = /* @__PURE__ */ import_react28.default.createElement(import_react_ui21.Icon, {
1706
+ const icon = /* @__PURE__ */ import_react29.default.createElement(import_react_ui22.Icon, {
1570
1707
  icon: getIcon(status),
1571
1708
  size: 4,
1572
1709
  classNames
1573
1710
  });
1574
1711
  if (offline) {
1575
- return /* @__PURE__ */ import_react28.default.createElement(import_plugin_status_bar.StatusBar.Item, {
1712
+ return /* @__PURE__ */ import_react29.default.createElement(import_plugin_status_bar.StatusBar.Item, {
1576
1713
  title
1577
1714
  }, icon);
1578
1715
  } else {
1579
- return /* @__PURE__ */ import_react28.default.createElement(import_react_ui21.Popover.Root, null, /* @__PURE__ */ import_react28.default.createElement(import_react_ui21.Popover.Trigger, {
1716
+ return /* @__PURE__ */ import_react29.default.createElement(import_react_ui22.Popover.Root, null, /* @__PURE__ */ import_react29.default.createElement(import_react_ui22.Popover.Trigger, {
1580
1717
  asChild: true
1581
- }, /* @__PURE__ */ import_react28.default.createElement(import_plugin_status_bar.StatusBar.Button, {
1718
+ }, /* @__PURE__ */ import_react29.default.createElement(import_plugin_status_bar.StatusBar.Button, {
1582
1719
  title
1583
- }, icon)), /* @__PURE__ */ import_react28.default.createElement(import_react_ui21.Popover.Portal, null, /* @__PURE__ */ import_react28.default.createElement(import_react_ui21.Popover.Content, {
1584
- sideOffset: 16
1585
- }, /* @__PURE__ */ import_react28.default.createElement(SyncStatusDetail, {
1720
+ }, icon)), /* @__PURE__ */ import_react29.default.createElement(import_react_ui22.Popover.Portal, null, /* @__PURE__ */ import_react29.default.createElement(import_react_ui22.Popover.Content, null, /* @__PURE__ */ import_react29.default.createElement(SyncStatusDetail, {
1586
1721
  state,
1587
1722
  summary,
1588
1723
  debug: false
1589
- }))));
1724
+ }), /* @__PURE__ */ import_react29.default.createElement(import_react_ui22.Popover.Arrow, null))));
1590
1725
  }
1591
1726
  };
1592
1727
  var SyncStatusDetail = ({ classNames, state, summary, debug }) => {
1593
- const [showAll, setShowAll] = (0, import_react28.useState)(false);
1594
- const { t } = (0, import_react_ui21.useTranslation)(import_chunk_AO4EW2RX.SPACE_PLUGIN);
1728
+ const [showAll, setShowAll] = (0, import_react29.useState)(false);
1729
+ const { t } = (0, import_react_ui22.useTranslation)(import_chunk_WZR6OAN3.SPACE_PLUGIN);
1595
1730
  const entries = Object.entries(state).filter(([_, value]) => showAll || value.missingOnLocal + value.missingOnRemote > 0).toSorted(([a], [b]) => a < b ? -1 : a > b ? 1 : 0);
1596
- const handleCheckedChange = (0, import_react28.useCallback)((state2) => setShowAll(state2), [
1731
+ const handleCheckedChange = (0, import_react29.useCallback)((state2) => setShowAll(state2), [
1597
1732
  setShowAll
1598
1733
  ]);
1599
- return /* @__PURE__ */ import_react28.default.createElement("div", {
1734
+ return /* @__PURE__ */ import_react29.default.createElement("div", {
1600
1735
  className: (0, import_react_ui_theme5.mx)("flex flex-col gap-3 p-2 text-xs min-w-96", classNames)
1601
- }, /* @__PURE__ */ import_react28.default.createElement("div", {
1736
+ }, /* @__PURE__ */ import_react29.default.createElement("div", {
1602
1737
  role: "none",
1603
1738
  className: "flex items-center"
1604
- }, /* @__PURE__ */ import_react28.default.createElement("h1", {
1739
+ }, /* @__PURE__ */ import_react29.default.createElement("h1", {
1605
1740
  className: "flex-1"
1606
- }, t("sync status title")), /* @__PURE__ */ import_react28.default.createElement("div", {
1741
+ }, t("sync status title")), /* @__PURE__ */ import_react29.default.createElement("div", {
1607
1742
  className: "flex items-center gap-2"
1608
- }, /* @__PURE__ */ import_react28.default.createElement(import_react_ui21.Input.Root, null, /* @__PURE__ */ import_react28.default.createElement(import_react_ui21.Input.Label, {
1743
+ }, /* @__PURE__ */ import_react29.default.createElement(import_react_ui22.Input.Root, null, /* @__PURE__ */ import_react29.default.createElement(import_react_ui22.Input.Label, {
1609
1744
  classNames: "text-xs"
1610
- }, t("show all label")), /* @__PURE__ */ import_react28.default.createElement(import_react_ui21.Input.Checkbox, {
1745
+ }, t("show all label")), /* @__PURE__ */ import_react29.default.createElement(import_react_ui22.Input.Checkbox, {
1611
1746
  checked: showAll,
1612
1747
  onCheckedChange: handleCheckedChange
1613
- })))), /* @__PURE__ */ import_react28.default.createElement("div", {
1748
+ })))), /* @__PURE__ */ import_react29.default.createElement("div", {
1614
1749
  className: "flex flex-col gap-2"
1615
- }, entries.length === 0 && /* @__PURE__ */ import_react28.default.createElement("div", {
1750
+ }, entries.length === 0 && /* @__PURE__ */ import_react29.default.createElement("div", {
1616
1751
  role: "none",
1617
1752
  className: "flex justify-center"
1618
- }, t("no sync status label")), entries.map(([spaceId, state2]) => /* @__PURE__ */ import_react28.default.createElement(SpaceRowContainer, {
1753
+ }, t("no sync status label")), entries.map(([spaceId, state2]) => /* @__PURE__ */ import_react29.default.createElement(SpaceRowContainer, {
1619
1754
  key: spaceId,
1620
1755
  spaceId,
1621
1756
  state: state2
1622
- }))), debug && /* @__PURE__ */ import_react28.default.createElement(import_react_ui_syntax_highlighter.SyntaxHighlighter, {
1757
+ }))), debug && /* @__PURE__ */ import_react29.default.createElement(import_react_ui_syntax_highlighter.SyntaxHighlighter, {
1623
1758
  language: "json"
1624
1759
  }, JSON.stringify(summary, null, 2)));
1625
1760
  };
@@ -1643,14 +1778,17 @@ var SyncStatusDetail = ({ classNames, state, summary, debug }) => {
1643
1778
  JOIN_DIALOG,
1644
1779
  JoinDialog,
1645
1780
  MenuFooter,
1781
+ POPOVER_ADD_SPACE,
1646
1782
  POPOVER_RENAME_OBJECT,
1647
1783
  POPOVER_RENAME_SPACE,
1648
1784
  PersistenceStatus,
1785
+ PopoverAddSpace,
1649
1786
  PopoverRenameObject,
1650
1787
  PopoverRenameSpace,
1651
1788
  ReactRoot,
1652
1789
  ReactSurface,
1653
1790
  SPACE_SETTINGS_DIALOG,
1791
+ Schema,
1654
1792
  ShareSpaceButton,
1655
1793
  ShareSpaceButtonImpl,
1656
1794
  SmallPresence,
@@ -1666,4 +1804,4 @@ var SyncStatusDetail = ({ classNames, state, summary, debug }) => {
1666
1804
  SyncStatusDetail,
1667
1805
  SyncStatusIndicator
1668
1806
  });
1669
- //# sourceMappingURL=chunk-AJRP7AD6.cjs.map
1807
+ //# sourceMappingURL=chunk-N2FS7PRA.cjs.map