@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
@@ -26,17 +26,17 @@ import {
26
26
  SpaceSettingsContainer,
27
27
  SyncStatus,
28
28
  ViewEditor
29
- } from "./chunk-3X2EA2OA.mjs";
29
+ } from "./chunk-XRTOZE23.mjs";
30
30
  import {
31
31
  useTypeOptions
32
- } from "./chunk-4WZUGLQQ.mjs";
33
- import "./chunk-SUI34XSA.mjs";
32
+ } from "./chunk-A7ZCVQGZ.mjs";
33
+ import "./chunk-WAOJLA2S.mjs";
34
34
  import {
35
35
  HueAnnotationId,
36
36
  IconAnnotationId,
37
37
  SpaceCapabilities,
38
38
  TypeInputOptionsAnnotationId
39
- } from "./chunk-CCRSHECL.mjs";
39
+ } from "./chunk-KGLWYGIF.mjs";
40
40
  import {
41
41
  meta
42
42
  } from "./chunk-HSMQFM57.mjs";
@@ -45,8 +45,10 @@ import {
45
45
  import * as Effect from "effect/Effect";
46
46
  import * as Option from "effect/Option";
47
47
  import React, { useCallback } from "react";
48
- import { Capability, Common } from "@dxos/app-framework";
49
- import { Surface, useAtomCapability, useLayout, useSettingsState } from "@dxos/app-framework/react";
48
+ import { Capabilities, Capability } from "@dxos/app-framework";
49
+ import { Surface, useAtomCapability, useSettingsState } from "@dxos/app-framework/ui";
50
+ import { AppCapabilities } from "@dxos/app-toolkit";
51
+ import { useLayout } from "@dxos/app-toolkit/ui";
50
52
  import { Database, Obj } from "@dxos/echo";
51
53
  import { findAnnotation } from "@dxos/effect";
52
54
  import { SpaceState, getSpace, isSpace, parseId, useSpace } from "@dxos/react-client/echo";
@@ -56,15 +58,15 @@ import { HuePicker, IconPicker } from "@dxos/react-ui-pickers";
56
58
  import { Collection, ViewAnnotation } from "@dxos/schema";
57
59
  var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (props) {
58
60
  const { createInvitationUrl } = props;
59
- return Capability.contributes(Common.Capability.ReactSurface, [
60
- Common.createSurface({
61
+ return Capability.contributes(Capabilities.ReactSurface, [
62
+ Surface.create({
61
63
  id: `${meta.id}/article`,
62
64
  role: "article",
63
65
  filter: (data) => (
64
66
  // TODO(wittjosiah): Need to avoid shotgun parsing space state everywhere.
65
67
  isSpace(data.subject) && data.subject.state.get() === SpaceState.SPACE_READY
66
68
  ),
67
- component: ({ data, role, ...rest }) => /* @__PURE__ */ React.createElement(Surface, {
69
+ component: ({ data, role, ...rest }) => /* @__PURE__ */ React.createElement(Surface.Surface, {
68
70
  data: {
69
71
  id: data.subject.id,
70
72
  subject: data.subject.properties[Collection.Collection.typename]?.target
@@ -73,7 +75,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
73
75
  ...rest
74
76
  })
75
77
  }),
76
- Common.createSurface({
78
+ Surface.create({
77
79
  id: `${meta.id}/collection-fallback`,
78
80
  role: "article",
79
81
  position: "fallback",
@@ -82,7 +84,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
82
84
  subject: data.subject
83
85
  })
84
86
  }),
85
- Common.createSurface({
87
+ Surface.create({
86
88
  id: `${meta.id}/record-article`,
87
89
  role: "article",
88
90
  position: "fallback",
@@ -91,10 +93,10 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
91
93
  subject: data.subject
92
94
  })
93
95
  }),
94
- Common.createSurface({
96
+ Surface.create({
95
97
  id: `${meta.id}/plugin-settings`,
96
98
  role: "article",
97
- filter: (data) => Common.Capability.isSettings(data.subject) && data.subject.prefix === meta.id,
99
+ filter: (data) => AppCapabilities.isSettings(data.subject) && data.subject.prefix === meta.id,
98
100
  component: ({ data: { subject } }) => {
99
101
  const { settings, updateSettings } = useSettingsState(subject.atom);
100
102
  return /* @__PURE__ */ React.createElement(SpacePluginSettings, {
@@ -103,7 +105,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
103
105
  });
104
106
  }
105
107
  }),
106
- Common.createSurface({
108
+ Surface.create({
107
109
  id: `${meta.id}/companion/object-settings`,
108
110
  role: "article",
109
111
  filter: (data) => Obj.isObject(data.companionTo) && data.subject === "settings",
@@ -113,7 +115,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
113
115
  ref
114
116
  })
115
117
  }),
116
- Common.createSurface({
118
+ Surface.create({
117
119
  id: `${meta.id}/space-settings-properties`,
118
120
  role: "article",
119
121
  filter: (data) => data.subject === `${meta.id}/properties`,
@@ -125,12 +127,11 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
125
127
  return null;
126
128
  }
127
129
  return /* @__PURE__ */ React.createElement(SpaceSettingsContainer, {
128
- space,
129
- ref
130
+ space
130
131
  });
131
132
  }
132
133
  }),
133
- Common.createSurface({
134
+ Surface.create({
134
135
  id: `${meta.id}/space-settings-members`,
135
136
  role: "article",
136
137
  position: "hoist",
@@ -148,7 +149,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
148
149
  });
149
150
  }
150
151
  }),
151
- Common.createSurface({
152
+ Surface.create({
152
153
  id: `${meta.id}/space-settings-schema`,
153
154
  role: "article",
154
155
  filter: (data) => data.subject === `${meta.id}/schema`,
@@ -164,7 +165,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
164
165
  });
165
166
  }
166
167
  }),
167
- Common.createSurface({
168
+ Surface.create({
168
169
  id: `${meta.id}/selected-objects`,
169
170
  role: "article",
170
171
  filter: (data) => {
@@ -181,25 +182,25 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
181
182
  ref
182
183
  })
183
184
  }),
184
- Common.createSurface({
185
+ Surface.create({
185
186
  id: JOIN_DIALOG,
186
187
  role: "dialog",
187
188
  filter: (data) => data.component === JOIN_DIALOG,
188
189
  component: ({ data }) => /* @__PURE__ */ React.createElement(JoinDialog, data.props)
189
190
  }),
190
- Common.createSurface({
191
+ Surface.create({
191
192
  id: CREATE_SPACE_DIALOG,
192
193
  role: "dialog",
193
194
  filter: (data) => data.component === CREATE_SPACE_DIALOG,
194
195
  component: () => /* @__PURE__ */ React.createElement(CreateSpaceDialog, null)
195
196
  }),
196
- Common.createSurface({
197
+ Surface.create({
197
198
  id: CREATE_OBJECT_DIALOG,
198
199
  role: "dialog",
199
200
  filter: (data) => data.component === CREATE_OBJECT_DIALOG,
200
201
  component: ({ data }) => /* @__PURE__ */ React.createElement(CreateObjectDialog, data.props)
201
202
  }),
202
- Common.createSurface({
203
+ Surface.create({
203
204
  id: `${meta.id}/create-initial-space-form-[hue]`,
204
205
  role: "form-input",
205
206
  filter: (data) => {
@@ -222,7 +223,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
222
223
  }));
223
224
  }
224
225
  }),
225
- Common.createSurface({
226
+ Surface.create({
226
227
  id: `${meta.id}/create-initial-space-form-[icon]`,
227
228
  role: "form-input",
228
229
  filter: (data) => {
@@ -245,7 +246,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
245
246
  }));
246
247
  }
247
248
  }),
248
- Common.createSurface({
249
+ Surface.create({
249
250
  id: `${meta.id}/typename-form-input`,
250
251
  role: "form-input",
251
252
  filter: (data) => {
@@ -270,7 +271,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
270
271
  });
271
272
  }
272
273
  }),
273
- Common.createSurface({
274
+ Surface.create({
274
275
  id: `${meta.id}/object-settings`,
275
276
  role: "object-settings",
276
277
  filter: (data) => {
@@ -290,7 +291,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
290
291
  });
291
292
  }
292
293
  }),
293
- Common.createSurface({
294
+ Surface.create({
294
295
  id: SPACE_RENAME_POPOVER,
295
296
  role: "popover",
296
297
  filter: (data) => data.component === SPACE_RENAME_POPOVER && isSpace(data.props),
@@ -298,7 +299,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
298
299
  space: data.props
299
300
  })
300
301
  }),
301
- Common.createSurface({
302
+ Surface.create({
302
303
  id: OBJECT_RENAME_POPOVER,
303
304
  role: "popover",
304
305
  filter: (data) => data.component === OBJECT_RENAME_POPOVER && Obj.isObject(data.props),
@@ -306,7 +307,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
306
307
  object: data.props
307
308
  })
308
309
  }),
309
- Common.createSurface({
310
+ Surface.create({
310
311
  id: `${meta.id}/menu-footer`,
311
312
  role: "menu-footer",
312
313
  filter: (data) => Obj.isObject(data.subject),
@@ -314,7 +315,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
314
315
  object: data.subject
315
316
  })
316
317
  }),
317
- Common.createSurface({
318
+ Surface.create({
318
319
  id: `${meta.id}/navtree-presence`,
319
320
  role: "navtree-item-end",
320
321
  filter: (data) => typeof data.id === "string" && Obj.isObject(data.subject),
@@ -328,7 +329,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
328
329
  }
329
330
  }),
330
331
  // TODO(wittjosiah): Attention glyph for non-echo items should be handled elsewhere.
331
- Common.createSurface({
332
+ Surface.create({
332
333
  id: `${meta.id}/navtree-presence-fallback`,
333
334
  role: "navtree-item-end",
334
335
  position: "fallback",
@@ -339,7 +340,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
339
340
  })
340
341
  }),
341
342
  // TODO(wittjosiah): Broken?
342
- Common.createSurface({
343
+ Surface.create({
343
344
  id: `${meta.id}/navtree-sync-status`,
344
345
  role: "navtree-item-end",
345
346
  filter: (data) => isSpace(data.subject),
@@ -348,7 +349,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
348
349
  open: data.open
349
350
  })
350
351
  }),
351
- Common.createSurface({
352
+ Surface.create({
352
353
  id: `${meta.id}/navbar-presence`,
353
354
  role: "navbar-end",
354
355
  position: "hoist",
@@ -361,7 +362,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
361
362
  }) : null;
362
363
  }
363
364
  }),
364
- Common.createSurface({
365
+ Surface.create({
365
366
  id: `${meta.id}/collection-section`,
366
367
  role: "section",
367
368
  filter: (data) => Obj.instanceOf(Collection.Collection, data.subject),
@@ -369,7 +370,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
369
370
  subject: data.subject
370
371
  })
371
372
  }),
372
- Common.createSurface({
373
+ Surface.create({
373
374
  id: `${meta.id}/status`,
374
375
  role: "status",
375
376
  component: () => /* @__PURE__ */ React.createElement(SyncStatus, null)
@@ -379,4 +380,4 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* (p
379
380
  export {
380
381
  react_surface_default as default
381
382
  };
382
- //# sourceMappingURL=react-surface-BPE7VWI7.mjs.map
383
+ //# sourceMappingURL=react-surface-ARZZ343H.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,6 +1,6 @@
1
1
  import {
2
2
  SpaceCapabilities
3
- } from "./chunk-CCRSHECL.mjs";
3
+ } from "./chunk-KGLWYGIF.mjs";
4
4
  import "./chunk-HSMQFM57.mjs";
5
5
 
6
6
  // src/capabilities/repair/repair.ts
@@ -47,4 +47,4 @@ var ensureSystemCollection = async (space) => {
47
47
  export {
48
48
  repair_default as default
49
49
  };
50
- //# sourceMappingURL=repair-CJG26D52.mjs.map
50
+ //# sourceMappingURL=repair-DKU4TUD2.mjs.map
@@ -1,14 +1,15 @@
1
1
  import {
2
2
  SpaceCapabilities,
3
3
  SpaceSettingsSchema
4
- } from "./chunk-CCRSHECL.mjs";
4
+ } from "./chunk-KGLWYGIF.mjs";
5
5
  import {
6
6
  meta
7
7
  } from "./chunk-HSMQFM57.mjs";
8
8
 
9
9
  // src/capabilities/settings/settings.ts
10
10
  import * as Effect from "effect/Effect";
11
- import { Capability, Common } from "@dxos/app-framework";
11
+ import { Capability } from "@dxos/app-framework";
12
+ import { AppCapabilities } from "@dxos/app-toolkit";
12
13
  import { createKvsStore } from "@dxos/effect";
13
14
  var settings_default = Capability.makeModule(() => Effect.sync(() => {
14
15
  const settingsAtom = createKvsStore({
@@ -20,7 +21,7 @@ var settings_default = Capability.makeModule(() => Effect.sync(() => {
20
21
  });
21
22
  return [
22
23
  Capability.contributes(SpaceCapabilities.Settings, settingsAtom),
23
- Capability.contributes(Common.Capability.Settings, {
24
+ Capability.contributes(AppCapabilities.Settings, {
24
25
  prefix: meta.id,
25
26
  schema: SpaceSettingsSchema,
26
27
  atom: settingsAtom
@@ -30,4 +31,4 @@ var settings_default = Capability.makeModule(() => Effect.sync(() => {
30
31
  export {
31
32
  settings_default as default
32
33
  };
33
- //# sourceMappingURL=settings-ZS2AQ73E.mjs.map
34
+ //# sourceMappingURL=settings-M2DMD2ZA.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
+ }
@@ -1,17 +1,18 @@
1
1
  import {
2
2
  COMPOSER_SPACE_LOCK,
3
3
  SHARED
4
- } from "./chunk-SUI34XSA.mjs";
4
+ } from "./chunk-WAOJLA2S.mjs";
5
5
  import {
6
6
  SpaceCapabilities,
7
7
  SpaceOperation
8
- } from "./chunk-CCRSHECL.mjs";
8
+ } from "./chunk-KGLWYGIF.mjs";
9
9
  import "./chunk-HSMQFM57.mjs";
10
10
 
11
11
  // src/capabilities/spaces-ready/spaces-ready.ts
12
12
  import * as Effect from "effect/Effect";
13
13
  import * as Option from "effect/Option";
14
- import { Capability, Common } from "@dxos/app-framework";
14
+ import { Capabilities, Capability } from "@dxos/app-framework";
15
+ import { AppCapabilities, LayoutOperation } from "@dxos/app-toolkit";
15
16
  import { SubscriptionList } from "@dxos/async";
16
17
  import { Filter, Obj } from "@dxos/echo";
17
18
  import { log } from "@dxos/log";
@@ -30,10 +31,10 @@ var ECHO_DXN_LENGTH = 3 + 1 + 4 + 1 + 33 + 1 + 26;
30
31
  var spaces_ready_default = Capability.makeModule(Effect.fnUntraced(function* () {
31
32
  const subscriptions = new SubscriptionList();
32
33
  const spaceSubscriptions = new SubscriptionList();
33
- const { invoke, invokePromise } = yield* Capability.get(Common.Capability.OperationInvoker);
34
- const { graph } = yield* Capability.get(Common.Capability.AppGraph);
35
- const registry = yield* Capability.get(Common.Capability.AtomRegistry);
36
- const layoutAtom = yield* Capability.get(Common.Capability.Layout);
34
+ const { invoke, invokePromise } = yield* Capability.get(Capabilities.OperationInvoker);
35
+ const { graph } = yield* Capability.get(AppCapabilities.AppGraph);
36
+ const registry = yield* Capability.get(Capabilities.AtomRegistry);
37
+ const layoutAtom = yield* Capability.get(AppCapabilities.Layout);
37
38
  const attention = yield* Capability.get(AttentionCapabilities.Attention);
38
39
  const stateAtom = yield* Capability.get(SpaceCapabilities.State);
39
40
  const ephemeralAtom = yield* Capability.get(SpaceCapabilities.EphemeralState);
@@ -42,7 +43,7 @@ var spaces_ready_default = Capability.makeModule(Effect.fnUntraced(function* ()
42
43
  yield* Effect.tryPromise(() => defaultSpace.waitUntilReady());
43
44
  const layout = registry.get(layoutAtom);
44
45
  if (layout.workspace === "default") {
45
- yield* invoke(Common.LayoutOperation.SwitchWorkspace, {
46
+ yield* invoke(LayoutOperation.SwitchWorkspace, {
46
47
  subject: defaultSpace.id
47
48
  });
48
49
  }
@@ -163,7 +164,7 @@ var spaces_ready_default = Capability.makeModule(Effect.fnUntraced(function* ()
163
164
  err: err.message
164
165
  }, {
165
166
  F: __dxlog_file,
166
- L: 193,
167
+ L: 194,
167
168
  S: this,
168
169
  C: (f, a) => f(...a)
169
170
  });
@@ -226,12 +227,12 @@ var spaces_ready_default = Capability.makeModule(Effect.fnUntraced(function* ()
226
227
  } catch (err) {
227
228
  log.catch(err, void 0, {
228
229
  F: __dxlog_file,
229
- L: 279,
230
+ L: 280,
230
231
  S: this,
231
232
  C: (f, a) => f(...a)
232
233
  });
233
234
  }
234
- return Capability.contributes(Common.Capability.Null, null, () => Effect.sync(() => {
235
+ return Capability.contributes(Capabilities.Null, null, () => Effect.sync(() => {
235
236
  spaceSubscriptions.clear();
236
237
  subscriptions.clear();
237
238
  }));
@@ -239,4 +240,4 @@ var spaces_ready_default = Capability.makeModule(Effect.fnUntraced(function* ()
239
240
  export {
240
241
  spaces_ready_default as default
241
242
  };
242
- //# sourceMappingURL=spaces-ready-OQDGWUOS.mjs.map
243
+ //# sourceMappingURL=spaces-ready-XWJUJ43N.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,6 +1,6 @@
1
1
  import {
2
2
  SpaceCapabilities
3
- } from "./chunk-CCRSHECL.mjs";
3
+ } from "./chunk-KGLWYGIF.mjs";
4
4
  import {
5
5
  meta
6
6
  } from "./chunk-HSMQFM57.mjs";
@@ -8,7 +8,7 @@ import {
8
8
  // src/capabilities/state/state.ts
9
9
  import { Atom } from "@effect-atom/atom-react";
10
10
  import * as Effect from "effect/Effect";
11
- import { Capability, Common } from "@dxos/app-framework";
11
+ import { Capabilities, Capability } from "@dxos/app-framework";
12
12
  import { createKvsStore } from "@dxos/effect";
13
13
  import { PublicKey } from "@dxos/keys";
14
14
  import { ComplexMap } from "@dxos/util";
@@ -17,7 +17,7 @@ var defaultSpaceState = {
17
17
  enabledEdgeReplication: false
18
18
  };
19
19
  var state_default = Capability.makeModule(Effect.fnUntraced(function* () {
20
- const registry = yield* Capability.get(Common.Capability.AtomRegistry);
20
+ const registry = yield* Capability.get(Capabilities.AtomRegistry);
21
21
  const stateAtom = createKvsStore({
22
22
  key: `${meta.id}/state`,
23
23
  schema: SpaceCapabilities.StateSchema,
@@ -32,7 +32,7 @@ var state_default = Capability.makeModule(Effect.fnUntraced(function* () {
32
32
  viewersByObject: {},
33
33
  viewersByIdentity: new ComplexMap(PublicKey.hash)
34
34
  }).pipe(Atom.keepAlive);
35
- const manager = yield* Capability.get(Common.Capability.PluginManager);
35
+ const manager = yield* Capability.get(Capabilities.PluginManager);
36
36
  const updateNavigableCollections = () => {
37
37
  const enabled = manager.getEnabled().includes("dxos.org/plugin/stack");
38
38
  const current = registry.get(ephemeralAtom);
@@ -55,4 +55,4 @@ var state_default = Capability.makeModule(Effect.fnUntraced(function* () {
55
55
  export {
56
56
  state_default as default
57
57
  };
58
- //# sourceMappingURL=state-7YZQB2KY.mjs.map
58
+ //# sourceMappingURL=state-V637BLIM.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
+ }
@@ -13,7 +13,7 @@ import {
13
13
  TypeInputOptionsAnnotation,
14
14
  TypeInputOptionsAnnotationId,
15
15
  getTypenames
16
- } from "../chunk-CCRSHECL.mjs";
16
+ } from "../chunk-KGLWYGIF.mjs";
17
17
  import "../chunk-HSMQFM57.mjs";
18
18
  export {
19
19
  CollectionOperation,