@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,4 +1,10 @@
1
+ // View models are immutable for the lifetime of a capture. Search and selection
2
+ // changes should not rebuild allocation membership or the execution domain.
3
+ const analysisBySnapshot = new WeakMap();
1
4
  export function analyzeSnapshotAliases(snapshot) {
5
+ const cached = analysisBySnapshot.get(snapshot);
6
+ if (cached)
7
+ return cached;
2
8
  const allocationById = snapshot.allocationById;
3
9
  const resourcesById = snapshot.resourceById;
4
10
  const allocationGroups = snapshot.physicalAllocations.map((allocation) => {
@@ -15,13 +21,14 @@ export function analyzeSnapshotAliases(snapshot) {
15
21
  let minUse = Number.POSITIVE_INFINITY;
16
22
  let maxUse = Number.NEGATIVE_INFINITY;
17
23
  for (const resource of snapshot.resources) {
18
- if (!resource.lifetime) {
24
+ if (resource.origin !== 'transient' || !resource.lifetime) {
19
25
  continue;
20
26
  }
21
27
  minUse = Math.min(minUse, resource.lifetime.firstUse);
22
28
  maxUse = Math.max(maxUse, resource.lifetime.lastUse);
23
29
  }
24
- if (!Number.isFinite(minUse) || !Number.isFinite(maxUse)) {
30
+ const hasLifetimes = Number.isFinite(minUse) && Number.isFinite(maxUse);
31
+ if (!hasLifetimes) {
25
32
  minUse = 0;
26
33
  maxUse = 0;
27
34
  }
@@ -36,15 +43,18 @@ export function analyzeSnapshotAliases(snapshot) {
36
43
  resource,
37
44
  allocation,
38
45
  aliasStatus,
39
- nonAliasReasons: resolveNonAliasReasons(resource, allocation, allocationGroups),
46
+ nonAliasReasons: describeAliasStatus(aliasStatus),
40
47
  });
41
48
  }
42
- return {
49
+ const analysis = {
43
50
  allocations: allocationGroups,
44
51
  resources: resourceAnalysis,
45
52
  minUse,
46
53
  maxUse,
54
+ hasLifetimes,
47
55
  };
56
+ analysisBySnapshot.set(snapshot, analysis);
57
+ return analysis;
48
58
  }
49
59
  function resolveAliasStatus(resource, allocation, allocationResources) {
50
60
  if (resource.origin !== 'transient') {
@@ -58,56 +68,15 @@ function resolveAliasStatus(resource, allocation, allocationResources) {
58
68
  }
59
69
  return allocationResources.length > 1 ? 'aliased' : 'single';
60
70
  }
61
- function resolveNonAliasReasons(resource, allocation, allocations) {
62
- if (resource.origin !== 'transient') {
63
- return ['Imported or swapchain resources do not participate in transient aliasing.'];
64
- }
65
- if (!resource.lifetime) {
66
- return ['No lifetime is available for this resource in the retained graph.'];
71
+ function describeAliasStatus(status) {
72
+ switch (status) {
73
+ case 'not-transient': return ['Imported and surface resources do not participate in transient aliasing.'];
74
+ case 'no-lifetime': return ['No lifetime is available for this resource in the retained graph.'];
75
+ case 'not-allocated': return ['No physical allocation is associated with this transient resource.'];
76
+ case 'aliased': return ['Shares a physical allocation with other logical resources.'];
77
+ // The snapshot states allocation membership; it cannot explain allocator
78
+ // decisions by comparing every pair of logical resources.
79
+ case 'single': return ['This physical allocation contains one logical resource.'];
67
80
  }
68
- if (!allocation) {
69
- return ['No physical allocation is associated with this transient resource.'];
70
- }
71
- const reasons = new Set();
72
- for (const group of allocations) {
73
- if (group.allocation.id === allocation.id) {
74
- continue;
75
- }
76
- for (const other of group.resources) {
77
- if (other.id === resource.id || other.origin !== 'transient') {
78
- continue;
79
- }
80
- if (other.kind !== resource.kind) {
81
- reasons.add(`Different kind from ${labelDebugResource(other)}.`);
82
- continue;
83
- }
84
- if (group.allocation.compatibilityClassId !== allocation.compatibilityClassId) {
85
- reasons.add(`Different compatibility class from ${labelDebugResource(other)}.`);
86
- continue;
87
- }
88
- if (!other.lifetime) {
89
- reasons.add(`Missing lifetime for ${labelDebugResource(other)}.`);
90
- continue;
91
- }
92
- if (lifetimesOverlap(resource.lifetime, other.lifetime)) {
93
- reasons.add(`Lifetime overlaps ${labelDebugResource(other)} (${other.lifetime.firstUse}-${other.lifetime.lastUse}).`);
94
- }
95
- }
96
- }
97
- if (reasons.size === 0) {
98
- return allocationResourcesFor(allocations, allocation.id).length > 1
99
- ? ['Aliases with resources in the same physical allocation.']
100
- : ['No compatible non-overlapping transient resource was found in this snapshot.'];
101
- }
102
- return Array.from(reasons).slice(0, 6);
103
- }
104
- function allocationResourcesFor(allocations, allocationId) {
105
- return allocations.find((group) => group.allocation.id === allocationId)?.resources ?? [];
106
- }
107
- function lifetimesOverlap(a, b) {
108
- return a.firstUse <= b.lastUse && b.firstUse <= a.lastUse;
109
- }
110
- function labelDebugResource(resource) {
111
- return resource.label ?? `${resource.kind}-${resource.id}`;
112
81
  }
113
82
  //# sourceMappingURL=panelAliasAnalysis.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"panelAliasAnalysis.js","sourceRoot":"","sources":["../src/panelAliasAnalysis.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n FrameGraphDebugPhysicalAllocation,\n FrameGraphDebugResource,\n FrameGraphDebugViewModel,\n} from './debugCaptureModel.ts';\n\nexport type AliasAnalysisResource = {\n readonly resource: FrameGraphDebugResource;\n readonly allocation?: FrameGraphDebugPhysicalAllocation;\n readonly aliasStatus: 'aliased' | 'single' | 'not-transient' | 'not-allocated' | 'no-lifetime';\n readonly nonAliasReasons: readonly string[];\n};\n\nexport type AliasAnalysisAllocation = {\n readonly allocation: FrameGraphDebugPhysicalAllocation;\n readonly resources: readonly FrameGraphDebugResource[];\n readonly aliases: boolean;\n};\n\nexport type AliasAnalysis = {\n readonly allocations: readonly AliasAnalysisAllocation[];\n readonly resources: ReadonlyMap<string, AliasAnalysisResource>;\n readonly minUse: number;\n readonly maxUse: number;\n};\n\nexport function analyzeSnapshotAliases(snapshot: FrameGraphDebugViewModel): AliasAnalysis {\n const allocationById = snapshot.allocationById;\n const resourcesById = snapshot.resourceById;\n const allocationGroups = snapshot.physicalAllocations.map((allocation): AliasAnalysisAllocation => {\n const resources = allocation.resourceIds\n .map((resourceId) => resourcesById.get(resourceId))\n .filter((resource): resource is FrameGraphDebugResource => resource !== undefined);\n return {\n allocation,\n resources,\n aliases: resources.length > 1,\n };\n });\n\n const allocationGroupById = new Map(allocationGroups.map((group) => [group.allocation.id, group]));\n\n let minUse = Number.POSITIVE_INFINITY;\n let maxUse = Number.NEGATIVE_INFINITY;\n for (const resource of snapshot.resources) {\n if (!resource.lifetime) {\n continue;\n }\n minUse = Math.min(minUse, resource.lifetime.firstUse);\n maxUse = Math.max(maxUse, resource.lifetime.lastUse);\n }\n if (!Number.isFinite(minUse) || !Number.isFinite(maxUse)) {\n minUse = 0;\n maxUse = 0;\n }\n\n const resourceAnalysis = new Map<string, AliasAnalysisResource>();\n for (const resource of snapshot.resources) {\n const allocation = resource.physicalResourceId === undefined ? undefined : allocationById.get(resource.physicalResourceId);\n const allocationResources = allocation\n ? allocationGroupById.get(allocation.id)?.resources ?? []\n : [];\n const aliasStatus = resolveAliasStatus(resource, allocation, allocationResources);\n resourceAnalysis.set(resource.id, {\n resource,\n allocation,\n aliasStatus,\n nonAliasReasons: resolveNonAliasReasons(resource, allocation, allocationGroups),\n });\n }\n\n return {\n allocations: allocationGroups,\n resources: resourceAnalysis,\n minUse,\n maxUse,\n };\n}\n\nfunction resolveAliasStatus(\n resource: FrameGraphDebugResource,\n allocation: FrameGraphDebugPhysicalAllocation | undefined,\n allocationResources: readonly FrameGraphDebugResource[],\n): AliasAnalysisResource['aliasStatus'] {\n if (resource.origin !== 'transient') {\n return 'not-transient';\n }\n if (!resource.lifetime) {\n return 'no-lifetime';\n }\n if (!allocation) {\n return 'not-allocated';\n }\n return allocationResources.length > 1 ? 'aliased' : 'single';\n}\n\nfunction resolveNonAliasReasons(\n resource: FrameGraphDebugResource,\n allocation: FrameGraphDebugPhysicalAllocation | undefined,\n allocations: readonly AliasAnalysisAllocation[],\n): readonly string[] {\n if (resource.origin !== 'transient') {\n return ['Imported or swapchain resources do not participate in transient aliasing.'];\n }\n if (!resource.lifetime) {\n return ['No lifetime is available for this resource in the retained graph.'];\n }\n if (!allocation) {\n return ['No physical allocation is associated with this transient resource.'];\n }\n\n const reasons = new Set<string>();\n for (const group of allocations) {\n if (group.allocation.id === allocation.id) {\n continue;\n }\n for (const other of group.resources) {\n if (other.id === resource.id || other.origin !== 'transient') {\n continue;\n }\n if (other.kind !== resource.kind) {\n reasons.add(`Different kind from ${labelDebugResource(other)}.`);\n continue;\n }\n if (group.allocation.compatibilityClassId !== allocation.compatibilityClassId) {\n reasons.add(`Different compatibility class from ${labelDebugResource(other)}.`);\n continue;\n }\n if (!other.lifetime) {\n reasons.add(`Missing lifetime for ${labelDebugResource(other)}.`);\n continue;\n }\n if (lifetimesOverlap(resource.lifetime, other.lifetime)) {\n reasons.add(`Lifetime overlaps ${labelDebugResource(other)} (${other.lifetime.firstUse}-${other.lifetime.lastUse}).`);\n }\n }\n }\n\n if (reasons.size === 0) {\n return allocationResourcesFor(allocations, allocation.id).length > 1\n ? ['Aliases with resources in the same physical allocation.']\n : ['No compatible non-overlapping transient resource was found in this snapshot.'];\n }\n\n return Array.from(reasons).slice(0, 6);\n}\n\nfunction allocationResourcesFor(\n allocations: readonly AliasAnalysisAllocation[],\n allocationId: string,\n): readonly FrameGraphDebugResource[] {\n return allocations.find((group) => group.allocation.id === allocationId)?.resources ?? [];\n}\n\nfunction lifetimesOverlap(\n a: NonNullable<FrameGraphDebugResource['lifetime']>,\n b: NonNullable<FrameGraphDebugResource['lifetime']>,\n): boolean {\n return a.firstUse <= b.lastUse && b.firstUse <= a.lastUse;\n}\n\nfunction labelDebugResource(resource: FrameGraphDebugResource): string {\n return resource.label ?? `${resource.kind}-${resource.id}`;\n}\n"]}
1
+ {"version":3,"file":"panelAliasAnalysis.js","sourceRoot":"","sources":["../src/panelAliasAnalysis.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n FrameGraphDebugPhysicalAllocation,\n FrameGraphDebugResource,\n FrameGraphDebugViewModel,\n} from './debugCaptureModel.ts';\n\nexport type AliasAnalysisResource = {\n readonly resource: FrameGraphDebugResource;\n readonly allocation?: FrameGraphDebugPhysicalAllocation;\n readonly aliasStatus: 'aliased' | 'single' | 'not-transient' | 'not-allocated' | 'no-lifetime';\n readonly nonAliasReasons: readonly string[];\n};\n\nexport type AliasAnalysisAllocation = {\n readonly allocation: FrameGraphDebugPhysicalAllocation;\n readonly resources: readonly FrameGraphDebugResource[];\n readonly aliases: boolean;\n};\n\nexport type AliasAnalysis = {\n readonly allocations: readonly AliasAnalysisAllocation[];\n readonly resources: ReadonlyMap<string, AliasAnalysisResource>;\n readonly minUse: number;\n readonly maxUse: number;\n readonly hasLifetimes: boolean;\n};\n\n// View models are immutable for the lifetime of a capture. Search and selection\n// changes should not rebuild allocation membership or the execution domain.\nconst analysisBySnapshot = new WeakMap<FrameGraphDebugViewModel, AliasAnalysis>();\n\nexport function analyzeSnapshotAliases(snapshot: FrameGraphDebugViewModel): AliasAnalysis {\n const cached = analysisBySnapshot.get(snapshot);\n if (cached) return cached;\n const allocationById = snapshot.allocationById;\n const resourcesById = snapshot.resourceById;\n const allocationGroups = snapshot.physicalAllocations.map((allocation): AliasAnalysisAllocation => {\n const resources = allocation.resourceIds\n .map((resourceId) => resourcesById.get(resourceId))\n .filter((resource): resource is FrameGraphDebugResource => resource !== undefined);\n return {\n allocation,\n resources,\n aliases: resources.length > 1,\n };\n });\n\n const allocationGroupById = new Map(allocationGroups.map((group) => [group.allocation.id, group]));\n\n let minUse = Number.POSITIVE_INFINITY;\n let maxUse = Number.NEGATIVE_INFINITY;\n for (const resource of snapshot.resources) {\n if (resource.origin !== 'transient' || !resource.lifetime) {\n continue;\n }\n minUse = Math.min(minUse, resource.lifetime.firstUse);\n maxUse = Math.max(maxUse, resource.lifetime.lastUse);\n }\n const hasLifetimes = Number.isFinite(minUse) && Number.isFinite(maxUse);\n if (!hasLifetimes) {\n minUse = 0;\n maxUse = 0;\n }\n\n const resourceAnalysis = new Map<string, AliasAnalysisResource>();\n for (const resource of snapshot.resources) {\n const allocation = resource.physicalResourceId === undefined ? undefined : allocationById.get(resource.physicalResourceId);\n const allocationResources = allocation\n ? allocationGroupById.get(allocation.id)?.resources ?? []\n : [];\n const aliasStatus = resolveAliasStatus(resource, allocation, allocationResources);\n resourceAnalysis.set(resource.id, {\n resource,\n allocation,\n aliasStatus,\n nonAliasReasons: describeAliasStatus(aliasStatus),\n });\n }\n\n const analysis = {\n allocations: allocationGroups,\n resources: resourceAnalysis,\n minUse,\n maxUse,\n hasLifetimes,\n };\n analysisBySnapshot.set(snapshot, analysis);\n return analysis;\n}\n\nfunction resolveAliasStatus(\n resource: FrameGraphDebugResource,\n allocation: FrameGraphDebugPhysicalAllocation | undefined,\n allocationResources: readonly FrameGraphDebugResource[],\n): AliasAnalysisResource['aliasStatus'] {\n if (resource.origin !== 'transient') {\n return 'not-transient';\n }\n if (!resource.lifetime) {\n return 'no-lifetime';\n }\n if (!allocation) {\n return 'not-allocated';\n }\n return allocationResources.length > 1 ? 'aliased' : 'single';\n}\n\nfunction describeAliasStatus(status: AliasAnalysisResource['aliasStatus']): readonly string[] {\n switch (status) {\n case 'not-transient': return ['Imported and surface resources do not participate in transient aliasing.'];\n case 'no-lifetime': return ['No lifetime is available for this resource in the retained graph.'];\n case 'not-allocated': return ['No physical allocation is associated with this transient resource.'];\n case 'aliased': return ['Shares a physical allocation with other logical resources.'];\n // The snapshot states allocation membership; it cannot explain allocator\n // decisions by comparing every pair of logical resources.\n case 'single': return ['This physical allocation contains one logical resource.'];\n }\n}\n"]}
@@ -1,3 +1,4 @@
1
+ import { type GraphVisualTheme } from './panelVisualTheme.ts';
1
2
  import type cytoscape from 'cytoscape';
2
3
  import type { ELK } from 'elkjs/lib/elk-api';
3
4
  import type { GraphRenderer, GraphRenderRequest } from './panelGraphRenderer.ts';
@@ -13,7 +14,7 @@ export type GraphResizeSubscription = {
13
14
  export type GraphRendererEnvironment = {
14
15
  readonly createElement: (tagName: string) => HTMLElement;
15
16
  readonly loadRuntime: () => Promise<GraphRendererRuntime>;
16
- readonly layoutScene: (elk: ELK, scene: GraphScene) => Promise<GraphLayoutResult>;
17
+ readonly layoutScene: (elk: ELK, scene: GraphScene, theme?: GraphVisualTheme) => Promise<GraphLayoutResult>;
17
18
  readonly observeResize?: (element: HTMLElement, onResize: () => void) => GraphResizeSubscription;
18
19
  };
19
20
  export declare class CytoscapeGraphRenderer implements GraphRenderer {
@@ -25,6 +26,9 @@ export declare class CytoscapeGraphRenderer implements GraphRenderer {
25
26
  private readonly statusMessage;
26
27
  private readonly retryButton;
27
28
  private readonly resizeSubscription;
29
+ private theme;
30
+ private geometryRevision;
31
+ private wasVisible;
28
32
  private core;
29
33
  private elk;
30
34
  private loading;
@@ -40,10 +44,17 @@ export declare class CytoscapeGraphRenderer implements GraphRenderer {
40
44
  private anchorTargetContentKey;
41
45
  private failedSceneContentKey;
42
46
  private overview;
43
- private lastTap;
47
+ private dragPanning;
48
+ private pointerInside;
49
+ private pointerOverElement;
50
+ private readonly cancelPointerInteraction;
51
+ private pendingReveal;
52
+ private pendingGroupTap;
44
53
  constructor(host: HTMLElement, environment?: GraphRendererEnvironment);
45
54
  render(request: GraphRenderRequest): void;
55
+ setTheme(theme: GraphVisualTheme): void;
46
56
  resize(): void;
57
+ cancelReveal(): void;
47
58
  fit(): void;
48
59
  relayout(): void;
49
60
  destroy(): void;
@@ -56,15 +67,19 @@ export declare class CytoscapeGraphRenderer implements GraphRenderer {
56
67
  private syncInteraction;
57
68
  private consumeFitIfCurrentTarget;
58
69
  private consumeAnchorIfCurrentTarget;
70
+ private consumeReveal;
59
71
  private targetNeedsApply;
60
72
  private updateSemanticZoom;
61
73
  private positionTooltip;
62
74
  private hideTooltip;
75
+ private cancelGroupTap;
76
+ private clearHover;
77
+ private updateCursor;
63
78
  private showStatus;
64
79
  private hideStatus;
65
80
  private resolveCurrentRequest;
66
81
  }
67
- export declare function updateElementData(core: cytoscape.Core, scene: GraphScene): void;
82
+ export declare function updateElementData(core: cytoscape.Core, scene: GraphScene, theme?: GraphVisualTheme): void;
68
83
  export { createCytoscapeEdgeRouteData, createElkLayoutGraph, layoutGraphScene, } from './panelGraphLayout.ts';
69
84
  export type { CytoscapeEdgeRouteData, GraphEdgeRoute, GraphLayoutResult, GraphPosition, } from './panelGraphLayout.ts';
70
85
  export { createGraphStyles, expandedGroupLabelMaxWidth, graphEdgeDisplayLabel, graphLayoutGeometryKey, isOverviewGraphScale, } from './panelGraphVisuals.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"panelCytoscapeGraphRenderer.d.ts","sourceRoot":"","sources":["../src/panelCytoscapeGraphRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"panelCytoscapeGraphRenderer.d.ts","sourceRoot":"","sources":["../src/panelCytoscapeGraphRenderer.ts"],"names":[],"mappings":"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"}