@dxos/plugin-space 0.8.4-main.84f28bd → 0.8.4-main.ae835ea
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/CollectionMain-HTKSZCRR.mjs +31 -0
- package/dist/lib/browser/CollectionMain-HTKSZCRR.mjs.map +7 -0
- package/dist/lib/browser/ObjectDetailsPanel-5B45G744.mjs +145 -0
- package/dist/lib/browser/ObjectDetailsPanel-5B45G744.mjs.map +7 -0
- package/dist/lib/browser/ObjectSettings-UFTKBP7B.mjs +146 -0
- package/dist/lib/browser/ObjectSettings-UFTKBP7B.mjs.map +7 -0
- package/dist/lib/browser/RecordMain-BCSXTSEB.mjs +99 -0
- package/dist/lib/browser/RecordMain-BCSXTSEB.mjs.map +7 -0
- package/dist/lib/browser/app-graph-builder-QJFO4ANM.mjs +520 -0
- package/dist/lib/browser/app-graph-builder-QJFO4ANM.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-UKYMBX4O.mjs → app-graph-serializer-3R5NVV7U.mjs} +14 -14
- package/dist/lib/browser/app-graph-serializer-3R5NVV7U.mjs.map +7 -0
- package/dist/lib/browser/chunk-2NS3VPSY.mjs +20 -0
- package/dist/lib/browser/chunk-2NS3VPSY.mjs.map +7 -0
- package/dist/lib/browser/{chunk-6VLSHG4A.mjs → chunk-4V4JNJ33.mjs} +80 -10
- package/dist/lib/browser/chunk-4V4JNJ33.mjs.map +7 -0
- package/dist/lib/browser/{chunk-GVTXQCIW.mjs → chunk-ENBBJSNE.mjs} +482 -448
- package/dist/lib/browser/chunk-ENBBJSNE.mjs.map +7 -0
- package/dist/lib/browser/chunk-HS2VD6DN.mjs +166 -0
- package/dist/lib/browser/chunk-HS2VD6DN.mjs.map +7 -0
- package/dist/lib/browser/{chunk-WBSEOLEM.mjs → chunk-OWNBEI5J.mjs} +221 -57
- package/dist/lib/browser/chunk-OWNBEI5J.mjs.map +7 -0
- package/dist/lib/browser/{chunk-S6NY637J.mjs → chunk-SLDQWMQ2.mjs} +77 -12
- package/dist/lib/browser/chunk-SLDQWMQ2.mjs.map +7 -0
- package/dist/lib/browser/chunk-VZBIIYFM.mjs +16 -0
- package/dist/lib/browser/chunk-VZBIIYFM.mjs.map +7 -0
- package/dist/lib/browser/chunk-WJXU4GKV.mjs +19 -0
- package/dist/lib/browser/chunk-WJXU4GKV.mjs.map +7 -0
- package/dist/lib/browser/{identity-created-23XJJV2N.mjs → identity-created-PW2BA46S.mjs} +4 -4
- package/dist/lib/browser/{identity-created-23XJJV2N.mjs.map → identity-created-PW2BA46S.mjs.map} +3 -3
- package/dist/lib/browser/index.mjs +109 -40
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-WK5WYFH3.mjs → intent-resolver-MBVOLXFQ.mjs} +194 -32
- package/dist/lib/browser/intent-resolver-MBVOLXFQ.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-root-7S6FIC5G.mjs → react-root-NKEKCEYM.mjs} +11 -11
- package/dist/lib/browser/react-root-NKEKCEYM.mjs.map +7 -0
- package/dist/lib/browser/{react-surface-6C3YJNDK.mjs → react-surface-PYSN2MBY.mjs} +78 -77
- package/dist/lib/browser/react-surface-PYSN2MBY.mjs.map +7 -0
- package/dist/lib/browser/{schema-defs-K3B3OAH4.mjs → schema-defs-DWYK7TYW.mjs} +5 -5
- package/dist/lib/browser/schema-defs-DWYK7TYW.mjs.map +7 -0
- package/dist/lib/browser/{settings-XNWYRWNM.mjs → settings-ZUCC3ZLB.mjs} +5 -5
- package/dist/lib/browser/{settings-XNWYRWNM.mjs.map → settings-ZUCC3ZLB.mjs.map} +1 -1
- package/dist/lib/browser/{spaces-ready-K7NSNBHM.mjs → spaces-ready-HTWWJHLR.mjs} +18 -16
- package/dist/lib/browser/spaces-ready-HTWWJHLR.mjs.map +7 -0
- package/dist/lib/browser/{state-522XTUR4.mjs → state-ISVAKMO7.mjs} +7 -7
- package/dist/lib/browser/state-ISVAKMO7.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +2 -2
- package/dist/lib/node-esm/CollectionMain-OUHGG6OC.mjs +32 -0
- package/dist/lib/node-esm/CollectionMain-OUHGG6OC.mjs.map +7 -0
- package/dist/lib/node-esm/ObjectDetailsPanel-4SDHQVQU.mjs +146 -0
- package/dist/lib/node-esm/ObjectDetailsPanel-4SDHQVQU.mjs.map +7 -0
- package/dist/lib/node-esm/ObjectSettings-EU6F43RP.mjs +147 -0
- package/dist/lib/node-esm/ObjectSettings-EU6F43RP.mjs.map +7 -0
- package/dist/lib/node-esm/RecordMain-SD76DGOR.mjs +100 -0
- package/dist/lib/node-esm/RecordMain-SD76DGOR.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-TO72W6MI.mjs → app-graph-builder-B23W62HY.mjs} +215 -58
- package/dist/lib/node-esm/app-graph-builder-B23W62HY.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-LA3IZDXJ.mjs → app-graph-serializer-3Z3EXEEF.mjs} +14 -14
- package/dist/lib/node-esm/app-graph-serializer-3Z3EXEEF.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-BDEFTL6K.mjs +18 -0
- package/dist/lib/node-esm/chunk-BDEFTL6K.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-SXD6T2N4.mjs → chunk-G4PDWB7G.mjs} +80 -10
- package/dist/lib/node-esm/chunk-G4PDWB7G.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-H4JILUJK.mjs +20 -0
- package/dist/lib/node-esm/chunk-H4JILUJK.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-OUBADVJE.mjs → chunk-KKPCCA5O.mjs} +482 -448
- package/dist/lib/node-esm/chunk-KKPCCA5O.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-PM4ZIGKC.mjs +167 -0
- package/dist/lib/node-esm/chunk-PM4ZIGKC.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-HJJHLWKY.mjs → chunk-XEVIWD3O.mjs} +221 -57
- package/dist/lib/node-esm/chunk-XEVIWD3O.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-2THX6G4C.mjs → chunk-YFQXFQGT.mjs} +77 -12
- package/dist/lib/node-esm/chunk-YFQXFQGT.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-ZLMFLI7G.mjs +21 -0
- package/dist/lib/node-esm/chunk-ZLMFLI7G.mjs.map +7 -0
- package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs → identity-created-MWTLGQRU.mjs} +4 -4
- package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs.map → identity-created-MWTLGQRU.mjs.map} +3 -3
- package/dist/lib/node-esm/index.mjs +109 -40
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-HSR27ME4.mjs → intent-resolver-IWI47NTW.mjs} +194 -32
- package/dist/lib/node-esm/intent-resolver-IWI47NTW.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-HUK3ANLV.mjs → react-root-LX7SIG6M.mjs} +11 -11
- package/dist/lib/node-esm/react-root-LX7SIG6M.mjs.map +7 -0
- package/dist/lib/node-esm/{react-surface-AGAWX7DD.mjs → react-surface-6SVGOZNJ.mjs} +78 -77
- package/dist/lib/node-esm/react-surface-6SVGOZNJ.mjs.map +7 -0
- package/dist/lib/node-esm/{schema-defs-4MCDG4DV.mjs → schema-defs-EOG2UPJU.mjs} +5 -5
- package/dist/lib/node-esm/schema-defs-EOG2UPJU.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-YGKHGFPH.mjs → settings-ZDJNLFGW.mjs} +5 -5
- package/dist/lib/node-esm/{settings-YGKHGFPH.mjs.map → settings-ZDJNLFGW.mjs.map} +1 -1
- package/dist/lib/node-esm/{spaces-ready-UM2P3DCR.mjs → spaces-ready-VUGYPF4L.mjs} +18 -16
- package/dist/lib/node-esm/spaces-ready-VUGYPF4L.mjs.map +7 -0
- package/dist/lib/node-esm/{state-C4IOXPZP.mjs → state-QZ4Q6ZRL.mjs} +7 -7
- package/dist/lib/node-esm/state-QZ4Q6ZRL.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +2 -2
- package/dist/types/src/SpacePlugin.d.ts +1 -1
- package/dist/types/src/SpacePlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-serializer.d.ts +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +12 -5
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/identity-created.d.ts +1 -1
- package/dist/types/src/capabilities/identity-created.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +11 -12
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-root.d.ts +2 -2
- 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/schema-defs.d.ts +1 -1
- package/dist/types/src/capabilities/schema-defs.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings.d.ts +1 -1
- package/dist/types/src/capabilities/spaces-ready.d.ts +1 -1
- package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
- package/dist/types/src/capabilities/state.d.ts +1 -1
- 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 +1 -0
- package/dist/types/src/components/CollectionMain.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +5 -4
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1664 -4
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +5 -3
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -1
- package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
- package/dist/types/src/components/JoinDialog.d.ts +1 -1
- package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
- package/dist/types/src/components/MembersContainer.d.ts +3 -2
- package/dist/types/src/components/MembersContainer.d.ts.map +1 -1
- package/dist/types/src/components/MembersContainer.stories.d.ts +1664 -5
- package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
- package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +9 -0
- package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -0
- package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts +10 -0
- package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -0
- package/dist/types/src/components/ObjectDetailsPanel/index.d.ts +3 -0
- package/dist/types/src/components/ObjectDetailsPanel/index.d.ts.map +1 -0
- package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +2 -2
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +1500 -0
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -0
- package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +1 -1
- package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
- package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -1
- package/dist/types/src/components/ObjectSettings/index.d.ts +2 -1
- package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -1
- 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 +1 -1
- package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
- package/dist/types/src/components/RecordMain.d.ts +8 -0
- package/dist/types/src/components/RecordMain.d.ts.map +1 -0
- package/dist/types/src/components/RecordMain.stories.d.ts +1667 -0
- package/dist/types/src/components/RecordMain.stories.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 +1492 -4
- package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1497 -4
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1498 -5
- package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/status.d.ts +5 -5
- package/dist/types/src/components/ViewEditor.d.ts +8 -0
- package/dist/types/src/components/ViewEditor.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +13 -2
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/events.d.ts +1 -0
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +1 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
- package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +1 -1
- package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
- package/dist/types/src/hooks/usePath.d.ts +1 -1
- package/dist/types/src/hooks/usePath.d.ts.map +1 -1
- package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
- package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
- package/dist/types/src/meta.d.ts +0 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +1342 -11
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +128 -66
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +37 -7
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +63 -60
- package/src/SpacePlugin.ts +201 -139
- package/src/capabilities/app-graph-builder.ts +265 -47
- package/src/capabilities/app-graph-serializer.ts +7 -7
- package/src/capabilities/capabilities.ts +20 -9
- package/src/capabilities/identity-created.ts +1 -1
- package/src/capabilities/index.ts +0 -1
- package/src/capabilities/intent-resolver.ts +147 -21
- package/src/capabilities/react-root.tsx +4 -3
- package/src/capabilities/react-surface.tsx +79 -99
- package/src/capabilities/schema-defs.ts +3 -2
- package/src/capabilities/spaces-ready.ts +11 -8
- package/src/capabilities/state.ts +5 -4
- package/src/components/AwaitingObject.tsx +7 -9
- package/src/components/CollectionMain.tsx +4 -2
- package/src/components/CollectionSection.tsx +2 -2
- package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +11 -10
- package/src/components/CreateDialog/CreateObjectDialog.tsx +51 -36
- package/src/components/CreateDialog/CreateObjectPanel.tsx +22 -11
- package/src/components/CreateDialog/CreateSpaceDialog.tsx +6 -5
- package/src/components/JoinDialog.tsx +7 -7
- package/src/components/MembersContainer.stories.tsx +36 -10
- package/src/components/MembersContainer.tsx +18 -17
- package/src/components/MenuFooter.tsx +4 -5
- package/src/components/ObjectDetailsPanel/ObjectDetailsPanel.tsx +52 -0
- package/src/components/ObjectDetailsPanel/ObjectForm.tsx +75 -0
- package/src/components/ObjectDetailsPanel/index.ts +7 -0
- package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +4 -3
- package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
- package/src/components/ObjectSettings/BaseObjectSettings.tsx +86 -26
- package/src/components/ObjectSettings/ForeignKeys.tsx +3 -3
- package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +3 -2
- package/src/components/ObjectSettings/index.ts +3 -1
- package/src/components/PersistenceStatus.tsx +7 -8
- package/src/components/PopoverRenameObject.tsx +10 -16
- package/src/components/PopoverRenameSpace.tsx +4 -4
- package/src/components/RecordMain.stories.tsx +116 -0
- package/src/components/RecordMain.tsx +83 -0
- package/src/components/SchemaContainer.tsx +5 -5
- package/src/components/SpacePluginSettings.tsx +8 -9
- package/src/components/SpacePresence.stories.tsx +23 -22
- package/src/components/SpacePresence.tsx +10 -10
- package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +17 -9
- package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +19 -18
- package/src/components/SyncStatus/InlineSyncStatus.tsx +7 -7
- package/src/components/SyncStatus/SyncStatus.stories.tsx +9 -9
- package/src/components/SyncStatus/SyncStatus.tsx +98 -7
- package/src/components/SyncStatus/status.ts +4 -4
- package/src/components/ViewEditor.tsx +58 -0
- package/src/components/index.ts +8 -2
- package/src/events.ts +7 -6
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useActiveSpace.ts +2 -2
- package/src/hooks/useInputSurfaceLookup.tsx +2 -2
- package/src/hooks/usePath.ts +1 -1
- package/src/hooks/useTypeOptions.ts +59 -0
- package/src/meta.ts +6 -3
- package/src/translations.ts +77 -5
- package/src/types/types.ts +78 -16
- package/src/util.tsx +215 -57
- package/dist/lib/browser/app-graph-builder-PMDF6PJV.mjs +0 -363
- package/dist/lib/browser/app-graph-builder-PMDF6PJV.mjs.map +0 -7
- package/dist/lib/browser/app-graph-serializer-UKYMBX4O.mjs.map +0 -7
- package/dist/lib/browser/chunk-6VLSHG4A.mjs.map +0 -7
- package/dist/lib/browser/chunk-C7KGJTAL.mjs +0 -18
- package/dist/lib/browser/chunk-C7KGJTAL.mjs.map +0 -7
- package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
- package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
- package/dist/lib/browser/chunk-GVTXQCIW.mjs.map +0 -7
- package/dist/lib/browser/chunk-S6NY637J.mjs.map +0 -7
- package/dist/lib/browser/chunk-VLBRSGJ2.mjs +0 -94
- package/dist/lib/browser/chunk-VLBRSGJ2.mjs.map +0 -7
- package/dist/lib/browser/chunk-WBSEOLEM.mjs.map +0 -7
- package/dist/lib/browser/chunk-XXIPJLJF.mjs +0 -19
- package/dist/lib/browser/chunk-XXIPJLJF.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-WK5WYFH3.mjs.map +0 -7
- package/dist/lib/browser/react-root-7S6FIC5G.mjs.map +0 -7
- package/dist/lib/browser/react-surface-6C3YJNDK.mjs.map +0 -7
- package/dist/lib/browser/schema-defs-K3B3OAH4.mjs.map +0 -7
- package/dist/lib/browser/schema-tools-BNP4JTD7.mjs +0 -124
- package/dist/lib/browser/schema-tools-BNP4JTD7.mjs.map +0 -7
- package/dist/lib/browser/spaces-ready-K7NSNBHM.mjs.map +0 -7
- package/dist/lib/browser/state-522XTUR4.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-TO72W6MI.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-serializer-LA3IZDXJ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2THX6G4C.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-72QMMRKC.mjs +0 -19
- package/dist/lib/node-esm/chunk-72QMMRKC.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-AT7LGFER.mjs +0 -20
- package/dist/lib/node-esm/chunk-AT7LGFER.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HJJHLWKY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HWNG4MEU.mjs +0 -15
- package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-OUBADVJE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-SSLBYZEY.mjs +0 -96
- package/dist/lib/node-esm/chunk-SSLBYZEY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-SXD6T2N4.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-HSR27ME4.mjs.map +0 -7
- package/dist/lib/node-esm/react-root-HUK3ANLV.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-AGAWX7DD.mjs.map +0 -7
- package/dist/lib/node-esm/schema-defs-4MCDG4DV.mjs.map +0 -7
- package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs +0 -126
- package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs.map +0 -7
- package/dist/lib/node-esm/spaces-ready-UM2P3DCR.mjs.map +0 -7
- package/dist/lib/node-esm/state-C4IOXPZP.mjs.map +0 -7
- package/dist/types/src/capabilities/schema-tool.test.d.ts +0 -2
- package/dist/types/src/capabilities/schema-tool.test.d.ts.map +0 -1
- package/dist/types/src/capabilities/schema-tools.d.ts +0 -13
- package/dist/types/src/capabilities/schema-tools.d.ts.map +0 -1
- package/src/capabilities/schema-tool.test.ts +0 -44
- package/src/capabilities/schema-tools.ts +0 -125
|
@@ -3,32 +3,38 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { Rx } from '@effect-rx/rx-react';
|
|
6
|
-
import
|
|
6
|
+
import * as Array from 'effect/Array';
|
|
7
|
+
import * as Function from 'effect/Function';
|
|
8
|
+
import * as Option from 'effect/Option';
|
|
9
|
+
import * as Schema from 'effect/Schema';
|
|
7
10
|
|
|
8
|
-
import { Capabilities, contributes, createIntent
|
|
9
|
-
import {
|
|
11
|
+
import { Capabilities, type PluginContext, contributes, createIntent } from '@dxos/app-framework';
|
|
12
|
+
import { type QueryResult, type Space, SpaceState, getSpace, isSpace, parseId } from '@dxos/client/echo';
|
|
10
13
|
import { Filter, Obj, Query, Type } from '@dxos/echo';
|
|
11
14
|
import { log } from '@dxos/log';
|
|
12
15
|
import { ClientCapabilities } from '@dxos/plugin-client';
|
|
13
|
-
import {
|
|
14
|
-
import { createExtension, rxFromObservable,
|
|
15
|
-
import { DataType } from '@dxos/schema';
|
|
16
|
+
import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';
|
|
17
|
+
import { ROOT_ID, createExtension, rxFromObservable, rxFromSignal } from '@dxos/plugin-graph';
|
|
18
|
+
import { DataType, getTypenameFromQuery } from '@dxos/schema';
|
|
16
19
|
import { isNonNullable } from '@dxos/util';
|
|
17
20
|
|
|
18
|
-
import { SpaceCapabilities } from './capabilities';
|
|
19
21
|
import { getActiveSpace } from '../hooks';
|
|
20
|
-
import {
|
|
22
|
+
import { meta } from '../meta';
|
|
21
23
|
import { SPACE_TYPE, SpaceAction, type SpaceSettingsProps } from '../types';
|
|
22
24
|
import {
|
|
25
|
+
SHARED,
|
|
26
|
+
SPACES,
|
|
23
27
|
constructObjectActions,
|
|
24
28
|
constructSpaceActions,
|
|
25
29
|
constructSpaceNode,
|
|
26
30
|
createObjectNode,
|
|
31
|
+
createStaticSchemaActions,
|
|
32
|
+
createStaticSchemaNode,
|
|
27
33
|
rxFromQuery,
|
|
28
|
-
SHARED,
|
|
29
|
-
SPACES,
|
|
30
34
|
} from '../util';
|
|
31
35
|
|
|
36
|
+
import { SpaceCapabilities } from './capabilities';
|
|
37
|
+
|
|
32
38
|
export default (context: PluginContext) => {
|
|
33
39
|
// TODO(wittjosiah): Make reactive.
|
|
34
40
|
const resolve = (typename: string) =>
|
|
@@ -39,7 +45,7 @@ export default (context: PluginContext) => {
|
|
|
39
45
|
type: SPACES,
|
|
40
46
|
cacheable: ['label', 'role'],
|
|
41
47
|
properties: {
|
|
42
|
-
label: ['spaces label', { ns:
|
|
48
|
+
label: ['spaces label', { ns: meta.id }],
|
|
43
49
|
icon: 'ph--planet--regular',
|
|
44
50
|
testId: 'spacePlugin.spaces',
|
|
45
51
|
role: 'branch',
|
|
@@ -74,11 +80,11 @@ export default (context: PluginContext) => {
|
|
|
74
80
|
return contributes(Capabilities.AppGraphBuilder, [
|
|
75
81
|
// Primary actions.
|
|
76
82
|
createExtension({
|
|
77
|
-
id: `${
|
|
83
|
+
id: `${meta.id}/primary-actions`,
|
|
78
84
|
position: 'hoist',
|
|
79
85
|
actions: (node) =>
|
|
80
86
|
Rx.make((get) =>
|
|
81
|
-
pipe(
|
|
87
|
+
Function.pipe(
|
|
82
88
|
get(node),
|
|
83
89
|
Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
|
|
84
90
|
Option.map(() => [
|
|
@@ -89,7 +95,7 @@ export default (context: PluginContext) => {
|
|
|
89
95
|
await dispatch(createIntent(SpaceAction.OpenCreateSpace));
|
|
90
96
|
},
|
|
91
97
|
properties: {
|
|
92
|
-
label: ['create space label', { ns:
|
|
98
|
+
label: ['create space label', { ns: meta.id }],
|
|
93
99
|
icon: 'ph--plus--regular',
|
|
94
100
|
testId: 'spacePlugin.createSpace',
|
|
95
101
|
disposition: 'menu',
|
|
@@ -102,7 +108,7 @@ export default (context: PluginContext) => {
|
|
|
102
108
|
await dispatch(createIntent(SpaceAction.Join));
|
|
103
109
|
},
|
|
104
110
|
properties: {
|
|
105
|
-
label: ['join space label', { ns:
|
|
111
|
+
label: ['join space label', { ns: meta.id }],
|
|
106
112
|
icon: 'ph--sign-in--regular',
|
|
107
113
|
testId: 'spacePlugin.joinSpace',
|
|
108
114
|
disposition: 'menu',
|
|
@@ -117,7 +123,7 @@ export default (context: PluginContext) => {
|
|
|
117
123
|
await dispatch(createIntent(SpaceAction.OpenMembers, { space }));
|
|
118
124
|
},
|
|
119
125
|
properties: {
|
|
120
|
-
label: ['share space label', { ns:
|
|
126
|
+
label: ['share space label', { ns: meta.id }],
|
|
121
127
|
icon: 'ph--users--regular',
|
|
122
128
|
testId: 'spacePlugin.shareSpace',
|
|
123
129
|
keyBinding: {
|
|
@@ -135,7 +141,7 @@ export default (context: PluginContext) => {
|
|
|
135
141
|
await dispatch(createIntent(SpaceAction.OpenSettings, { space }));
|
|
136
142
|
},
|
|
137
143
|
properties: {
|
|
138
|
-
label: ['open current space settings label', { ns:
|
|
144
|
+
label: ['open current space settings label', { ns: meta.id }],
|
|
139
145
|
icon: 'ph--faders--regular',
|
|
140
146
|
keyBinding: {
|
|
141
147
|
macos: 'meta+shift+,',
|
|
@@ -151,11 +157,11 @@ export default (context: PluginContext) => {
|
|
|
151
157
|
|
|
152
158
|
// Create spaces group node.
|
|
153
159
|
createExtension({
|
|
154
|
-
id: `${
|
|
160
|
+
id: `${meta.id}/root`,
|
|
155
161
|
position: 'hoist',
|
|
156
162
|
connector: (node) =>
|
|
157
163
|
Rx.make((get) =>
|
|
158
|
-
pipe(
|
|
164
|
+
Function.pipe(
|
|
159
165
|
get(node),
|
|
160
166
|
Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
|
|
161
167
|
Option.map(() => [spacesNode]),
|
|
@@ -171,7 +177,7 @@ export default (context: PluginContext) => {
|
|
|
171
177
|
connector: (node) => {
|
|
172
178
|
let query: QueryResult<Type.Expando> | undefined;
|
|
173
179
|
return Rx.make((get) =>
|
|
174
|
-
pipe(
|
|
180
|
+
Function.pipe(
|
|
175
181
|
get(node),
|
|
176
182
|
Option.flatMap((node) => (node.id === SPACES ? Option.some(node) : Option.none())),
|
|
177
183
|
Option.map(() => {
|
|
@@ -188,7 +194,7 @@ export default (context: PluginContext) => {
|
|
|
188
194
|
}
|
|
189
195
|
|
|
190
196
|
const settings = get(context.capabilities(Capabilities.SettingsStore))[0]?.getStore<SpaceSettingsProps>(
|
|
191
|
-
|
|
197
|
+
meta.id,
|
|
192
198
|
)?.value;
|
|
193
199
|
|
|
194
200
|
// TODO(wittjosiah): During client reset, accessing default space throws.
|
|
@@ -273,10 +279,10 @@ export default (context: PluginContext) => {
|
|
|
273
279
|
|
|
274
280
|
// Create space actions.
|
|
275
281
|
createExtension({
|
|
276
|
-
id: `${
|
|
282
|
+
id: `${meta.id}/actions`,
|
|
277
283
|
actions: (node) =>
|
|
278
284
|
Rx.make((get) =>
|
|
279
|
-
pipe(
|
|
285
|
+
Function.pipe(
|
|
280
286
|
get(node),
|
|
281
287
|
Option.flatMap((node) =>
|
|
282
288
|
node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),
|
|
@@ -305,10 +311,10 @@ export default (context: PluginContext) => {
|
|
|
305
311
|
|
|
306
312
|
// Create nodes for objects in the root collection of a space.
|
|
307
313
|
createExtension({
|
|
308
|
-
id: `${
|
|
314
|
+
id: `${meta.id}/root-collection`,
|
|
309
315
|
connector: (node) =>
|
|
310
316
|
Rx.make((get) =>
|
|
311
|
-
pipe(
|
|
317
|
+
Function.pipe(
|
|
312
318
|
get(node),
|
|
313
319
|
Option.flatMap((node) =>
|
|
314
320
|
node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),
|
|
@@ -331,7 +337,7 @@ export default (context: PluginContext) => {
|
|
|
331
337
|
|
|
332
338
|
return get(
|
|
333
339
|
rxFromSignal(() =>
|
|
334
|
-
pipe(
|
|
340
|
+
Function.pipe(
|
|
335
341
|
collection.objects,
|
|
336
342
|
Array.map((object) => object.target),
|
|
337
343
|
Array.filter(isNonNullable),
|
|
@@ -355,10 +361,10 @@ export default (context: PluginContext) => {
|
|
|
355
361
|
|
|
356
362
|
// Create nodes for objects in a collection or by its fully qualified id.
|
|
357
363
|
createExtension({
|
|
358
|
-
id: `${
|
|
364
|
+
id: `${meta.id}/objects`,
|
|
359
365
|
connector: (node) =>
|
|
360
366
|
Rx.make((get) =>
|
|
361
|
-
pipe(
|
|
367
|
+
Function.pipe(
|
|
362
368
|
get(node),
|
|
363
369
|
Option.flatMap((node) =>
|
|
364
370
|
Obj.instanceOf(DataType.Collection, node.data) ? Option.some(node.data) : Option.none(),
|
|
@@ -369,7 +375,7 @@ export default (context: PluginContext) => {
|
|
|
369
375
|
|
|
370
376
|
return get(
|
|
371
377
|
rxFromSignal(() =>
|
|
372
|
-
pipe(
|
|
378
|
+
Function.pipe(
|
|
373
379
|
collection.objects,
|
|
374
380
|
Array.map((object) => object.target),
|
|
375
381
|
Array.filter(isNonNullable),
|
|
@@ -426,20 +432,19 @@ export default (context: PluginContext) => {
|
|
|
426
432
|
|
|
427
433
|
// Create nodes for objects in a query collection.
|
|
428
434
|
createExtension({
|
|
429
|
-
id: `${
|
|
435
|
+
id: `${meta.id}/query-collection-objects`,
|
|
430
436
|
connector: (node) => {
|
|
431
437
|
let query: QueryResult<Type.Expando> | undefined;
|
|
432
438
|
return Rx.make((get) =>
|
|
433
|
-
pipe(
|
|
439
|
+
Function.pipe(
|
|
434
440
|
get(node),
|
|
435
441
|
Option.flatMap((node) =>
|
|
436
442
|
Obj.instanceOf(DataType.QueryCollection, node.data) ? Option.some(node.data) : Option.none(),
|
|
437
443
|
),
|
|
438
444
|
Option.flatMap((collection) => {
|
|
439
445
|
const space = getSpace(collection);
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
: Option.none();
|
|
446
|
+
const typename = getTypenameFromQuery(collection.query);
|
|
447
|
+
return typename && space ? Option.some({ typename, space }) : Option.none();
|
|
443
448
|
}),
|
|
444
449
|
Option.map(({ typename, space }) => {
|
|
445
450
|
const state = context.getCapability(SpaceCapabilities.State);
|
|
@@ -456,16 +461,144 @@ export default (context: PluginContext) => {
|
|
|
456
461
|
),
|
|
457
462
|
);
|
|
458
463
|
}
|
|
464
|
+
return (
|
|
465
|
+
get(rxFromQuery(query))
|
|
466
|
+
// TODO(wittjosiah): This should be the default sort order.
|
|
467
|
+
.toSorted((a, b) => a.id.localeCompare(b.id))
|
|
468
|
+
.map((object) =>
|
|
469
|
+
get(
|
|
470
|
+
rxFromSignal(() =>
|
|
471
|
+
createObjectNode({
|
|
472
|
+
object,
|
|
473
|
+
space,
|
|
474
|
+
resolve,
|
|
475
|
+
droppable: false, // Cannot rearrange query collections.
|
|
476
|
+
navigable: state.navigableCollections,
|
|
477
|
+
}),
|
|
478
|
+
),
|
|
479
|
+
),
|
|
480
|
+
)
|
|
481
|
+
.filter(isNonNullable)
|
|
482
|
+
);
|
|
483
|
+
}),
|
|
484
|
+
Option.getOrElse(() => []),
|
|
485
|
+
),
|
|
486
|
+
);
|
|
487
|
+
},
|
|
488
|
+
}),
|
|
489
|
+
|
|
490
|
+
// Static schema records.
|
|
491
|
+
createExtension({
|
|
492
|
+
id: `${meta.id}/static-schemas`,
|
|
493
|
+
connector: (node) => {
|
|
494
|
+
const client = context.getCapability(ClientCapabilities.Client);
|
|
495
|
+
return Rx.make((get) =>
|
|
496
|
+
Function.pipe(
|
|
497
|
+
get(node),
|
|
498
|
+
Option.flatMap((node) =>
|
|
499
|
+
Obj.instanceOf(DataType.QueryCollection, node.data) &&
|
|
500
|
+
getTypenameFromQuery(node.data.query) === DataType.StoredSchema.typename
|
|
501
|
+
? Option.some(node.data)
|
|
502
|
+
: Option.none(),
|
|
503
|
+
),
|
|
504
|
+
Option.flatMap((collection) => {
|
|
505
|
+
const space = getSpace(collection);
|
|
506
|
+
return space?.properties.staticRecords ? Option.some(space) : Option.none();
|
|
507
|
+
}),
|
|
508
|
+
Option.map((space) => {
|
|
509
|
+
return get(rxFromSignal(() => (space.properties.staticRecords ?? []) as string[]))
|
|
510
|
+
.map((typename) =>
|
|
511
|
+
client.graph.schemaRegistry.schemas.find((schema) => Type.getTypename(schema) === typename),
|
|
512
|
+
)
|
|
513
|
+
.filter(isNonNullable)
|
|
514
|
+
.map((schema) => createStaticSchemaNode({ schema, space }));
|
|
515
|
+
}),
|
|
516
|
+
Option.getOrElse(() => []),
|
|
517
|
+
),
|
|
518
|
+
);
|
|
519
|
+
},
|
|
520
|
+
}),
|
|
521
|
+
|
|
522
|
+
// Create static schema actions.
|
|
523
|
+
createExtension({
|
|
524
|
+
id: `${meta.id}/static-schema-actions`,
|
|
525
|
+
actions: (node) => {
|
|
526
|
+
let query: QueryResult<DataType.View> | undefined;
|
|
527
|
+
return Rx.make((get) =>
|
|
528
|
+
Function.pipe(
|
|
529
|
+
get(node),
|
|
530
|
+
Option.flatMap((node) => {
|
|
531
|
+
const space = isSpace(node.properties.space) ? node.properties.space : undefined;
|
|
532
|
+
return space && Schema.isSchema(node.data) ? Option.some({ space, schema: node.data }) : Option.none();
|
|
533
|
+
}),
|
|
534
|
+
Option.map(({ space, schema }) => {
|
|
535
|
+
if (!query) {
|
|
536
|
+
// TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
|
|
537
|
+
query = space.db.query(Filter.type(DataType.View));
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
const views = get(rxFromQuery(query));
|
|
541
|
+
const filteredViews = get(
|
|
542
|
+
rxFromSignal(() =>
|
|
543
|
+
// TODO(wittjosiah): Remove cast.
|
|
544
|
+
views.filter(
|
|
545
|
+
(view) => getTypenameFromQuery(view.query.ast) === Type.getTypename(schema as Type.Obj.Any),
|
|
546
|
+
),
|
|
547
|
+
),
|
|
548
|
+
);
|
|
549
|
+
const deletable = filteredViews.length === 0;
|
|
550
|
+
|
|
551
|
+
const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
|
|
552
|
+
if (!dispatcher) {
|
|
553
|
+
return [];
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
// TODO(wittjosiah): Remove cast.
|
|
557
|
+
return createStaticSchemaActions({
|
|
558
|
+
schema: schema as Type.Obj.Any,
|
|
559
|
+
space,
|
|
560
|
+
dispatch: dispatcher.dispatchPromise,
|
|
561
|
+
deletable,
|
|
562
|
+
});
|
|
563
|
+
}),
|
|
564
|
+
Option.getOrElse(() => []),
|
|
565
|
+
),
|
|
566
|
+
);
|
|
567
|
+
},
|
|
568
|
+
}),
|
|
569
|
+
|
|
570
|
+
// Create nodes for schema views.
|
|
571
|
+
createExtension({
|
|
572
|
+
id: `${meta.id}/schema-views`,
|
|
573
|
+
connector: (node) => {
|
|
574
|
+
let query: QueryResult<DataType.View> | undefined;
|
|
575
|
+
return Rx.make((get) =>
|
|
576
|
+
Function.pipe(
|
|
577
|
+
get(node),
|
|
578
|
+
Option.flatMap((node) => {
|
|
579
|
+
const space = getSpace(node.data) ?? (isSpace(node.properties.space) ? node.properties.space : undefined);
|
|
580
|
+
return space && (Obj.instanceOf(DataType.StoredSchema, node.data) || Schema.isSchema(node.data))
|
|
581
|
+
? Option.some({ space, schema: node.data })
|
|
582
|
+
: Option.none();
|
|
583
|
+
}),
|
|
584
|
+
Option.map(({ space, schema }) => {
|
|
585
|
+
if (!query) {
|
|
586
|
+
// TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
|
|
587
|
+
query = space.db.query(Filter.type(DataType.View));
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
// TODO(wittjosiah): Remove cast.
|
|
591
|
+
const typename = Schema.isSchema(schema) ? Type.getTypename(schema as Type.Obj.Any) : schema.typename;
|
|
459
592
|
return get(rxFromQuery(query))
|
|
460
|
-
.
|
|
593
|
+
.filter((view) => getTypenameFromQuery(view.query.ast) === typename)
|
|
594
|
+
.map((view) =>
|
|
461
595
|
get(
|
|
462
596
|
rxFromSignal(() =>
|
|
463
597
|
createObjectNode({
|
|
464
|
-
object,
|
|
598
|
+
object: view,
|
|
465
599
|
space,
|
|
466
600
|
resolve,
|
|
467
|
-
droppable: false,
|
|
468
|
-
navigable: state.navigableCollections,
|
|
601
|
+
droppable: false,
|
|
469
602
|
}),
|
|
470
603
|
),
|
|
471
604
|
),
|
|
@@ -478,15 +611,73 @@ export default (context: PluginContext) => {
|
|
|
478
611
|
},
|
|
479
612
|
}),
|
|
480
613
|
|
|
614
|
+
// Create record nodes.
|
|
615
|
+
createExtension({
|
|
616
|
+
id: `${meta.id}/records`,
|
|
617
|
+
resolver: (id) => {
|
|
618
|
+
let query: QueryResult<Type.Expando> | undefined;
|
|
619
|
+
return Rx.make((get) => {
|
|
620
|
+
const client = context.getCapability(ClientCapabilities.Client);
|
|
621
|
+
const { spaceId, objectId } = parseId(id);
|
|
622
|
+
if (!spaceId || !objectId) {
|
|
623
|
+
return null;
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
const space = client.spaces.get(spaceId);
|
|
627
|
+
if (!space) {
|
|
628
|
+
return null;
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
if (!query) {
|
|
632
|
+
query = space.db.query(Filter.ids(objectId));
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
const object = get(rxFromQuery(query)).at(0);
|
|
636
|
+
if (!object) {
|
|
637
|
+
return null;
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
return createObjectNode({ object, space, resolve, disposition: 'hidden' });
|
|
641
|
+
});
|
|
642
|
+
},
|
|
643
|
+
}),
|
|
644
|
+
|
|
481
645
|
// Create collection actions and action groups.
|
|
482
646
|
createExtension({
|
|
483
|
-
id: `${
|
|
484
|
-
actions: (node) =>
|
|
485
|
-
|
|
486
|
-
|
|
647
|
+
id: `${meta.id}/object-actions`,
|
|
648
|
+
actions: (node) => {
|
|
649
|
+
let query: QueryResult<DataType.View> | undefined;
|
|
650
|
+
return Rx.make((get) =>
|
|
651
|
+
Function.pipe(
|
|
487
652
|
get(node),
|
|
488
|
-
Option.flatMap((node) =>
|
|
489
|
-
|
|
653
|
+
Option.flatMap((node) => {
|
|
654
|
+
const space = getSpace(node.data);
|
|
655
|
+
return space && Obj.isObject(node.data) && Obj.getTypename(node.data) === node.type
|
|
656
|
+
? Option.some({ space, object: node.data })
|
|
657
|
+
: Option.none();
|
|
658
|
+
}),
|
|
659
|
+
Option.flatMap(({ space, object }) => {
|
|
660
|
+
const isSchema = Obj.instanceOf(DataType.StoredSchema, object);
|
|
661
|
+
if (!query && isSchema) {
|
|
662
|
+
// TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
|
|
663
|
+
query = space.db.query(Filter.type(DataType.View));
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
let deletable =
|
|
667
|
+
!isSchema &&
|
|
668
|
+
// Don't allow the Records smart collection to be deleted.
|
|
669
|
+
!(
|
|
670
|
+
Obj.instanceOf(DataType.QueryCollection, object) &&
|
|
671
|
+
getTypenameFromQuery(object.query) === DataType.StoredSchema.typename
|
|
672
|
+
);
|
|
673
|
+
if (isSchema && query) {
|
|
674
|
+
const views = get(rxFromQuery(query));
|
|
675
|
+
const filteredViews = get(
|
|
676
|
+
rxFromSignal(() => views.filter((view) => getTypenameFromQuery(view.query.ast) === object.typename)),
|
|
677
|
+
);
|
|
678
|
+
deletable = filteredViews.length === 0;
|
|
679
|
+
}
|
|
680
|
+
|
|
490
681
|
const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
|
|
491
682
|
const [appGraph] = get(context.capabilities(Capabilities.AppGraph));
|
|
492
683
|
const [state] = get(context.capabilities(SpaceCapabilities.State));
|
|
@@ -500,6 +691,7 @@ export default (context: PluginContext) => {
|
|
|
500
691
|
graph: appGraph.graph,
|
|
501
692
|
dispatch: dispatcher.dispatchPromise,
|
|
502
693
|
objectForms,
|
|
694
|
+
deletable,
|
|
503
695
|
navigable: get(rxFromSignal(() => state.navigableCollections)),
|
|
504
696
|
});
|
|
505
697
|
}
|
|
@@ -507,15 +699,41 @@ export default (context: PluginContext) => {
|
|
|
507
699
|
Option.map((params) => constructObjectActions(params)),
|
|
508
700
|
Option.getOrElse(() => []),
|
|
509
701
|
),
|
|
702
|
+
);
|
|
703
|
+
},
|
|
704
|
+
}),
|
|
705
|
+
|
|
706
|
+
// View selected objects.
|
|
707
|
+
createExtension({
|
|
708
|
+
id: `${meta.id}/selected-objects`,
|
|
709
|
+
connector: (node) =>
|
|
710
|
+
Rx.make((get) =>
|
|
711
|
+
Function.pipe(
|
|
712
|
+
get(node),
|
|
713
|
+
Option.flatMap((node) => (Obj.instanceOf(DataType.View, node.data) ? Option.some(node) : Option.none())),
|
|
714
|
+
Option.map((node) => [
|
|
715
|
+
{
|
|
716
|
+
id: [node.id, 'selected-objects'].join(ATTENDABLE_PATH_SEPARATOR),
|
|
717
|
+
type: PLANK_COMPANION_TYPE,
|
|
718
|
+
data: 'selected-objects',
|
|
719
|
+
properties: {
|
|
720
|
+
label: ['companion selected objects label', { ns: meta.id }],
|
|
721
|
+
icon: 'ph--tree-view--regular',
|
|
722
|
+
disposition: 'hidden',
|
|
723
|
+
},
|
|
724
|
+
},
|
|
725
|
+
]),
|
|
726
|
+
Option.getOrElse(() => []),
|
|
727
|
+
),
|
|
510
728
|
),
|
|
511
729
|
}),
|
|
512
730
|
|
|
513
731
|
// Object settings plank companion.
|
|
514
732
|
createExtension({
|
|
515
|
-
id: `${
|
|
733
|
+
id: `${meta.id}/settings`,
|
|
516
734
|
connector: (node) =>
|
|
517
735
|
Rx.make((get) =>
|
|
518
|
-
pipe(
|
|
736
|
+
Function.pipe(
|
|
519
737
|
get(node),
|
|
520
738
|
Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node) : Option.none())),
|
|
521
739
|
Option.map((node) => [
|
|
@@ -524,7 +742,7 @@ export default (context: PluginContext) => {
|
|
|
524
742
|
type: PLANK_COMPANION_TYPE,
|
|
525
743
|
data: 'settings',
|
|
526
744
|
properties: {
|
|
527
|
-
label: ['object settings label', { ns:
|
|
745
|
+
label: ['object settings label', { ns: meta.id }],
|
|
528
746
|
icon: 'ph--sliders--regular',
|
|
529
747
|
disposition: 'hidden',
|
|
530
748
|
position: 'fallback',
|
|
@@ -7,7 +7,7 @@ import { isSpace } from '@dxos/client/echo';
|
|
|
7
7
|
import { Obj, Type } from '@dxos/echo';
|
|
8
8
|
import { DataType } from '@dxos/schema';
|
|
9
9
|
|
|
10
|
-
import {
|
|
10
|
+
import { meta } from '../meta';
|
|
11
11
|
import { translations } from '../translations';
|
|
12
12
|
import { SPACE_TYPE, SpaceAction } from '../types';
|
|
13
13
|
import { SPACES } from '../util';
|
|
@@ -23,8 +23,8 @@ export default (context: PluginContext) =>
|
|
|
23
23
|
inputType: SPACES,
|
|
24
24
|
outputType: DIRECTORY_TYPE,
|
|
25
25
|
serialize: (node) => ({
|
|
26
|
-
name: translations[0]['en-US'][
|
|
27
|
-
data: translations[0]['en-US'][
|
|
26
|
+
name: translations[0]['en-US'][meta.id]['spaces label'] ?? 'Spaces',
|
|
27
|
+
data: translations[0]['en-US'][meta.id]['spaces label'] ?? 'Spaces',
|
|
28
28
|
type: DIRECTORY_TYPE,
|
|
29
29
|
}),
|
|
30
30
|
deserialize: () => {
|
|
@@ -35,8 +35,8 @@ export default (context: PluginContext) =>
|
|
|
35
35
|
inputType: SPACE_TYPE,
|
|
36
36
|
outputType: DIRECTORY_TYPE,
|
|
37
37
|
serialize: (node) => ({
|
|
38
|
-
name: node.data.properties.name ?? translations[0]['en-US'][
|
|
39
|
-
data: node.data.properties.name ?? translations[0]['en-US'][
|
|
38
|
+
name: node.data.properties.name ?? translations[0]['en-US'][meta.id]['unnamed space label'],
|
|
39
|
+
data: node.data.properties.name ?? translations[0]['en-US'][meta.id]['unnamed space label'],
|
|
40
40
|
type: DIRECTORY_TYPE,
|
|
41
41
|
}),
|
|
42
42
|
deserialize: async (data) => {
|
|
@@ -49,8 +49,8 @@ export default (context: PluginContext) =>
|
|
|
49
49
|
inputType: COLLECTION_TYPE,
|
|
50
50
|
outputType: DIRECTORY_TYPE,
|
|
51
51
|
serialize: (node) => ({
|
|
52
|
-
name: node.data.name ?? translations[0]['en-US'][
|
|
53
|
-
data: node.data.name ?? translations[0]['en-US'][
|
|
52
|
+
name: node.data.name ?? translations[0]['en-US'][meta.id]['object name placeholder'],
|
|
53
|
+
data: node.data.name ?? translations[0]['en-US'][meta.id]['object name placeholder'],
|
|
54
54
|
type: DIRECTORY_TYPE,
|
|
55
55
|
}),
|
|
56
56
|
deserialize: async (data, ancestors) => {
|
|
@@ -2,23 +2,34 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import type * as Schema from 'effect/Schema';
|
|
6
|
+
|
|
7
|
+
import { type AnyIntentChain, type Label, defineCapability } from '@dxos/app-framework';
|
|
6
8
|
import { type Space } from '@dxos/react-client/echo';
|
|
7
9
|
import { type DataType } from '@dxos/schema';
|
|
8
|
-
import { type
|
|
10
|
+
import { type DeepReadonly, type Position } from '@dxos/util';
|
|
9
11
|
|
|
10
|
-
import {
|
|
12
|
+
import { meta } from '../meta';
|
|
11
13
|
import { type ObjectForm, type PluginState } from '../types';
|
|
12
14
|
|
|
13
15
|
export namespace SpaceCapabilities {
|
|
14
|
-
export const State = defineCapability<DeepReadonly<PluginState>>(`${
|
|
15
|
-
export const MutableState = defineCapability<PluginState>(`${
|
|
16
|
+
export const State = defineCapability<DeepReadonly<PluginState>>(`${meta.id}/capability/state`);
|
|
17
|
+
export const MutableState = defineCapability<PluginState>(`${meta.id}/capability/state`);
|
|
16
18
|
|
|
17
19
|
export type SettingsSection = { id: string; label: Label; position?: Position };
|
|
18
|
-
export const SettingsSection = defineCapability<SettingsSection>(`${
|
|
20
|
+
export const SettingsSection = defineCapability<SettingsSection>(`${meta.id}/capability/settings-section`);
|
|
21
|
+
|
|
22
|
+
export type onCreateSpace = (params: { space: Space; rootCollection: DataType.Collection }) => AnyIntentChain;
|
|
23
|
+
export const onCreateSpace = defineCapability<onCreateSpace>(`${meta.id}/capability/on-space-created`);
|
|
19
24
|
|
|
20
|
-
export type
|
|
21
|
-
|
|
25
|
+
export type OnSchemaAdded = (params: {
|
|
26
|
+
space: Space;
|
|
27
|
+
schema: Schema.Schema.AnyNoContext;
|
|
28
|
+
// TODO(wittjosiah): This is leaky.
|
|
29
|
+
show?: boolean;
|
|
30
|
+
}) => AnyIntentChain;
|
|
31
|
+
export const OnSchemaAdded = defineCapability<OnSchemaAdded>(`${meta.id}/capability/on-schema-added`);
|
|
22
32
|
|
|
23
|
-
|
|
33
|
+
// TODO(burdon): Should this be view? Forms are UI concepts? (associated with a View/schema).
|
|
34
|
+
export const ObjectForm = defineCapability<ObjectForm<any>>(`${meta.id}/capability/object-form`);
|
|
24
35
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { Capabilities, type PluginContext, contributes } from '@dxos/app-framework';
|
|
6
6
|
import { Obj, Ref } from '@dxos/echo';
|
|
7
7
|
import { Migrations } from '@dxos/migrations';
|
|
8
8
|
import { ClientCapabilities } from '@dxos/plugin-client';
|
|
@@ -11,7 +11,6 @@ export const IntentResolver = lazy(() => import('./intent-resolver'));
|
|
|
11
11
|
export const ReactRoot = lazy(() => import('./react-root'));
|
|
12
12
|
export const ReactSurface = lazy(() => import('./react-surface'));
|
|
13
13
|
export const SchemaDefs = lazy(() => import('./schema-defs'));
|
|
14
|
-
export const SchemaTools = lazy(() => import('./schema-tools'));
|
|
15
14
|
export const SpaceSettings = lazy(() => import('./settings'));
|
|
16
15
|
export const SpaceState = lazy(() => import('./state'));
|
|
17
16
|
export const SpacesReady = lazy(() => import('./spaces-ready'));
|