@dxos/app-framework 0.8.1-main.ba2dec9 → 0.8.1-staging.5be625a

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.
Files changed (76) hide show
  1. package/dist/lib/browser/{app-graph-builder-IAEV7KKF.mjs → app-graph-builder-OD3G2J2U.mjs} +2 -2
  2. package/dist/lib/browser/{chunk-PWAAJE2Z.mjs → chunk-CESGLKOM.mjs} +4 -3
  3. package/dist/lib/browser/{chunk-PWAAJE2Z.mjs.map → chunk-CESGLKOM.mjs.map} +3 -3
  4. package/dist/lib/browser/{chunk-CIP4C47B.mjs → chunk-KP6FVIAA.mjs} +7 -6
  5. package/dist/lib/browser/chunk-KP6FVIAA.mjs.map +7 -0
  6. package/dist/lib/browser/index.mjs +7 -6
  7. package/dist/lib/browser/index.mjs.map +3 -3
  8. package/dist/lib/browser/{intent-dispatcher-UR566RVO.mjs → intent-dispatcher-RTXTATZJ.mjs} +2 -2
  9. package/dist/lib/browser/{intent-resolver-LEJ3X6CP.mjs → intent-resolver-ZL6WBF2L.mjs} +2 -2
  10. package/dist/lib/browser/meta.json +1 -1
  11. package/dist/lib/browser/{store-5TN4OLFQ.mjs → store-JIKLP4JL.mjs} +2 -2
  12. package/dist/lib/browser/testing/index.mjs +4 -3
  13. package/dist/lib/browser/testing/index.mjs.map +3 -3
  14. package/dist/lib/browser/worker.mjs +1 -1
  15. package/dist/lib/node/{app-graph-builder-3RWOZENP.cjs → app-graph-builder-S3ER53EH.cjs} +12 -12
  16. package/dist/lib/node/{chunk-JLQABYHB.cjs → chunk-4YBMWZR3.cjs} +23 -22
  17. package/dist/lib/node/chunk-4YBMWZR3.cjs.map +7 -0
  18. package/dist/lib/node/{chunk-XP4TI5DS.cjs → chunk-KRK7EH6Z.cjs} +7 -6
  19. package/dist/lib/node/{chunk-XP4TI5DS.cjs.map → chunk-KRK7EH6Z.cjs.map} +2 -2
  20. package/dist/lib/node/index.cjs +68 -67
  21. package/dist/lib/node/index.cjs.map +3 -3
  22. package/dist/lib/node/{intent-dispatcher-EDW7NFJ4.cjs → intent-dispatcher-TBTSYYGJ.cjs} +8 -8
  23. package/dist/lib/node/{intent-dispatcher-EDW7NFJ4.cjs.map → intent-dispatcher-TBTSYYGJ.cjs.map} +2 -2
  24. package/dist/lib/node/{intent-resolver-34J5IM27.cjs → intent-resolver-IYW254AY.cjs} +8 -8
  25. package/dist/lib/node/meta.json +1 -1
  26. package/dist/lib/node/{store-3I3UFH5D.cjs → store-KGQB37IW.cjs} +7 -7
  27. package/dist/lib/node/testing/index.cjs +10 -9
  28. package/dist/lib/node/testing/index.cjs.map +3 -3
  29. package/dist/lib/node/worker.cjs +37 -37
  30. package/dist/lib/node/worker.cjs.map +1 -1
  31. package/dist/lib/node-esm/{app-graph-builder-RG3DT2OD.mjs → app-graph-builder-UP3LWWYO.mjs} +2 -2
  32. package/dist/lib/node-esm/{chunk-T2URISUU.mjs → chunk-MZCAK52M.mjs} +7 -6
  33. package/dist/lib/node-esm/chunk-MZCAK52M.mjs.map +7 -0
  34. package/dist/lib/node-esm/{chunk-NIVSBD3D.mjs → chunk-RQWO2T4E.mjs} +4 -3
  35. package/dist/lib/node-esm/{chunk-NIVSBD3D.mjs.map → chunk-RQWO2T4E.mjs.map} +3 -3
  36. package/dist/lib/node-esm/index.mjs +7 -6
  37. package/dist/lib/node-esm/index.mjs.map +3 -3
  38. package/dist/lib/node-esm/{intent-dispatcher-7GCMKMSQ.mjs → intent-dispatcher-7UNJKY3C.mjs} +2 -2
  39. package/dist/lib/node-esm/{intent-resolver-7T6UOQOS.mjs → intent-resolver-6MHZSVCT.mjs} +2 -2
  40. package/dist/lib/node-esm/meta.json +1 -1
  41. package/dist/lib/node-esm/{store-PTKVELJP.mjs → store-YSFTF2GM.mjs} +2 -2
  42. package/dist/lib/node-esm/testing/index.mjs +4 -3
  43. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  44. package/dist/lib/node-esm/worker.mjs +1 -1
  45. package/dist/types/src/common/surface.d.ts +4 -7
  46. package/dist/types/src/common/surface.d.ts.map +1 -1
  47. package/dist/types/src/core/plugin.d.ts +1 -1
  48. package/dist/types/src/core/plugin.d.ts.map +1 -1
  49. package/dist/types/src/react/Surface.d.ts.map +1 -1
  50. package/package.json +18 -18
  51. package/src/common/surface.ts +6 -1
  52. package/src/core/manager.test.ts +30 -30
  53. package/src/core/plugin.ts +1 -1
  54. package/src/playground/debug/plugin.ts +1 -1
  55. package/src/playground/generator/generator.ts +1 -1
  56. package/src/playground/generator/plugin.ts +1 -1
  57. package/src/playground/layout/plugin.ts +1 -1
  58. package/src/playground/logger/plugin.ts +1 -1
  59. package/src/plugin-intent/IntentPlugin.tsx +1 -1
  60. package/src/plugin-settings/SettingsPlugin.ts +1 -1
  61. package/src/react/Surface.tsx +5 -3
  62. package/src/testing/withPluginManager.tsx +1 -1
  63. package/dist/lib/browser/chunk-CIP4C47B.mjs.map +0 -7
  64. package/dist/lib/node/chunk-JLQABYHB.cjs.map +0 -7
  65. package/dist/lib/node-esm/chunk-T2URISUU.mjs.map +0 -7
  66. /package/dist/lib/browser/{app-graph-builder-IAEV7KKF.mjs.map → app-graph-builder-OD3G2J2U.mjs.map} +0 -0
  67. /package/dist/lib/browser/{intent-dispatcher-UR566RVO.mjs.map → intent-dispatcher-RTXTATZJ.mjs.map} +0 -0
  68. /package/dist/lib/browser/{intent-resolver-LEJ3X6CP.mjs.map → intent-resolver-ZL6WBF2L.mjs.map} +0 -0
  69. /package/dist/lib/browser/{store-5TN4OLFQ.mjs.map → store-JIKLP4JL.mjs.map} +0 -0
  70. /package/dist/lib/node/{app-graph-builder-3RWOZENP.cjs.map → app-graph-builder-S3ER53EH.cjs.map} +0 -0
  71. /package/dist/lib/node/{intent-resolver-34J5IM27.cjs.map → intent-resolver-IYW254AY.cjs.map} +0 -0
  72. /package/dist/lib/node/{store-3I3UFH5D.cjs.map → store-KGQB37IW.cjs.map} +0 -0
  73. /package/dist/lib/node-esm/{app-graph-builder-RG3DT2OD.mjs.map → app-graph-builder-UP3LWWYO.mjs.map} +0 -0
  74. /package/dist/lib/node-esm/{intent-dispatcher-7GCMKMSQ.mjs.map → intent-dispatcher-7UNJKY3C.mjs.map} +0 -0
  75. /package/dist/lib/node-esm/{intent-resolver-7T6UOQOS.mjs.map → intent-resolver-6MHZSVCT.mjs.map} +0 -0
  76. /package/dist/lib/node-esm/{store-PTKVELJP.mjs.map → store-YSFTF2GM.mjs.map} +0 -0
@@ -26,8 +26,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_JLQABYHB_exports = {};
30
- __export(chunk_JLQABYHB_exports, {
29
+ var chunk_4YBMWZR3_exports = {};
30
+ __export(chunk_4YBMWZR3_exports, {
31
31
  ErrorBoundary: () => ErrorBoundary,
32
32
  PluginManagerProvider: () => PluginManagerProvider,
33
33
  Surface: () => Surface,
@@ -42,8 +42,8 @@ __export(chunk_JLQABYHB_exports, {
42
42
  usePluginManager: () => usePluginManager,
43
43
  useSurfaces: () => useSurfaces
44
44
  });
45
- module.exports = __toCommonJS(chunk_JLQABYHB_exports);
46
- var import_chunk_XP4TI5DS = require("./chunk-XP4TI5DS.cjs");
45
+ module.exports = __toCommonJS(chunk_4YBMWZR3_exports);
46
+ var import_chunk_KRK7EH6Z = require("./chunk-KRK7EH6Z.cjs");
47
47
  var import_react = require("react");
48
48
  var import_debug = require("@dxos/debug");
49
49
  var import_signals_core = require("@preact/signals-core");
@@ -74,9 +74,9 @@ var useCapability = (interfaceDef, filter) => {
74
74
  ]);
75
75
  return signal.value;
76
76
  };
77
- var useIntentDispatcher = () => useCapability(import_chunk_XP4TI5DS.Capabilities.IntentDispatcher);
78
- var useAppGraph = () => useCapability(import_chunk_XP4TI5DS.Capabilities.AppGraph);
79
- var useLayout = () => useCapability(import_chunk_XP4TI5DS.Capabilities.Layout);
77
+ var useIntentDispatcher = () => useCapability(import_chunk_KRK7EH6Z.Capabilities.IntentDispatcher);
78
+ var useAppGraph = () => useCapability(import_chunk_KRK7EH6Z.Capabilities.AppGraph);
79
+ var useLayout = () => useCapability(import_chunk_KRK7EH6Z.Capabilities.Layout);
80
80
  var ErrorBoundary = class extends import_react3.Component {
81
81
  constructor(props) {
82
82
  super(props);
@@ -110,8 +110,9 @@ var ErrorBoundary = class extends import_react3.Component {
110
110
  });
111
111
  }
112
112
  };
113
+ var DEFAULT_PLACEHOLDER = /* @__PURE__ */ import_react4.default.createElement(import_react4.Fragment, null);
113
114
  var useSurfaces = () => {
114
- const surfaces = useCapabilities(import_chunk_XP4TI5DS.Capabilities.ReactSurface);
115
+ const surfaces = useCapabilities(import_chunk_KRK7EH6Z.Capabilities.ReactSurface);
115
116
  return (0, import_react4.useMemo)(() => surfaces.flat(), [
116
117
  surfaces
117
118
  ]);
@@ -120,14 +121,14 @@ var findCandidates = (surfaces, { role, data }) => {
120
121
  return Object.values(surfaces).filter((definition) => Array.isArray(definition.role) ? definition.role.includes(role) : definition.role === role).filter(({ filter }) => filter ? filter(data ?? {}) : true).toSorted(import_util.byPosition);
121
122
  };
122
123
  var isSurfaceAvailable = (context, { role, data }) => {
123
- const surfaces = context.requestCapabilities(import_chunk_XP4TI5DS.Capabilities.ReactSurface);
124
+ const surfaces = context.requestCapabilities(import_chunk_KRK7EH6Z.Capabilities.ReactSurface);
124
125
  const candidates = findCandidates(surfaces.flat(), {
125
126
  role,
126
127
  data
127
128
  });
128
129
  return candidates.length > 0;
129
130
  };
130
- var Surface = /* @__PURE__ */ (0, import_react4.memo)(/* @__PURE__ */ (0, import_react4.forwardRef)(({ id: _id, role, data: _data, limit, fallback, placeholder, ...rest }, forwardedRef) => {
131
+ var Surface = /* @__PURE__ */ (0, import_react4.memo)(/* @__PURE__ */ (0, import_react4.forwardRef)(({ id: _id, role, data: _data, limit, fallback, placeholder = DEFAULT_PLACEHOLDER, ...rest }, forwardedRef) => {
131
132
  const surfaces = useSurfaces();
132
133
  const data = (0, import_react_hooks.useDefaultValue)(_data, () => ({}));
133
134
  const definitions = findCandidates(surfaces, {
@@ -144,9 +145,9 @@ var Surface = /* @__PURE__ */ (0, import_react4.memo)(/* @__PURE__ */ (0, import
144
145
  limit,
145
146
  ...rest
146
147
  }));
147
- const suspense = placeholder ? /* @__PURE__ */ import_react4.default.createElement(import_react4.Suspense, {
148
+ const suspense = /* @__PURE__ */ import_react4.default.createElement(import_react4.Suspense, {
148
149
  fallback: placeholder
149
- }, nodes) : nodes;
150
+ }, nodes);
150
151
  return fallback ? /* @__PURE__ */ import_react4.default.createElement(ErrorBoundary, {
151
152
  data,
152
153
  fallback
@@ -158,10 +159,10 @@ var useIntentResolver = (module2, resolver) => {
158
159
  (0, import_react5.useEffect)(() => {
159
160
  manager.context.contributeCapability({
160
161
  module: module2,
161
- interface: import_chunk_XP4TI5DS.Capabilities.IntentResolver,
162
+ interface: import_chunk_KRK7EH6Z.Capabilities.IntentResolver,
162
163
  implementation: resolver
163
164
  });
164
- return () => manager.context.removeCapability(import_chunk_XP4TI5DS.Capabilities.IntentResolver, resolver);
165
+ return () => manager.context.removeCapability(import_chunk_KRK7EH6Z.Capabilities.IntentResolver, resolver);
165
166
  }, [
166
167
  module2,
167
168
  resolver
@@ -218,14 +219,14 @@ var createApp = ({ pluginManager, pluginLoader: _pluginLoader, plugins = [], cor
218
219
  });
219
220
  const cached = JSON.parse(localStorage.getItem(ENABLED_KEY) ?? "[]");
220
221
  const enabled = cacheEnabled && cached.length > 0 ? cached : defaults;
221
- const manager = pluginManager ?? new import_chunk_XP4TI5DS.PluginManager({
222
+ const manager = pluginManager ?? new import_chunk_KRK7EH6Z.PluginManager({
222
223
  pluginLoader,
223
224
  plugins,
224
225
  core,
225
226
  enabled
226
227
  });
227
228
  manager.activation.on(({ event, state: _state, error }) => {
228
- if (!state.ready && event === import_chunk_XP4TI5DS.Events.Startup.id) {
229
+ if (!state.ready && event === import_chunk_KRK7EH6Z.Events.Startup.id) {
229
230
  state.ready = _state === "activated";
230
231
  }
231
232
  if (error && !state.ready && !state.error) {
@@ -236,13 +237,13 @@ var createApp = ({ pluginManager, pluginLoader: _pluginLoader, plugins = [], cor
236
237
  cacheEnabled && localStorage.setItem(ENABLED_KEY, JSON.stringify(manager.enabled));
237
238
  });
238
239
  manager.context.contributeCapability({
239
- interface: import_chunk_XP4TI5DS.Capabilities.PluginManager,
240
+ interface: import_chunk_KRK7EH6Z.Capabilities.PluginManager,
240
241
  implementation: manager,
241
242
  module: "dxos.org/app-framework/plugin-manager"
242
243
  });
243
244
  setupDevtools(manager);
244
- void manager.activate(import_chunk_XP4TI5DS.Events.SetupReactSurface);
245
- void manager.activate(import_chunk_XP4TI5DS.Events.Startup);
245
+ void manager.activate(import_chunk_KRK7EH6Z.Events.SetupReactSurface);
246
+ void manager.activate(import_chunk_KRK7EH6Z.Events.Startup);
246
247
  return () => /* @__PURE__ */ import_react6.default.createElement(ErrorBoundary, {
247
248
  fallback
248
249
  }, /* @__PURE__ */ import_react6.default.createElement(PluginManagerProvider, {
@@ -253,8 +254,8 @@ var createApp = ({ pluginManager, pluginLoader: _pluginLoader, plugins = [], cor
253
254
  })));
254
255
  };
255
256
  var App = ({ placeholder, state }) => {
256
- const reactContexts = useCapabilities(import_chunk_XP4TI5DS.Capabilities.ReactContext);
257
- const reactRoots = useCapabilities(import_chunk_XP4TI5DS.Capabilities.ReactRoot);
257
+ const reactContexts = useCapabilities(import_chunk_KRK7EH6Z.Capabilities.ReactContext);
258
+ const reactRoots = useCapabilities(import_chunk_KRK7EH6Z.Capabilities.ReactRoot);
258
259
  if (state.error) {
259
260
  throw state.error;
260
261
  }
@@ -305,4 +306,4 @@ var setupDevtools = (manager) => {
305
306
  usePluginManager,
306
307
  useSurfaces
307
308
  });
308
- //# sourceMappingURL=chunk-JLQABYHB.cjs.map
309
+ //# sourceMappingURL=chunk-4YBMWZR3.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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, 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 PluginsContext } 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: 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 = 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 { 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": ["import_react", "import_signals_core", "PluginManagerContext", "createContext", "undefined", "usePluginManager", "useContext", "raise", "Error", "PluginManagerProvider", "Provider", "useCapabilities", "interfaceDef", "filter", "manager", "signal", "useMemo", "computed", "context", "requestCapabilities", "value", "useCapability", "requestCapability", "useIntentDispatcher", "Capabilities", "IntentDispatcher", "useAppGraph", "AppGraph", "useLayout", "Layout", "ErrorBoundary", "Component", "constructor", "props", "state", "error", "getDerivedStateFromError", "componentDidUpdate", "prevProps", "data", "resetError", "render", "React", "this", "fallback", "reset", "children", "setState", "DEFAULT_PLACEHOLDER", "Fragment", "useSurfaces", "surfaces", "ReactSurface", "flat", "findCandidates", "role", "Object", "values", "definition", "Array", "isArray", "includes", "toSorted", "byPosition", "isSurfaceAvailable", "candidates", "length", "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", "createApp", "pluginManager", "pluginLoader", "_pluginLoader", "plugins", "core", "meta", "defaults", "DefaultFallback", "cacheEnabled", "plugin", "invariant", "create", "ready", "cached", "JSON", "parse", "localStorage", "getItem", "enabled", "PluginManager", "activation", "on", "event", "_state", "Events", "Startup", "effect", "setItem", "stringify", "setupDevtools", "activate", "SetupReactSurface", "App", "reactContexts", "ReactContext", "reactRoots", "ReactRoot", "ComposedContext", "composeContexts", "root", "div", "style", "padding", "h1", "fontSize", "fontWeight", "margin", "message", "pre", "stack", "contexts", "reduce", "Acc", "Next", "globalThis", "composer"]
7
+ }
@@ -26,8 +26,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_XP4TI5DS_exports = {};
30
- __export(chunk_XP4TI5DS_exports, {
29
+ var chunk_KRK7EH6Z_exports = {};
30
+ __export(chunk_KRK7EH6Z_exports, {
31
31
  Capabilities: () => Capabilities,
32
32
  Events: () => Events,
33
33
  FileInfoSchema: () => FileInfoSchema,
@@ -66,7 +66,7 @@ __export(chunk_XP4TI5DS_exports, {
66
66
  lazy: () => lazy,
67
67
  oneOf: () => oneOf
68
68
  });
69
- module.exports = __toCommonJS(chunk_XP4TI5DS_exports);
69
+ module.exports = __toCommonJS(chunk_KRK7EH6Z_exports);
70
70
  var import_effect = require("effect");
71
71
  var import_live_object = require("@dxos/live-object");
72
72
  var import_log = require("@dxos/log");
@@ -932,7 +932,8 @@ var FileInfoSchema = import_effect5.Schema.Struct({
932
932
  cid: import_effect5.Schema.optional(import_effect5.Schema.String)
933
933
  });
934
934
  var IntentPlugin = () => definePlugin({
935
- id: INTENT_PLUGIN
935
+ id: INTENT_PLUGIN,
936
+ name: "Intent"
936
937
  }, [
937
938
  defineModule({
938
939
  id: `${INTENT_PLUGIN}/module/dispatcher`,
@@ -943,7 +944,7 @@ var IntentPlugin = () => definePlugin({
943
944
  activatesAfter: [
944
945
  Events.DispatcherReady
945
946
  ],
946
- activate: lazy(() => import("./intent-dispatcher-EDW7NFJ4.cjs"))
947
+ activate: lazy(() => import("./intent-dispatcher-TBTSYYGJ.cjs"))
947
948
  })
948
949
  ]);
949
950
  var LAYOUT_PLUGIN = "dxos.org/plugin/layout";
@@ -1463,4 +1464,4 @@ var intent_dispatcher_default = (context) => {
1463
1464
  lazy,
1464
1465
  oneOf
1465
1466
  });
1466
- //# sourceMappingURL=chunk-XP4TI5DS.cjs.map
1467
+ //# sourceMappingURL=chunk-KRK7EH6Z.cjs.map