@dxos/plugin-space 0.8.4-main.84f28bd → 0.8.4-main.a4bbb77
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.
- package/dist/lib/browser/CollectionMain-AX7KKXWP.mjs +31 -0
- package/dist/lib/browser/CollectionMain-AX7KKXWP.mjs.map +7 -0
- package/dist/lib/browser/ObjectDetailsPanel-ETI5YBTH.mjs +90 -0
- package/dist/lib/browser/ObjectDetailsPanel-ETI5YBTH.mjs.map +7 -0
- package/dist/lib/browser/RecordMain-TEBGAVSL.mjs +68 -0
- package/dist/lib/browser/RecordMain-TEBGAVSL.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-builder-PMDF6PJV.mjs → app-graph-builder-W7RVDAUA.mjs} +202 -48
- package/dist/lib/browser/app-graph-builder-W7RVDAUA.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-UKYMBX4O.mjs → app-graph-serializer-VLHVTDX4.mjs} +14 -14
- package/dist/lib/browser/app-graph-serializer-VLHVTDX4.mjs.map +7 -0
- package/dist/lib/browser/{chunk-GVTXQCIW.mjs → chunk-2BFVC5K6.mjs} +431 -373
- package/dist/lib/browser/chunk-2BFVC5K6.mjs.map +7 -0
- package/dist/lib/browser/chunk-E2I747A7.mjs +20 -0
- package/dist/lib/browser/chunk-E2I747A7.mjs.map +7 -0
- package/dist/lib/browser/chunk-EIXZABXD.mjs +19 -0
- package/dist/lib/browser/chunk-EIXZABXD.mjs.map +7 -0
- package/dist/lib/browser/{chunk-VLBRSGJ2.mjs → chunk-ELJDGQTO.mjs} +3 -3
- package/dist/lib/browser/{chunk-VLBRSGJ2.mjs.map → chunk-ELJDGQTO.mjs.map} +3 -3
- package/dist/lib/browser/chunk-IRKDREHY.mjs +11 -0
- package/dist/lib/browser/chunk-IRKDREHY.mjs.map +7 -0
- package/dist/lib/browser/{chunk-S6NY637J.mjs → chunk-JCHSUOPF.mjs} +70 -10
- package/dist/lib/browser/chunk-JCHSUOPF.mjs.map +7 -0
- package/dist/lib/browser/{chunk-WBSEOLEM.mjs → chunk-PN27K4I7.mjs} +209 -54
- package/dist/lib/browser/chunk-PN27K4I7.mjs.map +7 -0
- package/dist/lib/browser/{chunk-6VLSHG4A.mjs → chunk-ZIZ2JLW6.mjs} +71 -9
- package/dist/lib/browser/chunk-ZIZ2JLW6.mjs.map +7 -0
- package/dist/lib/browser/{identity-created-23XJJV2N.mjs → identity-created-PW2BA46S.mjs} +4 -4
- package/dist/lib/browser/{identity-created-23XJJV2N.mjs.map → identity-created-PW2BA46S.mjs.map} +3 -3
- package/dist/lib/browser/index.mjs +95 -26
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-WK5WYFH3.mjs → intent-resolver-HA7DPAUE.mjs} +185 -30
- package/dist/lib/browser/intent-resolver-HA7DPAUE.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-root-7S6FIC5G.mjs → react-root-YQUJU64P.mjs} +11 -11
- package/dist/lib/browser/react-root-YQUJU64P.mjs.map +7 -0
- package/dist/lib/browser/{react-surface-6C3YJNDK.mjs → react-surface-HTXYMRSW.mjs} +78 -46
- package/dist/lib/browser/react-surface-HTXYMRSW.mjs.map +7 -0
- package/dist/lib/browser/{schema-defs-K3B3OAH4.mjs → schema-defs-R56ZDBZ7.mjs} +5 -5
- package/dist/lib/browser/schema-defs-R56ZDBZ7.mjs.map +7 -0
- package/dist/lib/browser/{settings-XNWYRWNM.mjs → settings-5XPQMSPO.mjs} +5 -5
- package/dist/lib/browser/{settings-XNWYRWNM.mjs.map → settings-5XPQMSPO.mjs.map} +1 -1
- package/dist/lib/browser/{spaces-ready-K7NSNBHM.mjs → spaces-ready-YY77ANIF.mjs} +17 -15
- package/dist/lib/browser/spaces-ready-YY77ANIF.mjs.map +7 -0
- package/dist/lib/browser/{state-522XTUR4.mjs → state-Y4RVCG4A.mjs} +7 -7
- package/dist/lib/browser/state-Y4RVCG4A.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +2 -2
- package/dist/lib/node-esm/CollectionMain-EU57SRYK.mjs +32 -0
- package/dist/lib/node-esm/CollectionMain-EU57SRYK.mjs.map +7 -0
- package/dist/lib/node-esm/ObjectDetailsPanel-TQ5GN4QJ.mjs +91 -0
- package/dist/lib/node-esm/ObjectDetailsPanel-TQ5GN4QJ.mjs.map +7 -0
- package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs +70 -0
- package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-TO72W6MI.mjs → app-graph-builder-5ZJJUMQI.mjs} +202 -48
- package/dist/lib/node-esm/app-graph-builder-5ZJJUMQI.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-LA3IZDXJ.mjs → app-graph-serializer-EZJSGJUT.mjs} +14 -14
- package/dist/lib/node-esm/app-graph-serializer-EZJSGJUT.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-SXD6T2N4.mjs → chunk-5XRYHWL7.mjs} +71 -9
- package/dist/lib/node-esm/chunk-5XRYHWL7.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-2THX6G4C.mjs → chunk-6WNZW6KT.mjs} +70 -10
- package/dist/lib/node-esm/chunk-6WNZW6KT.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-OUBADVJE.mjs → chunk-BLPXWPLB.mjs} +431 -373
- package/dist/lib/node-esm/chunk-BLPXWPLB.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-IJVBBVCL.mjs +21 -0
- package/dist/lib/node-esm/chunk-IJVBBVCL.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-HWNG4MEU.mjs → chunk-MWNATOXL.mjs} +2 -4
- package/dist/lib/node-esm/chunk-MWNATOXL.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-SSLBYZEY.mjs → chunk-Q6AAQLQG.mjs} +3 -3
- package/dist/lib/node-esm/{chunk-SSLBYZEY.mjs.map → chunk-Q6AAQLQG.mjs.map} +3 -3
- package/dist/lib/node-esm/chunk-SVFKU7EW.mjs +20 -0
- package/dist/lib/node-esm/chunk-SVFKU7EW.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-HJJHLWKY.mjs → chunk-XDQXUZMK.mjs} +209 -54
- package/dist/lib/node-esm/chunk-XDQXUZMK.mjs.map +7 -0
- package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs → identity-created-MWTLGQRU.mjs} +4 -4
- package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs.map → identity-created-MWTLGQRU.mjs.map} +3 -3
- package/dist/lib/node-esm/index.mjs +95 -26
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-HSR27ME4.mjs → intent-resolver-LQNHMPIX.mjs} +185 -30
- package/dist/lib/node-esm/intent-resolver-LQNHMPIX.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-HUK3ANLV.mjs → react-root-UTLJEIKE.mjs} +11 -11
- package/dist/lib/node-esm/react-root-UTLJEIKE.mjs.map +7 -0
- package/dist/lib/node-esm/{react-surface-AGAWX7DD.mjs → react-surface-LYDYON3U.mjs} +78 -46
- package/dist/lib/node-esm/react-surface-LYDYON3U.mjs.map +7 -0
- package/dist/lib/node-esm/{schema-defs-4MCDG4DV.mjs → schema-defs-7IMJPIWS.mjs} +5 -5
- package/dist/lib/node-esm/schema-defs-7IMJPIWS.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-YGKHGFPH.mjs → settings-XBSK5KHH.mjs} +5 -5
- package/dist/lib/node-esm/{settings-YGKHGFPH.mjs.map → settings-XBSK5KHH.mjs.map} +1 -1
- package/dist/lib/node-esm/{spaces-ready-UM2P3DCR.mjs → spaces-ready-YX4IHT4P.mjs} +17 -15
- package/dist/lib/node-esm/spaces-ready-YX4IHT4P.mjs.map +7 -0
- package/dist/lib/node-esm/{state-C4IOXPZP.mjs → state-HOHAVPUO.mjs} +7 -7
- package/dist/lib/node-esm/state-HOHAVPUO.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +2 -2
- package/dist/types/src/SpacePlugin.d.ts +1 -1
- package/dist/types/src/SpacePlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-serializer.d.ts +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +11 -5
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/identity-created.d.ts +1 -1
- package/dist/types/src/capabilities/identity-created.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +11 -12
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-root.d.ts +2 -2
- package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/schema-defs.d.ts +1 -1
- package/dist/types/src/capabilities/schema-defs.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings.d.ts +1 -1
- package/dist/types/src/capabilities/spaces-ready.d.ts +1 -1
- package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
- package/dist/types/src/capabilities/state.d.ts +1 -1
- package/dist/types/src/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
- package/dist/types/src/components/CollectionMain.d.ts +1 -0
- package/dist/types/src/components/CollectionMain.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +5 -4
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1584 -4
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +5 -3
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -1
- package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
- package/dist/types/src/components/JoinDialog.d.ts +1 -1
- package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
- package/dist/types/src/components/MembersContainer.d.ts +3 -2
- package/dist/types/src/components/MembersContainer.d.ts.map +1 -1
- package/dist/types/src/components/MembersContainer.stories.d.ts +1584 -5
- package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
- package/dist/types/src/components/ObjectDetailsPanel.d.ts +9 -0
- package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +1 -0
- package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
- package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -1
- package/dist/types/src/components/PersistenceStatus.d.ts.map +1 -1
- package/dist/types/src/components/PopoverRenameObject.d.ts +2 -2
- package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
- package/dist/types/src/components/PopoverRenameSpace.d.ts +1 -1
- package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
- package/dist/types/src/components/RecordMain.d.ts +7 -0
- package/dist/types/src/components/RecordMain.d.ts.map +1 -0
- package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
- package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
- package/dist/types/src/components/SpacePresence.stories.d.ts +1412 -4
- package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1417 -4
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1418 -5
- package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/status.d.ts +5 -5
- package/dist/types/src/components/ViewEditor.d.ts +8 -0
- package/dist/types/src/components/ViewEditor.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +14 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/events.d.ts +1 -0
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +0 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +1262 -11
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +124 -64
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +34 -7
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +61 -60
- package/src/SpacePlugin.ts +205 -137
- package/src/capabilities/app-graph-builder.ts +249 -36
- package/src/capabilities/app-graph-serializer.ts +7 -7
- package/src/capabilities/capabilities.ts +15 -9
- package/src/capabilities/identity-created.ts +1 -1
- package/src/capabilities/index.ts +0 -1
- package/src/capabilities/intent-resolver.ts +140 -19
- package/src/capabilities/react-root.tsx +4 -3
- package/src/capabilities/react-surface.tsx +93 -42
- package/src/capabilities/schema-defs.ts +3 -2
- package/src/capabilities/spaces-ready.ts +10 -7
- package/src/capabilities/state.ts +5 -4
- package/src/components/AwaitingObject.tsx +7 -9
- package/src/components/CollectionMain.tsx +4 -2
- package/src/components/CollectionSection.tsx +2 -2
- package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +11 -10
- package/src/components/CreateDialog/CreateObjectDialog.tsx +50 -36
- package/src/components/CreateDialog/CreateObjectPanel.tsx +22 -11
- package/src/components/CreateDialog/CreateSpaceDialog.tsx +4 -4
- package/src/components/JoinDialog.tsx +7 -7
- package/src/components/MembersContainer.stories.tsx +36 -10
- package/src/components/MembersContainer.tsx +17 -16
- package/src/components/MenuFooter.tsx +4 -5
- package/src/components/ObjectDetailsPanel.tsx +79 -0
- package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +3 -2
- package/src/components/ObjectSettings/ForeignKeys.tsx +2 -2
- package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +3 -2
- package/src/components/PersistenceStatus.tsx +7 -8
- package/src/components/PopoverRenameObject.tsx +10 -16
- package/src/components/PopoverRenameSpace.tsx +4 -4
- package/src/components/RecordMain.tsx +43 -0
- package/src/components/SchemaContainer.tsx +4 -4
- package/src/components/SpacePluginSettings.tsx +8 -9
- package/src/components/SpacePresence.stories.tsx +23 -22
- package/src/components/SpacePresence.tsx +9 -9
- package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +17 -9
- package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +17 -17
- package/src/components/SyncStatus/InlineSyncStatus.tsx +2 -2
- package/src/components/SyncStatus/SyncStatus.stories.tsx +6 -7
- package/src/components/SyncStatus/SyncStatus.tsx +5 -4
- package/src/components/SyncStatus/status.ts +4 -4
- package/src/components/ViewEditor.tsx +59 -0
- package/src/components/index.ts +7 -1
- package/src/events.ts +7 -6
- package/src/hooks/useActiveSpace.ts +2 -2
- package/src/hooks/useInputSurfaceLookup.tsx +1 -1
- package/src/meta.ts +1 -3
- package/src/translations.ts +68 -5
- package/src/types/types.ts +70 -12
- package/src/util.tsx +199 -55
- package/dist/lib/browser/app-graph-builder-PMDF6PJV.mjs.map +0 -7
- package/dist/lib/browser/app-graph-serializer-UKYMBX4O.mjs.map +0 -7
- package/dist/lib/browser/chunk-6VLSHG4A.mjs.map +0 -7
- package/dist/lib/browser/chunk-C7KGJTAL.mjs +0 -18
- package/dist/lib/browser/chunk-C7KGJTAL.mjs.map +0 -7
- package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
- package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
- package/dist/lib/browser/chunk-GVTXQCIW.mjs.map +0 -7
- package/dist/lib/browser/chunk-S6NY637J.mjs.map +0 -7
- package/dist/lib/browser/chunk-WBSEOLEM.mjs.map +0 -7
- package/dist/lib/browser/chunk-XXIPJLJF.mjs +0 -19
- package/dist/lib/browser/chunk-XXIPJLJF.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-WK5WYFH3.mjs.map +0 -7
- package/dist/lib/browser/react-root-7S6FIC5G.mjs.map +0 -7
- package/dist/lib/browser/react-surface-6C3YJNDK.mjs.map +0 -7
- package/dist/lib/browser/schema-defs-K3B3OAH4.mjs.map +0 -7
- package/dist/lib/browser/schema-tools-BNP4JTD7.mjs +0 -124
- package/dist/lib/browser/schema-tools-BNP4JTD7.mjs.map +0 -7
- package/dist/lib/browser/spaces-ready-K7NSNBHM.mjs.map +0 -7
- package/dist/lib/browser/state-522XTUR4.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-TO72W6MI.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-serializer-LA3IZDXJ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2THX6G4C.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-72QMMRKC.mjs +0 -19
- package/dist/lib/node-esm/chunk-72QMMRKC.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-AT7LGFER.mjs +0 -20
- package/dist/lib/node-esm/chunk-AT7LGFER.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HJJHLWKY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-OUBADVJE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-SXD6T2N4.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-HSR27ME4.mjs.map +0 -7
- package/dist/lib/node-esm/react-root-HUK3ANLV.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-AGAWX7DD.mjs.map +0 -7
- package/dist/lib/node-esm/schema-defs-4MCDG4DV.mjs.map +0 -7
- package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs +0 -126
- package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs.map +0 -7
- package/dist/lib/node-esm/spaces-ready-UM2P3DCR.mjs.map +0 -7
- package/dist/lib/node-esm/state-C4IOXPZP.mjs.map +0 -7
- package/dist/types/src/capabilities/schema-tool.test.d.ts +0 -2
- package/dist/types/src/capabilities/schema-tool.test.d.ts.map +0 -1
- package/dist/types/src/capabilities/schema-tools.d.ts +0 -13
- package/dist/types/src/capabilities/schema-tools.d.ts.map +0 -1
- package/src/capabilities/schema-tool.test.ts +0 -44
- package/src/capabilities/schema-tools.ts +0 -125
|
@@ -3,32 +3,35 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { Rx } from '@effect-rx/rx-react';
|
|
6
|
-
import { Array, Option, pipe } from 'effect';
|
|
6
|
+
import { Array, Option, Schema, pipe } from 'effect';
|
|
7
7
|
|
|
8
|
-
import { Capabilities, contributes, createIntent
|
|
9
|
-
import {
|
|
8
|
+
import { Capabilities, type PluginContext, contributes, createIntent } from '@dxos/app-framework';
|
|
9
|
+
import { type QueryResult, type Space, SpaceState, getSpace, isSpace, parseId } from '@dxos/client/echo';
|
|
10
10
|
import { Filter, Obj, Query, Type } from '@dxos/echo';
|
|
11
11
|
import { log } from '@dxos/log';
|
|
12
12
|
import { ClientCapabilities } from '@dxos/plugin-client';
|
|
13
|
-
import {
|
|
14
|
-
import { createExtension, rxFromObservable,
|
|
15
|
-
import { DataType } from '@dxos/schema';
|
|
13
|
+
import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';
|
|
14
|
+
import { ROOT_ID, createExtension, rxFromObservable, rxFromSignal } from '@dxos/plugin-graph';
|
|
15
|
+
import { DataType, typenameFromQuery } from '@dxos/schema';
|
|
16
16
|
import { isNonNullable } from '@dxos/util';
|
|
17
17
|
|
|
18
|
-
import { SpaceCapabilities } from './capabilities';
|
|
19
18
|
import { getActiveSpace } from '../hooks';
|
|
20
|
-
import {
|
|
19
|
+
import { meta } from '../meta';
|
|
21
20
|
import { SPACE_TYPE, SpaceAction, type SpaceSettingsProps } from '../types';
|
|
22
21
|
import {
|
|
22
|
+
SHARED,
|
|
23
|
+
SPACES,
|
|
23
24
|
constructObjectActions,
|
|
24
25
|
constructSpaceActions,
|
|
25
26
|
constructSpaceNode,
|
|
26
27
|
createObjectNode,
|
|
28
|
+
createStaticSchemaActions,
|
|
29
|
+
createStaticSchemaNode,
|
|
27
30
|
rxFromQuery,
|
|
28
|
-
SHARED,
|
|
29
|
-
SPACES,
|
|
30
31
|
} from '../util';
|
|
31
32
|
|
|
33
|
+
import { SpaceCapabilities } from './capabilities';
|
|
34
|
+
|
|
32
35
|
export default (context: PluginContext) => {
|
|
33
36
|
// TODO(wittjosiah): Make reactive.
|
|
34
37
|
const resolve = (typename: string) =>
|
|
@@ -39,7 +42,7 @@ export default (context: PluginContext) => {
|
|
|
39
42
|
type: SPACES,
|
|
40
43
|
cacheable: ['label', 'role'],
|
|
41
44
|
properties: {
|
|
42
|
-
label: ['spaces label', { ns:
|
|
45
|
+
label: ['spaces label', { ns: meta.id }],
|
|
43
46
|
icon: 'ph--planet--regular',
|
|
44
47
|
testId: 'spacePlugin.spaces',
|
|
45
48
|
role: 'branch',
|
|
@@ -74,7 +77,7 @@ export default (context: PluginContext) => {
|
|
|
74
77
|
return contributes(Capabilities.AppGraphBuilder, [
|
|
75
78
|
// Primary actions.
|
|
76
79
|
createExtension({
|
|
77
|
-
id: `${
|
|
80
|
+
id: `${meta.id}/primary-actions`,
|
|
78
81
|
position: 'hoist',
|
|
79
82
|
actions: (node) =>
|
|
80
83
|
Rx.make((get) =>
|
|
@@ -89,7 +92,7 @@ export default (context: PluginContext) => {
|
|
|
89
92
|
await dispatch(createIntent(SpaceAction.OpenCreateSpace));
|
|
90
93
|
},
|
|
91
94
|
properties: {
|
|
92
|
-
label: ['create space label', { ns:
|
|
95
|
+
label: ['create space label', { ns: meta.id }],
|
|
93
96
|
icon: 'ph--plus--regular',
|
|
94
97
|
testId: 'spacePlugin.createSpace',
|
|
95
98
|
disposition: 'menu',
|
|
@@ -102,7 +105,7 @@ export default (context: PluginContext) => {
|
|
|
102
105
|
await dispatch(createIntent(SpaceAction.Join));
|
|
103
106
|
},
|
|
104
107
|
properties: {
|
|
105
|
-
label: ['join space label', { ns:
|
|
108
|
+
label: ['join space label', { ns: meta.id }],
|
|
106
109
|
icon: 'ph--sign-in--regular',
|
|
107
110
|
testId: 'spacePlugin.joinSpace',
|
|
108
111
|
disposition: 'menu',
|
|
@@ -117,7 +120,7 @@ export default (context: PluginContext) => {
|
|
|
117
120
|
await dispatch(createIntent(SpaceAction.OpenMembers, { space }));
|
|
118
121
|
},
|
|
119
122
|
properties: {
|
|
120
|
-
label: ['share space label', { ns:
|
|
123
|
+
label: ['share space label', { ns: meta.id }],
|
|
121
124
|
icon: 'ph--users--regular',
|
|
122
125
|
testId: 'spacePlugin.shareSpace',
|
|
123
126
|
keyBinding: {
|
|
@@ -135,7 +138,7 @@ export default (context: PluginContext) => {
|
|
|
135
138
|
await dispatch(createIntent(SpaceAction.OpenSettings, { space }));
|
|
136
139
|
},
|
|
137
140
|
properties: {
|
|
138
|
-
label: ['open current space settings label', { ns:
|
|
141
|
+
label: ['open current space settings label', { ns: meta.id }],
|
|
139
142
|
icon: 'ph--faders--regular',
|
|
140
143
|
keyBinding: {
|
|
141
144
|
macos: 'meta+shift+,',
|
|
@@ -151,7 +154,7 @@ export default (context: PluginContext) => {
|
|
|
151
154
|
|
|
152
155
|
// Create spaces group node.
|
|
153
156
|
createExtension({
|
|
154
|
-
id: `${
|
|
157
|
+
id: `${meta.id}/root`,
|
|
155
158
|
position: 'hoist',
|
|
156
159
|
connector: (node) =>
|
|
157
160
|
Rx.make((get) =>
|
|
@@ -188,7 +191,7 @@ export default (context: PluginContext) => {
|
|
|
188
191
|
}
|
|
189
192
|
|
|
190
193
|
const settings = get(context.capabilities(Capabilities.SettingsStore))[0]?.getStore<SpaceSettingsProps>(
|
|
191
|
-
|
|
194
|
+
meta.id,
|
|
192
195
|
)?.value;
|
|
193
196
|
|
|
194
197
|
// TODO(wittjosiah): During client reset, accessing default space throws.
|
|
@@ -273,7 +276,7 @@ export default (context: PluginContext) => {
|
|
|
273
276
|
|
|
274
277
|
// Create space actions.
|
|
275
278
|
createExtension({
|
|
276
|
-
id: `${
|
|
279
|
+
id: `${meta.id}/actions`,
|
|
277
280
|
actions: (node) =>
|
|
278
281
|
Rx.make((get) =>
|
|
279
282
|
pipe(
|
|
@@ -305,7 +308,7 @@ export default (context: PluginContext) => {
|
|
|
305
308
|
|
|
306
309
|
// Create nodes for objects in the root collection of a space.
|
|
307
310
|
createExtension({
|
|
308
|
-
id: `${
|
|
311
|
+
id: `${meta.id}/root-collection`,
|
|
309
312
|
connector: (node) =>
|
|
310
313
|
Rx.make((get) =>
|
|
311
314
|
pipe(
|
|
@@ -355,7 +358,7 @@ export default (context: PluginContext) => {
|
|
|
355
358
|
|
|
356
359
|
// Create nodes for objects in a collection or by its fully qualified id.
|
|
357
360
|
createExtension({
|
|
358
|
-
id: `${
|
|
361
|
+
id: `${meta.id}/objects`,
|
|
359
362
|
connector: (node) =>
|
|
360
363
|
Rx.make((get) =>
|
|
361
364
|
pipe(
|
|
@@ -426,7 +429,7 @@ export default (context: PluginContext) => {
|
|
|
426
429
|
|
|
427
430
|
// Create nodes for objects in a query collection.
|
|
428
431
|
createExtension({
|
|
429
|
-
id: `${
|
|
432
|
+
id: `${meta.id}/query-collection-objects`,
|
|
430
433
|
connector: (node) => {
|
|
431
434
|
let query: QueryResult<Type.Expando> | undefined;
|
|
432
435
|
return Rx.make((get) =>
|
|
@@ -437,9 +440,8 @@ export default (context: PluginContext) => {
|
|
|
437
440
|
),
|
|
438
441
|
Option.flatMap((collection) => {
|
|
439
442
|
const space = getSpace(collection);
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
: Option.none();
|
|
443
|
+
const typename = typenameFromQuery(collection.query);
|
|
444
|
+
return typename && space ? Option.some({ typename, space }) : Option.none();
|
|
443
445
|
}),
|
|
444
446
|
Option.map(({ typename, space }) => {
|
|
445
447
|
const state = context.getCapability(SpaceCapabilities.State);
|
|
@@ -456,16 +458,144 @@ export default (context: PluginContext) => {
|
|
|
456
458
|
),
|
|
457
459
|
);
|
|
458
460
|
}
|
|
461
|
+
return (
|
|
462
|
+
get(rxFromQuery(query))
|
|
463
|
+
// TODO(wittjosiah): This should be the default sort order.
|
|
464
|
+
.toSorted((a, b) => a.id.localeCompare(b.id))
|
|
465
|
+
.map((object) =>
|
|
466
|
+
get(
|
|
467
|
+
rxFromSignal(() =>
|
|
468
|
+
createObjectNode({
|
|
469
|
+
object,
|
|
470
|
+
space,
|
|
471
|
+
resolve,
|
|
472
|
+
droppable: false, // Cannot rearrange query collections.
|
|
473
|
+
navigable: state.navigableCollections,
|
|
474
|
+
}),
|
|
475
|
+
),
|
|
476
|
+
),
|
|
477
|
+
)
|
|
478
|
+
.filter(isNonNullable)
|
|
479
|
+
);
|
|
480
|
+
}),
|
|
481
|
+
Option.getOrElse(() => []),
|
|
482
|
+
),
|
|
483
|
+
);
|
|
484
|
+
},
|
|
485
|
+
}),
|
|
486
|
+
|
|
487
|
+
// Static schema records.
|
|
488
|
+
createExtension({
|
|
489
|
+
id: `${meta.id}/static-schemas`,
|
|
490
|
+
connector: (node) => {
|
|
491
|
+
const client = context.getCapability(ClientCapabilities.Client);
|
|
492
|
+
return Rx.make((get) =>
|
|
493
|
+
pipe(
|
|
494
|
+
get(node),
|
|
495
|
+
Option.flatMap((node) =>
|
|
496
|
+
Obj.instanceOf(DataType.QueryCollection, node.data) &&
|
|
497
|
+
typenameFromQuery(node.data.query) === DataType.StoredSchema.typename
|
|
498
|
+
? Option.some(node.data)
|
|
499
|
+
: Option.none(),
|
|
500
|
+
),
|
|
501
|
+
Option.flatMap((collection) => {
|
|
502
|
+
const space = getSpace(collection);
|
|
503
|
+
return space?.properties.staticRecords ? Option.some(space) : Option.none();
|
|
504
|
+
}),
|
|
505
|
+
Option.map((space) => {
|
|
506
|
+
return get(rxFromSignal(() => (space.properties.staticRecords ?? []) as string[]))
|
|
507
|
+
.map((typename) =>
|
|
508
|
+
client.graph.schemaRegistry.schemas.find((schema) => Type.getTypename(schema) === typename),
|
|
509
|
+
)
|
|
510
|
+
.filter(isNonNullable)
|
|
511
|
+
.map((schema) => createStaticSchemaNode({ schema, space }));
|
|
512
|
+
}),
|
|
513
|
+
Option.getOrElse(() => []),
|
|
514
|
+
),
|
|
515
|
+
);
|
|
516
|
+
},
|
|
517
|
+
}),
|
|
518
|
+
|
|
519
|
+
// Create static schema actions.
|
|
520
|
+
createExtension({
|
|
521
|
+
id: `${meta.id}/static-schema-actions`,
|
|
522
|
+
actions: (node) => {
|
|
523
|
+
let query: QueryResult<DataType.View> | undefined;
|
|
524
|
+
return Rx.make((get) =>
|
|
525
|
+
pipe(
|
|
526
|
+
get(node),
|
|
527
|
+
Option.flatMap((node) => {
|
|
528
|
+
const space = isSpace(node.properties.space) ? node.properties.space : undefined;
|
|
529
|
+
return space && Schema.isSchema(node.data) ? Option.some({ space, schema: node.data }) : Option.none();
|
|
530
|
+
}),
|
|
531
|
+
Option.map(({ space, schema }) => {
|
|
532
|
+
if (!query) {
|
|
533
|
+
// TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
|
|
534
|
+
query = space.db.query(Filter.type(DataType.View));
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
const views = get(rxFromQuery(query));
|
|
538
|
+
const filteredViews = get(
|
|
539
|
+
rxFromSignal(() =>
|
|
540
|
+
// TODO(wittjosiah): Remove cast.
|
|
541
|
+
views.filter(
|
|
542
|
+
(view) => typenameFromQuery(view.query.ast) === Type.getTypename(schema as Type.Obj.Any),
|
|
543
|
+
),
|
|
544
|
+
),
|
|
545
|
+
);
|
|
546
|
+
const deletable = filteredViews.length === 0;
|
|
547
|
+
|
|
548
|
+
const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
|
|
549
|
+
if (!dispatcher) {
|
|
550
|
+
return [];
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
// TODO(wittjosiah): Remove cast.
|
|
554
|
+
return createStaticSchemaActions({
|
|
555
|
+
schema: schema as Type.Obj.Any,
|
|
556
|
+
space,
|
|
557
|
+
dispatch: dispatcher.dispatchPromise,
|
|
558
|
+
deletable,
|
|
559
|
+
});
|
|
560
|
+
}),
|
|
561
|
+
Option.getOrElse(() => []),
|
|
562
|
+
),
|
|
563
|
+
);
|
|
564
|
+
},
|
|
565
|
+
}),
|
|
566
|
+
|
|
567
|
+
// Create nodes for schema views.
|
|
568
|
+
createExtension({
|
|
569
|
+
id: `${meta.id}/schema-views`,
|
|
570
|
+
connector: (node) => {
|
|
571
|
+
let query: QueryResult<DataType.View> | undefined;
|
|
572
|
+
return Rx.make((get) =>
|
|
573
|
+
pipe(
|
|
574
|
+
get(node),
|
|
575
|
+
Option.flatMap((node) => {
|
|
576
|
+
const space = getSpace(node.data) ?? (isSpace(node.properties.space) ? node.properties.space : undefined);
|
|
577
|
+
return space && (Obj.instanceOf(DataType.StoredSchema, node.data) || Schema.isSchema(node.data))
|
|
578
|
+
? Option.some({ space, schema: node.data })
|
|
579
|
+
: Option.none();
|
|
580
|
+
}),
|
|
581
|
+
Option.map(({ space, schema }) => {
|
|
582
|
+
if (!query) {
|
|
583
|
+
// TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
|
|
584
|
+
query = space.db.query(Filter.type(DataType.View));
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
// TODO(wittjosiah): Remove cast.
|
|
588
|
+
const typename = Schema.isSchema(schema) ? Type.getTypename(schema as Type.Obj.Any) : schema.typename;
|
|
459
589
|
return get(rxFromQuery(query))
|
|
460
|
-
.
|
|
590
|
+
.filter((view) => typenameFromQuery(view.query.ast) === typename)
|
|
591
|
+
.map((view) =>
|
|
461
592
|
get(
|
|
462
593
|
rxFromSignal(() =>
|
|
463
594
|
createObjectNode({
|
|
464
|
-
object,
|
|
595
|
+
object: view,
|
|
465
596
|
space,
|
|
466
597
|
resolve,
|
|
467
|
-
droppable: false,
|
|
468
|
-
navigable: state.navigableCollections,
|
|
598
|
+
droppable: false,
|
|
469
599
|
}),
|
|
470
600
|
),
|
|
471
601
|
),
|
|
@@ -478,15 +608,71 @@ export default (context: PluginContext) => {
|
|
|
478
608
|
},
|
|
479
609
|
}),
|
|
480
610
|
|
|
611
|
+
// Create record nodes.
|
|
612
|
+
createExtension({
|
|
613
|
+
id: `${meta.id}/records`,
|
|
614
|
+
resolver: (id) => {
|
|
615
|
+
let query: QueryResult<Type.Expando> | undefined;
|
|
616
|
+
return Rx.make((get) => {
|
|
617
|
+
const client = context.getCapability(ClientCapabilities.Client);
|
|
618
|
+
const { spaceId, objectId } = parseId(id);
|
|
619
|
+
if (!spaceId || !objectId) {
|
|
620
|
+
return null;
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
const space = client.spaces.get(spaceId);
|
|
624
|
+
if (!space) {
|
|
625
|
+
return null;
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
if (!query) {
|
|
629
|
+
query = space.db.query(Filter.ids(objectId));
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
const object = get(rxFromQuery(query)).at(0);
|
|
633
|
+
if (!object) {
|
|
634
|
+
return null;
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
return createObjectNode({ object, space, resolve, disposition: 'hidden' });
|
|
638
|
+
});
|
|
639
|
+
},
|
|
640
|
+
}),
|
|
641
|
+
|
|
481
642
|
// Create collection actions and action groups.
|
|
482
643
|
createExtension({
|
|
483
|
-
id: `${
|
|
484
|
-
actions: (node) =>
|
|
485
|
-
|
|
644
|
+
id: `${meta.id}/object-actions`,
|
|
645
|
+
actions: (node) => {
|
|
646
|
+
let query: QueryResult<DataType.View> | undefined;
|
|
647
|
+
return Rx.make((get) =>
|
|
486
648
|
pipe(
|
|
487
649
|
get(node),
|
|
488
|
-
Option.flatMap((node) =>
|
|
489
|
-
|
|
650
|
+
Option.flatMap((node) => {
|
|
651
|
+
const space = getSpace(node.data);
|
|
652
|
+
return space && Obj.isObject(node.data) ? Option.some({ space, object: node.data }) : Option.none();
|
|
653
|
+
}),
|
|
654
|
+
Option.flatMap(({ space, object }) => {
|
|
655
|
+
const isSchema = Obj.instanceOf(DataType.StoredSchema, object);
|
|
656
|
+
if (!query && isSchema) {
|
|
657
|
+
// TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
|
|
658
|
+
query = space.db.query(Filter.type(DataType.View));
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
let deletable =
|
|
662
|
+
!isSchema &&
|
|
663
|
+
// Don't allow the Records smart collection to be deleted.
|
|
664
|
+
!(
|
|
665
|
+
Obj.instanceOf(DataType.QueryCollection, object) &&
|
|
666
|
+
typenameFromQuery(object.query) === DataType.StoredSchema.typename
|
|
667
|
+
);
|
|
668
|
+
if (isSchema && query) {
|
|
669
|
+
const views = get(rxFromQuery(query));
|
|
670
|
+
const filteredViews = get(
|
|
671
|
+
rxFromSignal(() => views.filter((view) => typenameFromQuery(view.query.ast) === object.typename)),
|
|
672
|
+
);
|
|
673
|
+
deletable = filteredViews.length === 0;
|
|
674
|
+
}
|
|
675
|
+
|
|
490
676
|
const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
|
|
491
677
|
const [appGraph] = get(context.capabilities(Capabilities.AppGraph));
|
|
492
678
|
const [state] = get(context.capabilities(SpaceCapabilities.State));
|
|
@@ -500,6 +686,7 @@ export default (context: PluginContext) => {
|
|
|
500
686
|
graph: appGraph.graph,
|
|
501
687
|
dispatch: dispatcher.dispatchPromise,
|
|
502
688
|
objectForms,
|
|
689
|
+
deletable,
|
|
503
690
|
navigable: get(rxFromSignal(() => state.navigableCollections)),
|
|
504
691
|
});
|
|
505
692
|
}
|
|
@@ -507,12 +694,38 @@ export default (context: PluginContext) => {
|
|
|
507
694
|
Option.map((params) => constructObjectActions(params)),
|
|
508
695
|
Option.getOrElse(() => []),
|
|
509
696
|
),
|
|
697
|
+
);
|
|
698
|
+
},
|
|
699
|
+
}),
|
|
700
|
+
|
|
701
|
+
// View selected objects.
|
|
702
|
+
createExtension({
|
|
703
|
+
id: `${meta.id}/selected-objects`,
|
|
704
|
+
connector: (node) =>
|
|
705
|
+
Rx.make((get) =>
|
|
706
|
+
pipe(
|
|
707
|
+
get(node),
|
|
708
|
+
Option.flatMap((node) => (Obj.instanceOf(DataType.View, node.data) ? Option.some(node) : Option.none())),
|
|
709
|
+
Option.map((node) => [
|
|
710
|
+
{
|
|
711
|
+
id: [node.id, 'selected-objects'].join(ATTENDABLE_PATH_SEPARATOR),
|
|
712
|
+
type: PLANK_COMPANION_TYPE,
|
|
713
|
+
data: 'selected-objects',
|
|
714
|
+
properties: {
|
|
715
|
+
label: ['companion selected objects label', { ns: meta.id }],
|
|
716
|
+
icon: 'ph--tree-view--regular',
|
|
717
|
+
disposition: 'hidden',
|
|
718
|
+
},
|
|
719
|
+
},
|
|
720
|
+
]),
|
|
721
|
+
Option.getOrElse(() => []),
|
|
722
|
+
),
|
|
510
723
|
),
|
|
511
724
|
}),
|
|
512
725
|
|
|
513
726
|
// Object settings plank companion.
|
|
514
727
|
createExtension({
|
|
515
|
-
id: `${
|
|
728
|
+
id: `${meta.id}/settings`,
|
|
516
729
|
connector: (node) =>
|
|
517
730
|
Rx.make((get) =>
|
|
518
731
|
pipe(
|
|
@@ -524,7 +737,7 @@ export default (context: PluginContext) => {
|
|
|
524
737
|
type: PLANK_COMPANION_TYPE,
|
|
525
738
|
data: 'settings',
|
|
526
739
|
properties: {
|
|
527
|
-
label: ['object settings label', { ns:
|
|
740
|
+
label: ['object settings label', { ns: meta.id }],
|
|
528
741
|
icon: 'ph--sliders--regular',
|
|
529
742
|
disposition: 'hidden',
|
|
530
743
|
position: 'fallback',
|
|
@@ -7,7 +7,7 @@ import { isSpace } from '@dxos/client/echo';
|
|
|
7
7
|
import { Obj, Type } from '@dxos/echo';
|
|
8
8
|
import { DataType } from '@dxos/schema';
|
|
9
9
|
|
|
10
|
-
import {
|
|
10
|
+
import { meta } from '../meta';
|
|
11
11
|
import { translations } from '../translations';
|
|
12
12
|
import { SPACE_TYPE, SpaceAction } from '../types';
|
|
13
13
|
import { SPACES } from '../util';
|
|
@@ -23,8 +23,8 @@ export default (context: PluginContext) =>
|
|
|
23
23
|
inputType: SPACES,
|
|
24
24
|
outputType: DIRECTORY_TYPE,
|
|
25
25
|
serialize: (node) => ({
|
|
26
|
-
name: translations[0]['en-US'][
|
|
27
|
-
data: translations[0]['en-US'][
|
|
26
|
+
name: translations[0]['en-US'][meta.id]['spaces label'] ?? 'Spaces',
|
|
27
|
+
data: translations[0]['en-US'][meta.id]['spaces label'] ?? 'Spaces',
|
|
28
28
|
type: DIRECTORY_TYPE,
|
|
29
29
|
}),
|
|
30
30
|
deserialize: () => {
|
|
@@ -35,8 +35,8 @@ export default (context: PluginContext) =>
|
|
|
35
35
|
inputType: SPACE_TYPE,
|
|
36
36
|
outputType: DIRECTORY_TYPE,
|
|
37
37
|
serialize: (node) => ({
|
|
38
|
-
name: node.data.properties.name ?? translations[0]['en-US'][
|
|
39
|
-
data: node.data.properties.name ?? translations[0]['en-US'][
|
|
38
|
+
name: node.data.properties.name ?? translations[0]['en-US'][meta.id]['unnamed space label'],
|
|
39
|
+
data: node.data.properties.name ?? translations[0]['en-US'][meta.id]['unnamed space label'],
|
|
40
40
|
type: DIRECTORY_TYPE,
|
|
41
41
|
}),
|
|
42
42
|
deserialize: async (data) => {
|
|
@@ -49,8 +49,8 @@ export default (context: PluginContext) =>
|
|
|
49
49
|
inputType: COLLECTION_TYPE,
|
|
50
50
|
outputType: DIRECTORY_TYPE,
|
|
51
51
|
serialize: (node) => ({
|
|
52
|
-
name: node.data.name ?? translations[0]['en-US'][
|
|
53
|
-
data: node.data.name ?? translations[0]['en-US'][
|
|
52
|
+
name: node.data.name ?? translations[0]['en-US'][meta.id]['object name placeholder'],
|
|
53
|
+
data: node.data.name ?? translations[0]['en-US'][meta.id]['object name placeholder'],
|
|
54
54
|
type: DIRECTORY_TYPE,
|
|
55
55
|
}),
|
|
56
56
|
deserialize: async (data, ancestors) => {
|
|
@@ -2,23 +2,29 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { type Schema } from 'effect';
|
|
6
|
+
|
|
7
|
+
import { type AnyIntentChain, type Label, defineCapability } from '@dxos/app-framework';
|
|
6
8
|
import { type Space } from '@dxos/react-client/echo';
|
|
7
9
|
import { type DataType } from '@dxos/schema';
|
|
8
|
-
import { type
|
|
10
|
+
import { type DeepReadonly, type Position } from '@dxos/util';
|
|
9
11
|
|
|
10
|
-
import {
|
|
12
|
+
import { meta } from '../meta';
|
|
11
13
|
import { type ObjectForm, type PluginState } from '../types';
|
|
12
14
|
|
|
13
15
|
export namespace SpaceCapabilities {
|
|
14
|
-
export const State = defineCapability<DeepReadonly<PluginState>>(`${
|
|
15
|
-
export const MutableState = defineCapability<PluginState>(`${
|
|
16
|
+
export const State = defineCapability<DeepReadonly<PluginState>>(`${meta.id}/capability/state`);
|
|
17
|
+
export const MutableState = defineCapability<PluginState>(`${meta.id}/capability/state`);
|
|
16
18
|
|
|
17
19
|
export type SettingsSection = { id: string; label: Label; position?: Position };
|
|
18
|
-
export const SettingsSection = defineCapability<SettingsSection>(`${
|
|
20
|
+
export const SettingsSection = defineCapability<SettingsSection>(`${meta.id}/capability/settings-section`);
|
|
21
|
+
|
|
22
|
+
export type onCreateSpace = (params: { space: Space; rootCollection: DataType.Collection }) => AnyIntentChain;
|
|
23
|
+
export const onCreateSpace = defineCapability<onCreateSpace>(`${meta.id}/capability/on-space-created`);
|
|
19
24
|
|
|
20
|
-
export type
|
|
21
|
-
export const
|
|
25
|
+
export type OnSchemaAdded = (params: { space: Space; schema: Schema.Schema.AnyNoContext }) => AnyIntentChain;
|
|
26
|
+
export const OnSchemaAdded = defineCapability<OnSchemaAdded>(`${meta.id}/capability/on-schema-added`);
|
|
22
27
|
|
|
23
|
-
|
|
28
|
+
// TODO(burdon): Should this be view? Forms are UI concepts? (associated with a View/schema).
|
|
29
|
+
export const ObjectForm = defineCapability<ObjectForm<any>>(`${meta.id}/capability/object-form`);
|
|
24
30
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { Capabilities, type PluginContext, contributes } from '@dxos/app-framework';
|
|
6
6
|
import { Obj, Ref } from '@dxos/echo';
|
|
7
7
|
import { Migrations } from '@dxos/migrations';
|
|
8
8
|
import { ClientCapabilities } from '@dxos/plugin-client';
|
|
@@ -11,7 +11,6 @@ export const IntentResolver = lazy(() => import('./intent-resolver'));
|
|
|
11
11
|
export const ReactRoot = lazy(() => import('./react-root'));
|
|
12
12
|
export const ReactSurface = lazy(() => import('./react-surface'));
|
|
13
13
|
export const SchemaDefs = lazy(() => import('./schema-defs'));
|
|
14
|
-
export const SchemaTools = lazy(() => import('./schema-tools'));
|
|
15
14
|
export const SpaceSettings = lazy(() => import('./settings'));
|
|
16
15
|
export const SpaceState = lazy(() => import('./state'));
|
|
17
16
|
export const SpacesReady = lazy(() => import('./spaces-ready'));
|