@dxos/plugin-space 0.7.5-main.2567c87 → 0.7.5-main.5ae2ba8
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-F6XSETHX.mjs → app-graph-builder-MGK5HWPZ.mjs} +26 -103
- package/dist/lib/browser/app-graph-builder-MGK5HWPZ.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-FYJE23GN.mjs → app-graph-serializer-FOWFLYGU.mjs} +5 -5
- package/dist/lib/browser/{chunk-IZ7QKQ2E.mjs → chunk-23RVI5FZ.mjs} +27 -11
- package/dist/lib/browser/chunk-23RVI5FZ.mjs.map +7 -0
- package/dist/lib/browser/{chunk-UH5P4UL3.mjs → chunk-NU7WDVGN.mjs} +4 -2
- package/dist/lib/browser/chunk-NU7WDVGN.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-XXD33C4E.mjs → chunk-S6B7627U.mjs} +486 -349
- package/dist/lib/browser/chunk-S6B7627U.mjs.map +7 -0
- package/dist/lib/browser/{chunk-T36CIHPG.mjs → chunk-UDWHTKB5.mjs} +7 -4
- package/dist/lib/browser/chunk-UDWHTKB5.mjs.map +7 -0
- package/dist/lib/browser/{chunk-SSJ772GK.mjs → chunk-ULA2UQJ4.mjs} +18 -5
- package/dist/lib/browser/chunk-ULA2UQJ4.mjs.map +7 -0
- package/dist/lib/browser/{identity-created-4Q4PFIC5.mjs → identity-created-FYGS6TBH.mjs} +3 -3
- package/dist/lib/browser/index.mjs +59 -24
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/intent-resolver-QVR4MSJV.mjs +555 -0
- package/dist/lib/browser/intent-resolver-QVR4MSJV.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-root-BDOPFJGJ.mjs → react-root-IP2ZB245.mjs} +6 -6
- package/dist/lib/browser/{react-surface-EGOL2JBL.mjs → react-surface-BT3EHB6V.mjs} +36 -49
- package/dist/lib/browser/react-surface-BT3EHB6V.mjs.map +7 -0
- package/dist/lib/browser/schema-5W3DSY2E.mjs +24 -0
- package/dist/lib/browser/schema-5W3DSY2E.mjs.map +7 -0
- package/dist/lib/browser/{settings-WF67QZSD.mjs → settings-PHPCXX33.mjs} +3 -3
- package/dist/lib/browser/{spaces-ready-WVU7US3C.mjs → spaces-ready-K47RR7N2.mjs} +31 -32
- package/dist/lib/browser/spaces-ready-K47RR7N2.mjs.map +7 -0
- package/dist/lib/browser/{state-MS4KYJWI.mjs → state-INJ63O57.mjs} +3 -3
- package/dist/lib/browser/types/index.mjs +6 -4
- package/dist/lib/node/{app-graph-builder-GKLVZ4PM.cjs → app-graph-builder-ZIUBXRPA.cjs} +59 -136
- package/dist/lib/node/app-graph-builder-ZIUBXRPA.cjs.map +7 -0
- package/dist/lib/node/{app-graph-serializer-RMTU5YSC.cjs → app-graph-serializer-VQOGHKXL.cjs} +21 -21
- package/dist/lib/node/{chunk-AJRP7AD6.cjs → chunk-N2FS7PRA.cjs} +552 -414
- package/dist/lib/node/chunk-N2FS7PRA.cjs.map +7 -0
- package/dist/lib/node/{chunk-5D4RWKTV.cjs → chunk-OVGKWJOC.cjs} +78 -62
- package/dist/lib/node/chunk-OVGKWJOC.cjs.map +7 -0
- package/dist/lib/node/{chunk-UENH2YBM.cjs → chunk-U6DYXAR3.cjs} +12 -9
- package/dist/lib/node/chunk-U6DYXAR3.cjs.map +7 -0
- package/dist/lib/node/{chunk-YCBBGTFD.cjs → chunk-WAJKBO3J.cjs} +25 -11
- package/dist/lib/node/chunk-WAJKBO3J.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/{chunk-56NGXG2A.cjs → chunk-YZKNRFHU.cjs} +10 -8
- package/dist/lib/node/chunk-YZKNRFHU.cjs.map +7 -0
- package/dist/lib/node/{identity-created-QQWX7WX3.cjs → identity-created-AXI64BLE.cjs} +7 -7
- package/dist/lib/node/index.cjs +132 -98
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/intent-resolver-MLENGECT.cjs +553 -0
- package/dist/lib/node/intent-resolver-MLENGECT.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-root-ZTR2J2I3.cjs → react-root-3OX5Z5CX.cjs} +12 -12
- package/dist/lib/node/{react-surface-75KRPQYT.cjs → react-surface-5NYCMXSM.cjs} +77 -89
- package/dist/lib/node/react-surface-5NYCMXSM.cjs.map +7 -0
- package/dist/lib/node/schema-YN7WVFRX.cjs +40 -0
- package/dist/lib/node/schema-YN7WVFRX.cjs.map +7 -0
- package/dist/lib/node/{settings-KOVSPA3S.cjs → settings-5QYFWNH7.cjs} +8 -8
- package/dist/lib/node/{spaces-ready-ILVGUHJH.cjs → spaces-ready-FQNAKR7G.cjs} +39 -40
- package/dist/lib/node/spaces-ready-FQNAKR7G.cjs.map +7 -0
- package/dist/lib/node/{state-4UIOUKLJ.cjs → state-57UE3DYE.cjs} +8 -8
- package/dist/lib/node/types/index.cjs +19 -17
- package/dist/lib/node/types/index.cjs.map +2 -2
- package/dist/lib/node-esm/{app-graph-builder-NEHQ5Z63.mjs → app-graph-builder-TERVM2SL.mjs} +26 -103
- package/dist/lib/node-esm/app-graph-builder-TERVM2SL.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-UWWS5OVC.mjs → app-graph-serializer-GZRSWHEN.mjs} +5 -5
- package/dist/lib/node-esm/{chunk-E5DWIQ3N.mjs → chunk-2TQ2AJEZ.mjs} +7 -4
- package/dist/lib/node-esm/chunk-2TQ2AJEZ.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-375RB3CZ.mjs → chunk-6RSVVEPS.mjs} +4 -2
- package/dist/lib/node-esm/chunk-6RSVVEPS.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-GVOPDPS2.mjs → chunk-DIKRH2IK.mjs} +486 -349
- package/dist/lib/node-esm/chunk-DIKRH2IK.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-5QMAPAZD.mjs → chunk-PGH5L7MV.mjs} +27 -11
- package/dist/lib/node-esm/chunk-PGH5L7MV.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-HTBGWQEU.mjs → chunk-TRNZQEEN.mjs} +18 -5
- package/dist/lib/node-esm/chunk-TRNZQEEN.mjs.map +7 -0
- package/dist/lib/node-esm/{identity-created-HMNY2MPB.mjs → identity-created-3CGEXNPO.mjs} +3 -3
- package/dist/lib/node-esm/index.mjs +59 -24
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/intent-resolver-BLW4RM6X.mjs +556 -0
- package/dist/lib/node-esm/intent-resolver-BLW4RM6X.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-OUPJA4RY.mjs → react-root-7XXGP56B.mjs} +6 -6
- package/dist/lib/node-esm/{react-surface-7EVWCKIP.mjs → react-surface-R2ECJSFB.mjs} +36 -49
- package/dist/lib/node-esm/react-surface-R2ECJSFB.mjs.map +7 -0
- package/dist/lib/node-esm/schema-LOR2EVGY.mjs +25 -0
- package/dist/lib/node-esm/schema-LOR2EVGY.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-EDK6WI3V.mjs → settings-H6MXTEQM.mjs} +3 -3
- package/dist/lib/node-esm/{spaces-ready-CH3W7OGN.mjs → spaces-ready-HKAQG5SA.mjs} +31 -32
- package/dist/lib/node-esm/spaces-ready-HKAQG5SA.mjs.map +7 -0
- package/dist/lib/node-esm/{state-BMISGQ2O.mjs → state-VYA6OFHD.mjs} +3 -3
- package/dist/lib/node-esm/types/index.mjs +6 -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 +110 -110
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +8 -1
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +123 -121
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +2 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/schema.d.ts +4 -0
- package/dist/types/src/capabilities/schema.d.ts.map +1 -0
- package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
- package/dist/types/src/components/AdvancedObjectSettings/AdvancedObjectSettings.d.ts +1 -2
- package/dist/types/src/components/AdvancedObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
- package/dist/types/src/components/AdvancedObjectSettings/ForeignKeys.d.ts +1 -2
- package/dist/types/src/components/AdvancedObjectSettings/ForeignKeys.d.ts.map +1 -1
- package/dist/types/src/components/AwaitingObject.d.ts +1 -2
- package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
- package/dist/types/src/components/BaseObjectSettings.d.ts +1 -2
- package/dist/types/src/components/BaseObjectSettings.d.ts.map +1 -1
- package/dist/types/src/components/CollectionMain.d.ts +1 -2
- package/dist/types/src/components/CollectionMain.d.ts.map +1 -1
- package/dist/types/src/components/CollectionSection.d.ts +1 -2
- package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +2 -4
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +8 -9
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -2
- package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
- package/dist/types/src/components/JoinDialog.d.ts +1 -2
- package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
- package/dist/types/src/components/MenuFooter.d.ts +1 -2
- package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
- package/dist/types/src/components/PersistenceStatus.d.ts +1 -2
- package/dist/types/src/components/PersistenceStatus.d.ts.map +1 -1
- package/dist/types/src/components/PopoverAddSpace.d.ts +3 -0
- package/dist/types/src/components/PopoverAddSpace.d.ts.map +1 -0
- package/dist/types/src/components/PopoverRenameObject.d.ts +1 -2
- package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
- package/dist/types/src/components/PopoverRenameSpace.d.ts +1 -2
- package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
- package/dist/types/src/components/ShareSpaceButton.d.ts +2 -3
- package/dist/types/src/components/ShareSpaceButton.d.ts.map +1 -1
- package/dist/types/src/components/SpacePluginSettings.d.ts +1 -2
- package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
- package/dist/types/src/components/SpacePresence.d.ts +4 -5
- package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
- package/dist/types/src/components/SpacePresence.stories.d.ts +2 -3
- package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsDialog.d.ts +1 -2
- package/dist/types/src/components/SpaceSettings/SpaceSettingsDialog.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsPanel.d.ts +3 -5
- package/dist/types/src/components/SpaceSettings/SpaceSettingsPanel.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsPanel.stories.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/InlineSyncStatus.d.ts +1 -2
- package/dist/types/src/components/SyncStatus/InlineSyncStatus.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/Space.d.ts +2 -3
- package/dist/types/src/components/SyncStatus/Space.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +3 -4
- package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +1 -0
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/events.d.ts +4 -0
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +1 -0
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +9 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/collection.d.ts +2 -2
- package/dist/types/src/types/thread.d.ts +34 -34
- package/dist/types/src/types/types.d.ts +37 -12
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +3 -2
- package/dist/types/src/util.d.ts.map +1 -1
- package/package.json +41 -38
- package/src/SpacePlugin.tsx +44 -15
- package/src/capabilities/app-graph-builder.ts +19 -92
- package/src/capabilities/capabilities.ts +7 -2
- package/src/capabilities/index.ts +1 -0
- package/src/capabilities/intent-resolver.ts +428 -312
- package/src/capabilities/react-surface.tsx +32 -56
- package/src/capabilities/schema.ts +27 -0
- 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.stories.tsx +1 -3
- package/src/components/CreateDialog/CreateObjectDialog.tsx +42 -34
- package/src/components/CreateDialog/CreateObjectPanel.tsx +126 -129
- package/src/components/CreateDialog/CreateSpaceDialog.tsx +18 -9
- package/src/components/JoinDialog.tsx +27 -19
- package/src/components/PopoverAddSpace.tsx +46 -0
- 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 +30 -8
- package/src/components/SyncStatus/InlineSyncStatus.tsx +2 -2
- package/src/components/SyncStatus/SyncStatus.tsx +2 -1
- package/src/components/index.ts +1 -0
- package/src/events.ts +6 -0
- package/src/index.ts +1 -1
- package/src/meta.ts +1 -0
- package/src/translations.ts +3 -0
- package/src/types/types.ts +23 -4
- package/src/util.tsx +16 -6
- package/dist/lib/browser/app-graph-builder-F6XSETHX.mjs.map +0 -7
- package/dist/lib/browser/chunk-IZ7QKQ2E.mjs.map +0 -7
- package/dist/lib/browser/chunk-SSJ772GK.mjs.map +0 -7
- package/dist/lib/browser/chunk-T36CIHPG.mjs.map +0 -7
- package/dist/lib/browser/chunk-UH5P4UL3.mjs.map +0 -7
- package/dist/lib/browser/chunk-XXD33C4E.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-XRZYCXXX.mjs +0 -459
- package/dist/lib/browser/intent-resolver-XRZYCXXX.mjs.map +0 -7
- package/dist/lib/browser/react-surface-EGOL2JBL.mjs.map +0 -7
- package/dist/lib/browser/spaces-ready-WVU7US3C.mjs.map +0 -7
- package/dist/lib/node/app-graph-builder-GKLVZ4PM.cjs.map +0 -7
- package/dist/lib/node/chunk-56NGXG2A.cjs.map +0 -7
- package/dist/lib/node/chunk-5D4RWKTV.cjs.map +0 -7
- package/dist/lib/node/chunk-AJRP7AD6.cjs.map +0 -7
- package/dist/lib/node/chunk-UENH2YBM.cjs.map +0 -7
- package/dist/lib/node/chunk-YCBBGTFD.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-3NI6AUAI.cjs +0 -458
- package/dist/lib/node/intent-resolver-3NI6AUAI.cjs.map +0 -7
- package/dist/lib/node/react-surface-75KRPQYT.cjs.map +0 -7
- package/dist/lib/node/spaces-ready-ILVGUHJH.cjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-NEHQ5Z63.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-375RB3CZ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-5QMAPAZD.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-E5DWIQ3N.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-GVOPDPS2.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HTBGWQEU.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-P5EVBOGP.mjs +0 -460
- package/dist/lib/node-esm/intent-resolver-P5EVBOGP.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-7EVWCKIP.mjs.map +0 -7
- package/dist/lib/node-esm/spaces-ready-CH3W7OGN.mjs.map +0 -7
- /package/dist/lib/browser/{app-graph-serializer-FYJE23GN.mjs.map → app-graph-serializer-FOWFLYGU.mjs.map} +0 -0
- /package/dist/lib/browser/{identity-created-4Q4PFIC5.mjs.map → identity-created-FYGS6TBH.mjs.map} +0 -0
- /package/dist/lib/browser/{react-root-BDOPFJGJ.mjs.map → react-root-IP2ZB245.mjs.map} +0 -0
- /package/dist/lib/browser/{settings-WF67QZSD.mjs.map → settings-PHPCXX33.mjs.map} +0 -0
- /package/dist/lib/browser/{state-MS4KYJWI.mjs.map → state-INJ63O57.mjs.map} +0 -0
- /package/dist/lib/node/{app-graph-serializer-RMTU5YSC.cjs.map → app-graph-serializer-VQOGHKXL.cjs.map} +0 -0
- /package/dist/lib/node/{identity-created-QQWX7WX3.cjs.map → identity-created-AXI64BLE.cjs.map} +0 -0
- /package/dist/lib/node/{react-root-ZTR2J2I3.cjs.map → react-root-3OX5Z5CX.cjs.map} +0 -0
- /package/dist/lib/node/{settings-KOVSPA3S.cjs.map → settings-5QYFWNH7.cjs.map} +0 -0
- /package/dist/lib/node/{state-4UIOUKLJ.cjs.map → state-57UE3DYE.cjs.map} +0 -0
- /package/dist/lib/node-esm/{app-graph-serializer-UWWS5OVC.mjs.map → app-graph-serializer-GZRSWHEN.mjs.map} +0 -0
- /package/dist/lib/node-esm/{identity-created-HMNY2MPB.mjs.map → identity-created-3CGEXNPO.mjs.map} +0 -0
- /package/dist/lib/node-esm/{react-root-OUPJA4RY.mjs.map → react-root-7XXGP56B.mjs.map} +0 -0
- /package/dist/lib/node-esm/{settings-EDK6WI3V.mjs.map → settings-H6MXTEQM.mjs.map} +0 -0
- /package/dist/lib/node-esm/{state-BMISGQ2O.mjs.map → state-VYA6OFHD.mjs.map} +0 -0
package/src/SpacePlugin.tsx
CHANGED
|
@@ -12,10 +12,12 @@ import {
|
|
|
12
12
|
Events,
|
|
13
13
|
oneOf,
|
|
14
14
|
} from '@dxos/app-framework';
|
|
15
|
+
import { S } from '@dxos/echo-schema';
|
|
15
16
|
import { RefArray } from '@dxos/live-object';
|
|
16
17
|
import { AttentionEvents } from '@dxos/plugin-attention';
|
|
17
|
-
import {
|
|
18
|
-
import { DeckCapabilities } from '@dxos/plugin-deck';
|
|
18
|
+
import { ClientEvents } from '@dxos/plugin-client';
|
|
19
|
+
import { DeckCapabilities, DeckEvents } from '@dxos/plugin-deck';
|
|
20
|
+
import { isEchoObject, getSpace } from '@dxos/react-client/echo';
|
|
19
21
|
import { osTranslations } from '@dxos/shell/react';
|
|
20
22
|
|
|
21
23
|
import {
|
|
@@ -25,6 +27,8 @@ import {
|
|
|
25
27
|
IntentResolver,
|
|
26
28
|
ReactRoot,
|
|
27
29
|
ReactSurface,
|
|
30
|
+
Schema,
|
|
31
|
+
SpaceCapabilities,
|
|
28
32
|
SpaceSettings,
|
|
29
33
|
SpacesReady,
|
|
30
34
|
SpaceState,
|
|
@@ -32,7 +36,7 @@ import {
|
|
|
32
36
|
import { SpaceEvents } from './events';
|
|
33
37
|
import { meta, SPACE_PLUGIN } from './meta';
|
|
34
38
|
import translations from './translations';
|
|
35
|
-
import { CollectionAction, CollectionType } from './types';
|
|
39
|
+
import { CollectionAction, CollectionType, defineObjectForm } from './types';
|
|
36
40
|
|
|
37
41
|
export type SpacePluginOptions = {
|
|
38
42
|
/**
|
|
@@ -44,11 +48,17 @@ export type SpacePluginOptions = {
|
|
|
44
48
|
* Query parameter for the invitation code.
|
|
45
49
|
*/
|
|
46
50
|
invitationParam?: string;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Whether to send observability events.
|
|
54
|
+
*/
|
|
55
|
+
observability?: boolean;
|
|
47
56
|
};
|
|
48
57
|
|
|
49
58
|
export const SpacePlugin = ({
|
|
50
59
|
invitationUrl = window.location.origin,
|
|
51
60
|
invitationParam = 'spaceInvitationCode',
|
|
61
|
+
observability = true,
|
|
52
62
|
}: SpacePluginOptions = {}) => {
|
|
53
63
|
const createInvitationUrl = (invitationCode: string) => {
|
|
54
64
|
const baseUrl = new URL(invitationUrl);
|
|
@@ -59,7 +69,10 @@ export const SpacePlugin = ({
|
|
|
59
69
|
return definePlugin(meta, [
|
|
60
70
|
defineModule({
|
|
61
71
|
id: `${meta.id}/module/state`,
|
|
62
|
-
|
|
72
|
+
// TODO(wittjosiah): Does not integrate with settings store.
|
|
73
|
+
// Should this be a different event?
|
|
74
|
+
// Should settings store be renamed to be more generic?
|
|
75
|
+
activatesOn: oneOf(Events.SetupSettings, Events.SetupAppGraph),
|
|
63
76
|
activatesAfter: [SpaceEvents.StateReady],
|
|
64
77
|
activate: SpaceState,
|
|
65
78
|
}),
|
|
@@ -75,12 +88,11 @@ export const SpacePlugin = ({
|
|
|
75
88
|
}),
|
|
76
89
|
defineModule({
|
|
77
90
|
id: `${meta.id}/module/metadata`,
|
|
78
|
-
activatesOn:
|
|
91
|
+
activatesOn: Events.SetupMetadata,
|
|
79
92
|
activate: () =>
|
|
80
93
|
contributes(Capabilities.Metadata, {
|
|
81
94
|
id: CollectionType.typename,
|
|
82
95
|
metadata: {
|
|
83
|
-
createObject: (props: { name?: string }) => createIntent(CollectionAction.Create, props),
|
|
84
96
|
placeholder: ['unnamed collection label', { ns: SPACE_PLUGIN }],
|
|
85
97
|
icon: 'ph--cards-three--regular',
|
|
86
98
|
// TODO(wittjosiah): Move out of metadata.
|
|
@@ -89,20 +101,36 @@ export const SpacePlugin = ({
|
|
|
89
101
|
},
|
|
90
102
|
}),
|
|
91
103
|
}),
|
|
104
|
+
defineModule({
|
|
105
|
+
id: `${meta.id}/module/object-form`,
|
|
106
|
+
activatesOn: ClientEvents.SetupSchema,
|
|
107
|
+
activate: () =>
|
|
108
|
+
contributes(
|
|
109
|
+
SpaceCapabilities.ObjectForm,
|
|
110
|
+
defineObjectForm({
|
|
111
|
+
objectSchema: CollectionType,
|
|
112
|
+
formSchema: S.Struct({ name: S.optional(S.String) }),
|
|
113
|
+
getIntent: (props) => createIntent(CollectionAction.Create, props),
|
|
114
|
+
}),
|
|
115
|
+
),
|
|
116
|
+
}),
|
|
92
117
|
defineModule({
|
|
93
118
|
id: `${meta.id}/module/complementary-panel`,
|
|
94
|
-
activatesOn:
|
|
119
|
+
activatesOn: DeckEvents.SetupComplementaryPanels,
|
|
95
120
|
activate: () =>
|
|
96
121
|
contributes(DeckCapabilities.ComplementaryPanel, {
|
|
97
122
|
id: 'settings',
|
|
98
123
|
label: ['settings panel label', { ns: SPACE_PLUGIN }],
|
|
99
|
-
icon: 'ph--
|
|
124
|
+
icon: 'ph--sliders--regular',
|
|
125
|
+
position: 'hoist',
|
|
126
|
+
filter: (node) => isEchoObject(node.data) && !!getSpace(node.data),
|
|
100
127
|
}),
|
|
101
128
|
}),
|
|
102
129
|
defineModule({
|
|
103
130
|
id: `${meta.id}/module/schema`,
|
|
104
|
-
activatesOn: ClientEvents.
|
|
105
|
-
|
|
131
|
+
activatesOn: ClientEvents.ClientReady,
|
|
132
|
+
activatesBefore: [ClientEvents.SetupSchema],
|
|
133
|
+
activate: Schema,
|
|
106
134
|
}),
|
|
107
135
|
defineModule({
|
|
108
136
|
id: `${meta.id}/module/react-root`,
|
|
@@ -111,13 +139,15 @@ export const SpacePlugin = ({
|
|
|
111
139
|
}),
|
|
112
140
|
defineModule({
|
|
113
141
|
id: `${meta.id}/module/react-surface`,
|
|
114
|
-
activatesOn: Events.
|
|
142
|
+
activatesOn: Events.SetupReactSurface,
|
|
143
|
+
// TODO(wittjosiah): Should occur before the settings dialog is loaded when surfaces activation is more granular.
|
|
144
|
+
activatesBefore: [SpaceEvents.SetupSettingsPanel],
|
|
115
145
|
activate: () => ReactSurface({ createInvitationUrl }),
|
|
116
146
|
}),
|
|
117
147
|
defineModule({
|
|
118
148
|
id: `${meta.id}/module/intent-resolver`,
|
|
119
|
-
activatesOn: Events.
|
|
120
|
-
activate: (context) => IntentResolver({ createInvitationUrl, context }),
|
|
149
|
+
activatesOn: Events.SetupIntentResolver,
|
|
150
|
+
activate: (context) => IntentResolver({ createInvitationUrl, context, observability }),
|
|
121
151
|
}),
|
|
122
152
|
defineModule({
|
|
123
153
|
id: `${meta.id}/module/app-graph-builder`,
|
|
@@ -127,7 +157,7 @@ export const SpacePlugin = ({
|
|
|
127
157
|
// TODO(wittjosiah): This could probably be deferred.
|
|
128
158
|
defineModule({
|
|
129
159
|
id: `${meta.id}/module/app-graph-serializer`,
|
|
130
|
-
activatesOn: Events.
|
|
160
|
+
activatesOn: Events.AppGraphReady,
|
|
131
161
|
activate: AppGraphSerializer,
|
|
132
162
|
}),
|
|
133
163
|
defineModule({
|
|
@@ -141,7 +171,6 @@ export const SpacePlugin = ({
|
|
|
141
171
|
activatesOn: allOf(
|
|
142
172
|
Events.DispatcherReady,
|
|
143
173
|
Events.LayoutReady,
|
|
144
|
-
Events.LocationReady,
|
|
145
174
|
Events.AppGraphReady,
|
|
146
175
|
AttentionEvents.AttentionReady,
|
|
147
176
|
SpaceEvents.StateReady,
|
|
@@ -11,17 +11,16 @@ import {
|
|
|
11
11
|
isEchoObject,
|
|
12
12
|
isSpace,
|
|
13
13
|
OBJECT_ID_LENGTH,
|
|
14
|
-
parseId,
|
|
15
14
|
type ReactiveEchoObject,
|
|
16
15
|
SPACE_ID_LENGTH,
|
|
17
16
|
SpaceState,
|
|
18
17
|
type Space,
|
|
19
18
|
} from '@dxos/client/echo';
|
|
20
|
-
import {
|
|
19
|
+
import { isDeleted } from '@dxos/live-object';
|
|
21
20
|
import { log } from '@dxos/log';
|
|
22
21
|
import { ClientCapabilities } from '@dxos/plugin-client';
|
|
23
|
-
import { createExtension, toSignal, type Node } from '@dxos/plugin-graph';
|
|
24
|
-
import {
|
|
22
|
+
import { createExtension, toSignal, type Node, type InvokeParams } from '@dxos/plugin-graph';
|
|
23
|
+
import { isNonNullable } from '@dxos/util';
|
|
25
24
|
|
|
26
25
|
import { SpaceCapabilities } from './capabilities';
|
|
27
26
|
import { SPACE_PLUGIN } from '../meta';
|
|
@@ -46,8 +45,10 @@ export default (context: PluginsContext) => {
|
|
|
46
45
|
cacheable: ['label', 'role'],
|
|
47
46
|
properties: {
|
|
48
47
|
label: ['spaces label', { ns: SPACE_PLUGIN }],
|
|
48
|
+
icon: 'ph--planet--regular',
|
|
49
49
|
testId: 'spacePlugin.spaces',
|
|
50
50
|
role: 'branch',
|
|
51
|
+
disposition: 'collection',
|
|
51
52
|
disabled: true,
|
|
52
53
|
childrenPersistenceClass: 'echo',
|
|
53
54
|
onRearrangeChildren: async (nextOrder: Space[]) => {
|
|
@@ -79,33 +80,21 @@ export default (context: PluginsContext) => {
|
|
|
79
80
|
// Primary actions.
|
|
80
81
|
createExtension({
|
|
81
82
|
id: `${SPACE_PLUGIN}/primary-actions`,
|
|
82
|
-
|
|
83
|
+
position: 'hoist',
|
|
83
84
|
filter: (node): node is Node<null> => node.id === 'root',
|
|
84
85
|
actions: () => [
|
|
85
86
|
{
|
|
86
|
-
id: SpaceAction.
|
|
87
|
-
data: async () => {
|
|
87
|
+
id: SpaceAction.AddSpace._tag,
|
|
88
|
+
data: async (params: InvokeParams) => {
|
|
88
89
|
const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);
|
|
89
|
-
await dispatch(createIntent(SpaceAction.
|
|
90
|
+
await dispatch(createIntent(SpaceAction.AddSpace));
|
|
90
91
|
},
|
|
91
92
|
properties: {
|
|
92
|
-
label: ['
|
|
93
|
+
label: ['add space label', { ns: SPACE_PLUGIN }],
|
|
93
94
|
icon: 'ph--plus--regular',
|
|
94
|
-
testId: 'spacePlugin.
|
|
95
|
-
disposition: 'item',
|
|
96
|
-
},
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
id: SpaceAction.Join._tag,
|
|
100
|
-
data: async () => {
|
|
101
|
-
const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);
|
|
102
|
-
await dispatch(createIntent(SpaceAction.Join));
|
|
103
|
-
},
|
|
104
|
-
properties: {
|
|
105
|
-
label: ['join space label', { ns: SPACE_PLUGIN }],
|
|
106
|
-
icon: 'ph--sign-in--regular',
|
|
107
|
-
testId: 'spacePlugin.joinSpace',
|
|
95
|
+
testId: 'spacePlugin.addSpace',
|
|
108
96
|
disposition: 'item',
|
|
97
|
+
position: 'fallback',
|
|
109
98
|
},
|
|
110
99
|
},
|
|
111
100
|
],
|
|
@@ -114,7 +103,7 @@ export default (context: PluginsContext) => {
|
|
|
114
103
|
// Create spaces group node.
|
|
115
104
|
createExtension({
|
|
116
105
|
id: `${SPACE_PLUGIN}/root`,
|
|
117
|
-
|
|
106
|
+
position: 'hoist',
|
|
118
107
|
filter: (node): node is Node<null> => node.id === 'root',
|
|
119
108
|
connector: () => [spacesNode],
|
|
120
109
|
resolver: ({ id }) => (id === SPACES ? spacesNode : undefined),
|
|
@@ -195,6 +184,8 @@ export default (context: PluginsContext) => {
|
|
|
195
184
|
|
|
196
185
|
if (space.state.get() === SpaceState.SPACE_INACTIVE) {
|
|
197
186
|
return false;
|
|
187
|
+
} else if (space.state.get() !== SpaceState.SPACE_READY) {
|
|
188
|
+
return undefined;
|
|
198
189
|
} else {
|
|
199
190
|
const state = context.requestCapability(SpaceCapabilities.State);
|
|
200
191
|
return constructSpaceNode({
|
|
@@ -250,9 +241,9 @@ export default (context: PluginsContext) => {
|
|
|
250
241
|
|
|
251
242
|
return collection.objects
|
|
252
243
|
.map((object) => object.target)
|
|
253
|
-
.filter(
|
|
244
|
+
.filter(isNonNullable)
|
|
254
245
|
.map((object) => createObjectNode({ object, space, resolve, navigable: state.navigableCollections }))
|
|
255
|
-
.filter(
|
|
246
|
+
.filter(isNonNullable);
|
|
256
247
|
},
|
|
257
248
|
}),
|
|
258
249
|
|
|
@@ -271,9 +262,9 @@ export default (context: PluginsContext) => {
|
|
|
271
262
|
|
|
272
263
|
return collection.objects
|
|
273
264
|
.map((object) => object.target)
|
|
274
|
-
.filter(
|
|
265
|
+
.filter(isNonNullable)
|
|
275
266
|
.map((object) => createObjectNode({ object, space, resolve, navigable: state.navigableCollections }))
|
|
276
|
-
.filter(
|
|
267
|
+
.filter(isNonNullable);
|
|
277
268
|
},
|
|
278
269
|
resolver: ({ id }) => {
|
|
279
270
|
if (id.length !== FQ_ID_LENGTH) {
|
|
@@ -324,69 +315,5 @@ export default (context: PluginsContext) => {
|
|
|
324
315
|
return constructObjectActions({ node, dispatch, navigable: state.navigableCollections });
|
|
325
316
|
},
|
|
326
317
|
}),
|
|
327
|
-
|
|
328
|
-
// Create nodes for object settings.
|
|
329
|
-
createExtension({
|
|
330
|
-
id: `${SPACE_PLUGIN}/settings-for-subject`,
|
|
331
|
-
resolver: ({ id }) => {
|
|
332
|
-
// TODO(Zan): Find util (or make one).
|
|
333
|
-
if (!id.endsWith('~settings')) {
|
|
334
|
-
return;
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
const type = 'orphan-settings-for-subject';
|
|
338
|
-
const icon = 'ph--gear--regular';
|
|
339
|
-
|
|
340
|
-
const [subjectId] = id.split('~');
|
|
341
|
-
const { spaceId, objectId } = parseId(subjectId);
|
|
342
|
-
const client = context.requestCapability(ClientCapabilities.Client);
|
|
343
|
-
const spaces = toSignal(
|
|
344
|
-
(onChange) => client.spaces.subscribe(() => onChange()).unsubscribe,
|
|
345
|
-
() => client.spaces.get(),
|
|
346
|
-
);
|
|
347
|
-
const space = spaces?.find((space) => space.id === spaceId && space.state.get() === SpaceState.SPACE_READY);
|
|
348
|
-
if (!objectId) {
|
|
349
|
-
const label = space
|
|
350
|
-
? space.properties.name || ['unnamed space label', { ns: SPACE_PLUGIN }]
|
|
351
|
-
: ['unnamed object settings label', { ns: SPACE_PLUGIN }];
|
|
352
|
-
|
|
353
|
-
// TODO(wittjosiah): Support comments for arbitrary subjects.
|
|
354
|
-
// This is to ensure that the comments panel is not stuck on an old object.
|
|
355
|
-
return {
|
|
356
|
-
id,
|
|
357
|
-
type,
|
|
358
|
-
data: null,
|
|
359
|
-
properties: {
|
|
360
|
-
icon,
|
|
361
|
-
label,
|
|
362
|
-
showResolvedThreads: false,
|
|
363
|
-
object: null,
|
|
364
|
-
space,
|
|
365
|
-
},
|
|
366
|
-
};
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
const [object] = memoizeQuery(space, { id: objectId });
|
|
370
|
-
if (!object || !subjectId) {
|
|
371
|
-
return;
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
const meta = resolve(getTypename(object) ?? '');
|
|
375
|
-
const label = meta.label?.(object) ||
|
|
376
|
-
object.name ||
|
|
377
|
-
meta.placeholder || ['unnamed object settings label', { ns: SPACE_PLUGIN }];
|
|
378
|
-
|
|
379
|
-
return {
|
|
380
|
-
id,
|
|
381
|
-
type,
|
|
382
|
-
data: null,
|
|
383
|
-
properties: {
|
|
384
|
-
icon,
|
|
385
|
-
label,
|
|
386
|
-
object,
|
|
387
|
-
},
|
|
388
|
-
};
|
|
389
|
-
},
|
|
390
|
-
}),
|
|
391
318
|
]);
|
|
392
319
|
};
|
|
@@ -2,15 +2,20 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { defineCapability } from '@dxos/app-framework';
|
|
5
|
+
import { defineCapability, type Label } from '@dxos/app-framework';
|
|
6
6
|
import { type DeepReadonly } from '@dxos/util';
|
|
7
7
|
|
|
8
8
|
import { SPACE_PLUGIN } from '../meta';
|
|
9
|
-
import { type PluginState } from '../types';
|
|
9
|
+
import { type ObjectForm, type PluginState } from '../types';
|
|
10
10
|
|
|
11
11
|
export namespace SpaceCapabilities {
|
|
12
12
|
export const State = defineCapability<DeepReadonly<PluginState>>(`${SPACE_PLUGIN}/capability/state`);
|
|
13
13
|
export const MutableState = defineCapability<PluginState>(`${SPACE_PLUGIN}/capability/state`);
|
|
14
|
+
|
|
15
|
+
export type SpaceSettingsPanel = { id: string; label: Label };
|
|
16
|
+
export const SettingsPanel = defineCapability<SpaceSettingsPanel>(`${SPACE_PLUGIN}/capability/settings-panel`);
|
|
17
|
+
|
|
18
|
+
export const ObjectForm = defineCapability<ObjectForm<any>>(`${SPACE_PLUGIN}/capability/object-form`);
|
|
14
19
|
}
|
|
15
20
|
|
|
16
21
|
// TODO(wittjosiah): Factor out.
|
|
@@ -10,6 +10,7 @@ export const IdentityCreated = lazy(() => import('./identity-created'));
|
|
|
10
10
|
export const IntentResolver = lazy(() => import('./intent-resolver'));
|
|
11
11
|
export const ReactRoot = lazy(() => import('./react-root'));
|
|
12
12
|
export const ReactSurface = lazy(() => import('./react-surface'));
|
|
13
|
+
export const Schema = lazy(() => import('./schema'));
|
|
13
14
|
export const SpaceSettings = lazy(() => import('./settings'));
|
|
14
15
|
export const SpaceState = lazy(() => import('./state'));
|
|
15
16
|
export const SpacesReady = lazy(() => import('./spaces-ready'));
|