@dxos/plugin-space 0.8.4-main.a4bbb77 → 0.8.4-main.ae835ea
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-AX7KKXWP.mjs → CollectionMain-HTKSZCRR.mjs} +2 -2
- package/dist/lib/browser/ObjectDetailsPanel-5B45G744.mjs +145 -0
- package/dist/lib/browser/ObjectDetailsPanel-5B45G744.mjs.map +7 -0
- package/dist/lib/browser/ObjectSettings-UFTKBP7B.mjs +146 -0
- package/dist/lib/browser/ObjectSettings-UFTKBP7B.mjs.map +7 -0
- package/dist/lib/browser/RecordMain-BCSXTSEB.mjs +99 -0
- package/dist/lib/browser/RecordMain-BCSXTSEB.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-builder-W7RVDAUA.mjs → app-graph-builder-QJFO4ANM.mjs} +37 -34
- package/dist/lib/browser/app-graph-builder-QJFO4ANM.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-VLHVTDX4.mjs → app-graph-serializer-3R5NVV7U.mjs} +5 -5
- package/dist/lib/browser/{chunk-E2I747A7.mjs → chunk-2NS3VPSY.mjs} +2 -2
- package/dist/lib/browser/chunk-2NS3VPSY.mjs.map +7 -0
- package/dist/lib/browser/{chunk-ZIZ2JLW6.mjs → chunk-4V4JNJ33.mjs} +12 -4
- package/dist/lib/browser/chunk-4V4JNJ33.mjs.map +7 -0
- package/dist/lib/browser/{chunk-2BFVC5K6.mjs → chunk-ENBBJSNE.mjs} +230 -254
- package/dist/lib/browser/chunk-ENBBJSNE.mjs.map +7 -0
- package/dist/lib/browser/chunk-HS2VD6DN.mjs +166 -0
- package/dist/lib/browser/chunk-HS2VD6DN.mjs.map +7 -0
- package/dist/lib/browser/{chunk-PN27K4I7.mjs → chunk-OWNBEI5J.mjs} +23 -14
- package/dist/lib/browser/chunk-OWNBEI5J.mjs.map +7 -0
- package/dist/lib/browser/{chunk-JCHSUOPF.mjs → chunk-SLDQWMQ2.mjs} +12 -7
- package/dist/lib/browser/chunk-SLDQWMQ2.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-EIXZABXD.mjs → chunk-WJXU4GKV.mjs} +2 -2
- package/dist/lib/browser/index.mjs +31 -31
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-HA7DPAUE.mjs → intent-resolver-MBVOLXFQ.mjs} +30 -23
- package/dist/lib/browser/intent-resolver-MBVOLXFQ.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-root-YQUJU64P.mjs → react-root-NKEKCEYM.mjs} +7 -7
- package/dist/lib/browser/{react-surface-HTXYMRSW.mjs → react-surface-PYSN2MBY.mjs} +15 -46
- package/dist/lib/browser/react-surface-PYSN2MBY.mjs.map +7 -0
- package/dist/lib/browser/{schema-defs-R56ZDBZ7.mjs → schema-defs-DWYK7TYW.mjs} +3 -3
- package/dist/lib/browser/{settings-5XPQMSPO.mjs → settings-ZUCC3ZLB.mjs} +3 -3
- package/dist/lib/browser/{spaces-ready-YY77ANIF.mjs → spaces-ready-HTWWJHLR.mjs} +6 -6
- package/dist/lib/browser/spaces-ready-HTWWJHLR.mjs.map +7 -0
- package/dist/lib/browser/{state-Y4RVCG4A.mjs → state-ISVAKMO7.mjs} +3 -3
- package/dist/lib/browser/types/index.mjs +2 -2
- package/dist/lib/node-esm/{CollectionMain-EU57SRYK.mjs → CollectionMain-OUHGG6OC.mjs} +2 -2
- package/dist/lib/node-esm/ObjectDetailsPanel-4SDHQVQU.mjs +146 -0
- package/dist/lib/node-esm/ObjectDetailsPanel-4SDHQVQU.mjs.map +7 -0
- package/dist/lib/node-esm/ObjectSettings-EU6F43RP.mjs +147 -0
- package/dist/lib/node-esm/ObjectSettings-EU6F43RP.mjs.map +7 -0
- package/dist/lib/node-esm/RecordMain-SD76DGOR.mjs +100 -0
- package/dist/lib/node-esm/RecordMain-SD76DGOR.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-5ZJJUMQI.mjs → app-graph-builder-B23W62HY.mjs} +37 -34
- package/dist/lib/node-esm/app-graph-builder-B23W62HY.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-EZJSGJUT.mjs → app-graph-serializer-3Z3EXEEF.mjs} +5 -5
- 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-5XRYHWL7.mjs → chunk-G4PDWB7G.mjs} +12 -4
- package/dist/lib/node-esm/chunk-G4PDWB7G.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-SVFKU7EW.mjs → chunk-H4JILUJK.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-BLPXWPLB.mjs → chunk-KKPCCA5O.mjs} +230 -254
- package/dist/lib/node-esm/chunk-KKPCCA5O.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-PM4ZIGKC.mjs +167 -0
- package/dist/lib/node-esm/chunk-PM4ZIGKC.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-XDQXUZMK.mjs → chunk-XEVIWD3O.mjs} +23 -14
- package/dist/lib/node-esm/chunk-XEVIWD3O.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-6WNZW6KT.mjs → chunk-YFQXFQGT.mjs} +12 -7
- package/dist/lib/node-esm/chunk-YFQXFQGT.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-IJVBBVCL.mjs → chunk-ZLMFLI7G.mjs} +2 -2
- package/dist/lib/node-esm/chunk-ZLMFLI7G.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +31 -31
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-LQNHMPIX.mjs → intent-resolver-IWI47NTW.mjs} +30 -23
- package/dist/lib/node-esm/intent-resolver-IWI47NTW.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-UTLJEIKE.mjs → react-root-LX7SIG6M.mjs} +7 -7
- package/dist/lib/node-esm/{react-surface-LYDYON3U.mjs → react-surface-6SVGOZNJ.mjs} +15 -46
- package/dist/lib/node-esm/react-surface-6SVGOZNJ.mjs.map +7 -0
- package/dist/lib/node-esm/{schema-defs-7IMJPIWS.mjs → schema-defs-EOG2UPJU.mjs} +3 -3
- package/dist/lib/node-esm/{settings-XBSK5KHH.mjs → settings-ZDJNLFGW.mjs} +3 -3
- package/dist/lib/node-esm/{spaces-ready-YX4IHT4P.mjs → spaces-ready-VUGYPF4L.mjs} +6 -6
- package/dist/lib/node-esm/spaces-ready-VUGYPF4L.mjs.map +7 -0
- package/dist/lib/node-esm/{state-HOHAVPUO.mjs → state-QZ4Q6ZRL.mjs} +3 -3
- 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.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +2 -1
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +80 -0
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
- package/dist/types/src/components/MembersContainer.stories.d.ts +80 -0
- package/dist/types/src/components/MembersContainer.stories.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/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 +1500 -0
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -0
- package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +1 -1
- package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
- package/dist/types/src/components/ObjectSettings/index.d.ts +2 -1
- package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -1
- package/dist/types/src/components/RecordMain.d.ts +4 -3
- package/dist/types/src/components/RecordMain.d.ts.map +1 -1
- package/dist/types/src/components/RecordMain.stories.d.ts +1667 -0
- package/dist/types/src/components/RecordMain.stories.d.ts.map +1 -0
- package/dist/types/src/components/SpacePresence.stories.d.ts +80 -0
- 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 +80 -0
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +81 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
- package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +4 -6
- package/dist/types/src/components/index.d.ts.map +1 -1
- 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/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/meta.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +80 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +6 -4
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +4 -1
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +50 -48
- package/src/SpacePlugin.ts +7 -13
- package/src/capabilities/app-graph-builder.ts +29 -24
- package/src/capabilities/capabilities.ts +7 -2
- package/src/capabilities/intent-resolver.ts +13 -8
- package/src/capabilities/react-surface.tsx +6 -77
- package/src/capabilities/spaces-ready.ts +1 -1
- package/src/components/CreateDialog/CreateObjectDialog.tsx +5 -4
- package/src/components/CreateDialog/CreateObjectPanel.tsx +2 -2
- package/src/components/CreateDialog/CreateSpaceDialog.tsx +2 -1
- package/src/components/MembersContainer.tsx +1 -1
- package/src/components/{ObjectDetailsPanel.tsx → ObjectDetailsPanel/ObjectDetailsPanel.tsx} +8 -35
- package/src/components/ObjectDetailsPanel/ObjectForm.tsx +75 -0
- package/src/components/ObjectDetailsPanel/index.ts +7 -0
- package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +1 -1
- package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
- package/src/components/ObjectSettings/BaseObjectSettings.tsx +86 -26
- package/src/components/ObjectSettings/ForeignKeys.tsx +1 -1
- package/src/components/ObjectSettings/index.ts +3 -1
- package/src/components/RecordMain.stories.tsx +116 -0
- package/src/components/RecordMain.tsx +69 -29
- package/src/components/SchemaContainer.tsx +1 -1
- package/src/components/SpacePresence.tsx +1 -1
- package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +4 -3
- package/src/components/SyncStatus/InlineSyncStatus.tsx +5 -5
- package/src/components/SyncStatus/SyncStatus.stories.tsx +3 -2
- package/src/components/SyncStatus/SyncStatus.tsx +93 -3
- package/src/components/ViewEditor.tsx +6 -7
- package/src/components/index.ts +1 -1
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useInputSurfaceLookup.tsx +1 -1
- package/src/hooks/usePath.ts +1 -1
- package/src/hooks/useTypeOptions.ts +59 -0
- package/src/meta.ts +5 -0
- package/src/translations.ts +10 -1
- package/src/types/types.ts +9 -5
- package/src/util.tsx +22 -8
- package/dist/lib/browser/ObjectDetailsPanel-ETI5YBTH.mjs +0 -90
- package/dist/lib/browser/ObjectDetailsPanel-ETI5YBTH.mjs.map +0 -7
- package/dist/lib/browser/RecordMain-TEBGAVSL.mjs +0 -68
- package/dist/lib/browser/RecordMain-TEBGAVSL.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-W7RVDAUA.mjs.map +0 -7
- package/dist/lib/browser/chunk-2BFVC5K6.mjs.map +0 -7
- package/dist/lib/browser/chunk-E2I747A7.mjs.map +0 -7
- package/dist/lib/browser/chunk-ELJDGQTO.mjs +0 -94
- package/dist/lib/browser/chunk-ELJDGQTO.mjs.map +0 -7
- package/dist/lib/browser/chunk-IRKDREHY.mjs +0 -11
- package/dist/lib/browser/chunk-IRKDREHY.mjs.map +0 -7
- package/dist/lib/browser/chunk-JCHSUOPF.mjs.map +0 -7
- package/dist/lib/browser/chunk-PN27K4I7.mjs.map +0 -7
- package/dist/lib/browser/chunk-ZIZ2JLW6.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-HA7DPAUE.mjs.map +0 -7
- package/dist/lib/browser/react-surface-HTXYMRSW.mjs.map +0 -7
- package/dist/lib/browser/spaces-ready-YY77ANIF.mjs.map +0 -7
- package/dist/lib/node-esm/ObjectDetailsPanel-TQ5GN4QJ.mjs +0 -91
- package/dist/lib/node-esm/ObjectDetailsPanel-TQ5GN4QJ.mjs.map +0 -7
- package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs +0 -70
- package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-5ZJJUMQI.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-5XRYHWL7.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-6WNZW6KT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-BLPXWPLB.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-IJVBBVCL.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-MWNATOXL.mjs +0 -13
- package/dist/lib/node-esm/chunk-MWNATOXL.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-Q6AAQLQG.mjs +0 -96
- package/dist/lib/node-esm/chunk-Q6AAQLQG.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-XDQXUZMK.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-LQNHMPIX.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-LYDYON3U.mjs.map +0 -7
- package/dist/lib/node-esm/spaces-ready-YX4IHT4P.mjs.map +0 -7
- package/dist/types/src/components/ObjectDetailsPanel.d.ts +0 -9
- package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +0 -1
- /package/dist/lib/browser/{CollectionMain-AX7KKXWP.mjs.map → CollectionMain-HTKSZCRR.mjs.map} +0 -0
- /package/dist/lib/browser/{app-graph-serializer-VLHVTDX4.mjs.map → app-graph-serializer-3R5NVV7U.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-EIXZABXD.mjs.map → chunk-WJXU4GKV.mjs.map} +0 -0
- /package/dist/lib/browser/{react-root-YQUJU64P.mjs.map → react-root-NKEKCEYM.mjs.map} +0 -0
- /package/dist/lib/browser/{schema-defs-R56ZDBZ7.mjs.map → schema-defs-DWYK7TYW.mjs.map} +0 -0
- /package/dist/lib/browser/{settings-5XPQMSPO.mjs.map → settings-ZUCC3ZLB.mjs.map} +0 -0
- /package/dist/lib/browser/{state-Y4RVCG4A.mjs.map → state-ISVAKMO7.mjs.map} +0 -0
- /package/dist/lib/node-esm/{CollectionMain-EU57SRYK.mjs.map → CollectionMain-OUHGG6OC.mjs.map} +0 -0
- /package/dist/lib/node-esm/{app-graph-serializer-EZJSGJUT.mjs.map → app-graph-serializer-3Z3EXEEF.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-SVFKU7EW.mjs.map → chunk-H4JILUJK.mjs.map} +0 -0
- /package/dist/lib/node-esm/{react-root-UTLJEIKE.mjs.map → react-root-LX7SIG6M.mjs.map} +0 -0
- /package/dist/lib/node-esm/{schema-defs-7IMJPIWS.mjs.map → schema-defs-EOG2UPJU.mjs.map} +0 -0
- /package/dist/lib/node-esm/{settings-XBSK5KHH.mjs.map → settings-ZDJNLFGW.mjs.map} +0 -0
- /package/dist/lib/node-esm/{state-HOHAVPUO.mjs.map → state-QZ4Q6ZRL.mjs.map} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/plugin-space",
|
|
3
|
-
"version": "0.8.4-main.
|
|
3
|
+
"version": "0.8.4-main.ae835ea",
|
|
4
4
|
"description": "DXOS Surface plugin for DXOS ECHO Spaces",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -43,60 +43,62 @@
|
|
|
43
43
|
"react-drag-drop-files": "^2.3.8",
|
|
44
44
|
"react-is": "~19.2.0",
|
|
45
45
|
"react-qr-rounded": "^1.0.0",
|
|
46
|
-
"@dxos/ai": "0.8.4-main.
|
|
47
|
-
"@dxos/app-framework": "0.8.4-main.
|
|
48
|
-
"@dxos/async": "0.8.4-main.
|
|
49
|
-
"@dxos/
|
|
50
|
-
"@dxos/
|
|
51
|
-
"@dxos/
|
|
52
|
-
"@dxos/echo": "0.8.4-main.
|
|
53
|
-
"@dxos/echo-
|
|
54
|
-
"@dxos/
|
|
55
|
-
"@dxos/
|
|
56
|
-
"@dxos/effect": "0.8.4-main.
|
|
57
|
-
"@dxos/
|
|
58
|
-
"@dxos/
|
|
59
|
-
"@dxos/
|
|
60
|
-
"@dxos/
|
|
61
|
-
"@dxos/
|
|
62
|
-
"@dxos/
|
|
63
|
-
"@dxos/plugin-
|
|
64
|
-
"@dxos/
|
|
65
|
-
"@dxos/plugin-graph": "0.8.4-main.
|
|
66
|
-
"@dxos/plugin-observability": "0.8.4-main.
|
|
67
|
-
"@dxos/
|
|
68
|
-
"@dxos/
|
|
69
|
-
"@dxos/
|
|
70
|
-
"@dxos/react-
|
|
71
|
-
"@dxos/react-ui-attention": "0.8.4-main.
|
|
72
|
-
"@dxos/react-ui-components": "0.8.4-main.
|
|
73
|
-
"@dxos/react-ui-
|
|
74
|
-
"@dxos/react-ui-
|
|
75
|
-
"@dxos/react-ui-
|
|
76
|
-
"@dxos/react-ui-pickers": "0.8.4-main.
|
|
77
|
-
"@dxos/react-ui-
|
|
78
|
-
"@dxos/react-ui-
|
|
79
|
-
"@dxos/react-ui-
|
|
80
|
-
"@dxos/react-ui-
|
|
81
|
-
"@dxos/react-ui-tabs": "0.8.4-main.
|
|
82
|
-
"@dxos/
|
|
83
|
-
"@dxos/
|
|
84
|
-
"@dxos/
|
|
46
|
+
"@dxos/ai": "0.8.4-main.ae835ea",
|
|
47
|
+
"@dxos/app-framework": "0.8.4-main.ae835ea",
|
|
48
|
+
"@dxos/async": "0.8.4-main.ae835ea",
|
|
49
|
+
"@dxos/blueprints": "0.8.4-main.ae835ea",
|
|
50
|
+
"@dxos/context": "0.8.4-main.ae835ea",
|
|
51
|
+
"@dxos/display-name": "0.8.4-main.ae835ea",
|
|
52
|
+
"@dxos/echo": "0.8.4-main.ae835ea",
|
|
53
|
+
"@dxos/echo-signals": "0.8.4-main.ae835ea",
|
|
54
|
+
"@dxos/invariant": "0.8.4-main.ae835ea",
|
|
55
|
+
"@dxos/keys": "0.8.4-main.ae835ea",
|
|
56
|
+
"@dxos/effect": "0.8.4-main.ae835ea",
|
|
57
|
+
"@dxos/local-storage": "0.8.4-main.ae835ea",
|
|
58
|
+
"@dxos/log": "0.8.4-main.ae835ea",
|
|
59
|
+
"@dxos/live-object": "0.8.4-main.ae835ea",
|
|
60
|
+
"@dxos/migrations": "0.8.4-main.ae835ea",
|
|
61
|
+
"@dxos/plugin-attention": "0.8.4-main.ae835ea",
|
|
62
|
+
"@dxos/plugin-client": "0.8.4-main.ae835ea",
|
|
63
|
+
"@dxos/plugin-deck": "0.8.4-main.ae835ea",
|
|
64
|
+
"@dxos/client": "0.8.4-main.ae835ea",
|
|
65
|
+
"@dxos/plugin-graph": "0.8.4-main.ae835ea",
|
|
66
|
+
"@dxos/plugin-observability": "0.8.4-main.ae835ea",
|
|
67
|
+
"@dxos/protocols": "0.8.4-main.ae835ea",
|
|
68
|
+
"@dxos/react-client": "0.8.4-main.ae835ea",
|
|
69
|
+
"@dxos/plugin-status-bar": "0.8.4-main.ae835ea",
|
|
70
|
+
"@dxos/react-ui": "0.8.4-main.ae835ea",
|
|
71
|
+
"@dxos/react-ui-attention": "0.8.4-main.ae835ea",
|
|
72
|
+
"@dxos/react-ui-components": "0.8.4-main.ae835ea",
|
|
73
|
+
"@dxos/react-ui-form": "0.8.4-main.ae835ea",
|
|
74
|
+
"@dxos/react-ui-editor": "0.8.4-main.ae835ea",
|
|
75
|
+
"@dxos/react-ui-masonry": "0.8.4-main.ae835ea",
|
|
76
|
+
"@dxos/react-ui-pickers": "0.8.4-main.ae835ea",
|
|
77
|
+
"@dxos/react-ui-list": "0.8.4-main.ae835ea",
|
|
78
|
+
"@dxos/react-ui-searchlist": "0.8.4-main.ae835ea",
|
|
79
|
+
"@dxos/react-ui-stack": "0.8.4-main.ae835ea",
|
|
80
|
+
"@dxos/react-ui-theme": "0.8.4-main.ae835ea",
|
|
81
|
+
"@dxos/react-ui-tabs": "0.8.4-main.ae835ea",
|
|
82
|
+
"@dxos/shell": "0.8.4-main.ae835ea",
|
|
83
|
+
"@dxos/react-ui-syntax-highlighter": "0.8.4-main.ae835ea",
|
|
84
|
+
"@dxos/util": "0.8.4-main.ae835ea",
|
|
85
|
+
"@dxos/schema": "0.8.4-main.ae835ea"
|
|
85
86
|
},
|
|
86
87
|
"devDependencies": {
|
|
87
88
|
"@babel/core": "^7.18.13",
|
|
88
89
|
"@effect-rx/rx-react": "0.42.4",
|
|
89
90
|
"@effect/platform": "0.92.1",
|
|
90
|
-
"@types/react": "~19.2.
|
|
91
|
-
"@types/react-dom": "~19.2.
|
|
91
|
+
"@types/react": "~19.2.2",
|
|
92
|
+
"@types/react-dom": "~19.2.2",
|
|
92
93
|
"effect": "3.18.3",
|
|
93
94
|
"react": "~19.2.0",
|
|
94
95
|
"react-dom": "~19.2.0",
|
|
95
96
|
"vite": "7.1.9",
|
|
96
|
-
"@dxos/
|
|
97
|
-
"@dxos/
|
|
98
|
-
"@dxos/react-ui": "0.8.4-main.
|
|
99
|
-
"@dxos/
|
|
97
|
+
"@dxos/lit-ui": "0.8.4-main.ae835ea",
|
|
98
|
+
"@dxos/random": "0.8.4-main.ae835ea",
|
|
99
|
+
"@dxos/react-ui": "0.8.4-main.ae835ea",
|
|
100
|
+
"@dxos/react-ui-theme": "0.8.4-main.ae835ea",
|
|
101
|
+
"@dxos/storybook-utils": "0.8.4-main.ae835ea"
|
|
100
102
|
},
|
|
101
103
|
"peerDependencies": {
|
|
102
104
|
"@effect-rx/rx-react": "^0.34.1",
|
|
@@ -104,8 +106,8 @@
|
|
|
104
106
|
"effect": "^3.13.3",
|
|
105
107
|
"react": "^19.0.0",
|
|
106
108
|
"react-dom": "^19.0.0",
|
|
107
|
-
"@dxos/react-ui": "0.8.4-main.
|
|
108
|
-
"@dxos/react-ui-theme": "0.8.4-main.
|
|
109
|
+
"@dxos/react-ui": "0.8.4-main.ae835ea",
|
|
110
|
+
"@dxos/react-ui-theme": "0.8.4-main.ae835ea"
|
|
109
111
|
},
|
|
110
112
|
"publishConfig": {
|
|
111
113
|
"access": "public"
|
package/src/SpacePlugin.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import * as Schema from 'effect/Schema';
|
|
6
6
|
|
|
7
7
|
import {
|
|
8
8
|
Capabilities,
|
|
@@ -14,10 +14,10 @@ import {
|
|
|
14
14
|
definePlugin,
|
|
15
15
|
oneOf,
|
|
16
16
|
} from '@dxos/app-framework';
|
|
17
|
-
import { Ref, Type } from '@dxos/echo';
|
|
17
|
+
import { Ref, Tag, Type } from '@dxos/echo';
|
|
18
18
|
import { AttentionEvents } from '@dxos/plugin-attention';
|
|
19
19
|
import { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';
|
|
20
|
-
import { DataType, createDefaultSchema,
|
|
20
|
+
import { DataType, DataTypes, createDefaultSchema, getTypenameFromQuery } from '@dxos/schema';
|
|
21
21
|
import { translations as shellTranslations } from '@dxos/shell/react';
|
|
22
22
|
|
|
23
23
|
import {
|
|
@@ -92,6 +92,7 @@ export const SpacePlugin = definePlugin<SpacePluginOptions>(
|
|
|
92
92
|
id: Type.getTypename(DataType.Collection),
|
|
93
93
|
metadata: {
|
|
94
94
|
icon: 'ph--cards-three--regular',
|
|
95
|
+
iconHue: 'neutral',
|
|
95
96
|
// TODO(wittjosiah): Move out of metadata.
|
|
96
97
|
loadReferences: async (collection: DataType.Collection) => await Ref.Array.loadAll(collection.objects),
|
|
97
98
|
},
|
|
@@ -102,7 +103,7 @@ export const SpacePlugin = definePlugin<SpacePluginOptions>(
|
|
|
102
103
|
label: (object: DataType.QueryCollection) => [
|
|
103
104
|
'typename label',
|
|
104
105
|
{
|
|
105
|
-
ns:
|
|
106
|
+
ns: getTypenameFromQuery(object.query),
|
|
106
107
|
count: 2,
|
|
107
108
|
defaultValue: 'New smart collection',
|
|
108
109
|
},
|
|
@@ -114,6 +115,7 @@ export const SpacePlugin = definePlugin<SpacePluginOptions>(
|
|
|
114
115
|
id: Type.getTypename(DataType.StoredSchema),
|
|
115
116
|
metadata: {
|
|
116
117
|
icon: 'ph--database--regular',
|
|
118
|
+
iconHue: 'green',
|
|
117
119
|
},
|
|
118
120
|
}),
|
|
119
121
|
contributes(Capabilities.Metadata, {
|
|
@@ -189,15 +191,7 @@ export const SpacePlugin = definePlugin<SpacePluginOptions>(
|
|
|
189
191
|
defineModule({
|
|
190
192
|
id: `${meta.id}/module/schema`,
|
|
191
193
|
activatesOn: ClientEvents.SetupSchema,
|
|
192
|
-
activate: () =>
|
|
193
|
-
contributes(ClientCapabilities.Schema, [
|
|
194
|
-
DataType.View,
|
|
195
|
-
DataType.Event,
|
|
196
|
-
DataType.Organization,
|
|
197
|
-
DataType.Person,
|
|
198
|
-
DataType.Project,
|
|
199
|
-
DataType.Task,
|
|
200
|
-
]),
|
|
194
|
+
activate: () => contributes(ClientCapabilities.Schema, [Tag.Tag, ...DataTypes]),
|
|
201
195
|
}),
|
|
202
196
|
defineModule({
|
|
203
197
|
id: `${meta.id}/module/whitelist-schema`,
|
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { Rx } from '@effect-rx/rx-react';
|
|
6
|
-
import
|
|
6
|
+
import * as Array from 'effect/Array';
|
|
7
|
+
import * as Function from 'effect/Function';
|
|
8
|
+
import * as Option from 'effect/Option';
|
|
9
|
+
import * as Schema from 'effect/Schema';
|
|
7
10
|
|
|
8
11
|
import { Capabilities, type PluginContext, contributes, createIntent } from '@dxos/app-framework';
|
|
9
12
|
import { type QueryResult, type Space, SpaceState, getSpace, isSpace, parseId } from '@dxos/client/echo';
|
|
@@ -12,7 +15,7 @@ import { log } from '@dxos/log';
|
|
|
12
15
|
import { ClientCapabilities } from '@dxos/plugin-client';
|
|
13
16
|
import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';
|
|
14
17
|
import { ROOT_ID, createExtension, rxFromObservable, rxFromSignal } from '@dxos/plugin-graph';
|
|
15
|
-
import { DataType,
|
|
18
|
+
import { DataType, getTypenameFromQuery } from '@dxos/schema';
|
|
16
19
|
import { isNonNullable } from '@dxos/util';
|
|
17
20
|
|
|
18
21
|
import { getActiveSpace } from '../hooks';
|
|
@@ -81,7 +84,7 @@ export default (context: PluginContext) => {
|
|
|
81
84
|
position: 'hoist',
|
|
82
85
|
actions: (node) =>
|
|
83
86
|
Rx.make((get) =>
|
|
84
|
-
pipe(
|
|
87
|
+
Function.pipe(
|
|
85
88
|
get(node),
|
|
86
89
|
Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
|
|
87
90
|
Option.map(() => [
|
|
@@ -158,7 +161,7 @@ export default (context: PluginContext) => {
|
|
|
158
161
|
position: 'hoist',
|
|
159
162
|
connector: (node) =>
|
|
160
163
|
Rx.make((get) =>
|
|
161
|
-
pipe(
|
|
164
|
+
Function.pipe(
|
|
162
165
|
get(node),
|
|
163
166
|
Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
|
|
164
167
|
Option.map(() => [spacesNode]),
|
|
@@ -174,7 +177,7 @@ export default (context: PluginContext) => {
|
|
|
174
177
|
connector: (node) => {
|
|
175
178
|
let query: QueryResult<Type.Expando> | undefined;
|
|
176
179
|
return Rx.make((get) =>
|
|
177
|
-
pipe(
|
|
180
|
+
Function.pipe(
|
|
178
181
|
get(node),
|
|
179
182
|
Option.flatMap((node) => (node.id === SPACES ? Option.some(node) : Option.none())),
|
|
180
183
|
Option.map(() => {
|
|
@@ -279,7 +282,7 @@ export default (context: PluginContext) => {
|
|
|
279
282
|
id: `${meta.id}/actions`,
|
|
280
283
|
actions: (node) =>
|
|
281
284
|
Rx.make((get) =>
|
|
282
|
-
pipe(
|
|
285
|
+
Function.pipe(
|
|
283
286
|
get(node),
|
|
284
287
|
Option.flatMap((node) =>
|
|
285
288
|
node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),
|
|
@@ -311,7 +314,7 @@ export default (context: PluginContext) => {
|
|
|
311
314
|
id: `${meta.id}/root-collection`,
|
|
312
315
|
connector: (node) =>
|
|
313
316
|
Rx.make((get) =>
|
|
314
|
-
pipe(
|
|
317
|
+
Function.pipe(
|
|
315
318
|
get(node),
|
|
316
319
|
Option.flatMap((node) =>
|
|
317
320
|
node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),
|
|
@@ -334,7 +337,7 @@ export default (context: PluginContext) => {
|
|
|
334
337
|
|
|
335
338
|
return get(
|
|
336
339
|
rxFromSignal(() =>
|
|
337
|
-
pipe(
|
|
340
|
+
Function.pipe(
|
|
338
341
|
collection.objects,
|
|
339
342
|
Array.map((object) => object.target),
|
|
340
343
|
Array.filter(isNonNullable),
|
|
@@ -361,7 +364,7 @@ export default (context: PluginContext) => {
|
|
|
361
364
|
id: `${meta.id}/objects`,
|
|
362
365
|
connector: (node) =>
|
|
363
366
|
Rx.make((get) =>
|
|
364
|
-
pipe(
|
|
367
|
+
Function.pipe(
|
|
365
368
|
get(node),
|
|
366
369
|
Option.flatMap((node) =>
|
|
367
370
|
Obj.instanceOf(DataType.Collection, node.data) ? Option.some(node.data) : Option.none(),
|
|
@@ -372,7 +375,7 @@ export default (context: PluginContext) => {
|
|
|
372
375
|
|
|
373
376
|
return get(
|
|
374
377
|
rxFromSignal(() =>
|
|
375
|
-
pipe(
|
|
378
|
+
Function.pipe(
|
|
376
379
|
collection.objects,
|
|
377
380
|
Array.map((object) => object.target),
|
|
378
381
|
Array.filter(isNonNullable),
|
|
@@ -433,14 +436,14 @@ export default (context: PluginContext) => {
|
|
|
433
436
|
connector: (node) => {
|
|
434
437
|
let query: QueryResult<Type.Expando> | undefined;
|
|
435
438
|
return Rx.make((get) =>
|
|
436
|
-
pipe(
|
|
439
|
+
Function.pipe(
|
|
437
440
|
get(node),
|
|
438
441
|
Option.flatMap((node) =>
|
|
439
442
|
Obj.instanceOf(DataType.QueryCollection, node.data) ? Option.some(node.data) : Option.none(),
|
|
440
443
|
),
|
|
441
444
|
Option.flatMap((collection) => {
|
|
442
445
|
const space = getSpace(collection);
|
|
443
|
-
const typename =
|
|
446
|
+
const typename = getTypenameFromQuery(collection.query);
|
|
444
447
|
return typename && space ? Option.some({ typename, space }) : Option.none();
|
|
445
448
|
}),
|
|
446
449
|
Option.map(({ typename, space }) => {
|
|
@@ -490,11 +493,11 @@ export default (context: PluginContext) => {
|
|
|
490
493
|
connector: (node) => {
|
|
491
494
|
const client = context.getCapability(ClientCapabilities.Client);
|
|
492
495
|
return Rx.make((get) =>
|
|
493
|
-
pipe(
|
|
496
|
+
Function.pipe(
|
|
494
497
|
get(node),
|
|
495
498
|
Option.flatMap((node) =>
|
|
496
499
|
Obj.instanceOf(DataType.QueryCollection, node.data) &&
|
|
497
|
-
|
|
500
|
+
getTypenameFromQuery(node.data.query) === DataType.StoredSchema.typename
|
|
498
501
|
? Option.some(node.data)
|
|
499
502
|
: Option.none(),
|
|
500
503
|
),
|
|
@@ -522,7 +525,7 @@ export default (context: PluginContext) => {
|
|
|
522
525
|
actions: (node) => {
|
|
523
526
|
let query: QueryResult<DataType.View> | undefined;
|
|
524
527
|
return Rx.make((get) =>
|
|
525
|
-
pipe(
|
|
528
|
+
Function.pipe(
|
|
526
529
|
get(node),
|
|
527
530
|
Option.flatMap((node) => {
|
|
528
531
|
const space = isSpace(node.properties.space) ? node.properties.space : undefined;
|
|
@@ -539,7 +542,7 @@ export default (context: PluginContext) => {
|
|
|
539
542
|
rxFromSignal(() =>
|
|
540
543
|
// TODO(wittjosiah): Remove cast.
|
|
541
544
|
views.filter(
|
|
542
|
-
(view) =>
|
|
545
|
+
(view) => getTypenameFromQuery(view.query.ast) === Type.getTypename(schema as Type.Obj.Any),
|
|
543
546
|
),
|
|
544
547
|
),
|
|
545
548
|
);
|
|
@@ -570,7 +573,7 @@ export default (context: PluginContext) => {
|
|
|
570
573
|
connector: (node) => {
|
|
571
574
|
let query: QueryResult<DataType.View> | undefined;
|
|
572
575
|
return Rx.make((get) =>
|
|
573
|
-
pipe(
|
|
576
|
+
Function.pipe(
|
|
574
577
|
get(node),
|
|
575
578
|
Option.flatMap((node) => {
|
|
576
579
|
const space = getSpace(node.data) ?? (isSpace(node.properties.space) ? node.properties.space : undefined);
|
|
@@ -587,7 +590,7 @@ export default (context: PluginContext) => {
|
|
|
587
590
|
// TODO(wittjosiah): Remove cast.
|
|
588
591
|
const typename = Schema.isSchema(schema) ? Type.getTypename(schema as Type.Obj.Any) : schema.typename;
|
|
589
592
|
return get(rxFromQuery(query))
|
|
590
|
-
.filter((view) =>
|
|
593
|
+
.filter((view) => getTypenameFromQuery(view.query.ast) === typename)
|
|
591
594
|
.map((view) =>
|
|
592
595
|
get(
|
|
593
596
|
rxFromSignal(() =>
|
|
@@ -645,11 +648,13 @@ export default (context: PluginContext) => {
|
|
|
645
648
|
actions: (node) => {
|
|
646
649
|
let query: QueryResult<DataType.View> | undefined;
|
|
647
650
|
return Rx.make((get) =>
|
|
648
|
-
pipe(
|
|
651
|
+
Function.pipe(
|
|
649
652
|
get(node),
|
|
650
653
|
Option.flatMap((node) => {
|
|
651
654
|
const space = getSpace(node.data);
|
|
652
|
-
return space && Obj.isObject(node.data)
|
|
655
|
+
return space && Obj.isObject(node.data) && Obj.getTypename(node.data) === node.type
|
|
656
|
+
? Option.some({ space, object: node.data })
|
|
657
|
+
: Option.none();
|
|
653
658
|
}),
|
|
654
659
|
Option.flatMap(({ space, object }) => {
|
|
655
660
|
const isSchema = Obj.instanceOf(DataType.StoredSchema, object);
|
|
@@ -663,12 +668,12 @@ export default (context: PluginContext) => {
|
|
|
663
668
|
// Don't allow the Records smart collection to be deleted.
|
|
664
669
|
!(
|
|
665
670
|
Obj.instanceOf(DataType.QueryCollection, object) &&
|
|
666
|
-
|
|
671
|
+
getTypenameFromQuery(object.query) === DataType.StoredSchema.typename
|
|
667
672
|
);
|
|
668
673
|
if (isSchema && query) {
|
|
669
674
|
const views = get(rxFromQuery(query));
|
|
670
675
|
const filteredViews = get(
|
|
671
|
-
rxFromSignal(() => views.filter((view) =>
|
|
676
|
+
rxFromSignal(() => views.filter((view) => getTypenameFromQuery(view.query.ast) === object.typename)),
|
|
672
677
|
);
|
|
673
678
|
deletable = filteredViews.length === 0;
|
|
674
679
|
}
|
|
@@ -703,7 +708,7 @@ export default (context: PluginContext) => {
|
|
|
703
708
|
id: `${meta.id}/selected-objects`,
|
|
704
709
|
connector: (node) =>
|
|
705
710
|
Rx.make((get) =>
|
|
706
|
-
pipe(
|
|
711
|
+
Function.pipe(
|
|
707
712
|
get(node),
|
|
708
713
|
Option.flatMap((node) => (Obj.instanceOf(DataType.View, node.data) ? Option.some(node) : Option.none())),
|
|
709
714
|
Option.map((node) => [
|
|
@@ -728,7 +733,7 @@ export default (context: PluginContext) => {
|
|
|
728
733
|
id: `${meta.id}/settings`,
|
|
729
734
|
connector: (node) =>
|
|
730
735
|
Rx.make((get) =>
|
|
731
|
-
pipe(
|
|
736
|
+
Function.pipe(
|
|
732
737
|
get(node),
|
|
733
738
|
Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node) : Option.none())),
|
|
734
739
|
Option.map((node) => [
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import type * as Schema from 'effect/Schema';
|
|
6
6
|
|
|
7
7
|
import { type AnyIntentChain, type Label, defineCapability } from '@dxos/app-framework';
|
|
8
8
|
import { type Space } from '@dxos/react-client/echo';
|
|
@@ -22,7 +22,12 @@ export namespace SpaceCapabilities {
|
|
|
22
22
|
export type onCreateSpace = (params: { space: Space; rootCollection: DataType.Collection }) => AnyIntentChain;
|
|
23
23
|
export const onCreateSpace = defineCapability<onCreateSpace>(`${meta.id}/capability/on-space-created`);
|
|
24
24
|
|
|
25
|
-
export type OnSchemaAdded = (params: {
|
|
25
|
+
export type OnSchemaAdded = (params: {
|
|
26
|
+
space: Space;
|
|
27
|
+
schema: Schema.Schema.AnyNoContext;
|
|
28
|
+
// TODO(wittjosiah): This is leaky.
|
|
29
|
+
show?: boolean;
|
|
30
|
+
}) => AnyIntentChain;
|
|
26
31
|
export const OnSchemaAdded = defineCapability<OnSchemaAdded>(`${meta.id}/capability/on-schema-added`);
|
|
27
32
|
|
|
28
33
|
// TODO(burdon): Should this be view? Forms are UI concepts? (associated with a View/schema).
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import * as Effect from 'effect/Effect';
|
|
6
6
|
|
|
7
7
|
import {
|
|
8
8
|
Capabilities,
|
|
@@ -21,7 +21,9 @@ import { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata
|
|
|
21
21
|
import { SpaceState, fullyQualifiedId, getSpace, isSpace } from '@dxos/react-client/echo';
|
|
22
22
|
import { Invitation, InvitationEncoder } from '@dxos/react-client/invitations';
|
|
23
23
|
import { ATTENDABLE_PATH_SEPARATOR } from '@dxos/react-ui-attention';
|
|
24
|
-
import {
|
|
24
|
+
import { iconValues } from '@dxos/react-ui-pickers';
|
|
25
|
+
import { hues } from '@dxos/react-ui-theme';
|
|
26
|
+
import { DataType, ProjectionModel, getTypenameFromQuery } from '@dxos/schema';
|
|
25
27
|
|
|
26
28
|
import {
|
|
27
29
|
CREATE_OBJECT_DIALOG,
|
|
@@ -69,8 +71,10 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
|
|
|
69
71
|
}),
|
|
70
72
|
createResolver({
|
|
71
73
|
intent: SpaceAction.Create,
|
|
72
|
-
resolve: async ({ name, hue, icon, edgeReplication }) => {
|
|
74
|
+
resolve: async ({ name, hue: hue_, icon: icon_, edgeReplication }) => {
|
|
73
75
|
const client = context.getCapability(ClientCapabilities.Client);
|
|
76
|
+
const hue = hue_ ?? hues[Math.floor(Math.random() * hues.length)];
|
|
77
|
+
const icon = icon_ ?? iconValues[Math.floor(Math.random() * iconValues.length)];
|
|
74
78
|
const space = await client.spaces.create({ name, hue, icon });
|
|
75
79
|
if (edgeReplication) {
|
|
76
80
|
await space.internal.setEdgeReplicationPreference(EdgeReplicationSetting.ENABLED);
|
|
@@ -88,6 +92,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
|
|
|
88
92
|
|
|
89
93
|
// Create records smart collection.
|
|
90
94
|
const records = Obj.make(DataType.QueryCollection, {
|
|
95
|
+
// NOTE: This is specifically Filter.typename due to current limitations in query collection parsing.
|
|
91
96
|
query: Query.select(Filter.typename(DataType.StoredSchema.typename)).ast,
|
|
92
97
|
});
|
|
93
98
|
collection.objects.push(Ref.make(records));
|
|
@@ -323,7 +328,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
|
|
|
323
328
|
}),
|
|
324
329
|
createResolver({
|
|
325
330
|
intent: SpaceAction.UseStaticSchema,
|
|
326
|
-
resolve: async ({ space, typename }) => {
|
|
331
|
+
resolve: async ({ space, typename, show }) => {
|
|
327
332
|
const client = context.getCapability(ClientCapabilities.Client);
|
|
328
333
|
const schema = client.graph.schemaRegistry.schemas.find((schema) => Type.getTypename(schema) === typename);
|
|
329
334
|
invariant(schema, `Schema not found: ${typename}`);
|
|
@@ -338,7 +343,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
|
|
|
338
343
|
|
|
339
344
|
await context.activatePromise(SpaceEvents.SchemaAdded);
|
|
340
345
|
const onSchemaAdded = context.getCapabilities(SpaceCapabilities.OnSchemaAdded);
|
|
341
|
-
const schemaAddedIntents = onSchemaAdded.map((onSchemaAdded) => onSchemaAdded({ space, schema }));
|
|
346
|
+
const schemaAddedIntents = onSchemaAdded.map((onSchemaAdded) => onSchemaAdded({ space, schema, show }));
|
|
342
347
|
|
|
343
348
|
return {
|
|
344
349
|
data: {},
|
|
@@ -361,7 +366,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
|
|
|
361
366
|
}),
|
|
362
367
|
createResolver({
|
|
363
368
|
intent: SpaceAction.AddSchema,
|
|
364
|
-
resolve: async ({ space, name, typename, version, schema: schemaInput }) => {
|
|
369
|
+
resolve: async ({ space, name, typename, version, schema: schemaInput, show }) => {
|
|
365
370
|
const [schema] = await space.db.schemaRegistry.register([schemaInput]);
|
|
366
371
|
if (name) {
|
|
367
372
|
schema.storedSchema.name = name;
|
|
@@ -375,7 +380,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
|
|
|
375
380
|
|
|
376
381
|
await context.activatePromise(SpaceEvents.SchemaAdded);
|
|
377
382
|
const onSchemaAdded = context.getCapabilities(SpaceCapabilities.OnSchemaAdded);
|
|
378
|
-
const schemaAddedIntents = onSchemaAdded.map((onSchemaAdded) => onSchemaAdded({ space, schema }));
|
|
383
|
+
const schemaAddedIntents = onSchemaAdded.map((onSchemaAdded) => onSchemaAdded({ space, schema, show }));
|
|
379
384
|
|
|
380
385
|
return {
|
|
381
386
|
data: {
|
|
@@ -406,7 +411,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
|
|
|
406
411
|
resolve: async ({ view, fieldId, deletionData }, undo) => {
|
|
407
412
|
const space = getSpace(view);
|
|
408
413
|
invariant(space);
|
|
409
|
-
const typename =
|
|
414
|
+
const typename = getTypenameFromQuery(view.query.ast);
|
|
410
415
|
invariant(typename);
|
|
411
416
|
const schema = await space.db.schemaRegistry.query({ typename }).firstOrUndefined();
|
|
412
417
|
invariant(schema);
|
|
@@ -2,23 +2,13 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
6
|
-
import React, { useCallback
|
|
5
|
+
import type * as Schema from 'effect/Schema';
|
|
6
|
+
import React, { useCallback } from 'react';
|
|
7
7
|
|
|
8
|
-
import {
|
|
9
|
-
Capabilities,
|
|
10
|
-
Surface,
|
|
11
|
-
contributes,
|
|
12
|
-
createSurface,
|
|
13
|
-
useCapabilities,
|
|
14
|
-
useCapability,
|
|
15
|
-
useLayout,
|
|
16
|
-
} from '@dxos/app-framework';
|
|
8
|
+
import { Capabilities, Surface, contributes, createSurface, useCapability, useLayout } from '@dxos/app-framework';
|
|
17
9
|
import { Obj, Type } from '@dxos/echo';
|
|
18
10
|
import { findAnnotation } from '@dxos/effect';
|
|
19
11
|
import { SettingsStore } from '@dxos/local-storage';
|
|
20
|
-
import { ClientCapabilities } from '@dxos/plugin-client';
|
|
21
|
-
import { useClient } from '@dxos/react-client';
|
|
22
12
|
import {
|
|
23
13
|
type Space,
|
|
24
14
|
SpaceState,
|
|
@@ -29,7 +19,7 @@ import {
|
|
|
29
19
|
parseId,
|
|
30
20
|
useSpace,
|
|
31
21
|
} from '@dxos/react-client/echo';
|
|
32
|
-
import { Input
|
|
22
|
+
import { Input } from '@dxos/react-ui';
|
|
33
23
|
import { type InputProps, SelectInput } from '@dxos/react-ui-form';
|
|
34
24
|
import { HuePicker, IconPicker } from '@dxos/react-ui-pickers';
|
|
35
25
|
import { DataType, type TypenameAnnotation, TypenameAnnotationId } from '@dxos/schema';
|
|
@@ -63,6 +53,7 @@ import {
|
|
|
63
53
|
SyncStatus,
|
|
64
54
|
ViewEditor,
|
|
65
55
|
} from '../components';
|
|
56
|
+
import { useTypeOptions } from '../hooks';
|
|
66
57
|
import { meta } from '../meta';
|
|
67
58
|
import { HueAnnotationId, IconAnnotationId, type SpaceSettingsProps } from '../types';
|
|
68
59
|
|
|
@@ -249,72 +240,10 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
|
|
|
249
240
|
return !!annotation;
|
|
250
241
|
},
|
|
251
242
|
component: ({ data: { schema, target }, ...inputProps }) => {
|
|
252
|
-
const { t } = useTranslation();
|
|
253
|
-
const client = useClient();
|
|
254
243
|
const props = inputProps as any as InputProps;
|
|
255
244
|
const space = isSpace(target) ? target : getSpace(target);
|
|
256
|
-
if (!space) {
|
|
257
|
-
return null;
|
|
258
|
-
}
|
|
259
|
-
|
|
260
245
|
const annotation = findAnnotation<TypenameAnnotation[]>(schema.ast, TypenameAnnotationId)!;
|
|
261
|
-
|
|
262
|
-
const schemaWhitelists = useCapabilities(ClientCapabilities.SchemaWhiteList);
|
|
263
|
-
const whitelistedTypenames = useMemo(
|
|
264
|
-
() => new Set(schemaWhitelists.flatMap((typeArray) => typeArray.map((type) => Type.getTypename(type)))),
|
|
265
|
-
[schemaWhitelists],
|
|
266
|
-
);
|
|
267
|
-
|
|
268
|
-
const objectForms = useCapabilities(SpaceCapabilities.ObjectForm);
|
|
269
|
-
const objectFormTypenames = useMemo(
|
|
270
|
-
() =>
|
|
271
|
-
new Set(
|
|
272
|
-
objectForms
|
|
273
|
-
.map((form) => Type.getTypename(form.objectSchema))
|
|
274
|
-
// TODO(wittjosiah): Remove.
|
|
275
|
-
.filter((typename) => !OMIT.includes(typename) && !typename.endsWith('View')),
|
|
276
|
-
),
|
|
277
|
-
[objectForms],
|
|
278
|
-
);
|
|
279
|
-
|
|
280
|
-
const fixed = client.graph.schemaRegistry.schemas.filter((schema) => {
|
|
281
|
-
const limitedStatic =
|
|
282
|
-
annotation.includes('limited-static') && whitelistedTypenames.has(Type.getTypename(schema));
|
|
283
|
-
const unusedStatic =
|
|
284
|
-
annotation.includes('unused-static') &&
|
|
285
|
-
whitelistedTypenames.has(Type.getTypename(schema)) &&
|
|
286
|
-
!space.properties.staticRecords?.includes(Type.getTypename(schema));
|
|
287
|
-
const usedStatic =
|
|
288
|
-
annotation.includes('used-static') &&
|
|
289
|
-
whitelistedTypenames.has(Type.getTypename(schema)) &&
|
|
290
|
-
space.properties.staticRecords?.includes(Type.getTypename(schema));
|
|
291
|
-
const objectForm = annotation.includes('object-form') && objectFormTypenames.has(Type.getTypename(schema));
|
|
292
|
-
return annotation.includes('static') || limitedStatic || unusedStatic || usedStatic || objectForm;
|
|
293
|
-
});
|
|
294
|
-
const dynamic = space?.db.schemaRegistry.query().runSync();
|
|
295
|
-
const typenames = Array.from(
|
|
296
|
-
new Set<string>([
|
|
297
|
-
...(annotation.includes('limited-static') ||
|
|
298
|
-
annotation.includes('unused-static') ||
|
|
299
|
-
annotation.includes('used-static') ||
|
|
300
|
-
annotation.includes('static') ||
|
|
301
|
-
annotation.includes('object-form')
|
|
302
|
-
? fixed.map((schema) => Type.getTypename(schema))
|
|
303
|
-
: []),
|
|
304
|
-
...(annotation.includes('dynamic') ? dynamic.map((schema) => schema.typename) : []),
|
|
305
|
-
]),
|
|
306
|
-
).sort();
|
|
307
|
-
|
|
308
|
-
const options = useMemo(
|
|
309
|
-
() =>
|
|
310
|
-
typenames
|
|
311
|
-
.map((typename) => ({
|
|
312
|
-
value: typename,
|
|
313
|
-
label: t('typename label', { ns: typename, defaultValue: typename }),
|
|
314
|
-
}))
|
|
315
|
-
.toSorted((a, b) => a.label.localeCompare(b.label)),
|
|
316
|
-
[t, typenames],
|
|
317
|
-
);
|
|
246
|
+
const options = useTypeOptions({ space, annotation });
|
|
318
247
|
|
|
319
248
|
return <SelectInput {...props} options={options} />;
|
|
320
249
|
},
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import * as Option from 'effect/Option';
|
|
6
6
|
|
|
7
7
|
import { Capabilities, LayoutAction, type PluginContext, contributes, createIntent } from '@dxos/app-framework';
|
|
8
8
|
import { SubscriptionList } from '@dxos/async';
|