@dxos/plugin-space 0.9.1-main.c7dcc2e112 → 0.9.1-staging.ee54ba693a
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/{CreateObjectDialog-4VMOUKM7.mjs → CreateObjectDialog-5454N3FJ.mjs} +22 -7
- package/dist/lib/neutral/CreateObjectDialog-5454N3FJ.mjs.map +7 -0
- package/dist/lib/neutral/DefaultProperties-5SAWQC6I.mjs +58 -0
- package/dist/lib/neutral/DefaultProperties-5SAWQC6I.mjs.map +7 -0
- package/dist/lib/neutral/{JoinDialog-QZGNRJ4P.mjs → JoinDialog-ATNUCNL2.mjs} +7 -31
- package/dist/lib/neutral/JoinDialog-ATNUCNL2.mjs.map +7 -0
- package/dist/lib/neutral/{MembersContainer-OWCAMBKS.mjs → MembersContainer-C4ZTP6ZW.mjs} +9 -5
- package/dist/lib/neutral/MembersContainer-C4ZTP6ZW.mjs.map +7 -0
- package/dist/lib/neutral/{MenuFooter-QCNFUIAO.mjs → MenuFooter-FWE5LFM4.mjs} +3 -3
- package/dist/lib/neutral/{RelatedArticle-YRCRBIYU.mjs → RelatedArticle-Z777WVDW.mjs} +1 -2
- package/dist/lib/neutral/RelatedArticle-Z777WVDW.mjs.map +7 -0
- package/dist/lib/neutral/{RenamePopover-XBZAKNM7.mjs → RenamePopover-AZT2KPOF.mjs} +13 -5
- package/dist/lib/neutral/RenamePopover-AZT2KPOF.mjs.map +7 -0
- package/dist/lib/neutral/{SchemaContainer-2NK5YB5O.mjs → SchemaContainer-4GJKQBXM.mjs} +8 -4
- package/dist/lib/neutral/SchemaContainer-4GJKQBXM.mjs.map +7 -0
- package/dist/lib/neutral/{SmallPresenceLive-L4H7WJOA.mjs → SmallPresenceLive-FW3AMEY5.mjs} +2 -2
- package/dist/lib/neutral/{SpaceHomeArticle-ZV7EERLS.mjs → SpaceHomeArticle-Y47TLZ72.mjs} +2 -2
- package/dist/lib/neutral/{SpaceHomeArticle-ZV7EERLS.mjs.map → SpaceHomeArticle-Y47TLZ72.mjs.map} +1 -1
- package/dist/lib/neutral/{SpaceHomeRecent-ZR4LIIUD.mjs → SpaceHomeRecent-S57AO3EV.mjs} +11 -5
- package/dist/lib/neutral/{SpaceHomeRecent-ZR4LIIUD.mjs.map → SpaceHomeRecent-S57AO3EV.mjs.map} +3 -3
- package/dist/lib/neutral/SpacePlugin.mjs +1 -1
- package/dist/lib/neutral/{SpacePresence-PDTEDHDE.mjs → SpacePresence-T37WH43Y.mjs} +2 -2
- package/dist/lib/neutral/SpaceSettings-6CZF7GEO.mjs +60 -0
- package/dist/lib/neutral/SpaceSettings-6CZF7GEO.mjs.map +7 -0
- package/dist/lib/neutral/{SpaceSettingsContainer-QAFQ4LWC.mjs → SpaceSettingsContainer-72CJWELM.mjs} +39 -36
- package/dist/lib/neutral/SpaceSettingsContainer-72CJWELM.mjs.map +7 -0
- package/dist/lib/neutral/TypeCollectionArticle-W76ADS2G.mjs +143 -0
- package/dist/lib/neutral/TypeCollectionArticle-W76ADS2G.mjs.map +7 -0
- package/dist/lib/neutral/{add-object-S64XELC3.mjs → add-object-H2N4AOQJ.mjs} +10 -10
- package/dist/lib/neutral/add-object-H2N4AOQJ.mjs.map +7 -0
- package/dist/lib/neutral/{add-relation-GWSE42BU.mjs → add-relation-BGTLART5.mjs} +3 -3
- package/dist/lib/neutral/{add-type-C3KYE6PI.mjs → add-type-JIDLRANR.mjs} +3 -3
- package/dist/lib/neutral/{add-type-C3KYE6PI.mjs.map → add-type-JIDLRANR.mjs.map} +1 -1
- package/dist/lib/neutral/{app-graph-builder-TMAD2ZTH.mjs → app-graph-builder-7H2KOD4B.mjs} +187 -163
- package/dist/lib/neutral/app-graph-builder-7H2KOD4B.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +9 -9
- package/dist/lib/neutral/capabilities/node.mjs +2 -2
- package/dist/lib/neutral/{chunk-PSCIOT7Q.mjs → chunk-52ASDNRA.mjs} +2 -3
- package/dist/lib/neutral/{chunk-PSCIOT7Q.mjs.map → chunk-52ASDNRA.mjs.map} +3 -3
- package/dist/lib/neutral/{chunk-2RPQHHD7.mjs → chunk-C2ULK22J.mjs} +1 -1
- package/dist/lib/neutral/{chunk-DSYEB2UN.mjs → chunk-F5KLUP2P.mjs} +7 -2
- package/dist/lib/neutral/chunk-F5KLUP2P.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-F2VJ6VBV.mjs → chunk-LMUG6PEJ.mjs} +3 -4
- package/dist/lib/neutral/chunk-LMUG6PEJ.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-2LTGSUGQ.mjs → chunk-RAAHDTVF.mjs} +8 -4
- package/dist/lib/neutral/chunk-RAAHDTVF.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-LY6XK5MV.mjs → chunk-SPWAMXNR.mjs} +2 -2
- package/dist/lib/neutral/{chunk-LY6XK5MV.mjs.map → chunk-SPWAMXNR.mjs.map} +3 -3
- package/dist/lib/neutral/chunk-U5WTDOMV.mjs +8 -0
- package/dist/lib/neutral/chunk-V7JALUM3.mjs +9 -0
- package/dist/lib/neutral/chunk-V7JALUM3.mjs.map +7 -0
- package/dist/lib/neutral/{close-YZHFYPUN.mjs → close-5WEQZRNK.mjs} +3 -3
- package/dist/lib/neutral/components/index.mjs +18 -19
- package/dist/lib/neutral/components/index.mjs.map +4 -4
- package/dist/lib/neutral/constants.mjs +16 -0
- package/dist/lib/neutral/constants.mjs.map +7 -0
- package/dist/lib/neutral/containers/index.mjs +18 -14
- package/dist/lib/neutral/containers/index.mjs.map +3 -3
- package/dist/lib/neutral/{create-XKU2W6QC.mjs → create-QZ47FHQU.mjs} +4 -4
- package/dist/lib/neutral/{create-XKU2W6QC.mjs.map → create-QZ47FHQU.mjs.map} +3 -3
- package/dist/lib/neutral/{create-object-22WUOWZQ.mjs → create-object-ZU6FZW5X.mjs} +1 -6
- package/dist/lib/neutral/create-object-ZU6FZW5X.mjs.map +7 -0
- package/dist/lib/neutral/{delete-EFM7CAVO.mjs → delete-SPCU2VFM.mjs} +3 -3
- package/dist/lib/neutral/{delete-field-ONAPFFO5.mjs → delete-field-TAKJVEAD.mjs} +3 -3
- package/dist/lib/neutral/{duplicate-object-OJRPFV5I.mjs → duplicate-object-BUPZOO6S.mjs} +3 -3
- package/dist/lib/neutral/{export-space-M5RNVUQX.mjs → export-space-S5SCAL4M.mjs} +3 -3
- package/dist/lib/neutral/{get-share-link-FUQBJPSQ.mjs → get-share-link-CLM5IQRL.mjs} +3 -3
- package/dist/lib/neutral/{identity-created-QMV4DANW.mjs → identity-created-BEYMLBK4.mjs} +2 -2
- package/dist/lib/neutral/{identity-created-QMV4DANW.mjs.map → identity-created-BEYMLBK4.mjs.map} +3 -3
- package/dist/lib/neutral/{import-space-L3AUIARM.mjs → import-space-LJQK3KT7.mjs} +3 -3
- package/dist/lib/neutral/index.mjs +7 -3
- package/dist/lib/neutral/join-FSODYIOC.mjs +54 -0
- package/dist/lib/neutral/join-FSODYIOC.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/lib/neutral/{migrate-WPUISBC4.mjs → migrate-WHM6LU7L.mjs} +4 -4
- package/dist/lib/neutral/{migrate-WPUISBC4.mjs.map → migrate-WHM6LU7L.mjs.map} +3 -3
- package/dist/lib/neutral/{navigation-handler-IKXZGMII.mjs → navigation-handler-ZF7MV2HL.mjs} +16 -10
- package/dist/lib/neutral/navigation-handler-ZF7MV2HL.mjs.map +7 -0
- package/dist/lib/neutral/{navigation-resolver-VBPGMFCE.mjs → navigation-resolver-KBESOSWU.mjs} +5 -5
- package/dist/lib/neutral/navigation-resolver-KBESOSWU.mjs.map +7 -0
- package/dist/lib/neutral/{open-RRYULTSY.mjs → open-JCXTL3SK.mjs} +3 -3
- package/dist/lib/neutral/{open-create-object-BRUVFZSY.mjs → open-create-object-WAIAU7TA.mjs} +6 -6
- package/dist/lib/neutral/{open-create-space-ARLQWW65.mjs → open-create-space-VU47FWPZ.mjs} +6 -6
- package/dist/lib/neutral/{open-import-space-65H57JXX.mjs → open-import-space-GUHIEWYB.mjs} +6 -6
- package/dist/lib/neutral/{open-members-677P6KD3.mjs → open-members-MLLBHKUU.mjs} +3 -3
- package/dist/lib/neutral/{open-settings-PRBSGO6D.mjs → open-settings-DTPZF4U4.mjs} +3 -3
- package/dist/lib/neutral/operations/index.mjs +3 -3
- package/dist/lib/neutral/plugin.mjs +3 -3
- package/dist/lib/neutral/{react-surface-5EQ6X4CL.mjs → react-surface-LRA7GIFN.mjs} +33 -14
- package/dist/lib/neutral/react-surface-LRA7GIFN.mjs.map +7 -0
- package/dist/lib/neutral/{remove-objects-PWJJI36V.mjs → remove-objects-WEO66EDS.mjs} +3 -3
- package/dist/lib/neutral/{rename-4727PKI4.mjs → rename-Q6UNCBIM.mjs} +6 -6
- package/dist/lib/neutral/{rename-object-FXUAB5FN.mjs → rename-object-2UCEGU7U.mjs} +6 -6
- package/dist/lib/neutral/{restore-field-3ICSIHGA.mjs → restore-field-6CQAFOXY.mjs} +3 -3
- package/dist/lib/neutral/{restore-objects-V2BTEWN3.mjs → restore-objects-3VINLP7C.mjs} +3 -3
- package/dist/lib/neutral/{share-ZOZPAUGI.mjs → share-A4WPILNF.mjs} +3 -3
- package/dist/lib/neutral/{snapshot-ZC5PU55W.mjs → snapshot-HBYMAPA7.mjs} +3 -3
- package/dist/lib/neutral/{spaces-ready-EXPCJD4N.mjs → spaces-ready-GWMSU72V.mjs} +4 -4
- package/dist/lib/neutral/{spaces-ready-EXPCJD4N.mjs.map → spaces-ready-GWMSU72V.mjs.map} +3 -3
- package/dist/lib/neutral/testing.mjs +1 -1
- package/dist/lib/neutral/translations.mjs +14 -6
- package/dist/lib/neutral/translations.mjs.map +2 -2
- package/dist/lib/neutral/types/index.mjs +1 -1
- package/dist/lib/neutral/{wait-for-object-WURK2SLQ.mjs → wait-for-object-U6P2NNWY.mjs} +3 -3
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +1 -1
- package/dist/types/src/capabilities/app-graph-builder/extensions/collections.d.ts +15 -33
- package/dist/types/src/capabilities/app-graph-builder/extensions/collections.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder/extensions/companions.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder/extensions/database.d.ts +15 -33
- package/dist/types/src/capabilities/app-graph-builder/extensions/database.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder/extensions/settings.d.ts +3 -2
- package/dist/types/src/capabilities/app-graph-builder/extensions/settings.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder/extensions/shared.d.ts +1 -4
- 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 +17 -4
- package/dist/types/src/capabilities/app-graph-builder/extensions/spaces.d.ts.map +1 -1
- package/dist/types/src/capabilities/create-object.d.ts +1 -33
- package/dist/types/src/capabilities/create-object.d.ts.map +1 -1
- package/dist/types/src/capabilities/navigation-handler/navigation-handler.d.ts +1 -2
- package/dist/types/src/capabilities/navigation-handler/navigation-handler.d.ts.map +1 -1
- package/dist/types/src/capabilities/navigation-resolver.d.ts +1 -2
- package/dist/types/src/capabilities/navigation-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-root.d.ts +1 -5
- package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/repair.d.ts +1 -2
- package/dist/types/src/capabilities/repair.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings.d.ts +1 -3
- package/dist/types/src/capabilities/settings.d.ts.map +1 -1
- package/dist/types/src/capabilities/spaces-ready.d.ts +1 -1
- package/dist/types/src/capabilities/state.d.ts +1 -13
- package/dist/types/src/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/capabilities/undo-mappings.d.ts +2 -3
- package/dist/types/src/capabilities/undo-mappings.d.ts.map +1 -1
- package/dist/types/src/components/ForeignKeys/ForeignKeys.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +2 -2
- package/dist/types/src/components/index.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 +122 -52
- package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.stories.d.ts.map +1 -1
- package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.stories.d.ts +122 -52
- package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.stories.d.ts.map +1 -1
- package/dist/types/src/containers/DefaultProperties/DefaultProperties.d.ts +15 -0
- package/dist/types/src/containers/DefaultProperties/DefaultProperties.d.ts.map +1 -0
- package/dist/types/src/containers/DefaultProperties/index.d.ts +2 -0
- package/dist/types/src/containers/DefaultProperties/index.d.ts.map +1 -0
- package/dist/types/src/containers/JoinDialog/JoinDialog.d.ts.map +1 -1
- package/dist/types/src/containers/JoinDialog/JoinDialog.stories.d.ts +122 -52
- package/dist/types/src/containers/JoinDialog/JoinDialog.stories.d.ts.map +1 -1
- package/dist/types/src/containers/MembersContainer/MembersContainer.d.ts.map +1 -1
- package/dist/types/src/containers/RelatedArticle/RelatedArticle.d.ts.map +1 -1
- package/dist/types/src/containers/RenamePopover/RenamePopover.d.ts +5 -1
- package/dist/types/src/containers/RenamePopover/RenamePopover.d.ts.map +1 -1
- package/dist/types/src/containers/RenamePopover/index.d.ts +1 -1
- package/dist/types/src/containers/RenamePopover/index.d.ts.map +1 -1
- package/dist/types/src/containers/SchemaContainer/SchemaContainer.d.ts.map +1 -1
- package/dist/types/src/containers/SpaceHomeRecent/SpaceHomeRecent.d.ts.map +1 -1
- package/dist/types/src/containers/SpacePresence/SpacePresence.d.ts.map +1 -1
- package/dist/types/src/containers/SpacePresence/SpacePresence.stories.d.ts +122 -52
- package/dist/types/src/containers/SpacePresence/SpacePresence.stories.d.ts.map +1 -1
- package/dist/types/src/containers/SpacePresence/index.d.ts +1 -1
- package/dist/types/src/containers/SpacePresence/index.d.ts.map +1 -1
- package/dist/types/src/containers/SpaceSettings/SpaceSettings.d.ts +11 -0
- package/dist/types/src/containers/SpaceSettings/SpaceSettings.d.ts.map +1 -0
- package/dist/types/src/{components → containers}/SpaceSettings/SpaceSettings.stories.d.ts +123 -53
- package/dist/types/src/{components → containers}/SpaceSettings/SpaceSettings.stories.d.ts.map +1 -1
- package/dist/types/src/{components → containers}/SpaceSettings/index.d.ts.map +1 -1
- package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.stories.d.ts +122 -52
- package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.stories.d.ts.map +1 -1
- package/dist/types/src/containers/SyncStatus/SyncStatus.stories.d.ts +122 -52
- package/dist/types/src/containers/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
- package/dist/types/src/containers/TypeCollectionArticle/TypeCollectionArticle.d.ts +16 -0
- package/dist/types/src/containers/TypeCollectionArticle/TypeCollectionArticle.d.ts.map +1 -0
- package/dist/types/src/containers/TypeCollectionArticle/TypeCollectionArticle.stories.d.ts +21 -0
- package/dist/types/src/containers/TypeCollectionArticle/TypeCollectionArticle.stories.d.ts.map +1 -0
- package/dist/types/src/containers/TypeCollectionArticle/index.d.ts +2 -0
- package/dist/types/src/containers/TypeCollectionArticle/index.d.ts.map +1 -0
- package/dist/types/src/containers/index.d.ts +4 -1
- package/dist/types/src/containers/index.d.ts.map +1 -1
- package/dist/types/src/errors.d.ts +33 -0
- package/dist/types/src/errors.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +4 -0
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/operations/definitions.d.ts +9 -37
- package/dist/types/src/operations/definitions.d.ts.map +1 -1
- package/dist/types/src/operations/join.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +122 -52
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Settings.d.ts +3 -1
- package/dist/types/src/types/Settings.d.ts.map +1 -1
- package/dist/types/src/types/capabilities.d.ts +1 -1
- package/dist/types/src/types/capabilities.d.ts.map +1 -1
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +70 -59
- package/src/SpacePlugin.ts +3 -3
- package/src/capabilities/app-graph-builder/extensions/collections.ts +45 -52
- package/src/capabilities/app-graph-builder/extensions/companions.ts +3 -2
- package/src/capabilities/app-graph-builder/extensions/database.ts +108 -84
- package/src/capabilities/app-graph-builder/extensions/settings.ts +8 -5
- package/src/capabilities/app-graph-builder/extensions/shared.test.ts +13 -9
- package/src/capabilities/app-graph-builder/extensions/shared.ts +2 -5
- package/src/capabilities/app-graph-builder/extensions/spaces.ts +32 -6
- package/src/capabilities/create-object.ts +0 -5
- package/src/capabilities/identity-created.ts +1 -1
- package/src/capabilities/navigation-handler/navigation-handler.ts +14 -4
- package/src/capabilities/navigation-resolver.ts +8 -8
- package/src/capabilities/react-surface.tsx +39 -13
- package/src/capabilities/spaces-ready.ts +1 -1
- package/src/components/ForeignKeys/ForeignKeys.tsx +20 -19
- package/src/components/index.ts +3 -3
- package/src/containers/CreateObjectDialog/CreateObjectDialog.stories.tsx +1 -1
- package/src/containers/CreateObjectDialog/CreateObjectDialog.tsx +38 -3
- package/src/containers/DefaultProperties/DefaultProperties.tsx +69 -0
- package/src/containers/DefaultProperties/index.ts +5 -0
- package/src/containers/JoinDialog/JoinDialog.tsx +8 -21
- package/src/containers/MembersContainer/MembersContainer.tsx +37 -33
- package/src/containers/RelatedArticle/RelatedArticle.tsx +1 -2
- package/src/containers/RenamePopover/RenamePopover.tsx +18 -5
- package/src/containers/RenamePopover/index.ts +1 -1
- package/src/containers/SchemaContainer/SchemaContainer.tsx +21 -17
- package/src/containers/SpaceHomeArticle/SpaceHomeArticle.tsx +1 -1
- package/src/containers/SpaceHomeRecent/SpaceHomeRecent.tsx +12 -10
- package/src/containers/SpacePresence/SpacePresence.tsx +22 -20
- package/src/containers/SpacePresence/index.ts +1 -1
- package/src/{components → containers}/SpaceSettings/SpaceSettings.stories.tsx +1 -1
- package/src/containers/SpaceSettings/SpaceSettings.tsx +75 -0
- package/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.tsx +115 -106
- package/src/containers/TypeCollectionArticle/TypeCollectionArticle.stories.tsx +116 -0
- package/src/containers/TypeCollectionArticle/TypeCollectionArticle.tsx +162 -0
- package/src/containers/TypeCollectionArticle/index.ts +5 -0
- package/src/containers/index.ts +4 -1
- package/src/errors.ts +11 -0
- package/src/index.ts +1 -0
- package/src/operations/add-object.ts +6 -5
- package/src/operations/add-type.ts +1 -1
- package/src/operations/create.ts +2 -2
- package/src/operations/definitions.ts +1 -2
- package/src/operations/join.ts +19 -0
- package/src/operations/migrate.ts +1 -1
- package/src/translations.ts +15 -6
- package/src/types/Settings.ts +10 -1
- package/src/types/capabilities.ts +1 -1
- package/src/util.ts +0 -1
- package/dist/lib/neutral/CreateObjectDialog-4VMOUKM7.mjs.map +0 -7
- package/dist/lib/neutral/JoinDialog-QZGNRJ4P.mjs.map +0 -7
- package/dist/lib/neutral/MembersContainer-OWCAMBKS.mjs.map +0 -7
- package/dist/lib/neutral/ObjectProperties-BF6KGFFC.mjs +0 -33
- package/dist/lib/neutral/ObjectProperties-BF6KGFFC.mjs.map +0 -7
- package/dist/lib/neutral/RelatedArticle-YRCRBIYU.mjs.map +0 -7
- package/dist/lib/neutral/RenamePopover-XBZAKNM7.mjs.map +0 -7
- package/dist/lib/neutral/SchemaContainer-2NK5YB5O.mjs.map +0 -7
- package/dist/lib/neutral/SpaceSettings-IVTCSLNT.mjs +0 -37
- package/dist/lib/neutral/SpaceSettings-IVTCSLNT.mjs.map +0 -7
- package/dist/lib/neutral/SpaceSettingsContainer-QAFQ4LWC.mjs.map +0 -7
- package/dist/lib/neutral/add-object-S64XELC3.mjs.map +0 -7
- package/dist/lib/neutral/app-graph-builder-TMAD2ZTH.mjs.map +0 -7
- package/dist/lib/neutral/chunk-2LTGSUGQ.mjs.map +0 -7
- package/dist/lib/neutral/chunk-DSYEB2UN.mjs.map +0 -7
- package/dist/lib/neutral/chunk-F2VJ6VBV.mjs.map +0 -7
- package/dist/lib/neutral/chunk-I5JXVBXX.mjs +0 -8
- package/dist/lib/neutral/create-object-22WUOWZQ.mjs.map +0 -7
- package/dist/lib/neutral/join-VY3QYBU7.mjs +0 -28
- package/dist/lib/neutral/join-VY3QYBU7.mjs.map +0 -7
- package/dist/lib/neutral/navigation-handler-IKXZGMII.mjs.map +0 -7
- package/dist/lib/neutral/navigation-resolver-VBPGMFCE.mjs.map +0 -7
- package/dist/lib/neutral/react-surface-5EQ6X4CL.mjs.map +0 -7
- package/dist/types/src/components/SpaceSettings/SpaceSettings.d.ts +0 -8
- package/dist/types/src/components/SpaceSettings/SpaceSettings.d.ts.map +0 -1
- package/dist/types/src/containers/ObjectProperties/ObjectProperties.d.ts +0 -10
- package/dist/types/src/containers/ObjectProperties/ObjectProperties.d.ts.map +0 -1
- package/dist/types/src/containers/ObjectProperties/index.d.ts +0 -2
- package/dist/types/src/containers/ObjectProperties/index.d.ts.map +0 -1
- package/src/components/SpaceSettings/SpaceSettings.tsx +0 -56
- package/src/containers/ObjectProperties/ObjectProperties.tsx +0 -32
- package/src/containers/ObjectProperties/index.ts +0 -5
- /package/dist/lib/neutral/{MenuFooter-QCNFUIAO.mjs.map → MenuFooter-FWE5LFM4.mjs.map} +0 -0
- /package/dist/lib/neutral/{SmallPresenceLive-L4H7WJOA.mjs.map → SmallPresenceLive-FW3AMEY5.mjs.map} +0 -0
- /package/dist/lib/neutral/{SpacePresence-PDTEDHDE.mjs.map → SpacePresence-T37WH43Y.mjs.map} +0 -0
- /package/dist/lib/neutral/{add-relation-GWSE42BU.mjs.map → add-relation-BGTLART5.mjs.map} +0 -0
- /package/dist/lib/neutral/{chunk-2RPQHHD7.mjs.map → chunk-C2ULK22J.mjs.map} +0 -0
- /package/dist/lib/neutral/{chunk-I5JXVBXX.mjs.map → chunk-U5WTDOMV.mjs.map} +0 -0
- /package/dist/lib/neutral/{close-YZHFYPUN.mjs.map → close-5WEQZRNK.mjs.map} +0 -0
- /package/dist/lib/neutral/{delete-EFM7CAVO.mjs.map → delete-SPCU2VFM.mjs.map} +0 -0
- /package/dist/lib/neutral/{delete-field-ONAPFFO5.mjs.map → delete-field-TAKJVEAD.mjs.map} +0 -0
- /package/dist/lib/neutral/{duplicate-object-OJRPFV5I.mjs.map → duplicate-object-BUPZOO6S.mjs.map} +0 -0
- /package/dist/lib/neutral/{export-space-M5RNVUQX.mjs.map → export-space-S5SCAL4M.mjs.map} +0 -0
- /package/dist/lib/neutral/{get-share-link-FUQBJPSQ.mjs.map → get-share-link-CLM5IQRL.mjs.map} +0 -0
- /package/dist/lib/neutral/{import-space-L3AUIARM.mjs.map → import-space-LJQK3KT7.mjs.map} +0 -0
- /package/dist/lib/neutral/{open-RRYULTSY.mjs.map → open-JCXTL3SK.mjs.map} +0 -0
- /package/dist/lib/neutral/{open-create-object-BRUVFZSY.mjs.map → open-create-object-WAIAU7TA.mjs.map} +0 -0
- /package/dist/lib/neutral/{open-create-space-ARLQWW65.mjs.map → open-create-space-VU47FWPZ.mjs.map} +0 -0
- /package/dist/lib/neutral/{open-import-space-65H57JXX.mjs.map → open-import-space-GUHIEWYB.mjs.map} +0 -0
- /package/dist/lib/neutral/{open-members-677P6KD3.mjs.map → open-members-MLLBHKUU.mjs.map} +0 -0
- /package/dist/lib/neutral/{open-settings-PRBSGO6D.mjs.map → open-settings-DTPZF4U4.mjs.map} +0 -0
- /package/dist/lib/neutral/{remove-objects-PWJJI36V.mjs.map → remove-objects-WEO66EDS.mjs.map} +0 -0
- /package/dist/lib/neutral/{rename-4727PKI4.mjs.map → rename-Q6UNCBIM.mjs.map} +0 -0
- /package/dist/lib/neutral/{rename-object-FXUAB5FN.mjs.map → rename-object-2UCEGU7U.mjs.map} +0 -0
- /package/dist/lib/neutral/{restore-field-3ICSIHGA.mjs.map → restore-field-6CQAFOXY.mjs.map} +0 -0
- /package/dist/lib/neutral/{restore-objects-V2BTEWN3.mjs.map → restore-objects-3VINLP7C.mjs.map} +0 -0
- /package/dist/lib/neutral/{share-ZOZPAUGI.mjs.map → share-A4WPILNF.mjs.map} +0 -0
- /package/dist/lib/neutral/{snapshot-ZC5PU55W.mjs.map → snapshot-HBYMAPA7.mjs.map} +0 -0
- /package/dist/lib/neutral/{wait-for-object-WURK2SLQ.mjs.map → wait-for-object-U6P2NNWY.mjs.map} +0 -0
- /package/dist/types/src/{components → containers}/SpaceSettings/index.d.ts +0 -0
- /package/src/{components → containers}/SpaceSettings/index.ts +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/app-graph-builder/app-graph-builder.ts", "../../../src/capabilities/app-graph-builder/extensions/spaces.ts", "../../../src/capabilities/app-graph-builder/extensions/shared.ts", "../../../src/capabilities/app-graph-builder/extensions/database.ts", "../../../src/capabilities/app-graph-builder/extensions/collections.ts", "../../../src/capabilities/app-graph-builder/extensions/companions.ts", "../../../src/capabilities/app-graph-builder/extensions/settings.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\n\nimport { type SpacePluginOptions } from '#types';\n\nimport {\n createCollectionExtensions,\n createCompanionExtensions,\n createDatabaseExtensions,\n createSettingsExtensions,\n createSpaceExtensions,\n} from './extensions';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* ({ shareableLinkOrigin = window.location.origin }: SpacePluginOptions = {}) {\n const extensions = yield* Effect.all([\n createSpaceExtensions(),\n createSettingsExtensions(),\n createDatabaseExtensions(),\n createCollectionExtensions({ shareableLinkOrigin }),\n createCompanionExtensions(),\n ]);\n\n return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions.flat());\n }),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities, AppNode, AppNodeMatcher, AppSpace, Paths } from '@dxos/app-toolkit';\nimport { type Space, SpaceState } from '@dxos/client/echo';\nimport { Operation } from '@dxos/compute';\nimport { Filter, Obj } from '@dxos/echo';\nimport { Migrations } from '@dxos/migrations';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { CreateAtom, Graph, GraphBuilder, Node, NodeMatcher } from '@dxos/plugin-graph';\nimport { SpaceArchive } from '@dxos/protocols/proto/dxos/client/services';\nimport { Expando } from '@dxos/schema';\nimport { Position } from '@dxos/util';\n\nimport { meta } from '#meta';\nimport { SpaceOperation } from '#operations';\nimport { SPACE_HOME_NODE_TYPE, SPACE_TYPE, SpaceCapabilities } from '#types';\n\nimport { SHARED, getSpaceDisplayName } from '../../../util';\nimport {\n CAN_DROP_SPACE,\n CREATE_OBJECT_IN_SPACE_LABEL,\n MIGRATE_SPACE_LABEL,\n RENAME_SPACE_LABEL,\n checkPendingMigration,\n spaceActionsCache,\n spaceRearrangeCache,\n} from './shared';\n\n//\n// Extension Factory\n//\n\n// The label tuple must be a module-level singleton: connectors re-evaluate whenever the matched\n// node emits, and a tuple rebuilt inline each time creates a new array reference, causing the graph\n// to re-emit the node and remount the Home article on every evaluation.\nconst SPACE_HOME_NODE_LABEL = ['space-home-node.label', { ns: meta.profile.key }] as const;\n\n/** Creates space-related extensions: primary actions, space nodes, space actions, and the Home node. */\nexport const createSpaceExtensions = Effect.fnUntraced(function* () {\n const capabilities = yield* Capability.Service;\n\n return yield* Effect.all([\n GraphBuilder.createExtension({\n id: 'spaceHome',\n position: Position.first,\n match: AppNodeMatcher.whenSpace,\n connector: (space) =>\n Effect.succeed([\n {\n id: Paths.SPACE_HOME_SEGMENT,\n type: SPACE_HOME_NODE_TYPE,\n data: SPACE_HOME_NODE_TYPE,\n properties: {\n label: SPACE_HOME_NODE_LABEL,\n icon: 'ph--house--regular',\n iconHue: 'emerald',\n position: Position.first,\n draggable: false,\n droppable: false,\n space,\n },\n } satisfies Node.NodeArg<typeof SPACE_HOME_NODE_TYPE>,\n ]),\n }),\n\n GraphBuilder.createExtension({\n id: 'primaryActions',\n position: Position.first,\n match: NodeMatcher.whenRoot,\n actions: () =>\n Effect.succeed([\n Node.makeAction({\n id: SpaceOperation.OpenCreateSpace.meta.key,\n data: () => Operation.invoke(SpaceOperation.OpenCreateSpace),\n properties: {\n label: ['create-space.label', { ns: meta.profile.key }],\n icon: 'ph--plus--regular',\n testId: 'spacePlugin.createSpace',\n disposition: 'menu',\n },\n }),\n Node.makeAction({\n id: SpaceOperation.Join.meta.key,\n data: () => Operation.invoke(SpaceOperation.Join, {}),\n properties: {\n label: ['join-space.label', { ns: meta.profile.key }],\n icon: 'ph--sign-in--regular',\n testId: 'spacePlugin.joinSpace',\n disposition: 'menu',\n },\n }),\n Node.makeAction({\n id: SpaceOperation.OpenImportSpace.meta.key,\n data: () => Operation.invoke(SpaceOperation.OpenImportSpace),\n properties: {\n label: ['import-space.label', { ns: meta.profile.key }],\n icon: 'ph--upload--regular',\n testId: 'spacePlugin.importSpace',\n },\n }),\n Node.makeAction({\n id: `${SpaceOperation.ExportSpace.meta.key}.binary`,\n data: Effect.fnUntraced(function* () {\n const client = yield* Capability.get(ClientCapabilities.Client);\n const space = AppSpace.getActiveSpace(client, capabilities) ?? AppSpace.getPersonalSpace(client);\n if (space) {\n yield* Operation.invoke(SpaceOperation.ExportSpace, { space, format: SpaceArchive.Format.BINARY });\n }\n }),\n properties: {\n label: ['export-space-binary.label', { ns: meta.profile.key }],\n icon: 'ph--download--regular',\n testId: 'spacePlugin.exportSpaceBinary',\n },\n }),\n Node.makeAction({\n id: `${SpaceOperation.ExportSpace.meta.key}.json`,\n data: Effect.fnUntraced(function* () {\n const client = yield* Capability.get(ClientCapabilities.Client);\n const space = AppSpace.getActiveSpace(client, capabilities) ?? AppSpace.getPersonalSpace(client);\n if (space) {\n yield* Operation.invoke(SpaceOperation.ExportSpace, { space, format: SpaceArchive.Format.JSON });\n }\n }),\n properties: {\n label: ['export-space-json.label', { ns: meta.profile.key }],\n icon: 'ph--download--regular',\n testId: 'spacePlugin.exportSpaceJson',\n },\n }),\n Node.makeAction({\n id: SpaceOperation.OpenMembers.meta.key,\n data: Effect.fnUntraced(function* () {\n const client = yield* Capability.get(ClientCapabilities.Client);\n const space = AppSpace.getActiveSpace(client, capabilities) ?? AppSpace.getPersonalSpace(client);\n if (space) {\n yield* Operation.invoke(SpaceOperation.OpenMembers, { space });\n }\n }),\n properties: {\n label: ['share-space.label', { ns: meta.profile.key }],\n icon: 'ph--users--regular',\n testId: 'spacePlugin.shareSpace',\n keyBinding: {\n macos: 'meta+.',\n windows: 'alt+.',\n },\n },\n }),\n Node.makeAction({\n id: SpaceOperation.OpenSettings.meta.key,\n data: Effect.fnUntraced(function* () {\n const client = yield* Capability.get(ClientCapabilities.Client);\n const space = AppSpace.getActiveSpace(client, capabilities) ?? AppSpace.getPersonalSpace(client);\n if (space) {\n yield* Operation.invoke(SpaceOperation.OpenSettings, { space });\n }\n }),\n properties: {\n label: ['open-current-space-settings.label', { ns: meta.profile.key }],\n icon: 'ph--faders--regular',\n keyBinding: {\n macos: 'meta+shift+,',\n windows: 'ctrl+shift+,',\n },\n },\n }),\n ]),\n }),\n\n GraphBuilder.createExtension({\n id: 'spaces',\n match: NodeMatcher.whenRoot,\n connector: (_node, get) => {\n // This reactive connector can recompute once during the teardown window (e.g. when stories\n // swap plugin managers) after the Client capability has been removed; tolerate its absence\n // via the safe `getAll` lookup rather than the throwing `get`.\n const [client] = capabilities.getAll(ClientCapabilities.Client);\n if (!client) {\n return Effect.succeed([]);\n }\n const stateAtom = capabilities.get(SpaceCapabilities.State);\n const ephemeralAtom = capabilities.get(SpaceCapabilities.EphemeralState);\n const spacesAtom = CreateAtom.fromObservable(client.spaces);\n\n const spaces = get(spacesAtom);\n const personalSpace = AppSpace.getPersonalSpace(client);\n\n if (!spaces || !personalSpace) {\n return Effect.succeed([]);\n }\n\n const settingsAtom = capabilities.get(SpaceCapabilities.Settings);\n const settings = get(settingsAtom);\n const state = get(stateAtom);\n const ephemeralState = get(ephemeralAtom);\n\n try {\n const [spacesOrder] = get(personalSpace.db.query(Filter.type(Expando.Expando, { key: SHARED })).atom);\n const { graph } = capabilities.get(AppCapabilities.AppGraph);\n\n const spacesOrderSnapshot = spacesOrder ? get(Obj.atom(spacesOrder)) : undefined;\n const order: string[] = (spacesOrderSnapshot as any)?.order ?? [];\n const orderMap = new Map(order.map((id, index) => [id, index]));\n\n const spaceStates = spaces.map((space) => get(CreateAtom.fromObservable(space.state)));\n\n spaces.forEach((space) => {\n if (space.state.get() === SpaceState.SPACE_READY) {\n get(Obj.atom(space.properties));\n }\n });\n\n return Effect.succeed(\n [\n ...spaces\n .filter((space) => orderMap.has(space.id))\n .sort((sortA, sortB) => orderMap.get(sortA.id)! - orderMap.get(sortB.id)!),\n ...spaces.filter((space) => !orderMap.has(space.id)),\n ]\n .filter((space, idx) => spaceStates[idx] === SpaceState.SPACE_READY)\n .filter(\n (space) =>\n space.tags.length === 0 || AppSpace.isPersonalSpace(space) || AppSpace.isExemplarSpace(space),\n )\n .map((space) =>\n constructSpaceNode({\n space,\n navigable: ephemeralState.navigableCollections,\n personal: AppSpace.isPersonalSpace(space),\n namesCache: state.spaceNames,\n graph,\n spacesOrder,\n }),\n ),\n );\n } catch {\n return Effect.succeed([]);\n }\n },\n // TODO(graph-path-ids): Resolver temporarily disabled; redesign needed for path-based IDs.\n // resolver: (id, get) => { ... },\n }),\n\n // Communications section group — no single plugin owns this category; it lives here so the\n // group is always present when the space plugin is active. A more specific plugin (e.g. a\n // future plugin-communications) should own this once one exists.\n // TODO(wittjosiah): Move to a dedicated communications plugin when one exists.\n GraphBuilder.createExtension({\n id: Paths.GroupSegments.communications,\n match: AppNodeMatcher.whenSpace,\n connector: (space) =>\n Effect.succeed([\n AppNode.makeGroup({\n id: Paths.GroupSegments.communications,\n type: Paths.GroupTypes.communications,\n label: ['nav-tree-group-comm.label', { ns: meta.profile.key }],\n space,\n position: 100,\n }),\n ]),\n }),\n\n GraphBuilder.createExtension({\n id: 'actions',\n match: AppNodeMatcher.whenSpace,\n actions: (space, get) => {\n const [client] = get(capabilities.atom(ClientCapabilities.Client));\n const ephemeralAtom = capabilities.get(SpaceCapabilities.EphemeralState);\n const ephemeralState = get(ephemeralAtom);\n\n if (!client) {\n return Effect.succeed([]);\n }\n\n // Recompute actions when a migration completes (state transition or versionProperty stamp).\n get(CreateAtom.fromObservable(space.state));\n if (space.state.get() === SpaceState.SPACE_READY) {\n get(Obj.atom(space.properties));\n }\n\n return Effect.succeed(\n constructSpaceActions({\n space,\n migrating: ephemeralState.sdkMigrationRunning[space.id],\n }),\n );\n },\n }),\n ]);\n});\n\n//\n// Helpers\n//\n\n/** Builds an app-graph node for a space, including settings children and optional rearrange handler. */\nconst constructSpaceNode = ({\n space,\n navigable = false,\n personal,\n namesCache,\n graph,\n spacesOrder,\n}: {\n space: Space;\n navigable?: boolean;\n personal?: boolean;\n namesCache?: Record<string, string>;\n graph?: Graph.ExpandableGraph;\n spacesOrder?: Obj.Any;\n}) => {\n const hasPendingMigration = checkPendingMigration(space);\n\n let onRearrange: ((nextOrder: Space[]) => void) | undefined;\n if (graph && spacesOrder) {\n onRearrange = spaceRearrangeCache.get(space.id);\n if (!onRearrange) {\n onRearrange = (nextOrder: Space[]) => {\n Graph.sortEdges(\n graph,\n Node.RootId,\n 'outbound',\n nextOrder.map(({ id }) => id),\n );\n\n Obj.update(spacesOrder, (spacesOrder: any) => {\n spacesOrder.order = nextOrder.map(({ id }) => id);\n });\n };\n spaceRearrangeCache.set(space.id, onRearrange);\n }\n }\n\n return Node.make({\n id: space.id,\n type: SPACE_TYPE,\n cacheable: AppNode.CACHEABLE_PROPS,\n data: space,\n properties: {\n label: getSpaceDisplayName(space, { personal, namesCache }),\n description: space.state.get() === SpaceState.SPACE_READY && space.properties.description,\n hue: space.state.get() === SpaceState.SPACE_READY && space.properties.hue,\n icon:\n space.state.get() === SpaceState.SPACE_READY && space.properties.icon\n ? `ph--${space.properties.icon}--regular`\n : undefined,\n iconHue: space.state.get() === SpaceState.SPACE_READY && space.properties.iconHue,\n disabled: !navigable || space.state.get() !== SpaceState.SPACE_READY || hasPendingMigration,\n disposition: 'workspace',\n testId: 'spacePlugin.space',\n onRearrange,\n canDrop: CAN_DROP_SPACE,\n },\n });\n};\n\n/** Builds the action list for a space node (migrate, create object, rename). */\nconst constructSpaceActions = ({ space, migrating }: { space: Space; migrating?: boolean }) => {\n const state = space.state.get();\n const hasPendingMigration = checkPendingMigration(space);\n const isMigrating = migrating || Migrations.running(space);\n\n const cached = spaceActionsCache.get(space.id);\n if (\n cached &&\n cached.state === state &&\n cached.hasPendingMigration === hasPendingMigration &&\n cached.migrating === isMigrating\n ) {\n return cached.actions;\n }\n\n const actions: Node.NodeArg<Node.ActionData<Operation.Service>>[] = [];\n\n if (hasPendingMigration) {\n actions.push(\n Node.make({\n id: SpaceOperation.Migrate.meta.key,\n type: Node.ActionGroupType,\n data: () => Operation.invoke(SpaceOperation.Migrate, { space }),\n properties: {\n label: MIGRATE_SPACE_LABEL,\n icon: 'ph--database--regular',\n disposition: 'list-item-primary',\n disabled: isMigrating,\n },\n }),\n );\n }\n\n if (state === SpaceState.SPACE_READY && !hasPendingMigration) {\n actions.push(\n Node.makeAction({\n id: SpaceOperation.OpenCreateObject.meta.key,\n data: () => Operation.invoke(SpaceOperation.OpenCreateObject, { target: space.db }),\n properties: {\n label: CREATE_OBJECT_IN_SPACE_LABEL,\n icon: 'ph--plus--regular',\n disposition: 'list-item-primary',\n testId: 'spacePlugin.createObject',\n },\n }),\n Node.makeAction({\n id: SpaceOperation.Rename.meta.key,\n data: (params?: Node.InvokeProps) =>\n Operation.invoke(SpaceOperation.Rename, { space, caller: `${params?.caller}:${params?.parent?.id}` }),\n properties: {\n label: RENAME_SPACE_LABEL,\n icon: 'ph--pencil-simple-line--regular',\n keyBinding: {\n macos: 'shift+F6',\n windows: 'shift+F6',\n },\n },\n }),\n );\n }\n\n spaceActionsCache.set(space.id, { state, hasPendingMigration, migrating: isMigrating, actions });\n return actions;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Atom } from '@effect-atom/atom-react';\nimport * as Option from 'effect/Option';\n\nimport { type Space, SpaceState, isSpace } from '@dxos/client/echo';\nimport { type Operation } from '@dxos/compute';\nimport { Annotation, Filter, Obj, Type } from '@dxos/echo';\nimport { Migrations, MigrationVersionAnnotation } from '@dxos/migrations';\nimport { type Node } from '@dxos/plugin-graph';\nimport { type TreeData } from '@dxos/react-ui-list';\nimport type { EchoViewRefPath } from '@dxos/schema';\nimport { ViewAnnotation, getTypeURIFromQuery } from '@dxos/schema';\nimport { type Label } from '@dxos/ui-types/translations';\n\nimport { meta } from '#meta';\n\n//\n// Virtual Node Types\n//\n\nexport const DATABASE_SECTION_TYPE = `${meta.profile.key}.database`;\nexport const COLLECTIONS_SECTION_TYPE = `${meta.profile.key}.collections`;\nexport const STATIC_SCHEMA_TYPE = `${meta.profile.key}.static-schema`;\n\n//\n// Constants\n//\n\n/** Shared translation namespace descriptor. */\nexport const META_NS: { ns: string } = { ns: meta.profile.key };\n\n//\n// Stable Callbacks\n//\n\nexport const CAN_DROP_SPACE = (source: TreeData) => Obj.isObject(source.item.data) || isSpace(source.item.data);\n\n//\n// Caches (space-specific, not moved to app-toolkit)\n//\n\nexport const spaceActionsCache = new Map<\n string,\n {\n state: SpaceState;\n hasPendingMigration: boolean;\n migrating: boolean;\n actions: Node.NodeArg<Node.ActionData<Operation.Service>>[];\n }\n>();\nexport const spaceRearrangeCache = new Map<string, (nextOrder: Space[]) => void>();\n\n//\n// Static Labels\n//\n\nexport const ADD_VIEW_TO_SCHEMA_LABEL: Label = ['add-view-to-schema.label', META_NS];\nexport const COPY_LINK_LABEL: Label = ['copy-link.label', META_NS];\nexport const CREATE_OBJECT_IN_COLLECTION_LABEL: Label = ['create-object-in-collection.label', META_NS];\nexport const CREATE_OBJECT_IN_SPACE_LABEL: Label = ['create-object-in-space.label', META_NS];\nexport const EXPOSE_OBJECT_LABEL: Label = ['expose-object.label', META_NS];\nexport const MIGRATE_SPACE_LABEL: Label = ['migrate-space.label', META_NS];\nexport const NEW_TYPE_LABEL: Label = ['new-type.label', META_NS];\nexport const RENAME_SPACE_LABEL: Label = ['rename-space.label', META_NS];\nexport const SETTINGS_PANEL_LABEL: Label = ['settings-panel.label', META_NS];\nexport const SNAPSHOT_BY_SCHEMA_LABEL: Label = ['snapshot-by-schema.label', META_NS];\n\n//\n// Helpers\n//\n\nexport const checkPendingMigration = (space: Space) => {\n return (\n space.state.get() === SpaceState.SPACE_REQUIRES_MIGRATION ||\n (space.state.get() === SpaceState.SPACE_READY &&\n !!Migrations.targetVersion &&\n Annotation.get(space.properties, MigrationVersionAnnotation).pipe(Option.getOrUndefined) !==\n Migrations.targetVersion)\n );\n};\n\nexport const downloadBlob = async (blob: Blob, filename: string) => {\n const url = URL.createObjectURL(blob);\n const anchor = document.createElement('a');\n anchor.href = url;\n anchor.download = filename;\n\n document.body.appendChild(anchor);\n anchor.click();\n\n document.body.removeChild(anchor);\n URL.revokeObjectURL(url);\n};\n\n//\n// View Index\n//\n\n/**\n * Index of view objects grouped by their target type URI.\n */\nexport type ViewIndex = {\n /** Type URIs that have at least one straightforward view targeting them. */\n typeUrisWithViews: Set<string>;\n /** View objects targeting a specific type URI. */\n getViewsForTypeUri: (typeUri: string) => Obj.Any[];\n /** True when the schema has `ViewAnnotation` and that path resolves non-null on `object`; false otherwise (no annotation, or null/undefined path — e.g. Kanban with unset `view`). */\n isView: (object: Obj.Any) => boolean;\n};\n\n/**\n * Builds an index of view objects by scanning view-annotated schemas and resolving the target\n * type URI from each view's query AST. Only straightforward views whose query resolves to a\n * type URI via getTypeURIFromQuery are included.\n */\n// TODO(wittjosiah): Make reactive to schema registry changes (currently only object/view mutations trigger updates).\nexport const buildViewIndex = (get: Atom.Context, space: Space, schemas: Type.AnyEntity[]): ViewIndex => {\n const viewSchemas = schemas.filter((schema) => ViewAnnotation.has(schema));\n\n const viewsByTypeUri = new Map<string, Obj.Any[]>();\n // Object IDs whose `ViewAnnotation` path resolves to a non-null value.\n // Used by `isView` to distinguish view instances from regular instances of\n // the same schema (e.g. items-variant Kanban vs view-variant Kanban).\n const viewObjectIds = new Set<string>();\n\n if (viewSchemas.length > 0) {\n const filter = Filter.or(...viewSchemas.map((schema) => Filter.type(schema)));\n const viewObjects = get(space.db.query(filter).atom);\n\n for (const viewObject of viewObjects) {\n if (!Obj.isObject(viewObject)) {\n continue;\n }\n const holderType = Obj.getType(viewObject);\n const path = holderType\n ? ViewAnnotation.get(Type.getSchema(holderType)).pipe(Option.getOrElse(() => [] as EchoViewRefPath))\n : ([] as EchoViewRefPath);\n\n if (path.length === 0) {\n continue;\n }\n\n const viewSnapshot = get(Obj.atom(viewObject));\n let holder: unknown = viewSnapshot;\n for (const segment of path) {\n holder =\n holder == null || typeof holder !== 'object' ? undefined : (holder as Record<string, unknown>)[segment];\n }\n // Path resolved to a non-null value → this instance is a \"view\". Path\n // resolved to null/undefined → it's a regular object that happens to\n // be of a view-annotated schema.\n if (holder != null) {\n viewObjectIds.add(viewObject.id);\n }\n\n const viewTarget = holder != null ? get(Obj.atom(holder as Obj.Any)) : undefined;\n const typeUri = getTypeURIFromQuery(viewTarget?.query?.ast);\n if (typeUri) {\n const existing = viewsByTypeUri.get(typeUri) ?? [];\n existing.push(viewObject);\n viewsByTypeUri.set(typeUri, existing);\n }\n }\n }\n\n return {\n typeUrisWithViews: new Set(viewsByTypeUri.keys()),\n getViewsForTypeUri: (typeUri) => viewsByTypeUri.get(typeUri) ?? [],\n isView: (object) => viewObjectIds.has(object.id),\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Atom } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport * as Match from 'effect/Match';\nimport * as Option from 'effect/Option';\n\nimport { Capability, type CapabilityManager } from '@dxos/app-framework';\nimport { AppCapabilities, AppNode, AppNodeMatcher, LayoutOperation, Paths } from '@dxos/app-toolkit';\nimport { type Space, isSpace } from '@dxos/client/echo';\nimport { Operation } from '@dxos/compute';\nimport { Annotation, Collection, Entity, Filter, Key, Obj, Query, Scope, Type } from '@dxos/echo';\nimport { HiddenAnnotation } from '@dxos/echo/Annotation';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { GraphBuilder, Node } from '@dxos/plugin-graph';\nimport { ViewAnnotation } from '@dxos/schema';\nimport { isLabel, toLocalizedString } from '@dxos/ui-types/translations';\nimport { createFilename, isNonNullable } from '@dxos/util';\n\nimport { meta } from '#meta';\nimport { SpaceOperation } from '#operations';\nimport { SpaceCapabilities } from '#types';\n\nimport { makeCreateObjectEntryForDatabaseType } from '../../../util';\nimport {\n ADD_VIEW_TO_SCHEMA_LABEL,\n DATABASE_SECTION_TYPE,\n SNAPSHOT_BY_SCHEMA_LABEL,\n STATIC_SCHEMA_TYPE,\n buildViewIndex,\n downloadBlob,\n} from './shared';\n\n//\n// Extension Factory\n//\n\n/** Creates database extensions: types section, schema nodes, schema children, and schema actions. */\nexport const createDatabaseExtensions = Effect.fnUntraced(function* () {\n const capabilities = yield* Capability.Service;\n\n return yield* Effect.all([\n // System section group — created alongside database/settings so the group always\n // appears when the space plugin is active and hides when there are no children.\n GraphBuilder.createExtension({\n id: Paths.GroupSegments.system,\n match: AppNodeMatcher.whenSpace,\n connector: (space) =>\n Effect.succeed([\n AppNode.makeGroup({\n id: Paths.GroupSegments.system,\n type: Paths.GroupTypes.system,\n label: ['nav-tree-group-system.label', { ns: meta.profile.key }],\n space,\n position: 900,\n }),\n ]),\n }),\n\n // Types section virtual node under the system group.\n GraphBuilder.createExtension({\n id: 'databaseSection',\n match: AppNodeMatcher.whenNavTreeGroup(Paths.GroupTypes.system),\n connector: (space) => {\n return Effect.succeed([\n AppNode.makeSection({\n id: Paths.Segments.database,\n type: DATABASE_SECTION_TYPE,\n label: ['database-section.label', { ns: meta.profile.key }],\n icon: 'ph--database--regular',\n space,\n testId: 'spacePlugin.databaseSection',\n }),\n ]);\n },\n }),\n\n // Schema nodes under the Types virtual node.\n GraphBuilder.createExtension({\n id: 'database',\n match: (node) => {\n const space = isSpace(node.properties.space) ? node.properties.space : undefined;\n return node.type === DATABASE_SECTION_TYPE && space ? Option.some(space) : Option.none();\n },\n connector: (space, get) => {\n // Read settings reactively — same pattern as the translator read below.\n const settingsAtom = get(capabilities.atom(SpaceCapabilities.Settings)).at(0);\n const showHidden = settingsAtom ? get(settingsAtom).showHidden : false;\n\n // Persisted types live in the space db; static/runtime types live in the shared registry.\n // Fan across both so the space's own types appear without leaking other spaces' types.\n const allSchemas = get(\n space.db.query(Query.select(Filter.type(Type.Type)).from(Scope.space(), Scope.registry())).atom,\n );\n\n const userSchemas = allSchemas.filter((type) => {\n if (Type.isRelation(type)) {\n return false;\n }\n if (Type.isTypeKind(type)) {\n return false;\n }\n const schema = Type.getSchema(type);\n if (!showHidden && HiddenAnnotation.get(schema).pipe(Option.getOrElse(() => false))) {\n return false;\n }\n if (Type.getTypename(type) === Type.getTypename(Collection.Collection)) {\n return false;\n }\n return true;\n });\n\n const viewIndex = buildViewIndex(get, space, allSchemas);\n\n const visibleSchemas = userSchemas.filter((schema) => {\n if (Type.getDatabase(schema) != null) {\n return true;\n }\n const typeUri = Type.getURI(schema);\n const objects = get(space.db.query(Filter.type(typeUri)).atom);\n if (ViewAnnotation.has(schema)) {\n return objects.some((obj) => !viewIndex.isView(obj));\n }\n return objects.length > 0 || viewIndex.typeUrisWithViews.has(typeUri);\n });\n\n // Sort alphabetically by display name. Static types' labels are `typename.label` translation\n // keys resolved at render; resolve them here via the Translator capability so the order matches\n // what users see. Resolved reactively inside the connector (not at factory setup) so the\n // capability — contributed during startup by the theme plugin — is present when this runs.\n const translator = get(capabilities.atom(AppCapabilities.Translator)).at(0);\n const labelOf = (node: Node.NodeArg<Type.AnyEntity>): string => {\n const label = node.properties?.label;\n if (translator && isLabel(label)) {\n return toLocalizedString(label, translator.t);\n }\n return node.data ? Type.getTypename(node.data) : '';\n };\n\n return Effect.succeed(\n visibleSchemas\n .map((schema) => createSchemaNode({ schema, space, get }))\n .toSorted((nodeA, nodeB) => labelOf(nodeA).localeCompare(labelOf(nodeB))),\n );\n },\n }),\n\n // {All} virtual node + view objects under each schema node.\n GraphBuilder.createExtension({\n id: 'schemaChildren',\n match: (node) => {\n const space = isSpace(node.properties.space) ? node.properties.space : undefined;\n return space && Type.isType(node.data) ? Option.some({ space, schema: node.data }) : Option.none();\n },\n connector: ({ space, schema }, get) => {\n const client = get(capabilities.atom(ClientCapabilities.Client)).at(0);\n const schemas = client ? get(client.graph.registry.query(Filter.type(Type.Type)).atom) : [];\n const typeUri = Type.getURI(schema);\n\n // View objects are the type node's only visible children; objects of the type are resolved\n // on demand as hidden children (see the `typeCollectionObject` resolver). The list of all\n // objects is rendered when the type node is selected (see TypeCollectionArticle).\n const viewIndex = buildViewIndex(get, space, schemas);\n const viewNodes = viewIndex\n .getViewsForTypeUri(typeUri)\n .map((object: Obj.Unknown) =>\n AppNode.makeObject({\n get,\n db: space.db,\n object,\n draggable: false,\n droppable: false,\n }),\n )\n .filter(isNonNullable);\n\n return Effect.succeed(viewNodes);\n },\n }),\n\n // Objects of a type are not enumerated in the nav tree; navigating directly to the canonical\n // object path resolves the object on demand as a hidden child of its type node. Mirrors the\n // inbox feed-object resolver: a resolver keyed on path shape, not a connector.\n GraphBuilder.createExtension({\n id: 'typeCollectionObject',\n match: () => Option.none(),\n resolver: (qualifiedId, get) =>\n Effect.gen(function* () {\n const segments = qualifiedId.split('/');\n // Discriminator: the canonical object path `…/database/<slug>/<objectId>`.\n if (segments.at(-3) !== Paths.Segments.database) {\n return null;\n }\n\n const spaceId = Paths.getSpaceIdFromPath(qualifiedId);\n const objectId = segments.at(-1);\n if (!spaceId || !objectId || !Key.EntityId.isValid(objectId)) {\n return null;\n }\n\n const client = get(capabilities.atom(ClientCapabilities.Client)).at(0);\n const space = client?.spaces.get(spaceId);\n if (!space) {\n return null;\n }\n\n const object = get(space.db.query(Filter.id(objectId)).atom).at(0);\n if (!object) {\n return null;\n }\n\n get(Obj.atom(object));\n const node = AppNode.makeObject({\n get,\n db: space.db,\n object,\n disposition: 'hidden',\n draggable: false,\n droppable: false,\n });\n // Resolver nodes are keyed by the requested path (not the local object id) so the parent\n // type node's child edge connects; `makeObject` uses the local id, so override it here.\n return node && { ...node, id: qualifiedId };\n }),\n }),\n\n // Actions for schema nodes.\n GraphBuilder.createExtension({\n id: 'schemaActions',\n match: (node) => {\n const space = isSpace(node.properties.space) ? node.properties.space : undefined;\n return space && Type.isType(node.data) ? Option.some({ space, schema: node.data }) : Option.none();\n },\n actions: ({ space, schema }, get) => {\n const client = get(capabilities.atom(ClientCapabilities.Client)).at(0);\n const schemas = client ? get(client.graph.registry.query(Filter.type(Type.Type)).atom) : [];\n\n const targetUri = Type.getURI(schema);\n const viewIndex = buildViewIndex(get, space, schemas);\n const deletable = Type.getDatabase(schema) != null && viewIndex.getViewsForTypeUri(targetUri).length === 0;\n\n return Effect.succeed(createSchemaActions({ type: schema, space, deletable, capabilities }));\n },\n }),\n ]);\n});\n\n//\n// Helpers\n//\n\n/** Returns schemas keyed uniquely by typename, preferring later entries. */\nconst uniqueSchemasByTypename = <TSchema extends Type.AnyEntity>(schemas: TSchema[]): TSchema[] => {\n const uniqueSchemas = new Map<string, TSchema>();\n for (const schema of schemas) {\n uniqueSchemas.set(Type.getTypename(schema), schema);\n }\n\n return [...uniqueSchemas.values()];\n};\n\n/** Builds a graph node for a schema in the Types subtree. */\nconst createSchemaNode = ({\n schema,\n space,\n get,\n}: {\n schema: Type.AnyEntity;\n space: Space;\n get: Atom.Context;\n}): Node.NodeArg<Type.AnyEntity> => {\n const typename = Type.getTypename(schema);\n // The node id doubles as the `types/<slug>` path segment, so it must be slash- and colon-free:\n // a stored schema's entity id, or a static schema's typename.\n const slug = Paths.getTypeSlug(schema);\n const iconAnnotation =\n Type.getDatabase(schema) == null\n ? Option.getOrUndefined(Annotation.IconAnnotation.get(Type.getSchema(schema)))\n : undefined;\n const { label, nodeId } = Match.value(schema).pipe(\n Match.when(\n (value: Type.AnyEntity) => Type.getDatabase(value) != null,\n (mutableSchema) => {\n // Type.AnyEntity has KindId=Type at the type level but is a valid ECHO entity at runtime.\n const snapshot = get(Entity.atom(mutableSchema as unknown as Entity.Unknown));\n return {\n label: (snapshot as { name?: string }).name || [\n 'object-name.placeholder',\n { ns: Type.getTypename(Type.Type) },\n ],\n nodeId: slug,\n };\n },\n ),\n Match.orElse(() => ({\n label: AppNode.getDynamicLabel('typename.label', typename, { count: 2, defaultValue: typename }),\n nodeId: slug,\n })),\n );\n const icon =\n Type.getDatabase(schema) != null ? 'ph--cube--regular' : (iconAnnotation?.icon ?? 'ph--circle-dashed--regular');\n const iconHue = Type.getDatabase(schema) != null ? 'neutral' : iconAnnotation?.hue;\n return Node.make({\n id: nodeId,\n type: STATIC_SCHEMA_TYPE,\n data: schema,\n properties: {\n label,\n icon,\n iconHue,\n // Selecting the type node opens a list of every object of this type (see TypeCollectionArticle);\n // objects resolve on demand as hidden children. View objects are its only visible children, so\n // without a view the node is a leaf (no `role: 'branch'`).\n testId: `spacePlugin.schemaNode.${typename}`,\n selectable: true,\n draggable: false,\n droppable: false,\n childrenDroppable: false,\n space,\n },\n });\n};\n\n/** Builds schema actions (add view, rename, delete, snapshot). */\nconst createSchemaActions = ({\n type,\n space,\n deletable,\n capabilities,\n}: {\n type: Type.AnyEntity;\n space: Space;\n deletable: boolean;\n capabilities: CapabilityManager.CapabilityManager;\n}) => {\n const typename = Type.getTypename(type);\n const createEntry = capabilities\n .getAll(SpaceCapabilities.CreateObjectEntry)\n .find((entry: SpaceCapabilities.CreateObjectEntry) => entry.id === typename);\n\n // For database-persisted object schemas without a dedicated capability, synthesize a generic entry.\n const resolvedEntry: SpaceCapabilities.CreateObjectEntry | undefined =\n createEntry ??\n (Type.getDatabase(type) != null && Type.isObject(type) ? makeCreateObjectEntryForDatabaseType(type) : undefined);\n const createObjectFn = resolvedEntry?.createObject;\n const inputSchema = resolvedEntry?.inputSchema;\n\n const actions: Node.NodeArg<Node.ActionData<Operation.Service>>[] = [\n ...(createObjectFn\n ? [\n Node.makeAction({\n id: SpaceOperation.OpenCreateObject.meta.key,\n data: Effect.fnUntraced(function* () {\n if (inputSchema) {\n yield* Operation.invoke(SpaceOperation.OpenCreateObject, {\n target: space.db,\n typename,\n });\n } else {\n const result = yield* createObjectFn({}, { db: space.db, target: space.db }).pipe(\n Effect.provideService(Capability.Service, capabilities),\n );\n if (result.subject.length > 0) {\n yield* Operation.invoke(LayoutOperation.Open, {\n subject: [...result.subject],\n navigation: 'immediate',\n });\n }\n }\n }),\n properties: {\n // Static plugin types carry a per-typename `add-object.label` (e.g. \"Add event\");\n // database types have no such namespace, so fall back to the plugin's generic label.\n label: AppNode.getDynamicLabel(\n 'add-object.label',\n Type.getDatabase(type) != null ? meta.profile.key : typename,\n ),\n icon: 'ph--plus--regular',\n disposition: 'list-item-primary',\n testId: 'spacePlugin.createObject',\n },\n }),\n ]\n : []),\n Node.makeAction({\n id: `${SpaceOperation.AddObject.meta.key}-view`,\n data: () =>\n Operation.invoke(SpaceOperation.OpenCreateObject, {\n target: space.db,\n views: true,\n // The type-picker field value is the type URI (see TypeOptions), so seed the default with\n // the URI — not the bare typename — for the option to be pre-selected.\n initialFormValues: { typename: Type.getURI(type) },\n }),\n properties: {\n label: ADD_VIEW_TO_SCHEMA_LABEL,\n icon: 'ph--circles-three-plus--regular',\n disposition: 'list-item',\n testId: 'spacePlugin.addViewToSchema',\n },\n }),\n Node.makeAction({\n id: SpaceOperation.RenameObject.meta.key,\n data: (params?: Node.InvokeProps) =>\n Type.getDatabase(type) != null\n ? Operation.invoke(SpaceOperation.RenameObject, {\n object: type,\n caller: `${params?.caller}:${params?.parent?.id}`,\n })\n : Effect.fail(new Error('Cannot rename immutable schema')),\n properties: {\n label: AppNode.getDynamicLabel('rename-object.label', Type.getTypename(Type.Type)),\n icon: 'ph--pencil-simple-line--regular',\n disabled: Type.getDatabase(type) == null,\n disposition: 'list-item',\n testId: 'spacePlugin.renameObject',\n },\n }),\n Node.makeAction({\n id: SpaceOperation.RemoveObjects.meta.key,\n data: () =>\n Type.getDatabase(type) != null\n ? Operation.invoke(SpaceOperation.RemoveObjects, {\n objects: [type],\n })\n : Effect.succeed(undefined),\n properties: {\n label: AppNode.getDynamicLabel('delete-object.label', Type.getTypename(Type.Type)),\n icon: 'ph--trash--regular',\n disposition: 'list-item',\n disabled: !deletable,\n testId: 'spacePlugin.deleteObject',\n },\n }),\n Node.makeAction({\n id: SpaceOperation.Snapshot.meta.key,\n data: Effect.fnUntraced(function* () {\n const result = yield* Operation.invoke(SpaceOperation.Snapshot, {\n db: space.db,\n query: Query.select(Filter.type(type)).ast,\n });\n if (result.snapshot) {\n yield* Effect.tryPromise(() =>\n downloadBlob(result.snapshot, createFilename({ parts: [space.id, Type.getTypename(type)], ext: 'json' })),\n );\n }\n }),\n properties: {\n label: SNAPSHOT_BY_SCHEMA_LABEL,\n icon: 'ph--camera--regular',\n disposition: 'list-item',\n },\n }),\n ];\n\n return actions;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppAnnotation, AppCapabilities, AppNode, AppNodeMatcher, LayoutOperation, Paths } from '@dxos/app-toolkit';\nimport { isSpace } from '@dxos/client/echo';\nimport { Operation } from '@dxos/compute';\nimport { Annotation, Collection, Obj, Type } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { Graph, GraphBuilder, Node } from '@dxos/plugin-graph';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '#meta';\nimport { SpaceOperation } from '#operations';\nimport { SpaceCapabilities } from '#types';\n\nimport {\n COLLECTIONS_SECTION_TYPE,\n COPY_LINK_LABEL,\n CREATE_OBJECT_IN_COLLECTION_LABEL,\n EXPOSE_OBJECT_LABEL,\n} from './shared';\n\n//\n// Extension Factory\n//\n\n/** Creates collection-related extensions: collections section, collections, objects, and object actions. */\nexport const createCollectionExtensions = Effect.fnUntraced(function* ({\n shareableLinkOrigin,\n}: {\n shareableLinkOrigin: string;\n}) {\n const capabilities = yield* Capability.Service;\n\n return yield* Effect.all([\n // Content section group — created alongside collections so the group always\n // appears when the space plugin is active and hides when there are no children.\n GraphBuilder.createExtension({\n id: Paths.GroupSegments.content,\n match: AppNodeMatcher.whenSpace,\n connector: (space) =>\n Effect.succeed([\n AppNode.makeGroup({\n id: Paths.GroupSegments.content,\n type: Paths.GroupTypes.content,\n label: ['nav-tree-group-content.label', { ns: meta.profile.key }],\n space,\n position: 200,\n }),\n ]),\n }),\n\n // Collections section virtual node under the content group.\n GraphBuilder.createExtension({\n id: 'collectionsSection',\n match: AppNodeMatcher.whenNavTreeGroup(Paths.GroupTypes.content),\n connector: (space, get) => {\n get(Obj.atom(space.properties));\n const collectionRef = Annotation.get(space.properties, AppAnnotation.RootCollectionAnnotation).pipe(\n Option.getOrUndefined,\n );\n if (collectionRef) {\n get(Obj.atom(collectionRef));\n }\n const rootCollection = collectionRef?.target;\n const collectionPartials = rootCollection\n ? AppNode.getCollectionGraphNodePartials({ db: space.db, collection: rootCollection })\n : undefined;\n\n return Effect.succeed([\n Node.make({\n id: Paths.Segments.collections,\n type: COLLECTIONS_SECTION_TYPE,\n data: null,\n properties: {\n label: ['collections-section.label', { ns: meta.profile.key }],\n icon: 'ph--folder--regular',\n iconHue: 'indigo',\n role: 'branch',\n testId: 'spacePlugin.collectionsSection',\n draggable: false,\n droppable: false,\n space,\n ...collectionPartials,\n },\n }),\n ]);\n },\n }),\n\n // Root collection objects under the Collections virtual node.\n GraphBuilder.createExtension({\n id: 'collections',\n match: (node) => {\n const space = isSpace(node.properties.space) ? node.properties.space : undefined;\n return node.type === COLLECTIONS_SECTION_TYPE && space ? Option.some(space) : Option.none();\n },\n connector: (space, get) => {\n const ephemeralAtom = capabilities.get(SpaceCapabilities.EphemeralState);\n const ephemeralState = get(ephemeralAtom);\n\n get(Obj.atom(space.properties));\n const collectionRef = Annotation.get(space.properties, AppAnnotation.RootCollectionAnnotation).pipe(\n Option.getOrUndefined,\n );\n const collection = collectionRef ? get(Obj.atom(collectionRef)) : undefined;\n if (!collection) {\n return Effect.succeed([]);\n }\n\n const rawRefs = collection.objects ?? [];\n\n const objects = rawRefs\n .map((ref: any) => {\n get(Obj.atom(ref));\n return ref.target;\n })\n .filter(isNonNullable);\n\n return Effect.succeed(\n objects\n .map((object: Obj.Unknown) =>\n AppNode.makeObject({\n get,\n db: space.db,\n object,\n navigable: ephemeralState.navigableCollections,\n canDrop: AppNode.CAN_DROP_COLLECTION_ITEM,\n onRearrange: collectionRef?.target\n ? AppNode.makeCollectionRearrangeCallback(collectionRef.target)\n : undefined,\n }),\n )\n .filter(isNonNullable),\n );\n },\n }),\n\n // Children of Collection.Collection nodes.\n GraphBuilder.createExtension({\n id: 'objects',\n match: (node) => (Obj.instanceOf(Collection.Collection, node.data) ? Option.some(node.data) : Option.none()),\n connector: (collection, get) => {\n const ephemeralAtom = capabilities.get(SpaceCapabilities.EphemeralState);\n const ephemeralState = get(ephemeralAtom);\n const db = Obj.getDatabase(collection);\n\n const collectionSnapshot = get(Obj.atom(collection));\n const refs = collectionSnapshot.objects ?? [];\n\n const objects = refs\n .map((ref: any) => {\n get(Obj.atom(ref));\n return ref.target;\n })\n .filter(isNonNullable);\n\n return Effect.succeed(\n objects\n .map(\n (object: Obj.Unknown) =>\n db &&\n AppNode.makeObject({\n get,\n object,\n db,\n navigable: ephemeralState.navigableCollections,\n canDrop: AppNode.CAN_DROP_COLLECTION_ITEM,\n onRearrange: AppNode.makeCollectionRearrangeCallback(collection),\n }),\n )\n .filter(isNonNullable),\n );\n },\n // TODO(graph-path-ids): Resolver temporarily disabled; redesign needed for path-based IDs.\n // resolver: (id, get) => { ... },\n }),\n\n // Object actions.\n GraphBuilder.createExtension({\n id: 'objectActions',\n match: (node) => {\n return node.data != null &&\n Obj.getDatabase(node.data) &&\n Obj.isObject(node.data) &&\n Obj.getTypename(node.data) === node.type\n ? Option.some({ object: node.data, nodeId: node.id })\n : Option.none();\n },\n actions: ({ object, nodeId }, get) => {\n const deletable = !Type.isType(object);\n\n const [appGraph] = get(capabilities.atom(AppCapabilities.AppGraph));\n const ephemeralAtom = capabilities.get(SpaceCapabilities.EphemeralState);\n const ephemeralState = get(ephemeralAtom);\n\n if (!appGraph) {\n return Effect.succeed([]);\n }\n\n const parentId = nodeId.substring(0, nodeId.lastIndexOf('/'));\n const parentNode = Option.getOrUndefined(Graph.getNode(appGraph.graph, parentId));\n const parentCollection =\n parentNode && Obj.instanceOf(Collection.Collection, parentNode.data) ? parentNode.data : undefined;\n\n return Effect.succeed(\n constructObjectActions({\n object,\n nodeId,\n deletable,\n navigable: ephemeralState.navigableCollections,\n shareableLinkOrigin,\n parentCollection,\n }),\n );\n },\n }),\n\n // Action on the collections section header to add an object to the space's root collection.\n GraphBuilder.createExtension({\n id: 'collectionsSectionActions',\n match: (node) => {\n const space = isSpace(node.properties.space) ? node.properties.space : undefined;\n return node.type === COLLECTIONS_SECTION_TYPE && space ? Option.some(space) : Option.none();\n },\n actions: (space) =>\n Effect.succeed([\n Node.makeAction({\n id: SpaceOperation.OpenCreateObject.meta.key,\n data: () =>\n Effect.gen(function* () {\n // Target the root collection so the create dialog offers collection-eligible types, like\n // any other collection; fall back to the space db if it hasn't been created yet.\n const rootCollection = Annotation.get(space.properties, AppAnnotation.RootCollectionAnnotation).pipe(\n Option.getOrUndefined,\n )?.target;\n yield* Operation.invoke(SpaceOperation.OpenCreateObject, {\n // Qualified id of the collections section node (root/<spaceId>/collections), so the new\n // object's navigation path resolves under the section — the bare segment would not.\n target: rootCollection ?? space.db,\n targetNodeId: Paths.getCollectionsPath(space.id),\n });\n }),\n properties: {\n label: CREATE_OBJECT_IN_COLLECTION_LABEL,\n icon: 'ph--plus--regular',\n disposition: 'list-item-primary',\n testId: 'spacePlugin.createObject',\n },\n }),\n ]),\n }),\n ]);\n});\n\n//\n// Helpers\n//\n\n/** Builds the action list for an ECHO object node. */\nconst constructObjectActions = ({\n object,\n nodeId,\n deletable = true,\n navigable = false,\n shareableLinkOrigin,\n parentCollection,\n}: {\n object: Obj.Unknown;\n nodeId: string;\n shareableLinkOrigin: string;\n deletable?: boolean;\n navigable?: boolean;\n parentCollection?: Collection.Collection;\n}) => {\n const db = Obj.getDatabase(object);\n invariant(db, 'Database not found');\n const typename = Obj.getTypename(object);\n invariant(typename, 'Object has no typename');\n\n const actions: Node.NodeArg<Node.ActionData<Operation.Service | Capability.Service>>[] = [\n ...(Obj.instanceOf(Collection.Collection, object)\n ? [\n Node.makeAction({\n id: SpaceOperation.OpenCreateObject.meta.key,\n data: () => Operation.invoke(SpaceOperation.OpenCreateObject, { target: object, targetNodeId: nodeId }),\n properties: {\n label: CREATE_OBJECT_IN_COLLECTION_LABEL,\n icon: 'ph--plus--regular',\n disposition: 'list-item-primary',\n testId: 'spacePlugin.createObject',\n },\n }),\n ]\n : []),\n Node.makeAction({\n id: SpaceOperation.RenameObject.meta.key,\n data: (params?: Node.InvokeProps) =>\n Operation.invoke(SpaceOperation.RenameObject, { object, caller: `${params?.caller}:${params?.parent?.id}` }),\n properties: {\n label: AppNode.getDynamicLabel('rename-object.label', typename, { defaultValue: 'Rename' }),\n icon: 'ph--pencil-simple-line--regular',\n disposition: 'list-item',\n testId: 'spacePlugin.renameObject',\n },\n }),\n Node.makeAction({\n id: SpaceOperation.RemoveObjects.meta.key,\n data: () =>\n Operation.invoke(SpaceOperation.RemoveObjects, {\n objects: [object],\n target: parentCollection,\n }),\n properties: {\n label: AppNode.getDynamicLabel('delete-object.label', typename, { defaultValue: 'Delete' }),\n icon: 'ph--trash--regular',\n disposition: 'list-item',\n disabled: !deletable,\n testId: 'spacePlugin.deleteObject',\n },\n }),\n ...(navigable || !Obj.instanceOf(Collection.Collection, object)\n ? [\n Node.makeAction({\n id: 'copyLink',\n data: () =>\n Effect.promise(async () => {\n const url = new URL(Paths.toUrlPath(nodeId), shareableLinkOrigin);\n await navigator.clipboard.writeText(url.toString());\n }),\n properties: {\n label: COPY_LINK_LABEL,\n icon: 'ph--link--regular',\n disposition: 'list-item',\n testId: 'spacePlugin.copyLink',\n },\n }),\n ]\n : []),\n Node.makeAction({\n id: LayoutOperation.Expose.meta.key,\n data: () => Operation.invoke(LayoutOperation.Expose, { subject: Paths.getObjectPathFromObject(object) }),\n properties: {\n label: EXPOSE_OBJECT_LABEL,\n icon: 'ph--eye--regular',\n disposition: 'heading-list-item',\n testId: 'spacePlugin.exposeObject',\n },\n }),\n ];\n\n return actions;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { AppNode } from '@dxos/app-toolkit';\nimport { Obj, Type } from '@dxos/echo';\nimport { GraphBuilder, NodeMatcher } from '@dxos/plugin-graph';\nimport { linkedSegment } from '@dxos/react-ui-attention';\nimport type { EchoViewRefPath } from '@dxos/schema';\nimport { ViewAnnotation } from '@dxos/schema';\nimport { Position } from '@dxos/util';\n\nimport { meta } from '#meta';\n\n//\n// Extension Factory\n//\n\n/** Creates companion panel extensions: object settings and selected-objects. */\n// NOTE: Explicit annotation required: d.ts emit cannot portably name the inferred @dxos/plugin-graph types (TS2883).\nexport const createCompanionExtensions: () => Effect.Effect<GraphBuilder.BuilderExtension[][]> = Effect.fnUntraced(\n function* () {\n return yield* Effect.all([\n // Object settings plank companion.\n GraphBuilder.createExtension({\n id: 'settings',\n match: NodeMatcher.whenEchoObjectMatches,\n connector: (node) =>\n Effect.succeed([\n AppNode.makeCompanion({\n id: linkedSegment('settings'),\n label: ['object-properties.label', { ns: meta.profile.key }],\n icon: 'ph--sliders--regular',\n data: 'settings', // TODO(burdon): Change to 'object-properties'.\n position: Position.last,\n }),\n ]),\n }),\n\n // Related objects plank companion.\n GraphBuilder.createExtension({\n id: 'related',\n match: NodeMatcher.whenEchoObjectMatches,\n connector: (node) =>\n Effect.succeed([\n AppNode.makeCompanion({\n id: linkedSegment('related'),\n label: ['companion-related.label', { ns: meta.profile.key }],\n icon: 'ph--graph--regular',\n data: 'related',\n position: Position.last,\n }),\n ]),\n }),\n\n // View selected objects companion.\n GraphBuilder.createExtension({\n id: 'selectedObjects',\n match: (node) => {\n if (!Obj.isObject(node.data)) {\n return Option.none();\n }\n\n const type = Obj.getType(node.data);\n const path = type\n ? ViewAnnotation.get(Type.getSchema(type)).pipe(Option.getOrElse(() => [] as EchoViewRefPath))\n : [];\n const isEchoViewBacked = type && path.length > 0 ? ViewAnnotation.hasRefAlongPath(node.data, path) : false;\n\n if (!isEchoViewBacked) {\n return Option.none();\n }\n\n return Option.some(node);\n },\n connector: (node) =>\n Effect.succeed([\n AppNode.makeCompanion({\n id: linkedSegment('selected-objects'),\n label: ['companion-selected-objects.label', { ns: meta.profile.key }],\n icon: 'ph--tree-view--regular',\n data: 'selected-objects',\n }),\n ]),\n }),\n ]);\n },\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { AppNode, AppNodeMatcher, AppSpace } from '@dxos/app-toolkit';\nimport { GraphBuilder, Node } from '@dxos/plugin-graph';\nimport { Position } from '@dxos/util';\n\nimport { meta } from '#meta';\nimport { SETTINGS_SECTION_ID, SETTINGS_SECTION_TYPE } from '#types';\n\n//\n// Extension Factory\n//\n\n/**\n * Settings section attached directly under each Space node, plus its children.\n *\n * The virtual `settings` section is pinned to the top via `position: Position.first`\n * so it sits above the un-positioned middle band (collections, mailboxes,\n * automations, integrations, etc.). It groups the panels contributed by this\n * plugin (general, members) and by other plugins (automation, functions).\n */\nexport const createSettingsExtensions = Effect.fnUntraced(function* () {\n const sectionExtension = yield* GraphBuilder.createExtension({\n id: 'settingsSection',\n match: AppNodeMatcher.whenSpace,\n connector: (space) =>\n Effect.succeed([\n AppNode.makeSection({\n id: SETTINGS_SECTION_ID,\n type: SETTINGS_SECTION_TYPE,\n label: ['settings-section.label', { ns: meta.profile.key }],\n icon: 'ph--sliders--regular',\n iconHue: 'emerald',\n space,\n position: Position.first,\n testId: 'spacePlugin.settings',\n }),\n ]),\n });\n\n const childrenExtension = yield* GraphBuilder.createExtension({\n id: 'settingsSections',\n match: AppNodeMatcher.whenSpaceSettings,\n connector: (space) => {\n const personal = AppSpace.isPersonalSpace(space);\n return Effect.succeed([\n Node.make({\n id: 'general',\n type: `${meta.profile.key}.general`,\n data: `${meta.profile.key}.general`,\n properties: {\n label: ['space-settings-properties.label', { ns: meta.profile.key }],\n icon: 'ph--brackets-curly--regular',\n iconHue: 'emerald',\n space,\n position: Position.first,\n testId: 'spacePlugin.general',\n },\n }),\n ...(!personal\n ? [\n Node.make({\n id: 'members',\n type: `${meta.profile.key}.members`,\n data: `${meta.profile.key}.members`,\n properties: {\n label: ['members-panel.label', { ns: meta.profile.key }],\n icon: 'ph--users--regular',\n iconHue: 'emerald',\n space,\n position: Position.first,\n testId: 'spacePlugin.members',\n },\n }),\n ]\n : []),\n ]);\n },\n });\n\n return [sectionExtension, childrenExtension];\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Effect", "Capability", "AppCapabilities", "Effect", "Capability", "AppCapabilities", "AppNode", "AppNodeMatcher", "AppSpace", "Paths", "SpaceState", "Operation", "Filter", "Obj", "Migrations", "ClientCapabilities", "CreateAtom", "Graph", "GraphBuilder", "Node", "NodeMatcher", "SpaceArchive", "Expando", "Position", "meta", "SpaceOperation", "SPACE_HOME_NODE_TYPE", "SPACE_TYPE", "SpaceCapabilities", "Option", "SpaceState", "isSpace", "Annotation", "Filter", "Obj", "Type", "Migrations", "MigrationVersionAnnotation", "ViewAnnotation", "getTypeURIFromQuery", "meta", "DATABASE_SECTION_TYPE", "profile", "key", "COLLECTIONS_SECTION_TYPE", "STATIC_SCHEMA_TYPE", "META_NS", "ns", "CAN_DROP_SPACE", "source", "isObject", "item", "data", "spaceActionsCache", "Map", "spaceRearrangeCache", "ADD_VIEW_TO_SCHEMA_LABEL", "COPY_LINK_LABEL", "CREATE_OBJECT_IN_COLLECTION_LABEL", "CREATE_OBJECT_IN_SPACE_LABEL", "EXPOSE_OBJECT_LABEL", "MIGRATE_SPACE_LABEL", "RENAME_SPACE_LABEL", "META_NS", "SNAPSHOT_BY_SCHEMA_LABEL", "META_NS", "checkPendingMigration", "space", "state", "get", "SpaceState", "SPACE_REQUIRES_MIGRATION", "SPACE_READY", "Migrations", "targetVersion", "Annotation", "properties", "MigrationVersionAnnotation", "pipe", "getOrUndefined", "downloadBlob", "blob", "filename", "url", "URL", "createObjectURL", "anchor", "document", "createElement", "href", "download", "body", "appendChild", "click", "removeChild", "revokeObjectURL", "buildViewIndex", "schemas", "viewSchemas", "filter", "schema", "ViewAnnotation", "has", "viewsByTypeUri", "Map", "viewObjectIds", "Set", "length", "Filter", "or", "map", "type", "viewObjects", "db", "query", "atom", "viewObject", "Obj", "isObject", "holderType", "getType", "path", "Type", "getSchema", "getOrElse", "viewSnapshot", "holder", "segment", "undefined", "add", "id", "viewTarget", "typeUri", "getTypeURIFromQuery", "ast", "existing", "push", "set", "typeUrisWithViews", "keys", "getViewsForTypeUri", "isView", "object", "SPACE_HOME_NODE_LABEL", "ns", "meta", "profile", "key", "createSpaceExtensions", "fnUntraced", "capabilities", "Capability", "Service", "all", "GraphBuilder", "createExtension", "id", "position", "Position", "first", "match", "AppNodeMatcher", "whenSpace", "connector", "space", "succeed", "Paths", "SPACE_HOME_SEGMENT", "type", "SPACE_HOME_NODE_TYPE", "data", "properties", "label", "icon", "iconHue", "draggable", "droppable", "NodeMatcher", "whenRoot", "actions", "Node", "makeAction", "SpaceOperation", "OpenCreateSpace", "Operation", "invoke", "testId", "disposition", "Join", "OpenImportSpace", "ExportSpace", "client", "get", "ClientCapabilities", "Client", "AppSpace", "getActiveSpace", "getPersonalSpace", "format", "SpaceArchive", "Format", "BINARY", "JSON", "OpenMembers", "keyBinding", "macos", "windows", "OpenSettings", "_node", "getAll", "stateAtom", "SpaceCapabilities", "State", "ephemeralAtom", "EphemeralState", "spacesAtom", "CreateAtom", "fromObservable", "spaces", "personalSpace", "settingsAtom", "Settings", "settings", "state", "ephemeralState", "spacesOrder", "db", "query", "Filter", "Expando", "SHARED", "atom", "graph", "AppCapabilities", "AppGraph", "spacesOrderSnapshot", "Obj", "undefined", "order", "orderMap", "Map", "map", "index", "spaceStates", "forEach", "SpaceState", "SPACE_READY", "filter", "has", "sort", "sortA", "sortB", "idx", "tags", "length", "isPersonalSpace", "isExemplarSpace", "constructSpaceNode", "navigable", "navigableCollections", "personal", "namesCache", "spaceNames", "GroupSegments", "communications", "AppNode", "makeGroup", "GroupTypes", "constructSpaceActions", "migrating", "sdkMigrationRunning", "hasPendingMigration", "checkPendingMigration", "onRearrange", "spaceRearrangeCache", "nextOrder", "Graph", "sortEdges", "RootId", "update", "set", "make", "SPACE_TYPE", "cacheable", "CACHEABLE_PROPS", "getSpaceDisplayName", "description", "hue", "disabled", "canDrop", "CAN_DROP_SPACE", "isMigrating", "Migrations", "running", "cached", "spaceActionsCache", "push", "Migrate", "ActionGroupType", "MIGRATE_SPACE_LABEL", "OpenCreateObject", "target", "CREATE_OBJECT_IN_SPACE_LABEL", "Rename", "params", "caller", "parent", "RENAME_SPACE_LABEL", "Effect", "Match", "Option", "Capability", "AppCapabilities", "AppNode", "AppNodeMatcher", "LayoutOperation", "Paths", "isSpace", "Operation", "Annotation", "Collection", "Entity", "Filter", "Key", "Obj", "Query", "Scope", "Type", "HiddenAnnotation", "ClientCapabilities", "GraphBuilder", "Node", "ViewAnnotation", "isLabel", "toLocalizedString", "createFilename", "isNonNullable", "meta", "SpaceOperation", "SpaceCapabilities", "createDatabaseExtensions", "fnUntraced", "capabilities", "Capability", "Service", "all", "GraphBuilder", "createExtension", "id", "Paths", "GroupSegments", "system", "match", "AppNodeMatcher", "whenSpace", "connector", "space", "succeed", "AppNode", "makeGroup", "type", "GroupTypes", "label", "ns", "meta", "profile", "key", "position", "whenNavTreeGroup", "makeSection", "Segments", "database", "DATABASE_SECTION_TYPE", "icon", "testId", "node", "isSpace", "properties", "undefined", "some", "none", "get", "settingsAtom", "atom", "SpaceCapabilities", "Settings", "at", "showHidden", "allSchemas", "db", "query", "Query", "select", "Filter", "Type", "from", "Scope", "registry", "userSchemas", "filter", "isRelation", "isTypeKind", "schema", "getSchema", "HiddenAnnotation", "pipe", "getOrElse", "getTypename", "Collection", "viewIndex", "buildViewIndex", "visibleSchemas", "getDatabase", "typeUri", "getURI", "objects", "ViewAnnotation", "has", "obj", "isView", "length", "typeUrisWithViews", "translator", "AppCapabilities", "Translator", "labelOf", "isLabel", "toLocalizedString", "t", "data", "map", "createSchemaNode", "toSorted", "nodeA", "nodeB", "localeCompare", "isType", "client", "ClientCapabilities", "Client", "schemas", "graph", "viewNodes", "getViewsForTypeUri", "object", "makeObject", "draggable", "droppable", "isNonNullable", "resolver", "qualifiedId", "gen", "segments", "split", "spaceId", "getSpaceIdFromPath", "objectId", "Key", "EntityId", "isValid", "spaces", "Obj", "disposition", "actions", "targetUri", "deletable", "createSchemaActions", "createSchemaNode", "schema", "space", "get", "typename", "Type", "getTypename", "slug", "Paths", "getTypeSlug", "iconAnnotation", "getDatabase", "getOrUndefined", "Annotation", "IconAnnotation", "getSchema", "undefined", "label", "nodeId", "value", "pipe", "when", "mutableSchema", "snapshot", "Entity", "atom", "name", "ns", "orElse", "AppNode", "getDynamicLabel", "count", "defaultValue", "icon", "iconHue", "hue", "Node", "make", "id", "type", "STATIC_SCHEMA_TYPE", "data", "properties", "testId", "selectable", "draggable", "droppable", "childrenDroppable", "createSchemaActions", "deletable", "capabilities", "createEntry", "getAll", "SpaceCapabilities", "CreateObjectEntry", "find", "entry", "resolvedEntry", "isObject", "makeCreateObjectEntryForDatabaseType", "createObjectFn", "createObject", "inputSchema", "actions", "makeAction", "SpaceOperation", "OpenCreateObject", "meta", "key", "fnUntraced", "Operation", "invoke", "target", "db", "result", "provideService", "Capability", "Service", "subject", "length", "LayoutOperation", "Open", "navigation", "profile", "disposition", "AddObject", "views", "initialFormValues", "getURI", "ADD_VIEW_TO_SCHEMA_LABEL", "RenameObject", "params", "object", "caller", "parent", "fail", "Error", "disabled", "RemoveObjects", "objects", "succeed", "Snapshot", "query", "Query", "select", "Filter", "ast", "tryPromise", "downloadBlob", "createFilename", "parts", "ext", "SNAPSHOT_BY_SCHEMA_LABEL", "Effect", "Option", "Capability", "AppAnnotation", "AppCapabilities", "AppNode", "AppNodeMatcher", "LayoutOperation", "Paths", "isSpace", "Operation", "Annotation", "Collection", "Obj", "Type", "invariant", "Graph", "GraphBuilder", "Node", "isNonNullable", "meta", "SpaceOperation", "SpaceCapabilities", "Capability", "AppNodeMatcher", "whenSpace", "connector", "Effect", "makeGroup", "id", "GroupSegments", "type", "GroupTypes", "label", "Paths", "meta", "space", "position", "GraphBuilder", "whenNavTreeGroup", "get", "collectionRef", "rootCollection", "db", "collection", "undefined", "succeed", "Node", "Segments", "COLLECTIONS_SECTION_TYPE", "data", "properties", "icon", "iconHue", "role", "testId", "draggable", "droppable", "collectionPartials", "node", "isSpace", "ephemeralState", "Obj", "SpaceCapabilities", "Annotation", "objects", "ref", "target", "filter", "isNonNullable", "AppNode", "object", "navigable", "canDrop", "onRearrange", "instanceOf", "ephemeralAtom", "capabilities", "EphemeralState", "getDatabase", "collectionSnapshot", "refs", "atom", "makeCollectionRearrangeCallback", "nodeId", "none", "actions", "appGraph", "substring", "parentCollection", "parentNode", "Collection", "constructObjectActions", "deletable", "shareableLinkOrigin", "SpaceOperation", "OpenCreateObject", "Operation", "disposition", "typename", "getTypename", "invariant", "makeAction", "key", "targetNodeId", "params", "caller", "parent", "defaultValue", "disabled", "navigator", "clipboard", "writeText", "getObjectPathFromObject", "LayoutOperation", "Effect", "Option", "AppNode", "Obj", "Type", "GraphBuilder", "NodeMatcher", "linkedSegment", "ViewAnnotation", "Position", "meta", "createCompanionExtensions", "fnUntraced", "all", "createExtension", "id", "match", "whenEchoObjectMatches", "connector", "node", "succeed", "makeCompanion", "label", "ns", "profile", "key", "icon", "data", "position", "last", "isObject", "none", "type", "getType", "path", "get", "getSchema", "pipe", "getOrElse", "isEchoViewBacked", "length", "hasRefAlongPath", "some", "Effect", "AppNode", "AppNodeMatcher", "AppSpace", "GraphBuilder", "Node", "Position", "meta", "SETTINGS_SECTION_ID", "SETTINGS_SECTION_TYPE", "createSettingsExtensions", "fnUntraced", "sectionExtension", "createExtension", "id", "match", "whenSpace", "connector", "space", "succeed", "makeSection", "type", "label", "ns", "profile", "key", "icon", "iconHue", "position", "first", "testId", "childrenExtension", "whenSpaceSettings", "personal", "isPersonalSpace", "make", "data", "properties", "Capability", "makeModule", "fnUntraced", "shareableLinkOrigin", "window", "location", "origin", "extensions", "all", "createSpaceExtensions", "createSettingsExtensions", "createDatabaseExtensions", "createCollectionExtensions", "createCompanionExtensions", "contributes", "AppCapabilities", "AppGraphBuilder", "flat"]
|
|
7
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
makeCreateObjectEntryForDatabaseType
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-52ASDNRA.mjs";
|
|
4
|
+
import "../chunk-F5KLUP2P.mjs";
|
|
5
5
|
import "../chunk-J5LGTIGS.mjs";
|
|
6
6
|
|
|
7
7
|
// src/capabilities/index.ts
|
|
@@ -9,22 +9,22 @@ import { Capability as Capability3 } from "@dxos/app-framework";
|
|
|
9
9
|
|
|
10
10
|
// src/capabilities/app-graph-builder/index.ts
|
|
11
11
|
import { Capability } from "@dxos/app-framework";
|
|
12
|
-
var AppGraphBuilder = Capability.lazy("AppGraphBuilder", () => import("../app-graph-builder-
|
|
12
|
+
var AppGraphBuilder = Capability.lazy("AppGraphBuilder", () => import("../app-graph-builder-7H2KOD4B.mjs"));
|
|
13
13
|
|
|
14
14
|
// src/capabilities/navigation-handler/index.ts
|
|
15
15
|
import { Capability as Capability2 } from "@dxos/app-framework";
|
|
16
|
-
var NavigationHandler = Capability2.lazy("NavigationHandler", () => import("../navigation-handler-
|
|
16
|
+
var NavigationHandler = Capability2.lazy("NavigationHandler", () => import("../navigation-handler-ZF7MV2HL.mjs"));
|
|
17
17
|
|
|
18
18
|
// src/capabilities/index.ts
|
|
19
|
-
var CreateObject = Capability3.lazy("CreateObject", () => import("../create-object-
|
|
20
|
-
var IdentityCreated = Capability3.lazy("IdentityCreated", () => import("../identity-created-
|
|
21
|
-
var NavigationResolver = Capability3.lazy("NavigationResolver", () => import("../navigation-resolver-
|
|
19
|
+
var CreateObject = Capability3.lazy("CreateObject", () => import("../create-object-ZU6FZW5X.mjs"));
|
|
20
|
+
var IdentityCreated = Capability3.lazy("IdentityCreated", () => import("../identity-created-BEYMLBK4.mjs"));
|
|
21
|
+
var NavigationResolver = Capability3.lazy("NavigationResolver", () => import("../navigation-resolver-KBESOSWU.mjs"));
|
|
22
22
|
var OperationHandler = Capability3.lazy("OperationHandler", () => import("../operation-handler-YPIRQOH2.mjs"));
|
|
23
23
|
var ReactRoot = Capability3.lazy("ReactRoot", () => import("../react-root-YLYRCSAZ.mjs"));
|
|
24
|
-
var ReactSurface = Capability3.lazy("ReactSurface", () => import("../react-surface-
|
|
24
|
+
var ReactSurface = Capability3.lazy("ReactSurface", () => import("../react-surface-LRA7GIFN.mjs"));
|
|
25
25
|
var Repair = Capability3.lazy("Repair", () => import("../repair-HMH476U3.mjs"));
|
|
26
26
|
var SpaceSettings = Capability3.lazy("SpaceSettings", () => import("../settings-5IBSYBVU.mjs"));
|
|
27
|
-
var SpacesReady = Capability3.lazy("SpacesReady", () => import("../spaces-ready-
|
|
27
|
+
var SpacesReady = Capability3.lazy("SpacesReady", () => import("../spaces-ready-GWMSU72V.mjs"));
|
|
28
28
|
var SpaceState = Capability3.lazy("SpaceState", () => import("../state-KMH2NUAL.mjs"));
|
|
29
29
|
var UndoMappings = Capability3.lazy("UndoMappings", () => import("../undo-mappings-P43EAUGI.mjs"));
|
|
30
30
|
export {
|
|
@@ -2,8 +2,8 @@ import "../chunk-J5LGTIGS.mjs";
|
|
|
2
2
|
|
|
3
3
|
// src/capabilities/node.ts
|
|
4
4
|
import { Capability } from "@dxos/app-framework";
|
|
5
|
-
var CreateObject = Capability.lazy("CreateObject", () => import("../create-object-
|
|
6
|
-
var IdentityCreated = Capability.lazy("IdentityCreated", () => import("../identity-created-
|
|
5
|
+
var CreateObject = Capability.lazy("CreateObject", () => import("../create-object-ZU6FZW5X.mjs"));
|
|
6
|
+
var IdentityCreated = Capability.lazy("IdentityCreated", () => import("../identity-created-BEYMLBK4.mjs"));
|
|
7
7
|
var OperationHandler = Capability.lazy("OperationHandler", () => import("../operation-handler-YPIRQOH2.mjs"));
|
|
8
8
|
var UndoMappings = Capability.lazy("UndoMappings", () => import("../undo-mappings-P43EAUGI.mjs"));
|
|
9
9
|
export {
|
|
@@ -25,8 +25,7 @@ var makeCreateObjectEntryForDatabaseType = (type) => ({
|
|
|
25
25
|
const object = Obj.make(type, props);
|
|
26
26
|
return yield* Operation.invoke(SpaceOperation.AddObject, {
|
|
27
27
|
object,
|
|
28
|
-
target: options.target
|
|
29
|
-
hidden: true
|
|
28
|
+
target: options.target
|
|
30
29
|
});
|
|
31
30
|
})
|
|
32
31
|
});
|
|
@@ -39,4 +38,4 @@ export {
|
|
|
39
38
|
makeCreateObjectEntryForDatabaseType,
|
|
40
39
|
getSpaceDisplayName
|
|
41
40
|
};
|
|
42
|
-
//# sourceMappingURL=chunk-
|
|
41
|
+
//# sourceMappingURL=chunk-52ASDNRA.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/util.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { type Space, SpaceState } from '@dxos/client/echo';\nimport { Operation } from '@dxos/compute';\nimport { Obj, Type } from '@dxos/echo';\nimport { type Label } from '@dxos/ui-types/translations';\n\nimport { meta } from '#meta';\nimport { SpaceOperation } from '#operations';\nimport { type SpaceCapabilities } from '#types';\n\n//\n// Constants\n//\n\nconst PERSONAL_SPACE_LABEL: Label = ['personal-space.label', { ns: meta.profile.key }];\nconst UNNAMED_SPACE_LABEL: Label = ['unnamed-space.label', { ns: meta.profile.key }];\n\nexport const SPACES = `${meta.profile.key}-spaces`;\nexport { SHARED } from './types';\n\n//\n// Helpers\n//\n\n/**\n * Creates a synthetic CreateObjectEntry for a database-persisted object schema that has no dedicated plugin capability.\n * Sets inputSchema so the create dialog presents a form for the type's fields.\n */\nexport const makeCreateObjectEntryForDatabaseType = (type: Type.AnyObj): SpaceCapabilities.CreateObjectEntry => ({\n id: Type.getTypename(type),\n inputSchema: Type.getSchema(type),\n createObject: (props, options) =>\n Effect.gen(function* () {\n const object = Obj.make(type, props);\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n
|
|
5
|
-
"mappings": ";AAIA,YAAYA,YAAY;AAExB,SAAqBC,kBAAkB;AACvC,SAASC,iBAAiB;AAC1B,SAASC,KAAKC,YAAY;AAG1B,SAASC,YAAY;AACrB,SAASC,sBAAsB;AAO/B,IAAMC,uBAA8B;EAAC;EAAwB;IAAEC,IAAIH,KAAKI,QAAQC;EAAI;;AACpF,IAAMC,sBAA6B;EAAC;EAAuB;IAAEH,IAAIH,KAAKI,QAAQC;EAAI;;AAE3E,IAAME,SAAS,GAAGP,KAAKI,QAAQC,GAAG;AAWlC,IAAMG,uCAAuC,CAACC,UAA4D;EAC/GC,IAAIX,KAAKY,YAAYF,IAAAA;EACrBG,aAAab,KAAKc,UAAUJ,IAAAA;EAC5BK,cAAc,CAACC,OAAOC,YACbC,WAAI,aAAA;AACT,UAAMC,SAASpB,IAAIqB,KAAKV,MAAMM,KAAAA;AAC9B,WAAO,OAAOlB,UAAUuB,OAAOnB,eAAeoB,WAAW;MACvDH;MACAI,QAAQN,QAAQM;
|
|
6
|
-
"names": ["Effect", "SpaceState", "Operation", "Obj", "Type", "meta", "SpaceOperation", "PERSONAL_SPACE_LABEL", "ns", "profile", "key", "UNNAMED_SPACE_LABEL", "SPACES", "makeCreateObjectEntryForDatabaseType", "type", "id", "getTypename", "inputSchema", "getSchema", "createObject", "props", "options", "gen", "object", "make", "invoke", "AddObject", "target", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { type Space, SpaceState } from '@dxos/client/echo';\nimport { Operation } from '@dxos/compute';\nimport { Obj, Type } from '@dxos/echo';\nimport { type Label } from '@dxos/ui-types/translations';\n\nimport { meta } from '#meta';\nimport { SpaceOperation } from '#operations';\nimport { type SpaceCapabilities } from '#types';\n\n//\n// Constants\n//\n\nconst PERSONAL_SPACE_LABEL: Label = ['personal-space.label', { ns: meta.profile.key }];\nconst UNNAMED_SPACE_LABEL: Label = ['unnamed-space.label', { ns: meta.profile.key }];\n\nexport const SPACES = `${meta.profile.key}-spaces`;\nexport { SHARED } from './types';\n\n//\n// Helpers\n//\n\n/**\n * Creates a synthetic CreateObjectEntry for a database-persisted object schema that has no dedicated plugin capability.\n * Sets inputSchema so the create dialog presents a form for the type's fields.\n */\nexport const makeCreateObjectEntryForDatabaseType = (type: Type.AnyObj): SpaceCapabilities.CreateObjectEntry => ({\n id: Type.getTypename(type),\n inputSchema: Type.getSchema(type),\n createObject: (props, options) =>\n Effect.gen(function* () {\n const object = Obj.make(type, props);\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n });\n }),\n});\n\n/** Returns the display label for a space (name, namesCache entry, or fallback). */\nexport const getSpaceDisplayName = (\n space: Space,\n { personal, namesCache = {} }: { personal?: boolean; namesCache?: Record<string, string> } = {},\n): Label => {\n return space.state.get() === SpaceState.SPACE_READY && (space.properties.name?.length ?? 0) > 0\n ? space.properties.name!\n : namesCache[space.id]\n ? namesCache[space.id]\n : personal\n ? PERSONAL_SPACE_LABEL\n : UNNAMED_SPACE_LABEL;\n};\n"],
|
|
5
|
+
"mappings": ";AAIA,YAAYA,YAAY;AAExB,SAAqBC,kBAAkB;AACvC,SAASC,iBAAiB;AAC1B,SAASC,KAAKC,YAAY;AAG1B,SAASC,YAAY;AACrB,SAASC,sBAAsB;AAO/B,IAAMC,uBAA8B;EAAC;EAAwB;IAAEC,IAAIH,KAAKI,QAAQC;EAAI;;AACpF,IAAMC,sBAA6B;EAAC;EAAuB;IAAEH,IAAIH,KAAKI,QAAQC;EAAI;;AAE3E,IAAME,SAAS,GAAGP,KAAKI,QAAQC,GAAG;AAWlC,IAAMG,uCAAuC,CAACC,UAA4D;EAC/GC,IAAIX,KAAKY,YAAYF,IAAAA;EACrBG,aAAab,KAAKc,UAAUJ,IAAAA;EAC5BK,cAAc,CAACC,OAAOC,YACbC,WAAI,aAAA;AACT,UAAMC,SAASpB,IAAIqB,KAAKV,MAAMM,KAAAA;AAC9B,WAAO,OAAOlB,UAAUuB,OAAOnB,eAAeoB,WAAW;MACvDH;MACAI,QAAQN,QAAQM;IAClB,CAAA;EACF,CAAA;AACJ;AAGO,IAAMC,sBAAsB,CACjCC,OACA,EAAEC,UAAUC,aAAa,CAAC,EAAC,IAAkE,CAAC,MAAC;AAE/F,SAAOF,MAAMG,MAAMC,IAAG,MAAOhC,WAAWiC,gBAAgBL,MAAMM,WAAWC,MAAMC,UAAU,KAAK,IAC1FR,MAAMM,WAAWC,OACjBL,WAAWF,MAAMd,EAAE,IACjBgB,WAAWF,MAAMd,EAAE,IACnBe,WACEvB,uBACAI;AACV;",
|
|
6
|
+
"names": ["Effect", "SpaceState", "Operation", "Obj", "Type", "meta", "SpaceOperation", "PERSONAL_SPACE_LABEL", "ns", "profile", "key", "UNNAMED_SPACE_LABEL", "SPACES", "makeCreateObjectEntryForDatabaseType", "type", "id", "getTypename", "inputSchema", "getSchema", "createObject", "props", "options", "gen", "object", "make", "invoke", "AddObject", "target", "getSpaceDisplayName", "space", "personal", "namesCache", "state", "get", "SPACE_READY", "properties", "name", "length"]
|
|
7
7
|
}
|
|
@@ -60,7 +60,12 @@ __export(Settings_exports, {
|
|
|
60
60
|
Settings: () => Settings
|
|
61
61
|
});
|
|
62
62
|
import * as Schema2 from "effect/Schema";
|
|
63
|
-
var Settings = Schema2.mutable(Schema2.Struct({
|
|
63
|
+
var Settings = Schema2.mutable(Schema2.Struct({
|
|
64
|
+
showHidden: Schema2.optional(Schema2.Boolean.annotations({
|
|
65
|
+
title: "Show hidden types",
|
|
66
|
+
description: "Include types annotated as hidden (e.g. Tag, View, Feed) in the database section."
|
|
67
|
+
}))
|
|
68
|
+
}));
|
|
64
69
|
|
|
65
70
|
// src/types/types.ts
|
|
66
71
|
var SPACE_DIRECTORY_HANDLE = `${meta3.profile.key}.directory`;
|
|
@@ -107,4 +112,4 @@ export {
|
|
|
107
112
|
HueAnnotationId,
|
|
108
113
|
SpaceForm
|
|
109
114
|
};
|
|
110
|
-
//# sourceMappingURL=chunk-
|
|
115
|
+
//# sourceMappingURL=chunk-F5KLUP2P.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/types/capabilities.ts", "../../../src/types/events.ts", "../../../src/types/form.ts", "../../../src/types/surface.ts", "../../../src/types/types.ts", "../../../src/types/Settings.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Atom } from '@effect-atom/atom-react';\nimport type * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\nimport type { ComponentType } from 'react';\n\nimport { Capability } from '@dxos/app-framework';\nimport { type Space } from '@dxos/client/echo';\nimport { type Operation } from '@dxos/compute';\nimport { type Collection, type Database, type Type } from '@dxos/echo';\nimport { type PublicKey } from '@dxos/keys';\nimport { type Label } from '@dxos/ui-types/translations';\nimport { type ComplexMap, type Position } from '@dxos/util';\n\nimport { meta } from '#meta';\n\nimport * as Settings from './Settings';\nimport { type CreateObject, type ObjectViewerProps } from './types';\n\nexport namespace SpaceCapabilities {\n export const Settings = Capability.make<Atom.Writable<Settings.Settings>>(`${meta.profile.key}.capability.settings`);\n\n /** Schema for persisted space plugin state. */\n export const StateSchema = Schema.mutable(\n Schema.Struct({\n spaceNames: Schema.Record({ key: Schema.String, value: Schema.String }),\n enabledEdgeReplication: Schema.Boolean,\n }),\n );\n\n export type SpaceState = Schema.Schema.Type<typeof StateSchema>;\n\n /** Persisted state (stored in KVS/localStorage). */\n export const State = Capability.make<Atom.Writable<SpaceState>>(`${meta.profile.key}.capability.state`);\n\n /** Ephemeral space plugin state (not persisted). */\n export type SpaceEphemeralState = {\n awaiting: string | undefined;\n sdkMigrationRunning: Record<string, boolean>;\n navigableCollections: boolean;\n viewersByObject: Record<string, ComplexMap<PublicKey, ObjectViewerProps>>;\n viewersByIdentity: ComplexMap<PublicKey, Set<string>>;\n };\n\n /** Transient/ephemeral state (not persisted). */\n export const EphemeralState = Capability.make<Atom.Writable<SpaceEphemeralState>>(\n `${meta.profile.key}.capability.ephemeral-state`,\n );\n\n export type SettingsSection = { id: string; label: Label; position?: Position.Position };\n export const SettingsSection = Capability.make<SettingsSection>(`${meta.profile.key}.capability.settings-section`);\n\n export type OnCreateSpace = (params: {\n space: Space;\n isDefault: boolean;\n rootCollection: Collection.Collection;\n }) => Effect.Effect<void, Error, Operation.Service>;\n export const OnCreateSpace = Capability.make<OnCreateSpace>(`${meta.profile.key}.capability.on-space-created`);\n\n export type OnTypeAdded = (params: {\n db: Database.Database;\n type: Type.AnyEntity;\n // TODO(wittjosiah): This is leaky.\n show?: boolean;\n }) => Effect.Effect<void, Error, Operation.Service>;\n export const OnTypeAdded = Capability.make<OnTypeAdded>(`${meta.profile.key}.capability.on-type-added`);\n\n // TODO(wittjosiah): Replace with migrations, this is not a sustainable solution.\n export type HandleRepair = (params: { space: Space; isDefault: boolean }) => Promise<void>;\n export const Repair = Capability.make<HandleRepair>(`${meta.profile.key}.capability.repair`);\n\n /** Typed creation entry contributed per typename by plugins that support creating objects. */\n export type CreateObjectEntry = Readonly<{\n id: string;\n createObject: CreateObject;\n /**\n * Effect Schema describing the create form inputs. To use a `Type.Type`\n * entity as the form schema, extract its schema first via `Type.getSchema(...)`.\n */\n inputSchema?: Schema.Schema.AnyNoContext;\n /**\n * Optional custom React panel rendered in place of the default `inputSchema` form.\n * Lets a plugin own the entire post-typename-selection flow (e.g. multi-stage forms).\n * `onCreateObject` receives the collected data and triggers the same submit flow.\n */\n customPanel?: ComponentType<CreateObjectCustomPanelProps>;\n }>;\n export const CreateObjectEntry = Capability.make<CreateObjectEntry>(`${meta.profile.key}.capability.create-object`);\n\n /** Props passed to a `CreateObjectEntry.customPanel`. */\n export type CreateObjectCustomPanelProps = {\n target: Database.Database | Collection.Collection;\n initialFormValues?: Record<string, any>;\n onCreateObject: (data: Record<string, any>) => void | Promise<void>;\n };\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { ActivationEvent } from '@dxos/app-framework';\nimport { AppActivationEvents } from '@dxos/app-toolkit';\n\nimport { meta } from '#meta';\n\nexport namespace SpaceEvents {\n export const StateReady = AppActivationEvents.createStateEvent(`${meta.profile.key}.event.state-ready`);\n export const SetupSettingsPanel = ActivationEvent.make(`${meta.profile.key}.event.setupSettingsPanel`);\n export const PersonalSpaceReady = ActivationEvent.make(`${meta.profile.key}.event.defaultSpaceReady`);\n export const SpaceCreated = ActivationEvent.make(`${meta.profile.key}.event.spaceCreated`);\n export const TypeAdded = ActivationEvent.make(`${meta.profile.key}.event.typeAdded`);\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { TypeOptions } from '@dxos/app-toolkit';\n\nexport type TypeInputOptions = TypeOptions.TypeInputOptions;\nexport const TypeInputOptionsAnnotation = TypeOptions.TypeInputOptionsAnnotation;\nexport const TypeInputOptionsAnnotationId = TypeOptions.TypeInputOptionsAnnotationId;\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { type Obj } from '@dxos/echo';\nimport { type Space } from '@dxos/react-client/echo';\n\n/**\n * Surface role token for the Home article's scrollable content region. Contributors render\n * top-to-bottom (e.g. Welcome, Recent objects, starter-prompt cards).\n */\nexport const SpaceHomeContent: Surface.RoleToken<{ space: Space }> = Surface.makeType(\n 'org.dxos.plugin.space.role.homeContent',\n);\n\n/**\n * Surface role token for the Home article's pinned-bottom region (the assistant prompt).\n * Rendered with `limit={1}` so only a single prompt contributor mounts.\n */\nexport const SpaceHomePinBottom: Surface.RoleToken<{ space: Space }> = Surface.makeType(\n 'org.dxos.plugin.space.role.homePinBottom',\n);\n\n/**\n * Surface role token for assistant prompts (consumed by plugin-assistant).\n * Owned by plugin-space to avoid a circular dependency.\n */\nexport const Prompts: Surface.RoleToken<{ subject: Obj.Any; attendableId: string }> = Surface.makeType(\n 'org.dxos.plugin.assistant.role.prompts',\n);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppNodeMatcher } from '@dxos/app-toolkit';\nimport { type PublicKey } from '@dxos/client';\nimport { Operation } from '@dxos/compute';\nimport { Collection, Database, Obj } from '@dxos/echo';\nimport { type ComplexMap } from '@dxos/util';\n\nimport { meta } from '#meta';\n\nexport * as Settings from './Settings';\n\nexport const SPACE_DIRECTORY_HANDLE = `${meta.profile.key}.directory`;\n\nexport const SPACE_TYPE = 'org.dxos.type.space';\n\n/**\n * Type tag and subject literal for the per-space virtual Home node. Used as both the\n * graph node `type` and its `data` (subject) so a single constant identifies the node\n * at the graph layer and at the article surface filter layer. The associated {@link Space}\n * is on `properties.space`.\n */\nexport const SPACE_HOME_NODE_TYPE = 'org.dxos.space.home';\n\n/** Type for the per-space virtual \"Settings\" section. Single source of truth is `AppNodeMatcher.SETTINGS_SECTION_TYPE`. */\nexport const SETTINGS_SECTION_TYPE = AppNodeMatcher.SETTINGS_SECTION_TYPE;\n\n/** Node id (local segment) for the per-space virtual \"Settings\" section. */\nexport const SETTINGS_SECTION_ID = 'settings';\n\n/** Key for the Expando that stores cross-space ordering (must stay stable for persisted data). */\nexport const SHARED = 'shared-spaces';\n\nexport type SpacePluginOptions = {\n /**\n * Origin used for shareable links (object copy-link and invitation base).\n * Defaults to window.location.origin.\n */\n shareableLinkOrigin?: string;\n\n /**\n * Path appended to shareableLinkOrigin to form the invitation base URL.\n * Defaults to '/'.\n */\n invitationPath?: string;\n\n /**\n * Query parameter name for the invitation code.\n */\n invitationProp?: string;\n\n /**\n * Whether to send observability events.\n */\n observability?: boolean;\n};\n\nexport type ObjectViewerProps = {\n lastSeen: number;\n currentlyAttended: boolean;\n};\n\nexport type ObjectId = string;\n\nexport type PluginState = {\n /**\n * Which objects are currently being viewed by which peers.\n */\n viewersByObject: Record<ObjectId, ComplexMap<PublicKey, ObjectViewerProps>>;\n\n /**\n * Which peers are currently viewing which objects.\n */\n viewersByIdentity: ComplexMap<PublicKey, Set<ObjectId>>;\n\n /**\n * Object that was linked to directly but not found and is being awaited.\n */\n awaiting: string | undefined;\n\n /**\n * Cached space names, used when spaces are closed or loading.\n */\n spaceNames: Record<string, string>;\n\n /**\n * Which spaces have an SDK migration running currently.\n */\n // TODO(wittjosiah): Factor out to sdk. Migration running should probably be a space state.\n sdkMigrationRunning: Record<string, boolean>;\n\n /**\n * Whether or not the user can navigate to collections in the graph.\n * Determined by whether or not there is an available plugin that can render a collection.\n */\n navigableCollections: boolean;\n\n /**\n * Tracks whether setting edge replication as default has been run on spaces.\n */\n // TODO(wittjosiah): Systematic way to handle migrations of state outside of spaces.\n enabledEdgeReplication: boolean;\n};\n\n// TODO(wittjosiah): Reconcile with graph export serializers.\n\nexport type SerializerMap = Record<string, TypedObjectSerializer>;\n\nexport interface TypedObjectSerializer<T extends Obj.Unknown = Obj.Unknown> {\n serialize(params: { object: T }): Promise<string>;\n\n /**\n * @param params.content\n * @param params.space Space to use for deserializing schema references.\n * @param params.newId Generate new ID for deserialized object.\n */\n deserialize(params: { content: string; db: Database.Database; newId?: boolean }): Promise<T>;\n}\n\n/**\n * Result of creating and adding an object.\n */\nexport type CreateObjectResult = {\n id: string;\n subject: readonly string[];\n object: Obj.Unknown;\n};\n\n/**\n * Factory function that creates an object and adds it to a target (database or collection).\n * Returns an Effect that resolves to the created object result with navigation subject.\n */\nexport type CreateObject = (\n props: any,\n options: {\n db: Database.Database;\n target: Database.Database | Collection.Collection;\n targetNodeId?: string;\n },\n) => Effect.Effect<CreateObjectResult, Error, Capability.Service | Operation.Service>;\n\n// TODO(burdon): Move to FormatEnum or SDK.\nexport const IconAnnotationId = Symbol.for('@dxos/plugin-space/annotation/Icon');\nexport const HueAnnotationId = Symbol.for('@dxos/plugin-space/annotation/Hue');\n\n// TOOD(burdon): Use SpacePropertiesSchema.\nexport const SpaceForm = Schema.Struct({\n name: Schema.optional(Schema.String.annotations({ title: 'Name' })),\n icon: Schema.optional(Schema.String.annotations({ title: 'Icon', [IconAnnotationId]: true })),\n hue: Schema.optional(Schema.String.annotations({ title: 'Color', [HueAnnotationId]: true })),\n edgeReplication: Schema.optional(Schema.Boolean.annotations({ title: 'Enable EDGE Replication' })),\n});\n", "//\n// Copyright 2023 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nexport const Settings = Schema.mutable(\n Schema.Struct({\n showHidden: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Show hidden types',\n description: 'Include types annotated as hidden (e.g. Tag, View, Feed) in the database section.',\n }),\n ),\n }),\n);\n\nexport interface Settings extends Schema.Schema.Type<typeof Settings> {}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Schema", "Capability", "meta", "SpaceCapabilities", "Settings", "make", "profile", "key", "StateSchema", "mutable", "Struct", "spaceNames", "Record", "String", "value", "enabledEdgeReplication", "Boolean", "State", "EphemeralState", "SettingsSection", "OnCreateSpace", "OnTypeAdded", "Repair", "CreateObjectEntry", "ActivationEvent", "AppActivationEvents", "meta", "SpaceEvents", "StateReady", "createStateEvent", "profile", "key", "SetupSettingsPanel", "make", "PersonalSpaceReady", "SpaceCreated", "TypeAdded", "TypeOptions", "TypeInputOptionsAnnotation", "TypeInputOptionsAnnotationId", "Surface", "SpaceHomeContent", "makeType", "SpaceHomePinBottom", "Prompts", "Schema", "AppNodeMatcher", "meta", "Schema", "Settings", "mutable", "Struct", "showHidden", "optional", "Boolean", "annotations", "title", "description", "SPACE_DIRECTORY_HANDLE", "meta", "profile", "key", "SPACE_TYPE", "SPACE_HOME_NODE_TYPE", "SETTINGS_SECTION_TYPE", "AppNodeMatcher", "SETTINGS_SECTION_ID", "SHARED", "IconAnnotationId", "Symbol", "for", "HueAnnotationId", "SpaceForm", "Struct", "name", "optional", "String", "annotations", "title", "icon", "hue", "edgeReplication", "Boolean"]
|
|
7
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SpaceForm
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-F5KLUP2P.mjs";
|
|
4
4
|
|
|
5
5
|
// src/operations/definitions.ts
|
|
6
6
|
import * as Schema from "effect/Schema";
|
|
@@ -8,7 +8,7 @@ import { Capability, Plugin } from "@dxos/app-framework";
|
|
|
8
8
|
import { SpaceSchema } from "@dxos/client/echo";
|
|
9
9
|
import { CancellableInvitationObservable, Invitation } from "@dxos/client/invitations";
|
|
10
10
|
import { Operation } from "@dxos/compute";
|
|
11
|
-
import { Collection, Database, Entity, Obj, QueryAST, Type, View
|
|
11
|
+
import { Collection, Database, DXN, Entity, Obj, QueryAST, Type, View } from "@dxos/echo";
|
|
12
12
|
import { SpaceArchive } from "@dxos/protocols/proto/dxos/client/services";
|
|
13
13
|
import { meta } from "#meta";
|
|
14
14
|
var COLLECTION_OPERATION = "org.dxos.plugin.collection.operation";
|
|
@@ -177,7 +177,6 @@ var makeKey = (name) => DXN.make(`${meta.profile.key}.operation.${name}`);
|
|
|
177
177
|
target: Schema.Union(Database.Database, Type.getSchema(Collection.Collection)).annotations({
|
|
178
178
|
description: "The database or collection to add to."
|
|
179
179
|
}),
|
|
180
|
-
hidden: Schema.optional(Schema.Boolean),
|
|
181
180
|
targetNodeId: Schema.optional(Schema.String.annotations({
|
|
182
181
|
description: "Qualified graph node ID of the target collection."
|
|
183
182
|
}))
|
|
@@ -570,4 +569,4 @@ export {
|
|
|
570
569
|
CollectionOperation,
|
|
571
570
|
SpaceOperation
|
|
572
571
|
};
|
|
573
|
-
//# sourceMappingURL=chunk-
|
|
572
|
+
//# sourceMappingURL=chunk-LMUG6PEJ.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/operations/definitions.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Capability, Plugin } from '@dxos/app-framework';\nimport { SpaceSchema } from '@dxos/client/echo';\nimport { CancellableInvitationObservable, Invitation } from '@dxos/client/invitations';\nimport { Operation } from '@dxos/compute';\nimport { Collection, Database, DXN, Entity, Obj, QueryAST, Type, View } from '@dxos/echo';\nimport { SpaceArchive } from '@dxos/protocols/proto/dxos/client/services';\n\nimport { meta } from '#meta';\n\nimport { SpaceForm } from '../types';\n\nconst COLLECTION_OPERATION = 'org.dxos.plugin.collection.operation';\n\nexport namespace CollectionOperation {\n export const Create = Operation.make({\n meta: { key: DXN.make(`${COLLECTION_OPERATION}.create`), name: 'Create Collection', icon: 'ph--folder--regular' },\n services: [Capability.Service],\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: Type.getSchema(Collection.Collection),\n }),\n });\n}\n\nconst makeKey = (name: string) => DXN.make(`${meta.profile.key}.operation.${name}`);\n\n/**\n * Operations for the Space plugin.\n */\nexport namespace SpaceOperation {\n export const Create = Operation.make({\n meta: {\n key: makeKey('create'),\n name: 'Create Space',\n description: 'Create a new space.',\n icon: 'ph--plus--regular',\n },\n services: [Capability.Service, Plugin.Service],\n input: SpaceForm,\n output: Schema.Struct({\n id: Schema.String,\n subject: Schema.Array(Schema.String),\n space: SpaceSchema,\n }),\n });\n\n export const Join = Operation.make({\n meta: {\n key: makeKey('join'),\n name: 'Join Space',\n description: 'Join a space via invitation.',\n icon: 'ph--sign-in--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n invitationCode: Schema.optional(Schema.String),\n onDone: Schema.optional(Schema.Any),\n }),\n output: Schema.Void,\n });\n\n export const Open = Operation.make({\n meta: {\n key: makeKey('open'),\n name: 'Open Space',\n description: 'Open a space.',\n icon: 'ph--arrow-square-out--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n space: SpaceSchema,\n }),\n output: Schema.Void,\n });\n\n export const Close = Operation.make({\n meta: {\n key: makeKey('close'),\n name: 'Close Space',\n description: 'Close a space.',\n icon: 'ph--x-circle--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n space: SpaceSchema,\n }),\n output: Schema.Void,\n });\n\n export const Delete = Operation.make({\n meta: {\n key: makeKey('delete'),\n name: 'Delete Space',\n description: 'Delete a space. The deletion replicates to all of your devices.',\n icon: 'ph--trash--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n space: SpaceSchema,\n }),\n output: Schema.Void,\n });\n\n export const Share = Operation.make({\n meta: {\n key: makeKey('share'),\n name: 'Share Space',\n description: 'Share a space.',\n icon: 'ph--share-network--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n space: SpaceSchema,\n type: Schema.Enums(Invitation.Type),\n authMethod: Schema.Enums(Invitation.AuthMethod),\n multiUse: Schema.Boolean,\n target: Schema.optional(Schema.String),\n }),\n output: Schema.instanceOf(CancellableInvitationObservable),\n });\n\n export const OpenSettings = Operation.make({\n meta: {\n key: makeKey('openSettings'),\n name: 'Open Space Settings',\n description: 'Open space settings.',\n icon: 'ph--gear--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n space: SpaceSchema,\n }),\n output: Schema.Void,\n });\n\n export const WaitForObject = Operation.make({\n meta: {\n key: makeKey('waitForObject'),\n name: 'Wait For Object',\n description: 'Wait for an object to be available.',\n icon: 'ph--clock-countdown--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n id: Schema.optional(Schema.String),\n }),\n output: Schema.Void,\n });\n\n export const AddObject = Operation.make({\n meta: {\n key: makeKey('addObject'),\n name: 'Add Object',\n description: 'Add an object to a space.',\n icon: 'ph--plus--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n object: Obj.Unknown.annotations({ description: 'The object to add.' }),\n target: Schema.Union(Database.Database, Type.getSchema(Collection.Collection)).annotations({\n description: 'The database or collection to add to.',\n }),\n targetNodeId: Schema.optional(\n Schema.String.annotations({ description: 'Qualified graph node ID of the target collection.' }),\n ),\n }),\n output: Schema.Struct({\n id: Schema.String,\n subject: Schema.Array(Schema.String),\n object: Obj.Unknown,\n }),\n });\n\n // TODO(wittjosiah): Rename `objects` to `entities` (covers objects, relations, and persisted types).\n export const RemoveObjectsOutput = Schema.Struct({\n objects: Schema.Array(Entity.Unknown).annotations({ description: 'The removed entities.' }),\n parentCollection: Type.getSchema(Collection.Collection).annotations({\n description: 'The collection removed from.',\n }),\n indices: Schema.Array(Schema.Number).annotations({ description: 'The indices the objects were at.' }),\n wasActive: Schema.Array(Schema.String).annotations({\n description: 'IDs of objects that were active before removal.',\n }),\n });\n\n export type RemoveObjectsOutput = Schema.Schema.Type<typeof RemoveObjectsOutput>;\n\n export const RemoveObjects = Operation.make({\n meta: {\n key: makeKey('removeObjects'),\n name: 'Remove Objects',\n description: 'Remove entities (objects, relations, or persisted types) from a space.',\n icon: 'ph--trash--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n objects: Schema.Array(Entity.Unknown).annotations({ description: 'The entities to remove.' }),\n target: Schema.optional(Type.getSchema(Collection.Collection)).annotations({\n description: 'The collection to remove from.',\n }),\n }),\n output: RemoveObjectsOutput,\n });\n\n export const DeleteFieldOutput = Schema.Struct({\n field: View.FieldSchema.annotations({ description: 'The deleted field schema.' }),\n // TODO(wittjosiah): This creates a type error with PropertySchema.\n props: Schema.Any.annotations({ description: 'The deleted field properties.' }),\n index: Schema.Number.annotations({ description: 'The index the field was at.' }),\n });\n\n export type DeleteFieldOutput = Schema.Schema.Type<typeof DeleteFieldOutput>;\n\n export const DeleteField = Operation.make({\n meta: {\n key: makeKey('deleteField'),\n name: 'Delete Field',\n description: 'Delete a field from a view.',\n icon: 'ph--minus-circle--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n view: Type.getSchema(View.View).annotations({ description: 'The view to delete the field from.' }),\n fieldId: Schema.String,\n }),\n output: DeleteFieldOutput,\n });\n\n export const OpenCreateObject = Operation.make({\n meta: {\n key: makeKey('openCreateObject'),\n name: 'Open Create Object Dialog',\n description: 'Open the create object dialog.',\n icon: 'ph--plus--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n target: Schema.Union(Database.Database, Type.getSchema(Collection.Collection)).annotations({\n description: 'The database or collection to create in.',\n }),\n views: Schema.optional(Schema.Boolean),\n typename: Schema.optional(Schema.String),\n initialFormValues: Schema.optional(Schema.Any),\n navigable: Schema.optional(Schema.Boolean),\n targetNodeId: Schema.optional(\n Schema.String.annotations({ description: 'Qualified graph node ID of the target collection.' }),\n ),\n // TODO(wittjosiah): This is a function, is there a better way to handle this?\n onCreateObject: Schema.optional(Schema.Any),\n }),\n output: Schema.Void,\n });\n\n export const OpenCreateSpace = Operation.make({\n meta: {\n key: makeKey('openCreateSpace'),\n name: 'Open Create Space Dialog',\n description: 'Open the create space dialog.',\n icon: 'ph--plus--regular',\n },\n services: [Capability.Service],\n input: Schema.Void,\n output: Schema.Void,\n });\n\n export const OpenImportSpace = Operation.make({\n meta: {\n key: makeKey('openImportSpace'),\n name: 'Open Import Space Dialog',\n description: 'Open the import space dialog to create a new space from a backup.',\n icon: 'ph--download--regular',\n },\n services: [Capability.Service],\n input: Schema.Void,\n output: Schema.Void,\n });\n\n export const ImportSpace = Operation.make({\n meta: {\n key: makeKey('importSpace'),\n name: 'Import Space',\n description: 'Import a space archive as a new space.',\n icon: 'ph--upload--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n archive: Schema.Struct({\n filename: Schema.String,\n contents: Schema.instanceOf(Uint8Array),\n }),\n tags: Schema.Array(Schema.String).pipe(Schema.optional),\n }),\n output: Schema.Struct({\n space: SpaceSchema,\n }),\n });\n\n export const ExportSpace = Operation.make({\n meta: {\n key: makeKey('exportSpace'),\n name: 'Export Space',\n description: 'Export a space as a backup and download the archive.',\n icon: 'ph--download--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n space: SpaceSchema,\n format: Schema.Enums(SpaceArchive.Format),\n }),\n output: Schema.Void,\n });\n\n export const Migrate = Operation.make({\n meta: {\n key: makeKey('migrate'),\n name: 'Migrate Space',\n description: 'Migrate a space to a new version.',\n icon: 'ph--arrows-clockwise--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n space: SpaceSchema,\n version: Schema.optional(Schema.String),\n }),\n output: Schema.Boolean,\n });\n\n export const Snapshot = Operation.make({\n meta: {\n key: makeKey('snapshot'),\n name: 'Create Snapshot',\n description: 'Create a snapshot of the space.',\n icon: 'ph--camera--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n db: Database.Database,\n query: QueryAST.Query.pipe(Schema.optional),\n }),\n output: Schema.Struct({\n snapshot: Schema.instanceOf(Blob),\n }),\n });\n\n export const Rename = Operation.make({\n meta: {\n key: makeKey('rename'),\n name: 'Rename Space',\n description: 'Rename a space.',\n icon: 'ph--pencil-simple--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n space: SpaceSchema,\n caller: Schema.optional(Schema.String),\n }),\n output: Schema.Void,\n });\n\n export const RenameObject = Operation.make({\n meta: {\n key: makeKey('renameObject'),\n name: 'Rename Object',\n description: 'Rename an entity (object, relation, or persisted type).',\n icon: 'ph--pencil-simple--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n object: Entity.Unknown,\n caller: Schema.optional(Schema.String),\n }),\n output: Schema.Void,\n });\n\n export const OpenMembers = Operation.make({\n meta: {\n key: makeKey('openMembers'),\n name: 'Open Members',\n description: 'Open the members panel for a space.',\n icon: 'ph--users--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n space: SpaceSchema,\n }),\n output: Schema.Void,\n });\n\n export const GetShareLink = Operation.make({\n meta: {\n key: makeKey('getShareLink'),\n name: 'Get Share Link',\n description: 'Get a shareable link for a space.',\n icon: 'ph--link--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n space: SpaceSchema,\n target: Schema.optional(Schema.String),\n copyToClipboard: Schema.optional(Schema.Boolean),\n }),\n output: Schema.String,\n });\n\n export const StoredSchemaForm = Schema.Struct({\n name: Schema.optional(Schema.String),\n });\n\n export const AddType = Operation.make({\n meta: {\n key: makeKey('addType'),\n name: 'Add Type',\n description: 'Add a type to the space.',\n icon: 'ph--code--regular',\n },\n services: [Capability.Service, Plugin.Service],\n input: Schema.Struct({\n db: Database.Database,\n name: Schema.optional(Schema.String),\n typename: Schema.optional(Schema.String),\n version: Schema.optional(Schema.String),\n // TODO(wittjosiah): Schema for type?\n type: Schema.Any,\n show: Schema.optional(Schema.Boolean),\n }),\n output: Schema.Struct({\n id: Schema.String,\n object: Type.getSchema(Type.Type),\n }),\n });\n\n export const AddRelation = Operation.make({\n meta: {\n key: makeKey('addRelation'),\n name: 'Add Relation',\n description: 'Add a relation between objects.',\n icon: 'ph--link--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n db: Database.Database,\n // TODO(wittjosiah): Relation schema.\n schema: Schema.Any,\n source: Obj.Unknown,\n target: Obj.Unknown,\n // TODO(wittjosiah): Type based on relation schema.\n fields: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Any })),\n }),\n output: Schema.Struct({\n relation: Schema.Any,\n }),\n });\n\n // TODO(wittjosiah): This appears to be unused.\n export const DuplicateObject = Operation.make({\n meta: {\n key: makeKey('duplicateObject'),\n name: 'Duplicate Object',\n description: 'Duplicate an object.',\n icon: 'ph--file--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n object: Obj.Unknown,\n target: Schema.Union(Database.Database, Type.getSchema(Collection.Collection)),\n }),\n output: Schema.Void,\n });\n\n /**\n * Restore a deleted field to a view (inverse of DeleteField).\n */\n export const RestoreField = Operation.make({\n meta: {\n key: makeKey('restoreField'),\n name: 'Restore Field',\n description: 'Restore a deleted field to a view.',\n icon: 'ph--clock-counter-clockwise--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n view: Type.getSchema(View.View).annotations({ description: 'The view to restore the field to.' }),\n field: View.FieldSchema.annotations({ description: 'The field schema to restore.' }),\n // TODO(wittjosiah): This creates a type error with PropertySchema.\n props: Schema.Any.annotations({ description: 'The field properties to restore.' }),\n index: Schema.Number.annotations({ description: 'The index to restore the field at.' }),\n }),\n output: Schema.Void,\n });\n\n /**\n * Restore deleted entities to a space (inverse of RemoveObjects).\n */\n export const RestoreObjects = Operation.make({\n meta: {\n key: makeKey('restoreObjects'),\n name: 'Restore Objects',\n description: 'Restore deleted entities to a space.',\n icon: 'ph--clock-counter-clockwise--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n objects: Schema.Array(Entity.Unknown).annotations({ description: 'The entities to restore.' }),\n parentCollection: Type.getSchema(Collection.Collection).annotations({\n description: 'The collection to restore to.',\n }),\n indices: Schema.Array(Schema.Number).annotations({ description: 'The indices to restore at.' }),\n wasActive: Schema.Array(Schema.String).annotations({\n description: 'IDs of objects that were active before deletion.',\n }),\n }),\n output: Schema.Void,\n });\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Schema", "Capability", "Plugin", "SpaceSchema", "CancellableInvitationObservable", "Invitation", "Operation", "Collection", "Database", "DXN", "Entity", "Obj", "QueryAST", "Type", "View", "SpaceArchive", "meta", "COLLECTION_OPERATION", "CollectionOperation", "Create", "Operation", "make", "meta", "key", "DXN", "name", "icon", "services", "Capability", "Service", "input", "Struct", "optional", "String", "output", "object", "Type", "getSchema", "Collection", "makeKey", "profile", "SpaceOperation", "description", "Plugin", "SpaceForm", "id", "subject", "Array", "space", "SpaceSchema", "Join", "invitationCode", "onDone", "Any", "Void", "Open", "Close", "Delete", "Share", "type", "Enums", "Invitation", "authMethod", "AuthMethod", "multiUse", "Boolean", "target", "instanceOf", "CancellableInvitationObservable", "OpenSettings", "WaitForObject", "AddObject", "Obj", "Unknown", "annotations", "Union", "Database", "targetNodeId", "RemoveObjectsOutput", "objects", "Entity", "parentCollection", "indices", "Number", "wasActive", "RemoveObjects", "DeleteFieldOutput", "field", "View", "FieldSchema", "props", "index", "DeleteField", "view", "fieldId", "OpenCreateObject", "views", "typename", "initialFormValues", "navigable", "onCreateObject", "OpenCreateSpace", "OpenImportSpace", "ImportSpace", "archive", "filename", "contents", "Uint8Array", "tags", "pipe", "ExportSpace", "format", "SpaceArchive", "Format", "Migrate", "version", "Snapshot", "db", "query", "QueryAST", "Query", "snapshot", "Blob", "Rename", "caller", "RenameObject", "OpenMembers", "GetShareLink", "copyToClipboard", "StoredSchemaForm", "AddType", "show", "AddRelation", "schema", "source", "fields", "Record", "value", "relation", "DuplicateObject", "RestoreField", "RestoreObjects"]
|
|
7
|
+
}
|
|
@@ -6,8 +6,9 @@ import { Obj } from "@dxos/echo";
|
|
|
6
6
|
import { PublicKey } from "@dxos/react-client";
|
|
7
7
|
import { useMembers, useSpace } from "@dxos/react-client/echo";
|
|
8
8
|
import { useIdentity } from "@dxos/react-client/halo";
|
|
9
|
-
import { Avatar,
|
|
9
|
+
import { Avatar, Popover, Tooltip, useDefaultValue, useTranslation } from "@dxos/react-ui";
|
|
10
10
|
import { AttentionGlyph, useAttention } from "@dxos/react-ui-attention";
|
|
11
|
+
import { Listbox } from "@dxos/react-ui-list";
|
|
11
12
|
import { ComplexMap, keyToFallback } from "@dxos/util";
|
|
12
13
|
import { meta } from "#meta";
|
|
13
14
|
import { SpaceCapabilities } from "#types";
|
|
@@ -81,8 +82,11 @@ var FullPresence = (props) => {
|
|
|
81
82
|
side: "bottom"
|
|
82
83
|
}, /* @__PURE__ */ React.createElement(Popover.Arrow, null), /* @__PURE__ */ React.createElement(Popover.Viewport, {
|
|
83
84
|
classNames: "max-h-56"
|
|
84
|
-
}, /* @__PURE__ */ React.createElement(
|
|
85
|
+
}, /* @__PURE__ */ React.createElement(Listbox.Root, null, /* @__PURE__ */ React.createElement(Listbox.Content, {
|
|
86
|
+
"aria-label": "members"
|
|
87
|
+
}, members.map((member) => /* @__PURE__ */ React.createElement(Listbox.Item, {
|
|
85
88
|
key: member.identity.identityKey.toHex(),
|
|
89
|
+
id: member.identity.identityKey.toHex(),
|
|
86
90
|
classNames: "flex gap-2 items-center cursor-pointer mb-2",
|
|
87
91
|
onClick: () => onMemberClick?.(member),
|
|
88
92
|
"data-testid": "identity-list-item"
|
|
@@ -91,7 +95,7 @@ var FullPresence = (props) => {
|
|
|
91
95
|
size,
|
|
92
96
|
showName: true,
|
|
93
97
|
match: member.currentlyAttended
|
|
94
|
-
})))))))));
|
|
98
|
+
}))))))))));
|
|
95
99
|
};
|
|
96
100
|
var PresenceAvatar = /* @__PURE__ */ forwardRef(({ identity, showName, match, index, onClick, size }, forwardedRef) => {
|
|
97
101
|
const status = match ? "current" : "active";
|
|
@@ -160,4 +164,4 @@ export {
|
|
|
160
164
|
SpacePresence,
|
|
161
165
|
SmallPresenceLive
|
|
162
166
|
};
|
|
163
|
-
//# sourceMappingURL=chunk-
|
|
167
|
+
//# sourceMappingURL=chunk-RAAHDTVF.mjs.map
|