@dxos/plugin-space 0.8.4-main.3a94e84 → 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
|
@@ -2,38 +2,42 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
|
|
5
|
+
import { Atom } from '@effect-atom/atom-react';
|
|
6
|
+
import * as Array from 'effect/Array';
|
|
7
|
+
import * as Function from 'effect/Function';
|
|
8
|
+
import * as Option from 'effect/Option';
|
|
9
|
+
import * as Schema from 'effect/Schema';
|
|
10
|
+
|
|
11
|
+
import { Capabilities, type PluginContext, contributes, createIntent } from '@dxos/app-framework';
|
|
12
|
+
import { type Space, SpaceState, getSpace, isSpace } from '@dxos/client/echo';
|
|
13
|
+
import { DXN, type Entity, Filter, Obj, type QueryResult, Type } from '@dxos/echo';
|
|
11
14
|
import { log } from '@dxos/log';
|
|
12
15
|
import { ClientCapabilities } from '@dxos/plugin-client';
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
+
import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';
|
|
17
|
+
import { ROOT_ID, atomFromObservable, atomFromSignal, createExtension } from '@dxos/plugin-graph';
|
|
18
|
+
import { Collection, ViewAnnotation, getTypenameFromQuery } from '@dxos/schema';
|
|
16
19
|
import { isNonNullable } from '@dxos/util';
|
|
17
20
|
|
|
18
|
-
import { SpaceCapabilities } from './capabilities';
|
|
19
21
|
import { getActiveSpace } from '../hooks';
|
|
20
|
-
import {
|
|
22
|
+
import { meta } from '../meta';
|
|
21
23
|
import { SPACE_TYPE, SpaceAction, type SpaceSettingsProps } from '../types';
|
|
22
24
|
import {
|
|
25
|
+
SHARED,
|
|
26
|
+
SPACES,
|
|
27
|
+
atomFromQuery,
|
|
23
28
|
constructObjectActions,
|
|
24
29
|
constructSpaceActions,
|
|
25
30
|
constructSpaceNode,
|
|
26
31
|
createObjectNode,
|
|
27
32
|
createStaticSchemaActions,
|
|
28
33
|
createStaticSchemaNode,
|
|
29
|
-
rxFromQuery,
|
|
30
|
-
SHARED,
|
|
31
|
-
SPACES,
|
|
32
34
|
} from '../util';
|
|
33
35
|
|
|
36
|
+
import { SpaceCapabilities } from './capabilities';
|
|
37
|
+
|
|
34
38
|
export default (context: PluginContext) => {
|
|
35
|
-
// TODO(wittjosiah):
|
|
36
|
-
const resolve = (typename: string) =>
|
|
39
|
+
// TODO(wittjosiah): Using `get` and being reactive seems to cause a bug with Atom where disposed atoms are accessed.
|
|
40
|
+
const resolve = (get: Atom.Context) => (typename: string) =>
|
|
37
41
|
context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};
|
|
38
42
|
|
|
39
43
|
const spacesNode = {
|
|
@@ -41,7 +45,7 @@ export default (context: PluginContext) => {
|
|
|
41
45
|
type: SPACES,
|
|
42
46
|
cacheable: ['label', 'role'],
|
|
43
47
|
properties: {
|
|
44
|
-
label: ['spaces label', { ns:
|
|
48
|
+
label: ['spaces label', { ns: meta.id }],
|
|
45
49
|
icon: 'ph--planet--regular',
|
|
46
50
|
testId: 'spacePlugin.spaces',
|
|
47
51
|
role: 'branch',
|
|
@@ -61,9 +65,7 @@ export default (context: PluginContext) => {
|
|
|
61
65
|
nextOrder.map(({ id }) => id),
|
|
62
66
|
);
|
|
63
67
|
|
|
64
|
-
const {
|
|
65
|
-
objects: [spacesOrder],
|
|
66
|
-
} = await client.spaces.default.db.query(Filter.type(Type.Expando, { key: SHARED })).run();
|
|
68
|
+
const [spacesOrder] = await client.spaces.default.db.query(Filter.type(Type.Expando, { key: SHARED })).run();
|
|
67
69
|
if (spacesOrder) {
|
|
68
70
|
spacesOrder.order = nextOrder.map(({ id }) => id);
|
|
69
71
|
} else {
|
|
@@ -76,11 +78,11 @@ export default (context: PluginContext) => {
|
|
|
76
78
|
return contributes(Capabilities.AppGraphBuilder, [
|
|
77
79
|
// Primary actions.
|
|
78
80
|
createExtension({
|
|
79
|
-
id: `${
|
|
81
|
+
id: `${meta.id}/primary-actions`,
|
|
80
82
|
position: 'hoist',
|
|
81
83
|
actions: (node) =>
|
|
82
|
-
|
|
83
|
-
pipe(
|
|
84
|
+
Atom.make((get) =>
|
|
85
|
+
Function.pipe(
|
|
84
86
|
get(node),
|
|
85
87
|
Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
|
|
86
88
|
Option.map(() => [
|
|
@@ -91,7 +93,7 @@ export default (context: PluginContext) => {
|
|
|
91
93
|
await dispatch(createIntent(SpaceAction.OpenCreateSpace));
|
|
92
94
|
},
|
|
93
95
|
properties: {
|
|
94
|
-
label: ['create space label', { ns:
|
|
96
|
+
label: ['create space label', { ns: meta.id }],
|
|
95
97
|
icon: 'ph--plus--regular',
|
|
96
98
|
testId: 'spacePlugin.createSpace',
|
|
97
99
|
disposition: 'menu',
|
|
@@ -104,7 +106,7 @@ export default (context: PluginContext) => {
|
|
|
104
106
|
await dispatch(createIntent(SpaceAction.Join));
|
|
105
107
|
},
|
|
106
108
|
properties: {
|
|
107
|
-
label: ['join space label', { ns:
|
|
109
|
+
label: ['join space label', { ns: meta.id }],
|
|
108
110
|
icon: 'ph--sign-in--regular',
|
|
109
111
|
testId: 'spacePlugin.joinSpace',
|
|
110
112
|
disposition: 'menu',
|
|
@@ -119,7 +121,7 @@ export default (context: PluginContext) => {
|
|
|
119
121
|
await dispatch(createIntent(SpaceAction.OpenMembers, { space }));
|
|
120
122
|
},
|
|
121
123
|
properties: {
|
|
122
|
-
label: ['share space label', { ns:
|
|
124
|
+
label: ['share space label', { ns: meta.id }],
|
|
123
125
|
icon: 'ph--users--regular',
|
|
124
126
|
testId: 'spacePlugin.shareSpace',
|
|
125
127
|
keyBinding: {
|
|
@@ -137,7 +139,7 @@ export default (context: PluginContext) => {
|
|
|
137
139
|
await dispatch(createIntent(SpaceAction.OpenSettings, { space }));
|
|
138
140
|
},
|
|
139
141
|
properties: {
|
|
140
|
-
label: ['open current space settings label', { ns:
|
|
142
|
+
label: ['open current space settings label', { ns: meta.id }],
|
|
141
143
|
icon: 'ph--faders--regular',
|
|
142
144
|
keyBinding: {
|
|
143
145
|
macos: 'meta+shift+,',
|
|
@@ -153,44 +155,44 @@ export default (context: PluginContext) => {
|
|
|
153
155
|
|
|
154
156
|
// Create spaces group node.
|
|
155
157
|
createExtension({
|
|
156
|
-
id: `${
|
|
158
|
+
id: `${meta.id}/root`,
|
|
157
159
|
position: 'hoist',
|
|
158
160
|
connector: (node) =>
|
|
159
|
-
|
|
160
|
-
pipe(
|
|
161
|
+
Atom.make((get) =>
|
|
162
|
+
Function.pipe(
|
|
161
163
|
get(node),
|
|
162
164
|
Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
|
|
163
165
|
Option.map(() => [spacesNode]),
|
|
164
166
|
Option.getOrElse(() => []),
|
|
165
167
|
),
|
|
166
168
|
),
|
|
167
|
-
// resolver: ({ id }) => (id === SPACES ? spacesNode : undefined),
|
|
168
169
|
}),
|
|
169
170
|
|
|
170
171
|
// Create space nodes.
|
|
171
172
|
createExtension({
|
|
172
173
|
id: SPACES,
|
|
173
174
|
connector: (node) => {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
175
|
+
// TODO(wittjosiah): Find a simpler way to define this type.
|
|
176
|
+
let query: QueryResult.QueryResult<Schema.Schema.Type<typeof Type.Expando>> | undefined;
|
|
177
|
+
return Atom.make((get) =>
|
|
178
|
+
Function.pipe(
|
|
177
179
|
get(node),
|
|
178
180
|
Option.flatMap((node) => (node.id === SPACES ? Option.some(node) : Option.none())),
|
|
179
181
|
Option.map(() => {
|
|
180
182
|
const state = context.getCapability(SpaceCapabilities.State);
|
|
181
183
|
const client = context.getCapability(ClientCapabilities.Client);
|
|
182
|
-
const
|
|
183
|
-
const
|
|
184
|
+
const spacesAtom = atomFromObservable(client.spaces);
|
|
185
|
+
const isReadyAtom = atomFromObservable(client.spaces.isReady);
|
|
184
186
|
|
|
185
|
-
const spaces = get(
|
|
186
|
-
const isReady = get(
|
|
187
|
+
const spaces = get(spacesAtom);
|
|
188
|
+
const isReady = get(isReadyAtom);
|
|
187
189
|
|
|
188
190
|
if (!spaces || !isReady) {
|
|
189
191
|
return [];
|
|
190
192
|
}
|
|
191
193
|
|
|
192
194
|
const settings = get(context.capabilities(Capabilities.SettingsStore))[0]?.getStore<SpaceSettingsProps>(
|
|
193
|
-
|
|
195
|
+
meta.id,
|
|
194
196
|
)?.value;
|
|
195
197
|
|
|
196
198
|
// TODO(wittjosiah): During client reset, accessing default space throws.
|
|
@@ -198,9 +200,9 @@ export default (context: PluginContext) => {
|
|
|
198
200
|
if (!query) {
|
|
199
201
|
query = client.spaces.default.db.query(Filter.type(Type.Expando, { key: SHARED }));
|
|
200
202
|
}
|
|
201
|
-
const [spacesOrder] = get(
|
|
203
|
+
const [spacesOrder] = get(atomFromQuery(query));
|
|
202
204
|
return get(
|
|
203
|
-
|
|
205
|
+
atomFromSignal(() => {
|
|
204
206
|
const order: string[] = spacesOrder?.order ?? [];
|
|
205
207
|
const orderMap = new Map(order.map((id, index) => [id, index]));
|
|
206
208
|
return [
|
|
@@ -218,7 +220,7 @@ export default (context: PluginContext) => {
|
|
|
218
220
|
navigable: state.navigableCollections,
|
|
219
221
|
personal: space === client.spaces.default,
|
|
220
222
|
namesCache: state.spaceNames,
|
|
221
|
-
resolve,
|
|
223
|
+
resolve: resolve(get),
|
|
222
224
|
}),
|
|
223
225
|
);
|
|
224
226
|
}),
|
|
@@ -231,54 +233,14 @@ export default (context: PluginContext) => {
|
|
|
231
233
|
),
|
|
232
234
|
);
|
|
233
235
|
},
|
|
234
|
-
// resolver: ({ id }) => {
|
|
235
|
-
// if (id.length !== SPACE_ID_LENGTH) {
|
|
236
|
-
// return;
|
|
237
|
-
// }
|
|
238
|
-
|
|
239
|
-
// const client = context.requestCapability(ClientCapabilities.Client);
|
|
240
|
-
// const spaces = toSignal(
|
|
241
|
-
// (onChange) => client.spaces.subscribe(() => onChange()).unsubscribe,
|
|
242
|
-
// () => client.spaces.get(),
|
|
243
|
-
// );
|
|
244
|
-
|
|
245
|
-
// const isReady = toSignal(
|
|
246
|
-
// (onChange) => client.spaces.isReady.subscribe(() => onChange()).unsubscribe,
|
|
247
|
-
// () => client.spaces.isReady.get(),
|
|
248
|
-
// );
|
|
249
|
-
|
|
250
|
-
// if (!spaces || !isReady) {
|
|
251
|
-
// return;
|
|
252
|
-
// }
|
|
253
|
-
|
|
254
|
-
// const space = spaces.find((space) => space.id === id);
|
|
255
|
-
// if (!space) {
|
|
256
|
-
// return;
|
|
257
|
-
// }
|
|
258
|
-
|
|
259
|
-
// if (space.state.get() === SpaceState.SPACE_INACTIVE) {
|
|
260
|
-
// return false;
|
|
261
|
-
// } else if (space.state.get() !== SpaceState.SPACE_READY) {
|
|
262
|
-
// return undefined;
|
|
263
|
-
// } else {
|
|
264
|
-
// const state = context.requestCapability(SpaceCapabilities.State);
|
|
265
|
-
// return constructSpaceNode({
|
|
266
|
-
// space,
|
|
267
|
-
// navigable: state.navigableCollections,
|
|
268
|
-
// personal: space === client.spaces.default,
|
|
269
|
-
// namesCache: state.spaceNames,
|
|
270
|
-
// resolve,
|
|
271
|
-
// });
|
|
272
|
-
// }
|
|
273
|
-
// },
|
|
274
236
|
}),
|
|
275
237
|
|
|
276
238
|
// Create space actions.
|
|
277
239
|
createExtension({
|
|
278
|
-
id: `${
|
|
240
|
+
id: `${meta.id}/actions`,
|
|
279
241
|
actions: (node) =>
|
|
280
|
-
|
|
281
|
-
pipe(
|
|
242
|
+
Atom.make((get) =>
|
|
243
|
+
Function.pipe(
|
|
282
244
|
get(node),
|
|
283
245
|
Option.flatMap((node) =>
|
|
284
246
|
node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),
|
|
@@ -307,24 +269,24 @@ export default (context: PluginContext) => {
|
|
|
307
269
|
|
|
308
270
|
// Create nodes for objects in the root collection of a space.
|
|
309
271
|
createExtension({
|
|
310
|
-
id: `${
|
|
272
|
+
id: `${meta.id}/root-collection`,
|
|
311
273
|
connector: (node) =>
|
|
312
|
-
|
|
313
|
-
pipe(
|
|
274
|
+
Atom.make((get) =>
|
|
275
|
+
Function.pipe(
|
|
314
276
|
get(node),
|
|
315
277
|
Option.flatMap((node) =>
|
|
316
278
|
node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),
|
|
317
279
|
),
|
|
318
280
|
Option.map((space) => {
|
|
319
281
|
const state = context.getCapability(SpaceCapabilities.State);
|
|
320
|
-
const spaceState = get(
|
|
282
|
+
const spaceState = get(atomFromObservable(space.state));
|
|
321
283
|
if (spaceState !== SpaceState.SPACE_READY) {
|
|
322
284
|
return [];
|
|
323
285
|
}
|
|
324
286
|
|
|
325
287
|
const collection = get(
|
|
326
|
-
|
|
327
|
-
() => space.properties[
|
|
288
|
+
atomFromSignal(
|
|
289
|
+
() => space.properties[Collection.Collection.typename]?.target as Collection.Collection | undefined,
|
|
328
290
|
),
|
|
329
291
|
);
|
|
330
292
|
if (!collection) {
|
|
@@ -332,8 +294,8 @@ export default (context: PluginContext) => {
|
|
|
332
294
|
}
|
|
333
295
|
|
|
334
296
|
return get(
|
|
335
|
-
|
|
336
|
-
pipe(
|
|
297
|
+
atomFromSignal(() =>
|
|
298
|
+
Function.pipe(
|
|
337
299
|
collection.objects,
|
|
338
300
|
Array.map((object) => object.target),
|
|
339
301
|
Array.filter(isNonNullable),
|
|
@@ -341,7 +303,7 @@ export default (context: PluginContext) => {
|
|
|
341
303
|
createObjectNode({
|
|
342
304
|
space,
|
|
343
305
|
object,
|
|
344
|
-
resolve,
|
|
306
|
+
resolve: resolve(get),
|
|
345
307
|
navigable: state.navigableCollections,
|
|
346
308
|
}),
|
|
347
309
|
),
|
|
@@ -355,29 +317,35 @@ export default (context: PluginContext) => {
|
|
|
355
317
|
),
|
|
356
318
|
}),
|
|
357
319
|
|
|
358
|
-
// Create nodes for objects in a collection or by its
|
|
320
|
+
// Create nodes for objects in a collection or by its DXN.
|
|
359
321
|
createExtension({
|
|
360
|
-
id: `${
|
|
322
|
+
id: `${meta.id}/objects`,
|
|
361
323
|
connector: (node) =>
|
|
362
|
-
|
|
363
|
-
pipe(
|
|
324
|
+
Atom.make((get) =>
|
|
325
|
+
Function.pipe(
|
|
364
326
|
get(node),
|
|
365
327
|
Option.flatMap((node) =>
|
|
366
|
-
Obj.instanceOf(
|
|
328
|
+
Obj.instanceOf(Collection.Collection, node.data) ? Option.some(node.data) : Option.none(),
|
|
367
329
|
),
|
|
368
330
|
Option.map((collection) => {
|
|
369
331
|
const state = context.getCapability(SpaceCapabilities.State);
|
|
370
332
|
const space = getSpace(collection);
|
|
371
333
|
|
|
372
334
|
return get(
|
|
373
|
-
|
|
374
|
-
pipe(
|
|
335
|
+
atomFromSignal(() =>
|
|
336
|
+
Function.pipe(
|
|
375
337
|
collection.objects,
|
|
376
338
|
Array.map((object) => object.target),
|
|
377
339
|
Array.filter(isNonNullable),
|
|
378
340
|
Array.map(
|
|
379
341
|
(object) =>
|
|
380
|
-
space &&
|
|
342
|
+
space &&
|
|
343
|
+
createObjectNode({
|
|
344
|
+
object,
|
|
345
|
+
space,
|
|
346
|
+
resolve: resolve(get),
|
|
347
|
+
navigable: state.navigableCollections,
|
|
348
|
+
}),
|
|
381
349
|
),
|
|
382
350
|
Array.filter(isNonNullable),
|
|
383
351
|
),
|
|
@@ -387,110 +355,91 @@ export default (context: PluginContext) => {
|
|
|
387
355
|
Option.getOrElse(() => []),
|
|
388
356
|
),
|
|
389
357
|
),
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
// return false;
|
|
422
|
-
// } else {
|
|
423
|
-
// const state = context.requestCapability(SpaceCapabilities.State);
|
|
424
|
-
// return createObjectNode({ object, space, resolve, navigable: state.navigableCollections });
|
|
425
|
-
// }
|
|
426
|
-
// },
|
|
358
|
+
resolver: (id) => {
|
|
359
|
+
let query: QueryResult.QueryResult<Entity.Unknown> | undefined;
|
|
360
|
+
return Atom.make((get) => {
|
|
361
|
+
const client = context.getCapability(ClientCapabilities.Client);
|
|
362
|
+
const dxn = DXN.tryParse(id)?.asEchoDXN();
|
|
363
|
+
if (!dxn || !dxn.spaceId) {
|
|
364
|
+
return null;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
const space = client.spaces.get(dxn.spaceId);
|
|
368
|
+
if (!space) {
|
|
369
|
+
return null;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
if (!query) {
|
|
373
|
+
query = space.db.query(Filter.id(dxn.echoId));
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
const object = get(atomFromQuery(query)).at(0);
|
|
377
|
+
if (!Obj.isObject(object)) {
|
|
378
|
+
return null;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
return createObjectNode({
|
|
382
|
+
object,
|
|
383
|
+
space,
|
|
384
|
+
resolve: resolve(get),
|
|
385
|
+
disposition: 'hidden',
|
|
386
|
+
});
|
|
387
|
+
});
|
|
388
|
+
},
|
|
427
389
|
}),
|
|
428
390
|
|
|
429
|
-
// Create nodes for
|
|
391
|
+
// Create object nodes for schema-based system collections.
|
|
430
392
|
createExtension({
|
|
431
|
-
id: `${
|
|
393
|
+
id: `${meta.id}/system-collections`,
|
|
432
394
|
connector: (node) => {
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
395
|
+
// TODO(wittjosiah): Find a simpler way to define this type.
|
|
396
|
+
let query: QueryResult.QueryResult<Schema.Schema.Type<typeof Type.Expando>> | undefined;
|
|
397
|
+
return Atom.make((get) => {
|
|
398
|
+
const client = get(context.capabilities(ClientCapabilities.Client)).at(0);
|
|
399
|
+
return Function.pipe(
|
|
436
400
|
get(node),
|
|
437
401
|
Option.flatMap((node) =>
|
|
438
|
-
Obj.instanceOf(
|
|
402
|
+
Obj.instanceOf(Collection.Managed, node.data) ? Option.some(node.data) : Option.none(),
|
|
439
403
|
),
|
|
440
404
|
Option.flatMap((collection) => {
|
|
441
405
|
const space = getSpace(collection);
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
:
|
|
406
|
+
// TODO(wittjosiah): Support reactive schema registry queries.
|
|
407
|
+
const schema = client?.graph.schemaRegistry
|
|
408
|
+
.query({ typename: collection.key, location: ['runtime'] })
|
|
409
|
+
.runSync()[0];
|
|
410
|
+
return space && schema ? Option.some({ space, schema }) : Option.none();
|
|
445
411
|
}),
|
|
446
|
-
Option.map(({
|
|
447
|
-
const state = context.getCapability(SpaceCapabilities.State);
|
|
412
|
+
Option.map(({ space, schema }) => {
|
|
448
413
|
if (!query) {
|
|
449
|
-
query = space.db.query(
|
|
450
|
-
Query.without(
|
|
451
|
-
Query.select(Filter.typename(typename)),
|
|
452
|
-
// TODO(wittjosiah): This query is broader than it should be.
|
|
453
|
-
// It will return all objects in the collection, not just the ones of the given type.
|
|
454
|
-
// However this works fine for now because this query is only used for exclusions.
|
|
455
|
-
Query.select(Filter.typename(typename))
|
|
456
|
-
.referencedBy(DataType.Collection, 'objects')
|
|
457
|
-
.reference('objects'),
|
|
458
|
-
),
|
|
459
|
-
);
|
|
414
|
+
query = space.db.query(Filter.type(schema));
|
|
460
415
|
}
|
|
461
|
-
return get(
|
|
416
|
+
return get(atomFromQuery(query))
|
|
462
417
|
.map((object) =>
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
droppable: false, // Cannot rearrange query collections.
|
|
470
|
-
navigable: state.navigableCollections,
|
|
471
|
-
}),
|
|
472
|
-
),
|
|
473
|
-
),
|
|
418
|
+
createObjectNode({
|
|
419
|
+
object,
|
|
420
|
+
space,
|
|
421
|
+
managedCollectionChild: true,
|
|
422
|
+
resolve: resolve(get),
|
|
423
|
+
}),
|
|
474
424
|
)
|
|
475
425
|
.filter(isNonNullable);
|
|
476
426
|
}),
|
|
477
427
|
Option.getOrElse(() => []),
|
|
478
|
-
)
|
|
479
|
-
);
|
|
428
|
+
);
|
|
429
|
+
});
|
|
480
430
|
},
|
|
481
431
|
}),
|
|
482
432
|
|
|
483
|
-
//
|
|
433
|
+
// Create branch nodes for static schema record types.
|
|
484
434
|
createExtension({
|
|
485
|
-
id: `${
|
|
486
|
-
connector: (node) =>
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
pipe(
|
|
435
|
+
id: `${meta.id}/static-schemas`,
|
|
436
|
+
connector: (node) =>
|
|
437
|
+
Atom.make((get) => {
|
|
438
|
+
const client = get(context.capabilities(ClientCapabilities.Client)).at(0);
|
|
439
|
+
return Function.pipe(
|
|
490
440
|
get(node),
|
|
491
441
|
Option.flatMap((node) =>
|
|
492
|
-
Obj.instanceOf(
|
|
493
|
-
node.data.query.typename === DataType.StoredSchema.typename
|
|
442
|
+
Obj.instanceOf(Collection.Managed, node.data) && node.data.key === Type.getTypename(Type.PersistentType)
|
|
494
443
|
? Option.some(node.data)
|
|
495
444
|
: Option.none(),
|
|
496
445
|
),
|
|
@@ -499,26 +448,36 @@ export default (context: PluginContext) => {
|
|
|
499
448
|
return space?.properties.staticRecords ? Option.some(space) : Option.none();
|
|
500
449
|
}),
|
|
501
450
|
Option.map((space) => {
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
)
|
|
451
|
+
// TODO(wittjosiah): Support reactive schema registry queries.
|
|
452
|
+
return get(atomFromSignal(() => (space.properties.staticRecords ?? []) as string[]))
|
|
453
|
+
.map((typename) => client?.graph.schemaRegistry.query({ typename, location: ['runtime'] }).runSync()[0])
|
|
506
454
|
.filter(isNonNullable)
|
|
507
455
|
.map((schema) => createStaticSchemaNode({ schema, space }));
|
|
508
456
|
}),
|
|
509
457
|
Option.getOrElse(() => []),
|
|
510
|
-
)
|
|
511
|
-
)
|
|
512
|
-
},
|
|
458
|
+
);
|
|
459
|
+
}),
|
|
513
460
|
}),
|
|
514
461
|
|
|
515
|
-
// Create static schema
|
|
462
|
+
// Create actions for static schema record types.
|
|
516
463
|
createExtension({
|
|
517
|
-
id: `${
|
|
464
|
+
id: `${meta.id}/static-schema-actions`,
|
|
518
465
|
actions: (node) => {
|
|
519
|
-
let query: QueryResult<
|
|
520
|
-
return
|
|
521
|
-
|
|
466
|
+
let query: QueryResult.QueryResult<Obj.Any> | undefined;
|
|
467
|
+
return Atom.make((get) => {
|
|
468
|
+
// TODO(wittjosiah): Support reactive schema registry queries.
|
|
469
|
+
const schemas =
|
|
470
|
+
get(context.capabilities(ClientCapabilities.Client))
|
|
471
|
+
.at(0)
|
|
472
|
+
?.graph.schemaRegistry.query({ location: ['runtime'] })
|
|
473
|
+
.runSync() ?? [];
|
|
474
|
+
const filter = Filter.or(
|
|
475
|
+
...schemas
|
|
476
|
+
.filter((schema) => ViewAnnotation.get(schema).pipe(Option.getOrElse(() => false)))
|
|
477
|
+
.map((schema) => Filter.type(schema)),
|
|
478
|
+
);
|
|
479
|
+
|
|
480
|
+
return Function.pipe(
|
|
522
481
|
get(node),
|
|
523
482
|
Option.flatMap((node) => {
|
|
524
483
|
const space = isSpace(node.properties.space) ? node.properties.space : undefined;
|
|
@@ -526,59 +485,88 @@ export default (context: PluginContext) => {
|
|
|
526
485
|
}),
|
|
527
486
|
Option.map(({ space, schema }) => {
|
|
528
487
|
if (!query) {
|
|
529
|
-
// TODO(wittjosiah):
|
|
530
|
-
|
|
488
|
+
// TODO(wittjosiah): Ideally this query would traverse the view reference & filter by the query ast.
|
|
489
|
+
// TODO(wittjosiah): Remove cast.
|
|
490
|
+
query = space.db.query(filter) as unknown as QueryResult.QueryResult<Obj.Any>;
|
|
531
491
|
}
|
|
532
492
|
|
|
533
|
-
const
|
|
493
|
+
const objects = get(atomFromQuery(query));
|
|
534
494
|
const filteredViews = get(
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
495
|
+
atomFromSignal(() =>
|
|
496
|
+
objects.filter(
|
|
497
|
+
(viewObject) =>
|
|
498
|
+
getTypenameFromQuery((viewObject as any).view.target?.query.ast) ===
|
|
499
|
+
Type.getTypename(schema as Type.Obj.Any),
|
|
500
|
+
),
|
|
538
501
|
),
|
|
539
502
|
);
|
|
540
503
|
const deletable = filteredViews.length === 0;
|
|
541
504
|
|
|
505
|
+
const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
|
|
506
|
+
if (!dispatcher) {
|
|
507
|
+
return [];
|
|
508
|
+
}
|
|
509
|
+
|
|
542
510
|
// TODO(wittjosiah): Remove cast.
|
|
543
|
-
return createStaticSchemaActions({
|
|
511
|
+
return createStaticSchemaActions({
|
|
512
|
+
schema: schema as Type.Obj.Any,
|
|
513
|
+
space,
|
|
514
|
+
dispatch: dispatcher.dispatchPromise,
|
|
515
|
+
deletable,
|
|
516
|
+
});
|
|
544
517
|
}),
|
|
545
518
|
Option.getOrElse(() => []),
|
|
546
|
-
)
|
|
547
|
-
);
|
|
519
|
+
);
|
|
520
|
+
});
|
|
548
521
|
},
|
|
549
522
|
}),
|
|
550
523
|
|
|
551
|
-
// Create nodes for
|
|
524
|
+
// Create nodes for views of record types.
|
|
552
525
|
createExtension({
|
|
553
|
-
id: `${
|
|
526
|
+
id: `${meta.id}/schema-views`,
|
|
554
527
|
connector: (node) => {
|
|
555
|
-
let query: QueryResult<
|
|
556
|
-
return
|
|
557
|
-
|
|
528
|
+
let query: QueryResult.QueryResult<Obj.Any> | undefined;
|
|
529
|
+
return Atom.make((get) => {
|
|
530
|
+
// TODO(wittjosiah): Support reactive schema registry queries.
|
|
531
|
+
const schemas =
|
|
532
|
+
get(context.capabilities(ClientCapabilities.Client))
|
|
533
|
+
.at(0)
|
|
534
|
+
?.graph.schemaRegistry.query({ location: ['runtime'] })
|
|
535
|
+
.runSync() ?? [];
|
|
536
|
+
const filter = Filter.or(
|
|
537
|
+
...schemas
|
|
538
|
+
.filter((schema) => ViewAnnotation.get(schema).pipe(Option.getOrElse(() => false)))
|
|
539
|
+
.map((schema) => Filter.type(schema)),
|
|
540
|
+
);
|
|
541
|
+
|
|
542
|
+
return Function.pipe(
|
|
558
543
|
get(node),
|
|
559
544
|
Option.flatMap((node) => {
|
|
560
545
|
const space = getSpace(node.data) ?? (isSpace(node.properties.space) ? node.properties.space : undefined);
|
|
561
|
-
return space && (Obj.instanceOf(
|
|
546
|
+
return space && (Obj.instanceOf(Type.PersistentType, node.data) || Schema.isSchema(node.data))
|
|
562
547
|
? Option.some({ space, schema: node.data })
|
|
563
548
|
: Option.none();
|
|
564
549
|
}),
|
|
565
550
|
Option.map(({ space, schema }) => {
|
|
566
551
|
if (!query) {
|
|
567
|
-
// TODO(wittjosiah):
|
|
568
|
-
|
|
552
|
+
// TODO(wittjosiah): Ideally this query would traverse the view reference & filter by the query ast.
|
|
553
|
+
// TODO(wittjosiah): Remove cast.
|
|
554
|
+
query = space.db.query(filter) as unknown as QueryResult.QueryResult<Obj.Any>;
|
|
569
555
|
}
|
|
570
556
|
|
|
571
|
-
// TODO(wittjosiah): Remove
|
|
557
|
+
// TODO(wittjosiah): Remove casts.
|
|
572
558
|
const typename = Schema.isSchema(schema) ? Type.getTypename(schema as Type.Obj.Any) : schema.typename;
|
|
573
|
-
return get(
|
|
574
|
-
.filter((
|
|
575
|
-
|
|
559
|
+
return get(atomFromQuery(query))
|
|
560
|
+
.filter((object) =>
|
|
561
|
+
get(atomFromSignal(() => getTypenameFromQuery((object as any).view.target?.query.ast) === typename)),
|
|
562
|
+
)
|
|
563
|
+
.map((object) =>
|
|
576
564
|
get(
|
|
577
|
-
|
|
565
|
+
atomFromSignal(() =>
|
|
578
566
|
createObjectNode({
|
|
579
|
-
object
|
|
567
|
+
object,
|
|
580
568
|
space,
|
|
581
|
-
resolve,
|
|
569
|
+
resolve: resolve(get),
|
|
582
570
|
droppable: false,
|
|
583
571
|
}),
|
|
584
572
|
),
|
|
@@ -587,35 +575,58 @@ export default (context: PluginContext) => {
|
|
|
587
575
|
.filter(isNonNullable);
|
|
588
576
|
}),
|
|
589
577
|
Option.getOrElse(() => []),
|
|
590
|
-
)
|
|
591
|
-
);
|
|
578
|
+
);
|
|
579
|
+
});
|
|
592
580
|
},
|
|
593
581
|
}),
|
|
594
582
|
|
|
595
583
|
// Create collection actions and action groups.
|
|
596
584
|
createExtension({
|
|
597
|
-
id: `${
|
|
585
|
+
id: `${meta.id}/object-actions`,
|
|
598
586
|
actions: (node) => {
|
|
599
|
-
let query: QueryResult<
|
|
600
|
-
return
|
|
601
|
-
|
|
587
|
+
let query: QueryResult.QueryResult<Obj.Any> | undefined;
|
|
588
|
+
return Atom.make((get) => {
|
|
589
|
+
// TODO(wittjosiah): Support reactive schema registry queries.
|
|
590
|
+
const schemas =
|
|
591
|
+
get(context.capabilities(ClientCapabilities.Client))
|
|
592
|
+
.at(0)
|
|
593
|
+
?.graph.schemaRegistry.query({ location: ['runtime'] })
|
|
594
|
+
.runSync() ?? [];
|
|
595
|
+
const filter = Filter.or(
|
|
596
|
+
...schemas
|
|
597
|
+
.filter((schema) => ViewAnnotation.get(schema).pipe(Option.getOrElse(() => false)))
|
|
598
|
+
.map((schema) => Filter.type(schema)),
|
|
599
|
+
);
|
|
600
|
+
|
|
601
|
+
return Function.pipe(
|
|
602
602
|
get(node),
|
|
603
603
|
Option.flatMap((node) => {
|
|
604
604
|
const space = getSpace(node.data);
|
|
605
|
-
return space && Obj.isObject(node.data)
|
|
605
|
+
return space && Obj.isObject(node.data) && Obj.getTypename(node.data) === node.type
|
|
606
|
+
? Option.some({ space, object: node.data })
|
|
607
|
+
: Option.none();
|
|
606
608
|
}),
|
|
607
609
|
Option.flatMap(({ space, object }) => {
|
|
608
|
-
const isSchema = Obj.instanceOf(
|
|
610
|
+
const isSchema = Obj.instanceOf(Type.PersistentType, object);
|
|
609
611
|
if (!query && isSchema) {
|
|
610
|
-
// TODO(wittjosiah):
|
|
611
|
-
|
|
612
|
+
// TODO(wittjosiah): Ideally this query would traverse the view reference & filter by the query ast.
|
|
613
|
+
// TODO(wittjosiah): Remove cast.
|
|
614
|
+
query = space.db.query(filter) as unknown as QueryResult.QueryResult<Obj.Any>;
|
|
612
615
|
}
|
|
613
616
|
|
|
614
|
-
let deletable =
|
|
617
|
+
let deletable =
|
|
618
|
+
!isSchema &&
|
|
619
|
+
// Don't allow system collections to be deleted.
|
|
620
|
+
!Obj.instanceOf(Collection.Managed, object);
|
|
615
621
|
if (isSchema && query) {
|
|
616
|
-
const
|
|
622
|
+
const objects = get(atomFromQuery(query));
|
|
617
623
|
const filteredViews = get(
|
|
618
|
-
|
|
624
|
+
atomFromSignal(() =>
|
|
625
|
+
objects.filter(
|
|
626
|
+
(viewObject) =>
|
|
627
|
+
getTypenameFromQuery((viewObject as any).view.target?.query.ast) === object.typename,
|
|
628
|
+
),
|
|
629
|
+
),
|
|
619
630
|
);
|
|
620
631
|
deletable = filteredViews.length === 0;
|
|
621
632
|
}
|
|
@@ -623,7 +634,6 @@ export default (context: PluginContext) => {
|
|
|
623
634
|
const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
|
|
624
635
|
const [appGraph] = get(context.capabilities(Capabilities.AppGraph));
|
|
625
636
|
const [state] = get(context.capabilities(SpaceCapabilities.State));
|
|
626
|
-
const objectForms = get(context.capabilities(SpaceCapabilities.ObjectForm));
|
|
627
637
|
|
|
628
638
|
if (!dispatcher || !appGraph || !state) {
|
|
629
639
|
return Option.none();
|
|
@@ -632,34 +642,49 @@ export default (context: PluginContext) => {
|
|
|
632
642
|
object,
|
|
633
643
|
graph: appGraph.graph,
|
|
634
644
|
dispatch: dispatcher.dispatchPromise,
|
|
635
|
-
|
|
645
|
+
resolve: resolve(get),
|
|
636
646
|
deletable,
|
|
637
|
-
navigable: get(
|
|
647
|
+
navigable: get(atomFromSignal(() => state.navigableCollections)),
|
|
638
648
|
});
|
|
639
649
|
}
|
|
640
650
|
}),
|
|
641
651
|
Option.map((params) => constructObjectActions(params)),
|
|
642
652
|
Option.getOrElse(() => []),
|
|
643
|
-
)
|
|
644
|
-
);
|
|
653
|
+
);
|
|
654
|
+
});
|
|
645
655
|
},
|
|
646
656
|
}),
|
|
647
657
|
|
|
648
658
|
// View selected objects.
|
|
649
659
|
createExtension({
|
|
650
|
-
id: `${
|
|
660
|
+
id: `${meta.id}/selected-objects`,
|
|
651
661
|
connector: (node) =>
|
|
652
|
-
|
|
653
|
-
pipe(
|
|
662
|
+
Atom.make((get) =>
|
|
663
|
+
Function.pipe(
|
|
654
664
|
get(node),
|
|
655
|
-
Option.flatMap((node) =>
|
|
665
|
+
Option.flatMap((node) => {
|
|
666
|
+
if (!Obj.isObject(node.data)) {
|
|
667
|
+
return Option.none();
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
const schema = Obj.getSchema(node.data);
|
|
671
|
+
const isView = Option.fromNullable(schema).pipe(
|
|
672
|
+
Option.flatMap((schema) => ViewAnnotation.get(schema)),
|
|
673
|
+
Option.getOrElse(() => false),
|
|
674
|
+
);
|
|
675
|
+
if (!isView) {
|
|
676
|
+
return Option.none();
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
return Option.some(node);
|
|
680
|
+
}),
|
|
656
681
|
Option.map((node) => [
|
|
657
682
|
{
|
|
658
683
|
id: [node.id, 'selected-objects'].join(ATTENDABLE_PATH_SEPARATOR),
|
|
659
684
|
type: PLANK_COMPANION_TYPE,
|
|
660
685
|
data: 'selected-objects',
|
|
661
686
|
properties: {
|
|
662
|
-
label: ['companion selected objects label', { ns:
|
|
687
|
+
label: ['companion selected objects label', { ns: meta.id }],
|
|
663
688
|
icon: 'ph--tree-view--regular',
|
|
664
689
|
disposition: 'hidden',
|
|
665
690
|
},
|
|
@@ -672,10 +697,10 @@ export default (context: PluginContext) => {
|
|
|
672
697
|
|
|
673
698
|
// Object settings plank companion.
|
|
674
699
|
createExtension({
|
|
675
|
-
id: `${
|
|
700
|
+
id: `${meta.id}/settings`,
|
|
676
701
|
connector: (node) =>
|
|
677
|
-
|
|
678
|
-
pipe(
|
|
702
|
+
Atom.make((get) =>
|
|
703
|
+
Function.pipe(
|
|
679
704
|
get(node),
|
|
680
705
|
Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node) : Option.none())),
|
|
681
706
|
Option.map((node) => [
|
|
@@ -684,7 +709,7 @@ export default (context: PluginContext) => {
|
|
|
684
709
|
type: PLANK_COMPANION_TYPE,
|
|
685
710
|
data: 'settings',
|
|
686
711
|
properties: {
|
|
687
|
-
label: ['object settings label', { ns:
|
|
712
|
+
label: ['object settings label', { ns: meta.id }],
|
|
688
713
|
icon: 'ph--sliders--regular',
|
|
689
714
|
disposition: 'hidden',
|
|
690
715
|
position: 'fallback',
|