@dxos/plugin-space 0.7.5-labs.e27f9b9 → 0.7.5-labs.f400bbc

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 (224) hide show
  1. package/dist/lib/browser/{app-graph-builder-TTM2YZVS.mjs → app-graph-builder-MGK5HWPZ.mjs} +21 -100
  2. package/dist/lib/browser/app-graph-builder-MGK5HWPZ.mjs.map +7 -0
  3. package/dist/lib/browser/{app-graph-serializer-ZGM5NDXE.mjs → app-graph-serializer-FOWFLYGU.mjs} +4 -4
  4. package/dist/lib/browser/{chunk-S5IGZNXJ.mjs → chunk-23RVI5FZ.mjs} +16 -5
  5. package/dist/lib/browser/chunk-23RVI5FZ.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-RLZQJD47.mjs → chunk-NU7WDVGN.mjs} +2 -1
  7. package/dist/lib/browser/chunk-NU7WDVGN.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-YB3JWCPY.mjs → chunk-S6B7627U.mjs} +306 -210
  9. package/dist/lib/browser/chunk-S6B7627U.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-ENRYFGYE.mjs → chunk-UDWHTKB5.mjs} +6 -3
  11. package/dist/lib/browser/chunk-UDWHTKB5.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-H2AR4OLP.mjs → chunk-ULA2UQJ4.mjs} +15 -6
  13. package/dist/lib/browser/chunk-ULA2UQJ4.mjs.map +7 -0
  14. package/dist/lib/browser/{identity-created-VICTPQX7.mjs → identity-created-FYGS6TBH.mjs} +2 -2
  15. package/dist/lib/browser/index.mjs +53 -19
  16. package/dist/lib/browser/index.mjs.map +3 -3
  17. package/dist/lib/browser/{intent-resolver-SYYO26PR.mjs → intent-resolver-QVR4MSJV.mjs} +26 -8
  18. package/dist/lib/browser/intent-resolver-QVR4MSJV.mjs.map +7 -0
  19. package/dist/lib/browser/meta.json +1 -1
  20. package/dist/lib/browser/{react-root-YUF4IL5W.mjs → react-root-IP2ZB245.mjs} +5 -5
  21. package/dist/lib/browser/{react-surface-YIPKS26R.mjs → react-surface-BT3EHB6V.mjs} +16 -22
  22. package/dist/lib/browser/react-surface-BT3EHB6V.mjs.map +7 -0
  23. package/dist/lib/browser/schema-5W3DSY2E.mjs +24 -0
  24. package/dist/lib/browser/schema-5W3DSY2E.mjs.map +7 -0
  25. package/dist/lib/browser/{settings-HN5UIYQO.mjs → settings-PHPCXX33.mjs} +2 -2
  26. package/dist/lib/browser/{spaces-ready-F57ITJDR.mjs → spaces-ready-K47RR7N2.mjs} +4 -4
  27. package/dist/lib/browser/{state-6DCY5YJP.mjs → state-INJ63O57.mjs} +2 -2
  28. package/dist/lib/browser/types/index.mjs +5 -5
  29. package/dist/lib/node/{app-graph-builder-6N4TEVHH.cjs → app-graph-builder-ZIUBXRPA.cjs} +45 -124
  30. package/dist/lib/node/app-graph-builder-ZIUBXRPA.cjs.map +7 -0
  31. package/dist/lib/node/{app-graph-serializer-AWKVTYAB.cjs → app-graph-serializer-VQOGHKXL.cjs} +20 -20
  32. package/dist/lib/node/{chunk-HFBC3X66.cjs → chunk-N2FS7PRA.cjs} +367 -270
  33. package/dist/lib/node/chunk-N2FS7PRA.cjs.map +7 -0
  34. package/dist/lib/node/{chunk-MMXP2NHE.cjs → chunk-OVGKWJOC.cjs} +51 -40
  35. package/dist/lib/node/chunk-OVGKWJOC.cjs.map +7 -0
  36. package/dist/lib/node/{chunk-I2LRRRMV.cjs → chunk-U6DYXAR3.cjs} +10 -7
  37. package/dist/lib/node/chunk-U6DYXAR3.cjs.map +7 -0
  38. package/dist/lib/node/{chunk-SPCSJ2CY.cjs → chunk-WAJKBO3J.cjs} +21 -12
  39. package/dist/lib/node/chunk-WAJKBO3J.cjs.map +7 -0
  40. package/dist/lib/node/{chunk-UX3U4RU2.cjs → chunk-YZKNRFHU.cjs} +5 -4
  41. package/dist/lib/node/chunk-YZKNRFHU.cjs.map +7 -0
  42. package/dist/lib/node/{identity-created-JNDKMFKI.cjs → identity-created-AXI64BLE.cjs} +6 -6
  43. package/dist/lib/node/index.cjs +106 -73
  44. package/dist/lib/node/index.cjs.map +3 -3
  45. package/dist/lib/node/{intent-resolver-2MFJV5A7.cjs → intent-resolver-MLENGECT.cjs} +76 -59
  46. package/dist/lib/node/intent-resolver-MLENGECT.cjs.map +7 -0
  47. package/dist/lib/node/meta.json +1 -1
  48. package/dist/lib/node/{react-root-2WARZU2P.cjs → react-root-3OX5Z5CX.cjs} +10 -10
  49. package/dist/lib/node/{react-surface-QUY7D43M.cjs → react-surface-5NYCMXSM.cjs} +49 -57
  50. package/dist/lib/node/react-surface-5NYCMXSM.cjs.map +7 -0
  51. package/dist/lib/node/schema-YN7WVFRX.cjs +40 -0
  52. package/dist/lib/node/schema-YN7WVFRX.cjs.map +7 -0
  53. package/dist/lib/node/{settings-RBBL22DJ.cjs → settings-5QYFWNH7.cjs} +6 -6
  54. package/dist/lib/node/{spaces-ready-WHU4J6E5.cjs → spaces-ready-FQNAKR7G.cjs} +13 -13
  55. package/dist/lib/node/{state-WPZC4JXB.cjs → state-57UE3DYE.cjs} +6 -6
  56. package/dist/lib/node/types/index.cjs +18 -18
  57. package/dist/lib/node/types/index.cjs.map +1 -1
  58. package/dist/lib/node-esm/{app-graph-builder-MS6BI5EW.mjs → app-graph-builder-TERVM2SL.mjs} +21 -100
  59. package/dist/lib/node-esm/app-graph-builder-TERVM2SL.mjs.map +7 -0
  60. package/dist/lib/node-esm/{app-graph-serializer-AWAWDSCM.mjs → app-graph-serializer-GZRSWHEN.mjs} +4 -4
  61. package/dist/lib/node-esm/{chunk-ESWV7ICX.mjs → chunk-2TQ2AJEZ.mjs} +6 -3
  62. package/dist/lib/node-esm/chunk-2TQ2AJEZ.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-LGL4A5B5.mjs → chunk-6RSVVEPS.mjs} +2 -1
  64. package/dist/lib/node-esm/chunk-6RSVVEPS.mjs.map +7 -0
  65. package/dist/lib/node-esm/{chunk-TIFAXTJ5.mjs → chunk-DIKRH2IK.mjs} +306 -210
  66. package/dist/lib/node-esm/chunk-DIKRH2IK.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-77RE7Y5J.mjs → chunk-PGH5L7MV.mjs} +16 -5
  68. package/dist/lib/node-esm/chunk-PGH5L7MV.mjs.map +7 -0
  69. package/dist/lib/node-esm/{chunk-S6VAU6VJ.mjs → chunk-TRNZQEEN.mjs} +15 -6
  70. package/dist/lib/node-esm/chunk-TRNZQEEN.mjs.map +7 -0
  71. package/dist/lib/node-esm/{identity-created-3AUSSVEK.mjs → identity-created-3CGEXNPO.mjs} +2 -2
  72. package/dist/lib/node-esm/index.mjs +53 -19
  73. package/dist/lib/node-esm/index.mjs.map +3 -3
  74. package/dist/lib/node-esm/{intent-resolver-UKXKZN2V.mjs → intent-resolver-BLW4RM6X.mjs} +26 -8
  75. package/dist/lib/node-esm/intent-resolver-BLW4RM6X.mjs.map +7 -0
  76. package/dist/lib/node-esm/meta.json +1 -1
  77. package/dist/lib/node-esm/{react-root-R3FZKA2B.mjs → react-root-7XXGP56B.mjs} +5 -5
  78. package/dist/lib/node-esm/{react-surface-RH57RBYI.mjs → react-surface-R2ECJSFB.mjs} +16 -22
  79. package/dist/lib/node-esm/react-surface-R2ECJSFB.mjs.map +7 -0
  80. package/dist/lib/node-esm/schema-LOR2EVGY.mjs +25 -0
  81. package/dist/lib/node-esm/schema-LOR2EVGY.mjs.map +7 -0
  82. package/dist/lib/node-esm/{settings-VBAUB37B.mjs → settings-H6MXTEQM.mjs} +2 -2
  83. package/dist/lib/node-esm/{spaces-ready-ABADUX2P.mjs → spaces-ready-HKAQG5SA.mjs} +4 -4
  84. package/dist/lib/node-esm/{state-5GH2D5U4.mjs → state-VYA6OFHD.mjs} +2 -2
  85. package/dist/lib/node-esm/types/index.mjs +5 -5
  86. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  87. package/dist/types/src/capabilities/app-graph-builder.d.ts +88 -88
  88. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  89. package/dist/types/src/capabilities/capabilities.d.ts +2 -1
  90. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  91. package/dist/types/src/capabilities/index.d.ts +112 -111
  92. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  94. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  95. package/dist/types/src/capabilities/schema.d.ts +4 -0
  96. package/dist/types/src/capabilities/schema.d.ts.map +1 -0
  97. package/dist/types/src/components/AdvancedObjectSettings/AdvancedObjectSettings.d.ts +1 -2
  98. package/dist/types/src/components/AdvancedObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  99. package/dist/types/src/components/AdvancedObjectSettings/ForeignKeys.d.ts +1 -2
  100. package/dist/types/src/components/AdvancedObjectSettings/ForeignKeys.d.ts.map +1 -1
  101. package/dist/types/src/components/AwaitingObject.d.ts +1 -2
  102. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  103. package/dist/types/src/components/BaseObjectSettings.d.ts +1 -2
  104. package/dist/types/src/components/BaseObjectSettings.d.ts.map +1 -1
  105. package/dist/types/src/components/CollectionMain.d.ts +1 -2
  106. package/dist/types/src/components/CollectionMain.d.ts.map +1 -1
  107. package/dist/types/src/components/CollectionSection.d.ts +1 -2
  108. package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
  109. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +2 -4
  110. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  111. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  112. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +5 -7
  113. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  114. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -2
  115. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  116. package/dist/types/src/components/JoinDialog.d.ts +1 -2
  117. package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
  118. package/dist/types/src/components/MenuFooter.d.ts +1 -2
  119. package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
  120. package/dist/types/src/components/PersistenceStatus.d.ts +1 -2
  121. package/dist/types/src/components/PersistenceStatus.d.ts.map +1 -1
  122. package/dist/types/src/components/PopoverAddSpace.d.ts +3 -0
  123. package/dist/types/src/components/PopoverAddSpace.d.ts.map +1 -0
  124. package/dist/types/src/components/PopoverRenameObject.d.ts +1 -2
  125. package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
  126. package/dist/types/src/components/PopoverRenameSpace.d.ts +1 -2
  127. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
  128. package/dist/types/src/components/ShareSpaceButton.d.ts +2 -3
  129. package/dist/types/src/components/ShareSpaceButton.d.ts.map +1 -1
  130. package/dist/types/src/components/SpacePluginSettings.d.ts +1 -2
  131. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  132. package/dist/types/src/components/SpacePresence.d.ts +4 -5
  133. package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
  134. package/dist/types/src/components/SpacePresence.stories.d.ts +2 -3
  135. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  136. package/dist/types/src/components/SpaceSettings/SpaceSettingsDialog.d.ts +1 -2
  137. package/dist/types/src/components/SpaceSettings/SpaceSettingsDialog.d.ts.map +1 -1
  138. package/dist/types/src/components/SpaceSettings/SpaceSettingsPanel.d.ts +3 -5
  139. package/dist/types/src/components/SpaceSettings/SpaceSettingsPanel.d.ts.map +1 -1
  140. package/dist/types/src/components/SpaceSettings/SpaceSettingsPanel.stories.d.ts.map +1 -1
  141. package/dist/types/src/components/SyncStatus/InlineSyncStatus.d.ts +1 -2
  142. package/dist/types/src/components/SyncStatus/InlineSyncStatus.d.ts.map +1 -1
  143. package/dist/types/src/components/SyncStatus/Space.d.ts +2 -3
  144. package/dist/types/src/components/SyncStatus/Space.d.ts.map +1 -1
  145. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +3 -4
  146. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  147. package/dist/types/src/components/index.d.ts +1 -0
  148. package/dist/types/src/components/index.d.ts.map +1 -1
  149. package/dist/types/src/events.d.ts +4 -0
  150. package/dist/types/src/events.d.ts.map +1 -1
  151. package/dist/types/src/index.d.ts +1 -1
  152. package/dist/types/src/index.d.ts.map +1 -1
  153. package/dist/types/src/translations.d.ts +9 -0
  154. package/dist/types/src/translations.d.ts.map +1 -1
  155. package/dist/types/src/types/collection.d.ts +2 -2
  156. package/dist/types/src/types/thread.d.ts +34 -34
  157. package/dist/types/src/types/types.d.ts +35 -13
  158. package/dist/types/src/types/types.d.ts.map +1 -1
  159. package/dist/types/src/util.d.ts +3 -2
  160. package/dist/types/src/util.d.ts.map +1 -1
  161. package/package.json +40 -38
  162. package/src/SpacePlugin.tsx +35 -11
  163. package/src/capabilities/app-graph-builder.ts +15 -89
  164. package/src/capabilities/capabilities.ts +3 -1
  165. package/src/capabilities/index.ts +1 -0
  166. package/src/capabilities/intent-resolver.ts +18 -0
  167. package/src/capabilities/react-surface.tsx +12 -28
  168. package/src/capabilities/schema.ts +27 -0
  169. package/src/components/BaseObjectSettings.tsx +7 -0
  170. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +1 -3
  171. package/src/components/CreateDialog/CreateObjectDialog.tsx +29 -21
  172. package/src/components/CreateDialog/CreateObjectPanel.tsx +41 -44
  173. package/src/components/CreateDialog/CreateSpaceDialog.tsx +8 -1
  174. package/src/components/PopoverAddSpace.tsx +46 -0
  175. package/src/components/SpaceSettings/SpaceSettingsPanel.stories.tsx +5 -1
  176. package/src/components/SpaceSettings/SpaceSettingsPanel.tsx +27 -4
  177. package/src/components/index.ts +1 -0
  178. package/src/events.ts +6 -0
  179. package/src/index.ts +1 -1
  180. package/src/translations.ts +3 -0
  181. package/src/types/types.ts +21 -6
  182. package/src/util.tsx +8 -2
  183. package/dist/lib/browser/app-graph-builder-TTM2YZVS.mjs.map +0 -7
  184. package/dist/lib/browser/chunk-ENRYFGYE.mjs.map +0 -7
  185. package/dist/lib/browser/chunk-H2AR4OLP.mjs.map +0 -7
  186. package/dist/lib/browser/chunk-RLZQJD47.mjs.map +0 -7
  187. package/dist/lib/browser/chunk-S5IGZNXJ.mjs.map +0 -7
  188. package/dist/lib/browser/chunk-YB3JWCPY.mjs.map +0 -7
  189. package/dist/lib/browser/intent-resolver-SYYO26PR.mjs.map +0 -7
  190. package/dist/lib/browser/react-surface-YIPKS26R.mjs.map +0 -7
  191. package/dist/lib/node/app-graph-builder-6N4TEVHH.cjs.map +0 -7
  192. package/dist/lib/node/chunk-HFBC3X66.cjs.map +0 -7
  193. package/dist/lib/node/chunk-I2LRRRMV.cjs.map +0 -7
  194. package/dist/lib/node/chunk-MMXP2NHE.cjs.map +0 -7
  195. package/dist/lib/node/chunk-SPCSJ2CY.cjs.map +0 -7
  196. package/dist/lib/node/chunk-UX3U4RU2.cjs.map +0 -7
  197. package/dist/lib/node/intent-resolver-2MFJV5A7.cjs.map +0 -7
  198. package/dist/lib/node/react-surface-QUY7D43M.cjs.map +0 -7
  199. package/dist/lib/node-esm/app-graph-builder-MS6BI5EW.mjs.map +0 -7
  200. package/dist/lib/node-esm/chunk-77RE7Y5J.mjs.map +0 -7
  201. package/dist/lib/node-esm/chunk-ESWV7ICX.mjs.map +0 -7
  202. package/dist/lib/node-esm/chunk-LGL4A5B5.mjs.map +0 -7
  203. package/dist/lib/node-esm/chunk-S6VAU6VJ.mjs.map +0 -7
  204. package/dist/lib/node-esm/chunk-TIFAXTJ5.mjs.map +0 -7
  205. package/dist/lib/node-esm/intent-resolver-UKXKZN2V.mjs.map +0 -7
  206. package/dist/lib/node-esm/react-surface-RH57RBYI.mjs.map +0 -7
  207. /package/dist/lib/browser/{app-graph-serializer-ZGM5NDXE.mjs.map → app-graph-serializer-FOWFLYGU.mjs.map} +0 -0
  208. /package/dist/lib/browser/{identity-created-VICTPQX7.mjs.map → identity-created-FYGS6TBH.mjs.map} +0 -0
  209. /package/dist/lib/browser/{react-root-YUF4IL5W.mjs.map → react-root-IP2ZB245.mjs.map} +0 -0
  210. /package/dist/lib/browser/{settings-HN5UIYQO.mjs.map → settings-PHPCXX33.mjs.map} +0 -0
  211. /package/dist/lib/browser/{spaces-ready-F57ITJDR.mjs.map → spaces-ready-K47RR7N2.mjs.map} +0 -0
  212. /package/dist/lib/browser/{state-6DCY5YJP.mjs.map → state-INJ63O57.mjs.map} +0 -0
  213. /package/dist/lib/node/{app-graph-serializer-AWKVTYAB.cjs.map → app-graph-serializer-VQOGHKXL.cjs.map} +0 -0
  214. /package/dist/lib/node/{identity-created-JNDKMFKI.cjs.map → identity-created-AXI64BLE.cjs.map} +0 -0
  215. /package/dist/lib/node/{react-root-2WARZU2P.cjs.map → react-root-3OX5Z5CX.cjs.map} +0 -0
  216. /package/dist/lib/node/{settings-RBBL22DJ.cjs.map → settings-5QYFWNH7.cjs.map} +0 -0
  217. /package/dist/lib/node/{spaces-ready-WHU4J6E5.cjs.map → spaces-ready-FQNAKR7G.cjs.map} +0 -0
  218. /package/dist/lib/node/{state-WPZC4JXB.cjs.map → state-57UE3DYE.cjs.map} +0 -0
  219. /package/dist/lib/node-esm/{app-graph-serializer-AWAWDSCM.mjs.map → app-graph-serializer-GZRSWHEN.mjs.map} +0 -0
  220. /package/dist/lib/node-esm/{identity-created-3AUSSVEK.mjs.map → identity-created-3CGEXNPO.mjs.map} +0 -0
  221. /package/dist/lib/node-esm/{react-root-R3FZKA2B.mjs.map → react-root-7XXGP56B.mjs.map} +0 -0
  222. /package/dist/lib/node-esm/{settings-VBAUB37B.mjs.map → settings-H6MXTEQM.mjs.map} +0 -0
  223. /package/dist/lib/node-esm/{spaces-ready-ABADUX2P.mjs.map → spaces-ready-HKAQG5SA.mjs.map} +0 -0
  224. /package/dist/lib/node-esm/{state-5GH2D5U4.mjs.map → state-VYA6OFHD.mjs.map} +0 -0
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  SpaceCapabilities
3
- } from "./chunk-RLZQJD47.mjs";
3
+ } from "./chunk-NU7WDVGN.mjs";
4
4
  import {
5
5
  COMPOSER_SPACE_LOCK,
6
6
  getSpaceDisplayName
7
- } from "./chunk-S5IGZNXJ.mjs";
7
+ } from "./chunk-23RVI5FZ.mjs";
8
8
  import {
9
9
  CollectionType,
10
10
  SpaceAction,
11
11
  SpaceForm
12
- } from "./chunk-H2AR4OLP.mjs";
12
+ } from "./chunk-ULA2UQJ4.mjs";
13
13
  import {
14
14
  SPACE_PLUGIN
15
15
  } from "./chunk-PQXZCNAU.mjs";
@@ -206,14 +206,21 @@ import React4 from "react";
206
206
  import { Input, useTranslation as useTranslation4 } from "@dxos/react-ui";
207
207
  var BaseObjectSettings = ({ object }) => {
208
208
  const { t } = useTranslation4(SPACE_PLUGIN);
209
+ const inputRef = React4.useRef(null);
209
210
  return /* @__PURE__ */ React4.createElement("div", {
210
211
  role: "form",
211
212
  className: "flex flex-col w-full p-2 gap-1"
212
213
  }, /* @__PURE__ */ React4.createElement(Input.Root, null, /* @__PURE__ */ React4.createElement(Input.Label, null, t("name label")), /* @__PURE__ */ React4.createElement(Input.TextInput, {
214
+ ref: inputRef,
213
215
  placeholder: t("name placeholder"),
214
216
  value: object.name ?? "",
215
217
  onChange: (event) => {
216
218
  object.name = event.target.value;
219
+ },
220
+ onKeyDown: (event) => {
221
+ if (event.key === "Enter") {
222
+ inputRef.current?.blur();
223
+ }
217
224
  }
218
225
  })));
219
226
  };
@@ -221,20 +228,23 @@ var BaseObjectSettings = ({ object }) => {
221
228
  // packages/plugins/plugin-space/src/components/CreateDialog/CreateObjectDialog.tsx
222
229
  import { pipe } from "effect";
223
230
  import React6, { useCallback as useCallback5, useRef } from "react";
224
- import { chain, createIntent as createIntent2, LayoutAction as LayoutAction2, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
231
+ import { Capabilities, chain, createIntent as createIntent2, LayoutAction as LayoutAction2, useCapabilities, useIntentDispatcher as useIntentDispatcher2, usePluginManager as usePluginManager2 } from "@dxos/app-framework";
232
+ import { invariant as invariant2 } from "@dxos/invariant";
225
233
  import { useClient as useClient2 } from "@dxos/react-client";
226
234
  import { getSpace, isReactiveObject, isSpace, useSpaces } from "@dxos/react-client/echo";
227
235
  import { Button as Button2, Dialog, Icon as Icon2, useTranslation as useTranslation6 } from "@dxos/react-ui";
228
236
 
229
237
  // packages/plugins/plugin-space/src/components/CreateDialog/CreateObjectPanel.tsx
230
- import React5, { useCallback as useCallback4, useMemo, useState as useState3 } from "react";
238
+ import React5, { useCallback as useCallback4, useState as useState3 } from "react";
231
239
  import { Surface, isSurfaceAvailable, usePluginManager } from "@dxos/app-framework";
232
- import { getObjectAnnotation, S } from "@dxos/echo-schema";
240
+ import { getObjectAnnotation } from "@dxos/echo-schema";
241
+ import { invariant } from "@dxos/invariant";
233
242
  import { Icon, toLocalizedString, useTranslation as useTranslation5 } from "@dxos/react-ui";
234
243
  import { Form as Form2 } from "@dxos/react-ui-form";
235
244
  import { SearchList } from "@dxos/react-ui-searchlist";
236
245
  import { mx as mx2 } from "@dxos/react-ui-theme";
237
- import { nonNullable } from "@dxos/util";
246
+ import { isNonNullable } from "@dxos/util";
247
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/CreateDialog/CreateObjectPanel.tsx";
238
248
  var useInputSurfaceLookup = (baseData) => {
239
249
  const pluginManager = usePluginManager();
240
250
  return useCallback4(({ prop, schema, inputProps }) => {
@@ -259,12 +269,12 @@ var useInputSurfaceLookup = (baseData) => {
259
269
  baseData
260
270
  ]);
261
271
  };
262
- var CreateObjectPanel = ({ classNames, schemas, spaces, typename: initialTypename, target: initialTarget, name: initialName, defaultSpaceId, resolve, onCreateObject }) => {
272
+ var CreateObjectPanel = ({ classNames, forms, spaces, typename: initialTypename, target: initialTarget, name: initialName, defaultSpaceId, resolve, onCreateObject }) => {
263
273
  const { t } = useTranslation5(SPACE_PLUGIN);
264
274
  const [typename, setTypename] = useState3(initialTypename);
265
275
  const [target, setTarget] = useState3(initialTarget);
266
- const schema = schemas.find((schema2) => getObjectAnnotation(schema2)?.typename === typename);
267
- const options = schemas.map(getObjectAnnotation).filter(nonNullable).sort((a, b) => {
276
+ const form = forms.find((form2) => getObjectAnnotation(form2.objectSchema)?.typename === typename);
277
+ const options = forms.map((form2) => getObjectAnnotation(form2.objectSchema)).filter(isNonNullable).sort((a, b) => {
268
278
  const nameA = t("typename label", {
269
279
  ns: a.typename,
270
280
  defaultValue: a.typename
@@ -276,63 +286,68 @@ var CreateObjectPanel = ({ classNames, schemas, spaces, typename: initialTypenam
276
286
  return nameA.localeCompare(nameB);
277
287
  });
278
288
  const handleCreateObject = useCallback4(async (props) => {
279
- if (!schema || !target) {
289
+ if (!form || !target) {
280
290
  return;
281
291
  }
282
292
  await onCreateObject?.({
283
- schema,
293
+ form,
284
294
  target,
285
295
  data: props
286
296
  });
287
297
  }, [
288
298
  onCreateObject,
289
- schema,
299
+ form,
290
300
  target
291
301
  ]);
292
- const metadata = useMemo(() => {
293
- if (!typename) {
294
- return;
302
+ const handleSetTypename = useCallback4(async (typename2) => {
303
+ invariant(target, "target is required", {
304
+ F: __dxlog_file,
305
+ L: 94,
306
+ S: void 0,
307
+ A: [
308
+ "target",
309
+ "'target is required'"
310
+ ]
311
+ });
312
+ const form2 = forms.find((form3) => getObjectAnnotation(form3.objectSchema)?.typename === typename2);
313
+ if (form2 && !form2.formSchema) {
314
+ await onCreateObject?.({
315
+ form: form2,
316
+ target
317
+ });
318
+ } else {
319
+ setTypename(typename2);
295
320
  }
296
- return resolve?.(typename);
297
321
  }, [
298
- resolve,
299
- typename
322
+ forms,
323
+ onCreateObject,
324
+ target
300
325
  ]);
301
326
  const inputSurfaceLookup = useInputSurfaceLookup({
302
327
  target
303
328
  });
304
- const form = useMemo(() => {
305
- const schema2 = metadata?.creationSchema ?? S.Struct({
306
- name: S.optional(S.String)
307
- });
308
- return /* @__PURE__ */ React5.createElement(Form2, {
309
- classNames: "!p-0",
310
- autoFocus: true,
311
- values: {
312
- name: initialName
313
- },
314
- schema: schema2,
315
- testId: "create-object-form",
316
- onSave: handleCreateObject,
317
- lookupComponent: inputSurfaceLookup
318
- });
319
- }, [
320
- initialName,
321
- handleCreateObject,
322
- metadata
323
- ]);
324
329
  return /* @__PURE__ */ React5.createElement("div", {
325
330
  role: "form",
326
331
  className: mx2("flex flex-col gap-2", classNames)
327
- }, !schema ? /* @__PURE__ */ React5.createElement(SelectSchema, {
332
+ }, !form ? /* @__PURE__ */ React5.createElement(SelectSchema, {
328
333
  options,
329
334
  resolve,
330
- onChange: setTypename
335
+ onChange: handleSetTypename
331
336
  }) : !target ? /* @__PURE__ */ React5.createElement(SelectSpace, {
332
337
  spaces,
333
338
  defaultSpaceId,
334
339
  onChange: setTarget
335
- }) : form);
340
+ }) : form.formSchema ? /* @__PURE__ */ React5.createElement(Form2, {
341
+ classNames: "!p-0",
342
+ autoFocus: true,
343
+ values: {
344
+ name: initialName
345
+ },
346
+ schema: form.formSchema,
347
+ testId: "create-object-form",
348
+ onSave: handleCreateObject,
349
+ lookupComponent: inputSurfaceLookup
350
+ }) : void 0);
336
351
  };
337
352
  var SelectSpace = ({ spaces, defaultSpaceId, onChange }) => {
338
353
  const { t } = useTranslation5(SPACE_PLUGIN);
@@ -398,23 +413,50 @@ var SelectSchema = ({ options, resolve, onChange }) => {
398
413
  }))))));
399
414
  };
400
415
 
416
+ // packages/plugins/plugin-space/src/capabilities/index.ts
417
+ import { lazy } from "@dxos/app-framework";
418
+ var AppGraphBuilder = lazy(() => import("./app-graph-builder-MGK5HWPZ.mjs"));
419
+ var AppGraphSerializer = lazy(() => import("./app-graph-serializer-FOWFLYGU.mjs"));
420
+ var IdentityCreated = lazy(() => import("./identity-created-FYGS6TBH.mjs"));
421
+ var IntentResolver = lazy(() => import("./intent-resolver-QVR4MSJV.mjs"));
422
+ var ReactRoot = lazy(() => import("./react-root-IP2ZB245.mjs"));
423
+ var ReactSurface = lazy(() => import("./react-surface-BT3EHB6V.mjs"));
424
+ var Schema = lazy(() => import("./schema-5W3DSY2E.mjs"));
425
+ var SpaceSettings = lazy(() => import("./settings-PHPCXX33.mjs"));
426
+ var SpaceState = lazy(() => import("./state-INJ63O57.mjs"));
427
+ var SpacesReady = lazy(() => import("./spaces-ready-K47RR7N2.mjs"));
428
+
401
429
  // packages/plugins/plugin-space/src/components/CreateDialog/CreateObjectDialog.tsx
430
+ var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/CreateDialog/CreateObjectDialog.tsx";
402
431
  var CREATE_OBJECT_DIALOG = `${SPACE_PLUGIN}/CreateObjectDialog`;
403
- var CreateObjectDialog = ({ schemas, target, typename, name, shouldNavigate: _shouldNavigate, resolve }) => {
432
+ var CreateObjectDialog = ({ target, typename, name, shouldNavigate: _shouldNavigate }) => {
404
433
  const closeRef = useRef(null);
434
+ const manager = usePluginManager2();
405
435
  const { t } = useTranslation6(SPACE_PLUGIN);
406
436
  const client = useClient2();
407
437
  const spaces = useSpaces();
408
438
  const { dispatchPromise: dispatch } = useIntentDispatcher2();
409
- const handleCreateObject = useCallback5(async ({ schema, target: _target, data }) => {
439
+ const forms = useCapabilities(SpaceCapabilities.ObjectForm);
440
+ const resolve = useCallback5((typename2) => manager.context.requestCapabilities(Capabilities.Metadata).find(({ id }) => id === typename2)?.metadata ?? {}, [
441
+ manager
442
+ ]);
443
+ const handleCreateObject = useCallback5(async ({ form, target: _target, data = {} }) => {
410
444
  const target2 = isSpace(_target) ? _target.properties[CollectionType.typename]?.target : _target;
411
- const createObjectIntent = resolve?.(schema.typename)?.createObject;
412
- if (!createObjectIntent || !target2) {
445
+ if (!target2) {
413
446
  return;
414
447
  }
415
448
  closeRef.current?.click();
416
449
  const space = isSpace(target2) ? target2 : getSpace(target2);
417
- const result = await dispatch(createObjectIntent(data, {
450
+ invariant2(space, "Missing space", {
451
+ F: __dxlog_file2,
452
+ L: 75,
453
+ S: void 0,
454
+ A: [
455
+ "space",
456
+ "'Missing space'"
457
+ ]
458
+ });
459
+ const result = await dispatch(form.getIntent(data, {
418
460
  space
419
461
  }));
420
462
  const object = result.data?.object;
@@ -456,7 +498,7 @@ var CreateObjectDialog = ({ schemas, target, typename, name, shouldNavigate: _sh
456
498
  size: 4
457
499
  })))), /* @__PURE__ */ React6.createElement(CreateObjectPanel, {
458
500
  classNames: "p-4",
459
- schemas,
501
+ forms,
460
502
  spaces,
461
503
  target,
462
504
  typename,
@@ -519,6 +561,8 @@ var CreateSpaceDialog = () => {
519
561
  className: "p-4"
520
562
  }, /* @__PURE__ */ React7.createElement(Form3, {
521
563
  testId: "create-space-form",
564
+ classNames: "!p-0",
565
+ autoFocus: true,
522
566
  values: initialValues2,
523
567
  schema: SpaceForm,
524
568
  onSave: handleCreateSpace
@@ -562,7 +606,7 @@ import { ObservabilityAction } from "@dxos/plugin-observability/types";
562
606
  import { useClient as useClient3 } from "@dxos/react-client";
563
607
  import { Dialog as Dialog3 } from "@dxos/react-ui";
564
608
  import { JoinPanel } from "@dxos/shell/react";
565
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/JoinDialog.tsx";
609
+ var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/JoinDialog.tsx";
566
610
  var JOIN_DIALOG = `${SPACE_PLUGIN}/JoinDialog`;
567
611
  var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
568
612
  const { dispatchPromise: dispatch } = useIntentDispatcher4();
@@ -601,7 +645,7 @@ var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
601
645
  const space = result?.spaceKey ? client.spaces.get(result.spaceKey) : void 0;
602
646
  if (!space) {
603
647
  log.warn("Space not found", result?.spaceKey, {
604
- F: __dxlog_file,
648
+ F: __dxlog_file3,
605
649
  L: 56,
606
650
  S: void 0,
607
651
  C: (f, a) => f(...a)
@@ -741,14 +785,58 @@ var PersistenceStatus = ({ db }) => {
741
785
  }
742
786
  };
743
787
 
788
+ // packages/plugins/plugin-space/src/components/PopoverAddSpace.tsx
789
+ import React13 from "react";
790
+ import { createIntent as createIntent5, LayoutAction as LayoutAction5, useIntentDispatcher as useIntentDispatcher5 } from "@dxos/app-framework";
791
+ import { IconButton as IconButton3, useTranslation as useTranslation12 } from "@dxos/react-ui";
792
+ var POPOVER_ADD_SPACE = `${SPACE_PLUGIN}/PopoverRenameSpace`;
793
+ var PopoverAddSpace = () => {
794
+ const { t } = useTranslation12(SPACE_PLUGIN);
795
+ const { dispatchPromise: dispatch } = useIntentDispatcher5();
796
+ return /* @__PURE__ */ React13.createElement("div", {
797
+ role: "none",
798
+ className: "grid grid-cols-1 gap-1 [&>button]:justify-start"
799
+ }, /* @__PURE__ */ React13.createElement(IconButton3, {
800
+ variant: "ghost",
801
+ label: t("create space label"),
802
+ icon: "ph--plus--regular",
803
+ onClick: () => {
804
+ void dispatch(createIntent5(SpaceAction.OpenCreateSpace));
805
+ void dispatch(createIntent5(LayoutAction5.UpdatePopover, {
806
+ part: "popover",
807
+ options: {
808
+ anchorId: "",
809
+ state: false
810
+ }
811
+ }));
812
+ },
813
+ "data-testid": "spacePlugin.createSpace"
814
+ }), /* @__PURE__ */ React13.createElement(IconButton3, {
815
+ variant: "ghost",
816
+ label: t("join space label"),
817
+ icon: "ph--sign-in--regular",
818
+ onClick: () => {
819
+ void dispatch(createIntent5(SpaceAction.Join));
820
+ void dispatch(createIntent5(LayoutAction5.UpdatePopover, {
821
+ part: "popover",
822
+ options: {
823
+ anchorId: "",
824
+ state: false
825
+ }
826
+ }));
827
+ },
828
+ "data-testid": "spacePlugin.joinSpace"
829
+ }));
830
+ };
831
+
744
832
  // packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx
745
- import React13, { useCallback as useCallback8, useRef as useRef3, useState as useState5 } from "react";
833
+ import React14, { useCallback as useCallback8, useRef as useRef3, useState as useState5 } from "react";
746
834
  import { log as log2 } from "@dxos/log";
747
- import { Button as Button4, Input as Input2, Popover, useTranslation as useTranslation12 } from "@dxos/react-ui";
748
- var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx";
835
+ import { Button as Button4, Input as Input2, Popover, useTranslation as useTranslation13 } from "@dxos/react-ui";
836
+ var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx";
749
837
  var POPOVER_RENAME_OBJECT = `${SPACE_PLUGIN}/PopoverRenameObject`;
750
838
  var PopoverRenameObject = ({ object: obj }) => {
751
- const { t } = useTranslation12(SPACE_PLUGIN);
839
+ const { t } = useTranslation13(SPACE_PLUGIN);
752
840
  const doneButton = useRef3(null);
753
841
  const object = obj;
754
842
  const [name, setName] = useState5(object.name || object.title || "");
@@ -762,7 +850,7 @@ var PopoverRenameObject = ({ object: obj }) => {
762
850
  log2.error("Failed to rename object", {
763
851
  err
764
852
  }, {
765
- F: __dxlog_file2,
853
+ F: __dxlog_file4,
766
854
  L: 30,
767
855
  S: void 0,
768
856
  C: (f, a) => f(...a)
@@ -773,23 +861,23 @@ var PopoverRenameObject = ({ object: obj }) => {
773
861
  object,
774
862
  name
775
863
  ]);
776
- return /* @__PURE__ */ React13.createElement("div", {
864
+ return /* @__PURE__ */ React14.createElement("div", {
777
865
  role: "none",
778
866
  className: "p-1 flex gap-2"
779
- }, /* @__PURE__ */ React13.createElement("div", {
867
+ }, /* @__PURE__ */ React14.createElement("div", {
780
868
  role: "none",
781
869
  className: "flex-1"
782
- }, /* @__PURE__ */ React13.createElement(Input2.Root, null, /* @__PURE__ */ React13.createElement(Input2.Label, {
870
+ }, /* @__PURE__ */ React14.createElement(Input2.Root, null, /* @__PURE__ */ React14.createElement(Input2.Label, {
783
871
  srOnly: true
784
- }, t("object name label")), /* @__PURE__ */ React13.createElement(Input2.TextInput, {
872
+ }, t("object name label")), /* @__PURE__ */ React14.createElement(Input2.TextInput, {
785
873
  placeholder: t("object title placeholder"),
786
874
  value: name,
787
875
  "data-testid": "spacePlugin.renameObject.input",
788
876
  onChange: ({ target: { value } }) => setName(value),
789
877
  onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
790
- }))), /* @__PURE__ */ React13.createElement(Popover.Close, {
878
+ }))), /* @__PURE__ */ React14.createElement(Popover.Close, {
791
879
  asChild: true
792
- }, /* @__PURE__ */ React13.createElement(Button4, {
880
+ }, /* @__PURE__ */ React14.createElement(Button4, {
793
881
  ref: doneButton,
794
882
  classNames: "self-stretch",
795
883
  onClick: handleDone
@@ -799,11 +887,11 @@ var PopoverRenameObject = ({ object: obj }) => {
799
887
  };
800
888
 
801
889
  // packages/plugins/plugin-space/src/components/PopoverRenameSpace.tsx
802
- import React14, { useCallback as useCallback9, useRef as useRef4, useState as useState6 } from "react";
803
- import { Button as Button5, Input as Input3, Popover as Popover2, useTranslation as useTranslation13 } from "@dxos/react-ui";
890
+ import React15, { useCallback as useCallback9, useRef as useRef4, useState as useState6 } from "react";
891
+ import { Button as Button5, Input as Input3, Popover as Popover2, useTranslation as useTranslation14 } from "@dxos/react-ui";
804
892
  var POPOVER_RENAME_SPACE = `${SPACE_PLUGIN}/PopoverRenameSpace`;
805
893
  var PopoverRenameSpace = ({ space }) => {
806
- const { t } = useTranslation13(SPACE_PLUGIN);
894
+ const { t } = useTranslation14(SPACE_PLUGIN);
807
895
  const doneButton = useRef4(null);
808
896
  const [name, setName] = useState6(space.properties.name ?? "");
809
897
  const handleDone = useCallback9(() => {
@@ -812,24 +900,24 @@ var PopoverRenameSpace = ({ space }) => {
812
900
  space,
813
901
  name
814
902
  ]);
815
- return /* @__PURE__ */ React14.createElement("div", {
903
+ return /* @__PURE__ */ React15.createElement("div", {
816
904
  role: "none",
817
905
  className: "p-1 flex gap-2"
818
- }, /* @__PURE__ */ React14.createElement("div", {
906
+ }, /* @__PURE__ */ React15.createElement("div", {
819
907
  role: "none",
820
908
  className: "flex-1"
821
- }, /* @__PURE__ */ React14.createElement(Input3.Root, null, /* @__PURE__ */ React14.createElement(Input3.Label, {
909
+ }, /* @__PURE__ */ React15.createElement(Input3.Root, null, /* @__PURE__ */ React15.createElement(Input3.Label, {
822
910
  srOnly: true
823
- }, t("space name label")), /* @__PURE__ */ React14.createElement(Input3.TextInput, {
911
+ }, t("space name label")), /* @__PURE__ */ React15.createElement(Input3.TextInput, {
824
912
  defaultValue: space.properties.name ?? "",
825
913
  placeholder: t("unnamed space label"),
826
914
  onChange: ({ target: { value } }) => setName(value),
827
915
  // TODO(wittjosiah): Ideally this should access the popover context to close the popover.
828
916
  // Currently this is not possible because Radix does not expose the popover context.
829
917
  onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
830
- }))), /* @__PURE__ */ React14.createElement(Popover2.Close, {
918
+ }))), /* @__PURE__ */ React15.createElement(Popover2.Close, {
831
919
  asChild: true
832
- }, /* @__PURE__ */ React14.createElement(Button5, {
920
+ }, /* @__PURE__ */ React15.createElement(Button5, {
833
921
  ref: doneButton,
834
922
  classNames: "self-stretch",
835
923
  onClick: handleDone
@@ -839,20 +927,20 @@ var PopoverRenameSpace = ({ space }) => {
839
927
  };
840
928
 
841
929
  // packages/plugins/plugin-space/src/components/ShareSpaceButton.tsx
842
- import React15 from "react";
843
- import { createIntent as createIntent5, useIntentDispatcher as useIntentDispatcher5 } from "@dxos/app-framework";
844
- import { IconButton as IconButton3, useTranslation as useTranslation14 } from "@dxos/react-ui";
930
+ import React16 from "react";
931
+ import { createIntent as createIntent6, useIntentDispatcher as useIntentDispatcher6 } from "@dxos/app-framework";
932
+ import { IconButton as IconButton4, useTranslation as useTranslation15 } from "@dxos/react-ui";
845
933
  var ShareSpaceButton = ({ space }) => {
846
- const { dispatchPromise: dispatch } = useIntentDispatcher5();
847
- return /* @__PURE__ */ React15.createElement(ShareSpaceButtonImpl, {
848
- onClick: () => dispatch(createIntent5(SpaceAction.Share, {
934
+ const { dispatchPromise: dispatch } = useIntentDispatcher6();
935
+ return /* @__PURE__ */ React16.createElement(ShareSpaceButtonImpl, {
936
+ onClick: () => dispatch(createIntent6(SpaceAction.Share, {
849
937
  space
850
938
  }))
851
939
  });
852
940
  };
853
941
  var ShareSpaceButtonImpl = ({ onClick }) => {
854
- const { t } = useTranslation14(SPACE_PLUGIN);
855
- return /* @__PURE__ */ React15.createElement(IconButton3, {
942
+ const { t } = useTranslation15(SPACE_PLUGIN);
943
+ return /* @__PURE__ */ React16.createElement(IconButton4, {
856
944
  "data-testid": "spacePlugin.shareSpaceButton",
857
945
  icon: "ph--users--regular",
858
946
  label: t("share space label"),
@@ -861,28 +949,16 @@ var ShareSpaceButtonImpl = ({ onClick }) => {
861
949
  };
862
950
 
863
951
  // packages/plugins/plugin-space/src/components/SpacePresence.tsx
864
- import React16, { useCallback as useCallback10, useEffect as useEffect4, useState as useState8 } from "react";
952
+ import React17, { useCallback as useCallback10, useEffect as useEffect4, useState as useState8 } from "react";
865
953
  import { useAppGraph as useAppGraph2, useCapability } from "@dxos/app-framework";
866
954
  import { generateName } from "@dxos/display-name";
867
955
  import { PublicKey, useClient as useClient5 } from "@dxos/react-client";
868
956
  import { getSpace as getSpace3, useMembers, fullyQualifiedId as fullyQualifiedId2 } from "@dxos/react-client/echo";
869
957
  import { useIdentity } from "@dxos/react-client/halo";
870
- import { Avatar, AvatarGroup, AvatarGroupItem, Tooltip as Tooltip2, useTranslation as useTranslation15, List as List2, ListItem as ListItem2, useDefaultValue } from "@dxos/react-ui";
958
+ import { Avatar, AvatarGroup, AvatarGroupItem, Tooltip as Tooltip2, useTranslation as useTranslation16, List as List2, ListItem as ListItem2, useDefaultValue } from "@dxos/react-ui";
871
959
  import { AttentionGlyph, useAttended, useAttention } from "@dxos/react-ui-attention";
872
960
  import { ComplexMap, keyToFallback } from "@dxos/util";
873
961
 
874
- // packages/plugins/plugin-space/src/capabilities/index.ts
875
- import { lazy } from "@dxos/app-framework";
876
- var AppGraphBuilder = lazy(() => import("./app-graph-builder-TTM2YZVS.mjs"));
877
- var AppGraphSerializer = lazy(() => import("./app-graph-serializer-ZGM5NDXE.mjs"));
878
- var IdentityCreated = lazy(() => import("./identity-created-VICTPQX7.mjs"));
879
- var IntentResolver = lazy(() => import("./intent-resolver-SYYO26PR.mjs"));
880
- var ReactRoot = lazy(() => import("./react-root-YUF4IL5W.mjs"));
881
- var ReactSurface = lazy(() => import("./react-surface-YIPKS26R.mjs"));
882
- var SpaceSettings = lazy(() => import("./settings-HN5UIYQO.mjs"));
883
- var SpaceState = lazy(() => import("./state-6DCY5YJP.mjs"));
884
- var SpacesReady = lazy(() => import("./spaces-ready-F57ITJDR.mjs"));
885
-
886
962
  // packages/plugins/plugin-space/src/hooks/usePath.ts
887
963
  import { useEffect as useEffect3, useState as useState7 } from "react";
888
964
  var usePath = (graph, id, timeout) => {
@@ -953,7 +1029,7 @@ var SpacePresence = ({ object, spaceKey }) => {
953
1029
  lastSeen
954
1030
  };
955
1031
  }).toSorted((a, b) => a.lastSeen - b.lastSeen);
956
- return /* @__PURE__ */ React16.createElement(FullPresence, {
1032
+ return /* @__PURE__ */ React17.createElement(FullPresence, {
957
1033
  members: membersForObject
958
1034
  });
959
1035
  };
@@ -963,38 +1039,38 @@ var FullPresence = (props) => {
963
1039
  if (members.length === 0) {
964
1040
  return null;
965
1041
  }
966
- return /* @__PURE__ */ React16.createElement(AvatarGroup.Root, {
1042
+ return /* @__PURE__ */ React17.createElement(AvatarGroup.Root, {
967
1043
  size,
968
1044
  classNames: "mbs-2 mie-4",
969
1045
  "data-testid": "spacePlugin.presence"
970
- }, members.slice(0, 3).map((member, i) => /* @__PURE__ */ React16.createElement(Tooltip2.Root, {
1046
+ }, members.slice(0, 3).map((member, i) => /* @__PURE__ */ React17.createElement(Tooltip2.Root, {
971
1047
  key: member.identity.identityKey.toHex()
972
- }, /* @__PURE__ */ React16.createElement(Tooltip2.Trigger, null, /* @__PURE__ */ React16.createElement(PrensenceAvatar, {
1048
+ }, /* @__PURE__ */ React17.createElement(Tooltip2.Trigger, null, /* @__PURE__ */ React17.createElement(PrensenceAvatar, {
973
1049
  identity: member.identity,
974
1050
  group: true,
975
1051
  match: member.currentlyAttended,
976
1052
  index: members.length - i,
977
1053
  onClick: () => onMemberClick?.(member)
978
- })), /* @__PURE__ */ React16.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React16.createElement(Tooltip2.Content, {
1054
+ })), /* @__PURE__ */ React17.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React17.createElement(Tooltip2.Content, {
979
1055
  side: "bottom"
980
- }, /* @__PURE__ */ React16.createElement("span", null, getName(member.identity)), /* @__PURE__ */ React16.createElement(Tooltip2.Arrow, null))))), members.length > 3 && /* @__PURE__ */ React16.createElement(Tooltip2.Root, null, /* @__PURE__ */ React16.createElement(Tooltip2.Trigger, null, /* @__PURE__ */ React16.createElement(AvatarGroupItem.Root, {
1056
+ }, /* @__PURE__ */ React17.createElement("span", null, getName(member.identity)), /* @__PURE__ */ React17.createElement(Tooltip2.Arrow, null))))), members.length > 3 && /* @__PURE__ */ React17.createElement(Tooltip2.Root, null, /* @__PURE__ */ React17.createElement(Tooltip2.Trigger, null, /* @__PURE__ */ React17.createElement(AvatarGroupItem.Root, {
981
1057
  status: "inactive"
982
- }, /* @__PURE__ */ React16.createElement(Avatar.Frame, {
1058
+ }, /* @__PURE__ */ React17.createElement(Avatar.Frame, {
983
1059
  style: {
984
1060
  zIndex: members.length - 4
985
1061
  }
986
- }, /* @__PURE__ */ React16.createElement(Avatar.Fallback, {
1062
+ }, /* @__PURE__ */ React17.createElement(Avatar.Fallback, {
987
1063
  text: `+${members.length - 3}`
988
- })))), /* @__PURE__ */ React16.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React16.createElement(Tooltip2.Content, {
1064
+ })))), /* @__PURE__ */ React17.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React17.createElement(Tooltip2.Content, {
989
1065
  side: "bottom"
990
- }, /* @__PURE__ */ React16.createElement(Tooltip2.Arrow, null), /* @__PURE__ */ React16.createElement(List2, {
1066
+ }, /* @__PURE__ */ React17.createElement(Tooltip2.Arrow, null), /* @__PURE__ */ React17.createElement(List2, {
991
1067
  classNames: "max-h-56 overflow-y-auto"
992
- }, members.map((member) => /* @__PURE__ */ React16.createElement(ListItem2.Root, {
1068
+ }, members.map((member) => /* @__PURE__ */ React17.createElement(ListItem2.Root, {
993
1069
  key: member.identity.identityKey.toHex(),
994
1070
  classNames: "flex gap-2 items-center cursor-pointer mbe-2",
995
1071
  onClick: () => onMemberClick?.(member),
996
1072
  "data-testid": "identity-list-item"
997
- }, /* @__PURE__ */ React16.createElement(PrensenceAvatar, {
1073
+ }, /* @__PURE__ */ React17.createElement(PrensenceAvatar, {
998
1074
  identity: member.identity,
999
1075
  showName: true,
1000
1076
  match: member.currentlyAttended
@@ -1004,10 +1080,10 @@ var PrensenceAvatar = ({ identity, showName, match, group, index, onClick }) =>
1004
1080
  const Root = group ? AvatarGroupItem.Root : Avatar.Root;
1005
1081
  const status = match ? "current" : "active";
1006
1082
  const fallbackValue = keyToFallback(identity.identityKey);
1007
- return /* @__PURE__ */ React16.createElement(Root, {
1083
+ return /* @__PURE__ */ React17.createElement(Root, {
1008
1084
  status,
1009
1085
  hue: identity.profile?.data?.hue || fallbackValue.hue
1010
- }, /* @__PURE__ */ React16.createElement(Avatar.Frame, {
1086
+ }, /* @__PURE__ */ React17.createElement(Avatar.Frame, {
1011
1087
  "data-testid": "spacePlugin.presence.member",
1012
1088
  "data-status": status,
1013
1089
  ...index ? {
@@ -1016,9 +1092,9 @@ var PrensenceAvatar = ({ identity, showName, match, group, index, onClick }) =>
1016
1092
  }
1017
1093
  } : {},
1018
1094
  onClick: () => onClick?.()
1019
- }, /* @__PURE__ */ React16.createElement(Avatar.Fallback, {
1095
+ }, /* @__PURE__ */ React17.createElement(Avatar.Fallback, {
1020
1096
  text: identity.profile?.data?.emoji || fallbackValue.emoji
1021
- })), showName && /* @__PURE__ */ React16.createElement(Avatar.Label, {
1097
+ })), showName && /* @__PURE__ */ React17.createElement(Avatar.Label, {
1022
1098
  classNames: "text-sm truncate pli-2"
1023
1099
  }, getName(identity)));
1024
1100
  };
@@ -1046,52 +1122,53 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
1046
1122
  }, [
1047
1123
  viewers
1048
1124
  ]);
1049
- return /* @__PURE__ */ React16.createElement(SmallPresence, {
1125
+ return /* @__PURE__ */ React17.createElement(SmallPresence, {
1050
1126
  count: activeViewers.length,
1051
1127
  attended: isAttended,
1052
1128
  containsAttended
1053
1129
  });
1054
1130
  };
1055
1131
  var SmallPresence = ({ count = 0, attended, containsAttended }) => {
1056
- const { t } = useTranslation15(SPACE_PLUGIN);
1057
- return /* @__PURE__ */ React16.createElement(Tooltip2.Root, null, /* @__PURE__ */ React16.createElement(Tooltip2.Trigger, {
1132
+ const { t } = useTranslation16(SPACE_PLUGIN);
1133
+ return /* @__PURE__ */ React17.createElement(Tooltip2.Root, null, /* @__PURE__ */ React17.createElement(Tooltip2.Trigger, {
1058
1134
  asChild: true
1059
- }, /* @__PURE__ */ React16.createElement(AttentionGlyph, {
1135
+ }, /* @__PURE__ */ React17.createElement(AttentionGlyph, {
1060
1136
  attended,
1061
1137
  containsAttended,
1062
1138
  presence: count > 1 ? "many" : count === 1 ? "one" : "none",
1063
1139
  classNames: "self-center mie-1"
1064
- })), /* @__PURE__ */ React16.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React16.createElement(Tooltip2.Content, {
1140
+ })), /* @__PURE__ */ React17.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React17.createElement(Tooltip2.Content, {
1065
1141
  side: "bottom"
1066
- }, /* @__PURE__ */ React16.createElement("span", null, t("presence label", {
1142
+ }, /* @__PURE__ */ React17.createElement("span", null, t("presence label", {
1067
1143
  count
1068
- })), /* @__PURE__ */ React16.createElement(Tooltip2.Arrow, null))));
1144
+ })), /* @__PURE__ */ React17.createElement(Tooltip2.Arrow, null))));
1069
1145
  };
1070
1146
 
1071
1147
  // packages/plugins/plugin-space/src/components/SpacePluginSettings.tsx
1072
- import React17 from "react";
1073
- import { Input as Input4, useTranslation as useTranslation16 } from "@dxos/react-ui";
1148
+ import React18 from "react";
1149
+ import { Input as Input4, useTranslation as useTranslation17 } from "@dxos/react-ui";
1074
1150
  import { DeprecatedFormContainer, DeprecatedFormInput } from "@dxos/react-ui-form";
1075
1151
  var SpacePluginSettings = ({ settings }) => {
1076
- const { t } = useTranslation16(SPACE_PLUGIN);
1077
- return /* @__PURE__ */ React17.createElement(DeprecatedFormContainer, null, /* @__PURE__ */ React17.createElement(DeprecatedFormInput, {
1152
+ const { t } = useTranslation17(SPACE_PLUGIN);
1153
+ return /* @__PURE__ */ React18.createElement(DeprecatedFormContainer, null, /* @__PURE__ */ React18.createElement(DeprecatedFormInput, {
1078
1154
  label: t("show hidden spaces label")
1079
- }, /* @__PURE__ */ React17.createElement(Input4.Switch, {
1155
+ }, /* @__PURE__ */ React18.createElement(Input4.Switch, {
1080
1156
  checked: settings.showHidden,
1081
1157
  onCheckedChange: (checked) => settings.showHidden = !!checked
1082
1158
  })));
1083
1159
  };
1084
1160
 
1085
1161
  // packages/plugins/plugin-space/src/components/SpaceSettings/SpaceSettingsPanel.tsx
1086
- import React18, { useCallback as useCallback11, useState as useState9 } from "react";
1162
+ import React19, { useCallback as useCallback11, useState as useState9 } from "react";
1087
1163
  import { log as log3 } from "@dxos/log";
1088
1164
  import { EdgeReplicationSetting } from "@dxos/protocols/proto/dxos/echo/metadata";
1089
1165
  import { useClient as useClient6 } from "@dxos/react-client";
1090
- import { Input as Input5, useTranslation as useTranslation17 } from "@dxos/react-ui";
1166
+ import { Input as Input5, Toolbar, useTranslation as useTranslation18 } from "@dxos/react-ui";
1091
1167
  import { DeprecatedFormContainer as DeprecatedFormContainer2, DeprecatedFormInput as DeprecatedFormInput2 } from "@dxos/react-ui-form";
1092
- var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SpaceSettings/SpaceSettingsPanel.tsx";
1093
- var SpaceSettingsPanel = ({ classNames, space }) => {
1094
- const { t } = useTranslation17(SPACE_PLUGIN);
1168
+ import { HuePicker, IconPicker } from "@dxos/react-ui-pickers";
1169
+ var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SpaceSettings/SpaceSettingsPanel.tsx";
1170
+ var SpaceSettingsPanel = ({ space }) => {
1171
+ const { t } = useTranslation18(SPACE_PLUGIN);
1095
1172
  const client = useClient6();
1096
1173
  const edgeEnabled = Boolean(client.config.values.runtime?.client?.edgeFeatures?.echoReplicator);
1097
1174
  const [edgeReplication, setEdgeReplication] = useState9(space.internal.data.edgeReplication === EdgeReplicationSetting.ENABLED);
@@ -1099,8 +1176,8 @@ var SpaceSettingsPanel = ({ classNames, space }) => {
1099
1176
  setEdgeReplication(next);
1100
1177
  await space?.internal.setEdgeReplicationPreference(next ? EdgeReplicationSetting.ENABLED : EdgeReplicationSetting.DISABLED).catch((err) => {
1101
1178
  log3.catch(err, void 0, {
1102
- F: __dxlog_file3,
1103
- L: 35,
1179
+ F: __dxlog_file5,
1180
+ L: 36,
1104
1181
  S: void 0,
1105
1182
  C: (f, a) => f(...a)
1106
1183
  });
@@ -1109,32 +1186,48 @@ var SpaceSettingsPanel = ({ classNames, space }) => {
1109
1186
  }, [
1110
1187
  space
1111
1188
  ]);
1112
- return /* @__PURE__ */ React18.createElement(DeprecatedFormContainer2, null, /* @__PURE__ */ React18.createElement(DeprecatedFormInput2, {
1189
+ return /* @__PURE__ */ React19.createElement(DeprecatedFormContainer2, null, /* @__PURE__ */ React19.createElement(DeprecatedFormInput2, {
1113
1190
  label: t("name label")
1114
- }, /* @__PURE__ */ React18.createElement(Input5.TextInput, {
1191
+ }, /* @__PURE__ */ React19.createElement(Input5.TextInput, {
1115
1192
  placeholder: t("unnamed space label"),
1116
1193
  value: space.properties.name ?? "",
1117
1194
  onChange: (event) => {
1118
1195
  space.properties.name = event.target.value;
1119
1196
  }
1120
- })), edgeEnabled && /* @__PURE__ */ React18.createElement(DeprecatedFormInput2, {
1197
+ })), /* @__PURE__ */ React19.createElement(DeprecatedFormInput2, {
1198
+ label: t("icon label")
1199
+ }, /* @__PURE__ */ React19.createElement(Toolbar.Root, null, /* @__PURE__ */ React19.createElement(IconPicker, {
1200
+ value: space.properties.icon,
1201
+ onChange: (nextIcon) => space.properties.icon = nextIcon,
1202
+ onReset: () => {
1203
+ space.properties.icon = void 0;
1204
+ }
1205
+ }))), /* @__PURE__ */ React19.createElement(DeprecatedFormInput2, {
1206
+ label: t("hue label")
1207
+ }, /* @__PURE__ */ React19.createElement(Toolbar.Root, null, /* @__PURE__ */ React19.createElement(HuePicker, {
1208
+ value: space.properties.hue,
1209
+ onChange: (nextHue) => space.properties.hue = nextHue,
1210
+ onReset: () => {
1211
+ space.properties.hue = void 0;
1212
+ }
1213
+ }))), edgeEnabled && /* @__PURE__ */ React19.createElement(DeprecatedFormInput2, {
1121
1214
  label: t("edge replication label")
1122
- }, /* @__PURE__ */ React18.createElement(Input5.Switch, {
1215
+ }, /* @__PURE__ */ React19.createElement(Input5.Switch, {
1123
1216
  checked: edgeReplication,
1124
1217
  onCheckedChange: toggleEdgeReplication
1125
1218
  })));
1126
1219
  };
1127
1220
 
1128
1221
  // packages/plugins/plugin-space/src/components/SpaceSettings/SpaceSettingsDialog.tsx
1129
- import React19, { useMemo as useMemo2, useState as useState10 } from "react";
1130
- import { Surface as Surface2, useCapabilities } from "@dxos/app-framework";
1222
+ import React20, { useMemo, useState as useState10 } from "react";
1223
+ import { Surface as Surface2, useCapabilities as useCapabilities2 } from "@dxos/app-framework";
1131
1224
  import { useClient as useClient7 } from "@dxos/react-client";
1132
- import { Button as Button6, Clipboard, Dialog as Dialog4, Icon as Icon4, toLocalizedString as toLocalizedString3, useTranslation as useTranslation18 } from "@dxos/react-ui";
1225
+ import { Button as Button6, Clipboard, Dialog as Dialog4, Icon as Icon4, toLocalizedString as toLocalizedString3, useTranslation as useTranslation19 } from "@dxos/react-ui";
1133
1226
  import { Tabs } from "@dxos/react-ui-tabs";
1134
1227
  import { SpacePanel } from "@dxos/shell/react";
1135
1228
  var SPACE_SETTINGS_DIALOG = `${SPACE_PLUGIN}/SpaceSettingsDialog`;
1136
1229
  var SpaceSettingsDialog = ({ space, target, createInvitationUrl, initialTab = "members", namesCache }) => {
1137
- const { t } = useTranslation18(SPACE_PLUGIN);
1230
+ const { t } = useTranslation19(SPACE_PLUGIN);
1138
1231
  const client = useClient7();
1139
1232
  const [tabsActivePart, setTabsActivePart] = useState10("list");
1140
1233
  const [selected, setSelected] = useState10(initialTab);
@@ -1143,8 +1236,8 @@ var SpaceSettingsDialog = ({ space, target, createInvitationUrl, initialTab = "m
1143
1236
  personal: client.spaces.default === space,
1144
1237
  namesCache
1145
1238
  });
1146
- const panels = useCapabilities(SpaceCapabilities.SettingsPanel);
1147
- const data = useMemo2(() => ({
1239
+ const panels = useCapabilities2(SpaceCapabilities.SettingsPanel);
1240
+ const data = useMemo(() => ({
1148
1241
  subject: space
1149
1242
  }), [
1150
1243
  space
@@ -1152,76 +1245,76 @@ var SpaceSettingsDialog = ({ space, target, createInvitationUrl, initialTab = "m
1152
1245
  return (
1153
1246
  // TODO(wittjosiah): The tablist dialog pattern is copied from @dxos/plugin-manager.
1154
1247
  // Consider factoring it out to the tabs package.
1155
- /* @__PURE__ */ React19.createElement(Dialog4.Content, {
1248
+ /* @__PURE__ */ React20.createElement(Dialog4.Content, {
1156
1249
  classNames: "p-0 bs-content min-bs-[15rem] max-bs-full md:max-is-[40rem] overflow-hidden"
1157
- }, /* @__PURE__ */ React19.createElement("div", {
1250
+ }, /* @__PURE__ */ React20.createElement("div", {
1158
1251
  role: "none",
1159
1252
  className: "flex justify-between pbs-2 pis-2 pie-2 @md:pbs-4 @md:pis-4 @md:pie-4"
1160
- }, /* @__PURE__ */ React19.createElement(Dialog4.Title, {
1253
+ }, /* @__PURE__ */ React20.createElement(Dialog4.Title, {
1161
1254
  onClick: () => setTabsActivePart("list"),
1162
1255
  "aria-description": t("click to return to tablist description"),
1163
1256
  classNames: "flex cursor-pointer items-center group/title"
1164
- }, /* @__PURE__ */ React19.createElement(Icon4, {
1257
+ }, /* @__PURE__ */ React20.createElement(Icon4, {
1165
1258
  icon: "ph--caret-left--regular",
1166
1259
  size: 4,
1167
1260
  classNames: [
1168
1261
  "@md:hidden",
1169
1262
  tabsActivePart === "list" && "invisible"
1170
1263
  ]
1171
- }), /* @__PURE__ */ React19.createElement("span", {
1264
+ }), /* @__PURE__ */ React20.createElement("span", {
1172
1265
  className: tabsActivePart !== "list" ? "group-hover/title:underline @md:group-hover/title:no-underline underline-offset-4 decoration-1" : ""
1173
- }, toLocalizedString3(name, t))), /* @__PURE__ */ React19.createElement(Dialog4.Close, {
1266
+ }, toLocalizedString3(name, t))), /* @__PURE__ */ React20.createElement(Dialog4.Close, {
1174
1267
  asChild: true
1175
- }, /* @__PURE__ */ React19.createElement(Button6, {
1268
+ }, /* @__PURE__ */ React20.createElement(Button6, {
1176
1269
  density: "fine",
1177
1270
  variant: "ghost",
1178
1271
  autoFocus: true
1179
- }, /* @__PURE__ */ React19.createElement(Icon4, {
1272
+ }, /* @__PURE__ */ React20.createElement(Icon4, {
1180
1273
  icon: "ph--x--regular",
1181
1274
  size: 4
1182
- })))), /* @__PURE__ */ React19.createElement(Tabs.Root, {
1275
+ })))), /* @__PURE__ */ React20.createElement(Tabs.Root, {
1183
1276
  orientation: "vertical",
1184
1277
  value: selected,
1185
1278
  onValueChange: setSelected,
1186
1279
  activePart: tabsActivePart,
1187
1280
  onActivePartChange: setTabsActivePart,
1188
1281
  classNames: "flex flex-col flex-1 mbs-2"
1189
- }, /* @__PURE__ */ React19.createElement(Tabs.Viewport, {
1282
+ }, /* @__PURE__ */ React20.createElement(Tabs.Viewport, {
1190
1283
  classNames: "flex-1 min-bs-0"
1191
- }, /* @__PURE__ */ React19.createElement("div", {
1284
+ }, /* @__PURE__ */ React20.createElement("div", {
1192
1285
  role: "none",
1193
1286
  className: "overflow-y-auto pli-3 @md:pis-2 @md:pie-0 mbe-4 border-r border-separator"
1194
- }, /* @__PURE__ */ React19.createElement(Tabs.Tablist, {
1287
+ }, /* @__PURE__ */ React20.createElement(Tabs.Tablist, {
1195
1288
  classNames: "flex flex-col max-bs-none min-is-[200px] gap-4 overflow-y-auto"
1196
- }, /* @__PURE__ */ React19.createElement("div", {
1289
+ }, /* @__PURE__ */ React20.createElement("div", {
1197
1290
  role: "none",
1198
1291
  className: "flex flex-col ml-1"
1199
- }, /* @__PURE__ */ React19.createElement(Tabs.Tab, {
1292
+ }, /* @__PURE__ */ React20.createElement(Tabs.Tab, {
1200
1293
  value: "settings"
1201
- }, t("settings tab label")), /* @__PURE__ */ React19.createElement(Tabs.Tab, {
1294
+ }, t("settings tab label")), /* @__PURE__ */ React20.createElement(Tabs.Tab, {
1202
1295
  value: "members",
1203
1296
  disabled: locked
1204
- }, t("members tab label")), panels.map((panel) => /* @__PURE__ */ React19.createElement(Tabs.Tab, {
1297
+ }, t("members tab label")), panels.map((panel) => /* @__PURE__ */ React20.createElement(Tabs.Tab, {
1205
1298
  key: panel.id,
1206
1299
  value: panel.id
1207
- }, toLocalizedString3(panel.label, t)))))), /* @__PURE__ */ React19.createElement(Tabs.Tabpanel, {
1300
+ }, toLocalizedString3(panel.label, t)))))), /* @__PURE__ */ React20.createElement(Tabs.Tabpanel, {
1208
1301
  value: "settings",
1209
1302
  classNames: "pli-3 @md:pli-5 max-bs-dvh overflow-y-auto"
1210
- }, /* @__PURE__ */ React19.createElement(SpaceSettingsPanel, {
1303
+ }, /* @__PURE__ */ React20.createElement(SpaceSettingsPanel, {
1211
1304
  space
1212
- })), /* @__PURE__ */ React19.createElement(Tabs.Tabpanel, {
1305
+ })), /* @__PURE__ */ React20.createElement(Tabs.Tabpanel, {
1213
1306
  value: "members",
1214
1307
  classNames: "pli-3 @md:pli-5 max-bs-dvh overflow-y-auto"
1215
- }, /* @__PURE__ */ React19.createElement(Clipboard.Provider, null, /* @__PURE__ */ React19.createElement(SpacePanel, {
1308
+ }, /* @__PURE__ */ React20.createElement(Clipboard.Provider, null, /* @__PURE__ */ React20.createElement(SpacePanel, {
1216
1309
  space,
1217
1310
  hideHeading: true,
1218
1311
  target,
1219
1312
  createInvitationUrl
1220
- }))), panels.map((panel) => /* @__PURE__ */ React19.createElement(Tabs.Tabpanel, {
1313
+ }))), panels.map((panel) => /* @__PURE__ */ React20.createElement(Tabs.Tabpanel, {
1221
1314
  key: panel.id,
1222
1315
  value: panel.id,
1223
1316
  classNames: "pli-3 @md:pli-5 max-bs-dvh overflow-y-auto"
1224
- }, /* @__PURE__ */ React19.createElement(Surface2, {
1317
+ }, /* @__PURE__ */ React20.createElement(Surface2, {
1225
1318
  role: `space-settings--${panel.id}`,
1226
1319
  data
1227
1320
  }))))))
@@ -1229,12 +1322,12 @@ var SpaceSettingsDialog = ({ space, target, createInvitationUrl, initialTab = "m
1229
1322
  };
1230
1323
 
1231
1324
  // packages/plugins/plugin-space/src/components/SyncStatus/InlineSyncStatus.tsx
1232
- import React20, { useEffect as useEffect6, useState as useState12 } from "react";
1325
+ import React21, { useEffect as useEffect6, useState as useState12 } from "react";
1233
1326
  import { useAppGraph as useAppGraph3 } from "@dxos/app-framework";
1234
1327
  import { QueryEdgeStatusResponse } from "@dxos/protocols/proto/dxos/client/services";
1235
1328
  import { EdgeReplicationSetting as EdgeReplicationSetting2 } from "@dxos/protocols/proto/dxos/echo/metadata";
1236
1329
  import { useClient as useClient9 } from "@dxos/react-client";
1237
- import { Tooltip as Tooltip3, useTranslation as useTranslation19 } from "@dxos/react-ui";
1330
+ import { Tooltip as Tooltip3, useTranslation as useTranslation20 } from "@dxos/react-ui";
1238
1331
  import { AttentionGlyph as AttentionGlyph2, useAttended as useAttended2, useAttention as useAttention2 } from "@dxos/react-ui-attention";
1239
1332
 
1240
1333
  // packages/plugins/plugin-space/src/components/SyncStatus/sync-state.ts
@@ -1242,7 +1335,7 @@ import { useEffect as useEffect5, useState as useState11 } from "react";
1242
1335
  import { Context } from "@dxos/context";
1243
1336
  import { EdgeService } from "@dxos/protocols";
1244
1337
  import { useClient as useClient8 } from "@dxos/react-client";
1245
- var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SyncStatus/sync-state.ts";
1338
+ var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SyncStatus/sync-state.ts";
1246
1339
  var createEmptyEdgeSyncState = () => ({
1247
1340
  missingOnLocal: 0,
1248
1341
  missingOnRemote: 0,
@@ -1266,7 +1359,7 @@ var useSyncState = () => {
1266
1359
  const [spaceState, setSpaceState] = useState11({});
1267
1360
  useEffect5(() => {
1268
1361
  const ctx = new Context(void 0, {
1269
- F: __dxlog_file4,
1362
+ F: __dxlog_file6,
1270
1363
  L: 48
1271
1364
  });
1272
1365
  const createSubscriptions = (spaces) => {
@@ -1301,7 +1394,7 @@ var useSpaceSyncState = (space) => {
1301
1394
  const [spaceState, setSpaceState] = useState11();
1302
1395
  useEffect5(() => {
1303
1396
  const ctx = new Context(void 0, {
1304
- F: __dxlog_file4,
1397
+ F: __dxlog_file6,
1305
1398
  L: 87
1306
1399
  });
1307
1400
  space.crud.subscribeToSyncState(ctx, ({ peers = [] }) => {
@@ -1333,7 +1426,7 @@ var useEdgeStatus = () => {
1333
1426
  return status;
1334
1427
  };
1335
1428
  var InlineSyncStatus = ({ space, open }) => {
1336
- const { t } = useTranslation19(SPACE_PLUGIN);
1429
+ const { t } = useTranslation20(SPACE_PLUGIN);
1337
1430
  const id = space.id;
1338
1431
  const { hasAttention, isAncestor, isRelated } = useAttention2(id);
1339
1432
  const isAttended = hasAttention || isAncestor || isRelated;
@@ -1346,32 +1439,32 @@ var InlineSyncStatus = ({ space, open }) => {
1346
1439
  const edgeSyncEnabled = space.internal.data.edgeReplication === EdgeReplicationSetting2.ENABLED;
1347
1440
  const syncState = useSpaceSyncState(space);
1348
1441
  const syncing = connectedToEdge && edgeSyncEnabled && syncState && syncState.missingOnLocal > 0;
1349
- return /* @__PURE__ */ React20.createElement(Tooltip3.Root, null, /* @__PURE__ */ React20.createElement(Tooltip3.Trigger, {
1442
+ return /* @__PURE__ */ React21.createElement(Tooltip3.Root, null, /* @__PURE__ */ React21.createElement(Tooltip3.Trigger, {
1350
1443
  asChild: true
1351
- }, /* @__PURE__ */ React20.createElement(AttentionGlyph2, {
1444
+ }, /* @__PURE__ */ React21.createElement(AttentionGlyph2, {
1352
1445
  syncing,
1353
1446
  attended: isAttended,
1354
1447
  containsAttended,
1355
1448
  classNames: "self-center mie-1"
1356
- })), /* @__PURE__ */ React20.createElement(Tooltip3.Portal, null, /* @__PURE__ */ React20.createElement(Tooltip3.Content, {
1449
+ })), /* @__PURE__ */ React21.createElement(Tooltip3.Portal, null, /* @__PURE__ */ React21.createElement(Tooltip3.Content, {
1357
1450
  side: "bottom",
1358
1451
  classNames: "z-[70]"
1359
- }, /* @__PURE__ */ React20.createElement("span", null, t("syncing label")), /* @__PURE__ */ React20.createElement(Tooltip3.Arrow, null))));
1452
+ }, /* @__PURE__ */ React21.createElement("span", null, t("syncing label")), /* @__PURE__ */ React21.createElement(Tooltip3.Arrow, null))));
1360
1453
  };
1361
1454
 
1362
1455
  // packages/plugins/plugin-space/src/components/SyncStatus/SyncStatus.tsx
1363
- import React22, { useCallback as useCallback12, useEffect as useEffect8, useState as useState14 } from "react";
1456
+ import React23, { useCallback as useCallback12, useEffect as useEffect8, useState as useState14 } from "react";
1364
1457
  import { StatusBar } from "@dxos/plugin-status-bar";
1365
1458
  import { useClient as useClient11 } from "@dxos/react-client";
1366
- import { Icon as Icon6, Input as Input6, Popover as Popover3, useTranslation as useTranslation21 } from "@dxos/react-ui";
1459
+ import { Icon as Icon6, Input as Input6, Popover as Popover3, useTranslation as useTranslation22 } from "@dxos/react-ui";
1367
1460
  import { SyntaxHighlighter } from "@dxos/react-ui-syntax-highlighter";
1368
1461
  import { mx as mx6 } from "@dxos/react-ui-theme";
1369
1462
 
1370
1463
  // packages/plugins/plugin-space/src/components/SyncStatus/Space.tsx
1371
- import React21, { useEffect as useEffect7, useState as useState13 } from "react";
1464
+ import React22, { useEffect as useEffect7, useState as useState13 } from "react";
1372
1465
  import { useClient as useClient10 } from "@dxos/react-client";
1373
1466
  import { useSpace } from "@dxos/react-client/echo";
1374
- import { Icon as Icon5, toLocalizedString as toLocalizedString4, useTranslation as useTranslation20 } from "@dxos/react-ui";
1467
+ import { Icon as Icon5, toLocalizedString as toLocalizedString4, useTranslation as useTranslation21 } from "@dxos/react-ui";
1375
1468
  import { mx as mx5 } from "@dxos/react-ui-theme";
1376
1469
  var SYNC_STALLED_TIMEOUT = 5e3;
1377
1470
  var styles = {
@@ -1403,7 +1496,7 @@ var useActive = (count) => {
1403
1496
  return active;
1404
1497
  };
1405
1498
  var SpaceRowContainer = ({ spaceId, state }) => {
1406
- const { t } = useTranslation20(SPACE_PLUGIN);
1499
+ const { t } = useTranslation21(SPACE_PLUGIN);
1407
1500
  const client = useClient10();
1408
1501
  const space = useSpace(spaceId);
1409
1502
  if (!space) {
@@ -1412,7 +1505,7 @@ var SpaceRowContainer = ({ spaceId, state }) => {
1412
1505
  const spaceName = toLocalizedString4(getSpaceDisplayName(space, {
1413
1506
  personal: space === client.spaces.default
1414
1507
  }), t);
1415
- return /* @__PURE__ */ React21.createElement(SpaceRow, {
1508
+ return /* @__PURE__ */ React22.createElement(SpaceRow, {
1416
1509
  spaceId,
1417
1510
  spaceName,
1418
1511
  state
@@ -1421,19 +1514,19 @@ var SpaceRowContainer = ({ spaceId, state }) => {
1421
1514
  var SpaceRow = ({ spaceId, spaceName, state: { localDocumentCount, remoteDocumentCount, missingOnLocal, missingOnRemote } }) => {
1422
1515
  const downActive = useActive(localDocumentCount);
1423
1516
  const upActive = useActive(remoteDocumentCount);
1424
- return /* @__PURE__ */ React21.createElement("div", {
1517
+ return /* @__PURE__ */ React22.createElement("div", {
1425
1518
  className: "flex items-center mx-0.5 gap-0.5 cursor-pointer",
1426
1519
  title: spaceId,
1427
1520
  onClick: () => {
1428
1521
  void navigator.clipboard.writeText(spaceId);
1429
1522
  }
1430
- }, /* @__PURE__ */ React21.createElement("span", {
1523
+ }, /* @__PURE__ */ React22.createElement("span", {
1431
1524
  className: "is-1/2 truncate"
1432
- }, spaceName), /* @__PURE__ */ React21.createElement(Icon5, {
1525
+ }, spaceName), /* @__PURE__ */ React22.createElement(Icon5, {
1433
1526
  icon: "ph--arrow-fat-line-left--regular",
1434
1527
  size: 3,
1435
1528
  classNames: mx5(downActive && "animate-[pulse_1s_infinite]")
1436
- }), /* @__PURE__ */ React21.createElement(Candle, {
1529
+ }), /* @__PURE__ */ React22.createElement(Candle, {
1437
1530
  up: {
1438
1531
  count: remoteDocumentCount,
1439
1532
  total: remoteDocumentCount + missingOnRemote
@@ -1443,44 +1536,44 @@ var SpaceRow = ({ spaceId, spaceName, state: { localDocumentCount, remoteDocumen
1443
1536
  total: localDocumentCount + missingOnLocal
1444
1537
  },
1445
1538
  title: spaceId
1446
- }), /* @__PURE__ */ React21.createElement(Icon5, {
1539
+ }), /* @__PURE__ */ React22.createElement(Icon5, {
1447
1540
  icon: "ph--arrow-fat-line-right--regular",
1448
1541
  size: 3,
1449
1542
  classNames: mx5(upActive && "animate-[pulse_1s_step-start_infinite]")
1450
1543
  }));
1451
1544
  };
1452
1545
  var Candle = ({ classNames, up, down }) => {
1453
- return /* @__PURE__ */ React21.createElement("div", {
1546
+ return /* @__PURE__ */ React22.createElement("div", {
1454
1547
  className: mx5("grid grid-cols-[1fr_2rem_1fr] w-full h-3", classNames)
1455
- }, /* @__PURE__ */ React21.createElement(Bar, {
1548
+ }, /* @__PURE__ */ React22.createElement(Bar, {
1456
1549
  classNames: "justify-end",
1457
1550
  ...up
1458
- }), /* @__PURE__ */ React21.createElement("div", {
1551
+ }), /* @__PURE__ */ React22.createElement("div", {
1459
1552
  className: "relative"
1460
- }, /* @__PURE__ */ React21.createElement("div", {
1553
+ }, /* @__PURE__ */ React22.createElement("div", {
1461
1554
  className: mx5("absolute inset-0 flex items-center justify-center text-xs", styles.barBg)
1462
- }, up.total)), /* @__PURE__ */ React21.createElement(Bar, down));
1555
+ }, up.total)), /* @__PURE__ */ React22.createElement(Bar, down));
1463
1556
  };
1464
1557
  var Bar = ({ classNames, count, total }) => {
1465
1558
  let p = count / total * 100;
1466
1559
  if (count < total) {
1467
1560
  p = Math.min(p, 95);
1468
1561
  }
1469
- return /* @__PURE__ */ React21.createElement("div", {
1562
+ return /* @__PURE__ */ React22.createElement("div", {
1470
1563
  className: mx5("relative flex w-full", styles.barBg, classNames)
1471
- }, /* @__PURE__ */ React21.createElement("div", {
1564
+ }, /* @__PURE__ */ React22.createElement("div", {
1472
1565
  className: mx5("shrink-0", styles.barFg),
1473
1566
  style: {
1474
1567
  width: `${p}%`
1475
1568
  }
1476
- }), count !== total && /* @__PURE__ */ React21.createElement("div", {
1569
+ }), count !== total && /* @__PURE__ */ React22.createElement("div", {
1477
1570
  className: "absolute top-0 bottom-0 flex items-center mx-0.5 text-black text-xs"
1478
1571
  }, count));
1479
1572
  };
1480
1573
 
1481
1574
  // packages/plugins/plugin-space/src/components/SyncStatus/save-tracker.ts
1482
1575
  import { Context as Context2 } from "@dxos/context";
1483
- var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SyncStatus/save-tracker.ts";
1576
+ var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SyncStatus/save-tracker.ts";
1484
1577
  var createClientSaveTracker = (client, cb) => {
1485
1578
  const unsubscribeCallbacks = {};
1486
1579
  const state = {};
@@ -1508,7 +1601,7 @@ var createClientSaveTracker = (client, cb) => {
1508
1601
  };
1509
1602
  var createSpaceSaveTracker = (space, cb) => {
1510
1603
  const ctx = new Context2(void 0, {
1511
- F: __dxlog_file5,
1604
+ F: __dxlog_file7,
1512
1605
  L: 40
1513
1606
  });
1514
1607
  void space.waitUntilReady().then(() => {
@@ -1579,13 +1672,13 @@ var SyncStatus = () => {
1579
1672
  setSaved(state2 === "saved");
1580
1673
  });
1581
1674
  }, []);
1582
- return /* @__PURE__ */ React22.createElement(SyncStatusIndicator, {
1675
+ return /* @__PURE__ */ React23.createElement(SyncStatusIndicator, {
1583
1676
  state,
1584
1677
  saved
1585
1678
  });
1586
1679
  };
1587
1680
  var SyncStatusIndicator = ({ state, saved }) => {
1588
- const { t } = useTranslation21(SPACE_PLUGIN);
1681
+ const { t } = useTranslation22(SPACE_PLUGIN);
1589
1682
  const summary = getSyncSummary(state);
1590
1683
  const offline = Object.values(state).length === 0;
1591
1684
  const needsToUpload = summary.differentDocuments > 0 || summary.missingOnRemote > 0;
@@ -1612,58 +1705,58 @@ var SyncStatusIndicator = ({ state, saved }) => {
1612
1705
  needsToDownload
1613
1706
  ]);
1614
1707
  const title = t(`${status} label`);
1615
- const icon = /* @__PURE__ */ React22.createElement(Icon6, {
1708
+ const icon = /* @__PURE__ */ React23.createElement(Icon6, {
1616
1709
  icon: getIcon(status),
1617
1710
  size: 4,
1618
1711
  classNames
1619
1712
  });
1620
1713
  if (offline) {
1621
- return /* @__PURE__ */ React22.createElement(StatusBar.Item, {
1714
+ return /* @__PURE__ */ React23.createElement(StatusBar.Item, {
1622
1715
  title
1623
1716
  }, icon);
1624
1717
  } else {
1625
- return /* @__PURE__ */ React22.createElement(Popover3.Root, null, /* @__PURE__ */ React22.createElement(Popover3.Trigger, {
1718
+ return /* @__PURE__ */ React23.createElement(Popover3.Root, null, /* @__PURE__ */ React23.createElement(Popover3.Trigger, {
1626
1719
  asChild: true
1627
- }, /* @__PURE__ */ React22.createElement(StatusBar.Button, {
1720
+ }, /* @__PURE__ */ React23.createElement(StatusBar.Button, {
1628
1721
  title
1629
- }, icon)), /* @__PURE__ */ React22.createElement(Popover3.Portal, null, /* @__PURE__ */ React22.createElement(Popover3.Content, null, /* @__PURE__ */ React22.createElement(SyncStatusDetail, {
1722
+ }, icon)), /* @__PURE__ */ React23.createElement(Popover3.Portal, null, /* @__PURE__ */ React23.createElement(Popover3.Content, null, /* @__PURE__ */ React23.createElement(SyncStatusDetail, {
1630
1723
  state,
1631
1724
  summary,
1632
1725
  debug: false
1633
- }), /* @__PURE__ */ React22.createElement(Popover3.Arrow, null))));
1726
+ }), /* @__PURE__ */ React23.createElement(Popover3.Arrow, null))));
1634
1727
  }
1635
1728
  };
1636
1729
  var SyncStatusDetail = ({ classNames, state, summary, debug }) => {
1637
1730
  const [showAll, setShowAll] = useState14(false);
1638
- const { t } = useTranslation21(SPACE_PLUGIN);
1731
+ const { t } = useTranslation22(SPACE_PLUGIN);
1639
1732
  const entries = Object.entries(state).filter(([_, value]) => showAll || value.missingOnLocal + value.missingOnRemote > 0).toSorted(([a], [b]) => a < b ? -1 : a > b ? 1 : 0);
1640
1733
  const handleCheckedChange = useCallback12((state2) => setShowAll(state2), [
1641
1734
  setShowAll
1642
1735
  ]);
1643
- return /* @__PURE__ */ React22.createElement("div", {
1736
+ return /* @__PURE__ */ React23.createElement("div", {
1644
1737
  className: mx6("flex flex-col gap-3 p-2 text-xs min-w-96", classNames)
1645
- }, /* @__PURE__ */ React22.createElement("div", {
1738
+ }, /* @__PURE__ */ React23.createElement("div", {
1646
1739
  role: "none",
1647
1740
  className: "flex items-center"
1648
- }, /* @__PURE__ */ React22.createElement("h1", {
1741
+ }, /* @__PURE__ */ React23.createElement("h1", {
1649
1742
  className: "flex-1"
1650
- }, t("sync status title")), /* @__PURE__ */ React22.createElement("div", {
1743
+ }, t("sync status title")), /* @__PURE__ */ React23.createElement("div", {
1651
1744
  className: "flex items-center gap-2"
1652
- }, /* @__PURE__ */ React22.createElement(Input6.Root, null, /* @__PURE__ */ React22.createElement(Input6.Label, {
1745
+ }, /* @__PURE__ */ React23.createElement(Input6.Root, null, /* @__PURE__ */ React23.createElement(Input6.Label, {
1653
1746
  classNames: "text-xs"
1654
- }, t("show all label")), /* @__PURE__ */ React22.createElement(Input6.Checkbox, {
1747
+ }, t("show all label")), /* @__PURE__ */ React23.createElement(Input6.Checkbox, {
1655
1748
  checked: showAll,
1656
1749
  onCheckedChange: handleCheckedChange
1657
- })))), /* @__PURE__ */ React22.createElement("div", {
1750
+ })))), /* @__PURE__ */ React23.createElement("div", {
1658
1751
  className: "flex flex-col gap-2"
1659
- }, entries.length === 0 && /* @__PURE__ */ React22.createElement("div", {
1752
+ }, entries.length === 0 && /* @__PURE__ */ React23.createElement("div", {
1660
1753
  role: "none",
1661
1754
  className: "flex justify-center"
1662
- }, t("no sync status label")), entries.map(([spaceId, state2]) => /* @__PURE__ */ React22.createElement(SpaceRowContainer, {
1755
+ }, t("no sync status label")), entries.map(([spaceId, state2]) => /* @__PURE__ */ React23.createElement(SpaceRowContainer, {
1663
1756
  key: spaceId,
1664
1757
  spaceId,
1665
1758
  state: state2
1666
- }))), debug && /* @__PURE__ */ React22.createElement(SyntaxHighlighter, {
1759
+ }))), debug && /* @__PURE__ */ React23.createElement(SyntaxHighlighter, {
1667
1760
  language: "json"
1668
1761
  }, JSON.stringify(summary, null, 2)));
1669
1762
  };
@@ -1682,6 +1775,8 @@ export {
1682
1775
  JoinDialog,
1683
1776
  MenuFooter,
1684
1777
  PersistenceStatus,
1778
+ POPOVER_ADD_SPACE,
1779
+ PopoverAddSpace,
1685
1780
  POPOVER_RENAME_OBJECT,
1686
1781
  PopoverRenameObject,
1687
1782
  POPOVER_RENAME_SPACE,
@@ -1706,8 +1801,9 @@ export {
1706
1801
  IntentResolver,
1707
1802
  ReactRoot,
1708
1803
  ReactSurface,
1804
+ Schema,
1709
1805
  SpaceSettings,
1710
1806
  SpaceState,
1711
1807
  SpacesReady
1712
1808
  };
1713
- //# sourceMappingURL=chunk-YB3JWCPY.mjs.map
1809
+ //# sourceMappingURL=chunk-S6B7627U.mjs.map