@dxos/app-framework 0.8.4-main.bc674ce → 0.8.4-main.c351d160a8
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-5OFLR7J4.mjs +34 -0
- package/dist/lib/browser/capability-5OFLR7J4.mjs.map +7 -0
- package/dist/lib/browser/{capability-7PCNSWBT.mjs → capability-ZHQDZRP5.mjs} +15 -11
- package/dist/lib/browser/capability-ZHQDZRP5.mjs.map +7 -0
- package/dist/lib/browser/{chunk-PKQT6C53.mjs → chunk-272IPLHQ.mjs} +1 -1
- package/dist/lib/browser/{chunk-PKQT6C53.mjs.map → chunk-272IPLHQ.mjs.map} +1 -1
- package/dist/lib/browser/{chunk-FMZN33N4.mjs → chunk-3VXJONTI.mjs} +304 -178
- package/dist/lib/browser/chunk-3VXJONTI.mjs.map +7 -0
- package/dist/lib/browser/{chunk-XYNO72GQ.mjs → chunk-7AL6SKIV.mjs} +459 -477
- package/dist/lib/browser/chunk-7AL6SKIV.mjs.map +7 -0
- package/dist/lib/browser/{chunk-TCLLRCS3.mjs → chunk-GH3M2LIW.mjs} +10 -7
- package/dist/lib/browser/chunk-GH3M2LIW.mjs.map +7 -0
- package/dist/lib/browser/{chunk-7IQHKD4U.mjs → chunk-JGWCBVKJ.mjs} +2 -2
- package/dist/lib/browser/chunk-JGWCBVKJ.mjs.map +7 -0
- package/dist/lib/browser/chunk-M5IC326L.mjs +34 -0
- package/dist/lib/browser/chunk-M5IC326L.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-TIEBZMTF.mjs +44 -0
- package/dist/lib/browser/chunk-TIEBZMTF.mjs.map +7 -0
- package/dist/lib/browser/chunk-WEBSGU5L.mjs +80 -0
- package/dist/lib/browser/chunk-WEBSGU5L.mjs.map +7 -0
- package/dist/lib/browser/chunk-YAFEA4GV.mjs +1 -0
- package/dist/lib/browser/{chunk-6Y7PZV72.mjs → chunk-YNFPIQGB.mjs} +2 -3
- package/dist/lib/browser/{chunk-6Y7PZV72.mjs.map → chunk-YNFPIQGB.mjs.map} +3 -3
- 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 +1 -1
- package/dist/lib/browser/core/capability.mjs +1 -1
- package/dist/lib/browser/core/plugin-manager.mjs +4 -4
- package/dist/lib/browser/core/plugin.mjs +6 -4
- package/dist/lib/browser/index.mjs +37 -132
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/{invoker-capability-SZRSTHEH.mjs → invoker-capability-YTTQ2OBB.mjs} +16 -12
- package/dist/lib/browser/invoker-capability-YTTQ2OBB.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +55 -34
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/browser/{react → ui}/index.mjs +18 -19
- package/dist/lib/node-esm/capability-CRHZKL6T.mjs +35 -0
- package/dist/lib/node-esm/capability-CRHZKL6T.mjs.map +7 -0
- package/dist/lib/node-esm/{capability-CFLQ2QQU.mjs → capability-W5C5464H.mjs} +15 -11
- package/dist/lib/node-esm/capability-W5C5464H.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-663A54LQ.mjs → chunk-3D66SZHP.mjs} +2 -2
- package/dist/lib/node-esm/chunk-3D66SZHP.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-7OWSHPYK.mjs → chunk-6REV5DE7.mjs} +1 -1
- package/dist/lib/node-esm/{chunk-7OWSHPYK.mjs.map → chunk-6REV5DE7.mjs.map} +1 -1
- package/dist/lib/node-esm/{chunk-XYQTBFPA.mjs → chunk-CMDON4NG.mjs} +304 -178
- package/dist/lib/node-esm/chunk-CMDON4NG.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-6WXBT3EC.mjs → chunk-I7FZT4A7.mjs} +459 -477
- package/dist/lib/node-esm/chunk-I7FZT4A7.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-GT6OKM5I.mjs → chunk-LHCJGNXK.mjs} +10 -7
- package/dist/lib/node-esm/chunk-LHCJGNXK.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-NHXBSAQR.mjs +35 -0
- package/dist/lib/node-esm/chunk-NHXBSAQR.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-STMXUEPO.mjs → chunk-SB5ODNPX.mjs} +2 -3
- package/dist/lib/node-esm/{chunk-STMXUEPO.mjs.map → chunk-SB5ODNPX.mjs.map} +3 -3
- package/dist/lib/node-esm/chunk-SCDGIGGU.mjs +45 -0
- package/dist/lib/node-esm/chunk-SCDGIGGU.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-SQICGJBW.mjs +81 -0
- package/dist/lib/node-esm/chunk-SQICGJBW.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 +1 -1
- package/dist/lib/node-esm/core/capability.mjs +1 -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/index.mjs +37 -132
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/{invoker-capability-PNMA5JOS.mjs → invoker-capability-BU26474T.mjs} +16 -12
- package/dist/lib/node-esm/invoker-capability-BU26474T.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs +55 -34
- package/dist/lib/node-esm/testing/index.mjs.map +3 -3
- package/dist/lib/node-esm/{react → ui}/index.mjs +18 -19
- package/dist/lib/node-esm/ui/index.mjs.map +7 -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 +115 -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 +1 -348
- 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/capability.d.ts +7 -7
- package/dist/types/src/core/capability.d.ts.map +1 -1
- package/dist/types/src/core/plugin-manager.d.ts +6 -0
- 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/index.d.ts +1 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/plugin-operation/history/capability.d.ts +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-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/{react → ui/components/App}/App.d.ts +1 -1
- 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/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/{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 +7 -0
- package/dist/types/src/ui/hooks/index.d.ts.map +1 -0
- package/dist/types/src/{react → ui/hooks}/useApp.d.ts +14 -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 → ui/hooks}/useOperationResolver.d.ts +2 -2
- package/dist/types/src/ui/hooks/useOperationResolver.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/tsconfig.tsbuildinfo +1 -1
- package/moon.yml +6 -6
- package/package.json +72 -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 +178 -0
- package/src/common/index.ts +4 -9
- package/src/common/operations.ts +2 -376
- package/src/common/translations.ts +0 -12
- package/src/context.ts +1 -1
- package/src/core/activation-event.ts +1 -1
- package/src/core/capability.ts +9 -9
- package/src/core/plugin-manager.test.ts +292 -44
- package/src/core/plugin-manager.ts +326 -154
- package/src/core/plugin.ts +10 -2
- package/src/index.ts +1 -3
- package/src/plugin-operation/OperationPlugin.ts +5 -5
- package/src/plugin-operation/history/capability.ts +5 -5
- package/src/plugin-operation/history/undo-mapping.ts +6 -3
- package/src/plugin-operation/invoker-capability.ts +5 -5
- package/src/plugin-operation/meta.ts +1 -1
- package/src/plugin-runtime/RuntimePlugin.ts +4 -4
- 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 -6
- package/src/testing/withPluginManager.tsx +46 -19
- package/src/ui/components/App/App.stories.tsx +92 -0
- package/src/{react → ui/components/App}/App.tsx +6 -9
- 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} +18 -16
- package/src/{react/Surface.tsx → ui/components/Surface/SurfaceComponent.tsx} +36 -56
- package/src/{react → ui/components/Surface}/SurfaceInfo.tsx +2 -2
- package/src/ui/components/Surface/context.ts +12 -0
- package/src/ui/components/Surface/index.ts +20 -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 +10 -0
- package/src/ui/hooks/useApp.test.tsx +159 -0
- package/src/{react → ui/hooks}/useApp.tsx +39 -29
- package/src/{react → ui/hooks}/useCapabilities.ts +9 -5
- package/src/{react → ui/hooks}/useOperationResolver.ts +5 -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/tsconfig.json +2 -29
- package/tsconfig.node.json +1 -3
- 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-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-TCLLRCS3.mjs.map +0 -7
- 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.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.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-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.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.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/dist/lib/{node-esm/react/index.mjs.map → browser/chunk-YAFEA4GV.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 → ui}/index.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
|
@@ -6,7 +6,7 @@ import * as Effect from 'effect/Effect';
|
|
|
6
6
|
|
|
7
7
|
import { OperationInvoker } from '@dxos/operation';
|
|
8
8
|
|
|
9
|
-
import
|
|
9
|
+
import { ActivationEvents, Capabilities } from '../common';
|
|
10
10
|
import { Capability, Plugin } from '../core';
|
|
11
11
|
|
|
12
12
|
//
|
|
@@ -20,14 +20,14 @@ export default Capability.makeModule(
|
|
|
20
20
|
const pluginManager = yield* Plugin.Service;
|
|
21
21
|
|
|
22
22
|
// Get the ManagedRuntime capability (should be available since we activate after ManagedRuntimeReady).
|
|
23
|
-
const managedRuntimes = yield* Capability.getAll(
|
|
23
|
+
const managedRuntimes = yield* Capability.getAll(Capabilities.ManagedRuntime);
|
|
24
24
|
const managedRuntime = managedRuntimes.length > 0 ? managedRuntimes[0] : undefined;
|
|
25
25
|
|
|
26
26
|
const invoker = OperationInvoker.make(
|
|
27
27
|
() =>
|
|
28
28
|
Effect.gen(function* () {
|
|
29
|
-
yield* Plugin.activate(
|
|
30
|
-
return (yield* Capability.getAll(
|
|
29
|
+
yield* Plugin.activate(ActivationEvents.SetupOperationResolver);
|
|
30
|
+
return (yield* Capability.getAll(Capabilities.OperationResolver)).flat();
|
|
31
31
|
}).pipe(
|
|
32
32
|
Effect.provideService(Capability.Service, capabilityManager),
|
|
33
33
|
Effect.provideService(Plugin.Service, pluginManager),
|
|
@@ -35,6 +35,6 @@ export default Capability.makeModule(
|
|
|
35
35
|
managedRuntime,
|
|
36
36
|
);
|
|
37
37
|
|
|
38
|
-
return Capability.contributes(
|
|
38
|
+
return Capability.contributes(Capabilities.OperationInvoker, invoker);
|
|
39
39
|
}),
|
|
40
40
|
);
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { type Plugin } from '../core';
|
|
6
6
|
|
|
7
7
|
export const meta: Plugin.Meta = {
|
|
8
|
-
id: 'dxos.
|
|
8
|
+
id: 'org.dxos.plugin.operation',
|
|
9
9
|
name: 'Operation Plugin',
|
|
10
10
|
description: 'Provides operation invocation, undo registry, and history tracking.',
|
|
11
11
|
};
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import { ActivationEvents } from '../common';
|
|
6
6
|
import { Capability, Plugin } from '../core';
|
|
7
7
|
|
|
8
8
|
import { meta } from './meta';
|
|
@@ -11,9 +11,9 @@ const ManagedRuntimeCapability = Capability.lazy('ManagedRuntime', () => import(
|
|
|
11
11
|
|
|
12
12
|
export const RuntimePlugin = Plugin.define(meta).pipe(
|
|
13
13
|
Plugin.addModule({
|
|
14
|
-
activatesOn:
|
|
15
|
-
activatesBefore: [
|
|
16
|
-
activatesAfter: [
|
|
14
|
+
activatesOn: ActivationEvents.Startup,
|
|
15
|
+
activatesBefore: [ActivationEvents.SetupLayer],
|
|
16
|
+
activatesAfter: [ActivationEvents.ManagedRuntimeReady],
|
|
17
17
|
activate: ManagedRuntimeCapability,
|
|
18
18
|
}),
|
|
19
19
|
Plugin.make,
|
|
@@ -6,7 +6,7 @@ import * as Effect from 'effect/Effect';
|
|
|
6
6
|
import * as Layer from 'effect/Layer';
|
|
7
7
|
import * as ManagedRuntime from 'effect/ManagedRuntime';
|
|
8
8
|
|
|
9
|
-
import
|
|
9
|
+
import { ActivationEvents, Capabilities } from '../common';
|
|
10
10
|
import { Capability, Plugin } from '../core';
|
|
11
11
|
|
|
12
12
|
//
|
|
@@ -22,10 +22,10 @@ export default Capability.makeModule(
|
|
|
22
22
|
const pluginManager = yield* Plugin.Service;
|
|
23
23
|
|
|
24
24
|
// Trigger setup event so plugins can contribute their layers.
|
|
25
|
-
yield* Plugin.activate(
|
|
25
|
+
yield* Plugin.activate(ActivationEvents.SetupLayer);
|
|
26
26
|
|
|
27
27
|
// Gather all contributed layers.
|
|
28
|
-
const layers = yield* Capability.getAll(
|
|
28
|
+
const layers = yield* Capability.getAll(Capabilities.Layer);
|
|
29
29
|
|
|
30
30
|
// Create layers that provide Capability.Service and Plugin.Service.
|
|
31
31
|
const capabilityServiceLayer = Layer.succeed(Capability.Service, capabilityManager);
|
|
@@ -46,8 +46,8 @@ export default Capability.makeModule(
|
|
|
46
46
|
);
|
|
47
47
|
|
|
48
48
|
// Create the managed runtime from the composed layer.
|
|
49
|
-
const runtime = ManagedRuntime.make(composedLayer) as
|
|
49
|
+
const runtime = ManagedRuntime.make(composedLayer) as Capabilities.ManagedRuntime;
|
|
50
50
|
|
|
51
|
-
return Capability.contributes(
|
|
51
|
+
return Capability.contributes(Capabilities.ManagedRuntime, runtime);
|
|
52
52
|
}),
|
|
53
53
|
);
|
package/src/testing/service.ts
CHANGED
|
@@ -7,7 +7,7 @@ import * as Layer from 'effect/Layer';
|
|
|
7
7
|
|
|
8
8
|
import { invariant } from '@dxos/invariant';
|
|
9
9
|
|
|
10
|
-
import
|
|
10
|
+
import { ActivationEvents, Capabilities } from '../common';
|
|
11
11
|
import { Plugin, PluginManager } from '../core';
|
|
12
12
|
|
|
13
13
|
/**
|
|
@@ -34,18 +34,18 @@ export const fromPlugins = (plugins: Plugin.Plugin[]) =>
|
|
|
34
34
|
});
|
|
35
35
|
|
|
36
36
|
manager.capabilities.contribute({
|
|
37
|
-
interface:
|
|
37
|
+
interface: Capabilities.PluginManager,
|
|
38
38
|
implementation: manager,
|
|
39
|
-
module: 'dxos.
|
|
39
|
+
module: 'org.dxos.app-framework.plugin-manager',
|
|
40
40
|
});
|
|
41
41
|
|
|
42
42
|
manager.capabilities.contribute({
|
|
43
|
-
interface:
|
|
43
|
+
interface: Capabilities.AtomRegistry,
|
|
44
44
|
implementation: manager.registry,
|
|
45
|
-
module: 'dxos.
|
|
45
|
+
module: 'org.dxos.app-framework.atom-registry',
|
|
46
46
|
});
|
|
47
47
|
|
|
48
|
-
yield* manager.activate(
|
|
48
|
+
yield* manager.activate(ActivationEvents.Startup);
|
|
49
49
|
|
|
50
50
|
return manager;
|
|
51
51
|
}),
|
|
@@ -7,9 +7,9 @@ import React from 'react';
|
|
|
7
7
|
|
|
8
8
|
import { withTheme } from '@dxos/react-ui/testing';
|
|
9
9
|
|
|
10
|
-
import
|
|
10
|
+
import { Capabilities } from '../common';
|
|
11
11
|
import { Capability } from '../core';
|
|
12
|
-
import { Surface } from '../
|
|
12
|
+
import { Surface } from '../ui';
|
|
13
13
|
|
|
14
14
|
import { withPluginManager } from './withPluginManager';
|
|
15
15
|
|
|
@@ -18,7 +18,7 @@ const DefaultStory = () => {
|
|
|
18
18
|
return (
|
|
19
19
|
<div>
|
|
20
20
|
<div>Hello</div>
|
|
21
|
-
<Surface role='main' />
|
|
21
|
+
<Surface.Surface role='main' />
|
|
22
22
|
</div>
|
|
23
23
|
);
|
|
24
24
|
};
|
|
@@ -27,12 +27,12 @@ const meta = {
|
|
|
27
27
|
title: 'sdk/app-framework/withPluginManager',
|
|
28
28
|
render: DefaultStory,
|
|
29
29
|
decorators: [
|
|
30
|
-
withTheme,
|
|
30
|
+
withTheme(),
|
|
31
31
|
withPluginManager({
|
|
32
32
|
capabilities: [
|
|
33
33
|
Capability.contributes(
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
Capabilities.ReactSurface,
|
|
35
|
+
Surface.create({
|
|
36
36
|
id: 'test',
|
|
37
37
|
role: 'main',
|
|
38
38
|
component: ({ role }) => <span>{JSON.stringify({ role })}</span>,
|
|
@@ -4,15 +4,16 @@
|
|
|
4
4
|
|
|
5
5
|
import { type Decorator, type StoryContext } from '@storybook/react';
|
|
6
6
|
import * as Effect from 'effect/Effect';
|
|
7
|
-
import React, { useEffect,
|
|
7
|
+
import React, { useEffect, useState } from 'react';
|
|
8
8
|
|
|
9
9
|
import { raise } from '@dxos/debug';
|
|
10
|
+
import { runAndForwardErrors } from '@dxos/effect';
|
|
10
11
|
import { useAsyncEffect } from '@dxos/react-hooks';
|
|
11
12
|
import { type MaybeProvider, getProviderValue } from '@dxos/util';
|
|
12
13
|
|
|
13
|
-
import
|
|
14
|
+
import { ActivationEvents, Capabilities } from '../common';
|
|
14
15
|
import { type ActivationEvent, Capability, type CapabilityManager, Plugin, PluginManager } from '../core';
|
|
15
|
-
import { type UseAppOptions, useApp } from '../
|
|
16
|
+
import { type UseAppOptions, useApp } from '../ui';
|
|
16
17
|
|
|
17
18
|
/**
|
|
18
19
|
* @internal
|
|
@@ -43,6 +44,13 @@ export const setupPluginManager = ({
|
|
|
43
44
|
return pluginManager;
|
|
44
45
|
};
|
|
45
46
|
|
|
47
|
+
type ManagedPluginManagerState = {
|
|
48
|
+
fireEvents?: (ActivationEvent.ActivationEvent | string)[];
|
|
49
|
+
pluginManager: PluginManager.PluginManager;
|
|
50
|
+
setupEvents?: ActivationEvent.ActivationEvent[];
|
|
51
|
+
storyId: string;
|
|
52
|
+
};
|
|
53
|
+
|
|
46
54
|
export type WithPluginManagerOptions = UseAppOptions & {
|
|
47
55
|
/** @deprecated */
|
|
48
56
|
capabilities?: MaybeProvider<Capability.Any[], CapabilityManager.CapabilityManager>;
|
|
@@ -60,40 +68,59 @@ export type WithPluginManagerInitializer<Args = void> =
|
|
|
60
68
|
*/
|
|
61
69
|
export const withPluginManager = <Args,>(init: WithPluginManagerInitializer<Args> = {}): Decorator => {
|
|
62
70
|
return (Story, context) => {
|
|
71
|
+
const storyId = context.id;
|
|
63
72
|
const options = typeof init === 'function' ? init(context as any) : init;
|
|
64
|
-
const
|
|
73
|
+
const [managerState, setManagerState] = useState<ManagedPluginManagerState>();
|
|
65
74
|
|
|
66
|
-
//
|
|
75
|
+
// Storybook replaces the full context object often, so key manager ownership by story id.
|
|
67
76
|
useEffect(() => {
|
|
68
|
-
const
|
|
69
|
-
|
|
77
|
+
const pluginManager = setupPluginManager(options);
|
|
78
|
+
|
|
79
|
+
const capability = Capability.contributes(Capabilities.ReactRoot, {
|
|
80
|
+
id: storyId,
|
|
70
81
|
root: () => <Story />,
|
|
71
82
|
});
|
|
72
83
|
|
|
73
84
|
pluginManager.capabilities.contribute({
|
|
74
85
|
...capability,
|
|
75
|
-
module: 'dxos.
|
|
86
|
+
module: 'org.dxos.app-framework.with-plugin-manager',
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
setManagerState({
|
|
90
|
+
pluginManager,
|
|
91
|
+
setupEvents: options.setupEvents,
|
|
92
|
+
fireEvents: options.fireEvents,
|
|
93
|
+
storyId,
|
|
76
94
|
});
|
|
77
95
|
|
|
78
96
|
return () => {
|
|
79
97
|
pluginManager.capabilities.remove(capability.interface, capability.implementation);
|
|
98
|
+
void runAndForwardErrors(pluginManager.shutdown());
|
|
80
99
|
};
|
|
81
|
-
}, [
|
|
100
|
+
}, [storyId, init]);
|
|
82
101
|
|
|
83
|
-
//
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
102
|
+
// Avoid mounting useApp with a stale manager from the previous story.
|
|
103
|
+
if (!managerState || managerState.storyId !== storyId) {
|
|
104
|
+
return <></>;
|
|
105
|
+
}
|
|
87
106
|
|
|
88
|
-
|
|
89
|
-
const App = useApp({ pluginManager });
|
|
90
|
-
|
|
91
|
-
return <App />;
|
|
107
|
+
return <WithPluginManagerApp {...managerState} />;
|
|
92
108
|
};
|
|
93
109
|
};
|
|
94
110
|
|
|
111
|
+
const WithPluginManagerApp = ({ fireEvents, pluginManager, setupEvents, storyId }: ManagedPluginManagerState) => {
|
|
112
|
+
// Fire deprecated events only after the effect-owned manager for this story exists.
|
|
113
|
+
useAsyncEffect(async () => {
|
|
114
|
+
await Promise.all(fireEvents?.map((event) => pluginManager.activate(event)) ?? []);
|
|
115
|
+
}, [fireEvents, pluginManager, storyId]);
|
|
116
|
+
|
|
117
|
+
const App = useApp({ pluginManager, setupEvents });
|
|
118
|
+
|
|
119
|
+
return <App />;
|
|
120
|
+
};
|
|
121
|
+
|
|
95
122
|
const storyMeta = {
|
|
96
|
-
id: 'dxos.
|
|
123
|
+
id: 'org.dxos.app-framework.story',
|
|
97
124
|
name: 'Story',
|
|
98
125
|
};
|
|
99
126
|
|
|
@@ -102,7 +129,7 @@ const storyMeta = {
|
|
|
102
129
|
const StoryPlugin = Plugin.define(storyMeta).pipe(
|
|
103
130
|
Plugin.addModule({
|
|
104
131
|
id: 'Story',
|
|
105
|
-
activatesOn:
|
|
132
|
+
activatesOn: ActivationEvents.Startup,
|
|
106
133
|
activate: () => Effect.succeed([]),
|
|
107
134
|
}),
|
|
108
135
|
Plugin.make,
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2022 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
6
|
+
import * as Effect from 'effect/Effect';
|
|
7
|
+
import React, { useEffect } from 'react';
|
|
8
|
+
|
|
9
|
+
import { withTheme } from '@dxos/react-ui/testing';
|
|
10
|
+
|
|
11
|
+
import { ActivationEvents, Capabilities } from '../../../common';
|
|
12
|
+
import { Capability, Plugin } from '../../../core';
|
|
13
|
+
import { useApp } from '../../hooks';
|
|
14
|
+
|
|
15
|
+
// Minimal plugin that contributes a ReactRoot.
|
|
16
|
+
const TestPlugin = Plugin.define<{ error?: boolean }>({
|
|
17
|
+
id: 'org.dxos.plugin.test',
|
|
18
|
+
name: 'Test Plugin',
|
|
19
|
+
}).pipe(
|
|
20
|
+
Plugin.addModule(({ error }) => ({
|
|
21
|
+
id: 'TestMain',
|
|
22
|
+
activatesOn: ActivationEvents.Startup,
|
|
23
|
+
activate: () =>
|
|
24
|
+
Effect.succeed([
|
|
25
|
+
Capability.contributes(Capabilities.ReactRoot, {
|
|
26
|
+
id: 'org.dxos.plugin.test.root',
|
|
27
|
+
root: () => {
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
let t: NodeJS.Timeout;
|
|
30
|
+
if (error) {
|
|
31
|
+
console.log('Ticking...');
|
|
32
|
+
t = setTimeout(() => {
|
|
33
|
+
console.log('Bang!');
|
|
34
|
+
throw new Error('Runtime error');
|
|
35
|
+
}, 3_000);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return () => clearTimeout(t);
|
|
39
|
+
}, [error]);
|
|
40
|
+
|
|
41
|
+
return <h1 className='text-lg'>App Started</h1>;
|
|
42
|
+
},
|
|
43
|
+
}),
|
|
44
|
+
]),
|
|
45
|
+
})),
|
|
46
|
+
Plugin.make,
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
const core = [TestPlugin.meta.id];
|
|
50
|
+
|
|
51
|
+
type StoryProps = { plugins?: Plugin.Plugin[] };
|
|
52
|
+
|
|
53
|
+
const DefaultStory = ({ plugins }: StoryProps) => {
|
|
54
|
+
const App = useApp({
|
|
55
|
+
plugins,
|
|
56
|
+
core,
|
|
57
|
+
placeholder: () => {
|
|
58
|
+
return (
|
|
59
|
+
<div role='none' className='text-description'>
|
|
60
|
+
Loading...
|
|
61
|
+
</div>
|
|
62
|
+
);
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
return <App />;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
const meta = {
|
|
70
|
+
title: 'sdk/app-framework/App',
|
|
71
|
+
render: DefaultStory,
|
|
72
|
+
decorators: [withTheme()],
|
|
73
|
+
parameters: {
|
|
74
|
+
layout: 'centered',
|
|
75
|
+
},
|
|
76
|
+
} satisfies Meta;
|
|
77
|
+
|
|
78
|
+
export default meta;
|
|
79
|
+
|
|
80
|
+
type Story = StoryObj<typeof meta>;
|
|
81
|
+
|
|
82
|
+
export const Default: Story = {
|
|
83
|
+
args: {
|
|
84
|
+
plugins: [TestPlugin({})],
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
export const WithError: Story = {
|
|
89
|
+
args: {
|
|
90
|
+
plugins: [TestPlugin({ error: true })],
|
|
91
|
+
},
|
|
92
|
+
};
|
|
@@ -4,12 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
import React, { type PropsWithChildren } from 'react';
|
|
6
6
|
|
|
7
|
-
import
|
|
8
|
-
import { topologicalSort } from '
|
|
9
|
-
|
|
10
|
-
import { type UseAppOptions } from './useApp';
|
|
11
|
-
import { useCapabilities } from './useCapabilities';
|
|
12
|
-
import { LoadingState, useLoading } from './useLoading';
|
|
7
|
+
import { Capabilities } from '../../../common';
|
|
8
|
+
import { topologicalSort } from '../../../helpers';
|
|
9
|
+
import { LoadingState, type UseAppOptions, useCapabilities, useLoading } from '../../hooks';
|
|
13
10
|
|
|
14
11
|
export type AppProps = Pick<UseAppOptions, 'placeholder' | 'debounce'> & {
|
|
15
12
|
ready: boolean;
|
|
@@ -17,8 +14,8 @@ export type AppProps = Pick<UseAppOptions, 'placeholder' | 'debounce'> & {
|
|
|
17
14
|
};
|
|
18
15
|
|
|
19
16
|
export const App = ({ placeholder: Placeholder, ready, error, debounce }: AppProps) => {
|
|
20
|
-
const reactContexts = useCapabilities(
|
|
21
|
-
const reactRoots = useCapabilities(
|
|
17
|
+
const reactContexts = useCapabilities(Capabilities.ReactContext);
|
|
18
|
+
const reactRoots = useCapabilities(Capabilities.ReactRoot);
|
|
22
19
|
const stage = useLoading(ready, debounce);
|
|
23
20
|
|
|
24
21
|
if (error) {
|
|
@@ -45,7 +42,7 @@ export const App = ({ placeholder: Placeholder, ready, error, debounce }: AppPro
|
|
|
45
42
|
);
|
|
46
43
|
};
|
|
47
44
|
|
|
48
|
-
const composeContexts = (contexts:
|
|
45
|
+
const composeContexts = (contexts: Capabilities.ReactContext[]) => {
|
|
49
46
|
if (contexts.length === 0) {
|
|
50
47
|
return ({ children }: PropsWithChildren) => <>{children}</>;
|
|
51
48
|
}
|
|
@@ -7,14 +7,13 @@ import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
|
7
7
|
import * as Effect from 'effect/Effect';
|
|
8
8
|
import React, { useEffect, useMemo, useState } from 'react';
|
|
9
9
|
|
|
10
|
-
import { withTheme } from '@dxos/react-ui/testing';
|
|
10
|
+
import { withLayout, withTheme } from '@dxos/react-ui/testing';
|
|
11
11
|
import { useWebComponentContext } from '@dxos/web-context-react';
|
|
12
12
|
|
|
13
|
-
import
|
|
14
|
-
import { PluginManagerContext } from '
|
|
15
|
-
import { Capability, Plugin } from '
|
|
16
|
-
|
|
17
|
-
import { useApp } from './useApp';
|
|
13
|
+
import { ActivationEvents, Capabilities } from '../../../common';
|
|
14
|
+
import { PluginManagerContext } from '../../../context';
|
|
15
|
+
import { Capability, Plugin } from '../../../core';
|
|
16
|
+
import { useApp } from '../../hooks';
|
|
18
17
|
|
|
19
18
|
// Define the Counter capability
|
|
20
19
|
const Counter = Capability.make<{ count: number; increment: () => void }>('example/counter');
|
|
@@ -79,7 +78,7 @@ const CounterComponent = () => {
|
|
|
79
78
|
}, [counter]);
|
|
80
79
|
|
|
81
80
|
if (!manager) {
|
|
82
|
-
return <div className='p-4 text-
|
|
81
|
+
return <div className='p-4 text-error-text'>Error: Context not found</div>;
|
|
83
82
|
}
|
|
84
83
|
|
|
85
84
|
return (
|
|
@@ -105,7 +104,7 @@ const CounterComponent = () => {
|
|
|
105
104
|
<CountStatus />
|
|
106
105
|
</div>
|
|
107
106
|
|
|
108
|
-
<div className='mt-8 pt-4 border-
|
|
107
|
+
<div className='mt-8 pt-4 border-t border-neutral-200 dark:border-neutral-700 text-center'>
|
|
109
108
|
<p className='text-sm text-neutral-500 dark:text-neutral-400'>
|
|
110
109
|
This component accesses the <code>PluginManager</code> via <code>useWebComponentContext</code>.
|
|
111
110
|
</p>
|
|
@@ -117,12 +116,12 @@ const CounterComponent = () => {
|
|
|
117
116
|
|
|
118
117
|
// Plugin that provides the Counter capability and renders the UI
|
|
119
118
|
const CounterPlugin = Plugin.define({
|
|
120
|
-
id: 'dxos.
|
|
119
|
+
id: 'org.dxos.plugin.counter',
|
|
121
120
|
name: 'Counter Plugin',
|
|
122
121
|
}).pipe(
|
|
123
122
|
Plugin.addModule({
|
|
124
123
|
id: 'CounterMain',
|
|
125
|
-
activatesOn:
|
|
124
|
+
activatesOn: ActivationEvents.Startup,
|
|
126
125
|
activate: () => {
|
|
127
126
|
const listeners = new Set<() => void>();
|
|
128
127
|
const counter = {
|
|
@@ -142,8 +141,8 @@ const CounterPlugin = Plugin.define({
|
|
|
142
141
|
Capability.contributes(Counter, counter),
|
|
143
142
|
|
|
144
143
|
// Contribute the UI
|
|
145
|
-
Capability.contributes(
|
|
146
|
-
id: 'dxos.
|
|
144
|
+
Capability.contributes(Capabilities.ReactRoot, {
|
|
145
|
+
id: 'org.dxos.plugin.counter.root',
|
|
147
146
|
root: CounterComponent,
|
|
148
147
|
}),
|
|
149
148
|
]);
|
|
@@ -153,7 +152,7 @@ const CounterPlugin = Plugin.define({
|
|
|
153
152
|
)();
|
|
154
153
|
|
|
155
154
|
const plugins = [CounterPlugin];
|
|
156
|
-
const core = ['dxos.
|
|
155
|
+
const core = ['org.dxos.plugin.counter'];
|
|
157
156
|
const placeholder = () => (
|
|
158
157
|
<div className='flex h-screen items-center justify-center p-4 text-lg text-neutral-500'>
|
|
159
158
|
Initializing Application...
|
|
@@ -173,7 +172,7 @@ const DefaultStory = () => {
|
|
|
173
172
|
const meta = {
|
|
174
173
|
title: 'sdk/app-framework/PluginManagerContext',
|
|
175
174
|
render: DefaultStory,
|
|
176
|
-
decorators: [withTheme],
|
|
175
|
+
decorators: [withTheme(), withLayout({ layout: 'fullscreen' })],
|
|
177
176
|
parameters: {
|
|
178
177
|
layout: 'fullscreen',
|
|
179
178
|
},
|
|
@@ -6,7 +6,7 @@ import { createContext, useContext } from 'react';
|
|
|
6
6
|
|
|
7
7
|
import { raise } from '@dxos/debug';
|
|
8
8
|
|
|
9
|
-
import { type PluginManager } from '
|
|
9
|
+
import { type PluginManager } from '../../../core';
|
|
10
10
|
|
|
11
11
|
const PluginManagerContext = createContext<PluginManager.PluginManager | undefined>(undefined);
|
|
12
12
|
|
package/src/{react/Surface.stories.tsx → ui/components/Surface/SurfaceComponent.stories.tsx}
RENAMED
|
@@ -7,14 +7,15 @@ import React, { forwardRef, useCallback, useEffect, useRef, useState } from 'rea
|
|
|
7
7
|
|
|
8
8
|
import { faker } from '@dxos/random';
|
|
9
9
|
import { List, ListItem, Toolbar } from '@dxos/react-ui';
|
|
10
|
-
import { withTheme } from '@dxos/react-ui/testing';
|
|
10
|
+
import { withLayout, withTheme } from '@dxos/react-ui/testing';
|
|
11
11
|
import { type ColorStyles, getHashStyles, mx } from '@dxos/ui-theme';
|
|
12
12
|
|
|
13
|
-
import
|
|
14
|
-
import { withPluginManager } from '
|
|
13
|
+
import { Capabilities } from '../../../common';
|
|
14
|
+
import { withPluginManager } from '../../../testing';
|
|
15
|
+
import { usePluginManager } from '../PluginManager';
|
|
15
16
|
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
17
|
+
import { SurfaceComponent, useSurfaces } from './SurfaceComponent';
|
|
18
|
+
import { create } from './types';
|
|
18
19
|
|
|
19
20
|
type TestComponentProps = {
|
|
20
21
|
id: string;
|
|
@@ -24,7 +25,7 @@ type TestComponentProps = {
|
|
|
24
25
|
const TestComponent = forwardRef<HTMLDivElement, TestComponentProps>(({ styles, id }, forwardedRef) => {
|
|
25
26
|
return (
|
|
26
27
|
<div
|
|
27
|
-
className={mx('flex justify-center items-center border rounded', styles.surface, styles.border)}
|
|
28
|
+
className={mx('flex justify-center items-center border rounded-sm', styles.surface, styles.border)}
|
|
28
29
|
ref={forwardedRef}
|
|
29
30
|
>
|
|
30
31
|
<span className={mx('dx-tag font-mono text-lg', styles.text)}>{id}</span>
|
|
@@ -40,10 +41,11 @@ const DefaultStory = () => {
|
|
|
40
41
|
const handleAdd = useCallback(() => {
|
|
41
42
|
const id = `test-${faker.number.int({ min: 0, max: 1_000 })}`;
|
|
42
43
|
const styles = getHashStyles(id);
|
|
44
|
+
|
|
43
45
|
manager.capabilities.contribute({
|
|
44
46
|
module: 'test',
|
|
45
|
-
interface:
|
|
46
|
-
implementation:
|
|
47
|
+
interface: Capabilities.ReactSurface,
|
|
48
|
+
implementation: create({
|
|
47
49
|
id,
|
|
48
50
|
role: 'item',
|
|
49
51
|
filter: (data): data is any => (data as any)?.id === id,
|
|
@@ -61,8 +63,8 @@ const DefaultStory = () => {
|
|
|
61
63
|
const handleError = useCallback(() => {
|
|
62
64
|
manager.capabilities.contribute({
|
|
63
65
|
module: 'error',
|
|
64
|
-
interface:
|
|
65
|
-
implementation:
|
|
66
|
+
interface: Capabilities.ReactSurface,
|
|
67
|
+
implementation: create({
|
|
66
68
|
id: 'error',
|
|
67
69
|
role: 'item',
|
|
68
70
|
filter: (data): data is any => (data as any)?.id === 'error',
|
|
@@ -86,7 +88,7 @@ const DefaultStory = () => {
|
|
|
86
88
|
}
|
|
87
89
|
|
|
88
90
|
return (
|
|
89
|
-
<div className='flex justify-center items-center border border-
|
|
91
|
+
<div className='flex justify-center items-center border border-rose-fill rounded-sm'>
|
|
90
92
|
<span className='font-mono'>Ticking... {count}</span>
|
|
91
93
|
</div>
|
|
92
94
|
);
|
|
@@ -103,15 +105,15 @@ const DefaultStory = () => {
|
|
|
103
105
|
}, [ref]);
|
|
104
106
|
|
|
105
107
|
return (
|
|
106
|
-
<div className='flex flex-col
|
|
108
|
+
<div className='flex flex-col h-full overflow-hidden'>
|
|
107
109
|
<Toolbar.Root>
|
|
108
110
|
<Toolbar.Button onClick={handleAdd}>Add</Toolbar.Button>
|
|
109
111
|
<Toolbar.Button onClick={handleSelect}>Pick</Toolbar.Button>
|
|
110
112
|
<Toolbar.Button onClick={handleError}>Error</Toolbar.Button>
|
|
111
113
|
</Toolbar.Root>
|
|
112
|
-
<div className='grid grid-cols-2
|
|
113
|
-
<
|
|
114
|
-
<div className='overflow-y-auto
|
|
114
|
+
<div className='grid grid-cols-2 h-full gap-4 overflow-hidden'>
|
|
115
|
+
<SurfaceComponent role='item' data={selected ? { id: selected } : undefined} limit={1} ref={ref} />
|
|
116
|
+
<div className='overflow-y-auto h-full'>
|
|
115
117
|
<List>
|
|
116
118
|
{surfaces.map((surface) => (
|
|
117
119
|
<ListItem.Root key={surface.id} id={surface.id}>
|
|
@@ -128,7 +130,7 @@ const DefaultStory = () => {
|
|
|
128
130
|
const meta = {
|
|
129
131
|
title: 'sdk/app-framework/Surface',
|
|
130
132
|
render: DefaultStory,
|
|
131
|
-
decorators: [withTheme, withPluginManager({ capabilities: [] })],
|
|
133
|
+
decorators: [withTheme(), withLayout({ layout: 'fullscreen' }), withPluginManager({ capabilities: [] })],
|
|
132
134
|
parameters: {
|
|
133
135
|
layout: 'fullscreen',
|
|
134
136
|
},
|