@dxos/plugin-space 0.7.5-labs.c0e040f → 0.7.5-labs.d199c0f

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