@zenfg/inspector 0.1.0-beta.3 → 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.
- package/GUIDE.md +182 -0
- package/README.md +61 -89
- package/THEMING.md +124 -0
- package/dist/FrameGraphInspector.d.ts +23 -4
- package/dist/FrameGraphInspector.d.ts.map +1 -1
- package/dist/FrameGraphInspector.js +137 -29
- package/dist/FrameGraphInspector.js.map +1 -1
- package/dist/capture.d.ts +5 -0
- package/dist/capture.d.ts.map +1 -0
- package/dist/capture.js +2 -0
- package/dist/capture.js.map +1 -0
- package/dist/debugCaptureModel.d.ts +19 -0
- package/dist/debugCaptureModel.d.ts.map +1 -1
- package/dist/debugCaptureModel.js +36 -2
- package/dist/debugCaptureModel.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/panelAliasAnalysis.d.ts +1 -0
- package/dist/panelAliasAnalysis.d.ts.map +1 -1
- package/dist/panelAliasAnalysis.js +23 -54
- package/dist/panelAliasAnalysis.js.map +1 -1
- package/dist/panelCytoscapeGraphRenderer.d.ts +15 -2
- package/dist/panelCytoscapeGraphRenderer.d.ts.map +1 -1
- package/dist/panelCytoscapeGraphRenderer.js +145 -23
- package/dist/panelCytoscapeGraphRenderer.js.map +1 -1
- package/dist/panelDetailLayout.d.ts +27 -0
- package/dist/panelDetailLayout.d.ts.map +1 -0
- package/dist/panelDetailLayout.js +174 -0
- package/dist/panelDetailLayout.js.map +1 -0
- package/dist/panelDetailStyles.d.ts +2 -0
- package/dist/panelDetailStyles.d.ts.map +1 -0
- package/dist/panelDetailStyles.js +57 -0
- package/dist/panelDetailStyles.js.map +1 -0
- package/dist/panelDiagnosticsView.d.ts +10 -1
- package/dist/panelDiagnosticsView.d.ts.map +1 -1
- package/dist/panelDiagnosticsView.js +166 -57
- package/dist/panelDiagnosticsView.js.map +1 -1
- package/dist/panelDomHelpers.d.ts.map +1 -1
- package/dist/panelDomHelpers.js +6 -5
- package/dist/panelDomHelpers.js.map +1 -1
- package/dist/panelGraphLayout.d.ts +3 -2
- package/dist/panelGraphLayout.d.ts.map +1 -1
- package/dist/panelGraphLayout.js +6 -5
- package/dist/panelGraphLayout.js.map +1 -1
- package/dist/panelGraphRenderer.d.ts +10 -0
- package/dist/panelGraphRenderer.d.ts.map +1 -1
- package/dist/panelGraphRenderer.js.map +1 -1
- package/dist/panelGraphScene.d.ts +1 -0
- package/dist/panelGraphScene.d.ts.map +1 -1
- package/dist/panelGraphScene.js +69 -32
- package/dist/panelGraphScene.js.map +1 -1
- package/dist/panelGraphSearch.d.ts +16 -0
- package/dist/panelGraphSearch.d.ts.map +1 -0
- package/dist/panelGraphSearch.js +93 -0
- package/dist/panelGraphSearch.js.map +1 -0
- package/dist/panelGraphView.d.ts +82 -0
- package/dist/panelGraphView.d.ts.map +1 -1
- package/dist/panelGraphView.js +15 -4
- package/dist/panelGraphView.js.map +1 -1
- package/dist/panelGraphVisuals.d.ts +14 -6
- package/dist/panelGraphVisuals.d.ts.map +1 -1
- package/dist/panelGraphVisuals.js +126 -51
- package/dist/panelGraphVisuals.js.map +1 -1
- package/dist/panelInspectorView.d.ts +8 -0
- package/dist/panelInspectorView.d.ts.map +1 -1
- package/dist/panelInspectorView.js +242 -48
- package/dist/panelInspectorView.js.map +1 -1
- package/dist/panelListStyles.d.ts +3 -0
- package/dist/panelListStyles.d.ts.map +1 -0
- package/dist/panelListStyles.js +155 -0
- package/dist/panelListStyles.js.map +1 -0
- package/dist/panelMemoryStyles.d.ts +3 -0
- package/dist/panelMemoryStyles.d.ts.map +1 -0
- package/dist/panelMemoryStyles.js +42 -0
- package/dist/panelMemoryStyles.js.map +1 -0
- package/dist/panelMemoryView.d.ts +13 -1
- package/dist/panelMemoryView.d.ts.map +1 -1
- package/dist/panelMemoryView.js +161 -41
- package/dist/panelMemoryView.js.map +1 -1
- package/dist/panelPassesView.d.ts +15 -0
- package/dist/panelPassesView.d.ts.map +1 -1
- package/dist/panelPassesView.js +202 -72
- package/dist/panelPassesView.js.map +1 -1
- package/dist/panelRawView.d.ts +15 -0
- package/dist/panelRawView.d.ts.map +1 -0
- package/dist/panelRawView.js +105 -0
- package/dist/panelRawView.js.map +1 -0
- package/dist/panelResourcesView.d.ts +8 -0
- package/dist/panelResourcesView.d.ts.map +1 -1
- package/dist/panelResourcesView.js +62 -31
- package/dist/panelResourcesView.js.map +1 -1
- package/dist/panelSelection.d.ts +9 -1
- package/dist/panelSelection.d.ts.map +1 -1
- package/dist/panelSelection.js +34 -4
- package/dist/panelSelection.js.map +1 -1
- package/dist/panelTheme.d.ts +13 -0
- package/dist/panelTheme.d.ts.map +1 -0
- package/dist/panelTheme.js +104 -0
- package/dist/panelTheme.js.map +1 -0
- package/dist/panelTypes.d.ts +10 -1
- package/dist/panelTypes.d.ts.map +1 -1
- package/dist/panelTypes.js.map +1 -1
- package/dist/panelVisualTheme.d.ts +147 -50
- package/dist/panelVisualTheme.d.ts.map +1 -1
- package/dist/panelVisualTheme.js +34 -44
- package/dist/panelVisualTheme.js.map +1 -1
- package/dist/panelWorkbenchHelpers.d.ts +12 -1
- package/dist/panelWorkbenchHelpers.d.ts.map +1 -1
- package/dist/panelWorkbenchHelpers.js +62 -1
- package/dist/panelWorkbenchHelpers.js.map +1 -1
- package/dist/panelWorkbenchStyles.d.ts +2 -0
- package/dist/panelWorkbenchStyles.d.ts.map +1 -0
- package/dist/panelWorkbenchStyles.js +101 -0
- package/dist/panelWorkbenchStyles.js.map +1 -0
- package/dist/panelWorkbenchView.d.ts +16 -0
- package/dist/panelWorkbenchView.d.ts.map +1 -1
- package/dist/panelWorkbenchView.js +228 -50
- package/dist/panelWorkbenchView.js.map +1 -1
- package/dist/query.js.map +1 -1
- package/dist/styles.d.ts.map +1 -1
- package/dist/styles.js +147 -195
- package/dist/styles.js.map +1 -1
- package/dist/theme.d.ts +22 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +10 -0
- package/dist/theme.js.map +1 -0
- package/dist/themeDefinitions.d.ts +251 -0
- package/dist/themeDefinitions.d.ts.map +1 -0
- package/dist/themeDefinitions.js +96 -0
- package/dist/themeDefinitions.js.map +1 -0
- package/dist/themePalette.d.ts +66 -0
- package/dist/themePalette.d.ts.map +1 -0
- package/dist/themePalette.js +37 -0
- package/dist/themePalette.js.map +1 -0
- package/dist/themes.css +165 -0
- package/package.json +44 -10
- package/src/FrameGraphInspector.ts +130 -31
- package/src/capture.ts +4 -0
- package/src/debugCaptureModel.ts +53 -2
- package/src/index.ts +6 -2
- package/src/panelAliasAnalysis.ts +24 -70
- package/src/panelCytoscapeGraphRenderer.ts +140 -23
- package/src/panelDetailLayout.ts +155 -0
- package/src/panelDetailStyles.ts +56 -0
- package/src/panelDiagnosticsView.ts +166 -85
- package/src/panelDomHelpers.ts +4 -5
- package/src/panelGraphLayout.ts +6 -5
- package/src/panelGraphRenderer.ts +7 -0
- package/src/panelGraphScene.ts +68 -30
- package/src/panelGraphSearch.ts +96 -0
- package/src/panelGraphView.ts +14 -4
- package/src/panelGraphVisuals.ts +122 -52
- package/src/panelInspectorView.ts +227 -48
- package/src/panelListStyles.ts +154 -0
- package/src/panelMemoryStyles.ts +41 -0
- package/src/panelMemoryView.ts +178 -53
- package/src/panelPassesView.ts +190 -137
- package/src/panelRawView.ts +99 -0
- package/src/panelResourcesView.ts +69 -56
- package/src/panelSelection.ts +37 -5
- package/src/panelTheme.ts +85 -0
- package/src/panelTypes.ts +7 -1
- package/src/panelVisualTheme.ts +38 -49
- package/src/panelWorkbenchHelpers.ts +60 -2
- package/src/panelWorkbenchStyles.ts +100 -0
- package/src/panelWorkbenchView.ts +201 -52
- package/src/query.ts +11 -11
- package/src/styles.ts +148 -195
- package/src/theme.ts +24 -0
- package/src/themeDefinitions.ts +103 -0
- package/src/themePalette.ts +44 -0
package/GUIDE.md
ADDED
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
# Inspector workbench guide
|
|
2
|
+
|
|
3
|
+
## Workbench behavior
|
|
4
|
+
|
|
5
|
+
The workbench provides Overview, Graph, Passes, Resources, Memory, and
|
|
6
|
+
Diagnostics views plus a selection Inspector. It supports live capture, direct
|
|
7
|
+
Snapshot replacement, file import, supported legacy migration, canonical
|
|
8
|
+
download, clipboard copy, filtering, sorting, group expansion, and graph
|
|
9
|
+
navigation.
|
|
10
|
+
|
|
11
|
+
The first capture opens Graph with no selection and the detail pane closed.
|
|
12
|
+
Subsequent captures preserve the current view, filters, and selection when the
|
|
13
|
+
same object still exists. Pass selection follows the node ID across retained and
|
|
14
|
+
culled states; removing the selected object clears selection and closes details.
|
|
15
|
+
These preferences, group expansion, and detail width belong to the current
|
|
16
|
+
Inspector instance and are not saved across sessions.
|
|
17
|
+
|
|
18
|
+
| View | Purpose |
|
|
19
|
+
| --- | --- |
|
|
20
|
+
| Overview | Full-width diagnostic counts, timing coverage, slowest pass, work counts, and memory estimates, with links to the relevant views. Capture metadata is expandable. |
|
|
21
|
+
| Graph | Frame Flow structure, searchable by pass, resource, group, or output, with explicit target location and a collapsible legend. |
|
|
22
|
+
| Passes | All, Retained, or Culled passes, filtered by kind and name/ID/group, with order and GPU sorting. The separate Group Hierarchy has its own expansion and path search. |
|
|
23
|
+
| Resources | Name/ID/group, type, and Transient/Imported/Surface filters, plus name, estimated size, and first-use sorting. Full descriptors and allocations remain in details. |
|
|
24
|
+
| Memory | Physical allocations and their logical resources, inclusive execution-slot lifetimes, search, allocation/size sorting, and All/Aliased/Single/Unallocated filters. |
|
|
25
|
+
| Diagnostics | Every captured error, warning, and informational message, including repeated codes. Severity and code/message filters precede expandable retention roots, culling reasons, and execution segments. |
|
|
26
|
+
|
|
27
|
+
Lists show the matching and total counts, retain continuous scrolling, and offer
|
|
28
|
+
**Clear filters**. Passes order retained work by execution order, then culled work
|
|
29
|
+
by recording order when available, falling back to capture order. Retained means
|
|
30
|
+
the compiler kept a pass; it does not itself prove GPU execution. Culled work has
|
|
31
|
+
no execution order, segment, or GPU timing. The Group Hierarchy arrows only change
|
|
32
|
+
that tree; **Show in Graph** is a separate action.
|
|
33
|
+
|
|
34
|
+
Diagnostics preserve capture order within each severity and offer separate
|
|
35
|
+
node and resource links when a message references both. Culled-node links work
|
|
36
|
+
the same way as retained-node links. The Diagnostics tab shows error/warning
|
|
37
|
+
counts. Source, frame, and capture time are available under **Capture information**
|
|
38
|
+
in Overview; an absent capture timestamp is shown as unknown. The collapsible
|
|
39
|
+
graph legend floats inside the canvas without changing its size or viewport.
|
|
40
|
+
Graph controls also float over the canvas. **Search** opens the search field;
|
|
41
|
+
**Escape** dismisses it. **Fit** frames the graph in the available viewport.
|
|
42
|
+
|
|
43
|
+
The selection pane has **Summary**, **Relations**, and **Raw** tabs. Summary
|
|
44
|
+
explains compilation status, timing coverage, accesses, allocation relationships,
|
|
45
|
+
and attached diagnostics. Relations distinguish access facts, dependencies,
|
|
46
|
+
output sources, and allocation membership. Raw shows the selected original
|
|
47
|
+
object and its JSON path in the canonical Snapshot, with field/value search,
|
|
48
|
+
folding, and copy of the complete object regardless of the current search. Legacy
|
|
49
|
+
imports explicitly identify their migrated canonical data. IDs can be copied
|
|
50
|
+
without their presentation labels.
|
|
51
|
+
|
|
52
|
+
Selecting an object opens its details on object views. Overview uses the full
|
|
53
|
+
width while retaining selection. The pane defaults to 300px and can be resized
|
|
54
|
+
from 300px to 480px while leaving at least 520px for the main view. Workspaces narrower than
|
|
55
|
+
828px use a modal drawer capped at 340px, with at least a 24px outside strip,
|
|
56
|
+
a backdrop, keyboard focus containment, and focus restoration when closed. The main content width determines table and information
|
|
57
|
+
layout; auxiliary table columns move into details when space is limited.
|
|
58
|
+
Arrow keys and Home/End switch tabs. Escape first dismisses the innermost active
|
|
59
|
+
menu or detail pane; the Examples host respects handled key events.
|
|
60
|
+
|
|
61
|
+
### Timing and memory interpretation
|
|
62
|
+
|
|
63
|
+
Timing labels distinguish not collected, partial coverage, complete coverage,
|
|
64
|
+
not applicable, and a measured zero. **Measured pass sum** is the sum of available
|
|
65
|
+
pass timings with its timed/eligible count; **GPU span** is displayed separately.
|
|
66
|
+
Opaque external work has no inferred duration. Passes is the comparison table
|
|
67
|
+
for individual timings; Diagnostics does not repeat it.
|
|
68
|
+
|
|
69
|
+
Memory numbers are estimates with different scopes:
|
|
70
|
+
|
|
71
|
+
| Metric | Meaning |
|
|
72
|
+
| --- | --- |
|
|
73
|
+
| Transient estimate | Declared estimated sizes of transient logical resources. |
|
|
74
|
+
| Logical capacity | Allocation capacity counted for each assigned logical transient resource. |
|
|
75
|
+
| Physical estimate | Estimated sizes of physical allocations in the allocation report. |
|
|
76
|
+
| Alias reuse | Logical capacity minus physical estimate, where both are known. |
|
|
77
|
+
| Pool retained | Producer-reported retained pool allocations, which may outlive this graph. |
|
|
78
|
+
|
|
79
|
+
An unavailable report is not zero. Unknown resource/allocation sizes remain
|
|
80
|
+
unknown, and partial summaries show the known-size coverage. A valid empty report
|
|
81
|
+
can contain real zero totals. None of these metrics is total GPU memory or a
|
|
82
|
+
measured peak. Memory summaries always cover the entire Snapshot; filters change
|
|
83
|
+
the visible rows and matching count only. A lifetime includes both first and last
|
|
84
|
+
execution slots. Tick positions, grid lines, and resource bars share one stable
|
|
85
|
+
Snapshot coordinate range; missing lifetimes have no bar.
|
|
86
|
+
|
|
87
|
+
### Frame Flow interaction
|
|
88
|
+
|
|
89
|
+
Graph is a single **Frame Flow** view: resource declarations → retained pass
|
|
90
|
+
dependencies → explicit resource outputs. Resource entrances belong to their
|
|
91
|
+
declaration groups; output roots remain top-level and use compiler-supplied final
|
|
92
|
+
producers and initial-content contributions. Culled passes remain in lists and
|
|
93
|
+
details, not in the graph. Collapsed groups aggregate relationships without
|
|
94
|
+
discarding their underlying semantics.
|
|
95
|
+
The **Declarations** toolbar toggle shows resource declaration entrances by default.
|
|
96
|
+
Turn it off to focus on pass dependencies and outputs: declaration entrances,
|
|
97
|
+
their relationships (including initial-content output edges), and resource-only
|
|
98
|
+
groups leave the layout. Pass dependencies and producer-to-output edges remain.
|
|
99
|
+
Outputs with known initial-content contributions show **With initial contents**
|
|
100
|
+
or **Initial contents only**; unavailable Legacy sources are not inferred.
|
|
101
|
+
The toggle persists across views and captures within this Inspector instance.
|
|
102
|
+
Changing it fits the updated graph while preserving selection and group expansion.
|
|
103
|
+
Resources, details, memory, and Snapshot data remain complete.
|
|
104
|
+
|
|
105
|
+
All nodes use single-line borders. Ordinary passes are rounded rectangles,
|
|
106
|
+
external submissions are cut-corner rectangles, resource entrances are ellipses,
|
|
107
|
+
and output roots are right-pointing tags. Declarations and outputs each have a
|
|
108
|
+
role colour independent of Buffer/Texture; pass categories have distinct colours.
|
|
109
|
+
Resources and Memory retain their resource-type colours. Hover and selection
|
|
110
|
+
change border emphasis, not shape, text colour, or fill.
|
|
111
|
+
|
|
112
|
+
Entrances show source/type first and the resource name second; outputs show their
|
|
113
|
+
purpose first and name second. Names are truncated to one line, with full names
|
|
114
|
+
available on hover and in details. Output ranges appear only to distinguish
|
|
115
|
+
different ranges of the same resource and purpose. Exact ranges and final sources
|
|
116
|
+
remain in hover/details. Semantic zoom hides auxiliary types and range summaries.
|
|
117
|
+
The grouped legend describes the whole snapshot's Frame Flow, including collapsed
|
|
118
|
+
objects, respects the Declarations toggle, and remains stable while groups expand/collapse. Culled-only categories
|
|
119
|
+
and unused resources do not add legend entries.
|
|
120
|
+
|
|
121
|
+
Category fills are opaque sRGB tints over the canvas: 18% in Storm and 8% in
|
|
122
|
+
Light. Theme-specific node text targets at least 7:1 contrast. Supporting text targets 4.5:1, and identifying
|
|
123
|
+
borders/symbols target 3:1 against their adjacent backgrounds. Automated checks
|
|
124
|
+
cover both official themes and interaction states; custom CSS colour overrides must
|
|
125
|
+
preserve these contrast relationships.
|
|
126
|
+
|
|
127
|
+
Solid edges represent declarations, values, and output sources; dashed edges
|
|
128
|
+
represent ordering-only relationships. Edges never carry labels. Hover provides
|
|
129
|
+
temporary hints: resource entrances and edges link only to visible entrances and
|
|
130
|
+
edges with the same logical resource ID, regardless of range. Passes, groups, and
|
|
131
|
+
output nodes only highlight themselves. These associations do not imply matching
|
|
132
|
+
ranges or a continuous dataflow path, and never substitute a collapsed group for
|
|
133
|
+
a hidden resource entrance.
|
|
134
|
+
Direct and linked hover use the same strong visual style. Selection uses a blue
|
|
135
|
+
outline without a glow. Hovering a Summary or Relations link previews its target
|
|
136
|
+
in the graph using the same rules, without changing selection or moving the view;
|
|
137
|
+
leaving the link or changing/closing the detail pane clears the preview.
|
|
138
|
+
|
|
139
|
+
Resource **Pass accesses** entries link only the pass name; access mode, write
|
|
140
|
+
contents, producesValue, and available ranges remain descriptive text. Pass details
|
|
141
|
+
use the same access facts. An access is not a graph
|
|
142
|
+
relationship and is not mapped to an arbitrary dependency edge.
|
|
143
|
+
Resource Relations also link to individual output roots by reason and range.
|
|
144
|
+
|
|
145
|
+
Clicking an entrance, edge, or Resources row selects the same logical resource,
|
|
146
|
+
including all its visible entrances and edges, but no passes, groups, or outputs.
|
|
147
|
+
An output still selects its Root. Its **View resource** action and other resource
|
|
148
|
+
links use the same resource selection. Changing to a different resource opens
|
|
149
|
+
Summary; selecting the current resource again preserves the active detail tab.
|
|
150
|
+
Selection does not switch workbench views, change filters, expand groups, or move
|
|
151
|
+
the viewport. A hidden entrance becomes selected when manually expanded; its
|
|
152
|
+
visible cross-group edges remain selected while it is hidden. Hover previews are
|
|
153
|
+
independent, with selection styling taking precedence, and never pin a tooltip.
|
|
154
|
+
Edge hints show only the resource and distinct relationship types, including
|
|
155
|
+
mixed types in aggregates. There is no independent edge detail or relationship list.
|
|
156
|
+
Double-clicking a group expands or collapses it without replacing selection;
|
|
157
|
+
single-click group selection waits briefly to distinguish that gesture.
|
|
158
|
+
Legacy outputs with unavailable
|
|
159
|
+
resolution remain visible but have no inferred source edges.
|
|
160
|
+
|
|
161
|
+
Explicit **Show in …** actions perform navigation: they switch views, clear
|
|
162
|
+
blocking filters, expand necessary ancestors, and scroll or center the target.
|
|
163
|
+
They close a narrow-host drawer so the target is visible. Graph search uses the
|
|
164
|
+
same explicit location behavior. Explicit resource location also turns Declarations
|
|
165
|
+
on; ordinary selection and hover never change the toggle. Failed location restores
|
|
166
|
+
the previous declaration and group settings. Objects absent from Frame Flow show an
|
|
167
|
+
explanation and a list-view action; locating an object does not bypass the graph
|
|
168
|
+
element budget. Ordinary selection and hover retain the behavior above.
|
|
169
|
+
|
|
170
|
+
Capture, import, and direct replacement share a revision counter so stale async
|
|
171
|
+
results cannot replace newer data. Failed or oversized imports leave the
|
|
172
|
+
current valid capture and UI state intact, and operation feedback can be expanded
|
|
173
|
+
to inspect the full failure reason. Views render their new capture on first
|
|
174
|
+
activation, and selection updates refresh only the active view and details.
|
|
175
|
+
Memory grouping and lifetime coordinates are cached per Snapshot; Raw is created
|
|
176
|
+
only when opened. Graph layout is lazy and is disabled
|
|
177
|
+
with an explanation when a capture exceeds `maxGraphElements`; the tabular and
|
|
178
|
+
raw views remain available.
|
|
179
|
+
|
|
180
|
+
Snapshot labels, URLs, extensions, and diagnostics are assigned through text
|
|
181
|
+
DOM APIs and are never executed as markup or code. The standalone Site page in
|
|
182
|
+
`apps/site/inspector` mounts this same package without adding duplicate controls.
|
package/README.md
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# @zenfg/inspector
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
[](https://www.npmjs.com/package/@zenfg/inspector)
|
|
5
|
+
[](https://uinosoft.github.io/zenfg/docs/api/inspector/)
|
|
6
|
+
[](https://github.com/uinosoft/zenfg/blob/npm/inspector/v0.1.0-beta.4/LICENSE)
|
|
7
|
+
<!-- generated:badges:end -->
|
|
7
8
|
|
|
8
9
|
`@zenfg/inspector` is an embeddable, renderer-independent DOM workbench for
|
|
9
10
|
ZenFG Snapshot data. It depends on `@zenfg/snapshot`, Cytoscape, and ELK, but has
|
|
@@ -13,24 +14,35 @@ The package owns Snapshot validation, migration, visualization, and workbench
|
|
|
13
14
|
state. The host owns layout around the workbench, live-capture policy, file
|
|
14
15
|
retention, and the renderer that produces Snapshot data.
|
|
15
16
|
|
|
17
|
+
Resource and access statistics describe the declarations captured in the graph.
|
|
18
|
+
They do not automatically scan all shader bindings or measure total GPU memory;
|
|
19
|
+
workload-private buffers can be absent. More explicit declarations can be useful
|
|
20
|
+
for diagnosis. See [Choosing resource declaration granularity](https://github.com/uinosoft/zenfg/blob/npm/inspector/v0.1.0-beta.4/docs/core-concepts.md#choosing-resource-declaration-granularity).
|
|
21
|
+
|
|
16
22
|
## Installation
|
|
17
23
|
|
|
24
|
+
<!-- generated:installation:start -->
|
|
18
25
|
```sh
|
|
19
|
-
npm install @zenfg/inspector@0.1.0-beta.
|
|
26
|
+
npm install @zenfg/inspector@0.1.0-beta.4
|
|
20
27
|
```
|
|
28
|
+
<!-- generated:installation:end -->
|
|
21
29
|
|
|
22
30
|
## Quick start
|
|
23
31
|
|
|
32
|
+
Run in a modern browser from your existing TypeScript app. Give the host element
|
|
33
|
+
an explicit size (for example, `height: 600px`) and supply a valid Snapshot capture.
|
|
34
|
+
Call `mountInspector(host, capture)` below; the returned function removes the workbench.
|
|
35
|
+
|
|
24
36
|
Mount one Inspector into a host element and provide an optional live-capture
|
|
25
37
|
callback:
|
|
26
38
|
|
|
27
39
|
```ts
|
|
28
|
-
import { mountFrameGraphInspector } from '@zenfg/inspector';
|
|
40
|
+
import { mountFrameGraphInspector, type FrameGraphCaptureRequest } from '@zenfg/inspector';
|
|
29
41
|
import type { FrameGraphSnapshot } from '@zenfg/snapshot';
|
|
30
42
|
|
|
31
43
|
export function mountInspector(
|
|
32
44
|
host: HTMLElement,
|
|
33
|
-
capture: () => FrameGraphSnapshot | Promise<FrameGraphSnapshot>,
|
|
45
|
+
capture: (request: FrameGraphCaptureRequest) => FrameGraphSnapshot | Promise<FrameGraphSnapshot>,
|
|
34
46
|
): () => void {
|
|
35
47
|
const inspector = mountFrameGraphInspector(host, {
|
|
36
48
|
captureSnapshot: capture,
|
|
@@ -45,6 +57,17 @@ The host must have non-zero width and height. `FrameGraphInspector` fills that
|
|
|
45
57
|
host, so the same workbench can be embedded in a tool panel or mounted as a
|
|
46
58
|
full-page application.
|
|
47
59
|
|
|
60
|
+
## Themes and style customization
|
|
61
|
+
|
|
62
|
+
Inspector uses Tokyo Night Storm by default and includes a complete Light preset.
|
|
63
|
+
Use public `--zfgi-*` variables on an owned host, or pass a theme object and call
|
|
64
|
+
`setTheme()` to update one instance without losing graph interaction state.
|
|
65
|
+
After changing external CSS dynamically, call `refreshTheme()` to synchronize
|
|
66
|
+
the Canvas graph. Static CSS is read automatically at mount.
|
|
67
|
+
|
|
68
|
+
See [Theming](./THEMING.md) for JS presets, the optional CSS preset stylesheet,
|
|
69
|
+
variable reference, compatibility aliases, and multi-instance behavior.
|
|
70
|
+
|
|
48
71
|
## Common tasks
|
|
49
72
|
|
|
50
73
|
| Task | Public API |
|
|
@@ -57,6 +80,8 @@ full-page application.
|
|
|
57
80
|
| Import and migrate a file | `importSnapshot()` |
|
|
58
81
|
| Download canonical Snapshot JSON | `downloadSnapshot()` |
|
|
59
82
|
| Copy canonical Snapshot JSON | `copySnapshotJson()` |
|
|
83
|
+
| Apply a preset or custom theme | `theme` option and `setTheme()` |
|
|
84
|
+
| Synchronize graph after external CSS changes | `refreshTheme()` |
|
|
60
85
|
| Set visible product branding | `branding` option |
|
|
61
86
|
| Limit imported file size | `maxImportBytes` option |
|
|
62
87
|
| Limit automatic graph layout | `maxGraphElements` option |
|
|
@@ -65,85 +90,9 @@ full-page application.
|
|
|
65
90
|
Exact options, defaults, return types, and lifecycle behavior are documented by
|
|
66
91
|
the TSDoc preserved in the packaged source and declarations.
|
|
67
92
|
|
|
68
|
-
## Workbench
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
Diagnostics views plus a selection Inspector. It supports live capture, direct
|
|
72
|
-
Snapshot replacement, file import, supported legacy migration, canonical
|
|
73
|
-
download, clipboard copy, filtering, sorting, group expansion, and graph
|
|
74
|
-
navigation.
|
|
75
|
-
|
|
76
|
-
Graph is a single **Frame Flow** view: resource declarations → retained pass
|
|
77
|
-
dependencies → explicit resource outputs. Resource entrances belong to their
|
|
78
|
-
declaration groups; output roots remain top-level and use compiler-supplied final
|
|
79
|
-
producers and initial-content contributions. Culled passes remain in lists and
|
|
80
|
-
details, not in the graph. Collapsed groups aggregate relationships without
|
|
81
|
-
discarding their underlying semantics.
|
|
82
|
-
All nodes use single-line borders. Ordinary passes are rounded rectangles,
|
|
83
|
-
external submissions are cut-corner rectangles, resource entrances are ellipses,
|
|
84
|
-
and output roots are right-pointing tags. Declarations and outputs each have a
|
|
85
|
-
role colour independent of Buffer/Texture; pass categories have distinct colours.
|
|
86
|
-
Resources and Memory retain their resource-type colours. Hover and selection
|
|
87
|
-
change border emphasis, not shape, text colour, or fill.
|
|
88
|
-
|
|
89
|
-
Entrances show source/type first and the resource name second; outputs show their
|
|
90
|
-
purpose first and name second. Names are truncated to one line, with full names
|
|
91
|
-
available on hover and in details. Output ranges appear only to distinguish
|
|
92
|
-
different ranges of the same resource and purpose. Exact ranges and final sources
|
|
93
|
-
remain in hover/details. Semantic zoom hides auxiliary types and range summaries.
|
|
94
|
-
The grouped legend describes the whole snapshot's Frame Flow, including collapsed
|
|
95
|
-
objects, and remains stable while groups expand/collapse. Culled-only categories
|
|
96
|
-
and unused resources do not add legend entries.
|
|
97
|
-
|
|
98
|
-
Category fills are opaque 18% sRGB tints over the canvas; node text stays light
|
|
99
|
-
and targets at least 7:1 contrast. Supporting text targets 4.5:1, and identifying
|
|
100
|
-
borders/symbols target 3:1 against their adjacent backgrounds. Automated checks
|
|
101
|
-
cover the default theme and interaction states; custom CSS colour overrides must
|
|
102
|
-
preserve these contrast relationships.
|
|
103
|
-
|
|
104
|
-
Solid edges represent declarations, values, and output sources; dashed edges
|
|
105
|
-
represent ordering-only relationships. Edges never carry labels. Hover provides
|
|
106
|
-
temporary hints: resource entrances and edges link only to visible entrances and
|
|
107
|
-
edges with the same logical resource ID, regardless of range. Passes, groups, and
|
|
108
|
-
output nodes only highlight themselves. These associations do not imply matching
|
|
109
|
-
ranges or a continuous dataflow path, and never substitute a collapsed group for
|
|
110
|
-
a hidden resource entrance.
|
|
111
|
-
Direct and linked hover use the same strong visual style. Selection uses a blue
|
|
112
|
-
outline without a glow. Hovering a Summary or Relations link previews its target
|
|
113
|
-
in the graph using the same rules, without changing selection or moving the view;
|
|
114
|
-
leaving the link or changing/closing the detail pane clears the preview.
|
|
115
|
-
|
|
116
|
-
Resource **Pass accesses** entries link only the pass name; access mode, write
|
|
117
|
-
contents, producesValue, and available ranges remain descriptive text. Pass details
|
|
118
|
-
use the same access facts. An access is not a graph
|
|
119
|
-
relationship and is not mapped to an arbitrary dependency edge.
|
|
120
|
-
Resource Relations also link to individual output roots by reason and range.
|
|
121
|
-
|
|
122
|
-
Clicking an entrance, edge, or Resources row selects the same logical resource,
|
|
123
|
-
including all its visible entrances and edges, but no passes, groups, or outputs.
|
|
124
|
-
An output still selects its Root. Its **View resource** action and other resource
|
|
125
|
-
links use the same resource selection. Changing to a different resource opens
|
|
126
|
-
Summary; selecting the current resource again preserves the active detail tab.
|
|
127
|
-
Selection does not switch workbench views, change filters, expand groups, or move
|
|
128
|
-
the viewport. A hidden entrance becomes selected when manually expanded; its
|
|
129
|
-
visible cross-group edges remain selected while it is hidden. Hover previews are
|
|
130
|
-
independent, with selection styling taking precedence, and never pin a tooltip.
|
|
131
|
-
Edge hints show only the resource and distinct relationship types, including
|
|
132
|
-
mixed types in aggregates. There is no independent edge detail or relationship list.
|
|
133
|
-
Double-clicking a group expands or collapses it without replacing selection;
|
|
134
|
-
single-click group selection waits briefly to distinguish that gesture.
|
|
135
|
-
Legacy outputs with unavailable
|
|
136
|
-
resolution remain visible but have no inferred source edges.
|
|
137
|
-
|
|
138
|
-
Capture, import, and direct replacement share a revision counter so stale async
|
|
139
|
-
results cannot replace newer data. Failed or oversized imports leave the
|
|
140
|
-
current valid capture and UI state intact. Graph layout is lazy and is disabled
|
|
141
|
-
with an explanation when a capture exceeds `maxGraphElements`; the tabular and
|
|
142
|
-
raw views remain available.
|
|
143
|
-
|
|
144
|
-
Snapshot labels, URLs, extensions, and diagnostics are assigned through text
|
|
145
|
-
DOM APIs and are never executed as markup or code. The standalone application
|
|
146
|
-
in `apps/inspector` mounts this same package without adding duplicate controls.
|
|
93
|
+
## Workbench guide
|
|
94
|
+
|
|
95
|
+
See the [workbench guide](./GUIDE.md) for views, graph interaction, timing, and memory interpretation.
|
|
147
96
|
|
|
148
97
|
## Common mistakes
|
|
149
98
|
|
|
@@ -159,6 +108,29 @@ in `apps/inspector` mounts this same package without adding duplicate controls.
|
|
|
159
108
|
## Further reading
|
|
160
109
|
|
|
161
110
|
- [Hosted Inspector](https://uinosoft.github.io/zenfg/inspector/)
|
|
162
|
-
- [`@zenfg/snapshot`](https://github.com/uinosoft/zenfg/blob/
|
|
163
|
-
- [ZenFG Core concepts](https://github.com/uinosoft/zenfg/blob/
|
|
164
|
-
- [ZenFG documentation index](https://github.com/uinosoft/zenfg/blob/
|
|
111
|
+
- [`@zenfg/snapshot`](https://github.com/uinosoft/zenfg/blob/npm/inspector/v0.1.0-beta.4/packages/snapshot/README.md)
|
|
112
|
+
- [ZenFG Core concepts](https://github.com/uinosoft/zenfg/blob/npm/inspector/v0.1.0-beta.4/docs/core-concepts.md)
|
|
113
|
+
- [ZenFG documentation index](https://github.com/uinosoft/zenfg/blob/npm/inspector/v0.1.0-beta.4/docs/README.md)
|
|
114
|
+
|
|
115
|
+
## Documentation and versions
|
|
116
|
+
|
|
117
|
+
<!-- generated:documentation:start -->
|
|
118
|
+
This README describes **@zenfg/inspector 0.1.0-beta.4**. Registry badges show the current published channel, not your installed version.
|
|
119
|
+
|
|
120
|
+
- Exact installed APIs: follow `package.json` → `exports` → `dist/*.d.ts`; declaration maps point to the included `src/`. Only declared export paths are public.
|
|
121
|
+
- [Online guide (development branch)](https://uinosoft.github.io/zenfg/docs/packages/inspector.html). The site may describe changes newer than this package.
|
|
122
|
+
- [TypeScript API (development branch)](https://uinosoft.github.io/zenfg/docs/api/inspector/).
|
|
123
|
+
- [Source and documentation for this release](https://github.com/uinosoft/zenfg/tree/npm/inspector/v0.1.0-beta.4/packages/inspector).
|
|
124
|
+
- [Shared concepts for this release](https://github.com/uinosoft/zenfg/blob/npm/inspector/v0.1.0-beta.4/docs/core-concepts.md) and [compatibility](https://github.com/uinosoft/zenfg/blob/npm/inspector/v0.1.0-beta.4/docs/compatibility.md).
|
|
125
|
+
- [Plain Markdown documentation index (development branch)](https://uinosoft.github.io/zenfg/docs/llms.txt).
|
|
126
|
+
- Local guides: [workbench](./GUIDE.md) and [themes](./THEMING.md).
|
|
127
|
+
<!-- generated:documentation:end -->
|
|
128
|
+
|
|
129
|
+
## CPU and GPU capture
|
|
130
|
+
|
|
131
|
+
The Capture action always requests CPU and GPU together. Providers receive
|
|
132
|
+
a `FrameGraphCaptureRequest` and must forward its timing mode to the runtime.
|
|
133
|
+
Timing is collected only for capture frames; imported data and normal frames are unchanged.
|
|
134
|
+
CPU columns, sorting, group sums and coverage include all retained node kinds.
|
|
135
|
+
CPU execute total and GPU span remain separate. Missing, culled and real zero
|
|
136
|
+
readings are distinct; zero does not guarantee zero CPU cost.
|
package/THEMING.md
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# Inspector themes
|
|
2
|
+
|
|
3
|
+
The public styling contract is the `--zfgi-*` CSS custom properties. Inspector
|
|
4
|
+
ships complete Tokyo Night Storm defaults, supports partial host overrides, and
|
|
5
|
+
does not require a base theme, theme name, registration, or browser storage.
|
|
6
|
+
Theme changes are scoped to one Inspector. Snapshot data never contains themes.
|
|
7
|
+
|
|
8
|
+
## Official presets and custom themes
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
import { mountFrameGraphInspector } from '@zenfg/inspector';
|
|
12
|
+
import { tokyoNightStorm, tokyoNightLight, type InspectorTheme } from '@zenfg/inspector/theme';
|
|
13
|
+
|
|
14
|
+
const inspector = mountFrameGraphInspector(host, { theme: tokyoNightLight });
|
|
15
|
+
inspector.setTheme(tokyoNightStorm);
|
|
16
|
+
|
|
17
|
+
const brandTheme: InspectorTheme = {
|
|
18
|
+
...tokyoNightLight,
|
|
19
|
+
variables: { ...tokyoNightLight.variables, '--zfgi-accent': '#2959aa' },
|
|
20
|
+
};
|
|
21
|
+
inspector.setTheme(brandTheme);
|
|
22
|
+
inspector.setTheme(null); // Restore host CSS and component defaults.
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Both presets are ordinary immutable `InspectorTheme` objects. The pure `/theme`
|
|
26
|
+
entry can be imported without a DOM and does not load Cytoscape or ELK. Hosts
|
|
27
|
+
can also use its shared `visualThemes` and `visualMetrics` foundations.
|
|
28
|
+
|
|
29
|
+
`setTheme()` replaces the API's current variable set on `inspector.dom.style`
|
|
30
|
+
and automatically synchronizes the graph. Omitted entries do not retain the
|
|
31
|
+
previous preset's colors. Reset restores pre-existing inline declarations and
|
|
32
|
+
leaves unrelated styles and subsequently edited declarations alone. Root inline
|
|
33
|
+
variables take precedence over inherited host variables, following normal CSS.
|
|
34
|
+
|
|
35
|
+
`colorScheme: 'dark' | 'light'` maps to `--zfgi-color-scheme`; do not repeat it
|
|
36
|
+
inside `variables`. It controls native browser appearance, not palette choice.
|
|
37
|
+
The component does not infer light colors from a light background or this hint.
|
|
38
|
+
|
|
39
|
+
## CSS-only use
|
|
40
|
+
|
|
41
|
+
Static variables on the host are picked up at mount and graph initialization:
|
|
42
|
+
|
|
43
|
+
```css
|
|
44
|
+
.inspector-host {
|
|
45
|
+
--zfgi-accent: var(--app-accent, #7aa2f7);
|
|
46
|
+
--zfgi-font-ui: system-ui, sans-serif;
|
|
47
|
+
--zfgi-graph-render-stroke: #9ece6a;
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
No JS theme call is required. Unspecified variables use CSS fallbacks. The
|
|
52
|
+
component does not write a full inline theme during default mounting, so parent
|
|
53
|
+
variables inherit normally. Configure dependent overrides on the same container:
|
|
54
|
+
CSS custom-property references are resolved where they are declared.
|
|
55
|
+
|
|
56
|
+
For complete CSS presets, explicitly import the optional stylesheet:
|
|
57
|
+
|
|
58
|
+
```css
|
|
59
|
+
@import '@zenfg/inspector/themes.css';
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
```html
|
|
63
|
+
<div class="inspector-host" data-zfgi-theme="tokyo-night-light"></div>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
The other preset selector is `data-zfgi-theme="tokyo-night-storm"`. The stylesheet
|
|
67
|
+
does not select a global theme; declarations only apply to matching containers.
|
|
68
|
+
Its values are generated from the same definitions as the JavaScript presets.
|
|
69
|
+
|
|
70
|
+
## Dynamic CSS and graph synchronization
|
|
71
|
+
|
|
72
|
+
```ts
|
|
73
|
+
host.dataset.zfgiTheme = 'tokyo-night-light';
|
|
74
|
+
inspector.refreshTheme();
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
DOM styling updates through CSS. Cytoscape consumes resolved values rather than
|
|
78
|
+
browser CSS, so call `refreshTheme()` after changing host variables, classes,
|
|
79
|
+
theme attributes, or media-query-dependent values. JS `setTheme()` already does
|
|
80
|
+
this. Refresh reads CSS without rewriting variables. No global observers or
|
|
81
|
+
polling are installed; hidden graphs also refresh when shown again.
|
|
82
|
+
|
|
83
|
+
Palette changes keep the graph instance, positions, pan/zoom, selection, group
|
|
84
|
+
expansion, current views, filters, detail state, and scroll positions. Graph font
|
|
85
|
+
changes update label measurement and layout while preserving zoom and an anchor.
|
|
86
|
+
|
|
87
|
+
## Supported variables
|
|
88
|
+
|
|
89
|
+
All names below have the `--zfgi-` prefix. `InspectorThemeVariables` provides
|
|
90
|
+
the exhaustive TypeScript key list. Values use CSS syntax: lengths such as
|
|
91
|
+
`13px`, font-family stacks, colors including `var()` and `color-mix()`, and
|
|
92
|
+
unitless opacity or scale values. Use positive font sizes and widths, opacity
|
|
93
|
+
in the range 0–1, and non-negative arrow scale.
|
|
94
|
+
|
|
95
|
+
| Group | Names after the prefix |
|
|
96
|
+
| --- | --- |
|
|
97
|
+
| Surfaces | `canvas`, `background`, `surface`, `surface-raised`, `surface-hover` |
|
|
98
|
+
| Text and emphasis | `text`, `text-secondary`, `muted`, `accent`, `accent-soft`, `accent-hover` |
|
|
99
|
+
| Boundaries and feedback | `border`, `border-subtle`, `border-strong`, `success`, `warning`, `danger`, `shadow`, `backdrop` |
|
|
100
|
+
| Typography | `font-ui`, `font-mono`, `font-size`, `font-size-small` |
|
|
101
|
+
| Dimensions | `control-height`, `row-height`, `radius-sm`, `radius-md`, `space-1`, `space-2`, `space-3`, `space-4` |
|
|
102
|
+
| Native appearance | `color-scheme` (JS uses the separate `colorScheme` field) |
|
|
103
|
+
| Graph labels | `graph-text`, `graph-muted`, `graph-font-family`, `graph-font-size` |
|
|
104
|
+
| Graph categories | `graph-{category}-stroke`, `graph-{category}-fill` |
|
|
105
|
+
| Graph groups | `graph-group-stroke`, `graph-group-fill`, `graph-group-alternate-fill`, `graph-group-opacity`, `graph-group-border-width` |
|
|
106
|
+
| Graph relationships | `graph-value`, `graph-ordering`, `graph-read`, `graph-write`, `graph-edge-width`, `graph-edge-opacity`, `graph-ordering-opacity`, `graph-arrow-scale` |
|
|
107
|
+
| Graph states | `graph-hover`, `graph-selected`, `graph-hover-width`, `graph-selected-width`, `graph-node-border-width`, `graph-culled-stroke`, `graph-culled-fill` |
|
|
108
|
+
| Graph press indicator | `graph-active-bg`, `graph-active-bg-opacity`, `graph-active-bg-size` (radius in CSS pixels, default `12px`; opacity defaults to `0.08`) |
|
|
109
|
+
| Derived category fills | `graph-tint` (18% in Storm, 8% in Light) |
|
|
110
|
+
|
|
111
|
+
Categories are `render`, `compute`, `copy`, `clear`, `command`, `external`,
|
|
112
|
+
`declaration`, `output`, `texture`, and `buffer`. Category colors also drive
|
|
113
|
+
legends, type labels, and resource bars. Semantic shapes and layout algorithms
|
|
114
|
+
are not theme parameters. Hover/selection emphasize outlines without replacing
|
|
115
|
+
node shapes or category fills.
|
|
116
|
+
|
|
117
|
+
The existing `--zenfg-inspector-*` names for background, surfaces, borders,
|
|
118
|
+
text, accent, status colors, font families, and radii remain fallback aliases.
|
|
119
|
+
When both are supplied, the corresponding new `--zfgi-*` value wins. Internal
|
|
120
|
+
`--fgd-*` properties and presentation classes are not the public theme contract.
|
|
121
|
+
|
|
122
|
+
Official presets target at least 7:1 node-text contrast, 4.5:1 UI text contrast,
|
|
123
|
+
and 3:1 identifying borders and edges. Custom colors should preserve these
|
|
124
|
+
relationships; theme application does not automatically correct a custom palette.
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import type { FrameGraphCaptureRequest } from './capture.ts';
|
|
2
|
+
import type { InspectorTheme } from './theme.ts';
|
|
1
3
|
import { type FrameGraphSnapshot } from '@zenfg/snapshot';
|
|
2
4
|
/** Construction and safety limits for an embedded {@link FrameGraphInspector}. */
|
|
3
5
|
export type FrameGraphInspectorOptions = {
|
|
6
|
+
/** Optional CSS theme. Without one, host variables inherit over the Storm defaults. */
|
|
7
|
+
theme?: InspectorTheme;
|
|
4
8
|
/**
|
|
5
9
|
* Product label shown in the workbench command bar. Pass `false` to hide
|
|
6
10
|
* visible branding while retaining the inspector's accessible name.
|
|
@@ -12,7 +16,7 @@ export type FrameGraphInspectorOptions = {
|
|
|
12
16
|
* Produces a live snapshot when capture is requested. The inspector awaits
|
|
13
17
|
* promises and displays thrown or rejected errors in its status area.
|
|
14
18
|
*/
|
|
15
|
-
captureSnapshot?: () => FrameGraphSnapshot | undefined | Promise<FrameGraphSnapshot | undefined>;
|
|
19
|
+
captureSnapshot?: (request: FrameGraphCaptureRequest) => FrameGraphSnapshot | undefined | Promise<FrameGraphSnapshot | undefined>;
|
|
16
20
|
/**
|
|
17
21
|
* Maximum accepted import size in bytes.
|
|
18
22
|
*
|
|
@@ -45,10 +49,12 @@ export type FrameGraphInspectorOptions = {
|
|
|
45
49
|
export declare class FrameGraphInspector {
|
|
46
50
|
/** Root element owned by this inspector instance. */
|
|
47
51
|
readonly dom: HTMLElement;
|
|
52
|
+
private readonly themeController;
|
|
48
53
|
private readonly body;
|
|
49
54
|
private readonly content;
|
|
50
55
|
private readonly dropOverlay;
|
|
51
56
|
private readonly groupsButton;
|
|
57
|
+
private readonly declarationsButton;
|
|
52
58
|
private readonly collapseGroupsButton;
|
|
53
59
|
private readonly graphView;
|
|
54
60
|
private readonly workbench;
|
|
@@ -69,6 +75,7 @@ export declare class FrameGraphInspector {
|
|
|
69
75
|
private copyFeedbackTimeout;
|
|
70
76
|
private readonly maxImportBytes;
|
|
71
77
|
private dragDepth;
|
|
78
|
+
private revealRevision;
|
|
72
79
|
private readonly handleDragEnter;
|
|
73
80
|
private readonly handleDragOver;
|
|
74
81
|
private readonly handleDragLeave;
|
|
@@ -81,11 +88,21 @@ export declare class FrameGraphInspector {
|
|
|
81
88
|
* or if browser DOM globals are unavailable.
|
|
82
89
|
*/
|
|
83
90
|
constructor(options?: FrameGraphInspectorOptions);
|
|
91
|
+
/** Replace API-applied variables on this instance, then synchronize graph styles.
|
|
92
|
+
* Pass null to restore host CSS and defaults. Does not change capture or interaction state.
|
|
93
|
+
*/
|
|
94
|
+
setTheme(theme: InspectorTheme | null): void;
|
|
95
|
+
/** Re-read final CSS values after external CSS changes and refresh graph and legend.
|
|
96
|
+
* Does not write theme variables, recapture, fit, or rebuild the component.
|
|
97
|
+
*/
|
|
98
|
+
refreshTheme(): void;
|
|
84
99
|
/**
|
|
85
100
|
* Replaces or removes the live-capture provider.
|
|
86
101
|
*
|
|
87
102
|
* @remarks Installing a provider may immediately begin an asynchronous
|
|
88
|
-
* capture when no snapshot is displayed.
|
|
103
|
+
* capture when no snapshot is displayed. Replacing or removing a provider
|
|
104
|
+
* invalidates its pending capture results without cancelling the provider
|
|
105
|
+
* promise. An already displayed snapshot and any pending import are preserved.
|
|
89
106
|
*/
|
|
90
107
|
setCaptureSnapshotProvider(provider: FrameGraphInspectorOptions['captureSnapshot']): void;
|
|
91
108
|
/**
|
|
@@ -97,9 +114,9 @@ export declare class FrameGraphInspector {
|
|
|
97
114
|
*/
|
|
98
115
|
captureSnapshot(): Promise<void>;
|
|
99
116
|
/**
|
|
100
|
-
* Validates and synchronously displays a programmatic Snapshot 1.
|
|
117
|
+
* Validates and synchronously displays a programmatic Snapshot 1.2 value.
|
|
101
118
|
*
|
|
102
|
-
* @throws {@link FrameGraphSnapshotValidationError} if `snapshot` is invalid.
|
|
119
|
+
* @throws {@link @zenfg/snapshot!index.FrameGraphSnapshotValidationError | FrameGraphSnapshotValidationError} if `snapshot` is invalid.
|
|
103
120
|
*/
|
|
104
121
|
setSnapshot(snapshot: FrameGraphSnapshot): void;
|
|
105
122
|
/** Returns the currently displayed canonical snapshot, if any. */
|
|
@@ -130,8 +147,10 @@ export declare class FrameGraphInspector {
|
|
|
130
147
|
private updateCaptureActions;
|
|
131
148
|
private maybeAutoCapture;
|
|
132
149
|
private handleSelect;
|
|
150
|
+
private handleReveal;
|
|
133
151
|
private handleHover;
|
|
134
152
|
private updateGraphControls;
|
|
153
|
+
private toggleDeclarations;
|
|
135
154
|
private toggleGroups;
|
|
136
155
|
private toggleGroup;
|
|
137
156
|
private collapseAllGroups;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrameGraphInspector.d.ts","sourceRoot":"","sources":["../src/FrameGraphInspector.ts"],"names":[],"mappings":"AAAA,OAAO,EAKN,KAAK,kBAAkB,EACvB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"FrameGraphInspector.d.ts","sourceRoot":"","sources":["../src/FrameGraphInspector.ts"],"names":[],"mappings":"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"}
|