@dxos/plugin-space 0.8.4-main.3f58842 → 0.8.4-main.548089c
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-D2B75XBS.mjs → CollectionArticle-ABGFK4VO.mjs} +10 -10
- package/dist/lib/browser/CollectionArticle-ABGFK4VO.mjs.map +7 -0
- package/dist/lib/browser/ObjectDetailsPanel-2BRUBHP6.mjs +141 -0
- package/dist/lib/browser/ObjectDetailsPanel-2BRUBHP6.mjs.map +7 -0
- package/dist/lib/browser/ObjectSettings-5LLWCVEK.mjs +144 -0
- package/dist/lib/browser/ObjectSettings-5LLWCVEK.mjs.map +7 -0
- package/dist/lib/browser/RecordArticle-G4BCSFFA.mjs +116 -0
- package/dist/lib/browser/RecordArticle-G4BCSFFA.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-builder-7CZZJS3S.mjs → app-graph-builder-FFPJHWFB.mjs} +124 -75
- package/dist/lib/browser/app-graph-builder-FFPJHWFB.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-H6AW7KGS.mjs → app-graph-serializer-QMWE2YE4.mjs} +19 -19
- package/dist/lib/browser/app-graph-serializer-QMWE2YE4.mjs.map +7 -0
- package/dist/lib/browser/{chunk-XUYKJUU7.mjs → chunk-I4W2BHA2.mjs} +122 -61
- package/dist/lib/browser/chunk-I4W2BHA2.mjs.map +7 -0
- package/dist/lib/browser/chunk-K5J7ZB5P.mjs +20 -0
- package/dist/lib/browser/chunk-K5J7ZB5P.mjs.map +7 -0
- package/dist/lib/browser/chunk-K6TOP4E6.mjs +167 -0
- package/dist/lib/browser/chunk-K6TOP4E6.mjs.map +7 -0
- package/dist/lib/browser/{chunk-SGTQ52SU.mjs → chunk-M2Z6D4ZI.mjs} +32 -21
- package/dist/lib/browser/chunk-M2Z6D4ZI.mjs.map +7 -0
- package/dist/lib/browser/{chunk-V7MJSSBQ.mjs → chunk-MHXNG2X2.mjs} +587 -513
- package/dist/lib/browser/chunk-MHXNG2X2.mjs.map +7 -0
- package/dist/lib/browser/{chunk-QACNNDOT.mjs → chunk-OLBBSOVI.mjs} +30 -17
- package/dist/lib/browser/chunk-OLBBSOVI.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-NAXTPQXE.mjs} +6 -6
- package/dist/lib/browser/identity-created-NAXTPQXE.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +88 -88
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-TIXVDYN7.mjs → intent-resolver-WLFWCHDH.mjs} +87 -85
- package/dist/lib/browser/intent-resolver-WLFWCHDH.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/react-root-BPPTUFLV.mjs +30 -0
- package/dist/lib/browser/react-root-BPPTUFLV.mjs.map +7 -0
- package/dist/lib/browser/{react-surface-TPNLWJJH.mjs → react-surface-3KTOA5PM.mjs} +81 -104
- package/dist/lib/browser/react-surface-3KTOA5PM.mjs.map +7 -0
- package/dist/lib/browser/{schema-defs-Z6FC4AHC.mjs → schema-defs-XCNOO2WT.mjs} +5 -5
- package/dist/lib/browser/schema-defs-XCNOO2WT.mjs.map +7 -0
- package/dist/lib/browser/{settings-4IMP5RYT.mjs → settings-WKLGKUHQ.mjs} +5 -5
- package/dist/lib/browser/{settings-4IMP5RYT.mjs.map → settings-WKLGKUHQ.mjs.map} +1 -1
- package/dist/lib/browser/{spaces-ready-TOPG6IV4.mjs → spaces-ready-XVW7I5MQ.mjs} +21 -18
- package/dist/lib/browser/spaces-ready-XVW7I5MQ.mjs.map +7 -0
- package/dist/lib/browser/{state-QYZAB45H.mjs → state-Q7YRE5KG.mjs} +7 -7
- package/dist/lib/browser/state-Q7YRE5KG.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +2 -2
- package/dist/lib/node-esm/{CollectionMain-ZJIFCWKZ.mjs → CollectionArticle-G3V4QXPI.mjs} +10 -10
- package/dist/lib/node-esm/CollectionArticle-G3V4QXPI.mjs.map +7 -0
- package/dist/lib/node-esm/ObjectDetailsPanel-6PZQIQG3.mjs +142 -0
- package/dist/lib/node-esm/ObjectDetailsPanel-6PZQIQG3.mjs.map +7 -0
- package/dist/lib/node-esm/ObjectSettings-OQSBOH7K.mjs +145 -0
- package/dist/lib/node-esm/ObjectSettings-OQSBOH7K.mjs.map +7 -0
- package/dist/lib/node-esm/RecordArticle-PBMLYY5K.mjs +117 -0
- package/dist/lib/node-esm/RecordArticle-PBMLYY5K.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-KGIGWC72.mjs → app-graph-builder-3BTVV7LE.mjs} +124 -75
- package/dist/lib/node-esm/app-graph-builder-3BTVV7LE.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-2ICUGQQT.mjs → app-graph-serializer-BU7KO2G5.mjs} +19 -19
- package/dist/lib/node-esm/app-graph-serializer-BU7KO2G5.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-JH6F4C3I.mjs → chunk-2PN7QNGV.mjs} +32 -21
- package/dist/lib/node-esm/chunk-2PN7QNGV.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-FAWIRIP4.mjs +168 -0
- package/dist/lib/node-esm/chunk-FAWIRIP4.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-4AOMYKDE.mjs → chunk-HQMFTMJE.mjs} +122 -61
- package/dist/lib/node-esm/chunk-HQMFTMJE.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-6X5DLJM5.mjs → chunk-MI4A5XUX.mjs} +587 -513
- package/dist/lib/node-esm/chunk-MI4A5XUX.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-P442DOQ3.mjs → chunk-WC4VBFMA.mjs} +30 -17
- package/dist/lib/node-esm/chunk-WC4VBFMA.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-Z7BB6HC2.mjs +21 -0
- package/dist/lib/node-esm/chunk-Z7BB6HC2.mjs.map +7 -0
- package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs → identity-created-OXLKCJE3.mjs} +6 -6
- package/dist/lib/node-esm/identity-created-OXLKCJE3.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +88 -88
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-MHGHRGDT.mjs → intent-resolver-QHH5SXLC.mjs} +87 -85
- package/dist/lib/node-esm/intent-resolver-QHH5SXLC.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-KW3TGJGY.mjs → react-root-QRONKFKI.mjs} +13 -12
- package/dist/lib/node-esm/react-root-QRONKFKI.mjs.map +7 -0
- package/dist/lib/node-esm/{react-surface-UUIUUD6P.mjs → react-surface-OZBWNTW2.mjs} +81 -104
- package/dist/lib/node-esm/react-surface-OZBWNTW2.mjs.map +7 -0
- package/dist/lib/node-esm/{schema-defs-WHJM7UZE.mjs → schema-defs-5TDB7T5J.mjs} +5 -5
- package/dist/lib/node-esm/schema-defs-5TDB7T5J.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-SAOBPND3.mjs → settings-RBB5633M.mjs} +5 -5
- package/dist/lib/node-esm/{settings-SAOBPND3.mjs.map → settings-RBB5633M.mjs.map} +1 -1
- package/dist/lib/node-esm/{spaces-ready-HIUKNDZK.mjs → spaces-ready-J6RWPI2X.mjs} +21 -18
- package/dist/lib/node-esm/spaces-ready-J6RWPI2X.mjs.map +7 -0
- package/dist/lib/node-esm/{state-ZVEHQ4BJ.mjs → state-362I5BMK.mjs} +7 -7
- package/dist/lib/node-esm/state-362I5BMK.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 +7 -6
- 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/CollectionArticle.d.ts +6 -0
- package/dist/types/src/components/CollectionArticle.d.ts.map +1 -0
- package/dist/types/src/components/CollectionSection.d.ts +3 -4
- package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +3 -3
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1694 -4
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +7 -5
- 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 → JoinDialog/JoinDialog.d.ts} +1 -1
- package/dist/types/src/components/JoinDialog/JoinDialog.d.ts.map +1 -0
- package/dist/types/src/components/JoinDialog/index.d.ts +2 -0
- package/dist/types/src/components/JoinDialog/index.d.ts.map +1 -0
- package/dist/types/src/components/{MembersContainer.d.ts → MembersContainer/MembersContainer.d.ts} +3 -2
- package/dist/types/src/components/MembersContainer/MembersContainer.d.ts.map +1 -0
- package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts +1697 -0
- package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts.map +1 -0
- package/dist/types/src/components/MembersContainer/index.d.ts +2 -0
- package/dist/types/src/components/MembersContainer/index.d.ts.map +1 -0
- 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/ObjectRenamePopover/ObjectRenamePopover.d.ts +7 -0
- package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts.map +1 -0
- package/dist/types/src/components/ObjectRenamePopover/index.d.ts +2 -0
- package/dist/types/src/components/ObjectRenamePopover/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 +1530 -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/RecordArticle.d.ts +5 -0
- package/dist/types/src/components/RecordArticle.d.ts.map +1 -0
- package/dist/types/src/components/RecordArticle.stories.d.ts +1697 -0
- package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -0
- package/dist/types/src/components/SchemaContainer.d.ts +1 -1
- package/dist/types/src/components/SchemaContainer.d.ts.map +1 -1
- package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
- package/dist/types/src/components/{SpacePresence.d.ts → SpacePresence/SpacePresence.d.ts} +4 -3
- package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -0
- package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts +1527 -0
- package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts.map +1 -0
- package/dist/types/src/components/SpacePresence/index.d.ts +2 -0
- package/dist/types/src/components/SpacePresence/index.d.ts.map +1 -0
- package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts +7 -0
- package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts.map +1 -0
- package/dist/types/src/components/SpaceRenamePopover/index.d.ts +2 -0
- package/dist/types/src/components/SpaceRenamePopover/index.d.ts.map +1 -0
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1527 -4
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1528 -5
- package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
- package/dist/types/src/components/ViewEditor.d.ts +3 -4
- package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +10 -11
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/helpers/index.d.ts +2 -0
- package/dist/types/src/helpers/index.d.ts.map +1 -0
- package/dist/types/src/helpers/query.d.ts +8 -0
- package/dist/types/src/helpers/query.d.ts.map +1 -0
- package/dist/types/src/helpers/query.test.d.ts +2 -0
- package/dist/types/src/helpers/query.test.d.ts.map +1 -0
- 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/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- 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 +1326 -26
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +78 -96
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +16 -11
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +66 -59
- package/src/SpacePlugin.ts +230 -220
- package/src/capabilities/app-graph-builder.ts +201 -117
- package/src/capabilities/app-graph-serializer.ts +12 -12
- package/src/capabilities/capabilities.ts +19 -13
- package/src/capabilities/identity-created.ts +3 -3
- package/src/capabilities/index.ts +0 -1
- package/src/capabilities/intent-resolver.ts +81 -64
- package/src/capabilities/react-root.tsx +6 -4
- package/src/capabilities/react-surface.tsx +78 -140
- package/src/capabilities/schema-defs.ts +3 -2
- package/src/capabilities/spaces-ready.ts +16 -10
- package/src/capabilities/state.ts +5 -4
- package/src/components/AwaitingObject.tsx +12 -14
- package/src/components/{CollectionMain.tsx → CollectionArticle.tsx} +7 -6
- package/src/components/CollectionSection.tsx +8 -6
- package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +17 -16
- package/src/components/CreateDialog/CreateObjectDialog.tsx +51 -33
- package/src/components/CreateDialog/CreateObjectPanel.tsx +24 -13
- package/src/components/CreateDialog/CreateSpaceDialog.tsx +30 -11
- package/src/components/{JoinDialog.tsx → JoinDialog/JoinDialog.tsx} +26 -10
- package/src/components/JoinDialog/index.ts +5 -0
- package/src/components/MembersContainer/MembersContainer.stories.tsx +56 -0
- package/src/components/{MembersContainer.tsx → MembersContainer/MembersContainer.tsx} +22 -21
- package/src/components/MembersContainer/index.ts +5 -0
- package/src/components/MenuFooter.tsx +2 -2
- package/src/components/ObjectDetailsPanel/ObjectDetailsPanel.tsx +51 -0
- package/src/components/ObjectDetailsPanel/ObjectForm.tsx +72 -0
- package/src/components/ObjectDetailsPanel/index.ts +7 -0
- package/src/components/{PopoverRenameObject.tsx → ObjectRenamePopover/ObjectRenamePopover.tsx} +10 -16
- package/src/components/ObjectRenamePopover/index.ts +5 -0
- package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +4 -3
- package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
- package/src/components/ObjectSettings/BaseObjectSettings.tsx +90 -26
- package/src/components/ObjectSettings/ForeignKeys.tsx +4 -4
- package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +4 -3
- package/src/components/ObjectSettings/index.ts +3 -1
- package/src/components/RecordArticle.stories.tsx +115 -0
- package/src/components/RecordArticle.tsx +114 -0
- package/src/components/SchemaContainer.tsx +25 -28
- package/src/components/SpacePluginSettings.tsx +16 -11
- package/src/components/{SpacePresence.stories.tsx → SpacePresence/SpacePresence.stories.tsx} +24 -23
- package/src/components/{SpacePresence.tsx → SpacePresence/SpacePresence.tsx} +22 -17
- package/src/components/SpacePresence/index.ts +5 -0
- package/src/components/{PopoverRenameSpace.tsx → SpaceRenamePopover/SpaceRenamePopover.tsx} +7 -6
- package/src/components/SpaceRenamePopover/index.ts +5 -0
- package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +17 -9
- package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +49 -28
- package/src/components/SyncStatus/InlineSyncStatus.tsx +8 -8
- package/src/components/SyncStatus/SyncStatus.stories.tsx +9 -9
- package/src/components/SyncStatus/SyncStatus.tsx +109 -12
- package/src/components/ViewEditor.tsx +51 -23
- package/src/components/index.ts +7 -7
- package/src/events.ts +7 -7
- package/src/helpers/index.ts +5 -0
- package/src/helpers/query.test.ts +24 -0
- package/src/helpers/query.ts +158 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useActiveSpace.ts +3 -2
- package/src/hooks/useInputSurfaceLookup.tsx +8 -3
- package/src/hooks/usePath.ts +1 -1
- package/src/hooks/useTypeOptions.ts +59 -0
- package/src/index.ts +1 -0
- package/src/meta.ts +6 -3
- package/src/translations.ts +29 -14
- package/src/types/types.ts +31 -22
- package/src/util.tsx +131 -66
- package/dist/lib/browser/CollectionMain-D2B75XBS.mjs.map +0 -7
- package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs +0 -88
- package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-7CZZJS3S.mjs.map +0 -7
- package/dist/lib/browser/app-graph-serializer-H6AW7KGS.mjs.map +0 -7
- package/dist/lib/browser/chunk-CEFHNVU7.mjs +0 -20
- package/dist/lib/browser/chunk-CEFHNVU7.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-JS3MMC42.mjs +0 -19
- package/dist/lib/browser/chunk-JS3MMC42.mjs.map +0 -7
- package/dist/lib/browser/chunk-QACNNDOT.mjs.map +0 -7
- package/dist/lib/browser/chunk-SGTQ52SU.mjs.map +0 -7
- package/dist/lib/browser/chunk-V7MJSSBQ.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-XUYKJUU7.mjs.map +0 -7
- package/dist/lib/browser/identity-created-23XJJV2N.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-TIXVDYN7.mjs.map +0 -7
- package/dist/lib/browser/react-root-N2J7TDRX.mjs +0 -29
- package/dist/lib/browser/react-root-N2J7TDRX.mjs.map +0 -7
- package/dist/lib/browser/react-surface-TPNLWJJH.mjs.map +0 -7
- package/dist/lib/browser/schema-defs-Z6FC4AHC.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-TOPG6IV4.mjs.map +0 -7
- package/dist/lib/browser/state-QYZAB45H.mjs.map +0 -7
- package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs.map +0 -7
- package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs +0 -89
- package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-KGIGWC72.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-serializer-2ICUGQQT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-4AOMYKDE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-5HHYE264.mjs +0 -20
- package/dist/lib/node-esm/chunk-5HHYE264.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-5T3ZH23B.mjs +0 -21
- package/dist/lib/node-esm/chunk-5T3ZH23B.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-6X5DLJM5.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-JH6F4C3I.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-P442DOQ3.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/identity-created-IJQO6GCR.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-MHGHRGDT.mjs.map +0 -7
- package/dist/lib/node-esm/react-root-KW3TGJGY.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-UUIUUD6P.mjs.map +0 -7
- package/dist/lib/node-esm/schema-defs-WHJM7UZE.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-HIUKNDZK.mjs.map +0 -7
- package/dist/lib/node-esm/state-ZVEHQ4BJ.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/dist/types/src/components/CollectionMain.d.ts +0 -7
- package/dist/types/src/components/CollectionMain.d.ts.map +0 -1
- package/dist/types/src/components/JoinDialog.d.ts.map +0 -1
- package/dist/types/src/components/MembersContainer.d.ts.map +0 -1
- package/dist/types/src/components/MembersContainer.stories.d.ts +0 -8
- package/dist/types/src/components/MembersContainer.stories.d.ts.map +0 -1
- package/dist/types/src/components/ObjectDetailsPanel.d.ts +0 -9
- package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +0 -1
- package/dist/types/src/components/PersistenceStatus.d.ts +0 -6
- package/dist/types/src/components/PersistenceStatus.d.ts.map +0 -1
- package/dist/types/src/components/PopoverRenameObject.d.ts +0 -7
- package/dist/types/src/components/PopoverRenameObject.d.ts.map +0 -1
- package/dist/types/src/components/PopoverRenameSpace.d.ts +0 -7
- package/dist/types/src/components/PopoverRenameSpace.d.ts.map +0 -1
- package/dist/types/src/components/SpacePresence.d.ts.map +0 -1
- package/dist/types/src/components/SpacePresence.stories.d.ts +0 -9
- package/dist/types/src/components/SpacePresence.stories.d.ts.map +0 -1
- package/src/capabilities/schema-tool.test.ts +0 -44
- package/src/capabilities/schema-tools.ts +0 -125
- package/src/components/MembersContainer.stories.tsx +0 -30
- package/src/components/ObjectDetailsPanel.tsx +0 -77
- package/src/components/PersistenceStatus.tsx +0 -83
|
@@ -2,24 +2,28 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
|
|
5
|
+
import { Atom } from '@effect-atom/atom-react';
|
|
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';
|
|
10
|
+
|
|
11
|
+
import { Capabilities, type PluginContext, contributes, createIntent } from '@dxos/app-framework';
|
|
12
|
+
import { type QueryResult, type Space, SpaceState, getSpace, isSpace } from '@dxos/client/echo';
|
|
13
|
+
import { DXN, 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 {
|
|
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 { Collection, StoredSchema, View, 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,
|
|
@@ -27,21 +31,20 @@ import {
|
|
|
27
31
|
createStaticSchemaActions,
|
|
28
32
|
createStaticSchemaNode,
|
|
29
33
|
rxFromQuery,
|
|
30
|
-
SHARED,
|
|
31
|
-
SPACES,
|
|
32
34
|
} from '../util';
|
|
33
35
|
|
|
36
|
+
import { SpaceCapabilities } from './capabilities';
|
|
37
|
+
|
|
34
38
|
export default (context: PluginContext) => {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};
|
|
39
|
+
const resolve = (get: Atom.Context) => (typename: string) =>
|
|
40
|
+
get(context.capabilities(Capabilities.Metadata)).find(({ id }) => id === typename)?.metadata ?? {};
|
|
38
41
|
|
|
39
42
|
const spacesNode = {
|
|
40
43
|
id: SPACES,
|
|
41
44
|
type: SPACES,
|
|
42
45
|
cacheable: ['label', 'role'],
|
|
43
46
|
properties: {
|
|
44
|
-
label: ['spaces label', { ns:
|
|
47
|
+
label: ['spaces label', { ns: meta.id }],
|
|
45
48
|
icon: 'ph--planet--regular',
|
|
46
49
|
testId: 'spacePlugin.spaces',
|
|
47
50
|
role: 'branch',
|
|
@@ -76,11 +79,11 @@ export default (context: PluginContext) => {
|
|
|
76
79
|
return contributes(Capabilities.AppGraphBuilder, [
|
|
77
80
|
// Primary actions.
|
|
78
81
|
createExtension({
|
|
79
|
-
id: `${
|
|
82
|
+
id: `${meta.id}/primary-actions`,
|
|
80
83
|
position: 'hoist',
|
|
81
84
|
actions: (node) =>
|
|
82
|
-
|
|
83
|
-
pipe(
|
|
85
|
+
Atom.make((get) =>
|
|
86
|
+
Function.pipe(
|
|
84
87
|
get(node),
|
|
85
88
|
Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
|
|
86
89
|
Option.map(() => [
|
|
@@ -91,7 +94,7 @@ export default (context: PluginContext) => {
|
|
|
91
94
|
await dispatch(createIntent(SpaceAction.OpenCreateSpace));
|
|
92
95
|
},
|
|
93
96
|
properties: {
|
|
94
|
-
label: ['create space label', { ns:
|
|
97
|
+
label: ['create space label', { ns: meta.id }],
|
|
95
98
|
icon: 'ph--plus--regular',
|
|
96
99
|
testId: 'spacePlugin.createSpace',
|
|
97
100
|
disposition: 'menu',
|
|
@@ -104,7 +107,7 @@ export default (context: PluginContext) => {
|
|
|
104
107
|
await dispatch(createIntent(SpaceAction.Join));
|
|
105
108
|
},
|
|
106
109
|
properties: {
|
|
107
|
-
label: ['join space label', { ns:
|
|
110
|
+
label: ['join space label', { ns: meta.id }],
|
|
108
111
|
icon: 'ph--sign-in--regular',
|
|
109
112
|
testId: 'spacePlugin.joinSpace',
|
|
110
113
|
disposition: 'menu',
|
|
@@ -119,7 +122,7 @@ export default (context: PluginContext) => {
|
|
|
119
122
|
await dispatch(createIntent(SpaceAction.OpenMembers, { space }));
|
|
120
123
|
},
|
|
121
124
|
properties: {
|
|
122
|
-
label: ['share space label', { ns:
|
|
125
|
+
label: ['share space label', { ns: meta.id }],
|
|
123
126
|
icon: 'ph--users--regular',
|
|
124
127
|
testId: 'spacePlugin.shareSpace',
|
|
125
128
|
keyBinding: {
|
|
@@ -137,7 +140,7 @@ export default (context: PluginContext) => {
|
|
|
137
140
|
await dispatch(createIntent(SpaceAction.OpenSettings, { space }));
|
|
138
141
|
},
|
|
139
142
|
properties: {
|
|
140
|
-
label: ['open current space settings label', { ns:
|
|
143
|
+
label: ['open current space settings label', { ns: meta.id }],
|
|
141
144
|
icon: 'ph--faders--regular',
|
|
142
145
|
keyBinding: {
|
|
143
146
|
macos: 'meta+shift+,',
|
|
@@ -153,11 +156,11 @@ export default (context: PluginContext) => {
|
|
|
153
156
|
|
|
154
157
|
// Create spaces group node.
|
|
155
158
|
createExtension({
|
|
156
|
-
id: `${
|
|
159
|
+
id: `${meta.id}/root`,
|
|
157
160
|
position: 'hoist',
|
|
158
161
|
connector: (node) =>
|
|
159
|
-
|
|
160
|
-
pipe(
|
|
162
|
+
Atom.make((get) =>
|
|
163
|
+
Function.pipe(
|
|
161
164
|
get(node),
|
|
162
165
|
Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
|
|
163
166
|
Option.map(() => [spacesNode]),
|
|
@@ -172,8 +175,8 @@ export default (context: PluginContext) => {
|
|
|
172
175
|
id: SPACES,
|
|
173
176
|
connector: (node) => {
|
|
174
177
|
let query: QueryResult<Type.Expando> | undefined;
|
|
175
|
-
return
|
|
176
|
-
pipe(
|
|
178
|
+
return Atom.make((get) =>
|
|
179
|
+
Function.pipe(
|
|
177
180
|
get(node),
|
|
178
181
|
Option.flatMap((node) => (node.id === SPACES ? Option.some(node) : Option.none())),
|
|
179
182
|
Option.map(() => {
|
|
@@ -190,7 +193,7 @@ export default (context: PluginContext) => {
|
|
|
190
193
|
}
|
|
191
194
|
|
|
192
195
|
const settings = get(context.capabilities(Capabilities.SettingsStore))[0]?.getStore<SpaceSettingsProps>(
|
|
193
|
-
|
|
196
|
+
meta.id,
|
|
194
197
|
)?.value;
|
|
195
198
|
|
|
196
199
|
// TODO(wittjosiah): During client reset, accessing default space throws.
|
|
@@ -218,7 +221,7 @@ export default (context: PluginContext) => {
|
|
|
218
221
|
navigable: state.navigableCollections,
|
|
219
222
|
personal: space === client.spaces.default,
|
|
220
223
|
namesCache: state.spaceNames,
|
|
221
|
-
resolve,
|
|
224
|
+
resolve: resolve(get),
|
|
222
225
|
}),
|
|
223
226
|
);
|
|
224
227
|
}),
|
|
@@ -275,10 +278,10 @@ export default (context: PluginContext) => {
|
|
|
275
278
|
|
|
276
279
|
// Create space actions.
|
|
277
280
|
createExtension({
|
|
278
|
-
id: `${
|
|
281
|
+
id: `${meta.id}/actions`,
|
|
279
282
|
actions: (node) =>
|
|
280
|
-
|
|
281
|
-
pipe(
|
|
283
|
+
Atom.make((get) =>
|
|
284
|
+
Function.pipe(
|
|
282
285
|
get(node),
|
|
283
286
|
Option.flatMap((node) =>
|
|
284
287
|
node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),
|
|
@@ -307,10 +310,10 @@ export default (context: PluginContext) => {
|
|
|
307
310
|
|
|
308
311
|
// Create nodes for objects in the root collection of a space.
|
|
309
312
|
createExtension({
|
|
310
|
-
id: `${
|
|
313
|
+
id: `${meta.id}/root-collection`,
|
|
311
314
|
connector: (node) =>
|
|
312
|
-
|
|
313
|
-
pipe(
|
|
315
|
+
Atom.make((get) =>
|
|
316
|
+
Function.pipe(
|
|
314
317
|
get(node),
|
|
315
318
|
Option.flatMap((node) =>
|
|
316
319
|
node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),
|
|
@@ -324,7 +327,7 @@ export default (context: PluginContext) => {
|
|
|
324
327
|
|
|
325
328
|
const collection = get(
|
|
326
329
|
rxFromSignal(
|
|
327
|
-
() => space.properties[
|
|
330
|
+
() => space.properties[Collection.Collection.typename]?.target as Collection.Collection | undefined,
|
|
328
331
|
),
|
|
329
332
|
);
|
|
330
333
|
if (!collection) {
|
|
@@ -333,7 +336,7 @@ export default (context: PluginContext) => {
|
|
|
333
336
|
|
|
334
337
|
return get(
|
|
335
338
|
rxFromSignal(() =>
|
|
336
|
-
pipe(
|
|
339
|
+
Function.pipe(
|
|
337
340
|
collection.objects,
|
|
338
341
|
Array.map((object) => object.target),
|
|
339
342
|
Array.filter(isNonNullable),
|
|
@@ -341,7 +344,7 @@ export default (context: PluginContext) => {
|
|
|
341
344
|
createObjectNode({
|
|
342
345
|
space,
|
|
343
346
|
object,
|
|
344
|
-
resolve,
|
|
347
|
+
resolve: resolve(get),
|
|
345
348
|
navigable: state.navigableCollections,
|
|
346
349
|
}),
|
|
347
350
|
),
|
|
@@ -357,13 +360,13 @@ export default (context: PluginContext) => {
|
|
|
357
360
|
|
|
358
361
|
// Create nodes for objects in a collection or by its fully qualified id.
|
|
359
362
|
createExtension({
|
|
360
|
-
id: `${
|
|
363
|
+
id: `${meta.id}/objects`,
|
|
361
364
|
connector: (node) =>
|
|
362
|
-
|
|
363
|
-
pipe(
|
|
365
|
+
Atom.make((get) =>
|
|
366
|
+
Function.pipe(
|
|
364
367
|
get(node),
|
|
365
368
|
Option.flatMap((node) =>
|
|
366
|
-
Obj.instanceOf(
|
|
369
|
+
Obj.instanceOf(Collection.Collection, node.data) ? Option.some(node.data) : Option.none(),
|
|
367
370
|
),
|
|
368
371
|
Option.map((collection) => {
|
|
369
372
|
const state = context.getCapability(SpaceCapabilities.State);
|
|
@@ -371,13 +374,19 @@ export default (context: PluginContext) => {
|
|
|
371
374
|
|
|
372
375
|
return get(
|
|
373
376
|
rxFromSignal(() =>
|
|
374
|
-
pipe(
|
|
377
|
+
Function.pipe(
|
|
375
378
|
collection.objects,
|
|
376
379
|
Array.map((object) => object.target),
|
|
377
380
|
Array.filter(isNonNullable),
|
|
378
381
|
Array.map(
|
|
379
382
|
(object) =>
|
|
380
|
-
space &&
|
|
383
|
+
space &&
|
|
384
|
+
createObjectNode({
|
|
385
|
+
object,
|
|
386
|
+
space,
|
|
387
|
+
resolve: resolve(get),
|
|
388
|
+
navigable: state.navigableCollections,
|
|
389
|
+
}),
|
|
381
390
|
),
|
|
382
391
|
Array.filter(isNonNullable),
|
|
383
392
|
),
|
|
@@ -428,20 +437,19 @@ export default (context: PluginContext) => {
|
|
|
428
437
|
|
|
429
438
|
// Create nodes for objects in a query collection.
|
|
430
439
|
createExtension({
|
|
431
|
-
id: `${
|
|
440
|
+
id: `${meta.id}/query-collection-objects`,
|
|
432
441
|
connector: (node) => {
|
|
433
442
|
let query: QueryResult<Type.Expando> | undefined;
|
|
434
|
-
return
|
|
435
|
-
pipe(
|
|
443
|
+
return Atom.make((get) =>
|
|
444
|
+
Function.pipe(
|
|
436
445
|
get(node),
|
|
437
446
|
Option.flatMap((node) =>
|
|
438
|
-
Obj.instanceOf(
|
|
447
|
+
Obj.instanceOf(Collection.QueryCollection, node.data) ? Option.some(node.data) : Option.none(),
|
|
439
448
|
),
|
|
440
449
|
Option.flatMap((collection) => {
|
|
441
450
|
const space = getSpace(collection);
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
: Option.none();
|
|
451
|
+
const typename = getTypenameFromQuery(collection.query);
|
|
452
|
+
return typename && space ? Option.some({ typename, space }) : Option.none();
|
|
445
453
|
}),
|
|
446
454
|
Option.map(({ typename, space }) => {
|
|
447
455
|
const state = context.getCapability(SpaceCapabilities.State);
|
|
@@ -453,26 +461,30 @@ export default (context: PluginContext) => {
|
|
|
453
461
|
// It will return all objects in the collection, not just the ones of the given type.
|
|
454
462
|
// However this works fine for now because this query is only used for exclusions.
|
|
455
463
|
Query.select(Filter.typename(typename))
|
|
456
|
-
.referencedBy(
|
|
464
|
+
.referencedBy(Collection.Collection, 'objects')
|
|
457
465
|
.reference('objects'),
|
|
458
466
|
),
|
|
459
467
|
);
|
|
460
468
|
}
|
|
461
|
-
return
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
469
|
+
return (
|
|
470
|
+
get(rxFromQuery(query))
|
|
471
|
+
// TODO(wittjosiah): This should be the default sort order.
|
|
472
|
+
.toSorted((a, b) => a.id.localeCompare(b.id))
|
|
473
|
+
.map((object) =>
|
|
474
|
+
get(
|
|
475
|
+
rxFromSignal(() =>
|
|
476
|
+
createObjectNode({
|
|
477
|
+
object,
|
|
478
|
+
space,
|
|
479
|
+
resolve: resolve(get),
|
|
480
|
+
droppable: false, // Cannot rearrange query collections.
|
|
481
|
+
navigable: state.navigableCollections,
|
|
482
|
+
}),
|
|
483
|
+
),
|
|
472
484
|
),
|
|
473
|
-
)
|
|
474
|
-
|
|
475
|
-
|
|
485
|
+
)
|
|
486
|
+
.filter(isNonNullable)
|
|
487
|
+
);
|
|
476
488
|
}),
|
|
477
489
|
Option.getOrElse(() => []),
|
|
478
490
|
),
|
|
@@ -482,15 +494,15 @@ export default (context: PluginContext) => {
|
|
|
482
494
|
|
|
483
495
|
// Static schema records.
|
|
484
496
|
createExtension({
|
|
485
|
-
id: `${
|
|
497
|
+
id: `${meta.id}/static-schemas`,
|
|
486
498
|
connector: (node) => {
|
|
487
499
|
const client = context.getCapability(ClientCapabilities.Client);
|
|
488
|
-
return
|
|
489
|
-
pipe(
|
|
500
|
+
return Atom.make((get) =>
|
|
501
|
+
Function.pipe(
|
|
490
502
|
get(node),
|
|
491
503
|
Option.flatMap((node) =>
|
|
492
|
-
Obj.instanceOf(
|
|
493
|
-
node.data.query
|
|
504
|
+
Obj.instanceOf(Collection.QueryCollection, node.data) &&
|
|
505
|
+
getTypenameFromQuery(node.data.query) === StoredSchema.typename
|
|
494
506
|
? Option.some(node.data)
|
|
495
507
|
: Option.none(),
|
|
496
508
|
),
|
|
@@ -514,11 +526,11 @@ export default (context: PluginContext) => {
|
|
|
514
526
|
|
|
515
527
|
// Create static schema actions.
|
|
516
528
|
createExtension({
|
|
517
|
-
id: `${
|
|
529
|
+
id: `${meta.id}/static-schema-actions`,
|
|
518
530
|
actions: (node) => {
|
|
519
|
-
let query: QueryResult<
|
|
520
|
-
return
|
|
521
|
-
pipe(
|
|
531
|
+
let query: QueryResult<View.View> | undefined;
|
|
532
|
+
return Atom.make((get) =>
|
|
533
|
+
Function.pipe(
|
|
522
534
|
get(node),
|
|
523
535
|
Option.flatMap((node) => {
|
|
524
536
|
const space = isSpace(node.properties.space) ? node.properties.space : undefined;
|
|
@@ -527,20 +539,32 @@ export default (context: PluginContext) => {
|
|
|
527
539
|
Option.map(({ space, schema }) => {
|
|
528
540
|
if (!query) {
|
|
529
541
|
// TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
|
|
530
|
-
query = space.db.query(Filter.type(
|
|
542
|
+
query = space.db.query(Filter.type(View.View));
|
|
531
543
|
}
|
|
532
544
|
|
|
533
545
|
const views = get(rxFromQuery(query));
|
|
534
546
|
const filteredViews = get(
|
|
535
547
|
rxFromSignal(() =>
|
|
536
548
|
// TODO(wittjosiah): Remove cast.
|
|
537
|
-
views.filter(
|
|
549
|
+
views.filter(
|
|
550
|
+
(view) => getTypenameFromQuery(view.query.ast) === Type.getTypename(schema as Type.Obj.Any),
|
|
551
|
+
),
|
|
538
552
|
),
|
|
539
553
|
);
|
|
540
554
|
const deletable = filteredViews.length === 0;
|
|
541
555
|
|
|
556
|
+
const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
|
|
557
|
+
if (!dispatcher) {
|
|
558
|
+
return [];
|
|
559
|
+
}
|
|
560
|
+
|
|
542
561
|
// TODO(wittjosiah): Remove cast.
|
|
543
|
-
return createStaticSchemaActions({
|
|
562
|
+
return createStaticSchemaActions({
|
|
563
|
+
schema: schema as Type.Obj.Any,
|
|
564
|
+
space,
|
|
565
|
+
dispatch: dispatcher.dispatchPromise,
|
|
566
|
+
deletable,
|
|
567
|
+
});
|
|
544
568
|
}),
|
|
545
569
|
Option.getOrElse(() => []),
|
|
546
570
|
),
|
|
@@ -550,41 +574,57 @@ export default (context: PluginContext) => {
|
|
|
550
574
|
|
|
551
575
|
// Create nodes for schema views.
|
|
552
576
|
createExtension({
|
|
553
|
-
id: `${
|
|
577
|
+
id: `${meta.id}/schema-views`,
|
|
554
578
|
connector: (node) => {
|
|
555
|
-
let query: QueryResult<
|
|
556
|
-
return
|
|
557
|
-
pipe(
|
|
579
|
+
let query: QueryResult<View.View> | undefined;
|
|
580
|
+
return Atom.make((get) =>
|
|
581
|
+
Function.pipe(
|
|
558
582
|
get(node),
|
|
559
583
|
Option.flatMap((node) => {
|
|
560
584
|
const space = getSpace(node.data) ?? (isSpace(node.properties.space) ? node.properties.space : undefined);
|
|
561
|
-
return space && (Obj.instanceOf(
|
|
585
|
+
return space && (Obj.instanceOf(StoredSchema, node.data) || Schema.isSchema(node.data))
|
|
562
586
|
? Option.some({ space, schema: node.data })
|
|
563
587
|
: Option.none();
|
|
564
588
|
}),
|
|
565
589
|
Option.map(({ space, schema }) => {
|
|
566
590
|
if (!query) {
|
|
567
591
|
// TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
|
|
568
|
-
query = space.db.query(Filter.type(
|
|
592
|
+
query = space.db.query(Filter.type(View.View));
|
|
569
593
|
}
|
|
570
594
|
|
|
571
595
|
// TODO(wittjosiah): Remove cast.
|
|
572
596
|
const typename = Schema.isSchema(schema) ? Type.getTypename(schema as Type.Obj.Any) : schema.typename;
|
|
573
|
-
return
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
597
|
+
return (
|
|
598
|
+
get(rxFromQuery(query))
|
|
599
|
+
.filter((view) => getTypenameFromQuery(view.query.ast) === typename)
|
|
600
|
+
// Filter out Collection views from Projects.
|
|
601
|
+
.filter((view) =>
|
|
602
|
+
get(
|
|
603
|
+
rxFromSignal(() => {
|
|
604
|
+
const presentation = view.presentation.target;
|
|
605
|
+
if (presentation) {
|
|
606
|
+
const typename = Obj.getTypename(presentation);
|
|
607
|
+
return typename !== Collection.Collection.typename;
|
|
608
|
+
} else {
|
|
609
|
+
return false;
|
|
610
|
+
}
|
|
583
611
|
}),
|
|
584
612
|
),
|
|
585
|
-
)
|
|
586
|
-
|
|
587
|
-
|
|
613
|
+
)
|
|
614
|
+
.map((view) =>
|
|
615
|
+
get(
|
|
616
|
+
rxFromSignal(() =>
|
|
617
|
+
createObjectNode({
|
|
618
|
+
object: view,
|
|
619
|
+
space,
|
|
620
|
+
resolve: resolve(get),
|
|
621
|
+
droppable: false,
|
|
622
|
+
}),
|
|
623
|
+
),
|
|
624
|
+
),
|
|
625
|
+
)
|
|
626
|
+
.filter(isNonNullable)
|
|
627
|
+
);
|
|
588
628
|
}),
|
|
589
629
|
Option.getOrElse(() => []),
|
|
590
630
|
),
|
|
@@ -592,30 +632,74 @@ export default (context: PluginContext) => {
|
|
|
592
632
|
},
|
|
593
633
|
}),
|
|
594
634
|
|
|
635
|
+
// Create record nodes.
|
|
636
|
+
createExtension({
|
|
637
|
+
id: `${meta.id}/records`,
|
|
638
|
+
resolver: (id) => {
|
|
639
|
+
let query: QueryResult<Type.Expando> | undefined;
|
|
640
|
+
return Atom.make((get) => {
|
|
641
|
+
const client = context.getCapability(ClientCapabilities.Client);
|
|
642
|
+
const dxn = DXN.tryParse(id)?.asEchoDXN();
|
|
643
|
+
if (!dxn || !dxn.spaceId) {
|
|
644
|
+
return null;
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
const space = client.spaces.get(dxn.spaceId);
|
|
648
|
+
if (!space) {
|
|
649
|
+
return null;
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
if (!query) {
|
|
653
|
+
query = space.db.query(Filter.ids(dxn.echoId));
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
const object = get(rxFromQuery(query)).at(0);
|
|
657
|
+
if (!object) {
|
|
658
|
+
return null;
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
return createObjectNode({
|
|
662
|
+
object,
|
|
663
|
+
space,
|
|
664
|
+
resolve: resolve(get),
|
|
665
|
+
disposition: 'hidden',
|
|
666
|
+
});
|
|
667
|
+
});
|
|
668
|
+
},
|
|
669
|
+
}),
|
|
670
|
+
|
|
595
671
|
// Create collection actions and action groups.
|
|
596
672
|
createExtension({
|
|
597
|
-
id: `${
|
|
673
|
+
id: `${meta.id}/object-actions`,
|
|
598
674
|
actions: (node) => {
|
|
599
|
-
let query: QueryResult<
|
|
600
|
-
return
|
|
601
|
-
pipe(
|
|
675
|
+
let query: QueryResult<View.View> | undefined;
|
|
676
|
+
return Atom.make((get) =>
|
|
677
|
+
Function.pipe(
|
|
602
678
|
get(node),
|
|
603
679
|
Option.flatMap((node) => {
|
|
604
680
|
const space = getSpace(node.data);
|
|
605
|
-
return space && Obj.isObject(node.data)
|
|
681
|
+
return space && Obj.isObject(node.data) && Obj.getTypename(node.data) === node.type
|
|
682
|
+
? Option.some({ space, object: node.data })
|
|
683
|
+
: Option.none();
|
|
606
684
|
}),
|
|
607
685
|
Option.flatMap(({ space, object }) => {
|
|
608
|
-
const isSchema = Obj.instanceOf(
|
|
686
|
+
const isSchema = Obj.instanceOf(StoredSchema, object);
|
|
609
687
|
if (!query && isSchema) {
|
|
610
688
|
// TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
|
|
611
|
-
query = space.db.query(Filter.type(
|
|
689
|
+
query = space.db.query(Filter.type(View.View));
|
|
612
690
|
}
|
|
613
691
|
|
|
614
|
-
let deletable =
|
|
692
|
+
let deletable =
|
|
693
|
+
!isSchema &&
|
|
694
|
+
// Don't allow the Records smart collection to be deleted.
|
|
695
|
+
!(
|
|
696
|
+
Obj.instanceOf(Collection.QueryCollection, object) &&
|
|
697
|
+
getTypenameFromQuery(object.query) === StoredSchema.typename
|
|
698
|
+
);
|
|
615
699
|
if (isSchema && query) {
|
|
616
700
|
const views = get(rxFromQuery(query));
|
|
617
701
|
const filteredViews = get(
|
|
618
|
-
rxFromSignal(() => views.filter((view) => view.query.
|
|
702
|
+
rxFromSignal(() => views.filter((view) => getTypenameFromQuery(view.query.ast) === object.typename)),
|
|
619
703
|
);
|
|
620
704
|
deletable = filteredViews.length === 0;
|
|
621
705
|
}
|
|
@@ -647,19 +731,19 @@ export default (context: PluginContext) => {
|
|
|
647
731
|
|
|
648
732
|
// View selected objects.
|
|
649
733
|
createExtension({
|
|
650
|
-
id: `${
|
|
734
|
+
id: `${meta.id}/selected-objects`,
|
|
651
735
|
connector: (node) =>
|
|
652
|
-
|
|
653
|
-
pipe(
|
|
736
|
+
Atom.make((get) =>
|
|
737
|
+
Function.pipe(
|
|
654
738
|
get(node),
|
|
655
|
-
Option.flatMap((node) => (Obj.instanceOf(
|
|
739
|
+
Option.flatMap((node) => (Obj.instanceOf(View.View, node.data) ? Option.some(node) : Option.none())),
|
|
656
740
|
Option.map((node) => [
|
|
657
741
|
{
|
|
658
742
|
id: [node.id, 'selected-objects'].join(ATTENDABLE_PATH_SEPARATOR),
|
|
659
743
|
type: PLANK_COMPANION_TYPE,
|
|
660
744
|
data: 'selected-objects',
|
|
661
745
|
properties: {
|
|
662
|
-
label: ['companion selected objects label', { ns:
|
|
746
|
+
label: ['companion selected objects label', { ns: meta.id }],
|
|
663
747
|
icon: 'ph--tree-view--regular',
|
|
664
748
|
disposition: 'hidden',
|
|
665
749
|
},
|
|
@@ -672,10 +756,10 @@ export default (context: PluginContext) => {
|
|
|
672
756
|
|
|
673
757
|
// Object settings plank companion.
|
|
674
758
|
createExtension({
|
|
675
|
-
id: `${
|
|
759
|
+
id: `${meta.id}/settings`,
|
|
676
760
|
connector: (node) =>
|
|
677
|
-
|
|
678
|
-
pipe(
|
|
761
|
+
Atom.make((get) =>
|
|
762
|
+
Function.pipe(
|
|
679
763
|
get(node),
|
|
680
764
|
Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node) : Option.none())),
|
|
681
765
|
Option.map((node) => [
|
|
@@ -684,7 +768,7 @@ export default (context: PluginContext) => {
|
|
|
684
768
|
type: PLANK_COMPANION_TYPE,
|
|
685
769
|
data: 'settings',
|
|
686
770
|
properties: {
|
|
687
|
-
label: ['object settings label', { ns:
|
|
771
|
+
label: ['object settings label', { ns: meta.id }],
|
|
688
772
|
icon: 'ph--sliders--regular',
|
|
689
773
|
disposition: 'hidden',
|
|
690
774
|
position: 'fallback',
|
|
@@ -4,15 +4,15 @@
|
|
|
4
4
|
|
|
5
5
|
import { Capabilities, type PluginContext, contributes, createIntent } from '@dxos/app-framework';
|
|
6
6
|
import { isSpace } from '@dxos/client/echo';
|
|
7
|
-
import { Obj
|
|
8
|
-
import {
|
|
7
|
+
import { Obj } from '@dxos/echo';
|
|
8
|
+
import { Collection } 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';
|
|
14
14
|
|
|
15
|
-
const COLLECTION_TYPE =
|
|
15
|
+
const COLLECTION_TYPE = Collection.Collection.typename;
|
|
16
16
|
|
|
17
17
|
// https://stackoverflow.com/a/19016910
|
|
18
18
|
const DIRECTORY_TYPE = 'text/directory';
|
|
@@ -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,14 +49,14 @@ 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) => {
|
|
57
57
|
const space = ancestors.find(isSpace);
|
|
58
58
|
const collection =
|
|
59
|
-
ancestors.findLast((ancestor) => Obj.instanceOf(
|
|
59
|
+
ancestors.findLast((ancestor) => Obj.instanceOf(Collection.Collection, ancestor)) ??
|
|
60
60
|
space?.properties[COLLECTION_TYPE]?.target;
|
|
61
61
|
if (!space || !collection) {
|
|
62
62
|
return;
|
|
@@ -66,7 +66,7 @@ export default (context: PluginContext) =>
|
|
|
66
66
|
const result = await dispatch(
|
|
67
67
|
createIntent(SpaceAction.AddObject, {
|
|
68
68
|
target: collection,
|
|
69
|
-
object: Obj.make(
|
|
69
|
+
object: Obj.make(Collection.Collection, { name: data.name, objects: [] }),
|
|
70
70
|
}),
|
|
71
71
|
);
|
|
72
72
|
|