@dxos/plugin-space 0.8.4-main.dedc0f3 → 0.8.4-main.ead640a
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-D2B75XBS.mjs → CollectionMain-AX7KKXWP.mjs} +4 -4
- package/dist/lib/browser/CollectionMain-AX7KKXWP.mjs.map +7 -0
- package/dist/lib/browser/ObjectDetailsPanel-MQBHG666.mjs +145 -0
- package/dist/lib/browser/ObjectDetailsPanel-MQBHG666.mjs.map +7 -0
- package/dist/lib/browser/ObjectSettings-KNUZFCGS.mjs +151 -0
- package/dist/lib/browser/ObjectSettings-KNUZFCGS.mjs.map +7 -0
- package/dist/lib/browser/RecordMain-MV535I2C.mjs +119 -0
- package/dist/lib/browser/RecordMain-MV535I2C.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-builder-AFC6PNAB.mjs → app-graph-builder-6SNKPPKD.mjs} +61 -58
- package/dist/lib/browser/app-graph-builder-6SNKPPKD.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-Q7QG4EKW.mjs → app-graph-serializer-YGUHIKUW.mjs} +14 -14
- package/dist/lib/browser/app-graph-serializer-YGUHIKUW.mjs.map +7 -0
- package/dist/lib/browser/{chunk-WZYRDFW7.mjs → chunk-2IAM4LHT.mjs} +12 -4
- package/dist/lib/browser/chunk-2IAM4LHT.mjs.map +7 -0
- package/dist/lib/browser/{chunk-S33AYKSS.mjs → chunk-AB7EFWFA.mjs} +47 -38
- package/dist/lib/browser/chunk-AB7EFWFA.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-IRKDREHY.mjs +11 -0
- package/dist/lib/browser/chunk-IRKDREHY.mjs.map +7 -0
- package/dist/lib/browser/{chunk-6GRF7NEF.mjs → chunk-KXSDZJ5T.mjs} +258 -289
- package/dist/lib/browser/chunk-KXSDZJ5T.mjs.map +7 -0
- package/dist/lib/browser/chunk-RLI2IAHK.mjs +20 -0
- package/dist/lib/browser/chunk-RLI2IAHK.mjs.map +7 -0
- package/dist/lib/browser/chunk-TIVKWB5L.mjs +166 -0
- package/dist/lib/browser/chunk-TIVKWB5L.mjs.map +7 -0
- package/dist/lib/browser/{chunk-URST7EEN.mjs → chunk-WS2PJDES.mjs} +13 -9
- package/dist/lib/browser/chunk-WS2PJDES.mjs.map +7 -0
- package/dist/lib/browser/{identity-created-T6ZNVE7S.mjs → identity-created-PW2BA46S.mjs} +3 -3
- package/dist/lib/browser/{identity-created-T6ZNVE7S.mjs.map → identity-created-PW2BA46S.mjs.map} +1 -1
- package/dist/lib/browser/index.mjs +34 -31
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-CO262Q44.mjs → intent-resolver-XQSUBM5U.mjs} +30 -28
- package/dist/lib/browser/intent-resolver-XQSUBM5U.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-root-K4IVLFYZ.mjs → react-root-OIXDY6US.mjs} +11 -11
- package/dist/lib/browser/react-root-OIXDY6US.mjs.map +7 -0
- package/dist/lib/browser/{react-surface-TPUOK2LC.mjs → react-surface-I4BQVF7V.mjs} +42 -73
- package/dist/lib/browser/react-surface-I4BQVF7V.mjs.map +7 -0
- package/dist/lib/browser/{schema-defs-YDPFZELA.mjs → schema-defs-7R7RKCAE.mjs} +5 -5
- package/dist/lib/browser/{schema-defs-YDPFZELA.mjs.map → schema-defs-7R7RKCAE.mjs.map} +1 -1
- package/dist/lib/browser/{settings-ZYH2JWNI.mjs → settings-OBFJ67ZG.mjs} +5 -5
- package/dist/lib/browser/{settings-ZYH2JWNI.mjs.map → settings-OBFJ67ZG.mjs.map} +1 -1
- package/dist/lib/browser/{spaces-ready-3I5LISH4.mjs → spaces-ready-6YB55EJK.mjs} +8 -8
- package/dist/lib/browser/spaces-ready-6YB55EJK.mjs.map +7 -0
- package/dist/lib/browser/{state-2RGW7FQG.mjs → state-LSPRFIRO.mjs} +7 -7
- package/dist/lib/browser/state-LSPRFIRO.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +2 -2
- package/dist/lib/node-esm/{CollectionMain-ZJIFCWKZ.mjs → CollectionMain-EU57SRYK.mjs} +4 -4
- package/dist/lib/node-esm/CollectionMain-EU57SRYK.mjs.map +7 -0
- package/dist/lib/node-esm/ObjectDetailsPanel-NABA2S56.mjs +146 -0
- package/dist/lib/node-esm/ObjectDetailsPanel-NABA2S56.mjs.map +7 -0
- package/dist/lib/node-esm/ObjectSettings-GXGTITF5.mjs +152 -0
- package/dist/lib/node-esm/ObjectSettings-GXGTITF5.mjs.map +7 -0
- package/dist/lib/node-esm/RecordMain-ME2BU65P.mjs +120 -0
- package/dist/lib/node-esm/RecordMain-ME2BU65P.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-OW2EBYRI.mjs → app-graph-builder-PYG5N3FB.mjs} +61 -58
- package/dist/lib/node-esm/app-graph-builder-PYG5N3FB.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-6PGC5WR5.mjs → app-graph-serializer-FVQ2WB3U.mjs} +14 -14
- package/dist/lib/node-esm/app-graph-serializer-FVQ2WB3U.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-RXDT5LA5.mjs → chunk-4F25JKVT.mjs} +13 -9
- package/dist/lib/node-esm/chunk-4F25JKVT.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-LGNPMOXU.mjs → chunk-DNRBVD2G.mjs} +12 -4
- package/dist/lib/node-esm/chunk-DNRBVD2G.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-GHL2523Z.mjs +167 -0
- package/dist/lib/node-esm/chunk-GHL2523Z.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-H5UPFRRH.mjs +21 -0
- package/dist/lib/node-esm/chunk-H5UPFRRH.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-TEUN2E4F.mjs → chunk-QHAVT7PC.mjs} +47 -38
- package/dist/lib/node-esm/chunk-QHAVT7PC.mjs.map +7 -0
- 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-NMCD2PSG.mjs → chunk-X55EOSEF.mjs} +258 -289
- package/dist/lib/node-esm/chunk-X55EOSEF.mjs.map +7 -0
- package/dist/lib/node-esm/{identity-created-AL7NNCKH.mjs → identity-created-MWTLGQRU.mjs} +3 -3
- package/dist/lib/node-esm/{identity-created-AL7NNCKH.mjs.map → identity-created-MWTLGQRU.mjs.map} +1 -1
- package/dist/lib/node-esm/index.mjs +34 -31
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-EXPK4B76.mjs → intent-resolver-27YPEIWX.mjs} +30 -28
- package/dist/lib/node-esm/intent-resolver-27YPEIWX.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-4OQ7MPGW.mjs → react-root-K7YPW753.mjs} +11 -11
- package/dist/lib/node-esm/react-root-K7YPW753.mjs.map +7 -0
- package/dist/lib/node-esm/{react-surface-WXEXIDB7.mjs → react-surface-F5LL3JUY.mjs} +42 -73
- package/dist/lib/node-esm/react-surface-F5LL3JUY.mjs.map +7 -0
- package/dist/lib/node-esm/{schema-defs-OYBCWKAS.mjs → schema-defs-RYG5DSUE.mjs} +5 -5
- package/dist/lib/node-esm/{schema-defs-OYBCWKAS.mjs.map → schema-defs-RYG5DSUE.mjs.map} +1 -1
- package/dist/lib/node-esm/{settings-2RYFMMTP.mjs → settings-QGWWNMMZ.mjs} +5 -5
- package/dist/lib/node-esm/{settings-2RYFMMTP.mjs.map → settings-QGWWNMMZ.mjs.map} +1 -1
- package/dist/lib/node-esm/{spaces-ready-JAP22P57.mjs → spaces-ready-EPHL7RGX.mjs} +8 -8
- package/dist/lib/node-esm/spaces-ready-EPHL7RGX.mjs.map +7 -0
- package/dist/lib/node-esm/{state-7VBVBGNS.mjs → state-TCGOPLRO.mjs} +7 -7
- package/dist/lib/node-esm/state-TCGOPLRO.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.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +4 -3
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +80 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +1 -1
- 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.stories.d.ts +80 -1
- package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +9 -0
- package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -0
- package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts +10 -0
- package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -0
- package/dist/types/src/components/ObjectDetailsPanel/index.d.ts +3 -0
- package/dist/types/src/components/ObjectDetailsPanel/index.d.ts.map +1 -0
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +1 -1
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +1500 -0
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -0
- package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +1 -1
- package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
- package/dist/types/src/components/ObjectSettings/index.d.ts +2 -1
- package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -1
- package/dist/types/src/components/PopoverRenameObject.d.ts +1 -1
- 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 +1 -1
- package/dist/types/src/components/RecordMain.d.ts.map +1 -1
- package/dist/types/src/components/SpacePresence.stories.d.ts +82 -3
- 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 +80 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +81 -2
- package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
- package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +4 -4
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +1 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +1 -1
- package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
- package/dist/types/src/hooks/usePath.d.ts +1 -1
- package/dist/types/src/hooks/usePath.d.ts.map +1 -1
- package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
- package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
- 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 +80 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +54 -52
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +6 -3
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +61 -59
- package/src/SpacePlugin.ts +206 -200
- package/src/capabilities/app-graph-builder.ts +53 -46
- package/src/capabilities/app-graph-serializer.ts +7 -7
- package/src/capabilities/capabilities.ts +15 -10
- package/src/capabilities/intent-resolver.ts +19 -19
- package/src/capabilities/react-root.tsx +2 -2
- package/src/capabilities/react-surface.tsx +31 -102
- package/src/capabilities/spaces-ready.ts +1 -1
- package/src/capabilities/state.ts +2 -2
- package/src/components/AwaitingObject.tsx +2 -2
- package/src/components/CollectionMain.tsx +2 -2
- package/src/components/CollectionSection.tsx +2 -2
- package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +5 -5
- package/src/components/CreateDialog/CreateObjectDialog.tsx +8 -7
- package/src/components/CreateDialog/CreateObjectPanel.tsx +6 -6
- package/src/components/CreateDialog/CreateSpaceDialog.tsx +5 -4
- package/src/components/JoinDialog.tsx +6 -6
- package/src/components/MembersContainer.stories.tsx +6 -5
- package/src/components/MembersContainer.tsx +6 -6
- package/src/components/MenuFooter.tsx +2 -2
- package/src/components/{ObjectDetailsPanel.tsx → ObjectDetailsPanel/ObjectDetailsPanel.tsx} +9 -36
- package/src/components/ObjectDetailsPanel/ObjectForm.tsx +75 -0
- package/src/components/ObjectDetailsPanel/index.ts +7 -0
- package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +3 -3
- package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
- package/src/components/ObjectSettings/BaseObjectSettings.tsx +96 -26
- package/src/components/ObjectSettings/ForeignKeys.tsx +3 -3
- package/src/components/ObjectSettings/index.ts +3 -1
- package/src/components/PersistenceStatus.tsx +2 -2
- package/src/components/PopoverRenameObject.tsx +3 -3
- package/src/components/PopoverRenameSpace.tsx +3 -3
- package/src/components/RecordMain.tsx +61 -9
- package/src/components/SchemaContainer.tsx +3 -3
- package/src/components/SpacePluginSettings.tsx +2 -2
- package/src/components/SpacePresence.stories.tsx +22 -24
- package/src/components/SpacePresence.tsx +3 -3
- package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +9 -4
- package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +13 -12
- package/src/components/SyncStatus/InlineSyncStatus.tsx +7 -7
- package/src/components/SyncStatus/SyncStatus.stories.tsx +4 -5
- package/src/components/SyncStatus/SyncStatus.tsx +92 -5
- package/src/components/ViewEditor.tsx +6 -7
- package/src/components/index.ts +1 -1
- package/src/events.ts +6 -6
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useInputSurfaceLookup.tsx +1 -1
- package/src/hooks/usePath.ts +1 -1
- package/src/hooks/useTypeOptions.ts +59 -0
- package/src/meta.ts +1 -3
- package/src/translations.ts +10 -1
- package/src/types/types.ts +11 -7
- package/src/util.tsx +46 -32
- package/dist/lib/browser/CollectionMain-D2B75XBS.mjs.map +0 -7
- package/dist/lib/browser/ObjectDetailsPanel-J7KGPJJK.mjs +0 -90
- package/dist/lib/browser/ObjectDetailsPanel-J7KGPJJK.mjs.map +0 -7
- package/dist/lib/browser/RecordMain-TEBGAVSL.mjs +0 -68
- package/dist/lib/browser/RecordMain-TEBGAVSL.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-AFC6PNAB.mjs.map +0 -7
- package/dist/lib/browser/app-graph-serializer-Q7QG4EKW.mjs.map +0 -7
- package/dist/lib/browser/chunk-6GRF7NEF.mjs.map +0 -7
- package/dist/lib/browser/chunk-CBYL62HG.mjs +0 -19
- package/dist/lib/browser/chunk-CBYL62HG.mjs.map +0 -7
- package/dist/lib/browser/chunk-ELJDGQTO.mjs +0 -94
- package/dist/lib/browser/chunk-ELJDGQTO.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-S33AYKSS.mjs.map +0 -7
- package/dist/lib/browser/chunk-TUQZO5P4.mjs +0 -20
- package/dist/lib/browser/chunk-TUQZO5P4.mjs.map +0 -7
- package/dist/lib/browser/chunk-URST7EEN.mjs.map +0 -7
- package/dist/lib/browser/chunk-WZYRDFW7.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-CO262Q44.mjs.map +0 -7
- package/dist/lib/browser/react-root-K4IVLFYZ.mjs.map +0 -7
- package/dist/lib/browser/react-surface-TPUOK2LC.mjs.map +0 -7
- package/dist/lib/browser/spaces-ready-3I5LISH4.mjs.map +0 -7
- package/dist/lib/browser/state-2RGW7FQG.mjs.map +0 -7
- package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs.map +0 -7
- package/dist/lib/node-esm/ObjectDetailsPanel-7ADOXZ5W.mjs +0 -91
- package/dist/lib/node-esm/ObjectDetailsPanel-7ADOXZ5W.mjs.map +0 -7
- package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs +0 -70
- package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-OW2EBYRI.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-serializer-6PGC5WR5.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-FJZNSJC4.mjs +0 -20
- package/dist/lib/node-esm/chunk-FJZNSJC4.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HC677WUJ.mjs +0 -21
- package/dist/lib/node-esm/chunk-HC677WUJ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-LGNPMOXU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-NMCD2PSG.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-Q6AAQLQG.mjs +0 -96
- package/dist/lib/node-esm/chunk-Q6AAQLQG.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-RXDT5LA5.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-TEUN2E4F.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-EXPK4B76.mjs.map +0 -7
- package/dist/lib/node-esm/react-root-4OQ7MPGW.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-WXEXIDB7.mjs.map +0 -7
- package/dist/lib/node-esm/spaces-ready-JAP22P57.mjs.map +0 -7
- package/dist/lib/node-esm/state-7VBVBGNS.mjs.map +0 -7
- package/dist/types/src/components/ObjectDetailsPanel.d.ts +0 -9
- package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +0 -1
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { Rx } from '@effect-rx/rx-react';
|
|
6
|
-
import
|
|
6
|
+
import * as Array from 'effect/Array';
|
|
7
|
+
import * as Function from 'effect/Function';
|
|
8
|
+
import * as Option from 'effect/Option';
|
|
9
|
+
import * as Schema from 'effect/Schema';
|
|
7
10
|
|
|
8
11
|
import { Capabilities, type PluginContext, contributes, createIntent } from '@dxos/app-framework';
|
|
9
12
|
import { type QueryResult, type Space, SpaceState, getSpace, isSpace, parseId } from '@dxos/client/echo';
|
|
@@ -12,11 +15,11 @@ import { log } from '@dxos/log';
|
|
|
12
15
|
import { ClientCapabilities } from '@dxos/plugin-client';
|
|
13
16
|
import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';
|
|
14
17
|
import { ROOT_ID, createExtension, rxFromObservable, rxFromSignal } from '@dxos/plugin-graph';
|
|
15
|
-
import { DataType,
|
|
18
|
+
import { DataType, getTypenameFromQuery } from '@dxos/schema';
|
|
16
19
|
import { isNonNullable } from '@dxos/util';
|
|
17
20
|
|
|
18
21
|
import { getActiveSpace } from '../hooks';
|
|
19
|
-
import {
|
|
22
|
+
import { meta } from '../meta';
|
|
20
23
|
import { SPACE_TYPE, SpaceAction, type SpaceSettingsProps } from '../types';
|
|
21
24
|
import {
|
|
22
25
|
SHARED,
|
|
@@ -42,7 +45,7 @@ export default (context: PluginContext) => {
|
|
|
42
45
|
type: SPACES,
|
|
43
46
|
cacheable: ['label', 'role'],
|
|
44
47
|
properties: {
|
|
45
|
-
label: ['spaces label', { ns:
|
|
48
|
+
label: ['spaces label', { ns: meta.id }],
|
|
46
49
|
icon: 'ph--planet--regular',
|
|
47
50
|
testId: 'spacePlugin.spaces',
|
|
48
51
|
role: 'branch',
|
|
@@ -77,11 +80,11 @@ export default (context: PluginContext) => {
|
|
|
77
80
|
return contributes(Capabilities.AppGraphBuilder, [
|
|
78
81
|
// Primary actions.
|
|
79
82
|
createExtension({
|
|
80
|
-
id: `${
|
|
83
|
+
id: `${meta.id}/primary-actions`,
|
|
81
84
|
position: 'hoist',
|
|
82
85
|
actions: (node) =>
|
|
83
86
|
Rx.make((get) =>
|
|
84
|
-
pipe(
|
|
87
|
+
Function.pipe(
|
|
85
88
|
get(node),
|
|
86
89
|
Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
|
|
87
90
|
Option.map(() => [
|
|
@@ -92,7 +95,7 @@ export default (context: PluginContext) => {
|
|
|
92
95
|
await dispatch(createIntent(SpaceAction.OpenCreateSpace));
|
|
93
96
|
},
|
|
94
97
|
properties: {
|
|
95
|
-
label: ['create space label', { ns:
|
|
98
|
+
label: ['create space label', { ns: meta.id }],
|
|
96
99
|
icon: 'ph--plus--regular',
|
|
97
100
|
testId: 'spacePlugin.createSpace',
|
|
98
101
|
disposition: 'menu',
|
|
@@ -105,7 +108,7 @@ export default (context: PluginContext) => {
|
|
|
105
108
|
await dispatch(createIntent(SpaceAction.Join));
|
|
106
109
|
},
|
|
107
110
|
properties: {
|
|
108
|
-
label: ['join space label', { ns:
|
|
111
|
+
label: ['join space label', { ns: meta.id }],
|
|
109
112
|
icon: 'ph--sign-in--regular',
|
|
110
113
|
testId: 'spacePlugin.joinSpace',
|
|
111
114
|
disposition: 'menu',
|
|
@@ -120,7 +123,7 @@ export default (context: PluginContext) => {
|
|
|
120
123
|
await dispatch(createIntent(SpaceAction.OpenMembers, { space }));
|
|
121
124
|
},
|
|
122
125
|
properties: {
|
|
123
|
-
label: ['share space label', { ns:
|
|
126
|
+
label: ['share space label', { ns: meta.id }],
|
|
124
127
|
icon: 'ph--users--regular',
|
|
125
128
|
testId: 'spacePlugin.shareSpace',
|
|
126
129
|
keyBinding: {
|
|
@@ -138,7 +141,7 @@ export default (context: PluginContext) => {
|
|
|
138
141
|
await dispatch(createIntent(SpaceAction.OpenSettings, { space }));
|
|
139
142
|
},
|
|
140
143
|
properties: {
|
|
141
|
-
label: ['open current space settings label', { ns:
|
|
144
|
+
label: ['open current space settings label', { ns: meta.id }],
|
|
142
145
|
icon: 'ph--faders--regular',
|
|
143
146
|
keyBinding: {
|
|
144
147
|
macos: 'meta+shift+,',
|
|
@@ -154,11 +157,11 @@ export default (context: PluginContext) => {
|
|
|
154
157
|
|
|
155
158
|
// Create spaces group node.
|
|
156
159
|
createExtension({
|
|
157
|
-
id: `${
|
|
160
|
+
id: `${meta.id}/root`,
|
|
158
161
|
position: 'hoist',
|
|
159
162
|
connector: (node) =>
|
|
160
163
|
Rx.make((get) =>
|
|
161
|
-
pipe(
|
|
164
|
+
Function.pipe(
|
|
162
165
|
get(node),
|
|
163
166
|
Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
|
|
164
167
|
Option.map(() => [spacesNode]),
|
|
@@ -174,7 +177,7 @@ export default (context: PluginContext) => {
|
|
|
174
177
|
connector: (node) => {
|
|
175
178
|
let query: QueryResult<Type.Expando> | undefined;
|
|
176
179
|
return Rx.make((get) =>
|
|
177
|
-
pipe(
|
|
180
|
+
Function.pipe(
|
|
178
181
|
get(node),
|
|
179
182
|
Option.flatMap((node) => (node.id === SPACES ? Option.some(node) : Option.none())),
|
|
180
183
|
Option.map(() => {
|
|
@@ -191,7 +194,7 @@ export default (context: PluginContext) => {
|
|
|
191
194
|
}
|
|
192
195
|
|
|
193
196
|
const settings = get(context.capabilities(Capabilities.SettingsStore))[0]?.getStore<SpaceSettingsProps>(
|
|
194
|
-
|
|
197
|
+
meta.id,
|
|
195
198
|
)?.value;
|
|
196
199
|
|
|
197
200
|
// TODO(wittjosiah): During client reset, accessing default space throws.
|
|
@@ -276,10 +279,10 @@ export default (context: PluginContext) => {
|
|
|
276
279
|
|
|
277
280
|
// Create space actions.
|
|
278
281
|
createExtension({
|
|
279
|
-
id: `${
|
|
282
|
+
id: `${meta.id}/actions`,
|
|
280
283
|
actions: (node) =>
|
|
281
284
|
Rx.make((get) =>
|
|
282
|
-
pipe(
|
|
285
|
+
Function.pipe(
|
|
283
286
|
get(node),
|
|
284
287
|
Option.flatMap((node) =>
|
|
285
288
|
node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),
|
|
@@ -308,10 +311,10 @@ export default (context: PluginContext) => {
|
|
|
308
311
|
|
|
309
312
|
// Create nodes for objects in the root collection of a space.
|
|
310
313
|
createExtension({
|
|
311
|
-
id: `${
|
|
314
|
+
id: `${meta.id}/root-collection`,
|
|
312
315
|
connector: (node) =>
|
|
313
316
|
Rx.make((get) =>
|
|
314
|
-
pipe(
|
|
317
|
+
Function.pipe(
|
|
315
318
|
get(node),
|
|
316
319
|
Option.flatMap((node) =>
|
|
317
320
|
node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),
|
|
@@ -334,7 +337,7 @@ export default (context: PluginContext) => {
|
|
|
334
337
|
|
|
335
338
|
return get(
|
|
336
339
|
rxFromSignal(() =>
|
|
337
|
-
pipe(
|
|
340
|
+
Function.pipe(
|
|
338
341
|
collection.objects,
|
|
339
342
|
Array.map((object) => object.target),
|
|
340
343
|
Array.filter(isNonNullable),
|
|
@@ -358,10 +361,10 @@ export default (context: PluginContext) => {
|
|
|
358
361
|
|
|
359
362
|
// Create nodes for objects in a collection or by its fully qualified id.
|
|
360
363
|
createExtension({
|
|
361
|
-
id: `${
|
|
364
|
+
id: `${meta.id}/objects`,
|
|
362
365
|
connector: (node) =>
|
|
363
366
|
Rx.make((get) =>
|
|
364
|
-
pipe(
|
|
367
|
+
Function.pipe(
|
|
365
368
|
get(node),
|
|
366
369
|
Option.flatMap((node) =>
|
|
367
370
|
Obj.instanceOf(DataType.Collection, node.data) ? Option.some(node.data) : Option.none(),
|
|
@@ -372,7 +375,7 @@ export default (context: PluginContext) => {
|
|
|
372
375
|
|
|
373
376
|
return get(
|
|
374
377
|
rxFromSignal(() =>
|
|
375
|
-
pipe(
|
|
378
|
+
Function.pipe(
|
|
376
379
|
collection.objects,
|
|
377
380
|
Array.map((object) => object.target),
|
|
378
381
|
Array.filter(isNonNullable),
|
|
@@ -429,18 +432,18 @@ export default (context: PluginContext) => {
|
|
|
429
432
|
|
|
430
433
|
// Create nodes for objects in a query collection.
|
|
431
434
|
createExtension({
|
|
432
|
-
id: `${
|
|
435
|
+
id: `${meta.id}/query-collection-objects`,
|
|
433
436
|
connector: (node) => {
|
|
434
437
|
let query: QueryResult<Type.Expando> | undefined;
|
|
435
438
|
return Rx.make((get) =>
|
|
436
|
-
pipe(
|
|
439
|
+
Function.pipe(
|
|
437
440
|
get(node),
|
|
438
441
|
Option.flatMap((node) =>
|
|
439
442
|
Obj.instanceOf(DataType.QueryCollection, node.data) ? Option.some(node.data) : Option.none(),
|
|
440
443
|
),
|
|
441
444
|
Option.flatMap((collection) => {
|
|
442
445
|
const space = getSpace(collection);
|
|
443
|
-
const typename =
|
|
446
|
+
const typename = getTypenameFromQuery(collection.query);
|
|
444
447
|
return typename && space ? Option.some({ typename, space }) : Option.none();
|
|
445
448
|
}),
|
|
446
449
|
Option.map(({ typename, space }) => {
|
|
@@ -486,15 +489,15 @@ export default (context: PluginContext) => {
|
|
|
486
489
|
|
|
487
490
|
// Static schema records.
|
|
488
491
|
createExtension({
|
|
489
|
-
id: `${
|
|
492
|
+
id: `${meta.id}/static-schemas`,
|
|
490
493
|
connector: (node) => {
|
|
491
494
|
const client = context.getCapability(ClientCapabilities.Client);
|
|
492
495
|
return Rx.make((get) =>
|
|
493
|
-
pipe(
|
|
496
|
+
Function.pipe(
|
|
494
497
|
get(node),
|
|
495
498
|
Option.flatMap((node) =>
|
|
496
499
|
Obj.instanceOf(DataType.QueryCollection, node.data) &&
|
|
497
|
-
|
|
500
|
+
getTypenameFromQuery(node.data.query) === DataType.StoredSchema.typename
|
|
498
501
|
? Option.some(node.data)
|
|
499
502
|
: Option.none(),
|
|
500
503
|
),
|
|
@@ -518,11 +521,11 @@ export default (context: PluginContext) => {
|
|
|
518
521
|
|
|
519
522
|
// Create static schema actions.
|
|
520
523
|
createExtension({
|
|
521
|
-
id: `${
|
|
524
|
+
id: `${meta.id}/static-schema-actions`,
|
|
522
525
|
actions: (node) => {
|
|
523
526
|
let query: QueryResult<DataType.View> | undefined;
|
|
524
527
|
return Rx.make((get) =>
|
|
525
|
-
pipe(
|
|
528
|
+
Function.pipe(
|
|
526
529
|
get(node),
|
|
527
530
|
Option.flatMap((node) => {
|
|
528
531
|
const space = isSpace(node.properties.space) ? node.properties.space : undefined;
|
|
@@ -538,7 +541,9 @@ export default (context: PluginContext) => {
|
|
|
538
541
|
const filteredViews = get(
|
|
539
542
|
rxFromSignal(() =>
|
|
540
543
|
// TODO(wittjosiah): Remove cast.
|
|
541
|
-
views.filter(
|
|
544
|
+
views.filter(
|
|
545
|
+
(view) => getTypenameFromQuery(view.query.ast) === Type.getTypename(schema as Type.Obj.Any),
|
|
546
|
+
),
|
|
542
547
|
),
|
|
543
548
|
);
|
|
544
549
|
const deletable = filteredViews.length === 0;
|
|
@@ -564,11 +569,11 @@ export default (context: PluginContext) => {
|
|
|
564
569
|
|
|
565
570
|
// Create nodes for schema views.
|
|
566
571
|
createExtension({
|
|
567
|
-
id: `${
|
|
572
|
+
id: `${meta.id}/schema-views`,
|
|
568
573
|
connector: (node) => {
|
|
569
574
|
let query: QueryResult<DataType.View> | undefined;
|
|
570
575
|
return Rx.make((get) =>
|
|
571
|
-
pipe(
|
|
576
|
+
Function.pipe(
|
|
572
577
|
get(node),
|
|
573
578
|
Option.flatMap((node) => {
|
|
574
579
|
const space = getSpace(node.data) ?? (isSpace(node.properties.space) ? node.properties.space : undefined);
|
|
@@ -585,7 +590,7 @@ export default (context: PluginContext) => {
|
|
|
585
590
|
// TODO(wittjosiah): Remove cast.
|
|
586
591
|
const typename = Schema.isSchema(schema) ? Type.getTypename(schema as Type.Obj.Any) : schema.typename;
|
|
587
592
|
return get(rxFromQuery(query))
|
|
588
|
-
.filter((view) =>
|
|
593
|
+
.filter((view) => getTypenameFromQuery(view.query.ast) === typename)
|
|
589
594
|
.map((view) =>
|
|
590
595
|
get(
|
|
591
596
|
rxFromSignal(() =>
|
|
@@ -608,7 +613,7 @@ export default (context: PluginContext) => {
|
|
|
608
613
|
|
|
609
614
|
// Create record nodes.
|
|
610
615
|
createExtension({
|
|
611
|
-
id: `${
|
|
616
|
+
id: `${meta.id}/records`,
|
|
612
617
|
resolver: (id) => {
|
|
613
618
|
let query: QueryResult<Type.Expando> | undefined;
|
|
614
619
|
return Rx.make((get) => {
|
|
@@ -639,15 +644,17 @@ export default (context: PluginContext) => {
|
|
|
639
644
|
|
|
640
645
|
// Create collection actions and action groups.
|
|
641
646
|
createExtension({
|
|
642
|
-
id: `${
|
|
647
|
+
id: `${meta.id}/object-actions`,
|
|
643
648
|
actions: (node) => {
|
|
644
649
|
let query: QueryResult<DataType.View> | undefined;
|
|
645
650
|
return Rx.make((get) =>
|
|
646
|
-
pipe(
|
|
651
|
+
Function.pipe(
|
|
647
652
|
get(node),
|
|
648
653
|
Option.flatMap((node) => {
|
|
649
654
|
const space = getSpace(node.data);
|
|
650
|
-
return space && Obj.isObject(node.data)
|
|
655
|
+
return space && Obj.isObject(node.data) && Obj.getTypename(node.data) === node.type
|
|
656
|
+
? Option.some({ space, object: node.data })
|
|
657
|
+
: Option.none();
|
|
651
658
|
}),
|
|
652
659
|
Option.flatMap(({ space, object }) => {
|
|
653
660
|
const isSchema = Obj.instanceOf(DataType.StoredSchema, object);
|
|
@@ -661,12 +668,12 @@ export default (context: PluginContext) => {
|
|
|
661
668
|
// Don't allow the Records smart collection to be deleted.
|
|
662
669
|
!(
|
|
663
670
|
Obj.instanceOf(DataType.QueryCollection, object) &&
|
|
664
|
-
|
|
671
|
+
getTypenameFromQuery(object.query) === DataType.StoredSchema.typename
|
|
665
672
|
);
|
|
666
673
|
if (isSchema && query) {
|
|
667
674
|
const views = get(rxFromQuery(query));
|
|
668
675
|
const filteredViews = get(
|
|
669
|
-
rxFromSignal(() => views.filter((view) =>
|
|
676
|
+
rxFromSignal(() => views.filter((view) => getTypenameFromQuery(view.query.ast) === object.typename)),
|
|
670
677
|
);
|
|
671
678
|
deletable = filteredViews.length === 0;
|
|
672
679
|
}
|
|
@@ -698,10 +705,10 @@ export default (context: PluginContext) => {
|
|
|
698
705
|
|
|
699
706
|
// View selected objects.
|
|
700
707
|
createExtension({
|
|
701
|
-
id: `${
|
|
708
|
+
id: `${meta.id}/selected-objects`,
|
|
702
709
|
connector: (node) =>
|
|
703
710
|
Rx.make((get) =>
|
|
704
|
-
pipe(
|
|
711
|
+
Function.pipe(
|
|
705
712
|
get(node),
|
|
706
713
|
Option.flatMap((node) => (Obj.instanceOf(DataType.View, node.data) ? Option.some(node) : Option.none())),
|
|
707
714
|
Option.map((node) => [
|
|
@@ -710,7 +717,7 @@ export default (context: PluginContext) => {
|
|
|
710
717
|
type: PLANK_COMPANION_TYPE,
|
|
711
718
|
data: 'selected-objects',
|
|
712
719
|
properties: {
|
|
713
|
-
label: ['companion selected objects label', { ns:
|
|
720
|
+
label: ['companion selected objects label', { ns: meta.id }],
|
|
714
721
|
icon: 'ph--tree-view--regular',
|
|
715
722
|
disposition: 'hidden',
|
|
716
723
|
},
|
|
@@ -723,10 +730,10 @@ export default (context: PluginContext) => {
|
|
|
723
730
|
|
|
724
731
|
// Object settings plank companion.
|
|
725
732
|
createExtension({
|
|
726
|
-
id: `${
|
|
733
|
+
id: `${meta.id}/settings`,
|
|
727
734
|
connector: (node) =>
|
|
728
735
|
Rx.make((get) =>
|
|
729
|
-
pipe(
|
|
736
|
+
Function.pipe(
|
|
730
737
|
get(node),
|
|
731
738
|
Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node) : Option.none())),
|
|
732
739
|
Option.map((node) => [
|
|
@@ -735,7 +742,7 @@ export default (context: PluginContext) => {
|
|
|
735
742
|
type: PLANK_COMPANION_TYPE,
|
|
736
743
|
data: 'settings',
|
|
737
744
|
properties: {
|
|
738
|
-
label: ['object settings label', { ns:
|
|
745
|
+
label: ['object settings label', { ns: meta.id }],
|
|
739
746
|
icon: 'ph--sliders--regular',
|
|
740
747
|
disposition: 'hidden',
|
|
741
748
|
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,29 +2,34 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import type * as Schema from 'effect/Schema';
|
|
6
6
|
|
|
7
7
|
import { type AnyIntentChain, type Label, defineCapability } from '@dxos/app-framework';
|
|
8
8
|
import { type Space } from '@dxos/react-client/echo';
|
|
9
9
|
import { type DataType } from '@dxos/schema';
|
|
10
10
|
import { type DeepReadonly, type Position } from '@dxos/util';
|
|
11
11
|
|
|
12
|
-
import {
|
|
12
|
+
import { meta } from '../meta';
|
|
13
13
|
import { type ObjectForm, type PluginState } from '../types';
|
|
14
14
|
|
|
15
15
|
export namespace SpaceCapabilities {
|
|
16
|
-
export const State = defineCapability<DeepReadonly<PluginState>>(`${
|
|
17
|
-
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`);
|
|
18
18
|
|
|
19
19
|
export type SettingsSection = { id: string; label: Label; position?: Position };
|
|
20
|
-
export const SettingsSection = defineCapability<SettingsSection>(`${
|
|
20
|
+
export const SettingsSection = defineCapability<SettingsSection>(`${meta.id}/capability/settings-section`);
|
|
21
21
|
|
|
22
|
-
export type
|
|
23
|
-
export const
|
|
22
|
+
export type onCreateSpace = (params: { space: Space; rootCollection: DataType.Collection }) => AnyIntentChain;
|
|
23
|
+
export const onCreateSpace = defineCapability<onCreateSpace>(`${meta.id}/capability/on-space-created`);
|
|
24
24
|
|
|
25
|
-
export type OnSchemaAdded = (params: {
|
|
26
|
-
|
|
25
|
+
export type OnSchemaAdded = (params: {
|
|
26
|
+
space: Space;
|
|
27
|
+
schema: Schema.Schema.AnyNoContext;
|
|
28
|
+
// TODO(wittjosiah): This is leaky.
|
|
29
|
+
show?: boolean;
|
|
30
|
+
}) => AnyIntentChain;
|
|
31
|
+
export const OnSchemaAdded = defineCapability<OnSchemaAdded>(`${meta.id}/capability/on-schema-added`);
|
|
27
32
|
|
|
28
33
|
// TODO(burdon): Should this be view? Forms are UI concepts? (associated with a View/schema).
|
|
29
|
-
export const ObjectForm = defineCapability<ObjectForm<any>>(`${
|
|
34
|
+
export const ObjectForm = defineCapability<ObjectForm<any>>(`${meta.id}/capability/object-form`);
|
|
30
35
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import * as Effect from 'effect/Effect';
|
|
6
6
|
|
|
7
7
|
import {
|
|
8
8
|
Capabilities,
|
|
@@ -21,7 +21,7 @@ import { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata
|
|
|
21
21
|
import { SpaceState, fullyQualifiedId, getSpace, isSpace } from '@dxos/react-client/echo';
|
|
22
22
|
import { Invitation, InvitationEncoder } from '@dxos/react-client/invitations';
|
|
23
23
|
import { ATTENDABLE_PATH_SEPARATOR } from '@dxos/react-ui-attention';
|
|
24
|
-
import { DataType, ProjectionModel,
|
|
24
|
+
import { DataType, ProjectionModel, getTypenameFromQuery } from '@dxos/schema';
|
|
25
25
|
|
|
26
26
|
import {
|
|
27
27
|
CREATE_OBJECT_DIALOG,
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
POPOVER_RENAME_SPACE,
|
|
34
34
|
} from '../components';
|
|
35
35
|
import { SpaceEvents } from '../events';
|
|
36
|
-
import {
|
|
36
|
+
import { meta } from '../meta';
|
|
37
37
|
import { CollectionAction, SpaceAction } from '../types';
|
|
38
38
|
import { COMPOSER_SPACE_LOCK, cloneObject, getNestedObjects } from '../util';
|
|
39
39
|
|
|
@@ -88,15 +88,15 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
|
|
|
88
88
|
|
|
89
89
|
// Create records smart collection.
|
|
90
90
|
const records = Obj.make(DataType.QueryCollection, {
|
|
91
|
-
query: Query.select(Filter.
|
|
91
|
+
query: Query.select(Filter.type(DataType.StoredSchema)).ast,
|
|
92
92
|
});
|
|
93
93
|
collection.objects.push(Ref.make(records));
|
|
94
94
|
|
|
95
95
|
// Allow other plugins to add default content.
|
|
96
96
|
await context.activatePromise(SpaceEvents.SpaceCreated);
|
|
97
|
-
const
|
|
98
|
-
const spaceCreatedIntents =
|
|
99
|
-
|
|
97
|
+
const onCreateSpaceCallbacks = context.getCapabilities(SpaceCapabilities.onCreateSpace);
|
|
98
|
+
const spaceCreatedIntents = onCreateSpaceCallbacks.map((onCreateSpace) =>
|
|
99
|
+
onCreateSpace({ space, rootCollection: collection }),
|
|
100
100
|
);
|
|
101
101
|
|
|
102
102
|
return {
|
|
@@ -323,7 +323,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
|
|
|
323
323
|
}),
|
|
324
324
|
createResolver({
|
|
325
325
|
intent: SpaceAction.UseStaticSchema,
|
|
326
|
-
resolve: async ({ space, typename }) => {
|
|
326
|
+
resolve: async ({ space, typename, show }) => {
|
|
327
327
|
const client = context.getCapability(ClientCapabilities.Client);
|
|
328
328
|
const schema = client.graph.schemaRegistry.schemas.find((schema) => Type.getTypename(schema) === typename);
|
|
329
329
|
invariant(schema, `Schema not found: ${typename}`);
|
|
@@ -338,7 +338,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
|
|
|
338
338
|
|
|
339
339
|
await context.activatePromise(SpaceEvents.SchemaAdded);
|
|
340
340
|
const onSchemaAdded = context.getCapabilities(SpaceCapabilities.OnSchemaAdded);
|
|
341
|
-
const schemaAddedIntents = onSchemaAdded.map((onSchemaAdded) => onSchemaAdded({ space, schema }));
|
|
341
|
+
const schemaAddedIntents = onSchemaAdded.map((onSchemaAdded) => onSchemaAdded({ space, schema, show }));
|
|
342
342
|
|
|
343
343
|
return {
|
|
344
344
|
data: {},
|
|
@@ -361,7 +361,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
|
|
|
361
361
|
}),
|
|
362
362
|
createResolver({
|
|
363
363
|
intent: SpaceAction.AddSchema,
|
|
364
|
-
resolve: async ({ space, name, typename, version, schema: schemaInput }) => {
|
|
364
|
+
resolve: async ({ space, name, typename, version, schema: schemaInput, show }) => {
|
|
365
365
|
const [schema] = await space.db.schemaRegistry.register([schemaInput]);
|
|
366
366
|
if (name) {
|
|
367
367
|
schema.storedSchema.name = name;
|
|
@@ -375,7 +375,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
|
|
|
375
375
|
|
|
376
376
|
await context.activatePromise(SpaceEvents.SchemaAdded);
|
|
377
377
|
const onSchemaAdded = context.getCapabilities(SpaceCapabilities.OnSchemaAdded);
|
|
378
|
-
const schemaAddedIntents = onSchemaAdded.map((onSchemaAdded) => onSchemaAdded({ space, schema }));
|
|
378
|
+
const schemaAddedIntents = onSchemaAdded.map((onSchemaAdded) => onSchemaAdded({ space, schema, show }));
|
|
379
379
|
|
|
380
380
|
return {
|
|
381
381
|
data: {
|
|
@@ -406,7 +406,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
|
|
|
406
406
|
resolve: async ({ view, fieldId, deletionData }, undo) => {
|
|
407
407
|
const space = getSpace(view);
|
|
408
408
|
invariant(space);
|
|
409
|
-
const typename =
|
|
409
|
+
const typename = getTypenameFromQuery(view.query.ast);
|
|
410
410
|
invariant(typename);
|
|
411
411
|
const schema = await space.db.schemaRegistry.query({ typename }).firstOrUndefined();
|
|
412
412
|
invariant(schema);
|
|
@@ -415,7 +415,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
|
|
|
415
415
|
const { deleted, index } = projection.deleteFieldProjection(fieldId);
|
|
416
416
|
return {
|
|
417
417
|
undoable: {
|
|
418
|
-
message: ['field deleted label', { ns:
|
|
418
|
+
message: ['field deleted label', { ns: meta.id }],
|
|
419
419
|
data: { deletionData: { ...deleted, index } },
|
|
420
420
|
},
|
|
421
421
|
};
|
|
@@ -470,13 +470,13 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
|
|
|
470
470
|
createIntent(LayoutAction.AddToast, {
|
|
471
471
|
part: 'toast',
|
|
472
472
|
subject: {
|
|
473
|
-
id: `${
|
|
474
|
-
title: ['space limit label', { ns:
|
|
475
|
-
description: ['space limit description', { ns:
|
|
473
|
+
id: `${meta.id}/space-limit`,
|
|
474
|
+
title: ['space limit label', { ns: meta.id }],
|
|
475
|
+
description: ['space limit description', { ns: meta.id }],
|
|
476
476
|
duration: 5_000,
|
|
477
477
|
icon: 'ph--warning--regular',
|
|
478
|
-
actionLabel: ['remove deleted objects label', { ns:
|
|
479
|
-
actionAlt: ['remove deleted objects alt', { ns:
|
|
478
|
+
actionLabel: ['remove deleted objects label', { ns: meta.id }],
|
|
479
|
+
actionAlt: ['remove deleted objects alt', { ns: meta.id }],
|
|
480
480
|
closeLabel: ['close label', { ns: 'os' }],
|
|
481
481
|
onAction: () => space.db.coreDatabase.unlinkDeletedObjects(),
|
|
482
482
|
},
|
|
@@ -605,7 +605,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
|
|
|
605
605
|
return {
|
|
606
606
|
undoable: {
|
|
607
607
|
// TODO(ZaymonFC): Pluralize if more than one object.
|
|
608
|
-
message: [undoMessageKey, { ns:
|
|
608
|
+
message: [undoMessageKey, { ns: meta.id }],
|
|
609
609
|
data: { deletionData },
|
|
610
610
|
},
|
|
611
611
|
intents:
|
|
@@ -7,13 +7,13 @@ import React from 'react';
|
|
|
7
7
|
import { Capabilities, contributes, useCapability } from '@dxos/app-framework';
|
|
8
8
|
|
|
9
9
|
import { AwaitingObject } from '../components';
|
|
10
|
-
import {
|
|
10
|
+
import { meta } from '../meta';
|
|
11
11
|
|
|
12
12
|
import { SpaceCapabilities } from './capabilities';
|
|
13
13
|
|
|
14
14
|
export default () =>
|
|
15
15
|
contributes(Capabilities.ReactRoot, {
|
|
16
|
-
id:
|
|
16
|
+
id: meta.id,
|
|
17
17
|
root: () => {
|
|
18
18
|
const state = useCapability(SpaceCapabilities.State);
|
|
19
19
|
return state.awaiting ? <AwaitingObject id={state.awaiting} /> : null;
|