@dxos/plugin-space 0.7.5-labs.a279d8c → 0.7.5-labs.c0e040f
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 → app-graph-builder-GSS3V7IN.mjs} +15 -13
- package/dist/lib/browser/app-graph-builder-GSS3V7IN.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-VNWPLPDF.mjs → app-graph-serializer-QDXM5M6K.mjs} +5 -5
- package/dist/lib/browser/{chunk-PDJ4MLA4.mjs → chunk-DIBLC24B.mjs} +308 -251
- package/dist/lib/browser/chunk-DIBLC24B.mjs.map +7 -0
- package/dist/lib/browser/{chunk-SOXNANA6.mjs → chunk-PQXZCNAU.mjs} +3 -2
- package/dist/lib/browser/{chunk-SOXNANA6.mjs.map → chunk-PQXZCNAU.mjs.map} +3 -3
- package/dist/lib/browser/{chunk-UH5P4UL3.mjs → chunk-RLZQJD47.mjs} +3 -2
- package/dist/lib/browser/chunk-RLZQJD47.mjs.map +7 -0
- package/dist/lib/browser/{chunk-5TBRONF6.mjs → chunk-SDK7RZI3.mjs} +3 -3
- package/dist/lib/browser/{chunk-HCXWKGTE.mjs → chunk-XPZ6IIXF.mjs} +4 -9
- package/dist/lib/browser/chunk-XPZ6IIXF.mjs.map +7 -0
- package/dist/lib/browser/{chunk-ZBKFJNHH.mjs → chunk-ZL5ZFGBK.mjs} +15 -9
- package/dist/lib/browser/chunk-ZL5ZFGBK.mjs.map +7 -0
- package/dist/lib/browser/{identity-created-EC5FOCX2.mjs → identity-created-25TK5XNO.mjs} +3 -3
- package/dist/lib/browser/index.mjs +14 -13
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/intent-resolver-LNTCXZ57.mjs +537 -0
- package/dist/lib/browser/intent-resolver-LNTCXZ57.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-root-4QQST3T2.mjs → react-root-Q7JJDCPB.mjs} +6 -6
- package/dist/lib/browser/{react-surface-JTNUNOJG.mjs → react-surface-BDMYLARO.mjs} +26 -33
- package/dist/lib/browser/react-surface-BDMYLARO.mjs.map +7 -0
- package/dist/lib/browser/{settings-ASFF5BZL.mjs → settings-K4JPYYEM.mjs} +3 -3
- package/dist/lib/browser/{spaces-ready-4SFNS5JQ.mjs → spaces-ready-THYJEJYZ.mjs} +31 -32
- package/dist/lib/browser/spaces-ready-THYJEJYZ.mjs.map +7 -0
- package/dist/lib/browser/{state-MS4KYJWI.mjs → state-6DCY5YJP.mjs} +3 -3
- package/dist/lib/browser/types/index.mjs +2 -4
- package/dist/lib/node/{app-graph-builder-ZQ5S62YR.cjs → app-graph-builder-V3RCGDV7.cjs} +60 -58
- package/dist/lib/node/app-graph-builder-V3RCGDV7.cjs.map +7 -0
- package/dist/lib/node/{app-graph-serializer-72S7P33H.cjs → app-graph-serializer-H4UACG57.cjs} +21 -21
- package/dist/lib/node/{chunk-VCPICVIE.cjs → chunk-4AZ2DD4G.cjs} +308 -251
- package/dist/lib/node/chunk-4AZ2DD4G.cjs.map +7 -0
- package/dist/lib/node/{chunk-DDZYVNVP.cjs → chunk-6MEOP3DH.cjs} +8 -14
- package/dist/lib/node/chunk-6MEOP3DH.cjs.map +7 -0
- package/dist/lib/node/{chunk-BQRNTKSQ.cjs → chunk-D6BFKOXY.cjs} +8 -8
- package/dist/lib/node/{chunk-Z34MTEU7.cjs → chunk-SYVPVU3K.cjs} +66 -60
- package/dist/lib/node/chunk-SYVPVU3K.cjs.map +7 -0
- package/dist/lib/node/{chunk-56NGXG2A.cjs → chunk-UX3U4RU2.cjs} +9 -8
- package/dist/lib/node/chunk-UX3U4RU2.cjs.map +7 -0
- package/dist/lib/node/{chunk-AO4EW2RX.cjs → chunk-WZR6OAN3.cjs} +6 -5
- package/dist/lib/node/{chunk-AO4EW2RX.cjs.map → chunk-WZR6OAN3.cjs.map} +3 -3
- package/dist/lib/node/{identity-created-IMDS4A6A.cjs → identity-created-7G5U7R36.cjs} +7 -7
- package/dist/lib/node/index.cjs +93 -92
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/intent-resolver-CDE4M3TW.cjs +536 -0
- package/dist/lib/node/intent-resolver-CDE4M3TW.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-root-TCHYZQY3.cjs → react-root-JN6AIHMS.cjs} +12 -12
- package/dist/lib/node/{react-surface-TFPR6QAQ.cjs → react-surface-XSK2QEQV.cjs} +72 -76
- package/dist/lib/node/react-surface-XSK2QEQV.cjs.map +7 -0
- package/dist/lib/node/{settings-QLCKAUHK.cjs → settings-TEELGWS4.cjs} +8 -8
- package/dist/lib/node/{spaces-ready-RZTKEXOL.cjs → spaces-ready-L4MJTFQ6.cjs} +39 -40
- package/dist/lib/node/spaces-ready-L4MJTFQ6.cjs.map +7 -0
- package/dist/lib/node/{state-4UIOUKLJ.cjs → state-WPZC4JXB.cjs} +8 -8
- package/dist/lib/node/types/index.cjs +16 -18
- package/dist/lib/node/types/index.cjs.map +2 -2
- package/dist/lib/node-esm/{app-graph-builder-CD6IYPSS.mjs → app-graph-builder-VFHK7OQI.mjs} +15 -13
- package/dist/lib/node-esm/app-graph-builder-VFHK7OQI.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-CFXS6ZE2.mjs → app-graph-serializer-PIPJVXYZ.mjs} +5 -5
- package/dist/lib/node-esm/{chunk-M4XTHK35.mjs → chunk-4UX5WGKJ.mjs} +3 -3
- package/dist/lib/node-esm/{chunk-CLGCKZ2D.mjs → chunk-AAQRELDK.mjs} +4 -9
- package/dist/lib/node-esm/chunk-AAQRELDK.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-I75ZN2YH.mjs → chunk-FTVEA5LO.mjs} +308 -251
- package/dist/lib/node-esm/chunk-FTVEA5LO.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-7FUVU45N.mjs → chunk-ICCM4YRJ.mjs} +3 -2
- package/dist/lib/node-esm/{chunk-7FUVU45N.mjs.map → chunk-ICCM4YRJ.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-375RB3CZ.mjs → chunk-LGL4A5B5.mjs} +3 -2
- package/dist/lib/node-esm/chunk-LGL4A5B5.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-FUMGYUD3.mjs → chunk-RCZRYXI3.mjs} +15 -9
- package/dist/lib/node-esm/chunk-RCZRYXI3.mjs.map +7 -0
- package/dist/lib/node-esm/{identity-created-SJYZZ7Q3.mjs → identity-created-7THGZ7EW.mjs} +3 -3
- package/dist/lib/node-esm/index.mjs +14 -13
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/intent-resolver-7L3GJAZE.mjs +538 -0
- package/dist/lib/node-esm/intent-resolver-7L3GJAZE.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-BEX2XFJK.mjs → react-root-BNA6PBFZ.mjs} +6 -6
- package/dist/lib/node-esm/{react-surface-TRLHCJZ3.mjs → react-surface-FTI2LQNL.mjs} +26 -33
- package/dist/lib/node-esm/react-surface-FTI2LQNL.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-WLVEO4JM.mjs → settings-KXYUZBLN.mjs} +3 -3
- package/dist/lib/node-esm/{spaces-ready-ITGYYT5A.mjs → spaces-ready-ZC2R73H3.mjs} +31 -32
- package/dist/lib/node-esm/spaces-ready-ZC2R73H3.mjs.map +7 -0
- package/dist/lib/node-esm/{state-BMISGQ2O.mjs → state-5GH2D5U4.mjs} +3 -3
- package/dist/lib/node-esm/types/index.mjs +2 -4
- package/dist/types/src/SpacePlugin.d.ts +5 -1
- package/dist/types/src/SpacePlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +22 -22
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +6 -0
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +34 -33
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +2 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
- package/dist/types/src/components/BaseObjectSettings.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +4 -3
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
- package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
- package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsDialog.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsPanel.d.ts +3 -4
- 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/SyncStatus.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +1 -0
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +2 -5
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +1 -0
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +39 -37
- package/src/SpacePlugin.tsx +11 -6
- package/src/capabilities/app-graph-builder.ts +9 -8
- package/src/capabilities/capabilities.ts +4 -1
- package/src/capabilities/intent-resolver.ts +410 -312
- package/src/capabilities/react-surface.tsx +22 -30
- package/src/capabilities/spaces-ready.ts +20 -21
- package/src/components/AwaitingObject.tsx +5 -5
- package/src/components/BaseObjectSettings.tsx +7 -0
- package/src/components/CreateDialog/CreateObjectDialog.tsx +15 -15
- package/src/components/CreateDialog/CreateObjectPanel.tsx +114 -115
- package/src/components/CreateDialog/CreateSpaceDialog.tsx +18 -9
- package/src/components/JoinDialog.tsx +27 -19
- package/src/components/SpacePluginSettings.tsx +3 -3
- package/src/components/SpacePresence.stories.tsx +2 -2
- package/src/components/SpacePresence.tsx +2 -3
- package/src/components/SpaceSettings/SpaceSettingsDialog.tsx +16 -1
- package/src/components/SpaceSettings/SpaceSettingsPanel.stories.tsx +5 -1
- package/src/components/SpaceSettings/SpaceSettingsPanel.tsx +15 -8
- package/src/components/SyncStatus/InlineSyncStatus.tsx +2 -2
- package/src/components/SyncStatus/SyncStatus.tsx +2 -1
- package/src/meta.ts +1 -0
- package/src/types/types.ts +2 -7
- package/src/util.tsx +9 -4
- package/dist/lib/browser/app-graph-builder-5D2QB43K.mjs.map +0 -7
- package/dist/lib/browser/chunk-HCXWKGTE.mjs.map +0 -7
- package/dist/lib/browser/chunk-PDJ4MLA4.mjs.map +0 -7
- package/dist/lib/browser/chunk-UH5P4UL3.mjs.map +0 -7
- package/dist/lib/browser/chunk-ZBKFJNHH.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-Y6AZTVRL.mjs +0 -459
- package/dist/lib/browser/intent-resolver-Y6AZTVRL.mjs.map +0 -7
- package/dist/lib/browser/react-surface-JTNUNOJG.mjs.map +0 -7
- package/dist/lib/browser/spaces-ready-4SFNS5JQ.mjs.map +0 -7
- package/dist/lib/node/app-graph-builder-ZQ5S62YR.cjs.map +0 -7
- package/dist/lib/node/chunk-56NGXG2A.cjs.map +0 -7
- package/dist/lib/node/chunk-DDZYVNVP.cjs.map +0 -7
- package/dist/lib/node/chunk-VCPICVIE.cjs.map +0 -7
- package/dist/lib/node/chunk-Z34MTEU7.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-MUGCKZPN.cjs +0 -458
- package/dist/lib/node/intent-resolver-MUGCKZPN.cjs.map +0 -7
- package/dist/lib/node/react-surface-TFPR6QAQ.cjs.map +0 -7
- package/dist/lib/node/spaces-ready-RZTKEXOL.cjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-CD6IYPSS.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-375RB3CZ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-CLGCKZ2D.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-FUMGYUD3.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-I75ZN2YH.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-6PNQKHDL.mjs +0 -460
- package/dist/lib/node-esm/intent-resolver-6PNQKHDL.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-TRLHCJZ3.mjs.map +0 -7
- package/dist/lib/node-esm/spaces-ready-ITGYYT5A.mjs.map +0 -7
- /package/dist/lib/browser/{app-graph-serializer-VNWPLPDF.mjs.map → app-graph-serializer-QDXM5M6K.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-5TBRONF6.mjs.map → chunk-SDK7RZI3.mjs.map} +0 -0
- /package/dist/lib/browser/{identity-created-EC5FOCX2.mjs.map → identity-created-25TK5XNO.mjs.map} +0 -0
- /package/dist/lib/browser/{react-root-4QQST3T2.mjs.map → react-root-Q7JJDCPB.mjs.map} +0 -0
- /package/dist/lib/browser/{settings-ASFF5BZL.mjs.map → settings-K4JPYYEM.mjs.map} +0 -0
- /package/dist/lib/browser/{state-MS4KYJWI.mjs.map → state-6DCY5YJP.mjs.map} +0 -0
- /package/dist/lib/node/{app-graph-serializer-72S7P33H.cjs.map → app-graph-serializer-H4UACG57.cjs.map} +0 -0
- /package/dist/lib/node/{chunk-BQRNTKSQ.cjs.map → chunk-D6BFKOXY.cjs.map} +0 -0
- /package/dist/lib/node/{identity-created-IMDS4A6A.cjs.map → identity-created-7G5U7R36.cjs.map} +0 -0
- /package/dist/lib/node/{react-root-TCHYZQY3.cjs.map → react-root-JN6AIHMS.cjs.map} +0 -0
- /package/dist/lib/node/{settings-QLCKAUHK.cjs.map → settings-TEELGWS4.cjs.map} +0 -0
- /package/dist/lib/node/{state-4UIOUKLJ.cjs.map → state-WPZC4JXB.cjs.map} +0 -0
- /package/dist/lib/node-esm/{app-graph-serializer-CFXS6ZE2.mjs.map → app-graph-serializer-PIPJVXYZ.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-M4XTHK35.mjs.map → chunk-4UX5WGKJ.mjs.map} +0 -0
- /package/dist/lib/node-esm/{identity-created-SJYZZ7Q3.mjs.map → identity-created-7THGZ7EW.mjs.map} +0 -0
- /package/dist/lib/node-esm/{react-root-BEX2XFJK.mjs.map → react-root-BNA6PBFZ.mjs.map} +0 -0
- /package/dist/lib/node-esm/{settings-WLVEO4JM.mjs.map → settings-KXYUZBLN.mjs.map} +0 -0
- /package/dist/lib/node-esm/{state-BMISGQ2O.mjs.map → state-5GH2D5U4.mjs.map} +0 -0
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
useCapabilities,
|
|
14
14
|
usePluginManager,
|
|
15
15
|
} from '@dxos/app-framework';
|
|
16
|
+
import { SettingsStore } from '@dxos/local-storage';
|
|
16
17
|
import { ClientCapabilities } from '@dxos/plugin-client';
|
|
17
18
|
import {
|
|
18
19
|
getSpace,
|
|
@@ -43,7 +44,6 @@ import {
|
|
|
43
44
|
POPOVER_RENAME_SPACE,
|
|
44
45
|
PopoverRenameObject,
|
|
45
46
|
PopoverRenameSpace,
|
|
46
|
-
ShareSpaceButton,
|
|
47
47
|
SmallPresenceLive,
|
|
48
48
|
SPACE_SETTINGS_DIALOG,
|
|
49
49
|
SpacePluginSettings,
|
|
@@ -56,7 +56,6 @@ import {
|
|
|
56
56
|
} from '../components';
|
|
57
57
|
import { SPACE_PLUGIN } from '../meta';
|
|
58
58
|
import { CollectionType, type SpaceSettingsProps } from '../types';
|
|
59
|
-
import { COMPOSER_SPACE_LOCK } from '../util';
|
|
60
59
|
|
|
61
60
|
type ReactSurfaceOptions = {
|
|
62
61
|
createInvitationUrl: (invitationCode: string) => string;
|
|
@@ -81,7 +80,7 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
|
|
|
81
80
|
createSurface({
|
|
82
81
|
id: `${SPACE_PLUGIN}/collection-fallback`,
|
|
83
82
|
role: 'article',
|
|
84
|
-
|
|
83
|
+
position: 'fallback',
|
|
85
84
|
filter: (data): data is { subject: CollectionType } => data.subject instanceof CollectionType,
|
|
86
85
|
component: ({ data }) => <CollectionMain collection={data.subject} />,
|
|
87
86
|
}),
|
|
@@ -95,28 +94,28 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
|
|
|
95
94
|
createSurface({
|
|
96
95
|
id: `${SPACE_PLUGIN}/object-settings-base-panel`,
|
|
97
96
|
role: 'complementary--settings',
|
|
98
|
-
|
|
97
|
+
position: 'hoist',
|
|
99
98
|
filter: (data): data is { subject: ReactiveEchoObject<any> } => isEchoObject(data.subject),
|
|
100
99
|
component: ({ data }) => <BaseObjectSettings object={data.subject} />,
|
|
101
100
|
}),
|
|
102
101
|
createSurface({
|
|
103
102
|
id: `${SPACE_PLUGIN}/object-settings-advanced-panel`,
|
|
104
103
|
role: 'complementary--settings',
|
|
105
|
-
|
|
104
|
+
position: 'fallback',
|
|
106
105
|
filter: (data): data is { subject: ReactiveEchoObject<any> } => isEchoObject(data.subject),
|
|
107
106
|
component: ({ data }) => <AdvancedObjectSettings object={data.subject} />,
|
|
108
107
|
}),
|
|
109
108
|
createSurface({
|
|
110
109
|
id: SPACE_SETTINGS_DIALOG,
|
|
111
110
|
role: 'dialog',
|
|
112
|
-
filter: (data): data is {
|
|
113
|
-
component: ({ data }) => <SpaceSettingsDialog {...data.
|
|
111
|
+
filter: (data): data is { props: SpaceSettingsDialogProps } => data.component === SPACE_SETTINGS_DIALOG,
|
|
112
|
+
component: ({ data }) => <SpaceSettingsDialog {...data.props} createInvitationUrl={createInvitationUrl} />,
|
|
114
113
|
}),
|
|
115
114
|
createSurface({
|
|
116
115
|
id: JOIN_DIALOG,
|
|
117
116
|
role: 'dialog',
|
|
118
|
-
filter: (data): data is {
|
|
119
|
-
component: ({ data }) => <JoinDialog {...data.
|
|
117
|
+
filter: (data): data is { props: JoinPanelProps } => data.component === JOIN_DIALOG,
|
|
118
|
+
component: ({ data }) => <JoinDialog {...data.props} />,
|
|
120
119
|
}),
|
|
121
120
|
createSurface({
|
|
122
121
|
id: CREATE_SPACE_DIALOG,
|
|
@@ -127,7 +126,7 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
|
|
|
127
126
|
createSurface({
|
|
128
127
|
id: CREATE_OBJECT_DIALOG,
|
|
129
128
|
role: 'dialog',
|
|
130
|
-
filter: (data): data is {
|
|
129
|
+
filter: (data): data is { props: Partial<CreateObjectDialogProps> } => data.component === CREATE_OBJECT_DIALOG,
|
|
131
130
|
component: ({ data }) => {
|
|
132
131
|
const schemas = useCapabilities(ClientCapabilities.Schema).flat();
|
|
133
132
|
const manager = usePluginManager();
|
|
@@ -142,21 +141,21 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
|
|
|
142
141
|
[manager],
|
|
143
142
|
);
|
|
144
143
|
|
|
145
|
-
return <CreateObjectDialog schemas={schemas} resolve={resolve} {...data.
|
|
144
|
+
return <CreateObjectDialog schemas={schemas} resolve={resolve} {...data.props} />;
|
|
146
145
|
},
|
|
147
146
|
}),
|
|
148
147
|
createSurface({
|
|
149
148
|
id: POPOVER_RENAME_SPACE,
|
|
150
149
|
role: 'popover',
|
|
151
|
-
filter: (data): data is {
|
|
152
|
-
component: ({ data }) => <PopoverRenameSpace space={data.
|
|
150
|
+
filter: (data): data is { props: Space } => data.component === POPOVER_RENAME_SPACE && isSpace(data.props),
|
|
151
|
+
component: ({ data }) => <PopoverRenameSpace space={data.props} />,
|
|
153
152
|
}),
|
|
154
153
|
createSurface({
|
|
155
154
|
id: POPOVER_RENAME_OBJECT,
|
|
156
155
|
role: 'popover',
|
|
157
|
-
filter: (data): data is {
|
|
158
|
-
data.component === POPOVER_RENAME_OBJECT && isReactiveObject(data.
|
|
159
|
-
component: ({ data }) => <PopoverRenameObject object={data.
|
|
156
|
+
filter: (data): data is { props: ReactiveEchoObject<any> } =>
|
|
157
|
+
data.component === POPOVER_RENAME_OBJECT && isReactiveObject(data.props),
|
|
158
|
+
component: ({ data }) => <PopoverRenameObject object={data.props} />,
|
|
160
159
|
}),
|
|
161
160
|
createSurface({
|
|
162
161
|
id: `${SPACE_PLUGIN}/navtree-presence`,
|
|
@@ -173,7 +172,7 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
|
|
|
173
172
|
// TODO(wittjosiah): Attention glyph for non-echo items should be handled elsewhere.
|
|
174
173
|
id: `${SPACE_PLUGIN}/navtree-presence-fallback`,
|
|
175
174
|
role: 'navtree-item-end',
|
|
176
|
-
|
|
175
|
+
position: 'fallback',
|
|
177
176
|
filter: (data): data is { id: string; open?: boolean } => typeof data.id === 'string',
|
|
178
177
|
component: ({ data }) => <SmallPresenceLive id={data.id} open={data.open} />,
|
|
179
178
|
}),
|
|
@@ -186,7 +185,7 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
|
|
|
186
185
|
createSurface({
|
|
187
186
|
id: `${SPACE_PLUGIN}/navbar-presence`,
|
|
188
187
|
role: 'navbar-end',
|
|
189
|
-
|
|
188
|
+
position: 'hoist',
|
|
190
189
|
filter: (data): data is { subject: Space | ReactiveEchoObject<any> } =>
|
|
191
190
|
isSpace(data.subject) || isEchoObject(data.subject),
|
|
192
191
|
component: ({ data }) => {
|
|
@@ -197,12 +196,7 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
|
|
|
197
196
|
: undefined
|
|
198
197
|
: data.subject;
|
|
199
198
|
|
|
200
|
-
return
|
|
201
|
-
<>
|
|
202
|
-
<SpacePresence object={object} />
|
|
203
|
-
{space.properties[COMPOSER_SPACE_LOCK] ? null : <ShareSpaceButton space={space} />}
|
|
204
|
-
</>
|
|
205
|
-
) : null;
|
|
199
|
+
return object ? <SpacePresence object={object} /> : null;
|
|
206
200
|
},
|
|
207
201
|
}),
|
|
208
202
|
createSurface({
|
|
@@ -213,12 +207,10 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
|
|
|
213
207
|
}),
|
|
214
208
|
createSurface({
|
|
215
209
|
id: `${SPACE_PLUGIN}/settings`,
|
|
216
|
-
role: '
|
|
217
|
-
filter: (data): data is
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
return <SpacePluginSettings settings={settings} />;
|
|
221
|
-
},
|
|
210
|
+
role: 'article',
|
|
211
|
+
filter: (data): data is { subject: SettingsStore<SpaceSettingsProps> } =>
|
|
212
|
+
data.subject instanceof SettingsStore && data.subject.prefix === SPACE_PLUGIN,
|
|
213
|
+
component: ({ data: { subject } }) => <SpacePluginSettings settings={subject.value} />,
|
|
222
214
|
}),
|
|
223
215
|
createSurface({
|
|
224
216
|
id: `${SPACE_PLUGIN}/menu-footer`,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { contributes, createIntent,
|
|
5
|
+
import { contributes, createIntent, type PluginsContext, Capabilities, LayoutAction } from '@dxos/app-framework';
|
|
6
6
|
import { EventSubscriptions } from '@dxos/async';
|
|
7
7
|
import { Expando } from '@dxos/echo-schema';
|
|
8
8
|
import { scheduledEffect } from '@dxos/echo-signals/core';
|
|
@@ -10,6 +10,7 @@ import { create } from '@dxos/live-object';
|
|
|
10
10
|
import { log } from '@dxos/log';
|
|
11
11
|
import { AttentionCapabilities } from '@dxos/plugin-attention';
|
|
12
12
|
import { ClientCapabilities } from '@dxos/plugin-client';
|
|
13
|
+
import { DeckCapabilities } from '@dxos/plugin-deck';
|
|
13
14
|
import { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';
|
|
14
15
|
import { PublicKey } from '@dxos/react-client';
|
|
15
16
|
import { Filter, FQ_ID_LENGTH, parseFullyQualifiedId, SpaceState } from '@dxos/react-client/echo';
|
|
@@ -29,7 +30,7 @@ export default async (context: PluginsContext) => {
|
|
|
29
30
|
const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);
|
|
30
31
|
const { graph } = context.requestCapability(Capabilities.AppGraph);
|
|
31
32
|
const layout = context.requestCapability(Capabilities.Layout);
|
|
32
|
-
const
|
|
33
|
+
const deck = context.requestCapability(DeckCapabilities.DeckState);
|
|
33
34
|
const attention = context.requestCapability(AttentionCapabilities.Attention);
|
|
34
35
|
const state = context.requestCapability(SpaceCapabilities.MutableState);
|
|
35
36
|
const client = context.requestCapability(ClientCapabilities.Client);
|
|
@@ -37,6 +38,10 @@ export default async (context: PluginsContext) => {
|
|
|
37
38
|
const defaultSpace = client.spaces.default;
|
|
38
39
|
await defaultSpace.waitUntilReady();
|
|
39
40
|
|
|
41
|
+
if (deck.activeDeck === 'default') {
|
|
42
|
+
await dispatch(createIntent(LayoutAction.SwitchWorkspace, { part: 'workspace', subject: defaultSpace.id }));
|
|
43
|
+
}
|
|
44
|
+
|
|
40
45
|
// Initialize space sharing lock in default space.
|
|
41
46
|
if (typeof defaultSpace.properties[COMPOSER_SPACE_LOCK] !== 'boolean') {
|
|
42
47
|
defaultSpace.properties[COMPOSER_SPACE_LOCK] = true;
|
|
@@ -54,21 +59,18 @@ export default async (context: PluginsContext) => {
|
|
|
54
59
|
// Await missing objects.
|
|
55
60
|
subscriptions.add(
|
|
56
61
|
scheduledEffect(
|
|
57
|
-
() => ({
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}),
|
|
61
|
-
({ layoutMode, soloPart }) => {
|
|
62
|
-
if (layoutMode !== 'solo' || !soloPart) {
|
|
62
|
+
() => ({ active: layout.active }),
|
|
63
|
+
({ active }) => {
|
|
64
|
+
if (active.length !== 1) {
|
|
63
65
|
return;
|
|
64
66
|
}
|
|
65
67
|
|
|
66
|
-
const node = graph.findNode(
|
|
67
|
-
if (!node &&
|
|
68
|
+
const node = graph.findNode(active[0]);
|
|
69
|
+
if (!node && active[0].length === FQ_ID_LENGTH) {
|
|
68
70
|
const timeout = setTimeout(async () => {
|
|
69
|
-
const node = graph.findNode(
|
|
71
|
+
const node = graph.findNode(active[0]);
|
|
70
72
|
if (!node) {
|
|
71
|
-
await dispatch(createIntent(SpaceAction.WaitForObject, { id:
|
|
73
|
+
await dispatch(createIntent(SpaceAction.WaitForObject, { id: active[0] }));
|
|
72
74
|
}
|
|
73
75
|
}, WAIT_FOR_OBJECT_TIMEOUT);
|
|
74
76
|
|
|
@@ -102,17 +104,14 @@ export default async (context: PluginsContext) => {
|
|
|
102
104
|
// Broadcast active node to other peers in the space.
|
|
103
105
|
subscriptions.add(
|
|
104
106
|
scheduledEffect(
|
|
105
|
-
() => ({
|
|
106
|
-
|
|
107
|
-
closed: [...location.closed],
|
|
108
|
-
}),
|
|
109
|
-
({ open, closed }) => {
|
|
107
|
+
() => ({ current: attention.current, active: layout.active, inactive: layout.inactive }),
|
|
108
|
+
({ current, active, inactive }) => {
|
|
110
109
|
const send = () => {
|
|
111
110
|
const spaces = client.spaces.get();
|
|
112
111
|
const identity = client.halo.identity.get();
|
|
113
|
-
if (identity
|
|
112
|
+
if (identity) {
|
|
114
113
|
// Group parts by space for efficient messaging.
|
|
115
|
-
const idsBySpace = reduceGroupBy(
|
|
114
|
+
const idsBySpace = reduceGroupBy(active, (id) => {
|
|
116
115
|
try {
|
|
117
116
|
const [spaceId] = parseFullyQualifiedId(id);
|
|
118
117
|
return spaceId;
|
|
@@ -121,7 +120,7 @@ export default async (context: PluginsContext) => {
|
|
|
121
120
|
}
|
|
122
121
|
});
|
|
123
122
|
|
|
124
|
-
const removedBySpace = reduceGroupBy(
|
|
123
|
+
const removedBySpace = reduceGroupBy(inactive, (id) => {
|
|
125
124
|
try {
|
|
126
125
|
const [spaceId] = parseFullyQualifiedId(id);
|
|
127
126
|
return spaceId;
|
|
@@ -147,7 +146,7 @@ export default async (context: PluginsContext) => {
|
|
|
147
146
|
void space
|
|
148
147
|
.postMessage('viewing', {
|
|
149
148
|
identityKey: identity.identityKey.toHex(),
|
|
150
|
-
attended:
|
|
149
|
+
attended: current,
|
|
151
150
|
added,
|
|
152
151
|
removed,
|
|
153
152
|
})
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { CheckCircle, CircleDashed, CircleNotch } from '@phosphor-icons/react';
|
|
6
6
|
import React, { useCallback, useEffect, useState } from 'react';
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import { createIntent, LayoutAction, useIntentDispatcher, useLayout } from '@dxos/app-framework';
|
|
9
9
|
import { useClient } from '@dxos/react-client';
|
|
10
10
|
import { Filter, fullyQualifiedId, useQuery } from '@dxos/react-client/echo';
|
|
11
11
|
import { Button, Toast, useTranslation } from '@dxos/react-ui';
|
|
@@ -23,7 +23,7 @@ export const AwaitingObject = ({ id }: { id: string }) => {
|
|
|
23
23
|
const [found, setFound] = useState(false);
|
|
24
24
|
const { t } = useTranslation(SPACE_PLUGIN);
|
|
25
25
|
const { dispatchPromise: dispatch } = useIntentDispatcher();
|
|
26
|
-
const
|
|
26
|
+
const layout = useLayout();
|
|
27
27
|
|
|
28
28
|
const client = useClient();
|
|
29
29
|
const objects = useQuery(client.spaces, Filter.all());
|
|
@@ -44,11 +44,11 @@ export const AwaitingObject = ({ id }: { id: string }) => {
|
|
|
44
44
|
if (objects.findIndex((object) => fullyQualifiedId(object) === id) > -1) {
|
|
45
45
|
setFound(true);
|
|
46
46
|
|
|
47
|
-
if (
|
|
47
|
+
if (layout.active.includes(id)) {
|
|
48
48
|
setOpen(false);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
-
}, [id, objects,
|
|
51
|
+
}, [id, objects, layout]);
|
|
52
52
|
|
|
53
53
|
const handleClose = useCallback(
|
|
54
54
|
async () => dispatch(createIntent(SpaceAction.WaitForObject, { id: undefined })),
|
|
@@ -56,7 +56,7 @@ export const AwaitingObject = ({ id }: { id: string }) => {
|
|
|
56
56
|
);
|
|
57
57
|
|
|
58
58
|
const handleNavigate = useCallback(() => {
|
|
59
|
-
void dispatch(createIntent(
|
|
59
|
+
void dispatch(createIntent(LayoutAction.Open, { part: 'main', subject: [id] }));
|
|
60
60
|
void handleClose();
|
|
61
61
|
}, [id, handleClose, dispatch]);
|
|
62
62
|
|
|
@@ -15,17 +15,24 @@ export type BaseObjectSettingsProps = {
|
|
|
15
15
|
|
|
16
16
|
export const BaseObjectSettings = ({ object }: BaseObjectSettingsProps) => {
|
|
17
17
|
const { t } = useTranslation(SPACE_PLUGIN);
|
|
18
|
+
const inputRef = React.useRef<HTMLInputElement>(null);
|
|
18
19
|
// TODO(burdon): Standardize forms.
|
|
19
20
|
return (
|
|
20
21
|
<div role='form' className='flex flex-col w-full p-2 gap-1'>
|
|
21
22
|
<Input.Root>
|
|
22
23
|
<Input.Label>{t('name label')}</Input.Label>
|
|
23
24
|
<Input.TextInput
|
|
25
|
+
ref={inputRef}
|
|
24
26
|
placeholder={t('name placeholder')}
|
|
25
27
|
value={object.name ?? ''}
|
|
26
28
|
onChange={(event) => {
|
|
27
29
|
object.name = event.target.value;
|
|
28
30
|
}}
|
|
31
|
+
onKeyDown={(event) => {
|
|
32
|
+
if (event.key === 'Enter') {
|
|
33
|
+
inputRef.current?.blur();
|
|
34
|
+
}
|
|
35
|
+
}}
|
|
29
36
|
/>
|
|
30
37
|
</Input.Root>
|
|
31
38
|
</div>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { pipe } from 'effect';
|
|
6
6
|
import React, { useCallback, useRef } from 'react';
|
|
7
7
|
|
|
8
|
-
import { chain, createIntent,
|
|
8
|
+
import { chain, createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';
|
|
9
9
|
import { useClient } from '@dxos/react-client';
|
|
10
10
|
import {
|
|
11
11
|
getSpace,
|
|
@@ -71,7 +71,7 @@ export const CreateObjectDialog = ({
|
|
|
71
71
|
const addObjectIntent = createIntent(SpaceAction.AddObject, { target, object });
|
|
72
72
|
const shouldNavigate = _shouldNavigate ?? (() => true);
|
|
73
73
|
if (shouldNavigate(object)) {
|
|
74
|
-
await dispatch(pipe(addObjectIntent, chain(
|
|
74
|
+
await dispatch(pipe(addObjectIntent, chain(LayoutAction.Open, { part: 'main' })));
|
|
75
75
|
} else {
|
|
76
76
|
await dispatch(addObjectIntent);
|
|
77
77
|
}
|
|
@@ -83,7 +83,7 @@ export const CreateObjectDialog = ({
|
|
|
83
83
|
return (
|
|
84
84
|
// TODO(wittjosiah): The tablist dialog pattern is copied from @dxos/plugin-manager.
|
|
85
85
|
// Consider factoring it out to the tabs package.
|
|
86
|
-
<Dialog.Content classNames='p-0 bs-content
|
|
86
|
+
<Dialog.Content classNames='p-0 bs-content max-bs-full md:max-is-[40rem] overflow-hidden'>
|
|
87
87
|
<div role='none' className='flex justify-between pbs-2 pis-2 pie-2 @md:pbs-4 @md:pis-4 @md:pie-4'>
|
|
88
88
|
<Dialog.Title>{t('create object dialog title')}</Dialog.Title>
|
|
89
89
|
<Dialog.Close asChild>
|
|
@@ -92,18 +92,18 @@ export const CreateObjectDialog = ({
|
|
|
92
92
|
</Button>
|
|
93
93
|
</Dialog.Close>
|
|
94
94
|
</div>
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
95
|
+
|
|
96
|
+
<CreateObjectPanel
|
|
97
|
+
classNames='p-4'
|
|
98
|
+
schemas={schemas}
|
|
99
|
+
spaces={spaces}
|
|
100
|
+
target={target}
|
|
101
|
+
typename={typename}
|
|
102
|
+
name={name}
|
|
103
|
+
defaultSpaceId={client.spaces.default.id}
|
|
104
|
+
resolve={resolve}
|
|
105
|
+
onCreateObject={handleCreateObject}
|
|
106
|
+
/>
|
|
107
107
|
</Dialog.Content>
|
|
108
108
|
);
|
|
109
109
|
};
|