@dxos/plugin-space 0.8.4-main.67995b8 → 0.8.4-main.70d3990
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/{CollectionMain-D2B75XBS.mjs → CollectionArticle-WTHWY4YS.mjs} +10 -10
- package/dist/lib/browser/CollectionArticle-WTHWY4YS.mjs.map +7 -0
- package/dist/lib/browser/ObjectDetailsPanel-ACGHWPDX.mjs +141 -0
- package/dist/lib/browser/ObjectDetailsPanel-ACGHWPDX.mjs.map +7 -0
- package/dist/lib/browser/ObjectSettings-U3IH7BMV.mjs +144 -0
- package/dist/lib/browser/ObjectSettings-U3IH7BMV.mjs.map +7 -0
- package/dist/lib/browser/RecordArticle-2PFEBPXY.mjs +116 -0
- package/dist/lib/browser/RecordArticle-2PFEBPXY.mjs.map +7 -0
- package/dist/lib/browser/app-graph-builder-HABMCWAI.mjs +517 -0
- package/dist/lib/browser/app-graph-builder-HABMCWAI.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-H6AW7KGS.mjs → app-graph-serializer-G3VFEGTN.mjs} +19 -19
- package/dist/lib/browser/app-graph-serializer-G3VFEGTN.mjs.map +7 -0
- package/dist/lib/browser/chunk-6A3NWBB6.mjs +392 -0
- package/dist/lib/browser/chunk-6A3NWBB6.mjs.map +7 -0
- package/dist/lib/browser/chunk-C6DAPIFF.mjs +20 -0
- package/dist/lib/browser/chunk-C6DAPIFF.mjs.map +7 -0
- package/dist/lib/browser/{chunk-XUYKJUU7.mjs → chunk-GJOZILGC.mjs} +262 -143
- package/dist/lib/browser/chunk-GJOZILGC.mjs.map +7 -0
- package/dist/lib/browser/{chunk-FBJEXW54.mjs → chunk-KCZ527AM.mjs} +667 -525
- package/dist/lib/browser/chunk-KCZ527AM.mjs.map +7 -0
- package/dist/lib/browser/{chunk-VLBRSGJ2.mjs → chunk-P25R3AOK.mjs} +36 -6
- package/dist/lib/browser/chunk-P25R3AOK.mjs.map +7 -0
- package/dist/lib/browser/{chunk-QACNNDOT.mjs → chunk-POFUXISV.mjs} +69 -62
- package/dist/lib/browser/chunk-POFUXISV.mjs.map +7 -0
- package/dist/lib/browser/chunk-VZBIIYFM.mjs +16 -0
- package/dist/lib/browser/chunk-VZBIIYFM.mjs.map +7 -0
- package/dist/lib/browser/chunk-WJXU4GKV.mjs +19 -0
- package/dist/lib/browser/chunk-WJXU4GKV.mjs.map +7 -0
- package/dist/lib/browser/{identity-created-23XJJV2N.mjs → identity-created-NAXTPQXE.mjs} +6 -6
- package/dist/lib/browser/identity-created-NAXTPQXE.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +88 -135
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-XHGD73WZ.mjs → intent-resolver-RZEWNJ2K.mjs} +114 -101
- package/dist/lib/browser/intent-resolver-RZEWNJ2K.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/react-root-JCRD74GI.mjs +30 -0
- package/dist/lib/browser/react-root-JCRD74GI.mjs.map +7 -0
- package/dist/lib/browser/{react-surface-YWZZQF7H.mjs → react-surface-VOETEAG3.mjs} +101 -111
- package/dist/lib/browser/react-surface-VOETEAG3.mjs.map +7 -0
- package/dist/lib/browser/repair-CNLE35NF.mjs +44 -0
- package/dist/lib/browser/repair-CNLE35NF.mjs.map +7 -0
- package/dist/lib/browser/{settings-4IMP5RYT.mjs → settings-TRLI52I5.mjs} +5 -5
- package/dist/lib/browser/{settings-4IMP5RYT.mjs.map → settings-TRLI52I5.mjs.map} +1 -1
- package/dist/lib/browser/{spaces-ready-TOPG6IV4.mjs → spaces-ready-OHGCWZHQ.mjs} +28 -19
- package/dist/lib/browser/spaces-ready-OHGCWZHQ.mjs.map +7 -0
- package/dist/lib/browser/{state-QYZAB45H.mjs → state-C7N6EDDZ.mjs} +7 -7
- package/dist/lib/browser/state-C7N6EDDZ.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +10 -4
- package/dist/lib/node-esm/{CollectionMain-ZJIFCWKZ.mjs → CollectionArticle-KHXYT3SH.mjs} +10 -10
- package/dist/lib/node-esm/CollectionArticle-KHXYT3SH.mjs.map +7 -0
- package/dist/lib/node-esm/ObjectDetailsPanel-6OFTT3GG.mjs +142 -0
- package/dist/lib/node-esm/ObjectDetailsPanel-6OFTT3GG.mjs.map +7 -0
- package/dist/lib/node-esm/ObjectSettings-YXPJQMJ5.mjs +145 -0
- package/dist/lib/node-esm/ObjectSettings-YXPJQMJ5.mjs.map +7 -0
- package/dist/lib/node-esm/RecordArticle-SSJ7PULS.mjs +117 -0
- package/dist/lib/node-esm/RecordArticle-SSJ7PULS.mjs.map +7 -0
- package/dist/lib/node-esm/app-graph-builder-T6VJKIOA.mjs +518 -0
- package/dist/lib/node-esm/app-graph-builder-T6VJKIOA.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-2ICUGQQT.mjs → app-graph-serializer-2NLWWFUB.mjs} +19 -19
- package/dist/lib/node-esm/app-graph-serializer-2NLWWFUB.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-SSLBYZEY.mjs → chunk-7EV4SN47.mjs} +35 -6
- package/dist/lib/node-esm/chunk-7EV4SN47.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-P442DOQ3.mjs → chunk-AX3UGL5D.mjs} +69 -62
- package/dist/lib/node-esm/chunk-AX3UGL5D.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-BDEFTL6K.mjs +18 -0
- package/dist/lib/node-esm/chunk-BDEFTL6K.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-H4JILUJK.mjs +20 -0
- package/dist/lib/node-esm/chunk-H4JILUJK.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-4AOMYKDE.mjs → chunk-I6FZP42D.mjs} +262 -143
- package/dist/lib/node-esm/chunk-I6FZP42D.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-2A3VBXBP.mjs → chunk-JAMGJUFU.mjs} +667 -525
- package/dist/lib/node-esm/chunk-JAMGJUFU.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-WWGV5FJM.mjs +21 -0
- package/dist/lib/node-esm/chunk-WWGV5FJM.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-X34VDVMY.mjs +393 -0
- package/dist/lib/node-esm/chunk-X34VDVMY.mjs.map +7 -0
- package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs → identity-created-OXLKCJE3.mjs} +6 -6
- package/dist/lib/node-esm/identity-created-OXLKCJE3.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +88 -135
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-LEANKSKZ.mjs → intent-resolver-4PHJWDXW.mjs} +114 -101
- package/dist/lib/node-esm/intent-resolver-4PHJWDXW.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-5Y7LJRX6.mjs → react-root-O5I5CDJ7.mjs} +13 -12
- package/dist/lib/node-esm/react-root-O5I5CDJ7.mjs.map +7 -0
- package/dist/lib/node-esm/{react-surface-YQFNIKYT.mjs → react-surface-J3XDMU2D.mjs} +101 -111
- package/dist/lib/node-esm/react-surface-J3XDMU2D.mjs.map +7 -0
- package/dist/lib/node-esm/repair-EHZS6MFY.mjs +45 -0
- package/dist/lib/node-esm/repair-EHZS6MFY.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-SAOBPND3.mjs → settings-MNQTKHL7.mjs} +5 -5
- package/dist/lib/node-esm/{settings-SAOBPND3.mjs.map → settings-MNQTKHL7.mjs.map} +1 -1
- package/dist/lib/node-esm/{spaces-ready-HIUKNDZK.mjs → spaces-ready-ZPU24DA2.mjs} +28 -19
- package/dist/lib/node-esm/spaces-ready-ZPU24DA2.mjs.map +7 -0
- package/dist/lib/node-esm/{state-ZVEHQ4BJ.mjs → state-45TXZQJ6.mjs} +7 -7
- package/dist/lib/node-esm/state-45TXZQJ6.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +10 -4
- package/dist/types/src/SpacePlugin.d.ts +1 -1
- package/dist/types/src/SpacePlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-serializer.d.ts +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +14 -8
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/identity-created.d.ts +1 -1
- package/dist/types/src/capabilities/identity-created.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +11 -12
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-root.d.ts +2 -2
- package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/repair.d.ts +4 -0
- package/dist/types/src/capabilities/repair.d.ts.map +1 -0
- package/dist/types/src/capabilities/settings.d.ts +1 -1
- package/dist/types/src/capabilities/spaces-ready.d.ts +1 -1
- package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
- package/dist/types/src/capabilities/state.d.ts +1 -1
- package/dist/types/src/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
- package/dist/types/src/components/CollectionArticle.d.ts +6 -0
- package/dist/types/src/components/CollectionArticle.d.ts.map +1 -0
- package/dist/types/src/components/CollectionSection.d.ts +3 -4
- package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +3 -3
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1588 -4
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +18 -9
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -1
- package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
- package/dist/types/src/components/{JoinDialog.d.ts → JoinDialog/JoinDialog.d.ts} +1 -1
- package/dist/types/src/components/JoinDialog/JoinDialog.d.ts.map +1 -0
- package/dist/types/src/components/JoinDialog/index.d.ts +2 -0
- package/dist/types/src/components/JoinDialog/index.d.ts.map +1 -0
- package/dist/types/src/components/{MembersContainer.d.ts → MembersContainer/MembersContainer.d.ts} +3 -2
- package/dist/types/src/components/MembersContainer/MembersContainer.d.ts.map +1 -0
- package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts +1591 -0
- package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts.map +1 -0
- package/dist/types/src/components/MembersContainer/index.d.ts +2 -0
- package/dist/types/src/components/MembersContainer/index.d.ts.map +1 -0
- package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +9 -0
- package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -0
- package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts +10 -0
- package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -0
- package/dist/types/src/components/ObjectDetailsPanel/index.d.ts +3 -0
- package/dist/types/src/components/ObjectDetailsPanel/index.d.ts.map +1 -0
- package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts +7 -0
- package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts.map +1 -0
- package/dist/types/src/components/ObjectRenamePopover/index.d.ts +2 -0
- package/dist/types/src/components/ObjectRenamePopover/index.d.ts.map +1 -0
- package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +2 -2
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +1424 -0
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -0
- package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +3 -3
- package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
- package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -1
- package/dist/types/src/components/ObjectSettings/index.d.ts +2 -1
- package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -1
- package/dist/types/src/components/RecordArticle.d.ts +5 -0
- package/dist/types/src/components/RecordArticle.d.ts.map +1 -0
- package/dist/types/src/components/RecordArticle.stories.d.ts +1591 -0
- package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -0
- package/dist/types/src/components/SchemaContainer.d.ts +2 -2
- package/dist/types/src/components/SchemaContainer.d.ts.map +1 -1
- package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
- package/dist/types/src/components/{SpacePresence.d.ts → SpacePresence/SpacePresence.d.ts} +6 -5
- package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -0
- package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts +1421 -0
- package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts.map +1 -0
- package/dist/types/src/components/SpacePresence/index.d.ts +2 -0
- package/dist/types/src/components/SpacePresence/index.d.ts.map +1 -0
- package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts +7 -0
- package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts.map +1 -0
- package/dist/types/src/components/SpaceRenamePopover/index.d.ts +2 -0
- package/dist/types/src/components/SpaceRenamePopover/index.d.ts.map +1 -0
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1421 -4
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1422 -5
- package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
- package/dist/types/src/components/ViewEditor.d.ts +3 -4
- package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +10 -11
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/helpers/index.d.ts +2 -0
- package/dist/types/src/helpers/index.d.ts.map +1 -0
- package/dist/types/src/helpers/query.d.ts +8 -0
- package/dist/types/src/helpers/query.d.ts.map +1 -0
- package/dist/types/src/helpers/query.test.d.ts +2 -0
- package/dist/types/src/helpers/query.test.d.ts.map +1 -0
- package/dist/types/src/hooks/index.d.ts +1 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
- package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +1 -1
- package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
- package/dist/types/src/hooks/usePath.d.ts +1 -1
- package/dist/types/src/hooks/usePath.d.ts.map +1 -1
- package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
- package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +0 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +1261 -67
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/form.d.ts +24 -0
- package/dist/types/src/types/form.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +1 -0
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +94 -155
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +25 -36
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +72 -63
- package/src/SpacePlugin.ts +182 -222
- package/src/capabilities/app-graph-builder.ts +221 -237
- package/src/capabilities/app-graph-serializer.ts +12 -12
- package/src/capabilities/capabilities.ts +28 -17
- package/src/capabilities/identity-created.ts +3 -3
- package/src/capabilities/index.ts +1 -2
- package/src/capabilities/intent-resolver.ts +91 -79
- package/src/capabilities/react-root.tsx +6 -4
- package/src/capabilities/react-surface.tsx +108 -149
- package/src/capabilities/repair.ts +57 -0
- package/src/capabilities/spaces-ready.ts +23 -11
- package/src/capabilities/state.ts +5 -4
- package/src/components/AwaitingObject.tsx +12 -14
- package/src/components/{CollectionMain.tsx → CollectionArticle.tsx} +7 -6
- package/src/components/CollectionSection.tsx +8 -6
- package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +17 -16
- package/src/components/CreateDialog/CreateObjectDialog.tsx +74 -46
- package/src/components/CreateDialog/CreateObjectPanel.tsx +51 -33
- package/src/components/CreateDialog/CreateSpaceDialog.tsx +30 -11
- package/src/components/{JoinDialog.tsx → JoinDialog/JoinDialog.tsx} +26 -10
- package/src/components/JoinDialog/index.ts +5 -0
- package/src/components/MembersContainer/MembersContainer.stories.tsx +56 -0
- package/src/components/{MembersContainer.tsx → MembersContainer/MembersContainer.tsx} +22 -21
- package/src/components/MembersContainer/index.ts +5 -0
- package/src/components/MenuFooter.tsx +2 -2
- package/src/components/ObjectDetailsPanel/ObjectDetailsPanel.tsx +51 -0
- package/src/components/ObjectDetailsPanel/ObjectForm.tsx +72 -0
- package/src/components/ObjectDetailsPanel/index.ts +7 -0
- package/src/components/{PopoverRenameObject.tsx → ObjectRenamePopover/ObjectRenamePopover.tsx} +10 -16
- package/src/components/ObjectRenamePopover/index.ts +5 -0
- package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +7 -7
- package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
- package/src/components/ObjectSettings/BaseObjectSettings.tsx +90 -26
- package/src/components/ObjectSettings/ForeignKeys.tsx +8 -8
- package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +4 -3
- package/src/components/ObjectSettings/index.ts +3 -1
- package/src/components/RecordArticle.stories.tsx +115 -0
- package/src/components/RecordArticle.tsx +114 -0
- package/src/components/SchemaContainer.tsx +26 -29
- package/src/components/SpacePluginSettings.tsx +16 -11
- package/src/components/{SpacePresence.stories.tsx → SpacePresence/SpacePresence.stories.tsx} +24 -23
- package/src/components/{SpacePresence.tsx → SpacePresence/SpacePresence.tsx} +22 -17
- package/src/components/SpacePresence/index.ts +5 -0
- package/src/components/{PopoverRenameSpace.tsx → SpaceRenamePopover/SpaceRenamePopover.tsx} +7 -6
- package/src/components/SpaceRenamePopover/index.ts +5 -0
- package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +17 -9
- package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +68 -28
- package/src/components/SyncStatus/InlineSyncStatus.tsx +8 -8
- package/src/components/SyncStatus/SyncStatus.stories.tsx +9 -9
- package/src/components/SyncStatus/SyncStatus.tsx +109 -12
- package/src/components/ViewEditor.tsx +57 -23
- package/src/components/index.ts +7 -7
- package/src/events.ts +7 -7
- package/src/helpers/index.ts +5 -0
- package/src/helpers/query.test.ts +24 -0
- package/src/helpers/query.ts +158 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useActiveSpace.ts +3 -2
- package/src/hooks/useInputSurfaceLookup.tsx +8 -3
- package/src/hooks/usePath.ts +1 -1
- package/src/hooks/useTypeOptions.ts +27 -0
- package/src/index.ts +1 -0
- package/src/meta.ts +6 -3
- package/src/translations.ts +68 -58
- package/src/types/form.ts +75 -0
- package/src/types/index.ts +1 -0
- package/src/types/types.ts +49 -50
- package/src/util.tsx +268 -145
- package/dist/lib/browser/CollectionMain-D2B75XBS.mjs.map +0 -7
- package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs +0 -88
- package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-V3MP3CDK.mjs +0 -480
- package/dist/lib/browser/app-graph-builder-V3MP3CDK.mjs.map +0 -7
- package/dist/lib/browser/app-graph-serializer-H6AW7KGS.mjs.map +0 -7
- package/dist/lib/browser/chunk-CEFHNVU7.mjs +0 -20
- package/dist/lib/browser/chunk-CEFHNVU7.mjs.map +0 -7
- package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
- package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
- package/dist/lib/browser/chunk-FBJEXW54.mjs.map +0 -7
- package/dist/lib/browser/chunk-JS3MMC42.mjs +0 -19
- package/dist/lib/browser/chunk-JS3MMC42.mjs.map +0 -7
- package/dist/lib/browser/chunk-QACNNDOT.mjs.map +0 -7
- package/dist/lib/browser/chunk-SGTQ52SU.mjs +0 -338
- package/dist/lib/browser/chunk-SGTQ52SU.mjs.map +0 -7
- package/dist/lib/browser/chunk-VLBRSGJ2.mjs.map +0 -7
- package/dist/lib/browser/chunk-XUYKJUU7.mjs.map +0 -7
- package/dist/lib/browser/identity-created-23XJJV2N.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-XHGD73WZ.mjs.map +0 -7
- package/dist/lib/browser/react-root-CMWOGJG5.mjs +0 -29
- package/dist/lib/browser/react-root-CMWOGJG5.mjs.map +0 -7
- package/dist/lib/browser/react-surface-YWZZQF7H.mjs.map +0 -7
- package/dist/lib/browser/schema-defs-Z6FC4AHC.mjs +0 -26
- package/dist/lib/browser/schema-defs-Z6FC4AHC.mjs.map +0 -7
- package/dist/lib/browser/schema-tools-BNP4JTD7.mjs +0 -124
- package/dist/lib/browser/schema-tools-BNP4JTD7.mjs.map +0 -7
- package/dist/lib/browser/spaces-ready-TOPG6IV4.mjs.map +0 -7
- package/dist/lib/browser/state-QYZAB45H.mjs.map +0 -7
- package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs.map +0 -7
- package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs +0 -89
- package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-SG4VECBB.mjs +0 -481
- package/dist/lib/node-esm/app-graph-builder-SG4VECBB.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-serializer-2ICUGQQT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2A3VBXBP.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-4AOMYKDE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-5HHYE264.mjs +0 -20
- package/dist/lib/node-esm/chunk-5HHYE264.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-5T3ZH23B.mjs +0 -21
- package/dist/lib/node-esm/chunk-5T3ZH23B.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HWNG4MEU.mjs +0 -15
- package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-JH6F4C3I.mjs +0 -339
- package/dist/lib/node-esm/chunk-JH6F4C3I.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-P442DOQ3.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-SSLBYZEY.mjs.map +0 -7
- package/dist/lib/node-esm/identity-created-IJQO6GCR.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-LEANKSKZ.mjs.map +0 -7
- package/dist/lib/node-esm/react-root-5Y7LJRX6.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-YQFNIKYT.mjs.map +0 -7
- package/dist/lib/node-esm/schema-defs-WHJM7UZE.mjs +0 -27
- package/dist/lib/node-esm/schema-defs-WHJM7UZE.mjs.map +0 -7
- package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs +0 -126
- package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs.map +0 -7
- package/dist/lib/node-esm/spaces-ready-HIUKNDZK.mjs.map +0 -7
- package/dist/lib/node-esm/state-ZVEHQ4BJ.mjs.map +0 -7
- package/dist/types/src/capabilities/schema-defs.d.ts +0 -4
- package/dist/types/src/capabilities/schema-defs.d.ts.map +0 -1
- package/dist/types/src/capabilities/schema-tool.test.d.ts +0 -2
- package/dist/types/src/capabilities/schema-tool.test.d.ts.map +0 -1
- package/dist/types/src/capabilities/schema-tools.d.ts +0 -13
- package/dist/types/src/capabilities/schema-tools.d.ts.map +0 -1
- package/dist/types/src/components/CollectionMain.d.ts +0 -7
- package/dist/types/src/components/CollectionMain.d.ts.map +0 -1
- package/dist/types/src/components/JoinDialog.d.ts.map +0 -1
- package/dist/types/src/components/MembersContainer.d.ts.map +0 -1
- package/dist/types/src/components/MembersContainer.stories.d.ts +0 -8
- package/dist/types/src/components/MembersContainer.stories.d.ts.map +0 -1
- package/dist/types/src/components/ObjectDetailsPanel.d.ts +0 -9
- package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +0 -1
- package/dist/types/src/components/PersistenceStatus.d.ts +0 -6
- package/dist/types/src/components/PersistenceStatus.d.ts.map +0 -1
- package/dist/types/src/components/PopoverRenameObject.d.ts +0 -7
- package/dist/types/src/components/PopoverRenameObject.d.ts.map +0 -1
- package/dist/types/src/components/PopoverRenameSpace.d.ts +0 -7
- package/dist/types/src/components/PopoverRenameSpace.d.ts.map +0 -1
- package/dist/types/src/components/SpacePresence.d.ts.map +0 -1
- package/dist/types/src/components/SpacePresence.stories.d.ts +0 -9
- package/dist/types/src/components/SpacePresence.stories.d.ts.map +0 -1
- package/src/capabilities/schema-defs.ts +0 -30
- package/src/capabilities/schema-tool.test.ts +0 -44
- package/src/capabilities/schema-tools.ts +0 -125
- package/src/components/MembersContainer.stories.tsx +0 -30
- package/src/components/ObjectDetailsPanel.tsx +0 -77
- package/src/components/PersistenceStatus.tsx +0 -83
package/src/util.tsx
CHANGED
|
@@ -2,42 +2,44 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
import { type
|
|
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';
|
|
9
|
+
|
|
10
|
+
import { LayoutAction, type PromiseIntentDispatcher, chain, createIntent } from '@dxos/app-framework';
|
|
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 {
|
|
14
16
|
ACTION_GROUP_TYPE,
|
|
15
17
|
ACTION_TYPE,
|
|
16
|
-
type ReadableGraph,
|
|
17
18
|
type ActionData,
|
|
18
19
|
type InvokeParams,
|
|
19
20
|
type Node,
|
|
20
21
|
type NodeArg,
|
|
22
|
+
type ReadableGraph,
|
|
21
23
|
isGraphNode,
|
|
22
24
|
} from '@dxos/plugin-graph';
|
|
23
|
-
import {
|
|
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
|
},
|
|
@@ -374,15 +357,36 @@ export const createStaticSchemaNode = ({ schema, space }: { schema: Type.Obj.Any
|
|
|
374
357
|
export const createStaticSchemaActions = ({
|
|
375
358
|
schema,
|
|
376
359
|
space,
|
|
360
|
+
dispatch,
|
|
377
361
|
deletable,
|
|
378
362
|
}: {
|
|
379
363
|
schema: Type.Obj.Any;
|
|
380
364
|
space: Space;
|
|
365
|
+
dispatch: PromiseIntentDispatcher;
|
|
381
366
|
deletable: boolean;
|
|
382
367
|
}) => {
|
|
383
368
|
const getId = (id: string) => `${space.id}/${Type.getTypename(schema)}/${id}`;
|
|
384
369
|
|
|
385
370
|
const actions: NodeArg<ActionData>[] = [
|
|
371
|
+
{
|
|
372
|
+
id: getId(SpaceAction.AddObject._tag),
|
|
373
|
+
type: ACTION_TYPE,
|
|
374
|
+
data: async () => {
|
|
375
|
+
await dispatch(
|
|
376
|
+
createIntent(SpaceAction.OpenCreateObject, {
|
|
377
|
+
target: space,
|
|
378
|
+
views: true,
|
|
379
|
+
initialFormValues: { typename: Type.getTypename(schema) },
|
|
380
|
+
}),
|
|
381
|
+
);
|
|
382
|
+
},
|
|
383
|
+
properties: {
|
|
384
|
+
label: ['add view to schema label', { ns: meta.id }],
|
|
385
|
+
icon: 'ph--plus--regular',
|
|
386
|
+
disposition: 'list-item-primary',
|
|
387
|
+
testId: 'spacePlugin.addViewToSchema',
|
|
388
|
+
},
|
|
389
|
+
},
|
|
386
390
|
{
|
|
387
391
|
id: getId(SpaceAction.RenameObject._tag),
|
|
388
392
|
type: ACTION_TYPE,
|
|
@@ -390,7 +394,7 @@ export const createStaticSchemaActions = ({
|
|
|
390
394
|
throw new Error('Not implemented');
|
|
391
395
|
},
|
|
392
396
|
properties: {
|
|
393
|
-
label: ['rename object label', { ns: Type.getTypename(
|
|
397
|
+
label: ['rename object label', { ns: Type.getTypename(Type.PersistentType) }],
|
|
394
398
|
icon: 'ph--pencil-simple-line--regular',
|
|
395
399
|
disabled: true,
|
|
396
400
|
disposition: 'list-item',
|
|
@@ -409,13 +413,37 @@ export const createStaticSchemaActions = ({
|
|
|
409
413
|
}
|
|
410
414
|
},
|
|
411
415
|
properties: {
|
|
412
|
-
label: ['delete object label', { ns: Type.getTypename(
|
|
416
|
+
label: ['delete object label', { ns: Type.getTypename(Type.PersistentType) }],
|
|
413
417
|
icon: 'ph--trash--regular',
|
|
414
418
|
disposition: 'list-item',
|
|
415
419
|
disabled: !deletable,
|
|
416
420
|
testId: 'spacePlugin.deleteObject',
|
|
417
421
|
},
|
|
418
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
|
+
},
|
|
419
447
|
];
|
|
420
448
|
|
|
421
449
|
return actions;
|
|
@@ -424,47 +452,75 @@ export const createStaticSchemaActions = ({
|
|
|
424
452
|
export const createObjectNode = ({
|
|
425
453
|
space,
|
|
426
454
|
object,
|
|
455
|
+
disposition,
|
|
427
456
|
droppable = true,
|
|
428
457
|
navigable = false,
|
|
458
|
+
managedCollectionChild = false,
|
|
429
459
|
resolve,
|
|
430
460
|
}: {
|
|
431
461
|
space: Space;
|
|
432
462
|
object: Obj.Any;
|
|
463
|
+
disposition?: string;
|
|
433
464
|
droppable?: boolean;
|
|
434
465
|
navigable?: boolean;
|
|
466
|
+
managedCollectionChild?: boolean;
|
|
435
467
|
resolve: (typename: string) => Record<string, any>;
|
|
436
468
|
}) => {
|
|
437
469
|
const type = Obj.getTypename(object);
|
|
438
470
|
if (!type) {
|
|
439
|
-
return
|
|
471
|
+
return null;
|
|
440
472
|
}
|
|
441
473
|
|
|
442
474
|
const metadata = resolve(type);
|
|
443
|
-
const partials = Obj.instanceOf(
|
|
475
|
+
const partials = Obj.instanceOf(Collection.Collection, object)
|
|
444
476
|
? getCollectionGraphNodePartials({ collection: object, space, resolve })
|
|
445
|
-
: Obj.instanceOf(
|
|
446
|
-
?
|
|
447
|
-
: Obj.instanceOf(
|
|
477
|
+
: Obj.instanceOf(Collection.Managed, object)
|
|
478
|
+
? getSystemCollectionNodePartials({ collection: object, space, resolve })
|
|
479
|
+
: Obj.instanceOf(Type.PersistentType, object)
|
|
448
480
|
? getSchemaGraphNodePartials()
|
|
449
|
-
:
|
|
450
|
-
? getViewGraphNodePartials({ view: object, resolve })
|
|
451
|
-
: metadata.graphProps;
|
|
481
|
+
: metadata.graphProps;
|
|
452
482
|
|
|
453
|
-
|
|
483
|
+
// TODO(wittjosiah): Obj.getLabel isn't triggering reactivity in some cases.
|
|
484
|
+
// e.g., create new collection with no name and rename it.
|
|
485
|
+
const label = (object as any).name ||
|
|
486
|
+
Obj.getLabel(object) ||
|
|
454
487
|
// TODO(wittjosiah): Remove metadata labels.
|
|
455
488
|
metadata.label?.(object) || ['object name placeholder', { ns: type, default: 'New item' }];
|
|
456
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
|
+
|
|
457
496
|
return {
|
|
458
|
-
id:
|
|
497
|
+
id: Obj.getDXN(object).toString(),
|
|
459
498
|
type,
|
|
460
499
|
cacheable: ['label', 'icon', 'role'],
|
|
461
500
|
data: object,
|
|
462
501
|
properties: {
|
|
463
502
|
label,
|
|
464
503
|
icon: metadata.icon ?? 'ph--placeholder--regular',
|
|
504
|
+
iconHue: metadata.iconHue,
|
|
505
|
+
disposition,
|
|
465
506
|
testId: 'spacePlugin.object',
|
|
466
507
|
persistenceClass: 'echo',
|
|
467
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
|
+
},
|
|
468
524
|
canDrop: (source: TreeData) => {
|
|
469
525
|
return droppable && isGraphNode(source.item) && Obj.isObject(source.item.data);
|
|
470
526
|
},
|
|
@@ -477,14 +533,14 @@ export const constructObjectActions = ({
|
|
|
477
533
|
object,
|
|
478
534
|
graph,
|
|
479
535
|
dispatch,
|
|
480
|
-
|
|
536
|
+
resolve,
|
|
481
537
|
deletable = true,
|
|
482
538
|
navigable = false,
|
|
483
539
|
}: {
|
|
484
540
|
object: Obj.Any;
|
|
485
541
|
graph: ReadableGraph;
|
|
486
542
|
dispatch: PromiseIntentDispatcher;
|
|
487
|
-
|
|
543
|
+
resolve: (typename: string) => Record<string, any>;
|
|
488
544
|
deletable?: boolean;
|
|
489
545
|
navigable?: boolean;
|
|
490
546
|
}) => {
|
|
@@ -493,15 +549,15 @@ export const constructObjectActions = ({
|
|
|
493
549
|
const typename = Obj.getTypename(object);
|
|
494
550
|
invariant(typename, 'Object has no typename');
|
|
495
551
|
|
|
496
|
-
const getId = (id: string) => `${id}/${
|
|
552
|
+
const getId = (id: string) => `${id}/${Obj.getDXN(object).toString()}`;
|
|
497
553
|
|
|
498
|
-
const
|
|
499
|
-
const
|
|
500
|
-
|
|
501
|
-
|
|
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;
|
|
502
558
|
|
|
503
559
|
const actions: NodeArg<ActionData>[] = [
|
|
504
|
-
...(Obj.instanceOf(
|
|
560
|
+
...(Obj.instanceOf(Collection.Collection, object)
|
|
505
561
|
? [
|
|
506
562
|
{
|
|
507
563
|
id: getId(SpaceAction.OpenCreateObject._tag),
|
|
@@ -510,7 +566,7 @@ export const constructObjectActions = ({
|
|
|
510
566
|
await dispatch(createIntent(SpaceAction.OpenCreateObject, { target: object }));
|
|
511
567
|
},
|
|
512
568
|
properties: {
|
|
513
|
-
label: ['create object in collection label', { ns:
|
|
569
|
+
label: ['create object in collection label', { ns: meta.id }],
|
|
514
570
|
icon: 'ph--plus--regular',
|
|
515
571
|
disposition: 'list-item-primary',
|
|
516
572
|
testId: 'spacePlugin.createObject',
|
|
@@ -518,23 +574,70 @@ export const constructObjectActions = ({
|
|
|
518
574
|
},
|
|
519
575
|
]
|
|
520
576
|
: []),
|
|
521
|
-
...(
|
|
577
|
+
...(Obj.instanceOf(Type.PersistentType, object)
|
|
578
|
+
? [
|
|
579
|
+
{
|
|
580
|
+
id: getId(SpaceAction.AddObject._tag),
|
|
581
|
+
type: ACTION_TYPE,
|
|
582
|
+
data: async () => {
|
|
583
|
+
await dispatch(
|
|
584
|
+
createIntent(SpaceAction.OpenCreateObject, {
|
|
585
|
+
target: space,
|
|
586
|
+
views: true,
|
|
587
|
+
initialFormValues: { typename: object.typename },
|
|
588
|
+
}),
|
|
589
|
+
);
|
|
590
|
+
},
|
|
591
|
+
properties: {
|
|
592
|
+
label: ['add view to schema label', { ns: meta.id }],
|
|
593
|
+
icon: 'ph--plus--regular',
|
|
594
|
+
disposition: 'list-item-primary',
|
|
595
|
+
testId: 'spacePlugin.addViewToSchema',
|
|
596
|
+
},
|
|
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
|
+
},
|
|
622
|
+
]
|
|
623
|
+
: []),
|
|
624
|
+
...(createObjectIntent
|
|
522
625
|
? [
|
|
523
626
|
{
|
|
524
627
|
id: getId(SpaceAction.OpenCreateObject._tag),
|
|
525
628
|
type: ACTION_TYPE,
|
|
526
629
|
data: async () => {
|
|
527
|
-
if (
|
|
630
|
+
if (inputSchema) {
|
|
528
631
|
await dispatch(
|
|
529
632
|
createIntent(SpaceAction.OpenCreateObject, {
|
|
530
633
|
target: space,
|
|
531
|
-
typename:
|
|
634
|
+
typename: managedCollection ? managedCollection.key : undefined,
|
|
532
635
|
}),
|
|
533
636
|
);
|
|
534
637
|
} else {
|
|
535
638
|
await dispatch(
|
|
536
|
-
pipe(
|
|
537
|
-
|
|
639
|
+
Function.pipe(
|
|
640
|
+
createObjectIntent({}, { space }),
|
|
538
641
|
chain(SpaceAction.AddObject, { target: space, hidden: true }),
|
|
539
642
|
chain(LayoutAction.Open, { part: 'main' }),
|
|
540
643
|
),
|
|
@@ -542,7 +645,7 @@ export const constructObjectActions = ({
|
|
|
542
645
|
}
|
|
543
646
|
},
|
|
544
647
|
properties: {
|
|
545
|
-
label: ['create object in
|
|
648
|
+
label: ['create object in system collection label', { ns: meta.id }],
|
|
546
649
|
icon: 'ph--plus--regular',
|
|
547
650
|
disposition: 'list-item-primary',
|
|
548
651
|
testId: 'spacePlugin.createObject',
|
|
@@ -550,56 +653,60 @@ export const constructObjectActions = ({
|
|
|
550
653
|
},
|
|
551
654
|
]
|
|
552
655
|
: []),
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
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
|
+
]),
|
|
589
696
|
...(navigable ||
|
|
590
|
-
(!Obj.instanceOf(
|
|
591
|
-
!Obj.instanceOf(
|
|
592
|
-
!Obj.instanceOf(
|
|
697
|
+
(!Obj.instanceOf(Collection.Collection, object) &&
|
|
698
|
+
!Obj.instanceOf(Collection.Managed, object) &&
|
|
699
|
+
!Obj.instanceOf(Type.PersistentType, object))
|
|
593
700
|
? [
|
|
594
701
|
{
|
|
595
702
|
id: getId('copy-link'),
|
|
596
703
|
type: ACTION_TYPE,
|
|
597
704
|
data: async () => {
|
|
598
|
-
const url = `${window.location.origin}/${space.id}/${
|
|
705
|
+
const url = `${window.location.origin}/${space.id}/${Obj.getDXN(object).toString()}`;
|
|
599
706
|
await navigator.clipboard.writeText(url);
|
|
600
707
|
},
|
|
601
708
|
properties: {
|
|
602
|
-
label: ['copy link label', { ns:
|
|
709
|
+
label: ['copy link label', { ns: meta.id }],
|
|
603
710
|
icon: 'ph--link--regular',
|
|
604
711
|
disposition: 'list-item',
|
|
605
712
|
testId: 'spacePlugin.copyLink',
|
|
@@ -612,10 +719,12 @@ export const constructObjectActions = ({
|
|
|
612
719
|
id: getId(LayoutAction.Expose._tag),
|
|
613
720
|
type: ACTION_TYPE,
|
|
614
721
|
data: async () => {
|
|
615
|
-
await dispatch(
|
|
722
|
+
await dispatch(
|
|
723
|
+
createIntent(LayoutAction.Expose, { part: 'navigation', subject: Obj.getDXN(object).toString() }),
|
|
724
|
+
);
|
|
616
725
|
},
|
|
617
726
|
properties: {
|
|
618
|
-
label: ['expose object label', { ns:
|
|
727
|
+
label: ['expose object label', { ns: meta.id }],
|
|
619
728
|
icon: 'ph--eye--regular',
|
|
620
729
|
disposition: 'heading-list-item',
|
|
621
730
|
testId: 'spacePlugin.exposeObject',
|
|
@@ -626,6 +735,20 @@ export const constructObjectActions = ({
|
|
|
626
735
|
return actions;
|
|
627
736
|
};
|
|
628
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
|
+
|
|
629
752
|
/**
|
|
630
753
|
* @deprecated This is a temporary solution.
|
|
631
754
|
*/
|
|
@@ -654,10 +777,10 @@ export const getNestedObjects = async (
|
|
|
654
777
|
*/
|
|
655
778
|
// TODO(burdon): Remove.
|
|
656
779
|
export const cloneObject = async (
|
|
657
|
-
object:
|
|
780
|
+
object: Obj.Any,
|
|
658
781
|
resolve: (typename: string) => Record<string, any>,
|
|
659
782
|
newSpace: Space,
|
|
660
|
-
): Promise<
|
|
783
|
+
): Promise<Obj.Any> => {
|
|
661
784
|
const schema = Obj.getSchema(object);
|
|
662
785
|
const typename = schema ? (Type.getTypename(schema) ?? EXPANDO_TYPENAME) : EXPANDO_TYPENAME;
|
|
663
786
|
const metadata = resolve(typename);
|