@dxos/plugin-space 0.8.4-main.67995b8 → 0.8.4-main.72ec0f3
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-WTHWY4YS.mjs} +10 -10
- package/dist/lib/browser/CollectionArticle-WTHWY4YS.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-SXDRWTTU.mjs +116 -0
- package/dist/lib/browser/RecordArticle-SXDRWTTU.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-builder-V3MP3CDK.mjs → app-graph-builder-VQAB3GCQ.mjs} +138 -90
- package/dist/lib/browser/app-graph-builder-VQAB3GCQ.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-H6AW7KGS.mjs → app-graph-serializer-KSLKMEPP.mjs} +19 -19
- package/dist/lib/browser/app-graph-serializer-KSLKMEPP.mjs.map +7 -0
- package/dist/lib/browser/{chunk-XUYKJUU7.mjs → chunk-ERQMHU7L.mjs} +124 -63
- package/dist/lib/browser/chunk-ERQMHU7L.mjs.map +7 -0
- package/dist/lib/browser/{chunk-FBJEXW54.mjs → chunk-J2BUK5E6.mjs} +587 -513
- package/dist/lib/browser/chunk-J2BUK5E6.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-SGTQ52SU.mjs → chunk-M2Z6D4ZI.mjs} +32 -21
- package/dist/lib/browser/chunk-M2Z6D4ZI.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-PU5IOFMG.mjs +167 -0
- package/dist/lib/browser/chunk-PU5IOFMG.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 +91 -91
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-XHGD73WZ.mjs → intent-resolver-Q2XWHAVA.mjs} +87 -85
- package/dist/lib/browser/intent-resolver-Q2XWHAVA.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/react-root-MM4HADPE.mjs +30 -0
- package/dist/lib/browser/react-root-MM4HADPE.mjs.map +7 -0
- package/dist/lib/browser/{react-surface-YWZZQF7H.mjs → react-surface-SGZC3Y4U.mjs} +81 -105
- package/dist/lib/browser/react-surface-SGZC3Y4U.mjs.map +7 -0
- package/dist/lib/browser/{schema-defs-Z6FC4AHC.mjs → schema-defs-QPI2JU3X.mjs} +6 -6
- package/dist/lib/browser/schema-defs-QPI2JU3X.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-C5QC2UFL.mjs} +21 -18
- package/dist/lib/browser/spaces-ready-C5QC2UFL.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-KHXYT3SH.mjs} +10 -10
- package/dist/lib/node-esm/CollectionArticle-KHXYT3SH.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-NACBH42P.mjs +117 -0
- package/dist/lib/node-esm/RecordArticle-NACBH42P.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-SG4VECBB.mjs → app-graph-builder-24JCLJPX.mjs} +138 -90
- package/dist/lib/node-esm/app-graph-builder-24JCLJPX.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-2ICUGQQT.mjs → app-graph-serializer-R723K764.mjs} +19 -19
- package/dist/lib/node-esm/app-graph-serializer-R723K764.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-H4JILUJK.mjs +20 -0
- package/dist/lib/node-esm/chunk-H4JILUJK.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-2A3VBXBP.mjs → chunk-ITQFSFQ3.mjs} +587 -513
- package/dist/lib/node-esm/chunk-ITQFSFQ3.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-TJPQDQNI.mjs +168 -0
- package/dist/lib/node-esm/chunk-TJPQDQNI.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-4AOMYKDE.mjs → chunk-VH2EBZEV.mjs} +124 -63
- package/dist/lib/node-esm/chunk-VH2EBZEV.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 +91 -91
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-LEANKSKZ.mjs → intent-resolver-YK4ESSET.mjs} +87 -85
- package/dist/lib/node-esm/intent-resolver-YK4ESSET.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-5Y7LJRX6.mjs → react-root-5ANDLQMX.mjs} +13 -12
- package/dist/lib/node-esm/react-root-5ANDLQMX.mjs.map +7 -0
- package/dist/lib/node-esm/{react-surface-YQFNIKYT.mjs → react-surface-V7J2QB44.mjs} +81 -105
- package/dist/lib/node-esm/react-surface-V7J2QB44.mjs.map +7 -0
- package/dist/lib/node-esm/{schema-defs-WHJM7UZE.mjs → schema-defs-ZS2D47XW.mjs} +6 -6
- package/dist/lib/node-esm/schema-defs-ZS2D47XW.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-SJCXV6YH.mjs} +21 -18
- package/dist/lib/node-esm/spaces-ready-SJCXV6YH.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 +68 -63
- package/src/SpacePlugin.ts +230 -220
- package/src/capabilities/app-graph-builder.ts +214 -133
- 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 -65
- package/src/capabilities/react-root.tsx +6 -4
- package/src/capabilities/react-surface.tsx +78 -145
- package/src/capabilities/schema-defs.ts +4 -3
- 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-V3MP3CDK.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-FBJEXW54.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-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-XHGD73WZ.mjs.map +0 -7
- package/dist/lib/browser/react-root-CMWOGJG5.mjs +0 -29
- package/dist/lib/browser/react-root-CMWOGJG5.mjs.map +0 -7
- package/dist/lib/browser/react-surface-YWZZQF7H.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-SG4VECBB.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-serializer-2ICUGQQT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2A3VBXBP.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-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-LEANKSKZ.mjs.map +0 -7
- package/dist/lib/node-esm/react-root-5Y7LJRX6.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-YQFNIKYT.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,38 +2,42 @@
|
|
|
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 {
|
|
15
|
-
import {
|
|
16
|
+
import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';
|
|
17
|
+
import { ROOT_ID, atomFromObservable, atomFromSignal, createExtension } 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,
|
|
27
|
+
atomFromQuery,
|
|
23
28
|
constructObjectActions,
|
|
24
29
|
constructSpaceActions,
|
|
25
30
|
constructSpaceNode,
|
|
26
31
|
createObjectNode,
|
|
27
32
|
createStaticSchemaActions,
|
|
28
33
|
createStaticSchemaNode,
|
|
29
|
-
rxFromQuery,
|
|
30
|
-
SHARED,
|
|
31
|
-
SPACES,
|
|
32
34
|
} from '../util';
|
|
33
35
|
|
|
36
|
+
import { SpaceCapabilities } from './capabilities';
|
|
37
|
+
|
|
34
38
|
export default (context: PluginContext) => {
|
|
35
|
-
// TODO(wittjosiah):
|
|
36
|
-
const resolve = (typename: string) =>
|
|
39
|
+
// TODO(wittjosiah): Using `get` and being reactive seems to cause a bug with Atom where disposed atoms are accessed.
|
|
40
|
+
const resolve = (get: Atom.Context) => (typename: string) =>
|
|
37
41
|
context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};
|
|
38
42
|
|
|
39
43
|
const spacesNode = {
|
|
@@ -41,7 +45,7 @@ export default (context: PluginContext) => {
|
|
|
41
45
|
type: SPACES,
|
|
42
46
|
cacheable: ['label', 'role'],
|
|
43
47
|
properties: {
|
|
44
|
-
label: ['spaces label', { ns:
|
|
48
|
+
label: ['spaces label', { ns: meta.id }],
|
|
45
49
|
icon: 'ph--planet--regular',
|
|
46
50
|
testId: 'spacePlugin.spaces',
|
|
47
51
|
role: 'branch',
|
|
@@ -76,11 +80,11 @@ export default (context: PluginContext) => {
|
|
|
76
80
|
return contributes(Capabilities.AppGraphBuilder, [
|
|
77
81
|
// Primary actions.
|
|
78
82
|
createExtension({
|
|
79
|
-
id: `${
|
|
83
|
+
id: `${meta.id}/primary-actions`,
|
|
80
84
|
position: 'hoist',
|
|
81
85
|
actions: (node) =>
|
|
82
|
-
|
|
83
|
-
pipe(
|
|
86
|
+
Atom.make((get) =>
|
|
87
|
+
Function.pipe(
|
|
84
88
|
get(node),
|
|
85
89
|
Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
|
|
86
90
|
Option.map(() => [
|
|
@@ -91,7 +95,7 @@ export default (context: PluginContext) => {
|
|
|
91
95
|
await dispatch(createIntent(SpaceAction.OpenCreateSpace));
|
|
92
96
|
},
|
|
93
97
|
properties: {
|
|
94
|
-
label: ['create space label', { ns:
|
|
98
|
+
label: ['create space label', { ns: meta.id }],
|
|
95
99
|
icon: 'ph--plus--regular',
|
|
96
100
|
testId: 'spacePlugin.createSpace',
|
|
97
101
|
disposition: 'menu',
|
|
@@ -104,7 +108,7 @@ export default (context: PluginContext) => {
|
|
|
104
108
|
await dispatch(createIntent(SpaceAction.Join));
|
|
105
109
|
},
|
|
106
110
|
properties: {
|
|
107
|
-
label: ['join space label', { ns:
|
|
111
|
+
label: ['join space label', { ns: meta.id }],
|
|
108
112
|
icon: 'ph--sign-in--regular',
|
|
109
113
|
testId: 'spacePlugin.joinSpace',
|
|
110
114
|
disposition: 'menu',
|
|
@@ -119,7 +123,7 @@ export default (context: PluginContext) => {
|
|
|
119
123
|
await dispatch(createIntent(SpaceAction.OpenMembers, { space }));
|
|
120
124
|
},
|
|
121
125
|
properties: {
|
|
122
|
-
label: ['share space label', { ns:
|
|
126
|
+
label: ['share space label', { ns: meta.id }],
|
|
123
127
|
icon: 'ph--users--regular',
|
|
124
128
|
testId: 'spacePlugin.shareSpace',
|
|
125
129
|
keyBinding: {
|
|
@@ -137,7 +141,7 @@ export default (context: PluginContext) => {
|
|
|
137
141
|
await dispatch(createIntent(SpaceAction.OpenSettings, { space }));
|
|
138
142
|
},
|
|
139
143
|
properties: {
|
|
140
|
-
label: ['open current space settings label', { ns:
|
|
144
|
+
label: ['open current space settings label', { ns: meta.id }],
|
|
141
145
|
icon: 'ph--faders--regular',
|
|
142
146
|
keyBinding: {
|
|
143
147
|
macos: 'meta+shift+,',
|
|
@@ -153,11 +157,11 @@ export default (context: PluginContext) => {
|
|
|
153
157
|
|
|
154
158
|
// Create spaces group node.
|
|
155
159
|
createExtension({
|
|
156
|
-
id: `${
|
|
160
|
+
id: `${meta.id}/root`,
|
|
157
161
|
position: 'hoist',
|
|
158
162
|
connector: (node) =>
|
|
159
|
-
|
|
160
|
-
pipe(
|
|
163
|
+
Atom.make((get) =>
|
|
164
|
+
Function.pipe(
|
|
161
165
|
get(node),
|
|
162
166
|
Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
|
|
163
167
|
Option.map(() => [spacesNode]),
|
|
@@ -172,25 +176,25 @@ export default (context: PluginContext) => {
|
|
|
172
176
|
id: SPACES,
|
|
173
177
|
connector: (node) => {
|
|
174
178
|
let query: QueryResult<Type.Expando> | undefined;
|
|
175
|
-
return
|
|
176
|
-
pipe(
|
|
179
|
+
return Atom.make((get) =>
|
|
180
|
+
Function.pipe(
|
|
177
181
|
get(node),
|
|
178
182
|
Option.flatMap((node) => (node.id === SPACES ? Option.some(node) : Option.none())),
|
|
179
183
|
Option.map(() => {
|
|
180
184
|
const state = context.getCapability(SpaceCapabilities.State);
|
|
181
185
|
const client = context.getCapability(ClientCapabilities.Client);
|
|
182
|
-
const
|
|
183
|
-
const
|
|
186
|
+
const spacesAtom = atomFromObservable(client.spaces);
|
|
187
|
+
const isReadyAtom = atomFromObservable(client.spaces.isReady);
|
|
184
188
|
|
|
185
|
-
const spaces = get(
|
|
186
|
-
const isReady = get(
|
|
189
|
+
const spaces = get(spacesAtom);
|
|
190
|
+
const isReady = get(isReadyAtom);
|
|
187
191
|
|
|
188
192
|
if (!spaces || !isReady) {
|
|
189
193
|
return [];
|
|
190
194
|
}
|
|
191
195
|
|
|
192
196
|
const settings = get(context.capabilities(Capabilities.SettingsStore))[0]?.getStore<SpaceSettingsProps>(
|
|
193
|
-
|
|
197
|
+
meta.id,
|
|
194
198
|
)?.value;
|
|
195
199
|
|
|
196
200
|
// TODO(wittjosiah): During client reset, accessing default space throws.
|
|
@@ -198,9 +202,9 @@ export default (context: PluginContext) => {
|
|
|
198
202
|
if (!query) {
|
|
199
203
|
query = client.spaces.default.db.query(Filter.type(Type.Expando, { key: SHARED }));
|
|
200
204
|
}
|
|
201
|
-
const [spacesOrder] = get(
|
|
205
|
+
const [spacesOrder] = get(atomFromQuery(query));
|
|
202
206
|
return get(
|
|
203
|
-
|
|
207
|
+
atomFromSignal(() => {
|
|
204
208
|
const order: string[] = spacesOrder?.order ?? [];
|
|
205
209
|
const orderMap = new Map(order.map((id, index) => [id, index]));
|
|
206
210
|
return [
|
|
@@ -218,7 +222,7 @@ export default (context: PluginContext) => {
|
|
|
218
222
|
navigable: state.navigableCollections,
|
|
219
223
|
personal: space === client.spaces.default,
|
|
220
224
|
namesCache: state.spaceNames,
|
|
221
|
-
resolve,
|
|
225
|
+
resolve: resolve(get),
|
|
222
226
|
}),
|
|
223
227
|
);
|
|
224
228
|
}),
|
|
@@ -275,10 +279,10 @@ export default (context: PluginContext) => {
|
|
|
275
279
|
|
|
276
280
|
// Create space actions.
|
|
277
281
|
createExtension({
|
|
278
|
-
id: `${
|
|
282
|
+
id: `${meta.id}/actions`,
|
|
279
283
|
actions: (node) =>
|
|
280
|
-
|
|
281
|
-
pipe(
|
|
284
|
+
Atom.make((get) =>
|
|
285
|
+
Function.pipe(
|
|
282
286
|
get(node),
|
|
283
287
|
Option.flatMap((node) =>
|
|
284
288
|
node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),
|
|
@@ -307,24 +311,24 @@ export default (context: PluginContext) => {
|
|
|
307
311
|
|
|
308
312
|
// Create nodes for objects in the root collection of a space.
|
|
309
313
|
createExtension({
|
|
310
|
-
id: `${
|
|
314
|
+
id: `${meta.id}/root-collection`,
|
|
311
315
|
connector: (node) =>
|
|
312
|
-
|
|
313
|
-
pipe(
|
|
316
|
+
Atom.make((get) =>
|
|
317
|
+
Function.pipe(
|
|
314
318
|
get(node),
|
|
315
319
|
Option.flatMap((node) =>
|
|
316
320
|
node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),
|
|
317
321
|
),
|
|
318
322
|
Option.map((space) => {
|
|
319
323
|
const state = context.getCapability(SpaceCapabilities.State);
|
|
320
|
-
const spaceState = get(
|
|
324
|
+
const spaceState = get(atomFromObservable(space.state));
|
|
321
325
|
if (spaceState !== SpaceState.SPACE_READY) {
|
|
322
326
|
return [];
|
|
323
327
|
}
|
|
324
328
|
|
|
325
329
|
const collection = get(
|
|
326
|
-
|
|
327
|
-
() => space.properties[
|
|
330
|
+
atomFromSignal(
|
|
331
|
+
() => space.properties[Collection.Collection.typename]?.target as Collection.Collection | undefined,
|
|
328
332
|
),
|
|
329
333
|
);
|
|
330
334
|
if (!collection) {
|
|
@@ -332,8 +336,8 @@ export default (context: PluginContext) => {
|
|
|
332
336
|
}
|
|
333
337
|
|
|
334
338
|
return get(
|
|
335
|
-
|
|
336
|
-
pipe(
|
|
339
|
+
atomFromSignal(() =>
|
|
340
|
+
Function.pipe(
|
|
337
341
|
collection.objects,
|
|
338
342
|
Array.map((object) => object.target),
|
|
339
343
|
Array.filter(isNonNullable),
|
|
@@ -341,7 +345,7 @@ export default (context: PluginContext) => {
|
|
|
341
345
|
createObjectNode({
|
|
342
346
|
space,
|
|
343
347
|
object,
|
|
344
|
-
resolve,
|
|
348
|
+
resolve: resolve(get),
|
|
345
349
|
navigable: state.navigableCollections,
|
|
346
350
|
}),
|
|
347
351
|
),
|
|
@@ -357,27 +361,33 @@ export default (context: PluginContext) => {
|
|
|
357
361
|
|
|
358
362
|
// Create nodes for objects in a collection or by its fully qualified id.
|
|
359
363
|
createExtension({
|
|
360
|
-
id: `${
|
|
364
|
+
id: `${meta.id}/objects`,
|
|
361
365
|
connector: (node) =>
|
|
362
|
-
|
|
363
|
-
pipe(
|
|
366
|
+
Atom.make((get) =>
|
|
367
|
+
Function.pipe(
|
|
364
368
|
get(node),
|
|
365
369
|
Option.flatMap((node) =>
|
|
366
|
-
Obj.instanceOf(
|
|
370
|
+
Obj.instanceOf(Collection.Collection, node.data) ? Option.some(node.data) : Option.none(),
|
|
367
371
|
),
|
|
368
372
|
Option.map((collection) => {
|
|
369
373
|
const state = context.getCapability(SpaceCapabilities.State);
|
|
370
374
|
const space = getSpace(collection);
|
|
371
375
|
|
|
372
376
|
return get(
|
|
373
|
-
|
|
374
|
-
pipe(
|
|
377
|
+
atomFromSignal(() =>
|
|
378
|
+
Function.pipe(
|
|
375
379
|
collection.objects,
|
|
376
380
|
Array.map((object) => object.target),
|
|
377
381
|
Array.filter(isNonNullable),
|
|
378
382
|
Array.map(
|
|
379
383
|
(object) =>
|
|
380
|
-
space &&
|
|
384
|
+
space &&
|
|
385
|
+
createObjectNode({
|
|
386
|
+
object,
|
|
387
|
+
space,
|
|
388
|
+
resolve: resolve(get),
|
|
389
|
+
navigable: state.navigableCollections,
|
|
390
|
+
}),
|
|
381
391
|
),
|
|
382
392
|
Array.filter(isNonNullable),
|
|
383
393
|
),
|
|
@@ -428,20 +438,19 @@ export default (context: PluginContext) => {
|
|
|
428
438
|
|
|
429
439
|
// Create nodes for objects in a query collection.
|
|
430
440
|
createExtension({
|
|
431
|
-
id: `${
|
|
441
|
+
id: `${meta.id}/query-collection-objects`,
|
|
432
442
|
connector: (node) => {
|
|
433
443
|
let query: QueryResult<Type.Expando> | undefined;
|
|
434
|
-
return
|
|
435
|
-
pipe(
|
|
444
|
+
return Atom.make((get) =>
|
|
445
|
+
Function.pipe(
|
|
436
446
|
get(node),
|
|
437
447
|
Option.flatMap((node) =>
|
|
438
|
-
Obj.instanceOf(
|
|
448
|
+
Obj.instanceOf(Collection.QueryCollection, node.data) ? Option.some(node.data) : Option.none(),
|
|
439
449
|
),
|
|
440
450
|
Option.flatMap((collection) => {
|
|
441
451
|
const space = getSpace(collection);
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
: Option.none();
|
|
452
|
+
const typename = getTypenameFromQuery(collection.query);
|
|
453
|
+
return typename && space ? Option.some({ typename, space }) : Option.none();
|
|
445
454
|
}),
|
|
446
455
|
Option.map(({ typename, space }) => {
|
|
447
456
|
const state = context.getCapability(SpaceCapabilities.State);
|
|
@@ -453,26 +462,30 @@ export default (context: PluginContext) => {
|
|
|
453
462
|
// It will return all objects in the collection, not just the ones of the given type.
|
|
454
463
|
// However this works fine for now because this query is only used for exclusions.
|
|
455
464
|
Query.select(Filter.typename(typename))
|
|
456
|
-
.referencedBy(
|
|
465
|
+
.referencedBy(Collection.Collection, 'objects')
|
|
457
466
|
.reference('objects'),
|
|
458
467
|
),
|
|
459
468
|
);
|
|
460
469
|
}
|
|
461
|
-
return
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
470
|
+
return (
|
|
471
|
+
get(atomFromQuery(query))
|
|
472
|
+
// TODO(wittjosiah): This should be the default sort order.
|
|
473
|
+
.toSorted((a, b) => a.id.localeCompare(b.id))
|
|
474
|
+
.map((object) =>
|
|
475
|
+
get(
|
|
476
|
+
atomFromSignal(() =>
|
|
477
|
+
createObjectNode({
|
|
478
|
+
object,
|
|
479
|
+
space,
|
|
480
|
+
resolve: resolve(get),
|
|
481
|
+
droppable: false, // Cannot rearrange query collections.
|
|
482
|
+
navigable: state.navigableCollections,
|
|
483
|
+
}),
|
|
484
|
+
),
|
|
472
485
|
),
|
|
473
|
-
)
|
|
474
|
-
|
|
475
|
-
|
|
486
|
+
)
|
|
487
|
+
.filter(isNonNullable)
|
|
488
|
+
);
|
|
476
489
|
}),
|
|
477
490
|
Option.getOrElse(() => []),
|
|
478
491
|
),
|
|
@@ -482,15 +495,15 @@ export default (context: PluginContext) => {
|
|
|
482
495
|
|
|
483
496
|
// Static schema records.
|
|
484
497
|
createExtension({
|
|
485
|
-
id: `${
|
|
498
|
+
id: `${meta.id}/static-schemas`,
|
|
486
499
|
connector: (node) => {
|
|
487
500
|
const client = context.getCapability(ClientCapabilities.Client);
|
|
488
|
-
return
|
|
489
|
-
pipe(
|
|
501
|
+
return Atom.make((get) =>
|
|
502
|
+
Function.pipe(
|
|
490
503
|
get(node),
|
|
491
504
|
Option.flatMap((node) =>
|
|
492
|
-
Obj.instanceOf(
|
|
493
|
-
node.data.query
|
|
505
|
+
Obj.instanceOf(Collection.QueryCollection, node.data) &&
|
|
506
|
+
getTypenameFromQuery(node.data.query) === StoredSchema.typename
|
|
494
507
|
? Option.some(node.data)
|
|
495
508
|
: Option.none(),
|
|
496
509
|
),
|
|
@@ -499,7 +512,7 @@ export default (context: PluginContext) => {
|
|
|
499
512
|
return space?.properties.staticRecords ? Option.some(space) : Option.none();
|
|
500
513
|
}),
|
|
501
514
|
Option.map((space) => {
|
|
502
|
-
return get(
|
|
515
|
+
return get(atomFromSignal(() => (space.properties.staticRecords ?? []) as string[]))
|
|
503
516
|
.map((typename) =>
|
|
504
517
|
client.graph.schemaRegistry.schemas.find((schema) => Type.getTypename(schema) === typename),
|
|
505
518
|
)
|
|
@@ -514,11 +527,11 @@ export default (context: PluginContext) => {
|
|
|
514
527
|
|
|
515
528
|
// Create static schema actions.
|
|
516
529
|
createExtension({
|
|
517
|
-
id: `${
|
|
530
|
+
id: `${meta.id}/static-schema-actions`,
|
|
518
531
|
actions: (node) => {
|
|
519
|
-
let query: QueryResult<
|
|
520
|
-
return
|
|
521
|
-
pipe(
|
|
532
|
+
let query: QueryResult<View.View> | undefined;
|
|
533
|
+
return Atom.make((get) =>
|
|
534
|
+
Function.pipe(
|
|
522
535
|
get(node),
|
|
523
536
|
Option.flatMap((node) => {
|
|
524
537
|
const space = isSpace(node.properties.space) ? node.properties.space : undefined;
|
|
@@ -527,20 +540,32 @@ export default (context: PluginContext) => {
|
|
|
527
540
|
Option.map(({ space, schema }) => {
|
|
528
541
|
if (!query) {
|
|
529
542
|
// TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
|
|
530
|
-
query = space.db.query(Filter.type(
|
|
543
|
+
query = space.db.query(Filter.type(View.View));
|
|
531
544
|
}
|
|
532
545
|
|
|
533
|
-
const views = get(
|
|
546
|
+
const views = get(atomFromQuery(query));
|
|
534
547
|
const filteredViews = get(
|
|
535
|
-
|
|
548
|
+
atomFromSignal(() =>
|
|
536
549
|
// TODO(wittjosiah): Remove cast.
|
|
537
|
-
views.filter(
|
|
550
|
+
views.filter(
|
|
551
|
+
(view) => getTypenameFromQuery(view.query.ast) === Type.getTypename(schema as Type.Obj.Any),
|
|
552
|
+
),
|
|
538
553
|
),
|
|
539
554
|
);
|
|
540
555
|
const deletable = filteredViews.length === 0;
|
|
541
556
|
|
|
557
|
+
const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
|
|
558
|
+
if (!dispatcher) {
|
|
559
|
+
return [];
|
|
560
|
+
}
|
|
561
|
+
|
|
542
562
|
// TODO(wittjosiah): Remove cast.
|
|
543
|
-
return createStaticSchemaActions({
|
|
563
|
+
return createStaticSchemaActions({
|
|
564
|
+
schema: schema as Type.Obj.Any,
|
|
565
|
+
space,
|
|
566
|
+
dispatch: dispatcher.dispatchPromise,
|
|
567
|
+
deletable,
|
|
568
|
+
});
|
|
544
569
|
}),
|
|
545
570
|
Option.getOrElse(() => []),
|
|
546
571
|
),
|
|
@@ -550,41 +575,57 @@ export default (context: PluginContext) => {
|
|
|
550
575
|
|
|
551
576
|
// Create nodes for schema views.
|
|
552
577
|
createExtension({
|
|
553
|
-
id: `${
|
|
578
|
+
id: `${meta.id}/schema-views`,
|
|
554
579
|
connector: (node) => {
|
|
555
|
-
let query: QueryResult<
|
|
556
|
-
return
|
|
557
|
-
pipe(
|
|
580
|
+
let query: QueryResult<View.View> | undefined;
|
|
581
|
+
return Atom.make((get) =>
|
|
582
|
+
Function.pipe(
|
|
558
583
|
get(node),
|
|
559
584
|
Option.flatMap((node) => {
|
|
560
585
|
const space = getSpace(node.data) ?? (isSpace(node.properties.space) ? node.properties.space : undefined);
|
|
561
|
-
return space && (Obj.instanceOf(
|
|
586
|
+
return space && (Obj.instanceOf(StoredSchema, node.data) || Schema.isSchema(node.data))
|
|
562
587
|
? Option.some({ space, schema: node.data })
|
|
563
588
|
: Option.none();
|
|
564
589
|
}),
|
|
565
590
|
Option.map(({ space, schema }) => {
|
|
566
591
|
if (!query) {
|
|
567
592
|
// TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
|
|
568
|
-
query = space.db.query(Filter.type(
|
|
593
|
+
query = space.db.query(Filter.type(View.View));
|
|
569
594
|
}
|
|
570
595
|
|
|
571
596
|
// TODO(wittjosiah): Remove cast.
|
|
572
597
|
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
|
-
|
|
598
|
+
return (
|
|
599
|
+
get(atomFromQuery(query))
|
|
600
|
+
.filter((view) => getTypenameFromQuery(view.query.ast) === typename)
|
|
601
|
+
// Filter out Collection views from Projects.
|
|
602
|
+
.filter((view) =>
|
|
603
|
+
get(
|
|
604
|
+
atomFromSignal(() => {
|
|
605
|
+
const presentation = view.presentation.target;
|
|
606
|
+
if (presentation) {
|
|
607
|
+
const typename = Obj.getTypename(presentation);
|
|
608
|
+
return typename !== Collection.Collection.typename;
|
|
609
|
+
} else {
|
|
610
|
+
return false;
|
|
611
|
+
}
|
|
583
612
|
}),
|
|
584
613
|
),
|
|
585
|
-
)
|
|
586
|
-
|
|
587
|
-
|
|
614
|
+
)
|
|
615
|
+
.map((view) =>
|
|
616
|
+
get(
|
|
617
|
+
atomFromSignal(() =>
|
|
618
|
+
createObjectNode({
|
|
619
|
+
object: view,
|
|
620
|
+
space,
|
|
621
|
+
resolve: resolve(get),
|
|
622
|
+
droppable: false,
|
|
623
|
+
}),
|
|
624
|
+
),
|
|
625
|
+
),
|
|
626
|
+
)
|
|
627
|
+
.filter(isNonNullable)
|
|
628
|
+
);
|
|
588
629
|
}),
|
|
589
630
|
Option.getOrElse(() => []),
|
|
590
631
|
),
|
|
@@ -592,36 +633,76 @@ export default (context: PluginContext) => {
|
|
|
592
633
|
},
|
|
593
634
|
}),
|
|
594
635
|
|
|
636
|
+
// Create record nodes.
|
|
637
|
+
createExtension({
|
|
638
|
+
id: `${meta.id}/records`,
|
|
639
|
+
resolver: (id) => {
|
|
640
|
+
let query: QueryResult<Type.Expando> | undefined;
|
|
641
|
+
return Atom.make((get) => {
|
|
642
|
+
const client = context.getCapability(ClientCapabilities.Client);
|
|
643
|
+
const dxn = DXN.tryParse(id)?.asEchoDXN();
|
|
644
|
+
if (!dxn || !dxn.spaceId) {
|
|
645
|
+
return null;
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
const space = client.spaces.get(dxn.spaceId);
|
|
649
|
+
if (!space) {
|
|
650
|
+
return null;
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
if (!query) {
|
|
654
|
+
query = space.db.query(Filter.ids(dxn.echoId));
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
const object = get(atomFromQuery(query)).at(0);
|
|
658
|
+
if (!object) {
|
|
659
|
+
return null;
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
return createObjectNode({
|
|
663
|
+
object,
|
|
664
|
+
space,
|
|
665
|
+
resolve: resolve(get),
|
|
666
|
+
disposition: 'hidden',
|
|
667
|
+
});
|
|
668
|
+
});
|
|
669
|
+
},
|
|
670
|
+
}),
|
|
671
|
+
|
|
595
672
|
// Create collection actions and action groups.
|
|
596
673
|
createExtension({
|
|
597
|
-
id: `${
|
|
674
|
+
id: `${meta.id}/object-actions`,
|
|
598
675
|
actions: (node) => {
|
|
599
|
-
let query: QueryResult<
|
|
600
|
-
return
|
|
601
|
-
pipe(
|
|
676
|
+
let query: QueryResult<View.View> | undefined;
|
|
677
|
+
return Atom.make((get) =>
|
|
678
|
+
Function.pipe(
|
|
602
679
|
get(node),
|
|
603
680
|
Option.flatMap((node) => {
|
|
604
681
|
const space = getSpace(node.data);
|
|
605
|
-
return space && Obj.isObject(node.data)
|
|
682
|
+
return space && Obj.isObject(node.data) && Obj.getTypename(node.data) === node.type
|
|
683
|
+
? Option.some({ space, object: node.data })
|
|
684
|
+
: Option.none();
|
|
606
685
|
}),
|
|
607
686
|
Option.flatMap(({ space, object }) => {
|
|
608
|
-
const isSchema = Obj.instanceOf(
|
|
687
|
+
const isSchema = Obj.instanceOf(StoredSchema, object);
|
|
609
688
|
if (!query && isSchema) {
|
|
610
689
|
// TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
|
|
611
|
-
query = space.db.query(Filter.type(
|
|
690
|
+
query = space.db.query(Filter.type(View.View));
|
|
612
691
|
}
|
|
613
692
|
|
|
614
693
|
let deletable =
|
|
615
694
|
!isSchema &&
|
|
616
695
|
// Don't allow the Records smart collection to be deleted.
|
|
617
696
|
!(
|
|
618
|
-
Obj.instanceOf(
|
|
619
|
-
object.query
|
|
697
|
+
Obj.instanceOf(Collection.QueryCollection, object) &&
|
|
698
|
+
getTypenameFromQuery(object.query) === StoredSchema.typename
|
|
620
699
|
);
|
|
621
700
|
if (isSchema && query) {
|
|
622
|
-
const views = get(
|
|
701
|
+
const views = get(atomFromQuery(query));
|
|
623
702
|
const filteredViews = get(
|
|
624
|
-
|
|
703
|
+
atomFromSignal(() =>
|
|
704
|
+
views.filter((view) => getTypenameFromQuery(view.query.ast) === object.typename),
|
|
705
|
+
),
|
|
625
706
|
);
|
|
626
707
|
deletable = filteredViews.length === 0;
|
|
627
708
|
}
|
|
@@ -640,7 +721,7 @@ export default (context: PluginContext) => {
|
|
|
640
721
|
dispatch: dispatcher.dispatchPromise,
|
|
641
722
|
objectForms,
|
|
642
723
|
deletable,
|
|
643
|
-
navigable: get(
|
|
724
|
+
navigable: get(atomFromSignal(() => state.navigableCollections)),
|
|
644
725
|
});
|
|
645
726
|
}
|
|
646
727
|
}),
|
|
@@ -653,19 +734,19 @@ export default (context: PluginContext) => {
|
|
|
653
734
|
|
|
654
735
|
// View selected objects.
|
|
655
736
|
createExtension({
|
|
656
|
-
id: `${
|
|
737
|
+
id: `${meta.id}/selected-objects`,
|
|
657
738
|
connector: (node) =>
|
|
658
|
-
|
|
659
|
-
pipe(
|
|
739
|
+
Atom.make((get) =>
|
|
740
|
+
Function.pipe(
|
|
660
741
|
get(node),
|
|
661
|
-
Option.flatMap((node) => (Obj.instanceOf(
|
|
742
|
+
Option.flatMap((node) => (Obj.instanceOf(View.View, node.data) ? Option.some(node) : Option.none())),
|
|
662
743
|
Option.map((node) => [
|
|
663
744
|
{
|
|
664
745
|
id: [node.id, 'selected-objects'].join(ATTENDABLE_PATH_SEPARATOR),
|
|
665
746
|
type: PLANK_COMPANION_TYPE,
|
|
666
747
|
data: 'selected-objects',
|
|
667
748
|
properties: {
|
|
668
|
-
label: ['companion selected objects label', { ns:
|
|
749
|
+
label: ['companion selected objects label', { ns: meta.id }],
|
|
669
750
|
icon: 'ph--tree-view--regular',
|
|
670
751
|
disposition: 'hidden',
|
|
671
752
|
},
|
|
@@ -678,10 +759,10 @@ export default (context: PluginContext) => {
|
|
|
678
759
|
|
|
679
760
|
// Object settings plank companion.
|
|
680
761
|
createExtension({
|
|
681
|
-
id: `${
|
|
762
|
+
id: `${meta.id}/settings`,
|
|
682
763
|
connector: (node) =>
|
|
683
|
-
|
|
684
|
-
pipe(
|
|
764
|
+
Atom.make((get) =>
|
|
765
|
+
Function.pipe(
|
|
685
766
|
get(node),
|
|
686
767
|
Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node) : Option.none())),
|
|
687
768
|
Option.map((node) => [
|
|
@@ -690,7 +771,7 @@ export default (context: PluginContext) => {
|
|
|
690
771
|
type: PLANK_COMPANION_TYPE,
|
|
691
772
|
data: 'settings',
|
|
692
773
|
properties: {
|
|
693
|
-
label: ['object settings label', { ns:
|
|
774
|
+
label: ['object settings label', { ns: meta.id }],
|
|
694
775
|
icon: 'ph--sliders--regular',
|
|
695
776
|
disposition: 'hidden',
|
|
696
777
|
position: 'fallback',
|