@dxos/plugin-space 0.8.4-main.e098934 → 0.8.4-main.e8ec1fe
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/{CollectionMain-D2B75XBS.mjs → CollectionArticle-WTHWY4YS.mjs} +10 -10
- package/dist/lib/browser/CollectionArticle-WTHWY4YS.mjs.map +7 -0
- package/dist/lib/browser/ObjectDetailsPanel-2BRUBHP6.mjs +141 -0
- package/dist/lib/browser/ObjectDetailsPanel-2BRUBHP6.mjs.map +7 -0
- package/dist/lib/browser/ObjectSettings-5LLWCVEK.mjs +144 -0
- package/dist/lib/browser/ObjectSettings-5LLWCVEK.mjs.map +7 -0
- package/dist/lib/browser/RecordArticle-SXDRWTTU.mjs +116 -0
- package/dist/lib/browser/RecordArticle-SXDRWTTU.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-builder-AFC6PNAB.mjs → app-graph-builder-DTM7BJ6D.mjs} +107 -96
- package/dist/lib/browser/app-graph-builder-DTM7BJ6D.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-Q7QG4EKW.mjs → app-graph-serializer-TIKXF43P.mjs} +19 -19
- package/dist/lib/browser/app-graph-serializer-TIKXF43P.mjs.map +7 -0
- package/dist/lib/browser/chunk-AFUOMLX6.mjs +167 -0
- package/dist/lib/browser/chunk-AFUOMLX6.mjs.map +7 -0
- package/dist/lib/browser/{chunk-6GRF7NEF.mjs → chunk-CKACGS7T.mjs} +553 -475
- package/dist/lib/browser/chunk-CKACGS7T.mjs.map +7 -0
- package/dist/lib/browser/chunk-K5J7ZB5P.mjs +20 -0
- package/dist/lib/browser/chunk-K5J7ZB5P.mjs.map +7 -0
- package/dist/lib/browser/{chunk-S33AYKSS.mjs → chunk-KFUMADZF.mjs} +135 -62
- package/dist/lib/browser/chunk-KFUMADZF.mjs.map +7 -0
- package/dist/lib/browser/{chunk-WZYRDFW7.mjs → chunk-VGKOXAPE.mjs} +26 -13
- package/dist/lib/browser/chunk-VGKOXAPE.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-URST7EEN.mjs → chunk-ZQMSGD5J.mjs} +35 -19
- package/dist/lib/browser/chunk-ZQMSGD5J.mjs.map +7 -0
- package/dist/lib/browser/{identity-created-T6ZNVE7S.mjs → identity-created-NAXTPQXE.mjs} +5 -5
- package/dist/lib/browser/identity-created-NAXTPQXE.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +88 -70
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-CO262Q44.mjs → intent-resolver-3FNTO3VW.mjs} +89 -76
- package/dist/lib/browser/intent-resolver-3FNTO3VW.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/react-root-Q7VBWBES.mjs +30 -0
- package/dist/lib/browser/react-root-Q7VBWBES.mjs.map +7 -0
- package/dist/lib/browser/{react-surface-TPUOK2LC.mjs → react-surface-TTHS332A.mjs} +71 -105
- package/dist/lib/browser/react-surface-TTHS332A.mjs.map +7 -0
- package/dist/lib/browser/{schema-defs-YDPFZELA.mjs → schema-defs-QPI2JU3X.mjs} +6 -6
- package/dist/lib/browser/schema-defs-QPI2JU3X.mjs.map +7 -0
- package/dist/lib/browser/{settings-ZYH2JWNI.mjs → settings-45PGPO2V.mjs} +5 -5
- package/dist/lib/browser/{settings-ZYH2JWNI.mjs.map → settings-45PGPO2V.mjs.map} +1 -1
- package/dist/lib/browser/{spaces-ready-3I5LISH4.mjs → spaces-ready-QCND4DVY.mjs} +15 -14
- package/dist/lib/browser/spaces-ready-QCND4DVY.mjs.map +7 -0
- package/dist/lib/browser/{state-2RGW7FQG.mjs → state-Q7YRE5KG.mjs} +7 -7
- package/dist/lib/browser/state-Q7YRE5KG.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +2 -2
- package/dist/lib/node-esm/{CollectionMain-ZJIFCWKZ.mjs → CollectionArticle-KHXYT3SH.mjs} +10 -10
- package/dist/lib/node-esm/CollectionArticle-KHXYT3SH.mjs.map +7 -0
- package/dist/lib/node-esm/ObjectDetailsPanel-6PZQIQG3.mjs +142 -0
- package/dist/lib/node-esm/ObjectDetailsPanel-6PZQIQG3.mjs.map +7 -0
- package/dist/lib/node-esm/ObjectSettings-OQSBOH7K.mjs +145 -0
- package/dist/lib/node-esm/ObjectSettings-OQSBOH7K.mjs.map +7 -0
- package/dist/lib/node-esm/RecordArticle-NACBH42P.mjs +117 -0
- package/dist/lib/node-esm/RecordArticle-NACBH42P.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-OW2EBYRI.mjs → app-graph-builder-FBJFWI4H.mjs} +107 -96
- package/dist/lib/node-esm/app-graph-builder-FBJFWI4H.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-6PGC5WR5.mjs → app-graph-serializer-BESQZAYU.mjs} +19 -19
- package/dist/lib/node-esm/app-graph-serializer-BESQZAYU.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-RXDT5LA5.mjs → chunk-6VEONPNZ.mjs} +35 -19
- package/dist/lib/node-esm/chunk-6VEONPNZ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-6ZQGZBEP.mjs +168 -0
- package/dist/lib/node-esm/chunk-6ZQGZBEP.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-TEUN2E4F.mjs → chunk-OK2L7N2F.mjs} +135 -62
- package/dist/lib/node-esm/chunk-OK2L7N2F.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-LGNPMOXU.mjs → chunk-QBRPYAEL.mjs} +26 -13
- package/dist/lib/node-esm/chunk-QBRPYAEL.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-NMCD2PSG.mjs → chunk-XGAMJC5C.mjs} +553 -475
- package/dist/lib/node-esm/chunk-XGAMJC5C.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-Z7BB6HC2.mjs +21 -0
- package/dist/lib/node-esm/chunk-Z7BB6HC2.mjs.map +7 -0
- package/dist/lib/node-esm/{identity-created-AL7NNCKH.mjs → identity-created-OXLKCJE3.mjs} +5 -5
- package/dist/lib/node-esm/identity-created-OXLKCJE3.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +88 -70
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-EXPK4B76.mjs → intent-resolver-6O5FSB7Z.mjs} +89 -76
- package/dist/lib/node-esm/intent-resolver-6O5FSB7Z.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-4OQ7MPGW.mjs → react-root-K66W3FMA.mjs} +13 -12
- package/dist/lib/node-esm/react-root-K66W3FMA.mjs.map +7 -0
- package/dist/lib/node-esm/{react-surface-WXEXIDB7.mjs → react-surface-Y7FTEIDF.mjs} +71 -105
- package/dist/lib/node-esm/react-surface-Y7FTEIDF.mjs.map +7 -0
- package/dist/lib/node-esm/{schema-defs-OYBCWKAS.mjs → schema-defs-ZS2D47XW.mjs} +6 -6
- package/dist/lib/node-esm/schema-defs-ZS2D47XW.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-2RYFMMTP.mjs → settings-6FO65BA6.mjs} +5 -5
- package/dist/lib/node-esm/{settings-2RYFMMTP.mjs.map → settings-6FO65BA6.mjs.map} +1 -1
- package/dist/lib/node-esm/{spaces-ready-JAP22P57.mjs → spaces-ready-P7CKVXBE.mjs} +15 -14
- package/dist/lib/node-esm/spaces-ready-P7CKVXBE.mjs.map +7 -0
- package/dist/lib/node-esm/{state-7VBVBGNS.mjs → state-362I5BMK.mjs} +7 -7
- package/dist/lib/node-esm/state-362I5BMK.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +2 -2
- package/dist/types/src/SpacePlugin.d.ts +1 -1
- package/dist/types/src/SpacePlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +6 -5
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
- package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
- package/dist/types/src/components/CollectionArticle.d.ts +6 -0
- package/dist/types/src/components/CollectionArticle.d.ts.map +1 -0
- package/dist/types/src/components/CollectionSection.d.ts +3 -4
- package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +120 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +3 -3
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -1
- package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
- package/dist/types/src/components/{JoinDialog.d.ts → JoinDialog/JoinDialog.d.ts} +1 -1
- package/dist/types/src/components/JoinDialog/JoinDialog.d.ts.map +1 -0
- package/dist/types/src/components/JoinDialog/index.d.ts +2 -0
- package/dist/types/src/components/JoinDialog/index.d.ts.map +1 -0
- package/dist/types/src/components/MembersContainer/MembersContainer.d.ts.map +1 -0
- package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts +1707 -0
- package/dist/types/src/components/{MembersContainer.stories.d.ts.map → MembersContainer/MembersContainer.stories.d.ts.map} +1 -1
- package/dist/types/src/components/MembersContainer/index.d.ts +2 -0
- package/dist/types/src/components/MembersContainer/index.d.ts.map +1 -0
- package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +9 -0
- package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -0
- package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts +10 -0
- package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -0
- package/dist/types/src/components/ObjectDetailsPanel/index.d.ts +3 -0
- package/dist/types/src/components/ObjectDetailsPanel/index.d.ts.map +1 -0
- package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts +7 -0
- package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts.map +1 -0
- package/dist/types/src/components/ObjectRenamePopover/index.d.ts +2 -0
- package/dist/types/src/components/ObjectRenamePopover/index.d.ts.map +1 -0
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +2 -2
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +1540 -0
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -0
- package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +1 -1
- package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
- package/dist/types/src/components/ObjectSettings/index.d.ts +2 -1
- package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -1
- package/dist/types/src/components/RecordArticle.d.ts +5 -0
- package/dist/types/src/components/RecordArticle.d.ts.map +1 -0
- package/dist/types/src/components/{MembersContainer.stories.d.ts → RecordArticle.stories.d.ts} +121 -2
- package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -0
- package/dist/types/src/components/SchemaContainer.d.ts +1 -1
- 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} +4 -3
- package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -0
- package/dist/types/src/components/{SpacePresence.stories.d.ts → SpacePresence/SpacePresence.stories.d.ts} +122 -3
- package/dist/types/src/components/{SpacePresence.stories.d.ts.map → SpacePresence/SpacePresence.stories.d.ts.map} +1 -1
- package/dist/types/src/components/SpacePresence/index.d.ts +2 -0
- package/dist/types/src/components/SpacePresence/index.d.ts.map +1 -0
- package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts +7 -0
- package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts.map +1 -0
- package/dist/types/src/components/SpaceRenamePopover/index.d.ts +2 -0
- package/dist/types/src/components/SpaceRenamePopover/index.d.ts.map +1 -0
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +120 -1
- 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 +121 -2
- package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
- package/dist/types/src/components/ViewEditor.d.ts +3 -4
- package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +10 -17
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/helpers/index.d.ts +2 -0
- package/dist/types/src/helpers/index.d.ts.map +1 -0
- package/dist/types/src/helpers/query.d.ts +8 -0
- package/dist/types/src/helpers/query.d.ts.map +1 -0
- package/dist/types/src/helpers/query.test.d.ts +2 -0
- package/dist/types/src/helpers/query.test.d.ts.map +1 -0
- package/dist/types/src/hooks/index.d.ts +1 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
- package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +1 -1
- package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
- package/dist/types/src/hooks/usePath.d.ts +1 -1
- package/dist/types/src/hooks/usePath.d.ts.map +1 -1
- package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
- package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +0 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +120 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +70 -55
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +10 -7
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +65 -60
- package/src/SpacePlugin.ts +228 -200
- package/src/capabilities/app-graph-builder.ts +157 -121
- package/src/capabilities/app-graph-serializer.ts +12 -12
- package/src/capabilities/capabilities.ts +16 -11
- package/src/capabilities/identity-created.ts +2 -2
- package/src/capabilities/intent-resolver.ts +75 -59
- package/src/capabilities/react-root.tsx +4 -3
- package/src/capabilities/react-surface.tsx +65 -141
- package/src/capabilities/schema-defs.ts +1 -1
- package/src/capabilities/spaces-ready.ts +8 -5
- package/src/capabilities/state.ts +2 -2
- package/src/components/AwaitingObject.tsx +12 -14
- package/src/components/{CollectionMain.tsx → CollectionArticle.tsx} +7 -6
- package/src/components/CollectionSection.tsx +8 -6
- package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +11 -11
- package/src/components/CreateDialog/CreateObjectDialog.tsx +36 -28
- package/src/components/CreateDialog/CreateObjectPanel.tsx +8 -8
- package/src/components/CreateDialog/CreateSpaceDialog.tsx +30 -11
- package/src/components/{JoinDialog.tsx → JoinDialog/JoinDialog.tsx} +26 -10
- package/src/components/JoinDialog/index.ts +5 -0
- package/src/components/{MembersContainer.stories.tsx → MembersContainer/MembersContainer.stories.tsx} +7 -6
- package/src/components/{MembersContainer.tsx → MembersContainer/MembersContainer.tsx} +16 -14
- package/src/components/MembersContainer/index.ts +5 -0
- package/src/components/MenuFooter.tsx +2 -2
- package/src/components/ObjectDetailsPanel/ObjectDetailsPanel.tsx +51 -0
- package/src/components/ObjectDetailsPanel/ObjectForm.tsx +72 -0
- package/src/components/ObjectDetailsPanel/index.ts +7 -0
- package/src/components/{PopoverRenameObject.tsx → ObjectRenamePopover/ObjectRenamePopover.tsx} +6 -6
- package/src/components/ObjectRenamePopover/index.ts +5 -0
- package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +3 -3
- package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
- package/src/components/ObjectSettings/BaseObjectSettings.tsx +90 -26
- package/src/components/ObjectSettings/ForeignKeys.tsx +4 -4
- package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +1 -1
- package/src/components/ObjectSettings/index.ts +3 -1
- package/src/components/RecordArticle.stories.tsx +115 -0
- package/src/components/RecordArticle.tsx +114 -0
- package/src/components/SchemaContainer.tsx +23 -26
- package/src/components/SpacePluginSettings.tsx +10 -4
- package/src/components/{SpacePresence.stories.tsx → SpacePresence/SpacePresence.stories.tsx} +23 -25
- package/src/components/{SpacePresence.tsx → SpacePresence/SpacePresence.tsx} +16 -11
- package/src/components/SpacePresence/index.ts +5 -0
- package/src/components/{PopoverRenameSpace.tsx → SpaceRenamePopover/SpaceRenamePopover.tsx} +7 -6
- package/src/components/SpaceRenamePopover/index.ts +5 -0
- package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +9 -4
- package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +44 -23
- package/src/components/SyncStatus/InlineSyncStatus.tsx +8 -8
- package/src/components/SyncStatus/SyncStatus.stories.tsx +4 -5
- package/src/components/SyncStatus/SyncStatus.tsx +107 -11
- package/src/components/ViewEditor.tsx +51 -18
- package/src/components/index.ts +7 -8
- package/src/events.ts +6 -6
- package/src/helpers/index.ts +5 -0
- package/src/helpers/query.test.ts +24 -0
- package/src/helpers/query.ts +158 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useActiveSpace.ts +2 -1
- package/src/hooks/useInputSurfaceLookup.tsx +8 -3
- package/src/hooks/usePath.ts +1 -1
- package/src/hooks/useTypeOptions.ts +59 -0
- package/src/index.ts +1 -0
- package/src/meta.ts +6 -3
- package/src/translations.ts +25 -10
- package/src/types/types.ts +33 -18
- package/src/util.tsx +141 -63
- package/dist/lib/browser/CollectionMain-D2B75XBS.mjs.map +0 -7
- package/dist/lib/browser/ObjectDetailsPanel-J7KGPJJK.mjs +0 -90
- package/dist/lib/browser/ObjectDetailsPanel-J7KGPJJK.mjs.map +0 -7
- package/dist/lib/browser/RecordMain-TEBGAVSL.mjs +0 -68
- package/dist/lib/browser/RecordMain-TEBGAVSL.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-AFC6PNAB.mjs.map +0 -7
- package/dist/lib/browser/app-graph-serializer-Q7QG4EKW.mjs.map +0 -7
- package/dist/lib/browser/chunk-6GRF7NEF.mjs.map +0 -7
- package/dist/lib/browser/chunk-CBYL62HG.mjs +0 -19
- package/dist/lib/browser/chunk-CBYL62HG.mjs.map +0 -7
- package/dist/lib/browser/chunk-ELJDGQTO.mjs +0 -94
- package/dist/lib/browser/chunk-ELJDGQTO.mjs.map +0 -7
- package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
- package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
- package/dist/lib/browser/chunk-S33AYKSS.mjs.map +0 -7
- package/dist/lib/browser/chunk-TUQZO5P4.mjs +0 -20
- package/dist/lib/browser/chunk-TUQZO5P4.mjs.map +0 -7
- package/dist/lib/browser/chunk-URST7EEN.mjs.map +0 -7
- package/dist/lib/browser/chunk-WZYRDFW7.mjs.map +0 -7
- package/dist/lib/browser/identity-created-T6ZNVE7S.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-CO262Q44.mjs.map +0 -7
- package/dist/lib/browser/react-root-K4IVLFYZ.mjs +0 -29
- package/dist/lib/browser/react-root-K4IVLFYZ.mjs.map +0 -7
- package/dist/lib/browser/react-surface-TPUOK2LC.mjs.map +0 -7
- package/dist/lib/browser/schema-defs-YDPFZELA.mjs.map +0 -7
- package/dist/lib/browser/spaces-ready-3I5LISH4.mjs.map +0 -7
- package/dist/lib/browser/state-2RGW7FQG.mjs.map +0 -7
- package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs.map +0 -7
- package/dist/lib/node-esm/ObjectDetailsPanel-7ADOXZ5W.mjs +0 -91
- package/dist/lib/node-esm/ObjectDetailsPanel-7ADOXZ5W.mjs.map +0 -7
- package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs +0 -70
- package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-OW2EBYRI.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-serializer-6PGC5WR5.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-FJZNSJC4.mjs +0 -20
- package/dist/lib/node-esm/chunk-FJZNSJC4.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HC677WUJ.mjs +0 -21
- package/dist/lib/node-esm/chunk-HC677WUJ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HWNG4MEU.mjs +0 -15
- package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-LGNPMOXU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-NMCD2PSG.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-Q6AAQLQG.mjs +0 -96
- package/dist/lib/node-esm/chunk-Q6AAQLQG.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-RXDT5LA5.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-TEUN2E4F.mjs.map +0 -7
- package/dist/lib/node-esm/identity-created-AL7NNCKH.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-EXPK4B76.mjs.map +0 -7
- package/dist/lib/node-esm/react-root-4OQ7MPGW.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-WXEXIDB7.mjs.map +0 -7
- package/dist/lib/node-esm/schema-defs-OYBCWKAS.mjs.map +0 -7
- package/dist/lib/node-esm/spaces-ready-JAP22P57.mjs.map +0 -7
- package/dist/lib/node-esm/state-7VBVBGNS.mjs.map +0 -7
- package/dist/types/src/components/CollectionMain.d.ts +0 -7
- package/dist/types/src/components/CollectionMain.d.ts.map +0 -1
- package/dist/types/src/components/JoinDialog.d.ts.map +0 -1
- package/dist/types/src/components/MembersContainer.d.ts.map +0 -1
- package/dist/types/src/components/ObjectDetailsPanel.d.ts +0 -9
- package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +0 -1
- package/dist/types/src/components/PersistenceStatus.d.ts +0 -6
- package/dist/types/src/components/PersistenceStatus.d.ts.map +0 -1
- package/dist/types/src/components/PopoverRenameObject.d.ts +0 -7
- package/dist/types/src/components/PopoverRenameObject.d.ts.map +0 -1
- package/dist/types/src/components/PopoverRenameSpace.d.ts +0 -7
- package/dist/types/src/components/PopoverRenameSpace.d.ts.map +0 -1
- package/dist/types/src/components/RecordMain.d.ts +0 -7
- package/dist/types/src/components/RecordMain.d.ts.map +0 -1
- package/dist/types/src/components/SpacePresence.d.ts.map +0 -1
- package/src/components/ObjectDetailsPanel.tsx +0 -79
- package/src/components/PersistenceStatus.tsx +0 -83
- package/src/components/RecordMain.tsx +0 -43
- /package/dist/types/src/components/{MembersContainer.d.ts → MembersContainer/MembersContainer.d.ts} +0 -0
|
@@ -2,39 +2,42 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
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';
|
|
7
10
|
|
|
8
11
|
import { Capabilities, type PluginContext, contributes, createIntent } from '@dxos/app-framework';
|
|
9
|
-
import { type QueryResult, type Space, SpaceState, getSpace, isSpace
|
|
10
|
-
import { Filter, Obj, Query, Type } from '@dxos/echo';
|
|
12
|
+
import { type QueryResult, type Space, SpaceState, getSpace, isSpace } from '@dxos/client/echo';
|
|
13
|
+
import { DXN, Filter, Obj, Query, Type } from '@dxos/echo';
|
|
11
14
|
import { log } from '@dxos/log';
|
|
12
15
|
import { ClientCapabilities } from '@dxos/plugin-client';
|
|
13
16
|
import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';
|
|
14
|
-
import { ROOT_ID,
|
|
15
|
-
import {
|
|
17
|
+
import { ROOT_ID, atomFromObservable, atomFromSignal, createExtension } from '@dxos/plugin-graph';
|
|
18
|
+
import { Collection, StoredSchema, View, getTypenameFromQuery } from '@dxos/schema';
|
|
16
19
|
import { isNonNullable } from '@dxos/util';
|
|
17
20
|
|
|
18
21
|
import { getActiveSpace } from '../hooks';
|
|
19
|
-
import {
|
|
22
|
+
import { meta } from '../meta';
|
|
20
23
|
import { SPACE_TYPE, SpaceAction, type SpaceSettingsProps } from '../types';
|
|
21
24
|
import {
|
|
22
25
|
SHARED,
|
|
23
26
|
SPACES,
|
|
27
|
+
atomFromQuery,
|
|
24
28
|
constructObjectActions,
|
|
25
29
|
constructSpaceActions,
|
|
26
30
|
constructSpaceNode,
|
|
27
31
|
createObjectNode,
|
|
28
32
|
createStaticSchemaActions,
|
|
29
33
|
createStaticSchemaNode,
|
|
30
|
-
rxFromQuery,
|
|
31
34
|
} from '../util';
|
|
32
35
|
|
|
33
36
|
import { SpaceCapabilities } from './capabilities';
|
|
34
37
|
|
|
35
38
|
export default (context: PluginContext) => {
|
|
36
|
-
// TODO(wittjosiah):
|
|
37
|
-
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) =>
|
|
38
41
|
context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};
|
|
39
42
|
|
|
40
43
|
const spacesNode = {
|
|
@@ -42,7 +45,7 @@ export default (context: PluginContext) => {
|
|
|
42
45
|
type: SPACES,
|
|
43
46
|
cacheable: ['label', 'role'],
|
|
44
47
|
properties: {
|
|
45
|
-
label: ['spaces label', { ns:
|
|
48
|
+
label: ['spaces label', { ns: meta.id }],
|
|
46
49
|
icon: 'ph--planet--regular',
|
|
47
50
|
testId: 'spacePlugin.spaces',
|
|
48
51
|
role: 'branch',
|
|
@@ -77,11 +80,11 @@ export default (context: PluginContext) => {
|
|
|
77
80
|
return contributes(Capabilities.AppGraphBuilder, [
|
|
78
81
|
// Primary actions.
|
|
79
82
|
createExtension({
|
|
80
|
-
id: `${
|
|
83
|
+
id: `${meta.id}/primary-actions`,
|
|
81
84
|
position: 'hoist',
|
|
82
85
|
actions: (node) =>
|
|
83
|
-
|
|
84
|
-
pipe(
|
|
86
|
+
Atom.make((get) =>
|
|
87
|
+
Function.pipe(
|
|
85
88
|
get(node),
|
|
86
89
|
Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
|
|
87
90
|
Option.map(() => [
|
|
@@ -92,7 +95,7 @@ export default (context: PluginContext) => {
|
|
|
92
95
|
await dispatch(createIntent(SpaceAction.OpenCreateSpace));
|
|
93
96
|
},
|
|
94
97
|
properties: {
|
|
95
|
-
label: ['create space label', { ns:
|
|
98
|
+
label: ['create space label', { ns: meta.id }],
|
|
96
99
|
icon: 'ph--plus--regular',
|
|
97
100
|
testId: 'spacePlugin.createSpace',
|
|
98
101
|
disposition: 'menu',
|
|
@@ -105,7 +108,7 @@ export default (context: PluginContext) => {
|
|
|
105
108
|
await dispatch(createIntent(SpaceAction.Join));
|
|
106
109
|
},
|
|
107
110
|
properties: {
|
|
108
|
-
label: ['join space label', { ns:
|
|
111
|
+
label: ['join space label', { ns: meta.id }],
|
|
109
112
|
icon: 'ph--sign-in--regular',
|
|
110
113
|
testId: 'spacePlugin.joinSpace',
|
|
111
114
|
disposition: 'menu',
|
|
@@ -120,7 +123,7 @@ export default (context: PluginContext) => {
|
|
|
120
123
|
await dispatch(createIntent(SpaceAction.OpenMembers, { space }));
|
|
121
124
|
},
|
|
122
125
|
properties: {
|
|
123
|
-
label: ['share space label', { ns:
|
|
126
|
+
label: ['share space label', { ns: meta.id }],
|
|
124
127
|
icon: 'ph--users--regular',
|
|
125
128
|
testId: 'spacePlugin.shareSpace',
|
|
126
129
|
keyBinding: {
|
|
@@ -138,7 +141,7 @@ export default (context: PluginContext) => {
|
|
|
138
141
|
await dispatch(createIntent(SpaceAction.OpenSettings, { space }));
|
|
139
142
|
},
|
|
140
143
|
properties: {
|
|
141
|
-
label: ['open current space settings label', { ns:
|
|
144
|
+
label: ['open current space settings label', { ns: meta.id }],
|
|
142
145
|
icon: 'ph--faders--regular',
|
|
143
146
|
keyBinding: {
|
|
144
147
|
macos: 'meta+shift+,',
|
|
@@ -154,11 +157,11 @@ export default (context: PluginContext) => {
|
|
|
154
157
|
|
|
155
158
|
// Create spaces group node.
|
|
156
159
|
createExtension({
|
|
157
|
-
id: `${
|
|
160
|
+
id: `${meta.id}/root`,
|
|
158
161
|
position: 'hoist',
|
|
159
162
|
connector: (node) =>
|
|
160
|
-
|
|
161
|
-
pipe(
|
|
163
|
+
Atom.make((get) =>
|
|
164
|
+
Function.pipe(
|
|
162
165
|
get(node),
|
|
163
166
|
Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
|
|
164
167
|
Option.map(() => [spacesNode]),
|
|
@@ -173,25 +176,25 @@ export default (context: PluginContext) => {
|
|
|
173
176
|
id: SPACES,
|
|
174
177
|
connector: (node) => {
|
|
175
178
|
let query: QueryResult<Type.Expando> | undefined;
|
|
176
|
-
return
|
|
177
|
-
pipe(
|
|
179
|
+
return Atom.make((get) =>
|
|
180
|
+
Function.pipe(
|
|
178
181
|
get(node),
|
|
179
182
|
Option.flatMap((node) => (node.id === SPACES ? Option.some(node) : Option.none())),
|
|
180
183
|
Option.map(() => {
|
|
181
184
|
const state = context.getCapability(SpaceCapabilities.State);
|
|
182
185
|
const client = context.getCapability(ClientCapabilities.Client);
|
|
183
|
-
const
|
|
184
|
-
const
|
|
186
|
+
const spacesAtom = atomFromObservable(client.spaces);
|
|
187
|
+
const isReadyAtom = atomFromObservable(client.spaces.isReady);
|
|
185
188
|
|
|
186
|
-
const spaces = get(
|
|
187
|
-
const isReady = get(
|
|
189
|
+
const spaces = get(spacesAtom);
|
|
190
|
+
const isReady = get(isReadyAtom);
|
|
188
191
|
|
|
189
192
|
if (!spaces || !isReady) {
|
|
190
193
|
return [];
|
|
191
194
|
}
|
|
192
195
|
|
|
193
196
|
const settings = get(context.capabilities(Capabilities.SettingsStore))[0]?.getStore<SpaceSettingsProps>(
|
|
194
|
-
|
|
197
|
+
meta.id,
|
|
195
198
|
)?.value;
|
|
196
199
|
|
|
197
200
|
// TODO(wittjosiah): During client reset, accessing default space throws.
|
|
@@ -199,9 +202,9 @@ export default (context: PluginContext) => {
|
|
|
199
202
|
if (!query) {
|
|
200
203
|
query = client.spaces.default.db.query(Filter.type(Type.Expando, { key: SHARED }));
|
|
201
204
|
}
|
|
202
|
-
const [spacesOrder] = get(
|
|
205
|
+
const [spacesOrder] = get(atomFromQuery(query));
|
|
203
206
|
return get(
|
|
204
|
-
|
|
207
|
+
atomFromSignal(() => {
|
|
205
208
|
const order: string[] = spacesOrder?.order ?? [];
|
|
206
209
|
const orderMap = new Map(order.map((id, index) => [id, index]));
|
|
207
210
|
return [
|
|
@@ -219,7 +222,7 @@ export default (context: PluginContext) => {
|
|
|
219
222
|
navigable: state.navigableCollections,
|
|
220
223
|
personal: space === client.spaces.default,
|
|
221
224
|
namesCache: state.spaceNames,
|
|
222
|
-
resolve,
|
|
225
|
+
resolve: resolve(get),
|
|
223
226
|
}),
|
|
224
227
|
);
|
|
225
228
|
}),
|
|
@@ -276,10 +279,10 @@ export default (context: PluginContext) => {
|
|
|
276
279
|
|
|
277
280
|
// Create space actions.
|
|
278
281
|
createExtension({
|
|
279
|
-
id: `${
|
|
282
|
+
id: `${meta.id}/actions`,
|
|
280
283
|
actions: (node) =>
|
|
281
|
-
|
|
282
|
-
pipe(
|
|
284
|
+
Atom.make((get) =>
|
|
285
|
+
Function.pipe(
|
|
283
286
|
get(node),
|
|
284
287
|
Option.flatMap((node) =>
|
|
285
288
|
node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),
|
|
@@ -308,24 +311,24 @@ export default (context: PluginContext) => {
|
|
|
308
311
|
|
|
309
312
|
// Create nodes for objects in the root collection of a space.
|
|
310
313
|
createExtension({
|
|
311
|
-
id: `${
|
|
314
|
+
id: `${meta.id}/root-collection`,
|
|
312
315
|
connector: (node) =>
|
|
313
|
-
|
|
314
|
-
pipe(
|
|
316
|
+
Atom.make((get) =>
|
|
317
|
+
Function.pipe(
|
|
315
318
|
get(node),
|
|
316
319
|
Option.flatMap((node) =>
|
|
317
320
|
node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),
|
|
318
321
|
),
|
|
319
322
|
Option.map((space) => {
|
|
320
323
|
const state = context.getCapability(SpaceCapabilities.State);
|
|
321
|
-
const spaceState = get(
|
|
324
|
+
const spaceState = get(atomFromObservable(space.state));
|
|
322
325
|
if (spaceState !== SpaceState.SPACE_READY) {
|
|
323
326
|
return [];
|
|
324
327
|
}
|
|
325
328
|
|
|
326
329
|
const collection = get(
|
|
327
|
-
|
|
328
|
-
() => space.properties[
|
|
330
|
+
atomFromSignal(
|
|
331
|
+
() => space.properties[Collection.Collection.typename]?.target as Collection.Collection | undefined,
|
|
329
332
|
),
|
|
330
333
|
);
|
|
331
334
|
if (!collection) {
|
|
@@ -333,8 +336,8 @@ export default (context: PluginContext) => {
|
|
|
333
336
|
}
|
|
334
337
|
|
|
335
338
|
return get(
|
|
336
|
-
|
|
337
|
-
pipe(
|
|
339
|
+
atomFromSignal(() =>
|
|
340
|
+
Function.pipe(
|
|
338
341
|
collection.objects,
|
|
339
342
|
Array.map((object) => object.target),
|
|
340
343
|
Array.filter(isNonNullable),
|
|
@@ -342,7 +345,7 @@ export default (context: PluginContext) => {
|
|
|
342
345
|
createObjectNode({
|
|
343
346
|
space,
|
|
344
347
|
object,
|
|
345
|
-
resolve,
|
|
348
|
+
resolve: resolve(get),
|
|
346
349
|
navigable: state.navigableCollections,
|
|
347
350
|
}),
|
|
348
351
|
),
|
|
@@ -358,27 +361,33 @@ export default (context: PluginContext) => {
|
|
|
358
361
|
|
|
359
362
|
// Create nodes for objects in a collection or by its fully qualified id.
|
|
360
363
|
createExtension({
|
|
361
|
-
id: `${
|
|
364
|
+
id: `${meta.id}/objects`,
|
|
362
365
|
connector: (node) =>
|
|
363
|
-
|
|
364
|
-
pipe(
|
|
366
|
+
Atom.make((get) =>
|
|
367
|
+
Function.pipe(
|
|
365
368
|
get(node),
|
|
366
369
|
Option.flatMap((node) =>
|
|
367
|
-
Obj.instanceOf(
|
|
370
|
+
Obj.instanceOf(Collection.Collection, node.data) ? Option.some(node.data) : Option.none(),
|
|
368
371
|
),
|
|
369
372
|
Option.map((collection) => {
|
|
370
373
|
const state = context.getCapability(SpaceCapabilities.State);
|
|
371
374
|
const space = getSpace(collection);
|
|
372
375
|
|
|
373
376
|
return get(
|
|
374
|
-
|
|
375
|
-
pipe(
|
|
377
|
+
atomFromSignal(() =>
|
|
378
|
+
Function.pipe(
|
|
376
379
|
collection.objects,
|
|
377
380
|
Array.map((object) => object.target),
|
|
378
381
|
Array.filter(isNonNullable),
|
|
379
382
|
Array.map(
|
|
380
383
|
(object) =>
|
|
381
|
-
space &&
|
|
384
|
+
space &&
|
|
385
|
+
createObjectNode({
|
|
386
|
+
object,
|
|
387
|
+
space,
|
|
388
|
+
resolve: resolve(get),
|
|
389
|
+
navigable: state.navigableCollections,
|
|
390
|
+
}),
|
|
382
391
|
),
|
|
383
392
|
Array.filter(isNonNullable),
|
|
384
393
|
),
|
|
@@ -429,18 +438,18 @@ export default (context: PluginContext) => {
|
|
|
429
438
|
|
|
430
439
|
// Create nodes for objects in a query collection.
|
|
431
440
|
createExtension({
|
|
432
|
-
id: `${
|
|
441
|
+
id: `${meta.id}/query-collection-objects`,
|
|
433
442
|
connector: (node) => {
|
|
434
443
|
let query: QueryResult<Type.Expando> | undefined;
|
|
435
|
-
return
|
|
436
|
-
pipe(
|
|
444
|
+
return Atom.make((get) =>
|
|
445
|
+
Function.pipe(
|
|
437
446
|
get(node),
|
|
438
447
|
Option.flatMap((node) =>
|
|
439
|
-
Obj.instanceOf(
|
|
448
|
+
Obj.instanceOf(Collection.QueryCollection, node.data) ? Option.some(node.data) : Option.none(),
|
|
440
449
|
),
|
|
441
450
|
Option.flatMap((collection) => {
|
|
442
451
|
const space = getSpace(collection);
|
|
443
|
-
const typename =
|
|
452
|
+
const typename = getTypenameFromQuery(collection.query);
|
|
444
453
|
return typename && space ? Option.some({ typename, space }) : Option.none();
|
|
445
454
|
}),
|
|
446
455
|
Option.map(({ typename, space }) => {
|
|
@@ -453,22 +462,22 @@ export default (context: PluginContext) => {
|
|
|
453
462
|
// It will return all objects in the collection, not just the ones of the given type.
|
|
454
463
|
// However this works fine for now because this query is only used for exclusions.
|
|
455
464
|
Query.select(Filter.typename(typename))
|
|
456
|
-
.referencedBy(
|
|
465
|
+
.referencedBy(Collection.Collection, 'objects')
|
|
457
466
|
.reference('objects'),
|
|
458
467
|
),
|
|
459
468
|
);
|
|
460
469
|
}
|
|
461
470
|
return (
|
|
462
|
-
get(
|
|
471
|
+
get(atomFromQuery(query))
|
|
463
472
|
// TODO(wittjosiah): This should be the default sort order.
|
|
464
473
|
.toSorted((a, b) => a.id.localeCompare(b.id))
|
|
465
474
|
.map((object) =>
|
|
466
475
|
get(
|
|
467
|
-
|
|
476
|
+
atomFromSignal(() =>
|
|
468
477
|
createObjectNode({
|
|
469
478
|
object,
|
|
470
479
|
space,
|
|
471
|
-
resolve,
|
|
480
|
+
resolve: resolve(get),
|
|
472
481
|
droppable: false, // Cannot rearrange query collections.
|
|
473
482
|
navigable: state.navigableCollections,
|
|
474
483
|
}),
|
|
@@ -486,15 +495,15 @@ export default (context: PluginContext) => {
|
|
|
486
495
|
|
|
487
496
|
// Static schema records.
|
|
488
497
|
createExtension({
|
|
489
|
-
id: `${
|
|
498
|
+
id: `${meta.id}/static-schemas`,
|
|
490
499
|
connector: (node) => {
|
|
491
500
|
const client = context.getCapability(ClientCapabilities.Client);
|
|
492
|
-
return
|
|
493
|
-
pipe(
|
|
501
|
+
return Atom.make((get) =>
|
|
502
|
+
Function.pipe(
|
|
494
503
|
get(node),
|
|
495
504
|
Option.flatMap((node) =>
|
|
496
|
-
Obj.instanceOf(
|
|
497
|
-
|
|
505
|
+
Obj.instanceOf(Collection.QueryCollection, node.data) &&
|
|
506
|
+
getTypenameFromQuery(node.data.query) === StoredSchema.typename
|
|
498
507
|
? Option.some(node.data)
|
|
499
508
|
: Option.none(),
|
|
500
509
|
),
|
|
@@ -503,7 +512,7 @@ export default (context: PluginContext) => {
|
|
|
503
512
|
return space?.properties.staticRecords ? Option.some(space) : Option.none();
|
|
504
513
|
}),
|
|
505
514
|
Option.map((space) => {
|
|
506
|
-
return get(
|
|
515
|
+
return get(atomFromSignal(() => (space.properties.staticRecords ?? []) as string[]))
|
|
507
516
|
.map((typename) =>
|
|
508
517
|
client.graph.schemaRegistry.schemas.find((schema) => Type.getTypename(schema) === typename),
|
|
509
518
|
)
|
|
@@ -518,11 +527,11 @@ export default (context: PluginContext) => {
|
|
|
518
527
|
|
|
519
528
|
// Create static schema actions.
|
|
520
529
|
createExtension({
|
|
521
|
-
id: `${
|
|
530
|
+
id: `${meta.id}/static-schema-actions`,
|
|
522
531
|
actions: (node) => {
|
|
523
|
-
let query: QueryResult<
|
|
524
|
-
return
|
|
525
|
-
pipe(
|
|
532
|
+
let query: QueryResult<View.View> | undefined;
|
|
533
|
+
return Atom.make((get) =>
|
|
534
|
+
Function.pipe(
|
|
526
535
|
get(node),
|
|
527
536
|
Option.flatMap((node) => {
|
|
528
537
|
const space = isSpace(node.properties.space) ? node.properties.space : undefined;
|
|
@@ -531,14 +540,16 @@ export default (context: PluginContext) => {
|
|
|
531
540
|
Option.map(({ space, schema }) => {
|
|
532
541
|
if (!query) {
|
|
533
542
|
// TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
|
|
534
|
-
query = space.db.query(Filter.type(
|
|
543
|
+
query = space.db.query(Filter.type(View.View));
|
|
535
544
|
}
|
|
536
545
|
|
|
537
|
-
const views = get(
|
|
546
|
+
const views = get(atomFromQuery(query));
|
|
538
547
|
const filteredViews = get(
|
|
539
|
-
|
|
548
|
+
atomFromSignal(() =>
|
|
540
549
|
// TODO(wittjosiah): Remove cast.
|
|
541
|
-
views.filter(
|
|
550
|
+
views.filter(
|
|
551
|
+
(view) => getTypenameFromQuery(view.query.ast) === Type.getTypename(schema as Type.Obj.Any),
|
|
552
|
+
),
|
|
542
553
|
),
|
|
543
554
|
);
|
|
544
555
|
const deletable = filteredViews.length === 0;
|
|
@@ -564,41 +575,57 @@ export default (context: PluginContext) => {
|
|
|
564
575
|
|
|
565
576
|
// Create nodes for schema views.
|
|
566
577
|
createExtension({
|
|
567
|
-
id: `${
|
|
578
|
+
id: `${meta.id}/schema-views`,
|
|
568
579
|
connector: (node) => {
|
|
569
|
-
let query: QueryResult<
|
|
570
|
-
return
|
|
571
|
-
pipe(
|
|
580
|
+
let query: QueryResult<View.View> | undefined;
|
|
581
|
+
return Atom.make((get) =>
|
|
582
|
+
Function.pipe(
|
|
572
583
|
get(node),
|
|
573
584
|
Option.flatMap((node) => {
|
|
574
585
|
const space = getSpace(node.data) ?? (isSpace(node.properties.space) ? node.properties.space : undefined);
|
|
575
|
-
return space && (Obj.instanceOf(
|
|
586
|
+
return space && (Obj.instanceOf(StoredSchema, node.data) || Schema.isSchema(node.data))
|
|
576
587
|
? Option.some({ space, schema: node.data })
|
|
577
588
|
: Option.none();
|
|
578
589
|
}),
|
|
579
590
|
Option.map(({ space, schema }) => {
|
|
580
591
|
if (!query) {
|
|
581
592
|
// TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
|
|
582
|
-
query = space.db.query(Filter.type(
|
|
593
|
+
query = space.db.query(Filter.type(View.View));
|
|
583
594
|
}
|
|
584
595
|
|
|
585
596
|
// TODO(wittjosiah): Remove cast.
|
|
586
597
|
const typename = Schema.isSchema(schema) ? Type.getTypename(schema as Type.Obj.Any) : schema.typename;
|
|
587
|
-
return
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
598
|
+
return (
|
|
599
|
+
get(atomFromQuery(query))
|
|
600
|
+
.filter((view) => getTypenameFromQuery(view.query.ast) === typename)
|
|
601
|
+
// Filter out Collection views from Projects.
|
|
602
|
+
.filter((view) =>
|
|
603
|
+
get(
|
|
604
|
+
atomFromSignal(() => {
|
|
605
|
+
const presentation = view.presentation.target;
|
|
606
|
+
if (presentation) {
|
|
607
|
+
const typename = Obj.getTypename(presentation);
|
|
608
|
+
return typename !== Collection.Collection.typename;
|
|
609
|
+
} else {
|
|
610
|
+
return false;
|
|
611
|
+
}
|
|
597
612
|
}),
|
|
598
613
|
),
|
|
599
|
-
)
|
|
600
|
-
|
|
601
|
-
|
|
614
|
+
)
|
|
615
|
+
.map((view) =>
|
|
616
|
+
get(
|
|
617
|
+
atomFromSignal(() =>
|
|
618
|
+
createObjectNode({
|
|
619
|
+
object: view,
|
|
620
|
+
space,
|
|
621
|
+
resolve: resolve(get),
|
|
622
|
+
droppable: false,
|
|
623
|
+
}),
|
|
624
|
+
),
|
|
625
|
+
),
|
|
626
|
+
)
|
|
627
|
+
.filter(isNonNullable)
|
|
628
|
+
);
|
|
602
629
|
}),
|
|
603
630
|
Option.getOrElse(() => []),
|
|
604
631
|
),
|
|
@@ -608,65 +635,74 @@ export default (context: PluginContext) => {
|
|
|
608
635
|
|
|
609
636
|
// Create record nodes.
|
|
610
637
|
createExtension({
|
|
611
|
-
id: `${
|
|
638
|
+
id: `${meta.id}/records`,
|
|
612
639
|
resolver: (id) => {
|
|
613
640
|
let query: QueryResult<Type.Expando> | undefined;
|
|
614
|
-
return
|
|
641
|
+
return Atom.make((get) => {
|
|
615
642
|
const client = context.getCapability(ClientCapabilities.Client);
|
|
616
|
-
const
|
|
617
|
-
if (!
|
|
643
|
+
const dxn = DXN.tryParse(id)?.asEchoDXN();
|
|
644
|
+
if (!dxn || !dxn.spaceId) {
|
|
618
645
|
return null;
|
|
619
646
|
}
|
|
620
647
|
|
|
621
|
-
const space = client.spaces.get(spaceId);
|
|
648
|
+
const space = client.spaces.get(dxn.spaceId);
|
|
622
649
|
if (!space) {
|
|
623
650
|
return null;
|
|
624
651
|
}
|
|
625
652
|
|
|
626
653
|
if (!query) {
|
|
627
|
-
query = space.db.query(Filter.ids(
|
|
654
|
+
query = space.db.query(Filter.ids(dxn.echoId));
|
|
628
655
|
}
|
|
629
656
|
|
|
630
|
-
const object = get(
|
|
657
|
+
const object = get(atomFromQuery(query)).at(0);
|
|
631
658
|
if (!object) {
|
|
632
659
|
return null;
|
|
633
660
|
}
|
|
634
661
|
|
|
635
|
-
return createObjectNode({
|
|
662
|
+
return createObjectNode({
|
|
663
|
+
object,
|
|
664
|
+
space,
|
|
665
|
+
resolve: resolve(get),
|
|
666
|
+
disposition: 'hidden',
|
|
667
|
+
});
|
|
636
668
|
});
|
|
637
669
|
},
|
|
638
670
|
}),
|
|
639
671
|
|
|
640
672
|
// Create collection actions and action groups.
|
|
641
673
|
createExtension({
|
|
642
|
-
id: `${
|
|
674
|
+
id: `${meta.id}/object-actions`,
|
|
643
675
|
actions: (node) => {
|
|
644
|
-
let query: QueryResult<
|
|
645
|
-
return
|
|
646
|
-
pipe(
|
|
676
|
+
let query: QueryResult<View.View> | undefined;
|
|
677
|
+
return Atom.make((get) =>
|
|
678
|
+
Function.pipe(
|
|
647
679
|
get(node),
|
|
648
680
|
Option.flatMap((node) => {
|
|
649
681
|
const space = getSpace(node.data);
|
|
650
|
-
return space && Obj.isObject(node.data)
|
|
682
|
+
return space && Obj.isObject(node.data) && Obj.getTypename(node.data) === node.type
|
|
683
|
+
? Option.some({ space, object: node.data })
|
|
684
|
+
: Option.none();
|
|
651
685
|
}),
|
|
652
686
|
Option.flatMap(({ space, object }) => {
|
|
653
|
-
const isSchema = Obj.instanceOf(
|
|
687
|
+
const isSchema = Obj.instanceOf(StoredSchema, object);
|
|
654
688
|
if (!query && isSchema) {
|
|
655
689
|
// TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
|
|
656
|
-
query = space.db.query(Filter.type(
|
|
690
|
+
query = space.db.query(Filter.type(View.View));
|
|
657
691
|
}
|
|
658
692
|
|
|
659
693
|
let deletable =
|
|
660
694
|
!isSchema &&
|
|
661
695
|
// Don't allow the Records smart collection to be deleted.
|
|
662
696
|
!(
|
|
663
|
-
Obj.instanceOf(
|
|
664
|
-
|
|
697
|
+
Obj.instanceOf(Collection.QueryCollection, object) &&
|
|
698
|
+
getTypenameFromQuery(object.query) === StoredSchema.typename
|
|
665
699
|
);
|
|
666
700
|
if (isSchema && query) {
|
|
667
|
-
const views = get(
|
|
701
|
+
const views = get(atomFromQuery(query));
|
|
668
702
|
const filteredViews = get(
|
|
669
|
-
|
|
703
|
+
atomFromSignal(() =>
|
|
704
|
+
views.filter((view) => getTypenameFromQuery(view.query.ast) === object.typename),
|
|
705
|
+
),
|
|
670
706
|
);
|
|
671
707
|
deletable = filteredViews.length === 0;
|
|
672
708
|
}
|
|
@@ -685,7 +721,7 @@ export default (context: PluginContext) => {
|
|
|
685
721
|
dispatch: dispatcher.dispatchPromise,
|
|
686
722
|
objectForms,
|
|
687
723
|
deletable,
|
|
688
|
-
navigable: get(
|
|
724
|
+
navigable: get(atomFromSignal(() => state.navigableCollections)),
|
|
689
725
|
});
|
|
690
726
|
}
|
|
691
727
|
}),
|
|
@@ -698,19 +734,19 @@ export default (context: PluginContext) => {
|
|
|
698
734
|
|
|
699
735
|
// View selected objects.
|
|
700
736
|
createExtension({
|
|
701
|
-
id: `${
|
|
737
|
+
id: `${meta.id}/selected-objects`,
|
|
702
738
|
connector: (node) =>
|
|
703
|
-
|
|
704
|
-
pipe(
|
|
739
|
+
Atom.make((get) =>
|
|
740
|
+
Function.pipe(
|
|
705
741
|
get(node),
|
|
706
|
-
Option.flatMap((node) => (Obj.instanceOf(
|
|
742
|
+
Option.flatMap((node) => (Obj.instanceOf(View.View, node.data) ? Option.some(node) : Option.none())),
|
|
707
743
|
Option.map((node) => [
|
|
708
744
|
{
|
|
709
745
|
id: [node.id, 'selected-objects'].join(ATTENDABLE_PATH_SEPARATOR),
|
|
710
746
|
type: PLANK_COMPANION_TYPE,
|
|
711
747
|
data: 'selected-objects',
|
|
712
748
|
properties: {
|
|
713
|
-
label: ['companion selected objects label', { ns:
|
|
749
|
+
label: ['companion selected objects label', { ns: meta.id }],
|
|
714
750
|
icon: 'ph--tree-view--regular',
|
|
715
751
|
disposition: 'hidden',
|
|
716
752
|
},
|
|
@@ -723,10 +759,10 @@ export default (context: PluginContext) => {
|
|
|
723
759
|
|
|
724
760
|
// Object settings plank companion.
|
|
725
761
|
createExtension({
|
|
726
|
-
id: `${
|
|
762
|
+
id: `${meta.id}/settings`,
|
|
727
763
|
connector: (node) =>
|
|
728
|
-
|
|
729
|
-
pipe(
|
|
764
|
+
Atom.make((get) =>
|
|
765
|
+
Function.pipe(
|
|
730
766
|
get(node),
|
|
731
767
|
Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node) : Option.none())),
|
|
732
768
|
Option.map((node) => [
|
|
@@ -735,7 +771,7 @@ export default (context: PluginContext) => {
|
|
|
735
771
|
type: PLANK_COMPANION_TYPE,
|
|
736
772
|
data: 'settings',
|
|
737
773
|
properties: {
|
|
738
|
-
label: ['object settings label', { ns:
|
|
774
|
+
label: ['object settings label', { ns: meta.id }],
|
|
739
775
|
icon: 'ph--sliders--regular',
|
|
740
776
|
disposition: 'hidden',
|
|
741
777
|
position: 'fallback',
|