mesurer-solid 0.2.1-beta.12 → 0.2.1-beta.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +455 -427
- package/dist/inject-script.js +7 -7
- package/dist/inject.js +450 -422
- package/dist/plugins.js +575 -553
- package/package.json +1 -1
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("
|
|
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
|
-
}),
|
|
7726
|
-
return Z(c, l), Z(l, u),
|
|
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-
|
|
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
|
|
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
|
-
|
|
7746
|
-
|
|
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
|
-
}),
|
|
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.
|
|
7814
|
-
a: e.
|
|
7815
|
-
o: e.
|
|
7816
|
-
i: e.
|
|
7817
|
-
n: e.
|
|
7818
|
-
s: e.enabled ? "
|
|
7819
|
-
h:
|
|
7820
|
-
|
|
7821
|
-
|
|
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
|
-
},
|
|
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
|
-
}),
|
|
19439
|
+
}), Yb = (e, t) => {
|
|
19432
19440
|
let n = e.createElement("button");
|
|
19433
|
-
return n.type = "button", n.textContent = t,
|
|
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
|
-
},
|
|
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 (!
|
|
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",
|
|
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,
|
|
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",
|
|
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",
|
|
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": "
|
|
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"),
|
|
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",
|
|
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",
|
|
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 =
|
|
19555
|
+
let m = Yb(e, "Copy");
|
|
19547
19556
|
m.dataset.mesurerScreenshotViewerCopy = "true", m.setAttribute("aria-label", "Copy screenshot");
|
|
19548
|
-
let h =
|
|
19557
|
+
let h = Yb(e, "Save");
|
|
19549
19558
|
h.dataset.mesurerScreenshotViewerSave = "true", h.setAttribute("aria-label", "Save screenshot");
|
|
19550
|
-
let g =
|
|
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"),
|
|
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,
|
|
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
|
-
},
|
|
19579
|
+
}, D = () => {
|
|
19571
19580
|
C && t.clearTimeout(C), C = 0;
|
|
19572
|
-
},
|
|
19573
|
-
|
|
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
|
-
|
|
19586
|
+
d.style.display = "none";
|
|
19580
19587
|
}, A = () => {
|
|
19581
|
-
|
|
19582
|
-
}, j = () =>
|
|
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),
|
|
19586
|
-
let n =
|
|
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
|
-
},
|
|
19589
|
-
!v || !y || (
|
|
19590
|
-
},
|
|
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),
|
|
19621
|
+
await Ya(Promise.resolve(e), t), O("Copied screenshot");
|
|
19594
19622
|
} catch {
|
|
19595
|
-
|
|
19623
|
+
O("Could not copy screenshot", !0);
|
|
19596
19624
|
}
|
|
19597
|
-
},
|
|
19625
|
+
}, L = () => {
|
|
19598
19626
|
let n = v;
|
|
19599
19627
|
if (n) try {
|
|
19600
|
-
Za(n, Xa(), e, t),
|
|
19628
|
+
Za(n, Xa(), e, t), O("Saved screenshot");
|
|
19601
19629
|
} catch {
|
|
19602
|
-
|
|
19630
|
+
O("Could not save screenshot", !0);
|
|
19603
19631
|
}
|
|
19604
|
-
},
|
|
19632
|
+
}, R = (e, t, n) => {
|
|
19605
19633
|
if (!v) return !1;
|
|
19606
|
-
|
|
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
|
-
},
|
|
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 &&
|
|
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
|
-
},
|
|
19652
|
+
}, B = () => {
|
|
19625
19653
|
let e = x;
|
|
19626
|
-
e && (x = null, o.style.cursor = "grab", e.moved ||
|
|
19627
|
-
},
|
|
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
|
|
19658
|
+
e.button !== 0 || !R(e.clientX, e.clientY, null) || e.preventDefault();
|
|
19635
19659
|
}, U = (e) => {
|
|
19636
|
-
|
|
19660
|
+
x?.pointerId === null && z(e.clientX, e.clientY);
|
|
19637
19661
|
}, W = (e) => {
|
|
19638
|
-
|
|
19639
|
-
t != null && t === e.pointerId && L(e.clientX, e.clientY);
|
|
19662
|
+
e.button === 0 && x?.pointerId === null && B();
|
|
19640
19663
|
}, ee = (e) => {
|
|
19641
|
-
|
|
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 && (
|
|
19667
|
+
t != null && t === e.pointerId && z(e.clientX, e.clientY);
|
|
19646
19668
|
}, G = (e) => {
|
|
19647
|
-
|
|
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
|
-
|
|
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.
|
|
19675
|
+
(e.key === "Enter" || e.key === " ") && (e.preventDefault(), F());
|
|
19652
19676
|
}, ie = (e) => {
|
|
19653
|
-
e.
|
|
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(),
|
|
19657
|
-
}), o.addEventListener("mousedown",
|
|
19658
|
-
|
|
19659
|
-
}), h.addEventListener("click",
|
|
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 (
|
|
19662
|
-
|
|
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",
|
|
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:
|
|
19694
|
+
dismiss: j,
|
|
19667
19695
|
dispose() {
|
|
19668
|
-
|
|
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
|
-
},
|
|
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(","),
|
|
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
|
-
},
|
|
19695
|
-
let t = e(
|
|
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
|
-
},
|
|
19730
|
+
}, px = (e) => ({
|
|
19703
19731
|
value: e.style.getPropertyValue("display"),
|
|
19704
19732
|
priority: e.style.getPropertyPriority("display")
|
|
19705
|
-
}),
|
|
19733
|
+
}), mx = (e, t) => {
|
|
19706
19734
|
t.value || t.priority ? e.style.setProperty("display", t.value, t.priority) : e.style.removeProperty("display");
|
|
19707
|
-
},
|
|
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
|
-
},
|
|
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 =
|
|
19744
|
+
let r = hx(e, t);
|
|
19717
19745
|
r && n.add(r);
|
|
19718
19746
|
}
|
|
19719
|
-
for (let e of t.querySelectorAll(
|
|
19720
|
-
let r =
|
|
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:
|
|
19754
|
+
display: px(e)
|
|
19727
19755
|
}), e.style.setProperty("display", "none", "important"));
|
|
19728
19756
|
return () => {
|
|
19729
|
-
for (let e of r)
|
|
19757
|
+
for (let e of r) mx(e.element, e.display);
|
|
19730
19758
|
};
|
|
19731
|
-
},
|
|
19759
|
+
}, _x = (e) => Array.from(e.querySelectorAll(cx)).filter((e) => e.dataset.mesurerInspectorUi === "true").map((e) => ({
|
|
19732
19760
|
element: e,
|
|
19733
|
-
display:
|
|
19734
|
-
})),
|
|
19735
|
-
for (let t of e) t.element.isConnected &&
|
|
19736
|
-
},
|
|
19737
|
-
id:
|
|
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: [
|
|
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(
|
|
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 ??
|
|
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:
|
|
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:
|
|
19787
|
+
id: nx,
|
|
19760
19788
|
initial: !1
|
|
19761
19789
|
});
|
|
19762
19790
|
let u = o.element;
|
|
19763
|
-
u.dataset.mesurerScreenshot = "true",
|
|
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"),
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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",
|
|
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",
|
|
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 = () =>
|
|
19836
|
-
t.state.update(
|
|
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
|
-
|
|
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))
|
|
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
|
-
|
|
19902
|
+
dx(f[0], {
|
|
19875
19903
|
left: 0,
|
|
19876
19904
|
top: 0,
|
|
19877
19905
|
width: t,
|
|
19878
19906
|
height: e.top
|
|
19879
|
-
}),
|
|
19907
|
+
}), dx(f[1], {
|
|
19880
19908
|
left: 0,
|
|
19881
19909
|
top: e.top,
|
|
19882
19910
|
width: e.left,
|
|
19883
19911
|
height: e.height
|
|
19884
|
-
}),
|
|
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
|
-
}),
|
|
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",
|
|
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 =
|
|
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
|
-
},
|
|
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 ?
|
|
19919
|
-
a.prepareCapture(), s.includeMeasurements &&
|
|
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:
|
|
20055
|
+
command: ix,
|
|
20028
20056
|
toolbarMode: "select",
|
|
20029
20057
|
compactPinned: !0,
|
|
20030
|
-
icon:
|
|
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(
|
|
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
|
-
}),
|
|
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
|
-
},
|
|
20104
|
-
function
|
|
20131
|
+
}, Cx = (e) => e.nodeType === 9, wx = (e) => e.nodeType === 11;
|
|
20132
|
+
function Tx(e) {
|
|
20105
20133
|
let t = e.getRootNode();
|
|
20106
|
-
return
|
|
20134
|
+
return wx(t) ? t : e.ownerDocument;
|
|
20107
20135
|
}
|
|
20108
|
-
var
|
|
20109
|
-
if (
|
|
20110
|
-
let n =
|
|
20111
|
-
return
|
|
20112
|
-
},
|
|
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 ((
|
|
20143
|
+
if ((kx.get(t) ?? 0) > 0) return !0;
|
|
20116
20144
|
let e = t.getRootNode();
|
|
20117
|
-
t =
|
|
20145
|
+
t = wx(e) ? e.host : t.parentElement;
|
|
20118
20146
|
}
|
|
20119
20147
|
return !1;
|
|
20120
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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) ||
|
|
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 <=
|
|
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 =
|
|
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
|
-
},
|
|
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 =
|
|
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
|
-
},
|
|
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
|
-
},
|
|
20224
|
+
}, Bx = (e, t, n, r) => {
|
|
20197
20225
|
let i = r.defaultView;
|
|
20198
20226
|
if (!i) return [];
|
|
20199
|
-
let a = Lx(
|
|
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(
|
|
20202
|
-
let o = [], s = /* @__PURE__ */ new Set(), c = !
|
|
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 =
|
|
20205
|
-
if (!
|
|
20206
|
-
let t =
|
|
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) || !
|
|
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
|
|
20241
|
+
return Rx(o, e, t);
|
|
20214
20242
|
};
|
|
20215
|
-
function
|
|
20216
|
-
let r =
|
|
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 || !
|
|
20227
|
-
let o =
|
|
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
|
|
20234
|
-
if (
|
|
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 (!
|
|
20267
|
+
if (!wx(e)) return !1;
|
|
20240
20268
|
n = e.host;
|
|
20241
20269
|
}
|
|
20242
20270
|
return !1;
|
|
20243
20271
|
}
|
|
20244
|
-
function
|
|
20272
|
+
function Ux(e, t) {
|
|
20245
20273
|
if (!e) return t();
|
|
20246
|
-
let n =
|
|
20247
|
-
|
|
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 ?
|
|
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
|
|
20289
|
+
function Wx(e) {
|
|
20262
20290
|
let t = e.ownerDocument.defaultView ?? window;
|
|
20263
|
-
if (e.id) return `#${
|
|
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
|
|
20305
|
+
function Gx(e, t, n = `dom-inspection-${++xx}`) {
|
|
20278
20306
|
let r = e.getBoundingClientRect(), i = t.getComputedStyle(e), a = {
|
|
20279
|
-
top:
|
|
20280
|
-
right:
|
|
20281
|
-
bottom:
|
|
20282
|
-
left:
|
|
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:
|
|
20285
|
-
right:
|
|
20286
|
-
bottom:
|
|
20287
|
-
left:
|
|
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
|
|
20316
|
-
let t = e.ownerDocument.defaultView ?? window, n = t.getComputedStyle(e), r = e instanceof t.HTMLElement ? e : null, i = e.getBoundingClientRect(), a = r ?
|
|
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:
|
|
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
|
|
20389
|
-
function
|
|
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 ||
|
|
20391
|
-
let t = (e.getPluginHost() ?? await e.waitForPluginHost()).service.get(
|
|
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 ?
|
|
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(
|
|
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
|
|
20428
|
-
let a =
|
|
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) ?
|
|
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 =
|
|
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(
|
|
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
|
|
20507
|
+
var Xx = "0.2.1-beta.13", Zx = Np, Qx = Pp, $x = () => ({
|
|
20480
20508
|
...km(),
|
|
20481
|
-
version:
|
|
20482
|
-
}),
|
|
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
|
-
},
|
|
20492
|
-
function
|
|
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:
|
|
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) =>
|
|
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) =>
|
|
20502
|
-
measurements:
|
|
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
|
|
20536
|
+
var oS = {
|
|
20509
20537
|
opacity: 1,
|
|
20510
20538
|
width: 1,
|
|
20511
20539
|
pattern: "solid",
|
|
20512
20540
|
dashLength: 6,
|
|
20513
20541
|
gap: 4
|
|
20514
|
-
},
|
|
20542
|
+
}, sS = {
|
|
20515
20543
|
opacity: 1,
|
|
20516
20544
|
edgeReveal: !1
|
|
20517
20545
|
};
|
|
20518
|
-
({ ...
|
|
20546
|
+
({ ...oS }), { ...sS };
|
|
20519
20547
|
//#endregion
|
|
20520
20548
|
//#region src/context.ts
|
|
20521
|
-
var
|
|
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
|
-
}),
|
|
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
|
-
},
|
|
20531
|
-
function
|
|
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 =
|
|
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 =
|
|
20552
|
-
s = e.region ? [e.region] : o.map((e) =>
|
|
20553
|
-
} else o =
|
|
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) =>
|
|
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 ??
|
|
20572
|
-
}), f = d.measurements, p = d.distances, m = d.guides, h =
|
|
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:
|
|
20612
|
+
inspection: Kx(e)
|
|
20585
20613
|
};
|
|
20586
20614
|
}), x = f.map((e) => {
|
|
20587
20615
|
let t = {
|
|
20588
20616
|
id: e.id,
|
|
20589
|
-
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:
|
|
20600
|
-
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:
|
|
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(
|
|
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
|
|
20638
|
-
function
|
|
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}: ${
|
|
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: ${
|
|
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"}=${
|
|
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 ${
|
|
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}: ` : ""}${
|
|
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=${
|
|
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
|
|
20678
|
-
let t =
|
|
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
|
|
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
|
-
},
|
|
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
|
-
}),
|
|
20723
|
-
function
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
20771
|
+
vS(a, "target", e.id, e.selector);
|
|
20744
20772
|
continue;
|
|
20745
20773
|
}
|
|
20746
|
-
|
|
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
|
-
|
|
20779
|
+
vS(a, "guide", e.id, `${e.orientation} guide ${e.id}`);
|
|
20752
20780
|
continue;
|
|
20753
20781
|
}
|
|
20754
|
-
|
|
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) =>
|
|
20760
|
-
r && n.targets.some((e) => e.ref === r.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
|
-
|
|
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
|
-
|
|
20796
|
+
vS(a, "distance", e.id, e.id);
|
|
20769
20797
|
continue;
|
|
20770
20798
|
}
|
|
20771
|
-
e.horizontal && t.horizontal ?
|
|
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
|
|
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
|
|
20825
|
+
var SS = Kv, CS = qv, wS = () => ({
|
|
20798
20826
|
...yy(),
|
|
20799
|
-
version:
|
|
20800
|
-
}),
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
20813
|
-
let i = async (i) =>
|
|
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) =>
|
|
20847
|
+
}), a = async (e) => hS(await i(e));
|
|
20820
20848
|
return {
|
|
20821
20849
|
context: i,
|
|
20822
20850
|
contextText: a,
|
|
20823
|
-
copyContext: async (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
|
|
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
|
|
20858
|
+
e.removeAnnotation(r), await NS(t, n);
|
|
20831
20859
|
},
|
|
20832
20860
|
review: async (i) => {
|
|
20833
|
-
if (await
|
|
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) =>
|
|
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) =>
|
|
20877
|
+
capturePlan: async (e) => gS(await i(e)),
|
|
20850
20878
|
prepareCapture: async () => {
|
|
20851
|
-
e.prepareCapture(), await
|
|
20879
|
+
e.prepareCapture(), await NS(t, n);
|
|
20852
20880
|
},
|
|
20853
20881
|
finishCapture: async () => {
|
|
20854
|
-
e.finishCapture(), await
|
|
20882
|
+
e.finishCapture(), await NS(t, n);
|
|
20855
20883
|
}
|
|
20856
20884
|
};
|
|
20857
|
-
},
|
|
20885
|
+
}, FS = (e) => {
|
|
20858
20886
|
let t = e.currentSelection();
|
|
20859
20887
|
return t.elements.length > 0 || t.region !== null;
|
|
20860
20888
|
};
|
|
20861
|
-
function
|
|
20889
|
+
function IS(e = {}) {
|
|
20862
20890
|
return {
|
|
20863
|
-
id:
|
|
20864
|
-
version:
|
|
20891
|
+
id: TS,
|
|
20892
|
+
version: Xx,
|
|
20865
20893
|
requires: ["runtime:solid"],
|
|
20866
|
-
provides: [
|
|
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(
|
|
20871
|
-
t.service.provide(
|
|
20872
|
-
id:
|
|
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:
|
|
20877
|
-
initial: { hasSelection:
|
|
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(
|
|
20880
|
-
t.state.update(
|
|
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(
|
|
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(
|
|
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: [
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
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
|
|
21023
|
-
function
|
|
21024
|
-
if (!
|
|
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
|
|
21032
|
-
|
|
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 &&
|
|
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 || !
|
|
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 &&
|
|
21046
|
-
if (n &&
|
|
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),
|
|
21077
|
+
t.append(e), RS(e), n && d();
|
|
21050
21078
|
}, p = () => {
|
|
21051
|
-
u = u.filter((e) => e.isConnected &&
|
|
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 || !
|
|
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 =
|
|
21094
|
+
let n = BS(t) ? t.newState : void 0, r = t.target;
|
|
21067
21095
|
if (r instanceof i.Element) {
|
|
21068
|
-
if (
|
|
21069
|
-
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 &&
|
|
21104
|
+
t instanceof i.Element && VS(t) && h(t);
|
|
21077
21105
|
}, b = () => {
|
|
21078
21106
|
r.fullscreenElement && _();
|
|
21079
21107
|
}, x = (e) => {
|
|
21080
|
-
|
|
21081
|
-
for (let t of e.querySelectorAll("dialog"))
|
|
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 &&
|
|
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 &&
|
|
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
|
|
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(" "),
|
|
21144
|
+
].join(" "), nC = {
|
|
21117
21145
|
viewBox: "0 0 256 256",
|
|
21118
21146
|
paths: ["M224,48,32,120l88,32,32,88Z M120,152l104-104"]
|
|
21119
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
21133
|
-
let e =
|
|
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
|
-
},
|
|
21159
|
-
let t =
|
|
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
|
-
},
|
|
21191
|
+
}, cC = async (e) => {
|
|
21164
21192
|
let t = window.__MESURER_HOST__?.codexBridge;
|
|
21165
|
-
if (!t) throw Error(
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
}),
|
|
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
|
-
},
|
|
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
|
-
}),
|
|
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
|
-
},
|
|
21238
|
-
function
|
|
21239
|
-
let t = e.instruction?.trim() ||
|
|
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:
|
|
21242
|
-
version:
|
|
21243
|
-
requires: [
|
|
21244
|
-
provides: [
|
|
21269
|
+
id: WS,
|
|
21270
|
+
version: Xx,
|
|
21271
|
+
requires: [ES],
|
|
21272
|
+
provides: [GS],
|
|
21245
21273
|
async setup(e) {
|
|
21246
|
-
let i = e.service.get(
|
|
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 ?
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
21278
|
-
let A =
|
|
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(
|
|
21312
|
+
}), e.hook.on(KS, async (e) => {
|
|
21285
21313
|
e === "mesurer.codex" && await D();
|
|
21286
21314
|
});
|
|
21287
21315
|
let j = async () => {
|
|
21288
|
-
let e =
|
|
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 =
|
|
21297
|
-
}, N = M, P = async (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),
|
|
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 ??
|
|
21339
|
+
limit: e.limit ?? QS
|
|
21312
21340
|
}, n = e.thread?.trim();
|
|
21313
|
-
return n && (t.thread = n),
|
|
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
|
-
|
|
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) ?
|
|
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 ${
|
|
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}${
|
|
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 <
|
|
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 =
|
|
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 · ${
|
|
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:
|
|
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
|
-
},
|
|
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 <
|
|
21501
|
+
Date.now() - t < ZS && (x = globalThis.setTimeout(() => {
|
|
21474
21502
|
x = 0, oe(e.id);
|
|
21475
|
-
},
|
|
21503
|
+
}, XS));
|
|
21476
21504
|
return;
|
|
21477
21505
|
}
|
|
21478
21506
|
G(), x = globalThis.setTimeout(() => {
|
|
21479
21507
|
x = 0, oe(e.id);
|
|
21480
|
-
},
|
|
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(),
|
|
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 =
|
|
21517
|
-
return s =
|
|
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
|
|
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 &&
|
|
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(
|
|
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
|
-
},
|
|
21606
|
+
}, JS) : S = globalThis.setTimeout(() => {
|
|
21579
21607
|
S = 0, b?.id === null && b?.status === "queued" && (b = null, R(), G());
|
|
21580
|
-
},
|
|
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
|
-
},
|
|
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
|
|
21646
|
+
var vC = vb, yC = (e = {}) => ({
|
|
21619
21647
|
...Bb(e),
|
|
21620
|
-
version:
|
|
21621
|
-
}),
|
|
21622
|
-
...
|
|
21623
|
-
version:
|
|
21624
|
-
}),
|
|
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:
|
|
21654
|
+
id: TS,
|
|
21627
21655
|
label: "Context",
|
|
21628
21656
|
order: 30,
|
|
21629
|
-
create:
|
|
21657
|
+
create: IS,
|
|
21630
21658
|
settingsIds: ["context"],
|
|
21631
21659
|
hiddenSettingsControlIds: ["ui"]
|
|
21632
21660
|
},
|
|
21633
21661
|
{
|
|
21634
|
-
id:
|
|
21662
|
+
id: Zx,
|
|
21635
21663
|
label: "Edit",
|
|
21636
21664
|
order: 35,
|
|
21637
|
-
create:
|
|
21665
|
+
create: $x,
|
|
21638
21666
|
settingsIds: ["arrange"]
|
|
21639
21667
|
},
|
|
21640
21668
|
{
|
|
21641
|
-
id:
|
|
21669
|
+
id: SS,
|
|
21642
21670
|
label: "Layout Guides",
|
|
21643
21671
|
order: 38,
|
|
21644
|
-
create:
|
|
21672
|
+
create: wS
|
|
21645
21673
|
},
|
|
21646
21674
|
{
|
|
21647
|
-
id:
|
|
21675
|
+
id: bC,
|
|
21648
21676
|
label: "Screenshot",
|
|
21649
21677
|
order: 40,
|
|
21650
|
-
create:
|
|
21678
|
+
create: xC,
|
|
21651
21679
|
settingsIds: ["screenshot"],
|
|
21652
21680
|
hiddenSettingsControlIds: ["tool"]
|
|
21653
21681
|
},
|
|
21654
21682
|
{
|
|
21655
|
-
id:
|
|
21683
|
+
id: vC,
|
|
21656
21684
|
label: "Recording",
|
|
21657
21685
|
order: 42,
|
|
21658
|
-
create:
|
|
21686
|
+
create: yC,
|
|
21659
21687
|
settingsIds: ["recording"],
|
|
21660
21688
|
hiddenSettingsControlIds: ["tool"]
|
|
21661
21689
|
},
|
|
21662
21690
|
{
|
|
21663
|
-
id:
|
|
21691
|
+
id: WS,
|
|
21664
21692
|
label: "Codex",
|
|
21665
21693
|
order: 45,
|
|
21666
|
-
create:
|
|
21694
|
+
create: _C
|
|
21667
21695
|
}
|
|
21668
|
-
],
|
|
21669
|
-
let t = e !== void 0, n = new Map((e ?? []).map((e) => [e.id, e])), r = new Set(
|
|
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" ?
|
|
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
|
-
},
|
|
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
|
|
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 =
|
|
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 =
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
21753
|
-
textEdit: !!b?.service.get(
|
|
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:
|
|
21773
|
-
plugins:
|
|
21774
|
-
excludePlugins: u ? u.map((e) =>
|
|
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:
|
|
21846
|
-
function
|
|
21847
|
-
let e =
|
|
21848
|
-
if (!e) throw Error(`Mesurer injection target not found: ${
|
|
21849
|
-
return globalThis.__MESURER_INSTANCE__?.dispose(),
|
|
21850
|
-
...
|
|
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:
|
|
21881
|
+
globalName: OC,
|
|
21854
21882
|
root: document
|
|
21855
21883
|
}
|
|
21856
21884
|
});
|
|
21857
21885
|
}
|
|
21858
|
-
var
|
|
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
|
-
},
|
|
21878
|
-
globalThis.__MESURER_INSTANCE__ =
|
|
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 {
|
|
21908
|
+
export { IC as mesurer };
|