@dxos/app-framework 0.8.4-main.c1de068 → 0.8.4-main.c85a9c8dae
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 +9 -0
- package/.storybook/preview.mts +8 -0
- package/.swc/plugins/linux_x86_64_19.0.0/727453fb3a62f7f1d952a41e051ca8a6f88cadc45cee43c6a4d1aa45f9b75665.wasmer-v7 +0 -0
- package/dist/lib/browser/capability-2GL5JAGJ.mjs +37 -0
- package/dist/lib/browser/capability-2GL5JAGJ.mjs.map +7 -0
- package/dist/lib/browser/capability-7RLVE42K.mjs +34 -0
- package/dist/lib/browser/capability-7RLVE42K.mjs.map +7 -0
- package/dist/lib/browser/chunk-4CTRO67U.mjs +703 -0
- package/dist/lib/browser/chunk-4CTRO67U.mjs.map +7 -0
- package/dist/lib/browser/chunk-5RJNZV7K.mjs +44 -0
- package/dist/lib/browser/chunk-5RJNZV7K.mjs.map +7 -0
- package/dist/lib/browser/chunk-FHQTHCX7.mjs +8 -0
- package/dist/lib/browser/chunk-FHQTHCX7.mjs.map +7 -0
- package/dist/lib/browser/chunk-FNKT2QQ2.mjs +145 -0
- package/dist/lib/browser/chunk-FNKT2QQ2.mjs.map +7 -0
- package/dist/lib/browser/chunk-HE27PNNQ.mjs +824 -0
- package/dist/lib/browser/chunk-HE27PNNQ.mjs.map +7 -0
- package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/browser/chunk-NPUEVX42.mjs +34 -0
- package/dist/lib/browser/chunk-NPUEVX42.mjs.map +7 -0
- package/dist/lib/browser/chunk-PKQT6C53.mjs +47 -0
- package/dist/lib/browser/chunk-PKQT6C53.mjs.map +7 -0
- package/dist/lib/browser/chunk-REORGDJT.mjs +80 -0
- package/dist/lib/browser/chunk-REORGDJT.mjs.map +7 -0
- package/dist/lib/browser/chunk-YAFEA4GV.mjs +1 -0
- package/dist/lib/browser/chunk-YNFPIQGB.mjs +76 -0
- package/dist/lib/browser/chunk-YNFPIQGB.mjs.map +7 -0
- package/dist/lib/browser/chunk-ZRWBPIZG.mjs +170 -0
- package/dist/lib/browser/chunk-ZRWBPIZG.mjs.map +7 -0
- package/dist/lib/browser/cli/index.mjs +89 -0
- package/dist/lib/browser/cli/index.mjs.map +7 -0
- package/dist/lib/browser/common/activation-events.mjs +23 -0
- package/dist/lib/browser/common/capabilities.mjs +45 -0
- package/dist/lib/browser/core/activation-event.mjs +20 -0
- package/dist/lib/browser/core/activation-event.mjs.map +7 -0
- package/dist/lib/browser/core/capability.mjs +28 -0
- package/dist/lib/browser/core/capability.mjs.map +7 -0
- package/dist/lib/browser/core/plugin-manager.mjs +15 -0
- package/dist/lib/browser/core/plugin-manager.mjs.map +7 -0
- package/dist/lib/browser/core/plugin.mjs +27 -0
- package/dist/lib/browser/core/plugin.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +87 -156
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/invoker-capability-BNLVNYHU.mjs +36 -0
- package/dist/lib/browser/invoker-capability-BNLVNYHU.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +89 -39
- package/dist/lib/browser/testing/index.mjs.map +4 -4
- package/dist/lib/browser/ui/index.mjs +45 -0
- package/dist/lib/browser/ui/index.mjs.map +7 -0
- package/dist/lib/node-esm/capability-CHIMU6LX.mjs +38 -0
- package/dist/lib/node-esm/capability-CHIMU6LX.mjs.map +7 -0
- package/dist/lib/node-esm/capability-EVZK4REM.mjs +35 -0
- package/dist/lib/node-esm/capability-EVZK4REM.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-2A4PRBIX.mjs +171 -0
- package/dist/lib/node-esm/chunk-2A4PRBIX.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-7CPNAEGV.mjs +704 -0
- package/dist/lib/node-esm/chunk-7CPNAEGV.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-7OWSHPYK.mjs +48 -0
- package/dist/lib/node-esm/chunk-7OWSHPYK.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-CJCQS2YL.mjs +146 -0
- package/dist/lib/node-esm/chunk-CJCQS2YL.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-DTCHT2X2.mjs +825 -0
- package/dist/lib/node-esm/chunk-DTCHT2X2.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-JAZVHID3.mjs +35 -0
- package/dist/lib/node-esm/chunk-JAZVHID3.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-SB5ODNPX.mjs +77 -0
- package/dist/lib/node-esm/chunk-SB5ODNPX.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-UEWJDI2L.mjs +10 -0
- package/dist/lib/node-esm/chunk-UEWJDI2L.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-UFW652GS.mjs +81 -0
- package/dist/lib/node-esm/chunk-UFW652GS.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-VUIUFIGT.mjs +45 -0
- package/dist/lib/node-esm/chunk-VUIUFIGT.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-Z4TJPSMP.mjs +2 -0
- package/dist/lib/node-esm/chunk-Z4TJPSMP.mjs.map +7 -0
- package/dist/lib/node-esm/cli/index.mjs +90 -0
- package/dist/lib/node-esm/cli/index.mjs.map +7 -0
- package/dist/lib/node-esm/common/activation-events.mjs +24 -0
- package/dist/lib/node-esm/common/activation-events.mjs.map +7 -0
- package/dist/lib/node-esm/common/capabilities.mjs +46 -0
- package/dist/lib/node-esm/common/capabilities.mjs.map +7 -0
- package/dist/lib/node-esm/core/activation-event.mjs +21 -0
- package/dist/lib/node-esm/core/activation-event.mjs.map +7 -0
- package/dist/lib/node-esm/core/capability.mjs +29 -0
- package/dist/lib/node-esm/core/capability.mjs.map +7 -0
- package/dist/lib/node-esm/core/plugin-manager.mjs +16 -0
- package/dist/lib/node-esm/core/plugin-manager.mjs.map +7 -0
- package/dist/lib/node-esm/core/plugin.mjs +28 -0
- package/dist/lib/node-esm/core/plugin.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +87 -156
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/invoker-capability-VF6SP44V.mjs +37 -0
- package/dist/lib/node-esm/invoker-capability-VF6SP44V.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs +89 -39
- package/dist/lib/node-esm/testing/index.mjs.map +4 -4
- package/dist/lib/node-esm/ui/index.mjs +46 -0
- package/dist/lib/node-esm/ui/index.mjs.map +7 -0
- package/dist/types/src/cli/cli.d.ts +39 -0
- 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 +114 -123
- package/dist/types/src/common/capabilities.d.ts.map +1 -1
- package/dist/types/src/common/index.d.ts +4 -8
- package/dist/types/src/common/index.d.ts.map +1 -1
- package/dist/types/src/common/operations.d.ts +33 -0
- package/dist/types/src/common/operations.d.ts.map +1 -0
- package/dist/types/src/common/translations.d.ts +8 -8
- package/dist/types/src/common/translations.d.ts.map +1 -1
- package/dist/types/src/context.d.ts +5 -0
- package/dist/types/src/context.d.ts.map +1 -0
- package/dist/types/src/core/{events.d.ts → activation-event.d.ts} +6 -6
- package/dist/types/src/core/activation-event.d.ts.map +1 -0
- package/dist/types/src/core/capability-manager.d.ts +43 -0
- package/dist/types/src/core/capability-manager.d.ts.map +1 -0
- package/dist/types/src/core/capability-manager.test.d.ts +2 -0
- package/dist/types/src/core/capability-manager.test.d.ts.map +1 -0
- package/dist/types/src/core/capability.d.ts +150 -0
- package/dist/types/src/core/capability.d.ts.map +1 -0
- package/dist/types/src/core/index.d.ts +5 -4
- package/dist/types/src/core/index.d.ts.map +1 -1
- package/dist/types/src/core/plugin-manager.d.ts +66 -0
- package/dist/types/src/core/plugin-manager.d.ts.map +1 -0
- package/dist/types/src/core/plugin-manager.test.d.ts +2 -0
- package/dist/types/src/core/plugin-manager.test.d.ts.map +1 -0
- package/dist/types/src/core/plugin.d.ts +97 -32
- package/dist/types/src/core/plugin.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +3 -4
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/plugin-operation/OperationPlugin.d.ts +3 -0
- package/dist/types/src/plugin-operation/OperationPlugin.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/capability.d.ts +7 -0
- package/dist/types/src/plugin-operation/history/capability.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/errors.d.ts +5 -0
- package/dist/types/src/plugin-operation/history/errors.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/history-tracker.d.ts +18 -0
- package/dist/types/src/plugin-operation/history/history-tracker.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/history-tracker.test.d.ts +2 -0
- package/dist/types/src/plugin-operation/history/history-tracker.test.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/index.d.ts +6 -0
- package/dist/types/src/plugin-operation/history/index.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/types.d.ts +13 -0
- package/dist/types/src/plugin-operation/history/types.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/undo-mapping.d.ts +101 -0
- package/dist/types/src/plugin-operation/history/undo-mapping.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/undo-registry.d.ts +23 -0
- package/dist/types/src/plugin-operation/history/undo-registry.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/undo-registry.test.d.ts +2 -0
- package/dist/types/src/plugin-operation/history/undo-registry.test.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/index.d.ts +3 -0
- package/dist/types/src/plugin-operation/index.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/invoker-capability.d.ts +6 -0
- package/dist/types/src/plugin-operation/invoker-capability.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/meta.d.ts +3 -0
- package/dist/types/src/plugin-operation/meta.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/testing.d.ts +109 -0
- package/dist/types/src/plugin-operation/testing.d.ts.map +1 -0
- package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts +3 -0
- package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts.map +1 -0
- package/dist/types/src/plugin-runtime/capability.d.ts +6 -0
- package/dist/types/src/plugin-runtime/capability.d.ts.map +1 -0
- package/dist/types/src/plugin-runtime/index.d.ts +2 -0
- package/dist/types/src/plugin-runtime/index.d.ts.map +1 -0
- package/dist/types/src/plugin-runtime/meta.d.ts +3 -0
- package/dist/types/src/plugin-runtime/meta.d.ts.map +1 -0
- package/dist/types/src/testing/index.d.ts +1 -0
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/testing/service.d.ts +8 -0
- package/dist/types/src/testing/service.d.ts.map +1 -0
- package/dist/types/src/testing/withPluginManager.d.ts +11 -10
- package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
- package/dist/types/src/testing/withPluginManager.stories.d.ts +9 -3
- package/dist/types/src/testing/withPluginManager.stories.d.ts.map +1 -1
- package/dist/types/src/ui/components/App/App.d.ts +8 -0
- package/dist/types/src/ui/components/App/App.d.ts.map +1 -0
- package/dist/types/src/ui/components/App/App.stories.d.ts +19 -0
- 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 +13 -0
- package/dist/types/src/ui/components/PluginManager/PluginManagerContext.stories.d.ts.map +1 -0
- package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts +10 -0
- 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/ui/components/Surface/SurfaceComponent.stories.d.ts +14 -0
- package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts.map +1 -0
- package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts +11 -0
- package/dist/types/src/ui/components/Surface/SurfaceInfo.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 +20 -0
- package/dist/types/src/ui/components/Surface/index.d.ts.map +1 -0
- package/dist/types/src/ui/components/Surface/types.d.ts +96 -0
- 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 +7 -0
- package/dist/types/src/ui/hooks/index.d.ts.map +1 -0
- package/dist/types/src/{App.d.ts → ui/hooks/useApp.d.ts} +21 -14
- package/dist/types/src/ui/hooks/useApp.d.ts.map +1 -0
- package/dist/types/src/ui/hooks/useCapabilities.d.ts +31 -0
- package/dist/types/src/ui/hooks/useCapabilities.d.ts.map +1 -0
- package/dist/types/src/ui/hooks/useLoading.d.ts +18 -0
- package/dist/types/src/ui/hooks/useLoading.d.ts.map +1 -0
- package/dist/types/src/ui/hooks/useOperationResolver.d.ts +19 -0
- package/dist/types/src/ui/hooks/useOperationResolver.d.ts.map +1 -0
- package/dist/types/src/ui/hooks/useSettingsState.d.ts +10 -0
- 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/tsconfig.tsbuildinfo +1 -1
- package/moon.yml +11 -3
- package/package.json +113 -44
- package/src/cli/cli.ts +107 -0
- package/src/{playground/layout → cli}/index.ts +1 -1
- package/src/common/activation-events.ts +44 -0
- package/src/common/capabilities.ts +174 -114
- package/src/common/index.ts +4 -8
- package/src/common/operations.ts +38 -0
- package/src/common/translations.ts +18 -10
- package/src/context.ts +9 -0
- package/src/core/{events.ts → activation-event.ts} +5 -5
- package/src/core/capability-manager.test.ts +151 -0
- package/src/core/capability-manager.ts +171 -0
- package/src/core/capability.ts +236 -0
- package/src/core/index.ts +5 -4
- package/src/core/plugin-manager.test.ts +845 -0
- package/src/core/plugin-manager.ts +715 -0
- package/src/core/plugin.ts +230 -36
- package/src/helpers.test.ts +1 -1
- package/src/index.ts +3 -4
- package/src/plugin-operation/OperationPlugin.ts +25 -0
- package/src/plugin-operation/history/capability.ts +37 -0
- package/src/plugin-operation/history/errors.ts +11 -0
- package/src/plugin-operation/history/history-tracker.test.ts +380 -0
- package/src/plugin-operation/history/history-tracker.ts +129 -0
- package/src/plugin-operation/history/index.ts +9 -0
- package/src/plugin-operation/history/types.ts +17 -0
- package/src/plugin-operation/history/undo-mapping.ts +135 -0
- package/src/plugin-operation/history/undo-registry.test.ts +73 -0
- package/src/plugin-operation/history/undo-registry.ts +54 -0
- package/src/plugin-operation/index.ts +6 -0
- package/src/plugin-operation/invoker-capability.ts +40 -0
- package/src/plugin-operation/meta.ts +11 -0
- package/src/plugin-operation/testing.ts +174 -0
- package/src/plugin-runtime/RuntimePlugin.ts +20 -0
- package/src/plugin-runtime/capability.ts +53 -0
- package/src/{playground/debug → plugin-runtime}/index.ts +1 -1
- package/src/plugin-runtime/meta.ts +11 -0
- package/src/testing/index.ts +1 -0
- package/src/testing/service.ts +52 -0
- package/src/testing/withPluginManager.stories.tsx +15 -11
- package/src/testing/withPluginManager.tsx +47 -45
- package/src/ui/components/App/App.stories.tsx +92 -0
- package/src/ui/components/App/App.tsx +57 -0
- package/src/{playground/logger → ui/components/App}/index.ts +1 -1
- package/src/ui/components/PluginManager/PluginManagerContext.stories.tsx +183 -0
- package/src/{react → ui/components/PluginManager}/PluginManagerProvider.ts +3 -3
- package/src/ui/components/PluginManager/index.ts +5 -0
- package/src/ui/components/Surface/SurfaceComponent.stories.tsx +143 -0
- package/src/ui/components/Surface/SurfaceComponent.tsx +247 -0
- package/src/ui/components/Surface/SurfaceInfo.tsx +107 -0
- package/src/ui/components/Surface/context.ts +12 -0
- package/src/ui/components/Surface/index.ts +20 -0
- package/src/ui/components/Surface/types.ts +117 -0
- package/src/ui/components/index.ts +7 -0
- package/src/ui/hooks/index.ts +10 -0
- package/src/ui/hooks/useApp.tsx +213 -0
- package/src/ui/hooks/useCapabilities.ts +67 -0
- package/src/ui/hooks/useLoading.tsx +68 -0
- package/src/ui/hooks/useOperationResolver.ts +40 -0
- package/src/ui/hooks/useSettingsState.ts +26 -0
- package/src/ui/hooks/useSurface.ts +13 -0
- package/src/ui/index.ts +6 -0
- package/tsconfig.json +14 -30
- package/tsconfig.node.json +1 -3
- package/typedoc.json +2 -4
- package/vitest.config.ts +8 -6
- package/.swc/plugins/v7_linux_x86_64_13.0.0/f45bdff002284d9e8f9ef3f0be909de12da36c049cbcf261ac78fc00abb09a2d +0 -0
- package/.swc/plugins/v7_linux_x86_64_13.0.0/fce1bdb8e20a094e4af08bad09cc81497ed0e2e7c51223b07d371063cca18429 +0 -0
- package/dist/lib/browser/app-graph-builder-LYF7EKNN.mjs +0 -137
- package/dist/lib/browser/app-graph-builder-LYF7EKNN.mjs.map +0 -7
- package/dist/lib/browser/chunk-FMN65HSW.mjs +0 -1519
- package/dist/lib/browser/chunk-FMN65HSW.mjs.map +0 -7
- package/dist/lib/browser/chunk-FO2PH7M3.mjs +0 -415
- package/dist/lib/browser/chunk-FO2PH7M3.mjs.map +0 -7
- package/dist/lib/browser/chunk-ORWHM7CO.mjs +0 -32
- package/dist/lib/browser/chunk-ORWHM7CO.mjs.map +0 -7
- package/dist/lib/browser/intent-dispatcher-LSYQZSEB.mjs +0 -11
- package/dist/lib/browser/intent-resolver-ZTNOSO3A.mjs +0 -39
- package/dist/lib/browser/intent-resolver-ZTNOSO3A.mjs.map +0 -7
- package/dist/lib/browser/store-KML2R4IE.mjs +0 -30
- package/dist/lib/browser/store-KML2R4IE.mjs.map +0 -7
- package/dist/lib/browser/worker.mjs +0 -79
- package/dist/lib/node-esm/app-graph-builder-SAOWGJDK.mjs +0 -138
- package/dist/lib/node-esm/app-graph-builder-SAOWGJDK.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-73HGSHKE.mjs +0 -416
- package/dist/lib/node-esm/chunk-73HGSHKE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-UMZQERLE.mjs +0 -34
- package/dist/lib/node-esm/chunk-UMZQERLE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ZEZ4FVEU.mjs +0 -1521
- package/dist/lib/node-esm/chunk-ZEZ4FVEU.mjs.map +0 -7
- package/dist/lib/node-esm/intent-dispatcher-6CYNGPSW.mjs +0 -12
- package/dist/lib/node-esm/intent-resolver-W7Z7WFFM.mjs +0 -40
- package/dist/lib/node-esm/intent-resolver-W7Z7WFFM.mjs.map +0 -7
- package/dist/lib/node-esm/store-QEXGXLWZ.mjs +0 -31
- package/dist/lib/node-esm/store-QEXGXLWZ.mjs.map +0 -7
- package/dist/lib/node-esm/worker.mjs +0 -80
- package/dist/types/src/App.d.ts.map +0 -1
- package/dist/types/src/common/collaboration.d.ts +0 -19
- package/dist/types/src/common/collaboration.d.ts.map +0 -1
- package/dist/types/src/common/events.d.ts +0 -52
- package/dist/types/src/common/events.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/layout.d.ts +0 -281
- package/dist/types/src/common/layout.d.ts.map +0 -1
- package/dist/types/src/common/surface.d.ts +0 -65
- package/dist/types/src/common/surface.d.ts.map +0 -1
- package/dist/types/src/core/capabilities.d.ts +0 -114
- package/dist/types/src/core/capabilities.d.ts.map +0 -1
- package/dist/types/src/core/capabilities.test.d.ts +0 -2
- package/dist/types/src/core/capabilities.test.d.ts.map +0 -1
- package/dist/types/src/core/events.d.ts.map +0 -1
- package/dist/types/src/core/manager.d.ts +0 -122
- package/dist/types/src/core/manager.d.ts.map +0 -1
- package/dist/types/src/core/manager.test.d.ts +0 -2
- package/dist/types/src/core/manager.test.d.ts.map +0 -1
- package/dist/types/src/playground/debug/Debug.d.ts +0 -6
- 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 -2
- package/dist/types/src/playground/debug/plugin.d.ts.map +0 -1
- package/dist/types/src/playground/generator/Main.d.ts +0 -6
- package/dist/types/src/playground/generator/Main.d.ts.map +0 -1
- package/dist/types/src/playground/generator/Toolbar.d.ts +0 -6
- package/dist/types/src/playground/generator/Toolbar.d.ts.map +0 -1
- package/dist/types/src/playground/generator/generator.d.ts +0 -7
- 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 -2
- package/dist/types/src/playground/generator/plugin.d.ts.map +0 -1
- package/dist/types/src/playground/layout/Layout.d.ts +0 -8
- 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 -2
- package/dist/types/src/playground/layout/plugin.d.ts.map +0 -1
- package/dist/types/src/playground/logger/Toolbar.d.ts +0 -6
- 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 -2
- package/dist/types/src/playground/logger/plugin.d.ts.map +0 -1
- package/dist/types/src/playground/logger/schema.d.ts +0 -13
- package/dist/types/src/playground/logger/schema.d.ts.map +0 -1
- package/dist/types/src/playground/playground.stories.d.ts +0 -10
- package/dist/types/src/playground/playground.stories.d.ts.map +0 -1
- package/dist/types/src/plugin-intent/IntentPlugin.d.ts +0 -2
- package/dist/types/src/plugin-intent/IntentPlugin.d.ts.map +0 -1
- package/dist/types/src/plugin-intent/actions.d.ts +0 -38
- package/dist/types/src/plugin-intent/actions.d.ts.map +0 -1
- package/dist/types/src/plugin-intent/errors.d.ts +0 -16
- package/dist/types/src/plugin-intent/errors.d.ts.map +0 -1
- package/dist/types/src/plugin-intent/index.d.ts +0 -5
- package/dist/types/src/plugin-intent/index.d.ts.map +0 -1
- package/dist/types/src/plugin-intent/intent-dispatcher.d.ts +0 -139
- package/dist/types/src/plugin-intent/intent-dispatcher.d.ts.map +0 -1
- package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts +0 -2
- package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts.map +0 -1
- package/dist/types/src/plugin-intent/intent.d.ts +0 -63
- package/dist/types/src/plugin-intent/intent.d.ts.map +0 -1
- package/dist/types/src/plugin-settings/SettingsPlugin.d.ts +0 -2
- package/dist/types/src/plugin-settings/SettingsPlugin.d.ts.map +0 -1
- package/dist/types/src/plugin-settings/actions.d.ts +0 -27
- package/dist/types/src/plugin-settings/actions.d.ts.map +0 -1
- package/dist/types/src/plugin-settings/app-graph-builder.d.ts +0 -4
- 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/intent-resolver.d.ts +0 -4
- package/dist/types/src/plugin-settings/intent-resolver.d.ts.map +0 -1
- package/dist/types/src/plugin-settings/store.d.ts +0 -5
- package/dist/types/src/plugin-settings/store.d.ts.map +0 -1
- package/dist/types/src/plugin-settings/translations.d.ts +0 -10
- package/dist/types/src/plugin-settings/translations.d.ts.map +0 -1
- package/dist/types/src/react/ErrorBoundary.d.ts +0 -31
- package/dist/types/src/react/ErrorBoundary.d.ts.map +0 -1
- package/dist/types/src/react/IntentContext.d.ts +0 -8
- package/dist/types/src/react/IntentContext.d.ts.map +0 -1
- package/dist/types/src/react/PluginManagerProvider.d.ts +0 -10
- package/dist/types/src/react/PluginManagerProvider.d.ts.map +0 -1
- package/dist/types/src/react/Surface.d.ts +0 -12
- package/dist/types/src/react/Surface.d.ts.map +0 -1
- package/dist/types/src/react/Surface.stories.d.ts +0 -16
- package/dist/types/src/react/Surface.stories.d.ts.map +0 -1
- package/dist/types/src/react/common.d.ts +0 -13
- package/dist/types/src/react/common.d.ts.map +0 -1
- package/dist/types/src/react/index.d.ts +0 -7
- package/dist/types/src/react/index.d.ts.map +0 -1
- package/dist/types/src/react/useCapabilities.d.ts +0 -13
- package/dist/types/src/react/useCapabilities.d.ts.map +0 -1
- package/dist/types/src/react/useIntentResolver.d.ts +0 -3
- package/dist/types/src/react/useIntentResolver.d.ts.map +0 -1
- package/dist/types/src/worker.d.ts +0 -4
- package/dist/types/src/worker.d.ts.map +0 -1
- package/src/App.tsx +0 -276
- package/src/common/collaboration.ts +0 -21
- package/src/common/events.ts +0 -77
- package/src/common/file.ts +0 -22
- package/src/common/graph.ts +0 -30
- package/src/common/layout.ts +0 -278
- package/src/common/surface.ts +0 -86
- package/src/core/capabilities.test.ts +0 -136
- package/src/core/capabilities.ts +0 -254
- package/src/core/manager.test.ts +0 -515
- package/src/core/manager.ts +0 -519
- package/src/playground/debug/Debug.tsx +0 -39
- package/src/playground/debug/plugin.ts +0 -17
- package/src/playground/generator/Main.tsx +0 -71
- package/src/playground/generator/Toolbar.tsx +0 -46
- package/src/playground/generator/generator.ts +0 -48
- package/src/playground/generator/index.ts +0 -6
- package/src/playground/generator/plugin.ts +0 -23
- package/src/playground/layout/Layout.tsx +0 -33
- package/src/playground/layout/plugin.ts +0 -17
- package/src/playground/logger/Toolbar.tsx +0 -29
- package/src/playground/logger/plugin.ts +0 -36
- package/src/playground/logger/schema.ts +0 -12
- package/src/playground/playground.stories.tsx +0 -42
- package/src/plugin-intent/IntentPlugin.ts +0 -20
- package/src/plugin-intent/actions.ts +0 -33
- package/src/plugin-intent/errors.ts +0 -39
- package/src/plugin-intent/index.ts +0 -8
- package/src/plugin-intent/intent-dispatcher.test.ts +0 -279
- package/src/plugin-intent/intent-dispatcher.ts +0 -333
- package/src/plugin-intent/intent.ts +0 -154
- package/src/plugin-settings/SettingsPlugin.ts +0 -35
- package/src/plugin-settings/actions.ts +0 -29
- package/src/plugin-settings/app-graph-builder.ts +0 -157
- package/src/plugin-settings/index.ts +0 -6
- package/src/plugin-settings/intent-resolver.ts +0 -34
- package/src/plugin-settings/store.ts +0 -33
- package/src/plugin-settings/translations.ts +0 -19
- package/src/react/ErrorBoundary.tsx +0 -45
- package/src/react/IntentContext.tsx +0 -34
- package/src/react/Surface.stories.tsx +0 -96
- package/src/react/Surface.tsx +0 -77
- package/src/react/common.ts +0 -12
- package/src/react/index.ts +0 -10
- package/src/react/useCapabilities.ts +0 -30
- package/src/react/useIntentResolver.ts +0 -22
- package/src/worker.ts +0 -11
- /package/dist/lib/browser/{intent-dispatcher-LSYQZSEB.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
- /package/dist/lib/browser/{worker.mjs.map → chunk-YAFEA4GV.mjs.map} +0 -0
- /package/dist/lib/{node-esm/intent-dispatcher-6CYNGPSW.mjs.map → browser/common/activation-events.mjs.map} +0 -0
- /package/dist/lib/{node-esm/worker.mjs.map → browser/common/capabilities.mjs.map} +0 -0
|
@@ -2,117 +2,177 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
6
|
-
import { type
|
|
7
|
-
import
|
|
8
|
-
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
import { type
|
|
15
|
-
import
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
import {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
5
|
+
import type * as Command$ from '@effect/cli/Command';
|
|
6
|
+
import { type Atom, type Registry } from '@effect-atom/atom-react';
|
|
7
|
+
import * as Effect from 'effect/Effect';
|
|
8
|
+
import type * as Layer$ from 'effect/Layer';
|
|
9
|
+
import type * as ManagedRuntime$ from 'effect/ManagedRuntime';
|
|
10
|
+
import type { FC, PropsWithChildren } from 'react';
|
|
11
|
+
|
|
12
|
+
import type { OperationInvoker as OperationInvoker$, OperationResolver as OperationResolver$ } from '@dxos/operation';
|
|
13
|
+
|
|
14
|
+
import { Capability as Capability$, type PluginManager as PluginManager$ } from '../core';
|
|
15
|
+
import type {
|
|
16
|
+
HistoryTracker as HistoryTracker$,
|
|
17
|
+
UndoMapping as UndoMapping$,
|
|
18
|
+
UndoRegistry as UndoRegistry$,
|
|
19
|
+
} from '../plugin-operation';
|
|
20
|
+
import type { Surface } from '../ui';
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Null capability.
|
|
24
|
+
* @category Capability
|
|
25
|
+
*/
|
|
26
|
+
export const Null = Capability$.make<null>('dxos.org/app-framework/capability/null');
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* @category Capability
|
|
30
|
+
*/
|
|
31
|
+
export const PluginManager = Capability$.make<PluginManager$.PluginManager>(
|
|
32
|
+
'dxos.org/app-framework/capability/plugin-manager',
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @category Capability
|
|
37
|
+
*/
|
|
38
|
+
export const AtomRegistry = Capability$.make<Registry.Registry>('dxos.org/app-framework/capability/atom-registry');
|
|
39
|
+
|
|
40
|
+
export type ReactContext = Readonly<{
|
|
41
|
+
id: string;
|
|
42
|
+
dependsOn?: string[];
|
|
43
|
+
context: FC<PropsWithChildren>;
|
|
44
|
+
}>;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @category Capability
|
|
48
|
+
*/
|
|
49
|
+
export const ReactContext = Capability$.make<ReactContext>('dxos.org/app-framework/capability/react-context');
|
|
50
|
+
|
|
51
|
+
export type ReactRoot = Readonly<{ id: string; root: FC<PropsWithChildren> }>;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* @category Capability
|
|
55
|
+
*/
|
|
56
|
+
export const ReactRoot = Capability$.make<ReactRoot>('dxos.org/app-framework/capability/react-root');
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Surface definitions that can be either React components or Web Components.
|
|
60
|
+
*/
|
|
61
|
+
export type ReactSurface = Surface.Definition | readonly Surface.Definition[];
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @category Capability
|
|
65
|
+
*/
|
|
66
|
+
export const ReactSurface = Capability$.make<ReactSurface>('dxos.org/app-framework/common/react-surface');
|
|
67
|
+
|
|
68
|
+
export type AnyCommand = Command$.Command<any, any, any, any>;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* @category Capability
|
|
72
|
+
*/
|
|
73
|
+
export const Command = Capability$.make<AnyCommand>('dxos.org/app-framework/capability/command');
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* @category Capability
|
|
77
|
+
*/
|
|
78
|
+
export const Layer = Capability$.make<Layer$.Layer<any, any, any>>('dxos.org/app-framework/capability/layer');
|
|
79
|
+
|
|
80
|
+
export type ManagedRuntime = ManagedRuntime$.ManagedRuntime<any, any>;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* @category Capability
|
|
84
|
+
*/
|
|
85
|
+
export const ManagedRuntime = Capability$.make<ManagedRuntime>('dxos.org/app-framework/capability/managed-runtime');
|
|
86
|
+
|
|
87
|
+
//
|
|
88
|
+
// Operation System Capabilities
|
|
89
|
+
//
|
|
90
|
+
|
|
91
|
+
export type OperationResolver = OperationResolver$.OperationResolver<any, any, any, any>;
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Handler registration for operations - contributed by plugins.
|
|
95
|
+
* @category Capability
|
|
96
|
+
*/
|
|
97
|
+
export const OperationResolver = Capability$.make<OperationResolver[]>(
|
|
98
|
+
'dxos.org/app-framework/capability/operation-resolver',
|
|
99
|
+
);
|
|
100
|
+
|
|
101
|
+
export type UndoMapping = UndoMapping$.UndoMapping;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Undo mapping registration - contributed by plugins.
|
|
105
|
+
* @category Capability
|
|
106
|
+
*/
|
|
107
|
+
export const UndoMapping = Capability$.make<UndoMapping[]>('dxos.org/app-framework/capability/undo-mapping');
|
|
108
|
+
|
|
109
|
+
export type OperationInvoker = OperationInvoker$.OperationInvoker;
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Operation invoker - provided by OperationPlugin.
|
|
113
|
+
* @category Capability
|
|
114
|
+
*/
|
|
115
|
+
export const OperationInvoker = Capability$.make<OperationInvoker>(
|
|
116
|
+
'dxos.org/app-framework/capability/operation-invoker',
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
export type UndoRegistry = UndoRegistry$.UndoRegistry;
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Undo registry - provided by OperationPlugin.
|
|
123
|
+
* @category Capability
|
|
124
|
+
*/
|
|
125
|
+
export const UndoRegistry = Capability$.make<UndoRegistry>('dxos.org/app-framework/capability/undo-registry');
|
|
126
|
+
|
|
127
|
+
export type HistoryTracker = HistoryTracker$.HistoryTracker;
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* History tracker - provided by OperationPlugin.
|
|
131
|
+
* @category Capability
|
|
132
|
+
*/
|
|
133
|
+
export const HistoryTracker = Capability$.make<HistoryTracker>('dxos.org/app-framework/capability/history-tracker');
|
|
134
|
+
|
|
135
|
+
//
|
|
136
|
+
// Atom Capability Helpers
|
|
137
|
+
//
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Get the current value of an atom capability.
|
|
141
|
+
* @example const settings = yield* Capabilities.getAtomValue(ThreadCapabilities.Settings);
|
|
142
|
+
*/
|
|
143
|
+
export const getAtomValue = <T>(
|
|
144
|
+
atomCapability: Capability$.InterfaceDef<Atom.Atom<T>>,
|
|
145
|
+
): Effect.Effect<T, Error, Capability$.Service> =>
|
|
146
|
+
Effect.gen(function* () {
|
|
147
|
+
const registry = yield* Capability$.get(AtomRegistry);
|
|
148
|
+
const atom = yield* Capability$.get(atomCapability);
|
|
149
|
+
return registry.get(atom);
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Update an atom capability value (requires writable atom).
|
|
154
|
+
* @example yield* Capabilities.updateAtomValue(ThreadCapabilities.Settings, (s) => ({ ...s, foo: true }));
|
|
155
|
+
*/
|
|
156
|
+
export const updateAtomValue = <T>(
|
|
157
|
+
atomCapability: Capability$.InterfaceDef<Atom.Writable<T>>,
|
|
158
|
+
fn: (current: T) => T,
|
|
159
|
+
): Effect.Effect<void, Error, Capability$.Service> =>
|
|
160
|
+
Effect.gen(function* () {
|
|
161
|
+
const registry = yield* Capability$.get(AtomRegistry);
|
|
162
|
+
const atom = yield* Capability$.get(atomCapability);
|
|
163
|
+
registry.set(atom, fn(registry.get(atom)));
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Subscribe to an atom capability.
|
|
168
|
+
* @example const unsubscribe = yield* Capabilities.subscribeAtom(ThreadCapabilities.Settings, (value) => ...);
|
|
169
|
+
*/
|
|
170
|
+
export const subscribeAtom = <T>(
|
|
171
|
+
atomCapability: Capability$.InterfaceDef<Atom.Atom<T>>,
|
|
172
|
+
callback: (value: T) => void,
|
|
173
|
+
): Effect.Effect<() => void, Error, Capability$.Service> =>
|
|
174
|
+
Effect.gen(function* () {
|
|
175
|
+
const registry = yield* Capability$.get(AtomRegistry);
|
|
176
|
+
const atom = yield* Capability$.get(atomCapability);
|
|
177
|
+
return registry.subscribe(atom, () => callback(registry.get(atom)));
|
|
178
|
+
});
|
package/src/common/index.ts
CHANGED
|
@@ -2,11 +2,7 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
export * from './capabilities';
|
|
6
|
-
export * from './
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export type * from './graph';
|
|
10
|
-
export * from './layout';
|
|
11
|
-
export * from './surface';
|
|
12
|
-
export * from './translations';
|
|
5
|
+
export * as Capabilities from './capabilities';
|
|
6
|
+
export * as ActivationEvents from './activation-events';
|
|
7
|
+
export { UndoOperation } from './operations';
|
|
8
|
+
export { Label } from './translations';
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import * as Schema from 'effect/Schema';
|
|
6
|
+
|
|
7
|
+
import { Operation } from '@dxos/operation';
|
|
8
|
+
|
|
9
|
+
import { Capability } from '../core';
|
|
10
|
+
|
|
11
|
+
import { Label } from './translations';
|
|
12
|
+
|
|
13
|
+
const UNDO_NAMESPACE = 'dxos.org/app-framework/undo';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Operations related to undo/history functionality.
|
|
17
|
+
*/
|
|
18
|
+
export namespace UndoOperation {
|
|
19
|
+
/**
|
|
20
|
+
* Show an undo toast notification.
|
|
21
|
+
* Fired by HistoryTracker when an undoable operation is tracked.
|
|
22
|
+
*/
|
|
23
|
+
export const ShowUndo = Operation.make({
|
|
24
|
+
meta: {
|
|
25
|
+
key: `${UNDO_NAMESPACE}/operation/show-undo`,
|
|
26
|
+
name: 'Show Undo',
|
|
27
|
+
description: 'Show an undo toast notification.',
|
|
28
|
+
},
|
|
29
|
+
executionMode: 'sync',
|
|
30
|
+
services: [Capability.Service],
|
|
31
|
+
schema: {
|
|
32
|
+
input: Schema.Struct({
|
|
33
|
+
message: Schema.optional(Label.annotations({ description: 'The message to display in the undo toast.' })),
|
|
34
|
+
}),
|
|
35
|
+
output: Schema.Void,
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
}
|
|
@@ -2,16 +2,24 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
export const ResourceKey = Schema.Union(Schema.String, Schema.Record({ key: Schema.String, value: Schema.Any }));
|
|
8
|
-
export type ResourceKey = Schema.Schema.Type<typeof ResourceKey>;
|
|
9
|
-
|
|
10
|
-
export const ResourceLanguage = Schema.Record({ key: Schema.String, value: ResourceKey });
|
|
11
|
-
export type ResourceLanguage = Schema.Schema.Type<typeof ResourceLanguage>;
|
|
5
|
+
import * as Schema from 'effect/Schema';
|
|
12
6
|
|
|
13
7
|
/**
|
|
14
|
-
* A
|
|
8
|
+
* A Label represents translatable text - either a simple string or a tuple of [key, options].
|
|
15
9
|
*/
|
|
16
|
-
export const
|
|
17
|
-
|
|
10
|
+
export const Label = Schema.Union(
|
|
11
|
+
Schema.String,
|
|
12
|
+
Schema.mutable(
|
|
13
|
+
Schema.Tuple(
|
|
14
|
+
Schema.String,
|
|
15
|
+
Schema.mutable(
|
|
16
|
+
Schema.Struct({
|
|
17
|
+
ns: Schema.String,
|
|
18
|
+
count: Schema.optional(Schema.Number),
|
|
19
|
+
defaultValue: Schema.optional(Schema.String),
|
|
20
|
+
}),
|
|
21
|
+
),
|
|
22
|
+
),
|
|
23
|
+
),
|
|
24
|
+
);
|
|
25
|
+
export type Label = Schema.Schema.Type<typeof Label>;
|
package/src/context.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { createContext } from '@dxos/web-context';
|
|
6
|
+
|
|
7
|
+
import { type PluginManager } from './core';
|
|
8
|
+
|
|
9
|
+
export const PluginManagerContext = createContext<PluginManager.PluginManager>('dxos.org/app-framework/plugin-manager');
|
|
@@ -16,7 +16,7 @@ export type ActivationEvent = {
|
|
|
16
16
|
/**
|
|
17
17
|
* An activation event that can be a single event, or a combination of events.
|
|
18
18
|
*/
|
|
19
|
-
export type
|
|
19
|
+
export type Events =
|
|
20
20
|
| ActivationEvent
|
|
21
21
|
| { type: 'one-of'; events: ActivationEvent[] }
|
|
22
22
|
| { type: 'all-of'; events: ActivationEvent[] };
|
|
@@ -24,7 +24,7 @@ export type ActivationEvents =
|
|
|
24
24
|
/**
|
|
25
25
|
* Helper to define an activation event.
|
|
26
26
|
*/
|
|
27
|
-
export const
|
|
27
|
+
export const make = (id: string, specifier?: string) => {
|
|
28
28
|
return { id, specifier } as ActivationEvent;
|
|
29
29
|
};
|
|
30
30
|
|
|
@@ -46,16 +46,16 @@ export const allOf = (...events: ActivationEvent[]) => ({ type: 'all-of' as cons
|
|
|
46
46
|
/**
|
|
47
47
|
* Helper to check if an activation event is a one-of event.
|
|
48
48
|
*/
|
|
49
|
-
export const isOneOf = (events:
|
|
49
|
+
export const isOneOf = (events: Events): events is { type: 'one-of'; events: ActivationEvent[] } =>
|
|
50
50
|
'type' in events && events.type === 'one-of';
|
|
51
51
|
|
|
52
52
|
/**
|
|
53
53
|
* Helper to check if an activation event is an all-of event.
|
|
54
54
|
*/
|
|
55
|
-
export const isAllOf = (events:
|
|
55
|
+
export const isAllOf = (events: Events): events is { type: 'all-of'; events: ActivationEvent[] } =>
|
|
56
56
|
'type' in events && events.type === 'all-of';
|
|
57
57
|
|
|
58
58
|
/**
|
|
59
59
|
* Helper to get the events from an activation event.
|
|
60
60
|
*/
|
|
61
|
-
export const getEvents = (events:
|
|
61
|
+
export const getEvents = (events: Events) => ('type' in events ? events.events : [events]);
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { describe, expect, it, onTestFinished } from '@effect/vitest';
|
|
6
|
+
import { Registry } from '@effect-atom/atom-react';
|
|
7
|
+
import * as Effect from 'effect/Effect';
|
|
8
|
+
|
|
9
|
+
import * as Capability from './capability';
|
|
10
|
+
import * as CapabilityManager from './capability-manager';
|
|
11
|
+
|
|
12
|
+
describe('CapabilityManager', () => {
|
|
13
|
+
it('should return empty array if no capabilities are contributed', () => {
|
|
14
|
+
const registry = Registry.make();
|
|
15
|
+
const capabilityManager = CapabilityManager.make({ registry });
|
|
16
|
+
const interfaceDef = Capability.make<{ example: string }>('@dxos/app-framework/test/example');
|
|
17
|
+
expect(capabilityManager.getAll(interfaceDef)).toEqual([]);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('should throw when getCapability is called and no capability exists', () => {
|
|
21
|
+
const registry = Registry.make();
|
|
22
|
+
const capabilityManager = CapabilityManager.make({ registry });
|
|
23
|
+
const interfaceDef = Capability.make<{ example: string }>('@dxos/app-framework/test/example');
|
|
24
|
+
expect(() => capabilityManager.get(interfaceDef)).toThrow('No capability found');
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it.effect('Capability.get should fail when no capability exists', () =>
|
|
28
|
+
Effect.gen(function* () {
|
|
29
|
+
const registry = Registry.make();
|
|
30
|
+
const capabilityManager = CapabilityManager.make({ registry });
|
|
31
|
+
const interfaceDef = Capability.make<{ example: string }>('@dxos/app-framework/test/example');
|
|
32
|
+
|
|
33
|
+
const result = yield* Capability.get(interfaceDef).pipe(
|
|
34
|
+
Effect.provideService(Capability.Service, capabilityManager),
|
|
35
|
+
Effect.either,
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
expect(result._tag).toEqual('Left');
|
|
39
|
+
}),
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
it('should be able to contribute and request capabilities', () => {
|
|
43
|
+
const registry = Registry.make();
|
|
44
|
+
const capabilityManager = CapabilityManager.make({ registry });
|
|
45
|
+
const interfaceDef = Capability.make<{ example: string }>('@dxos/app-framework/test/example');
|
|
46
|
+
const implementation = { example: 'identifier' };
|
|
47
|
+
capabilityManager.contribute({ interface: interfaceDef, implementation, module: 'test' });
|
|
48
|
+
expect(capabilityManager.getAll(interfaceDef)).toEqual([implementation]);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it('should be able to remove capabilities', () => {
|
|
52
|
+
const registry = Registry.make();
|
|
53
|
+
const capabilityManager = CapabilityManager.make({ registry });
|
|
54
|
+
const interfaceDef = Capability.make<{ example: string }>('@dxos/app-framework/test/example');
|
|
55
|
+
const implementation = { example: 'identifier' };
|
|
56
|
+
capabilityManager.contribute({ interface: interfaceDef, implementation, module: 'test' });
|
|
57
|
+
expect(capabilityManager.getAll(interfaceDef)).toEqual([implementation]);
|
|
58
|
+
capabilityManager.remove(interfaceDef, implementation);
|
|
59
|
+
expect(capabilityManager.getAll(interfaceDef)).toEqual([]);
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it('should be able to contribute and request multiple implementations', () => {
|
|
63
|
+
const registry = Registry.make();
|
|
64
|
+
const capabilityManager = CapabilityManager.make({ registry });
|
|
65
|
+
const interfaceDef = Capability.make<{ example: string }>('@dxos/app-framework/test/example');
|
|
66
|
+
const implementation1 = { example: 'first' };
|
|
67
|
+
const implementation2 = { example: 'second' };
|
|
68
|
+
capabilityManager.contribute({ interface: interfaceDef, implementation: implementation1, module: 'test' });
|
|
69
|
+
capabilityManager.contribute({ interface: interfaceDef, implementation: implementation2, module: 'test' });
|
|
70
|
+
expect(capabilityManager.getAll(interfaceDef)).toEqual([implementation1, implementation2]);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it('should be able to request multiple capabilities', () => {
|
|
74
|
+
const registry = Registry.make();
|
|
75
|
+
const capabilityManager = CapabilityManager.make({ registry });
|
|
76
|
+
const interfaceDef1 = Capability.make<{ one: number }>('@dxos/app-framework/test/one');
|
|
77
|
+
const interfaceDef2 = Capability.make<{ two: number }>('@dxos/app-framework/test/two');
|
|
78
|
+
const implementation1 = { one: 1 };
|
|
79
|
+
const implementation2 = { two: 2 };
|
|
80
|
+
capabilityManager.contribute({ interface: interfaceDef1, implementation: implementation1, module: 'test' });
|
|
81
|
+
capabilityManager.contribute({ interface: interfaceDef2, implementation: implementation2, module: 'test' });
|
|
82
|
+
expect(capabilityManager.getAll(interfaceDef1)).toEqual([implementation1]);
|
|
83
|
+
expect(capabilityManager.getAll(interfaceDef2)).toEqual([implementation2]);
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
it('should be reactive', () => {
|
|
87
|
+
const registry = Registry.make();
|
|
88
|
+
const capabilityManager = CapabilityManager.make({ registry });
|
|
89
|
+
const interfaceDef = Capability.make<{ example: string }>('@dxos/app-framework/test/example');
|
|
90
|
+
|
|
91
|
+
let count = 0;
|
|
92
|
+
const cancel = registry.subscribe(capabilityManager.atom(interfaceDef), () => {
|
|
93
|
+
count++;
|
|
94
|
+
});
|
|
95
|
+
onTestFinished(() => cancel());
|
|
96
|
+
expect(count).toEqual(0);
|
|
97
|
+
|
|
98
|
+
registry.get(capabilityManager.atom(interfaceDef));
|
|
99
|
+
expect(count).toEqual(1);
|
|
100
|
+
|
|
101
|
+
const implementation = { example: 'identifier' };
|
|
102
|
+
capabilityManager.contribute({ interface: interfaceDef, implementation, module: 'test' });
|
|
103
|
+
expect(count).toEqual(2);
|
|
104
|
+
|
|
105
|
+
capabilityManager.remove(interfaceDef, implementation);
|
|
106
|
+
expect(count).toEqual(3);
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
it('should not be reactive to changes within the implementation', () => {
|
|
110
|
+
const registry = Registry.make();
|
|
111
|
+
const capabilityManager = CapabilityManager.make({ registry });
|
|
112
|
+
const interfaceDef = Capability.make<{ example: string }>('@dxos/app-framework/test/example');
|
|
113
|
+
|
|
114
|
+
let count = 0;
|
|
115
|
+
const cancel = registry.subscribe(capabilityManager.atom(interfaceDef), () => {
|
|
116
|
+
count++;
|
|
117
|
+
});
|
|
118
|
+
onTestFinished(() => cancel());
|
|
119
|
+
expect(count).toEqual(0);
|
|
120
|
+
|
|
121
|
+
registry.get(capabilityManager.atom(interfaceDef));
|
|
122
|
+
expect(count).toEqual(1);
|
|
123
|
+
|
|
124
|
+
const implementation = { example: 'identifier' };
|
|
125
|
+
capabilityManager.contribute({ interface: interfaceDef, implementation, module: 'test' });
|
|
126
|
+
expect(count).toEqual(2);
|
|
127
|
+
|
|
128
|
+
implementation.example = 'updated';
|
|
129
|
+
expect(count).toEqual(2);
|
|
130
|
+
|
|
131
|
+
const capabilities = capabilityManager.getAll(interfaceDef);
|
|
132
|
+
expect(capabilities).toEqual([implementation]);
|
|
133
|
+
expect(capabilities[0].example).toEqual('updated');
|
|
134
|
+
expect(count).toEqual(2);
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
it.effect('should be able to wait for a capability', () =>
|
|
138
|
+
Effect.gen(function* () {
|
|
139
|
+
const registry = Registry.make();
|
|
140
|
+
const capabilityManager = CapabilityManager.make({ registry });
|
|
141
|
+
const interfaceDef = Capability.make<{ example: string }>('@dxos/app-framework/test/example');
|
|
142
|
+
|
|
143
|
+
expect(capabilityManager.getAll(interfaceDef)).toHaveLength(0);
|
|
144
|
+
const capability = capabilityManager.waitFor(interfaceDef);
|
|
145
|
+
|
|
146
|
+
const implementation = { example: 'identifier' };
|
|
147
|
+
capabilityManager.contribute({ interface: interfaceDef, implementation, module: 'test' });
|
|
148
|
+
expect(yield* capability).toEqual(implementation);
|
|
149
|
+
}),
|
|
150
|
+
);
|
|
151
|
+
});
|