@dxos/plugin-space 0.8.1 → 0.8.2-main.10c050d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/app-graph-builder-DCWUULKX.mjs +328 -0
- package/dist/lib/browser/app-graph-builder-DCWUULKX.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-DSF2U3A5.mjs → app-graph-serializer-MLU7XI2P.mjs} +10 -10
- package/dist/lib/browser/app-graph-serializer-MLU7XI2P.mjs.map +7 -0
- package/dist/lib/browser/{chunk-KVRYWFZU.mjs → chunk-3LN4LJN6.mjs} +3 -8
- package/dist/lib/{node-esm/chunk-PIYAWT5N.mjs.map → browser/chunk-3LN4LJN6.mjs.map} +3 -3
- package/dist/lib/browser/chunk-7Y4M7GXO.mjs +94 -0
- package/dist/lib/browser/chunk-7Y4M7GXO.mjs.map +7 -0
- package/dist/lib/browser/{chunk-LO5UL6RU.mjs → chunk-N5QMRLKI.mjs} +78 -173
- package/dist/lib/browser/chunk-N5QMRLKI.mjs.map +7 -0
- package/dist/lib/browser/chunk-Q4BTFH2P.mjs +1900 -0
- package/dist/lib/browser/chunk-Q4BTFH2P.mjs.map +7 -0
- package/dist/lib/browser/{chunk-5BDV575R.mjs → chunk-VEBKN45O.mjs} +21 -10
- package/dist/lib/browser/chunk-VEBKN45O.mjs.map +7 -0
- package/dist/lib/browser/chunk-W46VVHFM.mjs +288 -0
- package/dist/lib/browser/chunk-W46VVHFM.mjs.map +7 -0
- package/dist/lib/browser/{identity-created-JR7BNXFH.mjs → identity-created-O63SIYOF.mjs} +5 -5
- package/dist/lib/browser/identity-created-O63SIYOF.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +34 -54
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-RKYILWWQ.mjs → intent-resolver-KBF3YU6I.mjs} +116 -108
- package/dist/lib/browser/intent-resolver-KBF3YU6I.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-root-6H7NX2M2.mjs → react-root-PVKJE4EZ.mjs} +6 -5
- package/dist/lib/browser/{react-surface-7AGLOVMK.mjs → react-surface-252P4NCK.mjs} +121 -54
- package/dist/lib/browser/react-surface-252P4NCK.mjs.map +7 -0
- package/dist/lib/browser/schema-defs-JMN74RNK.mjs +26 -0
- package/dist/lib/browser/schema-defs-JMN74RNK.mjs.map +7 -0
- package/dist/lib/browser/{schema-tools-YAXPRIXP.mjs → schema-tools-JIEMHUXV.mjs} +26 -26
- package/dist/lib/browser/schema-tools-JIEMHUXV.mjs.map +7 -0
- package/dist/lib/browser/{settings-PJPTJUPE.mjs → settings-2IN2WLUK.mjs} +4 -4
- package/dist/lib/browser/settings-2IN2WLUK.mjs.map +7 -0
- package/dist/lib/browser/{spaces-ready-BSSP7HHG.mjs → spaces-ready-L4QAGTDE.mjs} +20 -19
- package/dist/lib/browser/spaces-ready-L4QAGTDE.mjs.map +7 -0
- package/dist/lib/browser/{state-X7VLCC6E.mjs → state-6HOSHLIN.mjs} +3 -5
- package/dist/lib/browser/state-6HOSHLIN.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +7 -7
- package/dist/lib/node/app-graph-builder-WC445X77.cjs +328 -0
- package/dist/lib/node/app-graph-builder-WC445X77.cjs.map +7 -0
- package/dist/lib/node/{app-graph-serializer-JELGJUAY.cjs → app-graph-serializer-UPQOQVMJ.cjs} +22 -22
- package/dist/lib/node/app-graph-serializer-UPQOQVMJ.cjs.map +7 -0
- package/dist/lib/node/chunk-5WLAXYE3.cjs +125 -0
- package/dist/lib/node/chunk-5WLAXYE3.cjs.map +7 -0
- package/dist/lib/node/{chunk-IKIDS6XF.cjs → chunk-7GQGM4ZF.cjs} +7 -13
- package/dist/lib/node/{chunk-IKIDS6XF.cjs.map → chunk-7GQGM4ZF.cjs.map} +3 -3
- package/dist/lib/node/{chunk-TUZWEPGX.cjs → chunk-COQYISES.cjs} +100 -198
- package/dist/lib/node/chunk-COQYISES.cjs.map +7 -0
- package/dist/lib/node/{chunk-PU2EYH4E.cjs → chunk-DXL5TDFP.cjs} +25 -14
- package/dist/lib/node/chunk-DXL5TDFP.cjs.map +7 -0
- package/dist/lib/node/chunk-FXHI7JNY.cjs +315 -0
- package/dist/lib/node/chunk-FXHI7JNY.cjs.map +7 -0
- package/dist/lib/node/chunk-Q3YZEYZT.cjs +1904 -0
- package/dist/lib/node/chunk-Q3YZEYZT.cjs.map +7 -0
- package/dist/lib/node/{identity-created-XU4HFV2T.cjs → identity-created-UXEAUGC7.cjs} +7 -7
- package/dist/lib/node/identity-created-UXEAUGC7.cjs.map +7 -0
- package/dist/lib/node/index.cjs +83 -105
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/{intent-resolver-VJ7YV74L.cjs → intent-resolver-SVFJKUH7.cjs} +161 -152
- package/dist/lib/node/intent-resolver-SVFJKUH7.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-root-TEL5RW3N.cjs → react-root-DDPDUMCG.cjs} +11 -10
- package/dist/lib/node/{react-root-TEL5RW3N.cjs.map → react-root-DDPDUMCG.cjs.map} +1 -1
- package/dist/lib/node/{react-surface-2H3S5TY5.cjs → react-surface-JUIU37BX.cjs} +144 -77
- package/dist/lib/node/react-surface-JUIU37BX.cjs.map +7 -0
- package/dist/lib/node/{schema-PPJ5BZ3A.cjs → schema-defs-XLFBG3XK.cjs} +14 -12
- package/dist/lib/node/schema-defs-XLFBG3XK.cjs.map +7 -0
- package/dist/lib/node/{schema-tools-BLIMOZYY.cjs → schema-tools-ZG6Z2QRC.cjs} +32 -32
- package/dist/lib/node/schema-tools-ZG6Z2QRC.cjs.map +7 -0
- package/dist/lib/node/{settings-WVFP2UEP.cjs → settings-FOH7EB5C.cjs} +7 -7
- package/dist/lib/node/settings-FOH7EB5C.cjs.map +7 -0
- package/dist/lib/node/{spaces-ready-7DNZSUOG.cjs → spaces-ready-VXQYCBII.cjs} +27 -26
- package/dist/lib/node/spaces-ready-VXQYCBII.cjs.map +7 -0
- package/dist/lib/node/{state-5KX6WBJH.cjs → state-ZT3MTZXB.cjs} +7 -9
- package/dist/lib/node/state-ZT3MTZXB.cjs.map +7 -0
- package/dist/lib/node/types/index.cjs +15 -15
- package/dist/lib/node/types/index.cjs.map +1 -1
- package/dist/lib/node-esm/app-graph-builder-E7CCGPQJ.mjs +329 -0
- package/dist/lib/node-esm/app-graph-builder-E7CCGPQJ.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-FXONFKOE.mjs → app-graph-serializer-UCMSLPIA.mjs} +10 -10
- package/dist/lib/node-esm/app-graph-serializer-UCMSLPIA.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-PIYAWT5N.mjs → chunk-4X4Y63ND.mjs} +3 -8
- package/dist/lib/{browser/chunk-KVRYWFZU.mjs.map → node-esm/chunk-4X4Y63ND.mjs.map} +3 -3
- package/dist/lib/node-esm/chunk-FTELJGEG.mjs +289 -0
- package/dist/lib/node-esm/chunk-FTELJGEG.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-GH2FGJXH.mjs +96 -0
- package/dist/lib/node-esm/chunk-GH2FGJXH.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-HL2Z2GNW.mjs +1901 -0
- package/dist/lib/node-esm/chunk-HL2Z2GNW.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-3ZOUV4DF.mjs → chunk-OSPEGYX3.mjs} +21 -10
- package/dist/lib/node-esm/chunk-OSPEGYX3.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-ZGLK25WQ.mjs → chunk-XAZNQ3QN.mjs} +78 -173
- package/dist/lib/node-esm/chunk-XAZNQ3QN.mjs.map +7 -0
- package/dist/lib/node-esm/{identity-created-WJKAS2PV.mjs → identity-created-ZECO4NH3.mjs} +5 -5
- package/dist/lib/node-esm/identity-created-ZECO4NH3.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +34 -54
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-ZFNSA4CM.mjs → intent-resolver-K2UDBF2R.mjs} +116 -108
- package/dist/lib/node-esm/intent-resolver-K2UDBF2R.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-PRBJMWLQ.mjs → react-root-6F7B3OVO.mjs} +6 -5
- package/dist/lib/{browser/react-root-6H7NX2M2.mjs.map → node-esm/react-root-6F7B3OVO.mjs.map} +1 -1
- package/dist/lib/node-esm/{react-surface-RCZG2PNF.mjs → react-surface-NP3Y6BNZ.mjs} +121 -54
- package/dist/lib/node-esm/react-surface-NP3Y6BNZ.mjs.map +7 -0
- package/dist/lib/node-esm/schema-defs-QZJS6UXN.mjs +27 -0
- package/dist/lib/node-esm/schema-defs-QZJS6UXN.mjs.map +7 -0
- package/dist/lib/node-esm/{schema-tools-IU7EX5A5.mjs → schema-tools-2Y4D42PD.mjs} +26 -26
- package/dist/lib/node-esm/schema-tools-2Y4D42PD.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-FJZPC2TV.mjs → settings-Q4XDFSYD.mjs} +4 -4
- package/dist/lib/node-esm/settings-Q4XDFSYD.mjs.map +7 -0
- package/dist/lib/node-esm/{spaces-ready-7X5PGB2V.mjs → spaces-ready-JHKPD4PH.mjs} +20 -19
- package/dist/lib/node-esm/spaces-ready-JHKPD4PH.mjs.map +7 -0
- package/dist/lib/node-esm/{state-Z6E2YTNC.mjs → state-4ATRHSKA.mjs} +3 -5
- package/dist/lib/node-esm/state-4ATRHSKA.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +7 -7
- package/dist/types/src/SpacePlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +2 -179
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-serializer.d.ts +2 -2
- package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +0 -8
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/identity-created.d.ts +2 -2
- package/dist/types/src/capabilities/identity-created.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +9 -184
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +4 -3
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/schema-defs.d.ts +4 -0
- package/dist/types/src/capabilities/schema-defs.d.ts.map +1 -0
- package/dist/types/src/capabilities/schema-tools.d.ts +3 -3
- package/dist/types/src/capabilities/schema-tools.d.ts.map +1 -1
- package/dist/types/src/capabilities/spaces-ready.d.ts +2 -2
- package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
- package/dist/types/src/capabilities/state.d.ts +2 -2
- package/dist/types/src/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
- package/dist/types/src/components/CollectionMain.d.ts.map +1 -1
- package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +2 -2
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
- package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
- package/dist/types/src/components/MembersContainer.d.ts.map +1 -1
- package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/MenuFooter.d.ts +2 -2
- package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
- package/dist/types/src/components/{ObjectSettingsContainer → ObjectSettings}/AdvancedObjectSettings.d.ts +2 -2
- package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -0
- package/dist/types/src/components/{ObjectSettingsContainer → ObjectSettings}/BaseObjectSettings.d.ts +2 -2
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -0
- package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -0
- package/dist/types/src/components/{ObjectSettingsContainer → ObjectSettings}/ObjectSettingsContainer.d.ts +2 -2
- package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -0
- package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -0
- package/dist/types/src/components/PersistenceStatus.d.ts.map +1 -1
- package/dist/types/src/components/PopoverRenameObject.d.ts +2 -2
- package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
- package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
- package/dist/types/src/components/SchemaContainer.d.ts +13 -0
- package/dist/types/src/components/SchemaContainer.d.ts.map +1 -0
- package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
- package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
- package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts +0 -2
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +7 -0
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -0
- package/dist/types/src/components/SpaceSettings/index.d.ts +0 -1
- package/dist/types/src/components/SpaceSettings/index.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/InlineSyncStatus.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +1 -8
- package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/save-tracker.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/status.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +2 -3
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +2 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useActiveSpace.d.ts +4 -0
- package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -0
- package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +14 -0
- package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -0
- package/dist/types/src/hooks/usePath.d.ts +3 -2
- package/dist/types/src/hooks/usePath.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +3 -2
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +17 -242
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/collection.d.ts +9 -8
- package/dist/types/src/types/collection.d.ts.map +1 -1
- package/dist/types/src/types/index.d.ts +0 -1
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +173 -146
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +36 -20
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +54 -47
- package/src/SpacePlugin.tsx +11 -20
- package/src/capabilities/app-graph-builder.ts +377 -230
- package/src/capabilities/app-graph-serializer.ts +8 -8
- package/src/capabilities/capabilities.ts +0 -9
- package/src/capabilities/identity-created.ts +5 -5
- package/src/capabilities/index.ts +2 -2
- package/src/capabilities/intent-resolver.ts +107 -111
- package/src/capabilities/react-surface.tsx +111 -50
- package/src/capabilities/schema-defs.ts +30 -0
- package/src/capabilities/schema-tool.test.ts +2 -3
- package/src/capabilities/schema-tools.ts +29 -29
- package/src/capabilities/settings.ts +2 -2
- package/src/capabilities/spaces-ready.ts +17 -15
- package/src/capabilities/state.ts +3 -5
- package/src/components/AwaitingObject.tsx +1 -1
- package/src/components/CollectionMain.tsx +2 -5
- package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +4 -4
- package/src/components/CreateDialog/CreateObjectDialog.tsx +4 -4
- package/src/components/CreateDialog/CreateObjectPanel.tsx +3 -25
- package/src/components/CreateDialog/CreateSpaceDialog.tsx +6 -3
- package/src/components/MembersContainer.stories.tsx +1 -5
- package/src/components/MembersContainer.tsx +80 -54
- package/src/components/MenuFooter.tsx +2 -2
- package/src/components/{ObjectSettingsContainer → ObjectSettings}/AdvancedObjectSettings.tsx +4 -4
- package/src/components/{ObjectSettingsContainer → ObjectSettings}/BaseObjectSettings.tsx +2 -2
- package/src/components/{ObjectSettingsContainer → ObjectSettings}/ObjectSettingsContainer.tsx +4 -4
- package/src/components/PersistenceStatus.tsx +11 -14
- package/src/components/PopoverRenameObject.tsx +15 -9
- package/src/components/PopoverRenameSpace.tsx +9 -1
- package/src/components/SchemaContainer.tsx +59 -0
- package/src/components/SpacePluginSettings.tsx +27 -2
- package/src/components/SpacePresence.stories.tsx +1 -1
- package/src/components/SpacePresence.tsx +60 -65
- package/src/components/SpaceSettings/{SpacePropertiesForm.stories.tsx → SpaceSettingsContainer.stories.tsx} +6 -6
- package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +159 -39
- package/src/components/SpaceSettings/index.ts +0 -1
- package/src/components/SyncStatus/InlineSyncStatus.tsx +15 -24
- package/src/components/SyncStatus/SyncStatus.tsx +6 -69
- package/src/components/index.ts +2 -3
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useActiveSpace.ts +20 -0
- package/src/hooks/useInputSurfaceLookup.tsx +31 -0
- package/src/hooks/usePath.ts +9 -6
- package/src/index.ts +3 -2
- package/src/translations.ts +19 -7
- package/src/types/collection.ts +6 -4
- package/src/types/index.ts +0 -1
- package/src/types/types.ts +130 -101
- package/src/util.tsx +75 -172
- package/dist/lib/browser/app-graph-builder-GMFCSOLG.mjs +0 -315
- package/dist/lib/browser/app-graph-builder-GMFCSOLG.mjs.map +0 -7
- package/dist/lib/browser/app-graph-serializer-DSF2U3A5.mjs.map +0 -7
- package/dist/lib/browser/chunk-5BDV575R.mjs.map +0 -7
- package/dist/lib/browser/chunk-AYW4IDRT.mjs +0 -275
- package/dist/lib/browser/chunk-AYW4IDRT.mjs.map +0 -7
- package/dist/lib/browser/chunk-JZXWPMLA.mjs +0 -2081
- package/dist/lib/browser/chunk-JZXWPMLA.mjs.map +0 -7
- package/dist/lib/browser/chunk-LO5UL6RU.mjs.map +0 -7
- package/dist/lib/browser/identity-created-JR7BNXFH.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-RKYILWWQ.mjs.map +0 -7
- package/dist/lib/browser/react-surface-7AGLOVMK.mjs.map +0 -7
- package/dist/lib/browser/schema-FHTA26SW.mjs +0 -24
- package/dist/lib/browser/schema-FHTA26SW.mjs.map +0 -7
- package/dist/lib/browser/schema-tools-YAXPRIXP.mjs.map +0 -7
- package/dist/lib/browser/settings-PJPTJUPE.mjs.map +0 -7
- package/dist/lib/browser/spaces-ready-BSSP7HHG.mjs.map +0 -7
- package/dist/lib/browser/state-X7VLCC6E.mjs.map +0 -7
- package/dist/lib/node/app-graph-builder-DPY7AUZE.cjs +0 -318
- package/dist/lib/node/app-graph-builder-DPY7AUZE.cjs.map +0 -7
- package/dist/lib/node/app-graph-serializer-JELGJUAY.cjs.map +0 -7
- package/dist/lib/node/chunk-3GKCNADA.cjs +0 -2074
- package/dist/lib/node/chunk-3GKCNADA.cjs.map +0 -7
- package/dist/lib/node/chunk-PU2EYH4E.cjs.map +0 -7
- package/dist/lib/node/chunk-TUZWEPGX.cjs.map +0 -7
- package/dist/lib/node/chunk-WDEIFDTX.cjs +0 -300
- package/dist/lib/node/chunk-WDEIFDTX.cjs.map +0 -7
- package/dist/lib/node/identity-created-XU4HFV2T.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-VJ7YV74L.cjs.map +0 -7
- package/dist/lib/node/react-surface-2H3S5TY5.cjs.map +0 -7
- package/dist/lib/node/schema-PPJ5BZ3A.cjs.map +0 -7
- package/dist/lib/node/schema-tools-BLIMOZYY.cjs.map +0 -7
- package/dist/lib/node/settings-WVFP2UEP.cjs.map +0 -7
- package/dist/lib/node/spaces-ready-7DNZSUOG.cjs.map +0 -7
- package/dist/lib/node/state-5KX6WBJH.cjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-42IGWRPL.mjs +0 -316
- package/dist/lib/node-esm/app-graph-builder-42IGWRPL.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-serializer-FXONFKOE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-3ZOUV4DF.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-BEWBZ4Q4.mjs +0 -2082
- package/dist/lib/node-esm/chunk-BEWBZ4Q4.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-FC4UHDPL.mjs +0 -276
- package/dist/lib/node-esm/chunk-FC4UHDPL.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ZGLK25WQ.mjs.map +0 -7
- package/dist/lib/node-esm/identity-created-WJKAS2PV.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-ZFNSA4CM.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-RCZG2PNF.mjs.map +0 -7
- package/dist/lib/node-esm/schema-OUZKVYM5.mjs +0 -25
- package/dist/lib/node-esm/schema-OUZKVYM5.mjs.map +0 -7
- package/dist/lib/node-esm/schema-tools-IU7EX5A5.mjs.map +0 -7
- package/dist/lib/node-esm/settings-FJZPC2TV.mjs.map +0 -7
- package/dist/lib/node-esm/spaces-ready-7X5PGB2V.mjs.map +0 -7
- package/dist/lib/node-esm/state-Z6E2YTNC.mjs.map +0 -7
- package/dist/types/src/capabilities/schema.d.ts +0 -4
- package/dist/types/src/capabilities/schema.d.ts.map +0 -1
- package/dist/types/src/components/ObjectSettingsContainer/AdvancedObjectSettings.d.ts.map +0 -1
- package/dist/types/src/components/ObjectSettingsContainer/BaseObjectSettings.d.ts.map +0 -1
- package/dist/types/src/components/ObjectSettingsContainer/ForeignKeys.d.ts.map +0 -1
- package/dist/types/src/components/ObjectSettingsContainer/ObjectSettingsContainer.d.ts.map +0 -1
- package/dist/types/src/components/ObjectSettingsContainer/index.d.ts.map +0 -1
- package/dist/types/src/components/PopoverAddSpace.d.ts +0 -4
- package/dist/types/src/components/PopoverAddSpace.d.ts.map +0 -1
- package/dist/types/src/components/ShareSpaceButton.d.ts +0 -9
- package/dist/types/src/components/ShareSpaceButton.d.ts.map +0 -1
- package/dist/types/src/components/ShareSpaceButton.stories.d.ts +0 -10
- package/dist/types/src/components/ShareSpaceButton.stories.d.ts.map +0 -1
- package/dist/types/src/components/SpaceSettings/SpacePropertiesForm.d.ts +0 -7
- package/dist/types/src/components/SpaceSettings/SpacePropertiesForm.d.ts.map +0 -1
- package/dist/types/src/components/SpaceSettings/SpacePropertiesForm.stories.d.ts +0 -7
- package/dist/types/src/components/SpaceSettings/SpacePropertiesForm.stories.d.ts.map +0 -1
- package/dist/types/src/components/SyncStatus/Space.d.ts +0 -13
- package/dist/types/src/components/SyncStatus/Space.d.ts.map +0 -1
- package/dist/types/src/components/SyncStatus/SyncStatusDetail.stories.d.ts +0 -9
- package/dist/types/src/components/SyncStatus/SyncStatusDetail.stories.d.ts.map +0 -1
- package/dist/types/src/components/SyncStatus/sync-state.d.ts +0 -18
- package/dist/types/src/components/SyncStatus/sync-state.d.ts.map +0 -1
- package/dist/types/src/types/thread.d.ts +0 -128
- package/dist/types/src/types/thread.d.ts.map +0 -1
- package/src/capabilities/schema.ts +0 -27
- package/src/components/PopoverAddSpace.tsx +0 -46
- package/src/components/ShareSpaceButton.stories.tsx +0 -27
- package/src/components/ShareSpaceButton.tsx +0 -32
- package/src/components/SpaceSettings/SpacePropertiesForm.tsx +0 -136
- package/src/components/SyncStatus/Space.tsx +0 -133
- package/src/components/SyncStatus/SyncStatusDetail.stories.tsx +0 -89
- package/src/components/SyncStatus/sync-state.ts +0 -101
- package/src/types/thread.ts +0 -24
- /package/dist/lib/{node-esm/react-root-PRBJMWLQ.mjs.map → browser/react-root-PVKJE4EZ.mjs.map} +0 -0
- /package/dist/types/src/components/{ObjectSettingsContainer → ObjectSettings}/ForeignKeys.d.ts +0 -0
- /package/dist/types/src/components/{ObjectSettingsContainer → ObjectSettings}/index.d.ts +0 -0
- /package/src/components/{ObjectSettingsContainer → ObjectSettings}/ForeignKeys.tsx +0 -0
- /package/src/components/{ObjectSettingsContainer → ObjectSettings}/index.ts +0 -0
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getActiveSpace
|
|
3
|
+
} from "./chunk-7Y4M7GXO.mjs";
|
|
4
|
+
import {
|
|
5
|
+
SpaceCapabilities
|
|
6
|
+
} from "./chunk-3LN4LJN6.mjs";
|
|
7
|
+
import {
|
|
8
|
+
SHARED,
|
|
9
|
+
SPACES,
|
|
10
|
+
constructObjectActions,
|
|
11
|
+
constructSpaceActions,
|
|
12
|
+
constructSpaceNode,
|
|
13
|
+
createObjectNode,
|
|
14
|
+
rxFromQuery
|
|
15
|
+
} from "./chunk-N5QMRLKI.mjs";
|
|
16
|
+
import {
|
|
17
|
+
CollectionType,
|
|
18
|
+
SPACE_TYPE,
|
|
19
|
+
SpaceAction
|
|
20
|
+
} from "./chunk-W46VVHFM.mjs";
|
|
21
|
+
import {
|
|
22
|
+
SPACE_PLUGIN
|
|
23
|
+
} from "./chunk-PTKYMZWO.mjs";
|
|
24
|
+
|
|
25
|
+
// packages/plugins/plugin-space/src/capabilities/app-graph-builder.ts
|
|
26
|
+
import { Rx } from "@effect-rx/rx-react";
|
|
27
|
+
import { Array, Option, pipe } from "effect";
|
|
28
|
+
import { Capabilities, contributes, createIntent } from "@dxos/app-framework";
|
|
29
|
+
import { Expando, Filter, getSpace, isEchoObject, SpaceState, isSpace } from "@dxos/client/echo";
|
|
30
|
+
import { log } from "@dxos/log";
|
|
31
|
+
import { ClientCapabilities } from "@dxos/plugin-client";
|
|
32
|
+
import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from "@dxos/plugin-deck/types";
|
|
33
|
+
import { createExtension, rxFromObservable, ROOT_ID, rxFromSignal } from "@dxos/plugin-graph";
|
|
34
|
+
import { isNonNullable } from "@dxos/util";
|
|
35
|
+
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/capabilities/app-graph-builder.ts";
|
|
36
|
+
var app_graph_builder_default = (context) => {
|
|
37
|
+
const resolve = (typename) => context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};
|
|
38
|
+
const spacesNode = {
|
|
39
|
+
id: SPACES,
|
|
40
|
+
type: SPACES,
|
|
41
|
+
cacheable: [
|
|
42
|
+
"label",
|
|
43
|
+
"role"
|
|
44
|
+
],
|
|
45
|
+
properties: {
|
|
46
|
+
label: [
|
|
47
|
+
"spaces label",
|
|
48
|
+
{
|
|
49
|
+
ns: SPACE_PLUGIN
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
icon: "ph--planet--regular",
|
|
53
|
+
testId: "spacePlugin.spaces",
|
|
54
|
+
role: "branch",
|
|
55
|
+
disposition: "collection",
|
|
56
|
+
disabled: true,
|
|
57
|
+
childrenPersistenceClass: "echo",
|
|
58
|
+
onRearrangeChildren: async (nextOrder) => {
|
|
59
|
+
const { graph } = context.getCapability(Capabilities.AppGraph);
|
|
60
|
+
const client = context.getCapability(ClientCapabilities.Client);
|
|
61
|
+
graph.sortEdges(SPACES, "outbound", nextOrder.map(({ id }) => id));
|
|
62
|
+
const { objects: [spacesOrder] } = await client.spaces.default.db.query(Filter.type(Expando, {
|
|
63
|
+
key: SHARED
|
|
64
|
+
})).run();
|
|
65
|
+
if (spacesOrder) {
|
|
66
|
+
spacesOrder.order = nextOrder.map(({ id }) => id);
|
|
67
|
+
} else {
|
|
68
|
+
log.warn("spaces order object not found", void 0, {
|
|
69
|
+
F: __dxlog_file,
|
|
70
|
+
L: 74,
|
|
71
|
+
S: void 0,
|
|
72
|
+
C: (f, a) => f(...a)
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
return contributes(Capabilities.AppGraphBuilder, [
|
|
79
|
+
// Primary actions.
|
|
80
|
+
createExtension({
|
|
81
|
+
id: `${SPACE_PLUGIN}/primary-actions`,
|
|
82
|
+
position: "hoist",
|
|
83
|
+
actions: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map(() => [
|
|
84
|
+
{
|
|
85
|
+
id: SpaceAction.OpenCreateSpace._tag,
|
|
86
|
+
data: async () => {
|
|
87
|
+
const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
|
|
88
|
+
await dispatch(createIntent(SpaceAction.OpenCreateSpace));
|
|
89
|
+
},
|
|
90
|
+
properties: {
|
|
91
|
+
label: [
|
|
92
|
+
"create space label",
|
|
93
|
+
{
|
|
94
|
+
ns: SPACE_PLUGIN
|
|
95
|
+
}
|
|
96
|
+
],
|
|
97
|
+
icon: "ph--plus--regular",
|
|
98
|
+
testId: "spacePlugin.createSpace",
|
|
99
|
+
disposition: "menu"
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
id: SpaceAction.Join._tag,
|
|
104
|
+
data: async () => {
|
|
105
|
+
const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
|
|
106
|
+
await dispatch(createIntent(SpaceAction.Join));
|
|
107
|
+
},
|
|
108
|
+
properties: {
|
|
109
|
+
label: [
|
|
110
|
+
"join space label",
|
|
111
|
+
{
|
|
112
|
+
ns: SPACE_PLUGIN
|
|
113
|
+
}
|
|
114
|
+
],
|
|
115
|
+
icon: "ph--sign-in--regular",
|
|
116
|
+
testId: "spacePlugin.joinSpace",
|
|
117
|
+
disposition: "menu"
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
id: SpaceAction.OpenMembers._tag,
|
|
122
|
+
data: async () => {
|
|
123
|
+
const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
|
|
124
|
+
const client = context.getCapability(ClientCapabilities.Client);
|
|
125
|
+
const space = getActiveSpace(context) ?? client.spaces.default;
|
|
126
|
+
await dispatch(createIntent(SpaceAction.OpenMembers, {
|
|
127
|
+
space
|
|
128
|
+
}));
|
|
129
|
+
},
|
|
130
|
+
properties: {
|
|
131
|
+
label: [
|
|
132
|
+
"share space label",
|
|
133
|
+
{
|
|
134
|
+
ns: SPACE_PLUGIN
|
|
135
|
+
}
|
|
136
|
+
],
|
|
137
|
+
icon: "ph--users--regular",
|
|
138
|
+
testId: "spacePlugin.shareSpace",
|
|
139
|
+
keyBinding: {
|
|
140
|
+
macos: "meta+.",
|
|
141
|
+
windows: "alt+."
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
id: SpaceAction.OpenSettings._tag,
|
|
147
|
+
data: async () => {
|
|
148
|
+
const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
|
|
149
|
+
const client = context.getCapability(ClientCapabilities.Client);
|
|
150
|
+
const space = getActiveSpace(context) ?? client.spaces.default;
|
|
151
|
+
await dispatch(createIntent(SpaceAction.OpenSettings, {
|
|
152
|
+
space
|
|
153
|
+
}));
|
|
154
|
+
},
|
|
155
|
+
properties: {
|
|
156
|
+
label: [
|
|
157
|
+
"open current space settings label",
|
|
158
|
+
{
|
|
159
|
+
ns: SPACE_PLUGIN
|
|
160
|
+
}
|
|
161
|
+
],
|
|
162
|
+
icon: "ph--faders--regular",
|
|
163
|
+
keyBinding: {
|
|
164
|
+
macos: "meta+shift+,",
|
|
165
|
+
windows: "ctrl+shift+,"
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
]), Option.getOrElse(() => [])))
|
|
170
|
+
}),
|
|
171
|
+
// Create spaces group node.
|
|
172
|
+
createExtension({
|
|
173
|
+
id: `${SPACE_PLUGIN}/root`,
|
|
174
|
+
position: "hoist",
|
|
175
|
+
connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map(() => [
|
|
176
|
+
spacesNode
|
|
177
|
+
]), Option.getOrElse(() => [])))
|
|
178
|
+
}),
|
|
179
|
+
// Create space nodes.
|
|
180
|
+
createExtension({
|
|
181
|
+
id: SPACES,
|
|
182
|
+
connector: (node) => {
|
|
183
|
+
let query;
|
|
184
|
+
return Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.id === SPACES ? Option.some(node2) : Option.none()), Option.map(() => {
|
|
185
|
+
const state = context.getCapability(SpaceCapabilities.State);
|
|
186
|
+
const client = context.getCapability(ClientCapabilities.Client);
|
|
187
|
+
const spacesRx = rxFromObservable(client.spaces);
|
|
188
|
+
const isReadyRx = rxFromObservable(client.spaces.isReady);
|
|
189
|
+
const spaces = get(spacesRx);
|
|
190
|
+
const isReady = get(isReadyRx);
|
|
191
|
+
if (!spaces || !isReady) {
|
|
192
|
+
return [];
|
|
193
|
+
}
|
|
194
|
+
const settings = get(context.capabilities(Capabilities.SettingsStore))[0]?.getStore(SPACE_PLUGIN)?.value;
|
|
195
|
+
try {
|
|
196
|
+
if (!query) {
|
|
197
|
+
query = client.spaces.default.db.query(Filter.type(Expando, {
|
|
198
|
+
key: SHARED
|
|
199
|
+
}));
|
|
200
|
+
}
|
|
201
|
+
const [spacesOrder] = get(rxFromQuery(query));
|
|
202
|
+
return get(rxFromSignal(() => {
|
|
203
|
+
const order = spacesOrder?.order ?? [];
|
|
204
|
+
const orderMap = new Map(order.map((id, index) => [
|
|
205
|
+
id,
|
|
206
|
+
index
|
|
207
|
+
]));
|
|
208
|
+
return [
|
|
209
|
+
...spaces.filter((space) => orderMap.has(space.id)).sort((a, b) => orderMap.get(a.id) - orderMap.get(b.id)),
|
|
210
|
+
...spaces.filter((space) => !orderMap.has(space.id))
|
|
211
|
+
].filter((space) => settings?.showHidden ? true : space.state.get() !== SpaceState.SPACE_INACTIVE).map((space) => constructSpaceNode({
|
|
212
|
+
space,
|
|
213
|
+
navigable: state.navigableCollections,
|
|
214
|
+
personal: space === client.spaces.default,
|
|
215
|
+
namesCache: state.spaceNames,
|
|
216
|
+
resolve
|
|
217
|
+
}));
|
|
218
|
+
}));
|
|
219
|
+
} catch {
|
|
220
|
+
return [];
|
|
221
|
+
}
|
|
222
|
+
}), Option.getOrElse(() => [])));
|
|
223
|
+
}
|
|
224
|
+
}),
|
|
225
|
+
// Create space actions.
|
|
226
|
+
createExtension({
|
|
227
|
+
id: `${SPACE_PLUGIN}/actions`,
|
|
228
|
+
actions: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.type === SPACE_TYPE && isSpace(node2.data) ? Option.some(node2.data) : Option.none()), Option.flatMap((space) => {
|
|
229
|
+
const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
|
|
230
|
+
const [client] = get(context.capabilities(ClientCapabilities.Client));
|
|
231
|
+
const [state] = get(context.capabilities(SpaceCapabilities.State));
|
|
232
|
+
if (!dispatcher || !client || !state) {
|
|
233
|
+
return Option.none();
|
|
234
|
+
} else {
|
|
235
|
+
return Option.some({
|
|
236
|
+
space,
|
|
237
|
+
dispatch: dispatcher.dispatchPromise,
|
|
238
|
+
personal: space === client.spaces.default,
|
|
239
|
+
migrating: state.sdkMigrationRunning[space.id]
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
}), Option.map((params) => constructSpaceActions(params)), Option.getOrElse(() => [])))
|
|
243
|
+
}),
|
|
244
|
+
// Create nodes for objects in the root collection of a space.
|
|
245
|
+
createExtension({
|
|
246
|
+
id: `${SPACE_PLUGIN}/root-collection`,
|
|
247
|
+
connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.type === SPACE_TYPE && isSpace(node2.data) ? Option.some(node2.data) : Option.none()), Option.map((space) => {
|
|
248
|
+
const state = context.getCapability(SpaceCapabilities.State);
|
|
249
|
+
const spaceState = get(rxFromObservable(space.state));
|
|
250
|
+
if (spaceState !== SpaceState.SPACE_READY) {
|
|
251
|
+
return [];
|
|
252
|
+
}
|
|
253
|
+
const collection = get(rxFromSignal(() => space.properties[CollectionType.typename]?.target));
|
|
254
|
+
if (!collection) {
|
|
255
|
+
return [];
|
|
256
|
+
}
|
|
257
|
+
return get(rxFromSignal(() => pipe(collection.objects, Array.map((object) => object.target), Array.filter(isNonNullable), Array.map((object) => createObjectNode({
|
|
258
|
+
object,
|
|
259
|
+
space,
|
|
260
|
+
resolve,
|
|
261
|
+
navigable: state.navigableCollections
|
|
262
|
+
})), Array.filter(isNonNullable))));
|
|
263
|
+
}), Option.getOrElse(() => [])))
|
|
264
|
+
}),
|
|
265
|
+
// Create nodes for objects in a collection or by its fully qualified id.
|
|
266
|
+
createExtension({
|
|
267
|
+
id: `${SPACE_PLUGIN}/objects`,
|
|
268
|
+
connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.data instanceof CollectionType ? Option.some(node2.data) : Option.none()), Option.map((collection) => {
|
|
269
|
+
const state = context.getCapability(SpaceCapabilities.State);
|
|
270
|
+
const space = getSpace(collection);
|
|
271
|
+
return get(rxFromSignal(() => pipe(collection.objects, Array.map((object) => object.target), Array.filter(isNonNullable), Array.map((object) => space && createObjectNode({
|
|
272
|
+
object,
|
|
273
|
+
space,
|
|
274
|
+
resolve,
|
|
275
|
+
navigable: state.navigableCollections
|
|
276
|
+
})), Array.filter(isNonNullable))));
|
|
277
|
+
}), Option.getOrElse(() => [])))
|
|
278
|
+
}),
|
|
279
|
+
// Create collection actions and action groups.
|
|
280
|
+
createExtension({
|
|
281
|
+
id: `${SPACE_PLUGIN}/object-actions`,
|
|
282
|
+
actions: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => isEchoObject(node2.data) ? Option.some(node2.data) : Option.none()), Option.flatMap((object) => {
|
|
283
|
+
const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
|
|
284
|
+
const [appGraph] = get(context.capabilities(Capabilities.AppGraph));
|
|
285
|
+
const [state] = get(context.capabilities(SpaceCapabilities.State));
|
|
286
|
+
if (!dispatcher || !appGraph || !state) {
|
|
287
|
+
return Option.none();
|
|
288
|
+
} else {
|
|
289
|
+
return Option.some({
|
|
290
|
+
object,
|
|
291
|
+
graph: appGraph.graph,
|
|
292
|
+
dispatch: dispatcher.dispatchPromise,
|
|
293
|
+
navigable: get(rxFromSignal(() => state.navigableCollections))
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
}), Option.map((params) => constructObjectActions(params)), Option.getOrElse(() => [])))
|
|
297
|
+
}),
|
|
298
|
+
// Object settings plank companion.
|
|
299
|
+
createExtension({
|
|
300
|
+
id: `${SPACE_PLUGIN}/settings`,
|
|
301
|
+
connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => isEchoObject(node2.data) ? Option.some(node2) : Option.none()), Option.map((node2) => [
|
|
302
|
+
{
|
|
303
|
+
id: [
|
|
304
|
+
node2.id,
|
|
305
|
+
"settings"
|
|
306
|
+
].join(ATTENDABLE_PATH_SEPARATOR),
|
|
307
|
+
type: PLANK_COMPANION_TYPE,
|
|
308
|
+
data: "settings",
|
|
309
|
+
properties: {
|
|
310
|
+
label: [
|
|
311
|
+
"object settings label",
|
|
312
|
+
{
|
|
313
|
+
ns: SPACE_PLUGIN
|
|
314
|
+
}
|
|
315
|
+
],
|
|
316
|
+
icon: "ph--sliders--regular",
|
|
317
|
+
disposition: "hidden",
|
|
318
|
+
position: "fallback"
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
]), Option.getOrElse(() => [])))
|
|
322
|
+
})
|
|
323
|
+
]);
|
|
324
|
+
};
|
|
325
|
+
export {
|
|
326
|
+
app_graph_builder_default as default
|
|
327
|
+
};
|
|
328
|
+
//# sourceMappingURL=app-graph-builder-DCWUULKX.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/app-graph-builder.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport { Array, Option, pipe } from 'effect';\n\nimport { Capabilities, contributes, createIntent, type PluginContext } from '@dxos/app-framework';\nimport {\n Expando,\n Filter,\n getSpace,\n isEchoObject,\n SpaceState,\n type Space,\n isSpace,\n type QueryResult,\n} from '@dxos/client/echo';\nimport { log } from '@dxos/log';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from '@dxos/plugin-deck/types';\nimport { createExtension, rxFromObservable, ROOT_ID, rxFromSignal } from '@dxos/plugin-graph';\nimport { isNonNullable } from '@dxos/util';\n\nimport { SpaceCapabilities } from './capabilities';\nimport { getActiveSpace } from '../hooks';\nimport { SPACE_PLUGIN } from '../meta';\nimport { CollectionType, SPACE_TYPE, SpaceAction, type SpaceSettingsProps } from '../types';\nimport {\n constructObjectActions,\n constructSpaceActions,\n constructSpaceNode,\n createObjectNode,\n rxFromQuery,\n SHARED,\n SPACES,\n} from '../util';\n\nexport default (context: PluginContext) => {\n const resolve = (typename: string) =>\n context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};\n\n const spacesNode = {\n id: SPACES,\n type: SPACES,\n cacheable: ['label', 'role'],\n properties: {\n label: ['spaces label', { ns: SPACE_PLUGIN }],\n icon: 'ph--planet--regular',\n testId: 'spacePlugin.spaces',\n role: 'branch',\n disposition: 'collection',\n disabled: true,\n childrenPersistenceClass: 'echo',\n onRearrangeChildren: async (nextOrder: Space[]) => {\n const { graph } = context.getCapability(Capabilities.AppGraph);\n const client = context.getCapability(ClientCapabilities.Client);\n\n // NOTE: This is needed to ensure order is updated by next animation frame.\n // TODO(wittjosiah): Is there a better way to do this?\n // If not, graph should be passed as an argument to the extension.\n graph.sortEdges(\n SPACES,\n 'outbound',\n nextOrder.map(({ id }) => id),\n );\n\n const {\n objects: [spacesOrder],\n } = await client.spaces.default.db.query(Filter.type(Expando, { key: SHARED })).run();\n if (spacesOrder) {\n spacesOrder.order = nextOrder.map(({ id }) => id);\n } else {\n log.warn('spaces order object not found');\n }\n },\n },\n };\n\n return contributes(Capabilities.AppGraphBuilder, [\n // Primary actions.\n createExtension({\n id: `${SPACE_PLUGIN}/primary-actions`,\n position: 'hoist',\n actions: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map(() => [\n {\n id: SpaceAction.OpenCreateSpace._tag,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n await dispatch(createIntent(SpaceAction.OpenCreateSpace));\n },\n properties: {\n label: ['create space label', { ns: SPACE_PLUGIN }],\n icon: 'ph--plus--regular',\n testId: 'spacePlugin.createSpace',\n disposition: 'menu',\n },\n },\n {\n id: SpaceAction.Join._tag,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n await dispatch(createIntent(SpaceAction.Join));\n },\n properties: {\n label: ['join space label', { ns: SPACE_PLUGIN }],\n icon: 'ph--sign-in--regular',\n testId: 'spacePlugin.joinSpace',\n disposition: 'menu',\n },\n },\n {\n id: SpaceAction.OpenMembers._tag,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const client = context.getCapability(ClientCapabilities.Client);\n const space = getActiveSpace(context) ?? client.spaces.default;\n await dispatch(createIntent(SpaceAction.OpenMembers, { space }));\n },\n properties: {\n label: ['share space label', { ns: SPACE_PLUGIN }],\n icon: 'ph--users--regular',\n testId: 'spacePlugin.shareSpace',\n keyBinding: {\n macos: 'meta+.',\n windows: 'alt+.',\n },\n },\n },\n {\n id: SpaceAction.OpenSettings._tag,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const client = context.getCapability(ClientCapabilities.Client);\n const space = getActiveSpace(context) ?? client.spaces.default;\n await dispatch(createIntent(SpaceAction.OpenSettings, { space }));\n },\n properties: {\n label: ['open current space settings label', { ns: SPACE_PLUGIN }],\n icon: 'ph--faders--regular',\n keyBinding: {\n macos: 'meta+shift+,',\n windows: 'ctrl+shift+,',\n },\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n // Create spaces group node.\n createExtension({\n id: `${SPACE_PLUGIN}/root`,\n position: 'hoist',\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map(() => [spacesNode]),\n Option.getOrElse(() => []),\n ),\n ),\n // resolver: ({ id }) => (id === SPACES ? spacesNode : undefined),\n }),\n\n // Create space nodes.\n createExtension({\n id: SPACES,\n connector: (node) => {\n let query: QueryResult<Expando> | undefined;\n return Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === SPACES ? Option.some(node) : Option.none())),\n Option.map(() => {\n const state = context.getCapability(SpaceCapabilities.State);\n const client = context.getCapability(ClientCapabilities.Client);\n const spacesRx = rxFromObservable(client.spaces);\n const isReadyRx = rxFromObservable(client.spaces.isReady);\n\n const spaces = get(spacesRx);\n const isReady = get(isReadyRx);\n\n if (!spaces || !isReady) {\n return [];\n }\n\n const settings = get(context.capabilities(Capabilities.SettingsStore))[0]?.getStore<SpaceSettingsProps>(\n SPACE_PLUGIN,\n )?.value;\n\n // TODO(wittjosiah): During client reset, accessing default space throws.\n try {\n if (!query) {\n query = client.spaces.default.db.query(Filter.type(Expando, { key: SHARED }));\n }\n const [spacesOrder] = get(rxFromQuery(query));\n return get(\n rxFromSignal(() => {\n const order: string[] = spacesOrder?.order ?? [];\n const orderMap = new Map(order.map((id, index) => [id, index]));\n return [\n ...spaces\n .filter((space) => orderMap.has(space.id))\n .sort((a, b) => orderMap.get(a.id)! - orderMap.get(b.id)!),\n ...spaces.filter((space) => !orderMap.has(space.id)),\n ]\n .filter((space) =>\n settings?.showHidden ? true : space.state.get() !== SpaceState.SPACE_INACTIVE,\n )\n .map((space) =>\n constructSpaceNode({\n space,\n navigable: state.navigableCollections,\n personal: space === client.spaces.default,\n namesCache: state.spaceNames,\n resolve,\n }),\n );\n }),\n );\n } catch {\n return [];\n }\n }),\n Option.getOrElse(() => []),\n ),\n );\n },\n // resolver: ({ id }) => {\n // if (id.length !== SPACE_ID_LENGTH) {\n // return;\n // }\n\n // const client = context.requestCapability(ClientCapabilities.Client);\n // const spaces = toSignal(\n // (onChange) => client.spaces.subscribe(() => onChange()).unsubscribe,\n // () => client.spaces.get(),\n // );\n\n // const isReady = toSignal(\n // (onChange) => client.spaces.isReady.subscribe(() => onChange()).unsubscribe,\n // () => client.spaces.isReady.get(),\n // );\n\n // if (!spaces || !isReady) {\n // return;\n // }\n\n // const space = spaces.find((space) => space.id === id);\n // if (!space) {\n // return;\n // }\n\n // if (space.state.get() === SpaceState.SPACE_INACTIVE) {\n // return false;\n // } else if (space.state.get() !== SpaceState.SPACE_READY) {\n // return undefined;\n // } else {\n // const state = context.requestCapability(SpaceCapabilities.State);\n // return constructSpaceNode({\n // space,\n // navigable: state.navigableCollections,\n // personal: space === client.spaces.default,\n // namesCache: state.spaceNames,\n // resolve,\n // });\n // }\n // },\n }),\n\n // Create space actions.\n createExtension({\n id: `${SPACE_PLUGIN}/actions`,\n actions: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) =>\n node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),\n ),\n Option.flatMap((space) => {\n const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));\n const [client] = get(context.capabilities(ClientCapabilities.Client));\n const [state] = get(context.capabilities(SpaceCapabilities.State));\n\n if (!dispatcher || !client || !state) {\n return Option.none();\n } else {\n return Option.some({\n space,\n dispatch: dispatcher.dispatchPromise,\n personal: space === client.spaces.default,\n migrating: state.sdkMigrationRunning[space.id],\n });\n }\n }),\n Option.map((params) => constructSpaceActions(params)),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n // Create nodes for objects in the root collection of a space.\n createExtension({\n id: `${SPACE_PLUGIN}/root-collection`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) =>\n node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),\n ),\n Option.map((space) => {\n const state = context.getCapability(SpaceCapabilities.State);\n\n const spaceState = get(rxFromObservable(space.state));\n if (spaceState !== SpaceState.SPACE_READY) {\n return [];\n }\n\n const collection = get(\n rxFromSignal(() => space.properties[CollectionType.typename]?.target as CollectionType | undefined),\n );\n if (!collection) {\n return [];\n }\n\n return get(\n rxFromSignal(() =>\n pipe(\n collection.objects,\n Array.map((object) => object.target),\n Array.filter(isNonNullable),\n Array.map((object) =>\n createObjectNode({\n object,\n space,\n resolve,\n navigable: state.navigableCollections,\n }),\n ),\n Array.filter(isNonNullable),\n ),\n ),\n );\n }),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n // Create nodes for objects in a collection or by its fully qualified id.\n createExtension({\n id: `${SPACE_PLUGIN}/objects`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.data instanceof CollectionType ? Option.some(node.data) : Option.none())),\n Option.map((collection) => {\n const state = context.getCapability(SpaceCapabilities.State);\n const space = getSpace(collection);\n\n return get(\n rxFromSignal(() =>\n pipe(\n collection.objects,\n Array.map((object) => object.target),\n Array.filter(isNonNullable),\n Array.map(\n (object) =>\n space && createObjectNode({ object, space, resolve, navigable: state.navigableCollections }),\n ),\n Array.filter(isNonNullable),\n ),\n ),\n );\n }),\n Option.getOrElse(() => []),\n ),\n ),\n // resolver: ({ id }) => {\n // if (id.length !== FQ_ID_LENGTH) {\n // return;\n // }\n\n // const [spaceId, objectId] = id.split(':');\n // if (spaceId.length !== SPACE_ID_LENGTH && objectId.length !== OBJECT_ID_LENGTH) {\n // return;\n // }\n\n // const client = context.requestCapability(ClientCapabilities.Client);\n // const space = client.spaces.get().find((space) => space.id === spaceId);\n // if (!space) {\n // return;\n // }\n\n // const spaceState = toSignal(\n // (onChange) => space.state.subscribe(() => onChange()).unsubscribe,\n // () => space.state.get(),\n // space.id,\n // );\n // if (spaceState !== SpaceState.SPACE_READY) {\n // return;\n // }\n\n // const [object] = memoizeQuery(space, Query.select(Filter.ids(objectId)));\n // if (!object) {\n // return;\n // }\n\n // if (isDeleted(object)) {\n // return false;\n // } else {\n // const state = context.requestCapability(SpaceCapabilities.State);\n // return createObjectNode({ object, space, resolve, navigable: state.navigableCollections });\n // }\n // },\n }),\n\n // Create collection actions and action groups.\n createExtension({\n id: `${SPACE_PLUGIN}/object-actions`,\n actions: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (isEchoObject(node.data) ? Option.some(node.data) : Option.none())),\n Option.flatMap((object) => {\n const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));\n const [appGraph] = get(context.capabilities(Capabilities.AppGraph));\n const [state] = get(context.capabilities(SpaceCapabilities.State));\n\n if (!dispatcher || !appGraph || !state) {\n return Option.none();\n } else {\n return Option.some({\n object,\n graph: appGraph.graph,\n dispatch: dispatcher.dispatchPromise,\n navigable: get(rxFromSignal(() => state.navigableCollections)),\n });\n }\n }),\n Option.map((params) => constructObjectActions(params)),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n // Object settings plank companion.\n createExtension({\n id: `${SPACE_PLUGIN}/settings`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (isEchoObject(node.data) ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: [node.id, 'settings'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'settings',\n properties: {\n label: ['object settings label', { ns: SPACE_PLUGIN }],\n icon: 'ph--sliders--regular',\n disposition: 'hidden',\n position: 'fallback',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n ]);\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Rx", "Array", "Option", "pipe", "Capabilities", "contributes", "createIntent", "Expando", "Filter", "getSpace", "isEchoObject", "SpaceState", "isSpace", "log", "ClientCapabilities", "PLANK_COMPANION_TYPE", "ATTENDABLE_PATH_SEPARATOR", "createExtension", "rxFromObservable", "ROOT_ID", "rxFromSignal", "isNonNullable", "context", "resolve", "typename", "getCapabilities", "Capabilities", "Metadata", "find", "id", "metadata", "spacesNode", "SPACES", "type", "cacheable", "properties", "label", "ns", "SPACE_PLUGIN", "icon", "testId", "role", "disposition", "disabled", "childrenPersistenceClass", "onRearrangeChildren", "nextOrder", "graph", "getCapability", "AppGraph", "client", "ClientCapabilities", "Client", "sortEdges", "map", "objects", "spacesOrder", "spaces", "default", "db", "query", "Filter", "Expando", "key", "SHARED", "run", "order", "log", "warn", "contributes", "AppGraphBuilder", "createExtension", "position", "actions", "node", "Rx", "make", "get", "pipe", "Option", "flatMap", "ROOT_ID", "some", "none", "SpaceAction", "OpenCreateSpace", "_tag", "data", "dispatchPromise", "dispatch", "IntentDispatcher", "createIntent", "Join", "OpenMembers", "space", "getActiveSpace", "keyBinding", "macos", "windows", "OpenSettings", "getOrElse", "connector", "state", "SpaceCapabilities", "State", "spacesRx", "rxFromObservable", "isReadyRx", "isReady", "settings", "capabilities", "SettingsStore", "getStore", "value", "rxFromQuery", "rxFromSignal", "orderMap", "Map", "index", "filter", "has", "sort", "a", "b", "showHidden", "SpaceState", "SPACE_INACTIVE", "constructSpaceNode", "navigable", "navigableCollections", "personal", "namesCache", "spaceNames", "SPACE_TYPE", "isSpace", "dispatcher", "migrating", "sdkMigrationRunning", "params", "constructSpaceActions", "spaceState", "SPACE_READY", "collection", "CollectionType", "target", "Array", "object", "isNonNullable", "createObjectNode", "getSpace", "isEchoObject", "appGraph", "constructObjectActions", "join", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE"]
|
|
7
|
+
}
|
package/dist/lib/browser/{app-graph-serializer-DSF2U3A5.mjs → app-graph-serializer-MLU7XI2P.mjs}
RENAMED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
translations_default
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-VEBKN45O.mjs";
|
|
4
4
|
import {
|
|
5
|
-
SPACES
|
|
6
|
-
|
|
7
|
-
} from "./chunk-LO5UL6RU.mjs";
|
|
5
|
+
SPACES
|
|
6
|
+
} from "./chunk-N5QMRLKI.mjs";
|
|
8
7
|
import {
|
|
9
8
|
CollectionType,
|
|
9
|
+
SPACE_TYPE,
|
|
10
10
|
SpaceAction
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-W46VVHFM.mjs";
|
|
12
12
|
import {
|
|
13
13
|
SPACE_PLUGIN
|
|
14
14
|
} from "./chunk-PTKYMZWO.mjs";
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
// packages/plugins/plugin-space/src/capabilities/app-graph-serializer.ts
|
|
17
17
|
import { Capabilities, contributes, createIntent } from "@dxos/app-framework";
|
|
18
18
|
import { isSpace } from "@dxos/client/echo";
|
|
19
|
-
import {
|
|
19
|
+
import { live } from "@dxos/live-object";
|
|
20
20
|
var DIRECTORY_TYPE = "text/directory";
|
|
21
21
|
var app_graph_serializer_default = (context) => contributes(Capabilities.AppGraphSerializer, [
|
|
22
22
|
{
|
|
@@ -39,7 +39,7 @@ var app_graph_serializer_default = (context) => contributes(Capabilities.AppGrap
|
|
|
39
39
|
type: DIRECTORY_TYPE
|
|
40
40
|
}),
|
|
41
41
|
deserialize: async (data) => {
|
|
42
|
-
const { dispatchPromise: dispatch } = context.
|
|
42
|
+
const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
|
|
43
43
|
const result = await dispatch(createIntent(SpaceAction.Create, {
|
|
44
44
|
name: data.name,
|
|
45
45
|
edgeReplication: true
|
|
@@ -61,10 +61,10 @@ var app_graph_serializer_default = (context) => contributes(Capabilities.AppGrap
|
|
|
61
61
|
if (!space || !collection) {
|
|
62
62
|
return;
|
|
63
63
|
}
|
|
64
|
-
const { dispatchPromise: dispatch } = context.
|
|
64
|
+
const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
|
|
65
65
|
const result = await dispatch(createIntent(SpaceAction.AddObject, {
|
|
66
66
|
target: collection,
|
|
67
|
-
object:
|
|
67
|
+
object: live(CollectionType, {
|
|
68
68
|
name: data.name,
|
|
69
69
|
objects: [],
|
|
70
70
|
views: {}
|
|
@@ -77,4 +77,4 @@ var app_graph_serializer_default = (context) => contributes(Capabilities.AppGrap
|
|
|
77
77
|
export {
|
|
78
78
|
app_graph_serializer_default as default
|
|
79
79
|
};
|
|
80
|
-
//# sourceMappingURL=app-graph-serializer-
|
|
80
|
+
//# sourceMappingURL=app-graph-serializer-MLU7XI2P.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/app-graph-serializer.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, createIntent, type PluginContext } from '@dxos/app-framework';\nimport { isSpace } from '@dxos/client/echo';\nimport { live } from '@dxos/live-object';\n\nimport { SPACE_PLUGIN } from '../meta';\nimport translations from '../translations';\nimport { CollectionType, SpaceAction, SPACE_TYPE } from '../types';\nimport { SPACES } from '../util';\n\n// https://stackoverflow.com/a/19016910\nconst DIRECTORY_TYPE = 'text/directory';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.AppGraphSerializer, [\n {\n inputType: SPACES,\n outputType: DIRECTORY_TYPE,\n serialize: (node) => ({\n name: translations[0]['en-US'][SPACE_PLUGIN]['spaces label'],\n data: translations[0]['en-US'][SPACE_PLUGIN]['spaces label'],\n type: DIRECTORY_TYPE,\n }),\n deserialize: () => {\n // No-op.\n },\n },\n {\n inputType: SPACE_TYPE,\n outputType: DIRECTORY_TYPE,\n serialize: (node) => ({\n name: node.data.properties.name ?? translations[0]['en-US'][SPACE_PLUGIN]['unnamed space label'],\n data: node.data.properties.name ?? translations[0]['en-US'][SPACE_PLUGIN]['unnamed space label'],\n type: DIRECTORY_TYPE,\n }),\n deserialize: async (data) => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const result = await dispatch(createIntent(SpaceAction.Create, { name: data.name, edgeReplication: true }));\n return result.data?.space;\n },\n },\n {\n inputType: CollectionType.typename,\n outputType: DIRECTORY_TYPE,\n serialize: (node) => ({\n name: node.data.name ?? translations[0]['en-US'][CollectionType.typename]['object name placeholder'],\n data: node.data.name ?? translations[0]['en-US'][CollectionType.typename]['object name placeholder'],\n type: DIRECTORY_TYPE,\n }),\n deserialize: async (data, ancestors) => {\n const space = ancestors.find(isSpace);\n const collection =\n ancestors.findLast((ancestor) => ancestor instanceof CollectionType) ??\n space?.properties[CollectionType.typename]?.target;\n if (!space || !collection) {\n return;\n }\n\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const result = await dispatch(\n createIntent(SpaceAction.AddObject, {\n target: collection,\n object: live(CollectionType, { name: data.name, objects: [], views: {} }),\n }),\n );\n\n return result.data?.object;\n },\n },\n ]);\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;AAIA,SAASA,cAAcC,aAAaC,oBAAwC;AAC5E,SAASC,eAAe;AACxB,SAASC,YAAY;AAQrB,IAAMC,iBAAiB;AAEvB,IAAA,+BAAe,CAACC,YACdC,YAAYC,aAAaC,oBAAoB;EAC3C;IACEC,WAAWC;IACXC,YAAYP;IACZQ,WAAW,CAACC,UAAU;MACpBC,MAAMC,qBAAa,CAAA,EAAG,OAAA,EAASC,YAAAA,EAAc,cAAA;MAC7CC,MAAMF,qBAAa,CAAA,EAAG,OAAA,EAASC,YAAAA,EAAc,cAAA;MAC7CE,MAAMd;IACR;IACAe,aAAa,MAAA;IAEb;EACF;EACA;IACEV,WAAWW;IACXT,YAAYP;IACZQ,WAAW,CAACC,UAAU;MACpBC,MAAMD,KAAKI,KAAKI,WAAWP,QAAQC,qBAAa,CAAA,EAAG,OAAA,EAASC,YAAAA,EAAc,qBAAA;MAC1EC,MAAMJ,KAAKI,KAAKI,WAAWP,QAAQC,qBAAa,CAAA,EAAG,OAAA,EAASC,YAAAA,EAAc,qBAAA;MAC1EE,MAAMd;IACR;IACAe,aAAa,OAAOF,SAAAA;AAClB,YAAM,EAAEK,iBAAiBC,SAAQ,IAAKlB,QAAQmB,cAAcjB,aAAakB,gBAAgB;AACzF,YAAMC,SAAS,MAAMH,SAASI,aAAaC,YAAYC,QAAQ;QAAEf,MAAMG,KAAKH;QAAMgB,iBAAiB;MAAK,CAAA,CAAA;AACxG,aAAOJ,OAAOT,MAAMc;IACtB;EACF;EACA;IACEtB,WAAWuB,eAAeC;IAC1BtB,YAAYP;IACZQ,WAAW,CAACC,UAAU;MACpBC,MAAMD,KAAKI,KAAKH,QAAQC,qBAAa,CAAA,EAAG,OAAA,EAASiB,eAAeC,QAAQ,EAAE,yBAAA;MAC1EhB,MAAMJ,KAAKI,KAAKH,QAAQC,qBAAa,CAAA,EAAG,OAAA,EAASiB,eAAeC,QAAQ,EAAE,yBAAA;MAC1Ef,MAAMd;IACR;IACAe,aAAa,OAAOF,MAAMiB,cAAAA;AACxB,YAAMH,QAAQG,UAAUC,KAAKC,OAAAA;AAC7B,YAAMC,aACJH,UAAUI,SAAS,CAACC,aAAaA,oBAAoBP,cAAAA,KACrDD,OAAOV,WAAWW,eAAeC,QAAQ,GAAGO;AAC9C,UAAI,CAACT,SAAS,CAACM,YAAY;AACzB;MACF;AAEA,YAAM,EAAEf,iBAAiBC,SAAQ,IAAKlB,QAAQmB,cAAcjB,aAAakB,gBAAgB;AACzF,YAAMC,SAAS,MAAMH,SACnBI,aAAaC,YAAYa,WAAW;QAClCD,QAAQH;QACRK,QAAQC,KAAKX,gBAAgB;UAAElB,MAAMG,KAAKH;UAAM8B,SAAS,CAAA;UAAIC,OAAO,CAAC;QAAE,CAAA;MACzE,CAAA,CAAA;AAGF,aAAOnB,OAAOT,MAAMyB;IACtB;EACF;CACD;",
|
|
6
|
+
"names": ["Capabilities", "contributes", "createIntent", "isSpace", "live", "DIRECTORY_TYPE", "context", "contributes", "Capabilities", "AppGraphSerializer", "inputType", "SPACES", "outputType", "serialize", "node", "name", "translations", "SPACE_PLUGIN", "data", "type", "deserialize", "SPACE_TYPE", "properties", "dispatchPromise", "dispatch", "getCapability", "IntentDispatcher", "result", "createIntent", "SpaceAction", "Create", "edgeReplication", "space", "CollectionType", "typename", "ancestors", "find", "isSpace", "collection", "findLast", "ancestor", "target", "AddObject", "object", "live", "objects", "views"]
|
|
7
|
+
}
|
|
@@ -4,20 +4,15 @@ import {
|
|
|
4
4
|
|
|
5
5
|
// packages/plugins/plugin-space/src/capabilities/capabilities.ts
|
|
6
6
|
import { defineCapability } from "@dxos/app-framework";
|
|
7
|
-
var SpaceCapabilities;
|
|
8
7
|
(function(SpaceCapabilities2) {
|
|
9
8
|
SpaceCapabilities2.State = defineCapability(`${SPACE_PLUGIN}/capability/state`);
|
|
10
9
|
SpaceCapabilities2.MutableState = defineCapability(`${SPACE_PLUGIN}/capability/state`);
|
|
11
10
|
SpaceCapabilities2.SettingsSection = defineCapability(`${SPACE_PLUGIN}/capability/settings-section`);
|
|
12
11
|
SpaceCapabilities2.ObjectForm = defineCapability(`${SPACE_PLUGIN}/capability/object-form`);
|
|
13
12
|
})(SpaceCapabilities || (SpaceCapabilities = {}));
|
|
14
|
-
var
|
|
15
|
-
(function(ThreadCapabilities2) {
|
|
16
|
-
ThreadCapabilities2.Thread = defineCapability(`${SPACE_PLUGIN}/capability/thread`);
|
|
17
|
-
})(ThreadCapabilities || (ThreadCapabilities = {}));
|
|
13
|
+
var SpaceCapabilities;
|
|
18
14
|
|
|
19
15
|
export {
|
|
20
|
-
SpaceCapabilities
|
|
21
|
-
ThreadCapabilities
|
|
16
|
+
SpaceCapabilities
|
|
22
17
|
};
|
|
23
|
-
//# sourceMappingURL=chunk-
|
|
18
|
+
//# sourceMappingURL=chunk-3LN4LJN6.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/capabilities/capabilities.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineCapability, type Label } from '@dxos/app-framework';\nimport { type Position, type DeepReadonly } from '@dxos/util';\n\nimport { SPACE_PLUGIN } from '../meta';\nimport { type ObjectForm, type PluginState } from '../types';\n\nexport namespace SpaceCapabilities {\n export const State = defineCapability<DeepReadonly<PluginState>>(`${SPACE_PLUGIN}/capability/state`);\n export const MutableState = defineCapability<PluginState>(`${SPACE_PLUGIN}/capability/state`);\n\n export type SettingsSection = { id: string; label: Label; position?: Position };\n export const SettingsSection = defineCapability<SettingsSection>(`${SPACE_PLUGIN}/capability/settings-section`);\n\n export const ObjectForm = defineCapability<ObjectForm<any>>(`${SPACE_PLUGIN}/capability/object-form`);\n}\n
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["defineCapability", "SpaceCapabilities", "State", "defineCapability", "SPACE_PLUGIN", "MutableState", "SettingsSection", "ObjectForm"
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineCapability, type Label } from '@dxos/app-framework';\nimport { type Position, type DeepReadonly } from '@dxos/util';\n\nimport { SPACE_PLUGIN } from '../meta';\nimport { type ObjectForm, type PluginState } from '../types';\n\nexport namespace SpaceCapabilities {\n export const State = defineCapability<DeepReadonly<PluginState>>(`${SPACE_PLUGIN}/capability/state`);\n export const MutableState = defineCapability<PluginState>(`${SPACE_PLUGIN}/capability/state`);\n\n export type SettingsSection = { id: string; label: Label; position?: Position };\n export const SettingsSection = defineCapability<SettingsSection>(`${SPACE_PLUGIN}/capability/settings-section`);\n\n export const ObjectForm = defineCapability<ObjectForm<any>>(`${SPACE_PLUGIN}/capability/object-form`);\n}\n"],
|
|
5
|
+
"mappings": ";;;;;AAIA,SAASA,wBAAoC;UAM5BC,oBAAAA;qBACFC,QAAQC,iBAA4C,GAAGC,YAAAA,mBAA+B;qBACtFC,eAAeF,iBAA8B,GAAGC,YAAAA,mBAA+B;qBAG/EE,kBAAkBH,iBAAkC,GAAGC,YAAAA,8BAA0C;qBAEjGG,aAAaJ,iBAAkC,GAAGC,YAAAA,yBAAqC;AACtG,GARiBH,sBAAAA,oBAAAA,CAAAA,EAAAA;;",
|
|
6
|
+
"names": ["defineCapability", "SpaceCapabilities", "State", "defineCapability", "SPACE_PLUGIN", "MutableState", "SettingsSection", "ObjectForm"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// packages/plugins/plugin-space/src/hooks/useActiveSpace.ts
|
|
2
|
+
import { Capabilities, useLayout } from "@dxos/app-framework";
|
|
3
|
+
import { ClientCapabilities } from "@dxos/plugin-client";
|
|
4
|
+
import { parseId, useSpace } from "@dxos/react-client/echo";
|
|
5
|
+
var getActiveSpace = (context) => {
|
|
6
|
+
const layout = context.getCapability(Capabilities.Layout);
|
|
7
|
+
const client = context.getCapability(ClientCapabilities.Client);
|
|
8
|
+
const { spaceId } = parseId(layout.workspace);
|
|
9
|
+
return spaceId ? client.spaces.get(spaceId) : void 0;
|
|
10
|
+
};
|
|
11
|
+
var useActiveSpace = () => {
|
|
12
|
+
const layout = useLayout();
|
|
13
|
+
const { spaceId } = parseId(layout.workspace);
|
|
14
|
+
return useSpace(spaceId);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// packages/plugins/plugin-space/src/hooks/useInputSurfaceLookup.tsx
|
|
18
|
+
import React, { useCallback } from "react";
|
|
19
|
+
import { usePluginManager, isSurfaceAvailable, Surface } from "@dxos/app-framework";
|
|
20
|
+
var useInputSurfaceLookup = (baseData) => {
|
|
21
|
+
const pluginManager = usePluginManager();
|
|
22
|
+
return useCallback(({ prop, schema, inputProps }) => {
|
|
23
|
+
const composedData = {
|
|
24
|
+
prop,
|
|
25
|
+
schema,
|
|
26
|
+
...baseData
|
|
27
|
+
};
|
|
28
|
+
if (!isSurfaceAvailable(pluginManager.context, {
|
|
29
|
+
role: "form-input",
|
|
30
|
+
data: composedData
|
|
31
|
+
})) {
|
|
32
|
+
return void 0;
|
|
33
|
+
}
|
|
34
|
+
return /* @__PURE__ */ React.createElement(Surface, {
|
|
35
|
+
role: "form-input",
|
|
36
|
+
data: composedData,
|
|
37
|
+
...inputProps
|
|
38
|
+
});
|
|
39
|
+
}, [
|
|
40
|
+
pluginManager,
|
|
41
|
+
baseData
|
|
42
|
+
]);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
// packages/plugins/plugin-space/src/hooks/usePath.ts
|
|
46
|
+
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
47
|
+
import { Option } from "effect";
|
|
48
|
+
import { useEffect, useState } from "react";
|
|
49
|
+
var usePath = (graph, id, timeout) => {
|
|
50
|
+
var _effect = _useSignals();
|
|
51
|
+
try {
|
|
52
|
+
const [pathState, setPathState] = useState(id ? graph.getPath({
|
|
53
|
+
target: id
|
|
54
|
+
}) : Option.none());
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
if (!id && pathState) {
|
|
57
|
+
setPathState(Option.none());
|
|
58
|
+
}
|
|
59
|
+
if (Option.isSome(pathState) && pathState.value.at(-1) === id || !id) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const frame = requestAnimationFrame(async () => {
|
|
63
|
+
try {
|
|
64
|
+
const path = await graph.waitForPath({
|
|
65
|
+
target: id
|
|
66
|
+
}, {
|
|
67
|
+
timeout
|
|
68
|
+
});
|
|
69
|
+
if (path) {
|
|
70
|
+
setPathState(Option.some(path));
|
|
71
|
+
}
|
|
72
|
+
} catch {
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
return () => cancelAnimationFrame(frame);
|
|
76
|
+
}, [
|
|
77
|
+
graph,
|
|
78
|
+
id,
|
|
79
|
+
timeout,
|
|
80
|
+
pathState
|
|
81
|
+
]);
|
|
82
|
+
return pathState;
|
|
83
|
+
} finally {
|
|
84
|
+
_effect.f();
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
export {
|
|
89
|
+
getActiveSpace,
|
|
90
|
+
useActiveSpace,
|
|
91
|
+
useInputSurfaceLookup,
|
|
92
|
+
usePath
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=chunk-7Y4M7GXO.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/hooks/useActiveSpace.ts", "../../../src/hooks/useInputSurfaceLookup.tsx", "../../../src/hooks/usePath.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, useLayout, type PluginContext } from '@dxos/app-framework';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { parseId, useSpace } from '@dxos/react-client/echo';\n\nexport const getActiveSpace = (context: PluginContext) => {\n const layout = context.getCapability(Capabilities.Layout);\n const client = context.getCapability(ClientCapabilities.Client);\n const { spaceId } = parseId(layout.workspace);\n return spaceId ? client.spaces.get(spaceId) : undefined;\n};\n\nexport const useActiveSpace = () => {\n const layout = useLayout();\n const { spaceId } = parseId(layout.workspace);\n return useSpace(spaceId);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Schema } from 'effect';\nimport React, { useCallback } from 'react';\n\nimport { usePluginManager, isSurfaceAvailable, Surface } from '@dxos/app-framework';\nimport { type InputProps } from '@dxos/react-ui-form';\n\n// TODO(ZaymonFC): Move this if you find yourself needing it elsewhere.\n/**\n * Creates a surface input component based on plugin context.\n * @param baseData Additional data that will be merged with form data and passed to the surface.\n * This allows providing more context to the surface than what's available from the form itself.\n */\nexport const useInputSurfaceLookup = (baseData?: Record<string, any>) => {\n const pluginManager = usePluginManager();\n\n return useCallback(\n ({ prop, schema, inputProps }: { prop: string; schema: Schema.Schema<any>; inputProps: InputProps }) => {\n const composedData = { prop, schema, ...baseData };\n if (!isSurfaceAvailable(pluginManager.context, { role: 'form-input', data: composedData })) {\n return undefined;\n }\n\n return <Surface role='form-input' data={composedData} {...inputProps} />;\n },\n [pluginManager, baseData],\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Option } from 'effect';\nimport { useEffect, useState } from 'react';\n\nimport { type ReadableGraph } from '@dxos/plugin-graph';\n\n/**\n * React hook to get a path from the graph.\n *\n * @param graph Graph to find the node in.\n * @param id Id of the node to find a path to.\n * @param timeout Optional timeout in milliseconds to wait for the node to be found.\n * @returns Path if found, undefined otherwise.\n */\n// TODO(wittjosiah): Factor out.\nexport const usePath = (graph: ReadableGraph, id?: string, timeout?: number): Option.Option<string[]> => {\n const [pathState, setPathState] = useState<Option.Option<string[]>>(\n id ? graph.getPath({ target: id }) : Option.none(),\n );\n\n useEffect(() => {\n if (!id && pathState) {\n setPathState(Option.none());\n }\n\n if ((Option.isSome(pathState) && pathState.value.at(-1) === id) || !id) {\n return;\n }\n\n // Set timeout did not seem to effectively not block the UI thread.\n const frame = requestAnimationFrame(async () => {\n try {\n const path = await graph.waitForPath({ target: id }, { timeout });\n if (path) {\n setPathState(Option.some(path));\n }\n } catch {}\n });\n\n return () => cancelAnimationFrame(frame);\n }, [graph, id, timeout, pathState]);\n\n return pathState;\n};\n"],
|
|
5
|
+
"mappings": ";AAIA,SAASA,cAAcC,iBAAqC;AAC5D,SAASC,0BAA0B;AACnC,SAASC,SAASC,gBAAgB;AAE3B,IAAMC,iBAAiB,CAACC,YAAAA;AAC7B,QAAMC,SAASD,QAAQE,cAAcC,aAAaC,MAAM;AACxD,QAAMC,SAASL,QAAQE,cAAcI,mBAAmBC,MAAM;AAC9D,QAAM,EAAEC,QAAO,IAAKC,QAAQR,OAAOS,SAAS;AAC5C,SAAOF,UAAUH,OAAOM,OAAOC,IAAIJ,OAAAA,IAAWK;AAChD;AAEO,IAAMC,iBAAiB,MAAA;AAC5B,QAAMb,SAASc,UAAAA;AACf,QAAM,EAAEP,QAAO,IAAKC,QAAQR,OAAOS,SAAS;AAC5C,SAAOM,SAASR,OAAAA;AAClB;;;ACdA,OAAOS,SAASC,mBAAmB;AAEnC,SAASC,kBAAkBC,oBAAoBC,eAAe;AASvD,IAAMC,wBAAwB,CAACC,aAAAA;AACpC,QAAMC,gBAAgBC,iBAAAA;AAEtB,SAAOC,YACL,CAAC,EAAEC,MAAMC,QAAQC,WAAU,MAAwE;AACjG,UAAMC,eAAe;MAAEH;MAAMC;MAAQ,GAAGL;IAAS;AACjD,QAAI,CAACQ,mBAAmBP,cAAcQ,SAAS;MAAEC,MAAM;MAAcC,MAAMJ;IAAa,CAAA,GAAI;AAC1F,aAAOK;IACT;AAEA,WAAO,sBAAA,cAACC,SAAAA;MAAQH,MAAK;MAAaC,MAAMJ;MAAe,GAAGD;;EAC5D,GACA;IAACL;IAAeD;GAAS;AAE7B;;;;AC1BA,SAASc,cAAc;AACvB,SAASC,WAAWC,gBAAgB;AAa7B,IAAMC,UAAU,CAACC,OAAsBC,IAAaC,YAAAA;;;AACzD,UAAM,CAACC,WAAWC,YAAAA,IAAgBC,SAChCJ,KAAKD,MAAMM,QAAQ;MAAEC,QAAQN;IAAG,CAAA,IAAKO,OAAOC,KAAI,CAAA;AAGlDC,cAAU,MAAA;AACR,UAAI,CAACT,MAAME,WAAW;AACpBC,qBAAaI,OAAOC,KAAI,CAAA;MAC1B;AAEA,UAAKD,OAAOG,OAAOR,SAAAA,KAAcA,UAAUS,MAAMC,GAAG,EAAC,MAAOZ,MAAO,CAACA,IAAI;AACtE;MACF;AAGA,YAAMa,QAAQC,sBAAsB,YAAA;AAClC,YAAI;AACF,gBAAMC,OAAO,MAAMhB,MAAMiB,YAAY;YAAEV,QAAQN;UAAG,GAAG;YAAEC;UAAQ,CAAA;AAC/D,cAAIc,MAAM;AACRZ,yBAAaI,OAAOU,KAAKF,IAAAA,CAAAA;UAC3B;QACF,QAAQ;QAAC;MACX,CAAA;AAEA,aAAO,MAAMG,qBAAqBL,KAAAA;IACpC,GAAG;MAACd;MAAOC;MAAIC;MAASC;KAAU;AAElC,WAAOA;;;;AACT;",
|
|
6
|
+
"names": ["Capabilities", "useLayout", "ClientCapabilities", "parseId", "useSpace", "getActiveSpace", "context", "layout", "getCapability", "Capabilities", "Layout", "client", "ClientCapabilities", "Client", "spaceId", "parseId", "workspace", "spaces", "get", "undefined", "useActiveSpace", "useLayout", "useSpace", "React", "useCallback", "usePluginManager", "isSurfaceAvailable", "Surface", "useInputSurfaceLookup", "baseData", "pluginManager", "usePluginManager", "useCallback", "prop", "schema", "inputProps", "composedData", "isSurfaceAvailable", "context", "role", "data", "undefined", "Surface", "Option", "useEffect", "useState", "usePath", "graph", "id", "timeout", "pathState", "setPathState", "useState", "getPath", "target", "Option", "none", "useEffect", "isSome", "value", "at", "frame", "requestAnimationFrame", "path", "waitForPath", "some", "cancelAnimationFrame"]
|
|
7
|
+
}
|