@dxos/plugin-space 0.8.4-main.5ad4a44 → 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-AX7KKXWP.mjs → CollectionArticle-WTHWY4YS.mjs} +8 -8
- 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-Y2LBZX2G.mjs → app-graph-builder-HABMCWAI.mjs} +170 -173
- package/dist/lib/browser/app-graph-builder-HABMCWAI.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-425OVRTW.mjs → app-graph-serializer-G3VFEGTN.mjs} +10 -10
- 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-PUF3B7XO.mjs → chunk-C6DAPIFF.mjs} +4 -4
- package/dist/lib/browser/chunk-C6DAPIFF.mjs.map +7 -0
- package/dist/lib/browser/{chunk-X6COEDOD.mjs → chunk-GJOZILGC.mjs} +182 -118
- package/dist/lib/browser/chunk-GJOZILGC.mjs.map +7 -0
- package/dist/lib/browser/{chunk-6KVKMOGQ.mjs → chunk-KCZ527AM.mjs} +607 -456
- package/dist/lib/browser/chunk-KCZ527AM.mjs.map +7 -0
- package/dist/lib/browser/{chunk-CVZAZRW4.mjs → chunk-P25R3AOK.mjs} +34 -4
- package/dist/lib/browser/chunk-P25R3AOK.mjs.map +7 -0
- package/dist/lib/browser/{chunk-YZJWWMNB.mjs → chunk-POFUXISV.mjs} +68 -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-EIXZABXD.mjs → chunk-WJXU4GKV.mjs} +2 -2
- package/dist/lib/browser/{identity-created-PW2BA46S.mjs → identity-created-NAXTPQXE.mjs} +3 -3
- package/dist/lib/browser/identity-created-NAXTPQXE.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +83 -110
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-2TBYHOBA.mjs → intent-resolver-RZEWNJ2K.mjs} +90 -82
- 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-KMJXJ5VX.mjs → react-root-JCRD74GI.mjs} +9 -8
- package/dist/lib/browser/react-root-JCRD74GI.mjs.map +7 -0
- package/dist/lib/browser/{react-surface-YAJUAMER.mjs → react-surface-VOETEAG3.mjs} +64 -84
- 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-UYYJ225A.mjs → settings-TRLI52I5.mjs} +3 -3
- package/dist/lib/browser/{spaces-ready-YNZPWXA3.mjs → spaces-ready-OHGCWZHQ.mjs} +19 -12
- package/dist/lib/browser/spaces-ready-OHGCWZHQ.mjs.map +7 -0
- package/dist/lib/browser/{state-BPU73TYO.mjs → state-C7N6EDDZ.mjs} +3 -3
- package/dist/lib/browser/types/index.mjs +10 -4
- package/dist/lib/node-esm/{CollectionMain-EU57SRYK.mjs → CollectionArticle-KHXYT3SH.mjs} +8 -8
- 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-DMNLDT7E.mjs → app-graph-builder-T6VJKIOA.mjs} +170 -173
- package/dist/lib/node-esm/app-graph-builder-T6VJKIOA.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-ZEDSY77N.mjs → app-graph-serializer-2NLWWFUB.mjs} +10 -10
- package/dist/lib/node-esm/app-graph-serializer-2NLWWFUB.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-FLRC6XWU.mjs → chunk-7EV4SN47.mjs} +33 -4
- package/dist/lib/node-esm/chunk-7EV4SN47.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-7UIEPBQJ.mjs → chunk-AX3UGL5D.mjs} +68 -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-SVFKU7EW.mjs → chunk-H4JILUJK.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-ZFCCFELA.mjs → chunk-I6FZP42D.mjs} +182 -118
- package/dist/lib/node-esm/chunk-I6FZP42D.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-L26ZIGHA.mjs → chunk-JAMGJUFU.mjs} +607 -456
- package/dist/lib/node-esm/chunk-JAMGJUFU.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-36TAYXV7.mjs → chunk-WWGV5FJM.mjs} +4 -4
- 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-MWTLGQRU.mjs → identity-created-OXLKCJE3.mjs} +3 -3
- package/dist/lib/node-esm/identity-created-OXLKCJE3.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +83 -110
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-YOG27WOG.mjs → intent-resolver-4PHJWDXW.mjs} +90 -82
- 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-27QMJZD2.mjs → react-root-O5I5CDJ7.mjs} +9 -8
- package/dist/lib/node-esm/react-root-O5I5CDJ7.mjs.map +7 -0
- package/dist/lib/node-esm/{react-surface-RC73GAN5.mjs → react-surface-J3XDMU2D.mjs} +64 -84
- 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-Q736OQRP.mjs → settings-MNQTKHL7.mjs} +3 -3
- package/dist/lib/node-esm/{spaces-ready-XZQD7Q65.mjs → spaces-ready-ZPU24DA2.mjs} +19 -12
- package/dist/lib/node-esm/spaces-ready-ZPU24DA2.mjs.map +7 -0
- package/dist/lib/node-esm/{state-BY75TM32.mjs → state-45TXZQJ6.mjs} +3 -3
- package/dist/lib/node-esm/types/index.mjs +10 -4
- 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 +12 -6
- 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.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +218 -214
- 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.map +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/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 -215
- 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} +218 -214
- 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 -214
- 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 -215
- 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/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.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.map +1 -1
- package/dist/types/src/translations.d.ts +218 -214
- 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 +33 -74
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +19 -33
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +57 -48
- package/src/SpacePlugin.ts +64 -89
- package/src/capabilities/app-graph-builder.ts +165 -233
- package/src/capabilities/app-graph-serializer.ts +5 -5
- package/src/capabilities/capabilities.ts +18 -8
- package/src/capabilities/identity-created.ts +2 -2
- package/src/capabilities/index.ts +1 -1
- package/src/capabilities/intent-resolver.ts +66 -66
- package/src/capabilities/react-root.tsx +2 -1
- package/src/capabilities/react-surface.tsx +69 -119
- package/src/capabilities/repair.ts +57 -0
- package/src/capabilities/spaces-ready.ts +14 -5
- package/src/components/AwaitingObject.tsx +11 -13
- package/src/components/{CollectionMain.tsx → CollectionArticle.tsx} +5 -4
- package/src/components/CollectionSection.tsx +6 -4
- package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +6 -6
- package/src/components/CreateDialog/CreateObjectDialog.tsx +57 -40
- package/src/components/CreateDialog/CreateObjectPanel.tsx +33 -26
- package/src/components/CreateDialog/CreateSpaceDialog.tsx +25 -7
- package/src/components/{JoinDialog.tsx → JoinDialog/JoinDialog.tsx} +21 -5
- package/src/components/JoinDialog/index.ts +5 -0
- package/src/components/{MembersContainer.stories.tsx → MembersContainer/MembersContainer.stories.tsx} +1 -1
- package/src/components/{MembersContainer.tsx → MembersContainer/MembersContainer.tsx} +11 -9
- package/src/components/MembersContainer/index.ts +5 -0
- package/src/components/{ObjectDetailsPanel.tsx → ObjectDetailsPanel/ObjectDetailsPanel.tsx} +8 -36
- package/src/components/ObjectDetailsPanel/ObjectForm.tsx +72 -0
- package/src/components/ObjectDetailsPanel/index.ts +7 -0
- package/src/components/{PopoverRenameObject.tsx → ObjectRenamePopover/ObjectRenamePopover.tsx} +5 -5
- package/src/components/ObjectRenamePopover/index.ts +5 -0
- package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +4 -5
- package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
- package/src/components/ObjectSettings/BaseObjectSettings.tsx +90 -26
- package/src/components/ObjectSettings/ForeignKeys.tsx +6 -6
- package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +1 -1
- 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 +21 -24
- package/src/components/SpacePluginSettings.tsx +8 -2
- package/src/components/{SpacePresence.stories.tsx → SpacePresence/SpacePresence.stories.tsx} +1 -1
- package/src/components/{SpacePresence.tsx → SpacePresence/SpacePresence.tsx} +14 -9
- package/src/components/SpacePresence/index.ts +5 -0
- package/src/components/{PopoverRenameSpace.tsx → SpaceRenamePopover/SpaceRenamePopover.tsx} +6 -5
- package/src/components/SpaceRenamePopover/index.ts +5 -0
- package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +52 -13
- package/src/components/SyncStatus/InlineSyncStatus.tsx +5 -5
- package/src/components/SyncStatus/SyncStatus.stories.tsx +3 -2
- package/src/components/SyncStatus/SyncStatus.tsx +105 -9
- package/src/components/ViewEditor.tsx +57 -18
- package/src/components/index.ts +7 -8
- 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 +7 -2
- package/src/hooks/useTypeOptions.ts +27 -0
- package/src/index.ts +1 -0
- package/src/meta.ts +5 -0
- package/src/translations.ts +67 -58
- package/src/types/form.ts +75 -0
- package/src/types/index.ts +1 -0
- package/src/types/types.ts +39 -44
- package/src/util.tsx +187 -121
- package/dist/lib/browser/CollectionMain-AX7KKXWP.mjs.map +0 -7
- package/dist/lib/browser/ObjectDetailsPanel-SJ4XUXXX.mjs +0 -90
- package/dist/lib/browser/ObjectDetailsPanel-SJ4XUXXX.mjs.map +0 -7
- package/dist/lib/browser/RecordMain-FHPCS6GM.mjs +0 -68
- package/dist/lib/browser/RecordMain-FHPCS6GM.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-Y2LBZX2G.mjs.map +0 -7
- package/dist/lib/browser/app-graph-serializer-425OVRTW.mjs.map +0 -7
- package/dist/lib/browser/chunk-6KVKMOGQ.mjs.map +0 -7
- package/dist/lib/browser/chunk-CVZAZRW4.mjs.map +0 -7
- package/dist/lib/browser/chunk-IRKDREHY.mjs +0 -11
- package/dist/lib/browser/chunk-IRKDREHY.mjs.map +0 -7
- package/dist/lib/browser/chunk-OYHC63NL.mjs +0 -344
- package/dist/lib/browser/chunk-OYHC63NL.mjs.map +0 -7
- package/dist/lib/browser/chunk-PUF3B7XO.mjs.map +0 -7
- package/dist/lib/browser/chunk-X6COEDOD.mjs.map +0 -7
- package/dist/lib/browser/chunk-YZJWWMNB.mjs.map +0 -7
- package/dist/lib/browser/identity-created-PW2BA46S.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-2TBYHOBA.mjs.map +0 -7
- package/dist/lib/browser/react-root-KMJXJ5VX.mjs.map +0 -7
- package/dist/lib/browser/react-surface-YAJUAMER.mjs.map +0 -7
- package/dist/lib/browser/schema-defs-2OCPV7JF.mjs +0 -26
- package/dist/lib/browser/schema-defs-2OCPV7JF.mjs.map +0 -7
- package/dist/lib/browser/spaces-ready-YNZPWXA3.mjs.map +0 -7
- package/dist/lib/node-esm/CollectionMain-EU57SRYK.mjs.map +0 -7
- package/dist/lib/node-esm/ObjectDetailsPanel-P7D727OV.mjs +0 -91
- package/dist/lib/node-esm/ObjectDetailsPanel-P7D727OV.mjs.map +0 -7
- package/dist/lib/node-esm/RecordMain-V73AEB6N.mjs +0 -70
- package/dist/lib/node-esm/RecordMain-V73AEB6N.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-DMNLDT7E.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-serializer-ZEDSY77N.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-36TAYXV7.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-7UIEPBQJ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ADEZJQE3.mjs +0 -345
- package/dist/lib/node-esm/chunk-ADEZJQE3.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-FLRC6XWU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-L26ZIGHA.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-MWNATOXL.mjs +0 -13
- package/dist/lib/node-esm/chunk-MWNATOXL.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ZFCCFELA.mjs.map +0 -7
- package/dist/lib/node-esm/identity-created-MWTLGQRU.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-YOG27WOG.mjs.map +0 -7
- package/dist/lib/node-esm/react-root-27QMJZD2.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-RC73GAN5.mjs.map +0 -7
- package/dist/lib/node-esm/schema-defs-X2Z7F2EV.mjs +0 -27
- package/dist/lib/node-esm/schema-defs-X2Z7F2EV.mjs.map +0 -7
- package/dist/lib/node-esm/spaces-ready-XZQD7Q65.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/PersistenceStatus.tsx +0 -83
- package/src/components/RecordMain.tsx +0 -43
- /package/dist/lib/browser/{chunk-EIXZABXD.mjs.map → chunk-WJXU4GKV.mjs.map} +0 -0
- /package/dist/lib/browser/{settings-UYYJ225A.mjs.map → settings-TRLI52I5.mjs.map} +0 -0
- /package/dist/lib/browser/{state-BPU73TYO.mjs.map → state-C7N6EDDZ.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-SVFKU7EW.mjs.map → chunk-H4JILUJK.mjs.map} +0 -0
- /package/dist/lib/node-esm/{settings-Q736OQRP.mjs.map → settings-MNQTKHL7.mjs.map} +0 -0
- /package/dist/lib/node-esm/{state-BY75TM32.mjs.map → state-45TXZQJ6.mjs.map} +0 -0
- /package/dist/types/src/components/{JoinDialog.d.ts → JoinDialog/JoinDialog.d.ts} +0 -0
- /package/dist/types/src/components/{MembersContainer.d.ts → MembersContainer/MembersContainer.d.ts} +0 -0
|
@@ -2,20 +2,20 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { Atom } from '@effect-atom/atom-react';
|
|
6
6
|
import * as Array from 'effect/Array';
|
|
7
7
|
import * as Function from 'effect/Function';
|
|
8
8
|
import * as Option from 'effect/Option';
|
|
9
9
|
import * as Schema from 'effect/Schema';
|
|
10
10
|
|
|
11
11
|
import { Capabilities, type PluginContext, contributes, createIntent } from '@dxos/app-framework';
|
|
12
|
-
import { type
|
|
13
|
-
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';
|
|
14
14
|
import { log } from '@dxos/log';
|
|
15
15
|
import { ClientCapabilities } from '@dxos/plugin-client';
|
|
16
16
|
import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';
|
|
17
|
-
import { ROOT_ID,
|
|
18
|
-
import {
|
|
17
|
+
import { ROOT_ID, atomFromObservable, atomFromSignal, createExtension } from '@dxos/plugin-graph';
|
|
18
|
+
import { Collection, View, ViewAnnotation, getTypenameFromQuery } from '@dxos/schema';
|
|
19
19
|
import { isNonNullable } from '@dxos/util';
|
|
20
20
|
|
|
21
21
|
import { getActiveSpace } from '../hooks';
|
|
@@ -24,20 +24,20 @@ import { SPACE_TYPE, SpaceAction, type SpaceSettingsProps } from '../types';
|
|
|
24
24
|
import {
|
|
25
25
|
SHARED,
|
|
26
26
|
SPACES,
|
|
27
|
+
atomFromQuery,
|
|
27
28
|
constructObjectActions,
|
|
28
29
|
constructSpaceActions,
|
|
29
30
|
constructSpaceNode,
|
|
30
31
|
createObjectNode,
|
|
31
32
|
createStaticSchemaActions,
|
|
32
33
|
createStaticSchemaNode,
|
|
33
|
-
rxFromQuery,
|
|
34
34
|
} from '../util';
|
|
35
35
|
|
|
36
36
|
import { SpaceCapabilities } from './capabilities';
|
|
37
37
|
|
|
38
38
|
export default (context: PluginContext) => {
|
|
39
|
-
// TODO(wittjosiah):
|
|
40
|
-
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) =>
|
|
41
41
|
context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};
|
|
42
42
|
|
|
43
43
|
const spacesNode = {
|
|
@@ -83,7 +83,7 @@ export default (context: PluginContext) => {
|
|
|
83
83
|
id: `${meta.id}/primary-actions`,
|
|
84
84
|
position: 'hoist',
|
|
85
85
|
actions: (node) =>
|
|
86
|
-
|
|
86
|
+
Atom.make((get) =>
|
|
87
87
|
Function.pipe(
|
|
88
88
|
get(node),
|
|
89
89
|
Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
|
|
@@ -160,7 +160,7 @@ export default (context: PluginContext) => {
|
|
|
160
160
|
id: `${meta.id}/root`,
|
|
161
161
|
position: 'hoist',
|
|
162
162
|
connector: (node) =>
|
|
163
|
-
|
|
163
|
+
Atom.make((get) =>
|
|
164
164
|
Function.pipe(
|
|
165
165
|
get(node),
|
|
166
166
|
Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
|
|
@@ -168,26 +168,26 @@ export default (context: PluginContext) => {
|
|
|
168
168
|
Option.getOrElse(() => []),
|
|
169
169
|
),
|
|
170
170
|
),
|
|
171
|
-
// resolver: ({ id }) => (id === SPACES ? spacesNode : undefined),
|
|
172
171
|
}),
|
|
173
172
|
|
|
174
173
|
// Create space nodes.
|
|
175
174
|
createExtension({
|
|
176
175
|
id: SPACES,
|
|
177
176
|
connector: (node) => {
|
|
178
|
-
|
|
179
|
-
|
|
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
180
|
Function.pipe(
|
|
181
181
|
get(node),
|
|
182
182
|
Option.flatMap((node) => (node.id === SPACES ? Option.some(node) : Option.none())),
|
|
183
183
|
Option.map(() => {
|
|
184
184
|
const state = context.getCapability(SpaceCapabilities.State);
|
|
185
185
|
const client = context.getCapability(ClientCapabilities.Client);
|
|
186
|
-
const
|
|
187
|
-
const
|
|
186
|
+
const spacesAtom = atomFromObservable(client.spaces);
|
|
187
|
+
const isReadyAtom = atomFromObservable(client.spaces.isReady);
|
|
188
188
|
|
|
189
|
-
const spaces = get(
|
|
190
|
-
const isReady = get(
|
|
189
|
+
const spaces = get(spacesAtom);
|
|
190
|
+
const isReady = get(isReadyAtom);
|
|
191
191
|
|
|
192
192
|
if (!spaces || !isReady) {
|
|
193
193
|
return [];
|
|
@@ -202,9 +202,9 @@ export default (context: PluginContext) => {
|
|
|
202
202
|
if (!query) {
|
|
203
203
|
query = client.spaces.default.db.query(Filter.type(Type.Expando, { key: SHARED }));
|
|
204
204
|
}
|
|
205
|
-
const [spacesOrder] = get(
|
|
205
|
+
const [spacesOrder] = get(atomFromQuery(query));
|
|
206
206
|
return get(
|
|
207
|
-
|
|
207
|
+
atomFromSignal(() => {
|
|
208
208
|
const order: string[] = spacesOrder?.order ?? [];
|
|
209
209
|
const orderMap = new Map(order.map((id, index) => [id, index]));
|
|
210
210
|
return [
|
|
@@ -222,7 +222,7 @@ export default (context: PluginContext) => {
|
|
|
222
222
|
navigable: state.navigableCollections,
|
|
223
223
|
personal: space === client.spaces.default,
|
|
224
224
|
namesCache: state.spaceNames,
|
|
225
|
-
resolve,
|
|
225
|
+
resolve: resolve(get),
|
|
226
226
|
}),
|
|
227
227
|
);
|
|
228
228
|
}),
|
|
@@ -235,53 +235,13 @@ export default (context: PluginContext) => {
|
|
|
235
235
|
),
|
|
236
236
|
);
|
|
237
237
|
},
|
|
238
|
-
// resolver: ({ id }) => {
|
|
239
|
-
// if (id.length !== SPACE_ID_LENGTH) {
|
|
240
|
-
// return;
|
|
241
|
-
// }
|
|
242
|
-
|
|
243
|
-
// const client = context.requestCapability(ClientCapabilities.Client);
|
|
244
|
-
// const spaces = toSignal(
|
|
245
|
-
// (onChange) => client.spaces.subscribe(() => onChange()).unsubscribe,
|
|
246
|
-
// () => client.spaces.get(),
|
|
247
|
-
// );
|
|
248
|
-
|
|
249
|
-
// const isReady = toSignal(
|
|
250
|
-
// (onChange) => client.spaces.isReady.subscribe(() => onChange()).unsubscribe,
|
|
251
|
-
// () => client.spaces.isReady.get(),
|
|
252
|
-
// );
|
|
253
|
-
|
|
254
|
-
// if (!spaces || !isReady) {
|
|
255
|
-
// return;
|
|
256
|
-
// }
|
|
257
|
-
|
|
258
|
-
// const space = spaces.find((space) => space.id === id);
|
|
259
|
-
// if (!space) {
|
|
260
|
-
// return;
|
|
261
|
-
// }
|
|
262
|
-
|
|
263
|
-
// if (space.state.get() === SpaceState.SPACE_INACTIVE) {
|
|
264
|
-
// return false;
|
|
265
|
-
// } else if (space.state.get() !== SpaceState.SPACE_READY) {
|
|
266
|
-
// return undefined;
|
|
267
|
-
// } else {
|
|
268
|
-
// const state = context.requestCapability(SpaceCapabilities.State);
|
|
269
|
-
// return constructSpaceNode({
|
|
270
|
-
// space,
|
|
271
|
-
// navigable: state.navigableCollections,
|
|
272
|
-
// personal: space === client.spaces.default,
|
|
273
|
-
// namesCache: state.spaceNames,
|
|
274
|
-
// resolve,
|
|
275
|
-
// });
|
|
276
|
-
// }
|
|
277
|
-
// },
|
|
278
238
|
}),
|
|
279
239
|
|
|
280
240
|
// Create space actions.
|
|
281
241
|
createExtension({
|
|
282
242
|
id: `${meta.id}/actions`,
|
|
283
243
|
actions: (node) =>
|
|
284
|
-
|
|
244
|
+
Atom.make((get) =>
|
|
285
245
|
Function.pipe(
|
|
286
246
|
get(node),
|
|
287
247
|
Option.flatMap((node) =>
|
|
@@ -313,7 +273,7 @@ export default (context: PluginContext) => {
|
|
|
313
273
|
createExtension({
|
|
314
274
|
id: `${meta.id}/root-collection`,
|
|
315
275
|
connector: (node) =>
|
|
316
|
-
|
|
276
|
+
Atom.make((get) =>
|
|
317
277
|
Function.pipe(
|
|
318
278
|
get(node),
|
|
319
279
|
Option.flatMap((node) =>
|
|
@@ -321,14 +281,14 @@ export default (context: PluginContext) => {
|
|
|
321
281
|
),
|
|
322
282
|
Option.map((space) => {
|
|
323
283
|
const state = context.getCapability(SpaceCapabilities.State);
|
|
324
|
-
const spaceState = get(
|
|
284
|
+
const spaceState = get(atomFromObservable(space.state));
|
|
325
285
|
if (spaceState !== SpaceState.SPACE_READY) {
|
|
326
286
|
return [];
|
|
327
287
|
}
|
|
328
288
|
|
|
329
289
|
const collection = get(
|
|
330
|
-
|
|
331
|
-
() => space.properties[
|
|
290
|
+
atomFromSignal(
|
|
291
|
+
() => space.properties[Collection.Collection.typename]?.target as Collection.Collection | undefined,
|
|
332
292
|
),
|
|
333
293
|
);
|
|
334
294
|
if (!collection) {
|
|
@@ -336,7 +296,7 @@ export default (context: PluginContext) => {
|
|
|
336
296
|
}
|
|
337
297
|
|
|
338
298
|
return get(
|
|
339
|
-
|
|
299
|
+
atomFromSignal(() =>
|
|
340
300
|
Function.pipe(
|
|
341
301
|
collection.objects,
|
|
342
302
|
Array.map((object) => object.target),
|
|
@@ -345,7 +305,7 @@ export default (context: PluginContext) => {
|
|
|
345
305
|
createObjectNode({
|
|
346
306
|
space,
|
|
347
307
|
object,
|
|
348
|
-
resolve,
|
|
308
|
+
resolve: resolve(get),
|
|
349
309
|
navigable: state.navigableCollections,
|
|
350
310
|
}),
|
|
351
311
|
),
|
|
@@ -359,29 +319,35 @@ export default (context: PluginContext) => {
|
|
|
359
319
|
),
|
|
360
320
|
}),
|
|
361
321
|
|
|
362
|
-
// Create nodes for objects in a collection or by its
|
|
322
|
+
// Create nodes for objects in a collection or by its DXN.
|
|
363
323
|
createExtension({
|
|
364
324
|
id: `${meta.id}/objects`,
|
|
365
325
|
connector: (node) =>
|
|
366
|
-
|
|
326
|
+
Atom.make((get) =>
|
|
367
327
|
Function.pipe(
|
|
368
328
|
get(node),
|
|
369
329
|
Option.flatMap((node) =>
|
|
370
|
-
Obj.instanceOf(
|
|
330
|
+
Obj.instanceOf(Collection.Collection, node.data) ? Option.some(node.data) : Option.none(),
|
|
371
331
|
),
|
|
372
332
|
Option.map((collection) => {
|
|
373
333
|
const state = context.getCapability(SpaceCapabilities.State);
|
|
374
334
|
const space = getSpace(collection);
|
|
375
335
|
|
|
376
336
|
return get(
|
|
377
|
-
|
|
337
|
+
atomFromSignal(() =>
|
|
378
338
|
Function.pipe(
|
|
379
339
|
collection.objects,
|
|
380
340
|
Array.map((object) => object.target),
|
|
381
341
|
Array.filter(isNonNullable),
|
|
382
342
|
Array.map(
|
|
383
343
|
(object) =>
|
|
384
|
-
space &&
|
|
344
|
+
space &&
|
|
345
|
+
createObjectNode({
|
|
346
|
+
object,
|
|
347
|
+
space,
|
|
348
|
+
resolve: resolve(get),
|
|
349
|
+
navigable: state.navigableCollections,
|
|
350
|
+
}),
|
|
385
351
|
),
|
|
386
352
|
Array.filter(isNonNullable),
|
|
387
353
|
),
|
|
@@ -391,95 +357,68 @@ export default (context: PluginContext) => {
|
|
|
391
357
|
Option.getOrElse(() => []),
|
|
392
358
|
),
|
|
393
359
|
),
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
// if (!object) {
|
|
421
|
-
// return;
|
|
422
|
-
// }
|
|
423
|
-
|
|
424
|
-
// if (isDeleted(object)) {
|
|
425
|
-
// return false;
|
|
426
|
-
// } else {
|
|
427
|
-
// const state = context.requestCapability(SpaceCapabilities.State);
|
|
428
|
-
// return createObjectNode({ object, space, resolve, navigable: state.navigableCollections });
|
|
429
|
-
// }
|
|
430
|
-
// },
|
|
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
|
+
},
|
|
431
386
|
}),
|
|
432
387
|
|
|
433
|
-
// Create nodes for
|
|
388
|
+
// Create object nodes for schema-based system collections.
|
|
434
389
|
createExtension({
|
|
435
|
-
id: `${meta.id}/
|
|
390
|
+
id: `${meta.id}/system-collections`,
|
|
436
391
|
connector: (node) => {
|
|
437
|
-
|
|
438
|
-
|
|
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) =>
|
|
439
396
|
Function.pipe(
|
|
440
397
|
get(node),
|
|
441
398
|
Option.flatMap((node) =>
|
|
442
|
-
Obj.instanceOf(
|
|
399
|
+
Obj.instanceOf(Collection.Managed, node.data) ? Option.some(node.data) : Option.none(),
|
|
443
400
|
),
|
|
444
401
|
Option.flatMap((collection) => {
|
|
445
402
|
const space = getSpace(collection);
|
|
446
|
-
const
|
|
447
|
-
|
|
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();
|
|
448
407
|
}),
|
|
449
|
-
Option.map(({
|
|
450
|
-
const state = context.getCapability(SpaceCapabilities.State);
|
|
408
|
+
Option.map(({ space, schema }) => {
|
|
451
409
|
if (!query) {
|
|
452
|
-
query = space.db.query(
|
|
453
|
-
Query.without(
|
|
454
|
-
Query.select(Filter.typename(typename)),
|
|
455
|
-
// TODO(wittjosiah): This query is broader than it should be.
|
|
456
|
-
// It will return all objects in the collection, not just the ones of the given type.
|
|
457
|
-
// However this works fine for now because this query is only used for exclusions.
|
|
458
|
-
Query.select(Filter.typename(typename))
|
|
459
|
-
.referencedBy(DataType.Collection, 'objects')
|
|
460
|
-
.reference('objects'),
|
|
461
|
-
),
|
|
462
|
-
);
|
|
410
|
+
query = space.db.query(Filter.type(schema));
|
|
463
411
|
}
|
|
464
|
-
return (
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
resolve,
|
|
475
|
-
droppable: false, // Cannot rearrange query collections.
|
|
476
|
-
navigable: state.navigableCollections,
|
|
477
|
-
}),
|
|
478
|
-
),
|
|
479
|
-
),
|
|
480
|
-
)
|
|
481
|
-
.filter(isNonNullable)
|
|
482
|
-
);
|
|
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);
|
|
483
422
|
}),
|
|
484
423
|
Option.getOrElse(() => []),
|
|
485
424
|
),
|
|
@@ -487,17 +426,16 @@ export default (context: PluginContext) => {
|
|
|
487
426
|
},
|
|
488
427
|
}),
|
|
489
428
|
|
|
490
|
-
//
|
|
429
|
+
// Create branch nodes for static schema record types.
|
|
491
430
|
createExtension({
|
|
492
431
|
id: `${meta.id}/static-schemas`,
|
|
493
432
|
connector: (node) => {
|
|
494
433
|
const client = context.getCapability(ClientCapabilities.Client);
|
|
495
|
-
return
|
|
434
|
+
return Atom.make((get) =>
|
|
496
435
|
Function.pipe(
|
|
497
436
|
get(node),
|
|
498
437
|
Option.flatMap((node) =>
|
|
499
|
-
Obj.instanceOf(
|
|
500
|
-
getTypenameFromQuery(node.data.query) === DataType.StoredSchema.typename
|
|
438
|
+
Obj.instanceOf(Collection.Managed, node.data) && node.data.key === Type.getTypename(Type.PersistentType)
|
|
501
439
|
? Option.some(node.data)
|
|
502
440
|
: Option.none(),
|
|
503
441
|
),
|
|
@@ -506,7 +444,7 @@ export default (context: PluginContext) => {
|
|
|
506
444
|
return space?.properties.staticRecords ? Option.some(space) : Option.none();
|
|
507
445
|
}),
|
|
508
446
|
Option.map((space) => {
|
|
509
|
-
return get(
|
|
447
|
+
return get(atomFromSignal(() => (space.properties.staticRecords ?? []) as string[]))
|
|
510
448
|
.map((typename) =>
|
|
511
449
|
client.graph.schemaRegistry.schemas.find((schema) => Type.getTypename(schema) === typename),
|
|
512
450
|
)
|
|
@@ -519,13 +457,19 @@ export default (context: PluginContext) => {
|
|
|
519
457
|
},
|
|
520
458
|
}),
|
|
521
459
|
|
|
522
|
-
// Create static schema
|
|
460
|
+
// Create actions for static schema record types.
|
|
523
461
|
createExtension({
|
|
524
462
|
id: `${meta.id}/static-schema-actions`,
|
|
525
463
|
actions: (node) => {
|
|
526
|
-
let query: QueryResult<
|
|
527
|
-
return
|
|
528
|
-
|
|
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(
|
|
529
473
|
get(node),
|
|
530
474
|
Option.flatMap((node) => {
|
|
531
475
|
const space = isSpace(node.properties.space) ? node.properties.space : undefined;
|
|
@@ -533,16 +477,18 @@ export default (context: PluginContext) => {
|
|
|
533
477
|
}),
|
|
534
478
|
Option.map(({ space, schema }) => {
|
|
535
479
|
if (!query) {
|
|
536
|
-
// TODO(wittjosiah):
|
|
537
|
-
|
|
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>;
|
|
538
483
|
}
|
|
539
484
|
|
|
540
|
-
const
|
|
485
|
+
const objects = get(atomFromQuery(query));
|
|
541
486
|
const filteredViews = get(
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
487
|
+
atomFromSignal(() =>
|
|
488
|
+
objects.filter(
|
|
489
|
+
(viewObject) =>
|
|
490
|
+
getTypenameFromQuery((viewObject as any).view.target?.query.ast) ===
|
|
491
|
+
Type.getTypename(schema as Type.Obj.Any),
|
|
546
492
|
),
|
|
547
493
|
),
|
|
548
494
|
);
|
|
@@ -562,42 +508,51 @@ export default (context: PluginContext) => {
|
|
|
562
508
|
});
|
|
563
509
|
}),
|
|
564
510
|
Option.getOrElse(() => []),
|
|
565
|
-
)
|
|
566
|
-
);
|
|
511
|
+
);
|
|
512
|
+
});
|
|
567
513
|
},
|
|
568
514
|
}),
|
|
569
515
|
|
|
570
|
-
// Create nodes for
|
|
516
|
+
// Create nodes for views of record types.
|
|
571
517
|
createExtension({
|
|
572
518
|
id: `${meta.id}/schema-views`,
|
|
573
519
|
connector: (node) => {
|
|
574
|
-
let query: QueryResult<
|
|
575
|
-
return
|
|
576
|
-
|
|
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(
|
|
577
529
|
get(node),
|
|
578
530
|
Option.flatMap((node) => {
|
|
579
531
|
const space = getSpace(node.data) ?? (isSpace(node.properties.space) ? node.properties.space : undefined);
|
|
580
|
-
return space && (Obj.instanceOf(
|
|
532
|
+
return space && (Obj.instanceOf(Type.PersistentType, node.data) || Schema.isSchema(node.data))
|
|
581
533
|
? Option.some({ space, schema: node.data })
|
|
582
534
|
: Option.none();
|
|
583
535
|
}),
|
|
584
536
|
Option.map(({ space, schema }) => {
|
|
585
537
|
if (!query) {
|
|
586
|
-
// TODO(wittjosiah):
|
|
587
|
-
|
|
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>;
|
|
588
541
|
}
|
|
589
542
|
|
|
590
|
-
// TODO(wittjosiah): Remove
|
|
543
|
+
// TODO(wittjosiah): Remove casts.
|
|
591
544
|
const typename = Schema.isSchema(schema) ? Type.getTypename(schema as Type.Obj.Any) : schema.typename;
|
|
592
|
-
return get(
|
|
593
|
-
.filter((
|
|
594
|
-
|
|
545
|
+
return get(atomFromQuery(query))
|
|
546
|
+
.filter((object) =>
|
|
547
|
+
get(atomFromSignal(() => getTypenameFromQuery((object as any).view.target?.query.ast) === typename)),
|
|
548
|
+
)
|
|
549
|
+
.map((object) =>
|
|
595
550
|
get(
|
|
596
|
-
|
|
551
|
+
atomFromSignal(() =>
|
|
597
552
|
createObjectNode({
|
|
598
|
-
object
|
|
553
|
+
object,
|
|
599
554
|
space,
|
|
600
|
-
resolve,
|
|
555
|
+
resolve: resolve(get),
|
|
601
556
|
droppable: false,
|
|
602
557
|
}),
|
|
603
558
|
),
|
|
@@ -606,38 +561,7 @@ export default (context: PluginContext) => {
|
|
|
606
561
|
.filter(isNonNullable);
|
|
607
562
|
}),
|
|
608
563
|
Option.getOrElse(() => []),
|
|
609
|
-
)
|
|
610
|
-
);
|
|
611
|
-
},
|
|
612
|
-
}),
|
|
613
|
-
|
|
614
|
-
// Create record nodes.
|
|
615
|
-
createExtension({
|
|
616
|
-
id: `${meta.id}/records`,
|
|
617
|
-
resolver: (id) => {
|
|
618
|
-
let query: QueryResult<Type.Expando> | undefined;
|
|
619
|
-
return Rx.make((get) => {
|
|
620
|
-
const client = context.getCapability(ClientCapabilities.Client);
|
|
621
|
-
const { spaceId, objectId } = parseId(id);
|
|
622
|
-
if (!spaceId || !objectId) {
|
|
623
|
-
return null;
|
|
624
|
-
}
|
|
625
|
-
|
|
626
|
-
const space = client.spaces.get(spaceId);
|
|
627
|
-
if (!space) {
|
|
628
|
-
return null;
|
|
629
|
-
}
|
|
630
|
-
|
|
631
|
-
if (!query) {
|
|
632
|
-
query = space.db.query(Filter.ids(objectId));
|
|
633
|
-
}
|
|
634
|
-
|
|
635
|
-
const object = get(rxFromQuery(query)).at(0);
|
|
636
|
-
if (!object) {
|
|
637
|
-
return null;
|
|
638
|
-
}
|
|
639
|
-
|
|
640
|
-
return createObjectNode({ object, space, resolve, disposition: 'hidden' });
|
|
564
|
+
);
|
|
641
565
|
});
|
|
642
566
|
},
|
|
643
567
|
}),
|
|
@@ -646,9 +570,15 @@ export default (context: PluginContext) => {
|
|
|
646
570
|
createExtension({
|
|
647
571
|
id: `${meta.id}/object-actions`,
|
|
648
572
|
actions: (node) => {
|
|
649
|
-
let query: QueryResult<
|
|
650
|
-
return
|
|
651
|
-
|
|
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(
|
|
652
582
|
get(node),
|
|
653
583
|
Option.flatMap((node) => {
|
|
654
584
|
const space = getSpace(node.data);
|
|
@@ -657,23 +587,26 @@ export default (context: PluginContext) => {
|
|
|
657
587
|
: Option.none();
|
|
658
588
|
}),
|
|
659
589
|
Option.flatMap(({ space, object }) => {
|
|
660
|
-
const isSchema = Obj.instanceOf(
|
|
590
|
+
const isSchema = Obj.instanceOf(Type.PersistentType, object);
|
|
661
591
|
if (!query && isSchema) {
|
|
662
|
-
// TODO(wittjosiah):
|
|
663
|
-
|
|
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>;
|
|
664
595
|
}
|
|
665
596
|
|
|
666
597
|
let deletable =
|
|
667
598
|
!isSchema &&
|
|
668
|
-
// Don't allow
|
|
669
|
-
!(
|
|
670
|
-
Obj.instanceOf(DataType.QueryCollection, object) &&
|
|
671
|
-
getTypenameFromQuery(object.query) === DataType.StoredSchema.typename
|
|
672
|
-
);
|
|
599
|
+
// Don't allow system collections to be deleted.
|
|
600
|
+
!Obj.instanceOf(Collection.Managed, object);
|
|
673
601
|
if (isSchema && query) {
|
|
674
|
-
const
|
|
602
|
+
const objects = get(atomFromQuery(query));
|
|
675
603
|
const filteredViews = get(
|
|
676
|
-
|
|
604
|
+
atomFromSignal(() =>
|
|
605
|
+
objects.filter(
|
|
606
|
+
(viewObject) =>
|
|
607
|
+
getTypenameFromQuery((viewObject as any).view.target?.query.ast) === object.typename,
|
|
608
|
+
),
|
|
609
|
+
),
|
|
677
610
|
);
|
|
678
611
|
deletable = filteredViews.length === 0;
|
|
679
612
|
}
|
|
@@ -681,7 +614,6 @@ export default (context: PluginContext) => {
|
|
|
681
614
|
const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
|
|
682
615
|
const [appGraph] = get(context.capabilities(Capabilities.AppGraph));
|
|
683
616
|
const [state] = get(context.capabilities(SpaceCapabilities.State));
|
|
684
|
-
const objectForms = get(context.capabilities(SpaceCapabilities.ObjectForm));
|
|
685
617
|
|
|
686
618
|
if (!dispatcher || !appGraph || !state) {
|
|
687
619
|
return Option.none();
|
|
@@ -690,16 +622,16 @@ export default (context: PluginContext) => {
|
|
|
690
622
|
object,
|
|
691
623
|
graph: appGraph.graph,
|
|
692
624
|
dispatch: dispatcher.dispatchPromise,
|
|
693
|
-
|
|
625
|
+
resolve: resolve(get),
|
|
694
626
|
deletable,
|
|
695
|
-
navigable: get(
|
|
627
|
+
navigable: get(atomFromSignal(() => state.navigableCollections)),
|
|
696
628
|
});
|
|
697
629
|
}
|
|
698
630
|
}),
|
|
699
631
|
Option.map((params) => constructObjectActions(params)),
|
|
700
632
|
Option.getOrElse(() => []),
|
|
701
|
-
)
|
|
702
|
-
);
|
|
633
|
+
);
|
|
634
|
+
});
|
|
703
635
|
},
|
|
704
636
|
}),
|
|
705
637
|
|
|
@@ -707,10 +639,10 @@ export default (context: PluginContext) => {
|
|
|
707
639
|
createExtension({
|
|
708
640
|
id: `${meta.id}/selected-objects`,
|
|
709
641
|
connector: (node) =>
|
|
710
|
-
|
|
642
|
+
Atom.make((get) =>
|
|
711
643
|
Function.pipe(
|
|
712
644
|
get(node),
|
|
713
|
-
Option.flatMap((node) => (Obj.instanceOf(
|
|
645
|
+
Option.flatMap((node) => (Obj.instanceOf(View.View, node.data) ? Option.some(node) : Option.none())),
|
|
714
646
|
Option.map((node) => [
|
|
715
647
|
{
|
|
716
648
|
id: [node.id, 'selected-objects'].join(ATTENDABLE_PATH_SEPARATOR),
|
|
@@ -732,7 +664,7 @@ export default (context: PluginContext) => {
|
|
|
732
664
|
createExtension({
|
|
733
665
|
id: `${meta.id}/settings`,
|
|
734
666
|
connector: (node) =>
|
|
735
|
-
|
|
667
|
+
Atom.make((get) =>
|
|
736
668
|
Function.pipe(
|
|
737
669
|
get(node),
|
|
738
670
|
Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node) : Option.none())),
|