react-reinspect 0.1.8 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/lib/index.js CHANGED
@@ -1,67 +1,104 @@
1
1
  "use client";
2
- import { a as e, c as t, i as n, l as r, o as i, r as a, s as o, t as s } from "./wrap-8xVFW-im.js";
3
- import { useCallback as c, useContext as l, useEffect as u, useMemo as d, useReducer as f, useRef as p, useState as m } from "react";
4
- import { jsx as h, jsxs as g } from "react/jsx-runtime";
2
+ import { _ as e, a as t, b as n, c as r, d as i, f as a, g as o, h as s, i as c, l, m as u, o as d, p as f, r as p, s as m, t as h, u as g, v as _, x as v, y } from "./wrap-DQM25n-h.js";
3
+ import { useCallback as b, useContext as x, useEffect as S, useMemo as C, useReducer as w, useRef as T, useState as E } from "react";
4
+ import { jsx as D, jsxs as O } from "react/jsx-runtime";
5
5
  //#region src/reinspect/reinspect.css?inline
6
- var _ = ".reinspect-shell{border-radius:14px;transition:outline-color .12s;position:relative}.reinspect-shell[data-reinspect-active=true]{outline:2px dashed var(--reinspect-color);outline-offset:2px}.reinspect-content{border-radius:inherit}.reinspect-name-badge{z-index:calc(var(--reinspect-z-base) + 5);letter-spacing:.04em;color:#0f172a;background:color-mix(in srgb, var(--reinspect-color) 25%, white);border:1px solid color-mix(in srgb, var(--reinspect-color) 45%, white);pointer-events:none;white-space:nowrap;border-radius:999px;padding:5px 8px;font-size:11px;line-height:1;position:absolute;top:-14px;left:10px}.reinspect-menu{z-index:2147483647;background:#fff;border:1px solid #cbd5e1;border-radius:12px;width:min(300px,100vw - 24px);max-height:min(420px,70vh);padding:12px;position:fixed;overflow:auto;box-shadow:0 20px 25px -5px #0f172a33,0 8px 10px -6px #0f172a33}.reinspect-menu-title{color:#0f172a;margin:0 0 10px;font-size:13px;font-weight:600}.reinspect-menu-component-setting{color:#1e293b;grid-template-columns:1fr auto;align-items:center;gap:8px;margin-bottom:8px;font-size:12px;display:grid}.reinspect-menu-component-setting input[type=checkbox]{width:15px;height:15px}.reinspect-setting-note{color:#64748b;margin:0 0 10px;font-size:11px}.reinspect-submenu{grid-template-columns:1fr 1fr;gap:6px;margin-bottom:10px;display:grid}.reinspect-submenu button{color:#1e293b;cursor:pointer;background:#f8fafc;border:1px solid #cbd5e1;border-radius:8px;padding:6px 8px;font-size:12px}.reinspect-submenu button[data-state=active]{background:#e0f2fe;border-color:#0284c7}.reinspect-menu-grid{gap:9px;display:grid}.reinspect-menu-filter{margin-bottom:10px;position:relative}.reinspect-menu-filter-icon{color:#64748b;pointer-events:none;width:14px;height:14px;position:absolute;top:50%;left:9px;transform:translateY(-50%)}.reinspect-menu-filter-icon svg{width:100%;height:100%;display:block}.reinspect-menu-filter input{border:1px solid #cbd5e1;border-radius:8px;width:100%;padding:5px 7px 5px 30px;font-size:12px}.reinspect-menu-empty-state{color:#64748b;margin:8px 0 0;font-size:12px}.reinspect-field{gap:4px;display:grid}.reinspect-field label{color:#334155;font-size:12px}.reinspect-inline-controls{grid-template-columns:1fr auto;gap:6px;display:grid}.reinspect-inline-controls input,.reinspect-inline-controls button,.reinspect-inline-controls output{font-size:12px}.reinspect-inline-controls input[type=number],.reinspect-inline-controls input[type=text]{border:1px solid #cbd5e1;border-radius:8px;width:100%;padding:5px 7px}.reinspect-inline-controls button{color:#1e293b;cursor:pointer;background:#f8fafc;border:1px solid #cbd5e1;border-radius:8px;padding:5px 7px}.reinspect-inline-controls button:disabled{opacity:.45;cursor:default}.reinspect-opacity-controls{grid-template-columns:1fr auto auto;align-items:center}.reinspect-opacity-controls output{color:#475569;text-align:right;min-width:36px}.reinspect-props-panel{gap:8px;display:grid}.reinspect-props-submenu{grid-template-columns:1fr 1fr;gap:6px;display:grid}.reinspect-props-submenu button{color:#1e293b;cursor:pointer;background:#f8fafc;border:1px solid #cbd5e1;border-radius:8px;padding:6px 8px;font-size:12px}.reinspect-props-submenu button[data-state=active]{background:#e0f2fe;border-color:#0284c7}.reinspect-props-panel label{color:#334155;font-size:12px}.reinspect-props-table{gap:6px;display:grid}.reinspect-props-header{color:#475569;text-transform:uppercase;letter-spacing:.04em;grid-template-columns:.85fr 1.15fr;gap:8px;font-size:11px;display:grid}.reinspect-props-row{border:1px solid #e2e8f0;border-radius:8px;grid-template-columns:.85fr 1.15fr;align-items:start;gap:8px;padding:6px;display:grid}.reinspect-prop-key{color:#0f172a;word-break:break-word;font-size:12px}.reinspect-prop-cell{min-width:0}.reinspect-prop-cell code{color:#0f172a;word-break:break-word;font-size:11px}.reinspect-prop-missing{color:#94a3b8;font-size:11px}.reinspect-prop-scalar{gap:4px;display:grid}.reinspect-prop-actions{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.reinspect-prop-scalar button,.reinspect-prop-function button,.reinspect-prop-tree summary button{color:#1e293b;cursor:pointer;background:#f8fafc;border:1px solid #cbd5e1;border-radius:7px;justify-self:start;padding:3px 6px;font-size:11px}.reinspect-prop-actions button,.reinspect-prop-json-preview button{color:#1e293b;cursor:pointer;background:#f8fafc;border:1px solid #cbd5e1;border-radius:7px;padding:3px 6px;font-size:11px}.reinspect-prop-tree{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:5px}.reinspect-prop-tree summary{cursor:pointer;color:#1e293b;justify-content:space-between;align-items:center;gap:8px;font-size:11px;display:flex}.reinspect-prop-tree-children{gap:6px;margin-top:6px;display:grid}.reinspect-prop-tree-row{grid-template-columns:.8fr 1.2fr;align-items:start;gap:6px;display:grid}.reinspect-prop-tree-row>code{color:#334155;word-break:break-word;font-size:10px}.reinspect-prop-function{gap:4px;display:grid}.reinspect-prop-function pre{white-space:pre-wrap;word-break:break-word;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;margin:0;padding:6px;font-size:11px;line-height:1.3}.reinspect-prop-json-preview{gap:6px;margin-top:6px;display:grid}.reinspect-prop-json-preview pre{white-space:pre-wrap;word-break:break-word;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;max-height:180px;margin:0;padding:6px;font-size:11px;line-height:1.3;overflow:auto}.reinspect-modal-backdrop{z-index:2147483647;background:#0f172a73;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.reinspect-modal{background:#fff;border:1px solid #cbd5e1;border-radius:12px;gap:8px;width:min(560px,100%);padding:12px;display:grid;box-shadow:0 24px 28px -12px #0f172a40,0 10px 16px -10px #0f172a38}.reinspect-modal textarea,.reinspect-props-panel textarea{resize:vertical;border:1px solid #cbd5e1;border-radius:8px;width:100%;padding:8px;font-family:IBM Plex Mono,SFMono-Regular,monospace;font-size:12px}.reinspect-error{color:#b91c1c;margin:0;font-size:12px}.reinspect-floating-toggle{z-index:2147483647;color:#f8fafc;letter-spacing:.03em;cursor:pointer;background:linear-gradient(120deg,#0f172a,#334155);border:none;border-radius:999px;padding:10px 15px;font-size:13px;font-weight:600;position:fixed;bottom:18px;right:18px;box-shadow:0 10px 18px #0f172a47}.reinspect-floating-root{z-index:2147483645;position:fixed;bottom:18px;right:18px}.reinspect-floating-root .reinspect-floating-toggle{position:static}.reinspect-settings-menu{background:#fff;border:1px solid #cbd5e1;border-radius:12px;gap:10px;width:min(360px,100vw - 24px);max-height:min(540px,75vh);padding:12px;display:grid;position:absolute;bottom:calc(100% + 10px);right:0;overflow:auto;box-shadow:0 24px 28px -12px #0f172a40,0 10px 16px -10px #0f172a38}.reinspect-settings-title{color:#0f172a;margin:0;font-size:13px;font-weight:700}.reinspect-settings-toggle-row{color:#1e293b;grid-template-columns:1fr auto;align-items:center;gap:8px;font-size:12px;display:grid}.reinspect-settings-select-row{gap:6px;font-size:12px;display:grid}.reinspect-settings-select-row select{color:#0f172a;background:#fff;border:1px solid #cbd5e1;border-radius:8px;width:100%;padding:6px 8px;font-size:12px}.reinspect-settings-toggle-label{line-height:1.35}.reinspect-settings-toggle-row input[type=checkbox]{width:16px;height:16px}.reinspect-settings-divider{background:#e2e8f0;height:1px}.reinspect-setting-block{gap:8px;display:grid}.reinspect-apply-button{color:#f8fafc;cursor:pointer;background:#0f172a;border:1px solid #0f172a;border-radius:8px;padding:6px 8px;font-size:12px;font-weight:600}.reinspect-apply-button:disabled{opacity:.4;cursor:default}.reinspect-setting-header{grid-template-columns:1fr auto;align-items:start;gap:8px;display:grid}.reinspect-setting-name{color:#0f172a;letter-spacing:.02em;margin:0;font-size:12px;font-weight:700}.reinspect-setting-short-description{color:#475569;margin:3px 0 0;font-size:12px;line-height:1.35}.reinspect-tooltip-host{display:inline-flex;position:relative}.reinspect-tooltip-trigger{color:#334155;cursor:help;background:#f8fafc;border:1px solid #cbd5e1;border-radius:999px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;font-size:12px;font-weight:700;display:inline-flex}.reinspect-tooltip-content{color:#f8fafc;opacity:0;pointer-events:none;background:#0f172a;border:1px solid #cbd5e1;border-radius:8px;width:240px;padding:8px;font-size:11px;line-height:1.4;transition:opacity .12s;position:absolute;top:calc(100% + 6px);right:0}.reinspect-tooltip-host:hover .reinspect-tooltip-content,.reinspect-tooltip-host:focus-within .reinspect-tooltip-content{opacity:1;pointer-events:auto}.reinspect-setting-subheading{color:#334155;margin:2px 0 0;font-size:12px;font-weight:600}.reinspect-setting-empty-state{color:#64748b;margin:0;font-size:12px}.reinspect-component-settings-list{gap:6px;display:grid}.reinspect-component-setting-row{color:#1e293b;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;grid-template-columns:1fr auto;align-items:center;gap:8px;padding:6px 8px;font-size:12px;display:grid}.reinspect-component-setting-row input[type=checkbox]{width:15px;height:15px}", v = "reinspect-runtime-styles";
7
- function y() {
6
+ var k = ":root{--reinspect-font-sans:\"Geist Sans\", \"Geist\", \"Segoe UI\", \"SF Pro Text\", system-ui, -apple-system, sans-serif;--reinspect-font-mono:\"Geist Mono\", \"IBM Plex Mono\", \"SFMono-Regular\", Menlo, Consolas, monospace;--reinspect-menu-bg:oklch(98.2% .014 252);--reinspect-menu-surface:oklch(96.5% .018 252);--reinspect-menu-surface-strong:oklch(93.6% .024 252);--reinspect-menu-surface-stronger:oklch(90.2% .03 252);--reinspect-menu-text:oklch(20.5% .028 252);--reinspect-menu-text-muted:oklch(36.5% .024 252);--reinspect-menu-text-soft:oklch(49% .02 252);--reinspect-menu-border:oklch(66% .024 252/.52);--reinspect-menu-border-strong:oklch(57% .03 252/.65);--reinspect-menu-border-subtle:oklch(73% .02 252/.5);--reinspect-brand-400:oklch(73% .145 254);--reinspect-brand-500:oklch(66% .165 254);--reinspect-brand-600:oklch(58% .165 254);--reinspect-brand-700:oklch(51% .153 254);--reinspect-brand-soft:color-mix(in oklch, var(--reinspect-brand-500) 18%, var(--reinspect-menu-surface));--reinspect-brand-soft-strong:color-mix(in oklch, var(--reinspect-brand-500) 28%, var(--reinspect-menu-surface));--reinspect-brand-soft-hover:color-mix(in oklch, var(--reinspect-brand-500) 36%, var(--reinspect-menu-surface));--reinspect-on-brand:oklch(98.5% .008 252);--reinspect-interactive-bg:var(--reinspect-menu-surface);--reinspect-interactive-bg-hover:var(--reinspect-menu-surface-strong);--reinspect-interactive-bg-active:var(--reinspect-brand-soft-hover);--reinspect-interactive-border:var(--reinspect-menu-border);--reinspect-interactive-border-hover:var(--reinspect-brand-400);--reinspect-interactive-border-active:var(--reinspect-brand-500);--reinspect-interactive-text:var(--reinspect-menu-text);--reinspect-interactive-text-active:var(--reinspect-brand-700);--reinspect-prism-bg:color-mix(in oklch, var(--reinspect-menu-surface-strong) 74%, white);--reinspect-prism-text:var(--reinspect-menu-text);--reinspect-prism-comment:var(--reinspect-menu-text-soft);--reinspect-prism-keyword:var(--reinspect-brand-700);--reinspect-prism-string:color-mix(in oklch, var(--reinspect-semantic-error) 70%, var(--reinspect-menu-text));--reinspect-prism-number:color-mix(in oklch, var(--reinspect-semantic-success) 76%, var(--reinspect-menu-text));--reinspect-prism-boolean:var(--reinspect-prism-keyword);--reinspect-prism-function:color-mix(in oklch, var(--reinspect-semantic-warning) 72%, var(--reinspect-menu-text));--reinspect-prism-property:color-mix(in oklch, var(--reinspect-brand-600) 74%, var(--reinspect-menu-text));--reinspect-prism-operator:var(--reinspect-menu-text);--reinspect-prism-punctuation:var(--reinspect-menu-text);--reinspect-prism-constant:color-mix(in oklch, var(--reinspect-brand-500) 78%, var(--reinspect-menu-text));--reinspect-semantic-error:oklch(62% .165 20);--reinspect-semantic-success:oklch(67% .115 158);--reinspect-semantic-warning:oklch(76% .12 78);--reinspect-focus-ring:color-mix(in oklch, var(--reinspect-brand-500) 70%, white);--reinspect-runtime-soft-mix:22%;--reinspect-runtime-border-mix:54%;--reinspect-runtime-strong-mix:78%;--reinspect-runtime-border-base:var(--reinspect-menu-border-strong);--reinspect-runtime-strong-base:var(--reinspect-menu-text);--reinspect-overlay-backdrop:oklch(24.5% .02 248/.44);--reinspect-shadow-popover:0 28px 44px -18px oklch(25.5% .02 248/.38), 0 10px 20px -12px oklch(25.5% .02 248/.3);--reinspect-shadow-modal:0 24px 28px -12px oklch(25.5% .02 248/.25), 0 10px 16px -10px oklch(25.5% .02 248/.22)}.reinspect-menu[data-reinspect-theme=dark],.reinspect-settings-menu[data-reinspect-theme=dark],.reinspect-modal-backdrop[data-reinspect-theme=dark],.reinspect-modal[data-reinspect-theme=dark],.reinspect-toast[data-reinspect-theme=dark],.reinspect-floating-root[data-reinspect-theme=dark],.reinspect-floating-toggle[data-reinspect-theme=dark]{--reinspect-menu-bg:oklch(19% .018 252);--reinspect-menu-surface:oklch(22.8% .022 252);--reinspect-menu-surface-strong:oklch(27.2% .025 252);--reinspect-menu-surface-stronger:oklch(32.2% .028 252);--reinspect-menu-text:oklch(96.5% .012 252);--reinspect-menu-text-muted:oklch(84% .018 252);--reinspect-menu-text-soft:oklch(73% .017 252);--reinspect-menu-border:oklch(54% .022 252/.55);--reinspect-menu-border-strong:oklch(63% .022 252/.72);--reinspect-menu-border-subtle:oklch(48% .018 252/.52);--reinspect-focus-ring:color-mix(in oklch, var(--reinspect-brand-400) 82%, black);--reinspect-runtime-soft-mix:28%;--reinspect-runtime-border-mix:48%;--reinspect-runtime-strong-mix:74%;--reinspect-runtime-border-base:var(--reinspect-menu-border);--reinspect-runtime-strong-base:var(--reinspect-menu-text);--reinspect-overlay-backdrop:oklch(14.5% .01 248/.58);--reinspect-shadow-popover:0 28px 44px -18px oklch(11% .01 248/.68), 0 10px 20px -12px oklch(11% .01 248/.58);--reinspect-shadow-modal:0 24px 28px -12px oklch(11% .01 248/.62), 0 10px 16px -10px oklch(11% .01 248/.54);--reinspect-interactive-bg:oklch(25.8% .023 252);--reinspect-interactive-bg-hover:oklch(31% .03 252);--reinspect-interactive-bg-active:color-mix(in oklch, var(--reinspect-brand-500) 42%, var(--reinspect-menu-surface-stronger));--reinspect-interactive-border:var(--reinspect-menu-border-strong);--reinspect-interactive-border-hover:var(--reinspect-brand-400);--reinspect-interactive-border-active:var(--reinspect-brand-400);--reinspect-interactive-text:var(--reinspect-menu-text);--reinspect-interactive-text-active:oklch(96.6% .014 252);--reinspect-prism-bg:color-mix(in oklch, var(--reinspect-menu-surface) 88%, black);--reinspect-prism-text:var(--reinspect-menu-text);--reinspect-prism-comment:color-mix(in oklch, var(--reinspect-menu-text-soft) 82%, white);--reinspect-prism-keyword:var(--reinspect-brand-400);--reinspect-prism-string:color-mix(in oklch, var(--reinspect-semantic-warning) 56%, var(--reinspect-menu-text));--reinspect-prism-number:color-mix(in oklch, var(--reinspect-semantic-success) 62%, var(--reinspect-menu-text));--reinspect-prism-boolean:var(--reinspect-prism-keyword);--reinspect-prism-function:color-mix(in oklch, var(--reinspect-semantic-warning) 64%, var(--reinspect-menu-text));--reinspect-prism-property:color-mix(in oklch, var(--reinspect-brand-400) 70%, var(--reinspect-menu-text));--reinspect-prism-operator:var(--reinspect-menu-text);--reinspect-prism-punctuation:var(--reinspect-menu-text);--reinspect-prism-constant:color-mix(in oklch, var(--reinspect-brand-400) 84%, var(--reinspect-menu-text))}.reinspect-shell,.reinspect-menu{--reinspect-runtime-color:var(--reinspect-color,var(--reinspect-brand-500));--reinspect-runtime-soft:color-mix(in oklch, var(--reinspect-runtime-color) var(--reinspect-runtime-soft-mix), var(--reinspect-menu-surface));--reinspect-runtime-border:color-mix(in oklch, var(--reinspect-runtime-color) var(--reinspect-runtime-border-mix), var(--reinspect-runtime-border-base));--reinspect-runtime-strong:color-mix(in oklch, var(--reinspect-runtime-color) var(--reinspect-runtime-strong-mix), var(--reinspect-runtime-strong-base))}.reinspect-menu,.reinspect-settings-menu,.reinspect-modal,.reinspect-floating-toggle{font-family:var(--reinspect-font-sans)}.reinspect-menu,.reinspect-settings-menu,.reinspect-modal{color:var(--reinspect-menu-text)}.reinspect-menu[data-reinspect-theme=light],.reinspect-settings-menu[data-reinspect-theme=light],.reinspect-modal-backdrop[data-reinspect-theme=light],.reinspect-modal[data-reinspect-theme=light],.reinspect-toast[data-reinspect-theme=light],.reinspect-floating-root[data-reinspect-theme=light],.reinspect-floating-toggle[data-reinspect-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.reinspect-menu[data-reinspect-theme=dark],.reinspect-settings-menu[data-reinspect-theme=dark],.reinspect-modal-backdrop[data-reinspect-theme=dark],.reinspect-modal[data-reinspect-theme=dark],.reinspect-toast[data-reinspect-theme=dark],.reinspect-floating-root[data-reinspect-theme=dark],.reinspect-floating-toggle[data-reinspect-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.reinspect-shell{will-change:box-shadow;border-radius:14px;transition:box-shadow .18s ease-out,filter .18s ease-out;position:relative}.reinspect-shell[data-reinspect-active=true]{box-shadow:0 0 0 1px color-mix(in oklch, var(--reinspect-runtime-color) 62%, var(--reinspect-menu-bg)), 0 0 0 4px color-mix(in oklch, var(--reinspect-runtime-color) 16%, transparent), 0 10px 18px -16px color-mix(in oklch, var(--reinspect-runtime-color) 48%, var(--reinspect-menu-text));filter:saturate(1.03)}.reinspect-shell[data-reinspect-active=true]:hover{box-shadow:0 0 0 1px color-mix(in oklch, var(--reinspect-runtime-color) 74%, var(--reinspect-menu-bg)), 0 0 0 5px color-mix(in oklch, var(--reinspect-runtime-color) 22%, transparent), 0 14px 24px -18px color-mix(in oklch, var(--reinspect-runtime-color) 52%, var(--reinspect-menu-text))}.reinspect-shell[data-reinspect-active=true]:focus-within{box-shadow:0 0 0 1px color-mix(in oklch, var(--reinspect-runtime-color) 78%, var(--reinspect-menu-bg)), 0 0 0 2px color-mix(in oklch, var(--reinspect-runtime-color) 34%, transparent), 0 0 0 6px color-mix(in oklch, var(--reinspect-runtime-color) 20%, transparent), 0 16px 28px -20px color-mix(in oklch, var(--reinspect-runtime-color) 52%, var(--reinspect-menu-text))}.reinspect-content{border-radius:inherit}.reinspect-name-badge{z-index:calc(var(--reinspect-z-base) + 5);font-family:var(--reinspect-font-mono);letter-spacing:.04em;color:var(--reinspect-runtime-strong);background:var(--reinspect-runtime-soft);border:1px solid var(--reinspect-runtime-border);opacity:.9;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:none;white-space:nowrap;border-radius:999px;padding:4px 8px;font-size:11px;line-height:1;position:absolute;top:-13px;left:10px;box-shadow:0 8px 16px -14px oklch(25.5% .02 248/.45)}.reinspect-menu{z-index:2147483647;border:1px solid var(--reinspect-menu-border);background:var(--reinspect-menu-bg);width:min(560px,100vw - 24px);max-height:min(620px,82vh);box-shadow:var(--reinspect-shadow-popover);overscroll-behavior:contain;border-radius:16px;gap:10px;padding:12px;display:grid;position:fixed;overflow:auto}.reinspect-menu-title{color:var(--reinspect-menu-text);font-family:var(--reinspect-font-mono);letter-spacing:-.014em;margin:0;font-size:19px;font-weight:760;line-height:1.1}.reinspect-menu-title-row{align-items:center;gap:8px;min-width:0;display:inline-flex}.reinspect-menu-title-color-chip{border:1px solid color-mix(in oklab, var(--reinspect-color) 65%, black 35%);background:var(--reinspect-color);border-radius:3px;flex:none;width:10px;height:10px}.reinspect-menu-title-wrap{gap:3px;min-width:0;display:grid}.reinspect-menu-subtitle{color:var(--reinspect-menu-text-soft);margin:0;font-size:12px;font-weight:560;line-height:1.2}.reinspect-menu-header{grid-template-columns:1fr auto;align-items:start;gap:10px;display:grid}.reinspect-menu-close{border:1px solid var(--reinspect-menu-border);background:var(--reinspect-menu-surface);width:32px;height:32px;color:var(--reinspect-menu-text);cursor:pointer;border-radius:10px;place-items:center;padding:0;font-size:20px;line-height:1;display:grid}.reinspect-menu-close:hover{background:var(--reinspect-menu-surface-strong);border-color:var(--reinspect-menu-border-strong)}.reinspect-menu-close:focus-visible{outline:2px solid var(--reinspect-focus-ring);outline-offset:1px}.reinspect-setting-note{color:var(--reinspect-menu-text-muted);margin:0 0 10px;font-size:12px}.reinspect-setting-helper-text{color:var(--reinspect-menu-text-muted);margin:0;font-size:12px;line-height:1.4}.reinspect-submenu{border:1px solid var(--reinspect-menu-border-subtle);background:var(--reinspect-menu-surface);isolation:isolate;border-radius:11px;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;padding:4px;display:grid;overflow:hidden}.reinspect-submenu button{border:1px solid var(--reinspect-interactive-border);background:var(--reinspect-interactive-bg);color:var(--reinspect-interactive-text);cursor:pointer;white-space:nowrap;opacity:1;border-radius:8px;padding:7px 8px;font-size:12px;font-weight:640;transition:opacity .14s ease-out,transform .14s ease-out,box-shadow .14s ease-out,border-color .14s ease-out,background-color .14s ease-out}.reinspect-submenu button:hover{border-color:var(--reinspect-interactive-border-hover);background:var(--reinspect-interactive-bg-hover)}.reinspect-submenu button[data-state=active]{border-color:var(--reinspect-interactive-border-active);background:var(--reinspect-interactive-bg-active);color:var(--reinspect-interactive-text-active);box-shadow:0 0 0 1px color-mix(in oklch, var(--reinspect-brand-500) 35%, transparent), 0 8px 14px -14px oklch(25.5% .02 248/.38);z-index:1;transform:translateY(-1px)}.reinspect-submenu button:focus-visible{outline:2px solid var(--reinspect-focus-ring);outline-offset:0}@media (prefers-reduced-motion:reduce){.reinspect-shell,.reinspect-submenu button,.reinspect-menu-action-card{transition:none}.reinspect-menu-action-card[data-state=active]:after{animation:none}}.reinspect-menu-shortcuts{gap:8px;margin-bottom:0;display:grid}.reinspect-menu-action-card{border:1px solid var(--reinspect-interactive-border);background:var(--reinspect-interactive-bg);color:var(--reinspect-interactive-text);text-align:left;cursor:pointer;border-radius:12px;gap:4px;padding:9px 10px;font-size:12px;transition:border-color .12s,box-shadow .12s,background-color .12s,transform .12s;display:grid;position:relative}.reinspect-menu-action-card:hover{border-color:var(--reinspect-interactive-border-hover);background:var(--reinspect-interactive-bg-hover);box-shadow:0 1px oklch(25.5% .02 248/.08)}.reinspect-menu-action-card:focus-visible{outline:2px solid var(--reinspect-focus-ring);outline-offset:1px}.reinspect-menu-action-card[data-state=active]{border-color:var(--reinspect-interactive-border-active);background:var(--reinspect-interactive-bg-active);color:var(--reinspect-interactive-text-active);box-shadow:0 0 0 1px color-mix(in oklch, var(--reinspect-brand-500) 40%, transparent), 0 8px 18px -14px oklch(25.5% .02 248/.35);transform:translateY(-1px)}.reinspect-menu-action-card[data-state=active]:after{content:\"Selected\";border:1px solid var(--reinspect-interactive-border-active);background:color-mix(in oklch, var(--reinspect-brand-500) 20%, var(--reinspect-menu-surface));color:var(--reinspect-interactive-text-active);letter-spacing:.01em;border-radius:999px;padding:2px 6px;font-size:9px;font-weight:700;line-height:1;animation:.56s cubic-bezier(.22,1,.36,1) reinspect-selected-pulse;position:absolute;top:8px;right:10px}@keyframes reinspect-selected-pulse{0%{opacity:.72;transform:scale(.92)}to{opacity:1;transform:scale(1)}}.reinspect-menu-action-title{font-weight:700}.reinspect-menu-action-description{color:var(--reinspect-menu-text-muted);font-size:11px;line-height:1.35}.reinspect-menu-action-target{font-family:var(--reinspect-font-mono);color:var(--reinspect-menu-text-muted);white-space:normal;word-break:break-word;font-size:11px}.reinspect-general-panel{gap:10px;display:grid}.reinspect-general-panel .reinspect-setting-note{margin:0}.reinspect-menu-section{border:1px solid var(--reinspect-menu-border);background:var(--reinspect-menu-bg);border-radius:12px;gap:7px;padding:10px;display:grid}.reinspect-menu-section-header,.reinspect-menu-panel-header{grid-template-columns:1fr auto;align-items:center;gap:8px;display:grid}.reinspect-menu-section-title{color:var(--reinspect-menu-text);letter-spacing:.01em;margin:0;font-size:13px;font-weight:700}.reinspect-menu-section-description{color:var(--reinspect-menu-text-muted);margin:0;font-size:12px;line-height:1.4}.reinspect-menu-section-caption{color:var(--reinspect-menu-text-muted);font-family:var(--reinspect-font-mono);margin:0;font-size:10px}.reinspect-menu-switch{justify-self:end}.reinspect-menu-switch:disabled{opacity:.7;cursor:default}.reinspect-menu-divider{background:var(--reinspect-menu-border);height:1px}.reinspect-menu-inline-setting{grid-template-columns:1fr auto;align-items:center;gap:8px;display:grid}.reinspect-menu-inline-copy{gap:2px;display:grid}.reinspect-menu-inline-title{color:var(--reinspect-menu-text);margin:0;font-size:12px;font-weight:700}.reinspect-menu-inline-description{color:var(--reinspect-menu-text-muted);margin:0;font-size:12px;line-height:1.35}.reinspect-css-panel{gap:9px;display:grid}.reinspect-menu-grid{gap:8px;display:grid}.reinspect-menu-filter{align-items:center;display:grid;position:relative}.reinspect-menu-filter-icon{color:var(--reinspect-menu-text-soft);pointer-events:none;width:14px;height:14px;position:absolute;top:50%;left:9px;transform:translateY(-50%)}.reinspect-menu-filter-icon svg{width:100%;height:100%;display:block}.reinspect-menu-filter input{border:1px solid var(--reinspect-menu-border);background:var(--reinspect-menu-bg);width:100%;color:var(--reinspect-menu-text);border-radius:10px;padding:7px 52px 7px 30px;font-size:12px}.reinspect-menu-filter input::placeholder,.reinspect-filter-search-input::placeholder{color:var(--reinspect-menu-text-soft);opacity:1}.reinspect-menu-filter input:focus-visible{outline:2px solid var(--reinspect-focus-ring);outline-offset:0}.reinspect-menu-filter-clear{border:1px solid var(--reinspect-menu-border);background:var(--reinspect-menu-surface);color:var(--reinspect-menu-text);cursor:pointer;border-radius:7px;padding:4px 6px;font-size:10px;font-weight:600;line-height:1;position:absolute;right:6px}.reinspect-menu-filter-clear:hover{border-color:var(--reinspect-brand-400);background:var(--reinspect-brand-soft)}.reinspect-menu-filter-clear:focus-visible{outline:2px solid var(--reinspect-focus-ring);outline-offset:1px}.reinspect-menu-empty-state{border:1px dashed var(--reinspect-menu-border);background:var(--reinspect-brand-soft);color:var(--reinspect-menu-text-muted);border-radius:10px;margin:0;padding:8px 10px;font-size:11px}.reinspect-field{border:1px solid var(--reinspect-menu-border);background:var(--reinspect-menu-bg);border-radius:10px;gap:5px;padding:8px;display:grid}.reinspect-field label{color:var(--reinspect-menu-text);font-size:11px;font-weight:640}.reinspect-inline-controls{grid-template-columns:1fr auto;gap:6px;display:grid}.reinspect-inline-controls input,.reinspect-inline-controls button,.reinspect-inline-controls output{font-size:12px}.reinspect-inline-controls input[type=number],.reinspect-inline-controls input[type=text]{border:1px solid var(--reinspect-menu-border);background:var(--reinspect-menu-bg);width:100%;color:var(--reinspect-menu-text);border-radius:8px;padding:6px 8px}.reinspect-inline-controls input[type=color]{border:1px solid var(--reinspect-menu-border);background:var(--reinspect-menu-bg);border-radius:8px;width:100%;min-height:32px;padding:2px}.reinspect-inline-controls input[type=range]{width:100%}.reinspect-inline-controls input:focus-visible{outline:2px solid var(--reinspect-focus-ring);outline-offset:0}.reinspect-inline-controls button{border:1px solid var(--reinspect-menu-border);background:var(--reinspect-menu-surface);color:var(--reinspect-menu-text);cursor:pointer;border-radius:8px;padding:6px 8px;font-weight:600}.reinspect-inline-controls button:hover{border-color:var(--reinspect-brand-400);background:var(--reinspect-brand-soft-strong)}.reinspect-inline-controls button:focus-visible{outline:2px solid var(--reinspect-focus-ring);outline-offset:1px}.reinspect-inline-controls button:disabled{opacity:.45;cursor:default}.reinspect-opacity-controls{grid-template-columns:1fr auto auto;align-items:center}.reinspect-opacity-controls output{color:var(--reinspect-menu-text);text-align:right;min-width:36px}.reinspect-props-panel{gap:6px;display:grid}.reinspect-props-submenu{border:1px solid var(--reinspect-menu-border-subtle);background:var(--reinspect-menu-surface);border-radius:10px;grid-template-columns:1fr 1fr;gap:4px;padding:3px;display:grid}.reinspect-props-submenu button{border:1px solid var(--reinspect-interactive-border);background:var(--reinspect-interactive-bg);color:var(--reinspect-interactive-text);cursor:pointer;opacity:1;border-radius:7px;padding:5px 8px;font-size:12px;font-weight:600;transition:opacity .12s ease-out,background-color .12s ease-out,border-color .12s ease-out}.reinspect-props-submenu button:hover{border-color:var(--reinspect-interactive-border-hover);background:var(--reinspect-interactive-bg-hover)}.reinspect-props-submenu button[data-state=active]{border-color:var(--reinspect-interactive-border-active);background:var(--reinspect-interactive-bg-active);color:var(--reinspect-interactive-text-active)}.reinspect-props-submenu button:focus-visible{outline:2px solid var(--reinspect-focus-ring);outline-offset:0}.reinspect-props-panel label{color:var(--reinspect-menu-text-muted);font-size:12px}.reinspect-props-table{border:1px solid var(--reinspect-menu-border-subtle);background:var(--reinspect-menu-bg);border-radius:10px;display:grid;overflow:hidden}.reinspect-props-row{grid-template-columns:minmax(90px,.55fr) minmax(0,1.45fr);align-items:start;gap:10px;padding:8px 9px;display:grid}.reinspect-props-row+.reinspect-props-row{border-top:1px solid var(--reinspect-menu-border-subtle)}.reinspect-prop-key{color:var(--reinspect-menu-text);word-break:break-word;font-size:12px;font-weight:600}.reinspect-prop-cell{gap:4px;min-width:0;display:grid}.reinspect-prop-main{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:8px;display:grid}.reinspect-prop-value-render{min-width:0}.reinspect-prop-cell code{font-size:11px;font-family:var(--reinspect-font-mono);color:var(--reinspect-menu-text);word-break:normal;overflow-wrap:break-word}.reinspect-prop-missing{color:var(--reinspect-menu-text-soft);font-size:11px}.reinspect-prop-scalar{gap:3px;display:grid}.reinspect-prop-actions{flex-wrap:nowrap;justify-content:flex-end;align-items:center;gap:4px;margin-top:0;display:flex}.reinspect-prop-scalar button,.reinspect-prop-function button,.reinspect-prop-tree summary button{color:var(--reinspect-menu-text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-self:start;padding:2px 4px;font-size:11px;font-weight:600}.reinspect-prop-action-text-button{border:1px solid var(--reinspect-menu-border);background:var(--reinspect-brand-soft);color:var(--reinspect-brand-700);letter-spacing:.01em;cursor:pointer;white-space:nowrap;border-radius:6px;padding:2px 6px;font-size:10px;font-weight:700;line-height:1.4}.reinspect-prop-action-text-button:hover{border-color:var(--reinspect-brand-400);background:var(--reinspect-brand-soft-strong);color:var(--reinspect-brand-700)}.reinspect-prop-action-text-button:focus-visible{outline:2px solid var(--reinspect-focus-ring);outline-offset:1px}.reinspect-prop-actions button,.reinspect-prop-json-preview button{color:var(--reinspect-menu-text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:2px 4px;font-size:11px;font-weight:600}.reinspect-icon-button{border:1px solid var(--reinspect-menu-border);background:var(--reinspect-brand-soft);width:24px;height:24px;color:var(--reinspect-brand-700);cursor:pointer;border-radius:6px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.reinspect-icon-button svg{width:14px;height:14px;display:block}.reinspect-prop-scalar button:hover,.reinspect-prop-function button:hover,.reinspect-prop-tree summary button:hover,.reinspect-prop-actions button:hover,.reinspect-prop-json-preview button:hover{background:var(--reinspect-brand-soft);color:var(--reinspect-brand-700)}.reinspect-icon-button:hover{border-color:var(--reinspect-brand-400);background:var(--reinspect-brand-soft-strong)}.reinspect-prop-scalar button:focus-visible,.reinspect-prop-function button:focus-visible,.reinspect-prop-tree summary button:focus-visible,.reinspect-prop-actions button:focus-visible,.reinspect-prop-json-preview button:focus-visible{outline:2px solid var(--reinspect-focus-ring);outline-offset:1px}.reinspect-icon-button:disabled{opacity:.45;cursor:default}.reinspect-prop-tree{border:1px solid var(--reinspect-menu-border-subtle);background:var(--reinspect-brand-soft);border-radius:8px;padding:5px}.reinspect-prop-tree summary{cursor:pointer;color:var(--reinspect-menu-text);justify-content:space-between;align-items:center;gap:8px;font-size:11px;display:flex}.reinspect-prop-tree-children{gap:6px;margin-top:6px;display:grid}.reinspect-prop-tree-row{grid-template-columns:.8fr 1.2fr;align-items:start;gap:6px;display:grid}.reinspect-prop-tree-row>code{font-size:10px;font-family:var(--reinspect-font-mono);color:var(--reinspect-menu-text-muted);word-break:break-word}.reinspect-prop-function{gap:4px;display:grid}.reinspect-prop-function pre{border:1px solid var(--reinspect-menu-border-subtle);background:var(--reinspect-prism-bg);white-space:pre-wrap;word-break:break-word;border-radius:8px;margin:0;padding:6px;font-size:11px;line-height:1.3}.reinspect-prop-json-preview{gap:6px;margin-top:6px;display:grid}.reinspect-json-editor{border:1px solid var(--reinspect-menu-border);background:var(--reinspect-prism-bg);border-radius:8px;display:grid;overflow:hidden}.reinspect-json-editor pre,.reinspect-json-editor textarea{font-size:12px;line-height:1.4;font-family:var(--reinspect-font-mono);white-space:pre;word-break:normal;grid-area:1/1;margin:0;padding:8px}.reinspect-json-editor pre{pointer-events:none;overflow:auto}.reinspect-props-panel .reinspect-json-editor .reinspect-json-editor-textarea{color:#0000;width:100%;caret-color:var(--reinspect-prism-text);resize:vertical;tab-size:2;background:0 0;border:none;border-radius:0;overflow:auto}.reinspect-props-panel .reinspect-json-editor .reinspect-json-editor-textarea:focus-visible{outline:none}.reinspect-json-editor:focus-within{box-shadow:0 0 0 2px var(--reinspect-focus-ring)}.reinspect-prop-json-preview pre{border:1px solid var(--reinspect-menu-border-subtle);background:var(--reinspect-prism-bg);white-space:pre-wrap;word-break:break-word;border-radius:8px;max-height:180px;margin:0;padding:6px;font-size:11px;line-height:1.3;overflow:auto}.reinspect-prop-function pre code.reinspect-code-block,.reinspect-prop-json-preview pre code.reinspect-code-block,.reinspect-json-editor pre code.reinspect-code-block{color:var(--reinspect-prism-text);font-family:var(--reinspect-font-mono);white-space:inherit;word-break:inherit;display:block}.reinspect-prop-function pre code.reinspect-code-block .token.comment,.reinspect-prop-function pre code.reinspect-code-block .token.prolog,.reinspect-prop-function pre code.reinspect-code-block .token.doctype,.reinspect-prop-function pre code.reinspect-code-block .token.cdata,.reinspect-prop-json-preview pre code.reinspect-code-block .token.comment,.reinspect-prop-json-preview pre code.reinspect-code-block .token.prolog,.reinspect-prop-json-preview pre code.reinspect-code-block .token.doctype,.reinspect-prop-json-preview pre code.reinspect-code-block .token.cdata,.reinspect-json-editor pre code.reinspect-code-block .token.comment,.reinspect-json-editor pre code.reinspect-code-block .token.prolog,.reinspect-json-editor pre code.reinspect-code-block .token.doctype,.reinspect-json-editor pre code.reinspect-code-block .token.cdata{color:var(--reinspect-prism-comment);font-style:italic}.reinspect-prop-function pre code.reinspect-code-block .token.punctuation,.reinspect-prop-json-preview pre code.reinspect-code-block .token.punctuation,.reinspect-json-editor pre code.reinspect-code-block .token.punctuation{color:var(--reinspect-prism-punctuation)}.reinspect-prop-function pre code.reinspect-code-block .token.property,.reinspect-prop-json-preview pre code.reinspect-code-block .token.property,.reinspect-json-editor pre code.reinspect-code-block .token.property{color:var(--reinspect-prism-property)}.reinspect-prop-function pre code.reinspect-code-block .token.string,.reinspect-prop-json-preview pre code.reinspect-code-block .token.string,.reinspect-prop-function pre code.reinspect-code-block .token.char,.reinspect-prop-json-preview pre code.reinspect-code-block .token.char,.reinspect-prop-function pre code.reinspect-code-block .token.regex,.reinspect-prop-json-preview pre code.reinspect-code-block .token.regex,.reinspect-json-editor pre code.reinspect-code-block .token.string,.reinspect-json-editor pre code.reinspect-code-block .token.char,.reinspect-json-editor pre code.reinspect-code-block .token.regex{color:var(--reinspect-prism-string)}.reinspect-prop-function pre code.reinspect-code-block .token.number,.reinspect-prop-json-preview pre code.reinspect-code-block .token.number,.reinspect-json-editor pre code.reinspect-code-block .token.number{color:var(--reinspect-prism-number)}.reinspect-prop-function pre code.reinspect-code-block .token.boolean,.reinspect-prop-json-preview pre code.reinspect-code-block .token.boolean,.reinspect-json-editor pre code.reinspect-code-block .token.boolean{color:var(--reinspect-prism-boolean)}.reinspect-prop-function pre code.reinspect-code-block .token.keyword,.reinspect-prop-json-preview pre code.reinspect-code-block .token.keyword,.reinspect-json-editor pre code.reinspect-code-block .token.keyword{color:var(--reinspect-prism-keyword)}.reinspect-prop-function pre code.reinspect-code-block .token.function,.reinspect-prop-json-preview pre code.reinspect-code-block .token.function,.reinspect-prop-function pre code.reinspect-code-block .token.function-variable,.reinspect-prop-json-preview pre code.reinspect-code-block .token.function-variable,.reinspect-json-editor pre code.reinspect-code-block .token.function,.reinspect-json-editor pre code.reinspect-code-block .token.function-variable{color:var(--reinspect-prism-function)}.reinspect-prop-function pre code.reinspect-code-block .token.operator,.reinspect-prop-json-preview pre code.reinspect-code-block .token.operator,.reinspect-json-editor pre code.reinspect-code-block .token.operator{color:var(--reinspect-prism-operator)}.reinspect-prop-function pre code.reinspect-code-block .token.constant,.reinspect-prop-json-preview pre code.reinspect-code-block .token.constant,.reinspect-json-editor pre code.reinspect-code-block .token.constant{color:var(--reinspect-prism-constant)}@media (width<=520px){.reinspect-props-row{grid-template-columns:1fr;gap:4px}.reinspect-prop-main{grid-template-columns:1fr;gap:6px}.reinspect-prop-actions{flex-wrap:wrap;justify-content:flex-start}}.reinspect-modal-backdrop{z-index:2147483647;background:var(--reinspect-overlay-backdrop);place-items:center;padding:20px;display:grid;position:fixed;inset:0}.reinspect-modal{border:1px solid var(--reinspect-menu-border);background:var(--reinspect-menu-bg);width:min(560px,100%);box-shadow:var(--reinspect-shadow-modal);border-radius:12px;gap:8px;padding:12px;display:grid}.reinspect-modal textarea,.reinspect-props-panel textarea{border:1px solid var(--reinspect-menu-border);background:var(--reinspect-menu-bg);width:100%;color:var(--reinspect-menu-text);font-size:12px;font-family:var(--reinspect-font-mono);resize:vertical;border-radius:8px;padding:8px}.reinspect-modal textarea::placeholder,.reinspect-props-panel textarea::placeholder{color:var(--reinspect-menu-text-soft);opacity:1}.reinspect-toast{z-index:2147483647;border:1px solid var(--reinspect-menu-border-strong);background:color-mix(in oklch, var(--reinspect-menu-bg) 88%, var(--reinspect-brand-500));width:min(460px,100vw - 20px);box-shadow:var(--reinspect-shadow-modal);border-radius:12px;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:10px 12px;display:grid;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.reinspect-toast-copy{gap:3px;display:grid}.reinspect-toast-title{color:var(--reinspect-menu-text);margin:0;font-size:12px;font-weight:700}.reinspect-toast-description{color:var(--reinspect-menu-text-muted);margin:0;font-size:11px}.reinspect-toast-undo,.reinspect-toast-dismiss{border:1px solid var(--reinspect-menu-border);background:var(--reinspect-menu-bg);color:var(--reinspect-menu-text);cursor:pointer;border-radius:8px}.reinspect-toast-undo{padding:6px 10px;font-size:11px;font-weight:700}.reinspect-toast-dismiss{place-items:center;width:28px;height:28px;padding:0;font-size:16px;line-height:1;display:grid}.reinspect-toast-undo:hover,.reinspect-toast-dismiss:hover{border-color:var(--reinspect-brand-400);background:var(--reinspect-brand-soft)}.reinspect-toast-undo:focus-visible,.reinspect-toast-dismiss:focus-visible{outline:2px solid var(--reinspect-focus-ring);outline-offset:1px}.reinspect-error{color:var(--reinspect-semantic-error);margin:0;font-size:12px}.reinspect-floating-toggle{z-index:2147483647;border:1px solid color-mix(in oklch, var(--reinspect-brand-500) 56%, var(--reinspect-menu-border-strong));background:var(--reinspect-brand-soft);color:var(--reinspect-interactive-text-active);letter-spacing:.03em;cursor:pointer;border-radius:999px;padding:10px 15px;font-size:13px;font-weight:650;transition:background-color .14s,border-color .14s,box-shadow .14s;position:fixed;bottom:18px;right:18px;box-shadow:0 10px 18px -12px oklch(25.5% .02 248/.4),0 2px 8px -6px oklch(25.5% .02 248/.34)}.reinspect-floating-toggle:hover{background:var(--reinspect-brand-soft-hover);border-color:var(--reinspect-brand-500)}.reinspect-floating-toggle:focus-visible{outline:2px solid var(--reinspect-focus-ring);outline-offset:2px}.reinspect-floating-root{z-index:2147483645;position:fixed;bottom:18px;right:18px}.reinspect-floating-root .reinspect-floating-toggle{position:static}.reinspect-settings-menu{border:1px solid var(--reinspect-menu-border);background:var(--reinspect-menu-bg);width:min(420px,100vw - 22px);max-height:min(560px,78vh);box-shadow:var(--reinspect-shadow-modal);border-radius:12px;gap:8px;padding:10px;display:grid;position:absolute;bottom:calc(100% + 10px);right:0;overflow:auto}.reinspect-settings-header-row{grid-template-columns:1fr auto;align-items:center;gap:8px;display:grid}.reinspect-settings-title{color:var(--reinspect-menu-text);margin:0;font-size:14px;font-weight:760}.reinspect-settings-tabs{grid-template-columns:1fr 1fr;gap:6px;display:grid}.reinspect-settings-tabs button{border:1px solid var(--reinspect-interactive-border);background:var(--reinspect-interactive-bg);color:var(--reinspect-interactive-text);cursor:pointer;border-radius:8px;padding:6px 8px;font-size:12px;font-weight:600;transition:border-color .12s ease-out,background-color .12s ease-out,color .12s ease-out}.reinspect-settings-tabs button:hover{border-color:var(--reinspect-interactive-border-hover);background:var(--reinspect-interactive-bg-hover)}.reinspect-settings-tabs button[data-state=active]{border-color:var(--reinspect-interactive-border-active);background:var(--reinspect-interactive-bg-active);color:var(--reinspect-interactive-text-active)}.reinspect-settings-tab-panel{gap:9px;display:grid}.reinspect-settings-toggle-row{color:var(--reinspect-menu-text);grid-template-columns:1fr auto;align-items:center;gap:8px;font-size:12px;display:grid}.reinspect-settings-select-row{gap:5px;font-size:12px;display:grid}.reinspect-settings-select-row select{border:1px solid var(--reinspect-menu-border);background:var(--reinspect-menu-bg);width:100%;color:var(--reinspect-menu-text);border-radius:8px;padding:6px 8px;font-size:12px}.reinspect-settings-toggle-label{font-weight:600;line-height:1.35}.reinspect-settings-inline-switch{grid-template-columns:1fr auto;align-items:center;gap:8px;margin:0;display:grid}.reinspect-settings-toggle-row input[type=checkbox]{width:16px;height:16px}.reinspect-inline-hint{border:1px solid var(--reinspect-menu-border);width:14px;height:14px;color:var(--reinspect-menu-text-soft);vertical-align:text-top;cursor:help;border-radius:999px;justify-content:center;align-items:center;font-size:10px;font-weight:700;display:inline-flex}.reinspect-settings-divider{background:var(--reinspect-menu-border-subtle);height:1px}.reinspect-setting-block{gap:6px;display:grid}.reinspect-macro-setting{border:1px solid var(--reinspect-menu-border-subtle);background:var(--reinspect-menu-surface);border-radius:8px;padding:8px}.reinspect-macro-setting .reinspect-setting-note{margin:0}.reinspect-macro-setting .reinspect-setting-note code{font-family:var(--reinspect-font-mono);font-size:11px}.reinspect-macro-setting .reinspect-inline-controls{grid-template-columns:repeat(2,minmax(0,1fr))}.reinspect-macro-setting .reinspect-inline-controls button[data-state=active]{border-color:var(--reinspect-brand-600);background:var(--reinspect-brand-soft-strong);color:var(--reinspect-brand-700)}.reinspect-apply-button{border:1px solid var(--reinspect-brand-500);background:var(--reinspect-brand-500);color:var(--reinspect-on-brand);cursor:pointer;border-radius:8px;padding:6px 8px;font-size:12px;font-weight:600}.reinspect-apply-button:hover:not(:disabled){border-color:var(--reinspect-brand-600);background:var(--reinspect-brand-600)}.reinspect-apply-button:focus-visible{outline:2px solid var(--reinspect-focus-ring);outline-offset:1px}.reinspect-apply-button:disabled{opacity:.4;cursor:default}.reinspect-filter-title{color:var(--reinspect-menu-text);margin:0;font-size:12px;font-weight:600}.reinspect-setting-empty-state{color:var(--reinspect-menu-text-muted);margin:0;font-size:12px}.reinspect-inspect-mode-actions{grid-template-columns:auto 1fr;align-items:center;gap:8px;display:grid}.reinspect-filter-section{border-top:1px solid var(--reinspect-menu-border-subtle);gap:6px;padding-top:8px;display:grid}.reinspect-filter-row-header{grid-template-columns:1fr auto;align-items:center;gap:6px;display:grid}.reinspect-filter-toolbar{grid-template-columns:1fr auto auto auto auto;align-items:center;gap:6px;display:grid;position:relative}.reinspect-filter-search-icon{width:14px;height:14px;color:var(--reinspect-menu-text-soft);pointer-events:none;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.reinspect-filter-search-icon svg{width:100%;height:100%;display:block}.reinspect-filter-search-input{border:1px solid var(--reinspect-menu-border);background:var(--reinspect-menu-bg);width:100%;color:var(--reinspect-menu-text);font-size:12px;font-family:var(--reinspect-font-mono);border-radius:8px;padding:5px 8px 5px 31px}.reinspect-filter-search-input:focus-visible{outline:2px solid var(--reinspect-focus-ring);outline-offset:0}.reinspect-filter-add-button{border:1px solid var(--reinspect-brand-500);background:var(--reinspect-brand-500);color:var(--reinspect-on-brand);cursor:pointer;border-radius:8px;padding:5px 10px;font-size:11px}.reinspect-filter-add-button:hover:not(:disabled){border-color:var(--reinspect-brand-600);background:var(--reinspect-brand-600)}.reinspect-filter-add-button:focus-visible{outline:2px solid var(--reinspect-focus-ring);outline-offset:1px}.reinspect-filter-add-button:disabled{opacity:.4;cursor:default}.reinspect-filter-modifier{border:1px solid var(--reinspect-interactive-border);background:var(--reinspect-interactive-bg);color:var(--reinspect-interactive-text);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:3px;padding:5px 7px;font-size:11px;font-weight:600;display:inline-flex}.reinspect-filter-modifier:hover{border-color:var(--reinspect-interactive-border-hover);background:var(--reinspect-interactive-bg-hover)}.reinspect-filter-modifier[data-state=active]{border-color:var(--reinspect-interactive-border-active);background:var(--reinspect-interactive-bg-active);color:var(--reinspect-interactive-text-active)}.reinspect-filter-chip-list{flex-wrap:wrap;gap:6px;display:flex}.reinspect-filter-chip{border:1px solid var(--reinspect-menu-border);background:var(--reinspect-menu-bg);color:var(--reinspect-menu-text);border-radius:999px;align-items:center;gap:4px;padding:2px 7px;font-size:11px;display:inline-flex}.reinspect-filter-chip code{font-family:var(--reinspect-font-mono);font-size:11px}.reinspect-filter-chip-remove{color:var(--reinspect-menu-text-soft);cursor:pointer;background:0 0;border:none;padding:0;font-size:14px;line-height:1}.reinspect-filter-clear-button{border:1px solid var(--reinspect-menu-border);background:var(--reinspect-menu-bg);color:var(--reinspect-menu-text);cursor:pointer;border-radius:8px;padding:2px 7px;font-size:11px}.reinspect-filter-clear-button:disabled{opacity:.45;cursor:default}.reinspect-switch-button{border:1px solid var(--reinspect-menu-border-strong);background:var(--reinspect-menu-surface-stronger);cursor:pointer;border-radius:999px;width:34px;height:20px;padding:0;transition:background-color .12s,border-color .12s;display:inline-block;position:relative}.reinspect-switch-button:after{content:\"\";background:var(--reinspect-menu-bg);border-radius:999px;width:16px;height:16px;transition:transform .12s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px oklch(25.5% .02 248/.2)}.reinspect-switch-button[data-state=on]{background:var(--reinspect-brand-500);border-color:var(--reinspect-brand-600)}.reinspect-switch-button[data-state=on]:after{transform:translate(14px)}.reinspect-switch-button:focus-visible{outline:2px solid var(--reinspect-focus-ring);outline-offset:1px}.reinspect-component-settings-list{gap:6px;display:grid}.reinspect-component-setting-row{border:1px solid var(--reinspect-menu-border-subtle);background:var(--reinspect-menu-surface);color:var(--reinspect-menu-text);border-radius:8px;grid-template-columns:1fr auto;align-items:center;gap:8px;padding:6px 8px;font-size:12px;display:grid}.reinspect-component-setting-row input[type=checkbox]{width:15px;height:15px}", A = "reinspect-runtime-styles";
7
+ function j() {
8
8
  return typeof document > "u" ? null : document;
9
9
  }
10
- function b(e) {
10
+ function M(e) {
11
11
  if (!e) return;
12
- let t = y();
13
- if (!t || t.getElementById(v)) return;
12
+ let t = j();
13
+ if (!t || t.getElementById(A)) return;
14
14
  let n = t.createElement("style");
15
- n.id = v, n.textContent = e, (t.head ?? t.documentElement).appendChild(n);
15
+ n.id = A, n.textContent = e, (t.head ?? t.documentElement).appendChild(n);
16
16
  }
17
17
  //#endregion
18
18
  //#region src/reinspect/core/state.ts
19
- function x(e) {
19
+ function N(e) {
20
20
  let t = {};
21
21
  for (let n of e) t[n] = !0;
22
22
  return t;
23
23
  }
24
- function S(e) {
24
+ function P(e) {
25
25
  return {
26
26
  isActive: e.startActive,
27
27
  inspectMode: e.inspectMode,
28
28
  pendingInspectMode: e.inspectMode,
29
+ inspectWhitelist: e.inspectWhitelist,
30
+ inspectBlacklist: e.inspectBlacklist,
29
31
  renderCounterMode: e.renderCounters,
30
- renderCountComponents: x(e.countRendersForComponents),
32
+ propsSerializationMode: e.propsSerializationMode,
33
+ menuTheme: e.menuTheme,
34
+ menuOpenGesture: e.menuOpenGesture,
35
+ renderCountComponents: N(e.countRendersForComponents),
31
36
  overrides: {}
32
37
  };
33
38
  }
34
- function C(e, t) {
39
+ function F(e, t) {
35
40
  if (e === t) return !0;
36
41
  if (e.length !== t.length) return !1;
37
42
  for (let n = 0; n < e.length; n += 1) if (e[n] !== t[n]) return !1;
38
43
  return !0;
39
44
  }
40
- function w(e, t) {
45
+ function I(e, t) {
46
+ return e.regex === t.regex && e.wholeWord === t.wholeWord && e.matchCase === t.matchCase && F(e.patterns, t.patterns);
47
+ }
48
+ function L(e, t) {
49
+ return e.mode === t.mode && e.modifiers.ctrl === t.modifiers.ctrl && e.modifiers.alt === t.modifiers.alt && e.modifiers.shift === t.modifiers.shift && e.modifiers.meta === t.modifiers.meta;
50
+ }
51
+ function R(e, t) {
41
52
  switch (t.type) {
42
53
  case "hydrate-config": {
43
- let n = x(t.config.countRendersForComponents), r = {
54
+ let n = N(t.config.countRendersForComponents), r = {
44
55
  ...e,
45
56
  isActive: t.config.enabled ? e.isActive : !1,
46
57
  inspectMode: t.config.inspectMode,
47
58
  pendingInspectMode: t.config.inspectMode,
59
+ inspectWhitelist: t.config.inspectWhitelist,
60
+ inspectBlacklist: t.config.inspectBlacklist,
48
61
  renderCounterMode: t.config.renderCounters,
62
+ propsSerializationMode: t.config.propsSerializationMode,
63
+ menuTheme: t.config.menuTheme,
64
+ menuOpenGesture: t.config.menuOpenGesture,
49
65
  renderCountComponents: n
50
66
  };
51
- return r.isActive === e.isActive && r.inspectMode === e.inspectMode && r.pendingInspectMode === e.pendingInspectMode && r.renderCounterMode === e.renderCounterMode && C(Object.keys(r.renderCountComponents), Object.keys(e.renderCountComponents)) ? e : r;
67
+ return r.isActive === e.isActive && r.inspectMode === e.inspectMode && r.pendingInspectMode === e.pendingInspectMode && I(r.inspectWhitelist, e.inspectWhitelist) && I(r.inspectBlacklist, e.inspectBlacklist) && r.renderCounterMode === e.renderCounterMode && r.propsSerializationMode === e.propsSerializationMode && r.menuTheme === e.menuTheme && L(r.menuOpenGesture, e.menuOpenGesture) && F(Object.keys(r.renderCountComponents), Object.keys(e.renderCountComponents)) ? e : r;
52
68
  }
53
69
  case "set-is-active": return e.isActive === t.value ? e : {
54
70
  ...e,
55
71
  isActive: t.value
56
72
  };
57
- case "set-pending-inspect-mode": return e.pendingInspectMode === t.value ? e : {
73
+ case "set-pending-inspect-mode": return e.pendingInspectMode === t.value && e.inspectMode === t.value ? e : {
58
74
  ...e,
75
+ inspectMode: t.value,
59
76
  pendingInspectMode: t.value
60
77
  };
78
+ case "set-inspect-whitelist": return I(e.inspectWhitelist, t.value) ? e : {
79
+ ...e,
80
+ inspectWhitelist: t.value
81
+ };
82
+ case "set-inspect-blacklist": return I(e.inspectBlacklist, t.value) ? e : {
83
+ ...e,
84
+ inspectBlacklist: t.value
85
+ };
61
86
  case "set-render-counter-mode": return e.renderCounterMode === t.value ? e : {
62
87
  ...e,
63
88
  renderCounterMode: t.value
64
89
  };
90
+ case "set-props-serialization-mode": return e.propsSerializationMode === t.value ? e : {
91
+ ...e,
92
+ propsSerializationMode: t.value
93
+ };
94
+ case "set-menu-theme": return e.menuTheme === t.value ? e : {
95
+ ...e,
96
+ menuTheme: t.value
97
+ };
98
+ case "set-menu-open-gesture": return L(e.menuOpenGesture, t.value) ? e : {
99
+ ...e,
100
+ menuOpenGesture: t.value
101
+ };
65
102
  case "set-render-counting-for-component": {
66
103
  if (t.enabled) return e.renderCountComponents[t.componentName] ? e : {
67
104
  ...e,
@@ -100,267 +137,710 @@ function w(e, t) {
100
137
  }
101
138
  //#endregion
102
139
  //#region src/reinspect/useReinspect.ts
103
- function T() {
104
- let e = l(r);
140
+ function z() {
141
+ let e = x(v);
105
142
  if (!e) throw Error("useReinspect must be used within ReinspectProvider");
106
143
  return e;
107
144
  }
108
145
  //#endregion
109
146
  //#region src/reinspect/react/provider.tsx
110
- var E = "Controls render counting for wrapped components.", D = "Off disables global counting. Attempts, commits, and both capture rerenders after initial mount.", O = "Controls which components are automatically discoverable by Reinspect.", k = "Only wrapped components uses explicit withReinspect wrappers only. All 1st-party components auto-discovers components under your source tree. All components also attempts dependency components (with safety skips).";
111
- function A({ children: n, config: a }) {
112
- let s = d(() => t(a), [a]), [l, p] = f(w, s, S);
113
- u(() => {
114
- p({
147
+ var B = /* @__PURE__ */ new Map();
148
+ function V(e) {
149
+ let t = B.get(e);
150
+ if (t !== void 0) return t;
151
+ let n = 0;
152
+ for (let t = 0; t < e.length; t += 1) n = Math.imul(31, n) + e.charCodeAt(t), n |= 0;
153
+ let r = n >>> 0;
154
+ return B.set(e, r), r;
155
+ }
156
+ function H(e) {
157
+ let t = V(e);
158
+ return `hsl(${t % 360} ${60 + (t >>> 8) % 14}% ${52 + (t >>> 16) % 8}%)`;
159
+ }
160
+ function U({ label: e, description: t }) {
161
+ return /* @__PURE__ */ D("span", {
162
+ className: "reinspect-inline-hint",
163
+ title: t,
164
+ "aria-label": t,
165
+ children: e
166
+ });
167
+ }
168
+ function W(e) {
169
+ return e.split(/[\r\n,]+/g).map((e) => e.trim()).filter((e) => e.length > 0);
170
+ }
171
+ function G(e, t) {
172
+ let n = [...e], r = new Set(e);
173
+ for (let e of t) r.has(e) || (r.add(e), n.push(e));
174
+ return n;
175
+ }
176
+ function K(e) {
177
+ let t = [];
178
+ return e.ctrl && t.push("Ctrl"), e.alt && t.push("Alt"), e.shift && t.push("Shift"), e.meta && t.push("Meta"), t.join(" + ");
179
+ }
180
+ function q(e) {
181
+ return e.ctrl || e.alt || e.shift || e.meta;
182
+ }
183
+ function J(e) {
184
+ return {
185
+ ctrl: e.ctrlKey,
186
+ alt: e.altKey,
187
+ shift: e.shiftKey,
188
+ meta: e.metaKey
189
+ };
190
+ }
191
+ function Y({ title: e, info: t, filter: n, setFilter: r, invalidPatterns: i, patternsInputTestId: a, regexTestId: o, wholeWordTestId: s, matchCaseTestId: c, invalidMessageTestId: l }) {
192
+ let [u, d] = E(""), f = T([]), p = b(() => {
193
+ W(u).length !== 0 && (f.current = [], d(""));
194
+ }, [u]), m = b((e) => {
195
+ r((t) => ({
196
+ ...t,
197
+ patterns: t.patterns.filter((t) => t !== e)
198
+ }));
199
+ }, [r]), h = b(() => {
200
+ r((e) => ({
201
+ ...e,
202
+ patterns: []
203
+ })), f.current = [], d("");
204
+ }, [r]), g = (e) => {
205
+ e.key === "Enter" && (e.preventDefault(), p());
206
+ }, _ = (e) => {
207
+ let t = W(e);
208
+ d(e), r((e) => {
209
+ let n = e.patterns.filter((e) => !f.current.includes(e));
210
+ return {
211
+ ...e,
212
+ patterns: G(n, t)
213
+ };
214
+ }), f.current = t;
215
+ };
216
+ return /* @__PURE__ */ O("section", {
217
+ className: "reinspect-filter-section",
218
+ children: [
219
+ /* @__PURE__ */ O("div", {
220
+ className: "reinspect-filter-row-header",
221
+ children: [/* @__PURE__ */ O("p", {
222
+ className: "reinspect-filter-title",
223
+ children: [
224
+ e,
225
+ " ",
226
+ /* @__PURE__ */ D(U, {
227
+ label: "?",
228
+ description: t
229
+ })
230
+ ]
231
+ }), /* @__PURE__ */ D("button", {
232
+ type: "button",
233
+ className: "reinspect-filter-clear-button",
234
+ onClick: h,
235
+ disabled: n.patterns.length === 0,
236
+ "data-testid": `${a}-clear`,
237
+ children: "Clear"
238
+ })]
239
+ }),
240
+ /* @__PURE__ */ O("div", {
241
+ className: "reinspect-filter-toolbar",
242
+ children: [
243
+ /* @__PURE__ */ D("span", {
244
+ className: "reinspect-filter-search-icon",
245
+ "aria-hidden": "true",
246
+ children: /* @__PURE__ */ D("svg", {
247
+ viewBox: "0 0 24 24",
248
+ focusable: "false",
249
+ children: /* @__PURE__ */ D("path", {
250
+ d: "M10.5 3a7.5 7.5 0 015.92 12.1l4.24 4.23a1 1 0 01-1.42 1.42l-4.23-4.24A7.5 7.5 0 1110.5 3zm0 2a5.5 5.5 0 100 11 5.5 5.5 0 000-11z",
251
+ fill: "currentColor"
252
+ })
253
+ })
254
+ }),
255
+ /* @__PURE__ */ D("input", {
256
+ "data-testid": a,
257
+ className: "reinspect-filter-search-input",
258
+ type: "search",
259
+ "aria-label": `${e} patterns`,
260
+ value: u,
261
+ placeholder: `Add ${e.toLowerCase()} pattern`,
262
+ onChange: (e) => _(e.currentTarget.value),
263
+ onKeyDown: g
264
+ }),
265
+ /* @__PURE__ */ D("button", {
266
+ type: "button",
267
+ className: "reinspect-filter-modifier",
268
+ "data-state": n.regex ? "active" : "idle",
269
+ "data-testid": o,
270
+ title: "Regex",
271
+ "aria-label": `${e} regex modifier`,
272
+ onClick: () => r((e) => ({
273
+ ...e,
274
+ regex: !e.regex
275
+ })),
276
+ children: ".*"
277
+ }),
278
+ /* @__PURE__ */ D("button", {
279
+ type: "button",
280
+ className: "reinspect-filter-modifier",
281
+ "data-state": n.wholeWord ? "active" : "idle",
282
+ "data-testid": s,
283
+ title: "Whole word",
284
+ "aria-label": `${e} whole-word modifier`,
285
+ onClick: () => r((e) => ({
286
+ ...e,
287
+ wholeWord: !e.wholeWord
288
+ })),
289
+ children: "W"
290
+ }),
291
+ /* @__PURE__ */ D("button", {
292
+ type: "button",
293
+ className: "reinspect-filter-modifier",
294
+ "data-state": n.matchCase ? "active" : "idle",
295
+ "data-testid": c,
296
+ title: "Match case",
297
+ "aria-label": `${e} case-sensitive modifier`,
298
+ onClick: () => r((e) => ({
299
+ ...e,
300
+ matchCase: !e.matchCase
301
+ })),
302
+ children: "Aa"
303
+ }),
304
+ /* @__PURE__ */ D("button", {
305
+ type: "button",
306
+ className: "reinspect-filter-add-button",
307
+ onClick: p,
308
+ disabled: W(u).length === 0,
309
+ "data-testid": `${a}-add`,
310
+ children: "Add"
311
+ })
312
+ ]
313
+ }),
314
+ n.patterns.length > 0 ? /* @__PURE__ */ D("div", {
315
+ className: "reinspect-filter-chip-list",
316
+ children: n.patterns.map((e) => /* @__PURE__ */ O("span", {
317
+ className: "reinspect-filter-chip",
318
+ children: [/* @__PURE__ */ D("code", { children: e }), /* @__PURE__ */ D("button", {
319
+ type: "button",
320
+ className: "reinspect-filter-chip-remove",
321
+ "aria-label": `Remove ${e}`,
322
+ onClick: () => m(e),
323
+ children: "×"
324
+ })]
325
+ }, e))
326
+ }) : /* @__PURE__ */ D("p", {
327
+ className: "reinspect-setting-empty-state",
328
+ children: "No patterns configured."
329
+ }),
330
+ i.length > 0 ? /* @__PURE__ */ O("p", {
331
+ className: "reinspect-error",
332
+ "data-testid": l,
333
+ children: ["Invalid regex patterns ignored: ", i.join(", ")]
334
+ }) : null
335
+ ]
336
+ });
337
+ }
338
+ function X({ children: n, config: r }) {
339
+ let l = C(() => _(r), [r]), d = T({}), [p, m] = w(R, l, P);
340
+ S(() => {
341
+ m({
115
342
  type: "hydrate-config",
116
- config: s
343
+ config: l
117
344
  });
118
- }, [s]);
119
- let m = c((e) => {
120
- p({
345
+ }, [l]);
346
+ let h = b((e) => {
347
+ m({
121
348
  type: "set-is-active",
122
- value: typeof e == "function" ? e(l.isActive) : e
349
+ value: typeof e == "function" ? e(p.isActive) : e
123
350
  });
124
- }, [l.isActive]), _ = c((e) => {
125
- p({
351
+ }, [p.isActive]), g = b((e) => {
352
+ let t = typeof e == "function" ? e(p.pendingInspectMode) : e;
353
+ m({
126
354
  type: "set-pending-inspect-mode",
127
- value: typeof e == "function" ? e(l.pendingInspectMode) : e
128
- });
129
- }, [l.pendingInspectMode]), v = c((e) => {
130
- p({
355
+ value: t
356
+ }), f(t);
357
+ }, [p.pendingInspectMode]), y = b((e) => {
358
+ let t = i(typeof e == "function" ? e(p.inspectWhitelist) : e);
359
+ m({
360
+ type: "set-inspect-whitelist",
361
+ value: t
362
+ }), u(t);
363
+ }, [p.inspectWhitelist]), x = b((e) => {
364
+ let t = i(typeof e == "function" ? e(p.inspectBlacklist) : e);
365
+ m({
366
+ type: "set-inspect-blacklist",
367
+ value: t
368
+ }), a(t);
369
+ }, [p.inspectBlacklist]), E = b((e) => {
370
+ m({
131
371
  type: "set-render-counter-mode",
132
- value: typeof e == "function" ? e(l.renderCounterMode) : e
372
+ value: typeof e == "function" ? e(p.renderCounterMode) : e
133
373
  });
134
- }, [l.renderCounterMode]), y = c((e, t, n) => {
135
- p({
374
+ }, [p.renderCounterMode]), k = b((t) => {
375
+ let n = typeof t == "function" ? t(p.propsSerializationMode) : t;
376
+ m({
377
+ type: "set-props-serialization-mode",
378
+ value: n
379
+ }), e(n);
380
+ }, [p.propsSerializationMode]), A = b((e) => {
381
+ let t = typeof e == "function" ? e(p.menuTheme) : e;
382
+ m({
383
+ type: "set-menu-theme",
384
+ value: t
385
+ }), o(t);
386
+ }, [p.menuTheme]), j = b((e) => {
387
+ let t = typeof e == "function" ? e(p.menuOpenGesture) : e;
388
+ m({
389
+ type: "set-menu-open-gesture",
390
+ value: t
391
+ }), s(t);
392
+ }, [p.menuOpenGesture]), M = b((e, t, n) => {
393
+ m({
136
394
  type: "update-override",
137
395
  componentId: e,
138
396
  prop: t,
139
397
  value: n
140
398
  });
141
- }, []), b = c((e, t) => {
142
- p({
399
+ }, []), N = b((e, t) => {
400
+ m({
143
401
  type: "set-render-counting-for-component",
144
402
  componentName: e,
145
403
  enabled: t
146
404
  });
147
- }, []), x = c((e) => l.renderCounterMode !== "off" || !!l.renderCountComponents[e], [l.renderCounterMode, l.renderCountComponents]), C = l.pendingInspectMode !== l.inspectMode, T = c(() => {
148
- C && (e(l.pendingInspectMode), o());
149
- }, [C, l.pendingInspectMode]), E = c((e) => i(e, s.palette), [s.palette]), D = d(() => ({
150
- config: s,
151
- isActive: s.enabled && l.isActive,
152
- setIsActive: m,
153
- inspectMode: l.inspectMode,
154
- pendingInspectMode: l.pendingInspectMode,
155
- setPendingInspectMode: _,
156
- hasPendingInspectModeChange: C,
157
- applyInspectMode: T,
158
- renderCounterMode: l.renderCounterMode,
159
- setRenderCounterMode: v,
160
- renderCountComponents: l.renderCountComponents,
161
- setRenderCountingForComponent: b,
162
- isRenderCountingEnabledFor: x,
163
- overrides: l.overrides,
164
- updateOverride: y,
165
- getBorderColor: E
405
+ }, []), F = b((e) => p.renderCounterMode !== "off" || !!p.renderCountComponents[e], [p.renderCounterMode, p.renderCountComponents]), I = p.pendingInspectMode !== p.inspectMode, L = b(() => {}, []), z = C(() => c(p.inspectWhitelist), [p.inspectWhitelist]), B = C(() => c(p.inspectBlacklist), [p.inspectBlacklist]), V = z.invalidPatterns, U = B.invalidPatterns, W = b((e) => t(e, z, B), [z, B]), G = b((e) => {
406
+ let t = d.current[e];
407
+ if (t) return t;
408
+ let n = H(e);
409
+ return d.current[e] = n, n;
410
+ }, []), K = C(() => ({
411
+ config: l,
412
+ isActive: l.enabled && p.isActive,
413
+ setIsActive: h,
414
+ inspectMode: p.inspectMode,
415
+ pendingInspectMode: p.pendingInspectMode,
416
+ setPendingInspectMode: g,
417
+ hasPendingInspectModeChange: I,
418
+ applyInspectMode: L,
419
+ inspectWhitelist: p.inspectWhitelist,
420
+ setInspectWhitelist: y,
421
+ inspectWhitelistInvalidPatterns: V,
422
+ inspectBlacklist: p.inspectBlacklist,
423
+ setInspectBlacklist: x,
424
+ inspectBlacklistInvalidPatterns: U,
425
+ isComponentInspectableByFilters: W,
426
+ renderCounterMode: p.renderCounterMode,
427
+ setRenderCounterMode: E,
428
+ propsSerializationMode: p.propsSerializationMode,
429
+ setPropsSerializationMode: k,
430
+ menuTheme: p.menuTheme,
431
+ setMenuTheme: A,
432
+ menuOpenGesture: p.menuOpenGesture,
433
+ setMenuOpenGesture: j,
434
+ renderCountComponents: p.renderCountComponents,
435
+ setRenderCountingForComponent: N,
436
+ isRenderCountingEnabledFor: F,
437
+ overrides: p.overrides,
438
+ updateOverride: M,
439
+ getColor: G
166
440
  }), [
167
- s,
168
- l.isActive,
169
- m,
170
- l.inspectMode,
171
- l.pendingInspectMode,
172
- _,
173
- C,
174
- T,
175
- l.renderCounterMode,
176
- v,
177
- l.renderCountComponents,
178
- b,
179
- x,
180
- l.overrides,
441
+ l,
442
+ p.isActive,
443
+ h,
444
+ p.inspectMode,
445
+ p.pendingInspectMode,
446
+ g,
447
+ I,
448
+ L,
449
+ p.inspectWhitelist,
181
450
  y,
182
- E
451
+ V,
452
+ p.inspectBlacklist,
453
+ x,
454
+ U,
455
+ W,
456
+ p.renderCounterMode,
457
+ E,
458
+ p.propsSerializationMode,
459
+ k,
460
+ p.menuTheme,
461
+ A,
462
+ p.menuOpenGesture,
463
+ j,
464
+ p.renderCountComponents,
465
+ N,
466
+ F,
467
+ p.overrides,
468
+ M,
469
+ G
183
470
  ]);
184
- return /* @__PURE__ */ g(r.Provider, {
185
- value: D,
186
- children: [n, s.enabled && s.showFloatingToggle ? /* @__PURE__ */ h(j, {}) : null]
471
+ return /* @__PURE__ */ O(v.Provider, {
472
+ value: K,
473
+ children: [n, l.enabled && l.showFloatingToggle ? /* @__PURE__ */ D(Z, {}) : null]
187
474
  });
188
475
  }
189
- function j() {
190
- let { config: e, isActive: t, setIsActive: r, inspectMode: i, pendingInspectMode: o, setPendingInspectMode: s, hasPendingInspectModeChange: c, applyInspectMode: l, renderCounterMode: d, setRenderCounterMode: f } = T(), [_, v] = m(!1), y = p(null);
191
- return u(() => {
192
- if (!_) return;
476
+ function Z() {
477
+ let { config: e, isActive: t, setIsActive: i, pendingInspectMode: a, setPendingInspectMode: o, inspectWhitelist: s, setInspectWhitelist: c, inspectWhitelistInvalidPatterns: u, inspectBlacklist: f, setInspectBlacklist: h, inspectBlacklistInvalidPatterns: _, renderCounterMode: v, setRenderCounterMode: b, propsSerializationMode: x, setPropsSerializationMode: C, menuTheme: w, setMenuTheme: k, menuOpenGesture: A, setMenuOpenGesture: j } = z(), [M, N] = E(!1), [P, F] = E("filter"), [I, L] = E(!1), R = T(null), B = T(null), V = T(null), H = T(!1);
478
+ return S(() => {
479
+ if (!M) return;
193
480
  let e = (e) => {
194
481
  let t = e.target;
195
- t instanceof Node && (y.current?.contains(t) || v(!1));
482
+ t instanceof Node && (B.current?.contains(t) || N(!1));
196
483
  }, t = (e) => {
197
- e.key === "Escape" && v(!1);
484
+ e.key === "Escape" && N(!1);
198
485
  };
199
486
  return document.addEventListener("mousedown", e), document.addEventListener("keydown", t), () => {
200
487
  document.removeEventListener("mousedown", e), document.removeEventListener("keydown", t);
201
488
  };
202
- }, [_]), e.enabled ? /* @__PURE__ */ g("div", {
489
+ }, [M]), S(() => {
490
+ if (!M || !V.current) return;
491
+ let e = V.current;
492
+ y(e);
493
+ let t = (t) => {
494
+ n(t, e);
495
+ };
496
+ return document.addEventListener("keydown", t), () => {
497
+ document.removeEventListener("keydown", t);
498
+ };
499
+ }, [M]), S(() => {
500
+ H.current && !M && R.current?.focus(), H.current = M;
501
+ }, [M]), S(() => {
502
+ if (!I) return;
503
+ let e = (e) => {
504
+ let t = J(e);
505
+ q(t) && (e.preventDefault(), e.stopPropagation(), j((e) => ({
506
+ ...e,
507
+ mode: "modifier-right-click",
508
+ modifiers: t
509
+ })), L(!1));
510
+ };
511
+ return document.addEventListener("keydown", e, !0), () => {
512
+ document.removeEventListener("keydown", e, !0);
513
+ };
514
+ }, [I, j]), e.enabled ? /* @__PURE__ */ O("div", {
203
515
  className: "reinspect-floating-root",
204
- ref: y,
205
- children: [/* @__PURE__ */ h("button", {
516
+ ref: B,
517
+ "data-reinspect-theme": w,
518
+ children: [/* @__PURE__ */ D("button", {
206
519
  type: "button",
520
+ ref: R,
207
521
  className: "reinspect-floating-toggle",
522
+ "data-reinspect-theme": w,
208
523
  "data-testid": "reinspect-floating-toggle",
209
- onClick: () => v((e) => !e),
210
- "aria-expanded": _,
524
+ onClick: () => N((e) => !e),
525
+ "aria-expanded": M,
211
526
  "aria-controls": "reinspect-settings-menu",
212
527
  children: "Reinspect settings"
213
- }), _ ? /* @__PURE__ */ g("div", {
528
+ }), M ? /* @__PURE__ */ O("div", {
214
529
  id: "reinspect-settings-menu",
530
+ ref: V,
215
531
  className: "reinspect-settings-menu",
532
+ "data-reinspect-theme": w,
216
533
  role: "dialog",
534
+ "aria-modal": "true",
217
535
  "aria-label": "Reinspect settings",
536
+ tabIndex: -1,
218
537
  "data-testid": "reinspect-settings-menu",
219
538
  children: [
220
- /* @__PURE__ */ h("p", {
221
- className: "reinspect-settings-title",
222
- children: "Reinspect settings"
539
+ /* @__PURE__ */ O("div", {
540
+ className: "reinspect-settings-header-row",
541
+ children: [/* @__PURE__ */ D("p", {
542
+ className: "reinspect-settings-title",
543
+ children: "Reinspect settings"
544
+ }), /* @__PURE__ */ O("div", {
545
+ className: "reinspect-settings-inline-switch",
546
+ children: [/* @__PURE__ */ D("span", {
547
+ className: "reinspect-settings-toggle-label",
548
+ children: t ? "Enabled" : "Disabled"
549
+ }), /* @__PURE__ */ D("button", {
550
+ type: "button",
551
+ role: "switch",
552
+ "aria-checked": t,
553
+ "aria-label": "Toggle inspector enabled",
554
+ "data-testid": "reinspect-setting-inspector-active",
555
+ className: "reinspect-switch-button",
556
+ "data-state": t ? "on" : "off",
557
+ title: t ? "Disable inspector" : "Enable inspector",
558
+ onClick: () => i(!t)
559
+ })]
560
+ })]
223
561
  }),
224
- /* @__PURE__ */ g("label", {
225
- className: "reinspect-settings-toggle-row",
226
- children: [/* @__PURE__ */ h("span", {
227
- className: "reinspect-settings-toggle-label",
228
- children: "Inspector enabled"
229
- }), /* @__PURE__ */ h("input", {
230
- "data-testid": "reinspect-setting-inspector-active",
231
- type: "checkbox",
232
- checked: t,
233
- onChange: (e) => r(e.currentTarget.checked)
562
+ /* @__PURE__ */ O("div", {
563
+ className: "reinspect-settings-tabs",
564
+ role: "tablist",
565
+ "aria-label": "Reinspect settings categories",
566
+ children: [/* @__PURE__ */ D("button", {
567
+ type: "button",
568
+ role: "tab",
569
+ id: "reinspect-settings-tab-filter",
570
+ "data-testid": "reinspect-settings-tab-filter",
571
+ "data-state": P === "filter" ? "active" : "idle",
572
+ "aria-selected": P === "filter",
573
+ "aria-controls": "reinspect-settings-panel-filter",
574
+ onClick: () => F("filter"),
575
+ children: "Filter"
576
+ }), /* @__PURE__ */ D("button", {
577
+ type: "button",
578
+ role: "tab",
579
+ id: "reinspect-settings-tab-settings",
580
+ "data-testid": "reinspect-settings-tab-settings",
581
+ "data-state": P === "settings" ? "active" : "idle",
582
+ "aria-selected": P === "settings",
583
+ "aria-controls": "reinspect-settings-panel-settings",
584
+ onClick: () => F("settings"),
585
+ children: "Settings"
234
586
  })]
235
587
  }),
236
- /* @__PURE__ */ h("div", { className: "reinspect-settings-divider" }),
237
- /* @__PURE__ */ g("section", {
238
- className: "reinspect-setting-block",
588
+ /* @__PURE__ */ D("div", { className: "reinspect-settings-divider" }),
589
+ P === "filter" ? /* @__PURE__ */ O("div", {
590
+ className: "reinspect-settings-tab-panel",
591
+ role: "tabpanel",
592
+ id: "reinspect-settings-panel-filter",
593
+ "aria-labelledby": "reinspect-settings-tab-filter",
239
594
  children: [
240
- /* @__PURE__ */ g("header", {
241
- className: "reinspect-setting-header",
242
- children: [/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("p", {
243
- className: "reinspect-setting-name",
244
- children: "INSPECT_MODE"
245
- }), /* @__PURE__ */ h("p", {
246
- className: "reinspect-setting-short-description",
247
- children: O
248
- })] }), /* @__PURE__ */ g("span", {
249
- className: "reinspect-tooltip-host",
250
- children: [/* @__PURE__ */ h("button", {
251
- type: "button",
252
- className: "reinspect-tooltip-trigger",
253
- "aria-label": "Explain INSPECT_MODE",
254
- children: "?"
255
- }), /* @__PURE__ */ h("span", {
256
- className: "reinspect-tooltip-content",
257
- role: "tooltip",
258
- children: k
259
- })]
260
- })]
595
+ /* @__PURE__ */ D(Y, {
596
+ title: "Include",
597
+ info: "Only matching component names remain inspectable.",
598
+ filter: s,
599
+ setFilter: c,
600
+ invalidPatterns: u,
601
+ patternsInputTestId: "reinspect-setting-inspect-whitelist-patterns",
602
+ regexTestId: "reinspect-setting-inspect-whitelist-regex",
603
+ wholeWordTestId: "reinspect-setting-inspect-whitelist-whole-word",
604
+ matchCaseTestId: "reinspect-setting-inspect-whitelist-match-case",
605
+ invalidMessageTestId: "reinspect-setting-inspect-whitelist-invalid"
261
606
  }),
262
- /* @__PURE__ */ g("label", {
263
- className: "reinspect-settings-select-row",
264
- children: [/* @__PURE__ */ h("span", {
265
- className: "reinspect-settings-toggle-label",
266
- children: "Inspect Mode"
267
- }), /* @__PURE__ */ g("select", {
268
- "data-testid": "reinspect-setting-inspect-mode",
269
- value: o,
270
- onChange: (e) => {
271
- let t = e.currentTarget.value;
272
- a(t) && s(t);
273
- },
607
+ /* @__PURE__ */ D(Y, {
608
+ title: "Exclude",
609
+ info: "Matching component names are hidden from inspection.",
610
+ filter: f,
611
+ setFilter: h,
612
+ invalidPatterns: _,
613
+ patternsInputTestId: "reinspect-setting-inspect-blacklist-patterns",
614
+ regexTestId: "reinspect-setting-inspect-blacklist-regex",
615
+ wholeWordTestId: "reinspect-setting-inspect-blacklist-whole-word",
616
+ matchCaseTestId: "reinspect-setting-inspect-blacklist-match-case",
617
+ invalidMessageTestId: "reinspect-setting-inspect-blacklist-invalid"
618
+ }),
619
+ /* @__PURE__ */ D("p", {
620
+ className: "reinspect-setting-note",
621
+ children: "Exclude patterns override include patterns."
622
+ }),
623
+ /* @__PURE__ */ D("section", {
624
+ className: "reinspect-setting-block",
625
+ children: /* @__PURE__ */ O("label", {
626
+ className: "reinspect-settings-select-row",
627
+ children: [/* @__PURE__ */ O("span", {
628
+ className: "reinspect-settings-toggle-label",
629
+ children: [
630
+ "Component scope",
631
+ " ",
632
+ /* @__PURE__ */ D(U, {
633
+ label: "?",
634
+ description: "Choose which component groups can be inspected."
635
+ })
636
+ ]
637
+ }), /* @__PURE__ */ O("select", {
638
+ "data-testid": "reinspect-setting-inspect-mode",
639
+ value: a,
640
+ onChange: (e) => {
641
+ let t = e.currentTarget.value;
642
+ d(t) && o(t);
643
+ },
644
+ children: [
645
+ /* @__PURE__ */ D("option", {
646
+ value: "wrapped",
647
+ children: "Only wrapped components"
648
+ }),
649
+ /* @__PURE__ */ D("option", {
650
+ value: "first-party",
651
+ children: "All 1st-party components"
652
+ }),
653
+ /* @__PURE__ */ D("option", {
654
+ value: "all",
655
+ children: "All components"
656
+ })
657
+ ]
658
+ })]
659
+ })
660
+ })
661
+ ]
662
+ }) : /* @__PURE__ */ D("div", {
663
+ className: "reinspect-settings-tab-panel",
664
+ role: "tabpanel",
665
+ id: "reinspect-settings-panel-settings",
666
+ "aria-labelledby": "reinspect-settings-tab-settings",
667
+ children: /* @__PURE__ */ O("section", {
668
+ className: "reinspect-setting-block",
669
+ children: [
670
+ /* @__PURE__ */ O("label", {
671
+ className: "reinspect-settings-select-row",
672
+ children: [/* @__PURE__ */ O("span", {
673
+ className: "reinspect-settings-toggle-label",
674
+ children: [
675
+ "Render counter mode",
676
+ " ",
677
+ /* @__PURE__ */ D(U, {
678
+ label: "?",
679
+ description: "Pick whether render attempts, commits, both, or no counters are shown."
680
+ })
681
+ ]
682
+ }), /* @__PURE__ */ O("select", {
683
+ "data-testid": "reinspect-setting-render-counters",
684
+ value: v,
685
+ onChange: (e) => {
686
+ let t = e.currentTarget.value;
687
+ g(t) && b(t);
688
+ },
689
+ children: [
690
+ /* @__PURE__ */ D("option", {
691
+ value: "off",
692
+ children: "Off"
693
+ }),
694
+ /* @__PURE__ */ D("option", {
695
+ value: "attempts",
696
+ children: "Render attempts"
697
+ }),
698
+ /* @__PURE__ */ D("option", {
699
+ value: "commits",
700
+ children: "Committed renders"
701
+ }),
702
+ /* @__PURE__ */ D("option", {
703
+ value: "both",
704
+ children: "Both"
705
+ })
706
+ ]
707
+ })]
708
+ }),
709
+ /* @__PURE__ */ D("p", {
710
+ className: "reinspect-setting-note",
711
+ children: "Per-component capture can be toggled from each component menu."
712
+ }),
713
+ /* @__PURE__ */ O("label", {
714
+ className: "reinspect-settings-select-row",
715
+ children: [/* @__PURE__ */ O("span", {
716
+ className: "reinspect-settings-toggle-label",
717
+ children: [
718
+ "Menu theme",
719
+ " ",
720
+ /* @__PURE__ */ D(U, {
721
+ label: "?",
722
+ description: "Choose the Reinspect menu appearance."
723
+ })
724
+ ]
725
+ }), /* @__PURE__ */ O("select", {
726
+ "data-testid": "reinspect-setting-menu-theme",
727
+ value: w,
728
+ onChange: (e) => {
729
+ let t = e.currentTarget.value;
730
+ r(t) && k(t);
731
+ },
732
+ children: [/* @__PURE__ */ D("option", {
733
+ value: "light",
734
+ children: "Light"
735
+ }), /* @__PURE__ */ D("option", {
736
+ value: "dark",
737
+ children: "Dark"
738
+ })]
739
+ })]
740
+ }),
741
+ /* @__PURE__ */ O("label", {
742
+ className: "reinspect-settings-select-row",
743
+ children: [/* @__PURE__ */ O("span", {
744
+ className: "reinspect-settings-toggle-label",
745
+ children: [
746
+ "Menu open trigger",
747
+ " ",
748
+ /* @__PURE__ */ D(U, {
749
+ label: "?",
750
+ description: "Choose how to open the inspector menu on components."
751
+ })
752
+ ]
753
+ }), /* @__PURE__ */ O("select", {
754
+ "data-testid": "reinspect-setting-menu-open-trigger",
755
+ value: A.mode,
756
+ onChange: (e) => {
757
+ let t = e.currentTarget.value;
758
+ m(t) && j((e) => ({
759
+ ...e,
760
+ mode: t
761
+ }));
762
+ },
763
+ children: [/* @__PURE__ */ D("option", {
764
+ value: "right-click",
765
+ children: "Right click"
766
+ }), /* @__PURE__ */ D("option", {
767
+ value: "modifier-right-click",
768
+ children: "Right click + modifier macro"
769
+ })]
770
+ })]
771
+ }),
772
+ A.mode === "modifier-right-click" ? /* @__PURE__ */ O("section", {
773
+ className: "reinspect-setting-block reinspect-macro-setting",
274
774
  children: [
275
- /* @__PURE__ */ h("option", {
276
- value: "wrapped",
277
- children: "Only wrapped components"
775
+ /* @__PURE__ */ O("p", {
776
+ className: "reinspect-setting-note",
777
+ "data-testid": "reinspect-setting-menu-open-modifier-label",
778
+ children: [
779
+ "Current macro:",
780
+ " ",
781
+ /* @__PURE__ */ D("code", { children: K(A.modifiers) })
782
+ ]
278
783
  }),
279
- /* @__PURE__ */ h("option", {
280
- value: "first-party",
281
- children: "All 1st-party components"
784
+ /* @__PURE__ */ O("div", {
785
+ className: "reinspect-inline-controls",
786
+ children: [/* @__PURE__ */ D("button", {
787
+ type: "button",
788
+ "data-testid": "reinspect-setting-menu-open-modifier-record",
789
+ onClick: () => {
790
+ L((e) => !e);
791
+ },
792
+ "data-state": I ? "active" : "idle",
793
+ children: I ? "Press modifier keys..." : "Record macro"
794
+ }), /* @__PURE__ */ D("button", {
795
+ type: "button",
796
+ "data-testid": "reinspect-setting-menu-open-modifier-reset",
797
+ onClick: () => j((e) => ({
798
+ ...e,
799
+ modifiers: { ...p }
800
+ })),
801
+ children: "Reset to Shift"
802
+ })]
282
803
  }),
283
- /* @__PURE__ */ h("option", {
284
- value: "all",
285
- children: "All components"
804
+ /* @__PURE__ */ D("p", {
805
+ className: "reinspect-setting-helper-text",
806
+ children: "Hold one or more modifier keys (Ctrl, Alt, Shift, Meta), then press any key to save the macro."
286
807
  })
287
808
  ]
288
- })]
289
- }),
290
- /* @__PURE__ */ h("button", {
291
- type: "button",
292
- className: "reinspect-apply-button",
293
- "data-testid": "reinspect-apply-inspect-mode",
294
- onClick: l,
295
- disabled: !c,
296
- children: "Apply & Reload"
297
- }),
298
- c ? /* @__PURE__ */ h("p", {
299
- className: "reinspect-setting-note",
300
- "data-testid": "reinspect-inspect-mode-reload-note",
301
- children: "Inspect mode changes are applied after reload."
302
- }) : /* @__PURE__ */ g("p", {
303
- className: "reinspect-setting-note",
304
- children: ["Current mode: ", i]
305
- })
306
- ]
307
- }),
308
- /* @__PURE__ */ h("div", { className: "reinspect-settings-divider" }),
309
- /* @__PURE__ */ g("section", {
310
- className: "reinspect-setting-block",
311
- children: [/* @__PURE__ */ g("header", {
312
- className: "reinspect-setting-header",
313
- children: [/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("p", {
314
- className: "reinspect-setting-name",
315
- children: "RENDER_COUNTERS"
316
- }), /* @__PURE__ */ h("p", {
317
- className: "reinspect-setting-short-description",
318
- children: E
319
- })] }), /* @__PURE__ */ g("span", {
320
- className: "reinspect-tooltip-host",
321
- children: [/* @__PURE__ */ h("button", {
322
- type: "button",
323
- className: "reinspect-tooltip-trigger",
324
- "aria-label": "Explain RENDER_COUNTERS",
325
- children: "?"
326
- }), /* @__PURE__ */ h("span", {
327
- className: "reinspect-tooltip-content",
328
- role: "tooltip",
329
- children: D
330
- })]
331
- })]
332
- }), /* @__PURE__ */ g("label", {
333
- className: "reinspect-settings-select-row",
334
- children: [/* @__PURE__ */ h("span", {
335
- className: "reinspect-settings-toggle-label",
336
- children: "Counter mode"
337
- }), /* @__PURE__ */ g("select", {
338
- "data-testid": "reinspect-setting-render-counters",
339
- value: d,
340
- onChange: (e) => {
341
- let t = e.currentTarget.value;
342
- n(t) && f(t);
343
- },
344
- children: [
345
- /* @__PURE__ */ h("option", {
346
- value: "off",
347
- children: "Off"
348
- }),
349
- /* @__PURE__ */ h("option", {
350
- value: "attempts",
351
- children: "Render attempts"
352
- }),
353
- /* @__PURE__ */ h("option", {
354
- value: "commits",
355
- children: "Committed renders"
356
- }),
357
- /* @__PURE__ */ h("option", {
358
- value: "both",
359
- children: "Both"
360
- })
361
- ]
362
- })]
363
- })]
809
+ }) : null,
810
+ /* @__PURE__ */ O("label", {
811
+ className: "reinspect-settings-select-row",
812
+ children: [/* @__PURE__ */ O("span", {
813
+ className: "reinspect-settings-toggle-label",
814
+ children: [
815
+ "Props JSON detail",
816
+ " ",
817
+ /* @__PURE__ */ D(U, {
818
+ label: "?",
819
+ description: "Choose how much data appears in JSON previews and the Raw props editor."
820
+ })
821
+ ]
822
+ }), /* @__PURE__ */ O("select", {
823
+ "data-testid": "reinspect-setting-props-serialization-mode",
824
+ value: x,
825
+ onChange: (e) => {
826
+ let t = e.currentTarget.value;
827
+ l(t) && C(t);
828
+ },
829
+ children: [/* @__PURE__ */ D("option", {
830
+ value: "distilled",
831
+ children: "Distilled (recommended)"
832
+ }), /* @__PURE__ */ D("option", {
833
+ value: "complete",
834
+ children: "Complete (includes internals)"
835
+ })]
836
+ })]
837
+ }),
838
+ /* @__PURE__ */ D("p", {
839
+ className: "reinspect-setting-helper-text",
840
+ children: x === "distilled" ? "Shows app-level props first and hides React internals like _owner." : "Shows the full object graph, including React internals and metadata."
841
+ })
842
+ ]
843
+ })
364
844
  })
365
845
  ]
366
846
  }) : null]
@@ -368,15 +848,15 @@ function j() {
368
848
  }
369
849
  //#endregion
370
850
  //#region src/reinspect/withReinspect.tsx
371
- function M(e, t) {
851
+ function Q(e, t) {
372
852
  let n = {
373
853
  source: "manual",
374
854
  scope: "first-party"
375
855
  };
376
- return t?.name && (n.componentName = t.name), s(e, n);
856
+ return t?.name && (n.componentName = t.name), h(e, n);
377
857
  }
378
858
  //#endregion
379
859
  //#region src/reinspect/index.ts
380
- b(_);
860
+ M(k);
381
861
  //#endregion
382
- export { A as ReinspectProvider, T as useReinspect, M as withReinspect };
862
+ export { X as ReinspectProvider, z as useReinspect, Q as withReinspect };