@dxos/plugin-space 0.8.3-main.672df60 → 0.8.3-main.7f5a14c

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 (177) hide show
  1. package/dist/lib/browser/{app-graph-builder-DCWUULKX.mjs → app-graph-builder-UNXUTH53.mjs} +11 -10
  2. package/dist/lib/browser/app-graph-builder-UNXUTH53.mjs.map +7 -0
  3. package/dist/lib/browser/{app-graph-serializer-MLU7XI2P.mjs → app-graph-serializer-KPKPMC4M.mjs} +6 -6
  4. package/dist/lib/browser/app-graph-serializer-KPKPMC4M.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-ZQEIXWBK.mjs → chunk-CF4FBDGP.mjs} +26 -24
  6. package/dist/lib/browser/chunk-CF4FBDGP.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-W46VVHFM.mjs → chunk-LGEIVEYC.mjs} +8 -7
  8. package/dist/lib/browser/chunk-LGEIVEYC.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-N5QMRLKI.mjs → chunk-RRJIDXPY.mjs} +18 -18
  10. package/dist/lib/browser/chunk-RRJIDXPY.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-VEBKN45O.mjs → chunk-TQPBDRXV.mjs} +2 -2
  12. package/dist/lib/browser/{identity-created-O63SIYOF.mjs → identity-created-EM6GZDNF.mjs} +4 -4
  13. package/dist/lib/browser/identity-created-EM6GZDNF.mjs.map +7 -0
  14. package/dist/lib/browser/index.mjs +7 -7
  15. package/dist/lib/browser/index.mjs.map +3 -3
  16. package/dist/lib/browser/{intent-resolver-PG473BRV.mjs → intent-resolver-K3ULKQ6V.mjs} +25 -28
  17. package/dist/lib/browser/intent-resolver-K3ULKQ6V.mjs.map +7 -0
  18. package/dist/lib/browser/meta.json +1 -1
  19. package/dist/lib/browser/{react-root-FRDC4UXB.mjs → react-root-ECO7G77L.mjs} +4 -4
  20. package/dist/lib/browser/{react-surface-QOP7T66K.mjs → react-surface-Y5AZBYA7.mjs} +12 -12
  21. package/dist/lib/browser/react-surface-Y5AZBYA7.mjs.map +7 -0
  22. package/dist/lib/browser/{schema-tools-JIEMHUXV.mjs → schema-tools-ILTVSSS3.mjs} +7 -6
  23. package/dist/lib/browser/schema-tools-ILTVSSS3.mjs.map +7 -0
  24. package/dist/lib/browser/{settings-2IN2WLUK.mjs → settings-MU7O6JDD.mjs} +4 -4
  25. package/dist/lib/browser/settings-MU7O6JDD.mjs.map +7 -0
  26. package/dist/lib/browser/{spaces-ready-L4QAGTDE.mjs → spaces-ready-NXZAWHGI.mjs} +9 -10
  27. package/dist/lib/browser/spaces-ready-NXZAWHGI.mjs.map +7 -0
  28. package/dist/lib/browser/types/index.mjs +1 -1
  29. package/dist/lib/node/{app-graph-builder-WC445X77.cjs → app-graph-builder-6QDQEYHS.cjs} +38 -37
  30. package/dist/lib/node/app-graph-builder-6QDQEYHS.cjs.map +7 -0
  31. package/dist/lib/node/{app-graph-serializer-UPQOQVMJ.cjs → app-graph-serializer-6SWKHDE2.cjs} +21 -21
  32. package/dist/lib/node/app-graph-serializer-6SWKHDE2.cjs.map +7 -0
  33. package/dist/lib/node/{chunk-COQYISES.cjs → chunk-KDBPQ6L3.cjs} +54 -54
  34. package/dist/lib/node/chunk-KDBPQ6L3.cjs.map +7 -0
  35. package/dist/lib/node/{chunk-USFHJG7C.cjs → chunk-QCANR24R.cjs} +67 -65
  36. package/dist/lib/node/chunk-QCANR24R.cjs.map +7 -0
  37. package/dist/lib/node/{chunk-DXL5TDFP.cjs → chunk-SF3NU7EW.cjs} +6 -6
  38. package/dist/lib/node/{chunk-FXHI7JNY.cjs → chunk-UUBPYP7E.cjs} +33 -32
  39. package/dist/lib/node/chunk-UUBPYP7E.cjs.map +7 -0
  40. package/dist/lib/node/{identity-created-UXEAUGC7.cjs → identity-created-KCJAOFZC.cjs} +7 -7
  41. package/dist/lib/node/identity-created-KCJAOFZC.cjs.map +7 -0
  42. package/dist/lib/node/index.cjs +61 -61
  43. package/dist/lib/node/index.cjs.map +3 -3
  44. package/dist/lib/node/{intent-resolver-VPVZSSIL.cjs → intent-resolver-XR4S7LME.cjs} +65 -68
  45. package/dist/lib/node/intent-resolver-XR4S7LME.cjs.map +7 -0
  46. package/dist/lib/node/meta.json +1 -1
  47. package/dist/lib/node/{react-root-JXLRINF3.cjs → react-root-Z2YM6JYC.cjs} +8 -8
  48. package/dist/lib/node/{react-surface-ZIYDBL3C.cjs → react-surface-H6XNU6DS.cjs} +56 -56
  49. package/dist/lib/node/react-surface-H6XNU6DS.cjs.map +7 -0
  50. package/dist/lib/node/{schema-tools-ZG6Z2QRC.cjs → schema-tools-IYREN4IH.cjs} +9 -8
  51. package/dist/lib/node/schema-tools-IYREN4IH.cjs.map +7 -0
  52. package/dist/lib/node/{settings-FOH7EB5C.cjs → settings-XRAT3YMN.cjs} +7 -7
  53. package/dist/lib/node/settings-XRAT3YMN.cjs.map +7 -0
  54. package/dist/lib/node/{spaces-ready-VXQYCBII.cjs → spaces-ready-KKFEN2MM.cjs} +22 -23
  55. package/dist/lib/node/spaces-ready-KKFEN2MM.cjs.map +7 -0
  56. package/dist/lib/node/types/index.cjs +12 -12
  57. package/dist/lib/node/types/index.cjs.map +1 -1
  58. package/dist/lib/node-esm/{app-graph-builder-E7CCGPQJ.mjs → app-graph-builder-5EAV4CDH.mjs} +11 -10
  59. package/dist/lib/node-esm/app-graph-builder-5EAV4CDH.mjs.map +7 -0
  60. package/dist/lib/node-esm/{app-graph-serializer-UCMSLPIA.mjs → app-graph-serializer-BRLVJW6I.mjs} +6 -6
  61. package/dist/lib/node-esm/app-graph-serializer-BRLVJW6I.mjs.map +7 -0
  62. package/dist/lib/node-esm/{chunk-FTELJGEG.mjs → chunk-226REPOB.mjs} +8 -7
  63. package/dist/lib/node-esm/chunk-226REPOB.mjs.map +7 -0
  64. package/dist/lib/node-esm/{chunk-OSPEGYX3.mjs → chunk-55OOAFBS.mjs} +2 -2
  65. package/dist/lib/node-esm/{chunk-BE2BLE7K.mjs → chunk-AVONUBZO.mjs} +26 -24
  66. package/dist/lib/node-esm/chunk-AVONUBZO.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-XAZNQ3QN.mjs → chunk-FTL5AMXF.mjs} +18 -18
  68. package/dist/lib/node-esm/chunk-FTL5AMXF.mjs.map +7 -0
  69. package/dist/lib/node-esm/{identity-created-ZECO4NH3.mjs → identity-created-FOFH2WPI.mjs} +4 -4
  70. package/dist/lib/node-esm/identity-created-FOFH2WPI.mjs.map +7 -0
  71. package/dist/lib/node-esm/index.mjs +7 -7
  72. package/dist/lib/node-esm/index.mjs.map +3 -3
  73. package/dist/lib/node-esm/{intent-resolver-SK5LP5ZK.mjs → intent-resolver-72KTB4S2.mjs} +25 -28
  74. package/dist/lib/node-esm/intent-resolver-72KTB4S2.mjs.map +7 -0
  75. package/dist/lib/node-esm/meta.json +1 -1
  76. package/dist/lib/node-esm/{react-root-K2KRGIT7.mjs → react-root-FU2I5U2M.mjs} +4 -4
  77. package/dist/lib/node-esm/{react-surface-XNUWZCSH.mjs → react-surface-L4SMKRYF.mjs} +12 -12
  78. package/dist/lib/node-esm/react-surface-L4SMKRYF.mjs.map +7 -0
  79. package/dist/lib/node-esm/{schema-tools-2Y4D42PD.mjs → schema-tools-SRLCRZ3B.mjs} +7 -6
  80. package/dist/lib/node-esm/schema-tools-SRLCRZ3B.mjs.map +7 -0
  81. package/dist/lib/node-esm/{settings-Q4XDFSYD.mjs → settings-C7GQAEDU.mjs} +4 -4
  82. package/dist/lib/node-esm/settings-C7GQAEDU.mjs.map +7 -0
  83. package/dist/lib/node-esm/{spaces-ready-JHKPD4PH.mjs → spaces-ready-WTISHKEH.mjs} +9 -10
  84. package/dist/lib/node-esm/spaces-ready-WTISHKEH.mjs.map +7 -0
  85. package/dist/lib/node-esm/types/index.mjs +1 -1
  86. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  87. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  88. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  89. package/dist/types/src/capabilities/schema-tools.d.ts.map +1 -1
  90. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  91. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  92. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +2 -2
  93. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  94. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  95. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  96. package/dist/types/src/components/MenuFooter.d.ts +2 -2
  97. package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
  98. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts +2 -2
  99. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  100. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +2 -2
  101. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
  102. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts +2 -2
  103. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -1
  104. package/dist/types/src/components/SchemaContainer.d.ts +2 -2
  105. package/dist/types/src/components/SchemaContainer.d.ts.map +1 -1
  106. package/dist/types/src/components/SpacePresence.d.ts +2 -2
  107. package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
  108. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  109. package/dist/types/src/types/collection.d.ts +5 -5
  110. package/dist/types/src/types/collection.d.ts.map +1 -1
  111. package/dist/types/src/types/types.d.ts +5 -4
  112. package/dist/types/src/types/types.d.ts.map +1 -1
  113. package/dist/types/src/util.d.ts +10 -10
  114. package/dist/types/src/util.d.ts.map +1 -1
  115. package/package.json +45 -45
  116. package/src/SpacePlugin.tsx +4 -4
  117. package/src/capabilities/app-graph-builder.ts +8 -17
  118. package/src/capabilities/app-graph-serializer.ts +3 -3
  119. package/src/capabilities/identity-created.ts +2 -2
  120. package/src/capabilities/intent-resolver.ts +30 -26
  121. package/src/capabilities/react-surface.tsx +10 -22
  122. package/src/capabilities/schema-tools.ts +3 -2
  123. package/src/capabilities/settings.ts +6 -2
  124. package/src/capabilities/spaces-ready.ts +5 -6
  125. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +3 -2
  126. package/src/components/CreateDialog/CreateObjectDialog.tsx +9 -16
  127. package/src/components/CreateDialog/CreateObjectPanel.tsx +3 -2
  128. package/src/components/CreateDialog/CreateSpaceDialog.tsx +1 -1
  129. package/src/components/MenuFooter.tsx +3 -2
  130. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +4 -4
  131. package/src/components/ObjectSettings/BaseObjectSettings.tsx +5 -4
  132. package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +3 -3
  133. package/src/components/SchemaContainer.tsx +3 -3
  134. package/src/components/SpacePresence.tsx +22 -15
  135. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +2 -1
  136. package/src/types/collection.ts +13 -4
  137. package/src/types/types.ts +5 -4
  138. package/src/util.tsx +26 -35
  139. package/dist/lib/browser/app-graph-builder-DCWUULKX.mjs.map +0 -7
  140. package/dist/lib/browser/app-graph-serializer-MLU7XI2P.mjs.map +0 -7
  141. package/dist/lib/browser/chunk-N5QMRLKI.mjs.map +0 -7
  142. package/dist/lib/browser/chunk-W46VVHFM.mjs.map +0 -7
  143. package/dist/lib/browser/chunk-ZQEIXWBK.mjs.map +0 -7
  144. package/dist/lib/browser/identity-created-O63SIYOF.mjs.map +0 -7
  145. package/dist/lib/browser/intent-resolver-PG473BRV.mjs.map +0 -7
  146. package/dist/lib/browser/react-surface-QOP7T66K.mjs.map +0 -7
  147. package/dist/lib/browser/schema-tools-JIEMHUXV.mjs.map +0 -7
  148. package/dist/lib/browser/settings-2IN2WLUK.mjs.map +0 -7
  149. package/dist/lib/browser/spaces-ready-L4QAGTDE.mjs.map +0 -7
  150. package/dist/lib/node/app-graph-builder-WC445X77.cjs.map +0 -7
  151. package/dist/lib/node/app-graph-serializer-UPQOQVMJ.cjs.map +0 -7
  152. package/dist/lib/node/chunk-COQYISES.cjs.map +0 -7
  153. package/dist/lib/node/chunk-FXHI7JNY.cjs.map +0 -7
  154. package/dist/lib/node/chunk-USFHJG7C.cjs.map +0 -7
  155. package/dist/lib/node/identity-created-UXEAUGC7.cjs.map +0 -7
  156. package/dist/lib/node/intent-resolver-VPVZSSIL.cjs.map +0 -7
  157. package/dist/lib/node/react-surface-ZIYDBL3C.cjs.map +0 -7
  158. package/dist/lib/node/schema-tools-ZG6Z2QRC.cjs.map +0 -7
  159. package/dist/lib/node/settings-FOH7EB5C.cjs.map +0 -7
  160. package/dist/lib/node/spaces-ready-VXQYCBII.cjs.map +0 -7
  161. package/dist/lib/node-esm/app-graph-builder-E7CCGPQJ.mjs.map +0 -7
  162. package/dist/lib/node-esm/app-graph-serializer-UCMSLPIA.mjs.map +0 -7
  163. package/dist/lib/node-esm/chunk-BE2BLE7K.mjs.map +0 -7
  164. package/dist/lib/node-esm/chunk-FTELJGEG.mjs.map +0 -7
  165. package/dist/lib/node-esm/chunk-XAZNQ3QN.mjs.map +0 -7
  166. package/dist/lib/node-esm/identity-created-ZECO4NH3.mjs.map +0 -7
  167. package/dist/lib/node-esm/intent-resolver-SK5LP5ZK.mjs.map +0 -7
  168. package/dist/lib/node-esm/react-surface-XNUWZCSH.mjs.map +0 -7
  169. package/dist/lib/node-esm/schema-tools-2Y4D42PD.mjs.map +0 -7
  170. package/dist/lib/node-esm/settings-Q4XDFSYD.mjs.map +0 -7
  171. package/dist/lib/node-esm/spaces-ready-JHKPD4PH.mjs.map +0 -7
  172. /package/dist/lib/browser/{chunk-VEBKN45O.mjs.map → chunk-TQPBDRXV.mjs.map} +0 -0
  173. /package/dist/lib/browser/{react-root-FRDC4UXB.mjs.map → react-root-ECO7G77L.mjs.map} +0 -0
  174. /package/dist/lib/node/{chunk-DXL5TDFP.cjs.map → chunk-SF3NU7EW.cjs.map} +0 -0
  175. /package/dist/lib/node/{react-root-JXLRINF3.cjs.map → react-root-Z2YM6JYC.cjs.map} +0 -0
  176. /package/dist/lib/node-esm/{chunk-OSPEGYX3.mjs.map → chunk-55OOAFBS.mjs.map} +0 -0
  177. /package/dist/lib/node-esm/{react-root-K2KRGIT7.mjs.map → react-root-FU2I5U2M.mjs.map} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/spaces-ready.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Option } from 'effect';\n\nimport { contributes, createIntent, type PluginContext, Capabilities, LayoutAction } from '@dxos/app-framework';\nimport { SubscriptionList } from '@dxos/async';\nimport { Expando } from '@dxos/echo-schema';\nimport { scheduledEffect } from '@dxos/echo-signals/core';\nimport { live } from '@dxos/live-object';\nimport { log } from '@dxos/log';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { DeckCapabilities } from '@dxos/plugin-deck';\nimport { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';\nimport { PublicKey } from '@dxos/react-client';\nimport { Filter, FQ_ID_LENGTH, parseFullyQualifiedId, SpaceState } from '@dxos/react-client/echo';\nimport { ComplexMap, reduceGroupBy } from '@dxos/util';\n\nimport { SpaceCapabilities } from './capabilities';\nimport { SpaceAction } 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\nexport default async (context: PluginContext) => {\n const subscriptions = new SubscriptionList();\n const spaceSubscriptions = new SubscriptionList();\n\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const { graph } = context.getCapability(Capabilities.AppGraph);\n const layout = context.getCapability(Capabilities.Layout);\n const deck = context.getCapability(DeckCapabilities.DeckState);\n const attention = context.getCapability(AttentionCapabilities.Attention);\n const state = context.getCapability(SpaceCapabilities.MutableState);\n const client = context.getCapability(ClientCapabilities.Client);\n\n const defaultSpace = client.spaces.default;\n await defaultSpace.waitUntilReady();\n\n if (deck.activeDeck === 'default') {\n await dispatch(createIntent(LayoutAction.SwitchWorkspace, { part: 'workspace', subject: defaultSpace.id }));\n }\n\n // Initialize space sharing lock in default space.\n if (typeof defaultSpace.properties[COMPOSER_SPACE_LOCK] !== 'boolean') {\n defaultSpace.properties[COMPOSER_SPACE_LOCK] = true;\n }\n\n const {\n objects: [spacesOrder],\n } = await defaultSpace.db.query(Filter.type(Expando, { key: SHARED })).run();\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(live({ key: SHARED, order: [] }));\n }\n\n // Await missing objects.\n subscriptions.add(\n scheduledEffect(\n () => ({ active: layout.active }),\n ({ active }) => {\n if (active.length !== 1) {\n return;\n }\n\n const node = graph.getNode(active[0]).pipe(Option.getOrNull);\n if (!node && active[0].length === FQ_ID_LENGTH) {\n const timeout = setTimeout(async () => {\n const node = graph.getNode(active[0]).pipe(Option.getOrNull);\n if (!node) {\n await dispatch(createIntent(SpaceAction.WaitForObject, { id: active[0] }));\n }\n }, WAIT_FOR_OBJECT_TIMEOUT);\n\n return () => clearTimeout(timeout);\n }\n },\n ),\n );\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 subscriptions.add(\n scheduledEffect(\n () => ({ name: space.properties.name }),\n ({ name }) => (state.spaceNames[space.id] = name),\n ),\n );\n });\n }).unsubscribe,\n );\n\n // Broadcast active node to other peers in the space.\n subscriptions.add(\n scheduledEffect(\n () => ({ current: attention.current, active: layout.active, inactive: layout.inactive }),\n ({ current, active, inactive }) => {\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) => {\n try {\n const [spaceId] = parseFullyQualifiedId(id);\n return spaceId;\n } catch {\n return null;\n }\n });\n\n const removedBySpace = reduceGroupBy(inactive, (id) => {\n try {\n const [spaceId] = parseFullyQualifiedId(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.', { err: err.message });\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 return () => clearInterval(interval);\n },\n ),\n );\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 added.forEach((id) => {\n if (typeof id === 'string') {\n if (!(id in state.viewersByObject)) {\n state.viewersByObject[id] = new ComplexMap(PublicKey.hash);\n }\n state.viewersByObject[id]!.set(identityKey, {\n lastSeen: Date.now(),\n currentlyAttended: new Set(attended).has(id),\n });\n if (!state.viewersByIdentity.has(identityKey)) {\n state.viewersByIdentity.set(identityKey, new Set());\n }\n state.viewersByIdentity.get(identityKey)!.add(id);\n }\n });\n\n removed.forEach((id) => {\n if (typeof id === 'string') {\n state.viewersByObject[id]?.delete(identityKey);\n state.viewersByIdentity.get(identityKey)?.delete(id);\n // It’s okay for these to be empty sets/maps, reduces churn.\n }\n });\n }\n }),\n );\n });\n }).unsubscribe,\n );\n\n // Enable edge replication for all spaces.\n try {\n await Promise.all(\n client.spaces.get().map((space) => space.internal.setEdgeReplicationPreference(EdgeReplicationSetting.ENABLED)),\n );\n state.enabledEdgeReplication = true;\n } catch (err) {\n log.catch(err);\n }\n\n return contributes(Capabilities.Null, null, () => {\n spaceSubscriptions.clear();\n subscriptions.clear();\n });\n};\n"],
5
- "mappings": "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",
6
- "names": ["Option", "contributes", "createIntent", "Capabilities", "LayoutAction", "SubscriptionList", "Expando", "scheduledEffect", "live", "log", "AttentionCapabilities", "ClientCapabilities", "DeckCapabilities", "EdgeReplicationSetting", "PublicKey", "Filter", "FQ_ID_LENGTH", "parseFullyQualifiedId", "SpaceState", "ComplexMap", "reduceGroupBy", "ACTIVE_NODE_BROADCAST_INTERVAL", "WAIT_FOR_OBJECT_TIMEOUT", "context", "subscriptions", "SubscriptionList", "spaceSubscriptions", "dispatchPromise", "dispatch", "getCapability", "Capabilities", "IntentDispatcher", "graph", "AppGraph", "layout", "Layout", "deck", "DeckCapabilities", "DeckState", "attention", "AttentionCapabilities", "Attention", "state", "SpaceCapabilities", "MutableState", "client", "ClientCapabilities", "Client", "defaultSpace", "spaces", "default", "waitUntilReady", "activeDeck", "createIntent", "LayoutAction", "SwitchWorkspace", "part", "subject", "id", "properties", "COMPOSER_SPACE_LOCK", "objects", "spacesOrder", "db", "query", "Filter", "type", "Expando", "key", "SHARED", "run", "add", "live", "order", "scheduledEffect", "active", "length", "node", "getNode", "pipe", "Option", "getOrNull", "FQ_ID_LENGTH", "timeout", "setTimeout", "SpaceAction", "WaitForObject", "clearTimeout", "subscribe", "get", "SpaceState", "SPACE_REQUIRES_MIGRATION", "internal", "migrate", "filter", "space", "SPACE_READY", "forEach", "name", "spaceNames", "unsubscribe", "current", "inactive", "send", "identity", "halo", "idsBySpace", "reduceGroupBy", "spaceId", "parseFullyQualifiedId", "removedBySpace", "has", "set", "added", "removed", "find", "postMessage", "identityKey", "toHex", "attended", "catch", "err", "log", "warn", "message", "interval", "setInterval", "clearInterval", "clear", "listen", "payload", "PublicKey", "safeFrom", "currentIdentity", "equals", "Array", "isArray", "viewersByObject", "ComplexMap", "hash", "lastSeen", "Date", "now", "currentlyAttended", "Set", "viewersByIdentity", "delete", "Promise", "all", "map", "setEdgeReplicationPreference", "EdgeReplicationSetting", "ENABLED", "enabledEdgeReplication", "contributes", "Null"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport { Array, Option, pipe } from 'effect';\n\nimport { Capabilities, contributes, createIntent, type PluginContext } from '@dxos/app-framework';\nimport {\n Expando,\n Filter,\n getSpace,\n isEchoObject,\n SpaceState,\n type Space,\n isSpace,\n type QueryResult,\n} from '@dxos/client/echo';\nimport { log } from '@dxos/log';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from '@dxos/plugin-deck/types';\nimport { createExtension, rxFromObservable, ROOT_ID, rxFromSignal } from '@dxos/plugin-graph';\nimport { isNonNullable } from '@dxos/util';\n\nimport { SpaceCapabilities } from './capabilities';\nimport { getActiveSpace } from '../hooks';\nimport { SPACE_PLUGIN } from '../meta';\nimport { CollectionType, SPACE_TYPE, SpaceAction, type SpaceSettingsProps } from '../types';\nimport {\n constructObjectActions,\n constructSpaceActions,\n constructSpaceNode,\n createObjectNode,\n rxFromQuery,\n SHARED,\n SPACES,\n} from '../util';\n\nexport default (context: PluginContext) => {\n const resolve = (typename: string) =>\n context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};\n\n const spacesNode = {\n id: SPACES,\n type: SPACES,\n cacheable: ['label', 'role'],\n properties: {\n label: ['spaces label', { ns: SPACE_PLUGIN }],\n icon: 'ph--planet--regular',\n testId: 'spacePlugin.spaces',\n role: 'branch',\n disposition: 'collection',\n disabled: true,\n childrenPersistenceClass: 'echo',\n onRearrangeChildren: async (nextOrder: Space[]) => {\n const { graph } = context.getCapability(Capabilities.AppGraph);\n const client = context.getCapability(ClientCapabilities.Client);\n\n // NOTE: This is needed to ensure order is updated by next animation frame.\n // TODO(wittjosiah): Is there a better way to do this?\n // If not, graph should be passed as an argument to the extension.\n graph.sortEdges(\n SPACES,\n 'outbound',\n nextOrder.map(({ id }) => id),\n );\n\n const {\n objects: [spacesOrder],\n } = await client.spaces.default.db.query(Filter.type(Expando, { key: SHARED })).run();\n if (spacesOrder) {\n spacesOrder.order = nextOrder.map(({ id }) => id);\n } else {\n log.warn('spaces order object not found');\n }\n },\n },\n };\n\n return contributes(Capabilities.AppGraphBuilder, [\n // Primary actions.\n createExtension({\n id: `${SPACE_PLUGIN}/primary-actions`,\n position: 'hoist',\n actions: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map(() => [\n {\n id: SpaceAction.OpenCreateSpace._tag,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n await dispatch(createIntent(SpaceAction.OpenCreateSpace));\n },\n properties: {\n label: ['create space label', { ns: SPACE_PLUGIN }],\n icon: 'ph--plus--regular',\n testId: 'spacePlugin.createSpace',\n disposition: 'menu',\n },\n },\n {\n id: SpaceAction.Join._tag,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n await dispatch(createIntent(SpaceAction.Join));\n },\n properties: {\n label: ['join space label', { ns: SPACE_PLUGIN }],\n icon: 'ph--sign-in--regular',\n testId: 'spacePlugin.joinSpace',\n disposition: 'menu',\n },\n },\n {\n id: SpaceAction.OpenMembers._tag,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const client = context.getCapability(ClientCapabilities.Client);\n const space = getActiveSpace(context) ?? client.spaces.default;\n await dispatch(createIntent(SpaceAction.OpenMembers, { space }));\n },\n properties: {\n label: ['share space label', { ns: SPACE_PLUGIN }],\n icon: 'ph--users--regular',\n testId: 'spacePlugin.shareSpace',\n keyBinding: {\n macos: 'meta+.',\n windows: 'alt+.',\n },\n },\n },\n {\n id: SpaceAction.OpenSettings._tag,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const client = context.getCapability(ClientCapabilities.Client);\n const space = getActiveSpace(context) ?? client.spaces.default;\n await dispatch(createIntent(SpaceAction.OpenSettings, { space }));\n },\n properties: {\n label: ['open current space settings label', { ns: SPACE_PLUGIN }],\n icon: 'ph--faders--regular',\n keyBinding: {\n macos: 'meta+shift+,',\n windows: 'ctrl+shift+,',\n },\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n // Create spaces group node.\n createExtension({\n id: `${SPACE_PLUGIN}/root`,\n position: 'hoist',\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map(() => [spacesNode]),\n Option.getOrElse(() => []),\n ),\n ),\n // resolver: ({ id }) => (id === SPACES ? spacesNode : undefined),\n }),\n\n // Create space nodes.\n createExtension({\n id: SPACES,\n connector: (node) => {\n let query: QueryResult<Expando> | undefined;\n return Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === SPACES ? Option.some(node) : Option.none())),\n Option.map(() => {\n const state = context.getCapability(SpaceCapabilities.State);\n const client = context.getCapability(ClientCapabilities.Client);\n const spacesRx = rxFromObservable(client.spaces);\n const isReadyRx = rxFromObservable(client.spaces.isReady);\n\n const spaces = get(spacesRx);\n const isReady = get(isReadyRx);\n\n if (!spaces || !isReady) {\n return [];\n }\n\n const settings = get(context.capabilities(Capabilities.SettingsStore))[0]?.getStore<SpaceSettingsProps>(\n SPACE_PLUGIN,\n )?.value;\n\n // TODO(wittjosiah): During client reset, accessing default space throws.\n try {\n if (!query) {\n query = client.spaces.default.db.query(Filter.type(Expando, { key: SHARED }));\n }\n const [spacesOrder] = get(rxFromQuery(query));\n return get(\n rxFromSignal(() => {\n const order: string[] = spacesOrder?.order ?? [];\n const orderMap = new Map(order.map((id, index) => [id, index]));\n return [\n ...spaces\n .filter((space) => orderMap.has(space.id))\n .sort((a, b) => orderMap.get(a.id)! - orderMap.get(b.id)!),\n ...spaces.filter((space) => !orderMap.has(space.id)),\n ]\n .filter((space) =>\n settings?.showHidden ? true : space.state.get() !== SpaceState.SPACE_INACTIVE,\n )\n .map((space) =>\n constructSpaceNode({\n space,\n navigable: state.navigableCollections,\n personal: space === client.spaces.default,\n namesCache: state.spaceNames,\n resolve,\n }),\n );\n }),\n );\n } catch {\n return [];\n }\n }),\n Option.getOrElse(() => []),\n ),\n );\n },\n // resolver: ({ id }) => {\n // if (id.length !== SPACE_ID_LENGTH) {\n // return;\n // }\n\n // const client = context.requestCapability(ClientCapabilities.Client);\n // const spaces = toSignal(\n // (onChange) => client.spaces.subscribe(() => onChange()).unsubscribe,\n // () => client.spaces.get(),\n // );\n\n // const isReady = toSignal(\n // (onChange) => client.spaces.isReady.subscribe(() => onChange()).unsubscribe,\n // () => client.spaces.isReady.get(),\n // );\n\n // if (!spaces || !isReady) {\n // return;\n // }\n\n // const space = spaces.find((space) => space.id === id);\n // if (!space) {\n // return;\n // }\n\n // if (space.state.get() === SpaceState.SPACE_INACTIVE) {\n // return false;\n // } else if (space.state.get() !== SpaceState.SPACE_READY) {\n // return undefined;\n // } else {\n // const state = context.requestCapability(SpaceCapabilities.State);\n // return constructSpaceNode({\n // space,\n // navigable: state.navigableCollections,\n // personal: space === client.spaces.default,\n // namesCache: state.spaceNames,\n // resolve,\n // });\n // }\n // },\n }),\n\n // Create space actions.\n createExtension({\n id: `${SPACE_PLUGIN}/actions`,\n actions: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) =>\n node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),\n ),\n Option.flatMap((space) => {\n const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));\n const [client] = get(context.capabilities(ClientCapabilities.Client));\n const [state] = get(context.capabilities(SpaceCapabilities.State));\n\n if (!dispatcher || !client || !state) {\n return Option.none();\n } else {\n return Option.some({\n space,\n dispatch: dispatcher.dispatchPromise,\n personal: space === client.spaces.default,\n migrating: state.sdkMigrationRunning[space.id],\n });\n }\n }),\n Option.map((params) => constructSpaceActions(params)),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n // Create nodes for objects in the root collection of a space.\n createExtension({\n id: `${SPACE_PLUGIN}/root-collection`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) =>\n node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),\n ),\n Option.map((space) => {\n const state = context.getCapability(SpaceCapabilities.State);\n\n const spaceState = get(rxFromObservable(space.state));\n if (spaceState !== SpaceState.SPACE_READY) {\n return [];\n }\n\n const collection = get(\n rxFromSignal(() => space.properties[CollectionType.typename]?.target as CollectionType | undefined),\n );\n if (!collection) {\n return [];\n }\n\n return get(\n rxFromSignal(() =>\n pipe(\n collection.objects,\n Array.map((object) => object.target),\n Array.filter(isNonNullable),\n Array.map((object) =>\n createObjectNode({\n object,\n space,\n resolve,\n navigable: state.navigableCollections,\n }),\n ),\n Array.filter(isNonNullable),\n ),\n ),\n );\n }),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n // Create nodes for objects in a collection or by its fully qualified id.\n createExtension({\n id: `${SPACE_PLUGIN}/objects`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.data instanceof CollectionType ? Option.some(node.data) : Option.none())),\n Option.map((collection) => {\n const state = context.getCapability(SpaceCapabilities.State);\n const space = getSpace(collection);\n\n return get(\n rxFromSignal(() =>\n pipe(\n collection.objects,\n Array.map((object) => object.target),\n Array.filter(isNonNullable),\n Array.map(\n (object) =>\n space && createObjectNode({ object, space, resolve, navigable: state.navigableCollections }),\n ),\n Array.filter(isNonNullable),\n ),\n ),\n );\n }),\n Option.getOrElse(() => []),\n ),\n ),\n // resolver: ({ id }) => {\n // if (id.length !== FQ_ID_LENGTH) {\n // return;\n // }\n\n // const [spaceId, objectId] = id.split(':');\n // if (spaceId.length !== SPACE_ID_LENGTH && objectId.length !== OBJECT_ID_LENGTH) {\n // return;\n // }\n\n // const client = context.requestCapability(ClientCapabilities.Client);\n // const space = client.spaces.get().find((space) => space.id === spaceId);\n // if (!space) {\n // return;\n // }\n\n // const spaceState = toSignal(\n // (onChange) => space.state.subscribe(() => onChange()).unsubscribe,\n // () => space.state.get(),\n // space.id,\n // );\n // if (spaceState !== SpaceState.SPACE_READY) {\n // return;\n // }\n\n // const [object] = memoizeQuery(space, Query.select(Filter.ids(objectId)));\n // if (!object) {\n // return;\n // }\n\n // if (isDeleted(object)) {\n // return false;\n // } else {\n // const state = context.requestCapability(SpaceCapabilities.State);\n // return createObjectNode({ object, space, resolve, navigable: state.navigableCollections });\n // }\n // },\n }),\n\n // Create collection actions and action groups.\n createExtension({\n id: `${SPACE_PLUGIN}/object-actions`,\n actions: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (isEchoObject(node.data) ? Option.some(node.data) : Option.none())),\n Option.flatMap((object) => {\n const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));\n const [appGraph] = get(context.capabilities(Capabilities.AppGraph));\n const [state] = get(context.capabilities(SpaceCapabilities.State));\n\n if (!dispatcher || !appGraph || !state) {\n return Option.none();\n } else {\n return Option.some({\n object,\n graph: appGraph.graph,\n dispatch: dispatcher.dispatchPromise,\n navigable: get(rxFromSignal(() => state.navigableCollections)),\n });\n }\n }),\n Option.map((params) => constructObjectActions(params)),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n // Object settings plank companion.\n createExtension({\n id: `${SPACE_PLUGIN}/settings`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (isEchoObject(node.data) ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: [node.id, 'settings'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'settings',\n properties: {\n label: ['object settings label', { ns: SPACE_PLUGIN }],\n icon: 'ph--sliders--regular',\n disposition: 'hidden',\n position: 'fallback',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n ]);\n};\n"],
5
- "mappings": "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",
6
- "names": ["context", "resolve", "typename", "getCapabilities", "Capabilities", "Metadata", "find", "id", "metadata", "spacesNode", "SPACES", "type", "cacheable", "properties", "label", "ns", "SPACE_PLUGIN", "icon", "testId", "role", "disposition", "disabled", "childrenPersistenceClass", "onRearrangeChildren", "nextOrder", "graph", "getCapability", "AppGraph", "client", "ClientCapabilities", "Client", "sortEdges", "map", "objects", "spacesOrder", "spaces", "default", "db", "query", "Filter", "Expando", "key", "SHARED", "run", "order", "log", "warn", "contributes", "AppGraphBuilder", "createExtension", "position", "actions", "node", "Rx", "make", "get", "pipe", "Option", "flatMap", "ROOT_ID", "some", "none", "SpaceAction", "OpenCreateSpace", "_tag", "data", "dispatchPromise", "dispatch", "IntentDispatcher", "createIntent", "Join", "OpenMembers", "space", "getActiveSpace", "keyBinding", "macos", "windows", "OpenSettings", "getOrElse", "connector", "state", "SpaceCapabilities", "State", "spacesRx", "rxFromObservable", "isReadyRx", "isReady", "settings", "capabilities", "SettingsStore", "getStore", "value", "rxFromQuery", "rxFromSignal", "orderMap", "Map", "index", "filter", "has", "sort", "a", "b", "showHidden", "SpaceState", "SPACE_INACTIVE", "constructSpaceNode", "navigable", "navigableCollections", "personal", "namesCache", "spaceNames", "SPACE_TYPE", "isSpace", "dispatcher", "migrating", "sdkMigrationRunning", "params", "constructSpaceActions", "spaceState", "SPACE_READY", "collection", "CollectionType", "target", "Array", "object", "isNonNullable", "createObjectNode", "getSpace", "isEchoObject", "appGraph", "constructObjectActions", "join", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/app-graph-serializer.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, createIntent, type PluginContext } from '@dxos/app-framework';\nimport { isSpace } from '@dxos/client/echo';\nimport { live } from '@dxos/live-object';\n\nimport { SPACE_PLUGIN } from '../meta';\nimport translations from '../translations';\nimport { CollectionType, SpaceAction, SPACE_TYPE } from '../types';\nimport { SPACES } from '../util';\n\n// https://stackoverflow.com/a/19016910\nconst DIRECTORY_TYPE = 'text/directory';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.AppGraphSerializer, [\n {\n inputType: SPACES,\n outputType: DIRECTORY_TYPE,\n serialize: (node) => ({\n name: translations[0]['en-US'][SPACE_PLUGIN]['spaces label'],\n data: translations[0]['en-US'][SPACE_PLUGIN]['spaces label'],\n type: DIRECTORY_TYPE,\n }),\n deserialize: () => {\n // No-op.\n },\n },\n {\n inputType: SPACE_TYPE,\n outputType: DIRECTORY_TYPE,\n serialize: (node) => ({\n name: node.data.properties.name ?? translations[0]['en-US'][SPACE_PLUGIN]['unnamed space label'],\n data: node.data.properties.name ?? translations[0]['en-US'][SPACE_PLUGIN]['unnamed space label'],\n type: DIRECTORY_TYPE,\n }),\n deserialize: async (data) => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const result = await dispatch(createIntent(SpaceAction.Create, { name: data.name, edgeReplication: true }));\n return result.data?.space;\n },\n },\n {\n inputType: CollectionType.typename,\n outputType: DIRECTORY_TYPE,\n serialize: (node) => ({\n name: node.data.name ?? translations[0]['en-US'][CollectionType.typename]['object name placeholder'],\n data: node.data.name ?? translations[0]['en-US'][CollectionType.typename]['object name placeholder'],\n type: DIRECTORY_TYPE,\n }),\n deserialize: async (data, ancestors) => {\n const space = ancestors.find(isSpace);\n const collection =\n ancestors.findLast((ancestor) => ancestor instanceof CollectionType) ??\n space?.properties[CollectionType.typename]?.target;\n if (!space || !collection) {\n return;\n }\n\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const result = await dispatch(\n createIntent(SpaceAction.AddObject, {\n target: collection,\n object: live(CollectionType, { name: data.name, objects: [], views: {} }),\n }),\n );\n\n return result.data?.object;\n },\n },\n ]);\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,2BAA4E;AAC5E,kBAAwB;AACxB,yBAAqB;AAQrB,IAAMA,iBAAiB;AAEvB,IAAA,+BAAe,CAACC,gBACdC,kCAAYC,kCAAaC,oBAAoB;EAC3C;IACEC,WAAWC;IACXC,YAAYP;IACZQ,WAAW,CAACC,UAAU;MACpBC,MAAMC,2CAAa,CAAA,EAAG,OAAA,EAASC,kCAAAA,EAAc,cAAA;MAC7CC,MAAMF,2CAAa,CAAA,EAAG,OAAA,EAASC,kCAAAA,EAAc,cAAA;MAC7CE,MAAMd;IACR;IACAe,aAAa,MAAA;IAEb;EACF;EACA;IACEV,WAAWW;IACXT,YAAYP;IACZQ,WAAW,CAACC,UAAU;MACpBC,MAAMD,KAAKI,KAAKI,WAAWP,QAAQC,2CAAa,CAAA,EAAG,OAAA,EAASC,kCAAAA,EAAc,qBAAA;MAC1EC,MAAMJ,KAAKI,KAAKI,WAAWP,QAAQC,2CAAa,CAAA,EAAG,OAAA,EAASC,kCAAAA,EAAc,qBAAA;MAC1EE,MAAMd;IACR;IACAe,aAAa,OAAOF,SAAAA;AAClB,YAAM,EAAEK,iBAAiBC,SAAQ,IAAKlB,QAAQmB,cAAcjB,kCAAakB,gBAAgB;AACzF,YAAMC,SAAS,MAAMH,aAASI,mCAAaC,kCAAYC,QAAQ;QAAEf,MAAMG,KAAKH;QAAMgB,iBAAiB;MAAK,CAAA,CAAA;AACxG,aAAOJ,OAAOT,MAAMc;IACtB;EACF;EACA;IACEtB,WAAWuB,qCAAeC;IAC1BtB,YAAYP;IACZQ,WAAW,CAACC,UAAU;MACpBC,MAAMD,KAAKI,KAAKH,QAAQC,2CAAa,CAAA,EAAG,OAAA,EAASiB,qCAAeC,QAAQ,EAAE,yBAAA;MAC1EhB,MAAMJ,KAAKI,KAAKH,QAAQC,2CAAa,CAAA,EAAG,OAAA,EAASiB,qCAAeC,QAAQ,EAAE,yBAAA;MAC1Ef,MAAMd;IACR;IACAe,aAAa,OAAOF,MAAMiB,cAAAA;AACxB,YAAMH,QAAQG,UAAUC,KAAKC,mBAAAA;AAC7B,YAAMC,aACJH,UAAUI,SAAS,CAACC,aAAaA,oBAAoBP,oCAAAA,KACrDD,OAAOV,WAAWW,qCAAeC,QAAQ,GAAGO;AAC9C,UAAI,CAACT,SAAS,CAACM,YAAY;AACzB;MACF;AAEA,YAAM,EAAEf,iBAAiBC,SAAQ,IAAKlB,QAAQmB,cAAcjB,kCAAakB,gBAAgB;AACzF,YAAMC,SAAS,MAAMH,aACnBI,mCAAaC,kCAAYa,WAAW;QAClCD,QAAQH;QACRK,YAAQC,yBAAKX,sCAAgB;UAAElB,MAAMG,KAAKH;UAAM8B,SAAS,CAAA;UAAIC,OAAO,CAAC;QAAE,CAAA;MACzE,CAAA,CAAA;AAGF,aAAOnB,OAAOT,MAAMyB;IACtB;EACF;CACD;",
6
- "names": ["DIRECTORY_TYPE", "context", "contributes", "Capabilities", "AppGraphSerializer", "inputType", "SPACES", "outputType", "serialize", "node", "name", "translations", "SPACE_PLUGIN", "data", "type", "deserialize", "SPACE_TYPE", "properties", "dispatchPromise", "dispatch", "getCapability", "IntentDispatcher", "result", "createIntent", "SpaceAction", "Create", "edgeReplication", "space", "CollectionType", "typename", "ancestors", "find", "isSpace", "collection", "findLast", "ancestor", "target", "AddObject", "object", "live", "objects", "views"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/util.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\n\nimport { createIntent, LayoutAction, type PromiseIntentDispatcher } from '@dxos/app-framework';\nimport { type BaseObject, EXPANDO_TYPENAME, getTypeAnnotation, getTypename, type Expando } from '@dxos/echo-schema';\nimport { getSchema } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { makeRef } from '@dxos/live-object';\nimport { Migrations } from '@dxos/migrations';\nimport {\n ACTION_GROUP_TYPE,\n ACTION_TYPE,\n type ReadableGraph,\n type ActionData,\n type InvokeParams,\n type Node,\n type NodeArg,\n} from '@dxos/plugin-graph';\nimport {\n fullyQualifiedId,\n getSpace,\n isEchoObject,\n type QueryResult,\n SpaceState,\n type AnyLiveObject,\n type Space,\n} from '@dxos/react-client/echo';\nimport { ATTENDABLE_PATH_SEPARATOR } from '@dxos/react-ui-attention';\n\nimport { SPACE_PLUGIN } from './meta';\nimport { CollectionType, SpaceAction, SPACE_TYPE } from './types';\n\nexport const SPACES = `${SPACE_PLUGIN}-spaces`;\nexport const COMPOSER_SPACE_LOCK = 'dxos.org/plugin/space/lock';\n// TODO(wittjosiah): Remove.\nexport const SHARED = 'shared-spaces';\n\n/**\n * Convert a query result to an Rx value of the objects.\n */\nexport const rxFromQuery = <T extends BaseObject>(query: QueryResult<T>): Rx.Rx<T[]> => {\n return Rx.make((get) => {\n const unsubscribe = query.subscribe((result) => {\n get.setSelf(result.objects);\n });\n\n get.addFinalizer(() => unsubscribe());\n\n return query.objects;\n });\n};\n\n// TODO(wittjosiah): Factor out? Expose via capability?\nexport const getSpaceDisplayName = (\n space: Space,\n { personal, namesCache = {} }: { personal?: boolean; namesCache?: Record<string, string> } = {},\n): string | [string, { ns: string }] => {\n return space.state.get() === SpaceState.SPACE_READY && (space.properties.name?.length ?? 0) > 0\n ? space.properties.name\n : namesCache[space.id]\n ? namesCache[space.id]\n : personal\n ? ['personal space label', { ns: SPACE_PLUGIN }]\n : ['unnamed space label', { ns: SPACE_PLUGIN }];\n};\n\nconst getCollectionGraphNodePartials = ({\n navigable,\n collection,\n space,\n resolve,\n}: {\n navigable: boolean;\n collection: CollectionType;\n space: Space;\n resolve: (typename: string) => Record<string, any>;\n}) => {\n return {\n acceptPersistenceClass: new Set(['echo']),\n acceptPersistenceKey: new Set([space.id]),\n role: 'branch',\n onRearrangeChildren: (nextOrder: unknown[]) => {\n // Change on disk.\n collection.objects = nextOrder.filter(isEchoObject).map(makeRef);\n },\n onTransferStart: (child: Node<AnyLiveObject<any>>, index?: number) => {\n // TODO(wittjosiah): Support transfer between spaces.\n // const childSpace = getSpace(child.data);\n // if (space && childSpace && !childSpace.key.equals(space.key)) {\n // // Create clone of child and add to destination space.\n // const newObject = clone(child.data, {\n // // TODO(wittjosiah): This needs to be generalized and not hardcoded here.\n // additional: [\n // child.data.content,\n // ...(child.data.objects ?? []),\n // ...(child.data.objects ?? []).map((object: TypedObject) => object.content),\n // ],\n // });\n // space.db.add(newObject);\n // collection.objects.push(newObject);\n // } else {\n\n // Add child to destination collection.\n // TODO(dmaretskyi): Compare by id.\n if (!collection.objects.find((object) => object.target === child.data)) {\n if (typeof index !== 'undefined') {\n collection.objects.splice(index, 0, makeRef(child.data));\n } else {\n collection.objects.push(makeRef(child.data));\n }\n }\n\n // }\n },\n onTransferEnd: (child: Node<AnyLiveObject<any>>, destination: Node) => {\n // Remove child from origin collection.\n const index = collection.objects.findIndex((object) => object.target === child.data);\n if (index > -1) {\n collection.objects.splice(index, 1);\n }\n\n // TODO(wittjosiah): Support transfer between spaces.\n // const childSpace = getSpace(child.data);\n // const destinationSpace =\n // destination.data instanceof SpaceProxy ? destination.data : getSpace(destination.data);\n // if (destinationSpace && childSpace && !childSpace.key.equals(destinationSpace.key)) {\n // // Mark child as deleted in origin space.\n // childSpace.db.remove(child.data);\n // }\n },\n onCopy: async (child: Node<AnyLiveObject<any>>, index?: number) => {\n // Create clone of child and add to destination space.\n const newObject = await cloneObject(child.data, resolve, space);\n space.db.add(newObject);\n if (typeof index !== 'undefined') {\n collection.objects.splice(index, 0, makeRef(newObject));\n } else {\n collection.objects.push(makeRef(newObject));\n }\n },\n };\n};\n\nconst checkPendingMigration = (space: Space) => {\n return (\n space.state.get() === SpaceState.SPACE_REQUIRES_MIGRATION ||\n (space.state.get() === SpaceState.SPACE_READY &&\n !!Migrations.versionProperty &&\n space.properties[Migrations.versionProperty] !== Migrations.targetVersion)\n );\n};\n\nexport const constructSpaceNode = ({\n space,\n navigable = false,\n personal,\n namesCache,\n resolve,\n}: {\n space: Space;\n navigable?: boolean;\n personal?: boolean;\n namesCache?: Record<string, string>;\n resolve: (typename: string) => Record<string, any>;\n}) => {\n const hasPendingMigration = checkPendingMigration(space);\n const collection = space.state.get() === SpaceState.SPACE_READY && space.properties[CollectionType.typename]?.target;\n const partials =\n space.state.get() === SpaceState.SPACE_READY && collection instanceof CollectionType\n ? getCollectionGraphNodePartials({ collection, space, resolve, navigable })\n : {};\n\n return {\n id: space.id,\n type: SPACE_TYPE,\n cacheable: ['label', 'icon', 'role'],\n data: space,\n properties: {\n ...partials,\n label: getSpaceDisplayName(space, { personal, namesCache }),\n description: space.state.get() === SpaceState.SPACE_READY && space.properties.description,\n hue: space.state.get() === SpaceState.SPACE_READY && space.properties.hue,\n icon:\n space.state.get() === SpaceState.SPACE_READY && space.properties.icon\n ? `ph--${space.properties.icon}--regular`\n : undefined,\n disabled: !navigable || space.state.get() !== SpaceState.SPACE_READY || hasPendingMigration,\n testId: 'spacePlugin.space',\n },\n nodes: [\n {\n id: `settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,\n type: `${SPACE_PLUGIN}/settings`,\n data: null,\n properties: {\n label: ['settings panel label', { ns: SPACE_PLUGIN }],\n icon: 'ph--faders--regular',\n disposition: 'alternate-tree',\n },\n nodes: [\n {\n id: `properties-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,\n type: `${SPACE_PLUGIN}/properties`,\n data: `${SPACE_PLUGIN}/properties`,\n properties: {\n label: ['space settings properties label', { ns: SPACE_PLUGIN }],\n icon: 'ph--sliders--regular',\n position: 'hoist',\n },\n },\n {\n id: `members-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,\n type: `${SPACE_PLUGIN}/members`,\n data: `${SPACE_PLUGIN}/members`,\n properties: {\n label: ['members panel label', { ns: SPACE_PLUGIN }],\n icon: 'ph--users--regular',\n position: 'hoist',\n },\n },\n {\n id: `schema-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,\n type: `${SPACE_PLUGIN}/schema`,\n data: `${SPACE_PLUGIN}/schema`,\n properties: {\n label: ['space settings schema label', { ns: SPACE_PLUGIN }],\n icon: 'ph--shapes--regular',\n },\n },\n ],\n },\n ],\n };\n};\n\nexport const constructSpaceActions = ({\n space,\n dispatch,\n personal,\n migrating,\n}: {\n space: Space;\n dispatch: PromiseIntentDispatcher;\n personal?: boolean;\n migrating?: boolean;\n}) => {\n const state = space.state.get();\n const hasPendingMigration = checkPendingMigration(space);\n const getId = (id: string) => `${id}/${space.id}`;\n const actions: NodeArg<ActionData>[] = [];\n\n if (hasPendingMigration) {\n actions.push({\n id: getId(SpaceAction.Migrate._tag),\n type: ACTION_GROUP_TYPE,\n data: async () => {\n await dispatch(createIntent(SpaceAction.Migrate, { space }));\n },\n properties: {\n label: ['migrate space label', { ns: SPACE_PLUGIN }],\n icon: 'ph--database--regular',\n disposition: 'list-item-primary',\n disabled: migrating || Migrations.running(space),\n },\n });\n }\n\n if (state === SpaceState.SPACE_READY && !hasPendingMigration) {\n actions.push(\n {\n id: getId(SpaceAction.OpenCreateObject._tag),\n type: ACTION_TYPE,\n data: async () => {\n await dispatch(createIntent(SpaceAction.OpenCreateObject, { target: space }));\n },\n properties: {\n label: ['create object in space label', { ns: SPACE_PLUGIN }],\n icon: 'ph--plus--regular',\n disposition: 'item',\n testId: 'spacePlugin.createObject',\n },\n },\n {\n id: getId(SpaceAction.Rename._tag),\n type: ACTION_TYPE,\n data: async (params?: InvokeParams) => {\n await dispatch(createIntent(SpaceAction.Rename, { space, caller: params?.caller }));\n },\n properties: {\n label: ['rename space label', { ns: SPACE_PLUGIN }],\n icon: 'ph--pencil-simple-line--regular',\n keyBinding: {\n macos: 'shift+F6',\n windows: 'shift+F6',\n },\n },\n },\n );\n }\n\n return actions;\n};\n\nexport const createObjectNode = ({\n object,\n space,\n navigable = false,\n resolve,\n}: {\n object: AnyLiveObject<any>;\n space: Space;\n navigable?: boolean;\n resolve: (typename: string) => Record<string, any>;\n}) => {\n const type = getTypename(object);\n if (!type) {\n return undefined;\n }\n\n const metadata = resolve(type);\n if (Object.keys(metadata).length === 0) {\n return undefined;\n }\n\n const partials =\n object instanceof CollectionType\n ? getCollectionGraphNodePartials({ collection: object, space, resolve, navigable })\n : metadata.graphProps;\n\n return {\n id: fullyQualifiedId(object),\n type,\n cacheable: ['label', 'icon', 'role'],\n data: object,\n properties: {\n ...partials,\n label: metadata.label?.(object) ||\n object.name || ['object name placeholder', { ns: type, default: 'New object' }],\n icon: metadata.icon ?? 'ph--placeholder--regular',\n testId: 'spacePlugin.object',\n persistenceClass: 'echo',\n persistenceKey: space?.id,\n },\n };\n};\n\nexport const constructObjectActions = ({\n object,\n graph,\n dispatch,\n navigable = false,\n}: {\n object: AnyLiveObject<any>;\n graph: ReadableGraph;\n dispatch: PromiseIntentDispatcher;\n navigable?: boolean;\n}) => {\n const space = getSpace(object);\n invariant(space, 'Space not found');\n const getId = (id: string) => `${id}/${fullyQualifiedId(object)}`;\n const actions: NodeArg<ActionData>[] = [\n ...(object instanceof CollectionType\n ? [\n {\n id: getId(SpaceAction.OpenCreateObject._tag),\n type: ACTION_TYPE,\n data: async () => {\n await dispatch(createIntent(SpaceAction.OpenCreateObject, { target: object }));\n },\n properties: {\n label: ['create object in collection label', { ns: SPACE_PLUGIN }],\n icon: 'ph--plus--regular',\n disposition: 'list-item-primary',\n testId: 'spacePlugin.createObject',\n },\n },\n ]\n : []),\n {\n id: getId(SpaceAction.RenameObject._tag),\n type: ACTION_TYPE,\n data: async (params?: InvokeParams) => {\n await dispatch(createIntent(SpaceAction.RenameObject, { object, caller: params?.caller }));\n },\n properties: {\n label: [\n object instanceof CollectionType ? 'rename collection label' : 'rename object label',\n { ns: SPACE_PLUGIN },\n ],\n icon: 'ph--pencil-simple-line--regular',\n // TODO(wittjosiah): Need's focus.\n keyBinding: {\n macos: 'shift+F6',\n },\n testId: 'spacePlugin.renameObject',\n },\n },\n {\n id: getId(SpaceAction.RemoveObjects._tag),\n type: ACTION_TYPE,\n data: async () => {\n const collection = graph\n .getConnections(fullyQualifiedId(object), 'inbound')\n .find(({ data }) => data instanceof CollectionType)?.data;\n await dispatch(createIntent(SpaceAction.RemoveObjects, { objects: [object], target: collection }));\n },\n properties: {\n label: [\n object instanceof CollectionType ? 'delete collection label' : 'delete object label',\n { ns: SPACE_PLUGIN },\n ],\n icon: 'ph--trash--regular',\n keyBinding: object instanceof CollectionType ? undefined : 'shift+meta+Backspace',\n testId: 'spacePlugin.deleteObject',\n },\n },\n ...(navigable || !(object instanceof CollectionType)\n ? [\n {\n id: getId('copy-link'),\n type: ACTION_TYPE,\n data: async () => {\n const url = `${window.location.origin}/${space.id}/${fullyQualifiedId(object)}`;\n await navigator.clipboard.writeText(url);\n },\n properties: {\n label: ['copy link label', { ns: SPACE_PLUGIN }],\n icon: 'ph--link--regular',\n testId: 'spacePlugin.copyLink',\n },\n },\n ]\n : []),\n // TODO(wittjosiah): Factor out and apply to all nodes.\n {\n id: getId(LayoutAction.Expose._tag),\n type: ACTION_TYPE,\n data: async () => {\n await dispatch(createIntent(LayoutAction.Expose, { part: 'navigation', subject: fullyQualifiedId(object) }));\n },\n properties: {\n label: ['expose object label', { ns: SPACE_PLUGIN }],\n icon: 'ph--eye--regular',\n testId: 'spacePlugin.exposeObject',\n },\n },\n ];\n\n return actions;\n};\n\n/**\n * @deprecated This is a temporary solution.\n */\nexport const getNestedObjects = async (\n object: AnyLiveObject<any>,\n resolve: (typename: string) => Record<string, any>,\n): Promise<AnyLiveObject<any>[]> => {\n const type = getTypename(object);\n if (!type) {\n return [];\n }\n\n const metadata = resolve(type);\n const loadReferences = metadata?.loadReferences;\n if (typeof loadReferences !== 'function') {\n return [];\n }\n\n const objects: AnyLiveObject<any>[] = await loadReferences(object);\n const nested = await Promise.all(objects.map((object) => getNestedObjects(object, resolve)));\n return [...objects, ...nested.flat()];\n};\n\n/**\n * @deprecated Workaround for ECHO not supporting clone.\n */\n// TODO(burdon): Remove.\nexport const cloneObject = async (\n object: Expando,\n resolve: (typename: string) => Record<string, any>,\n newSpace: Space,\n): Promise<Expando> => {\n const schema = getSchema(object);\n const typename = schema ? getTypeAnnotation(schema)?.typename ?? EXPANDO_TYPENAME : EXPANDO_TYPENAME;\n const metadata = resolve(typename);\n const serializer = metadata.serializer;\n invariant(serializer, `No serializer for type: ${typename}`);\n const content = await serializer.serialize({ object });\n return serializer.deserialize({ content, space: newSpace, newId: true });\n};\n"],
5
- "mappings": "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",
6
- "names": ["import_echo_schema", "SPACES", "SPACE_PLUGIN", "COMPOSER_SPACE_LOCK", "SHARED", "rxFromQuery", "query", "Rx", "make", "get", "unsubscribe", "subscribe", "result", "setSelf", "objects", "addFinalizer", "getSpaceDisplayName", "space", "personal", "namesCache", "state", "SpaceState", "SPACE_READY", "properties", "name", "length", "id", "ns", "getCollectionGraphNodePartials", "navigable", "collection", "resolve", "acceptPersistenceClass", "Set", "acceptPersistenceKey", "role", "onRearrangeChildren", "nextOrder", "filter", "isEchoObject", "map", "makeRef", "onTransferStart", "child", "index", "find", "object", "target", "data", "splice", "push", "onTransferEnd", "destination", "findIndex", "onCopy", "newObject", "cloneObject", "db", "add", "checkPendingMigration", "SPACE_REQUIRES_MIGRATION", "Migrations", "versionProperty", "targetVersion", "constructSpaceNode", "hasPendingMigration", "CollectionType", "typename", "partials", "type", "SPACE_TYPE", "cacheable", "label", "description", "hue", "icon", "undefined", "disabled", "testId", "nodes", "ATTENDABLE_PATH_SEPARATOR", "disposition", "position", "constructSpaceActions", "dispatch", "migrating", "getId", "actions", "SpaceAction", "Migrate", "_tag", "ACTION_GROUP_TYPE", "createIntent", "running", "OpenCreateObject", "ACTION_TYPE", "Rename", "params", "caller", "keyBinding", "macos", "windows", "createObjectNode", "getTypename", "metadata", "Object", "keys", "graphProps", "fullyQualifiedId", "default", "persistenceClass", "persistenceKey", "constructObjectActions", "graph", "getSpace", "invariant", "RenameObject", "RemoveObjects", "getConnections", "url", "window", "location", "origin", "navigator", "clipboard", "writeText", "LayoutAction", "Expose", "part", "subject", "getNestedObjects", "loadReferences", "nested", "Promise", "all", "flat", "newSpace", "schema", "getSchema", "getTypeAnnotation", "EXPANDO_TYPENAME", "serializer", "content", "serialize", "deserialize", "newId"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/collection.ts", "../../../src/types/types.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Expando, Ref, TypedObject } from '@dxos/echo-schema';\n\nexport class CollectionType extends TypedObject({ typename: 'dxos.org/type/Collection', version: '0.1.0' })({\n name: Schema.optional(Schema.String),\n objects: Schema.mutable(Schema.Array(Ref(Expando))),\n // Key is schema typename and value is reference to a view object of the associated schema.\n // Having collection reference the views rather than vice versa ensures that the state converges to a single view per key (i.e. type).\n // This also leaves open a future where this key could be changed to allow for multiple stack views per section.\n // TODO(wittjosiah): Any way to make this more type safe?\n // TODO(wittjosiah): Should the views be separate objects or just be schemas for view data in this record?\n views: Schema.mutable(Schema.Record({ key: Schema.String, value: Ref(Expando) })),\n}) {}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { type AnyIntentChain } from '@dxos/app-framework';\nimport { Expando, type BaseObject, type TypedObject } from '@dxos/echo-schema';\nimport { type PublicKey } from '@dxos/react-client';\n// TODO(wittjosiah): This pulls in full client.\nimport { EchoObjectSchema, ReactiveObjectSchema, type Space, SpaceSchema } from '@dxos/react-client/echo';\nimport { CancellableInvitationObservable, Invitation } from '@dxos/react-client/invitations';\nimport { type ComplexMap } from '@dxos/util';\n\nimport { CollectionType } from './collection';\nimport { SPACE_PLUGIN } from '../meta';\n\nexport const SPACE_DIRECTORY_HANDLE = 'dxos.org/plugin/space/directory';\nexport const SPACE_TYPE = 'dxos.org/type/Space';\n\nexport type ObjectViewerProps = {\n lastSeen: number;\n currentlyAttended: boolean;\n};\n\nexport type ObjectId = string;\n\nexport type PluginState = {\n /**\n * Which objects are currently being viewed by which peers.\n */\n viewersByObject: Record<ObjectId, ComplexMap<PublicKey, ObjectViewerProps>>;\n\n /**\n * Which peers are currently viewing which objects.\n */\n viewersByIdentity: ComplexMap<PublicKey, Set<ObjectId>>;\n\n /**\n * Object that was linked to directly but not found and is being awaited.\n */\n awaiting: string | undefined;\n\n /**\n * Cached space names, used when spaces are closed or loading.\n */\n spaceNames: Record<string, string>;\n\n /**\n * Which spaces have an SDK migration running currently.\n */\n // TODO(wittjosiah): Factor out to sdk. Migration running should probably be a space state.\n sdkMigrationRunning: Record<string, boolean>;\n\n /**\n * Whether or not the user can navigate to collections in the graph.\n * Determined by whether or not there is an available plugin that can render a collection.\n */\n navigableCollections: boolean;\n\n /**\n * Tracks whether setting edge replication as default has been run on spaces.\n */\n // TODO(wittjosiah): Systematic way to handle migrations of state outside of spaces.\n enabledEdgeReplication: boolean;\n};\n\nexport const SpaceSettingsSchema = Schema.mutable(\n Schema.Struct({\n /**\n * Show closed spaces.\n */\n showHidden: Schema.Boolean,\n }),\n);\n\nexport type SpaceSettingsProps = Schema.Schema.Type<typeof SpaceSettingsSchema>;\n\n// TODO(wittjosiah): Reconcile with graph export serializers.\n\nexport type SerializerMap = Record<string, TypedObjectSerializer>;\n\nexport interface TypedObjectSerializer<T extends Expando = Expando> {\n serialize(params: { object: T }): Promise<string>;\n\n /**\n * @param params.content\n * @param params.space Space to use for deserializing schema references.\n * @param params.newId Generate new ID for deserialized object.\n */\n deserialize(params: { content: string; space: Space; newId?: boolean }): Promise<T>;\n}\n\n// TODO(burdon): Move to FormatEnum or SDK.\nexport const IconAnnotationId = Symbol.for('@dxos/plugin-space/annotation/Icon');\nexport const HueAnnotationId = Symbol.for('@dxos/plugin-space/annotation/Hue');\n\nexport const SpaceForm = Schema.Struct({\n name: Schema.optional(Schema.String.annotations({ title: 'Name' })),\n icon: Schema.optional(Schema.String.annotations({ title: 'Icon', [IconAnnotationId]: true })),\n hue: Schema.optional(Schema.String.annotations({ title: 'Color', [HueAnnotationId]: true })),\n // TODO(wittjosiah): Make optional with default value.\n edgeReplication: Schema.Boolean.annotations({ title: 'Enable EDGE Replication' }),\n});\n\nexport type ObjectForm<T extends BaseObject = BaseObject> = {\n // TODO(dmaretskyi): Change to Schema.Schema.AnyNoContext\n objectSchema: TypedObject;\n formSchema?: Schema.Schema<T, any>;\n hidden?: boolean;\n getIntent: (props: T, options: { space: Space }) => AnyIntentChain;\n};\n\nexport const defineObjectForm = <T extends BaseObject>(form: ObjectForm<T>) => form;\n\nexport const SPACE_ACTION = `${SPACE_PLUGIN}/action`;\n\nexport namespace SpaceAction {\n export class OpenCreateSpace extends Schema.TaggedClass<OpenCreateSpace>()(`${SPACE_ACTION}/open-create-space`, {\n input: Schema.Void,\n output: Schema.Void,\n }) {}\n\n export class Create extends Schema.TaggedClass<Create>()(`${SPACE_ACTION}/create`, {\n input: SpaceForm,\n output: Schema.Struct({\n id: Schema.String,\n subject: Schema.Array(Schema.String),\n space: SpaceSchema,\n }),\n }) {}\n\n export class Join extends Schema.TaggedClass<Join>()(`${SPACE_ACTION}/join`, {\n input: Schema.Struct({\n invitationCode: Schema.optional(Schema.String),\n onDone: Schema.optional(Schema.Any),\n }),\n output: Schema.Void,\n }) {}\n\n export class OpenMembers extends Schema.TaggedClass<OpenMembers>()(`${SPACE_ACTION}/open-members`, {\n input: Schema.Struct({\n space: SpaceSchema,\n }),\n output: Schema.Void,\n }) {}\n\n export class Share extends Schema.TaggedClass<Share>()(`${SPACE_ACTION}/share`, {\n input: Schema.Struct({\n space: SpaceSchema,\n type: Schema.Enums(Invitation.Type),\n authMethod: Schema.Enums(Invitation.AuthMethod),\n multiUse: Schema.Boolean,\n target: Schema.optional(Schema.String),\n }),\n output: Schema.instanceOf(CancellableInvitationObservable),\n }) {}\n\n export class GetShareLink extends Schema.TaggedClass<GetShareLink>()(`${SPACE_ACTION}/get-share-link`, {\n input: Schema.Struct({\n space: SpaceSchema,\n target: Schema.optional(Schema.String),\n copyToClipboard: Schema.optional(Schema.Boolean),\n }),\n output: Schema.String,\n }) {}\n\n export class Lock extends Schema.TaggedClass<Lock>()(`${SPACE_ACTION}/lock`, {\n input: Schema.Struct({\n space: SpaceSchema,\n }),\n output: Schema.Void,\n }) {}\n\n export class Unlock extends Schema.TaggedClass<Unlock>()(`${SPACE_ACTION}/unlock`, {\n input: Schema.Struct({\n space: SpaceSchema,\n }),\n output: Schema.Void,\n }) {}\n\n export class Rename extends Schema.TaggedClass<Rename>()(`${SPACE_ACTION}/rename`, {\n input: Schema.Struct({\n space: SpaceSchema,\n caller: Schema.optional(Schema.String),\n }),\n output: Schema.Void,\n }) {}\n\n // TODO(wittjosiah): Handle scrolling to section.\n // This maybe motivates making the space settings its own deck?\n export class OpenSettings extends Schema.TaggedClass<OpenSettings>()(`${SPACE_ACTION}/open-settings`, {\n input: Schema.Struct({ space: SpaceSchema }),\n output: Schema.Void,\n }) {}\n\n export class Open extends Schema.TaggedClass<Open>()(`${SPACE_ACTION}/open`, {\n input: Schema.Struct({\n space: SpaceSchema,\n }),\n output: Schema.Void,\n }) {}\n\n export class Close extends Schema.TaggedClass<Close>()(`${SPACE_ACTION}/close`, {\n input: Schema.Struct({\n space: SpaceSchema,\n }),\n output: Schema.Void,\n }) {}\n\n export class Migrate extends Schema.TaggedClass<Migrate>()(`${SPACE_ACTION}/migrate`, {\n input: Schema.Struct({\n space: SpaceSchema,\n version: Schema.optional(Schema.String),\n }),\n output: Schema.Boolean,\n }) {}\n\n export class OpenCreateObject extends Schema.TaggedClass<OpenCreateObject>()(`${SPACE_ACTION}/open-create-object`, {\n input: Schema.Struct({\n target: Schema.Union(SpaceSchema, CollectionType),\n navigable: Schema.optional(Schema.Boolean),\n }),\n output: Schema.Void,\n }) {}\n\n export class AddObject extends Schema.TaggedClass<AddObject>()(`${SPACE_ACTION}/add-object`, {\n input: Schema.Struct({\n object: ReactiveObjectSchema,\n target: Schema.Union(SpaceSchema, CollectionType),\n hidden: Schema.optional(Schema.Boolean),\n }),\n output: Schema.Struct({\n id: Schema.String,\n subject: Schema.Array(Schema.String),\n object: EchoObjectSchema,\n }),\n }) {}\n\n export class AddRelation extends Schema.TaggedClass<AddRelation>()(`${SPACE_ACTION}/add-relation`, {\n input: Schema.Struct({\n space: SpaceSchema,\n // TODO(wittjosiah): Relation schema.\n schema: Schema.Any,\n source: Expando,\n target: Expando,\n // TODO(wittjosiah): Type based on relation schema.\n fields: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Any })),\n }),\n output: Schema.Struct({\n relation: Schema.Any,\n }),\n }) {}\n\n export const DeletionData = Schema.Struct({\n objects: Schema.Array(EchoObjectSchema),\n parentCollection: CollectionType,\n indices: Schema.Array(Schema.Number),\n nestedObjectsList: Schema.Array(Schema.Array(EchoObjectSchema)),\n wasActive: Schema.Array(Schema.String),\n });\n\n export type DeletionData = Schema.Schema.Type<typeof DeletionData>;\n\n export class RemoveObjects extends Schema.TaggedClass<RemoveObjects>()(`${SPACE_ACTION}/remove-objects`, {\n input: Schema.Struct({\n objects: Schema.Array(EchoObjectSchema),\n target: Schema.optional(CollectionType),\n deletionData: Schema.optional(DeletionData),\n }),\n output: Schema.Void,\n }) {}\n\n export class RenameObject extends Schema.TaggedClass<RenameObject>()(`${SPACE_ACTION}/rename-object`, {\n input: Schema.Struct({\n object: EchoObjectSchema,\n caller: Schema.optional(Schema.String),\n }),\n output: Schema.Void,\n }) {}\n\n export class DuplicateObject extends Schema.TaggedClass<DuplicateObject>()(`${SPACE_ACTION}/duplicate-object`, {\n input: Schema.Struct({\n object: EchoObjectSchema,\n target: Schema.Union(SpaceSchema, CollectionType),\n }),\n output: Schema.Void,\n }) {}\n\n export class WaitForObject extends Schema.TaggedClass<WaitForObject>()(`${SPACE_ACTION}/wait-for-object`, {\n input: Schema.Struct({\n id: Schema.optional(Schema.String),\n }),\n output: Schema.Void,\n }) {}\n}\n\nexport namespace CollectionAction {\n export class Create extends Schema.TaggedClass<Create>()('dxos.org/plugin/collection/action/create', {\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: CollectionType,\n }),\n }) {}\n}\n"],
5
- "mappings": "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",
6
- "names": ["import_effect", "import_echo_schema", "CollectionType", "TypedObject", "typename", "version", "name", "Schema", "optional", "String", "objects", "mutable", "Array", "Ref", "Expando", "views", "Record", "key", "value", "SPACE_DIRECTORY_HANDLE", "SPACE_TYPE", "SpaceSettingsSchema", "Struct", "showHidden", "Boolean", "IconAnnotationId", "Symbol", "for", "HueAnnotationId", "SpaceForm", "annotations", "title", "icon", "hue", "edgeReplication", "defineObjectForm", "form", "SPACE_ACTION", "SPACE_PLUGIN", "SpaceAction", "OpenCreateSpace", "TaggedClass", "input", "Void", "output", "Create", "id", "subject", "space", "SpaceSchema", "Join", "invitationCode", "onDone", "Any", "OpenMembers", "Share", "type", "Enums", "Invitation", "Type", "authMethod", "AuthMethod", "multiUse", "target", "instanceOf", "CancellableInvitationObservable", "GetShareLink", "copyToClipboard", "Lock", "Unlock", "Rename", "caller", "OpenSettings", "Open", "Close", "Migrate", "OpenCreateObject", "Union", "navigable", "AddObject", "object", "ReactiveObjectSchema", "hidden", "EchoObjectSchema", "AddRelation", "schema", "source", "fields", "relation", "DeletionData", "parentCollection", "indices", "Number", "nestedObjectsList", "wasActive", "RemoveObjects", "deletionData", "RenameObject", "DuplicateObject", "WaitForObject", "CollectionAction"]
7
- }