diff --git a/.github/workflows/assets.yml b/.github/workflows/assets.yml index 303933b..c380cd8 100644 --- a/.github/workflows/assets.yml +++ b/.github/workflows/assets.yml @@ -51,6 +51,9 @@ jobs: - name: Test JavaScript. run: npm run test:js + - name: Test JavaScript mutations. + run: npm run test:mutation + - name: Build assets. run: npm run build diff --git a/.gitignore b/.gitignore index db4f0ad..3e95f33 100644 --- a/.gitignore +++ b/.gitignore @@ -40,6 +40,7 @@ node_modules .phpunit.result.cache # mutation testing +.stryker-tmp reports/mutation # vagrant (if present) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ac3fbe..c6fb779 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,3 +14,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - fix: guard the user-switch panel against concurrent submits so a double-click (or set + reset in the same tick) sends a single identity-switch request instead of racing two session regenerations. - test: strengthen mutation coverage and clear PHPStan's result cache before static mutation analysis. - feat(router): implement Router panel with Current Route and Rules sections. +- fix(toolbar): follow debug tags through adapter query URLs and enforce complete JavaScript mutation coverage. diff --git a/resources/assets/dist/js/toolbar.min.js b/resources/assets/dist/js/toolbar.min.js index 7d82bc6..4c11063 100644 --- a/resources/assets/dist/js/toolbar.min.js +++ b/resources/assets/dist/js/toolbar.min.js @@ -1 +1 @@ -var e=`yii-debug-toolbar`,t=`yii-debug-toolbar-expanded`,n=`yii-debug-toolbar-theme`,r=[],i=[],a=[`class`,`data-theme`,`data-bs-theme`,`data-yii-debug-theme`,`data-color-mode`,`data-mode`,`data-theme-mode`],o=XMLHttpRequest.prototype.open,s=window.fetch;function c(e){try{var t=window.localStorage;return t?t.getItem(e):null}catch{return null}}function l(e,t){try{var n=window.localStorage;return n?(n.setItem(e,t),!0):!1}catch{return!1}}function u(e){return String(e??``).replace(/&/g,`&`).replace(//g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function d(e,t,n){var r=e.getAttribute(t);if(!r)return n;try{return JSON.parse(r)}catch{return n}}function f(e){try{return new URL(e,window.location.href)}catch{return null}}function p(e,t){var n=f(e),r=f(t);return n!==null&&r!==null&&n.href===r.href}function m(){return i.length?i[0]:document.querySelector(e)}function h(e,t){for(e&&e.nodeType!==1&&(e=e.parentElement);e&&e.nodeType===1;){if(e.matches(t))return e;e=e.parentElement}return null}var g;function _(e){if(!e)return null;var t=String(e).toLowerCase().trim().split(/\s+/),n=[`dark`,`night`,`black`],r=[`light`,`day`,`white`],i=t.some(function(e){return n.indexOf(e)!==-1});return i===t.some(function(e){return r.indexOf(e)!==-1})?null:i?`dark`:`light`}function v(e){var t=[`data-yii-debug-theme`,`data-bs-theme`,`data-theme`,`data-color-mode`,`data-mode`,`data-theme-mode`],n,r,i;if(!e)return null;for(r=0;r0))return g=r,g;return g=null,g}function C(){return S()!==null}function w(e,t){var n=S();return!n||typeof n.click!=`function`?!1:(e!==t&&n.click(),!0)}function T(e){if(e)try{document.cookie=`yii-debug-toolbar-theme=`+encodeURIComponent(e)+`;path=/;max-age=31536000;SameSite=Lax`}catch{}}function E(e,t){var n=f(e);if(!n||!t||n.origin!==window.location.origin)return e;var r=n.searchParams.get(`r`)||``;return n.pathname.indexOf(`/debug/`)===-1&&r.indexOf(`debug/`)!==0&&r.indexOf(`debug%2F`)!==0?e:(n.searchParams.set(`yii_debug_theme`,t),n.href)}var D=Object.freeze({ajax:``,asset:``,"chevron-left":``,"chevron-right":``,clock:``,close:``,config:``,db:``,dots:``,dump:``,events:``,"external-link":``,identity:``,inertia:``,logs:``,mail:``,moon:``,"php-alt":``,profiling:``,queue:``,request:``,router:``,security:``,sun:``,timeline:``,user:``});function O(e){var t=D[e];return t?`data:image/svg+xml,`+encodeURIComponent(t):``}var k=Object.freeze([75,150,300,600,900]);function A(e,t){return e!==404||t<0||t>=k.length?null:k[t]}function j(e,t){return typeof t==`number`?t:e+1}function M(e,t){return e===t}function N(e,t,n,r){var i=!!e;return{url:i?e:n,tag:i?t:r,reload:!i}}function P(e,t,n,r){if(!e||!n)return null;var i;try{i=new URL(e,r)}catch{return null}if(i.searchParams.has(`tag`))return i.searchParams.set(`tag`,n),i.href;var a=i.pathname.split(`/`),o=t?encodeURIComponent(t):``,s=o?a.lastIndexOf(o):-1;return s===-1?i.searchParams.set(`tag`,n):(a[s]=encodeURIComponent(n),i.pathname=a.join(`/`)),i.href}function F(e,t,n,r){var i=n+(e?``+r(e)+``:``),a=e?`Yii `+e+` — open configuration`:`Open configuration`;if(!t)return``+i+``;var o=r(t);return``+i+``}function I(e,t,n,r){if(!e)return``;var i=n+``+r(e)+``;return t?``+i+``:``+i+``}function L(e){return(e||[]).some(function(e){return!!(e&&e.url)})}function R(e,t,n,r){return t?``+r(e||`profile`)+``:`n/a`}function z(e,t,n){return e?` href="`+n(t)+`" data-debug-url="`+n(e)+`"`:``}function B(e){return e&&e.url&&!L(e.items)?`a`:`div`}function V(e){return e&&e.url?`a`:`span`}function H(e,t){return!!(t&&e.button!==1&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey)}function U(e){return e===`top`||e===`upper`?`top`:`bottom`}function W(e,t,n,r){var i=U(e)===`top`;return r===null?i?t:n-t:i?t-r.top:r.bottom-t}var G=`:root,:host{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--yii-debug-font-sans:"IBM Plex Sans", ui-sans-serif, system-ui, -apple-system, blinkmacsystemfont, "Segoe UI", roboto, helvetica, arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";--yii-debug-font-mono:"JetBrains Mono", ui-monospace, sfmono-regular, menlo, monaco, consolas, "Liberation Mono", "Courier New", monospace;--yii-debug-font-display:var(--yii-debug-font-mono);--yii-debug-panel-bg:var(--lightningcss-light,#f2f5f1)var(--lightningcss-dark,#0c120e);--yii-debug-panel-bg-accent:var(--lightningcss-light,#0e7a551a)var(--lightningcss-dark,#2fd08c14);--yii-debug-panel-surface:var(--lightningcss-light,#fffffff0)var(--lightningcss-dark,#121a15eb);--yii-debug-panel-surface-muted:var(--lightningcss-light,#f6f8f5)var(--lightningcss-dark,#101812);--yii-debug-panel-surface-hover:var(--lightningcss-light,#e9f2ec)var(--lightningcss-dark,#1a241d);--yii-debug-panel-border:var(--lightningcss-light,#5d7a6942)var(--lightningcss-dark,#8fa39633);--yii-debug-panel-border-strong:var(--lightningcss-light,#4660515c)var(--lightningcss-dark,#8fa39652);--yii-debug-panel-text:var(--lightningcss-light,#16211a)var(--lightningcss-dark,#e4ede6);--yii-debug-panel-muted:var(--lightningcss-light,#5c6b60)var(--lightningcss-dark,#8fa396);--yii-debug-panel-link:var(--lightningcss-light,#0b6b4a)var(--lightningcss-dark,#4fd39a);--yii-debug-panel-link-hover:var(--lightningcss-light,#0e8a5f)var(--lightningcss-dark,#7fe4b8);--yii-debug-panel-primary:var(--lightningcss-light,#0e7a55)var(--lightningcss-dark,#2fd08c);--yii-debug-panel-primary-strong:var(--lightningcss-light,#0a5c40)var(--lightningcss-dark,#17a673);--yii-debug-success:var(--lightningcss-light,#128a50)var(--lightningcss-dark,#34c97e);--yii-debug-warning:var(--lightningcss-light,#b26a00)var(--lightningcss-dark,#e8a33d);--yii-debug-danger:var(--lightningcss-light,#c93838)var(--lightningcss-dark,#f16a6a);--yii-debug-info:var(--lightningcss-light,#2467a8)var(--lightningcss-dark,#5fa8e8);--yii-debug-panel-code-bg:var(--lightningcss-light,#ecf1ec)var(--lightningcss-dark,#17211a);--yii-debug-panel-pill:var(--lightningcss-light,#16211a0f)var(--lightningcss-dark,#8fa3962e);--yii-debug-panel-shadow:var(--lightningcss-light,0 22px 60px #16211a14)var(--lightningcss-dark,0 22px 60px #0006);--yii-debug-verb-get:var(--lightningcss-light,#0b7285)var(--lightningcss-dark,#4dc4d9);--yii-debug-verb-post:var(--lightningcss-light,#6941c6)var(--lightningcss-dark,#a78bfa);--yii-debug-verb-put:var(--lightningcss-light,#b26a00)var(--lightningcss-dark,#e8a33d);--yii-debug-verb-delete:var(--lightningcss-light,#c93838)var(--lightningcss-dark,#f16a6a);--yii-debug-verb-other:var(--yii-debug-panel-muted);--yii-debug-status-2xx:var(--yii-debug-success);--yii-debug-status-3xx:var(--yii-debug-warning);--yii-debug-status-4xx:var(--lightningcss-light,#c2410c)var(--lightningcss-dark,#fb923c);--yii-debug-status-5xx:var(--yii-debug-danger);--yii-debug-level-error:var(--yii-debug-danger);--yii-debug-level-warning:var(--yii-debug-warning);--yii-debug-level-info:var(--yii-debug-info);--yii-debug-level-trace:var(--yii-debug-panel-muted);--yii-debug-level-profile:var(--lightningcss-light,#9333ea)var(--lightningcss-dark,#b16be8);--yii-debug-level-other:var(--yii-debug-panel-muted);--yii-debug-gauge-fill:var(--yii-debug-panel-primary);--yii-debug-gauge-track:var(--lightningcss-light,#0e7a5529)var(--lightningcss-dark,#2fd08c24);--yii-debug-sql-kw:var(--lightningcss-light,#0a5c40)var(--lightningcss-dark,#4fd39a);--yii-debug-sql-str:var(--lightningcss-light,#8f4e00)var(--lightningcss-dark,#e8a33d);--yii-debug-sql-num:var(--yii-debug-info);--yii-debug-sql-comment:var(--yii-debug-panel-muted);--yii-debug-sql-param:var(--lightningcss-light,#6941c6)var(--lightningcss-dark,#a78bfa);--yii-debug-cat-app:var(--lightningcss-light,#0a6b47)var(--lightningcss-dark,#14b06e);--yii-debug-cat-db:var(--lightningcss-light,#0994b8)var(--lightningcss-dark,#0999be);--yii-debug-cat-view:var(--lightningcss-light,#6941c6)var(--lightningcss-dark,#8f6ce8);--yii-debug-cat-cache:var(--lightningcss-light,#b26a00)var(--lightningcss-dark,#c28300);--yii-debug-cat-mail:var(--lightningcss-light,#b23a67)var(--lightningcss-dark,#d95f8f);--yii-debug-cat-queue:var(--lightningcss-light,#3f4dbd)var(--lightningcss-dark,#6d7ce6);--yii-debug-cat-other:var(--yii-debug-panel-muted)}@media (prefers-color-scheme:dark){:root,:host{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-yii-debug-theme=light],:host([data-theme=light]){--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-yii-debug-theme=dark],:host([data-theme=dark]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:host{--yii-debug-toolbar-drawer-height:50vh;--accent-wash-strong:var(--lightningcss-light,#0e7a5524)var(--lightningcss-dark,#2fd08c29);--accent-wash-soft:var(--lightningcss-light,#0e7a551a)var(--lightningcss-dark,#2fd08c1a);all:initial;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;z-index:2147483647;font-family:var(--yii-debug-font-sans);color:var(--yii-debug-panel-text);direction:ltr;font-size:12px;line-height:1.35;position:fixed;bottom:16px;right:16px}@media (prefers-color-scheme:dark){:host{--lightningcss-light: ;--lightningcss-dark:initial}}:host([data-position=top]),:host([data-position=upper]){top:16px;bottom:auto}:host([data-theme=dark]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:host([data-theme=light]){--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.toolbar{max-width:calc(100vw - 32px)}.bar{border:1px solid var(--yii-debug-panel-border);max-width:100%;box-shadow:var(--lightningcss-light,0 20px 60px #16211a2e)var(--lightningcss-dark,0 20px 60px #0006), 0 1px 0 var(--lightningcss-light,#ffffffd9)var(--lightningcss-dark,#ffffff0f) inset;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-sizing:border-box;background:var(--lightningcss-light,#fffffff5)var(--lightningcss-dark,#0d130ff2);border-radius:18px;align-items:center;gap:8px;padding:7px;display:flex;position:relative}.expanded .bar{border-radius:16px;width:calc(100vw - 32px);overflow:visible}.drawer-open .bar{border-bottom-color:#0000;border-radius:16px 16px 0 0}.brand{border:1px solid var(--yii-debug-panel-border);min-height:32px;color:var(--yii-debug-panel-text);background:linear-gradient(135deg, var(--accent-wash-strong), var(--lightningcss-light,#ffffffeb)var(--lightningcss-dark,#101813e0) 55%);white-space:nowrap;box-sizing:border-box;border-radius:999px;flex:none;align-items:center;gap:0;padding:3px 8px;text-decoration:none;transition:transform .16s,border-color .16s,box-shadow .16s;display:inline-flex;box-shadow:inset 0 1px var(--lightningcss-light,#ffffffd9)var(--lightningcss-dark,#ffffff14)}.brand:hover,.brand:focus{border-color:var(--yii-debug-panel-primary);outline:0;transform:translateY(-1px);box-shadow:inset 0 1px var(--lightningcss-light,#ffffffe6)var(--lightningcss-dark,#ffffff1a),0 0 0 3px var(--lightningcss-light,#0e7a551f)var(--lightningcss-dark,#2fd08c24)}.brand-opener{cursor:pointer}.brand img,.brand-mark{flex:none;justify-content:center;align-items:center;width:18px;height:18px;display:inline-flex}.brand img{object-fit:contain}.brand-mark{background:linear-gradient(135deg, var(--yii-debug-panel-primary), var(--yii-debug-success));color:#fff;border-radius:999px;font-weight:800;box-shadow:inset 0 0 0 1px #ffffff29}.brand-text{display:none}.brand-link{color:var(--yii-debug-panel-text);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:10px;align-items:center;gap:6px;padding:2px 6px;text-decoration:none;transition:background .12s;display:inline-flex}.brand-link:hover,.brand-link:focus{color:var(--yii-debug-panel-text);background:var(--lightningcss-light,#16211a0f)var(--lightningcss-dark,#ffffff14);outline:0;text-decoration:none}.brand-static,.brand-static:hover{cursor:default;background:0 0}.brand-divider{background:var(--yii-debug-panel-border-strong);width:1px;height:18px;margin:0 4px;display:inline-block}.brand-version{border:1px solid var(--yii-debug-panel-border);min-height:18px;color:var(--yii-debug-panel-text);font-family:var(--yii-debug-font-mono);letter-spacing:.01em;white-space:nowrap;background:var(--lightningcss-light,#16211a0d)var(--lightningcss-dark,#ffffff14);border-radius:999px;align-items:center;padding:0 7px;font-size:11px;font-weight:700;line-height:18px;display:inline-flex}.opener-icon{width:20px;height:24px;color:var(--yii-debug-panel-primary);justify-content:center;align-items:center;font-size:20px;font-weight:750;line-height:1;display:inline-flex}.panels{scrollbar-width:none;align-items:center;gap:6px;min-width:0;display:none;overflow:auto hidden}.panels::-webkit-scrollbar{width:0;height:0;display:none}.expanded .panels{flex:1;display:flex}.panel{border:1px solid var(--yii-debug-panel-border);max-width:260px;min-height:32px;color:var(--yii-debug-panel-text);white-space:nowrap;box-sizing:border-box;cursor:default;font:inherit;background:var(--lightningcss-light,#ffffffe0)var(--lightningcss-dark,#141d17d1);border-radius:999px;align-items:center;gap:6px;padding:3px 10px;text-decoration:none;transition:background-color .16s,border-color .16s,box-shadow .16s;display:inline-flex;position:relative;box-shadow:inset 0 1px var(--lightningcss-light,#fffc)var(--lightningcss-dark,#ffffff0f)}.panel[data-debug-url]{cursor:pointer}.panel[data-debug-url]:hover,.panel[data-debug-url]:focus,.panel:focus-within,.panel-active{border-color:var(--yii-debug-panel-primary);box-shadow:0 1px 0 var(--lightningcss-light,#ffffffdb)var(--lightningcss-dark,#ffffff14) inset, 0 0 0 3px var(--accent-wash-soft);background:var(--lightningcss-light,#0e7a551a)var(--lightningcss-dark,#2fd08c1f);outline:0}.panel:has(.panel-link:hover){border-color:var(--yii-debug-panel-primary);box-shadow:0 1px 0 var(--lightningcss-light,#ffffffdb)var(--lightningcss-dark,#ffffff14) inset, 0 0 0 3px var(--accent-wash-soft);background:var(--lightningcss-light,#0e7a551a)var(--lightningcss-dark,#2fd08c1f);outline:0}.panel-active{background:var(--lightningcss-light,#0e7a5529)var(--lightningcss-dark,#2fd08c2e)}.panel-link{min-width:0;color:inherit;outline:0;align-items:center;gap:6px;text-decoration:none;display:inline-flex}.panel-title{letter-spacing:.005em;color:var(--yii-debug-panel-text);text-overflow:ellipsis;font-weight:650;overflow:hidden}.metric{min-width:0;color:inherit;align-items:center;gap:5px;text-decoration:none;display:inline-flex}.metric[data-debug-url]{cursor:pointer}.metric-label{color:var(--yii-debug-panel-muted);font-size:11px}.metric-icon,.panel-icon{background-color:currentColor;flex:none;width:14px;height:14px;display:inline-block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.panel-icon{color:var(--yii-debug-panel-primary);margin-right:2px}.metric-icon{color:var(--yii-debug-panel-muted)}.panel-icon-php{color:var(--lightningcss-light,#4f5b93)var(--lightningcss-dark,#a3aedb);width:32px}.metric-value{border:1px solid var(--yii-debug-panel-border);min-height:18px;color:var(--yii-debug-panel-text);background:var(--yii-debug-panel-pill);font-family:var(--yii-debug-font-mono);font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;padding:0 7px;font-size:11px;font-weight:700;line-height:18px;display:inline-flex;box-shadow:inset 0 1px var(--lightningcss-light,#ffffffd1)var(--lightningcss-dark,#ffffff14)}.badge{border:1px solid var(--yii-debug-panel-border);min-height:18px;font-family:var(--yii-debug-font-mono);font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;padding:0 7px;font-size:11px;font-weight:700;line-height:18px;display:inline-flex}.metric[data-debug-url]:hover .metric-value,.metric[data-debug-url]:focus .metric-value,.metric-active .metric-value{box-shadow:0 0 0 3px var(--accent-wash-strong), 0 1px 0 var(--lightningcss-light,#ffffffd1)var(--lightningcss-dark,#ffffff14) inset}.badge-status-2xx,.badge-success{--badge-hue:var(--yii-debug-status-2xx)}.badge-status-3xx{--badge-hue:var(--yii-debug-status-3xx)}.badge-status-4xx{--badge-hue:var(--yii-debug-status-4xx)}.badge-status-5xx{--badge-hue:var(--yii-debug-status-5xx)}.badge-info,.badge-loading{--badge-hue:var(--yii-debug-info)}.badge-warning{--badge-hue:var(--yii-debug-warning)}.badge-danger{--badge-hue:var(--yii-debug-danger)}.badge-cross-request{--badge-hue:var(--yii-debug-cat-mail)}.badge-status-2xx,.badge-status-3xx,.badge-status-4xx,.badge-status-5xx,.badge-success,.badge-info,.badge-loading,.badge-warning,.badge-danger,.badge-cross-request{border-color:color-mix(in srgb, var(--badge-hue), transparent 65%);background:color-mix(in srgb, var(--badge-hue), transparent 90%);color:color-mix(in srgb, var(--badge-hue) 80%, var(--yii-debug-panel-text))}.verb-get{color:color-mix(in srgb, var(--yii-debug-verb-get) 80%, var(--yii-debug-panel-text))}.verb-post{color:color-mix(in srgb, var(--yii-debug-verb-post) 80%, var(--yii-debug-panel-text))}.verb-put{color:color-mix(in srgb, var(--yii-debug-verb-put) 80%, var(--yii-debug-panel-text))}.verb-delete{color:color-mix(in srgb, var(--yii-debug-verb-delete) 80%, var(--yii-debug-panel-text))}.verb-other{color:color-mix(in srgb, var(--yii-debug-verb-other) 80%, var(--yii-debug-panel-text))}.badge-default{background:var(--yii-debug-panel-pill);color:var(--yii-debug-panel-text)}.ajax-panel{display:none;position:static}.expanded .ajax-panel{display:inline-flex}.ajax-popover{border:1px solid var(--yii-debug-panel-border);width:min(680px,100vw - 32px);max-height:360px;box-shadow:var(--lightningcss-light,0 20px 60px #16211a29)var(--lightningcss-dark,0 20px 60px #00000073);box-sizing:border-box;background:var(--lightningcss-light,#fffffffa)var(--lightningcss-dark,#0d130ffa);border-radius:16px;padding:10px;display:none;position:absolute;bottom:calc(100% + 10px);right:0;overflow:auto}.position-top .ajax-popover{top:calc(100% + 10px);bottom:auto}.ajax-panel:hover .ajax-popover,.ajax-panel:focus-within .ajax-popover{display:block}.ajax-popover table{border-spacing:0;border-collapse:collapse;width:100%;color:var(--yii-debug-panel-text)}.ajax-popover th,.ajax-popover td{border-bottom:1px solid var(--yii-debug-panel-border);text-align:left;vertical-align:top;padding:6px 8px}.ajax-popover th{color:var(--yii-debug-panel-muted);text-transform:uppercase;letter-spacing:.04em;font-size:11px}.ajax-url{text-overflow:ellipsis;white-space:nowrap;max-width:280px;overflow:hidden}.ajax-link{color:var(--yii-debug-panel-link);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:none}.empty{color:var(--yii-debug-panel-muted);text-align:center}.controls{align-items:center;gap:4px;margin-left:auto;display:inline-flex}.control{border:1px solid var(--yii-debug-panel-border);width:34px;height:34px;color:var(--yii-debug-panel-text);cursor:pointer;box-sizing:border-box;background:var(--lightningcss-light,#ffffffe6)var(--lightningcss-dark,#18221bcc);border-radius:999px;justify-content:center;align-items:center;font:700 18px/1 ui-sans-serif,system-ui;text-decoration:none;transition:background-color .16s,border-color .16s,box-shadow .16s,color .16s;display:inline-flex;box-shadow:inset 0 1px var(--lightningcss-light,#ffffffd1)var(--lightningcss-dark,#ffffff0f)}.control:hover,.control:focus{border-color:var(--yii-debug-panel-primary);color:var(--yii-debug-panel-primary-strong);box-shadow:0 1px 0 var(--lightningcss-light,#ffffffe0)var(--lightningcss-dark,#ffffff14) inset, 0 0 0 3px var(--accent-wash-soft);background:var(--lightningcss-light,#0e7a551a)var(--lightningcss-dark,#2fd08c24);outline:0}.control.disabled,.control.disabled:hover,.control.disabled:focus{border-color:var(--yii-debug-panel-border);box-shadow:none;color:var(--yii-debug-panel-muted);opacity:.6;cursor:default;background:var(--lightningcss-light,#16211a0a)var(--lightningcss-dark,#18221b80);transform:none}.control-icon{background-color:currentColor;flex:none;width:16px;height:16px;transition:transform .25s;display:inline-block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.toggle-theme:hover .control-icon{transform:rotate(20deg)}.drawer{width:calc(100vw - 32px);height:var(--yii-debug-toolbar-drawer-height);border:1px solid var(--yii-debug-panel-border);background:var(--yii-debug-panel-bg);box-shadow:var(--lightningcss-light,0 26px 70px #16211a2e)var(--lightningcss-dark,0 26px 70px #0000006b);box-sizing:border-box;border-top-color:#0000;border-radius:0 0 16px 16px;overflow:hidden}.drawer iframe{background:var(--yii-debug-panel-bg);border:0;width:100%;height:100%;display:block}.resize-handle{background:linear-gradient(90deg, transparent, var(--yii-debug-panel-primary) 30%, var(--yii-debug-success) 70%, transparent);opacity:.55;cursor:ns-resize;z-index:1;border-radius:999px;height:6px;margin:0 18px -3px;position:relative}.position-top .resize-handle{margin:-3px 18px 0}.error-message{color:var(--yii-debug-danger);margin-left:8px}@media (max-width:767px){:host{bottom:8px;right:8px}.toolbar{max-width:calc(100vw - 16px)}.expanded .bar,.drawer{width:calc(100vw - 16px)}.expanded .bar{flex-wrap:wrap;align-items:flex-start}.expanded .panels{flex:0 0 100%;order:3;width:100%;padding-top:4px}.panel{max-width:100%}.drawer{height:min(var(--yii-debug-toolbar-drawer-height), 70vh)}}@media print{:host{display:none!important}}`;function K(){var e=Reflect.construct(HTMLElement,[],K);return e.attachShadow({mode:`open`}),e.data=null,e.ajaxRequests=r,e.activeUrl=``,e.expanded=c(t)===`1`,e.drawerOpen=!1,e.resizing=!1,e.currentTag=null,e.lastLoadedTag=null,e.lastLoadedUrl=null,e.loadGeneration=0,e.boundPointerMove=e.onPointerMove.bind(e),e.boundPointerUp=e.onPointerUp.bind(e),e.boundHostThemeRefresh=e.refreshHostThemeControl.bind(e),e.boundThemeRefresh=e.refreshTheme.bind(e),e.theme=null,e.themeObserver=null,e.themeRefreshTimer=null,e.systemThemeQuery=null,e.ownsTheme=!1,e}K.prototype=Object.create(HTMLElement.prototype),K.prototype.constructor=K,Object.setPrototypeOf(K,HTMLElement),K.prototype.connectedCallback=function(){i.indexOf(this)===-1&&i.push(this),x(),this.ownsTheme=!C(),this.refreshTheme(),this.watchTheme(),this.load(),window.addEventListener(`load`,this.boundHostThemeRefresh,!1),this.themeRefreshTimer=window.setTimeout(this.boundHostThemeRefresh,1500)},K.prototype.disconnectedCallback=function(){var e=i.indexOf(this);e!==-1&&i.splice(e,1),this.themeObserver&&=(this.themeObserver.disconnect(),null),this.systemThemeQuery&&=(this.systemThemeQuery.removeEventListener?this.systemThemeQuery.removeEventListener(`change`,this.boundThemeRefresh):this.systemThemeQuery.removeListener&&this.systemThemeQuery.removeListener(this.boundThemeRefresh),null),window.removeEventListener(`storage`,this.boundThemeRefresh,!1),window.removeEventListener(`load`,this.boundHostThemeRefresh,!1),this.themeRefreshTimer!==null&&(window.clearTimeout(this.themeRefreshTimer),this.themeRefreshTimer=null),this.boundThemeMessage&&=(window.removeEventListener(`message`,this.boundThemeMessage,!1),null)},K.prototype.setAjaxRequests=function(e){this.ajaxRequests=e,this.render()},K.prototype.detectTheme=function(){return v(document.documentElement)||v(document.body)||(this.ownsTheme?_(this.getAttribute(`data-yii-debug-theme`))||_(c(`yii-debug-toolbar-theme`))||y()||b()||(window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`):b()||`light`)},K.prototype.toggleTheme=function(){var e=this.theme===`dark`?`light`:`dark`;if(w(e,this.detectTheme())){this.refreshTheme();return}this.theme=e,this.setAttribute(`data-theme`,e),this.setAttribute(`data-yii-debug-theme`,e),l(n,e),T(e),this.propagateThemeToHost(e),this.render()},K.prototype.propagateThemeToHost=function(e){var t=document.documentElement,n=e===`dark`?`light`:`dark`,r=[`theme`,`color-theme`,`color-scheme`,`vueuse-color-scheme`,`vite-ui-theme`],i;for(t&&(t.classList&&(t.classList.add(e),t.classList.remove(n)),t.setAttribute(`data-theme`,e),t.setAttribute(`data-bs-theme`,e),t.style.colorScheme=e),i=0;i
Yii Debugger`+u(e)+`
`},K.prototype.getPosition=function(){return U(this.getAttribute(`data-position`)||this.data&&this.data.position)},K.prototype.render=function(){if(this.data){this.ensureShadowSkeleton();var e=this.getPosition();this.setAttribute(`data-position`,e);var t=[`toolbar`,`position-`+e];this.expanded&&t.push(`expanded`),this.drawerOpen&&t.push(`drawer-open`);var n=(this.data.items||[]).find(function(e){return e&&e.id===`profiling`}),r=n?this.renderPanel(n):``;this.contentRoot.innerHTML=`
`+(this.expanded?this.renderBrand()+r+this.renderAjaxPanel()+this.renderPanels([`profiling`])+this.renderControls():this.renderCollapsedOpener())+`
`+this.renderDrawer(e)+`
`,this.bindEvents(),this.applyDrawerHeight()}},K.prototype.renderLogo=function(){var e=this.data.logo||this.data.logoFallback;return e?``:`Y`},K.prototype.renderCollapsedOpener=function(){var e=u(this.data.title||`Yii Debugger`);return``},K.prototype.renderBrand=function(){var e=this.data.configUrl||this.data.indexUrl,t=F(this.data.yiiVersion,e?this.withTheme(e):null,this.renderLogo(),u),n=``;this.data.phpVersion&&(n=I(this.data.phpVersion,this.data.phpInfoUrl?this.withTheme(this.data.phpInfoUrl):null,this.iconHtml(`php-alt`,`panel-icon panel-icon-php`),u));var r=n?``:``;return`
`+t+r+n+`
`};function q(e){if(e.loading)return`badge-loading`;var t=parseInt(e.statusCode,10);return t>=500?`badge-status-5xx`:t>=400?`badge-status-4xx`:t>=300?`badge-status-3xx`:t>=200?`badge-status-2xx`:`badge-danger`}function J(e){var t=(e||``).toUpperCase();return t===`GET`||t===`HEAD`?`verb-get`:t===`POST`?`verb-post`:t===`PUT`||t===`PATCH`?`verb-put`:t===`DELETE`?`verb-delete`:`verb-other`}K.prototype.renderAjaxPanel=function(){var e=`success`,t=this.ajaxRequests||[],n=t.slice(Math.max(0,t.length-20)),r=``,i=this.iconHtml(`ajax`,`panel-icon`);return t.forEach(function(n,r){n.loading?e=`loading`:n.error&&r>t.length-4&&(e=`danger`)}),n.forEach(function(e){var t=e.profilerUrl,n=R(e.profile,t,t?this.withTheme(t):null,u);r+=``+u(e.method||`GET`)+``+u(e.statusCode||`-`)+``+u(e.url)+``+u(e.duration?e.duration+` ms`:`-`)+``+n+``},this),r===``&&(r=`No AJAX requests tracked yet.`),`
`+i+`AJAX`+t.length+`
`+r+`
MethodStatusURLTimeProfile
`},K.prototype.renderPanels=function(e){var t=``,n=this.data.items||[],r=e||[];return n.forEach(function(e){!e||r.indexOf(e.id)!==-1||(t+=this.renderPanel(e))},this),`
`+t+`
`},K.prototype.isPanelActive=function(e){var t=e.items||[];if(!this.activeUrl)return!1;if(e.url&&p(e.url,this.activeUrl))return!0;for(var n=0;n