@dxos/plugin-space 0.7.5-main.ff8607b → 0.7.5-staging.b81e783
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/{app-graph-builder-J4NX44Y4.mjs → app-graph-builder-MGK5HWPZ.mjs} +21 -100
- package/dist/lib/browser/app-graph-builder-MGK5HWPZ.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-QF7VVRCV.mjs → app-graph-serializer-FOWFLYGU.mjs} +4 -4
- package/dist/lib/browser/{chunk-6UIFMVVI.mjs → chunk-23RVI5FZ.mjs} +16 -5
- package/dist/lib/browser/chunk-23RVI5FZ.mjs.map +7 -0
- package/dist/lib/browser/{chunk-RLZQJD47.mjs → chunk-NU7WDVGN.mjs} +2 -1
- package/dist/lib/browser/chunk-NU7WDVGN.mjs.map +7 -0
- package/dist/lib/browser/{chunk-XZ2NH3CP.mjs → chunk-POARSSRI.mjs} +306 -210
- package/dist/lib/browser/chunk-POARSSRI.mjs.map +7 -0
- package/dist/lib/browser/{chunk-SDK7RZI3.mjs → chunk-UDWHTKB5.mjs} +6 -3
- package/dist/lib/browser/chunk-UDWHTKB5.mjs.map +7 -0
- package/dist/lib/browser/{chunk-XPZ6IIXF.mjs → chunk-ULA2UQJ4.mjs} +15 -1
- package/dist/lib/browser/chunk-ULA2UQJ4.mjs.map +7 -0
- package/dist/lib/browser/{identity-created-25TK5XNO.mjs → identity-created-FYGS6TBH.mjs} +2 -2
- package/dist/lib/browser/index.mjs +55 -21
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-IEDVV74T.mjs → intent-resolver-E2UU3DAS.mjs} +86 -54
- package/dist/lib/browser/intent-resolver-E2UU3DAS.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-root-6VRPRLQR.mjs → react-root-STUND2SO.mjs} +5 -5
- package/dist/lib/browser/{react-surface-DMNDXLZ7.mjs → react-surface-P7CKFNJR.mjs} +16 -22
- package/dist/lib/browser/react-surface-P7CKFNJR.mjs.map +7 -0
- package/dist/lib/browser/schema-5W3DSY2E.mjs +24 -0
- package/dist/lib/browser/schema-5W3DSY2E.mjs.map +7 -0
- package/dist/lib/browser/{settings-K4JPYYEM.mjs → settings-PHPCXX33.mjs} +2 -2
- package/dist/lib/browser/{spaces-ready-2MUWWVVO.mjs → spaces-ready-K47RR7N2.mjs} +4 -4
- package/dist/lib/browser/{state-6DCY5YJP.mjs → state-INJ63O57.mjs} +2 -2
- package/dist/lib/browser/types/index.mjs +5 -3
- package/dist/lib/node/{app-graph-builder-ZOPG4MOS.cjs → app-graph-builder-ZIUBXRPA.cjs} +45 -124
- package/dist/lib/node/app-graph-builder-ZIUBXRPA.cjs.map +7 -0
- package/dist/lib/node/{app-graph-serializer-QE2G4MWB.cjs → app-graph-serializer-VQOGHKXL.cjs} +20 -20
- package/dist/lib/node/{chunk-3QWZCN6L.cjs → chunk-OVGKWJOC.cjs} +51 -40
- package/dist/lib/node/chunk-OVGKWJOC.cjs.map +7 -0
- package/dist/lib/node/{chunk-SZEIQGQU.cjs → chunk-RHYA4XUB.cjs} +367 -270
- package/dist/lib/node/chunk-RHYA4XUB.cjs.map +7 -0
- package/dist/lib/node/{chunk-D6BFKOXY.cjs → chunk-U6DYXAR3.cjs} +10 -7
- package/dist/lib/node/chunk-U6DYXAR3.cjs.map +7 -0
- package/dist/lib/node/{chunk-6MEOP3DH.cjs → chunk-WAJKBO3J.cjs} +21 -6
- package/dist/lib/node/chunk-WAJKBO3J.cjs.map +7 -0
- package/dist/lib/node/{chunk-UX3U4RU2.cjs → chunk-YZKNRFHU.cjs} +5 -4
- package/dist/lib/node/chunk-YZKNRFHU.cjs.map +7 -0
- package/dist/lib/node/{identity-created-7G5U7R36.cjs → identity-created-AXI64BLE.cjs} +6 -6
- package/dist/lib/node/index.cjs +108 -75
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/{intent-resolver-N2W2L6OL.cjs → intent-resolver-TJ5DFPZP.cjs} +136 -105
- package/dist/lib/node/intent-resolver-TJ5DFPZP.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-root-YD35W3VU.cjs → react-root-WQGBCJ2K.cjs} +10 -10
- package/dist/lib/node/{react-surface-QPLXK7DT.cjs → react-surface-GSEV6XCR.cjs} +49 -57
- package/dist/lib/node/react-surface-GSEV6XCR.cjs.map +7 -0
- package/dist/lib/node/schema-YN7WVFRX.cjs +40 -0
- package/dist/lib/node/schema-YN7WVFRX.cjs.map +7 -0
- package/dist/lib/node/{settings-TEELGWS4.cjs → settings-5QYFWNH7.cjs} +6 -6
- package/dist/lib/node/{spaces-ready-PZZQWS6T.cjs → spaces-ready-FQNAKR7G.cjs} +13 -13
- package/dist/lib/node/{state-WPZC4JXB.cjs → state-57UE3DYE.cjs} +6 -6
- package/dist/lib/node/types/index.cjs +18 -16
- package/dist/lib/node/types/index.cjs.map +2 -2
- package/dist/lib/node-esm/{app-graph-builder-TKGLOK22.mjs → app-graph-builder-TERVM2SL.mjs} +21 -100
- package/dist/lib/node-esm/app-graph-builder-TERVM2SL.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-HLX2JRNF.mjs → app-graph-serializer-GZRSWHEN.mjs} +4 -4
- package/dist/lib/node-esm/{chunk-4UX5WGKJ.mjs → chunk-2TQ2AJEZ.mjs} +6 -3
- package/dist/lib/node-esm/chunk-2TQ2AJEZ.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-LGL4A5B5.mjs → chunk-6RSVVEPS.mjs} +2 -1
- package/dist/lib/node-esm/chunk-6RSVVEPS.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-N6EAOMIS.mjs → chunk-ONKFX23L.mjs} +306 -210
- package/dist/lib/node-esm/chunk-ONKFX23L.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-LA45TPAN.mjs → chunk-PGH5L7MV.mjs} +16 -5
- package/dist/lib/node-esm/chunk-PGH5L7MV.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-AAQRELDK.mjs → chunk-TRNZQEEN.mjs} +15 -1
- package/dist/lib/node-esm/chunk-TRNZQEEN.mjs.map +7 -0
- package/dist/lib/node-esm/{identity-created-7THGZ7EW.mjs → identity-created-3CGEXNPO.mjs} +2 -2
- package/dist/lib/node-esm/index.mjs +55 -21
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-L2TKJU4I.mjs → intent-resolver-7NJCJ3FA.mjs} +86 -54
- package/dist/lib/node-esm/intent-resolver-7NJCJ3FA.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-Q5MFDXZE.mjs → react-root-OLYAEMP5.mjs} +5 -5
- package/dist/lib/node-esm/{react-surface-RQQZ5BOG.mjs → react-surface-6IFC6ZMN.mjs} +16 -22
- package/dist/lib/node-esm/react-surface-6IFC6ZMN.mjs.map +7 -0
- package/dist/lib/node-esm/schema-LOR2EVGY.mjs +25 -0
- package/dist/lib/node-esm/schema-LOR2EVGY.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-KXYUZBLN.mjs → settings-H6MXTEQM.mjs} +2 -2
- package/dist/lib/node-esm/{spaces-ready-MWNP3WBX.mjs → spaces-ready-HKAQG5SA.mjs} +4 -4
- package/dist/lib/node-esm/{state-5GH2D5U4.mjs → state-VYA6OFHD.mjs} +2 -2
- package/dist/lib/node-esm/types/index.mjs +5 -3
- package/dist/types/src/SpacePlugin.d.ts +5 -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 +2 -1
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +2 -0
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +2 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/schema.d.ts +4 -0
- package/dist/types/src/capabilities/schema.d.ts.map +1 -0
- package/dist/types/src/components/AdvancedObjectSettings/AdvancedObjectSettings.d.ts +1 -2
- package/dist/types/src/components/AdvancedObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
- package/dist/types/src/components/AdvancedObjectSettings/ForeignKeys.d.ts +1 -2
- package/dist/types/src/components/AdvancedObjectSettings/ForeignKeys.d.ts.map +1 -1
- package/dist/types/src/components/AwaitingObject.d.ts +1 -2
- package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
- package/dist/types/src/components/BaseObjectSettings.d.ts +1 -2
- package/dist/types/src/components/BaseObjectSettings.d.ts.map +1 -1
- package/dist/types/src/components/CollectionMain.d.ts +1 -2
- package/dist/types/src/components/CollectionMain.d.ts.map +1 -1
- package/dist/types/src/components/CollectionSection.d.ts +1 -2
- package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +2 -4
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +5 -7
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -2
- package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
- package/dist/types/src/components/JoinDialog.d.ts +1 -2
- package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
- package/dist/types/src/components/MenuFooter.d.ts +1 -2
- package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
- package/dist/types/src/components/PersistenceStatus.d.ts +1 -2
- package/dist/types/src/components/PersistenceStatus.d.ts.map +1 -1
- package/dist/types/src/components/PopoverAddSpace.d.ts +3 -0
- package/dist/types/src/components/PopoverAddSpace.d.ts.map +1 -0
- package/dist/types/src/components/PopoverRenameObject.d.ts +1 -2
- package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
- package/dist/types/src/components/PopoverRenameSpace.d.ts +1 -2
- package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
- package/dist/types/src/components/ShareSpaceButton.d.ts +2 -3
- package/dist/types/src/components/ShareSpaceButton.d.ts.map +1 -1
- package/dist/types/src/components/SpacePluginSettings.d.ts +1 -2
- package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
- package/dist/types/src/components/SpacePresence.d.ts +4 -5
- package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
- package/dist/types/src/components/SpacePresence.stories.d.ts +2 -3
- package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsDialog.d.ts +1 -2
- package/dist/types/src/components/SpaceSettings/SpaceSettingsDialog.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsPanel.d.ts +3 -5
- package/dist/types/src/components/SpaceSettings/SpaceSettingsPanel.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsPanel.stories.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/InlineSyncStatus.d.ts +1 -2
- package/dist/types/src/components/SyncStatus/InlineSyncStatus.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/Space.d.ts +2 -3
- package/dist/types/src/components/SyncStatus/Space.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +3 -4
- package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +1 -0
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/events.d.ts +4 -0
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +9 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +26 -1
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +2 -1
- package/dist/types/src/util.d.ts.map +1 -1
- package/package.json +41 -39
- package/src/SpacePlugin.tsx +41 -12
- package/src/capabilities/app-graph-builder.ts +15 -90
- package/src/capabilities/capabilities.ts +3 -1
- package/src/capabilities/index.ts +1 -0
- package/src/capabilities/intent-resolver.ts +93 -46
- package/src/capabilities/react-surface.tsx +12 -28
- package/src/capabilities/schema.ts +27 -0
- package/src/components/BaseObjectSettings.tsx +7 -0
- package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +1 -3
- package/src/components/CreateDialog/CreateObjectDialog.tsx +29 -21
- package/src/components/CreateDialog/CreateObjectPanel.tsx +41 -44
- package/src/components/CreateDialog/CreateSpaceDialog.tsx +8 -1
- package/src/components/PopoverAddSpace.tsx +46 -0
- package/src/components/SpacePresence.stories.tsx +2 -2
- package/src/components/SpaceSettings/SpaceSettingsPanel.stories.tsx +5 -1
- package/src/components/SpaceSettings/SpaceSettingsPanel.tsx +27 -4
- package/src/components/index.ts +1 -0
- package/src/events.ts +6 -0
- package/src/index.ts +1 -1
- package/src/translations.ts +3 -0
- package/src/types/types.ts +21 -1
- package/src/util.tsx +8 -2
- package/dist/lib/browser/app-graph-builder-J4NX44Y4.mjs.map +0 -7
- package/dist/lib/browser/chunk-6UIFMVVI.mjs.map +0 -7
- package/dist/lib/browser/chunk-RLZQJD47.mjs.map +0 -7
- package/dist/lib/browser/chunk-SDK7RZI3.mjs.map +0 -7
- package/dist/lib/browser/chunk-XPZ6IIXF.mjs.map +0 -7
- package/dist/lib/browser/chunk-XZ2NH3CP.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-IEDVV74T.mjs.map +0 -7
- package/dist/lib/browser/react-surface-DMNDXLZ7.mjs.map +0 -7
- package/dist/lib/node/app-graph-builder-ZOPG4MOS.cjs.map +0 -7
- package/dist/lib/node/chunk-3QWZCN6L.cjs.map +0 -7
- package/dist/lib/node/chunk-6MEOP3DH.cjs.map +0 -7
- package/dist/lib/node/chunk-D6BFKOXY.cjs.map +0 -7
- package/dist/lib/node/chunk-SZEIQGQU.cjs.map +0 -7
- package/dist/lib/node/chunk-UX3U4RU2.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-N2W2L6OL.cjs.map +0 -7
- package/dist/lib/node/react-surface-QPLXK7DT.cjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-TKGLOK22.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-4UX5WGKJ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-AAQRELDK.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-LA45TPAN.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-LGL4A5B5.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-N6EAOMIS.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-L2TKJU4I.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-RQQZ5BOG.mjs.map +0 -7
- /package/dist/lib/browser/{app-graph-serializer-QF7VVRCV.mjs.map → app-graph-serializer-FOWFLYGU.mjs.map} +0 -0
- /package/dist/lib/browser/{identity-created-25TK5XNO.mjs.map → identity-created-FYGS6TBH.mjs.map} +0 -0
- /package/dist/lib/browser/{react-root-6VRPRLQR.mjs.map → react-root-STUND2SO.mjs.map} +0 -0
- /package/dist/lib/browser/{settings-K4JPYYEM.mjs.map → settings-PHPCXX33.mjs.map} +0 -0
- /package/dist/lib/browser/{spaces-ready-2MUWWVVO.mjs.map → spaces-ready-K47RR7N2.mjs.map} +0 -0
- /package/dist/lib/browser/{state-6DCY5YJP.mjs.map → state-INJ63O57.mjs.map} +0 -0
- /package/dist/lib/node/{app-graph-serializer-QE2G4MWB.cjs.map → app-graph-serializer-VQOGHKXL.cjs.map} +0 -0
- /package/dist/lib/node/{identity-created-7G5U7R36.cjs.map → identity-created-AXI64BLE.cjs.map} +0 -0
- /package/dist/lib/node/{react-root-YD35W3VU.cjs.map → react-root-WQGBCJ2K.cjs.map} +0 -0
- /package/dist/lib/node/{settings-TEELGWS4.cjs.map → settings-5QYFWNH7.cjs.map} +0 -0
- /package/dist/lib/node/{spaces-ready-PZZQWS6T.cjs.map → spaces-ready-FQNAKR7G.cjs.map} +0 -0
- /package/dist/lib/node/{state-WPZC4JXB.cjs.map → state-57UE3DYE.cjs.map} +0 -0
- /package/dist/lib/node-esm/{app-graph-serializer-HLX2JRNF.mjs.map → app-graph-serializer-GZRSWHEN.mjs.map} +0 -0
- /package/dist/lib/node-esm/{identity-created-7THGZ7EW.mjs.map → identity-created-3CGEXNPO.mjs.map} +0 -0
- /package/dist/lib/node-esm/{react-root-Q5MFDXZE.mjs.map → react-root-OLYAEMP5.mjs.map} +0 -0
- /package/dist/lib/node-esm/{settings-KXYUZBLN.mjs.map → settings-H6MXTEQM.mjs.map} +0 -0
- /package/dist/lib/node-esm/{spaces-ready-MWNP3WBX.mjs.map → spaces-ready-HKAQG5SA.mjs.map} +0 -0
- /package/dist/lib/node-esm/{state-5GH2D5U4.mjs.map → state-VYA6OFHD.mjs.map} +0 -0
|
@@ -5,58 +5,65 @@
|
|
|
5
5
|
import { pipe } from 'effect';
|
|
6
6
|
import React, { useCallback, useRef } from 'react';
|
|
7
7
|
|
|
8
|
-
import { chain, createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';
|
|
9
|
-
import { useClient } from '@dxos/react-client';
|
|
10
8
|
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
Capabilities,
|
|
10
|
+
chain,
|
|
11
|
+
createIntent,
|
|
12
|
+
LayoutAction,
|
|
13
|
+
useCapabilities,
|
|
14
|
+
useIntentDispatcher,
|
|
15
|
+
usePluginManager,
|
|
16
|
+
} from '@dxos/app-framework';
|
|
17
|
+
import { invariant } from '@dxos/invariant';
|
|
18
|
+
import { useClient } from '@dxos/react-client';
|
|
19
|
+
import { getSpace, isReactiveObject, isSpace, type ReactiveObject, useSpaces } from '@dxos/react-client/echo';
|
|
18
20
|
import { Button, Dialog, Icon, useTranslation } from '@dxos/react-ui';
|
|
19
21
|
|
|
20
22
|
import { CreateObjectPanel, type CreateObjectPanelProps } from './CreateObjectPanel';
|
|
23
|
+
import { SpaceCapabilities } from '../../capabilities';
|
|
21
24
|
import { SPACE_PLUGIN } from '../../meta';
|
|
22
|
-
import { CollectionType, SpaceAction } from '../../types';
|
|
25
|
+
import { CollectionType, type ObjectForm, SpaceAction } from '../../types';
|
|
23
26
|
|
|
24
27
|
export const CREATE_OBJECT_DIALOG = `${SPACE_PLUGIN}/CreateObjectDialog`;
|
|
25
28
|
|
|
26
|
-
export type CreateObjectDialogProps = Pick<CreateObjectPanelProps, '
|
|
27
|
-
resolve?: (typename: string) => Record<string, any>;
|
|
29
|
+
export type CreateObjectDialogProps = Pick<CreateObjectPanelProps, 'target' | 'typename' | 'name'> & {
|
|
28
30
|
shouldNavigate?: (object: ReactiveObject<any>) => boolean;
|
|
29
31
|
};
|
|
30
32
|
|
|
31
33
|
export const CreateObjectDialog = ({
|
|
32
|
-
schemas,
|
|
33
34
|
target,
|
|
34
35
|
typename,
|
|
35
36
|
name,
|
|
36
37
|
shouldNavigate: _shouldNavigate,
|
|
37
|
-
resolve,
|
|
38
38
|
}: CreateObjectDialogProps) => {
|
|
39
39
|
const closeRef = useRef<HTMLButtonElement | null>(null);
|
|
40
|
+
const manager = usePluginManager();
|
|
40
41
|
const { t } = useTranslation(SPACE_PLUGIN);
|
|
41
42
|
const client = useClient();
|
|
42
43
|
const spaces = useSpaces();
|
|
43
44
|
const { dispatchPromise: dispatch } = useIntentDispatcher();
|
|
45
|
+
const forms = useCapabilities(SpaceCapabilities.ObjectForm);
|
|
46
|
+
|
|
47
|
+
const resolve = useCallback(
|
|
48
|
+
(typename: string) =>
|
|
49
|
+
manager.context.requestCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {},
|
|
50
|
+
[manager],
|
|
51
|
+
);
|
|
44
52
|
|
|
45
53
|
const handleCreateObject = useCallback(
|
|
46
54
|
async ({
|
|
47
|
-
|
|
55
|
+
form,
|
|
48
56
|
target: _target,
|
|
49
|
-
data,
|
|
57
|
+
data = {},
|
|
50
58
|
}: {
|
|
51
|
-
|
|
59
|
+
form: ObjectForm;
|
|
52
60
|
target: CreateObjectPanelProps['target'];
|
|
53
61
|
data?: Record<string, any>;
|
|
54
62
|
}) => {
|
|
55
63
|
const target = isSpace(_target)
|
|
56
64
|
? (_target.properties[CollectionType.typename]?.target as CollectionType | undefined)
|
|
57
65
|
: _target;
|
|
58
|
-
|
|
59
|
-
if (!createObjectIntent || !target) {
|
|
66
|
+
if (!target) {
|
|
60
67
|
// TODO(wittjosiah): UI feedback.
|
|
61
68
|
return;
|
|
62
69
|
}
|
|
@@ -65,7 +72,8 @@ export const CreateObjectDialog = ({
|
|
|
65
72
|
closeRef.current?.click();
|
|
66
73
|
|
|
67
74
|
const space = isSpace(target) ? target : getSpace(target);
|
|
68
|
-
|
|
75
|
+
invariant(space, 'Missing space');
|
|
76
|
+
const result = await dispatch(form.getIntent(data, { space }));
|
|
69
77
|
const object = result.data?.object;
|
|
70
78
|
if (isReactiveObject(object)) {
|
|
71
79
|
const addObjectIntent = createIntent(SpaceAction.AddObject, { target, object });
|
|
@@ -95,7 +103,7 @@ export const CreateObjectDialog = ({
|
|
|
95
103
|
|
|
96
104
|
<CreateObjectPanel
|
|
97
105
|
classNames='p-4'
|
|
98
|
-
|
|
106
|
+
forms={forms}
|
|
99
107
|
spaces={spaces}
|
|
100
108
|
target={target}
|
|
101
109
|
typename={typename}
|
|
@@ -2,19 +2,20 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import React, { useCallback,
|
|
5
|
+
import React, { useCallback, useState } from 'react';
|
|
6
6
|
|
|
7
7
|
import { Surface, isSurfaceAvailable, usePluginManager } from '@dxos/app-framework';
|
|
8
|
-
import {
|
|
8
|
+
import { getObjectAnnotation, type ObjectAnnotation, type S } from '@dxos/echo-schema';
|
|
9
|
+
import { invariant } from '@dxos/invariant';
|
|
9
10
|
import { type SpaceId, type Space } from '@dxos/react-client/echo';
|
|
10
11
|
import { Icon, type ThemedClassName, toLocalizedString, useTranslation } from '@dxos/react-ui';
|
|
11
12
|
import { Form, type InputProps } from '@dxos/react-ui-form';
|
|
12
13
|
import { SearchList } from '@dxos/react-ui-searchlist';
|
|
13
14
|
import { mx } from '@dxos/react-ui-theme';
|
|
14
|
-
import {
|
|
15
|
+
import { isNonNullable, type MaybePromise } from '@dxos/util';
|
|
15
16
|
|
|
16
17
|
import { SPACE_PLUGIN } from '../../meta';
|
|
17
|
-
import { type CollectionType } from '../../types';
|
|
18
|
+
import { type ObjectForm, type CollectionType } from '../../types';
|
|
18
19
|
import { getSpaceDisplayName } from '../../util';
|
|
19
20
|
|
|
20
21
|
// TODO(ZaymonFC): Move this if you find yourself needing it elsewhere.
|
|
@@ -29,7 +30,6 @@ const useInputSurfaceLookup = (baseData?: Record<string, any>) => {
|
|
|
29
30
|
return useCallback(
|
|
30
31
|
({ prop, schema, inputProps }: { prop: string; schema: S.Schema<any>; inputProps: InputProps }) => {
|
|
31
32
|
const composedData = { prop, schema, ...baseData };
|
|
32
|
-
|
|
33
33
|
if (!isSurfaceAvailable(pluginManager.context, { role: 'form-input', data: composedData })) {
|
|
34
34
|
return undefined;
|
|
35
35
|
}
|
|
@@ -41,7 +41,7 @@ const useInputSurfaceLookup = (baseData?: Record<string, any>) => {
|
|
|
41
41
|
};
|
|
42
42
|
|
|
43
43
|
export type CreateObjectPanelProps = ThemedClassName<{
|
|
44
|
-
|
|
44
|
+
forms: ObjectForm[];
|
|
45
45
|
spaces: Space[];
|
|
46
46
|
typename?: string;
|
|
47
47
|
target?: Space | CollectionType;
|
|
@@ -49,15 +49,15 @@ export type CreateObjectPanelProps = ThemedClassName<{
|
|
|
49
49
|
defaultSpaceId?: SpaceId;
|
|
50
50
|
resolve?: (typename: string) => Record<string, any>;
|
|
51
51
|
onCreateObject?: (params: {
|
|
52
|
-
|
|
52
|
+
form: ObjectForm;
|
|
53
53
|
target: Space | CollectionType;
|
|
54
|
-
data
|
|
54
|
+
data?: Record<string, any>;
|
|
55
55
|
}) => MaybePromise<void>;
|
|
56
56
|
}>;
|
|
57
57
|
|
|
58
58
|
export const CreateObjectPanel = ({
|
|
59
59
|
classNames,
|
|
60
|
-
|
|
60
|
+
forms,
|
|
61
61
|
spaces,
|
|
62
62
|
typename: initialTypename,
|
|
63
63
|
target: initialTarget,
|
|
@@ -69,10 +69,10 @@ export const CreateObjectPanel = ({
|
|
|
69
69
|
const { t } = useTranslation(SPACE_PLUGIN);
|
|
70
70
|
const [typename, setTypename] = useState<string | undefined>(initialTypename);
|
|
71
71
|
const [target, setTarget] = useState<Space | CollectionType | undefined>(initialTarget);
|
|
72
|
-
const
|
|
73
|
-
const options: ObjectAnnotation[] =
|
|
74
|
-
.map(getObjectAnnotation)
|
|
75
|
-
.filter(
|
|
72
|
+
const form = forms.find((form) => getObjectAnnotation(form.objectSchema)?.typename === typename);
|
|
73
|
+
const options: ObjectAnnotation[] = forms
|
|
74
|
+
.map((form) => getObjectAnnotation(form.objectSchema))
|
|
75
|
+
.filter(isNonNullable)
|
|
76
76
|
.sort((a, b) => {
|
|
77
77
|
const nameA = t('typename label', { ns: a.typename, defaultValue: a.typename });
|
|
78
78
|
const nameB = t('typename label', { ns: b.typename, defaultValue: b.typename });
|
|
@@ -81,50 +81,47 @@ export const CreateObjectPanel = ({
|
|
|
81
81
|
|
|
82
82
|
const handleCreateObject = useCallback(
|
|
83
83
|
async (props: Record<string, any>) => {
|
|
84
|
-
if (!
|
|
84
|
+
if (!form || !target) {
|
|
85
85
|
return;
|
|
86
86
|
}
|
|
87
|
-
await onCreateObject?.({
|
|
87
|
+
await onCreateObject?.({ form, target, data: props });
|
|
88
88
|
},
|
|
89
|
-
[onCreateObject,
|
|
89
|
+
[onCreateObject, form, target],
|
|
90
90
|
);
|
|
91
91
|
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
92
|
+
const handleSetTypename = useCallback(
|
|
93
|
+
async (typename: string) => {
|
|
94
|
+
invariant(target, 'target is required');
|
|
95
|
+
const form = forms.find((form) => getObjectAnnotation(form.objectSchema)?.typename === typename);
|
|
96
|
+
if (form && !form.formSchema) {
|
|
97
|
+
await onCreateObject?.({ form, target });
|
|
98
|
+
} else {
|
|
99
|
+
setTypename(typename);
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
[forms, onCreateObject, target],
|
|
103
|
+
);
|
|
98
104
|
|
|
99
105
|
const inputSurfaceLookup = useInputSurfaceLookup({ target });
|
|
100
106
|
|
|
101
|
-
const form = useMemo(() => {
|
|
102
|
-
// TODO(ZaymonFC): Move this default object creation schema somewhere?
|
|
103
|
-
const schema = (metadata?.creationSchema ?? S.Struct({ name: S.optional(S.String) })) as S.Schema<any>;
|
|
104
|
-
|
|
105
|
-
return (
|
|
106
|
-
<Form
|
|
107
|
-
classNames='!p-0'
|
|
108
|
-
autoFocus
|
|
109
|
-
values={{ name: initialName }}
|
|
110
|
-
schema={schema}
|
|
111
|
-
testId='create-object-form'
|
|
112
|
-
onSave={handleCreateObject}
|
|
113
|
-
lookupComponent={inputSurfaceLookup}
|
|
114
|
-
/>
|
|
115
|
-
);
|
|
116
|
-
}, [initialName, handleCreateObject, metadata]);
|
|
117
|
-
|
|
118
107
|
// TODO(wittjosiah): These inputs should be rolled into a `Form` once it supports the necessary variants.
|
|
119
108
|
return (
|
|
120
109
|
<div role='form' className={mx('flex flex-col gap-2', classNames)}>
|
|
121
|
-
{!
|
|
122
|
-
<SelectSchema options={options} resolve={resolve} onChange={
|
|
110
|
+
{!form ? (
|
|
111
|
+
<SelectSchema options={options} resolve={resolve} onChange={handleSetTypename} />
|
|
123
112
|
) : !target ? (
|
|
124
113
|
<SelectSpace spaces={spaces} defaultSpaceId={defaultSpaceId} onChange={setTarget} />
|
|
125
|
-
) : (
|
|
126
|
-
|
|
127
|
-
|
|
114
|
+
) : form.formSchema ? (
|
|
115
|
+
<Form
|
|
116
|
+
classNames='!p-0'
|
|
117
|
+
autoFocus
|
|
118
|
+
values={{ name: initialName }}
|
|
119
|
+
schema={form.formSchema}
|
|
120
|
+
testId='create-object-form'
|
|
121
|
+
onSave={handleCreateObject}
|
|
122
|
+
lookupComponent={inputSurfaceLookup}
|
|
123
|
+
/>
|
|
124
|
+
) : undefined}
|
|
128
125
|
</div>
|
|
129
126
|
);
|
|
130
127
|
};
|
|
@@ -48,7 +48,14 @@ export const CreateSpaceDialog = () => {
|
|
|
48
48
|
</Dialog.Close>
|
|
49
49
|
</div>
|
|
50
50
|
<div className='p-4'>
|
|
51
|
-
<Form
|
|
51
|
+
<Form
|
|
52
|
+
testId='create-space-form'
|
|
53
|
+
classNames='!p-0'
|
|
54
|
+
autoFocus
|
|
55
|
+
values={initialValues}
|
|
56
|
+
schema={SpaceForm}
|
|
57
|
+
onSave={handleCreateSpace}
|
|
58
|
+
/>
|
|
52
59
|
</div>
|
|
53
60
|
</Dialog.Content>
|
|
54
61
|
);
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import React from 'react';
|
|
6
|
+
|
|
7
|
+
import { createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';
|
|
8
|
+
import { IconButton, useTranslation } from '@dxos/react-ui';
|
|
9
|
+
|
|
10
|
+
import { SPACE_PLUGIN } from '../meta';
|
|
11
|
+
import { SpaceAction } from '../types';
|
|
12
|
+
|
|
13
|
+
export const POPOVER_ADD_SPACE = `${SPACE_PLUGIN}/PopoverRenameSpace`;
|
|
14
|
+
|
|
15
|
+
export const PopoverAddSpace = () => {
|
|
16
|
+
const { t } = useTranslation(SPACE_PLUGIN);
|
|
17
|
+
const { dispatchPromise: dispatch } = useIntentDispatcher();
|
|
18
|
+
return (
|
|
19
|
+
<div role='none' className='grid grid-cols-1 gap-1 [&>button]:justify-start'>
|
|
20
|
+
<IconButton
|
|
21
|
+
variant='ghost'
|
|
22
|
+
label={t('join space label')}
|
|
23
|
+
icon='ph--sign-in--regular'
|
|
24
|
+
onClick={() => {
|
|
25
|
+
void dispatch(createIntent(SpaceAction.Join));
|
|
26
|
+
void dispatch(
|
|
27
|
+
createIntent(LayoutAction.UpdatePopover, { part: 'popover', options: { anchorId: '', state: false } }),
|
|
28
|
+
);
|
|
29
|
+
}}
|
|
30
|
+
data-testid='spacePlugin.joinSpace'
|
|
31
|
+
/>
|
|
32
|
+
<IconButton
|
|
33
|
+
variant='ghost'
|
|
34
|
+
label={t('create space label')}
|
|
35
|
+
icon='ph--plus--regular'
|
|
36
|
+
onClick={() => {
|
|
37
|
+
void dispatch(createIntent(SpaceAction.OpenCreateSpace));
|
|
38
|
+
void dispatch(
|
|
39
|
+
createIntent(LayoutAction.UpdatePopover, { part: 'popover', options: { anchorId: '', state: false } }),
|
|
40
|
+
);
|
|
41
|
+
}}
|
|
42
|
+
data-testid='spacePlugin.createSpace'
|
|
43
|
+
/>
|
|
44
|
+
</div>
|
|
45
|
+
);
|
|
46
|
+
};
|
|
@@ -7,7 +7,7 @@ import '@dxos-theme';
|
|
|
7
7
|
import { type Meta } from '@storybook/react';
|
|
8
8
|
import React from 'react';
|
|
9
9
|
|
|
10
|
-
import { PublicKey } from '@dxos/keys';
|
|
10
|
+
import { IdentityDid, PublicKey } from '@dxos/keys';
|
|
11
11
|
import { HaloSpaceMember, SpaceMember } from '@dxos/react-client/echo';
|
|
12
12
|
import { withLayout, withTheme } from '@dxos/storybook-utils';
|
|
13
13
|
|
|
@@ -17,7 +17,7 @@ import translations from '../translations';
|
|
|
17
17
|
const nViewers = (n: number, currentlyAttended = true): Member[] =>
|
|
18
18
|
Array.from({ length: n }, () => ({
|
|
19
19
|
role: HaloSpaceMember.Role.ADMIN,
|
|
20
|
-
identity: { identityKey: PublicKey.random() },
|
|
20
|
+
identity: { did: IdentityDid.random(), identityKey: PublicKey.random() },
|
|
21
21
|
presence: SpaceMember.PresenceState.ONLINE,
|
|
22
22
|
lastSeen: Date.now(),
|
|
23
23
|
currentlyAttended,
|
|
@@ -15,7 +15,11 @@ import translations from '../../translations';
|
|
|
15
15
|
|
|
16
16
|
const Story = (args: Partial<SpaceSettingsPanelProps>) => {
|
|
17
17
|
const { space } = useClientProvider();
|
|
18
|
-
return
|
|
18
|
+
return (
|
|
19
|
+
<div role='none' className='p-2 border border-primary-500 rounded'>
|
|
20
|
+
<SpaceSettingsPanel {...args} space={space!} />
|
|
21
|
+
</div>
|
|
22
|
+
);
|
|
19
23
|
};
|
|
20
24
|
|
|
21
25
|
const meta: Meta = {
|
|
@@ -8,16 +8,17 @@ import { log } from '@dxos/log';
|
|
|
8
8
|
import { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';
|
|
9
9
|
import { useClient } from '@dxos/react-client';
|
|
10
10
|
import { type Space } from '@dxos/react-client/echo';
|
|
11
|
-
import {
|
|
11
|
+
import { Input, Toolbar, useTranslation } from '@dxos/react-ui';
|
|
12
12
|
import { DeprecatedFormContainer, DeprecatedFormInput } from '@dxos/react-ui-form';
|
|
13
|
+
import { HuePicker, IconPicker } from '@dxos/react-ui-pickers';
|
|
13
14
|
|
|
14
15
|
import { SPACE_PLUGIN } from '../../meta';
|
|
15
16
|
|
|
16
|
-
export type SpaceSettingsPanelProps =
|
|
17
|
+
export type SpaceSettingsPanelProps = {
|
|
17
18
|
space: Space;
|
|
18
|
-
}
|
|
19
|
+
};
|
|
19
20
|
|
|
20
|
-
export const SpaceSettingsPanel = ({
|
|
21
|
+
export const SpaceSettingsPanel = ({ space }: SpaceSettingsPanelProps) => {
|
|
21
22
|
const { t } = useTranslation(SPACE_PLUGIN);
|
|
22
23
|
|
|
23
24
|
const client = useClient();
|
|
@@ -50,6 +51,28 @@ export const SpaceSettingsPanel = ({ classNames, space }: SpaceSettingsPanelProp
|
|
|
50
51
|
}}
|
|
51
52
|
/>
|
|
52
53
|
</DeprecatedFormInput>
|
|
54
|
+
<DeprecatedFormInput label={t('icon label')}>
|
|
55
|
+
<Toolbar.Root>
|
|
56
|
+
<IconPicker
|
|
57
|
+
value={space.properties.icon}
|
|
58
|
+
onChange={(nextIcon) => (space.properties.icon = nextIcon)}
|
|
59
|
+
onReset={() => {
|
|
60
|
+
space.properties.icon = undefined;
|
|
61
|
+
}}
|
|
62
|
+
/>
|
|
63
|
+
</Toolbar.Root>
|
|
64
|
+
</DeprecatedFormInput>
|
|
65
|
+
<DeprecatedFormInput label={t('hue label')}>
|
|
66
|
+
<Toolbar.Root>
|
|
67
|
+
<HuePicker
|
|
68
|
+
value={space.properties.hue}
|
|
69
|
+
onChange={(nextHue) => (space.properties.hue = nextHue)}
|
|
70
|
+
onReset={() => {
|
|
71
|
+
space.properties.hue = undefined;
|
|
72
|
+
}}
|
|
73
|
+
/>
|
|
74
|
+
</Toolbar.Root>
|
|
75
|
+
</DeprecatedFormInput>
|
|
53
76
|
{edgeEnabled && (
|
|
54
77
|
<DeprecatedFormInput label={t('edge replication label')}>
|
|
55
78
|
<Input.Switch checked={edgeReplication} onCheckedChange={toggleEdgeReplication} />
|
package/src/components/index.ts
CHANGED
|
@@ -11,6 +11,7 @@ export * from './CollectionSection';
|
|
|
11
11
|
export * from './JoinDialog';
|
|
12
12
|
export * from './MenuFooter';
|
|
13
13
|
export * from './PersistenceStatus';
|
|
14
|
+
export * from './PopoverAddSpace';
|
|
14
15
|
export * from './PopoverRenameObject';
|
|
15
16
|
export * from './PopoverRenameSpace';
|
|
16
17
|
export * from './ShareSpaceButton';
|
package/src/events.ts
CHANGED
|
@@ -7,6 +7,12 @@ import { defineEvent } from '@dxos/app-framework';
|
|
|
7
7
|
import { SPACE_PLUGIN } from './meta';
|
|
8
8
|
|
|
9
9
|
export namespace SpaceEvents {
|
|
10
|
+
export const SetupSettingsPanel = defineEvent(`${SPACE_PLUGIN}/event/setup-settings-panel`);
|
|
10
11
|
export const StateReady = defineEvent(`${SPACE_PLUGIN}/event/state-ready`);
|
|
11
12
|
export const DefaultSpaceReady = defineEvent(`${SPACE_PLUGIN}/event/default-space-ready`);
|
|
12
13
|
}
|
|
14
|
+
|
|
15
|
+
// TODO(wittjosiah): Factor out.
|
|
16
|
+
export namespace ThreadEvents {
|
|
17
|
+
export const SetupThread = defineEvent(`${SPACE_PLUGIN}/event/setup-thread`);
|
|
18
|
+
}
|
package/src/index.ts
CHANGED
package/src/translations.ts
CHANGED
|
@@ -14,6 +14,7 @@ export default [
|
|
|
14
14
|
[SPACE_PLUGIN]: {
|
|
15
15
|
'plugin name': 'Spaces',
|
|
16
16
|
'first run message': 'Nothing selected.',
|
|
17
|
+
'add space label': 'Create or join a space',
|
|
17
18
|
'create space label': 'Create space',
|
|
18
19
|
'join space label': 'Join space',
|
|
19
20
|
'empty space message': 'No documents',
|
|
@@ -124,6 +125,8 @@ export default [
|
|
|
124
125
|
'advanced settings label': 'Advanced',
|
|
125
126
|
'foreign keys': 'Foreign Keys',
|
|
126
127
|
'add key': 'Add Key',
|
|
128
|
+
'icon label': 'Icon',
|
|
129
|
+
'hue label': 'Color',
|
|
127
130
|
},
|
|
128
131
|
},
|
|
129
132
|
},
|
package/src/types/types.ts
CHANGED
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { type AnyIntentChain } from '@dxos/app-framework';
|
|
6
|
+
import { AST, S, type Expando, type BaseObject, type TypedObject } from '@dxos/echo-schema';
|
|
6
7
|
import { type PublicKey } from '@dxos/react-client';
|
|
8
|
+
// TODO(wittjosiah): This pulls in full client.
|
|
7
9
|
import { EchoObjectSchema, ReactiveObjectSchema, type Space, SpaceSchema } from '@dxos/react-client/echo';
|
|
8
10
|
import { type ComplexMap } from '@dxos/util';
|
|
9
11
|
|
|
@@ -91,6 +93,14 @@ export const SpaceForm = S.Struct({
|
|
|
91
93
|
edgeReplication: S.Boolean.annotations({ [AST.TitleAnnotationId]: 'Enable EDGE Replication' }),
|
|
92
94
|
});
|
|
93
95
|
|
|
96
|
+
export type ObjectForm<T extends BaseObject = BaseObject> = {
|
|
97
|
+
objectSchema: TypedObject;
|
|
98
|
+
formSchema?: S.Schema<T, any>;
|
|
99
|
+
getIntent: (props: T, options: { space: Space }) => AnyIntentChain;
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
export const defineObjectForm = <T extends BaseObject>(form: ObjectForm<T>) => form;
|
|
103
|
+
|
|
94
104
|
export const SPACE_ACTION = `${SPACE_PLUGIN}/action`;
|
|
95
105
|
|
|
96
106
|
export namespace SpaceAction {
|
|
@@ -145,6 +155,16 @@ export namespace SpaceAction {
|
|
|
145
155
|
output: S.Void,
|
|
146
156
|
}) {}
|
|
147
157
|
|
|
158
|
+
export class AddSpace extends S.TaggedClass<AddSpace>()(`${SPACE_ACTION}/add-space`, {
|
|
159
|
+
input: S.Void,
|
|
160
|
+
output: S.Void,
|
|
161
|
+
}) {}
|
|
162
|
+
|
|
163
|
+
export class AddSpaceMenuGroup extends S.TaggedClass<AddSpaceMenuGroup>()(`${SPACE_ACTION}/add-space-menu-group`, {
|
|
164
|
+
input: S.Void,
|
|
165
|
+
output: S.Void,
|
|
166
|
+
}) {}
|
|
167
|
+
|
|
148
168
|
export class OpenSettings extends S.TaggedClass<OpenSettings>()(`${SPACE_ACTION}/open-settings`, {
|
|
149
169
|
input: S.Struct({
|
|
150
170
|
space: SpaceSchema,
|
package/src/util.tsx
CHANGED
|
@@ -205,7 +205,11 @@ export const constructSpaceNode = ({
|
|
|
205
205
|
...partials,
|
|
206
206
|
label: getSpaceDisplayName(space, { personal, namesCache }),
|
|
207
207
|
description: space.state.get() === SpaceState.SPACE_READY && space.properties.description,
|
|
208
|
-
|
|
208
|
+
hue: space.state.get() === SpaceState.SPACE_READY && space.properties.hue,
|
|
209
|
+
icon:
|
|
210
|
+
space.state.get() === SpaceState.SPACE_READY && space.properties.icon
|
|
211
|
+
? `ph--${space.properties.icon}--regular`
|
|
212
|
+
: undefined,
|
|
209
213
|
disabled: !navigable || space.state.get() !== SpaceState.SPACE_READY || hasPendingMigration,
|
|
210
214
|
testId: 'spacePlugin.space',
|
|
211
215
|
},
|
|
@@ -415,6 +419,8 @@ export const constructObjectActions = ({
|
|
|
415
419
|
navigable?: boolean;
|
|
416
420
|
}) => {
|
|
417
421
|
const object = node.data;
|
|
422
|
+
const space = getSpace(object);
|
|
423
|
+
invariant(space, 'Space not found');
|
|
418
424
|
const getId = (id: string) => `${id}/${fullyQualifiedId(object)}`;
|
|
419
425
|
const actions: NodeArg<ActionData>[] = [
|
|
420
426
|
...(object instanceof CollectionType
|
|
@@ -477,7 +483,7 @@ export const constructObjectActions = ({
|
|
|
477
483
|
id: getId('copy-link'),
|
|
478
484
|
type: ACTION_TYPE,
|
|
479
485
|
data: async () => {
|
|
480
|
-
const url = `${window.location.origin}/${fullyQualifiedId(object)}`;
|
|
486
|
+
const url = `${window.location.origin}/${space.id}/${fullyQualifiedId(object)}`;
|
|
481
487
|
await navigator.clipboard.writeText(url);
|
|
482
488
|
},
|
|
483
489
|
properties: {
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/app-graph-builder.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, createIntent, type PluginsContext } from '@dxos/app-framework';\nimport {\n Expando,\n Filter,\n FQ_ID_LENGTH,\n getSpace,\n isEchoObject,\n isSpace,\n OBJECT_ID_LENGTH,\n parseId,\n type ReactiveEchoObject,\n SPACE_ID_LENGTH,\n SpaceState,\n type Space,\n} from '@dxos/client/echo';\nimport { getTypename, isDeleted } from '@dxos/live-object';\nimport { log } from '@dxos/log';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { createExtension, toSignal, type Node } from '@dxos/plugin-graph';\nimport { nonNullable } from '@dxos/util';\n\nimport { SpaceCapabilities } from './capabilities';\nimport { SPACE_PLUGIN } from '../meta';\nimport { CollectionType, SpaceAction, type SpaceSettingsProps } from '../types';\nimport {\n constructObjectActions,\n constructSpaceActions,\n constructSpaceNode,\n createObjectNode,\n memoizeQuery,\n SHARED,\n SPACES,\n} from '../util';\n\nexport default (context: PluginsContext) => {\n const resolve = (typename: string) =>\n context.requestCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};\n\n const spacesNode = {\n id: SPACES,\n type: SPACES,\n cacheable: ['label', 'role'],\n properties: {\n label: ['spaces label', { ns: SPACE_PLUGIN }],\n icon: 'ph--planet--regular',\n testId: 'spacePlugin.spaces',\n role: 'branch',\n disposition: 'collection',\n disabled: true,\n childrenPersistenceClass: 'echo',\n onRearrangeChildren: async (nextOrder: Space[]) => {\n const { graph } = context.requestCapability(Capabilities.AppGraph);\n const client = context.requestCapability(ClientCapabilities.Client);\n\n // NOTE: This is needed to ensure order is updated by next animation frame.\n // TODO(wittjosiah): Is there a better way to do this?\n // If not, graph should be passed as an argument to the extension.\n graph._sortEdges(\n SPACES,\n 'outbound',\n nextOrder.map(({ id }) => id),\n );\n\n const {\n objects: [spacesOrder],\n } = await client.spaces.default.db.query(Filter.schema(Expando, { key: SHARED })).run();\n if (spacesOrder) {\n spacesOrder.order = nextOrder.map(({ id }) => id);\n } else {\n log.warn('spaces order object not found');\n }\n },\n },\n };\n\n return contributes(Capabilities.AppGraphBuilder, [\n // Primary actions.\n createExtension({\n id: `${SPACE_PLUGIN}/primary-actions`,\n position: 'hoist',\n filter: (node): node is Node<null> => node.id === 'root',\n actions: () => [\n {\n id: SpaceAction.OpenCreateSpace._tag,\n data: async () => {\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n await dispatch(createIntent(SpaceAction.OpenCreateSpace));\n },\n properties: {\n label: ['create space label', { ns: SPACE_PLUGIN }],\n icon: 'ph--plus--regular',\n testId: 'spacePlugin.createSpace',\n disposition: 'item',\n },\n },\n {\n id: SpaceAction.Join._tag,\n data: async () => {\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n await dispatch(createIntent(SpaceAction.Join));\n },\n properties: {\n label: ['join space label', { ns: SPACE_PLUGIN }],\n icon: 'ph--sign-in--regular',\n testId: 'spacePlugin.joinSpace',\n disposition: 'item',\n },\n },\n ],\n }),\n\n // Create spaces group node.\n createExtension({\n id: `${SPACE_PLUGIN}/root`,\n position: 'hoist',\n filter: (node): node is Node<null> => node.id === 'root',\n connector: () => [spacesNode],\n resolver: ({ id }) => (id === SPACES ? spacesNode : undefined),\n }),\n\n // Create space nodes.\n createExtension({\n id: SPACES,\n filter: (node): node is Node<null> => node.id === SPACES,\n connector: () => {\n const client = context.requestCapability(ClientCapabilities.Client);\n const spaces = toSignal(\n (onChange) => client.spaces.subscribe(() => onChange()).unsubscribe,\n () => client.spaces.get(),\n );\n\n const isReady = toSignal(\n (onChange) => client.spaces.isReady.subscribe(() => onChange()).unsubscribe,\n () => client.spaces.isReady.get(),\n );\n\n if (!spaces || !isReady) {\n return;\n }\n\n const state = context.requestCapability(SpaceCapabilities.State);\n const settings = context\n .requestCapabilities(Capabilities.SettingsStore)[0]\n ?.getStore<SpaceSettingsProps>(SPACE_PLUGIN)?.value;\n\n // TODO(wittjosiah): During client reset, accessing default space throws.\n try {\n const [spacesOrder] = memoizeQuery(client.spaces.default, Filter.schema(Expando, { key: SHARED }));\n const order: string[] = spacesOrder?.order ?? [];\n const orderMap = new Map(order.map((id, index) => [id, index]));\n return [\n ...spaces\n .filter((space) => orderMap.has(space.id))\n .sort((a, b) => orderMap.get(a.id)! - orderMap.get(b.id)!),\n ...spaces.filter((space) => !orderMap.has(space.id)),\n ]\n .filter((space) => (settings?.showHidden ? true : space.state.get() !== SpaceState.SPACE_INACTIVE))\n .map((space) =>\n constructSpaceNode({\n space,\n navigable: state.navigableCollections,\n personal: space === client.spaces.default,\n namesCache: state.spaceNames,\n resolve,\n }),\n );\n } catch {}\n },\n resolver: ({ id }) => {\n if (id.length !== SPACE_ID_LENGTH) {\n return;\n }\n\n const client = context.requestCapability(ClientCapabilities.Client);\n const spaces = toSignal(\n (onChange) => client.spaces.subscribe(() => onChange()).unsubscribe,\n () => client.spaces.get(),\n );\n\n const isReady = toSignal(\n (onChange) => client.spaces.isReady.subscribe(() => onChange()).unsubscribe,\n () => client.spaces.isReady.get(),\n );\n\n if (!spaces || !isReady) {\n return;\n }\n\n const space = spaces.find((space) => space.id === id);\n if (!space) {\n return;\n }\n\n if (space.state.get() === SpaceState.SPACE_INACTIVE) {\n return false;\n } else {\n const state = context.requestCapability(SpaceCapabilities.State);\n return constructSpaceNode({\n space,\n navigable: state.navigableCollections,\n personal: space === client.spaces.default,\n namesCache: state.spaceNames,\n resolve,\n });\n }\n },\n }),\n\n // Create space actions.\n createExtension({\n id: `${SPACE_PLUGIN}/actions`,\n filter: (node): node is Node<Space> => isSpace(node.data),\n actions: ({ node }) => {\n const space = node.data;\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n const client = context.requestCapability(ClientCapabilities.Client);\n const state = context.requestCapability(SpaceCapabilities.State);\n return constructSpaceActions({\n space,\n dispatch,\n personal: space === client.spaces.default,\n migrating: state.sdkMigrationRunning[space.id],\n });\n },\n }),\n\n // Create nodes for objects in the root collection of a space.\n createExtension({\n id: `${SPACE_PLUGIN}/root-collection`,\n filter: (node): node is Node<Space> => isSpace(node.data),\n connector: ({ node }) => {\n const space = node.data;\n const spaceState = toSignal(\n (onChange) => space.state.subscribe(() => onChange()).unsubscribe,\n () => space.state.get(),\n space.id,\n );\n if (spaceState !== SpaceState.SPACE_READY) {\n return;\n }\n\n const collection = space.properties[CollectionType.typename]?.target as CollectionType | undefined;\n if (!collection) {\n return;\n }\n\n const state = context.requestCapability(SpaceCapabilities.State);\n\n return collection.objects\n .map((object) => object.target)\n .filter(nonNullable)\n .map((object) => createObjectNode({ object, space, resolve, navigable: state.navigableCollections }))\n .filter(nonNullable);\n },\n }),\n\n // Create nodes for objects in a collection or by its fully qualified id.\n createExtension({\n id: `${SPACE_PLUGIN}/objects`,\n filter: (node): node is Node<CollectionType> => node.data instanceof CollectionType,\n connector: ({ node }) => {\n const collection = node.data;\n const space = getSpace(collection);\n if (!space) {\n return;\n }\n\n const state = context.requestCapability(SpaceCapabilities.State);\n\n return collection.objects\n .map((object) => object.target)\n .filter(nonNullable)\n .map((object) => createObjectNode({ object, space, resolve, navigable: state.navigableCollections }))\n .filter(nonNullable);\n },\n resolver: ({ id }) => {\n if (id.length !== FQ_ID_LENGTH) {\n return;\n }\n\n const [spaceId, objectId] = id.split(':');\n if (spaceId.length !== SPACE_ID_LENGTH && objectId.length !== OBJECT_ID_LENGTH) {\n return;\n }\n\n const client = context.requestCapability(ClientCapabilities.Client);\n const space = client.spaces.get().find((space) => space.id === spaceId);\n if (!space) {\n return;\n }\n\n const spaceState = toSignal(\n (onChange) => space.state.subscribe(() => onChange()).unsubscribe,\n () => space.state.get(),\n space.id,\n );\n if (spaceState !== SpaceState.SPACE_READY) {\n return;\n }\n\n const [object] = memoizeQuery(space, { id: objectId });\n if (!object) {\n return;\n }\n\n if (isDeleted(object)) {\n return false;\n } else {\n const state = context.requestCapability(SpaceCapabilities.State);\n return createObjectNode({ object, space, resolve, navigable: state.navigableCollections });\n }\n },\n }),\n\n // Create collection actions and action groups.\n createExtension({\n id: `${SPACE_PLUGIN}/object-actions`,\n filter: (node): node is Node<ReactiveEchoObject<any>> => isEchoObject(node.data),\n actions: ({ node }) => {\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n const state = context.requestCapability(SpaceCapabilities.State);\n return constructObjectActions({ node, dispatch, navigable: state.navigableCollections });\n },\n }),\n\n // Create nodes for object settings.\n createExtension({\n id: `${SPACE_PLUGIN}/settings-for-subject`,\n resolver: ({ id }) => {\n // TODO(Zan): Find util (or make one).\n if (!id.endsWith('~settings')) {\n return;\n }\n\n const type = 'orphan-settings-for-subject';\n const icon = 'ph--gear--regular';\n\n const [subjectId] = id.split('~');\n const { spaceId, objectId } = parseId(subjectId);\n const client = context.requestCapability(ClientCapabilities.Client);\n const spaces = toSignal(\n (onChange) => client.spaces.subscribe(() => onChange()).unsubscribe,\n () => client.spaces.get(),\n );\n const space = spaces?.find((space) => space.id === spaceId && space.state.get() === SpaceState.SPACE_READY);\n if (!objectId) {\n const label = space\n ? space.properties.name || ['unnamed space label', { ns: SPACE_PLUGIN }]\n : ['unnamed object settings label', { ns: SPACE_PLUGIN }];\n\n // TODO(wittjosiah): Support comments for arbitrary subjects.\n // This is to ensure that the comments panel is not stuck on an old object.\n return {\n id,\n type,\n data: null,\n properties: {\n icon,\n label,\n showResolvedThreads: false,\n object: null,\n space,\n },\n };\n }\n\n const [object] = memoizeQuery(space, { id: objectId });\n if (!object || !subjectId) {\n return;\n }\n\n const meta = resolve(getTypename(object) ?? '');\n const label = meta.label?.(object) ||\n object.name ||\n meta.placeholder || ['unnamed object settings label', { ns: SPACE_PLUGIN }];\n\n return {\n id,\n type,\n data: null,\n properties: {\n icon,\n label,\n object,\n },\n };\n },\n }),\n ]);\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Capabilities", "contributes", "createIntent", "Expando", "Filter", "FQ_ID_LENGTH", "getSpace", "isEchoObject", "isSpace", "OBJECT_ID_LENGTH", "parseId", "SPACE_ID_LENGTH", "SpaceState", "getTypename", "isDeleted", "log", "ClientCapabilities", "createExtension", "toSignal", "nonNullable", "context", "resolve", "typename", "requestCapabilities", "Capabilities", "Metadata", "find", "id", "metadata", "spacesNode", "SPACES", "type", "cacheable", "properties", "label", "ns", "SPACE_PLUGIN", "icon", "testId", "role", "disposition", "disabled", "childrenPersistenceClass", "onRearrangeChildren", "nextOrder", "graph", "requestCapability", "AppGraph", "client", "ClientCapabilities", "Client", "_sortEdges", "map", "objects", "spacesOrder", "spaces", "default", "db", "query", "Filter", "schema", "Expando", "key", "SHARED", "run", "order", "log", "warn", "contributes", "AppGraphBuilder", "createExtension", "position", "filter", "node", "actions", "SpaceAction", "OpenCreateSpace", "_tag", "data", "dispatchPromise", "dispatch", "IntentDispatcher", "createIntent", "Join", "connector", "resolver", "undefined", "toSignal", "onChange", "subscribe", "unsubscribe", "get", "isReady", "state", "SpaceCapabilities", "State", "settings", "SettingsStore", "getStore", "value", "memoizeQuery", "orderMap", "Map", "index", "space", "has", "sort", "a", "b", "showHidden", "SpaceState", "SPACE_INACTIVE", "constructSpaceNode", "navigable", "navigableCollections", "personal", "namesCache", "spaceNames", "length", "SPACE_ID_LENGTH", "isSpace", "constructSpaceActions", "migrating", "sdkMigrationRunning", "spaceState", "SPACE_READY", "collection", "CollectionType", "target", "object", "nonNullable", "createObjectNode", "getSpace", "FQ_ID_LENGTH", "spaceId", "objectId", "split", "OBJECT_ID_LENGTH", "isDeleted", "isEchoObject", "constructObjectActions", "endsWith", "subjectId", "parseId", "name", "showResolvedThreads", "meta", "getTypename", "placeholder"]
|
|
7
|
-
}
|