@c15t/dev-tools 2.0.0-rc.3 → 2.0.0-rc.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/CHANGELOG.md +9 -0
- package/dist/components/panel.d.ts.map +1 -1
- package/dist/components/tabs.d.ts.map +1 -1
- package/dist/components/ui.d.ts +8 -0
- package/dist/components/ui.d.ts.map +1 -1
- package/dist/core/debug-bundle.d.ts +14 -0
- package/dist/core/debug-bundle.d.ts.map +1 -0
- package/dist/core/devtools.d.ts.map +1 -1
- package/dist/core/panel-renderer.d.ts +5 -0
- package/dist/core/panel-renderer.d.ts.map +1 -1
- package/dist/core/state-manager.d.ts.map +1 -1
- package/dist/core/store-connector.d.ts +16 -0
- package/dist/core/store-connector.d.ts.map +1 -1
- package/dist/core/store-instrumentation.d.ts +13 -0
- package/dist/core/store-instrumentation.d.ts.map +1 -0
- package/dist/index.cjs +1681 -905
- package/dist/index.js +1680 -904
- package/dist/panels/actions.d.ts +1 -0
- package/dist/panels/actions.d.ts.map +1 -1
- package/dist/panels/consents.d.ts.map +1 -1
- package/dist/panels/events.d.ts.map +1 -1
- package/dist/panels/iab.d.ts.map +1 -1
- package/dist/panels/location.d.ts.map +1 -1
- package/dist/panels/scripts.d.ts.map +1 -1
- package/dist/react.cjs +1610 -748
- package/dist/react.js +1610 -748
- package/dist/tanstack.cjs +1565 -532
- package/dist/tanstack.js +1565 -532
- package/dist/utils/preference-trigger.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/package.json +9 -9
- package/tsconfig.json +9 -1
- package/dist/__tests__/components/ui.test.d.ts +0 -2
- package/dist/__tests__/components/ui.test.d.ts.map +0 -1
- package/dist/__tests__/core/override-storage.test.d.ts +0 -2
- package/dist/__tests__/core/override-storage.test.d.ts.map +0 -1
- package/dist/__tests__/core/renderer.test.d.ts +0 -2
- package/dist/__tests__/core/renderer.test.d.ts.map +0 -1
- package/dist/__tests__/core/reset-consents.test.d.ts +0 -2
- package/dist/__tests__/core/reset-consents.test.d.ts.map +0 -1
- package/dist/__tests__/core/state-manager.test.d.ts +0 -2
- package/dist/__tests__/core/state-manager.test.d.ts.map +0 -1
- package/dist/__tests__/core/store-connector.test.d.ts +0 -2
- package/dist/__tests__/core/store-connector.test.d.ts.map +0 -1
- package/dist/__tests__/panels/dom-scanner.test.d.ts +0 -2
- package/dist/__tests__/panels/dom-scanner.test.d.ts.map +0 -1
- package/dist/__tests__/panels/events.test.d.ts +0 -2
- package/dist/__tests__/panels/events.test.d.ts.map +0 -1
- package/dist/__tests__/panels/iab.test.d.ts +0 -2
- package/dist/__tests__/panels/iab.test.d.ts.map +0 -1
- package/dist/__tests__/panels/scripts.test.d.ts +0 -2
- package/dist/__tests__/panels/scripts.test.d.ts.map +0 -1
- package/dist/__tests__/utils/preference-trigger.test.d.ts +0 -2
- package/dist/__tests__/utils/preference-trigger.test.d.ts.map +0 -1
package/dist/react.cjs
CHANGED
|
@@ -261,21 +261,21 @@ var __webpack_modules__ = {
|
|
|
261
261
|
module.id,
|
|
262
262
|
`.toggle-bPZtik {
|
|
263
263
|
border-radius: var(--c15t-radius-full, 9999px);
|
|
264
|
-
background-color: var(--c15t-switch-track, #
|
|
264
|
+
background-color: var(--c15t-switch-track, #d9d9d9);
|
|
265
265
|
cursor: pointer;
|
|
266
|
-
width:
|
|
267
|
-
height:
|
|
268
|
-
transition: background-color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1));
|
|
266
|
+
width: 2rem;
|
|
267
|
+
height: 1.25rem;
|
|
268
|
+
transition: background-color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1)), box-shadow var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1));
|
|
269
269
|
border: none;
|
|
270
270
|
align-items: center;
|
|
271
|
-
padding:
|
|
271
|
+
padding: .125rem;
|
|
272
272
|
display: inline-flex;
|
|
273
273
|
position: relative;
|
|
274
274
|
}
|
|
275
275
|
|
|
276
276
|
.toggle-bPZtik:focus-visible {
|
|
277
|
-
|
|
278
|
-
outline
|
|
277
|
+
box-shadow: 0 0 0 2px var(--c15t-devtools-focus-ring, #335cff);
|
|
278
|
+
outline: none;
|
|
279
279
|
}
|
|
280
280
|
|
|
281
281
|
.toggleActive-Ldlasg {
|
|
@@ -285,16 +285,16 @@ var __webpack_modules__ = {
|
|
|
285
285
|
.toggleThumb-hjGfoX {
|
|
286
286
|
border-radius: var(--c15t-radius-full, 9999px);
|
|
287
287
|
background-color: var(--c15t-switch-thumb, #fff);
|
|
288
|
-
width:
|
|
289
|
-
height:
|
|
290
|
-
|
|
288
|
+
width: .75rem;
|
|
289
|
+
height: .75rem;
|
|
290
|
+
box-shadow: 0 0 0 1px var(--c15t-border, #e3e3e3);
|
|
291
|
+
transition: transform var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1));
|
|
291
292
|
position: absolute;
|
|
292
293
|
left: 2px;
|
|
293
|
-
box-shadow: 0 1px 2px #0003;
|
|
294
294
|
}
|
|
295
295
|
|
|
296
296
|
.toggleActive-Ldlasg .toggleThumb-hjGfoX {
|
|
297
|
-
transform: translateX(
|
|
297
|
+
transform: translateX(1rem);
|
|
298
298
|
}
|
|
299
299
|
|
|
300
300
|
.toggle-bPZtik:disabled, .toggleDisabled-ZcD8nZ {
|
|
@@ -307,13 +307,14 @@ var __webpack_modules__ = {
|
|
|
307
307
|
}
|
|
308
308
|
|
|
309
309
|
.badge-yA0giZ {
|
|
310
|
-
border-radius: var(--c15t-radius-
|
|
310
|
+
border-radius: var(--c15t-radius-full, 9999px);
|
|
311
311
|
font-size: var(--c15t-devtools-font-size-xs, .75rem);
|
|
312
312
|
font-weight: var(--c15t-font-weight-medium, 500);
|
|
313
|
+
line-height: var(--c15t-line-height-tight, 1.25);
|
|
313
314
|
white-space: nowrap;
|
|
315
|
+
justify-content: center;
|
|
314
316
|
align-items: center;
|
|
315
|
-
padding:
|
|
316
|
-
line-height: 1;
|
|
317
|
+
padding: .1875rem .4375rem;
|
|
317
318
|
display: inline-flex;
|
|
318
319
|
}
|
|
319
320
|
|
|
@@ -346,35 +347,36 @@ var __webpack_modules__ = {
|
|
|
346
347
|
justify-content: center;
|
|
347
348
|
align-items: center;
|
|
348
349
|
gap: var(--c15t-space-xs, .25rem);
|
|
349
|
-
border: 1px solid var(--c15t-border, #e3e3e3);
|
|
350
|
+
border: 1px solid var(--c15t-devtools-border-strong, #e3e3e3);
|
|
350
351
|
border-radius: var(--c15t-radius-md, .5rem);
|
|
351
|
-
background-color: var(--c15t-surface, #fff);
|
|
352
|
-
min-height:
|
|
352
|
+
background-color: var(--c15t-devtools-surface-elevated, #fff);
|
|
353
|
+
min-height: 2rem;
|
|
353
354
|
color: var(--c15t-text, #171717);
|
|
354
|
-
font-family:
|
|
355
|
-
font-size:
|
|
355
|
+
font-family: var(--c15t-font-family, system-ui, -apple-system, sans-serif);
|
|
356
|
+
font-size: var(--c15t-font-size-sm, .875rem);
|
|
356
357
|
font-weight: var(--c15t-font-weight-medium, 500);
|
|
358
|
+
line-height: var(--c15t-line-height-tight, 1.25);
|
|
359
|
+
box-shadow: var(--c15t-shadow-sm, 0 1px 2px #0000000d);
|
|
357
360
|
cursor: pointer;
|
|
358
361
|
transition: background-color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1)), border-color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1)), box-shadow var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1)), color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1));
|
|
359
|
-
padding:
|
|
360
|
-
line-height: 1;
|
|
362
|
+
padding: .375rem .625rem;
|
|
361
363
|
display: inline-flex;
|
|
362
|
-
box-shadow: 0 1px 1px #0000000a;
|
|
363
364
|
}
|
|
364
365
|
|
|
365
366
|
.btn-evRVlh:hover {
|
|
366
|
-
background-color: var(--c15t-surface-
|
|
367
|
+
background-color: var(--c15t-devtools-surface-subtle, #f7f7f7);
|
|
367
368
|
border-color: var(--c15t-border-hover, #c9c9c9);
|
|
368
|
-
box-shadow: 0
|
|
369
|
+
box-shadow: var(--c15t-shadow-md, 0 4px 12px #00000014);
|
|
369
370
|
}
|
|
370
371
|
|
|
371
372
|
.btn-evRVlh:focus-visible {
|
|
372
|
-
|
|
373
|
-
outline
|
|
373
|
+
box-shadow: var(--c15t-shadow-sm, 0 1px 2px #0000000d), 0 0 0 2px var(--c15t-devtools-focus-ring, #335cff);
|
|
374
|
+
outline: none;
|
|
374
375
|
}
|
|
375
376
|
|
|
376
377
|
.btn-evRVlh:active {
|
|
377
|
-
box-shadow: 0 1px 2px #
|
|
378
|
+
box-shadow: var(--c15t-shadow-sm, 0 1px 2px #0000000d);
|
|
379
|
+
transform: scale(.98);
|
|
378
380
|
}
|
|
379
381
|
|
|
380
382
|
.btn-evRVlh:disabled {
|
|
@@ -387,6 +389,7 @@ var __webpack_modules__ = {
|
|
|
387
389
|
background-color: var(--c15t-primary, #335cff);
|
|
388
390
|
border-color: var(--c15t-primary, #335cff);
|
|
389
391
|
color: var(--c15t-text-on-primary, #fff);
|
|
392
|
+
box-shadow: none;
|
|
390
393
|
}
|
|
391
394
|
|
|
392
395
|
.btnPrimary-dA6nqY:hover {
|
|
@@ -398,6 +401,7 @@ var __webpack_modules__ = {
|
|
|
398
401
|
background-color: var(--c15t-devtools-badge-error, #ef4343);
|
|
399
402
|
border-color: var(--c15t-devtools-badge-error, #ef4343);
|
|
400
403
|
color: var(--c15t-text-on-primary, #fff);
|
|
404
|
+
box-shadow: none;
|
|
401
405
|
}
|
|
402
406
|
|
|
403
407
|
.btnDanger-eDnqOX:hover {
|
|
@@ -406,10 +410,10 @@ var __webpack_modules__ = {
|
|
|
406
410
|
}
|
|
407
411
|
|
|
408
412
|
.btnSmall-TjXoqZ {
|
|
413
|
+
min-height: 1.75rem;
|
|
414
|
+
font-size: var(--c15t-devtools-font-size-xs, .75rem);
|
|
409
415
|
border-radius: var(--c15t-radius-sm, .375rem);
|
|
410
|
-
|
|
411
|
-
padding: 3px 8px;
|
|
412
|
-
font-size: 11px;
|
|
416
|
+
padding: .25rem .5rem;
|
|
413
417
|
}
|
|
414
418
|
|
|
415
419
|
.btnIcon-fiYQAh {
|
|
@@ -419,19 +423,22 @@ var __webpack_modules__ = {
|
|
|
419
423
|
}
|
|
420
424
|
|
|
421
425
|
.input-IeTcCs {
|
|
422
|
-
|
|
423
|
-
padding: var(--c15t-space-xs, .25rem) var(--c15t-space-sm, .5rem);
|
|
424
|
-
border: 1px solid var(--c15t-border, #e3e3e3);
|
|
426
|
+
border: 1px solid var(--c15t-devtools-border-strong, #e3e3e3);
|
|
425
427
|
border-radius: var(--c15t-radius-md, .5rem);
|
|
426
|
-
background-color: var(--c15t-surface, #fff);
|
|
428
|
+
background-color: var(--c15t-devtools-surface-elevated, #fff);
|
|
429
|
+
width: 100%;
|
|
430
|
+
min-height: 2rem;
|
|
427
431
|
color: var(--c15t-text, #171717);
|
|
428
|
-
font-family:
|
|
429
|
-
font-size: var(--c15t-font-size-
|
|
430
|
-
|
|
432
|
+
font-family: var(--c15t-font-family, system-ui, -apple-system, sans-serif);
|
|
433
|
+
font-size: var(--c15t-devtools-font-size-xs, .75rem);
|
|
434
|
+
line-height: var(--c15t-line-height-tight, 1.25);
|
|
435
|
+
transition: border-color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1)), box-shadow var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1));
|
|
436
|
+
padding: .375rem .625rem;
|
|
431
437
|
}
|
|
432
438
|
|
|
433
439
|
.input-IeTcCs:focus {
|
|
434
|
-
border-color: var(--c15t-
|
|
440
|
+
border-color: var(--c15t-devtools-focus-ring, #335cff);
|
|
441
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--c15t-devtools-focus-ring, #335cff) 25%, transparent);
|
|
435
442
|
outline: none;
|
|
436
443
|
}
|
|
437
444
|
|
|
@@ -440,30 +447,35 @@ var __webpack_modules__ = {
|
|
|
440
447
|
}
|
|
441
448
|
|
|
442
449
|
.inputSmall-pJyXcL {
|
|
443
|
-
|
|
450
|
+
min-height: 1.625rem;
|
|
444
451
|
font-size: var(--c15t-devtools-font-size-xs, .75rem);
|
|
452
|
+
padding: .25rem .4375rem;
|
|
445
453
|
}
|
|
446
454
|
|
|
447
455
|
.select-byJ1WM {
|
|
448
|
-
|
|
449
|
-
padding: var(--c15t-space-xs, .25rem) var(--c15t-space-sm, .5rem);
|
|
450
|
-
border: 1px solid var(--c15t-border, #e3e3e3);
|
|
456
|
+
border: 1px solid var(--c15t-devtools-border-strong, #e3e3e3);
|
|
451
457
|
border-radius: var(--c15t-radius-md, .5rem);
|
|
452
|
-
background-color: var(--c15t-surface, #fff);
|
|
458
|
+
background-color: var(--c15t-devtools-surface-elevated, #fff);
|
|
459
|
+
width: 100%;
|
|
460
|
+
min-height: 2rem;
|
|
453
461
|
color: var(--c15t-text, #171717);
|
|
454
|
-
font-family:
|
|
462
|
+
font-family: var(--c15t-font-family, system-ui, -apple-system, sans-serif);
|
|
455
463
|
font-size: var(--c15t-devtools-font-size-xs, .75rem);
|
|
464
|
+
line-height: var(--c15t-line-height-tight, 1.25);
|
|
456
465
|
cursor: pointer;
|
|
466
|
+
transition: border-color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1)), box-shadow var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1));
|
|
467
|
+
padding: .375rem .625rem;
|
|
457
468
|
}
|
|
458
469
|
|
|
459
470
|
.select-byJ1WM:focus {
|
|
460
|
-
border-color: var(--c15t-
|
|
471
|
+
border-color: var(--c15t-devtools-focus-ring, #335cff);
|
|
472
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--c15t-devtools-focus-ring, #335cff) 25%, transparent);
|
|
461
473
|
outline: none;
|
|
462
474
|
}
|
|
463
475
|
|
|
464
476
|
.grid-LlrmEz {
|
|
465
477
|
gap: var(--c15t-space-sm, .5rem);
|
|
466
|
-
padding: var(--c15t-space-
|
|
478
|
+
padding: var(--c15t-space-md, 1rem);
|
|
467
479
|
display: grid;
|
|
468
480
|
}
|
|
469
481
|
|
|
@@ -476,42 +488,51 @@ var __webpack_modules__ = {
|
|
|
476
488
|
}
|
|
477
489
|
|
|
478
490
|
.gridCard-Qm5xxI {
|
|
479
|
-
padding: var(--c15t-space-sm, .5rem) var(--c15t-space-md, .75rem);
|
|
480
|
-
border: 1px solid var(--c15t-border, #e3e3e3);
|
|
481
|
-
border-radius: var(--c15t-radius-md, .5rem);
|
|
482
|
-
background-color: var(--c15t-surface, #fff);
|
|
483
|
-
transition: border-color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1));
|
|
484
491
|
justify-content: space-between;
|
|
485
492
|
align-items: center;
|
|
493
|
+
gap: var(--c15t-space-sm, .5rem);
|
|
494
|
+
border: 1px solid var(--c15t-devtools-border-strong, #e3e3e3);
|
|
495
|
+
border-radius: var(--c15t-radius-md, .5rem);
|
|
496
|
+
background-color: var(--c15t-devtools-surface-elevated, #fff);
|
|
497
|
+
min-height: 2.75rem;
|
|
498
|
+
box-shadow: var(--c15t-shadow-sm, 0 1px 2px #0000000d);
|
|
499
|
+
transition: border-color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1)), background-color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1));
|
|
500
|
+
padding: .5625rem .75rem;
|
|
486
501
|
display: flex;
|
|
487
502
|
}
|
|
488
503
|
|
|
489
504
|
.gridCard-Qm5xxI:hover {
|
|
490
505
|
border-color: var(--c15t-border-hover, #c9c9c9);
|
|
506
|
+
background-color: var(--c15t-devtools-surface-subtle, #fafafa);
|
|
491
507
|
}
|
|
492
508
|
|
|
493
509
|
.gridCardTitle-HjXETp {
|
|
494
510
|
font-size: var(--c15t-devtools-font-size-xs, .75rem);
|
|
495
511
|
font-weight: var(--c15t-font-weight-medium, 500);
|
|
496
512
|
color: var(--c15t-text, #171717);
|
|
513
|
+
line-height: var(--c15t-line-height-tight, 1.25);
|
|
497
514
|
}
|
|
498
515
|
|
|
499
516
|
.listItem-XUKGIo {
|
|
500
|
-
padding: var(--c15t-space-xs, .25rem) var(--c15t-space-md, 1rem);
|
|
501
|
-
border-bottom: 1px solid var(--c15t-border, #e3e3e3);
|
|
502
517
|
justify-content: space-between;
|
|
503
518
|
align-items: center;
|
|
519
|
+
gap: var(--c15t-space-sm, .5rem);
|
|
520
|
+
border: 1px solid var(--c15t-devtools-border-strong, #e3e3e3);
|
|
521
|
+
border-radius: var(--c15t-radius-md, .5rem);
|
|
522
|
+
background-color: var(--c15t-devtools-surface-elevated, #fff);
|
|
523
|
+
margin-bottom: .375rem;
|
|
524
|
+
padding: .625rem .75rem;
|
|
504
525
|
display: flex;
|
|
505
526
|
}
|
|
506
527
|
|
|
507
528
|
.listItem-XUKGIo:last-child {
|
|
508
|
-
|
|
529
|
+
margin-bottom: 0;
|
|
509
530
|
}
|
|
510
531
|
|
|
511
532
|
.listItemContent-WDBF1N {
|
|
512
533
|
flex-direction: column;
|
|
513
534
|
flex: 1;
|
|
514
|
-
gap:
|
|
535
|
+
gap: .1875rem;
|
|
515
536
|
min-width: 0;
|
|
516
537
|
display: flex;
|
|
517
538
|
}
|
|
@@ -525,6 +546,7 @@ var __webpack_modules__ = {
|
|
|
525
546
|
.listItemDescription-E6JHyZ {
|
|
526
547
|
font-size: var(--c15t-devtools-font-size-xs, .75rem);
|
|
527
548
|
color: var(--c15t-text-muted, #737373);
|
|
549
|
+
line-height: var(--c15t-line-height-tight, 1.25);
|
|
528
550
|
text-overflow: ellipsis;
|
|
529
551
|
white-space: nowrap;
|
|
530
552
|
overflow: hidden;
|
|
@@ -538,8 +560,8 @@ var __webpack_modules__ = {
|
|
|
538
560
|
}
|
|
539
561
|
|
|
540
562
|
.section-a197cB {
|
|
541
|
-
|
|
542
|
-
|
|
563
|
+
border-bottom: 1px solid var(--c15t-devtools-border-strong, #e3e3e3);
|
|
564
|
+
padding: .75rem 1rem;
|
|
543
565
|
}
|
|
544
566
|
|
|
545
567
|
.section-a197cB:last-child {
|
|
@@ -547,9 +569,10 @@ var __webpack_modules__ = {
|
|
|
547
569
|
}
|
|
548
570
|
|
|
549
571
|
.sectionHeader-Xcljcw {
|
|
550
|
-
margin-bottom: var(--c15t-space-sm, .5rem);
|
|
551
572
|
justify-content: space-between;
|
|
552
573
|
align-items: center;
|
|
574
|
+
gap: .5rem;
|
|
575
|
+
margin-bottom: .625rem;
|
|
553
576
|
display: flex;
|
|
554
577
|
}
|
|
555
578
|
|
|
@@ -558,47 +581,49 @@ var __webpack_modules__ = {
|
|
|
558
581
|
font-weight: var(--c15t-font-weight-semibold, 600);
|
|
559
582
|
color: var(--c15t-text-muted, #737373);
|
|
560
583
|
text-transform: uppercase;
|
|
561
|
-
letter-spacing: .
|
|
584
|
+
letter-spacing: .04em;
|
|
562
585
|
}
|
|
563
586
|
|
|
564
587
|
.overrideField-keNdpJ {
|
|
565
588
|
flex-direction: column;
|
|
566
|
-
gap:
|
|
589
|
+
gap: .3125rem;
|
|
567
590
|
margin-bottom: 0;
|
|
568
591
|
display: flex;
|
|
569
592
|
}
|
|
570
593
|
|
|
571
594
|
.overrideLabel-ApMoTw {
|
|
595
|
+
font-size: var(--c15t-devtools-font-size-xs, .75rem);
|
|
596
|
+
font-weight: var(--c15t-font-weight-semibold, 600);
|
|
572
597
|
color: var(--c15t-text-muted, #737373);
|
|
573
|
-
|
|
574
|
-
font-weight: 600;
|
|
598
|
+
line-height: var(--c15t-line-height-tight, 1.25);
|
|
575
599
|
}
|
|
576
600
|
|
|
577
601
|
.overrideHint-yCfwGt {
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
602
|
+
font-size: var(--c15t-devtools-font-size-xs, .75rem);
|
|
603
|
+
color: var(--c15t-text-muted, #737373);
|
|
604
|
+
line-height: var(--c15t-line-height-tight, 1.25);
|
|
605
|
+
margin-top: .5rem;
|
|
581
606
|
}
|
|
582
607
|
|
|
583
608
|
.overrideActions-imdcn7 {
|
|
584
|
-
border-top: 1px dashed var(--c15t-border, #e3e3e3);
|
|
609
|
+
border-top: 1px dashed var(--c15t-devtools-border-strong, #e3e3e3);
|
|
585
610
|
justify-content: space-between;
|
|
586
611
|
align-items: center;
|
|
587
|
-
gap:
|
|
588
|
-
margin-top:
|
|
589
|
-
padding-top:
|
|
612
|
+
gap: .5rem;
|
|
613
|
+
margin-top: .625rem;
|
|
614
|
+
padding-top: .625rem;
|
|
590
615
|
display: flex;
|
|
591
616
|
}
|
|
592
617
|
|
|
593
618
|
.overrideActionButtons-gYOx1e {
|
|
594
619
|
flex-wrap: wrap;
|
|
595
|
-
gap:
|
|
620
|
+
gap: .375rem;
|
|
596
621
|
display: flex;
|
|
597
622
|
}
|
|
598
623
|
|
|
599
624
|
.overrideStatus-sty_qS {
|
|
625
|
+
font-size: var(--c15t-devtools-font-size-xs, .75rem);
|
|
600
626
|
color: var(--c15t-text-muted, #737373);
|
|
601
|
-
font-size: 11px;
|
|
602
627
|
}
|
|
603
628
|
|
|
604
629
|
.overrideStatusDirty-OUdDMw {
|
|
@@ -606,9 +631,10 @@ var __webpack_modules__ = {
|
|
|
606
631
|
}
|
|
607
632
|
|
|
608
633
|
.infoRow-RlB_0h {
|
|
609
|
-
padding: var(--c15t-space-xs, .25rem) 0;
|
|
610
634
|
justify-content: space-between;
|
|
611
635
|
align-items: center;
|
|
636
|
+
gap: .5rem;
|
|
637
|
+
padding: .25rem 0;
|
|
612
638
|
display: flex;
|
|
613
639
|
}
|
|
614
640
|
|
|
@@ -621,6 +647,7 @@ var __webpack_modules__ = {
|
|
|
621
647
|
font-size: var(--c15t-devtools-font-size-xs, .75rem);
|
|
622
648
|
font-weight: var(--c15t-font-weight-medium, 500);
|
|
623
649
|
color: var(--c15t-text, #171717);
|
|
650
|
+
font-variant-numeric: tabular-nums;
|
|
624
651
|
font-family: ui-monospace, Cascadia Code, Source Code Pro, Menlo, Consolas, DejaVu Sans Mono, monospace;
|
|
625
652
|
}
|
|
626
653
|
|
|
@@ -631,18 +658,27 @@ var __webpack_modules__ = {
|
|
|
631
658
|
flex-direction: column;
|
|
632
659
|
justify-content: center;
|
|
633
660
|
align-items: center;
|
|
661
|
+
gap: .375rem;
|
|
634
662
|
display: flex;
|
|
635
663
|
}
|
|
636
664
|
|
|
637
665
|
.emptyStateIcon-WHFkX8 {
|
|
666
|
+
opacity: .55;
|
|
638
667
|
width: 32px;
|
|
639
668
|
height: 32px;
|
|
640
|
-
margin-bottom: var(--c15t-space-sm, .5rem);
|
|
641
|
-
opacity: .5;
|
|
642
669
|
}
|
|
643
670
|
|
|
644
671
|
.emptyStateText-TaLvAJ {
|
|
645
672
|
font-size: var(--c15t-font-size-sm, .875rem);
|
|
673
|
+
line-height: var(--c15t-line-height-normal, 1.5);
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
.disconnectedState-dOtZBG {
|
|
677
|
+
padding: var(--c15t-space-xl, 2rem);
|
|
678
|
+
text-align: center;
|
|
679
|
+
font-size: var(--c15t-font-size-sm, .875rem);
|
|
680
|
+
color: var(--c15t-text-muted, #737373);
|
|
681
|
+
line-height: var(--c15t-line-height-normal, 1.5);
|
|
646
682
|
}
|
|
647
683
|
|
|
648
684
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -709,7 +745,8 @@ var __webpack_modules__ = {
|
|
|
709
745
|
infoValue: "infoValue-flMl_e",
|
|
710
746
|
emptyState: "emptyState-QcmzTQ",
|
|
711
747
|
emptyStateIcon: "emptyStateIcon-WHFkX8",
|
|
712
|
-
emptyStateText: "emptyStateText-TaLvAJ"
|
|
748
|
+
emptyStateText: "emptyStateText-TaLvAJ",
|
|
749
|
+
disconnectedState: "disconnectedState-dOtZBG"
|
|
713
750
|
};
|
|
714
751
|
const __rspack_default_export = ___CSS_LOADER_EXPORT___;
|
|
715
752
|
},
|
|
@@ -738,9 +775,9 @@ var __webpack_modules__ = {
|
|
|
738
775
|
.floatingButton-Gw8MtJ {
|
|
739
776
|
width: var(--c15t-devtools-button-size, 40px);
|
|
740
777
|
height: var(--c15t-devtools-button-size, 40px);
|
|
741
|
-
border: 1px solid var(--c15t-border, #e3e3e3);
|
|
778
|
+
border: 1px solid var(--c15t-devtools-border-strong, #e3e3e3);
|
|
742
779
|
border-radius: var(--c15t-radius-full, 9999px);
|
|
743
|
-
background-color: var(--c15t-surface, #fff);
|
|
780
|
+
background-color: var(--c15t-devtools-surface-elevated, #fff);
|
|
744
781
|
box-shadow: var(--c15t-shadow-lg, 0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a);
|
|
745
782
|
cursor: grab;
|
|
746
783
|
z-index: var(--c15t-devtools-z-index, 99999);
|
|
@@ -768,13 +805,13 @@ var __webpack_modules__ = {
|
|
|
768
805
|
}
|
|
769
806
|
|
|
770
807
|
.floatingButton-Gw8MtJ:focus-visible {
|
|
771
|
-
|
|
772
|
-
outline
|
|
808
|
+
box-shadow: var(--c15t-shadow-lg, 0 8px 24px #0000001f), 0 0 0 2px var(--c15t-devtools-focus-ring, #335cff);
|
|
809
|
+
outline: none;
|
|
773
810
|
}
|
|
774
811
|
|
|
775
812
|
.floatingButton-Gw8MtJ:active {
|
|
776
813
|
cursor: grabbing;
|
|
777
|
-
transform: scale(
|
|
814
|
+
transform: scale(.98);
|
|
778
815
|
}
|
|
779
816
|
|
|
780
817
|
.floatingButtonIcon-cHWefk {
|
|
@@ -815,6 +852,7 @@ var __webpack_modules__ = {
|
|
|
815
852
|
|
|
816
853
|
.backdrop-LhVMB5 {
|
|
817
854
|
background-color: var(--c15t-overlay, #00000080);
|
|
855
|
+
backdrop-filter: blur(1px);
|
|
818
856
|
z-index: calc(var(--c15t-devtools-z-index, 99999) + 1);
|
|
819
857
|
position: fixed;
|
|
820
858
|
inset: 0;
|
|
@@ -823,10 +861,10 @@ var __webpack_modules__ = {
|
|
|
823
861
|
.panel-jtWove {
|
|
824
862
|
width: var(--c15t-devtools-panel-width, 480px);
|
|
825
863
|
max-height: var(--c15t-devtools-panel-max-height, 560px);
|
|
826
|
-
background-color: var(--c15t-surface, #fff);
|
|
827
|
-
border: 1px solid var(--c15t-border, #e3e3e3);
|
|
864
|
+
background-color: var(--c15t-devtools-surface-elevated, #fff);
|
|
865
|
+
border: 1px solid var(--c15t-devtools-border-strong, #e3e3e3);
|
|
828
866
|
border-radius: var(--c15t-radius-lg, .75rem);
|
|
829
|
-
box-shadow: var(--c15t-shadow-lg, 0
|
|
867
|
+
box-shadow: var(--c15t-shadow-lg, 0 10px 28px #00000029);
|
|
830
868
|
z-index: calc(var(--c15t-devtools-z-index, 99999) + 2);
|
|
831
869
|
flex-direction: column;
|
|
832
870
|
display: flex;
|
|
@@ -859,11 +897,11 @@ var __webpack_modules__ = {
|
|
|
859
897
|
}
|
|
860
898
|
|
|
861
899
|
.header-xluoTr {
|
|
862
|
-
|
|
863
|
-
border-bottom: 1px solid var(--c15t-border, #e3e3e3);
|
|
900
|
+
border-bottom: 1px solid var(--c15t-devtools-border-strong, #e3e3e3);
|
|
864
901
|
background-color: var(--c15t-devtools-surface-muted, #f5f5f5);
|
|
865
902
|
justify-content: space-between;
|
|
866
903
|
align-items: center;
|
|
904
|
+
padding: .6875rem .875rem;
|
|
867
905
|
display: flex;
|
|
868
906
|
}
|
|
869
907
|
|
|
@@ -872,6 +910,7 @@ var __webpack_modules__ = {
|
|
|
872
910
|
gap: var(--c15t-space-sm, .5rem);
|
|
873
911
|
font-size: var(--c15t-font-size-sm, .875rem);
|
|
874
912
|
font-weight: var(--c15t-font-weight-semibold, 600);
|
|
913
|
+
line-height: var(--c15t-line-height-tight, 1.25);
|
|
875
914
|
color: var(--c15t-text, #171717);
|
|
876
915
|
display: flex;
|
|
877
916
|
}
|
|
@@ -883,9 +922,9 @@ var __webpack_modules__ = {
|
|
|
883
922
|
}
|
|
884
923
|
|
|
885
924
|
.closeButton-Yto0Nb {
|
|
886
|
-
border-radius: var(--c15t-radius-
|
|
887
|
-
width:
|
|
888
|
-
height:
|
|
925
|
+
border-radius: var(--c15t-radius-md, .5rem);
|
|
926
|
+
width: 2rem;
|
|
927
|
+
height: 2rem;
|
|
889
928
|
color: var(--c15t-text-muted, #737373);
|
|
890
929
|
cursor: pointer;
|
|
891
930
|
transition: background-color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1)), color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1));
|
|
@@ -898,13 +937,13 @@ var __webpack_modules__ = {
|
|
|
898
937
|
}
|
|
899
938
|
|
|
900
939
|
.closeButton-Yto0Nb:hover {
|
|
901
|
-
background-color: var(--c15t-surface-
|
|
940
|
+
background-color: var(--c15t-devtools-surface-subtle, #f7f7f7);
|
|
902
941
|
color: var(--c15t-text, #171717);
|
|
903
942
|
}
|
|
904
943
|
|
|
905
944
|
.closeButton-Yto0Nb:focus-visible {
|
|
906
|
-
|
|
907
|
-
outline
|
|
945
|
+
box-shadow: 0 0 0 2px var(--c15t-devtools-focus-ring, #335cff);
|
|
946
|
+
outline: none;
|
|
908
947
|
}
|
|
909
948
|
|
|
910
949
|
.closeButtonIcon-fVlR1I {
|
|
@@ -912,33 +951,71 @@ var __webpack_modules__ = {
|
|
|
912
951
|
height: 16px;
|
|
913
952
|
}
|
|
914
953
|
|
|
954
|
+
.inlineActionButton-Ky8BmN {
|
|
955
|
+
border: 1px solid var(--c15t-devtools-border-strong, #e3e3e3);
|
|
956
|
+
border-radius: var(--c15t-radius-sm, .375rem);
|
|
957
|
+
background-color: var(--c15t-devtools-surface-elevated, #fff);
|
|
958
|
+
min-height: 1.625rem;
|
|
959
|
+
color: var(--c15t-text, #171717);
|
|
960
|
+
font-family: var(--c15t-font-family, system-ui, -apple-system, sans-serif);
|
|
961
|
+
font-size: var(--c15t-devtools-font-size-xs, .75rem);
|
|
962
|
+
font-weight: var(--c15t-font-weight-medium, 500);
|
|
963
|
+
line-height: var(--c15t-line-height-tight, 1.25);
|
|
964
|
+
cursor: pointer;
|
|
965
|
+
transition: background-color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1)), border-color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1));
|
|
966
|
+
justify-content: center;
|
|
967
|
+
align-items: center;
|
|
968
|
+
padding: .25rem .5rem;
|
|
969
|
+
display: inline-flex;
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
.inlineActionButton-Ky8BmN:hover {
|
|
973
|
+
background-color: var(--c15t-devtools-surface-subtle, #f7f7f7);
|
|
974
|
+
border-color: var(--c15t-border-hover, #c9c9c9);
|
|
975
|
+
}
|
|
976
|
+
|
|
977
|
+
.inlineActionButton-Ky8BmN:focus-visible {
|
|
978
|
+
box-shadow: 0 0 0 2px var(--c15t-devtools-focus-ring, #335cff);
|
|
979
|
+
outline: none;
|
|
980
|
+
}
|
|
981
|
+
|
|
915
982
|
.content-yDMYfG {
|
|
983
|
+
scrollbar-gutter: stable;
|
|
916
984
|
overscroll-behavior: contain;
|
|
917
985
|
-webkit-overflow-scrolling: touch;
|
|
986
|
+
background-color: var(--c15t-devtools-surface-elevated, #fff);
|
|
918
987
|
flex: auto;
|
|
919
988
|
min-height: 200px;
|
|
920
|
-
overflow: hidden
|
|
989
|
+
overflow: hidden scroll;
|
|
921
990
|
}
|
|
922
991
|
|
|
923
992
|
.footer-ESbmwQ {
|
|
924
|
-
|
|
925
|
-
border-top: 1px solid var(--c15t-border, #e3e3e3);
|
|
993
|
+
border-top: 1px solid var(--c15t-devtools-border-strong, #e3e3e3);
|
|
926
994
|
background-color: var(--c15t-devtools-surface-muted, #f5f5f5);
|
|
927
995
|
font-size: var(--c15t-devtools-font-size-xs, .75rem);
|
|
928
996
|
color: var(--c15t-text-muted, #737373);
|
|
929
997
|
justify-content: space-between;
|
|
930
998
|
align-items: center;
|
|
999
|
+
gap: .5rem;
|
|
1000
|
+
padding: .5rem .75rem;
|
|
931
1001
|
display: flex;
|
|
932
1002
|
}
|
|
933
1003
|
|
|
934
1004
|
.footerStatus-rlb99A {
|
|
935
1005
|
align-items: center;
|
|
936
|
-
gap:
|
|
1006
|
+
gap: .375rem;
|
|
1007
|
+
min-width: 0;
|
|
937
1008
|
display: flex;
|
|
938
1009
|
}
|
|
939
1010
|
|
|
1011
|
+
.footerMeta-Vdtxdk {
|
|
1012
|
+
opacity: .75;
|
|
1013
|
+
white-space: nowrap;
|
|
1014
|
+
}
|
|
1015
|
+
|
|
940
1016
|
.statusDot-hYJoej {
|
|
941
1017
|
border-radius: var(--c15t-radius-full, 9999px);
|
|
1018
|
+
flex-shrink: 0;
|
|
942
1019
|
width: 6px;
|
|
943
1020
|
height: 6px;
|
|
944
1021
|
}
|
|
@@ -977,6 +1054,7 @@ var __webpack_modules__ = {
|
|
|
977
1054
|
font-size: var(--c15t-font-size-sm, .875rem);
|
|
978
1055
|
color: var(--c15t-text-muted, #737373);
|
|
979
1056
|
max-width: 280px;
|
|
1057
|
+
line-height: var(--c15t-line-height-normal, 1.5);
|
|
980
1058
|
}
|
|
981
1059
|
|
|
982
1060
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -993,17 +1071,17 @@ var __webpack_modules__ = {
|
|
|
993
1071
|
}
|
|
994
1072
|
|
|
995
1073
|
.dropdownMenu-aKK18l {
|
|
996
|
-
|
|
997
|
-
padding: var(--c15t-space-xs, .25rem);
|
|
998
|
-
border: 1px solid var(--c15t-border, #e3e3e3);
|
|
1074
|
+
border: 1px solid var(--c15t-devtools-border-strong, #e3e3e3);
|
|
999
1075
|
border-radius: var(--c15t-radius-lg, .75rem);
|
|
1000
|
-
background-color: var(--c15t-surface, #fff);
|
|
1076
|
+
background-color: var(--c15t-devtools-surface-elevated, #fff);
|
|
1077
|
+
min-width: 200px;
|
|
1001
1078
|
box-shadow: var(--c15t-shadow-lg, 0 8px 24px #0000001f);
|
|
1002
1079
|
z-index: calc(var(--c15t-devtools-z-index, 99999) + 1);
|
|
1003
1080
|
opacity: 0;
|
|
1004
1081
|
transform-origin: 0 100%;
|
|
1005
1082
|
pointer-events: none;
|
|
1006
1083
|
transition: opacity var(--c15t-duration-fast, .1s) var(--c15t-easing-out, cubic-bezier(.215, .61, .355, 1)), transform var(--c15t-duration-fast, .1s) var(--c15t-easing-out, cubic-bezier(.215, .61, .355, 1));
|
|
1084
|
+
padding: .375rem;
|
|
1007
1085
|
position: fixed;
|
|
1008
1086
|
transform: scale(.95)translateY(8px);
|
|
1009
1087
|
}
|
|
@@ -1031,34 +1109,35 @@ var __webpack_modules__ = {
|
|
|
1031
1109
|
}
|
|
1032
1110
|
|
|
1033
1111
|
.menuItem-kBbHRP {
|
|
1034
|
-
align-items: center;
|
|
1035
|
-
gap: var(--c15t-space-sm, .5rem);
|
|
1036
|
-
width: 100%;
|
|
1037
|
-
padding: var(--c15t-space-sm, .5rem) var(--c15t-space-md, .75rem);
|
|
1038
1112
|
border-radius: var(--c15t-radius-md, .5rem);
|
|
1113
|
+
width: 100%;
|
|
1039
1114
|
color: var(--c15t-text, #171717);
|
|
1040
|
-
font-size: var(--c15t-font-size-
|
|
1115
|
+
font-size: var(--c15t-devtools-font-size-xs, .75rem);
|
|
1041
1116
|
font-weight: var(--c15t-font-weight-medium, 500);
|
|
1117
|
+
line-height: var(--c15t-line-height-tight, 1.25);
|
|
1042
1118
|
text-align: left;
|
|
1043
1119
|
cursor: pointer;
|
|
1044
1120
|
transition: background-color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1));
|
|
1045
1121
|
background: none;
|
|
1046
1122
|
border: none;
|
|
1123
|
+
align-items: center;
|
|
1124
|
+
gap: .625rem;
|
|
1125
|
+
padding: .5rem .625rem;
|
|
1047
1126
|
display: flex;
|
|
1048
1127
|
}
|
|
1049
1128
|
|
|
1050
1129
|
.menuItem-kBbHRP:hover {
|
|
1051
|
-
background-color: var(--c15t-surface-
|
|
1130
|
+
background-color: var(--c15t-devtools-surface-subtle, #f2f2f2);
|
|
1052
1131
|
}
|
|
1053
1132
|
|
|
1054
1133
|
.menuItem-kBbHRP:focus-visible {
|
|
1055
|
-
|
|
1056
|
-
outline
|
|
1134
|
+
box-shadow: 0 0 0 2px var(--c15t-devtools-focus-ring, #335cff);
|
|
1135
|
+
outline: none;
|
|
1057
1136
|
}
|
|
1058
1137
|
|
|
1059
1138
|
.menuItemIcon-P3pP5K {
|
|
1060
|
-
width:
|
|
1061
|
-
height:
|
|
1139
|
+
width: 1rem;
|
|
1140
|
+
height: 1rem;
|
|
1062
1141
|
color: var(--c15t-text-muted, #737373);
|
|
1063
1142
|
flex-shrink: 0;
|
|
1064
1143
|
}
|
|
@@ -1071,6 +1150,7 @@ var __webpack_modules__ = {
|
|
|
1071
1150
|
font-size: var(--c15t-devtools-font-size-xs, .75rem);
|
|
1072
1151
|
color: var(--c15t-text-muted, #737373);
|
|
1073
1152
|
font-weight: var(--c15t-font-weight-normal, 400);
|
|
1153
|
+
margin-top: .125rem;
|
|
1074
1154
|
}
|
|
1075
1155
|
|
|
1076
1156
|
.menuItemContent-hBlruV {
|
|
@@ -1086,8 +1166,8 @@ var __webpack_modules__ = {
|
|
|
1086
1166
|
.menuItemToggleTrack-gDp_f3 {
|
|
1087
1167
|
background-color: var(--c15t-switch-track, #d9d9d9);
|
|
1088
1168
|
border-radius: var(--c15t-radius-full, 9999px);
|
|
1089
|
-
width:
|
|
1090
|
-
height:
|
|
1169
|
+
width: 2rem;
|
|
1170
|
+
height: 1.25rem;
|
|
1091
1171
|
transition: background-color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1));
|
|
1092
1172
|
position: relative;
|
|
1093
1173
|
}
|
|
@@ -1095,21 +1175,22 @@ var __webpack_modules__ = {
|
|
|
1095
1175
|
.menuItemToggleThumb-ioqqyc {
|
|
1096
1176
|
background-color: var(--c15t-switch-thumb, #fff);
|
|
1097
1177
|
border-radius: var(--c15t-radius-full, 9999px);
|
|
1098
|
-
width:
|
|
1099
|
-
height:
|
|
1100
|
-
box-shadow: var(--c15t-
|
|
1178
|
+
width: .75rem;
|
|
1179
|
+
height: .75rem;
|
|
1180
|
+
box-shadow: 0 0 0 1px var(--c15t-border, #e3e3e3);
|
|
1101
1181
|
transition: transform var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1));
|
|
1102
1182
|
position: absolute;
|
|
1103
|
-
top:
|
|
1183
|
+
top: 50%;
|
|
1104
1184
|
left: 2px;
|
|
1185
|
+
transform: translateY(-50%);
|
|
1105
1186
|
}
|
|
1106
1187
|
|
|
1107
1188
|
.menuItemToggleChecked-K3BPtk .menuItemToggleTrack-gDp_f3 {
|
|
1108
|
-
background-color: var(--c15t-switch-track-
|
|
1189
|
+
background-color: var(--c15t-switch-track-active, #335cff);
|
|
1109
1190
|
}
|
|
1110
1191
|
|
|
1111
1192
|
.menuItemToggleChecked-K3BPtk .menuItemToggleThumb-ioqqyc {
|
|
1112
|
-
transform:
|
|
1193
|
+
transform: translate(1rem, -50%);
|
|
1113
1194
|
}
|
|
1114
1195
|
|
|
1115
1196
|
.menuDivider-JIBdhU {
|
|
@@ -1145,9 +1226,11 @@ var __webpack_modules__ = {
|
|
|
1145
1226
|
headerLogo: "headerLogo-PxJ_w1",
|
|
1146
1227
|
closeButton: "closeButton-Yto0Nb",
|
|
1147
1228
|
closeButtonIcon: "closeButtonIcon-fVlR1I",
|
|
1229
|
+
inlineActionButton: "inlineActionButton-Ky8BmN",
|
|
1148
1230
|
content: "content-yDMYfG",
|
|
1149
1231
|
footer: "footer-ESbmwQ",
|
|
1150
1232
|
footerStatus: "footerStatus-rlb99A",
|
|
1233
|
+
footerMeta: "footerMeta-Vdtxdk",
|
|
1151
1234
|
statusDot: "statusDot-hYJoej",
|
|
1152
1235
|
statusConnected: "statusConnected-hPSUgS",
|
|
1153
1236
|
statusDisconnected: "statusDisconnected-HIpcee",
|
|
@@ -1186,62 +1269,63 @@ var __webpack_modules__ = {
|
|
|
1186
1269
|
___CSS_LOADER_EXPORT___.push([
|
|
1187
1270
|
module.id,
|
|
1188
1271
|
`.tabList-IyuiBE {
|
|
1272
|
+
border-bottom: 1px solid var(--c15t-devtools-border-strong, #e3e3e3);
|
|
1273
|
+
background-color: var(--c15t-devtools-surface-subtle, #fafafa);
|
|
1189
1274
|
align-items: center;
|
|
1190
|
-
gap:
|
|
1191
|
-
padding:
|
|
1192
|
-
border-bottom: 1px solid var(--c15t-border, #e3e3e3);
|
|
1193
|
-
background-color: var(--c15t-surface, #fff);
|
|
1194
|
-
scrollbar-width: none;
|
|
1195
|
-
-ms-overflow-style: none;
|
|
1196
|
-
scroll-padding-inline-end: var(--c15t-space-sm, .5rem);
|
|
1275
|
+
gap: .375rem;
|
|
1276
|
+
padding: .75rem;
|
|
1197
1277
|
display: flex;
|
|
1198
|
-
overflow-x: auto;
|
|
1199
1278
|
}
|
|
1200
1279
|
|
|
1201
|
-
.
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1280
|
+
.tabStrip-_KrWe4 {
|
|
1281
|
+
align-items: center;
|
|
1282
|
+
gap: var(--c15t-space-xs, .25rem);
|
|
1283
|
+
flex: auto;
|
|
1284
|
+
min-width: 0;
|
|
1285
|
+
display: flex;
|
|
1286
|
+
overflow: hidden;
|
|
1208
1287
|
}
|
|
1209
1288
|
|
|
1210
1289
|
.tab-yfDEqg {
|
|
1211
|
-
align-items: center;
|
|
1212
|
-
gap: var(--c15t-space-xs, .25rem);
|
|
1213
1290
|
border-radius: var(--c15t-radius-md, .5rem);
|
|
1291
|
+
min-height: 1.875rem;
|
|
1214
1292
|
color: var(--c15t-text-muted, #737373);
|
|
1215
|
-
font-family:
|
|
1216
|
-
font-size:
|
|
1293
|
+
font-family: var(--c15t-font-family, system-ui, -apple-system, sans-serif);
|
|
1294
|
+
font-size: var(--c15t-devtools-font-size-xs, .75rem);
|
|
1217
1295
|
font-weight: var(--c15t-font-weight-medium, 500);
|
|
1296
|
+
line-height: var(--c15t-line-height-tight, 1.25);
|
|
1218
1297
|
cursor: pointer;
|
|
1219
1298
|
white-space: nowrap;
|
|
1220
|
-
transition: background-color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1)), color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1));
|
|
1299
|
+
transition: background-color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1)), color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1)), border-color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1)), box-shadow var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1));
|
|
1221
1300
|
background-color: #0000;
|
|
1222
|
-
border:
|
|
1223
|
-
|
|
1301
|
+
border: 1px solid #0000;
|
|
1302
|
+
flex-shrink: 0;
|
|
1303
|
+
align-items: center;
|
|
1304
|
+
gap: .375rem;
|
|
1305
|
+
padding: .25rem .625rem;
|
|
1224
1306
|
display: flex;
|
|
1225
1307
|
}
|
|
1226
1308
|
|
|
1227
1309
|
.tab-yfDEqg:hover {
|
|
1228
|
-
background-color: var(--c15t-surface-
|
|
1310
|
+
background-color: var(--c15t-devtools-surface-muted, #f7f7f7);
|
|
1229
1311
|
color: var(--c15t-text, #171717);
|
|
1230
1312
|
}
|
|
1231
1313
|
|
|
1232
1314
|
.tab-yfDEqg:focus-visible {
|
|
1233
|
-
|
|
1234
|
-
outline
|
|
1315
|
+
box-shadow: 0 0 0 2px var(--c15t-devtools-focus-ring, #335cff);
|
|
1316
|
+
outline: none;
|
|
1235
1317
|
}
|
|
1236
1318
|
|
|
1237
1319
|
.tabActive-r4hing {
|
|
1238
|
-
background-color: var(--c15t-
|
|
1239
|
-
color: var(--c15t-
|
|
1320
|
+
background-color: var(--c15t-devtools-surface-elevated, #fff);
|
|
1321
|
+
border-color: var(--c15t-devtools-border-strong, #e3e3e3);
|
|
1322
|
+
color: var(--c15t-text, #171717);
|
|
1323
|
+
box-shadow: var(--c15t-shadow-sm, 0 1px 2px #0000000d);
|
|
1240
1324
|
}
|
|
1241
1325
|
|
|
1242
1326
|
.tabActive-r4hing:hover {
|
|
1243
|
-
background-color: var(--c15t-
|
|
1244
|
-
color: var(--c15t-text
|
|
1327
|
+
background-color: var(--c15t-devtools-surface-elevated, #fff);
|
|
1328
|
+
color: var(--c15t-text, #171717);
|
|
1245
1329
|
}
|
|
1246
1330
|
|
|
1247
1331
|
.tabIcon-U9tnu0 {
|
|
@@ -1250,6 +1334,131 @@ var __webpack_modules__ = {
|
|
|
1250
1334
|
height: 14px;
|
|
1251
1335
|
}
|
|
1252
1336
|
|
|
1337
|
+
.tabHidden-HBXYSd {
|
|
1338
|
+
display: none;
|
|
1339
|
+
}
|
|
1340
|
+
|
|
1341
|
+
.overflowContainer-TTw9DO {
|
|
1342
|
+
flex-shrink: 0;
|
|
1343
|
+
position: relative;
|
|
1344
|
+
}
|
|
1345
|
+
|
|
1346
|
+
.overflowContainerHidden-sQa_XZ {
|
|
1347
|
+
display: none;
|
|
1348
|
+
}
|
|
1349
|
+
|
|
1350
|
+
.overflowButton-tKq4FF {
|
|
1351
|
+
border-radius: var(--c15t-radius-md, .5rem);
|
|
1352
|
+
width: 1.875rem;
|
|
1353
|
+
height: 1.875rem;
|
|
1354
|
+
color: var(--c15t-text-muted, #737373);
|
|
1355
|
+
cursor: pointer;
|
|
1356
|
+
transition: background-color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1)), color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1)), border-color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1));
|
|
1357
|
+
background-color: #0000;
|
|
1358
|
+
border: 1px solid #0000;
|
|
1359
|
+
justify-content: center;
|
|
1360
|
+
align-items: center;
|
|
1361
|
+
padding: 0;
|
|
1362
|
+
display: inline-flex;
|
|
1363
|
+
}
|
|
1364
|
+
|
|
1365
|
+
.overflowButton-tKq4FF:hover {
|
|
1366
|
+
background-color: var(--c15t-devtools-surface-muted, #f7f7f7);
|
|
1367
|
+
color: var(--c15t-text, #171717);
|
|
1368
|
+
}
|
|
1369
|
+
|
|
1370
|
+
.overflowButton-tKq4FF:focus-visible {
|
|
1371
|
+
box-shadow: 0 0 0 2px var(--c15t-devtools-focus-ring, #335cff);
|
|
1372
|
+
outline: none;
|
|
1373
|
+
}
|
|
1374
|
+
|
|
1375
|
+
.overflowButtonIcon-FSurfC {
|
|
1376
|
+
justify-content: center;
|
|
1377
|
+
align-items: center;
|
|
1378
|
+
width: 14px;
|
|
1379
|
+
height: 14px;
|
|
1380
|
+
display: inline-flex;
|
|
1381
|
+
}
|
|
1382
|
+
|
|
1383
|
+
.overflowMenu-TST0eZ {
|
|
1384
|
+
border: 1px solid var(--c15t-devtools-border-strong, #e3e3e3);
|
|
1385
|
+
border-radius: var(--c15t-radius-md, .5rem);
|
|
1386
|
+
background-color: var(--c15t-devtools-surface-elevated, #fff);
|
|
1387
|
+
min-width: 10rem;
|
|
1388
|
+
box-shadow: var(--c15t-shadow-md, 0 4px 12px #00000014);
|
|
1389
|
+
opacity: 0;
|
|
1390
|
+
transform-origin: 100% 0;
|
|
1391
|
+
pointer-events: none;
|
|
1392
|
+
z-index: 10;
|
|
1393
|
+
transition: opacity var(--c15t-duration-fast, .1s) var(--c15t-easing-out, cubic-bezier(.215, .61, .355, 1)), transform var(--c15t-duration-fast, .1s) var(--c15t-easing-out, cubic-bezier(.215, .61, .355, 1));
|
|
1394
|
+
flex-direction: column;
|
|
1395
|
+
gap: .125rem;
|
|
1396
|
+
padding: .3125rem;
|
|
1397
|
+
display: flex;
|
|
1398
|
+
position: absolute;
|
|
1399
|
+
top: calc(100% + .375rem);
|
|
1400
|
+
right: 0;
|
|
1401
|
+
transform: translateY(-4px)scale(.98);
|
|
1402
|
+
}
|
|
1403
|
+
|
|
1404
|
+
.overflowMenu-TST0eZ[data-state="open"] {
|
|
1405
|
+
opacity: 1;
|
|
1406
|
+
pointer-events: auto;
|
|
1407
|
+
transform: translateY(0)scale(1);
|
|
1408
|
+
}
|
|
1409
|
+
|
|
1410
|
+
.overflowItem-y5Pz7k {
|
|
1411
|
+
border-radius: var(--c15t-radius-sm, .375rem);
|
|
1412
|
+
min-height: 1.75rem;
|
|
1413
|
+
color: var(--c15t-text, #171717);
|
|
1414
|
+
font-family: var(--c15t-font-family, system-ui, -apple-system, sans-serif);
|
|
1415
|
+
font-size: var(--c15t-devtools-font-size-xs, .75rem);
|
|
1416
|
+
font-weight: var(--c15t-font-weight-medium, 500);
|
|
1417
|
+
line-height: var(--c15t-line-height-tight, 1.25);
|
|
1418
|
+
text-align: left;
|
|
1419
|
+
cursor: pointer;
|
|
1420
|
+
white-space: nowrap;
|
|
1421
|
+
transition: background-color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1)), color var(--c15t-duration-fast, .1s) var(--c15t-easing, cubic-bezier(.4, 0, .2, 1));
|
|
1422
|
+
background-color: #0000;
|
|
1423
|
+
border: none;
|
|
1424
|
+
align-items: center;
|
|
1425
|
+
gap: .5rem;
|
|
1426
|
+
padding: .3125rem .5rem;
|
|
1427
|
+
display: inline-flex;
|
|
1428
|
+
}
|
|
1429
|
+
|
|
1430
|
+
.overflowItem-y5Pz7k:hover {
|
|
1431
|
+
background-color: var(--c15t-devtools-surface-subtle, #fafafa);
|
|
1432
|
+
}
|
|
1433
|
+
|
|
1434
|
+
.overflowItem-y5Pz7k:focus-visible {
|
|
1435
|
+
box-shadow: 0 0 0 2px var(--c15t-devtools-focus-ring, #335cff);
|
|
1436
|
+
outline: none;
|
|
1437
|
+
}
|
|
1438
|
+
|
|
1439
|
+
.overflowItemActive-mzVG1T {
|
|
1440
|
+
background-color: var(--c15t-devtools-accent-soft, #ebefff);
|
|
1441
|
+
color: var(--c15t-text, #171717);
|
|
1442
|
+
}
|
|
1443
|
+
|
|
1444
|
+
.overflowItemDisabled-dcHX3K {
|
|
1445
|
+
opacity: .5;
|
|
1446
|
+
cursor: not-allowed;
|
|
1447
|
+
}
|
|
1448
|
+
|
|
1449
|
+
.overflowItemIcon-fz291V {
|
|
1450
|
+
flex-shrink: 0;
|
|
1451
|
+
justify-content: center;
|
|
1452
|
+
align-items: center;
|
|
1453
|
+
width: 14px;
|
|
1454
|
+
height: 14px;
|
|
1455
|
+
display: inline-flex;
|
|
1456
|
+
}
|
|
1457
|
+
|
|
1458
|
+
.overflowItemHidden-k4aawi {
|
|
1459
|
+
display: none;
|
|
1460
|
+
}
|
|
1461
|
+
|
|
1253
1462
|
.tabDisabled-lDuv5l {
|
|
1254
1463
|
opacity: .5;
|
|
1255
1464
|
cursor: not-allowed;
|
|
@@ -1270,7 +1479,7 @@ var __webpack_modules__ = {
|
|
|
1270
1479
|
}
|
|
1271
1480
|
|
|
1272
1481
|
@media (prefers-reduced-motion: reduce) {
|
|
1273
|
-
.tab-yfDEqg {
|
|
1482
|
+
.tab-yfDEqg, .overflowButton-tKq4FF, .overflowMenu-TST0eZ, .overflowItem-y5Pz7k {
|
|
1274
1483
|
transition: none;
|
|
1275
1484
|
}
|
|
1276
1485
|
}
|
|
@@ -1286,9 +1495,21 @@ var __webpack_modules__ = {
|
|
|
1286
1495
|
]);
|
|
1287
1496
|
___CSS_LOADER_EXPORT___.locals = {
|
|
1288
1497
|
tabList: "tabList-IyuiBE",
|
|
1498
|
+
tabStrip: "tabStrip-_KrWe4",
|
|
1289
1499
|
tab: "tab-yfDEqg",
|
|
1290
1500
|
tabActive: "tabActive-r4hing",
|
|
1291
1501
|
tabIcon: "tabIcon-U9tnu0",
|
|
1502
|
+
tabHidden: "tabHidden-HBXYSd",
|
|
1503
|
+
overflowContainer: "overflowContainer-TTw9DO",
|
|
1504
|
+
overflowContainerHidden: "overflowContainerHidden-sQa_XZ",
|
|
1505
|
+
overflowButton: "overflowButton-tKq4FF",
|
|
1506
|
+
overflowButtonIcon: "overflowButtonIcon-FSurfC",
|
|
1507
|
+
overflowMenu: "overflowMenu-TST0eZ",
|
|
1508
|
+
overflowItem: "overflowItem-y5Pz7k",
|
|
1509
|
+
overflowItemActive: "overflowItemActive-mzVG1T",
|
|
1510
|
+
overflowItemDisabled: "overflowItemDisabled-dcHX3K",
|
|
1511
|
+
overflowItemIcon: "overflowItemIcon-fz291V",
|
|
1512
|
+
overflowItemHidden: "overflowItemHidden-k4aawi",
|
|
1292
1513
|
tabDisabled: "tabDisabled-lDuv5l",
|
|
1293
1514
|
tabPanel: "tabPanel-QKO8FX",
|
|
1294
1515
|
tabPanelActive: "tabPanelActive-mrNlGE"
|
|
@@ -1312,6 +1533,15 @@ var __webpack_modules__ = {
|
|
|
1312
1533
|
--c15t-devtools-button-size: 40px;
|
|
1313
1534
|
--c15t-devtools-z-index: 99999;
|
|
1314
1535
|
--c15t-devtools-surface-muted: var(--c15t-surface-hover, #f7f7f7);
|
|
1536
|
+
--c15t-devtools-surface-subtle: #fafafa;
|
|
1537
|
+
--c15t-devtools-surface-elevated: var(--c15t-surface, #fff);
|
|
1538
|
+
--c15t-devtools-border-strong: var(--c15t-border, #e3e3e3);
|
|
1539
|
+
--c15t-devtools-code-surface: #f7f7f7;
|
|
1540
|
+
--c15t-devtools-accent-soft: #ebefff;
|
|
1541
|
+
--c15t-devtools-focus-ring: var(--c15t-primary, #335cff);
|
|
1542
|
+
--c15t-devtools-text-muted: var(--c15t-text-muted, #737373);
|
|
1543
|
+
--c15t-devtools-font-size-sm: var(--c15t-font-size-sm, .875rem);
|
|
1544
|
+
--c15t-surface-muted: var(--c15t-devtools-surface-muted, #f7f7f7);
|
|
1315
1545
|
--c15t-devtools-font-size-xs: .75rem;
|
|
1316
1546
|
--c15t-devtools-badge-success: #21c45d;
|
|
1317
1547
|
--c15t-devtools-badge-success-bg: #e4fbed;
|
|
@@ -1325,8 +1555,37 @@ var __webpack_modules__ = {
|
|
|
1325
1555
|
--c15t-devtools-badge-neutral-bg: #f0f0f0;
|
|
1326
1556
|
}
|
|
1327
1557
|
|
|
1558
|
+
:is(:global(.c15t-light), :global(.light)) {
|
|
1559
|
+
--c15t-devtools-surface-muted: var(--c15t-surface-hover, #f7f7f7);
|
|
1560
|
+
--c15t-devtools-surface-subtle: #fafafa;
|
|
1561
|
+
--c15t-devtools-surface-elevated: var(--c15t-surface, #fff);
|
|
1562
|
+
--c15t-devtools-border-strong: var(--c15t-border, #e3e3e3);
|
|
1563
|
+
--c15t-devtools-code-surface: #f7f7f7;
|
|
1564
|
+
--c15t-devtools-accent-soft: #ebefff;
|
|
1565
|
+
--c15t-devtools-badge-success-bg: #e4fbed;
|
|
1566
|
+
--c15t-devtools-badge-error-bg: #fde7e7;
|
|
1567
|
+
--c15t-devtools-badge-warning-bg: #fef7dc;
|
|
1568
|
+
--c15t-devtools-badge-info-bg: #dcebfe;
|
|
1569
|
+
--c15t-devtools-badge-neutral-bg: #f0f0f0;
|
|
1570
|
+
}
|
|
1571
|
+
|
|
1572
|
+
@supports (color: color-mix(in srgb, white, black)) {
|
|
1573
|
+
:root {
|
|
1574
|
+
--c15t-devtools-surface-muted: color-mix(in srgb, var(--c15t-surface-hover, #f7f7f7) 85%, var(--c15t-surface, #fff));
|
|
1575
|
+
--c15t-devtools-surface-subtle: color-mix(in srgb, var(--c15t-surface-hover, #f7f7f7) 55%, var(--c15t-surface, #fff));
|
|
1576
|
+
--c15t-devtools-border-strong: color-mix(in srgb, var(--c15t-border, #e3e3e3) 80%, var(--c15t-text-muted, #737373));
|
|
1577
|
+
--c15t-devtools-code-surface: color-mix(in srgb, var(--c15t-surface-hover, #f7f7f7) 70%, var(--c15t-surface, #fff));
|
|
1578
|
+
--c15t-devtools-accent-soft: color-mix(in srgb, var(--c15t-primary, #335cff) 12%, transparent);
|
|
1579
|
+
}
|
|
1580
|
+
}
|
|
1581
|
+
|
|
1328
1582
|
:is(:global(.c15t-dark), :global(.dark)) {
|
|
1329
1583
|
--c15t-devtools-surface-muted: var(--c15t-surface-hover, #292929);
|
|
1584
|
+
--c15t-devtools-surface-subtle: #242424;
|
|
1585
|
+
--c15t-devtools-surface-elevated: var(--c15t-surface, #1a1a1a);
|
|
1586
|
+
--c15t-devtools-border-strong: var(--c15t-border, #3d3d3d);
|
|
1587
|
+
--c15t-devtools-code-surface: #212121;
|
|
1588
|
+
--c15t-devtools-accent-soft: #335cff33;
|
|
1330
1589
|
--c15t-devtools-badge-success-bg: #21c45d33;
|
|
1331
1590
|
--c15t-devtools-badge-error-bg: #ef434333;
|
|
1332
1591
|
--c15t-devtools-badge-warning-bg: #f59f0a33;
|
|
@@ -1335,8 +1594,13 @@ var __webpack_modules__ = {
|
|
|
1335
1594
|
}
|
|
1336
1595
|
|
|
1337
1596
|
@media (prefers-color-scheme: dark) {
|
|
1338
|
-
:root {
|
|
1597
|
+
:global(:root:not(.light):not(.c15t-light)) {
|
|
1339
1598
|
--c15t-devtools-surface-muted: var(--c15t-surface-hover, #292929);
|
|
1599
|
+
--c15t-devtools-surface-subtle: #242424;
|
|
1600
|
+
--c15t-devtools-surface-elevated: var(--c15t-surface, #1a1a1a);
|
|
1601
|
+
--c15t-devtools-border-strong: var(--c15t-border, #3d3d3d);
|
|
1602
|
+
--c15t-devtools-code-surface: #212121;
|
|
1603
|
+
--c15t-devtools-accent-soft: #335cff33;
|
|
1340
1604
|
--c15t-devtools-badge-success-bg: #21c45d33;
|
|
1341
1605
|
--c15t-devtools-badge-error-bg: #ef434333;
|
|
1342
1606
|
--c15t-devtools-badge-warning-bg: #f59f0a33;
|
|
@@ -1862,7 +2126,7 @@ var __webpack_exports__ = {};
|
|
|
1862
2126
|
type: options.type ?? 'button'
|
|
1863
2127
|
});
|
|
1864
2128
|
}
|
|
1865
|
-
function
|
|
2129
|
+
function renderer_span(options = {}) {
|
|
1866
2130
|
return createElement({
|
|
1867
2131
|
...options,
|
|
1868
2132
|
tag: 'span'
|
|
@@ -1941,7 +2205,8 @@ var __webpack_exports__ = {};
|
|
|
1941
2205
|
panel_module_options.insertStyleElement = insertStyleElement_default();
|
|
1942
2206
|
injectStylesIntoStyleTag_default()(panel_module.A, panel_module_options);
|
|
1943
2207
|
const styles_panel_module = panel_module.A && panel_module.A.locals ? panel_module.A.locals : void 0;
|
|
1944
|
-
const PREFERENCE_TRIGGER_SELECTORS = '[data-c15t-trigger], [aria-label*="privacy settings"], [aria-label*="preference"]';
|
|
2208
|
+
const PREFERENCE_TRIGGER_SELECTORS = '[data-c15t-trigger], [aria-label*="privacy settings" i], [aria-label*="preference" i]';
|
|
2209
|
+
const PREVIOUS_DISPLAY_ATTR = 'data-c15t-devtools-prev-display';
|
|
1945
2210
|
function detectPreferenceTrigger() {
|
|
1946
2211
|
const triggers = document.querySelectorAll(PREFERENCE_TRIGGER_SELECTORS);
|
|
1947
2212
|
return triggers.length > 0;
|
|
@@ -1951,7 +2216,19 @@ var __webpack_exports__ = {};
|
|
|
1951
2216
|
}
|
|
1952
2217
|
function setPreferenceTriggerVisibility(visible) {
|
|
1953
2218
|
const elements = getPreferenceTriggerElements();
|
|
1954
|
-
for (const el of elements)
|
|
2219
|
+
for (const el of elements){
|
|
2220
|
+
if (visible) {
|
|
2221
|
+
const previousDisplay = el.getAttribute(PREVIOUS_DISPLAY_ATTR);
|
|
2222
|
+
if (null === previousDisplay) el.style.removeProperty('display');
|
|
2223
|
+
else {
|
|
2224
|
+
el.style.display = previousDisplay;
|
|
2225
|
+
el.removeAttribute(PREVIOUS_DISPLAY_ATTR);
|
|
2226
|
+
}
|
|
2227
|
+
continue;
|
|
2228
|
+
}
|
|
2229
|
+
if (!el.hasAttribute(PREVIOUS_DISPLAY_ATTR)) el.setAttribute(PREVIOUS_DISPLAY_ATTR, el.style.display);
|
|
2230
|
+
el.style.display = 'none';
|
|
2231
|
+
}
|
|
1955
2232
|
}
|
|
1956
2233
|
function getPreferenceCenterOpener(namespace = 'c15tStore') {
|
|
1957
2234
|
const win = window;
|
|
@@ -1964,7 +2241,7 @@ var __webpack_exports__ = {};
|
|
|
1964
2241
|
}
|
|
1965
2242
|
return null;
|
|
1966
2243
|
}
|
|
1967
|
-
const version = '2.0.0-rc.
|
|
2244
|
+
const version = '2.0.0-rc.4';
|
|
1968
2245
|
const DEVTOOLS_ICON = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 446 445" aria-label="c15t">
|
|
1969
2246
|
<path fill="currentColor" d="M223.178.313c39.064 0 70.732 31.668 70.732 70.732-.001 39.064-31.668 70.731-70.732 70.731-12.181 0-23.642-3.079-33.649-8.502l-55.689 55.689a70.267 70.267 0 0 1 5.574 13.441h167.531c8.695-29.217 35.762-50.523 67.804-50.523 39.064 0 70.731 31.668 70.731 70.732s-31.668 70.732-70.731 70.732c-32.042 0-59.108-21.306-67.803-50.523H139.413a70.417 70.417 0 0 1-7.888 17.396l54.046 54.046c10.893-6.851 23.786-10.815 37.605-10.815 39.064 0 70.732 31.669 70.732 70.733 0 39.064-31.668 70.731-70.732 70.731s-70.732-31.667-70.732-70.731c0-10.518 2.296-20.499 6.414-29.471l-57.78-57.78c-8.972 4.117-18.952 6.414-29.47 6.414-39.063 0-70.731-31.668-70.732-70.732 0-39.064 31.669-70.732 70.733-70.732 12.18 0 23.642 3.079 33.649 8.502l55.688-55.688c-5.423-10.007-8.502-21.469-8.502-33.65 0-39.064 31.668-70.733 70.732-70.733Zm0 343.555c-16.742 0-30.314 13.572-30.314 30.314 0 16.741 13.572 30.313 30.314 30.313s30.314-13.572 30.314-30.313c0-16.742-13.572-30.314-30.314-30.314ZM71.611 192.299c-16.742 0-30.315 13.572-30.315 30.314s13.573 30.314 30.315 30.314c16.741 0 30.313-13.572 30.313-30.314 0-16.741-13.572-30.314-30.313-30.314Zm303.138 0c-16.729 0-30.294 13.551-30.315 30.275l.001.039-.001.038c.021 16.725 13.586 30.276 30.315 30.276 16.741 0 30.313-13.572 30.313-30.314 0-16.741-13.572-30.314-30.313-30.314ZM223.178 40.73c-16.742 0-30.314 13.573-30.314 30.315s13.573 30.313 30.314 30.313c16.742 0 30.313-13.572 30.314-30.313 0-16.742-13.572-30.314-30.314-30.315Z"/>
|
|
1970
2247
|
</svg>`;
|
|
@@ -2045,7 +2322,7 @@ var __webpack_exports__ = {};
|
|
|
2045
2322
|
const labelContainer = renderer_div({
|
|
2046
2323
|
className: styles_panel_module.menuItemContent ?? ''
|
|
2047
2324
|
});
|
|
2048
|
-
const label =
|
|
2325
|
+
const label = renderer_span({
|
|
2049
2326
|
className: styles_panel_module.menuItemLabel ?? '',
|
|
2050
2327
|
text: item.label
|
|
2051
2328
|
});
|
|
@@ -2167,6 +2444,11 @@ var __webpack_exports__ = {};
|
|
|
2167
2444
|
return styles_panel_module.positionTopLeft ?? '';
|
|
2168
2445
|
}
|
|
2169
2446
|
}
|
|
2447
|
+
function formatRetryDelay(delayMs) {
|
|
2448
|
+
if (null === delayMs) return 'n/a';
|
|
2449
|
+
if (delayMs < 1000) return `${delayMs}ms`;
|
|
2450
|
+
return `${(delayMs / 1000).toFixed(1)}s`;
|
|
2451
|
+
}
|
|
2170
2452
|
function createPanel(options) {
|
|
2171
2453
|
const { stateManager, storeConnector, onRenderContent, namespace = 'c15tStore', enableUnifiedMode = true } = options;
|
|
2172
2454
|
let removePortal = null;
|
|
@@ -2298,7 +2580,7 @@ var __webpack_exports__ = {};
|
|
|
2298
2580
|
}));
|
|
2299
2581
|
return logoWrapper;
|
|
2300
2582
|
})(),
|
|
2301
|
-
|
|
2583
|
+
renderer_span({
|
|
2302
2584
|
text: 'c15t DevTools'
|
|
2303
2585
|
})
|
|
2304
2586
|
]
|
|
@@ -2342,38 +2624,41 @@ var __webpack_exports__ = {};
|
|
|
2342
2624
|
const isConnected = storeConnector.isConnected();
|
|
2343
2625
|
const storeState = storeConnector.getState();
|
|
2344
2626
|
const isLoading = storeState?.isLoadingConsentInfo ?? false;
|
|
2627
|
+
const diagnostics = storeConnector.getDiagnostics();
|
|
2345
2628
|
const statusChildren = [
|
|
2346
|
-
|
|
2629
|
+
renderer_span({
|
|
2347
2630
|
className: `${styles_panel_module.statusDot} ${isConnected ? styles_panel_module.statusConnected : styles_panel_module.statusDisconnected}`
|
|
2348
2631
|
}),
|
|
2349
|
-
|
|
2632
|
+
renderer_span({
|
|
2350
2633
|
text: isConnected ? 'Connected' : 'Disconnected'
|
|
2351
2634
|
})
|
|
2352
2635
|
];
|
|
2353
|
-
if (isLoading) statusChildren.push(
|
|
2354
|
-
|
|
2355
|
-
marginLeft: '4px',
|
|
2356
|
-
opacity: '0.7'
|
|
2357
|
-
},
|
|
2636
|
+
if (isLoading) statusChildren.push(renderer_span({
|
|
2637
|
+
className: styles_panel_module.footerMeta,
|
|
2358
2638
|
text: '\u00b7 Fetching /init\u2026'
|
|
2359
2639
|
}));
|
|
2640
|
+
else if (!isConnected) statusChildren.push(renderer_span({
|
|
2641
|
+
className: styles_panel_module.footerMeta,
|
|
2642
|
+
text: `· ${diagnostics.namespace} · retry ${diagnostics.reconnectAttempts} · next ${formatRetryDelay(diagnostics.nextRetryInMs)}`
|
|
2643
|
+
}));
|
|
2360
2644
|
footerElement.appendChild(renderer_div({
|
|
2361
2645
|
className: styles_panel_module.footerStatus,
|
|
2362
2646
|
children: statusChildren
|
|
2363
2647
|
}));
|
|
2364
2648
|
if (!isConnected) footerElement.appendChild(renderer_button({
|
|
2365
|
-
className: styles_panel_module.
|
|
2649
|
+
className: styles_panel_module.inlineActionButton,
|
|
2366
2650
|
text: 'Retry',
|
|
2367
2651
|
onClick: ()=>{
|
|
2368
2652
|
storeConnector.retryConnection();
|
|
2369
2653
|
}
|
|
2370
2654
|
}));
|
|
2371
|
-
footerElement.appendChild(
|
|
2655
|
+
footerElement.appendChild(renderer_span({
|
|
2372
2656
|
text: `v${version}`
|
|
2373
2657
|
}));
|
|
2374
2658
|
}
|
|
2375
2659
|
function renderErrorState(container) {
|
|
2376
2660
|
clearElement(container);
|
|
2661
|
+
const diagnostics = storeConnector.getDiagnostics();
|
|
2377
2662
|
const errorState = renderer_div({
|
|
2378
2663
|
className: styles_panel_module.errorState,
|
|
2379
2664
|
children: [
|
|
@@ -2395,8 +2680,25 @@ var __webpack_exports__ = {};
|
|
|
2395
2680
|
className: styles_panel_module.errorMessage,
|
|
2396
2681
|
text: 'c15t consent manager is not initialized. Make sure you have set up the ConsentManagerProvider in your app.'
|
|
2397
2682
|
}),
|
|
2683
|
+
renderer_div({
|
|
2684
|
+
className: styles_panel_module.errorMessage,
|
|
2685
|
+
style: {
|
|
2686
|
+
marginTop: '4px',
|
|
2687
|
+
fontSize: 'var(--c15t-devtools-font-size-xs)'
|
|
2688
|
+
},
|
|
2689
|
+
text: `Namespace: ${diagnostics.namespace} · Retries: ${diagnostics.reconnectAttempts} · Next retry: ${formatRetryDelay(diagnostics.nextRetryInMs)}`
|
|
2690
|
+
}),
|
|
2691
|
+
diagnostics.lastError ? renderer_div({
|
|
2692
|
+
className: styles_panel_module.errorMessage,
|
|
2693
|
+
style: {
|
|
2694
|
+
marginTop: '4px',
|
|
2695
|
+
fontSize: 'var(--c15t-devtools-font-size-xs)',
|
|
2696
|
+
color: 'var(--c15t-text-muted)'
|
|
2697
|
+
},
|
|
2698
|
+
text: `Last error: ${diagnostics.lastError}`
|
|
2699
|
+
}) : null,
|
|
2398
2700
|
renderer_button({
|
|
2399
|
-
className: styles_panel_module.
|
|
2701
|
+
className: styles_panel_module.inlineActionButton,
|
|
2400
2702
|
text: 'Retry Connection',
|
|
2401
2703
|
onClick: ()=>{
|
|
2402
2704
|
storeConnector.retryConnection();
|
|
@@ -2459,6 +2761,10 @@ var __webpack_exports__ = {};
|
|
|
2459
2761
|
if (contentContainer) if (storeConnector.isConnected()) onRenderContent(contentContainer);
|
|
2460
2762
|
else renderErrorState(contentContainer);
|
|
2461
2763
|
});
|
|
2764
|
+
const unsubscribeDiagnostics = storeConnector.subscribeDiagnostics(()=>{
|
|
2765
|
+
updateFooter();
|
|
2766
|
+
if (contentContainer && !storeConnector.isConnected()) renderErrorState(contentContainer);
|
|
2767
|
+
});
|
|
2462
2768
|
container.appendChild(floatingButton);
|
|
2463
2769
|
removePortal = createPortal(container);
|
|
2464
2770
|
return {
|
|
@@ -2468,6 +2774,7 @@ var __webpack_exports__ = {};
|
|
|
2468
2774
|
destroy: ()=>{
|
|
2469
2775
|
unsubscribeState();
|
|
2470
2776
|
unsubscribeStore();
|
|
2777
|
+
unsubscribeDiagnostics();
|
|
2471
2778
|
if (dropdownMenu) {
|
|
2472
2779
|
dropdownMenu.destroy();
|
|
2473
2780
|
dropdownMenu = null;
|
|
@@ -2516,6 +2823,11 @@ var __webpack_exports__ = {};
|
|
|
2516
2823
|
const EVENTS_ICON = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2517
2824
|
<path d="M12 20h9"></path>
|
|
2518
2825
|
<path d="M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4Z"></path>
|
|
2826
|
+
</svg>`;
|
|
2827
|
+
const MORE_ICON = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
|
|
2828
|
+
<circle cx="12" cy="5" r="1.75"></circle>
|
|
2829
|
+
<circle cx="12" cy="12" r="1.75"></circle>
|
|
2830
|
+
<circle cx="12" cy="19" r="1.75"></circle>
|
|
2519
2831
|
</svg>`;
|
|
2520
2832
|
const TABS = [
|
|
2521
2833
|
{
|
|
@@ -2552,12 +2864,56 @@ var __webpack_exports__ = {};
|
|
|
2552
2864
|
function tabs_createTabs(options) {
|
|
2553
2865
|
const { onTabChange, disabledTabs = [] } = options;
|
|
2554
2866
|
let activeTab = options.activeTab;
|
|
2867
|
+
let isOverflowMenuOpen = false;
|
|
2868
|
+
let visibleTabIds = [];
|
|
2869
|
+
let hiddenTabIds = [];
|
|
2555
2870
|
const tabButtons = new Map();
|
|
2871
|
+
const overflowButtons = new Map();
|
|
2556
2872
|
const tabList = renderer_div({
|
|
2557
|
-
className: styles_tabs_module.tabList
|
|
2873
|
+
className: styles_tabs_module.tabList
|
|
2874
|
+
});
|
|
2875
|
+
const tabStrip = renderer_div({
|
|
2876
|
+
className: styles_tabs_module.tabStrip,
|
|
2558
2877
|
role: 'tablist',
|
|
2559
2878
|
ariaLabel: 'DevTools tabs'
|
|
2560
2879
|
});
|
|
2880
|
+
tabList.appendChild(tabStrip);
|
|
2881
|
+
const overflowMenu = renderer_div({
|
|
2882
|
+
className: styles_tabs_module.overflowMenu,
|
|
2883
|
+
role: 'menu',
|
|
2884
|
+
ariaLabel: 'All tabs'
|
|
2885
|
+
});
|
|
2886
|
+
overflowMenu.dataset.state = 'closed';
|
|
2887
|
+
const overflowButton = renderer_button({
|
|
2888
|
+
className: styles_tabs_module.overflowButton,
|
|
2889
|
+
ariaLabel: 'More tabs',
|
|
2890
|
+
ariaExpanded: 'false',
|
|
2891
|
+
onClick: ()=>toggleOverflowMenu(),
|
|
2892
|
+
onKeyDown: (e)=>{
|
|
2893
|
+
if ('ArrowDown' === e.key || 'Enter' === e.key || ' ' === e.key) {
|
|
2894
|
+
e.preventDefault();
|
|
2895
|
+
openOverflowMenu();
|
|
2896
|
+
focusFirstEnabledOverflowItem();
|
|
2897
|
+
}
|
|
2898
|
+
}
|
|
2899
|
+
});
|
|
2900
|
+
overflowButton.setAttribute('aria-haspopup', 'menu');
|
|
2901
|
+
const overflowIcon = renderer_div({
|
|
2902
|
+
className: styles_tabs_module.overflowButtonIcon
|
|
2903
|
+
});
|
|
2904
|
+
overflowIcon.appendChild(createSvgElement(MORE_ICON, {
|
|
2905
|
+
width: 14,
|
|
2906
|
+
height: 14
|
|
2907
|
+
}));
|
|
2908
|
+
overflowButton.appendChild(overflowIcon);
|
|
2909
|
+
const overflowContainer = renderer_div({
|
|
2910
|
+
className: styles_tabs_module.overflowContainer,
|
|
2911
|
+
children: [
|
|
2912
|
+
overflowButton,
|
|
2913
|
+
overflowMenu
|
|
2914
|
+
]
|
|
2915
|
+
});
|
|
2916
|
+
tabList.appendChild(overflowContainer);
|
|
2561
2917
|
for (const tab of TABS){
|
|
2562
2918
|
const isActive = tab.id === activeTab;
|
|
2563
2919
|
const isDisabled = disabledTabs.includes(tab.id);
|
|
@@ -2571,6 +2927,7 @@ var __webpack_exports__ = {};
|
|
|
2571
2927
|
disabled: isDisabled,
|
|
2572
2928
|
onClick: ()=>{
|
|
2573
2929
|
if (!isDisabled) {
|
|
2930
|
+
closeOverflowMenu();
|
|
2574
2931
|
setActiveTab(tab.id);
|
|
2575
2932
|
onTabChange(tab.id);
|
|
2576
2933
|
}
|
|
@@ -2587,12 +2944,189 @@ var __webpack_exports__ = {};
|
|
|
2587
2944
|
tabButton.appendChild(iconWrapper);
|
|
2588
2945
|
tabButton.appendChild(document.createTextNode(tab.label));
|
|
2589
2946
|
tabButtons.set(tab.id, tabButton);
|
|
2590
|
-
|
|
2947
|
+
tabStrip.appendChild(tabButton);
|
|
2948
|
+
const overflowItem = renderer_button({
|
|
2949
|
+
className: `${styles_tabs_module.overflowItem} ${isActive ? styles_tabs_module.overflowItemActive : ''} ${isDisabled ? styles_tabs_module.overflowItemDisabled : ''}`,
|
|
2950
|
+
role: 'menuitemradio',
|
|
2951
|
+
ariaChecked: isActive ? 'true' : 'false',
|
|
2952
|
+
disabled: isDisabled,
|
|
2953
|
+
onClick: ()=>{
|
|
2954
|
+
if (!isDisabled) {
|
|
2955
|
+
setActiveTab(tab.id);
|
|
2956
|
+
onTabChange(tab.id);
|
|
2957
|
+
closeOverflowMenu();
|
|
2958
|
+
tabButtons.get(tab.id)?.focus();
|
|
2959
|
+
}
|
|
2960
|
+
},
|
|
2961
|
+
onKeyDown: (e)=>handleOverflowKeyDown(e, tab.id)
|
|
2962
|
+
});
|
|
2963
|
+
const overflowItemIcon = renderer_div({
|
|
2964
|
+
className: styles_tabs_module.overflowItemIcon
|
|
2965
|
+
});
|
|
2966
|
+
overflowItemIcon.appendChild(createSvgElement(tab.icon, {
|
|
2967
|
+
width: 14,
|
|
2968
|
+
height: 14
|
|
2969
|
+
}));
|
|
2970
|
+
overflowItem.appendChild(overflowItemIcon);
|
|
2971
|
+
overflowItem.appendChild(document.createTextNode(tab.label));
|
|
2972
|
+
overflowButtons.set(tab.id, overflowItem);
|
|
2973
|
+
overflowMenu.appendChild(overflowItem);
|
|
2591
2974
|
}
|
|
2592
|
-
function
|
|
2593
|
-
const
|
|
2594
|
-
|
|
2595
|
-
|
|
2975
|
+
function applyActiveState(tab) {
|
|
2976
|
+
for (const [tabId, tabButton] of tabButtons){
|
|
2977
|
+
const isActive = tabId === tab;
|
|
2978
|
+
if (styles_tabs_module.tabActive) tabButton.classList.toggle(styles_tabs_module.tabActive, isActive);
|
|
2979
|
+
tabButton.setAttribute('aria-selected', isActive ? 'true' : 'false');
|
|
2980
|
+
tabButton.tabIndex = isActive ? 0 : -1;
|
|
2981
|
+
}
|
|
2982
|
+
for (const [tabId, overflowItem] of overflowButtons){
|
|
2983
|
+
const isActive = tabId === tab;
|
|
2984
|
+
if (styles_tabs_module.overflowItemActive) overflowItem.classList.toggle(styles_tabs_module.overflowItemActive, isActive);
|
|
2985
|
+
overflowItem.setAttribute('aria-checked', isActive ? 'true' : 'false');
|
|
2986
|
+
}
|
|
2987
|
+
}
|
|
2988
|
+
function updateVisibleTabs() {
|
|
2989
|
+
const allTabIds = TABS.map((t)=>t.id);
|
|
2990
|
+
const iabEnabled = !disabledTabs.includes('iab');
|
|
2991
|
+
const preferredSecondTab = iabEnabled ? 'iab' : 'consents';
|
|
2992
|
+
const overflowSecondTab = iabEnabled ? 'consents' : 'iab';
|
|
2993
|
+
const showOverflowSecondTabInStrip = activeTab === overflowSecondTab;
|
|
2994
|
+
const stripSecondTab = showOverflowSecondTabInStrip ? overflowSecondTab : preferredSecondTab;
|
|
2995
|
+
const forcedOverflowTab = showOverflowSecondTabInStrip ? preferredSecondTab : overflowSecondTab;
|
|
2996
|
+
const layoutTabIds = [
|
|
2997
|
+
'location',
|
|
2998
|
+
stripSecondTab,
|
|
2999
|
+
"scripts",
|
|
3000
|
+
'actions',
|
|
3001
|
+
'events',
|
|
3002
|
+
forcedOverflowTab
|
|
3003
|
+
];
|
|
3004
|
+
const forcedOverflowTabIds = new Set();
|
|
3005
|
+
forcedOverflowTabIds.add(forcedOverflowTab);
|
|
3006
|
+
for (const [index, tabId] of layoutTabIds.entries()){
|
|
3007
|
+
const tabButton = tabButtons.get(tabId);
|
|
3008
|
+
if (tabButton) tabButton.style.order = String(index);
|
|
3009
|
+
const overflowItem = overflowButtons.get(tabId);
|
|
3010
|
+
if (overflowItem) overflowItem.style.order = String(index);
|
|
3011
|
+
}
|
|
3012
|
+
for (const tabId of allTabIds){
|
|
3013
|
+
const tabButton = tabButtons.get(tabId);
|
|
3014
|
+
if (tabButton && styles_tabs_module.tabHidden) tabButton.classList.remove(styles_tabs_module.tabHidden);
|
|
3015
|
+
}
|
|
3016
|
+
if (styles_tabs_module.overflowContainerHidden) overflowContainer.classList.remove(styles_tabs_module.overflowContainerHidden);
|
|
3017
|
+
const stripGap = Number.parseFloat(getComputedStyle(tabStrip).gap || '0');
|
|
3018
|
+
const calculateVisibleTabs = (availableWidth)=>{
|
|
3019
|
+
if (availableWidth <= 0) return [];
|
|
3020
|
+
const nextVisible = [];
|
|
3021
|
+
let usedWidth = 0;
|
|
3022
|
+
for (const tabId of layoutTabIds){
|
|
3023
|
+
if (forcedOverflowTabIds.has(tabId)) continue;
|
|
3024
|
+
const tabButton = tabButtons.get(tabId);
|
|
3025
|
+
if (!tabButton) continue;
|
|
3026
|
+
const width = tabButton.getBoundingClientRect().width;
|
|
3027
|
+
const nextUsed = 0 === nextVisible.length ? width : usedWidth + stripGap + width;
|
|
3028
|
+
if (nextUsed <= availableWidth) {
|
|
3029
|
+
nextVisible.push(tabId);
|
|
3030
|
+
usedWidth = nextUsed;
|
|
3031
|
+
} else break;
|
|
3032
|
+
}
|
|
3033
|
+
return nextVisible;
|
|
3034
|
+
};
|
|
3035
|
+
const measureStripWidth = ()=>tabStrip.getBoundingClientRect().width;
|
|
3036
|
+
const showOverflowContainer = ()=>{
|
|
3037
|
+
if (styles_tabs_module.overflowContainerHidden) overflowContainer.classList.remove(styles_tabs_module.overflowContainerHidden);
|
|
3038
|
+
};
|
|
3039
|
+
const hideOverflowContainer = ()=>{
|
|
3040
|
+
if (styles_tabs_module.overflowContainerHidden) overflowContainer.classList.add(styles_tabs_module.overflowContainerHidden);
|
|
3041
|
+
};
|
|
3042
|
+
const measureVisibleWidth = (tabIds)=>{
|
|
3043
|
+
let width = 0;
|
|
3044
|
+
for (const [index, tabId] of tabIds.entries()){
|
|
3045
|
+
const tabButton = tabButtons.get(tabId);
|
|
3046
|
+
if (tabButton) {
|
|
3047
|
+
width += tabButton.getBoundingClientRect().width;
|
|
3048
|
+
if (index > 0) width += stripGap;
|
|
3049
|
+
}
|
|
3050
|
+
}
|
|
3051
|
+
return width;
|
|
3052
|
+
};
|
|
3053
|
+
if (0 === forcedOverflowTabIds.size) {
|
|
3054
|
+
hideOverflowContainer();
|
|
3055
|
+
const visibleWithoutOverflow = calculateVisibleTabs(measureStripWidth());
|
|
3056
|
+
if (visibleWithoutOverflow.length === layoutTabIds.length) visibleTabIds = visibleWithoutOverflow;
|
|
3057
|
+
else {
|
|
3058
|
+
showOverflowContainer();
|
|
3059
|
+
visibleTabIds = calculateVisibleTabs(measureStripWidth());
|
|
3060
|
+
}
|
|
3061
|
+
} else {
|
|
3062
|
+
showOverflowContainer();
|
|
3063
|
+
const withOverflow = calculateVisibleTabs(measureStripWidth());
|
|
3064
|
+
visibleTabIds = withOverflow.length > 0 ? withOverflow : [
|
|
3065
|
+
activeTab
|
|
3066
|
+
];
|
|
3067
|
+
}
|
|
3068
|
+
if (!visibleTabIds.includes(activeTab) && !disabledTabs.includes(activeTab)) if (visibleTabIds.length > 0) visibleTabIds[visibleTabIds.length - 1] = activeTab;
|
|
3069
|
+
else visibleTabIds = [
|
|
3070
|
+
activeTab
|
|
3071
|
+
];
|
|
3072
|
+
visibleTabIds = [
|
|
3073
|
+
...new Set(visibleTabIds)
|
|
3074
|
+
];
|
|
3075
|
+
const maxStripWidth = measureStripWidth();
|
|
3076
|
+
while(visibleTabIds.length > 1 && measureVisibleWidth(visibleTabIds) > maxStripWidth + 0.5){
|
|
3077
|
+
let removeIndex = visibleTabIds.length - 1;
|
|
3078
|
+
if (visibleTabIds[removeIndex] === activeTab) removeIndex = Math.max(0, removeIndex - 1);
|
|
3079
|
+
visibleTabIds.splice(removeIndex, 1);
|
|
3080
|
+
}
|
|
3081
|
+
hiddenTabIds = layoutTabIds.filter((tabId)=>!visibleTabIds.includes(tabId) || forcedOverflowTabIds.has(tabId) && tabId !== activeTab);
|
|
3082
|
+
for (const tabId of allTabIds){
|
|
3083
|
+
const tabButton = tabButtons.get(tabId);
|
|
3084
|
+
if (tabButton) {
|
|
3085
|
+
if (styles_tabs_module.tabHidden) tabButton.classList.toggle(styles_tabs_module.tabHidden, hiddenTabIds.includes(tabId));
|
|
3086
|
+
}
|
|
3087
|
+
}
|
|
3088
|
+
for (const tabId of allTabIds){
|
|
3089
|
+
const overflowItem = overflowButtons.get(tabId);
|
|
3090
|
+
if (overflowItem) {
|
|
3091
|
+
if (styles_tabs_module.overflowItemHidden) overflowItem.classList.toggle(styles_tabs_module.overflowItemHidden, !hiddenTabIds.includes(tabId));
|
|
3092
|
+
}
|
|
3093
|
+
}
|
|
3094
|
+
if (styles_tabs_module.overflowContainerHidden) overflowContainer.classList.toggle(styles_tabs_module.overflowContainerHidden, 0 === hiddenTabIds.length);
|
|
3095
|
+
if (0 === hiddenTabIds.length) closeOverflowMenu();
|
|
3096
|
+
}
|
|
3097
|
+
function focusFirstEnabledOverflowItem() {
|
|
3098
|
+
const firstEnabled = hiddenTabIds.find((tabId)=>!disabledTabs.includes(tabId));
|
|
3099
|
+
if (firstEnabled) overflowButtons.get(firstEnabled)?.focus();
|
|
3100
|
+
}
|
|
3101
|
+
function openOverflowMenu() {
|
|
3102
|
+
if (isOverflowMenuOpen || 0 === hiddenTabIds.length) return;
|
|
3103
|
+
isOverflowMenuOpen = true;
|
|
3104
|
+
overflowMenu.dataset.state = 'open';
|
|
3105
|
+
overflowButton.setAttribute('aria-expanded', 'true');
|
|
3106
|
+
document.addEventListener('click', handleOutsideClick);
|
|
3107
|
+
document.addEventListener('keydown', handleEscapeKey);
|
|
3108
|
+
}
|
|
3109
|
+
function closeOverflowMenu() {
|
|
3110
|
+
if (!isOverflowMenuOpen) return;
|
|
3111
|
+
isOverflowMenuOpen = false;
|
|
3112
|
+
overflowMenu.dataset.state = 'closed';
|
|
3113
|
+
overflowButton.setAttribute('aria-expanded', 'false');
|
|
3114
|
+
document.removeEventListener('click', handleOutsideClick);
|
|
3115
|
+
document.removeEventListener('keydown', handleEscapeKey);
|
|
3116
|
+
}
|
|
3117
|
+
function toggleOverflowMenu() {
|
|
3118
|
+
if (isOverflowMenuOpen) closeOverflowMenu();
|
|
3119
|
+
else openOverflowMenu();
|
|
3120
|
+
}
|
|
3121
|
+
function handleOutsideClick(e) {
|
|
3122
|
+
if (!overflowContainer.contains(e.target)) closeOverflowMenu();
|
|
3123
|
+
}
|
|
3124
|
+
function handleEscapeKey(e) {
|
|
3125
|
+
if ('Escape' === e.key) closeOverflowMenu();
|
|
3126
|
+
}
|
|
3127
|
+
function handleKeyDown(e, currentTab) {
|
|
3128
|
+
const enabledTabIds = visibleTabIds.filter((tabId)=>!disabledTabs.includes(tabId));
|
|
3129
|
+
const currentIndex = enabledTabIds.indexOf(currentTab);
|
|
2596
3130
|
let newIndex = currentIndex;
|
|
2597
3131
|
switch(e.key){
|
|
2598
3132
|
case 'ArrowLeft':
|
|
@@ -2618,23 +3152,152 @@ var __webpack_exports__ = {};
|
|
|
2618
3152
|
tabButtons.get(newTab)?.focus();
|
|
2619
3153
|
}
|
|
2620
3154
|
}
|
|
3155
|
+
function handleOverflowKeyDown(e, currentTab) {
|
|
3156
|
+
const enabledTabIds = hiddenTabIds.filter((tabId)=>!disabledTabs.includes(tabId));
|
|
3157
|
+
const currentIndex = enabledTabIds.indexOf(currentTab);
|
|
3158
|
+
if ('Escape' === e.key) {
|
|
3159
|
+
e.preventDefault();
|
|
3160
|
+
closeOverflowMenu();
|
|
3161
|
+
overflowButton.focus();
|
|
3162
|
+
return;
|
|
3163
|
+
}
|
|
3164
|
+
let newIndex = currentIndex;
|
|
3165
|
+
switch(e.key){
|
|
3166
|
+
case 'ArrowDown':
|
|
3167
|
+
newIndex = (currentIndex + 1) % enabledTabIds.length;
|
|
3168
|
+
break;
|
|
3169
|
+
case 'ArrowUp':
|
|
3170
|
+
newIndex = currentIndex > 0 ? currentIndex - 1 : enabledTabIds.length - 1;
|
|
3171
|
+
break;
|
|
3172
|
+
default:
|
|
3173
|
+
return;
|
|
3174
|
+
}
|
|
3175
|
+
e.preventDefault();
|
|
3176
|
+
const newTab = enabledTabIds[newIndex];
|
|
3177
|
+
if (newTab) overflowButtons.get(newTab)?.focus();
|
|
3178
|
+
}
|
|
2621
3179
|
function setActiveTab(tab) {
|
|
2622
3180
|
activeTab = tab;
|
|
2623
|
-
|
|
2624
|
-
|
|
2625
|
-
if (styles_tabs_module.tabActive) tabButton.classList.toggle(styles_tabs_module.tabActive, isActive);
|
|
2626
|
-
tabButton.setAttribute('aria-selected', isActive ? 'true' : 'false');
|
|
2627
|
-
tabButton.tabIndex = isActive ? 0 : -1;
|
|
2628
|
-
}
|
|
3181
|
+
applyActiveState(tab);
|
|
3182
|
+
updateVisibleTabs();
|
|
2629
3183
|
}
|
|
3184
|
+
const handleWindowResize = ()=>{
|
|
3185
|
+
updateVisibleTabs();
|
|
3186
|
+
};
|
|
3187
|
+
let resizeObserver = null;
|
|
3188
|
+
if ('undefined' != typeof ResizeObserver) {
|
|
3189
|
+
resizeObserver = new ResizeObserver(()=>{
|
|
3190
|
+
updateVisibleTabs();
|
|
3191
|
+
});
|
|
3192
|
+
resizeObserver.observe(tabList);
|
|
3193
|
+
} else window.addEventListener('resize', handleWindowResize);
|
|
3194
|
+
applyActiveState(activeTab);
|
|
3195
|
+
requestAnimationFrame(()=>{
|
|
3196
|
+
updateVisibleTabs();
|
|
3197
|
+
});
|
|
2630
3198
|
return {
|
|
2631
3199
|
element: tabList,
|
|
2632
3200
|
setActiveTab,
|
|
2633
3201
|
destroy: ()=>{
|
|
3202
|
+
closeOverflowMenu();
|
|
3203
|
+
if (resizeObserver) {
|
|
3204
|
+
resizeObserver.disconnect();
|
|
3205
|
+
resizeObserver = null;
|
|
3206
|
+
} else window.removeEventListener('resize', handleWindowResize);
|
|
2634
3207
|
tabButtons.clear();
|
|
3208
|
+
overflowButtons.clear();
|
|
2635
3209
|
}
|
|
2636
3210
|
};
|
|
2637
3211
|
}
|
|
3212
|
+
function debug_bundle_createDebugBundle(payload) {
|
|
3213
|
+
const { namespace, devToolsState, connection, recentEvents, storeState } = payload;
|
|
3214
|
+
const bundle = {
|
|
3215
|
+
generatedAt: new Date().toISOString(),
|
|
3216
|
+
namespace,
|
|
3217
|
+
devToolsState,
|
|
3218
|
+
connection,
|
|
3219
|
+
recentEvents,
|
|
3220
|
+
storeState,
|
|
3221
|
+
overrides: storeState?.overrides ?? null,
|
|
3222
|
+
iab: storeState?.iab ? {
|
|
3223
|
+
tcString: (storeState?.iab).tcString ?? null,
|
|
3224
|
+
purposeCount: Object.keys((storeState?.iab).purposeConsents ?? {}).length,
|
|
3225
|
+
vendorCount: Object.keys((storeState?.iab).vendorConsents ?? {}).length
|
|
3226
|
+
} : null
|
|
3227
|
+
};
|
|
3228
|
+
return JSON.stringify(bundle, null, 2);
|
|
3229
|
+
}
|
|
3230
|
+
function debug_bundle_sanitizeStoreState(state) {
|
|
3231
|
+
if (!state) return null;
|
|
3232
|
+
try {
|
|
3233
|
+
return JSON.parse(JSON.stringify(state, (_key, value)=>'function' == typeof value ? void 0 : value));
|
|
3234
|
+
} catch {
|
|
3235
|
+
return {
|
|
3236
|
+
error: 'Unable to serialize store state'
|
|
3237
|
+
};
|
|
3238
|
+
}
|
|
3239
|
+
}
|
|
3240
|
+
function debug_bundle_downloadDebugBundle(content) {
|
|
3241
|
+
const blob = new Blob([
|
|
3242
|
+
content
|
|
3243
|
+
], {
|
|
3244
|
+
type: 'application/json'
|
|
3245
|
+
});
|
|
3246
|
+
const url = URL.createObjectURL(blob);
|
|
3247
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
3248
|
+
const anchor = document.createElement('a');
|
|
3249
|
+
anchor.href = url;
|
|
3250
|
+
anchor.download = `c15t-debug-bundle-${timestamp}.json`;
|
|
3251
|
+
anchor.click();
|
|
3252
|
+
URL.revokeObjectURL(url);
|
|
3253
|
+
}
|
|
3254
|
+
const DEVTOOLS_OVERRIDES_STORAGE_KEY = 'c15t-devtools-overrides';
|
|
3255
|
+
function normalizeStringValue(value) {
|
|
3256
|
+
if ('string' != typeof value) return;
|
|
3257
|
+
const normalized = value.trim();
|
|
3258
|
+
return normalized.length > 0 ? normalized : void 0;
|
|
3259
|
+
}
|
|
3260
|
+
function normalizeBooleanValue(value) {
|
|
3261
|
+
return 'boolean' == typeof value ? value : void 0;
|
|
3262
|
+
}
|
|
3263
|
+
function normalizeOverrides(value) {
|
|
3264
|
+
if (!value || 'object' != typeof value) return null;
|
|
3265
|
+
const source = value;
|
|
3266
|
+
const overrides = {
|
|
3267
|
+
country: normalizeStringValue(source.country),
|
|
3268
|
+
region: normalizeStringValue(source.region),
|
|
3269
|
+
language: normalizeStringValue(source.language),
|
|
3270
|
+
gpc: normalizeBooleanValue(source.gpc)
|
|
3271
|
+
};
|
|
3272
|
+
return hasPersistedOverrides(overrides) ? overrides : null;
|
|
3273
|
+
}
|
|
3274
|
+
function hasPersistedOverrides(overrides) {
|
|
3275
|
+
return Boolean(overrides.country || overrides.region || overrides.language || void 0 !== overrides.gpc);
|
|
3276
|
+
}
|
|
3277
|
+
function override_storage_loadPersistedOverrides(storageKey = DEVTOOLS_OVERRIDES_STORAGE_KEY) {
|
|
3278
|
+
if ('undefined' == typeof window) return null;
|
|
3279
|
+
try {
|
|
3280
|
+
const stored = localStorage.getItem(storageKey);
|
|
3281
|
+
if (!stored) return null;
|
|
3282
|
+
const parsed = JSON.parse(stored);
|
|
3283
|
+
return normalizeOverrides(parsed);
|
|
3284
|
+
} catch {
|
|
3285
|
+
return null;
|
|
3286
|
+
}
|
|
3287
|
+
}
|
|
3288
|
+
function override_storage_persistOverrides(overrides, storageKey = DEVTOOLS_OVERRIDES_STORAGE_KEY) {
|
|
3289
|
+
if ('undefined' == typeof window) return;
|
|
3290
|
+
try {
|
|
3291
|
+
if (!hasPersistedOverrides(overrides)) return void localStorage.removeItem(storageKey);
|
|
3292
|
+
localStorage.setItem(storageKey, JSON.stringify(overrides));
|
|
3293
|
+
} catch {}
|
|
3294
|
+
}
|
|
3295
|
+
function override_storage_clearPersistedOverrides(storageKey = DEVTOOLS_OVERRIDES_STORAGE_KEY) {
|
|
3296
|
+
if ('undefined' == typeof window) return;
|
|
3297
|
+
try {
|
|
3298
|
+
localStorage.removeItem(storageKey);
|
|
3299
|
+
} catch {}
|
|
3300
|
+
}
|
|
2638
3301
|
var components_module = __webpack_require__("../../node_modules/.bun/@rsbuild+core@1.6.12/node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[1].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[1].use[2]!./src/styles/components.module.css");
|
|
2639
3302
|
var components_module_options = {};
|
|
2640
3303
|
components_module_options.styleTagTransform = styleTagTransform_default();
|
|
@@ -2671,7 +3334,7 @@ var __webpack_exports__ = {};
|
|
|
2671
3334
|
info: styles_components_module.badgeInfo,
|
|
2672
3335
|
neutral: styles_components_module.badgeNeutral
|
|
2673
3336
|
}[variant];
|
|
2674
|
-
return
|
|
3337
|
+
return renderer_span({
|
|
2675
3338
|
className: `${styles_components_module.badge} ${variantClass}`,
|
|
2676
3339
|
text
|
|
2677
3340
|
});
|
|
@@ -2702,31 +3365,19 @@ var __webpack_exports__ = {};
|
|
|
2702
3365
|
btn.appendChild(document.createTextNode(text));
|
|
2703
3366
|
return btn;
|
|
2704
3367
|
}
|
|
2705
|
-
function
|
|
2706
|
-
const {
|
|
2707
|
-
const
|
|
2708
|
-
|
|
2709
|
-
|
|
2710
|
-
|
|
2711
|
-
|
|
2712
|
-
|
|
2713
|
-
|
|
2714
|
-
|
|
2715
|
-
|
|
2716
|
-
|
|
2717
|
-
|
|
2718
|
-
]
|
|
2719
|
-
});
|
|
2720
|
-
const actionsContainer = renderer_div({
|
|
2721
|
-
className: styles_components_module.listItemActions,
|
|
2722
|
-
children: actions
|
|
2723
|
-
});
|
|
2724
|
-
return renderer_div({
|
|
2725
|
-
className: styles_components_module.listItem,
|
|
2726
|
-
children: [
|
|
2727
|
-
content,
|
|
2728
|
-
actionsContainer
|
|
2729
|
-
]
|
|
3368
|
+
function createInput(options) {
|
|
3369
|
+
const { value, placeholder, ariaLabel, small = false, onInput } = options;
|
|
3370
|
+
const sizeClass = small ? styles_components_module.inputSmall : '';
|
|
3371
|
+
return input({
|
|
3372
|
+
className: `${styles_components_module.input} ${sizeClass}`.trim(),
|
|
3373
|
+
type: 'text',
|
|
3374
|
+
value,
|
|
3375
|
+
placeholder,
|
|
3376
|
+
ariaLabel,
|
|
3377
|
+
onInput: (event)=>{
|
|
3378
|
+
const target = event.target;
|
|
3379
|
+
onInput?.(target?.value ?? '');
|
|
3380
|
+
}
|
|
2730
3381
|
});
|
|
2731
3382
|
}
|
|
2732
3383
|
function createSection(options) {
|
|
@@ -2734,7 +3385,7 @@ var __webpack_exports__ = {};
|
|
|
2734
3385
|
const header = renderer_div({
|
|
2735
3386
|
className: styles_components_module.sectionHeader,
|
|
2736
3387
|
children: [
|
|
2737
|
-
|
|
3388
|
+
renderer_span({
|
|
2738
3389
|
className: styles_components_module.sectionTitle,
|
|
2739
3390
|
text: title
|
|
2740
3391
|
}),
|
|
@@ -2754,11 +3405,11 @@ var __webpack_exports__ = {};
|
|
|
2754
3405
|
return renderer_div({
|
|
2755
3406
|
className: styles_components_module.infoRow,
|
|
2756
3407
|
children: [
|
|
2757
|
-
|
|
3408
|
+
renderer_span({
|
|
2758
3409
|
className: styles_components_module.infoLabel,
|
|
2759
3410
|
text: label
|
|
2760
3411
|
}),
|
|
2761
|
-
|
|
3412
|
+
renderer_span({
|
|
2762
3413
|
className: styles_components_module.infoValue,
|
|
2763
3414
|
text: value
|
|
2764
3415
|
})
|
|
@@ -2778,7 +3429,7 @@ var __webpack_exports__ = {};
|
|
|
2778
3429
|
}));
|
|
2779
3430
|
children.push(iconWrapper);
|
|
2780
3431
|
}
|
|
2781
|
-
children.push(
|
|
3432
|
+
children.push(renderer_span({
|
|
2782
3433
|
className: styles_components_module.emptyStateText,
|
|
2783
3434
|
text
|
|
2784
3435
|
}));
|
|
@@ -2798,7 +3449,7 @@ var __webpack_exports__ = {};
|
|
|
2798
3449
|
function createGridCard(options) {
|
|
2799
3450
|
const { title, action } = options;
|
|
2800
3451
|
const children = [
|
|
2801
|
-
|
|
3452
|
+
renderer_span({
|
|
2802
3453
|
className: styles_components_module.gridCardTitle,
|
|
2803
3454
|
text: title
|
|
2804
3455
|
})
|
|
@@ -2809,6 +3460,18 @@ var __webpack_exports__ = {};
|
|
|
2809
3460
|
children
|
|
2810
3461
|
});
|
|
2811
3462
|
}
|
|
3463
|
+
function createDisconnectedState(message = 'Store not connected') {
|
|
3464
|
+
return renderer_div({
|
|
3465
|
+
className: styles_components_module.disconnectedState,
|
|
3466
|
+
style: {
|
|
3467
|
+
padding: '24px',
|
|
3468
|
+
textAlign: 'center',
|
|
3469
|
+
color: 'var(--c15t-text-muted)',
|
|
3470
|
+
fontSize: 'var(--c15t-devtools-font-size-sm)'
|
|
3471
|
+
},
|
|
3472
|
+
text: message
|
|
3473
|
+
});
|
|
3474
|
+
}
|
|
2812
3475
|
const REFRESH_ICON = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2813
3476
|
<path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path>
|
|
2814
3477
|
<path d="M21 3v5h-5"></path>
|
|
@@ -2836,19 +3499,11 @@ var __webpack_exports__ = {};
|
|
|
2836
3499
|
<polyline points="4 17 10 11 4 5"></polyline>
|
|
2837
3500
|
<line x1="12" y1="19" x2="20" y2="19"></line>
|
|
2838
3501
|
</svg>`;
|
|
2839
|
-
function
|
|
2840
|
-
const { getState, onResetConsents, onRefetchBanner, onShowBanner, onOpenPreferences, onCopyState } = options;
|
|
3502
|
+
function renderActionsPanel(container, options) {
|
|
3503
|
+
const { getState, onResetConsents, onRefetchBanner, onShowBanner, onOpenPreferences, onCopyState, onExportDebugBundle } = options;
|
|
2841
3504
|
clearElement(container);
|
|
2842
3505
|
const state = getState();
|
|
2843
|
-
if (!state) return void container.appendChild(
|
|
2844
|
-
style: {
|
|
2845
|
-
padding: '24px',
|
|
2846
|
-
textAlign: 'center',
|
|
2847
|
-
color: 'var(--c15t-text-muted)',
|
|
2848
|
-
fontSize: 'var(--c15t-devtools-font-size-sm)'
|
|
2849
|
-
},
|
|
2850
|
-
text: 'Store not connected'
|
|
2851
|
-
}));
|
|
3506
|
+
if (!state) return void container.appendChild(createDisconnectedState());
|
|
2852
3507
|
const actionCards = [
|
|
2853
3508
|
createActionCard({
|
|
2854
3509
|
icon: actions_EYE_ICON,
|
|
@@ -2869,6 +3524,12 @@ var __webpack_exports__ = {};
|
|
|
2869
3524
|
icon: COPY_ICON,
|
|
2870
3525
|
label: 'Copy State',
|
|
2871
3526
|
onClick: onCopyState
|
|
3527
|
+
}),
|
|
3528
|
+
createActionCard({
|
|
3529
|
+
icon: REFRESH_ICON,
|
|
3530
|
+
label: 'Export Debug',
|
|
3531
|
+
onClick: ()=>onExportDebugBundle?.(),
|
|
3532
|
+
disabled: !onExportDebugBundle
|
|
2872
3533
|
})
|
|
2873
3534
|
];
|
|
2874
3535
|
const grid = createGrid({
|
|
@@ -2906,7 +3567,7 @@ var __webpack_exports__ = {};
|
|
|
2906
3567
|
},
|
|
2907
3568
|
children: [
|
|
2908
3569
|
createIconWrapper(TERMINAL_ICON, 14),
|
|
2909
|
-
|
|
3570
|
+
renderer_span({
|
|
2910
3571
|
style: {
|
|
2911
3572
|
fontSize: 'var(--c15t-devtools-font-size-xs)',
|
|
2912
3573
|
fontWeight: '600',
|
|
@@ -2929,10 +3590,10 @@ var __webpack_exports__ = {};
|
|
|
2929
3590
|
color: 'var(--c15t-text-muted)'
|
|
2930
3591
|
},
|
|
2931
3592
|
children: [
|
|
2932
|
-
|
|
3593
|
+
renderer_span({
|
|
2933
3594
|
text: `window.${getNamespace(state)}.getState()`
|
|
2934
3595
|
}),
|
|
2935
|
-
|
|
3596
|
+
renderer_span({
|
|
2936
3597
|
text: 'window.__c15tDevTools.open()'
|
|
2937
3598
|
})
|
|
2938
3599
|
]
|
|
@@ -2942,7 +3603,7 @@ var __webpack_exports__ = {};
|
|
|
2942
3603
|
container.appendChild(consoleSection);
|
|
2943
3604
|
}
|
|
2944
3605
|
function createActionCard(options) {
|
|
2945
|
-
const { icon, label, onClick } = options;
|
|
3606
|
+
const { icon, label, onClick, disabled = false } = options;
|
|
2946
3607
|
const card = renderer_div({
|
|
2947
3608
|
className: styles_components_module.gridCard ?? '',
|
|
2948
3609
|
style: {
|
|
@@ -2953,11 +3614,12 @@ var __webpack_exports__ = {};
|
|
|
2953
3614
|
gap: '6px',
|
|
2954
3615
|
padding: '16px 8px',
|
|
2955
3616
|
cursor: 'pointer',
|
|
2956
|
-
transition: 'background-color var(--c15t-duration-fast) var(--c15t-easing)'
|
|
3617
|
+
transition: 'background-color var(--c15t-duration-fast) var(--c15t-easing)',
|
|
3618
|
+
opacity: disabled ? '0.55' : '1'
|
|
2957
3619
|
},
|
|
2958
3620
|
children: [
|
|
2959
3621
|
createIconWrapper(icon, 20),
|
|
2960
|
-
|
|
3622
|
+
renderer_span({
|
|
2961
3623
|
style: {
|
|
2962
3624
|
fontSize: 'var(--c15t-devtools-font-size-xs)',
|
|
2963
3625
|
fontWeight: '500',
|
|
@@ -2968,13 +3630,15 @@ var __webpack_exports__ = {};
|
|
|
2968
3630
|
})
|
|
2969
3631
|
]
|
|
2970
3632
|
});
|
|
2971
|
-
|
|
2972
|
-
|
|
2973
|
-
card.
|
|
2974
|
-
|
|
2975
|
-
|
|
2976
|
-
card.
|
|
2977
|
-
|
|
3633
|
+
if (!disabled) {
|
|
3634
|
+
card.addEventListener('click', onClick);
|
|
3635
|
+
card.addEventListener('mouseenter', ()=>{
|
|
3636
|
+
card.style.backgroundColor = 'var(--c15t-surface-hover)';
|
|
3637
|
+
});
|
|
3638
|
+
card.addEventListener('mouseleave', ()=>{
|
|
3639
|
+
card.style.backgroundColor = '';
|
|
3640
|
+
});
|
|
3641
|
+
}
|
|
2978
3642
|
return card;
|
|
2979
3643
|
}
|
|
2980
3644
|
function createIconWrapper(icon, size) {
|
|
@@ -2995,19 +3659,12 @@ var __webpack_exports__ = {};
|
|
|
2995
3659
|
function getNamespace(state) {
|
|
2996
3660
|
return state.config?.meta?.namespace || 'c15tStore';
|
|
2997
3661
|
}
|
|
2998
|
-
|
|
3662
|
+
const consentSearchByContainer = new WeakMap();
|
|
3663
|
+
function renderConsentsPanel(container, options) {
|
|
2999
3664
|
const { getState, onConsentChange, onSave, onAcceptAll, onRejectAll, onReset } = options;
|
|
3000
3665
|
clearElement(container);
|
|
3001
3666
|
const state = getState();
|
|
3002
|
-
if (!state) return void container.appendChild(
|
|
3003
|
-
style: {
|
|
3004
|
-
padding: '24px',
|
|
3005
|
-
textAlign: 'center',
|
|
3006
|
-
color: 'var(--c15t-text-muted)',
|
|
3007
|
-
fontSize: 'var(--c15t-devtools-font-size-sm)'
|
|
3008
|
-
},
|
|
3009
|
-
text: 'Store not connected'
|
|
3010
|
-
}));
|
|
3667
|
+
if (!state) return void container.appendChild(createDisconnectedState());
|
|
3011
3668
|
const isIabMode = 'iab' === state.model;
|
|
3012
3669
|
const savedConsents = state.consents || {};
|
|
3013
3670
|
const selectedConsents = state.selectedConsents || {};
|
|
@@ -3021,15 +3678,40 @@ var __webpack_exports__ = {};
|
|
|
3021
3678
|
ct.name,
|
|
3022
3679
|
ct
|
|
3023
3680
|
]));
|
|
3681
|
+
const searchQuery = consentSearchByContainer.get(container) ?? '';
|
|
3024
3682
|
const consentEntries = Object.entries(displayConsents);
|
|
3025
|
-
|
|
3683
|
+
const filteredConsentEntries = consentEntries.filter(([name])=>{
|
|
3684
|
+
if (!searchQuery) return true;
|
|
3685
|
+
const consentType = consentTypeMap.get(name);
|
|
3686
|
+
const displayName = consentType?.name || name;
|
|
3687
|
+
return `${name} ${displayName}`.toLowerCase().includes(searchQuery);
|
|
3688
|
+
});
|
|
3689
|
+
const showSearchInput = consentEntries.length > 4;
|
|
3690
|
+
if (showSearchInput) container.appendChild(renderer_div({
|
|
3691
|
+
style: {
|
|
3692
|
+
padding: '8px 0 10px'
|
|
3693
|
+
},
|
|
3694
|
+
children: [
|
|
3695
|
+
createInput({
|
|
3696
|
+
value: searchQuery,
|
|
3697
|
+
placeholder: 'Filter consents…',
|
|
3698
|
+
ariaLabel: 'Filter consents',
|
|
3699
|
+
small: true,
|
|
3700
|
+
onInput: (value)=>{
|
|
3701
|
+
consentSearchByContainer.set(container, value.trim().toLowerCase());
|
|
3702
|
+
renderConsentsPanel(container, options);
|
|
3703
|
+
}
|
|
3704
|
+
})
|
|
3705
|
+
]
|
|
3706
|
+
}));
|
|
3707
|
+
if (0 === filteredConsentEntries.length) container.appendChild(renderer_div({
|
|
3026
3708
|
style: {
|
|
3027
3709
|
padding: '24px',
|
|
3028
3710
|
textAlign: 'center',
|
|
3029
3711
|
color: 'var(--c15t-devtools-text-muted)',
|
|
3030
3712
|
fontSize: 'var(--c15t-devtools-font-size-sm)'
|
|
3031
3713
|
},
|
|
3032
|
-
text: 'No consents configured'
|
|
3714
|
+
text: 0 === consentEntries.length ? 'No consents configured' : 'No matching consents'
|
|
3033
3715
|
}));
|
|
3034
3716
|
else {
|
|
3035
3717
|
if (isIabMode) {
|
|
@@ -3047,7 +3729,7 @@ var __webpack_exports__ = {};
|
|
|
3047
3729
|
container.appendChild(iabNotice);
|
|
3048
3730
|
}
|
|
3049
3731
|
const gridCards = [];
|
|
3050
|
-
for (const [name, value] of
|
|
3732
|
+
for (const [name, value] of filteredConsentEntries){
|
|
3051
3733
|
const consentType = consentTypeMap.get(name);
|
|
3052
3734
|
const isNecessary = 'necessary' === name;
|
|
3053
3735
|
const displayName = consentType?.name || name;
|
|
@@ -3137,7 +3819,7 @@ var __webpack_exports__ = {};
|
|
|
3137
3819
|
gap: '8px'
|
|
3138
3820
|
},
|
|
3139
3821
|
children: [
|
|
3140
|
-
|
|
3822
|
+
renderer_span({
|
|
3141
3823
|
style: {
|
|
3142
3824
|
fontSize: 'var(--c15t-devtools-font-size-xs)',
|
|
3143
3825
|
color: 'var(--c15t-devtools-badge-warning)'
|
|
@@ -3151,7 +3833,7 @@ var __webpack_exports__ = {};
|
|
|
3151
3833
|
onClick: onSave
|
|
3152
3834
|
})
|
|
3153
3835
|
]
|
|
3154
|
-
}) :
|
|
3836
|
+
}) : renderer_span({
|
|
3155
3837
|
style: {
|
|
3156
3838
|
fontSize: 'var(--c15t-devtools-font-size-xs)',
|
|
3157
3839
|
color: 'var(--c15t-text-muted)'
|
|
@@ -3165,15 +3847,26 @@ var __webpack_exports__ = {};
|
|
|
3165
3847
|
function formatConsentName(name) {
|
|
3166
3848
|
return name.replace(/_/g, ' ').replace(/\b\w/g, (l)=>l.toUpperCase());
|
|
3167
3849
|
}
|
|
3168
|
-
|
|
3169
|
-
|
|
3170
|
-
|
|
3850
|
+
const panelStateByContainer = new WeakMap();
|
|
3851
|
+
function getPanelState(container) {
|
|
3852
|
+
const existing = panelStateByContainer.get(container);
|
|
3853
|
+
if (existing) return existing;
|
|
3854
|
+
const initialState = {
|
|
3855
|
+
activeFilter: 'all',
|
|
3856
|
+
selectedEventId: null,
|
|
3857
|
+
searchQuery: ''
|
|
3858
|
+
};
|
|
3859
|
+
panelStateByContainer.set(container, initialState);
|
|
3860
|
+
return initialState;
|
|
3861
|
+
}
|
|
3862
|
+
function renderEventsPanel(container, options) {
|
|
3171
3863
|
const { getEvents, onClear } = options;
|
|
3864
|
+
const panelState = getPanelState(container);
|
|
3172
3865
|
clearElement(container);
|
|
3173
3866
|
const allEvents = getEvents();
|
|
3174
|
-
const events = allEvents.filter((event)=>matchesFilter(event, activeFilter));
|
|
3175
|
-
if (!events.some((event)=>event.id === selectedEventId)) selectedEventId = events[0]?.id ?? null;
|
|
3176
|
-
const selectedEvent = events.find((event)=>event.id === selectedEventId) ?? null;
|
|
3867
|
+
const events = allEvents.filter((event)=>matchesFilter(event, panelState.activeFilter)).filter((event)=>matchesSearch(event, panelState.searchQuery));
|
|
3868
|
+
if (!events.some((event)=>event.id === panelState.selectedEventId)) panelState.selectedEventId = events[0]?.id ?? null;
|
|
3869
|
+
const selectedEvent = events.find((event)=>event.id === panelState.selectedEventId) ?? null;
|
|
3177
3870
|
const header = renderer_div({
|
|
3178
3871
|
style: {
|
|
3179
3872
|
display: 'flex',
|
|
@@ -3183,7 +3876,7 @@ var __webpack_exports__ = {};
|
|
|
3183
3876
|
gap: '8px'
|
|
3184
3877
|
},
|
|
3185
3878
|
children: [
|
|
3186
|
-
|
|
3879
|
+
renderer_span({
|
|
3187
3880
|
style: {
|
|
3188
3881
|
fontSize: 'var(--c15t-devtools-font-size-xs)',
|
|
3189
3882
|
fontWeight: '600',
|
|
@@ -3209,8 +3902,8 @@ var __webpack_exports__ = {};
|
|
|
3209
3902
|
small: true,
|
|
3210
3903
|
onClick: ()=>{
|
|
3211
3904
|
onClear();
|
|
3212
|
-
selectedEventId = null;
|
|
3213
|
-
|
|
3905
|
+
panelState.selectedEventId = null;
|
|
3906
|
+
renderEventsPanel(container, options);
|
|
3214
3907
|
}
|
|
3215
3908
|
})
|
|
3216
3909
|
]
|
|
@@ -3225,12 +3918,30 @@ var __webpack_exports__ = {};
|
|
|
3225
3918
|
gap: '6px',
|
|
3226
3919
|
padding: '0 16px 8px'
|
|
3227
3920
|
},
|
|
3228
|
-
children: EVENT_FILTERS.map((filter)=>createFilterButton(filter, filter === activeFilter, ()=>{
|
|
3229
|
-
activeFilter = filter;
|
|
3230
|
-
selectedEventId = null;
|
|
3231
|
-
|
|
3921
|
+
children: EVENT_FILTERS.map((filter)=>createFilterButton(filter, filter === panelState.activeFilter, ()=>{
|
|
3922
|
+
panelState.activeFilter = filter;
|
|
3923
|
+
panelState.selectedEventId = null;
|
|
3924
|
+
renderEventsPanel(container, options);
|
|
3232
3925
|
}))
|
|
3233
3926
|
}));
|
|
3927
|
+
container.appendChild(renderer_div({
|
|
3928
|
+
style: {
|
|
3929
|
+
padding: '0 16px 8px'
|
|
3930
|
+
},
|
|
3931
|
+
children: [
|
|
3932
|
+
createInput({
|
|
3933
|
+
value: panelState.searchQuery,
|
|
3934
|
+
placeholder: 'Search events…',
|
|
3935
|
+
ariaLabel: 'Search events',
|
|
3936
|
+
small: true,
|
|
3937
|
+
onInput: (value)=>{
|
|
3938
|
+
panelState.searchQuery = value.trim().toLowerCase();
|
|
3939
|
+
panelState.selectedEventId = null;
|
|
3940
|
+
renderEventsPanel(container, options);
|
|
3941
|
+
}
|
|
3942
|
+
})
|
|
3943
|
+
]
|
|
3944
|
+
}));
|
|
3234
3945
|
const eventList = renderer_div({
|
|
3235
3946
|
style: {
|
|
3236
3947
|
display: 'flex',
|
|
@@ -3250,9 +3961,9 @@ var __webpack_exports__ = {};
|
|
|
3250
3961
|
},
|
|
3251
3962
|
text: 'No events match this filter'
|
|
3252
3963
|
}));
|
|
3253
|
-
else for (const event of events)eventList.appendChild(createEventItem(event, event.id === selectedEventId, ()=>{
|
|
3254
|
-
selectedEventId = event.id;
|
|
3255
|
-
|
|
3964
|
+
else for (const event of events)eventList.appendChild(createEventItem(event, event.id === panelState.selectedEventId, ()=>{
|
|
3965
|
+
panelState.selectedEventId = event.id;
|
|
3966
|
+
renderEventsPanel(container, options);
|
|
3256
3967
|
}));
|
|
3257
3968
|
container.appendChild(eventList);
|
|
3258
3969
|
container.appendChild(createPayloadSection(selectedEvent));
|
|
@@ -3279,6 +3990,11 @@ var __webpack_exports__ = {};
|
|
|
3279
3990
|
if ('network' === filter) return 'network' === event.type;
|
|
3280
3991
|
return 'iab' === event.type;
|
|
3281
3992
|
}
|
|
3993
|
+
function matchesSearch(event, query) {
|
|
3994
|
+
if (!query) return true;
|
|
3995
|
+
const haystack = `${event.type} ${event.message} ${JSON.stringify(event.data ?? {})}`;
|
|
3996
|
+
return haystack.toLowerCase().includes(query);
|
|
3997
|
+
}
|
|
3282
3998
|
function createPayloadSection(event) {
|
|
3283
3999
|
const payload = event?.data ? JSON.stringify(event.data, null, 2) : null;
|
|
3284
4000
|
return renderer_div({
|
|
@@ -3331,7 +4047,7 @@ var __webpack_exports__ = {};
|
|
|
3331
4047
|
},
|
|
3332
4048
|
onClick: onSelect,
|
|
3333
4049
|
children: [
|
|
3334
|
-
|
|
4050
|
+
renderer_span({
|
|
3335
4051
|
style: {
|
|
3336
4052
|
color,
|
|
3337
4053
|
fontSize: '8px',
|
|
@@ -3339,7 +4055,7 @@ var __webpack_exports__ = {};
|
|
|
3339
4055
|
},
|
|
3340
4056
|
text: icon
|
|
3341
4057
|
}),
|
|
3342
|
-
|
|
4058
|
+
renderer_span({
|
|
3343
4059
|
style: {
|
|
3344
4060
|
color: 'var(--c15t-text-muted)',
|
|
3345
4061
|
fontFamily: 'monospace',
|
|
@@ -3348,7 +4064,7 @@ var __webpack_exports__ = {};
|
|
|
3348
4064
|
},
|
|
3349
4065
|
text: time
|
|
3350
4066
|
}),
|
|
3351
|
-
|
|
4067
|
+
renderer_span({
|
|
3352
4068
|
style: {
|
|
3353
4069
|
color: 'var(--c15t-text)',
|
|
3354
4070
|
flex: '1'
|
|
@@ -3416,38 +4132,15 @@ var __webpack_exports__ = {};
|
|
|
3416
4132
|
return 'var(--c15t-text-muted)';
|
|
3417
4133
|
}
|
|
3418
4134
|
}
|
|
3419
|
-
|
|
4135
|
+
const iabSearchByContainer = new WeakMap();
|
|
4136
|
+
function renderIabPanel(container, options) {
|
|
3420
4137
|
const { getState, onSetPurposeConsent, onSetVendorConsent, onSetSpecialFeatureOptIn, onAcceptAll, onRejectAll, onSave, onReset } = options;
|
|
3421
4138
|
clearElement(container);
|
|
3422
4139
|
const state = getState();
|
|
3423
|
-
if (!state) return void container.appendChild(
|
|
3424
|
-
|
|
3425
|
-
padding: '24px',
|
|
3426
|
-
textAlign: 'center',
|
|
3427
|
-
color: 'var(--c15t-text-muted)',
|
|
3428
|
-
fontSize: 'var(--c15t-devtools-font-size-sm)'
|
|
3429
|
-
},
|
|
3430
|
-
text: 'Store not connected'
|
|
3431
|
-
}));
|
|
3432
|
-
if ('iab' !== state.model) return void container.appendChild(renderer_div({
|
|
3433
|
-
style: {
|
|
3434
|
-
padding: '24px',
|
|
3435
|
-
textAlign: 'center',
|
|
3436
|
-
color: 'var(--c15t-text-muted)',
|
|
3437
|
-
fontSize: 'var(--c15t-devtools-font-size-sm)'
|
|
3438
|
-
},
|
|
3439
|
-
text: 'IAB TCF mode is not configured'
|
|
3440
|
-
}));
|
|
4140
|
+
if (!state) return void container.appendChild(createDisconnectedState());
|
|
4141
|
+
if ('iab' !== state.model) return void container.appendChild(createDisconnectedState('IAB TCF mode is not configured'));
|
|
3441
4142
|
const iabState = state.iab;
|
|
3442
|
-
if (!iabState) return void container.appendChild(
|
|
3443
|
-
style: {
|
|
3444
|
-
padding: '24px',
|
|
3445
|
-
textAlign: 'center',
|
|
3446
|
-
color: 'var(--c15t-text-muted)',
|
|
3447
|
-
fontSize: 'var(--c15t-devtools-font-size-sm)'
|
|
3448
|
-
},
|
|
3449
|
-
text: 'IAB state not available'
|
|
3450
|
-
}));
|
|
4143
|
+
if (!iabState) return void container.appendChild(createDisconnectedState('IAB state not available'));
|
|
3451
4144
|
const tcString = iabState.tcString;
|
|
3452
4145
|
const tcStringSection = createSection({
|
|
3453
4146
|
title: 'TC String',
|
|
@@ -3479,9 +4172,30 @@ var __webpack_exports__ = {};
|
|
|
3479
4172
|
});
|
|
3480
4173
|
container.appendChild(tcStringSection);
|
|
3481
4174
|
const gvl = iabState.gvl;
|
|
4175
|
+
const searchQuery = iabSearchByContainer.get(container) ?? '';
|
|
4176
|
+
container.appendChild(createSection({
|
|
4177
|
+
title: 'Filter',
|
|
4178
|
+
children: [
|
|
4179
|
+
createInput({
|
|
4180
|
+
value: searchQuery,
|
|
4181
|
+
placeholder: 'Filter purposes or vendors…',
|
|
4182
|
+
ariaLabel: 'Filter IAB purposes and vendors',
|
|
4183
|
+
small: true,
|
|
4184
|
+
onInput: (value)=>{
|
|
4185
|
+
iabSearchByContainer.set(container, value.trim().toLowerCase());
|
|
4186
|
+
renderIabPanel(container, options);
|
|
4187
|
+
}
|
|
4188
|
+
})
|
|
4189
|
+
]
|
|
4190
|
+
}));
|
|
3482
4191
|
const purposeConsents = iabState.purposeConsents || {};
|
|
3483
4192
|
const purposes = gvl?.purposes || {};
|
|
3484
|
-
const purposeEntries = Object.entries(purposeConsents)
|
|
4193
|
+
const purposeEntries = Object.entries(purposeConsents).filter(([purposeId])=>{
|
|
4194
|
+
if (!searchQuery) return true;
|
|
4195
|
+
const purposeInfo = purposes[purposeId];
|
|
4196
|
+
const purposeName = purposeInfo?.name || `Purpose ${purposeId}`;
|
|
4197
|
+
return `${purposeId} ${purposeName}`.toLowerCase().includes(searchQuery);
|
|
4198
|
+
});
|
|
3485
4199
|
if (purposeEntries.length > 0) {
|
|
3486
4200
|
const purposeList = renderer_div({
|
|
3487
4201
|
style: {
|
|
@@ -3509,7 +4223,12 @@ var __webpack_exports__ = {};
|
|
|
3509
4223
|
}
|
|
3510
4224
|
const specialFeatureOptIns = iabState.specialFeatureOptIns || {};
|
|
3511
4225
|
const specialFeatures = gvl?.specialFeatures || {};
|
|
3512
|
-
const specialFeatureEntries = Object.entries(specialFeatureOptIns)
|
|
4226
|
+
const specialFeatureEntries = Object.entries(specialFeatureOptIns).filter(([featureId])=>{
|
|
4227
|
+
if (!searchQuery) return true;
|
|
4228
|
+
const featureInfo = specialFeatures[featureId];
|
|
4229
|
+
const featureName = featureInfo?.name || `Special Feature ${featureId}`;
|
|
4230
|
+
return `${featureId} ${featureName}`.toLowerCase().includes(searchQuery);
|
|
4231
|
+
});
|
|
3513
4232
|
if (specialFeatureEntries.length > 0) {
|
|
3514
4233
|
const specialFeatureList = renderer_div({
|
|
3515
4234
|
style: {
|
|
@@ -3537,7 +4256,12 @@ var __webpack_exports__ = {};
|
|
|
3537
4256
|
}
|
|
3538
4257
|
const vendorConsents = iabState.vendorConsents || {};
|
|
3539
4258
|
const vendors = gvl?.vendors || {};
|
|
3540
|
-
const vendorEntries = Object.entries(vendorConsents)
|
|
4259
|
+
const vendorEntries = Object.entries(vendorConsents).filter(([vendorId])=>{
|
|
4260
|
+
if (!searchQuery) return true;
|
|
4261
|
+
const vendorInfo = vendors[vendorId];
|
|
4262
|
+
const vendorName = vendorInfo?.name || `Vendor ${vendorId}`;
|
|
4263
|
+
return `${vendorId} ${vendorName}`.toLowerCase().includes(searchQuery);
|
|
4264
|
+
});
|
|
3541
4265
|
const iabVendors = [];
|
|
3542
4266
|
const customVendors = [];
|
|
3543
4267
|
for (const [vendorId, consent] of vendorEntries){
|
|
@@ -3663,7 +4387,7 @@ var __webpack_exports__ = {};
|
|
|
3663
4387
|
borderBottom: '1px solid var(--c15t-border)'
|
|
3664
4388
|
},
|
|
3665
4389
|
children: [
|
|
3666
|
-
|
|
4390
|
+
renderer_span({
|
|
3667
4391
|
style: {
|
|
3668
4392
|
color: 'var(--c15t-text)',
|
|
3669
4393
|
overflow: 'hidden',
|
|
@@ -3717,7 +4441,7 @@ var __webpack_exports__ = {};
|
|
|
3717
4441
|
marginRight: '8px'
|
|
3718
4442
|
},
|
|
3719
4443
|
children: [
|
|
3720
|
-
'custom' === type ?
|
|
4444
|
+
'custom' === type ? renderer_span({
|
|
3721
4445
|
style: {
|
|
3722
4446
|
fontSize: '9px',
|
|
3723
4447
|
padding: '1px 4px',
|
|
@@ -3728,7 +4452,7 @@ var __webpack_exports__ = {};
|
|
|
3728
4452
|
},
|
|
3729
4453
|
text: 'CUSTOM'
|
|
3730
4454
|
}) : null,
|
|
3731
|
-
|
|
4455
|
+
renderer_span({
|
|
3732
4456
|
style: {
|
|
3733
4457
|
color: 'var(--c15t-text)',
|
|
3734
4458
|
overflow: 'hidden',
|
|
@@ -3756,19 +4480,11 @@ var __webpack_exports__ = {};
|
|
|
3756
4480
|
if (text.length <= maxLength) return text;
|
|
3757
4481
|
return `${text.slice(0, maxLength - 3)}...`;
|
|
3758
4482
|
}
|
|
3759
|
-
function
|
|
4483
|
+
function renderLocationPanel(container, options) {
|
|
3760
4484
|
const { getState, onApplyOverrides, onClearOverrides } = options;
|
|
3761
4485
|
clearElement(container);
|
|
3762
4486
|
const state = getState();
|
|
3763
|
-
if (!state) return void container.appendChild(
|
|
3764
|
-
style: {
|
|
3765
|
-
padding: '24px',
|
|
3766
|
-
textAlign: 'center',
|
|
3767
|
-
color: 'var(--c15t-text-muted)',
|
|
3768
|
-
fontSize: 'var(--c15t-devtools-font-size-sm)'
|
|
3769
|
-
},
|
|
3770
|
-
text: 'Store not connected'
|
|
3771
|
-
}));
|
|
4487
|
+
if (!state) return void container.appendChild(createDisconnectedState());
|
|
3772
4488
|
const locationInfo = state.locationInfo;
|
|
3773
4489
|
const overrides = state.overrides;
|
|
3774
4490
|
const translationConfig = state.translationConfig;
|
|
@@ -3808,7 +4524,7 @@ var __webpack_exports__ = {};
|
|
|
3808
4524
|
selectOptions: GPC_OPTIONS,
|
|
3809
4525
|
value: initialDraft.gpc
|
|
3810
4526
|
});
|
|
3811
|
-
const formStatus =
|
|
4527
|
+
const formStatus = renderer_span({
|
|
3812
4528
|
className: styles_components_module.overrideStatus,
|
|
3813
4529
|
text: 'In sync'
|
|
3814
4530
|
});
|
|
@@ -3854,7 +4570,7 @@ var __webpack_exports__ = {};
|
|
|
3854
4570
|
title: 'Override Settings',
|
|
3855
4571
|
children: [
|
|
3856
4572
|
overrideFieldsGrid,
|
|
3857
|
-
|
|
4573
|
+
renderer_span({
|
|
3858
4574
|
className: styles_components_module.overrideHint,
|
|
3859
4575
|
text: 'GPC override only affects opt-out or unregulated jurisdictions.'
|
|
3860
4576
|
}),
|
|
@@ -3942,7 +4658,7 @@ var __webpack_exports__ = {};
|
|
|
3942
4658
|
element: renderer_div({
|
|
3943
4659
|
className: styles_components_module.overrideField,
|
|
3944
4660
|
children: [
|
|
3945
|
-
|
|
4661
|
+
renderer_span({
|
|
3946
4662
|
className: styles_components_module.overrideLabel,
|
|
3947
4663
|
text: label
|
|
3948
4664
|
}),
|
|
@@ -3963,7 +4679,7 @@ var __webpack_exports__ = {};
|
|
|
3963
4679
|
element: renderer_div({
|
|
3964
4680
|
className: styles_components_module.overrideField,
|
|
3965
4681
|
children: [
|
|
3966
|
-
|
|
4682
|
+
renderer_span({
|
|
3967
4683
|
className: styles_components_module.overrideLabel,
|
|
3968
4684
|
text: label
|
|
3969
4685
|
}),
|
|
@@ -4174,14 +4890,14 @@ var __webpack_exports__ = {};
|
|
|
4174
4890
|
gap: '1px'
|
|
4175
4891
|
},
|
|
4176
4892
|
children: [
|
|
4177
|
-
|
|
4893
|
+
renderer_span({
|
|
4178
4894
|
style: {
|
|
4179
4895
|
fontSize: 'var(--c15t-devtools-font-size-xs)',
|
|
4180
4896
|
color: 'var(--c15t-text-muted)'
|
|
4181
4897
|
},
|
|
4182
4898
|
text: label
|
|
4183
4899
|
}),
|
|
4184
|
-
|
|
4900
|
+
renderer_span({
|
|
4185
4901
|
style: {
|
|
4186
4902
|
fontSize: 'var(--c15t-font-size-sm)',
|
|
4187
4903
|
fontWeight: '500',
|
|
@@ -4357,21 +5073,21 @@ var __webpack_exports__ = {};
|
|
|
4357
5073
|
borderBottom: '1px solid var(--c15t-border)'
|
|
4358
5074
|
},
|
|
4359
5075
|
children: [
|
|
4360
|
-
|
|
5076
|
+
renderer_span({
|
|
4361
5077
|
style: {
|
|
4362
5078
|
color: iconColor,
|
|
4363
5079
|
flexShrink: '0'
|
|
4364
5080
|
},
|
|
4365
5081
|
text: icon
|
|
4366
5082
|
}),
|
|
4367
|
-
|
|
5083
|
+
renderer_span({
|
|
4368
5084
|
style: {
|
|
4369
5085
|
color: 'var(--c15t-text-muted)',
|
|
4370
5086
|
flexShrink: '0'
|
|
4371
5087
|
},
|
|
4372
5088
|
text: `${resource.type}:`
|
|
4373
5089
|
}),
|
|
4374
|
-
|
|
5090
|
+
renderer_span({
|
|
4375
5091
|
style: {
|
|
4376
5092
|
fontWeight: '500',
|
|
4377
5093
|
color: 'var(--c15t-text)',
|
|
@@ -4417,23 +5133,37 @@ var __webpack_exports__ = {};
|
|
|
4417
5133
|
<polyline points="16 18 22 12 16 6"></polyline>
|
|
4418
5134
|
<polyline points="8 6 2 12 8 18"></polyline>
|
|
4419
5135
|
</svg>`;
|
|
4420
|
-
|
|
5136
|
+
const scriptsSearchByContainer = new WeakMap();
|
|
5137
|
+
function renderScriptsPanel(container, options) {
|
|
4421
5138
|
const { getState, getEvents } = options;
|
|
4422
5139
|
clearElement(container);
|
|
4423
5140
|
const state = getState();
|
|
4424
|
-
if (!state) return void container.appendChild(
|
|
4425
|
-
style: {
|
|
4426
|
-
padding: '24px',
|
|
4427
|
-
textAlign: 'center',
|
|
4428
|
-
color: 'var(--c15t-text-muted)',
|
|
4429
|
-
fontSize: 'var(--c15t-devtools-font-size-sm)'
|
|
4430
|
-
},
|
|
4431
|
-
text: 'Store not connected'
|
|
4432
|
-
}));
|
|
5141
|
+
if (!state) return void container.appendChild(createDisconnectedState());
|
|
4433
5142
|
const scripts = state.scripts || [];
|
|
4434
5143
|
const loadedScripts = state.loadedScripts || {};
|
|
4435
5144
|
const networkBlocker = state.networkBlocker;
|
|
4436
5145
|
const events = getEvents?.() ?? [];
|
|
5146
|
+
const searchQuery = scriptsSearchByContainer.get(container) ?? '';
|
|
5147
|
+
const filteredScripts = scripts.filter((script)=>{
|
|
5148
|
+
if (!searchQuery) return true;
|
|
5149
|
+
const category = 'string' == typeof script.category ? script.category : JSON.stringify(script.category);
|
|
5150
|
+
return `${script.id} ${category}`.toLowerCase().includes(searchQuery);
|
|
5151
|
+
});
|
|
5152
|
+
if (scripts.length > 4) container.appendChild(createSection({
|
|
5153
|
+
title: 'Filter',
|
|
5154
|
+
children: [
|
|
5155
|
+
createInput({
|
|
5156
|
+
value: searchQuery,
|
|
5157
|
+
placeholder: "Filter scripts…",
|
|
5158
|
+
ariaLabel: "Filter scripts",
|
|
5159
|
+
small: true,
|
|
5160
|
+
onInput: (value)=>{
|
|
5161
|
+
scriptsSearchByContainer.set(container, value.trim().toLowerCase());
|
|
5162
|
+
renderScriptsPanel(container, options);
|
|
5163
|
+
}
|
|
5164
|
+
})
|
|
5165
|
+
]
|
|
5166
|
+
}));
|
|
4437
5167
|
if (0 === scripts.length) {
|
|
4438
5168
|
const scriptsSection = createSection({
|
|
4439
5169
|
title: 'Configured Scripts',
|
|
@@ -4450,10 +5180,19 @@ var __webpack_exports__ = {};
|
|
|
4450
5180
|
style: {
|
|
4451
5181
|
display: 'flex',
|
|
4452
5182
|
flexDirection: 'column',
|
|
4453
|
-
|
|
5183
|
+
borderTop: '1px solid var(--c15t-border)',
|
|
5184
|
+
borderBottom: '1px solid var(--c15t-border)'
|
|
4454
5185
|
}
|
|
4455
5186
|
});
|
|
4456
|
-
|
|
5187
|
+
if (0 === filteredScripts.length) scriptsList.appendChild(renderer_div({
|
|
5188
|
+
style: {
|
|
5189
|
+
padding: '10px 0',
|
|
5190
|
+
fontSize: 'var(--c15t-devtools-font-size-xs)',
|
|
5191
|
+
color: 'var(--c15t-text-muted)'
|
|
5192
|
+
},
|
|
5193
|
+
text: "No matching scripts"
|
|
5194
|
+
}));
|
|
5195
|
+
for (const script of filteredScripts){
|
|
4457
5196
|
const scriptId = script.id;
|
|
4458
5197
|
const isLoaded = true === loadedScripts[scriptId];
|
|
4459
5198
|
const category = script.category;
|
|
@@ -4477,20 +5216,67 @@ var __webpack_exports__ = {};
|
|
|
4477
5216
|
text: status.charAt(0).toUpperCase() + status.slice(1),
|
|
4478
5217
|
variant: statusVariant
|
|
4479
5218
|
});
|
|
4480
|
-
const
|
|
4481
|
-
|
|
4482
|
-
|
|
4483
|
-
|
|
4484
|
-
|
|
4485
|
-
|
|
4486
|
-
|
|
4487
|
-
|
|
4488
|
-
|
|
4489
|
-
|
|
4490
|
-
|
|
4491
|
-
|
|
4492
|
-
|
|
4493
|
-
|
|
5219
|
+
const row = renderer_div({
|
|
5220
|
+
style: {
|
|
5221
|
+
display: 'flex',
|
|
5222
|
+
alignItems: 'center',
|
|
5223
|
+
justifyContent: 'space-between',
|
|
5224
|
+
gap: '8px',
|
|
5225
|
+
padding: '8px 0',
|
|
5226
|
+
borderBottom: '1px solid var(--c15t-border)'
|
|
5227
|
+
},
|
|
5228
|
+
children: [
|
|
5229
|
+
renderer_div({
|
|
5230
|
+
style: {
|
|
5231
|
+
display: 'flex',
|
|
5232
|
+
flexDirection: 'column',
|
|
5233
|
+
gap: '2px',
|
|
5234
|
+
minWidth: '0',
|
|
5235
|
+
flex: '1'
|
|
5236
|
+
},
|
|
5237
|
+
children: [
|
|
5238
|
+
renderer_div({
|
|
5239
|
+
style: {
|
|
5240
|
+
fontSize: 'var(--c15t-font-size-sm)',
|
|
5241
|
+
fontWeight: '500',
|
|
5242
|
+
color: 'var(--c15t-text)',
|
|
5243
|
+
overflow: 'hidden',
|
|
5244
|
+
textOverflow: 'ellipsis',
|
|
5245
|
+
whiteSpace: 'nowrap'
|
|
5246
|
+
},
|
|
5247
|
+
text: scriptId
|
|
5248
|
+
}),
|
|
5249
|
+
renderer_div({
|
|
5250
|
+
style: {
|
|
5251
|
+
fontSize: 'var(--c15t-devtools-font-size-xs)',
|
|
5252
|
+
color: 'var(--c15t-text-muted)',
|
|
5253
|
+
overflow: 'hidden',
|
|
5254
|
+
textOverflow: 'ellipsis',
|
|
5255
|
+
whiteSpace: 'nowrap'
|
|
5256
|
+
},
|
|
5257
|
+
text: `Category: ${categoryDisplay}`
|
|
5258
|
+
})
|
|
5259
|
+
]
|
|
5260
|
+
}),
|
|
5261
|
+
renderer_div({
|
|
5262
|
+
style: {
|
|
5263
|
+
flexShrink: '0'
|
|
5264
|
+
},
|
|
5265
|
+
children: [
|
|
5266
|
+
badge
|
|
5267
|
+
]
|
|
5268
|
+
})
|
|
5269
|
+
]
|
|
5270
|
+
});
|
|
5271
|
+
scriptsList.appendChild(row);
|
|
5272
|
+
}
|
|
5273
|
+
const lastRow = scriptsList.lastElementChild;
|
|
5274
|
+
if (lastRow) lastRow.style.borderBottom = 'none';
|
|
5275
|
+
const scriptsSection = createSection({
|
|
5276
|
+
title: `Configured Scripts (${filteredScripts.length}/${scripts.length})`,
|
|
5277
|
+
children: [
|
|
5278
|
+
scriptsList
|
|
5279
|
+
]
|
|
4494
5280
|
});
|
|
4495
5281
|
container.appendChild(scriptsSection);
|
|
4496
5282
|
}
|
|
@@ -4629,53 +5415,6 @@ var __webpack_exports__ = {};
|
|
|
4629
5415
|
if (text.length <= maxLength) return text;
|
|
4630
5416
|
return `${text.slice(0, maxLength - 3)}...`;
|
|
4631
5417
|
}
|
|
4632
|
-
const DEVTOOLS_OVERRIDES_STORAGE_KEY = 'c15t-devtools-overrides';
|
|
4633
|
-
function normalizeStringValue(value) {
|
|
4634
|
-
if ('string' != typeof value) return;
|
|
4635
|
-
const normalized = value.trim();
|
|
4636
|
-
return normalized.length > 0 ? normalized : void 0;
|
|
4637
|
-
}
|
|
4638
|
-
function normalizeBooleanValue(value) {
|
|
4639
|
-
return 'boolean' == typeof value ? value : void 0;
|
|
4640
|
-
}
|
|
4641
|
-
function normalizeOverrides(value) {
|
|
4642
|
-
if (!value || 'object' != typeof value) return null;
|
|
4643
|
-
const source = value;
|
|
4644
|
-
const overrides = {
|
|
4645
|
-
country: normalizeStringValue(source.country),
|
|
4646
|
-
region: normalizeStringValue(source.region),
|
|
4647
|
-
language: normalizeStringValue(source.language),
|
|
4648
|
-
gpc: normalizeBooleanValue(source.gpc)
|
|
4649
|
-
};
|
|
4650
|
-
return hasPersistedOverrides(overrides) ? overrides : null;
|
|
4651
|
-
}
|
|
4652
|
-
function hasPersistedOverrides(overrides) {
|
|
4653
|
-
return Boolean(overrides.country || overrides.region || overrides.language || void 0 !== overrides.gpc);
|
|
4654
|
-
}
|
|
4655
|
-
function override_storage_loadPersistedOverrides(storageKey = DEVTOOLS_OVERRIDES_STORAGE_KEY) {
|
|
4656
|
-
if ('undefined' == typeof window) return null;
|
|
4657
|
-
try {
|
|
4658
|
-
const stored = localStorage.getItem(storageKey);
|
|
4659
|
-
if (!stored) return null;
|
|
4660
|
-
const parsed = JSON.parse(stored);
|
|
4661
|
-
return normalizeOverrides(parsed);
|
|
4662
|
-
} catch {
|
|
4663
|
-
return null;
|
|
4664
|
-
}
|
|
4665
|
-
}
|
|
4666
|
-
function override_storage_persistOverrides(overrides, storageKey = DEVTOOLS_OVERRIDES_STORAGE_KEY) {
|
|
4667
|
-
if ('undefined' == typeof window) return;
|
|
4668
|
-
try {
|
|
4669
|
-
if (!hasPersistedOverrides(overrides)) return void localStorage.removeItem(storageKey);
|
|
4670
|
-
localStorage.setItem(storageKey, JSON.stringify(overrides));
|
|
4671
|
-
} catch {}
|
|
4672
|
-
}
|
|
4673
|
-
function override_storage_clearPersistedOverrides(storageKey = DEVTOOLS_OVERRIDES_STORAGE_KEY) {
|
|
4674
|
-
if ('undefined' == typeof window) return;
|
|
4675
|
-
try {
|
|
4676
|
-
localStorage.removeItem(storageKey);
|
|
4677
|
-
} catch {}
|
|
4678
|
-
}
|
|
4679
5418
|
const STORAGE_KEYS = {
|
|
4680
5419
|
C15T: 'c15t',
|
|
4681
5420
|
PENDING_SYNC: 'c15t:pending-consent-sync',
|
|
@@ -4701,7 +5440,7 @@ var __webpack_exports__ = {};
|
|
|
4701
5440
|
localStorage.removeItem(STORAGE_KEYS.EUCONSENT);
|
|
4702
5441
|
} catch {}
|
|
4703
5442
|
}
|
|
4704
|
-
async function
|
|
5443
|
+
async function resetAllConsents(store, stateManager) {
|
|
4705
5444
|
const storeState = store.getState();
|
|
4706
5445
|
storeState.resetConsents();
|
|
4707
5446
|
clearAllCookies();
|
|
@@ -4712,7 +5451,222 @@ var __webpack_exports__ = {};
|
|
|
4712
5451
|
message: 'All consents reset (storage cleared)'
|
|
4713
5452
|
});
|
|
4714
5453
|
}
|
|
5454
|
+
function panel_renderer_createPanelRenderer(config) {
|
|
5455
|
+
const { storeConnector, stateManager, enableEventLogging = true, onPersistOverrides, onClearPersistedOverrides, onCopyState, onExportDebugBundle } = config;
|
|
5456
|
+
const getStoreState = ()=>storeConnector.getState();
|
|
5457
|
+
const logEvent = (type, message, data)=>{
|
|
5458
|
+
if (enableEventLogging) stateManager.addEvent({
|
|
5459
|
+
type,
|
|
5460
|
+
message,
|
|
5461
|
+
data
|
|
5462
|
+
});
|
|
5463
|
+
};
|
|
5464
|
+
const resetConsents = async ()=>{
|
|
5465
|
+
const store = storeConnector.getStore();
|
|
5466
|
+
if (store) await resetAllConsents(store, enableEventLogging ? stateManager : void 0);
|
|
5467
|
+
};
|
|
5468
|
+
const renderPanel = (container, tab)=>{
|
|
5469
|
+
switch(tab){
|
|
5470
|
+
case 'consents':
|
|
5471
|
+
renderConsentsPanel(container, {
|
|
5472
|
+
getState: getStoreState,
|
|
5473
|
+
onConsentChange: (name, value)=>{
|
|
5474
|
+
const store = storeConnector.getStore();
|
|
5475
|
+
if (store) {
|
|
5476
|
+
const consentName = String(name);
|
|
5477
|
+
store.getState().setSelectedConsent(consentName, value);
|
|
5478
|
+
logEvent('info', `${consentName} toggled to ${value} (not saved)`, {
|
|
5479
|
+
name: consentName,
|
|
5480
|
+
value
|
|
5481
|
+
});
|
|
5482
|
+
}
|
|
5483
|
+
},
|
|
5484
|
+
onSave: ()=>{
|
|
5485
|
+
const store = storeConnector.getStore();
|
|
5486
|
+
if (store) {
|
|
5487
|
+
store.getState().saveConsents('custom');
|
|
5488
|
+
logEvent('consent_save', 'Saved consent preferences');
|
|
5489
|
+
}
|
|
5490
|
+
},
|
|
5491
|
+
onAcceptAll: ()=>{
|
|
5492
|
+
const store = storeConnector.getStore();
|
|
5493
|
+
if (store) {
|
|
5494
|
+
store.getState().saveConsents('all');
|
|
5495
|
+
logEvent('consent_save', 'Accepted all consents');
|
|
5496
|
+
}
|
|
5497
|
+
},
|
|
5498
|
+
onRejectAll: ()=>{
|
|
5499
|
+
const store = storeConnector.getStore();
|
|
5500
|
+
if (store) {
|
|
5501
|
+
store.getState().saveConsents('necessary');
|
|
5502
|
+
logEvent('consent_save', 'Rejected all optional consents');
|
|
5503
|
+
}
|
|
5504
|
+
},
|
|
5505
|
+
onReset: resetConsents
|
|
5506
|
+
});
|
|
5507
|
+
break;
|
|
5508
|
+
case 'location':
|
|
5509
|
+
renderLocationPanel(container, {
|
|
5510
|
+
getState: getStoreState,
|
|
5511
|
+
onApplyOverrides: async (overrides)=>{
|
|
5512
|
+
const store = storeConnector.getStore();
|
|
5513
|
+
if (store) {
|
|
5514
|
+
await store.getState().setOverrides({
|
|
5515
|
+
country: overrides.country,
|
|
5516
|
+
region: overrides.region,
|
|
5517
|
+
language: overrides.language,
|
|
5518
|
+
gpc: overrides.gpc
|
|
5519
|
+
});
|
|
5520
|
+
logEvent('info', 'Overrides updated', {
|
|
5521
|
+
country: overrides.country,
|
|
5522
|
+
region: overrides.region,
|
|
5523
|
+
language: overrides.language,
|
|
5524
|
+
gpc: overrides.gpc
|
|
5525
|
+
});
|
|
5526
|
+
onPersistOverrides?.({
|
|
5527
|
+
country: overrides.country,
|
|
5528
|
+
region: overrides.region,
|
|
5529
|
+
language: overrides.language,
|
|
5530
|
+
gpc: overrides.gpc
|
|
5531
|
+
});
|
|
5532
|
+
}
|
|
5533
|
+
},
|
|
5534
|
+
onClearOverrides: async ()=>{
|
|
5535
|
+
const store = storeConnector.getStore();
|
|
5536
|
+
if (store) {
|
|
5537
|
+
await store.getState().setOverrides({
|
|
5538
|
+
country: void 0,
|
|
5539
|
+
region: void 0,
|
|
5540
|
+
language: void 0,
|
|
5541
|
+
gpc: void 0
|
|
5542
|
+
});
|
|
5543
|
+
logEvent('info', 'Overrides cleared');
|
|
5544
|
+
onClearPersistedOverrides?.();
|
|
5545
|
+
}
|
|
5546
|
+
}
|
|
5547
|
+
});
|
|
5548
|
+
break;
|
|
5549
|
+
case "scripts":
|
|
5550
|
+
renderScriptsPanel(container, {
|
|
5551
|
+
getState: getStoreState,
|
|
5552
|
+
getEvents: ()=>stateManager.getState().eventLog
|
|
5553
|
+
});
|
|
5554
|
+
break;
|
|
5555
|
+
case 'iab':
|
|
5556
|
+
renderIabPanel(container, {
|
|
5557
|
+
getState: getStoreState,
|
|
5558
|
+
onSetPurposeConsent: (purposeId, value)=>{
|
|
5559
|
+
const iab = storeConnector.getStore()?.getState().iab;
|
|
5560
|
+
if (!iab) return;
|
|
5561
|
+
iab.setPurposeConsent(purposeId, value);
|
|
5562
|
+
logEvent('iab', `IAB purpose ${purposeId} set to ${value}`);
|
|
5563
|
+
},
|
|
5564
|
+
onSetVendorConsent: (vendorId, value)=>{
|
|
5565
|
+
const iab = storeConnector.getStore()?.getState().iab;
|
|
5566
|
+
if (!iab) return;
|
|
5567
|
+
iab.setVendorConsent(vendorId, value);
|
|
5568
|
+
logEvent('iab', `IAB vendor ${vendorId} set to ${value}`);
|
|
5569
|
+
},
|
|
5570
|
+
onSetSpecialFeatureOptIn: (featureId, value)=>{
|
|
5571
|
+
const iab = storeConnector.getStore()?.getState().iab;
|
|
5572
|
+
if (!iab) return;
|
|
5573
|
+
iab.setSpecialFeatureOptIn(featureId, value);
|
|
5574
|
+
logEvent('iab', `IAB feature ${featureId} set to ${value}`);
|
|
5575
|
+
},
|
|
5576
|
+
onAcceptAll: ()=>{
|
|
5577
|
+
const iab = storeConnector.getStore()?.getState().iab;
|
|
5578
|
+
if (!iab) return;
|
|
5579
|
+
iab.acceptAll();
|
|
5580
|
+
logEvent('iab', 'IAB accept all selected');
|
|
5581
|
+
},
|
|
5582
|
+
onRejectAll: ()=>{
|
|
5583
|
+
const iab = storeConnector.getStore()?.getState().iab;
|
|
5584
|
+
if (!iab) return;
|
|
5585
|
+
iab.rejectAll();
|
|
5586
|
+
logEvent('iab', 'IAB reject all selected');
|
|
5587
|
+
},
|
|
5588
|
+
onSave: ()=>{
|
|
5589
|
+
const iab = storeConnector.getStore()?.getState().iab;
|
|
5590
|
+
if (!iab) return;
|
|
5591
|
+
iab.save().then(()=>logEvent('iab', 'IAB preferences saved')).catch((error)=>{
|
|
5592
|
+
logEvent('error', `Failed to save IAB preferences: ${String(error)}`);
|
|
5593
|
+
});
|
|
5594
|
+
},
|
|
5595
|
+
onReset: resetConsents
|
|
5596
|
+
});
|
|
5597
|
+
break;
|
|
5598
|
+
case 'events':
|
|
5599
|
+
renderEventsPanel(container, {
|
|
5600
|
+
getEvents: ()=>stateManager.getState().eventLog,
|
|
5601
|
+
onClear: ()=>{
|
|
5602
|
+
stateManager.clearEventLog();
|
|
5603
|
+
logEvent('info', 'Event log cleared');
|
|
5604
|
+
}
|
|
5605
|
+
});
|
|
5606
|
+
break;
|
|
5607
|
+
case 'actions':
|
|
5608
|
+
renderActionsPanel(container, {
|
|
5609
|
+
getState: getStoreState,
|
|
5610
|
+
onResetConsents: resetConsents,
|
|
5611
|
+
onRefetchBanner: async ()=>{
|
|
5612
|
+
const store = storeConnector.getStore();
|
|
5613
|
+
if (store) {
|
|
5614
|
+
await store.getState().initConsentManager();
|
|
5615
|
+
logEvent('info', 'Banner data refetched');
|
|
5616
|
+
}
|
|
5617
|
+
},
|
|
5618
|
+
onShowBanner: ()=>{
|
|
5619
|
+
const store = storeConnector.getStore();
|
|
5620
|
+
if (store) {
|
|
5621
|
+
store.getState().setActiveUI('banner', {
|
|
5622
|
+
force: true
|
|
5623
|
+
});
|
|
5624
|
+
logEvent('info', 'Banner shown');
|
|
5625
|
+
}
|
|
5626
|
+
},
|
|
5627
|
+
onOpenPreferences: ()=>{
|
|
5628
|
+
const store = storeConnector.getStore();
|
|
5629
|
+
if (store) {
|
|
5630
|
+
store.getState().setActiveUI('dialog');
|
|
5631
|
+
logEvent('info', 'Preferences dialog opened');
|
|
5632
|
+
}
|
|
5633
|
+
},
|
|
5634
|
+
onCopyState: ()=>{
|
|
5635
|
+
const state = getStoreState();
|
|
5636
|
+
if (state) if (onCopyState) {
|
|
5637
|
+
const result = onCopyState(state);
|
|
5638
|
+
if (result instanceof Promise) result.then((ok)=>{
|
|
5639
|
+
logEvent(ok ? 'info' : 'error', ok ? 'State copied to clipboard' : 'Failed to copy state');
|
|
5640
|
+
}).catch(()=>{
|
|
5641
|
+
logEvent('error', 'Failed to copy state');
|
|
5642
|
+
});
|
|
5643
|
+
else logEvent(result ? 'info' : 'error', result ? 'State copied to clipboard' : 'Failed to copy state');
|
|
5644
|
+
} else navigator.clipboard.writeText(JSON.stringify(state, null, 2)).then(()=>{
|
|
5645
|
+
logEvent('info', 'State copied to clipboard');
|
|
5646
|
+
}).catch(()=>{
|
|
5647
|
+
logEvent('error', 'Failed to copy state');
|
|
5648
|
+
});
|
|
5649
|
+
},
|
|
5650
|
+
onExportDebugBundle: onExportDebugBundle ? ()=>{
|
|
5651
|
+
try {
|
|
5652
|
+
onExportDebugBundle();
|
|
5653
|
+
logEvent('info', 'Debug bundle exported');
|
|
5654
|
+
} catch {
|
|
5655
|
+
logEvent('error', 'Failed to export debug bundle');
|
|
5656
|
+
}
|
|
5657
|
+
} : void 0
|
|
5658
|
+
});
|
|
5659
|
+
break;
|
|
5660
|
+
}
|
|
5661
|
+
};
|
|
5662
|
+
return {
|
|
5663
|
+
renderPanel,
|
|
5664
|
+
getStoreState,
|
|
5665
|
+
resetConsents
|
|
5666
|
+
};
|
|
5667
|
+
}
|
|
4715
5668
|
const STORAGE_KEY = 'c15t-devtools-events';
|
|
5669
|
+
const ACTIVE_TAB_STORAGE_KEY = 'c15t-devtools-active-tab';
|
|
4716
5670
|
function loadPersistedEvents() {
|
|
4717
5671
|
if ('undefined' == typeof window) return [];
|
|
4718
5672
|
try {
|
|
@@ -4727,11 +5681,29 @@ var __webpack_exports__ = {};
|
|
|
4727
5681
|
sessionStorage.setItem(STORAGE_KEY, JSON.stringify(events));
|
|
4728
5682
|
} catch {}
|
|
4729
5683
|
}
|
|
5684
|
+
function isDevToolsTab(value) {
|
|
5685
|
+
return 'consents' === value || 'location' === value || "scripts" === value || 'iab' === value || 'events' === value || 'actions' === value;
|
|
5686
|
+
}
|
|
5687
|
+
function loadPersistedActiveTab() {
|
|
5688
|
+
if ('undefined' == typeof window) return null;
|
|
5689
|
+
try {
|
|
5690
|
+
const stored = localStorage.getItem(ACTIVE_TAB_STORAGE_KEY);
|
|
5691
|
+
if (isDevToolsTab(stored)) return stored;
|
|
5692
|
+
} catch {}
|
|
5693
|
+
return null;
|
|
5694
|
+
}
|
|
5695
|
+
function persistActiveTab(tab) {
|
|
5696
|
+
if ('undefined' == typeof window) return;
|
|
5697
|
+
try {
|
|
5698
|
+
localStorage.setItem(ACTIVE_TAB_STORAGE_KEY, tab);
|
|
5699
|
+
} catch {}
|
|
5700
|
+
}
|
|
4730
5701
|
function state_manager_createStateManager(initialState = {}) {
|
|
4731
5702
|
const persistedEvents = loadPersistedEvents();
|
|
5703
|
+
const persistedActiveTab = loadPersistedActiveTab();
|
|
4732
5704
|
let state = {
|
|
4733
5705
|
isOpen: false,
|
|
4734
|
-
activeTab: 'location',
|
|
5706
|
+
activeTab: persistedActiveTab ?? 'location',
|
|
4735
5707
|
position: 'bottom-right',
|
|
4736
5708
|
isConnected: false,
|
|
4737
5709
|
eventLog: persistedEvents,
|
|
@@ -4772,6 +5744,7 @@ var __webpack_exports__ = {};
|
|
|
4772
5744
|
setState({
|
|
4773
5745
|
activeTab: tab
|
|
4774
5746
|
});
|
|
5747
|
+
persistActiveTab(tab);
|
|
4775
5748
|
},
|
|
4776
5749
|
setPosition: (position)=>{
|
|
4777
5750
|
setState({
|
|
@@ -4817,22 +5790,52 @@ var __webpack_exports__ = {};
|
|
|
4817
5790
|
let reconnectAttempts = 0;
|
|
4818
5791
|
let hasNotifiedDisconnect = false;
|
|
4819
5792
|
const listeners = new Set();
|
|
5793
|
+
const diagnosticsListeners = new Set();
|
|
5794
|
+
let diagnostics = {
|
|
5795
|
+
namespace,
|
|
5796
|
+
reconnectAttempts: 0,
|
|
5797
|
+
nextRetryInMs: null,
|
|
5798
|
+
lastError: null,
|
|
5799
|
+
isPolling: false,
|
|
5800
|
+
disconnectNotified: false
|
|
5801
|
+
};
|
|
4820
5802
|
const INITIAL_RETRY_DELAY_MS = 100;
|
|
4821
5803
|
const MAX_RETRY_DELAY_MS = 2000;
|
|
4822
5804
|
const DISCONNECT_NOTIFY_ATTEMPTS = 5;
|
|
5805
|
+
function updateDiagnostics(partial, notify = true) {
|
|
5806
|
+
diagnostics = {
|
|
5807
|
+
...diagnostics,
|
|
5808
|
+
...partial
|
|
5809
|
+
};
|
|
5810
|
+
if (!notify) return;
|
|
5811
|
+
for (const listener of diagnosticsListeners)listener(diagnostics);
|
|
5812
|
+
}
|
|
4823
5813
|
function clearReconnectTimer() {
|
|
4824
5814
|
if (reconnectTimeout) {
|
|
4825
5815
|
clearTimeout(reconnectTimeout);
|
|
4826
5816
|
reconnectTimeout = null;
|
|
5817
|
+
updateDiagnostics({
|
|
5818
|
+
isPolling: false,
|
|
5819
|
+
nextRetryInMs: null
|
|
5820
|
+
});
|
|
4827
5821
|
}
|
|
4828
5822
|
}
|
|
4829
5823
|
function resetReconnectState() {
|
|
4830
5824
|
reconnectAttempts = 0;
|
|
4831
5825
|
hasNotifiedDisconnect = false;
|
|
5826
|
+
updateDiagnostics({
|
|
5827
|
+
reconnectAttempts: 0,
|
|
5828
|
+
nextRetryInMs: null,
|
|
5829
|
+
lastError: null,
|
|
5830
|
+
disconnectNotified: false
|
|
5831
|
+
});
|
|
4832
5832
|
}
|
|
4833
5833
|
function notifyDisconnectedOnce() {
|
|
4834
5834
|
if (hasNotifiedDisconnect) return;
|
|
4835
5835
|
hasNotifiedDisconnect = true;
|
|
5836
|
+
updateDiagnostics({
|
|
5837
|
+
disconnectNotified: true
|
|
5838
|
+
});
|
|
4836
5839
|
onDisconnect?.();
|
|
4837
5840
|
}
|
|
4838
5841
|
function tryConnect() {
|
|
@@ -4853,16 +5856,31 @@ var __webpack_exports__ = {};
|
|
|
4853
5856
|
onConnect?.(currentState, store);
|
|
4854
5857
|
clearReconnectTimer();
|
|
4855
5858
|
resetReconnectState();
|
|
5859
|
+
updateDiagnostics({
|
|
5860
|
+
lastError: null
|
|
5861
|
+
});
|
|
4856
5862
|
return true;
|
|
4857
5863
|
}
|
|
5864
|
+
updateDiagnostics({
|
|
5865
|
+
lastError: `Store "${namespace}" not found on window`
|
|
5866
|
+
});
|
|
4858
5867
|
return false;
|
|
4859
5868
|
}
|
|
4860
5869
|
function scheduleReconnect(immediate = false) {
|
|
4861
5870
|
if (store || reconnectTimeout) return;
|
|
4862
5871
|
const delay = immediate ? 0 : Math.min(INITIAL_RETRY_DELAY_MS * 2 ** Math.min(reconnectAttempts, 5), MAX_RETRY_DELAY_MS);
|
|
5872
|
+
updateDiagnostics({
|
|
5873
|
+
isPolling: true,
|
|
5874
|
+
nextRetryInMs: delay,
|
|
5875
|
+
reconnectAttempts
|
|
5876
|
+
});
|
|
4863
5877
|
reconnectTimeout = setTimeout(()=>{
|
|
4864
5878
|
reconnectTimeout = null;
|
|
4865
5879
|
reconnectAttempts++;
|
|
5880
|
+
updateDiagnostics({
|
|
5881
|
+
reconnectAttempts,
|
|
5882
|
+
nextRetryInMs: null
|
|
5883
|
+
});
|
|
4866
5884
|
if (tryConnect()) return;
|
|
4867
5885
|
if (reconnectAttempts >= DISCONNECT_NOTIFY_ATTEMPTS) notifyDisconnectedOnce();
|
|
4868
5886
|
scheduleReconnect();
|
|
@@ -4884,6 +5902,14 @@ var __webpack_exports__ = {};
|
|
|
4884
5902
|
listeners.delete(listener);
|
|
4885
5903
|
};
|
|
4886
5904
|
},
|
|
5905
|
+
getDiagnostics: ()=>diagnostics,
|
|
5906
|
+
subscribeDiagnostics: (listener)=>{
|
|
5907
|
+
diagnosticsListeners.add(listener);
|
|
5908
|
+
listener(diagnostics);
|
|
5909
|
+
return ()=>{
|
|
5910
|
+
diagnosticsListeners.delete(listener);
|
|
5911
|
+
};
|
|
5912
|
+
},
|
|
4887
5913
|
retryConnection: ()=>{
|
|
4888
5914
|
if (store) return;
|
|
4889
5915
|
resetReconnectState();
|
|
@@ -4897,6 +5923,134 @@ var __webpack_exports__ = {};
|
|
|
4897
5923
|
}
|
|
4898
5924
|
store = null;
|
|
4899
5925
|
listeners.clear();
|
|
5926
|
+
diagnosticsListeners.clear();
|
|
5927
|
+
}
|
|
5928
|
+
};
|
|
5929
|
+
}
|
|
5930
|
+
const REGISTRY_KEY = '__c15tDevToolsInstrumentationRegistry';
|
|
5931
|
+
let fallbackRegistry = null;
|
|
5932
|
+
function getRegistry() {
|
|
5933
|
+
if ('undefined' == typeof window) {
|
|
5934
|
+
if (!fallbackRegistry) fallbackRegistry = new Map();
|
|
5935
|
+
return fallbackRegistry;
|
|
5936
|
+
}
|
|
5937
|
+
const host = window;
|
|
5938
|
+
const existing = host[REGISTRY_KEY];
|
|
5939
|
+
if (existing) return existing;
|
|
5940
|
+
const registry = new Map();
|
|
5941
|
+
host[REGISTRY_KEY] = registry;
|
|
5942
|
+
return registry;
|
|
5943
|
+
}
|
|
5944
|
+
function getBlockedRequestMessage(payload) {
|
|
5945
|
+
const data = payload;
|
|
5946
|
+
const method = 'string' == typeof data?.method ? data.method.toUpperCase() : 'REQUEST';
|
|
5947
|
+
const url = 'string' == typeof data?.url ? data.url : 'unknown-url';
|
|
5948
|
+
return `Network blocked: ${method} ${url}`;
|
|
5949
|
+
}
|
|
5950
|
+
function emitEvent(entry, event) {
|
|
5951
|
+
for (const listener of entry.listeners)listener(event);
|
|
5952
|
+
}
|
|
5953
|
+
function ensureNetworkBlockerWrapped(entry) {
|
|
5954
|
+
const blocker = entry.store.getState().networkBlocker;
|
|
5955
|
+
if (!blocker) return;
|
|
5956
|
+
if (blocker.onRequestBlocked === entry.wrappedNetworkBlockedCallback) return;
|
|
5957
|
+
entry.originalNetworkBlockedCallback = blocker.onRequestBlocked;
|
|
5958
|
+
entry.wrappedNetworkBlockedCallback = (payload)=>{
|
|
5959
|
+
emitEvent(entry, {
|
|
5960
|
+
type: 'network',
|
|
5961
|
+
message: getBlockedRequestMessage(payload),
|
|
5962
|
+
data: payload
|
|
5963
|
+
});
|
|
5964
|
+
if ('function' == typeof entry.originalNetworkBlockedCallback) entry.originalNetworkBlockedCallback(payload);
|
|
5965
|
+
};
|
|
5966
|
+
entry.store.getState().setNetworkBlocker({
|
|
5967
|
+
...blocker,
|
|
5968
|
+
onRequestBlocked: entry.wrappedNetworkBlockedCallback
|
|
5969
|
+
});
|
|
5970
|
+
}
|
|
5971
|
+
function restoreInstrumentation(entry) {
|
|
5972
|
+
entry.stopWatchingStore?.();
|
|
5973
|
+
entry.stopWatchingStore = null;
|
|
5974
|
+
const state = entry.store.getState();
|
|
5975
|
+
state.setCallback('onBannerFetched', entry.originalCallbacks.onBannerFetched);
|
|
5976
|
+
state.setCallback('onConsentSet', entry.originalCallbacks.onConsentSet);
|
|
5977
|
+
state.setCallback('onError', entry.originalCallbacks.onError);
|
|
5978
|
+
state.setCallback('onBeforeConsentRevocationReload', entry.originalCallbacks.onBeforeConsentRevocationReload);
|
|
5979
|
+
const blocker = state.networkBlocker;
|
|
5980
|
+
if (blocker && blocker.onRequestBlocked === entry.wrappedNetworkBlockedCallback) state.setNetworkBlocker({
|
|
5981
|
+
...blocker,
|
|
5982
|
+
onRequestBlocked: entry.originalNetworkBlockedCallback
|
|
5983
|
+
});
|
|
5984
|
+
entry.wrappedNetworkBlockedCallback = null;
|
|
5985
|
+
}
|
|
5986
|
+
function createInstrumentationEntry(store) {
|
|
5987
|
+
const entry = {
|
|
5988
|
+
store,
|
|
5989
|
+
listeners: new Set(),
|
|
5990
|
+
originalCallbacks: {
|
|
5991
|
+
...store.getState().callbacks
|
|
5992
|
+
},
|
|
5993
|
+
originalNetworkBlockedCallback: store.getState().networkBlocker?.onRequestBlocked,
|
|
5994
|
+
wrappedNetworkBlockedCallback: null,
|
|
5995
|
+
stopWatchingStore: null
|
|
5996
|
+
};
|
|
5997
|
+
store.getState().setCallback('onBannerFetched', (payload)=>{
|
|
5998
|
+
const jurisdiction = payload.jurisdiction;
|
|
5999
|
+
emitEvent(entry, {
|
|
6000
|
+
type: 'info',
|
|
6001
|
+
message: `Banner fetched: ${String(jurisdiction)}`,
|
|
6002
|
+
data: payload
|
|
6003
|
+
});
|
|
6004
|
+
if ('function' == typeof entry.originalCallbacks.onBannerFetched) entry.originalCallbacks.onBannerFetched(payload);
|
|
6005
|
+
});
|
|
6006
|
+
store.getState().setCallback('onConsentSet', (payload)=>{
|
|
6007
|
+
emitEvent(entry, {
|
|
6008
|
+
type: 'consent_set',
|
|
6009
|
+
message: 'Consent preferences updated',
|
|
6010
|
+
data: payload
|
|
6011
|
+
});
|
|
6012
|
+
if ('function' == typeof entry.originalCallbacks.onConsentSet) entry.originalCallbacks.onConsentSet(payload);
|
|
6013
|
+
});
|
|
6014
|
+
store.getState().setCallback('onError', (payload)=>{
|
|
6015
|
+
const errorMessage = payload.error;
|
|
6016
|
+
emitEvent(entry, {
|
|
6017
|
+
type: 'error',
|
|
6018
|
+
message: `Error: ${String(errorMessage)}`,
|
|
6019
|
+
data: payload
|
|
6020
|
+
});
|
|
6021
|
+
if ('function' == typeof entry.originalCallbacks.onError) entry.originalCallbacks.onError(payload);
|
|
6022
|
+
});
|
|
6023
|
+
store.getState().setCallback('onBeforeConsentRevocationReload', (payload)=>{
|
|
6024
|
+
emitEvent(entry, {
|
|
6025
|
+
type: 'info',
|
|
6026
|
+
message: 'Consent revocation - page will reload',
|
|
6027
|
+
data: payload
|
|
6028
|
+
});
|
|
6029
|
+
if ('function' == typeof entry.originalCallbacks.onBeforeConsentRevocationReload) entry.originalCallbacks.onBeforeConsentRevocationReload(payload);
|
|
6030
|
+
});
|
|
6031
|
+
ensureNetworkBlockerWrapped(entry);
|
|
6032
|
+
entry.stopWatchingStore = store.subscribe(()=>{
|
|
6033
|
+
ensureNetworkBlockerWrapped(entry);
|
|
6034
|
+
});
|
|
6035
|
+
return entry;
|
|
6036
|
+
}
|
|
6037
|
+
function store_instrumentation_registerStoreInstrumentation(options) {
|
|
6038
|
+
const { namespace, store, onEvent } = options;
|
|
6039
|
+
const registry = getRegistry();
|
|
6040
|
+
let entry = registry.get(namespace);
|
|
6041
|
+
if (!entry || entry.store !== store) {
|
|
6042
|
+
if (entry) restoreInstrumentation(entry);
|
|
6043
|
+
entry = createInstrumentationEntry(store);
|
|
6044
|
+
registry.set(namespace, entry);
|
|
6045
|
+
}
|
|
6046
|
+
entry.listeners.add(onEvent);
|
|
6047
|
+
return ()=>{
|
|
6048
|
+
const current = registry.get(namespace);
|
|
6049
|
+
if (!current) return;
|
|
6050
|
+
current.listeners.delete(onEvent);
|
|
6051
|
+
if (0 === current.listeners.size) {
|
|
6052
|
+
restoreInstrumentation(current);
|
|
6053
|
+
registry.delete(namespace);
|
|
4900
6054
|
}
|
|
4901
6055
|
};
|
|
4902
6056
|
}
|
|
@@ -4923,12 +6077,6 @@ var __webpack_exports__ = {};
|
|
|
4923
6077
|
function persistedOverridesEqual(a, b) {
|
|
4924
6078
|
return a.country === b.country && a.region === b.region && a.language === b.language && a.gpc === b.gpc;
|
|
4925
6079
|
}
|
|
4926
|
-
function getBlockedRequestMessage(payload) {
|
|
4927
|
-
const data = payload;
|
|
4928
|
-
const method = 'string' == typeof data?.method ? data.method.toUpperCase() : 'REQUEST';
|
|
4929
|
-
const url = 'string' == typeof data?.url ? data.url : 'unknown-url';
|
|
4930
|
-
return `Network blocked: ${method} ${url}`;
|
|
4931
|
-
}
|
|
4932
6080
|
function prefersReducedMotion() {
|
|
4933
6081
|
return 'undefined' != typeof window && 'function' == typeof window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;
|
|
4934
6082
|
}
|
|
@@ -4989,74 +6137,43 @@ var __webpack_exports__ = {};
|
|
|
4989
6137
|
destroy: clearAnimationState
|
|
4990
6138
|
};
|
|
4991
6139
|
}
|
|
6140
|
+
function createStateCopy(state) {
|
|
6141
|
+
return {
|
|
6142
|
+
consents: state.consents,
|
|
6143
|
+
selectedConsents: state.selectedConsents,
|
|
6144
|
+
consentInfo: state.consentInfo,
|
|
6145
|
+
locationInfo: state.locationInfo,
|
|
6146
|
+
model: state.model,
|
|
6147
|
+
overrides: state.overrides,
|
|
6148
|
+
scripts: state.scripts?.map((script)=>({
|
|
6149
|
+
id: script.id
|
|
6150
|
+
})),
|
|
6151
|
+
loadedScripts: state.loadedScripts
|
|
6152
|
+
};
|
|
6153
|
+
}
|
|
4992
6154
|
function createDevTools(options = {}) {
|
|
4993
6155
|
const { namespace = 'c15tStore', position = 'bottom-right', defaultOpen = false } = options;
|
|
4994
6156
|
const stateManager = state_manager_createStateManager({
|
|
4995
6157
|
position,
|
|
4996
6158
|
isOpen: defaultOpen
|
|
4997
6159
|
});
|
|
4998
|
-
let
|
|
4999
|
-
let originalNetworkBlockedCallback;
|
|
5000
|
-
let hasWrappedNetworkBlockerCallback = false;
|
|
6160
|
+
let detachInstrumentation = null;
|
|
5001
6161
|
const storeConnector = store_connector_createStoreConnector({
|
|
5002
6162
|
namespace,
|
|
5003
|
-
onConnect: (
|
|
6163
|
+
onConnect: (_state, store)=>{
|
|
6164
|
+
detachInstrumentation?.();
|
|
6165
|
+
detachInstrumentation = store_instrumentation_registerStoreInstrumentation({
|
|
6166
|
+
namespace,
|
|
6167
|
+
store,
|
|
6168
|
+
onEvent: (event)=>{
|
|
6169
|
+
stateManager.addEvent(event);
|
|
6170
|
+
}
|
|
6171
|
+
});
|
|
5004
6172
|
stateManager.setConnected(true);
|
|
5005
6173
|
stateManager.addEvent({
|
|
5006
6174
|
type: 'info',
|
|
5007
6175
|
message: 'Connected to c15tStore'
|
|
5008
6176
|
});
|
|
5009
|
-
originalCallbacks = {
|
|
5010
|
-
...state.callbacks
|
|
5011
|
-
};
|
|
5012
|
-
store.getState().setCallback('onBannerFetched', (payload)=>{
|
|
5013
|
-
stateManager.addEvent({
|
|
5014
|
-
type: 'info',
|
|
5015
|
-
message: `Banner fetched: ${String(payload.jurisdiction)}`,
|
|
5016
|
-
data: payload
|
|
5017
|
-
});
|
|
5018
|
-
if ('function' == typeof originalCallbacks.onBannerFetched) originalCallbacks.onBannerFetched(payload);
|
|
5019
|
-
});
|
|
5020
|
-
store.getState().setCallback('onConsentSet', (payload)=>{
|
|
5021
|
-
stateManager.addEvent({
|
|
5022
|
-
type: 'consent_set',
|
|
5023
|
-
message: 'Consent preferences updated',
|
|
5024
|
-
data: payload
|
|
5025
|
-
});
|
|
5026
|
-
if ('function' == typeof originalCallbacks.onConsentSet) originalCallbacks.onConsentSet(payload);
|
|
5027
|
-
});
|
|
5028
|
-
store.getState().setCallback('onError', (payload)=>{
|
|
5029
|
-
stateManager.addEvent({
|
|
5030
|
-
type: 'error',
|
|
5031
|
-
message: `Error: ${payload.error}`,
|
|
5032
|
-
data: payload
|
|
5033
|
-
});
|
|
5034
|
-
if ('function' == typeof originalCallbacks.onError) originalCallbacks.onError(payload);
|
|
5035
|
-
});
|
|
5036
|
-
store.getState().setCallback('onBeforeConsentRevocationReload', (payload)=>{
|
|
5037
|
-
stateManager.addEvent({
|
|
5038
|
-
type: 'info',
|
|
5039
|
-
message: 'Consent revocation - page will reload',
|
|
5040
|
-
data: payload
|
|
5041
|
-
});
|
|
5042
|
-
if ('function' == typeof originalCallbacks.onBeforeConsentRevocationReload) originalCallbacks.onBeforeConsentRevocationReload(payload);
|
|
5043
|
-
});
|
|
5044
|
-
const currentNetworkBlocker = store.getState().networkBlocker;
|
|
5045
|
-
if (currentNetworkBlocker && !hasWrappedNetworkBlockerCallback) {
|
|
5046
|
-
originalNetworkBlockedCallback = currentNetworkBlocker.onRequestBlocked;
|
|
5047
|
-
hasWrappedNetworkBlockerCallback = true;
|
|
5048
|
-
store.getState().setNetworkBlocker({
|
|
5049
|
-
...currentNetworkBlocker,
|
|
5050
|
-
onRequestBlocked: (payload)=>{
|
|
5051
|
-
stateManager.addEvent({
|
|
5052
|
-
type: 'network',
|
|
5053
|
-
message: getBlockedRequestMessage(payload),
|
|
5054
|
-
data: payload
|
|
5055
|
-
});
|
|
5056
|
-
if ('function' == typeof originalNetworkBlockedCallback) originalNetworkBlockedCallback(payload);
|
|
5057
|
-
}
|
|
5058
|
-
});
|
|
5059
|
-
}
|
|
5060
6177
|
const persistedOverrides = override_storage_loadPersistedOverrides();
|
|
5061
6178
|
if (persistedOverrides) {
|
|
5062
6179
|
const currentOverrides = normalizeOverridesForPersistence(store.getState().overrides);
|
|
@@ -5086,6 +6203,8 @@ var __webpack_exports__ = {};
|
|
|
5086
6203
|
},
|
|
5087
6204
|
onDisconnect: ()=>{
|
|
5088
6205
|
stateManager.setConnected(false);
|
|
6206
|
+
detachInstrumentation?.();
|
|
6207
|
+
detachInstrumentation = null;
|
|
5089
6208
|
stateManager.addEvent({
|
|
5090
6209
|
type: 'error',
|
|
5091
6210
|
message: 'Disconnected from c15tStore'
|
|
@@ -5093,6 +6212,31 @@ var __webpack_exports__ = {};
|
|
|
5093
6212
|
},
|
|
5094
6213
|
onStateChange: ()=>{}
|
|
5095
6214
|
});
|
|
6215
|
+
const panelRenderer = panel_renderer_createPanelRenderer({
|
|
6216
|
+
storeConnector,
|
|
6217
|
+
stateManager,
|
|
6218
|
+
enableEventLogging: true,
|
|
6219
|
+
onPersistOverrides: override_storage_persistOverrides,
|
|
6220
|
+
onClearPersistedOverrides: override_storage_clearPersistedOverrides,
|
|
6221
|
+
onCopyState: async (state)=>{
|
|
6222
|
+
try {
|
|
6223
|
+
await navigator.clipboard.writeText(JSON.stringify(createStateCopy(state), null, 2));
|
|
6224
|
+
return true;
|
|
6225
|
+
} catch {
|
|
6226
|
+
return false;
|
|
6227
|
+
}
|
|
6228
|
+
},
|
|
6229
|
+
onExportDebugBundle: ()=>{
|
|
6230
|
+
const bundle = debug_bundle_createDebugBundle({
|
|
6231
|
+
namespace,
|
|
6232
|
+
devToolsState: stateManager.getState(),
|
|
6233
|
+
connection: storeConnector.getDiagnostics(),
|
|
6234
|
+
recentEvents: stateManager.getState().eventLog.slice(0, 100),
|
|
6235
|
+
storeState: debug_bundle_sanitizeStoreState(storeConnector.getState())
|
|
6236
|
+
});
|
|
6237
|
+
debug_bundle_downloadDebugBundle(bundle);
|
|
6238
|
+
}
|
|
6239
|
+
});
|
|
5096
6240
|
let tabsInstance = null;
|
|
5097
6241
|
const panelHeightAnimator = createPanelHeightAnimator();
|
|
5098
6242
|
const panelInstance = createPanel({
|
|
@@ -5100,19 +6244,24 @@ var __webpack_exports__ = {};
|
|
|
5100
6244
|
storeConnector,
|
|
5101
6245
|
namespace,
|
|
5102
6246
|
onRenderContent: (container)=>{
|
|
5103
|
-
renderContent(container
|
|
6247
|
+
renderContent(container);
|
|
5104
6248
|
}
|
|
5105
6249
|
});
|
|
5106
|
-
function renderContent(container
|
|
6250
|
+
function renderContent(container) {
|
|
5107
6251
|
const panel = container.parentElement;
|
|
5108
6252
|
const previousPanelHeight = panel?.getBoundingClientRect().height ?? 0;
|
|
5109
6253
|
clearElement(container);
|
|
5110
6254
|
const storeState = storeConnector.getState();
|
|
5111
6255
|
const disabledTabs = [];
|
|
5112
6256
|
if (!storeState || 'iab' !== storeState.model) disabledTabs.push('iab');
|
|
6257
|
+
let currentActiveTab = stateManager.getState().activeTab;
|
|
6258
|
+
if (disabledTabs.includes(currentActiveTab)) {
|
|
6259
|
+
stateManager.setActiveTab('consents');
|
|
6260
|
+
currentActiveTab = 'consents';
|
|
6261
|
+
}
|
|
5113
6262
|
if (tabsInstance) tabsInstance.destroy();
|
|
5114
6263
|
tabsInstance = tabs_createTabs({
|
|
5115
|
-
activeTab:
|
|
6264
|
+
activeTab: currentActiveTab,
|
|
5116
6265
|
onTabChange: (tab)=>{
|
|
5117
6266
|
stateManager.setActiveTab(tab);
|
|
5118
6267
|
},
|
|
@@ -5127,284 +6276,9 @@ var __webpack_exports__ = {};
|
|
|
5127
6276
|
}
|
|
5128
6277
|
});
|
|
5129
6278
|
container.appendChild(panelContent);
|
|
5130
|
-
|
|
5131
|
-
const getStoreState = ()=>storeConnector.getState();
|
|
5132
|
-
switch(state.activeTab){
|
|
5133
|
-
case 'consents':
|
|
5134
|
-
consents_renderConsentsPanel(panelContent, {
|
|
5135
|
-
getState: getStoreState,
|
|
5136
|
-
onConsentChange: (name, value)=>{
|
|
5137
|
-
const store = storeConnector.getStore();
|
|
5138
|
-
if (store) {
|
|
5139
|
-
const consentName = String(name);
|
|
5140
|
-
store.getState().setSelectedConsent(consentName, value);
|
|
5141
|
-
stateManager.addEvent({
|
|
5142
|
-
type: 'info',
|
|
5143
|
-
message: `${consentName} toggled to ${value} (not saved)`,
|
|
5144
|
-
data: {
|
|
5145
|
-
name: consentName,
|
|
5146
|
-
value
|
|
5147
|
-
}
|
|
5148
|
-
});
|
|
5149
|
-
}
|
|
5150
|
-
},
|
|
5151
|
-
onSave: ()=>{
|
|
5152
|
-
const store = storeConnector.getStore();
|
|
5153
|
-
if (store) {
|
|
5154
|
-
store.getState().saveConsents('custom');
|
|
5155
|
-
stateManager.addEvent({
|
|
5156
|
-
type: 'consent_save',
|
|
5157
|
-
message: 'Saved consent preferences'
|
|
5158
|
-
});
|
|
5159
|
-
}
|
|
5160
|
-
},
|
|
5161
|
-
onAcceptAll: ()=>{
|
|
5162
|
-
const store = storeConnector.getStore();
|
|
5163
|
-
if (store) {
|
|
5164
|
-
store.getState().saveConsents('all');
|
|
5165
|
-
stateManager.addEvent({
|
|
5166
|
-
type: 'consent_save',
|
|
5167
|
-
message: 'Accepted all consents'
|
|
5168
|
-
});
|
|
5169
|
-
}
|
|
5170
|
-
},
|
|
5171
|
-
onRejectAll: ()=>{
|
|
5172
|
-
const store = storeConnector.getStore();
|
|
5173
|
-
if (store) {
|
|
5174
|
-
store.getState().saveConsents('necessary');
|
|
5175
|
-
stateManager.addEvent({
|
|
5176
|
-
type: 'consent_save',
|
|
5177
|
-
message: 'Rejected all optional consents'
|
|
5178
|
-
});
|
|
5179
|
-
}
|
|
5180
|
-
},
|
|
5181
|
-
onReset: async ()=>{
|
|
5182
|
-
const store = storeConnector.getStore();
|
|
5183
|
-
if (store) await reset_consents_resetAllConsents(store, stateManager);
|
|
5184
|
-
}
|
|
5185
|
-
});
|
|
5186
|
-
break;
|
|
5187
|
-
case 'location':
|
|
5188
|
-
location_renderLocationPanel(panelContent, {
|
|
5189
|
-
getState: getStoreState,
|
|
5190
|
-
onApplyOverrides: async (overrides)=>{
|
|
5191
|
-
const store = storeConnector.getStore();
|
|
5192
|
-
if (store) {
|
|
5193
|
-
await store.getState().setOverrides({
|
|
5194
|
-
country: overrides.country,
|
|
5195
|
-
region: overrides.region,
|
|
5196
|
-
language: overrides.language,
|
|
5197
|
-
gpc: overrides.gpc
|
|
5198
|
-
});
|
|
5199
|
-
override_storage_persistOverrides({
|
|
5200
|
-
country: overrides.country,
|
|
5201
|
-
region: overrides.region,
|
|
5202
|
-
language: overrides.language,
|
|
5203
|
-
gpc: overrides.gpc
|
|
5204
|
-
});
|
|
5205
|
-
stateManager.addEvent({
|
|
5206
|
-
type: 'info',
|
|
5207
|
-
message: 'Overrides updated',
|
|
5208
|
-
data: {
|
|
5209
|
-
country: overrides.country,
|
|
5210
|
-
region: overrides.region,
|
|
5211
|
-
language: overrides.language,
|
|
5212
|
-
gpc: overrides.gpc
|
|
5213
|
-
}
|
|
5214
|
-
});
|
|
5215
|
-
}
|
|
5216
|
-
},
|
|
5217
|
-
onClearOverrides: async ()=>{
|
|
5218
|
-
const store = storeConnector.getStore();
|
|
5219
|
-
if (store) {
|
|
5220
|
-
await store.getState().setOverrides({
|
|
5221
|
-
country: void 0,
|
|
5222
|
-
region: void 0,
|
|
5223
|
-
language: void 0,
|
|
5224
|
-
gpc: void 0
|
|
5225
|
-
});
|
|
5226
|
-
override_storage_clearPersistedOverrides();
|
|
5227
|
-
stateManager.addEvent({
|
|
5228
|
-
type: 'info',
|
|
5229
|
-
message: 'Overrides cleared'
|
|
5230
|
-
});
|
|
5231
|
-
}
|
|
5232
|
-
}
|
|
5233
|
-
});
|
|
5234
|
-
break;
|
|
5235
|
-
case "scripts":
|
|
5236
|
-
scripts_renderScriptsPanel(panelContent, {
|
|
5237
|
-
getState: getStoreState,
|
|
5238
|
-
getEvents: ()=>stateManager.getState().eventLog
|
|
5239
|
-
});
|
|
5240
|
-
break;
|
|
5241
|
-
case 'iab':
|
|
5242
|
-
iab_renderIabPanel(panelContent, {
|
|
5243
|
-
getState: getStoreState,
|
|
5244
|
-
onSetPurposeConsent: (purposeId, value)=>{
|
|
5245
|
-
const iab = storeConnector.getStore()?.getState().iab;
|
|
5246
|
-
if (!iab) return;
|
|
5247
|
-
iab.setPurposeConsent(purposeId, value);
|
|
5248
|
-
stateManager.addEvent({
|
|
5249
|
-
type: 'iab',
|
|
5250
|
-
message: `IAB purpose ${purposeId} set to ${value}`,
|
|
5251
|
-
data: {
|
|
5252
|
-
purposeId,
|
|
5253
|
-
value
|
|
5254
|
-
}
|
|
5255
|
-
});
|
|
5256
|
-
},
|
|
5257
|
-
onSetVendorConsent: (vendorId, value)=>{
|
|
5258
|
-
const iab = storeConnector.getStore()?.getState().iab;
|
|
5259
|
-
if (!iab) return;
|
|
5260
|
-
iab.setVendorConsent(vendorId, value);
|
|
5261
|
-
stateManager.addEvent({
|
|
5262
|
-
type: 'iab',
|
|
5263
|
-
message: `IAB vendor ${vendorId} set to ${value}`,
|
|
5264
|
-
data: {
|
|
5265
|
-
vendorId,
|
|
5266
|
-
value
|
|
5267
|
-
}
|
|
5268
|
-
});
|
|
5269
|
-
},
|
|
5270
|
-
onSetSpecialFeatureOptIn: (featureId, value)=>{
|
|
5271
|
-
const iab = storeConnector.getStore()?.getState().iab;
|
|
5272
|
-
if (!iab) return;
|
|
5273
|
-
iab.setSpecialFeatureOptIn(featureId, value);
|
|
5274
|
-
stateManager.addEvent({
|
|
5275
|
-
type: 'iab',
|
|
5276
|
-
message: `IAB feature ${featureId} set to ${value}`,
|
|
5277
|
-
data: {
|
|
5278
|
-
featureId,
|
|
5279
|
-
value
|
|
5280
|
-
}
|
|
5281
|
-
});
|
|
5282
|
-
},
|
|
5283
|
-
onAcceptAll: ()=>{
|
|
5284
|
-
const iab = storeConnector.getStore()?.getState().iab;
|
|
5285
|
-
if (!iab) return;
|
|
5286
|
-
iab.acceptAll();
|
|
5287
|
-
stateManager.addEvent({
|
|
5288
|
-
type: 'iab',
|
|
5289
|
-
message: 'IAB accept all selected'
|
|
5290
|
-
});
|
|
5291
|
-
},
|
|
5292
|
-
onRejectAll: ()=>{
|
|
5293
|
-
const iab = storeConnector.getStore()?.getState().iab;
|
|
5294
|
-
if (!iab) return;
|
|
5295
|
-
iab.rejectAll();
|
|
5296
|
-
stateManager.addEvent({
|
|
5297
|
-
type: 'iab',
|
|
5298
|
-
message: 'IAB reject all selected'
|
|
5299
|
-
});
|
|
5300
|
-
},
|
|
5301
|
-
onSave: ()=>{
|
|
5302
|
-
const iab = storeConnector.getStore()?.getState().iab;
|
|
5303
|
-
if (!iab) return;
|
|
5304
|
-
iab.save().then(()=>{
|
|
5305
|
-
stateManager.addEvent({
|
|
5306
|
-
type: 'iab',
|
|
5307
|
-
message: 'IAB preferences saved'
|
|
5308
|
-
});
|
|
5309
|
-
}).catch((error)=>{
|
|
5310
|
-
stateManager.addEvent({
|
|
5311
|
-
type: 'error',
|
|
5312
|
-
message: `Failed to save IAB preferences: ${String(error)}`
|
|
5313
|
-
});
|
|
5314
|
-
});
|
|
5315
|
-
},
|
|
5316
|
-
onReset: async ()=>{
|
|
5317
|
-
const store = storeConnector.getStore();
|
|
5318
|
-
if (store) await reset_consents_resetAllConsents(store, stateManager);
|
|
5319
|
-
}
|
|
5320
|
-
});
|
|
5321
|
-
break;
|
|
5322
|
-
case 'events':
|
|
5323
|
-
events_renderEventsPanel(panelContent, {
|
|
5324
|
-
getEvents: ()=>stateManager.getState().eventLog,
|
|
5325
|
-
onClear: ()=>{
|
|
5326
|
-
stateManager.clearEventLog();
|
|
5327
|
-
stateManager.addEvent({
|
|
5328
|
-
type: 'info',
|
|
5329
|
-
message: 'Event log cleared'
|
|
5330
|
-
});
|
|
5331
|
-
}
|
|
5332
|
-
});
|
|
5333
|
-
break;
|
|
5334
|
-
case 'actions':
|
|
5335
|
-
actions_renderActionsPanel(panelContent, {
|
|
5336
|
-
getState: getStoreState,
|
|
5337
|
-
onResetConsents: async ()=>{
|
|
5338
|
-
const store = storeConnector.getStore();
|
|
5339
|
-
if (store) await reset_consents_resetAllConsents(store, stateManager);
|
|
5340
|
-
},
|
|
5341
|
-
onRefetchBanner: async ()=>{
|
|
5342
|
-
const store = storeConnector.getStore();
|
|
5343
|
-
if (store) {
|
|
5344
|
-
await store.getState().initConsentManager();
|
|
5345
|
-
stateManager.addEvent({
|
|
5346
|
-
type: 'info',
|
|
5347
|
-
message: 'Banner data refetched'
|
|
5348
|
-
});
|
|
5349
|
-
}
|
|
5350
|
-
},
|
|
5351
|
-
onShowBanner: ()=>{
|
|
5352
|
-
const store = storeConnector.getStore();
|
|
5353
|
-
if (store) {
|
|
5354
|
-
store.getState().setActiveUI('banner', {
|
|
5355
|
-
force: true
|
|
5356
|
-
});
|
|
5357
|
-
stateManager.addEvent({
|
|
5358
|
-
type: 'info',
|
|
5359
|
-
message: 'Banner shown'
|
|
5360
|
-
});
|
|
5361
|
-
}
|
|
5362
|
-
},
|
|
5363
|
-
onOpenPreferences: ()=>{
|
|
5364
|
-
const store = storeConnector.getStore();
|
|
5365
|
-
if (store) {
|
|
5366
|
-
store.getState().setActiveUI('dialog');
|
|
5367
|
-
stateManager.addEvent({
|
|
5368
|
-
type: 'info',
|
|
5369
|
-
message: 'Preference center opened'
|
|
5370
|
-
});
|
|
5371
|
-
}
|
|
5372
|
-
},
|
|
5373
|
-
onCopyState: ()=>{
|
|
5374
|
-
const state = storeConnector.getState();
|
|
5375
|
-
if (state) {
|
|
5376
|
-
const stateCopy = {
|
|
5377
|
-
consents: state.consents,
|
|
5378
|
-
consentInfo: state.consentInfo,
|
|
5379
|
-
locationInfo: state.locationInfo,
|
|
5380
|
-
model: state.model,
|
|
5381
|
-
overrides: state.overrides,
|
|
5382
|
-
scripts: state.scripts?.map((s)=>({
|
|
5383
|
-
id: s.id
|
|
5384
|
-
})),
|
|
5385
|
-
loadedScripts: state.loadedScripts
|
|
5386
|
-
};
|
|
5387
|
-
navigator.clipboard.writeText(JSON.stringify(stateCopy, null, 2)).then(()=>{
|
|
5388
|
-
stateManager.addEvent({
|
|
5389
|
-
type: 'info',
|
|
5390
|
-
message: 'State copied to clipboard'
|
|
5391
|
-
});
|
|
5392
|
-
}).catch(()=>{
|
|
5393
|
-
stateManager.addEvent({
|
|
5394
|
-
type: 'error',
|
|
5395
|
-
message: 'Failed to copy state'
|
|
5396
|
-
});
|
|
5397
|
-
});
|
|
5398
|
-
}
|
|
5399
|
-
}
|
|
5400
|
-
});
|
|
5401
|
-
break;
|
|
5402
|
-
}
|
|
6279
|
+
panelRenderer.renderPanel(panelContent, currentActiveTab);
|
|
5403
6280
|
if (panel) panelHeightAnimator.animate(panel, previousPanelHeight);
|
|
5404
6281
|
}
|
|
5405
|
-
storeConnector.subscribe(()=>{
|
|
5406
|
-
panelInstance.update();
|
|
5407
|
-
});
|
|
5408
6282
|
const instance = {
|
|
5409
6283
|
open: ()=>stateManager.setOpen(true),
|
|
5410
6284
|
close: ()=>stateManager.setOpen(false),
|
|
@@ -5418,20 +6292,8 @@ var __webpack_exports__ = {};
|
|
|
5418
6292
|
};
|
|
5419
6293
|
},
|
|
5420
6294
|
destroy: ()=>{
|
|
5421
|
-
|
|
5422
|
-
|
|
5423
|
-
store.getState().setCallback('onBannerFetched', originalCallbacks.onBannerFetched);
|
|
5424
|
-
store.getState().setCallback('onConsentSet', originalCallbacks.onConsentSet);
|
|
5425
|
-
store.getState().setCallback('onError', originalCallbacks.onError);
|
|
5426
|
-
store.getState().setCallback('onBeforeConsentRevocationReload', originalCallbacks.onBeforeConsentRevocationReload);
|
|
5427
|
-
if (hasWrappedNetworkBlockerCallback) {
|
|
5428
|
-
const currentNetworkBlocker = store.getState().networkBlocker;
|
|
5429
|
-
if (currentNetworkBlocker) store.getState().setNetworkBlocker({
|
|
5430
|
-
...currentNetworkBlocker,
|
|
5431
|
-
onRequestBlocked: originalNetworkBlockedCallback
|
|
5432
|
-
});
|
|
5433
|
-
}
|
|
5434
|
-
}
|
|
6295
|
+
detachInstrumentation?.();
|
|
6296
|
+
detachInstrumentation = null;
|
|
5435
6297
|
panelHeightAnimator.destroy();
|
|
5436
6298
|
tabsInstance?.destroy();
|
|
5437
6299
|
panelInstance.destroy();
|