mesurer-solid 0.2.1-beta.12 → 0.2.1-beta.13

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/index.js CHANGED
@@ -7717,23 +7717,29 @@ function _u(e) {
7717
7717
  }, s = (t) => {
7718
7718
  o?.setEnabled(e.id, t);
7719
7719
  };
7720
- var c = X("div", { class: "msr:relative" }), l = X("div", { class: "msr:grid msr:h-7 msr:w-full msr:grid-cols-[minmax(0,1fr)_28px_34px] msr:items-center msr:hover:bg-ink-50" }), u = X("span", { class: "msr:col-start-1 msr:ml-2 msr:min-w-0 msr:truncate msr:whitespace-nowrap msr:pr-2 msr:text-[11px] msr:text-ink-600" }), d = X("button", {
7720
+ var c = X("div", { class: "msr:relative" }), l = X("div", { class: "msr:grid msr:h-7 msr:w-full msr:grid-cols-[minmax(0,1fr)_28px_34px] msr:items-center msr:hover:bg-ink-50" }), u = X("button", {
7721
7721
  type: "button",
7722
7722
  role: "switch",
7723
7723
  class: "msr:col-start-3 msr:flex msr:h-full msr:w-full msr:items-center msr:justify-end msr:disabled:opacity-45 msr:focus-visible:outline-none msr:focus-visible:shadow-[inset_0_0_0_1px_#0d99ff]",
7724
7724
  onClick: () => s(!e.enabled)
7725
- }), f = X("span", { "aria-hidden": "true" }), p = X("span", { class: "msr:block msr:size-[10px] msr:shrink-0 msr:rounded-full msr:bg-white msr:shadow-sm msr:transition-transform" });
7726
- return Z(c, l), Z(l, u), Z(l, d), Q(u, () => e.label), Q(l, Y(q, {
7725
+ }), d = X("span", { "aria-hidden": "true" }), f = X("span", { class: "msr:block msr:size-[10px] msr:shrink-0 msr:rounded-full msr:bg-white msr:shadow-sm msr:transition-transform" });
7726
+ return Z(c, l), Z(l, u), Q(l, Y(q, {
7727
7727
  get when() {
7728
7728
  return n();
7729
7729
  },
7730
+ get fallback() {
7731
+ var t = X("span", { class: "msr:col-start-1 msr:col-end-3 msr:ml-2 msr:min-w-0 msr:truncate msr:whitespace-nowrap msr:pr-2 msr:text-[11px] msr:text-ink-600" });
7732
+ return Q(t, () => e.label), J(() => e.id, (e, n) => {
7733
+ $(t, "data-mesurer-plugin-label", e, n);
7734
+ }), t;
7735
+ },
7730
7736
  get children() {
7731
7737
  var n = X("button", {
7732
7738
  type: "button",
7733
- class: "msr:col-start-2 msr:flex msr:size-7 msr:items-center msr:justify-center msr:text-ink-500 msr:hover:text-ink-700 msr:focus-visible:outline-none msr:focus-visible:shadow-[inset_0_0_0_1px_#0d99ff]",
7739
+ class: "msr:col-start-1 msr:col-end-3 msr:flex msr:h-full msr:min-w-0 msr:items-center msr:text-left msr:text-ink-600 msr:hover:text-ink-700 msr:focus-visible:outline-none msr:focus-visible:shadow-[inset_0_0_0_1px_#0d99ff]",
7734
7740
  onClick: r
7735
- });
7736
- return Q(n, Y(Kl, {
7741
+ }), i = X("span", { class: "msr:ml-2 msr:min-w-0 msr:flex-1 msr:truncate msr:whitespace-nowrap msr:pr-2 msr:text-[11px]" }), a = X("span", { class: "msr:flex msr:size-7 msr:shrink-0 msr:items-center msr:justify-center msr:text-ink-500" });
7742
+ return Z(n, i), Z(n, a), Q(i, () => e.label), Q(a, Y(Kl, {
7737
7743
  size: 9,
7738
7744
  get class() {
7739
7745
  return t() ? "msr:rotate-180" : "";
@@ -7741,12 +7747,13 @@ function _u(e) {
7741
7747
  })), J(() => ({
7742
7748
  e: `${e.label} settings`,
7743
7749
  t: e.id,
7744
- a: t() ? "true" : "false"
7745
- }), ({ e, t, a: r }, i) => {
7746
- e !== i?.e && $(n, "aria-label", e, i?.e), t !== i?.t && $(n, "data-mesurer-plugin-settings-disclosure", t, i?.t), r !== i?.a && $(n, "aria-expanded", r, i?.a);
7750
+ a: t() ? "true" : "false",
7751
+ o: e.id
7752
+ }), ({ e, t, a: r, o: a }, o) => {
7753
+ e !== o?.e && $(n, "aria-label", e, o?.e), t !== o?.t && $(n, "data-mesurer-plugin-settings-disclosure", t, o?.t), r !== o?.a && $(n, "aria-expanded", r, o?.a), a !== o?.o && $(i, "data-mesurer-plugin-label", a, o?.o);
7747
7754
  }), n;
7748
7755
  }
7749
- }), d), Z(d, f), Z(f, p), Q(c, Y(q, {
7756
+ }), u), Z(u, d), Z(d, f), Q(c, Y(q, {
7750
7757
  get when() {
7751
7758
  return e.description || e.error;
7752
7759
  },
@@ -7810,16 +7817,15 @@ function _u(e) {
7810
7817
  }
7811
7818
  }), null), J(() => ({
7812
7819
  e: e.id,
7813
- t: e.id,
7814
- a: e.label,
7815
- o: e.enabled ? "true" : "false",
7816
- i: e.busy,
7817
- n: e.id,
7818
- s: e.enabled ? "true" : void 0,
7819
- h: `mesurer-switch-track msr:flex msr:h-[14px] msr:w-[26px] msr:shrink-0 msr:items-center msr:rounded-full msr:border msr:p-px msr:transition-colors ${e.enabled ? "msr:border-[#0d99ff] msr:bg-[#0d99ff]" : "msr:border-ink-200 msr:bg-ink-50"}`,
7820
- r: { transform: `translateX(${e.enabled ? 12 : 0}px)` }
7821
- }), ({ e, t, a: n, o: r, i, n: a, s: o, h: s, r: l }, m) => {
7822
- e !== m?.e && $(c, "data-mesurer-plugin-settings-section", e, m?.e), t !== m?.t && $(u, "data-mesurer-plugin-label", t, m?.t), n !== m?.a && $(d, "aria-label", n, m?.a), r !== m?.o && $(d, "aria-checked", r, m?.o), i !== m?.i && $(d, "disabled", i, m?.i), a !== m?.n && $(d, "data-mesurer-plugin-toggle", a, m?.n), o !== m?.s && $(f, "data-checked", o, m?.s), s !== m?.h && $(f, "class", s, m?.h), l !== m?.r && $(p, "style", l, m?.r);
7820
+ t: e.label,
7821
+ a: e.enabled ? "true" : "false",
7822
+ o: e.busy,
7823
+ i: e.id,
7824
+ n: e.enabled ? "true" : void 0,
7825
+ s: `mesurer-switch-track msr:flex msr:h-[14px] msr:w-[26px] msr:shrink-0 msr:items-center msr:rounded-full msr:border msr:p-px msr:transition-colors ${e.enabled ? "msr:border-[#0d99ff] msr:bg-[#0d99ff]" : "msr:border-ink-200 msr:bg-ink-50"}`,
7826
+ h: { transform: `translateX(${e.enabled ? 12 : 0}px)` }
7827
+ }), ({ e, t, a: n, o: r, i, n: a, s: o, h: s }, l) => {
7828
+ e !== l?.e && $(c, "data-mesurer-plugin-settings-section", e, l?.e), t !== l?.t && $(u, "aria-label", t, l?.t), n !== l?.a && $(u, "aria-checked", n, l?.a), r !== l?.o && $(u, "disabled", r, l?.o), i !== l?.i && $(u, "data-mesurer-plugin-toggle", i, l?.i), a !== l?.n && $(d, "data-checked", a, l?.n), o !== l?.s && $(d, "class", o, l?.s), s !== l?.h && $(f, "style", s, l?.h);
7823
7829
  }), c;
7824
7830
  }
7825
7831
  })), e;
@@ -10290,7 +10296,7 @@ function pp(e) {
10290
10296
  }
10291
10297
  };
10292
10298
  }
10293
- var mp = "/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --msr-font-sans: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\",\n \"Noto Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\",\n \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --msr-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --msr-color-red-50: oklch(97.1% 0.013 17.38);\n --msr-color-red-200: oklch(88.5% 0.062 18.334);\n --msr-color-red-600: oklch(57.7% 0.245 27.325);\n --msr-color-black: #000;\n --msr-color-white: #fff;\n --msr-spacing: 0.25rem;\n --msr-font-weight-normal: 400;\n --msr-font-weight-medium: 500;\n --msr-font-weight-semibold: 600;\n --msr-radius-md: 0.375rem;\n --msr-radius-lg: 0.5rem;\n --msr-default-transition-duration: 150ms;\n --msr-default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --msr-default-font-family: var(--msr-font-sans);\n --msr-default-mono-font-family: var(--msr-font-mono);\n --msr-color-ink-50: #f8fafc;\n --msr-color-ink-200: #e2e8f0;\n --msr-color-ink-500: #64748b;\n --msr-color-ink-700: #334155;\n --msr-color-ink-900: #0f172a;\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--msr-default-font-family, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--msr-default-font-feature-settings, normal);\n font-variation-settings: var(--msr-default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--msr-default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--msr-default-mono-font-feature-settings, normal);\n font-variation-settings: var(--msr-default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring:where(:not(iframe)) {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .msr\\:pointer-events-auto {\n pointer-events: auto;\n }\n .msr\\:pointer-events-none {\n pointer-events: none;\n }\n .msr\\:absolute {\n position: absolute;\n }\n .msr\\:fixed {\n position: fixed;\n }\n .msr\\:relative {\n position: relative;\n }\n .msr\\:inset-0 {\n inset: 0px;\n }\n .msr\\:top-0 {\n top: 0px;\n }\n .msr\\:top-1\\/2 {\n top: calc(1 / 2 * 100%);\n }\n .msr\\:top-\\[18px\\] {\n top: 18px;\n }\n .msr\\:top-full {\n top: 100%;\n }\n .msr\\:right-0 {\n right: 0px;\n }\n .msr\\:right-2 {\n right: calc(var(--msr-spacing) * 2);\n }\n .msr\\:right-\\[8px\\] {\n right: 8px;\n }\n .msr\\:bottom-0 {\n bottom: 0px;\n }\n .msr\\:bottom-full {\n bottom: 100%;\n }\n .msr\\:left-0 {\n left: 0px;\n }\n .msr\\:left-1\\/2 {\n left: calc(1 / 2 * 100%);\n }\n .msr\\:left-\\[8px\\] {\n left: 8px;\n }\n .msr\\:left-\\[18px\\] {\n left: 18px;\n }\n .msr\\:z-10 {\n z-index: 10;\n }\n .msr\\:z-\\[60\\] {\n z-index: 60;\n }\n .msr\\:z-\\[70\\] {\n z-index: 70;\n }\n .msr\\:z-\\[80\\] {\n z-index: 80;\n }\n .msr\\:z-\\[90\\] {\n z-index: 90;\n }\n .msr\\:z-\\[94\\] {\n z-index: 94;\n }\n .msr\\:z-\\[95\\] {\n z-index: 95;\n }\n .msr\\:col-span-2 {\n grid-column: span 2 / span 2;\n }\n .msr\\:col-start-1 {\n grid-column-start: 1;\n }\n .msr\\:col-start-2 {\n grid-column-start: 2;\n }\n .msr\\:col-start-3 {\n grid-column-start: 3;\n }\n .msr\\:m-0 {\n margin: 0px;\n }\n .msr\\:mx-1 {\n margin-inline: var(--msr-spacing);\n }\n .msr\\:mt-1 {\n margin-top: var(--msr-spacing);\n }\n .msr\\:mt-1\\.5 {\n margin-top: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:mt-2 {\n margin-top: calc(var(--msr-spacing) * 2);\n }\n .msr\\:mb-1 {\n margin-bottom: var(--msr-spacing);\n }\n .msr\\:mb-2 {\n margin-bottom: calc(var(--msr-spacing) * 2);\n }\n .msr\\:-ml-1 {\n margin-left: calc(var(--msr-spacing) * -1);\n }\n .msr\\:ml-1 {\n margin-left: var(--msr-spacing);\n }\n .msr\\:ml-2 {\n margin-left: calc(var(--msr-spacing) * 2);\n }\n .msr\\:ml-6 {\n margin-left: calc(var(--msr-spacing) * 6);\n }\n .msr\\:box-border {\n box-sizing: border-box;\n }\n .msr\\:block {\n display: block;\n }\n .msr\\:flex {\n display: flex;\n }\n .msr\\:grid {\n display: grid;\n }\n .msr\\:inline-flex {\n display: inline-flex;\n }\n .msr\\:size-1\\.5 {\n width: calc(var(--msr-spacing) * 1.5);\n height: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:size-3 {\n width: calc(var(--msr-spacing) * 3);\n height: calc(var(--msr-spacing) * 3);\n }\n .msr\\:size-4 {\n width: calc(var(--msr-spacing) * 4);\n height: calc(var(--msr-spacing) * 4);\n }\n .msr\\:size-6 {\n width: calc(var(--msr-spacing) * 6);\n height: calc(var(--msr-spacing) * 6);\n }\n .msr\\:size-7 {\n width: calc(var(--msr-spacing) * 7);\n height: calc(var(--msr-spacing) * 7);\n }\n .msr\\:size-8 {\n width: calc(var(--msr-spacing) * 8);\n height: calc(var(--msr-spacing) * 8);\n }\n .msr\\:size-\\[10px\\] {\n width: 10px;\n height: 10px;\n }\n .msr\\:size-\\[18px\\] {\n width: 18px;\n height: 18px;\n }\n .msr\\:size-full {\n width: 100%;\n height: 100%;\n }\n .msr\\:h-5 {\n height: calc(var(--msr-spacing) * 5);\n }\n .msr\\:h-6 {\n height: calc(var(--msr-spacing) * 6);\n }\n .msr\\:h-7 {\n height: calc(var(--msr-spacing) * 7);\n }\n .msr\\:h-8 {\n height: calc(var(--msr-spacing) * 8);\n }\n .msr\\:h-20 {\n height: calc(var(--msr-spacing) * 20);\n }\n .msr\\:h-\\[14px\\] {\n height: 14px;\n }\n .msr\\:h-\\[18px\\] {\n height: 18px;\n }\n .msr\\:h-\\[19px\\] {\n height: 19px;\n }\n .msr\\:h-full {\n height: 100%;\n }\n .msr\\:h-px {\n height: 1px;\n }\n .msr\\:max-h-36 {\n max-height: calc(var(--msr-spacing) * 36);\n }\n .msr\\:max-h-\\[220px\\] {\n max-height: 220px;\n }\n .msr\\:max-h-\\[calc\\(100vh-16px\\)\\] {\n max-height: calc(100vh - 16px);\n }\n .msr\\:max-h-\\[min\\(70vh\\,34rem\\)\\] {\n max-height: min(70vh, 34rem);\n }\n .msr\\:max-h-\\[min\\(320px\\,calc\\(100vh-16px\\)\\)\\] {\n max-height: min(320px, calc(100vh - 16px));\n }\n .msr\\:min-h-0 {\n min-height: 0px;\n }\n .msr\\:w-0 {\n width: 0px;\n }\n .msr\\:w-3 {\n width: calc(var(--msr-spacing) * 3);\n }\n .msr\\:w-4 {\n width: calc(var(--msr-spacing) * 4);\n }\n .msr\\:w-5 {\n width: calc(var(--msr-spacing) * 5);\n }\n .msr\\:w-6 {\n width: calc(var(--msr-spacing) * 6);\n }\n .msr\\:w-9 {\n width: calc(var(--msr-spacing) * 9);\n }\n .msr\\:w-12 {\n width: calc(var(--msr-spacing) * 12);\n }\n .msr\\:w-44 {\n width: calc(var(--msr-spacing) * 44);\n }\n .msr\\:w-60 {\n width: calc(var(--msr-spacing) * 60);\n }\n .msr\\:w-\\[18px\\] {\n width: 18px;\n }\n .msr\\:w-\\[26px\\] {\n width: 26px;\n }\n .msr\\:w-\\[272px\\] {\n width: 272px;\n }\n .msr\\:w-full {\n width: 100%;\n }\n .msr\\:w-px {\n width: 1px;\n }\n .msr\\:max-w-0 {\n max-width: 0px;\n }\n .msr\\:max-w-20 {\n max-width: calc(var(--msr-spacing) * 20);\n }\n .msr\\:max-w-\\[calc\\(100vw-16px\\)\\] {\n max-width: calc(100vw - 16px);\n }\n .msr\\:min-w-0 {\n min-width: 0px;\n }\n .msr\\:min-w-36 {\n min-width: calc(var(--msr-spacing) * 36);\n }\n .msr\\:flex-1 {\n flex: 1;\n }\n .msr\\:flex-none {\n flex: none;\n }\n .msr\\:shrink-0 {\n flex-shrink: 0;\n }\n .msr\\:-translate-x-1 {\n --tw-translate-x: calc(var(--msr-spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .msr\\:-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .msr\\:translate-x-0 {\n --tw-translate-x: 0px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .msr\\:-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .msr\\:-rotate-90 {\n rotate: calc(90deg * -1);\n }\n .msr\\:rotate-45 {\n rotate: 45deg;\n }\n .msr\\:rotate-90 {\n rotate: 90deg;\n }\n .msr\\:rotate-180 {\n rotate: 180deg;\n }\n .msr\\:rotate-\\[45deg\\] {\n rotate: 45deg;\n }\n .msr\\:rotate-\\[135deg\\] {\n rotate: 135deg;\n }\n .msr\\:cursor-crosshair {\n cursor: crosshair;\n }\n .msr\\:cursor-default {\n cursor: default;\n }\n .msr\\:cursor-pointer {\n cursor: pointer;\n }\n .msr\\:touch-none {\n touch-action: none;\n }\n .msr\\:resize-none {\n resize: none;\n }\n .msr\\:list-none {\n list-style-type: none;\n }\n .msr\\:appearance-none {\n appearance: none;\n }\n .msr\\:grid-cols-\\[78px_150px\\] {\n grid-template-columns: 78px 150px;\n }\n .msr\\:grid-cols-\\[78px_156px\\] {\n grid-template-columns: 78px 156px;\n }\n .msr\\:grid-cols-\\[78px_minmax\\(0\\,1fr\\)\\] {\n grid-template-columns: 78px minmax(0,1fr);\n }\n .msr\\:grid-cols-\\[minmax\\(0\\,1fr\\)_28px_34px\\] {\n grid-template-columns: minmax(0,1fr) 28px 34px;\n }\n .msr\\:flex-col {\n flex-direction: column;\n }\n .msr\\:items-center {\n align-items: center;\n }\n .msr\\:items-start {\n align-items: flex-start;\n }\n .msr\\:items-stretch {\n align-items: stretch;\n }\n .msr\\:justify-between {\n justify-content: space-between;\n }\n .msr\\:justify-center {\n justify-content: center;\n }\n .msr\\:justify-end {\n justify-content: flex-end;\n }\n .msr\\:gap-0 {\n gap: 0px;\n }\n .msr\\:gap-0\\.5 {\n gap: calc(var(--msr-spacing) * 0.5);\n }\n .msr\\:gap-1 {\n gap: var(--msr-spacing);\n }\n .msr\\:gap-1\\.5 {\n gap: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:gap-2 {\n gap: calc(var(--msr-spacing) * 2);\n }\n .msr\\:gap-3 {\n gap: calc(var(--msr-spacing) * 3);\n }\n .msr\\:gap-\\[2px\\] {\n gap: 2px;\n }\n .msr\\:gap-px {\n gap: 1px;\n }\n .msr\\:gap-x-3 {\n column-gap: calc(var(--msr-spacing) * 3);\n }\n .msr\\:gap-y-1 {\n row-gap: var(--msr-spacing);\n }\n .msr\\:self-center {\n align-self: center;\n }\n .msr\\:self-stretch {\n align-self: stretch;\n }\n .msr\\:justify-self-end {\n justify-self: flex-end;\n }\n .msr\\:truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .msr\\:overflow-auto {\n overflow: auto;\n }\n .msr\\:overflow-hidden {\n overflow: hidden;\n }\n .msr\\:overflow-visible {\n overflow: visible;\n }\n .msr\\:overflow-x-hidden {\n overflow-x: hidden;\n }\n .msr\\:overflow-y-auto {\n overflow-y: auto;\n }\n .msr\\:rounded {\n border-radius: 0.25rem;\n }\n .msr\\:rounded-\\[3px\\] {\n border-radius: 3px;\n }\n .msr\\:rounded-\\[5px\\] {\n border-radius: 5px;\n }\n .msr\\:rounded-\\[6px\\] {\n border-radius: 6px;\n }\n .msr\\:rounded-\\[7px\\] {\n border-radius: 7px;\n }\n .msr\\:rounded-\\[8px\\] {\n border-radius: 8px;\n }\n .msr\\:rounded-\\[10px\\] {\n border-radius: 10px;\n }\n .msr\\:rounded-\\[12px\\] {\n border-radius: 12px;\n }\n .msr\\:rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .msr\\:rounded-lg {\n border-radius: var(--msr-radius-lg);\n }\n .msr\\:rounded-md {\n border-radius: var(--msr-radius-md);\n }\n .msr\\:rounded-none {\n border-radius: 0;\n }\n .msr\\:border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .msr\\:border-0 {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n .msr\\:border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n .msr\\:border-t-2 {\n border-top-style: var(--tw-border-style);\n border-top-width: 2px;\n }\n .msr\\:border-r {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n .msr\\:border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .msr\\:border-l {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n .msr\\:border-dashed {\n --tw-border-style: dashed;\n border-style: dashed;\n }\n .msr\\:border-dotted {\n --tw-border-style: dotted;\n border-style: dotted;\n }\n .msr\\:border-solid {\n --tw-border-style: solid;\n border-style: solid;\n }\n .msr\\:border-\\[\\#0d99ff\\] {\n border-color: #0d99ff;\n }\n .msr\\:border-\\[\\#2563eb\\]\\/70 {\n border-color: color-mix(in oklab, #2563eb 70%, transparent);\n }\n .msr\\:border-black\\/8 {\n border-color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--msr-color-black) 8%, transparent);\n }\n }\n .msr\\:border-black\\/10 {\n border-color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--msr-color-black) 10%, transparent);\n }\n }\n .msr\\:border-black\\/15 {\n border-color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--msr-color-black) 15%, transparent);\n }\n }\n .msr\\:border-ink-200 {\n border-color: var(--msr-color-ink-200);\n }\n .msr\\:border-ink-500 {\n border-color: var(--msr-color-ink-500);\n }\n .msr\\:border-ink-700 {\n border-color: var(--msr-color-ink-700);\n }\n .msr\\:border-red-200 {\n border-color: var(--msr-color-red-200);\n }\n .msr\\:border-transparent {\n border-color: transparent;\n }\n .msr\\:bg-\\[\\#0d99ff\\] {\n background-color: #0d99ff;\n }\n .msr\\:bg-\\[\\#0d99ff\\]\\/10 {\n background-color: color-mix(in oklab, #0d99ff 10%, transparent);\n }\n .msr\\:bg-\\[\\#2563eb\\] {\n background-color: #2563eb;\n }\n .msr\\:bg-\\[\\#fff\\] {\n background-color: #fff;\n }\n .msr\\:bg-black {\n background-color: var(--msr-color-black);\n }\n .msr\\:bg-black\\/10 {\n background-color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--msr-color-black) 10%, transparent);\n }\n }\n .msr\\:bg-ink-50 {\n background-color: var(--msr-color-ink-50);\n }\n .msr\\:bg-ink-50\\/40 {\n background-color: var(--msr-color-ink-50);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--msr-color-ink-50) 40%, transparent);\n }\n }\n .msr\\:bg-ink-900\\/90 {\n background-color: var(--msr-color-ink-900);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--msr-color-ink-900) 90%, transparent);\n }\n }\n .msr\\:bg-transparent {\n background-color: transparent;\n }\n .msr\\:bg-white {\n background-color: var(--msr-color-white);\n }\n .msr\\:bg-white\\/60 {\n background-color: var(--msr-color-white);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--msr-color-white) 60%, transparent);\n }\n }\n .msr\\:p-0 {\n padding: 0px;\n }\n .msr\\:p-1 {\n padding: var(--msr-spacing);\n }\n .msr\\:p-1\\.5 {\n padding: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:p-2 {\n padding: calc(var(--msr-spacing) * 2);\n }\n .msr\\:p-3 {\n padding: calc(var(--msr-spacing) * 3);\n }\n .msr\\:p-\\[2px\\] {\n padding: 2px;\n }\n .msr\\:p-px {\n padding: 1px;\n }\n .msr\\:px-0 {\n padding-inline: 0px;\n }\n .msr\\:px-0\\.5 {\n padding-inline: calc(var(--msr-spacing) * 0.5);\n }\n .msr\\:px-1 {\n padding-inline: var(--msr-spacing);\n }\n .msr\\:px-1\\.5 {\n padding-inline: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:px-2 {\n padding-inline: calc(var(--msr-spacing) * 2);\n }\n .msr\\:px-2\\.5 {\n padding-inline: calc(var(--msr-spacing) * 2.5);\n }\n .msr\\:py-0 {\n padding-block: 0px;\n }\n .msr\\:py-0\\.5 {\n padding-block: calc(var(--msr-spacing) * 0.5);\n }\n .msr\\:py-1 {\n padding-block: var(--msr-spacing);\n }\n .msr\\:py-1\\.5 {\n padding-block: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:py-2 {\n padding-block: calc(var(--msr-spacing) * 2);\n }\n .msr\\:pt-0\\.5 {\n padding-top: calc(var(--msr-spacing) * 0.5);\n }\n .msr\\:pt-2 {\n padding-top: calc(var(--msr-spacing) * 2);\n }\n .msr\\:pr-0 {\n padding-right: 0px;\n }\n .msr\\:pr-2 {\n padding-right: calc(var(--msr-spacing) * 2);\n }\n .msr\\:pr-6 {\n padding-right: calc(var(--msr-spacing) * 6);\n }\n .msr\\:pb-1 {\n padding-bottom: var(--msr-spacing);\n }\n .msr\\:pb-1\\.5 {\n padding-bottom: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:pb-2 {\n padding-bottom: calc(var(--msr-spacing) * 2);\n }\n .msr\\:text-center {\n text-align: center;\n }\n .msr\\:text-left {\n text-align: left;\n }\n .msr\\:font-mono {\n font-family: var(--msr-font-mono);\n }\n .msr\\:text-\\[9px\\] {\n font-size: 9px;\n }\n .msr\\:text-\\[10px\\] {\n font-size: 10px;\n }\n .msr\\:text-\\[11px\\] {\n font-size: 11px;\n }\n .msr\\:text-\\[12px\\] {\n font-size: 12px;\n }\n .msr\\:text-\\[14px\\] {\n font-size: 14px;\n }\n .msr\\:leading-4 {\n --tw-leading: calc(var(--msr-spacing) * 4);\n line-height: calc(var(--msr-spacing) * 4);\n }\n .msr\\:leading-\\[1\\.4\\] {\n --tw-leading: 1.4;\n line-height: 1.4;\n }\n .msr\\:leading-\\[1\\.45\\] {\n --tw-leading: 1.45;\n line-height: 1.45;\n }\n .msr\\:leading-\\[18px\\] {\n --tw-leading: 18px;\n line-height: 18px;\n }\n .msr\\:leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n .msr\\:font-medium {\n --tw-font-weight: var(--msr-font-weight-medium);\n font-weight: var(--msr-font-weight-medium);\n }\n .msr\\:font-normal {\n --tw-font-weight: var(--msr-font-weight-normal);\n font-weight: var(--msr-font-weight-normal);\n }\n .msr\\:font-semibold {\n --tw-font-weight: var(--msr-font-weight-semibold);\n font-weight: var(--msr-font-weight-semibold);\n }\n .msr\\:text-ellipsis {\n text-overflow: ellipsis;\n }\n .msr\\:whitespace-nowrap {\n white-space: nowrap;\n }\n .msr\\:whitespace-pre-wrap {\n white-space: pre-wrap;\n }\n .msr\\:text-\\[\\#64748b\\] {\n color: #64748b;\n }\n .msr\\:text-black {\n color: var(--msr-color-black);\n }\n .msr\\:text-black\\/30 {\n color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--msr-color-black) 30%, transparent);\n }\n }\n .msr\\:text-black\\/45 {\n color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--msr-color-black) 45%, transparent);\n }\n }\n .msr\\:text-ink-50 {\n color: var(--msr-color-ink-50);\n }\n .msr\\:text-ink-500 {\n color: var(--msr-color-ink-500);\n }\n .msr\\:text-ink-700 {\n color: var(--msr-color-ink-700);\n }\n .msr\\:text-ink-900 {\n color: var(--msr-color-ink-900);\n }\n .msr\\:text-red-600 {\n color: var(--msr-color-red-600);\n }\n .msr\\:text-white {\n color: var(--msr-color-white);\n }\n .msr\\:text-white\\/60 {\n color: var(--msr-color-white);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--msr-color-white) 60%, transparent);\n }\n }\n .msr\\:tabular-nums {\n --tw-numeric-spacing: tabular-nums;\n font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);\n }\n .msr\\:opacity-0 {\n opacity: 0%;\n }\n .msr\\:opacity-60 {\n opacity: 60%;\n }\n .msr\\:opacity-80 {\n opacity: 80%;\n }\n .msr\\:opacity-100 {\n opacity: 100%;\n }\n .msr\\:shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .msr\\:outline-transparent {\n outline-color: transparent;\n }\n .msr\\:transition-\\[max-width\\,opacity\\,transform\\,padding\\] {\n transition-property: max-width,opacity,transform,padding;\n transition-timing-function: var(--tw-ease, var(--msr-default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--msr-default-transition-duration));\n }\n .msr\\:transition-\\[width\\,opacity\\] {\n transition-property: width,opacity;\n transition-timing-function: var(--tw-ease, var(--msr-default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--msr-default-transition-duration));\n }\n .msr\\:transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--msr-default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--msr-default-transition-duration));\n }\n .msr\\:transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--msr-default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--msr-default-transition-duration));\n }\n .msr\\:transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--msr-default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--msr-default-transition-duration));\n }\n .msr\\:transition-none {\n transition-property: none;\n }\n .msr\\:duration-150 {\n --tw-duration: 150ms;\n transition-duration: 150ms;\n }\n .msr\\:ease-\\[ease\\] {\n --tw-ease: ease;\n transition-timing-function: ease;\n }\n .msr\\:outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .msr\\:select-none {\n -webkit-user-select: none;\n user-select: none;\n }\n @media (hover: hover) {\n .msr\\:group-hover\\:border-ink-200:is(:where(.msr\\:group):hover *) {\n border-color: var(--msr-color-ink-200);\n }\n }\n .msr\\:focus-within\\:rounded-l-\\[5px\\]:focus-within {\n border-top-left-radius: 5px;\n border-bottom-left-radius: 5px;\n }\n .msr\\:focus-within\\:rounded-r-\\[5px\\]:focus-within {\n border-top-right-radius: 5px;\n border-bottom-right-radius: 5px;\n }\n .msr\\:focus-within\\:outline:focus-within {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .msr\\:focus-within\\:outline-1:focus-within {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .msr\\:focus-within\\:outline-offset-\\[-1px\\]:focus-within {\n outline-offset: -1px;\n }\n .msr\\:focus-within\\:outline-\\[\\#0d99ff\\]:focus-within {\n outline-color: #0d99ff;\n }\n .msr\\:focus-within\\:outline-\\[var\\(--msr-accent\\)\\]:focus-within {\n outline-color: var(--msr-accent);\n }\n @media (hover: hover) {\n .msr\\:hover\\:border-ink-200:hover {\n border-color: var(--msr-color-ink-200);\n }\n .msr\\:hover\\:bg-\\[\\#0b8eea\\]:hover {\n background-color: #0b8eea;\n }\n .msr\\:hover\\:bg-\\[\\#0d99ff\\]:hover {\n background-color: #0d99ff;\n }\n .msr\\:hover\\:bg-black\\/4:hover {\n background-color: var(--msr-color-black);\n }\n @supports (color: color-mix(in lab, red, red)) {\n .msr\\:hover\\:bg-black\\/4:hover {\n background-color: color-mix(in oklab, var(--msr-color-black) 4%, transparent);\n }\n }\n .msr\\:hover\\:bg-black\\/10:hover {\n background-color: var(--msr-color-black);\n }\n @supports (color: color-mix(in lab, red, red)) {\n .msr\\:hover\\:bg-black\\/10:hover {\n background-color: color-mix(in oklab, var(--msr-color-black) 10%, transparent);\n }\n }\n .msr\\:hover\\:bg-ink-50:hover {\n background-color: var(--msr-color-ink-50);\n }\n .msr\\:hover\\:bg-red-50:hover {\n background-color: var(--msr-color-red-50);\n }\n .msr\\:hover\\:text-ink-700:hover {\n color: var(--msr-color-ink-700);\n }\n .msr\\:hover\\:text-ink-900:hover {\n color: var(--msr-color-ink-900);\n }\n .msr\\:hover\\:text-white:hover {\n color: var(--msr-color-white);\n }\n .msr\\:hover\\:underline:hover {\n text-decoration-line: underline;\n }\n }\n .msr\\:focus\\:border-\\[\\#0d99ff\\]:focus {\n border-color: #0d99ff;\n }\n .msr\\:focus\\:shadow-\\[inset_0_0_0_1px_\\#0d99ff\\]:focus {\n --tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, #0d99ff);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:focus\\:shadow-\\[inset_0_0_0_1px_var\\(--msr-accent\\)\\]:focus {\n --tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, var(--msr-accent));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:focus\\:outline-none:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n .msr\\:focus-visible\\:border-\\[\\#0d99ff\\]:focus-visible {\n border-color: #0d99ff;\n }\n .msr\\:focus-visible\\:bg-\\[\\#0d99ff\\]:focus-visible {\n background-color: #0d99ff;\n }\n .msr\\:focus-visible\\:text-white:focus-visible {\n color: var(--msr-color-white);\n }\n .msr\\:focus-visible\\:shadow-\\[inset_0_0_0_1px_\\#0d99ff\\]:focus-visible {\n --tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, #0d99ff);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:focus-visible\\:shadow-\\[inset_0_0_0_1px_\\#ef4444\\]:focus-visible {\n --tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, #ef4444);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:focus-visible\\:ring-1:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:focus-visible\\:ring-\\[\\#0d99ff\\]\\/25:focus-visible {\n --tw-ring-color: color-mix(in oklab, #0d99ff 25%, transparent);\n }\n .msr\\:focus-visible\\:outline-none:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n .msr\\:disabled\\:cursor-default:disabled {\n cursor: default;\n }\n .msr\\:disabled\\:opacity-40:disabled {\n opacity: 40%;\n }\n .msr\\:disabled\\:opacity-45:disabled {\n opacity: 45%;\n }\n @media (prefers-reduced-motion: reduce) {\n .msr\\:motion-reduce\\:transition-none {\n transition-property: none;\n }\n }\n}\n:root, :host {\n --color-ink-50: #f8fafc;\n --color-ink-200: #e2e8f0;\n --color-ink-500: #64748b;\n --color-ink-700: #334155;\n --color-ink-900: #0f172a;\n}\n:host {\n all: initial;\n display: block;\n color-scheme: light;\n color: #0f172a;\n font-family: ui-sans-serif, system-ui, sans-serif;\n font-size: 16px;\n font-weight: 400;\n line-height: 1.5;\n letter-spacing: normal;\n direction: ltr;\n --msr-spacing: 4px;\n}\n*, *::before, *::after {\n box-sizing: border-box;\n}\n@layer base {\n *, ::before, ::after, ::backdrop {\n --tw-border-style: solid;\n --tw-outline-style: solid;\n --tw-shadow: 0 0 #0000;\n --tw-inset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n }\n button, input, select, textarea {\n appearance: none;\n background-color: transparent;\n padding: 0;\n font: inherit;\n color: inherit;\n letter-spacing: inherit;\n }\n}\n.mesurer-toolbar-surface {\n box-shadow: 0 0 0.5px rgba(0, 0, 0, 0.18), 0 3px 8px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n.mesurer-menu-surface {\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);\n}\n.mesurer-color-picker {\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n}\n.mesurer-settings-tabs {\n box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.08);\n}\n.mesurer-settings-tab[aria-selected=\"true\"] {\n box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.12);\n}\n.mesurer-switch-track {\n box-sizing: border-box;\n border: 1px solid #e2e8f0;\n}\n.mesurer-switch-track[data-checked=\"true\"] {\n border-color: #0d99ff;\n}\n.mesurer-control-shell {\n border: 1px solid transparent;\n}\n.mesurer-control-shell:hover {\n border-color: #e2e8f0;\n}\n.mesurer-control-focus:focus-within {\n outline: 1px solid #0d99ff;\n outline-offset: -1px;\n}\n.mesurer-root {\n --msr-spacing: 4px;\n}\nbody [data-mesurer-native-scroll-anchor=\"box\"][data-mesurer-nested-scroll-compensation=\"true\"] {\n position: absolute !important;\n left: calc(anchor(left) + var(--mesurer-nested-scroll-x, 0px)) !important;\n top: calc(anchor(top) + var(--mesurer-nested-scroll-y, 0px)) !important;\n}\nbody [data-mesurer-native-scroll-anchor=\"label\"][data-mesurer-nested-scroll-compensation=\"true\"] {\n position: absolute !important;\n left: calc(anchor(center) + var(--mesurer-nested-scroll-x, 0px)) !important;\n top: calc(anchor(bottom) + 2px + var(--mesurer-nested-scroll-y, 0px)) !important;\n}\nbody [data-mesurer-native-scroll-anchor=\"offset\"][data-mesurer-nested-scroll-compensation=\"true\"] {\n position: absolute !important;\n left: calc(anchor(left) + var(--mesurer-native-anchor-x, 0px) + var(--mesurer-nested-scroll-x, 0px)) !important;\n top: calc(anchor(top) + var(--mesurer-native-anchor-y, 0px) + var(--mesurer-nested-scroll-y, 0px)) !important;\n}\n[data-mesurer-text-edit-ring=\"true\"], [data-mesurer-text-selection-highlight=\"true\"], [data-mesurer-text-caret=\"true\"] {\n z-index: 2147482900 !important;\n}\n[data-mesurer-text-inspector-placement-shell=\"true\"], .mesurer-ti-card {\n z-index: 2147483647 !important;\n}\n[data-mesurer-context-root=\"true\"] [data-mesurer-annotation-scroll-mode=\"document\"] {\n position: absolute !important;\n}\n[data-mesurer-annotation-scroll-mode=\"native-anchor\"] {\n position: fixed !important;\n}\n[data-mesurer-native-scroll-anchor=\"offset\"][data-mesurer-nested-scroll-compensation=\"true\"][data-mesurer-annotation-scroll-mode=\"native-anchor\"] {\n position: fixed !important;\n}\n[data-mesurer-annotation-badge=\"true\"] {\n width: 20px !important;\n height: 20px !important;\n transform: none !important;\n transition: width 150ms ease, height 150ms ease, background 150ms ease, color 150ms ease, box-shadow 150ms ease !important;\n}\n[data-mesurer-annotation-marker=\"true\"][data-mesurer-annotation-highlighted=\"true\"] > [data-mesurer-annotation-badge=\"true\"] {\n width: 24px !important;\n height: 24px !important;\n}\n[data-mesurer-root=\"true\"][data-mesurer-direct-text-edit-active=\"true\"] [data-mesurer-annotation-trigger=\"true\"], [data-mesurer-context-root=\"true\"][data-mesurer-direct-text-edit-active=\"true\"] [data-mesurer-annotation-trigger=\"true\"] {\n display: none !important;\n}\n[data-mesurer-plugin-settings] [role=\"switch\"] {\n grid-template-columns: minmax(0, 1fr) auto;\n}\n[data-mesurer-plugin-settings] [role=\"switch\"] > span:first-child {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n[data-mesurer-plugin-settings-disclosure=\"plugins\"] {\n width: calc(100% + 16px);\n margin-inline: -8px;\n}\n.mesurer-solid-root {\n position: fixed;\n inset: 0;\n z-index: 2147483000;\n pointer-events: none;\n --msr-spacing: 4px;\n}\n.mesurer-solid-root [role=\"slider\"] {\n border: 0;\n}\n[data-mesurer-distance-kind=\"selection-spacing\"][data-mesurer-distance-active=\"true\"] [data-mesurer-distance-hover-target=\"true\"] {\n opacity: 1 !important;\n}\n[data-mesurer-distance-kind=\"selection-spacing\"][data-mesurer-distance-active=\"true\"]:has([data-mesurer-distance-label-axis=\"x\"]:hover) [data-mesurer-distance-line^=\"vertical\"], [data-mesurer-distance-kind=\"selection-spacing\"][data-mesurer-distance-active=\"true\"]:has([data-mesurer-distance-label-axis=\"y\"]:hover) [data-mesurer-distance-line^=\"horizontal\"], [data-mesurer-distance-kind=\"selection-spacing\"][data-mesurer-distance-active=\"true\"]:has([data-mesurer-distance-label-axis]:hover) [data-mesurer-distance-connector=\"true\"] {\n opacity: 0.16 !important;\n}\nbody.mesurer-solid-xray * {\n outline: solid 1px blue !important;\n}\nbody.mesurer-solid-xray [data-mesurer-root], body.mesurer-solid-xray [data-mesurer-root] *, body.mesurer-solid-xray [data-mesurer-inspector-ui], body.mesurer-solid-xray [data-mesurer-inspector-ui] *, body.mesurer-solid-xray .mesurer-toolbar-surface, body.mesurer-solid-xray .mesurer-toolbar-surface *, body.mesurer-solid-xray .mesurer-ti-box, body.mesurer-solid-xray .mesurer-ti-card, body.mesurer-solid-xray .mesurer-ti-card *, body.mesurer-solid-xray .mesurer-ti-close {\n outline: none !important;\n}\n[data-mesurer-toolbar=\"true\"] > div:has(> [data-mesurer-toolbar-compact-item]) {\n transition: padding-inline 150ms ease;\n}\n[data-mesurer-toolbar=\"true\"][data-mesurer-toolbar-compact=\"true\"] > div:has(> [data-mesurer-toolbar-compact-item]):not(:has(> [data-mesurer-toolbar-compact-item][data-visible=\"true\"])) {\n padding-inline: 0;\n}\n[data-mesurer-selected-measurement=\"true\"]:has(> [data-mesurer-native-scroll-anchor=\"box\"]) {\n display: contents !important;\n}\n@media (prefers-reduced-motion: reduce) {\n [data-mesurer-toolbar=\"true\"] > div:has(> [data-mesurer-toolbar-compact-item]) {\n transition: none;\n }\n [data-mesurer-annotation-badge=\"true\"] {\n transition: none !important;\n }\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) {\n --msr-accent: #0d99ff;\n --msr-surface: #fff;\n --msr-surface-raised: #fff;\n --msr-surface-muted: #f8fafc;\n --msr-content: #18181b;\n --msr-color-white: #fff;\n --msr-color-black: #000;\n --msr-color-ink-50: #f8fafc;\n --msr-color-ink-100: #f1f5f9;\n --msr-color-ink-200: #e2e8f0;\n --msr-color-ink-300: #cbd5e1;\n --msr-color-ink-500: #64748b;\n --msr-color-ink-700: #334155;\n --msr-color-ink-900: #18181b;\n --color-ink-50: var(--msr-color-ink-50);\n --color-ink-100: var(--msr-color-ink-100);\n --color-ink-200: var(--msr-color-ink-200);\n --color-ink-300: var(--msr-color-ink-300);\n --color-ink-500: var(--msr-color-ink-500);\n --color-ink-700: var(--msr-color-ink-700);\n --color-ink-900: var(--msr-color-ink-900);\n --msr-danger-bg: #fef2f2;\n --msr-danger-border: #fecaca;\n --msr-danger-text: #dc2626;\n --msr-danger-solid-bg: #dc2626;\n --msr-danger-solid-hover: #b91c1c;\n --msr-danger-solid-text: #fff;\n --color-red-50: var(--msr-danger-bg);\n --color-red-200: var(--msr-danger-border);\n --color-red-600: var(--msr-danger-text);\n --color-red-700: #b91c1c;\n --msr-control-thumb: #fff;\n --msr-slider-track: rgba(15, 23, 42, 0.16);\n --msr-shadow-toolbar: 0 0 0.4px rgba(0, 0, 0, 0.22),\n 0 6px 18px rgba(0, 0, 0, 0.03),\n 0 3px 9px rgba(0, 0, 0, 0.06),\n 0 1px 1px rgba(0, 0, 0, 0.06);\n --msr-shadow-floating: 0 0 0 0.4px rgba(0, 0, 0, 0.22),\n 0 6px 18px rgba(0, 0, 0, 0.03),\n 0 3px 9px rgba(0, 0, 0, 0.06),\n 0 1px 1px rgba(0, 0, 0, 0.06);\n --msr-shadow-select-menu: var(--msr-shadow-floating);\n color: var(--msr-content);\n color-scheme: light;\n}\n:where( [data-mesurer-root=\"true\"][data-theme=\"dark\"], [data-mesurer-inspector-ui=\"true\"][data-theme=\"dark\"] ) {\n --msr-accent: #0c8ce9;\n --msr-surface: #323232;\n --msr-surface-raised: #3a3a3a;\n --msr-surface-muted: #3a3a3a;\n --msr-content: #f5f5f5;\n --msr-color-white: #f5f5f5;\n --msr-color-black: #171717;\n --msr-color-ink-50: #3a3a3a;\n --msr-color-ink-100: #414141;\n --msr-color-ink-200: #4a4a4a;\n --msr-color-ink-300: #5a5a5a;\n --msr-color-ink-500: #a0a0a0;\n --msr-color-ink-700: #dedede;\n --msr-color-ink-900: #f5f5f5;\n --msr-danger-bg: #3f2020;\n --msr-danger-border: #7f3f46;\n --msr-danger-text: #f87171;\n --msr-danger-solid-bg: #c95058;\n --msr-danger-solid-hover: #b7424b;\n --msr-danger-solid-text: #f5f5f5;\n --color-red-700: #fca5a5;\n --msr-control-thumb: #f4f4f5;\n --msr-slider-track: rgba(245, 245, 245, 0.24);\n --msr-shadow-toolbar: 0 0 0.4px lch(100% 0 0 / 0.10),\n 0 3px 8px lch(0% 0 0 / 0.125),\n 0 2px 5px lch(0% 0 0 / 0.125),\n 0 1px 1px lch(0% 0 0 / 0.125);\n --msr-shadow-floating: 0 0 0 0.4px lch(100% 0 0 / 0.05),\n 0 4px 12px lch(0% 0 0 / 0.12),\n 0 1px 3px lch(0% 0 0 / 0.10);\n --msr-shadow-select-menu: 0 0 0 0.4px lch(100% 0 0 / 0.14),\n 0 4px 12px lch(0% 0 0 / 0.22),\n 0 1px 3px lch(0% 0 0 / 0.18);\n color-scheme: dark;\n}\n@media (prefers-color-scheme: dark) {\n :where( [data-mesurer-root=\"true\"][data-theme=\"system\"], [data-mesurer-inspector-ui=\"true\"][data-theme=\"system\"] ) {\n --msr-accent: #0c8ce9;\n --msr-surface: #323232;\n --msr-surface-raised: #3a3a3a;\n --msr-surface-muted: #3a3a3a;\n --msr-content: #f5f5f5;\n --msr-color-white: #f5f5f5;\n --msr-color-black: #171717;\n --msr-color-ink-50: #3a3a3a;\n --msr-color-ink-100: #414141;\n --msr-color-ink-200: #4a4a4a;\n --msr-color-ink-300: #5a5a5a;\n --msr-color-ink-500: #a0a0a0;\n --msr-color-ink-700: #dedede;\n --msr-color-ink-900: #f5f5f5;\n --msr-danger-bg: #3f2020;\n --msr-danger-border: #7f3f46;\n --msr-danger-text: #f87171;\n --msr-danger-solid-bg: #c95058;\n --msr-danger-solid-hover: #b7424b;\n --msr-danger-solid-text: #f5f5f5;\n --color-red-700: #fca5a5;\n --msr-control-thumb: #f4f4f5;\n --msr-slider-track: rgba(245, 245, 245, 0.24);\n --msr-shadow-toolbar: 0 0 0.4px lch(100% 0 0 / 0.10),\n 0 3px 8px lch(0% 0 0 / 0.125),\n 0 2px 5px lch(0% 0 0 / 0.125),\n 0 1px 1px lch(0% 0 0 / 0.125);\n --msr-shadow-floating: 0 0 0 0.4px lch(100% 0 0 / 0.05),\n 0 4px 12px lch(0% 0 0 / 0.12),\n 0 1px 3px lch(0% 0 0 / 0.10);\n --msr-shadow-select-menu: 0 0 0 0.4px lch(100% 0 0 / 0.14),\n 0 4px 12px lch(0% 0 0 / 0.22),\n 0 1px 3px lch(0% 0 0 / 0.18);\n color-scheme: dark;\n }\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:bg-white\"], :where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:bg-[#fff]\"] {\n background-color: var(--msr-surface) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:text-black\"] {\n color: var(--msr-content) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:hover:bg-black/4\"]:hover, :where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:hover:bg-black/5\"]:hover {\n background-color: var(--msr-content) !important;\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in srgb, var(--msr-content) 6%, transparent) !important;\n }\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) .mesurer-toolbar-surface {\n background-color: var(--msr-surface) !important;\n box-shadow: var(--msr-shadow-toolbar) !important;\n color: var(--msr-content);\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) :is( .mesurer-menu-surface, .mesurer-color-picker, .mesurer-ti-card, [data-mesurer-text-inspector-info=\"true\"], [data-mesurer-annotation-panel=\"true\"], [data-mesurer-annotation-composer=\"true\"] ) {\n background-color: var(--msr-surface-raised) !important;\n color: var(--msr-content) !important;\n box-shadow: var(--msr-shadow-floating) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) .mesurer-switch-track[data-checked=\"false\"], :where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) .mesurer-control-shell {\n background-color: var(--msr-surface-muted) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) .mesurer-switch-track > span {\n background-color: var(--msr-control-thumb) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) :is(.mesurer-settings-select, .mesurer-settings-select-menu) {\n background-color: var(--msr-surface-raised) !important;\n border-color: var(--msr-color-ink-200) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [data-mesurer-rulers=\"true\"] {\n color: var(--msr-color-ink-500) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [data-slider-container=\"true\"] > div:first-child {\n background-color: var(--msr-slider-track) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:bg-[#0d99ff]\"] {\n background-color: var(--msr-accent) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:border-[#0d99ff]\"] {\n border-color: var(--msr-accent) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:hover:bg-[#0d99ff]\"]:hover, :where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:focus-visible:bg-[#0d99ff]\"]:focus-visible {\n background-color: var(--msr-accent) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:text-white\"] {\n color: var(--msr-color-white) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [data-slider-thumb=\"true\"]:focus-visible {\n box-shadow: 0 0 0 1px var(--msr-accent) !important;\n @supports (color: color-mix(in lab, red, red)) {\n box-shadow: 0 0 0 1px color-mix(in srgb, var(--msr-accent) 25%, transparent) !important;\n }\n}\n:where([data-mesurer-root=\"true\"], [data-mesurer-inspector-ui=\"true\"]) {\n --msr-radius-control: 5px;\n}\n@layer utilities {\n .msr\\:rounded-control {\n border-radius: var(--msr-radius-control);\n }\n}\n.mesurer-thin-scrollbar {\n scrollbar-width: thin;\n scrollbar-color: var(--msr-color-ink-200) transparent;\n}\n.mesurer-thin-scrollbar::-webkit-scrollbar {\n width: 4px;\n height: 4px;\n}\n.mesurer-thin-scrollbar::-webkit-scrollbar-track {\n background: transparent;\n}\n.mesurer-thin-scrollbar::-webkit-scrollbar-thumb {\n background: var(--msr-color-ink-200);\n border-radius: var(--msr-radius-control);\n}\n.mesurer-thin-scrollbar:hover {\n scrollbar-color: var(--msr-color-ink-300) transparent;\n}\n.mesurer-thin-scrollbar:hover::-webkit-scrollbar-thumb {\n background: var(--msr-color-ink-300);\n}\n.mesurer-thin-scrollbar::-webkit-scrollbar-corner {\n background: transparent;\n}\n.mesurer-toolbar-mode-switch {\n position: relative;\n z-index: 1;\n isolation: isolate;\n border-radius: 5px;\n background: transparent;\n}\n.mesurer-toolbar-mode-switch-pill {\n position: absolute;\n top: 2px;\n left: 2px;\n z-index: 0;\n width: 28px;\n height: 28px;\n border-radius: 3px;\n background: var(--msr-color-ink-200, #e2e8f0);\n transform: translateX(0);\n}\n.mesurer-toolbar-mode-switch[data-value=\"edit\"] .mesurer-toolbar-mode-switch-pill {\n transform: translateX(30px);\n}\n.mesurer-toolbar-mode-switch > :not(.mesurer-toolbar-mode-switch-pill) {\n position: relative;\n z-index: 1;\n}\n.mesurer-toolbar-mode-button {\n display: flex;\n width: 28px;\n height: 28px;\n align-items: center;\n justify-content: center;\n border-radius: 3px;\n color: var(--msr-color-ink-700, #334155);\n outline: none;\n}\n.mesurer-toolbar-mode-button[aria-pressed=\"true\"] {\n color: var(--msr-color-ink-900, #18181b);\n}\n.mesurer-toolbar-mode-button[aria-pressed=\"false\"]:not(:disabled):hover {\n background: var(--msr-color-ink-200, #e2e8f0);\n @supports (color: color-mix(in lab, red, red)) {\n background: color-mix(in srgb, var(--msr-color-ink-200, #e2e8f0) 50%, transparent);\n }\n}\n.mesurer-toolbar-mode-button:focus-visible {\n outline: 1px solid var(--msr-color-ink-500, #64748b);\n outline-offset: 1px;\n}\n.mesurer-toolbar-mode-button:disabled {\n cursor: default;\n opacity: 0.35;\n}\n.mesurer-toolbar-mode-stage {\n --msr-select-mode-w: 0px;\n --msr-edit-mode-w: 0px;\n position: relative;\n flex: none;\n width: var(--msr-select-mode-w);\n overflow: visible;\n}\n.mesurer-toolbar-mode-stage[data-mode=\"edit\"] {\n width: var(--msr-edit-mode-w);\n}\n.mesurer-toolbar-mode-track {\n display: flex;\n width: max-content;\n align-items: stretch;\n transform: translateX(0);\n}\n.mesurer-toolbar-mode-stage[data-mode=\"edit\"] .mesurer-toolbar-mode-track {\n transform: translateX(calc(-1 * var(--msr-select-mode-w)));\n}\n.mesurer-toolbar-mode-slot {\n flex: none;\n width: var(--msr-select-mode-w);\n}\n.mesurer-toolbar-mode-slot[data-mode=\"edit\"] {\n width: var(--msr-edit-mode-w);\n}\n.mesurer-toolbar-mode-panel {\n display: flex;\n width: max-content;\n align-items: stretch;\n}\n.mesurer-toolbar-mode-slot[data-open=\"false\"] {\n visibility: hidden;\n pointer-events: none;\n}\n.mesurer-toolbar-mode-stage[data-mode-motion=\"true\"] {\n overflow: hidden;\n}\n.mesurer-toolbar-mode-stage[data-mode-motion=\"true\"] .mesurer-toolbar-mode-slot[data-open=\"false\"] {\n visibility: visible;\n}\n.mesurer-toolbar-mode-stage:has( .mesurer-toolbar-mode-slot[data-open=\"true\"] [role=\"menu\"], .mesurer-toolbar-mode-slot[data-open=\"true\"] [role=\"dialog\"] ) {\n overflow: visible;\n}\n.mesurer-toolbar-mode-stage[data-ready=\"true\"], .mesurer-toolbar-mode-stage[data-ready=\"true\"] .mesurer-toolbar-mode-track {\n transition-duration: 150ms;\n transition-timing-function: ease;\n}\n.mesurer-toolbar-mode-stage[data-ready=\"true\"] {\n transition-property: width;\n}\n.mesurer-toolbar-mode-stage[data-compact-motion=\"true\"] {\n transition-property: none;\n}\n.mesurer-toolbar-mode-stage[data-ready=\"true\"] .mesurer-toolbar-mode-track {\n transition-property: transform;\n}\n.mesurer-toolbar-mode-switch {\n --msr-toolbar-mode-motion: 150ms ease;\n}\n.mesurer-toolbar-mode-switch-pill {\n transition: transform var(--msr-toolbar-mode-motion);\n}\n@media (prefers-reduced-motion: reduce) {\n .mesurer-toolbar-mode-stage, .mesurer-toolbar-mode-track, .mesurer-toolbar-mode-switch-pill {\n transition: none !important;\n }\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ordinal {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-slashed-zero {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-figure {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-spacing {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-fraction {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ease {\n syntax: \"*\";\n inherits: false;\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-border-style: solid;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-ordinal: initial;\n --tw-slashed-zero: initial;\n --tw-numeric-figure: initial;\n --tw-numeric-spacing: initial;\n --tw-numeric-fraction: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-duration: initial;\n --tw-ease: initial;\n }\n }\n}\n", hp = 0, gp = "mesurer:tab-id", _p = "mesurer-settings", vp = "mesurer-state", yp = 80, bp = (e, t) => {
10299
+ var mp = "/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --msr-font-sans: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\",\n \"Noto Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\",\n \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --msr-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --msr-color-red-50: oklch(97.1% 0.013 17.38);\n --msr-color-red-200: oklch(88.5% 0.062 18.334);\n --msr-color-red-600: oklch(57.7% 0.245 27.325);\n --msr-color-black: #000;\n --msr-color-white: #fff;\n --msr-spacing: 0.25rem;\n --msr-font-weight-normal: 400;\n --msr-font-weight-medium: 500;\n --msr-font-weight-semibold: 600;\n --msr-radius-md: 0.375rem;\n --msr-radius-lg: 0.5rem;\n --msr-default-transition-duration: 150ms;\n --msr-default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --msr-default-font-family: var(--msr-font-sans);\n --msr-default-mono-font-family: var(--msr-font-mono);\n --msr-color-ink-50: #f8fafc;\n --msr-color-ink-200: #e2e8f0;\n --msr-color-ink-500: #64748b;\n --msr-color-ink-700: #334155;\n --msr-color-ink-900: #0f172a;\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--msr-default-font-family, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--msr-default-font-feature-settings, normal);\n font-variation-settings: var(--msr-default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--msr-default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--msr-default-mono-font-feature-settings, normal);\n font-variation-settings: var(--msr-default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring:where(:not(iframe)) {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .msr\\:pointer-events-auto {\n pointer-events: auto;\n }\n .msr\\:pointer-events-none {\n pointer-events: none;\n }\n .msr\\:absolute {\n position: absolute;\n }\n .msr\\:fixed {\n position: fixed;\n }\n .msr\\:relative {\n position: relative;\n }\n .msr\\:inset-0 {\n inset: 0px;\n }\n .msr\\:top-0 {\n top: 0px;\n }\n .msr\\:top-1\\/2 {\n top: calc(1 / 2 * 100%);\n }\n .msr\\:top-\\[18px\\] {\n top: 18px;\n }\n .msr\\:top-full {\n top: 100%;\n }\n .msr\\:right-0 {\n right: 0px;\n }\n .msr\\:right-2 {\n right: calc(var(--msr-spacing) * 2);\n }\n .msr\\:right-\\[8px\\] {\n right: 8px;\n }\n .msr\\:bottom-0 {\n bottom: 0px;\n }\n .msr\\:bottom-full {\n bottom: 100%;\n }\n .msr\\:left-0 {\n left: 0px;\n }\n .msr\\:left-1\\/2 {\n left: calc(1 / 2 * 100%);\n }\n .msr\\:left-\\[8px\\] {\n left: 8px;\n }\n .msr\\:left-\\[18px\\] {\n left: 18px;\n }\n .msr\\:z-10 {\n z-index: 10;\n }\n .msr\\:z-\\[60\\] {\n z-index: 60;\n }\n .msr\\:z-\\[70\\] {\n z-index: 70;\n }\n .msr\\:z-\\[80\\] {\n z-index: 80;\n }\n .msr\\:z-\\[90\\] {\n z-index: 90;\n }\n .msr\\:z-\\[94\\] {\n z-index: 94;\n }\n .msr\\:z-\\[95\\] {\n z-index: 95;\n }\n .msr\\:col-span-2 {\n grid-column: span 2 / span 2;\n }\n .msr\\:col-start-1 {\n grid-column-start: 1;\n }\n .msr\\:col-start-3 {\n grid-column-start: 3;\n }\n .msr\\:col-end-3 {\n grid-column-end: 3;\n }\n .msr\\:m-0 {\n margin: 0px;\n }\n .msr\\:mx-1 {\n margin-inline: var(--msr-spacing);\n }\n .msr\\:mt-1 {\n margin-top: var(--msr-spacing);\n }\n .msr\\:mt-1\\.5 {\n margin-top: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:mt-2 {\n margin-top: calc(var(--msr-spacing) * 2);\n }\n .msr\\:mb-1 {\n margin-bottom: var(--msr-spacing);\n }\n .msr\\:mb-2 {\n margin-bottom: calc(var(--msr-spacing) * 2);\n }\n .msr\\:-ml-1 {\n margin-left: calc(var(--msr-spacing) * -1);\n }\n .msr\\:ml-1 {\n margin-left: var(--msr-spacing);\n }\n .msr\\:ml-2 {\n margin-left: calc(var(--msr-spacing) * 2);\n }\n .msr\\:ml-6 {\n margin-left: calc(var(--msr-spacing) * 6);\n }\n .msr\\:box-border {\n box-sizing: border-box;\n }\n .msr\\:block {\n display: block;\n }\n .msr\\:flex {\n display: flex;\n }\n .msr\\:grid {\n display: grid;\n }\n .msr\\:inline-flex {\n display: inline-flex;\n }\n .msr\\:size-1\\.5 {\n width: calc(var(--msr-spacing) * 1.5);\n height: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:size-3 {\n width: calc(var(--msr-spacing) * 3);\n height: calc(var(--msr-spacing) * 3);\n }\n .msr\\:size-4 {\n width: calc(var(--msr-spacing) * 4);\n height: calc(var(--msr-spacing) * 4);\n }\n .msr\\:size-6 {\n width: calc(var(--msr-spacing) * 6);\n height: calc(var(--msr-spacing) * 6);\n }\n .msr\\:size-7 {\n width: calc(var(--msr-spacing) * 7);\n height: calc(var(--msr-spacing) * 7);\n }\n .msr\\:size-8 {\n width: calc(var(--msr-spacing) * 8);\n height: calc(var(--msr-spacing) * 8);\n }\n .msr\\:size-\\[10px\\] {\n width: 10px;\n height: 10px;\n }\n .msr\\:size-\\[18px\\] {\n width: 18px;\n height: 18px;\n }\n .msr\\:size-full {\n width: 100%;\n height: 100%;\n }\n .msr\\:h-5 {\n height: calc(var(--msr-spacing) * 5);\n }\n .msr\\:h-6 {\n height: calc(var(--msr-spacing) * 6);\n }\n .msr\\:h-7 {\n height: calc(var(--msr-spacing) * 7);\n }\n .msr\\:h-8 {\n height: calc(var(--msr-spacing) * 8);\n }\n .msr\\:h-20 {\n height: calc(var(--msr-spacing) * 20);\n }\n .msr\\:h-\\[14px\\] {\n height: 14px;\n }\n .msr\\:h-\\[18px\\] {\n height: 18px;\n }\n .msr\\:h-\\[19px\\] {\n height: 19px;\n }\n .msr\\:h-full {\n height: 100%;\n }\n .msr\\:h-px {\n height: 1px;\n }\n .msr\\:max-h-36 {\n max-height: calc(var(--msr-spacing) * 36);\n }\n .msr\\:max-h-\\[220px\\] {\n max-height: 220px;\n }\n .msr\\:max-h-\\[calc\\(100vh-16px\\)\\] {\n max-height: calc(100vh - 16px);\n }\n .msr\\:max-h-\\[min\\(70vh\\,34rem\\)\\] {\n max-height: min(70vh, 34rem);\n }\n .msr\\:max-h-\\[min\\(320px\\,calc\\(100vh-16px\\)\\)\\] {\n max-height: min(320px, calc(100vh - 16px));\n }\n .msr\\:min-h-0 {\n min-height: 0px;\n }\n .msr\\:w-0 {\n width: 0px;\n }\n .msr\\:w-3 {\n width: calc(var(--msr-spacing) * 3);\n }\n .msr\\:w-4 {\n width: calc(var(--msr-spacing) * 4);\n }\n .msr\\:w-5 {\n width: calc(var(--msr-spacing) * 5);\n }\n .msr\\:w-6 {\n width: calc(var(--msr-spacing) * 6);\n }\n .msr\\:w-9 {\n width: calc(var(--msr-spacing) * 9);\n }\n .msr\\:w-12 {\n width: calc(var(--msr-spacing) * 12);\n }\n .msr\\:w-44 {\n width: calc(var(--msr-spacing) * 44);\n }\n .msr\\:w-60 {\n width: calc(var(--msr-spacing) * 60);\n }\n .msr\\:w-\\[18px\\] {\n width: 18px;\n }\n .msr\\:w-\\[26px\\] {\n width: 26px;\n }\n .msr\\:w-\\[272px\\] {\n width: 272px;\n }\n .msr\\:w-full {\n width: 100%;\n }\n .msr\\:w-px {\n width: 1px;\n }\n .msr\\:max-w-0 {\n max-width: 0px;\n }\n .msr\\:max-w-20 {\n max-width: calc(var(--msr-spacing) * 20);\n }\n .msr\\:max-w-\\[calc\\(100vw-16px\\)\\] {\n max-width: calc(100vw - 16px);\n }\n .msr\\:min-w-0 {\n min-width: 0px;\n }\n .msr\\:min-w-36 {\n min-width: calc(var(--msr-spacing) * 36);\n }\n .msr\\:flex-1 {\n flex: 1;\n }\n .msr\\:flex-none {\n flex: none;\n }\n .msr\\:shrink-0 {\n flex-shrink: 0;\n }\n .msr\\:-translate-x-1 {\n --tw-translate-x: calc(var(--msr-spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .msr\\:-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .msr\\:translate-x-0 {\n --tw-translate-x: 0px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .msr\\:-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .msr\\:-rotate-90 {\n rotate: calc(90deg * -1);\n }\n .msr\\:rotate-45 {\n rotate: 45deg;\n }\n .msr\\:rotate-90 {\n rotate: 90deg;\n }\n .msr\\:rotate-180 {\n rotate: 180deg;\n }\n .msr\\:rotate-\\[45deg\\] {\n rotate: 45deg;\n }\n .msr\\:rotate-\\[135deg\\] {\n rotate: 135deg;\n }\n .msr\\:cursor-crosshair {\n cursor: crosshair;\n }\n .msr\\:cursor-default {\n cursor: default;\n }\n .msr\\:cursor-pointer {\n cursor: pointer;\n }\n .msr\\:touch-none {\n touch-action: none;\n }\n .msr\\:resize-none {\n resize: none;\n }\n .msr\\:list-none {\n list-style-type: none;\n }\n .msr\\:appearance-none {\n appearance: none;\n }\n .msr\\:grid-cols-\\[78px_150px\\] {\n grid-template-columns: 78px 150px;\n }\n .msr\\:grid-cols-\\[78px_156px\\] {\n grid-template-columns: 78px 156px;\n }\n .msr\\:grid-cols-\\[78px_minmax\\(0\\,1fr\\)\\] {\n grid-template-columns: 78px minmax(0,1fr);\n }\n .msr\\:grid-cols-\\[minmax\\(0\\,1fr\\)_28px_34px\\] {\n grid-template-columns: minmax(0,1fr) 28px 34px;\n }\n .msr\\:flex-col {\n flex-direction: column;\n }\n .msr\\:items-center {\n align-items: center;\n }\n .msr\\:items-start {\n align-items: flex-start;\n }\n .msr\\:items-stretch {\n align-items: stretch;\n }\n .msr\\:justify-between {\n justify-content: space-between;\n }\n .msr\\:justify-center {\n justify-content: center;\n }\n .msr\\:justify-end {\n justify-content: flex-end;\n }\n .msr\\:gap-0 {\n gap: 0px;\n }\n .msr\\:gap-0\\.5 {\n gap: calc(var(--msr-spacing) * 0.5);\n }\n .msr\\:gap-1 {\n gap: var(--msr-spacing);\n }\n .msr\\:gap-1\\.5 {\n gap: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:gap-2 {\n gap: calc(var(--msr-spacing) * 2);\n }\n .msr\\:gap-3 {\n gap: calc(var(--msr-spacing) * 3);\n }\n .msr\\:gap-\\[2px\\] {\n gap: 2px;\n }\n .msr\\:gap-px {\n gap: 1px;\n }\n .msr\\:gap-x-3 {\n column-gap: calc(var(--msr-spacing) * 3);\n }\n .msr\\:gap-y-1 {\n row-gap: var(--msr-spacing);\n }\n .msr\\:self-center {\n align-self: center;\n }\n .msr\\:self-stretch {\n align-self: stretch;\n }\n .msr\\:justify-self-end {\n justify-self: flex-end;\n }\n .msr\\:truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .msr\\:overflow-auto {\n overflow: auto;\n }\n .msr\\:overflow-hidden {\n overflow: hidden;\n }\n .msr\\:overflow-visible {\n overflow: visible;\n }\n .msr\\:overflow-x-hidden {\n overflow-x: hidden;\n }\n .msr\\:overflow-y-auto {\n overflow-y: auto;\n }\n .msr\\:rounded {\n border-radius: 0.25rem;\n }\n .msr\\:rounded-\\[3px\\] {\n border-radius: 3px;\n }\n .msr\\:rounded-\\[5px\\] {\n border-radius: 5px;\n }\n .msr\\:rounded-\\[6px\\] {\n border-radius: 6px;\n }\n .msr\\:rounded-\\[7px\\] {\n border-radius: 7px;\n }\n .msr\\:rounded-\\[8px\\] {\n border-radius: 8px;\n }\n .msr\\:rounded-\\[10px\\] {\n border-radius: 10px;\n }\n .msr\\:rounded-\\[12px\\] {\n border-radius: 12px;\n }\n .msr\\:rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .msr\\:rounded-lg {\n border-radius: var(--msr-radius-lg);\n }\n .msr\\:rounded-md {\n border-radius: var(--msr-radius-md);\n }\n .msr\\:rounded-none {\n border-radius: 0;\n }\n .msr\\:border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .msr\\:border-0 {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n .msr\\:border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n .msr\\:border-t-2 {\n border-top-style: var(--tw-border-style);\n border-top-width: 2px;\n }\n .msr\\:border-r {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n .msr\\:border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .msr\\:border-l {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n .msr\\:border-dashed {\n --tw-border-style: dashed;\n border-style: dashed;\n }\n .msr\\:border-dotted {\n --tw-border-style: dotted;\n border-style: dotted;\n }\n .msr\\:border-solid {\n --tw-border-style: solid;\n border-style: solid;\n }\n .msr\\:border-\\[\\#0d99ff\\] {\n border-color: #0d99ff;\n }\n .msr\\:border-\\[\\#2563eb\\]\\/70 {\n border-color: color-mix(in oklab, #2563eb 70%, transparent);\n }\n .msr\\:border-black\\/8 {\n border-color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--msr-color-black) 8%, transparent);\n }\n }\n .msr\\:border-black\\/10 {\n border-color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--msr-color-black) 10%, transparent);\n }\n }\n .msr\\:border-black\\/15 {\n border-color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--msr-color-black) 15%, transparent);\n }\n }\n .msr\\:border-ink-200 {\n border-color: var(--msr-color-ink-200);\n }\n .msr\\:border-ink-500 {\n border-color: var(--msr-color-ink-500);\n }\n .msr\\:border-ink-700 {\n border-color: var(--msr-color-ink-700);\n }\n .msr\\:border-red-200 {\n border-color: var(--msr-color-red-200);\n }\n .msr\\:border-transparent {\n border-color: transparent;\n }\n .msr\\:bg-\\[\\#0d99ff\\] {\n background-color: #0d99ff;\n }\n .msr\\:bg-\\[\\#0d99ff\\]\\/10 {\n background-color: color-mix(in oklab, #0d99ff 10%, transparent);\n }\n .msr\\:bg-\\[\\#2563eb\\] {\n background-color: #2563eb;\n }\n .msr\\:bg-\\[\\#fff\\] {\n background-color: #fff;\n }\n .msr\\:bg-black {\n background-color: var(--msr-color-black);\n }\n .msr\\:bg-black\\/10 {\n background-color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--msr-color-black) 10%, transparent);\n }\n }\n .msr\\:bg-ink-50 {\n background-color: var(--msr-color-ink-50);\n }\n .msr\\:bg-ink-50\\/40 {\n background-color: var(--msr-color-ink-50);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--msr-color-ink-50) 40%, transparent);\n }\n }\n .msr\\:bg-ink-900\\/90 {\n background-color: var(--msr-color-ink-900);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--msr-color-ink-900) 90%, transparent);\n }\n }\n .msr\\:bg-transparent {\n background-color: transparent;\n }\n .msr\\:bg-white {\n background-color: var(--msr-color-white);\n }\n .msr\\:bg-white\\/60 {\n background-color: var(--msr-color-white);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--msr-color-white) 60%, transparent);\n }\n }\n .msr\\:p-0 {\n padding: 0px;\n }\n .msr\\:p-1 {\n padding: var(--msr-spacing);\n }\n .msr\\:p-1\\.5 {\n padding: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:p-2 {\n padding: calc(var(--msr-spacing) * 2);\n }\n .msr\\:p-3 {\n padding: calc(var(--msr-spacing) * 3);\n }\n .msr\\:p-\\[2px\\] {\n padding: 2px;\n }\n .msr\\:p-px {\n padding: 1px;\n }\n .msr\\:px-0 {\n padding-inline: 0px;\n }\n .msr\\:px-0\\.5 {\n padding-inline: calc(var(--msr-spacing) * 0.5);\n }\n .msr\\:px-1 {\n padding-inline: var(--msr-spacing);\n }\n .msr\\:px-1\\.5 {\n padding-inline: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:px-2 {\n padding-inline: calc(var(--msr-spacing) * 2);\n }\n .msr\\:px-2\\.5 {\n padding-inline: calc(var(--msr-spacing) * 2.5);\n }\n .msr\\:py-0 {\n padding-block: 0px;\n }\n .msr\\:py-0\\.5 {\n padding-block: calc(var(--msr-spacing) * 0.5);\n }\n .msr\\:py-1 {\n padding-block: var(--msr-spacing);\n }\n .msr\\:py-1\\.5 {\n padding-block: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:py-2 {\n padding-block: calc(var(--msr-spacing) * 2);\n }\n .msr\\:pt-0\\.5 {\n padding-top: calc(var(--msr-spacing) * 0.5);\n }\n .msr\\:pt-2 {\n padding-top: calc(var(--msr-spacing) * 2);\n }\n .msr\\:pr-0 {\n padding-right: 0px;\n }\n .msr\\:pr-2 {\n padding-right: calc(var(--msr-spacing) * 2);\n }\n .msr\\:pr-6 {\n padding-right: calc(var(--msr-spacing) * 6);\n }\n .msr\\:pb-1 {\n padding-bottom: var(--msr-spacing);\n }\n .msr\\:pb-1\\.5 {\n padding-bottom: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:pb-2 {\n padding-bottom: calc(var(--msr-spacing) * 2);\n }\n .msr\\:text-center {\n text-align: center;\n }\n .msr\\:text-left {\n text-align: left;\n }\n .msr\\:font-mono {\n font-family: var(--msr-font-mono);\n }\n .msr\\:text-\\[9px\\] {\n font-size: 9px;\n }\n .msr\\:text-\\[10px\\] {\n font-size: 10px;\n }\n .msr\\:text-\\[11px\\] {\n font-size: 11px;\n }\n .msr\\:text-\\[12px\\] {\n font-size: 12px;\n }\n .msr\\:text-\\[14px\\] {\n font-size: 14px;\n }\n .msr\\:leading-4 {\n --tw-leading: calc(var(--msr-spacing) * 4);\n line-height: calc(var(--msr-spacing) * 4);\n }\n .msr\\:leading-\\[1\\.4\\] {\n --tw-leading: 1.4;\n line-height: 1.4;\n }\n .msr\\:leading-\\[1\\.45\\] {\n --tw-leading: 1.45;\n line-height: 1.45;\n }\n .msr\\:leading-\\[18px\\] {\n --tw-leading: 18px;\n line-height: 18px;\n }\n .msr\\:leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n .msr\\:font-medium {\n --tw-font-weight: var(--msr-font-weight-medium);\n font-weight: var(--msr-font-weight-medium);\n }\n .msr\\:font-normal {\n --tw-font-weight: var(--msr-font-weight-normal);\n font-weight: var(--msr-font-weight-normal);\n }\n .msr\\:font-semibold {\n --tw-font-weight: var(--msr-font-weight-semibold);\n font-weight: var(--msr-font-weight-semibold);\n }\n .msr\\:text-ellipsis {\n text-overflow: ellipsis;\n }\n .msr\\:whitespace-nowrap {\n white-space: nowrap;\n }\n .msr\\:whitespace-pre-wrap {\n white-space: pre-wrap;\n }\n .msr\\:text-\\[\\#64748b\\] {\n color: #64748b;\n }\n .msr\\:text-black {\n color: var(--msr-color-black);\n }\n .msr\\:text-black\\/30 {\n color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--msr-color-black) 30%, transparent);\n }\n }\n .msr\\:text-black\\/45 {\n color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--msr-color-black) 45%, transparent);\n }\n }\n .msr\\:text-ink-50 {\n color: var(--msr-color-ink-50);\n }\n .msr\\:text-ink-500 {\n color: var(--msr-color-ink-500);\n }\n .msr\\:text-ink-700 {\n color: var(--msr-color-ink-700);\n }\n .msr\\:text-ink-900 {\n color: var(--msr-color-ink-900);\n }\n .msr\\:text-red-600 {\n color: var(--msr-color-red-600);\n }\n .msr\\:text-white {\n color: var(--msr-color-white);\n }\n .msr\\:text-white\\/60 {\n color: var(--msr-color-white);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--msr-color-white) 60%, transparent);\n }\n }\n .msr\\:tabular-nums {\n --tw-numeric-spacing: tabular-nums;\n font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);\n }\n .msr\\:opacity-0 {\n opacity: 0%;\n }\n .msr\\:opacity-60 {\n opacity: 60%;\n }\n .msr\\:opacity-80 {\n opacity: 80%;\n }\n .msr\\:opacity-100 {\n opacity: 100%;\n }\n .msr\\:shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .msr\\:outline-transparent {\n outline-color: transparent;\n }\n .msr\\:transition-\\[max-width\\,opacity\\,transform\\,padding\\] {\n transition-property: max-width,opacity,transform,padding;\n transition-timing-function: var(--tw-ease, var(--msr-default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--msr-default-transition-duration));\n }\n .msr\\:transition-\\[width\\,opacity\\] {\n transition-property: width,opacity;\n transition-timing-function: var(--tw-ease, var(--msr-default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--msr-default-transition-duration));\n }\n .msr\\:transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--msr-default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--msr-default-transition-duration));\n }\n .msr\\:transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--msr-default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--msr-default-transition-duration));\n }\n .msr\\:transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--msr-default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--msr-default-transition-duration));\n }\n .msr\\:transition-none {\n transition-property: none;\n }\n .msr\\:duration-150 {\n --tw-duration: 150ms;\n transition-duration: 150ms;\n }\n .msr\\:ease-\\[ease\\] {\n --tw-ease: ease;\n transition-timing-function: ease;\n }\n .msr\\:outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .msr\\:select-none {\n -webkit-user-select: none;\n user-select: none;\n }\n @media (hover: hover) {\n .msr\\:group-hover\\:border-ink-200:is(:where(.msr\\:group):hover *) {\n border-color: var(--msr-color-ink-200);\n }\n }\n .msr\\:focus-within\\:rounded-l-\\[5px\\]:focus-within {\n border-top-left-radius: 5px;\n border-bottom-left-radius: 5px;\n }\n .msr\\:focus-within\\:rounded-r-\\[5px\\]:focus-within {\n border-top-right-radius: 5px;\n border-bottom-right-radius: 5px;\n }\n .msr\\:focus-within\\:outline:focus-within {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .msr\\:focus-within\\:outline-1:focus-within {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .msr\\:focus-within\\:outline-offset-\\[-1px\\]:focus-within {\n outline-offset: -1px;\n }\n .msr\\:focus-within\\:outline-\\[\\#0d99ff\\]:focus-within {\n outline-color: #0d99ff;\n }\n .msr\\:focus-within\\:outline-\\[var\\(--msr-accent\\)\\]:focus-within {\n outline-color: var(--msr-accent);\n }\n @media (hover: hover) {\n .msr\\:hover\\:border-ink-200:hover {\n border-color: var(--msr-color-ink-200);\n }\n .msr\\:hover\\:bg-\\[\\#0b8eea\\]:hover {\n background-color: #0b8eea;\n }\n .msr\\:hover\\:bg-\\[\\#0d99ff\\]:hover {\n background-color: #0d99ff;\n }\n .msr\\:hover\\:bg-black\\/4:hover {\n background-color: var(--msr-color-black);\n }\n @supports (color: color-mix(in lab, red, red)) {\n .msr\\:hover\\:bg-black\\/4:hover {\n background-color: color-mix(in oklab, var(--msr-color-black) 4%, transparent);\n }\n }\n .msr\\:hover\\:bg-black\\/10:hover {\n background-color: var(--msr-color-black);\n }\n @supports (color: color-mix(in lab, red, red)) {\n .msr\\:hover\\:bg-black\\/10:hover {\n background-color: color-mix(in oklab, var(--msr-color-black) 10%, transparent);\n }\n }\n .msr\\:hover\\:bg-ink-50:hover {\n background-color: var(--msr-color-ink-50);\n }\n .msr\\:hover\\:bg-red-50:hover {\n background-color: var(--msr-color-red-50);\n }\n .msr\\:hover\\:text-ink-700:hover {\n color: var(--msr-color-ink-700);\n }\n .msr\\:hover\\:text-ink-900:hover {\n color: var(--msr-color-ink-900);\n }\n .msr\\:hover\\:text-white:hover {\n color: var(--msr-color-white);\n }\n .msr\\:hover\\:underline:hover {\n text-decoration-line: underline;\n }\n }\n .msr\\:focus\\:border-\\[\\#0d99ff\\]:focus {\n border-color: #0d99ff;\n }\n .msr\\:focus\\:shadow-\\[inset_0_0_0_1px_\\#0d99ff\\]:focus {\n --tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, #0d99ff);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:focus\\:shadow-\\[inset_0_0_0_1px_var\\(--msr-accent\\)\\]:focus {\n --tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, var(--msr-accent));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:focus\\:outline-none:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n .msr\\:focus-visible\\:border-\\[\\#0d99ff\\]:focus-visible {\n border-color: #0d99ff;\n }\n .msr\\:focus-visible\\:bg-\\[\\#0d99ff\\]:focus-visible {\n background-color: #0d99ff;\n }\n .msr\\:focus-visible\\:text-white:focus-visible {\n color: var(--msr-color-white);\n }\n .msr\\:focus-visible\\:shadow-\\[inset_0_0_0_1px_\\#0d99ff\\]:focus-visible {\n --tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, #0d99ff);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:focus-visible\\:shadow-\\[inset_0_0_0_1px_\\#ef4444\\]:focus-visible {\n --tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, #ef4444);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:focus-visible\\:ring-1:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:focus-visible\\:ring-\\[\\#0d99ff\\]\\/25:focus-visible {\n --tw-ring-color: color-mix(in oklab, #0d99ff 25%, transparent);\n }\n .msr\\:focus-visible\\:outline-none:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n .msr\\:disabled\\:cursor-default:disabled {\n cursor: default;\n }\n .msr\\:disabled\\:opacity-40:disabled {\n opacity: 40%;\n }\n .msr\\:disabled\\:opacity-45:disabled {\n opacity: 45%;\n }\n @media (prefers-reduced-motion: reduce) {\n .msr\\:motion-reduce\\:transition-none {\n transition-property: none;\n }\n }\n}\n:root, :host {\n --color-ink-50: #f8fafc;\n --color-ink-200: #e2e8f0;\n --color-ink-500: #64748b;\n --color-ink-700: #334155;\n --color-ink-900: #0f172a;\n}\n:host {\n all: initial;\n display: block;\n color-scheme: light;\n color: #0f172a;\n font-family: ui-sans-serif, system-ui, sans-serif;\n font-size: 16px;\n font-weight: 400;\n line-height: 1.5;\n letter-spacing: normal;\n direction: ltr;\n --msr-spacing: 4px;\n}\n*, *::before, *::after {\n box-sizing: border-box;\n}\n@layer base {\n *, ::before, ::after, ::backdrop {\n --tw-border-style: solid;\n --tw-outline-style: solid;\n --tw-shadow: 0 0 #0000;\n --tw-inset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n }\n button, input, select, textarea {\n appearance: none;\n background-color: transparent;\n padding: 0;\n font: inherit;\n color: inherit;\n letter-spacing: inherit;\n }\n}\n.mesurer-toolbar-surface {\n box-shadow: 0 0 0.5px rgba(0, 0, 0, 0.18), 0 3px 8px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n.mesurer-menu-surface {\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);\n}\n.mesurer-color-picker {\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n}\n.mesurer-settings-tabs {\n box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.08);\n}\n.mesurer-settings-tab[aria-selected=\"true\"] {\n box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.12);\n}\n.mesurer-switch-track {\n box-sizing: border-box;\n border: 1px solid #e2e8f0;\n}\n.mesurer-switch-track[data-checked=\"true\"] {\n border-color: #0d99ff;\n}\n.mesurer-control-shell {\n border: 1px solid transparent;\n}\n.mesurer-control-shell:hover {\n border-color: #e2e8f0;\n}\n.mesurer-control-focus:focus-within {\n outline: 1px solid #0d99ff;\n outline-offset: -1px;\n}\n.mesurer-root {\n --msr-spacing: 4px;\n}\nbody [data-mesurer-native-scroll-anchor=\"box\"][data-mesurer-nested-scroll-compensation=\"true\"] {\n position: absolute !important;\n left: calc(anchor(left) + var(--mesurer-nested-scroll-x, 0px)) !important;\n top: calc(anchor(top) + var(--mesurer-nested-scroll-y, 0px)) !important;\n}\nbody [data-mesurer-native-scroll-anchor=\"label\"][data-mesurer-nested-scroll-compensation=\"true\"] {\n position: absolute !important;\n left: calc(anchor(center) + var(--mesurer-nested-scroll-x, 0px)) !important;\n top: calc(anchor(bottom) + 2px + var(--mesurer-nested-scroll-y, 0px)) !important;\n}\nbody [data-mesurer-native-scroll-anchor=\"offset\"][data-mesurer-nested-scroll-compensation=\"true\"] {\n position: absolute !important;\n left: calc(anchor(left) + var(--mesurer-native-anchor-x, 0px) + var(--mesurer-nested-scroll-x, 0px)) !important;\n top: calc(anchor(top) + var(--mesurer-native-anchor-y, 0px) + var(--mesurer-nested-scroll-y, 0px)) !important;\n}\n[data-mesurer-text-edit-ring=\"true\"], [data-mesurer-text-selection-highlight=\"true\"], [data-mesurer-text-caret=\"true\"] {\n z-index: 2147482900 !important;\n}\n[data-mesurer-text-inspector-placement-shell=\"true\"], .mesurer-ti-card {\n z-index: 2147483647 !important;\n}\n[data-mesurer-context-root=\"true\"] [data-mesurer-annotation-scroll-mode=\"document\"] {\n position: absolute !important;\n}\n[data-mesurer-annotation-scroll-mode=\"native-anchor\"] {\n position: fixed !important;\n}\n[data-mesurer-native-scroll-anchor=\"offset\"][data-mesurer-nested-scroll-compensation=\"true\"][data-mesurer-annotation-scroll-mode=\"native-anchor\"] {\n position: fixed !important;\n}\n[data-mesurer-annotation-badge=\"true\"] {\n width: 20px !important;\n height: 20px !important;\n transform: none !important;\n transition: width 150ms ease, height 150ms ease, background 150ms ease, color 150ms ease, box-shadow 150ms ease !important;\n}\n[data-mesurer-annotation-marker=\"true\"][data-mesurer-annotation-highlighted=\"true\"] > [data-mesurer-annotation-badge=\"true\"] {\n width: 24px !important;\n height: 24px !important;\n}\n[data-mesurer-root=\"true\"][data-mesurer-direct-text-edit-active=\"true\"] [data-mesurer-annotation-trigger=\"true\"], [data-mesurer-context-root=\"true\"][data-mesurer-direct-text-edit-active=\"true\"] [data-mesurer-annotation-trigger=\"true\"] {\n display: none !important;\n}\n[data-mesurer-plugin-settings] [role=\"switch\"] {\n grid-template-columns: minmax(0, 1fr) auto;\n}\n[data-mesurer-plugin-settings] [role=\"switch\"] > span:first-child {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n[data-mesurer-plugin-settings-disclosure=\"plugins\"] {\n width: calc(100% + 16px);\n margin-inline: -8px;\n}\n.mesurer-solid-root {\n position: fixed;\n inset: 0;\n z-index: 2147483000;\n pointer-events: none;\n --msr-spacing: 4px;\n}\n.mesurer-solid-root [role=\"slider\"] {\n border: 0;\n}\n[data-mesurer-distance-kind=\"selection-spacing\"][data-mesurer-distance-active=\"true\"] [data-mesurer-distance-hover-target=\"true\"] {\n opacity: 1 !important;\n}\n[data-mesurer-distance-kind=\"selection-spacing\"][data-mesurer-distance-active=\"true\"]:has([data-mesurer-distance-label-axis=\"x\"]:hover) [data-mesurer-distance-line^=\"vertical\"], [data-mesurer-distance-kind=\"selection-spacing\"][data-mesurer-distance-active=\"true\"]:has([data-mesurer-distance-label-axis=\"y\"]:hover) [data-mesurer-distance-line^=\"horizontal\"], [data-mesurer-distance-kind=\"selection-spacing\"][data-mesurer-distance-active=\"true\"]:has([data-mesurer-distance-label-axis]:hover) [data-mesurer-distance-connector=\"true\"] {\n opacity: 0.16 !important;\n}\nbody.mesurer-solid-xray * {\n outline: solid 1px blue !important;\n}\nbody.mesurer-solid-xray [data-mesurer-root], body.mesurer-solid-xray [data-mesurer-root] *, body.mesurer-solid-xray [data-mesurer-inspector-ui], body.mesurer-solid-xray [data-mesurer-inspector-ui] *, body.mesurer-solid-xray .mesurer-toolbar-surface, body.mesurer-solid-xray .mesurer-toolbar-surface *, body.mesurer-solid-xray .mesurer-ti-box, body.mesurer-solid-xray .mesurer-ti-card, body.mesurer-solid-xray .mesurer-ti-card *, body.mesurer-solid-xray .mesurer-ti-close {\n outline: none !important;\n}\n[data-mesurer-toolbar=\"true\"] > div:has(> [data-mesurer-toolbar-compact-item]) {\n transition: padding-inline 150ms ease;\n}\n[data-mesurer-toolbar=\"true\"][data-mesurer-toolbar-compact=\"true\"] > div:has(> [data-mesurer-toolbar-compact-item]):not(:has(> [data-mesurer-toolbar-compact-item][data-visible=\"true\"])) {\n padding-inline: 0;\n}\n[data-mesurer-selected-measurement=\"true\"]:has(> [data-mesurer-native-scroll-anchor=\"box\"]) {\n display: contents !important;\n}\n@media (prefers-reduced-motion: reduce) {\n [data-mesurer-toolbar=\"true\"] > div:has(> [data-mesurer-toolbar-compact-item]) {\n transition: none;\n }\n [data-mesurer-annotation-badge=\"true\"] {\n transition: none !important;\n }\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) {\n --msr-accent: #0d99ff;\n --msr-surface: #fff;\n --msr-surface-raised: #fff;\n --msr-surface-muted: #f8fafc;\n --msr-content: #18181b;\n --msr-color-white: #fff;\n --msr-color-black: #000;\n --msr-color-ink-50: #f8fafc;\n --msr-color-ink-100: #f1f5f9;\n --msr-color-ink-200: #e2e8f0;\n --msr-color-ink-300: #cbd5e1;\n --msr-color-ink-500: #64748b;\n --msr-color-ink-700: #334155;\n --msr-color-ink-900: #18181b;\n --color-ink-50: var(--msr-color-ink-50);\n --color-ink-100: var(--msr-color-ink-100);\n --color-ink-200: var(--msr-color-ink-200);\n --color-ink-300: var(--msr-color-ink-300);\n --color-ink-500: var(--msr-color-ink-500);\n --color-ink-700: var(--msr-color-ink-700);\n --color-ink-900: var(--msr-color-ink-900);\n --msr-danger-bg: #fef2f2;\n --msr-danger-border: #fecaca;\n --msr-danger-text: #dc2626;\n --msr-danger-solid-bg: #dc2626;\n --msr-danger-solid-hover: #b91c1c;\n --msr-danger-solid-text: #fff;\n --color-red-50: var(--msr-danger-bg);\n --color-red-200: var(--msr-danger-border);\n --color-red-600: var(--msr-danger-text);\n --color-red-700: #b91c1c;\n --msr-control-thumb: #fff;\n --msr-slider-track: rgba(15, 23, 42, 0.16);\n --msr-shadow-toolbar: 0 0 0.4px rgba(0, 0, 0, 0.22),\n 0 6px 18px rgba(0, 0, 0, 0.03),\n 0 3px 9px rgba(0, 0, 0, 0.06),\n 0 1px 1px rgba(0, 0, 0, 0.06);\n --msr-shadow-floating: 0 0 0 0.4px rgba(0, 0, 0, 0.22),\n 0 6px 18px rgba(0, 0, 0, 0.03),\n 0 3px 9px rgba(0, 0, 0, 0.06),\n 0 1px 1px rgba(0, 0, 0, 0.06);\n --msr-shadow-select-menu: var(--msr-shadow-floating);\n color: var(--msr-content);\n color-scheme: light;\n}\n:where( [data-mesurer-root=\"true\"][data-theme=\"dark\"], [data-mesurer-inspector-ui=\"true\"][data-theme=\"dark\"] ) {\n --msr-accent: #0c8ce9;\n --msr-surface: #323232;\n --msr-surface-raised: #3a3a3a;\n --msr-surface-muted: #3a3a3a;\n --msr-content: #f5f5f5;\n --msr-color-white: #f5f5f5;\n --msr-color-black: #171717;\n --msr-color-ink-50: #3a3a3a;\n --msr-color-ink-100: #414141;\n --msr-color-ink-200: #4a4a4a;\n --msr-color-ink-300: #5a5a5a;\n --msr-color-ink-500: #a0a0a0;\n --msr-color-ink-700: #dedede;\n --msr-color-ink-900: #f5f5f5;\n --msr-danger-bg: #3f2020;\n --msr-danger-border: #7f3f46;\n --msr-danger-text: #f87171;\n --msr-danger-solid-bg: #c95058;\n --msr-danger-solid-hover: #b7424b;\n --msr-danger-solid-text: #f5f5f5;\n --color-red-700: #fca5a5;\n --msr-control-thumb: #f4f4f5;\n --msr-slider-track: rgba(245, 245, 245, 0.24);\n --msr-shadow-toolbar: 0 0 0.4px lch(100% 0 0 / 0.10),\n 0 3px 8px lch(0% 0 0 / 0.125),\n 0 2px 5px lch(0% 0 0 / 0.125),\n 0 1px 1px lch(0% 0 0 / 0.125);\n --msr-shadow-floating: 0 0 0 0.4px lch(100% 0 0 / 0.05),\n 0 4px 12px lch(0% 0 0 / 0.12),\n 0 1px 3px lch(0% 0 0 / 0.10);\n --msr-shadow-select-menu: 0 0 0 0.4px lch(100% 0 0 / 0.14),\n 0 4px 12px lch(0% 0 0 / 0.22),\n 0 1px 3px lch(0% 0 0 / 0.18);\n color-scheme: dark;\n}\n@media (prefers-color-scheme: dark) {\n :where( [data-mesurer-root=\"true\"][data-theme=\"system\"], [data-mesurer-inspector-ui=\"true\"][data-theme=\"system\"] ) {\n --msr-accent: #0c8ce9;\n --msr-surface: #323232;\n --msr-surface-raised: #3a3a3a;\n --msr-surface-muted: #3a3a3a;\n --msr-content: #f5f5f5;\n --msr-color-white: #f5f5f5;\n --msr-color-black: #171717;\n --msr-color-ink-50: #3a3a3a;\n --msr-color-ink-100: #414141;\n --msr-color-ink-200: #4a4a4a;\n --msr-color-ink-300: #5a5a5a;\n --msr-color-ink-500: #a0a0a0;\n --msr-color-ink-700: #dedede;\n --msr-color-ink-900: #f5f5f5;\n --msr-danger-bg: #3f2020;\n --msr-danger-border: #7f3f46;\n --msr-danger-text: #f87171;\n --msr-danger-solid-bg: #c95058;\n --msr-danger-solid-hover: #b7424b;\n --msr-danger-solid-text: #f5f5f5;\n --color-red-700: #fca5a5;\n --msr-control-thumb: #f4f4f5;\n --msr-slider-track: rgba(245, 245, 245, 0.24);\n --msr-shadow-toolbar: 0 0 0.4px lch(100% 0 0 / 0.10),\n 0 3px 8px lch(0% 0 0 / 0.125),\n 0 2px 5px lch(0% 0 0 / 0.125),\n 0 1px 1px lch(0% 0 0 / 0.125);\n --msr-shadow-floating: 0 0 0 0.4px lch(100% 0 0 / 0.05),\n 0 4px 12px lch(0% 0 0 / 0.12),\n 0 1px 3px lch(0% 0 0 / 0.10);\n --msr-shadow-select-menu: 0 0 0 0.4px lch(100% 0 0 / 0.14),\n 0 4px 12px lch(0% 0 0 / 0.22),\n 0 1px 3px lch(0% 0 0 / 0.18);\n color-scheme: dark;\n }\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:bg-white\"], :where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:bg-[#fff]\"] {\n background-color: var(--msr-surface) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:text-black\"] {\n color: var(--msr-content) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:hover:bg-black/4\"]:hover, :where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:hover:bg-black/5\"]:hover {\n background-color: var(--msr-content) !important;\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in srgb, var(--msr-content) 6%, transparent) !important;\n }\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) .mesurer-toolbar-surface {\n background-color: var(--msr-surface) !important;\n box-shadow: var(--msr-shadow-toolbar) !important;\n color: var(--msr-content);\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) :is( .mesurer-menu-surface, .mesurer-color-picker, .mesurer-ti-card, [data-mesurer-text-inspector-info=\"true\"], [data-mesurer-annotation-panel=\"true\"], [data-mesurer-annotation-composer=\"true\"] ) {\n background-color: var(--msr-surface-raised) !important;\n color: var(--msr-content) !important;\n box-shadow: var(--msr-shadow-floating) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) .mesurer-switch-track[data-checked=\"false\"], :where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) .mesurer-control-shell {\n background-color: var(--msr-surface-muted) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) .mesurer-switch-track > span {\n background-color: var(--msr-control-thumb) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) :is(.mesurer-settings-select, .mesurer-settings-select-menu) {\n background-color: var(--msr-surface-raised) !important;\n border-color: var(--msr-color-ink-200) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [data-mesurer-rulers=\"true\"] {\n color: var(--msr-color-ink-500) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [data-slider-container=\"true\"] > div:first-child {\n background-color: var(--msr-slider-track) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:bg-[#0d99ff]\"] {\n background-color: var(--msr-accent) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:border-[#0d99ff]\"] {\n border-color: var(--msr-accent) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:hover:bg-[#0d99ff]\"]:hover, :where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:focus-visible:bg-[#0d99ff]\"]:focus-visible {\n background-color: var(--msr-accent) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:text-white\"] {\n color: var(--msr-color-white) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [data-slider-thumb=\"true\"]:focus-visible {\n box-shadow: 0 0 0 1px var(--msr-accent) !important;\n @supports (color: color-mix(in lab, red, red)) {\n box-shadow: 0 0 0 1px color-mix(in srgb, var(--msr-accent) 25%, transparent) !important;\n }\n}\n:where([data-mesurer-root=\"true\"], [data-mesurer-inspector-ui=\"true\"]) {\n --msr-radius-control: 5px;\n}\n@layer utilities {\n .msr\\:rounded-control {\n border-radius: var(--msr-radius-control);\n }\n}\n.mesurer-thin-scrollbar {\n scrollbar-width: thin;\n scrollbar-color: var(--msr-color-ink-200) transparent;\n}\n.mesurer-thin-scrollbar::-webkit-scrollbar {\n width: 4px;\n height: 4px;\n}\n.mesurer-thin-scrollbar::-webkit-scrollbar-track {\n background: transparent;\n}\n.mesurer-thin-scrollbar::-webkit-scrollbar-thumb {\n background: var(--msr-color-ink-200);\n border-radius: var(--msr-radius-control);\n}\n.mesurer-thin-scrollbar:hover {\n scrollbar-color: var(--msr-color-ink-300) transparent;\n}\n.mesurer-thin-scrollbar:hover::-webkit-scrollbar-thumb {\n background: var(--msr-color-ink-300);\n}\n.mesurer-thin-scrollbar::-webkit-scrollbar-corner {\n background: transparent;\n}\n.mesurer-toolbar-mode-switch {\n position: relative;\n z-index: 1;\n isolation: isolate;\n border-radius: 5px;\n background: transparent;\n}\n.mesurer-toolbar-mode-switch-pill {\n position: absolute;\n top: 2px;\n left: 2px;\n z-index: 0;\n width: 28px;\n height: 28px;\n border-radius: 3px;\n background: var(--msr-color-ink-200, #e2e8f0);\n transform: translateX(0);\n}\n.mesurer-toolbar-mode-switch[data-value=\"edit\"] .mesurer-toolbar-mode-switch-pill {\n transform: translateX(30px);\n}\n.mesurer-toolbar-mode-switch > :not(.mesurer-toolbar-mode-switch-pill) {\n position: relative;\n z-index: 1;\n}\n.mesurer-toolbar-mode-button {\n display: flex;\n width: 28px;\n height: 28px;\n align-items: center;\n justify-content: center;\n border-radius: 3px;\n color: var(--msr-color-ink-700, #334155);\n outline: none;\n}\n.mesurer-toolbar-mode-button[aria-pressed=\"true\"] {\n color: var(--msr-color-ink-900, #18181b);\n}\n.mesurer-toolbar-mode-button[aria-pressed=\"false\"]:not(:disabled):hover {\n background: var(--msr-color-ink-200, #e2e8f0);\n @supports (color: color-mix(in lab, red, red)) {\n background: color-mix(in srgb, var(--msr-color-ink-200, #e2e8f0) 50%, transparent);\n }\n}\n.mesurer-toolbar-mode-button:focus-visible {\n outline: 1px solid var(--msr-color-ink-500, #64748b);\n outline-offset: 1px;\n}\n.mesurer-toolbar-mode-button:disabled {\n cursor: default;\n opacity: 0.35;\n}\n.mesurer-toolbar-mode-stage {\n --msr-select-mode-w: 0px;\n --msr-edit-mode-w: 0px;\n position: relative;\n flex: none;\n width: var(--msr-select-mode-w);\n overflow: visible;\n}\n.mesurer-toolbar-mode-stage[data-mode=\"edit\"] {\n width: var(--msr-edit-mode-w);\n}\n.mesurer-toolbar-mode-track {\n display: flex;\n width: max-content;\n align-items: stretch;\n transform: translateX(0);\n}\n.mesurer-toolbar-mode-stage[data-mode=\"edit\"] .mesurer-toolbar-mode-track {\n transform: translateX(calc(-1 * var(--msr-select-mode-w)));\n}\n.mesurer-toolbar-mode-slot {\n flex: none;\n width: var(--msr-select-mode-w);\n}\n.mesurer-toolbar-mode-slot[data-mode=\"edit\"] {\n width: var(--msr-edit-mode-w);\n}\n.mesurer-toolbar-mode-panel {\n display: flex;\n width: max-content;\n align-items: stretch;\n}\n.mesurer-toolbar-mode-slot[data-open=\"false\"] {\n visibility: hidden;\n pointer-events: none;\n}\n.mesurer-toolbar-mode-stage[data-mode-motion=\"true\"] {\n overflow: hidden;\n}\n.mesurer-toolbar-mode-stage[data-mode-motion=\"true\"] .mesurer-toolbar-mode-slot[data-open=\"false\"] {\n visibility: visible;\n}\n.mesurer-toolbar-mode-stage:has( .mesurer-toolbar-mode-slot[data-open=\"true\"] [role=\"menu\"], .mesurer-toolbar-mode-slot[data-open=\"true\"] [role=\"dialog\"] ) {\n overflow: visible;\n}\n.mesurer-toolbar-mode-stage[data-ready=\"true\"], .mesurer-toolbar-mode-stage[data-ready=\"true\"] .mesurer-toolbar-mode-track {\n transition-duration: 150ms;\n transition-timing-function: ease;\n}\n.mesurer-toolbar-mode-stage[data-ready=\"true\"] {\n transition-property: width;\n}\n.mesurer-toolbar-mode-stage[data-compact-motion=\"true\"] {\n transition-property: none;\n}\n.mesurer-toolbar-mode-stage[data-ready=\"true\"] .mesurer-toolbar-mode-track {\n transition-property: transform;\n}\n.mesurer-toolbar-mode-switch {\n --msr-toolbar-mode-motion: 150ms ease;\n}\n.mesurer-toolbar-mode-switch-pill {\n transition: transform var(--msr-toolbar-mode-motion);\n}\n@media (prefers-reduced-motion: reduce) {\n .mesurer-toolbar-mode-stage, .mesurer-toolbar-mode-track, .mesurer-toolbar-mode-switch-pill {\n transition: none !important;\n }\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ordinal {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-slashed-zero {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-figure {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-spacing {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-fraction {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ease {\n syntax: \"*\";\n inherits: false;\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-border-style: solid;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-ordinal: initial;\n --tw-slashed-zero: initial;\n --tw-numeric-figure: initial;\n --tw-numeric-spacing: initial;\n --tw-numeric-fraction: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-duration: initial;\n --tw-ease: initial;\n }\n }\n}\n", hp = 0, gp = "mesurer:tab-id", _p = "mesurer-settings", vp = "mesurer-state", yp = 80, bp = (e, t) => {
10294
10300
  try {
10295
10301
  let n = e.sessionStorage.getItem(`${t}:toolbar-position`);
10296
10302
  if (!n) return;
@@ -18618,6 +18624,8 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18618
18624
  position: "fixed",
18619
18625
  display: "none",
18620
18626
  background: "transparent",
18627
+ outline: "2px solid var(--msr-accent, #0d99ff)",
18628
+ "outline-offset": "-1px",
18621
18629
  "box-shadow": "0 0 0 100vmax rgb(0 0 0 / 40%)",
18622
18630
  "pointer-events": "none"
18623
18631
  }), h.append(_);
@@ -19423,14 +19431,14 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19423
19431
  fe = !0, ++le, U.clear(), h.removeEventListener("pointerdown", He), h.removeEventListener("pointermove", Ue), h.removeEventListener("pointerup", We), h.removeEventListener("pointercancel", Ge), i.removeEventListener("keydown", Ke, !0), K && i.clearTimeout(K), Pe.dispose(), Ee(), ve(), Ae(!0), s.dispose(), a.dispose();
19424
19432
  });
19425
19433
  }
19426
- }), Vb = 144, Hb = 96, Ub = 8, Wb = 4, Gb = 1800, Kb = (e, t) => {
19434
+ }), Vb = 144, Hb = 96, Ub = 8, Wb = 4, Gb = 1800, Kb = 200, qb = (e, t) => {
19427
19435
  for (let [n, r] of Object.entries(t)) e.style.setProperty(n, r);
19428
- }, qb = (e, t) => ({
19436
+ }, Jb = (e, t) => ({
19429
19437
  left: Math.min(Math.max(Ub, e.left), Math.max(Ub, t.innerWidth - Vb - Ub)),
19430
19438
  top: Math.min(Math.max(Ub, e.top), Math.max(Ub, t.innerHeight - Hb - Ub))
19431
- }), Jb = (e, t) => {
19439
+ }), Yb = (e, t) => {
19432
19440
  let n = e.createElement("button");
19433
- return n.type = "button", n.textContent = t, Kb(n, {
19441
+ return n.type = "button", n.textContent = t, qb(n, {
19434
19442
  height: "32px",
19435
19443
  padding: "0 12px",
19436
19444
  border: "1px solid rgb(255 255 255 / 18%)",
@@ -19442,11 +19450,11 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19442
19450
  "font-weight": "500",
19443
19451
  cursor: "pointer"
19444
19452
  }), n;
19445
- }, Yb = ({ copied: e, downloaded: t, copyFailed: n, downloadFailed: r }) => e && t ? "Copied and saved screenshot" : e && r ? "Copied screenshot · Save unavailable" : t && n ? "Saved screenshot · Copy unavailable" : e ? "Copied screenshot" : t ? "Saved screenshot" : n && r ? "Screenshot captured · Copy and save unavailable" : n ? "Screenshot captured · Copy unavailable" : r ? "Screenshot captured · Save unavailable" : "Screenshot captured", Xb = (e) => e !== null && (e.nodeType === 1 || e.nodeType === 11), Zb = ({ ownerDocument: e, ownerWindow: t, root: n, previewDurationMs: r }) => {
19453
+ }, Xb = ({ copied: e, downloaded: t, copyFailed: n, downloadFailed: r }) => e && t ? "Copied and saved screenshot" : e && r ? "Copied screenshot · Save unavailable" : t && n ? "Saved screenshot · Copy unavailable" : e ? "Copied screenshot" : t ? "Saved screenshot" : n && r ? "Screenshot captured · Copy and save unavailable" : n ? "Screenshot captured · Copy unavailable" : r ? "Screenshot captured · Save unavailable" : "Screenshot captured", Zb = (e) => e !== null && (e.nodeType === 1 || e.nodeType === 11), Qb = ({ ownerDocument: e, ownerWindow: t, root: n, previewDurationMs: r }) => {
19446
19454
  let i = n.closest("[data-mesurer-root='true']")?.parentNode ?? n.parentNode;
19447
- if (!Xb(i)) throw Error("Screenshot preview requires a mounted Mesurer host.");
19455
+ if (!Zb(i)) throw Error("Screenshot preview requires a mounted Mesurer host.");
19448
19456
  let a = e.createElement("div");
19449
- a.dataset.mesurerInspectorUi = "true", a.dataset.mesurerScreenshotInteractive = "true", Kb(a, {
19457
+ a.dataset.mesurerInspectorUi = "true", a.dataset.mesurerScreenshotInteractive = "true", qb(a, {
19450
19458
  position: "fixed",
19451
19459
  left: "0",
19452
19460
  top: "0",
@@ -19458,7 +19466,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19458
19466
  "font-family": "ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif"
19459
19467
  }), i.append(a);
19460
19468
  let o = e.createElement("div");
19461
- o.dataset.mesurerScreenshotPreview = "true", o.setAttribute("role", "button"), o.setAttribute("aria-label", "Open captured screenshot"), o.tabIndex = 0, Kb(o, {
19469
+ o.dataset.mesurerScreenshotPreview = "true", o.setAttribute("role", "button"), o.setAttribute("aria-label", "Open captured screenshot"), o.tabIndex = 0, qb(o, {
19462
19470
  position: "fixed",
19463
19471
  display: "none",
19464
19472
  "z-index": "96",
@@ -19476,7 +19484,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19476
19484
  "touch-action": "none"
19477
19485
  });
19478
19486
  let s = e.createElement("img");
19479
- s.dataset.mesurerScreenshotPreviewImage = "true", s.alt = "Captured screenshot", s.draggable = !1, s.title = "Click to open · Right-click for browser image actions", Kb(s, {
19487
+ s.dataset.mesurerScreenshotPreviewImage = "true", s.alt = "Captured screenshot", s.draggable = !1, s.title = "Click to open · Right-click for browser image actions", qb(s, {
19480
19488
  display: "block",
19481
19489
  width: "100%",
19482
19490
  height: "100%",
@@ -19484,7 +19492,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19484
19492
  "background-color": "white"
19485
19493
  }), o.append(s);
19486
19494
  let c = e.createElement("button");
19487
- c.dataset.mesurerScreenshotPreviewDismiss = "true", c.type = "button", c.setAttribute("aria-label", "Dismiss screenshot preview"), c.title = "Dismiss", Kb(c, {
19495
+ c.dataset.mesurerScreenshotPreviewDismiss = "true", c.type = "button", c.setAttribute("aria-label", "Dismiss screenshot preview"), c.title = "Dismiss", qb(c, {
19488
19496
  position: "absolute",
19489
19497
  top: "8px",
19490
19498
  right: "8px",
@@ -19502,15 +19510,16 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19502
19510
  "font-family": "inherit",
19503
19511
  "font-size": "14px",
19504
19512
  "line-height": "1",
19505
- "z-index": "1",
19506
- cursor: "pointer"
19513
+ "z-index": "2",
19514
+ cursor: "pointer",
19515
+ "touch-action": "none"
19507
19516
  });
19508
19517
  let l = e.createElementNS("http://www.w3.org/2000/svg", "svg");
19509
19518
  l.setAttribute("viewBox", "0 0 16 16"), l.setAttribute("width", "12"), l.setAttribute("height", "12"), l.setAttribute("fill", "none"), l.setAttribute("aria-hidden", "true");
19510
19519
  let u = e.createElementNS("http://www.w3.org/2000/svg", "path");
19511
19520
  u.setAttribute("d", "m4 4 8 8M12 4l-8 8"), u.setAttribute("stroke", "currentColor"), u.setAttribute("stroke-width", "1.75"), u.setAttribute("stroke-linecap", "round"), l.append(u), c.append(l), o.append(c), a.append(o);
19512
19521
  let d = e.createElement("div");
19513
- d.dataset.mesurerScreenshotViewer = "true", d.setAttribute("role", "dialog"), d.setAttribute("aria-modal", "true"), d.setAttribute("aria-label", "Screenshot viewer"), Kb(d, {
19522
+ d.dataset.mesurerScreenshotViewer = "true", d.setAttribute("role", "dialog"), d.setAttribute("aria-modal", "true"), d.setAttribute("aria-label", "Screenshot viewer"), qb(d, {
19514
19523
  position: "fixed",
19515
19524
  inset: "0",
19516
19525
  display: "none",
@@ -19524,7 +19533,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19524
19533
  "pointer-events": "auto"
19525
19534
  });
19526
19535
  let f = e.createElement("img");
19527
- f.dataset.mesurerScreenshotViewerImage = "true", f.alt = "Captured screenshot", Kb(f, {
19536
+ f.dataset.mesurerScreenshotViewerImage = "true", f.alt = "Captured screenshot", qb(f, {
19528
19537
  display: "block",
19529
19538
  "max-width": "calc(100vw - 96px)",
19530
19539
  "max-height": "calc(100vh - 112px)",
@@ -19535,7 +19544,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19535
19544
  "box-shadow": "0 8px 30px rgb(0 0 0 / 28%)"
19536
19545
  }), d.append(f);
19537
19546
  let p = e.createElement("div");
19538
- p.dataset.mesurerScreenshotViewerControls = "true", Kb(p, {
19547
+ p.dataset.mesurerScreenshotViewerControls = "true", qb(p, {
19539
19548
  position: "fixed",
19540
19549
  top: "16px",
19541
19550
  right: "16px",
@@ -19543,14 +19552,14 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19543
19552
  gap: "8px",
19544
19553
  "pointer-events": "auto"
19545
19554
  });
19546
- let m = Jb(e, "Copy");
19555
+ let m = Yb(e, "Copy");
19547
19556
  m.dataset.mesurerScreenshotViewerCopy = "true", m.setAttribute("aria-label", "Copy screenshot");
19548
- let h = Jb(e, "Save");
19557
+ let h = Yb(e, "Save");
19549
19558
  h.dataset.mesurerScreenshotViewerSave = "true", h.setAttribute("aria-label", "Save screenshot");
19550
- let g = Jb(e, "Close");
19559
+ let g = Yb(e, "Close");
19551
19560
  g.dataset.mesurerScreenshotViewerClose = "true", g.setAttribute("aria-label", "Close screenshot viewer"), p.append(m, h, g), d.append(p), a.append(d);
19552
19561
  let _ = e.createElement("div");
19553
- _.dataset.mesurerScreenshotToast = "true", _.setAttribute("role", "status"), Kb(_, {
19562
+ _.dataset.mesurerScreenshotToast = "true", _.setAttribute("role", "status"), qb(_, {
19554
19563
  position: "fixed",
19555
19564
  left: "50%",
19556
19565
  bottom: "20px",
@@ -19565,45 +19574,64 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19565
19574
  "font-weight": "500",
19566
19575
  "pointer-events": "none"
19567
19576
  }), a.append(_);
19568
- let v = null, y = null, b = null, x = null, S = 0, C = 0, w = !1, T = () => {
19577
+ let v = null, y = null, b = null, x = null, S = 0, C = 0, w = null, T = !1, E = () => {
19569
19578
  S && t.clearTimeout(S), S = 0;
19570
- }, E = () => {
19579
+ }, D = () => {
19571
19580
  C && t.clearTimeout(C), C = 0;
19572
- }, D = (e, n = !1) => {
19573
- E(), _.textContent = e, _.style.backgroundColor = n ? "#b42318" : "rgb(28 28 30 / 90%)", _.style.display = "block", C = t.setTimeout(() => {
19581
+ }, O = (e, n = !1) => {
19582
+ D(), _.textContent = e, _.style.backgroundColor = n ? "#b42318" : "rgb(28 28 30 / 90%)", _.style.display = "block", C = t.setTimeout(() => {
19574
19583
  C = 0, _.style.display = "none";
19575
19584
  }, Gb);
19576
- }, O = () => {
19577
- d.style.display = "none";
19578
19585
  }, k = () => {
19579
- y && globalThis.URL.revokeObjectURL(y), y = null, v = null, s.removeAttribute("src"), f.removeAttribute("src");
19586
+ d.style.display = "none";
19580
19587
  }, A = () => {
19581
- T(), O(), o.style.display = "none", k();
19582
- }, j = () => qb({
19588
+ y && globalThis.URL.revokeObjectURL(y), y = null, v = null, s.removeAttribute("src"), f.removeAttribute("src");
19589
+ }, j = () => {
19590
+ E(), k(), w &&= (w.cancel(), null), o.style.display = "none", o.style.opacity = "1", o.style.transform = "none", o.style.removeProperty("will-change"), o.style.pointerEvents = "auto", A();
19591
+ }, M = () => {
19592
+ if (!v || o.style.display === "none" || w) return;
19593
+ E(), k();
19594
+ let e = o.getBoundingClientRect(), n = Math.max(152, t.innerWidth - e.left + Ub);
19595
+ o.style.pointerEvents = "none", o.style.willChange = "transform, opacity";
19596
+ let r = o.animate([{
19597
+ transform: "translateX(0) scale(1)",
19598
+ opacity: 1
19599
+ }, {
19600
+ transform: `translateX(${n}px) scale(0.92)`,
19601
+ opacity: 0
19602
+ }], {
19603
+ duration: Kb,
19604
+ easing: "ease",
19605
+ fill: "forwards"
19606
+ });
19607
+ w = r, r.finished.catch(() => void 0).then(() => {
19608
+ w === r && (r.cancel(), w = null, j());
19609
+ });
19610
+ }, N = () => Jb({
19583
19611
  left: t.innerWidth - Vb - Ub,
19584
19612
  top: t.innerHeight - Hb - Ub
19585
- }, t), M = (e) => {
19586
- let n = qb(e, t);
19613
+ }, t), P = (e) => {
19614
+ let n = Jb(e, t);
19587
19615
  b = n, o.style.left = `${n.left}px`, o.style.top = `${n.top}px`;
19588
- }, N = () => {
19589
- !v || !y || (T(), d.style.display = "flex", g.focus());
19590
- }, P = async () => {
19616
+ }, F = () => {
19617
+ !v || !y || (E(), d.style.display = "flex", g.focus());
19618
+ }, I = async () => {
19591
19619
  let e = v;
19592
19620
  if (e) try {
19593
- await Ya(Promise.resolve(e), t), D("Copied screenshot");
19621
+ await Ya(Promise.resolve(e), t), O("Copied screenshot");
19594
19622
  } catch {
19595
- D("Could not copy screenshot", !0);
19623
+ O("Could not copy screenshot", !0);
19596
19624
  }
19597
- }, F = () => {
19625
+ }, L = () => {
19598
19626
  let n = v;
19599
19627
  if (n) try {
19600
- Za(n, Xa(), e, t), D("Saved screenshot");
19628
+ Za(n, Xa(), e, t), O("Saved screenshot");
19601
19629
  } catch {
19602
- D("Could not save screenshot", !0);
19630
+ O("Could not save screenshot", !0);
19603
19631
  }
19604
- }, I = (e, t, n) => {
19632
+ }, R = (e, t, n) => {
19605
19633
  if (!v) return !1;
19606
- T();
19634
+ E();
19607
19635
  let r = o.getBoundingClientRect();
19608
19636
  return x = {
19609
19637
  pointerId: n,
@@ -19613,73 +19641,73 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19613
19641
  top: r.top,
19614
19642
  moved: !1
19615
19643
  }, o.style.cursor = "grabbing", !0;
19616
- }, L = (e, t) => {
19644
+ }, z = (e, t) => {
19617
19645
  let n = x;
19618
19646
  if (!n) return;
19619
19647
  let r = e - n.startX, i = t - n.startY;
19620
- !n.moved && Math.hypot(r, i) >= Wb && (n.moved = !0), n.moved && M({
19648
+ !n.moved && Math.hypot(r, i) >= Wb && (n.moved = !0), n.moved && P({
19621
19649
  left: n.left + r,
19622
19650
  top: n.top + i
19623
19651
  });
19624
- }, R = () => {
19652
+ }, B = () => {
19625
19653
  let e = x;
19626
- e && (x = null, o.style.cursor = "grab", e.moved || N());
19627
- }, z = () => {
19654
+ e && (x = null, o.style.cursor = "grab", e.moved || F());
19655
+ }, V = () => {
19628
19656
  x && (x = null, o.style.cursor = "grab");
19629
- }, B = (e) => {
19630
- e.button !== 0 || !I(e.clientX, e.clientY, null) || e.preventDefault();
19631
- }, V = (e) => {
19632
- x?.pointerId === null && L(e.clientX, e.clientY);
19633
19657
  }, H = (e) => {
19634
- e.button === 0 && x?.pointerId === null && R();
19658
+ e.button !== 0 || !R(e.clientX, e.clientY, null) || e.preventDefault();
19635
19659
  }, U = (e) => {
19636
- e.pointerType !== "mouse" && e.button === 0 && I(e.clientX, e.clientY, e.pointerId) && (o.setPointerCapture?.(e.pointerId), e.preventDefault());
19660
+ x?.pointerId === null && z(e.clientX, e.clientY);
19637
19661
  }, W = (e) => {
19638
- let t = x?.pointerId;
19639
- t != null && t === e.pointerId && L(e.clientX, e.clientY);
19662
+ e.button === 0 && x?.pointerId === null && B();
19640
19663
  }, ee = (e) => {
19641
- let t = x?.pointerId;
19642
- t != null && t === e.pointerId && (o.hasPointerCapture?.(e.pointerId) && o.releasePointerCapture(e.pointerId), R());
19664
+ e.pointerType !== "mouse" && e.button === 0 && R(e.clientX, e.clientY, e.pointerId) && (o.setPointerCapture?.(e.pointerId), e.preventDefault());
19643
19665
  }, te = (e) => {
19644
19666
  let t = x?.pointerId;
19645
- t != null && t === e.pointerId && (o.hasPointerCapture?.(e.pointerId) && o.releasePointerCapture(e.pointerId), z());
19667
+ t != null && t === e.pointerId && z(e.clientX, e.clientY);
19646
19668
  }, G = (e) => {
19647
- (e.key === "Enter" || e.key === " ") && (e.preventDefault(), N());
19669
+ let t = x?.pointerId;
19670
+ t != null && t === e.pointerId && (o.hasPointerCapture?.(e.pointerId) && o.releasePointerCapture(e.pointerId), B());
19648
19671
  }, ne = (e) => {
19649
- e.target !== s && e.preventDefault();
19672
+ let t = x?.pointerId;
19673
+ t != null && t === e.pointerId && (o.hasPointerCapture?.(e.pointerId) && o.releasePointerCapture(e.pointerId), V());
19650
19674
  }, re = (e) => {
19651
- e.target === d && O();
19675
+ (e.key === "Enter" || e.key === " ") && (e.preventDefault(), F());
19652
19676
  }, ie = (e) => {
19653
- e.key === "Escape" && d.style.display !== "none" && (e.preventDefault(), e.stopImmediatePropagation(), O());
19677
+ e.target !== s && e.preventDefault();
19678
+ }, ae = (e) => {
19679
+ e.target === d && k();
19680
+ }, oe = (e) => {
19681
+ e.key === "Escape" && d.style.display !== "none" && (e.preventDefault(), e.stopImmediatePropagation(), k());
19654
19682
  };
19655
19683
  return c.addEventListener("pointerdown", (e) => e.stopPropagation()), c.addEventListener("mousedown", (e) => e.stopPropagation()), c.addEventListener("click", (e) => {
19656
- e.stopPropagation(), A();
19657
- }), o.addEventListener("mousedown", B), o.addEventListener("pointerdown", U), o.addEventListener("keydown", G), o.addEventListener("contextmenu", ne), d.addEventListener("click", re), m.addEventListener("click", () => {
19658
- P();
19659
- }), h.addEventListener("click", F), g.addEventListener("click", O), t.addEventListener("mousemove", V, !0), t.addEventListener("mouseup", H, !0), t.addEventListener("pointermove", W, !0), t.addEventListener("pointerup", ee, !0), t.addEventListener("pointercancel", te, !0), t.addEventListener("keydown", ie, !0), {
19684
+ e.stopPropagation(), M();
19685
+ }), o.addEventListener("mousedown", H), o.addEventListener("pointerdown", ee), o.addEventListener("keydown", re), o.addEventListener("contextmenu", ie), d.addEventListener("click", ae), m.addEventListener("click", () => {
19686
+ I();
19687
+ }), h.addEventListener("click", L), g.addEventListener("click", k), t.addEventListener("mousemove", U, !0), t.addEventListener("mouseup", W, !0), t.addEventListener("pointermove", te, !0), t.addEventListener("pointerup", G, !0), t.addEventListener("pointercancel", ne, !0), t.addEventListener("keydown", oe, !0), {
19660
19688
  show(e, n) {
19661
- if (w) return;
19662
- T(), O(), k(), v = e;
19689
+ if (T) return;
19690
+ E(), k(), w &&= (w.cancel(), null), o.style.opacity = "1", o.style.transform = "none", o.style.removeProperty("will-change"), o.style.pointerEvents = "auto", A(), v = e;
19663
19691
  let i = globalThis.URL.createObjectURL(e);
19664
- y = i, s.src = i, f.src = i, o.style.display = "block", M(b ?? j()), D(Yb(n)), r > 0 && (S = t.setTimeout(A, r));
19692
+ y = i, s.src = i, f.src = i, o.style.display = "block", P(b ?? N()), O(Xb(n)), r > 0 && (S = t.setTimeout(j, r));
19665
19693
  },
19666
- dismiss: A,
19694
+ dismiss: j,
19667
19695
  dispose() {
19668
- w || (w = !0, T(), E(), A(), t.removeEventListener("mousemove", V, !0), t.removeEventListener("mouseup", H, !0), t.removeEventListener("pointermove", W, !0), t.removeEventListener("pointerup", ee, !0), t.removeEventListener("pointercancel", te, !0), t.removeEventListener("keydown", ie, !0), o.removeEventListener("mousedown", B), o.removeEventListener("pointerdown", U), o.removeEventListener("keydown", G), o.removeEventListener("contextmenu", ne), d.removeEventListener("click", re), a.remove());
19696
+ T || (T = !0, E(), D(), j(), t.removeEventListener("mousemove", U, !0), t.removeEventListener("mouseup", W, !0), t.removeEventListener("pointermove", te, !0), t.removeEventListener("pointerup", G, !0), t.removeEventListener("pointercancel", ne, !0), t.removeEventListener("keydown", oe, !0), o.removeEventListener("mousedown", H), o.removeEventListener("pointerdown", ee), o.removeEventListener("keydown", re), o.removeEventListener("contextmenu", ie), d.removeEventListener("click", ae), a.remove());
19669
19697
  }
19670
19698
  };
19671
- }, Qb = "mesurer.screenshot", $b = "screenshot", ex = "mesurer.screenshot.settings", tx = "mesurer.screenshot.active", nx = "runtime:solid", rx = "screenshot.toggle", ix = 2500, ax = 0, ox = [
19699
+ }, $b = "mesurer.screenshot", ex = "screenshot", tx = "mesurer.screenshot.settings", nx = "mesurer.screenshot.active", rx = "runtime:solid", ix = "screenshot.toggle", ax = 2500, ox = 0, sx = [
19672
19700
  "[data-mesurer-measurement='true']",
19673
19701
  "[data-mesurer-selected-measurement='true']",
19674
19702
  "[data-mesurer-selection-spacing-target='true']",
19675
19703
  "[data-mesurer-guide='true']",
19676
19704
  "[data-mesurer-distance='true']"
19677
- ].join(","), sx = `${ox},[data-mesurer-rulers='true']`, cx = {
19705
+ ].join(","), cx = `${sx},[data-mesurer-rulers='true']`, lx = {
19678
19706
  viewBox: "0 0 256 256",
19679
19707
  paths: ["m 96,50 a 6.0006,6.0006 0 0 0 -4.992188,2.671875 L 76.789062,74 H 40 C 27.920803,74 18,83.920803 18,96 v 96 c 0,12.0792 9.920803,22 22,22 h 176 c 12.0792,0 22,-9.9208 22,-22 V 96 C 238,83.920803 228.0792,74 216,74 H 179.21094 L 164.99219,52.671875 A 6.0006,6.0006 0 0 0 160,50 Z m 3.210937,12 h 57.578123 l 14.21875,21.328125 A 6.0006,6.0006 0 0 0 176,86 h 40 c 5.59392,0 10,4.406085 10,10 v 96 c 0,5.59392 -4.40608,10 -10,10 H 40 c -5.593915,0 -10,-4.40608 -10,-10 V 96 c 0,-5.593915 4.406085,-10 10,-10 h 40 a 6.0006,6.0006 0 0 0 4.992187,-2.671875 z", "m 128,94 c -23.12489,0 -42,18.87511 -42,42 0,23.12489 18.87511,42 42,42 23.12489,0 42,-18.87511 42,-42 0,-23.12489 -18.87511,-42 -42,-42 z m 0,12 c 16.63961,0 30,13.36039 30,30 0,16.63961 -13.36039,30 -30,30 -16.63961,0 -30,-13.36039 -30,-30 0,-16.63961 13.36039,-30 30,-30 z"]
19680
- }, lx = (e, t) => {
19681
- for (let [n, r] of Object.entries(t)) e.style.setProperty(n, r);
19682
19708
  }, ux = (e, t) => {
19709
+ for (let [n, r] of Object.entries(t)) e.style.setProperty(n, r);
19710
+ }, dx = (e, t) => {
19683
19711
  for (let n of [
19684
19712
  "left",
19685
19713
  "top",
@@ -19691,63 +19719,63 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19691
19719
  let r = t[n];
19692
19720
  r === void 0 ? e.style.removeProperty(n) : e.style.setProperty(n, `${r}px`);
19693
19721
  }
19694
- }, dx = (e) => {
19695
- let t = e(ex);
19722
+ }, fx = (e) => {
19723
+ let t = e(tx);
19696
19724
  return {
19697
19725
  toolEnabled: t?.toolEnabled ?? !0,
19698
19726
  copy: t?.copy ?? !0,
19699
19727
  download: t?.download ?? !1,
19700
19728
  includeMeasurements: t?.includeMeasurements ?? !1
19701
19729
  };
19702
- }, fx = (e) => ({
19730
+ }, px = (e) => ({
19703
19731
  value: e.style.getPropertyValue("display"),
19704
19732
  priority: e.style.getPropertyPriority("display")
19705
- }), px = (e, t) => {
19733
+ }), mx = (e, t) => {
19706
19734
  t.value || t.priority ? e.style.setProperty("display", t.value, t.priority) : e.style.removeProperty("display");
19707
- }, mx = (e, t) => {
19735
+ }, hx = (e, t) => {
19708
19736
  let n = e;
19709
19737
  for (; n.parentElement && n.parentElement !== t;) n = n.parentElement;
19710
19738
  return n.parentElement === t ? n : null;
19711
- }, hx = (e) => {
19739
+ }, gx = (e) => {
19712
19740
  let t = e.querySelector("[data-mesurer-root='true']");
19713
19741
  if (!t) return () => void 0;
19714
19742
  let n = /* @__PURE__ */ new Set();
19715
19743
  for (let e of t.querySelectorAll("[data-mesurer-rulers='true']")) {
19716
- let r = mx(e, t);
19744
+ let r = hx(e, t);
19717
19745
  r && n.add(r);
19718
19746
  }
19719
- for (let e of t.querySelectorAll(ox)) {
19720
- let r = mx(e, t);
19747
+ for (let e of t.querySelectorAll(sx)) {
19748
+ let r = hx(e, t);
19721
19749
  r && n.add(r);
19722
19750
  }
19723
19751
  let r = [];
19724
19752
  for (let e of n) e.dataset.mesurerInspectorUi !== "true" && (r.push({
19725
19753
  element: e,
19726
- display: fx(e)
19754
+ display: px(e)
19727
19755
  }), e.style.setProperty("display", "none", "important"));
19728
19756
  return () => {
19729
- for (let e of r) px(e.element, e.display);
19757
+ for (let e of r) mx(e.element, e.display);
19730
19758
  };
19731
- }, gx = (e) => Array.from(e.querySelectorAll(sx)).filter((e) => e.dataset.mesurerInspectorUi === "true").map((e) => ({
19759
+ }, _x = (e) => Array.from(e.querySelectorAll(cx)).filter((e) => e.dataset.mesurerInspectorUi === "true").map((e) => ({
19732
19760
  element: e,
19733
- display: fx(e)
19734
- })), _x = (e) => {
19735
- for (let t of e) t.element.isConnected && px(t.element, t.display);
19736
- }, vx = (e = {}) => Ta({
19737
- id: Qb,
19761
+ display: px(e)
19762
+ })), vx = (e) => {
19763
+ for (let t of e) t.element.isConnected && mx(t.element, t.display);
19764
+ }, yx = (e = {}) => Ta({
19765
+ id: $b,
19738
19766
  version: "0.1.0",
19739
- requires: [nx],
19767
+ requires: [rx],
19740
19768
  provides: [
19741
19769
  "tool:screenshot",
19742
19770
  "capture:screenshot",
19743
19771
  "settings:screenshot"
19744
19772
  ],
19745
19773
  setup(t) {
19746
- let n = t.service.get(nx);
19774
+ let n = t.service.get(rx);
19747
19775
  if (!n) throw Error("Screenshot plugin requires the Solid renderer runtime.");
19748
- let { ownerDocument: r, ownerWindow: i } = n, a = n.createWorkspaceRuntime(), o = n.createInspectorMount(), s = e.capture ?? e.captureVisibleTab, c = s ?? _o, l = e.previewDurationMs ?? ax;
19776
+ let { ownerDocument: r, ownerWindow: i } = n, a = n.createWorkspaceRuntime(), o = n.createInspectorMount(), s = e.capture ?? e.captureVisibleTab, c = s ?? _o, l = e.previewDurationMs ?? ox;
19749
19777
  t.state.register({
19750
- id: ex,
19778
+ id: tx,
19751
19779
  initial: {
19752
19780
  toolEnabled: e.toolEnabled ?? !0,
19753
19781
  copy: e.copy ?? !0,
@@ -19756,11 +19784,11 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19756
19784
  },
19757
19785
  persist: !0
19758
19786
  }), t.state.register({
19759
- id: tx,
19787
+ id: nx,
19760
19788
  initial: !1
19761
19789
  });
19762
19790
  let u = o.element;
19763
- u.dataset.mesurerScreenshot = "true", lx(u, {
19791
+ u.dataset.mesurerScreenshot = "true", ux(u, {
19764
19792
  position: "fixed",
19765
19793
  inset: "0",
19766
19794
  "z-index": "85",
@@ -19768,7 +19796,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19768
19796
  "font-family": "ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif"
19769
19797
  });
19770
19798
  let d = r.createElement("div");
19771
- d.dataset.mesurerScreenshotSelect = "true", d.setAttribute("role", "application"), d.setAttribute("aria-label", "Screenshot selection"), lx(d, {
19799
+ d.dataset.mesurerScreenshotSelect = "true", d.setAttribute("role", "application"), d.setAttribute("aria-label", "Screenshot selection"), ux(d, {
19772
19800
  position: "fixed",
19773
19801
  inset: "0",
19774
19802
  display: "none",
@@ -19780,13 +19808,13 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19780
19808
  }), u.append(d);
19781
19809
  let f = Array.from({ length: 4 }, () => {
19782
19810
  let e = r.createElement("div");
19783
- return lx(e, {
19811
+ return ux(e, {
19784
19812
  position: "fixed",
19785
19813
  "background-color": "rgb(0 0 0 / 40%)",
19786
19814
  "pointer-events": "none"
19787
19815
  }), d.append(e), e;
19788
19816
  }), p = r.createElement("div");
19789
- lx(p, {
19817
+ ux(p, {
19790
19818
  position: "fixed",
19791
19819
  display: "none",
19792
19820
  border: "1px solid #0d99ff",
@@ -19794,7 +19822,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19794
19822
  "pointer-events": "none"
19795
19823
  }), d.append(p);
19796
19824
  let m = r.createElement("div");
19797
- lx(m, {
19825
+ ux(m, {
19798
19826
  position: "fixed",
19799
19827
  display: "none",
19800
19828
  "z-index": "86",
@@ -19808,7 +19836,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19808
19836
  "pointer-events": "none"
19809
19837
  }), d.append(m);
19810
19838
  let h = r.createElement("div");
19811
- h.textContent = "Drag to select · Esc to cancel", lx(h, {
19839
+ h.textContent = "Drag to select · Esc to cancel", ux(h, {
19812
19840
  position: "fixed",
19813
19841
  left: "50%",
19814
19842
  bottom: "16px",
@@ -19821,7 +19849,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19821
19849
  "pointer-events": "none"
19822
19850
  }), d.append(h);
19823
19851
  let g = r.createElement("div");
19824
- g.dataset.mesurerScreenshotError = "true", g.setAttribute("role", "status"), g.textContent = "Could not save screenshot", lx(g, {
19852
+ g.dataset.mesurerScreenshotError = "true", g.setAttribute("role", "status"), g.textContent = "Could not save screenshot", ux(g, {
19825
19853
  position: "fixed",
19826
19854
  display: "none",
19827
19855
  "z-index": "97",
@@ -19832,8 +19860,8 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19832
19860
  "font-size": "11px",
19833
19861
  "pointer-events": "none"
19834
19862
  }), u.append(g);
19835
- let _ = null, v = null, y = 0, b = 0, x = !1, S = !1, C = !1, w = () => t.state.get("mesurer.screenshot.active") ?? !1, T = () => dx(t.state.get), E = (e) => {
19836
- t.state.update(ex, (t) => {
19863
+ let _ = null, v = null, y = 0, b = 0, x = !1, S = !1, C = !1, w = () => t.state.get("mesurer.screenshot.active") ?? !1, T = () => fx(t.state.get), E = (e) => {
19864
+ t.state.update(tx, (t) => {
19837
19865
  let n = { ...t };
19838
19866
  return e.toolEnabled !== void 0 && (n.toolEnabled = e.toolEnabled), e.copy !== void 0 && (n.copy = e.copy), e.download !== void 0 && (n.download = e.download), e.includeMeasurements !== void 0 && (n.includeMeasurements = e.includeMeasurements), n;
19839
19867
  });
@@ -19856,13 +19884,13 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19856
19884
  }, A = (e) => {
19857
19885
  let t = i.innerWidth, n = i.innerHeight;
19858
19886
  if (!e || e.width <= 0 || e.height <= 0) {
19859
- ux(f[0], {
19887
+ dx(f[0], {
19860
19888
  left: 0,
19861
19889
  top: 0,
19862
19890
  width: t,
19863
19891
  height: n
19864
19892
  });
19865
- for (let e of f.slice(1)) ux(e, {
19893
+ for (let e of f.slice(1)) dx(e, {
19866
19894
  left: 0,
19867
19895
  top: 0,
19868
19896
  width: 0,
@@ -19871,31 +19899,31 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19871
19899
  p.style.display = "none", m.style.display = "none";
19872
19900
  return;
19873
19901
  }
19874
- ux(f[0], {
19902
+ dx(f[0], {
19875
19903
  left: 0,
19876
19904
  top: 0,
19877
19905
  width: t,
19878
19906
  height: e.top
19879
- }), ux(f[1], {
19907
+ }), dx(f[1], {
19880
19908
  left: 0,
19881
19909
  top: e.top,
19882
19910
  width: e.left,
19883
19911
  height: e.height
19884
- }), ux(f[2], {
19912
+ }), dx(f[2], {
19885
19913
  left: e.left + e.width,
19886
19914
  top: e.top,
19887
19915
  width: Math.max(0, t - e.left - e.width),
19888
19916
  height: e.height
19889
- }), ux(f[3], {
19917
+ }), dx(f[3], {
19890
19918
  left: 0,
19891
19919
  top: e.top + e.height,
19892
19920
  width: t,
19893
19921
  height: Math.max(0, n - e.top - e.height)
19894
- }), p.style.display = "block", ux(p, e), m.style.display = "block", m.textContent = `${Math.round(e.width)} × ${Math.round(e.height)}`, ux(m, {
19922
+ }), p.style.display = "block", dx(p, e), m.style.display = "block", m.textContent = `${Math.round(e.width)} × ${Math.round(e.height)}`, dx(m, {
19895
19923
  left: e.left + e.width / 2,
19896
19924
  top: Math.min(n - 22, e.top + e.height + 6)
19897
19925
  });
19898
- }, j = () => n.portalTarget.querySelector("[data-mesurer-tool-id='screenshot']")?.getBoundingClientRect() ?? null, M = Zb({
19926
+ }, j = () => n.portalTarget.querySelector("[data-mesurer-tool-id='screenshot']")?.getBoundingClientRect() ?? null, M = Qb({
19899
19927
  ownerDocument: r,
19900
19928
  ownerWindow: i,
19901
19929
  root: u,
@@ -19906,7 +19934,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19906
19934
  }, P = () => {
19907
19935
  y && i.clearTimeout(y), g.style.display = "block", N(g), y = i.setTimeout(() => {
19908
19936
  y = 0, g.style.display = "none";
19909
- }, ix);
19937
+ }, ax);
19910
19938
  }, F = () => {
19911
19939
  _ = null, A(null), d.style.visibility = "", d.style.display = "none", u.style.pointerEvents = "none", D(!1), k();
19912
19940
  }, I = () => {
@@ -19915,8 +19943,8 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19915
19943
  if (x) throw Error("A screenshot capture is already running.");
19916
19944
  if (e.width < 4 || e.height < 4) throw Error("Screenshot selection must be at least 4px by 4px.");
19917
19945
  x = !0;
19918
- let o = ++b, s = T(), l = s.includeMeasurements ? gx(r) : [], u = s.includeMeasurements ? () => void 0 : hx(n.portalTarget);
19919
- a.prepareCapture(), s.includeMeasurements && _x(l);
19946
+ let o = ++b, s = T(), l = s.includeMeasurements ? _x(r) : [], u = s.includeMeasurements ? () => void 0 : gx(n.portalTarget);
19947
+ a.prepareCapture(), s.includeMeasurements && vx(l);
19920
19948
  try {
19921
19949
  d.style.visibility = "hidden", await Qa(i);
19922
19950
  let n = await Ja(await c({
@@ -20024,10 +20052,10 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
20024
20052
  label: "Screenshot",
20025
20053
  shortcut: "Shift+S",
20026
20054
  order: 70,
20027
- command: rx,
20055
+ command: ix,
20028
20056
  toolbarMode: "select",
20029
20057
  compactPinned: !0,
20030
- icon: cx,
20058
+ icon: lx,
20031
20059
  active: w,
20032
20060
  hidden: () => !T().toolEnabled,
20033
20061
  menu: {
@@ -20093,31 +20121,31 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
20093
20121
  set: (e) => E({ includeMeasurements: e })
20094
20122
  }
20095
20123
  ]
20096
- }), t.command.register(rx, R), t.service.provide($b, W), t.lifecycle.onDispose(() => {
20124
+ }), t.command.register(ix, R), t.service.provide(ex, W), t.lifecycle.onDispose(() => {
20097
20125
  C = !0, b += 1, d.removeEventListener("pointerdown", z), d.removeEventListener("pointermove", B), d.removeEventListener("pointerup", V), d.removeEventListener("pointercancel", H), i.removeEventListener("keydown", U, !0), y && i.clearTimeout(y), M.dispose(), k(), vo(i), a.finishCapture(), a.dispose(), o.dispose();
20098
20126
  });
20099
20127
  }
20100
- }), yx = (e) => Number.parseFloat(e) || 0, bx = 0, xx = (e, t) => {
20128
+ }), bx = (e) => Number.parseFloat(e) || 0, xx = 0, Sx = (e, t) => {
20101
20129
  let n = t.CSS;
20102
20130
  return n?.escape ? n.escape(e) : e.replace(/[^a-zA-Z0-9_-]/g, (e) => `\\${e}`);
20103
- }, Sx = (e) => e.nodeType === 9, Cx = (e) => e.nodeType === 11;
20104
- function wx(e) {
20131
+ }, Cx = (e) => e.nodeType === 9, wx = (e) => e.nodeType === 11;
20132
+ function Tx(e) {
20105
20133
  let t = e.getRootNode();
20106
- return Cx(t) ? t : e.ownerDocument;
20134
+ return wx(t) ? t : e.ownerDocument;
20107
20135
  }
20108
- var Tx = (e, t) => {
20109
- if (Sx(e) || Cx(e)) return e;
20110
- let n = wx(e);
20111
- return Cx(n) ? n : t;
20112
- }, Ex = 600, Dx = "audio, canvas, embed, iframe, img, input, object, picture, select, textarea, video", Ox = /* @__PURE__ */ new WeakMap(), kx = (e) => {
20136
+ var Ex = (e, t) => {
20137
+ if (Cx(e) || wx(e)) return e;
20138
+ let n = Tx(e);
20139
+ return wx(n) ? n : t;
20140
+ }, Dx = 600, Ox = "audio, canvas, embed, iframe, img, input, object, picture, select, textarea, video", kx = /* @__PURE__ */ new WeakMap(), Ax = (e) => {
20113
20141
  let t = e;
20114
20142
  for (; t;) {
20115
- if ((Ox.get(t) ?? 0) > 0) return !0;
20143
+ if ((kx.get(t) ?? 0) > 0) return !0;
20116
20144
  let e = t.getRootNode();
20117
- t = Cx(e) ? e.host : t.parentElement;
20145
+ t = wx(e) ? e.host : t.parentElement;
20118
20146
  }
20119
20147
  return !1;
20120
- }, Ax = (e, t) => t.x >= e.left && t.x <= e.right && t.y >= e.top && t.y <= e.bottom, jx = (e, t) => Array.from(e.getClientRects()).some((e) => Ax(e, t)), Mx = (e, t, n) => {
20148
+ }, jx = (e, t) => t.x >= e.left && t.x <= e.right && t.y >= e.top && t.y <= e.bottom, Mx = (e, t) => Array.from(e.getClientRects()).some((e) => jx(e, t)), Nx = (e, t, n) => {
20121
20149
  let r = e;
20122
20150
  for (; r;) {
20123
20151
  let e = n.getComputedStyle(r);
@@ -20126,7 +20154,7 @@ var Tx = (e, t) => {
20126
20154
  r = r.parentElement;
20127
20155
  }
20128
20156
  return !0;
20129
- }, Nx = (e, t) => {
20157
+ }, Px = (e, t) => {
20130
20158
  if (e.matches("img, picture, video, canvas, svg image, path, circle, ellipse, line, polygon, polyline, rect, text, use")) return !0;
20131
20159
  let n = t.getComputedStyle(e), r = n.backgroundImage !== "none" || n.backgroundColor !== "transparent" && n.backgroundColor !== "rgba(0, 0, 0, 0)", i = [
20132
20160
  "top",
@@ -20135,7 +20163,7 @@ var Tx = (e, t) => {
20135
20163
  "left"
20136
20164
  ].some((e) => Number.parseFloat(n.getPropertyValue(`border-${e}-width`)) > 0 && n.getPropertyValue(`border-${e}-style`) !== "none");
20137
20165
  return r || i || n.boxShadow !== "none" || n.outlineStyle !== "none";
20138
- }, Px = (e, t) => !!e.textContent?.trim() || Nx(e, t), Fx = (e, t, n) => {
20166
+ }, Fx = (e, t) => !!e.textContent?.trim() || Px(e, t), Ix = (e, t, n) => {
20139
20167
  let r = t, i = r.caretRangeFromPoint?.(e.x, e.y)?.startContainer ?? r.caretPositionFromPoint?.(e.x, e.y)?.offsetNode;
20140
20168
  if (!i) return null;
20141
20169
  let a = t.defaultView?.Element;
@@ -20146,11 +20174,11 @@ var Tx = (e, t) => {
20146
20174
  o = o.parentElement;
20147
20175
  }
20148
20176
  return o === n ? n : null;
20149
- }, Ix = (e, t, n) => {
20177
+ }, Lx = (e, t, n) => {
20150
20178
  let r = n.defaultView, i = r?.Element;
20151
20179
  if (!r || !i) return [];
20152
20180
  let a = [], o = /* @__PURE__ */ new Set(), s = (n, i, s) => {
20153
- if (o.has(n) || kx(n) || r.getComputedStyle(n).pointerEvents !== "none" || Mx(n, e, r) || !jx(n, t)) return;
20181
+ if (o.has(n) || Ax(n) || r.getComputedStyle(n).pointerEvents !== "none" || Nx(n, e, r) || !Mx(n, t)) return;
20154
20182
  let c = n.getBoundingClientRect();
20155
20183
  o.add(n), a.push({
20156
20184
  element: n,
@@ -20159,7 +20187,7 @@ var Tx = (e, t) => {
20159
20187
  order: s
20160
20188
  });
20161
20189
  }, c = n.createTreeWalker(e, 1), l = c.nextNode(), u = 1;
20162
- for (; l && u <= Ex;) {
20190
+ for (; l && u <= Dx;) {
20163
20191
  if (l instanceof i) {
20164
20192
  let t = l;
20165
20193
  if (r.getComputedStyle(t).pointerEvents === "none") {
@@ -20170,9 +20198,9 @@ var Tx = (e, t) => {
20170
20198
  }
20171
20199
  u += 1, l = c.nextNode();
20172
20200
  }
20173
- let d = Fx(t, n, e);
20201
+ let d = Ix(t, n, e);
20174
20202
  return d && r.getComputedStyle(d).pointerEvents === "none" && s(d, 1e4, u), a.sort((e, t) => t.depth - e.depth || e.area - t.area || t.order - e.order).map(({ element: e }) => e);
20175
- }, Lx = (e, t, n) => {
20203
+ }, Rx = (e, t, n) => {
20176
20204
  let r = t.ownerDocument.defaultView;
20177
20205
  if (!r) return [];
20178
20206
  let i = [...new Set(e)], a = /* @__PURE__ */ new Map();
@@ -20181,7 +20209,7 @@ var Tx = (e, t) => {
20181
20209
  t && (a.set(e, e.getAttribute("style")), t.style.setProperty("pointer-events", "auto", "important"));
20182
20210
  }
20183
20211
  try {
20184
- let e = wx(t).elementsFromPoint(n.x, n.y), r = e.findIndex((e) => e === t), a = new Map(e.map((e, t) => [e, t]));
20212
+ let e = Tx(t).elementsFromPoint(n.x, n.y), r = e.findIndex((e) => e === t), a = new Map(e.map((e, t) => [e, t]));
20185
20213
  return i.filter((e) => {
20186
20214
  let t = a.get(e);
20187
20215
  return t !== void 0 && (r < 0 || t < r);
@@ -20189,31 +20217,31 @@ var Tx = (e, t) => {
20189
20217
  } finally {
20190
20218
  for (let [e, t] of a) t === null ? e.removeAttribute("style") : e.setAttribute("style", t);
20191
20219
  }
20192
- }, Rx = (e, t) => {
20220
+ }, zx = (e, t) => {
20193
20221
  let n = e;
20194
20222
  for (; n.parentElement && n.parentElement !== t;) n = n.parentElement;
20195
20223
  return n.parentElement === t ? n : null;
20196
- }, zx = (e, t, n, r) => {
20224
+ }, Bx = (e, t, n, r) => {
20197
20225
  let i = r.defaultView;
20198
20226
  if (!i) return [];
20199
- let a = Lx(Ix(e, t, r).filter((e) => Px(e, i)), e, t);
20227
+ let a = Rx(Lx(e, t, r).filter((e) => Fx(e, i)), e, t);
20200
20228
  if (a.length > 0) return a;
20201
- if (e.textContent?.trim() && !e.matches(Dx) || e.matches("a, button, input, select, textarea, label, summary, [contenteditable='true']")) return [];
20202
- let o = [], s = /* @__PURE__ */ new Set(), c = !Sx(n) && !Cx(n) ? n : null, l = e.parentElement;
20229
+ if (e.textContent?.trim() && !e.matches(Ox) || e.matches("a, button, input, select, textarea, label, summary, [contenteditable='true']")) return [];
20230
+ let o = [], s = /* @__PURE__ */ new Set(), c = !Cx(n) && !wx(n) ? n : null, l = e.parentElement;
20203
20231
  for (; l && l !== r.body && l !== r.documentElement && !(c && l !== c && !c.contains(l));) {
20204
- let a = l, u = Rx(e, a), d = Ix(a, t, r).filter((e) => {
20205
- if (!Vx(e, n) || e.closest("[aria-hidden='true'], [inert]")) return !1;
20206
- let t = Rx(e, a);
20232
+ let a = l, u = zx(e, a), d = Lx(a, t, r).filter((e) => {
20233
+ if (!Hx(e, n) || e.closest("[aria-hidden='true'], [inert]")) return !1;
20234
+ let t = zx(e, a);
20207
20235
  return t === null || t !== u;
20208
20236
  });
20209
- for (let e of d) s.has(e) || !Px(e, i) || (s.add(e), o.push(e));
20237
+ for (let e of d) s.has(e) || !Fx(e, i) || (s.add(e), o.push(e));
20210
20238
  if (a === c) break;
20211
20239
  l = a.parentElement;
20212
20240
  }
20213
- return Lx(o, e, t);
20241
+ return Rx(o, e, t);
20214
20242
  };
20215
- function Bx(e, t, n = Sx(t) ? t : t.ownerDocument ?? document) {
20216
- let r = Tx(t, n), i = n.defaultView;
20243
+ function Vx(e, t, n = Cx(t) ? t : t.ownerDocument ?? document) {
20244
+ let r = Ex(t, n), i = n.defaultView;
20217
20245
  if (!i) return null;
20218
20246
  let a = r.elementsFromPoint(e.x, e.y);
20219
20247
  for (let r of a) {
@@ -20223,28 +20251,28 @@ function Bx(e, t, n = Sx(t) ? t : t.ownerDocument ?? document) {
20223
20251
  if (!t || t === a) break;
20224
20252
  a = t;
20225
20253
  }
20226
- if (!a || !Vx(a, t)) continue;
20227
- let o = zx(a, e, t, n);
20254
+ if (!a || !Hx(a, t)) continue;
20255
+ let o = Bx(a, e, t, n);
20228
20256
  if (o.length > 0) return o[0];
20229
20257
  if (i.getComputedStyle(a).pointerEvents !== "none") return a;
20230
20258
  }
20231
20259
  return null;
20232
20260
  }
20233
- function Vx(e, t) {
20234
- if (Sx(t)) return !0;
20261
+ function Hx(e, t) {
20262
+ if (Cx(t)) return !0;
20235
20263
  let n = e;
20236
20264
  for (; n;) {
20237
20265
  if (t === n || t.contains(n)) return !0;
20238
20266
  let e = n.getRootNode();
20239
- if (!Cx(e)) return !1;
20267
+ if (!wx(e)) return !1;
20240
20268
  n = e.host;
20241
20269
  }
20242
20270
  return !1;
20243
20271
  }
20244
- function Hx(e, t) {
20272
+ function Ux(e, t) {
20245
20273
  if (!e) return t();
20246
- let n = Ox.get(e) ?? 0;
20247
- Ox.set(e, n + 1);
20274
+ let n = kx.get(e) ?? 0;
20275
+ kx.set(e, n + 1);
20248
20276
  let r = [e, ...e.querySelectorAll("*")], i = r.map((e) => [
20249
20277
  e,
20250
20278
  e.style.getPropertyValue("pointer-events"),
@@ -20254,13 +20282,13 @@ function Hx(e, t) {
20254
20282
  try {
20255
20283
  return t();
20256
20284
  } finally {
20257
- n === 0 ? Ox.delete(e) : Ox.set(e, n);
20285
+ n === 0 ? kx.delete(e) : kx.set(e, n);
20258
20286
  for (let [e, t, n] of i) t ? e.style.setProperty("pointer-events", t, n) : e.style.removeProperty("pointer-events");
20259
20287
  }
20260
20288
  }
20261
- function Ux(e) {
20289
+ function Wx(e) {
20262
20290
  let t = e.ownerDocument.defaultView ?? window;
20263
- if (e.id) return `#${xx(e.id, t)}`;
20291
+ if (e.id) return `#${Sx(e.id, t)}`;
20264
20292
  let n = e.getAttribute("data-testid");
20265
20293
  if (n) return `[data-testid=${JSON.stringify(n)}]`;
20266
20294
  let r = [], i = e;
@@ -20274,17 +20302,17 @@ function Ux(e) {
20274
20302
  }
20275
20303
  return r.join(" > ");
20276
20304
  }
20277
- function Wx(e, t, n = `dom-inspection-${++bx}`) {
20305
+ function Gx(e, t, n = `dom-inspection-${++xx}`) {
20278
20306
  let r = e.getBoundingClientRect(), i = t.getComputedStyle(e), a = {
20279
- top: yx(i.paddingTop),
20280
- right: yx(i.paddingRight),
20281
- bottom: yx(i.paddingBottom),
20282
- left: yx(i.paddingLeft)
20307
+ top: bx(i.paddingTop),
20308
+ right: bx(i.paddingRight),
20309
+ bottom: bx(i.paddingBottom),
20310
+ left: bx(i.paddingLeft)
20283
20311
  }, o = {
20284
- top: yx(i.marginTop),
20285
- right: yx(i.marginRight),
20286
- bottom: yx(i.marginBottom),
20287
- left: yx(i.marginLeft)
20312
+ top: bx(i.marginTop),
20313
+ right: bx(i.marginRight),
20314
+ bottom: bx(i.marginBottom),
20315
+ left: bx(i.marginLeft)
20288
20316
  }, s = {
20289
20317
  left: r.left + a.left,
20290
20318
  top: r.top + a.top,
@@ -20312,8 +20340,8 @@ function Wx(e, t, n = `dom-inspection-${++bx}`) {
20312
20340
  elementRef: e
20313
20341
  };
20314
20342
  }
20315
- function Gx(e) {
20316
- let t = e.ownerDocument.defaultView ?? window, n = t.getComputedStyle(e), r = e instanceof t.HTMLElement ? e : null, i = e.getBoundingClientRect(), a = r ? Wx(r, t) : null, o = (e) => {
20343
+ function Kx(e) {
20344
+ let t = e.ownerDocument.defaultView ?? window, n = t.getComputedStyle(e), r = e instanceof t.HTMLElement ? e : null, i = e.getBoundingClientRect(), a = r ? Gx(r, t) : null, o = (e) => {
20317
20345
  let t = Number.parseFloat(e);
20318
20346
  return Number.isFinite(t) ? t : 0;
20319
20347
  }, s = (e) => ({
@@ -20323,7 +20351,7 @@ function Gx(e) {
20323
20351
  left: o(n.getPropertyValue(`${e}-left${e === "border" ? "-width" : ""}`))
20324
20352
  });
20325
20353
  return {
20326
- selector: Ux(e),
20354
+ selector: Wx(e),
20327
20355
  tag: e.localName,
20328
20356
  id: e.id || null,
20329
20357
  classes: [...e.classList],
@@ -20385,10 +20413,10 @@ function Gx(e) {
20385
20413
  }
20386
20414
  //#endregion
20387
20415
  //#region src/agent.ts
20388
- var Kx = "text-edit", qx = (e) => Gx(e);
20389
- function Jx(e) {
20390
- let t = e.root ?? e.ownerDocument, n = e.ownerDocument.defaultView ?? window, r = (e, n = 0) => t.querySelectorAll(e).item(n) || null, i = (n) => t === e.ownerDocument || Vx(n, t), a = async () => {
20391
- let t = (e.getPluginHost() ?? await e.waitForPluginHost()).service.get(Kx);
20416
+ var qx = "text-edit", Jx = (e) => Kx(e);
20417
+ function Yx(e) {
20418
+ let t = e.root ?? e.ownerDocument, n = e.ownerDocument.defaultView ?? window, r = (e, n = 0) => t.querySelectorAll(e).item(n) || null, i = (n) => t === e.ownerDocument || Hx(n, t), a = async () => {
20419
+ let t = (e.getPluginHost() ?? await e.waitForPluginHost()).service.get(qx);
20392
20420
  if (!t) throw Error("Mesurer text editing service is unavailable.");
20393
20421
  return t;
20394
20422
  }, o = () => {
@@ -20417,25 +20445,25 @@ function Jx(e) {
20417
20445
  },
20418
20446
  inspect(e, t = 0) {
20419
20447
  let n = r(e, t);
20420
- return n ? qx(n) : null;
20448
+ return n ? Jx(n) : null;
20421
20449
  },
20422
20450
  inspectAll(e, n = 50) {
20423
- return [...t.querySelectorAll(e)].slice(0, Math.max(0, n)).map(qx);
20451
+ return [...t.querySelectorAll(e)].slice(0, Math.max(0, n)).map(Jx);
20424
20452
  },
20425
20453
  at(n, r) {
20426
20454
  let a = t.querySelector?.("[data-mesurer-island]") ?? null;
20427
- return Hx(a?.shadowRoot?.querySelector("[data-mesurer-root='true']") ?? a, () => {
20428
- let a = Bx({
20455
+ return Ux(a?.shadowRoot?.querySelector("[data-mesurer-root='true']") ?? a, () => {
20456
+ let a = Vx({
20429
20457
  x: n,
20430
20458
  y: r
20431
20459
  }, t, e.ownerDocument);
20432
- return a && i(a) ? qx(a) : null;
20460
+ return a && i(a) ? Jx(a) : null;
20433
20461
  });
20434
20462
  },
20435
20463
  distance(e, t) {
20436
20464
  let n = r(e), i = r(t);
20437
20465
  if (!n || !i) return null;
20438
- let a = qx(n), o = qx(i), s = a.rect, c = o.rect;
20466
+ let a = Jx(n), o = Jx(i), s = a.rect, c = o.rect;
20439
20467
  return {
20440
20468
  a,
20441
20469
  b: o,
@@ -20451,7 +20479,7 @@ function Jx(e) {
20451
20479
  let r = e.getPluginHost() ?? await e.waitForPluginHost();
20452
20480
  return {
20453
20481
  viewport: o(),
20454
- elements: n.flatMap((e) => [...t.querySelectorAll(e)].slice(0, 50).map(qx)),
20482
+ elements: n.flatMap((e) => [...t.querySelectorAll(e)].slice(0, 50).map(Jx)),
20455
20483
  plugins: r.describe(),
20456
20484
  pluginState: r.state.serialize("all")
20457
20485
  };
@@ -20476,10 +20504,10 @@ function Jx(e) {
20476
20504
  }
20477
20505
  //#endregion
20478
20506
  //#region src/version.ts
20479
- var Yx = "0.2.1-beta.12", Xx = Np, Zx = Pp, Qx = () => ({
20507
+ var Xx = "0.2.1-beta.13", Zx = Np, Qx = Pp, $x = () => ({
20480
20508
  ...km(),
20481
- version: Yx
20482
- }), $x = Zx, eS = (e, t) => e.left <= t.left + t.width && e.left + e.width >= t.left && e.top <= t.top + t.height && e.top + e.height >= t.top, tS = (e) => {
20509
+ version: Xx
20510
+ }), eS = Qx, tS = (e, t) => e.left <= t.left + t.width && e.left + e.width >= t.left && e.top <= t.top + t.height && e.top + e.height >= t.top, nS = (e) => {
20483
20511
  if (!e.length) return null;
20484
20512
  let t = Math.min(...e.map((e) => e.left)), n = Math.min(...e.map((e) => e.top)), r = Math.max(...e.map((e) => e.left + e.width)), i = Math.max(...e.map((e) => e.top + e.height));
20485
20513
  return {
@@ -20488,36 +20516,36 @@ var Yx = "0.2.1-beta.12", Xx = Np, Zx = Pp, Qx = () => ({
20488
20516
  width: r - t,
20489
20517
  height: i - n
20490
20518
  };
20491
- }, nS = (e, t, n) => t.some((t) => e.orientation === "vertical" ? e.position >= t.left - n && e.position <= t.left + t.width + n : e.position >= t.top - n && e.position <= t.top + t.height + n), rS = (e) => [...e.measurements, ...e.activeMeasurement && !e.measurements.some((t) => t.id === e.activeMeasurement?.id) ? [e.activeMeasurement] : []];
20492
- function iS(e) {
20519
+ }, rS = (e, t, n) => t.some((t) => e.orientation === "vertical" ? e.position >= t.left - n && e.position <= t.left + t.width + n : e.position >= t.top - n && e.position <= t.top + t.height + n), iS = (e) => [...e.measurements, ...e.activeMeasurement && !e.measurements.some((t) => t.id === e.activeMeasurement?.id) ? [e.activeMeasurement] : []];
20520
+ function aS(e) {
20493
20521
  let { workspace: t, scope: n, guideTolerance: r } = e;
20494
20522
  if (n.kind === "workspace") return {
20495
20523
  guides: t.guides.map((e) => ({ ...e })),
20496
- measurements: rS(t),
20524
+ measurements: iS(t),
20497
20525
  distances: [...t.distances]
20498
20526
  };
20499
- let i = new Set(n.elements), a = (e) => e != null && i.has(e), o = (e) => n.regions.some((t) => eS(e, t));
20527
+ let i = new Set(n.elements), a = (e) => e != null && i.has(e), o = (e) => n.regions.some((t) => tS(e, t));
20500
20528
  return {
20501
- guides: t.guides.filter((e) => nS(e, n.regions, r)).map((e) => ({ ...e })),
20502
- measurements: rS(t).filter((e) => a(e.elementRef) || o(e.rect)),
20529
+ guides: t.guides.filter((e) => rS(e, n.regions, r)).map((e) => ({ ...e })),
20530
+ measurements: iS(t).filter((e) => a(e.elementRef) || o(e.rect)),
20503
20531
  distances: t.distances.filter((e) => a(e.elementRefA) || a(e.elementRefB) || o(e.rectA) || o(e.rectB))
20504
20532
  };
20505
20533
  }
20506
20534
  //#endregion
20507
20535
  //#region ../mesurer-core/dist/domain.js
20508
- var aS = {
20536
+ var oS = {
20509
20537
  opacity: 1,
20510
20538
  width: 1,
20511
20539
  pattern: "solid",
20512
20540
  dashLength: 6,
20513
20541
  gap: 4
20514
- }, oS = {
20542
+ }, sS = {
20515
20543
  opacity: 1,
20516
20544
  edgeReveal: !1
20517
20545
  };
20518
20546
  //#endregion
20519
20547
  //#region ../mesurer-core/dist/events.js
20520
- function sS() {
20548
+ function cS() {
20521
20549
  let e = /* @__PURE__ */ new Map();
20522
20550
  return {
20523
20551
  on(t, n) {
@@ -20535,12 +20563,12 @@ function sS() {
20535
20563
  }
20536
20564
  };
20537
20565
  }
20538
- ({ ...aS }), { ...oS };
20566
+ ({ ...oS }), { ...sS };
20539
20567
  //#endregion
20540
20568
  //#region ../mesurer-core/dist/plugins.js
20541
- var cS = 50;
20542
- function lS() {
20543
- let e = 1, t = 0, n = sS(), r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Map(), p = [], m = [], h = (e, t) => {
20569
+ var lS = 50;
20570
+ function uS() {
20571
+ let e = 1, t = 0, n = cS(), r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Map(), p = [], m = [], h = (e, t) => {
20544
20572
  n.emit("changed", {
20545
20573
  pluginId: e,
20546
20574
  reason: t
@@ -20603,15 +20631,15 @@ function lS() {
20603
20631
  }
20604
20632
  if (o && s) {
20605
20633
  let e = y("history");
20606
- x(s, e) || (p.push(s), p.length > cS && p.shift(), m.length = 0);
20634
+ x(s, e) || (p.push(s), p.length > lS && p.shift(), m.length = 0);
20607
20635
  }
20608
20636
  return l;
20609
20637
  }, w = () => {
20610
20638
  let e = p.pop();
20611
- return e ? (m.push(y("history")), m.length > cS && m.shift(), b(e, "history"), h(void 0, "history"), !0) : !1;
20639
+ return e ? (m.push(y("history")), m.length > lS && m.shift(), b(e, "history"), h(void 0, "history"), !0) : !1;
20612
20640
  }, T = () => {
20613
20641
  let e = m.pop();
20614
- return e ? (p.push(y("history")), p.length > cS && p.shift(), b(e, "history"), h(void 0, "history"), !0) : !1;
20642
+ return e ? (p.push(y("history")), p.length > lS && p.shift(), b(e, "history"), h(void 0, "history"), !0) : !1;
20615
20643
  }, E = async (e, t) => {
20616
20644
  for (let n of [...l.values()].filter((t) => t.name === e)) await n.handler(t);
20617
20645
  }, D = (e) => [...u.values()].reverse().find((t) => t.id === e)?.value, O = {
@@ -20768,8 +20796,8 @@ function lS() {
20768
20796
  }
20769
20797
  //#endregion
20770
20798
  //#region ../mesurer-core/dist/runtime.js
20771
- async function uS(e = {}) {
20772
- let t = lS();
20799
+ async function dS(e = {}) {
20800
+ let t = uS();
20773
20801
  try {
20774
20802
  for (let n of e.plugins ?? []) await t.load(n);
20775
20803
  return t;
@@ -20779,17 +20807,17 @@ async function uS(e = {}) {
20779
20807
  }
20780
20808
  //#endregion
20781
20809
  //#region src/context.ts
20782
- var dS = 10, fS = (e) => ({
20810
+ var fS = 10, pS = (e) => ({
20783
20811
  left: e.left,
20784
20812
  top: e.top,
20785
20813
  width: e.width,
20786
20814
  height: e.height
20787
- }), pS = (e) => {
20815
+ }), mS = (e) => {
20788
20816
  let t = /* @__PURE__ */ new Set(), n = [];
20789
20817
  for (let r of e) !r?.isConnected || t.has(r) || (t.add(r), n.push(r));
20790
20818
  return n;
20791
- }, mS = (e) => e.crypto?.randomUUID?.() ?? `${Date.now()}-${Math.random().toString(36).slice(2)}`;
20792
- function hS(e) {
20819
+ }, hS = (e) => e.crypto?.randomUUID?.() ?? `${Date.now()}-${Math.random().toString(36).slice(2)}`;
20820
+ function gS(e) {
20793
20821
  let { runtime: t, ownerDocument: n, ownerWindow: r } = e, i = e.request ?? { scope: "workspace" }, a = t.snapshot();
20794
20822
  if (!a) throw Error("Mesurer workspace is not ready yet.");
20795
20823
  let o = [], s = [], c = { kind: "workspace" }, l = /* @__PURE__ */ new Map();
@@ -20797,7 +20825,7 @@ function hS(e) {
20797
20825
  let e = t.annotation(i.annotation);
20798
20826
  if (!e) throw Error(`Mesurer annotation not found: ${i.annotation}`);
20799
20827
  for (let t of e.resolvedTargets) t.element?.isConnected && l.set(t.element, t.target.id);
20800
- o = pS(e.resolvedTargets.map((e) => e.element));
20828
+ o = mS(e.resolvedTargets.map((e) => e.element));
20801
20829
  let n = t.annotationRect(e.id);
20802
20830
  n && (s = [n]);
20803
20831
  let r = e.resolvedTargets.length, a = e.resolvedTargets.filter((e) => e.element?.isConnected).length, u = e.anchor.kind === "region" ? "connected" : r === 0 || a === 0 ? "stale" : a === r ? "connected" : "partial";
@@ -20809,15 +20837,15 @@ function hS(e) {
20809
20837
  };
20810
20838
  } else if (i.scope === "selection") {
20811
20839
  let e = t.currentSelection();
20812
- if (o = pS(e.elements), !o.length && !e.region) throw Error("Mesurer has no current selection.");
20813
- s = e.region ? [e.region] : o.map((e) => fS(e.getBoundingClientRect())), c = { kind: "selection" };
20814
- } else o = pS([
20840
+ if (o = mS(e.elements), !o.length && !e.region) throw Error("Mesurer has no current selection.");
20841
+ s = e.region ? [e.region] : o.map((e) => pS(e.getBoundingClientRect())), c = { kind: "selection" };
20842
+ } else o = mS([
20815
20843
  ...t.currentSelection().elements,
20816
20844
  ...a.measurements.map((e) => e.elementRef),
20817
20845
  a.activeMeasurement?.elementRef,
20818
20846
  ...a.heldDistances.flatMap((e) => [e.elementRefA, e.elementRefB])
20819
20847
  ]);
20820
- let u = c.kind === "workspace" ? [] : s.length ? s : o.map((e) => fS(e.getBoundingClientRect())), d = iS({
20848
+ let u = c.kind === "workspace" ? [] : s.length ? s : o.map((e) => pS(e.getBoundingClientRect())), d = aS({
20821
20849
  workspace: {
20822
20850
  guides: a.guides,
20823
20851
  measurements: a.measurements,
@@ -20829,8 +20857,8 @@ function hS(e) {
20829
20857
  elements: o,
20830
20858
  regions: u
20831
20859
  },
20832
- guideTolerance: a.guideRelevanceTolerance ?? dS
20833
- }), f = d.measurements, p = d.distances, m = d.guides, h = pS([
20860
+ guideTolerance: a.guideRelevanceTolerance ?? fS
20861
+ }), f = d.measurements, p = d.distances, m = d.guides, h = mS([
20834
20862
  ...o,
20835
20863
  ...f.map((e) => e.elementRef),
20836
20864
  ...p.flatMap((e) => [e.elementRefA, e.elementRefB])
@@ -20842,12 +20870,12 @@ function hS(e) {
20842
20870
  let t = l.get(e) ?? y();
20843
20871
  return g.set(e, t), {
20844
20872
  ref: t,
20845
- inspection: Gx(e)
20873
+ inspection: Kx(e)
20846
20874
  };
20847
20875
  }), x = f.map((e) => {
20848
20876
  let t = {
20849
20877
  id: e.id,
20850
- rect: fS(e.rect),
20878
+ rect: pS(e.rect),
20851
20879
  deltaX: e.deltaX,
20852
20880
  deltaY: e.deltaY
20853
20881
  };
@@ -20857,8 +20885,8 @@ function hS(e) {
20857
20885
  }), S = p.map((e) => {
20858
20886
  let t = {
20859
20887
  id: e.id,
20860
- rectA: fS(e.rectA),
20861
- rectB: fS(e.rectB),
20888
+ rectA: pS(e.rectA),
20889
+ rectB: pS(e.rectB),
20862
20890
  horizontal: e.horizontal ? { ...e.horizontal } : null,
20863
20891
  vertical: e.vertical ? { ...e.vertical } : null
20864
20892
  }, n = e.elementRefA ? g.get(e.elementRefA) : void 0, r = e.elementRefB ? g.get(e.elementRefB) : void 0;
@@ -20866,7 +20894,7 @@ function hS(e) {
20866
20894
  });
20867
20895
  return {
20868
20896
  schema: "mesurer.context/v1",
20869
- id: mS(r),
20897
+ id: hS(r),
20870
20898
  createdAt: (/* @__PURE__ */ new Date()).toISOString(),
20871
20899
  scope: c,
20872
20900
  page: {
@@ -20881,7 +20909,7 @@ function hS(e) {
20881
20909
  scrollY: r.scrollY
20882
20910
  },
20883
20911
  coordinateSpace: "viewport-css-px",
20884
- regions: c.kind === "workspace" ? [] : s.map(fS),
20912
+ regions: c.kind === "workspace" ? [] : s.map(pS),
20885
20913
  visualState: {
20886
20914
  rulersVisible: a.rulersVisible,
20887
20915
  xrayVisible: a.xrayVisible
@@ -20895,48 +20923,48 @@ function hS(e) {
20895
20923
  }
20896
20924
  };
20897
20925
  }
20898
- var gS = (e) => `${Math.round(e * 100) / 100}px`, _S = (e) => `x=${gS(e.left)} y=${gS(e.top)} w=${gS(e.width)} h=${gS(e.height)}`;
20899
- function vS(e) {
20926
+ var _S = (e) => `${Math.round(e * 100) / 100}px`, vS = (e) => `x=${_S(e.left)} y=${_S(e.top)} w=${_S(e.width)} h=${_S(e.height)}`;
20927
+ function yS(e) {
20900
20928
  let t = [
20901
20929
  "Mesurer visual context",
20902
20930
  "",
20903
20931
  `Page: ${e.page.url}`,
20904
20932
  `Viewport: ${e.viewport.width} × ${e.viewport.height} CSS px; scroll x=${e.viewport.scrollX} y=${e.viewport.scrollY}`
20905
20933
  ];
20906
- if (e.scope.kind === "annotation" ? t.push("", "Annotation", e.scope.note, `Target status: ${e.scope.targetStatus}`) : t.push("", `Scope: ${e.scope.kind}`), e.regions.length && (t.push("", "Requested regions"), e.regions.forEach((e, n) => t.push(`- region-${n + 1}: ${_S(e)}`))), (e.visualState.rulersVisible || e.visualState.xrayVisible) && t.push("", `Visual state: rulers=${e.visualState.rulersVisible ? "on" : "off"}; x-ray=${e.visualState.xrayVisible ? "on" : "off"}`), e.targets.length) {
20934
+ if (e.scope.kind === "annotation" ? t.push("", "Annotation", e.scope.note, `Target status: ${e.scope.targetStatus}`) : t.push("", `Scope: ${e.scope.kind}`), e.regions.length && (t.push("", "Requested regions"), e.regions.forEach((e, n) => t.push(`- region-${n + 1}: ${vS(e)}`))), (e.visualState.rulersVisible || e.visualState.xrayVisible) && t.push("", `Visual state: rulers=${e.visualState.rulersVisible ? "on" : "off"}; x-ray=${e.visualState.xrayVisible ? "on" : "off"}`), e.targets.length) {
20907
20935
  t.push("", "Targets");
20908
20936
  for (let n of e.targets) {
20909
20937
  let e = n.inspection;
20910
- t.push(`[${n.ref}] ${e.selector}`, ` rect: ${_S(e.rect)}`, ` margin: ${gS(e.margin.top)} ${gS(e.margin.right)} ${gS(e.margin.bottom)} ${gS(e.margin.left)}`, ` padding: ${gS(e.padding.top)} ${gS(e.padding.right)} ${gS(e.padding.bottom)} ${gS(e.padding.left)}`, ` layout: display=${e.layout.display}; position=${e.layout.position}; gap=${e.layout.gap}`, ` typography: ${e.typography.fontSize} / ${e.typography.lineHeight}; weight=${e.typography.fontWeight}; align=${e.typography.textAlign}`), e.text && t.push(` text: ${JSON.stringify(e.text)}`);
20938
+ t.push(`[${n.ref}] ${e.selector}`, ` rect: ${vS(e.rect)}`, ` margin: ${_S(e.margin.top)} ${_S(e.margin.right)} ${_S(e.margin.bottom)} ${_S(e.margin.left)}`, ` padding: ${_S(e.padding.top)} ${_S(e.padding.right)} ${_S(e.padding.bottom)} ${_S(e.padding.left)}`, ` layout: display=${e.layout.display}; position=${e.layout.position}; gap=${e.layout.gap}`, ` typography: ${e.typography.fontSize} / ${e.typography.lineHeight}; weight=${e.typography.fontWeight}; align=${e.typography.textAlign}`), e.text && t.push(` text: ${JSON.stringify(e.text)}`);
20911
20939
  }
20912
20940
  }
20913
20941
  if (e.visualContext.guides.length) {
20914
20942
  t.push("", "Relevant guides");
20915
- for (let n of e.visualContext.guides) t.push(`- ${n.orientation} ${n.orientation === "vertical" ? "x" : "y"}=${gS(n.position)}`);
20943
+ for (let n of e.visualContext.guides) t.push(`- ${n.orientation} ${n.orientation === "vertical" ? "x" : "y"}=${_S(n.position)}`);
20916
20944
  }
20917
20945
  if (e.visualContext.layoutGuides.length) {
20918
20946
  t.push("", "Layout guides");
20919
20947
  for (let n of e.visualContext.layoutGuides) {
20920
20948
  if (!n.visible) continue;
20921
- let e = n.kind === "grid" ? `grid ${gS(n.size)}` : `${n.count} ${n.kind}; gutter=${gS(n.gutter)}; offset=${gS(n.offset)}; align=${n.align}`;
20949
+ let e = n.kind === "grid" ? `grid ${_S(n.size)}` : `${n.count} ${n.kind}; gutter=${_S(n.gutter)}; offset=${_S(n.offset)}; align=${n.align}`;
20922
20950
  t.push(`- ${e}; color=${n.color}; opacity=${Math.round(n.opacity * 100)}%`);
20923
20951
  }
20924
20952
  }
20925
20953
  if (e.visualContext.measurements.length) {
20926
20954
  t.push("", "Relevant measurements");
20927
- for (let n of e.visualContext.measurements) t.push(`- ${n.targetRef ? `${n.targetRef}: ` : ""}${_S(n.rect)}; delta=${gS(n.deltaX)} × ${gS(n.deltaY)}`);
20955
+ for (let n of e.visualContext.measurements) t.push(`- ${n.targetRef ? `${n.targetRef}: ` : ""}${vS(n.rect)}; delta=${_S(n.deltaX)} × ${_S(n.deltaY)}`);
20928
20956
  }
20929
20957
  if (e.visualContext.distances.length) {
20930
20958
  t.push("", "Relevant distances");
20931
20959
  for (let n of e.visualContext.distances) {
20932
- let e = [n.targetARef, n.targetBRef].filter(Boolean).join(" → "), r = [n.horizontal ? `horizontal=${gS(n.horizontal.value)}` : null, n.vertical ? `vertical=${gS(n.vertical.value)}` : null].filter(Boolean).join("; ");
20960
+ let e = [n.targetARef, n.targetBRef].filter(Boolean).join(" → "), r = [n.horizontal ? `horizontal=${_S(n.horizontal.value)}` : null, n.vertical ? `vertical=${_S(n.vertical.value)}` : null].filter(Boolean).join("; ");
20933
20961
  t.push(`- ${e ? `${e}: ` : ""}${r || "overlapping"}`);
20934
20962
  }
20935
20963
  }
20936
20964
  return t.join("\n").trimEnd();
20937
20965
  }
20938
- function yS(e) {
20939
- let t = tS([
20966
+ function bS(e) {
20967
+ let t = nS([
20940
20968
  ...e.regions,
20941
20969
  ...e.targets.map((e) => e.inspection.rect),
20942
20970
  ...e.visualContext.measurements.map((e) => e.rect),
@@ -20966,7 +20994,7 @@ function yS(e) {
20966
20994
  captures: n
20967
20995
  };
20968
20996
  }
20969
- var bS = (e, t, n, r, i) => {
20997
+ var xS = (e, t, n, r, i) => {
20970
20998
  !Number.isFinite(r) || !Number.isFinite(i) || Math.abs(r - i) < .01 || e.push({
20971
20999
  kind: t,
20972
21000
  label: n,
@@ -20975,16 +21003,16 @@ var bS = (e, t, n, r, i) => {
20975
21003
  delta: i - r,
20976
21004
  unit: "px"
20977
21005
  });
20978
- }, xS = (e, t, n, r) => e.push({
21006
+ }, SS = (e, t, n, r) => e.push({
20979
21007
  kind: "missing",
20980
21008
  evidence: t,
20981
21009
  id: n,
20982
21010
  label: r
20983
- }), SS = (e, t) => Math.abs(e.left - t.left) < .01 && Math.abs(e.top - t.top) < .01 && Math.abs(e.width - t.width) < .01 && Math.abs(e.height - t.height) < .01;
20984
- function CS(e) {
21011
+ }), CS = (e, t) => Math.abs(e.left - t.left) < .01 && Math.abs(e.top - t.top) < .01 && Math.abs(e.width - t.width) < .01 && Math.abs(e.height - t.height) < .01;
21012
+ function wS(e) {
20985
21013
  let t = e.runtime.annotation(e.annotationId);
20986
21014
  if (!t) throw Error(`Mesurer annotation not found: ${e.annotationId}`);
20987
- let n = hS({
21015
+ let n = gS({
20988
21016
  runtime: e.runtime,
20989
21017
  ownerDocument: e.ownerDocument,
20990
21018
  ownerWindow: e.ownerWindow,
@@ -20994,42 +21022,42 @@ function CS(e) {
20994
21022
  if (n.scope.kind !== "annotation") throw Error("Mesurer annotation context invariant failed.");
20995
21023
  let r = e.runtime.snapshot();
20996
21024
  if (!r) throw Error("Mesurer workspace is not ready yet.");
20997
- let i = rS({
21025
+ let i = iS({
20998
21026
  measurements: r.measurements,
20999
21027
  activeMeasurement: r.activeMeasurement
21000
21028
  }), a = [];
21001
21029
  for (let e of t.baseline.targets) {
21002
21030
  let t = n.targets.find((t) => t.ref === e.id);
21003
21031
  if (!t) {
21004
- xS(a, "target", e.id, e.selector);
21032
+ SS(a, "target", e.id, e.selector);
21005
21033
  continue;
21006
21034
  }
21007
- bS(a, "target-rect", `${t.inspection.selector} left`, e.rect.left, t.inspection.rect.left), bS(a, "target-rect", `${t.inspection.selector} top`, e.rect.top, t.inspection.rect.top), bS(a, "target-rect", `${t.inspection.selector} width`, e.rect.width, t.inspection.rect.width), bS(a, "target-rect", `${t.inspection.selector} height`, e.rect.height, t.inspection.rect.height);
21035
+ xS(a, "target-rect", `${t.inspection.selector} left`, e.rect.left, t.inspection.rect.left), xS(a, "target-rect", `${t.inspection.selector} top`, e.rect.top, t.inspection.rect.top), xS(a, "target-rect", `${t.inspection.selector} width`, e.rect.width, t.inspection.rect.width), xS(a, "target-rect", `${t.inspection.selector} height`, e.rect.height, t.inspection.rect.height);
21008
21036
  }
21009
21037
  for (let e of t.baseline.guides) {
21010
21038
  let t = n.visualContext.guides.find((t) => t.id === e.id) ?? r.guides.find((t) => t.id === e.id);
21011
21039
  if (!t) {
21012
- xS(a, "guide", e.id, `${e.orientation} guide ${e.id}`);
21040
+ SS(a, "guide", e.id, `${e.orientation} guide ${e.id}`);
21013
21041
  continue;
21014
21042
  }
21015
- bS(a, "guide", `${e.orientation} guide ${e.id}`, e.position, t.position);
21043
+ xS(a, "guide", `${e.orientation} guide ${e.id}`, e.position, t.position);
21016
21044
  }
21017
21045
  for (let e of t.baseline.measurements) {
21018
21046
  let r = n.visualContext.measurements.find((t) => t.id === e.id) ?? i.find((t) => t.id === e.id);
21019
21047
  if (!r) {
21020
- let r = t.baseline.targets.find((t) => SS(t.rect, e.rect));
21021
- r && n.targets.some((e) => e.ref === r.id) || xS(a, "measurement", e.id, e.id);
21048
+ let r = t.baseline.targets.find((t) => CS(t.rect, e.rect));
21049
+ r && n.targets.some((e) => e.ref === r.id) || SS(a, "measurement", e.id, e.id);
21022
21050
  continue;
21023
21051
  }
21024
- bS(a, "measurement", `${e.id} width`, e.rect.width, r.rect.width), bS(a, "measurement", `${e.id} height`, e.rect.height, r.rect.height);
21052
+ xS(a, "measurement", `${e.id} width`, e.rect.width, r.rect.width), xS(a, "measurement", `${e.id} height`, e.rect.height, r.rect.height);
21025
21053
  }
21026
21054
  for (let e of t.baseline.distances) {
21027
21055
  let t = n.visualContext.distances.find((t) => t.id === e.id) ?? r.heldDistances.find((t) => t.id === e.id);
21028
21056
  if (!t) {
21029
- xS(a, "distance", e.id, e.id);
21057
+ SS(a, "distance", e.id, e.id);
21030
21058
  continue;
21031
21059
  }
21032
- e.horizontal && t.horizontal ? bS(a, "distance", `${e.id} horizontal`, e.horizontal.value, t.horizontal.value) : e.horizontal && !t.horizontal && xS(a, "distance", e.id, `${e.id} horizontal`), e.vertical && t.vertical ? bS(a, "distance", `${e.id} vertical`, e.vertical.value, t.vertical.value) : e.vertical && !t.vertical && xS(a, "distance", e.id, `${e.id} vertical`);
21060
+ e.horizontal && t.horizontal ? xS(a, "distance", `${e.id} horizontal`, e.horizontal.value, t.horizontal.value) : e.horizontal && !t.horizontal && SS(a, "distance", e.id, `${e.id} horizontal`), e.vertical && t.vertical ? xS(a, "distance", `${e.id} vertical`, e.vertical.value, t.vertical.value) : e.vertical && !t.vertical && SS(a, "distance", e.id, `${e.id} vertical`);
21033
21061
  }
21034
21062
  return {
21035
21063
  schema: "mesurer.review/v1",
@@ -21041,7 +21069,7 @@ function CS(e) {
21041
21069
  changes: a
21042
21070
  };
21043
21071
  }
21044
- async function wS(e, t, n) {
21072
+ async function TS(e, t, n) {
21045
21073
  try {
21046
21074
  if (t.navigator.clipboard?.writeText) {
21047
21075
  await t.navigator.clipboard.writeText(n);
@@ -21055,43 +21083,43 @@ async function wS(e, t, n) {
21055
21083
  }
21056
21084
  //#endregion
21057
21085
  //#region src/layout-guides.ts
21058
- var TS = Kv, ES = qv, DS = () => ({
21086
+ var ES = Kv, DS = qv, OS = () => ({
21059
21087
  ...yy(),
21060
- version: Yx
21061
- }), OS = "mesurer.context", kS = "context:v1", AS = "mesurer.context.settings", jS = "context.ui", MS = "data-mesurer-direct-text-edit-active", NS = {
21088
+ version: Xx
21089
+ }), kS = "mesurer.context", AS = "context:v1", jS = "mesurer.context.settings", MS = "context.ui", NS = "data-mesurer-direct-text-edit-active", PS = {
21062
21090
  viewBox: "0 0 256 256",
21063
21091
  paths: ["M216,32H88a8,8,0,0,0-8,8V80H40a8,8,0,0,0-8,8V216a8,8,0,0,0,8,8H168a8,8,0,0,0,8-8V176h40a8,8,0,0,0,8-8V40A8,8,0,0,0,216,32ZM160,208H48V96H160Zm48-48H176V88a8,8,0,0,0-8-8H96V48H208Z"]
21064
- }, PS = {
21092
+ }, FS = {
21065
21093
  viewBox: "0 0 256 256",
21066
21094
  paths: ["M152,40a8,8,0,0,1-8,8H112a8,8,0,0,1,0-16h32A8,8,0,0,1,152,40Zm-8,168H112a8,8,0,0,0,0,16h32a8,8,0,0,0,0-16ZM208,32H184a8,8,0,0,0,0,16h24V72a8,8,0,0,0,16,0V48A16,16,0,0,0,208,32Zm8,72a8,8,0,0,0-8,8v32a8,8,0,0,0,16,0V112A8,8,0,0,0,216,104Zm0,72a8,8,0,0,0-8,8v24H184a8,8,0,0,0,0,16h24a16,16,0,0,0,16-16V184A8,8,0,0,0,216,176ZM40,152a8,8,0,0,0,8-8V112a8,8,0,0,0-16,0v32A8,8,0,0,0,40,152Zm32,56H48V184a8,8,0,0,0-16,0v24a16,16,0,0,0,16,16H72a8,8,0,0,0,0-16ZM72,32H48A16,16,0,0,0,32,48V72a8,8,0,0,0,16,0V48H72a8,8,0,0,0,0-16Z"]
21067
- }, FS = {
21095
+ }, IS = {
21068
21096
  viewBox: "0 0 256 256",
21069
21097
  paths: ["M229.66,58.34l-32-32a8,8,0,0,0-11.32,0l-96,96A8,8,0,0,0,88,128v32a8,8,0,0,0,8,8h32a8,8,0,0,0,5.66-2.34l96-96A8,8,0,0,0,229.66,58.34ZM124.69,152H104V131.31l64-64L188.69,88ZM200,76.69,179.31,56,192,43.31,212.69,64ZM224,128v80a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V48A16,16,0,0,1,48,32h80a8,8,0,0,1,0,16H48V208H208V128a8,8,0,0,1,16,0Z"]
21070
- }, IS = async (e, t, n = 1) => {
21098
+ }, LS = async (e, t, n = 1) => {
21071
21099
  await e.fonts?.ready;
21072
21100
  for (let e = 0; e < Math.max(1, n); e += 1) await new Promise((e) => t.requestAnimationFrame(() => e()));
21073
- }, LS = (e, t, n, r) => {
21074
- let i = async (i) => hS({
21101
+ }, RS = (e, t, n, r) => {
21102
+ let i = async (i) => gS({
21075
21103
  runtime: e,
21076
21104
  ownerDocument: t,
21077
21105
  ownerWindow: n,
21078
21106
  request: i,
21079
21107
  layoutGuides: r()
21080
- }), a = async (e) => vS(await i(e));
21108
+ }), a = async (e) => yS(await i(e));
21081
21109
  return {
21082
21110
  context: i,
21083
21111
  contextText: a,
21084
- copyContext: async (e) => wS(t, n, await a(e)),
21112
+ copyContext: async (e) => TS(t, n, await a(e)),
21085
21113
  select: async (r) => {
21086
21114
  let a = Array.isArray(r) ? [...r] : [String(r)];
21087
- return e.select(a), await IS(t, n), i({ scope: "selection" });
21115
+ return e.select(a), await LS(t, n), i({ scope: "selection" });
21088
21116
  },
21089
21117
  annotations: async () => e.annotations(),
21090
21118
  removeAnnotation: async (r) => {
21091
- e.removeAnnotation(r), await IS(t, n);
21119
+ e.removeAnnotation(r), await LS(t, n);
21092
21120
  },
21093
21121
  review: async (i) => {
21094
- if (await IS(t, n), i) return CS({
21122
+ if (await LS(t, n), i) return wS({
21095
21123
  runtime: e,
21096
21124
  ownerDocument: t,
21097
21125
  ownerWindow: n,
@@ -21099,7 +21127,7 @@ var TS = Kv, ES = qv, DS = () => ({
21099
21127
  layoutGuides: r()
21100
21128
  });
21101
21129
  let a = r();
21102
- return e.annotations().map((r) => CS({
21130
+ return e.annotations().map((r) => wS({
21103
21131
  runtime: e,
21104
21132
  ownerDocument: t,
21105
21133
  ownerWindow: n,
@@ -21107,38 +21135,38 @@ var TS = Kv, ES = qv, DS = () => ({
21107
21135
  layoutGuides: a
21108
21136
  }));
21109
21137
  },
21110
- capturePlan: async (e) => yS(await i(e)),
21138
+ capturePlan: async (e) => bS(await i(e)),
21111
21139
  prepareCapture: async () => {
21112
- e.prepareCapture(), await IS(t, n);
21140
+ e.prepareCapture(), await LS(t, n);
21113
21141
  },
21114
21142
  finishCapture: async () => {
21115
- e.finishCapture(), await IS(t, n);
21143
+ e.finishCapture(), await LS(t, n);
21116
21144
  }
21117
21145
  };
21118
- }, RS = (e) => {
21146
+ }, zS = (e) => {
21119
21147
  let t = e.currentSelection();
21120
21148
  return t.elements.length > 0 || t.region !== null;
21121
21149
  };
21122
- function zS(e = {}) {
21150
+ function BS(e = {}) {
21123
21151
  return {
21124
- id: OS,
21125
- version: Yx,
21152
+ id: kS,
21153
+ version: Xx,
21126
21154
  requires: ["runtime:solid"],
21127
- provides: [kS],
21155
+ provides: [AS],
21128
21156
  setup(t) {
21129
21157
  let n = t.service.get("runtime:solid");
21130
21158
  if (!n) throw Error("Mesurer context plugin requires the renderer runtime service.");
21131
- let r = n.createWorkspaceRuntime(OS), i = LS(r, n.ownerDocument, n.ownerWindow, () => t.service.get(ES)?.list() ?? []);
21132
- t.service.provide(kS, i), t.state.register({
21133
- id: AS,
21159
+ let r = n.createWorkspaceRuntime(kS), i = RS(r, n.ownerDocument, n.ownerWindow, () => t.service.get(DS)?.list() ?? []);
21160
+ t.service.provide(AS, i), t.state.register({
21161
+ id: jS,
21134
21162
  initial: { ui: e.ui ?? !0 },
21135
21163
  persist: !0
21136
21164
  }), t.state.register({
21137
- id: jS,
21138
- initial: { hasSelection: RS(r) }
21165
+ id: MS,
21166
+ initial: { hasSelection: zS(r) }
21139
21167
  });
21140
- let a = () => t.state.get("mesurer.context.settings")?.ui ?? !0, o = () => t.state.get(jS)?.hasSelection === !0, s = (e) => {
21141
- t.state.update(AS, (t) => ({
21168
+ let a = () => t.state.get("mesurer.context.settings")?.ui ?? !0, o = () => t.state.get(MS)?.hasSelection === !0, s = (e) => {
21169
+ t.state.update(jS, (t) => ({
21142
21170
  ...t,
21143
21171
  ui: e
21144
21172
  }));
@@ -21152,12 +21180,12 @@ function zS(e = {}) {
21152
21180
  region: e.region ? { ...e.region } : null
21153
21181
  }, r.selectGestureActive() ? c?.abandonNoteComposer() : n && c?.closeNoteComposer();
21154
21182
  let i = e.elements.length > 0 || e.region !== null;
21155
- i !== (t.state.get(jS)?.hasSelection ?? !1) && t.state.update(jS, () => ({ hasSelection: i }));
21183
+ i !== (t.state.get(MS)?.hasSelection ?? !1) && t.state.update(MS, () => ({ hasSelection: i }));
21156
21184
  });
21157
21185
  t.command.register("context.copy", () => i.copyContext()), t.command.register("context.copy-selection", () => i.copyContext({ scope: "selection" }));
21158
21186
  let g = () => {
21159
21187
  let e = u?.element;
21160
- e && (n.rendererRoot?.hasAttribute(MS) ? e.setAttribute(MS, "true") : e.removeAttribute(MS));
21188
+ e && (n.rendererRoot?.hasAttribute(NS) ? e.setAttribute(NS, "true") : e.removeAttribute(NS));
21161
21189
  }, _ = () => {
21162
21190
  d?.disconnect(), d = null, c = null, l?.(), l = null, u?.dispose(), u = null;
21163
21191
  }, v = () => {
@@ -21166,7 +21194,7 @@ function zS(e = {}) {
21166
21194
  let e = new n.ownerWindow.MutationObserver(g);
21167
21195
  d = e, e.observe(n.rendererRoot, {
21168
21196
  attributes: !0,
21169
- attributeFilter: [MS]
21197
+ attributeFilter: [NS]
21170
21198
  }), g();
21171
21199
  }
21172
21200
  let e = {
@@ -21190,7 +21218,7 @@ function zS(e = {}) {
21190
21218
  command: "context.copy",
21191
21219
  order: 70,
21192
21220
  toolbarMode: "always",
21193
- icon: NS,
21221
+ icon: PS,
21194
21222
  hidden: () => !a()
21195
21223
  }), t.tool.register({
21196
21224
  id: "context.copy-selection",
@@ -21199,7 +21227,7 @@ function zS(e = {}) {
21199
21227
  command: "context.copy-selection",
21200
21228
  order: 71,
21201
21229
  toolbarMode: "always",
21202
- icon: PS,
21230
+ icon: FS,
21203
21231
  hidden: () => !a(),
21204
21232
  disabled: () => !o()
21205
21233
  }), t.tool.register({
@@ -21209,7 +21237,7 @@ function zS(e = {}) {
21209
21237
  command: "context.add-note",
21210
21238
  order: 72,
21211
21239
  toolbarMode: "always",
21212
- icon: FS,
21240
+ icon: IS,
21213
21241
  hidden: () => !a(),
21214
21242
  disabled: () => !o()
21215
21243
  }), t.settings.register({
@@ -21232,7 +21260,7 @@ function zS(e = {}) {
21232
21260
  }
21233
21261
  //#endregion
21234
21262
  //#region src/host-layer.ts
21235
- var BS = {
21263
+ var VS = {
21236
21264
  display: "block",
21237
21265
  position: "fixed",
21238
21266
  inset: "0",
@@ -21274,48 +21302,48 @@ var BS = {
21274
21302
  "letter-spacing": "normal",
21275
21303
  direction: "ltr"
21276
21304
  };
21277
- function VS(e) {
21278
- for (let [t, n] of Object.entries(BS)) e.style.setProperty(t, n, "important");
21279
- }
21280
21305
  function HS(e) {
21306
+ for (let [t, n] of Object.entries(VS)) e.style.setProperty(t, n, "important");
21307
+ }
21308
+ function US(e) {
21281
21309
  return "popover" in e && "showPopover" in e && typeof e.showPopover == "function" && "hidePopover" in e && typeof e.hidePopover == "function";
21282
21310
  }
21283
- var US = (e) => "newState" in e, WS = (e) => e.localName === "dialog";
21284
- function GS(e) {
21285
- if (!WS(e) || !e.open) return !1;
21311
+ var WS = (e) => "newState" in e, GS = (e) => e.localName === "dialog";
21312
+ function KS(e) {
21313
+ if (!GS(e) || !e.open) return !1;
21286
21314
  try {
21287
21315
  return e.matches(":modal");
21288
21316
  } catch {
21289
21317
  return !1;
21290
21318
  }
21291
21319
  }
21292
- function KS(e, t, n = !0) {
21293
- VS(e);
21320
+ function qS(e, t, n = !0) {
21321
+ HS(e);
21294
21322
  let r = e.ownerDocument, i = r.defaultView ?? window, a = t, o = !1, s = "fixed", c = !1, l = 0, u = [];
21295
- if (n && HS(e) && (e.popover = "manual"), t.append(e), n && HS(e)) try {
21323
+ if (n && US(e) && (e.popover = "manual"), t.append(e), n && US(e)) try {
21296
21324
  e.showPopover(), c = e.matches(":popover-open"), c && (s = "top-layer");
21297
21325
  } catch {
21298
21326
  e.removeAttribute("popover");
21299
21327
  }
21300
21328
  let d = () => {
21301
- if (!(!c || !HS(e))) try {
21329
+ if (!(!c || !US(e))) try {
21302
21330
  e.matches(":popover-open") || e.showPopover();
21303
21331
  } catch {}
21304
21332
  }, f = (t) => {
21305
21333
  if (e.parentNode === t) return;
21306
- let n = c && HS(e) && e.matches(":popover-open");
21307
- if (n && HS(e)) try {
21334
+ let n = c && US(e) && e.matches(":popover-open");
21335
+ if (n && US(e)) try {
21308
21336
  e.hidePopover();
21309
21337
  } catch {}
21310
- t.append(e), VS(e), n && d();
21338
+ t.append(e), HS(e), n && d();
21311
21339
  }, p = () => {
21312
- u = u.filter((e) => e.isConnected && GS(e)), f(u.at(-1) ?? a);
21340
+ u = u.filter((e) => e.isConnected && KS(e)), f(u.at(-1) ?? a);
21313
21341
  }, m = (e) => {
21314
21342
  u = u.filter((t) => t !== e), u.push(e), p();
21315
21343
  }, h = (e) => {
21316
21344
  u = u.filter((t) => t !== e), p();
21317
21345
  }, g = () => {
21318
- if (!(o || !c || !HS(e))) try {
21346
+ if (!(o || !c || !US(e))) try {
21319
21347
  e.matches(":popover-open") && e.hidePopover(), e.showPopover();
21320
21348
  } catch {}
21321
21349
  }, _ = () => {
@@ -21324,27 +21352,27 @@ function KS(e, t, n = !0) {
21324
21352
  }));
21325
21353
  }, v = (t) => {
21326
21354
  if (!c || t.target === e) return;
21327
- let n = US(t) ? t.newState : void 0, r = t.target;
21355
+ let n = WS(t) ? t.newState : void 0, r = t.target;
21328
21356
  if (r instanceof i.Element) {
21329
- if (WS(r)) {
21330
- n === "open" && GS(r) ? (m(r), _()) : n === "closed" ? h(r) : n === "open" && _();
21357
+ if (GS(r)) {
21358
+ n === "open" && KS(r) ? (m(r), _()) : n === "closed" ? h(r) : n === "open" && _();
21331
21359
  return;
21332
21360
  }
21333
21361
  n === "open" && r.hasAttribute("popover") && _();
21334
21362
  }
21335
21363
  }, y = (e) => {
21336
21364
  let t = e.target;
21337
- t instanceof i.Element && WS(t) && h(t);
21365
+ t instanceof i.Element && GS(t) && h(t);
21338
21366
  }, b = () => {
21339
21367
  r.fullscreenElement && _();
21340
21368
  }, x = (e) => {
21341
- GS(e) && m(e);
21342
- for (let t of e.querySelectorAll("dialog")) GS(t) && m(t);
21369
+ KS(e) && m(e);
21370
+ for (let t of e.querySelectorAll("dialog")) KS(t) && m(t);
21343
21371
  }, S = new i.MutationObserver((e) => {
21344
21372
  if (c) for (let t of e) {
21345
21373
  if (t.type === "attributes") {
21346
21374
  let e = t.target;
21347
- e instanceof i.Element && WS(e) && (GS(e) ? m(e) : h(e));
21375
+ e instanceof i.Element && GS(e) && (KS(e) ? m(e) : h(e));
21348
21376
  }
21349
21377
  for (let e of t.addedNodes) e instanceof i.Element && x(e);
21350
21378
  u.some((e) => !e.isConnected) && p();
@@ -21360,7 +21388,7 @@ function KS(e, t, n = !0) {
21360
21388
  bringToFront: g,
21361
21389
  dispose() {
21362
21390
  if (!o) {
21363
- if (o = !0, l && i.cancelAnimationFrame(l), r.removeEventListener("toggle", v, !0), r.removeEventListener("close", y, !0), r.removeEventListener("fullscreenchange", b, !0), S.disconnect(), c && HS(e) && e.matches(":popover-open")) try {
21391
+ if (o = !0, l && i.cancelAnimationFrame(l), r.removeEventListener("toggle", v, !0), r.removeEventListener("close", y, !0), r.removeEventListener("fullscreenchange", b, !0), S.disconnect(), c && US(e) && e.matches(":popover-open")) try {
21364
21392
  e.hidePopover();
21365
21393
  } catch {}
21366
21394
  u = [];
@@ -21370,28 +21398,28 @@ function KS(e, t, n = !0) {
21370
21398
  }
21371
21399
  //#endregion
21372
21400
  //#region src/plugins/codex/index.ts
21373
- var qS = "mesurer.codex", JS = "codex:v1", YS = "mesurer.plugin.before-disable", XS = 2e3, ZS = 750, QS = 1800, $S = 2e3, eC = 12e4, tC = 10, nC = 5, rC = "Codex host connection is unavailable. Electron apps must expose window.__MESURER_HOST__.codexBridge from preload.", iC = [
21401
+ var JS = "mesurer.codex", YS = "codex:v1", XS = "mesurer.plugin.before-disable", ZS = 2e3, QS = 750, $S = 1800, eC = 2e3, tC = 12e4, nC = 10, rC = 5, iC = "Codex host connection is unavailable. Electron apps must expose window.__MESURER_HOST__.codexBridge from preload.", aC = [
21374
21402
  "Implement the current human feedback from Mesurer in this project.",
21375
21403
  "Treat the rendered page as the source of truth, preserve unrelated Mesurer review state,",
21376
21404
  "and verify the affected UI in the live page with Mesurer before claiming completion."
21377
- ].join(" "), aC = {
21405
+ ].join(" "), oC = {
21378
21406
  viewBox: "0 0 256 256",
21379
21407
  paths: ["M224,48,32,120l88,32,32,88Z M120,152l104-104"]
21380
- }, oC = {
21408
+ }, sC = {
21381
21409
  viewBox: "0 0 256 256",
21382
21410
  paths: ["M72,32H184a8,8,0,0,1,0,16h-8v20.69a40,40,0,0,1-11.72,28.28L137.25,124l27.03,27.03A40,40,0,0,1,176,179.31V208h8a8,8,0,0,1,0,16H72a8,8,0,0,1,0-16h8V179.31a40,40,0,0,1,11.72-28.28L118.75,124,91.72,96.97A40,40,0,0,1,80,68.69V48H72a8,8,0,0,1,0-16Zm24,16V68.69a24,24,0,0,0,7.03,16.97L128,110.63l24.97-24.97A24,24,0,0,0,160,68.69V48Zm32,90.63-24.97,24.97A24,24,0,0,0,96,180.57V208h64V180.57a24,24,0,0,0-7.03-16.97Z"]
21383
- }, sC = {
21411
+ }, cC = {
21384
21412
  viewBox: "0 0 256 256",
21385
21413
  paths: ["M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z"]
21386
- }, cC = () => {
21414
+ }, lC = () => {
21387
21415
  try {
21388
21416
  let e = globalThis.location;
21389
21417
  return e?.origin ? `mesurer-codex-ui:v2:${e.origin}${e.pathname}` : null;
21390
21418
  } catch {
21391
21419
  return null;
21392
21420
  }
21393
- }, lC = () => {
21394
- let e = cC();
21421
+ }, uC = () => {
21422
+ let e = lC();
21395
21423
  if (!e) return null;
21396
21424
  try {
21397
21425
  let t = globalThis.sessionStorage?.getItem(e);
@@ -21416,18 +21444,18 @@ var qS = "mesurer.codex", JS = "codex:v1", YS = "mesurer.plugin.before-disable",
21416
21444
  } catch {
21417
21445
  return null;
21418
21446
  }
21419
- }, uC = (e) => {
21420
- let t = cC();
21447
+ }, dC = (e) => {
21448
+ let t = lC();
21421
21449
  if (t) try {
21422
21450
  globalThis.sessionStorage?.setItem(t, JSON.stringify(e));
21423
21451
  } catch {}
21424
- }, dC = async (e) => {
21452
+ }, fC = async (e) => {
21425
21453
  let t = window.__MESURER_HOST__?.codexBridge;
21426
- if (!t) throw Error(rC);
21454
+ if (!t) throw Error(iC);
21427
21455
  let n = await t(e);
21428
21456
  if (n.ok === !1) throw Error(n.error ?? "Codex Bridge request failed.");
21429
21457
  return n;
21430
- }, fC = (e) => {
21458
+ }, pC = (e) => {
21431
21459
  let t = e.runtime;
21432
21460
  return !t || ![
21433
21461
  "shared",
@@ -21445,10 +21473,10 @@ var qS = "mesurer.codex", JS = "codex:v1", YS = "mesurer.plugin.before-disable",
21445
21473
  available: t.available === !0,
21446
21474
  reason: t.reason
21447
21475
  };
21448
- }, pC = (e) => ({
21476
+ }, mC = (e) => ({
21449
21477
  thread: e.thread?.trim() || null,
21450
21478
  threads: Array.isArray(e.threads) ? e.threads.filter((e) => e.trim().length > 0) : []
21451
- }), mC = (e) => {
21479
+ }), hC = (e) => {
21452
21480
  let t = e.deliveryId?.trim(), n = e.thread?.trim(), r = e.status;
21453
21481
  if (!t || !n || !r) throw Error("Codex Bridge returned an invalid delivery state.");
21454
21482
  let i = {
@@ -21460,7 +21488,7 @@ var qS = "mesurer.codex", JS = "codex:v1", YS = "mesurer.plugin.before-disable",
21460
21488
  updatedAt: Number.isFinite(e.updatedAt) ? Number(e.updatedAt) : 0
21461
21489
  };
21462
21490
  return e.queuedSubmissionId !== void 0 && (i.queuedSubmissionId = e.queuedSubmissionId?.trim() || null), e.dispatch !== void 0 && (i.dispatch = e.dispatch), e.dispatchError !== void 0 && (i.dispatchError = e.dispatchError?.trim() || null), i;
21463
- }, hC = (e) => ({
21491
+ }, gC = (e) => ({
21464
21492
  thread: e.thread?.trim() || null,
21465
21493
  threads: Array.isArray(e.threadDetails) ? e.threadDetails.flatMap((e) => {
21466
21494
  let t = e.id?.trim() ?? "";
@@ -21472,7 +21500,7 @@ var qS = "mesurer.codex", JS = "codex:v1", YS = "mesurer.plugin.before-disable",
21472
21500
  }] : [];
21473
21501
  }) : [],
21474
21502
  hasMore: e.hasMore === !0
21475
- }), gC = async (e, t, n) => {
21503
+ }), _C = async (e, t, n) => {
21476
21504
  let r = t?.instruction?.trim() || n, i = await e.annotations(), a = t?.annotationIds, o = a ? a.flatMap((e) => {
21477
21505
  let t = i.find((t) => t.id === e);
21478
21506
  return t ? [t] : [];
@@ -21495,18 +21523,18 @@ var qS = "mesurer.codex", JS = "codex:v1", YS = "mesurer.plugin.before-disable",
21495
21523
  ])
21496
21524
  ].join("\n").trimEnd()
21497
21525
  };
21498
- }, _C = (e) => e.length > 16 ? `${e.slice(0, 8)}…${e.slice(-4)}` : e, vC = (e, t = 42) => e.length > t ? `${e.slice(0, t - 1)}…` : e, yC = (e) => e instanceof Error && (e.message === rC || e.message === "Codex Bridge is unavailable in this host." || e.message.includes("Codex Bridge lease"));
21499
- function bC(e = {}) {
21500
- let t = e.instruction?.trim() || iC, n = e.ui ?? !0, r = e.clearCompletedAnnotations ?? !0;
21526
+ }, vC = (e) => e.length > 16 ? `${e.slice(0, 8)}…${e.slice(-4)}` : e, yC = (e, t = 42) => e.length > t ? `${e.slice(0, t - 1)}…` : e, bC = (e) => e instanceof Error && (e.message === iC || e.message === "Codex Bridge is unavailable in this host." || e.message.includes("Codex Bridge lease"));
21527
+ function xC(e = {}) {
21528
+ let t = e.instruction?.trim() || aC, n = e.ui ?? !0, r = e.clearCompletedAnnotations ?? !0;
21501
21529
  return {
21502
- id: qS,
21503
- version: Yx,
21504
- requires: [kS],
21505
- provides: [JS],
21530
+ id: JS,
21531
+ version: Xx,
21532
+ requires: [AS],
21533
+ provides: [YS],
21506
21534
  async setup(e) {
21507
- let i = e.service.get(kS);
21535
+ let i = e.service.get(AS);
21508
21536
  if (!i) throw Error("Mesurer Codex plugin requires context() from mesurer-solid/plugins.");
21509
- let a = n ? lC() : null, o = "unknown", s = null, c = !1, l = a?.originThread ?? null, u = a?.selectedThread ?? a?.originThread ?? null, d = !1, f = null, p = [], m = [], h = !1, g = nC, _, v = "", y = null, b = a?.delivery ? {
21537
+ let a = n ? uC() : null, o = "unknown", s = null, c = !1, l = a?.originThread ?? null, u = a?.selectedThread ?? a?.originThread ?? null, d = !1, f = null, p = [], m = [], h = !1, g = rC, _, v = "", y = null, b = a?.delivery ? {
21510
21538
  id: a.delivery.id,
21511
21539
  thread: a.delivery.thread,
21512
21540
  status: a.delivery.status,
@@ -21515,38 +21543,38 @@ function bC(e = {}) {
21515
21543
  dispatch: a.delivery.dispatch ?? null,
21516
21544
  dispatchError: a.delivery.dispatchError ?? null
21517
21545
  } : null, x = 0, S = 0, C = null, w = !1, T = null, E = async (e) => {
21518
- if (e.action === "activate" || e.action === "runtime") return dC(e);
21546
+ if (e.action === "activate" || e.action === "runtime") return fC(e);
21519
21547
  if (!T) throw Error("Codex Bridge lease is not active for this plugin.");
21520
- return dC({
21548
+ return fC({
21521
21549
  ...e,
21522
21550
  leaseId: T
21523
21551
  });
21524
21552
  }, D = async () => {
21525
21553
  let e = T;
21526
21554
  if (e) {
21527
- if ((await dC({
21555
+ if ((await fC({
21528
21556
  action: "deactivate",
21529
21557
  leaseId: e
21530
21558
  })).released !== !0) throw Error("Codex Bridge did not confirm lease release.");
21531
21559
  T = null;
21532
21560
  }
21533
- }, O = await dC({
21561
+ }, O = await fC({
21534
21562
  action: "activate",
21535
21563
  thread: u ?? l ?? void 0
21536
21564
  }), k = O.leaseId?.trim();
21537
21565
  if (!k) throw Error("Codex Bridge did not return an activation lease.");
21538
- T = k, o = "available", s = fC(O);
21539
- let A = pC(O);
21566
+ T = k, o = "available", s = pC(O);
21567
+ let A = mC(O);
21540
21568
  c = !0, f = A.thread, p = A.threads, e.lifecycle.onDispose(() => {
21541
21569
  T && D().catch((e) => {
21542
21570
  let t = e instanceof Error ? e.message : String(e);
21543
21571
  console.error(`[Mesurer] Failed to release Codex host lease: ${t}`);
21544
21572
  });
21545
- }), e.hook.on(YS, async (e) => {
21573
+ }), e.hook.on(XS, async (e) => {
21546
21574
  e === "mesurer.codex" && await D();
21547
21575
  });
21548
21576
  let j = async () => {
21549
- let e = fC(await E({ action: "runtime" }));
21577
+ let e = pC(await E({ action: "runtime" }));
21550
21578
  if (!e) throw Error("Codex Bridge returned an invalid runtime state.");
21551
21579
  return s = e, e;
21552
21580
  }, M = async () => {
@@ -21554,8 +21582,8 @@ function bC(e = {}) {
21554
21582
  action: "health",
21555
21583
  thread: u ?? l ?? void 0
21556
21584
  });
21557
- return s = fC(e) ?? s, pC(e);
21558
- }, N = M, P = async (e) => mC(await E({
21585
+ return s = pC(e) ?? s, mC(e);
21586
+ }, N = M, P = async (e) => hC(await E({
21559
21587
  action: "delivery",
21560
21588
  deliveryId: e
21561
21589
  })), F = async (e) => {
@@ -21565,13 +21593,13 @@ function bC(e = {}) {
21565
21593
  deliveryId: e.id,
21566
21594
  thread: e.thread
21567
21595
  };
21568
- return e.queuedSubmissionId && (t.queuedSubmissionId = e.queuedSubmissionId), mC(await E(t));
21596
+ return e.queuedSubmissionId && (t.queuedSubmissionId = e.queuedSubmissionId), hC(await E(t));
21569
21597
  }, I = async (e = {}) => {
21570
21598
  let t = {
21571
21599
  action: "threads",
21572
- limit: e.limit ?? tC
21600
+ limit: e.limit ?? nC
21573
21601
  }, n = e.thread?.trim();
21574
- return n && (t.thread = n), hC(await E(t));
21602
+ return n && (t.thread = n), gC(await E(t));
21575
21603
  }, L = () => u ?? l ?? (d ? null : f), R = () => {
21576
21604
  if (!n) return;
21577
21605
  let e = b?.id && (b.status === "queued" || b.status === "working" || b.status === "interrupted") ? {
@@ -21583,7 +21611,7 @@ function bC(e = {}) {
21583
21611
  dispatch: b.dispatch,
21584
21612
  dispatchError: b.dispatchError
21585
21613
  } : null;
21586
- uC({
21614
+ dC({
21587
21615
  version: 1,
21588
21616
  originThread: l,
21589
21617
  selectedThread: u,
@@ -21601,12 +21629,12 @@ function bC(e = {}) {
21601
21629
  "queueing",
21602
21630
  "queued",
21603
21631
  "working"
21604
- ].includes(b.status) ? oC : b.status === "completed" ? sC : aC : aC, W = () => {
21632
+ ].includes(b.status) ? sC : b.status === "completed" ? cC : oC : oC, W = () => {
21605
21633
  let e = [], t = /* @__PURE__ */ new Set(), n = (n) => {
21606
21634
  t.has(n.id) || (t.add(n.id), e.push(n));
21607
21635
  }, r = (e) => ({
21608
21636
  id: e,
21609
- title: `Codex ${_C(e)}`,
21637
+ title: `Codex ${vC(e)}`,
21610
21638
  updatedAt: null,
21611
21639
  connected: !0
21612
21640
  });
@@ -21634,7 +21662,7 @@ function bC(e = {}) {
21634
21662
  let t = e.id === l ? "Current · " : e.connected ? "Loaded · " : "", r = b?.thread === e.id ? ` · ${V(b.status)}` : "";
21635
21663
  return {
21636
21664
  id: `codex.thread.${e.id}`,
21637
- label: `${t}${vC(e.title)}${r}`,
21665
+ label: `${t}${yC(e.title)}${r}`,
21638
21666
  checked: () => n === e.id,
21639
21667
  disabled: () => B(),
21640
21668
  run() {
@@ -21642,15 +21670,15 @@ function bC(e = {}) {
21642
21670
  }
21643
21671
  };
21644
21672
  });
21645
- return g < tC && (e.length > g || h) && r.push({
21673
+ return g < nC && (e.length > g || h) && r.push({
21646
21674
  id: "codex.thread.show-more",
21647
21675
  label: "Show 5 more…",
21648
21676
  run() {
21649
- g = tC, G();
21677
+ g = nC, G();
21650
21678
  }
21651
21679
  }), b?.queuedSubmissionId && b.status === "queued" && (b.dispatch === "desktop-opened" || b.dispatch === "desktop-wake-failed") && r.push({
21652
21680
  id: "codex.delivery.receipt",
21653
- label: `Receipt · ${_C(b.queuedSubmissionId)}`,
21681
+ label: `Receipt · ${vC(b.queuedSubmissionId)}`,
21654
21682
  disabled: () => !0,
21655
21683
  run: () => void 0
21656
21684
  }), r;
@@ -21687,7 +21715,7 @@ function bC(e = {}) {
21687
21715
  }, ne = async (e) => {
21688
21716
  if (o !== "available") return;
21689
21717
  let t = await I({
21690
- limit: tC,
21718
+ limit: nC,
21691
21719
  thread: e ?? void 0
21692
21720
  });
21693
21721
  m = t.threads, h = t.hasMore, p = t.threads.filter((e) => e.connected).map((e) => e.id), f = t.thread;
@@ -21709,7 +21737,7 @@ function bC(e = {}) {
21709
21737
  }, ie = () => {
21710
21738
  S && globalThis.clearTimeout(S), S = globalThis.setTimeout(() => {
21711
21739
  S = 0, b?.status === "completed" && (b = null, R(), G());
21712
- }, QS);
21740
+ }, $S);
21713
21741
  }, ae = async (e) => {
21714
21742
  if (!(!b || b.id !== e.id)) {
21715
21743
  if (b = {
@@ -21731,14 +21759,14 @@ function bC(e = {}) {
21731
21759
  if (e.status === "interrupted") {
21732
21760
  R(), G();
21733
21761
  let t = e.updatedAt > 0 ? e.updatedAt : Date.now();
21734
- Date.now() - t < eC && (x = globalThis.setTimeout(() => {
21762
+ Date.now() - t < tC && (x = globalThis.setTimeout(() => {
21735
21763
  x = 0, oe(e.id);
21736
- }, $S));
21764
+ }, eC));
21737
21765
  return;
21738
21766
  }
21739
21767
  G(), x = globalThis.setTimeout(() => {
21740
21768
  x = 0, oe(e.id);
21741
- }, ZS);
21769
+ }, QS);
21742
21770
  }
21743
21771
  }, oe = async (e) => {
21744
21772
  if (!(w || b?.id !== e)) try {
@@ -21762,7 +21790,7 @@ function bC(e = {}) {
21762
21790
  b = {
21763
21791
  ...b,
21764
21792
  status: "failed"
21765
- }, R(), yC(n) && (o = "unavailable"), G();
21793
+ }, R(), bC(n) && (o = "unavailable"), G();
21766
21794
  }
21767
21795
  }, se = {
21768
21796
  health: M,
@@ -21774,11 +21802,11 @@ function bC(e = {}) {
21774
21802
  let n = await E({
21775
21803
  action: "target",
21776
21804
  thread: t
21777
- }), r = pC(n);
21778
- return s = fC(n) ?? s, z(t, !l), f = r.thread, p = r.threads, o = "available", c = !0, G(), r;
21805
+ }), r = mC(n);
21806
+ return s = pC(n) ?? s, z(t, !l), f = r.thread, p = r.threads, o = "available", c = !0, G(), r;
21779
21807
  },
21780
21808
  async queue(e) {
21781
- let r = await gC(i, e, t), a = e?.thread?.trim(), s = a || (n ? L() : null);
21809
+ let r = await _C(i, e, t), a = e?.thread?.trim(), s = a || (n ? L() : null);
21782
21810
  if (n && !a && (d || !s)) throw Error("Choose a Codex thread before queueing feedback.");
21783
21811
  let c = { message: r.message };
21784
21812
  s && (c.thread = s);
@@ -21798,14 +21826,14 @@ function bC(e = {}) {
21798
21826
  };
21799
21827
  return e.queuedSubmissionId !== void 0 && (n.queuedSubmissionId = e.queuedSubmissionId?.trim() || null), e.dispatch !== void 0 && (n.dispatch = e.dispatch), e.dispatchError !== void 0 && (n.dispatchError = e.dispatchError?.trim() || null), n;
21800
21828
  } catch (e) {
21801
- throw n && yC(e) && (o = "unavailable", G()), e;
21829
+ throw n && bC(e) && (o = "unavailable", G()), e;
21802
21830
  }
21803
21831
  },
21804
21832
  send(e) {
21805
21833
  return se.queue(e);
21806
21834
  }
21807
21835
  };
21808
- e.service.provide(JS, se);
21836
+ e.service.provide(YS, se);
21809
21837
  let ce = async () => {
21810
21838
  if (!(C || B())) return re(), b = {
21811
21839
  id: null,
@@ -21836,9 +21864,9 @@ function bC(e = {}) {
21836
21864
  updatedAt: 0
21837
21865
  }) : x = globalThis.setTimeout(() => {
21838
21866
  x = 0, oe(e.deliveryId);
21839
- }, ZS) : S = globalThis.setTimeout(() => {
21867
+ }, QS) : S = globalThis.setTimeout(() => {
21840
21868
  S = 0, b?.id === null && b?.status === "queued" && (b = null, R(), G());
21841
- }, QS);
21869
+ }, $S);
21842
21870
  } catch (e) {
21843
21871
  b = null, R(), G();
21844
21872
  let t = e instanceof Error ? e.message : String(e);
@@ -21866,7 +21894,7 @@ function bC(e = {}) {
21866
21894
  }, 0));
21867
21895
  let t = globalThis.setInterval(() => {
21868
21896
  c && ee().catch(() => void 0);
21869
- }, XS);
21897
+ }, ZS);
21870
21898
  e.lifecycle.onDispose(() => {
21871
21899
  w = !0, re(), globalThis.clearInterval(t), _?.dispose(), _ = void 0;
21872
21900
  });
@@ -21876,64 +21904,64 @@ function bC(e = {}) {
21876
21904
  }
21877
21905
  //#endregion
21878
21906
  //#region src/recording.ts
21879
- var xC = vb, SC = (e = {}) => ({
21907
+ var SC = vb, CC = (e = {}) => ({
21880
21908
  ...Bb(e),
21881
- version: Yx
21882
- }), CC = Qb, wC = (e = {}) => ({
21883
- ...vx(e),
21884
- version: Yx
21885
- }), TC = () => globalThis.window?.__MESURER_HOST__?.codexBridge !== void 0, EC = [
21909
+ version: Xx
21910
+ }), wC = $b, TC = (e = {}) => ({
21911
+ ...yx(e),
21912
+ version: Xx
21913
+ }), EC = () => globalThis.window?.__MESURER_HOST__?.codexBridge !== void 0, DC = [
21886
21914
  {
21887
- id: OS,
21915
+ id: kS,
21888
21916
  label: "Context",
21889
21917
  order: 30,
21890
- create: zS,
21918
+ create: BS,
21891
21919
  settingsIds: ["context"],
21892
21920
  hiddenSettingsControlIds: ["ui"]
21893
21921
  },
21894
21922
  {
21895
- id: Xx,
21923
+ id: Zx,
21896
21924
  label: "Edit",
21897
21925
  order: 35,
21898
- create: Qx,
21926
+ create: $x,
21899
21927
  settingsIds: ["arrange"]
21900
21928
  },
21901
21929
  {
21902
- id: TS,
21930
+ id: ES,
21903
21931
  label: "Layout Guides",
21904
21932
  order: 38,
21905
- create: DS
21933
+ create: OS
21906
21934
  },
21907
21935
  {
21908
- id: CC,
21936
+ id: wC,
21909
21937
  label: "Screenshot",
21910
21938
  order: 40,
21911
- create: wC,
21939
+ create: TC,
21912
21940
  settingsIds: ["screenshot"],
21913
21941
  hiddenSettingsControlIds: ["tool"]
21914
21942
  },
21915
21943
  {
21916
- id: xC,
21944
+ id: SC,
21917
21945
  label: "Recording",
21918
21946
  order: 42,
21919
- create: SC,
21947
+ create: CC,
21920
21948
  settingsIds: ["recording"],
21921
21949
  hiddenSettingsControlIds: ["tool"]
21922
21950
  },
21923
21951
  {
21924
- id: qS,
21952
+ id: JS,
21925
21953
  label: "Codex",
21926
21954
  order: 45,
21927
- create: bC
21955
+ create: xC
21928
21956
  }
21929
- ], DC = (e) => {
21930
- let t = e !== void 0, n = new Map((e ?? []).map((e) => [e.id, e])), r = new Set(EC.map((e) => e.id)), i = EC.map((e) => {
21957
+ ], OC = (e) => {
21958
+ let t = e !== void 0, n = new Map((e ?? []).map((e) => [e.id, e])), r = new Set(DC.map((e) => e.id)), i = DC.map((e) => {
21931
21959
  let r = n.get(e.id);
21932
21960
  return {
21933
21961
  ...e,
21934
21962
  settingsIds: e.settingsIds ? [...e.settingsIds] : void 0,
21935
21963
  hiddenSettingsControlIds: e.hiddenSettingsControlIds ? [...e.hiddenSettingsControlIds] : void 0,
21936
- enabled: t ? !!r : e.id === "mesurer.codex" ? TC() : e.enabled !== !1,
21964
+ enabled: t ? !!r : e.id === "mesurer.codex" ? EC() : e.enabled !== !1,
21937
21965
  create: r ? () => r : e.create
21938
21966
  };
21939
21967
  });
@@ -21944,16 +21972,16 @@ var xC = vb, SC = (e = {}) => ({
21944
21972
  create: () => n
21945
21973
  });
21946
21974
  return i;
21947
- }, OC = (e) => e;
21948
- function kC() {
21949
- return lS();
21975
+ }, kC = (e) => e;
21976
+ function AC() {
21977
+ return uS();
21950
21978
  }
21951
- async function AC(e = {}) {
21952
- return uS(e);
21979
+ async function jC(e = {}) {
21980
+ return dS(e);
21953
21981
  }
21954
21982
  //#endregion
21955
21983
  //#region src/index.tsx
21956
- var jC = {
21984
+ var MC = {
21957
21985
  select: "select",
21958
21986
  xray: "xray",
21959
21987
  colorPicker: "color-picker",
@@ -21963,14 +21991,14 @@ var jC = {
21963
21991
  distance: "distance",
21964
21992
  settings: "settings"
21965
21993
  };
21966
- function MC(e = {}) {
21994
+ function NC(e = {}) {
21967
21995
  if (!("document" in globalThis)) throw Error("mountMesurer() requires a browser or Electron renderer document.");
21968
21996
  let { target: t = document.body, isolate: n = !0, shadowMode: r = "open", topLayer: i = !0, agent: a = !1, signal: o, onPluginHost: s, onPluginsReady: c, plugins: l, excludeBuiltins: u, excludePlugins: d, ...f } = e;
21969
21997
  if (o?.aborted) throw o.reason ?? new DOMException("Mesurer mount aborted.", "AbortError");
21970
21998
  if (!t) throw Error("mountMesurer() requires document.body to exist or an explicit target.");
21971
21999
  let p = t.ownerDocument ?? document, m = p.defaultView ?? window, h = p.createElement("div");
21972
22000
  h.dataset.mesurerIsland = "true";
21973
- let g = KS(h, t, i), _ = h, v = h, y = h;
22001
+ let g = qS(h, t, i), _ = h, v = h, y = h;
21974
22002
  if (n) {
21975
22003
  let e = h.attachShadow({ mode: r });
21976
22004
  v = p.createElement("div"), v.dataset.mesurerIslandMount = "true", e.append(v), _ = e, y = e;
@@ -21981,7 +22009,7 @@ function MC(e = {}) {
21981
22009
  C = e, w = t;
21982
22010
  });
21983
22011
  D.catch(() => void 0), O.catch(() => void 0);
21984
- let k = async () => (await (b ? Promise.resolve(b) : D), O), A = a === !0 ? {} : a === !1 ? null : a, j = Jx({
22012
+ let k = async () => (await (b ? Promise.resolve(b) : D), O), A = a === !0 ? {} : a === !1 ? null : a, j = Yx({
21985
22013
  ownerDocument: p,
21986
22014
  root: A?.root ?? (t.nodeType === 11 ? t : p),
21987
22015
  getPluginHost: () => b,
@@ -21993,12 +22021,12 @@ function MC(e = {}) {
21993
22021
  return t;
21994
22022
  }, N = async () => {
21995
22023
  await j.ready();
21996
- let e = b?.service.get(kS);
22024
+ let e = b?.service.get(AS);
21997
22025
  if (!e) throw Error("Mesurer Context is disabled. Enable it in Settings or include context() in plugins.");
21998
22026
  return e;
21999
22027
  }, P = async () => {
22000
22028
  await j.ready();
22001
- let e = b?.service.get($x);
22029
+ let e = b?.service.get(eS);
22002
22030
  if (!e) throw Error("Mesurer Edit is disabled. Enable it in Settings or include edit() in plugins.");
22003
22031
  return e;
22004
22032
  }, F = async (e) => (await N()).context(e), I = async (e) => (await N()).contextText(e), L = async (e) => (await N()).copyContext(e), R = async (e) => (await N()).select(e), z = async () => (await N()).annotations(), B = async (e) => (await N()).review(e), V = async (e) => (await N()).capturePlan(e), H = async () => (await N()).prepareCapture(), U = async () => (await N()).finishCapture(), W = async () => (await P()).intents(), ee = async (e) => {
@@ -22009,7 +22037,7 @@ function MC(e = {}) {
22009
22037
  (await P()).show(e, t);
22010
22038
  }, G = async (e, t) => (await P()).capturePlan(e, t), ne = async (e, t) => (await P()).review(e, t), re = () => j.textEdits(), ie = (e) => j.textEdit(e), ae = Object.assign(j, {
22011
22039
  capabilities: () => {
22012
- let e = !!b?.service.get(kS);
22040
+ let e = !!b?.service.get(AS);
22013
22041
  return {
22014
22042
  protocol: "mesurer.agent/v1",
22015
22043
  contextSchema: "mesurer.context/v1",
@@ -22019,8 +22047,8 @@ function MC(e = {}) {
22019
22047
  annotations: e,
22020
22048
  review: e,
22021
22049
  capturePlan: e,
22022
- arrange: !!b?.service.get($x),
22023
- textEdit: !!b?.service.get(Kx)
22050
+ arrange: !!b?.service.get(eS),
22051
+ textEdit: !!b?.service.get(qx)
22024
22052
  }
22025
22053
  };
22026
22054
  },
@@ -22039,9 +22067,9 @@ function MC(e = {}) {
22039
22067
  reviewArrange: ne
22040
22068
  }), oe = {
22041
22069
  ...f,
22042
- version: Yx,
22043
- plugins: DC(l),
22044
- excludePlugins: u ? u.map((e) => jC[e]) : [...d ?? []]
22070
+ version: Xx,
22071
+ plugins: OC(l),
22072
+ excludePlugins: u ? u.map((e) => MC[e]) : [...d ?? []]
22045
22073
  }, se = Oi(() => Yr(rv, Di(oe, {
22046
22074
  portalTarget: y,
22047
22075
  pageTarget: t,
@@ -22110,6 +22138,6 @@ function MC(e = {}) {
22110
22138
  }
22111
22139
  return me;
22112
22140
  }
22113
- var NC = MC;
22141
+ var PC = NC;
22114
22142
  //#endregion
22115
- export { Kx as MESURER_TEXT_EDIT_SERVICE_ID, Yx as MESURER_VERSION, hS as captureMesurerContext, wS as copyTextToClipboard, Jx as createMesurerAgentHarness, yS as createMesurerCapturePlan, kC as createMesurerPluginHost, AC as createMesurerRuntime, OC as defineMesurerPlugin, vS as formatMesurerContext, NC as mountMeasurer, MC as mountMesurer, CS as reviewMesurerAnnotation };
22143
+ export { qx as MESURER_TEXT_EDIT_SERVICE_ID, Xx as MESURER_VERSION, gS as captureMesurerContext, TS as copyTextToClipboard, Yx as createMesurerAgentHarness, bS as createMesurerCapturePlan, AC as createMesurerPluginHost, jC as createMesurerRuntime, kC as defineMesurerPlugin, yS as formatMesurerContext, PC as mountMeasurer, NC as mountMesurer, wS as reviewMesurerAnnotation };