@dxos/app-framework 0.8.4-main.937b3ca → 0.8.4-main.9be5663bfe
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/.storybook/main.mts +1 -3
- package/dist/lib/browser/{capability-7PCNSWBT.mjs → capability-BBBBAPDI.mjs} +16 -11
- package/dist/lib/browser/capability-BBBBAPDI.mjs.map +7 -0
- package/dist/lib/browser/capability-OP63CD5N.mjs +35 -0
- package/dist/lib/browser/capability-OP63CD5N.mjs.map +7 -0
- package/dist/lib/browser/{chunk-6Y7PZV72.mjs → chunk-2CKCJ6PN.mjs} +6 -4
- package/dist/lib/browser/chunk-2CKCJ6PN.mjs.map +7 -0
- package/dist/lib/browser/{chunk-7IQHKD4U.mjs → chunk-F7FW2RK2.mjs} +9 -12
- package/dist/lib/browser/chunk-F7FW2RK2.mjs.map +7 -0
- package/dist/lib/browser/{chunk-TCLLRCS3.mjs → chunk-FU4GAFUQ.mjs} +10 -7
- package/dist/lib/browser/chunk-FU4GAFUQ.mjs.map +7 -0
- package/dist/lib/browser/{chunk-FMZN33N4.mjs → chunk-GX4TUNM6.mjs} +343 -187
- package/dist/lib/browser/chunk-GX4TUNM6.mjs.map +7 -0
- package/dist/lib/browser/chunk-I34GF4NG.mjs +34 -0
- package/dist/lib/browser/chunk-I34GF4NG.mjs.map +7 -0
- package/dist/lib/browser/chunk-JKWMHZP6.mjs +80 -0
- package/dist/lib/browser/chunk-JKWMHZP6.mjs.map +7 -0
- package/dist/lib/browser/chunk-LVJW5EFU.mjs +157 -0
- package/dist/lib/browser/chunk-LVJW5EFU.mjs.map +7 -0
- package/dist/lib/browser/{chunk-PKQT6C53.mjs → chunk-QSXYHXCE.mjs} +3 -2
- package/dist/lib/browser/chunk-QSXYHXCE.mjs.map +7 -0
- package/dist/lib/browser/chunk-RFSO3JRG.mjs +1 -0
- package/dist/lib/browser/chunk-T3Y4AEKX.mjs +42 -0
- package/dist/lib/browser/chunk-T3Y4AEKX.mjs.map +7 -0
- package/dist/lib/browser/chunk-TGX63LTL.mjs +8 -0
- package/dist/lib/browser/{chunk-FHQTHCX7.mjs.map → chunk-TGX63LTL.mjs.map} +1 -1
- package/dist/lib/browser/chunk-WPE6AL7I.mjs +905 -0
- package/dist/lib/browser/chunk-WPE6AL7I.mjs.map +7 -0
- package/dist/lib/browser/cli/index.mjs +90 -0
- package/dist/lib/browser/cli/index.mjs.map +7 -0
- package/dist/lib/browser/common/activation-events.mjs +24 -0
- package/dist/lib/browser/common/capabilities.mjs +46 -0
- package/dist/lib/browser/core/activation-event.mjs +1 -1
- package/dist/lib/browser/core/capability.mjs +3 -1
- package/dist/lib/browser/core/plugin-manager.mjs +4 -4
- package/dist/lib/browser/core/plugin.mjs +6 -4
- package/dist/lib/browser/core/url-loader.mjs +12 -0
- package/dist/lib/browser/index.mjs +40 -131
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/invoker-capability-H5PPENOC.mjs +43 -0
- package/dist/lib/browser/invoker-capability-H5PPENOC.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +56 -34
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/browser/{react → ui}/index.mjs +19 -21
- package/dist/lib/browser/ui/index.mjs.map +7 -0
- package/dist/lib/node-esm/{capability-CFLQ2QQU.mjs → capability-AWBEMRYR.mjs} +16 -11
- package/dist/lib/node-esm/capability-AWBEMRYR.mjs.map +7 -0
- package/dist/lib/node-esm/capability-WFEG6CIZ.mjs +36 -0
- package/dist/lib/node-esm/capability-WFEG6CIZ.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-STMXUEPO.mjs → chunk-42KBWDE4.mjs} +6 -4
- package/dist/lib/node-esm/chunk-42KBWDE4.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-4A3ZCMI3.mjs +158 -0
- package/dist/lib/node-esm/chunk-4A3ZCMI3.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-XYQTBFPA.mjs → chunk-BCEOLX47.mjs} +343 -187
- package/dist/lib/node-esm/chunk-BCEOLX47.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-EL3R25OQ.mjs +2 -0
- package/dist/lib/node-esm/chunk-EL3R25OQ.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-UEWJDI2L.mjs → chunk-FKE4Z3D6.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-UEWJDI2L.mjs.map → chunk-FKE4Z3D6.mjs.map} +1 -1
- package/dist/lib/node-esm/chunk-G3RTFSNG.mjs +81 -0
- package/dist/lib/node-esm/chunk-G3RTFSNG.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-LQKOTNJW.mjs +906 -0
- package/dist/lib/node-esm/chunk-LQKOTNJW.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-GT6OKM5I.mjs → chunk-ULUEXB7Q.mjs} +10 -7
- package/dist/lib/node-esm/chunk-ULUEXB7Q.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-663A54LQ.mjs → chunk-URWHJQT2.mjs} +9 -12
- package/dist/lib/node-esm/chunk-URWHJQT2.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-VKHGNEDB.mjs +43 -0
- package/dist/lib/node-esm/chunk-VKHGNEDB.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-WZCSOX5Q.mjs +35 -0
- package/dist/lib/node-esm/chunk-WZCSOX5Q.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-7OWSHPYK.mjs → chunk-ZZ7CKK6W.mjs} +3 -2
- package/dist/lib/node-esm/chunk-ZZ7CKK6W.mjs.map +7 -0
- package/dist/lib/node-esm/cli/index.mjs +91 -0
- package/dist/lib/node-esm/cli/index.mjs.map +7 -0
- package/dist/lib/node-esm/common/activation-events.mjs +25 -0
- package/dist/lib/node-esm/common/activation-events.mjs.map +7 -0
- package/dist/lib/node-esm/common/capabilities.mjs +47 -0
- package/dist/lib/node-esm/common/capabilities.mjs.map +7 -0
- package/dist/lib/node-esm/core/activation-event.mjs +1 -1
- package/dist/lib/node-esm/core/capability.mjs +3 -1
- package/dist/lib/node-esm/core/plugin-manager.mjs +4 -4
- package/dist/lib/node-esm/core/plugin.mjs +6 -4
- package/dist/lib/node-esm/core/url-loader.mjs +13 -0
- package/dist/lib/node-esm/core/url-loader.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +40 -131
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/invoker-capability-S3ZA527J.mjs +44 -0
- package/dist/lib/node-esm/invoker-capability-S3ZA527J.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs +56 -34
- package/dist/lib/node-esm/testing/index.mjs.map +3 -3
- package/dist/lib/node-esm/{react → ui}/index.mjs +19 -21
- package/dist/lib/node-esm/ui/index.mjs.map +7 -0
- package/dist/plugin/node-esm/index.mjs +384 -0
- package/dist/plugin/node-esm/index.mjs.map +7 -0
- package/dist/plugin/node-esm/meta.json +1 -0
- package/dist/types/src/{cli.d.ts → cli/cli.d.ts} +2 -2
- package/dist/types/src/cli/cli.d.ts.map +1 -0
- package/dist/types/src/cli/index.d.ts +2 -0
- package/dist/types/src/cli/index.d.ts.map +1 -0
- package/dist/types/src/common/activation-events.d.ts +27 -0
- package/dist/types/src/common/activation-events.d.ts.map +1 -0
- package/dist/types/src/common/capabilities.d.ts +110 -0
- package/dist/types/src/common/capabilities.d.ts.map +1 -0
- package/dist/types/src/common/index.d.ts +4 -9
- package/dist/types/src/common/index.d.ts.map +1 -1
- package/dist/types/src/common/operations.d.ts +8 -369
- package/dist/types/src/common/operations.d.ts.map +1 -1
- package/dist/types/src/common/translations.d.ts +0 -9
- package/dist/types/src/common/translations.d.ts.map +1 -1
- package/dist/types/src/core/activation-event.d.ts +1 -1
- package/dist/types/src/core/activation-event.d.ts.map +1 -1
- package/dist/types/src/core/capability-manager.d.ts +5 -0
- package/dist/types/src/core/capability-manager.d.ts.map +1 -1
- package/dist/types/src/core/capability.d.ts +13 -7
- package/dist/types/src/core/capability.d.ts.map +1 -1
- package/dist/types/src/core/index.d.ts +1 -0
- package/dist/types/src/core/index.d.ts.map +1 -1
- package/dist/types/src/core/plugin-manager.d.ts +9 -2
- package/dist/types/src/core/plugin-manager.d.ts.map +1 -1
- package/dist/types/src/core/plugin.d.ts +6 -1
- package/dist/types/src/core/plugin.d.ts.map +1 -1
- package/dist/types/src/core/url-loader.d.ts +25 -0
- package/dist/types/src/core/url-loader.d.ts.map +1 -0
- package/dist/types/src/core/url-loader.test.d.ts +2 -0
- package/dist/types/src/core/url-loader.test.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +1 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/plugin-operation/OperationPlugin.d.ts.map +1 -1
- package/dist/types/src/plugin-operation/history/capability.d.ts +1 -1
- package/dist/types/src/plugin-operation/history/capability.d.ts.map +1 -1
- package/dist/types/src/plugin-operation/history/errors.d.ts +30 -3
- package/dist/types/src/plugin-operation/history/errors.d.ts.map +1 -1
- package/dist/types/src/plugin-operation/history/history-tracker.d.ts.map +1 -1
- package/dist/types/src/plugin-operation/history/undo-mapping.d.ts +11 -3
- package/dist/types/src/plugin-operation/history/undo-mapping.d.ts.map +1 -1
- package/dist/types/src/plugin-operation/invoker-capability.d.ts +1 -1
- package/dist/types/src/plugin-operation/invoker-capability.d.ts.map +1 -1
- package/dist/types/src/plugin-operation/testing.d.ts +26 -77
- package/dist/types/src/plugin-operation/testing.d.ts.map +1 -1
- package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts.map +1 -1
- package/dist/types/src/plugin-runtime/capability.d.ts +2 -2
- package/dist/types/src/plugin-runtime/capability.d.ts.map +1 -1
- package/dist/types/src/testing/withPluginManager.d.ts +1 -1
- package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
- package/dist/types/src/testing/withPluginManager.stories.d.ts.map +1 -1
- package/dist/types/src/{react → ui/components/App}/App.d.ts +3 -2
- package/dist/types/src/ui/components/App/App.d.ts.map +1 -0
- package/dist/types/src/{react/Surface.stories.d.ts → ui/components/App/App.stories.d.ts} +7 -2
- package/dist/types/src/ui/components/App/App.stories.d.ts.map +1 -0
- package/dist/types/src/ui/components/App/index.d.ts +2 -0
- package/dist/types/src/ui/components/App/index.d.ts.map +1 -0
- package/dist/types/src/ui/components/PluginManager/PluginManagerContext.stories.d.ts.map +1 -0
- package/dist/types/src/{react → ui/components/PluginManager}/PluginManagerProvider.d.ts +1 -1
- package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts.map +1 -0
- package/dist/types/src/ui/components/PluginManager/index.d.ts +2 -0
- package/dist/types/src/ui/components/PluginManager/index.d.ts.map +1 -0
- package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts +12 -0
- package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts.map +1 -0
- package/dist/types/src/{react/App.stories.d.ts → ui/components/Surface/SurfaceComponent.stories.d.ts} +1 -1
- package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts.map +1 -0
- package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts.map +1 -0
- package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts +48 -0
- package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts.map +1 -0
- package/dist/types/src/ui/components/Surface/context.d.ts +5 -0
- package/dist/types/src/ui/components/Surface/context.d.ts.map +1 -0
- package/dist/types/src/ui/components/Surface/index.d.ts +26 -0
- package/dist/types/src/ui/components/Surface/index.d.ts.map +1 -0
- package/dist/types/src/{common/surface.d.ts → ui/components/Surface/types.d.ts} +20 -18
- package/dist/types/src/ui/components/Surface/types.d.ts.map +1 -0
- package/dist/types/src/ui/components/index.d.ts +4 -0
- package/dist/types/src/ui/components/index.d.ts.map +1 -0
- package/dist/types/src/ui/hooks/index.d.ts +6 -0
- package/dist/types/src/ui/hooks/index.d.ts.map +1 -0
- package/dist/types/src/{react → ui/hooks}/useApp.d.ts +26 -9
- package/dist/types/src/ui/hooks/useApp.d.ts.map +1 -0
- package/dist/types/src/ui/hooks/useApp.test.d.ts +2 -0
- package/dist/types/src/ui/hooks/useApp.test.d.ts.map +1 -0
- package/dist/types/src/{react → ui/hooks}/useCapabilities.d.ts +6 -1
- package/dist/types/src/ui/hooks/useCapabilities.d.ts.map +1 -0
- package/dist/types/src/ui/hooks/useLoading.d.ts.map +1 -0
- package/dist/types/src/{react/common.d.ts → ui/hooks/useSettingsState.d.ts} +1 -5
- package/dist/types/src/ui/hooks/useSettingsState.d.ts.map +1 -0
- package/dist/types/src/ui/hooks/useSurface.d.ts +3 -0
- package/dist/types/src/ui/hooks/useSurface.d.ts.map +1 -0
- package/dist/types/src/ui/index.d.ts +3 -0
- package/dist/types/src/ui/index.d.ts.map +1 -0
- package/dist/types/src/vite-plugin/composer-plugin.d.ts +18 -0
- package/dist/types/src/vite-plugin/composer-plugin.d.ts.map +1 -0
- package/dist/types/src/vite-plugin/import-map-plugin.d.ts +16 -0
- package/dist/types/src/vite-plugin/import-map-plugin.d.ts.map +1 -0
- package/dist/types/src/vite-plugin/index.d.ts +3 -0
- package/dist/types/src/vite-plugin/index.d.ts.map +1 -0
- package/dist/types/src/vite-plugin/packages.d.ts +7 -0
- package/dist/types/src/vite-plugin/packages.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/moon.yml +20 -6
- package/package.json +91 -64
- package/src/{cli.ts → cli/cli.ts} +10 -10
- package/src/{playground/debug → cli}/index.ts +1 -1
- package/src/common/activation-events.ts +44 -0
- package/src/common/capabilities.ts +172 -0
- package/src/common/index.ts +4 -9
- package/src/common/operations.ts +6 -383
- package/src/common/translations.ts +0 -12
- package/src/context.ts +1 -1
- package/src/core/activation-event.ts +5 -2
- package/src/core/capability-manager.test.ts +1 -1
- package/src/core/capability-manager.ts +22 -1
- package/src/core/capability.ts +21 -10
- package/src/core/index.ts +1 -0
- package/src/core/plugin-manager.test.ts +314 -46
- package/src/core/plugin-manager.ts +344 -157
- package/src/core/plugin.ts +10 -2
- package/src/core/url-loader.test.ts +79 -0
- package/src/core/url-loader.ts +148 -0
- package/src/index.ts +1 -3
- package/src/plugin-operation/OperationPlugin.ts +5 -6
- package/src/plugin-operation/history/capability.ts +5 -6
- package/src/plugin-operation/history/errors.ts +2 -6
- package/src/plugin-operation/history/history-tracker.test.ts +36 -43
- package/src/plugin-operation/history/history-tracker.ts +0 -1
- package/src/plugin-operation/history/undo-mapping.ts +6 -3
- package/src/plugin-operation/history/undo-registry.test.ts +3 -4
- package/src/plugin-operation/invoker-capability.ts +21 -7
- package/src/plugin-operation/meta.ts +1 -1
- package/src/plugin-operation/testing.ts +25 -45
- package/src/plugin-runtime/RuntimePlugin.ts +4 -5
- package/src/plugin-runtime/capability.ts +5 -5
- package/src/plugin-runtime/meta.ts +1 -1
- package/src/testing/service.ts +6 -6
- package/src/testing/withPluginManager.stories.tsx +6 -7
- package/src/testing/withPluginManager.tsx +44 -19
- package/src/ui/components/App/App.stories.tsx +92 -0
- package/src/{react → ui/components/App}/App.tsx +9 -11
- package/src/{playground/layout → ui/components/App}/index.ts +1 -1
- package/src/{react → ui/components/PluginManager}/PluginManagerContext.stories.tsx +13 -14
- package/src/{react → ui/components/PluginManager}/PluginManagerProvider.ts +1 -1
- package/src/ui/components/PluginManager/index.ts +5 -0
- package/src/{react/Surface.stories.tsx → ui/components/Surface/SurfaceComponent.stories.tsx} +31 -28
- package/src/{react/Surface.tsx → ui/components/Surface/SurfaceComponent.tsx} +59 -60
- package/src/{react → ui/components/Surface}/SurfaceInfo.tsx +2 -2
- package/src/ui/components/Surface/SurfaceProfilerContext.tsx +207 -0
- package/src/ui/components/Surface/context.ts +12 -0
- package/src/ui/components/Surface/index.ts +35 -0
- package/src/{common/surface.ts → ui/components/Surface/types.ts} +22 -25
- package/src/ui/components/index.ts +7 -0
- package/src/ui/hooks/index.ts +9 -0
- package/src/ui/hooks/useApp.test.tsx +159 -0
- package/src/{react → ui/hooks}/useApp.tsx +110 -30
- package/src/{react → ui/hooks}/useCapabilities.ts +9 -5
- package/src/{react/common.ts → ui/hooks/useSettingsState.ts} +0 -11
- package/src/ui/hooks/useSurface.ts +13 -0
- package/src/ui/index.ts +6 -0
- package/src/vite-plugin/composer-plugin.ts +128 -0
- package/src/vite-plugin/import-map-plugin.ts +314 -0
- package/src/vite-plugin/index.ts +6 -0
- package/src/vite-plugin/packages.ts +29 -0
- package/tsconfig.json +4 -28
- package/tsconfig.node.json +2 -4
- package/typedoc.json +2 -4
- package/vitest.config.ts +1 -1
- package/dist/lib/browser/app-graph-builder-M2VPYQC6.mjs +0 -149
- package/dist/lib/browser/app-graph-builder-M2VPYQC6.mjs.map +0 -7
- package/dist/lib/browser/capability-7PCNSWBT.mjs.map +0 -7
- package/dist/lib/browser/capability-KP3PFEXD.mjs +0 -31
- package/dist/lib/browser/capability-KP3PFEXD.mjs.map +0 -7
- package/dist/lib/browser/chunk-6Y7PZV72.mjs.map +0 -7
- package/dist/lib/browser/chunk-7IQHKD4U.mjs.map +0 -7
- package/dist/lib/browser/chunk-BLQJSGL3.mjs +0 -732
- package/dist/lib/browser/chunk-BLQJSGL3.mjs.map +0 -7
- package/dist/lib/browser/chunk-FHQTHCX7.mjs +0 -8
- package/dist/lib/browser/chunk-FMZN33N4.mjs.map +0 -7
- package/dist/lib/browser/chunk-H4WPA7U7.mjs +0 -77
- package/dist/lib/browser/chunk-H4WPA7U7.mjs.map +0 -7
- package/dist/lib/browser/chunk-PKQT6C53.mjs.map +0 -7
- package/dist/lib/browser/chunk-TCLLRCS3.mjs.map +0 -7
- package/dist/lib/browser/chunk-XYNO72GQ.mjs +0 -746
- package/dist/lib/browser/chunk-XYNO72GQ.mjs.map +0 -7
- package/dist/lib/browser/common/index.mjs +0 -38
- package/dist/lib/browser/invoker-capability-SZRSTHEH.mjs +0 -32
- package/dist/lib/browser/invoker-capability-SZRSTHEH.mjs.map +0 -7
- package/dist/lib/browser/operation-resolver-6MP2MYOY.mjs +0 -64
- package/dist/lib/browser/operation-resolver-6MP2MYOY.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-LROHGJEM.mjs +0 -150
- package/dist/lib/node-esm/app-graph-builder-LROHGJEM.mjs.map +0 -7
- package/dist/lib/node-esm/capability-CFLQ2QQU.mjs.map +0 -7
- package/dist/lib/node-esm/capability-RCUNM2M7.mjs +0 -32
- package/dist/lib/node-esm/capability-RCUNM2M7.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-663A54LQ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-6WXBT3EC.mjs +0 -747
- package/dist/lib/node-esm/chunk-6WXBT3EC.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-7OWSHPYK.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-GQEBIGKD.mjs +0 -733
- package/dist/lib/node-esm/chunk-GQEBIGKD.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-GT6OKM5I.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-STMXUEPO.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-XR6NMKEP.mjs +0 -78
- package/dist/lib/node-esm/chunk-XR6NMKEP.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-XYQTBFPA.mjs.map +0 -7
- package/dist/lib/node-esm/common/index.mjs +0 -39
- package/dist/lib/node-esm/invoker-capability-PNMA5JOS.mjs +0 -33
- package/dist/lib/node-esm/invoker-capability-PNMA5JOS.mjs.map +0 -7
- package/dist/lib/node-esm/operation-resolver-7YWDMTNU.mjs +0 -65
- package/dist/lib/node-esm/operation-resolver-7YWDMTNU.mjs.map +0 -7
- package/dist/types/src/cli.d.ts.map +0 -1
- package/dist/types/src/common/activation-event.d.ts +0 -66
- package/dist/types/src/common/activation-event.d.ts.map +0 -1
- package/dist/types/src/common/capability.d.ts +0 -265
- package/dist/types/src/common/capability.d.ts.map +0 -1
- package/dist/types/src/common/collaboration.d.ts +0 -26
- package/dist/types/src/common/collaboration.d.ts.map +0 -1
- package/dist/types/src/common/file.d.ts +0 -14
- package/dist/types/src/common/file.d.ts.map +0 -1
- package/dist/types/src/common/graph.d.ts +0 -21
- package/dist/types/src/common/graph.d.ts.map +0 -1
- package/dist/types/src/common/plugin.d.ts +0 -201
- package/dist/types/src/common/plugin.d.ts.map +0 -1
- package/dist/types/src/common/surface.d.ts.map +0 -1
- package/dist/types/src/playground/debug/Debug.d.ts +0 -8
- package/dist/types/src/playground/debug/Debug.d.ts.map +0 -1
- package/dist/types/src/playground/debug/index.d.ts +0 -2
- package/dist/types/src/playground/debug/index.d.ts.map +0 -1
- package/dist/types/src/playground/debug/plugin.d.ts +0 -3
- package/dist/types/src/playground/debug/plugin.d.ts.map +0 -1
- package/dist/types/src/playground/generator/Main.d.ts +0 -8
- package/dist/types/src/playground/generator/Main.d.ts.map +0 -1
- package/dist/types/src/playground/generator/Toolbar.d.ts +0 -8
- package/dist/types/src/playground/generator/Toolbar.d.ts.map +0 -1
- package/dist/types/src/playground/generator/generator.d.ts +0 -19
- package/dist/types/src/playground/generator/generator.d.ts.map +0 -1
- package/dist/types/src/playground/generator/index.d.ts +0 -3
- package/dist/types/src/playground/generator/index.d.ts.map +0 -1
- package/dist/types/src/playground/generator/plugin.d.ts +0 -3
- package/dist/types/src/playground/generator/plugin.d.ts.map +0 -1
- package/dist/types/src/playground/layout/Layout.d.ts +0 -10
- package/dist/types/src/playground/layout/Layout.d.ts.map +0 -1
- package/dist/types/src/playground/layout/index.d.ts +0 -2
- package/dist/types/src/playground/layout/index.d.ts.map +0 -1
- package/dist/types/src/playground/layout/plugin.d.ts +0 -3
- package/dist/types/src/playground/layout/plugin.d.ts.map +0 -1
- package/dist/types/src/playground/logger/Toolbar.d.ts +0 -8
- package/dist/types/src/playground/logger/Toolbar.d.ts.map +0 -1
- package/dist/types/src/playground/logger/index.d.ts +0 -2
- package/dist/types/src/playground/logger/index.d.ts.map +0 -1
- package/dist/types/src/playground/logger/plugin.d.ts +0 -3
- package/dist/types/src/playground/logger/plugin.d.ts.map +0 -1
- package/dist/types/src/playground/logger/schema.d.ts +0 -27
- package/dist/types/src/playground/logger/schema.d.ts.map +0 -1
- package/dist/types/src/playground/playground.stories.d.ts +0 -11
- package/dist/types/src/playground/playground.stories.d.ts.map +0 -1
- package/dist/types/src/plugin-settings/SettingsPlugin.d.ts +0 -3
- package/dist/types/src/plugin-settings/SettingsPlugin.d.ts.map +0 -1
- package/dist/types/src/plugin-settings/actions.d.ts +0 -61
- package/dist/types/src/plugin-settings/actions.d.ts.map +0 -1
- package/dist/types/src/plugin-settings/app-graph-builder.d.ts +0 -6
- package/dist/types/src/plugin-settings/app-graph-builder.d.ts.map +0 -1
- package/dist/types/src/plugin-settings/index.d.ts +0 -3
- package/dist/types/src/plugin-settings/index.d.ts.map +0 -1
- package/dist/types/src/plugin-settings/meta.d.ts +0 -3
- package/dist/types/src/plugin-settings/meta.d.ts.map +0 -1
- package/dist/types/src/plugin-settings/operation-resolver.d.ts +0 -6
- package/dist/types/src/plugin-settings/operation-resolver.d.ts.map +0 -1
- package/dist/types/src/plugin-settings/translations.d.ts +0 -11
- package/dist/types/src/plugin-settings/translations.d.ts.map +0 -1
- package/dist/types/src/react/App.d.ts.map +0 -1
- package/dist/types/src/react/App.stories.d.ts.map +0 -1
- package/dist/types/src/react/DefaultFallback.d.ts +0 -8
- package/dist/types/src/react/DefaultFallback.d.ts.map +0 -1
- package/dist/types/src/react/ErrorBoundary.d.ts +0 -30
- package/dist/types/src/react/ErrorBoundary.d.ts.map +0 -1
- package/dist/types/src/react/PluginManagerContext.stories.d.ts.map +0 -1
- package/dist/types/src/react/PluginManagerProvider.d.ts.map +0 -1
- package/dist/types/src/react/Surface.d.ts +0 -14
- package/dist/types/src/react/Surface.d.ts.map +0 -1
- package/dist/types/src/react/Surface.stories.d.ts.map +0 -1
- package/dist/types/src/react/SurfaceInfo.d.ts.map +0 -1
- package/dist/types/src/react/common.d.ts.map +0 -1
- package/dist/types/src/react/index.d.ts +0 -9
- package/dist/types/src/react/index.d.ts.map +0 -1
- package/dist/types/src/react/types.d.ts +0 -12
- package/dist/types/src/react/types.d.ts.map +0 -1
- package/dist/types/src/react/useApp.d.ts.map +0 -1
- package/dist/types/src/react/useCapabilities.d.ts.map +0 -1
- package/dist/types/src/react/useLoading.d.ts.map +0 -1
- package/dist/types/src/react/useOperationResolver.d.ts +0 -19
- package/dist/types/src/react/useOperationResolver.d.ts.map +0 -1
- package/src/common/activation-event.ts +0 -99
- package/src/common/capability.ts +0 -343
- package/src/common/collaboration.ts +0 -31
- package/src/common/file.ts +0 -22
- package/src/common/graph.ts +0 -30
- package/src/common/plugin.ts +0 -364
- package/src/playground/debug/Debug.tsx +0 -49
- package/src/playground/debug/plugin.ts +0 -16
- package/src/playground/generator/Main.tsx +0 -80
- package/src/playground/generator/Toolbar.tsx +0 -57
- package/src/playground/generator/generator.ts +0 -48
- package/src/playground/generator/index.ts +0 -6
- package/src/playground/generator/plugin.ts +0 -21
- package/src/playground/layout/Layout.tsx +0 -37
- package/src/playground/layout/plugin.ts +0 -18
- package/src/playground/logger/Toolbar.tsx +0 -33
- package/src/playground/logger/index.ts +0 -5
- package/src/playground/logger/plugin.ts +0 -42
- package/src/playground/logger/schema.ts +0 -22
- package/src/playground/playground.stories.tsx +0 -54
- package/src/plugin-settings/SettingsPlugin.ts +0 -19
- package/src/plugin-settings/actions.ts +0 -64
- package/src/plugin-settings/app-graph-builder.ts +0 -140
- package/src/plugin-settings/index.ts +0 -6
- package/src/plugin-settings/meta.ts +0 -10
- package/src/plugin-settings/operation-resolver.ts +0 -55
- package/src/plugin-settings/translations.ts +0 -19
- package/src/react/App.stories.tsx +0 -63
- package/src/react/DefaultFallback.tsx +0 -26
- package/src/react/ErrorBoundary.tsx +0 -56
- package/src/react/index.ts +0 -14
- package/src/react/types.ts +0 -27
- package/src/react/useOperationResolver.ts +0 -40
- /package/dist/lib/{node-esm/react/index.mjs.map → browser/chunk-RFSO3JRG.mjs.map} +0 -0
- /package/dist/lib/{node-esm/common/index.mjs.map → browser/common/activation-events.mjs.map} +0 -0
- /package/dist/lib/browser/{react/index.mjs.map → common/capabilities.mjs.map} +0 -0
- /package/dist/lib/browser/{common/index.mjs.map → core/url-loader.mjs.map} +0 -0
- /package/dist/types/src/{react → ui/components/PluginManager}/PluginManagerContext.stories.d.ts +0 -0
- /package/dist/types/src/{react → ui/components/Surface}/SurfaceInfo.d.ts +0 -0
- /package/dist/types/src/{react → ui/hooks}/useLoading.d.ts +0 -0
- /package/src/{react → ui/hooks}/useLoading.tsx +0 -0
package/src/common/operations.ts
CHANGED
|
@@ -7,384 +7,9 @@ import * as Schema from 'effect/Schema';
|
|
|
7
7
|
import { Operation } from '@dxos/operation';
|
|
8
8
|
|
|
9
9
|
import { Capability } from '../core';
|
|
10
|
-
|
|
11
10
|
import { Label } from './translations';
|
|
12
11
|
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Layout operations - Operation-based equivalents of LayoutAction intents.
|
|
17
|
-
* These mirror the LayoutAction namespace but use the Operation pattern.
|
|
18
|
-
*/
|
|
19
|
-
export namespace LayoutOperation {
|
|
20
|
-
//
|
|
21
|
-
// Sidebar Operations
|
|
22
|
-
//
|
|
23
|
-
|
|
24
|
-
export const UpdateSidebar = Operation.make({
|
|
25
|
-
meta: {
|
|
26
|
-
key: `${LAYOUT_PLUGIN}/operation/update-sidebar`,
|
|
27
|
-
name: 'Update Sidebar',
|
|
28
|
-
description: 'Update the sidebar state.',
|
|
29
|
-
},
|
|
30
|
-
executionMode: 'sync',
|
|
31
|
-
services: [Capability.Service],
|
|
32
|
-
schema: {
|
|
33
|
-
input: Schema.Struct({
|
|
34
|
-
subject: Schema.optional(
|
|
35
|
-
Schema.String.annotations({ description: 'URI of the component to display in the sidebar.' }),
|
|
36
|
-
),
|
|
37
|
-
state: Schema.optional(
|
|
38
|
-
Schema.Literal('closed', 'collapsed', 'expanded').annotations({
|
|
39
|
-
description: 'Whether the sidebar is closed, collapsed, or expanded.',
|
|
40
|
-
}),
|
|
41
|
-
),
|
|
42
|
-
}),
|
|
43
|
-
output: Schema.Void,
|
|
44
|
-
},
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
export const UpdateComplementary = Operation.make({
|
|
48
|
-
meta: {
|
|
49
|
-
key: `${LAYOUT_PLUGIN}/operation/update-complementary`,
|
|
50
|
-
name: 'Update Complementary Sidebar',
|
|
51
|
-
description: 'Update the complementary sidebar state.',
|
|
52
|
-
},
|
|
53
|
-
executionMode: 'sync',
|
|
54
|
-
services: [Capability.Service],
|
|
55
|
-
schema: {
|
|
56
|
-
input: Schema.Struct({
|
|
57
|
-
subject: Schema.optional(
|
|
58
|
-
Schema.String.annotations({ description: 'URI of the component to display in the complementary area.' }),
|
|
59
|
-
),
|
|
60
|
-
state: Schema.optional(
|
|
61
|
-
Schema.Literal('closed', 'collapsed', 'expanded').annotations({
|
|
62
|
-
description: 'Whether the complementary sidebar is closed, collapsed, or expanded.',
|
|
63
|
-
}),
|
|
64
|
-
),
|
|
65
|
-
}),
|
|
66
|
-
output: Schema.Void,
|
|
67
|
-
},
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
//
|
|
71
|
-
// Dialog Operations
|
|
72
|
-
//
|
|
73
|
-
|
|
74
|
-
export const UpdateDialog = Operation.make({
|
|
75
|
-
meta: {
|
|
76
|
-
key: `${LAYOUT_PLUGIN}/operation/update-dialog`,
|
|
77
|
-
name: 'Update Dialog',
|
|
78
|
-
description: 'Open, close, or update the dialog.',
|
|
79
|
-
},
|
|
80
|
-
executionMode: 'sync',
|
|
81
|
-
services: [Capability.Service],
|
|
82
|
-
schema: {
|
|
83
|
-
input: Schema.Struct({
|
|
84
|
-
subject: Schema.optional(
|
|
85
|
-
Schema.String.annotations({ description: 'URI of the component to display in the dialog.' }),
|
|
86
|
-
),
|
|
87
|
-
state: Schema.optional(Schema.Boolean.annotations({ description: 'Whether the dialog is open or closed.' })),
|
|
88
|
-
type: Schema.optional(Schema.Literal('default', 'alert').annotations({ description: 'The type of dialog.' })),
|
|
89
|
-
blockAlign: Schema.optional(
|
|
90
|
-
Schema.Literal('start', 'center', 'end').annotations({ description: 'The alignment of the dialog.' }),
|
|
91
|
-
),
|
|
92
|
-
overlayClasses: Schema.optional(
|
|
93
|
-
Schema.String.annotations({ description: 'Additional classes for the dialog overlay.' }),
|
|
94
|
-
),
|
|
95
|
-
overlayStyle: Schema.optional(
|
|
96
|
-
Schema.Record({ key: Schema.String, value: Schema.Any }).annotations({
|
|
97
|
-
description: 'Additional styles for the dialog overlay.',
|
|
98
|
-
}),
|
|
99
|
-
),
|
|
100
|
-
props: Schema.optional(
|
|
101
|
-
Schema.Record({ key: Schema.String, value: Schema.Any }).annotations({
|
|
102
|
-
description: 'Additional props for the dialog.',
|
|
103
|
-
}),
|
|
104
|
-
),
|
|
105
|
-
}),
|
|
106
|
-
output: Schema.Void,
|
|
107
|
-
},
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
//
|
|
111
|
-
// Popover Operations
|
|
112
|
-
//
|
|
113
|
-
|
|
114
|
-
const PopoverBaseInput = Schema.Struct({
|
|
115
|
-
subject: Schema.optional(
|
|
116
|
-
Schema.Any.annotations({
|
|
117
|
-
description: 'URI of the component to display in the popover or data to pass to the popover.',
|
|
118
|
-
}),
|
|
119
|
-
),
|
|
120
|
-
side: Schema.optional(
|
|
121
|
-
Schema.Literal('top', 'right', 'bottom', 'left').annotations({ description: 'The side of the anchor.' }),
|
|
122
|
-
),
|
|
123
|
-
state: Schema.optional(Schema.Boolean.annotations({ description: 'Whether the popover is open or closed.' })),
|
|
124
|
-
props: Schema.optional(
|
|
125
|
-
Schema.Record({ key: Schema.String, value: Schema.Any }).annotations({
|
|
126
|
-
description: 'Additional props for the popover.',
|
|
127
|
-
}),
|
|
128
|
-
),
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
const PopoverBaseWithKind = Schema.Union(
|
|
132
|
-
PopoverBaseInput.pipe(
|
|
133
|
-
Schema.extend(
|
|
134
|
-
Schema.Struct({
|
|
135
|
-
kind: Schema.Literal('base').pipe(Schema.optional),
|
|
136
|
-
}),
|
|
137
|
-
),
|
|
138
|
-
),
|
|
139
|
-
PopoverBaseInput.pipe(
|
|
140
|
-
Schema.extend(
|
|
141
|
-
Schema.Struct({
|
|
142
|
-
kind: Schema.Literal('card'),
|
|
143
|
-
title: Schema.optional(Label.annotations({ description: 'The title of the card.' })),
|
|
144
|
-
}),
|
|
145
|
-
),
|
|
146
|
-
),
|
|
147
|
-
);
|
|
148
|
-
|
|
149
|
-
export const UpdatePopover = Operation.make({
|
|
150
|
-
meta: {
|
|
151
|
-
key: `${LAYOUT_PLUGIN}/operation/update-popover`,
|
|
152
|
-
name: 'Update Popover',
|
|
153
|
-
description: 'Open, close, or update a popover.',
|
|
154
|
-
},
|
|
155
|
-
executionMode: 'sync',
|
|
156
|
-
services: [Capability.Service],
|
|
157
|
-
schema: {
|
|
158
|
-
input: Schema.Union(
|
|
159
|
-
PopoverBaseWithKind.pipe(
|
|
160
|
-
Schema.extend(
|
|
161
|
-
Schema.Struct({
|
|
162
|
-
variant: Schema.Literal('virtual'),
|
|
163
|
-
anchor: Schema.Any.annotations({ description: 'The DOM element to anchor the popover to.' }),
|
|
164
|
-
}),
|
|
165
|
-
),
|
|
166
|
-
),
|
|
167
|
-
PopoverBaseWithKind.pipe(
|
|
168
|
-
Schema.extend(
|
|
169
|
-
Schema.Struct({
|
|
170
|
-
variant: Schema.optional(Schema.Literal('react')),
|
|
171
|
-
anchorId: Schema.String.annotations({
|
|
172
|
-
description: 'An id that can be used to determine whether to render the anchor subcomponent.',
|
|
173
|
-
}),
|
|
174
|
-
}),
|
|
175
|
-
),
|
|
176
|
-
),
|
|
177
|
-
),
|
|
178
|
-
output: Schema.Void,
|
|
179
|
-
},
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
//
|
|
183
|
-
// Toast Operations
|
|
184
|
-
//
|
|
185
|
-
|
|
186
|
-
export const Toast = Schema.Struct({
|
|
187
|
-
id: Schema.String.annotations({ description: 'The id of the toast.' }),
|
|
188
|
-
title: Schema.optional(Label.annotations({ description: 'The title of the toast.' })),
|
|
189
|
-
description: Schema.optional(Label.annotations({ description: 'The description of the toast.' })),
|
|
190
|
-
icon: Schema.optional(Schema.String.annotations({ description: 'The icon of the toast.' })),
|
|
191
|
-
duration: Schema.optional(Schema.Number.annotations({ description: 'The duration of the toast.' })),
|
|
192
|
-
closeLabel: Schema.optional(Label.annotations({ description: 'The label of the close button.' })),
|
|
193
|
-
actionLabel: Schema.optional(Label.annotations({ description: 'The label of the action button.' })),
|
|
194
|
-
actionAlt: Schema.optional(Label.annotations({ description: 'The alt text of the action button.' })),
|
|
195
|
-
onAction: Schema.optional(
|
|
196
|
-
Schema.Any.annotations({ description: 'The action to perform when the action button is clicked.' }),
|
|
197
|
-
),
|
|
198
|
-
});
|
|
199
|
-
|
|
200
|
-
export interface Toast extends Omit<Schema.Schema.Type<typeof Toast>, 'onAction'> {
|
|
201
|
-
onAction?: () => void;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
export const AddToast = Operation.make({
|
|
205
|
-
meta: {
|
|
206
|
-
key: `${LAYOUT_PLUGIN}/operation/add-toast`,
|
|
207
|
-
name: 'Add Toast',
|
|
208
|
-
description: 'Add a toast notification.',
|
|
209
|
-
},
|
|
210
|
-
executionMode: 'sync',
|
|
211
|
-
services: [Capability.Service],
|
|
212
|
-
schema: {
|
|
213
|
-
input: Toast,
|
|
214
|
-
output: Schema.Void,
|
|
215
|
-
},
|
|
216
|
-
});
|
|
217
|
-
|
|
218
|
-
//
|
|
219
|
-
// Layout Mode Operations
|
|
220
|
-
//
|
|
221
|
-
|
|
222
|
-
export const SetLayoutMode = Operation.make({
|
|
223
|
-
meta: {
|
|
224
|
-
key: `${LAYOUT_PLUGIN}/operation/set-layout-mode`,
|
|
225
|
-
name: 'Set Layout Mode',
|
|
226
|
-
description: 'Set the layout mode (solo, deck, fullscreen, etc.).',
|
|
227
|
-
},
|
|
228
|
-
executionMode: 'sync',
|
|
229
|
-
services: [Capability.Service],
|
|
230
|
-
schema: {
|
|
231
|
-
input: Schema.Union(
|
|
232
|
-
Schema.Struct({
|
|
233
|
-
subject: Schema.optional(
|
|
234
|
-
Schema.String.annotations({ description: 'Item which is the subject of the new layout mode.' }),
|
|
235
|
-
),
|
|
236
|
-
mode: Schema.String.annotations({ description: 'The new layout mode.' }),
|
|
237
|
-
}),
|
|
238
|
-
Schema.Struct({
|
|
239
|
-
revert: Schema.Boolean.annotations({ description: 'Revert to the previous layout mode.' }),
|
|
240
|
-
}),
|
|
241
|
-
),
|
|
242
|
-
output: Schema.Void,
|
|
243
|
-
},
|
|
244
|
-
});
|
|
245
|
-
|
|
246
|
-
//
|
|
247
|
-
// Workspace Operations
|
|
248
|
-
//
|
|
249
|
-
|
|
250
|
-
export const SwitchWorkspace = Operation.make({
|
|
251
|
-
meta: {
|
|
252
|
-
key: `${LAYOUT_PLUGIN}/operation/switch-workspace`,
|
|
253
|
-
name: 'Switch Workspace',
|
|
254
|
-
description: 'Switch to a different workspace.',
|
|
255
|
-
},
|
|
256
|
-
executionMode: 'sync',
|
|
257
|
-
services: [Capability.Service],
|
|
258
|
-
schema: {
|
|
259
|
-
input: Schema.Struct({
|
|
260
|
-
subject: Schema.String.annotations({ description: 'The id of the workspace to switch to.' }),
|
|
261
|
-
}),
|
|
262
|
-
output: Schema.Void,
|
|
263
|
-
},
|
|
264
|
-
});
|
|
265
|
-
|
|
266
|
-
export const RevertWorkspace = Operation.make({
|
|
267
|
-
meta: {
|
|
268
|
-
key: `${LAYOUT_PLUGIN}/operation/revert-workspace`,
|
|
269
|
-
name: 'Revert Workspace',
|
|
270
|
-
description: 'Revert to the previous workspace.',
|
|
271
|
-
},
|
|
272
|
-
executionMode: 'sync',
|
|
273
|
-
services: [Capability.Service],
|
|
274
|
-
schema: {
|
|
275
|
-
input: Schema.Void,
|
|
276
|
-
output: Schema.Void,
|
|
277
|
-
},
|
|
278
|
-
});
|
|
279
|
-
|
|
280
|
-
//
|
|
281
|
-
// Main Content Operations
|
|
282
|
-
//
|
|
283
|
-
|
|
284
|
-
export const Open = Operation.make({
|
|
285
|
-
meta: {
|
|
286
|
-
key: `${LAYOUT_PLUGIN}/operation/open`,
|
|
287
|
-
name: 'Open',
|
|
288
|
-
description: 'Open items in the main content area.',
|
|
289
|
-
},
|
|
290
|
-
executionMode: 'sync',
|
|
291
|
-
services: [Capability.Service],
|
|
292
|
-
schema: {
|
|
293
|
-
input: Schema.Struct({
|
|
294
|
-
subject: Schema.Array(Schema.String.annotations({ description: 'Ids of the items to open.' })),
|
|
295
|
-
state: Schema.optional(Schema.Literal(true).annotations({ description: 'The items are being added.' })),
|
|
296
|
-
variant: Schema.optional(Schema.String.annotations({ description: 'The variant of the item to open.' })),
|
|
297
|
-
key: Schema.optional(
|
|
298
|
-
Schema.String.annotations({
|
|
299
|
-
description: 'If provided, will replace item with a matching key (id prefix).',
|
|
300
|
-
}),
|
|
301
|
-
),
|
|
302
|
-
workspace: Schema.optional(Schema.String.annotations({ description: 'The workspace to open the items in.' })),
|
|
303
|
-
scrollIntoView: Schema.optional(Schema.Boolean.annotations({ description: 'Scroll the items into view.' })),
|
|
304
|
-
pivotId: Schema.optional(
|
|
305
|
-
Schema.String.annotations({ description: 'The id of the item to place new items next to.' }),
|
|
306
|
-
),
|
|
307
|
-
positioning: Schema.optional(
|
|
308
|
-
Schema.Union(
|
|
309
|
-
Schema.Literal('start').annotations({ description: 'The items are being added before the pivot item.' }),
|
|
310
|
-
Schema.Literal('end').annotations({ description: 'The items are being added after the pivot item.' }),
|
|
311
|
-
),
|
|
312
|
-
),
|
|
313
|
-
}),
|
|
314
|
-
output: Schema.Void,
|
|
315
|
-
},
|
|
316
|
-
});
|
|
317
|
-
|
|
318
|
-
export const Close = Operation.make({
|
|
319
|
-
meta: {
|
|
320
|
-
key: `${LAYOUT_PLUGIN}/operation/close`,
|
|
321
|
-
name: 'Close',
|
|
322
|
-
description: 'Close items in the main content area.',
|
|
323
|
-
},
|
|
324
|
-
executionMode: 'sync',
|
|
325
|
-
services: [Capability.Service],
|
|
326
|
-
schema: {
|
|
327
|
-
input: Schema.Struct({
|
|
328
|
-
subject: Schema.Array(Schema.String.annotations({ description: 'Ids of the items to close.' })),
|
|
329
|
-
}),
|
|
330
|
-
output: Schema.Void,
|
|
331
|
-
},
|
|
332
|
-
});
|
|
333
|
-
|
|
334
|
-
export const Set = Operation.make({
|
|
335
|
-
meta: {
|
|
336
|
-
key: `${LAYOUT_PLUGIN}/operation/set`,
|
|
337
|
-
name: 'Set',
|
|
338
|
-
description: 'Override items in the main content area.',
|
|
339
|
-
},
|
|
340
|
-
executionMode: 'sync',
|
|
341
|
-
services: [Capability.Service],
|
|
342
|
-
schema: {
|
|
343
|
-
input: Schema.Struct({
|
|
344
|
-
subject: Schema.Array(Schema.String.annotations({ description: 'Ids of the items to set.' })),
|
|
345
|
-
}),
|
|
346
|
-
output: Schema.Void,
|
|
347
|
-
},
|
|
348
|
-
});
|
|
349
|
-
|
|
350
|
-
//
|
|
351
|
-
// Navigation Operations
|
|
352
|
-
//
|
|
353
|
-
|
|
354
|
-
export const ScrollIntoView = Operation.make({
|
|
355
|
-
meta: {
|
|
356
|
-
key: `${LAYOUT_PLUGIN}/operation/scroll-into-view`,
|
|
357
|
-
name: 'Scroll Into View',
|
|
358
|
-
description: 'Scroll an item into view.',
|
|
359
|
-
},
|
|
360
|
-
services: [Capability.Service],
|
|
361
|
-
schema: {
|
|
362
|
-
input: Schema.Struct({
|
|
363
|
-
subject: Schema.optional(Schema.String.annotations({ description: 'The id of the item to scroll into view.' })),
|
|
364
|
-
cursor: Schema.optional(Schema.String.annotations({ description: 'A cursor to scroll to within the item.' })),
|
|
365
|
-
ref: Schema.optional(Schema.String.annotations({ description: 'A reference id for the scroll target.' })),
|
|
366
|
-
}),
|
|
367
|
-
output: Schema.Void,
|
|
368
|
-
},
|
|
369
|
-
});
|
|
370
|
-
|
|
371
|
-
export const Expose = Operation.make({
|
|
372
|
-
meta: {
|
|
373
|
-
key: `${LAYOUT_PLUGIN}/operation/expose`,
|
|
374
|
-
name: 'Expose',
|
|
375
|
-
description: 'Expose an item in the navigation area.',
|
|
376
|
-
},
|
|
377
|
-
services: [Capability.Service],
|
|
378
|
-
schema: {
|
|
379
|
-
input: Schema.Struct({
|
|
380
|
-
subject: Schema.String.annotations({ description: 'The id of the item to expose.' }),
|
|
381
|
-
}),
|
|
382
|
-
output: Schema.Void,
|
|
383
|
-
},
|
|
384
|
-
});
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
const UNDO_NAMESPACE = 'dxos.org/app-framework/undo';
|
|
12
|
+
const UNDO_NAMESPACE = 'org.dxos.app-framework.undo';
|
|
388
13
|
|
|
389
14
|
/**
|
|
390
15
|
* Operations related to undo/history functionality.
|
|
@@ -396,17 +21,15 @@ export namespace UndoOperation {
|
|
|
396
21
|
*/
|
|
397
22
|
export const ShowUndo = Operation.make({
|
|
398
23
|
meta: {
|
|
399
|
-
key: `${UNDO_NAMESPACE}
|
|
24
|
+
key: `${UNDO_NAMESPACE}.operation.show-undo`,
|
|
400
25
|
name: 'Show Undo',
|
|
401
26
|
description: 'Show an undo toast notification.',
|
|
402
27
|
},
|
|
403
28
|
executionMode: 'sync',
|
|
404
29
|
services: [Capability.Service],
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
output: Schema.Void,
|
|
410
|
-
},
|
|
30
|
+
input: Schema.Struct({
|
|
31
|
+
message: Schema.optional(Label.annotations({ description: 'The message to display in the undo toast.' })),
|
|
32
|
+
}),
|
|
33
|
+
output: Schema.Void,
|
|
411
34
|
});
|
|
412
35
|
}
|
|
@@ -23,15 +23,3 @@ export const Label = Schema.Union(
|
|
|
23
23
|
),
|
|
24
24
|
);
|
|
25
25
|
export type Label = Schema.Schema.Type<typeof Label>;
|
|
26
|
-
|
|
27
|
-
export const ResourceKey = Schema.Union(Schema.String, Schema.Record({ key: Schema.String, value: Schema.Any }));
|
|
28
|
-
export type ResourceKey = Schema.Schema.Type<typeof ResourceKey>;
|
|
29
|
-
|
|
30
|
-
export const ResourceLanguage = Schema.Record({ key: Schema.String, value: ResourceKey });
|
|
31
|
-
export type ResourceLanguage = Schema.Schema.Type<typeof ResourceLanguage>;
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* A resource is a collection of translations for a language.
|
|
35
|
-
*/
|
|
36
|
-
export const Resource = Schema.Record({ key: Schema.String, value: ResourceLanguage });
|
|
37
|
-
export type Resource = Schema.Schema.Type<typeof Resource>;
|
package/src/context.ts
CHANGED
|
@@ -6,4 +6,4 @@ import { createContext } from '@dxos/web-context';
|
|
|
6
6
|
|
|
7
7
|
import { type PluginManager } from './core';
|
|
8
8
|
|
|
9
|
-
export const PluginManagerContext = createContext<PluginManager.PluginManager>('dxos.
|
|
9
|
+
export const PluginManagerContext = createContext<PluginManager.PluginManager>('org.dxos.app-framework.plugin-manager');
|
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import { compositeKey } from '@dxos/util';
|
|
6
|
+
|
|
5
7
|
/**
|
|
6
8
|
* A unique string identifier representing an event.
|
|
7
9
|
* This is expected to be a URI, where initial parts are often the id of the plugin whose package defines the event.
|
|
8
10
|
*
|
|
9
|
-
* @example dxos.
|
|
11
|
+
* @example org.dxos.plugin.example.event.ready
|
|
10
12
|
*/
|
|
11
13
|
export type ActivationEvent = {
|
|
12
14
|
id: string;
|
|
@@ -31,7 +33,8 @@ export const make = (id: string, specifier?: string) => {
|
|
|
31
33
|
/**
|
|
32
34
|
* Helper to create an activation event key.
|
|
33
35
|
*/
|
|
34
|
-
export const eventKey = (event: ActivationEvent) =>
|
|
36
|
+
export const eventKey = (event: ActivationEvent) =>
|
|
37
|
+
event.specifier ? compositeKey(event.id, event.specifier) : event.id;
|
|
35
38
|
|
|
36
39
|
/**
|
|
37
40
|
* Helper to create an activation event that triggers when any of the given events are activated.
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { describe, expect, it, onTestFinished } from '@effect/vitest';
|
|
6
5
|
import { Registry } from '@effect-atom/atom-react';
|
|
6
|
+
import { describe, expect, it, onTestFinished } from '@effect/vitest';
|
|
7
7
|
import * as Effect from 'effect/Effect';
|
|
8
8
|
|
|
9
9
|
import * as Capability from './capability';
|
|
@@ -59,6 +59,12 @@ export interface CapabilityManager {
|
|
|
59
59
|
* @returns The capability.
|
|
60
60
|
*/
|
|
61
61
|
waitFor<T>(interfaceDef: Capability.InterfaceDef<T>): Effect.Effect<T, Error>;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Get capabilities grouped by the module that contributed them.
|
|
65
|
+
* @returns An atom containing a record from module ID to capability implementations.
|
|
66
|
+
*/
|
|
67
|
+
atomByModule<T>(interfaceDef: Capability.InterfaceDef<T>): Atom.Atom<Record<string, T[]>>;
|
|
62
68
|
}
|
|
63
69
|
|
|
64
70
|
/**
|
|
@@ -75,7 +81,18 @@ class CapabilityManagerImpl implements CapabilityManager {
|
|
|
75
81
|
return Atom.make((get) => {
|
|
76
82
|
const current = get(this._capabilityEntries(id));
|
|
77
83
|
return current.map((c) => c.implementation);
|
|
78
|
-
});
|
|
84
|
+
}).pipe(Atom.keepAlive);
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
readonly _capabilitiesByModule = Atom.family<string, Atom.Atom<Record<string, unknown[]>>>((id: string) => {
|
|
88
|
+
return Atom.make((get) => {
|
|
89
|
+
const entries = get(this._capabilityEntries(id));
|
|
90
|
+
const result: Record<string, unknown[]> = {};
|
|
91
|
+
for (const entry of entries) {
|
|
92
|
+
(result[entry.moduleId] ??= []).push(entry.implementation);
|
|
93
|
+
}
|
|
94
|
+
return result;
|
|
95
|
+
}).pipe(Atom.keepAlive);
|
|
79
96
|
});
|
|
80
97
|
|
|
81
98
|
readonly _capability = Atom.family<string, Atom.Atom<unknown>>((id: string) => {
|
|
@@ -163,6 +180,10 @@ class CapabilityManagerImpl implements CapabilityManager {
|
|
|
163
180
|
return result;
|
|
164
181
|
});
|
|
165
182
|
}
|
|
183
|
+
|
|
184
|
+
atomByModule<T>(interfaceDef: Capability.InterfaceDef<T>): Atom.Atom<Record<string, T[]>> {
|
|
185
|
+
return this._capabilitiesByModule(interfaceDef.identifier) as Atom.Atom<Record<string, T[]>>;
|
|
186
|
+
}
|
|
166
187
|
}
|
|
167
188
|
|
|
168
189
|
/**
|
package/src/core/capability.ts
CHANGED
|
@@ -62,6 +62,16 @@ export const waitFor = <T>(interfaceDef: InterfaceDef<T>): Effect.Effect<T, Erro
|
|
|
62
62
|
export const atom = <T>(interfaceDef: InterfaceDef<T>): Effect.Effect<Atom.Atom<T[]>, never, Service> =>
|
|
63
63
|
Effect.map(Service, (manager) => manager.atom(interfaceDef));
|
|
64
64
|
|
|
65
|
+
/**
|
|
66
|
+
* Get capabilities grouped by the module that contributed them.
|
|
67
|
+
* @param interfaceDef The interface definition of the capability.
|
|
68
|
+
* @returns An Atom containing a record from module ID to capability implementations.
|
|
69
|
+
*/
|
|
70
|
+
export const atomByModule = <T>(
|
|
71
|
+
interfaceDef: InterfaceDef<T>,
|
|
72
|
+
): Effect.Effect<Atom.Atom<Record<string, T[]>>, never, Service> =>
|
|
73
|
+
Effect.map(Service, (manager) => manager.atomByModule(interfaceDef));
|
|
74
|
+
|
|
65
75
|
const InterfaceDefTypeId: unique symbol = Symbol.for('InterfaceDefTypeId');
|
|
66
76
|
|
|
67
77
|
/**
|
|
@@ -120,6 +130,7 @@ export type ModuleReturn = void | Any | Any[] | readonly Any[] | [Any, ...Any[]]
|
|
|
120
130
|
/**
|
|
121
131
|
* Helper to define the implementation of a capability.
|
|
122
132
|
*/
|
|
133
|
+
// TODO(dmaretskyi): Make the return type non-generic so capabilities are non-discernable.
|
|
123
134
|
export const contributes = <I extends InterfaceDef<any>>(
|
|
124
135
|
interfaceDef: I,
|
|
125
136
|
implementation: Capability<InterfaceDef.Implementation<I>>['implementation'],
|
|
@@ -133,10 +144,10 @@ export const contributes = <I extends InterfaceDef<any>>(
|
|
|
133
144
|
};
|
|
134
145
|
|
|
135
146
|
type LoadCapability<Props, Capabilities extends ModuleReturn = ModuleReturn> = () => Promise<{
|
|
136
|
-
default: (props
|
|
147
|
+
default: (props: Props) => Effect.Effect<Capabilities, Error, Service | Plugin.Service | never>;
|
|
137
148
|
}>;
|
|
138
149
|
type LoadCapabilities<Props, Capabilities extends ModuleReturn = ModuleReturn> = () => Promise<{
|
|
139
|
-
default: (props
|
|
150
|
+
default: (props: Props) => Effect.Effect<Capabilities, Error, Service | Plugin.Service | never>;
|
|
140
151
|
}>;
|
|
141
152
|
|
|
142
153
|
type NormalizeReturn<R> = R extends readonly (infer A)[]
|
|
@@ -148,7 +159,7 @@ type NormalizeReturn<R> = R extends readonly (infer A)[]
|
|
|
148
159
|
: Any[];
|
|
149
160
|
|
|
150
161
|
export type LazyCapability<Props = void, Capabilities extends ModuleReturn = ModuleReturn, E extends Error = Error> = (
|
|
151
|
-
props
|
|
162
|
+
props: Props,
|
|
152
163
|
) => Effect.Effect<NormalizeReturn<Capabilities>, E, Service | Plugin.Service | never>;
|
|
153
164
|
|
|
154
165
|
/**
|
|
@@ -162,9 +173,9 @@ export const lazy = <T = void, R extends ModuleReturn = ModuleReturn>(
|
|
|
162
173
|
name: string,
|
|
163
174
|
c: LoadCapability<T, R> | LoadCapabilities<T, R>,
|
|
164
175
|
): LazyCapability<T, R> => {
|
|
165
|
-
const lazyFn: LazyCapability<T, R> = (props
|
|
176
|
+
const lazyFn: LazyCapability<T, R> = (props: T) =>
|
|
166
177
|
Effect.gen(function* () {
|
|
167
|
-
const { default: getCapability } = yield* Effect.
|
|
178
|
+
const { default: getCapability } = yield* Effect.promise(() => c());
|
|
168
179
|
const result = yield* getCapability(props);
|
|
169
180
|
const normalized = result == null ? [] : Array.isArray(result) ? Array.from(result) : [result];
|
|
170
181
|
return normalized as NormalizeReturn<R>;
|
|
@@ -217,10 +228,10 @@ export const getModuleTag = (capability: unknown): string | undefined => {
|
|
|
217
228
|
* })
|
|
218
229
|
* );
|
|
219
230
|
*
|
|
220
|
-
* // Module with
|
|
231
|
+
* // Module with required options (context accessed via layer)
|
|
221
232
|
* export default Capability.makeModule(
|
|
222
|
-
* Effect.fnUntraced(function* (
|
|
223
|
-
* const invoker = yield* Capability.get(
|
|
233
|
+
* Effect.fnUntraced(function* (props: { observability: boolean }) {
|
|
234
|
+
* const invoker = yield* Capability.get(Capabilities.OperationInvoker);
|
|
224
235
|
* return contributes(Capabilities.IntentResolver, ...);
|
|
225
236
|
* })
|
|
226
237
|
* );
|
|
@@ -232,5 +243,5 @@ export const makeModule = <
|
|
|
232
243
|
E extends Error = Error,
|
|
233
244
|
R extends Service | Plugin.Service | never = Service,
|
|
234
245
|
>(
|
|
235
|
-
fn: (props
|
|
236
|
-
): ((props
|
|
246
|
+
fn: (props: TProps) => Effect.Effect<TReturn, E, R>,
|
|
247
|
+
): ((props: TProps) => Effect.Effect<TReturn, E, R>) => fn;
|
package/src/core/index.ts
CHANGED