@dxos/plugin-space 0.9.0 → 0.9.1-main.c7dcc2e112
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/neutral/{CollectionArticle-S3OF5KJ7.mjs → CollectionArticle-BMH7SZ7Q.mjs} +9 -12
- package/dist/lib/neutral/CollectionArticle-BMH7SZ7Q.mjs.map +7 -0
- package/dist/lib/neutral/{CollectionSection-A5WRHE5Z.mjs → CollectionSection-BLYTGOKH.mjs} +2 -2
- package/dist/lib/neutral/{CollectionSection-A5WRHE5Z.mjs.map → CollectionSection-BLYTGOKH.mjs.map} +3 -3
- package/dist/lib/neutral/{CreateObjectDialog-66R3K6I3.mjs → CreateObjectDialog-4VMOUKM7.mjs} +10 -10
- package/dist/lib/neutral/CreateObjectDialog-4VMOUKM7.mjs.map +7 -0
- package/dist/lib/neutral/{CreateSpaceDialog-CDGSEIJB.mjs → CreateSpaceDialog-WWNUTLVK.mjs} +6 -6
- package/dist/lib/neutral/CreateSpaceDialog-WWNUTLVK.mjs.map +7 -0
- package/dist/lib/neutral/{ImportSpaceDialog-7GKV4OTF.mjs → ImportSpaceDialog-CSSRTFAO.mjs} +4 -4
- package/dist/lib/neutral/ImportSpaceDialog-CSSRTFAO.mjs.map +7 -0
- package/dist/lib/neutral/{InlineSyncStatus-TBJKZCH7.mjs → InlineSyncStatus-UOUTAPCU.mjs} +4 -4
- package/dist/lib/neutral/InlineSyncStatus-UOUTAPCU.mjs.map +7 -0
- package/dist/lib/neutral/{JoinDialog-SSFKRFTJ.mjs → JoinDialog-QZGNRJ4P.mjs} +16 -9
- package/dist/lib/neutral/JoinDialog-QZGNRJ4P.mjs.map +7 -0
- package/dist/lib/neutral/{MembersContainer-KMCQDWCS.mjs → MembersContainer-OWCAMBKS.mjs} +5 -5
- package/dist/lib/neutral/MembersContainer-OWCAMBKS.mjs.map +7 -0
- package/dist/lib/neutral/{MenuFooter-5JT7V5FZ.mjs → MenuFooter-QCNFUIAO.mjs} +6 -6
- package/dist/lib/neutral/MenuFooter-QCNFUIAO.mjs.map +7 -0
- package/dist/lib/neutral/{ObjectCardStack-IXNU3HEN.mjs → ObjectCardStack-DHVDRNRK.mjs} +4 -4
- package/dist/lib/neutral/ObjectCardStack-DHVDRNRK.mjs.map +7 -0
- package/dist/lib/neutral/RecordArticle-JSORXRAA.mjs +102 -0
- package/dist/lib/neutral/RecordArticle-JSORXRAA.mjs.map +7 -0
- package/dist/lib/neutral/{RelatedArticle-YDNGUDAJ.mjs → RelatedArticle-YRCRBIYU.mjs} +11 -9
- package/dist/lib/neutral/RelatedArticle-YRCRBIYU.mjs.map +7 -0
- package/dist/lib/neutral/RenamePopover-XBZAKNM7.mjs +96 -0
- package/dist/lib/neutral/RenamePopover-XBZAKNM7.mjs.map +7 -0
- package/dist/lib/neutral/{SchemaContainer-Q4BP6X2M.mjs → SchemaContainer-2NK5YB5O.mjs} +2 -2
- package/dist/lib/neutral/SchemaContainer-2NK5YB5O.mjs.map +7 -0
- package/dist/lib/neutral/{SmallPresenceLive-GUF4WLUC.mjs → SmallPresenceLive-L4H7WJOA.mjs} +2 -2
- package/dist/lib/neutral/SpaceHomeArticle-ZV7EERLS.mjs +78 -0
- package/dist/lib/neutral/SpaceHomeArticle-ZV7EERLS.mjs.map +7 -0
- package/dist/lib/neutral/SpaceHomeRecent-ZR4LIIUD.mjs +83 -0
- package/dist/lib/neutral/SpaceHomeRecent-ZR4LIIUD.mjs.map +7 -0
- package/dist/lib/neutral/SpacePlugin.mjs +1 -1
- package/dist/lib/neutral/SpacePlugin.node.mjs +4 -4
- package/dist/lib/neutral/SpacePlugin.node.mjs.map +3 -3
- package/dist/lib/neutral/{SpacePresence-ACEXUS3N.mjs → SpacePresence-PDTEDHDE.mjs} +2 -2
- package/dist/lib/neutral/{SpaceSettings-YAHBOY5T.mjs → SpaceSettings-IVTCSLNT.mjs} +6 -6
- package/dist/lib/neutral/SpaceSettings-IVTCSLNT.mjs.map +7 -0
- package/dist/lib/neutral/{SpaceSettingsContainer-IB34TEOB.mjs → SpaceSettingsContainer-QAFQ4LWC.mjs} +8 -8
- package/dist/lib/neutral/SpaceSettingsContainer-QAFQ4LWC.mjs.map +7 -0
- package/dist/lib/neutral/{SyncStatus-CWOXWDDZ.mjs → SyncStatus-J7CHLO5O.mjs} +3 -3
- package/dist/lib/neutral/SyncStatus-J7CHLO5O.mjs.map +7 -0
- package/dist/lib/neutral/{add-object-QYOMCBJA.mjs → add-object-S64XELC3.mjs} +10 -10
- package/dist/lib/neutral/add-object-S64XELC3.mjs.map +7 -0
- package/dist/lib/neutral/{add-relation-HV3VCMJG.mjs → add-relation-GWSE42BU.mjs} +3 -3
- package/dist/lib/neutral/{add-type-CZVKSEIW.mjs → add-type-C3KYE6PI.mjs} +3 -3
- package/dist/lib/neutral/{app-graph-builder-SQGCUCDO.mjs → app-graph-builder-TMAD2ZTH.mjs} +128 -71
- package/dist/lib/neutral/app-graph-builder-TMAD2ZTH.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +13 -15
- package/dist/lib/neutral/capabilities/index.mjs.map +3 -3
- package/dist/lib/neutral/capabilities/node.mjs +2 -2
- package/dist/lib/neutral/{chunk-EEXRKYOD.mjs → chunk-2LTGSUGQ.mjs} +2 -2
- package/dist/lib/neutral/{chunk-EEXRKYOD.mjs.map → chunk-2LTGSUGQ.mjs.map} +2 -2
- package/dist/lib/neutral/chunk-2RPQHHD7.mjs +17 -0
- package/dist/lib/neutral/chunk-2RPQHHD7.mjs.map +7 -0
- package/dist/lib/neutral/chunk-5ZZS3KMK.mjs +46 -0
- package/dist/lib/neutral/chunk-5ZZS3KMK.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-K34BPPQE.mjs → chunk-DSYEB2UN.mjs} +29 -17
- package/dist/lib/neutral/chunk-DSYEB2UN.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-YY62663T.mjs → chunk-F2VJ6VBV.mjs} +3 -3
- package/dist/lib/neutral/chunk-F2VJ6VBV.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-JHZGRYGS.mjs → chunk-G2KHP7FX.mjs} +2 -2
- package/dist/lib/neutral/{chunk-JHZGRYGS.mjs.map → chunk-G2KHP7FX.mjs.map} +2 -2
- package/dist/lib/neutral/chunk-I5JXVBXX.mjs +8 -0
- package/dist/lib/neutral/{chunk-BBQR23DW.mjs → chunk-LY6XK5MV.mjs} +105 -128
- package/dist/lib/neutral/chunk-LY6XK5MV.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-7WUJENBF.mjs → chunk-PSCIOT7Q.mjs} +4 -4
- package/dist/lib/neutral/chunk-PSCIOT7Q.mjs.map +7 -0
- package/dist/lib/neutral/{close-FGQN37PK.mjs → close-YZHFYPUN.mjs} +3 -3
- package/dist/lib/neutral/components/index.mjs +7 -7
- package/dist/lib/neutral/components/index.mjs.map +3 -3
- package/dist/lib/neutral/containers/index.mjs +23 -21
- package/dist/lib/neutral/containers/index.mjs.map +3 -3
- package/dist/lib/neutral/{create-EPIFSRJA.mjs → create-XKU2W6QC.mjs} +6 -6
- package/dist/lib/neutral/create-XKU2W6QC.mjs.map +7 -0
- package/dist/lib/neutral/{delete-LIA5M3WI.mjs → delete-EFM7CAVO.mjs} +3 -3
- package/dist/lib/neutral/{delete-field-ZIGFXFHY.mjs → delete-field-ONAPFFO5.mjs} +3 -3
- package/dist/lib/neutral/{duplicate-object-X37FM6PW.mjs → duplicate-object-OJRPFV5I.mjs} +3 -3
- package/dist/lib/neutral/{export-space-VWJHVXWF.mjs → export-space-M5RNVUQX.mjs} +3 -3
- package/dist/lib/neutral/{get-share-link-3LEA5FSK.mjs → get-share-link-FUQBJPSQ.mjs} +4 -4
- package/dist/lib/neutral/hooks/index.mjs +16 -4
- package/dist/lib/neutral/hooks/index.mjs.map +3 -3
- package/dist/lib/neutral/{identity-created-57RML5XT.mjs → identity-created-QMV4DANW.mjs} +4 -4
- package/dist/lib/neutral/identity-created-QMV4DANW.mjs.map +7 -0
- package/dist/lib/neutral/{import-space-Y5L3QE3C.mjs → import-space-L3AUIARM.mjs} +3 -3
- package/dist/lib/neutral/index.mjs +12 -6
- package/dist/lib/neutral/{join-Z5K4OAIG.mjs → join-VY3QYBU7.mjs} +4 -4
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/lib/neutral/meta.mjs +1 -1
- package/dist/lib/neutral/{migrate-G7I52UKD.mjs → migrate-WPUISBC4.mjs} +3 -3
- package/dist/lib/neutral/{navigation-handler-QQJYEMAS.mjs → navigation-handler-IKXZGMII.mjs} +4 -4
- package/dist/lib/neutral/{navigation-resolver-IFVQRCGU.mjs → navigation-resolver-VBPGMFCE.mjs} +7 -7
- package/dist/lib/neutral/navigation-resolver-VBPGMFCE.mjs.map +7 -0
- package/dist/lib/neutral/{open-CPWVZSI4.mjs → open-RRYULTSY.mjs} +3 -3
- package/dist/lib/neutral/{open-create-object-4LN4PR6N.mjs → open-create-object-BRUVFZSY.mjs} +4 -4
- package/dist/lib/neutral/{open-create-space-VPAW3F2T.mjs → open-create-space-ARLQWW65.mjs} +4 -4
- package/dist/lib/neutral/{open-import-space-VLQ5V55H.mjs → open-import-space-65H57JXX.mjs} +4 -4
- package/dist/lib/neutral/{open-members-BEXOSSBS.mjs → open-members-677P6KD3.mjs} +6 -6
- package/dist/lib/neutral/open-members-677P6KD3.mjs.map +7 -0
- package/dist/lib/neutral/{open-settings-RHDBW2K5.mjs → open-settings-PRBSGO6D.mjs} +6 -6
- package/dist/lib/neutral/open-settings-PRBSGO6D.mjs.map +7 -0
- package/dist/lib/neutral/operations/index.mjs +3 -3
- package/dist/lib/neutral/plugin.mjs +4 -4
- package/dist/lib/neutral/{react-root-2DJPZQT4.mjs → react-root-YLYRCSAZ.mjs} +2 -2
- package/dist/lib/neutral/{react-root-2DJPZQT4.mjs.map → react-root-YLYRCSAZ.mjs.map} +3 -3
- package/dist/lib/neutral/{react-surface-LYCTOQLY.mjs → react-surface-5EQ6X4CL.mjs} +48 -70
- package/dist/lib/neutral/react-surface-5EQ6X4CL.mjs.map +7 -0
- package/dist/lib/neutral/{remove-objects-OWDMA4IF.mjs → remove-objects-PWJJI36V.mjs} +5 -5
- package/dist/lib/neutral/remove-objects-PWJJI36V.mjs.map +7 -0
- package/dist/lib/neutral/{rename-SR6BBSPU.mjs → rename-4727PKI4.mjs} +8 -7
- package/dist/lib/neutral/rename-4727PKI4.mjs.map +7 -0
- package/dist/lib/neutral/{rename-object-5H6E5AOX.mjs → rename-object-FXUAB5FN.mjs} +8 -7
- package/dist/lib/neutral/rename-object-FXUAB5FN.mjs.map +7 -0
- package/dist/lib/neutral/{repair-PSYRVSJ6.mjs → repair-HMH476U3.mjs} +3 -3
- package/dist/lib/neutral/repair-HMH476U3.mjs.map +7 -0
- package/dist/lib/neutral/{restore-field-UHDG2ZQM.mjs → restore-field-3ICSIHGA.mjs} +3 -3
- package/dist/lib/neutral/{restore-objects-2UD5P6OC.mjs → restore-objects-V2BTEWN3.mjs} +3 -3
- package/dist/lib/neutral/{settings-Q32EQCHX.mjs → settings-5IBSYBVU.mjs} +3 -3
- package/dist/lib/neutral/{settings-Q32EQCHX.mjs.map → settings-5IBSYBVU.mjs.map} +3 -3
- package/dist/lib/neutral/{share-5Y4NZA75.mjs → share-ZOZPAUGI.mjs} +3 -3
- package/dist/lib/neutral/{snapshot-H3HKOFVP.mjs → snapshot-ZC5PU55W.mjs} +3 -3
- package/dist/lib/neutral/{spaces-ready-GBF72QJH.mjs → spaces-ready-EXPCJD4N.mjs} +11 -11
- package/dist/lib/neutral/spaces-ready-EXPCJD4N.mjs.map +7 -0
- package/dist/lib/neutral/{state-DPBOZRAW.mjs → state-KMH2NUAL.mjs} +2 -2
- package/dist/lib/neutral/state-KMH2NUAL.mjs.map +7 -0
- package/dist/lib/neutral/testing.mjs +1 -1
- package/dist/lib/neutral/translations.mjs +4 -2
- package/dist/lib/neutral/translations.mjs.map +3 -3
- package/dist/lib/neutral/types/index.mjs +9 -3
- package/dist/lib/neutral/{undo-mappings-OBRQOYN4.mjs → undo-mappings-P43EAUGI.mjs} +5 -5
- package/dist/lib/neutral/{undo-mappings-OBRQOYN4.mjs.map → undo-mappings-P43EAUGI.mjs.map} +3 -3
- package/dist/lib/neutral/{wait-for-object-3TAWUWTP.mjs → wait-for-object-WURK2SLQ.mjs} +3 -3
- package/dist/types/dx.config.d.ts +28 -0
- package/dist/types/dx.config.d.ts.map +1 -0
- package/dist/types/src/SpacePlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder/extensions/collections.d.ts +12 -0
- package/dist/types/src/capabilities/app-graph-builder/extensions/collections.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder/extensions/database.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder/extensions/shared.d.ts +0 -1
- package/dist/types/src/capabilities/app-graph-builder/extensions/shared.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder/extensions/spaces.d.ts +13 -1
- package/dist/types/src/capabilities/app-graph-builder/extensions/spaces.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts +1 -1
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +10 -54
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/navigation-handler/index.d.ts +1 -1
- package/dist/types/src/capabilities/navigation-handler/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/navigation-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/node.d.ts +3 -33
- package/dist/types/src/capabilities/node.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +2 -2
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/commands/database/add.d.ts.map +1 -1
- package/dist/types/src/commands/queue/query.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettings.stories.d.ts +20 -0
- package/dist/types/src/components/SpaceSettings/SpaceSettings.stories.d.ts.map +1 -1
- package/dist/types/src/constants.d.ts +1 -2
- package/dist/types/src/constants.d.ts.map +1 -1
- package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.d.ts.map +1 -1
- package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.stories.d.ts +20 -0
- package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.stories.d.ts.map +1 -1
- package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.d.ts.map +1 -1
- package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.stories.d.ts +20 -0
- package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.stories.d.ts.map +1 -1
- package/dist/types/src/containers/JoinDialog/JoinDialog.d.ts.map +1 -1
- package/dist/types/src/containers/JoinDialog/JoinDialog.stories.d.ts +20 -0
- package/dist/types/src/containers/JoinDialog/JoinDialog.stories.d.ts.map +1 -1
- package/dist/types/src/containers/ObjectProperties/ObjectProperties.d.ts +1 -1
- package/dist/types/src/containers/RecordArticle/RecordArticle.d.ts.map +1 -1
- package/dist/types/src/containers/RenamePopover/RenamePopover.d.ts +12 -0
- package/dist/types/src/containers/RenamePopover/RenamePopover.d.ts.map +1 -0
- package/dist/types/src/containers/RenamePopover/index.d.ts +3 -0
- package/dist/types/src/containers/RenamePopover/index.d.ts.map +1 -0
- package/dist/types/src/containers/SpaceHomeArticle/SpaceHomeArticle.d.ts +15 -0
- package/dist/types/src/containers/SpaceHomeArticle/SpaceHomeArticle.d.ts.map +1 -0
- package/dist/types/src/containers/SpaceHomeArticle/index.d.ts +2 -0
- package/dist/types/src/containers/SpaceHomeArticle/index.d.ts.map +1 -0
- package/dist/types/src/containers/SpaceHomeRecent/SpaceHomeRecent.d.ts +22 -0
- package/dist/types/src/containers/SpaceHomeRecent/SpaceHomeRecent.d.ts.map +1 -0
- package/dist/types/src/containers/SpaceHomeRecent/index.d.ts +2 -0
- package/dist/types/src/containers/SpaceHomeRecent/index.d.ts.map +1 -0
- package/dist/types/src/containers/SpacePresence/SpacePresence.stories.d.ts +20 -0
- package/dist/types/src/containers/SpacePresence/SpacePresence.stories.d.ts.map +1 -1
- package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.stories.d.ts +20 -0
- package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.stories.d.ts.map +1 -1
- package/dist/types/src/containers/SyncStatus/SyncStatus.stories.d.ts +20 -0
- package/dist/types/src/containers/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
- package/dist/types/src/containers/index.d.ts +3 -2
- package/dist/types/src/containers/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
- package/dist/types/src/hooks/useRelatedObjects.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +28 -2
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/operations/add-object.d.ts.map +1 -1
- package/dist/types/src/operations/helpers.d.ts.map +1 -1
- package/dist/types/src/operations/remove-objects.d.ts.map +1 -1
- package/dist/types/src/operations/rename-object.d.ts.map +1 -1
- package/dist/types/src/operations/rename.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +20 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/capabilities.d.ts.map +1 -1
- package/dist/types/src/types/events.d.ts.map +1 -1
- package/dist/types/src/types/form.d.ts +7 -1
- package/dist/types/src/types/form.d.ts.map +1 -1
- package/dist/types/src/types/index.d.ts +1 -0
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/surface.d.ts +26 -0
- package/dist/types/src/types/surface.d.ts.map +1 -0
- package/dist/types/src/types/types.d.ts +7 -0
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dx.config.ts +35 -0
- package/package.json +51 -50
- package/src/SpacePlugin.test.ts +1 -1
- package/src/SpacePlugin.ts +1 -7
- package/src/capabilities/app-graph-builder/extensions/collections.ts +44 -24
- package/src/capabilities/app-graph-builder/extensions/companions.ts +3 -3
- package/src/capabilities/app-graph-builder/extensions/database.ts +17 -14
- package/src/capabilities/app-graph-builder/extensions/settings.ts +9 -9
- package/src/capabilities/app-graph-builder/extensions/shared.ts +5 -20
- package/src/capabilities/app-graph-builder/extensions/spaces.ts +49 -26
- package/src/capabilities/identity-created.ts +3 -3
- package/src/capabilities/index.ts +0 -1
- package/src/capabilities/navigation-resolver.ts +6 -13
- package/src/capabilities/react-root.tsx +1 -1
- package/src/capabilities/react-surface.tsx +58 -88
- package/src/capabilities/repair.ts +4 -2
- package/src/capabilities/settings.ts +2 -2
- package/src/capabilities/spaces-ready.ts +8 -15
- package/src/capabilities/state.ts +1 -1
- package/src/capabilities/undo-mappings.ts +3 -3
- package/src/commands/database/add.ts +4 -2
- package/src/commands/queue/query.ts +4 -3
- package/src/components/AwaitingObject/AwaitingObject.tsx +1 -1
- package/src/components/CreateObjectPanel/CreateObjectPanel.tsx +2 -2
- package/src/components/ForeignKeys/ForeignKeys.tsx +1 -1
- package/src/components/SpaceSettings/SpaceSettings.tsx +3 -3
- package/src/constants.ts +5 -6
- package/src/containers/CollectionArticle/CollectionArticle.tsx +10 -6
- package/src/containers/CollectionSection/CollectionSection.tsx +1 -1
- package/src/containers/CreateObjectDialog/CreateObjectDialog.tsx +10 -7
- package/src/containers/CreateSpaceDialog/CreateSpaceDialog.tsx +5 -5
- package/src/containers/ImportSpaceDialog/ImportSpaceDialog.tsx +3 -3
- package/src/containers/InlineSyncStatus/InlineSyncStatus.tsx +3 -3
- package/src/containers/JoinDialog/JoinDialog.tsx +13 -11
- package/src/containers/MembersContainer/MembersContainer.tsx +5 -5
- package/src/containers/MenuFooter/MenuFooter.tsx +3 -3
- package/src/containers/ObjectCardStack/ObjectCardStack.tsx +3 -3
- package/src/containers/RecordArticle/RecordArticle.tsx +67 -8
- package/src/containers/RelatedArticle/RelatedArticle.tsx +17 -13
- package/src/containers/RenamePopover/RenamePopover.tsx +112 -0
- package/src/containers/RenamePopover/index.ts +6 -0
- package/src/containers/SchemaContainer/SchemaContainer.tsx +1 -1
- package/src/containers/SpaceHomeArticle/SpaceHomeArticle.tsx +100 -0
- package/src/containers/SpaceHomeArticle/index.ts +5 -0
- package/src/containers/SpaceHomeRecent/SpaceHomeRecent.tsx +101 -0
- package/src/containers/SpaceHomeRecent/index.ts +5 -0
- package/src/containers/SpacePresence/SpacePresence.tsx +1 -1
- package/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.tsx +7 -7
- package/src/containers/SyncStatus/SyncStatus.tsx +2 -2
- package/src/containers/index.ts +3 -2
- package/src/hooks/useInputSurfaceLookup.tsx +3 -2
- package/src/hooks/useRelatedObjects.ts +13 -1
- package/src/meta.ts +2 -27
- package/src/operations/add-object.ts +7 -14
- package/src/operations/create.ts +2 -2
- package/src/operations/definitions.ts +1 -1
- package/src/operations/helpers.ts +1 -1
- package/src/operations/open-members.ts +3 -3
- package/src/operations/open-settings.ts +3 -3
- package/src/operations/remove-objects.ts +3 -2
- package/src/operations/rename-object.ts +3 -2
- package/src/operations/rename.ts +3 -2
- package/src/translations.ts +3 -1
- package/src/types/capabilities.ts +8 -8
- package/src/types/events.ts +5 -5
- package/src/types/form.ts +5 -1
- package/src/types/index.ts +1 -0
- package/src/types/surface.ts +31 -0
- package/src/types/types.ts +9 -1
- package/src/util.ts +3 -3
- package/dist/lib/neutral/CollectionArticle-S3OF5KJ7.mjs.map +0 -7
- package/dist/lib/neutral/CreateObjectDialog-66R3K6I3.mjs.map +0 -7
- package/dist/lib/neutral/CreateSpaceDialog-CDGSEIJB.mjs.map +0 -7
- package/dist/lib/neutral/EntityRenamePopover-MYSW262F.mjs +0 -59
- package/dist/lib/neutral/EntityRenamePopover-MYSW262F.mjs.map +0 -7
- package/dist/lib/neutral/ImportSpaceDialog-7GKV4OTF.mjs.map +0 -7
- package/dist/lib/neutral/InlineSyncStatus-TBJKZCH7.mjs.map +0 -7
- package/dist/lib/neutral/JoinDialog-SSFKRFTJ.mjs.map +0 -7
- package/dist/lib/neutral/MembersContainer-KMCQDWCS.mjs.map +0 -7
- package/dist/lib/neutral/MenuFooter-5JT7V5FZ.mjs.map +0 -7
- package/dist/lib/neutral/ObjectCardStack-IXNU3HEN.mjs.map +0 -7
- package/dist/lib/neutral/RecordArticle-QWGH25NT.mjs +0 -51
- package/dist/lib/neutral/RecordArticle-QWGH25NT.mjs.map +0 -7
- package/dist/lib/neutral/RelatedArticle-YDNGUDAJ.mjs.map +0 -7
- package/dist/lib/neutral/SchemaContainer-Q4BP6X2M.mjs.map +0 -7
- package/dist/lib/neutral/SpaceRenamePopover-KFWL4CTJ.mjs +0 -56
- package/dist/lib/neutral/SpaceRenamePopover-KFWL4CTJ.mjs.map +0 -7
- package/dist/lib/neutral/SpaceSettings-YAHBOY5T.mjs.map +0 -7
- package/dist/lib/neutral/SpaceSettingsContainer-IB34TEOB.mjs.map +0 -7
- package/dist/lib/neutral/SyncStatus-CWOXWDDZ.mjs.map +0 -7
- package/dist/lib/neutral/add-object-QYOMCBJA.mjs.map +0 -7
- package/dist/lib/neutral/app-graph-builder-SQGCUCDO.mjs.map +0 -7
- package/dist/lib/neutral/app-graph-serializer-IBPPU5VR.mjs +0 -81
- package/dist/lib/neutral/app-graph-serializer-IBPPU5VR.mjs.map +0 -7
- package/dist/lib/neutral/chunk-4RTSNTDC.mjs +0 -37
- package/dist/lib/neutral/chunk-4RTSNTDC.mjs.map +0 -7
- package/dist/lib/neutral/chunk-7WUJENBF.mjs.map +0 -7
- package/dist/lib/neutral/chunk-B7DBIARR.mjs +0 -8
- package/dist/lib/neutral/chunk-BBQR23DW.mjs.map +0 -7
- package/dist/lib/neutral/chunk-F5MESIRH.mjs +0 -19
- package/dist/lib/neutral/chunk-F5MESIRH.mjs.map +0 -7
- package/dist/lib/neutral/chunk-K34BPPQE.mjs.map +0 -7
- package/dist/lib/neutral/chunk-YY62663T.mjs.map +0 -7
- package/dist/lib/neutral/create-EPIFSRJA.mjs.map +0 -7
- package/dist/lib/neutral/identity-created-57RML5XT.mjs.map +0 -7
- package/dist/lib/neutral/navigation-resolver-IFVQRCGU.mjs.map +0 -7
- package/dist/lib/neutral/open-members-BEXOSSBS.mjs.map +0 -7
- package/dist/lib/neutral/open-settings-RHDBW2K5.mjs.map +0 -7
- package/dist/lib/neutral/react-surface-LYCTOQLY.mjs.map +0 -7
- package/dist/lib/neutral/remove-objects-OWDMA4IF.mjs.map +0 -7
- package/dist/lib/neutral/rename-SR6BBSPU.mjs.map +0 -7
- package/dist/lib/neutral/rename-object-5H6E5AOX.mjs.map +0 -7
- package/dist/lib/neutral/repair-PSYRVSJ6.mjs.map +0 -7
- package/dist/lib/neutral/spaces-ready-GBF72QJH.mjs.map +0 -7
- package/dist/lib/neutral/state-DPBOZRAW.mjs.map +0 -7
- package/dist/types/src/capabilities/app-graph-serializer.d.ts +0 -5
- package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +0 -1
- package/dist/types/src/containers/EntityRenamePopover/EntityRenamePopover.d.ts +0 -7
- package/dist/types/src/containers/EntityRenamePopover/EntityRenamePopover.d.ts.map +0 -1
- package/dist/types/src/containers/EntityRenamePopover/index.d.ts +0 -2
- package/dist/types/src/containers/EntityRenamePopover/index.d.ts.map +0 -1
- package/dist/types/src/containers/SpaceRenamePopover/SpaceRenamePopover.d.ts +0 -7
- package/dist/types/src/containers/SpaceRenamePopover/SpaceRenamePopover.d.ts.map +0 -1
- package/dist/types/src/containers/SpaceRenamePopover/index.d.ts +0 -2
- package/dist/types/src/containers/SpaceRenamePopover/index.d.ts.map +0 -1
- package/src/capabilities/app-graph-serializer.ts +0 -85
- package/src/containers/EntityRenamePopover/EntityRenamePopover.tsx +0 -52
- package/src/containers/EntityRenamePopover/index.ts +0 -5
- package/src/containers/SpaceRenamePopover/SpaceRenamePopover.tsx +0 -54
- package/src/containers/SpaceRenamePopover/index.ts +0 -5
- /package/dist/lib/neutral/{SmallPresenceLive-GUF4WLUC.mjs.map → SmallPresenceLive-L4H7WJOA.mjs.map} +0 -0
- /package/dist/lib/neutral/{SpacePresence-ACEXUS3N.mjs.map → SpacePresence-PDTEDHDE.mjs.map} +0 -0
- /package/dist/lib/neutral/{add-relation-HV3VCMJG.mjs.map → add-relation-GWSE42BU.mjs.map} +0 -0
- /package/dist/lib/neutral/{add-type-CZVKSEIW.mjs.map → add-type-C3KYE6PI.mjs.map} +0 -0
- /package/dist/lib/neutral/{chunk-B7DBIARR.mjs.map → chunk-I5JXVBXX.mjs.map} +0 -0
- /package/dist/lib/neutral/{close-FGQN37PK.mjs.map → close-YZHFYPUN.mjs.map} +0 -0
- /package/dist/lib/neutral/{delete-LIA5M3WI.mjs.map → delete-EFM7CAVO.mjs.map} +0 -0
- /package/dist/lib/neutral/{delete-field-ZIGFXFHY.mjs.map → delete-field-ONAPFFO5.mjs.map} +0 -0
- /package/dist/lib/neutral/{duplicate-object-X37FM6PW.mjs.map → duplicate-object-OJRPFV5I.mjs.map} +0 -0
- /package/dist/lib/neutral/{export-space-VWJHVXWF.mjs.map → export-space-M5RNVUQX.mjs.map} +0 -0
- /package/dist/lib/neutral/{get-share-link-3LEA5FSK.mjs.map → get-share-link-FUQBJPSQ.mjs.map} +0 -0
- /package/dist/lib/neutral/{import-space-Y5L3QE3C.mjs.map → import-space-L3AUIARM.mjs.map} +0 -0
- /package/dist/lib/neutral/{join-Z5K4OAIG.mjs.map → join-VY3QYBU7.mjs.map} +0 -0
- /package/dist/lib/neutral/{migrate-G7I52UKD.mjs.map → migrate-WPUISBC4.mjs.map} +0 -0
- /package/dist/lib/neutral/{navigation-handler-QQJYEMAS.mjs.map → navigation-handler-IKXZGMII.mjs.map} +0 -0
- /package/dist/lib/neutral/{open-CPWVZSI4.mjs.map → open-RRYULTSY.mjs.map} +0 -0
- /package/dist/lib/neutral/{open-create-object-4LN4PR6N.mjs.map → open-create-object-BRUVFZSY.mjs.map} +0 -0
- /package/dist/lib/neutral/{open-create-space-VPAW3F2T.mjs.map → open-create-space-ARLQWW65.mjs.map} +0 -0
- /package/dist/lib/neutral/{open-import-space-VLQ5V55H.mjs.map → open-import-space-65H57JXX.mjs.map} +0 -0
- /package/dist/lib/neutral/{restore-field-UHDG2ZQM.mjs.map → restore-field-3ICSIHGA.mjs.map} +0 -0
- /package/dist/lib/neutral/{restore-objects-2UD5P6OC.mjs.map → restore-objects-V2BTEWN3.mjs.map} +0 -0
- /package/dist/lib/neutral/{share-5Y4NZA75.mjs.map → share-ZOZPAUGI.mjs.map} +0 -0
- /package/dist/lib/neutral/{snapshot-H3HKOFVP.mjs.map → snapshot-ZC5PU55W.mjs.map} +0 -0
- /package/dist/lib/neutral/{wait-for-object-3TAWUWTP.mjs.map → wait-for-object-WURK2SLQ.mjs.map} +0 -0
package/src/meta.ts
CHANGED
|
@@ -3,32 +3,7 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { Plugin } from '@dxos/app-framework';
|
|
6
|
-
import { DXN } from '@dxos/keys';
|
|
7
|
-
import { trim } from '@dxos/util';
|
|
8
6
|
|
|
9
|
-
|
|
10
|
-
key: DXN.make('org.dxos.plugin.space'),
|
|
11
|
-
name: 'Spaces',
|
|
12
|
-
author: 'DXOS',
|
|
13
|
-
spec: 'PLUGIN.mdl',
|
|
14
|
-
description: trim`
|
|
15
|
-
SpacePlugin is the core workspace container for DXOS Composer. It owns the full lifecycle of
|
|
16
|
-
collaborative spaces — creating, joining, opening, closing, and resetting them — and manages
|
|
17
|
-
the membership and invitation system that controls who can access each space.
|
|
7
|
+
import config from '../dx.config';
|
|
18
8
|
|
|
19
|
-
|
|
20
|
-
so that opening a space or object updates the layout, and tracks real-time peer presence so
|
|
21
|
-
that the UI can show which collaborators are viewing each object.
|
|
22
|
-
|
|
23
|
-
Object and schema management sit at the heart of SpacePlugin: it registers the canonical DXOS
|
|
24
|
-
schema types (Person, Task, Project, Event, …), provides the create-object dialog that all
|
|
25
|
-
other plugins populate with their own types, and exposes operations for adding, removing,
|
|
26
|
-
restoring, duplicating, and serialising objects. Import/export of space archives and schema
|
|
27
|
-
migrations are also handled here.
|
|
28
|
-
|
|
29
|
-
A full set of undo-aware operations (RemoveObjects/RestoreObjects, DeleteField/RestoreField)
|
|
30
|
-
integrates with the process manager so that destructive edits can be reversed in one step.
|
|
31
|
-
`,
|
|
32
|
-
icon: 'ph--planet--regular',
|
|
33
|
-
tags: ['system'],
|
|
34
|
-
});
|
|
9
|
+
export const meta = Plugin.getMetaFromConfig(config);
|
|
@@ -3,14 +3,7 @@
|
|
|
3
3
|
import * as Effect from 'effect/Effect';
|
|
4
4
|
import * as Option from 'effect/Option';
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
CollectionModel,
|
|
8
|
-
getCollectionsPath,
|
|
9
|
-
getObjectPath,
|
|
10
|
-
getTypePath,
|
|
11
|
-
getTypeSlug,
|
|
12
|
-
getTypeSlugFromUri,
|
|
13
|
-
} from '@dxos/app-toolkit';
|
|
6
|
+
import { CollectionModel, Paths } from '@dxos/app-toolkit';
|
|
14
7
|
import { Operation } from '@dxos/compute';
|
|
15
8
|
import { Collection, Database, Filter, Obj, Query, Scope, Type } from '@dxos/echo';
|
|
16
9
|
import { invariant } from '@dxos/invariant';
|
|
@@ -62,14 +55,14 @@ const handler: Operation.WithHandler<typeof SpaceOperation.AddObject> = SpaceOpe
|
|
|
62
55
|
// Graph type nodes are keyed by a slash-free slug (entity id for stored types, typename for
|
|
63
56
|
// static); resolve the object's own type slug rather than filing it under its (human) typename.
|
|
64
57
|
const objectType = Obj.getType(object);
|
|
65
|
-
const typeSlug = objectType ? getTypeSlug(objectType) : typename;
|
|
58
|
+
const typeSlug = objectType ? Paths.getTypeSlug(objectType) : typename;
|
|
66
59
|
const subject = getSubjectPathForNewObject({
|
|
67
60
|
spaceId: db.spaceId,
|
|
68
61
|
objectId: object.id,
|
|
69
62
|
nodeId: input.targetNodeId,
|
|
70
63
|
typename,
|
|
71
64
|
typeSlug,
|
|
72
|
-
viewTargetSlug: viewTargetUri ? getTypeSlugFromUri(viewTargetUri) : undefined,
|
|
65
|
+
viewTargetSlug: viewTargetUri ? Paths.getTypeSlugFromUri(viewTargetUri) : undefined,
|
|
73
66
|
});
|
|
74
67
|
|
|
75
68
|
return {
|
|
@@ -94,13 +87,13 @@ const getSubjectPathForNewObject = (props: {
|
|
|
94
87
|
}): string => {
|
|
95
88
|
const { nodeId, typename, typeSlug, viewTargetSlug, spaceId, objectId } = props;
|
|
96
89
|
if (typeof nodeId === 'string') {
|
|
97
|
-
return
|
|
90
|
+
return Paths.getCollectionObjectPath(nodeId, objectId);
|
|
98
91
|
}
|
|
99
92
|
if (typename === Type.getTypename(Collection.Collection)) {
|
|
100
|
-
return getCollectionsPath(spaceId, objectId);
|
|
93
|
+
return Paths.getCollectionsPath(spaceId, objectId);
|
|
101
94
|
}
|
|
102
95
|
if (viewTargetSlug) {
|
|
103
|
-
return getTypePath(spaceId, viewTargetSlug, objectId);
|
|
96
|
+
return Paths.getTypePath(spaceId, viewTargetSlug, objectId);
|
|
104
97
|
}
|
|
105
|
-
return getObjectPath(spaceId, typeSlug, objectId);
|
|
98
|
+
return Paths.getObjectPath(spaceId, typeSlug, objectId);
|
|
106
99
|
};
|
package/src/operations/create.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import * as Effect from 'effect/Effect';
|
|
4
4
|
|
|
5
5
|
import { Capability, Plugin } from '@dxos/app-framework';
|
|
6
|
-
import {
|
|
6
|
+
import { AppAnnotation } from '@dxos/app-toolkit';
|
|
7
7
|
import { Operation } from '@dxos/compute';
|
|
8
8
|
import { Annotation, Collection, Obj, Ref } from '@dxos/echo';
|
|
9
9
|
import { MigrationVersionAnnotation, Migrations } from '@dxos/migrations';
|
|
@@ -37,7 +37,7 @@ const handler: Operation.WithHandler<typeof SpaceOperation.Create> = SpaceOperat
|
|
|
37
37
|
|
|
38
38
|
const collection = Obj.make(Collection.Collection, { objects: [] });
|
|
39
39
|
Obj.update(space.properties, (properties) => {
|
|
40
|
-
Annotation.set(properties, RootCollectionAnnotation, Ref.make(collection));
|
|
40
|
+
Annotation.set(properties, AppAnnotation.RootCollectionAnnotation, Ref.make(collection));
|
|
41
41
|
if (Migrations.targetVersion) {
|
|
42
42
|
Annotation.set(properties, MigrationVersionAnnotation, Migrations.targetVersion);
|
|
43
43
|
}
|
|
@@ -30,7 +30,7 @@ export namespace CollectionOperation {
|
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
const makeKey = (name: string) => DXN.make(`${meta.
|
|
33
|
+
const makeKey = (name: string) => DXN.make(`${meta.profile.key}.operation.${name}`);
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
36
|
* Operations for the Space plugin.
|
|
@@ -7,4 +7,4 @@ export type SpaceOperationConfig = {
|
|
|
7
7
|
observability: boolean;
|
|
8
8
|
};
|
|
9
9
|
|
|
10
|
-
export const SpaceOperationConfig = Capability.make<SpaceOperationConfig>('org.dxos.plugin.space.
|
|
10
|
+
export const SpaceOperationConfig = Capability.make<SpaceOperationConfig>('org.dxos.plugin.space.operationConfig');
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import * as Effect from 'effect/Effect';
|
|
4
4
|
|
|
5
|
-
import { LayoutOperation,
|
|
5
|
+
import { LayoutOperation, Paths } from '@dxos/app-toolkit';
|
|
6
6
|
import { Operation } from '@dxos/compute';
|
|
7
7
|
|
|
8
8
|
import { SpaceOperation } from './definitions';
|
|
@@ -11,8 +11,8 @@ const handler: Operation.WithHandler<typeof SpaceOperation.OpenMembers> = SpaceO
|
|
|
11
11
|
Operation.withHandler(
|
|
12
12
|
Effect.fnUntraced(function* (input) {
|
|
13
13
|
yield* Operation.invoke(LayoutOperation.Open, {
|
|
14
|
-
subject: [
|
|
15
|
-
workspace: getSpacePath(input.space.id),
|
|
14
|
+
subject: [Paths.getSpacePath(input.space.id, 'settings')],
|
|
15
|
+
workspace: Paths.getSpacePath(input.space.id),
|
|
16
16
|
});
|
|
17
17
|
}),
|
|
18
18
|
),
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import * as Effect from 'effect/Effect';
|
|
4
4
|
|
|
5
|
-
import { LayoutOperation,
|
|
5
|
+
import { LayoutOperation, Paths } from '@dxos/app-toolkit';
|
|
6
6
|
import { Operation } from '@dxos/compute';
|
|
7
7
|
|
|
8
8
|
import { SpaceOperation } from './definitions';
|
|
@@ -11,8 +11,8 @@ const handler: Operation.WithHandler<typeof SpaceOperation.OpenSettings> = Space
|
|
|
11
11
|
Operation.withHandler(
|
|
12
12
|
Effect.fnUntraced(function* (input) {
|
|
13
13
|
yield* Operation.invoke(LayoutOperation.Open, {
|
|
14
|
-
subject: [
|
|
15
|
-
workspace: getSpacePath(input.space.id),
|
|
14
|
+
subject: [Paths.getSpacePath(input.space.id, 'settings', 'general')],
|
|
15
|
+
workspace: Paths.getSpacePath(input.space.id),
|
|
16
16
|
});
|
|
17
17
|
}),
|
|
18
18
|
),
|
|
@@ -4,7 +4,7 @@ import * as Effect from 'effect/Effect';
|
|
|
4
4
|
import * as Option from 'effect/Option';
|
|
5
5
|
|
|
6
6
|
import { Capabilities } from '@dxos/app-framework';
|
|
7
|
-
import { AppCapabilities, LayoutOperation
|
|
7
|
+
import { AppAnnotation, AppCapabilities, LayoutOperation } from '@dxos/app-toolkit';
|
|
8
8
|
import { getSpace } from '@dxos/client/echo';
|
|
9
9
|
import { Operation } from '@dxos/compute';
|
|
10
10
|
import { Annotation, Collection, Entity, Obj } from '@dxos/echo';
|
|
@@ -25,7 +25,8 @@ const handler: Operation.WithHandler<typeof SpaceOperation.RemoveObjects> = Spac
|
|
|
25
25
|
);
|
|
26
26
|
|
|
27
27
|
const parentCollection =
|
|
28
|
-
input.target ??
|
|
28
|
+
input.target ??
|
|
29
|
+
Annotation.get(space.properties, AppAnnotation.RootCollectionAnnotation).pipe(Option.getOrUndefined)?.target;
|
|
29
30
|
invariant(parentCollection, 'No parent collection found for space — cannot remove objects.');
|
|
30
31
|
|
|
31
32
|
// Type entities (persisted schemas) live outside collections — `findIndex` will
|
|
@@ -5,16 +5,17 @@ import * as Effect from 'effect/Effect';
|
|
|
5
5
|
import { LayoutOperation } from '@dxos/app-toolkit';
|
|
6
6
|
import { Operation } from '@dxos/compute';
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import { RENAME_POPOVER } from '../constants';
|
|
9
9
|
import { SpaceOperation } from './definitions';
|
|
10
10
|
|
|
11
11
|
const handler: Operation.WithHandler<typeof SpaceOperation.RenameObject> = SpaceOperation.RenameObject.pipe(
|
|
12
12
|
Operation.withHandler(
|
|
13
13
|
Effect.fnUntraced(function* (input) {
|
|
14
14
|
yield* Operation.invoke(LayoutOperation.UpdatePopover, {
|
|
15
|
-
subject:
|
|
15
|
+
subject: RENAME_POPOVER,
|
|
16
16
|
anchorId: input.caller ?? '',
|
|
17
17
|
props: input.object,
|
|
18
|
+
kind: 'rename',
|
|
18
19
|
});
|
|
19
20
|
}),
|
|
20
21
|
),
|
package/src/operations/rename.ts
CHANGED
|
@@ -5,16 +5,17 @@ import * as Effect from 'effect/Effect';
|
|
|
5
5
|
import { LayoutOperation } from '@dxos/app-toolkit';
|
|
6
6
|
import { Operation } from '@dxos/compute';
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import { RENAME_POPOVER } from '../constants';
|
|
9
9
|
import { SpaceOperation } from './definitions';
|
|
10
10
|
|
|
11
11
|
const handler: Operation.WithHandler<typeof SpaceOperation.Rename> = SpaceOperation.Rename.pipe(
|
|
12
12
|
Operation.withHandler(
|
|
13
13
|
Effect.fnUntraced(function* (input) {
|
|
14
14
|
yield* Operation.invoke(LayoutOperation.UpdatePopover, {
|
|
15
|
-
subject:
|
|
15
|
+
subject: RENAME_POPOVER,
|
|
16
16
|
anchorId: input.caller ?? '',
|
|
17
17
|
props: input.space,
|
|
18
|
+
kind: 'rename',
|
|
18
19
|
});
|
|
19
20
|
}),
|
|
20
21
|
),
|
package/src/translations.ts
CHANGED
|
@@ -111,7 +111,7 @@ export const translations = [
|
|
|
111
111
|
'delete-object.label': 'Delete task',
|
|
112
112
|
'object-deleted.label': 'Task deleted',
|
|
113
113
|
},
|
|
114
|
-
[meta.
|
|
114
|
+
[meta.profile.key]: {
|
|
115
115
|
'plugin.name': 'Spaces',
|
|
116
116
|
'add-object.label': 'Add object',
|
|
117
117
|
'first-run.message': 'Nothing selected.',
|
|
@@ -318,6 +318,8 @@ export const translations = [
|
|
|
318
318
|
'qr.label': 'QR Code',
|
|
319
319
|
'typename.label': 'Object',
|
|
320
320
|
'unnamed-collection.label': 'Unnamed',
|
|
321
|
+
'space-home-node.label': 'Home',
|
|
322
|
+
'space-home.recent.heading': 'Recent',
|
|
321
323
|
},
|
|
322
324
|
},
|
|
323
325
|
},
|
|
@@ -21,7 +21,7 @@ import * as Settings from './Settings';
|
|
|
21
21
|
import { type CreateObject, type ObjectViewerProps } from './types';
|
|
22
22
|
|
|
23
23
|
export namespace SpaceCapabilities {
|
|
24
|
-
export const Settings = Capability.make<Atom.Writable<Settings.Settings>>(`${meta.
|
|
24
|
+
export const Settings = Capability.make<Atom.Writable<Settings.Settings>>(`${meta.profile.key}.capability.settings`);
|
|
25
25
|
|
|
26
26
|
/** Schema for persisted space plugin state. */
|
|
27
27
|
export const StateSchema = Schema.mutable(
|
|
@@ -34,7 +34,7 @@ export namespace SpaceCapabilities {
|
|
|
34
34
|
export type SpaceState = Schema.Schema.Type<typeof StateSchema>;
|
|
35
35
|
|
|
36
36
|
/** Persisted state (stored in KVS/localStorage). */
|
|
37
|
-
export const State = Capability.make<Atom.Writable<SpaceState>>(`${meta.
|
|
37
|
+
export const State = Capability.make<Atom.Writable<SpaceState>>(`${meta.profile.key}.capability.state`);
|
|
38
38
|
|
|
39
39
|
/** Ephemeral space plugin state (not persisted). */
|
|
40
40
|
export type SpaceEphemeralState = {
|
|
@@ -47,18 +47,18 @@ export namespace SpaceCapabilities {
|
|
|
47
47
|
|
|
48
48
|
/** Transient/ephemeral state (not persisted). */
|
|
49
49
|
export const EphemeralState = Capability.make<Atom.Writable<SpaceEphemeralState>>(
|
|
50
|
-
`${meta.
|
|
50
|
+
`${meta.profile.key}.capability.ephemeral-state`,
|
|
51
51
|
);
|
|
52
52
|
|
|
53
53
|
export type SettingsSection = { id: string; label: Label; position?: Position };
|
|
54
|
-
export const SettingsSection = Capability.make<SettingsSection>(`${meta.
|
|
54
|
+
export const SettingsSection = Capability.make<SettingsSection>(`${meta.profile.key}.capability.settings-section`);
|
|
55
55
|
|
|
56
56
|
export type OnCreateSpace = (params: {
|
|
57
57
|
space: Space;
|
|
58
58
|
isDefault: boolean;
|
|
59
59
|
rootCollection: Collection.Collection;
|
|
60
60
|
}) => Effect.Effect<void, Error, Operation.Service>;
|
|
61
|
-
export const OnCreateSpace = Capability.make<OnCreateSpace>(`${meta.
|
|
61
|
+
export const OnCreateSpace = Capability.make<OnCreateSpace>(`${meta.profile.key}.capability.on-space-created`);
|
|
62
62
|
|
|
63
63
|
export type OnTypeAdded = (params: {
|
|
64
64
|
db: Database.Database;
|
|
@@ -66,11 +66,11 @@ export namespace SpaceCapabilities {
|
|
|
66
66
|
// TODO(wittjosiah): This is leaky.
|
|
67
67
|
show?: boolean;
|
|
68
68
|
}) => Effect.Effect<void, Error, Operation.Service>;
|
|
69
|
-
export const OnTypeAdded = Capability.make<OnTypeAdded>(`${meta.
|
|
69
|
+
export const OnTypeAdded = Capability.make<OnTypeAdded>(`${meta.profile.key}.capability.on-type-added`);
|
|
70
70
|
|
|
71
71
|
// TODO(wittjosiah): Replace with migrations, this is not a sustainable solution.
|
|
72
72
|
export type HandleRepair = (params: { space: Space; isDefault: boolean }) => Promise<void>;
|
|
73
|
-
export const Repair = Capability.make<HandleRepair>(`${meta.
|
|
73
|
+
export const Repair = Capability.make<HandleRepair>(`${meta.profile.key}.capability.repair`);
|
|
74
74
|
|
|
75
75
|
/** Typed creation entry contributed per typename by plugins that support creating objects. */
|
|
76
76
|
export type CreateObjectEntry = Readonly<{
|
|
@@ -88,7 +88,7 @@ export namespace SpaceCapabilities {
|
|
|
88
88
|
*/
|
|
89
89
|
customPanel?: ComponentType<CreateObjectCustomPanelProps>;
|
|
90
90
|
}>;
|
|
91
|
-
export const CreateObjectEntry = Capability.make<CreateObjectEntry>(`${meta.
|
|
91
|
+
export const CreateObjectEntry = Capability.make<CreateObjectEntry>(`${meta.profile.key}.capability.create-object`);
|
|
92
92
|
|
|
93
93
|
/** Props passed to a `CreateObjectEntry.customPanel`. */
|
|
94
94
|
export type CreateObjectCustomPanelProps = {
|
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.
|
|
12
|
-
export const SetupSettingsPanel = ActivationEvent.make(`${meta.
|
|
13
|
-
export const PersonalSpaceReady = ActivationEvent.make(`${meta.
|
|
14
|
-
export const SpaceCreated = ActivationEvent.make(`${meta.
|
|
15
|
-
export const TypeAdded = ActivationEvent.make(`${meta.
|
|
11
|
+
export const StateReady = AppActivationEvents.createStateEvent(`${meta.profile.key}.event.state-ready`);
|
|
12
|
+
export const SetupSettingsPanel = ActivationEvent.make(`${meta.profile.key}.event.setupSettingsPanel`);
|
|
13
|
+
export const PersonalSpaceReady = ActivationEvent.make(`${meta.profile.key}.event.defaultSpaceReady`);
|
|
14
|
+
export const SpaceCreated = ActivationEvent.make(`${meta.profile.key}.event.spaceCreated`);
|
|
15
|
+
export const TypeAdded = ActivationEvent.make(`${meta.profile.key}.event.typeAdded`);
|
|
16
16
|
}
|
package/src/types/form.ts
CHANGED
|
@@ -2,4 +2,8 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
import { TypeOptions } from '@dxos/app-toolkit';
|
|
6
|
+
|
|
7
|
+
export type TypeInputOptions = TypeOptions.TypeInputOptions;
|
|
8
|
+
export const TypeInputOptionsAnnotation = TypeOptions.TypeInputOptionsAnnotation;
|
|
9
|
+
export const TypeInputOptionsAnnotationId = TypeOptions.TypeInputOptionsAnnotationId;
|
package/src/types/index.ts
CHANGED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2026 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { Surface } from '@dxos/app-framework/ui';
|
|
6
|
+
import { type Obj } from '@dxos/echo';
|
|
7
|
+
import { type Space } from '@dxos/react-client/echo';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Surface role token for the Home article's scrollable content region. Contributors render
|
|
11
|
+
* top-to-bottom (e.g. Welcome, Recent objects, starter-prompt cards).
|
|
12
|
+
*/
|
|
13
|
+
export const SpaceHomeContent: Surface.RoleToken<{ space: Space }> = Surface.makeType(
|
|
14
|
+
'org.dxos.plugin.space.role.homeContent',
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Surface role token for the Home article's pinned-bottom region (the assistant prompt).
|
|
19
|
+
* Rendered with `limit={1}` so only a single prompt contributor mounts.
|
|
20
|
+
*/
|
|
21
|
+
export const SpaceHomePinBottom: Surface.RoleToken<{ space: Space }> = Surface.makeType(
|
|
22
|
+
'org.dxos.plugin.space.role.homePinBottom',
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Surface role token for assistant prompts (consumed by plugin-assistant).
|
|
27
|
+
* Owned by plugin-space to avoid a circular dependency.
|
|
28
|
+
*/
|
|
29
|
+
export const Prompts: Surface.RoleToken<{ subject: Obj.Any; attendableId: string }> = Surface.makeType(
|
|
30
|
+
'org.dxos.plugin.assistant.role.prompts',
|
|
31
|
+
);
|
package/src/types/types.ts
CHANGED
|
@@ -16,10 +16,18 @@ import { meta } from '#meta';
|
|
|
16
16
|
|
|
17
17
|
export * as Settings from './Settings';
|
|
18
18
|
|
|
19
|
-
export const SPACE_DIRECTORY_HANDLE = `${meta.
|
|
19
|
+
export const SPACE_DIRECTORY_HANDLE = `${meta.profile.key}.directory`;
|
|
20
20
|
|
|
21
21
|
export const SPACE_TYPE = 'org.dxos.type.space';
|
|
22
22
|
|
|
23
|
+
/**
|
|
24
|
+
* Type tag and subject literal for the per-space virtual Home node. Used as both the
|
|
25
|
+
* graph node `type` and its `data` (subject) so a single constant identifies the node
|
|
26
|
+
* at the graph layer and at the article surface filter layer. The associated {@link Space}
|
|
27
|
+
* is on `properties.space`.
|
|
28
|
+
*/
|
|
29
|
+
export const SPACE_HOME_NODE_TYPE = 'org.dxos.space.home';
|
|
30
|
+
|
|
23
31
|
/** Type for the per-space virtual "Settings" section. Single source of truth is `AppNodeMatcher.SETTINGS_SECTION_TYPE`. */
|
|
24
32
|
export const SETTINGS_SECTION_TYPE = AppNodeMatcher.SETTINGS_SECTION_TYPE;
|
|
25
33
|
|
package/src/util.ts
CHANGED
|
@@ -17,10 +17,10 @@ import { type SpaceCapabilities } from '#types';
|
|
|
17
17
|
// Constants
|
|
18
18
|
//
|
|
19
19
|
|
|
20
|
-
const PERSONAL_SPACE_LABEL: Label = ['personal-space.label', { ns: meta.
|
|
21
|
-
const UNNAMED_SPACE_LABEL: Label = ['unnamed-space.label', { ns: meta.
|
|
20
|
+
const PERSONAL_SPACE_LABEL: Label = ['personal-space.label', { ns: meta.profile.key }];
|
|
21
|
+
const UNNAMED_SPACE_LABEL: Label = ['unnamed-space.label', { ns: meta.profile.key }];
|
|
22
22
|
|
|
23
|
-
export const SPACES = `${meta.
|
|
23
|
+
export const SPACES = `${meta.profile.key}-spaces`;
|
|
24
24
|
export { SHARED } from './types';
|
|
25
25
|
|
|
26
26
|
//
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/containers/CollectionArticle/CollectionArticle.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { LayoutOperation, getCollectionObjectPath, getObjectPathFromObject } from '@dxos/app-toolkit';\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { type Collection, Obj } from '@dxos/echo';\nimport { ScrollArea, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { Card, Toolbar } from '@dxos/react-ui';\nimport { Mosaic, type MosaicStackTileComponent } from '@dxos/react-ui-mosaic';\nimport { SearchPanel, useSearchListResults } from '@dxos/react-ui-search';\nimport { getStyles } from '@dxos/ui-theme';\n\nimport { meta } from '#meta';\n\n/**\n * Article view for collections.\n */\nexport const CollectionArticle = ({ subject, attendableId }: AppSurface.ObjectArticleProps<Collection.Collection>) => {\n const { t } = useTranslation(meta.id);\n const { items, handleSearch } = useCollectionItems(subject, attendableId);\n\n return (\n <SearchPanel onSearch={handleSearch}>\n <Mosaic.Container asChild>\n <ScrollArea.Root centered padding thin>\n <ScrollArea.Viewport>\n <Mosaic.Stack\n classNames='gap-1'\n draggable={false}\n items={items}\n getId={(item) => item.id}\n Tile={ObjectTile}\n />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n </Mosaic.Container>\n </SearchPanel>\n );\n};\n\ntype ObjectItem = {\n id: string;\n object: Obj.Unknown;\n targetPath: string;\n icon: string;\n iconHue?: string;\n};\n\nconst ObjectTile: MosaicStackTileComponent<ObjectItem> = ({ data: item }) => {\n const { t } = useTranslation(meta.id);\n const { invokePromise } = useOperationInvoker();\n\n const typename = Obj.getTypename(item.object) ?? '';\n const label =\n Obj.getLabel(item.object) ??\n toLocalizedString(['object-name.placeholder', { ns: typename, defaultValue: item.id }], t);\n const styles = item.iconHue ? getStyles(item.iconHue) : undefined;\n\n const handleClick = useCallback(\n () => void invokePromise(LayoutOperation.Open, { subject: [item.targetPath] }),\n [invokePromise, item.targetPath],\n );\n\n return (\n <Card.Root fullWidth role='button' classNames='cursor-pointer' onClick={handleClick}>\n <Card.Header>\n <Toolbar.IconButton variant='ghost' label={label} icon={item.icon} iconOnly iconClassNames={styles?.fg} />\n <Card.Title>{label}</Card.Title>\n <Card.Menu />\n </Card.Header>\n </Card.Root>\n );\n};\n\n/**\n * Combined hook to get collection items with search/filter support.\n */\nconst useCollectionItems = (collection: Collection.Collection, attendableId?: string) => {\n const objects = useMemo(\n () => (collection.objects ?? []).map((ref) => ref.target).filter((obj): obj is Obj.Unknown => Obj.isObject(obj)),\n [collection.objects],\n );\n\n const items = useMemo(\n () =>\n objects.map((obj) => {\n const iconAnnotation = Obj.getIcon(obj);\n const targetPath = attendableId ? getCollectionObjectPath(attendableId, obj.id) : getObjectPathFromObject(obj);\n\n return {\n id: Obj.getURI(obj),\n object: obj,\n targetPath,\n icon: iconAnnotation?.icon ?? 'ph--circle-dashed--regular',\n iconHue: iconAnnotation?.hue,\n } satisfies ObjectItem;\n }),\n [objects, attendableId],\n );\n\n const { results, handleSearch } = useSearchListResults({\n items,\n extract: (item) => Obj.getLabel(item.object) ?? item.id,\n });\n\n return { items: results, handleSearch };\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "useCallback", "useMemo", "useOperationInvoker", "LayoutOperation", "getCollectionObjectPath", "getObjectPathFromObject", "Obj", "ScrollArea", "toLocalizedString", "useTranslation", "Card", "Toolbar", "Mosaic", "SearchPanel", "useSearchListResults", "getStyles", "meta", "CollectionArticle", "subject", "attendableId", "t", "id", "items", "handleSearch", "useCollectionItems", "onSearch", "Container", "asChild", "Root", "centered", "padding", "thin", "Viewport", "Stack", "classNames", "draggable", "getId", "item", "Tile", "ObjectTile", "data", "invokePromise", "typename", "getTypename", "object", "label", "getLabel", "ns", "defaultValue", "styles", "iconHue", "undefined", "handleClick", "Open", "targetPath", "fullWidth", "role", "onClick", "Header", "IconButton", "variant", "icon", "iconOnly", "iconClassNames", "fg", "Title", "Menu", "collection", "objects", "map", "ref", "target", "filter", "obj", "isObject", "iconAnnotation", "getIcon", "getURI", "hue", "results", "extract"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/containers/CreateObjectDialog/CreateObjectDialog.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { Capability } from '@dxos/app-framework';\nimport { useOperationInvoker, usePluginManager } from '@dxos/app-framework/ui';\nimport { allTypesQuery, getPersonalSpace, LayoutOperation } from '@dxos/app-toolkit';\nimport { PluginRegistryButton, useLayout } from '@dxos/app-toolkit/ui';\nimport { Operation } from '@dxos/compute';\nimport { Annotation, Collection, Database, Obj, Type } from '@dxos/echo';\nimport { EffectEx } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { useClient } from '@dxos/react-client';\nimport { useQuery, useSpaces } from '@dxos/react-client/echo';\nimport { Dialog, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { ViewAnnotation } from '@dxos/schema';\n\nimport { makeCreateObjectEntryForDatabaseType } from '#capabilities';\nimport { type CreateObjectOption, CreateObjectPanel, type CreateObjectPanelProps } from '#components';\nimport { meta } from '#meta';\nimport { SpaceCapabilities } from '#types';\n\nimport { getSpaceDisplayName } from '../../util';\n\nexport const CREATE_OBJECT_DIALOG = `${meta.id}.CreateObjectDialog`;\n\nexport type CreateObjectDialogProps = Pick<CreateObjectPanelProps, 'target' | 'typename' | 'initialFormValues'> & {\n views?: boolean;\n onCreateObject?: (object: Obj.Unknown) => void;\n shouldNavigate?: (object: Obj.Unknown) => boolean;\n targetNodeId?: string;\n};\n\nexport const CreateObjectDialog = ({\n target: initialTarget,\n typename: initialTypename,\n views,\n initialFormValues,\n onCreateObject,\n shouldNavigate: _shouldNavigate,\n targetNodeId,\n}: CreateObjectDialogProps) => {\n const { t } = useTranslation(meta.id);\n const manager = usePluginManager();\n const operationInvoker = useOperationInvoker();\n const { invoke } = operationInvoker;\n const [target, setTarget] = useState<Database.Database | Collection.Collection | undefined>(initialTarget);\n const [typename, setTypename] = useState<string | undefined>(initialTypename);\n const client = useClient();\n const spaces = useSpaces();\n const layout = useLayout();\n const closeRef = useRef<HTMLButtonElement | null>(null);\n\n const db = Database.isDatabase(target) ? target : target && Obj.getDatabase(target);\n const allTypes = useQuery(db, allTypesQuery);\n const space = useMemo(() => spaces.find((s) => s.db === db), [spaces, db]);\n const spaceLabel = useMemo(\n () =>\n space &&\n toLocalizedString(getSpaceDisplayName(space, { personal: space.id === getPersonalSpace(client)?.id }), t),\n [space, client, t],\n );\n\n // Index all types by typename for label/icon lookups.\n const typeByTypename = useMemo(() => {\n const map = new Map<string, Type.AnyEntity>();\n for (const type of allTypes) {\n map.set(Type.getTypename(type), type);\n }\n return map;\n }, [allTypes]);\n\n const entriesByModule = useAtomValue(manager.capabilities.atomByModule(SpaceCapabilities.CreateObjectEntry));\n\n const { capabilityEntries, pluginNameByEntryId } = useMemo(() => {\n const entries: SpaceCapabilities.CreateObjectEntry[] = [];\n const pluginByEntryId = new Map<string, string>();\n const plugins = manager.getPlugins();\n for (const [moduleId, contributions] of Object.entries(entriesByModule)) {\n const owningPlugin = plugins.find((plugin) => plugin.modules.some((module) => module.id === moduleId));\n for (const entry of contributions) {\n entries.push(entry);\n if (owningPlugin) {\n pluginByEntryId.set(entry.id, owningPlugin.meta.name);\n }\n }\n }\n return { capabilityEntries: entries, pluginNameByEntryId: pluginByEntryId };\n }, [entriesByModule, manager]);\n\n // Synthesize entries for database-persisted object schemas that have no registered capability.\n const createObjectEntries = useMemo(() => {\n const registeredIds = new Set(capabilityEntries.map((e) => e.id));\n // allTypesQuery returns meta-schema entities which may be any entity kind at runtime,\n // but the query's TypeScript type is conservatively AnyType[]; widen to enable kind narrowing below.\n const dbEntries = (allTypes as Type.AnyEntity[])\n .filter((type): type is Type.AnyObj => Type.isObject(type) && Type.getDatabase(type) != null)\n .filter((type) => !registeredIds.has(Type.getTypename(type)))\n .map((type) => makeCreateObjectEntryForDatabaseType(type));\n return [...capabilityEntries, ...dbEntries];\n }, [capabilityEntries, allTypes]);\n\n const resolve = useCallback<NonNullable<CreateObjectPanelProps['resolve']>>(\n (id) => createObjectEntries.find((entry) => entry.id === id),\n [createObjectEntries],\n );\n\n // The type selector is shown while no type has been resolved; the registry button is only relevant then.\n const showTypeSelector = !(typename && resolve(typename));\n\n const viewTypenames = useMemo(() => {\n const set = new Set<string>();\n for (const [name, type] of typeByTypename) {\n if (ViewAnnotation.has(type)) {\n set.add(name);\n }\n }\n return set;\n }, [typeByTypename]);\n\n const options = useMemo<CreateObjectOption[]>(\n () =>\n createObjectEntries\n .filter((entry) => (views === true ? viewTypenames.has(entry.id) : true))\n .map((entry) => {\n const type = typeByTypename.get(entry.id);\n const schema = type && Type.getSchema(type);\n const iconAnnotation = schema ? Annotation.IconAnnotation.get(schema).pipe(Option.getOrUndefined) : undefined;\n const isDatabase = type ? Type.getDatabase(type) != null : false;\n return {\n id: entry.id,\n label:\n (isDatabase && type ? Type.getLabel(type) : undefined) ??\n t('typename.label', { ns: entry.id, defaultValue: entry.id }),\n icon: iconAnnotation?.icon,\n iconHue: iconAnnotation?.hue,\n plugin: pluginNameByEntryId.get(entry.id),\n description: isDatabase ? spaceLabel : undefined,\n };\n }),\n [createObjectEntries, views, viewTypenames, typeByTypename, t, pluginNameByEntryId, spaceLabel],\n );\n\n const handleCreateObject = useCallback<NonNullable<CreateObjectPanelProps['onCreateObject']>>(\n ({ metadata, data = {} }) =>\n Effect.gen(function* () {\n if (!target) {\n // TODO(wittjosiah): UI feedback.\n return;\n }\n\n // NOTE: Must close before navigating or attention won't follow object.\n closeRef.current?.click();\n\n const db = Database.isDatabase(target) ? target : target && Obj.getDatabase(target);\n invariant(db, 'Missing database');\n const result = yield* metadata.createObject(data, { db, target, targetNodeId });\n const shouldNavigate = _shouldNavigate ?? (() => true);\n if (result.subject.length > 0 && shouldNavigate(result.object)) {\n if (layout.mode === 'multi') {\n yield* invoke(LayoutOperation.Set, {\n subject: [...result.subject],\n });\n yield* invoke(LayoutOperation.Expose, {\n subject: result.subject[0],\n });\n } else {\n yield* invoke(LayoutOperation.Open, {\n subject: [...result.subject],\n navigation: 'immediate',\n });\n }\n }\n\n onCreateObject?.(result.object);\n }).pipe(\n Effect.provideService(Capability.Service, manager.capabilities),\n Effect.provideService(Operation.Service, operationInvoker),\n EffectEx.runAndForwardErrors,\n ),\n [target, _shouldNavigate, onCreateObject, manager.capabilities, invoke, layout.mode],\n );\n\n return (\n <Dialog.Content>\n <Dialog.Header>\n <Dialog.Title>\n {t('create-object-dialog.title', {\n object: t('typename.label', { ns: typename, defaultValue: views ? 'View' : 'Object' }),\n })}\n </Dialog.Title>\n <Dialog.Close asChild>\n <Dialog.ActionIconButton action='close' ref={closeRef} />\n </Dialog.Close>\n </Dialog.Header>\n <Dialog.Body>\n <CreateObjectPanel\n options={options}\n spaces={spaces}\n target={target}\n typename={typename}\n initialFormValues={initialFormValues}\n defaultSpaceId={getPersonalSpace(client)?.id ?? client.spaces.get()[0]?.id}\n resolve={resolve}\n onCreateObject={handleCreateObject}\n onTargetChange={setTarget}\n onTypenameChange={setTypename}\n />\n </Dialog.Body>\n {showTypeSelector && (\n <Dialog.ActionBar>\n <Dialog.Close asChild>\n <PluginRegistryButton />\n </Dialog.Close>\n </Dialog.ActionBar>\n )}\n </Dialog.Content>\n );\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["useAtomValue", "Effect", "Option", "React", "useCallback", "useMemo", "useRef", "useState", "Capability", "useOperationInvoker", "usePluginManager", "allTypesQuery", "getPersonalSpace", "LayoutOperation", "PluginRegistryButton", "useLayout", "Operation", "Annotation", "Database", "Obj", "Type", "EffectEx", "invariant", "useClient", "useQuery", "useSpaces", "Dialog", "toLocalizedString", "useTranslation", "ViewAnnotation", "makeCreateObjectEntryForDatabaseType", "CreateObjectPanel", "meta", "SpaceCapabilities", "CREATE_OBJECT_DIALOG", "meta", "id", "manager", "usePluginManager", "operationInvoker", "useOperationInvoker", "initialTarget", "typename", "setTypename", "client", "useClient", "spaces", "useSpaces", "layout", "useLayout", "closeRef", "db", "Database", "isDatabase", "allTypes", "useQuery", "space", "useMemo", "s", "t", "map", "Type", "getTypename", "pluginByEntryId", "Map", "plugins", "contributions", "owningPlugin", "find", "entry", "entries", "pluginNameByEntryId", "entriesByModule", "capabilityEntries", "dbEntries", "Set", "type", "typeByTypename", "ViewAnnotation", "set", "add", "name", "schema", "iconAnnotation", "Annotation", "getDatabase", "label", "ns", "defaultValue", "icon", "iconHue", "plugin", "description", "createObjectEntries", "views", "viewTypenames", "spaceLabel", "invariant", "result", "createObject", "target", "targetNodeId", "invoke", "LayoutOperation", "subject", "navigation", "onCreateObject", "pipe", "_shouldNavigate", "mode", "Dialog", "asChild", "ActionIconButton", "action", "options", "initialFormValues", "defaultSpaceId", "resolve", "handleCreateObject", "onTargetChange", "onTypenameChange", "showTypeSelector", "PluginRegistryButton"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/containers/CreateSpaceDialog/CreateSpaceDialog.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport type * as Schema from 'effect/Schema';\nimport React, { useCallback, useRef } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { LayoutOperation, getSpaceHomePath, getSpacePath } from '@dxos/app-toolkit';\nimport { EffectEx } from '@dxos/effect';\nimport { Column, Dialog, useTranslation } from '@dxos/react-ui';\nimport { Form } from '@dxos/react-ui-form';\n\nimport { useInputSurfaceLookup } from '#hooks';\nimport { meta } from '#meta';\nimport { SpaceOperation } from '#operations';\nimport { SpaceForm } from '#types';\n\nexport const CREATE_SPACE_DIALOG = `${meta.id}.CreateSpaceDialog`;\n\ntype FormValues = Schema.Schema.Type<typeof SpaceForm>;\nconst initialValues: FormValues = { edgeReplication: true };\n\nexport const CreateSpaceDialog = () => {\n const closeRef = useRef<HTMLButtonElement | null>(null);\n const { t } = useTranslation(meta.id);\n const { invokePromise } = useOperationInvoker();\n\n const inputSurfaceLookup = useInputSurfaceLookup();\n\n const handleCreateSpace = useCallback(\n async (data: FormValues) => {\n const program = Effect.gen(function* () {\n const { data: result } = yield* Effect.promise(() => invokePromise(SpaceOperation.Create, data));\n if (result?.space) {\n yield* Effect.promise(() =>\n invokePromise(LayoutOperation.Open, {\n subject: [getSpaceHomePath(result.space.id)],\n workspace: getSpacePath(result.space.id),\n navigation: 'immediate',\n }),\n );\n yield* Effect.promise(() => invokePromise(LayoutOperation.UpdateDialog, { state: false }));\n }\n });\n await EffectEx.runAndForwardErrors(program);\n },\n [invokePromise],\n );\n\n return (\n <Dialog.Content>\n <Dialog.Header>\n <Dialog.Title>{t('create-space-dialog.title')}</Dialog.Title>\n <Dialog.Close asChild>\n <Dialog.ActionIconButton action='close' ref={closeRef} />\n </Dialog.Close>\n </Dialog.Header>\n <Dialog.Body>\n <Form.Root\n testId='create-space-form'\n autoFocus\n schema={SpaceForm}\n defaultValues={initialValues}\n fieldProvider={inputSurfaceLookup}\n onSave={handleCreateSpace}\n >\n {/* Dialog.Body owns the gutter Column; place the form in its center column via Column.Center\n (not Form.Viewport's own Column.Root, which double-insets) so it aligns with the title. */}\n <Column.Center>\n <Form.Content>\n <Form.FieldSet />\n <Form.Submit />\n </Form.Content>\n </Column.Center>\n </Form.Root>\n </Dialog.Body>\n </Dialog.Content>\n );\n};\n"],
|
|
5
|
-
"mappings": ";;;AAIA,YAAYA,YAAY;AAExB,OAAOC,SAASC,aAAaC,cAAc;AAE3C,SAASC,2BAA2B;AACpC,SAASC,iBAAiBC,kBAAkBC,oBAAoB;AAChE,SAASC,gBAAgB;AACzB,SAASC,QAAQC,QAAQC,sBAAsB;AAC/C,SAASC,YAAY;AAErB,SAASC,6BAA6B;AACtC,SAASC,YAAY;AACrB,SAASC,sBAAsB;AAC/B,SAASC,iBAAiB;AAEnB,IAAMC,sBAAsB,GAAGH,KAAKI,EAAE;AAG7C,IAAMC,gBAA4B;EAAEC,iBAAiB;AAAK;AAEnD,IAAMC,oBAAoB,MAAA;AAC/B,QAAMC,WAAWnB,OAAiC,IAAA;AAClD,QAAM,EAAEoB,EAAC,IAAKZ,eAAeG,KAAKI,EAAE;AACpC,QAAM,EAAEM,cAAa,IAAKpB,oBAAAA;AAE1B,QAAMqB,qBAAqBZ,sBAAAA;AAE3B,QAAMa,oBAAoBxB,YACxB,OAAOyB,SAAAA;AACL,UAAMC,UAAiBC,WAAI,aAAA;AACzB,YAAM,EAAEF,MAAMG,OAAM,IAAK,OAAcC,eAAQ,MAAMP,cAAcT,eAAeiB,QAAQL,IAAAA,CAAAA;AAC1F,UAAIG,QAAQG,OAAO;AACjB,eAAcF,eAAQ,MACpBP,cAAcnB,gBAAgB6B,MAAM;UAClCC,SAAS;YAAC7B,iBAAiBwB,OAAOG,MAAMf,EAAE;;UAC1CkB,WAAW7B,aAAauB,OAAOG,MAAMf,EAAE;UACvCmB,YAAY;QACd,CAAA,CAAA;AAEF,eAAcN,eAAQ,MAAMP,cAAcnB,gBAAgBiC,cAAc;UAAEC,OAAO;QAAM,CAAA,CAAA;MACzF;IACF,CAAA;AACA,UAAM/B,SAASgC,oBAAoBZ,OAAAA;EACrC,GACA;IAACJ;GAAc;AAGjB,SACE,sBAAA,cAACd,OAAO+B,SAAO,MACb,sBAAA,cAAC/B,OAAOgC,QAAM,MACZ,sBAAA,cAAChC,OAAOiC,OAAK,MAAEpB,EAAE,2BAAA,CAAA,GACjB,sBAAA,cAACb,OAAOkC,OAAK;IAACC,SAAAA;KACZ,sBAAA,cAACnC,OAAOoC,kBAAgB;IAACC,QAAO;IAAQC,KAAK1B;QAGjD,sBAAA,cAACZ,OAAOuC,MAAI,MACV,sBAAA,cAACrC,KAAKsC,MAAI;IACRC,QAAO;IACPC,WAAAA;IACAC,QAAQrC;IACRsC,eAAenC;IACfoC,eAAe9B;IACf+B,QAAQ9B;KAIR,sBAAA,cAACjB,OAAOgD,QAAM,MACZ,sBAAA,cAAC7C,KAAK6B,SAAO,MACX,sBAAA,cAAC7B,KAAK8C,UAAQ,IAAA,GACd,sBAAA,cAAC9C,KAAK+C,QAAM,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAO1B;",
|
|
6
|
-
"names": ["Effect", "React", "useCallback", "useRef", "useOperationInvoker", "LayoutOperation", "getSpaceHomePath", "getSpacePath", "EffectEx", "Column", "Dialog", "useTranslation", "Form", "useInputSurfaceLookup", "meta", "SpaceOperation", "SpaceForm", "CREATE_SPACE_DIALOG", "id", "initialValues", "edgeReplication", "CreateSpaceDialog", "closeRef", "t", "invokePromise", "inputSurfaceLookup", "handleCreateSpace", "data", "program", "gen", "result", "promise", "Create", "space", "Open", "subject", "workspace", "navigation", "UpdateDialog", "state", "runAndForwardErrors", "Content", "Header", "Title", "Close", "asChild", "ActionIconButton", "action", "ref", "Body", "Root", "testId", "autoFocus", "schema", "defaultValues", "fieldProvider", "onSave", "Center", "FieldSet", "Submit"]
|
|
7
|
-
}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
-
|
|
3
|
-
// src/containers/EntityRenamePopover/EntityRenamePopover.tsx
|
|
4
|
-
import React, { useCallback, useRef, useState } from "react";
|
|
5
|
-
import { useOperationInvoker } from "@dxos/app-framework/ui";
|
|
6
|
-
import { LayoutOperation } from "@dxos/app-toolkit";
|
|
7
|
-
import { Entity } from "@dxos/echo";
|
|
8
|
-
import { log } from "@dxos/log";
|
|
9
|
-
import { Button, Input, useTranslation } from "@dxos/react-ui";
|
|
10
|
-
import { osTranslations } from "@dxos/ui-theme";
|
|
11
|
-
import { meta } from "#meta";
|
|
12
|
-
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-space/src/containers/EntityRenamePopover/EntityRenamePopover.tsx";
|
|
13
|
-
var ENTITY_RENAME_POPOVER = `${meta.id}.EntityRenamePopover`;
|
|
14
|
-
var EntityRenamePopover = ({ entity }) => {
|
|
15
|
-
const { t } = useTranslation(meta.id);
|
|
16
|
-
const doneButton = useRef(null);
|
|
17
|
-
const [name, setName] = useState(Entity.getLabel(entity));
|
|
18
|
-
const { invokePromise } = useOperationInvoker();
|
|
19
|
-
const handleDone = useCallback(() => {
|
|
20
|
-
try {
|
|
21
|
-
name && Entity.update(entity, () => Entity.setLabel(entity, name));
|
|
22
|
-
} catch (err) {
|
|
23
|
-
log.error("Failed to rename entity", {
|
|
24
|
-
err
|
|
25
|
-
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 22, S: void 0 });
|
|
26
|
-
}
|
|
27
|
-
void invokePromise(LayoutOperation.UpdatePopover, {
|
|
28
|
-
anchorId: "",
|
|
29
|
-
state: false
|
|
30
|
-
});
|
|
31
|
-
}, [
|
|
32
|
-
entity,
|
|
33
|
-
name,
|
|
34
|
-
invokePromise
|
|
35
|
-
]);
|
|
36
|
-
return /* @__PURE__ */ React.createElement("div", {
|
|
37
|
-
className: "p-2 flex gap-2"
|
|
38
|
-
}, /* @__PURE__ */ React.createElement("div", {
|
|
39
|
-
className: "flex-1"
|
|
40
|
-
}, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, {
|
|
41
|
-
srOnly: true
|
|
42
|
-
}, t("object-name.label")), /* @__PURE__ */ React.createElement(Input.TextInput, {
|
|
43
|
-
placeholder: t("object.placeholder"),
|
|
44
|
-
value: name,
|
|
45
|
-
"data-testid": "spacePlugin.renameObject.input",
|
|
46
|
-
onChange: ({ target: { value } }) => setName(value),
|
|
47
|
-
onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
|
|
48
|
-
}))), /* @__PURE__ */ React.createElement(Button, {
|
|
49
|
-
ref: doneButton,
|
|
50
|
-
classNames: "self-stretch",
|
|
51
|
-
onClick: handleDone
|
|
52
|
-
}, t("done.label", {
|
|
53
|
-
ns: osTranslations
|
|
54
|
-
})));
|
|
55
|
-
};
|
|
56
|
-
export {
|
|
57
|
-
EntityRenamePopover as default
|
|
58
|
-
};
|
|
59
|
-
//# sourceMappingURL=EntityRenamePopover-MYSW262F.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/containers/EntityRenamePopover/EntityRenamePopover.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback, useRef, useState } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { Entity } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { Button, Input, useTranslation } from '@dxos/react-ui';\nimport { osTranslations } from '@dxos/ui-theme';\n\nimport { meta } from '#meta';\n\nexport const ENTITY_RENAME_POPOVER = `${meta.id}.EntityRenamePopover`;\n\nexport const EntityRenamePopover = ({ entity }: { entity: Entity.Unknown }) => {\n const { t } = useTranslation(meta.id);\n const doneButton = useRef<HTMLButtonElement>(null);\n const [name, setName] = useState(Entity.getLabel(entity));\n const { invokePromise } = useOperationInvoker();\n\n const handleDone = useCallback(() => {\n try {\n name && Entity.update(entity, () => Entity.setLabel(entity, name));\n } catch (err) {\n log.error('Failed to rename entity', { err });\n }\n void invokePromise(LayoutOperation.UpdatePopover, { anchorId: '', state: false });\n }, [entity, name, invokePromise]);\n\n return (\n <div className='p-2 flex gap-2'>\n <div className='flex-1'>\n <Input.Root>\n <Input.Label srOnly>{t('object-name.label')}</Input.Label>\n <Input.TextInput\n placeholder={t('object.placeholder')}\n value={name}\n data-testid='spacePlugin.renameObject.input'\n onChange={({ target: { value } }) => setName(value)}\n onKeyDown={({ key }) => key === 'Enter' && doneButton.current?.click()}\n />\n </Input.Root>\n </div>\n <Button ref={doneButton} classNames='self-stretch' onClick={handleDone}>\n {t('done.label', { ns: osTranslations })}\n </Button>\n </div>\n );\n};\n"],
|
|
5
|
-
"mappings": ";;;AAIA,OAAOA,SAASC,aAAaC,QAAQC,gBAAgB;AAErD,SAASC,2BAA2B;AACpC,SAASC,uBAAuB;AAChC,SAASC,cAAc;AACvB,SAASC,WAAW;AACpB,SAASC,QAAQC,OAAOC,sBAAsB;AAC9C,SAASC,sBAAsB;AAE/B,SAASC,YAAY;AAErB,IAAA,eAAaC;AAGX,IAAS,wBAAoBD,GAAO,KAAA,EAAA;AACpC,IAAME,sBAAuC,CAAA,EAAA,OAAA,MAAA;AAC7C,QAAM,EAACC,EAAAA,IAAMC,eAAWb,KAASG,EAAAA;AACjC,QAAM,aAAEW,OAAkBb,IAAAA;AAE1B,QAAMc,CAAAA,MAAAA,OAAajB,IAAAA,SAAY,OAAA,SAAA,MAAA,CAAA;QAC7B,EAAI,cAAA,IAAA,oBAAA;qBACMK,YAAca,MAAAA;AACxB,QAAE;AACAZ,cAAIa,OAAM,OAAA,QAAA,MAAA,OAA2B,SAAA,QAAA,IAAA,CAAA;aAAEC,KAAAA;AAAI,UAAA,MAAA,2BAAA;QAC7C;MACA,GAAKJ,EAAAA,YAAAA,YAAcZ,GAAAA,cAAgBiB,GAAAA,IAAa,GAAE,OAAA,CAAA;;SAAgBC,cAAO,gBAAA,eAAA;MAAM,UAAA;MAC9E,OAAA;IAACJ,CAAAA;;IAAcF;IAAc;IAEhC;;SAEI,sBAAA,cAACO,OAAAA;IAAIC,WAAU;KACb,sBAAA,cAAChB,OAAMiB;IACQC,WAAAA;KAAU,sBAAA,cAAA,MACvB,MAAA,MAAOC,sBAAAA,cAAS,MAAA,OAAA;IACdC,QAAAA;OACAC,mBAAOf,CAAAA,GAAAA,sBAAAA,cAAAA,MAAAA,WAAAA;IACPgB,aAAAA,EAAY,oBAAA;IACZC,OAAAA;IACAC,eAAcC;yBAIpB,EAAA,MAAA,EAAA,MAAA,QAAC1B,KAAAA;IAAO2B,WAAKrB,CAAAA,EAAAA,IAAAA,MAAAA,QAAAA,WAAAA,WAAAA,SAAAA,MAAAA;QAAuB,sBAAA,cAAA,QAAA;IAAesB,KAAAA;IAChDC,YAAE;IAAgBC,SAAI3B;EAAe,GAAA,EAAA,cAAA;IAI5C,IAAA;;;",
|
|
6
|
-
"names": ["React", "useCallback", "useRef", "useState", "useOperationInvoker", "LayoutOperation", "Entity", "log", "Button", "Input", "useTranslation", "osTranslations", "meta", "ENTITY_RENAME_POPOVER", "doneButton", "name", "setName", "invokePromise", "handleDone", "entity", "error", "err", "UpdatePopover", "state", "div", "className", "Root", "srOnly", "TextInput", "placeholder", "value", "data-testid", "onChange", "onKeyDown", "key", "ref", "onClick", "t", "ns"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/containers/ImportSpaceDialog/ImportSpaceDialog.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\nimport { FileUploader } from 'react-drag-drop-files';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { LayoutOperation, getSpacePath } from '@dxos/app-toolkit';\nimport { Button, Dialog, Icon, useTranslation } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\nimport { SpaceOperation } from '#operations';\n\nexport const ImportSpaceDialog = () => {\n const { t } = useTranslation(meta.id);\n const { invokePromise } = useOperationInvoker();\n\n const handleFile = useCallback(\n async (file: File) => {\n const contents = new Uint8Array(await file.arrayBuffer());\n const { data: result } = await invokePromise(SpaceOperation.ImportSpace, {\n archive: { filename: file.name, contents },\n });\n await invokePromise(LayoutOperation.UpdateDialog, { state: false });\n if (result?.space) {\n await invokePromise(LayoutOperation.SwitchWorkspace, { subject: getSpacePath(result.space.id) });\n }\n },\n [invokePromise],\n );\n\n return (\n <Dialog.Content>\n <Dialog.Header>\n <Dialog.Title>{t('import-space-dialog.title')}</Dialog.Title>\n <Dialog.Close asChild>\n <Dialog.ActionIconButton action='close' />\n </Dialog.Close>\n </Dialog.Header>\n <Dialog.Body>\n <p className='my-4'>{t('import-space-dialog.description')}</p>\n <FileUploader\n types={['json', 'tar']}\n classes='block my-4 p-8 border-2 border-dashed border-neutral-500/50 rounded-sm flex items-center justify-center gap-2 cursor-pointer'\n dropMessageStyle={{ border: 'none', backgroundColor: '#EEE' }}\n handleChange={(file: File) => {\n void handleFile(file);\n }}\n >\n <Icon icon='ph--file-plus--duotone' size={8} />\n <span>{t('import-space-dialog.upload.label')}</span>\n </FileUploader>\n </Dialog.Body>\n <Dialog.ActionBar>\n <Dialog.Close asChild>\n <Button variant='primary'>{t('cancel.label')}</Button>\n </Dialog.Close>\n </Dialog.ActionBar>\n </Dialog.Content>\n );\n};\n"],
|
|
5
|
-
"mappings": ";;;AAIA,OAAOA,SAASC,mBAAmB;AACnC,SAASC,oBAAoB;AAE7B,SAASC,2BAA2B;AACpC,SAASC,iBAAiBC,oBAAoB;AAC9C,SAASC,QAAQC,QAAQC,MAAMC,sBAAsB;AAErD,SAASC,YAAY;AACrB,SAASC,sBAAsB;AAExB,IAAMC,oBAAoB,MAAA;AAC/B,QAAM,EAAEC,EAAC,IAAKJ,eAAeC,KAAKI,EAAE;AACpC,QAAM,EAAEC,cAAa,IAAKZ,oBAAAA;AAE1B,QAAMa,aAAaf,YACjB,OAAOgB,SAAAA;AACL,UAAMC,WAAW,IAAIC,WAAW,MAAMF,KAAKG,YAAW,CAAA;AACtD,UAAM,EAAEC,MAAMC,OAAM,IAAK,MAAMP,cAAcJ,eAAeY,aAAa;MACvEC,SAAS;QAAEC,UAAUR,KAAKS;QAAMR;MAAS;IAC3C,CAAA;AACA,UAAMH,cAAcX,gBAAgBuB,cAAc;MAAEC,OAAO;IAAM,CAAA;AACjE,QAAIN,QAAQO,OAAO;AACjB,YAAMd,cAAcX,gBAAgB0B,iBAAiB;QAAEC,SAAS1B,aAAaiB,OAAOO,MAAMf,EAAE;MAAE,CAAA;IAChG;EACF,GACA;IAACC;GAAc;AAGjB,SACE,sBAAA,cAACR,OAAOyB,SAAO,MACb,sBAAA,cAACzB,OAAO0B,QAAM,MACZ,sBAAA,cAAC1B,OAAO2B,OAAK,MAAErB,EAAE,2BAAA,CAAA,GACjB,sBAAA,cAACN,OAAO4B,OAAK;IAACC,SAAAA;KACZ,sBAAA,cAAC7B,OAAO8B,kBAAgB;IAACC,QAAO;QAGpC,sBAAA,cAAC/B,OAAOgC,MAAI,MACV,sBAAA,cAACC,KAAAA;IAAEC,WAAU;KAAQ5B,EAAE,iCAAA,CAAA,GACvB,sBAAA,cAACX,cAAAA;IACCwC,OAAO;MAAC;MAAQ;;IAChBC,SAAQ;IACRC,kBAAkB;MAAEC,QAAQ;MAAQC,iBAAiB;IAAO;IAC5DC,cAAc,CAAC9B,SAAAA;AACb,WAAKD,WAAWC,IAAAA;IAClB;KAEA,sBAAA,cAACT,MAAAA;IAAKwC,MAAK;IAAyBC,MAAM;MAC1C,sBAAA,cAACC,QAAAA,MAAMrC,EAAE,kCAAA,CAAA,CAAA,CAAA,GAGb,sBAAA,cAACN,OAAO4C,WAAS,MACf,sBAAA,cAAC5C,OAAO4B,OAAK;IAACC,SAAAA;KACZ,sBAAA,cAAC9B,QAAAA;IAAO8C,SAAQ;KAAWvC,EAAE,cAAA,CAAA,CAAA,CAAA,CAAA;AAKvC;",
|
|
6
|
-
"names": ["React", "useCallback", "FileUploader", "useOperationInvoker", "LayoutOperation", "getSpacePath", "Button", "Dialog", "Icon", "useTranslation", "meta", "SpaceOperation", "ImportSpaceDialog", "t", "id", "invokePromise", "handleFile", "file", "contents", "Uint8Array", "arrayBuffer", "data", "result", "ImportSpace", "archive", "filename", "name", "UpdateDialog", "state", "space", "SwitchWorkspace", "subject", "Content", "Header", "Title", "Close", "asChild", "ActionIconButton", "action", "Body", "p", "className", "types", "classes", "dropMessageStyle", "border", "backgroundColor", "handleChange", "icon", "size", "span", "ActionBar", "variant"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/containers/InlineSyncStatus/InlineSyncStatus.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useEffect, useState } from 'react';\n\nimport { getSpacePath } from '@dxos/app-toolkit';\nimport { EdgeStatus } from '@dxos/protocols/proto/dxos/client/services';\nimport { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';\nimport { useClient } from '@dxos/react-client';\nimport { type Space, useSpaceSyncState } from '@dxos/react-client/echo';\nimport { Tooltip, useTranslation } from '@dxos/react-ui';\nimport { AttentionGlyph, useAttention } from '@dxos/react-ui-attention';\n\nimport { meta } from '#meta';\n\nconst useEdgeStatus = (): EdgeStatus.ConnectionState => {\n const [status, setStatus] = useState(EdgeStatus.ConnectionState.NOT_CONNECTED);\n const client = useClient();\n useEffect(() => {\n client.services.services.EdgeAgentService?.queryEdgeStatus().subscribe(({ status }) => {\n setStatus(status.state);\n });\n }, [client]);\n\n return status;\n};\n\nexport const InlineSyncStatus = ({ space, open }: { space: Space; open?: boolean }) => {\n const { t } = useTranslation(meta.id);\n const qualifiedId = getSpacePath(space.id);\n const { hasAttention, isAncestor, isRelated } = useAttention(qualifiedId);\n const attended = hasAttention || isRelated;\n const containsAttended = isAncestor && !open;\n const connectedToEdge = useEdgeStatus() === EdgeStatus.ConnectionState.CONNECTED;\n // TODO(wittjosiah): This is not reactive.\n const edgeSyncEnabled = space.internal.data.edgeReplication === EdgeReplicationSetting.ENABLED;\n const syncState = useSpaceSyncState(space);\n const syncing = connectedToEdge && edgeSyncEnabled && syncState && syncState.missingOnLocal > 0;\n\n return (\n <Tooltip.Trigger asChild content={t('syncing.label')} side='bottom'>\n <AttentionGlyph\n syncing={syncing}\n attended={attended}\n containsAttended={containsAttended}\n classNames='self-center mx-1'\n />\n </Tooltip.Trigger>\n );\n};\n"],
|
|
5
|
-
"mappings": ";;;AAIA,OAAOA,SAASC,WAAWC,gBAAgB;AAE3C,SAASC,oBAAoB;AAC7B,SAASC,kBAAkB;AAC3B,SAASC,8BAA8B;AACvC,SAASC,iBAAiB;AAC1B,SAAqBC,yBAAyB;AAC9C,SAASC,SAASC,sBAAsB;AACxC,SAASC,gBAAgBC,oBAAoB;AAE7C,SAASC,YAAY;AAErB,IAAMC,gBAAgB,MAAA;AACpB,QAAM,CAACC,QAAQC,SAAAA,IAAab,SAASE,WAAWY,gBAAgBC,aAAa;AAC7E,QAAMC,SAASZ,UAAAA;AACfL,YAAU,MAAA;AACRiB,WAAOC,SAASA,SAASC,kBAAkBC,gBAAAA,EAAkBC,UAAU,CAAC,EAAER,QAAAA,QAAM,MAAE;AAChFC,gBAAUD,QAAOS,KAAK;IACxB,CAAA;EACF,GAAG;IAACL;GAAO;AAEX,SAAOJ;AACT;AAEO,IAAMU,mBAAmB,CAAC,EAAEC,OAAOC,KAAI,MAAoC;AAChF,QAAM,EAAEC,EAAC,IAAKlB,eAAeG,KAAKgB,EAAE;AACpC,QAAMC,cAAc1B,aAAasB,MAAMG,EAAE;AACzC,QAAM,EAAEE,cAAcC,YAAYC,UAAS,IAAKrB,aAAakB,WAAAA;AAC7D,QAAMI,WAAWH,gBAAgBE;AACjC,QAAME,mBAAmBH,cAAc,CAACL;AACxC,QAAMS,kBAAkBtB,cAAAA,MAAoBT,WAAWY,gBAAgBoB;AAEvE,QAAMC,kBAAkBZ,MAAMa,SAASC,KAAKC,oBAAoBnC,uBAAuBoC;AACvF,QAAMC,YAAYnC,kBAAkBkB,KAAAA;AACpC,QAAMkB,UAAUR,mBAAmBE,mBAAmBK,aAAaA,UAAUE,iBAAiB;AAE9F,SACE,sBAAA,cAACpC,QAAQqC,SAAO;IAACC,SAAAA;IAAQC,SAASpB,EAAE,eAAA;IAAkBqB,MAAK;KACzD,sBAAA,cAACtC,gBAAAA;IACCiC;IACAV;IACAC;IACAe,YAAW;;AAInB;",
|
|
6
|
-
"names": ["React", "useEffect", "useState", "getSpacePath", "EdgeStatus", "EdgeReplicationSetting", "useClient", "useSpaceSyncState", "Tooltip", "useTranslation", "AttentionGlyph", "useAttention", "meta", "useEdgeStatus", "status", "setStatus", "ConnectionState", "NOT_CONNECTED", "client", "services", "EdgeAgentService", "queryEdgeStatus", "subscribe", "state", "InlineSyncStatus", "space", "open", "t", "id", "qualifiedId", "hasAttention", "isAncestor", "isRelated", "attended", "containsAttended", "connectedToEdge", "CONNECTED", "edgeSyncEnabled", "internal", "data", "edgeReplication", "ENABLED", "syncState", "syncing", "missingOnLocal", "Trigger", "asChild", "content", "side", "classNames"]
|
|
7
|
-
}
|