@dxos/plugin-space 0.8.2 → 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-Q4BTFH2P.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-KBF3YU6I.mjs → intent-resolver-K3ULKQ6V.mjs} +27 -29
  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-PVKJE4EZ.mjs → react-root-ECO7G77L.mjs} +4 -4
  20. package/dist/lib/browser/{react-surface-252P4NCK.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-Q3YZEYZT.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-SVFJKUH7.cjs → intent-resolver-XR4S7LME.cjs} +79 -81
  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-DDPDUMCG.cjs → react-root-Z2YM6JYC.cjs} +8 -8
  48. package/dist/lib/node/{react-surface-JUIU37BX.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-HL2Z2GNW.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-K2UDBF2R.mjs → intent-resolver-72KTB4S2.mjs} +27 -29
  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-6F7B3OVO.mjs → react-root-FU2I5U2M.mjs} +4 -4
  77. package/dist/lib/node-esm/{react-surface-NP3Y6BNZ.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 -25
  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-Q4BTFH2P.mjs.map +0 -7
  143. package/dist/lib/browser/chunk-W46VVHFM.mjs.map +0 -7
  144. package/dist/lib/browser/identity-created-O63SIYOF.mjs.map +0 -7
  145. package/dist/lib/browser/intent-resolver-KBF3YU6I.mjs.map +0 -7
  146. package/dist/lib/browser/react-surface-252P4NCK.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-Q3YZEYZT.cjs.map +0 -7
  155. package/dist/lib/node/identity-created-UXEAUGC7.cjs.map +0 -7
  156. package/dist/lib/node/intent-resolver-SVFJKUH7.cjs.map +0 -7
  157. package/dist/lib/node/react-surface-JUIU37BX.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-FTELJGEG.mjs.map +0 -7
  164. package/dist/lib/node-esm/chunk-HL2Z2GNW.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-K2UDBF2R.mjs.map +0 -7
  168. package/dist/lib/node-esm/react-surface-NP3Y6BNZ.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-PVKJE4EZ.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-DDPDUMCG.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-6F7B3OVO.mjs.map → react-root-FU2I5U2M.mjs.map} +0 -0
@@ -0,0 +1,7 @@
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 { Obj, Ref, Type } from '@dxos/echo';\nimport { EXPANDO_TYPENAME } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\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 { fullyQualifiedId, getSpace, type QueryResult, SpaceState, type Space } 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 Obj.Any>(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 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(Obj.isObject).map(Ref.make);\n },\n onTransferStart: (child: Node<Obj.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, Ref.make(child.data));\n } else {\n collection.objects.push(Ref.make(child.data));\n }\n }\n\n // }\n },\n onTransferEnd: (child: Node<Obj.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<Obj.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, Ref.make(newObject));\n } else {\n collection.objects.push(Ref.make(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 space,\n object,\n navigable = false,\n resolve,\n}: {\n space: Space;\n object: Obj.Any;\n navigable?: boolean;\n resolve: (typename: string) => Record<string, any>;\n}) => {\n const type = Obj.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 // TODO(burdon): Use annotation to get the name field.\n label: metadata.label?.(object) ||\n (object as any).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: Obj.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: Obj.Any,\n resolve: (typename: string) => Record<string, any>,\n): Promise<Obj.Any[]> => {\n const type = Obj.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: Obj.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: Type.Expando,\n resolve: (typename: string) => Record<string, any>,\n newSpace: Space,\n): Promise<Type.Expando> => {\n const schema = Obj.getSchema(object);\n const typename = schema ? Type.getTypename(schema) ?? 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": ["Rx", "createIntent", "LayoutAction", "Obj", "Ref", "Type", "EXPANDO_TYPENAME", "invariant", "Migrations", "ACTION_GROUP_TYPE", "ACTION_TYPE", "fullyQualifiedId", "getSpace", "SpaceState", "ATTENDABLE_PATH_SEPARATOR", "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", "Obj", "isObject", "map", "Ref", "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", "Type", "EXPANDO_TYPENAME", "serializer", "content", "serialize", "deserialize", "newId"]
7
+ }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CollectionType
3
- } from "./chunk-W46VVHFM.mjs";
3
+ } from "./chunk-LGEIVEYC.mjs";
4
4
  import {
5
5
  SPACE_PLUGIN
6
6
  } from "./chunk-PTKYMZWO.mjs";
@@ -150,4 +150,4 @@ var translations_default = [
150
150
  export {
151
151
  translations_default
152
152
  };
153
- //# sourceMappingURL=chunk-VEBKN45O.mjs.map
153
+ //# sourceMappingURL=chunk-TQPBDRXV.mjs.map
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  CollectionType
3
- } from "./chunk-W46VVHFM.mjs";
3
+ } from "./chunk-LGEIVEYC.mjs";
4
4
  import "./chunk-PTKYMZWO.mjs";
5
5
 
6
6
  // packages/plugins/plugin-space/src/capabilities/identity-created.ts
7
7
  import { contributes, Capabilities } from "@dxos/app-framework";
8
- import { live, makeRef } from "@dxos/live-object";
8
+ import { Obj, Ref } from "@dxos/echo";
9
9
  import { Migrations } from "@dxos/migrations";
10
10
  import { ClientCapabilities } from "@dxos/plugin-client";
11
11
  var identity_created_default = async (context) => {
@@ -13,7 +13,7 @@ var identity_created_default = async (context) => {
13
13
  await client.spaces.waitUntilReady();
14
14
  const defaultSpace = client.spaces.default;
15
15
  await defaultSpace.waitUntilReady();
16
- defaultSpace.properties[CollectionType.typename] = makeRef(live(CollectionType, {
16
+ defaultSpace.properties[CollectionType.typename] = Ref.make(Obj.make(CollectionType, {
17
17
  objects: [],
18
18
  views: {}
19
19
  }));
@@ -25,4 +25,4 @@ var identity_created_default = async (context) => {
25
25
  export {
26
26
  identity_created_default as default
27
27
  };
28
- //# sourceMappingURL=identity-created-O63SIYOF.mjs.map
28
+ //# sourceMappingURL=identity-created-EM6GZDNF.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/identity-created.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { contributes, type PluginContext, Capabilities } from '@dxos/app-framework';\nimport { Obj, Ref } from '@dxos/echo';\nimport { Migrations } from '@dxos/migrations';\nimport { ClientCapabilities } from '@dxos/plugin-client';\n\nimport { CollectionType } from '../types';\n\nexport default async (context: PluginContext) => {\n const client = context.getCapability(ClientCapabilities.Client);\n await client.spaces.waitUntilReady();\n\n const defaultSpace = client.spaces.default;\n await defaultSpace.waitUntilReady();\n\n // Create root collection structure.\n defaultSpace.properties[CollectionType.typename] = Ref.make(Obj.make(CollectionType, { objects: [], views: {} }));\n if (Migrations.versionProperty) {\n defaultSpace.properties[Migrations.versionProperty] = Migrations.targetVersion;\n }\n\n return contributes(Capabilities.Null, null);\n};\n"],
5
+ "mappings": ";;;;;;AAIA,SAASA,aAAiCC,oBAAoB;AAC9D,SAASC,KAAKC,WAAW;AACzB,SAASC,kBAAkB;AAC3B,SAASC,0BAA0B;AAInC,IAAA,2BAAe,OAAOC,YAAAA;AACpB,QAAMC,SAASD,QAAQE,cAAcC,mBAAmBC,MAAM;AAC9D,QAAMH,OAAOI,OAAOC,eAAc;AAElC,QAAMC,eAAeN,OAAOI,OAAOG;AACnC,QAAMD,aAAaD,eAAc;AAGjCC,eAAaE,WAAWC,eAAeC,QAAQ,IAAIC,IAAIC,KAAKC,IAAID,KAAKH,gBAAgB;IAAEK,SAAS,CAAA;IAAIC,OAAO,CAAC;EAAE,CAAA,CAAA;AAC9G,MAAIC,WAAWC,iBAAiB;AAC9BX,iBAAaE,WAAWQ,WAAWC,eAAe,IAAID,WAAWE;EACnE;AAEA,SAAOC,YAAYC,aAAaC,MAAM,IAAA;AACxC;",
6
+ "names": ["contributes", "Capabilities", "Obj", "Ref", "Migrations", "ClientCapabilities", "context", "client", "getCapability", "ClientCapabilities", "Client", "spaces", "waitUntilReady", "defaultSpace", "default", "properties", "CollectionType", "typename", "Ref", "make", "Obj", "objects", "views", "Migrations", "versionProperty", "targetVersion", "contributes", "Capabilities", "Null"]
7
+ }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  translations_default
3
- } from "./chunk-VEBKN45O.mjs";
3
+ } from "./chunk-TQPBDRXV.mjs";
4
4
  import {
5
5
  AppGraphBuilder,
6
6
  AppGraphSerializer,
@@ -41,7 +41,7 @@ import {
41
41
  SyncStatus,
42
42
  SyncStatusIndicator,
43
43
  useQuerySpaceSchemas
44
- } from "./chunk-Q4BTFH2P.mjs";
44
+ } from "./chunk-CF4FBDGP.mjs";
45
45
  import {
46
46
  getActiveSpace,
47
47
  useActiveSpace,
@@ -63,12 +63,12 @@ import {
63
63
  getNestedObjects,
64
64
  getSpaceDisplayName,
65
65
  rxFromQuery
66
- } from "./chunk-N5QMRLKI.mjs";
66
+ } from "./chunk-RRJIDXPY.mjs";
67
67
  import {
68
68
  CollectionAction,
69
69
  CollectionType,
70
70
  defineObjectForm
71
- } from "./chunk-W46VVHFM.mjs";
71
+ } from "./chunk-LGEIVEYC.mjs";
72
72
  import {
73
73
  SPACE_PLUGIN,
74
74
  meta
@@ -89,10 +89,10 @@ var ThreadEvents;
89
89
 
90
90
  // packages/plugins/plugin-space/src/SpacePlugin.tsx
91
91
  import { Schema } from "effect";
92
- import { allOf, Capabilities, contributes, createIntent, defineModule, definePlugin, Events as Events2, oneOf } from "@dxos/app-framework";
92
+ import { Capabilities, Events as Events2, allOf, contributes, createIntent, defineModule, definePlugin, oneOf } from "@dxos/app-framework";
93
+ import { Ref } from "@dxos/echo";
93
94
  import { AttentionEvents } from "@dxos/plugin-attention";
94
95
  import { ClientEvents } from "@dxos/plugin-client";
95
- import { RefArray } from "@dxos/react-client/echo";
96
96
  import { osTranslations } from "@dxos/shell/react";
97
97
  var SpacePlugin = ({ invitationUrl = window.location.origin, invitationParam = "spaceInvitationCode", observability = false } = {}) => {
98
98
  const createInvitationUrl = (invitationCode) => {
@@ -133,7 +133,7 @@ var SpacePlugin = ({ invitationUrl = window.location.origin, invitationParam = "
133
133
  metadata: {
134
134
  icon: "ph--cards-three--regular",
135
135
  // TODO(wittjosiah): Move out of metadata.
136
- loadReferences: async (collection) => await RefArray.loadAll([
136
+ loadReferences: async (collection) => await Ref.Array.loadAll([
137
137
  ...collection.objects,
138
138
  ...Object.values(collection.views)
139
139
  ])
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/events.ts", "../../../src/SpacePlugin.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineEvent, Events } from '@dxos/app-framework';\n\nimport { SPACE_PLUGIN } from './meta';\n\nexport namespace SpaceEvents {\n export const StateReady = Events.createStateEvent(`${SPACE_PLUGIN}/event/state-ready`);\n export const SetupSettingsPanel = defineEvent(`${SPACE_PLUGIN}/event/setup-settings-panel`);\n export const DefaultSpaceReady = defineEvent(`${SPACE_PLUGIN}/event/default-space-ready`);\n}\n\n// TODO(wittjosiah): Factor out.\nexport namespace ThreadEvents {\n export const SetupThread = defineEvent(`${SPACE_PLUGIN}/event/setup-thread`);\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport {\n allOf,\n Capabilities,\n contributes,\n createIntent,\n defineModule,\n definePlugin,\n Events,\n oneOf,\n} from '@dxos/app-framework';\nimport { AttentionEvents } from '@dxos/plugin-attention';\nimport { ClientEvents } from '@dxos/plugin-client';\nimport { RefArray } from '@dxos/react-client/echo';\nimport { osTranslations } from '@dxos/shell/react';\n\nimport {\n AppGraphBuilder,\n AppGraphSerializer,\n IdentityCreated,\n IntentResolver,\n ReactRoot,\n ReactSurface,\n SchemaDefs,\n SchemaTools,\n SpaceCapabilities,\n SpaceSettings,\n SpacesReady,\n SpaceState,\n} from './capabilities';\nimport { SpaceEvents } from './events';\nimport { meta } from './meta';\nimport translations from './translations';\nimport { CollectionAction, CollectionType, defineObjectForm } from './types';\n\nexport type SpacePluginOptions = {\n /**\n * Base URL for the invitation link.\n */\n invitationUrl?: string;\n\n /**\n * Query parameter for the invitation code.\n */\n invitationParam?: string;\n\n /**\n * Whether to send observability events.\n */\n observability?: boolean;\n};\n\nexport const SpacePlugin = ({\n invitationUrl = window.location.origin,\n invitationParam = 'spaceInvitationCode',\n observability = false,\n}: SpacePluginOptions = {}) => {\n const createInvitationUrl = (invitationCode: string) => {\n const baseUrl = new URL(invitationUrl);\n baseUrl.searchParams.set(invitationParam, invitationCode);\n return baseUrl.toString();\n };\n\n return definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/state`,\n // TODO(wittjosiah): Does not integrate with settings store.\n // Should this be a different event?\n // Should settings store be renamed to be more generic?\n activatesOn: oneOf(Events.SetupSettings, Events.SetupAppGraph),\n activatesAfter: [SpaceEvents.StateReady],\n activate: SpaceState,\n }),\n defineModule({\n id: `${meta.id}/module/settings`,\n activatesOn: Events.SetupSettings,\n activate: SpaceSettings,\n }),\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, [...translations, osTranslations]),\n }),\n defineModule({\n id: `${meta.id}/module/metadata`,\n activatesOn: Events.SetupMetadata,\n activate: () =>\n contributes(Capabilities.Metadata, {\n id: CollectionType.typename,\n metadata: {\n icon: 'ph--cards-three--regular',\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: async (collection: CollectionType) =>\n await RefArray.loadAll([...collection.objects, ...Object.values(collection.views)]),\n },\n }),\n }),\n defineModule({\n id: `${meta.id}/module/object-form`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () =>\n contributes(\n SpaceCapabilities.ObjectForm,\n defineObjectForm({\n objectSchema: CollectionType,\n formSchema: Schema.Struct({ name: Schema.optional(Schema.String) }),\n getIntent: (props) => createIntent(CollectionAction.Create, props),\n }),\n ),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.ClientReady,\n activatesBefore: [ClientEvents.SetupSchema],\n activate: SchemaDefs,\n }),\n defineModule({\n id: `${meta.id}/module/react-root`,\n activatesOn: Events.Startup,\n activate: ReactRoot,\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n // TODO(wittjosiah): Should occur before the settings dialog is loaded when surfaces activation is more granular.\n activatesBefore: [SpaceEvents.SetupSettingsPanel],\n activate: () => ReactSurface({ createInvitationUrl }),\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: (context) => IntentResolver({ context, createInvitationUrl, observability }),\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n // TODO(wittjosiah): This could probably be deferred.\n defineModule({\n id: `${meta.id}/module/app-graph-serializer`,\n activatesOn: Events.AppGraphReady,\n activate: AppGraphSerializer,\n }),\n defineModule({\n id: `${meta.id}/module/identity-created`,\n activatesOn: ClientEvents.IdentityCreated,\n activatesAfter: [SpaceEvents.DefaultSpaceReady],\n activate: IdentityCreated,\n }),\n defineModule({\n id: `${meta.id}/module/spaces-ready`,\n activatesOn: allOf(\n Events.DispatcherReady,\n Events.LayoutReady,\n Events.AppGraphReady,\n AttentionEvents.AttentionReady,\n SpaceEvents.StateReady,\n ClientEvents.SpacesReady,\n ),\n activate: SpacesReady,\n }),\n defineModule({\n id: `${meta.id}/module/tools`,\n activatesOn: Events.SetupArtifactDefinition,\n activate: SchemaTools,\n }),\n ]);\n};\n"],
5
- "mappings": "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",
6
- "names": ["defineEvent", "Events", "SpaceEvents", "StateReady", "Events", "createStateEvent", "SPACE_PLUGIN", "SetupSettingsPanel", "defineEvent", "DefaultSpaceReady", "ThreadEvents", "SetupThread", "Schema", "allOf", "Capabilities", "contributes", "createIntent", "defineModule", "definePlugin", "Events", "oneOf", "AttentionEvents", "ClientEvents", "RefArray", "osTranslations", "SpacePlugin", "invitationUrl", "window", "location", "origin", "invitationParam", "observability", "createInvitationUrl", "invitationCode", "baseUrl", "URL", "searchParams", "set", "toString", "definePlugin", "meta", "defineModule", "id", "activatesOn", "oneOf", "Events", "SetupSettings", "SetupAppGraph", "activatesAfter", "SpaceEvents", "StateReady", "activate", "SpaceState", "SpaceSettings", "SetupTranslations", "contributes", "Capabilities", "Translations", "translations", "osTranslations", "SetupMetadata", "Metadata", "CollectionType", "typename", "metadata", "icon", "loadReferences", "collection", "RefArray", "loadAll", "objects", "Object", "values", "views", "ClientEvents", "SetupSchema", "SpaceCapabilities", "ObjectForm", "defineObjectForm", "objectSchema", "formSchema", "Schema", "Struct", "name", "optional", "String", "getIntent", "props", "createIntent", "CollectionAction", "Create", "ClientReady", "activatesBefore", "SchemaDefs", "Startup", "ReactRoot", "SetupReactSurface", "SetupSettingsPanel", "ReactSurface", "SetupIntentResolver", "context", "IntentResolver", "AppGraphBuilder", "AppGraphReady", "AppGraphSerializer", "IdentityCreated", "DefaultSpaceReady", "allOf", "DispatcherReady", "LayoutReady", "AttentionEvents", "AttentionReady", "SpacesReady", "SetupArtifactDefinition", "SchemaTools"]
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineEvent, Events } from '@dxos/app-framework';\n\nimport { SPACE_PLUGIN } from './meta';\n\nexport namespace SpaceEvents {\n export const StateReady = Events.createStateEvent(`${SPACE_PLUGIN}/event/state-ready`);\n export const SetupSettingsPanel = defineEvent(`${SPACE_PLUGIN}/event/setup-settings-panel`);\n export const DefaultSpaceReady = defineEvent(`${SPACE_PLUGIN}/event/default-space-ready`);\n}\n\n// TODO(wittjosiah): Factor out.\nexport namespace ThreadEvents {\n export const SetupThread = defineEvent(`${SPACE_PLUGIN}/event/setup-thread`);\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport {\n Capabilities,\n Events,\n allOf,\n contributes,\n createIntent,\n defineModule,\n definePlugin,\n oneOf,\n} from '@dxos/app-framework';\nimport { Ref } from '@dxos/echo';\nimport { AttentionEvents } from '@dxos/plugin-attention';\nimport { ClientEvents } from '@dxos/plugin-client';\nimport { osTranslations } from '@dxos/shell/react';\n\nimport {\n AppGraphBuilder,\n AppGraphSerializer,\n IdentityCreated,\n IntentResolver,\n ReactRoot,\n ReactSurface,\n SchemaDefs,\n SchemaTools,\n SpaceCapabilities,\n SpaceSettings,\n SpacesReady,\n SpaceState,\n} from './capabilities';\nimport { SpaceEvents } from './events';\nimport { meta } from './meta';\nimport translations from './translations';\nimport { CollectionAction, CollectionType, defineObjectForm } from './types';\n\nexport type SpacePluginOptions = {\n /**\n * Base URL for the invitation link.\n */\n invitationUrl?: string;\n\n /**\n * Query parameter for the invitation code.\n */\n invitationParam?: string;\n\n /**\n * Whether to send observability events.\n */\n observability?: boolean;\n};\n\nexport const SpacePlugin = ({\n invitationUrl = window.location.origin,\n invitationParam = 'spaceInvitationCode',\n observability = false,\n}: SpacePluginOptions = {}) => {\n const createInvitationUrl = (invitationCode: string) => {\n const baseUrl = new URL(invitationUrl);\n baseUrl.searchParams.set(invitationParam, invitationCode);\n return baseUrl.toString();\n };\n\n return definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/state`,\n // TODO(wittjosiah): Does not integrate with settings store.\n // Should this be a different event?\n // Should settings store be renamed to be more generic?\n activatesOn: oneOf(Events.SetupSettings, Events.SetupAppGraph),\n activatesAfter: [SpaceEvents.StateReady],\n activate: SpaceState,\n }),\n defineModule({\n id: `${meta.id}/module/settings`,\n activatesOn: Events.SetupSettings,\n activate: SpaceSettings,\n }),\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, [...translations, osTranslations]),\n }),\n defineModule({\n id: `${meta.id}/module/metadata`,\n activatesOn: Events.SetupMetadata,\n activate: () =>\n contributes(Capabilities.Metadata, {\n id: CollectionType.typename,\n metadata: {\n icon: 'ph--cards-three--regular',\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: async (collection: CollectionType) =>\n await Ref.Array.loadAll([...collection.objects, ...Object.values(collection.views)]),\n },\n }),\n }),\n defineModule({\n id: `${meta.id}/module/object-form`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () =>\n contributes(\n SpaceCapabilities.ObjectForm,\n defineObjectForm({\n objectSchema: CollectionType,\n formSchema: Schema.Struct({ name: Schema.optional(Schema.String) }),\n getIntent: (props) => createIntent(CollectionAction.Create, props),\n }),\n ),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.ClientReady,\n activatesBefore: [ClientEvents.SetupSchema],\n activate: SchemaDefs,\n }),\n defineModule({\n id: `${meta.id}/module/react-root`,\n activatesOn: Events.Startup,\n activate: ReactRoot,\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n // TODO(wittjosiah): Should occur before the settings dialog is loaded when surfaces activation is more granular.\n activatesBefore: [SpaceEvents.SetupSettingsPanel],\n activate: () => ReactSurface({ createInvitationUrl }),\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: (context) => IntentResolver({ context, createInvitationUrl, observability }),\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n // TODO(wittjosiah): This could probably be deferred.\n defineModule({\n id: `${meta.id}/module/app-graph-serializer`,\n activatesOn: Events.AppGraphReady,\n activate: AppGraphSerializer,\n }),\n defineModule({\n id: `${meta.id}/module/identity-created`,\n activatesOn: ClientEvents.IdentityCreated,\n activatesAfter: [SpaceEvents.DefaultSpaceReady],\n activate: IdentityCreated,\n }),\n defineModule({\n id: `${meta.id}/module/spaces-ready`,\n activatesOn: allOf(\n Events.DispatcherReady,\n Events.LayoutReady,\n Events.AppGraphReady,\n AttentionEvents.AttentionReady,\n SpaceEvents.StateReady,\n ClientEvents.SpacesReady,\n ),\n activate: SpacesReady,\n }),\n defineModule({\n id: `${meta.id}/module/tools`,\n activatesOn: Events.SetupArtifactDefinition,\n activate: SchemaTools,\n }),\n ]);\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["defineEvent", "Events", "SpaceEvents", "StateReady", "Events", "createStateEvent", "SPACE_PLUGIN", "SetupSettingsPanel", "defineEvent", "DefaultSpaceReady", "ThreadEvents", "SetupThread", "Schema", "Capabilities", "Events", "allOf", "contributes", "createIntent", "defineModule", "definePlugin", "oneOf", "Ref", "AttentionEvents", "ClientEvents", "osTranslations", "SpacePlugin", "invitationUrl", "window", "location", "origin", "invitationParam", "observability", "createInvitationUrl", "invitationCode", "baseUrl", "URL", "searchParams", "set", "toString", "definePlugin", "meta", "defineModule", "id", "activatesOn", "oneOf", "Events", "SetupSettings", "SetupAppGraph", "activatesAfter", "SpaceEvents", "StateReady", "activate", "SpaceState", "SpaceSettings", "SetupTranslations", "contributes", "Capabilities", "Translations", "translations", "osTranslations", "SetupMetadata", "Metadata", "CollectionType", "typename", "metadata", "icon", "loadReferences", "collection", "Ref", "Array", "loadAll", "objects", "Object", "values", "views", "ClientEvents", "SetupSchema", "SpaceCapabilities", "ObjectForm", "defineObjectForm", "objectSchema", "formSchema", "Schema", "Struct", "name", "optional", "String", "getIntent", "props", "createIntent", "CollectionAction", "Create", "ClientReady", "activatesBefore", "SchemaDefs", "Startup", "ReactRoot", "SetupReactSurface", "SetupSettingsPanel", "ReactSurface", "SetupIntentResolver", "context", "IntentResolver", "AppGraphBuilder", "AppGraphReady", "AppGraphSerializer", "IdentityCreated", "DefaultSpaceReady", "allOf", "DispatcherReady", "LayoutReady", "AttentionEvents", "AttentionReady", "SpacesReady", "SetupArtifactDefinition", "SchemaTools"]
7
7
  }
@@ -4,7 +4,7 @@ import {
4
4
  JOIN_DIALOG,
5
5
  POPOVER_RENAME_OBJECT,
6
6
  POPOVER_RENAME_SPACE
7
- } from "./chunk-Q4BTFH2P.mjs";
7
+ } from "./chunk-CF4FBDGP.mjs";
8
8
  import "./chunk-7Y4M7GXO.mjs";
9
9
  import {
10
10
  SpaceCapabilities
@@ -13,27 +13,26 @@ import {
13
13
  COMPOSER_SPACE_LOCK,
14
14
  cloneObject,
15
15
  getNestedObjects
16
- } from "./chunk-N5QMRLKI.mjs";
16
+ } from "./chunk-RRJIDXPY.mjs";
17
17
  import {
18
18
  CollectionAction,
19
19
  CollectionType,
20
20
  SpaceAction
21
- } from "./chunk-W46VVHFM.mjs";
21
+ } from "./chunk-LGEIVEYC.mjs";
22
22
  import {
23
23
  SPACE_PLUGIN
24
24
  } from "./chunk-PTKYMZWO.mjs";
25
25
 
26
26
  // packages/plugins/plugin-space/src/capabilities/intent-resolver.ts
27
27
  import { Effect } from "effect";
28
- import { Capabilities, contributes, createIntent, createResolver, LayoutAction } from "@dxos/app-framework";
29
- import { getTypename, RelationSourceId, RelationTargetId } from "@dxos/echo-schema";
28
+ import { Capabilities, LayoutAction, contributes, createIntent, createResolver } from "@dxos/app-framework";
29
+ import { Obj, Ref, Relation } from "@dxos/echo";
30
30
  import { invariant } from "@dxos/invariant";
31
- import { live, makeRef } from "@dxos/live-object";
32
31
  import { Migrations } from "@dxos/migrations";
33
32
  import { ClientCapabilities } from "@dxos/plugin-client";
34
33
  import { ObservabilityAction } from "@dxos/plugin-observability/types";
35
34
  import { EdgeReplicationSetting } from "@dxos/protocols/proto/dxos/echo/metadata";
36
- import { isSpace, getSpace, SpaceState, fullyQualifiedId, isEchoObject } from "@dxos/react-client/echo";
35
+ import { isSpace, getSpace, SpaceState, fullyQualifiedId } from "@dxos/react-client/echo";
37
36
  import { Invitation, InvitationEncoder } from "@dxos/react-client/invitations";
38
37
  import { ATTENDABLE_PATH_SEPARATOR } from "@dxos/react-ui-attention";
39
38
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/capabilities/intent-resolver.ts";
@@ -68,11 +67,11 @@ var intent_resolver_default = ({ context, observability, createInvitationUrl })
68
67
  await space.internal.setEdgeReplicationPreference(EdgeReplicationSetting.ENABLED);
69
68
  }
70
69
  await space.waitUntilReady();
71
- const collection = live(CollectionType, {
70
+ const collection = Obj.make(CollectionType, {
72
71
  objects: [],
73
72
  views: {}
74
73
  });
75
- space.properties[CollectionType.typename] = makeRef(collection);
74
+ space.properties[CollectionType.typename] = Ref.make(collection);
76
75
  if (Migrations.versionProperty) {
77
76
  space.properties[Migrations.versionProperty] = Migrations.targetVersion;
78
77
  }
@@ -316,7 +315,7 @@ var intent_resolver_default = ({ context, observability, createInvitationUrl })
316
315
  const space = isSpace(target) ? target : getSpace(target);
317
316
  invariant(space, "Space not found.", {
318
317
  F: __dxlog_file,
319
- L: 333,
318
+ L: 332,
320
319
  S: void 0,
321
320
  A: [
322
321
  "space",
@@ -378,21 +377,21 @@ var intent_resolver_default = ({ context, observability, createInvitationUrl })
378
377
  };
379
378
  }
380
379
  if (target instanceof CollectionType) {
381
- target.objects.push(makeRef(object));
380
+ target.objects.push(Ref.make(object));
382
381
  } else if (isSpace(target) && hidden) {
383
382
  space.db.add(object);
384
383
  } else if (isSpace(target)) {
385
384
  const collection = space.properties[CollectionType.typename]?.target;
386
385
  if (collection instanceof CollectionType) {
387
- collection.objects.push(makeRef(object));
386
+ collection.objects.push(Ref.make(object));
388
387
  } else {
389
- const collection2 = live(CollectionType, {
388
+ const collection2 = Obj.make(CollectionType, {
390
389
  objects: [
391
- makeRef(object)
390
+ Ref.make(object)
392
391
  ],
393
392
  views: {}
394
393
  });
395
- space.properties[CollectionType.typename] = makeRef(collection2);
394
+ space.properties[CollectionType.typename] = Ref.make(collection2);
396
395
  }
397
396
  }
398
397
  return {
@@ -410,7 +409,7 @@ var intent_resolver_default = ({ context, observability, createInvitationUrl })
410
409
  properties: {
411
410
  spaceId: space.id,
412
411
  objectId: object.id,
413
- typename: getTypename(object)
412
+ typename: Obj.getTypename(object)
414
413
  }
415
414
  })
416
415
  ] : []
@@ -421,12 +420,11 @@ var intent_resolver_default = ({ context, observability, createInvitationUrl })
421
420
  createResolver({
422
421
  intent: SpaceAction.AddRelation,
423
422
  resolve: ({ space, schema, source, target, fields }) => {
424
- const relation = live(schema, {
425
- [RelationSourceId]: source,
426
- [RelationTargetId]: target,
423
+ const relation = space.db.add(Obj.make(schema, {
424
+ [Relation.Source]: source,
425
+ [Relation.Target]: target,
427
426
  ...fields
428
- });
429
- space.db.add(relation);
427
+ }));
430
428
  return {
431
429
  data: {
432
430
  relation
@@ -439,12 +437,12 @@ var intent_resolver_default = ({ context, observability, createInvitationUrl })
439
437
  resolve: async ({ objects, target, deletionData }, undo) => {
440
438
  const layout = context.getCapability(Capabilities.Layout);
441
439
  const space = getSpace(objects[0]);
442
- invariant(space && objects.every((obj) => isEchoObject(obj) && getSpace(obj) === space), void 0, {
440
+ invariant(space && objects.every((obj) => Obj.isObject(obj) && getSpace(obj) === space), void 0, {
443
441
  F: __dxlog_file,
444
- L: 424,
442
+ L: 429,
445
443
  S: void 0,
446
444
  A: [
447
- "space && objects.every((obj) => isEchoObject(obj) && getSpace(obj) === space)",
445
+ "space && objects.every((obj) => Obj.isObject(obj) && getSpace(obj) === space)",
448
446
  ""
449
447
  ]
450
448
  });
@@ -500,14 +498,14 @@ var intent_resolver_default = ({ context, observability, createInvitationUrl })
500
498
  ] : void 0
501
499
  };
502
500
  } else {
503
- if (deletionData?.objects?.length && deletionData.objects.every(isEchoObject) && deletionData.parentCollection instanceof CollectionType) {
501
+ if (deletionData?.objects?.length && deletionData.objects.every(Obj.isObject) && deletionData.parentCollection instanceof CollectionType) {
504
502
  const restoredObjects = deletionData.objects.map((obj) => space.db.add(obj));
505
503
  deletionData.nestedObjectsList.flat().forEach((obj) => {
506
504
  space.db.add(obj);
507
505
  });
508
506
  deletionData.indices.forEach((index, i) => {
509
507
  if (index !== -1) {
510
- deletionData.parentCollection.objects.splice(index, 0, makeRef(restoredObjects[i]));
508
+ deletionData.parentCollection.objects.splice(index, 0, Ref.make(restoredObjects[i]));
511
509
  }
512
510
  });
513
511
  return {
@@ -543,7 +541,7 @@ var intent_resolver_default = ({ context, observability, createInvitationUrl })
543
541
  const space = isSpace(target) ? target : getSpace(target);
544
542
  invariant(space, "Space not found.", {
545
543
  F: __dxlog_file,
546
- L: 538,
544
+ L: 543,
547
545
  S: void 0,
548
546
  A: [
549
547
  "space",
@@ -572,7 +570,7 @@ var intent_resolver_default = ({ context, observability, createInvitationUrl })
572
570
  intent: CollectionAction.Create,
573
571
  resolve: async ({ name }) => ({
574
572
  data: {
575
- object: live(CollectionType, {
573
+ object: Obj.make(CollectionType, {
576
574
  name,
577
575
  objects: [],
578
576
  views: {}
@@ -585,4 +583,4 @@ var intent_resolver_default = ({ context, observability, createInvitationUrl })
585
583
  export {
586
584
  intent_resolver_default as default
587
585
  };
588
- //# sourceMappingURL=intent-resolver-KBF3YU6I.mjs.map
586
+ //# sourceMappingURL=intent-resolver-K3ULKQ6V.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/intent-resolver.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Effect } from 'effect';\n\nimport {\n Capabilities,\n LayoutAction,\n type PluginContext,\n contributes,\n createIntent,\n createResolver,\n} from '@dxos/app-framework';\nimport { Obj, Ref, Relation, type Type } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { Migrations } from '@dxos/migrations';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';\nimport { isSpace, getSpace, SpaceState, fullyQualifiedId } from '@dxos/react-client/echo';\nimport { Invitation, InvitationEncoder } from '@dxos/react-client/invitations';\nimport { ATTENDABLE_PATH_SEPARATOR } from '@dxos/react-ui-attention';\n\nimport { SpaceCapabilities } from './capabilities';\nimport {\n CREATE_OBJECT_DIALOG,\n CREATE_SPACE_DIALOG,\n JOIN_DIALOG,\n POPOVER_RENAME_OBJECT,\n POPOVER_RENAME_SPACE,\n type CreateObjectDialogProps,\n type JoinDialogProps,\n} from '../components';\nimport { SPACE_PLUGIN } from '../meta';\nimport { CollectionAction, CollectionType, SpaceAction } from '../types';\nimport { cloneObject, COMPOSER_SPACE_LOCK, getNestedObjects } from '../util';\n\n// TODO(wittjosiah): Remove.\nconst SPACE_MAX_OBJECTS = 500;\n\ntype IntentResolverOptions = {\n context: PluginContext;\n createInvitationUrl: (invitationCode: string) => string;\n observability?: boolean;\n};\n\nexport default ({ context, observability, createInvitationUrl }: IntentResolverOptions) => {\n const resolve = (typename: string) =>\n context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};\n\n return contributes(Capabilities.IntentResolver, [\n createResolver({\n intent: SpaceAction.OpenCreateSpace,\n resolve: () => ({\n intents: [\n createIntent(LayoutAction.UpdateDialog, {\n part: 'dialog',\n subject: CREATE_SPACE_DIALOG,\n options: {\n blockAlign: 'start',\n },\n }),\n ],\n }),\n }),\n createResolver({\n intent: SpaceAction.Create,\n resolve: async ({ name, hue, icon, edgeReplication }) => {\n const client = context.getCapability(ClientCapabilities.Client);\n const space = await client.spaces.create({ name, hue, icon });\n if (edgeReplication) {\n await space.internal.setEdgeReplicationPreference(EdgeReplicationSetting.ENABLED);\n }\n await space.waitUntilReady();\n const collection = Obj.make(CollectionType, { objects: [], views: {} });\n space.properties[CollectionType.typename] = Ref.make(collection);\n\n if (Migrations.versionProperty) {\n space.properties[Migrations.versionProperty] = Migrations.targetVersion;\n }\n\n return {\n data: {\n id: space.id,\n subject: [space.id],\n space,\n },\n intents: [\n ...(observability\n ? [\n createIntent(ObservabilityAction.SendEvent, {\n name: 'space.create',\n properties: {\n spaceId: space.id,\n },\n }),\n ]\n : []),\n ],\n };\n },\n }),\n createResolver({\n intent: SpaceAction.Join,\n resolve: ({ invitationCode, onDone }) => ({\n intents: [\n createIntent(LayoutAction.UpdateDialog, {\n part: 'dialog',\n subject: JOIN_DIALOG,\n options: {\n blockAlign: 'start',\n props: {\n initialInvitationCode: invitationCode,\n onDone,\n } satisfies Partial<JoinDialogProps>,\n },\n }),\n ],\n }),\n }),\n createResolver({\n intent: SpaceAction.OpenMembers,\n resolve: ({ space }) => ({\n intents: [\n createIntent(LayoutAction.Open, {\n part: 'main',\n subject: [`members-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`],\n options: {\n workspace: space.id,\n },\n }),\n ],\n }),\n }),\n createResolver({\n intent: SpaceAction.Share,\n resolve: ({ space, type, authMethod, multiUse, target }) => {\n const invitation = space.share({ type, authMethod, multiUse, target });\n return {\n data: invitation,\n intents: observability\n ? [\n createIntent(ObservabilityAction.SendEvent, {\n name: 'space.share',\n properties: {\n spaceId: space.id,\n },\n }),\n ]\n : [],\n };\n },\n }),\n createResolver({\n intent: SpaceAction.GetShareLink,\n resolve: ({ space, target, copyToClipboard }) =>\n Effect.gen(function* () {\n const { dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const invitation = yield* dispatch(\n createIntent(SpaceAction.Share, {\n space,\n type: Invitation.Type.DELEGATED,\n authMethod: Invitation.AuthMethod.KNOWN_PUBLIC_KEY,\n multiUse: true,\n target,\n }),\n );\n\n // TODO(wittjosiah): Better api to for this.\n // NOTE: Delegated invitations are invalid until the connecting state when keys are filled in.\n const invitationCode = yield* Effect.tryPromise(\n () =>\n new Promise<string>((resolve) => {\n invitation.subscribe((invitation) => {\n if (invitation.state === Invitation.State.CONNECTING) {\n resolve(InvitationEncoder.encode(invitation));\n }\n });\n }),\n );\n const url = createInvitationUrl(invitationCode);\n if (copyToClipboard) {\n yield* Effect.tryPromise(() => navigator.clipboard.writeText(url));\n }\n\n return { data: url };\n }),\n }),\n createResolver({\n intent: SpaceAction.Lock,\n resolve: ({ space }) => {\n space.properties[COMPOSER_SPACE_LOCK] = true;\n return {\n intents: [\n ...(observability\n ? [\n createIntent(ObservabilityAction.SendEvent, {\n name: 'space.lock',\n properties: {\n spaceId: space.id,\n },\n }),\n ]\n : []),\n ],\n };\n },\n }),\n createResolver({\n intent: SpaceAction.Unlock,\n resolve: ({ space }) => {\n space.properties[COMPOSER_SPACE_LOCK] = false;\n return {\n intents: [\n ...(observability\n ? [\n createIntent(ObservabilityAction.SendEvent, {\n name: 'space.unlock',\n properties: {\n spaceId: space.id,\n },\n }),\n ]\n : []),\n ],\n };\n },\n }),\n createResolver({\n intent: SpaceAction.Rename,\n resolve: ({ caller, space }) => {\n return {\n intents: [\n createIntent(LayoutAction.UpdatePopover, {\n part: 'popover',\n subject: POPOVER_RENAME_SPACE,\n options: {\n anchorId: `dxos.org/ui/${caller}/${space.id}`,\n props: space,\n },\n }),\n ],\n };\n },\n }),\n createResolver({\n intent: SpaceAction.OpenSettings,\n resolve: ({ space }) => ({\n intents: [\n createIntent(LayoutAction.Open, {\n part: 'main',\n subject: [`properties-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`],\n options: {\n workspace: space.id,\n },\n }),\n ],\n }),\n }),\n createResolver({\n intent: SpaceAction.Open,\n resolve: async ({ space }) => {\n await space.open();\n },\n }),\n createResolver({\n intent: SpaceAction.Close,\n resolve: async ({ space }) => {\n await space.close();\n },\n }),\n createResolver({\n intent: SpaceAction.Migrate,\n resolve: async ({ space, version: targetVersion }) => {\n const state = context.getCapability(SpaceCapabilities.MutableState);\n\n if (space.state.get() === SpaceState.SPACE_REQUIRES_MIGRATION) {\n state.sdkMigrationRunning[space.id] = true;\n await space.internal.migrate();\n state.sdkMigrationRunning[space.id] = false;\n }\n const result = await Migrations.migrate(space, targetVersion);\n const version = Migrations.versionProperty ? space.properties[Migrations.versionProperty] : undefined;\n return {\n data: result,\n intents: [\n ...(observability\n ? [\n createIntent(ObservabilityAction.SendEvent, {\n name: 'space.migrate',\n properties: {\n spaceId: space.id,\n targetVersion,\n version,\n },\n }),\n ]\n : []),\n ],\n };\n },\n }),\n createResolver({\n intent: SpaceAction.OpenCreateObject,\n resolve: ({ target, navigable = true }) => {\n const state = context.getCapability(SpaceCapabilities.State);\n\n return {\n intents: [\n createIntent(LayoutAction.UpdateDialog, {\n part: 'dialog',\n subject: CREATE_OBJECT_DIALOG,\n options: {\n blockAlign: 'start',\n props: {\n target,\n shouldNavigate: navigable\n ? (object: Obj.Any) => !(object instanceof CollectionType) || state.navigableCollections\n : () => false,\n } satisfies Partial<CreateObjectDialogProps>,\n },\n }),\n ],\n };\n },\n }),\n createResolver({\n intent: SpaceAction.AddObject,\n resolve: async ({ target, object, hidden }) => {\n const space = isSpace(target) ? target : getSpace(target);\n invariant(space, 'Space not found.');\n\n if (space.db.coreDatabase.getAllObjectIds().length >= SPACE_MAX_OBJECTS) {\n return {\n error: new Error('Space limit reached.'),\n intents: [\n createIntent(LayoutAction.AddToast, {\n part: 'toast',\n subject: {\n id: `${SPACE_PLUGIN}/space-limit`,\n title: ['space limit label', { ns: SPACE_PLUGIN }],\n description: ['space limit description', { ns: SPACE_PLUGIN }],\n duration: 5_000,\n icon: 'ph--warning--regular',\n actionLabel: ['remove deleted objects label', { ns: SPACE_PLUGIN }],\n actionAlt: ['remove deleted objects alt', { ns: SPACE_PLUGIN }],\n closeLabel: ['close label', { ns: 'os' }],\n onAction: () => space.db.coreDatabase.unlinkDeletedObjects(),\n },\n }),\n ...(observability\n ? [\n createIntent(ObservabilityAction.SendEvent, {\n name: 'space.limit',\n properties: {\n spaceId: space.id,\n },\n }),\n ]\n : []),\n ],\n };\n }\n\n if (target instanceof CollectionType) {\n target.objects.push(Ref.make(object));\n } else if (isSpace(target) && hidden) {\n space.db.add(object);\n } else if (isSpace(target)) {\n const collection = space.properties[CollectionType.typename]?.target;\n if (collection instanceof CollectionType) {\n collection.objects.push(Ref.make(object));\n } else {\n // TODO(wittjosiah): Can't add non-echo objects by including in a collection because of types.\n const collection = Obj.make(CollectionType, { objects: [Ref.make(object)], views: {} });\n space.properties[CollectionType.typename] = Ref.make(collection);\n }\n }\n\n return {\n data: {\n id: fullyQualifiedId(object),\n subject: [fullyQualifiedId(object)],\n object,\n },\n intents: [\n ...(observability\n ? [\n createIntent(ObservabilityAction.SendEvent, {\n name: 'space.object.add',\n properties: {\n spaceId: space.id,\n objectId: object.id,\n typename: Obj.getTypename(object),\n },\n }),\n ]\n : []),\n ],\n };\n },\n }),\n createResolver({\n intent: SpaceAction.AddRelation,\n resolve: ({ space, schema, source, target, fields }) => {\n const relation = space.db.add(\n Obj.make(schema, {\n [Relation.Source]: source,\n [Relation.Target]: target,\n ...fields,\n }),\n );\n\n return {\n data: {\n relation,\n },\n };\n },\n }),\n createResolver({\n intent: SpaceAction.RemoveObjects,\n resolve: async ({ objects, target, deletionData }, undo) => {\n const layout = context.getCapability(Capabilities.Layout);\n\n // All objects must be a member of the same space.\n const space = getSpace(objects[0]);\n invariant(space && objects.every((obj) => Obj.isObject(obj) && getSpace(obj) === space));\n const openObjectIds = new Set<string>(layout.active);\n\n if (!undo) {\n const parentCollection: CollectionType = target ?? space.properties[CollectionType.typename]?.target;\n const nestedObjectsList = await Promise.all(objects.map((obj) => getNestedObjects(obj, resolve)));\n\n const deletionData = {\n objects,\n parentCollection,\n indices: objects.map((obj) =>\n parentCollection instanceof CollectionType\n ? parentCollection.objects.findIndex((object) => object.target === obj)\n : -1,\n ),\n nestedObjectsList,\n wasActive: objects\n .flatMap((obj, i) => [obj, ...nestedObjectsList[i]])\n .map((obj) => fullyQualifiedId(obj))\n .filter((id) => openObjectIds.has(id)),\n } satisfies SpaceAction.DeletionData;\n\n if (deletionData.parentCollection instanceof CollectionType) {\n [...deletionData.indices]\n .sort((a, b) => b - a)\n .forEach((index: number) => {\n if (index !== -1) {\n deletionData.parentCollection.objects.splice(index, 1);\n }\n });\n }\n\n deletionData.nestedObjectsList.flat().forEach((obj) => {\n space.db.remove(obj);\n });\n objects.forEach((obj) => space.db.remove(obj));\n\n const undoMessageKey = objects.some((obj) => obj instanceof CollectionType)\n ? 'collection deleted label'\n : objects.length > 1\n ? 'objects deleted label'\n : 'object deleted label';\n\n return {\n undoable: {\n // TODO(ZaymonFC): Pluralize if more than one object.\n message: [undoMessageKey, { ns: SPACE_PLUGIN }],\n data: { deletionData },\n },\n intents:\n deletionData.wasActive.length > 0\n ? [\n createIntent(LayoutAction.Close, {\n part: 'main',\n subject: deletionData.wasActive,\n options: { state: false },\n }),\n ]\n : undefined,\n };\n } else {\n if (\n deletionData?.objects?.length &&\n deletionData.objects.every(Obj.isObject) &&\n deletionData.parentCollection instanceof CollectionType\n ) {\n // Restore the object to the space.\n const restoredObjects = deletionData.objects.map((obj: Type.Expando) => space.db.add(obj));\n\n // Restore nested objects to the space.\n deletionData.nestedObjectsList.flat().forEach((obj: Type.Expando) => {\n space.db.add(obj);\n });\n\n deletionData.indices.forEach((index: number, i: number) => {\n if (index !== -1) {\n deletionData.parentCollection.objects.splice(index, 0, Ref.make(restoredObjects[i] as Type.Expando));\n }\n });\n\n return {\n intents:\n deletionData.wasActive.length > 0\n ? [\n createIntent(LayoutAction.Open, {\n part: 'main',\n subject: deletionData.wasActive,\n }),\n ]\n : undefined,\n };\n }\n }\n },\n }),\n createResolver({\n intent: SpaceAction.RenameObject,\n resolve: async ({ object, caller }) => ({\n intents: [\n createIntent(LayoutAction.UpdatePopover, {\n part: 'popover',\n subject: POPOVER_RENAME_OBJECT,\n options: {\n anchorId: `dxos.org/ui/${caller}/${fullyQualifiedId(object)}`,\n props: object,\n },\n }),\n ],\n }),\n }),\n createResolver({\n intent: SpaceAction.DuplicateObject,\n resolve: async ({ object, target }) => {\n const space = isSpace(target) ? target : getSpace(target);\n invariant(space, 'Space not found.');\n\n const newObject = await cloneObject(object, resolve, space);\n return {\n intents: [createIntent(SpaceAction.AddObject, { object: newObject, target })],\n };\n },\n }),\n createResolver({\n intent: SpaceAction.WaitForObject,\n resolve: async ({ id }) => {\n const state = context.getCapability(SpaceCapabilities.MutableState);\n state.awaiting = id;\n },\n }),\n createResolver({\n intent: CollectionAction.Create,\n resolve: async ({ name }) => ({\n data: { object: Obj.make(CollectionType, { name, objects: [], views: {} }) },\n }),\n }),\n ]);\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Effect", "Capabilities", "LayoutAction", "contributes", "createIntent", "createResolver", "Obj", "Ref", "Relation", "invariant", "Migrations", "ClientCapabilities", "ObservabilityAction", "EdgeReplicationSetting", "isSpace", "getSpace", "SpaceState", "fullyQualifiedId", "Invitation", "InvitationEncoder", "ATTENDABLE_PATH_SEPARATOR", "SPACE_MAX_OBJECTS", "context", "observability", "createInvitationUrl", "resolve", "typename", "getCapabilities", "Capabilities", "Metadata", "find", "id", "metadata", "contributes", "IntentResolver", "createResolver", "intent", "SpaceAction", "OpenCreateSpace", "intents", "createIntent", "LayoutAction", "UpdateDialog", "part", "subject", "CREATE_SPACE_DIALOG", "options", "blockAlign", "Create", "name", "hue", "icon", "edgeReplication", "client", "getCapability", "ClientCapabilities", "Client", "space", "spaces", "create", "internal", "setEdgeReplicationPreference", "EdgeReplicationSetting", "ENABLED", "waitUntilReady", "collection", "Obj", "make", "CollectionType", "objects", "views", "properties", "Ref", "Migrations", "versionProperty", "targetVersion", "data", "ObservabilityAction", "SendEvent", "spaceId", "Join", "invitationCode", "onDone", "JOIN_DIALOG", "props", "initialInvitationCode", "OpenMembers", "Open", "ATTENDABLE_PATH_SEPARATOR", "workspace", "Share", "type", "authMethod", "multiUse", "target", "invitation", "share", "GetShareLink", "copyToClipboard", "Effect", "gen", "dispatch", "IntentDispatcher", "Invitation", "Type", "DELEGATED", "AuthMethod", "KNOWN_PUBLIC_KEY", "tryPromise", "Promise", "subscribe", "state", "State", "CONNECTING", "InvitationEncoder", "encode", "url", "navigator", "clipboard", "writeText", "Lock", "COMPOSER_SPACE_LOCK", "Unlock", "Rename", "caller", "UpdatePopover", "POPOVER_RENAME_SPACE", "anchorId", "OpenSettings", "open", "Close", "close", "Migrate", "version", "SpaceCapabilities", "MutableState", "get", "SpaceState", "SPACE_REQUIRES_MIGRATION", "sdkMigrationRunning", "migrate", "result", "undefined", "OpenCreateObject", "navigable", "CREATE_OBJECT_DIALOG", "shouldNavigate", "object", "navigableCollections", "AddObject", "hidden", "isSpace", "getSpace", "invariant", "db", "coreDatabase", "getAllObjectIds", "length", "error", "Error", "AddToast", "SPACE_PLUGIN", "title", "ns", "description", "duration", "actionLabel", "actionAlt", "closeLabel", "onAction", "unlinkDeletedObjects", "push", "add", "fullyQualifiedId", "objectId", "getTypename", "AddRelation", "schema", "source", "fields", "relation", "Relation", "Source", "Target", "RemoveObjects", "deletionData", "undo", "layout", "Layout", "every", "obj", "isObject", "openObjectIds", "Set", "active", "parentCollection", "nestedObjectsList", "all", "map", "getNestedObjects", "indices", "findIndex", "wasActive", "flatMap", "i", "filter", "has", "sort", "a", "b", "forEach", "index", "splice", "flat", "remove", "undoMessageKey", "some", "undoable", "message", "restoredObjects", "RenameObject", "POPOVER_RENAME_OBJECT", "DuplicateObject", "newObject", "cloneObject", "WaitForObject", "awaiting", "CollectionAction"]
7
+ }