@dxos/app-framework 0.8.2-staging.7ac8446 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/{app-graph-builder-576BHZC7.mjs → app-graph-builder-DYEAGZPS.mjs} +23 -23
- package/dist/lib/browser/app-graph-builder-DYEAGZPS.mjs.map +7 -0
- package/dist/lib/browser/{chunk-6AVTZPMT.mjs → chunk-5GE2ERNU.mjs} +340 -275
- package/dist/lib/browser/chunk-5GE2ERNU.mjs.map +7 -0
- package/dist/lib/browser/{chunk-SFPT4Z2C.mjs → chunk-WWEJRWFX.mjs} +10 -10
- package/dist/lib/browser/chunk-WWEJRWFX.mjs.map +7 -0
- package/dist/lib/browser/{chunk-PPIBZ5N4.mjs → chunk-ZMXJV64L.mjs} +123 -63
- package/dist/lib/browser/chunk-ZMXJV64L.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +12 -10
- package/dist/lib/browser/index.mjs.map +1 -1
- package/dist/lib/browser/{intent-dispatcher-3Q67MHZZ.mjs → intent-dispatcher-ELZN5EM7.mjs} +2 -2
- package/dist/lib/browser/{intent-resolver-O763LCLG.mjs → intent-resolver-SGWLINTO.mjs} +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{store-URSN7DZI.mjs → store-YIU6IPZ2.mjs} +7 -6
- package/dist/lib/browser/store-YIU6IPZ2.mjs.map +7 -0
- package/dist/lib/browser/testing/index.mjs +30 -14
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/browser/worker.mjs +5 -3
- package/dist/lib/node/app-graph-builder-GBLISL7L.cjs +146 -0
- package/dist/lib/node/app-graph-builder-GBLISL7L.cjs.map +7 -0
- package/dist/lib/node/{chunk-JUSEAFDU.cjs → chunk-G774ASXO.cjs} +5 -5
- package/dist/lib/node/chunk-G774ASXO.cjs.map +7 -0
- package/dist/lib/node/{chunk-YIFTVCOR.cjs → chunk-HIVITTZD.cjs} +319 -255
- package/dist/lib/node/chunk-HIVITTZD.cjs.map +7 -0
- package/dist/lib/node/{chunk-YNTKVTVX.cjs → chunk-Z2PMVDJ5.cjs} +155 -95
- package/dist/lib/node/chunk-Z2PMVDJ5.cjs.map +7 -0
- package/dist/lib/node/index.cjs +82 -80
- package/dist/lib/node/index.cjs.map +1 -1
- package/dist/lib/node/{intent-dispatcher-H334XLFD.cjs → intent-dispatcher-LFXZJTAS.cjs} +8 -8
- package/dist/lib/node/{intent-dispatcher-H334XLFD.cjs.map → intent-dispatcher-LFXZJTAS.cjs.map} +2 -2
- package/dist/lib/node/{intent-resolver-3F4POWAM.cjs → intent-resolver-EPSFTHL6.cjs} +12 -12
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{store-OFDHTDCB.cjs → store-CVVRXUTH.cjs} +10 -9
- package/dist/lib/node/store-CVVRXUTH.cjs.map +7 -0
- package/dist/lib/node/testing/index.cjs +34 -17
- package/dist/lib/node/testing/index.cjs.map +3 -3
- package/dist/lib/node/worker.cjs +40 -38
- package/dist/lib/node/worker.cjs.map +2 -2
- package/dist/lib/node-esm/{app-graph-builder-VYKLSMSZ.mjs → app-graph-builder-LUBDEIT6.mjs} +23 -23
- package/dist/lib/node-esm/app-graph-builder-LUBDEIT6.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-R6A7Z4LU.mjs → chunk-6IKYKERU.mjs} +123 -63
- package/dist/lib/node-esm/chunk-6IKYKERU.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-PHOUQACM.mjs → chunk-I6BVZMAH.mjs} +10 -10
- package/dist/lib/node-esm/chunk-I6BVZMAH.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-AHKIPS2L.mjs → chunk-Z2ZHH4HN.mjs} +340 -275
- package/dist/lib/node-esm/chunk-Z2ZHH4HN.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +12 -10
- package/dist/lib/node-esm/index.mjs.map +1 -1
- package/dist/lib/node-esm/{intent-dispatcher-YDE2ONZA.mjs → intent-dispatcher-A2JCMWRD.mjs} +2 -2
- package/dist/lib/node-esm/{intent-resolver-LAGJ7LXM.mjs → intent-resolver-5C4O43GK.mjs} +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{store-EYSUVNCS.mjs → store-HRZXZ2D2.mjs} +7 -6
- package/dist/lib/node-esm/store-HRZXZ2D2.mjs.map +7 -0
- package/dist/lib/node-esm/testing/index.mjs +30 -14
- package/dist/lib/node-esm/testing/index.mjs.map +3 -3
- package/dist/lib/node-esm/worker.mjs +5 -3
- package/dist/types/src/App.d.ts +3 -1
- package/dist/types/src/App.d.ts.map +1 -1
- package/dist/types/src/common/capabilities.d.ts +40 -222
- package/dist/types/src/common/capabilities.d.ts.map +1 -1
- package/dist/types/src/common/collaboration.d.ts +19 -0
- package/dist/types/src/common/collaboration.d.ts.map +1 -0
- package/dist/types/src/common/events.d.ts.map +1 -1
- package/dist/types/src/common/file.d.ts +7 -7
- package/dist/types/src/common/file.d.ts.map +1 -1
- package/dist/types/src/common/index.d.ts +1 -0
- package/dist/types/src/common/index.d.ts.map +1 -1
- package/dist/types/src/common/layout.d.ts +166 -158
- package/dist/types/src/common/layout.d.ts.map +1 -1
- package/dist/types/src/common/surface.d.ts.map +1 -1
- package/dist/types/src/common/translations.d.ts +7 -7
- package/dist/types/src/common/translations.d.ts.map +1 -1
- package/dist/types/src/core/capabilities.d.ts +33 -15
- package/dist/types/src/core/capabilities.d.ts.map +1 -1
- package/dist/types/src/core/events.d.ts +4 -1
- package/dist/types/src/core/events.d.ts.map +1 -1
- package/dist/types/src/core/manager.d.ts +14 -11
- package/dist/types/src/core/manager.d.ts.map +1 -1
- package/dist/types/src/core/plugin.d.ts +4 -3
- package/dist/types/src/core/plugin.d.ts.map +1 -1
- package/dist/types/src/helpers.d.ts.map +1 -1
- package/dist/types/src/playground/generator/generator.d.ts.map +1 -1
- package/dist/types/src/playground/logger/schema.d.ts +6 -6
- package/dist/types/src/playground/logger/schema.d.ts.map +1 -1
- package/dist/types/src/playground/playground.stories.d.ts.map +1 -1
- package/dist/types/src/plugin-intent/actions.d.ts +14 -14
- package/dist/types/src/plugin-intent/actions.d.ts.map +1 -1
- package/dist/types/src/plugin-intent/intent-dispatcher.d.ts +29 -3
- package/dist/types/src/plugin-intent/intent-dispatcher.d.ts.map +1 -1
- package/dist/types/src/plugin-intent/intent.d.ts +14 -20
- package/dist/types/src/plugin-intent/intent.d.ts.map +1 -1
- package/dist/types/src/plugin-settings/actions.d.ts +10 -10
- package/dist/types/src/plugin-settings/actions.d.ts.map +1 -1
- package/dist/types/src/plugin-settings/app-graph-builder.d.ts +2 -195
- package/dist/types/src/plugin-settings/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/plugin-settings/store.d.ts +2 -2
- package/dist/types/src/plugin-settings/store.d.ts.map +1 -1
- package/dist/types/src/react/ErrorBoundary.d.ts +1 -1
- package/dist/types/src/react/ErrorBoundary.d.ts.map +1 -1
- package/dist/types/src/react/IntentContext.d.ts.map +1 -1
- package/dist/types/src/react/Surface.d.ts +2 -2
- package/dist/types/src/react/Surface.d.ts.map +1 -1
- package/dist/types/src/react/useCapabilities.d.ts +2 -2
- package/dist/types/src/react/useCapabilities.d.ts.map +1 -1
- package/dist/types/src/react/useIntentResolver.d.ts.map +1 -1
- package/dist/types/src/testing/withPluginManager.d.ts +6 -2
- package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
- package/dist/types/src/testing/withPluginManager.stories.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +32 -21
- package/project.json +2 -1
- package/src/App.tsx +98 -48
- package/src/common/capabilities.ts +18 -7
- package/src/common/collaboration.ts +21 -0
- package/src/common/file.ts +7 -7
- package/src/common/index.ts +1 -0
- package/src/common/layout.ts +167 -128
- package/src/common/translations.ts +7 -7
- package/src/core/capabilities.test.ts +55 -36
- package/src/core/capabilities.ts +84 -60
- package/src/core/events.ts +4 -1
- package/src/core/manager.test.ts +22 -22
- package/src/core/manager.ts +34 -26
- package/src/core/plugin.ts +4 -3
- package/src/playground/generator/generator.ts +4 -4
- package/src/playground/logger/schema.ts +5 -5
- package/src/playground/playground.stories.tsx +13 -9
- package/src/plugin-intent/actions.ts +9 -9
- package/src/plugin-intent/intent-dispatcher.test.ts +23 -42
- package/src/plugin-intent/intent-dispatcher.ts +25 -13
- package/src/plugin-intent/intent.ts +22 -20
- package/src/plugin-settings/actions.ts +8 -8
- package/src/plugin-settings/app-graph-builder.ts +129 -94
- package/src/plugin-settings/store.ts +20 -17
- package/src/react/ErrorBoundary.tsx +3 -3
- package/src/react/Surface.stories.tsx +1 -1
- package/src/react/Surface.tsx +3 -3
- package/src/react/useCapabilities.ts +9 -19
- package/src/testing/withPluginManager.stories.tsx +0 -1
- package/src/testing/withPluginManager.tsx +35 -16
- package/tsconfig.json +1 -53
- package/typedoc/.nojekyll +1 -0
- package/typedoc/assets/hierarchy.js +1 -0
- package/typedoc/assets/highlight.css +106 -0
- package/typedoc/assets/icons.js +18 -0
- package/typedoc/assets/icons.svg +1 -0
- package/typedoc/assets/main.js +60 -0
- package/typedoc/assets/navigation.js +1 -0
- package/typedoc/assets/search.js +1 -0
- package/typedoc/assets/style.css +1640 -0
- package/typedoc/classes/CollaborationActions.InsertContent.html +421 -0
- package/typedoc/classes/ErrorBoundary.html +125 -0
- package/typedoc/classes/IntentAction.ShowUndo.html +227 -0
- package/typedoc/classes/IntentAction.Track.html +266 -0
- package/typedoc/classes/LayoutAction.AddToast.html +265 -0
- package/typedoc/classes/LayoutAction.Close.html +382 -0
- package/typedoc/classes/LayoutAction.Expose.html +265 -0
- package/typedoc/classes/LayoutAction.Open.html +1123 -0
- package/typedoc/classes/LayoutAction.RevertWorkspace.html +343 -0
- package/typedoc/classes/LayoutAction.ScrollIntoView.html +460 -0
- package/typedoc/classes/LayoutAction.Set.html +460 -0
- package/typedoc/classes/LayoutAction.SetLayoutMode.html +499 -0
- package/typedoc/classes/LayoutAction.SwitchWorkspace.html +265 -0
- package/typedoc/classes/LayoutAction.UpdateComplementary.html +616 -0
- package/typedoc/classes/LayoutAction.UpdateDialog.html +1123 -0
- package/typedoc/classes/LayoutAction.UpdateLayout.html +461 -0
- package/typedoc/classes/LayoutAction.UpdatePopover.html +1435 -0
- package/typedoc/classes/LayoutAction.UpdateSidebar.html +616 -0
- package/typedoc/classes/Plugin.html +6 -0
- package/typedoc/classes/PluginContext.html +38 -0
- package/typedoc/classes/PluginManager.html +43 -0
- package/typedoc/classes/PluginModule.html +18 -0
- package/typedoc/classes/SettingsAction.Open.html +226 -0
- package/typedoc/classes/SettingsAction.OpenPluginRegistry.html +265 -0
- package/typedoc/functions/Events.createStateEvent.html +2 -0
- package/typedoc/functions/IntentPlugin.html +1 -0
- package/typedoc/functions/SettingsPlugin.html +1 -0
- package/typedoc/functions/allOf.html +2 -0
- package/typedoc/functions/chain.html +3 -0
- package/typedoc/functions/contributes.html +2 -0
- package/typedoc/functions/createDispatcher.html +3 -0
- package/typedoc/functions/createIntent.html +6 -0
- package/typedoc/functions/createResolver.html +2 -0
- package/typedoc/functions/createSurface.html +2 -0
- package/typedoc/functions/defineCapability.html +2 -0
- package/typedoc/functions/defineEvent.html +2 -0
- package/typedoc/functions/defineModule.html +2 -0
- package/typedoc/functions/definePlugin.html +2 -0
- package/typedoc/functions/eventKey.html +2 -0
- package/typedoc/functions/getEvents.html +2 -0
- package/typedoc/functions/isAllOf.html +2 -0
- package/typedoc/functions/isOneOf.html +2 -0
- package/typedoc/functions/isSurfaceAvailable.html +2 -0
- package/typedoc/functions/lazy.html +2 -0
- package/typedoc/functions/oneOf.html +2 -0
- package/typedoc/functions/useApp.html +6 -0
- package/typedoc/functions/useAppGraph.html +1 -0
- package/typedoc/functions/useCapabilities.html +3 -0
- package/typedoc/functions/useCapability.html +4 -0
- package/typedoc/functions/useIntentDispatcher.html +1 -0
- package/typedoc/functions/useIntentResolver.html +1 -0
- package/typedoc/functions/useLayout.html +1 -0
- package/typedoc/functions/usePluginManager.html +2 -0
- package/typedoc/hierarchy.html +1 -0
- package/typedoc/index.html +16 -0
- package/typedoc/interfaces/LayoutAction.Toast.html +10 -0
- package/typedoc/media/LICENSE +8 -0
- package/typedoc/modules/Capabilities.html +1 -0
- package/typedoc/modules/CollaborationActions.html +1 -0
- package/typedoc/modules/Events.html +1 -0
- package/typedoc/modules/IntentAction.html +1 -0
- package/typedoc/modules/LayoutAction.html +2 -0
- package/typedoc/modules/SettingsAction.html +1 -0
- package/typedoc/modules.html +1 -0
- package/typedoc/types/ActivationEvent.html +8 -0
- package/typedoc/types/ActivationEvents.html +2 -0
- package/typedoc/types/AnyCapability.html +1 -0
- package/typedoc/types/AnyIntent.html +1 -0
- package/typedoc/types/AnyIntentChain.html +1 -0
- package/typedoc/types/AnyIntentEffectResult.html +1 -0
- package/typedoc/types/AnyIntentResolver.html +1 -0
- package/typedoc/types/AnyIntentResult.html +1 -0
- package/typedoc/types/Capabilities.FileUploader.html +1 -0
- package/typedoc/types/Capabilities.IntentResolver.html +1 -0
- package/typedoc/types/Capabilities.Layout.html +1 -0
- package/typedoc/types/Capabilities.Metadata.html +1 -0
- package/typedoc/types/Capabilities.ReactContext.html +1 -0
- package/typedoc/types/Capabilities.ReactRoot.html +1 -0
- package/typedoc/types/Capabilities.ReactSurface.html +1 -0
- package/typedoc/types/Capabilities.Settings.html +4 -0
- package/typedoc/types/Capability.html +9 -0
- package/typedoc/types/CreateAppOptions.html +10 -0
- package/typedoc/types/FileInfo.html +1 -0
- package/typedoc/types/Intent.html +10 -0
- package/typedoc/types/IntentChain.html +6 -0
- package/typedoc/types/IntentContext.html +5 -0
- package/typedoc/types/IntentData.html +1 -0
- package/typedoc/types/IntentDispatcher.html +2 -0
- package/typedoc/types/IntentDispatcherResult.html +2 -0
- package/typedoc/types/IntentEffectDefinition.html +2 -0
- package/typedoc/types/IntentEffectResult.html +15 -0
- package/typedoc/types/IntentParams.html +3 -0
- package/typedoc/types/IntentResolver.html +2 -0
- package/typedoc/types/IntentResultData.html +1 -0
- package/typedoc/types/IntentSchema.html +1 -0
- package/typedoc/types/IntentUndo.html +2 -0
- package/typedoc/types/InterfaceDef.html +4 -0
- package/typedoc/types/Label.html +1 -0
- package/typedoc/types/NodeSerializer.html +8 -0
- package/typedoc/types/PluginManagerOptions.html +6 -0
- package/typedoc/types/PluginMeta.html +21 -0
- package/typedoc/types/PromiseIntentDispatcher.html +2 -0
- package/typedoc/types/PromiseIntentUndo.html +2 -0
- package/typedoc/types/Resource.html +1 -0
- package/typedoc/types/ResourceKey.html +1 -0
- package/typedoc/types/ResourceLanguage.html +1 -0
- package/typedoc/types/SerializedNode.html +4 -0
- package/typedoc/types/SurfaceComponent.html +2 -0
- package/typedoc/types/SurfaceDefinition.html +2 -0
- package/typedoc/types/SurfaceProps.html +4 -0
- package/typedoc/variables/Capabilities.AnchorSort.html +1 -0
- package/typedoc/variables/Capabilities.AppGraph.html +1 -0
- package/typedoc/variables/Capabilities.AppGraphBuilder.html +1 -0
- package/typedoc/variables/Capabilities.AppGraphSerializer.html +1 -0
- package/typedoc/variables/Capabilities.ArtifactDefinition.html +1 -0
- package/typedoc/variables/Capabilities.FileUploader.html +1 -0
- package/typedoc/variables/Capabilities.IntentDispatcher.html +1 -0
- package/typedoc/variables/Capabilities.IntentResolver.html +1 -0
- package/typedoc/variables/Capabilities.Layout.html +1 -0
- package/typedoc/variables/Capabilities.Metadata.html +1 -0
- package/typedoc/variables/Capabilities.Null.html +1 -0
- package/typedoc/variables/Capabilities.PluginManager.html +1 -0
- package/typedoc/variables/Capabilities.ReactContext.html +1 -0
- package/typedoc/variables/Capabilities.ReactRoot.html +1 -0
- package/typedoc/variables/Capabilities.ReactSurface.html +1 -0
- package/typedoc/variables/Capabilities.RxRegistry.html +1 -0
- package/typedoc/variables/Capabilities.Settings.html +1 -0
- package/typedoc/variables/Capabilities.SettingsStore.html +1 -0
- package/typedoc/variables/Capabilities.Tools.html +1 -0
- package/typedoc/variables/Capabilities.Translations.html +1 -0
- package/typedoc/variables/Events.AppGraphReady.html +2 -0
- package/typedoc/variables/Events.DispatcherReady.html +2 -0
- package/typedoc/variables/Events.LayoutReady.html +1 -0
- package/typedoc/variables/Events.SettingsReady.html +2 -0
- package/typedoc/variables/Events.SetupAppGraph.html +2 -0
- package/typedoc/variables/Events.SetupArtifactDefinition.html +2 -0
- package/typedoc/variables/Events.SetupIntentResolver.html +2 -0
- package/typedoc/variables/Events.SetupMetadata.html +2 -0
- package/typedoc/variables/Events.SetupReactSurface.html +2 -0
- package/typedoc/variables/Events.SetupSettings.html +2 -0
- package/typedoc/variables/Events.SetupTranslations.html +2 -0
- package/typedoc/variables/Events.Startup.html +2 -0
- package/typedoc/variables/FileInfoSchema.html +1 -0
- package/typedoc/variables/INTENT_ACTION.html +1 -0
- package/typedoc/variables/INTENT_PLUGIN.html +1 -0
- package/typedoc/variables/LAYOUT_ACTION.html +1 -0
- package/typedoc/variables/LAYOUT_PLUGIN.html +1 -0
- package/typedoc/variables/Label.html +1 -0
- package/typedoc/variables/LayoutAction.Toast.html +1 -0
- package/typedoc/variables/LayoutAction.UPDATE_LAYOUT.html +1 -0
- package/typedoc/variables/PluginManagerProvider.html +2 -0
- package/typedoc/variables/Resource.html +2 -0
- package/typedoc/variables/ResourceKey.html +1 -0
- package/typedoc/variables/ResourceLanguage.html +1 -0
- package/typedoc/variables/SETTINGS_ACTION.html +1 -0
- package/typedoc/variables/SETTINGS_ID.html +1 -0
- package/typedoc/variables/SETTINGS_KEY.html +1 -0
- package/typedoc/variables/SETTINGS_PLUGIN.html +1 -0
- package/typedoc/variables/Surface.html +2 -0
- package/typedoc/variables/defaultFileTypes.html +1 -0
- package/dist/lib/browser/app-graph-builder-576BHZC7.mjs.map +0 -7
- package/dist/lib/browser/chunk-6AVTZPMT.mjs.map +0 -7
- package/dist/lib/browser/chunk-PPIBZ5N4.mjs.map +0 -7
- package/dist/lib/browser/chunk-SFPT4Z2C.mjs.map +0 -7
- package/dist/lib/browser/store-URSN7DZI.mjs.map +0 -7
- package/dist/lib/node/app-graph-builder-JZCSKYPY.cjs +0 -146
- package/dist/lib/node/app-graph-builder-JZCSKYPY.cjs.map +0 -7
- package/dist/lib/node/chunk-JUSEAFDU.cjs.map +0 -7
- package/dist/lib/node/chunk-YIFTVCOR.cjs.map +0 -7
- package/dist/lib/node/chunk-YNTKVTVX.cjs.map +0 -7
- package/dist/lib/node/store-OFDHTDCB.cjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-VYKLSMSZ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-AHKIPS2L.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-PHOUQACM.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-R6A7Z4LU.mjs.map +0 -7
- package/dist/lib/node-esm/store-EYSUVNCS.mjs.map +0 -7
- /package/dist/lib/browser/{intent-dispatcher-3Q67MHZZ.mjs.map → intent-dispatcher-ELZN5EM7.mjs.map} +0 -0
- /package/dist/lib/browser/{intent-resolver-O763LCLG.mjs.map → intent-resolver-SGWLINTO.mjs.map} +0 -0
- /package/dist/lib/node/{intent-resolver-3F4POWAM.cjs.map → intent-resolver-EPSFTHL6.cjs.map} +0 -0
- /package/dist/lib/node-esm/{intent-dispatcher-YDE2ONZA.mjs.map → intent-dispatcher-A2JCMWRD.mjs.map} +0 -0
- /package/dist/lib/node-esm/{intent-resolver-LAGJ7LXM.mjs.map → intent-resolver-5C4O43GK.mjs.map} +0 -0
|
@@ -2,121 +2,156 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { Rx } from '@effect-rx/rx-react';
|
|
6
|
+
import { Option, pipe } from 'effect';
|
|
7
|
+
|
|
8
|
+
import { createExtension, ROOT_ID } from '@dxos/app-graph';
|
|
6
9
|
import { type SettingsStore, type SettingsValue } from '@dxos/local-storage';
|
|
7
10
|
import { isNonNullable } from '@dxos/util';
|
|
8
11
|
|
|
9
12
|
import { SETTINGS_ID, SETTINGS_KEY, SETTINGS_PLUGIN, SettingsAction } from './actions';
|
|
10
13
|
import { Capabilities } from '../common';
|
|
11
|
-
import { contributes, type PluginMeta, type
|
|
14
|
+
import { contributes, type PluginMeta, type PluginContext } from '../core';
|
|
12
15
|
import { createIntent } from '../plugin-intent';
|
|
13
16
|
|
|
14
|
-
export default (context:
|
|
17
|
+
export default (context: PluginContext) =>
|
|
15
18
|
contributes(Capabilities.AppGraphBuilder, [
|
|
16
19
|
createExtension({
|
|
17
20
|
id: `${SETTINGS_PLUGIN}/action`,
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
21
|
+
actions: (node) =>
|
|
22
|
+
Rx.make((get) =>
|
|
23
|
+
pipe(
|
|
24
|
+
get(node),
|
|
25
|
+
Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
|
|
26
|
+
Option.map(() => [
|
|
27
|
+
{
|
|
28
|
+
id: SETTINGS_PLUGIN,
|
|
29
|
+
data: async () => {
|
|
30
|
+
const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
|
|
31
|
+
await dispatch(createIntent(SettingsAction.Open));
|
|
32
|
+
},
|
|
33
|
+
properties: {
|
|
34
|
+
label: ['open settings label', { ns: SETTINGS_PLUGIN }],
|
|
35
|
+
icon: 'ph--gear--regular',
|
|
36
|
+
disposition: 'menu',
|
|
37
|
+
keyBinding: {
|
|
38
|
+
macos: 'meta+,',
|
|
39
|
+
windows: 'alt+,',
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
]),
|
|
44
|
+
Option.getOrElse(() => []),
|
|
45
|
+
),
|
|
46
|
+
),
|
|
36
47
|
}),
|
|
37
48
|
createExtension({
|
|
38
49
|
id: `${SETTINGS_PLUGIN}/core`,
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
connector: (node) =>
|
|
51
|
+
Rx.make((get) =>
|
|
52
|
+
pipe(
|
|
53
|
+
get(node),
|
|
54
|
+
Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
|
|
55
|
+
Option.map(() => [
|
|
56
|
+
{
|
|
57
|
+
id: SETTINGS_ID,
|
|
58
|
+
type: SETTINGS_PLUGIN,
|
|
59
|
+
properties: {
|
|
60
|
+
label: ['app settings label', { ns: SETTINGS_PLUGIN }],
|
|
61
|
+
icon: 'ph--gear--regular',
|
|
62
|
+
disposition: 'pin-end',
|
|
63
|
+
position: 'hoist',
|
|
64
|
+
testId: 'treeView.appSettings',
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
]),
|
|
68
|
+
Option.getOrElse(() => []),
|
|
69
|
+
),
|
|
70
|
+
),
|
|
53
71
|
}),
|
|
54
72
|
createExtension({
|
|
55
73
|
id: `${SETTINGS_PLUGIN}/core-plugins`,
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
74
|
+
connector: (node) =>
|
|
75
|
+
Rx.make((get) =>
|
|
76
|
+
pipe(
|
|
77
|
+
get(node),
|
|
78
|
+
Option.flatMap((node) => (node.id !== SETTINGS_ID ? Option.none() : Option.some(node))),
|
|
79
|
+
Option.map(() => {
|
|
80
|
+
const manager = get(context.capability(Capabilities.PluginManager));
|
|
81
|
+
const [settingsStore] = get(context.capabilities(Capabilities.SettingsStore));
|
|
82
|
+
return [
|
|
83
|
+
...manager.plugins
|
|
84
|
+
.filter((plugin) => manager.core.includes(plugin.meta.id))
|
|
85
|
+
.map((plugin): [PluginMeta, SettingsStore<SettingsValue>] | null => {
|
|
86
|
+
const settings = settingsStore?.getStore(plugin.meta.id);
|
|
87
|
+
if (!settings) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
68
90
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
91
|
+
return [plugin.meta, settings];
|
|
92
|
+
})
|
|
93
|
+
.filter(isNonNullable)
|
|
94
|
+
.map(([meta, settings]) => ({
|
|
95
|
+
id: `${SETTINGS_KEY}:${meta.id.replaceAll('/', ':')}`,
|
|
96
|
+
type: 'category',
|
|
97
|
+
data: settings,
|
|
98
|
+
properties: {
|
|
99
|
+
label: meta.name ?? meta.id,
|
|
100
|
+
icon: meta.icon ?? 'ph--circle--regular',
|
|
101
|
+
},
|
|
102
|
+
})),
|
|
81
103
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
104
|
+
{
|
|
105
|
+
id: `${SETTINGS_KEY}:custom-plugins`,
|
|
106
|
+
type: 'category',
|
|
107
|
+
properties: {
|
|
108
|
+
label: ['custom plugins label', { ns: SETTINGS_PLUGIN }],
|
|
109
|
+
icon: 'ph--squares-four--regular',
|
|
110
|
+
role: 'branch',
|
|
111
|
+
disposition: 'collection',
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
];
|
|
115
|
+
}),
|
|
116
|
+
Option.getOrElse(() => []),
|
|
117
|
+
),
|
|
118
|
+
),
|
|
93
119
|
}),
|
|
94
120
|
createExtension({
|
|
95
121
|
id: `${SETTINGS_PLUGIN}/custom-plugins`,
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
122
|
+
connector: (node) =>
|
|
123
|
+
Rx.make((get) =>
|
|
124
|
+
pipe(
|
|
125
|
+
get(node),
|
|
126
|
+
Option.flatMap((node) =>
|
|
127
|
+
node.id !== `${SETTINGS_KEY}:custom-plugins` ? Option.none() : Option.some(node),
|
|
128
|
+
),
|
|
129
|
+
Option.map(() => {
|
|
130
|
+
const manager = get(context.capability(Capabilities.PluginManager));
|
|
131
|
+
const [settingsStore] = get(context.capabilities(Capabilities.SettingsStore));
|
|
132
|
+
return manager.plugins
|
|
133
|
+
.filter((plugin) => !manager.core.includes(plugin.meta.id))
|
|
134
|
+
.map((plugin): [PluginMeta, SettingsStore<SettingsValue>] | null => {
|
|
135
|
+
const settings = settingsStore?.getStore(plugin.meta.id);
|
|
136
|
+
if (!settings) {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
107
139
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
140
|
+
return [plugin.meta, settings];
|
|
141
|
+
})
|
|
142
|
+
.filter(isNonNullable)
|
|
143
|
+
.map(([meta, settings]) => ({
|
|
144
|
+
id: `${SETTINGS_KEY}:${meta.id.replaceAll('/', ':')}`,
|
|
145
|
+
type: 'category',
|
|
146
|
+
data: settings,
|
|
147
|
+
properties: {
|
|
148
|
+
label: meta.name ?? meta.id,
|
|
149
|
+
icon: meta.icon ?? 'ph--circle--regular',
|
|
150
|
+
},
|
|
151
|
+
}));
|
|
152
|
+
}),
|
|
153
|
+
Option.getOrElse(() => []),
|
|
154
|
+
),
|
|
155
|
+
),
|
|
121
156
|
}),
|
|
122
157
|
]);
|
|
@@ -2,29 +2,32 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { effect } from '@preact/signals-core';
|
|
6
|
-
|
|
7
5
|
import { RootSettingsStore } from '@dxos/local-storage';
|
|
8
6
|
|
|
9
7
|
import { Capabilities } from '../common';
|
|
10
|
-
import { contributes, type
|
|
8
|
+
import { contributes, type PluginContext } from '../core';
|
|
11
9
|
|
|
12
|
-
export default (context:
|
|
10
|
+
export default (context: PluginContext) => {
|
|
11
|
+
// TODO(wittjosiah): Replace with rx?
|
|
13
12
|
const settingsStore = new RootSettingsStore();
|
|
14
13
|
|
|
15
14
|
let previous: Capabilities.Settings[] = [];
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
15
|
+
const registry = context.getCapability(Capabilities.RxRegistry);
|
|
16
|
+
const cancel = registry.subscribe(
|
|
17
|
+
context.capabilities(Capabilities.Settings),
|
|
18
|
+
(allSettings) => {
|
|
19
|
+
const added = allSettings.filter((setting) => !previous.includes(setting));
|
|
20
|
+
const removed = previous.filter((setting) => !allSettings.includes(setting));
|
|
21
|
+
previous = allSettings;
|
|
22
|
+
added.forEach((setting) => {
|
|
23
|
+
settingsStore.createStore(setting as any);
|
|
24
|
+
});
|
|
25
|
+
removed.forEach((setting) => {
|
|
26
|
+
settingsStore.removeStore(setting.prefix);
|
|
27
|
+
});
|
|
28
|
+
},
|
|
29
|
+
{ immediate: true },
|
|
30
|
+
);
|
|
28
31
|
|
|
29
|
-
return contributes(Capabilities.SettingsStore, settingsStore, () =>
|
|
32
|
+
return contributes(Capabilities.SettingsStore, settingsStore, () => cancel());
|
|
30
33
|
};
|
|
@@ -21,7 +21,7 @@ export class ErrorBoundary extends Component<Props, State> {
|
|
|
21
21
|
this.state = { error: undefined };
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
static getDerivedStateFromError(error: Error) {
|
|
24
|
+
static getDerivedStateFromError(error: Error): { error: Error } {
|
|
25
25
|
return { error };
|
|
26
26
|
}
|
|
27
27
|
|
|
@@ -31,7 +31,7 @@ export class ErrorBoundary extends Component<Props, State> {
|
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
override render() {
|
|
34
|
+
override render(): string | number | boolean | React.JSX.Element | Iterable<React.ReactNode> | null | undefined {
|
|
35
35
|
if (this.state.error) {
|
|
36
36
|
return <this.props.fallback data={this.props.data} error={this.state.error} reset={this.resetError} />;
|
|
37
37
|
}
|
|
@@ -39,7 +39,7 @@ export class ErrorBoundary extends Component<Props, State> {
|
|
|
39
39
|
return this.props.children;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
private resetError() {
|
|
42
|
+
private resetError(): void {
|
|
43
43
|
this.setState({ error: undefined });
|
|
44
44
|
}
|
|
45
45
|
}
|
|
@@ -87,7 +87,7 @@ export default {
|
|
|
87
87
|
);
|
|
88
88
|
},
|
|
89
89
|
// NOTE: Intentionally not using withPluginManager to try to reduce surface area of the story.
|
|
90
|
-
decorators: [withTheme, withLayout(
|
|
90
|
+
decorators: [withTheme, withLayout()],
|
|
91
91
|
args: {
|
|
92
92
|
manager: setupPluginManager(),
|
|
93
93
|
},
|
package/src/react/Surface.tsx
CHANGED
|
@@ -10,7 +10,7 @@ import { byPosition } from '@dxos/util';
|
|
|
10
10
|
import { ErrorBoundary } from './ErrorBoundary';
|
|
11
11
|
import { useCapabilities } from './useCapabilities';
|
|
12
12
|
import { Capabilities, type SurfaceDefinition, type SurfaceProps } from '../common';
|
|
13
|
-
import { type
|
|
13
|
+
import { type PluginContext } from '../core';
|
|
14
14
|
|
|
15
15
|
const DEFAULT_PLACEHOLDER = <Fragment />;
|
|
16
16
|
|
|
@@ -34,8 +34,8 @@ const findCandidates = (surfaces: SurfaceDefinition[], { role, data }: Pick<Surf
|
|
|
34
34
|
/**
|
|
35
35
|
* @returns `true` if there is a contributed surface which matches the specified role & data, `false` otherwise.
|
|
36
36
|
*/
|
|
37
|
-
export const isSurfaceAvailable = (context:
|
|
38
|
-
const surfaces = context.
|
|
37
|
+
export const isSurfaceAvailable = (context: PluginContext, { role, data }: Pick<SurfaceProps, 'role' | 'data'>) => {
|
|
38
|
+
const surfaces = context.getCapabilities(Capabilities.ReactSurface);
|
|
39
39
|
const candidates = findCandidates(surfaces.flat(), { role, data });
|
|
40
40
|
return candidates.length > 0;
|
|
41
41
|
};
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
|
|
5
|
+
import { useRxValue } from '@effect-rx/rx-react';
|
|
6
|
+
|
|
7
|
+
import { invariant } from '@dxos/invariant';
|
|
7
8
|
|
|
8
9
|
import { usePluginManager } from './PluginManagerProvider';
|
|
9
10
|
import { type InterfaceDef } from '../core';
|
|
@@ -12,17 +13,9 @@ import { type InterfaceDef } from '../core';
|
|
|
12
13
|
* Hook to request capabilities from the plugin context.
|
|
13
14
|
* @returns An array of capabilities.
|
|
14
15
|
*/
|
|
15
|
-
export const useCapabilities = <T
|
|
16
|
-
interfaceDef: InterfaceDef<T>,
|
|
17
|
-
filter?: (capability: T, moduleId: string) => capability is U,
|
|
18
|
-
) => {
|
|
16
|
+
export const useCapabilities = <T>(interfaceDef: InterfaceDef<T>) => {
|
|
19
17
|
const manager = usePluginManager();
|
|
20
|
-
|
|
21
|
-
() => computed(() => manager.context.requestCapabilities(interfaceDef, filter)),
|
|
22
|
-
[interfaceDef],
|
|
23
|
-
);
|
|
24
|
-
|
|
25
|
-
return signal.value;
|
|
18
|
+
return useRxValue(manager.context.capabilities(interfaceDef));
|
|
26
19
|
};
|
|
27
20
|
|
|
28
21
|
/**
|
|
@@ -30,11 +23,8 @@ export const useCapabilities = <T, U extends T = T>(
|
|
|
30
23
|
* @returns The capability.
|
|
31
24
|
* @throws If no capability is found.
|
|
32
25
|
*/
|
|
33
|
-
export const useCapability = <T
|
|
34
|
-
interfaceDef
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const manager = usePluginManager();
|
|
38
|
-
const signal = useMemo(() => computed(() => manager.context.requestCapability(interfaceDef, filter)), [interfaceDef]);
|
|
39
|
-
return signal.value;
|
|
26
|
+
export const useCapability = <T>(interfaceDef: InterfaceDef<T>) => {
|
|
27
|
+
const capabilities = useCapabilities(interfaceDef);
|
|
28
|
+
invariant(capabilities.length > 0, `No capability found for ${interfaceDef.identifier}`);
|
|
29
|
+
return capabilities[0];
|
|
40
30
|
};
|
|
@@ -3,21 +3,29 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { type Decorator } from '@storybook/react';
|
|
6
|
-
import React, { useEffect } from 'react';
|
|
6
|
+
import React, { useEffect, useMemo } from 'react';
|
|
7
7
|
|
|
8
8
|
import { raise } from '@dxos/debug';
|
|
9
9
|
|
|
10
|
-
import {
|
|
10
|
+
import { useApp, type CreateAppOptions } from '../App';
|
|
11
11
|
import { Capabilities, Events } from '../common';
|
|
12
12
|
import {
|
|
13
|
-
type ActivationEvent,
|
|
14
|
-
type AnyCapability,
|
|
15
13
|
contributes,
|
|
16
14
|
defineModule,
|
|
17
15
|
definePlugin,
|
|
16
|
+
type ActivationEvent,
|
|
17
|
+
type AnyCapability,
|
|
18
18
|
PluginManager,
|
|
19
|
+
type PluginContext,
|
|
19
20
|
} from '../core';
|
|
20
21
|
|
|
22
|
+
// TODO(burdon): Factor out (use consistently in plugin framework?)
|
|
23
|
+
export type Provider<C, R> = (context: C) => R;
|
|
24
|
+
export type ProviderOrValue<C, R> = Provider<C, R> | R;
|
|
25
|
+
export const getValue = <C, R>(providerOrValue: ProviderOrValue<C, R>, context: C): R => {
|
|
26
|
+
return typeof providerOrValue === 'function' ? (providerOrValue as Provider<C, R>)(context) : providerOrValue;
|
|
27
|
+
};
|
|
28
|
+
|
|
21
29
|
/**
|
|
22
30
|
* @internal
|
|
23
31
|
*/
|
|
@@ -26,7 +34,7 @@ export const setupPluginManager = ({
|
|
|
26
34
|
plugins = [],
|
|
27
35
|
core = plugins.map(({ meta }) => meta.id),
|
|
28
36
|
...options
|
|
29
|
-
}: CreateAppOptions &
|
|
37
|
+
}: CreateAppOptions & Pick<WithPluginManagerOptions, 'capabilities'> = {}) => {
|
|
30
38
|
const pluginManager = new PluginManager({
|
|
31
39
|
pluginLoader: () => raise(new Error('Not implemented')),
|
|
32
40
|
plugins: [StoryPlugin(), ...plugins],
|
|
@@ -35,7 +43,7 @@ export const setupPluginManager = ({
|
|
|
35
43
|
});
|
|
36
44
|
|
|
37
45
|
if (capabilities) {
|
|
38
|
-
capabilities.forEach((capability) => {
|
|
46
|
+
getValue(capabilities, pluginManager.context).forEach((capability) => {
|
|
39
47
|
pluginManager.context.contributeCapability({
|
|
40
48
|
interface: capability.interface,
|
|
41
49
|
implementation: capability.implementation,
|
|
@@ -48,22 +56,19 @@ export const setupPluginManager = ({
|
|
|
48
56
|
};
|
|
49
57
|
|
|
50
58
|
export type WithPluginManagerOptions = CreateAppOptions & {
|
|
51
|
-
capabilities?: AnyCapability[]
|
|
59
|
+
capabilities?: ProviderOrValue<PluginContext, AnyCapability[]>;
|
|
52
60
|
fireEvents?: (ActivationEvent | string)[];
|
|
53
61
|
};
|
|
54
62
|
|
|
55
63
|
/**
|
|
56
64
|
* Wraps a story with a plugin manager.
|
|
65
|
+
* NOTE: This builds up and tears down the plugin manager on every render.
|
|
57
66
|
*/
|
|
58
67
|
export const withPluginManager = (options: WithPluginManagerOptions = {}): Decorator => {
|
|
59
|
-
const pluginManager = setupPluginManager(options);
|
|
60
|
-
const App = createApp({ pluginManager });
|
|
61
|
-
|
|
62
|
-
options.fireEvents?.forEach((event) => {
|
|
63
|
-
void pluginManager.activate(event);
|
|
64
|
-
});
|
|
65
|
-
|
|
66
68
|
return (Story, context) => {
|
|
69
|
+
const pluginManager = useMemo(() => setupPluginManager(options), [options]);
|
|
70
|
+
|
|
71
|
+
// Set-up root capability.
|
|
67
72
|
useEffect(() => {
|
|
68
73
|
const capability = contributes(Capabilities.ReactRoot, {
|
|
69
74
|
id: context.id,
|
|
@@ -75,8 +80,22 @@ export const withPluginManager = (options: WithPluginManagerOptions = {}): Decor
|
|
|
75
80
|
module: 'dxos.org/app-framework/withPluginManager',
|
|
76
81
|
});
|
|
77
82
|
|
|
78
|
-
return () =>
|
|
79
|
-
|
|
83
|
+
return () => {
|
|
84
|
+
pluginManager.context.removeCapability(capability.interface, capability.implementation);
|
|
85
|
+
};
|
|
86
|
+
}, [pluginManager, context]);
|
|
87
|
+
|
|
88
|
+
// Fire events.
|
|
89
|
+
useEffect(() => {
|
|
90
|
+
const timeout = setTimeout(async () => {
|
|
91
|
+
await Promise.all(options.fireEvents?.map((event) => pluginManager.activate(event)) ?? []);
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
return () => clearTimeout(timeout);
|
|
95
|
+
}, [pluginManager]);
|
|
96
|
+
|
|
97
|
+
// Create app.
|
|
98
|
+
const App = useApp({ pluginManager });
|
|
80
99
|
|
|
81
100
|
return <App />;
|
|
82
101
|
};
|
package/tsconfig.json
CHANGED
|
@@ -7,59 +7,7 @@
|
|
|
7
7
|
"include": [
|
|
8
8
|
"src"
|
|
9
9
|
],
|
|
10
|
-
"references": [
|
|
11
|
-
{
|
|
12
|
-
"path": "../../common/async"
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
"path": "../../common/debug"
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
"path": "../../common/invariant"
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
"path": "../../common/local-storage"
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
"path": "../../common/log"
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
"path": "../../common/random"
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"path": "../../common/storybook-utils"
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
"path": "../../common/util"
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
"path": "../../core/echo/echo-schema"
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
"path": "../../core/echo/echo-signals"
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
"path": "../../core/echo/live-object"
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
"path": "../../experimental/artifact"
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
"path": "../../ui/primitives/react-hooks"
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
"path": "../../ui/react-ui"
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
"path": "../../ui/react-ui-syntax-highlighter"
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
"path": "../app-graph"
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
"path": "../client-protocol"
|
|
61
|
-
}
|
|
62
|
-
],
|
|
10
|
+
"references": [],
|
|
63
11
|
"ts-node": {
|
|
64
12
|
"compilerOptions": {
|
|
65
13
|
"module": "CommonJS"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
window.hierarchyData = "eJyrVirKzy8pVrKKjtVRKkpNy0lNLsnMzytWsqqurQUAmx4Kpg=="
|