@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
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/containers/MenuFooter/MenuFooter.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { AppSpace } from '@dxos/app-toolkit';\nimport { getSpace } from '@dxos/client/echo';\nimport { type Obj } from '@dxos/echo';\nimport { DropdownMenu, Icon, toLocalizedString, useTranslation } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\n\nimport { getSpaceDisplayName } from '../../util';\n\nexport const MenuFooter = ({ object }: { object: Obj.Unknown }) => {\n const { t } = useTranslation(meta.profile.key);\n const space = getSpace(object);\n const spaceName = space ? getSpaceDisplayName(space, { personal: AppSpace.isPersonalSpace(space) }) : '';\n return space ? (\n <>\n <DropdownMenu.Separator />\n <DropdownMenu.GroupLabel>{t('menu-footer.label')}</DropdownMenu.GroupLabel>\n <dl className='ps-2 mb-2 text-xs grid grid-cols-[max-content_1fr] gap-2'>\n <dt className='uppercase text-[.75em] tracking-wide font-medium mt-px self-start'>{t('location.label')}</dt>\n <dd className='line-clamp-3'>\n <Icon icon='ph--planet--regular' classNames='inline-block me-1' />\n {toLocalizedString(spaceName, t)}\n </dd>\n </dl>\n </>\n ) : null;\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,gBAAgB;AACzB,SAASC,gBAAgB;AAEzB,SAASC,cAAcC,MAAMC,mBAAmBC,sBAAsB;AAEtE,SAASC,YAAY;AAId,IAAMC,aAAa,CAAC,EAAEC,OAAM,MAA2B;AAC5D,QAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,QAAQC,GAAG;AAC7C,QAAMC,QAAQC,SAASP,MAAAA;AACvB,QAAMQ,YAAYF,QAAQG,oBAAoBH,OAAO;IAAEI,UAAUC,SAASC,gBAAgBN,KAAAA;EAAO,CAAA,IAAK;AACtG,SAAOA,QACL,sBAAA,cAAA,MAAA,UAAA,MACE,sBAAA,cAACO,aAAaC,WAAS,IAAA,GACvB,sBAAA,cAACD,aAAaE,YAAU,MAAEd,EAAE,mBAAA,CAAA,GAC5B,sBAAA,cAACe,MAAAA;IAAGC,WAAU;KACZ,sBAAA,cAACC,MAAAA;IAAGD,WAAU;KAAqEhB,EAAE,gBAAA,CAAA,GACrF,sBAAA,cAACkB,MAAAA;IAAGF,WAAU;KACZ,sBAAA,cAACG,MAAAA;IAAKC,MAAK;IAAsBC,YAAW;MAC3CC,kBAAkBf,WAAWP,CAAAA,CAAAA,CAAAA,CAAAA,IAIlC;AACN;",
|
|
6
|
+
"names": ["React", "AppSpace", "getSpace", "DropdownMenu", "Icon", "toLocalizedString", "useTranslation", "meta", "MenuFooter", "object", "t", "useTranslation", "meta", "profile", "key", "space", "getSpace", "spaceName", "getSpaceDisplayName", "personal", "AppSpace", "isPersonalSpace", "DropdownMenu", "Separator", "GroupLabel", "dl", "className", "dt", "dd", "Icon", "icon", "classNames", "toLocalizedString"]
|
|
7
|
+
}
|
|
@@ -5,19 +5,19 @@ import React, { forwardRef, useState } from "react";
|
|
|
5
5
|
import { Filter, Obj } from "@dxos/echo";
|
|
6
6
|
import { useQuery, useType } from "@dxos/react-client/echo";
|
|
7
7
|
import { Card, Message, Panel, ScrollArea, Toolbar, useTranslation } from "@dxos/react-ui";
|
|
8
|
-
import {
|
|
8
|
+
import { useSelection } from "@dxos/react-ui-attention";
|
|
9
9
|
import { ObjectForm } from "@dxos/react-ui-form";
|
|
10
10
|
import { Mosaic } from "@dxos/react-ui-mosaic";
|
|
11
11
|
import { getTypeURIFromQuery } from "@dxos/schema";
|
|
12
12
|
import { isNonNullable } from "@dxos/util";
|
|
13
13
|
import { meta } from "#meta";
|
|
14
14
|
var ObjectCardStack = /* @__PURE__ */ forwardRef(({ objectId, view }, forwardedRef) => {
|
|
15
|
-
const { t } = useTranslation(meta.
|
|
15
|
+
const { t } = useTranslation(meta.profile.key);
|
|
16
16
|
const db = Obj.getDatabase(view);
|
|
17
17
|
const typeUri = view.query ? getTypeURIFromQuery(view.query.ast) : void 0;
|
|
18
18
|
const type = useType(db, typeUri);
|
|
19
19
|
const queriedObjects = useQuery(db, type ? Filter.type(type) : Filter.nothing());
|
|
20
|
-
const selectedRows =
|
|
20
|
+
const selectedRows = useSelection(objectId, "multi");
|
|
21
21
|
const selectedObjects = selectedRows.map((id) => queriedObjects.find((obj) => obj.id === id)).filter(isNonNullable);
|
|
22
22
|
const [viewport, setViewport] = useState(null);
|
|
23
23
|
if (!type) {
|
|
@@ -52,4 +52,4 @@ var ObjectCardStack = /* @__PURE__ */ forwardRef(({ objectId, view }, forwardedR
|
|
|
52
52
|
export {
|
|
53
53
|
ObjectCardStack as default
|
|
54
54
|
};
|
|
55
|
-
//# sourceMappingURL=ObjectCardStack-
|
|
55
|
+
//# sourceMappingURL=ObjectCardStack-DHVDRNRK.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/containers/ObjectCardStack/ObjectCardStack.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { forwardRef, useState } from 'react';\n\nimport { Filter, Obj, type View } from '@dxos/echo';\nimport { useQuery, useType } from '@dxos/react-client/echo';\nimport { Card, Message, Panel, ScrollArea, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { useSelection } from '@dxos/react-ui-attention';\nimport { ObjectForm } from '@dxos/react-ui-form';\nimport { Mosaic } from '@dxos/react-ui-mosaic';\nimport { getTypeURIFromQuery } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '#meta';\n\nexport type ObjectCardStackProps = {\n view: View.View;\n objectId: string;\n};\n\n/**\n * @deprecated Use Mosaic Board components.\n */\nexport const ObjectCardStack = forwardRef<HTMLDivElement, ObjectCardStackProps>(({ objectId, view }, forwardedRef) => {\n const { t } = useTranslation(meta.profile.key);\n const db = Obj.getDatabase(view);\n const typeUri = view.query ? getTypeURIFromQuery(view.query.ast) : undefined;\n const type = useType(db, typeUri);\n\n const queriedObjects = useQuery(db, type ? Filter.type(type) : Filter.nothing());\n const selectedRows = useSelection(objectId, 'multi');\n const selectedObjects = selectedRows.map((id) => queriedObjects.find((obj) => obj.id === id)).filter(isNonNullable);\n\n const [viewport, setViewport] = useState<HTMLElement | null>(null);\n\n if (!type) {\n return null;\n }\n\n return (\n <Panel.Root className='dx-document' ref={forwardedRef}>\n <Panel.Toolbar asChild>\n <Toolbar.Root />\n </Panel.Toolbar>\n <Panel.Content>\n {selectedObjects.length === 0 ? (\n <Message.Root>\n <Message.Title>{t('row-details-no-selection.label')}</Message.Title>\n </Message.Root>\n ) : (\n <Mosaic.Root>\n <Mosaic.Container\n asChild\n orientation='vertical'\n autoScroll={viewport}\n eventHandler={{ id: objectId, canDrop: () => true }}\n >\n <ScrollArea.Root orientation='vertical'>\n <ScrollArea.Viewport ref={setViewport}>\n <Mosaic.Stack\n items={selectedObjects}\n getId={(obj) => obj.id}\n Tile={({ ...props }) => (\n <Mosaic.Tile {...props}>\n <Card.Root>\n <ObjectForm object={props.data} type={type} />\n </Card.Root>\n </Mosaic.Tile>\n )}\n />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n </Mosaic.Container>\n </Mosaic.Root>\n )}\n </Panel.Content>\n </Panel.Root>\n );\n});\n"],
|
|
5
|
+
"mappings": ";;;AAIA,OAAOA,SAASC,YAAYC,gBAAgB;AAE5C,SAASC,QAAQC,WAAsB;AACvC,SAASC,UAAUC,eAAe;AAClC,SAASC,MAAMC,SAASC,OAAOC,YAAYC,SAASC,sBAAsB;AAC1E,SAASC,oBAAoB;AAC7B,SAASC,kBAAkB;AAC3B,SAASC,cAAc;AACvB,SAASC,2BAA2B;AACpC,SAASC,qBAAqB;AAE9B,SAASC,YAAY;AAUd,IAAMC,kBAAkBlB,2BAAiD,CAAC,EAAEmB,UAAUC,KAAI,GAAIC,iBAAAA;AACnG,QAAM,EAAEC,EAAC,IAAKX,eAAeM,KAAKM,QAAQC,GAAG;AAC7C,QAAMC,KAAKtB,IAAIuB,YAAYN,IAAAA;AAC3B,QAAMO,UAAUP,KAAKQ,QAAQb,oBAAoBK,KAAKQ,MAAMC,GAAG,IAAIC;AACnE,QAAMC,OAAO1B,QAAQoB,IAAIE,OAAAA;AAEzB,QAAMK,iBAAiB5B,SAASqB,IAAIM,OAAO7B,OAAO6B,KAAKA,IAAAA,IAAQ7B,OAAO+B,QAAO,CAAA;AAC7E,QAAMC,eAAetB,aAAaO,UAAU,OAAA;AAC5C,QAAMgB,kBAAkBD,aAAaE,IAAI,CAACC,OAAOL,eAAeM,KAAK,CAACC,QAAQA,IAAIF,OAAOA,EAAAA,CAAAA,EAAKG,OAAOxB,aAAAA;AAErG,QAAM,CAACyB,UAAUC,WAAAA,IAAezC,SAA6B,IAAA;AAE7D,MAAI,CAAC8B,MAAM;AACT,WAAO;EACT;AAEA,SACE,sBAAA,cAACvB,MAAMmC,MAAI;IAACC,WAAU;IAAcC,KAAKxB;KACvC,sBAAA,cAACb,MAAME,SAAO;IAACoC,SAAAA;KACb,sBAAA,cAACpC,QAAQiC,MAAI,IAAA,CAAA,GAEf,sBAAA,cAACnC,MAAMuC,SAAO,MACXZ,gBAAgBa,WAAW,IAC1B,sBAAA,cAACzC,QAAQoC,MAAI,MACX,sBAAA,cAACpC,QAAQ0C,OAAK,MAAE3B,EAAE,gCAAA,CAAA,CAAA,IAGpB,sBAAA,cAACR,OAAO6B,MAAI,MACV,sBAAA,cAAC7B,OAAOoC,WAAS;IACfJ,SAAAA;IACAK,aAAY;IACZC,YAAYX;IACZY,cAAc;MAAEhB,IAAIlB;MAAUmC,SAAS,MAAM;IAAK;KAElD,sBAAA,cAAC7C,WAAWkC,MAAI;IAACQ,aAAY;KAC3B,sBAAA,cAAC1C,WAAW8C,UAAQ;IAACV,KAAKH;KACxB,sBAAA,cAAC5B,OAAO0C,OAAK;IACXC,OAAOtB;IACPuB,OAAO,CAACnB,QAAQA,IAAIF;IACpBsB,MAAM,CAAC,EAAE,GAAGC,MAAAA,MACV,sBAAA,cAAC9C,OAAO6C,MAASC,OACf,sBAAA,cAACtD,KAAKqC,MAAI,MACR,sBAAA,cAAC9B,YAAAA;MAAWgD,QAAQD,MAAME;MAAM/B;;;AAa1D,CAAA;",
|
|
6
|
+
"names": ["React", "forwardRef", "useState", "Filter", "Obj", "useQuery", "useType", "Card", "Message", "Panel", "ScrollArea", "Toolbar", "useTranslation", "useSelection", "ObjectForm", "Mosaic", "getTypeURIFromQuery", "isNonNullable", "meta", "ObjectCardStack", "objectId", "view", "forwardedRef", "t", "profile", "key", "db", "getDatabase", "typeUri", "query", "ast", "undefined", "type", "queriedObjects", "nothing", "selectedRows", "selectedObjects", "map", "id", "find", "obj", "filter", "viewport", "setViewport", "Root", "className", "ref", "asChild", "Content", "length", "Title", "Container", "orientation", "autoScroll", "eventHandler", "canDrop", "Viewport", "Stack", "items", "getId", "Tile", "props", "object", "data"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/containers/RecordArticle/RecordArticle.tsx
|
|
4
|
+
import React, { useMemo } from "react";
|
|
5
|
+
import { Surface } from "@dxos/app-framework/ui";
|
|
6
|
+
import { AppSurface, useObjectMenuItems } from "@dxos/app-toolkit/ui";
|
|
7
|
+
import { Entity, Obj, Type } from "@dxos/echo";
|
|
8
|
+
import { Card, Icon, IconButton, Input, Panel, ScrollArea, Toolbar, useTranslation } from "@dxos/react-ui";
|
|
9
|
+
import { Masonry } from "@dxos/react-ui-masonry";
|
|
10
|
+
import { Menu } from "@dxos/react-ui-menu";
|
|
11
|
+
import { mx } from "@dxos/ui-theme";
|
|
12
|
+
import { useRelatedObjects } from "#hooks";
|
|
13
|
+
import { meta } from "#meta";
|
|
14
|
+
import { Prompts } from "#types";
|
|
15
|
+
var RecordArticle = ({ role, subject }) => {
|
|
16
|
+
const { t } = useTranslation(meta.profile.key);
|
|
17
|
+
const db = Obj.getDatabase(subject);
|
|
18
|
+
const typename = Obj.getTypename(subject);
|
|
19
|
+
const schema = Obj.getType(subject) ?? (typename && db ? db.graph.registry.list().filter(Type.isType).find((t2) => Type.getTypename(t2) === typename) : void 0);
|
|
20
|
+
const icon = schema && Type.getDatabase(schema) != null ? "ph--cube--regular" : Obj.getIcon(subject)?.icon ?? "ph--circle-dashed--regular";
|
|
21
|
+
const related = useRelatedObjects(db, subject, {
|
|
22
|
+
references: true,
|
|
23
|
+
relations: true
|
|
24
|
+
});
|
|
25
|
+
const singleColumn = related.length === 1;
|
|
26
|
+
return /* @__PURE__ */ React.createElement(Panel.Root, {
|
|
27
|
+
role
|
|
28
|
+
}, /* @__PURE__ */ React.createElement(Panel.Toolbar, {
|
|
29
|
+
asChild: true
|
|
30
|
+
}, /* @__PURE__ */ React.createElement(Toolbar.Root, null)), /* @__PURE__ */ React.createElement(Panel.Content, {
|
|
31
|
+
asChild: true
|
|
32
|
+
}, /* @__PURE__ */ React.createElement(ScrollArea.Root, {
|
|
33
|
+
orientation: "vertical"
|
|
34
|
+
}, /* @__PURE__ */ React.createElement(ScrollArea.Viewport, {
|
|
35
|
+
classNames: "p-4 space-y-4"
|
|
36
|
+
}, /* @__PURE__ */ React.createElement(Card.Root, {
|
|
37
|
+
classNames: "dx-card-max-width"
|
|
38
|
+
}, /* @__PURE__ */ React.createElement(Card.Header, null, /* @__PURE__ */ React.createElement(Card.Block, null, /* @__PURE__ */ React.createElement(Icon, {
|
|
39
|
+
icon
|
|
40
|
+
})), /* @__PURE__ */ React.createElement(Card.Title, null, Obj.getLabel(subject, {
|
|
41
|
+
fallback: "typename"
|
|
42
|
+
}))), /* @__PURE__ */ React.createElement(Card.Body, null, /* @__PURE__ */ React.createElement(Surface.Surface, {
|
|
43
|
+
type: AppSurface.CardContent,
|
|
44
|
+
data: {
|
|
45
|
+
subject
|
|
46
|
+
},
|
|
47
|
+
limit: 1
|
|
48
|
+
}))), /* @__PURE__ */ React.createElement("div", {
|
|
49
|
+
className: "flex flex-col gap-form-gap"
|
|
50
|
+
}, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, null, t("related-actions.label"))), /* @__PURE__ */ React.createElement(Surface.Surface, {
|
|
51
|
+
type: Prompts,
|
|
52
|
+
data: {
|
|
53
|
+
subject,
|
|
54
|
+
attendableId: subject.id
|
|
55
|
+
},
|
|
56
|
+
limit: 1
|
|
57
|
+
})), related.length > 0 && /* @__PURE__ */ React.createElement("div", {
|
|
58
|
+
className: mx("dx-expander flex flex-col gap-form-gap", singleColumn ? "dx-card-max-width" : "w-full")
|
|
59
|
+
}, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, null, t("related-objects.label"))), /* @__PURE__ */ React.createElement(Masonry.Root, {
|
|
60
|
+
Tile: ObjectCard,
|
|
61
|
+
columns: singleColumn ? 1 : void 0
|
|
62
|
+
}, /* @__PURE__ */ React.createElement(Masonry.Content, null, /* @__PURE__ */ React.createElement(Masonry.Viewport, {
|
|
63
|
+
items: related
|
|
64
|
+
}))))))));
|
|
65
|
+
};
|
|
66
|
+
var ObjectCard = ({ data: subject, classNames }) => {
|
|
67
|
+
const { t } = useTranslation(meta.profile.key);
|
|
68
|
+
const data = useMemo(() => ({
|
|
69
|
+
subject
|
|
70
|
+
}), [
|
|
71
|
+
subject
|
|
72
|
+
]);
|
|
73
|
+
const icon = Entity.getIcon(subject)?.icon ?? "ph--circle-dashed--regular";
|
|
74
|
+
const menuItems = useObjectMenuItems(subject);
|
|
75
|
+
return /* @__PURE__ */ React.createElement(Menu.Root, null, /* @__PURE__ */ React.createElement(Card.Root, {
|
|
76
|
+
classNames
|
|
77
|
+
}, /* @__PURE__ */ React.createElement(Card.Header, null, /* @__PURE__ */ React.createElement(Card.Block, null, /* @__PURE__ */ React.createElement(Icon, {
|
|
78
|
+
icon
|
|
79
|
+
})), /* @__PURE__ */ React.createElement(Card.Title, null, Entity.getLabel(subject, {
|
|
80
|
+
fallback: "typename"
|
|
81
|
+
})), /* @__PURE__ */ React.createElement(Card.Block, {
|
|
82
|
+
end: true
|
|
83
|
+
}, /* @__PURE__ */ React.createElement(Menu.Trigger, {
|
|
84
|
+
asChild: true,
|
|
85
|
+
disabled: !menuItems?.length
|
|
86
|
+
}, /* @__PURE__ */ React.createElement(IconButton, {
|
|
87
|
+
iconOnly: true,
|
|
88
|
+
variant: "ghost",
|
|
89
|
+
icon: "ph--dots-three-vertical--regular",
|
|
90
|
+
label: t("more-actions.label")
|
|
91
|
+
})), /* @__PURE__ */ React.createElement(Menu.Content, {
|
|
92
|
+
items: menuItems
|
|
93
|
+
}))), /* @__PURE__ */ React.createElement(Card.Body, null, /* @__PURE__ */ React.createElement(Surface.Surface, {
|
|
94
|
+
type: AppSurface.CardContent,
|
|
95
|
+
data,
|
|
96
|
+
limit: 1
|
|
97
|
+
}))));
|
|
98
|
+
};
|
|
99
|
+
export {
|
|
100
|
+
RecordArticle as default
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=RecordArticle-JSORXRAA.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/containers/RecordArticle/RecordArticle.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { AppSurface, useObjectMenuItems } from '@dxos/app-toolkit/ui';\nimport { Entity, Obj, Type } from '@dxos/echo';\nimport { Card, Icon, IconButton, Input, Panel, ScrollArea, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { Masonry } from '@dxos/react-ui-masonry';\nimport { Menu } from '@dxos/react-ui-menu';\nimport { mx } from '@dxos/ui-theme';\n\nimport { useRelatedObjects } from '#hooks';\nimport { meta } from '#meta';\nimport { Prompts } from '#types';\n\nexport const RecordArticle = ({ role, subject }: AppSurface.ObjectArticleProps) => {\n const { t } = useTranslation(meta.profile.key);\n // Obj.getType fails for database-registered (dynamic) schemas due to DXN mismatch;\n // fall back to typename query which matches TypeSchema.typename.\n const db = Obj.getDatabase(subject);\n const typename = Obj.getTypename(subject);\n const schema =\n Obj.getType(subject) ??\n (typename && db\n ? db.graph.registry\n .list()\n .filter(Type.isType)\n .find((t) => Type.getTypename(t) === typename)\n : undefined);\n const icon =\n schema && Type.getDatabase(schema) != null\n ? 'ph--cube--regular'\n : (Obj.getIcon(subject)?.icon ?? 'ph--circle-dashed--regular');\n\n const related = useRelatedObjects(db, subject, { references: true, relations: true });\n const singleColumn = related.length === 1;\n\n return (\n <Panel.Root role={role}>\n <Panel.Toolbar asChild>\n <Toolbar.Root />\n </Panel.Toolbar>\n <Panel.Content asChild>\n <ScrollArea.Root orientation='vertical'>\n <ScrollArea.Viewport classNames='p-4 space-y-4'>\n <Card.Root classNames='dx-card-max-width'>\n <Card.Header>\n <Card.Block>\n <Icon icon={icon} />\n </Card.Block>\n <Card.Title>{Obj.getLabel(subject, { fallback: 'typename' })}</Card.Title>\n </Card.Header>\n <Card.Body>\n <Surface.Surface type={AppSurface.CardContent} data={{ subject }} limit={1} />\n </Card.Body>\n </Card.Root>\n\n {/* TODO(burdon): Only show label if surface exists? */}\n <div className='flex flex-col gap-form-gap'>\n <Input.Root>\n <Input.Label>{t('related-actions.label')}</Input.Label>\n </Input.Root>\n <Surface.Surface type={Prompts} data={{ subject, attendableId: subject.id }} limit={1} />\n </div>\n\n {related.length > 0 && (\n <div\n className={mx('dx-expander flex flex-col gap-form-gap', singleColumn ? 'dx-card-max-width' : 'w-full')}\n >\n <Input.Root>\n <Input.Label>{t('related-objects.label')}</Input.Label>\n </Input.Root>\n <Masonry.Root Tile={ObjectCard} columns={singleColumn ? 1 : undefined}>\n <Masonry.Content>\n <Masonry.Viewport items={related} />\n </Masonry.Content>\n </Masonry.Root>\n </div>\n )}\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n </Panel.Content>\n </Panel.Root>\n );\n};\n\nconst ObjectCard = ({ data: subject, classNames }: { data: Entity.Unknown; classNames?: string }) => {\n const { t } = useTranslation(meta.profile.key);\n const data = useMemo(() => ({ subject }), [subject]);\n const icon = Entity.getIcon(subject)?.icon ?? 'ph--circle-dashed--regular';\n const menuItems = useObjectMenuItems(subject);\n\n return (\n <Menu.Root>\n <Card.Root classNames={classNames}>\n <Card.Header>\n <Card.Block>\n <Icon icon={icon} />\n </Card.Block>\n <Card.Title>{Entity.getLabel(subject, { fallback: 'typename' })}</Card.Title>\n <Card.Block end>\n <Menu.Trigger asChild disabled={!menuItems?.length}>\n <IconButton\n iconOnly\n variant='ghost'\n icon='ph--dots-three-vertical--regular'\n label={t('more-actions.label')}\n />\n </Menu.Trigger>\n <Menu.Content items={menuItems} />\n </Card.Block>\n </Card.Header>\n <Card.Body>\n <Surface.Surface type={AppSurface.CardContent} data={data} limit={1} />\n </Card.Body>\n </Card.Root>\n </Menu.Root>\n );\n};\n"],
|
|
5
|
+
"mappings": ";;;AAIA,OAAOA,SAASC,eAAe;AAE/B,SAASC,eAAe;AACxB,SAASC,YAAYC,0BAA0B;AAC/C,SAASC,QAAQC,KAAKC,YAAY;AAClC,SAASC,MAAMC,MAAMC,YAAYC,OAAOC,OAAOC,YAAYC,SAASC,sBAAsB;AAC1F,SAASC,eAAe;AACxB,SAASC,YAAY;AACrB,SAASC,UAAU;AAEnB,SAASC,yBAAyB;AAClC,SAASC,YAAY;AACrB,SAASC,eAAe;AAEjB,IAAMC,gBAAgB,CAAC,EAAEC,MAAMC,QAAO,MAAiC;AAC5E,QAAM,EAAEC,EAAC,IAAKV,eAAeK,KAAKM,QAAQC,GAAG;AAG7C,QAAMC,KAAKtB,IAAIuB,YAAYL,OAAAA;AAC3B,QAAMM,WAAWxB,IAAIyB,YAAYP,OAAAA;AACjC,QAAMQ,SACJ1B,IAAI2B,QAAQT,OAAAA,MACXM,YAAYF,KACTA,GAAGM,MAAMC,SACNC,KAAI,EACJC,OAAO9B,KAAK+B,MAAM,EAClBC,KAAK,CAACd,OAAMlB,KAAKwB,YAAYN,EAAAA,MAAOK,QAAAA,IACvCU;AACN,QAAMC,OACJT,UAAUzB,KAAKsB,YAAYG,MAAAA,KAAW,OAClC,sBACC1B,IAAIoC,QAAQlB,OAAAA,GAAUiB,QAAQ;AAErC,QAAME,UAAUxB,kBAAkBS,IAAIJ,SAAS;IAAEoB,YAAY;IAAMC,WAAW;EAAK,CAAA;AACnF,QAAMC,eAAeH,QAAQI,WAAW;AAExC,SACE,sBAAA,cAACnC,MAAMoC,MAAI;IAACzB;KACV,sBAAA,cAACX,MAAME,SAAO;IAACmC,SAAAA;KACb,sBAAA,cAACnC,QAAQkC,MAAI,IAAA,CAAA,GAEf,sBAAA,cAACpC,MAAMsC,SAAO;IAACD,SAAAA;KACb,sBAAA,cAACpC,WAAWmC,MAAI;IAACG,aAAY;KAC3B,sBAAA,cAACtC,WAAWuC,UAAQ;IAACC,YAAW;KAC9B,sBAAA,cAAC7C,KAAKwC,MAAI;IAACK,YAAW;KACpB,sBAAA,cAAC7C,KAAK8C,QAAM,MACV,sBAAA,cAAC9C,KAAK+C,OAAK,MACT,sBAAA,cAAC9C,MAAAA;IAAKgC;OAER,sBAAA,cAACjC,KAAKgD,OAAK,MAAElD,IAAImD,SAASjC,SAAS;IAAEkC,UAAU;EAAW,CAAA,CAAA,CAAA,GAE5D,sBAAA,cAAClD,KAAKmD,MAAI,MACR,sBAAA,cAACzD,QAAQA,SAAO;IAAC0D,MAAMzD,WAAW0D;IAAaC,MAAM;MAAEtC;IAAQ;IAAGuC,OAAO;QAK7E,sBAAA,cAACC,OAAAA;IAAIC,WAAU;KACb,sBAAA,cAACtD,MAAMqC,MAAI,MACT,sBAAA,cAACrC,MAAMuD,OAAK,MAAEzC,EAAE,uBAAA,CAAA,CAAA,GAElB,sBAAA,cAACvB,QAAQA,SAAO;IAAC0D,MAAMvC;IAASyC,MAAM;MAAEtC;MAAS2C,cAAc3C,QAAQ4C;IAAG;IAAGL,OAAO;OAGrFpB,QAAQI,SAAS,KAChB,sBAAA,cAACiB,OAAAA;IACCC,WAAW/C,GAAG,0CAA0C4B,eAAe,sBAAsB,QAAA;KAE7F,sBAAA,cAACnC,MAAMqC,MAAI,MACT,sBAAA,cAACrC,MAAMuD,OAAK,MAAEzC,EAAE,uBAAA,CAAA,CAAA,GAElB,sBAAA,cAACT,QAAQgC,MAAI;IAACqB,MAAMC;IAAYC,SAASzB,eAAe,IAAIN;KAC1D,sBAAA,cAACxB,QAAQkC,SAAO,MACd,sBAAA,cAAClC,QAAQoC,UAAQ;IAACoB,OAAO7B;;AAU7C;AAEA,IAAM2B,aAAa,CAAC,EAAER,MAAMtC,SAAS6B,WAAU,MAAiD;AAC9F,QAAM,EAAE5B,EAAC,IAAKV,eAAeK,KAAKM,QAAQC,GAAG;AAC7C,QAAMmC,OAAO7D,QAAQ,OAAO;IAAEuB;EAAQ,IAAI;IAACA;GAAQ;AACnD,QAAMiB,OAAOpC,OAAOqC,QAAQlB,OAAAA,GAAUiB,QAAQ;AAC9C,QAAMgC,YAAYrE,mBAAmBoB,OAAAA;AAErC,SACE,sBAAA,cAACP,KAAK+B,MAAI,MACR,sBAAA,cAACxC,KAAKwC,MAAI;IAACK;KACT,sBAAA,cAAC7C,KAAK8C,QAAM,MACV,sBAAA,cAAC9C,KAAK+C,OAAK,MACT,sBAAA,cAAC9C,MAAAA;IAAKgC;OAER,sBAAA,cAACjC,KAAKgD,OAAK,MAAEnD,OAAOoD,SAASjC,SAAS;IAAEkC,UAAU;EAAW,CAAA,CAAA,GAC7D,sBAAA,cAAClD,KAAK+C,OAAK;IAACmB,KAAAA;KACV,sBAAA,cAACzD,KAAK0D,SAAO;IAAC1B,SAAAA;IAAQ2B,UAAU,CAACH,WAAW1B;KAC1C,sBAAA,cAACrC,YAAAA;IACCmE,UAAAA;IACAC,SAAQ;IACRrC,MAAK;IACLsC,OAAOtD,EAAE,oBAAA;OAGb,sBAAA,cAACR,KAAKiC,SAAO;IAACsB,OAAOC;QAGzB,sBAAA,cAACjE,KAAKmD,MAAI,MACR,sBAAA,cAACzD,QAAQA,SAAO;IAAC0D,MAAMzD,WAAW0D;IAAaC;IAAYC,OAAO;;AAK5E;",
|
|
6
|
+
"names": ["React", "useMemo", "Surface", "AppSurface", "useObjectMenuItems", "Entity", "Obj", "Type", "Card", "Icon", "IconButton", "Input", "Panel", "ScrollArea", "Toolbar", "useTranslation", "Masonry", "Menu", "mx", "useRelatedObjects", "meta", "Prompts", "RecordArticle", "role", "subject", "t", "profile", "key", "db", "getDatabase", "typename", "getTypename", "schema", "getType", "graph", "registry", "list", "filter", "isType", "find", "undefined", "icon", "getIcon", "related", "references", "relations", "singleColumn", "length", "Root", "asChild", "Content", "orientation", "Viewport", "classNames", "Header", "Block", "Title", "getLabel", "fallback", "Body", "type", "CardContent", "data", "limit", "div", "className", "Label", "attendableId", "id", "Tile", "ObjectCard", "columns", "items", "menuItems", "end", "Trigger", "disabled", "iconOnly", "variant", "label"]
|
|
7
|
+
}
|
|
@@ -5,7 +5,7 @@ import React, { useMemo } from "react";
|
|
|
5
5
|
import { Surface } from "@dxos/app-framework/ui";
|
|
6
6
|
import { AppSurface, useObjectMenuItems } from "@dxos/app-toolkit/ui";
|
|
7
7
|
import { Entity, Obj } from "@dxos/echo";
|
|
8
|
-
import { Card, Panel, Toolbar, useTranslation } from "@dxos/react-ui";
|
|
8
|
+
import { Card, Icon, IconButton, Panel, Toolbar, useTranslation } from "@dxos/react-ui";
|
|
9
9
|
import { Masonry } from "@dxos/react-ui-masonry";
|
|
10
10
|
import { Menu } from "@dxos/react-ui-menu";
|
|
11
11
|
import { useRelatedObjects } from "#hooks";
|
|
@@ -32,7 +32,7 @@ var RelatedArticle = ({ role, companionTo }) => {
|
|
|
32
32
|
})))));
|
|
33
33
|
};
|
|
34
34
|
var ObjectCard = ({ data: subject, classNames }) => {
|
|
35
|
-
const { t } = useTranslation(meta.
|
|
35
|
+
const { t } = useTranslation(meta.profile.key);
|
|
36
36
|
const data = useMemo(() => ({
|
|
37
37
|
subject
|
|
38
38
|
}), [
|
|
@@ -42,22 +42,24 @@ var ObjectCard = ({ data: subject, classNames }) => {
|
|
|
42
42
|
const menuItems = useObjectMenuItems(subject);
|
|
43
43
|
return /* @__PURE__ */ React.createElement(Menu.Root, null, /* @__PURE__ */ React.createElement(Card.Root, {
|
|
44
44
|
classNames
|
|
45
|
-
}, /* @__PURE__ */ React.createElement(Card.Header, null, /* @__PURE__ */ React.createElement(Card.Icon, {
|
|
45
|
+
}, /* @__PURE__ */ React.createElement(Card.Header, null, /* @__PURE__ */ React.createElement(Card.Block, null, /* @__PURE__ */ React.createElement(Icon, {
|
|
46
46
|
icon
|
|
47
|
-
}), /* @__PURE__ */ React.createElement(Card.Title, null, Entity.getLabel(subject, {
|
|
47
|
+
})), /* @__PURE__ */ React.createElement(Card.Title, null, Entity.getLabel(subject, {
|
|
48
48
|
fallback: "typename"
|
|
49
|
-
})), /* @__PURE__ */ React.createElement(
|
|
49
|
+
})), /* @__PURE__ */ React.createElement(Card.Block, {
|
|
50
|
+
end: true
|
|
51
|
+
}, /* @__PURE__ */ React.createElement(Menu.Trigger, {
|
|
50
52
|
asChild: true,
|
|
51
53
|
disabled: !menuItems?.length
|
|
52
|
-
}, /* @__PURE__ */ React.createElement(
|
|
54
|
+
}, /* @__PURE__ */ React.createElement(IconButton, {
|
|
53
55
|
iconOnly: true,
|
|
54
56
|
variant: "ghost",
|
|
55
57
|
icon: "ph--dots-three-vertical--regular",
|
|
56
58
|
label: t("more-actions.label")
|
|
57
59
|
})), /* @__PURE__ */ React.createElement(Menu.Content, {
|
|
58
60
|
items: menuItems
|
|
59
|
-
})), /* @__PURE__ */ React.createElement(Card.Body, null, /* @__PURE__ */ React.createElement(Surface.Surface, {
|
|
60
|
-
type: AppSurface.
|
|
61
|
+
}))), /* @__PURE__ */ React.createElement(Card.Body, null, /* @__PURE__ */ React.createElement(Surface.Surface, {
|
|
62
|
+
type: AppSurface.CardContent,
|
|
61
63
|
data,
|
|
62
64
|
limit: 1
|
|
63
65
|
}))));
|
|
@@ -65,4 +67,4 @@ var ObjectCard = ({ data: subject, classNames }) => {
|
|
|
65
67
|
export {
|
|
66
68
|
RelatedArticle as default
|
|
67
69
|
};
|
|
68
|
-
//# sourceMappingURL=RelatedArticle-
|
|
70
|
+
//# sourceMappingURL=RelatedArticle-YRCRBIYU.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/containers/RelatedArticle/RelatedArticle.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { AppSurface, useObjectMenuItems } from '@dxos/app-toolkit/ui';\nimport { Entity, Obj } from '@dxos/echo';\nimport { Card, Icon, IconButton, Panel, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { Masonry } from '@dxos/react-ui-masonry';\nimport { Menu } from '@dxos/react-ui-menu';\n\nimport { useRelatedObjects } from '#hooks';\nimport { meta } from '#meta';\n\n// TODO(burdon): Companion type.\nexport type RelatedArticleProps = Pick<\n AppSurface.ObjectArticleProps<Obj.Unknown, {}, Obj.Unknown>,\n 'role' | 'companionTo'\n>;\n\nexport const RelatedArticle = ({ role, companionTo }: RelatedArticleProps) => {\n const db = Obj.getDatabase(companionTo);\n const items = useRelatedObjects(db, companionTo, { references: true, relations: true });\n\n return (\n <Masonry.Root Tile={ObjectCard}>\n <Panel.Root role={role}>\n <Panel.Toolbar asChild>\n <Toolbar.Root />\n </Panel.Toolbar>\n <Panel.Content asChild>\n <Masonry.Content classNames='p-2' centered>\n <Masonry.Viewport items={items} />\n </Masonry.Content>\n </Panel.Content>\n </Panel.Root>\n </Masonry.Root>\n );\n};\n\n/** Masonry tile renderer for a related entity. */\nconst ObjectCard = ({ data: subject, classNames }: { data: Entity.Unknown; classNames?: string }) => {\n const { t } = useTranslation(meta.profile.key);\n const data = useMemo(() => ({ subject }), [subject]);\n const icon = Entity.getIcon(subject)?.icon ?? 'ph--circle-dashed--regular';\n\n // TODO(burdon): BUG: Includes item itself.\n const menuItems = useObjectMenuItems(subject);\n\n return (\n <Menu.Root>\n <Card.Root classNames={classNames}>\n <Card.Header>\n <Card.Block>\n <Icon icon={icon} />\n </Card.Block>\n <Card.Title>{Entity.getLabel(subject, { fallback: 'typename' })}</Card.Title>\n <Card.Block end>\n <Menu.Trigger asChild disabled={!menuItems?.length}>\n <IconButton\n iconOnly\n variant='ghost'\n icon='ph--dots-three-vertical--regular'\n label={t('more-actions.label')}\n />\n </Menu.Trigger>\n <Menu.Content items={menuItems} />\n </Card.Block>\n </Card.Header>\n <Card.Body>\n <Surface.Surface type={AppSurface.CardContent} data={data} limit={1} />\n </Card.Body>\n </Card.Root>\n </Menu.Root>\n );\n};\n"],
|
|
5
|
+
"mappings": ";;;AAIA,OAAOA,SAASC,eAAe;AAE/B,SAASC,eAAe;AACxB,SAASC,YAAYC,0BAA0B;AAC/C,SAASC,QAAQC,WAAW;AAC5B,SAASC,MAAMC,MAAMC,YAAYC,OAAOC,SAASC,sBAAsB;AACvE,SAASC,eAAe;AACxB,SAASC,YAAY;AAErB,SAASC,yBAAyB;AAClC,SAASC,YAAY;AAQd,IAAMC,iBAAiB,CAAC,EAAEC,MAAMC,YAAW,MAAuB;AACvE,QAAMC,KAAKd,IAAIe,YAAYF,WAAAA;AAC3B,QAAMG,QAAQP,kBAAkBK,IAAID,aAAa;IAAEI,YAAY;IAAMC,WAAW;EAAK,CAAA;AAErF,SACE,sBAAA,cAACX,QAAQY,MAAI;IAACC,MAAMC;KAClB,sBAAA,cAACjB,MAAMe,MAAI;IAACP;KACV,sBAAA,cAACR,MAAMC,SAAO;IAACiB,SAAAA;KACb,sBAAA,cAACjB,QAAQc,MAAI,IAAA,CAAA,GAEf,sBAAA,cAACf,MAAMmB,SAAO;IAACD,SAAAA;KACb,sBAAA,cAACf,QAAQgB,SAAO;IAACC,YAAW;IAAMC,UAAAA;KAChC,sBAAA,cAAClB,QAAQmB,UAAQ;IAACV;;AAM9B;AAGA,IAAMK,aAAa,CAAC,EAAEM,MAAMC,SAASJ,WAAU,MAAiD;AAC9F,QAAM,EAAEK,EAAC,IAAKvB,eAAeI,KAAKoB,QAAQC,GAAG;AAC7C,QAAMJ,OAAOhC,QAAQ,OAAO;IAAEiC;EAAQ,IAAI;IAACA;GAAQ;AACnD,QAAMI,OAAOjC,OAAOkC,QAAQL,OAAAA,GAAUI,QAAQ;AAG9C,QAAME,YAAYpC,mBAAmB8B,OAAAA;AAErC,SACE,sBAAA,cAACpB,KAAKW,MAAI,MACR,sBAAA,cAAClB,KAAKkB,MAAI;IAACK;KACT,sBAAA,cAACvB,KAAKkC,QAAM,MACV,sBAAA,cAAClC,KAAKmC,OAAK,MACT,sBAAA,cAAClC,MAAAA;IAAK8B;OAER,sBAAA,cAAC/B,KAAKoC,OAAK,MAAEtC,OAAOuC,SAASV,SAAS;IAAEW,UAAU;EAAW,CAAA,CAAA,GAC7D,sBAAA,cAACtC,KAAKmC,OAAK;IAACI,KAAAA;KACV,sBAAA,cAAChC,KAAKiC,SAAO;IAACnB,SAAAA;IAAQoB,UAAU,CAACR,WAAWS;KAC1C,sBAAA,cAACxC,YAAAA;IACCyC,UAAAA;IACAC,SAAQ;IACRb,MAAK;IACLc,OAAOjB,EAAE,oBAAA;OAGb,sBAAA,cAACrB,KAAKe,SAAO;IAACP,OAAOkB;QAGzB,sBAAA,cAACjC,KAAK8C,MAAI,MACR,sBAAA,cAACnD,QAAQA,SAAO;IAACoD,MAAMnD,WAAWoD;IAAatB;IAAYuB,OAAO;;AAK5E;",
|
|
6
|
+
"names": ["React", "useMemo", "Surface", "AppSurface", "useObjectMenuItems", "Entity", "Obj", "Card", "Icon", "IconButton", "Panel", "Toolbar", "useTranslation", "Masonry", "Menu", "useRelatedObjects", "meta", "RelatedArticle", "role", "companionTo", "db", "getDatabase", "items", "references", "relations", "Root", "Tile", "ObjectCard", "asChild", "Content", "classNames", "centered", "Viewport", "data", "subject", "t", "profile", "key", "icon", "getIcon", "menuItems", "Header", "Block", "Title", "getLabel", "fallback", "end", "Trigger", "disabled", "length", "iconOnly", "variant", "label", "Body", "type", "CardContent", "limit"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/containers/RenamePopover/RenamePopover.tsx
|
|
4
|
+
import React, { useCallback, useEffect, useRef, useState } from "react";
|
|
5
|
+
import { useOperationInvoker } from "@dxos/app-framework/ui";
|
|
6
|
+
import { LayoutOperation } from "@dxos/app-toolkit";
|
|
7
|
+
import { Entity, Obj } from "@dxos/echo";
|
|
8
|
+
import { log } from "@dxos/log";
|
|
9
|
+
import { isSpace } from "@dxos/react-client/echo";
|
|
10
|
+
import { Input, useTranslation } from "@dxos/react-ui";
|
|
11
|
+
import { meta } from "#meta";
|
|
12
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-space/src/containers/RenamePopover/RenamePopover.tsx";
|
|
13
|
+
var getName = (subject) => (isSpace(subject) ? subject.properties.name : Entity.getLabel(subject)) ?? "";
|
|
14
|
+
var setName = (subject, name) => {
|
|
15
|
+
if (isSpace(subject)) {
|
|
16
|
+
Obj.update(subject.properties, (properties) => {
|
|
17
|
+
properties.name = name;
|
|
18
|
+
});
|
|
19
|
+
} else {
|
|
20
|
+
Entity.update(subject, () => Entity.setLabel(subject, name));
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
var RenamePopover = ({ subject }) => {
|
|
24
|
+
const { t } = useTranslation(meta.profile.key);
|
|
25
|
+
const space = isSpace(subject);
|
|
26
|
+
const { invokePromise } = useOperationInvoker();
|
|
27
|
+
const [name, setNameState] = useState(() => getName(subject));
|
|
28
|
+
const nameRef = useRef(name);
|
|
29
|
+
nameRef.current = name;
|
|
30
|
+
const initialNameRef = useRef(name);
|
|
31
|
+
const cancelledRef = useRef(false);
|
|
32
|
+
const committedRef = useRef(false);
|
|
33
|
+
const write = useCallback(() => {
|
|
34
|
+
try {
|
|
35
|
+
if (!cancelledRef.current && nameRef.current !== initialNameRef.current) {
|
|
36
|
+
setName(subject, nameRef.current);
|
|
37
|
+
}
|
|
38
|
+
} catch (err) {
|
|
39
|
+
log.error("Failed to rename", {
|
|
40
|
+
err
|
|
41
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 42, S: void 0 });
|
|
42
|
+
}
|
|
43
|
+
}, [
|
|
44
|
+
subject
|
|
45
|
+
]);
|
|
46
|
+
const commit = useCallback(() => {
|
|
47
|
+
if (!committedRef.current) {
|
|
48
|
+
committedRef.current = true;
|
|
49
|
+
write();
|
|
50
|
+
}
|
|
51
|
+
}, [
|
|
52
|
+
write
|
|
53
|
+
]);
|
|
54
|
+
useEffect(() => () => {
|
|
55
|
+
if (!committedRef.current) {
|
|
56
|
+
write();
|
|
57
|
+
}
|
|
58
|
+
}, [
|
|
59
|
+
write
|
|
60
|
+
]);
|
|
61
|
+
const close = useCallback(() => {
|
|
62
|
+
void invokePromise(LayoutOperation.UpdatePopover, {
|
|
63
|
+
anchorId: "",
|
|
64
|
+
state: false
|
|
65
|
+
});
|
|
66
|
+
}, [
|
|
67
|
+
invokePromise
|
|
68
|
+
]);
|
|
69
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
70
|
+
className: "p-2"
|
|
71
|
+
}, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, {
|
|
72
|
+
srOnly: true
|
|
73
|
+
}, t(space ? "space-name.label" : "object-name.label")), /* @__PURE__ */ React.createElement(Input.TextInput, {
|
|
74
|
+
autoFocus: true,
|
|
75
|
+
value: name,
|
|
76
|
+
placeholder: t(space ? "unnamed-space.label" : "object.placeholder"),
|
|
77
|
+
"data-testid": "spacePlugin.rename.input",
|
|
78
|
+
onChange: ({ target: { value } }) => setNameState(value),
|
|
79
|
+
onFocus: (event) => event.target.select(),
|
|
80
|
+
onKeyDown: (event) => {
|
|
81
|
+
if (event.key === "Enter") {
|
|
82
|
+
commit();
|
|
83
|
+
close();
|
|
84
|
+
} else if (event.key === "Escape") {
|
|
85
|
+
event.preventDefault();
|
|
86
|
+
event.stopPropagation();
|
|
87
|
+
cancelledRef.current = true;
|
|
88
|
+
close();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
})));
|
|
92
|
+
};
|
|
93
|
+
export {
|
|
94
|
+
RenamePopover as default
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=RenamePopover-XBZAKNM7.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/containers/RenamePopover/RenamePopover.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { Entity, Obj } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { type Space, isSpace } from '@dxos/react-client/echo';\nimport { Input, useTranslation } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\n\nexport type RenameSubject = Space | Entity.Unknown;\n\nconst getName = (subject: RenameSubject): string =>\n (isSpace(subject) ? subject.properties.name : Entity.getLabel(subject)) ?? '';\n\nconst setName = (subject: RenameSubject, name: string): void => {\n if (isSpace(subject)) {\n Obj.update(subject.properties, (properties) => {\n properties.name = name;\n });\n } else {\n Entity.update(subject, () => Entity.setLabel(subject, name));\n }\n};\n\nexport type RenamePopoverProps = { subject: RenameSubject };\n\n/**\n * Inline rename popover anchored to a navtree row. Commits on Enter or when dismissed; Escape cancels.\n */\nexport const RenamePopover = ({ subject }: RenamePopoverProps) => {\n const { t } = useTranslation(meta.profile.key);\n const space = isSpace(subject);\n const { invokePromise } = useOperationInvoker();\n const [name, setNameState] = useState(() => getName(subject));\n\n // Commit the latest value when the popover is dismissed (Enter, click-outside, or blur), unless cancelled.\n const nameRef = useRef(name);\n nameRef.current = name;\n const initialNameRef = useRef(name);\n const cancelledRef = useRef(false);\n // Enter commits then closes, which unmounts and runs the dismissal cleanup; guard against a duplicate write.\n const committedRef = useRef(false);\n\n const write = useCallback(() => {\n try {\n if (!cancelledRef.current && nameRef.current !== initialNameRef.current) {\n setName(subject, nameRef.current);\n }\n } catch (err) {\n log.error('Failed to rename', { err });\n }\n }, [subject]);\n\n const commit = useCallback(() => {\n if (!committedRef.current) {\n committedRef.current = true;\n write();\n }\n }, [write]);\n\n // Commit the latest value on dismissal (click-outside/blur) when the component unmounts, unless Enter\n // already committed or Escape cancelled. This must not set committedRef: under StrictMode the mount-time\n // setup/cleanup/setup cycle runs this cleanup before any interaction, and flipping the guard there would\n // suppress the real Enter commit.\n useEffect(\n () => () => {\n if (!committedRef.current) {\n write();\n }\n },\n [write],\n );\n\n const close = useCallback(() => {\n void invokePromise(LayoutOperation.UpdatePopover, { anchorId: '', state: false });\n }, [invokePromise]);\n\n return (\n <div className='p-2'>\n <Input.Root>\n <Input.Label srOnly>{t(space ? 'space-name.label' : 'object-name.label')}</Input.Label>\n <Input.TextInput\n autoFocus\n value={name}\n placeholder={t(space ? 'unnamed-space.label' : 'object.placeholder')}\n data-testid='spacePlugin.rename.input'\n onChange={({ target: { value } }) => setNameState(value)}\n onFocus={(event) => event.target.select()}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n commit();\n close();\n } else if (event.key === 'Escape') {\n // Own the dismissal so it does not also bubble to the deck popover's escape handler,\n // whose divergent teardown leaves stale state that makes the next open flicker.\n event.preventDefault();\n event.stopPropagation();\n cancelledRef.current = true;\n close();\n }\n }}\n />\n </Input.Root>\n </div>\n );\n};\n"],
|
|
5
|
+
"mappings": ";;;AAIA,OAAOA,SAASC,aAAaC,WAAWC,QAAQC,gBAAgB;AAEhE,SAASC,2BAA2B;AACpC,SAASC,uBAAuB;AAChC,SAASC,QAAQC,WAAW;AAC5B,SAASC,WAAW;AACpB,SAAqBC,eAAe;AACpC,SAASC,OAAOC,sBAAsB;AAEtC,SAASC,YAAY;AAIrB,IAAA,eAAiBC;IAIf,UAAYA,CAAAA,aAAU,QAAA,OAAA,IAAA,QAAA,WAAA,OAAA,OAAA,SAAA,OAAA,MAAA;cAChBC,CAAAA,SAAOD,SAAQE;cACjBA,OAAWC,GAAAA;AACb,QAAA,OAAA,QAAA,YAAA,CAAA,eAAA;AACK,iBAAA,OAAA;IACLV,CAAAA;EACF,OAAA;AACF,WAAA,OAAA,SAAA,MAAA,OAAA,SAAA,SAAA,IAAA,CAAA;EAIA;;AAKQW,IAAAA,gBAAgBJ,CAAAA,EAAAA,QAAAA,MAAAA;AACtB,QAAM,EAAEK,EAAAA,IAAAA,eAAkBd,KAAAA,QAAAA,GAAAA;AAC1B,QAAM,QAAOe,QAAAA,OAAgBhB;AAE7B,QAAA,EAAA,cAAA,IAAA,oBAAA;AACA,QAAMiB,CAAAA,MAAAA,YAAiBJ,IAAAA,SAAAA,MAAAA,QAAAA,OAAAA,CAAAA;AAEvB,QAAMK,UAAAA,OAAiBnB,IAAAA;AACvB,UAAMoB,UAAAA;AACN,QAAA,iBAAA,OAAA,IAAA;AACA,QAAMC,eAAerB,OAAO,KAAA;QAG1B,eAAI,OAAA,KAAA;gBACGoB,YAAaE,MAAAA;;AAElB,UAAA,CAAA,aAAA,WAAA,QAAA,YAAA,eAAA,SAAA;AACA,gBAAY,SAAA,QAAA,OAAA;MACZhB;aAAgCiB,KAAAA;AAAI,UAAA,MAAA,oBAAA;QACtC;MACC,GAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,OAAA,CAAA;IAACZ;KAAQ;IAEZ;;iBAEIU,YAAaC,MAAU;QACvBE,CAAAA,aAAAA,SAAAA;AACF,mBAAA,UAAA;AACC,YAAA;IAACA;KAAM;IAEV;EACA,CAAA;kBAMMA,MAAAA;AACF,QAAA,CAAA,aAAA,SAAA;AAEF,YAAA;IAACA;EAAM,GAAA;IAGT;;gBACsDC,YAAU,MAAA;SAAIC,cAAO,gBAAA,eAAA;MAAM,UAAA;MAC9E,OAAA;IAACV,CAAAA;KAAc;IAElB;;SAEI,sBAAA,cAACR,OAAU;IACImB,WAAAA;KAAkB,sBAAA,cAAqB,MAAA,MAAA,MAAA,sBACpD,cAAA,MAACnB,OAAMoB;IACLC,QAAAA;OACAC,QAAOhB,qBAAAA,mBAAAA,CAAAA,GAAAA,sBAAAA,cAAAA,MAAAA,WAAAA;IACPiB,WAAAA;IACAC,OAAAA;IACAC,aAAaC,EAAAA,QAAUJ,wBAAcb,oBAAaa;IAClDK,eAAUC;IACVC,UAAAA,CAAW,EAACD,QAAAA,EAAAA,MAAAA,EAAAA,MAAAA,aAAAA,KAAAA;aACNA,CAAAA,UAAS,MAAK,OAAS,OAAA;eACzBE,CAAAA,UAAAA;UACAC,MAAAA,QAAAA,SAAAA;AACF,eAAWH;AACT,cAAA;iBACA,MAAA,QAAA,UAAA;AAGAhB,cAAAA,eAAoB;AACpBmB,cAAAA,gBAAAA;AACF,qBAAA,UAAA;AACF,cAAA;;IAKR;;;",
|
|
6
|
+
"names": ["React", "useCallback", "useEffect", "useRef", "useState", "useOperationInvoker", "LayoutOperation", "Entity", "Obj", "log", "isSpace", "Input", "useTranslation", "meta", "subject", "update", "properties", "name", "space", "invokePromise", "setNameState", "nameRef", "initialNameRef", "cancelledRef", "committedRef", "current", "err", "write", "anchorId", "state", "srOnly", "TextInput", "autoFocus", "value", "placeholder", "data-testid", "onChange", "target", "onFocus", "event", "onKeyDown", "commit", "close"]
|
|
7
|
+
}
|
|
@@ -8,7 +8,7 @@ import { Settings } from "@dxos/react-ui-form";
|
|
|
8
8
|
import { mx } from "@dxos/ui-theme";
|
|
9
9
|
import { meta } from "#meta";
|
|
10
10
|
var SchemaContainer = ({ space }) => {
|
|
11
|
-
const { t } = useTranslation(meta.
|
|
11
|
+
const { t } = useTranslation(meta.profile.key);
|
|
12
12
|
const types = useQuerySpaceTypes(space);
|
|
13
13
|
return /* @__PURE__ */ React.createElement(Settings.Viewport, null, /* @__PURE__ */ React.createElement(Settings.Section, {
|
|
14
14
|
title: t("schema-verbose.label"),
|
|
@@ -46,4 +46,4 @@ var useQuerySpaceTypes = (space) => {
|
|
|
46
46
|
export {
|
|
47
47
|
SchemaContainer as default
|
|
48
48
|
};
|
|
49
|
-
//# sourceMappingURL=SchemaContainer-
|
|
49
|
+
//# sourceMappingURL=SchemaContainer-2NK5YB5O.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/containers/SchemaContainer/SchemaContainer.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useEffect, useState } from 'react';\n\nimport { AppSurface } from '@dxos/app-toolkit/ui';\nimport { Type } from '@dxos/echo';\nimport { type Space } from '@dxos/react-client/echo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { Settings } from '@dxos/react-ui-form';\nimport { mx } from '@dxos/ui-theme';\n\nimport { meta } from '#meta';\n\nexport const SchemaContainer = ({ space }: AppSurface.SpaceArticleProps) => {\n const { t } = useTranslation(meta.profile.key);\n const types = useQuerySpaceTypes(space);\n\n return (\n <Settings.Viewport>\n <Settings.Section title={t('schema-verbose.label')} description={t('schema.description')}>\n <div\n className={mx([\n 'grid md:col-span-2 grid-cols-subgrid gap-trim-sm items-center',\n '*:first:mt-0! *:last:mb-0! px-trim-md py-trim-md',\n 'border border-separator rounded-md',\n ])}\n >\n {types.length === 0 && <div className='text-center py-4'>{t('no-schemas-found.message')}</div>}\n {types.map((type) => (\n <div key={type.id}>{Type.getTypename(type)}</div>\n ))}\n </div>\n </Settings.Section>\n </Settings.Viewport>\n );\n};\n\n/**\n * Subscribe to and retrieve all types from a space's registry.\n */\nexport const useQuerySpaceTypes = (space: Space): Type.AnyEntity[] => {\n const [types, setTypes] = useState<Type.AnyEntity[]>(() => [...space.db.graph.registry.list().filter(Type.isType)]);\n\n useEffect(() => {\n setTypes([...space.db.graph.registry.list().filter(Type.isType)]);\n return space.db.graph.registry.changed.on(() => {\n setTypes([...space.db.graph.registry.list().filter(Type.isType)]);\n });\n }, [space]);\n\n return types;\n};\n"],
|
|
5
|
+
"mappings": ";;;AAIA,OAAOA,SAASC,WAAWC,gBAAgB;AAG3C,SAASC,YAAY;AAErB,SAASC,sBAAsB;AAC/B,SAASC,gBAAgB;AACzB,SAASC,UAAU;AAEnB,SAASC,YAAY;AAEd,IAAMC,kBAAkB,CAAC,EAAEC,MAAK,MAAgC;AACrE,QAAM,EAAEC,EAAC,IAAKN,eAAeG,KAAKI,QAAQC,GAAG;AAC7C,QAAMC,QAAQC,mBAAmBL,KAAAA;AAEjC,SACE,sBAAA,cAACJ,SAASU,UAAQ,MAChB,sBAAA,cAACV,SAASW,SAAO;IAACC,OAAOP,EAAE,sBAAA;IAAyBQ,aAAaR,EAAE,oBAAA;KACjE,sBAAA,cAACS,OAAAA;IACCC,WAAWd,GAAG;MACZ;MACA;MACA;KACD;KAEAO,MAAMQ,WAAW,KAAK,sBAAA,cAACF,OAAAA;IAAIC,WAAU;KAAoBV,EAAE,0BAAA,CAAA,GAC3DG,MAAMS,IAAI,CAACC,SACV,sBAAA,cAACJ,OAAAA;IAAIP,KAAKW,KAAKC;KAAKrB,KAAKsB,YAAYF,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAMjD;AAKO,IAAMT,qBAAqB,CAACL,UAAAA;AACjC,QAAM,CAACI,OAAOa,QAAAA,IAAYxB,SAA2B,MAAM;OAAIO,MAAMkB,GAAGC,MAAMC,SAASC,KAAI,EAAGC,OAAO5B,KAAK6B,MAAM;GAAE;AAElH/B,YAAU,MAAA;AACRyB,aAAS;SAAIjB,MAAMkB,GAAGC,MAAMC,SAASC,KAAI,EAAGC,OAAO5B,KAAK6B,MAAM;KAAE;AAChE,WAAOvB,MAAMkB,GAAGC,MAAMC,SAASI,QAAQC,GAAG,MAAA;AACxCR,eAAS;WAAIjB,MAAMkB,GAAGC,MAAMC,SAASC,KAAI,EAAGC,OAAO5B,KAAK6B,MAAM;OAAE;IAClE,CAAA;EACF,GAAG;IAACvB;GAAM;AAEV,SAAOI;AACT;",
|
|
6
|
+
"names": ["React", "useEffect", "useState", "Type", "useTranslation", "Settings", "mx", "meta", "SchemaContainer", "space", "t", "profile", "key", "types", "useQuerySpaceTypes", "Viewport", "Section", "title", "description", "div", "className", "length", "map", "type", "id", "getTypename", "setTypes", "db", "graph", "registry", "list", "filter", "isType", "changed", "on"]
|
|
7
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SmallPresenceLive
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-2LTGSUGQ.mjs";
|
|
4
4
|
import "./chunk-J5LGTIGS.mjs";
|
|
5
5
|
export {
|
|
6
6
|
SmallPresenceLive as default
|
|
7
7
|
};
|
|
8
|
-
//# sourceMappingURL=SmallPresenceLive-
|
|
8
|
+
//# sourceMappingURL=SmallPresenceLive-L4H7WJOA.mjs.map
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/containers/SpaceHomeArticle/SpaceHomeArticle.tsx
|
|
4
|
+
import React, { useCallback } from "react";
|
|
5
|
+
import { Surface } from "@dxos/app-framework/ui";
|
|
6
|
+
import { useAppGraph } from "@dxos/app-toolkit/ui";
|
|
7
|
+
import { useActionRunner } from "@dxos/plugin-graph";
|
|
8
|
+
import { Column, Panel, ScrollArea } from "@dxos/react-ui";
|
|
9
|
+
import { Menu, MenuBuilder, graphActions, useMenuBuilder } from "@dxos/react-ui-menu";
|
|
10
|
+
import { meta } from "#meta";
|
|
11
|
+
import { SpaceHomeContent, SpaceHomePinBottom } from "#types";
|
|
12
|
+
var SpaceHomeArticle = ({ role, attendableId, space }) => {
|
|
13
|
+
const { actions, onAction } = useMenuActions(attendableId);
|
|
14
|
+
return /* @__PURE__ */ React.createElement(Panel.Root, {
|
|
15
|
+
role
|
|
16
|
+
}, /* @__PURE__ */ React.createElement(Menu.Root, {
|
|
17
|
+
...actions,
|
|
18
|
+
attendableId,
|
|
19
|
+
onAction
|
|
20
|
+
}, /* @__PURE__ */ React.createElement(Panel.Toolbar, {
|
|
21
|
+
asChild: true
|
|
22
|
+
}, /* @__PURE__ */ React.createElement(Menu.Toolbar, null))), /* @__PURE__ */ React.createElement(Panel.Content, {
|
|
23
|
+
asChild: true
|
|
24
|
+
}, /* @__PURE__ */ React.createElement(Column.Root, {
|
|
25
|
+
style: {
|
|
26
|
+
gridTemplateRows: "minmax(0,1fr) auto"
|
|
27
|
+
}
|
|
28
|
+
}, /* @__PURE__ */ React.createElement(ScrollArea.Root, {
|
|
29
|
+
orientation: "vertical",
|
|
30
|
+
centered: true,
|
|
31
|
+
padding: true
|
|
32
|
+
}, /* @__PURE__ */ React.createElement(ScrollArea.Viewport, null, /* @__PURE__ */ React.createElement("div", {
|
|
33
|
+
className: "dx-document flex flex-col gap-4 py-4"
|
|
34
|
+
}, /* @__PURE__ */ React.createElement(Surface.Surface, {
|
|
35
|
+
type: SpaceHomeContent,
|
|
36
|
+
data: {
|
|
37
|
+
space
|
|
38
|
+
}
|
|
39
|
+
})))), /* @__PURE__ */ React.createElement(Column.Center, {
|
|
40
|
+
classNames: "dx-document pb-4"
|
|
41
|
+
}, /* @__PURE__ */ React.createElement(Surface.Surface, {
|
|
42
|
+
type: SpaceHomePinBottom,
|
|
43
|
+
data: {
|
|
44
|
+
space
|
|
45
|
+
},
|
|
46
|
+
limit: 1
|
|
47
|
+
})))));
|
|
48
|
+
};
|
|
49
|
+
var useMenuActions = (attendableId) => {
|
|
50
|
+
const { graph } = useAppGraph();
|
|
51
|
+
const runAction = useActionRunner();
|
|
52
|
+
const menuActions = useMenuBuilder((get) => {
|
|
53
|
+
if (!attendableId) {
|
|
54
|
+
return MenuBuilder.make().build();
|
|
55
|
+
}
|
|
56
|
+
return MenuBuilder.make().subgraph(graphActions(graph, get, attendableId, {
|
|
57
|
+
filter: (action) => action.properties.disposition === "toolbar"
|
|
58
|
+
})).build();
|
|
59
|
+
}, [
|
|
60
|
+
graph,
|
|
61
|
+
attendableId
|
|
62
|
+
]);
|
|
63
|
+
const onAction = useCallback((action) => {
|
|
64
|
+
void runAction(action, {
|
|
65
|
+
caller: meta.profile.key
|
|
66
|
+
});
|
|
67
|
+
}, [
|
|
68
|
+
runAction
|
|
69
|
+
]);
|
|
70
|
+
return {
|
|
71
|
+
actions: menuActions,
|
|
72
|
+
onAction
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
export {
|
|
76
|
+
SpaceHomeArticle as default
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=SpaceHomeArticle-ZV7EERLS.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/containers/SpaceHomeArticle/SpaceHomeArticle.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { type AppSurface, useAppGraph } from '@dxos/app-toolkit/ui';\nimport { useActionRunner } from '@dxos/plugin-graph';\nimport { Column, Panel, ScrollArea } from '@dxos/react-ui';\nimport {\n type ActionExecutor,\n type ActionGraphProps,\n Menu,\n MenuBuilder,\n graphActions,\n useMenuBuilder,\n} from '@dxos/react-ui-menu';\n\nimport { meta } from '#meta';\nimport { SpaceHomeContent, SpaceHomePinBottom } from '#types';\n\nexport type SpaceHomeArticleProps = AppSurface.SpaceArticleProps;\n\n/**\n * Per-space Home article shell. Owns only the chrome: a toolbar sourced from graph actions\n * contributed with `disposition: 'toolbar'` (e.g. Start tour / Hide Welcome from plugin-support),\n * and a Column layout that delegates its body to surface contributors:\n *\n * - `space-home-content`: scrollable region (Welcome panel, recent-objects masonry, starter prompts).\n * - `space-home-pin-bottom`: pinned region (assistant prompt), capped at one contributor.\n *\n * The Space is read from `data.subject` (the Home node carries the Space as its data).\n */\nexport const SpaceHomeArticle = ({ role, attendableId, space }: SpaceHomeArticleProps) => {\n const { actions, onAction } = useMenuActions(attendableId);\n\n return (\n <Panel.Root role={role}>\n <Menu.Root {...actions} attendableId={attendableId} onAction={onAction}>\n <Panel.Toolbar asChild>\n <Menu.Toolbar />\n </Panel.Toolbar>\n </Menu.Root>\n <Panel.Content asChild>\n <Column.Root style={{ gridTemplateRows: 'minmax(0,1fr) auto' }}>\n <ScrollArea.Root orientation='vertical' centered padding>\n <ScrollArea.Viewport>\n <div className='dx-document flex flex-col gap-4 py-4'>\n <Surface.Surface type={SpaceHomeContent} data={{ space }} />\n </div>\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n <Column.Center classNames='dx-document pb-4'>\n <Surface.Surface type={SpaceHomePinBottom} data={{ space }} limit={1} />\n </Column.Center>\n </Column.Root>\n </Panel.Content>\n </Panel.Root>\n );\n};\n\n//\n// Hooks\n//\n\n/**\n * Builds the toolbar from contributed graph actions for the Home node. Actions opt into the\n * toolbar via `disposition: 'toolbar'`; the Home shell contributes none itself, so the toolbar\n * is empty unless another plugin (e.g. plugin-support's tour/welcome actions) contributes.\n */\nconst useMenuActions = (\n attendableId?: string,\n): { actions: ReturnType<typeof useMenuBuilder>; onAction: ActionExecutor } => {\n const { graph } = useAppGraph();\n const runAction = useActionRunner();\n\n const menuActions = useMenuBuilder(\n (get): ActionGraphProps => {\n if (!attendableId) {\n return MenuBuilder.make().build();\n }\n return MenuBuilder.make()\n .subgraph(\n graphActions(graph, get, attendableId, { filter: (action) => action.properties.disposition === 'toolbar' }),\n )\n .build();\n },\n [graph, attendableId],\n );\n\n const onAction: ActionExecutor = useCallback(\n (action) => {\n void runAction(action, { caller: meta.profile.key });\n },\n [runAction],\n );\n\n return { actions: menuActions, onAction };\n};\n"],
|
|
5
|
+
"mappings": ";;;AAIA,OAAOA,SAASC,mBAAmB;AAEnC,SAASC,eAAe;AACxB,SAA0BC,mBAAmB;AAC7C,SAASC,uBAAuB;AAChC,SAASC,QAAQC,OAAOC,kBAAkB;AAC1C,SAGEC,MACAC,aACAC,cACAC,sBACK;AAEP,SAASC,YAAY;AACrB,SAASC,kBAAkBC,0BAA0B;AAc9C,IAAMC,mBAAmB,CAAC,EAAEC,MAAMC,cAAcC,MAAK,MAAyB;AACnF,QAAM,EAAEC,SAASC,SAAQ,IAAKC,eAAeJ,YAAAA;AAE7C,SACE,sBAAA,cAACX,MAAMgB,MAAI;IAACN;KACV,sBAAA,cAACR,KAAKc,MAAI;IAAE,GAAGH;IAASF;IAA4BG;KAClD,sBAAA,cAACd,MAAMiB,SAAO;IAACC,SAAAA;KACb,sBAAA,cAAChB,KAAKe,SAAO,IAAA,CAAA,CAAA,GAGjB,sBAAA,cAACjB,MAAMmB,SAAO;IAACD,SAAAA;KACb,sBAAA,cAACnB,OAAOiB,MAAI;IAACI,OAAO;MAAEC,kBAAkB;IAAqB;KAC3D,sBAAA,cAACpB,WAAWe,MAAI;IAACM,aAAY;IAAWC,UAAAA;IAASC,SAAAA;KAC/C,sBAAA,cAACvB,WAAWwB,UAAQ,MAClB,sBAAA,cAACC,OAAAA;IAAIC,WAAU;KACb,sBAAA,cAAC/B,QAAQA,SAAO;IAACgC,MAAMrB;IAAkBsB,MAAM;MAAEjB;IAAM;SAI7D,sBAAA,cAACb,OAAO+B,QAAM;IAACC,YAAW;KACxB,sBAAA,cAACnC,QAAQA,SAAO;IAACgC,MAAMpB;IAAoBqB,MAAM;MAAEjB;IAAM;IAAGoB,OAAO;;AAM/E;AAWA,IAAMjB,iBAAiB,CACrBJ,iBAAAA;AAEA,QAAM,EAAEsB,MAAK,IAAKpC,YAAAA;AAClB,QAAMqC,YAAYpC,gBAAAA;AAElB,QAAMqC,cAAc9B,eAClB,CAAC+B,QAAAA;AACC,QAAI,CAACzB,cAAc;AACjB,aAAOR,YAAYkC,KAAI,EAAGC,MAAK;IACjC;AACA,WAAOnC,YAAYkC,KAAI,EACpBE,SACCnC,aAAa6B,OAAOG,KAAKzB,cAAc;MAAE6B,QAAQ,CAACC,WAAWA,OAAOC,WAAWC,gBAAgB;IAAU,CAAA,CAAA,EAE1GL,MAAK;EACV,GACA;IAACL;IAAOtB;GAAa;AAGvB,QAAMG,WAA2BnB,YAC/B,CAAC8C,WAAAA;AACC,SAAKP,UAAUO,QAAQ;MAAEG,QAAQtC,KAAKuC,QAAQC;IAAI,CAAA;EACpD,GACA;IAACZ;GAAU;AAGb,SAAO;IAAErB,SAASsB;IAAarB;EAAS;AAC1C;",
|
|
6
|
+
"names": ["React", "useCallback", "Surface", "useAppGraph", "useActionRunner", "Column", "Panel", "ScrollArea", "Menu", "MenuBuilder", "graphActions", "useMenuBuilder", "meta", "SpaceHomeContent", "SpaceHomePinBottom", "SpaceHomeArticle", "role", "attendableId", "space", "actions", "onAction", "useMenuActions", "Root", "Toolbar", "asChild", "Content", "style", "gridTemplateRows", "orientation", "centered", "padding", "Viewport", "div", "className", "type", "data", "Center", "classNames", "limit", "graph", "runAction", "menuActions", "get", "make", "build", "subgraph", "filter", "action", "properties", "disposition", "caller", "profile", "key"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/containers/SpaceHomeRecent/SpaceHomeRecent.tsx
|
|
4
|
+
import * as Option from "effect/Option";
|
|
5
|
+
import React, { useCallback, useMemo } from "react";
|
|
6
|
+
import { useCapabilities, useOperationInvoker } from "@dxos/app-framework/ui";
|
|
7
|
+
import { AppCapabilities, LayoutOperation, Paths } from "@dxos/app-toolkit";
|
|
8
|
+
import { Collection, Filter, Obj, Order, Query, Type } from "@dxos/echo";
|
|
9
|
+
import { HiddenAnnotation, getTypeAnnotation } from "@dxos/echo/Annotation";
|
|
10
|
+
import { Kind as EntityKind } from "@dxos/echo/Entity";
|
|
11
|
+
import { useQuery } from "@dxos/react-client/echo";
|
|
12
|
+
import { Card, Icon, toLocalizedString, useTranslation } from "@dxos/react-ui";
|
|
13
|
+
import { Masonry } from "@dxos/react-ui-masonry";
|
|
14
|
+
import { getStyles } from "@dxos/ui-theme";
|
|
15
|
+
import { meta } from "#meta";
|
|
16
|
+
var RECENT_LIMIT = 10;
|
|
17
|
+
var SpaceHomeRecent = ({ space }) => {
|
|
18
|
+
const { t } = useTranslation(meta.profile.key);
|
|
19
|
+
const schemas = useCapabilities(AppCapabilities.Schema);
|
|
20
|
+
const filter = useMemo(() => {
|
|
21
|
+
const collectionTypename = Type.getTypename(Collection.Collection);
|
|
22
|
+
const types = schemas.flat().filter(Type.isType).filter((type) => getTypeAnnotation(Type.getSchema(type))?.kind !== EntityKind.Relation).filter((type) => !HiddenAnnotation.get(Type.getSchema(type)).pipe(Option.getOrElse(() => false))).filter((type) => Type.getTypename(type) !== collectionTypename);
|
|
23
|
+
return types.length > 0 ? Filter.or(...types.map((type) => Filter.type(type))) : void 0;
|
|
24
|
+
}, [
|
|
25
|
+
schemas
|
|
26
|
+
]);
|
|
27
|
+
const query = useMemo(() => Query.select(filter ?? Filter.everything()).orderBy(Order.updated("desc")).limit(RECENT_LIMIT), [
|
|
28
|
+
filter
|
|
29
|
+
]);
|
|
30
|
+
const recent = useQuery(filter && space ? space.db : void 0, query);
|
|
31
|
+
if (recent.length === 0) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("h2", {
|
|
35
|
+
className: "text-sm font-medium text-description"
|
|
36
|
+
}, t("space-home.recent.heading")), /* @__PURE__ */ React.createElement(Masonry.Root, {
|
|
37
|
+
Tile: RecentObjectTile
|
|
38
|
+
}, /* @__PURE__ */ React.createElement(Masonry.Content, {
|
|
39
|
+
padding: false
|
|
40
|
+
}, /* @__PURE__ */ React.createElement(Masonry.Viewport, {
|
|
41
|
+
classNames: "py-2",
|
|
42
|
+
items: recent,
|
|
43
|
+
getId: (object) => object.id
|
|
44
|
+
}))));
|
|
45
|
+
};
|
|
46
|
+
var RecentObjectTile = ({ data }) => {
|
|
47
|
+
const { invokePromise } = useOperationInvoker();
|
|
48
|
+
const { t } = useTranslation(meta.profile.key);
|
|
49
|
+
const typename = Obj.getTypename(data);
|
|
50
|
+
const label = toLocalizedString(Obj.getLabel(data) ?? (typename ? [
|
|
51
|
+
"object-name.placeholder",
|
|
52
|
+
{
|
|
53
|
+
ns: typename,
|
|
54
|
+
defaultValue: "New item"
|
|
55
|
+
}
|
|
56
|
+
] : ""), t);
|
|
57
|
+
const iconAnnotation = Obj.getIcon(data);
|
|
58
|
+
const icon = iconAnnotation?.icon ?? "ph--circle-dashed--regular";
|
|
59
|
+
const iconStyles = iconAnnotation?.hue ? getStyles(iconAnnotation.hue) : void 0;
|
|
60
|
+
const handleClick = useCallback(() => {
|
|
61
|
+
void invokePromise(LayoutOperation.Open, {
|
|
62
|
+
subject: [
|
|
63
|
+
Paths.getObjectPathFromObject(data)
|
|
64
|
+
]
|
|
65
|
+
});
|
|
66
|
+
}, [
|
|
67
|
+
invokePromise,
|
|
68
|
+
data
|
|
69
|
+
]);
|
|
70
|
+
return /* @__PURE__ */ React.createElement(Card.Root, {
|
|
71
|
+
role: "button",
|
|
72
|
+
classNames: "cursor-pointer",
|
|
73
|
+
onClick: handleClick
|
|
74
|
+
}, /* @__PURE__ */ React.createElement(Card.Header, null, /* @__PURE__ */ React.createElement(Card.Block, null, /* @__PURE__ */ React.createElement(Icon, {
|
|
75
|
+
icon,
|
|
76
|
+
classNames: iconStyles?.text
|
|
77
|
+
})), /* @__PURE__ */ React.createElement(Card.Title, null, label)));
|
|
78
|
+
};
|
|
79
|
+
RecentObjectTile.displayName = "RecentObjectTile";
|
|
80
|
+
export {
|
|
81
|
+
SpaceHomeRecent as default
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=SpaceHomeRecent-ZR4LIIUD.mjs.map
|