@dxos/plugin-space 0.8.4-main.c85a9c8dae → 0.8.4-main.d05673bc65
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/{CollectionArticle-WASDM637.mjs → CollectionArticle-WPLUW5HF.mjs} +5 -36
- package/dist/lib/browser/CollectionArticle-WPLUW5HF.mjs.map +7 -0
- package/dist/lib/browser/{CollectionSection-LK4O6QDD.mjs → CollectionSection-H2MBNI63.mjs} +2 -2
- package/dist/lib/browser/{CreateObjectDialog-MA6DPYMD.mjs → CreateObjectDialog-YUBUWSEL.mjs} +17 -21
- package/dist/lib/browser/CreateObjectDialog-YUBUWSEL.mjs.map +7 -0
- package/dist/lib/browser/{CreateSpaceDialog-WCEICWIE.mjs → CreateSpaceDialog-3M2LAWV6.mjs} +7 -7
- package/dist/lib/browser/CreateSpaceDialog-3M2LAWV6.mjs.map +7 -0
- package/dist/lib/browser/{InlineSyncStatus-BT7BRBCO.mjs → InlineSyncStatus-K5MZ3YMZ.mjs} +9 -18
- package/dist/lib/browser/InlineSyncStatus-K5MZ3YMZ.mjs.map +7 -0
- package/dist/lib/browser/{JoinDialog-PMCAIRCU.mjs → JoinDialog-PBK2RE5F.mjs} +8 -10
- package/dist/lib/browser/JoinDialog-PBK2RE5F.mjs.map +7 -0
- package/dist/lib/browser/{MembersContainer-MMFCXLVZ.mjs → MembersContainer-OGYV2L4M.mjs} +4 -4
- package/dist/lib/browser/{MenuFooter-HYBTNOBT.mjs → MenuFooter-XCBDK7WP.mjs} +3 -4
- package/dist/lib/{node-esm/MenuFooter-2QB3453Y.mjs.map → browser/MenuFooter-XCBDK7WP.mjs.map} +1 -1
- package/dist/lib/browser/{ObjectCardStack-CHWNLUYQ.mjs → ObjectCardStack-OMXF2DSG.mjs} +6 -6
- package/dist/lib/browser/{ObjectDetails-YUGVDNSA.mjs → ObjectDetails-QFTQQN4W.mjs} +6 -6
- package/dist/lib/browser/{ObjectRenamePopover-RQUOVPFH.mjs → ObjectRenamePopover-JNPJIFIR.mjs} +3 -3
- package/dist/lib/browser/{ObjectRenamePopover-RQUOVPFH.mjs.map → ObjectRenamePopover-JNPJIFIR.mjs.map} +1 -1
- package/dist/lib/browser/{RecordArticle-ONWKYM3Z.mjs → RecordArticle-BO2XHBFN.mjs} +2 -2
- package/dist/lib/browser/{SchemaContainer-62AJXKAF.mjs → SchemaContainer-QWCSIZBS.mjs} +2 -2
- package/dist/lib/browser/SmallPresenceLive-AHHLBAUP.mjs +9 -0
- package/dist/lib/browser/{SpacePluginSettings-BRJTADV5.mjs → SpacePluginSettings-QGZKNQLK.mjs} +4 -4
- package/dist/lib/browser/SpacePresence-JIWLBUWO.mjs +12 -0
- package/dist/lib/browser/{SpaceRenamePopover-SAKMPDLX.mjs → SpaceRenamePopover-ZL6RRZ2B.mjs} +3 -3
- package/dist/lib/browser/{SpaceRenamePopover-SAKMPDLX.mjs.map → SpaceRenamePopover-ZL6RRZ2B.mjs.map} +1 -1
- package/dist/lib/browser/{SpaceSettingsContainer-UBMVKUPR.mjs → SpaceSettingsContainer-MIOOT63N.mjs} +5 -5
- package/dist/lib/browser/SpaceSettingsContainer-MIOOT63N.mjs.map +7 -0
- package/dist/lib/browser/{SyncStatus-5UQ7CIII.mjs → SyncStatus-6N7JJ7XF.mjs} +6 -6
- package/dist/lib/browser/{ViewEditor-F74RR542.mjs → ViewEditor-3FX5HDRT.mjs} +4 -7
- package/dist/lib/browser/ViewEditor-3FX5HDRT.mjs.map +7 -0
- package/dist/lib/browser/app-graph-builder-JORZZE3P.mjs +1203 -0
- package/dist/lib/browser/app-graph-builder-JORZZE3P.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-KTQOBYUF.mjs → app-graph-serializer-UZWWGLGY.mjs} +5 -5
- package/dist/lib/browser/{chunk-RWOK4F4G.mjs → chunk-2WHUSAHE.mjs} +17 -14
- package/dist/lib/browser/chunk-2WHUSAHE.mjs.map +7 -0
- package/dist/lib/browser/{chunk-USN5QKRV.mjs → chunk-6IT5IBB5.mjs} +54 -86
- package/dist/lib/browser/chunk-6IT5IBB5.mjs.map +7 -0
- package/dist/lib/browser/chunk-6OA75CWN.mjs +77 -0
- package/dist/lib/browser/chunk-6OA75CWN.mjs.map +7 -0
- package/dist/lib/browser/{chunk-PXVKN4LU.mjs → chunk-AUX3RRLY.mjs} +34 -9
- package/dist/lib/browser/chunk-AUX3RRLY.mjs.map +7 -0
- package/dist/lib/browser/{chunk-HSMQFM57.mjs → chunk-CBWGVOJE.mjs} +2 -2
- package/dist/lib/browser/{chunk-HSMQFM57.mjs.map → chunk-CBWGVOJE.mjs.map} +1 -1
- package/dist/lib/browser/{chunk-XIIYC7P5.mjs → chunk-ICXESMDI.mjs} +6 -6
- package/dist/lib/browser/chunk-ICXESMDI.mjs.map +7 -0
- package/dist/lib/browser/chunk-RJUOHI3B.mjs +19 -0
- package/dist/lib/browser/{chunk-ASV6DYFH.mjs.map → chunk-RJUOHI3B.mjs.map} +1 -1
- package/dist/lib/browser/{chunk-J5F4LUJD.mjs → chunk-SSTUPFZ2.mjs} +3 -3
- package/dist/lib/browser/{chunk-ABCDB5YC.mjs → chunk-UYOJYBGW.mjs} +7 -16
- package/dist/lib/browser/chunk-UYOJYBGW.mjs.map +7 -0
- package/dist/lib/browser/cli/index.mjs +8 -17
- package/dist/lib/browser/cli/index.mjs.map +3 -3
- package/dist/lib/browser/{identity-created-VKLIZOXJ.mjs → identity-created-ETXNQYR6.mjs} +4 -4
- package/dist/lib/browser/{identity-created-VKLIZOXJ.mjs.map → identity-created-ETXNQYR6.mjs.map} +3 -3
- package/dist/lib/browser/index.mjs +33 -53
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{operation-resolver-Y3HYRXX7.mjs → operation-resolver-D4LHB4D4.mjs} +64 -88
- package/dist/lib/browser/operation-resolver-D4LHB4D4.mjs.map +7 -0
- package/dist/lib/browser/{react-root-UYBW5RE7.mjs → react-root-OD2HP63B.mjs} +6 -6
- package/dist/lib/browser/{react-surface-NJ23NZFF.mjs → react-surface-E4TAFED5.mjs} +57 -79
- package/dist/lib/browser/react-surface-E4TAFED5.mjs.map +7 -0
- package/dist/lib/browser/repair-NUVEV4AK.mjs +31 -0
- package/dist/lib/browser/repair-NUVEV4AK.mjs.map +7 -0
- package/dist/lib/browser/{settings-2ELVUFDR.mjs → settings-RUDP2Q56.mjs} +3 -3
- package/dist/lib/browser/{spaces-ready-Q6JASPT4.mjs → spaces-ready-B2GYL5IN.mjs} +6 -6
- package/dist/lib/browser/spaces-ready-B2GYL5IN.mjs.map +7 -0
- package/dist/lib/browser/{state-CTX4WQOM.mjs → state-I6JDZCDE.mjs} +5 -5
- package/dist/lib/browser/{state-CTX4WQOM.mjs.map → state-I6JDZCDE.mjs.map} +2 -2
- package/dist/lib/browser/types/index.mjs +2 -2
- package/dist/lib/node-esm/{CollectionArticle-A6GGG73Z.mjs → CollectionArticle-JGVNBX66.mjs} +5 -36
- package/dist/lib/node-esm/CollectionArticle-JGVNBX66.mjs.map +7 -0
- package/dist/lib/node-esm/{CollectionSection-WWKDOAAT.mjs → CollectionSection-BI66Y34F.mjs} +2 -2
- package/dist/lib/node-esm/{CreateObjectDialog-4WEFNDDF.mjs → CreateObjectDialog-B6OLP5VQ.mjs} +17 -21
- package/dist/lib/node-esm/CreateObjectDialog-B6OLP5VQ.mjs.map +7 -0
- package/dist/lib/node-esm/{CreateSpaceDialog-P7QCPB5J.mjs → CreateSpaceDialog-J47M5FPQ.mjs} +7 -7
- package/dist/lib/node-esm/CreateSpaceDialog-J47M5FPQ.mjs.map +7 -0
- package/dist/lib/node-esm/{InlineSyncStatus-3PCXU7NX.mjs → InlineSyncStatus-BLD57LB5.mjs} +9 -18
- package/dist/lib/node-esm/InlineSyncStatus-BLD57LB5.mjs.map +7 -0
- package/dist/lib/node-esm/{JoinDialog-XEOLJZVN.mjs → JoinDialog-XCOYKSHA.mjs} +8 -10
- package/dist/lib/node-esm/JoinDialog-XCOYKSHA.mjs.map +7 -0
- package/dist/lib/node-esm/{MembersContainer-UQZLW3YA.mjs → MembersContainer-4PV3Z4BA.mjs} +4 -4
- package/dist/lib/node-esm/{MenuFooter-2QB3453Y.mjs → MenuFooter-PXG2GV6A.mjs} +3 -4
- package/dist/lib/node-esm/{ObjectCardStack-UXEWG6RV.mjs → ObjectCardStack-457SNNVF.mjs} +6 -6
- package/dist/lib/node-esm/{ObjectDetails-26PVHUQL.mjs → ObjectDetails-OLF7HSM4.mjs} +6 -6
- package/dist/lib/node-esm/{ObjectRenamePopover-EHTP76G7.mjs → ObjectRenamePopover-BRPKVNVF.mjs} +3 -3
- package/dist/lib/node-esm/{ObjectRenamePopover-EHTP76G7.mjs.map → ObjectRenamePopover-BRPKVNVF.mjs.map} +1 -1
- package/dist/lib/node-esm/{RecordArticle-APY2WKUW.mjs → RecordArticle-XUIT25PP.mjs} +2 -2
- package/dist/lib/node-esm/{SchemaContainer-XR2D6MYX.mjs → SchemaContainer-5G4R3Z6O.mjs} +2 -2
- package/dist/lib/node-esm/SmallPresenceLive-4K7RJS74.mjs +10 -0
- package/dist/lib/node-esm/SmallPresenceLive-4K7RJS74.mjs.map +7 -0
- package/dist/lib/node-esm/{SpacePluginSettings-VEB5IGG7.mjs → SpacePluginSettings-PENV4GHL.mjs} +4 -4
- package/dist/lib/node-esm/SpacePresence-H3VZWFJV.mjs +13 -0
- package/dist/lib/node-esm/SpacePresence-H3VZWFJV.mjs.map +7 -0
- package/dist/lib/node-esm/{SpaceRenamePopover-WHM632OT.mjs → SpaceRenamePopover-XEMTI4PU.mjs} +3 -3
- package/dist/lib/node-esm/{SpaceRenamePopover-WHM632OT.mjs.map → SpaceRenamePopover-XEMTI4PU.mjs.map} +1 -1
- package/dist/lib/node-esm/{SpaceSettingsContainer-Y62J2L65.mjs → SpaceSettingsContainer-WI4D7RWA.mjs} +5 -5
- package/dist/lib/node-esm/SpaceSettingsContainer-WI4D7RWA.mjs.map +7 -0
- package/dist/lib/node-esm/{SyncStatus-XTJAVHPN.mjs → SyncStatus-YEBGTNSD.mjs} +6 -6
- package/dist/lib/node-esm/{ViewEditor-B2BLYF5U.mjs → ViewEditor-CUQVNM2H.mjs} +4 -7
- package/dist/lib/node-esm/ViewEditor-CUQVNM2H.mjs.map +7 -0
- package/dist/lib/node-esm/app-graph-builder-WTM6SSX7.mjs +1204 -0
- package/dist/lib/node-esm/app-graph-builder-WTM6SSX7.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-GXQYSQAZ.mjs → app-graph-serializer-RT2RQTV2.mjs} +5 -5
- package/dist/lib/node-esm/{chunk-OSFH2XKO.mjs → chunk-2OLR2ZKH.mjs} +6 -6
- package/dist/lib/node-esm/chunk-2OLR2ZKH.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-5KTTTTEX.mjs +20 -0
- package/dist/lib/node-esm/{chunk-CVXULIYC.mjs.map → chunk-5KTTTTEX.mjs.map} +1 -1
- package/dist/lib/node-esm/{chunk-SL4BJSUG.mjs → chunk-63N5JJXI.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-SL4BJSUG.mjs.map → chunk-63N5JJXI.mjs.map} +1 -1
- package/dist/lib/node-esm/{chunk-UJQUBDQS.mjs → chunk-EDC2RUJU.mjs} +7 -16
- package/dist/lib/node-esm/chunk-EDC2RUJU.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-3DWZCVVQ.mjs → chunk-EVNSLSQS.mjs} +54 -86
- package/dist/lib/node-esm/chunk-EVNSLSQS.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-GEGWQVZX.mjs +78 -0
- package/dist/lib/node-esm/chunk-GEGWQVZX.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-P2AVANDG.mjs → chunk-RYQQXNI7.mjs} +34 -9
- package/dist/lib/node-esm/chunk-RYQQXNI7.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-GWUPFA7J.mjs → chunk-S5BQUCL4.mjs} +17 -14
- package/dist/lib/node-esm/chunk-S5BQUCL4.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-S2IELCDF.mjs → chunk-XYLDAH5C.mjs} +3 -3
- package/dist/lib/node-esm/cli/index.mjs +8 -17
- package/dist/lib/node-esm/cli/index.mjs.map +3 -3
- package/dist/lib/node-esm/{identity-created-EGSTETJ5.mjs → identity-created-U5LGULVL.mjs} +4 -4
- package/dist/lib/node-esm/{identity-created-EGSTETJ5.mjs.map → identity-created-U5LGULVL.mjs.map} +3 -3
- package/dist/lib/node-esm/index.mjs +33 -53
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{operation-resolver-IRQ2NVUQ.mjs → operation-resolver-IL2AHNPN.mjs} +64 -88
- package/dist/lib/node-esm/operation-resolver-IL2AHNPN.mjs.map +7 -0
- package/dist/lib/node-esm/{react-root-UEN3LLJD.mjs → react-root-RILC5MBD.mjs} +6 -6
- package/dist/lib/node-esm/{react-surface-UDO3PGH6.mjs → react-surface-SWKRVK4S.mjs} +57 -79
- package/dist/lib/node-esm/react-surface-SWKRVK4S.mjs.map +7 -0
- package/dist/lib/node-esm/repair-LRZHFPSJ.mjs +32 -0
- package/dist/lib/node-esm/repair-LRZHFPSJ.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-DCTVM2BV.mjs → settings-3EKSEAAG.mjs} +3 -3
- package/dist/lib/node-esm/{spaces-ready-XLGRTJV2.mjs → spaces-ready-QK3EHBOS.mjs} +6 -6
- package/dist/lib/node-esm/spaces-ready-QK3EHBOS.mjs.map +7 -0
- package/dist/lib/node-esm/{state-G74V3WZG.mjs → state-W36RRYUO.mjs} +5 -5
- package/dist/lib/node-esm/{state-G74V3WZG.mjs.map → state-W36RRYUO.mjs.map} +2 -2
- package/dist/lib/node-esm/types/index.mjs +2 -2
- package/dist/types/src/SpacePlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +1 -2
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder/extensions/collections.d.ts +33 -0
- package/dist/types/src/capabilities/app-graph-builder/extensions/collections.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-builder/extensions/companions.d.ts +19 -0
- package/dist/types/src/capabilities/app-graph-builder/extensions/companions.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-builder/extensions/index.d.ts +6 -0
- package/dist/types/src/capabilities/app-graph-builder/extensions/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-builder/extensions/settings.d.ts +12 -0
- package/dist/types/src/capabilities/app-graph-builder/extensions/settings.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-builder/extensions/shared.d.ts +57 -0
- package/dist/types/src/capabilities/app-graph-builder/extensions/shared.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-builder/extensions/shared.test.d.ts +2 -0
- package/dist/types/src/capabilities/app-graph-builder/extensions/shared.test.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-builder/extensions/spaces.d.ts +24 -0
- package/dist/types/src/capabilities/app-graph-builder/extensions/spaces.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-builder/extensions/types.d.ts +38 -0
- package/dist/types/src/capabilities/app-graph-builder/extensions/types.d.ts.map +1 -0
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/repair/repair.d.ts.map +1 -1
- package/dist/types/src/capabilities/state/state.d.ts.map +1 -1
- package/dist/types/src/cli/commands/database/add.d.ts +0 -1
- package/dist/types/src/cli/commands/database/add.d.ts.map +1 -1
- package/dist/types/src/cli/plugin.d.ts.map +1 -1
- package/dist/types/src/components/AwaitingObject/AwaitingObject.d.ts.map +1 -0
- package/dist/types/src/components/AwaitingObject/index.d.ts +2 -0
- package/dist/types/src/components/AwaitingObject/index.d.ts.map +1 -0
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +0 -1
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
- package/dist/types/src/components/ObjectDetails/BaseObjectSettings.stories.d.ts +68 -14
- package/dist/types/src/components/ObjectDetails/BaseObjectSettings.stories.d.ts.map +1 -1
- package/dist/types/src/components/ObjectForm/ObjectForm.d.ts.map +1 -1
- package/dist/types/src/containers/CollectionArticle/CollectionArticle.d.ts +1 -2
- package/dist/types/src/containers/CollectionArticle/CollectionArticle.d.ts.map +1 -1
- package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.d.ts +2 -1
- package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.d.ts.map +1 -1
- package/dist/types/src/containers/CreateObjectDialog/index.d.ts +2 -2
- package/dist/types/src/containers/CreateObjectDialog/index.d.ts.map +1 -1
- package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.d.ts.map +1 -1
- package/dist/types/src/containers/InlineSyncStatus/InlineSyncStatus.d.ts.map +1 -1
- package/dist/types/src/containers/JoinDialog/index.d.ts +2 -2
- package/dist/types/src/containers/JoinDialog/index.d.ts.map +1 -1
- package/dist/types/src/containers/ObjectDetails/ObjectDetails.d.ts +1 -0
- package/dist/types/src/containers/ObjectDetails/ObjectDetails.d.ts.map +1 -1
- package/dist/types/src/containers/SmallPresenceLive/index.d.ts +1 -1
- package/dist/types/src/containers/SmallPresenceLive/index.d.ts.map +1 -1
- package/dist/types/src/containers/SpacePresence/SpacePresence.d.ts.map +1 -1
- package/dist/types/src/containers/SpacePresence/SpacePresence.stories.d.ts +67 -13
- package/dist/types/src/containers/SpacePresence/SpacePresence.stories.d.ts.map +1 -1
- package/dist/types/src/containers/SpacePresence/index.d.ts +2 -2
- package/dist/types/src/containers/SpacePresence/index.d.ts.map +1 -1
- package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.stories.d.ts +67 -13
- package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.stories.d.ts.map +1 -1
- package/dist/types/src/containers/SyncStatus/SyncStatus.stories.d.ts +67 -13
- package/dist/types/src/containers/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
- package/dist/types/src/containers/ViewEditor/ViewEditor.d.ts.map +1 -1
- package/dist/types/src/containers/index.d.ts +1 -1
- package/dist/types/src/containers/index.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +67 -13
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/form.d.ts +0 -2
- package/dist/types/src/types/form.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +29 -46
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +4 -161
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +57 -57
- package/src/SpacePlugin.ts +14 -22
- package/src/capabilities/app-graph-builder/app-graph-builder.ts +14 -657
- package/src/capabilities/app-graph-builder/extensions/collections.ts +351 -0
- package/src/capabilities/app-graph-builder/extensions/companions.ts +80 -0
- package/src/capabilities/app-graph-builder/extensions/index.ts +9 -0
- package/src/capabilities/app-graph-builder/extensions/settings.ts +60 -0
- package/src/capabilities/app-graph-builder/extensions/shared.test.ts +112 -0
- package/src/capabilities/app-graph-builder/extensions/shared.ts +171 -0
- package/src/capabilities/app-graph-builder/extensions/spaces.ts +338 -0
- package/src/capabilities/app-graph-builder/extensions/types.ts +421 -0
- package/src/capabilities/identity-created/identity-created.ts +3 -3
- package/src/capabilities/operation-resolver/operation-resolver.ts +65 -73
- package/src/capabilities/react-surface/react-surface.tsx +33 -58
- package/src/capabilities/repair/repair.ts +3 -32
- package/src/capabilities/spaces-ready/spaces-ready.ts +2 -2
- package/src/capabilities/state/state.ts +4 -2
- package/src/cli/commands/database/add.ts +0 -1
- package/src/cli/commands/space/close/close.ts +1 -1
- package/src/cli/commands/space/create/create.ts +1 -1
- package/src/cli/commands/space/join/join.ts +1 -1
- package/src/cli/commands/space/open/open.ts +1 -1
- package/src/cli/plugin.ts +0 -1
- package/src/components/{AwaitingObject.tsx → AwaitingObject/AwaitingObject.tsx} +2 -2
- package/src/components/AwaitingObject/index.ts +5 -0
- package/src/components/CreateDialog/CreateObjectPanel.tsx +5 -2
- package/src/components/ObjectDetails/BaseObjectSettings.stories.tsx +4 -4
- package/src/components/ObjectDetails/BaseObjectSettings.tsx +4 -4
- package/src/components/ObjectForm/ObjectForm.tsx +6 -4
- package/src/constants.ts +5 -5
- package/src/containers/CollectionArticle/CollectionArticle.tsx +7 -54
- package/src/containers/CreateObjectDialog/CreateObjectDialog.tsx +10 -10
- package/src/containers/CreateObjectDialog/index.ts +2 -3
- package/src/containers/CreateSpaceDialog/CreateSpaceDialog.tsx +5 -3
- package/src/containers/InlineSyncStatus/InlineSyncStatus.tsx +7 -18
- package/src/containers/JoinDialog/JoinDialog.tsx +4 -4
- package/src/containers/JoinDialog/index.ts +2 -3
- package/src/containers/ObjectRenamePopover/ObjectRenamePopover.tsx +1 -1
- package/src/containers/SmallPresenceLive/index.ts +1 -1
- package/src/containers/SpacePresence/SpacePresence.tsx +4 -16
- package/src/containers/SpacePresence/index.ts +2 -3
- package/src/containers/SpaceRenamePopover/SpaceRenamePopover.tsx +1 -1
- package/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.tsx +2 -2
- package/src/containers/ViewEditor/ViewEditor.tsx +0 -1
- package/src/containers/index.ts +1 -1
- package/src/helpers/query.test.ts +1 -1
- package/src/hooks/useActiveSpace.ts +4 -4
- package/src/meta.ts +1 -1
- package/src/translations.ts +27 -1
- package/src/types/capabilities.ts +7 -7
- package/src/types/events.ts +5 -5
- package/src/types/form.ts +1 -8
- package/src/types/types.ts +36 -58
- package/src/util.ts +82 -0
- package/dist/lib/browser/CollectionArticle-WASDM637.mjs.map +0 -7
- package/dist/lib/browser/CreateObjectDialog-MA6DPYMD.mjs.map +0 -7
- package/dist/lib/browser/CreateSpaceDialog-WCEICWIE.mjs.map +0 -7
- package/dist/lib/browser/InlineSyncStatus-BT7BRBCO.mjs.map +0 -7
- package/dist/lib/browser/JoinDialog-PMCAIRCU.mjs.map +0 -7
- package/dist/lib/browser/SmallPresenceLive-LZD2NGKK.mjs +0 -10
- package/dist/lib/browser/SpacePresence-MLU576L6.mjs +0 -13
- package/dist/lib/browser/SpacePresence-MLU576L6.mjs.map +0 -7
- package/dist/lib/browser/SpaceSettingsContainer-UBMVKUPR.mjs.map +0 -7
- package/dist/lib/browser/ViewEditor-F74RR542.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-VFYFI7CD.mjs +0 -593
- package/dist/lib/browser/app-graph-builder-VFYFI7CD.mjs.map +0 -7
- package/dist/lib/browser/chunk-ABCDB5YC.mjs.map +0 -7
- package/dist/lib/browser/chunk-ASV6DYFH.mjs +0 -19
- package/dist/lib/browser/chunk-PXVKN4LU.mjs.map +0 -7
- package/dist/lib/browser/chunk-RWOK4F4G.mjs.map +0 -7
- package/dist/lib/browser/chunk-TPZUQ5DC.mjs +0 -749
- package/dist/lib/browser/chunk-TPZUQ5DC.mjs.map +0 -7
- package/dist/lib/browser/chunk-USN5QKRV.mjs.map +0 -7
- package/dist/lib/browser/chunk-XIIYC7P5.mjs.map +0 -7
- package/dist/lib/browser/operation-resolver-Y3HYRXX7.mjs.map +0 -7
- package/dist/lib/browser/react-surface-NJ23NZFF.mjs.map +0 -7
- package/dist/lib/browser/repair-N2I4DR2Z.mjs +0 -50
- package/dist/lib/browser/repair-N2I4DR2Z.mjs.map +0 -7
- package/dist/lib/browser/spaces-ready-Q6JASPT4.mjs.map +0 -7
- package/dist/lib/node-esm/CollectionArticle-A6GGG73Z.mjs.map +0 -7
- package/dist/lib/node-esm/CreateObjectDialog-4WEFNDDF.mjs.map +0 -7
- package/dist/lib/node-esm/CreateSpaceDialog-P7QCPB5J.mjs.map +0 -7
- package/dist/lib/node-esm/InlineSyncStatus-3PCXU7NX.mjs.map +0 -7
- package/dist/lib/node-esm/JoinDialog-XEOLJZVN.mjs.map +0 -7
- package/dist/lib/node-esm/SmallPresenceLive-K4243KXR.mjs +0 -11
- package/dist/lib/node-esm/SpacePresence-HC2XGQ54.mjs +0 -14
- package/dist/lib/node-esm/SpacePresence-HC2XGQ54.mjs.map +0 -7
- package/dist/lib/node-esm/SpaceSettingsContainer-Y62J2L65.mjs.map +0 -7
- package/dist/lib/node-esm/ViewEditor-B2BLYF5U.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-N37ED6UI.mjs +0 -594
- package/dist/lib/node-esm/app-graph-builder-N37ED6UI.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-3DWZCVVQ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-CVXULIYC.mjs +0 -20
- package/dist/lib/node-esm/chunk-GWUPFA7J.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-OSFH2XKO.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-P2AVANDG.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-UJQUBDQS.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-WW6YYBRG.mjs +0 -750
- package/dist/lib/node-esm/chunk-WW6YYBRG.mjs.map +0 -7
- package/dist/lib/node-esm/operation-resolver-IRQ2NVUQ.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-UDO3PGH6.mjs.map +0 -7
- package/dist/lib/node-esm/repair-P6ND7ZRU.mjs +0 -51
- package/dist/lib/node-esm/repair-P6ND7ZRU.mjs.map +0 -7
- package/dist/lib/node-esm/spaces-ready-XLGRTJV2.mjs.map +0 -7
- package/dist/types/src/components/AwaitingObject.d.ts.map +0 -1
- package/src/util.tsx +0 -956
- /package/dist/lib/browser/{CollectionSection-LK4O6QDD.mjs.map → CollectionSection-H2MBNI63.mjs.map} +0 -0
- /package/dist/lib/browser/{MembersContainer-MMFCXLVZ.mjs.map → MembersContainer-OGYV2L4M.mjs.map} +0 -0
- /package/dist/lib/browser/{ObjectCardStack-CHWNLUYQ.mjs.map → ObjectCardStack-OMXF2DSG.mjs.map} +0 -0
- /package/dist/lib/browser/{ObjectDetails-YUGVDNSA.mjs.map → ObjectDetails-QFTQQN4W.mjs.map} +0 -0
- /package/dist/lib/browser/{RecordArticle-ONWKYM3Z.mjs.map → RecordArticle-BO2XHBFN.mjs.map} +0 -0
- /package/dist/lib/browser/{SchemaContainer-62AJXKAF.mjs.map → SchemaContainer-QWCSIZBS.mjs.map} +0 -0
- /package/dist/lib/browser/{SmallPresenceLive-LZD2NGKK.mjs.map → SmallPresenceLive-AHHLBAUP.mjs.map} +0 -0
- /package/dist/lib/browser/{SpacePluginSettings-BRJTADV5.mjs.map → SpacePluginSettings-QGZKNQLK.mjs.map} +0 -0
- /package/dist/lib/{node-esm/SmallPresenceLive-K4243KXR.mjs.map → browser/SpacePresence-JIWLBUWO.mjs.map} +0 -0
- /package/dist/lib/browser/{SyncStatus-5UQ7CIII.mjs.map → SyncStatus-6N7JJ7XF.mjs.map} +0 -0
- /package/dist/lib/browser/{app-graph-serializer-KTQOBYUF.mjs.map → app-graph-serializer-UZWWGLGY.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-J5F4LUJD.mjs.map → chunk-SSTUPFZ2.mjs.map} +0 -0
- /package/dist/lib/browser/{react-root-UYBW5RE7.mjs.map → react-root-OD2HP63B.mjs.map} +0 -0
- /package/dist/lib/browser/{settings-2ELVUFDR.mjs.map → settings-RUDP2Q56.mjs.map} +0 -0
- /package/dist/lib/node-esm/{CollectionSection-WWKDOAAT.mjs.map → CollectionSection-BI66Y34F.mjs.map} +0 -0
- /package/dist/lib/node-esm/{MembersContainer-UQZLW3YA.mjs.map → MembersContainer-4PV3Z4BA.mjs.map} +0 -0
- /package/dist/lib/{browser/MenuFooter-HYBTNOBT.mjs.map → node-esm/MenuFooter-PXG2GV6A.mjs.map} +0 -0
- /package/dist/lib/node-esm/{ObjectCardStack-UXEWG6RV.mjs.map → ObjectCardStack-457SNNVF.mjs.map} +0 -0
- /package/dist/lib/node-esm/{ObjectDetails-26PVHUQL.mjs.map → ObjectDetails-OLF7HSM4.mjs.map} +0 -0
- /package/dist/lib/node-esm/{RecordArticle-APY2WKUW.mjs.map → RecordArticle-XUIT25PP.mjs.map} +0 -0
- /package/dist/lib/node-esm/{SchemaContainer-XR2D6MYX.mjs.map → SchemaContainer-5G4R3Z6O.mjs.map} +0 -0
- /package/dist/lib/node-esm/{SpacePluginSettings-VEB5IGG7.mjs.map → SpacePluginSettings-PENV4GHL.mjs.map} +0 -0
- /package/dist/lib/node-esm/{SyncStatus-XTJAVHPN.mjs.map → SyncStatus-YEBGTNSD.mjs.map} +0 -0
- /package/dist/lib/node-esm/{app-graph-serializer-GXQYSQAZ.mjs.map → app-graph-serializer-RT2RQTV2.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-S2IELCDF.mjs.map → chunk-XYLDAH5C.mjs.map} +0 -0
- /package/dist/lib/node-esm/{react-root-UEN3LLJD.mjs.map → react-root-RILC5MBD.mjs.map} +0 -0
- /package/dist/lib/node-esm/{settings-DCTVM2BV.mjs.map → settings-3EKSEAAG.mjs.map} +0 -0
- /package/dist/types/src/components/{AwaitingObject.d.ts → AwaitingObject/AwaitingObject.d.ts} +0 -0
|
@@ -8,9 +8,8 @@ import React, { useCallback, useMemo, useRef, useState } from 'react';
|
|
|
8
8
|
|
|
9
9
|
import { Capability } from '@dxos/app-framework';
|
|
10
10
|
import { useOperationInvoker, usePluginManager } from '@dxos/app-framework/ui';
|
|
11
|
-
import { AppCapabilities, LayoutOperation } from '@dxos/app-toolkit';
|
|
12
|
-
import { Database, Obj, Type } from '@dxos/echo';
|
|
13
|
-
import { type Collection } from '@dxos/echo';
|
|
11
|
+
import { AppCapabilities, LayoutOperation, getObjectPath } from '@dxos/app-toolkit';
|
|
12
|
+
import { Collection, Database, Obj, Type } from '@dxos/echo';
|
|
14
13
|
import { runAndForwardErrors } from '@dxos/effect';
|
|
15
14
|
import { invariant } from '@dxos/invariant';
|
|
16
15
|
import { Operation } from '@dxos/operation';
|
|
@@ -28,12 +27,13 @@ import {
|
|
|
28
27
|
import { meta } from '../../meta';
|
|
29
28
|
import { SpaceOperation } from '../../types';
|
|
30
29
|
|
|
31
|
-
export const CREATE_OBJECT_DIALOG = `${meta.id}
|
|
30
|
+
export const CREATE_OBJECT_DIALOG = `${meta.id}.CreateObjectDialog`;
|
|
32
31
|
|
|
33
32
|
export type CreateObjectDialogProps = Pick<CreateObjectPanelProps, 'target' | 'typename' | 'initialFormValues'> & {
|
|
34
33
|
views?: boolean;
|
|
35
34
|
onCreateObject?: (object: Obj.Unknown) => void;
|
|
36
35
|
shouldNavigate?: (object: Obj.Unknown) => boolean;
|
|
36
|
+
targetNodeId?: string;
|
|
37
37
|
};
|
|
38
38
|
|
|
39
39
|
export const CreateObjectDialog = ({
|
|
@@ -43,6 +43,7 @@ export const CreateObjectDialog = ({
|
|
|
43
43
|
initialFormValues,
|
|
44
44
|
onCreateObject,
|
|
45
45
|
shouldNavigate: _shouldNavigate,
|
|
46
|
+
targetNodeId,
|
|
46
47
|
}: CreateObjectDialogProps) => {
|
|
47
48
|
const manager = usePluginManager();
|
|
48
49
|
const { t } = useTranslation(meta.id);
|
|
@@ -82,7 +83,7 @@ export const CreateObjectDialog = ({
|
|
|
82
83
|
manager.capabilities
|
|
83
84
|
.getAll(AppCapabilities.Metadata)
|
|
84
85
|
.filter((entry) => entry.metadata?.createObject)
|
|
85
|
-
.filter((entry) => (views === true ? viewTypenames.has(entry.id) :
|
|
86
|
+
.filter((entry) => (views === true ? viewTypenames.has(entry.id) : true))
|
|
86
87
|
.map((entry) => ({
|
|
87
88
|
id: entry.id,
|
|
88
89
|
label: t('typename label', { ns: entry.id, defaultValue: entry.id }),
|
|
@@ -106,17 +107,16 @@ export const CreateObjectDialog = ({
|
|
|
106
107
|
invariant(db, 'Missing database');
|
|
107
108
|
const object = yield* metadata.createObject(data, { db });
|
|
108
109
|
if (Obj.isObject(object) && !Obj.instanceOf(Type.PersistentType, object)) {
|
|
109
|
-
|
|
110
|
-
const hidden = !metadata.addToCollectionOnCreate;
|
|
111
|
-
yield* operationInvoker.invoke(SpaceOperation.AddObject, {
|
|
110
|
+
const { subject } = yield* operationInvoker.invoke(SpaceOperation.AddObject, {
|
|
112
111
|
target,
|
|
113
112
|
object,
|
|
114
|
-
hidden,
|
|
113
|
+
hidden: !Obj.instanceOf(Collection.Collection, object),
|
|
114
|
+
targetNodeId,
|
|
115
115
|
});
|
|
116
116
|
const shouldNavigate = _shouldNavigate ?? (() => true);
|
|
117
117
|
if (shouldNavigate(object)) {
|
|
118
118
|
yield* operationInvoker.invoke(LayoutOperation.Open, {
|
|
119
|
-
subject
|
|
119
|
+
subject,
|
|
120
120
|
});
|
|
121
121
|
}
|
|
122
122
|
|
|
@@ -2,6 +2,5 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export default CreateObjectDialog;
|
|
5
|
+
export { CreateObjectDialog, type CreateObjectDialogProps } from './CreateObjectDialog';
|
|
6
|
+
export { CreateObjectDialog as default } from './CreateObjectDialog';
|
|
@@ -7,7 +7,7 @@ import type * as Schema from 'effect/Schema';
|
|
|
7
7
|
import React, { useCallback, useRef } from 'react';
|
|
8
8
|
|
|
9
9
|
import { useOperationInvoker } from '@dxos/app-framework/ui';
|
|
10
|
-
import { LayoutOperation } from '@dxos/app-toolkit';
|
|
10
|
+
import { LayoutOperation, getSpacePath } from '@dxos/app-toolkit';
|
|
11
11
|
import { runAndForwardErrors } from '@dxos/effect';
|
|
12
12
|
import { Dialog, useTranslation } from '@dxos/react-ui';
|
|
13
13
|
import { Form } from '@dxos/react-ui-form';
|
|
@@ -16,7 +16,7 @@ import { useInputSurfaceLookup } from '../../hooks';
|
|
|
16
16
|
import { meta } from '../../meta';
|
|
17
17
|
import { SpaceForm, SpaceOperation } from '../../types';
|
|
18
18
|
|
|
19
|
-
export const CREATE_SPACE_DIALOG = `${meta.id}
|
|
19
|
+
export const CREATE_SPACE_DIALOG = `${meta.id}.CreateSpaceDialog`;
|
|
20
20
|
|
|
21
21
|
type FormValues = Schema.Schema.Type<typeof SpaceForm>;
|
|
22
22
|
const initialValues: FormValues = { edgeReplication: true };
|
|
@@ -33,7 +33,9 @@ export const CreateSpaceDialog = () => {
|
|
|
33
33
|
const program = Effect.gen(function* () {
|
|
34
34
|
const { data: result } = yield* Effect.promise(() => invokePromise(SpaceOperation.Create, data));
|
|
35
35
|
if (result?.space) {
|
|
36
|
-
yield* Effect.promise(() =>
|
|
36
|
+
yield* Effect.promise(() =>
|
|
37
|
+
invokePromise(LayoutOperation.SwitchWorkspace, { subject: getSpacePath(result.space.id) }),
|
|
38
|
+
);
|
|
37
39
|
yield* Effect.promise(() => invokePromise(LayoutOperation.UpdateDialog, { state: false }));
|
|
38
40
|
}
|
|
39
41
|
});
|
|
@@ -2,18 +2,16 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import * as Option from 'effect/Option';
|
|
6
5
|
import React, { useEffect, useState } from 'react';
|
|
7
6
|
|
|
8
|
-
import {
|
|
7
|
+
import { getSpacePath } from '@dxos/app-toolkit';
|
|
9
8
|
import { EdgeStatus } from '@dxos/protocols/proto/dxos/client/services';
|
|
10
9
|
import { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';
|
|
11
10
|
import { useClient } from '@dxos/react-client';
|
|
12
11
|
import { type Space, useSpaceSyncState } from '@dxos/react-client/echo';
|
|
13
12
|
import { Tooltip, useTranslation } from '@dxos/react-ui';
|
|
14
|
-
import { AttentionGlyph,
|
|
13
|
+
import { AttentionGlyph, useAttention } from '@dxos/react-ui-attention';
|
|
15
14
|
|
|
16
|
-
import { usePath } from '../../hooks';
|
|
17
15
|
import { meta } from '../../meta';
|
|
18
16
|
|
|
19
17
|
const useEdgeStatus = (): EdgeStatus.ConnectionState => {
|
|
@@ -30,19 +28,10 @@ const useEdgeStatus = (): EdgeStatus.ConnectionState => {
|
|
|
30
28
|
|
|
31
29
|
export const InlineSyncStatus = ({ space, open }: { space: Space; open?: boolean }) => {
|
|
32
30
|
const { t } = useTranslation(meta.id);
|
|
33
|
-
const
|
|
34
|
-
const { hasAttention, isAncestor, isRelated } = useAttention(
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
// TODO(wittjosiah): If the attended node is deep in the graph and the graph is not fully loaded
|
|
38
|
-
// this will result in an empty path until the graph is connected.
|
|
39
|
-
// TODO(wittjosiah): Consider using this indicator for all open nodes instead of just attended.
|
|
40
|
-
const { graph } = useAppGraph();
|
|
41
|
-
const attended = useAttended();
|
|
42
|
-
const startOfAttention = attended.at(-1);
|
|
43
|
-
const path = usePath(graph, startOfAttention);
|
|
44
|
-
const containsAttended = !open && !isAttended && id && Option.isSome(path) ? path.value.includes(id) : false;
|
|
45
|
-
|
|
31
|
+
const qualifiedId = getSpacePath(space.id);
|
|
32
|
+
const { hasAttention, isAncestor, isRelated } = useAttention(qualifiedId);
|
|
33
|
+
const attended = hasAttention || isRelated;
|
|
34
|
+
const containsAttended = isAncestor && !open;
|
|
46
35
|
const connectedToEdge = useEdgeStatus() === EdgeStatus.ConnectionState.CONNECTED;
|
|
47
36
|
// TODO(wittjosiah): This is not reactive.
|
|
48
37
|
const edgeSyncEnabled = space.internal.data.edgeReplication === EdgeReplicationSetting.ENABLED;
|
|
@@ -53,7 +42,7 @@ export const InlineSyncStatus = ({ space, open }: { space: Space; open?: boolean
|
|
|
53
42
|
<Tooltip.Trigger asChild content={t('syncing label')} side='bottom'>
|
|
54
43
|
<AttentionGlyph
|
|
55
44
|
syncing={syncing}
|
|
56
|
-
attended={
|
|
45
|
+
attended={attended}
|
|
57
46
|
containsAttended={containsAttended}
|
|
58
47
|
classNames='self-center mx-1'
|
|
59
48
|
/>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import React, { useCallback } from 'react';
|
|
6
6
|
|
|
7
7
|
import { useOperationInvoker } from '@dxos/app-framework/ui';
|
|
8
|
-
import { LayoutOperation } from '@dxos/app-toolkit';
|
|
8
|
+
import { LayoutOperation, getSpacePath } from '@dxos/app-toolkit';
|
|
9
9
|
import { useAppGraph } from '@dxos/app-toolkit/ui';
|
|
10
10
|
import { Trigger } from '@dxos/async';
|
|
11
11
|
import { Graph } from '@dxos/plugin-graph';
|
|
@@ -19,7 +19,7 @@ import { osTranslations } from '@dxos/ui-theme';
|
|
|
19
19
|
|
|
20
20
|
import { meta } from '../../meta';
|
|
21
21
|
|
|
22
|
-
export const JOIN_DIALOG = `${meta.id}
|
|
22
|
+
export const JOIN_DIALOG = `${meta.id}.JoinDialog`;
|
|
23
23
|
|
|
24
24
|
export type JoinDialogProps = JoinPanelProps & {
|
|
25
25
|
navigableCollections?: boolean;
|
|
@@ -40,7 +40,7 @@ export const JoinDialog = ({ navigableCollections, onDone, ...props }: JoinDialo
|
|
|
40
40
|
|
|
41
41
|
await Promise.all([
|
|
42
42
|
invokePromise(LayoutOperation.AddToast, {
|
|
43
|
-
id: `${meta.id}
|
|
43
|
+
id: `${meta.id}.join-success`,
|
|
44
44
|
duration: 5_000,
|
|
45
45
|
title: ['join success label', { ns: meta.id }],
|
|
46
46
|
closeLabel: ['dismiss label', { ns: meta.id }],
|
|
@@ -61,7 +61,7 @@ export const JoinDialog = ({ navigableCollections, onDone, ...props }: JoinDialo
|
|
|
61
61
|
space = await trigger.wait();
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
await invokePromise(LayoutOperation.SwitchWorkspace, { subject: space.id });
|
|
64
|
+
await invokePromise(LayoutOperation.SwitchWorkspace, { subject: getSpacePath(space.id) });
|
|
65
65
|
|
|
66
66
|
// TODO(wittjosiah): If navigableCollections is false and there's no target,
|
|
67
67
|
// should try to navigate to the first object of the space replicates.
|
|
@@ -13,7 +13,7 @@ import { osTranslations } from '@dxos/ui-theme';
|
|
|
13
13
|
|
|
14
14
|
import { meta } from '../../meta';
|
|
15
15
|
|
|
16
|
-
export const OBJECT_RENAME_POPOVER = `${meta.id}
|
|
16
|
+
export const OBJECT_RENAME_POPOVER = `${meta.id}.ObjectRenamePopover`;
|
|
17
17
|
|
|
18
18
|
export const ObjectRenamePopover = ({ object }: { object: Obj.Unknown }) => {
|
|
19
19
|
const { t } = useTranslation(meta.id);
|
|
@@ -2,11 +2,9 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import * as Option from 'effect/Option';
|
|
6
5
|
import React, { forwardRef, useCallback, useEffect, useState } from 'react';
|
|
7
6
|
|
|
8
7
|
import { useAtomCapability } from '@dxos/app-framework/ui';
|
|
9
|
-
import { useAppGraph } from '@dxos/app-toolkit/ui';
|
|
10
8
|
import { generateName } from '@dxos/display-name';
|
|
11
9
|
import { type Key, Obj } from '@dxos/echo';
|
|
12
10
|
import { PublicKey } from '@dxos/react-client';
|
|
@@ -25,10 +23,9 @@ import {
|
|
|
25
23
|
useDefaultValue,
|
|
26
24
|
useTranslation,
|
|
27
25
|
} from '@dxos/react-ui';
|
|
28
|
-
import { AttentionGlyph, type AttentionGlyphProps,
|
|
26
|
+
import { AttentionGlyph, type AttentionGlyphProps, useAttention } from '@dxos/react-ui-attention';
|
|
29
27
|
import { ComplexMap, keyToFallback } from '@dxos/util';
|
|
30
28
|
|
|
31
|
-
import { usePath } from '../../hooks';
|
|
32
29
|
import { meta } from '../../meta';
|
|
33
30
|
import { type ObjectViewerProps, SpaceCapabilities } from '../../types';
|
|
34
31
|
|
|
@@ -220,17 +217,8 @@ export type SmallPresenceLiveProps = {
|
|
|
220
217
|
|
|
221
218
|
export const SmallPresenceLive = ({ id, open, viewers }: SmallPresenceLiveProps) => {
|
|
222
219
|
const { hasAttention, isAncestor, isRelated } = useAttention(id);
|
|
223
|
-
const
|
|
224
|
-
|
|
225
|
-
// TODO(wittjosiah): If the attended node is deep in the graph and the graph is not fully loaded
|
|
226
|
-
// this will result in an empty path until the graph is connected.
|
|
227
|
-
// TODO(wittjosiah): Consider using this indicator for all open nodes instead of just attended.
|
|
228
|
-
const { graph } = useAppGraph();
|
|
229
|
-
const attended = useAttended();
|
|
230
|
-
const startOfAttention = attended.at(-1);
|
|
231
|
-
const path = usePath(graph, startOfAttention);
|
|
232
|
-
const containsAttended = !open && !isAttended && id && Option.isSome(path) ? path.value.includes(id) : false;
|
|
233
|
-
|
|
220
|
+
const attended = hasAttention || isRelated;
|
|
221
|
+
const containsAttended = isAncestor && !open;
|
|
234
222
|
const getActiveViewers = (viewers: ComplexMap<PublicKey, ObjectViewerProps>): ObjectViewerProps[] => {
|
|
235
223
|
const moment = Date.now();
|
|
236
224
|
return Array.from<ObjectViewerProps>(viewers.values()).filter(
|
|
@@ -250,7 +238,7 @@ export const SmallPresenceLive = ({ id, open, viewers }: SmallPresenceLiveProps)
|
|
|
250
238
|
}
|
|
251
239
|
}, [viewers]);
|
|
252
240
|
|
|
253
|
-
return <SmallPresence count={activeViewers.length} attended={
|
|
241
|
+
return <SmallPresence count={activeViewers.length} attended={attended} containsAttended={containsAttended} />;
|
|
254
242
|
};
|
|
255
243
|
|
|
256
244
|
export type SmallPresenceProps = {
|
|
@@ -13,7 +13,7 @@ import { osTranslations } from '@dxos/ui-theme';
|
|
|
13
13
|
|
|
14
14
|
import { meta } from '../../meta';
|
|
15
15
|
|
|
16
|
-
export const SPACE_RENAME_POPOVER = `${meta.id}
|
|
16
|
+
export const SPACE_RENAME_POPOVER = `${meta.id}.SpaceRenamePopover`;
|
|
17
17
|
|
|
18
18
|
export const SpaceRenamePopover = ({ space }: { space: Space }) => {
|
|
19
19
|
const { t } = useTranslation(meta.id);
|
|
@@ -6,7 +6,7 @@ import * as Schema from 'effect/Schema';
|
|
|
6
6
|
import React, { type ChangeEvent, useCallback, useMemo, useState } from 'react';
|
|
7
7
|
|
|
8
8
|
import { useCapabilities, useOperationInvoker } from '@dxos/app-framework/ui';
|
|
9
|
-
import { LayoutOperation } from '@dxos/app-toolkit';
|
|
9
|
+
import { LayoutOperation, getSpacePath } from '@dxos/app-toolkit';
|
|
10
10
|
import { Obj } from '@dxos/echo';
|
|
11
11
|
import { log } from '@dxos/log';
|
|
12
12
|
import { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';
|
|
@@ -78,7 +78,7 @@ export const SpaceSettingsContainer = ({ space }: SpaceSettingsContainerProps) =
|
|
|
78
78
|
if (newValues.archived && !archived) {
|
|
79
79
|
void invokePromise(SpaceOperation.Close, { space });
|
|
80
80
|
void invokePromise(LayoutOperation.SwitchWorkspace, {
|
|
81
|
-
subject: client.spaces.default.id,
|
|
81
|
+
subject: getSpacePath(client.spaces.default.id),
|
|
82
82
|
});
|
|
83
83
|
} else if (!newValues.archived && archived) {
|
|
84
84
|
void invokePromise(SpaceOperation.Open, { space });
|
package/src/containers/index.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import { type ComponentType, lazy } from 'react';
|
|
6
6
|
|
|
7
|
-
export type { CreateObjectDialogProps } from './CreateObjectDialog
|
|
7
|
+
export type { CreateObjectDialogProps } from './CreateObjectDialog';
|
|
8
8
|
|
|
9
9
|
export const CollectionArticle: ComponentType<any> = lazy(() => import('./CollectionArticle'));
|
|
10
10
|
export const CollectionSection: ComponentType<any> = lazy(() => import('./CollectionSection'));
|
|
@@ -3,22 +3,22 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { Capabilities, type CapabilityManager } from '@dxos/app-framework';
|
|
6
|
-
import { AppCapabilities } from '@dxos/app-toolkit';
|
|
6
|
+
import { AppCapabilities, getSpaceIdFromPath } from '@dxos/app-toolkit';
|
|
7
7
|
import { useLayout } from '@dxos/app-toolkit/ui';
|
|
8
8
|
import { ClientCapabilities } from '@dxos/plugin-client';
|
|
9
|
-
import {
|
|
9
|
+
import { useSpace } from '@dxos/react-client/echo';
|
|
10
10
|
|
|
11
11
|
export const getActiveSpace = (capabilities: CapabilityManager.CapabilityManager) => {
|
|
12
12
|
const client = capabilities.get(ClientCapabilities.Client);
|
|
13
13
|
const registry = capabilities.get(Capabilities.AtomRegistry);
|
|
14
14
|
const layoutAtom = capabilities.get(AppCapabilities.Layout);
|
|
15
15
|
const layout = registry.get(layoutAtom);
|
|
16
|
-
const
|
|
16
|
+
const spaceId = getSpaceIdFromPath(layout.workspace);
|
|
17
17
|
return spaceId ? client.spaces.get(spaceId) : undefined;
|
|
18
18
|
};
|
|
19
19
|
|
|
20
20
|
export const useActiveSpace = () => {
|
|
21
21
|
const layout = useLayout();
|
|
22
|
-
const
|
|
22
|
+
const spaceId = getSpaceIdFromPath(layout.workspace);
|
|
23
23
|
return useSpace(spaceId);
|
|
24
24
|
};
|
package/src/meta.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { type Plugin } from '@dxos/app-framework';
|
|
|
6
6
|
import { trim } from '@dxos/util';
|
|
7
7
|
|
|
8
8
|
export const meta: Plugin.Meta = {
|
|
9
|
-
id: 'dxos.
|
|
9
|
+
id: 'org.dxos.plugin.space',
|
|
10
10
|
name: 'Spaces',
|
|
11
11
|
description: trim`
|
|
12
12
|
Core workspace container system for organizing and sharing collaborative environments.
|
package/src/translations.ts
CHANGED
|
@@ -19,6 +19,7 @@ export const translations = [
|
|
|
19
19
|
'typename label_one': 'Collection',
|
|
20
20
|
'typename label_other': 'Collections',
|
|
21
21
|
'object name placeholder': 'New collection',
|
|
22
|
+
'add object label': 'Add collection',
|
|
22
23
|
'rename object label': 'Rename collection',
|
|
23
24
|
'delete object label': 'Delete collection',
|
|
24
25
|
'object deleted label': 'Collection deleted',
|
|
@@ -29,6 +30,7 @@ export const translations = [
|
|
|
29
30
|
'typename label_one': 'Type',
|
|
30
31
|
'typename label_other': 'Types',
|
|
31
32
|
'object name placeholder': 'New type',
|
|
33
|
+
'add object label': 'Add type',
|
|
32
34
|
'rename object label': 'Rename type',
|
|
33
35
|
'delete object label': 'Delete type',
|
|
34
36
|
'object deleted label': 'Type deleted',
|
|
@@ -39,6 +41,9 @@ export const translations = [
|
|
|
39
41
|
'typename label_one': 'Event',
|
|
40
42
|
'typename label_other': 'Events',
|
|
41
43
|
'object name placeholder': 'New event',
|
|
44
|
+
'add object label': 'Add event',
|
|
45
|
+
'rename object label': 'Rename event',
|
|
46
|
+
'delete object label': 'Delete event',
|
|
42
47
|
},
|
|
43
48
|
[Message.Message.typename]: {
|
|
44
49
|
'typename label': 'Message',
|
|
@@ -46,6 +51,9 @@ export const translations = [
|
|
|
46
51
|
'typename label_one': 'Message',
|
|
47
52
|
'typename label_other': 'Messages',
|
|
48
53
|
'object name placeholder': 'New message',
|
|
54
|
+
'add object label': 'Add message',
|
|
55
|
+
'rename object label': 'Rename message',
|
|
56
|
+
'delete object label': 'Delete message',
|
|
49
57
|
},
|
|
50
58
|
[Organization.Organization.typename]: {
|
|
51
59
|
'typename label': 'Organization',
|
|
@@ -53,6 +61,9 @@ export const translations = [
|
|
|
53
61
|
'typename label_one': 'Organization',
|
|
54
62
|
'typename label_other': 'Organizations',
|
|
55
63
|
'object name placeholder': 'New organization',
|
|
64
|
+
'add object label': 'Add organization',
|
|
65
|
+
'rename object label': 'Rename organization',
|
|
66
|
+
'delete object label': 'Delete organization',
|
|
56
67
|
},
|
|
57
68
|
[Person.Person.typename]: {
|
|
58
69
|
'typename label': 'Person',
|
|
@@ -60,6 +71,9 @@ export const translations = [
|
|
|
60
71
|
'typename label_one': 'Person',
|
|
61
72
|
'typename label_other': 'People',
|
|
62
73
|
'object name placeholder': 'New person',
|
|
74
|
+
'add object label': 'Add person',
|
|
75
|
+
'rename object label': 'Rename person',
|
|
76
|
+
'delete object label': 'Delete person',
|
|
63
77
|
},
|
|
64
78
|
[Pipeline.Pipeline.typename]: {
|
|
65
79
|
'typename label': 'Project',
|
|
@@ -67,6 +81,9 @@ export const translations = [
|
|
|
67
81
|
'typename label_one': 'Project',
|
|
68
82
|
'typename label_other': 'Projects',
|
|
69
83
|
'object name placeholder': 'New project',
|
|
84
|
+
'add object label': 'Add project',
|
|
85
|
+
'rename object label': 'Rename project',
|
|
86
|
+
'delete object label': 'Delete project',
|
|
70
87
|
},
|
|
71
88
|
[Task.Task.typename]: {
|
|
72
89
|
'typename label': 'Task',
|
|
@@ -74,6 +91,9 @@ export const translations = [
|
|
|
74
91
|
'typename label_one': 'Task',
|
|
75
92
|
'typename label_other': 'Tasks',
|
|
76
93
|
'object name placeholder': 'New task',
|
|
94
|
+
'add object label': 'Add task',
|
|
95
|
+
'rename object label': 'Rename task',
|
|
96
|
+
'delete object label': 'Delete task',
|
|
77
97
|
},
|
|
78
98
|
[meta.id]: {
|
|
79
99
|
'plugin name': 'Spaces',
|
|
@@ -131,8 +151,10 @@ export const translations = [
|
|
|
131
151
|
'The requested object has not been found yet. Ensure there are enough peers online in the space with an updated copy.',
|
|
132
152
|
'create object in space label': 'Add to space',
|
|
133
153
|
'create object in collection label': 'Add to collection',
|
|
154
|
+
'remove from collection label': 'Remove from collection',
|
|
134
155
|
'create object in system collection label': 'Add to system collection',
|
|
135
|
-
'
|
|
156
|
+
'new type label': 'New type',
|
|
157
|
+
'add view to schema label': 'Add view for type',
|
|
136
158
|
'space members label': 'Space members',
|
|
137
159
|
'active space members heading': 'Online ({{count}})',
|
|
138
160
|
'inactive space members heading': 'Offline ({{count}})',
|
|
@@ -239,6 +261,10 @@ export const translations = [
|
|
|
239
261
|
'sync upload label': 'Upload',
|
|
240
262
|
'sync download label': 'Download',
|
|
241
263
|
|
|
264
|
+
'types section label': 'Types',
|
|
265
|
+
'collections section label': 'Collections',
|
|
266
|
+
'type collection all label': 'All',
|
|
267
|
+
|
|
242
268
|
'search placeholder': 'Search…',
|
|
243
269
|
},
|
|
244
270
|
},
|
|
@@ -20,7 +20,7 @@ import { meta } from '../meta';
|
|
|
20
20
|
import { type ObjectViewerProps, type SpaceSettingsProps } from './types';
|
|
21
21
|
|
|
22
22
|
export namespace SpaceCapabilities {
|
|
23
|
-
export const Settings = Capability.make<Atom.Writable<SpaceSettingsProps>>(`${meta.id}
|
|
23
|
+
export const Settings = Capability.make<Atom.Writable<SpaceSettingsProps>>(`${meta.id}.capability.settings`);
|
|
24
24
|
|
|
25
25
|
/** Schema for persisted space plugin state. */
|
|
26
26
|
export const StateSchema = Schema.mutable(
|
|
@@ -33,7 +33,7 @@ export namespace SpaceCapabilities {
|
|
|
33
33
|
export type SpaceState = Schema.Schema.Type<typeof StateSchema>;
|
|
34
34
|
|
|
35
35
|
/** Persisted state (stored in KVS/localStorage). */
|
|
36
|
-
export const State = Capability.make<Atom.Writable<SpaceState>>(`${meta.id}
|
|
36
|
+
export const State = Capability.make<Atom.Writable<SpaceState>>(`${meta.id}.capability.state`);
|
|
37
37
|
|
|
38
38
|
/** Ephemeral space plugin state (not persisted). */
|
|
39
39
|
export type SpaceEphemeralState = {
|
|
@@ -46,18 +46,18 @@ export namespace SpaceCapabilities {
|
|
|
46
46
|
|
|
47
47
|
/** Transient/ephemeral state (not persisted). */
|
|
48
48
|
export const EphemeralState = Capability.make<Atom.Writable<SpaceEphemeralState>>(
|
|
49
|
-
`${meta.id}
|
|
49
|
+
`${meta.id}.capability.ephemeral-state`,
|
|
50
50
|
);
|
|
51
51
|
|
|
52
52
|
export type SettingsSection = { id: string; label: Label; position?: Position };
|
|
53
|
-
export const SettingsSection = Capability.make<SettingsSection>(`${meta.id}
|
|
53
|
+
export const SettingsSection = Capability.make<SettingsSection>(`${meta.id}.capability.settings-section`);
|
|
54
54
|
|
|
55
55
|
export type OnCreateSpace = (params: {
|
|
56
56
|
space: Space;
|
|
57
57
|
isDefault: boolean;
|
|
58
58
|
rootCollection: Collection.Collection;
|
|
59
59
|
}) => Effect.Effect<void, Error, Operation.Service>;
|
|
60
|
-
export const OnCreateSpace = Capability.make<OnCreateSpace>(`${meta.id}
|
|
60
|
+
export const OnCreateSpace = Capability.make<OnCreateSpace>(`${meta.id}.capability.on-space-created`);
|
|
61
61
|
|
|
62
62
|
export type OnSchemaAdded = (params: {
|
|
63
63
|
db: Database.Database;
|
|
@@ -65,9 +65,9 @@ export namespace SpaceCapabilities {
|
|
|
65
65
|
// TODO(wittjosiah): This is leaky.
|
|
66
66
|
show?: boolean;
|
|
67
67
|
}) => Effect.Effect<void, Error, Operation.Service>;
|
|
68
|
-
export const OnSchemaAdded = Capability.make<OnSchemaAdded>(`${meta.id}
|
|
68
|
+
export const OnSchemaAdded = Capability.make<OnSchemaAdded>(`${meta.id}.capability.on-schema-added`);
|
|
69
69
|
|
|
70
70
|
// TODO(wittjosiah): Replace with migrations, this is not a sustainable solution.
|
|
71
71
|
export type HandleRepair = (params: { space: Space; isDefault: boolean }) => Promise<void>;
|
|
72
|
-
export const Repair = Capability.make<HandleRepair>(`${meta.id}
|
|
72
|
+
export const Repair = Capability.make<HandleRepair>(`${meta.id}.capability.repair`);
|
|
73
73
|
}
|
package/src/types/events.ts
CHANGED
|
@@ -8,9 +8,9 @@ import { AppActivationEvents } from '@dxos/app-toolkit';
|
|
|
8
8
|
import { meta } from '../meta';
|
|
9
9
|
|
|
10
10
|
export namespace SpaceEvents {
|
|
11
|
-
export const StateReady = AppActivationEvents.createStateEvent(`${meta.id}
|
|
12
|
-
export const SetupSettingsPanel = ActivationEvent.make(`${meta.id}
|
|
13
|
-
export const DefaultSpaceReady = ActivationEvent.make(`${meta.id}
|
|
14
|
-
export const SpaceCreated = ActivationEvent.make(`${meta.id}
|
|
15
|
-
export const SchemaAdded = ActivationEvent.make(`${meta.id}
|
|
11
|
+
export const StateReady = AppActivationEvents.createStateEvent(`${meta.id}.event.state-ready`);
|
|
12
|
+
export const SetupSettingsPanel = ActivationEvent.make(`${meta.id}.event.setup-settings-panel`);
|
|
13
|
+
export const DefaultSpaceReady = ActivationEvent.make(`${meta.id}.event.default-space-ready`);
|
|
14
|
+
export const SpaceCreated = ActivationEvent.make(`${meta.id}.event.space-created`);
|
|
15
|
+
export const SchemaAdded = ActivationEvent.make(`${meta.id}.event.schema-added`);
|
|
16
16
|
}
|
package/src/types/form.ts
CHANGED
|
@@ -12,7 +12,6 @@ import { EntityKind, SystemTypeAnnotation, createAnnotationHelper, getTypeAnnota
|
|
|
12
12
|
export const TypeInputOptions = Schema.Struct({
|
|
13
13
|
location: Schema.Array(Schema.Literal('database', 'runtime')),
|
|
14
14
|
kind: Schema.Array(Schema.Literal('system', 'user')),
|
|
15
|
-
registered: Schema.Array(Schema.Literal('registered', 'unregistered')),
|
|
16
15
|
});
|
|
17
16
|
|
|
18
17
|
export type TypeInputOptions = Schema.Schema.Type<typeof TypeInputOptions>;
|
|
@@ -29,8 +28,6 @@ export const getTypenames = ({ annotation, space }: { annotation: TypeInputOptio
|
|
|
29
28
|
const includeDatabase = annotation.location.includes('database');
|
|
30
29
|
const includeSystemType = annotation.kind.includes('system');
|
|
31
30
|
const includeUserType = annotation.kind.includes('user');
|
|
32
|
-
const includeRegistered = annotation.registered.includes('registered');
|
|
33
|
-
const includeUnregistered = annotation.registered.includes('unregistered');
|
|
34
31
|
|
|
35
32
|
const runtimeTypenames =
|
|
36
33
|
includeRuntime && space
|
|
@@ -50,15 +47,11 @@ export const getTypenames = ({ annotation, space }: { annotation: TypeInputOptio
|
|
|
50
47
|
|
|
51
48
|
return includeUserType;
|
|
52
49
|
})
|
|
53
|
-
.filter((schema) => {
|
|
54
|
-
const registered = space?.properties.staticRecords?.includes(Type.getTypename(schema));
|
|
55
|
-
return registered ? includeRegistered : includeUnregistered;
|
|
56
|
-
})
|
|
57
50
|
.map((schema) => Type.getTypename(schema))
|
|
58
51
|
: [];
|
|
59
52
|
|
|
60
53
|
const databaseTypenames =
|
|
61
|
-
includeDatabase &&
|
|
54
|
+
includeDatabase && space
|
|
62
55
|
? space.db.schemaRegistry
|
|
63
56
|
.query({ location: ['database'] })
|
|
64
57
|
.runSync()
|