@dxos/plugin-space 0.8.3 → 0.8.4-main.1da679c
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 +31 -0
- package/dist/lib/browser/CollectionMain-D2B75XBS.mjs.map +7 -0
- package/dist/lib/browser/ObjectDetailsPanel-J7KGPJJK.mjs +90 -0
- package/dist/lib/browser/ObjectDetailsPanel-J7KGPJJK.mjs.map +7 -0
- package/dist/lib/browser/RecordMain-TEBGAVSL.mjs +68 -0
- package/dist/lib/browser/RecordMain-TEBGAVSL.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-builder-M2RH72VL.mjs → app-graph-builder-FC4D5PF6.mjs} +190 -36
- package/dist/lib/browser/app-graph-builder-FC4D5PF6.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-F7ISRRBV.mjs → app-graph-serializer-NI4BCIQO.mjs} +15 -15
- package/dist/lib/browser/app-graph-serializer-NI4BCIQO.mjs.map +7 -0
- package/dist/lib/browser/{chunk-YMCZR6EZ.mjs → chunk-CBYL62HG.mjs} +5 -4
- package/dist/lib/browser/chunk-CBYL62HG.mjs.map +7 -0
- package/dist/lib/browser/{chunk-7Y4M7GXO.mjs → chunk-ELJDGQTO.mjs} +6 -6
- package/dist/lib/browser/{chunk-7Y4M7GXO.mjs.map → chunk-ELJDGQTO.mjs.map} +3 -3
- package/dist/lib/browser/{chunk-PTKYMZWO.mjs → chunk-FBCGT5YY.mjs} +2 -2
- package/dist/lib/browser/{chunk-NFUKCRGE.mjs → chunk-IIY4XVBZ.mjs} +440 -376
- package/dist/lib/browser/chunk-IIY4XVBZ.mjs.map +7 -0
- package/dist/lib/browser/{chunk-V24VASAJ.mjs → chunk-S33AYKSS.mjs} +189 -34
- package/dist/lib/browser/chunk-S33AYKSS.mjs.map +7 -0
- package/dist/lib/browser/{chunk-BXNL6SDI.mjs → chunk-TUQZO5P4.mjs} +4 -3
- package/dist/lib/browser/chunk-TUQZO5P4.mjs.map +7 -0
- package/dist/lib/browser/{chunk-TW7O2EPP.mjs → chunk-URST7EEN.mjs} +68 -8
- package/dist/lib/browser/chunk-URST7EEN.mjs.map +7 -0
- package/dist/lib/browser/{chunk-4ZKSFDXM.mjs → chunk-WZYRDFW7.mjs} +76 -14
- package/dist/lib/browser/chunk-WZYRDFW7.mjs.map +7 -0
- package/dist/lib/browser/{identity-created-PI7TKANR.mjs → identity-created-PW2BA46S.mjs} +7 -7
- package/dist/lib/browser/identity-created-PW2BA46S.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +95 -24
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-RWU6ZE4H.mjs → intent-resolver-2RWP2F23.mjs} +183 -28
- package/dist/lib/browser/intent-resolver-2RWP2F23.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-root-QIKHSNT2.mjs → react-root-QUDHNVV5.mjs} +10 -10
- package/dist/lib/browser/{react-root-QIKHSNT2.mjs.map → react-root-QUDHNVV5.mjs.map} +2 -2
- package/dist/lib/browser/{react-surface-W56UD53I.mjs → react-surface-S47ZR44T.mjs} +59 -27
- package/dist/lib/browser/react-surface-S47ZR44T.mjs.map +7 -0
- package/dist/lib/browser/{schema-defs-WREJNMIC.mjs → schema-defs-ATNBAQEU.mjs} +6 -6
- package/dist/lib/browser/schema-defs-ATNBAQEU.mjs.map +7 -0
- package/dist/lib/browser/{settings-K54STC5A.mjs → settings-NTC766QW.mjs} +6 -6
- package/dist/lib/browser/{settings-K54STC5A.mjs.map → settings-NTC766QW.mjs.map} +1 -1
- package/dist/lib/browser/{spaces-ready-3PDRDHPC.mjs → spaces-ready-NX7NRVSB.mjs} +19 -17
- package/dist/lib/browser/spaces-ready-NX7NRVSB.mjs.map +7 -0
- package/dist/lib/browser/{state-HRZ4VRXU.mjs → state-LAGTPHDQ.mjs} +6 -6
- package/dist/lib/browser/state-LAGTPHDQ.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +2 -2
- package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs +32 -0
- package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs.map +7 -0
- package/dist/lib/node-esm/ObjectDetailsPanel-7ADOXZ5W.mjs +91 -0
- package/dist/lib/node-esm/ObjectDetailsPanel-7ADOXZ5W.mjs.map +7 -0
- package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs +70 -0
- package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-BCHVZ4OM.mjs → app-graph-builder-KREU52XR.mjs} +190 -36
- package/dist/lib/node-esm/app-graph-builder-KREU52XR.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-TXRGGNP2.mjs → app-graph-serializer-L3IXSQ2I.mjs} +15 -15
- package/dist/lib/node-esm/app-graph-serializer-L3IXSQ2I.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-3CP67AYY.mjs → chunk-FJZNSJC4.mjs} +5 -4
- package/dist/lib/node-esm/chunk-FJZNSJC4.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-BSLREHIX.mjs → chunk-HC677WUJ.mjs} +4 -3
- package/dist/lib/node-esm/chunk-HC677WUJ.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-MSWEFAPD.mjs → chunk-HWNG4MEU.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-JBQKU4K5.mjs → chunk-LGNPMOXU.mjs} +76 -14
- package/dist/lib/node-esm/chunk-LGNPMOXU.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-GH2FGJXH.mjs → chunk-Q6AAQLQG.mjs} +6 -6
- package/dist/lib/node-esm/{chunk-GH2FGJXH.mjs.map → chunk-Q6AAQLQG.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-LA6AVVH6.mjs → chunk-QUPBTNWJ.mjs} +440 -376
- package/dist/lib/node-esm/chunk-QUPBTNWJ.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-D4QMPPS7.mjs → chunk-RXDT5LA5.mjs} +68 -8
- package/dist/lib/node-esm/chunk-RXDT5LA5.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-HO7AIKQS.mjs → chunk-TEUN2E4F.mjs} +189 -34
- package/dist/lib/node-esm/chunk-TEUN2E4F.mjs.map +7 -0
- package/dist/lib/node-esm/{identity-created-35CTAQWI.mjs → identity-created-MWTLGQRU.mjs} +7 -7
- package/dist/lib/node-esm/identity-created-MWTLGQRU.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +95 -24
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-JO6L2VXC.mjs → intent-resolver-ORRPXJMN.mjs} +183 -28
- package/dist/lib/node-esm/intent-resolver-ORRPXJMN.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-YFGL3B4J.mjs → react-root-2WBNW4VQ.mjs} +10 -10
- package/dist/lib/node-esm/{react-root-YFGL3B4J.mjs.map → react-root-2WBNW4VQ.mjs.map} +2 -2
- package/dist/lib/node-esm/{react-surface-CVAPDLEZ.mjs → react-surface-MI5G3TD6.mjs} +59 -27
- package/dist/lib/node-esm/react-surface-MI5G3TD6.mjs.map +7 -0
- package/dist/lib/node-esm/{schema-defs-4MEJETVX.mjs → schema-defs-7LEPK3R6.mjs} +6 -6
- package/dist/lib/node-esm/schema-defs-7LEPK3R6.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-TD76LTQS.mjs → settings-RWOW2SE5.mjs} +6 -6
- package/dist/lib/node-esm/{settings-TD76LTQS.mjs.map → settings-RWOW2SE5.mjs.map} +1 -1
- package/dist/lib/node-esm/{spaces-ready-FJMGPAVV.mjs → spaces-ready-KD57IOYI.mjs} +19 -17
- package/dist/lib/node-esm/spaces-ready-KD57IOYI.mjs.map +7 -0
- package/dist/lib/node-esm/{state-XQNDCN37.mjs → state-JKO4JKA2.mjs} +6 -6
- package/dist/lib/node-esm/state-JKO4JKA2.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +2 -2
- 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/app-graph-serializer.d.ts.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +9 -3
- 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/CollectionMain.d.ts +1 -0
- package/dist/types/src/components/CollectionMain.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +4 -3
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1584 -3
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +5 -3
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
- package/dist/types/src/components/MembersContainer.d.ts +3 -2
- package/dist/types/src/components/MembersContainer.d.ts.map +1 -1
- package/dist/types/src/components/MembersContainer.stories.d.ts +1584 -4
- package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
- package/dist/types/src/components/ObjectDetailsPanel.d.ts +9 -0
- package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +1 -0
- package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
- package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -1
- package/dist/types/src/components/PersistenceStatus.d.ts.map +1 -1
- package/dist/types/src/components/PopoverRenameObject.d.ts +1 -1
- package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
- package/dist/types/src/components/RecordMain.d.ts +7 -0
- package/dist/types/src/components/RecordMain.d.ts.map +1 -0
- package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
- package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
- package/dist/types/src/components/SpacePresence.stories.d.ts +1411 -2
- package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1417 -3
- 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 +1418 -4
- 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 +8 -0
- package/dist/types/src/components/ViewEditor.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +14 -1
- 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/hooks/useActiveSpace.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +1402 -410
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +82 -22
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +32 -5
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +54 -53
- package/src/SpacePlugin.ts +81 -16
- package/src/capabilities/app-graph-builder.ts +232 -22
- package/src/capabilities/app-graph-serializer.ts +6 -6
- package/src/capabilities/capabilities.ts +9 -3
- package/src/capabilities/identity-created.ts +3 -5
- package/src/capabilities/index.ts +0 -1
- package/src/capabilities/intent-resolver.ts +136 -15
- package/src/capabilities/react-root.tsx +2 -1
- package/src/capabilities/react-surface.tsx +73 -22
- package/src/capabilities/schema-defs.ts +3 -2
- package/src/capabilities/spaces-ready.ts +10 -7
- package/src/capabilities/state.ts +3 -2
- package/src/components/AwaitingObject.tsx +5 -7
- package/src/components/CollectionMain.tsx +2 -0
- package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +9 -8
- package/src/components/CreateDialog/CreateObjectDialog.tsx +47 -33
- package/src/components/CreateDialog/CreateObjectPanel.tsx +18 -7
- package/src/components/CreateDialog/CreateSpaceDialog.tsx +1 -1
- package/src/components/JoinDialog.tsx +1 -1
- package/src/components/MembersContainer.stories.tsx +35 -10
- package/src/components/MembersContainer.tsx +13 -13
- package/src/components/MenuFooter.tsx +2 -3
- package/src/components/ObjectDetailsPanel.tsx +79 -0
- package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +2 -1
- package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +3 -2
- package/src/components/PersistenceStatus.tsx +5 -6
- package/src/components/PopoverRenameObject.tsx +7 -13
- package/src/components/PopoverRenameSpace.tsx +1 -1
- package/src/components/RecordMain.tsx +43 -0
- package/src/components/SchemaContainer.tsx +2 -2
- package/src/components/SpacePluginSettings.tsx +6 -7
- package/src/components/SpacePresence.stories.tsx +8 -5
- package/src/components/SpacePresence.tsx +7 -7
- package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +9 -6
- package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +8 -8
- package/src/components/SyncStatus/SyncStatus.stories.tsx +12 -18
- package/src/components/SyncStatus/SyncStatus.tsx +4 -3
- package/src/components/SyncStatus/save-tracker.ts +3 -3
- package/src/components/SyncStatus/status.ts +4 -4
- package/src/components/ViewEditor.tsx +59 -0
- package/src/components/index.ts +7 -1
- package/src/events.ts +2 -1
- package/src/hooks/useActiveSpace.ts +2 -2
- package/src/hooks/useInputSurfaceLookup.tsx +1 -1
- package/src/translations.ts +74 -9
- package/src/types/types.ts +66 -9
- package/src/util.tsx +177 -33
- package/dist/lib/browser/app-graph-builder-M2RH72VL.mjs.map +0 -7
- package/dist/lib/browser/app-graph-serializer-F7ISRRBV.mjs.map +0 -7
- package/dist/lib/browser/chunk-4ZKSFDXM.mjs.map +0 -7
- package/dist/lib/browser/chunk-BXNL6SDI.mjs.map +0 -7
- package/dist/lib/browser/chunk-NFUKCRGE.mjs.map +0 -7
- package/dist/lib/browser/chunk-TW7O2EPP.mjs.map +0 -7
- package/dist/lib/browser/chunk-V24VASAJ.mjs.map +0 -7
- package/dist/lib/browser/chunk-YMCZR6EZ.mjs.map +0 -7
- package/dist/lib/browser/identity-created-PI7TKANR.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-RWU6ZE4H.mjs.map +0 -7
- package/dist/lib/browser/react-surface-W56UD53I.mjs.map +0 -7
- package/dist/lib/browser/schema-defs-WREJNMIC.mjs.map +0 -7
- package/dist/lib/browser/schema-tools-ILTVSSS3.mjs +0 -124
- package/dist/lib/browser/schema-tools-ILTVSSS3.mjs.map +0 -7
- package/dist/lib/browser/spaces-ready-3PDRDHPC.mjs.map +0 -7
- package/dist/lib/browser/state-HRZ4VRXU.mjs.map +0 -7
- package/dist/lib/node/app-graph-builder-6LK5HLLE.cjs +0 -364
- package/dist/lib/node/app-graph-builder-6LK5HLLE.cjs.map +0 -7
- package/dist/lib/node/app-graph-serializer-HKHBNHA3.cjs +0 -89
- package/dist/lib/node/app-graph-serializer-HKHBNHA3.cjs.map +0 -7
- package/dist/lib/node/chunk-3X4EA4XL.cjs +0 -37
- package/dist/lib/node/chunk-3X4EA4XL.cjs.map +0 -7
- package/dist/lib/node/chunk-5WLAXYE3.cjs +0 -125
- package/dist/lib/node/chunk-5WLAXYE3.cjs.map +0 -7
- package/dist/lib/node/chunk-6P2DB4QQ.cjs +0 -36
- package/dist/lib/node/chunk-6P2DB4QQ.cjs.map +0 -7
- package/dist/lib/node/chunk-DOC5XEZ4.cjs +0 -184
- package/dist/lib/node/chunk-DOC5XEZ4.cjs.map +0 -7
- package/dist/lib/node/chunk-NCHF433F.cjs +0 -1921
- package/dist/lib/node/chunk-NCHF433F.cjs.map +0 -7
- package/dist/lib/node/chunk-NL5Y4EDX.cjs +0 -38
- package/dist/lib/node/chunk-NL5Y4EDX.cjs.map +0 -7
- package/dist/lib/node/chunk-ULJZPATP.cjs +0 -312
- package/dist/lib/node/chunk-ULJZPATP.cjs.map +0 -7
- package/dist/lib/node/chunk-XHWVT7LW.cjs +0 -572
- package/dist/lib/node/chunk-XHWVT7LW.cjs.map +0 -7
- package/dist/lib/node/identity-created-FF4WZ2WY.cjs +0 -42
- package/dist/lib/node/identity-created-FF4WZ2WY.cjs.map +0 -7
- package/dist/lib/node/index.cjs +0 -278
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-AV4CMM3Z.cjs +0 -609
- package/dist/lib/node/intent-resolver-AV4CMM3Z.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -1
- package/dist/lib/node/react-root-RQUU3A45.cjs +0 -51
- package/dist/lib/node/react-root-RQUU3A45.cjs.map +0 -7
- package/dist/lib/node/react-surface-AZFJLE72.cjs +0 -351
- package/dist/lib/node/react-surface-AZFJLE72.cjs.map +0 -7
- package/dist/lib/node/schema-defs-OB2X2HBH.cjs +0 -42
- package/dist/lib/node/schema-defs-OB2X2HBH.cjs.map +0 -7
- package/dist/lib/node/schema-tools-IYREN4IH.cjs +0 -147
- package/dist/lib/node/schema-tools-IYREN4IH.cjs.map +0 -7
- package/dist/lib/node/settings-P2EQ7VKQ.cjs +0 -38
- package/dist/lib/node/settings-P2EQ7VKQ.cjs.map +0 -7
- package/dist/lib/node/spaces-ready-DXPOHYV7.cjs +0 -210
- package/dist/lib/node/spaces-ready-DXPOHYV7.cjs.map +0 -7
- package/dist/lib/node/state-M35DK75Z.cjs +0 -61
- package/dist/lib/node/state-M35DK75Z.cjs.map +0 -7
- package/dist/lib/node/types/index.cjs +0 -48
- package/dist/lib/node/types/index.cjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-BCHVZ4OM.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-serializer-TXRGGNP2.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-3CP67AYY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-BSLREHIX.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-D4QMPPS7.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HO7AIKQS.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-JBQKU4K5.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-LA6AVVH6.mjs.map +0 -7
- package/dist/lib/node-esm/identity-created-35CTAQWI.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-JO6L2VXC.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-CVAPDLEZ.mjs.map +0 -7
- package/dist/lib/node-esm/schema-defs-4MEJETVX.mjs.map +0 -7
- package/dist/lib/node-esm/schema-tools-SRLCRZ3B.mjs +0 -126
- package/dist/lib/node-esm/schema-tools-SRLCRZ3B.mjs.map +0 -7
- package/dist/lib/node-esm/spaces-ready-FJMGPAVV.mjs.map +0 -7
- package/dist/lib/node-esm/state-XQNDCN37.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/src/capabilities/schema-tool.test.ts +0 -44
- package/src/capabilities/schema-tools.ts +0 -125
- /package/dist/lib/browser/{chunk-PTKYMZWO.mjs.map → chunk-FBCGT5YY.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-MSWEFAPD.mjs.map → chunk-HWNG4MEU.mjs.map} +0 -0
package/src/translations.ts
CHANGED
|
@@ -3,19 +3,24 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { Type } from '@dxos/echo';
|
|
6
|
+
import { StoredSchema } from '@dxos/echo-schema';
|
|
7
|
+
import { type Resource } from '@dxos/react-ui';
|
|
6
8
|
import { DataType } from '@dxos/schema';
|
|
7
9
|
|
|
8
|
-
import {
|
|
10
|
+
import { meta } from './meta';
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
// TODO(burdon): Change to single Resource?
|
|
13
|
+
export const translations = [
|
|
11
14
|
{
|
|
12
15
|
'en-US': {
|
|
13
|
-
[
|
|
16
|
+
[DataType.Collection.typename]: {
|
|
14
17
|
'typename label': 'Collection',
|
|
15
18
|
'typename label_zero': 'Collections',
|
|
16
19
|
'typename label_one': 'Collection',
|
|
17
20
|
'typename label_other': 'Collections',
|
|
18
21
|
'object name placeholder': 'New collection',
|
|
22
|
+
'rename object label': 'Rename collection',
|
|
23
|
+
'delete object label': 'Delete collection',
|
|
19
24
|
},
|
|
20
25
|
[Type.getTypename(DataType.QueryCollection)]: {
|
|
21
26
|
'typename label': 'Smart Collection',
|
|
@@ -23,8 +28,63 @@ export default [
|
|
|
23
28
|
'typename label_one': 'Smart Collection',
|
|
24
29
|
'typename label_other': 'Smart Collections',
|
|
25
30
|
'object name placeholder': 'New smart collection',
|
|
31
|
+
'rename object label': 'Rename smart collection',
|
|
32
|
+
'delete object label': 'Delete smart collection',
|
|
26
33
|
},
|
|
27
|
-
[
|
|
34
|
+
[StoredSchema.typename]: {
|
|
35
|
+
'typename label': 'Record',
|
|
36
|
+
'typename label_zero': 'Records',
|
|
37
|
+
'typename label_one': 'Record',
|
|
38
|
+
'typename label_other': 'Records',
|
|
39
|
+
'object name placeholder': 'New record type',
|
|
40
|
+
'rename object label': 'Rename record type',
|
|
41
|
+
'delete object label': 'Delete record type',
|
|
42
|
+
},
|
|
43
|
+
[Type.getTypename(DataType.View)]: {
|
|
44
|
+
'typename label': 'View',
|
|
45
|
+
'typename label_zero': 'Views',
|
|
46
|
+
'typename label_one': 'View',
|
|
47
|
+
'typename label_other': 'Views',
|
|
48
|
+
'object name placeholder': 'New view',
|
|
49
|
+
'rename object label': 'Rename view',
|
|
50
|
+
'delete object label': 'Delete view',
|
|
51
|
+
},
|
|
52
|
+
[DataType.Event.typename]: {
|
|
53
|
+
'typename label': 'Event',
|
|
54
|
+
'typename label_zero': 'Events',
|
|
55
|
+
'typename label_one': 'Event',
|
|
56
|
+
'typename label_other': 'Events',
|
|
57
|
+
'object name placeholder': 'New event',
|
|
58
|
+
},
|
|
59
|
+
[DataType.Organization.typename]: {
|
|
60
|
+
'typename label': 'Organization',
|
|
61
|
+
'typename label_zero': 'Organizations',
|
|
62
|
+
'typename label_one': 'Organization',
|
|
63
|
+
'typename label_other': 'Organizations',
|
|
64
|
+
'object name placeholder': 'New organization',
|
|
65
|
+
},
|
|
66
|
+
[DataType.Person.typename]: {
|
|
67
|
+
'typename label': 'Person',
|
|
68
|
+
'typename label_zero': 'People',
|
|
69
|
+
'typename label_one': 'Person',
|
|
70
|
+
'typename label_other': 'People',
|
|
71
|
+
'object name placeholder': 'New person',
|
|
72
|
+
},
|
|
73
|
+
[Type.getTypename(DataType.Project)]: {
|
|
74
|
+
'typename label': 'Project',
|
|
75
|
+
'typename label_zero': 'Projects',
|
|
76
|
+
'typename label_one': 'Project',
|
|
77
|
+
'typename label_other': 'Projects',
|
|
78
|
+
'object name placeholder': 'New project',
|
|
79
|
+
},
|
|
80
|
+
[DataType.Task.typename]: {
|
|
81
|
+
'typename label': 'Task',
|
|
82
|
+
'typename label_zero': 'Tasks',
|
|
83
|
+
'typename label_one': 'Task',
|
|
84
|
+
'typename label_other': 'Tasks',
|
|
85
|
+
'object name placeholder': 'New task',
|
|
86
|
+
},
|
|
87
|
+
[meta.id]: {
|
|
28
88
|
'plugin name': 'Spaces',
|
|
29
89
|
'first run message': 'Nothing selected.',
|
|
30
90
|
'create space label': 'Create space',
|
|
@@ -51,6 +111,7 @@ export default [
|
|
|
51
111
|
'confirm restore title': 'Overwrite files in this space?',
|
|
52
112
|
'confirm restore body': 'Restoring from a backup will overwrite the contents of any documents that match.',
|
|
53
113
|
'upload file message': 'Drag file here or click to browse',
|
|
114
|
+
'object name placeholder': 'Object',
|
|
54
115
|
'object placeholder': 'Type a title here…',
|
|
55
116
|
'personal space label': 'Personal Space',
|
|
56
117
|
'spaces label': 'Spaces',
|
|
@@ -134,6 +195,10 @@ export default [
|
|
|
134
195
|
'add key': 'Add Key',
|
|
135
196
|
'open space settings label': 'Open settings',
|
|
136
197
|
|
|
198
|
+
'row details no selection label': 'No objects selected',
|
|
199
|
+
'companion selected objects label': 'Selected',
|
|
200
|
+
'field deleted label': 'Field deleted',
|
|
201
|
+
|
|
137
202
|
'members panel label': 'Members',
|
|
138
203
|
'members verbose label': 'Manage space members',
|
|
139
204
|
'members description': 'You can view the current status of space members here as well as invite new members.',
|
|
@@ -150,10 +215,10 @@ export default [
|
|
|
150
215
|
'space settings properties label': 'General settings',
|
|
151
216
|
'space properties settings verbose label': 'Manage space properties',
|
|
152
217
|
'space properties settings description': 'You can configure how this space is displayed in the app here.',
|
|
153
|
-
'space settings schema label': '
|
|
154
|
-
'schema verbose label': 'Manage
|
|
155
|
-
'schema description': 'You can manage all of the
|
|
156
|
-
'no schemas found message': 'No
|
|
218
|
+
'space settings schema label': 'Record types',
|
|
219
|
+
'schema verbose label': 'Manage record types',
|
|
220
|
+
'schema description': 'You can manage all of the record types stored within this space here.',
|
|
221
|
+
'no schemas found message': 'No record types found',
|
|
157
222
|
'display name input placeholder': 'Space name',
|
|
158
223
|
'display name description': 'Name of the space as it appears in the app.',
|
|
159
224
|
'icon description': 'Icon used to represent the space in the app.',
|
|
@@ -167,4 +232,4 @@ export default [
|
|
|
167
232
|
},
|
|
168
233
|
},
|
|
169
234
|
},
|
|
170
|
-
];
|
|
235
|
+
] as const satisfies Resource[];
|
package/src/types/types.ts
CHANGED
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
import { Schema } from 'effect';
|
|
6
6
|
|
|
7
7
|
import { type AnyIntentChain } from '@dxos/app-framework';
|
|
8
|
-
import {
|
|
9
|
-
import { type BaseObject, type TypedObject } from '@dxos/echo-schema';
|
|
8
|
+
import { type Obj, Type } from '@dxos/echo';
|
|
9
|
+
import { type BaseObject, EchoSchema, StoredSchema, type TypedObject } from '@dxos/echo-schema';
|
|
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 { DataType, TypenameAnnotationId } from '@dxos/schema';
|
|
14
|
+
import { DataType, FieldSchema, TypenameAnnotationId } from '@dxos/schema';
|
|
15
15
|
import { type ComplexMap } from '@dxos/util';
|
|
16
16
|
|
|
17
17
|
import { SPACE_PLUGIN } from '../meta';
|
|
@@ -217,11 +217,68 @@ export namespace SpaceAction {
|
|
|
217
217
|
output: Schema.Boolean,
|
|
218
218
|
}) {}
|
|
219
219
|
|
|
220
|
+
export const StoredSchemaForm = Schema.Struct({
|
|
221
|
+
name: Schema.optional(Schema.String),
|
|
222
|
+
typename: Schema.optional(
|
|
223
|
+
Schema.String.annotations({
|
|
224
|
+
[TypenameAnnotationId]: ['unused-static'],
|
|
225
|
+
}),
|
|
226
|
+
),
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
export class UseStaticSchema extends Schema.TaggedClass<UseStaticSchema>()(`${SPACE_ACTION}/use-static-schema`, {
|
|
230
|
+
input: Schema.Struct({
|
|
231
|
+
space: SpaceSchema,
|
|
232
|
+
typename: Schema.String,
|
|
233
|
+
}),
|
|
234
|
+
output: Schema.Struct({}),
|
|
235
|
+
}) {}
|
|
236
|
+
|
|
237
|
+
export class AddSchema extends Schema.TaggedClass<AddSchema>()(`${SPACE_ACTION}/add-schema`, {
|
|
238
|
+
input: Schema.Struct({
|
|
239
|
+
space: SpaceSchema,
|
|
240
|
+
name: Schema.optional(Schema.String),
|
|
241
|
+
typename: Schema.optional(Schema.String),
|
|
242
|
+
// TODO(wittjosiah): Semantic version format.
|
|
243
|
+
version: Schema.optional(Schema.String),
|
|
244
|
+
// TODO(wittjosiah): Schema for schema?
|
|
245
|
+
schema: Schema.Any,
|
|
246
|
+
}),
|
|
247
|
+
output: Schema.Struct({
|
|
248
|
+
// TODO(wittjosiah): ObjectId.
|
|
249
|
+
id: Schema.String,
|
|
250
|
+
object: StoredSchema,
|
|
251
|
+
schema: Schema.instanceOf(EchoSchema),
|
|
252
|
+
}),
|
|
253
|
+
}) {}
|
|
254
|
+
|
|
255
|
+
export class DeleteField extends Schema.TaggedClass<DeleteField>()(`${SPACE_ACTION}/delete-field`, {
|
|
256
|
+
input: Schema.Struct({
|
|
257
|
+
view: DataType.View,
|
|
258
|
+
fieldId: Schema.String,
|
|
259
|
+
// TODO(wittjosiah): Separate fields for undo data?
|
|
260
|
+
deletionData: Schema.optional(
|
|
261
|
+
Schema.Struct({
|
|
262
|
+
field: FieldSchema,
|
|
263
|
+
// TODO(wittjosiah): This creates a type error.
|
|
264
|
+
// props: PropertySchema,
|
|
265
|
+
props: Schema.Any,
|
|
266
|
+
index: Schema.Number,
|
|
267
|
+
}),
|
|
268
|
+
),
|
|
269
|
+
}),
|
|
270
|
+
output: Schema.Void,
|
|
271
|
+
}) {}
|
|
272
|
+
|
|
220
273
|
export class OpenCreateObject extends Schema.TaggedClass<OpenCreateObject>()(`${SPACE_ACTION}/open-create-object`, {
|
|
221
274
|
input: Schema.Struct({
|
|
222
275
|
target: Schema.Union(SpaceSchema, DataType.Collection),
|
|
276
|
+
views: Schema.optional(Schema.Boolean),
|
|
223
277
|
typename: Schema.optional(Schema.String),
|
|
278
|
+
initialFormValues: Schema.optional(Schema.Any),
|
|
224
279
|
navigable: Schema.optional(Schema.Boolean),
|
|
280
|
+
// TODO(wittjosiah): This is a function, is there a better way to handle this?
|
|
281
|
+
onCreateObject: Schema.optional(Schema.Any),
|
|
225
282
|
}),
|
|
226
283
|
output: Schema.Void,
|
|
227
284
|
}) {}
|
|
@@ -233,6 +290,7 @@ export namespace SpaceAction {
|
|
|
233
290
|
hidden: Schema.optional(Schema.Boolean),
|
|
234
291
|
}),
|
|
235
292
|
output: Schema.Struct({
|
|
293
|
+
// TODO(wittjosiah): ObjectId.
|
|
236
294
|
id: Schema.String,
|
|
237
295
|
subject: Schema.Array(Schema.String),
|
|
238
296
|
object: EchoObjectSchema,
|
|
@@ -309,11 +367,9 @@ export namespace CollectionAction {
|
|
|
309
367
|
|
|
310
368
|
export const QueryCollectionForm = Schema.Struct({
|
|
311
369
|
name: Schema.optional(Schema.String),
|
|
312
|
-
typename: Schema.
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
}),
|
|
316
|
-
),
|
|
370
|
+
typename: Schema.String.annotations({
|
|
371
|
+
[TypenameAnnotationId]: ['object-form'],
|
|
372
|
+
}),
|
|
317
373
|
});
|
|
318
374
|
|
|
319
375
|
export class CreateQueryCollection extends Schema.TaggedClass<CreateQueryCollection>()(
|
|
@@ -321,7 +377,8 @@ export namespace CollectionAction {
|
|
|
321
377
|
{
|
|
322
378
|
input: QueryCollectionForm,
|
|
323
379
|
output: Schema.Struct({
|
|
324
|
-
|
|
380
|
+
// TODO(wittjosiah): Remove cast.
|
|
381
|
+
object: EchoObjectSchema, // DataType.QueryCollection,
|
|
325
382
|
}),
|
|
326
383
|
},
|
|
327
384
|
) {}
|
package/src/util.tsx
CHANGED
|
@@ -5,28 +5,28 @@
|
|
|
5
5
|
import { Rx } from '@effect-rx/rx-react';
|
|
6
6
|
import { pipe } from 'effect';
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import { LayoutAction, type PromiseIntentDispatcher, chain, createIntent } from '@dxos/app-framework';
|
|
9
9
|
import { Obj, Ref, Type } from '@dxos/echo';
|
|
10
|
-
import { EXPANDO_TYPENAME } from '@dxos/echo-schema';
|
|
10
|
+
import { type AnyEchoObject, EXPANDO_TYPENAME } from '@dxos/echo-schema';
|
|
11
11
|
import { invariant } from '@dxos/invariant';
|
|
12
12
|
import { Migrations } from '@dxos/migrations';
|
|
13
13
|
import {
|
|
14
14
|
ACTION_GROUP_TYPE,
|
|
15
15
|
ACTION_TYPE,
|
|
16
|
-
type ReadableGraph,
|
|
17
16
|
type ActionData,
|
|
18
17
|
type InvokeParams,
|
|
19
18
|
type Node,
|
|
20
19
|
type NodeArg,
|
|
20
|
+
type ReadableGraph,
|
|
21
21
|
isGraphNode,
|
|
22
22
|
} from '@dxos/plugin-graph';
|
|
23
|
-
import {
|
|
23
|
+
import { type QueryResult, type Space, SpaceState, fullyQualifiedId, getSpace, isSpace } from '@dxos/react-client/echo';
|
|
24
24
|
import { ATTENDABLE_PATH_SEPARATOR } from '@dxos/react-ui-attention';
|
|
25
25
|
import { type TreeData } from '@dxos/react-ui-list';
|
|
26
|
-
import { DataType } from '@dxos/schema';
|
|
26
|
+
import { DataType, typenameFromQuery } from '@dxos/schema';
|
|
27
27
|
|
|
28
28
|
import { SPACE_PLUGIN } from './meta';
|
|
29
|
-
import {
|
|
29
|
+
import { type ObjectForm, SPACE_TYPE, SpaceAction } from './types';
|
|
30
30
|
|
|
31
31
|
export const SPACES = `${SPACE_PLUGIN}-spaces`;
|
|
32
32
|
export const COMPOSER_SPACE_LOCK = 'dxos.org/plugin/space/lock';
|
|
@@ -36,7 +36,7 @@ export const SHARED = 'shared-spaces';
|
|
|
36
36
|
/**
|
|
37
37
|
* Convert a query result to an Rx value of the objects.
|
|
38
38
|
*/
|
|
39
|
-
export const rxFromQuery = <T extends
|
|
39
|
+
export const rxFromQuery = <T extends AnyEchoObject>(query: QueryResult<T>): Rx.Rx<T[]> => {
|
|
40
40
|
return Rx.make((get) => {
|
|
41
41
|
const unsubscribe = query.subscribe((result) => {
|
|
42
42
|
get.setSelf(result.objects);
|
|
@@ -145,16 +145,15 @@ const getQueryCollectionNodePartials = ({
|
|
|
145
145
|
space: Space;
|
|
146
146
|
resolve: (typename: string) => Record<string, any>;
|
|
147
147
|
}) => {
|
|
148
|
+
const typename = typenameFromQuery(collection.query);
|
|
148
149
|
return {
|
|
149
|
-
icon:
|
|
150
|
+
icon: typename && resolve(typename)?.icon,
|
|
150
151
|
acceptPersistenceClass: new Set(['echo']),
|
|
151
152
|
acceptPersistenceKey: new Set([space.id]),
|
|
152
153
|
role: 'branch',
|
|
153
154
|
canDrop: (source: TreeData) => {
|
|
154
155
|
return (
|
|
155
|
-
isGraphNode(source.item) &&
|
|
156
|
-
Obj.isObject(source.item.data) &&
|
|
157
|
-
Obj.getTypename(source.item.data) === collection.query.typename
|
|
156
|
+
isGraphNode(source.item) && Obj.isObject(source.item.data) && Obj.getTypename(source.item.data) === typename
|
|
158
157
|
);
|
|
159
158
|
},
|
|
160
159
|
onTransferStart: (child: Node<Obj.Any>, index?: number) => {
|
|
@@ -166,6 +165,31 @@ const getQueryCollectionNodePartials = ({
|
|
|
166
165
|
};
|
|
167
166
|
};
|
|
168
167
|
|
|
168
|
+
const getSchemaGraphNodePartials = () => {
|
|
169
|
+
return {
|
|
170
|
+
role: 'branch',
|
|
171
|
+
canDrop: () => false,
|
|
172
|
+
};
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
const getViewGraphNodePartials = ({
|
|
176
|
+
view,
|
|
177
|
+
resolve,
|
|
178
|
+
}: {
|
|
179
|
+
view: DataType.View;
|
|
180
|
+
resolve: (typename: string) => Record<string, any>;
|
|
181
|
+
}) => {
|
|
182
|
+
const presentation = view.presentation.target;
|
|
183
|
+
const typename = presentation ? Obj.getTypename(presentation) : undefined;
|
|
184
|
+
const metadata = typename ? resolve(typename) : {};
|
|
185
|
+
|
|
186
|
+
return {
|
|
187
|
+
label: view.name || ['object name placeholder', { ns: typename, default: 'New view' }],
|
|
188
|
+
icon: metadata.icon,
|
|
189
|
+
canDrop: () => false,
|
|
190
|
+
};
|
|
191
|
+
};
|
|
192
|
+
|
|
169
193
|
const checkPendingMigration = (space: Space) => {
|
|
170
194
|
return (
|
|
171
195
|
space.state.get() === SpaceState.SPACE_REQUIRES_MIGRATION ||
|
|
@@ -190,7 +214,7 @@ export const constructSpaceNode = ({
|
|
|
190
214
|
}) => {
|
|
191
215
|
const hasPendingMigration = checkPendingMigration(space);
|
|
192
216
|
const collection =
|
|
193
|
-
space.state.get() === SpaceState.SPACE_READY && space.properties[
|
|
217
|
+
space.state.get() === SpaceState.SPACE_READY && space.properties[DataType.Collection.typename]?.target;
|
|
194
218
|
const partials =
|
|
195
219
|
space.state.get() === SpaceState.SPACE_READY && Obj.instanceOf(DataType.Collection, collection)
|
|
196
220
|
? getCollectionGraphNodePartials({ collection, space, resolve })
|
|
@@ -331,34 +355,129 @@ export const constructSpaceActions = ({
|
|
|
331
355
|
return actions;
|
|
332
356
|
};
|
|
333
357
|
|
|
358
|
+
export const createStaticSchemaNode = ({ schema, space }: { schema: Type.Obj.Any; space: Space }) => {
|
|
359
|
+
return {
|
|
360
|
+
id: `${space.id}/${Type.getTypename(schema)}`,
|
|
361
|
+
type: `${SPACE_PLUGIN}/static-schema`,
|
|
362
|
+
data: schema,
|
|
363
|
+
properties: {
|
|
364
|
+
label: ['typename label', { ns: Type.getTypename(schema), default: Type.getTypename(schema) }],
|
|
365
|
+
icon: 'ph--database--regular',
|
|
366
|
+
role: 'branch',
|
|
367
|
+
canDrop: () => false,
|
|
368
|
+
space,
|
|
369
|
+
},
|
|
370
|
+
};
|
|
371
|
+
};
|
|
372
|
+
|
|
373
|
+
export const createStaticSchemaActions = ({
|
|
374
|
+
schema,
|
|
375
|
+
space,
|
|
376
|
+
dispatch,
|
|
377
|
+
deletable,
|
|
378
|
+
}: {
|
|
379
|
+
schema: Type.Obj.Any;
|
|
380
|
+
space: Space;
|
|
381
|
+
dispatch: PromiseIntentDispatcher;
|
|
382
|
+
deletable: boolean;
|
|
383
|
+
}) => {
|
|
384
|
+
const getId = (id: string) => `${space.id}/${Type.getTypename(schema)}/${id}`;
|
|
385
|
+
|
|
386
|
+
const actions: NodeArg<ActionData>[] = [
|
|
387
|
+
{
|
|
388
|
+
id: getId(SpaceAction.AddObject._tag),
|
|
389
|
+
type: ACTION_TYPE,
|
|
390
|
+
data: async () => {
|
|
391
|
+
await dispatch(
|
|
392
|
+
createIntent(SpaceAction.OpenCreateObject, {
|
|
393
|
+
target: space,
|
|
394
|
+
views: true,
|
|
395
|
+
initialFormValues: { typename: Type.getTypename(schema) },
|
|
396
|
+
}),
|
|
397
|
+
);
|
|
398
|
+
},
|
|
399
|
+
properties: {
|
|
400
|
+
label: ['add view to schema label', { ns: Type.getTypename(DataType.StoredSchema) }],
|
|
401
|
+
icon: 'ph--plus--regular',
|
|
402
|
+
disposition: 'list-item-primary',
|
|
403
|
+
testId: 'spacePlugin.addViewToSchema',
|
|
404
|
+
},
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
id: getId(SpaceAction.RenameObject._tag),
|
|
408
|
+
type: ACTION_TYPE,
|
|
409
|
+
data: async (params?: InvokeParams) => {
|
|
410
|
+
throw new Error('Not implemented');
|
|
411
|
+
},
|
|
412
|
+
properties: {
|
|
413
|
+
label: ['rename object label', { ns: Type.getTypename(DataType.StoredSchema) }],
|
|
414
|
+
icon: 'ph--pencil-simple-line--regular',
|
|
415
|
+
disabled: true,
|
|
416
|
+
disposition: 'list-item',
|
|
417
|
+
testId: 'spacePlugin.renameObject',
|
|
418
|
+
},
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
id: getId(SpaceAction.RemoveObjects._tag),
|
|
422
|
+
type: ACTION_TYPE,
|
|
423
|
+
data: async () => {
|
|
424
|
+
const index = space.properties.staticRecords.findIndex(
|
|
425
|
+
(typename: string) => typename === Type.getTypename(schema),
|
|
426
|
+
);
|
|
427
|
+
if (index > -1) {
|
|
428
|
+
space.properties.staticRecords.splice(index, 1);
|
|
429
|
+
}
|
|
430
|
+
},
|
|
431
|
+
properties: {
|
|
432
|
+
label: ['delete object label', { ns: Type.getTypename(DataType.StoredSchema) }],
|
|
433
|
+
icon: 'ph--trash--regular',
|
|
434
|
+
disposition: 'list-item',
|
|
435
|
+
disabled: !deletable,
|
|
436
|
+
testId: 'spacePlugin.deleteObject',
|
|
437
|
+
},
|
|
438
|
+
},
|
|
439
|
+
];
|
|
440
|
+
|
|
441
|
+
return actions;
|
|
442
|
+
};
|
|
443
|
+
|
|
334
444
|
export const createObjectNode = ({
|
|
335
445
|
space,
|
|
336
446
|
object,
|
|
447
|
+
disposition,
|
|
337
448
|
droppable = true,
|
|
338
449
|
navigable = false,
|
|
339
450
|
resolve,
|
|
340
451
|
}: {
|
|
341
452
|
space: Space;
|
|
342
453
|
object: Obj.Any;
|
|
454
|
+
disposition?: string;
|
|
343
455
|
droppable?: boolean;
|
|
344
456
|
navigable?: boolean;
|
|
345
457
|
resolve: (typename: string) => Record<string, any>;
|
|
346
458
|
}) => {
|
|
347
459
|
const type = Obj.getTypename(object);
|
|
348
460
|
if (!type) {
|
|
349
|
-
return
|
|
461
|
+
return null;
|
|
350
462
|
}
|
|
351
463
|
|
|
352
464
|
const metadata = resolve(type);
|
|
353
|
-
if (Object.keys(metadata).length === 0) {
|
|
354
|
-
return undefined;
|
|
355
|
-
}
|
|
356
|
-
|
|
357
465
|
const partials = Obj.instanceOf(DataType.Collection, object)
|
|
358
466
|
? getCollectionGraphNodePartials({ collection: object, space, resolve })
|
|
359
467
|
: Obj.instanceOf(DataType.QueryCollection, object)
|
|
360
468
|
? getQueryCollectionNodePartials({ collection: object, space, resolve })
|
|
361
|
-
:
|
|
469
|
+
: Obj.instanceOf(DataType.StoredSchema, object)
|
|
470
|
+
? getSchemaGraphNodePartials()
|
|
471
|
+
: Obj.instanceOf(DataType.View, object)
|
|
472
|
+
? getViewGraphNodePartials({ view: object, resolve })
|
|
473
|
+
: metadata.graphProps;
|
|
474
|
+
|
|
475
|
+
// TODO(wittjosiah): Obj.getLabel isn't triggering reactivity in some cases.
|
|
476
|
+
// e.g., create new collection with no name and rename it.
|
|
477
|
+
const label = (object as any).name ||
|
|
478
|
+
Obj.getLabel(object) ||
|
|
479
|
+
// TODO(wittjosiah): Remove metadata labels.
|
|
480
|
+
metadata.label?.(object) || ['object name placeholder', { ns: type, default: 'New item' }];
|
|
362
481
|
|
|
363
482
|
return {
|
|
364
483
|
id: fullyQualifiedId(object),
|
|
@@ -366,10 +485,9 @@ export const createObjectNode = ({
|
|
|
366
485
|
cacheable: ['label', 'icon', 'role'],
|
|
367
486
|
data: object,
|
|
368
487
|
properties: {
|
|
369
|
-
|
|
370
|
-
label: metadata.label?.(object) ||
|
|
371
|
-
(object as any).name || ['object name placeholder', { ns: type, default: 'New object' }],
|
|
488
|
+
label,
|
|
372
489
|
icon: metadata.icon ?? 'ph--placeholder--regular',
|
|
490
|
+
disposition,
|
|
373
491
|
testId: 'spacePlugin.object',
|
|
374
492
|
persistenceClass: 'echo',
|
|
375
493
|
persistenceKey: space?.id,
|
|
@@ -386,21 +504,26 @@ export const constructObjectActions = ({
|
|
|
386
504
|
graph,
|
|
387
505
|
dispatch,
|
|
388
506
|
objectForms,
|
|
507
|
+
deletable = true,
|
|
389
508
|
navigable = false,
|
|
390
509
|
}: {
|
|
391
510
|
object: Obj.Any;
|
|
392
511
|
graph: ReadableGraph;
|
|
393
512
|
dispatch: PromiseIntentDispatcher;
|
|
394
513
|
objectForms: ObjectForm<any>[];
|
|
514
|
+
deletable?: boolean;
|
|
395
515
|
navigable?: boolean;
|
|
396
516
|
}) => {
|
|
397
517
|
const space = getSpace(object);
|
|
398
518
|
invariant(space, 'Space not found');
|
|
519
|
+
const typename = Obj.getTypename(object);
|
|
520
|
+
invariant(typename, 'Object has no typename');
|
|
521
|
+
|
|
399
522
|
const getId = (id: string) => `${id}/${fullyQualifiedId(object)}`;
|
|
400
523
|
|
|
401
524
|
const queryCollection = Obj.instanceOf(DataType.QueryCollection, object) ? object : undefined;
|
|
402
525
|
const matchingObjectForm = queryCollection
|
|
403
|
-
? objectForms.find((form) => Type.getTypename(form.objectSchema) === queryCollection.query
|
|
526
|
+
? objectForms.find((form) => Type.getTypename(form.objectSchema) === typenameFromQuery(queryCollection.query))
|
|
404
527
|
: undefined;
|
|
405
528
|
|
|
406
529
|
const actions: NodeArg<ActionData>[] = [
|
|
@@ -421,6 +544,29 @@ export const constructObjectActions = ({
|
|
|
421
544
|
},
|
|
422
545
|
]
|
|
423
546
|
: []),
|
|
547
|
+
...(Obj.instanceOf(DataType.StoredSchema, object)
|
|
548
|
+
? [
|
|
549
|
+
{
|
|
550
|
+
id: getId(SpaceAction.AddObject._tag),
|
|
551
|
+
type: ACTION_TYPE,
|
|
552
|
+
data: async () => {
|
|
553
|
+
await dispatch(
|
|
554
|
+
createIntent(SpaceAction.OpenCreateObject, {
|
|
555
|
+
target: space,
|
|
556
|
+
views: true,
|
|
557
|
+
initialFormValues: { typename: object.typename },
|
|
558
|
+
}),
|
|
559
|
+
);
|
|
560
|
+
},
|
|
561
|
+
properties: {
|
|
562
|
+
label: ['add view to schema label', { ns: Type.getTypename(DataType.StoredSchema) }],
|
|
563
|
+
icon: 'ph--plus--regular',
|
|
564
|
+
disposition: 'list-item-primary',
|
|
565
|
+
testId: 'spacePlugin.addViewToSchema',
|
|
566
|
+
},
|
|
567
|
+
},
|
|
568
|
+
]
|
|
569
|
+
: []),
|
|
424
570
|
...(matchingObjectForm
|
|
425
571
|
? [
|
|
426
572
|
{
|
|
@@ -431,7 +577,7 @@ export const constructObjectActions = ({
|
|
|
431
577
|
await dispatch(
|
|
432
578
|
createIntent(SpaceAction.OpenCreateObject, {
|
|
433
579
|
target: space,
|
|
434
|
-
typename: queryCollection
|
|
580
|
+
typename: queryCollection ? typenameFromQuery(queryCollection.query) : undefined,
|
|
435
581
|
}),
|
|
436
582
|
);
|
|
437
583
|
} else {
|
|
@@ -460,10 +606,7 @@ export const constructObjectActions = ({
|
|
|
460
606
|
await dispatch(createIntent(SpaceAction.RenameObject, { object, caller: params?.caller }));
|
|
461
607
|
},
|
|
462
608
|
properties: {
|
|
463
|
-
label: [
|
|
464
|
-
Obj.instanceOf(DataType.Collection, object) ? 'rename collection label' : 'rename object label',
|
|
465
|
-
{ ns: SPACE_PLUGIN },
|
|
466
|
-
],
|
|
609
|
+
label: ['rename object label', { ns: typename }],
|
|
467
610
|
icon: 'ph--pencil-simple-line--regular',
|
|
468
611
|
disposition: 'list-item',
|
|
469
612
|
// TODO(wittjosiah): Not working.
|
|
@@ -483,18 +626,19 @@ export const constructObjectActions = ({
|
|
|
483
626
|
await dispatch(createIntent(SpaceAction.RemoveObjects, { objects: [object], target: collection }));
|
|
484
627
|
},
|
|
485
628
|
properties: {
|
|
486
|
-
label: [
|
|
487
|
-
Obj.instanceOf(DataType.Collection, object) ? 'delete collection label' : 'delete object label',
|
|
488
|
-
{ ns: SPACE_PLUGIN },
|
|
489
|
-
],
|
|
629
|
+
label: ['delete object label', { ns: typename }],
|
|
490
630
|
icon: 'ph--trash--regular',
|
|
491
631
|
disposition: 'list-item',
|
|
632
|
+
disabled: !deletable,
|
|
492
633
|
// TODO(wittjosiah): This is a browser shortcut.
|
|
493
634
|
// keyBinding: object instanceof CollectionType ? undefined : 'shift+meta+Backspace',
|
|
494
635
|
testId: 'spacePlugin.deleteObject',
|
|
495
636
|
},
|
|
496
637
|
},
|
|
497
|
-
...(navigable ||
|
|
638
|
+
...(navigable ||
|
|
639
|
+
(!Obj.instanceOf(DataType.Collection, object) &&
|
|
640
|
+
!Obj.instanceOf(DataType.QueryCollection, object) &&
|
|
641
|
+
!Obj.instanceOf(DataType.StoredSchema, object))
|
|
498
642
|
? [
|
|
499
643
|
{
|
|
500
644
|
id: getId('copy-link'),
|
|
@@ -564,7 +708,7 @@ export const cloneObject = async (
|
|
|
564
708
|
newSpace: Space,
|
|
565
709
|
): Promise<Type.Expando> => {
|
|
566
710
|
const schema = Obj.getSchema(object);
|
|
567
|
-
const typename = schema ? Type.getTypename(schema) ?? EXPANDO_TYPENAME : EXPANDO_TYPENAME;
|
|
711
|
+
const typename = schema ? (Type.getTypename(schema) ?? EXPANDO_TYPENAME) : EXPANDO_TYPENAME;
|
|
568
712
|
const metadata = resolve(typename);
|
|
569
713
|
const serializer = metadata.serializer;
|
|
570
714
|
invariant(serializer, `No serializer for type: ${typename}`);
|