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/inject.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,47 +20516,47 @@ 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
- ({ ...aS }), { ...oS };
20546
+ ({ ...oS }), { ...sS };
20519
20547
  //#endregion
20520
20548
  //#region src/context.ts
20521
- var sS = 10, cS = (e) => ({
20549
+ var cS = 10, lS = (e) => ({
20522
20550
  left: e.left,
20523
20551
  top: e.top,
20524
20552
  width: e.width,
20525
20553
  height: e.height
20526
- }), lS = (e) => {
20554
+ }), uS = (e) => {
20527
20555
  let t = /* @__PURE__ */ new Set(), n = [];
20528
20556
  for (let r of e) !r?.isConnected || t.has(r) || (t.add(r), n.push(r));
20529
20557
  return n;
20530
- }, uS = (e) => e.crypto?.randomUUID?.() ?? `${Date.now()}-${Math.random().toString(36).slice(2)}`;
20531
- function dS(e) {
20558
+ }, dS = (e) => e.crypto?.randomUUID?.() ?? `${Date.now()}-${Math.random().toString(36).slice(2)}`;
20559
+ function fS(e) {
20532
20560
  let { runtime: t, ownerDocument: n, ownerWindow: r } = e, i = e.request ?? { scope: "workspace" }, a = t.snapshot();
20533
20561
  if (!a) throw Error("Mesurer workspace is not ready yet.");
20534
20562
  let o = [], s = [], c = { kind: "workspace" }, l = /* @__PURE__ */ new Map();
@@ -20536,7 +20564,7 @@ function dS(e) {
20536
20564
  let e = t.annotation(i.annotation);
20537
20565
  if (!e) throw Error(`Mesurer annotation not found: ${i.annotation}`);
20538
20566
  for (let t of e.resolvedTargets) t.element?.isConnected && l.set(t.element, t.target.id);
20539
- o = lS(e.resolvedTargets.map((e) => e.element));
20567
+ o = uS(e.resolvedTargets.map((e) => e.element));
20540
20568
  let n = t.annotationRect(e.id);
20541
20569
  n && (s = [n]);
20542
20570
  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";
@@ -20548,15 +20576,15 @@ function dS(e) {
20548
20576
  };
20549
20577
  } else if (i.scope === "selection") {
20550
20578
  let e = t.currentSelection();
20551
- if (o = lS(e.elements), !o.length && !e.region) throw Error("Mesurer has no current selection.");
20552
- s = e.region ? [e.region] : o.map((e) => cS(e.getBoundingClientRect())), c = { kind: "selection" };
20553
- } else o = lS([
20579
+ if (o = uS(e.elements), !o.length && !e.region) throw Error("Mesurer has no current selection.");
20580
+ s = e.region ? [e.region] : o.map((e) => lS(e.getBoundingClientRect())), c = { kind: "selection" };
20581
+ } else o = uS([
20554
20582
  ...t.currentSelection().elements,
20555
20583
  ...a.measurements.map((e) => e.elementRef),
20556
20584
  a.activeMeasurement?.elementRef,
20557
20585
  ...a.heldDistances.flatMap((e) => [e.elementRefA, e.elementRefB])
20558
20586
  ]);
20559
- let u = c.kind === "workspace" ? [] : s.length ? s : o.map((e) => cS(e.getBoundingClientRect())), d = iS({
20587
+ let u = c.kind === "workspace" ? [] : s.length ? s : o.map((e) => lS(e.getBoundingClientRect())), d = aS({
20560
20588
  workspace: {
20561
20589
  guides: a.guides,
20562
20590
  measurements: a.measurements,
@@ -20568,8 +20596,8 @@ function dS(e) {
20568
20596
  elements: o,
20569
20597
  regions: u
20570
20598
  },
20571
- guideTolerance: a.guideRelevanceTolerance ?? sS
20572
- }), f = d.measurements, p = d.distances, m = d.guides, h = lS([
20599
+ guideTolerance: a.guideRelevanceTolerance ?? cS
20600
+ }), f = d.measurements, p = d.distances, m = d.guides, h = uS([
20573
20601
  ...o,
20574
20602
  ...f.map((e) => e.elementRef),
20575
20603
  ...p.flatMap((e) => [e.elementRefA, e.elementRefB])
@@ -20581,12 +20609,12 @@ function dS(e) {
20581
20609
  let t = l.get(e) ?? y();
20582
20610
  return g.set(e, t), {
20583
20611
  ref: t,
20584
- inspection: Gx(e)
20612
+ inspection: Kx(e)
20585
20613
  };
20586
20614
  }), x = f.map((e) => {
20587
20615
  let t = {
20588
20616
  id: e.id,
20589
- rect: cS(e.rect),
20617
+ rect: lS(e.rect),
20590
20618
  deltaX: e.deltaX,
20591
20619
  deltaY: e.deltaY
20592
20620
  };
@@ -20596,8 +20624,8 @@ function dS(e) {
20596
20624
  }), S = p.map((e) => {
20597
20625
  let t = {
20598
20626
  id: e.id,
20599
- rectA: cS(e.rectA),
20600
- rectB: cS(e.rectB),
20627
+ rectA: lS(e.rectA),
20628
+ rectB: lS(e.rectB),
20601
20629
  horizontal: e.horizontal ? { ...e.horizontal } : null,
20602
20630
  vertical: e.vertical ? { ...e.vertical } : null
20603
20631
  }, n = e.elementRefA ? g.get(e.elementRefA) : void 0, r = e.elementRefB ? g.get(e.elementRefB) : void 0;
@@ -20605,7 +20633,7 @@ function dS(e) {
20605
20633
  });
20606
20634
  return {
20607
20635
  schema: "mesurer.context/v1",
20608
- id: uS(r),
20636
+ id: dS(r),
20609
20637
  createdAt: (/* @__PURE__ */ new Date()).toISOString(),
20610
20638
  scope: c,
20611
20639
  page: {
@@ -20620,7 +20648,7 @@ function dS(e) {
20620
20648
  scrollY: r.scrollY
20621
20649
  },
20622
20650
  coordinateSpace: "viewport-css-px",
20623
- regions: c.kind === "workspace" ? [] : s.map(cS),
20651
+ regions: c.kind === "workspace" ? [] : s.map(lS),
20624
20652
  visualState: {
20625
20653
  rulersVisible: a.rulersVisible,
20626
20654
  xrayVisible: a.xrayVisible
@@ -20634,48 +20662,48 @@ function dS(e) {
20634
20662
  }
20635
20663
  };
20636
20664
  }
20637
- var fS = (e) => `${Math.round(e * 100) / 100}px`, pS = (e) => `x=${fS(e.left)} y=${fS(e.top)} w=${fS(e.width)} h=${fS(e.height)}`;
20638
- function mS(e) {
20665
+ var pS = (e) => `${Math.round(e * 100) / 100}px`, mS = (e) => `x=${pS(e.left)} y=${pS(e.top)} w=${pS(e.width)} h=${pS(e.height)}`;
20666
+ function hS(e) {
20639
20667
  let t = [
20640
20668
  "Mesurer visual context",
20641
20669
  "",
20642
20670
  `Page: ${e.page.url}`,
20643
20671
  `Viewport: ${e.viewport.width} × ${e.viewport.height} CSS px; scroll x=${e.viewport.scrollX} y=${e.viewport.scrollY}`
20644
20672
  ];
20645
- 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}: ${pS(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) {
20673
+ 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}: ${mS(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) {
20646
20674
  t.push("", "Targets");
20647
20675
  for (let n of e.targets) {
20648
20676
  let e = n.inspection;
20649
- t.push(`[${n.ref}] ${e.selector}`, ` rect: ${pS(e.rect)}`, ` margin: ${fS(e.margin.top)} ${fS(e.margin.right)} ${fS(e.margin.bottom)} ${fS(e.margin.left)}`, ` padding: ${fS(e.padding.top)} ${fS(e.padding.right)} ${fS(e.padding.bottom)} ${fS(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)}`);
20677
+ t.push(`[${n.ref}] ${e.selector}`, ` rect: ${mS(e.rect)}`, ` margin: ${pS(e.margin.top)} ${pS(e.margin.right)} ${pS(e.margin.bottom)} ${pS(e.margin.left)}`, ` padding: ${pS(e.padding.top)} ${pS(e.padding.right)} ${pS(e.padding.bottom)} ${pS(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)}`);
20650
20678
  }
20651
20679
  }
20652
20680
  if (e.visualContext.guides.length) {
20653
20681
  t.push("", "Relevant guides");
20654
- for (let n of e.visualContext.guides) t.push(`- ${n.orientation} ${n.orientation === "vertical" ? "x" : "y"}=${fS(n.position)}`);
20682
+ for (let n of e.visualContext.guides) t.push(`- ${n.orientation} ${n.orientation === "vertical" ? "x" : "y"}=${pS(n.position)}`);
20655
20683
  }
20656
20684
  if (e.visualContext.layoutGuides.length) {
20657
20685
  t.push("", "Layout guides");
20658
20686
  for (let n of e.visualContext.layoutGuides) {
20659
20687
  if (!n.visible) continue;
20660
- let e = n.kind === "grid" ? `grid ${fS(n.size)}` : `${n.count} ${n.kind}; gutter=${fS(n.gutter)}; offset=${fS(n.offset)}; align=${n.align}`;
20688
+ let e = n.kind === "grid" ? `grid ${pS(n.size)}` : `${n.count} ${n.kind}; gutter=${pS(n.gutter)}; offset=${pS(n.offset)}; align=${n.align}`;
20661
20689
  t.push(`- ${e}; color=${n.color}; opacity=${Math.round(n.opacity * 100)}%`);
20662
20690
  }
20663
20691
  }
20664
20692
  if (e.visualContext.measurements.length) {
20665
20693
  t.push("", "Relevant measurements");
20666
- for (let n of e.visualContext.measurements) t.push(`- ${n.targetRef ? `${n.targetRef}: ` : ""}${pS(n.rect)}; delta=${fS(n.deltaX)} × ${fS(n.deltaY)}`);
20694
+ for (let n of e.visualContext.measurements) t.push(`- ${n.targetRef ? `${n.targetRef}: ` : ""}${mS(n.rect)}; delta=${pS(n.deltaX)} × ${pS(n.deltaY)}`);
20667
20695
  }
20668
20696
  if (e.visualContext.distances.length) {
20669
20697
  t.push("", "Relevant distances");
20670
20698
  for (let n of e.visualContext.distances) {
20671
- let e = [n.targetARef, n.targetBRef].filter(Boolean).join(" → "), r = [n.horizontal ? `horizontal=${fS(n.horizontal.value)}` : null, n.vertical ? `vertical=${fS(n.vertical.value)}` : null].filter(Boolean).join("; ");
20699
+ let e = [n.targetARef, n.targetBRef].filter(Boolean).join(" → "), r = [n.horizontal ? `horizontal=${pS(n.horizontal.value)}` : null, n.vertical ? `vertical=${pS(n.vertical.value)}` : null].filter(Boolean).join("; ");
20672
20700
  t.push(`- ${e ? `${e}: ` : ""}${r || "overlapping"}`);
20673
20701
  }
20674
20702
  }
20675
20703
  return t.join("\n").trimEnd();
20676
20704
  }
20677
- function hS(e) {
20678
- let t = tS([
20705
+ function gS(e) {
20706
+ let t = nS([
20679
20707
  ...e.regions,
20680
20708
  ...e.targets.map((e) => e.inspection.rect),
20681
20709
  ...e.visualContext.measurements.map((e) => e.rect),
@@ -20705,7 +20733,7 @@ function hS(e) {
20705
20733
  captures: n
20706
20734
  };
20707
20735
  }
20708
- var gS = (e, t, n, r, i) => {
20736
+ var _S = (e, t, n, r, i) => {
20709
20737
  !Number.isFinite(r) || !Number.isFinite(i) || Math.abs(r - i) < .01 || e.push({
20710
20738
  kind: t,
20711
20739
  label: n,
@@ -20714,16 +20742,16 @@ var gS = (e, t, n, r, i) => {
20714
20742
  delta: i - r,
20715
20743
  unit: "px"
20716
20744
  });
20717
- }, _S = (e, t, n, r) => e.push({
20745
+ }, vS = (e, t, n, r) => e.push({
20718
20746
  kind: "missing",
20719
20747
  evidence: t,
20720
20748
  id: n,
20721
20749
  label: r
20722
- }), vS = (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;
20723
- function yS(e) {
20750
+ }), yS = (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;
20751
+ function bS(e) {
20724
20752
  let t = e.runtime.annotation(e.annotationId);
20725
20753
  if (!t) throw Error(`Mesurer annotation not found: ${e.annotationId}`);
20726
- let n = dS({
20754
+ let n = fS({
20727
20755
  runtime: e.runtime,
20728
20756
  ownerDocument: e.ownerDocument,
20729
20757
  ownerWindow: e.ownerWindow,
@@ -20733,42 +20761,42 @@ function yS(e) {
20733
20761
  if (n.scope.kind !== "annotation") throw Error("Mesurer annotation context invariant failed.");
20734
20762
  let r = e.runtime.snapshot();
20735
20763
  if (!r) throw Error("Mesurer workspace is not ready yet.");
20736
- let i = rS({
20764
+ let i = iS({
20737
20765
  measurements: r.measurements,
20738
20766
  activeMeasurement: r.activeMeasurement
20739
20767
  }), a = [];
20740
20768
  for (let e of t.baseline.targets) {
20741
20769
  let t = n.targets.find((t) => t.ref === e.id);
20742
20770
  if (!t) {
20743
- _S(a, "target", e.id, e.selector);
20771
+ vS(a, "target", e.id, e.selector);
20744
20772
  continue;
20745
20773
  }
20746
- gS(a, "target-rect", `${t.inspection.selector} left`, e.rect.left, t.inspection.rect.left), gS(a, "target-rect", `${t.inspection.selector} top`, e.rect.top, t.inspection.rect.top), gS(a, "target-rect", `${t.inspection.selector} width`, e.rect.width, t.inspection.rect.width), gS(a, "target-rect", `${t.inspection.selector} height`, e.rect.height, t.inspection.rect.height);
20774
+ _S(a, "target-rect", `${t.inspection.selector} left`, e.rect.left, t.inspection.rect.left), _S(a, "target-rect", `${t.inspection.selector} top`, e.rect.top, t.inspection.rect.top), _S(a, "target-rect", `${t.inspection.selector} width`, e.rect.width, t.inspection.rect.width), _S(a, "target-rect", `${t.inspection.selector} height`, e.rect.height, t.inspection.rect.height);
20747
20775
  }
20748
20776
  for (let e of t.baseline.guides) {
20749
20777
  let t = n.visualContext.guides.find((t) => t.id === e.id) ?? r.guides.find((t) => t.id === e.id);
20750
20778
  if (!t) {
20751
- _S(a, "guide", e.id, `${e.orientation} guide ${e.id}`);
20779
+ vS(a, "guide", e.id, `${e.orientation} guide ${e.id}`);
20752
20780
  continue;
20753
20781
  }
20754
- gS(a, "guide", `${e.orientation} guide ${e.id}`, e.position, t.position);
20782
+ _S(a, "guide", `${e.orientation} guide ${e.id}`, e.position, t.position);
20755
20783
  }
20756
20784
  for (let e of t.baseline.measurements) {
20757
20785
  let r = n.visualContext.measurements.find((t) => t.id === e.id) ?? i.find((t) => t.id === e.id);
20758
20786
  if (!r) {
20759
- let r = t.baseline.targets.find((t) => vS(t.rect, e.rect));
20760
- r && n.targets.some((e) => e.ref === r.id) || _S(a, "measurement", e.id, e.id);
20787
+ let r = t.baseline.targets.find((t) => yS(t.rect, e.rect));
20788
+ r && n.targets.some((e) => e.ref === r.id) || vS(a, "measurement", e.id, e.id);
20761
20789
  continue;
20762
20790
  }
20763
- gS(a, "measurement", `${e.id} width`, e.rect.width, r.rect.width), gS(a, "measurement", `${e.id} height`, e.rect.height, r.rect.height);
20791
+ _S(a, "measurement", `${e.id} width`, e.rect.width, r.rect.width), _S(a, "measurement", `${e.id} height`, e.rect.height, r.rect.height);
20764
20792
  }
20765
20793
  for (let e of t.baseline.distances) {
20766
20794
  let t = n.visualContext.distances.find((t) => t.id === e.id) ?? r.heldDistances.find((t) => t.id === e.id);
20767
20795
  if (!t) {
20768
- _S(a, "distance", e.id, e.id);
20796
+ vS(a, "distance", e.id, e.id);
20769
20797
  continue;
20770
20798
  }
20771
- e.horizontal && t.horizontal ? gS(a, "distance", `${e.id} horizontal`, e.horizontal.value, t.horizontal.value) : e.horizontal && !t.horizontal && _S(a, "distance", e.id, `${e.id} horizontal`), e.vertical && t.vertical ? gS(a, "distance", `${e.id} vertical`, e.vertical.value, t.vertical.value) : e.vertical && !t.vertical && _S(a, "distance", e.id, `${e.id} vertical`);
20799
+ e.horizontal && t.horizontal ? _S(a, "distance", `${e.id} horizontal`, e.horizontal.value, t.horizontal.value) : e.horizontal && !t.horizontal && vS(a, "distance", e.id, `${e.id} horizontal`), e.vertical && t.vertical ? _S(a, "distance", `${e.id} vertical`, e.vertical.value, t.vertical.value) : e.vertical && !t.vertical && vS(a, "distance", e.id, `${e.id} vertical`);
20772
20800
  }
20773
20801
  return {
20774
20802
  schema: "mesurer.review/v1",
@@ -20780,7 +20808,7 @@ function yS(e) {
20780
20808
  changes: a
20781
20809
  };
20782
20810
  }
20783
- async function bS(e, t, n) {
20811
+ async function xS(e, t, n) {
20784
20812
  try {
20785
20813
  if (t.navigator.clipboard?.writeText) {
20786
20814
  await t.navigator.clipboard.writeText(n);
@@ -20794,43 +20822,43 @@ async function bS(e, t, n) {
20794
20822
  }
20795
20823
  //#endregion
20796
20824
  //#region src/layout-guides.ts
20797
- var xS = Kv, SS = qv, CS = () => ({
20825
+ var SS = Kv, CS = qv, wS = () => ({
20798
20826
  ...yy(),
20799
- version: Yx
20800
- }), wS = "mesurer.context", TS = "context:v1", ES = "mesurer.context.settings", DS = "context.ui", OS = "data-mesurer-direct-text-edit-active", kS = {
20827
+ version: Xx
20828
+ }), TS = "mesurer.context", ES = "context:v1", DS = "mesurer.context.settings", OS = "context.ui", kS = "data-mesurer-direct-text-edit-active", AS = {
20801
20829
  viewBox: "0 0 256 256",
20802
20830
  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"]
20803
- }, AS = {
20831
+ }, jS = {
20804
20832
  viewBox: "0 0 256 256",
20805
20833
  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"]
20806
- }, jS = {
20834
+ }, MS = {
20807
20835
  viewBox: "0 0 256 256",
20808
20836
  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"]
20809
- }, MS = async (e, t, n = 1) => {
20837
+ }, NS = async (e, t, n = 1) => {
20810
20838
  await e.fonts?.ready;
20811
20839
  for (let e = 0; e < Math.max(1, n); e += 1) await new Promise((e) => t.requestAnimationFrame(() => e()));
20812
- }, NS = (e, t, n, r) => {
20813
- let i = async (i) => dS({
20840
+ }, PS = (e, t, n, r) => {
20841
+ let i = async (i) => fS({
20814
20842
  runtime: e,
20815
20843
  ownerDocument: t,
20816
20844
  ownerWindow: n,
20817
20845
  request: i,
20818
20846
  layoutGuides: r()
20819
- }), a = async (e) => mS(await i(e));
20847
+ }), a = async (e) => hS(await i(e));
20820
20848
  return {
20821
20849
  context: i,
20822
20850
  contextText: a,
20823
- copyContext: async (e) => bS(t, n, await a(e)),
20851
+ copyContext: async (e) => xS(t, n, await a(e)),
20824
20852
  select: async (r) => {
20825
20853
  let a = Array.isArray(r) ? [...r] : [String(r)];
20826
- return e.select(a), await MS(t, n), i({ scope: "selection" });
20854
+ return e.select(a), await NS(t, n), i({ scope: "selection" });
20827
20855
  },
20828
20856
  annotations: async () => e.annotations(),
20829
20857
  removeAnnotation: async (r) => {
20830
- e.removeAnnotation(r), await MS(t, n);
20858
+ e.removeAnnotation(r), await NS(t, n);
20831
20859
  },
20832
20860
  review: async (i) => {
20833
- if (await MS(t, n), i) return yS({
20861
+ if (await NS(t, n), i) return bS({
20834
20862
  runtime: e,
20835
20863
  ownerDocument: t,
20836
20864
  ownerWindow: n,
@@ -20838,7 +20866,7 @@ var xS = Kv, SS = qv, CS = () => ({
20838
20866
  layoutGuides: r()
20839
20867
  });
20840
20868
  let a = r();
20841
- return e.annotations().map((r) => yS({
20869
+ return e.annotations().map((r) => bS({
20842
20870
  runtime: e,
20843
20871
  ownerDocument: t,
20844
20872
  ownerWindow: n,
@@ -20846,38 +20874,38 @@ var xS = Kv, SS = qv, CS = () => ({
20846
20874
  layoutGuides: a
20847
20875
  }));
20848
20876
  },
20849
- capturePlan: async (e) => hS(await i(e)),
20877
+ capturePlan: async (e) => gS(await i(e)),
20850
20878
  prepareCapture: async () => {
20851
- e.prepareCapture(), await MS(t, n);
20879
+ e.prepareCapture(), await NS(t, n);
20852
20880
  },
20853
20881
  finishCapture: async () => {
20854
- e.finishCapture(), await MS(t, n);
20882
+ e.finishCapture(), await NS(t, n);
20855
20883
  }
20856
20884
  };
20857
- }, PS = (e) => {
20885
+ }, FS = (e) => {
20858
20886
  let t = e.currentSelection();
20859
20887
  return t.elements.length > 0 || t.region !== null;
20860
20888
  };
20861
- function FS(e = {}) {
20889
+ function IS(e = {}) {
20862
20890
  return {
20863
- id: wS,
20864
- version: Yx,
20891
+ id: TS,
20892
+ version: Xx,
20865
20893
  requires: ["runtime:solid"],
20866
- provides: [TS],
20894
+ provides: [ES],
20867
20895
  setup(t) {
20868
20896
  let n = t.service.get("runtime:solid");
20869
20897
  if (!n) throw Error("Mesurer context plugin requires the renderer runtime service.");
20870
- let r = n.createWorkspaceRuntime(wS), i = NS(r, n.ownerDocument, n.ownerWindow, () => t.service.get(SS)?.list() ?? []);
20871
- t.service.provide(TS, i), t.state.register({
20872
- id: ES,
20898
+ let r = n.createWorkspaceRuntime(TS), i = PS(r, n.ownerDocument, n.ownerWindow, () => t.service.get(CS)?.list() ?? []);
20899
+ t.service.provide(ES, i), t.state.register({
20900
+ id: DS,
20873
20901
  initial: { ui: e.ui ?? !0 },
20874
20902
  persist: !0
20875
20903
  }), t.state.register({
20876
- id: DS,
20877
- initial: { hasSelection: PS(r) }
20904
+ id: OS,
20905
+ initial: { hasSelection: FS(r) }
20878
20906
  });
20879
- let a = () => t.state.get("mesurer.context.settings")?.ui ?? !0, o = () => t.state.get(DS)?.hasSelection === !0, s = (e) => {
20880
- t.state.update(ES, (t) => ({
20907
+ let a = () => t.state.get("mesurer.context.settings")?.ui ?? !0, o = () => t.state.get(OS)?.hasSelection === !0, s = (e) => {
20908
+ t.state.update(DS, (t) => ({
20881
20909
  ...t,
20882
20910
  ui: e
20883
20911
  }));
@@ -20891,12 +20919,12 @@ function FS(e = {}) {
20891
20919
  region: e.region ? { ...e.region } : null
20892
20920
  }, r.selectGestureActive() ? c?.abandonNoteComposer() : n && c?.closeNoteComposer();
20893
20921
  let i = e.elements.length > 0 || e.region !== null;
20894
- i !== (t.state.get(DS)?.hasSelection ?? !1) && t.state.update(DS, () => ({ hasSelection: i }));
20922
+ i !== (t.state.get(OS)?.hasSelection ?? !1) && t.state.update(OS, () => ({ hasSelection: i }));
20895
20923
  });
20896
20924
  t.command.register("context.copy", () => i.copyContext()), t.command.register("context.copy-selection", () => i.copyContext({ scope: "selection" }));
20897
20925
  let g = () => {
20898
20926
  let e = u?.element;
20899
- e && (n.rendererRoot?.hasAttribute(OS) ? e.setAttribute(OS, "true") : e.removeAttribute(OS));
20927
+ e && (n.rendererRoot?.hasAttribute(kS) ? e.setAttribute(kS, "true") : e.removeAttribute(kS));
20900
20928
  }, _ = () => {
20901
20929
  d?.disconnect(), d = null, c = null, l?.(), l = null, u?.dispose(), u = null;
20902
20930
  }, v = () => {
@@ -20905,7 +20933,7 @@ function FS(e = {}) {
20905
20933
  let e = new n.ownerWindow.MutationObserver(g);
20906
20934
  d = e, e.observe(n.rendererRoot, {
20907
20935
  attributes: !0,
20908
- attributeFilter: [OS]
20936
+ attributeFilter: [kS]
20909
20937
  }), g();
20910
20938
  }
20911
20939
  let e = {
@@ -20929,7 +20957,7 @@ function FS(e = {}) {
20929
20957
  command: "context.copy",
20930
20958
  order: 70,
20931
20959
  toolbarMode: "always",
20932
- icon: kS,
20960
+ icon: AS,
20933
20961
  hidden: () => !a()
20934
20962
  }), t.tool.register({
20935
20963
  id: "context.copy-selection",
@@ -20938,7 +20966,7 @@ function FS(e = {}) {
20938
20966
  command: "context.copy-selection",
20939
20967
  order: 71,
20940
20968
  toolbarMode: "always",
20941
- icon: AS,
20969
+ icon: jS,
20942
20970
  hidden: () => !a(),
20943
20971
  disabled: () => !o()
20944
20972
  }), t.tool.register({
@@ -20948,7 +20976,7 @@ function FS(e = {}) {
20948
20976
  command: "context.add-note",
20949
20977
  order: 72,
20950
20978
  toolbarMode: "always",
20951
- icon: jS,
20979
+ icon: MS,
20952
20980
  hidden: () => !a(),
20953
20981
  disabled: () => !o()
20954
20982
  }), t.settings.register({
@@ -20971,7 +20999,7 @@ function FS(e = {}) {
20971
20999
  }
20972
21000
  //#endregion
20973
21001
  //#region src/host-layer.ts
20974
- var IS = {
21002
+ var LS = {
20975
21003
  display: "block",
20976
21004
  position: "fixed",
20977
21005
  inset: "0",
@@ -21013,48 +21041,48 @@ var IS = {
21013
21041
  "letter-spacing": "normal",
21014
21042
  direction: "ltr"
21015
21043
  };
21016
- function LS(e) {
21017
- for (let [t, n] of Object.entries(IS)) e.style.setProperty(t, n, "important");
21018
- }
21019
21044
  function RS(e) {
21045
+ for (let [t, n] of Object.entries(LS)) e.style.setProperty(t, n, "important");
21046
+ }
21047
+ function zS(e) {
21020
21048
  return "popover" in e && "showPopover" in e && typeof e.showPopover == "function" && "hidePopover" in e && typeof e.hidePopover == "function";
21021
21049
  }
21022
- var zS = (e) => "newState" in e, BS = (e) => e.localName === "dialog";
21023
- function VS(e) {
21024
- if (!BS(e) || !e.open) return !1;
21050
+ var BS = (e) => "newState" in e, VS = (e) => e.localName === "dialog";
21051
+ function HS(e) {
21052
+ if (!VS(e) || !e.open) return !1;
21025
21053
  try {
21026
21054
  return e.matches(":modal");
21027
21055
  } catch {
21028
21056
  return !1;
21029
21057
  }
21030
21058
  }
21031
- function HS(e, t, n = !0) {
21032
- LS(e);
21059
+ function US(e, t, n = !0) {
21060
+ RS(e);
21033
21061
  let r = e.ownerDocument, i = r.defaultView ?? window, a = t, o = !1, s = "fixed", c = !1, l = 0, u = [];
21034
- if (n && RS(e) && (e.popover = "manual"), t.append(e), n && RS(e)) try {
21062
+ if (n && zS(e) && (e.popover = "manual"), t.append(e), n && zS(e)) try {
21035
21063
  e.showPopover(), c = e.matches(":popover-open"), c && (s = "top-layer");
21036
21064
  } catch {
21037
21065
  e.removeAttribute("popover");
21038
21066
  }
21039
21067
  let d = () => {
21040
- if (!(!c || !RS(e))) try {
21068
+ if (!(!c || !zS(e))) try {
21041
21069
  e.matches(":popover-open") || e.showPopover();
21042
21070
  } catch {}
21043
21071
  }, f = (t) => {
21044
21072
  if (e.parentNode === t) return;
21045
- let n = c && RS(e) && e.matches(":popover-open");
21046
- if (n && RS(e)) try {
21073
+ let n = c && zS(e) && e.matches(":popover-open");
21074
+ if (n && zS(e)) try {
21047
21075
  e.hidePopover();
21048
21076
  } catch {}
21049
- t.append(e), LS(e), n && d();
21077
+ t.append(e), RS(e), n && d();
21050
21078
  }, p = () => {
21051
- u = u.filter((e) => e.isConnected && VS(e)), f(u.at(-1) ?? a);
21079
+ u = u.filter((e) => e.isConnected && HS(e)), f(u.at(-1) ?? a);
21052
21080
  }, m = (e) => {
21053
21081
  u = u.filter((t) => t !== e), u.push(e), p();
21054
21082
  }, h = (e) => {
21055
21083
  u = u.filter((t) => t !== e), p();
21056
21084
  }, g = () => {
21057
- if (!(o || !c || !RS(e))) try {
21085
+ if (!(o || !c || !zS(e))) try {
21058
21086
  e.matches(":popover-open") && e.hidePopover(), e.showPopover();
21059
21087
  } catch {}
21060
21088
  }, _ = () => {
@@ -21063,27 +21091,27 @@ function HS(e, t, n = !0) {
21063
21091
  }));
21064
21092
  }, v = (t) => {
21065
21093
  if (!c || t.target === e) return;
21066
- let n = zS(t) ? t.newState : void 0, r = t.target;
21094
+ let n = BS(t) ? t.newState : void 0, r = t.target;
21067
21095
  if (r instanceof i.Element) {
21068
- if (BS(r)) {
21069
- n === "open" && VS(r) ? (m(r), _()) : n === "closed" ? h(r) : n === "open" && _();
21096
+ if (VS(r)) {
21097
+ n === "open" && HS(r) ? (m(r), _()) : n === "closed" ? h(r) : n === "open" && _();
21070
21098
  return;
21071
21099
  }
21072
21100
  n === "open" && r.hasAttribute("popover") && _();
21073
21101
  }
21074
21102
  }, y = (e) => {
21075
21103
  let t = e.target;
21076
- t instanceof i.Element && BS(t) && h(t);
21104
+ t instanceof i.Element && VS(t) && h(t);
21077
21105
  }, b = () => {
21078
21106
  r.fullscreenElement && _();
21079
21107
  }, x = (e) => {
21080
- VS(e) && m(e);
21081
- for (let t of e.querySelectorAll("dialog")) VS(t) && m(t);
21108
+ HS(e) && m(e);
21109
+ for (let t of e.querySelectorAll("dialog")) HS(t) && m(t);
21082
21110
  }, S = new i.MutationObserver((e) => {
21083
21111
  if (c) for (let t of e) {
21084
21112
  if (t.type === "attributes") {
21085
21113
  let e = t.target;
21086
- e instanceof i.Element && BS(e) && (VS(e) ? m(e) : h(e));
21114
+ e instanceof i.Element && VS(e) && (HS(e) ? m(e) : h(e));
21087
21115
  }
21088
21116
  for (let e of t.addedNodes) e instanceof i.Element && x(e);
21089
21117
  u.some((e) => !e.isConnected) && p();
@@ -21099,7 +21127,7 @@ function HS(e, t, n = !0) {
21099
21127
  bringToFront: g,
21100
21128
  dispose() {
21101
21129
  if (!o) {
21102
- 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 && RS(e) && e.matches(":popover-open")) try {
21130
+ 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 && zS(e) && e.matches(":popover-open")) try {
21103
21131
  e.hidePopover();
21104
21132
  } catch {}
21105
21133
  u = [];
@@ -21109,28 +21137,28 @@ function HS(e, t, n = !0) {
21109
21137
  }
21110
21138
  //#endregion
21111
21139
  //#region src/plugins/codex/index.ts
21112
- var US = "mesurer.codex", WS = "codex:v1", GS = "mesurer.plugin.before-disable", KS = 2e3, qS = 750, JS = 1800, YS = 2e3, XS = 12e4, ZS = 10, QS = 5, $S = "Codex host connection is unavailable. Electron apps must expose window.__MESURER_HOST__.codexBridge from preload.", eC = [
21140
+ var WS = "mesurer.codex", GS = "codex:v1", KS = "mesurer.plugin.before-disable", qS = 2e3, JS = 750, YS = 1800, XS = 2e3, ZS = 12e4, QS = 10, $S = 5, eC = "Codex host connection is unavailable. Electron apps must expose window.__MESURER_HOST__.codexBridge from preload.", tC = [
21113
21141
  "Implement the current human feedback from Mesurer in this project.",
21114
21142
  "Treat the rendered page as the source of truth, preserve unrelated Mesurer review state,",
21115
21143
  "and verify the affected UI in the live page with Mesurer before claiming completion."
21116
- ].join(" "), tC = {
21144
+ ].join(" "), nC = {
21117
21145
  viewBox: "0 0 256 256",
21118
21146
  paths: ["M224,48,32,120l88,32,32,88Z M120,152l104-104"]
21119
- }, nC = {
21147
+ }, rC = {
21120
21148
  viewBox: "0 0 256 256",
21121
21149
  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"]
21122
- }, rC = {
21150
+ }, iC = {
21123
21151
  viewBox: "0 0 256 256",
21124
21152
  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"]
21125
- }, iC = () => {
21153
+ }, aC = () => {
21126
21154
  try {
21127
21155
  let e = globalThis.location;
21128
21156
  return e?.origin ? `mesurer-codex-ui:v2:${e.origin}${e.pathname}` : null;
21129
21157
  } catch {
21130
21158
  return null;
21131
21159
  }
21132
- }, aC = () => {
21133
- let e = iC();
21160
+ }, oC = () => {
21161
+ let e = aC();
21134
21162
  if (!e) return null;
21135
21163
  try {
21136
21164
  let t = globalThis.sessionStorage?.getItem(e);
@@ -21155,18 +21183,18 @@ var US = "mesurer.codex", WS = "codex:v1", GS = "mesurer.plugin.before-disable",
21155
21183
  } catch {
21156
21184
  return null;
21157
21185
  }
21158
- }, oC = (e) => {
21159
- let t = iC();
21186
+ }, sC = (e) => {
21187
+ let t = aC();
21160
21188
  if (t) try {
21161
21189
  globalThis.sessionStorage?.setItem(t, JSON.stringify(e));
21162
21190
  } catch {}
21163
- }, sC = async (e) => {
21191
+ }, cC = async (e) => {
21164
21192
  let t = window.__MESURER_HOST__?.codexBridge;
21165
- if (!t) throw Error($S);
21193
+ if (!t) throw Error(eC);
21166
21194
  let n = await t(e);
21167
21195
  if (n.ok === !1) throw Error(n.error ?? "Codex Bridge request failed.");
21168
21196
  return n;
21169
- }, cC = (e) => {
21197
+ }, lC = (e) => {
21170
21198
  let t = e.runtime;
21171
21199
  return !t || ![
21172
21200
  "shared",
@@ -21184,10 +21212,10 @@ var US = "mesurer.codex", WS = "codex:v1", GS = "mesurer.plugin.before-disable",
21184
21212
  available: t.available === !0,
21185
21213
  reason: t.reason
21186
21214
  };
21187
- }, lC = (e) => ({
21215
+ }, uC = (e) => ({
21188
21216
  thread: e.thread?.trim() || null,
21189
21217
  threads: Array.isArray(e.threads) ? e.threads.filter((e) => e.trim().length > 0) : []
21190
- }), uC = (e) => {
21218
+ }), dC = (e) => {
21191
21219
  let t = e.deliveryId?.trim(), n = e.thread?.trim(), r = e.status;
21192
21220
  if (!t || !n || !r) throw Error("Codex Bridge returned an invalid delivery state.");
21193
21221
  let i = {
@@ -21199,7 +21227,7 @@ var US = "mesurer.codex", WS = "codex:v1", GS = "mesurer.plugin.before-disable",
21199
21227
  updatedAt: Number.isFinite(e.updatedAt) ? Number(e.updatedAt) : 0
21200
21228
  };
21201
21229
  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;
21202
- }, dC = (e) => ({
21230
+ }, fC = (e) => ({
21203
21231
  thread: e.thread?.trim() || null,
21204
21232
  threads: Array.isArray(e.threadDetails) ? e.threadDetails.flatMap((e) => {
21205
21233
  let t = e.id?.trim() ?? "";
@@ -21211,7 +21239,7 @@ var US = "mesurer.codex", WS = "codex:v1", GS = "mesurer.plugin.before-disable",
21211
21239
  }] : [];
21212
21240
  }) : [],
21213
21241
  hasMore: e.hasMore === !0
21214
- }), fC = async (e, t, n) => {
21242
+ }), pC = async (e, t, n) => {
21215
21243
  let r = t?.instruction?.trim() || n, i = await e.annotations(), a = t?.annotationIds, o = a ? a.flatMap((e) => {
21216
21244
  let t = i.find((t) => t.id === e);
21217
21245
  return t ? [t] : [];
@@ -21234,18 +21262,18 @@ var US = "mesurer.codex", WS = "codex:v1", GS = "mesurer.plugin.before-disable",
21234
21262
  ])
21235
21263
  ].join("\n").trimEnd()
21236
21264
  };
21237
- }, pC = (e) => e.length > 16 ? `${e.slice(0, 8)}…${e.slice(-4)}` : e, mC = (e, t = 42) => e.length > t ? `${e.slice(0, t - 1)}…` : e, hC = (e) => e instanceof Error && (e.message === $S || e.message === "Codex Bridge is unavailable in this host." || e.message.includes("Codex Bridge lease"));
21238
- function gC(e = {}) {
21239
- let t = e.instruction?.trim() || eC, n = e.ui ?? !0, r = e.clearCompletedAnnotations ?? !0;
21265
+ }, mC = (e) => e.length > 16 ? `${e.slice(0, 8)}…${e.slice(-4)}` : e, hC = (e, t = 42) => e.length > t ? `${e.slice(0, t - 1)}…` : e, gC = (e) => e instanceof Error && (e.message === eC || e.message === "Codex Bridge is unavailable in this host." || e.message.includes("Codex Bridge lease"));
21266
+ function _C(e = {}) {
21267
+ let t = e.instruction?.trim() || tC, n = e.ui ?? !0, r = e.clearCompletedAnnotations ?? !0;
21240
21268
  return {
21241
- id: US,
21242
- version: Yx,
21243
- requires: [TS],
21244
- provides: [WS],
21269
+ id: WS,
21270
+ version: Xx,
21271
+ requires: [ES],
21272
+ provides: [GS],
21245
21273
  async setup(e) {
21246
- let i = e.service.get(TS);
21274
+ let i = e.service.get(ES);
21247
21275
  if (!i) throw Error("Mesurer Codex plugin requires context() from mesurer-solid/plugins.");
21248
- let a = n ? aC() : 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 = QS, _, v = "", y = null, b = a?.delivery ? {
21276
+ let a = n ? oC() : 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 = $S, _, v = "", y = null, b = a?.delivery ? {
21249
21277
  id: a.delivery.id,
21250
21278
  thread: a.delivery.thread,
21251
21279
  status: a.delivery.status,
@@ -21254,38 +21282,38 @@ function gC(e = {}) {
21254
21282
  dispatch: a.delivery.dispatch ?? null,
21255
21283
  dispatchError: a.delivery.dispatchError ?? null
21256
21284
  } : null, x = 0, S = 0, C = null, w = !1, T = null, E = async (e) => {
21257
- if (e.action === "activate" || e.action === "runtime") return sC(e);
21285
+ if (e.action === "activate" || e.action === "runtime") return cC(e);
21258
21286
  if (!T) throw Error("Codex Bridge lease is not active for this plugin.");
21259
- return sC({
21287
+ return cC({
21260
21288
  ...e,
21261
21289
  leaseId: T
21262
21290
  });
21263
21291
  }, D = async () => {
21264
21292
  let e = T;
21265
21293
  if (e) {
21266
- if ((await sC({
21294
+ if ((await cC({
21267
21295
  action: "deactivate",
21268
21296
  leaseId: e
21269
21297
  })).released !== !0) throw Error("Codex Bridge did not confirm lease release.");
21270
21298
  T = null;
21271
21299
  }
21272
- }, O = await sC({
21300
+ }, O = await cC({
21273
21301
  action: "activate",
21274
21302
  thread: u ?? l ?? void 0
21275
21303
  }), k = O.leaseId?.trim();
21276
21304
  if (!k) throw Error("Codex Bridge did not return an activation lease.");
21277
- T = k, o = "available", s = cC(O);
21278
- let A = lC(O);
21305
+ T = k, o = "available", s = lC(O);
21306
+ let A = uC(O);
21279
21307
  c = !0, f = A.thread, p = A.threads, e.lifecycle.onDispose(() => {
21280
21308
  T && D().catch((e) => {
21281
21309
  let t = e instanceof Error ? e.message : String(e);
21282
21310
  console.error(`[Mesurer] Failed to release Codex host lease: ${t}`);
21283
21311
  });
21284
- }), e.hook.on(GS, async (e) => {
21312
+ }), e.hook.on(KS, async (e) => {
21285
21313
  e === "mesurer.codex" && await D();
21286
21314
  });
21287
21315
  let j = async () => {
21288
- let e = cC(await E({ action: "runtime" }));
21316
+ let e = lC(await E({ action: "runtime" }));
21289
21317
  if (!e) throw Error("Codex Bridge returned an invalid runtime state.");
21290
21318
  return s = e, e;
21291
21319
  }, M = async () => {
@@ -21293,8 +21321,8 @@ function gC(e = {}) {
21293
21321
  action: "health",
21294
21322
  thread: u ?? l ?? void 0
21295
21323
  });
21296
- return s = cC(e) ?? s, lC(e);
21297
- }, N = M, P = async (e) => uC(await E({
21324
+ return s = lC(e) ?? s, uC(e);
21325
+ }, N = M, P = async (e) => dC(await E({
21298
21326
  action: "delivery",
21299
21327
  deliveryId: e
21300
21328
  })), F = async (e) => {
@@ -21304,13 +21332,13 @@ function gC(e = {}) {
21304
21332
  deliveryId: e.id,
21305
21333
  thread: e.thread
21306
21334
  };
21307
- return e.queuedSubmissionId && (t.queuedSubmissionId = e.queuedSubmissionId), uC(await E(t));
21335
+ return e.queuedSubmissionId && (t.queuedSubmissionId = e.queuedSubmissionId), dC(await E(t));
21308
21336
  }, I = async (e = {}) => {
21309
21337
  let t = {
21310
21338
  action: "threads",
21311
- limit: e.limit ?? ZS
21339
+ limit: e.limit ?? QS
21312
21340
  }, n = e.thread?.trim();
21313
- return n && (t.thread = n), dC(await E(t));
21341
+ return n && (t.thread = n), fC(await E(t));
21314
21342
  }, L = () => u ?? l ?? (d ? null : f), R = () => {
21315
21343
  if (!n) return;
21316
21344
  let e = b?.id && (b.status === "queued" || b.status === "working" || b.status === "interrupted") ? {
@@ -21322,7 +21350,7 @@ function gC(e = {}) {
21322
21350
  dispatch: b.dispatch,
21323
21351
  dispatchError: b.dispatchError
21324
21352
  } : null;
21325
- oC({
21353
+ sC({
21326
21354
  version: 1,
21327
21355
  originThread: l,
21328
21356
  selectedThread: u,
@@ -21340,12 +21368,12 @@ function gC(e = {}) {
21340
21368
  "queueing",
21341
21369
  "queued",
21342
21370
  "working"
21343
- ].includes(b.status) ? nC : b.status === "completed" ? rC : tC : tC, W = () => {
21371
+ ].includes(b.status) ? rC : b.status === "completed" ? iC : nC : nC, W = () => {
21344
21372
  let e = [], t = /* @__PURE__ */ new Set(), n = (n) => {
21345
21373
  t.has(n.id) || (t.add(n.id), e.push(n));
21346
21374
  }, r = (e) => ({
21347
21375
  id: e,
21348
- title: `Codex ${pC(e)}`,
21376
+ title: `Codex ${mC(e)}`,
21349
21377
  updatedAt: null,
21350
21378
  connected: !0
21351
21379
  });
@@ -21373,7 +21401,7 @@ function gC(e = {}) {
21373
21401
  let t = e.id === l ? "Current · " : e.connected ? "Loaded · " : "", r = b?.thread === e.id ? ` · ${V(b.status)}` : "";
21374
21402
  return {
21375
21403
  id: `codex.thread.${e.id}`,
21376
- label: `${t}${mC(e.title)}${r}`,
21404
+ label: `${t}${hC(e.title)}${r}`,
21377
21405
  checked: () => n === e.id,
21378
21406
  disabled: () => B(),
21379
21407
  run() {
@@ -21381,15 +21409,15 @@ function gC(e = {}) {
21381
21409
  }
21382
21410
  };
21383
21411
  });
21384
- return g < ZS && (e.length > g || h) && r.push({
21412
+ return g < QS && (e.length > g || h) && r.push({
21385
21413
  id: "codex.thread.show-more",
21386
21414
  label: "Show 5 more…",
21387
21415
  run() {
21388
- g = ZS, G();
21416
+ g = QS, G();
21389
21417
  }
21390
21418
  }), b?.queuedSubmissionId && b.status === "queued" && (b.dispatch === "desktop-opened" || b.dispatch === "desktop-wake-failed") && r.push({
21391
21419
  id: "codex.delivery.receipt",
21392
- label: `Receipt · ${pC(b.queuedSubmissionId)}`,
21420
+ label: `Receipt · ${mC(b.queuedSubmissionId)}`,
21393
21421
  disabled: () => !0,
21394
21422
  run: () => void 0
21395
21423
  }), r;
@@ -21426,7 +21454,7 @@ function gC(e = {}) {
21426
21454
  }, ne = async (e) => {
21427
21455
  if (o !== "available") return;
21428
21456
  let t = await I({
21429
- limit: ZS,
21457
+ limit: QS,
21430
21458
  thread: e ?? void 0
21431
21459
  });
21432
21460
  m = t.threads, h = t.hasMore, p = t.threads.filter((e) => e.connected).map((e) => e.id), f = t.thread;
@@ -21448,7 +21476,7 @@ function gC(e = {}) {
21448
21476
  }, ie = () => {
21449
21477
  S && globalThis.clearTimeout(S), S = globalThis.setTimeout(() => {
21450
21478
  S = 0, b?.status === "completed" && (b = null, R(), G());
21451
- }, JS);
21479
+ }, YS);
21452
21480
  }, ae = async (e) => {
21453
21481
  if (!(!b || b.id !== e.id)) {
21454
21482
  if (b = {
@@ -21470,14 +21498,14 @@ function gC(e = {}) {
21470
21498
  if (e.status === "interrupted") {
21471
21499
  R(), G();
21472
21500
  let t = e.updatedAt > 0 ? e.updatedAt : Date.now();
21473
- Date.now() - t < XS && (x = globalThis.setTimeout(() => {
21501
+ Date.now() - t < ZS && (x = globalThis.setTimeout(() => {
21474
21502
  x = 0, oe(e.id);
21475
- }, YS));
21503
+ }, XS));
21476
21504
  return;
21477
21505
  }
21478
21506
  G(), x = globalThis.setTimeout(() => {
21479
21507
  x = 0, oe(e.id);
21480
- }, qS);
21508
+ }, JS);
21481
21509
  }
21482
21510
  }, oe = async (e) => {
21483
21511
  if (!(w || b?.id !== e)) try {
@@ -21501,7 +21529,7 @@ function gC(e = {}) {
21501
21529
  b = {
21502
21530
  ...b,
21503
21531
  status: "failed"
21504
- }, R(), hC(n) && (o = "unavailable"), G();
21532
+ }, R(), gC(n) && (o = "unavailable"), G();
21505
21533
  }
21506
21534
  }, se = {
21507
21535
  health: M,
@@ -21513,11 +21541,11 @@ function gC(e = {}) {
21513
21541
  let n = await E({
21514
21542
  action: "target",
21515
21543
  thread: t
21516
- }), r = lC(n);
21517
- return s = cC(n) ?? s, z(t, !l), f = r.thread, p = r.threads, o = "available", c = !0, G(), r;
21544
+ }), r = uC(n);
21545
+ return s = lC(n) ?? s, z(t, !l), f = r.thread, p = r.threads, o = "available", c = !0, G(), r;
21518
21546
  },
21519
21547
  async queue(e) {
21520
- let r = await fC(i, e, t), a = e?.thread?.trim(), s = a || (n ? L() : null);
21548
+ let r = await pC(i, e, t), a = e?.thread?.trim(), s = a || (n ? L() : null);
21521
21549
  if (n && !a && (d || !s)) throw Error("Choose a Codex thread before queueing feedback.");
21522
21550
  let c = { message: r.message };
21523
21551
  s && (c.thread = s);
@@ -21537,14 +21565,14 @@ function gC(e = {}) {
21537
21565
  };
21538
21566
  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;
21539
21567
  } catch (e) {
21540
- throw n && hC(e) && (o = "unavailable", G()), e;
21568
+ throw n && gC(e) && (o = "unavailable", G()), e;
21541
21569
  }
21542
21570
  },
21543
21571
  send(e) {
21544
21572
  return se.queue(e);
21545
21573
  }
21546
21574
  };
21547
- e.service.provide(WS, se);
21575
+ e.service.provide(GS, se);
21548
21576
  let ce = async () => {
21549
21577
  if (!(C || B())) return re(), b = {
21550
21578
  id: null,
@@ -21575,9 +21603,9 @@ function gC(e = {}) {
21575
21603
  updatedAt: 0
21576
21604
  }) : x = globalThis.setTimeout(() => {
21577
21605
  x = 0, oe(e.deliveryId);
21578
- }, qS) : S = globalThis.setTimeout(() => {
21606
+ }, JS) : S = globalThis.setTimeout(() => {
21579
21607
  S = 0, b?.id === null && b?.status === "queued" && (b = null, R(), G());
21580
- }, JS);
21608
+ }, YS);
21581
21609
  } catch (e) {
21582
21610
  b = null, R(), G();
21583
21611
  let t = e instanceof Error ? e.message : String(e);
@@ -21605,7 +21633,7 @@ function gC(e = {}) {
21605
21633
  }, 0));
21606
21634
  let t = globalThis.setInterval(() => {
21607
21635
  c && ee().catch(() => void 0);
21608
- }, KS);
21636
+ }, qS);
21609
21637
  e.lifecycle.onDispose(() => {
21610
21638
  w = !0, re(), globalThis.clearInterval(t), _?.dispose(), _ = void 0;
21611
21639
  });
@@ -21615,64 +21643,64 @@ function gC(e = {}) {
21615
21643
  }
21616
21644
  //#endregion
21617
21645
  //#region src/recording.ts
21618
- var _C = vb, vC = (e = {}) => ({
21646
+ var vC = vb, yC = (e = {}) => ({
21619
21647
  ...Bb(e),
21620
- version: Yx
21621
- }), yC = Qb, bC = (e = {}) => ({
21622
- ...vx(e),
21623
- version: Yx
21624
- }), xC = () => globalThis.window?.__MESURER_HOST__?.codexBridge !== void 0, SC = [
21648
+ version: Xx
21649
+ }), bC = $b, xC = (e = {}) => ({
21650
+ ...yx(e),
21651
+ version: Xx
21652
+ }), SC = () => globalThis.window?.__MESURER_HOST__?.codexBridge !== void 0, CC = [
21625
21653
  {
21626
- id: wS,
21654
+ id: TS,
21627
21655
  label: "Context",
21628
21656
  order: 30,
21629
- create: FS,
21657
+ create: IS,
21630
21658
  settingsIds: ["context"],
21631
21659
  hiddenSettingsControlIds: ["ui"]
21632
21660
  },
21633
21661
  {
21634
- id: Xx,
21662
+ id: Zx,
21635
21663
  label: "Edit",
21636
21664
  order: 35,
21637
- create: Qx,
21665
+ create: $x,
21638
21666
  settingsIds: ["arrange"]
21639
21667
  },
21640
21668
  {
21641
- id: xS,
21669
+ id: SS,
21642
21670
  label: "Layout Guides",
21643
21671
  order: 38,
21644
- create: CS
21672
+ create: wS
21645
21673
  },
21646
21674
  {
21647
- id: yC,
21675
+ id: bC,
21648
21676
  label: "Screenshot",
21649
21677
  order: 40,
21650
- create: bC,
21678
+ create: xC,
21651
21679
  settingsIds: ["screenshot"],
21652
21680
  hiddenSettingsControlIds: ["tool"]
21653
21681
  },
21654
21682
  {
21655
- id: _C,
21683
+ id: vC,
21656
21684
  label: "Recording",
21657
21685
  order: 42,
21658
- create: vC,
21686
+ create: yC,
21659
21687
  settingsIds: ["recording"],
21660
21688
  hiddenSettingsControlIds: ["tool"]
21661
21689
  },
21662
21690
  {
21663
- id: US,
21691
+ id: WS,
21664
21692
  label: "Codex",
21665
21693
  order: 45,
21666
- create: gC
21694
+ create: _C
21667
21695
  }
21668
- ], CC = (e) => {
21669
- let t = e !== void 0, n = new Map((e ?? []).map((e) => [e.id, e])), r = new Set(SC.map((e) => e.id)), i = SC.map((e) => {
21696
+ ], wC = (e) => {
21697
+ let t = e !== void 0, n = new Map((e ?? []).map((e) => [e.id, e])), r = new Set(CC.map((e) => e.id)), i = CC.map((e) => {
21670
21698
  let r = n.get(e.id);
21671
21699
  return {
21672
21700
  ...e,
21673
21701
  settingsIds: e.settingsIds ? [...e.settingsIds] : void 0,
21674
21702
  hiddenSettingsControlIds: e.hiddenSettingsControlIds ? [...e.hiddenSettingsControlIds] : void 0,
21675
- enabled: t ? !!r : e.id === "mesurer.codex" ? xC() : e.enabled !== !1,
21703
+ enabled: t ? !!r : e.id === "mesurer.codex" ? SC() : e.enabled !== !1,
21676
21704
  create: r ? () => r : e.create
21677
21705
  };
21678
21706
  });
@@ -21683,7 +21711,7 @@ var _C = vb, vC = (e = {}) => ({
21683
21711
  create: () => n
21684
21712
  });
21685
21713
  return i;
21686
- }, wC = {
21714
+ }, TC = {
21687
21715
  select: "select",
21688
21716
  xray: "xray",
21689
21717
  colorPicker: "color-picker",
@@ -21693,14 +21721,14 @@ var _C = vb, vC = (e = {}) => ({
21693
21721
  distance: "distance",
21694
21722
  settings: "settings"
21695
21723
  };
21696
- function TC(e = {}) {
21724
+ function EC(e = {}) {
21697
21725
  if (!("document" in globalThis)) throw Error("mountMesurer() requires a browser or Electron renderer document.");
21698
21726
  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;
21699
21727
  if (o?.aborted) throw o.reason ?? new DOMException("Mesurer mount aborted.", "AbortError");
21700
21728
  if (!t) throw Error("mountMesurer() requires document.body to exist or an explicit target.");
21701
21729
  let p = t.ownerDocument ?? document, m = p.defaultView ?? window, h = p.createElement("div");
21702
21730
  h.dataset.mesurerIsland = "true";
21703
- let g = HS(h, t, i), _ = h, v = h, y = h;
21731
+ let g = US(h, t, i), _ = h, v = h, y = h;
21704
21732
  if (n) {
21705
21733
  let e = h.attachShadow({ mode: r });
21706
21734
  v = p.createElement("div"), v.dataset.mesurerIslandMount = "true", e.append(v), _ = e, y = e;
@@ -21711,7 +21739,7 @@ function TC(e = {}) {
21711
21739
  C = e, w = t;
21712
21740
  });
21713
21741
  D.catch(() => void 0), O.catch(() => void 0);
21714
- let k = async () => (await (b ? Promise.resolve(b) : D), O), A = a === !0 ? {} : a === !1 ? null : a, j = Jx({
21742
+ let k = async () => (await (b ? Promise.resolve(b) : D), O), A = a === !0 ? {} : a === !1 ? null : a, j = Yx({
21715
21743
  ownerDocument: p,
21716
21744
  root: A?.root ?? (t.nodeType === 11 ? t : p),
21717
21745
  getPluginHost: () => b,
@@ -21723,12 +21751,12 @@ function TC(e = {}) {
21723
21751
  return t;
21724
21752
  }, N = async () => {
21725
21753
  await j.ready();
21726
- let e = b?.service.get(TS);
21754
+ let e = b?.service.get(ES);
21727
21755
  if (!e) throw Error("Mesurer Context is disabled. Enable it in Settings or include context() in plugins.");
21728
21756
  return e;
21729
21757
  }, P = async () => {
21730
21758
  await j.ready();
21731
- let e = b?.service.get($x);
21759
+ let e = b?.service.get(eS);
21732
21760
  if (!e) throw Error("Mesurer Edit is disabled. Enable it in Settings or include edit() in plugins.");
21733
21761
  return e;
21734
21762
  }, 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) => {
@@ -21739,7 +21767,7 @@ function TC(e = {}) {
21739
21767
  (await P()).show(e, t);
21740
21768
  }, 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, {
21741
21769
  capabilities: () => {
21742
- let e = !!b?.service.get(TS);
21770
+ let e = !!b?.service.get(ES);
21743
21771
  return {
21744
21772
  protocol: "mesurer.agent/v1",
21745
21773
  contextSchema: "mesurer.context/v1",
@@ -21749,8 +21777,8 @@ function TC(e = {}) {
21749
21777
  annotations: e,
21750
21778
  review: e,
21751
21779
  capturePlan: e,
21752
- arrange: !!b?.service.get($x),
21753
- textEdit: !!b?.service.get(Kx)
21780
+ arrange: !!b?.service.get(eS),
21781
+ textEdit: !!b?.service.get(qx)
21754
21782
  }
21755
21783
  };
21756
21784
  },
@@ -21769,9 +21797,9 @@ function TC(e = {}) {
21769
21797
  reviewArrange: ne
21770
21798
  }), oe = {
21771
21799
  ...f,
21772
- version: Yx,
21773
- plugins: CC(l),
21774
- excludePlugins: u ? u.map((e) => wC[e]) : [...d ?? []]
21800
+ version: Xx,
21801
+ plugins: wC(l),
21802
+ excludePlugins: u ? u.map((e) => TC[e]) : [...d ?? []]
21775
21803
  }, se = Oi(() => Yr(rv, Di(oe, {
21776
21804
  portalTarget: y,
21777
21805
  pageTarget: t,
@@ -21842,20 +21870,20 @@ function TC(e = {}) {
21842
21870
  }
21843
21871
  //#endregion
21844
21872
  //#region src/inject.ts
21845
- var { target: EC, globalName: DC = "__MESURER__", reuseExisting: OC = !0, recoverDisconnected: kC = !1, ...AC } = globalThis.__MESURER_CONFIG__ ?? {}, jC = globalThis.__MESURER_INSTANCE__, MC = OC && jC?.element.isConnected ? jC : void 0;
21846
- function NC() {
21847
- let e = EC ? document.querySelector(EC) : document.body;
21848
- if (!e) throw Error(`Mesurer injection target not found: ${EC}`);
21849
- return globalThis.__MESURER_INSTANCE__?.dispose(), TC({
21850
- ...AC,
21873
+ var { target: DC, globalName: OC = "__MESURER__", reuseExisting: kC = !0, recoverDisconnected: AC = !1, ...jC } = globalThis.__MESURER_CONFIG__ ?? {}, MC = globalThis.__MESURER_INSTANCE__, NC = kC && MC?.element.isConnected ? MC : void 0;
21874
+ function PC() {
21875
+ let e = DC ? document.querySelector(DC) : document.body;
21876
+ if (!e) throw Error(`Mesurer injection target not found: ${DC}`);
21877
+ return globalThis.__MESURER_INSTANCE__?.dispose(), EC({
21878
+ ...jC,
21851
21879
  target: e,
21852
21880
  agent: {
21853
- globalName: DC,
21881
+ globalName: OC,
21854
21882
  root: document
21855
21883
  }
21856
21884
  });
21857
21885
  }
21858
- var PC = (e) => {
21886
+ var FC = (e) => {
21859
21887
  globalThis.__MESURER_INJECT_RECOVERY__?.stop();
21860
21888
  let t = !1, n = !1, r = () => {
21861
21889
  if (n = !1, t || globalThis.__MESURER_INSTANCE__?.element.isConnected) return;
@@ -21874,7 +21902,7 @@ var PC = (e) => {
21874
21902
  }), globalThis.__MESURER_INJECT_RECOVERY__ = { stop() {
21875
21903
  t = !0, i.disconnect();
21876
21904
  } };
21877
- }, FC = MC ?? NC();
21878
- globalThis.__MESURER_INSTANCE__ = FC, globalThis.__MESURER_INJECT_RECOVERY__?.stop(), globalThis.__MESURER_INJECT_RECOVERY__ = void 0, kC && PC(NC), await FC.ready;
21905
+ }, IC = NC ?? PC();
21906
+ globalThis.__MESURER_INSTANCE__ = IC, globalThis.__MESURER_INJECT_RECOVERY__?.stop(), globalThis.__MESURER_INJECT_RECOVERY__ = void 0, AC && FC(PC), await IC.ready;
21879
21907
  //#endregion
21880
- export { FC as mesurer };
21908
+ export { IC as mesurer };