{
  "version": 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"],
  "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 { useRxValue } from '@effect-rx/rx-react';\n\nimport { invariant } from '@dxos/invariant';\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>(interfaceDef: InterfaceDef<T>) => {\n  const manager = usePluginManager();\n  return useRxValue(manager.context.capabilities(interfaceDef));\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>(interfaceDef: InterfaceDef<T>) => {\n  const capabilities = useCapabilities(interfaceDef);\n  invariant(capabilities.length > 0, `No capability found for ${interfaceDef.identifier}`);\n  return capabilities[0];\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): { 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(): string | number | boolean | React.JSX.Element | Iterable<React.ReactNode> | null | undefined {\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(): void {\n    this.setState({ error: undefined });\n  }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { memo, forwardRef, Suspense, useMemo, Fragment } 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 PluginContext } from '../core';\n\nconst DEFAULT_PLACEHOLDER = <Fragment />;\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: PluginContext, { role, data }: Pick<SurfaceProps, 'role' | 'data'>) => {\n  const surfaces = context.getCapabilities(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 = DEFAULT_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 = <Suspense fallback={placeholder}>{nodes}</Suspense>;\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 { RegistryContext } from '@effect-rx/rx-react';\nimport { effect } from '@preact/signals-core';\nimport React, { useCallback, useEffect, useMemo, useState, type FC, type PropsWithChildren } from 'react';\n\nimport { invariant } from '@dxos/invariant';\nimport { live } from '@dxos/live-object';\nimport { useDefaultValue } from '@dxos/react-hooks';\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?: FC<{ stage: number }>;\n  fallback?: ErrorBoundary['props']['fallback'];\n  cacheEnabled?: boolean;\n  safeMode?: 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 * @param params.safeMode Whether to enable safe mode, which disables optional plugins.\n */\nexport const useApp = ({\n  pluginManager,\n  pluginLoader: _pluginLoader,\n  plugins: _plugins,\n  core: _core,\n  defaults: _defaults,\n  placeholder,\n  fallback = DefaultFallback,\n  cacheEnabled = false,\n  safeMode = false,\n}: CreateAppOptions) => {\n  const plugins = useDefaultValue(_plugins, () => []);\n  const core = useDefaultValue(_core, () => plugins.map(({ meta }) => meta.id));\n  const defaults = useDefaultValue(_defaults, () => []);\n\n  // TODO(wittjosiah): Provide a custom plugin loader which supports loading via url.\n  const pluginLoader = useMemo(\n    () =>\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    [_pluginLoader, plugins],\n  );\n\n  const state = useMemo(() => live({ ready: false, error: null }), []);\n  const cached: string[] = useMemo(() => JSON.parse(localStorage.getItem(ENABLED_KEY) ?? '[]'), []);\n  const enabled = useMemo(\n    () => (safeMode ? [] : cacheEnabled && cached.length > 0 ? cached : defaults),\n    [safeMode, cacheEnabled, cached, defaults],\n  );\n  const manager = useMemo(\n    () => pluginManager ?? new PluginManager({ pluginLoader, plugins, core, enabled }),\n    [pluginManager, pluginLoader, plugins, core, enabled],\n  );\n\n  useEffect(() => {\n    return 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  }, [manager, state]);\n\n  useEffect(() => {\n    effect(() => {\n      cacheEnabled && localStorage.setItem(ENABLED_KEY, JSON.stringify(manager.enabled));\n    });\n  }, [cacheEnabled, manager]);\n\n  useEffect(() => {\n    manager.context.contributeCapability({\n      interface: Capabilities.PluginManager,\n      implementation: manager,\n      module: 'dxos.org/app-framework/plugin-manager',\n    });\n\n    manager.context.contributeCapability({\n      interface: Capabilities.RxRegistry,\n      implementation: manager.registry,\n      module: 'dxos.org/app-framework/rx-registry',\n    });\n\n    return () => {\n      manager.context.removeCapability(Capabilities.PluginManager, manager);\n      manager.context.removeCapability(Capabilities.RxRegistry, manager.registry);\n    };\n  }, [manager]);\n\n  useEffect(() => {\n    setupDevtools(manager);\n  }, [manager]);\n\n  useEffect(() => {\n    const timeout = setTimeout(async () => {\n      await Promise.all([\n        // TODO(wittjosiah): Factor out such that this could be called per surface role when attempting to render.\n        manager.activate(Events.SetupReactSurface),\n        manager.activate(Events.Startup),\n      ]);\n    });\n\n    return () => clearTimeout(timeout);\n  }, [manager]);\n\n  return useCallback(\n    () => (\n      <ErrorBoundary fallback={fallback}>\n        <PluginManagerProvider value={manager}>\n          <RegistryContext.Provider value={manager.registry}>\n            <App placeholder={placeholder} state={state} />\n          </RegistryContext.Provider>\n        </PluginManagerProvider>\n      </ErrorBoundary>\n    ),\n    [fallback, manager, placeholder, state],\n  );\n};\n\nconst DELAY_PLACEHOLDER = 2_000;\n\nenum LoadingState {\n  Loading = 0,\n  FadeIn = 1,\n  FadeOut = 2,\n  Done = 3,\n}\n\n/**\n * To avoid \"flashing\" the placeholder, we wait a period of time before starting the loading animation.\n * If loading completes during this time the placehoder is not shown, otherwise is it displayed for a minimum period of time.\n *\n * States:\n * 0: Loading   - Wait for a period of time before starting the loading animation.\n * 1: Fade-in   - Display a loading animation.\n * 2: Fade-out  - Fade out the loading animation.\n * 3: Done      - Remove the placeholder.\n */\nconst useLoading = (state: AppProps['state']) => {\n  const [stage, setStage] = useState<LoadingState>(LoadingState.Loading);\n  useEffect(() => {\n    const i = setInterval(() => {\n      setStage((tick) => {\n        switch (tick) {\n          case LoadingState.Loading:\n            if (!state.ready) {\n              return LoadingState.FadeIn;\n            } else {\n              clearInterval(i);\n              return LoadingState.Done;\n            }\n          case LoadingState.FadeIn:\n            if (state.ready) {\n              return LoadingState.FadeOut;\n            }\n            break;\n          case LoadingState.FadeOut:\n            clearInterval(i);\n            return LoadingState.Done;\n        }\n\n        return tick;\n      });\n    }, DELAY_PLACEHOLDER);\n\n    return () => clearInterval(i);\n  }, []);\n\n  return stage;\n};\n\ntype AppProps = Pick<CreateAppOptions, 'placeholder'> & {\n  state: { ready: boolean; error: unknown };\n};\n\nconst App = ({ placeholder: Placeholder, state }: AppProps) => {\n  const reactContexts = useCapabilities(Capabilities.ReactContext);\n  const reactRoots = useCapabilities(Capabilities.ReactRoot);\n  const stage = useLoading(state);\n\n  if (state.error) {\n    // This triggers 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 (stage < LoadingState.Done) {\n    if (!Placeholder) {\n      return null;\n    }\n\n    return <Placeholder stage={stage} />;\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"],
  "mappings": "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",
  "names": ["import_react", "import_rx_react", "import_invariant", "import_react_hooks", "PluginManagerContext", "createContext", "undefined", "usePluginManager", "useContext", "raise", "Error", "PluginManagerProvider", "Provider", "useCapabilities", "interfaceDef", "manager", "useRxValue", "context", "capabilities", "useCapability", "invariant", "length", "identifier", "useIntentDispatcher", "Capabilities", "IntentDispatcher", "useAppGraph", "AppGraph", "useLayout", "Layout", "ErrorBoundary", "Component", "props", "state", "error", "getDerivedStateFromError", "componentDidUpdate", "prevProps", "data", "resetError", "render", "React", "this", "fallback", "reset", "children", "setState", "DEFAULT_PLACEHOLDER", "Fragment", "useSurfaces", "surfaces", "ReactSurface", "useMemo", "flat", "findCandidates", "role", "Object", "values", "filter", "definition", "Array", "isArray", "includes", "toSorted", "byPosition", "isSurfaceAvailable", "getCapabilities", "candidates", "Surface", "memo", "forwardRef", "id", "_id", "_data", "limit", "placeholder", "rest", "forwardedRef", "useDefaultValue", "definitions", "slice", "nodes", "map", "component", "ref", "key", "suspense", "Suspense", "displayName", "useIntentResolver", "module", "resolver", "useEffect", "contributeCapability", "interface", "IntentResolver", "implementation", "removeCapability", "topologicalSort", "getDependencies", "nodeId", "seen", "Set", "path", "has", "node", "find", "n", "newPath", "newSeen", "dependsOn", "flatMap", "depId", "allDependencies", "index", "self", "indexOf", "ENABLED_KEY", "useApp", "pluginManager", "pluginLoader", "_pluginLoader", "plugins", "_plugins", "core", "_core", "defaults", "_defaults", "DefaultFallback", "cacheEnabled", "safeMode", "meta", "plugin", "live", "ready", "cached", "JSON", "parse", "localStorage", "getItem", "enabled", "PluginManager", "activation", "on", "event", "_state", "Events", "Startup", "effect", "setItem", "stringify", "RxRegistry", "registry", "setupDevtools", "timeout", "setTimeout", "Promise", "all", "activate", "SetupReactSurface", "clearTimeout", "useCallback", "value", "RegistryContext", "App", "DELAY_PLACEHOLDER", "useLoading", "stage", "setStage", "useState", "i", "setInterval", "tick", "clearInterval", "Placeholder", "reactContexts", "ReactContext", "reactRoots", "ReactRoot", "ComposedContext", "composeContexts", "root", "div", "style", "padding", "h1", "fontSize", "fontWeight", "margin", "message", "pre", "stack", "contexts", "reduce", "Acc", "Next", "globalThis", "composer"]
}
