jev-devtools 0.3.0 → 0.4.1

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.
@@ -1,5 +1,31 @@
1
+ /* Important declarations in the inner shadow context beat page-authored host
2
+ styles, including important ones. Keep the reset here instead of expanding
3
+ the all shorthand into hundreds of inline properties on the host element.
4
+ These qualified host selectors are inert in the public document stylesheet. */
5
+ :host(jev-devtools-root) {
6
+ all: initial !important;
7
+ direction: ltr !important;
8
+ unicode-bidi: isolate !important;
9
+ position: fixed !important;
10
+ inset: 0 !important;
11
+ pointer-events: none !important;
12
+ z-index: 2147483000 !important;
13
+ }
14
+
15
+ :host(jev-devtools-root)::before,
16
+ :host(jev-devtools-root)::after {
17
+ content: none !important;
18
+ display: none !important;
19
+ }
20
+
1
21
  .jev-devtools {
2
22
  all: initial;
23
+ /* all does not reset custom properties. Establish our own inherited defaults;
24
+ cameras and probability cards can still set local values below this root. */
25
+ --diagram-grid-opacity: 1;
26
+ --diagram-grid-weight: 1;
27
+ --lab-noul-probability: 1;
28
+ --flow-item-offset: 0px;
3
29
  display: block;
4
30
  direction: ltr;
5
31
  unicode-bidi: isolate;
@@ -17,8 +43,7 @@
17
43
  }
18
44
  .jev-devtools button,
19
45
  .jev-devtools input,
20
- .jev-devtools select,
21
- .jev-devtools textarea {
46
+ .jev-devtools select {
22
47
  font: inherit;
23
48
  color: inherit;
24
49
  border: 1px solid #3b303d;
@@ -41,7 +66,7 @@
41
66
  .jev-devtools button:hover:not(:disabled) {
42
67
  border-color: #e551ba;
43
68
  }
44
- .jev-devtools :is(button, input, select, textarea, summary):focus-visible {
69
+ .jev-devtools :is(button, input, select, summary):focus-visible {
45
70
  outline: 2px solid #e551ba;
46
71
  outline-offset: 3px;
47
72
  }
@@ -256,47 +281,6 @@
256
281
  background-image: radial-gradient(#342337 0.6px, transparent 0.6px);
257
282
  background-size: 16px 16px;
258
283
  }
259
- .jev-devtools .request-flow {
260
- display: flex;
261
- align-items: center;
262
- gap: 40px;
263
- padding: 14px 0 20px;
264
- }
265
- .jev-devtools .state-node {
266
- position: relative;
267
- flex: 0 0 160px;
268
- border: 1px solid #e551ba;
269
- padding: 20px 15px;
270
- background: #1f1320;
271
- border-radius: 6px;
272
- }
273
- .jev-devtools .state-node h3 {
274
- margin-top: 12px;
275
- }
276
- .jev-devtools .state-node p {
277
- color: #b69db3;
278
- line-height: 1.5;
279
- }
280
- .jev-devtools .state-node code {
281
- font-size: 10px;
282
- }
283
- .jev-devtools .state-node:after {
284
- content: "";
285
- position: absolute;
286
- left: 100%;
287
- top: 50%;
288
- width: 20px;
289
- border-top: 1px solid #7f416d;
290
- }
291
- .jev-devtools .question-branches {
292
- border-left: 1px solid #7f416d;
293
- padding-left: 20px;
294
- display: grid;
295
- grid-template-columns: repeat(3, minmax(160px, 1fr));
296
- gap: 12px;
297
- flex: 1;
298
- position: relative;
299
- }
300
284
  .jev-devtools .question-node {
301
285
  position: relative;
302
286
  border: 1px solid #75516c;
@@ -305,6 +289,9 @@
305
289
  background: #110d14;
306
290
  min-width: 0;
307
291
  }
292
+ /* Retain the legacy question connectors and standalone suppression together.
293
+ Remove only after resolving the narrow-screen visual differences in
294
+ https://github.com/diegoag64/jev-devtools/issues/57. */
308
295
  .jev-devtools .question-node:before {
309
296
  content: "";
310
297
  position: absolute;
@@ -335,11 +322,6 @@
335
322
  border-radius: 3px;
336
323
  padding: 3px 5px;
337
324
  }
338
- .jev-devtools .instructions {
339
- font-size: 11px;
340
- color: #b8a6bc;
341
- line-height: 1.5;
342
- }
343
325
  .jev-devtools .answer-value {
344
326
  display: block;
345
327
  font-size: 20px;
@@ -475,44 +457,10 @@
475
457
  border-bottom: 1px solid #302634;
476
458
  padding: 14px;
477
459
  }
478
- .jev-devtools .flow-dot {
479
- display: none;
480
- }
481
- .jev-devtools .pending .flow-dot {
482
- display: block;
483
- position: absolute;
484
- right: -23px;
485
- top: calc(50% - 3px);
486
- width: 6px;
487
- height: 6px;
488
- background: #e551ba;
489
- border-radius: 50%;
490
- animation: jev-inspector-pulse 1s infinite;
491
- }
492
- @keyframes jev-inspector-pulse {
493
- 50% {
494
- opacity: 0.2;
495
- transform: scale(0.7);
496
- }
497
- }
498
- @media (prefers-reduced-motion: reduce) {
499
- .jev-devtools .pending .flow-dot {
500
- animation: none;
501
- }
502
- }
503
460
  @media (max-width: 1100px) {
504
- .jev-devtools .question-branches {
505
- grid-template-columns: 1fr;
506
- }
507
461
  .jev-devtools .question-branches .question-node:not(:first-child):before {
508
462
  display: block;
509
463
  }
510
- .jev-devtools .request-flow {
511
- align-items: flex-start;
512
- }
513
- .jev-devtools .state-node {
514
- margin-top: 45px;
515
- }
516
464
  .jev-devtools .metrics {
517
465
  gap: 12px;
518
466
  }
@@ -546,9 +494,6 @@
546
494
  min-width: 240px;
547
495
  padding: 8px 12px;
548
496
  }
549
- .jev-devtools .request-detail {
550
- min-height: 0;
551
- }
552
497
  .jev-devtools .detail-header {
553
498
  padding: 12px;
554
499
  }
@@ -563,19 +508,6 @@
563
508
  .jev-devtools .metrics {
564
509
  display: none;
565
510
  }
566
- .jev-devtools .state-node {
567
- flex-basis: 115px;
568
- padding: 12px;
569
- }
570
- .jev-devtools .request-flow {
571
- gap: 25px;
572
- }
573
- .jev-devtools .state-node:after {
574
- width: 12px;
575
- }
576
- .jev-devtools .question-branches {
577
- padding-left: 12px;
578
- }
579
511
  .jev-devtools .question-node:before {
580
512
  width: 13px;
581
513
  }
@@ -583,46 +515,6 @@
583
515
  padding: 12px;
584
516
  }
585
517
  }
586
-
587
- .jev-devtools .request-flow {
588
- flex-direction: column;
589
- align-items: stretch;
590
- gap: 24px;
591
- }
592
- .jev-devtools .state-node {
593
- flex: auto;
594
- width: fit-content;
595
- align-self: center;
596
- padding: 12px 24px;
597
- text-align: center;
598
- margin: 0;
599
- }
600
- .jev-devtools .state-node h3 {
601
- display: inline-block;
602
- margin: 0 12px;
603
- }
604
- .jev-devtools .state-node p {
605
- display: inline-block;
606
- margin: 0 12px 0 0;
607
- font-size: 11px;
608
- }
609
- .jev-devtools .state-node .eyebrow {
610
- display: none;
611
- }
612
- .jev-devtools .state-node:after {
613
- left: 50%;
614
- top: 100%;
615
- width: 0;
616
- height: 24px;
617
- border-top: 0;
618
- border-left: 1px solid #7f416d;
619
- }
620
- .jev-devtools .question-branches {
621
- border-left: 0;
622
- border-top: 1px solid #7f416d;
623
- padding: 20px 0 0;
624
- grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
625
- }
626
518
  .jev-devtools .question-node:before,
627
519
  .jev-devtools .question-branches .question-node:not(:first-child):before {
628
520
  display: block;
@@ -637,18 +529,7 @@
637
529
  .jev-devtools .standalone:before {
638
530
  display: none;
639
531
  }
640
- .jev-devtools .flow-caption {
641
- margin-top: 0;
642
- }
643
- .jev-devtools .pending .flow-dot {
644
- right: auto;
645
- left: calc(50% - 3px);
646
- top: calc(100% + 10px);
647
- }
648
532
  @media (max-width: 900px) {
649
- .jev-devtools .question-branches {
650
- grid-template-columns: 1fr;
651
- }
652
533
  .jev-devtools .question-node:before,
653
534
  .jev-devtools .question-branches .question-node:not(:first-child):before {
654
535
  height: 12px;
@@ -658,16 +539,6 @@
658
539
  height: 20px;
659
540
  top: -21px;
660
541
  }
661
- .jev-devtools .state-node {
662
- padding: 10px;
663
- }
664
- .jev-devtools .state-node p {
665
- display: block;
666
- margin: 6px 0;
667
- }
668
- .jev-devtools .state-node h3 {
669
- font-size: 12px;
670
- }
671
542
  }
672
543
 
673
544
  .jev-devtools.jev-drawer {
@@ -730,10 +601,6 @@
730
601
  gap: 9px;
731
602
  font-weight: 600;
732
603
  }
733
- .jev-devtools .jev-mark {
734
- color: #e551ba;
735
- font-size: 21px;
736
- }
737
604
  .jev-devtools .jev-drawer-header > div {
738
605
  display: flex;
739
606
  align-items: center;
@@ -1150,7 +1017,6 @@
1150
1017
  overflow: auto;
1151
1018
  overscroll-behavior: contain;
1152
1019
  min-height: 0;
1153
- flex: 1;
1154
1020
  }
1155
1021
  .jev-devtools .lab-choice-browser table {
1156
1022
  width: 100%;
@@ -1271,15 +1137,78 @@
1271
1137
  }
1272
1138
  }
1273
1139
 
1274
- /* Connected requests share one camera and one opt-in full request detail. */
1275
- .whole-flow {
1140
+ /* Connected requests share one camera and one opt-in full request detail.
1141
+ :where scopes these selectors without changing their existing specificity. */
1142
+ :where(.jev-devtools) .whole-flow {
1276
1143
  min-width: 0;
1144
+ overflow: hidden;
1145
+ }
1146
+ :where(.jev-devtools) .whole-flow > .detail-header,
1147
+ :where(.jev-devtools) .whole-flow > .lab-flow-toolbar {
1148
+ flex-shrink: 0;
1149
+ }
1150
+ :where(.jev-devtools) .flow-workspace {
1151
+ display: flex;
1152
+ flex-direction: column;
1153
+ flex: 1;
1154
+ min-height: 0;
1155
+ overflow: hidden;
1156
+ }
1157
+ :where(.jev-devtools) .flow-details-panel {
1158
+ flex: none;
1159
+ min-width: 0;
1160
+ background: #130f17;
1161
+ border-top: 1px solid #342a38;
1162
+ }
1163
+ :where(.jev-devtools) .flow-details-bar {
1164
+ display: flex;
1165
+ align-items: center;
1166
+ gap: 12px;
1167
+ height: 36px;
1168
+ padding: 0 12px;
1169
+ }
1170
+ .jev-devtools .flow-details-bar button {
1171
+ flex: none;
1172
+ padding: 4px 8px;
1173
+ font-size: 11px;
1174
+ }
1175
+ :where(.jev-devtools) .flow-details-bar > span {
1176
+ color: #b5a6bc;
1177
+ font-size: 11px;
1178
+ overflow: hidden;
1179
+ white-space: nowrap;
1180
+ text-overflow: ellipsis;
1181
+ }
1182
+ :where(.jev-devtools) .flow-details-body {
1277
1183
  overflow: auto;
1184
+ overscroll-behavior: contain;
1185
+ scrollbar-gutter: stable;
1186
+ }
1187
+ :where(.jev-devtools) .flow-details-resize {
1188
+ display: flex;
1189
+ align-items: center;
1190
+ justify-content: center;
1191
+ height: 8px;
1192
+ cursor: ns-resize;
1193
+ touch-action: none;
1194
+ user-select: none;
1195
+ }
1196
+ :where(.jev-devtools) .flow-details-resize span {
1197
+ width: 40px;
1198
+ height: 2px;
1199
+ border-radius: 2px;
1200
+ background: #6c5874;
1278
1201
  }
1279
- .flow-overview-viewport {
1202
+ :where(.jev-devtools) .flow-details-resize:hover,
1203
+ :where(.jev-devtools) .flow-details-resize:focus-visible {
1204
+ background: #392239;
1205
+ outline: 1px solid #e551ba;
1206
+ outline-offset: -1px;
1207
+ }
1208
+ :where(.jev-devtools) .flow-overview-viewport {
1280
1209
  position: relative;
1281
- min-height: 240px;
1282
- flex: 1 0 260px;
1210
+ min-height: 0;
1211
+ flex: 1 1 0;
1283
1212
  overflow: hidden;
1284
1213
  touch-action: none;
1285
1214
  cursor: grab;
@@ -1290,23 +1219,24 @@
1290
1219
  );
1291
1220
  background-size: 20px 20px;
1292
1221
  }
1293
- .flow-overview-viewport[data-panning] {
1222
+ :where(.jev-devtools) .flow-overview-viewport[data-panning] {
1294
1223
  cursor: grabbing;
1295
1224
  }
1296
- .flow-overview-canvas {
1225
+ :where(.jev-devtools) .flow-overview-canvas {
1297
1226
  position: absolute;
1298
1227
  transform-origin: 0 0;
1299
1228
  }
1300
- .flow-connections {
1229
+ :where(.jev-devtools) .flow-connections {
1301
1230
  position: absolute;
1302
1231
  inset: 0;
1232
+ overflow: visible;
1303
1233
  color: #c0b8c4;
1304
1234
  pointer-events: none;
1305
1235
  }
1306
- .flow-step {
1236
+ :where(.jev-devtools) .flow-step {
1307
1237
  position: absolute;
1308
- width: 220px;
1309
- min-height: 98px;
1238
+ min-height: 172px;
1239
+ overflow-wrap: anywhere;
1310
1240
  display: flex;
1311
1241
  flex-direction: column;
1312
1242
  gap: 8px;
@@ -1317,17 +1247,15 @@
1317
1247
  background: #151017;
1318
1248
  color: inherit;
1319
1249
  }
1320
- .flow-step strong {
1321
- overflow: hidden;
1322
- text-overflow: ellipsis;
1323
- white-space: nowrap;
1250
+ :where(.jev-devtools) .flow-step strong {
1251
+ white-space: normal;
1324
1252
  width: 100%;
1325
1253
  }
1326
- .flow-step-description {
1254
+ :where(.jev-devtools) .flow-step-description {
1327
1255
  overflow-wrap: anywhere;
1328
1256
  font-size: 12px;
1329
1257
  }
1330
- .flow-step.flow-request {
1258
+ :where(.jev-devtools) .flow-step.flow-request {
1331
1259
  display: block;
1332
1260
  padding: 0;
1333
1261
  background: #0d0a0f;
@@ -1335,9 +1263,10 @@
1335
1263
  content-visibility: auto;
1336
1264
  contain-intrinsic-size: auto 640px;
1337
1265
  }
1338
- .flow-request-heading {
1266
+ :where(.jev-devtools) .flow-request-heading {
1339
1267
  width: 100%;
1340
- height: 64px;
1268
+ min-height: 64px;
1269
+ gap: 20px;
1341
1270
  display: flex;
1342
1271
  align-items: center;
1343
1272
  justify-content: space-between;
@@ -1349,7 +1278,7 @@
1349
1278
  background: transparent;
1350
1279
  color: inherit;
1351
1280
  }
1352
- .flow-request-heading .eyebrow {
1281
+ :where(.jev-devtools) .flow-request-heading .eyebrow {
1353
1282
  display: block;
1354
1283
  margin-bottom: 4px;
1355
1284
  }
@@ -1370,72 +1299,108 @@
1370
1299
  .jev-devtools .lab-flow-embedded .lab-choice-browser {
1371
1300
  height: 520px;
1372
1301
  }
1373
- .flow-step.selected {
1302
+ :where(.jev-devtools) .flow-step.selected {
1374
1303
  outline: 2px solid #e551ba;
1375
1304
  outline-offset: 3px;
1376
1305
  }
1377
- .flow-step[data-status="completed"] {
1306
+ :where(.jev-devtools) .flow-step[data-status="completed"] {
1378
1307
  border-color: #e551ba;
1379
1308
  }
1380
- .flow-step[data-status="running"] {
1309
+ :where(.jev-devtools) .flow-step[data-status="running"] {
1381
1310
  border-color: #e551ba;
1382
1311
  background: #2b1728;
1383
1312
  }
1384
- .flow-step[data-status="untaken"],
1385
- .flow-step[data-status="blocked"] {
1313
+ :where(.jev-devtools) .flow-step[data-status="untaken"],
1314
+ :where(.jev-devtools) .flow-step[data-status="blocked"] {
1386
1315
  color: #948797;
1387
1316
  border-color: #403746;
1388
1317
  background: #151017;
1389
1318
  }
1390
- .flow-step[data-status="error"] {
1319
+ :where(.jev-devtools) .flow-step[data-status="error"] {
1391
1320
  border-color: #f17c78;
1392
1321
  }
1393
- .flow-step[data-status="cancelled"] {
1322
+ :where(.jev-devtools) .flow-step[data-status="cancelled"] {
1394
1323
  border-style: dashed;
1395
1324
  }
1396
- .flow-selection {
1325
+ :where(.jev-devtools) .flow-selection {
1397
1326
  padding: 12px 20px;
1398
1327
  border-top: 1px solid #342a38;
1399
1328
  }
1400
- .flow-selection p {
1329
+ :where(.jev-devtools) .flow-selection p {
1401
1330
  margin: 6px 0;
1402
1331
  overflow-wrap: anywhere;
1403
1332
  }
1404
- .flow-request-detail {
1333
+ :where(.jev-devtools) .flow-request-detail {
1405
1334
  min-height: 450px;
1406
1335
  border-top: 1px solid #534357;
1407
1336
  }
1408
- .flow-request-detail > .request-detail {
1337
+ :where(.jev-devtools) .flow-request-detail > .request-detail {
1409
1338
  min-height: 450px;
1410
1339
  }
1411
1340
 
1412
- .flow-card-heading,
1413
- .flow-card-footer,
1414
- .flow-join-summary,
1415
- .flow-lane {
1341
+ :where(.jev-devtools) .flow-card-heading,
1342
+ :where(.jev-devtools) .flow-card-footer,
1343
+ :where(.jev-devtools) .flow-join-summary,
1344
+ :where(.jev-devtools) .flow-lane {
1416
1345
  display: flex;
1417
1346
  align-items: center;
1418
1347
  justify-content: space-between;
1419
1348
  gap: 8px;
1420
1349
  width: 100%;
1421
1350
  }
1422
- .flow-card-heading {
1351
+ :where(.jev-devtools) .flow-card-heading {
1423
1352
  justify-content: flex-start;
1424
1353
  }
1425
- .flow-kind-icon {
1354
+ :where(.jev-devtools) .flow-task .flow-kind-icon {
1355
+ border: 1px solid currentColor;
1356
+ border-radius: 6px;
1357
+ padding: 4px;
1358
+ }
1359
+ :where(.jev-devtools) .flow-task-preview {
1360
+ display: grid;
1361
+ gap: 8px;
1362
+ min-width: 0;
1363
+ }
1364
+ .jev-devtools .flow-task-preview .diagram-content {
1365
+ max-height: 280px;
1366
+ padding: 8px 10px;
1367
+ border: 1px solid #35283b;
1368
+ border-radius: 4px;
1369
+ background: #100c13;
1370
+ }
1371
+ :where(.jev-devtools) .flow-task-preview small {
1372
+ color: #a89bac;
1373
+ font-size: 11px;
1374
+ }
1375
+ :where(.jev-devtools) .flow-task-details {
1376
+ display: grid;
1377
+ gap: 12px;
1378
+ }
1379
+ :where(.jev-devtools) .flow-task-details details {
1380
+ min-width: 0;
1381
+ }
1382
+ :where(.jev-devtools) .flow-task-details summary {
1383
+ cursor: pointer;
1384
+ margin-bottom: 8px;
1385
+ }
1386
+ :where(.jev-devtools) .flow-task-details .diagram-content {
1387
+ max-height: 320px;
1388
+ overflow: auto;
1389
+ }
1390
+ :where(.jev-devtools) .flow-kind-icon {
1426
1391
  width: 26px;
1427
1392
  height: 26px;
1428
1393
  color: #e551ba;
1429
1394
  flex-shrink: 0;
1430
1395
  }
1431
- .flow-kind-icon svg {
1396
+ :where(.jev-devtools) .flow-kind-icon svg {
1432
1397
  width: 100%;
1433
1398
  height: 100%;
1434
1399
  }
1435
- .flow-card-heading .eyebrow {
1400
+ :where(.jev-devtools) .flow-card-heading .eyebrow {
1436
1401
  font-size: 10px;
1437
1402
  }
1438
- .flow-status {
1403
+ :where(.jev-devtools) .flow-status {
1439
1404
  margin-left: auto;
1440
1405
  font-size: 10px;
1441
1406
  border-radius: 20px;
@@ -1443,93 +1408,83 @@
1443
1408
  background: #342031;
1444
1409
  color: #f0b7e0;
1445
1410
  }
1446
- .flow-step[data-status="untaken"] .flow-status {
1411
+ :where(.jev-devtools) .flow-step[data-status="untaken"] .flow-status {
1447
1412
  background: #241e28;
1448
1413
  color: #948797;
1449
1414
  }
1450
- .flow-step[data-status="untaken"] .flow-kind-icon {
1415
+ :where(.jev-devtools) .flow-step[data-status="untaken"] .flow-kind-icon {
1451
1416
  color: #948797;
1452
1417
  }
1453
- .flow-step > strong {
1418
+ :where(.jev-devtools) .flow-card-body > strong {
1454
1419
  white-space: normal;
1455
1420
  font-size: 18px;
1456
1421
  line-height: 1.25;
1457
- display: -webkit-box;
1458
- -webkit-line-clamp: 2;
1459
- -webkit-box-orient: vertical;
1460
1422
  overflow-wrap: anywhere;
1461
1423
  }
1462
- .flow-step-description {
1424
+ :where(.jev-devtools) .flow-step-description {
1463
1425
  line-height: 1.5;
1464
1426
  color: #b9aebf;
1465
- display: -webkit-box;
1466
- -webkit-line-clamp: 3;
1467
- -webkit-box-orient: vertical;
1468
- overflow: hidden;
1427
+ white-space: pre-wrap;
1469
1428
  }
1470
- .flow-card-footer {
1429
+ :where(.jev-devtools) .flow-card-footer {
1471
1430
  margin-top: auto;
1472
1431
  padding-top: 10px;
1473
1432
  border-top: 1px solid #342a38;
1474
1433
  font-size: 10px;
1475
1434
  color: #a092a7;
1476
1435
  }
1477
- .flow-card-footer code {
1436
+ :where(.jev-devtools) .flow-card-footer code {
1478
1437
  max-width: 45%;
1479
- overflow: hidden;
1480
- text-overflow: ellipsis;
1481
- white-space: nowrap;
1438
+ white-space: normal;
1439
+ overflow-wrap: anywhere;
1482
1440
  }
1483
- .flow-card-footer small {
1441
+ :where(.jev-devtools) .flow-card-footer small {
1484
1442
  text-align: right;
1485
1443
  }
1486
- .flow-join-summary {
1444
+ :where(.jev-devtools) .flow-join-summary {
1487
1445
  margin-top: 4px;
1488
1446
  font-size: 11px;
1489
1447
  color: #c9b9cd;
1490
1448
  }
1491
- .flow-join-summary > span {
1449
+ :where(.jev-devtools) .flow-join-summary > span {
1492
1450
  color: #ef9ed9;
1493
1451
  font-variant-numeric: tabular-nums;
1494
1452
  }
1495
- .flow-lanes {
1453
+ :where(.jev-devtools) .flow-lanes {
1496
1454
  display: flex;
1497
1455
  flex-direction: column;
1498
1456
  gap: 4px;
1499
1457
  width: 100%;
1500
1458
  }
1501
- .flow-lane {
1459
+ :where(.jev-devtools) .flow-lane {
1502
1460
  border-radius: 5px;
1503
1461
  background: #211923;
1504
1462
  padding: 6px 8px;
1505
1463
  font-size: 11px;
1506
1464
  min-height: 28px;
1507
1465
  }
1508
- .flow-lane > span {
1509
- overflow: hidden;
1510
- text-overflow: ellipsis;
1511
- white-space: nowrap;
1466
+ :where(.jev-devtools) .flow-lane > span {
1467
+ min-width: 0;
1468
+ overflow-wrap: anywhere;
1512
1469
  }
1513
- .flow-lane > span > span {
1470
+ :where(.jev-devtools) .flow-lane > span > span {
1514
1471
  color: #ef9ed9;
1515
1472
  margin-right: 4px;
1516
1473
  }
1517
- .flow-lane small {
1474
+ :where(.jev-devtools) .flow-lane small {
1518
1475
  color: #b9aebf;
1519
1476
  }
1520
- .flow-lane-details {
1477
+ :where(.jev-devtools) .flow-lane-details {
1521
1478
  padding-left: 18px;
1522
1479
  font-size: 12px;
1523
1480
  }
1524
- .flow-request-heading > span:first-child {
1481
+ :where(.jev-devtools) .flow-request-heading > span:first-child {
1525
1482
  min-width: 0;
1526
1483
  max-width: 80%;
1527
1484
  }
1528
- .flow-request-description {
1529
- display: -webkit-box;
1530
- -webkit-line-clamp: 2;
1531
- -webkit-box-orient: vertical;
1532
- overflow: hidden;
1485
+ :where(.jev-devtools) .flow-request-description {
1486
+ display: block;
1487
+ white-space: pre-wrap;
1533
1488
  font-size: 12px;
1534
1489
  line-height: 1.5;
1535
1490
  color: #b9aebf;
@@ -1687,7 +1642,7 @@
1687
1642
  opacity: calc(0.65 + 0.35 * var(--lab-noul-probability, 1));
1688
1643
  }
1689
1644
 
1690
- .flow-condition-rule {
1645
+ :where(.jev-devtools) .flow-condition-rule {
1691
1646
  display: block;
1692
1647
  padding: 10px 12px;
1693
1648
  border: 1px solid #49324b;
@@ -1695,17 +1650,15 @@
1695
1650
  background: #211723;
1696
1651
  width: 100%;
1697
1652
  }
1698
- .flow-condition-label {
1653
+ :where(.jev-devtools) .flow-condition-label {
1699
1654
  display: block;
1700
1655
  font-size: 10px;
1701
1656
  color: #ba9dbe;
1702
1657
  margin-bottom: 5px;
1703
1658
  }
1704
- .flow-condition-rule code {
1705
- display: -webkit-box;
1706
- -webkit-line-clamp: 3;
1707
- -webkit-box-orient: vertical;
1708
- overflow: hidden;
1659
+ :where(.jev-devtools) .flow-condition-rule code {
1660
+ display: block;
1661
+ white-space: pre-wrap;
1709
1662
  overflow-wrap: anywhere;
1710
1663
  font:
1711
1664
  12px/1.6 ui-monospace,
@@ -1713,13 +1666,13 @@
1713
1666
  color: #f2d7eb;
1714
1667
  }
1715
1668
 
1716
- .flow-condition-incoming {
1669
+ :where(.jev-devtools) .flow-condition-incoming {
1717
1670
  display: block;
1718
1671
  padding-bottom: 10px;
1719
1672
  margin-bottom: 10px;
1720
1673
  border-bottom: 1px solid #49324b;
1721
1674
  }
1722
- .flow-condition-input {
1675
+ :where(.jev-devtools) .flow-condition-input {
1723
1676
  display: flex;
1724
1677
  justify-content: space-between;
1725
1678
  align-items: baseline;
@@ -1727,33 +1680,191 @@
1727
1680
  font-size: 12px;
1728
1681
  padding: 3px 0;
1729
1682
  }
1730
- .flow-condition-input > span {
1731
- overflow: hidden;
1732
- text-overflow: ellipsis;
1733
- white-space: nowrap;
1683
+ :where(.jev-devtools) .flow-condition-input > span {
1684
+ min-width: 0;
1685
+ overflow-wrap: anywhere;
1734
1686
  }
1735
- .flow-condition-input > b {
1687
+ :where(.jev-devtools) .flow-condition-input > b {
1736
1688
  font-size: 17px;
1737
1689
  font-weight: 600;
1738
1690
  color: #f2d7eb;
1739
- overflow: hidden;
1740
- text-overflow: ellipsis;
1741
- white-space: nowrap;
1691
+ overflow-wrap: anywhere;
1692
+ white-space: normal;
1742
1693
  max-width: 65%;
1743
1694
  }
1744
- .flow-input-details {
1695
+ :where(.jev-devtools) .flow-input-details {
1745
1696
  font-size: 12px;
1746
1697
  }
1747
- .flow-input-details > div {
1698
+ :where(.jev-devtools) .flow-input-details > div {
1748
1699
  display: flex;
1749
1700
  gap: 16px;
1750
1701
  margin: 6px 0;
1751
1702
  }
1752
- .flow-input-details code {
1703
+ :where(.jev-devtools) .flow-input-details code {
1753
1704
  color: #a092a7;
1754
1705
  margin-left: 8px;
1755
1706
  }
1756
- .flow-input-details dd {
1707
+ :where(.jev-devtools) .flow-input-details dd {
1757
1708
  margin: 0;
1758
1709
  overflow-wrap: anywhere;
1759
1710
  }
1711
+
1712
+ :where(.jev-devtools) .flow-overview-stack {
1713
+ display: flex;
1714
+ flex-direction: column;
1715
+ flex: 1;
1716
+ min-height: 0;
1717
+ min-width: 0;
1718
+ overflow: hidden;
1719
+ }
1720
+ :where(.jev-devtools) .flow-map-progress {
1721
+ display: grid;
1722
+ gap: 10px;
1723
+ font-size: 14px;
1724
+ line-height: 1.5;
1725
+ }
1726
+ :where(.jev-devtools) .flow-map-progress small {
1727
+ color: #b5a6bc;
1728
+ }
1729
+
1730
+ .jev-devtools .flow-card-body {
1731
+ display: flex;
1732
+ flex-direction: column;
1733
+ gap: 8px;
1734
+ width: 100%;
1735
+ flex: 1;
1736
+ padding: 0;
1737
+ border: 0;
1738
+ border-radius: 0;
1739
+ background: transparent;
1740
+ color: inherit;
1741
+ font: inherit;
1742
+ text-align: left;
1743
+ }
1744
+ .jev-devtools .flow-card-body:hover {
1745
+ background: transparent;
1746
+ }
1747
+ :where(.jev-devtools) .flow-collection-controls {
1748
+ display: flex;
1749
+ align-items: end;
1750
+ gap: 10px;
1751
+ border-top: 1px solid #49324b;
1752
+ margin-top: 4px;
1753
+ padding-top: 12px;
1754
+ }
1755
+ :where(.jev-devtools) .flow-collection-controls label {
1756
+ display: grid;
1757
+ gap: 6px;
1758
+ flex: 1;
1759
+ min-width: 0;
1760
+ color: #b9aebf;
1761
+ font-size: 11px;
1762
+ }
1763
+ .jev-devtools .flow-collection-controls select {
1764
+ width: 100%;
1765
+ min-width: 0;
1766
+ }
1767
+ .jev-devtools .flow-collection-controls button {
1768
+ flex: none;
1769
+ color: #efb1df;
1770
+ }
1771
+ :where(.jev-devtools) .flow-collection-expansion {
1772
+ position: absolute;
1773
+ width: max-content;
1774
+ }
1775
+ :where(.jev-devtools) .flow-item-frame {
1776
+ border: 1px solid #64415d;
1777
+ border-radius: 12px;
1778
+ background: #100c13;
1779
+ overflow: hidden;
1780
+ }
1781
+ :where(.jev-devtools) .flow-collection-heading {
1782
+ display: flex;
1783
+ align-items: center;
1784
+ justify-content: space-between;
1785
+ gap: 24px;
1786
+ padding: 16px 20px;
1787
+ border-bottom: 1px solid #49324b;
1788
+ background: #1c1220;
1789
+ }
1790
+ :where(.jev-devtools) .flow-collection-heading h3 {
1791
+ margin: 5px 0;
1792
+ font-size: 16px;
1793
+ }
1794
+ :where(.jev-devtools) .flow-collection-heading small {
1795
+ color: #b9aebf;
1796
+ }
1797
+ :where(.jev-devtools) .flow-collection-link text {
1798
+ fill: #ce9abd;
1799
+ font-size: 12px;
1800
+ }
1801
+ :where(.jev-devtools) .flow-item-placeholder {
1802
+ width: 600px;
1803
+ padding: 24px;
1804
+ line-height: 1.6;
1805
+ }
1806
+ :where(.jev-devtools) .flow-inline-overview,
1807
+ :where(.jev-devtools) .flow-inline-overview > .whole-flow,
1808
+ :where(.jev-devtools) .flow-inline-overview > .whole-flow > .flow-workspace {
1809
+ display: block;
1810
+ flex: none;
1811
+ }
1812
+ :where(.jev-devtools) .flow-inline-surface {
1813
+ position: relative;
1814
+ }
1815
+
1816
+ :where(.jev-devtools) .flow-item-content {
1817
+ min-width: 0;
1818
+ animation: jev-flow-item-enter 240ms cubic-bezier(0.22, 1, 0.36, 1) both;
1819
+ }
1820
+ :where(.jev-devtools) .flow-item-forward {
1821
+ --flow-item-offset: 28px;
1822
+ }
1823
+ :where(.jev-devtools) .flow-item-backward {
1824
+ --flow-item-offset: -28px;
1825
+ }
1826
+ @keyframes jev-flow-item-enter {
1827
+ from {
1828
+ opacity: 0;
1829
+ transform: translateX(var(--flow-item-offset));
1830
+ }
1831
+ to {
1832
+ opacity: 1;
1833
+ transform: translateX(0);
1834
+ }
1835
+ }
1836
+ @media (prefers-reduced-motion: reduce) {
1837
+ :where(.jev-devtools) .flow-item-content {
1838
+ animation: none;
1839
+ }
1840
+ }
1841
+ .jev-devtools .flow-item-arrow {
1842
+ position: absolute;
1843
+ top: 50%;
1844
+ transform: translateY(-50%);
1845
+ display: grid;
1846
+ place-items: center;
1847
+ width: 56px;
1848
+ height: 56px;
1849
+ padding: 12px;
1850
+ margin: 0 auto;
1851
+ border: 1px solid #64415d;
1852
+ border-radius: 6px;
1853
+ background: #211623;
1854
+ color: #efa7db;
1855
+ }
1856
+ .jev-devtools .flow-item-arrow:hover:not(:disabled) {
1857
+ background: #382035;
1858
+ border-color: #e551ba;
1859
+ }
1860
+ :where(.jev-devtools) .flow-item-arrow svg {
1861
+ width: 28px;
1862
+ height: 28px;
1863
+ }
1864
+
1865
+ :where(.jev-devtools) .flow-item-previous {
1866
+ left: -76px;
1867
+ }
1868
+ :where(.jev-devtools) .flow-item-next {
1869
+ right: -76px;
1870
+ }