@dxos/plugin-space 0.7.4 → 0.7.5-labs.071a3e2
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-TTM2YZVS.mjs +367 -0
- package/dist/lib/browser/app-graph-builder-TTM2YZVS.mjs.map +7 -0
- package/dist/lib/browser/app-graph-serializer-ZGM5NDXE.mjs +80 -0
- package/dist/lib/browser/app-graph-serializer-ZGM5NDXE.mjs.map +7 -0
- package/dist/lib/browser/chunk-2NMUVDMZ.mjs +1715 -0
- package/dist/lib/browser/chunk-2NMUVDMZ.mjs.map +7 -0
- package/dist/lib/browser/chunk-ENRYFGYE.mjs +133 -0
- package/dist/lib/browser/chunk-ENRYFGYE.mjs.map +7 -0
- package/dist/lib/browser/chunk-H2AR4OLP.mjs +316 -0
- package/dist/lib/browser/chunk-H2AR4OLP.mjs.map +7 -0
- package/dist/lib/browser/chunk-PQXZCNAU.mjs +13 -0
- package/dist/lib/browser/chunk-PQXZCNAU.mjs.map +7 -0
- package/dist/lib/browser/chunk-RLZQJD47.mjs +22 -0
- package/dist/lib/browser/chunk-RLZQJD47.mjs.map +7 -0
- package/dist/lib/browser/chunk-S5IGZNXJ.mjs +528 -0
- package/dist/lib/browser/chunk-S5IGZNXJ.mjs.map +7 -0
- package/dist/lib/browser/identity-created-VICTPQX7.mjs +28 -0
- package/dist/lib/browser/identity-created-VICTPQX7.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +193 -3521
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/intent-resolver-A5274MUR.mjs +537 -0
- package/dist/lib/browser/intent-resolver-A5274MUR.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/react-root-N6QTWYCV.mjs +28 -0
- package/dist/lib/browser/react-root-N6QTWYCV.mjs.map +7 -0
- package/dist/lib/browser/react-surface-STMNA7W7.mjs +231 -0
- package/dist/lib/browser/react-surface-STMNA7W7.mjs.map +7 -0
- package/dist/lib/browser/settings-HN5UIYQO.mjs +24 -0
- package/dist/lib/browser/settings-HN5UIYQO.mjs.map +7 -0
- package/dist/lib/browser/spaces-ready-F57ITJDR.mjs +199 -0
- package/dist/lib/browser/spaces-ready-F57ITJDR.mjs.map +7 -0
- package/dist/lib/browser/state-6DCY5YJP.mjs +47 -0
- package/dist/lib/browser/state-6DCY5YJP.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +14 -5
- package/dist/lib/node/app-graph-builder-6N4TEVHH.cjs +370 -0
- package/dist/lib/node/app-graph-builder-6N4TEVHH.cjs.map +7 -0
- package/dist/lib/node/app-graph-serializer-AWKVTYAB.cjs +88 -0
- package/dist/lib/node/app-graph-serializer-AWKVTYAB.cjs.map +7 -0
- package/dist/lib/node/chunk-2RCJT3P2.cjs +1712 -0
- package/dist/lib/node/chunk-2RCJT3P2.cjs.map +7 -0
- package/dist/lib/node/chunk-I2LRRRMV.cjs +150 -0
- package/dist/lib/node/chunk-I2LRRRMV.cjs.map +7 -0
- package/dist/lib/node/chunk-MMXP2NHE.cjs +556 -0
- package/dist/lib/node/chunk-MMXP2NHE.cjs.map +7 -0
- package/dist/lib/node/chunk-SPCSJ2CY.cjs +345 -0
- package/dist/lib/node/chunk-SPCSJ2CY.cjs.map +7 -0
- package/dist/lib/node/chunk-UX3U4RU2.cjs +42 -0
- package/dist/lib/node/chunk-UX3U4RU2.cjs.map +7 -0
- package/dist/lib/node/{meta.cjs → chunk-WZR6OAN3.cjs} +13 -13
- package/dist/lib/node/chunk-WZR6OAN3.cjs.map +7 -0
- package/dist/lib/node/identity-created-JNDKMFKI.cjs +44 -0
- package/dist/lib/node/identity-created-JNDKMFKI.cjs.map +7 -0
- package/dist/lib/node/index.cjs +176 -3506
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/intent-resolver-NVTAESKB.cjs +536 -0
- package/dist/lib/node/intent-resolver-NVTAESKB.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/react-root-YCHSAYQE.cjs +50 -0
- package/dist/lib/node/react-root-YCHSAYQE.cjs.map +7 -0
- package/dist/lib/node/react-surface-ANSZ4FKK.cjs +229 -0
- package/dist/lib/node/react-surface-ANSZ4FKK.cjs.map +7 -0
- package/dist/lib/node/settings-RBBL22DJ.cjs +38 -0
- package/dist/lib/node/settings-RBBL22DJ.cjs.map +7 -0
- package/dist/lib/node/spaces-ready-WHU4J6E5.cjs +210 -0
- package/dist/lib/node/spaces-ready-WHU4J6E5.cjs.map +7 -0
- package/dist/lib/node/state-WPZC4JXB.cjs +61 -0
- package/dist/lib/node/state-WPZC4JXB.cjs.map +7 -0
- package/dist/lib/node/types/index.cjs +23 -14
- package/dist/lib/node/types/index.cjs.map +2 -2
- package/dist/lib/node-esm/app-graph-builder-MS6BI5EW.mjs +368 -0
- package/dist/lib/node-esm/app-graph-builder-MS6BI5EW.mjs.map +7 -0
- package/dist/lib/node-esm/app-graph-serializer-AWAWDSCM.mjs +81 -0
- package/dist/lib/node-esm/app-graph-serializer-AWAWDSCM.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-4HICD7AU.mjs +1716 -0
- package/dist/lib/node-esm/chunk-4HICD7AU.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-77RE7Y5J.mjs +529 -0
- package/dist/lib/node-esm/chunk-77RE7Y5J.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-ESWV7ICX.mjs +134 -0
- package/dist/lib/node-esm/chunk-ESWV7ICX.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-ICCM4YRJ.mjs +15 -0
- package/dist/lib/node-esm/chunk-ICCM4YRJ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-LGL4A5B5.mjs +23 -0
- package/dist/lib/node-esm/chunk-LGL4A5B5.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-S6VAU6VJ.mjs +317 -0
- package/dist/lib/node-esm/chunk-S6VAU6VJ.mjs.map +7 -0
- package/dist/lib/node-esm/identity-created-3AUSSVEK.mjs +29 -0
- package/dist/lib/node-esm/identity-created-3AUSSVEK.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +193 -3521
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/intent-resolver-KJ67TU34.mjs +538 -0
- package/dist/lib/node-esm/intent-resolver-KJ67TU34.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/react-root-NBQQKAZD.mjs +29 -0
- package/dist/lib/node-esm/react-root-NBQQKAZD.mjs.map +7 -0
- package/dist/lib/node-esm/react-surface-G2H5T2D2.mjs +232 -0
- package/dist/lib/node-esm/react-surface-G2H5T2D2.mjs.map +7 -0
- package/dist/lib/node-esm/settings-VBAUB37B.mjs +25 -0
- package/dist/lib/node-esm/settings-VBAUB37B.mjs.map +7 -0
- package/dist/lib/node-esm/spaces-ready-ABADUX2P.mjs +200 -0
- package/dist/lib/node-esm/spaces-ready-ABADUX2P.mjs.map +7 -0
- package/dist/lib/node-esm/state-5GH2D5U4.mjs +48 -0
- package/dist/lib/node-esm/state-5GH2D5U4.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +14 -5
- package/dist/types/src/SpacePlugin.d.ts +3 -22
- package/dist/types/src/SpacePlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +181 -0
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-serializer.d.ts +4 -0
- package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -0
- package/dist/types/src/capabilities/capabilities.d.ts +21 -0
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
- package/dist/types/src/capabilities/identity-created.d.ts +4 -0
- package/dist/types/src/capabilities/identity-created.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +196 -0
- package/dist/types/src/capabilities/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/intent-resolver.d.ts +9 -0
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-root.d.ts +7 -0
- package/dist/types/src/capabilities/react-root.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface.d.ts +7 -0
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
- package/dist/types/src/capabilities/settings.d.ts +4 -0
- package/dist/types/src/capabilities/settings.d.ts.map +1 -0
- package/dist/types/src/capabilities/spaces-ready.d.ts +4 -0
- package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -0
- package/dist/types/src/capabilities/state.d.ts +5 -0
- package/dist/types/src/capabilities/state.d.ts.map +1 -0
- package/dist/types/src/components/AdvancedObjectSettings/AdvancedObjectSettings.d.ts +7 -0
- package/dist/types/src/components/AdvancedObjectSettings/AdvancedObjectSettings.d.ts.map +1 -0
- package/dist/types/src/components/AdvancedObjectSettings/ForeignKeys.d.ts +8 -0
- package/dist/types/src/components/AdvancedObjectSettings/ForeignKeys.d.ts.map +1 -0
- package/dist/types/src/components/AdvancedObjectSettings/index.d.ts +2 -0
- package/dist/types/src/components/AdvancedObjectSettings/index.d.ts.map +1 -0
- package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
- package/dist/types/src/components/BaseObjectSettings.d.ts +7 -0
- package/dist/types/src/components/BaseObjectSettings.d.ts.map +1 -0
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +5 -4
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +9 -9
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -0
- package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
- package/dist/types/src/components/JoinDialog.d.ts +1 -0
- package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
- package/dist/types/src/components/PopoverRenameObject.d.ts +1 -0
- package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
- package/dist/types/src/components/PopoverRenameSpace.d.ts +1 -0
- package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
- package/dist/types/src/components/ShareSpaceButton.d.ts.map +1 -1
- package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
- package/dist/types/src/components/SpacePresence.d.ts +9 -6
- package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
- package/dist/types/src/components/SpacePresence.stories.d.ts +1 -1
- package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsDialog.d.ts +1 -0
- package/dist/types/src/components/SpaceSettings/SpaceSettingsDialog.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsDialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsPanel.d.ts +4 -3
- 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 +3 -3
- package/dist/types/src/components/SyncStatus/InlineSyncStatus.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatusDetail.stories.d.ts +2 -2
- package/dist/types/src/components/SyncStatus/SyncStatusDetail.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +2 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/events.d.ts +5 -0
- package/dist/types/src/events.d.ts.map +1 -0
- package/dist/types/src/hooks/index.d.ts +2 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -0
- package/dist/types/src/hooks/usePath.d.ts +11 -0
- package/dist/types/src/hooks/usePath.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +3 -5
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +2 -27
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +18 -3
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/collection.d.ts +8 -12
- package/dist/types/src/types/collection.d.ts.map +1 -1
- package/dist/types/src/types/thread.d.ts +180 -186
- package/dist/types/src/types/thread.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +228 -16
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +9 -8
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -0
- package/package.json +39 -46
- package/src/SpacePlugin.tsx +121 -1538
- package/src/capabilities/app-graph-builder.ts +393 -0
- package/src/capabilities/app-graph-serializer.ts +73 -0
- package/src/capabilities/capabilities.ts +26 -0
- package/src/capabilities/identity-created.ts +26 -0
- package/src/capabilities/index.ts +17 -0
- package/src/capabilities/intent-resolver.ts +518 -0
- package/src/capabilities/react-root.tsx +20 -0
- package/src/capabilities/react-surface.tsx +226 -0
- package/src/capabilities/settings.ts +17 -0
- package/src/capabilities/spaces-ready.ts +230 -0
- package/src/capabilities/state.ts +45 -0
- package/src/components/AdvancedObjectSettings/AdvancedObjectSettings.tsx +72 -0
- package/src/components/AdvancedObjectSettings/ForeignKeys.tsx +51 -0
- package/src/components/AdvancedObjectSettings/index.ts +5 -0
- package/src/components/AwaitingObject.tsx +15 -19
- package/src/components/{DefaultObjectSettings.tsx → BaseObjectSettings.tsx} +2 -2
- package/src/components/CreateDialog/CreateObjectDialog.tsx +49 -38
- package/src/components/CreateDialog/CreateObjectPanel.tsx +137 -101
- package/src/components/CreateDialog/CreateSpaceDialog.tsx +22 -17
- package/src/components/JoinDialog.tsx +40 -48
- package/src/components/PersistenceStatus.tsx +1 -1
- package/src/components/PopoverRenameObject.tsx +2 -0
- package/src/components/PopoverRenameSpace.tsx +2 -0
- package/src/components/ShareSpaceButton.tsx +5 -4
- package/src/components/SpacePluginSettings.tsx +5 -16
- package/src/components/SpacePresence.stories.tsx +27 -19
- package/src/components/SpacePresence.tsx +41 -21
- package/src/components/SpaceSettings/SpaceSettingsDialog.stories.tsx +2 -3
- package/src/components/SpaceSettings/SpaceSettingsDialog.tsx +19 -2
- package/src/components/SpaceSettings/SpaceSettingsPanel.stories.tsx +7 -5
- package/src/components/SpaceSettings/SpaceSettingsPanel.tsx +7 -7
- package/src/components/SyncStatus/InlineSyncStatus.tsx +37 -27
- package/src/components/SyncStatus/SyncStatus.tsx +2 -1
- package/src/components/SyncStatus/SyncStatusDetail.stories.tsx +55 -51
- package/src/components/index.ts +2 -1
- package/src/events.ts +12 -0
- package/src/hooks/index.ts +5 -0
- package/src/hooks/usePath.ts +44 -0
- package/src/index.ts +3 -7
- package/src/meta.ts +2 -29
- package/src/translations.ts +7 -2
- package/src/types/collection.ts +3 -3
- package/src/types/thread.ts +6 -6
- package/src/types/types.ts +177 -42
- package/src/util.tsx +82 -65
- package/dist/lib/browser/chunk-FTKV32QZ.mjs +0 -43
- package/dist/lib/browser/chunk-FTKV32QZ.mjs.map +0 -7
- package/dist/lib/browser/chunk-MWKXNS5S.mjs +0 -124
- package/dist/lib/browser/chunk-MWKXNS5S.mjs.map +0 -7
- package/dist/lib/browser/meta.mjs +0 -15
- package/dist/lib/browser/meta.mjs.map +0 -7
- package/dist/lib/node/chunk-6SNOZF7Y.cjs +0 -152
- package/dist/lib/node/chunk-6SNOZF7Y.cjs.map +0 -7
- package/dist/lib/node/chunk-QNVEU2UD.cjs +0 -69
- package/dist/lib/node/chunk-QNVEU2UD.cjs.map +0 -7
- package/dist/lib/node/meta.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-OHEAWSCA.mjs +0 -126
- package/dist/lib/node-esm/chunk-OHEAWSCA.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-UMV7XREB.mjs +0 -45
- package/dist/lib/node-esm/chunk-UMV7XREB.mjs.map +0 -7
- package/dist/lib/node-esm/meta.mjs +0 -16
- package/dist/lib/node-esm/meta.mjs.map +0 -7
- package/dist/types/src/components/DefaultObjectSettings.d.ts +0 -7
- package/dist/types/src/components/DefaultObjectSettings.d.ts.map +0 -1
- package/dist/types/src/components/SyncStatus/InlineSyncStatus.stories.d.ts +0 -6
- package/dist/types/src/components/SyncStatus/InlineSyncStatus.stories.d.ts.map +0 -1
- package/src/components/SyncStatus/InlineSyncStatus.stories.tsx +0 -57
package/src/types/types.ts
CHANGED
|
@@ -2,22 +2,19 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import type
|
|
6
|
-
GraphBuilderProvides,
|
|
7
|
-
GraphSerializerProvides,
|
|
8
|
-
IntentResolverProvides,
|
|
9
|
-
MetadataRecordsProvides,
|
|
10
|
-
SettingsProvides,
|
|
11
|
-
SurfaceProvides,
|
|
12
|
-
TranslationsProvides,
|
|
13
|
-
Plugin,
|
|
14
|
-
} from '@dxos/app-framework';
|
|
15
|
-
import { AST, S, type AbstractTypedObject, type Expando } from '@dxos/echo-schema';
|
|
16
|
-
import { type PanelProvides } from '@dxos/plugin-deck/types';
|
|
5
|
+
import { AST, S, type Expando } from '@dxos/echo-schema';
|
|
17
6
|
import { type PublicKey } from '@dxos/react-client';
|
|
18
|
-
import { type Space } from '@dxos/react-client/echo';
|
|
7
|
+
import { EchoObjectSchema, ReactiveObjectSchema, type Space, SpaceSchema } from '@dxos/react-client/echo';
|
|
19
8
|
import { type ComplexMap } from '@dxos/util';
|
|
20
9
|
|
|
10
|
+
import { CollectionType } from './collection';
|
|
11
|
+
import { SPACE_PLUGIN } from '../meta';
|
|
12
|
+
|
|
13
|
+
// I've copy pasted this here to not depend on the whole @dxos/app-framework package in types entrypoint.
|
|
14
|
+
/** @deprecated */
|
|
15
|
+
export const ActiveParts = S.Record({ key: S.String, value: S.Union(S.String, S.mutable(S.Array(S.String))) });
|
|
16
|
+
export type ActiveParts = S.Schema.Type<typeof ActiveParts>;
|
|
17
|
+
|
|
21
18
|
export const SPACE_DIRECTORY_HANDLE = 'dxos.org/plugin/space/directory';
|
|
22
19
|
|
|
23
20
|
export type ObjectViewerProps = {
|
|
@@ -67,36 +64,16 @@ export type PluginState = {
|
|
|
67
64
|
enabledEdgeReplication: boolean;
|
|
68
65
|
};
|
|
69
66
|
|
|
70
|
-
export
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
67
|
+
export const SpaceSettingsSchema = S.mutable(
|
|
68
|
+
S.Struct({
|
|
69
|
+
/**
|
|
70
|
+
* Show closed spaces.
|
|
71
|
+
*/
|
|
72
|
+
showHidden: S.Boolean,
|
|
73
|
+
}),
|
|
74
|
+
);
|
|
76
75
|
|
|
77
|
-
export type
|
|
78
|
-
echo: {
|
|
79
|
-
schema?: AbstractTypedObject[];
|
|
80
|
-
system?: AbstractTypedObject[];
|
|
81
|
-
};
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
export const parseSchemaPlugin = (plugin?: Plugin) =>
|
|
85
|
-
Array.isArray((plugin?.provides as any).echo?.schema) || Array.isArray((plugin?.provides as any).echo?.system)
|
|
86
|
-
? (plugin as Plugin<SchemaProvides>)
|
|
87
|
-
: undefined;
|
|
88
|
-
|
|
89
|
-
export type SpacePluginProvides = SurfaceProvides &
|
|
90
|
-
IntentResolverProvides &
|
|
91
|
-
GraphBuilderProvides &
|
|
92
|
-
GraphSerializerProvides &
|
|
93
|
-
MetadataRecordsProvides &
|
|
94
|
-
SettingsProvides<SpaceSettingsProps> &
|
|
95
|
-
TranslationsProvides &
|
|
96
|
-
SchemaProvides &
|
|
97
|
-
PanelProvides & {
|
|
98
|
-
space: Readonly<PluginState>;
|
|
99
|
-
};
|
|
76
|
+
export type SpaceSettingsProps = S.Schema.Type<typeof SpaceSettingsSchema>;
|
|
100
77
|
|
|
101
78
|
// TODO(wittjosiah): Reconcile with graph export serializers.
|
|
102
79
|
|
|
@@ -115,5 +92,163 @@ export interface TypedObjectSerializer<T extends Expando = Expando> {
|
|
|
115
92
|
|
|
116
93
|
export const SpaceForm = S.Struct({
|
|
117
94
|
name: S.optional(S.String.annotations({ [AST.TitleAnnotationId]: 'Name' })),
|
|
95
|
+
// TODO(wittjosiah): Make optional with default value.
|
|
118
96
|
edgeReplication: S.Boolean.annotations({ [AST.TitleAnnotationId]: 'Enable EDGE Replication' }),
|
|
119
97
|
});
|
|
98
|
+
|
|
99
|
+
export const SPACE_ACTION = `${SPACE_PLUGIN}/action`;
|
|
100
|
+
|
|
101
|
+
export namespace SpaceAction {
|
|
102
|
+
export class OpenCreateSpace extends S.TaggedClass<OpenCreateSpace>()(`${SPACE_ACTION}/open-create-space`, {
|
|
103
|
+
input: S.Void,
|
|
104
|
+
output: S.Void,
|
|
105
|
+
}) {}
|
|
106
|
+
|
|
107
|
+
export class Create extends S.TaggedClass<Create>()(`${SPACE_ACTION}/create`, {
|
|
108
|
+
input: SpaceForm,
|
|
109
|
+
output: S.Struct({
|
|
110
|
+
id: S.String,
|
|
111
|
+
subject: S.Array(S.String),
|
|
112
|
+
space: SpaceSchema,
|
|
113
|
+
}),
|
|
114
|
+
}) {}
|
|
115
|
+
|
|
116
|
+
export class Join extends S.TaggedClass<Join>()(`${SPACE_ACTION}/join`, {
|
|
117
|
+
input: S.Struct({
|
|
118
|
+
invitationCode: S.optional(S.String),
|
|
119
|
+
onDone: S.optional(S.Any),
|
|
120
|
+
}),
|
|
121
|
+
output: S.Void,
|
|
122
|
+
}) {}
|
|
123
|
+
|
|
124
|
+
export class Share extends S.TaggedClass<Share>()(`${SPACE_ACTION}/share`, {
|
|
125
|
+
input: S.Struct({
|
|
126
|
+
space: SpaceSchema,
|
|
127
|
+
}),
|
|
128
|
+
output: S.Void,
|
|
129
|
+
}) {}
|
|
130
|
+
|
|
131
|
+
export class Lock extends S.TaggedClass<Lock>()(`${SPACE_ACTION}/lock`, {
|
|
132
|
+
input: S.Struct({
|
|
133
|
+
space: SpaceSchema,
|
|
134
|
+
}),
|
|
135
|
+
output: S.Void,
|
|
136
|
+
}) {}
|
|
137
|
+
|
|
138
|
+
export class Unlock extends S.TaggedClass<Unlock>()(`${SPACE_ACTION}/unlock`, {
|
|
139
|
+
input: S.Struct({
|
|
140
|
+
space: SpaceSchema,
|
|
141
|
+
}),
|
|
142
|
+
output: S.Void,
|
|
143
|
+
}) {}
|
|
144
|
+
|
|
145
|
+
export class Rename extends S.TaggedClass<Rename>()(`${SPACE_ACTION}/rename`, {
|
|
146
|
+
input: S.Struct({
|
|
147
|
+
space: SpaceSchema,
|
|
148
|
+
caller: S.optional(S.String),
|
|
149
|
+
}),
|
|
150
|
+
output: S.Void,
|
|
151
|
+
}) {}
|
|
152
|
+
|
|
153
|
+
export class OpenSettings extends S.TaggedClass<OpenSettings>()(`${SPACE_ACTION}/open-settings`, {
|
|
154
|
+
input: S.Struct({
|
|
155
|
+
space: SpaceSchema,
|
|
156
|
+
}),
|
|
157
|
+
output: S.Void,
|
|
158
|
+
}) {}
|
|
159
|
+
|
|
160
|
+
export class Open extends S.TaggedClass<Open>()(`${SPACE_ACTION}/open`, {
|
|
161
|
+
input: S.Struct({
|
|
162
|
+
space: SpaceSchema,
|
|
163
|
+
}),
|
|
164
|
+
output: S.Void,
|
|
165
|
+
}) {}
|
|
166
|
+
|
|
167
|
+
export class Close extends S.TaggedClass<Close>()(`${SPACE_ACTION}/close`, {
|
|
168
|
+
input: S.Struct({
|
|
169
|
+
space: SpaceSchema,
|
|
170
|
+
}),
|
|
171
|
+
output: S.Void,
|
|
172
|
+
}) {}
|
|
173
|
+
|
|
174
|
+
export class Migrate extends S.TaggedClass<Migrate>()(`${SPACE_ACTION}/migrate`, {
|
|
175
|
+
input: S.Struct({
|
|
176
|
+
space: SpaceSchema,
|
|
177
|
+
version: S.optional(S.String),
|
|
178
|
+
}),
|
|
179
|
+
output: S.Boolean,
|
|
180
|
+
}) {}
|
|
181
|
+
|
|
182
|
+
export class OpenCreateObject extends S.TaggedClass<OpenCreateObject>()(`${SPACE_ACTION}/open-create-object`, {
|
|
183
|
+
input: S.Struct({
|
|
184
|
+
target: S.Union(SpaceSchema, CollectionType),
|
|
185
|
+
navigable: S.optional(S.Boolean),
|
|
186
|
+
}),
|
|
187
|
+
output: S.Void,
|
|
188
|
+
}) {}
|
|
189
|
+
|
|
190
|
+
export class AddObject extends S.TaggedClass<AddObject>()(`${SPACE_ACTION}/add-object`, {
|
|
191
|
+
input: S.Struct({
|
|
192
|
+
object: ReactiveObjectSchema,
|
|
193
|
+
target: S.Union(SpaceSchema, CollectionType),
|
|
194
|
+
}),
|
|
195
|
+
output: S.Struct({
|
|
196
|
+
id: S.String,
|
|
197
|
+
subject: S.Array(S.String),
|
|
198
|
+
object: EchoObjectSchema,
|
|
199
|
+
}),
|
|
200
|
+
}) {}
|
|
201
|
+
|
|
202
|
+
export const DeletionData = S.Struct({
|
|
203
|
+
objects: S.Array(EchoObjectSchema),
|
|
204
|
+
parentCollection: CollectionType,
|
|
205
|
+
indices: S.Array(S.Number),
|
|
206
|
+
nestedObjectsList: S.Array(S.Array(EchoObjectSchema)),
|
|
207
|
+
wasActive: S.Array(S.String),
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
export type DeletionData = S.Schema.Type<typeof DeletionData>;
|
|
211
|
+
|
|
212
|
+
export class RemoveObjects extends S.TaggedClass<RemoveObjects>()(`${SPACE_ACTION}/remove-objects`, {
|
|
213
|
+
input: S.Struct({
|
|
214
|
+
objects: S.Array(EchoObjectSchema),
|
|
215
|
+
target: S.optional(CollectionType),
|
|
216
|
+
deletionData: S.optional(DeletionData),
|
|
217
|
+
}),
|
|
218
|
+
output: S.Void,
|
|
219
|
+
}) {}
|
|
220
|
+
|
|
221
|
+
export class RenameObject extends S.TaggedClass<RenameObject>()(`${SPACE_ACTION}/rename-object`, {
|
|
222
|
+
input: S.Struct({
|
|
223
|
+
object: EchoObjectSchema,
|
|
224
|
+
caller: S.optional(S.String),
|
|
225
|
+
}),
|
|
226
|
+
output: S.Void,
|
|
227
|
+
}) {}
|
|
228
|
+
|
|
229
|
+
export class DuplicateObject extends S.TaggedClass<DuplicateObject>()(`${SPACE_ACTION}/duplicate-object`, {
|
|
230
|
+
input: S.Struct({
|
|
231
|
+
object: EchoObjectSchema,
|
|
232
|
+
target: S.Union(SpaceSchema, CollectionType),
|
|
233
|
+
}),
|
|
234
|
+
output: S.Void,
|
|
235
|
+
}) {}
|
|
236
|
+
|
|
237
|
+
export class WaitForObject extends S.TaggedClass<WaitForObject>()(`${SPACE_ACTION}/wait-for-object`, {
|
|
238
|
+
input: S.Struct({
|
|
239
|
+
id: S.optional(S.String),
|
|
240
|
+
}),
|
|
241
|
+
output: S.Void,
|
|
242
|
+
}) {}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
export namespace CollectionAction {
|
|
246
|
+
export class Create extends S.TaggedClass<Create>()('dxos.org/plugin/collection/action/create', {
|
|
247
|
+
input: S.Struct({
|
|
248
|
+
name: S.optional(S.String),
|
|
249
|
+
}),
|
|
250
|
+
output: S.Struct({
|
|
251
|
+
object: CollectionType,
|
|
252
|
+
}),
|
|
253
|
+
}) {}
|
|
254
|
+
}
|
package/src/util.tsx
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { type
|
|
5
|
+
import { createIntent, type PromiseIntentDispatcher, LayoutAction } from '@dxos/app-framework';
|
|
6
6
|
import { EXPANDO_TYPENAME, getObjectAnnotation, getTypename, type Expando } from '@dxos/echo-schema';
|
|
7
7
|
import { invariant } from '@dxos/invariant';
|
|
8
|
-
import { getSchema, isReactiveObject } from '@dxos/live-object';
|
|
8
|
+
import { getSchema, isReactiveObject, makeRef } from '@dxos/live-object';
|
|
9
9
|
import { Migrations } from '@dxos/migrations';
|
|
10
10
|
import {
|
|
11
11
|
ACTION_GROUP_TYPE,
|
|
@@ -34,8 +34,8 @@ import {
|
|
|
34
34
|
type Space,
|
|
35
35
|
} from '@dxos/react-client/echo';
|
|
36
36
|
|
|
37
|
-
import { SPACE_PLUGIN
|
|
38
|
-
import { CollectionType } from './types';
|
|
37
|
+
import { SPACE_PLUGIN } from './meta';
|
|
38
|
+
import { CollectionType, SpaceAction } from './types';
|
|
39
39
|
|
|
40
40
|
export const SPACES = `${SPACE_PLUGIN}-spaces`;
|
|
41
41
|
export const SPACE_TYPE = 'dxos.org/type/Space';
|
|
@@ -75,6 +75,7 @@ export const memoizeQuery = <T extends ReactiveEchoObject<any>>(
|
|
|
75
75
|
return query?.objects ?? EMPTY_ARRAY;
|
|
76
76
|
};
|
|
77
77
|
|
|
78
|
+
// TODO(wittjosiah): Factor out? Expose via capability?
|
|
78
79
|
export const getSpaceDisplayName = (
|
|
79
80
|
space: Space,
|
|
80
81
|
{ personal, namesCache = {} }: { personal?: boolean; namesCache?: Record<string, string> } = {},
|
|
@@ -97,7 +98,7 @@ const getCollectionGraphNodePartials = ({
|
|
|
97
98
|
navigable: boolean;
|
|
98
99
|
collection: CollectionType;
|
|
99
100
|
space: Space;
|
|
100
|
-
resolve:
|
|
101
|
+
resolve: (typename: string) => Record<string, any>;
|
|
101
102
|
}) => {
|
|
102
103
|
return {
|
|
103
104
|
disabled: !navigable,
|
|
@@ -106,7 +107,7 @@ const getCollectionGraphNodePartials = ({
|
|
|
106
107
|
role: 'branch',
|
|
107
108
|
onRearrangeChildren: (nextOrder: unknown[]) => {
|
|
108
109
|
// Change on disk.
|
|
109
|
-
collection.objects = nextOrder.filter(isEchoObject);
|
|
110
|
+
collection.objects = nextOrder.filter(isEchoObject).map(makeRef);
|
|
110
111
|
},
|
|
111
112
|
onTransferStart: (child: Node<ReactiveEchoObject<any>>, index?: number) => {
|
|
112
113
|
// TODO(wittjosiah): Support transfer between spaces.
|
|
@@ -126,11 +127,12 @@ const getCollectionGraphNodePartials = ({
|
|
|
126
127
|
// } else {
|
|
127
128
|
|
|
128
129
|
// Add child to destination collection.
|
|
129
|
-
|
|
130
|
+
// TODO(dmaretskyi): Compare by id.
|
|
131
|
+
if (!collection.objects.find((object) => object.target === child.data)) {
|
|
130
132
|
if (typeof index !== 'undefined') {
|
|
131
|
-
collection.objects.splice(index, 0, child.data);
|
|
133
|
+
collection.objects.splice(index, 0, makeRef(child.data));
|
|
132
134
|
} else {
|
|
133
|
-
collection.objects.push(child.data);
|
|
135
|
+
collection.objects.push(makeRef(child.data));
|
|
134
136
|
}
|
|
135
137
|
}
|
|
136
138
|
|
|
@@ -138,7 +140,7 @@ const getCollectionGraphNodePartials = ({
|
|
|
138
140
|
},
|
|
139
141
|
onTransferEnd: (child: Node<ReactiveEchoObject<any>>, destination: Node) => {
|
|
140
142
|
// Remove child from origin collection.
|
|
141
|
-
const index = collection.objects.
|
|
143
|
+
const index = collection.objects.findIndex((object) => object.target === child.data);
|
|
142
144
|
if (index > -1) {
|
|
143
145
|
collection.objects.splice(index, 1);
|
|
144
146
|
}
|
|
@@ -157,9 +159,9 @@ const getCollectionGraphNodePartials = ({
|
|
|
157
159
|
const newObject = await cloneObject(child.data, resolve, space);
|
|
158
160
|
space.db.add(newObject);
|
|
159
161
|
if (typeof index !== 'undefined') {
|
|
160
|
-
collection.objects.splice(index, 0, newObject);
|
|
162
|
+
collection.objects.splice(index, 0, makeRef(newObject));
|
|
161
163
|
} else {
|
|
162
|
-
collection.objects.push(newObject);
|
|
164
|
+
collection.objects.push(makeRef(newObject));
|
|
163
165
|
}
|
|
164
166
|
},
|
|
165
167
|
};
|
|
@@ -185,10 +187,10 @@ export const constructSpaceNode = ({
|
|
|
185
187
|
navigable?: boolean;
|
|
186
188
|
personal?: boolean;
|
|
187
189
|
namesCache?: Record<string, string>;
|
|
188
|
-
resolve:
|
|
190
|
+
resolve: (typename: string) => Record<string, any>;
|
|
189
191
|
}) => {
|
|
190
192
|
const hasPendingMigration = checkPendingMigration(space);
|
|
191
|
-
const collection = space.state.get() === SpaceState.SPACE_READY && space.properties[CollectionType.typename];
|
|
193
|
+
const collection = space.state.get() === SpaceState.SPACE_READY && space.properties[CollectionType.typename]?.target;
|
|
192
194
|
const partials =
|
|
193
195
|
space.state.get() === SpaceState.SPACE_READY && collection instanceof CollectionType
|
|
194
196
|
? getCollectionGraphNodePartials({ collection, space, resolve, navigable })
|
|
@@ -217,7 +219,7 @@ export const constructSpaceActions = ({
|
|
|
217
219
|
migrating,
|
|
218
220
|
}: {
|
|
219
221
|
space: Space;
|
|
220
|
-
dispatch:
|
|
222
|
+
dispatch: PromiseIntentDispatcher;
|
|
221
223
|
personal?: boolean;
|
|
222
224
|
migrating?: boolean;
|
|
223
225
|
}) => {
|
|
@@ -228,10 +230,10 @@ export const constructSpaceActions = ({
|
|
|
228
230
|
|
|
229
231
|
if (hasPendingMigration) {
|
|
230
232
|
actions.push({
|
|
231
|
-
id: getId(SpaceAction.
|
|
233
|
+
id: getId(SpaceAction.Migrate._tag),
|
|
232
234
|
type: ACTION_GROUP_TYPE,
|
|
233
235
|
data: async () => {
|
|
234
|
-
await dispatch(
|
|
236
|
+
await dispatch(createIntent(SpaceAction.Migrate, { space }));
|
|
235
237
|
},
|
|
236
238
|
properties: {
|
|
237
239
|
label: ['migrate space label', { ns: SPACE_PLUGIN }],
|
|
@@ -246,31 +248,35 @@ export const constructSpaceActions = ({
|
|
|
246
248
|
const locked = space.properties[COMPOSER_SPACE_LOCK];
|
|
247
249
|
actions.push(
|
|
248
250
|
{
|
|
249
|
-
id: getId(SpaceAction.
|
|
251
|
+
id: getId(SpaceAction.OpenCreateObject._tag),
|
|
250
252
|
type: ACTION_TYPE,
|
|
251
253
|
data: async () => {
|
|
252
|
-
await dispatch(
|
|
254
|
+
await dispatch(createIntent(SpaceAction.OpenCreateObject, { target: space }));
|
|
253
255
|
},
|
|
254
256
|
properties: {
|
|
255
257
|
label: ['create object in space label', { ns: SPACE_PLUGIN }],
|
|
256
258
|
icon: 'ph--plus--regular',
|
|
257
|
-
disposition: '
|
|
259
|
+
disposition: 'item',
|
|
258
260
|
testId: 'spacePlugin.createObject',
|
|
259
261
|
},
|
|
260
262
|
},
|
|
261
263
|
{
|
|
262
|
-
id: getId(SpaceAction.
|
|
264
|
+
id: getId(SpaceAction.Share._tag),
|
|
263
265
|
type: ACTION_TYPE,
|
|
264
266
|
data: async () => {
|
|
265
267
|
if (locked) {
|
|
266
268
|
return;
|
|
267
269
|
}
|
|
268
|
-
await dispatch(
|
|
270
|
+
await dispatch(createIntent(SpaceAction.Share, { space }));
|
|
269
271
|
},
|
|
270
272
|
properties: {
|
|
271
273
|
label: ['share space label', { ns: SPACE_PLUGIN }],
|
|
272
274
|
icon: 'ph--users--regular',
|
|
273
275
|
disabled: locked,
|
|
276
|
+
disposition: 'toolbar',
|
|
277
|
+
iconOnly: false,
|
|
278
|
+
variant: 'default',
|
|
279
|
+
testId: 'spacePlugin.shareSpace',
|
|
274
280
|
keyBinding: {
|
|
275
281
|
macos: 'meta+.',
|
|
276
282
|
windows: 'alt+.',
|
|
@@ -278,14 +284,14 @@ export const constructSpaceActions = ({
|
|
|
278
284
|
},
|
|
279
285
|
},
|
|
280
286
|
{
|
|
281
|
-
id: locked ? getId(SpaceAction.
|
|
287
|
+
id: locked ? getId(SpaceAction.Unlock._tag) : getId(SpaceAction.Lock._tag),
|
|
282
288
|
type: ACTION_TYPE,
|
|
283
289
|
data: async () => {
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
}
|
|
290
|
+
if (locked) {
|
|
291
|
+
await dispatch(createIntent(SpaceAction.Unlock, { space }));
|
|
292
|
+
} else {
|
|
293
|
+
await dispatch(createIntent(SpaceAction.Lock, { space }));
|
|
294
|
+
}
|
|
289
295
|
},
|
|
290
296
|
properties: {
|
|
291
297
|
label: [locked ? 'unlock space label' : 'lock space label', { ns: SPACE_PLUGIN }],
|
|
@@ -293,10 +299,10 @@ export const constructSpaceActions = ({
|
|
|
293
299
|
},
|
|
294
300
|
},
|
|
295
301
|
{
|
|
296
|
-
id: getId(SpaceAction.
|
|
302
|
+
id: getId(SpaceAction.Rename._tag),
|
|
297
303
|
type: ACTION_TYPE,
|
|
298
304
|
data: async (params: InvokeParams) => {
|
|
299
|
-
await dispatch(
|
|
305
|
+
await dispatch(createIntent(SpaceAction.Rename, { space, caller: params.caller }));
|
|
300
306
|
},
|
|
301
307
|
properties: {
|
|
302
308
|
label: ['rename space label', { ns: SPACE_PLUGIN }],
|
|
@@ -308,10 +314,10 @@ export const constructSpaceActions = ({
|
|
|
308
314
|
},
|
|
309
315
|
},
|
|
310
316
|
{
|
|
311
|
-
id: getId(SpaceAction.
|
|
317
|
+
id: getId(SpaceAction.OpenSettings._tag),
|
|
312
318
|
type: ACTION_TYPE,
|
|
313
319
|
data: async () => {
|
|
314
|
-
await dispatch(
|
|
320
|
+
await dispatch(createIntent(SpaceAction.OpenSettings, { space }));
|
|
315
321
|
},
|
|
316
322
|
properties: {
|
|
317
323
|
label: ['open space settings label', { ns: SPACE_PLUGIN }],
|
|
@@ -324,10 +330,10 @@ export const constructSpaceActions = ({
|
|
|
324
330
|
// TODO(wittjosiah): Consider moving close space into the space settings dialog.
|
|
325
331
|
if (state !== SpaceState.SPACE_INACTIVE && !hasPendingMigration) {
|
|
326
332
|
actions.push({
|
|
327
|
-
id: getId(SpaceAction.
|
|
333
|
+
id: getId(SpaceAction.Close._tag),
|
|
328
334
|
type: ACTION_TYPE,
|
|
329
335
|
data: async () => {
|
|
330
|
-
await dispatch(
|
|
336
|
+
await dispatch(createIntent(SpaceAction.Close, { space }));
|
|
331
337
|
},
|
|
332
338
|
properties: {
|
|
333
339
|
label: ['close space label', { ns: SPACE_PLUGIN }],
|
|
@@ -339,10 +345,10 @@ export const constructSpaceActions = ({
|
|
|
339
345
|
|
|
340
346
|
if (state === SpaceState.SPACE_INACTIVE) {
|
|
341
347
|
actions.push({
|
|
342
|
-
id: getId(SpaceAction.
|
|
348
|
+
id: getId(SpaceAction.Open._tag),
|
|
343
349
|
type: ACTION_TYPE,
|
|
344
350
|
data: async () => {
|
|
345
|
-
await dispatch(
|
|
351
|
+
await dispatch(createIntent(SpaceAction.Open, { space }));
|
|
346
352
|
},
|
|
347
353
|
properties: {
|
|
348
354
|
label: ['open space label', { ns: SPACE_PLUGIN }],
|
|
@@ -364,7 +370,7 @@ export const createObjectNode = ({
|
|
|
364
370
|
object: ReactiveEchoObject<any>;
|
|
365
371
|
space: Space;
|
|
366
372
|
navigable?: boolean;
|
|
367
|
-
resolve:
|
|
373
|
+
resolve: (typename: string) => Record<string, any>;
|
|
368
374
|
}) => {
|
|
369
375
|
const type = getTypename(object);
|
|
370
376
|
if (!type) {
|
|
@@ -402,9 +408,11 @@ export const createObjectNode = ({
|
|
|
402
408
|
export const constructObjectActions = ({
|
|
403
409
|
node,
|
|
404
410
|
dispatch,
|
|
411
|
+
navigable = false,
|
|
405
412
|
}: {
|
|
406
413
|
node: Node<ReactiveEchoObject<any>>;
|
|
407
|
-
dispatch:
|
|
414
|
+
dispatch: PromiseIntentDispatcher;
|
|
415
|
+
navigable?: boolean;
|
|
408
416
|
}) => {
|
|
409
417
|
const object = node.data;
|
|
410
418
|
const getId = (id: string) => `${id}/${fullyQualifiedId(object)}`;
|
|
@@ -412,14 +420,10 @@ export const constructObjectActions = ({
|
|
|
412
420
|
...(object instanceof CollectionType
|
|
413
421
|
? [
|
|
414
422
|
{
|
|
415
|
-
id: getId(SpaceAction.
|
|
423
|
+
id: getId(SpaceAction.OpenCreateObject._tag),
|
|
416
424
|
type: ACTION_TYPE,
|
|
417
425
|
data: async () => {
|
|
418
|
-
await dispatch({
|
|
419
|
-
plugin: SPACE_PLUGIN,
|
|
420
|
-
action: SpaceAction.OPEN_CREATE_OBJECT,
|
|
421
|
-
data: { target: object },
|
|
422
|
-
});
|
|
426
|
+
await dispatch(createIntent(SpaceAction.OpenCreateObject, { target: object }));
|
|
423
427
|
},
|
|
424
428
|
properties: {
|
|
425
429
|
label: ['create object in collection label', { ns: SPACE_PLUGIN }],
|
|
@@ -431,13 +435,10 @@ export const constructObjectActions = ({
|
|
|
431
435
|
]
|
|
432
436
|
: []),
|
|
433
437
|
{
|
|
434
|
-
id: getId(SpaceAction.
|
|
438
|
+
id: getId(SpaceAction.RenameObject._tag),
|
|
435
439
|
type: ACTION_TYPE,
|
|
436
440
|
data: async (params: InvokeParams) => {
|
|
437
|
-
await dispatch({
|
|
438
|
-
action: SpaceAction.RENAME_OBJECT,
|
|
439
|
-
data: { object, ...params },
|
|
440
|
-
});
|
|
441
|
+
await dispatch(createIntent(SpaceAction.RenameObject, { object, caller: params.caller }));
|
|
441
442
|
},
|
|
442
443
|
properties: {
|
|
443
444
|
label: [
|
|
@@ -451,19 +452,14 @@ export const constructObjectActions = ({
|
|
|
451
452
|
},
|
|
452
453
|
},
|
|
453
454
|
{
|
|
454
|
-
id: getId(SpaceAction.
|
|
455
|
+
id: getId(SpaceAction.RemoveObjects._tag),
|
|
455
456
|
type: ACTION_TYPE,
|
|
456
457
|
data: async () => {
|
|
457
458
|
const graph = getGraph(node);
|
|
458
459
|
const collection = graph
|
|
459
460
|
.nodes(node, { relation: 'inbound' })
|
|
460
461
|
.find(({ data }) => data instanceof CollectionType)?.data;
|
|
461
|
-
await dispatch([
|
|
462
|
-
{
|
|
463
|
-
action: SpaceAction.REMOVE_OBJECTS,
|
|
464
|
-
data: { objects: [object], collection },
|
|
465
|
-
},
|
|
466
|
-
]);
|
|
462
|
+
await dispatch(createIntent(SpaceAction.RemoveObjects, { objects: [object], target: collection }));
|
|
467
463
|
},
|
|
468
464
|
properties: {
|
|
469
465
|
label: [
|
|
@@ -475,17 +471,34 @@ export const constructObjectActions = ({
|
|
|
475
471
|
testId: 'spacePlugin.deleteObject',
|
|
476
472
|
},
|
|
477
473
|
},
|
|
474
|
+
...(navigable || !(object instanceof CollectionType)
|
|
475
|
+
? [
|
|
476
|
+
{
|
|
477
|
+
id: getId('copy-link'),
|
|
478
|
+
type: ACTION_TYPE,
|
|
479
|
+
data: async () => {
|
|
480
|
+
const url = `${window.location.origin}/${fullyQualifiedId(object)}`;
|
|
481
|
+
await navigator.clipboard.writeText(url);
|
|
482
|
+
},
|
|
483
|
+
properties: {
|
|
484
|
+
label: ['copy link label', { ns: SPACE_PLUGIN }],
|
|
485
|
+
icon: 'ph--link--regular',
|
|
486
|
+
testId: 'spacePlugin.copyLink',
|
|
487
|
+
},
|
|
488
|
+
},
|
|
489
|
+
]
|
|
490
|
+
: []),
|
|
491
|
+
// TODO(wittjosiah): Factor out and apply to all nodes.
|
|
478
492
|
{
|
|
479
|
-
id: getId(
|
|
493
|
+
id: getId(LayoutAction.Expose._tag),
|
|
480
494
|
type: ACTION_TYPE,
|
|
481
495
|
data: async () => {
|
|
482
|
-
|
|
483
|
-
await navigator.clipboard.writeText(url);
|
|
496
|
+
await dispatch(createIntent(LayoutAction.Expose, { part: 'navigation', subject: fullyQualifiedId(object) }));
|
|
484
497
|
},
|
|
485
498
|
properties: {
|
|
486
|
-
label: ['
|
|
487
|
-
icon: 'ph--
|
|
488
|
-
testId: 'spacePlugin.
|
|
499
|
+
label: ['expose object label', { ns: SPACE_PLUGIN }],
|
|
500
|
+
icon: 'ph--eye--regular',
|
|
501
|
+
testId: 'spacePlugin.exposeObject',
|
|
489
502
|
},
|
|
490
503
|
},
|
|
491
504
|
];
|
|
@@ -514,7 +527,7 @@ export const getActiveSpace = (graph: Graph, active?: string) => {
|
|
|
514
527
|
*/
|
|
515
528
|
export const getNestedObjects = async (
|
|
516
529
|
object: ReactiveEchoObject<any>,
|
|
517
|
-
resolve:
|
|
530
|
+
resolve: (typename: string) => Record<string, any>,
|
|
518
531
|
): Promise<ReactiveEchoObject<any>[]> => {
|
|
519
532
|
const type = getTypename(object);
|
|
520
533
|
if (!type) {
|
|
@@ -522,7 +535,7 @@ export const getNestedObjects = async (
|
|
|
522
535
|
}
|
|
523
536
|
|
|
524
537
|
const metadata = resolve(type);
|
|
525
|
-
const loadReferences = metadata
|
|
538
|
+
const loadReferences = metadata?.loadReferences;
|
|
526
539
|
if (typeof loadReferences !== 'function') {
|
|
527
540
|
return [];
|
|
528
541
|
}
|
|
@@ -536,7 +549,11 @@ export const getNestedObjects = async (
|
|
|
536
549
|
* @deprecated Workaround for ECHO not supporting clone.
|
|
537
550
|
*/
|
|
538
551
|
// TODO(burdon): Remove.
|
|
539
|
-
export const cloneObject = async (
|
|
552
|
+
export const cloneObject = async (
|
|
553
|
+
object: Expando,
|
|
554
|
+
resolve: (typename: string) => Record<string, any>,
|
|
555
|
+
newSpace: Space,
|
|
556
|
+
): Promise<Expando> => {
|
|
540
557
|
const schema = getSchema(object);
|
|
541
558
|
const typename = schema ? getObjectAnnotation(schema)?.typename ?? EXPANDO_TYPENAME : EXPANDO_TYPENAME;
|
|
542
559
|
const metadata = resolve(typename);
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
// packages/plugins/plugin-space/src/meta.ts
|
|
2
|
-
var SPACE_PLUGIN = "dxos.org/plugin/space";
|
|
3
|
-
var SPACE_PLUGIN_SHORT_ID = "space";
|
|
4
|
-
var meta_default = {
|
|
5
|
-
id: SPACE_PLUGIN,
|
|
6
|
-
shortId: SPACE_PLUGIN_SHORT_ID,
|
|
7
|
-
name: "Spaces"
|
|
8
|
-
};
|
|
9
|
-
var SPACE_ACTION = `${SPACE_PLUGIN}/action`;
|
|
10
|
-
var SpaceAction;
|
|
11
|
-
(function(SpaceAction2) {
|
|
12
|
-
SpaceAction2[SpaceAction2["OPEN_CREATE_SPACE"] = `${SPACE_ACTION}/open-create-space`] = "OPEN_CREATE_SPACE";
|
|
13
|
-
SpaceAction2[SpaceAction2["CREATE"] = `${SPACE_ACTION}/create`] = "CREATE";
|
|
14
|
-
SpaceAction2[SpaceAction2["JOIN"] = `${SPACE_ACTION}/join`] = "JOIN";
|
|
15
|
-
SpaceAction2[SpaceAction2["SHARE"] = `${SPACE_ACTION}/share`] = "SHARE";
|
|
16
|
-
SpaceAction2[SpaceAction2["LOCK"] = `${SPACE_ACTION}/lock`] = "LOCK";
|
|
17
|
-
SpaceAction2[SpaceAction2["UNLOCK"] = `${SPACE_ACTION}/unlock`] = "UNLOCK";
|
|
18
|
-
SpaceAction2[SpaceAction2["RENAME"] = `${SPACE_ACTION}/rename`] = "RENAME";
|
|
19
|
-
SpaceAction2[SpaceAction2["OPEN"] = `${SPACE_ACTION}/open`] = "OPEN";
|
|
20
|
-
SpaceAction2[SpaceAction2["CLOSE"] = `${SPACE_ACTION}/close`] = "CLOSE";
|
|
21
|
-
SpaceAction2[SpaceAction2["MIGRATE"] = `${SPACE_ACTION}/migrate`] = "MIGRATE";
|
|
22
|
-
SpaceAction2[SpaceAction2["OPEN_CREATE_OBJECT"] = `${SPACE_ACTION}/open-create-object`] = "OPEN_CREATE_OBJECT";
|
|
23
|
-
SpaceAction2[SpaceAction2["ADD_OBJECT"] = `${SPACE_ACTION}/add-object`] = "ADD_OBJECT";
|
|
24
|
-
SpaceAction2[SpaceAction2["REMOVE_OBJECTS"] = `${SPACE_ACTION}/remove-objects`] = "REMOVE_OBJECTS";
|
|
25
|
-
SpaceAction2[SpaceAction2["RENAME_OBJECT"] = `${SPACE_ACTION}/rename-object`] = "RENAME_OBJECT";
|
|
26
|
-
SpaceAction2[SpaceAction2["DUPLICATE_OBJECT"] = `${SPACE_ACTION}/duplicate-object`] = "DUPLICATE_OBJECT";
|
|
27
|
-
SpaceAction2[SpaceAction2["WAIT_FOR_OBJECT"] = `${SPACE_ACTION}/wait-for-object`] = "WAIT_FOR_OBJECT";
|
|
28
|
-
SpaceAction2[SpaceAction2["TOGGLE_HIDDEN"] = `${SPACE_ACTION}/toggle-hidden`] = "TOGGLE_HIDDEN";
|
|
29
|
-
SpaceAction2[SpaceAction2["OPEN_SETTINGS"] = `${SPACE_ACTION}/open-settings`] = "OPEN_SETTINGS";
|
|
30
|
-
})(SpaceAction || (SpaceAction = {}));
|
|
31
|
-
var CollectionAction;
|
|
32
|
-
(function(CollectionAction2) {
|
|
33
|
-
CollectionAction2["CREATE"] = "dxos.org/plugin/collection/action/create";
|
|
34
|
-
})(CollectionAction || (CollectionAction = {}));
|
|
35
|
-
|
|
36
|
-
export {
|
|
37
|
-
SPACE_PLUGIN,
|
|
38
|
-
SPACE_PLUGIN_SHORT_ID,
|
|
39
|
-
meta_default,
|
|
40
|
-
SpaceAction,
|
|
41
|
-
CollectionAction
|
|
42
|
-
};
|
|
43
|
-
//# sourceMappingURL=chunk-FTKV32QZ.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/meta.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const SPACE_PLUGIN = 'dxos.org/plugin/space';\nexport const SPACE_PLUGIN_SHORT_ID = 'space';\n\nexport default {\n id: SPACE_PLUGIN,\n shortId: SPACE_PLUGIN_SHORT_ID,\n name: 'Spaces',\n} satisfies PluginMeta;\n\nconst SPACE_ACTION = `${SPACE_PLUGIN}/action`;\nexport enum SpaceAction {\n OPEN_CREATE_SPACE = `${SPACE_ACTION}/open-create-space`,\n CREATE = `${SPACE_ACTION}/create`,\n JOIN = `${SPACE_ACTION}/join`,\n SHARE = `${SPACE_ACTION}/share`,\n LOCK = `${SPACE_ACTION}/lock`,\n UNLOCK = `${SPACE_ACTION}/unlock`,\n RENAME = `${SPACE_ACTION}/rename`,\n OPEN = `${SPACE_ACTION}/open`,\n CLOSE = `${SPACE_ACTION}/close`,\n MIGRATE = `${SPACE_ACTION}/migrate`,\n OPEN_CREATE_OBJECT = `${SPACE_ACTION}/open-create-object`,\n ADD_OBJECT = `${SPACE_ACTION}/add-object`,\n REMOVE_OBJECTS = `${SPACE_ACTION}/remove-objects`,\n RENAME_OBJECT = `${SPACE_ACTION}/rename-object`,\n DUPLICATE_OBJECT = `${SPACE_ACTION}/duplicate-object`,\n WAIT_FOR_OBJECT = `${SPACE_ACTION}/wait-for-object`,\n TOGGLE_HIDDEN = `${SPACE_ACTION}/toggle-hidden`,\n OPEN_SETTINGS = `${SPACE_ACTION}/open-settings`,\n}\n\nexport enum CollectionAction {\n CREATE = 'dxos.org/plugin/collection/action/create',\n}\n"],
|
|
5
|
-
"mappings": ";AAMO,IAAMA,eAAe;AACrB,IAAMC,wBAAwB;AAErC,IAAA,eAAe;EACbC,IAAIF;EACJG,SAASF;EACTG,MAAM;AACR;AAEA,IAAMC,eAAe,GAAGL,YAAAA;;UACZM,cAAAA;mDACU,GAAGD,YAAAA,oBAAgC,IAAA;wCAC9C,GAAGA,YAAAA,SAAqB,IAAA;sCAC1B,GAAGA,YAAAA,OAAmB,IAAA;uCACrB,GAAGA,YAAAA,QAAoB,IAAA;sCACxB,GAAGA,YAAAA,OAAmB,IAAA;wCACpB,GAAGA,YAAAA,SAAqB,IAAA;wCACxB,GAAGA,YAAAA,SAAqB,IAAA;sCAC1B,GAAGA,YAAAA,OAAmB,IAAA;uCACrB,GAAGA,YAAAA,QAAoB,IAAA;yCACrB,GAAGA,YAAAA,UAAsB,IAAA;oDACd,GAAGA,YAAAA,qBAAiC,IAAA;4CAC5C,GAAGA,YAAAA,aAAyB,IAAA;gDACxB,GAAGA,YAAAA,iBAA6B,IAAA;+CACjC,GAAGA,YAAAA,gBAA4B,IAAA;kDAC5B,GAAGA,YAAAA,mBAA+B,IAAA;iDACnC,GAAGA,YAAAA,kBAA8B,IAAA;+CACnC,GAAGA,YAAAA,gBAA4B,IAAA;+CAC/B,GAAGA,YAAAA,gBAA4B,IAAA;GAlBrCC,gBAAAA,cAAAA,CAAAA,EAAAA;;UAqBAC,mBAAAA;;GAAAA,qBAAAA,mBAAAA,CAAAA,EAAAA;",
|
|
6
|
-
"names": ["SPACE_PLUGIN", "SPACE_PLUGIN_SHORT_ID", "id", "shortId", "name", "SPACE_ACTION", "SpaceAction", "CollectionAction"]
|
|
7
|
-
}
|