@dxos/plugin-space 0.7.4 → 0.7.5-feature-compute.4d9d99a
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-5D2QB43K.mjs +365 -0
- package/dist/lib/browser/app-graph-builder-5D2QB43K.mjs.map +7 -0
- package/dist/lib/browser/app-graph-serializer-VNWPLPDF.mjs +80 -0
- package/dist/lib/browser/app-graph-serializer-VNWPLPDF.mjs.map +7 -0
- package/dist/lib/browser/chunk-5TBRONF6.mjs +133 -0
- package/dist/lib/browser/chunk-5TBRONF6.mjs.map +7 -0
- package/dist/lib/browser/chunk-6SWQRWOD.mjs +1672 -0
- package/dist/lib/browser/chunk-6SWQRWOD.mjs.map +7 -0
- package/dist/lib/browser/chunk-HCXWKGTE.mjs +316 -0
- package/dist/lib/browser/chunk-HCXWKGTE.mjs.map +7 -0
- package/dist/lib/browser/chunk-SOXNANA6.mjs +12 -0
- package/dist/lib/browser/chunk-SOXNANA6.mjs.map +7 -0
- package/dist/lib/browser/chunk-UH5P4UL3.mjs +21 -0
- package/dist/lib/browser/chunk-UH5P4UL3.mjs.map +7 -0
- package/dist/lib/browser/chunk-ZBKFJNHH.mjs +523 -0
- package/dist/lib/browser/chunk-ZBKFJNHH.mjs.map +7 -0
- package/dist/lib/browser/identity-created-EC5FOCX2.mjs +28 -0
- package/dist/lib/browser/identity-created-EC5FOCX2.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +192 -3521
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/intent-resolver-VBL572N7.mjs +459 -0
- package/dist/lib/browser/intent-resolver-VBL572N7.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/react-root-AZJFNTKK.mjs +28 -0
- package/dist/lib/browser/react-root-AZJFNTKK.mjs.map +7 -0
- package/dist/lib/browser/react-surface-E2VSYVNZ.mjs +238 -0
- package/dist/lib/browser/react-surface-E2VSYVNZ.mjs.map +7 -0
- package/dist/lib/browser/settings-ASFF5BZL.mjs +24 -0
- package/dist/lib/browser/settings-ASFF5BZL.mjs.map +7 -0
- package/dist/lib/browser/spaces-ready-4SFNS5JQ.mjs +200 -0
- package/dist/lib/browser/spaces-ready-4SFNS5JQ.mjs.map +7 -0
- package/dist/lib/browser/state-MS4KYJWI.mjs +47 -0
- package/dist/lib/browser/state-MS4KYJWI.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +14 -5
- package/dist/lib/node/app-graph-builder-ZQ5S62YR.cjs +368 -0
- package/dist/lib/node/app-graph-builder-ZQ5S62YR.cjs.map +7 -0
- package/dist/lib/node/app-graph-serializer-72S7P33H.cjs +88 -0
- package/dist/lib/node/app-graph-serializer-72S7P33H.cjs.map +7 -0
- package/dist/lib/node/chunk-56NGXG2A.cjs +41 -0
- package/dist/lib/node/chunk-56NGXG2A.cjs.map +7 -0
- package/dist/lib/node/{meta.cjs → chunk-AO4EW2RX.cjs} +12 -13
- package/dist/lib/node/chunk-AO4EW2RX.cjs.map +7 -0
- package/dist/lib/node/chunk-BQRNTKSQ.cjs +150 -0
- package/dist/lib/node/chunk-BQRNTKSQ.cjs.map +7 -0
- package/dist/lib/node/chunk-DDZYVNVP.cjs +345 -0
- package/dist/lib/node/chunk-DDZYVNVP.cjs.map +7 -0
- package/dist/lib/node/chunk-M64YG2FY.cjs +1669 -0
- package/dist/lib/node/chunk-M64YG2FY.cjs.map +7 -0
- package/dist/lib/node/chunk-Z34MTEU7.cjs +551 -0
- package/dist/lib/node/chunk-Z34MTEU7.cjs.map +7 -0
- package/dist/lib/node/identity-created-IMDS4A6A.cjs +44 -0
- package/dist/lib/node/identity-created-IMDS4A6A.cjs.map +7 -0
- package/dist/lib/node/index.cjs +175 -3506
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/intent-resolver-S4HZABYI.cjs +458 -0
- package/dist/lib/node/intent-resolver-S4HZABYI.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/react-root-RB3OM3QG.cjs +50 -0
- package/dist/lib/node/react-root-RB3OM3QG.cjs.map +7 -0
- package/dist/lib/node/react-surface-TLKQEHHT.cjs +233 -0
- package/dist/lib/node/react-surface-TLKQEHHT.cjs.map +7 -0
- package/dist/lib/node/settings-QLCKAUHK.cjs +38 -0
- package/dist/lib/node/settings-QLCKAUHK.cjs.map +7 -0
- package/dist/lib/node/spaces-ready-RZTKEXOL.cjs +211 -0
- package/dist/lib/node/spaces-ready-RZTKEXOL.cjs.map +7 -0
- package/dist/lib/node/state-4UIOUKLJ.cjs +61 -0
- package/dist/lib/node/state-4UIOUKLJ.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-CD6IYPSS.mjs +366 -0
- package/dist/lib/node-esm/app-graph-builder-CD6IYPSS.mjs.map +7 -0
- package/dist/lib/node-esm/app-graph-serializer-CFXS6ZE2.mjs +81 -0
- package/dist/lib/node-esm/app-graph-serializer-CFXS6ZE2.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-375RB3CZ.mjs +22 -0
- package/dist/lib/node-esm/chunk-375RB3CZ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-7FUVU45N.mjs +14 -0
- package/dist/lib/node-esm/chunk-7FUVU45N.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-CLGCKZ2D.mjs +317 -0
- package/dist/lib/node-esm/chunk-CLGCKZ2D.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-CMKML5IN.mjs +1673 -0
- package/dist/lib/node-esm/chunk-CMKML5IN.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-FUMGYUD3.mjs +524 -0
- package/dist/lib/node-esm/chunk-FUMGYUD3.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-M4XTHK35.mjs +134 -0
- package/dist/lib/node-esm/chunk-M4XTHK35.mjs.map +7 -0
- package/dist/lib/node-esm/identity-created-SJYZZ7Q3.mjs +29 -0
- package/dist/lib/node-esm/identity-created-SJYZZ7Q3.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +192 -3521
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/intent-resolver-OIQH7HN7.mjs +460 -0
- package/dist/lib/node-esm/intent-resolver-OIQH7HN7.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/react-root-WKJWCHXR.mjs +29 -0
- package/dist/lib/node-esm/react-root-WKJWCHXR.mjs.map +7 -0
- package/dist/lib/node-esm/react-surface-RVEHOSAD.mjs +239 -0
- package/dist/lib/node-esm/react-surface-RVEHOSAD.mjs.map +7 -0
- package/dist/lib/node-esm/settings-WLVEO4JM.mjs +25 -0
- package/dist/lib/node-esm/settings-WLVEO4JM.mjs.map +7 -0
- package/dist/lib/node-esm/spaces-ready-ITGYYT5A.mjs +201 -0
- package/dist/lib/node-esm/spaces-ready-ITGYYT5A.mjs.map +7 -0
- package/dist/lib/node-esm/state-BMISGQ2O.mjs +48 -0
- package/dist/lib/node-esm/state-BMISGQ2O.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +14 -5
- package/dist/types/src/SpacePlugin.d.ts +1 -24
- 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 +15 -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 +195 -0
- package/dist/types/src/capabilities/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/intent-resolver.d.ts +8 -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 +5 -6
- 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/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 +1 -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 +38 -46
- package/src/SpacePlugin.tsx +119 -1541
- package/src/capabilities/app-graph-builder.ts +392 -0
- package/src/capabilities/app-graph-serializer.ts +73 -0
- package/src/capabilities/capabilities.ts +23 -0
- package/src/capabilities/identity-created.ts +26 -0
- package/src/capabilities/index.ts +17 -0
- package/src/capabilities/intent-resolver.ts +420 -0
- package/src/capabilities/react-root.tsx +20 -0
- package/src/capabilities/react-surface.tsx +234 -0
- package/src/capabilities/settings.ts +17 -0
- package/src/capabilities/spaces-ready.ts +231 -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 +36 -25
- package/src/components/CreateDialog/CreateObjectPanel.tsx +61 -24
- package/src/components/CreateDialog/CreateSpaceDialog.tsx +10 -14
- package/src/components/JoinDialog.tsx +18 -34
- 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 +2 -13
- package/src/components/SpacePresence.stories.tsx +25 -17
- package/src/components/SpacePresence.tsx +42 -21
- package/src/components/SpaceSettings/SpaceSettingsDialog.stories.tsx +2 -3
- package/src/components/SpaceSettings/SpaceSettingsDialog.tsx +3 -1
- package/src/components/SpaceSettings/SpaceSettingsPanel.stories.tsx +7 -5
- package/src/components/SpaceSettings/SpaceSettingsPanel.tsx +6 -5
- package/src/components/SyncStatus/InlineSyncStatus.tsx +37 -27
- 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 +1 -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 +77 -64
- 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
|
+
activeParts: ActiveParts,
|
|
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
|
+
activeParts: ActiveParts,
|
|
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, NavigationAction } 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,10 +248,10 @@ 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 }],
|
|
@@ -259,13 +261,13 @@ export const constructSpaceActions = ({
|
|
|
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 }],
|
|
@@ -278,14 +280,14 @@ export const constructSpaceActions = ({
|
|
|
278
280
|
},
|
|
279
281
|
},
|
|
280
282
|
{
|
|
281
|
-
id: locked ? getId(SpaceAction.
|
|
283
|
+
id: locked ? getId(SpaceAction.Unlock._tag) : getId(SpaceAction.Lock._tag),
|
|
282
284
|
type: ACTION_TYPE,
|
|
283
285
|
data: async () => {
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
}
|
|
286
|
+
if (locked) {
|
|
287
|
+
await dispatch(createIntent(SpaceAction.Unlock, { space }));
|
|
288
|
+
} else {
|
|
289
|
+
await dispatch(createIntent(SpaceAction.Lock, { space }));
|
|
290
|
+
}
|
|
289
291
|
},
|
|
290
292
|
properties: {
|
|
291
293
|
label: [locked ? 'unlock space label' : 'lock space label', { ns: SPACE_PLUGIN }],
|
|
@@ -293,10 +295,10 @@ export const constructSpaceActions = ({
|
|
|
293
295
|
},
|
|
294
296
|
},
|
|
295
297
|
{
|
|
296
|
-
id: getId(SpaceAction.
|
|
298
|
+
id: getId(SpaceAction.Rename._tag),
|
|
297
299
|
type: ACTION_TYPE,
|
|
298
300
|
data: async (params: InvokeParams) => {
|
|
299
|
-
await dispatch(
|
|
301
|
+
await dispatch(createIntent(SpaceAction.Rename, { space, caller: params.caller }));
|
|
300
302
|
},
|
|
301
303
|
properties: {
|
|
302
304
|
label: ['rename space label', { ns: SPACE_PLUGIN }],
|
|
@@ -308,10 +310,10 @@ export const constructSpaceActions = ({
|
|
|
308
310
|
},
|
|
309
311
|
},
|
|
310
312
|
{
|
|
311
|
-
id: getId(SpaceAction.
|
|
313
|
+
id: getId(SpaceAction.OpenSettings._tag),
|
|
312
314
|
type: ACTION_TYPE,
|
|
313
315
|
data: async () => {
|
|
314
|
-
await dispatch(
|
|
316
|
+
await dispatch(createIntent(SpaceAction.OpenSettings, { space }));
|
|
315
317
|
},
|
|
316
318
|
properties: {
|
|
317
319
|
label: ['open space settings label', { ns: SPACE_PLUGIN }],
|
|
@@ -324,10 +326,10 @@ export const constructSpaceActions = ({
|
|
|
324
326
|
// TODO(wittjosiah): Consider moving close space into the space settings dialog.
|
|
325
327
|
if (state !== SpaceState.SPACE_INACTIVE && !hasPendingMigration) {
|
|
326
328
|
actions.push({
|
|
327
|
-
id: getId(SpaceAction.
|
|
329
|
+
id: getId(SpaceAction.Close._tag),
|
|
328
330
|
type: ACTION_TYPE,
|
|
329
331
|
data: async () => {
|
|
330
|
-
await dispatch(
|
|
332
|
+
await dispatch(createIntent(SpaceAction.Close, { space }));
|
|
331
333
|
},
|
|
332
334
|
properties: {
|
|
333
335
|
label: ['close space label', { ns: SPACE_PLUGIN }],
|
|
@@ -339,10 +341,10 @@ export const constructSpaceActions = ({
|
|
|
339
341
|
|
|
340
342
|
if (state === SpaceState.SPACE_INACTIVE) {
|
|
341
343
|
actions.push({
|
|
342
|
-
id: getId(SpaceAction.
|
|
344
|
+
id: getId(SpaceAction.Open._tag),
|
|
343
345
|
type: ACTION_TYPE,
|
|
344
346
|
data: async () => {
|
|
345
|
-
await dispatch(
|
|
347
|
+
await dispatch(createIntent(SpaceAction.Open, { space }));
|
|
346
348
|
},
|
|
347
349
|
properties: {
|
|
348
350
|
label: ['open space label', { ns: SPACE_PLUGIN }],
|
|
@@ -364,7 +366,7 @@ export const createObjectNode = ({
|
|
|
364
366
|
object: ReactiveEchoObject<any>;
|
|
365
367
|
space: Space;
|
|
366
368
|
navigable?: boolean;
|
|
367
|
-
resolve:
|
|
369
|
+
resolve: (typename: string) => Record<string, any>;
|
|
368
370
|
}) => {
|
|
369
371
|
const type = getTypename(object);
|
|
370
372
|
if (!type) {
|
|
@@ -402,9 +404,11 @@ export const createObjectNode = ({
|
|
|
402
404
|
export const constructObjectActions = ({
|
|
403
405
|
node,
|
|
404
406
|
dispatch,
|
|
407
|
+
navigable = false,
|
|
405
408
|
}: {
|
|
406
409
|
node: Node<ReactiveEchoObject<any>>;
|
|
407
|
-
dispatch:
|
|
410
|
+
dispatch: PromiseIntentDispatcher;
|
|
411
|
+
navigable?: boolean;
|
|
408
412
|
}) => {
|
|
409
413
|
const object = node.data;
|
|
410
414
|
const getId = (id: string) => `${id}/${fullyQualifiedId(object)}`;
|
|
@@ -412,14 +416,10 @@ export const constructObjectActions = ({
|
|
|
412
416
|
...(object instanceof CollectionType
|
|
413
417
|
? [
|
|
414
418
|
{
|
|
415
|
-
id: getId(SpaceAction.
|
|
419
|
+
id: getId(SpaceAction.OpenCreateObject._tag),
|
|
416
420
|
type: ACTION_TYPE,
|
|
417
421
|
data: async () => {
|
|
418
|
-
await dispatch({
|
|
419
|
-
plugin: SPACE_PLUGIN,
|
|
420
|
-
action: SpaceAction.OPEN_CREATE_OBJECT,
|
|
421
|
-
data: { target: object },
|
|
422
|
-
});
|
|
422
|
+
await dispatch(createIntent(SpaceAction.OpenCreateObject, { target: object }));
|
|
423
423
|
},
|
|
424
424
|
properties: {
|
|
425
425
|
label: ['create object in collection label', { ns: SPACE_PLUGIN }],
|
|
@@ -431,13 +431,10 @@ export const constructObjectActions = ({
|
|
|
431
431
|
]
|
|
432
432
|
: []),
|
|
433
433
|
{
|
|
434
|
-
id: getId(SpaceAction.
|
|
434
|
+
id: getId(SpaceAction.RenameObject._tag),
|
|
435
435
|
type: ACTION_TYPE,
|
|
436
436
|
data: async (params: InvokeParams) => {
|
|
437
|
-
await dispatch({
|
|
438
|
-
action: SpaceAction.RENAME_OBJECT,
|
|
439
|
-
data: { object, ...params },
|
|
440
|
-
});
|
|
437
|
+
await dispatch(createIntent(SpaceAction.RenameObject, { object, caller: params.caller }));
|
|
441
438
|
},
|
|
442
439
|
properties: {
|
|
443
440
|
label: [
|
|
@@ -451,19 +448,14 @@ export const constructObjectActions = ({
|
|
|
451
448
|
},
|
|
452
449
|
},
|
|
453
450
|
{
|
|
454
|
-
id: getId(SpaceAction.
|
|
451
|
+
id: getId(SpaceAction.RemoveObjects._tag),
|
|
455
452
|
type: ACTION_TYPE,
|
|
456
453
|
data: async () => {
|
|
457
454
|
const graph = getGraph(node);
|
|
458
455
|
const collection = graph
|
|
459
456
|
.nodes(node, { relation: 'inbound' })
|
|
460
457
|
.find(({ data }) => data instanceof CollectionType)?.data;
|
|
461
|
-
await dispatch([
|
|
462
|
-
{
|
|
463
|
-
action: SpaceAction.REMOVE_OBJECTS,
|
|
464
|
-
data: { objects: [object], collection },
|
|
465
|
-
},
|
|
466
|
-
]);
|
|
458
|
+
await dispatch(createIntent(SpaceAction.RemoveObjects, { objects: [object], target: collection }));
|
|
467
459
|
},
|
|
468
460
|
properties: {
|
|
469
461
|
label: [
|
|
@@ -475,17 +467,34 @@ export const constructObjectActions = ({
|
|
|
475
467
|
testId: 'spacePlugin.deleteObject',
|
|
476
468
|
},
|
|
477
469
|
},
|
|
470
|
+
...(navigable || !(object instanceof CollectionType)
|
|
471
|
+
? [
|
|
472
|
+
{
|
|
473
|
+
id: getId('copy-link'),
|
|
474
|
+
type: ACTION_TYPE,
|
|
475
|
+
data: async () => {
|
|
476
|
+
const url = `${window.location.origin}/${fullyQualifiedId(object)}`;
|
|
477
|
+
await navigator.clipboard.writeText(url);
|
|
478
|
+
},
|
|
479
|
+
properties: {
|
|
480
|
+
label: ['copy link label', { ns: SPACE_PLUGIN }],
|
|
481
|
+
icon: 'ph--link--regular',
|
|
482
|
+
testId: 'spacePlugin.copyLink',
|
|
483
|
+
},
|
|
484
|
+
},
|
|
485
|
+
]
|
|
486
|
+
: []),
|
|
487
|
+
// TODO(wittjosiah): Factor out and apply to all nodes.
|
|
478
488
|
{
|
|
479
|
-
id:
|
|
489
|
+
id: NavigationAction.Expose._tag,
|
|
480
490
|
type: ACTION_TYPE,
|
|
481
491
|
data: async () => {
|
|
482
|
-
|
|
483
|
-
await navigator.clipboard.writeText(url);
|
|
492
|
+
await dispatch(createIntent(NavigationAction.Expose, { id: fullyQualifiedId(object) }));
|
|
484
493
|
},
|
|
485
494
|
properties: {
|
|
486
|
-
label: ['
|
|
487
|
-
icon: 'ph--
|
|
488
|
-
testId: 'spacePlugin.
|
|
495
|
+
label: ['expose object label', { ns: SPACE_PLUGIN }],
|
|
496
|
+
icon: 'ph--eye--regular',
|
|
497
|
+
testId: 'spacePlugin.exposeObject',
|
|
489
498
|
},
|
|
490
499
|
},
|
|
491
500
|
];
|
|
@@ -514,7 +523,7 @@ export const getActiveSpace = (graph: Graph, active?: string) => {
|
|
|
514
523
|
*/
|
|
515
524
|
export const getNestedObjects = async (
|
|
516
525
|
object: ReactiveEchoObject<any>,
|
|
517
|
-
resolve:
|
|
526
|
+
resolve: (typename: string) => Record<string, any>,
|
|
518
527
|
): Promise<ReactiveEchoObject<any>[]> => {
|
|
519
528
|
const type = getTypename(object);
|
|
520
529
|
if (!type) {
|
|
@@ -522,7 +531,7 @@ export const getNestedObjects = async (
|
|
|
522
531
|
}
|
|
523
532
|
|
|
524
533
|
const metadata = resolve(type);
|
|
525
|
-
const loadReferences = metadata
|
|
534
|
+
const loadReferences = metadata?.loadReferences;
|
|
526
535
|
if (typeof loadReferences !== 'function') {
|
|
527
536
|
return [];
|
|
528
537
|
}
|
|
@@ -536,7 +545,11 @@ export const getNestedObjects = async (
|
|
|
536
545
|
* @deprecated Workaround for ECHO not supporting clone.
|
|
537
546
|
*/
|
|
538
547
|
// TODO(burdon): Remove.
|
|
539
|
-
export const cloneObject = async (
|
|
548
|
+
export const cloneObject = async (
|
|
549
|
+
object: Expando,
|
|
550
|
+
resolve: (typename: string) => Record<string, any>,
|
|
551
|
+
newSpace: Space,
|
|
552
|
+
): Promise<Expando> => {
|
|
540
553
|
const schema = getSchema(object);
|
|
541
554
|
const typename = schema ? getObjectAnnotation(schema)?.typename ?? EXPANDO_TYPENAME : EXPANDO_TYPENAME;
|
|
542
555
|
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
|
-
}
|