@dxos/plugin-space 0.8.4-main.2e9d522 → 0.8.4-main.3c1ae3b
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/ObjectCardStack-TE7AWPMH.mjs +144 -0
- package/dist/lib/browser/ObjectCardStack-TE7AWPMH.mjs.map +7 -0
- package/dist/lib/browser/ObjectDetails-666IBRHE.mjs +144 -0
- package/dist/lib/browser/ObjectDetails-666IBRHE.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-USKWFIDK.mjs +551 -0
- package/dist/lib/browser/app-graph-builder-USKWFIDK.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-H6AW7KGS.mjs → app-graph-serializer-SXIQ425K.mjs} +19 -19
- package/dist/lib/browser/app-graph-serializer-SXIQ425K.mjs.map +7 -0
- package/dist/lib/browser/{chunk-VLBRSGJ2.mjs → chunk-5CSSKOWR.mjs} +42 -16
- package/dist/lib/browser/chunk-5CSSKOWR.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-E4BEMEZ3.mjs +399 -0
- package/dist/lib/browser/chunk-E4BEMEZ3.mjs.map +7 -0
- package/dist/lib/browser/{chunk-XUYKJUU7.mjs → chunk-IJCMB5B5.mjs} +269 -145
- package/dist/lib/browser/chunk-IJCMB5B5.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/{chunk-V7MJSSBQ.mjs → chunk-XKQCDLXX.mjs} +734 -615
- package/dist/lib/browser/chunk-XKQCDLXX.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 +92 -139
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-TIXVDYN7.mjs → intent-resolver-QEIM7NQT.mjs} +118 -109
- package/dist/lib/browser/intent-resolver-QEIM7NQT.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/react-root-T6ZETLD2.mjs +30 -0
- package/dist/lib/browser/react-root-T6ZETLD2.mjs.map +7 -0
- package/dist/lib/browser/{react-surface-TPNLWJJH.mjs → react-surface-MLN5BZ2G.mjs} +120 -120
- package/dist/lib/browser/react-surface-MLN5BZ2G.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-EGTCHS7U.mjs} +5 -5
- package/dist/lib/browser/{settings-4IMP5RYT.mjs.map → settings-EGTCHS7U.mjs.map} +1 -1
- package/dist/lib/browser/{spaces-ready-TOPG6IV4.mjs → spaces-ready-YS4BBZXW.mjs} +29 -20
- package/dist/lib/browser/spaces-ready-YS4BBZXW.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/ObjectCardStack-AAKMAQ6T.mjs +145 -0
- package/dist/lib/node-esm/ObjectCardStack-AAKMAQ6T.mjs.map +7 -0
- package/dist/lib/node-esm/ObjectDetails-TZ5YKXGN.mjs +145 -0
- package/dist/lib/node-esm/ObjectDetails-TZ5YKXGN.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-QRQ5EQLB.mjs +552 -0
- package/dist/lib/node-esm/app-graph-builder-QRQ5EQLB.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-2ICUGQQT.mjs → app-graph-serializer-P2X4W7LI.mjs} +19 -19
- package/dist/lib/node-esm/app-graph-serializer-P2X4W7LI.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-4AOMYKDE.mjs → chunk-3D4NGZPW.mjs} +269 -145
- package/dist/lib/node-esm/chunk-3D4NGZPW.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-QQQE2ZCX.mjs +400 -0
- package/dist/lib/node-esm/chunk-QQQE2ZCX.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-SSLBYZEY.mjs → chunk-UMZ7G6G4.mjs} +41 -16
- package/dist/lib/node-esm/chunk-UMZ7G6G4.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-6X5DLJM5.mjs → chunk-XD532BVR.mjs} +734 -615
- package/dist/lib/node-esm/chunk-XD532BVR.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 +92 -139
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-MHGHRGDT.mjs → intent-resolver-ZWCBVABN.mjs} +118 -109
- package/dist/lib/node-esm/intent-resolver-ZWCBVABN.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-KW3TGJGY.mjs → react-root-SKB4UJ4K.mjs} +13 -12
- package/dist/lib/node-esm/react-root-SKB4UJ4K.mjs.map +7 -0
- package/dist/lib/node-esm/{react-surface-UUIUUD6P.mjs → react-surface-BVZGNSBB.mjs} +120 -120
- package/dist/lib/node-esm/react-surface-BVZGNSBB.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-N3F6JCIR.mjs} +5 -5
- package/dist/lib/node-esm/{settings-SAOBPND3.mjs.map → settings-N3F6JCIR.mjs.map} +1 -1
- package/dist/lib/node-esm/{spaces-ready-HIUKNDZK.mjs → spaces-ready-U2K5P4LB.mjs} +29 -20
- package/dist/lib/node-esm/spaces-ready-U2K5P4LB.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/ObjectCardStack/ObjectCardStack.d.ts +8 -0
- package/dist/types/src/components/ObjectCardStack/ObjectCardStack.d.ts.map +1 -0
- package/dist/types/src/components/ObjectCardStack/ObjectForm.d.ts +9 -0
- package/dist/types/src/components/ObjectCardStack/ObjectForm.d.ts.map +1 -0
- package/dist/types/src/components/ObjectCardStack/index.d.ts +3 -0
- package/dist/types/src/components/ObjectCardStack/index.d.ts.map +1 -0
- package/dist/types/src/components/{ObjectSettings → ObjectDetails}/BaseObjectSettings.d.ts +2 -2
- package/dist/types/src/components/ObjectDetails/BaseObjectSettings.d.ts.map +1 -0
- package/dist/types/src/components/ObjectDetails/BaseObjectSettings.stories.d.ts +1424 -0
- package/dist/types/src/components/ObjectDetails/BaseObjectSettings.stories.d.ts.map +1 -0
- package/dist/types/src/components/ObjectDetails/ForeignKeys.d.ts +8 -0
- package/dist/types/src/components/ObjectDetails/ForeignKeys.d.ts.map +1 -0
- package/dist/types/src/components/ObjectDetails/ObjectDetails.d.ts +8 -0
- package/dist/types/src/components/ObjectDetails/ObjectDetails.d.ts.map +1 -0
- package/dist/types/src/components/ObjectDetails/index.d.ts +3 -0
- package/dist/types/src/components/ObjectDetails/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/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 +1 -1
- 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 -12
- 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 +7 -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 +2 -8
- 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 +22 -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 +96 -157
- 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 +70 -59
- package/src/SpacePlugin.ts +182 -222
- package/src/capabilities/app-graph-builder.ts +271 -246
- 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 +92 -81
- package/src/capabilities/react-root.tsx +6 -4
- package/src/capabilities/react-surface.tsx +127 -155
- package/src/capabilities/repair.ts +57 -0
- package/src/capabilities/spaces-ready.ts +38 -17
- 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 +65 -43
- package/src/components/CreateDialog/CreateSpaceDialog.tsx +45 -22
- 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/ObjectCardStack/ObjectCardStack.tsx +64 -0
- package/src/components/ObjectCardStack/ObjectForm.tsx +90 -0
- package/src/components/ObjectCardStack/index.ts +7 -0
- package/src/components/ObjectDetails/BaseObjectSettings.stories.tsx +63 -0
- package/src/components/ObjectDetails/BaseObjectSettings.tsx +118 -0
- package/src/components/{ObjectSettings → ObjectDetails}/ForeignKeys.tsx +8 -8
- package/src/components/ObjectDetails/ObjectDetails.tsx +35 -0
- package/src/components/ObjectDetails/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/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 +190 -155
- 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 +56 -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 +152 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useActiveSpace.ts +3 -2
- package/src/hooks/useInputSurfaceLookup.tsx +9 -13
- package/src/hooks/usePath.ts +1 -1
- package/src/hooks/useTypeOptions.ts +25 -0
- package/src/index.ts +1 -0
- package/src/meta.ts +6 -3
- package/src/translations.ts +68 -58
- package/src/types/form.ts +69 -0
- package/src/types/index.ts +1 -0
- package/src/types/types.ts +51 -52
- package/src/util.tsx +269 -147
- 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-7CZZJS3S.mjs +0 -479
- package/dist/lib/browser/app-graph-builder-7CZZJS3S.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-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-V7MJSSBQ.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-TIXVDYN7.mjs.map +0 -7
- package/dist/lib/browser/react-root-N2J7TDRX.mjs +0 -29
- package/dist/lib/browser/react-root-N2J7TDRX.mjs.map +0 -7
- package/dist/lib/browser/react-surface-TPNLWJJH.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-KGIGWC72.mjs +0 -480
- package/dist/lib/node-esm/app-graph-builder-KGIGWC72.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-serializer-2ICUGQQT.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-6X5DLJM5.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-MHGHRGDT.mjs.map +0 -7
- package/dist/lib/node-esm/react-root-KW3TGJGY.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-UUIUUD6P.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/ObjectSettings/AdvancedObjectSettings.d.ts +0 -7
- package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +0 -1
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +0 -1
- package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +0 -8
- package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +0 -1
- package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts +0 -8
- package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +0 -1
- package/dist/types/src/components/ObjectSettings/index.d.ts +0 -2
- package/dist/types/src/components/ObjectSettings/index.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/ObjectSettings/AdvancedObjectSettings.tsx +0 -80
- package/src/components/ObjectSettings/BaseObjectSettings.tsx +0 -47
- package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +0 -36
- package/src/components/ObjectSettings/index.ts +0 -5
- package/src/components/PersistenceStatus.tsx +0 -83
package/src/util.tsx
CHANGED
|
@@ -2,48 +2,51 @@
|
|
|
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 Entity, Filter, Obj, Query, type QueryResult, 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';
|
|
29
|
+
import { createFilename } from '@dxos/util';
|
|
27
30
|
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
31
|
+
import { meta } from './meta';
|
|
32
|
+
import { SPACE_TYPE, SpaceAction } from './types';
|
|
30
33
|
|
|
31
|
-
export const SPACES = `${
|
|
32
|
-
export const COMPOSER_SPACE_LOCK =
|
|
34
|
+
export const SPACES = `${meta.id}-spaces`;
|
|
35
|
+
export const COMPOSER_SPACE_LOCK = `${meta.id}/lock`;
|
|
33
36
|
// TODO(wittjosiah): Remove.
|
|
34
37
|
export const SHARED = 'shared-spaces';
|
|
35
38
|
|
|
36
39
|
/**
|
|
37
|
-
* Convert a query result to an
|
|
40
|
+
* Convert a query result to an Atom value of the objects.
|
|
38
41
|
*/
|
|
39
|
-
export const
|
|
40
|
-
return
|
|
42
|
+
export const atomFromQuery = <T extends Entity.Unknown>(query: QueryResult.QueryResult<T>): Atom.Atom<T[]> => {
|
|
43
|
+
return Atom.make((get) => {
|
|
41
44
|
const unsubscribe = query.subscribe((result) => {
|
|
42
|
-
get.setSelf(result.
|
|
45
|
+
get.setSelf(result.results);
|
|
43
46
|
});
|
|
44
47
|
|
|
45
48
|
get.addFinalizer(() => unsubscribe());
|
|
46
|
-
return query.
|
|
49
|
+
return query.results;
|
|
47
50
|
});
|
|
48
51
|
};
|
|
49
52
|
|
|
@@ -53,12 +56,12 @@ export const getSpaceDisplayName = (
|
|
|
53
56
|
{ personal, namesCache = {} }: { personal?: boolean; namesCache?: Record<string, string> } = {},
|
|
54
57
|
): string | [string, { ns: string }] => {
|
|
55
58
|
return space.state.get() === SpaceState.SPACE_READY && (space.properties.name?.length ?? 0) > 0
|
|
56
|
-
? space.properties.name
|
|
59
|
+
? space.properties.name!
|
|
57
60
|
: namesCache[space.id]
|
|
58
61
|
? namesCache[space.id]
|
|
59
62
|
: personal
|
|
60
|
-
? ['personal space label', { ns:
|
|
61
|
-
: ['unnamed space label', { ns:
|
|
63
|
+
? ['personal space label', { ns: meta.id }]
|
|
64
|
+
: ['unnamed space label', { ns: meta.id }];
|
|
62
65
|
};
|
|
63
66
|
|
|
64
67
|
const getCollectionGraphNodePartials = ({
|
|
@@ -66,7 +69,7 @@ const getCollectionGraphNodePartials = ({
|
|
|
66
69
|
space,
|
|
67
70
|
resolve,
|
|
68
71
|
}: {
|
|
69
|
-
collection:
|
|
72
|
+
collection: Collection.Collection;
|
|
70
73
|
space: Space;
|
|
71
74
|
resolve: (typename: string) => Record<string, any>;
|
|
72
75
|
}) => {
|
|
@@ -136,33 +139,23 @@ const getCollectionGraphNodePartials = ({
|
|
|
136
139
|
};
|
|
137
140
|
};
|
|
138
141
|
|
|
139
|
-
const
|
|
142
|
+
const getSystemCollectionNodePartials = ({
|
|
140
143
|
collection,
|
|
141
144
|
space,
|
|
142
145
|
resolve,
|
|
143
146
|
}: {
|
|
144
|
-
collection:
|
|
147
|
+
collection: Collection.Managed;
|
|
145
148
|
space: Space;
|
|
146
149
|
resolve: (typename: string) => Record<string, any>;
|
|
147
150
|
}) => {
|
|
151
|
+
const metadata = resolve(collection.key);
|
|
148
152
|
return {
|
|
149
|
-
|
|
153
|
+
label: ['typename label', { ns: collection.key, count: 2 }],
|
|
154
|
+
icon: metadata.icon,
|
|
155
|
+
iconHue: metadata.iconHue,
|
|
150
156
|
acceptPersistenceClass: new Set(['echo']),
|
|
151
157
|
acceptPersistenceKey: new Set([space.id]),
|
|
152
158
|
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
159
|
};
|
|
167
160
|
};
|
|
168
161
|
|
|
@@ -173,24 +166,6 @@ const getSchemaGraphNodePartials = () => {
|
|
|
173
166
|
};
|
|
174
167
|
};
|
|
175
168
|
|
|
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
169
|
const checkPendingMigration = (space: Space) => {
|
|
195
170
|
return (
|
|
196
171
|
space.state.get() === SpaceState.SPACE_REQUIRES_MIGRATION ||
|
|
@@ -215,9 +190,9 @@ export const constructSpaceNode = ({
|
|
|
215
190
|
}) => {
|
|
216
191
|
const hasPendingMigration = checkPendingMigration(space);
|
|
217
192
|
const collection =
|
|
218
|
-
space.state.get() === SpaceState.SPACE_READY && space.properties[
|
|
193
|
+
space.state.get() === SpaceState.SPACE_READY && space.properties[Collection.Collection.typename]?.target;
|
|
219
194
|
const partials =
|
|
220
|
-
space.state.get() === SpaceState.SPACE_READY && Obj.instanceOf(
|
|
195
|
+
space.state.get() === SpaceState.SPACE_READY && Obj.instanceOf(Collection.Collection, collection)
|
|
221
196
|
? getCollectionGraphNodePartials({ collection, space, resolve })
|
|
222
197
|
: {};
|
|
223
198
|
|
|
@@ -235,6 +210,7 @@ export const constructSpaceNode = ({
|
|
|
235
210
|
space.state.get() === SpaceState.SPACE_READY && space.properties.icon
|
|
236
211
|
? `ph--${space.properties.icon}--regular`
|
|
237
212
|
: undefined,
|
|
213
|
+
iconHue: space.state.get() === SpaceState.SPACE_READY && space.properties.iconHue,
|
|
238
214
|
disabled: !navigable || space.state.get() !== SpaceState.SPACE_READY || hasPendingMigration,
|
|
239
215
|
testId: 'spacePlugin.space',
|
|
240
216
|
canDrop: (source: TreeData) => {
|
|
@@ -245,40 +221,40 @@ export const constructSpaceNode = ({
|
|
|
245
221
|
nodes: [
|
|
246
222
|
{
|
|
247
223
|
id: `settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
|
|
248
|
-
type: `${
|
|
224
|
+
type: `${meta.id}/settings`,
|
|
249
225
|
data: null,
|
|
250
226
|
properties: {
|
|
251
|
-
label: ['settings panel label', { ns:
|
|
227
|
+
label: ['settings panel label', { ns: meta.id }],
|
|
252
228
|
icon: 'ph--faders--regular',
|
|
253
229
|
disposition: 'alternate-tree',
|
|
254
230
|
},
|
|
255
231
|
nodes: [
|
|
256
232
|
{
|
|
257
233
|
id: `properties-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
|
|
258
|
-
type: `${
|
|
259
|
-
data: `${
|
|
234
|
+
type: `${meta.id}/properties`,
|
|
235
|
+
data: `${meta.id}/properties`,
|
|
260
236
|
properties: {
|
|
261
|
-
label: ['space settings properties label', { ns:
|
|
237
|
+
label: ['space settings properties label', { ns: meta.id }],
|
|
262
238
|
icon: 'ph--sliders--regular',
|
|
263
239
|
position: 'hoist',
|
|
264
240
|
},
|
|
265
241
|
},
|
|
266
242
|
{
|
|
267
243
|
id: `members-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
|
|
268
|
-
type: `${
|
|
269
|
-
data: `${
|
|
244
|
+
type: `${meta.id}/members`,
|
|
245
|
+
data: `${meta.id}/members`,
|
|
270
246
|
properties: {
|
|
271
|
-
label: ['members panel label', { ns:
|
|
247
|
+
label: ['members panel label', { ns: meta.id }],
|
|
272
248
|
icon: 'ph--users--regular',
|
|
273
249
|
position: 'hoist',
|
|
274
250
|
},
|
|
275
251
|
},
|
|
276
252
|
{
|
|
277
253
|
id: `schema-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
|
|
278
|
-
type: `${
|
|
279
|
-
data: `${
|
|
254
|
+
type: `${meta.id}/schema`,
|
|
255
|
+
data: `${meta.id}/schema`,
|
|
280
256
|
properties: {
|
|
281
|
-
label: ['space settings schema label', { ns:
|
|
257
|
+
label: ['space settings schema label', { ns: meta.id }],
|
|
282
258
|
icon: 'ph--shapes--regular',
|
|
283
259
|
},
|
|
284
260
|
},
|
|
@@ -312,7 +288,7 @@ export const constructSpaceActions = ({
|
|
|
312
288
|
await dispatch(createIntent(SpaceAction.Migrate, { space }));
|
|
313
289
|
},
|
|
314
290
|
properties: {
|
|
315
|
-
label: ['migrate space label', { ns:
|
|
291
|
+
label: ['migrate space label', { ns: meta.id }],
|
|
316
292
|
icon: 'ph--database--regular',
|
|
317
293
|
disposition: 'list-item-primary',
|
|
318
294
|
disabled: migrating || Migrations.running(space),
|
|
@@ -329,7 +305,7 @@ export const constructSpaceActions = ({
|
|
|
329
305
|
await dispatch(createIntent(SpaceAction.OpenCreateObject, { target: space }));
|
|
330
306
|
},
|
|
331
307
|
properties: {
|
|
332
|
-
label: ['create object in space label', { ns:
|
|
308
|
+
label: ['create object in space label', { ns: meta.id }],
|
|
333
309
|
icon: 'ph--plus--regular',
|
|
334
310
|
disposition: 'item',
|
|
335
311
|
testId: 'spacePlugin.createObject',
|
|
@@ -342,7 +318,7 @@ export const constructSpaceActions = ({
|
|
|
342
318
|
await dispatch(createIntent(SpaceAction.Rename, { space, caller: params?.caller }));
|
|
343
319
|
},
|
|
344
320
|
properties: {
|
|
345
|
-
label: ['rename space label', { ns:
|
|
321
|
+
label: ['rename space label', { ns: meta.id }],
|
|
346
322
|
icon: 'ph--pencil-simple-line--regular',
|
|
347
323
|
keyBinding: {
|
|
348
324
|
macos: 'shift+F6',
|
|
@@ -356,15 +332,23 @@ export const constructSpaceActions = ({
|
|
|
356
332
|
return actions;
|
|
357
333
|
};
|
|
358
334
|
|
|
359
|
-
export const createStaticSchemaNode = ({
|
|
335
|
+
export const createStaticSchemaNode = ({
|
|
336
|
+
schema,
|
|
337
|
+
space,
|
|
338
|
+
}: {
|
|
339
|
+
schema: Schema.Schema.AnyNoContext;
|
|
340
|
+
space: Space;
|
|
341
|
+
}): Node => {
|
|
360
342
|
return {
|
|
361
343
|
id: `${space.id}/${Type.getTypename(schema)}`,
|
|
362
|
-
type: `${
|
|
344
|
+
type: `${meta.id}/static-schema`,
|
|
363
345
|
data: schema,
|
|
364
346
|
properties: {
|
|
365
|
-
label: ['typename label', { ns: Type.getTypename(schema), default: Type.getTypename(schema) }],
|
|
347
|
+
label: ['typename label', { ns: Type.getTypename(schema), count: 2, default: Type.getTypename(schema) }],
|
|
366
348
|
icon: 'ph--database--regular',
|
|
349
|
+
iconHue: 'green',
|
|
367
350
|
role: 'branch',
|
|
351
|
+
selectable: false,
|
|
368
352
|
canDrop: () => false,
|
|
369
353
|
space,
|
|
370
354
|
},
|
|
@@ -374,15 +358,36 @@ export const createStaticSchemaNode = ({ schema, space }: { schema: Type.Obj.Any
|
|
|
374
358
|
export const createStaticSchemaActions = ({
|
|
375
359
|
schema,
|
|
376
360
|
space,
|
|
361
|
+
dispatch,
|
|
377
362
|
deletable,
|
|
378
363
|
}: {
|
|
379
364
|
schema: Type.Obj.Any;
|
|
380
365
|
space: Space;
|
|
366
|
+
dispatch: PromiseIntentDispatcher;
|
|
381
367
|
deletable: boolean;
|
|
382
368
|
}) => {
|
|
383
369
|
const getId = (id: string) => `${space.id}/${Type.getTypename(schema)}/${id}`;
|
|
384
370
|
|
|
385
371
|
const actions: NodeArg<ActionData>[] = [
|
|
372
|
+
{
|
|
373
|
+
id: getId(SpaceAction.AddObject._tag),
|
|
374
|
+
type: ACTION_TYPE,
|
|
375
|
+
data: async () => {
|
|
376
|
+
await dispatch(
|
|
377
|
+
createIntent(SpaceAction.OpenCreateObject, {
|
|
378
|
+
target: space,
|
|
379
|
+
views: true,
|
|
380
|
+
initialFormValues: { typename: Type.getTypename(schema) },
|
|
381
|
+
}),
|
|
382
|
+
);
|
|
383
|
+
},
|
|
384
|
+
properties: {
|
|
385
|
+
label: ['add view to schema label', { ns: meta.id }],
|
|
386
|
+
icon: 'ph--plus--regular',
|
|
387
|
+
disposition: 'list-item-primary',
|
|
388
|
+
testId: 'spacePlugin.addViewToSchema',
|
|
389
|
+
},
|
|
390
|
+
},
|
|
386
391
|
{
|
|
387
392
|
id: getId(SpaceAction.RenameObject._tag),
|
|
388
393
|
type: ACTION_TYPE,
|
|
@@ -390,7 +395,7 @@ export const createStaticSchemaActions = ({
|
|
|
390
395
|
throw new Error('Not implemented');
|
|
391
396
|
},
|
|
392
397
|
properties: {
|
|
393
|
-
label: ['rename object label', { ns: Type.getTypename(
|
|
398
|
+
label: ['rename object label', { ns: Type.getTypename(Type.PersistentType) }],
|
|
394
399
|
icon: 'ph--pencil-simple-line--regular',
|
|
395
400
|
disabled: true,
|
|
396
401
|
disposition: 'list-item',
|
|
@@ -409,13 +414,36 @@ export const createStaticSchemaActions = ({
|
|
|
409
414
|
}
|
|
410
415
|
},
|
|
411
416
|
properties: {
|
|
412
|
-
label: ['delete object label', { ns: Type.getTypename(
|
|
417
|
+
label: ['delete object label', { ns: Type.getTypename(Type.PersistentType) }],
|
|
413
418
|
icon: 'ph--trash--regular',
|
|
414
419
|
disposition: 'list-item',
|
|
415
420
|
disabled: !deletable,
|
|
416
421
|
testId: 'spacePlugin.deleteObject',
|
|
417
422
|
},
|
|
418
423
|
},
|
|
424
|
+
{
|
|
425
|
+
id: getId(SpaceAction.Snapshot._tag),
|
|
426
|
+
type: ACTION_TYPE,
|
|
427
|
+
data: async () => {
|
|
428
|
+
const result = await dispatch(
|
|
429
|
+
createIntent(SpaceAction.Snapshot, {
|
|
430
|
+
space,
|
|
431
|
+
query: Query.select(Filter.type(schema)).ast,
|
|
432
|
+
}),
|
|
433
|
+
);
|
|
434
|
+
if (result.data?.snapshot) {
|
|
435
|
+
await downloadBlob(
|
|
436
|
+
result.data.snapshot,
|
|
437
|
+
createFilename({ parts: [space.id, Type.getTypename(schema)], ext: '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,69 @@ 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
|
+
createFilename({ parts: [space.id, object.typename], ext: 'json' }),
|
|
612
|
+
);
|
|
613
|
+
}
|
|
614
|
+
},
|
|
615
|
+
properties: {
|
|
616
|
+
label: ['snapshot by schema label', { ns: meta.id }],
|
|
617
|
+
icon: 'ph--camera--regular',
|
|
618
|
+
disposition: 'list-item',
|
|
619
|
+
},
|
|
620
|
+
},
|
|
621
|
+
]
|
|
622
|
+
: []),
|
|
623
|
+
...(createObjectIntent
|
|
522
624
|
? [
|
|
523
625
|
{
|
|
524
626
|
id: getId(SpaceAction.OpenCreateObject._tag),
|
|
525
627
|
type: ACTION_TYPE,
|
|
526
628
|
data: async () => {
|
|
527
|
-
if (
|
|
629
|
+
if (inputSchema) {
|
|
528
630
|
await dispatch(
|
|
529
631
|
createIntent(SpaceAction.OpenCreateObject, {
|
|
530
632
|
target: space,
|
|
531
|
-
typename:
|
|
633
|
+
typename: managedCollection ? managedCollection.key : undefined,
|
|
532
634
|
}),
|
|
533
635
|
);
|
|
534
636
|
} else {
|
|
535
637
|
await dispatch(
|
|
536
|
-
pipe(
|
|
537
|
-
|
|
638
|
+
Function.pipe(
|
|
639
|
+
createObjectIntent({}, { space }),
|
|
538
640
|
chain(SpaceAction.AddObject, { target: space, hidden: true }),
|
|
539
641
|
chain(LayoutAction.Open, { part: 'main' }),
|
|
540
642
|
),
|
|
@@ -542,7 +644,7 @@ export const constructObjectActions = ({
|
|
|
542
644
|
}
|
|
543
645
|
},
|
|
544
646
|
properties: {
|
|
545
|
-
label: ['create object in
|
|
647
|
+
label: ['create object in system collection label', { ns: meta.id }],
|
|
546
648
|
icon: 'ph--plus--regular',
|
|
547
649
|
disposition: 'list-item-primary',
|
|
548
650
|
testId: 'spacePlugin.createObject',
|
|
@@ -550,56 +652,60 @@ export const constructObjectActions = ({
|
|
|
550
652
|
},
|
|
551
653
|
]
|
|
552
654
|
: []),
|
|
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
|
-
|
|
655
|
+
...(managedCollection
|
|
656
|
+
? []
|
|
657
|
+
: [
|
|
658
|
+
{
|
|
659
|
+
id: getId(SpaceAction.RenameObject._tag),
|
|
660
|
+
type: ACTION_TYPE,
|
|
661
|
+
data: async (params?: InvokeParams) => {
|
|
662
|
+
await dispatch(createIntent(SpaceAction.RenameObject, { object, caller: params?.caller }));
|
|
663
|
+
},
|
|
664
|
+
properties: {
|
|
665
|
+
label: ['rename object label', { ns: typename }],
|
|
666
|
+
icon: 'ph--pencil-simple-line--regular',
|
|
667
|
+
disposition: 'list-item',
|
|
668
|
+
// TODO(wittjosiah): Not working.
|
|
669
|
+
// keyBinding: {
|
|
670
|
+
// macos: 'shift+F6',
|
|
671
|
+
// },
|
|
672
|
+
testId: 'spacePlugin.renameObject',
|
|
673
|
+
},
|
|
674
|
+
},
|
|
675
|
+
{
|
|
676
|
+
id: getId(SpaceAction.RemoveObjects._tag),
|
|
677
|
+
type: ACTION_TYPE,
|
|
678
|
+
data: async () => {
|
|
679
|
+
const collection = graph
|
|
680
|
+
.getConnections(Obj.getDXN(object).toString(), 'inbound')
|
|
681
|
+
.find(({ data }) => Obj.instanceOf(Collection.Collection, data))?.data;
|
|
682
|
+
await dispatch(createIntent(SpaceAction.RemoveObjects, { objects: [object], target: collection }));
|
|
683
|
+
},
|
|
684
|
+
properties: {
|
|
685
|
+
label: ['delete object label', { ns: typename }],
|
|
686
|
+
icon: 'ph--trash--regular',
|
|
687
|
+
disposition: 'list-item',
|
|
688
|
+
disabled: !deletable,
|
|
689
|
+
// TODO(wittjosiah): This is a browser shortcut.
|
|
690
|
+
// keyBinding: object instanceof CollectionType ? undefined : 'shift+meta+Backspace',
|
|
691
|
+
testId: 'spacePlugin.deleteObject',
|
|
692
|
+
},
|
|
693
|
+
},
|
|
694
|
+
]),
|
|
589
695
|
...(navigable ||
|
|
590
|
-
(!Obj.instanceOf(
|
|
591
|
-
!Obj.instanceOf(
|
|
592
|
-
!Obj.instanceOf(
|
|
696
|
+
(!Obj.instanceOf(Collection.Collection, object) &&
|
|
697
|
+
!Obj.instanceOf(Collection.Managed, object) &&
|
|
698
|
+
!Obj.instanceOf(Type.PersistentType, object))
|
|
593
699
|
? [
|
|
594
700
|
{
|
|
595
701
|
id: getId('copy-link'),
|
|
596
702
|
type: ACTION_TYPE,
|
|
597
703
|
data: async () => {
|
|
598
|
-
const url = `${window.location.origin}/${space.id}/${
|
|
704
|
+
const url = `${window.location.origin}/${space.id}/${Obj.getDXN(object).toString()}`;
|
|
599
705
|
await navigator.clipboard.writeText(url);
|
|
600
706
|
},
|
|
601
707
|
properties: {
|
|
602
|
-
label: ['copy link label', { ns:
|
|
708
|
+
label: ['copy link label', { ns: meta.id }],
|
|
603
709
|
icon: 'ph--link--regular',
|
|
604
710
|
disposition: 'list-item',
|
|
605
711
|
testId: 'spacePlugin.copyLink',
|
|
@@ -612,10 +718,12 @@ export const constructObjectActions = ({
|
|
|
612
718
|
id: getId(LayoutAction.Expose._tag),
|
|
613
719
|
type: ACTION_TYPE,
|
|
614
720
|
data: async () => {
|
|
615
|
-
await dispatch(
|
|
721
|
+
await dispatch(
|
|
722
|
+
createIntent(LayoutAction.Expose, { part: 'navigation', subject: Obj.getDXN(object).toString() }),
|
|
723
|
+
);
|
|
616
724
|
},
|
|
617
725
|
properties: {
|
|
618
|
-
label: ['expose object label', { ns:
|
|
726
|
+
label: ['expose object label', { ns: meta.id }],
|
|
619
727
|
icon: 'ph--eye--regular',
|
|
620
728
|
disposition: 'heading-list-item',
|
|
621
729
|
testId: 'spacePlugin.exposeObject',
|
|
@@ -626,6 +734,20 @@ export const constructObjectActions = ({
|
|
|
626
734
|
return actions;
|
|
627
735
|
};
|
|
628
736
|
|
|
737
|
+
// TODO(wittjosiah): Factor out.
|
|
738
|
+
const downloadBlob = async (blob: Blob, filename: string) => {
|
|
739
|
+
const url = URL.createObjectURL(blob);
|
|
740
|
+
const a = document.createElement('a');
|
|
741
|
+
a.href = url;
|
|
742
|
+
a.download = filename;
|
|
743
|
+
|
|
744
|
+
document.body.appendChild(a);
|
|
745
|
+
a.click();
|
|
746
|
+
|
|
747
|
+
document.body.removeChild(a);
|
|
748
|
+
URL.revokeObjectURL(url);
|
|
749
|
+
};
|
|
750
|
+
|
|
629
751
|
/**
|
|
630
752
|
* @deprecated This is a temporary solution.
|
|
631
753
|
*/
|
|
@@ -654,10 +776,10 @@ export const getNestedObjects = async (
|
|
|
654
776
|
*/
|
|
655
777
|
// TODO(burdon): Remove.
|
|
656
778
|
export const cloneObject = async (
|
|
657
|
-
object:
|
|
779
|
+
object: Obj.Any,
|
|
658
780
|
resolve: (typename: string) => Record<string, any>,
|
|
659
781
|
newSpace: Space,
|
|
660
|
-
): Promise<
|
|
782
|
+
): Promise<Obj.Any> => {
|
|
661
783
|
const schema = Obj.getSchema(object);
|
|
662
784
|
const typename = schema ? (Type.getTypename(schema) ?? EXPANDO_TYPENAME) : EXPANDO_TYPENAME;
|
|
663
785
|
const metadata = resolve(typename);
|