@dxos/plugin-space 0.8.4-main.72ec0f3 → 0.8.4-main.7ace549
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/{ObjectDetailsPanel-2BRUBHP6.mjs → ObjectDetailsPanel-ACGHWPDX.mjs} +2 -2
- package/dist/lib/browser/{ObjectDetailsPanel-2BRUBHP6.mjs.map → ObjectDetailsPanel-ACGHWPDX.mjs.map} +3 -3
- package/dist/lib/browser/{ObjectSettings-5LLWCVEK.mjs → ObjectSettings-U3IH7BMV.mjs} +2 -2
- package/dist/lib/browser/{ObjectSettings-5LLWCVEK.mjs.map → ObjectSettings-U3IH7BMV.mjs.map} +3 -3
- package/dist/lib/browser/{RecordArticle-SXDRWTTU.mjs → RecordArticle-2PFEBPXY.mjs} +1 -1
- package/dist/lib/browser/RecordArticle-2PFEBPXY.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-builder-VQAB3GCQ.mjs → app-graph-builder-HABMCWAI.mjs} +140 -151
- package/dist/lib/browser/app-graph-builder-HABMCWAI.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-KSLKMEPP.mjs → app-graph-serializer-G3VFEGTN.mjs} +4 -4
- package/dist/lib/browser/chunk-6A3NWBB6.mjs +392 -0
- package/dist/lib/browser/chunk-6A3NWBB6.mjs.map +7 -0
- package/dist/lib/browser/{chunk-K5J7ZB5P.mjs → chunk-C6DAPIFF.mjs} +3 -3
- package/dist/lib/browser/chunk-C6DAPIFF.mjs.map +7 -0
- package/dist/lib/browser/{chunk-ERQMHU7L.mjs → chunk-GJOZILGC.mjs} +163 -105
- package/dist/lib/browser/chunk-GJOZILGC.mjs.map +7 -0
- package/dist/lib/browser/{chunk-J2BUK5E6.mjs → chunk-KCZ527AM.mjs} +169 -101
- package/dist/lib/browser/chunk-KCZ527AM.mjs.map +7 -0
- package/dist/lib/browser/{chunk-PU5IOFMG.mjs → chunk-P25R3AOK.mjs} +4 -47
- package/dist/lib/browser/{chunk-PU5IOFMG.mjs.map → chunk-P25R3AOK.mjs.map} +4 -4
- package/dist/lib/browser/{chunk-OLBBSOVI.mjs → chunk-POFUXISV.mjs} +53 -59
- package/dist/lib/browser/chunk-POFUXISV.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +47 -94
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-Q2XWHAVA.mjs → intent-resolver-RZEWNJ2K.mjs} +51 -40
- package/dist/lib/browser/intent-resolver-RZEWNJ2K.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-root-MM4HADPE.mjs → react-root-JCRD74GI.mjs} +6 -6
- package/dist/lib/browser/{react-surface-SGZC3Y4U.mjs → react-surface-VOETEAG3.mjs} +28 -14
- package/dist/lib/browser/react-surface-VOETEAG3.mjs.map +7 -0
- package/dist/lib/browser/repair-CNLE35NF.mjs +44 -0
- package/dist/lib/browser/repair-CNLE35NF.mjs.map +7 -0
- package/dist/lib/browser/{settings-WKLGKUHQ.mjs → settings-TRLI52I5.mjs} +2 -2
- package/dist/lib/browser/{spaces-ready-C5QC2UFL.mjs → spaces-ready-OHGCWZHQ.mjs} +13 -7
- package/dist/lib/browser/{spaces-ready-C5QC2UFL.mjs.map → spaces-ready-OHGCWZHQ.mjs.map} +2 -2
- package/dist/lib/browser/{state-Q7YRE5KG.mjs → state-C7N6EDDZ.mjs} +2 -2
- package/dist/lib/browser/types/index.mjs +9 -3
- package/dist/lib/node-esm/{ObjectDetailsPanel-6PZQIQG3.mjs → ObjectDetailsPanel-6OFTT3GG.mjs} +2 -2
- package/dist/lib/node-esm/{ObjectDetailsPanel-6PZQIQG3.mjs.map → ObjectDetailsPanel-6OFTT3GG.mjs.map} +3 -3
- package/dist/lib/node-esm/{ObjectSettings-OQSBOH7K.mjs → ObjectSettings-YXPJQMJ5.mjs} +2 -2
- package/dist/lib/node-esm/{ObjectSettings-OQSBOH7K.mjs.map → ObjectSettings-YXPJQMJ5.mjs.map} +3 -3
- package/dist/lib/node-esm/{RecordArticle-NACBH42P.mjs → RecordArticle-SSJ7PULS.mjs} +1 -1
- package/dist/lib/node-esm/RecordArticle-SSJ7PULS.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-24JCLJPX.mjs → app-graph-builder-T6VJKIOA.mjs} +140 -151
- package/dist/lib/node-esm/app-graph-builder-T6VJKIOA.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-R723K764.mjs → app-graph-serializer-2NLWWFUB.mjs} +4 -4
- package/dist/lib/node-esm/{chunk-TJPQDQNI.mjs → chunk-7EV4SN47.mjs} +4 -47
- package/dist/lib/node-esm/{chunk-TJPQDQNI.mjs.map → chunk-7EV4SN47.mjs.map} +4 -4
- package/dist/lib/node-esm/{chunk-WC4VBFMA.mjs → chunk-AX3UGL5D.mjs} +53 -59
- package/dist/lib/node-esm/chunk-AX3UGL5D.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-VH2EBZEV.mjs → chunk-I6FZP42D.mjs} +163 -105
- package/dist/lib/node-esm/chunk-I6FZP42D.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-ITQFSFQ3.mjs → chunk-JAMGJUFU.mjs} +169 -101
- package/dist/lib/node-esm/chunk-JAMGJUFU.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-Z7BB6HC2.mjs → chunk-WWGV5FJM.mjs} +3 -3
- package/dist/lib/node-esm/chunk-WWGV5FJM.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-X34VDVMY.mjs +393 -0
- package/dist/lib/node-esm/chunk-X34VDVMY.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +47 -94
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-YK4ESSET.mjs → intent-resolver-4PHJWDXW.mjs} +51 -40
- package/dist/lib/node-esm/intent-resolver-4PHJWDXW.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-5ANDLQMX.mjs → react-root-O5I5CDJ7.mjs} +6 -6
- package/dist/lib/node-esm/{react-surface-V7J2QB44.mjs → react-surface-J3XDMU2D.mjs} +28 -14
- package/dist/lib/node-esm/react-surface-J3XDMU2D.mjs.map +7 -0
- package/dist/lib/node-esm/repair-EHZS6MFY.mjs +45 -0
- package/dist/lib/node-esm/repair-EHZS6MFY.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-RBB5633M.mjs → settings-MNQTKHL7.mjs} +2 -2
- package/dist/lib/node-esm/{spaces-ready-SJCXV6YH.mjs → spaces-ready-ZPU24DA2.mjs} +13 -7
- package/dist/lib/node-esm/{spaces-ready-SJCXV6YH.mjs.map → spaces-ready-ZPU24DA2.mjs.map} +2 -2
- package/dist/lib/node-esm/{state-362I5BMK.mjs → state-45TXZQJ6.mjs} +2 -2
- package/dist/lib/node-esm/types/index.mjs +9 -3
- 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 +9 -4
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +1 -1
- package/dist/types/src/capabilities/index.d.ts.map +1 -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/repair.d.ts +4 -0
- package/dist/types/src/capabilities/repair.d.ts.map +1 -0
- package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +147 -253
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +14 -7
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
- package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts +147 -253
- package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +147 -253
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -1
- package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +3 -3
- package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
- package/dist/types/src/components/RecordArticle.stories.d.ts +147 -253
- package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -1
- package/dist/types/src/components/SchemaContainer.d.ts +1 -1
- package/dist/types/src/components/SchemaContainer.d.ts.map +1 -1
- package/dist/types/src/components/SpacePresence/SpacePresence.d.ts +2 -2
- package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -1
- package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts +147 -253
- package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +147 -253
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +147 -253
- package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
- package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +2 -2
- package/dist/types/src/helpers/query.d.ts +1 -1
- package/dist/types/src/helpers/query.d.ts.map +1 -1
- package/dist/types/src/hooks/useTypeOptions.d.ts +2 -2
- package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +147 -253
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/form.d.ts +24 -0
- package/dist/types/src/types/form.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +1 -0
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +29 -72
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +16 -32
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +54 -50
- package/src/SpacePlugin.ts +34 -84
- package/src/capabilities/app-graph-builder.ts +130 -227
- package/src/capabilities/capabilities.ts +10 -5
- package/src/capabilities/index.ts +1 -1
- package/src/capabilities/intent-resolver.ts +31 -35
- package/src/capabilities/react-surface.tsx +34 -8
- package/src/capabilities/repair.ts +57 -0
- package/src/capabilities/spaces-ready.ts +7 -1
- package/src/components/CreateDialog/CreateObjectDialog.tsx +33 -23
- package/src/components/CreateDialog/CreateObjectPanel.tsx +32 -25
- package/src/components/ObjectDetailsPanel/ObjectForm.tsx +1 -1
- package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +4 -5
- package/src/components/ObjectSettings/BaseObjectSettings.tsx +1 -1
- package/src/components/ObjectSettings/ForeignKeys.tsx +5 -5
- package/src/components/RecordArticle.tsx +6 -6
- package/src/components/SchemaContainer.tsx +2 -2
- package/src/components/SpacePresence/SpacePresence.tsx +2 -2
- package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +25 -6
- package/src/components/ViewEditor.tsx +9 -3
- package/src/helpers/query.ts +1 -1
- package/src/hooks/useTypeOptions.ts +3 -35
- package/src/translations.ts +52 -57
- package/src/types/form.ts +75 -0
- package/src/types/index.ts +1 -0
- package/src/types/types.ts +26 -36
- package/src/util.tsx +165 -107
- package/dist/lib/browser/RecordArticle-SXDRWTTU.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-VQAB3GCQ.mjs.map +0 -7
- package/dist/lib/browser/chunk-ERQMHU7L.mjs.map +0 -7
- package/dist/lib/browser/chunk-J2BUK5E6.mjs.map +0 -7
- package/dist/lib/browser/chunk-K5J7ZB5P.mjs.map +0 -7
- package/dist/lib/browser/chunk-M2Z6D4ZI.mjs +0 -349
- package/dist/lib/browser/chunk-M2Z6D4ZI.mjs.map +0 -7
- package/dist/lib/browser/chunk-OLBBSOVI.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-Q2XWHAVA.mjs.map +0 -7
- package/dist/lib/browser/react-surface-SGZC3Y4U.mjs.map +0 -7
- package/dist/lib/browser/schema-defs-QPI2JU3X.mjs +0 -26
- package/dist/lib/browser/schema-defs-QPI2JU3X.mjs.map +0 -7
- package/dist/lib/node-esm/RecordArticle-NACBH42P.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-24JCLJPX.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2PN7QNGV.mjs +0 -350
- package/dist/lib/node-esm/chunk-2PN7QNGV.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ITQFSFQ3.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-VH2EBZEV.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-WC4VBFMA.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-Z7BB6HC2.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-YK4ESSET.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-V7J2QB44.mjs.map +0 -7
- package/dist/lib/node-esm/schema-defs-ZS2D47XW.mjs +0 -27
- package/dist/lib/node-esm/schema-defs-ZS2D47XW.mjs.map +0 -7
- package/dist/types/src/capabilities/schema-defs.d.ts +0 -4
- package/dist/types/src/capabilities/schema-defs.d.ts.map +0 -1
- package/src/capabilities/schema-defs.ts +0 -31
- /package/dist/lib/browser/{app-graph-serializer-KSLKMEPP.mjs.map → app-graph-serializer-G3VFEGTN.mjs.map} +0 -0
- /package/dist/lib/browser/{react-root-MM4HADPE.mjs.map → react-root-JCRD74GI.mjs.map} +0 -0
- /package/dist/lib/browser/{settings-WKLGKUHQ.mjs.map → settings-TRLI52I5.mjs.map} +0 -0
- /package/dist/lib/browser/{state-Q7YRE5KG.mjs.map → state-C7N6EDDZ.mjs.map} +0 -0
- /package/dist/lib/node-esm/{app-graph-serializer-R723K764.mjs.map → app-graph-serializer-2NLWWFUB.mjs.map} +0 -0
- /package/dist/lib/node-esm/{react-root-5ANDLQMX.mjs.map → react-root-O5I5CDJ7.mjs.map} +0 -0
- /package/dist/lib/node-esm/{settings-RBB5633M.mjs.map → settings-MNQTKHL7.mjs.map} +0 -0
- /package/dist/lib/node-esm/{state-362I5BMK.mjs.map → state-45TXZQJ6.mjs.map} +0 -0
package/src/util.tsx
CHANGED
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import { type Instruction } from '@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item';
|
|
5
6
|
import { Atom } from '@effect-atom/atom-react';
|
|
6
7
|
import * as Function from 'effect/Function';
|
|
8
|
+
import type * as Schema from 'effect/Schema';
|
|
7
9
|
|
|
8
10
|
import { LayoutAction, type PromiseIntentDispatcher, chain, createIntent } from '@dxos/app-framework';
|
|
9
|
-
import { Obj, Ref, Type } from '@dxos/echo';
|
|
10
|
-
import {
|
|
11
|
+
import { type Database, type Entity, Filter, Obj, Query, Ref, Type } from '@dxos/echo';
|
|
12
|
+
import { EXPANDO_TYPENAME } from '@dxos/echo/internal';
|
|
11
13
|
import { invariant } from '@dxos/invariant';
|
|
12
14
|
import { Migrations } from '@dxos/migrations';
|
|
13
15
|
import {
|
|
@@ -20,13 +22,13 @@ import {
|
|
|
20
22
|
type ReadableGraph,
|
|
21
23
|
isGraphNode,
|
|
22
24
|
} from '@dxos/plugin-graph';
|
|
23
|
-
import { type
|
|
25
|
+
import { type Space, SpaceState, getSpace, isSpace } from '@dxos/react-client/echo';
|
|
24
26
|
import { ATTENDABLE_PATH_SEPARATOR } from '@dxos/react-ui-attention';
|
|
25
27
|
import { type TreeData } from '@dxos/react-ui-list';
|
|
26
|
-
import { Collection
|
|
28
|
+
import { Collection } from '@dxos/schema';
|
|
27
29
|
|
|
28
30
|
import { meta } from './meta';
|
|
29
|
-
import {
|
|
31
|
+
import { SPACE_TYPE, SpaceAction } from './types';
|
|
30
32
|
|
|
31
33
|
export const SPACES = `${meta.id}-spaces`;
|
|
32
34
|
export const COMPOSER_SPACE_LOCK = `${meta.id}/lock`;
|
|
@@ -36,7 +38,7 @@ export const SHARED = 'shared-spaces';
|
|
|
36
38
|
/**
|
|
37
39
|
* Convert a query result to an Atom value of the objects.
|
|
38
40
|
*/
|
|
39
|
-
export const atomFromQuery = <T extends
|
|
41
|
+
export const atomFromQuery = <T extends Entity.Unknown>(query: Database.QueryResult<T>): Atom.Atom<T[]> => {
|
|
40
42
|
return Atom.make((get) => {
|
|
41
43
|
const unsubscribe = query.subscribe((result) => {
|
|
42
44
|
get.setSelf(result.objects);
|
|
@@ -53,7 +55,7 @@ export const getSpaceDisplayName = (
|
|
|
53
55
|
{ personal, namesCache = {} }: { personal?: boolean; namesCache?: Record<string, string> } = {},
|
|
54
56
|
): string | [string, { ns: string }] => {
|
|
55
57
|
return space.state.get() === SpaceState.SPACE_READY && (space.properties.name?.length ?? 0) > 0
|
|
56
|
-
? space.properties.name
|
|
58
|
+
? space.properties.name!
|
|
57
59
|
: namesCache[space.id]
|
|
58
60
|
? namesCache[space.id]
|
|
59
61
|
: personal
|
|
@@ -136,34 +138,23 @@ const getCollectionGraphNodePartials = ({
|
|
|
136
138
|
};
|
|
137
139
|
};
|
|
138
140
|
|
|
139
|
-
const
|
|
141
|
+
const getSystemCollectionNodePartials = ({
|
|
140
142
|
collection,
|
|
141
143
|
space,
|
|
142
144
|
resolve,
|
|
143
145
|
}: {
|
|
144
|
-
collection: Collection.
|
|
146
|
+
collection: Collection.Managed;
|
|
145
147
|
space: Space;
|
|
146
148
|
resolve: (typename: string) => Record<string, any>;
|
|
147
149
|
}) => {
|
|
148
|
-
const
|
|
149
|
-
const metadata = typename ? resolve(typename) : {};
|
|
150
|
+
const metadata = resolve(collection.key);
|
|
150
151
|
return {
|
|
152
|
+
label: ['typename label', { ns: collection.key, count: 2 }],
|
|
151
153
|
icon: metadata.icon,
|
|
152
154
|
iconHue: metadata.iconHue,
|
|
153
155
|
acceptPersistenceClass: new Set(['echo']),
|
|
154
156
|
acceptPersistenceKey: new Set([space.id]),
|
|
155
157
|
role: 'branch',
|
|
156
|
-
canDrop: (source: TreeData) => {
|
|
157
|
-
return (
|
|
158
|
-
isGraphNode(source.item) && Obj.isObject(source.item.data) && Obj.getTypename(source.item.data) === typename
|
|
159
|
-
);
|
|
160
|
-
},
|
|
161
|
-
onTransferStart: (child: Node<Obj.Any>, index?: number) => {
|
|
162
|
-
// No-op. Objects are moved into query collections by being removed from their original collection.
|
|
163
|
-
},
|
|
164
|
-
onTransferEnd: (child: Node<Obj.Any>, destination: Node) => {
|
|
165
|
-
// No-op. Objects are moved out of query collections by being added to another collection.
|
|
166
|
-
},
|
|
167
158
|
};
|
|
168
159
|
};
|
|
169
160
|
|
|
@@ -174,25 +165,6 @@ const getSchemaGraphNodePartials = () => {
|
|
|
174
165
|
};
|
|
175
166
|
};
|
|
176
167
|
|
|
177
|
-
const getViewGraphNodePartials = ({
|
|
178
|
-
view,
|
|
179
|
-
resolve,
|
|
180
|
-
}: {
|
|
181
|
-
view: View.View;
|
|
182
|
-
resolve: (typename: string) => Record<string, any>;
|
|
183
|
-
}) => {
|
|
184
|
-
const presentation = view.presentation.target;
|
|
185
|
-
const typename = presentation ? Obj.getTypename(presentation) : undefined;
|
|
186
|
-
const metadata = typename ? resolve(typename) : {};
|
|
187
|
-
|
|
188
|
-
return {
|
|
189
|
-
label: view.name || ['object name placeholder', { ns: typename, default: 'New view' }],
|
|
190
|
-
icon: metadata.icon,
|
|
191
|
-
iconHue: metadata.iconHue,
|
|
192
|
-
canDrop: () => false,
|
|
193
|
-
};
|
|
194
|
-
};
|
|
195
|
-
|
|
196
168
|
const checkPendingMigration = (space: Space) => {
|
|
197
169
|
return (
|
|
198
170
|
space.state.get() === SpaceState.SPACE_REQUIRES_MIGRATION ||
|
|
@@ -359,13 +331,19 @@ export const constructSpaceActions = ({
|
|
|
359
331
|
return actions;
|
|
360
332
|
};
|
|
361
333
|
|
|
362
|
-
export const createStaticSchemaNode = ({
|
|
334
|
+
export const createStaticSchemaNode = ({
|
|
335
|
+
schema,
|
|
336
|
+
space,
|
|
337
|
+
}: {
|
|
338
|
+
schema: Schema.Schema.AnyNoContext;
|
|
339
|
+
space: Space;
|
|
340
|
+
}): Node => {
|
|
363
341
|
return {
|
|
364
342
|
id: `${space.id}/${Type.getTypename(schema)}`,
|
|
365
343
|
type: `${meta.id}/static-schema`,
|
|
366
344
|
data: schema,
|
|
367
345
|
properties: {
|
|
368
|
-
label: ['typename label', { ns: Type.getTypename(schema), default: Type.getTypename(schema) }],
|
|
346
|
+
label: ['typename label', { ns: Type.getTypename(schema), count: 2, default: Type.getTypename(schema) }],
|
|
369
347
|
icon: 'ph--database--regular',
|
|
370
348
|
iconHue: 'green',
|
|
371
349
|
role: 'branch',
|
|
@@ -403,7 +381,7 @@ export const createStaticSchemaActions = ({
|
|
|
403
381
|
);
|
|
404
382
|
},
|
|
405
383
|
properties: {
|
|
406
|
-
label: ['add view to schema label', { ns:
|
|
384
|
+
label: ['add view to schema label', { ns: meta.id }],
|
|
407
385
|
icon: 'ph--plus--regular',
|
|
408
386
|
disposition: 'list-item-primary',
|
|
409
387
|
testId: 'spacePlugin.addViewToSchema',
|
|
@@ -416,7 +394,7 @@ export const createStaticSchemaActions = ({
|
|
|
416
394
|
throw new Error('Not implemented');
|
|
417
395
|
},
|
|
418
396
|
properties: {
|
|
419
|
-
label: ['rename object label', { ns: Type.getTypename(
|
|
397
|
+
label: ['rename object label', { ns: Type.getTypename(Type.PersistentType) }],
|
|
420
398
|
icon: 'ph--pencil-simple-line--regular',
|
|
421
399
|
disabled: true,
|
|
422
400
|
disposition: 'list-item',
|
|
@@ -435,13 +413,37 @@ export const createStaticSchemaActions = ({
|
|
|
435
413
|
}
|
|
436
414
|
},
|
|
437
415
|
properties: {
|
|
438
|
-
label: ['delete object label', { ns: Type.getTypename(
|
|
416
|
+
label: ['delete object label', { ns: Type.getTypename(Type.PersistentType) }],
|
|
439
417
|
icon: 'ph--trash--regular',
|
|
440
418
|
disposition: 'list-item',
|
|
441
419
|
disabled: !deletable,
|
|
442
420
|
testId: 'spacePlugin.deleteObject',
|
|
443
421
|
},
|
|
444
422
|
},
|
|
423
|
+
{
|
|
424
|
+
id: getId(SpaceAction.Snapshot._tag),
|
|
425
|
+
type: ACTION_TYPE,
|
|
426
|
+
data: async () => {
|
|
427
|
+
const result = await dispatch(
|
|
428
|
+
createIntent(SpaceAction.Snapshot, {
|
|
429
|
+
space,
|
|
430
|
+
query: Query.select(Filter.type(schema)).ast,
|
|
431
|
+
}),
|
|
432
|
+
);
|
|
433
|
+
if (result.data?.snapshot) {
|
|
434
|
+
await downloadBlob(
|
|
435
|
+
result.data.snapshot,
|
|
436
|
+
// TODO(wittjosiah): Factor out file name construction.
|
|
437
|
+
`${new Date().toISOString()}-${space.id}-${Type.getTypename(schema)}.json`,
|
|
438
|
+
);
|
|
439
|
+
}
|
|
440
|
+
},
|
|
441
|
+
properties: {
|
|
442
|
+
label: ['snapshot by schema label', { ns: meta.id }],
|
|
443
|
+
icon: 'ph--camera--regular',
|
|
444
|
+
disposition: 'list-item',
|
|
445
|
+
},
|
|
446
|
+
},
|
|
445
447
|
];
|
|
446
448
|
|
|
447
449
|
return actions;
|
|
@@ -453,6 +455,7 @@ export const createObjectNode = ({
|
|
|
453
455
|
disposition,
|
|
454
456
|
droppable = true,
|
|
455
457
|
navigable = false,
|
|
458
|
+
managedCollectionChild = false,
|
|
456
459
|
resolve,
|
|
457
460
|
}: {
|
|
458
461
|
space: Space;
|
|
@@ -460,6 +463,7 @@ export const createObjectNode = ({
|
|
|
460
463
|
disposition?: string;
|
|
461
464
|
droppable?: boolean;
|
|
462
465
|
navigable?: boolean;
|
|
466
|
+
managedCollectionChild?: boolean;
|
|
463
467
|
resolve: (typename: string) => Record<string, any>;
|
|
464
468
|
}) => {
|
|
465
469
|
const type = Obj.getTypename(object);
|
|
@@ -470,13 +474,11 @@ export const createObjectNode = ({
|
|
|
470
474
|
const metadata = resolve(type);
|
|
471
475
|
const partials = Obj.instanceOf(Collection.Collection, object)
|
|
472
476
|
? getCollectionGraphNodePartials({ collection: object, space, resolve })
|
|
473
|
-
: Obj.instanceOf(Collection.
|
|
474
|
-
?
|
|
475
|
-
: Obj.instanceOf(
|
|
477
|
+
: Obj.instanceOf(Collection.Managed, object)
|
|
478
|
+
? getSystemCollectionNodePartials({ collection: object, space, resolve })
|
|
479
|
+
: Obj.instanceOf(Type.PersistentType, object)
|
|
476
480
|
? getSchemaGraphNodePartials()
|
|
477
|
-
:
|
|
478
|
-
? getViewGraphNodePartials({ view: object, resolve })
|
|
479
|
-
: metadata.graphProps;
|
|
481
|
+
: metadata.graphProps;
|
|
480
482
|
|
|
481
483
|
// TODO(wittjosiah): Obj.getLabel isn't triggering reactivity in some cases.
|
|
482
484
|
// e.g., create new collection with no name and rename it.
|
|
@@ -486,8 +488,8 @@ export const createObjectNode = ({
|
|
|
486
488
|
metadata.label?.(object) || ['object name placeholder', { ns: type, default: 'New item' }];
|
|
487
489
|
|
|
488
490
|
const selectable =
|
|
489
|
-
(!Obj.instanceOf(
|
|
490
|
-
!Obj.instanceOf(Collection.
|
|
491
|
+
(!Obj.instanceOf(Type.PersistentType, object) &&
|
|
492
|
+
!Obj.instanceOf(Collection.Managed, object) &&
|
|
491
493
|
!Obj.instanceOf(Collection.Collection, object)) ||
|
|
492
494
|
(navigable && Obj.instanceOf(Collection.Collection, object));
|
|
493
495
|
|
|
@@ -505,6 +507,20 @@ export const createObjectNode = ({
|
|
|
505
507
|
persistenceClass: 'echo',
|
|
506
508
|
persistenceKey: space?.id,
|
|
507
509
|
selectable,
|
|
510
|
+
managedCollectionChild,
|
|
511
|
+
blockInstruction: (source: TreeData, instruction: Instruction) => {
|
|
512
|
+
if (source.item.properties.managedCollectionChild) {
|
|
513
|
+
// TODO(wittjosiah): Support reordering system collections.
|
|
514
|
+
// return !(managedCollectionChild && source.item.type === type && instruction.type.startsWith('reorder'));
|
|
515
|
+
return true;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
if (Obj.instanceOf(Collection.Managed, object)) {
|
|
519
|
+
return !instruction.type.startsWith('reorder');
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
return managedCollectionChild;
|
|
523
|
+
},
|
|
508
524
|
canDrop: (source: TreeData) => {
|
|
509
525
|
return droppable && isGraphNode(source.item) && Obj.isObject(source.item.data);
|
|
510
526
|
},
|
|
@@ -517,14 +533,14 @@ export const constructObjectActions = ({
|
|
|
517
533
|
object,
|
|
518
534
|
graph,
|
|
519
535
|
dispatch,
|
|
520
|
-
|
|
536
|
+
resolve,
|
|
521
537
|
deletable = true,
|
|
522
538
|
navigable = false,
|
|
523
539
|
}: {
|
|
524
540
|
object: Obj.Any;
|
|
525
541
|
graph: ReadableGraph;
|
|
526
542
|
dispatch: PromiseIntentDispatcher;
|
|
527
|
-
|
|
543
|
+
resolve: (typename: string) => Record<string, any>;
|
|
528
544
|
deletable?: boolean;
|
|
529
545
|
navigable?: boolean;
|
|
530
546
|
}) => {
|
|
@@ -535,10 +551,10 @@ export const constructObjectActions = ({
|
|
|
535
551
|
|
|
536
552
|
const getId = (id: string) => `${id}/${Obj.getDXN(object).toString()}`;
|
|
537
553
|
|
|
538
|
-
const
|
|
539
|
-
const
|
|
540
|
-
|
|
541
|
-
|
|
554
|
+
const managedCollection = Obj.instanceOf(Collection.Managed, object) ? object : undefined;
|
|
555
|
+
const metadata = managedCollection ? resolve(managedCollection.key) : {};
|
|
556
|
+
const createObjectIntent = metadata.createObjectIntent;
|
|
557
|
+
const inputSchema = metadata.inputSchema;
|
|
542
558
|
|
|
543
559
|
const actions: NodeArg<ActionData>[] = [
|
|
544
560
|
...(Obj.instanceOf(Collection.Collection, object)
|
|
@@ -558,7 +574,7 @@ export const constructObjectActions = ({
|
|
|
558
574
|
},
|
|
559
575
|
]
|
|
560
576
|
: []),
|
|
561
|
-
...(Obj.instanceOf(
|
|
577
|
+
...(Obj.instanceOf(Type.PersistentType, object)
|
|
562
578
|
? [
|
|
563
579
|
{
|
|
564
580
|
id: getId(SpaceAction.AddObject._tag),
|
|
@@ -573,31 +589,55 @@ export const constructObjectActions = ({
|
|
|
573
589
|
);
|
|
574
590
|
},
|
|
575
591
|
properties: {
|
|
576
|
-
label: ['add view to schema label', { ns:
|
|
592
|
+
label: ['add view to schema label', { ns: meta.id }],
|
|
577
593
|
icon: 'ph--plus--regular',
|
|
578
594
|
disposition: 'list-item-primary',
|
|
579
595
|
testId: 'spacePlugin.addViewToSchema',
|
|
580
596
|
},
|
|
581
597
|
},
|
|
598
|
+
{
|
|
599
|
+
id: getId(SpaceAction.Snapshot._tag),
|
|
600
|
+
type: ACTION_TYPE,
|
|
601
|
+
data: async () => {
|
|
602
|
+
const result = await dispatch(
|
|
603
|
+
createIntent(SpaceAction.Snapshot, {
|
|
604
|
+
space,
|
|
605
|
+
query: Query.select(Filter.type(Type.toEffectSchema(object.jsonSchema))).ast,
|
|
606
|
+
}),
|
|
607
|
+
);
|
|
608
|
+
if (result.data?.snapshot) {
|
|
609
|
+
await downloadBlob(
|
|
610
|
+
result.data.snapshot,
|
|
611
|
+
// TODO(wittjosiah): Factor out file name construction.
|
|
612
|
+
`${new Date().toISOString()}-${space.id}-${object.typename}.json`,
|
|
613
|
+
);
|
|
614
|
+
}
|
|
615
|
+
},
|
|
616
|
+
properties: {
|
|
617
|
+
label: ['snapshot by schema label', { ns: meta.id }],
|
|
618
|
+
icon: 'ph--camera--regular',
|
|
619
|
+
disposition: 'list-item',
|
|
620
|
+
},
|
|
621
|
+
},
|
|
582
622
|
]
|
|
583
623
|
: []),
|
|
584
|
-
...(
|
|
624
|
+
...(createObjectIntent
|
|
585
625
|
? [
|
|
586
626
|
{
|
|
587
627
|
id: getId(SpaceAction.OpenCreateObject._tag),
|
|
588
628
|
type: ACTION_TYPE,
|
|
589
629
|
data: async () => {
|
|
590
|
-
if (
|
|
630
|
+
if (inputSchema) {
|
|
591
631
|
await dispatch(
|
|
592
632
|
createIntent(SpaceAction.OpenCreateObject, {
|
|
593
633
|
target: space,
|
|
594
|
-
typename:
|
|
634
|
+
typename: managedCollection ? managedCollection.key : undefined,
|
|
595
635
|
}),
|
|
596
636
|
);
|
|
597
637
|
} else {
|
|
598
638
|
await dispatch(
|
|
599
639
|
Function.pipe(
|
|
600
|
-
|
|
640
|
+
createObjectIntent({}, { space }),
|
|
601
641
|
chain(SpaceAction.AddObject, { target: space, hidden: true }),
|
|
602
642
|
chain(LayoutAction.Open, { part: 'main' }),
|
|
603
643
|
),
|
|
@@ -605,7 +645,7 @@ export const constructObjectActions = ({
|
|
|
605
645
|
}
|
|
606
646
|
},
|
|
607
647
|
properties: {
|
|
608
|
-
label: ['create object in
|
|
648
|
+
label: ['create object in system collection label', { ns: meta.id }],
|
|
609
649
|
icon: 'ph--plus--regular',
|
|
610
650
|
disposition: 'list-item-primary',
|
|
611
651
|
testId: 'spacePlugin.createObject',
|
|
@@ -613,46 +653,50 @@ export const constructObjectActions = ({
|
|
|
613
653
|
},
|
|
614
654
|
]
|
|
615
655
|
: []),
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
656
|
+
...(managedCollection
|
|
657
|
+
? []
|
|
658
|
+
: [
|
|
659
|
+
{
|
|
660
|
+
id: getId(SpaceAction.RenameObject._tag),
|
|
661
|
+
type: ACTION_TYPE,
|
|
662
|
+
data: async (params?: InvokeParams) => {
|
|
663
|
+
await dispatch(createIntent(SpaceAction.RenameObject, { object, caller: params?.caller }));
|
|
664
|
+
},
|
|
665
|
+
properties: {
|
|
666
|
+
label: ['rename object label', { ns: typename }],
|
|
667
|
+
icon: 'ph--pencil-simple-line--regular',
|
|
668
|
+
disposition: 'list-item',
|
|
669
|
+
// TODO(wittjosiah): Not working.
|
|
670
|
+
// keyBinding: {
|
|
671
|
+
// macos: 'shift+F6',
|
|
672
|
+
// },
|
|
673
|
+
testId: 'spacePlugin.renameObject',
|
|
674
|
+
},
|
|
675
|
+
},
|
|
676
|
+
{
|
|
677
|
+
id: getId(SpaceAction.RemoveObjects._tag),
|
|
678
|
+
type: ACTION_TYPE,
|
|
679
|
+
data: async () => {
|
|
680
|
+
const collection = graph
|
|
681
|
+
.getConnections(Obj.getDXN(object).toString(), 'inbound')
|
|
682
|
+
.find(({ data }) => Obj.instanceOf(Collection.Collection, data))?.data;
|
|
683
|
+
await dispatch(createIntent(SpaceAction.RemoveObjects, { objects: [object], target: collection }));
|
|
684
|
+
},
|
|
685
|
+
properties: {
|
|
686
|
+
label: ['delete object label', { ns: typename }],
|
|
687
|
+
icon: 'ph--trash--regular',
|
|
688
|
+
disposition: 'list-item',
|
|
689
|
+
disabled: !deletable,
|
|
690
|
+
// TODO(wittjosiah): This is a browser shortcut.
|
|
691
|
+
// keyBinding: object instanceof CollectionType ? undefined : 'shift+meta+Backspace',
|
|
692
|
+
testId: 'spacePlugin.deleteObject',
|
|
693
|
+
},
|
|
694
|
+
},
|
|
695
|
+
]),
|
|
652
696
|
...(navigable ||
|
|
653
697
|
(!Obj.instanceOf(Collection.Collection, object) &&
|
|
654
|
-
!Obj.instanceOf(Collection.
|
|
655
|
-
!Obj.instanceOf(
|
|
698
|
+
!Obj.instanceOf(Collection.Managed, object) &&
|
|
699
|
+
!Obj.instanceOf(Type.PersistentType, object))
|
|
656
700
|
? [
|
|
657
701
|
{
|
|
658
702
|
id: getId('copy-link'),
|
|
@@ -691,6 +735,20 @@ export const constructObjectActions = ({
|
|
|
691
735
|
return actions;
|
|
692
736
|
};
|
|
693
737
|
|
|
738
|
+
// TODO(wittjosiah): Factor out.
|
|
739
|
+
const downloadBlob = async (blob: Blob, filename: string) => {
|
|
740
|
+
const url = URL.createObjectURL(blob);
|
|
741
|
+
const a = document.createElement('a');
|
|
742
|
+
a.href = url;
|
|
743
|
+
a.download = filename;
|
|
744
|
+
|
|
745
|
+
document.body.appendChild(a);
|
|
746
|
+
a.click();
|
|
747
|
+
|
|
748
|
+
document.body.removeChild(a);
|
|
749
|
+
URL.revokeObjectURL(url);
|
|
750
|
+
};
|
|
751
|
+
|
|
694
752
|
/**
|
|
695
753
|
* @deprecated This is a temporary solution.
|
|
696
754
|
*/
|
|
@@ -719,10 +777,10 @@ export const getNestedObjects = async (
|
|
|
719
777
|
*/
|
|
720
778
|
// TODO(burdon): Remove.
|
|
721
779
|
export const cloneObject = async (
|
|
722
|
-
object:
|
|
780
|
+
object: Obj.Any,
|
|
723
781
|
resolve: (typename: string) => Record<string, any>,
|
|
724
782
|
newSpace: Space,
|
|
725
|
-
): Promise<
|
|
783
|
+
): Promise<Obj.Any> => {
|
|
726
784
|
const schema = Obj.getSchema(object);
|
|
727
785
|
const typename = schema ? (Type.getTypename(schema) ?? EXPANDO_TYPENAME) : EXPANDO_TYPENAME;
|
|
728
786
|
const metadata = resolve(typename);
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/RecordArticle.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Surface } from '@dxos/app-framework/react';\nimport { type SurfaceComponentProps } from '@dxos/app-framework/react';\nimport { Filter, type Obj, Ref, Relation } from '@dxos/echo';\nimport { type Space, getSpace, useQuery } from '@dxos/react-client/echo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { Masonry } from '@dxos/react-ui-masonry';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { mx } from '@dxos/react-ui-theme';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '../meta';\n\nexport const RecordArticle = ({ subject }: SurfaceComponentProps) => {\n const { t } = useTranslation(meta.id);\n const space = getSpace(subject);\n const data = useMemo(() => ({ subject }), [subject]);\n const related = useRelatedObjects(space, subject, {\n references: true,\n relations: true,\n });\n const singleColumn = related.length === 1;\n\n return (\n <StackItem.Content>\n <div role='none' className={mx('flex flex-col gap-4 p-4 is-full overflow-y-auto')}>\n <div role='none' className={mx('flex is-full card-max-width')}>\n <Surface role='section' data={data} limit={1} />\n </div>\n\n {related.length > 0 && (\n <div role='none' className={mx('flex flex-col gap-1', singleColumn ? 'card-max-width' : 'is-full')}>\n <label className='mbs-2 text-sm text-description'>{t('related objects label')}</label>\n <Masonry.Root<Obj.Any>\n items={related}\n render={Card}\n columnCount={singleColumn ? 1 : undefined}\n intrinsicHeight\n />\n </div>\n )}\n </div>\n </StackItem.Content>\n );\n};\n\nconst Card = ({ data: subject }: { data: Obj.Any }) => {\n const data = useMemo(() => ({ subject }), [subject]);\n return <Surface role='card' data={data} limit={1} />;\n};\n\n// TODO(wittjosiah): This is a hack. ECHO needs to have a back reference index to easily query for related objects.\nconst useRelatedObjects = (\n space?: Space,\n record?: Obj.Any,\n options: { references?: boolean; relations?: boolean } = {},\n) => {\n const objects = useQuery(space, Filter.everything());\n return useMemo(() => {\n if (!record) {\n return [];\n }\n\n const related: Obj.Any[] = [];\n\n // TODO(burdon): Change Person => Organization to relations.\n if (options.references) {\n const getReferences = (obj: Obj.Any): Ref.Any[] => {\n return Object.getOwnPropertyNames(obj)\n .map((name) => obj[name as keyof Obj.Any])\n .filter((value) => Ref.isRef(value)) as Ref.Any[];\n };\n\n const references = getReferences(record);\n const referenceTargets = references.map((ref) => ref.target).filter(isNonNullable);\n const referenceSources = objects.filter((obj) => {\n const refs = getReferences(obj);\n return refs.some((ref) => ref.target === record);\n });\n\n related.push(...referenceTargets, ...referenceSources);\n }\n\n if (options.relations) {\n // TODO(dmaretskyi): Workaround until https://github.com/dxos/dxos/pull/10100 lands.\n const isValidRelation = (obj: Obj.Any) => {\n try {\n return Relation.isRelation(obj) && Relation.getSource(obj) && Relation.getTarget(obj);\n } catch {\n return false;\n }\n };\n\n const relations = objects.filter((obj) => Relation.isRelation(obj)).filter((obj) => isValidRelation(obj));\n const targetObjects = relations\n .filter((relation) => Relation.getTarget(relation) === record)\n .map((relation) => Relation.getSource(relation));\n const sourceObjects = relations\n .filter((relation) => Relation.getSource(relation) === record)\n .map((relation) => Relation.getTarget(relation));\n\n related.push(...targetObjects, ...sourceObjects);\n }\n\n return related;\n }, [record, objects]);\n};\n\nexport default RecordArticle;\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "useMemo", "Surface", "Filter", "Ref", "Relation", "getSpace", "useQuery", "useTranslation", "Masonry", "StackItem", "mx", "isNonNullable", "RecordArticle", "subject", "t", "useTranslation", "meta", "id", "space", "getSpace", "data", "useMemo", "related", "useRelatedObjects", "references", "relations", "singleColumn", "length", "StackItem", "Content", "div", "role", "className", "mx", "Surface", "limit", "label", "Masonry", "Root", "items", "render", "Card", "columnCount", "undefined", "intrinsicHeight", "record", "options", "objects", "useQuery", "Filter", "everything", "getReferences", "obj", "Object", "getOwnPropertyNames", "map", "name", "filter", "value", "Ref", "isRef", "referenceTargets", "ref", "target", "isNonNullable", "referenceSources", "refs", "some", "push", "isValidRelation", "Relation", "isRelation", "getSource", "getTarget", "targetObjects", "relation", "sourceObjects"]
|
|
7
|
-
}
|
|
@@ -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 { Atom } from '@effect-atom/atom-react';\nimport * as Array from 'effect/Array';\nimport * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\nimport * as Schema from 'effect/Schema';\n\nimport { Capabilities, type PluginContext, contributes, createIntent } from '@dxos/app-framework';\nimport { type QueryResult, type Space, SpaceState, getSpace, isSpace } from '@dxos/client/echo';\nimport { DXN, Filter, Obj, Query, Type } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { ROOT_ID, atomFromObservable, atomFromSignal, createExtension } from '@dxos/plugin-graph';\nimport { Collection, StoredSchema, View, getTypenameFromQuery } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\n\nimport { getActiveSpace } from '../hooks';\nimport { meta } from '../meta';\nimport { SPACE_TYPE, SpaceAction, type SpaceSettingsProps } from '../types';\nimport {\n SHARED,\n SPACES,\n atomFromQuery,\n constructObjectActions,\n constructSpaceActions,\n constructSpaceNode,\n createObjectNode,\n createStaticSchemaActions,\n createStaticSchemaNode,\n} from '../util';\n\nimport { SpaceCapabilities } from './capabilities';\n\nexport default (context: PluginContext) => {\n // TODO(wittjosiah): Using `get` and being reactive seems to cause a bug with Atom where disposed atoms are accessed.\n const resolve = (get: Atom.Context) => (typename: string) =>\n context.getCapabilities(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: meta.id }],\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.getCapability(Capabilities.AppGraph);\n const client = context.getCapability(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.type(Type.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: `${meta.id}/primary-actions`,\n position: 'hoist',\n actions: (node) =>\n Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map(() => [\n {\n id: SpaceAction.OpenCreateSpace._tag,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n await dispatch(createIntent(SpaceAction.OpenCreateSpace));\n },\n properties: {\n label: ['create space label', { ns: meta.id }],\n icon: 'ph--plus--regular',\n testId: 'spacePlugin.createSpace',\n disposition: 'menu',\n },\n },\n {\n id: SpaceAction.Join._tag,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n await dispatch(createIntent(SpaceAction.Join));\n },\n properties: {\n label: ['join space label', { ns: meta.id }],\n icon: 'ph--sign-in--regular',\n testId: 'spacePlugin.joinSpace',\n disposition: 'menu',\n },\n },\n {\n id: SpaceAction.OpenMembers._tag,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const client = context.getCapability(ClientCapabilities.Client);\n const space = getActiveSpace(context) ?? client.spaces.default;\n await dispatch(createIntent(SpaceAction.OpenMembers, { space }));\n },\n properties: {\n label: ['share space label', { ns: meta.id }],\n icon: 'ph--users--regular',\n testId: 'spacePlugin.shareSpace',\n keyBinding: {\n macos: 'meta+.',\n windows: 'alt+.',\n },\n },\n },\n {\n id: SpaceAction.OpenSettings._tag,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const client = context.getCapability(ClientCapabilities.Client);\n const space = getActiveSpace(context) ?? client.spaces.default;\n await dispatch(createIntent(SpaceAction.OpenSettings, { space }));\n },\n properties: {\n label: ['open current space settings label', { ns: meta.id }],\n icon: 'ph--faders--regular',\n keyBinding: {\n macos: 'meta+shift+,',\n windows: 'ctrl+shift+,',\n },\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n // Create spaces group node.\n createExtension({\n id: `${meta.id}/root`,\n position: 'hoist',\n connector: (node) =>\n Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map(() => [spacesNode]),\n Option.getOrElse(() => []),\n ),\n ),\n // resolver: ({ id }) => (id === SPACES ? spacesNode : undefined),\n }),\n\n // Create space nodes.\n createExtension({\n id: SPACES,\n connector: (node) => {\n let query: QueryResult<Type.Expando> | undefined;\n return Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (node.id === SPACES ? Option.some(node) : Option.none())),\n Option.map(() => {\n const state = context.getCapability(SpaceCapabilities.State);\n const client = context.getCapability(ClientCapabilities.Client);\n const spacesAtom = atomFromObservable(client.spaces);\n const isReadyAtom = atomFromObservable(client.spaces.isReady);\n\n const spaces = get(spacesAtom);\n const isReady = get(isReadyAtom);\n\n if (!spaces || !isReady) {\n return [];\n }\n\n const settings = get(context.capabilities(Capabilities.SettingsStore))[0]?.getStore<SpaceSettingsProps>(\n meta.id,\n )?.value;\n\n // TODO(wittjosiah): During client reset, accessing default space throws.\n try {\n if (!query) {\n query = client.spaces.default.db.query(Filter.type(Type.Expando, { key: SHARED }));\n }\n const [spacesOrder] = get(atomFromQuery(query));\n return get(\n atomFromSignal(() => {\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) =>\n settings?.showHidden ? true : space.state.get() !== SpaceState.SPACE_INACTIVE,\n )\n .map((space) =>\n constructSpaceNode({\n space,\n navigable: state.navigableCollections,\n personal: space === client.spaces.default,\n namesCache: state.spaceNames,\n resolve: resolve(get),\n }),\n );\n }),\n );\n } catch {\n return [];\n }\n }),\n Option.getOrElse(() => []),\n ),\n );\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 if (space.state.get() !== SpaceState.SPACE_READY) {\n // return undefined;\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: `${meta.id}/actions`,\n actions: (node) =>\n Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) =>\n node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),\n ),\n Option.flatMap((space) => {\n const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));\n const [client] = get(context.capabilities(ClientCapabilities.Client));\n const [state] = get(context.capabilities(SpaceCapabilities.State));\n\n if (!dispatcher || !client || !state) {\n return Option.none();\n } else {\n return Option.some({\n space,\n dispatch: dispatcher.dispatchPromise,\n personal: space === client.spaces.default,\n migrating: state.sdkMigrationRunning[space.id],\n });\n }\n }),\n Option.map((params) => constructSpaceActions(params)),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n // Create nodes for objects in the root collection of a space.\n createExtension({\n id: `${meta.id}/root-collection`,\n connector: (node) =>\n Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) =>\n node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),\n ),\n Option.map((space) => {\n const state = context.getCapability(SpaceCapabilities.State);\n const spaceState = get(atomFromObservable(space.state));\n if (spaceState !== SpaceState.SPACE_READY) {\n return [];\n }\n\n const collection = get(\n atomFromSignal(\n () => space.properties[Collection.Collection.typename]?.target as Collection.Collection | undefined,\n ),\n );\n if (!collection) {\n return [];\n }\n\n return get(\n atomFromSignal(() =>\n Function.pipe(\n collection.objects,\n Array.map((object) => object.target),\n Array.filter(isNonNullable),\n Array.map((object) =>\n createObjectNode({\n space,\n object,\n resolve: resolve(get),\n navigable: state.navigableCollections,\n }),\n ),\n Array.filter(isNonNullable),\n ),\n ),\n );\n }),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n // Create nodes for objects in a collection or by its fully qualified id.\n createExtension({\n id: `${meta.id}/objects`,\n connector: (node) =>\n Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) =>\n Obj.instanceOf(Collection.Collection, node.data) ? Option.some(node.data) : Option.none(),\n ),\n Option.map((collection) => {\n const state = context.getCapability(SpaceCapabilities.State);\n const space = getSpace(collection);\n\n return get(\n atomFromSignal(() =>\n Function.pipe(\n collection.objects,\n Array.map((object) => object.target),\n Array.filter(isNonNullable),\n Array.map(\n (object) =>\n space &&\n createObjectNode({\n object,\n space,\n resolve: resolve(get),\n navigable: state.navigableCollections,\n }),\n ),\n Array.filter(isNonNullable),\n ),\n ),\n );\n }),\n Option.getOrElse(() => []),\n ),\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, Query.select(Filter.ids(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 nodes for objects in a query collection.\n createExtension({\n id: `${meta.id}/query-collection-objects`,\n connector: (node) => {\n let query: QueryResult<Type.Expando> | undefined;\n return Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) =>\n Obj.instanceOf(Collection.QueryCollection, node.data) ? Option.some(node.data) : Option.none(),\n ),\n Option.flatMap((collection) => {\n const space = getSpace(collection);\n const typename = getTypenameFromQuery(collection.query);\n return typename && space ? Option.some({ typename, space }) : Option.none();\n }),\n Option.map(({ typename, space }) => {\n const state = context.getCapability(SpaceCapabilities.State);\n if (!query) {\n query = space.db.query(\n Query.without(\n Query.select(Filter.typename(typename)),\n // TODO(wittjosiah): This query is broader than it should be.\n // It will return all objects in the collection, not just the ones of the given type.\n // However this works fine for now because this query is only used for exclusions.\n Query.select(Filter.typename(typename))\n .referencedBy(Collection.Collection, 'objects')\n .reference('objects'),\n ),\n );\n }\n return (\n get(atomFromQuery(query))\n // TODO(wittjosiah): This should be the default sort order.\n .toSorted((a, b) => a.id.localeCompare(b.id))\n .map((object) =>\n get(\n atomFromSignal(() =>\n createObjectNode({\n object,\n space,\n resolve: resolve(get),\n droppable: false, // Cannot rearrange query collections.\n navigable: state.navigableCollections,\n }),\n ),\n ),\n )\n .filter(isNonNullable)\n );\n }),\n Option.getOrElse(() => []),\n ),\n );\n },\n }),\n\n // Static schema records.\n createExtension({\n id: `${meta.id}/static-schemas`,\n connector: (node) => {\n const client = context.getCapability(ClientCapabilities.Client);\n return Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) =>\n Obj.instanceOf(Collection.QueryCollection, node.data) &&\n getTypenameFromQuery(node.data.query) === StoredSchema.typename\n ? Option.some(node.data)\n : Option.none(),\n ),\n Option.flatMap((collection) => {\n const space = getSpace(collection);\n return space?.properties.staticRecords ? Option.some(space) : Option.none();\n }),\n Option.map((space) => {\n return get(atomFromSignal(() => (space.properties.staticRecords ?? []) as string[]))\n .map((typename) =>\n client.graph.schemaRegistry.schemas.find((schema) => Type.getTypename(schema) === typename),\n )\n .filter(isNonNullable)\n .map((schema) => createStaticSchemaNode({ schema, space }));\n }),\n Option.getOrElse(() => []),\n ),\n );\n },\n }),\n\n // Create static schema actions.\n createExtension({\n id: `${meta.id}/static-schema-actions`,\n actions: (node) => {\n let query: QueryResult<View.View> | undefined;\n return Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => {\n const space = isSpace(node.properties.space) ? node.properties.space : undefined;\n return space && Schema.isSchema(node.data) ? Option.some({ space, schema: node.data }) : Option.none();\n }),\n Option.map(({ space, schema }) => {\n if (!query) {\n // TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).\n query = space.db.query(Filter.type(View.View));\n }\n\n const views = get(atomFromQuery(query));\n const filteredViews = get(\n atomFromSignal(() =>\n // TODO(wittjosiah): Remove cast.\n views.filter(\n (view) => getTypenameFromQuery(view.query.ast) === Type.getTypename(schema as Type.Obj.Any),\n ),\n ),\n );\n const deletable = filteredViews.length === 0;\n\n const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));\n if (!dispatcher) {\n return [];\n }\n\n // TODO(wittjosiah): Remove cast.\n return createStaticSchemaActions({\n schema: schema as Type.Obj.Any,\n space,\n dispatch: dispatcher.dispatchPromise,\n deletable,\n });\n }),\n Option.getOrElse(() => []),\n ),\n );\n },\n }),\n\n // Create nodes for schema views.\n createExtension({\n id: `${meta.id}/schema-views`,\n connector: (node) => {\n let query: QueryResult<View.View> | undefined;\n return Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => {\n const space = getSpace(node.data) ?? (isSpace(node.properties.space) ? node.properties.space : undefined);\n return space && (Obj.instanceOf(StoredSchema, node.data) || Schema.isSchema(node.data))\n ? Option.some({ space, schema: node.data })\n : Option.none();\n }),\n Option.map(({ space, schema }) => {\n if (!query) {\n // TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).\n query = space.db.query(Filter.type(View.View));\n }\n\n // TODO(wittjosiah): Remove cast.\n const typename = Schema.isSchema(schema) ? Type.getTypename(schema as Type.Obj.Any) : schema.typename;\n return (\n get(atomFromQuery(query))\n .filter((view) => getTypenameFromQuery(view.query.ast) === typename)\n // Filter out Collection views from Projects.\n .filter((view) =>\n get(\n atomFromSignal(() => {\n const presentation = view.presentation.target;\n if (presentation) {\n const typename = Obj.getTypename(presentation);\n return typename !== Collection.Collection.typename;\n } else {\n return false;\n }\n }),\n ),\n )\n .map((view) =>\n get(\n atomFromSignal(() =>\n createObjectNode({\n object: view,\n space,\n resolve: resolve(get),\n droppable: false,\n }),\n ),\n ),\n )\n .filter(isNonNullable)\n );\n }),\n Option.getOrElse(() => []),\n ),\n );\n },\n }),\n\n // Create record nodes.\n createExtension({\n id: `${meta.id}/records`,\n resolver: (id) => {\n let query: QueryResult<Type.Expando> | undefined;\n return Atom.make((get) => {\n const client = context.getCapability(ClientCapabilities.Client);\n const dxn = DXN.tryParse(id)?.asEchoDXN();\n if (!dxn || !dxn.spaceId) {\n return null;\n }\n\n const space = client.spaces.get(dxn.spaceId);\n if (!space) {\n return null;\n }\n\n if (!query) {\n query = space.db.query(Filter.ids(dxn.echoId));\n }\n\n const object = get(atomFromQuery(query)).at(0);\n if (!object) {\n return null;\n }\n\n return createObjectNode({\n object,\n space,\n resolve: resolve(get),\n disposition: 'hidden',\n });\n });\n },\n }),\n\n // Create collection actions and action groups.\n createExtension({\n id: `${meta.id}/object-actions`,\n actions: (node) => {\n let query: QueryResult<View.View> | undefined;\n return Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => {\n const space = getSpace(node.data);\n return space && Obj.isObject(node.data) && Obj.getTypename(node.data) === node.type\n ? Option.some({ space, object: node.data })\n : Option.none();\n }),\n Option.flatMap(({ space, object }) => {\n const isSchema = Obj.instanceOf(StoredSchema, object);\n if (!query && isSchema) {\n // TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).\n query = space.db.query(Filter.type(View.View));\n }\n\n let deletable =\n !isSchema &&\n // Don't allow the Records smart collection to be deleted.\n !(\n Obj.instanceOf(Collection.QueryCollection, object) &&\n getTypenameFromQuery(object.query) === StoredSchema.typename\n );\n if (isSchema && query) {\n const views = get(atomFromQuery(query));\n const filteredViews = get(\n atomFromSignal(() =>\n views.filter((view) => getTypenameFromQuery(view.query.ast) === object.typename),\n ),\n );\n deletable = filteredViews.length === 0;\n }\n\n const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));\n const [appGraph] = get(context.capabilities(Capabilities.AppGraph));\n const [state] = get(context.capabilities(SpaceCapabilities.State));\n const objectForms = get(context.capabilities(SpaceCapabilities.ObjectForm));\n\n if (!dispatcher || !appGraph || !state) {\n return Option.none();\n } else {\n return Option.some({\n object,\n graph: appGraph.graph,\n dispatch: dispatcher.dispatchPromise,\n objectForms,\n deletable,\n navigable: get(atomFromSignal(() => state.navigableCollections)),\n });\n }\n }),\n Option.map((params) => constructObjectActions(params)),\n Option.getOrElse(() => []),\n ),\n );\n },\n }),\n\n // View selected objects.\n createExtension({\n id: `${meta.id}/selected-objects`,\n connector: (node) =>\n Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (Obj.instanceOf(View.View, node.data) ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: [node.id, 'selected-objects'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'selected-objects',\n properties: {\n label: ['companion selected objects label', { ns: meta.id }],\n icon: 'ph--tree-view--regular',\n disposition: 'hidden',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n // Object settings plank companion.\n createExtension({\n id: `${meta.id}/settings`,\n connector: (node) =>\n Atom.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: [node.id, 'settings'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'settings',\n properties: {\n label: ['object settings label', { ns: meta.id }],\n icon: 'ph--sliders--regular',\n disposition: 'hidden',\n position: 'fallback',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n ]);\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Atom", "Array", "Function", "Option", "Schema", "Capabilities", "contributes", "createIntent", "SpaceState", "getSpace", "isSpace", "DXN", "Filter", "Obj", "Query", "Type", "log", "ClientCapabilities", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE", "ROOT_ID", "atomFromObservable", "atomFromSignal", "createExtension", "Collection", "StoredSchema", "View", "getTypenameFromQuery", "isNonNullable", "context", "resolve", "get", "typename", "getCapabilities", "Capabilities", "Metadata", "find", "id", "metadata", "spacesNode", "SPACES", "type", "cacheable", "properties", "label", "ns", "meta", "icon", "testId", "role", "disposition", "disabled", "childrenPersistenceClass", "onRearrangeChildren", "nextOrder", "graph", "getCapability", "AppGraph", "client", "ClientCapabilities", "Client", "sortEdges", "map", "objects", "spacesOrder", "spaces", "default", "db", "query", "Filter", "Type", "Expando", "key", "SHARED", "run", "order", "log", "warn", "contributes", "AppGraphBuilder", "createExtension", "position", "actions", "node", "Atom", "make", "pipe", "flatMap", "ROOT_ID", "some", "none", "SpaceAction", "OpenCreateSpace", "_tag", "data", "dispatchPromise", "dispatch", "IntentDispatcher", "createIntent", "Join", "OpenMembers", "space", "getActiveSpace", "keyBinding", "macos", "windows", "OpenSettings", "getOrElse", "connector", "state", "SpaceCapabilities", "State", "spacesAtom", "atomFromObservable", "isReadyAtom", "isReady", "settings", "capabilities", "SettingsStore", "getStore", "value", "atomFromQuery", "atomFromSignal", "orderMap", "Map", "index", "filter", "has", "sort", "a", "b", "showHidden", "SpaceState", "SPACE_INACTIVE", "constructSpaceNode", "navigable", "navigableCollections", "personal", "namesCache", "spaceNames", "SPACE_TYPE", "isSpace", "dispatcher", "migrating", "sdkMigrationRunning", "params", "constructSpaceActions", "spaceState", "SPACE_READY", "collection", "Collection", "target", "object", "isNonNullable", "createObjectNode", "Obj", "instanceOf", "getSpace", "QueryCollection", "getTypenameFromQuery", "Query", "without", "select", "referencedBy", "reference", "toSorted", "localeCompare", "droppable", "StoredSchema", "staticRecords", "schemaRegistry", "schemas", "schema", "getTypename", "createStaticSchemaNode", "undefined", "isSchema", "View", "views", "filteredViews", "view", "ast", "deletable", "length", "createStaticSchemaActions", "presentation", "resolver", "dxn", "DXN", "tryParse", "asEchoDXN", "spaceId", "ids", "echoId", "at", "isObject", "appGraph", "objectForms", "ObjectForm", "constructObjectActions", "join", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE"]
|
|
7
|
-
}
|