@dxos/app-framework 0.7.5-labs.ea4b4c2 → 0.7.5-labs.f400bbc
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-FKJO22ZQ.mjs → app-graph-builder-S4MYSHQA.mjs} +7 -7
- package/dist/lib/browser/app-graph-builder-S4MYSHQA.mjs.map +7 -0
- package/dist/lib/browser/{chunk-4VFJRQG5.mjs → chunk-BCMEJONP.mjs} +38 -9
- package/dist/lib/browser/chunk-BCMEJONP.mjs.map +7 -0
- package/dist/lib/browser/{chunk-EJQEJKYV.mjs → chunk-QS4J6O47.mjs} +4 -4
- package/dist/lib/browser/{chunk-EJQEJKYV.mjs.map → chunk-QS4J6O47.mjs.map} +3 -3
- package/dist/lib/browser/{chunk-LDJ3T4V3.mjs → chunk-SRZH2PQ2.mjs} +2 -2
- package/dist/lib/browser/{chunk-LDJ3T4V3.mjs.map → chunk-SRZH2PQ2.mjs.map} +1 -1
- package/dist/lib/browser/index.mjs +7 -7
- package/dist/lib/browser/index.mjs.map +2 -2
- package/dist/lib/browser/{intent-dispatcher-AZMM7UEL.mjs → intent-dispatcher-GFBH7T2J.mjs} +2 -2
- package/dist/lib/browser/{intent-resolver-DPZ7H4US.mjs → intent-resolver-KAFM7CQH.mjs} +9 -8
- package/dist/lib/browser/intent-resolver-KAFM7CQH.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/store-L3VRR7II.mjs +29 -0
- package/dist/lib/browser/store-L3VRR7II.mjs.map +7 -0
- package/dist/lib/browser/testing/index.mjs +5 -2
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/browser/worker.mjs +1 -1
- package/dist/lib/node/{app-graph-builder-4MZN2QDW.cjs → app-graph-builder-VMHWFCTP.cjs} +31 -31
- package/dist/lib/node/app-graph-builder-VMHWFCTP.cjs.map +7 -0
- package/dist/lib/node/{chunk-7QM2UK3H.cjs → chunk-7Y6KJ3OK.cjs} +65 -36
- package/dist/lib/node/chunk-7Y6KJ3OK.cjs.map +7 -0
- package/dist/lib/node/{chunk-ENNQHSAF.cjs → chunk-B65NJEIJ.cjs} +19 -19
- package/dist/lib/node/{chunk-ENNQHSAF.cjs.map → chunk-B65NJEIJ.cjs.map} +3 -3
- package/dist/lib/node/{chunk-QLVQ6PND.cjs → chunk-VCIHQZSN.cjs} +5 -5
- package/dist/lib/node/{chunk-QLVQ6PND.cjs.map → chunk-VCIHQZSN.cjs.map} +1 -1
- package/dist/lib/node/index.cjs +78 -78
- package/dist/lib/node/index.cjs.map +2 -2
- package/dist/lib/node/{intent-dispatcher-HCIHZFG5.cjs → intent-dispatcher-PRCC4KZT.cjs} +8 -8
- package/dist/lib/node/{intent-dispatcher-HCIHZFG5.cjs.map → intent-dispatcher-PRCC4KZT.cjs.map} +2 -2
- package/dist/lib/node/{intent-resolver-QTMN3UL7.cjs → intent-resolver-OZDKCHPW.cjs} +15 -14
- package/dist/lib/node/intent-resolver-OZDKCHPW.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{store-CMXLIKTO.cjs → store-BVUKNVKL.cjs} +19 -9
- package/dist/lib/node/store-BVUKNVKL.cjs.map +7 -0
- package/dist/lib/node/testing/index.cjs +11 -8
- package/dist/lib/node/testing/index.cjs.map +3 -3
- package/dist/lib/node/worker.cjs +37 -37
- package/dist/lib/node/worker.cjs.map +1 -1
- package/dist/lib/node-esm/{app-graph-builder-Q2RQKKOT.mjs → app-graph-builder-XHI5IIXQ.mjs} +7 -7
- package/dist/lib/node-esm/app-graph-builder-XHI5IIXQ.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-CNJYZNSL.mjs → chunk-CBT75GCX.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-CNJYZNSL.mjs.map → chunk-CBT75GCX.mjs.map} +1 -1
- package/dist/lib/node-esm/{chunk-FGFGXXDU.mjs → chunk-JDAHZRYQ.mjs} +4 -4
- package/dist/lib/node-esm/{chunk-FGFGXXDU.mjs.map → chunk-JDAHZRYQ.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-SGUPFJDE.mjs → chunk-TVIR2PHY.mjs} +38 -9
- package/dist/lib/node-esm/chunk-TVIR2PHY.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +7 -7
- package/dist/lib/node-esm/index.mjs.map +2 -2
- package/dist/lib/node-esm/{intent-dispatcher-A4DEMSFG.mjs → intent-dispatcher-LGACN32C.mjs} +2 -2
- package/dist/lib/node-esm/{intent-resolver-6IUNTD6Z.mjs → intent-resolver-RBNG76ZX.mjs} +9 -8
- package/dist/lib/node-esm/intent-resolver-RBNG76ZX.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/store-PHTOEREN.mjs +30 -0
- package/dist/lib/node-esm/store-PHTOEREN.mjs.map +7 -0
- package/dist/lib/node-esm/testing/index.mjs +5 -2
- package/dist/lib/node-esm/testing/index.mjs.map +3 -3
- package/dist/lib/node-esm/worker.mjs +1 -1
- package/dist/types/src/App.d.ts +2 -2
- package/dist/types/src/App.d.ts.map +1 -1
- package/dist/types/src/common/capabilities.d.ts +50 -42
- package/dist/types/src/common/capabilities.d.ts.map +1 -1
- package/dist/types/src/common/events.d.ts +16 -12
- package/dist/types/src/common/events.d.ts.map +1 -1
- package/dist/types/src/common/layout.d.ts +14 -0
- package/dist/types/src/common/layout.d.ts.map +1 -1
- package/dist/types/src/playground/debug/Debug.d.ts +2 -3
- package/dist/types/src/playground/debug/Debug.d.ts.map +1 -1
- package/dist/types/src/playground/debug/plugin.d.ts +1 -1
- package/dist/types/src/playground/debug/plugin.d.ts.map +1 -1
- package/dist/types/src/playground/generator/Main.d.ts +2 -3
- package/dist/types/src/playground/generator/Main.d.ts.map +1 -1
- package/dist/types/src/playground/generator/Toolbar.d.ts +2 -3
- package/dist/types/src/playground/generator/Toolbar.d.ts.map +1 -1
- package/dist/types/src/playground/generator/generator.d.ts +3 -3
- package/dist/types/src/playground/generator/generator.d.ts.map +1 -1
- package/dist/types/src/playground/generator/plugin.d.ts +1 -1
- package/dist/types/src/playground/generator/plugin.d.ts.map +1 -1
- package/dist/types/src/playground/layout/Layout.d.ts +2 -2
- package/dist/types/src/playground/layout/Layout.d.ts.map +1 -1
- package/dist/types/src/playground/layout/plugin.d.ts +1 -1
- package/dist/types/src/playground/layout/plugin.d.ts.map +1 -1
- package/dist/types/src/playground/logger/Toolbar.d.ts +2 -3
- package/dist/types/src/playground/logger/Toolbar.d.ts.map +1 -1
- package/dist/types/src/playground/logger/plugin.d.ts +1 -1
- package/dist/types/src/playground/logger/plugin.d.ts.map +1 -1
- package/dist/types/src/playground/playground.stories.d.ts +2 -3
- package/dist/types/src/playground/playground.stories.d.ts.map +1 -1
- package/dist/types/src/plugin-intent/IntentPlugin.d.ts +1 -1
- package/dist/types/src/plugin-intent/IntentPlugin.d.ts.map +1 -1
- package/dist/types/src/plugin-intent/intent-dispatcher.d.ts +1 -1
- package/dist/types/src/plugin-intent/intent-dispatcher.d.ts.map +1 -1
- package/dist/types/src/plugin-settings/SettingsPlugin.d.ts +1 -1
- package/dist/types/src/plugin-settings/SettingsPlugin.d.ts.map +1 -1
- package/dist/types/src/plugin-settings/actions.d.ts +1 -1
- package/dist/types/src/plugin-settings/actions.d.ts.map +1 -1
- package/dist/types/src/plugin-settings/app-graph-builder.d.ts +1 -1
- package/dist/types/src/plugin-settings/intent-resolver.d.ts +1 -1
- package/dist/types/src/plugin-settings/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/plugin-settings/store.d.ts +1 -1
- 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/Surface.stories.d.ts +2 -3
- package/dist/types/src/react/Surface.stories.d.ts.map +1 -1
- package/dist/types/src/react/common.d.ts +2 -1
- package/dist/types/src/react/common.d.ts.map +1 -1
- package/dist/types/src/testing/withPluginManager.d.ts +6 -4
- package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
- package/package.json +19 -18
- package/project.json +1 -0
- package/src/App.tsx +3 -2
- package/src/common/capabilities.ts +4 -0
- package/src/common/events.ts +7 -2
- package/src/common/layout.ts +13 -0
- package/src/playground/generator/generator.ts +1 -1
- package/src/playground/logger/plugin.ts +1 -1
- package/src/plugin-intent/intent-dispatcher.ts +7 -3
- package/src/plugin-settings/SettingsPlugin.ts +1 -1
- package/src/plugin-settings/actions.ts +1 -1
- package/src/plugin-settings/app-graph-builder.ts +4 -4
- package/src/plugin-settings/intent-resolver.ts +10 -4
- package/src/plugin-settings/store.ts +15 -5
- package/src/testing/withPluginManager.tsx +18 -2
- package/tsconfig.json +1 -10
- package/dist/lib/browser/app-graph-builder-FKJO22ZQ.mjs.map +0 -7
- package/dist/lib/browser/chunk-4VFJRQG5.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-DPZ7H4US.mjs.map +0 -7
- package/dist/lib/browser/store-MNPEQWEA.mjs +0 -19
- package/dist/lib/browser/store-MNPEQWEA.mjs.map +0 -7
- package/dist/lib/node/app-graph-builder-4MZN2QDW.cjs.map +0 -7
- package/dist/lib/node/chunk-7QM2UK3H.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-QTMN3UL7.cjs.map +0 -7
- package/dist/lib/node/store-CMXLIKTO.cjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-Q2RQKKOT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-SGUPFJDE.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-6IUNTD6Z.mjs.map +0 -7
- package/dist/lib/node-esm/store-Q6QU5OV4.mjs +0 -20
- package/dist/lib/node-esm/store-Q6QU5OV4.mjs.map +0 -7
- /package/{.eslintrc.js → .eslintrc.cjs} +0 -0
- /package/dist/lib/browser/{intent-dispatcher-AZMM7UEL.mjs.map → intent-dispatcher-GFBH7T2J.mjs.map} +0 -0
- /package/dist/lib/node-esm/{intent-dispatcher-A4DEMSFG.mjs.map → intent-dispatcher-LGACN32C.mjs.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/react/PluginManagerProvider.ts", "../../../src/react/useCapabilities.ts", "../../../src/react/common.ts", "../../../src/react/ErrorBoundary.tsx", "../../../src/react/Surface.tsx", "../../../src/react/useIntentResolver.ts", "../../../src/App.tsx", "../../../src/helpers.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { createContext, useContext } from 'react';\n\nimport { raise } from '@dxos/debug';\n\nimport { type PluginManager } from '../core';\n\nconst PluginManagerContext = createContext<PluginManager | undefined>(undefined);\n\n/**\n * Get the plugin manager.\n */\nexport const usePluginManager = (): PluginManager =>\n useContext(PluginManagerContext) ?? raise(new Error('Missing PluginManagerContext'));\n\n/**\n * Context provider for a plugin manager.\n */\nexport const PluginManagerProvider = PluginManagerContext.Provider;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { computed } from '@preact/signals-core';\nimport { useMemo } from 'react';\n\nimport { usePluginManager } from './PluginManagerProvider';\nimport { type InterfaceDef } from '../core';\n\n/**\n * Hook to request capabilities from the plugin context.\n * @returns An array of capabilities.\n */\nexport const useCapabilities = <T, U extends T = T>(\n interfaceDef: InterfaceDef<T>,\n filter?: (capability: T, moduleId: string) => capability is U,\n) => {\n const manager = usePluginManager();\n const signal = useMemo(\n () => computed(() => manager.context.requestCapabilities(interfaceDef, filter)),\n [interfaceDef],\n );\n\n return signal.value;\n};\n\n/**\n * Hook to request a capability from the plugin context.\n * @returns The capability.\n * @throws If no capability is found.\n */\nexport const useCapability = <T, U extends T = T>(\n interfaceDef: InterfaceDef<T>,\n filter?: (capability: T, moduleId: string) => capability is U,\n) => {\n const manager = usePluginManager();\n const signal = useMemo(() => computed(() => manager.context.requestCapability(interfaceDef, filter)), [interfaceDef]);\n return signal.value;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCapability } from './useCapabilities';\nimport { Capabilities } from '../common';\n\nexport const useIntentDispatcher = () => useCapability(Capabilities.IntentDispatcher);\n\nexport const useAppGraph = () => useCapability(Capabilities.AppGraph);\n\nexport const useLayout = () => useCapability(Capabilities.Layout);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { Component, type FC, type PropsWithChildren } from 'react';\n\ntype Props = PropsWithChildren<{ data?: any; fallback: FC<{ data?: any; error: Error; reset: () => void }> }>;\ntype State = { error: Error | undefined };\n\n/**\n * Surface error boundary.\n *\n * For basic usage prefer providing a fallback component to `Surface`.\n *\n * For more information on error boundaries, see:\n * https://react.dev/reference/react/Component#catching-rendering-errors-with-an-error-boundary\n */\nexport class ErrorBoundary extends Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = { error: undefined };\n }\n\n static getDerivedStateFromError(error: Error) {\n return { error };\n }\n\n override componentDidUpdate(prevProps: Props): void {\n if (prevProps.data !== this.props.data) {\n this.resetError();\n }\n }\n\n override render() {\n if (this.state.error) {\n return <this.props.fallback data={this.props.data} error={this.state.error} reset={this.resetError} />;\n }\n\n return this.props.children;\n }\n\n private resetError() {\n this.setState({ error: undefined });\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { memo, forwardRef, Suspense, useMemo } from 'react';\n\nimport { useDefaultValue } from '@dxos/react-hooks';\nimport { byPosition } from '@dxos/util';\n\nimport { ErrorBoundary } from './ErrorBoundary';\nimport { useCapabilities } from './useCapabilities';\nimport { Capabilities, type SurfaceDefinition, type SurfaceProps } from '../common';\nimport { type PluginsContext } from '../core';\n\n/**\n * @internal\n */\nexport const useSurfaces = () => {\n const surfaces = useCapabilities(Capabilities.ReactSurface);\n return useMemo(() => surfaces.flat(), [surfaces]);\n};\n\nconst findCandidates = (surfaces: SurfaceDefinition[], { role, data }: Pick<SurfaceProps, 'role' | 'data'>) => {\n return Object.values(surfaces)\n .filter((definition) =>\n Array.isArray(definition.role) ? definition.role.includes(role) : definition.role === role,\n )\n .filter(({ filter }) => (filter ? filter(data ?? {}) : true))\n .toSorted(byPosition);\n};\n\n/**\n * @returns `true` if there is a contributed surface which matches the specified role & data, `false` otherwise.\n */\nexport const isSurfaceAvailable = (context: PluginsContext, { role, data }: Pick<SurfaceProps, 'role' | 'data'>) => {\n const surfaces = context.requestCapabilities(Capabilities.ReactSurface);\n const candidates = findCandidates(surfaces.flat(), { role, data });\n return candidates.length > 0;\n};\n\n/**\n * A surface is a named region of the screen that can be populated by plugins.\n */\nexport const Surface = memo(\n forwardRef<HTMLElement, SurfaceProps>(\n ({ id: _id, role, data: _data, limit, fallback, placeholder, ...rest }, forwardedRef) => {\n // TODO(wittjosiah): This will make all surfaces depend on a single signal.\n // This isn't ideal because it means that any change to the data will cause all surfaces to re-render.\n // This effectively means that plugin modules which contribute surfaces need to all be activated at startup.\n // This should be fine for now because it's how it worked prior to capabilities api anyways.\n // In the future, it would be nice to be able to bucket the surface contributions by role.\n const surfaces = useSurfaces();\n const data = useDefaultValue(_data, () => ({}));\n\n // NOTE: Memoizing the candidates makes the surface not re-render based on reactivity within data.\n const definitions = findCandidates(surfaces, { role, data });\n const candidates = limit ? definitions.slice(0, limit) : definitions;\n const nodes = candidates.map(({ component: Component, id }) => (\n <Component ref={forwardedRef} key={id} id={id} role={role} data={data} limit={limit} {...rest} />\n ));\n\n const suspense = placeholder ? <Suspense fallback={placeholder}>{nodes}</Suspense> : nodes;\n\n return fallback ? (\n <ErrorBoundary data={data} fallback={fallback}>\n {suspense}\n </ErrorBoundary>\n ) : (\n suspense\n );\n },\n ),\n);\n\nSurface.displayName = 'Surface';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { Capabilities } from '../common';\nimport { type AnyIntentResolver } from '../plugin-intent';\nimport { usePluginManager } from '../react';\n\nexport const useIntentResolver = (module: string, resolver: AnyIntentResolver) => {\n const manager = usePluginManager();\n useEffect(() => {\n manager.context.contributeCapability({\n module,\n interface: Capabilities.IntentResolver,\n implementation: resolver,\n });\n\n return () => manager.context.removeCapability(Capabilities.IntentResolver, resolver);\n }, [module, resolver]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { effect } from '@preact/signals-core';\nimport React, { type PropsWithChildren, type ReactNode } from 'react';\n\nimport { invariant } from '@dxos/invariant';\nimport { create } from '@dxos/live-object';\n\nimport { Capabilities, Events } from './common';\nimport { PluginManager, type PluginManagerOptions, type Plugin } from './core';\nimport { topologicalSort } from './helpers';\nimport { ErrorBoundary, PluginManagerProvider, useCapabilities } from './react';\n\nconst ENABLED_KEY = 'dxos.org/app-framework/enabled';\n\nexport type CreateAppOptions = {\n pluginManager?: PluginManager;\n pluginLoader?: PluginManagerOptions['pluginLoader'];\n plugins?: Plugin[];\n core?: string[];\n defaults?: string[];\n placeholder?: ReactNode;\n fallback?: ErrorBoundary['props']['fallback'];\n cacheEnabled?: boolean;\n};\n\n/**\n * Expected usage is for this to be the entrypoint of the application.\n * Initializes plugins and renders the root components.\n *\n * @example\n * const plugins = [LayoutPlugin(), MyPlugin()];\n * const core = [LayoutPluginId];\n * const default = [MyPluginId];\n * const fallback = <div>Initializing Plugins...</div>;\n * const App = createApp({ plugins, core, default, fallback });\n * createRoot(document.getElementById('root')!).render(\n * <StrictMode>\n * <App />\n * </StrictMode>,\n * );\n *\n * @param params.pluginLoader A function which loads new plugins.\n * @param params.plugins All plugins available to the application.\n * @param params.core Core plugins which will always be enabled.\n * @param params.defaults Default plugins are enabled by default but can be disabled by the user.\n * @param params.placeholder Placeholder component to render during startup.\n * @param params.fallback Fallback component to render if an error occurs during startup.\n * @param params.cacheEnabled Whether to cache enabled plugins in localStorage.\n */\nexport const createApp = ({\n pluginManager,\n pluginLoader: _pluginLoader,\n plugins = [],\n core = plugins.map(({ meta }) => meta.id),\n defaults = [],\n placeholder = null,\n fallback = DefaultFallback,\n cacheEnabled = false,\n}: CreateAppOptions) => {\n // TODO(wittjosiah): Provide a custom plugin loader which supports loading via url.\n const pluginLoader =\n _pluginLoader ??\n ((id: string) => {\n const plugin = plugins.find((plugin) => plugin.meta.id === id);\n invariant(plugin, `Plugin not found: ${id}`);\n return plugin;\n });\n\n const state = create({ ready: false, error: null });\n const cached: string[] = JSON.parse(localStorage.getItem(ENABLED_KEY) ?? '[]');\n const enabled = cacheEnabled && cached.length > 0 ? cached : defaults;\n const manager = pluginManager ?? new PluginManager({ pluginLoader, plugins, core, enabled });\n\n manager.activation.on(({ event, state: _state, error }) => {\n if (event === Events.Startup.id) {\n state.ready = _state === 'activated';\n }\n\n if (error && !state.ready && !state.error) {\n state.error = error;\n }\n });\n\n effect(() => {\n cacheEnabled && localStorage.setItem(ENABLED_KEY, JSON.stringify(manager.enabled));\n });\n\n manager.context.contributeCapability({\n interface: Capabilities.PluginManager,\n implementation: manager,\n module: 'dxos.org/app-framework/plugin-manager',\n });\n\n setupDevtools(manager);\n\n // TODO(wittjosiah): Factor out such that this could be called per surface role when attempting to render.\n void manager.activate(Events.SetupSurfaces);\n void manager.activate(Events.Startup);\n\n return () => (\n <ErrorBoundary fallback={fallback}>\n <PluginManagerProvider value={manager}>\n <App placeholder={placeholder} state={state} />\n </PluginManagerProvider>\n </ErrorBoundary>\n );\n};\n\ntype AppProps = Required<Pick<CreateAppOptions, 'placeholder'>> & {\n state: { ready: boolean; error: unknown };\n};\n\nconst App = ({ placeholder, state }: AppProps) => {\n const reactContexts = useCapabilities(Capabilities.ReactContext);\n const reactRoots = useCapabilities(Capabilities.ReactRoot);\n\n if (state.error) {\n // This trigger the error boundary to provide UI feedback for the startup error.\n throw state.error;\n }\n\n // TODO(wittjosiah): Consider using Suspense instead?\n if (!state.ready) {\n return <>{placeholder}</>;\n }\n\n const ComposedContext = composeContexts(reactContexts);\n return (\n <ComposedContext>\n {reactRoots.map(({ id, root: Component }) => (\n <Component key={id} />\n ))}\n </ComposedContext>\n );\n};\n\n// Default fallback does not use tailwind or theme.\nconst DefaultFallback = ({ error }: { error: Error }) => {\n return (\n <div style={{ padding: '1rem' }}>\n {/* TODO(wittjosiah): Link to docs for replacing default. */}\n <h1 style={{ fontSize: '1.2rem', fontWeight: 700, margin: '0.5rem 0' }}>{error.message}</h1>\n <pre>{error.stack}</pre>\n </div>\n );\n};\n\nconst composeContexts = (contexts: Capabilities.ReactContext[]) => {\n if (contexts.length === 0) {\n return ({ children }: PropsWithChildren) => <>{children}</>;\n }\n\n return topologicalSort(contexts)\n .map(({ context }) => context)\n .reduce((Acc, Next) => ({ children }) => (\n <Acc>\n <Next>{children}</Next>\n </Acc>\n ));\n};\n\nconst setupDevtools = (manager: PluginManager) => {\n (globalThis as any).composer ??= {};\n (globalThis as any).composer.manager = manager;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\ntype DependencyNode = {\n id: string;\n dependsOn?: string[];\n};\n\n/**\n * Topologically sorts a list of nodes based on their dependencies.\n */\n// TODO(wittjosiah): Factor out?\nexport const topologicalSort = <T extends DependencyNode>(nodes: T[]): T[] => {\n const getDependencies = (nodeId: string, seen = new Set<string>(), path = new Set<string>()): string[] => {\n if (path.has(nodeId)) {\n throw new Error(`Circular dependency detected involving ${nodeId}`);\n }\n if (seen.has(nodeId)) {\n return [];\n }\n\n const node = nodes.find((n) => n.id === nodeId);\n if (!node) {\n throw new Error(`Node ${nodeId} not found but is listed as a dependency`);\n }\n\n const newPath = new Set([...path, nodeId]);\n const newSeen = new Set([...seen, nodeId]);\n\n const dependsOn = node.dependsOn ?? [];\n return [...dependsOn.flatMap((depId) => getDependencies(depId, newSeen, newPath)), nodeId];\n };\n\n // Get all unique dependencies.\n const allDependencies = nodes\n .map((node) => node.id)\n .flatMap((id) => getDependencies(id))\n .filter((id, index, self) => self.indexOf(id) === index);\n\n // Map back to original nodes\n return allDependencies\n .map((id) => nodes.find((node) => node.id === id))\n .filter((node): node is T => node !== undefined);\n};\n"],
|
|
5
|
-
"mappings": "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
|
|
6
|
-
"names": ["createContext", "useContext", "raise", "PluginManagerContext", "createContext", "undefined", "usePluginManager", "useContext", "raise", "Error", "PluginManagerProvider", "Provider", "computed", "useMemo", "useCapabilities", "interfaceDef", "filter", "manager", "usePluginManager", "signal", "useMemo", "computed", "context", "requestCapabilities", "value", "useCapability", "requestCapability", "useIntentDispatcher", "useCapability", "Capabilities", "IntentDispatcher", "useAppGraph", "AppGraph", "useLayout", "Layout", "React", "Component", "ErrorBoundary", "Component", "constructor", "props", "state", "error", "undefined", "getDerivedStateFromError", "componentDidUpdate", "prevProps", "data", "resetError", "render", "this", "fallback", "reset", "children", "setState", "React", "memo", "forwardRef", "Suspense", "useMemo", "useDefaultValue", "byPosition", "useSurfaces", "surfaces", "useCapabilities", "Capabilities", "ReactSurface", "useMemo", "flat", "findCandidates", "role", "data", "Object", "values", "filter", "definition", "Array", "isArray", "includes", "toSorted", "byPosition", "isSurfaceAvailable", "context", "requestCapabilities", "candidates", "length", "Surface", "memo", "forwardRef", "id", "_id", "_data", "limit", "fallback", "placeholder", "rest", "forwardedRef", "useDefaultValue", "definitions", "slice", "nodes", "map", "component", "Component", "React", "ref", "key", "suspense", "Suspense", "ErrorBoundary", "displayName", "useEffect", "useIntentResolver", "module", "resolver", "manager", "usePluginManager", "useEffect", "context", "contributeCapability", "interface", "Capabilities", "IntentResolver", "implementation", "removeCapability", "effect", "React", "invariant", "create", "topologicalSort", "nodes", "getDependencies", "nodeId", "seen", "Set", "path", "has", "Error", "node", "find", "n", "id", "newPath", "newSeen", "dependsOn", "flatMap", "depId", "allDependencies", "map", "filter", "index", "self", "indexOf", "undefined", "ENABLED_KEY", "createApp", "pluginManager", "pluginLoader", "_pluginLoader", "plugins", "core", "map", "meta", "id", "defaults", "placeholder", "fallback", "DefaultFallback", "cacheEnabled", "plugin", "find", "invariant", "state", "create", "ready", "error", "cached", "JSON", "parse", "localStorage", "getItem", "enabled", "length", "manager", "PluginManager", "activation", "on", "event", "_state", "Events", "Startup", "effect", "setItem", "stringify", "context", "contributeCapability", "interface", "Capabilities", "implementation", "module", "setupDevtools", "activate", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { createContext, useContext } from 'react';\n\nimport { raise } from '@dxos/debug';\n\nimport { type PluginManager } from '../core';\n\nconst PluginManagerContext = createContext<PluginManager | undefined>(undefined);\n\n/**\n * Get the plugin manager.\n */\nexport const usePluginManager = (): PluginManager =>\n useContext(PluginManagerContext) ?? raise(new Error('Missing PluginManagerContext'));\n\n/**\n * Context provider for a plugin manager.\n */\nexport const PluginManagerProvider = PluginManagerContext.Provider;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { computed } from '@preact/signals-core';\nimport { useMemo } from 'react';\n\nimport { usePluginManager } from './PluginManagerProvider';\nimport { type InterfaceDef } from '../core';\n\n/**\n * Hook to request capabilities from the plugin context.\n * @returns An array of capabilities.\n */\nexport const useCapabilities = <T, U extends T = T>(\n interfaceDef: InterfaceDef<T>,\n filter?: (capability: T, moduleId: string) => capability is U,\n) => {\n const manager = usePluginManager();\n const signal = useMemo(\n () => computed(() => manager.context.requestCapabilities(interfaceDef, filter)),\n [interfaceDef],\n );\n\n return signal.value;\n};\n\n/**\n * Hook to request a capability from the plugin context.\n * @returns The capability.\n * @throws If no capability is found.\n */\nexport const useCapability = <T, U extends T = T>(\n interfaceDef: InterfaceDef<T>,\n filter?: (capability: T, moduleId: string) => capability is U,\n) => {\n const manager = usePluginManager();\n const signal = useMemo(() => computed(() => manager.context.requestCapability(interfaceDef, filter)), [interfaceDef]);\n return signal.value;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCapability } from './useCapabilities';\nimport { Capabilities } from '../common';\n\nexport const useIntentDispatcher = () => useCapability(Capabilities.IntentDispatcher);\n\nexport const useAppGraph = () => useCapability(Capabilities.AppGraph);\n\nexport const useLayout = () => useCapability(Capabilities.Layout);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { Component, type FC, type PropsWithChildren } from 'react';\n\ntype Props = PropsWithChildren<{ data?: any; fallback: FC<{ data?: any; error: Error; reset: () => void }> }>;\ntype State = { error: Error | undefined };\n\n/**\n * Surface error boundary.\n *\n * For basic usage prefer providing a fallback component to `Surface`.\n *\n * For more information on error boundaries, see:\n * https://react.dev/reference/react/Component#catching-rendering-errors-with-an-error-boundary\n */\nexport class ErrorBoundary extends Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = { error: undefined };\n }\n\n static getDerivedStateFromError(error: Error) {\n return { error };\n }\n\n override componentDidUpdate(prevProps: Props): void {\n if (prevProps.data !== this.props.data) {\n this.resetError();\n }\n }\n\n override render() {\n if (this.state.error) {\n return <this.props.fallback data={this.props.data} error={this.state.error} reset={this.resetError} />;\n }\n\n return this.props.children;\n }\n\n private resetError() {\n this.setState({ error: undefined });\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { memo, forwardRef, Suspense, useMemo } from 'react';\n\nimport { useDefaultValue } from '@dxos/react-hooks';\nimport { byPosition } from '@dxos/util';\n\nimport { ErrorBoundary } from './ErrorBoundary';\nimport { useCapabilities } from './useCapabilities';\nimport { Capabilities, type SurfaceDefinition, type SurfaceProps } from '../common';\nimport { type PluginsContext } from '../core';\n\n/**\n * @internal\n */\nexport const useSurfaces = () => {\n const surfaces = useCapabilities(Capabilities.ReactSurface);\n return useMemo(() => surfaces.flat(), [surfaces]);\n};\n\nconst findCandidates = (surfaces: SurfaceDefinition[], { role, data }: Pick<SurfaceProps, 'role' | 'data'>) => {\n return Object.values(surfaces)\n .filter((definition) =>\n Array.isArray(definition.role) ? definition.role.includes(role) : definition.role === role,\n )\n .filter(({ filter }) => (filter ? filter(data ?? {}) : true))\n .toSorted(byPosition);\n};\n\n/**\n * @returns `true` if there is a contributed surface which matches the specified role & data, `false` otherwise.\n */\nexport const isSurfaceAvailable = (context: PluginsContext, { role, data }: Pick<SurfaceProps, 'role' | 'data'>) => {\n const surfaces = context.requestCapabilities(Capabilities.ReactSurface);\n const candidates = findCandidates(surfaces.flat(), { role, data });\n return candidates.length > 0;\n};\n\n/**\n * A surface is a named region of the screen that can be populated by plugins.\n */\nexport const Surface = memo(\n forwardRef<HTMLElement, SurfaceProps>(\n ({ id: _id, role, data: _data, limit, fallback, placeholder, ...rest }, forwardedRef) => {\n // TODO(wittjosiah): This will make all surfaces depend on a single signal.\n // This isn't ideal because it means that any change to the data will cause all surfaces to re-render.\n // This effectively means that plugin modules which contribute surfaces need to all be activated at startup.\n // This should be fine for now because it's how it worked prior to capabilities api anyways.\n // In the future, it would be nice to be able to bucket the surface contributions by role.\n const surfaces = useSurfaces();\n const data = useDefaultValue(_data, () => ({}));\n\n // NOTE: Memoizing the candidates makes the surface not re-render based on reactivity within data.\n const definitions = findCandidates(surfaces, { role, data });\n const candidates = limit ? definitions.slice(0, limit) : definitions;\n const nodes = candidates.map(({ component: Component, id }) => (\n <Component ref={forwardedRef} key={id} id={id} role={role} data={data} limit={limit} {...rest} />\n ));\n\n const suspense = placeholder ? <Suspense fallback={placeholder}>{nodes}</Suspense> : nodes;\n\n return fallback ? (\n <ErrorBoundary data={data} fallback={fallback}>\n {suspense}\n </ErrorBoundary>\n ) : (\n suspense\n );\n },\n ),\n);\n\nSurface.displayName = 'Surface';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { Capabilities } from '../common';\nimport { type AnyIntentResolver } from '../plugin-intent';\nimport { usePluginManager } from '../react';\n\nexport const useIntentResolver = (module: string, resolver: AnyIntentResolver) => {\n const manager = usePluginManager();\n useEffect(() => {\n manager.context.contributeCapability({\n module,\n interface: Capabilities.IntentResolver,\n implementation: resolver,\n });\n\n return () => manager.context.removeCapability(Capabilities.IntentResolver, resolver);\n }, [module, resolver]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { effect } from '@preact/signals-core';\nimport React, { type PropsWithChildren, type ReactNode } from 'react';\n\nimport { invariant } from '@dxos/invariant';\nimport { create } from '@dxos/live-object';\n\nimport { Capabilities, Events } from './common';\nimport { PluginManager, type PluginManagerOptions, type Plugin } from './core';\nimport { topologicalSort } from './helpers';\nimport { ErrorBoundary, PluginManagerProvider, useCapabilities } from './react';\n\nconst ENABLED_KEY = 'dxos.org/app-framework/enabled';\n\nexport type CreateAppOptions = {\n pluginManager?: PluginManager;\n pluginLoader?: PluginManagerOptions['pluginLoader'];\n plugins?: Plugin[];\n core?: string[];\n defaults?: string[];\n placeholder?: ReactNode;\n fallback?: ErrorBoundary['props']['fallback'];\n cacheEnabled?: boolean;\n};\n\n/**\n * Expected usage is for this to be the entrypoint of the application.\n * Initializes plugins and renders the root components.\n *\n * @example\n * const plugins = [LayoutPlugin(), MyPlugin()];\n * const core = [LayoutPluginId];\n * const default = [MyPluginId];\n * const fallback = <div>Initializing Plugins...</div>;\n * const App = createApp({ plugins, core, default, fallback });\n * createRoot(document.getElementById('root')!).render(\n * <StrictMode>\n * <App />\n * </StrictMode>,\n * );\n *\n * @param params.pluginLoader A function which loads new plugins.\n * @param params.plugins All plugins available to the application.\n * @param params.core Core plugins which will always be enabled.\n * @param params.defaults Default plugins are enabled by default but can be disabled by the user.\n * @param params.placeholder Placeholder component to render during startup.\n * @param params.fallback Fallback component to render if an error occurs during startup.\n * @param params.cacheEnabled Whether to cache enabled plugins in localStorage.\n */\nexport const createApp = ({\n pluginManager,\n pluginLoader: _pluginLoader,\n plugins = [],\n core = plugins.map(({ meta }) => meta.id),\n defaults = [],\n placeholder = null,\n fallback = DefaultFallback,\n cacheEnabled = false,\n}: CreateAppOptions) => {\n // TODO(wittjosiah): Provide a custom plugin loader which supports loading via url.\n const pluginLoader =\n _pluginLoader ??\n ((id: string) => {\n const plugin = plugins.find((plugin) => plugin.meta.id === id);\n invariant(plugin, `Plugin not found: ${id}`);\n return plugin;\n });\n\n const state = create({ ready: false, error: null });\n const cached: string[] = JSON.parse(localStorage.getItem(ENABLED_KEY) ?? '[]');\n const enabled = cacheEnabled && cached.length > 0 ? cached : defaults;\n const manager = pluginManager ?? new PluginManager({ pluginLoader, plugins, core, enabled });\n\n manager.activation.on(({ event, state: _state, error }) => {\n // Once the app is ready the first time, don't show the fallback again.\n if (!state.ready && event === Events.Startup.id) {\n state.ready = _state === 'activated';\n }\n\n if (error && !state.ready && !state.error) {\n state.error = error;\n }\n });\n\n effect(() => {\n cacheEnabled && localStorage.setItem(ENABLED_KEY, JSON.stringify(manager.enabled));\n });\n\n manager.context.contributeCapability({\n interface: Capabilities.PluginManager,\n implementation: manager,\n module: 'dxos.org/app-framework/plugin-manager',\n });\n\n setupDevtools(manager);\n\n // TODO(wittjosiah): Factor out such that this could be called per surface role when attempting to render.\n void manager.activate(Events.SetupReactSurface);\n void manager.activate(Events.Startup);\n\n return () => (\n <ErrorBoundary fallback={fallback}>\n <PluginManagerProvider value={manager}>\n <App placeholder={placeholder} state={state} />\n </PluginManagerProvider>\n </ErrorBoundary>\n );\n};\n\ntype AppProps = Required<Pick<CreateAppOptions, 'placeholder'>> & {\n state: { ready: boolean; error: unknown };\n};\n\nconst App = ({ placeholder, state }: AppProps) => {\n const reactContexts = useCapabilities(Capabilities.ReactContext);\n const reactRoots = useCapabilities(Capabilities.ReactRoot);\n\n if (state.error) {\n // This trigger the error boundary to provide UI feedback for the startup error.\n throw state.error;\n }\n\n // TODO(wittjosiah): Consider using Suspense instead?\n if (!state.ready) {\n return <>{placeholder}</>;\n }\n\n const ComposedContext = composeContexts(reactContexts);\n return (\n <ComposedContext>\n {reactRoots.map(({ id, root: Component }) => (\n <Component key={id} />\n ))}\n </ComposedContext>\n );\n};\n\n// Default fallback does not use tailwind or theme.\nconst DefaultFallback = ({ error }: { error: Error }) => {\n return (\n <div style={{ padding: '1rem' }}>\n {/* TODO(wittjosiah): Link to docs for replacing default. */}\n <h1 style={{ fontSize: '1.2rem', fontWeight: 700, margin: '0.5rem 0' }}>{error.message}</h1>\n <pre>{error.stack}</pre>\n </div>\n );\n};\n\nconst composeContexts = (contexts: Capabilities.ReactContext[]) => {\n if (contexts.length === 0) {\n return ({ children }: PropsWithChildren) => <>{children}</>;\n }\n\n return topologicalSort(contexts)\n .map(({ context }) => context)\n .reduce((Acc, Next) => ({ children }) => (\n <Acc>\n <Next>{children}</Next>\n </Acc>\n ));\n};\n\nconst setupDevtools = (manager: PluginManager) => {\n (globalThis as any).composer ??= {};\n (globalThis as any).composer.manager = manager;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\ntype DependencyNode = {\n id: string;\n dependsOn?: string[];\n};\n\n/**\n * Topologically sorts a list of nodes based on their dependencies.\n */\n// TODO(wittjosiah): Factor out?\nexport const topologicalSort = <T extends DependencyNode>(nodes: T[]): T[] => {\n const getDependencies = (nodeId: string, seen = new Set<string>(), path = new Set<string>()): string[] => {\n if (path.has(nodeId)) {\n throw new Error(`Circular dependency detected involving ${nodeId}`);\n }\n if (seen.has(nodeId)) {\n return [];\n }\n\n const node = nodes.find((n) => n.id === nodeId);\n if (!node) {\n throw new Error(`Node ${nodeId} not found but is listed as a dependency`);\n }\n\n const newPath = new Set([...path, nodeId]);\n const newSeen = new Set([...seen, nodeId]);\n\n const dependsOn = node.dependsOn ?? [];\n return [...dependsOn.flatMap((depId) => getDependencies(depId, newSeen, newPath)), nodeId];\n };\n\n // Get all unique dependencies.\n const allDependencies = nodes\n .map((node) => node.id)\n .flatMap((id) => getDependencies(id))\n .filter((id, index, self) => self.indexOf(id) === index);\n\n // Map back to original nodes\n return allDependencies\n .map((id) => nodes.find((node) => node.id === id))\n .filter((node): node is T => node !== undefined);\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["createContext", "useContext", "raise", "PluginManagerContext", "createContext", "undefined", "usePluginManager", "useContext", "raise", "Error", "PluginManagerProvider", "Provider", "computed", "useMemo", "useCapabilities", "interfaceDef", "filter", "manager", "usePluginManager", "signal", "useMemo", "computed", "context", "requestCapabilities", "value", "useCapability", "requestCapability", "useIntentDispatcher", "useCapability", "Capabilities", "IntentDispatcher", "useAppGraph", "AppGraph", "useLayout", "Layout", "React", "Component", "ErrorBoundary", "Component", "constructor", "props", "state", "error", "undefined", "getDerivedStateFromError", "componentDidUpdate", "prevProps", "data", "resetError", "render", "this", "fallback", "reset", "children", "setState", "React", "memo", "forwardRef", "Suspense", "useMemo", "useDefaultValue", "byPosition", "useSurfaces", "surfaces", "useCapabilities", "Capabilities", "ReactSurface", "useMemo", "flat", "findCandidates", "role", "data", "Object", "values", "filter", "definition", "Array", "isArray", "includes", "toSorted", "byPosition", "isSurfaceAvailable", "context", "requestCapabilities", "candidates", "length", "Surface", "memo", "forwardRef", "id", "_id", "_data", "limit", "fallback", "placeholder", "rest", "forwardedRef", "useDefaultValue", "definitions", "slice", "nodes", "map", "component", "Component", "React", "ref", "key", "suspense", "Suspense", "ErrorBoundary", "displayName", "useEffect", "useIntentResolver", "module", "resolver", "manager", "usePluginManager", "useEffect", "context", "contributeCapability", "interface", "Capabilities", "IntentResolver", "implementation", "removeCapability", "effect", "React", "invariant", "create", "topologicalSort", "nodes", "getDependencies", "nodeId", "seen", "Set", "path", "has", "Error", "node", "find", "n", "id", "newPath", "newSeen", "dependsOn", "flatMap", "depId", "allDependencies", "map", "filter", "index", "self", "indexOf", "undefined", "ENABLED_KEY", "createApp", "pluginManager", "pluginLoader", "_pluginLoader", "plugins", "core", "map", "meta", "id", "defaults", "placeholder", "fallback", "DefaultFallback", "cacheEnabled", "plugin", "find", "invariant", "state", "create", "ready", "error", "cached", "JSON", "parse", "localStorage", "getItem", "enabled", "length", "manager", "PluginManager", "activation", "on", "event", "_state", "Events", "Startup", "effect", "setItem", "stringify", "context", "contributeCapability", "interface", "Capabilities", "implementation", "module", "setupDevtools", "activate", "SetupReactSurface", "React", "ErrorBoundary", "PluginManagerProvider", "value", "App", "reactContexts", "useCapabilities", "ReactContext", "reactRoots", "ReactRoot", "ComposedContext", "composeContexts", "root", "Component", "key", "div", "style", "padding", "h1", "fontSize", "fontWeight", "margin", "message", "pre", "stack", "contexts", "children", "topologicalSort", "reduce", "Acc", "Next", "globalThis", "composer"]
|
|
7
7
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { Schema as S } from "@effect/schema";
|
|
3
3
|
var SETTINGS_PLUGIN = "dxos.org/plugin/settings";
|
|
4
4
|
var SETTINGS_ACTION = `${SETTINGS_PLUGIN}/action`;
|
|
5
|
-
var SETTINGS_ID = "dxos:settings";
|
|
5
|
+
var SETTINGS_ID = "!dxos:settings";
|
|
6
6
|
var SETTINGS_KEY = "settings";
|
|
7
7
|
var SettingsAction;
|
|
8
8
|
(function(SettingsAction2) {
|
|
@@ -29,4 +29,4 @@ export {
|
|
|
29
29
|
SETTINGS_KEY,
|
|
30
30
|
SettingsAction
|
|
31
31
|
};
|
|
32
|
-
//# sourceMappingURL=chunk-
|
|
32
|
+
//# sourceMappingURL=chunk-SRZH2PQ2.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/plugin-settings/actions.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Schema as S } from '@effect/schema';\n\nexport const SETTINGS_PLUGIN = 'dxos.org/plugin/settings';\nexport const SETTINGS_ACTION = `${SETTINGS_PLUGIN}/action`;\nexport const SETTINGS_ID = 'dxos:settings';\nexport const SETTINGS_KEY = 'settings';\n\nexport namespace SettingsAction {\n export class Open extends S.TaggedClass<Open>()(`${SETTINGS_ACTION}/open`, {\n input: S.Struct({\n plugin: S.optional(S.String),\n }),\n output: S.Void,\n }) {}\n\n export class OpenPluginRegistry extends S.TaggedClass<OpenPluginRegistry>()(\n `${SETTINGS_ACTION}/open-plugin-registry`,\n {\n input: S.Void,\n output: S.Void,\n },\n ) {}\n}\n"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Schema as S } from '@effect/schema';\n\nexport const SETTINGS_PLUGIN = 'dxos.org/plugin/settings';\nexport const SETTINGS_ACTION = `${SETTINGS_PLUGIN}/action`;\nexport const SETTINGS_ID = '!dxos:settings';\nexport const SETTINGS_KEY = 'settings';\n\nexport namespace SettingsAction {\n export class Open extends S.TaggedClass<Open>()(`${SETTINGS_ACTION}/open`, {\n input: S.Struct({\n plugin: S.optional(S.String),\n }),\n output: S.Void,\n }) {}\n\n export class OpenPluginRegistry extends S.TaggedClass<OpenPluginRegistry>()(\n `${SETTINGS_ACTION}/open-plugin-registry`,\n {\n input: S.Void,\n output: S.Void,\n },\n ) {}\n}\n"],
|
|
5
5
|
"mappings": ";AAIA,SAASA,UAAUC,SAAS;AAErB,IAAMC,kBAAkB;AACxB,IAAMC,kBAAkB,GAAGD,eAAAA;AAC3B,IAAME,cAAc;AACpB,IAAMC,eAAe;;UAEXC,iBAAAA;EACR,MAAMC,aAAaC,EAAEC,YAAW,EAAS,GAAGN,eAAAA,SAAwB;IACzEO,OAAOF,EAAEG,OAAO;MACdC,QAAQJ,EAAEK,SAASL,EAAEM,MAAM;IAC7B,CAAA;IACAC,QAAQP,EAAEQ;EACZ,CAAA,EAAA;EAAI;kBALST,OAAAA;EAON,MAAMU,2BAA2BT,EAAEC,YAAW,EACnD,GAAGN,eAAAA,yBACH;IACEO,OAAOF,EAAEQ;IACTD,QAAQP,EAAEQ;EACZ,CAAA,EAAA;EACC;kBANUC,qBAAAA;AAOf,GAfiBX,mBAAAA,iBAAAA,CAAAA,EAAAA;",
|
|
6
6
|
"names": ["Schema", "S", "SETTINGS_PLUGIN", "SETTINGS_ACTION", "SETTINGS_ID", "SETTINGS_KEY", "SettingsAction", "Open", "S", "TaggedClass", "input", "Struct", "plugin", "optional", "String", "output", "Void", "OpenPluginRegistry"]
|
|
7
7
|
}
|
|
@@ -12,14 +12,14 @@ import {
|
|
|
12
12
|
useLayout,
|
|
13
13
|
usePluginManager,
|
|
14
14
|
useSurfaces
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-QS4J6O47.mjs";
|
|
16
16
|
import {
|
|
17
17
|
SETTINGS_ACTION,
|
|
18
18
|
SETTINGS_ID,
|
|
19
19
|
SETTINGS_KEY,
|
|
20
20
|
SETTINGS_PLUGIN,
|
|
21
21
|
SettingsAction
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-SRZH2PQ2.mjs";
|
|
23
23
|
import {
|
|
24
24
|
Capabilities,
|
|
25
25
|
Events,
|
|
@@ -57,7 +57,7 @@ import {
|
|
|
57
57
|
isOneOf,
|
|
58
58
|
lazy,
|
|
59
59
|
oneOf
|
|
60
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-BCMEJONP.mjs";
|
|
61
61
|
|
|
62
62
|
// packages/sdk/app-framework/src/plugin-settings/translations.ts
|
|
63
63
|
var translations_default = [
|
|
@@ -85,7 +85,7 @@ var SettingsPlugin = () => definePlugin({
|
|
|
85
85
|
activatesAfter: [
|
|
86
86
|
Events.SettingsReady
|
|
87
87
|
],
|
|
88
|
-
activate: lazy(() => import("./store-
|
|
88
|
+
activate: lazy(() => import("./store-L3VRR7II.mjs"))
|
|
89
89
|
}),
|
|
90
90
|
defineModule({
|
|
91
91
|
id: `${SETTINGS_PLUGIN}/module/translations`,
|
|
@@ -94,13 +94,13 @@ var SettingsPlugin = () => definePlugin({
|
|
|
94
94
|
}),
|
|
95
95
|
defineModule({
|
|
96
96
|
id: `${SETTINGS_PLUGIN}/module/intent-resolver`,
|
|
97
|
-
activatesOn: Events.
|
|
98
|
-
activate: lazy(() => import("./intent-resolver-
|
|
97
|
+
activatesOn: Events.SetupIntentResolver,
|
|
98
|
+
activate: lazy(() => import("./intent-resolver-KAFM7CQH.mjs"))
|
|
99
99
|
}),
|
|
100
100
|
defineModule({
|
|
101
101
|
id: `${SETTINGS_PLUGIN}/module/app-graph-builder`,
|
|
102
102
|
activatesOn: Events.SetupAppGraph,
|
|
103
|
-
activate: lazy(() => import("./app-graph-builder-
|
|
103
|
+
activate: lazy(() => import("./app-graph-builder-S4MYSHQA.mjs"))
|
|
104
104
|
})
|
|
105
105
|
]);
|
|
106
106
|
export {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/plugin-settings/translations.ts", "../../../src/plugin-settings/SettingsPlugin.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { SETTINGS_PLUGIN } from './actions';\n\nexport default [\n {\n 'en-US': {\n [SETTINGS_PLUGIN]: {\n 'open settings label': 'Open settings',\n 'app settings label': 'Settings',\n 'custom plugins label': 'Plugins',\n },\n },\n },\n];\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { SETTINGS_PLUGIN } from './actions';\nimport translations from './translations';\nimport { Capabilities, Events } from '../common';\nimport { contributes, defineModule, definePlugin, lazy } from '../core';\n\n// TODO(wittjosiah): Add options to exclude some modules.\nexport const SettingsPlugin = () =>\n definePlugin({ id: SETTINGS_PLUGIN }, [\n defineModule({\n id: `${SETTINGS_PLUGIN}/module/store`,\n activatesOn: Events.Startup,\n activatesBefore: [Events.SetupSettings],\n activatesAfter: [Events.SettingsReady],\n activate: lazy(() => import('./store')),\n }),\n defineModule({\n id: `${SETTINGS_PLUGIN}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, translations),\n }),\n defineModule({\n id: `${SETTINGS_PLUGIN}/module/intent-resolver`,\n activatesOn: Events.
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { SETTINGS_PLUGIN } from './actions';\n\nexport default [\n {\n 'en-US': {\n [SETTINGS_PLUGIN]: {\n 'open settings label': 'Open settings',\n 'app settings label': 'Settings',\n 'custom plugins label': 'Plugins',\n },\n },\n },\n];\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { SETTINGS_PLUGIN } from './actions';\nimport translations from './translations';\nimport { Capabilities, Events } from '../common';\nimport { contributes, defineModule, definePlugin, lazy } from '../core';\n\n// TODO(wittjosiah): Add options to exclude some modules.\nexport const SettingsPlugin = () =>\n definePlugin({ id: SETTINGS_PLUGIN }, [\n defineModule({\n id: `${SETTINGS_PLUGIN}/module/store`,\n activatesOn: Events.Startup,\n activatesBefore: [Events.SetupSettings],\n activatesAfter: [Events.SettingsReady],\n activate: lazy(() => import('./store')),\n }),\n defineModule({\n id: `${SETTINGS_PLUGIN}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, translations),\n }),\n defineModule({\n id: `${SETTINGS_PLUGIN}/module/intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: lazy(() => import('./intent-resolver')),\n }),\n defineModule({\n id: `${SETTINGS_PLUGIN}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: lazy(() => import('./app-graph-builder')),\n }),\n ]);\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAA,uBAAe;EACb;IACE,SAAS;MACP,CAACA,eAAAA,GAAkB;QACjB,uBAAuB;QACvB,sBAAsB;QACtB,wBAAwB;MAC1B;IACF;EACF;;;;ACLK,IAAMC,iBAAiB,MAC5BC,aAAa;EAAEC,IAAIC;AAAgB,GAAG;EACpCC,aAAa;IACXF,IAAI,GAAGC,eAAAA;IACPE,aAAaC,OAAOC;IACpBC,iBAAiB;MAACF,OAAOG;;IACzBC,gBAAgB;MAACJ,OAAOK;;IACxBC,UAAUC,KAAK,MAAM,OAAO,sBAAA,CAAA;EAC9B,CAAA;EACAT,aAAa;IACXF,IAAI,GAAGC,eAAAA;IACPE,aAAaC,OAAOQ;IACpBF,UAAU,MAAMG,YAAYC,aAAaC,cAAcC,oBAAAA;EACzD,CAAA;EACAd,aAAa;IACXF,IAAI,GAAGC,eAAAA;IACPE,aAAaC,OAAOa;IACpBP,UAAUC,KAAK,MAAM,OAAO,gCAAA,CAAA;EAC9B,CAAA;EACAT,aAAa;IACXF,IAAI,GAAGC,eAAAA;IACPE,aAAaC,OAAOc;IACpBR,UAAUC,KAAK,MAAM,OAAO,kCAAA,CAAA;EAC9B,CAAA;CACD;",
|
|
6
|
-
"names": ["SETTINGS_PLUGIN", "SettingsPlugin", "definePlugin", "id", "SETTINGS_PLUGIN", "defineModule", "activatesOn", "Events", "Startup", "activatesBefore", "SetupSettings", "activatesAfter", "SettingsReady", "activate", "lazy", "SetupTranslations", "contributes", "Capabilities", "Translations", "translations", "
|
|
6
|
+
"names": ["SETTINGS_PLUGIN", "SettingsPlugin", "definePlugin", "id", "SETTINGS_PLUGIN", "defineModule", "activatesOn", "Events", "Startup", "activatesBefore", "SetupSettings", "activatesAfter", "SettingsReady", "activate", "lazy", "SetupTranslations", "contributes", "Capabilities", "Translations", "translations", "SetupIntentResolver", "SetupAppGraph"]
|
|
7
7
|
}
|
|
@@ -2,10 +2,10 @@ import {
|
|
|
2
2
|
createDispatcher,
|
|
3
3
|
createResolver,
|
|
4
4
|
intent_dispatcher_default
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-BCMEJONP.mjs";
|
|
6
6
|
export {
|
|
7
7
|
createDispatcher,
|
|
8
8
|
createResolver,
|
|
9
9
|
intent_dispatcher_default as default
|
|
10
10
|
};
|
|
11
|
-
//# sourceMappingURL=intent-dispatcher-
|
|
11
|
+
//# sourceMappingURL=intent-dispatcher-GFBH7T2J.mjs.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
SETTINGS_ID,
|
|
3
3
|
SETTINGS_KEY,
|
|
4
4
|
SettingsAction
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-SRZH2PQ2.mjs";
|
|
6
6
|
import {
|
|
7
7
|
Capabilities,
|
|
8
8
|
LayoutAction,
|
|
@@ -10,24 +10,25 @@ import {
|
|
|
10
10
|
contributes,
|
|
11
11
|
createIntent,
|
|
12
12
|
createResolver
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-BCMEJONP.mjs";
|
|
14
14
|
|
|
15
15
|
// packages/sdk/app-framework/src/plugin-settings/intent-resolver.ts
|
|
16
16
|
import { pipe } from "effect";
|
|
17
17
|
var intent_resolver_default = () => contributes(Capabilities.IntentResolver, createResolver({
|
|
18
18
|
intent: SettingsAction.Open,
|
|
19
19
|
resolve: ({ plugin }) => {
|
|
20
|
+
const openSettings = createIntent(LayoutAction.SwitchWorkspace, {
|
|
21
|
+
part: "workspace",
|
|
22
|
+
subject: SETTINGS_ID
|
|
23
|
+
});
|
|
20
24
|
return {
|
|
21
25
|
intents: [
|
|
22
|
-
pipe(
|
|
23
|
-
part: "workspace",
|
|
24
|
-
subject: SETTINGS_ID
|
|
25
|
-
}), chain(LayoutAction.Open, {
|
|
26
|
+
plugin ? pipe(openSettings, chain(LayoutAction.Open, {
|
|
26
27
|
part: "main",
|
|
27
28
|
subject: [
|
|
28
29
|
`${SETTINGS_KEY}:${plugin.replaceAll("/", ":")}`
|
|
29
30
|
]
|
|
30
|
-
}))
|
|
31
|
+
})) : openSettings
|
|
31
32
|
]
|
|
32
33
|
};
|
|
33
34
|
}
|
|
@@ -35,4 +36,4 @@ var intent_resolver_default = () => contributes(Capabilities.IntentResolver, cre
|
|
|
35
36
|
export {
|
|
36
37
|
intent_resolver_default as default
|
|
37
38
|
};
|
|
38
|
-
//# sourceMappingURL=intent-resolver-
|
|
39
|
+
//# sourceMappingURL=intent-resolver-KAFM7CQH.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/plugin-settings/intent-resolver.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { pipe } from 'effect';\n\nimport { SETTINGS_ID, SETTINGS_KEY, SettingsAction } from './actions';\nimport { Capabilities, LayoutAction } from '../common';\nimport { contributes } from '../core';\nimport { createResolver, createIntent, chain } from '../plugin-intent';\n\nexport default () =>\n contributes(\n Capabilities.IntentResolver,\n createResolver({\n intent: SettingsAction.Open,\n resolve: ({ plugin }) => {\n const openSettings = createIntent(LayoutAction.SwitchWorkspace, { part: 'workspace', subject: SETTINGS_ID });\n return {\n intents: [\n plugin\n ? pipe(\n openSettings,\n chain(LayoutAction.Open, {\n part: 'main',\n subject: [`${SETTINGS_KEY}:${plugin.replaceAll('/', ':')}`],\n }),\n )\n : openSettings,\n ],\n };\n },\n }),\n );\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;AAIA,SAASA,YAAY;AAOrB,IAAA,0BAAe,MACbC,YACEC,aAAaC,gBACbC,eAAe;EACbC,QAAQC,eAAeC;EACvBC,SAAS,CAAC,EAAEC,OAAM,MAAE;AAClB,UAAMC,eAAeC,aAAaC,aAAaC,iBAAiB;MAAEC,MAAM;MAAaC,SAASC;IAAY,CAAA;AAC1G,WAAO;MACLC,SAAS;QACPR,SACIS,KACER,cACAS,MAAMP,aAAaL,MAAM;UACvBO,MAAM;UACNC,SAAS;YAAC,GAAGK,YAAAA,IAAgBX,OAAOY,WAAW,KAAK,GAAA,CAAA;;QACtD,CAAA,CAAA,IAEFX;;IAER;EACF;AACF,CAAA,CAAA;",
|
|
6
|
+
"names": ["pipe", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "SettingsAction", "Open", "resolve", "plugin", "openSettings", "createIntent", "LayoutAction", "SwitchWorkspace", "part", "subject", "SETTINGS_ID", "intents", "pipe", "chain", "SETTINGS_KEY", "replaceAll"]
|
|
7
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/sdk/app-framework/src/core/capabilities.ts":{"bytes":19658,"imports":[{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/app-framework/src/core/events.ts":{"bytes":5043,"imports":[],"format":"esm"},"packages/sdk/app-framework/src/core/manager.ts":{"bytes":54827,"imports":[{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/core/capabilities.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/sdk/app-framework/src/core/events.ts","kind":"import-statement","original":"./events"}],"format":"esm"},"packages/sdk/app-framework/src/core/plugin.ts":{"bytes":7200,"imports":[],"format":"esm"},"packages/sdk/app-framework/src/core/index.ts":{"bytes":770,"imports":[{"path":"packages/sdk/app-framework/src/core/capabilities.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/sdk/app-framework/src/core/events.ts","kind":"import-statement","original":"./events"},{"path":"packages/sdk/app-framework/src/core/manager.ts","kind":"import-statement","original":"./manager"},{"path":"packages/sdk/app-framework/src/core/plugin.ts","kind":"import-statement","original":"./plugin"}],"format":"esm"},"packages/sdk/app-framework/src/common/capabilities.ts":{"bytes":9148,"imports":[{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"../core"}],"format":"esm"},"packages/sdk/app-framework/src/common/events.ts":{"bytes":6123,"imports":[{"path":"packages/sdk/app-framework/src/common/capabilities.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"../core"}],"format":"esm"},"packages/sdk/app-framework/src/common/file.ts":{"bytes":2530,"imports":[{"path":"@effect/schema","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/app-framework/src/common/graph.ts":{"bytes":1434,"imports":[],"format":"esm"},"packages/sdk/app-framework/src/plugin-intent/intent.ts":{"bytes":10001,"imports":[{"path":"@effect/schema","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/app-framework/src/plugin-intent/actions.ts":{"bytes":2327,"imports":[{"path":"@effect/schema","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/plugin-intent/intent.ts","kind":"import-statement","original":"./intent"}],"format":"esm"},"packages/sdk/app-framework/src/plugin-intent/errors.ts":{"bytes":3874,"imports":[],"format":"esm"},"packages/sdk/app-framework/src/plugin-intent/intent-dispatcher.ts":{"bytes":29137,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/plugin-intent/actions.ts","kind":"import-statement","original":"./actions"},{"path":"packages/sdk/app-framework/src/plugin-intent/errors.ts","kind":"import-statement","original":"./errors"},{"path":"packages/sdk/app-framework/src/plugin-intent/intent.ts","kind":"import-statement","original":"./intent"},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"../common"},{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"../core"}],"format":"esm"},"packages/sdk/app-framework/src/plugin-intent/IntentPlugin.tsx":{"bytes":2997,"imports":[{"path":"packages/sdk/app-framework/src/plugin-intent/actions.ts","kind":"import-statement","original":"./actions"},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"../common"},{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"../core"},{"path":"packages/sdk/app-framework/src/plugin-intent/intent-dispatcher.ts","kind":"dynamic-import","original":"./intent-dispatcher"}],"format":"esm"},"packages/sdk/app-framework/src/plugin-intent/index.ts":{"bytes":810,"imports":[{"path":"packages/sdk/app-framework/src/plugin-intent/actions.ts","kind":"import-statement","original":"./actions"},{"path":"packages/sdk/app-framework/src/plugin-intent/intent.ts","kind":"import-statement","original":"./intent"},{"path":"packages/sdk/app-framework/src/plugin-intent/intent-dispatcher.ts","kind":"import-statement","original":"./intent-dispatcher"},{"path":"packages/sdk/app-framework/src/plugin-intent/IntentPlugin.tsx","kind":"import-statement","original":"./IntentPlugin"}],"format":"esm"},"packages/sdk/app-framework/src/common/layout.ts":{"bytes":35577,"imports":[{"path":"@effect/schema","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/plugin-intent/index.ts","kind":"import-statement","original":"../plugin-intent"}],"format":"esm"},"packages/sdk/app-framework/src/common/surface.ts":{"bytes":4002,"imports":[],"format":"esm"},"packages/sdk/app-framework/src/common/translations.ts":{"bytes":2192,"imports":[{"path":"@effect/schema","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/app-framework/src/common/index.ts":{"bytes":1037,"imports":[{"path":"packages/sdk/app-framework/src/common/capabilities.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/sdk/app-framework/src/common/events.ts","kind":"import-statement","original":"./events"},{"path":"packages/sdk/app-framework/src/common/file.ts","kind":"import-statement","original":"./file"},{"path":"packages/sdk/app-framework/src/common/graph.ts","kind":"import-statement","original":"./graph"},{"path":"packages/sdk/app-framework/src/common/layout.ts","kind":"import-statement","original":"./layout"},{"path":"packages/sdk/app-framework/src/common/surface.ts","kind":"import-statement","original":"./surface"},{"path":"packages/sdk/app-framework/src/common/translations.ts","kind":"import-statement","original":"./translations"}],"format":"esm"},"packages/sdk/app-framework/src/helpers.ts":{"bytes":5078,"imports":[],"format":"esm"},"packages/sdk/app-framework/src/react/PluginManagerProvider.ts":{"bytes":2070,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/app-framework/src/react/useCapabilities.ts":{"bytes":3774,"imports":[{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/react/PluginManagerProvider.ts","kind":"import-statement","original":"./PluginManagerProvider"}],"format":"esm"},"packages/sdk/app-framework/src/react/common.ts":{"bytes":1609,"imports":[{"path":"packages/sdk/app-framework/src/react/useCapabilities.ts","kind":"import-statement","original":"./useCapabilities"},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"../common"}],"format":"esm"},"packages/sdk/app-framework/src/react/ErrorBoundary.tsx":{"bytes":4327,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/app-framework/src/react/Surface.tsx":{"bytes":10288,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/react/ErrorBoundary.tsx","kind":"import-statement","original":"./ErrorBoundary"},{"path":"packages/sdk/app-framework/src/react/useCapabilities.ts","kind":"import-statement","original":"./useCapabilities"},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"../common"}],"format":"esm"},"packages/sdk/app-framework/src/react/useIntentResolver.ts":{"bytes":2530,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"../common"},{"path":"packages/sdk/app-framework/src/react/index.ts","kind":"import-statement","original":"../react"}],"format":"esm"},"packages/sdk/app-framework/src/react/index.ts":{"bytes":1035,"imports":[{"path":"packages/sdk/app-framework/src/react/common.ts","kind":"import-statement","original":"./common"},{"path":"packages/sdk/app-framework/src/react/ErrorBoundary.tsx","kind":"import-statement","original":"./ErrorBoundary"},{"path":"packages/sdk/app-framework/src/react/PluginManagerProvider.ts","kind":"import-statement","original":"./PluginManagerProvider"},{"path":"packages/sdk/app-framework/src/react/Surface.tsx","kind":"import-statement","original":"./Surface"},{"path":"packages/sdk/app-framework/src/react/useCapabilities.ts","kind":"import-statement","original":"./useCapabilities"},{"path":"packages/sdk/app-framework/src/react/useIntentResolver.ts","kind":"import-statement","original":"./useIntentResolver"}],"format":"esm"},"packages/sdk/app-framework/src/App.tsx":{"bytes":17999,"imports":[{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"./common"},{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"./core"},{"path":"packages/sdk/app-framework/src/helpers.ts","kind":"import-statement","original":"./helpers"},{"path":"packages/sdk/app-framework/src/react/index.ts","kind":"import-statement","original":"./react"}],"format":"esm"},"packages/sdk/app-framework/src/plugin-settings/actions.ts":{"bytes":3121,"imports":[{"path":"@effect/schema","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/app-framework/src/plugin-settings/translations.ts":{"bytes":1354,"imports":[{"path":"packages/sdk/app-framework/src/plugin-settings/actions.ts","kind":"import-statement","original":"./actions"}],"format":"esm"},"packages/sdk/app-framework/src/plugin-settings/store.ts":{"bytes":2467,"imports":[{"path":"@dxos/local-storage","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"../common"},{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"../core"}],"format":"esm"},"packages/sdk/app-framework/src/plugin-settings/intent-resolver.ts":{"bytes":3523,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/plugin-settings/actions.ts","kind":"import-statement","original":"./actions"},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"../common"},{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"../core"},{"path":"packages/sdk/app-framework/src/plugin-intent/index.ts","kind":"import-statement","original":"../plugin-intent"}],"format":"esm"},"packages/sdk/app-framework/src/plugin-settings/app-graph-builder.ts":{"bytes":16303,"imports":[{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/plugin-settings/actions.ts","kind":"import-statement","original":"./actions"},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"../common"},{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"../core"},{"path":"packages/sdk/app-framework/src/plugin-intent/index.ts","kind":"import-statement","original":"../plugin-intent"}],"format":"esm"},"packages/sdk/app-framework/src/plugin-settings/SettingsPlugin.ts":{"bytes":4859,"imports":[{"path":"packages/sdk/app-framework/src/plugin-settings/actions.ts","kind":"import-statement","original":"./actions"},{"path":"packages/sdk/app-framework/src/plugin-settings/translations.ts","kind":"import-statement","original":"./translations"},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"../common"},{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"../core"},{"path":"packages/sdk/app-framework/src/plugin-settings/store.ts","kind":"dynamic-import","original":"./store"},{"path":"packages/sdk/app-framework/src/plugin-settings/intent-resolver.ts","kind":"dynamic-import","original":"./intent-resolver"},{"path":"packages/sdk/app-framework/src/plugin-settings/app-graph-builder.ts","kind":"dynamic-import","original":"./app-graph-builder"}],"format":"esm"},"packages/sdk/app-framework/src/plugin-settings/index.ts":{"bytes":619,"imports":[{"path":"packages/sdk/app-framework/src/plugin-settings/actions.ts","kind":"import-statement","original":"./actions"},{"path":"packages/sdk/app-framework/src/plugin-settings/SettingsPlugin.ts","kind":"import-statement","original":"./SettingsPlugin"}],"format":"esm"},"packages/sdk/app-framework/src/index.ts":{"bytes":944,"imports":[{"path":"packages/sdk/app-framework/src/App.tsx","kind":"import-statement","original":"./App"},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"./common"},{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"./core"},{"path":"packages/sdk/app-framework/src/plugin-intent/index.ts","kind":"import-statement","original":"./plugin-intent"},{"path":"packages/sdk/app-framework/src/plugin-settings/index.ts","kind":"import-statement","original":"./plugin-settings"},{"path":"packages/sdk/app-framework/src/react/index.ts","kind":"import-statement","original":"./react"}],"format":"esm"},"packages/sdk/app-framework/src/testing/withPluginManager.tsx":{"bytes":8218,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/App.tsx","kind":"import-statement","original":"../App"},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"../common"},{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"../core"}],"format":"esm"},"packages/sdk/app-framework/src/testing/index.ts":{"bytes":531,"imports":[{"path":"packages/sdk/app-framework/src/testing/withPluginManager.tsx","kind":"import-statement","original":"./withPluginManager"}],"format":"esm"},"packages/sdk/app-framework/src/worker.ts":{"bytes":1287,"imports":[{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"./core"},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"./common"},{"path":"packages/sdk/app-framework/src/plugin-intent/index.ts","kind":"import-statement","original":"./plugin-intent"}],"format":"esm"}},"outputs":{"packages/sdk/app-framework/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2780},"packages/sdk/app-framework/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-EJQEJKYV.mjs","kind":"import-statement"},{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-LDJ3T4V3.mjs","kind":"import-statement"},{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-4VFJRQG5.mjs","kind":"import-statement"},{"path":"packages/sdk/app-framework/dist/lib/browser/store-MNPEQWEA.mjs","kind":"dynamic-import"},{"path":"packages/sdk/app-framework/dist/lib/browser/intent-resolver-DPZ7H4US.mjs","kind":"dynamic-import"},{"path":"packages/sdk/app-framework/dist/lib/browser/app-graph-builder-FKJO22ZQ.mjs","kind":"dynamic-import"}],"exports":["Capabilities","ErrorBoundary","Events","FileInfoSchema","INTENT_ACTION","INTENT_PLUGIN","IntentAction","IntentPlugin","LAYOUT_ACTION","LAYOUT_PLUGIN","Label","LayoutAction","Plugin","PluginManager","PluginManagerProvider","PluginModule","PluginsContext","Resource","ResourceKey","ResourceLanguage","SETTINGS_ACTION","SETTINGS_ID","SETTINGS_KEY","SETTINGS_PLUGIN","SettingsAction","SettingsPlugin","Surface","allOf","chain","contributes","createApp","createDispatcher","createIntent","createResolver","createSurface","defaultFileTypes","defineCapability","defineEvent","defineModule","definePlugin","eventKey","getEvents","isAllOf","isOneOf","isSurfaceAvailable","lazy","oneOf","useAppGraph","useCapabilities","useCapability","useIntentDispatcher","useIntentResolver","useLayout","usePluginManager","useSurfaces"],"entryPoint":"packages/sdk/app-framework/src/index.ts","inputs":{"packages/sdk/app-framework/src/index.ts":{"bytesInOutput":0},"packages/sdk/app-framework/src/plugin-settings/index.ts":{"bytesInOutput":0},"packages/sdk/app-framework/src/plugin-settings/translations.ts":{"bytesInOutput":228},"packages/sdk/app-framework/src/plugin-settings/SettingsPlugin.ts":{"bytesInOutput":905}},"bytes":3150},"packages/sdk/app-framework/dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4087},"packages/sdk/app-framework/dist/lib/browser/testing/index.mjs":{"imports":[{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-EJQEJKYV.mjs","kind":"import-statement"},{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-4VFJRQG5.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"exports":["setupPluginManager","withPluginManager"],"entryPoint":"packages/sdk/app-framework/src/testing/index.ts","inputs":{"packages/sdk/app-framework/src/testing/withPluginManager.tsx":{"bytesInOutput":1636},"packages/sdk/app-framework/src/testing/index.ts":{"bytesInOutput":0}},"bytes":1973},"packages/sdk/app-framework/dist/lib/browser/chunk-EJQEJKYV.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":23455},"packages/sdk/app-framework/dist/lib/browser/chunk-EJQEJKYV.mjs":{"imports":[{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-4VFJRQG5.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true}],"exports":["ErrorBoundary","PluginManagerProvider","Surface","createApp","isSurfaceAvailable","useAppGraph","useCapabilities","useCapability","useIntentDispatcher","useIntentResolver","useLayout","usePluginManager","useSurfaces"],"inputs":{"packages/sdk/app-framework/src/react/PluginManagerProvider.ts":{"bytesInOutput":312},"packages/sdk/app-framework/src/react/useCapabilities.ts":{"bytesInOutput":568},"packages/sdk/app-framework/src/react/common.ts":{"bytesInOutput":198},"packages/sdk/app-framework/src/react/ErrorBoundary.tsx":{"bytesInOutput":705},"packages/sdk/app-framework/src/react/Surface.tsx":{"bytesInOutput":1746},"packages/sdk/app-framework/src/react/useIntentResolver.ts":{"bytesInOutput":414},"packages/sdk/app-framework/src/react/index.ts":{"bytesInOutput":0},"packages/sdk/app-framework/src/App.tsx":{"bytesInOutput":3505},"packages/sdk/app-framework/src/helpers.ts":{"bytesInOutput":1049}},"bytes":9349},"packages/sdk/app-framework/dist/lib/browser/worker.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/app-framework/dist/lib/browser/worker.mjs":{"imports":[{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-4VFJRQG5.mjs","kind":"import-statement"}],"exports":["Capabilities","Events","FileInfoSchema","INTENT_ACTION","INTENT_PLUGIN","IntentAction","IntentPlugin","LAYOUT_ACTION","LAYOUT_PLUGIN","Label","LayoutAction","Plugin","PluginManager","PluginModule","PluginsContext","Resource","ResourceKey","ResourceLanguage","allOf","chain","contributes","createDispatcher","createIntent","createResolver","createSurface","defaultFileTypes","defineCapability","defineEvent","defineModule","definePlugin","eventKey","getEvents","isAllOf","isOneOf","lazy","oneOf"],"entryPoint":"packages/sdk/app-framework/src/worker.ts","inputs":{"packages/sdk/app-framework/src/worker.ts":{"bytesInOutput":0}},"bytes":1150},"packages/sdk/app-framework/dist/lib/browser/intent-dispatcher-AZMM7UEL.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/app-framework/dist/lib/browser/intent-dispatcher-AZMM7UEL.mjs":{"imports":[{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-4VFJRQG5.mjs","kind":"import-statement"}],"exports":["createDispatcher","createResolver","default"],"entryPoint":"packages/sdk/app-framework/src/plugin-intent/intent-dispatcher.ts","inputs":{},"bytes":251},"packages/sdk/app-framework/dist/lib/browser/store-MNPEQWEA.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1229},"packages/sdk/app-framework/dist/lib/browser/store-MNPEQWEA.mjs":{"imports":[{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-4VFJRQG5.mjs","kind":"import-statement"},{"path":"@dxos/local-storage","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/sdk/app-framework/src/plugin-settings/store.ts","inputs":{"packages/sdk/app-framework/src/plugin-settings/store.ts":{"bytesInOutput":366}},"bytes":579},"packages/sdk/app-framework/dist/lib/browser/intent-resolver-DPZ7H4US.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1601},"packages/sdk/app-framework/dist/lib/browser/intent-resolver-DPZ7H4US.mjs":{"imports":[{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-LDJ3T4V3.mjs","kind":"import-statement"},{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-4VFJRQG5.mjs","kind":"import-statement"},{"path":"effect","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/sdk/app-framework/src/plugin-settings/intent-resolver.ts","inputs":{"packages/sdk/app-framework/src/plugin-settings/intent-resolver.ts":{"bytesInOutput":526}},"bytes":916},"packages/sdk/app-framework/dist/lib/browser/app-graph-builder-FKJO22ZQ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":7436},"packages/sdk/app-framework/dist/lib/browser/app-graph-builder-FKJO22ZQ.mjs":{"imports":[{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-LDJ3T4V3.mjs","kind":"import-statement"},{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-4VFJRQG5.mjs","kind":"import-statement"},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/sdk/app-framework/src/plugin-settings/app-graph-builder.ts","inputs":{"packages/sdk/app-framework/src/plugin-settings/app-graph-builder.ts":{"bytesInOutput":3622}},"bytes":3994},"packages/sdk/app-framework/dist/lib/browser/chunk-LDJ3T4V3.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1521},"packages/sdk/app-framework/dist/lib/browser/chunk-LDJ3T4V3.mjs":{"imports":[{"path":"@effect/schema","kind":"import-statement","external":true}],"exports":["SETTINGS_ACTION","SETTINGS_ID","SETTINGS_KEY","SETTINGS_PLUGIN","SettingsAction"],"inputs":{"packages/sdk/app-framework/src/plugin-settings/actions.ts":{"bytesInOutput":703}},"bytes":907},"packages/sdk/app-framework/dist/lib/browser/chunk-4VFJRQG5.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":97810},"packages/sdk/app-framework/dist/lib/browser/chunk-4VFJRQG5.mjs":{"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@effect/schema","kind":"import-statement","external":true},{"path":"@effect/schema","kind":"import-statement","external":true},{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@effect/schema","kind":"import-statement","external":true},{"path":"@effect/schema","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/dist/lib/browser/intent-dispatcher-AZMM7UEL.mjs","kind":"dynamic-import"},{"path":"@effect/schema","kind":"import-statement","external":true}],"exports":["Capabilities","Events","FileInfoSchema","INTENT_ACTION","INTENT_PLUGIN","IntentAction","IntentPlugin","LAYOUT_ACTION","LAYOUT_PLUGIN","Label","LayoutAction","Plugin","PluginManager","PluginModule","PluginsContext","Resource","ResourceKey","ResourceLanguage","allOf","chain","contributes","createDispatcher","createIntent","createResolver","createSurface","defaultFileTypes","defineCapability","defineEvent","defineModule","definePlugin","eventKey","getEvents","intent_dispatcher_default","isAllOf","isOneOf","lazy","oneOf"],"inputs":{"packages/sdk/app-framework/src/plugin-intent/intent-dispatcher.ts":{"bytesInOutput":4995},"packages/sdk/app-framework/src/plugin-intent/actions.ts":{"bytesInOutput":420},"packages/sdk/app-framework/src/plugin-intent/intent.ts":{"bytesInOutput":798},"packages/sdk/app-framework/src/plugin-intent/errors.ts":{"bytesInOutput":662},"packages/sdk/app-framework/src/core/capabilities.ts":{"bytesInOutput":4123},"packages/sdk/app-framework/src/core/index.ts":{"bytesInOutput":0},"packages/sdk/app-framework/src/core/events.ts":{"bytesInOutput":512},"packages/sdk/app-framework/src/core/manager.ts":{"bytesInOutput":14797},"packages/sdk/app-framework/src/core/plugin.ts":{"bytesInOutput":516},"packages/sdk/app-framework/src/common/capabilities.ts":{"bytesInOutput":1852},"packages/sdk/app-framework/src/common/index.ts":{"bytesInOutput":0},"packages/sdk/app-framework/src/common/events.ts":{"bytesInOutput":1101},"packages/sdk/app-framework/src/common/file.ts":{"bytesInOutput":376},"packages/sdk/app-framework/src/common/layout.ts":{"bytesInOutput":9988},"packages/sdk/app-framework/src/plugin-intent/index.ts":{"bytesInOutput":0},"packages/sdk/app-framework/src/plugin-intent/IntentPlugin.tsx":{"bytesInOutput":602},"packages/sdk/app-framework/src/common/surface.ts":{"bytesInOutput":48},"packages/sdk/app-framework/src/common/translations.ts":{"bytesInOutput":289}},"bytes":42721}}}
|
|
1
|
+
{"inputs":{"packages/sdk/app-framework/src/core/capabilities.ts":{"bytes":19658,"imports":[{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/app-framework/src/core/events.ts":{"bytes":5043,"imports":[],"format":"esm"},"packages/sdk/app-framework/src/core/manager.ts":{"bytes":54827,"imports":[{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/core/capabilities.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/sdk/app-framework/src/core/events.ts","kind":"import-statement","original":"./events"}],"format":"esm"},"packages/sdk/app-framework/src/core/plugin.ts":{"bytes":7200,"imports":[],"format":"esm"},"packages/sdk/app-framework/src/core/index.ts":{"bytes":770,"imports":[{"path":"packages/sdk/app-framework/src/core/capabilities.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/sdk/app-framework/src/core/events.ts","kind":"import-statement","original":"./events"},{"path":"packages/sdk/app-framework/src/core/manager.ts","kind":"import-statement","original":"./manager"},{"path":"packages/sdk/app-framework/src/core/plugin.ts","kind":"import-statement","original":"./plugin"}],"format":"esm"},"packages/sdk/app-framework/src/common/capabilities.ts":{"bytes":9316,"imports":[{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"../core"}],"format":"esm"},"packages/sdk/app-framework/src/common/events.ts":{"bytes":6715,"imports":[{"path":"packages/sdk/app-framework/src/common/capabilities.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"../core"}],"format":"esm"},"packages/sdk/app-framework/src/common/file.ts":{"bytes":2530,"imports":[{"path":"@effect/schema","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/app-framework/src/common/graph.ts":{"bytes":1434,"imports":[],"format":"esm"},"packages/sdk/app-framework/src/plugin-intent/intent.ts":{"bytes":10001,"imports":[{"path":"@effect/schema","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/app-framework/src/plugin-intent/actions.ts":{"bytes":2327,"imports":[{"path":"@effect/schema","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/plugin-intent/intent.ts","kind":"import-statement","original":"./intent"}],"format":"esm"},"packages/sdk/app-framework/src/plugin-intent/errors.ts":{"bytes":3874,"imports":[],"format":"esm"},"packages/sdk/app-framework/src/plugin-intent/intent-dispatcher.ts":{"bytes":29634,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/plugin-intent/actions.ts","kind":"import-statement","original":"./actions"},{"path":"packages/sdk/app-framework/src/plugin-intent/errors.ts","kind":"import-statement","original":"./errors"},{"path":"packages/sdk/app-framework/src/plugin-intent/intent.ts","kind":"import-statement","original":"./intent"},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"../common"},{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"../core"}],"format":"esm"},"packages/sdk/app-framework/src/plugin-intent/IntentPlugin.tsx":{"bytes":2997,"imports":[{"path":"packages/sdk/app-framework/src/plugin-intent/actions.ts","kind":"import-statement","original":"./actions"},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"../common"},{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"../core"},{"path":"packages/sdk/app-framework/src/plugin-intent/intent-dispatcher.ts","kind":"dynamic-import","original":"./intent-dispatcher"}],"format":"esm"},"packages/sdk/app-framework/src/plugin-intent/index.ts":{"bytes":810,"imports":[{"path":"packages/sdk/app-framework/src/plugin-intent/actions.ts","kind":"import-statement","original":"./actions"},{"path":"packages/sdk/app-framework/src/plugin-intent/intent.ts","kind":"import-statement","original":"./intent"},{"path":"packages/sdk/app-framework/src/plugin-intent/intent-dispatcher.ts","kind":"import-statement","original":"./intent-dispatcher"},{"path":"packages/sdk/app-framework/src/plugin-intent/IntentPlugin.tsx","kind":"import-statement","original":"./IntentPlugin"}],"format":"esm"},"packages/sdk/app-framework/src/common/layout.ts":{"bytes":37572,"imports":[{"path":"@effect/schema","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/plugin-intent/index.ts","kind":"import-statement","original":"../plugin-intent"}],"format":"esm"},"packages/sdk/app-framework/src/common/surface.ts":{"bytes":4002,"imports":[],"format":"esm"},"packages/sdk/app-framework/src/common/translations.ts":{"bytes":2192,"imports":[{"path":"@effect/schema","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/app-framework/src/common/index.ts":{"bytes":1037,"imports":[{"path":"packages/sdk/app-framework/src/common/capabilities.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/sdk/app-framework/src/common/events.ts","kind":"import-statement","original":"./events"},{"path":"packages/sdk/app-framework/src/common/file.ts","kind":"import-statement","original":"./file"},{"path":"packages/sdk/app-framework/src/common/graph.ts","kind":"import-statement","original":"./graph"},{"path":"packages/sdk/app-framework/src/common/layout.ts","kind":"import-statement","original":"./layout"},{"path":"packages/sdk/app-framework/src/common/surface.ts","kind":"import-statement","original":"./surface"},{"path":"packages/sdk/app-framework/src/common/translations.ts","kind":"import-statement","original":"./translations"}],"format":"esm"},"packages/sdk/app-framework/src/helpers.ts":{"bytes":5078,"imports":[],"format":"esm"},"packages/sdk/app-framework/src/react/PluginManagerProvider.ts":{"bytes":2070,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/app-framework/src/react/useCapabilities.ts":{"bytes":3774,"imports":[{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/react/PluginManagerProvider.ts","kind":"import-statement","original":"./PluginManagerProvider"}],"format":"esm"},"packages/sdk/app-framework/src/react/common.ts":{"bytes":1609,"imports":[{"path":"packages/sdk/app-framework/src/react/useCapabilities.ts","kind":"import-statement","original":"./useCapabilities"},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"../common"}],"format":"esm"},"packages/sdk/app-framework/src/react/ErrorBoundary.tsx":{"bytes":4327,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/app-framework/src/react/Surface.tsx":{"bytes":10288,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/react/ErrorBoundary.tsx","kind":"import-statement","original":"./ErrorBoundary"},{"path":"packages/sdk/app-framework/src/react/useCapabilities.ts","kind":"import-statement","original":"./useCapabilities"},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"../common"}],"format":"esm"},"packages/sdk/app-framework/src/react/useIntentResolver.ts":{"bytes":2530,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"../common"},{"path":"packages/sdk/app-framework/src/react/index.ts","kind":"import-statement","original":"../react"}],"format":"esm"},"packages/sdk/app-framework/src/react/index.ts":{"bytes":1035,"imports":[{"path":"packages/sdk/app-framework/src/react/common.ts","kind":"import-statement","original":"./common"},{"path":"packages/sdk/app-framework/src/react/ErrorBoundary.tsx","kind":"import-statement","original":"./ErrorBoundary"},{"path":"packages/sdk/app-framework/src/react/PluginManagerProvider.ts","kind":"import-statement","original":"./PluginManagerProvider"},{"path":"packages/sdk/app-framework/src/react/Surface.tsx","kind":"import-statement","original":"./Surface"},{"path":"packages/sdk/app-framework/src/react/useCapabilities.ts","kind":"import-statement","original":"./useCapabilities"},{"path":"packages/sdk/app-framework/src/react/useIntentResolver.ts","kind":"import-statement","original":"./useIntentResolver"}],"format":"esm"},"packages/sdk/app-framework/src/App.tsx":{"bytes":18283,"imports":[{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"./common"},{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"./core"},{"path":"packages/sdk/app-framework/src/helpers.ts","kind":"import-statement","original":"./helpers"},{"path":"packages/sdk/app-framework/src/react/index.ts","kind":"import-statement","original":"./react"}],"format":"esm"},"packages/sdk/app-framework/src/plugin-settings/actions.ts":{"bytes":3122,"imports":[{"path":"@effect/schema","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/app-framework/src/plugin-settings/translations.ts":{"bytes":1354,"imports":[{"path":"packages/sdk/app-framework/src/plugin-settings/actions.ts","kind":"import-statement","original":"./actions"}],"format":"esm"},"packages/sdk/app-framework/src/plugin-settings/store.ts":{"bytes":3782,"imports":[{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"@dxos/local-storage","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"../common"},{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"../core"}],"format":"esm"},"packages/sdk/app-framework/src/plugin-settings/intent-resolver.ts":{"bytes":3862,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/plugin-settings/actions.ts","kind":"import-statement","original":"./actions"},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"../common"},{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"../core"},{"path":"packages/sdk/app-framework/src/plugin-intent/index.ts","kind":"import-statement","original":"../plugin-intent"}],"format":"esm"},"packages/sdk/app-framework/src/plugin-settings/app-graph-builder.ts":{"bytes":16314,"imports":[{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/plugin-settings/actions.ts","kind":"import-statement","original":"./actions"},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"../common"},{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"../core"},{"path":"packages/sdk/app-framework/src/plugin-intent/index.ts","kind":"import-statement","original":"../plugin-intent"}],"format":"esm"},"packages/sdk/app-framework/src/plugin-settings/SettingsPlugin.ts":{"bytes":4886,"imports":[{"path":"packages/sdk/app-framework/src/plugin-settings/actions.ts","kind":"import-statement","original":"./actions"},{"path":"packages/sdk/app-framework/src/plugin-settings/translations.ts","kind":"import-statement","original":"./translations"},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"../common"},{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"../core"},{"path":"packages/sdk/app-framework/src/plugin-settings/store.ts","kind":"dynamic-import","original":"./store"},{"path":"packages/sdk/app-framework/src/plugin-settings/intent-resolver.ts","kind":"dynamic-import","original":"./intent-resolver"},{"path":"packages/sdk/app-framework/src/plugin-settings/app-graph-builder.ts","kind":"dynamic-import","original":"./app-graph-builder"}],"format":"esm"},"packages/sdk/app-framework/src/plugin-settings/index.ts":{"bytes":619,"imports":[{"path":"packages/sdk/app-framework/src/plugin-settings/actions.ts","kind":"import-statement","original":"./actions"},{"path":"packages/sdk/app-framework/src/plugin-settings/SettingsPlugin.ts","kind":"import-statement","original":"./SettingsPlugin"}],"format":"esm"},"packages/sdk/app-framework/src/index.ts":{"bytes":944,"imports":[{"path":"packages/sdk/app-framework/src/App.tsx","kind":"import-statement","original":"./App"},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"./common"},{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"./core"},{"path":"packages/sdk/app-framework/src/plugin-intent/index.ts","kind":"import-statement","original":"./plugin-intent"},{"path":"packages/sdk/app-framework/src/plugin-settings/index.ts","kind":"import-statement","original":"./plugin-settings"},{"path":"packages/sdk/app-framework/src/react/index.ts","kind":"import-statement","original":"./react"}],"format":"esm"},"packages/sdk/app-framework/src/testing/withPluginManager.tsx":{"bytes":8781,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/src/App.tsx","kind":"import-statement","original":"../App"},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"../common"},{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"../core"}],"format":"esm"},"packages/sdk/app-framework/src/testing/index.ts":{"bytes":531,"imports":[{"path":"packages/sdk/app-framework/src/testing/withPluginManager.tsx","kind":"import-statement","original":"./withPluginManager"}],"format":"esm"},"packages/sdk/app-framework/src/worker.ts":{"bytes":1287,"imports":[{"path":"packages/sdk/app-framework/src/core/index.ts","kind":"import-statement","original":"./core"},{"path":"packages/sdk/app-framework/src/common/index.ts","kind":"import-statement","original":"./common"},{"path":"packages/sdk/app-framework/src/plugin-intent/index.ts","kind":"import-statement","original":"./plugin-intent"}],"format":"esm"}},"outputs":{"packages/sdk/app-framework/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2794},"packages/sdk/app-framework/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-QS4J6O47.mjs","kind":"import-statement"},{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-SRZH2PQ2.mjs","kind":"import-statement"},{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-BCMEJONP.mjs","kind":"import-statement"},{"path":"packages/sdk/app-framework/dist/lib/browser/store-L3VRR7II.mjs","kind":"dynamic-import"},{"path":"packages/sdk/app-framework/dist/lib/browser/intent-resolver-KAFM7CQH.mjs","kind":"dynamic-import"},{"path":"packages/sdk/app-framework/dist/lib/browser/app-graph-builder-S4MYSHQA.mjs","kind":"dynamic-import"}],"exports":["Capabilities","ErrorBoundary","Events","FileInfoSchema","INTENT_ACTION","INTENT_PLUGIN","IntentAction","IntentPlugin","LAYOUT_ACTION","LAYOUT_PLUGIN","Label","LayoutAction","Plugin","PluginManager","PluginManagerProvider","PluginModule","PluginsContext","Resource","ResourceKey","ResourceLanguage","SETTINGS_ACTION","SETTINGS_ID","SETTINGS_KEY","SETTINGS_PLUGIN","SettingsAction","SettingsPlugin","Surface","allOf","chain","contributes","createApp","createDispatcher","createIntent","createResolver","createSurface","defaultFileTypes","defineCapability","defineEvent","defineModule","definePlugin","eventKey","getEvents","isAllOf","isOneOf","isSurfaceAvailable","lazy","oneOf","useAppGraph","useCapabilities","useCapability","useIntentDispatcher","useIntentResolver","useLayout","usePluginManager","useSurfaces"],"entryPoint":"packages/sdk/app-framework/src/index.ts","inputs":{"packages/sdk/app-framework/src/index.ts":{"bytesInOutput":0},"packages/sdk/app-framework/src/plugin-settings/index.ts":{"bytesInOutput":0},"packages/sdk/app-framework/src/plugin-settings/translations.ts":{"bytesInOutput":228},"packages/sdk/app-framework/src/plugin-settings/SettingsPlugin.ts":{"bytesInOutput":912}},"bytes":3157},"packages/sdk/app-framework/dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4446},"packages/sdk/app-framework/dist/lib/browser/testing/index.mjs":{"imports":[{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-QS4J6O47.mjs","kind":"import-statement"},{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-BCMEJONP.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"exports":["setupPluginManager","withPluginManager"],"entryPoint":"packages/sdk/app-framework/src/testing/index.ts","inputs":{"packages/sdk/app-framework/src/testing/withPluginManager.tsx":{"bytesInOutput":1725},"packages/sdk/app-framework/src/testing/index.ts":{"bytesInOutput":0}},"bytes":2062},"packages/sdk/app-framework/dist/lib/browser/chunk-QS4J6O47.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":23575},"packages/sdk/app-framework/dist/lib/browser/chunk-QS4J6O47.mjs":{"imports":[{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-BCMEJONP.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true}],"exports":["ErrorBoundary","PluginManagerProvider","Surface","createApp","isSurfaceAvailable","useAppGraph","useCapabilities","useCapability","useIntentDispatcher","useIntentResolver","useLayout","usePluginManager","useSurfaces"],"inputs":{"packages/sdk/app-framework/src/react/PluginManagerProvider.ts":{"bytesInOutput":312},"packages/sdk/app-framework/src/react/useCapabilities.ts":{"bytesInOutput":568},"packages/sdk/app-framework/src/react/common.ts":{"bytesInOutput":198},"packages/sdk/app-framework/src/react/ErrorBoundary.tsx":{"bytesInOutput":705},"packages/sdk/app-framework/src/react/Surface.tsx":{"bytesInOutput":1746},"packages/sdk/app-framework/src/react/useIntentResolver.ts":{"bytesInOutput":414},"packages/sdk/app-framework/src/react/index.ts":{"bytesInOutput":0},"packages/sdk/app-framework/src/App.tsx":{"bytesInOutput":3525},"packages/sdk/app-framework/src/helpers.ts":{"bytesInOutput":1049}},"bytes":9369},"packages/sdk/app-framework/dist/lib/browser/worker.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/app-framework/dist/lib/browser/worker.mjs":{"imports":[{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-BCMEJONP.mjs","kind":"import-statement"}],"exports":["Capabilities","Events","FileInfoSchema","INTENT_ACTION","INTENT_PLUGIN","IntentAction","IntentPlugin","LAYOUT_ACTION","LAYOUT_PLUGIN","Label","LayoutAction","Plugin","PluginManager","PluginModule","PluginsContext","Resource","ResourceKey","ResourceLanguage","allOf","chain","contributes","createDispatcher","createIntent","createResolver","createSurface","defaultFileTypes","defineCapability","defineEvent","defineModule","definePlugin","eventKey","getEvents","isAllOf","isOneOf","lazy","oneOf"],"entryPoint":"packages/sdk/app-framework/src/worker.ts","inputs":{"packages/sdk/app-framework/src/worker.ts":{"bytesInOutput":0}},"bytes":1150},"packages/sdk/app-framework/dist/lib/browser/intent-dispatcher-GFBH7T2J.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/app-framework/dist/lib/browser/intent-dispatcher-GFBH7T2J.mjs":{"imports":[{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-BCMEJONP.mjs","kind":"import-statement"}],"exports":["createDispatcher","createResolver","default"],"entryPoint":"packages/sdk/app-framework/src/plugin-intent/intent-dispatcher.ts","inputs":{},"bytes":251},"packages/sdk/app-framework/dist/lib/browser/store-L3VRR7II.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2000},"packages/sdk/app-framework/dist/lib/browser/store-L3VRR7II.mjs":{"imports":[{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-BCMEJONP.mjs","kind":"import-statement"},{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"@dxos/local-storage","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/sdk/app-framework/src/plugin-settings/store.ts","inputs":{"packages/sdk/app-framework/src/plugin-settings/store.ts":{"bytesInOutput":782}},"bytes":995},"packages/sdk/app-framework/dist/lib/browser/intent-resolver-KAFM7CQH.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1819},"packages/sdk/app-framework/dist/lib/browser/intent-resolver-KAFM7CQH.mjs":{"imports":[{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-SRZH2PQ2.mjs","kind":"import-statement"},{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-BCMEJONP.mjs","kind":"import-statement"},{"path":"effect","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/sdk/app-framework/src/plugin-settings/intent-resolver.ts","inputs":{"packages/sdk/app-framework/src/plugin-settings/intent-resolver.ts":{"bytesInOutput":577}},"bytes":967},"packages/sdk/app-framework/dist/lib/browser/app-graph-builder-S4MYSHQA.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":7443},"packages/sdk/app-framework/dist/lib/browser/app-graph-builder-S4MYSHQA.mjs":{"imports":[{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-SRZH2PQ2.mjs","kind":"import-statement"},{"path":"packages/sdk/app-framework/dist/lib/browser/chunk-BCMEJONP.mjs","kind":"import-statement"},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/sdk/app-framework/src/plugin-settings/app-graph-builder.ts","inputs":{"packages/sdk/app-framework/src/plugin-settings/app-graph-builder.ts":{"bytesInOutput":3625}},"bytes":3997},"packages/sdk/app-framework/dist/lib/browser/chunk-SRZH2PQ2.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1522},"packages/sdk/app-framework/dist/lib/browser/chunk-SRZH2PQ2.mjs":{"imports":[{"path":"@effect/schema","kind":"import-statement","external":true}],"exports":["SETTINGS_ACTION","SETTINGS_ID","SETTINGS_KEY","SETTINGS_PLUGIN","SettingsAction"],"inputs":{"packages/sdk/app-framework/src/plugin-settings/actions.ts":{"bytesInOutput":704}},"bytes":908},"packages/sdk/app-framework/dist/lib/browser/chunk-BCMEJONP.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":99399},"packages/sdk/app-framework/dist/lib/browser/chunk-BCMEJONP.mjs":{"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@effect/schema","kind":"import-statement","external":true},{"path":"@effect/schema","kind":"import-statement","external":true},{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@effect/schema","kind":"import-statement","external":true},{"path":"@effect/schema","kind":"import-statement","external":true},{"path":"packages/sdk/app-framework/dist/lib/browser/intent-dispatcher-GFBH7T2J.mjs","kind":"dynamic-import"},{"path":"@effect/schema","kind":"import-statement","external":true}],"exports":["Capabilities","Events","FileInfoSchema","INTENT_ACTION","INTENT_PLUGIN","IntentAction","IntentPlugin","LAYOUT_ACTION","LAYOUT_PLUGIN","Label","LayoutAction","Plugin","PluginManager","PluginModule","PluginsContext","Resource","ResourceKey","ResourceLanguage","allOf","chain","contributes","createDispatcher","createIntent","createResolver","createSurface","defaultFileTypes","defineCapability","defineEvent","defineModule","definePlugin","eventKey","getEvents","intent_dispatcher_default","isAllOf","isOneOf","lazy","oneOf"],"inputs":{"packages/sdk/app-framework/src/plugin-intent/intent-dispatcher.ts":{"bytesInOutput":5325},"packages/sdk/app-framework/src/plugin-intent/actions.ts":{"bytesInOutput":420},"packages/sdk/app-framework/src/plugin-intent/intent.ts":{"bytesInOutput":798},"packages/sdk/app-framework/src/plugin-intent/errors.ts":{"bytesInOutput":662},"packages/sdk/app-framework/src/core/capabilities.ts":{"bytesInOutput":4123},"packages/sdk/app-framework/src/core/index.ts":{"bytesInOutput":0},"packages/sdk/app-framework/src/core/events.ts":{"bytesInOutput":512},"packages/sdk/app-framework/src/core/manager.ts":{"bytesInOutput":14797},"packages/sdk/app-framework/src/core/plugin.ts":{"bytesInOutput":516},"packages/sdk/app-framework/src/common/capabilities.ts":{"bytesInOutput":1852},"packages/sdk/app-framework/src/common/index.ts":{"bytesInOutput":0},"packages/sdk/app-framework/src/common/events.ts":{"bytesInOutput":1232},"packages/sdk/app-framework/src/common/file.ts":{"bytesInOutput":376},"packages/sdk/app-framework/src/common/layout.ts":{"bytesInOutput":10589},"packages/sdk/app-framework/src/plugin-intent/index.ts":{"bytesInOutput":0},"packages/sdk/app-framework/src/plugin-intent/IntentPlugin.tsx":{"bytesInOutput":602},"packages/sdk/app-framework/src/common/surface.ts":{"bytesInOutput":48},"packages/sdk/app-framework/src/common/translations.ts":{"bytesInOutput":289}},"bytes":43783}}}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Capabilities,
|
|
3
|
+
contributes
|
|
4
|
+
} from "./chunk-BCMEJONP.mjs";
|
|
5
|
+
|
|
6
|
+
// packages/sdk/app-framework/src/plugin-settings/store.ts
|
|
7
|
+
import { effect } from "@preact/signals-core";
|
|
8
|
+
import { RootSettingsStore } from "@dxos/local-storage";
|
|
9
|
+
var store_default = (context) => {
|
|
10
|
+
const settingsStore = new RootSettingsStore();
|
|
11
|
+
let previous = [];
|
|
12
|
+
const unsubscribe = effect(() => {
|
|
13
|
+
const allSettings = context.requestCapabilities(Capabilities.Settings);
|
|
14
|
+
const added = allSettings.filter((setting) => !previous.includes(setting));
|
|
15
|
+
const removed = previous.filter((setting) => !allSettings.includes(setting));
|
|
16
|
+
previous = allSettings;
|
|
17
|
+
added.forEach((setting) => {
|
|
18
|
+
settingsStore.createStore(setting);
|
|
19
|
+
});
|
|
20
|
+
removed.forEach((setting) => {
|
|
21
|
+
settingsStore.removeStore(setting.prefix);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
return contributes(Capabilities.SettingsStore, settingsStore, () => unsubscribe());
|
|
25
|
+
};
|
|
26
|
+
export {
|
|
27
|
+
store_default as default
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=store-L3VRR7II.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/plugin-settings/store.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { effect } from '@preact/signals-core';\n\nimport { RootSettingsStore } from '@dxos/local-storage';\n\nimport { Capabilities } from '../common';\nimport { contributes, type PluginsContext } from '../core';\n\nexport default (context: PluginsContext) => {\n const settingsStore = new RootSettingsStore();\n\n let previous: Capabilities.Settings[] = [];\n const unsubscribe = effect(() => {\n const allSettings = context.requestCapabilities(Capabilities.Settings);\n const added = allSettings.filter((setting) => !previous.includes(setting));\n const removed = previous.filter((setting) => !allSettings.includes(setting));\n previous = allSettings;\n added.forEach((setting) => {\n settingsStore.createStore(setting as any);\n });\n removed.forEach((setting) => {\n settingsStore.removeStore(setting.prefix);\n });\n });\n\n return contributes(Capabilities.SettingsStore, settingsStore, () => unsubscribe());\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;AAIA,SAASA,cAAc;AAEvB,SAASC,yBAAyB;AAKlC,IAAA,gBAAe,CAACC,YAAAA;AACd,QAAMC,gBAAgB,IAAIC,kBAAAA;AAE1B,MAAIC,WAAoC,CAAA;AACxC,QAAMC,cAAcC,OAAO,MAAA;AACzB,UAAMC,cAAcN,QAAQO,oBAAoBC,aAAaC,QAAQ;AACrE,UAAMC,QAAQJ,YAAYK,OAAO,CAACC,YAAY,CAACT,SAASU,SAASD,OAAAA,CAAAA;AACjE,UAAME,UAAUX,SAASQ,OAAO,CAACC,YAAY,CAACN,YAAYO,SAASD,OAAAA,CAAAA;AACnET,eAAWG;AACXI,UAAMK,QAAQ,CAACH,YAAAA;AACbX,oBAAce,YAAYJ,OAAAA;IAC5B,CAAA;AACAE,YAAQC,QAAQ,CAACH,YAAAA;AACfX,oBAAcgB,YAAYL,QAAQM,MAAM;IAC1C,CAAA;EACF,CAAA;AAEA,SAAOC,YAAYX,aAAaY,eAAenB,eAAe,MAAMG,YAAAA,CAAAA;AACtE;",
|
|
6
|
+
"names": ["effect", "RootSettingsStore", "context", "settingsStore", "RootSettingsStore", "previous", "unsubscribe", "effect", "allSettings", "requestCapabilities", "Capabilities", "Settings", "added", "filter", "setting", "includes", "removed", "forEach", "createStore", "removeStore", "prefix", "contributes", "SettingsStore"]
|
|
7
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createApp
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-QS4J6O47.mjs";
|
|
4
4
|
import {
|
|
5
5
|
Capabilities,
|
|
6
6
|
Events,
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
contributes,
|
|
9
9
|
defineModule,
|
|
10
10
|
definePlugin
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-BCMEJONP.mjs";
|
|
12
12
|
|
|
13
13
|
// packages/sdk/app-framework/src/testing/withPluginManager.tsx
|
|
14
14
|
import React, { useEffect } from "react";
|
|
@@ -42,6 +42,9 @@ var withPluginManager = (options = {}) => {
|
|
|
42
42
|
const App = createApp({
|
|
43
43
|
pluginManager
|
|
44
44
|
});
|
|
45
|
+
options.fireEvents?.forEach((event) => {
|
|
46
|
+
void pluginManager.activate(event);
|
|
47
|
+
});
|
|
45
48
|
return (Story, context) => {
|
|
46
49
|
useEffect(() => {
|
|
47
50
|
const capability = contributes(Capabilities.ReactRoot, {
|