@dxos/plugin-space 0.8.4-main.fd6878d → 0.8.4-main.fffef41
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-VZW75QPJ.mjs → app-graph-builder-DTM7BJ6D.mjs} +114 -97
- package/dist/lib/browser/app-graph-builder-DTM7BJ6D.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-YPHYVZAP.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-PSIBVBTA.mjs → chunk-CKACGS7T.mjs} +576 -500
- 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-SMB4DGYO.mjs → chunk-KFUMADZF.mjs} +184 -60
- package/dist/lib/browser/chunk-KFUMADZF.mjs.map +7 -0
- package/dist/lib/browser/{chunk-WAXS2ZVX.mjs → chunk-VGKOXAPE.mjs} +27 -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-3UFG6LQQ.mjs → chunk-ZQMSGD5J.mjs} +44 -22
- 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 +89 -91
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-TS6CCKST.mjs → intent-resolver-3FNTO3VW.mjs} +103 -85
- 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-V3ARS2BP.mjs → react-surface-TTHS332A.mjs} +75 -109
- package/dist/lib/browser/react-surface-TTHS332A.mjs.map +7 -0
- package/dist/lib/browser/{schema-defs-5LBA43X5.mjs → schema-defs-QPI2JU3X.mjs} +6 -6
- package/dist/lib/browser/schema-defs-QPI2JU3X.mjs.map +7 -0
- package/dist/lib/browser/{settings-FLLBP5KI.mjs → settings-45PGPO2V.mjs} +5 -5
- package/dist/lib/browser/{settings-FLLBP5KI.mjs.map → settings-45PGPO2V.mjs.map} +1 -1
- package/dist/lib/browser/{spaces-ready-FXEP6XEW.mjs → spaces-ready-QCND4DVY.mjs} +15 -14
- package/dist/lib/browser/spaces-ready-QCND4DVY.mjs.map +7 -0
- package/dist/lib/browser/{state-K3UBPKYP.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-XNVQOJLE.mjs → app-graph-builder-FBJFWI4H.mjs} +114 -97
- package/dist/lib/node-esm/app-graph-builder-FBJFWI4H.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-PKVLWV6V.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-S7MKRQHY.mjs → chunk-6VEONPNZ.mjs} +44 -22
- 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-CTQMR7E3.mjs → chunk-OK2L7N2F.mjs} +184 -60
- package/dist/lib/node-esm/chunk-OK2L7N2F.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-HYIZVPOA.mjs → chunk-QBRPYAEL.mjs} +27 -13
- package/dist/lib/node-esm/chunk-QBRPYAEL.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-KYUHPPRN.mjs → chunk-XGAMJC5C.mjs} +576 -500
- 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 +89 -91
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-W6P27SCF.mjs → intent-resolver-6O5FSB7Z.mjs} +103 -85
- 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-N27KETKT.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-TNPAUQCM.mjs → react-surface-Y7FTEIDF.mjs} +75 -109
- package/dist/lib/node-esm/react-surface-Y7FTEIDF.mjs.map +7 -0
- package/dist/lib/node-esm/{schema-defs-TPWZPDCR.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-WKUWY3P6.mjs → settings-6FO65BA6.mjs} +5 -5
- package/dist/lib/node-esm/{settings-WKUWY3P6.mjs.map → settings-6FO65BA6.mjs.map} +1 -1
- package/dist/lib/node-esm/{spaces-ready-PQLLIO5W.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-4M5A6OSB.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 +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 +6 -5
- 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/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/schema-defs.d.ts +1 -1
- 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/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 +1704 -4
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +6 -4
- 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 +1707 -0
- package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts.map +1 -0
- package/dist/types/src/components/MembersContainer/index.d.ts +2 -0
- package/dist/types/src/components/MembersContainer/index.d.ts.map +1 -0
- package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +9 -0
- package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -0
- package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts +10 -0
- package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -0
- package/dist/types/src/components/ObjectDetailsPanel/index.d.ts +3 -0
- package/dist/types/src/components/ObjectDetailsPanel/index.d.ts.map +1 -0
- package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts +7 -0
- package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts.map +1 -0
- package/dist/types/src/components/ObjectRenamePopover/index.d.ts +2 -0
- package/dist/types/src/components/ObjectRenamePopover/index.d.ts.map +1 -0
- package/dist/types/src/components/ObjectSettings/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/ObjectSettingsContainer.d.ts.map +1 -1
- package/dist/types/src/components/ObjectSettings/index.d.ts +2 -1
- package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -1
- package/dist/types/src/components/RecordArticle.d.ts +5 -0
- package/dist/types/src/components/RecordArticle.d.ts.map +1 -0
- package/dist/types/src/components/RecordArticle.stories.d.ts +1707 -0
- 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/SpacePresence.stories.d.ts +1537 -0
- package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts.map +1 -0
- package/dist/types/src/components/SpacePresence/index.d.ts +2 -0
- package/dist/types/src/components/SpacePresence/index.d.ts.map +1 -0
- package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts +7 -0
- package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts.map +1 -0
- package/dist/types/src/components/SpaceRenamePopover/index.d.ts +2 -0
- package/dist/types/src/components/SpaceRenamePopover/index.d.ts.map +1 -0
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1537 -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 +1538 -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 -14
- 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 +1332 -22
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +92 -97
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +12 -8
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +65 -59
- package/src/SpacePlugin.ts +228 -218
- package/src/capabilities/app-graph-builder.ts +184 -135
- package/src/capabilities/app-graph-serializer.ts +12 -12
- package/src/capabilities/capabilities.ts +17 -11
- package/src/capabilities/identity-created.ts +2 -2
- package/src/capabilities/index.ts +0 -1
- package/src/capabilities/intent-resolver.ts +89 -62
- package/src/capabilities/react-root.tsx +4 -3
- package/src/capabilities/react-surface.tsx +69 -145
- 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 +15 -15
- package/src/components/CreateDialog/CreateObjectDialog.tsx +48 -31
- package/src/components/CreateDialog/CreateObjectPanel.tsx +22 -11
- package/src/components/CreateDialog/CreateSpaceDialog.tsx +30 -11
- package/src/components/{JoinDialog.tsx → JoinDialog/JoinDialog.tsx} +26 -10
- package/src/components/JoinDialog/index.ts +5 -0
- package/src/components/MembersContainer/MembersContainer.stories.tsx +56 -0
- package/src/components/{MembersContainer.tsx → MembersContainer/MembersContainer.tsx} +21 -20
- 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 +4 -3
- package/src/components/ObjectSettings/index.ts +3 -1
- package/src/components/RecordArticle.stories.tsx +115 -0
- package/src/components/RecordArticle.tsx +114 -0
- package/src/components/SchemaContainer.tsx +23 -26
- package/src/components/SpacePluginSettings.tsx +15 -10
- package/src/components/{SpacePresence.stories.tsx → SpacePresence/SpacePresence.stories.tsx} +22 -22
- 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 +15 -8
- package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +45 -24
- package/src/components/SyncStatus/InlineSyncStatus.tsx +8 -8
- package/src/components/SyncStatus/SyncStatus.stories.tsx +7 -8
- package/src/components/SyncStatus/SyncStatus.tsx +107 -11
- package/src/components/ViewEditor.tsx +51 -23
- package/src/components/index.ts +7 -8
- package/src/events.ts +6 -6
- package/src/helpers/index.ts +5 -0
- package/src/helpers/query.test.ts +24 -0
- package/src/helpers/query.ts +158 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useActiveSpace.ts +3 -2
- 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 +26 -10
- package/src/types/types.ts +42 -23
- package/src/util.tsx +183 -62
- package/dist/lib/browser/CollectionMain-D2B75XBS.mjs.map +0 -7
- package/dist/lib/browser/ObjectDetailsPanel-SY6FYTYC.mjs +0 -88
- package/dist/lib/browser/ObjectDetailsPanel-SY6FYTYC.mjs.map +0 -7
- package/dist/lib/browser/RecordMain-TEBGAVSL.mjs +0 -68
- package/dist/lib/browser/RecordMain-TEBGAVSL.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-VZW75QPJ.mjs.map +0 -7
- package/dist/lib/browser/app-graph-serializer-YPHYVZAP.mjs.map +0 -7
- package/dist/lib/browser/chunk-3UFG6LQQ.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-DYKFFVN6.mjs +0 -94
- package/dist/lib/browser/chunk-DYKFFVN6.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-PSIBVBTA.mjs.map +0 -7
- package/dist/lib/browser/chunk-Q5EEPP3S.mjs +0 -20
- package/dist/lib/browser/chunk-Q5EEPP3S.mjs.map +0 -7
- package/dist/lib/browser/chunk-SMB4DGYO.mjs.map +0 -7
- package/dist/lib/browser/chunk-WAXS2ZVX.mjs.map +0 -7
- package/dist/lib/browser/identity-created-T6ZNVE7S.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-TS6CCKST.mjs.map +0 -7
- package/dist/lib/browser/react-root-RQGTZ2ZO.mjs +0 -29
- package/dist/lib/browser/react-root-RQGTZ2ZO.mjs.map +0 -7
- package/dist/lib/browser/react-surface-V3ARS2BP.mjs.map +0 -7
- package/dist/lib/browser/schema-defs-5LBA43X5.mjs.map +0 -7
- package/dist/lib/browser/schema-tools-LPL35WOJ.mjs +0 -124
- package/dist/lib/browser/schema-tools-LPL35WOJ.mjs.map +0 -7
- package/dist/lib/browser/spaces-ready-FXEP6XEW.mjs.map +0 -7
- package/dist/lib/browser/state-K3UBPKYP.mjs.map +0 -7
- package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs.map +0 -7
- package/dist/lib/node-esm/ObjectDetailsPanel-3MYLTMXN.mjs +0 -89
- package/dist/lib/node-esm/ObjectDetailsPanel-3MYLTMXN.mjs.map +0 -7
- package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs +0 -70
- package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-XNVQOJLE.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-serializer-PKVLWV6V.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-7MZ3J3LI.mjs +0 -21
- package/dist/lib/node-esm/chunk-7MZ3J3LI.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-CTQMR7E3.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-HWNG4MEU.mjs +0 -15
- package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HYIZVPOA.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-KLG4Y4GY.mjs +0 -96
- package/dist/lib/node-esm/chunk-KLG4Y4GY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-KYUHPPRN.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-S7MKRQHY.mjs.map +0 -7
- package/dist/lib/node-esm/identity-created-AL7NNCKH.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-W6P27SCF.mjs.map +0 -7
- package/dist/lib/node-esm/react-root-N27KETKT.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-TNPAUQCM.mjs.map +0 -7
- package/dist/lib/node-esm/schema-defs-TPWZPDCR.mjs.map +0 -7
- package/dist/lib/node-esm/schema-tools-PJE2FKWH.mjs +0 -126
- package/dist/lib/node-esm/schema-tools-PJE2FKWH.mjs.map +0 -7
- package/dist/lib/node-esm/spaces-ready-PQLLIO5W.mjs.map +0 -7
- package/dist/lib/node-esm/state-4M5A6OSB.mjs.map +0 -7
- package/dist/types/src/capabilities/schema-tool.test.d.ts +0 -2
- package/dist/types/src/capabilities/schema-tool.test.d.ts.map +0 -1
- package/dist/types/src/capabilities/schema-tools.d.ts +0 -13
- package/dist/types/src/capabilities/schema-tools.d.ts.map +0 -1
- package/dist/types/src/components/CollectionMain.d.ts +0 -7
- package/dist/types/src/components/CollectionMain.d.ts.map +0 -1
- package/dist/types/src/components/JoinDialog.d.ts.map +0 -1
- package/dist/types/src/components/MembersContainer.d.ts.map +0 -1
- package/dist/types/src/components/MembersContainer.stories.d.ts +0 -8
- package/dist/types/src/components/MembersContainer.stories.d.ts.map +0 -1
- package/dist/types/src/components/ObjectDetailsPanel.d.ts +0 -9
- package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +0 -1
- package/dist/types/src/components/PersistenceStatus.d.ts +0 -6
- package/dist/types/src/components/PersistenceStatus.d.ts.map +0 -1
- package/dist/types/src/components/PopoverRenameObject.d.ts +0 -7
- package/dist/types/src/components/PopoverRenameObject.d.ts.map +0 -1
- package/dist/types/src/components/PopoverRenameSpace.d.ts +0 -7
- package/dist/types/src/components/PopoverRenameSpace.d.ts.map +0 -1
- package/dist/types/src/components/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/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-tool.test.ts +0 -44
- package/src/capabilities/schema-tools.ts +0 -125
- package/src/components/MembersContainer.stories.tsx +0 -31
- package/src/components/ObjectDetailsPanel.tsx +0 -77
- package/src/components/PersistenceStatus.tsx +0 -83
- package/src/components/RecordMain.tsx +0 -43
|
@@ -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,20 +438,19 @@ 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
|
-
|
|
444
|
-
|
|
445
|
-
: Option.none();
|
|
452
|
+
const typename = getTypenameFromQuery(collection.query);
|
|
453
|
+
return typename && space ? Option.some({ typename, space }) : Option.none();
|
|
446
454
|
}),
|
|
447
455
|
Option.map(({ typename, space }) => {
|
|
448
456
|
const state = context.getCapability(SpaceCapabilities.State);
|
|
@@ -454,26 +462,30 @@ export default (context: PluginContext) => {
|
|
|
454
462
|
// It will return all objects in the collection, not just the ones of the given type.
|
|
455
463
|
// However this works fine for now because this query is only used for exclusions.
|
|
456
464
|
Query.select(Filter.typename(typename))
|
|
457
|
-
.referencedBy(
|
|
465
|
+
.referencedBy(Collection.Collection, 'objects')
|
|
458
466
|
.reference('objects'),
|
|
459
467
|
),
|
|
460
468
|
);
|
|
461
469
|
}
|
|
462
|
-
return
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
470
|
+
return (
|
|
471
|
+
get(atomFromQuery(query))
|
|
472
|
+
// TODO(wittjosiah): This should be the default sort order.
|
|
473
|
+
.toSorted((a, b) => a.id.localeCompare(b.id))
|
|
474
|
+
.map((object) =>
|
|
475
|
+
get(
|
|
476
|
+
atomFromSignal(() =>
|
|
477
|
+
createObjectNode({
|
|
478
|
+
object,
|
|
479
|
+
space,
|
|
480
|
+
resolve: resolve(get),
|
|
481
|
+
droppable: false, // Cannot rearrange query collections.
|
|
482
|
+
navigable: state.navigableCollections,
|
|
483
|
+
}),
|
|
484
|
+
),
|
|
473
485
|
),
|
|
474
|
-
)
|
|
475
|
-
|
|
476
|
-
|
|
486
|
+
)
|
|
487
|
+
.filter(isNonNullable)
|
|
488
|
+
);
|
|
477
489
|
}),
|
|
478
490
|
Option.getOrElse(() => []),
|
|
479
491
|
),
|
|
@@ -483,15 +495,15 @@ export default (context: PluginContext) => {
|
|
|
483
495
|
|
|
484
496
|
// Static schema records.
|
|
485
497
|
createExtension({
|
|
486
|
-
id: `${
|
|
498
|
+
id: `${meta.id}/static-schemas`,
|
|
487
499
|
connector: (node) => {
|
|
488
500
|
const client = context.getCapability(ClientCapabilities.Client);
|
|
489
|
-
return
|
|
490
|
-
pipe(
|
|
501
|
+
return Atom.make((get) =>
|
|
502
|
+
Function.pipe(
|
|
491
503
|
get(node),
|
|
492
504
|
Option.flatMap((node) =>
|
|
493
|
-
Obj.instanceOf(
|
|
494
|
-
node.data.query
|
|
505
|
+
Obj.instanceOf(Collection.QueryCollection, node.data) &&
|
|
506
|
+
getTypenameFromQuery(node.data.query) === StoredSchema.typename
|
|
495
507
|
? Option.some(node.data)
|
|
496
508
|
: Option.none(),
|
|
497
509
|
),
|
|
@@ -500,7 +512,7 @@ export default (context: PluginContext) => {
|
|
|
500
512
|
return space?.properties.staticRecords ? Option.some(space) : Option.none();
|
|
501
513
|
}),
|
|
502
514
|
Option.map((space) => {
|
|
503
|
-
return get(
|
|
515
|
+
return get(atomFromSignal(() => (space.properties.staticRecords ?? []) as string[]))
|
|
504
516
|
.map((typename) =>
|
|
505
517
|
client.graph.schemaRegistry.schemas.find((schema) => Type.getTypename(schema) === typename),
|
|
506
518
|
)
|
|
@@ -515,11 +527,11 @@ export default (context: PluginContext) => {
|
|
|
515
527
|
|
|
516
528
|
// Create static schema actions.
|
|
517
529
|
createExtension({
|
|
518
|
-
id: `${
|
|
530
|
+
id: `${meta.id}/static-schema-actions`,
|
|
519
531
|
actions: (node) => {
|
|
520
|
-
let query: QueryResult<
|
|
521
|
-
return
|
|
522
|
-
pipe(
|
|
532
|
+
let query: QueryResult<View.View> | undefined;
|
|
533
|
+
return Atom.make((get) =>
|
|
534
|
+
Function.pipe(
|
|
523
535
|
get(node),
|
|
524
536
|
Option.flatMap((node) => {
|
|
525
537
|
const space = isSpace(node.properties.space) ? node.properties.space : undefined;
|
|
@@ -528,20 +540,32 @@ export default (context: PluginContext) => {
|
|
|
528
540
|
Option.map(({ space, schema }) => {
|
|
529
541
|
if (!query) {
|
|
530
542
|
// TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
|
|
531
|
-
query = space.db.query(Filter.type(
|
|
543
|
+
query = space.db.query(Filter.type(View.View));
|
|
532
544
|
}
|
|
533
545
|
|
|
534
|
-
const views = get(
|
|
546
|
+
const views = get(atomFromQuery(query));
|
|
535
547
|
const filteredViews = get(
|
|
536
|
-
|
|
548
|
+
atomFromSignal(() =>
|
|
537
549
|
// TODO(wittjosiah): Remove cast.
|
|
538
|
-
views.filter(
|
|
550
|
+
views.filter(
|
|
551
|
+
(view) => getTypenameFromQuery(view.query.ast) === Type.getTypename(schema as Type.Obj.Any),
|
|
552
|
+
),
|
|
539
553
|
),
|
|
540
554
|
);
|
|
541
555
|
const deletable = filteredViews.length === 0;
|
|
542
556
|
|
|
557
|
+
const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
|
|
558
|
+
if (!dispatcher) {
|
|
559
|
+
return [];
|
|
560
|
+
}
|
|
561
|
+
|
|
543
562
|
// TODO(wittjosiah): Remove cast.
|
|
544
|
-
return createStaticSchemaActions({
|
|
563
|
+
return createStaticSchemaActions({
|
|
564
|
+
schema: schema as Type.Obj.Any,
|
|
565
|
+
space,
|
|
566
|
+
dispatch: dispatcher.dispatchPromise,
|
|
567
|
+
deletable,
|
|
568
|
+
});
|
|
545
569
|
}),
|
|
546
570
|
Option.getOrElse(() => []),
|
|
547
571
|
),
|
|
@@ -551,41 +575,57 @@ export default (context: PluginContext) => {
|
|
|
551
575
|
|
|
552
576
|
// Create nodes for schema views.
|
|
553
577
|
createExtension({
|
|
554
|
-
id: `${
|
|
578
|
+
id: `${meta.id}/schema-views`,
|
|
555
579
|
connector: (node) => {
|
|
556
|
-
let query: QueryResult<
|
|
557
|
-
return
|
|
558
|
-
pipe(
|
|
580
|
+
let query: QueryResult<View.View> | undefined;
|
|
581
|
+
return Atom.make((get) =>
|
|
582
|
+
Function.pipe(
|
|
559
583
|
get(node),
|
|
560
584
|
Option.flatMap((node) => {
|
|
561
585
|
const space = getSpace(node.data) ?? (isSpace(node.properties.space) ? node.properties.space : undefined);
|
|
562
|
-
return space && (Obj.instanceOf(
|
|
586
|
+
return space && (Obj.instanceOf(StoredSchema, node.data) || Schema.isSchema(node.data))
|
|
563
587
|
? Option.some({ space, schema: node.data })
|
|
564
588
|
: Option.none();
|
|
565
589
|
}),
|
|
566
590
|
Option.map(({ space, schema }) => {
|
|
567
591
|
if (!query) {
|
|
568
592
|
// TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
|
|
569
|
-
query = space.db.query(Filter.type(
|
|
593
|
+
query = space.db.query(Filter.type(View.View));
|
|
570
594
|
}
|
|
571
595
|
|
|
572
596
|
// TODO(wittjosiah): Remove cast.
|
|
573
597
|
const typename = Schema.isSchema(schema) ? Type.getTypename(schema as Type.Obj.Any) : schema.typename;
|
|
574
|
-
return
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
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
|
+
}
|
|
584
612
|
}),
|
|
585
613
|
),
|
|
586
|
-
)
|
|
587
|
-
|
|
588
|
-
|
|
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
|
+
);
|
|
589
629
|
}),
|
|
590
630
|
Option.getOrElse(() => []),
|
|
591
631
|
),
|
|
@@ -595,65 +635,74 @@ export default (context: PluginContext) => {
|
|
|
595
635
|
|
|
596
636
|
// Create record nodes.
|
|
597
637
|
createExtension({
|
|
598
|
-
id: `${
|
|
638
|
+
id: `${meta.id}/records`,
|
|
599
639
|
resolver: (id) => {
|
|
600
640
|
let query: QueryResult<Type.Expando> | undefined;
|
|
601
|
-
return
|
|
641
|
+
return Atom.make((get) => {
|
|
602
642
|
const client = context.getCapability(ClientCapabilities.Client);
|
|
603
|
-
const
|
|
604
|
-
if (!
|
|
643
|
+
const dxn = DXN.tryParse(id)?.asEchoDXN();
|
|
644
|
+
if (!dxn || !dxn.spaceId) {
|
|
605
645
|
return null;
|
|
606
646
|
}
|
|
607
647
|
|
|
608
|
-
const space = client.spaces.get(spaceId);
|
|
648
|
+
const space = client.spaces.get(dxn.spaceId);
|
|
609
649
|
if (!space) {
|
|
610
650
|
return null;
|
|
611
651
|
}
|
|
612
652
|
|
|
613
653
|
if (!query) {
|
|
614
|
-
query = space.db.query(Filter.ids(
|
|
654
|
+
query = space.db.query(Filter.ids(dxn.echoId));
|
|
615
655
|
}
|
|
616
656
|
|
|
617
|
-
const object = get(
|
|
657
|
+
const object = get(atomFromQuery(query)).at(0);
|
|
618
658
|
if (!object) {
|
|
619
659
|
return null;
|
|
620
660
|
}
|
|
621
661
|
|
|
622
|
-
return createObjectNode({
|
|
662
|
+
return createObjectNode({
|
|
663
|
+
object,
|
|
664
|
+
space,
|
|
665
|
+
resolve: resolve(get),
|
|
666
|
+
disposition: 'hidden',
|
|
667
|
+
});
|
|
623
668
|
});
|
|
624
669
|
},
|
|
625
670
|
}),
|
|
626
671
|
|
|
627
672
|
// Create collection actions and action groups.
|
|
628
673
|
createExtension({
|
|
629
|
-
id: `${
|
|
674
|
+
id: `${meta.id}/object-actions`,
|
|
630
675
|
actions: (node) => {
|
|
631
|
-
let query: QueryResult<
|
|
632
|
-
return
|
|
633
|
-
pipe(
|
|
676
|
+
let query: QueryResult<View.View> | undefined;
|
|
677
|
+
return Atom.make((get) =>
|
|
678
|
+
Function.pipe(
|
|
634
679
|
get(node),
|
|
635
680
|
Option.flatMap((node) => {
|
|
636
681
|
const space = getSpace(node.data);
|
|
637
|
-
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();
|
|
638
685
|
}),
|
|
639
686
|
Option.flatMap(({ space, object }) => {
|
|
640
|
-
const isSchema = Obj.instanceOf(
|
|
687
|
+
const isSchema = Obj.instanceOf(StoredSchema, object);
|
|
641
688
|
if (!query && isSchema) {
|
|
642
689
|
// TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).
|
|
643
|
-
query = space.db.query(Filter.type(
|
|
690
|
+
query = space.db.query(Filter.type(View.View));
|
|
644
691
|
}
|
|
645
692
|
|
|
646
693
|
let deletable =
|
|
647
694
|
!isSchema &&
|
|
648
695
|
// Don't allow the Records smart collection to be deleted.
|
|
649
696
|
!(
|
|
650
|
-
Obj.instanceOf(
|
|
651
|
-
object.query
|
|
697
|
+
Obj.instanceOf(Collection.QueryCollection, object) &&
|
|
698
|
+
getTypenameFromQuery(object.query) === StoredSchema.typename
|
|
652
699
|
);
|
|
653
700
|
if (isSchema && query) {
|
|
654
|
-
const views = get(
|
|
701
|
+
const views = get(atomFromQuery(query));
|
|
655
702
|
const filteredViews = get(
|
|
656
|
-
|
|
703
|
+
atomFromSignal(() =>
|
|
704
|
+
views.filter((view) => getTypenameFromQuery(view.query.ast) === object.typename),
|
|
705
|
+
),
|
|
657
706
|
);
|
|
658
707
|
deletable = filteredViews.length === 0;
|
|
659
708
|
}
|
|
@@ -672,7 +721,7 @@ export default (context: PluginContext) => {
|
|
|
672
721
|
dispatch: dispatcher.dispatchPromise,
|
|
673
722
|
objectForms,
|
|
674
723
|
deletable,
|
|
675
|
-
navigable: get(
|
|
724
|
+
navigable: get(atomFromSignal(() => state.navigableCollections)),
|
|
676
725
|
});
|
|
677
726
|
}
|
|
678
727
|
}),
|
|
@@ -685,19 +734,19 @@ export default (context: PluginContext) => {
|
|
|
685
734
|
|
|
686
735
|
// View selected objects.
|
|
687
736
|
createExtension({
|
|
688
|
-
id: `${
|
|
737
|
+
id: `${meta.id}/selected-objects`,
|
|
689
738
|
connector: (node) =>
|
|
690
|
-
|
|
691
|
-
pipe(
|
|
739
|
+
Atom.make((get) =>
|
|
740
|
+
Function.pipe(
|
|
692
741
|
get(node),
|
|
693
|
-
Option.flatMap((node) => (Obj.instanceOf(
|
|
742
|
+
Option.flatMap((node) => (Obj.instanceOf(View.View, node.data) ? Option.some(node) : Option.none())),
|
|
694
743
|
Option.map((node) => [
|
|
695
744
|
{
|
|
696
745
|
id: [node.id, 'selected-objects'].join(ATTENDABLE_PATH_SEPARATOR),
|
|
697
746
|
type: PLANK_COMPANION_TYPE,
|
|
698
747
|
data: 'selected-objects',
|
|
699
748
|
properties: {
|
|
700
|
-
label: ['companion selected objects label', { ns:
|
|
749
|
+
label: ['companion selected objects label', { ns: meta.id }],
|
|
701
750
|
icon: 'ph--tree-view--regular',
|
|
702
751
|
disposition: 'hidden',
|
|
703
752
|
},
|
|
@@ -710,10 +759,10 @@ export default (context: PluginContext) => {
|
|
|
710
759
|
|
|
711
760
|
// Object settings plank companion.
|
|
712
761
|
createExtension({
|
|
713
|
-
id: `${
|
|
762
|
+
id: `${meta.id}/settings`,
|
|
714
763
|
connector: (node) =>
|
|
715
|
-
|
|
716
|
-
pipe(
|
|
764
|
+
Atom.make((get) =>
|
|
765
|
+
Function.pipe(
|
|
717
766
|
get(node),
|
|
718
767
|
Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node) : Option.none())),
|
|
719
768
|
Option.map((node) => [
|
|
@@ -722,7 +771,7 @@ export default (context: PluginContext) => {
|
|
|
722
771
|
type: PLANK_COMPANION_TYPE,
|
|
723
772
|
data: 'settings',
|
|
724
773
|
properties: {
|
|
725
|
-
label: ['object settings label', { ns:
|
|
774
|
+
label: ['object settings label', { ns: meta.id }],
|
|
726
775
|
icon: 'ph--sliders--regular',
|
|
727
776
|
disposition: 'hidden',
|
|
728
777
|
position: 'fallback',
|