@dxos/plugin-space 0.8.4-main.67995b8 → 0.8.4-main.70d3990
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-ACGHWPDX.mjs +141 -0
- package/dist/lib/browser/ObjectDetailsPanel-ACGHWPDX.mjs.map +7 -0
- package/dist/lib/browser/ObjectSettings-U3IH7BMV.mjs +144 -0
- package/dist/lib/browser/ObjectSettings-U3IH7BMV.mjs.map +7 -0
- package/dist/lib/browser/RecordArticle-2PFEBPXY.mjs +116 -0
- package/dist/lib/browser/RecordArticle-2PFEBPXY.mjs.map +7 -0
- package/dist/lib/browser/app-graph-builder-HABMCWAI.mjs +517 -0
- package/dist/lib/browser/app-graph-builder-HABMCWAI.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-H6AW7KGS.mjs → app-graph-serializer-G3VFEGTN.mjs} +19 -19
- package/dist/lib/browser/app-graph-serializer-G3VFEGTN.mjs.map +7 -0
- package/dist/lib/browser/chunk-6A3NWBB6.mjs +392 -0
- package/dist/lib/browser/chunk-6A3NWBB6.mjs.map +7 -0
- package/dist/lib/browser/chunk-C6DAPIFF.mjs +20 -0
- package/dist/lib/browser/chunk-C6DAPIFF.mjs.map +7 -0
- package/dist/lib/browser/{chunk-XUYKJUU7.mjs → chunk-GJOZILGC.mjs} +262 -143
- package/dist/lib/browser/chunk-GJOZILGC.mjs.map +7 -0
- package/dist/lib/browser/{chunk-FBJEXW54.mjs → chunk-KCZ527AM.mjs} +667 -525
- package/dist/lib/browser/chunk-KCZ527AM.mjs.map +7 -0
- package/dist/lib/browser/{chunk-VLBRSGJ2.mjs → chunk-P25R3AOK.mjs} +36 -6
- package/dist/lib/browser/chunk-P25R3AOK.mjs.map +7 -0
- package/dist/lib/browser/{chunk-QACNNDOT.mjs → chunk-POFUXISV.mjs} +69 -62
- package/dist/lib/browser/chunk-POFUXISV.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 -135
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-XHGD73WZ.mjs → intent-resolver-RZEWNJ2K.mjs} +114 -101
- package/dist/lib/browser/intent-resolver-RZEWNJ2K.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/react-root-JCRD74GI.mjs +30 -0
- package/dist/lib/browser/react-root-JCRD74GI.mjs.map +7 -0
- package/dist/lib/browser/{react-surface-YWZZQF7H.mjs → react-surface-VOETEAG3.mjs} +101 -111
- package/dist/lib/browser/react-surface-VOETEAG3.mjs.map +7 -0
- package/dist/lib/browser/repair-CNLE35NF.mjs +44 -0
- package/dist/lib/browser/repair-CNLE35NF.mjs.map +7 -0
- package/dist/lib/browser/{settings-4IMP5RYT.mjs → settings-TRLI52I5.mjs} +5 -5
- package/dist/lib/browser/{settings-4IMP5RYT.mjs.map → settings-TRLI52I5.mjs.map} +1 -1
- package/dist/lib/browser/{spaces-ready-TOPG6IV4.mjs → spaces-ready-OHGCWZHQ.mjs} +28 -19
- package/dist/lib/browser/spaces-ready-OHGCWZHQ.mjs.map +7 -0
- package/dist/lib/browser/{state-QYZAB45H.mjs → state-C7N6EDDZ.mjs} +7 -7
- package/dist/lib/browser/state-C7N6EDDZ.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +10 -4
- 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-6OFTT3GG.mjs +142 -0
- package/dist/lib/node-esm/ObjectDetailsPanel-6OFTT3GG.mjs.map +7 -0
- package/dist/lib/node-esm/ObjectSettings-YXPJQMJ5.mjs +145 -0
- package/dist/lib/node-esm/ObjectSettings-YXPJQMJ5.mjs.map +7 -0
- package/dist/lib/node-esm/RecordArticle-SSJ7PULS.mjs +117 -0
- package/dist/lib/node-esm/RecordArticle-SSJ7PULS.mjs.map +7 -0
- package/dist/lib/node-esm/app-graph-builder-T6VJKIOA.mjs +518 -0
- package/dist/lib/node-esm/app-graph-builder-T6VJKIOA.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-2ICUGQQT.mjs → app-graph-serializer-2NLWWFUB.mjs} +19 -19
- package/dist/lib/node-esm/app-graph-serializer-2NLWWFUB.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-SSLBYZEY.mjs → chunk-7EV4SN47.mjs} +35 -6
- package/dist/lib/node-esm/chunk-7EV4SN47.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-P442DOQ3.mjs → chunk-AX3UGL5D.mjs} +69 -62
- package/dist/lib/node-esm/chunk-AX3UGL5D.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-4AOMYKDE.mjs → chunk-I6FZP42D.mjs} +262 -143
- package/dist/lib/node-esm/chunk-I6FZP42D.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-2A3VBXBP.mjs → chunk-JAMGJUFU.mjs} +667 -525
- package/dist/lib/node-esm/chunk-JAMGJUFU.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-WWGV5FJM.mjs +21 -0
- package/dist/lib/node-esm/chunk-WWGV5FJM.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-X34VDVMY.mjs +393 -0
- package/dist/lib/node-esm/chunk-X34VDVMY.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 -135
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-LEANKSKZ.mjs → intent-resolver-4PHJWDXW.mjs} +114 -101
- package/dist/lib/node-esm/intent-resolver-4PHJWDXW.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-5Y7LJRX6.mjs → react-root-O5I5CDJ7.mjs} +13 -12
- package/dist/lib/node-esm/react-root-O5I5CDJ7.mjs.map +7 -0
- package/dist/lib/node-esm/{react-surface-YQFNIKYT.mjs → react-surface-J3XDMU2D.mjs} +101 -111
- package/dist/lib/node-esm/react-surface-J3XDMU2D.mjs.map +7 -0
- package/dist/lib/node-esm/repair-EHZS6MFY.mjs +45 -0
- package/dist/lib/node-esm/repair-EHZS6MFY.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-SAOBPND3.mjs → settings-MNQTKHL7.mjs} +5 -5
- package/dist/lib/node-esm/{settings-SAOBPND3.mjs.map → settings-MNQTKHL7.mjs.map} +1 -1
- package/dist/lib/node-esm/{spaces-ready-HIUKNDZK.mjs → spaces-ready-ZPU24DA2.mjs} +28 -19
- package/dist/lib/node-esm/spaces-ready-ZPU24DA2.mjs.map +7 -0
- package/dist/lib/node-esm/{state-ZVEHQ4BJ.mjs → state-45TXZQJ6.mjs} +7 -7
- package/dist/lib/node-esm/state-45TXZQJ6.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +10 -4
- 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 +14 -8
- 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/repair.d.ts +4 -0
- package/dist/types/src/capabilities/repair.d.ts.map +1 -0
- 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 +1588 -4
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +18 -9
- 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 +1591 -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 +1424 -0
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -0
- package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +3 -3
- 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 +1591 -0
- package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -0
- package/dist/types/src/components/SchemaContainer.d.ts +2 -2
- 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} +6 -5
- package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -0
- package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts +1421 -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 +1421 -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 +1422 -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 +1261 -67
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/form.d.ts +24 -0
- package/dist/types/src/types/form.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +1 -0
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +94 -155
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +25 -36
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +72 -63
- package/src/SpacePlugin.ts +182 -222
- package/src/capabilities/app-graph-builder.ts +221 -237
- package/src/capabilities/app-graph-serializer.ts +12 -12
- package/src/capabilities/capabilities.ts +28 -17
- package/src/capabilities/identity-created.ts +3 -3
- package/src/capabilities/index.ts +1 -2
- package/src/capabilities/intent-resolver.ts +91 -79
- package/src/capabilities/react-root.tsx +6 -4
- package/src/capabilities/react-surface.tsx +108 -149
- package/src/capabilities/repair.ts +57 -0
- package/src/capabilities/spaces-ready.ts +23 -11
- 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 +74 -46
- package/src/components/CreateDialog/CreateObjectPanel.tsx +51 -33
- 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 +7 -7
- package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
- package/src/components/ObjectSettings/BaseObjectSettings.tsx +90 -26
- package/src/components/ObjectSettings/ForeignKeys.tsx +8 -8
- 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 +26 -29
- 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 +68 -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 +57 -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 +27 -0
- package/src/index.ts +1 -0
- package/src/meta.ts +6 -3
- package/src/translations.ts +68 -58
- package/src/types/form.ts +75 -0
- package/src/types/index.ts +1 -0
- package/src/types/types.ts +49 -50
- package/src/util.tsx +268 -145
- 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 +0 -480
- 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 +0 -338
- package/dist/lib/browser/chunk-SGTQ52SU.mjs.map +0 -7
- 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 +0 -26
- 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 +0 -481
- 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 +0 -339
- 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.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 +0 -27
- 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-defs.d.ts +0 -4
- package/dist/types/src/capabilities/schema-defs.d.ts.map +0 -1
- 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-defs.ts +0 -30
- 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 Space, SpaceState, getSpace, isSpace } from '@dxos/client/echo';
|
|
13
|
+
import { DXN, type Database, type Entity, Filter, Obj, 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, View, ViewAnnotation, 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,44 +157,44 @@ 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]),
|
|
164
168
|
Option.getOrElse(() => []),
|
|
165
169
|
),
|
|
166
170
|
),
|
|
167
|
-
// resolver: ({ id }) => (id === SPACES ? spacesNode : undefined),
|
|
168
171
|
}),
|
|
169
172
|
|
|
170
173
|
// Create space nodes.
|
|
171
174
|
createExtension({
|
|
172
175
|
id: SPACES,
|
|
173
176
|
connector: (node) => {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
+
// TODO(wittjosiah): Find a simpler way to define this type.
|
|
178
|
+
let query: Database.QueryResult<Schema.Schema.Type<typeof Type.Expando>> | undefined;
|
|
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
|
}),
|
|
@@ -231,54 +235,14 @@ export default (context: PluginContext) => {
|
|
|
231
235
|
),
|
|
232
236
|
);
|
|
233
237
|
},
|
|
234
|
-
// resolver: ({ id }) => {
|
|
235
|
-
// if (id.length !== SPACE_ID_LENGTH) {
|
|
236
|
-
// return;
|
|
237
|
-
// }
|
|
238
|
-
|
|
239
|
-
// const client = context.requestCapability(ClientCapabilities.Client);
|
|
240
|
-
// const spaces = toSignal(
|
|
241
|
-
// (onChange) => client.spaces.subscribe(() => onChange()).unsubscribe,
|
|
242
|
-
// () => client.spaces.get(),
|
|
243
|
-
// );
|
|
244
|
-
|
|
245
|
-
// const isReady = toSignal(
|
|
246
|
-
// (onChange) => client.spaces.isReady.subscribe(() => onChange()).unsubscribe,
|
|
247
|
-
// () => client.spaces.isReady.get(),
|
|
248
|
-
// );
|
|
249
|
-
|
|
250
|
-
// if (!spaces || !isReady) {
|
|
251
|
-
// return;
|
|
252
|
-
// }
|
|
253
|
-
|
|
254
|
-
// const space = spaces.find((space) => space.id === id);
|
|
255
|
-
// if (!space) {
|
|
256
|
-
// return;
|
|
257
|
-
// }
|
|
258
|
-
|
|
259
|
-
// if (space.state.get() === SpaceState.SPACE_INACTIVE) {
|
|
260
|
-
// return false;
|
|
261
|
-
// } else if (space.state.get() !== SpaceState.SPACE_READY) {
|
|
262
|
-
// return undefined;
|
|
263
|
-
// } else {
|
|
264
|
-
// const state = context.requestCapability(SpaceCapabilities.State);
|
|
265
|
-
// return constructSpaceNode({
|
|
266
|
-
// space,
|
|
267
|
-
// navigable: state.navigableCollections,
|
|
268
|
-
// personal: space === client.spaces.default,
|
|
269
|
-
// namesCache: state.spaceNames,
|
|
270
|
-
// resolve,
|
|
271
|
-
// });
|
|
272
|
-
// }
|
|
273
|
-
// },
|
|
274
238
|
}),
|
|
275
239
|
|
|
276
240
|
// Create space actions.
|
|
277
241
|
createExtension({
|
|
278
|
-
id: `${
|
|
242
|
+
id: `${meta.id}/actions`,
|
|
279
243
|
actions: (node) =>
|
|
280
|
-
|
|
281
|
-
pipe(
|
|
244
|
+
Atom.make((get) =>
|
|
245
|
+
Function.pipe(
|
|
282
246
|
get(node),
|
|
283
247
|
Option.flatMap((node) =>
|
|
284
248
|
node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),
|
|
@@ -307,24 +271,24 @@ export default (context: PluginContext) => {
|
|
|
307
271
|
|
|
308
272
|
// Create nodes for objects in the root collection of a space.
|
|
309
273
|
createExtension({
|
|
310
|
-
id: `${
|
|
274
|
+
id: `${meta.id}/root-collection`,
|
|
311
275
|
connector: (node) =>
|
|
312
|
-
|
|
313
|
-
pipe(
|
|
276
|
+
Atom.make((get) =>
|
|
277
|
+
Function.pipe(
|
|
314
278
|
get(node),
|
|
315
279
|
Option.flatMap((node) =>
|
|
316
280
|
node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),
|
|
317
281
|
),
|
|
318
282
|
Option.map((space) => {
|
|
319
283
|
const state = context.getCapability(SpaceCapabilities.State);
|
|
320
|
-
const spaceState = get(
|
|
284
|
+
const spaceState = get(atomFromObservable(space.state));
|
|
321
285
|
if (spaceState !== SpaceState.SPACE_READY) {
|
|
322
286
|
return [];
|
|
323
287
|
}
|
|
324
288
|
|
|
325
289
|
const collection = get(
|
|
326
|
-
|
|
327
|
-
() => space.properties[
|
|
290
|
+
atomFromSignal(
|
|
291
|
+
() => space.properties[Collection.Collection.typename]?.target as Collection.Collection | undefined,
|
|
328
292
|
),
|
|
329
293
|
);
|
|
330
294
|
if (!collection) {
|
|
@@ -332,8 +296,8 @@ export default (context: PluginContext) => {
|
|
|
332
296
|
}
|
|
333
297
|
|
|
334
298
|
return get(
|
|
335
|
-
|
|
336
|
-
pipe(
|
|
299
|
+
atomFromSignal(() =>
|
|
300
|
+
Function.pipe(
|
|
337
301
|
collection.objects,
|
|
338
302
|
Array.map((object) => object.target),
|
|
339
303
|
Array.filter(isNonNullable),
|
|
@@ -341,7 +305,7 @@ export default (context: PluginContext) => {
|
|
|
341
305
|
createObjectNode({
|
|
342
306
|
space,
|
|
343
307
|
object,
|
|
344
|
-
resolve,
|
|
308
|
+
resolve: resolve(get),
|
|
345
309
|
navigable: state.navigableCollections,
|
|
346
310
|
}),
|
|
347
311
|
),
|
|
@@ -355,29 +319,35 @@ export default (context: PluginContext) => {
|
|
|
355
319
|
),
|
|
356
320
|
}),
|
|
357
321
|
|
|
358
|
-
// Create nodes for objects in a collection or by its
|
|
322
|
+
// Create nodes for objects in a collection or by its DXN.
|
|
359
323
|
createExtension({
|
|
360
|
-
id: `${
|
|
324
|
+
id: `${meta.id}/objects`,
|
|
361
325
|
connector: (node) =>
|
|
362
|
-
|
|
363
|
-
pipe(
|
|
326
|
+
Atom.make((get) =>
|
|
327
|
+
Function.pipe(
|
|
364
328
|
get(node),
|
|
365
329
|
Option.flatMap((node) =>
|
|
366
|
-
Obj.instanceOf(
|
|
330
|
+
Obj.instanceOf(Collection.Collection, node.data) ? Option.some(node.data) : Option.none(),
|
|
367
331
|
),
|
|
368
332
|
Option.map((collection) => {
|
|
369
333
|
const state = context.getCapability(SpaceCapabilities.State);
|
|
370
334
|
const space = getSpace(collection);
|
|
371
335
|
|
|
372
336
|
return get(
|
|
373
|
-
|
|
374
|
-
pipe(
|
|
337
|
+
atomFromSignal(() =>
|
|
338
|
+
Function.pipe(
|
|
375
339
|
collection.objects,
|
|
376
340
|
Array.map((object) => object.target),
|
|
377
341
|
Array.filter(isNonNullable),
|
|
378
342
|
Array.map(
|
|
379
343
|
(object) =>
|
|
380
|
-
space &&
|
|
344
|
+
space &&
|
|
345
|
+
createObjectNode({
|
|
346
|
+
object,
|
|
347
|
+
space,
|
|
348
|
+
resolve: resolve(get),
|
|
349
|
+
navigable: state.navigableCollections,
|
|
350
|
+
}),
|
|
381
351
|
),
|
|
382
352
|
Array.filter(isNonNullable),
|
|
383
353
|
),
|
|
@@ -387,90 +357,66 @@ export default (context: PluginContext) => {
|
|
|
387
357
|
Option.getOrElse(() => []),
|
|
388
358
|
),
|
|
389
359
|
),
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
// if (!object) {
|
|
417
|
-
// return;
|
|
418
|
-
// }
|
|
419
|
-
|
|
420
|
-
// if (isDeleted(object)) {
|
|
421
|
-
// return false;
|
|
422
|
-
// } else {
|
|
423
|
-
// const state = context.requestCapability(SpaceCapabilities.State);
|
|
424
|
-
// return createObjectNode({ object, space, resolve, navigable: state.navigableCollections });
|
|
425
|
-
// }
|
|
426
|
-
// },
|
|
360
|
+
resolver: (id) => {
|
|
361
|
+
let query: Database.QueryResult<Entity.Unknown> | undefined;
|
|
362
|
+
return Atom.make((get) => {
|
|
363
|
+
const client = context.getCapability(ClientCapabilities.Client);
|
|
364
|
+
const dxn = DXN.tryParse(id)?.asEchoDXN();
|
|
365
|
+
if (!dxn || !dxn.spaceId) {
|
|
366
|
+
return null;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
const space = client.spaces.get(dxn.spaceId);
|
|
370
|
+
if (!space) {
|
|
371
|
+
return null;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
if (!query) {
|
|
375
|
+
query = space.db.query(Filter.ids(dxn.echoId));
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
const object = get(atomFromQuery(query)).at(0);
|
|
379
|
+
if (!Obj.isObject(object)) {
|
|
380
|
+
return null;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
return createObjectNode({ object, space, resolve: resolve(get), disposition: 'hidden' });
|
|
384
|
+
});
|
|
385
|
+
},
|
|
427
386
|
}),
|
|
428
387
|
|
|
429
|
-
// Create nodes for
|
|
388
|
+
// Create object nodes for schema-based system collections.
|
|
430
389
|
createExtension({
|
|
431
|
-
id: `${
|
|
390
|
+
id: `${meta.id}/system-collections`,
|
|
432
391
|
connector: (node) => {
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
392
|
+
const client = context.getCapability(ClientCapabilities.Client);
|
|
393
|
+
// TODO(wittjosiah): Find a simpler way to define this type.
|
|
394
|
+
let query: Database.QueryResult<Schema.Schema.Type<typeof Type.Expando>> | undefined;
|
|
395
|
+
return Atom.make((get) =>
|
|
396
|
+
Function.pipe(
|
|
436
397
|
get(node),
|
|
437
398
|
Option.flatMap((node) =>
|
|
438
|
-
Obj.instanceOf(
|
|
399
|
+
Obj.instanceOf(Collection.Managed, node.data) ? Option.some(node.data) : Option.none(),
|
|
439
400
|
),
|
|
440
401
|
Option.flatMap((collection) => {
|
|
441
402
|
const space = getSpace(collection);
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
403
|
+
const schema = client.graph.schemaRegistry.schemas.find(
|
|
404
|
+
(schema) => Type.getTypename(schema) === collection.key,
|
|
405
|
+
);
|
|
406
|
+
return space && schema ? Option.some({ space, schema }) : Option.none();
|
|
445
407
|
}),
|
|
446
|
-
Option.map(({
|
|
447
|
-
const state = context.getCapability(SpaceCapabilities.State);
|
|
408
|
+
Option.map(({ space, schema }) => {
|
|
448
409
|
if (!query) {
|
|
449
|
-
query = space.db.query(
|
|
450
|
-
Query.without(
|
|
451
|
-
Query.select(Filter.typename(typename)),
|
|
452
|
-
// TODO(wittjosiah): This query is broader than it should be.
|
|
453
|
-
// It will return all objects in the collection, not just the ones of the given type.
|
|
454
|
-
// However this works fine for now because this query is only used for exclusions.
|
|
455
|
-
Query.select(Filter.typename(typename))
|
|
456
|
-
.referencedBy(DataType.Collection, 'objects')
|
|
457
|
-
.reference('objects'),
|
|
458
|
-
),
|
|
459
|
-
);
|
|
410
|
+
query = space.db.query(Filter.type(schema));
|
|
460
411
|
}
|
|
461
|
-
return get(
|
|
412
|
+
return get(atomFromQuery(query))
|
|
462
413
|
.map((object) =>
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
droppable: false, // Cannot rearrange query collections.
|
|
470
|
-
navigable: state.navigableCollections,
|
|
471
|
-
}),
|
|
472
|
-
),
|
|
473
|
-
),
|
|
414
|
+
createObjectNode({
|
|
415
|
+
object,
|
|
416
|
+
space,
|
|
417
|
+
managedCollectionChild: true,
|
|
418
|
+
resolve: resolve(get),
|
|
419
|
+
}),
|
|
474
420
|
)
|
|
475
421
|
.filter(isNonNullable);
|
|
476
422
|
}),
|
|
@@ -480,17 +426,16 @@ export default (context: PluginContext) => {
|
|
|
480
426
|
},
|
|
481
427
|
}),
|
|
482
428
|
|
|
483
|
-
//
|
|
429
|
+
// Create branch nodes for static schema record types.
|
|
484
430
|
createExtension({
|
|
485
|
-
id: `${
|
|
431
|
+
id: `${meta.id}/static-schemas`,
|
|
486
432
|
connector: (node) => {
|
|
487
433
|
const client = context.getCapability(ClientCapabilities.Client);
|
|
488
|
-
return
|
|
489
|
-
pipe(
|
|
434
|
+
return Atom.make((get) =>
|
|
435
|
+
Function.pipe(
|
|
490
436
|
get(node),
|
|
491
437
|
Option.flatMap((node) =>
|
|
492
|
-
Obj.instanceOf(
|
|
493
|
-
node.data.query.typename === DataType.StoredSchema.typename
|
|
438
|
+
Obj.instanceOf(Collection.Managed, node.data) && node.data.key === Type.getTypename(Type.PersistentType)
|
|
494
439
|
? Option.some(node.data)
|
|
495
440
|
: Option.none(),
|
|
496
441
|
),
|
|
@@ -499,7 +444,7 @@ export default (context: PluginContext) => {
|
|
|
499
444
|
return space?.properties.staticRecords ? Option.some(space) : Option.none();
|
|
500
445
|
}),
|
|
501
446
|
Option.map((space) => {
|
|
502
|
-
return get(
|
|
447
|
+
return get(atomFromSignal(() => (space.properties.staticRecords ?? []) as string[]))
|
|
503
448
|
.map((typename) =>
|
|
504
449
|
client.graph.schemaRegistry.schemas.find((schema) => Type.getTypename(schema) === typename),
|
|
505
450
|
)
|
|
@@ -512,13 +457,19 @@ export default (context: PluginContext) => {
|
|
|
512
457
|
},
|
|
513
458
|
}),
|
|
514
459
|
|
|
515
|
-
// Create static schema
|
|
460
|
+
// Create actions for static schema record types.
|
|
516
461
|
createExtension({
|
|
517
|
-
id: `${
|
|
462
|
+
id: `${meta.id}/static-schema-actions`,
|
|
518
463
|
actions: (node) => {
|
|
519
|
-
let query: QueryResult<
|
|
520
|
-
return
|
|
521
|
-
|
|
464
|
+
let query: Database.QueryResult<Obj.Any> | undefined;
|
|
465
|
+
return Atom.make((get) => {
|
|
466
|
+
// TODO(wittjosiah): Use schemaRegistry query once it support atom reactivity.
|
|
467
|
+
const schemas = get(context.capabilities(ClientCapabilities.Schema))
|
|
468
|
+
.flat()
|
|
469
|
+
.filter((schema) => ViewAnnotation.get(schema).pipe(Option.getOrElse(() => false)));
|
|
470
|
+
const filter = Filter.or(...schemas.map((schema) => Filter.type(schema)));
|
|
471
|
+
|
|
472
|
+
return Function.pipe(
|
|
522
473
|
get(node),
|
|
523
474
|
Option.flatMap((node) => {
|
|
524
475
|
const space = isSpace(node.properties.space) ? node.properties.space : undefined;
|
|
@@ -526,59 +477,82 @@ export default (context: PluginContext) => {
|
|
|
526
477
|
}),
|
|
527
478
|
Option.map(({ space, schema }) => {
|
|
528
479
|
if (!query) {
|
|
529
|
-
// TODO(wittjosiah):
|
|
530
|
-
|
|
480
|
+
// TODO(wittjosiah): Ideally this query would traverse the view reference & filter by the query ast.
|
|
481
|
+
// TODO(wittjosiah): Remove cast.
|
|
482
|
+
query = space.db.query(filter) as unknown as Database.QueryResult<Obj.Any>;
|
|
531
483
|
}
|
|
532
484
|
|
|
533
|
-
const
|
|
485
|
+
const objects = get(atomFromQuery(query));
|
|
534
486
|
const filteredViews = get(
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
487
|
+
atomFromSignal(() =>
|
|
488
|
+
objects.filter(
|
|
489
|
+
(viewObject) =>
|
|
490
|
+
getTypenameFromQuery((viewObject as any).view.target?.query.ast) ===
|
|
491
|
+
Type.getTypename(schema as Type.Obj.Any),
|
|
492
|
+
),
|
|
538
493
|
),
|
|
539
494
|
);
|
|
540
495
|
const deletable = filteredViews.length === 0;
|
|
541
496
|
|
|
497
|
+
const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
|
|
498
|
+
if (!dispatcher) {
|
|
499
|
+
return [];
|
|
500
|
+
}
|
|
501
|
+
|
|
542
502
|
// TODO(wittjosiah): Remove cast.
|
|
543
|
-
return createStaticSchemaActions({
|
|
503
|
+
return createStaticSchemaActions({
|
|
504
|
+
schema: schema as Type.Obj.Any,
|
|
505
|
+
space,
|
|
506
|
+
dispatch: dispatcher.dispatchPromise,
|
|
507
|
+
deletable,
|
|
508
|
+
});
|
|
544
509
|
}),
|
|
545
510
|
Option.getOrElse(() => []),
|
|
546
|
-
)
|
|
547
|
-
);
|
|
511
|
+
);
|
|
512
|
+
});
|
|
548
513
|
},
|
|
549
514
|
}),
|
|
550
515
|
|
|
551
|
-
// Create nodes for
|
|
516
|
+
// Create nodes for views of record types.
|
|
552
517
|
createExtension({
|
|
553
|
-
id: `${
|
|
518
|
+
id: `${meta.id}/schema-views`,
|
|
554
519
|
connector: (node) => {
|
|
555
|
-
let query: QueryResult<
|
|
556
|
-
return
|
|
557
|
-
|
|
520
|
+
let query: Database.QueryResult<Obj.Any> | undefined;
|
|
521
|
+
return Atom.make((get) => {
|
|
522
|
+
// TODO(wittjosiah): Use schemaRegistry query once it support atom reactivity.
|
|
523
|
+
const schemas = get(context.capabilities(ClientCapabilities.Schema))
|
|
524
|
+
.flat()
|
|
525
|
+
.filter((schema) => ViewAnnotation.get(schema).pipe(Option.getOrElse(() => false)));
|
|
526
|
+
const filter = Filter.or(...schemas.map((schema) => Filter.type(schema)));
|
|
527
|
+
|
|
528
|
+
return Function.pipe(
|
|
558
529
|
get(node),
|
|
559
530
|
Option.flatMap((node) => {
|
|
560
531
|
const space = getSpace(node.data) ?? (isSpace(node.properties.space) ? node.properties.space : undefined);
|
|
561
|
-
return space && (Obj.instanceOf(
|
|
532
|
+
return space && (Obj.instanceOf(Type.PersistentType, node.data) || Schema.isSchema(node.data))
|
|
562
533
|
? Option.some({ space, schema: node.data })
|
|
563
534
|
: Option.none();
|
|
564
535
|
}),
|
|
565
536
|
Option.map(({ space, schema }) => {
|
|
566
537
|
if (!query) {
|
|
567
|
-
// TODO(wittjosiah):
|
|
568
|
-
|
|
538
|
+
// TODO(wittjosiah): Ideally this query would traverse the view reference & filter by the query ast.
|
|
539
|
+
// TODO(wittjosiah): Remove cast.
|
|
540
|
+
query = space.db.query(filter) as unknown as Database.QueryResult<Obj.Any>;
|
|
569
541
|
}
|
|
570
542
|
|
|
571
|
-
// TODO(wittjosiah): Remove
|
|
543
|
+
// TODO(wittjosiah): Remove casts.
|
|
572
544
|
const typename = Schema.isSchema(schema) ? Type.getTypename(schema as Type.Obj.Any) : schema.typename;
|
|
573
|
-
return get(
|
|
574
|
-
.filter((
|
|
575
|
-
|
|
545
|
+
return get(atomFromQuery(query))
|
|
546
|
+
.filter((object) =>
|
|
547
|
+
get(atomFromSignal(() => getTypenameFromQuery((object as any).view.target?.query.ast) === typename)),
|
|
548
|
+
)
|
|
549
|
+
.map((object) =>
|
|
576
550
|
get(
|
|
577
|
-
|
|
551
|
+
atomFromSignal(() =>
|
|
578
552
|
createObjectNode({
|
|
579
|
-
object
|
|
553
|
+
object,
|
|
580
554
|
space,
|
|
581
|
-
resolve,
|
|
555
|
+
resolve: resolve(get),
|
|
582
556
|
droppable: false,
|
|
583
557
|
}),
|
|
584
558
|
),
|
|
@@ -587,41 +561,52 @@ export default (context: PluginContext) => {
|
|
|
587
561
|
.filter(isNonNullable);
|
|
588
562
|
}),
|
|
589
563
|
Option.getOrElse(() => []),
|
|
590
|
-
)
|
|
591
|
-
);
|
|
564
|
+
);
|
|
565
|
+
});
|
|
592
566
|
},
|
|
593
567
|
}),
|
|
594
568
|
|
|
595
569
|
// Create collection actions and action groups.
|
|
596
570
|
createExtension({
|
|
597
|
-
id: `${
|
|
571
|
+
id: `${meta.id}/object-actions`,
|
|
598
572
|
actions: (node) => {
|
|
599
|
-
let query: QueryResult<
|
|
600
|
-
return
|
|
601
|
-
|
|
573
|
+
let query: Database.QueryResult<Obj.Any> | undefined;
|
|
574
|
+
return Atom.make((get) => {
|
|
575
|
+
// TODO(wittjosiah): Use schemaRegistry query once it support atom reactivity.
|
|
576
|
+
const schemas = get(context.capabilities(ClientCapabilities.Schema))
|
|
577
|
+
.flat()
|
|
578
|
+
.filter((schema) => ViewAnnotation.get(schema).pipe(Option.getOrElse(() => false)));
|
|
579
|
+
const filter = Filter.or(...schemas.map((schema) => Filter.type(schema)));
|
|
580
|
+
|
|
581
|
+
return Function.pipe(
|
|
602
582
|
get(node),
|
|
603
583
|
Option.flatMap((node) => {
|
|
604
584
|
const space = getSpace(node.data);
|
|
605
|
-
return space && Obj.isObject(node.data)
|
|
585
|
+
return space && Obj.isObject(node.data) && Obj.getTypename(node.data) === node.type
|
|
586
|
+
? Option.some({ space, object: node.data })
|
|
587
|
+
: Option.none();
|
|
606
588
|
}),
|
|
607
589
|
Option.flatMap(({ space, object }) => {
|
|
608
|
-
const isSchema = Obj.instanceOf(
|
|
590
|
+
const isSchema = Obj.instanceOf(Type.PersistentType, object);
|
|
609
591
|
if (!query && isSchema) {
|
|
610
|
-
// TODO(wittjosiah):
|
|
611
|
-
|
|
592
|
+
// TODO(wittjosiah): Ideally this query would traverse the view reference & filter by the query ast.
|
|
593
|
+
// TODO(wittjosiah): Remove cast.
|
|
594
|
+
query = space.db.query(filter) as unknown as Database.QueryResult<Obj.Any>;
|
|
612
595
|
}
|
|
613
596
|
|
|
614
597
|
let deletable =
|
|
615
598
|
!isSchema &&
|
|
616
|
-
// Don't allow
|
|
617
|
-
!(
|
|
618
|
-
Obj.instanceOf(DataType.QueryCollection, object) &&
|
|
619
|
-
object.query.typename === DataType.StoredSchema.typename
|
|
620
|
-
);
|
|
599
|
+
// Don't allow system collections to be deleted.
|
|
600
|
+
!Obj.instanceOf(Collection.Managed, object);
|
|
621
601
|
if (isSchema && query) {
|
|
622
|
-
const
|
|
602
|
+
const objects = get(atomFromQuery(query));
|
|
623
603
|
const filteredViews = get(
|
|
624
|
-
|
|
604
|
+
atomFromSignal(() =>
|
|
605
|
+
objects.filter(
|
|
606
|
+
(viewObject) =>
|
|
607
|
+
getTypenameFromQuery((viewObject as any).view.target?.query.ast) === object.typename,
|
|
608
|
+
),
|
|
609
|
+
),
|
|
625
610
|
);
|
|
626
611
|
deletable = filteredViews.length === 0;
|
|
627
612
|
}
|
|
@@ -629,7 +614,6 @@ export default (context: PluginContext) => {
|
|
|
629
614
|
const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
|
|
630
615
|
const [appGraph] = get(context.capabilities(Capabilities.AppGraph));
|
|
631
616
|
const [state] = get(context.capabilities(SpaceCapabilities.State));
|
|
632
|
-
const objectForms = get(context.capabilities(SpaceCapabilities.ObjectForm));
|
|
633
617
|
|
|
634
618
|
if (!dispatcher || !appGraph || !state) {
|
|
635
619
|
return Option.none();
|
|
@@ -638,34 +622,34 @@ export default (context: PluginContext) => {
|
|
|
638
622
|
object,
|
|
639
623
|
graph: appGraph.graph,
|
|
640
624
|
dispatch: dispatcher.dispatchPromise,
|
|
641
|
-
|
|
625
|
+
resolve: resolve(get),
|
|
642
626
|
deletable,
|
|
643
|
-
navigable: get(
|
|
627
|
+
navigable: get(atomFromSignal(() => state.navigableCollections)),
|
|
644
628
|
});
|
|
645
629
|
}
|
|
646
630
|
}),
|
|
647
631
|
Option.map((params) => constructObjectActions(params)),
|
|
648
632
|
Option.getOrElse(() => []),
|
|
649
|
-
)
|
|
650
|
-
);
|
|
633
|
+
);
|
|
634
|
+
});
|
|
651
635
|
},
|
|
652
636
|
}),
|
|
653
637
|
|
|
654
638
|
// View selected objects.
|
|
655
639
|
createExtension({
|
|
656
|
-
id: `${
|
|
640
|
+
id: `${meta.id}/selected-objects`,
|
|
657
641
|
connector: (node) =>
|
|
658
|
-
|
|
659
|
-
pipe(
|
|
642
|
+
Atom.make((get) =>
|
|
643
|
+
Function.pipe(
|
|
660
644
|
get(node),
|
|
661
|
-
Option.flatMap((node) => (Obj.instanceOf(
|
|
645
|
+
Option.flatMap((node) => (Obj.instanceOf(View.View, node.data) ? Option.some(node) : Option.none())),
|
|
662
646
|
Option.map((node) => [
|
|
663
647
|
{
|
|
664
648
|
id: [node.id, 'selected-objects'].join(ATTENDABLE_PATH_SEPARATOR),
|
|
665
649
|
type: PLANK_COMPANION_TYPE,
|
|
666
650
|
data: 'selected-objects',
|
|
667
651
|
properties: {
|
|
668
|
-
label: ['companion selected objects label', { ns:
|
|
652
|
+
label: ['companion selected objects label', { ns: meta.id }],
|
|
669
653
|
icon: 'ph--tree-view--regular',
|
|
670
654
|
disposition: 'hidden',
|
|
671
655
|
},
|
|
@@ -678,10 +662,10 @@ export default (context: PluginContext) => {
|
|
|
678
662
|
|
|
679
663
|
// Object settings plank companion.
|
|
680
664
|
createExtension({
|
|
681
|
-
id: `${
|
|
665
|
+
id: `${meta.id}/settings`,
|
|
682
666
|
connector: (node) =>
|
|
683
|
-
|
|
684
|
-
pipe(
|
|
667
|
+
Atom.make((get) =>
|
|
668
|
+
Function.pipe(
|
|
685
669
|
get(node),
|
|
686
670
|
Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node) : Option.none())),
|
|
687
671
|
Option.map((node) => [
|
|
@@ -690,7 +674,7 @@ export default (context: PluginContext) => {
|
|
|
690
674
|
type: PLANK_COMPANION_TYPE,
|
|
691
675
|
data: 'settings',
|
|
692
676
|
properties: {
|
|
693
|
-
label: ['object settings label', { ns:
|
|
677
|
+
label: ['object settings label', { ns: meta.id }],
|
|
694
678
|
icon: 'ph--sliders--regular',
|
|
695
679
|
disposition: 'hidden',
|
|
696
680
|
position: 'fallback',
|