@dxos/plugin-space 0.8.4-main.5ea62a8 → 0.8.4-main.66e292d
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-3A6KBYWT.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-DCY3W36E.mjs → chunk-GJOZILGC.mjs} +210 -142
- package/dist/lib/browser/chunk-GJOZILGC.mjs.map +7 -0
- package/dist/lib/browser/{chunk-J6YZG77T.mjs → chunk-KCZ527AM.mjs} +641 -500
- package/dist/lib/browser/chunk-KCZ527AM.mjs.map +7 -0
- package/dist/lib/browser/{chunk-ELJDGQTO.mjs → chunk-P25R3AOK.mjs} +35 -5
- package/dist/lib/browser/chunk-P25R3AOK.mjs.map +7 -0
- package/dist/lib/browser/{chunk-WAXS2ZVX.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-T6ZNVE7S.mjs → identity-created-NAXTPQXE.mjs} +5 -5
- package/dist/lib/browser/identity-created-NAXTPQXE.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +88 -131
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-7E3IZIJS.mjs → intent-resolver-RZEWNJ2K.mjs} +105 -100
- 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-GL4CE2F4.mjs → react-surface-VOETEAG3.mjs} +91 -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-B6MMHLPS.mjs → settings-TRLI52I5.mjs} +5 -5
- package/dist/lib/browser/{settings-B6MMHLPS.mjs.map → settings-TRLI52I5.mjs.map} +1 -1
- package/dist/lib/browser/{spaces-ready-QVABOCO3.mjs → spaces-ready-OHGCWZHQ.mjs} +22 -15
- package/dist/lib/browser/spaces-ready-OHGCWZHQ.mjs.map +7 -0
- package/dist/lib/browser/{state-2RGW7FQG.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-M45TH5LR.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-Q6AAQLQG.mjs → chunk-7EV4SN47.mjs} +34 -5
- package/dist/lib/node-esm/chunk-7EV4SN47.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-HYIZVPOA.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-AUQ3SKL2.mjs → chunk-I6FZP42D.mjs} +210 -142
- package/dist/lib/node-esm/chunk-I6FZP42D.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-ZCEH2VYE.mjs → chunk-JAMGJUFU.mjs} +641 -500
- 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-AL7NNCKH.mjs → identity-created-OXLKCJE3.mjs} +5 -5
- package/dist/lib/node-esm/identity-created-OXLKCJE3.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +88 -131
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-UVO4MKWX.mjs → intent-resolver-4PHJWDXW.mjs} +105 -100
- 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-5EKYI66P.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-IOC6YSVQ.mjs → react-surface-J3XDMU2D.mjs} +91 -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-IOFU6EAS.mjs → settings-MNQTKHL7.mjs} +5 -5
- package/dist/lib/node-esm/{settings-IOFU6EAS.mjs.map → settings-MNQTKHL7.mjs.map} +1 -1
- package/dist/lib/node-esm/{spaces-ready-MS6GHPFR.mjs → spaces-ready-ZPU24DA2.mjs} +22 -15
- package/dist/lib/node-esm/spaces-ready-ZPU24DA2.mjs.map +7 -0
- package/dist/lib/node-esm/{state-7VBVBGNS.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.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +13 -7
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +1 -1
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-root.d.ts.map +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/spaces-ready.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 +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +218 -215
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +16 -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/MembersContainer.d.ts.map +1 -0
- package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts +1591 -0
- package/dist/types/src/components/{MembersContainer.stories.d.ts.map → MembersContainer/MembersContainer.stories.d.ts.map} +1 -1
- 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/{MembersContainer.stories.d.ts → RecordArticle.stories.d.ts} +219 -216
- 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.stories.d.ts → SpacePresence/SpacePresence.stories.d.ts} +220 -217
- package/dist/types/src/components/{SpacePresence.stories.d.ts.map → SpacePresence/SpacePresence.stories.d.ts.map} +1 -1
- 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 +218 -215
- 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 +219 -216
- 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 -17
- 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 +82 -142
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +21 -34
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +68 -59
- package/src/SpacePlugin.ts +181 -215
- package/src/capabilities/app-graph-builder.ts +205 -267
- package/src/capabilities/app-graph-serializer.ts +12 -12
- package/src/capabilities/capabilities.ts +26 -16
- package/src/capabilities/identity-created.ts +2 -2
- package/src/capabilities/index.ts +1 -1
- package/src/capabilities/intent-resolver.ts +78 -75
- package/src/capabilities/react-root.tsx +4 -3
- package/src/capabilities/react-surface.tsx +95 -145
- package/src/capabilities/repair.ts +57 -0
- package/src/capabilities/spaces-ready.ts +15 -6
- package/src/capabilities/state.ts +2 -2
- 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 +11 -11
- package/src/components/CreateDialog/CreateObjectDialog.tsx +63 -43
- package/src/components/CreateDialog/CreateObjectPanel.tsx +38 -31
- 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.stories.tsx → MembersContainer/MembersContainer.stories.tsx} +7 -6
- package/src/components/{MembersContainer.tsx → MembersContainer/MembersContainer.tsx} +16 -14
- 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} +6 -6
- package/src/components/ObjectRenamePopover/index.ts +5 -0
- package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +6 -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 +24 -27
- package/src/components/SpacePluginSettings.tsx +10 -4
- package/src/components/{SpacePresence.stories.tsx → SpacePresence/SpacePresence.stories.tsx} +23 -25
- package/src/components/{SpacePresence.tsx → SpacePresence/SpacePresence.tsx} +16 -11
- 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 +9 -4
- package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +63 -23
- package/src/components/SyncStatus/InlineSyncStatus.tsx +8 -8
- package/src/components/SyncStatus/SyncStatus.stories.tsx +4 -5
- package/src/components/SyncStatus/SyncStatus.tsx +107 -11
- package/src/components/ViewEditor.tsx +57 -23
- package/src/components/index.ts +7 -8
- package/src/events.ts +6 -6
- 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 +2 -1
- 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 +44 -50
- package/src/util.tsx +216 -143
- package/dist/lib/browser/CollectionMain-D2B75XBS.mjs.map +0 -7
- package/dist/lib/browser/ObjectDetailsPanel-SY6FYTYC.mjs +0 -88
- package/dist/lib/browser/ObjectDetailsPanel-SY6FYTYC.mjs.map +0 -7
- package/dist/lib/browser/RecordMain-TEBGAVSL.mjs +0 -68
- package/dist/lib/browser/RecordMain-TEBGAVSL.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-FLF7XMQO.mjs +0 -516
- package/dist/lib/browser/app-graph-builder-FLF7XMQO.mjs.map +0 -7
- package/dist/lib/browser/app-graph-serializer-3A6KBYWT.mjs.map +0 -7
- package/dist/lib/browser/chunk-CBYL62HG.mjs +0 -19
- package/dist/lib/browser/chunk-CBYL62HG.mjs.map +0 -7
- package/dist/lib/browser/chunk-DCY3W36E.mjs.map +0 -7
- package/dist/lib/browser/chunk-ELJDGQTO.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-J6YZG77T.mjs.map +0 -7
- package/dist/lib/browser/chunk-RQVV4XVF.mjs +0 -343
- package/dist/lib/browser/chunk-RQVV4XVF.mjs.map +0 -7
- package/dist/lib/browser/chunk-TUQZO5P4.mjs +0 -20
- package/dist/lib/browser/chunk-TUQZO5P4.mjs.map +0 -7
- package/dist/lib/browser/chunk-WAXS2ZVX.mjs.map +0 -7
- package/dist/lib/browser/identity-created-T6ZNVE7S.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-7E3IZIJS.mjs.map +0 -7
- package/dist/lib/browser/react-root-RWMT2RCK.mjs +0 -29
- package/dist/lib/browser/react-root-RWMT2RCK.mjs.map +0 -7
- package/dist/lib/browser/react-surface-GL4CE2F4.mjs.map +0 -7
- package/dist/lib/browser/schema-defs-YDPFZELA.mjs +0 -26
- package/dist/lib/browser/schema-defs-YDPFZELA.mjs.map +0 -7
- package/dist/lib/browser/spaces-ready-QVABOCO3.mjs.map +0 -7
- package/dist/lib/browser/state-2RGW7FQG.mjs.map +0 -7
- package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs.map +0 -7
- package/dist/lib/node-esm/ObjectDetailsPanel-3MYLTMXN.mjs +0 -89
- package/dist/lib/node-esm/ObjectDetailsPanel-3MYLTMXN.mjs.map +0 -7
- package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs +0 -70
- package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-D5YPOJS5.mjs +0 -517
- package/dist/lib/node-esm/app-graph-builder-D5YPOJS5.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-serializer-M45TH5LR.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-AUQ3SKL2.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-FJZNSJC4.mjs +0 -20
- package/dist/lib/node-esm/chunk-FJZNSJC4.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HC677WUJ.mjs +0 -21
- package/dist/lib/node-esm/chunk-HC677WUJ.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-HYIZVPOA.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-Q6AAQLQG.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-WKQTO37U.mjs +0 -344
- package/dist/lib/node-esm/chunk-WKQTO37U.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ZCEH2VYE.mjs.map +0 -7
- package/dist/lib/node-esm/identity-created-AL7NNCKH.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-UVO4MKWX.mjs.map +0 -7
- package/dist/lib/node-esm/react-root-5EKYI66P.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-IOC6YSVQ.mjs.map +0 -7
- package/dist/lib/node-esm/schema-defs-OYBCWKAS.mjs +0 -27
- package/dist/lib/node-esm/schema-defs-OYBCWKAS.mjs.map +0 -7
- package/dist/lib/node-esm/spaces-ready-MS6GHPFR.mjs.map +0 -7
- package/dist/lib/node-esm/state-7VBVBGNS.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/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/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/RecordMain.d.ts +0 -7
- package/dist/types/src/components/RecordMain.d.ts.map +0 -1
- package/dist/types/src/components/SpacePresence.d.ts.map +0 -1
- package/src/capabilities/schema-defs.ts +0 -31
- package/src/components/ObjectDetailsPanel.tsx +0 -77
- package/src/components/PersistenceStatus.tsx +0 -83
- package/src/components/RecordMain.tsx +0 -43
- /package/dist/types/src/components/{MembersContainer.d.ts → MembersContainer/MembersContainer.d.ts} +0 -0
|
@@ -2,39 +2,42 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
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';
|
|
7
10
|
|
|
8
11
|
import { Capabilities, type PluginContext, contributes, createIntent } from '@dxos/app-framework';
|
|
9
|
-
import { type
|
|
10
|
-
import { Filter, Obj,
|
|
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
16
|
import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';
|
|
14
|
-
import { ROOT_ID,
|
|
15
|
-
import {
|
|
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
21
|
import { getActiveSpace } from '../hooks';
|
|
19
|
-
import {
|
|
22
|
+
import { meta } from '../meta';
|
|
20
23
|
import { SPACE_TYPE, SpaceAction, type SpaceSettingsProps } from '../types';
|
|
21
24
|
import {
|
|
22
25
|
SHARED,
|
|
23
26
|
SPACES,
|
|
27
|
+
atomFromQuery,
|
|
24
28
|
constructObjectActions,
|
|
25
29
|
constructSpaceActions,
|
|
26
30
|
constructSpaceNode,
|
|
27
31
|
createObjectNode,
|
|
28
32
|
createStaticSchemaActions,
|
|
29
33
|
createStaticSchemaNode,
|
|
30
|
-
rxFromQuery,
|
|
31
34
|
} from '../util';
|
|
32
35
|
|
|
33
36
|
import { SpaceCapabilities } from './capabilities';
|
|
34
37
|
|
|
35
38
|
export default (context: PluginContext) => {
|
|
36
|
-
// TODO(wittjosiah):
|
|
37
|
-
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) =>
|
|
38
41
|
context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};
|
|
39
42
|
|
|
40
43
|
const spacesNode = {
|
|
@@ -42,7 +45,7 @@ export default (context: PluginContext) => {
|
|
|
42
45
|
type: SPACES,
|
|
43
46
|
cacheable: ['label', 'role'],
|
|
44
47
|
properties: {
|
|
45
|
-
label: ['spaces label', { ns:
|
|
48
|
+
label: ['spaces label', { ns: meta.id }],
|
|
46
49
|
icon: 'ph--planet--regular',
|
|
47
50
|
testId: 'spacePlugin.spaces',
|
|
48
51
|
role: 'branch',
|
|
@@ -77,11 +80,11 @@ export default (context: PluginContext) => {
|
|
|
77
80
|
return contributes(Capabilities.AppGraphBuilder, [
|
|
78
81
|
// Primary actions.
|
|
79
82
|
createExtension({
|
|
80
|
-
id: `${
|
|
83
|
+
id: `${meta.id}/primary-actions`,
|
|
81
84
|
position: 'hoist',
|
|
82
85
|
actions: (node) =>
|
|
83
|
-
|
|
84
|
-
pipe(
|
|
86
|
+
Atom.make((get) =>
|
|
87
|
+
Function.pipe(
|
|
85
88
|
get(node),
|
|
86
89
|
Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
|
|
87
90
|
Option.map(() => [
|
|
@@ -92,7 +95,7 @@ export default (context: PluginContext) => {
|
|
|
92
95
|
await dispatch(createIntent(SpaceAction.OpenCreateSpace));
|
|
93
96
|
},
|
|
94
97
|
properties: {
|
|
95
|
-
label: ['create space label', { ns:
|
|
98
|
+
label: ['create space label', { ns: meta.id }],
|
|
96
99
|
icon: 'ph--plus--regular',
|
|
97
100
|
testId: 'spacePlugin.createSpace',
|
|
98
101
|
disposition: 'menu',
|
|
@@ -105,7 +108,7 @@ export default (context: PluginContext) => {
|
|
|
105
108
|
await dispatch(createIntent(SpaceAction.Join));
|
|
106
109
|
},
|
|
107
110
|
properties: {
|
|
108
|
-
label: ['join space label', { ns:
|
|
111
|
+
label: ['join space label', { ns: meta.id }],
|
|
109
112
|
icon: 'ph--sign-in--regular',
|
|
110
113
|
testId: 'spacePlugin.joinSpace',
|
|
111
114
|
disposition: 'menu',
|
|
@@ -120,7 +123,7 @@ export default (context: PluginContext) => {
|
|
|
120
123
|
await dispatch(createIntent(SpaceAction.OpenMembers, { space }));
|
|
121
124
|
},
|
|
122
125
|
properties: {
|
|
123
|
-
label: ['share space label', { ns:
|
|
126
|
+
label: ['share space label', { ns: meta.id }],
|
|
124
127
|
icon: 'ph--users--regular',
|
|
125
128
|
testId: 'spacePlugin.shareSpace',
|
|
126
129
|
keyBinding: {
|
|
@@ -138,7 +141,7 @@ export default (context: PluginContext) => {
|
|
|
138
141
|
await dispatch(createIntent(SpaceAction.OpenSettings, { space }));
|
|
139
142
|
},
|
|
140
143
|
properties: {
|
|
141
|
-
label: ['open current space settings label', { ns:
|
|
144
|
+
label: ['open current space settings label', { ns: meta.id }],
|
|
142
145
|
icon: 'ph--faders--regular',
|
|
143
146
|
keyBinding: {
|
|
144
147
|
macos: 'meta+shift+,',
|
|
@@ -154,44 +157,44 @@ export default (context: PluginContext) => {
|
|
|
154
157
|
|
|
155
158
|
// Create spaces group node.
|
|
156
159
|
createExtension({
|
|
157
|
-
id: `${
|
|
160
|
+
id: `${meta.id}/root`,
|
|
158
161
|
position: 'hoist',
|
|
159
162
|
connector: (node) =>
|
|
160
|
-
|
|
161
|
-
pipe(
|
|
163
|
+
Atom.make((get) =>
|
|
164
|
+
Function.pipe(
|
|
162
165
|
get(node),
|
|
163
166
|
Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
|
|
164
167
|
Option.map(() => [spacesNode]),
|
|
165
168
|
Option.getOrElse(() => []),
|
|
166
169
|
),
|
|
167
170
|
),
|
|
168
|
-
// resolver: ({ id }) => (id === SPACES ? spacesNode : undefined),
|
|
169
171
|
}),
|
|
170
172
|
|
|
171
173
|
// Create space nodes.
|
|
172
174
|
createExtension({
|
|
173
175
|
id: SPACES,
|
|
174
176
|
connector: (node) => {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
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(
|
|
178
181
|
get(node),
|
|
179
182
|
Option.flatMap((node) => (node.id === SPACES ? Option.some(node) : Option.none())),
|
|
180
183
|
Option.map(() => {
|
|
181
184
|
const state = context.getCapability(SpaceCapabilities.State);
|
|
182
185
|
const client = context.getCapability(ClientCapabilities.Client);
|
|
183
|
-
const
|
|
184
|
-
const
|
|
186
|
+
const spacesAtom = atomFromObservable(client.spaces);
|
|
187
|
+
const isReadyAtom = atomFromObservable(client.spaces.isReady);
|
|
185
188
|
|
|
186
|
-
const spaces = get(
|
|
187
|
-
const isReady = get(
|
|
189
|
+
const spaces = get(spacesAtom);
|
|
190
|
+
const isReady = get(isReadyAtom);
|
|
188
191
|
|
|
189
192
|
if (!spaces || !isReady) {
|
|
190
193
|
return [];
|
|
191
194
|
}
|
|
192
195
|
|
|
193
196
|
const settings = get(context.capabilities(Capabilities.SettingsStore))[0]?.getStore<SpaceSettingsProps>(
|
|
194
|
-
|
|
197
|
+
meta.id,
|
|
195
198
|
)?.value;
|
|
196
199
|
|
|
197
200
|
// TODO(wittjosiah): During client reset, accessing default space throws.
|
|
@@ -199,9 +202,9 @@ export default (context: PluginContext) => {
|
|
|
199
202
|
if (!query) {
|
|
200
203
|
query = client.spaces.default.db.query(Filter.type(Type.Expando, { key: SHARED }));
|
|
201
204
|
}
|
|
202
|
-
const [spacesOrder] = get(
|
|
205
|
+
const [spacesOrder] = get(atomFromQuery(query));
|
|
203
206
|
return get(
|
|
204
|
-
|
|
207
|
+
atomFromSignal(() => {
|
|
205
208
|
const order: string[] = spacesOrder?.order ?? [];
|
|
206
209
|
const orderMap = new Map(order.map((id, index) => [id, index]));
|
|
207
210
|
return [
|
|
@@ -219,7 +222,7 @@ export default (context: PluginContext) => {
|
|
|
219
222
|
navigable: state.navigableCollections,
|
|
220
223
|
personal: space === client.spaces.default,
|
|
221
224
|
namesCache: state.spaceNames,
|
|
222
|
-
resolve,
|
|
225
|
+
resolve: resolve(get),
|
|
223
226
|
}),
|
|
224
227
|
);
|
|
225
228
|
}),
|
|
@@ -232,54 +235,14 @@ export default (context: PluginContext) => {
|
|
|
232
235
|
),
|
|
233
236
|
);
|
|
234
237
|
},
|
|
235
|
-
// resolver: ({ id }) => {
|
|
236
|
-
// if (id.length !== SPACE_ID_LENGTH) {
|
|
237
|
-
// return;
|
|
238
|
-
// }
|
|
239
|
-
|
|
240
|
-
// const client = context.requestCapability(ClientCapabilities.Client);
|
|
241
|
-
// const spaces = toSignal(
|
|
242
|
-
// (onChange) => client.spaces.subscribe(() => onChange()).unsubscribe,
|
|
243
|
-
// () => client.spaces.get(),
|
|
244
|
-
// );
|
|
245
|
-
|
|
246
|
-
// const isReady = toSignal(
|
|
247
|
-
// (onChange) => client.spaces.isReady.subscribe(() => onChange()).unsubscribe,
|
|
248
|
-
// () => client.spaces.isReady.get(),
|
|
249
|
-
// );
|
|
250
|
-
|
|
251
|
-
// if (!spaces || !isReady) {
|
|
252
|
-
// return;
|
|
253
|
-
// }
|
|
254
|
-
|
|
255
|
-
// const space = spaces.find((space) => space.id === id);
|
|
256
|
-
// if (!space) {
|
|
257
|
-
// return;
|
|
258
|
-
// }
|
|
259
|
-
|
|
260
|
-
// if (space.state.get() === SpaceState.SPACE_INACTIVE) {
|
|
261
|
-
// return false;
|
|
262
|
-
// } else if (space.state.get() !== SpaceState.SPACE_READY) {
|
|
263
|
-
// return undefined;
|
|
264
|
-
// } else {
|
|
265
|
-
// const state = context.requestCapability(SpaceCapabilities.State);
|
|
266
|
-
// return constructSpaceNode({
|
|
267
|
-
// space,
|
|
268
|
-
// navigable: state.navigableCollections,
|
|
269
|
-
// personal: space === client.spaces.default,
|
|
270
|
-
// namesCache: state.spaceNames,
|
|
271
|
-
// resolve,
|
|
272
|
-
// });
|
|
273
|
-
// }
|
|
274
|
-
// },
|
|
275
238
|
}),
|
|
276
239
|
|
|
277
240
|
// Create space actions.
|
|
278
241
|
createExtension({
|
|
279
|
-
id: `${
|
|
242
|
+
id: `${meta.id}/actions`,
|
|
280
243
|
actions: (node) =>
|
|
281
|
-
|
|
282
|
-
pipe(
|
|
244
|
+
Atom.make((get) =>
|
|
245
|
+
Function.pipe(
|
|
283
246
|
get(node),
|
|
284
247
|
Option.flatMap((node) =>
|
|
285
248
|
node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),
|
|
@@ -308,24 +271,24 @@ export default (context: PluginContext) => {
|
|
|
308
271
|
|
|
309
272
|
// Create nodes for objects in the root collection of a space.
|
|
310
273
|
createExtension({
|
|
311
|
-
id: `${
|
|
274
|
+
id: `${meta.id}/root-collection`,
|
|
312
275
|
connector: (node) =>
|
|
313
|
-
|
|
314
|
-
pipe(
|
|
276
|
+
Atom.make((get) =>
|
|
277
|
+
Function.pipe(
|
|
315
278
|
get(node),
|
|
316
279
|
Option.flatMap((node) =>
|
|
317
280
|
node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),
|
|
318
281
|
),
|
|
319
282
|
Option.map((space) => {
|
|
320
283
|
const state = context.getCapability(SpaceCapabilities.State);
|
|
321
|
-
const spaceState = get(
|
|
284
|
+
const spaceState = get(atomFromObservable(space.state));
|
|
322
285
|
if (spaceState !== SpaceState.SPACE_READY) {
|
|
323
286
|
return [];
|
|
324
287
|
}
|
|
325
288
|
|
|
326
289
|
const collection = get(
|
|
327
|
-
|
|
328
|
-
() => space.properties[
|
|
290
|
+
atomFromSignal(
|
|
291
|
+
() => space.properties[Collection.Collection.typename]?.target as Collection.Collection | undefined,
|
|
329
292
|
),
|
|
330
293
|
);
|
|
331
294
|
if (!collection) {
|
|
@@ -333,8 +296,8 @@ export default (context: PluginContext) => {
|
|
|
333
296
|
}
|
|
334
297
|
|
|
335
298
|
return get(
|
|
336
|
-
|
|
337
|
-
pipe(
|
|
299
|
+
atomFromSignal(() =>
|
|
300
|
+
Function.pipe(
|
|
338
301
|
collection.objects,
|
|
339
302
|
Array.map((object) => object.target),
|
|
340
303
|
Array.filter(isNonNullable),
|
|
@@ -342,7 +305,7 @@ export default (context: PluginContext) => {
|
|
|
342
305
|
createObjectNode({
|
|
343
306
|
space,
|
|
344
307
|
object,
|
|
345
|
-
resolve,
|
|
308
|
+
resolve: resolve(get),
|
|
346
309
|
navigable: state.navigableCollections,
|
|
347
310
|
}),
|
|
348
311
|
),
|
|
@@ -356,29 +319,35 @@ export default (context: PluginContext) => {
|
|
|
356
319
|
),
|
|
357
320
|
}),
|
|
358
321
|
|
|
359
|
-
// Create nodes for objects in a collection or by its
|
|
322
|
+
// Create nodes for objects in a collection or by its DXN.
|
|
360
323
|
createExtension({
|
|
361
|
-
id: `${
|
|
324
|
+
id: `${meta.id}/objects`,
|
|
362
325
|
connector: (node) =>
|
|
363
|
-
|
|
364
|
-
pipe(
|
|
326
|
+
Atom.make((get) =>
|
|
327
|
+
Function.pipe(
|
|
365
328
|
get(node),
|
|
366
329
|
Option.flatMap((node) =>
|
|
367
|
-
Obj.instanceOf(
|
|
330
|
+
Obj.instanceOf(Collection.Collection, node.data) ? Option.some(node.data) : Option.none(),
|
|
368
331
|
),
|
|
369
332
|
Option.map((collection) => {
|
|
370
333
|
const state = context.getCapability(SpaceCapabilities.State);
|
|
371
334
|
const space = getSpace(collection);
|
|
372
335
|
|
|
373
336
|
return get(
|
|
374
|
-
|
|
375
|
-
pipe(
|
|
337
|
+
atomFromSignal(() =>
|
|
338
|
+
Function.pipe(
|
|
376
339
|
collection.objects,
|
|
377
340
|
Array.map((object) => object.target),
|
|
378
341
|
Array.filter(isNonNullable),
|
|
379
342
|
Array.map(
|
|
380
343
|
(object) =>
|
|
381
|
-
space &&
|
|
344
|
+
space &&
|
|
345
|
+
createObjectNode({
|
|
346
|
+
object,
|
|
347
|
+
space,
|
|
348
|
+
resolve: resolve(get),
|
|
349
|
+
navigable: state.navigableCollections,
|
|
350
|
+
}),
|
|
382
351
|
),
|
|
383
352
|
Array.filter(isNonNullable),
|
|
384
353
|
),
|
|
@@ -388,96 +357,68 @@ export default (context: PluginContext) => {
|
|
|
388
357
|
Option.getOrElse(() => []),
|
|
389
358
|
),
|
|
390
359
|
),
|
|
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
|
-
|
|
417
|
-
// if (!object) {
|
|
418
|
-
// return;
|
|
419
|
-
// }
|
|
420
|
-
|
|
421
|
-
// if (isDeleted(object)) {
|
|
422
|
-
// return false;
|
|
423
|
-
// } else {
|
|
424
|
-
// const state = context.requestCapability(SpaceCapabilities.State);
|
|
425
|
-
// return createObjectNode({ object, space, resolve, navigable: state.navigableCollections });
|
|
426
|
-
// }
|
|
427
|
-
// },
|
|
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
|
+
},
|
|
428
386
|
}),
|
|
429
387
|
|
|
430
|
-
// Create nodes for
|
|
388
|
+
// Create object nodes for schema-based system collections.
|
|
431
389
|
createExtension({
|
|
432
|
-
id: `${
|
|
390
|
+
id: `${meta.id}/system-collections`,
|
|
433
391
|
connector: (node) => {
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
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(
|
|
437
397
|
get(node),
|
|
438
398
|
Option.flatMap((node) =>
|
|
439
|
-
Obj.instanceOf(
|
|
399
|
+
Obj.instanceOf(Collection.Managed, node.data) ? Option.some(node.data) : Option.none(),
|
|
440
400
|
),
|
|
441
401
|
Option.flatMap((collection) => {
|
|
442
402
|
const space = getSpace(collection);
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
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();
|
|
446
407
|
}),
|
|
447
|
-
Option.map(({
|
|
448
|
-
const state = context.getCapability(SpaceCapabilities.State);
|
|
408
|
+
Option.map(({ space, schema }) => {
|
|
449
409
|
if (!query) {
|
|
450
|
-
query = space.db.query(
|
|
451
|
-
Query.without(
|
|
452
|
-
Query.select(Filter.typename(typename)),
|
|
453
|
-
// TODO(wittjosiah): This query is broader than it should be.
|
|
454
|
-
// It will return all objects in the collection, not just the ones of the given type.
|
|
455
|
-
// However this works fine for now because this query is only used for exclusions.
|
|
456
|
-
Query.select(Filter.typename(typename))
|
|
457
|
-
.referencedBy(DataType.Collection, 'objects')
|
|
458
|
-
.reference('objects'),
|
|
459
|
-
),
|
|
460
|
-
);
|
|
410
|
+
query = space.db.query(Filter.type(schema));
|
|
461
411
|
}
|
|
462
|
-
return (
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
resolve,
|
|
473
|
-
droppable: false, // Cannot rearrange query collections.
|
|
474
|
-
navigable: state.navigableCollections,
|
|
475
|
-
}),
|
|
476
|
-
),
|
|
477
|
-
),
|
|
478
|
-
)
|
|
479
|
-
.filter(isNonNullable)
|
|
480
|
-
);
|
|
412
|
+
return get(atomFromQuery(query))
|
|
413
|
+
.map((object) =>
|
|
414
|
+
createObjectNode({
|
|
415
|
+
object,
|
|
416
|
+
space,
|
|
417
|
+
managedCollectionChild: true,
|
|
418
|
+
resolve: resolve(get),
|
|
419
|
+
}),
|
|
420
|
+
)
|
|
421
|
+
.filter(isNonNullable);
|
|
481
422
|
}),
|
|
482
423
|
Option.getOrElse(() => []),
|
|
483
424
|
),
|
|
@@ -485,17 +426,16 @@ export default (context: PluginContext) => {
|
|
|
485
426
|
},
|
|
486
427
|
}),
|
|
487
428
|
|
|
488
|
-
//
|
|
429
|
+
// Create branch nodes for static schema record types.
|
|
489
430
|
createExtension({
|
|
490
|
-
id: `${
|
|
431
|
+
id: `${meta.id}/static-schemas`,
|
|
491
432
|
connector: (node) => {
|
|
492
433
|
const client = context.getCapability(ClientCapabilities.Client);
|
|
493
|
-
return
|
|
494
|
-
pipe(
|
|
434
|
+
return Atom.make((get) =>
|
|
435
|
+
Function.pipe(
|
|
495
436
|
get(node),
|
|
496
437
|
Option.flatMap((node) =>
|
|
497
|
-
Obj.instanceOf(
|
|
498
|
-
node.data.query.typename === DataType.StoredSchema.typename
|
|
438
|
+
Obj.instanceOf(Collection.Managed, node.data) && node.data.key === Type.getTypename(Type.PersistentType)
|
|
499
439
|
? Option.some(node.data)
|
|
500
440
|
: Option.none(),
|
|
501
441
|
),
|
|
@@ -504,7 +444,7 @@ export default (context: PluginContext) => {
|
|
|
504
444
|
return space?.properties.staticRecords ? Option.some(space) : Option.none();
|
|
505
445
|
}),
|
|
506
446
|
Option.map((space) => {
|
|
507
|
-
return get(
|
|
447
|
+
return get(atomFromSignal(() => (space.properties.staticRecords ?? []) as string[]))
|
|
508
448
|
.map((typename) =>
|
|
509
449
|
client.graph.schemaRegistry.schemas.find((schema) => Type.getTypename(schema) === typename),
|
|
510
450
|
)
|
|
@@ -517,13 +457,19 @@ export default (context: PluginContext) => {
|
|
|
517
457
|
},
|
|
518
458
|
}),
|
|
519
459
|
|
|
520
|
-
// Create static schema
|
|
460
|
+
// Create actions for static schema record types.
|
|
521
461
|
createExtension({
|
|
522
|
-
id: `${
|
|
462
|
+
id: `${meta.id}/static-schema-actions`,
|
|
523
463
|
actions: (node) => {
|
|
524
|
-
let query: QueryResult<
|
|
525
|
-
return
|
|
526
|
-
|
|
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(
|
|
527
473
|
get(node),
|
|
528
474
|
Option.flatMap((node) => {
|
|
529
475
|
const space = isSpace(node.properties.space) ? node.properties.space : undefined;
|
|
@@ -531,15 +477,19 @@ export default (context: PluginContext) => {
|
|
|
531
477
|
}),
|
|
532
478
|
Option.map(({ space, schema }) => {
|
|
533
479
|
if (!query) {
|
|
534
|
-
// TODO(wittjosiah):
|
|
535
|
-
|
|
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>;
|
|
536
483
|
}
|
|
537
484
|
|
|
538
|
-
const
|
|
485
|
+
const objects = get(atomFromQuery(query));
|
|
539
486
|
const filteredViews = get(
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
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
|
+
),
|
|
543
493
|
),
|
|
544
494
|
);
|
|
545
495
|
const deletable = filteredViews.length === 0;
|
|
@@ -558,42 +508,51 @@ export default (context: PluginContext) => {
|
|
|
558
508
|
});
|
|
559
509
|
}),
|
|
560
510
|
Option.getOrElse(() => []),
|
|
561
|
-
)
|
|
562
|
-
);
|
|
511
|
+
);
|
|
512
|
+
});
|
|
563
513
|
},
|
|
564
514
|
}),
|
|
565
515
|
|
|
566
|
-
// Create nodes for
|
|
516
|
+
// Create nodes for views of record types.
|
|
567
517
|
createExtension({
|
|
568
|
-
id: `${
|
|
518
|
+
id: `${meta.id}/schema-views`,
|
|
569
519
|
connector: (node) => {
|
|
570
|
-
let query: QueryResult<
|
|
571
|
-
return
|
|
572
|
-
|
|
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(
|
|
573
529
|
get(node),
|
|
574
530
|
Option.flatMap((node) => {
|
|
575
531
|
const space = getSpace(node.data) ?? (isSpace(node.properties.space) ? node.properties.space : undefined);
|
|
576
|
-
return space && (Obj.instanceOf(
|
|
532
|
+
return space && (Obj.instanceOf(Type.PersistentType, node.data) || Schema.isSchema(node.data))
|
|
577
533
|
? Option.some({ space, schema: node.data })
|
|
578
534
|
: Option.none();
|
|
579
535
|
}),
|
|
580
536
|
Option.map(({ space, schema }) => {
|
|
581
537
|
if (!query) {
|
|
582
|
-
// TODO(wittjosiah):
|
|
583
|
-
|
|
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>;
|
|
584
541
|
}
|
|
585
542
|
|
|
586
|
-
// TODO(wittjosiah): Remove
|
|
543
|
+
// TODO(wittjosiah): Remove casts.
|
|
587
544
|
const typename = Schema.isSchema(schema) ? Type.getTypename(schema as Type.Obj.Any) : schema.typename;
|
|
588
|
-
return get(
|
|
589
|
-
.filter((
|
|
590
|
-
|
|
545
|
+
return get(atomFromQuery(query))
|
|
546
|
+
.filter((object) =>
|
|
547
|
+
get(atomFromSignal(() => getTypenameFromQuery((object as any).view.target?.query.ast) === typename)),
|
|
548
|
+
)
|
|
549
|
+
.map((object) =>
|
|
591
550
|
get(
|
|
592
|
-
|
|
551
|
+
atomFromSignal(() =>
|
|
593
552
|
createObjectNode({
|
|
594
|
-
object
|
|
553
|
+
object,
|
|
595
554
|
space,
|
|
596
|
-
resolve,
|
|
555
|
+
resolve: resolve(get),
|
|
597
556
|
droppable: false,
|
|
598
557
|
}),
|
|
599
558
|
),
|
|
@@ -602,72 +561,52 @@ export default (context: PluginContext) => {
|
|
|
602
561
|
.filter(isNonNullable);
|
|
603
562
|
}),
|
|
604
563
|
Option.getOrElse(() => []),
|
|
605
|
-
)
|
|
606
|
-
);
|
|
607
|
-
},
|
|
608
|
-
}),
|
|
609
|
-
|
|
610
|
-
// Create record nodes.
|
|
611
|
-
createExtension({
|
|
612
|
-
id: `${SPACE_PLUGIN}/records`,
|
|
613
|
-
resolver: (id) => {
|
|
614
|
-
let query: QueryResult<Type.Expando> | undefined;
|
|
615
|
-
return Rx.make((get) => {
|
|
616
|
-
const client = context.getCapability(ClientCapabilities.Client);
|
|
617
|
-
const { spaceId, objectId } = parseId(id);
|
|
618
|
-
if (!spaceId || !objectId) {
|
|
619
|
-
return null;
|
|
620
|
-
}
|
|
621
|
-
|
|
622
|
-
const space = client.spaces.get(spaceId);
|
|
623
|
-
if (!space) {
|
|
624
|
-
return null;
|
|
625
|
-
}
|
|
626
|
-
|
|
627
|
-
if (!query) {
|
|
628
|
-
query = space.db.query(Filter.ids(objectId));
|
|
629
|
-
}
|
|
630
|
-
|
|
631
|
-
const object = get(rxFromQuery(query)).at(0);
|
|
632
|
-
if (!object) {
|
|
633
|
-
return null;
|
|
634
|
-
}
|
|
635
|
-
|
|
636
|
-
return createObjectNode({ object, space, resolve, disposition: 'hidden' });
|
|
564
|
+
);
|
|
637
565
|
});
|
|
638
566
|
},
|
|
639
567
|
}),
|
|
640
568
|
|
|
641
569
|
// Create collection actions and action groups.
|
|
642
570
|
createExtension({
|
|
643
|
-
id: `${
|
|
571
|
+
id: `${meta.id}/object-actions`,
|
|
644
572
|
actions: (node) => {
|
|
645
|
-
let query: QueryResult<
|
|
646
|
-
return
|
|
647
|
-
|
|
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(
|
|
648
582
|
get(node),
|
|
649
583
|
Option.flatMap((node) => {
|
|
650
584
|
const space = getSpace(node.data);
|
|
651
|
-
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();
|
|
652
588
|
}),
|
|
653
589
|
Option.flatMap(({ space, object }) => {
|
|
654
|
-
const isSchema = Obj.instanceOf(
|
|
590
|
+
const isSchema = Obj.instanceOf(Type.PersistentType, object);
|
|
655
591
|
if (!query && isSchema) {
|
|
656
|
-
// TODO(wittjosiah):
|
|
657
|
-
|
|
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>;
|
|
658
595
|
}
|
|
659
596
|
|
|
660
597
|
let deletable =
|
|
661
598
|
!isSchema &&
|
|
662
|
-
// Don't allow
|
|
663
|
-
!(
|
|
664
|
-
Obj.instanceOf(DataType.QueryCollection, object) &&
|
|
665
|
-
object.query.typename === DataType.StoredSchema.typename
|
|
666
|
-
);
|
|
599
|
+
// Don't allow system collections to be deleted.
|
|
600
|
+
!Obj.instanceOf(Collection.Managed, object);
|
|
667
601
|
if (isSchema && query) {
|
|
668
|
-
const
|
|
602
|
+
const objects = get(atomFromQuery(query));
|
|
669
603
|
const filteredViews = get(
|
|
670
|
-
|
|
604
|
+
atomFromSignal(() =>
|
|
605
|
+
objects.filter(
|
|
606
|
+
(viewObject) =>
|
|
607
|
+
getTypenameFromQuery((viewObject as any).view.target?.query.ast) === object.typename,
|
|
608
|
+
),
|
|
609
|
+
),
|
|
671
610
|
);
|
|
672
611
|
deletable = filteredViews.length === 0;
|
|
673
612
|
}
|
|
@@ -675,7 +614,6 @@ export default (context: PluginContext) => {
|
|
|
675
614
|
const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
|
|
676
615
|
const [appGraph] = get(context.capabilities(Capabilities.AppGraph));
|
|
677
616
|
const [state] = get(context.capabilities(SpaceCapabilities.State));
|
|
678
|
-
const objectForms = get(context.capabilities(SpaceCapabilities.ObjectForm));
|
|
679
617
|
|
|
680
618
|
if (!dispatcher || !appGraph || !state) {
|
|
681
619
|
return Option.none();
|
|
@@ -684,34 +622,34 @@ export default (context: PluginContext) => {
|
|
|
684
622
|
object,
|
|
685
623
|
graph: appGraph.graph,
|
|
686
624
|
dispatch: dispatcher.dispatchPromise,
|
|
687
|
-
|
|
625
|
+
resolve: resolve(get),
|
|
688
626
|
deletable,
|
|
689
|
-
navigable: get(
|
|
627
|
+
navigable: get(atomFromSignal(() => state.navigableCollections)),
|
|
690
628
|
});
|
|
691
629
|
}
|
|
692
630
|
}),
|
|
693
631
|
Option.map((params) => constructObjectActions(params)),
|
|
694
632
|
Option.getOrElse(() => []),
|
|
695
|
-
)
|
|
696
|
-
);
|
|
633
|
+
);
|
|
634
|
+
});
|
|
697
635
|
},
|
|
698
636
|
}),
|
|
699
637
|
|
|
700
638
|
// View selected objects.
|
|
701
639
|
createExtension({
|
|
702
|
-
id: `${
|
|
640
|
+
id: `${meta.id}/selected-objects`,
|
|
703
641
|
connector: (node) =>
|
|
704
|
-
|
|
705
|
-
pipe(
|
|
642
|
+
Atom.make((get) =>
|
|
643
|
+
Function.pipe(
|
|
706
644
|
get(node),
|
|
707
|
-
Option.flatMap((node) => (Obj.instanceOf(
|
|
645
|
+
Option.flatMap((node) => (Obj.instanceOf(View.View, node.data) ? Option.some(node) : Option.none())),
|
|
708
646
|
Option.map((node) => [
|
|
709
647
|
{
|
|
710
648
|
id: [node.id, 'selected-objects'].join(ATTENDABLE_PATH_SEPARATOR),
|
|
711
649
|
type: PLANK_COMPANION_TYPE,
|
|
712
650
|
data: 'selected-objects',
|
|
713
651
|
properties: {
|
|
714
|
-
label: ['companion selected objects label', { ns:
|
|
652
|
+
label: ['companion selected objects label', { ns: meta.id }],
|
|
715
653
|
icon: 'ph--tree-view--regular',
|
|
716
654
|
disposition: 'hidden',
|
|
717
655
|
},
|
|
@@ -724,10 +662,10 @@ export default (context: PluginContext) => {
|
|
|
724
662
|
|
|
725
663
|
// Object settings plank companion.
|
|
726
664
|
createExtension({
|
|
727
|
-
id: `${
|
|
665
|
+
id: `${meta.id}/settings`,
|
|
728
666
|
connector: (node) =>
|
|
729
|
-
|
|
730
|
-
pipe(
|
|
667
|
+
Atom.make((get) =>
|
|
668
|
+
Function.pipe(
|
|
731
669
|
get(node),
|
|
732
670
|
Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node) : Option.none())),
|
|
733
671
|
Option.map((node) => [
|
|
@@ -736,7 +674,7 @@ export default (context: PluginContext) => {
|
|
|
736
674
|
type: PLANK_COMPANION_TYPE,
|
|
737
675
|
data: 'settings',
|
|
738
676
|
properties: {
|
|
739
|
-
label: ['object settings label', { ns:
|
|
677
|
+
label: ['object settings label', { ns: meta.id }],
|
|
740
678
|
icon: 'ph--sliders--regular',
|
|
741
679
|
disposition: 'hidden',
|
|
742
680
|
position: 'fallback',
|