@capillaryjs/capillary-devtools 1.0.0
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/CHANGELOG.md +18 -0
- package/LICENSE +55 -0
- package/NOTICE +2 -0
- package/README.md +142 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/model/TracePlayback.d.ts +28 -0
- package/dist/model/TracePlayback.d.ts.map +1 -0
- package/dist/model/TracePlayback.js +63 -0
- package/dist/model/TracePlayback.js.map +1 -0
- package/dist/model/TraceRecorder.d.ts +58 -0
- package/dist/model/TraceRecorder.d.ts.map +1 -0
- package/dist/model/TraceRecorder.js +269 -0
- package/dist/model/TraceRecorder.js.map +1 -0
- package/dist/model/TraceSelection.d.ts +18 -0
- package/dist/model/TraceSelection.d.ts.map +1 -0
- package/dist/model/TraceSelection.js +17 -0
- package/dist/model/TraceSelection.js.map +1 -0
- package/dist/model/index.d.ts +11 -0
- package/dist/model/index.d.ts.map +1 -0
- package/dist/model/index.js +6 -0
- package/dist/model/index.js.map +1 -0
- package/dist/model/projection.d.ts +37 -0
- package/dist/model/projection.d.ts.map +1 -0
- package/dist/model/projection.js +207 -0
- package/dist/model/projection.js.map +1 -0
- package/dist/model/scope.d.ts +4 -0
- package/dist/model/scope.d.ts.map +1 -0
- package/dist/model/scope.js +4 -0
- package/dist/model/scope.js.map +1 -0
- package/dist/model/types.d.ts +76 -0
- package/dist/model/types.d.ts.map +1 -0
- package/dist/model/types.js +2 -0
- package/dist/model/types.js.map +1 -0
- package/dist/views/ActivityOverviewView.d.ts +6 -0
- package/dist/views/ActivityOverviewView.d.ts.map +1 -0
- package/dist/views/ActivityOverviewView.js +12 -0
- package/dist/views/ActivityOverviewView.js.map +1 -0
- package/dist/views/CausalTraceView.d.ts +7 -0
- package/dist/views/CausalTraceView.d.ts.map +1 -0
- package/dist/views/CausalTraceView.js +34 -0
- package/dist/views/CausalTraceView.js.map +1 -0
- package/dist/views/ChronologicalTraceView.d.ts +6 -0
- package/dist/views/ChronologicalTraceView.d.ts.map +1 -0
- package/dist/views/ChronologicalTraceView.js +10 -0
- package/dist/views/ChronologicalTraceView.js.map +1 -0
- package/dist/views/FlowGraphView.d.ts +7 -0
- package/dist/views/FlowGraphView.d.ts.map +1 -0
- package/dist/views/FlowGraphView.js +47 -0
- package/dist/views/FlowGraphView.js.map +1 -0
- package/dist/views/TraceDetailsView.d.ts +6 -0
- package/dist/views/TraceDetailsView.d.ts.map +1 -0
- package/dist/views/TraceDetailsView.js +28 -0
- package/dist/views/TraceDetailsView.js.map +1 -0
- package/dist/views/TraceInspector.d.ts +9 -0
- package/dist/views/TraceInspector.d.ts.map +1 -0
- package/dist/views/TraceInspector.js +40 -0
- package/dist/views/TraceInspector.js.map +1 -0
- package/dist/views/TracePlaybackControls.d.ts +7 -0
- package/dist/views/TracePlaybackControls.d.ts.map +1 -0
- package/dist/views/TracePlaybackControls.js +18 -0
- package/dist/views/TracePlaybackControls.js.map +1 -0
- package/dist/views/TraceTimelineView.d.ts +6 -0
- package/dist/views/TraceTimelineView.d.ts.map +1 -0
- package/dist/views/TraceTimelineView.js +11 -0
- package/dist/views/TraceTimelineView.js.map +1 -0
- package/dist/views/shared.d.ts +23 -0
- package/dist/views/shared.d.ts.map +1 -0
- package/dist/views/shared.js +52 -0
- package/dist/views/shared.js.map +1 -0
- package/package.json +73 -0
- package/styles/structural.css +331 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Component } from '@capillaryjs/capillary-ui';
|
|
2
|
+
import { TraceRecorder } from '../model/TraceRecorder.js';
|
|
3
|
+
import { devtoolsDiagnosticScope } from '../model/scope.js';
|
|
4
|
+
import { filterTrace } from '../model/projection.js';
|
|
5
|
+
/** Shared view lifecycle; importing a view does not import sibling views. */
|
|
6
|
+
export class TraceView extends Component {
|
|
7
|
+
static diagnosticScope = devtoolsDiagnosticScope;
|
|
8
|
+
static css = `
|
|
9
|
+
& { display: block; min-width: 0; color: var(--cap-trace-text, #192c3d); font: 13px/1.5 system-ui, sans-serif; }
|
|
10
|
+
& button, & select, & input { font: inherit; }
|
|
11
|
+
& button, & select { color: inherit; background: var(--cap-trace-surface, #fff); border: 1px solid var(--cap-trace-line, #cad4de); border-radius: 5px; padding: .35rem .55rem; }
|
|
12
|
+
& button { cursor: pointer; text-align: start; }
|
|
13
|
+
& button:disabled { cursor: default; opacity: .55; }
|
|
14
|
+
& :focus-visible { outline: 3px solid var(--cap-trace-accent, #005bb8); outline-offset: 2px; }
|
|
15
|
+
& button[aria-pressed="true"], & button[aria-current="step"] { outline: 2px solid var(--cap-trace-accent, #005bb8); outline-offset: -2px; background: var(--cap-trace-selected, #eaf3ff); }
|
|
16
|
+
& h2, & h3 { font: 650 1rem/1.4 system-ui, sans-serif; margin: 0 0 .75rem; }
|
|
17
|
+
& p { margin: .4rem 0; }
|
|
18
|
+
& small { display: block; color: var(--cap-trace-muted, #526477); }
|
|
19
|
+
& .trace-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; }
|
|
20
|
+
& .trace-pane { padding: 1rem; border: 1px solid var(--cap-trace-line, #cad4de); border-radius: 8px; background: var(--cap-trace-surface, #fff); min-width: 0; }
|
|
21
|
+
& .trace-scroll { overflow: auto; max-height: 32rem; }
|
|
22
|
+
& .trace-empty { padding: 1rem 0; color: var(--cap-trace-muted, #526477); }
|
|
23
|
+
& table { width: 100%; border-collapse: collapse; text-align: start; }
|
|
24
|
+
& th, & td { padding: .4rem; border-bottom: 1px solid var(--cap-trace-line, #cad4de); vertical-align: top; }
|
|
25
|
+
& dl { display: grid; grid-template-columns: minmax(6rem, auto) minmax(0, 1fr); gap: .4rem 1rem; }
|
|
26
|
+
& dt { font-weight: 600; } & dd { margin: 0; overflow-wrap: anywhere; }
|
|
27
|
+
& .trace-limit { border-inline-start: 3px solid var(--cap-trace-warning, #ae6500); padding-inline-start: .7rem; }
|
|
28
|
+
`;
|
|
29
|
+
initialize() {
|
|
30
|
+
if (this.props.recording instanceof TraceRecorder)
|
|
31
|
+
this.watch(this.props.recording.revision);
|
|
32
|
+
this.watch(this.props.selection.state);
|
|
33
|
+
if (this.props.playback)
|
|
34
|
+
this.watch(this.props.playback.state);
|
|
35
|
+
}
|
|
36
|
+
get recording() {
|
|
37
|
+
return this.props.recording instanceof TraceRecorder ? this.props.recording.snapshot() : this.props.recording;
|
|
38
|
+
}
|
|
39
|
+
get events() {
|
|
40
|
+
const state = this.props.selection.state.get();
|
|
41
|
+
return state.rootId ? filterTrace(this.recording, state) : [];
|
|
42
|
+
}
|
|
43
|
+
get cursor() {
|
|
44
|
+
return Math.min(this.events.length - 1, this.props.playback?.state.get().cursor ?? this.events.length - 1);
|
|
45
|
+
}
|
|
46
|
+
label(nodeId) { return this.recording.nodes.find((node) => node.id === nodeId)?.label ?? nodeId; }
|
|
47
|
+
choose(event) {
|
|
48
|
+
this.props.selection.selectEvent(event.id, event.nodeId);
|
|
49
|
+
this.props.playback?.seek(this.events.findIndex((candidate) => candidate.id === event.id), this.events.length);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/views/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,2BAA2B,CAAA;AAEnD,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAC,uBAAuB,EAAC,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAA;AAWlD,6EAA6E;AAC7E,MAAM,OAAgB,SAAU,SAAQ,SAAyB;IAC7D,MAAM,CAAU,eAAe,GAAG,uBAAuB,CAAA;IACzD,MAAM,CAAU,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;KAoBrB,CAAA;IACQ,UAAU;QACf,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,YAAY,aAAa;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QAC5F,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QACtC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAClE,CAAC;IACD,IAAc,SAAS;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,YAAY,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAA;IACjH,CAAC;IACD,IAAc,MAAM;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;QAC9C,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACjE,CAAC;IACD,IAAc,MAAM;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC9G,CAAC;IACS,KAAK,CAAC,MAAc,IAAY,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,KAAK,IAAI,MAAM,CAAA,CAAC,CAAC;IACjH,MAAM,CAAC,KAAiB;QAC9B,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QACxD,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAClH,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@capillaryjs/capillary-devtools",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"private": false,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"description": "Bounded causal recordings and composable Capillary flow inspection tools.",
|
|
7
|
+
"license": "Apache-2.0",
|
|
8
|
+
"author": {
|
|
9
|
+
"name": "Sylwell Software",
|
|
10
|
+
"email": "npm@sylwellsoftware.com",
|
|
11
|
+
"url": "https://sylwellsoftware.com"
|
|
12
|
+
},
|
|
13
|
+
"repository": {
|
|
14
|
+
"type": "git",
|
|
15
|
+
"url": "git+https://github.com/capillaryjs/capillaryjs.git",
|
|
16
|
+
"directory": "packages/capillary-devtools"
|
|
17
|
+
},
|
|
18
|
+
"homepage": "https://github.com/capillaryjs/capillaryjs#readme",
|
|
19
|
+
"bugs": {
|
|
20
|
+
"url": "https://github.com/capillaryjs/capillaryjs/issues"
|
|
21
|
+
},
|
|
22
|
+
"publishConfig": {
|
|
23
|
+
"access": "public"
|
|
24
|
+
},
|
|
25
|
+
"main": "dist/index.js",
|
|
26
|
+
"module": "dist/index.js",
|
|
27
|
+
"types": "dist/index.d.ts",
|
|
28
|
+
"exports": {
|
|
29
|
+
".": {
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"import": "./dist/index.js"
|
|
32
|
+
},
|
|
33
|
+
"./model": {
|
|
34
|
+
"types": "./dist/model/index.d.ts",
|
|
35
|
+
"import": "./dist/model/index.js"
|
|
36
|
+
},
|
|
37
|
+
"./views/*": {
|
|
38
|
+
"types": "./dist/views/*.d.ts",
|
|
39
|
+
"import": "./dist/views/*.js"
|
|
40
|
+
},
|
|
41
|
+
"./styles/structural.css": "./styles/structural.css"
|
|
42
|
+
},
|
|
43
|
+
"files": [
|
|
44
|
+
"dist",
|
|
45
|
+
"styles",
|
|
46
|
+
"CHANGELOG.md",
|
|
47
|
+
"LICENSE",
|
|
48
|
+
"NOTICE"
|
|
49
|
+
],
|
|
50
|
+
"sideEffects": [
|
|
51
|
+
"./styles/*.css"
|
|
52
|
+
],
|
|
53
|
+
"scripts": {
|
|
54
|
+
"build": "tsc -p tsconfig.build.json && node --import tsx scripts/build-structural-css.mjs",
|
|
55
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
56
|
+
"test": "node --import tsx --test test/*.test.ts",
|
|
57
|
+
"test:types:consumer": "tsc -p test-types/consumer/tsconfig.json --noEmit",
|
|
58
|
+
"prepack": "pnpm typecheck && pnpm test && pnpm build && pnpm test:types:consumer"
|
|
59
|
+
},
|
|
60
|
+
"peerDependencies": {
|
|
61
|
+
"@capillaryjs/capillary": "^1.2.0",
|
|
62
|
+
"@capillaryjs/capillary-ui": "^1.2.0"
|
|
63
|
+
},
|
|
64
|
+
"devDependencies": {
|
|
65
|
+
"@capillaryjs/capillary": "^1.2.0",
|
|
66
|
+
"@capillaryjs/capillary-ui": "^1.2.0"
|
|
67
|
+
},
|
|
68
|
+
"engines": {
|
|
69
|
+
"node": ">=22",
|
|
70
|
+
"pnpm": ">=10"
|
|
71
|
+
},
|
|
72
|
+
"packageManager": "pnpm@10.11.0"
|
|
73
|
+
}
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
/* Generated by scripts/build-structural-css.mjs. */
|
|
2
|
+
.cap-fill-horizontal,
|
|
3
|
+
.cap-fill-vertical {
|
|
4
|
+
box-sizing: border-box;
|
|
5
|
+
background: var(--application-background);
|
|
6
|
+
color: var(--ui-color);
|
|
7
|
+
font-family: var(--font-family);
|
|
8
|
+
font-size: var(--font-size);
|
|
9
|
+
line-height: var(--line-height);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.cap-fill-horizontal {
|
|
13
|
+
width: 100vw;
|
|
14
|
+
max-width: 100vw;
|
|
15
|
+
min-width: 0;
|
|
16
|
+
overflow-x: auto;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.cap-fill-vertical {
|
|
20
|
+
height: 100vh;
|
|
21
|
+
max-height: 100vh;
|
|
22
|
+
min-height: 0;
|
|
23
|
+
overflow-y: auto;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.cap-layout-horizontal,
|
|
27
|
+
.cap-layout-vertical {
|
|
28
|
+
display: flex;
|
|
29
|
+
align-items: stretch;
|
|
30
|
+
min-inline-size: 0;
|
|
31
|
+
min-block-size: 0;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.cap-layout-horizontal {
|
|
35
|
+
flex-direction: row;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.cap-layout-vertical {
|
|
39
|
+
flex-direction: column;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.cap-size-natural {
|
|
43
|
+
flex: 0 0 auto;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.cap-size-flexible {
|
|
47
|
+
flex: 1 1 0;
|
|
48
|
+
min-inline-size: 0;
|
|
49
|
+
min-block-size: 0;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.cap-scroll {
|
|
53
|
+
overflow: auto;
|
|
54
|
+
min-inline-size: 0;
|
|
55
|
+
min-block-size: 0;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.colored {
|
|
59
|
+
--colored-base-bg:
|
|
60
|
+
linear-gradient(
|
|
61
|
+
15deg,
|
|
62
|
+
var(--c1) 0%,
|
|
63
|
+
var(--c2) 65%,
|
|
64
|
+
var(--c2) 65%,
|
|
65
|
+
var(--c3) 100%
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
background: var(--colored-base-bg);
|
|
69
|
+
box-shadow: var(--colored-shadow);
|
|
70
|
+
border-radius: var(--ui-border-radius);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.app-footer.island,
|
|
74
|
+
.island {
|
|
75
|
+
box-sizing: border-box;
|
|
76
|
+
min-width: 0;
|
|
77
|
+
min-height: 0;
|
|
78
|
+
margin: var(--island-margin);
|
|
79
|
+
padding: var(--island-padding);
|
|
80
|
+
background: var(--island-background);
|
|
81
|
+
border: var(--island-border);
|
|
82
|
+
border-radius: var(--island-radius);
|
|
83
|
+
box-shadow: var(--island-shadow);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.cap-fill-horizontal.island,
|
|
87
|
+
.cap-fill-horizontal .island {
|
|
88
|
+
max-width: calc(100% - (2 * var(--island-margin)));
|
|
89
|
+
overflow-x: auto;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.cap-fill-vertical.island,
|
|
93
|
+
.cap-fill-vertical .island {
|
|
94
|
+
max-height: calc(100% - (2 * var(--island-margin)));
|
|
95
|
+
overflow-y: auto;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
label[data-cap] {
|
|
99
|
+
user-select: none;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
cap-traceinspector,
|
|
103
|
+
cap-traceflow,
|
|
104
|
+
cap-causaltrace,
|
|
105
|
+
cap-chronologicaltrace,
|
|
106
|
+
cap-tracedetails,
|
|
107
|
+
cap-tracetimeline,
|
|
108
|
+
cap-traceplayback,
|
|
109
|
+
cap-traceactivity { display: block; min-width: 0; color: var(--cap-trace-text, #192c3d); font: 13px/1.5 system-ui, sans-serif; }
|
|
110
|
+
cap-traceinspector button,
|
|
111
|
+
cap-traceflow button,
|
|
112
|
+
cap-causaltrace button,
|
|
113
|
+
cap-chronologicaltrace button,
|
|
114
|
+
cap-tracedetails button,
|
|
115
|
+
cap-tracetimeline button,
|
|
116
|
+
cap-traceplayback button,
|
|
117
|
+
cap-traceactivity button,
|
|
118
|
+
cap-traceinspector select,
|
|
119
|
+
cap-traceflow select,
|
|
120
|
+
cap-causaltrace select,
|
|
121
|
+
cap-chronologicaltrace select,
|
|
122
|
+
cap-tracedetails select,
|
|
123
|
+
cap-tracetimeline select,
|
|
124
|
+
cap-traceplayback select,
|
|
125
|
+
cap-traceactivity select,
|
|
126
|
+
cap-traceinspector input,
|
|
127
|
+
cap-traceflow input,
|
|
128
|
+
cap-causaltrace input,
|
|
129
|
+
cap-chronologicaltrace input,
|
|
130
|
+
cap-tracedetails input,
|
|
131
|
+
cap-tracetimeline input,
|
|
132
|
+
cap-traceplayback input,
|
|
133
|
+
cap-traceactivity input { font: inherit; }
|
|
134
|
+
cap-traceinspector button,
|
|
135
|
+
cap-traceflow button,
|
|
136
|
+
cap-causaltrace button,
|
|
137
|
+
cap-chronologicaltrace button,
|
|
138
|
+
cap-tracedetails button,
|
|
139
|
+
cap-tracetimeline button,
|
|
140
|
+
cap-traceplayback button,
|
|
141
|
+
cap-traceactivity button,
|
|
142
|
+
cap-traceinspector select,
|
|
143
|
+
cap-traceflow select,
|
|
144
|
+
cap-causaltrace select,
|
|
145
|
+
cap-chronologicaltrace select,
|
|
146
|
+
cap-tracedetails select,
|
|
147
|
+
cap-tracetimeline select,
|
|
148
|
+
cap-traceplayback select,
|
|
149
|
+
cap-traceactivity select { color: inherit; background: var(--cap-trace-surface, #fff); border: 1px solid var(--cap-trace-line, #cad4de); border-radius: 5px; padding: .35rem .55rem; }
|
|
150
|
+
cap-traceinspector button,
|
|
151
|
+
cap-traceflow button,
|
|
152
|
+
cap-causaltrace button,
|
|
153
|
+
cap-chronologicaltrace button,
|
|
154
|
+
cap-tracedetails button,
|
|
155
|
+
cap-tracetimeline button,
|
|
156
|
+
cap-traceplayback button,
|
|
157
|
+
cap-traceactivity button { cursor: pointer; text-align: start; }
|
|
158
|
+
cap-traceinspector button:disabled,
|
|
159
|
+
cap-traceflow button:disabled,
|
|
160
|
+
cap-causaltrace button:disabled,
|
|
161
|
+
cap-chronologicaltrace button:disabled,
|
|
162
|
+
cap-tracedetails button:disabled,
|
|
163
|
+
cap-tracetimeline button:disabled,
|
|
164
|
+
cap-traceplayback button:disabled,
|
|
165
|
+
cap-traceactivity button:disabled { cursor: default; opacity: .55; }
|
|
166
|
+
cap-traceinspector :focus-visible,
|
|
167
|
+
cap-traceflow :focus-visible,
|
|
168
|
+
cap-causaltrace :focus-visible,
|
|
169
|
+
cap-chronologicaltrace :focus-visible,
|
|
170
|
+
cap-tracedetails :focus-visible,
|
|
171
|
+
cap-tracetimeline :focus-visible,
|
|
172
|
+
cap-traceplayback :focus-visible,
|
|
173
|
+
cap-traceactivity :focus-visible { outline: 3px solid var(--cap-trace-accent, #005bb8); outline-offset: 2px; }
|
|
174
|
+
cap-traceinspector button[aria-pressed="true"],
|
|
175
|
+
cap-traceflow button[aria-pressed="true"],
|
|
176
|
+
cap-causaltrace button[aria-pressed="true"],
|
|
177
|
+
cap-chronologicaltrace button[aria-pressed="true"],
|
|
178
|
+
cap-tracedetails button[aria-pressed="true"],
|
|
179
|
+
cap-tracetimeline button[aria-pressed="true"],
|
|
180
|
+
cap-traceplayback button[aria-pressed="true"],
|
|
181
|
+
cap-traceactivity button[aria-pressed="true"],
|
|
182
|
+
cap-traceinspector button[aria-current="step"],
|
|
183
|
+
cap-traceflow button[aria-current="step"],
|
|
184
|
+
cap-causaltrace button[aria-current="step"],
|
|
185
|
+
cap-chronologicaltrace button[aria-current="step"],
|
|
186
|
+
cap-tracedetails button[aria-current="step"],
|
|
187
|
+
cap-tracetimeline button[aria-current="step"],
|
|
188
|
+
cap-traceplayback button[aria-current="step"],
|
|
189
|
+
cap-traceactivity button[aria-current="step"] { outline: 2px solid var(--cap-trace-accent, #005bb8); outline-offset: -2px; background: var(--cap-trace-selected, #eaf3ff); }
|
|
190
|
+
cap-traceinspector h2,
|
|
191
|
+
cap-traceflow h2,
|
|
192
|
+
cap-causaltrace h2,
|
|
193
|
+
cap-chronologicaltrace h2,
|
|
194
|
+
cap-tracedetails h2,
|
|
195
|
+
cap-tracetimeline h2,
|
|
196
|
+
cap-traceplayback h2,
|
|
197
|
+
cap-traceactivity h2,
|
|
198
|
+
cap-traceinspector h3,
|
|
199
|
+
cap-traceflow h3,
|
|
200
|
+
cap-causaltrace h3,
|
|
201
|
+
cap-chronologicaltrace h3,
|
|
202
|
+
cap-tracedetails h3,
|
|
203
|
+
cap-tracetimeline h3,
|
|
204
|
+
cap-traceplayback h3,
|
|
205
|
+
cap-traceactivity h3 { font: 650 1rem/1.4 system-ui, sans-serif; margin: 0 0 .75rem; }
|
|
206
|
+
cap-traceinspector p,
|
|
207
|
+
cap-traceflow p,
|
|
208
|
+
cap-causaltrace p,
|
|
209
|
+
cap-chronologicaltrace p,
|
|
210
|
+
cap-tracedetails p,
|
|
211
|
+
cap-tracetimeline p,
|
|
212
|
+
cap-traceplayback p,
|
|
213
|
+
cap-traceactivity p { margin: .4rem 0; }
|
|
214
|
+
cap-traceinspector small,
|
|
215
|
+
cap-traceflow small,
|
|
216
|
+
cap-causaltrace small,
|
|
217
|
+
cap-chronologicaltrace small,
|
|
218
|
+
cap-tracedetails small,
|
|
219
|
+
cap-tracetimeline small,
|
|
220
|
+
cap-traceplayback small,
|
|
221
|
+
cap-traceactivity small { display: block; color: var(--cap-trace-muted, #526477); }
|
|
222
|
+
cap-traceinspector .trace-actions,
|
|
223
|
+
cap-traceflow .trace-actions,
|
|
224
|
+
cap-causaltrace .trace-actions,
|
|
225
|
+
cap-chronologicaltrace .trace-actions,
|
|
226
|
+
cap-tracedetails .trace-actions,
|
|
227
|
+
cap-tracetimeline .trace-actions,
|
|
228
|
+
cap-traceplayback .trace-actions,
|
|
229
|
+
cap-traceactivity .trace-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; }
|
|
230
|
+
cap-traceinspector .trace-pane,
|
|
231
|
+
cap-traceflow .trace-pane,
|
|
232
|
+
cap-causaltrace .trace-pane,
|
|
233
|
+
cap-chronologicaltrace .trace-pane,
|
|
234
|
+
cap-tracedetails .trace-pane,
|
|
235
|
+
cap-tracetimeline .trace-pane,
|
|
236
|
+
cap-traceplayback .trace-pane,
|
|
237
|
+
cap-traceactivity .trace-pane { padding: 1rem; border: 1px solid var(--cap-trace-line, #cad4de); border-radius: 8px; background: var(--cap-trace-surface, #fff); min-width: 0; }
|
|
238
|
+
cap-traceinspector .trace-scroll,
|
|
239
|
+
cap-traceflow .trace-scroll,
|
|
240
|
+
cap-causaltrace .trace-scroll,
|
|
241
|
+
cap-chronologicaltrace .trace-scroll,
|
|
242
|
+
cap-tracedetails .trace-scroll,
|
|
243
|
+
cap-tracetimeline .trace-scroll,
|
|
244
|
+
cap-traceplayback .trace-scroll,
|
|
245
|
+
cap-traceactivity .trace-scroll { overflow: auto; max-height: 32rem; }
|
|
246
|
+
cap-traceinspector .trace-empty,
|
|
247
|
+
cap-traceflow .trace-empty,
|
|
248
|
+
cap-causaltrace .trace-empty,
|
|
249
|
+
cap-chronologicaltrace .trace-empty,
|
|
250
|
+
cap-tracedetails .trace-empty,
|
|
251
|
+
cap-tracetimeline .trace-empty,
|
|
252
|
+
cap-traceplayback .trace-empty,
|
|
253
|
+
cap-traceactivity .trace-empty { padding: 1rem 0; color: var(--cap-trace-muted, #526477); }
|
|
254
|
+
cap-traceinspector table,
|
|
255
|
+
cap-traceflow table,
|
|
256
|
+
cap-causaltrace table,
|
|
257
|
+
cap-chronologicaltrace table,
|
|
258
|
+
cap-tracedetails table,
|
|
259
|
+
cap-tracetimeline table,
|
|
260
|
+
cap-traceplayback table,
|
|
261
|
+
cap-traceactivity table { width: 100%; border-collapse: collapse; text-align: start; }
|
|
262
|
+
cap-traceinspector th,
|
|
263
|
+
cap-traceflow th,
|
|
264
|
+
cap-causaltrace th,
|
|
265
|
+
cap-chronologicaltrace th,
|
|
266
|
+
cap-tracedetails th,
|
|
267
|
+
cap-tracetimeline th,
|
|
268
|
+
cap-traceplayback th,
|
|
269
|
+
cap-traceactivity th,
|
|
270
|
+
cap-traceinspector td,
|
|
271
|
+
cap-traceflow td,
|
|
272
|
+
cap-causaltrace td,
|
|
273
|
+
cap-chronologicaltrace td,
|
|
274
|
+
cap-tracedetails td,
|
|
275
|
+
cap-tracetimeline td,
|
|
276
|
+
cap-traceplayback td,
|
|
277
|
+
cap-traceactivity td { padding: .4rem; border-bottom: 1px solid var(--cap-trace-line, #cad4de); vertical-align: top; }
|
|
278
|
+
cap-traceinspector dl,
|
|
279
|
+
cap-traceflow dl,
|
|
280
|
+
cap-causaltrace dl,
|
|
281
|
+
cap-chronologicaltrace dl,
|
|
282
|
+
cap-tracedetails dl,
|
|
283
|
+
cap-tracetimeline dl,
|
|
284
|
+
cap-traceplayback dl,
|
|
285
|
+
cap-traceactivity dl { display: grid; grid-template-columns: minmax(6rem, auto) minmax(0, 1fr); gap: .4rem 1rem; }
|
|
286
|
+
cap-traceinspector dt,
|
|
287
|
+
cap-traceflow dt,
|
|
288
|
+
cap-causaltrace dt,
|
|
289
|
+
cap-chronologicaltrace dt,
|
|
290
|
+
cap-tracedetails dt,
|
|
291
|
+
cap-tracetimeline dt,
|
|
292
|
+
cap-traceplayback dt,
|
|
293
|
+
cap-traceactivity dt { font-weight: 600; } cap-traceinspector dd,
|
|
294
|
+
cap-traceflow dd,
|
|
295
|
+
cap-causaltrace dd,
|
|
296
|
+
cap-chronologicaltrace dd,
|
|
297
|
+
cap-tracedetails dd,
|
|
298
|
+
cap-tracetimeline dd,
|
|
299
|
+
cap-traceplayback dd,
|
|
300
|
+
cap-traceactivity dd { margin: 0; overflow-wrap: anywhere; }
|
|
301
|
+
cap-traceinspector .trace-limit,
|
|
302
|
+
cap-traceflow .trace-limit,
|
|
303
|
+
cap-causaltrace .trace-limit,
|
|
304
|
+
cap-chronologicaltrace .trace-limit,
|
|
305
|
+
cap-tracedetails .trace-limit,
|
|
306
|
+
cap-tracetimeline .trace-limit,
|
|
307
|
+
cap-traceplayback .trace-limit,
|
|
308
|
+
cap-traceactivity .trace-limit { border-inline-start: 3px solid var(--cap-trace-warning, #ae6500); padding-inline-start: .7rem; }
|
|
309
|
+
|
|
310
|
+
cap-traceinspector .trace-workbench { display: grid; grid-template-columns: minmax(12rem, 17rem) minmax(0, 1fr); gap: 1rem; }
|
|
311
|
+
cap-traceinspector .trace-stack { display: grid; gap: 1rem; min-width: 0; }
|
|
312
|
+
cap-traceinspector .trace-columns { display: grid; grid-template-columns: minmax(0, 1fr) minmax(14rem, .7fr); gap: 1rem; }
|
|
313
|
+
cap-traceinspector .trace-roots { display: grid; gap: .4rem; padding: 0; list-style: none; }
|
|
314
|
+
cap-traceinspector .trace-roots button { width: 100%; }
|
|
315
|
+
cap-traceinspector select { max-width: 18rem; }
|
|
316
|
+
@media (max-width: 900px) { cap-traceinspector .trace-workbench, cap-traceinspector .trace-columns { grid-template-columns: minmax(0, 1fr); } cap-traceinspector .trace-roots { max-height: 12rem; overflow: auto; } }
|
|
317
|
+
|
|
318
|
+
cap-traceflow .trace-canvas { position: relative; }
|
|
319
|
+
cap-traceflow .trace-node { position: absolute; width: 218px; min-height: 100px; padding: .7rem; z-index: 1; border-inline-start: 4px solid var(--cap-trace-accent, #005bb8); }
|
|
320
|
+
cap-traceflow .trace-node[data-observed="false"] { border-style: dashed; border-inline-start-color: var(--cap-trace-muted, #526477); }
|
|
321
|
+
cap-traceflow .trace-node[data-observed="true"][data-reached="false"] { border-inline-start-color: var(--cap-trace-line, #cad4de); }
|
|
322
|
+
cap-traceflow .trace-node[aria-current="step"] { box-shadow: 0 0 0 3px var(--cap-trace-accent, #005bb8); }
|
|
323
|
+
cap-traceflow .trace-node strong { display: block; overflow-wrap: anywhere; }
|
|
324
|
+
cap-traceflow .trace-node span { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
325
|
+
cap-traceflow .trace-edge { position: absolute; height: 0; border-top: 2px solid var(--cap-trace-accent, #005bb8); transform-origin: left center; }
|
|
326
|
+
cap-traceflow .trace-edge[data-observed="false"] { border-top-style: dashed; border-top-color: var(--cap-trace-muted, #526477); }
|
|
327
|
+
cap-traceflow .trace-edge[data-observed="true"][data-reached="false"] { border-top-color: var(--cap-trace-line, #cad4de); color: var(--cap-trace-line, #cad4de); }
|
|
328
|
+
cap-traceflow .trace-edge::after { content: ''; position: absolute; right: 0; top: -5px; width: 7px; height: 7px; border-top: 2px solid currentColor; border-right: 2px solid currentColor; transform: rotate(45deg); }
|
|
329
|
+
cap-traceflow .trace-leaves { display: flex; flex-wrap: wrap; gap: .5rem; list-style: none; padding: 0; }
|
|
330
|
+
|
|
331
|
+
cap-causaltrace ol { list-style: none; padding: 0; margin: 0; } cap-causaltrace li { margin: .25rem 0; } cap-causaltrace summary { cursor: pointer; } cap-causaltrace button { max-width: 100%; overflow-wrap: anywhere; }
|