@dxos/plugin-space 0.8.4-main.f9ba587 → 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/CollectionArticle-WTHWY4YS.mjs +31 -0
- 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-DTM7BJ6D.mjs +528 -0
- package/dist/lib/browser/app-graph-builder-DTM7BJ6D.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-UKYMBX4O.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-GVTXQCIW.mjs → chunk-CKACGS7T.mjs} +714 -571
- 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-WBSEOLEM.mjs → chunk-KFUMADZF.mjs} +301 -73
- package/dist/lib/browser/chunk-KFUMADZF.mjs.map +7 -0
- package/dist/lib/browser/{chunk-6VLSHG4A.mjs → chunk-VGKOXAPE.mjs} +87 -12
- 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-S6NY637J.mjs → chunk-ZQMSGD5J.mjs} +95 -19
- package/dist/lib/browser/chunk-ZQMSGD5J.mjs.map +7 -0
- package/dist/lib/browser/{identity-created-23XJJV2N.mjs → identity-created-NAXTPQXE.mjs} +6 -6
- package/dist/lib/browser/identity-created-NAXTPQXE.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +148 -59
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-WK5WYFH3.mjs → intent-resolver-3FNTO3VW.mjs} +236 -68
- 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-6C3YJNDK.mjs → react-surface-TTHS332A.mjs} +98 -100
- package/dist/lib/browser/react-surface-TTHS332A.mjs.map +7 -0
- package/dist/lib/browser/{schema-defs-K3B3OAH4.mjs → schema-defs-QPI2JU3X.mjs} +6 -6
- package/dist/lib/browser/schema-defs-QPI2JU3X.mjs.map +7 -0
- package/dist/lib/browser/{settings-XNWYRWNM.mjs → settings-45PGPO2V.mjs} +5 -5
- package/dist/lib/browser/{settings-XNWYRWNM.mjs.map → settings-45PGPO2V.mjs.map} +1 -1
- package/dist/lib/browser/{spaces-ready-K7NSNBHM.mjs → spaces-ready-QCND4DVY.mjs} +21 -18
- package/dist/lib/browser/spaces-ready-QCND4DVY.mjs.map +7 -0
- package/dist/lib/browser/{state-522XTUR4.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/CollectionArticle-KHXYT3SH.mjs +32 -0
- 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-FBJFWI4H.mjs +529 -0
- package/dist/lib/node-esm/app-graph-builder-FBJFWI4H.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-LA3IZDXJ.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-2THX6G4C.mjs → chunk-6VEONPNZ.mjs} +95 -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-HJJHLWKY.mjs → chunk-OK2L7N2F.mjs} +301 -73
- package/dist/lib/node-esm/chunk-OK2L7N2F.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-SXD6T2N4.mjs → chunk-QBRPYAEL.mjs} +87 -12
- package/dist/lib/node-esm/chunk-QBRPYAEL.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-OUBADVJE.mjs → chunk-XGAMJC5C.mjs} +714 -571
- 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-IJQO6GCR.mjs → identity-created-OXLKCJE3.mjs} +6 -6
- package/dist/lib/node-esm/identity-created-OXLKCJE3.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +148 -59
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-HSR27ME4.mjs → intent-resolver-6O5FSB7Z.mjs} +236 -68
- 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-HUK3ANLV.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-AGAWX7DD.mjs → react-surface-Y7FTEIDF.mjs} +98 -100
- package/dist/lib/node-esm/react-surface-Y7FTEIDF.mjs.map +7 -0
- package/dist/lib/node-esm/{schema-defs-4MCDG4DV.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-YGKHGFPH.mjs → settings-6FO65BA6.mjs} +5 -5
- package/dist/lib/node-esm/{settings-YGKHGFPH.mjs.map → settings-6FO65BA6.mjs.map} +1 -1
- package/dist/lib/node-esm/{spaces-ready-UM2P3DCR.mjs → spaces-ready-P7CKVXBE.mjs} +21 -18
- package/dist/lib/node-esm/spaces-ready-P7CKVXBE.mjs.map +7 -0
- package/dist/lib/node-esm/{state-C4IOXPZP.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 +14 -7
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/identity-created.d.ts +1 -1
- package/dist/types/src/capabilities/identity-created.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +11 -12
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-root.d.ts +2 -2
- package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/schema-defs.d.ts +1 -1
- package/dist/types/src/capabilities/schema-defs.d.ts.map +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/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
- package/dist/types/src/components/CollectionArticle.d.ts +6 -0
- package/dist/types/src/components/CollectionArticle.d.ts.map +1 -0
- package/dist/types/src/components/CollectionSection.d.ts +3 -4
- package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +5 -4
- 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 +7 -5
- 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/MenuFooter.d.ts.map +1 -1
- package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +9 -0
- package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -0
- package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts +10 -0
- package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -0
- package/dist/types/src/components/ObjectDetailsPanel/index.d.ts +3 -0
- package/dist/types/src/components/ObjectDetailsPanel/index.d.ts.map +1 -0
- package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts +7 -0
- package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts.map +1 -0
- package/dist/types/src/components/ObjectRenamePopover/index.d.ts +2 -0
- package/dist/types/src/components/ObjectRenamePopover/index.d.ts.map +1 -0
- package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +2 -2
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +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 +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/SyncStatus/status.d.ts +5 -5
- package/dist/types/src/components/ViewEditor.d.ts +7 -0
- package/dist/types/src/components/ViewEditor.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +11 -5
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/events.d.ts +1 -0
- 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 +1382 -11
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +141 -66
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +40 -10
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +67 -61
- package/src/SpacePlugin.ts +232 -139
- package/src/capabilities/app-graph-builder.ts +335 -88
- package/src/capabilities/app-graph-serializer.ts +12 -12
- package/src/capabilities/capabilities.ts +21 -10
- package/src/capabilities/identity-created.ts +3 -3
- package/src/capabilities/index.ts +0 -1
- package/src/capabilities/intent-resolver.ts +191 -54
- package/src/capabilities/react-root.tsx +6 -4
- package/src/capabilities/react-surface.tsx +94 -119
- package/src/capabilities/schema-defs.ts +4 -3
- package/src/capabilities/spaces-ready.ts +16 -10
- package/src/capabilities/state.ts +5 -4
- package/src/components/AwaitingObject.tsx +16 -20
- package/src/components/{CollectionMain.tsx → CollectionArticle.tsx} +8 -5
- package/src/components/CollectionSection.tsx +8 -6
- package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +17 -16
- package/src/components/CreateDialog/CreateObjectDialog.tsx +76 -54
- package/src/components/CreateDialog/CreateObjectPanel.tsx +24 -13
- 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} +27 -24
- package/src/components/MembersContainer/index.ts +5 -0
- package/src/components/MenuFooter.tsx +4 -5
- 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} +11 -17
- package/src/components/ObjectRenamePopover/index.ts +5 -0
- package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +4 -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 +25 -28
- package/src/components/SpacePluginSettings.tsx +16 -11
- package/src/components/{SpacePresence.stories.tsx → SpacePresence/SpacePresence.stories.tsx} +24 -23
- package/src/components/{SpacePresence.tsx → SpacePresence/SpacePresence.tsx} +22 -17
- package/src/components/SpacePresence/index.ts +5 -0
- package/src/components/{PopoverRenameSpace.tsx → SpaceRenamePopover/SpaceRenamePopover.tsx} +7 -6
- package/src/components/SpaceRenamePopover/index.ts +5 -0
- package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +17 -9
- package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +49 -28
- package/src/components/SyncStatus/InlineSyncStatus.tsx +8 -8
- package/src/components/SyncStatus/SyncStatus.stories.tsx +9 -9
- package/src/components/SyncStatus/SyncStatus.tsx +110 -13
- package/src/components/SyncStatus/status.ts +4 -4
- package/src/components/ViewEditor.tsx +92 -0
- package/src/components/index.ts +10 -5
- package/src/events.ts +7 -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 +85 -7
- package/src/types/types.ts +94 -22
- package/src/util.tsx +297 -75
- package/dist/lib/browser/app-graph-builder-PMDF6PJV.mjs +0 -363
- package/dist/lib/browser/app-graph-builder-PMDF6PJV.mjs.map +0 -7
- package/dist/lib/browser/app-graph-serializer-UKYMBX4O.mjs.map +0 -7
- package/dist/lib/browser/chunk-6VLSHG4A.mjs.map +0 -7
- package/dist/lib/browser/chunk-C7KGJTAL.mjs +0 -18
- package/dist/lib/browser/chunk-C7KGJTAL.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-GVTXQCIW.mjs.map +0 -7
- package/dist/lib/browser/chunk-S6NY637J.mjs.map +0 -7
- package/dist/lib/browser/chunk-VLBRSGJ2.mjs +0 -94
- package/dist/lib/browser/chunk-VLBRSGJ2.mjs.map +0 -7
- package/dist/lib/browser/chunk-WBSEOLEM.mjs.map +0 -7
- package/dist/lib/browser/chunk-XXIPJLJF.mjs +0 -19
- package/dist/lib/browser/chunk-XXIPJLJF.mjs.map +0 -7
- package/dist/lib/browser/identity-created-23XJJV2N.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-WK5WYFH3.mjs.map +0 -7
- package/dist/lib/browser/react-root-7S6FIC5G.mjs +0 -29
- package/dist/lib/browser/react-root-7S6FIC5G.mjs.map +0 -7
- package/dist/lib/browser/react-surface-6C3YJNDK.mjs.map +0 -7
- package/dist/lib/browser/schema-defs-K3B3OAH4.mjs.map +0 -7
- package/dist/lib/browser/schema-tools-BNP4JTD7.mjs +0 -124
- package/dist/lib/browser/schema-tools-BNP4JTD7.mjs.map +0 -7
- package/dist/lib/browser/spaces-ready-K7NSNBHM.mjs.map +0 -7
- package/dist/lib/browser/state-522XTUR4.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-TO72W6MI.mjs +0 -364
- package/dist/lib/node-esm/app-graph-builder-TO72W6MI.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-serializer-LA3IZDXJ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2THX6G4C.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-72QMMRKC.mjs +0 -19
- package/dist/lib/node-esm/chunk-72QMMRKC.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-AT7LGFER.mjs +0 -20
- package/dist/lib/node-esm/chunk-AT7LGFER.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HJJHLWKY.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-OUBADVJE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-SSLBYZEY.mjs +0 -96
- package/dist/lib/node-esm/chunk-SSLBYZEY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-SXD6T2N4.mjs.map +0 -7
- package/dist/lib/node-esm/identity-created-IJQO6GCR.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-HSR27ME4.mjs.map +0 -7
- package/dist/lib/node-esm/react-root-HUK3ANLV.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-AGAWX7DD.mjs.map +0 -7
- package/dist/lib/node-esm/schema-defs-4MCDG4DV.mjs.map +0 -7
- package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs +0 -126
- package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs.map +0 -7
- package/dist/lib/node-esm/spaces-ready-UM2P3DCR.mjs.map +0 -7
- package/dist/lib/node-esm/state-C4IOXPZP.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 -6
- 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/PersistenceStatus.d.ts +0 -6
- package/dist/types/src/components/PersistenceStatus.d.ts.map +0 -1
- package/dist/types/src/components/PopoverRenameObject.d.ts +0 -7
- package/dist/types/src/components/PopoverRenameObject.d.ts.map +0 -1
- package/dist/types/src/components/PopoverRenameSpace.d.ts +0 -7
- package/dist/types/src/components/PopoverRenameSpace.d.ts.map +0 -1
- package/dist/types/src/components/SpacePresence.d.ts.map +0 -1
- package/dist/types/src/components/SpacePresence.stories.d.ts +0 -9
- package/dist/types/src/components/SpacePresence.stories.d.ts.map +0 -1
- package/src/capabilities/schema-tool.test.ts +0 -44
- package/src/capabilities/schema-tools.ts +0 -125
- package/src/components/MembersContainer.stories.tsx +0 -30
- package/src/components/PersistenceStatus.tsx +0 -84
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import * as Array from 'effect/Array';
|
|
6
|
+
import * as Effect from 'effect/Effect';
|
|
7
|
+
import * as EffectFunction from 'effect/Function';
|
|
8
|
+
import * as Match from 'effect/Match';
|
|
9
|
+
import * as Option from 'effect/Option';
|
|
10
|
+
import type * as Schema from 'effect/Schema';
|
|
11
|
+
import * as SchemaAST from 'effect/SchemaAST';
|
|
12
|
+
|
|
13
|
+
import { DXN, Filter, Query, type QueryAST } from '@dxos/echo';
|
|
14
|
+
import {
|
|
15
|
+
ReferenceAnnotationId,
|
|
16
|
+
type ReferenceAnnotationValue,
|
|
17
|
+
getTypeAnnotation,
|
|
18
|
+
unwrapOptional,
|
|
19
|
+
} from '@dxos/echo/internal';
|
|
20
|
+
import { log } from '@dxos/log';
|
|
21
|
+
import { type Client } from '@dxos/react-client';
|
|
22
|
+
import { type Space } from '@dxos/react-client/echo';
|
|
23
|
+
import { Person } from '@dxos/types';
|
|
24
|
+
|
|
25
|
+
// TODO(wittjosiah): Factor out and add tests.
|
|
26
|
+
// TODO(wittjosiah): Support arbitrary type imports.
|
|
27
|
+
export const evalQuery = (queryString: string): Query.Any => {
|
|
28
|
+
const globals = { Query, Filter, Person };
|
|
29
|
+
try {
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-implied-eval
|
|
31
|
+
return new Function(...Object.keys(globals), `return ${queryString}`)(...Object.values(globals));
|
|
32
|
+
} catch (err) {
|
|
33
|
+
log.catch(err);
|
|
34
|
+
return Query.select(Filter.nothing());
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export const resolveSchemaWithClientAndSpace = (client: Client, space: Space, query: QueryAST.Query) => {
|
|
39
|
+
const resolve = Effect.fn(function* (dxn: string) {
|
|
40
|
+
const typename = DXN.parse(dxn).asTypeDXN()?.type;
|
|
41
|
+
if (!typename) {
|
|
42
|
+
return Option.none();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const staticSchema = client.graph.schemaRegistry.getSchema(typename);
|
|
46
|
+
if (staticSchema) {
|
|
47
|
+
return Option.some(staticSchema);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const query = space.db.schemaRegistry.query({ typename });
|
|
51
|
+
const schemas = yield* Effect.promise(() => query.run());
|
|
52
|
+
return Array.head(schemas).pipe(Option.map((schema) => schema.snapshot));
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
return resolveSchema(query, resolve).pipe(
|
|
56
|
+
Effect.map((schema) => Option.getOrUndefined(schema)),
|
|
57
|
+
Effect.runPromise,
|
|
58
|
+
);
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const resolveSchema = (
|
|
62
|
+
query: QueryAST.Query,
|
|
63
|
+
resolve: (dxn: string) => Effect.Effect<Option.Option<Schema.Schema.AnyNoContext>>,
|
|
64
|
+
): Effect.Effect<Option.Option<Schema.Schema.AnyNoContext>> => {
|
|
65
|
+
return Match.value(query).pipe(
|
|
66
|
+
Match.withReturnType<Effect.Effect<Option.Option<Schema.Schema.AnyNoContext>>>(),
|
|
67
|
+
// TODO(wittjosiah): Reconcile with filter match?
|
|
68
|
+
Match.when({ type: 'select' }, ({ filter }) =>
|
|
69
|
+
typenameFromFilter(filter).pipe(
|
|
70
|
+
Option.map((typename) => resolve(typename)),
|
|
71
|
+
Option.getOrElse(() => Effect.succeed(Option.none<Schema.Schema.AnyNoContext>())),
|
|
72
|
+
),
|
|
73
|
+
),
|
|
74
|
+
Match.when({ type: 'filter' }, ({ filter }) =>
|
|
75
|
+
typenameFromFilter(filter).pipe(
|
|
76
|
+
Option.map((typename) => resolve(typename)),
|
|
77
|
+
Option.getOrElse(() => Effect.succeed(Option.none<Schema.Schema.AnyNoContext>())),
|
|
78
|
+
),
|
|
79
|
+
),
|
|
80
|
+
Match.when({ type: 'reference-traversal' }, ({ anchor, property }) =>
|
|
81
|
+
resolveSchema(anchor, resolve).pipe(
|
|
82
|
+
Effect.map((base) =>
|
|
83
|
+
base.pipe(
|
|
84
|
+
Option.map((schema) => SchemaAST.getPropertySignatures(schema.ast)),
|
|
85
|
+
Option.flatMap((properties) => Array.findFirst(properties, (p) => p.name === property)),
|
|
86
|
+
Option.flatMap((property) =>
|
|
87
|
+
SchemaAST.getAnnotation<ReferenceAnnotationValue>(ReferenceAnnotationId)(unwrapOptional(property)),
|
|
88
|
+
),
|
|
89
|
+
Option.map((annotation) => annotation.typename),
|
|
90
|
+
),
|
|
91
|
+
),
|
|
92
|
+
Effect.flatMap(
|
|
93
|
+
Option.match({
|
|
94
|
+
onNone: () => Effect.succeed(Option.none()),
|
|
95
|
+
onSome: (typename) => resolve(DXN.fromTypename(typename).toString()),
|
|
96
|
+
}),
|
|
97
|
+
),
|
|
98
|
+
),
|
|
99
|
+
),
|
|
100
|
+
Match.when({ type: 'relation', filter: Match.defined }, ({ filter }) =>
|
|
101
|
+
typenameFromFilter(filter).pipe(
|
|
102
|
+
Option.map((typename) => resolve(typename)),
|
|
103
|
+
Option.getOrElse(() => Effect.succeed(Option.none<Schema.Schema.AnyNoContext>())),
|
|
104
|
+
),
|
|
105
|
+
),
|
|
106
|
+
Match.when({ type: 'relation-traversal' }, ({ anchor, direction }) =>
|
|
107
|
+
resolveSchema(anchor, resolve).pipe(
|
|
108
|
+
Effect.map((base) =>
|
|
109
|
+
base.pipe(
|
|
110
|
+
Option.map((schema) => getTypeAnnotation(schema)),
|
|
111
|
+
Option.flatMap((annotation) =>
|
|
112
|
+
Option.fromNullable(direction === 'source' ? annotation?.sourceSchema : annotation?.targetSchema),
|
|
113
|
+
),
|
|
114
|
+
),
|
|
115
|
+
),
|
|
116
|
+
Effect.flatMap(
|
|
117
|
+
Option.match({
|
|
118
|
+
onNone: () => Effect.succeed(Option.none()),
|
|
119
|
+
onSome: (typename) => resolve(typename),
|
|
120
|
+
}),
|
|
121
|
+
),
|
|
122
|
+
),
|
|
123
|
+
),
|
|
124
|
+
Match.when({ type: 'options' }, ({ query }) => resolveSchema(query, resolve)),
|
|
125
|
+
Match.orElse((_q) => {
|
|
126
|
+
// TODO(wittjosiah): Implement other cases.
|
|
127
|
+
return Effect.succeed(Option.none());
|
|
128
|
+
}),
|
|
129
|
+
);
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
const typenameFromFilter = (filter: QueryAST.Filter): Option.Option<string> =>
|
|
133
|
+
Match.value(filter).pipe(
|
|
134
|
+
Match.withReturnType<Option.Option<string>>(),
|
|
135
|
+
Match.when({ type: 'object' }, ({ typename }) => Option.fromNullable(typename)),
|
|
136
|
+
Match.when({ type: 'and' }, ({ filters }) =>
|
|
137
|
+
EffectFunction.pipe(filters, Array.map(typenameFromFilter), Array.findFirst(Option.isSome), Option.flatten),
|
|
138
|
+
),
|
|
139
|
+
Match.when({ type: 'or' }, ({ filters }) =>
|
|
140
|
+
EffectFunction.pipe(filters, Array.map(typenameFromFilter), Array.findFirst(Option.isSome), Option.flatten),
|
|
141
|
+
),
|
|
142
|
+
Match.orElse(() => Option.none()),
|
|
143
|
+
);
|
|
144
|
+
|
|
145
|
+
// TODO(wittjosiah): Currently assumes options is at the top-level of the ast.
|
|
146
|
+
export const getQueryTarget = (query: QueryAST.Query, space?: Space) => {
|
|
147
|
+
return Match.value(query).pipe(
|
|
148
|
+
Match.when({ type: 'options' }, ({ options }) => {
|
|
149
|
+
return Option.fromNullable(options.queues).pipe(
|
|
150
|
+
Option.flatMap((queues) => Array.head(queues)),
|
|
151
|
+
Option.flatMap((queueDxn) => Option.fromNullable(DXN.tryParse(queueDxn))),
|
|
152
|
+
Option.flatMap((queueDxn) => Option.fromNullable(space?.queues.get(queueDxn))),
|
|
153
|
+
Option.getOrElse(() => space),
|
|
154
|
+
);
|
|
155
|
+
}),
|
|
156
|
+
Match.orElse(() => space),
|
|
157
|
+
);
|
|
158
|
+
};
|
package/src/hooks/index.ts
CHANGED
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { Capabilities,
|
|
5
|
+
import { Capabilities, type PluginContext } from '@dxos/app-framework';
|
|
6
|
+
import { useLayout } from '@dxos/app-framework/react';
|
|
6
7
|
import { ClientCapabilities } from '@dxos/plugin-client';
|
|
7
8
|
import { parseId, useSpace } from '@dxos/react-client/echo';
|
|
8
9
|
|
|
9
10
|
export const getActiveSpace = (context: PluginContext) => {
|
|
10
|
-
const layout = context.getCapability(Capabilities.Layout);
|
|
11
11
|
const client = context.getCapability(ClientCapabilities.Client);
|
|
12
|
+
const layout = context.getCapability(Capabilities.Layout);
|
|
12
13
|
const { spaceId } = parseId(layout.workspace);
|
|
13
14
|
return spaceId ? client.spaces.get(spaceId) : undefined;
|
|
14
15
|
};
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import type * as Schema from 'effect/Schema';
|
|
6
6
|
import React, { useCallback } from 'react';
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import { Surface, isSurfaceAvailable, usePluginManager } from '@dxos/app-framework/react';
|
|
9
9
|
import { type InputProps } from '@dxos/react-ui-form';
|
|
10
10
|
|
|
11
11
|
// TODO(ZaymonFC): Move this if you find yourself needing it elsewhere.
|
|
@@ -20,7 +20,12 @@ export const useInputSurfaceLookup = (baseData?: Record<string, any>) => {
|
|
|
20
20
|
return useCallback(
|
|
21
21
|
({ prop, schema, inputProps }: { prop: string; schema: Schema.Schema<any>; inputProps: InputProps }) => {
|
|
22
22
|
const composedData = { prop, schema, ...baseData };
|
|
23
|
-
if (
|
|
23
|
+
if (
|
|
24
|
+
!isSurfaceAvailable(pluginManager.context, {
|
|
25
|
+
role: 'form-input',
|
|
26
|
+
data: composedData,
|
|
27
|
+
})
|
|
28
|
+
) {
|
|
24
29
|
return undefined;
|
|
25
30
|
}
|
|
26
31
|
|
package/src/hooks/usePath.ts
CHANGED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { useMemo } from 'react';
|
|
6
|
+
|
|
7
|
+
import { useCapabilities } from '@dxos/app-framework/react';
|
|
8
|
+
import { Type } from '@dxos/echo';
|
|
9
|
+
import { ClientCapabilities } from '@dxos/plugin-client';
|
|
10
|
+
import { useClient } from '@dxos/react-client';
|
|
11
|
+
import { type Space } from '@dxos/react-client/echo';
|
|
12
|
+
import { useTranslation } from '@dxos/react-ui';
|
|
13
|
+
import { Collection, type TypenameAnnotation, getTypenames } from '@dxos/schema';
|
|
14
|
+
|
|
15
|
+
import { SpaceCapabilities } from '../capabilities';
|
|
16
|
+
|
|
17
|
+
const OMIT = [Collection.Collection.typename, Type.getTypename(Collection.QueryCollection)];
|
|
18
|
+
|
|
19
|
+
export const useTypeOptions = ({ space, annotation }: { space?: Space; annotation: TypenameAnnotation[] }) => {
|
|
20
|
+
const { t } = useTranslation();
|
|
21
|
+
const client = useClient();
|
|
22
|
+
|
|
23
|
+
const schemaWhitelists = useCapabilities(ClientCapabilities.SchemaWhiteList);
|
|
24
|
+
const whitelistedTypenames = useMemo(
|
|
25
|
+
() => new Set(schemaWhitelists.flatMap((typeArray) => typeArray.map((type) => Type.getTypename(type)))),
|
|
26
|
+
[schemaWhitelists],
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
const objectForms = useCapabilities(SpaceCapabilities.ObjectForm);
|
|
30
|
+
const objectFormTypenames = useMemo(
|
|
31
|
+
() =>
|
|
32
|
+
new Set(
|
|
33
|
+
objectForms
|
|
34
|
+
.map((form) => Type.getTypename(form.objectSchema))
|
|
35
|
+
// TODO(wittjosiah): Remove.
|
|
36
|
+
.filter((typename) => !OMIT.includes(typename) && !typename.endsWith('View')),
|
|
37
|
+
),
|
|
38
|
+
[objectForms],
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
const typenames = getTypenames({
|
|
42
|
+
annotation,
|
|
43
|
+
whitelistedTypenames,
|
|
44
|
+
objectFormTypenames,
|
|
45
|
+
space,
|
|
46
|
+
client,
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
return useMemo(
|
|
50
|
+
() =>
|
|
51
|
+
typenames
|
|
52
|
+
.map((typename) => ({
|
|
53
|
+
value: typename,
|
|
54
|
+
label: t('typename label', { ns: typename, defaultValue: typename }),
|
|
55
|
+
}))
|
|
56
|
+
.toSorted((a, b) => a.label.localeCompare(b.label)),
|
|
57
|
+
[t, typenames],
|
|
58
|
+
);
|
|
59
|
+
};
|
package/src/index.ts
CHANGED
package/src/meta.ts
CHANGED
|
@@ -3,11 +3,14 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { type PluginMeta } from '@dxos/app-framework';
|
|
6
|
-
|
|
7
|
-
export const SPACE_PLUGIN = 'dxos.org/plugin/space';
|
|
6
|
+
import { trim } from '@dxos/util';
|
|
8
7
|
|
|
9
8
|
export const meta: PluginMeta = {
|
|
10
|
-
id:
|
|
9
|
+
id: 'dxos.org/plugin/space',
|
|
11
10
|
name: 'Spaces',
|
|
11
|
+
description: trim`
|
|
12
|
+
Core workspace container system for organizing and sharing collaborative environments.
|
|
13
|
+
Create, manage, and share spaces with granular access control and invitation management.
|
|
14
|
+
`,
|
|
12
15
|
icon: 'ph--planet--regular',
|
|
13
16
|
};
|
package/src/translations.ts
CHANGED
|
@@ -2,8 +2,11 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import { Type } from '@dxos/echo';
|
|
6
|
+
import { StoredSchema } from '@dxos/echo/internal';
|
|
5
7
|
import { type Resource } from '@dxos/react-ui';
|
|
6
|
-
import {
|
|
8
|
+
import { Collection, View } from '@dxos/schema';
|
|
9
|
+
import { Event, Organization, Person, Project, Task } from '@dxos/types';
|
|
7
10
|
|
|
8
11
|
import { meta } from './meta';
|
|
9
12
|
|
|
@@ -11,19 +14,76 @@ import { meta } from './meta';
|
|
|
11
14
|
export const translations = [
|
|
12
15
|
{
|
|
13
16
|
'en-US': {
|
|
14
|
-
[
|
|
17
|
+
[Collection.Collection.typename]: {
|
|
15
18
|
'typename label': 'Collection',
|
|
16
19
|
'typename label_zero': 'Collections',
|
|
17
20
|
'typename label_one': 'Collection',
|
|
18
21
|
'typename label_other': 'Collections',
|
|
19
22
|
'object name placeholder': 'New collection',
|
|
23
|
+
'rename object label': 'Rename collection',
|
|
24
|
+
'delete object label': 'Delete collection',
|
|
20
25
|
},
|
|
21
|
-
[
|
|
26
|
+
[Type.getTypename(Collection.QueryCollection)]: {
|
|
22
27
|
'typename label': 'Smart Collection',
|
|
23
28
|
'typename label_zero': 'Smart Collections',
|
|
24
29
|
'typename label_one': 'Smart Collection',
|
|
25
30
|
'typename label_other': 'Smart Collections',
|
|
26
31
|
'object name placeholder': 'New smart collection',
|
|
32
|
+
'rename object label': 'Rename smart collection',
|
|
33
|
+
'delete object label': 'Delete smart collection',
|
|
34
|
+
},
|
|
35
|
+
[StoredSchema.typename]: {
|
|
36
|
+
'typename label': 'Record',
|
|
37
|
+
'typename label_zero': 'Records',
|
|
38
|
+
'typename label_one': 'Record',
|
|
39
|
+
'typename label_other': 'Records',
|
|
40
|
+
'object name placeholder': 'New record type',
|
|
41
|
+
'rename object label': 'Rename record type',
|
|
42
|
+
'delete object label': 'Delete record type',
|
|
43
|
+
},
|
|
44
|
+
[Type.getTypename(View.View)]: {
|
|
45
|
+
'typename label': 'View',
|
|
46
|
+
'typename label_zero': 'Views',
|
|
47
|
+
'typename label_one': 'View',
|
|
48
|
+
'typename label_other': 'Views',
|
|
49
|
+
'object name placeholder': 'New view',
|
|
50
|
+
'rename object label': 'Rename view',
|
|
51
|
+
'delete object label': 'Delete view',
|
|
52
|
+
},
|
|
53
|
+
[Event.Event.typename]: {
|
|
54
|
+
'typename label': 'Event',
|
|
55
|
+
'typename label_zero': 'Events',
|
|
56
|
+
'typename label_one': 'Event',
|
|
57
|
+
'typename label_other': 'Events',
|
|
58
|
+
'object name placeholder': 'New event',
|
|
59
|
+
},
|
|
60
|
+
[Organization.Organization.typename]: {
|
|
61
|
+
'typename label': 'Organization',
|
|
62
|
+
'typename label_zero': 'Organizations',
|
|
63
|
+
'typename label_one': 'Organization',
|
|
64
|
+
'typename label_other': 'Organizations',
|
|
65
|
+
'object name placeholder': 'New organization',
|
|
66
|
+
},
|
|
67
|
+
[Person.Person.typename]: {
|
|
68
|
+
'typename label': 'Person',
|
|
69
|
+
'typename label_zero': 'People',
|
|
70
|
+
'typename label_one': 'Person',
|
|
71
|
+
'typename label_other': 'People',
|
|
72
|
+
'object name placeholder': 'New person',
|
|
73
|
+
},
|
|
74
|
+
[Project.Project.typename]: {
|
|
75
|
+
'typename label': 'Project',
|
|
76
|
+
'typename label_zero': 'Projects',
|
|
77
|
+
'typename label_one': 'Project',
|
|
78
|
+
'typename label_other': 'Projects',
|
|
79
|
+
'object name placeholder': 'New project',
|
|
80
|
+
},
|
|
81
|
+
[Task.Task.typename]: {
|
|
82
|
+
'typename label': 'Task',
|
|
83
|
+
'typename label_zero': 'Tasks',
|
|
84
|
+
'typename label_one': 'Task',
|
|
85
|
+
'typename label_other': 'Tasks',
|
|
86
|
+
'object name placeholder': 'New task',
|
|
27
87
|
},
|
|
28
88
|
[meta.id]: {
|
|
29
89
|
'plugin name': 'Spaces',
|
|
@@ -62,6 +122,7 @@ export const translations = [
|
|
|
62
122
|
'show hidden spaces label': 'Show archived spaces',
|
|
63
123
|
'save files to directory label': 'Save files to disk',
|
|
64
124
|
'select path label': 'Select path',
|
|
125
|
+
'snapshot by schema label': 'Snapshot of objects',
|
|
65
126
|
'rename collection label': 'Rename collection',
|
|
66
127
|
'rename object label': 'Rename item',
|
|
67
128
|
'duplicate object label': 'Duplicate item',
|
|
@@ -131,10 +192,16 @@ export const translations = [
|
|
|
131
192
|
'creating in collection label': 'In Collection',
|
|
132
193
|
'clear input label': 'Clear',
|
|
133
194
|
'expose object label': 'Expose in navtree',
|
|
195
|
+
'add tag label': 'Add tag',
|
|
134
196
|
'advanced settings label': 'Advanced',
|
|
135
197
|
'foreign keys': 'Foreign Keys',
|
|
136
198
|
'add key': 'Add Key',
|
|
137
199
|
'open space settings label': 'Open settings',
|
|
200
|
+
'related objects label': 'Related Items',
|
|
201
|
+
|
|
202
|
+
'row details no selection label': 'No objects selected',
|
|
203
|
+
'companion selected objects label': 'Selected',
|
|
204
|
+
'field deleted label': 'Field deleted',
|
|
138
205
|
|
|
139
206
|
'members panel label': 'Members',
|
|
140
207
|
'members verbose label': 'Manage space members',
|
|
@@ -152,10 +219,10 @@ export const translations = [
|
|
|
152
219
|
'space settings properties label': 'General settings',
|
|
153
220
|
'space properties settings verbose label': 'Manage space properties',
|
|
154
221
|
'space properties settings description': 'You can configure how this space is displayed in the app here.',
|
|
155
|
-
'space settings schema label': '
|
|
156
|
-
'schema verbose label': 'Manage
|
|
157
|
-
'schema description': 'You can manage all of the
|
|
158
|
-
'no schemas found message': 'No
|
|
222
|
+
'space settings schema label': 'Record types',
|
|
223
|
+
'schema verbose label': 'Manage record types',
|
|
224
|
+
'schema description': 'You can manage all of the record types stored within this space here.',
|
|
225
|
+
'no schemas found message': 'No record types found',
|
|
159
226
|
'display name input placeholder': 'Space name',
|
|
160
227
|
'display name description': 'Name of the space as it appears in the app.',
|
|
161
228
|
'icon description': 'Icon used to represent the space in the app.',
|
|
@@ -165,7 +232,18 @@ export const translations = [
|
|
|
165
232
|
'archive space description':
|
|
166
233
|
'Archiving a space will remove it from the sidebar and stop replicating updates, but will not delete the data. You can unarchive it by enabling archived spaces in the app settings.',
|
|
167
234
|
'archive space label': 'Archive',
|
|
235
|
+
'backup space label': 'Backup',
|
|
236
|
+
'backup space description':
|
|
237
|
+
'Download a backup of the space. Contains all data in the space in an unencrypted format.',
|
|
238
|
+
'download backup': 'Download backup',
|
|
168
239
|
'unarchive space label': 'Unarchive',
|
|
240
|
+
|
|
241
|
+
'sync edge connected label': 'Edge connected',
|
|
242
|
+
'sync edge disconnected label': 'Edge disconnected',
|
|
243
|
+
'sync no connection label': 'No connection to edge service',
|
|
244
|
+
'sync latency label': 'Latency',
|
|
245
|
+
'sync upload label': 'Upload',
|
|
246
|
+
'sync download label': 'Download',
|
|
169
247
|
},
|
|
170
248
|
},
|
|
171
249
|
},
|
package/src/types/types.ts
CHANGED
|
@@ -2,21 +2,22 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import * as Schema from 'effect/Schema';
|
|
6
6
|
|
|
7
7
|
import { type AnyIntentChain } from '@dxos/app-framework';
|
|
8
|
-
import {
|
|
9
|
-
import { type BaseObject,
|
|
8
|
+
import { type Obj, QueryAST, Type } from '@dxos/echo';
|
|
9
|
+
import { type BaseObject, EchoSchema, StoredSchema } from '@dxos/echo/internal';
|
|
10
10
|
import { type PublicKey } from '@dxos/react-client';
|
|
11
11
|
// TODO(wittjosiah): This pulls in full client.
|
|
12
12
|
import { EchoObjectSchema, ReactiveObjectSchema, type Space, SpaceSchema } from '@dxos/react-client/echo';
|
|
13
13
|
import { CancellableInvitationObservable, Invitation } from '@dxos/react-client/invitations';
|
|
14
|
-
import {
|
|
14
|
+
import { Collection, FieldSchema, TypenameAnnotationId, View } from '@dxos/schema';
|
|
15
15
|
import { type ComplexMap } from '@dxos/util';
|
|
16
16
|
|
|
17
|
-
import {
|
|
17
|
+
import { meta } from '../meta';
|
|
18
|
+
|
|
19
|
+
export const SPACE_DIRECTORY_HANDLE = `${meta.id}/directory`;
|
|
18
20
|
|
|
19
|
-
export const SPACE_DIRECTORY_HANDLE = 'dxos.org/plugin/space/directory';
|
|
20
21
|
export const SPACE_TYPE = 'dxos.org/type/Space';
|
|
21
22
|
|
|
22
23
|
export type ObjectViewerProps = {
|
|
@@ -105,8 +106,7 @@ export const SpaceForm = Schema.Struct({
|
|
|
105
106
|
});
|
|
106
107
|
|
|
107
108
|
export type ObjectForm<T extends BaseObject = BaseObject> = {
|
|
108
|
-
|
|
109
|
-
objectSchema: TypedObject;
|
|
109
|
+
objectSchema: Schema.Schema.AnyNoContext;
|
|
110
110
|
formSchema?: Schema.Schema<T, any>;
|
|
111
111
|
hidden?: boolean;
|
|
112
112
|
getIntent: (props: T, options: { space: Space }) => AnyIntentChain;
|
|
@@ -114,7 +114,7 @@ export type ObjectForm<T extends BaseObject = BaseObject> = {
|
|
|
114
114
|
|
|
115
115
|
export const defineObjectForm = <T extends BaseObject>(form: ObjectForm<T>) => form;
|
|
116
116
|
|
|
117
|
-
export const SPACE_ACTION = `${
|
|
117
|
+
export const SPACE_ACTION = `${meta.id}/action`;
|
|
118
118
|
|
|
119
119
|
export namespace SpaceAction {
|
|
120
120
|
export class OpenCreateSpace extends Schema.TaggedClass<OpenCreateSpace>()(`${SPACE_ACTION}/open-create-space`, {
|
|
@@ -217,11 +217,82 @@ export namespace SpaceAction {
|
|
|
217
217
|
output: Schema.Boolean,
|
|
218
218
|
}) {}
|
|
219
219
|
|
|
220
|
+
export class Snapshot extends Schema.TaggedClass<Snapshot>()(`${SPACE_ACTION}/snapshot`, {
|
|
221
|
+
input: Schema.Struct({
|
|
222
|
+
space: SpaceSchema,
|
|
223
|
+
query: QueryAST.Query.pipe(Schema.optional),
|
|
224
|
+
}),
|
|
225
|
+
output: Schema.Struct({
|
|
226
|
+
snapshot: Schema.instanceOf(Blob),
|
|
227
|
+
}),
|
|
228
|
+
}) {}
|
|
229
|
+
|
|
230
|
+
export const StoredSchemaForm = Schema.Struct({
|
|
231
|
+
name: Schema.optional(Schema.String),
|
|
232
|
+
typename: Schema.optional(
|
|
233
|
+
Schema.String.annotations({
|
|
234
|
+
[TypenameAnnotationId]: ['unused-static'],
|
|
235
|
+
}),
|
|
236
|
+
),
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
export class UseStaticSchema extends Schema.TaggedClass<UseStaticSchema>()(`${SPACE_ACTION}/use-static-schema`, {
|
|
240
|
+
input: Schema.Struct({
|
|
241
|
+
space: SpaceSchema,
|
|
242
|
+
typename: Schema.String,
|
|
243
|
+
// TODO(wittjosiah): This is leaky.
|
|
244
|
+
show: Schema.optional(Schema.Boolean),
|
|
245
|
+
}),
|
|
246
|
+
output: Schema.Struct({}),
|
|
247
|
+
}) {}
|
|
248
|
+
|
|
249
|
+
export class AddSchema extends Schema.TaggedClass<AddSchema>()(`${SPACE_ACTION}/add-schema`, {
|
|
250
|
+
input: Schema.Struct({
|
|
251
|
+
space: SpaceSchema,
|
|
252
|
+
name: Schema.optional(Schema.String),
|
|
253
|
+
typename: Schema.optional(Schema.String),
|
|
254
|
+
// TODO(wittjosiah): Semantic version format.
|
|
255
|
+
version: Schema.optional(Schema.String),
|
|
256
|
+
// TODO(wittjosiah): Schema for schema?
|
|
257
|
+
schema: Schema.Any,
|
|
258
|
+
// TODO(wittjosiah): This is leaky.
|
|
259
|
+
show: Schema.optional(Schema.Boolean),
|
|
260
|
+
}),
|
|
261
|
+
output: Schema.Struct({
|
|
262
|
+
// TODO(wittjosiah): ObjectId.
|
|
263
|
+
id: Schema.String,
|
|
264
|
+
object: StoredSchema,
|
|
265
|
+
schema: Schema.instanceOf(EchoSchema),
|
|
266
|
+
}),
|
|
267
|
+
}) {}
|
|
268
|
+
|
|
269
|
+
export class DeleteField extends Schema.TaggedClass<DeleteField>()(`${SPACE_ACTION}/delete-field`, {
|
|
270
|
+
input: Schema.Struct({
|
|
271
|
+
view: View.View,
|
|
272
|
+
fieldId: Schema.String,
|
|
273
|
+
// TODO(wittjosiah): Separate fields for undo data?
|
|
274
|
+
deletionData: Schema.optional(
|
|
275
|
+
Schema.Struct({
|
|
276
|
+
field: FieldSchema,
|
|
277
|
+
// TODO(wittjosiah): This creates a type error.
|
|
278
|
+
// props: PropertySchema,
|
|
279
|
+
props: Schema.Any,
|
|
280
|
+
index: Schema.Number,
|
|
281
|
+
}),
|
|
282
|
+
),
|
|
283
|
+
}),
|
|
284
|
+
output: Schema.Void,
|
|
285
|
+
}) {}
|
|
286
|
+
|
|
220
287
|
export class OpenCreateObject extends Schema.TaggedClass<OpenCreateObject>()(`${SPACE_ACTION}/open-create-object`, {
|
|
221
288
|
input: Schema.Struct({
|
|
222
|
-
target: Schema.Union(SpaceSchema,
|
|
289
|
+
target: Schema.Union(SpaceSchema, Collection.Collection),
|
|
290
|
+
views: Schema.optional(Schema.Boolean),
|
|
223
291
|
typename: Schema.optional(Schema.String),
|
|
292
|
+
initialFormValues: Schema.optional(Schema.Any),
|
|
224
293
|
navigable: Schema.optional(Schema.Boolean),
|
|
294
|
+
// TODO(wittjosiah): This is a function, is there a better way to handle this?
|
|
295
|
+
onCreateObject: Schema.optional(Schema.Any),
|
|
225
296
|
}),
|
|
226
297
|
output: Schema.Void,
|
|
227
298
|
}) {}
|
|
@@ -229,10 +300,11 @@ export namespace SpaceAction {
|
|
|
229
300
|
export class AddObject extends Schema.TaggedClass<AddObject>()(`${SPACE_ACTION}/add-object`, {
|
|
230
301
|
input: Schema.Struct({
|
|
231
302
|
object: ReactiveObjectSchema,
|
|
232
|
-
target: Schema.Union(SpaceSchema,
|
|
303
|
+
target: Schema.Union(SpaceSchema, Collection.Collection),
|
|
233
304
|
hidden: Schema.optional(Schema.Boolean),
|
|
234
305
|
}),
|
|
235
306
|
output: Schema.Struct({
|
|
307
|
+
// TODO(wittjosiah): ObjectId.
|
|
236
308
|
id: Schema.String,
|
|
237
309
|
subject: Schema.Array(Schema.String),
|
|
238
310
|
object: EchoObjectSchema,
|
|
@@ -256,7 +328,7 @@ export namespace SpaceAction {
|
|
|
256
328
|
|
|
257
329
|
export const DeletionData = Schema.Struct({
|
|
258
330
|
objects: Schema.Array(EchoObjectSchema),
|
|
259
|
-
parentCollection:
|
|
331
|
+
parentCollection: Collection.Collection,
|
|
260
332
|
indices: Schema.Array(Schema.Number),
|
|
261
333
|
nestedObjectsList: Schema.Array(Schema.Array(EchoObjectSchema)),
|
|
262
334
|
wasActive: Schema.Array(Schema.String),
|
|
@@ -266,8 +338,9 @@ export namespace SpaceAction {
|
|
|
266
338
|
|
|
267
339
|
export class RemoveObjects extends Schema.TaggedClass<RemoveObjects>()(`${SPACE_ACTION}/remove-objects`, {
|
|
268
340
|
input: Schema.Struct({
|
|
269
|
-
|
|
270
|
-
|
|
341
|
+
// TODO(wittjosiah): Should be Schema.Union(Type.Obj, Type.Relation).
|
|
342
|
+
objects: Schema.Array(ReactiveObjectSchema),
|
|
343
|
+
target: Schema.optional(Collection.Collection),
|
|
271
344
|
deletionData: Schema.optional(DeletionData),
|
|
272
345
|
}),
|
|
273
346
|
output: Schema.Void,
|
|
@@ -284,7 +357,7 @@ export namespace SpaceAction {
|
|
|
284
357
|
export class DuplicateObject extends Schema.TaggedClass<DuplicateObject>()(`${SPACE_ACTION}/duplicate-object`, {
|
|
285
358
|
input: Schema.Struct({
|
|
286
359
|
object: EchoObjectSchema,
|
|
287
|
-
target: Schema.Union(SpaceSchema,
|
|
360
|
+
target: Schema.Union(SpaceSchema, Collection.Collection),
|
|
288
361
|
}),
|
|
289
362
|
output: Schema.Void,
|
|
290
363
|
}) {}
|
|
@@ -303,17 +376,15 @@ export namespace CollectionAction {
|
|
|
303
376
|
name: Schema.optional(Schema.String),
|
|
304
377
|
}),
|
|
305
378
|
output: Schema.Struct({
|
|
306
|
-
object:
|
|
379
|
+
object: Collection.Collection,
|
|
307
380
|
}),
|
|
308
381
|
}) {}
|
|
309
382
|
|
|
310
383
|
export const QueryCollectionForm = Schema.Struct({
|
|
311
384
|
name: Schema.optional(Schema.String),
|
|
312
|
-
typename: Schema.
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
}),
|
|
316
|
-
),
|
|
385
|
+
typename: Schema.String.annotations({
|
|
386
|
+
[TypenameAnnotationId]: ['object-form'],
|
|
387
|
+
}),
|
|
317
388
|
});
|
|
318
389
|
|
|
319
390
|
export class CreateQueryCollection extends Schema.TaggedClass<CreateQueryCollection>()(
|
|
@@ -321,7 +392,8 @@ export namespace CollectionAction {
|
|
|
321
392
|
{
|
|
322
393
|
input: QueryCollectionForm,
|
|
323
394
|
output: Schema.Struct({
|
|
324
|
-
|
|
395
|
+
// TODO(wittjosiah): Remove cast.
|
|
396
|
+
object: EchoObjectSchema, // Collection.QueryCollection,
|
|
325
397
|
}),
|
|
326
398
|
},
|
|
327
399
|
) {}
|