@zenfg/inspector 0.1.0-beta.2 → 0.1.0-beta.4

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 (172) hide show
  1. package/GUIDE.md +182 -0
  2. package/README.md +60 -26
  3. package/THEMING.md +124 -0
  4. package/dist/FrameGraphInspector.d.ts +24 -8
  5. package/dist/FrameGraphInspector.d.ts.map +1 -1
  6. package/dist/FrameGraphInspector.js +151 -65
  7. package/dist/FrameGraphInspector.js.map +1 -1
  8. package/dist/capture.d.ts +5 -0
  9. package/dist/capture.d.ts.map +1 -0
  10. package/dist/capture.js +2 -0
  11. package/dist/capture.js.map +1 -0
  12. package/dist/debugCaptureModel.d.ts +28 -4
  13. package/dist/debugCaptureModel.d.ts.map +1 -1
  14. package/dist/debugCaptureModel.js +72 -16
  15. package/dist/debugCaptureModel.js.map +1 -1
  16. package/dist/index.d.ts +2 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js.map +1 -1
  19. package/dist/panelAliasAnalysis.d.ts +1 -0
  20. package/dist/panelAliasAnalysis.d.ts.map +1 -1
  21. package/dist/panelAliasAnalysis.js +23 -54
  22. package/dist/panelAliasAnalysis.js.map +1 -1
  23. package/dist/panelCytoscapeGraphRenderer.d.ts +18 -3
  24. package/dist/panelCytoscapeGraphRenderer.d.ts.map +1 -1
  25. package/dist/panelCytoscapeGraphRenderer.js +183 -41
  26. package/dist/panelCytoscapeGraphRenderer.js.map +1 -1
  27. package/dist/panelDetailLayout.d.ts +27 -0
  28. package/dist/panelDetailLayout.d.ts.map +1 -0
  29. package/dist/panelDetailLayout.js +174 -0
  30. package/dist/panelDetailLayout.js.map +1 -0
  31. package/dist/panelDetailStyles.d.ts +2 -0
  32. package/dist/panelDetailStyles.d.ts.map +1 -0
  33. package/dist/panelDetailStyles.js +57 -0
  34. package/dist/panelDetailStyles.js.map +1 -0
  35. package/dist/panelDiagnosticsView.d.ts +10 -1
  36. package/dist/panelDiagnosticsView.d.ts.map +1 -1
  37. package/dist/panelDiagnosticsView.js +167 -58
  38. package/dist/panelDiagnosticsView.js.map +1 -1
  39. package/dist/panelDomHelpers.d.ts.map +1 -1
  40. package/dist/panelDomHelpers.js +6 -5
  41. package/dist/panelDomHelpers.js.map +1 -1
  42. package/dist/panelGraphLayout.d.ts +3 -2
  43. package/dist/panelGraphLayout.d.ts.map +1 -1
  44. package/dist/panelGraphLayout.js +20 -5
  45. package/dist/panelGraphLayout.js.map +1 -1
  46. package/dist/panelGraphRenderer.d.ts +10 -0
  47. package/dist/panelGraphRenderer.d.ts.map +1 -1
  48. package/dist/panelGraphRenderer.js.map +1 -1
  49. package/dist/panelGraphScene.d.ts +15 -26
  50. package/dist/panelGraphScene.d.ts.map +1 -1
  51. package/dist/panelGraphScene.js +191 -208
  52. package/dist/panelGraphScene.js.map +1 -1
  53. package/dist/panelGraphSearch.d.ts +16 -0
  54. package/dist/panelGraphSearch.d.ts.map +1 -0
  55. package/dist/panelGraphSearch.js +93 -0
  56. package/dist/panelGraphSearch.js.map +1 -0
  57. package/dist/panelGraphView.d.ts +82 -0
  58. package/dist/panelGraphView.d.ts.map +1 -1
  59. package/dist/panelGraphView.js +42 -9
  60. package/dist/panelGraphView.js.map +1 -1
  61. package/dist/panelGraphVisuals.d.ts +18 -6
  62. package/dist/panelGraphVisuals.d.ts.map +1 -1
  63. package/dist/panelGraphVisuals.js +156 -116
  64. package/dist/panelGraphVisuals.js.map +1 -1
  65. package/dist/panelInspectorView.d.ts +13 -0
  66. package/dist/panelInspectorView.d.ts.map +1 -1
  67. package/dist/panelInspectorView.js +326 -46
  68. package/dist/panelInspectorView.js.map +1 -1
  69. package/dist/panelListStyles.d.ts +3 -0
  70. package/dist/panelListStyles.d.ts.map +1 -0
  71. package/dist/panelListStyles.js +155 -0
  72. package/dist/panelListStyles.js.map +1 -0
  73. package/dist/panelMemoryStyles.d.ts +3 -0
  74. package/dist/panelMemoryStyles.d.ts.map +1 -0
  75. package/dist/panelMemoryStyles.js +42 -0
  76. package/dist/panelMemoryStyles.js.map +1 -0
  77. package/dist/panelMemoryView.d.ts +13 -1
  78. package/dist/panelMemoryView.d.ts.map +1 -1
  79. package/dist/panelMemoryView.js +161 -41
  80. package/dist/panelMemoryView.js.map +1 -1
  81. package/dist/panelPassesView.d.ts +15 -0
  82. package/dist/panelPassesView.d.ts.map +1 -1
  83. package/dist/panelPassesView.js +202 -72
  84. package/dist/panelPassesView.js.map +1 -1
  85. package/dist/panelRawView.d.ts +15 -0
  86. package/dist/panelRawView.d.ts.map +1 -0
  87. package/dist/panelRawView.js +105 -0
  88. package/dist/panelRawView.js.map +1 -0
  89. package/dist/panelResourcesView.d.ts +8 -0
  90. package/dist/panelResourcesView.d.ts.map +1 -1
  91. package/dist/panelResourcesView.js +62 -31
  92. package/dist/panelResourcesView.js.map +1 -1
  93. package/dist/panelSelection.d.ts +9 -1
  94. package/dist/panelSelection.d.ts.map +1 -1
  95. package/dist/panelSelection.js +36 -6
  96. package/dist/panelSelection.js.map +1 -1
  97. package/dist/panelTheme.d.ts +13 -0
  98. package/dist/panelTheme.d.ts.map +1 -0
  99. package/dist/panelTheme.js +104 -0
  100. package/dist/panelTheme.js.map +1 -0
  101. package/dist/panelTypes.d.ts +18 -4
  102. package/dist/panelTypes.d.ts.map +1 -1
  103. package/dist/panelTypes.js.map +1 -1
  104. package/dist/panelVisualTheme.d.ts +176 -71
  105. package/dist/panelVisualTheme.d.ts.map +1 -1
  106. package/dist/panelVisualTheme.js +34 -36
  107. package/dist/panelVisualTheme.js.map +1 -1
  108. package/dist/panelWorkbenchHelpers.d.ts +12 -1
  109. package/dist/panelWorkbenchHelpers.d.ts.map +1 -1
  110. package/dist/panelWorkbenchHelpers.js +63 -2
  111. package/dist/panelWorkbenchHelpers.js.map +1 -1
  112. package/dist/panelWorkbenchStyles.d.ts +2 -0
  113. package/dist/panelWorkbenchStyles.d.ts.map +1 -0
  114. package/dist/panelWorkbenchStyles.js +101 -0
  115. package/dist/panelWorkbenchStyles.js.map +1 -0
  116. package/dist/panelWorkbenchView.d.ts +16 -0
  117. package/dist/panelWorkbenchView.d.ts.map +1 -1
  118. package/dist/panelWorkbenchView.js +228 -50
  119. package/dist/panelWorkbenchView.js.map +1 -1
  120. package/dist/query.js.map +1 -1
  121. package/dist/styles.d.ts.map +1 -1
  122. package/dist/styles.js +161 -205
  123. package/dist/styles.js.map +1 -1
  124. package/dist/theme.d.ts +22 -0
  125. package/dist/theme.d.ts.map +1 -0
  126. package/dist/theme.js +10 -0
  127. package/dist/theme.js.map +1 -0
  128. package/dist/themeDefinitions.d.ts +251 -0
  129. package/dist/themeDefinitions.d.ts.map +1 -0
  130. package/dist/themeDefinitions.js +96 -0
  131. package/dist/themeDefinitions.js.map +1 -0
  132. package/dist/themePalette.d.ts +66 -0
  133. package/dist/themePalette.d.ts.map +1 -0
  134. package/dist/themePalette.js +37 -0
  135. package/dist/themePalette.js.map +1 -0
  136. package/dist/themes.css +165 -0
  137. package/package.json +44 -10
  138. package/src/FrameGraphInspector.ts +145 -68
  139. package/src/capture.ts +4 -0
  140. package/src/debugCaptureModel.ts +97 -21
  141. package/src/index.ts +6 -2
  142. package/src/panelAliasAnalysis.ts +24 -70
  143. package/src/panelCytoscapeGraphRenderer.ts +177 -40
  144. package/src/panelDetailLayout.ts +155 -0
  145. package/src/panelDetailStyles.ts +56 -0
  146. package/src/panelDiagnosticsView.ts +167 -86
  147. package/src/panelDomHelpers.ts +4 -5
  148. package/src/panelGraphLayout.ts +20 -5
  149. package/src/panelGraphRenderer.ts +7 -0
  150. package/src/panelGraphScene.ts +204 -292
  151. package/src/panelGraphSearch.ts +96 -0
  152. package/src/panelGraphView.ts +41 -9
  153. package/src/panelGraphVisuals.ts +152 -118
  154. package/src/panelInspectorView.ts +315 -48
  155. package/src/panelListStyles.ts +154 -0
  156. package/src/panelMemoryStyles.ts +41 -0
  157. package/src/panelMemoryView.ts +178 -53
  158. package/src/panelPassesView.ts +190 -137
  159. package/src/panelRawView.ts +99 -0
  160. package/src/panelResourcesView.ts +69 -56
  161. package/src/panelSelection.ts +39 -7
  162. package/src/panelTheme.ts +85 -0
  163. package/src/panelTypes.ts +16 -4
  164. package/src/panelVisualTheme.ts +38 -38
  165. package/src/panelWorkbenchHelpers.ts +62 -4
  166. package/src/panelWorkbenchStyles.ts +100 -0
  167. package/src/panelWorkbenchView.ts +201 -52
  168. package/src/query.ts +11 -11
  169. package/src/styles.ts +162 -205
  170. package/src/theme.ts +24 -0
  171. package/src/themeDefinitions.ts +103 -0
  172. package/src/themePalette.ts +44 -0
@@ -1,10 +1,13 @@
1
+ import { GRAPH_VISUAL_THEME } from "./panelVisualTheme.js";
1
2
  import { CytoscapeGraphRenderer } from "./panelCytoscapeGraphRenderer.js";
2
3
  import { createGraphScene } from "./panelGraphScene.js";
3
4
  import { createGraphLegend } from "./panelGraphVisuals.js";
4
5
  const graphSceneCache = new WeakMap();
5
6
  export function renderGraphView(graphView, snapshot, selected, hovered, onSelect, onHover, onToggleGroup) {
6
7
  const scene = resolveGraphScene(graphView, snapshot);
7
- renderGraphLegend(graphView.legend, scene);
8
+ if (!graphView.theme)
9
+ graphView.refreshTheme?.();
10
+ renderGraphLegend(graphView.legend, snapshot, graphView.theme, graphView.showResourceDeclarations);
8
11
  const elementCount = scene.nodes.length + scene.edges.length;
9
12
  const layoutElementBudget = graphView.layoutElementBudget ?? Number.MAX_SAFE_INTEGER;
10
13
  if (elementCount > layoutElementBudget) {
@@ -21,29 +24,34 @@ export function renderGraphView(graphView, snapshot, selected, hovered, onSelect
21
24
  graphView.renderer ??= new CytoscapeGraphRenderer(graphView.host);
22
25
  graphView.renderer.render({
23
26
  scene,
27
+ theme: graphView.theme,
28
+ onVisible: graphView.refreshTheme,
24
29
  selected,
25
30
  hovered,
26
31
  fit: graphView.fitOnNextRender,
27
32
  anchorElementId: graphView.anchorElementIdOnNextRender,
33
+ reveal: graphView.revealOnNextRender,
34
+ captureRevision: graphView.captureRevision,
28
35
  onSelect,
29
36
  onHover,
30
37
  onToggleGroup,
31
38
  });
32
39
  graphView.fitOnNextRender = false;
33
40
  graphView.anchorElementIdOnNextRender = undefined;
41
+ graphView.revealOnNextRender = undefined;
34
42
  }
35
43
  export function resolveGraphScene(graphView, snapshot) {
36
44
  const optionsKey = JSON.stringify([
37
- graphView.graphMode,
38
45
  graphView.groupsEnabled,
46
+ graphView.showResourceDeclarations ?? true,
39
47
  [...graphView.expandedGroupPaths].sort(),
40
48
  ]);
41
49
  const cached = graphSceneCache.get(graphView);
42
50
  if (cached?.snapshot === snapshot && cached.optionsKey === optionsKey)
43
51
  return cached.scene;
44
52
  const scene = createGraphScene(snapshot, {
45
- mode: graphView.graphMode,
46
53
  groupsEnabled: graphView.groupsEnabled,
54
+ showResourceDeclarations: graphView.showResourceDeclarations,
47
55
  expandedGroupPaths: graphView.expandedGroupPaths,
48
56
  });
49
57
  graphSceneCache.set(graphView, { snapshot, optionsKey, scene });
@@ -53,6 +61,7 @@ export function fitGraph(graphView) {
53
61
  graphView.renderer?.fit();
54
62
  }
55
63
  export function resizeGraph(graphView) {
64
+ graphView.refreshTheme?.();
56
65
  graphView.renderer?.resize();
57
66
  }
58
67
  export function destroyGraph(graphView) {
@@ -60,15 +69,28 @@ export function destroyGraph(graphView) {
60
69
  graphView.renderer = undefined;
61
70
  graphSceneCache.delete(graphView);
62
71
  }
63
- function renderGraphLegend(host, scene) {
72
+ export function renderGraphLegend(host, snapshot, theme = GRAPH_VISUAL_THEME, showResourceDeclarations = true) {
64
73
  if (!host)
65
74
  return;
66
- const entries = createGraphLegend(scene);
67
- const key = entries.map((entry) => entry.key).join('|');
75
+ const entries = createGraphLegend(snapshot, theme, showResourceDeclarations);
76
+ const key = JSON.stringify(entries);
68
77
  if (host.dataset.legendKey === key)
69
78
  return;
70
79
  host.dataset.legendKey = key;
71
- host.replaceChildren(...entries.map((entry) => {
80
+ host.replaceChildren();
81
+ let group;
82
+ for (const entry of entries) {
83
+ if (group?.getAttribute('aria-label') !== entry.group) {
84
+ group = document.createElement('span');
85
+ group.className = 'zenfg-inspector-legend-group';
86
+ group.setAttribute('role', 'group');
87
+ group.setAttribute('aria-label', entry.group);
88
+ const heading = document.createElement('span');
89
+ heading.className = 'zenfg-inspector-legend-heading';
90
+ heading.textContent = entry.group;
91
+ group.appendChild(heading);
92
+ host.appendChild(group);
93
+ }
72
94
  const item = document.createElement('span');
73
95
  item.className = 'zenfg-inspector-legend-item';
74
96
  const swatch = document.createElement('span');
@@ -79,10 +101,21 @@ function renderGraphLegend(host, scene) {
79
101
  if (entry.hollowArrow)
80
102
  swatch.dataset.hollowArrow = 'true';
81
103
  swatch.style.setProperty('--zenfg-inspector-legend-color', entry.color);
104
+ if (entry.shape === 'cut-rectangle' || entry.shape === 'tag') {
105
+ const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
106
+ svg.setAttribute('viewBox', '0 0 20 14');
107
+ svg.setAttribute('aria-hidden', 'true');
108
+ const polygon = document.createElementNS('http://www.w3.org/2000/svg', 'polygon');
109
+ polygon.setAttribute('points', entry.shape === 'tag'
110
+ ? '1,1 16,1 19,7 16,13 1,13'
111
+ : '4,1 16,1 19,4 19,10 16,13 4,13 1,10 1,4');
112
+ svg.appendChild(polygon);
113
+ swatch.appendChild(svg);
114
+ }
82
115
  const label = document.createElement('span');
83
116
  label.textContent = entry.label;
84
117
  item.append(swatch, label);
85
- return item;
86
- }));
118
+ group.appendChild(item);
119
+ }
87
120
  }
88
121
  //# sourceMappingURL=panelGraphView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"panelGraphView.js","sourceRoot":"","sources":["../src/panelGraphView.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FrameGraphDebugViewModel } from './debugCaptureModel.ts';\nimport { CytoscapeGraphRenderer } from './panelCytoscapeGraphRenderer.ts';\nimport { createGraphScene, type GraphScene } from './panelGraphScene.ts';\nimport { createGraphLegend } from './panelGraphVisuals.ts';\nimport type { GraphViewState, Selection } from './panelTypes.ts';\n\ntype GraphSceneCacheEntry = {\n readonly snapshot: FrameGraphDebugViewModel;\n readonly optionsKey: string;\n readonly scene: GraphScene;\n};\n\nconst graphSceneCache = new WeakMap<GraphViewState, GraphSceneCacheEntry>();\n\nexport function renderGraphView(\n graphView: GraphViewState,\n snapshot: FrameGraphDebugViewModel,\n selected: Selection | undefined,\n hovered: Selection | undefined,\n onSelect: (selection: Selection) => void,\n onHover: (selection: Selection | undefined) => void,\n onToggleGroup: (pathKey: string) => void,\n): void {\n const scene = resolveGraphScene(graphView, snapshot);\n renderGraphLegend(graphView.legend, scene);\n\tconst elementCount = scene.nodes.length + scene.edges.length;\n\tconst layoutElementBudget = graphView.layoutElementBudget ?? Number.MAX_SAFE_INTEGER;\n\tif (elementCount > layoutElementBudget) {\n\t\tgraphView.renderer?.destroy();\n\t\tgraphView.renderer = undefined;\n\t\tconst notice = document.createElement('div');\n\t\tnotice.className = 'zenfg-inspector-graph-status';\n\t\tnotice.dataset.state = 'empty';\n\t\tnotice.setAttribute('role', 'status');\n\t\tnotice.textContent = `Automatic layout disabled: ${elementCount} graph elements exceed the ${layoutElementBudget} element budget. Passes, Resources, Memory, Diagnostics, and raw data remain available.`;\n\t\tgraphView.host.replaceChildren(notice);\n\t\treturn;\n\t}\n\tgraphView.renderer ??= new CytoscapeGraphRenderer(graphView.host);\n graphView.renderer.render({\n scene,\n selected,\n hovered,\n fit: graphView.fitOnNextRender,\n anchorElementId: graphView.anchorElementIdOnNextRender,\n onSelect,\n onHover,\n onToggleGroup,\n });\n graphView.fitOnNextRender = false;\n graphView.anchorElementIdOnNextRender = undefined;\n}\n\nexport function resolveGraphScene(\n graphView: GraphViewState,\n snapshot: FrameGraphDebugViewModel,\n): GraphScene {\n const optionsKey = JSON.stringify([\n graphView.graphMode,\n graphView.groupsEnabled,\n [...graphView.expandedGroupPaths].sort(),\n ]);\n const cached = graphSceneCache.get(graphView);\n if (cached?.snapshot === snapshot && cached.optionsKey === optionsKey) return cached.scene;\n const scene = createGraphScene(snapshot, {\n mode: graphView.graphMode,\n groupsEnabled: graphView.groupsEnabled,\n expandedGroupPaths: graphView.expandedGroupPaths,\n });\n graphSceneCache.set(graphView, { snapshot, optionsKey, scene });\n return scene;\n}\n\nexport function fitGraph(graphView: GraphViewState): void {\n graphView.renderer?.fit();\n}\n\nexport function resizeGraph(graphView: GraphViewState): void {\n graphView.renderer?.resize();\n}\n\nexport function destroyGraph(graphView: GraphViewState): void {\n graphView.renderer?.destroy();\n graphView.renderer = undefined;\n graphSceneCache.delete(graphView);\n}\n\nfunction renderGraphLegend(host: HTMLElement | undefined, scene: GraphScene): void {\n if (!host) return;\n const entries = createGraphLegend(scene);\n const key = entries.map((entry) => entry.key).join('|');\n if (host.dataset.legendKey === key) return;\n host.dataset.legendKey = key;\n host.replaceChildren(...entries.map((entry) => {\n const item = document.createElement('span');\n item.className = 'zenfg-inspector-legend-item';\n const swatch = document.createElement('span');\n swatch.className = 'zenfg-inspector-legend-swatch';\n swatch.dataset.shape = entry.shape;\n if (entry.lineStyle) swatch.dataset.lineStyle = entry.lineStyle;\n if (entry.hollowArrow) swatch.dataset.hollowArrow = 'true';\n swatch.style.setProperty('--zenfg-inspector-legend-color', entry.color);\n const label = document.createElement('span');\n label.textContent = entry.label;\n item.append(swatch, label);\n return item;\n }));\n}\n"]}
1
+ {"version":3,"file":"panelGraphView.js","sourceRoot":"","sources":["../src/panelGraphView.ts"],"names":[],"mappings":"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","sourcesContent":["import { GRAPH_VISUAL_THEME } from './panelVisualTheme.ts';\nimport type { FrameGraphDebugViewModel } from './debugCaptureModel.ts';\nimport { CytoscapeGraphRenderer } from './panelCytoscapeGraphRenderer.ts';\nimport { createGraphScene, type GraphScene } from './panelGraphScene.ts';\nimport { createGraphLegend } from './panelGraphVisuals.ts';\nimport type { GraphViewState, Selection } from './panelTypes.ts';\n\ntype GraphSceneCacheEntry = {\n readonly snapshot: FrameGraphDebugViewModel;\n readonly optionsKey: string;\n readonly scene: GraphScene;\n};\n\nconst graphSceneCache = new WeakMap<GraphViewState, GraphSceneCacheEntry>();\n\nexport function renderGraphView(\n graphView: GraphViewState,\n snapshot: FrameGraphDebugViewModel,\n selected: Selection | undefined,\n hovered: Selection | undefined,\n onSelect: (selection: Selection) => void,\n onHover: (selection: Selection | undefined) => void,\n onToggleGroup: (pathKey: string) => void,\n): void {\n const scene = resolveGraphScene(graphView, snapshot);\n if (!graphView.theme) graphView.refreshTheme?.();\n renderGraphLegend(graphView.legend, snapshot, graphView.theme, graphView.showResourceDeclarations);\n\tconst elementCount = scene.nodes.length + scene.edges.length;\n\tconst layoutElementBudget = graphView.layoutElementBudget ?? Number.MAX_SAFE_INTEGER;\n\tif (elementCount > layoutElementBudget) {\n\t\tgraphView.renderer?.destroy();\n\t\tgraphView.renderer = undefined;\n\t\tconst notice = document.createElement('div');\n\t\tnotice.className = 'zenfg-inspector-graph-status';\n\t\tnotice.dataset.state = 'empty';\n\t\tnotice.setAttribute('role', 'status');\n\t\tnotice.textContent = `Automatic layout disabled: ${elementCount} graph elements exceed the ${layoutElementBudget} element budget. Passes, Resources, Memory, Diagnostics, and raw data remain available.`;\n\t\tgraphView.host.replaceChildren(notice);\n\t\treturn;\n\t}\n\tgraphView.renderer ??= new CytoscapeGraphRenderer(graphView.host);\n graphView.renderer.render({\n scene,\n theme: graphView.theme,\n onVisible: graphView.refreshTheme,\n selected,\n hovered,\n fit: graphView.fitOnNextRender,\n anchorElementId: graphView.anchorElementIdOnNextRender,\n reveal: graphView.revealOnNextRender,\n captureRevision: graphView.captureRevision,\n onSelect,\n onHover,\n onToggleGroup,\n });\n graphView.fitOnNextRender = false;\n graphView.anchorElementIdOnNextRender = undefined;\n graphView.revealOnNextRender = undefined;\n}\n\nexport function resolveGraphScene(\n graphView: GraphViewState,\n snapshot: FrameGraphDebugViewModel,\n): GraphScene {\n const optionsKey = JSON.stringify([\n graphView.groupsEnabled,\n graphView.showResourceDeclarations ?? true,\n [...graphView.expandedGroupPaths].sort(),\n ]);\n const cached = graphSceneCache.get(graphView);\n if (cached?.snapshot === snapshot && cached.optionsKey === optionsKey) return cached.scene;\n const scene = createGraphScene(snapshot, {\n groupsEnabled: graphView.groupsEnabled,\n showResourceDeclarations: graphView.showResourceDeclarations,\n expandedGroupPaths: graphView.expandedGroupPaths,\n });\n graphSceneCache.set(graphView, { snapshot, optionsKey, scene });\n return scene;\n}\n\nexport function fitGraph(graphView: GraphViewState): void {\n graphView.renderer?.fit();\n}\n\nexport function resizeGraph(graphView: GraphViewState): void {\n graphView.refreshTheme?.();\n graphView.renderer?.resize();\n}\n\nexport function destroyGraph(graphView: GraphViewState): void {\n graphView.renderer?.destroy();\n graphView.renderer = undefined;\n graphSceneCache.delete(graphView);\n}\n\nexport function renderGraphLegend(host: HTMLElement | undefined, snapshot: FrameGraphDebugViewModel, theme = GRAPH_VISUAL_THEME, showResourceDeclarations = true): void {\n if (!host) return;\n const entries = createGraphLegend(snapshot, theme, showResourceDeclarations);\n const key = JSON.stringify(entries);\n if (host.dataset.legendKey === key) return;\n host.dataset.legendKey = key;\n host.replaceChildren();\n let group: HTMLElement | undefined;\n for (const entry of entries) {\n if (group?.getAttribute('aria-label') !== entry.group) {\n group = document.createElement('span');\n group.className = 'zenfg-inspector-legend-group';\n group.setAttribute('role', 'group');\n group.setAttribute('aria-label', entry.group);\n const heading = document.createElement('span');\n heading.className = 'zenfg-inspector-legend-heading';\n heading.textContent = entry.group;\n group.appendChild(heading);\n host.appendChild(group);\n }\n const item = document.createElement('span');\n item.className = 'zenfg-inspector-legend-item';\n const swatch = document.createElement('span');\n swatch.className = 'zenfg-inspector-legend-swatch';\n swatch.dataset.shape = entry.shape;\n if (entry.lineStyle) swatch.dataset.lineStyle = entry.lineStyle;\n if (entry.hollowArrow) swatch.dataset.hollowArrow = 'true';\n swatch.style.setProperty('--zenfg-inspector-legend-color', entry.color);\n if (entry.shape === 'cut-rectangle' || entry.shape === 'tag') {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('viewBox', '0 0 20 14');\n svg.setAttribute('aria-hidden', 'true');\n const polygon = document.createElementNS('http://www.w3.org/2000/svg', 'polygon');\n polygon.setAttribute('points', entry.shape === 'tag'\n ? '1,1 16,1 19,7 16,13 1,13'\n : '4,1 16,1 19,4 19,10 16,13 4,13 1,10 1,4');\n svg.appendChild(polygon);\n swatch.appendChild(svg);\n }\n const label = document.createElement('span');\n label.textContent = entry.label;\n item.append(swatch, label);\n group!.appendChild(item);\n }\n}\n"]}
@@ -1,5 +1,7 @@
1
1
  import type cytoscape from 'cytoscape';
2
2
  import type { GraphScene, GraphSceneEdge, GraphSceneNode } from './panelGraphScene.ts';
3
+ import { type GraphVisualTheme } from './panelVisualTheme.ts';
4
+ import { type FrameGraphDebugViewModel } from './debugCaptureModel.ts';
3
5
  export { GRAPH_VISUAL_THEME } from './panelVisualTheme.ts';
4
6
  export declare const GRAPH_GEOMETRY: {
5
7
  readonly fitPadding: 28;
@@ -16,23 +18,33 @@ export declare const GRAPH_GEOMETRY: {
16
18
  readonly left: 24;
17
19
  };
18
20
  readonly edgeCornerRadius: 6;
21
+ readonly outputWidth: 208;
22
+ readonly outputTipWidth: 24;
23
+ readonly outputLabelWidth: 160;
19
24
  };
20
25
  export type GraphLegendEntry = {
26
+ readonly group: 'Execution' | 'Resources' | 'Relationships';
21
27
  readonly key: string;
22
28
  readonly label: string;
23
29
  readonly color: string;
24
- readonly shape: 'box' | 'ellipse' | 'group' | 'line';
30
+ readonly shape: 'box' | 'cut-rectangle' | 'tag' | 'ellipse' | 'group' | 'line';
25
31
  readonly lineStyle?: 'solid' | 'dotted' | 'dashed';
26
32
  readonly hollowArrow?: boolean;
27
33
  };
28
- export declare function createGraphLegend(scene: GraphScene): readonly GraphLegendEntry[];
29
- export declare function createGraphStyles(): cytoscape.StylesheetJson;
30
- export declare function nodeDimensions(node: GraphSceneNode): {
34
+ export declare function createGraphLegend(snapshot: FrameGraphDebugViewModel, theme?: GraphVisualTheme, showResourceDeclarations?: boolean): readonly GraphLegendEntry[];
35
+ export declare function createGraphStyles(theme?: GraphVisualTheme): cytoscape.StylesheetJson;
36
+ export declare function nodeDimensions(node: GraphSceneNode, theme?: GraphVisualTheme): {
31
37
  readonly width: number;
32
38
  readonly height: number;
33
39
  };
40
+ /** Enlarge short labels within the existing box; retain the theme size for dense text. */
41
+ export declare function graphLabelFontSize(label: string, width: number, height: number, theme: GraphVisualTheme): number;
42
+ /** Wrap only the group name (up to two lines); keep the node-count row distinct. */
43
+ export declare function fitCollapsedGroupLabel(label: string, width: number, theme: GraphVisualTheme): string;
44
+ /** Fit the already semantic label to its available width after font changes. */
45
+ export declare function fitGraphLabel(label: string, width: number, theme: GraphVisualTheme): string;
34
46
  export declare function graphLayoutGeometryKey(scene: GraphScene): string;
35
- export declare function graphEdgeDisplayLabel(edge: GraphSceneEdge): string;
47
+ export declare function graphEdgeDisplayLabel(_edge: GraphSceneEdge): string;
36
48
  export declare function expandedGroupLabelMaxWidth(outerWidth: number): number;
37
- export declare function isOverviewGraphScale(zoom: number): boolean;
49
+ export declare function isOverviewGraphScale(zoom: number, theme?: GraphVisualTheme): boolean;
38
50
  //# sourceMappingURL=panelGraphVisuals.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"panelGraphVisuals.d.ts","sourceRoot":"","sources":["../src/panelGraphVisuals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AAEvC,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAG3D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;CAUjB,CAAC;AAKX,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACnD,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAWF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,gBAAgB,EAAE,CA0ChF;AAED,wBAAgB,iBAAiB,IAAI,SAAS,CAAC,cAAc,CAsM5D;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAWxG;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAQhE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAElE;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D"}
1
+ {"version":3,"file":"panelGraphVisuals.d.ts","sourceRoot":"","sources":["../src/panelGraphVisuals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AAEvC,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAwB,KAAK,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAE7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAG3D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;CAajB,CAAC;AAKX,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,GAAG,eAAe,CAAC;IAC5D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,eAAe,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;IAC/E,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACnD,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,wBAAwB,EAAE,KAAK,GAAE,gBAAqC,EAAE,wBAAwB,UAAO,GAAG,SAAS,gBAAgB,EAAE,CAsChL;AAED,wBAAgB,iBAAiB,CAAC,KAAK,GAAE,gBAAqC,GAAG,SAAS,CAAC,cAAc,CAqLxG;AAeD,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,GAAE,gBAAqC,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAItJ;AAED,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAQhH;AAED,oFAAoF;AACpF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAkBpG;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAU3F;AASD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAQhE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAEnE;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,gBAAqC,GAAG,OAAO,CAExG"}