@dxos/plugin-graph 0.7.5-labs.e27f9b9 → 0.7.5-main.2567c87

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 (41) hide show
  1. package/dist/lib/browser/GraphContext-VQKUKWLP.mjs +10 -0
  2. package/dist/lib/browser/GraphContext-VQKUKWLP.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-L7JM5AMI.mjs +25 -0
  4. package/dist/lib/browser/chunk-L7JM5AMI.mjs.map +7 -0
  5. package/dist/lib/browser/{graph-U2AHH24Q.mjs → graph-WNFVYZKZ.mjs} +4 -16
  6. package/dist/lib/browser/graph-WNFVYZKZ.mjs.map +7 -0
  7. package/dist/lib/browser/index.mjs +12 -4
  8. package/dist/lib/browser/index.mjs.map +3 -3
  9. package/dist/lib/browser/meta.json +1 -1
  10. package/dist/lib/node/GraphContext-MUIA2AJE.cjs +31 -0
  11. package/dist/lib/node/GraphContext-MUIA2AJE.cjs.map +7 -0
  12. package/dist/lib/node/chunk-3QIHDIIS.cjs +55 -0
  13. package/dist/lib/node/chunk-3QIHDIIS.cjs.map +7 -0
  14. package/dist/lib/node/{graph-AOAAITHV.cjs → graph-HXCMZDUQ.cjs} +6 -18
  15. package/dist/lib/node/graph-HXCMZDUQ.cjs.map +7 -0
  16. package/dist/lib/node/index.cjs +11 -4
  17. package/dist/lib/node/index.cjs.map +3 -3
  18. package/dist/lib/node/meta.json +1 -1
  19. package/dist/lib/node-esm/GraphContext-VNVZEAJK.mjs +11 -0
  20. package/dist/lib/node-esm/GraphContext-VNVZEAJK.mjs.map +7 -0
  21. package/dist/lib/node-esm/chunk-XY43PHPY.mjs +26 -0
  22. package/dist/lib/node-esm/chunk-XY43PHPY.mjs.map +7 -0
  23. package/dist/lib/node-esm/{graph-VC422POI.mjs → graph-UQRZMBQ5.mjs} +4 -16
  24. package/dist/lib/node-esm/graph-UQRZMBQ5.mjs.map +7 -0
  25. package/dist/lib/node-esm/index.mjs +12 -4
  26. package/dist/lib/node-esm/index.mjs.map +3 -3
  27. package/dist/lib/node-esm/meta.json +1 -1
  28. package/dist/types/src/GraphContext.d.ts +11 -0
  29. package/dist/types/src/GraphContext.d.ts.map +1 -0
  30. package/dist/types/src/GraphPlugin.d.ts.map +1 -1
  31. package/dist/types/src/graph.d.ts.map +1 -1
  32. package/dist/types/src/index.d.ts +1 -0
  33. package/dist/types/src/index.d.ts.map +1 -1
  34. package/package.json +7 -7
  35. package/src/GraphContext.tsx +25 -0
  36. package/src/GraphPlugin.ts +6 -1
  37. package/src/graph.ts +3 -16
  38. package/src/index.ts +1 -0
  39. package/dist/lib/browser/graph-U2AHH24Q.mjs.map +0 -7
  40. package/dist/lib/node/graph-AOAAITHV.cjs.map +0 -7
  41. package/dist/lib/node-esm/graph-VC422POI.mjs.map +0 -7
@@ -0,0 +1,10 @@
1
+ import {
2
+ GraphContext_default,
3
+ useGraph
4
+ } from "./chunk-L7JM5AMI.mjs";
5
+ import "./chunk-7LNMG3EB.mjs";
6
+ export {
7
+ GraphContext_default as default,
8
+ useGraph
9
+ };
10
+ //# sourceMappingURL=GraphContext-VQKUKWLP.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,25 @@
1
+ import {
2
+ GRAPH_PLUGIN
3
+ } from "./chunk-7LNMG3EB.mjs";
4
+
5
+ // packages/plugins/plugin-graph/src/GraphContext.tsx
6
+ import React, { createContext, useContext } from "react";
7
+ import { Capabilities, contributes, useCapability } from "@dxos/app-framework";
8
+ import { raise } from "@dxos/debug";
9
+ var GraphContext = /* @__PURE__ */ createContext(null);
10
+ var useGraph = () => useContext(GraphContext) ?? raise(new Error("Missing GraphContext"));
11
+ var GraphContext_default = () => contributes(Capabilities.ReactContext, {
12
+ id: GRAPH_PLUGIN,
13
+ context: (props) => {
14
+ const value = useCapability(Capabilities.AppGraph);
15
+ return /* @__PURE__ */ React.createElement(GraphContext.Provider, {
16
+ value
17
+ }, props.children);
18
+ }
19
+ });
20
+
21
+ export {
22
+ useGraph,
23
+ GraphContext_default
24
+ };
25
+ //# sourceMappingURL=chunk-L7JM5AMI.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/GraphContext.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type Context, createContext, type PropsWithChildren, useContext } from 'react';\n\nimport { Capabilities, contributes, useCapability } from '@dxos/app-framework';\nimport { type GraphBuilder } from '@dxos/app-graph';\nimport { raise } from '@dxos/debug';\n\nimport { GRAPH_PLUGIN } from './meta';\n\ntype GraphContextType = Pick<GraphBuilder, 'graph' | 'explore'>;\nconst GraphContext: Context<GraphContextType | null> = createContext<GraphContextType | null>(null);\n\nexport const useGraph = (): GraphContextType => useContext(GraphContext) ?? raise(new Error('Missing GraphContext'));\n\nexport default () =>\n contributes(Capabilities.ReactContext, {\n id: GRAPH_PLUGIN,\n context: (props: PropsWithChildren) => {\n const value = useCapability(Capabilities.AppGraph);\n return <GraphContext.Provider value={value}>{props.children}</GraphContext.Provider>;\n },\n });\n"],
5
+ "mappings": ";;;;;AAIA,OAAOA,SAAuBC,eAAuCC,kBAAkB;AAEvF,SAASC,cAAcC,aAAaC,qBAAqB;AAEzD,SAASC,aAAa;AAKtB,IAAMC,eAAiDC,8BAAuC,IAAA;AAEvF,IAAMC,WAAW,MAAwBC,WAAWH,YAAAA,KAAiBI,MAAM,IAAIC,MAAM,sBAAA,CAAA;AAE5F,IAAA,uBAAe,MACbC,YAAYC,aAAaC,cAAc;EACrCC,IAAIC;EACJC,SAAS,CAACC,UAAAA;AACR,UAAMC,QAAQC,cAAcP,aAAaQ,QAAQ;AACjD,WAAO,sBAAA,cAACf,aAAagB,UAAQ;MAACH;OAAeD,MAAMK,QAAQ;EAC7D;AACF,CAAA;",
6
+ "names": ["React", "createContext", "useContext", "Capabilities", "contributes", "useCapability", "raise", "GraphContext", "createContext", "useGraph", "useContext", "raise", "Error", "contributes", "Capabilities", "ReactContext", "id", "GRAPH_PLUGIN", "context", "props", "value", "useCapability", "AppGraph", "Provider", "children"]
7
+ }
@@ -3,34 +3,22 @@ import {
3
3
  } from "./chunk-7LNMG3EB.mjs";
4
4
 
5
5
  // packages/plugins/plugin-graph/src/graph.ts
6
- import { batch, effect, untracked } from "@preact/signals-core";
7
6
  import { Capabilities, contributes } from "@dxos/app-framework";
8
- import { flattenExtensions, GraphBuilder } from "@dxos/app-graph";
7
+ import { GraphBuilder } from "@dxos/app-graph";
9
8
  var KEY = `${GRAPH_PLUGIN}/app-graph`;
10
9
  var graph_default = async (context) => {
11
10
  const builder = GraphBuilder.from(localStorage.getItem(KEY) ?? void 0);
12
11
  const interval = setInterval(() => {
13
12
  localStorage.setItem(KEY, builder.graph.pickle());
14
13
  }, 5e3);
15
- const unsubscribe = effect(() => {
16
- batch(() => {
17
- const next = flattenExtensions(context.requestCapabilities(Capabilities.AppGraphBuilder));
18
- const current = untracked(() => builder.extensions);
19
- const removed = current.filter(({ id }) => !next.some(({ id: nextId }) => nextId === id));
20
- removed.forEach((extension) => builder.removeExtension(extension.id));
21
- next.forEach((extension) => builder.addExtension(extension));
22
- });
23
- });
14
+ context.requestCapabilities(Capabilities.AppGraphBuilder).forEach((extension) => builder.addExtension(extension));
24
15
  await builder.initialize();
25
16
  await builder.graph.expand(builder.graph.root);
26
17
  setupDevtools(builder.graph);
27
18
  return contributes(Capabilities.AppGraph, {
28
19
  graph: builder.graph,
29
20
  explore: (options) => builder.explore(options)
30
- }, () => {
31
- clearInterval(interval);
32
- unsubscribe();
33
- });
21
+ }, () => clearInterval(interval));
34
22
  };
35
23
  var setupDevtools = (graph) => {
36
24
  globalThis.composer ??= {};
@@ -39,4 +27,4 @@ var setupDevtools = (graph) => {
39
27
  export {
40
28
  graph_default as default
41
29
  };
42
- //# sourceMappingURL=graph-U2AHH24Q.mjs.map
30
+ //# sourceMappingURL=graph-WNFVYZKZ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/graph.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';\nimport { type Graph, GraphBuilder } from '@dxos/app-graph';\n\nimport { GRAPH_PLUGIN } from './meta';\n\nconst KEY = `${GRAPH_PLUGIN}/app-graph`;\n\nexport default async (context: PluginsContext) => {\n const builder = GraphBuilder.from(localStorage.getItem(KEY) ?? undefined);\n const interval = setInterval(() => {\n localStorage.setItem(KEY, builder.graph.pickle());\n }, 5_000);\n\n context.requestCapabilities(Capabilities.AppGraphBuilder).forEach((extension) => builder.addExtension(extension));\n\n await builder.initialize();\n await builder.graph.expand(builder.graph.root);\n\n setupDevtools(builder.graph);\n\n return contributes(\n Capabilities.AppGraph,\n { graph: builder.graph, explore: (options) => builder.explore(options) },\n () => clearInterval(interval),\n );\n};\n\n// Expose the graph to the window for debugging.\nconst setupDevtools = (graph: Graph) => {\n (globalThis as any).composer ??= {};\n (globalThis as any).composer.graph = graph;\n};\n"],
5
+ "mappings": ";;;;;AAIA,SAASA,cAAcC,mBAAwC;AAC/D,SAAqBC,oBAAoB;AAIzC,IAAMC,MAAM,GAAGC,YAAAA;AAEf,IAAA,gBAAe,OAAOC,YAAAA;AACpB,QAAMC,UAAUC,aAAaC,KAAKC,aAAaC,QAAQP,GAAAA,KAAQQ,MAAAA;AAC/D,QAAMC,WAAWC,YAAY,MAAA;AAC3BJ,iBAAaK,QAAQX,KAAKG,QAAQS,MAAMC,OAAM,CAAA;EAChD,GAAG,GAAA;AAEHX,UAAQY,oBAAoBC,aAAaC,eAAe,EAAEC,QAAQ,CAACC,cAAcf,QAAQgB,aAAaD,SAAAA,CAAAA;AAEtG,QAAMf,QAAQiB,WAAU;AACxB,QAAMjB,QAAQS,MAAMS,OAAOlB,QAAQS,MAAMU,IAAI;AAE7CC,gBAAcpB,QAAQS,KAAK;AAE3B,SAAOY,YACLT,aAAaU,UACb;IAAEb,OAAOT,QAAQS;IAAOc,SAAS,CAACC,YAAYxB,QAAQuB,QAAQC,OAAAA;EAAS,GACvE,MAAMC,cAAcnB,QAAAA,CAAAA;AAExB;AAGA,IAAMc,gBAAgB,CAACX,UAAAA;AACpBiB,aAAmBC,aAAa,CAAC;AACjCD,aAAmBC,SAASlB,QAAQA;AACvC;",
6
+ "names": ["Capabilities", "contributes", "GraphBuilder", "KEY", "GRAPH_PLUGIN", "context", "builder", "GraphBuilder", "from", "localStorage", "getItem", "undefined", "interval", "setInterval", "setItem", "graph", "pickle", "requestCapabilities", "Capabilities", "AppGraphBuilder", "forEach", "extension", "addExtension", "initialize", "expand", "root", "setupDevtools", "contributes", "AppGraph", "explore", "options", "clearInterval", "globalThis", "composer"]
7
+ }
@@ -1,3 +1,6 @@
1
+ import {
2
+ useGraph
3
+ } from "./chunk-L7JM5AMI.mjs";
1
4
  import {
2
5
  GRAPH_PLUGIN,
3
6
  meta
@@ -9,22 +12,27 @@ export * from "@dxos/app-graph";
9
12
  // packages/plugins/plugin-graph/src/GraphPlugin.ts
10
13
  import { defineModule, lazy, Events, definePlugin } from "@dxos/app-framework";
11
14
  var GraphPlugin = () => definePlugin(meta, [
15
+ defineModule({
16
+ id: `${meta.id}/module/react-context`,
17
+ activatesOn: Events.Startup,
18
+ activate: lazy(() => import("./GraphContext-VQKUKWLP.mjs"))
19
+ }),
12
20
  defineModule({
13
21
  id: `${meta.id}/module/graph`,
14
22
  activatesOn: Events.Startup,
15
23
  activatesBefore: [
16
- Events.SetupAppGraph,
17
- Events.SetupMetadata
24
+ Events.SetupAppGraph
18
25
  ],
19
26
  activatesAfter: [
20
27
  Events.AppGraphReady
21
28
  ],
22
- activate: lazy(() => import("./graph-U2AHH24Q.mjs"))
29
+ activate: lazy(() => import("./graph-WNFVYZKZ.mjs"))
23
30
  })
24
31
  ]);
25
32
  export {
26
33
  GRAPH_PLUGIN,
27
34
  GraphPlugin,
28
- meta
35
+ meta,
36
+ useGraph
29
37
  };
30
38
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/index.ts", "../../../src/GraphPlugin.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nexport * from '@dxos/app-graph';\n\nexport * from './GraphPlugin';\nexport * from './meta';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineModule, lazy, Events, definePlugin } from '@dxos/app-framework';\n\nimport { meta } from './meta';\n\n/**\n * Manages the state of the graph for the application.\n * Enables other plugins to register node builders to add nodes to the graph.\n * This includes actions and annotation each other's nodes.\n */\nexport const GraphPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/graph`,\n activatesOn: Events.Startup,\n activatesBefore: [Events.SetupAppGraph, Events.SetupMetadata],\n activatesAfter: [Events.AppGraphReady],\n activate: lazy(() => import('./graph')),\n }),\n ]);\n"],
5
- "mappings": ";;;;;;AAIA,cAAc;;;ACAd,SAASA,cAAcC,MAAMC,QAAQC,oBAAoB;AASlD,IAAMC,cAAc,MACzBC,aAAaC,MAAM;EACjBC,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOC;IACpBC,iBAAiB;MAACF,OAAOG;MAAeH,OAAOI;;IAC/CC,gBAAgB;MAACL,OAAOM;;IACxBC,UAAUC,KAAK,MAAM,OAAO,sBAAA,CAAA;EAC9B,CAAA;CACD;",
6
- "names": ["defineModule", "lazy", "Events", "definePlugin", "GraphPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "Startup", "activatesBefore", "SetupAppGraph", "SetupMetadata", "activatesAfter", "AppGraphReady", "activate", "lazy"]
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nexport * from '@dxos/app-graph';\n\nexport * from './GraphContext';\nexport * from './GraphPlugin';\nexport * from './meta';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineModule, lazy, Events, definePlugin } from '@dxos/app-framework';\n\nimport { meta } from './meta';\n\n/**\n * Manages the state of the graph for the application.\n * Enables other plugins to register node builders to add nodes to the graph.\n * This includes actions and annotation each other's nodes.\n */\nexport const GraphPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/react-context`,\n activatesOn: Events.Startup,\n activate: lazy(() => import('./GraphContext')),\n }),\n defineModule({\n id: `${meta.id}/module/graph`,\n activatesOn: Events.Startup,\n activatesBefore: [Events.SetupAppGraph],\n activatesAfter: [Events.AppGraphReady],\n activate: lazy(() => import('./graph')),\n }),\n ]);\n"],
5
+ "mappings": ";;;;;;;;;AAIA,cAAc;;;ACAd,SAASA,cAAcC,MAAMC,QAAQC,oBAAoB;AASlD,IAAMC,cAAc,MACzBC,aAAaC,MAAM;EACjBC,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOC;IACpBC,UAAUC,KAAK,MAAM,OAAO,6BAAA,CAAA;EAC9B,CAAA;EACAN,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOC;IACpBG,iBAAiB;MAACJ,OAAOK;;IACzBC,gBAAgB;MAACN,OAAOO;;IACxBL,UAAUC,KAAK,MAAM,OAAO,sBAAA,CAAA;EAC9B,CAAA;CACD;",
6
+ "names": ["defineModule", "lazy", "Events", "definePlugin", "GraphPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "Startup", "activate", "lazy", "activatesBefore", "SetupAppGraph", "activatesAfter", "AppGraphReady"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/plugins/plugin-graph/src/meta.ts":{"bytes":891,"imports":[],"format":"esm"},"packages/plugins/plugin-graph/src/graph.ts":{"bytes":6242,"imports":[{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-graph/src/GraphPlugin.ts":{"bytes":2810,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-graph/src/graph.ts","kind":"dynamic-import","original":"./graph"}],"format":"esm"},"packages/plugins/plugin-graph/src/index.ts":{"bytes":697,"imports":[{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/src/GraphPlugin.ts","kind":"import-statement","original":"./GraphPlugin"},{"path":"packages/plugins/plugin-graph/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-graph/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1499},"packages/plugins/plugin-graph/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/plugins/plugin-graph/dist/lib/browser/chunk-7LNMG3EB.mjs","kind":"import-statement"},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/dist/lib/browser/graph-U2AHH24Q.mjs","kind":"dynamic-import"}],"exports":["GRAPH_PLUGIN","GraphPlugin","meta"],"entryPoint":"packages/plugins/plugin-graph/src/index.ts","inputs":{"packages/plugins/plugin-graph/src/index.ts":{"bytesInOutput":33},"packages/plugins/plugin-graph/src/GraphPlugin.ts":{"bytesInOutput":417}},"bytes":698},"packages/plugins/plugin-graph/dist/lib/browser/graph-U2AHH24Q.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3429},"packages/plugins/plugin-graph/dist/lib/browser/graph-U2AHH24Q.mjs":{"imports":[{"path":"packages/plugins/plugin-graph/dist/lib/browser/chunk-7LNMG3EB.mjs","kind":"import-statement"},{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-graph/src/graph.ts","inputs":{"packages/plugins/plugin-graph/src/graph.ts":{"bytesInOutput":1331}},"bytes":1516},"packages/plugins/plugin-graph/dist/lib/browser/chunk-7LNMG3EB.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":418},"packages/plugins/plugin-graph/dist/lib/browser/chunk-7LNMG3EB.mjs":{"imports":[],"exports":["GRAPH_PLUGIN","meta"],"inputs":{"packages/plugins/plugin-graph/src/meta.ts":{"bytesInOutput":79}},"bytes":204}}}
1
+ {"inputs":{"packages/plugins/plugin-graph/src/meta.ts":{"bytes":891,"imports":[],"format":"esm"},"packages/plugins/plugin-graph/src/GraphContext.tsx":{"bytes":3234,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-graph/src/graph.ts":{"bytes":4364,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-graph/src/GraphPlugin.ts":{"bytes":3276,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-graph/src/GraphContext.tsx","kind":"dynamic-import","original":"./GraphContext"},{"path":"packages/plugins/plugin-graph/src/graph.ts","kind":"dynamic-import","original":"./graph"}],"format":"esm"},"packages/plugins/plugin-graph/src/index.ts":{"bytes":797,"imports":[{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/src/GraphContext.tsx","kind":"import-statement","original":"./GraphContext"},{"path":"packages/plugins/plugin-graph/src/GraphPlugin.ts","kind":"import-statement","original":"./GraphPlugin"},{"path":"packages/plugins/plugin-graph/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-graph/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1757},"packages/plugins/plugin-graph/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/plugins/plugin-graph/dist/lib/browser/chunk-L7JM5AMI.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-graph/dist/lib/browser/chunk-7LNMG3EB.mjs","kind":"import-statement"},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/dist/lib/browser/GraphContext-VQKUKWLP.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-graph/dist/lib/browser/graph-WNFVYZKZ.mjs","kind":"dynamic-import"}],"exports":["GRAPH_PLUGIN","GraphPlugin","meta","useGraph"],"entryPoint":"packages/plugins/plugin-graph/src/index.ts","inputs":{"packages/plugins/plugin-graph/src/index.ts":{"bytesInOutput":33},"packages/plugins/plugin-graph/src/GraphPlugin.ts":{"bytesInOutput":552}},"bytes":896},"packages/plugins/plugin-graph/dist/lib/browser/GraphContext-VQKUKWLP.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-graph/dist/lib/browser/GraphContext-VQKUKWLP.mjs":{"imports":[{"path":"packages/plugins/plugin-graph/dist/lib/browser/chunk-L7JM5AMI.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-graph/dist/lib/browser/chunk-7LNMG3EB.mjs","kind":"import-statement"}],"exports":["default","useGraph"],"entryPoint":"packages/plugins/plugin-graph/src/GraphContext.tsx","inputs":{},"bytes":215},"packages/plugins/plugin-graph/dist/lib/browser/chunk-L7JM5AMI.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1766},"packages/plugins/plugin-graph/dist/lib/browser/chunk-L7JM5AMI.mjs":{"imports":[{"path":"packages/plugins/plugin-graph/dist/lib/browser/chunk-7LNMG3EB.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"exports":["GraphContext_default","useGraph"],"inputs":{"packages/plugins/plugin-graph/src/GraphContext.tsx":{"bytesInOutput":612}},"bytes":814},"packages/plugins/plugin-graph/dist/lib/browser/graph-WNFVYZKZ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2342},"packages/plugins/plugin-graph/dist/lib/browser/graph-WNFVYZKZ.mjs":{"imports":[{"path":"packages/plugins/plugin-graph/dist/lib/browser/chunk-7LNMG3EB.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-graph/src/graph.ts","inputs":{"packages/plugins/plugin-graph/src/graph.ts":{"bytesInOutput":867}},"bytes":1052},"packages/plugins/plugin-graph/dist/lib/browser/chunk-7LNMG3EB.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":418},"packages/plugins/plugin-graph/dist/lib/browser/chunk-7LNMG3EB.mjs":{"imports":[],"exports":["GRAPH_PLUGIN","meta"],"inputs":{"packages/plugins/plugin-graph/src/meta.ts":{"bytesInOutput":79}},"bytes":204}}}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var GraphContext_MUIA2AJE_exports = {};
20
+ __export(GraphContext_MUIA2AJE_exports, {
21
+ default: () => import_chunk_3QIHDIIS.GraphContext_default,
22
+ useGraph: () => import_chunk_3QIHDIIS.useGraph
23
+ });
24
+ module.exports = __toCommonJS(GraphContext_MUIA2AJE_exports);
25
+ var import_chunk_3QIHDIIS = require("./chunk-3QIHDIIS.cjs");
26
+ var import_chunk_KHIPMH35 = require("./chunk-KHIPMH35.cjs");
27
+ // Annotate the CommonJS export names for ESM import in node:
28
+ 0 && (module.exports = {
29
+ useGraph
30
+ });
31
+ //# sourceMappingURL=GraphContext-MUIA2AJE.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["GraphContext-MUIA2AJE.cjs"],
4
+ "sourcesContent": ["import {\n GraphContext_default,\n useGraph\n} from \"./chunk-3QIHDIIS.cjs\";\nimport \"./chunk-KHIPMH35.cjs\";\nexport {\n GraphContext_default as default,\n useGraph\n};\n//# sourceMappingURL=GraphContext-MUIA2AJE.cjs.map\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAGO;AACP,4BAAO;",
6
+ "names": []
7
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var chunk_3QIHDIIS_exports = {};
30
+ __export(chunk_3QIHDIIS_exports, {
31
+ GraphContext_default: () => GraphContext_default,
32
+ useGraph: () => useGraph
33
+ });
34
+ module.exports = __toCommonJS(chunk_3QIHDIIS_exports);
35
+ var import_chunk_KHIPMH35 = require("./chunk-KHIPMH35.cjs");
36
+ var import_react = __toESM(require("react"));
37
+ var import_app_framework = require("@dxos/app-framework");
38
+ var import_debug = require("@dxos/debug");
39
+ var GraphContext = /* @__PURE__ */ (0, import_react.createContext)(null);
40
+ var useGraph = () => (0, import_react.useContext)(GraphContext) ?? (0, import_debug.raise)(new Error("Missing GraphContext"));
41
+ var GraphContext_default = () => (0, import_app_framework.contributes)(import_app_framework.Capabilities.ReactContext, {
42
+ id: import_chunk_KHIPMH35.GRAPH_PLUGIN,
43
+ context: (props) => {
44
+ const value = (0, import_app_framework.useCapability)(import_app_framework.Capabilities.AppGraph);
45
+ return /* @__PURE__ */ import_react.default.createElement(GraphContext.Provider, {
46
+ value
47
+ }, props.children);
48
+ }
49
+ });
50
+ // Annotate the CommonJS export names for ESM import in node:
51
+ 0 && (module.exports = {
52
+ GraphContext_default,
53
+ useGraph
54
+ });
55
+ //# sourceMappingURL=chunk-3QIHDIIS.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/GraphContext.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type Context, createContext, type PropsWithChildren, useContext } from 'react';\n\nimport { Capabilities, contributes, useCapability } from '@dxos/app-framework';\nimport { type GraphBuilder } from '@dxos/app-graph';\nimport { raise } from '@dxos/debug';\n\nimport { GRAPH_PLUGIN } from './meta';\n\ntype GraphContextType = Pick<GraphBuilder, 'graph' | 'explore'>;\nconst GraphContext: Context<GraphContextType | null> = createContext<GraphContextType | null>(null);\n\nexport const useGraph = (): GraphContextType => useContext(GraphContext) ?? raise(new Error('Missing GraphContext'));\n\nexport default () =>\n contributes(Capabilities.ReactContext, {\n id: GRAPH_PLUGIN,\n context: (props: PropsWithChildren) => {\n const value = useCapability(Capabilities.AppGraph);\n return <GraphContext.Provider value={value}>{props.children}</GraphContext.Provider>;\n },\n });\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAuF;AAEvF,2BAAyD;AAEzD,mBAAsB;AAKtB,IAAMA,eAAiDC,gDAAuC,IAAA;AAEvF,IAAMC,WAAW,UAAwBC,yBAAWH,YAAAA,SAAiBI,oBAAM,IAAIC,MAAM,sBAAA,CAAA;AAE5F,IAAA,uBAAe,UACbC,kCAAYC,kCAAaC,cAAc;EACrCC,IAAIC;EACJC,SAAS,CAACC,UAAAA;AACR,UAAMC,YAAQC,oCAAcP,kCAAaQ,QAAQ;AACjD,WAAO,6BAAAC,QAAA,cAAChB,aAAaiB,UAAQ;MAACJ;OAAeD,MAAMM,QAAQ;EAC7D;AACF,CAAA;",
6
+ "names": ["GraphContext", "createContext", "useGraph", "useContext", "raise", "Error", "contributes", "Capabilities", "ReactContext", "id", "GRAPH_PLUGIN", "context", "props", "value", "useCapability", "AppGraph", "React", "Provider", "children"]
7
+ }
@@ -16,13 +16,12 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var graph_AOAAITHV_exports = {};
20
- __export(graph_AOAAITHV_exports, {
19
+ var graph_HXCMZDUQ_exports = {};
20
+ __export(graph_HXCMZDUQ_exports, {
21
21
  default: () => graph_default
22
22
  });
23
- module.exports = __toCommonJS(graph_AOAAITHV_exports);
23
+ module.exports = __toCommonJS(graph_HXCMZDUQ_exports);
24
24
  var import_chunk_KHIPMH35 = require("./chunk-KHIPMH35.cjs");
25
- var import_signals_core = require("@preact/signals-core");
26
25
  var import_app_framework = require("@dxos/app-framework");
27
26
  var import_app_graph = require("@dxos/app-graph");
28
27
  var KEY = `${import_chunk_KHIPMH35.GRAPH_PLUGIN}/app-graph`;
@@ -31,28 +30,17 @@ var graph_default = async (context) => {
31
30
  const interval = setInterval(() => {
32
31
  localStorage.setItem(KEY, builder.graph.pickle());
33
32
  }, 5e3);
34
- const unsubscribe = (0, import_signals_core.effect)(() => {
35
- (0, import_signals_core.batch)(() => {
36
- const next = (0, import_app_graph.flattenExtensions)(context.requestCapabilities(import_app_framework.Capabilities.AppGraphBuilder));
37
- const current = (0, import_signals_core.untracked)(() => builder.extensions);
38
- const removed = current.filter(({ id }) => !next.some(({ id: nextId }) => nextId === id));
39
- removed.forEach((extension) => builder.removeExtension(extension.id));
40
- next.forEach((extension) => builder.addExtension(extension));
41
- });
42
- });
33
+ context.requestCapabilities(import_app_framework.Capabilities.AppGraphBuilder).forEach((extension) => builder.addExtension(extension));
43
34
  await builder.initialize();
44
35
  await builder.graph.expand(builder.graph.root);
45
36
  setupDevtools(builder.graph);
46
37
  return (0, import_app_framework.contributes)(import_app_framework.Capabilities.AppGraph, {
47
38
  graph: builder.graph,
48
39
  explore: (options) => builder.explore(options)
49
- }, () => {
50
- clearInterval(interval);
51
- unsubscribe();
52
- });
40
+ }, () => clearInterval(interval));
53
41
  };
54
42
  var setupDevtools = (graph) => {
55
43
  globalThis.composer ??= {};
56
44
  globalThis.composer.graph = graph;
57
45
  };
58
- //# sourceMappingURL=graph-AOAAITHV.cjs.map
46
+ //# sourceMappingURL=graph-HXCMZDUQ.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/graph.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';\nimport { type Graph, GraphBuilder } from '@dxos/app-graph';\n\nimport { GRAPH_PLUGIN } from './meta';\n\nconst KEY = `${GRAPH_PLUGIN}/app-graph`;\n\nexport default async (context: PluginsContext) => {\n const builder = GraphBuilder.from(localStorage.getItem(KEY) ?? undefined);\n const interval = setInterval(() => {\n localStorage.setItem(KEY, builder.graph.pickle());\n }, 5_000);\n\n context.requestCapabilities(Capabilities.AppGraphBuilder).forEach((extension) => builder.addExtension(extension));\n\n await builder.initialize();\n await builder.graph.expand(builder.graph.root);\n\n setupDevtools(builder.graph);\n\n return contributes(\n Capabilities.AppGraph,\n { graph: builder.graph, explore: (options) => builder.explore(options) },\n () => clearInterval(interval),\n );\n};\n\n// Expose the graph to the window for debugging.\nconst setupDevtools = (graph: Graph) => {\n (globalThis as any).composer ??= {};\n (globalThis as any).composer.graph = graph;\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAIA,2BAA+D;AAC/D,uBAAyC;AAIzC,IAAMA,MAAM,GAAGC,kCAAAA;AAEf,IAAA,gBAAe,OAAOC,YAAAA;AACpB,QAAMC,UAAUC,8BAAaC,KAAKC,aAAaC,QAAQP,GAAAA,KAAQQ,MAAAA;AAC/D,QAAMC,WAAWC,YAAY,MAAA;AAC3BJ,iBAAaK,QAAQX,KAAKG,QAAQS,MAAMC,OAAM,CAAA;EAChD,GAAG,GAAA;AAEHX,UAAQY,oBAAoBC,kCAAaC,eAAe,EAAEC,QAAQ,CAACC,cAAcf,QAAQgB,aAAaD,SAAAA,CAAAA;AAEtG,QAAMf,QAAQiB,WAAU;AACxB,QAAMjB,QAAQS,MAAMS,OAAOlB,QAAQS,MAAMU,IAAI;AAE7CC,gBAAcpB,QAAQS,KAAK;AAE3B,aAAOY,kCACLT,kCAAaU,UACb;IAAEb,OAAOT,QAAQS;IAAOc,SAAS,CAACC,YAAYxB,QAAQuB,QAAQC,OAAAA;EAAS,GACvE,MAAMC,cAAcnB,QAAAA,CAAAA;AAExB;AAGA,IAAMc,gBAAgB,CAACX,UAAAA;AACpBiB,aAAmBC,aAAa,CAAC;AACjCD,aAAmBC,SAASlB,QAAQA;AACvC;",
6
+ "names": ["KEY", "GRAPH_PLUGIN", "context", "builder", "GraphBuilder", "from", "localStorage", "getItem", "undefined", "interval", "setInterval", "setItem", "graph", "pickle", "requestCapabilities", "Capabilities", "AppGraphBuilder", "forEach", "extension", "addExtension", "initialize", "expand", "root", "setupDevtools", "contributes", "AppGraph", "explore", "options", "clearInterval", "globalThis", "composer"]
7
+ }
@@ -31,24 +31,30 @@ var node_exports = {};
31
31
  __export(node_exports, {
32
32
  GRAPH_PLUGIN: () => import_chunk_KHIPMH35.GRAPH_PLUGIN,
33
33
  GraphPlugin: () => GraphPlugin,
34
- meta: () => import_chunk_KHIPMH35.meta
34
+ meta: () => import_chunk_KHIPMH35.meta,
35
+ useGraph: () => import_chunk_3QIHDIIS.useGraph
35
36
  });
36
37
  module.exports = __toCommonJS(node_exports);
38
+ var import_chunk_3QIHDIIS = require("./chunk-3QIHDIIS.cjs");
37
39
  var import_chunk_KHIPMH35 = require("./chunk-KHIPMH35.cjs");
38
40
  __reExport(node_exports, require("@dxos/app-graph"), module.exports);
39
41
  var import_app_framework = require("@dxos/app-framework");
40
42
  var GraphPlugin = () => (0, import_app_framework.definePlugin)(import_chunk_KHIPMH35.meta, [
43
+ (0, import_app_framework.defineModule)({
44
+ id: `${import_chunk_KHIPMH35.meta.id}/module/react-context`,
45
+ activatesOn: import_app_framework.Events.Startup,
46
+ activate: (0, import_app_framework.lazy)(() => import("./GraphContext-MUIA2AJE.cjs"))
47
+ }),
41
48
  (0, import_app_framework.defineModule)({
42
49
  id: `${import_chunk_KHIPMH35.meta.id}/module/graph`,
43
50
  activatesOn: import_app_framework.Events.Startup,
44
51
  activatesBefore: [
45
- import_app_framework.Events.SetupAppGraph,
46
- import_app_framework.Events.SetupMetadata
52
+ import_app_framework.Events.SetupAppGraph
47
53
  ],
48
54
  activatesAfter: [
49
55
  import_app_framework.Events.AppGraphReady
50
56
  ],
51
- activate: (0, import_app_framework.lazy)(() => import("./graph-AOAAITHV.cjs"))
57
+ activate: (0, import_app_framework.lazy)(() => import("./graph-HXCMZDUQ.cjs"))
52
58
  })
53
59
  ]);
54
60
  // Annotate the CommonJS export names for ESM import in node:
@@ -56,6 +62,7 @@ var GraphPlugin = () => (0, import_app_framework.definePlugin)(import_chunk_KHIP
56
62
  GRAPH_PLUGIN,
57
63
  GraphPlugin,
58
64
  meta,
65
+ useGraph,
59
66
  ...require("@dxos/app-graph")
60
67
  });
61
68
  //# sourceMappingURL=index.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/index.ts", "../../../src/GraphPlugin.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nexport * from '@dxos/app-graph';\n\nexport * from './GraphPlugin';\nexport * from './meta';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineModule, lazy, Events, definePlugin } from '@dxos/app-framework';\n\nimport { meta } from './meta';\n\n/**\n * Manages the state of the graph for the application.\n * Enables other plugins to register node builders to add nodes to the graph.\n * This includes actions and annotation each other's nodes.\n */\nexport const GraphPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/graph`,\n activatesOn: Events.Startup,\n activatesBefore: [Events.SetupAppGraph, Events.SetupMetadata],\n activatesAfter: [Events.AppGraphReady],\n activate: lazy(() => import('./graph')),\n }),\n ]);\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,yBAAc;ACAd,2BAAyD;AASlD,IAAMA,cAAc,UACzBC,mCAAaC,4BAAM;MACjBC,mCAAa;IACXC,IAAI,GAAGF,2BAAKE,EAAE;IACdC,aAAaC,4BAAOC;IACpBC,iBAAiB;MAACF,4BAAOG;MAAeH,4BAAOI;;IAC/CC,gBAAgB;MAACL,4BAAOM;;IACxBC,cAAUC,2BAAK,MAAM,OAAO,sBAAA,CAAA;EAC9B,CAAA;CACD;",
6
- "names": ["GraphPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "Startup", "activatesBefore", "SetupAppGraph", "SetupMetadata", "activatesAfter", "AppGraphReady", "activate", "lazy"]
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nexport * from '@dxos/app-graph';\n\nexport * from './GraphContext';\nexport * from './GraphPlugin';\nexport * from './meta';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineModule, lazy, Events, definePlugin } from '@dxos/app-framework';\n\nimport { meta } from './meta';\n\n/**\n * Manages the state of the graph for the application.\n * Enables other plugins to register node builders to add nodes to the graph.\n * This includes actions and annotation each other's nodes.\n */\nexport const GraphPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/react-context`,\n activatesOn: Events.Startup,\n activate: lazy(() => import('./GraphContext')),\n }),\n defineModule({\n id: `${meta.id}/module/graph`,\n activatesOn: Events.Startup,\n activatesBefore: [Events.SetupAppGraph],\n activatesAfter: [Events.AppGraphReady],\n activate: lazy(() => import('./graph')),\n }),\n ]);\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,yBAAc;ACAd,2BAAyD;AASlD,IAAMA,cAAc,UACzBC,mCAAaC,4BAAM;MACjBC,mCAAa;IACXC,IAAI,GAAGF,2BAAKE,EAAE;IACdC,aAAaC,4BAAOC;IACpBC,cAAUC,2BAAK,MAAM,OAAO,6BAAA,CAAA;EAC9B,CAAA;MACAN,mCAAa;IACXC,IAAI,GAAGF,2BAAKE,EAAE;IACdC,aAAaC,4BAAOC;IACpBG,iBAAiB;MAACJ,4BAAOK;;IACzBC,gBAAgB;MAACN,4BAAOO;;IACxBL,cAAUC,2BAAK,MAAM,OAAO,sBAAA,CAAA;EAC9B,CAAA;CACD;",
6
+ "names": ["GraphPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "Startup", "activate", "lazy", "activatesBefore", "SetupAppGraph", "activatesAfter", "AppGraphReady"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/plugins/plugin-graph/src/meta.ts":{"bytes":891,"imports":[],"format":"esm"},"packages/plugins/plugin-graph/src/graph.ts":{"bytes":6242,"imports":[{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-graph/src/GraphPlugin.ts":{"bytes":2810,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-graph/src/graph.ts","kind":"dynamic-import","original":"./graph"}],"format":"esm"},"packages/plugins/plugin-graph/src/index.ts":{"bytes":697,"imports":[{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/src/GraphPlugin.ts","kind":"import-statement","original":"./GraphPlugin"},{"path":"packages/plugins/plugin-graph/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-graph/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1499},"packages/plugins/plugin-graph/dist/lib/node/index.cjs":{"imports":[{"path":"packages/plugins/plugin-graph/dist/lib/node/chunk-KHIPMH35.cjs","kind":"import-statement"},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/dist/lib/node/graph-AOAAITHV.cjs","kind":"dynamic-import"}],"exports":["GRAPH_PLUGIN","GraphPlugin","meta"],"entryPoint":"packages/plugins/plugin-graph/src/index.ts","inputs":{"packages/plugins/plugin-graph/src/index.ts":{"bytesInOutput":33},"packages/plugins/plugin-graph/src/GraphPlugin.ts":{"bytesInOutput":417}},"bytes":698},"packages/plugins/plugin-graph/dist/lib/node/graph-AOAAITHV.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3429},"packages/plugins/plugin-graph/dist/lib/node/graph-AOAAITHV.cjs":{"imports":[{"path":"packages/plugins/plugin-graph/dist/lib/node/chunk-KHIPMH35.cjs","kind":"import-statement"},{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-graph/src/graph.ts","inputs":{"packages/plugins/plugin-graph/src/graph.ts":{"bytesInOutput":1331}},"bytes":1516},"packages/plugins/plugin-graph/dist/lib/node/chunk-KHIPMH35.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":418},"packages/plugins/plugin-graph/dist/lib/node/chunk-KHIPMH35.cjs":{"imports":[],"exports":["GRAPH_PLUGIN","meta"],"inputs":{"packages/plugins/plugin-graph/src/meta.ts":{"bytesInOutput":79}},"bytes":204}}}
1
+ {"inputs":{"packages/plugins/plugin-graph/src/meta.ts":{"bytes":891,"imports":[],"format":"esm"},"packages/plugins/plugin-graph/src/GraphContext.tsx":{"bytes":3234,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-graph/src/graph.ts":{"bytes":4364,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-graph/src/GraphPlugin.ts":{"bytes":3276,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-graph/src/GraphContext.tsx","kind":"dynamic-import","original":"./GraphContext"},{"path":"packages/plugins/plugin-graph/src/graph.ts","kind":"dynamic-import","original":"./graph"}],"format":"esm"},"packages/plugins/plugin-graph/src/index.ts":{"bytes":797,"imports":[{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/src/GraphContext.tsx","kind":"import-statement","original":"./GraphContext"},{"path":"packages/plugins/plugin-graph/src/GraphPlugin.ts","kind":"import-statement","original":"./GraphPlugin"},{"path":"packages/plugins/plugin-graph/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-graph/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1757},"packages/plugins/plugin-graph/dist/lib/node/index.cjs":{"imports":[{"path":"packages/plugins/plugin-graph/dist/lib/node/chunk-3QIHDIIS.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-graph/dist/lib/node/chunk-KHIPMH35.cjs","kind":"import-statement"},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/dist/lib/node/GraphContext-MUIA2AJE.cjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-graph/dist/lib/node/graph-HXCMZDUQ.cjs","kind":"dynamic-import"}],"exports":["GRAPH_PLUGIN","GraphPlugin","meta","useGraph"],"entryPoint":"packages/plugins/plugin-graph/src/index.ts","inputs":{"packages/plugins/plugin-graph/src/index.ts":{"bytesInOutput":33},"packages/plugins/plugin-graph/src/GraphPlugin.ts":{"bytesInOutput":552}},"bytes":896},"packages/plugins/plugin-graph/dist/lib/node/GraphContext-MUIA2AJE.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-graph/dist/lib/node/GraphContext-MUIA2AJE.cjs":{"imports":[{"path":"packages/plugins/plugin-graph/dist/lib/node/chunk-3QIHDIIS.cjs","kind":"import-statement"},{"path":"packages/plugins/plugin-graph/dist/lib/node/chunk-KHIPMH35.cjs","kind":"import-statement"}],"exports":["default","useGraph"],"entryPoint":"packages/plugins/plugin-graph/src/GraphContext.tsx","inputs":{},"bytes":215},"packages/plugins/plugin-graph/dist/lib/node/chunk-3QIHDIIS.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1766},"packages/plugins/plugin-graph/dist/lib/node/chunk-3QIHDIIS.cjs":{"imports":[{"path":"packages/plugins/plugin-graph/dist/lib/node/chunk-KHIPMH35.cjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"exports":["GraphContext_default","useGraph"],"inputs":{"packages/plugins/plugin-graph/src/GraphContext.tsx":{"bytesInOutput":612}},"bytes":814},"packages/plugins/plugin-graph/dist/lib/node/graph-HXCMZDUQ.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2342},"packages/plugins/plugin-graph/dist/lib/node/graph-HXCMZDUQ.cjs":{"imports":[{"path":"packages/plugins/plugin-graph/dist/lib/node/chunk-KHIPMH35.cjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-graph/src/graph.ts","inputs":{"packages/plugins/plugin-graph/src/graph.ts":{"bytesInOutput":867}},"bytes":1052},"packages/plugins/plugin-graph/dist/lib/node/chunk-KHIPMH35.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":418},"packages/plugins/plugin-graph/dist/lib/node/chunk-KHIPMH35.cjs":{"imports":[],"exports":["GRAPH_PLUGIN","meta"],"inputs":{"packages/plugins/plugin-graph/src/meta.ts":{"bytesInOutput":79}},"bytes":204}}}
@@ -0,0 +1,11 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ GraphContext_default,
4
+ useGraph
5
+ } from "./chunk-XY43PHPY.mjs";
6
+ import "./chunk-IHM26RSC.mjs";
7
+ export {
8
+ GraphContext_default as default,
9
+ useGraph
10
+ };
11
+ //# sourceMappingURL=GraphContext-VNVZEAJK.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,26 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ GRAPH_PLUGIN
4
+ } from "./chunk-IHM26RSC.mjs";
5
+
6
+ // packages/plugins/plugin-graph/src/GraphContext.tsx
7
+ import React, { createContext, useContext } from "react";
8
+ import { Capabilities, contributes, useCapability } from "@dxos/app-framework";
9
+ import { raise } from "@dxos/debug";
10
+ var GraphContext = /* @__PURE__ */ createContext(null);
11
+ var useGraph = () => useContext(GraphContext) ?? raise(new Error("Missing GraphContext"));
12
+ var GraphContext_default = () => contributes(Capabilities.ReactContext, {
13
+ id: GRAPH_PLUGIN,
14
+ context: (props) => {
15
+ const value = useCapability(Capabilities.AppGraph);
16
+ return /* @__PURE__ */ React.createElement(GraphContext.Provider, {
17
+ value
18
+ }, props.children);
19
+ }
20
+ });
21
+
22
+ export {
23
+ useGraph,
24
+ GraphContext_default
25
+ };
26
+ //# sourceMappingURL=chunk-XY43PHPY.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/GraphContext.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type Context, createContext, type PropsWithChildren, useContext } from 'react';\n\nimport { Capabilities, contributes, useCapability } from '@dxos/app-framework';\nimport { type GraphBuilder } from '@dxos/app-graph';\nimport { raise } from '@dxos/debug';\n\nimport { GRAPH_PLUGIN } from './meta';\n\ntype GraphContextType = Pick<GraphBuilder, 'graph' | 'explore'>;\nconst GraphContext: Context<GraphContextType | null> = createContext<GraphContextType | null>(null);\n\nexport const useGraph = (): GraphContextType => useContext(GraphContext) ?? raise(new Error('Missing GraphContext'));\n\nexport default () =>\n contributes(Capabilities.ReactContext, {\n id: GRAPH_PLUGIN,\n context: (props: PropsWithChildren) => {\n const value = useCapability(Capabilities.AppGraph);\n return <GraphContext.Provider value={value}>{props.children}</GraphContext.Provider>;\n },\n });\n"],
5
+ "mappings": ";;;;;;AAIA,OAAOA,SAAuBC,eAAuCC,kBAAkB;AAEvF,SAASC,cAAcC,aAAaC,qBAAqB;AAEzD,SAASC,aAAa;AAKtB,IAAMC,eAAiDC,8BAAuC,IAAA;AAEvF,IAAMC,WAAW,MAAwBC,WAAWH,YAAAA,KAAiBI,MAAM,IAAIC,MAAM,sBAAA,CAAA;AAE5F,IAAA,uBAAe,MACbC,YAAYC,aAAaC,cAAc;EACrCC,IAAIC;EACJC,SAAS,CAACC,UAAAA;AACR,UAAMC,QAAQC,cAAcP,aAAaQ,QAAQ;AACjD,WAAO,sBAAA,cAACf,aAAagB,UAAQ;MAACH;OAAeD,MAAMK,QAAQ;EAC7D;AACF,CAAA;",
6
+ "names": ["React", "createContext", "useContext", "Capabilities", "contributes", "useCapability", "raise", "GraphContext", "createContext", "useGraph", "useContext", "raise", "Error", "contributes", "Capabilities", "ReactContext", "id", "GRAPH_PLUGIN", "context", "props", "value", "useCapability", "AppGraph", "Provider", "children"]
7
+ }
@@ -4,34 +4,22 @@ import {
4
4
  } from "./chunk-IHM26RSC.mjs";
5
5
 
6
6
  // packages/plugins/plugin-graph/src/graph.ts
7
- import { batch, effect, untracked } from "@preact/signals-core";
8
7
  import { Capabilities, contributes } from "@dxos/app-framework";
9
- import { flattenExtensions, GraphBuilder } from "@dxos/app-graph";
8
+ import { GraphBuilder } from "@dxos/app-graph";
10
9
  var KEY = `${GRAPH_PLUGIN}/app-graph`;
11
10
  var graph_default = async (context) => {
12
11
  const builder = GraphBuilder.from(localStorage.getItem(KEY) ?? void 0);
13
12
  const interval = setInterval(() => {
14
13
  localStorage.setItem(KEY, builder.graph.pickle());
15
14
  }, 5e3);
16
- const unsubscribe = effect(() => {
17
- batch(() => {
18
- const next = flattenExtensions(context.requestCapabilities(Capabilities.AppGraphBuilder));
19
- const current = untracked(() => builder.extensions);
20
- const removed = current.filter(({ id }) => !next.some(({ id: nextId }) => nextId === id));
21
- removed.forEach((extension) => builder.removeExtension(extension.id));
22
- next.forEach((extension) => builder.addExtension(extension));
23
- });
24
- });
15
+ context.requestCapabilities(Capabilities.AppGraphBuilder).forEach((extension) => builder.addExtension(extension));
25
16
  await builder.initialize();
26
17
  await builder.graph.expand(builder.graph.root);
27
18
  setupDevtools(builder.graph);
28
19
  return contributes(Capabilities.AppGraph, {
29
20
  graph: builder.graph,
30
21
  explore: (options) => builder.explore(options)
31
- }, () => {
32
- clearInterval(interval);
33
- unsubscribe();
34
- });
22
+ }, () => clearInterval(interval));
35
23
  };
36
24
  var setupDevtools = (graph) => {
37
25
  globalThis.composer ??= {};
@@ -40,4 +28,4 @@ var setupDevtools = (graph) => {
40
28
  export {
41
29
  graph_default as default
42
30
  };
43
- //# sourceMappingURL=graph-VC422POI.mjs.map
31
+ //# sourceMappingURL=graph-UQRZMBQ5.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/graph.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';\nimport { type Graph, GraphBuilder } from '@dxos/app-graph';\n\nimport { GRAPH_PLUGIN } from './meta';\n\nconst KEY = `${GRAPH_PLUGIN}/app-graph`;\n\nexport default async (context: PluginsContext) => {\n const builder = GraphBuilder.from(localStorage.getItem(KEY) ?? undefined);\n const interval = setInterval(() => {\n localStorage.setItem(KEY, builder.graph.pickle());\n }, 5_000);\n\n context.requestCapabilities(Capabilities.AppGraphBuilder).forEach((extension) => builder.addExtension(extension));\n\n await builder.initialize();\n await builder.graph.expand(builder.graph.root);\n\n setupDevtools(builder.graph);\n\n return contributes(\n Capabilities.AppGraph,\n { graph: builder.graph, explore: (options) => builder.explore(options) },\n () => clearInterval(interval),\n );\n};\n\n// Expose the graph to the window for debugging.\nconst setupDevtools = (graph: Graph) => {\n (globalThis as any).composer ??= {};\n (globalThis as any).composer.graph = graph;\n};\n"],
5
+ "mappings": ";;;;;;AAIA,SAASA,cAAcC,mBAAwC;AAC/D,SAAqBC,oBAAoB;AAIzC,IAAMC,MAAM,GAAGC,YAAAA;AAEf,IAAA,gBAAe,OAAOC,YAAAA;AACpB,QAAMC,UAAUC,aAAaC,KAAKC,aAAaC,QAAQP,GAAAA,KAAQQ,MAAAA;AAC/D,QAAMC,WAAWC,YAAY,MAAA;AAC3BJ,iBAAaK,QAAQX,KAAKG,QAAQS,MAAMC,OAAM,CAAA;EAChD,GAAG,GAAA;AAEHX,UAAQY,oBAAoBC,aAAaC,eAAe,EAAEC,QAAQ,CAACC,cAAcf,QAAQgB,aAAaD,SAAAA,CAAAA;AAEtG,QAAMf,QAAQiB,WAAU;AACxB,QAAMjB,QAAQS,MAAMS,OAAOlB,QAAQS,MAAMU,IAAI;AAE7CC,gBAAcpB,QAAQS,KAAK;AAE3B,SAAOY,YACLT,aAAaU,UACb;IAAEb,OAAOT,QAAQS;IAAOc,SAAS,CAACC,YAAYxB,QAAQuB,QAAQC,OAAAA;EAAS,GACvE,MAAMC,cAAcnB,QAAAA,CAAAA;AAExB;AAGA,IAAMc,gBAAgB,CAACX,UAAAA;AACpBiB,aAAmBC,aAAa,CAAC;AACjCD,aAAmBC,SAASlB,QAAQA;AACvC;",
6
+ "names": ["Capabilities", "contributes", "GraphBuilder", "KEY", "GRAPH_PLUGIN", "context", "builder", "GraphBuilder", "from", "localStorage", "getItem", "undefined", "interval", "setInterval", "setItem", "graph", "pickle", "requestCapabilities", "Capabilities", "AppGraphBuilder", "forEach", "extension", "addExtension", "initialize", "expand", "root", "setupDevtools", "contributes", "AppGraph", "explore", "options", "clearInterval", "globalThis", "composer"]
7
+ }
@@ -1,4 +1,7 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ useGraph
4
+ } from "./chunk-XY43PHPY.mjs";
2
5
  import {
3
6
  GRAPH_PLUGIN,
4
7
  meta
@@ -10,22 +13,27 @@ export * from "@dxos/app-graph";
10
13
  // packages/plugins/plugin-graph/src/GraphPlugin.ts
11
14
  import { defineModule, lazy, Events, definePlugin } from "@dxos/app-framework";
12
15
  var GraphPlugin = () => definePlugin(meta, [
16
+ defineModule({
17
+ id: `${meta.id}/module/react-context`,
18
+ activatesOn: Events.Startup,
19
+ activate: lazy(() => import("./GraphContext-VNVZEAJK.mjs"))
20
+ }),
13
21
  defineModule({
14
22
  id: `${meta.id}/module/graph`,
15
23
  activatesOn: Events.Startup,
16
24
  activatesBefore: [
17
- Events.SetupAppGraph,
18
- Events.SetupMetadata
25
+ Events.SetupAppGraph
19
26
  ],
20
27
  activatesAfter: [
21
28
  Events.AppGraphReady
22
29
  ],
23
- activate: lazy(() => import("./graph-VC422POI.mjs"))
30
+ activate: lazy(() => import("./graph-UQRZMBQ5.mjs"))
24
31
  })
25
32
  ]);
26
33
  export {
27
34
  GRAPH_PLUGIN,
28
35
  GraphPlugin,
29
- meta
36
+ meta,
37
+ useGraph
30
38
  };
31
39
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/index.ts", "../../../src/GraphPlugin.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nexport * from '@dxos/app-graph';\n\nexport * from './GraphPlugin';\nexport * from './meta';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineModule, lazy, Events, definePlugin } from '@dxos/app-framework';\n\nimport { meta } from './meta';\n\n/**\n * Manages the state of the graph for the application.\n * Enables other plugins to register node builders to add nodes to the graph.\n * This includes actions and annotation each other's nodes.\n */\nexport const GraphPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/graph`,\n activatesOn: Events.Startup,\n activatesBefore: [Events.SetupAppGraph, Events.SetupMetadata],\n activatesAfter: [Events.AppGraphReady],\n activate: lazy(() => import('./graph')),\n }),\n ]);\n"],
5
- "mappings": ";;;;;;;AAIA,cAAc;;;ACAd,SAASA,cAAcC,MAAMC,QAAQC,oBAAoB;AASlD,IAAMC,cAAc,MACzBC,aAAaC,MAAM;EACjBC,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOC;IACpBC,iBAAiB;MAACF,OAAOG;MAAeH,OAAOI;;IAC/CC,gBAAgB;MAACL,OAAOM;;IACxBC,UAAUC,KAAK,MAAM,OAAO,sBAAA,CAAA;EAC9B,CAAA;CACD;",
6
- "names": ["defineModule", "lazy", "Events", "definePlugin", "GraphPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "Startup", "activatesBefore", "SetupAppGraph", "SetupMetadata", "activatesAfter", "AppGraphReady", "activate", "lazy"]
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nexport * from '@dxos/app-graph';\n\nexport * from './GraphContext';\nexport * from './GraphPlugin';\nexport * from './meta';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineModule, lazy, Events, definePlugin } from '@dxos/app-framework';\n\nimport { meta } from './meta';\n\n/**\n * Manages the state of the graph for the application.\n * Enables other plugins to register node builders to add nodes to the graph.\n * This includes actions and annotation each other's nodes.\n */\nexport const GraphPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/react-context`,\n activatesOn: Events.Startup,\n activate: lazy(() => import('./GraphContext')),\n }),\n defineModule({\n id: `${meta.id}/module/graph`,\n activatesOn: Events.Startup,\n activatesBefore: [Events.SetupAppGraph],\n activatesAfter: [Events.AppGraphReady],\n activate: lazy(() => import('./graph')),\n }),\n ]);\n"],
5
+ "mappings": ";;;;;;;;;;AAIA,cAAc;;;ACAd,SAASA,cAAcC,MAAMC,QAAQC,oBAAoB;AASlD,IAAMC,cAAc,MACzBC,aAAaC,MAAM;EACjBC,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOC;IACpBC,UAAUC,KAAK,MAAM,OAAO,6BAAA,CAAA;EAC9B,CAAA;EACAN,aAAa;IACXC,IAAI,GAAGF,KAAKE,EAAE;IACdC,aAAaC,OAAOC;IACpBG,iBAAiB;MAACJ,OAAOK;;IACzBC,gBAAgB;MAACN,OAAOO;;IACxBL,UAAUC,KAAK,MAAM,OAAO,sBAAA,CAAA;EAC9B,CAAA;CACD;",
6
+ "names": ["defineModule", "lazy", "Events", "definePlugin", "GraphPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "Startup", "activate", "lazy", "activatesBefore", "SetupAppGraph", "activatesAfter", "AppGraphReady"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/plugins/plugin-graph/src/meta.ts":{"bytes":891,"imports":[],"format":"esm"},"packages/plugins/plugin-graph/src/graph.ts":{"bytes":6242,"imports":[{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-graph/src/GraphPlugin.ts":{"bytes":2810,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-graph/src/graph.ts","kind":"dynamic-import","original":"./graph"}],"format":"esm"},"packages/plugins/plugin-graph/src/index.ts":{"bytes":697,"imports":[{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/src/GraphPlugin.ts","kind":"import-statement","original":"./GraphPlugin"},{"path":"packages/plugins/plugin-graph/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-graph/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1500},"packages/plugins/plugin-graph/dist/lib/node-esm/index.mjs":{"imports":[{"path":"packages/plugins/plugin-graph/dist/lib/node-esm/chunk-IHM26RSC.mjs","kind":"import-statement"},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/dist/lib/node-esm/graph-VC422POI.mjs","kind":"dynamic-import"}],"exports":["GRAPH_PLUGIN","GraphPlugin","meta"],"entryPoint":"packages/plugins/plugin-graph/src/index.ts","inputs":{"packages/plugins/plugin-graph/src/index.ts":{"bytesInOutput":33},"packages/plugins/plugin-graph/src/GraphPlugin.ts":{"bytesInOutput":417}},"bytes":790},"packages/plugins/plugin-graph/dist/lib/node-esm/graph-VC422POI.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3430},"packages/plugins/plugin-graph/dist/lib/node-esm/graph-VC422POI.mjs":{"imports":[{"path":"packages/plugins/plugin-graph/dist/lib/node-esm/chunk-IHM26RSC.mjs","kind":"import-statement"},{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-graph/src/graph.ts","inputs":{"packages/plugins/plugin-graph/src/graph.ts":{"bytesInOutput":1331}},"bytes":1608},"packages/plugins/plugin-graph/dist/lib/node-esm/chunk-IHM26RSC.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":420},"packages/plugins/plugin-graph/dist/lib/node-esm/chunk-IHM26RSC.mjs":{"imports":[],"exports":["GRAPH_PLUGIN","meta"],"inputs":{"packages/plugins/plugin-graph/src/meta.ts":{"bytesInOutput":79}},"bytes":297}}}
1
+ {"inputs":{"packages/plugins/plugin-graph/src/meta.ts":{"bytes":891,"imports":[],"format":"esm"},"packages/plugins/plugin-graph/src/GraphContext.tsx":{"bytes":3234,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-graph/src/graph.ts":{"bytes":4364,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-graph/src/GraphPlugin.ts":{"bytes":3276,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-graph/src/GraphContext.tsx","kind":"dynamic-import","original":"./GraphContext"},{"path":"packages/plugins/plugin-graph/src/graph.ts","kind":"dynamic-import","original":"./graph"}],"format":"esm"},"packages/plugins/plugin-graph/src/index.ts":{"bytes":797,"imports":[{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/src/GraphContext.tsx","kind":"import-statement","original":"./GraphContext"},{"path":"packages/plugins/plugin-graph/src/GraphPlugin.ts","kind":"import-statement","original":"./GraphPlugin"},{"path":"packages/plugins/plugin-graph/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-graph/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1758},"packages/plugins/plugin-graph/dist/lib/node-esm/index.mjs":{"imports":[{"path":"packages/plugins/plugin-graph/dist/lib/node-esm/chunk-XY43PHPY.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-graph/dist/lib/node-esm/chunk-IHM26RSC.mjs","kind":"import-statement"},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-graph/dist/lib/node-esm/GraphContext-VNVZEAJK.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-graph/dist/lib/node-esm/graph-UQRZMBQ5.mjs","kind":"dynamic-import"}],"exports":["GRAPH_PLUGIN","GraphPlugin","meta","useGraph"],"entryPoint":"packages/plugins/plugin-graph/src/index.ts","inputs":{"packages/plugins/plugin-graph/src/index.ts":{"bytesInOutput":33},"packages/plugins/plugin-graph/src/GraphPlugin.ts":{"bytesInOutput":552}},"bytes":988},"packages/plugins/plugin-graph/dist/lib/node-esm/GraphContext-VNVZEAJK.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-graph/dist/lib/node-esm/GraphContext-VNVZEAJK.mjs":{"imports":[{"path":"packages/plugins/plugin-graph/dist/lib/node-esm/chunk-XY43PHPY.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-graph/dist/lib/node-esm/chunk-IHM26RSC.mjs","kind":"import-statement"}],"exports":["default","useGraph"],"entryPoint":"packages/plugins/plugin-graph/src/GraphContext.tsx","inputs":{},"bytes":307},"packages/plugins/plugin-graph/dist/lib/node-esm/chunk-XY43PHPY.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1767},"packages/plugins/plugin-graph/dist/lib/node-esm/chunk-XY43PHPY.mjs":{"imports":[{"path":"packages/plugins/plugin-graph/dist/lib/node-esm/chunk-IHM26RSC.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"exports":["GraphContext_default","useGraph"],"inputs":{"packages/plugins/plugin-graph/src/GraphContext.tsx":{"bytesInOutput":612}},"bytes":906},"packages/plugins/plugin-graph/dist/lib/node-esm/graph-UQRZMBQ5.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2343},"packages/plugins/plugin-graph/dist/lib/node-esm/graph-UQRZMBQ5.mjs":{"imports":[{"path":"packages/plugins/plugin-graph/dist/lib/node-esm/chunk-IHM26RSC.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-graph/src/graph.ts","inputs":{"packages/plugins/plugin-graph/src/graph.ts":{"bytesInOutput":867}},"bytes":1144},"packages/plugins/plugin-graph/dist/lib/node-esm/chunk-IHM26RSC.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":420},"packages/plugins/plugin-graph/dist/lib/node-esm/chunk-IHM26RSC.mjs":{"imports":[],"exports":["GRAPH_PLUGIN","meta"],"inputs":{"packages/plugins/plugin-graph/src/meta.ts":{"bytesInOutput":79}},"bytes":297}}}
@@ -0,0 +1,11 @@
1
+ import React, { type PropsWithChildren } from 'react';
2
+ import { type GraphBuilder } from '@dxos/app-graph';
3
+ type GraphContextType = Pick<GraphBuilder, 'graph' | 'explore'>;
4
+ export declare const useGraph: () => GraphContextType;
5
+ declare const _default: () => import("@dxos/app-framework").Capability<Readonly<{
6
+ id: string;
7
+ dependsOn?: string[];
8
+ context: React.FC<PropsWithChildren>;
9
+ }>>;
10
+ export default _default;
11
+ //# sourceMappingURL=GraphContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphContext.d.ts","sourceRoot":"","sources":["../../../src/GraphContext.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAA+B,KAAK,iBAAiB,EAAc,MAAM,OAAO,CAAC;AAG/F,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAKpD,KAAK,gBAAgB,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC;AAGhE,eAAO,MAAM,QAAQ,QAAO,gBAAwF,CAAC;;;;;;AAErH,wBAOK"}
@@ -1 +1 @@
1
- {"version":3,"file":"GraphPlugin.d.ts","sourceRoot":"","sources":["../../../src/GraphPlugin.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,eAAO,MAAM,WAAW,4CASpB,CAAC"}
1
+ {"version":3,"file":"GraphPlugin.d.ts","sourceRoot":"","sources":["../../../src/GraphPlugin.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,eAAO,MAAM,WAAW,4CAcpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../src/graph.ts"],"names":[],"mappings":"AAMA,OAAO,EAA6B,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAqB,KAAK,KAAK,EAAgB,MAAM,iBAAiB,CAAC;kCAM/C,cAAc;;;;AAA7C,wBA6BE"}
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../src/graph.ts"],"names":[],"mappings":"AAIA,OAAO,EAA6B,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,KAAK,KAAK,EAAgB,MAAM,iBAAiB,CAAC;kCAM5B,cAAc;;;;AAA7C,wBAkBE"}
@@ -1,4 +1,5 @@
1
1
  export * from '@dxos/app-graph';
2
+ export * from './GraphContext';
2
3
  export * from './GraphPlugin';
3
4
  export * from './meta';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,iBAAiB,CAAC;AAEhC,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,iBAAiB,CAAC;AAEhC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-graph",
3
- "version": "0.7.5-labs.e27f9b9",
3
+ "version": "0.7.5-main.2567c87",
4
4
  "description": "DXOS Surface plugin for constructing knowledge graphs",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -24,10 +24,10 @@
24
24
  ],
25
25
  "dependencies": {
26
26
  "@preact/signals-core": "^1.6.0",
27
- "@dxos/debug": "0.7.5-labs.e27f9b9",
28
- "@dxos/app-framework": "0.7.5-labs.e27f9b9",
29
- "@dxos/app-graph": "0.7.5-labs.e27f9b9",
30
- "@dxos/async": "0.7.5-labs.e27f9b9"
27
+ "@dxos/app-framework": "0.7.5-main.2567c87",
28
+ "@dxos/app-graph": "0.7.5-main.2567c87",
29
+ "@dxos/debug": "0.7.5-main.2567c87",
30
+ "@dxos/async": "0.7.5-main.2567c87"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@types/react": "~18.2.0",
@@ -35,8 +35,8 @@
35
35
  "react": "~18.2.0",
36
36
  "react-dom": "~18.2.0",
37
37
  "vite": "5.4.7",
38
- "@dxos/react-client": "0.7.5-labs.e27f9b9",
39
- "@dxos/storybook-utils": "0.7.5-labs.e27f9b9"
38
+ "@dxos/react-client": "0.7.5-main.2567c87",
39
+ "@dxos/storybook-utils": "0.7.5-main.2567c87"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "react": "~18.2.0",
@@ -0,0 +1,25 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import React, { type Context, createContext, type PropsWithChildren, useContext } from 'react';
6
+
7
+ import { Capabilities, contributes, useCapability } from '@dxos/app-framework';
8
+ import { type GraphBuilder } from '@dxos/app-graph';
9
+ import { raise } from '@dxos/debug';
10
+
11
+ import { GRAPH_PLUGIN } from './meta';
12
+
13
+ type GraphContextType = Pick<GraphBuilder, 'graph' | 'explore'>;
14
+ const GraphContext: Context<GraphContextType | null> = createContext<GraphContextType | null>(null);
15
+
16
+ export const useGraph = (): GraphContextType => useContext(GraphContext) ?? raise(new Error('Missing GraphContext'));
17
+
18
+ export default () =>
19
+ contributes(Capabilities.ReactContext, {
20
+ id: GRAPH_PLUGIN,
21
+ context: (props: PropsWithChildren) => {
22
+ const value = useCapability(Capabilities.AppGraph);
23
+ return <GraphContext.Provider value={value}>{props.children}</GraphContext.Provider>;
24
+ },
25
+ });
@@ -13,10 +13,15 @@ import { meta } from './meta';
13
13
  */
14
14
  export const GraphPlugin = () =>
15
15
  definePlugin(meta, [
16
+ defineModule({
17
+ id: `${meta.id}/module/react-context`,
18
+ activatesOn: Events.Startup,
19
+ activate: lazy(() => import('./GraphContext')),
20
+ }),
16
21
  defineModule({
17
22
  id: `${meta.id}/module/graph`,
18
23
  activatesOn: Events.Startup,
19
- activatesBefore: [Events.SetupAppGraph, Events.SetupMetadata],
24
+ activatesBefore: [Events.SetupAppGraph],
20
25
  activatesAfter: [Events.AppGraphReady],
21
26
  activate: lazy(() => import('./graph')),
22
27
  }),
package/src/graph.ts CHANGED
@@ -2,10 +2,8 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { batch, effect, untracked } from '@preact/signals-core';
6
-
7
5
  import { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';
8
- import { flattenExtensions, type Graph, GraphBuilder } from '@dxos/app-graph';
6
+ import { type Graph, GraphBuilder } from '@dxos/app-graph';
9
7
 
10
8
  import { GRAPH_PLUGIN } from './meta';
11
9
 
@@ -17,15 +15,7 @@ export default async (context: PluginsContext) => {
17
15
  localStorage.setItem(KEY, builder.graph.pickle());
18
16
  }, 5_000);
19
17
 
20
- const unsubscribe = effect(() => {
21
- batch(() => {
22
- const next = flattenExtensions(context.requestCapabilities(Capabilities.AppGraphBuilder));
23
- const current = untracked(() => builder.extensions);
24
- const removed = current.filter(({ id }) => !next.some(({ id: nextId }) => nextId === id));
25
- removed.forEach((extension) => builder.removeExtension(extension.id));
26
- next.forEach((extension) => builder.addExtension(extension));
27
- });
28
- });
18
+ context.requestCapabilities(Capabilities.AppGraphBuilder).forEach((extension) => builder.addExtension(extension));
29
19
 
30
20
  await builder.initialize();
31
21
  await builder.graph.expand(builder.graph.root);
@@ -35,10 +25,7 @@ export default async (context: PluginsContext) => {
35
25
  return contributes(
36
26
  Capabilities.AppGraph,
37
27
  { graph: builder.graph, explore: (options) => builder.explore(options) },
38
- () => {
39
- clearInterval(interval);
40
- unsubscribe();
41
- },
28
+ () => clearInterval(interval),
42
29
  );
43
30
  };
44
31
 
package/src/index.ts CHANGED
@@ -4,5 +4,6 @@
4
4
 
5
5
  export * from '@dxos/app-graph';
6
6
 
7
+ export * from './GraphContext';
7
8
  export * from './GraphPlugin';
8
9
  export * from './meta';
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/graph.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { batch, effect, untracked } from '@preact/signals-core';\n\nimport { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';\nimport { flattenExtensions, type Graph, GraphBuilder } from '@dxos/app-graph';\n\nimport { GRAPH_PLUGIN } from './meta';\n\nconst KEY = `${GRAPH_PLUGIN}/app-graph`;\n\nexport default async (context: PluginsContext) => {\n const builder = GraphBuilder.from(localStorage.getItem(KEY) ?? undefined);\n const interval = setInterval(() => {\n localStorage.setItem(KEY, builder.graph.pickle());\n }, 5_000);\n\n const unsubscribe = effect(() => {\n batch(() => {\n const next = flattenExtensions(context.requestCapabilities(Capabilities.AppGraphBuilder));\n const current = untracked(() => builder.extensions);\n const removed = current.filter(({ id }) => !next.some(({ id: nextId }) => nextId === id));\n removed.forEach((extension) => builder.removeExtension(extension.id));\n next.forEach((extension) => builder.addExtension(extension));\n });\n });\n\n await builder.initialize();\n await builder.graph.expand(builder.graph.root);\n\n setupDevtools(builder.graph);\n\n return contributes(\n Capabilities.AppGraph,\n { graph: builder.graph, explore: (options) => builder.explore(options) },\n () => {\n clearInterval(interval);\n unsubscribe();\n },\n );\n};\n\n// Expose the graph to the window for debugging.\nconst setupDevtools = (graph: Graph) => {\n (globalThis as any).composer ??= {};\n (globalThis as any).composer.graph = graph;\n};\n"],
5
- "mappings": ";;;;;AAIA,SAASA,OAAOC,QAAQC,iBAAiB;AAEzC,SAASC,cAAcC,mBAAwC;AAC/D,SAASC,mBAA+BC,oBAAoB;AAI5D,IAAMC,MAAM,GAAGC,YAAAA;AAEf,IAAA,gBAAe,OAAOC,YAAAA;AACpB,QAAMC,UAAUC,aAAaC,KAAKC,aAAaC,QAAQP,GAAAA,KAAQQ,MAAAA;AAC/D,QAAMC,WAAWC,YAAY,MAAA;AAC3BJ,iBAAaK,QAAQX,KAAKG,QAAQS,MAAMC,OAAM,CAAA;EAChD,GAAG,GAAA;AAEH,QAAMC,cAAcC,OAAO,MAAA;AACzBC,UAAM,MAAA;AACJ,YAAMC,OAAOC,kBAAkBhB,QAAQiB,oBAAoBC,aAAaC,eAAe,CAAA;AACvF,YAAMC,UAAUC,UAAU,MAAMpB,QAAQqB,UAAU;AAClD,YAAMC,UAAUH,QAAQI,OAAO,CAAC,EAAEC,GAAE,MAAO,CAACV,KAAKW,KAAK,CAAC,EAAED,IAAIE,OAAM,MAAOA,WAAWF,EAAAA,CAAAA;AACrFF,cAAQK,QAAQ,CAACC,cAAc5B,QAAQ6B,gBAAgBD,UAAUJ,EAAE,CAAA;AACnEV,WAAKa,QAAQ,CAACC,cAAc5B,QAAQ8B,aAAaF,SAAAA,CAAAA;IACnD,CAAA;EACF,CAAA;AAEA,QAAM5B,QAAQ+B,WAAU;AACxB,QAAM/B,QAAQS,MAAMuB,OAAOhC,QAAQS,MAAMwB,IAAI;AAE7CC,gBAAclC,QAAQS,KAAK;AAE3B,SAAO0B,YACLlB,aAAamB,UACb;IAAE3B,OAAOT,QAAQS;IAAO4B,SAAS,CAACC,YAAYtC,QAAQqC,QAAQC,OAAAA;EAAS,GACvE,MAAA;AACEC,kBAAcjC,QAAAA;AACdK,gBAAAA;EACF,CAAA;AAEJ;AAGA,IAAMuB,gBAAgB,CAACzB,UAAAA;AACpB+B,aAAmBC,aAAa,CAAC;AACjCD,aAAmBC,SAAShC,QAAQA;AACvC;",
6
- "names": ["batch", "effect", "untracked", "Capabilities", "contributes", "flattenExtensions", "GraphBuilder", "KEY", "GRAPH_PLUGIN", "context", "builder", "GraphBuilder", "from", "localStorage", "getItem", "undefined", "interval", "setInterval", "setItem", "graph", "pickle", "unsubscribe", "effect", "batch", "next", "flattenExtensions", "requestCapabilities", "Capabilities", "AppGraphBuilder", "current", "untracked", "extensions", "removed", "filter", "id", "some", "nextId", "forEach", "extension", "removeExtension", "addExtension", "initialize", "expand", "root", "setupDevtools", "contributes", "AppGraph", "explore", "options", "clearInterval", "globalThis", "composer"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/graph.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { batch, effect, untracked } from '@preact/signals-core';\n\nimport { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';\nimport { flattenExtensions, type Graph, GraphBuilder } from '@dxos/app-graph';\n\nimport { GRAPH_PLUGIN } from './meta';\n\nconst KEY = `${GRAPH_PLUGIN}/app-graph`;\n\nexport default async (context: PluginsContext) => {\n const builder = GraphBuilder.from(localStorage.getItem(KEY) ?? undefined);\n const interval = setInterval(() => {\n localStorage.setItem(KEY, builder.graph.pickle());\n }, 5_000);\n\n const unsubscribe = effect(() => {\n batch(() => {\n const next = flattenExtensions(context.requestCapabilities(Capabilities.AppGraphBuilder));\n const current = untracked(() => builder.extensions);\n const removed = current.filter(({ id }) => !next.some(({ id: nextId }) => nextId === id));\n removed.forEach((extension) => builder.removeExtension(extension.id));\n next.forEach((extension) => builder.addExtension(extension));\n });\n });\n\n await builder.initialize();\n await builder.graph.expand(builder.graph.root);\n\n setupDevtools(builder.graph);\n\n return contributes(\n Capabilities.AppGraph,\n { graph: builder.graph, explore: (options) => builder.explore(options) },\n () => {\n clearInterval(interval);\n unsubscribe();\n },\n );\n};\n\n// Expose the graph to the window for debugging.\nconst setupDevtools = (graph: Graph) => {\n (globalThis as any).composer ??= {};\n (globalThis as any).composer.graph = graph;\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAIA,0BAAyC;AAEzC,2BAA+D;AAC/D,uBAA4D;AAI5D,IAAMA,MAAM,GAAGC,kCAAAA;AAEf,IAAA,gBAAe,OAAOC,YAAAA;AACpB,QAAMC,UAAUC,8BAAaC,KAAKC,aAAaC,QAAQP,GAAAA,KAAQQ,MAAAA;AAC/D,QAAMC,WAAWC,YAAY,MAAA;AAC3BJ,iBAAaK,QAAQX,KAAKG,QAAQS,MAAMC,OAAM,CAAA;EAChD,GAAG,GAAA;AAEH,QAAMC,kBAAcC,4BAAO,MAAA;AACzBC,mCAAM,MAAA;AACJ,YAAMC,WAAOC,oCAAkBhB,QAAQiB,oBAAoBC,kCAAaC,eAAe,CAAA;AACvF,YAAMC,cAAUC,+BAAU,MAAMpB,QAAQqB,UAAU;AAClD,YAAMC,UAAUH,QAAQI,OAAO,CAAC,EAAEC,GAAE,MAAO,CAACV,KAAKW,KAAK,CAAC,EAAED,IAAIE,OAAM,MAAOA,WAAWF,EAAAA,CAAAA;AACrFF,cAAQK,QAAQ,CAACC,cAAc5B,QAAQ6B,gBAAgBD,UAAUJ,EAAE,CAAA;AACnEV,WAAKa,QAAQ,CAACC,cAAc5B,QAAQ8B,aAAaF,SAAAA,CAAAA;IACnD,CAAA;EACF,CAAA;AAEA,QAAM5B,QAAQ+B,WAAU;AACxB,QAAM/B,QAAQS,MAAMuB,OAAOhC,QAAQS,MAAMwB,IAAI;AAE7CC,gBAAclC,QAAQS,KAAK;AAE3B,aAAO0B,kCACLlB,kCAAamB,UACb;IAAE3B,OAAOT,QAAQS;IAAO4B,SAAS,CAACC,YAAYtC,QAAQqC,QAAQC,OAAAA;EAAS,GACvE,MAAA;AACEC,kBAAcjC,QAAAA;AACdK,gBAAAA;EACF,CAAA;AAEJ;AAGA,IAAMuB,gBAAgB,CAACzB,UAAAA;AACpB+B,aAAmBC,aAAa,CAAC;AACjCD,aAAmBC,SAAShC,QAAQA;AACvC;",
6
- "names": ["KEY", "GRAPH_PLUGIN", "context", "builder", "GraphBuilder", "from", "localStorage", "getItem", "undefined", "interval", "setInterval", "setItem", "graph", "pickle", "unsubscribe", "effect", "batch", "next", "flattenExtensions", "requestCapabilities", "Capabilities", "AppGraphBuilder", "current", "untracked", "extensions", "removed", "filter", "id", "some", "nextId", "forEach", "extension", "removeExtension", "addExtension", "initialize", "expand", "root", "setupDevtools", "contributes", "AppGraph", "explore", "options", "clearInterval", "globalThis", "composer"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/graph.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { batch, effect, untracked } from '@preact/signals-core';\n\nimport { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';\nimport { flattenExtensions, type Graph, GraphBuilder } from '@dxos/app-graph';\n\nimport { GRAPH_PLUGIN } from './meta';\n\nconst KEY = `${GRAPH_PLUGIN}/app-graph`;\n\nexport default async (context: PluginsContext) => {\n const builder = GraphBuilder.from(localStorage.getItem(KEY) ?? undefined);\n const interval = setInterval(() => {\n localStorage.setItem(KEY, builder.graph.pickle());\n }, 5_000);\n\n const unsubscribe = effect(() => {\n batch(() => {\n const next = flattenExtensions(context.requestCapabilities(Capabilities.AppGraphBuilder));\n const current = untracked(() => builder.extensions);\n const removed = current.filter(({ id }) => !next.some(({ id: nextId }) => nextId === id));\n removed.forEach((extension) => builder.removeExtension(extension.id));\n next.forEach((extension) => builder.addExtension(extension));\n });\n });\n\n await builder.initialize();\n await builder.graph.expand(builder.graph.root);\n\n setupDevtools(builder.graph);\n\n return contributes(\n Capabilities.AppGraph,\n { graph: builder.graph, explore: (options) => builder.explore(options) },\n () => {\n clearInterval(interval);\n unsubscribe();\n },\n );\n};\n\n// Expose the graph to the window for debugging.\nconst setupDevtools = (graph: Graph) => {\n (globalThis as any).composer ??= {};\n (globalThis as any).composer.graph = graph;\n};\n"],
5
- "mappings": ";;;;;;AAIA,SAASA,OAAOC,QAAQC,iBAAiB;AAEzC,SAASC,cAAcC,mBAAwC;AAC/D,SAASC,mBAA+BC,oBAAoB;AAI5D,IAAMC,MAAM,GAAGC,YAAAA;AAEf,IAAA,gBAAe,OAAOC,YAAAA;AACpB,QAAMC,UAAUC,aAAaC,KAAKC,aAAaC,QAAQP,GAAAA,KAAQQ,MAAAA;AAC/D,QAAMC,WAAWC,YAAY,MAAA;AAC3BJ,iBAAaK,QAAQX,KAAKG,QAAQS,MAAMC,OAAM,CAAA;EAChD,GAAG,GAAA;AAEH,QAAMC,cAAcC,OAAO,MAAA;AACzBC,UAAM,MAAA;AACJ,YAAMC,OAAOC,kBAAkBhB,QAAQiB,oBAAoBC,aAAaC,eAAe,CAAA;AACvF,YAAMC,UAAUC,UAAU,MAAMpB,QAAQqB,UAAU;AAClD,YAAMC,UAAUH,QAAQI,OAAO,CAAC,EAAEC,GAAE,MAAO,CAACV,KAAKW,KAAK,CAAC,EAAED,IAAIE,OAAM,MAAOA,WAAWF,EAAAA,CAAAA;AACrFF,cAAQK,QAAQ,CAACC,cAAc5B,QAAQ6B,gBAAgBD,UAAUJ,EAAE,CAAA;AACnEV,WAAKa,QAAQ,CAACC,cAAc5B,QAAQ8B,aAAaF,SAAAA,CAAAA;IACnD,CAAA;EACF,CAAA;AAEA,QAAM5B,QAAQ+B,WAAU;AACxB,QAAM/B,QAAQS,MAAMuB,OAAOhC,QAAQS,MAAMwB,IAAI;AAE7CC,gBAAclC,QAAQS,KAAK;AAE3B,SAAO0B,YACLlB,aAAamB,UACb;IAAE3B,OAAOT,QAAQS;IAAO4B,SAAS,CAACC,YAAYtC,QAAQqC,QAAQC,OAAAA;EAAS,GACvE,MAAA;AACEC,kBAAcjC,QAAAA;AACdK,gBAAAA;EACF,CAAA;AAEJ;AAGA,IAAMuB,gBAAgB,CAACzB,UAAAA;AACpB+B,aAAmBC,aAAa,CAAC;AACjCD,aAAmBC,SAAShC,QAAQA;AACvC;",
6
- "names": ["batch", "effect", "untracked", "Capabilities", "contributes", "flattenExtensions", "GraphBuilder", "KEY", "GRAPH_PLUGIN", "context", "builder", "GraphBuilder", "from", "localStorage", "getItem", "undefined", "interval", "setInterval", "setItem", "graph", "pickle", "unsubscribe", "effect", "batch", "next", "flattenExtensions", "requestCapabilities", "Capabilities", "AppGraphBuilder", "current", "untracked", "extensions", "removed", "filter", "id", "some", "nextId", "forEach", "extension", "removeExtension", "addExtension", "initialize", "expand", "root", "setupDevtools", "contributes", "AppGraph", "explore", "options", "clearInterval", "globalThis", "composer"]
7
- }