@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
package/src/util.tsx
CHANGED
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { type Instruction } from '@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item';
|
|
6
|
+
import { Atom } from '@effect-atom/atom-react';
|
|
7
|
+
import * as Function from 'effect/Function';
|
|
8
|
+
import type * as Schema from 'effect/Schema';
|
|
7
9
|
|
|
8
10
|
import { LayoutAction, type PromiseIntentDispatcher, chain, createIntent } from '@dxos/app-framework';
|
|
9
|
-
import { Obj, Ref, Type } from '@dxos/echo';
|
|
10
|
-
import {
|
|
11
|
+
import { type Database, type Entity, Filter, Obj, Query, Ref, Type } from '@dxos/echo';
|
|
12
|
+
import { EXPANDO_TYPENAME } from '@dxos/echo/internal';
|
|
11
13
|
import { invariant } from '@dxos/invariant';
|
|
12
14
|
import { Migrations } from '@dxos/migrations';
|
|
13
15
|
import {
|
|
@@ -20,24 +22,24 @@ import {
|
|
|
20
22
|
type ReadableGraph,
|
|
21
23
|
isGraphNode,
|
|
22
24
|
} from '@dxos/plugin-graph';
|
|
23
|
-
import { type
|
|
25
|
+
import { type Space, SpaceState, getSpace, isSpace } from '@dxos/react-client/echo';
|
|
24
26
|
import { ATTENDABLE_PATH_SEPARATOR } from '@dxos/react-ui-attention';
|
|
25
27
|
import { type TreeData } from '@dxos/react-ui-list';
|
|
26
|
-
import {
|
|
28
|
+
import { Collection } from '@dxos/schema';
|
|
27
29
|
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
30
|
+
import { meta } from './meta';
|
|
31
|
+
import { SPACE_TYPE, SpaceAction } from './types';
|
|
30
32
|
|
|
31
|
-
export const SPACES = `${
|
|
32
|
-
export const COMPOSER_SPACE_LOCK =
|
|
33
|
+
export const SPACES = `${meta.id}-spaces`;
|
|
34
|
+
export const COMPOSER_SPACE_LOCK = `${meta.id}/lock`;
|
|
33
35
|
// TODO(wittjosiah): Remove.
|
|
34
36
|
export const SHARED = 'shared-spaces';
|
|
35
37
|
|
|
36
38
|
/**
|
|
37
|
-
* Convert a query result to an
|
|
39
|
+
* Convert a query result to an Atom value of the objects.
|
|
38
40
|
*/
|
|
39
|
-
export const
|
|
40
|
-
return
|
|
41
|
+
export const atomFromQuery = <T extends Entity.Unknown>(query: Database.QueryResult<T>): Atom.Atom<T[]> => {
|
|
42
|
+
return Atom.make((get) => {
|
|
41
43
|
const unsubscribe = query.subscribe((result) => {
|
|
42
44
|
get.setSelf(result.objects);
|
|
43
45
|
});
|
|
@@ -53,12 +55,12 @@ export const getSpaceDisplayName = (
|
|
|
53
55
|
{ personal, namesCache = {} }: { personal?: boolean; namesCache?: Record<string, string> } = {},
|
|
54
56
|
): string | [string, { ns: string }] => {
|
|
55
57
|
return space.state.get() === SpaceState.SPACE_READY && (space.properties.name?.length ?? 0) > 0
|
|
56
|
-
? space.properties.name
|
|
58
|
+
? space.properties.name!
|
|
57
59
|
: namesCache[space.id]
|
|
58
60
|
? namesCache[space.id]
|
|
59
61
|
: personal
|
|
60
|
-
? ['personal space label', { ns:
|
|
61
|
-
: ['unnamed space label', { ns:
|
|
62
|
+
? ['personal space label', { ns: meta.id }]
|
|
63
|
+
: ['unnamed space label', { ns: meta.id }];
|
|
62
64
|
};
|
|
63
65
|
|
|
64
66
|
const getCollectionGraphNodePartials = ({
|
|
@@ -66,7 +68,7 @@ const getCollectionGraphNodePartials = ({
|
|
|
66
68
|
space,
|
|
67
69
|
resolve,
|
|
68
70
|
}: {
|
|
69
|
-
collection:
|
|
71
|
+
collection: Collection.Collection;
|
|
70
72
|
space: Space;
|
|
71
73
|
resolve: (typename: string) => Record<string, any>;
|
|
72
74
|
}) => {
|
|
@@ -136,33 +138,23 @@ const getCollectionGraphNodePartials = ({
|
|
|
136
138
|
};
|
|
137
139
|
};
|
|
138
140
|
|
|
139
|
-
const
|
|
141
|
+
const getSystemCollectionNodePartials = ({
|
|
140
142
|
collection,
|
|
141
143
|
space,
|
|
142
144
|
resolve,
|
|
143
145
|
}: {
|
|
144
|
-
collection:
|
|
146
|
+
collection: Collection.Managed;
|
|
145
147
|
space: Space;
|
|
146
148
|
resolve: (typename: string) => Record<string, any>;
|
|
147
149
|
}) => {
|
|
150
|
+
const metadata = resolve(collection.key);
|
|
148
151
|
return {
|
|
149
|
-
|
|
152
|
+
label: ['typename label', { ns: collection.key, count: 2 }],
|
|
153
|
+
icon: metadata.icon,
|
|
154
|
+
iconHue: metadata.iconHue,
|
|
150
155
|
acceptPersistenceClass: new Set(['echo']),
|
|
151
156
|
acceptPersistenceKey: new Set([space.id]),
|
|
152
157
|
role: 'branch',
|
|
153
|
-
canDrop: (source: TreeData) => {
|
|
154
|
-
return (
|
|
155
|
-
isGraphNode(source.item) &&
|
|
156
|
-
Obj.isObject(source.item.data) &&
|
|
157
|
-
Obj.getTypename(source.item.data) === collection.query.typename
|
|
158
|
-
);
|
|
159
|
-
},
|
|
160
|
-
onTransferStart: (child: Node<Obj.Any>, index?: number) => {
|
|
161
|
-
// No-op. Objects are moved into query collections by being removed from their original collection.
|
|
162
|
-
},
|
|
163
|
-
onTransferEnd: (child: Node<Obj.Any>, destination: Node) => {
|
|
164
|
-
// No-op. Objects are moved out of query collections by being added to another collection.
|
|
165
|
-
},
|
|
166
158
|
};
|
|
167
159
|
};
|
|
168
160
|
|
|
@@ -173,24 +165,6 @@ const getSchemaGraphNodePartials = () => {
|
|
|
173
165
|
};
|
|
174
166
|
};
|
|
175
167
|
|
|
176
|
-
const getViewGraphNodePartials = ({
|
|
177
|
-
view,
|
|
178
|
-
resolve,
|
|
179
|
-
}: {
|
|
180
|
-
view: DataType.View;
|
|
181
|
-
resolve: (typename: string) => Record<string, any>;
|
|
182
|
-
}) => {
|
|
183
|
-
const presentation = view.presentation.target;
|
|
184
|
-
const typename = presentation ? Obj.getTypename(presentation) : undefined;
|
|
185
|
-
const metadata = typename ? resolve(typename) : {};
|
|
186
|
-
|
|
187
|
-
return {
|
|
188
|
-
label: view.name || ['object name placeholder', { ns: typename, default: 'New view' }],
|
|
189
|
-
icon: metadata.icon,
|
|
190
|
-
canDrop: () => false,
|
|
191
|
-
};
|
|
192
|
-
};
|
|
193
|
-
|
|
194
168
|
const checkPendingMigration = (space: Space) => {
|
|
195
169
|
return (
|
|
196
170
|
space.state.get() === SpaceState.SPACE_REQUIRES_MIGRATION ||
|
|
@@ -215,9 +189,9 @@ export const constructSpaceNode = ({
|
|
|
215
189
|
}) => {
|
|
216
190
|
const hasPendingMigration = checkPendingMigration(space);
|
|
217
191
|
const collection =
|
|
218
|
-
space.state.get() === SpaceState.SPACE_READY && space.properties[
|
|
192
|
+
space.state.get() === SpaceState.SPACE_READY && space.properties[Collection.Collection.typename]?.target;
|
|
219
193
|
const partials =
|
|
220
|
-
space.state.get() === SpaceState.SPACE_READY && Obj.instanceOf(
|
|
194
|
+
space.state.get() === SpaceState.SPACE_READY && Obj.instanceOf(Collection.Collection, collection)
|
|
221
195
|
? getCollectionGraphNodePartials({ collection, space, resolve })
|
|
222
196
|
: {};
|
|
223
197
|
|
|
@@ -235,6 +209,7 @@ export const constructSpaceNode = ({
|
|
|
235
209
|
space.state.get() === SpaceState.SPACE_READY && space.properties.icon
|
|
236
210
|
? `ph--${space.properties.icon}--regular`
|
|
237
211
|
: undefined,
|
|
212
|
+
iconHue: space.state.get() === SpaceState.SPACE_READY && space.properties.iconHue,
|
|
238
213
|
disabled: !navigable || space.state.get() !== SpaceState.SPACE_READY || hasPendingMigration,
|
|
239
214
|
testId: 'spacePlugin.space',
|
|
240
215
|
canDrop: (source: TreeData) => {
|
|
@@ -245,40 +220,40 @@ export const constructSpaceNode = ({
|
|
|
245
220
|
nodes: [
|
|
246
221
|
{
|
|
247
222
|
id: `settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
|
|
248
|
-
type: `${
|
|
223
|
+
type: `${meta.id}/settings`,
|
|
249
224
|
data: null,
|
|
250
225
|
properties: {
|
|
251
|
-
label: ['settings panel label', { ns:
|
|
226
|
+
label: ['settings panel label', { ns: meta.id }],
|
|
252
227
|
icon: 'ph--faders--regular',
|
|
253
228
|
disposition: 'alternate-tree',
|
|
254
229
|
},
|
|
255
230
|
nodes: [
|
|
256
231
|
{
|
|
257
232
|
id: `properties-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
|
|
258
|
-
type: `${
|
|
259
|
-
data: `${
|
|
233
|
+
type: `${meta.id}/properties`,
|
|
234
|
+
data: `${meta.id}/properties`,
|
|
260
235
|
properties: {
|
|
261
|
-
label: ['space settings properties label', { ns:
|
|
236
|
+
label: ['space settings properties label', { ns: meta.id }],
|
|
262
237
|
icon: 'ph--sliders--regular',
|
|
263
238
|
position: 'hoist',
|
|
264
239
|
},
|
|
265
240
|
},
|
|
266
241
|
{
|
|
267
242
|
id: `members-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
|
|
268
|
-
type: `${
|
|
269
|
-
data: `${
|
|
243
|
+
type: `${meta.id}/members`,
|
|
244
|
+
data: `${meta.id}/members`,
|
|
270
245
|
properties: {
|
|
271
|
-
label: ['members panel label', { ns:
|
|
246
|
+
label: ['members panel label', { ns: meta.id }],
|
|
272
247
|
icon: 'ph--users--regular',
|
|
273
248
|
position: 'hoist',
|
|
274
249
|
},
|
|
275
250
|
},
|
|
276
251
|
{
|
|
277
252
|
id: `schema-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
|
|
278
|
-
type: `${
|
|
279
|
-
data: `${
|
|
253
|
+
type: `${meta.id}/schema`,
|
|
254
|
+
data: `${meta.id}/schema`,
|
|
280
255
|
properties: {
|
|
281
|
-
label: ['space settings schema label', { ns:
|
|
256
|
+
label: ['space settings schema label', { ns: meta.id }],
|
|
282
257
|
icon: 'ph--shapes--regular',
|
|
283
258
|
},
|
|
284
259
|
},
|
|
@@ -312,7 +287,7 @@ export const constructSpaceActions = ({
|
|
|
312
287
|
await dispatch(createIntent(SpaceAction.Migrate, { space }));
|
|
313
288
|
},
|
|
314
289
|
properties: {
|
|
315
|
-
label: ['migrate space label', { ns:
|
|
290
|
+
label: ['migrate space label', { ns: meta.id }],
|
|
316
291
|
icon: 'ph--database--regular',
|
|
317
292
|
disposition: 'list-item-primary',
|
|
318
293
|
disabled: migrating || Migrations.running(space),
|
|
@@ -329,7 +304,7 @@ export const constructSpaceActions = ({
|
|
|
329
304
|
await dispatch(createIntent(SpaceAction.OpenCreateObject, { target: space }));
|
|
330
305
|
},
|
|
331
306
|
properties: {
|
|
332
|
-
label: ['create object in space label', { ns:
|
|
307
|
+
label: ['create object in space label', { ns: meta.id }],
|
|
333
308
|
icon: 'ph--plus--regular',
|
|
334
309
|
disposition: 'item',
|
|
335
310
|
testId: 'spacePlugin.createObject',
|
|
@@ -342,7 +317,7 @@ export const constructSpaceActions = ({
|
|
|
342
317
|
await dispatch(createIntent(SpaceAction.Rename, { space, caller: params?.caller }));
|
|
343
318
|
},
|
|
344
319
|
properties: {
|
|
345
|
-
label: ['rename space label', { ns:
|
|
320
|
+
label: ['rename space label', { ns: meta.id }],
|
|
346
321
|
icon: 'ph--pencil-simple-line--regular',
|
|
347
322
|
keyBinding: {
|
|
348
323
|
macos: 'shift+F6',
|
|
@@ -356,15 +331,23 @@ export const constructSpaceActions = ({
|
|
|
356
331
|
return actions;
|
|
357
332
|
};
|
|
358
333
|
|
|
359
|
-
export const createStaticSchemaNode = ({
|
|
334
|
+
export const createStaticSchemaNode = ({
|
|
335
|
+
schema,
|
|
336
|
+
space,
|
|
337
|
+
}: {
|
|
338
|
+
schema: Schema.Schema.AnyNoContext;
|
|
339
|
+
space: Space;
|
|
340
|
+
}): Node => {
|
|
360
341
|
return {
|
|
361
342
|
id: `${space.id}/${Type.getTypename(schema)}`,
|
|
362
|
-
type: `${
|
|
343
|
+
type: `${meta.id}/static-schema`,
|
|
363
344
|
data: schema,
|
|
364
345
|
properties: {
|
|
365
|
-
label: ['typename label', { ns: Type.getTypename(schema), default: Type.getTypename(schema) }],
|
|
346
|
+
label: ['typename label', { ns: Type.getTypename(schema), count: 2, default: Type.getTypename(schema) }],
|
|
366
347
|
icon: 'ph--database--regular',
|
|
348
|
+
iconHue: 'green',
|
|
367
349
|
role: 'branch',
|
|
350
|
+
selectable: false,
|
|
368
351
|
canDrop: () => false,
|
|
369
352
|
space,
|
|
370
353
|
},
|
|
@@ -398,7 +381,7 @@ export const createStaticSchemaActions = ({
|
|
|
398
381
|
);
|
|
399
382
|
},
|
|
400
383
|
properties: {
|
|
401
|
-
label: ['add view to schema label', { ns:
|
|
384
|
+
label: ['add view to schema label', { ns: meta.id }],
|
|
402
385
|
icon: 'ph--plus--regular',
|
|
403
386
|
disposition: 'list-item-primary',
|
|
404
387
|
testId: 'spacePlugin.addViewToSchema',
|
|
@@ -411,7 +394,7 @@ export const createStaticSchemaActions = ({
|
|
|
411
394
|
throw new Error('Not implemented');
|
|
412
395
|
},
|
|
413
396
|
properties: {
|
|
414
|
-
label: ['rename object label', { ns: Type.getTypename(
|
|
397
|
+
label: ['rename object label', { ns: Type.getTypename(Type.PersistentType) }],
|
|
415
398
|
icon: 'ph--pencil-simple-line--regular',
|
|
416
399
|
disabled: true,
|
|
417
400
|
disposition: 'list-item',
|
|
@@ -430,13 +413,37 @@ export const createStaticSchemaActions = ({
|
|
|
430
413
|
}
|
|
431
414
|
},
|
|
432
415
|
properties: {
|
|
433
|
-
label: ['delete object label', { ns: Type.getTypename(
|
|
416
|
+
label: ['delete object label', { ns: Type.getTypename(Type.PersistentType) }],
|
|
434
417
|
icon: 'ph--trash--regular',
|
|
435
418
|
disposition: 'list-item',
|
|
436
419
|
disabled: !deletable,
|
|
437
420
|
testId: 'spacePlugin.deleteObject',
|
|
438
421
|
},
|
|
439
422
|
},
|
|
423
|
+
{
|
|
424
|
+
id: getId(SpaceAction.Snapshot._tag),
|
|
425
|
+
type: ACTION_TYPE,
|
|
426
|
+
data: async () => {
|
|
427
|
+
const result = await dispatch(
|
|
428
|
+
createIntent(SpaceAction.Snapshot, {
|
|
429
|
+
space,
|
|
430
|
+
query: Query.select(Filter.type(schema)).ast,
|
|
431
|
+
}),
|
|
432
|
+
);
|
|
433
|
+
if (result.data?.snapshot) {
|
|
434
|
+
await downloadBlob(
|
|
435
|
+
result.data.snapshot,
|
|
436
|
+
// TODO(wittjosiah): Factor out file name construction.
|
|
437
|
+
`${new Date().toISOString()}-${space.id}-${Type.getTypename(schema)}.json`,
|
|
438
|
+
);
|
|
439
|
+
}
|
|
440
|
+
},
|
|
441
|
+
properties: {
|
|
442
|
+
label: ['snapshot by schema label', { ns: meta.id }],
|
|
443
|
+
icon: 'ph--camera--regular',
|
|
444
|
+
disposition: 'list-item',
|
|
445
|
+
},
|
|
446
|
+
},
|
|
440
447
|
];
|
|
441
448
|
|
|
442
449
|
return actions;
|
|
@@ -448,6 +455,7 @@ export const createObjectNode = ({
|
|
|
448
455
|
disposition,
|
|
449
456
|
droppable = true,
|
|
450
457
|
navigable = false,
|
|
458
|
+
managedCollectionChild = false,
|
|
451
459
|
resolve,
|
|
452
460
|
}: {
|
|
453
461
|
space: Space;
|
|
@@ -455,6 +463,7 @@ export const createObjectNode = ({
|
|
|
455
463
|
disposition?: string;
|
|
456
464
|
droppable?: boolean;
|
|
457
465
|
navigable?: boolean;
|
|
466
|
+
managedCollectionChild?: boolean;
|
|
458
467
|
resolve: (typename: string) => Record<string, any>;
|
|
459
468
|
}) => {
|
|
460
469
|
const type = Obj.getTypename(object);
|
|
@@ -463,15 +472,13 @@ export const createObjectNode = ({
|
|
|
463
472
|
}
|
|
464
473
|
|
|
465
474
|
const metadata = resolve(type);
|
|
466
|
-
const partials = Obj.instanceOf(
|
|
475
|
+
const partials = Obj.instanceOf(Collection.Collection, object)
|
|
467
476
|
? getCollectionGraphNodePartials({ collection: object, space, resolve })
|
|
468
|
-
: Obj.instanceOf(
|
|
469
|
-
?
|
|
470
|
-
: Obj.instanceOf(
|
|
477
|
+
: Obj.instanceOf(Collection.Managed, object)
|
|
478
|
+
? getSystemCollectionNodePartials({ collection: object, space, resolve })
|
|
479
|
+
: Obj.instanceOf(Type.PersistentType, object)
|
|
471
480
|
? getSchemaGraphNodePartials()
|
|
472
|
-
:
|
|
473
|
-
? getViewGraphNodePartials({ view: object, resolve })
|
|
474
|
-
: metadata.graphProps;
|
|
481
|
+
: metadata.graphProps;
|
|
475
482
|
|
|
476
483
|
// TODO(wittjosiah): Obj.getLabel isn't triggering reactivity in some cases.
|
|
477
484
|
// e.g., create new collection with no name and rename it.
|
|
@@ -480,18 +487,40 @@ export const createObjectNode = ({
|
|
|
480
487
|
// TODO(wittjosiah): Remove metadata labels.
|
|
481
488
|
metadata.label?.(object) || ['object name placeholder', { ns: type, default: 'New item' }];
|
|
482
489
|
|
|
490
|
+
const selectable =
|
|
491
|
+
(!Obj.instanceOf(Type.PersistentType, object) &&
|
|
492
|
+
!Obj.instanceOf(Collection.Managed, object) &&
|
|
493
|
+
!Obj.instanceOf(Collection.Collection, object)) ||
|
|
494
|
+
(navigable && Obj.instanceOf(Collection.Collection, object));
|
|
495
|
+
|
|
483
496
|
return {
|
|
484
|
-
id:
|
|
497
|
+
id: Obj.getDXN(object).toString(),
|
|
485
498
|
type,
|
|
486
499
|
cacheable: ['label', 'icon', 'role'],
|
|
487
500
|
data: object,
|
|
488
501
|
properties: {
|
|
489
502
|
label,
|
|
490
503
|
icon: metadata.icon ?? 'ph--placeholder--regular',
|
|
504
|
+
iconHue: metadata.iconHue,
|
|
491
505
|
disposition,
|
|
492
506
|
testId: 'spacePlugin.object',
|
|
493
507
|
persistenceClass: 'echo',
|
|
494
508
|
persistenceKey: space?.id,
|
|
509
|
+
selectable,
|
|
510
|
+
managedCollectionChild,
|
|
511
|
+
blockInstruction: (source: TreeData, instruction: Instruction) => {
|
|
512
|
+
if (source.item.properties.managedCollectionChild) {
|
|
513
|
+
// TODO(wittjosiah): Support reordering system collections.
|
|
514
|
+
// return !(managedCollectionChild && source.item.type === type && instruction.type.startsWith('reorder'));
|
|
515
|
+
return true;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
if (Obj.instanceOf(Collection.Managed, object)) {
|
|
519
|
+
return !instruction.type.startsWith('reorder');
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
return managedCollectionChild;
|
|
523
|
+
},
|
|
495
524
|
canDrop: (source: TreeData) => {
|
|
496
525
|
return droppable && isGraphNode(source.item) && Obj.isObject(source.item.data);
|
|
497
526
|
},
|
|
@@ -504,14 +533,14 @@ export const constructObjectActions = ({
|
|
|
504
533
|
object,
|
|
505
534
|
graph,
|
|
506
535
|
dispatch,
|
|
507
|
-
|
|
536
|
+
resolve,
|
|
508
537
|
deletable = true,
|
|
509
538
|
navigable = false,
|
|
510
539
|
}: {
|
|
511
540
|
object: Obj.Any;
|
|
512
541
|
graph: ReadableGraph;
|
|
513
542
|
dispatch: PromiseIntentDispatcher;
|
|
514
|
-
|
|
543
|
+
resolve: (typename: string) => Record<string, any>;
|
|
515
544
|
deletable?: boolean;
|
|
516
545
|
navigable?: boolean;
|
|
517
546
|
}) => {
|
|
@@ -520,15 +549,15 @@ export const constructObjectActions = ({
|
|
|
520
549
|
const typename = Obj.getTypename(object);
|
|
521
550
|
invariant(typename, 'Object has no typename');
|
|
522
551
|
|
|
523
|
-
const getId = (id: string) => `${id}/${
|
|
552
|
+
const getId = (id: string) => `${id}/${Obj.getDXN(object).toString()}`;
|
|
524
553
|
|
|
525
|
-
const
|
|
526
|
-
const
|
|
527
|
-
|
|
528
|
-
|
|
554
|
+
const managedCollection = Obj.instanceOf(Collection.Managed, object) ? object : undefined;
|
|
555
|
+
const metadata = managedCollection ? resolve(managedCollection.key) : {};
|
|
556
|
+
const createObjectIntent = metadata.createObjectIntent;
|
|
557
|
+
const inputSchema = metadata.inputSchema;
|
|
529
558
|
|
|
530
559
|
const actions: NodeArg<ActionData>[] = [
|
|
531
|
-
...(Obj.instanceOf(
|
|
560
|
+
...(Obj.instanceOf(Collection.Collection, object)
|
|
532
561
|
? [
|
|
533
562
|
{
|
|
534
563
|
id: getId(SpaceAction.OpenCreateObject._tag),
|
|
@@ -537,7 +566,7 @@ export const constructObjectActions = ({
|
|
|
537
566
|
await dispatch(createIntent(SpaceAction.OpenCreateObject, { target: object }));
|
|
538
567
|
},
|
|
539
568
|
properties: {
|
|
540
|
-
label: ['create object in collection label', { ns:
|
|
569
|
+
label: ['create object in collection label', { ns: meta.id }],
|
|
541
570
|
icon: 'ph--plus--regular',
|
|
542
571
|
disposition: 'list-item-primary',
|
|
543
572
|
testId: 'spacePlugin.createObject',
|
|
@@ -545,7 +574,7 @@ export const constructObjectActions = ({
|
|
|
545
574
|
},
|
|
546
575
|
]
|
|
547
576
|
: []),
|
|
548
|
-
...(Obj.instanceOf(
|
|
577
|
+
...(Obj.instanceOf(Type.PersistentType, object)
|
|
549
578
|
? [
|
|
550
579
|
{
|
|
551
580
|
id: getId(SpaceAction.AddObject._tag),
|
|
@@ -560,31 +589,55 @@ export const constructObjectActions = ({
|
|
|
560
589
|
);
|
|
561
590
|
},
|
|
562
591
|
properties: {
|
|
563
|
-
label: ['add view to schema label', { ns:
|
|
592
|
+
label: ['add view to schema label', { ns: meta.id }],
|
|
564
593
|
icon: 'ph--plus--regular',
|
|
565
594
|
disposition: 'list-item-primary',
|
|
566
595
|
testId: 'spacePlugin.addViewToSchema',
|
|
567
596
|
},
|
|
568
597
|
},
|
|
598
|
+
{
|
|
599
|
+
id: getId(SpaceAction.Snapshot._tag),
|
|
600
|
+
type: ACTION_TYPE,
|
|
601
|
+
data: async () => {
|
|
602
|
+
const result = await dispatch(
|
|
603
|
+
createIntent(SpaceAction.Snapshot, {
|
|
604
|
+
space,
|
|
605
|
+
query: Query.select(Filter.type(Type.toEffectSchema(object.jsonSchema))).ast,
|
|
606
|
+
}),
|
|
607
|
+
);
|
|
608
|
+
if (result.data?.snapshot) {
|
|
609
|
+
await downloadBlob(
|
|
610
|
+
result.data.snapshot,
|
|
611
|
+
// TODO(wittjosiah): Factor out file name construction.
|
|
612
|
+
`${new Date().toISOString()}-${space.id}-${object.typename}.json`,
|
|
613
|
+
);
|
|
614
|
+
}
|
|
615
|
+
},
|
|
616
|
+
properties: {
|
|
617
|
+
label: ['snapshot by schema label', { ns: meta.id }],
|
|
618
|
+
icon: 'ph--camera--regular',
|
|
619
|
+
disposition: 'list-item',
|
|
620
|
+
},
|
|
621
|
+
},
|
|
569
622
|
]
|
|
570
623
|
: []),
|
|
571
|
-
...(
|
|
624
|
+
...(createObjectIntent
|
|
572
625
|
? [
|
|
573
626
|
{
|
|
574
627
|
id: getId(SpaceAction.OpenCreateObject._tag),
|
|
575
628
|
type: ACTION_TYPE,
|
|
576
629
|
data: async () => {
|
|
577
|
-
if (
|
|
630
|
+
if (inputSchema) {
|
|
578
631
|
await dispatch(
|
|
579
632
|
createIntent(SpaceAction.OpenCreateObject, {
|
|
580
633
|
target: space,
|
|
581
|
-
typename:
|
|
634
|
+
typename: managedCollection ? managedCollection.key : undefined,
|
|
582
635
|
}),
|
|
583
636
|
);
|
|
584
637
|
} else {
|
|
585
638
|
await dispatch(
|
|
586
|
-
pipe(
|
|
587
|
-
|
|
639
|
+
Function.pipe(
|
|
640
|
+
createObjectIntent({}, { space }),
|
|
588
641
|
chain(SpaceAction.AddObject, { target: space, hidden: true }),
|
|
589
642
|
chain(LayoutAction.Open, { part: 'main' }),
|
|
590
643
|
),
|
|
@@ -592,7 +645,7 @@ export const constructObjectActions = ({
|
|
|
592
645
|
}
|
|
593
646
|
},
|
|
594
647
|
properties: {
|
|
595
|
-
label: ['create object in
|
|
648
|
+
label: ['create object in system collection label', { ns: meta.id }],
|
|
596
649
|
icon: 'ph--plus--regular',
|
|
597
650
|
disposition: 'list-item-primary',
|
|
598
651
|
testId: 'spacePlugin.createObject',
|
|
@@ -600,56 +653,60 @@ export const constructObjectActions = ({
|
|
|
600
653
|
},
|
|
601
654
|
]
|
|
602
655
|
: []),
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
656
|
+
...(managedCollection
|
|
657
|
+
? []
|
|
658
|
+
: [
|
|
659
|
+
{
|
|
660
|
+
id: getId(SpaceAction.RenameObject._tag),
|
|
661
|
+
type: ACTION_TYPE,
|
|
662
|
+
data: async (params?: InvokeParams) => {
|
|
663
|
+
await dispatch(createIntent(SpaceAction.RenameObject, { object, caller: params?.caller }));
|
|
664
|
+
},
|
|
665
|
+
properties: {
|
|
666
|
+
label: ['rename object label', { ns: typename }],
|
|
667
|
+
icon: 'ph--pencil-simple-line--regular',
|
|
668
|
+
disposition: 'list-item',
|
|
669
|
+
// TODO(wittjosiah): Not working.
|
|
670
|
+
// keyBinding: {
|
|
671
|
+
// macos: 'shift+F6',
|
|
672
|
+
// },
|
|
673
|
+
testId: 'spacePlugin.renameObject',
|
|
674
|
+
},
|
|
675
|
+
},
|
|
676
|
+
{
|
|
677
|
+
id: getId(SpaceAction.RemoveObjects._tag),
|
|
678
|
+
type: ACTION_TYPE,
|
|
679
|
+
data: async () => {
|
|
680
|
+
const collection = graph
|
|
681
|
+
.getConnections(Obj.getDXN(object).toString(), 'inbound')
|
|
682
|
+
.find(({ data }) => Obj.instanceOf(Collection.Collection, data))?.data;
|
|
683
|
+
await dispatch(createIntent(SpaceAction.RemoveObjects, { objects: [object], target: collection }));
|
|
684
|
+
},
|
|
685
|
+
properties: {
|
|
686
|
+
label: ['delete object label', { ns: typename }],
|
|
687
|
+
icon: 'ph--trash--regular',
|
|
688
|
+
disposition: 'list-item',
|
|
689
|
+
disabled: !deletable,
|
|
690
|
+
// TODO(wittjosiah): This is a browser shortcut.
|
|
691
|
+
// keyBinding: object instanceof CollectionType ? undefined : 'shift+meta+Backspace',
|
|
692
|
+
testId: 'spacePlugin.deleteObject',
|
|
693
|
+
},
|
|
694
|
+
},
|
|
695
|
+
]),
|
|
639
696
|
...(navigable ||
|
|
640
|
-
(!Obj.instanceOf(
|
|
641
|
-
!Obj.instanceOf(
|
|
642
|
-
!Obj.instanceOf(
|
|
697
|
+
(!Obj.instanceOf(Collection.Collection, object) &&
|
|
698
|
+
!Obj.instanceOf(Collection.Managed, object) &&
|
|
699
|
+
!Obj.instanceOf(Type.PersistentType, object))
|
|
643
700
|
? [
|
|
644
701
|
{
|
|
645
702
|
id: getId('copy-link'),
|
|
646
703
|
type: ACTION_TYPE,
|
|
647
704
|
data: async () => {
|
|
648
|
-
const url = `${window.location.origin}/${space.id}/${
|
|
705
|
+
const url = `${window.location.origin}/${space.id}/${Obj.getDXN(object).toString()}`;
|
|
649
706
|
await navigator.clipboard.writeText(url);
|
|
650
707
|
},
|
|
651
708
|
properties: {
|
|
652
|
-
label: ['copy link label', { ns:
|
|
709
|
+
label: ['copy link label', { ns: meta.id }],
|
|
653
710
|
icon: 'ph--link--regular',
|
|
654
711
|
disposition: 'list-item',
|
|
655
712
|
testId: 'spacePlugin.copyLink',
|
|
@@ -662,10 +719,12 @@ export const constructObjectActions = ({
|
|
|
662
719
|
id: getId(LayoutAction.Expose._tag),
|
|
663
720
|
type: ACTION_TYPE,
|
|
664
721
|
data: async () => {
|
|
665
|
-
await dispatch(
|
|
722
|
+
await dispatch(
|
|
723
|
+
createIntent(LayoutAction.Expose, { part: 'navigation', subject: Obj.getDXN(object).toString() }),
|
|
724
|
+
);
|
|
666
725
|
},
|
|
667
726
|
properties: {
|
|
668
|
-
label: ['expose object label', { ns:
|
|
727
|
+
label: ['expose object label', { ns: meta.id }],
|
|
669
728
|
icon: 'ph--eye--regular',
|
|
670
729
|
disposition: 'heading-list-item',
|
|
671
730
|
testId: 'spacePlugin.exposeObject',
|
|
@@ -676,6 +735,20 @@ export const constructObjectActions = ({
|
|
|
676
735
|
return actions;
|
|
677
736
|
};
|
|
678
737
|
|
|
738
|
+
// TODO(wittjosiah): Factor out.
|
|
739
|
+
const downloadBlob = async (blob: Blob, filename: string) => {
|
|
740
|
+
const url = URL.createObjectURL(blob);
|
|
741
|
+
const a = document.createElement('a');
|
|
742
|
+
a.href = url;
|
|
743
|
+
a.download = filename;
|
|
744
|
+
|
|
745
|
+
document.body.appendChild(a);
|
|
746
|
+
a.click();
|
|
747
|
+
|
|
748
|
+
document.body.removeChild(a);
|
|
749
|
+
URL.revokeObjectURL(url);
|
|
750
|
+
};
|
|
751
|
+
|
|
679
752
|
/**
|
|
680
753
|
* @deprecated This is a temporary solution.
|
|
681
754
|
*/
|
|
@@ -704,10 +777,10 @@ export const getNestedObjects = async (
|
|
|
704
777
|
*/
|
|
705
778
|
// TODO(burdon): Remove.
|
|
706
779
|
export const cloneObject = async (
|
|
707
|
-
object:
|
|
780
|
+
object: Obj.Any,
|
|
708
781
|
resolve: (typename: string) => Record<string, any>,
|
|
709
782
|
newSpace: Space,
|
|
710
|
-
): Promise<
|
|
783
|
+
): Promise<Obj.Any> => {
|
|
711
784
|
const schema = Obj.getSchema(object);
|
|
712
785
|
const typename = schema ? (Type.getTypename(schema) ?? EXPANDO_TYPENAME) : EXPANDO_TYPENAME;
|
|
713
786
|
const metadata = resolve(typename);
|