@dxos/plugin-space 0.8.4-main.21d9917 → 0.8.4-main.2244d791bb

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 (231) hide show
  1. package/dist/lib/browser/CollectionArticle-LKTAABXP.mjs +128 -0
  2. package/dist/lib/browser/CollectionArticle-LKTAABXP.mjs.map +7 -0
  3. package/dist/lib/browser/{ObjectCardStack-TWHN6C2Y.mjs → ObjectCardStack-CXNBCSMR.mjs} +2 -2
  4. package/dist/lib/browser/ObjectCardStack-CXNBCSMR.mjs.map +7 -0
  5. package/dist/lib/browser/{ObjectDetails-GEDIISKK.mjs → ObjectDetails-HXV4IQEM.mjs} +6 -5
  6. package/dist/lib/browser/ObjectDetails-HXV4IQEM.mjs.map +7 -0
  7. package/dist/lib/browser/{RecordArticle-W57QE7QV.mjs → RecordArticle-36LDKFWF.mjs} +11 -10
  8. package/dist/lib/browser/RecordArticle-36LDKFWF.mjs.map +7 -0
  9. package/dist/lib/browser/{app-graph-builder-SJHTZXZF.mjs → app-graph-builder-GLV46QSI.mjs} +26 -19
  10. package/dist/lib/browser/app-graph-builder-GLV46QSI.mjs.map +7 -0
  11. package/dist/lib/browser/{app-graph-serializer-7AT7QMSK.mjs → app-graph-serializer-VOLRDNVE.mjs} +9 -8
  12. package/dist/lib/browser/app-graph-serializer-VOLRDNVE.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-ZT2VPYRM.mjs → chunk-7D63MVRS.mjs} +3 -3
  14. package/dist/lib/browser/chunk-7D63MVRS.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-4WZUGLQQ.mjs → chunk-A7ZCVQGZ.mjs} +10 -9
  16. package/dist/lib/browser/chunk-A7ZCVQGZ.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-CCRSHECL.mjs → chunk-KGLWYGIF.mjs} +4 -3
  18. package/dist/lib/browser/chunk-KGLWYGIF.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-AWVAX26X.mjs → chunk-NF3ZFAB4.mjs} +2 -2
  20. package/dist/lib/browser/{chunk-SUI34XSA.mjs → chunk-WAOJLA2S.mjs} +12 -12
  21. package/dist/lib/browser/chunk-WAOJLA2S.mjs.map +7 -0
  22. package/dist/lib/browser/{chunk-3X2EA2OA.mjs → chunk-XRTOZE23.mjs} +128 -137
  23. package/dist/lib/browser/chunk-XRTOZE23.mjs.map +7 -0
  24. package/dist/lib/browser/cli/index.mjs +31 -29
  25. package/dist/lib/browser/cli/index.mjs.map +3 -3
  26. package/dist/lib/browser/index.mjs +58 -53
  27. package/dist/lib/browser/index.mjs.map +3 -3
  28. package/dist/lib/browser/meta.json +1 -1
  29. package/dist/lib/browser/{operation-resolver-SIRQT36Z.mjs → operation-resolver-PJJ3PCM7.mjs} +45 -42
  30. package/dist/lib/browser/operation-resolver-PJJ3PCM7.mjs.map +7 -0
  31. package/dist/lib/browser/{react-root-PI7VTZUZ.mjs → react-root-MRIDHLHH.mjs} +8 -8
  32. package/dist/lib/browser/react-root-MRIDHLHH.mjs.map +7 -0
  33. package/dist/lib/browser/{react-surface-BPE7VWI7.mjs → react-surface-ARZZ343H.mjs} +38 -37
  34. package/dist/lib/browser/react-surface-ARZZ343H.mjs.map +7 -0
  35. package/dist/lib/browser/{repair-CJG26D52.mjs → repair-DKU4TUD2.mjs} +2 -2
  36. package/dist/lib/browser/{settings-ZS2AQ73E.mjs → settings-M2DMD2ZA.mjs} +5 -4
  37. package/dist/lib/browser/settings-M2DMD2ZA.mjs.map +7 -0
  38. package/dist/lib/browser/{spaces-ready-OQDGWUOS.mjs → spaces-ready-XWJUJ43N.mjs} +13 -12
  39. package/dist/lib/browser/spaces-ready-XWJUJ43N.mjs.map +7 -0
  40. package/dist/lib/browser/{state-7YZQB2KY.mjs → state-V637BLIM.mjs} +5 -5
  41. package/dist/lib/browser/state-V637BLIM.mjs.map +7 -0
  42. package/dist/lib/browser/types/index.mjs +1 -1
  43. package/dist/lib/node-esm/CollectionArticle-ONQMZ7BQ.mjs +129 -0
  44. package/dist/lib/node-esm/CollectionArticle-ONQMZ7BQ.mjs.map +7 -0
  45. package/dist/lib/node-esm/{ObjectCardStack-C5ZXRKP7.mjs → ObjectCardStack-EHXPNRQW.mjs} +2 -2
  46. package/dist/lib/node-esm/ObjectCardStack-EHXPNRQW.mjs.map +7 -0
  47. package/dist/lib/node-esm/{ObjectDetails-6ZLDRKCO.mjs → ObjectDetails-N73UI4ZL.mjs} +6 -5
  48. package/dist/lib/node-esm/ObjectDetails-N73UI4ZL.mjs.map +7 -0
  49. package/dist/lib/node-esm/{RecordArticle-SSV74Z46.mjs → RecordArticle-CMEXNNOZ.mjs} +11 -10
  50. package/dist/lib/node-esm/RecordArticle-CMEXNNOZ.mjs.map +7 -0
  51. package/dist/lib/node-esm/{app-graph-builder-HZ3XXDFZ.mjs → app-graph-builder-KCEHEKVS.mjs} +26 -19
  52. package/dist/lib/node-esm/app-graph-builder-KCEHEKVS.mjs.map +7 -0
  53. package/dist/lib/node-esm/{app-graph-serializer-WJ2TIQG6.mjs → app-graph-serializer-7C4MV5NB.mjs} +9 -8
  54. package/dist/lib/node-esm/app-graph-serializer-7C4MV5NB.mjs.map +7 -0
  55. package/dist/lib/node-esm/{chunk-2SW6S2BB.mjs → chunk-5N3YIAXD.mjs} +3 -3
  56. package/dist/lib/node-esm/chunk-5N3YIAXD.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-JOBIWCBC.mjs → chunk-A5A7M37T.mjs} +10 -9
  58. package/dist/lib/node-esm/chunk-A5A7M37T.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-7KMYUWSR.mjs → chunk-FB5YNROS.mjs} +12 -12
  60. package/dist/lib/node-esm/chunk-FB5YNROS.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-MPL6NHQX.mjs → chunk-NYSDQPNM.mjs} +4 -3
  62. package/dist/lib/node-esm/chunk-NYSDQPNM.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-HREWB23G.mjs → chunk-PG7DNOEX.mjs} +2 -2
  64. package/dist/lib/node-esm/{chunk-EYS3L2NO.mjs → chunk-QDIOQTXY.mjs} +128 -137
  65. package/dist/lib/node-esm/chunk-QDIOQTXY.mjs.map +7 -0
  66. package/dist/lib/node-esm/cli/index.mjs +31 -29
  67. package/dist/lib/node-esm/cli/index.mjs.map +3 -3
  68. package/dist/lib/node-esm/index.mjs +58 -53
  69. package/dist/lib/node-esm/index.mjs.map +3 -3
  70. package/dist/lib/node-esm/meta.json +1 -1
  71. package/dist/lib/node-esm/{operation-resolver-ZE3XJL5J.mjs → operation-resolver-2K7N4KYC.mjs} +45 -42
  72. package/dist/lib/node-esm/operation-resolver-2K7N4KYC.mjs.map +7 -0
  73. package/dist/lib/node-esm/{react-root-KUXM33JI.mjs → react-root-LKSSWFGF.mjs} +8 -8
  74. package/dist/lib/node-esm/react-root-LKSSWFGF.mjs.map +7 -0
  75. package/dist/lib/node-esm/{react-surface-STCQKUZ4.mjs → react-surface-QG5RNBPD.mjs} +38 -37
  76. package/dist/lib/node-esm/react-surface-QG5RNBPD.mjs.map +7 -0
  77. package/dist/lib/node-esm/{repair-G3ZW3VG3.mjs → repair-C2H6JQCL.mjs} +2 -2
  78. package/dist/lib/node-esm/{settings-PVI2VG56.mjs → settings-VCPCNBOY.mjs} +5 -4
  79. package/dist/lib/node-esm/settings-VCPCNBOY.mjs.map +7 -0
  80. package/dist/lib/node-esm/{spaces-ready-R744OHQG.mjs → spaces-ready-5JOGEWON.mjs} +13 -12
  81. package/dist/lib/node-esm/spaces-ready-5JOGEWON.mjs.map +7 -0
  82. package/dist/lib/node-esm/{state-XE5YGPHM.mjs → state-5MCEPWN3.mjs} +5 -5
  83. package/dist/lib/node-esm/state-5MCEPWN3.mjs.map +7 -0
  84. package/dist/lib/node-esm/types/index.mjs +1 -1
  85. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  86. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +2 -1
  87. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -1
  88. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +1 -1
  89. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -1
  90. package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts +2 -2
  91. package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts.map +1 -1
  92. package/dist/types/src/capabilities/app-graph-serializer/index.d.ts +1 -1
  93. package/dist/types/src/capabilities/app-graph-serializer/index.d.ts.map +1 -1
  94. package/dist/types/src/capabilities/operation-resolver/index.d.ts +1 -1
  95. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -1
  96. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +2 -2
  97. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
  98. package/dist/types/src/capabilities/react-root/react-root.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/react-surface/index.d.ts +1 -1
  100. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +2 -2
  102. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/settings/index.d.ts +1 -1
  104. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/settings/settings.d.ts +3 -2
  106. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/spaces-ready/spaces-ready.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/state/state.d.ts.map +1 -1
  109. package/dist/types/src/cli/commands/database/add.d.ts.map +1 -1
  110. package/dist/types/src/cli/plugin.d.ts.map +1 -1
  111. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  112. package/dist/types/src/components/CollectionArticle.d.ts +2 -2
  113. package/dist/types/src/components/CollectionArticle.d.ts.map +1 -1
  114. package/dist/types/src/components/CollectionSection.d.ts +1 -1
  115. package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
  116. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  117. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1 -1
  118. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +4 -1
  119. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  120. package/dist/types/src/components/JoinDialog/JoinDialog.d.ts.map +1 -1
  121. package/dist/types/src/components/MembersContainer/MembersContainer.d.ts.map +1 -1
  122. package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts +1 -1
  123. package/dist/types/src/components/ObjectDetails/ObjectDetails.d.ts +1 -1
  124. package/dist/types/src/components/ObjectDetails/ObjectDetails.d.ts.map +1 -1
  125. package/dist/types/src/components/RecordArticle.d.ts +1 -1
  126. package/dist/types/src/components/RecordArticle.d.ts.map +1 -1
  127. package/dist/types/src/components/RecordArticle.stories.d.ts +1 -1
  128. package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -1
  129. package/dist/types/src/components/SchemaContainer.d.ts.map +1 -1
  130. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  131. package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -1
  132. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts +4 -1
  133. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  134. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +4 -1
  135. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  136. package/dist/types/src/components/index.d.ts +3 -3
  137. package/dist/types/src/components/index.d.ts.map +1 -1
  138. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  139. package/dist/types/src/types/events.d.ts.map +1 -1
  140. package/dist/types/src/types/types.d.ts +18 -12
  141. package/dist/types/src/types/types.d.ts.map +1 -1
  142. package/dist/types/src/util.d.ts +2 -1
  143. package/dist/types/src/util.d.ts.map +1 -1
  144. package/dist/types/tsconfig.tsbuildinfo +1 -1
  145. package/package.json +66 -65
  146. package/src/SpacePlugin.ts +59 -40
  147. package/src/capabilities/app-graph-builder/app-graph-builder.ts +17 -13
  148. package/src/capabilities/app-graph-serializer/app-graph-serializer.ts +5 -4
  149. package/src/capabilities/operation-resolver/operation-resolver.ts +31 -29
  150. package/src/capabilities/react-root/react-root.tsx +3 -3
  151. package/src/capabilities/react-surface/react-surface.tsx +34 -32
  152. package/src/capabilities/settings/settings.ts +3 -2
  153. package/src/capabilities/spaces-ready/spaces-ready.ts +8 -7
  154. package/src/capabilities/state/state.ts +3 -3
  155. package/src/cli/commands/database/add.ts +7 -8
  156. package/src/cli/commands/database/query/query.ts +1 -1
  157. package/src/cli/commands/database/remove.ts +2 -2
  158. package/src/cli/commands/database/stats.ts +1 -1
  159. package/src/cli/plugin.ts +33 -26
  160. package/src/components/AwaitingObject.tsx +4 -3
  161. package/src/components/CollectionArticle.tsx +71 -72
  162. package/src/components/CollectionSection.tsx +1 -1
  163. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +1 -1
  164. package/src/components/CreateDialog/CreateObjectDialog.tsx +20 -17
  165. package/src/components/CreateDialog/CreateObjectPanel.tsx +38 -39
  166. package/src/components/CreateDialog/CreateSpaceDialog.tsx +21 -21
  167. package/src/components/JoinDialog/JoinDialog.tsx +8 -7
  168. package/src/components/MembersContainer/MembersContainer.stories.tsx +1 -1
  169. package/src/components/MembersContainer/MembersContainer.tsx +45 -48
  170. package/src/components/ObjectCardStack/ObjectCardStack.tsx +1 -1
  171. package/src/components/ObjectDetails/BaseObjectSettings.stories.tsx +4 -4
  172. package/src/components/ObjectDetails/ObjectDetails.tsx +6 -5
  173. package/src/components/ObjectRenamePopover/ObjectRenamePopover.tsx +3 -3
  174. package/src/components/RecordArticle.stories.tsx +6 -5
  175. package/src/components/RecordArticle.tsx +23 -21
  176. package/src/components/SchemaContainer.tsx +20 -17
  177. package/src/components/SpacePluginSettings.tsx +34 -31
  178. package/src/components/SpacePresence/SpacePresence.stories.tsx +1 -1
  179. package/src/components/SpacePresence/SpacePresence.tsx +2 -1
  180. package/src/components/SpaceRenamePopover/SpaceRenamePopover.tsx +3 -3
  181. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +1 -1
  182. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +161 -179
  183. package/src/components/SyncStatus/InlineSyncStatus.tsx +1 -1
  184. package/src/components/SyncStatus/SyncStatus.stories.tsx +1 -1
  185. package/src/components/ViewEditor.tsx +1 -1
  186. package/src/hooks/useActiveSpace.ts +5 -4
  187. package/src/hooks/useInputSurfaceLookup.tsx +3 -3
  188. package/src/translations.ts +2 -2
  189. package/src/types/events.ts +3 -2
  190. package/src/types/types.ts +10 -3
  191. package/src/util.tsx +9 -6
  192. package/dist/lib/browser/CollectionArticle-XPNA6EHZ.mjs +0 -129
  193. package/dist/lib/browser/CollectionArticle-XPNA6EHZ.mjs.map +0 -7
  194. package/dist/lib/browser/ObjectCardStack-TWHN6C2Y.mjs.map +0 -7
  195. package/dist/lib/browser/ObjectDetails-GEDIISKK.mjs.map +0 -7
  196. package/dist/lib/browser/RecordArticle-W57QE7QV.mjs.map +0 -7
  197. package/dist/lib/browser/app-graph-builder-SJHTZXZF.mjs.map +0 -7
  198. package/dist/lib/browser/app-graph-serializer-7AT7QMSK.mjs.map +0 -7
  199. package/dist/lib/browser/chunk-3X2EA2OA.mjs.map +0 -7
  200. package/dist/lib/browser/chunk-4WZUGLQQ.mjs.map +0 -7
  201. package/dist/lib/browser/chunk-CCRSHECL.mjs.map +0 -7
  202. package/dist/lib/browser/chunk-SUI34XSA.mjs.map +0 -7
  203. package/dist/lib/browser/chunk-ZT2VPYRM.mjs.map +0 -7
  204. package/dist/lib/browser/operation-resolver-SIRQT36Z.mjs.map +0 -7
  205. package/dist/lib/browser/react-root-PI7VTZUZ.mjs.map +0 -7
  206. package/dist/lib/browser/react-surface-BPE7VWI7.mjs.map +0 -7
  207. package/dist/lib/browser/settings-ZS2AQ73E.mjs.map +0 -7
  208. package/dist/lib/browser/spaces-ready-OQDGWUOS.mjs.map +0 -7
  209. package/dist/lib/browser/state-7YZQB2KY.mjs.map +0 -7
  210. package/dist/lib/node-esm/CollectionArticle-WGHNZNO2.mjs +0 -130
  211. package/dist/lib/node-esm/CollectionArticle-WGHNZNO2.mjs.map +0 -7
  212. package/dist/lib/node-esm/ObjectCardStack-C5ZXRKP7.mjs.map +0 -7
  213. package/dist/lib/node-esm/ObjectDetails-6ZLDRKCO.mjs.map +0 -7
  214. package/dist/lib/node-esm/RecordArticle-SSV74Z46.mjs.map +0 -7
  215. package/dist/lib/node-esm/app-graph-builder-HZ3XXDFZ.mjs.map +0 -7
  216. package/dist/lib/node-esm/app-graph-serializer-WJ2TIQG6.mjs.map +0 -7
  217. package/dist/lib/node-esm/chunk-2SW6S2BB.mjs.map +0 -7
  218. package/dist/lib/node-esm/chunk-7KMYUWSR.mjs.map +0 -7
  219. package/dist/lib/node-esm/chunk-EYS3L2NO.mjs.map +0 -7
  220. package/dist/lib/node-esm/chunk-JOBIWCBC.mjs.map +0 -7
  221. package/dist/lib/node-esm/chunk-MPL6NHQX.mjs.map +0 -7
  222. package/dist/lib/node-esm/operation-resolver-ZE3XJL5J.mjs.map +0 -7
  223. package/dist/lib/node-esm/react-root-KUXM33JI.mjs.map +0 -7
  224. package/dist/lib/node-esm/react-surface-STCQKUZ4.mjs.map +0 -7
  225. package/dist/lib/node-esm/settings-PVI2VG56.mjs.map +0 -7
  226. package/dist/lib/node-esm/spaces-ready-R744OHQG.mjs.map +0 -7
  227. package/dist/lib/node-esm/state-XE5YGPHM.mjs.map +0 -7
  228. /package/dist/lib/browser/{chunk-AWVAX26X.mjs.map → chunk-NF3ZFAB4.mjs.map} +0 -0
  229. /package/dist/lib/browser/{repair-CJG26D52.mjs.map → repair-DKU4TUD2.mjs.map} +0 -0
  230. /package/dist/lib/node-esm/{chunk-HREWB23G.mjs.map → chunk-PG7DNOEX.mjs.map} +0 -0
  231. /package/dist/lib/node-esm/{repair-G3ZW3VG3.mjs.map → repair-C2H6JQCL.mjs.map} +0 -0
@@ -27,17 +27,17 @@ import {
27
27
  SpaceSettingsContainer,
28
28
  SyncStatus,
29
29
  ViewEditor
30
- } from "./chunk-EYS3L2NO.mjs";
30
+ } from "./chunk-QDIOQTXY.mjs";
31
31
  import {
32
32
  useTypeOptions
33
- } from "./chunk-JOBIWCBC.mjs";
34
- import "./chunk-7KMYUWSR.mjs";
33
+ } from "./chunk-A5A7M37T.mjs";
34
+ import "./chunk-FB5YNROS.mjs";
35
35
  import {
36
36
  HueAnnotationId,
37
37
  IconAnnotationId,
38
38
  SpaceCapabilities,
39
39
  TypeInputOptionsAnnotationId
40
- } from "./chunk-MPL6NHQX.mjs";
40
+ } from "./chunk-NYSDQPNM.mjs";
41
41
  import {
42
42
  meta
43
43
  } from "./chunk-SL4BJSUG.mjs";
@@ -46,8 +46,10 @@ import {
46
46
  import * as Effect from "effect/Effect";
47
47
  import * as Option from "effect/Option";
48
48
  import React, { useCallback } from "react";
49
- import { Capability, Common } from "@dxos/app-framework";
50
- import { Surface, useAtomCapability, useLayout, useSettingsState } from "@dxos/app-framework/react";
49
+ import { Capabilities, Capability } from "@dxos/app-framework";
50
+ import { Surface, useAtomCapability, useSettingsState } from "@dxos/app-framework/ui";
51
+ import { AppCapabilities } from "@dxos/app-toolkit";
52
+ import { useLayout } from "@dxos/app-toolkit/ui";
51
53
  import { Database, Obj } from "@dxos/echo";
52
54
  import { findAnnotation } from "@dxos/effect";
53
55
  import { SpaceState, getSpace, isSpace, parseId, useSpace } from "@dxos/react-client/echo";
@@ -57,15 +59,15 @@ import { HuePicker, IconPicker } from "@dxos/react-ui-pickers";
57
59
  import { Collection, ViewAnnotation } from "@dxos/schema";
58
60
  var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (props) {
59
61
  const { createInvitationUrl } = props;
60
- return Capability.contributes(Common.Capability.ReactSurface, [
61
- Common.createSurface({
62
+ return Capability.contributes(Capabilities.ReactSurface, [
63
+ Surface.create({
62
64
  id: `${meta.id}/article`,
63
65
  role: "article",
64
66
  filter: (data) => (
65
67
  // TODO(wittjosiah): Need to avoid shotgun parsing space state everywhere.
66
68
  isSpace(data.subject) && data.subject.state.get() === SpaceState.SPACE_READY
67
69
  ),
68
- component: ({ data, role, ...rest }) => /* @__PURE__ */ React.createElement(Surface, {
70
+ component: ({ data, role, ...rest }) => /* @__PURE__ */ React.createElement(Surface.Surface, {
69
71
  data: {
70
72
  id: data.subject.id,
71
73
  subject: data.subject.properties[Collection.Collection.typename]?.target
@@ -74,7 +76,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
74
76
  ...rest
75
77
  })
76
78
  }),
77
- Common.createSurface({
79
+ Surface.create({
78
80
  id: `${meta.id}/collection-fallback`,
79
81
  role: "article",
80
82
  position: "fallback",
@@ -83,7 +85,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
83
85
  subject: data.subject
84
86
  })
85
87
  }),
86
- Common.createSurface({
88
+ Surface.create({
87
89
  id: `${meta.id}/record-article`,
88
90
  role: "article",
89
91
  position: "fallback",
@@ -92,10 +94,10 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
92
94
  subject: data.subject
93
95
  })
94
96
  }),
95
- Common.createSurface({
97
+ Surface.create({
96
98
  id: `${meta.id}/plugin-settings`,
97
99
  role: "article",
98
- filter: (data) => Common.Capability.isSettings(data.subject) && data.subject.prefix === meta.id,
100
+ filter: (data) => AppCapabilities.isSettings(data.subject) && data.subject.prefix === meta.id,
99
101
  component: ({ data: { subject } }) => {
100
102
  const { settings, updateSettings } = useSettingsState(subject.atom);
101
103
  return /* @__PURE__ */ React.createElement(SpacePluginSettings, {
@@ -104,7 +106,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
104
106
  });
105
107
  }
106
108
  }),
107
- Common.createSurface({
109
+ Surface.create({
108
110
  id: `${meta.id}/companion/object-settings`,
109
111
  role: "article",
110
112
  filter: (data) => Obj.isObject(data.companionTo) && data.subject === "settings",
@@ -114,7 +116,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
114
116
  ref
115
117
  })
116
118
  }),
117
- Common.createSurface({
119
+ Surface.create({
118
120
  id: `${meta.id}/space-settings-properties`,
119
121
  role: "article",
120
122
  filter: (data) => data.subject === `${meta.id}/properties`,
@@ -126,12 +128,11 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
126
128
  return null;
127
129
  }
128
130
  return /* @__PURE__ */ React.createElement(SpaceSettingsContainer, {
129
- space,
130
- ref
131
+ space
131
132
  });
132
133
  }
133
134
  }),
134
- Common.createSurface({
135
+ Surface.create({
135
136
  id: `${meta.id}/space-settings-members`,
136
137
  role: "article",
137
138
  position: "hoist",
@@ -149,7 +150,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
149
150
  });
150
151
  }
151
152
  }),
152
- Common.createSurface({
153
+ Surface.create({
153
154
  id: `${meta.id}/space-settings-schema`,
154
155
  role: "article",
155
156
  filter: (data) => data.subject === `${meta.id}/schema`,
@@ -165,7 +166,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
165
166
  });
166
167
  }
167
168
  }),
168
- Common.createSurface({
169
+ Surface.create({
169
170
  id: `${meta.id}/selected-objects`,
170
171
  role: "article",
171
172
  filter: (data) => {
@@ -182,25 +183,25 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
182
183
  ref
183
184
  })
184
185
  }),
185
- Common.createSurface({
186
+ Surface.create({
186
187
  id: JOIN_DIALOG,
187
188
  role: "dialog",
188
189
  filter: (data) => data.component === JOIN_DIALOG,
189
190
  component: ({ data }) => /* @__PURE__ */ React.createElement(JoinDialog, data.props)
190
191
  }),
191
- Common.createSurface({
192
+ Surface.create({
192
193
  id: CREATE_SPACE_DIALOG,
193
194
  role: "dialog",
194
195
  filter: (data) => data.component === CREATE_SPACE_DIALOG,
195
196
  component: () => /* @__PURE__ */ React.createElement(CreateSpaceDialog, null)
196
197
  }),
197
- Common.createSurface({
198
+ Surface.create({
198
199
  id: CREATE_OBJECT_DIALOG,
199
200
  role: "dialog",
200
201
  filter: (data) => data.component === CREATE_OBJECT_DIALOG,
201
202
  component: ({ data }) => /* @__PURE__ */ React.createElement(CreateObjectDialog, data.props)
202
203
  }),
203
- Common.createSurface({
204
+ Surface.create({
204
205
  id: `${meta.id}/create-initial-space-form-[hue]`,
205
206
  role: "form-input",
206
207
  filter: (data) => {
@@ -223,7 +224,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
223
224
  }));
224
225
  }
225
226
  }),
226
- Common.createSurface({
227
+ Surface.create({
227
228
  id: `${meta.id}/create-initial-space-form-[icon]`,
228
229
  role: "form-input",
229
230
  filter: (data) => {
@@ -246,7 +247,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
246
247
  }));
247
248
  }
248
249
  }),
249
- Common.createSurface({
250
+ Surface.create({
250
251
  id: `${meta.id}/typename-form-input`,
251
252
  role: "form-input",
252
253
  filter: (data) => {
@@ -271,7 +272,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
271
272
  });
272
273
  }
273
274
  }),
274
- Common.createSurface({
275
+ Surface.create({
275
276
  id: `${meta.id}/object-settings`,
276
277
  role: "object-settings",
277
278
  filter: (data) => {
@@ -291,7 +292,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
291
292
  });
292
293
  }
293
294
  }),
294
- Common.createSurface({
295
+ Surface.create({
295
296
  id: SPACE_RENAME_POPOVER,
296
297
  role: "popover",
297
298
  filter: (data) => data.component === SPACE_RENAME_POPOVER && isSpace(data.props),
@@ -299,7 +300,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
299
300
  space: data.props
300
301
  })
301
302
  }),
302
- Common.createSurface({
303
+ Surface.create({
303
304
  id: OBJECT_RENAME_POPOVER,
304
305
  role: "popover",
305
306
  filter: (data) => data.component === OBJECT_RENAME_POPOVER && Obj.isObject(data.props),
@@ -307,7 +308,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
307
308
  object: data.props
308
309
  })
309
310
  }),
310
- Common.createSurface({
311
+ Surface.create({
311
312
  id: `${meta.id}/menu-footer`,
312
313
  role: "menu-footer",
313
314
  filter: (data) => Obj.isObject(data.subject),
@@ -315,7 +316,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
315
316
  object: data.subject
316
317
  })
317
318
  }),
318
- Common.createSurface({
319
+ Surface.create({
319
320
  id: `${meta.id}/navtree-presence`,
320
321
  role: "navtree-item-end",
321
322
  filter: (data) => typeof data.id === "string" && Obj.isObject(data.subject),
@@ -329,7 +330,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
329
330
  }
330
331
  }),
331
332
  // TODO(wittjosiah): Attention glyph for non-echo items should be handled elsewhere.
332
- Common.createSurface({
333
+ Surface.create({
333
334
  id: `${meta.id}/navtree-presence-fallback`,
334
335
  role: "navtree-item-end",
335
336
  position: "fallback",
@@ -340,7 +341,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
340
341
  })
341
342
  }),
342
343
  // TODO(wittjosiah): Broken?
343
- Common.createSurface({
344
+ Surface.create({
344
345
  id: `${meta.id}/navtree-sync-status`,
345
346
  role: "navtree-item-end",
346
347
  filter: (data) => isSpace(data.subject),
@@ -349,7 +350,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
349
350
  open: data.open
350
351
  })
351
352
  }),
352
- Common.createSurface({
353
+ Surface.create({
353
354
  id: `${meta.id}/navbar-presence`,
354
355
  role: "navbar-end",
355
356
  position: "hoist",
@@ -362,7 +363,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
362
363
  }) : null;
363
364
  }
364
365
  }),
365
- Common.createSurface({
366
+ Surface.create({
366
367
  id: `${meta.id}/collection-section`,
367
368
  role: "section",
368
369
  filter: (data) => Obj.instanceOf(Collection.Collection, data.subject),
@@ -370,7 +371,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
370
371
  subject: data.subject
371
372
  })
372
373
  }),
373
- Common.createSurface({
374
+ Surface.create({
374
375
  id: `${meta.id}/status`,
375
376
  role: "status",
376
377
  component: () => /* @__PURE__ */ React.createElement(SyncStatus, null)
@@ -380,4 +381,4 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
380
381
  export {
381
382
  react_surface_default as default
382
383
  };
383
- //# sourceMappingURL=react-surface-STCQKUZ4.mjs.map
384
+ //# sourceMappingURL=react-surface-QG5RNBPD.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/react-surface/react-surface.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\nimport type * as Schema from 'effect/Schema';\nimport React, { useCallback } from 'react';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { Surface, useAtomCapability, useSettingsState } from '@dxos/app-framework/ui';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { useLayout } from '@dxos/app-toolkit/ui';\nimport { Database, Obj, type Ref } from '@dxos/echo';\nimport { findAnnotation } from '@dxos/effect';\nimport { type Space, SpaceState, getSpace, isSpace, parseId, useSpace } from '@dxos/react-client/echo';\nimport { Input } from '@dxos/react-ui';\nimport { type FormFieldComponentProps, SelectField } from '@dxos/react-ui-form';\nimport { HuePicker, IconPicker } from '@dxos/react-ui-pickers';\nimport { Collection, type View, ViewAnnotation } from '@dxos/schema';\nimport { type JoinPanelProps } from '@dxos/shell/react';\n\nimport {\n CollectionArticle,\n CollectionSection,\n CreateObjectDialog,\n type CreateObjectDialogProps,\n CreateSpaceDialog,\n InlineSyncStatus,\n JoinDialog,\n MembersContainer,\n MenuFooter,\n ObjectCardStack,\n ObjectDetails,\n ObjectRenamePopover,\n RecordArticle,\n SchemaContainer,\n SmallPresenceLive,\n SpacePluginSettings,\n SpacePresence,\n SpaceRenamePopover,\n SpaceSettingsContainer,\n SyncStatus,\n ViewEditor,\n} from '../../components';\nimport {\n CREATE_OBJECT_DIALOG,\n CREATE_SPACE_DIALOG,\n JOIN_DIALOG,\n OBJECT_RENAME_POPOVER,\n SPACE_RENAME_POPOVER,\n} from '../../constants';\nimport { useTypeOptions } from '../../hooks';\nimport { meta } from '../../meta';\nimport {\n HueAnnotationId,\n IconAnnotationId,\n SpaceCapabilities,\n type SpaceSettingsProps,\n type TypeInputOptions,\n TypeInputOptionsAnnotationId,\n} from '../../types';\n\ntype ReactSurfaceOptions = {\n createInvitationUrl: (invitationCode: string) => string;\n};\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* (props?: ReactSurfaceOptions) {\n const { createInvitationUrl } = props!;\n\n return Capability.contributes(Capabilities.ReactSurface, [\n Surface.create({\n id: `${meta.id}/article`,\n role: 'article',\n filter: (data): data is { subject: Space } =>\n // TODO(wittjosiah): Need to avoid shotgun parsing space state everywhere.\n isSpace(data.subject) && data.subject.state.get() === SpaceState.SPACE_READY,\n component: ({ data, role, ...rest }) => (\n <Surface.Surface\n data={{\n id: data.subject.id,\n subject: data.subject.properties[Collection.Collection.typename]?.target,\n }}\n role={role}\n {...rest}\n />\n ),\n }),\n Surface.create({\n id: `${meta.id}/collection-fallback`,\n role: 'article',\n position: 'fallback',\n filter: (data): data is { subject: Collection.Collection | Collection.Managed } =>\n Obj.instanceOf(Collection.Collection, data.subject) || Obj.instanceOf(Collection.Managed, data.subject),\n component: ({ data }) => <CollectionArticle subject={data.subject} />,\n }),\n Surface.create({\n id: `${meta.id}/record-article`,\n role: 'article',\n position: 'fallback',\n filter: (data): data is { subject: Obj.Unknown } => Obj.isObject(data.subject),\n component: ({ data }) => <RecordArticle subject={data.subject} />,\n }),\n Surface.create({\n id: `${meta.id}/plugin-settings`,\n role: 'article',\n filter: (data): data is { subject: AppCapabilities.Settings } =>\n AppCapabilities.isSettings(data.subject) && data.subject.prefix === meta.id,\n component: ({ data: { subject } }) => {\n const { settings, updateSettings } = useSettingsState<SpaceSettingsProps>(subject.atom);\n return <SpacePluginSettings settings={settings} onSettingsChange={updateSettings} />;\n },\n }),\n Surface.create({\n id: `${meta.id}/companion/object-settings`,\n role: 'article',\n filter: (data): data is { companionTo: Obj.Unknown } =>\n Obj.isObject(data.companionTo) && data.subject === 'settings',\n component: ({ ref, data, role }) => <ObjectDetails subject={data.companionTo} role={role} ref={ref} />,\n }),\n Surface.create({\n id: `${meta.id}/space-settings-properties`,\n role: 'article',\n filter: (data): data is { subject: string } => data.subject === `${meta.id}/properties`,\n component: ({ ref }) => {\n const layout = useLayout();\n const { spaceId } = parseId(layout.workspace);\n const space = useSpace(spaceId);\n if (!space || !spaceId) {\n return null;\n }\n\n return <SpaceSettingsContainer space={space} />;\n },\n }),\n Surface.create({\n id: `${meta.id}/space-settings-members`,\n role: 'article',\n position: 'hoist',\n filter: (data): data is { subject: string } => data.subject === `${meta.id}/members`,\n component: () => {\n const layout = useLayout();\n const { spaceId } = parseId(layout.workspace);\n const space = useSpace(spaceId);\n if (!space || !spaceId) {\n return null;\n }\n\n return <MembersContainer space={space} createInvitationUrl={createInvitationUrl} />;\n },\n }),\n Surface.create({\n id: `${meta.id}/space-settings-schema`,\n role: 'article',\n filter: (data): data is { subject: string } => data.subject === `${meta.id}/schema`,\n component: () => {\n const layout = useLayout();\n const { spaceId } = parseId(layout.workspace);\n const space = useSpace(spaceId);\n if (!space || !spaceId) {\n return null;\n }\n\n return <SchemaContainer space={space} />;\n },\n }),\n Surface.create({\n id: `${meta.id}/selected-objects`,\n role: 'article',\n filter: (data): data is { companionTo: Obj.Obj<{ view: Ref.Ref<View.View> }>; subject: 'selected-objects' } => {\n if (data.subject !== 'selected-objects' || !Obj.isObject(data.companionTo)) {\n return false;\n }\n\n // TODO(burdon): Check companionTo.view.target is valid.\n const schema = Obj.getSchema(data.companionTo);\n return Option.fromNullable(schema).pipe(\n Option.flatMap((schema) => ViewAnnotation.get(schema)),\n Option.getOrElse(() => false),\n );\n },\n component: ({ data, ref }) => (\n <ObjectCardStack\n key={Obj.getDXN(data.companionTo).toString()}\n objectId={Obj.getDXN(data.companionTo).toString()}\n view={data.companionTo.view.target!}\n ref={ref}\n />\n ),\n }),\n Surface.create({\n id: JOIN_DIALOG,\n role: 'dialog',\n filter: (data): data is { props: JoinPanelProps } => data.component === JOIN_DIALOG,\n component: ({ data }) => <JoinDialog {...data.props} />,\n }),\n Surface.create({\n id: CREATE_SPACE_DIALOG,\n role: 'dialog',\n filter: (data): data is any => data.component === CREATE_SPACE_DIALOG,\n component: () => <CreateSpaceDialog />,\n }),\n Surface.create({\n id: CREATE_OBJECT_DIALOG,\n role: 'dialog',\n filter: (data): data is { props: CreateObjectDialogProps } => data.component === CREATE_OBJECT_DIALOG,\n component: ({ data }) => <CreateObjectDialog {...data.props} />,\n }),\n Surface.create({\n id: `${meta.id}/create-initial-space-form-[hue]`,\n role: 'form-input',\n filter: (data): data is { prop: string; schema: Schema.Schema<any> } => {\n const annotation = findAnnotation<boolean>((data.schema as Schema.Schema.All).ast, HueAnnotationId);\n return !!annotation;\n },\n component: ({ data: _, ...inputProps }) => {\n const { label, readonly, type, getValue, onValueChange } = inputProps as any as FormFieldComponentProps;\n const handleChange = useCallback((nextHue: string) => onValueChange(type, nextHue), [onValueChange]);\n const handleReset = useCallback(() => onValueChange(type, undefined), [onValueChange]);\n return (\n <Input.Root>\n <Input.Label>{label}</Input.Label>\n <HuePicker disabled={!!readonly} value={getValue() ?? ''} onChange={handleChange} onReset={handleReset} />\n </Input.Root>\n );\n },\n }),\n Surface.create({\n id: `${meta.id}/create-initial-space-form-[icon]`,\n role: 'form-input',\n filter: (data): data is { prop: string; schema: Schema.Schema<any> } => {\n const annotation = findAnnotation<boolean>((data.schema as Schema.Schema.All).ast, IconAnnotationId);\n return !!annotation;\n },\n component: ({ data: _, ...inputProps }) => {\n const { label, readonly, type, getValue, onValueChange } = inputProps as any as FormFieldComponentProps;\n const handleChange = useCallback((nextIcon: string) => onValueChange(type, nextIcon), [onValueChange]);\n const handleReset = useCallback(() => onValueChange(type, undefined), [onValueChange]);\n return (\n <Input.Root>\n <Input.Label>{label}</Input.Label>\n <IconPicker\n disabled={!!readonly}\n value={getValue() ?? ''}\n onChange={handleChange}\n onReset={handleReset}\n />\n </Input.Root>\n );\n },\n }),\n Surface.create({\n id: `${meta.id}/typename-form-input`,\n role: 'form-input',\n filter: (\n data,\n ): data is {\n prop: string;\n schema: Schema.Schema.Any;\n target: Database.Database | Collection.Collection | undefined;\n } => {\n if (data.prop !== 'typename') {\n return false;\n }\n\n const annotation = findAnnotation((data.schema as Schema.Schema.All).ast, TypeInputOptionsAnnotationId);\n return !!annotation;\n },\n component: ({ data: { schema, target }, ...inputProps }) => {\n const props = inputProps as any as FormFieldComponentProps;\n const db = Database.isDatabase(target) ? target : target && Obj.getDatabase(target);\n const space = useSpace(db?.spaceId);\n const annotation = findAnnotation<TypeInputOptions>(schema.ast, TypeInputOptionsAnnotationId)!;\n const options = useTypeOptions({ space, annotation });\n\n return <SelectField {...props} options={options} />;\n },\n }),\n Surface.create({\n id: `${meta.id}/object-settings`,\n role: 'object-settings',\n filter: (data): data is { subject: { view: Ref.Ref<View.View> } } => {\n if (!Obj.isObject(data.subject)) {\n return false;\n }\n\n const schema = Obj.getSchema(data.subject);\n return Option.fromNullable(schema).pipe(\n Option.flatMap((schema) => ViewAnnotation.get(schema)),\n Option.getOrElse(() => false),\n );\n },\n component: ({ data }) => {\n const view = data.subject.view.target;\n if (!view) {\n return null;\n }\n\n return <ViewEditor view={view} />;\n },\n }),\n Surface.create({\n id: SPACE_RENAME_POPOVER,\n role: 'popover',\n filter: (data): data is { props: Space } => data.component === SPACE_RENAME_POPOVER && isSpace(data.props),\n component: ({ data }) => <SpaceRenamePopover space={data.props} />,\n }),\n Surface.create({\n id: OBJECT_RENAME_POPOVER,\n role: 'popover',\n filter: (data): data is { props: Obj.Unknown } =>\n data.component === OBJECT_RENAME_POPOVER && Obj.isObject(data.props),\n component: ({ data }) => <ObjectRenamePopover object={data.props} />,\n }),\n Surface.create({\n id: `${meta.id}/menu-footer`,\n role: 'menu-footer',\n filter: (data): data is { subject: Obj.Unknown } => Obj.isObject(data.subject),\n component: ({ data }) => <MenuFooter object={data.subject} />,\n }),\n Surface.create({\n id: `${meta.id}/navtree-presence`,\n role: 'navtree-item-end',\n filter: (data): data is { id: string; subject: Obj.Unknown; open?: boolean } =>\n typeof data.id === 'string' && Obj.isObject(data.subject),\n component: ({ data }) => {\n const ephemeral = useAtomCapability(SpaceCapabilities.EphemeralState);\n return <SmallPresenceLive id={data.id} open={data.open} viewers={ephemeral.viewersByObject[data.id]} />;\n },\n }),\n // TODO(wittjosiah): Attention glyph for non-echo items should be handled elsewhere.\n Surface.create({\n id: `${meta.id}/navtree-presence-fallback`,\n role: 'navtree-item-end',\n position: 'fallback',\n filter: (data): data is { id: string; open?: boolean } => typeof data.id === 'string',\n component: ({ data }) => <SmallPresenceLive id={data.id} open={data.open} />,\n }),\n // TODO(wittjosiah): Broken?\n Surface.create({\n id: `${meta.id}/navtree-sync-status`,\n role: 'navtree-item-end',\n filter: (data): data is { subject: Space; open?: boolean } => isSpace(data.subject),\n component: ({ data }) => <InlineSyncStatus space={data.subject} open={data.open} />,\n }),\n Surface.create({\n id: `${meta.id}/navbar-presence`,\n role: 'navbar-end',\n position: 'hoist',\n filter: (data): data is { subject: Space | Obj.Unknown } => isSpace(data.subject) || Obj.isObject(data.subject),\n component: ({ data }) => {\n const space = isSpace(data.subject) ? data.subject : getSpace(data.subject);\n const object = isSpace(data.subject)\n ? data.subject.state.get() === SpaceState.SPACE_READY\n ? (space?.properties[Collection.Collection.typename]?.target as Collection.Collection)\n : undefined\n : data.subject;\n\n return object ? <SpacePresence object={object} /> : null;\n },\n }),\n Surface.create({\n id: `${meta.id}/collection-section`,\n role: 'section',\n filter: (data): data is { subject: Collection.Collection } =>\n Obj.instanceOf(Collection.Collection, data.subject),\n component: ({ data }) => <CollectionSection subject={data.subject} />,\n }),\n Surface.create({\n id: `${meta.id}/status`,\n role: 'status',\n component: () => <SyncStatus />,\n }),\n ]);\n }),\n);\n"],
5
+ "mappings": "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",
6
+ "names": ["Effect", "Option", "React", "useCallback", "Capabilities", "Capability", "Surface", "useAtomCapability", "useSettingsState", "AppCapabilities", "useLayout", "Database", "Obj", "findAnnotation", "SpaceState", "getSpace", "isSpace", "parseId", "useSpace", "Input", "SelectField", "HuePicker", "IconPicker", "Collection", "ViewAnnotation", "Capability", "makeModule", "fnUntraced", "props", "createInvitationUrl", "contributes", "Capabilities", "ReactSurface", "Surface", "create", "id", "meta", "role", "filter", "data", "isSpace", "subject", "state", "get", "SpaceState", "SPACE_READY", "component", "rest", "properties", "Collection", "typename", "target", "position", "Obj", "instanceOf", "Managed", "CollectionArticle", "isObject", "RecordArticle", "AppCapabilities", "isSettings", "prefix", "settings", "updateSettings", "useSettingsState", "atom", "SpacePluginSettings", "onSettingsChange", "companionTo", "ref", "ObjectDetails", "layout", "useLayout", "spaceId", "parseId", "workspace", "space", "useSpace", "SpaceSettingsContainer", "MembersContainer", "SchemaContainer", "schema", "getSchema", "fromNullable", "pipe", "flatMap", "ViewAnnotation", "getOrElse", "ObjectCardStack", "key", "getDXN", "toString", "objectId", "view", "JOIN_DIALOG", "JoinDialog", "CREATE_SPACE_DIALOG", "CreateSpaceDialog", "CREATE_OBJECT_DIALOG", "CreateObjectDialog", "annotation", "findAnnotation", "ast", "HueAnnotationId", "_", "inputProps", "label", "readonly", "type", "getValue", "onValueChange", "handleChange", "useCallback", "nextHue", "handleReset", "undefined", "Input", "Root", "Label", "HuePicker", "disabled", "value", "onChange", "onReset", "IconAnnotationId", "nextIcon", "IconPicker", "prop", "TypeInputOptionsAnnotationId", "db", "Database", "isDatabase", "getDatabase", "options", "useTypeOptions", "SelectField", "ViewEditor", "SPACE_RENAME_POPOVER", "SpaceRenamePopover", "OBJECT_RENAME_POPOVER", "ObjectRenamePopover", "object", "MenuFooter", "ephemeral", "useAtomCapability", "SpaceCapabilities", "EphemeralState", "SmallPresenceLive", "open", "viewers", "viewersByObject", "InlineSyncStatus", "getSpace", "SpacePresence", "CollectionSection", "SyncStatus"]
7
+ }
@@ -1,7 +1,7 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  SpaceCapabilities
4
- } from "./chunk-MPL6NHQX.mjs";
4
+ } from "./chunk-NYSDQPNM.mjs";
5
5
  import "./chunk-SL4BJSUG.mjs";
6
6
 
7
7
  // src/capabilities/repair/repair.ts
@@ -48,4 +48,4 @@ var ensureSystemCollection = async (space) => {
48
48
  export {
49
49
  repair_default as default
50
50
  };
51
- //# sourceMappingURL=repair-G3ZW3VG3.mjs.map
51
+ //# sourceMappingURL=repair-C2H6JQCL.mjs.map
@@ -2,14 +2,15 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  SpaceCapabilities,
4
4
  SpaceSettingsSchema
5
- } from "./chunk-MPL6NHQX.mjs";
5
+ } from "./chunk-NYSDQPNM.mjs";
6
6
  import {
7
7
  meta
8
8
  } from "./chunk-SL4BJSUG.mjs";
9
9
 
10
10
  // src/capabilities/settings/settings.ts
11
11
  import * as Effect from "effect/Effect";
12
- import { Capability, Common } from "@dxos/app-framework";
12
+ import { Capability } from "@dxos/app-framework";
13
+ import { AppCapabilities } from "@dxos/app-toolkit";
13
14
  import { createKvsStore } from "@dxos/effect";
14
15
  var settings_default = Capability.makeModule(() => Effect.sync(() => {
15
16
  const settingsAtom = createKvsStore({
@@ -21,7 +22,7 @@ var settings_default = Capability.makeModule(() => Effect.sync(() => {
21
22
  });
22
23
  return [
23
24
  Capability.contributes(SpaceCapabilities.Settings, settingsAtom),
24
- Capability.contributes(Common.Capability.Settings, {
25
+ Capability.contributes(AppCapabilities.Settings, {
25
26
  prefix: meta.id,
26
27
  schema: SpaceSettingsSchema,
27
28
  atom: settingsAtom
@@ -31,4 +32,4 @@ var settings_default = Capability.makeModule(() => Effect.sync(() => {
31
32
  export {
32
33
  settings_default as default
33
34
  };
34
- //# sourceMappingURL=settings-PVI2VG56.mjs.map
35
+ //# sourceMappingURL=settings-VCPCNBOY.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/settings/settings.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { createKvsStore } from '@dxos/effect';\n\nimport { meta } from '../../meta';\nimport { SpaceCapabilities, SpaceSettingsSchema } from '../../types';\n\nexport default Capability.makeModule(() =>\n Effect.sync(() => {\n const settingsAtom = createKvsStore({\n key: meta.id,\n schema: SpaceSettingsSchema,\n defaultValue: () => ({\n showHidden: false,\n }),\n });\n\n return [\n Capability.contributes(SpaceCapabilities.Settings, settingsAtom),\n Capability.contributes(AppCapabilities.Settings, {\n prefix: meta.id,\n schema: SpaceSettingsSchema,\n atom: settingsAtom,\n }),\n ];\n }),\n);\n"],
5
+ "mappings": ";;;;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,uBAAuB;AAChC,SAASC,sBAAsB;AAK/B,IAAA,mBAAeC,WAAWC,WAAW,MAC5BC,YAAK,MAAA;AACV,QAAMC,eAAeC,eAAe;IAClCC,KAAKC,KAAKC;IACVC,QAAQC;IACRC,cAAc,OAAO;MACnBC,YAAY;IACd;EACF,CAAA;AAEA,SAAO;IACLX,WAAWY,YAAYC,kBAAkBC,UAAUX,YAAAA;IACnDH,WAAWY,YAAYG,gBAAgBD,UAAU;MAC/CE,QAAQV,KAAKC;MACbC,QAAQC;MACRQ,MAAMd;IACR,CAAA;;AAEJ,CAAA,CAAA;",
6
+ "names": ["Effect", "Capability", "AppCapabilities", "createKvsStore", "Capability", "makeModule", "sync", "settingsAtom", "createKvsStore", "key", "meta", "id", "schema", "SpaceSettingsSchema", "defaultValue", "showHidden", "contributes", "SpaceCapabilities", "Settings", "AppCapabilities", "prefix", "atom"]
7
+ }
@@ -2,17 +2,18 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  COMPOSER_SPACE_LOCK,
4
4
  SHARED
5
- } from "./chunk-7KMYUWSR.mjs";
5
+ } from "./chunk-FB5YNROS.mjs";
6
6
  import {
7
7
  SpaceCapabilities,
8
8
  SpaceOperation
9
- } from "./chunk-MPL6NHQX.mjs";
9
+ } from "./chunk-NYSDQPNM.mjs";
10
10
  import "./chunk-SL4BJSUG.mjs";
11
11
 
12
12
  // src/capabilities/spaces-ready/spaces-ready.ts
13
13
  import * as Effect from "effect/Effect";
14
14
  import * as Option from "effect/Option";
15
- import { Capability, Common } from "@dxos/app-framework";
15
+ import { Capabilities, Capability } from "@dxos/app-framework";
16
+ import { AppCapabilities, LayoutOperation } from "@dxos/app-toolkit";
16
17
  import { SubscriptionList } from "@dxos/async";
17
18
  import { Filter, Obj } from "@dxos/echo";
18
19
  import { log } from "@dxos/log";
@@ -31,10 +32,10 @@ var ECHO_DXN_LENGTH = 3 + 1 + 4 + 1 + 33 + 1 + 26;
31
32
  var spaces_ready_default = Capability.makeModule(Effect.fnUntraced(function* () {
32
33
  const subscriptions = new SubscriptionList();
33
34
  const spaceSubscriptions = new SubscriptionList();
34
- const { invoke, invokePromise } = yield* Capability.get(Common.Capability.OperationInvoker);
35
- const { graph } = yield* Capability.get(Common.Capability.AppGraph);
36
- const registry = yield* Capability.get(Common.Capability.AtomRegistry);
37
- const layoutAtom = yield* Capability.get(Common.Capability.Layout);
35
+ const { invoke, invokePromise } = yield* Capability.get(Capabilities.OperationInvoker);
36
+ const { graph } = yield* Capability.get(AppCapabilities.AppGraph);
37
+ const registry = yield* Capability.get(Capabilities.AtomRegistry);
38
+ const layoutAtom = yield* Capability.get(AppCapabilities.Layout);
38
39
  const attention = yield* Capability.get(AttentionCapabilities.Attention);
39
40
  const stateAtom = yield* Capability.get(SpaceCapabilities.State);
40
41
  const ephemeralAtom = yield* Capability.get(SpaceCapabilities.EphemeralState);
@@ -43,7 +44,7 @@ var spaces_ready_default = Capability.makeModule(Effect.fnUntraced(function* ()
43
44
  yield* Effect.tryPromise(() => defaultSpace.waitUntilReady());
44
45
  const layout = registry.get(layoutAtom);
45
46
  if (layout.workspace === "default") {
46
- yield* invoke(Common.LayoutOperation.SwitchWorkspace, {
47
+ yield* invoke(LayoutOperation.SwitchWorkspace, {
47
48
  subject: defaultSpace.id
48
49
  });
49
50
  }
@@ -164,7 +165,7 @@ var spaces_ready_default = Capability.makeModule(Effect.fnUntraced(function* ()
164
165
  err: err.message
165
166
  }, {
166
167
  F: __dxlog_file,
167
- L: 193,
168
+ L: 194,
168
169
  S: this,
169
170
  C: (f, a) => f(...a)
170
171
  });
@@ -227,12 +228,12 @@ var spaces_ready_default = Capability.makeModule(Effect.fnUntraced(function* ()
227
228
  } catch (err) {
228
229
  log.catch(err, void 0, {
229
230
  F: __dxlog_file,
230
- L: 279,
231
+ L: 280,
231
232
  S: this,
232
233
  C: (f, a) => f(...a)
233
234
  });
234
235
  }
235
- return Capability.contributes(Common.Capability.Null, null, () => Effect.sync(() => {
236
+ return Capability.contributes(Capabilities.Null, null, () => Effect.sync(() => {
236
237
  spaceSubscriptions.clear();
237
238
  subscriptions.clear();
238
239
  }));
@@ -240,4 +241,4 @@ var spaces_ready_default = Capability.makeModule(Effect.fnUntraced(function* ()
240
241
  export {
241
242
  spaces_ready_default as default
242
243
  };
243
- //# sourceMappingURL=spaces-ready-R744OHQG.mjs.map
244
+ //# sourceMappingURL=spaces-ready-5JOGEWON.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/spaces-ready/spaces-ready.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { AppCapabilities, LayoutOperation } from '@dxos/app-toolkit';\nimport { SubscriptionList } from '@dxos/async';\nimport { Filter, Obj } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { Graph } from '@dxos/plugin-graph';\nimport { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';\nimport { PublicKey } from '@dxos/react-client';\nimport { SPACE_ID_LENGTH, SpaceState, parseId } from '@dxos/react-client/echo';\nimport { Expando } from '@dxos/schema';\nimport { ComplexMap, reduceGroupBy } from '@dxos/util';\n\nimport { SpaceCapabilities, SpaceOperation } from '../../types';\nimport { COMPOSER_SPACE_LOCK, SHARED } from '../../util';\n\nconst ACTIVE_NODE_BROADCAST_INTERVAL = 30_000;\nconst WAIT_FOR_OBJECT_TIMEOUT = 5_000;\n\n// E.g., dxn:echo:BA25QRC2FEWCSAMRP4RZL65LWJ7352CKE:01J00J9B45YHYSGZQTQMSKMGJ6\nconst ECHO_DXN_LENGTH = 3 + 1 + 4 + 1 + 33 + 1 + 26;\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const subscriptions = new SubscriptionList();\n const spaceSubscriptions = new SubscriptionList();\n\n const { invoke, invokePromise } = yield* Capability.get(Capabilities.OperationInvoker);\n const { graph } = yield* Capability.get(AppCapabilities.AppGraph);\n const registry = yield* Capability.get(Capabilities.AtomRegistry);\n const layoutAtom = yield* Capability.get(AppCapabilities.Layout);\n const attention = yield* Capability.get(AttentionCapabilities.Attention);\n const stateAtom = yield* Capability.get(SpaceCapabilities.State);\n const ephemeralAtom = yield* Capability.get(SpaceCapabilities.EphemeralState);\n const client = yield* Capability.get(ClientCapabilities.Client);\n\n const defaultSpace = client.spaces.default;\n yield* Effect.tryPromise(() => defaultSpace.waitUntilReady());\n\n // Check if deck state indicates we should switch to default space.\n const layout = registry.get(layoutAtom);\n if (layout.workspace === 'default') {\n yield* invoke(LayoutOperation.SwitchWorkspace, { subject: defaultSpace.id });\n }\n\n // Initialize space sharing lock in default space.\n if (typeof defaultSpace.properties[COMPOSER_SPACE_LOCK] !== 'boolean') {\n Obj.change(defaultSpace.properties, (p) => {\n p[COMPOSER_SPACE_LOCK] = true;\n });\n }\n\n const queryResults = yield* Effect.tryPromise(() =>\n defaultSpace.db.query(Filter.type(Expando.Expando, { key: SHARED })).run(),\n );\n const spacesOrder = queryResults[0];\n if (!spacesOrder) {\n // TODO(wittjosiah): Cannot be a Folder because Spaces are not TypedObjects so can't be saved in the database.\n // Instead, we store order as an array of space ids.\n defaultSpace.db.add(Obj.make(Expando.Expando, { key: SHARED, order: [] }));\n }\n\n // Await missing objects - subscribe to layout atom changes.\n // NOTE: Use immediate: true to check initial state (URL handler may have already set active).\n let lastActiveCleanup: (() => void) | undefined;\n subscriptions.add(\n registry.subscribe(\n layoutAtom,\n (layout) => {\n // Clean up previous effect.\n lastActiveCleanup?.();\n lastActiveCleanup = undefined;\n\n // Determine the ID to check - either from active item or workspace.\n const id = layout.active.length === 1 ? layout.active[0] : layout.workspace;\n if (!id) {\n return;\n }\n\n const node = Graph.getNode(graph, id).pipe(Option.getOrNull);\n if (!node && (id.length === ECHO_DXN_LENGTH || id.length === SPACE_ID_LENGTH)) {\n void Graph.initialize(graph, id);\n const timeout = setTimeout(async () => {\n const node = Graph.getNode(graph, id).pipe(Option.getOrNull);\n if (!node) {\n await invokePromise(SpaceOperation.WaitForObject, { id });\n }\n }, WAIT_FOR_OBJECT_TIMEOUT);\n\n lastActiveCleanup = () => clearTimeout(timeout);\n }\n },\n { immediate: true },\n ),\n );\n // Also add cleanup for the last effect.\n subscriptions.add(() => lastActiveCleanup?.());\n\n // Cache space names.\n subscriptions.add(\n client.spaces.subscribe(async (spaces) => {\n // TODO(wittjosiah): Remove. This is a hack to be able to migrate the default space properties.\n if (defaultSpace.state.get() === SpaceState.SPACE_REQUIRES_MIGRATION) {\n await defaultSpace.internal.migrate();\n }\n\n spaces\n .filter((space) => space.state.get() === SpaceState.SPACE_READY)\n .forEach((space) => {\n const updateSpaceName = () => {\n const name = space.properties.name;\n if (!name) {\n registry.update(stateAtom, (current) => {\n const { [space.id]: _, ...rest } = current.spaceNames;\n return { ...current, spaceNames: rest };\n });\n } else {\n registry.update(stateAtom, (current) => ({\n ...current,\n spaceNames: { ...current.spaceNames, [space.id]: name },\n }));\n }\n };\n updateSpaceName();\n subscriptions.add(Obj.subscribe(space.properties, updateSpaceName));\n });\n }).unsubscribe,\n );\n\n // Broadcast active node to other peers in the space - subscribe to both layout and attention.\n let broadcastCleanup: (() => void) | undefined;\n const setupBroadcast = () => {\n broadcastCleanup?.();\n\n const layout = registry.get(layoutAtom);\n const current = attention.getCurrent();\n const active = layout.active;\n const inactive = layout.inactive;\n\n const send = () => {\n const spaces = client.spaces.get();\n const identity = client.halo.identity.get();\n if (identity) {\n // Group parts by space for efficient messaging.\n const idsBySpace = reduceGroupBy(active, (id: string) => {\n try {\n const { spaceId } = parseId(id);\n return spaceId;\n } catch {\n return null;\n }\n });\n\n const removedBySpace = reduceGroupBy(inactive, (id: string) => {\n try {\n const { spaceId } = parseId(id);\n return spaceId;\n } catch {\n return null;\n }\n });\n\n // NOTE: Ensure all spaces are included so that we send the correct `removed` object arrays.\n for (const space of spaces) {\n if (!idsBySpace.has(space.id)) {\n idsBySpace.set(space.id, []);\n }\n }\n\n for (const [spaceId, added] of idsBySpace) {\n const removed = removedBySpace.get(spaceId) ?? [];\n const space = spaces.find((space) => space.id === spaceId);\n if (!space) {\n continue;\n }\n\n void space\n .postMessage('viewing', {\n identityKey: identity.identityKey.toHex(),\n attended: current,\n added,\n removed,\n })\n // TODO(burdon): This seems defensive; why would this fail? Backoff interval.\n .catch((err) => {\n log.warn('Failed to broadcast active node for presence.', {\n err: err.message,\n });\n });\n }\n }\n };\n\n send();\n // Send at interval to allow peers to expire entries if they become disconnected.\n const interval = setInterval(() => send(), ACTIVE_NODE_BROADCAST_INTERVAL);\n broadcastCleanup = () => clearInterval(interval);\n };\n\n // Subscribe to layout changes for broadcast.\n subscriptions.add(registry.subscribe(layoutAtom, setupBroadcast));\n // Subscribe to attention.current changes.\n subscriptions.add(attention.subscribeCurrent(() => setupBroadcast()));\n // Initial setup.\n setupBroadcast();\n // Cleanup.\n subscriptions.add(() => broadcastCleanup?.());\n\n // Listen for active nodes from other peers in the space.\n subscriptions.add(\n client.spaces.subscribe((spaces) => {\n spaceSubscriptions.clear();\n spaces.forEach((space) => {\n spaceSubscriptions.add(\n space.listen('viewing', (message) => {\n const { added, removed, attended } = message.payload;\n\n const identityKey = PublicKey.safeFrom(message.payload.identityKey);\n const currentIdentity = client.halo.identity.get();\n if (\n identityKey &&\n !currentIdentity?.identityKey.equals(identityKey) &&\n Array.isArray(added) &&\n Array.isArray(removed)\n ) {\n // TODO(wittjosiah): Stop using (Complex)Map inside reactive object.\n registry.update(ephemeralAtom, (ephemeral) => {\n added.forEach((id) => {\n if (typeof id === 'string') {\n if (!(id in ephemeral.viewersByObject)) {\n ephemeral.viewersByObject[id] = new ComplexMap(PublicKey.hash);\n }\n ephemeral.viewersByObject[id]!.set(identityKey, {\n lastSeen: Date.now(),\n currentlyAttended: new Set(attended).has(id),\n });\n if (!ephemeral.viewersByIdentity.has(identityKey)) {\n ephemeral.viewersByIdentity.set(identityKey, new Set());\n }\n ephemeral.viewersByIdentity.get(identityKey)!.add(id);\n }\n });\n\n removed.forEach((id) => {\n if (typeof id === 'string') {\n ephemeral.viewersByObject[id]?.delete(identityKey);\n ephemeral.viewersByIdentity.get(identityKey)?.delete(id);\n // It's okay for these to be empty sets/maps, reduces churn.\n }\n });\n\n return { ...ephemeral };\n });\n }\n }),\n );\n });\n }).unsubscribe,\n );\n\n // Enable edge replication for all spaces.\n try {\n yield* Effect.tryPromise(() =>\n Promise.all(\n client.spaces\n .get()\n .map((space) => space.internal.setEdgeReplicationPreference(EdgeReplicationSetting.ENABLED)),\n ),\n );\n registry.update(stateAtom, (current) => ({ ...current, enabledEdgeReplication: true }));\n } catch (err) {\n log.catch(err);\n }\n\n return Capability.contributes(Capabilities.Null, null, () =>\n Effect.sync(() => {\n spaceSubscriptions.clear();\n subscriptions.clear();\n }),\n );\n }),\n);\n"],
5
+ "mappings": "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",
6
+ "names": ["Effect", "Option", "Capabilities", "Capability", "AppCapabilities", "LayoutOperation", "SubscriptionList", "Filter", "Obj", "log", "AttentionCapabilities", "ClientCapabilities", "Graph", "EdgeReplicationSetting", "PublicKey", "SPACE_ID_LENGTH", "SpaceState", "parseId", "Expando", "ComplexMap", "reduceGroupBy", "ACTIVE_NODE_BROADCAST_INTERVAL", "WAIT_FOR_OBJECT_TIMEOUT", "ECHO_DXN_LENGTH", "Capability", "makeModule", "fnUntraced", "subscriptions", "SubscriptionList", "spaceSubscriptions", "invoke", "invokePromise", "get", "Capabilities", "OperationInvoker", "graph", "AppCapabilities", "AppGraph", "registry", "AtomRegistry", "layoutAtom", "Layout", "attention", "AttentionCapabilities", "Attention", "stateAtom", "SpaceCapabilities", "State", "ephemeralAtom", "EphemeralState", "client", "ClientCapabilities", "Client", "defaultSpace", "spaces", "default", "tryPromise", "waitUntilReady", "layout", "workspace", "LayoutOperation", "SwitchWorkspace", "subject", "id", "properties", "COMPOSER_SPACE_LOCK", "Obj", "change", "p", "queryResults", "db", "query", "Filter", "type", "Expando", "key", "SHARED", "run", "spacesOrder", "add", "make", "order", "lastActiveCleanup", "subscribe", "undefined", "active", "length", "node", "Graph", "getNode", "pipe", "getOrNull", "SPACE_ID_LENGTH", "initialize", "timeout", "setTimeout", "SpaceOperation", "WaitForObject", "clearTimeout", "immediate", "state", "SpaceState", "SPACE_REQUIRES_MIGRATION", "internal", "migrate", "filter", "space", "SPACE_READY", "forEach", "updateSpaceName", "name", "update", "current", "_", "rest", "spaceNames", "unsubscribe", "broadcastCleanup", "setupBroadcast", "getCurrent", "inactive", "send", "identity", "halo", "idsBySpace", "reduceGroupBy", "spaceId", "parseId", "removedBySpace", "has", "set", "added", "removed", "find", "postMessage", "identityKey", "toHex", "attended", "catch", "err", "log", "warn", "message", "interval", "setInterval", "clearInterval", "subscribeCurrent", "clear", "listen", "payload", "PublicKey", "safeFrom", "currentIdentity", "equals", "Array", "isArray", "ephemeral", "viewersByObject", "ComplexMap", "hash", "lastSeen", "Date", "now", "currentlyAttended", "Set", "viewersByIdentity", "delete", "Promise", "all", "map", "setEdgeReplicationPreference", "EdgeReplicationSetting", "ENABLED", "enabledEdgeReplication", "contributes", "Null", "sync"]
7
+ }
@@ -1,7 +1,7 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  SpaceCapabilities
4
- } from "./chunk-MPL6NHQX.mjs";
4
+ } from "./chunk-NYSDQPNM.mjs";
5
5
  import {
6
6
  meta
7
7
  } from "./chunk-SL4BJSUG.mjs";
@@ -9,7 +9,7 @@ import {
9
9
  // src/capabilities/state/state.ts
10
10
  import { Atom } from "@effect-atom/atom-react";
11
11
  import * as Effect from "effect/Effect";
12
- import { Capability, Common } from "@dxos/app-framework";
12
+ import { Capabilities, Capability } from "@dxos/app-framework";
13
13
  import { createKvsStore } from "@dxos/effect";
14
14
  import { PublicKey } from "@dxos/keys";
15
15
  import { ComplexMap } from "@dxos/util";
@@ -18,7 +18,7 @@ var defaultSpaceState = {
18
18
  enabledEdgeReplication: false
19
19
  };
20
20
  var state_default = Capability.makeModule(Effect.fnUntraced(function* () {
21
- const registry = yield* Capability.get(Common.Capability.AtomRegistry);
21
+ const registry = yield* Capability.get(Capabilities.AtomRegistry);
22
22
  const stateAtom = createKvsStore({
23
23
  key: `${meta.id}/state`,
24
24
  schema: SpaceCapabilities.StateSchema,
@@ -33,7 +33,7 @@ var state_default = Capability.makeModule(Effect.fnUntraced(function* () {
33
33
  viewersByObject: {},
34
34
  viewersByIdentity: new ComplexMap(PublicKey.hash)
35
35
  }).pipe(Atom.keepAlive);
36
- const manager = yield* Capability.get(Common.Capability.PluginManager);
36
+ const manager = yield* Capability.get(Capabilities.PluginManager);
37
37
  const updateNavigableCollections = () => {
38
38
  const enabled = manager.getEnabled().includes("dxos.org/plugin/stack");
39
39
  const current = registry.get(ephemeralAtom);
@@ -56,4 +56,4 @@ var state_default = Capability.makeModule(Effect.fnUntraced(function* () {
56
56
  export {
57
57
  state_default as default
58
58
  };
59
- //# sourceMappingURL=state-XE5YGPHM.mjs.map
59
+ //# sourceMappingURL=state-5MCEPWN3.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/state/state.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { createKvsStore } from '@dxos/effect';\nimport { PublicKey } from '@dxos/keys';\nimport { ComplexMap } from '@dxos/util';\n\nimport { meta } from '../../meta';\nimport { SpaceCapabilities } from '../../types';\n\n/** Default persisted state. */\nconst defaultSpaceState: SpaceCapabilities.SpaceState = {\n spaceNames: {},\n enabledEdgeReplication: false,\n};\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const registry = yield* Capability.get(Capabilities.AtomRegistry);\n\n // Persisted state using KVS store.\n const stateAtom = createKvsStore({\n key: `${meta.id}/state`,\n schema: SpaceCapabilities.StateSchema,\n defaultValue: () => ({ ...defaultSpaceState }),\n });\n\n // Ephemeral state (not persisted, but kept alive to prevent GC resets).\n const ephemeralAtom = Atom.make<SpaceCapabilities.SpaceEphemeralState>({\n awaiting: undefined,\n sdkMigrationRunning: {},\n navigableCollections: false,\n viewersByObject: {},\n viewersByIdentity: new ComplexMap<PublicKey, Set<string>>(PublicKey.hash),\n }).pipe(Atom.keepAlive);\n\n const manager = yield* Capability.get(Capabilities.PluginManager);\n // Update navigableCollections based on plugin state.\n const updateNavigableCollections = () => {\n const enabled = manager.getEnabled().includes('dxos.org/plugin/stack');\n const current = registry.get(ephemeralAtom);\n if (enabled !== current.navigableCollections) {\n registry.update(ephemeralAtom, (c) => ({ ...c, navigableCollections: enabled }));\n }\n };\n // Check initial state and subscribe to changes.\n updateNavigableCollections();\n const unsubscribe = registry.subscribe(manager.enabled, updateNavigableCollections);\n\n return [\n Capability.contributes(SpaceCapabilities.State, stateAtom),\n Capability.contributes(SpaceCapabilities.EphemeralState, ephemeralAtom, () =>\n Effect.sync(() => {\n unsubscribe();\n }),\n ),\n ];\n }),\n);\n"],
5
+ "mappings": ";;;;;;;;;AAIA,SAASA,YAAY;AACrB,YAAYC,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,sBAAsB;AAC/B,SAASC,iBAAiB;AAC1B,SAASC,kBAAkB;AAM3B,IAAMC,oBAAkD;EACtDC,YAAY,CAAC;EACbC,wBAAwB;AAC1B;AAEA,IAAA,gBAAeC,WAAWC,WACjBC,kBAAW,aAAA;AAChB,QAAMC,WAAW,OAAOH,WAAWI,IAAIC,aAAaC,YAAY;AAGhE,QAAMC,YAAYC,eAAe;IAC/BC,KAAK,GAAGC,KAAKC,EAAE;IACfC,QAAQC,kBAAkBC;IAC1BC,cAAc,OAAO;MAAE,GAAGlB;IAAkB;EAC9C,CAAA;AAGA,QAAMmB,gBAAgBC,KAAKC,KAA4C;IACrEC,UAAUC;IACVC,qBAAqB,CAAC;IACtBC,sBAAsB;IACtBC,iBAAiB,CAAC;IAClBC,mBAAmB,IAAIC,WAAmCC,UAAUC,IAAI;EAC1E,CAAA,EAAGC,KAAKX,KAAKY,SAAS;AAEtB,QAAMC,UAAU,OAAO9B,WAAWI,IAAIC,aAAa0B,aAAa;AAEhE,QAAMC,6BAA6B,MAAA;AACjC,UAAMC,UAAUH,QAAQI,WAAU,EAAGC,SAAS,uBAAA;AAC9C,UAAMC,UAAUjC,SAASC,IAAIY,aAAAA;AAC7B,QAAIiB,YAAYG,QAAQd,sBAAsB;AAC5CnB,eAASkC,OAAOrB,eAAe,CAACsB,OAAO;QAAE,GAAGA;QAAGhB,sBAAsBW;MAAQ,EAAA;IAC/E;EACF;AAEAD,6BAAAA;AACA,QAAMO,cAAcpC,SAASqC,UAAUV,QAAQG,SAASD,0BAAAA;AAExD,SAAO;IACLhC,WAAWyC,YAAY5B,kBAAkB6B,OAAOnC,SAAAA;IAChDP,WAAWyC,YAAY5B,kBAAkB8B,gBAAgB3B,eAAe,MAC/D4B,YAAK,MAAA;AACVL,kBAAAA;IACF,CAAA,CAAA;;AAGN,CAAA,CAAA;",
6
+ "names": ["Atom", "Effect", "Capabilities", "Capability", "createKvsStore", "PublicKey", "ComplexMap", "defaultSpaceState", "spaceNames", "enabledEdgeReplication", "Capability", "makeModule", "fnUntraced", "registry", "get", "Capabilities", "AtomRegistry", "stateAtom", "createKvsStore", "key", "meta", "id", "schema", "SpaceCapabilities", "StateSchema", "defaultValue", "ephemeralAtom", "Atom", "make", "awaiting", "undefined", "sdkMigrationRunning", "navigableCollections", "viewersByObject", "viewersByIdentity", "ComplexMap", "PublicKey", "hash", "pipe", "keepAlive", "manager", "PluginManager", "updateNavigableCollections", "enabled", "getEnabled", "includes", "current", "update", "c", "unsubscribe", "subscribe", "contributes", "State", "EphemeralState", "sync"]
7
+ }
@@ -14,7 +14,7 @@ import {
14
14
  TypeInputOptionsAnnotation,
15
15
  TypeInputOptionsAnnotationId,
16
16
  getTypenames
17
- } from "../chunk-MPL6NHQX.mjs";
17
+ } from "../chunk-NYSDQPNM.mjs";
18
18
  import "../chunk-SL4BJSUG.mjs";
19
19
  export {
20
20
  CollectionOperation,
@@ -1 +1 @@
1
- {"version":3,"file":"SpacePlugin.d.ts","sourceRoot":"","sources":["../../../src/SpacePlugin.ts"],"names":[],"mappings":"AAOA,OAAO,EAAuC,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAqClF,OAAO,EAAqC,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAErF,eAAO,MAAM,WAAW,0CAuJvB,CAAC"}
1
+ {"version":3,"file":"SpacePlugin.d.ts","sourceRoot":"","sources":["../../../src/SpacePlugin.ts"],"names":[],"mappings":"AAOA,OAAO,EAAiD,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAsC5F,OAAO,EAAqC,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAErF,eAAO,MAAM,WAAW,0CAyKvB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import * as Effect from 'effect/Effect';
2
2
  import { Capability } from '@dxos/app-framework';
3
3
  import { GraphBuilder } from '@dxos/plugin-graph';
4
- declare const _default: (props?: void | undefined) => Effect.Effect<Capability.Capability<Capability.InterfaceDef<GraphBuilder.BuilderExtensions>>, never, Capability.Service>;
4
+ import { type SpacePluginOptions } from '../../types';
5
+ declare const _default: (props?: SpacePluginOptions | undefined) => Effect.Effect<Capability.Capability<Capability.InterfaceDef<GraphBuilder.BuilderExtensions>>, never, Capability.Service>;
5
6
  export default _default;
6
7
  //# sourceMappingURL=app-graph-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-graph-builder.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/app-graph-builder/app-graph-builder.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,EAAE,UAAU,EAAU,MAAM,qBAAqB,CAAC;AAOzD,OAAO,EAAc,YAAY,EAA0B,MAAM,oBAAoB,CAAC;;AAqBtF,wBAmkBE"}
1
+ {"version":3,"file":"app-graph-builder.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/app-graph-builder/app-graph-builder.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAQjD,OAAO,EAAc,YAAY,EAA0B,MAAM,oBAAoB,CAAC;AAMtF,OAAO,EAAiD,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;;AAerG,wBAskBE"}
@@ -1,3 +1,3 @@
1
1
  import { Capability } from '@dxos/app-framework';
2
- export declare const AppGraphBuilder: Capability.LazyCapability<void, Capability.Capability<Capability.InterfaceDef<import("@dxos/app-graph").BuilderExtensions>>, Error>;
2
+ export declare const AppGraphBuilder: Capability.LazyCapability<import("../../types").SpacePluginOptions, Capability.Capability<Capability.InterfaceDef<import("@dxos/app-graph").BuilderExtensions>>, Error>;
3
3
  //# sourceMappingURL=index.d.ts.map