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/index.js
CHANGED
|
@@ -7717,23 +7717,29 @@ function _u(e) {
|
|
|
7717
7717
|
}, s = (t) => {
|
|
7718
7718
|
o?.setEnabled(e.id, t);
|
|
7719
7719
|
};
|
|
7720
|
-
var c = X("div", { class: "msr:relative" }), l = X("div", { class: "msr:grid msr:h-7 msr:w-full msr:grid-cols-[minmax(0,1fr)_28px_34px] msr:items-center msr:hover:bg-ink-50" }), u = X("
|
|
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,36 +20516,36 @@ var Yx = "0.2.1-beta.12", Xx = Np, Zx = Pp, Qx = () => ({
|
|
|
20488
20516
|
width: r - t,
|
|
20489
20517
|
height: i - n
|
|
20490
20518
|
};
|
|
20491
|
-
},
|
|
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
|
//#endregion
|
|
20519
20547
|
//#region ../mesurer-core/dist/events.js
|
|
20520
|
-
function
|
|
20548
|
+
function cS() {
|
|
20521
20549
|
let e = /* @__PURE__ */ new Map();
|
|
20522
20550
|
return {
|
|
20523
20551
|
on(t, n) {
|
|
@@ -20535,12 +20563,12 @@ function sS() {
|
|
|
20535
20563
|
}
|
|
20536
20564
|
};
|
|
20537
20565
|
}
|
|
20538
|
-
({ ...
|
|
20566
|
+
({ ...oS }), { ...sS };
|
|
20539
20567
|
//#endregion
|
|
20540
20568
|
//#region ../mesurer-core/dist/plugins.js
|
|
20541
|
-
var
|
|
20542
|
-
function
|
|
20543
|
-
let e = 1, t = 0, n =
|
|
20569
|
+
var lS = 50;
|
|
20570
|
+
function uS() {
|
|
20571
|
+
let e = 1, t = 0, n = cS(), r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Map(), p = [], m = [], h = (e, t) => {
|
|
20544
20572
|
n.emit("changed", {
|
|
20545
20573
|
pluginId: e,
|
|
20546
20574
|
reason: t
|
|
@@ -20603,15 +20631,15 @@ function lS() {
|
|
|
20603
20631
|
}
|
|
20604
20632
|
if (o && s) {
|
|
20605
20633
|
let e = y("history");
|
|
20606
|
-
x(s, e) || (p.push(s), p.length >
|
|
20634
|
+
x(s, e) || (p.push(s), p.length > lS && p.shift(), m.length = 0);
|
|
20607
20635
|
}
|
|
20608
20636
|
return l;
|
|
20609
20637
|
}, w = () => {
|
|
20610
20638
|
let e = p.pop();
|
|
20611
|
-
return e ? (m.push(y("history")), m.length >
|
|
20639
|
+
return e ? (m.push(y("history")), m.length > lS && m.shift(), b(e, "history"), h(void 0, "history"), !0) : !1;
|
|
20612
20640
|
}, T = () => {
|
|
20613
20641
|
let e = m.pop();
|
|
20614
|
-
return e ? (p.push(y("history")), p.length >
|
|
20642
|
+
return e ? (p.push(y("history")), p.length > lS && p.shift(), b(e, "history"), h(void 0, "history"), !0) : !1;
|
|
20615
20643
|
}, E = async (e, t) => {
|
|
20616
20644
|
for (let n of [...l.values()].filter((t) => t.name === e)) await n.handler(t);
|
|
20617
20645
|
}, D = (e) => [...u.values()].reverse().find((t) => t.id === e)?.value, O = {
|
|
@@ -20768,8 +20796,8 @@ function lS() {
|
|
|
20768
20796
|
}
|
|
20769
20797
|
//#endregion
|
|
20770
20798
|
//#region ../mesurer-core/dist/runtime.js
|
|
20771
|
-
async function
|
|
20772
|
-
let t =
|
|
20799
|
+
async function dS(e = {}) {
|
|
20800
|
+
let t = uS();
|
|
20773
20801
|
try {
|
|
20774
20802
|
for (let n of e.plugins ?? []) await t.load(n);
|
|
20775
20803
|
return t;
|
|
@@ -20779,17 +20807,17 @@ async function uS(e = {}) {
|
|
|
20779
20807
|
}
|
|
20780
20808
|
//#endregion
|
|
20781
20809
|
//#region src/context.ts
|
|
20782
|
-
var
|
|
20810
|
+
var fS = 10, pS = (e) => ({
|
|
20783
20811
|
left: e.left,
|
|
20784
20812
|
top: e.top,
|
|
20785
20813
|
width: e.width,
|
|
20786
20814
|
height: e.height
|
|
20787
|
-
}),
|
|
20815
|
+
}), mS = (e) => {
|
|
20788
20816
|
let t = /* @__PURE__ */ new Set(), n = [];
|
|
20789
20817
|
for (let r of e) !r?.isConnected || t.has(r) || (t.add(r), n.push(r));
|
|
20790
20818
|
return n;
|
|
20791
|
-
},
|
|
20792
|
-
function
|
|
20819
|
+
}, hS = (e) => e.crypto?.randomUUID?.() ?? `${Date.now()}-${Math.random().toString(36).slice(2)}`;
|
|
20820
|
+
function gS(e) {
|
|
20793
20821
|
let { runtime: t, ownerDocument: n, ownerWindow: r } = e, i = e.request ?? { scope: "workspace" }, a = t.snapshot();
|
|
20794
20822
|
if (!a) throw Error("Mesurer workspace is not ready yet.");
|
|
20795
20823
|
let o = [], s = [], c = { kind: "workspace" }, l = /* @__PURE__ */ new Map();
|
|
@@ -20797,7 +20825,7 @@ function hS(e) {
|
|
|
20797
20825
|
let e = t.annotation(i.annotation);
|
|
20798
20826
|
if (!e) throw Error(`Mesurer annotation not found: ${i.annotation}`);
|
|
20799
20827
|
for (let t of e.resolvedTargets) t.element?.isConnected && l.set(t.element, t.target.id);
|
|
20800
|
-
o =
|
|
20828
|
+
o = mS(e.resolvedTargets.map((e) => e.element));
|
|
20801
20829
|
let n = t.annotationRect(e.id);
|
|
20802
20830
|
n && (s = [n]);
|
|
20803
20831
|
let r = e.resolvedTargets.length, a = e.resolvedTargets.filter((e) => e.element?.isConnected).length, u = e.anchor.kind === "region" ? "connected" : r === 0 || a === 0 ? "stale" : a === r ? "connected" : "partial";
|
|
@@ -20809,15 +20837,15 @@ function hS(e) {
|
|
|
20809
20837
|
};
|
|
20810
20838
|
} else if (i.scope === "selection") {
|
|
20811
20839
|
let e = t.currentSelection();
|
|
20812
|
-
if (o =
|
|
20813
|
-
s = e.region ? [e.region] : o.map((e) =>
|
|
20814
|
-
} else o =
|
|
20840
|
+
if (o = mS(e.elements), !o.length && !e.region) throw Error("Mesurer has no current selection.");
|
|
20841
|
+
s = e.region ? [e.region] : o.map((e) => pS(e.getBoundingClientRect())), c = { kind: "selection" };
|
|
20842
|
+
} else o = mS([
|
|
20815
20843
|
...t.currentSelection().elements,
|
|
20816
20844
|
...a.measurements.map((e) => e.elementRef),
|
|
20817
20845
|
a.activeMeasurement?.elementRef,
|
|
20818
20846
|
...a.heldDistances.flatMap((e) => [e.elementRefA, e.elementRefB])
|
|
20819
20847
|
]);
|
|
20820
|
-
let u = c.kind === "workspace" ? [] : s.length ? s : o.map((e) =>
|
|
20848
|
+
let u = c.kind === "workspace" ? [] : s.length ? s : o.map((e) => pS(e.getBoundingClientRect())), d = aS({
|
|
20821
20849
|
workspace: {
|
|
20822
20850
|
guides: a.guides,
|
|
20823
20851
|
measurements: a.measurements,
|
|
@@ -20829,8 +20857,8 @@ function hS(e) {
|
|
|
20829
20857
|
elements: o,
|
|
20830
20858
|
regions: u
|
|
20831
20859
|
},
|
|
20832
|
-
guideTolerance: a.guideRelevanceTolerance ??
|
|
20833
|
-
}), f = d.measurements, p = d.distances, m = d.guides, h =
|
|
20860
|
+
guideTolerance: a.guideRelevanceTolerance ?? fS
|
|
20861
|
+
}), f = d.measurements, p = d.distances, m = d.guides, h = mS([
|
|
20834
20862
|
...o,
|
|
20835
20863
|
...f.map((e) => e.elementRef),
|
|
20836
20864
|
...p.flatMap((e) => [e.elementRefA, e.elementRefB])
|
|
@@ -20842,12 +20870,12 @@ function hS(e) {
|
|
|
20842
20870
|
let t = l.get(e) ?? y();
|
|
20843
20871
|
return g.set(e, t), {
|
|
20844
20872
|
ref: t,
|
|
20845
|
-
inspection:
|
|
20873
|
+
inspection: Kx(e)
|
|
20846
20874
|
};
|
|
20847
20875
|
}), x = f.map((e) => {
|
|
20848
20876
|
let t = {
|
|
20849
20877
|
id: e.id,
|
|
20850
|
-
rect:
|
|
20878
|
+
rect: pS(e.rect),
|
|
20851
20879
|
deltaX: e.deltaX,
|
|
20852
20880
|
deltaY: e.deltaY
|
|
20853
20881
|
};
|
|
@@ -20857,8 +20885,8 @@ function hS(e) {
|
|
|
20857
20885
|
}), S = p.map((e) => {
|
|
20858
20886
|
let t = {
|
|
20859
20887
|
id: e.id,
|
|
20860
|
-
rectA:
|
|
20861
|
-
rectB:
|
|
20888
|
+
rectA: pS(e.rectA),
|
|
20889
|
+
rectB: pS(e.rectB),
|
|
20862
20890
|
horizontal: e.horizontal ? { ...e.horizontal } : null,
|
|
20863
20891
|
vertical: e.vertical ? { ...e.vertical } : null
|
|
20864
20892
|
}, n = e.elementRefA ? g.get(e.elementRefA) : void 0, r = e.elementRefB ? g.get(e.elementRefB) : void 0;
|
|
@@ -20866,7 +20894,7 @@ function hS(e) {
|
|
|
20866
20894
|
});
|
|
20867
20895
|
return {
|
|
20868
20896
|
schema: "mesurer.context/v1",
|
|
20869
|
-
id:
|
|
20897
|
+
id: hS(r),
|
|
20870
20898
|
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
20871
20899
|
scope: c,
|
|
20872
20900
|
page: {
|
|
@@ -20881,7 +20909,7 @@ function hS(e) {
|
|
|
20881
20909
|
scrollY: r.scrollY
|
|
20882
20910
|
},
|
|
20883
20911
|
coordinateSpace: "viewport-css-px",
|
|
20884
|
-
regions: c.kind === "workspace" ? [] : s.map(
|
|
20912
|
+
regions: c.kind === "workspace" ? [] : s.map(pS),
|
|
20885
20913
|
visualState: {
|
|
20886
20914
|
rulersVisible: a.rulersVisible,
|
|
20887
20915
|
xrayVisible: a.xrayVisible
|
|
@@ -20895,48 +20923,48 @@ function hS(e) {
|
|
|
20895
20923
|
}
|
|
20896
20924
|
};
|
|
20897
20925
|
}
|
|
20898
|
-
var
|
|
20899
|
-
function
|
|
20926
|
+
var _S = (e) => `${Math.round(e * 100) / 100}px`, vS = (e) => `x=${_S(e.left)} y=${_S(e.top)} w=${_S(e.width)} h=${_S(e.height)}`;
|
|
20927
|
+
function yS(e) {
|
|
20900
20928
|
let t = [
|
|
20901
20929
|
"Mesurer visual context",
|
|
20902
20930
|
"",
|
|
20903
20931
|
`Page: ${e.page.url}`,
|
|
20904
20932
|
`Viewport: ${e.viewport.width} × ${e.viewport.height} CSS px; scroll x=${e.viewport.scrollX} y=${e.viewport.scrollY}`
|
|
20905
20933
|
];
|
|
20906
|
-
if (e.scope.kind === "annotation" ? t.push("", "Annotation", e.scope.note, `Target status: ${e.scope.targetStatus}`) : t.push("", `Scope: ${e.scope.kind}`), e.regions.length && (t.push("", "Requested regions"), e.regions.forEach((e, n) => t.push(`- region-${n + 1}: ${
|
|
20934
|
+
if (e.scope.kind === "annotation" ? t.push("", "Annotation", e.scope.note, `Target status: ${e.scope.targetStatus}`) : t.push("", `Scope: ${e.scope.kind}`), e.regions.length && (t.push("", "Requested regions"), e.regions.forEach((e, n) => t.push(`- region-${n + 1}: ${vS(e)}`))), (e.visualState.rulersVisible || e.visualState.xrayVisible) && t.push("", `Visual state: rulers=${e.visualState.rulersVisible ? "on" : "off"}; x-ray=${e.visualState.xrayVisible ? "on" : "off"}`), e.targets.length) {
|
|
20907
20935
|
t.push("", "Targets");
|
|
20908
20936
|
for (let n of e.targets) {
|
|
20909
20937
|
let e = n.inspection;
|
|
20910
|
-
t.push(`[${n.ref}] ${e.selector}`, ` rect: ${
|
|
20938
|
+
t.push(`[${n.ref}] ${e.selector}`, ` rect: ${vS(e.rect)}`, ` margin: ${_S(e.margin.top)} ${_S(e.margin.right)} ${_S(e.margin.bottom)} ${_S(e.margin.left)}`, ` padding: ${_S(e.padding.top)} ${_S(e.padding.right)} ${_S(e.padding.bottom)} ${_S(e.padding.left)}`, ` layout: display=${e.layout.display}; position=${e.layout.position}; gap=${e.layout.gap}`, ` typography: ${e.typography.fontSize} / ${e.typography.lineHeight}; weight=${e.typography.fontWeight}; align=${e.typography.textAlign}`), e.text && t.push(` text: ${JSON.stringify(e.text)}`);
|
|
20911
20939
|
}
|
|
20912
20940
|
}
|
|
20913
20941
|
if (e.visualContext.guides.length) {
|
|
20914
20942
|
t.push("", "Relevant guides");
|
|
20915
|
-
for (let n of e.visualContext.guides) t.push(`- ${n.orientation} ${n.orientation === "vertical" ? "x" : "y"}=${
|
|
20943
|
+
for (let n of e.visualContext.guides) t.push(`- ${n.orientation} ${n.orientation === "vertical" ? "x" : "y"}=${_S(n.position)}`);
|
|
20916
20944
|
}
|
|
20917
20945
|
if (e.visualContext.layoutGuides.length) {
|
|
20918
20946
|
t.push("", "Layout guides");
|
|
20919
20947
|
for (let n of e.visualContext.layoutGuides) {
|
|
20920
20948
|
if (!n.visible) continue;
|
|
20921
|
-
let e = n.kind === "grid" ? `grid ${
|
|
20949
|
+
let e = n.kind === "grid" ? `grid ${_S(n.size)}` : `${n.count} ${n.kind}; gutter=${_S(n.gutter)}; offset=${_S(n.offset)}; align=${n.align}`;
|
|
20922
20950
|
t.push(`- ${e}; color=${n.color}; opacity=${Math.round(n.opacity * 100)}%`);
|
|
20923
20951
|
}
|
|
20924
20952
|
}
|
|
20925
20953
|
if (e.visualContext.measurements.length) {
|
|
20926
20954
|
t.push("", "Relevant measurements");
|
|
20927
|
-
for (let n of e.visualContext.measurements) t.push(`- ${n.targetRef ? `${n.targetRef}: ` : ""}${
|
|
20955
|
+
for (let n of e.visualContext.measurements) t.push(`- ${n.targetRef ? `${n.targetRef}: ` : ""}${vS(n.rect)}; delta=${_S(n.deltaX)} × ${_S(n.deltaY)}`);
|
|
20928
20956
|
}
|
|
20929
20957
|
if (e.visualContext.distances.length) {
|
|
20930
20958
|
t.push("", "Relevant distances");
|
|
20931
20959
|
for (let n of e.visualContext.distances) {
|
|
20932
|
-
let e = [n.targetARef, n.targetBRef].filter(Boolean).join(" → "), r = [n.horizontal ? `horizontal=${
|
|
20960
|
+
let e = [n.targetARef, n.targetBRef].filter(Boolean).join(" → "), r = [n.horizontal ? `horizontal=${_S(n.horizontal.value)}` : null, n.vertical ? `vertical=${_S(n.vertical.value)}` : null].filter(Boolean).join("; ");
|
|
20933
20961
|
t.push(`- ${e ? `${e}: ` : ""}${r || "overlapping"}`);
|
|
20934
20962
|
}
|
|
20935
20963
|
}
|
|
20936
20964
|
return t.join("\n").trimEnd();
|
|
20937
20965
|
}
|
|
20938
|
-
function
|
|
20939
|
-
let t =
|
|
20966
|
+
function bS(e) {
|
|
20967
|
+
let t = nS([
|
|
20940
20968
|
...e.regions,
|
|
20941
20969
|
...e.targets.map((e) => e.inspection.rect),
|
|
20942
20970
|
...e.visualContext.measurements.map((e) => e.rect),
|
|
@@ -20966,7 +20994,7 @@ function yS(e) {
|
|
|
20966
20994
|
captures: n
|
|
20967
20995
|
};
|
|
20968
20996
|
}
|
|
20969
|
-
var
|
|
20997
|
+
var xS = (e, t, n, r, i) => {
|
|
20970
20998
|
!Number.isFinite(r) || !Number.isFinite(i) || Math.abs(r - i) < .01 || e.push({
|
|
20971
20999
|
kind: t,
|
|
20972
21000
|
label: n,
|
|
@@ -20975,16 +21003,16 @@ var bS = (e, t, n, r, i) => {
|
|
|
20975
21003
|
delta: i - r,
|
|
20976
21004
|
unit: "px"
|
|
20977
21005
|
});
|
|
20978
|
-
},
|
|
21006
|
+
}, SS = (e, t, n, r) => e.push({
|
|
20979
21007
|
kind: "missing",
|
|
20980
21008
|
evidence: t,
|
|
20981
21009
|
id: n,
|
|
20982
21010
|
label: r
|
|
20983
|
-
}),
|
|
20984
|
-
function
|
|
21011
|
+
}), CS = (e, t) => Math.abs(e.left - t.left) < .01 && Math.abs(e.top - t.top) < .01 && Math.abs(e.width - t.width) < .01 && Math.abs(e.height - t.height) < .01;
|
|
21012
|
+
function wS(e) {
|
|
20985
21013
|
let t = e.runtime.annotation(e.annotationId);
|
|
20986
21014
|
if (!t) throw Error(`Mesurer annotation not found: ${e.annotationId}`);
|
|
20987
|
-
let n =
|
|
21015
|
+
let n = gS({
|
|
20988
21016
|
runtime: e.runtime,
|
|
20989
21017
|
ownerDocument: e.ownerDocument,
|
|
20990
21018
|
ownerWindow: e.ownerWindow,
|
|
@@ -20994,42 +21022,42 @@ function CS(e) {
|
|
|
20994
21022
|
if (n.scope.kind !== "annotation") throw Error("Mesurer annotation context invariant failed.");
|
|
20995
21023
|
let r = e.runtime.snapshot();
|
|
20996
21024
|
if (!r) throw Error("Mesurer workspace is not ready yet.");
|
|
20997
|
-
let i =
|
|
21025
|
+
let i = iS({
|
|
20998
21026
|
measurements: r.measurements,
|
|
20999
21027
|
activeMeasurement: r.activeMeasurement
|
|
21000
21028
|
}), a = [];
|
|
21001
21029
|
for (let e of t.baseline.targets) {
|
|
21002
21030
|
let t = n.targets.find((t) => t.ref === e.id);
|
|
21003
21031
|
if (!t) {
|
|
21004
|
-
|
|
21032
|
+
SS(a, "target", e.id, e.selector);
|
|
21005
21033
|
continue;
|
|
21006
21034
|
}
|
|
21007
|
-
|
|
21035
|
+
xS(a, "target-rect", `${t.inspection.selector} left`, e.rect.left, t.inspection.rect.left), xS(a, "target-rect", `${t.inspection.selector} top`, e.rect.top, t.inspection.rect.top), xS(a, "target-rect", `${t.inspection.selector} width`, e.rect.width, t.inspection.rect.width), xS(a, "target-rect", `${t.inspection.selector} height`, e.rect.height, t.inspection.rect.height);
|
|
21008
21036
|
}
|
|
21009
21037
|
for (let e of t.baseline.guides) {
|
|
21010
21038
|
let t = n.visualContext.guides.find((t) => t.id === e.id) ?? r.guides.find((t) => t.id === e.id);
|
|
21011
21039
|
if (!t) {
|
|
21012
|
-
|
|
21040
|
+
SS(a, "guide", e.id, `${e.orientation} guide ${e.id}`);
|
|
21013
21041
|
continue;
|
|
21014
21042
|
}
|
|
21015
|
-
|
|
21043
|
+
xS(a, "guide", `${e.orientation} guide ${e.id}`, e.position, t.position);
|
|
21016
21044
|
}
|
|
21017
21045
|
for (let e of t.baseline.measurements) {
|
|
21018
21046
|
let r = n.visualContext.measurements.find((t) => t.id === e.id) ?? i.find((t) => t.id === e.id);
|
|
21019
21047
|
if (!r) {
|
|
21020
|
-
let r = t.baseline.targets.find((t) =>
|
|
21021
|
-
r && n.targets.some((e) => e.ref === r.id) ||
|
|
21048
|
+
let r = t.baseline.targets.find((t) => CS(t.rect, e.rect));
|
|
21049
|
+
r && n.targets.some((e) => e.ref === r.id) || SS(a, "measurement", e.id, e.id);
|
|
21022
21050
|
continue;
|
|
21023
21051
|
}
|
|
21024
|
-
|
|
21052
|
+
xS(a, "measurement", `${e.id} width`, e.rect.width, r.rect.width), xS(a, "measurement", `${e.id} height`, e.rect.height, r.rect.height);
|
|
21025
21053
|
}
|
|
21026
21054
|
for (let e of t.baseline.distances) {
|
|
21027
21055
|
let t = n.visualContext.distances.find((t) => t.id === e.id) ?? r.heldDistances.find((t) => t.id === e.id);
|
|
21028
21056
|
if (!t) {
|
|
21029
|
-
|
|
21057
|
+
SS(a, "distance", e.id, e.id);
|
|
21030
21058
|
continue;
|
|
21031
21059
|
}
|
|
21032
|
-
e.horizontal && t.horizontal ?
|
|
21060
|
+
e.horizontal && t.horizontal ? xS(a, "distance", `${e.id} horizontal`, e.horizontal.value, t.horizontal.value) : e.horizontal && !t.horizontal && SS(a, "distance", e.id, `${e.id} horizontal`), e.vertical && t.vertical ? xS(a, "distance", `${e.id} vertical`, e.vertical.value, t.vertical.value) : e.vertical && !t.vertical && SS(a, "distance", e.id, `${e.id} vertical`);
|
|
21033
21061
|
}
|
|
21034
21062
|
return {
|
|
21035
21063
|
schema: "mesurer.review/v1",
|
|
@@ -21041,7 +21069,7 @@ function CS(e) {
|
|
|
21041
21069
|
changes: a
|
|
21042
21070
|
};
|
|
21043
21071
|
}
|
|
21044
|
-
async function
|
|
21072
|
+
async function TS(e, t, n) {
|
|
21045
21073
|
try {
|
|
21046
21074
|
if (t.navigator.clipboard?.writeText) {
|
|
21047
21075
|
await t.navigator.clipboard.writeText(n);
|
|
@@ -21055,43 +21083,43 @@ async function wS(e, t, n) {
|
|
|
21055
21083
|
}
|
|
21056
21084
|
//#endregion
|
|
21057
21085
|
//#region src/layout-guides.ts
|
|
21058
|
-
var
|
|
21086
|
+
var ES = Kv, DS = qv, OS = () => ({
|
|
21059
21087
|
...yy(),
|
|
21060
|
-
version:
|
|
21061
|
-
}),
|
|
21088
|
+
version: Xx
|
|
21089
|
+
}), kS = "mesurer.context", AS = "context:v1", jS = "mesurer.context.settings", MS = "context.ui", NS = "data-mesurer-direct-text-edit-active", PS = {
|
|
21062
21090
|
viewBox: "0 0 256 256",
|
|
21063
21091
|
paths: ["M216,32H88a8,8,0,0,0-8,8V80H40a8,8,0,0,0-8,8V216a8,8,0,0,0,8,8H168a8,8,0,0,0,8-8V176h40a8,8,0,0,0,8-8V40A8,8,0,0,0,216,32ZM160,208H48V96H160Zm48-48H176V88a8,8,0,0,0-8-8H96V48H208Z"]
|
|
21064
|
-
},
|
|
21092
|
+
}, FS = {
|
|
21065
21093
|
viewBox: "0 0 256 256",
|
|
21066
21094
|
paths: ["M152,40a8,8,0,0,1-8,8H112a8,8,0,0,1,0-16h32A8,8,0,0,1,152,40Zm-8,168H112a8,8,0,0,0,0,16h32a8,8,0,0,0,0-16ZM208,32H184a8,8,0,0,0,0,16h24V72a8,8,0,0,0,16,0V48A16,16,0,0,0,208,32Zm8,72a8,8,0,0,0-8,8v32a8,8,0,0,0,16,0V112A8,8,0,0,0,216,104Zm0,72a8,8,0,0,0-8,8v24H184a8,8,0,0,0,0,16h24a16,16,0,0,0,16-16V184A8,8,0,0,0,216,176ZM40,152a8,8,0,0,0,8-8V112a8,8,0,0,0-16,0v32A8,8,0,0,0,40,152Zm32,56H48V184a8,8,0,0,0-16,0v24a16,16,0,0,0,16,16H72a8,8,0,0,0,0-16ZM72,32H48A16,16,0,0,0,32,48V72a8,8,0,0,0,16,0V48H72a8,8,0,0,0,0-16Z"]
|
|
21067
|
-
},
|
|
21095
|
+
}, IS = {
|
|
21068
21096
|
viewBox: "0 0 256 256",
|
|
21069
21097
|
paths: ["M229.66,58.34l-32-32a8,8,0,0,0-11.32,0l-96,96A8,8,0,0,0,88,128v32a8,8,0,0,0,8,8h32a8,8,0,0,0,5.66-2.34l96-96A8,8,0,0,0,229.66,58.34ZM124.69,152H104V131.31l64-64L188.69,88ZM200,76.69,179.31,56,192,43.31,212.69,64ZM224,128v80a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V48A16,16,0,0,1,48,32h80a8,8,0,0,1,0,16H48V208H208V128a8,8,0,0,1,16,0Z"]
|
|
21070
|
-
},
|
|
21098
|
+
}, LS = async (e, t, n = 1) => {
|
|
21071
21099
|
await e.fonts?.ready;
|
|
21072
21100
|
for (let e = 0; e < Math.max(1, n); e += 1) await new Promise((e) => t.requestAnimationFrame(() => e()));
|
|
21073
|
-
},
|
|
21074
|
-
let i = async (i) =>
|
|
21101
|
+
}, RS = (e, t, n, r) => {
|
|
21102
|
+
let i = async (i) => gS({
|
|
21075
21103
|
runtime: e,
|
|
21076
21104
|
ownerDocument: t,
|
|
21077
21105
|
ownerWindow: n,
|
|
21078
21106
|
request: i,
|
|
21079
21107
|
layoutGuides: r()
|
|
21080
|
-
}), a = async (e) =>
|
|
21108
|
+
}), a = async (e) => yS(await i(e));
|
|
21081
21109
|
return {
|
|
21082
21110
|
context: i,
|
|
21083
21111
|
contextText: a,
|
|
21084
|
-
copyContext: async (e) =>
|
|
21112
|
+
copyContext: async (e) => TS(t, n, await a(e)),
|
|
21085
21113
|
select: async (r) => {
|
|
21086
21114
|
let a = Array.isArray(r) ? [...r] : [String(r)];
|
|
21087
|
-
return e.select(a), await
|
|
21115
|
+
return e.select(a), await LS(t, n), i({ scope: "selection" });
|
|
21088
21116
|
},
|
|
21089
21117
|
annotations: async () => e.annotations(),
|
|
21090
21118
|
removeAnnotation: async (r) => {
|
|
21091
|
-
e.removeAnnotation(r), await
|
|
21119
|
+
e.removeAnnotation(r), await LS(t, n);
|
|
21092
21120
|
},
|
|
21093
21121
|
review: async (i) => {
|
|
21094
|
-
if (await
|
|
21122
|
+
if (await LS(t, n), i) return wS({
|
|
21095
21123
|
runtime: e,
|
|
21096
21124
|
ownerDocument: t,
|
|
21097
21125
|
ownerWindow: n,
|
|
@@ -21099,7 +21127,7 @@ var TS = Kv, ES = qv, DS = () => ({
|
|
|
21099
21127
|
layoutGuides: r()
|
|
21100
21128
|
});
|
|
21101
21129
|
let a = r();
|
|
21102
|
-
return e.annotations().map((r) =>
|
|
21130
|
+
return e.annotations().map((r) => wS({
|
|
21103
21131
|
runtime: e,
|
|
21104
21132
|
ownerDocument: t,
|
|
21105
21133
|
ownerWindow: n,
|
|
@@ -21107,38 +21135,38 @@ var TS = Kv, ES = qv, DS = () => ({
|
|
|
21107
21135
|
layoutGuides: a
|
|
21108
21136
|
}));
|
|
21109
21137
|
},
|
|
21110
|
-
capturePlan: async (e) =>
|
|
21138
|
+
capturePlan: async (e) => bS(await i(e)),
|
|
21111
21139
|
prepareCapture: async () => {
|
|
21112
|
-
e.prepareCapture(), await
|
|
21140
|
+
e.prepareCapture(), await LS(t, n);
|
|
21113
21141
|
},
|
|
21114
21142
|
finishCapture: async () => {
|
|
21115
|
-
e.finishCapture(), await
|
|
21143
|
+
e.finishCapture(), await LS(t, n);
|
|
21116
21144
|
}
|
|
21117
21145
|
};
|
|
21118
|
-
},
|
|
21146
|
+
}, zS = (e) => {
|
|
21119
21147
|
let t = e.currentSelection();
|
|
21120
21148
|
return t.elements.length > 0 || t.region !== null;
|
|
21121
21149
|
};
|
|
21122
|
-
function
|
|
21150
|
+
function BS(e = {}) {
|
|
21123
21151
|
return {
|
|
21124
|
-
id:
|
|
21125
|
-
version:
|
|
21152
|
+
id: kS,
|
|
21153
|
+
version: Xx,
|
|
21126
21154
|
requires: ["runtime:solid"],
|
|
21127
|
-
provides: [
|
|
21155
|
+
provides: [AS],
|
|
21128
21156
|
setup(t) {
|
|
21129
21157
|
let n = t.service.get("runtime:solid");
|
|
21130
21158
|
if (!n) throw Error("Mesurer context plugin requires the renderer runtime service.");
|
|
21131
|
-
let r = n.createWorkspaceRuntime(
|
|
21132
|
-
t.service.provide(
|
|
21133
|
-
id:
|
|
21159
|
+
let r = n.createWorkspaceRuntime(kS), i = RS(r, n.ownerDocument, n.ownerWindow, () => t.service.get(DS)?.list() ?? []);
|
|
21160
|
+
t.service.provide(AS, i), t.state.register({
|
|
21161
|
+
id: jS,
|
|
21134
21162
|
initial: { ui: e.ui ?? !0 },
|
|
21135
21163
|
persist: !0
|
|
21136
21164
|
}), t.state.register({
|
|
21137
|
-
id:
|
|
21138
|
-
initial: { hasSelection:
|
|
21165
|
+
id: MS,
|
|
21166
|
+
initial: { hasSelection: zS(r) }
|
|
21139
21167
|
});
|
|
21140
|
-
let a = () => t.state.get("mesurer.context.settings")?.ui ?? !0, o = () => t.state.get(
|
|
21141
|
-
t.state.update(
|
|
21168
|
+
let a = () => t.state.get("mesurer.context.settings")?.ui ?? !0, o = () => t.state.get(MS)?.hasSelection === !0, s = (e) => {
|
|
21169
|
+
t.state.update(jS, (t) => ({
|
|
21142
21170
|
...t,
|
|
21143
21171
|
ui: e
|
|
21144
21172
|
}));
|
|
@@ -21152,12 +21180,12 @@ function zS(e = {}) {
|
|
|
21152
21180
|
region: e.region ? { ...e.region } : null
|
|
21153
21181
|
}, r.selectGestureActive() ? c?.abandonNoteComposer() : n && c?.closeNoteComposer();
|
|
21154
21182
|
let i = e.elements.length > 0 || e.region !== null;
|
|
21155
|
-
i !== (t.state.get(
|
|
21183
|
+
i !== (t.state.get(MS)?.hasSelection ?? !1) && t.state.update(MS, () => ({ hasSelection: i }));
|
|
21156
21184
|
});
|
|
21157
21185
|
t.command.register("context.copy", () => i.copyContext()), t.command.register("context.copy-selection", () => i.copyContext({ scope: "selection" }));
|
|
21158
21186
|
let g = () => {
|
|
21159
21187
|
let e = u?.element;
|
|
21160
|
-
e && (n.rendererRoot?.hasAttribute(
|
|
21188
|
+
e && (n.rendererRoot?.hasAttribute(NS) ? e.setAttribute(NS, "true") : e.removeAttribute(NS));
|
|
21161
21189
|
}, _ = () => {
|
|
21162
21190
|
d?.disconnect(), d = null, c = null, l?.(), l = null, u?.dispose(), u = null;
|
|
21163
21191
|
}, v = () => {
|
|
@@ -21166,7 +21194,7 @@ function zS(e = {}) {
|
|
|
21166
21194
|
let e = new n.ownerWindow.MutationObserver(g);
|
|
21167
21195
|
d = e, e.observe(n.rendererRoot, {
|
|
21168
21196
|
attributes: !0,
|
|
21169
|
-
attributeFilter: [
|
|
21197
|
+
attributeFilter: [NS]
|
|
21170
21198
|
}), g();
|
|
21171
21199
|
}
|
|
21172
21200
|
let e = {
|
|
@@ -21190,7 +21218,7 @@ function zS(e = {}) {
|
|
|
21190
21218
|
command: "context.copy",
|
|
21191
21219
|
order: 70,
|
|
21192
21220
|
toolbarMode: "always",
|
|
21193
|
-
icon:
|
|
21221
|
+
icon: PS,
|
|
21194
21222
|
hidden: () => !a()
|
|
21195
21223
|
}), t.tool.register({
|
|
21196
21224
|
id: "context.copy-selection",
|
|
@@ -21199,7 +21227,7 @@ function zS(e = {}) {
|
|
|
21199
21227
|
command: "context.copy-selection",
|
|
21200
21228
|
order: 71,
|
|
21201
21229
|
toolbarMode: "always",
|
|
21202
|
-
icon:
|
|
21230
|
+
icon: FS,
|
|
21203
21231
|
hidden: () => !a(),
|
|
21204
21232
|
disabled: () => !o()
|
|
21205
21233
|
}), t.tool.register({
|
|
@@ -21209,7 +21237,7 @@ function zS(e = {}) {
|
|
|
21209
21237
|
command: "context.add-note",
|
|
21210
21238
|
order: 72,
|
|
21211
21239
|
toolbarMode: "always",
|
|
21212
|
-
icon:
|
|
21240
|
+
icon: IS,
|
|
21213
21241
|
hidden: () => !a(),
|
|
21214
21242
|
disabled: () => !o()
|
|
21215
21243
|
}), t.settings.register({
|
|
@@ -21232,7 +21260,7 @@ function zS(e = {}) {
|
|
|
21232
21260
|
}
|
|
21233
21261
|
//#endregion
|
|
21234
21262
|
//#region src/host-layer.ts
|
|
21235
|
-
var
|
|
21263
|
+
var VS = {
|
|
21236
21264
|
display: "block",
|
|
21237
21265
|
position: "fixed",
|
|
21238
21266
|
inset: "0",
|
|
@@ -21274,48 +21302,48 @@ var BS = {
|
|
|
21274
21302
|
"letter-spacing": "normal",
|
|
21275
21303
|
direction: "ltr"
|
|
21276
21304
|
};
|
|
21277
|
-
function VS(e) {
|
|
21278
|
-
for (let [t, n] of Object.entries(BS)) e.style.setProperty(t, n, "important");
|
|
21279
|
-
}
|
|
21280
21305
|
function HS(e) {
|
|
21306
|
+
for (let [t, n] of Object.entries(VS)) e.style.setProperty(t, n, "important");
|
|
21307
|
+
}
|
|
21308
|
+
function US(e) {
|
|
21281
21309
|
return "popover" in e && "showPopover" in e && typeof e.showPopover == "function" && "hidePopover" in e && typeof e.hidePopover == "function";
|
|
21282
21310
|
}
|
|
21283
|
-
var
|
|
21284
|
-
function
|
|
21285
|
-
if (!
|
|
21311
|
+
var WS = (e) => "newState" in e, GS = (e) => e.localName === "dialog";
|
|
21312
|
+
function KS(e) {
|
|
21313
|
+
if (!GS(e) || !e.open) return !1;
|
|
21286
21314
|
try {
|
|
21287
21315
|
return e.matches(":modal");
|
|
21288
21316
|
} catch {
|
|
21289
21317
|
return !1;
|
|
21290
21318
|
}
|
|
21291
21319
|
}
|
|
21292
|
-
function
|
|
21293
|
-
|
|
21320
|
+
function qS(e, t, n = !0) {
|
|
21321
|
+
HS(e);
|
|
21294
21322
|
let r = e.ownerDocument, i = r.defaultView ?? window, a = t, o = !1, s = "fixed", c = !1, l = 0, u = [];
|
|
21295
|
-
if (n &&
|
|
21323
|
+
if (n && US(e) && (e.popover = "manual"), t.append(e), n && US(e)) try {
|
|
21296
21324
|
e.showPopover(), c = e.matches(":popover-open"), c && (s = "top-layer");
|
|
21297
21325
|
} catch {
|
|
21298
21326
|
e.removeAttribute("popover");
|
|
21299
21327
|
}
|
|
21300
21328
|
let d = () => {
|
|
21301
|
-
if (!(!c || !
|
|
21329
|
+
if (!(!c || !US(e))) try {
|
|
21302
21330
|
e.matches(":popover-open") || e.showPopover();
|
|
21303
21331
|
} catch {}
|
|
21304
21332
|
}, f = (t) => {
|
|
21305
21333
|
if (e.parentNode === t) return;
|
|
21306
|
-
let n = c &&
|
|
21307
|
-
if (n &&
|
|
21334
|
+
let n = c && US(e) && e.matches(":popover-open");
|
|
21335
|
+
if (n && US(e)) try {
|
|
21308
21336
|
e.hidePopover();
|
|
21309
21337
|
} catch {}
|
|
21310
|
-
t.append(e),
|
|
21338
|
+
t.append(e), HS(e), n && d();
|
|
21311
21339
|
}, p = () => {
|
|
21312
|
-
u = u.filter((e) => e.isConnected &&
|
|
21340
|
+
u = u.filter((e) => e.isConnected && KS(e)), f(u.at(-1) ?? a);
|
|
21313
21341
|
}, m = (e) => {
|
|
21314
21342
|
u = u.filter((t) => t !== e), u.push(e), p();
|
|
21315
21343
|
}, h = (e) => {
|
|
21316
21344
|
u = u.filter((t) => t !== e), p();
|
|
21317
21345
|
}, g = () => {
|
|
21318
|
-
if (!(o || !c || !
|
|
21346
|
+
if (!(o || !c || !US(e))) try {
|
|
21319
21347
|
e.matches(":popover-open") && e.hidePopover(), e.showPopover();
|
|
21320
21348
|
} catch {}
|
|
21321
21349
|
}, _ = () => {
|
|
@@ -21324,27 +21352,27 @@ function KS(e, t, n = !0) {
|
|
|
21324
21352
|
}));
|
|
21325
21353
|
}, v = (t) => {
|
|
21326
21354
|
if (!c || t.target === e) return;
|
|
21327
|
-
let n =
|
|
21355
|
+
let n = WS(t) ? t.newState : void 0, r = t.target;
|
|
21328
21356
|
if (r instanceof i.Element) {
|
|
21329
|
-
if (
|
|
21330
|
-
n === "open" &&
|
|
21357
|
+
if (GS(r)) {
|
|
21358
|
+
n === "open" && KS(r) ? (m(r), _()) : n === "closed" ? h(r) : n === "open" && _();
|
|
21331
21359
|
return;
|
|
21332
21360
|
}
|
|
21333
21361
|
n === "open" && r.hasAttribute("popover") && _();
|
|
21334
21362
|
}
|
|
21335
21363
|
}, y = (e) => {
|
|
21336
21364
|
let t = e.target;
|
|
21337
|
-
t instanceof i.Element &&
|
|
21365
|
+
t instanceof i.Element && GS(t) && h(t);
|
|
21338
21366
|
}, b = () => {
|
|
21339
21367
|
r.fullscreenElement && _();
|
|
21340
21368
|
}, x = (e) => {
|
|
21341
|
-
|
|
21342
|
-
for (let t of e.querySelectorAll("dialog"))
|
|
21369
|
+
KS(e) && m(e);
|
|
21370
|
+
for (let t of e.querySelectorAll("dialog")) KS(t) && m(t);
|
|
21343
21371
|
}, S = new i.MutationObserver((e) => {
|
|
21344
21372
|
if (c) for (let t of e) {
|
|
21345
21373
|
if (t.type === "attributes") {
|
|
21346
21374
|
let e = t.target;
|
|
21347
|
-
e instanceof i.Element &&
|
|
21375
|
+
e instanceof i.Element && GS(e) && (KS(e) ? m(e) : h(e));
|
|
21348
21376
|
}
|
|
21349
21377
|
for (let e of t.addedNodes) e instanceof i.Element && x(e);
|
|
21350
21378
|
u.some((e) => !e.isConnected) && p();
|
|
@@ -21360,7 +21388,7 @@ function KS(e, t, n = !0) {
|
|
|
21360
21388
|
bringToFront: g,
|
|
21361
21389
|
dispose() {
|
|
21362
21390
|
if (!o) {
|
|
21363
|
-
if (o = !0, l && i.cancelAnimationFrame(l), r.removeEventListener("toggle", v, !0), r.removeEventListener("close", y, !0), r.removeEventListener("fullscreenchange", b, !0), S.disconnect(), c &&
|
|
21391
|
+
if (o = !0, l && i.cancelAnimationFrame(l), r.removeEventListener("toggle", v, !0), r.removeEventListener("close", y, !0), r.removeEventListener("fullscreenchange", b, !0), S.disconnect(), c && US(e) && e.matches(":popover-open")) try {
|
|
21364
21392
|
e.hidePopover();
|
|
21365
21393
|
} catch {}
|
|
21366
21394
|
u = [];
|
|
@@ -21370,28 +21398,28 @@ function KS(e, t, n = !0) {
|
|
|
21370
21398
|
}
|
|
21371
21399
|
//#endregion
|
|
21372
21400
|
//#region src/plugins/codex/index.ts
|
|
21373
|
-
var
|
|
21401
|
+
var JS = "mesurer.codex", YS = "codex:v1", XS = "mesurer.plugin.before-disable", ZS = 2e3, QS = 750, $S = 1800, eC = 2e3, tC = 12e4, nC = 10, rC = 5, iC = "Codex host connection is unavailable. Electron apps must expose window.__MESURER_HOST__.codexBridge from preload.", aC = [
|
|
21374
21402
|
"Implement the current human feedback from Mesurer in this project.",
|
|
21375
21403
|
"Treat the rendered page as the source of truth, preserve unrelated Mesurer review state,",
|
|
21376
21404
|
"and verify the affected UI in the live page with Mesurer before claiming completion."
|
|
21377
|
-
].join(" "),
|
|
21405
|
+
].join(" "), oC = {
|
|
21378
21406
|
viewBox: "0 0 256 256",
|
|
21379
21407
|
paths: ["M224,48,32,120l88,32,32,88Z M120,152l104-104"]
|
|
21380
|
-
},
|
|
21408
|
+
}, sC = {
|
|
21381
21409
|
viewBox: "0 0 256 256",
|
|
21382
21410
|
paths: ["M72,32H184a8,8,0,0,1,0,16h-8v20.69a40,40,0,0,1-11.72,28.28L137.25,124l27.03,27.03A40,40,0,0,1,176,179.31V208h8a8,8,0,0,1,0,16H72a8,8,0,0,1,0-16h8V179.31a40,40,0,0,1,11.72-28.28L118.75,124,91.72,96.97A40,40,0,0,1,80,68.69V48H72a8,8,0,0,1,0-16Zm24,16V68.69a24,24,0,0,0,7.03,16.97L128,110.63l24.97-24.97A24,24,0,0,0,160,68.69V48Zm32,90.63-24.97,24.97A24,24,0,0,0,96,180.57V208h64V180.57a24,24,0,0,0-7.03-16.97Z"]
|
|
21383
|
-
},
|
|
21411
|
+
}, cC = {
|
|
21384
21412
|
viewBox: "0 0 256 256",
|
|
21385
21413
|
paths: ["M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z"]
|
|
21386
|
-
},
|
|
21414
|
+
}, lC = () => {
|
|
21387
21415
|
try {
|
|
21388
21416
|
let e = globalThis.location;
|
|
21389
21417
|
return e?.origin ? `mesurer-codex-ui:v2:${e.origin}${e.pathname}` : null;
|
|
21390
21418
|
} catch {
|
|
21391
21419
|
return null;
|
|
21392
21420
|
}
|
|
21393
|
-
},
|
|
21394
|
-
let e =
|
|
21421
|
+
}, uC = () => {
|
|
21422
|
+
let e = lC();
|
|
21395
21423
|
if (!e) return null;
|
|
21396
21424
|
try {
|
|
21397
21425
|
let t = globalThis.sessionStorage?.getItem(e);
|
|
@@ -21416,18 +21444,18 @@ var qS = "mesurer.codex", JS = "codex:v1", YS = "mesurer.plugin.before-disable",
|
|
|
21416
21444
|
} catch {
|
|
21417
21445
|
return null;
|
|
21418
21446
|
}
|
|
21419
|
-
},
|
|
21420
|
-
let t =
|
|
21447
|
+
}, dC = (e) => {
|
|
21448
|
+
let t = lC();
|
|
21421
21449
|
if (t) try {
|
|
21422
21450
|
globalThis.sessionStorage?.setItem(t, JSON.stringify(e));
|
|
21423
21451
|
} catch {}
|
|
21424
|
-
},
|
|
21452
|
+
}, fC = async (e) => {
|
|
21425
21453
|
let t = window.__MESURER_HOST__?.codexBridge;
|
|
21426
|
-
if (!t) throw Error(
|
|
21454
|
+
if (!t) throw Error(iC);
|
|
21427
21455
|
let n = await t(e);
|
|
21428
21456
|
if (n.ok === !1) throw Error(n.error ?? "Codex Bridge request failed.");
|
|
21429
21457
|
return n;
|
|
21430
|
-
},
|
|
21458
|
+
}, pC = (e) => {
|
|
21431
21459
|
let t = e.runtime;
|
|
21432
21460
|
return !t || ![
|
|
21433
21461
|
"shared",
|
|
@@ -21445,10 +21473,10 @@ var qS = "mesurer.codex", JS = "codex:v1", YS = "mesurer.plugin.before-disable",
|
|
|
21445
21473
|
available: t.available === !0,
|
|
21446
21474
|
reason: t.reason
|
|
21447
21475
|
};
|
|
21448
|
-
},
|
|
21476
|
+
}, mC = (e) => ({
|
|
21449
21477
|
thread: e.thread?.trim() || null,
|
|
21450
21478
|
threads: Array.isArray(e.threads) ? e.threads.filter((e) => e.trim().length > 0) : []
|
|
21451
|
-
}),
|
|
21479
|
+
}), hC = (e) => {
|
|
21452
21480
|
let t = e.deliveryId?.trim(), n = e.thread?.trim(), r = e.status;
|
|
21453
21481
|
if (!t || !n || !r) throw Error("Codex Bridge returned an invalid delivery state.");
|
|
21454
21482
|
let i = {
|
|
@@ -21460,7 +21488,7 @@ var qS = "mesurer.codex", JS = "codex:v1", YS = "mesurer.plugin.before-disable",
|
|
|
21460
21488
|
updatedAt: Number.isFinite(e.updatedAt) ? Number(e.updatedAt) : 0
|
|
21461
21489
|
};
|
|
21462
21490
|
return e.queuedSubmissionId !== void 0 && (i.queuedSubmissionId = e.queuedSubmissionId?.trim() || null), e.dispatch !== void 0 && (i.dispatch = e.dispatch), e.dispatchError !== void 0 && (i.dispatchError = e.dispatchError?.trim() || null), i;
|
|
21463
|
-
},
|
|
21491
|
+
}, gC = (e) => ({
|
|
21464
21492
|
thread: e.thread?.trim() || null,
|
|
21465
21493
|
threads: Array.isArray(e.threadDetails) ? e.threadDetails.flatMap((e) => {
|
|
21466
21494
|
let t = e.id?.trim() ?? "";
|
|
@@ -21472,7 +21500,7 @@ var qS = "mesurer.codex", JS = "codex:v1", YS = "mesurer.plugin.before-disable",
|
|
|
21472
21500
|
}] : [];
|
|
21473
21501
|
}) : [],
|
|
21474
21502
|
hasMore: e.hasMore === !0
|
|
21475
|
-
}),
|
|
21503
|
+
}), _C = async (e, t, n) => {
|
|
21476
21504
|
let r = t?.instruction?.trim() || n, i = await e.annotations(), a = t?.annotationIds, o = a ? a.flatMap((e) => {
|
|
21477
21505
|
let t = i.find((t) => t.id === e);
|
|
21478
21506
|
return t ? [t] : [];
|
|
@@ -21495,18 +21523,18 @@ var qS = "mesurer.codex", JS = "codex:v1", YS = "mesurer.plugin.before-disable",
|
|
|
21495
21523
|
])
|
|
21496
21524
|
].join("\n").trimEnd()
|
|
21497
21525
|
};
|
|
21498
|
-
},
|
|
21499
|
-
function
|
|
21500
|
-
let t = e.instruction?.trim() ||
|
|
21526
|
+
}, vC = (e) => e.length > 16 ? `${e.slice(0, 8)}…${e.slice(-4)}` : e, yC = (e, t = 42) => e.length > t ? `${e.slice(0, t - 1)}…` : e, bC = (e) => e instanceof Error && (e.message === iC || e.message === "Codex Bridge is unavailable in this host." || e.message.includes("Codex Bridge lease"));
|
|
21527
|
+
function xC(e = {}) {
|
|
21528
|
+
let t = e.instruction?.trim() || aC, n = e.ui ?? !0, r = e.clearCompletedAnnotations ?? !0;
|
|
21501
21529
|
return {
|
|
21502
|
-
id:
|
|
21503
|
-
version:
|
|
21504
|
-
requires: [
|
|
21505
|
-
provides: [
|
|
21530
|
+
id: JS,
|
|
21531
|
+
version: Xx,
|
|
21532
|
+
requires: [AS],
|
|
21533
|
+
provides: [YS],
|
|
21506
21534
|
async setup(e) {
|
|
21507
|
-
let i = e.service.get(
|
|
21535
|
+
let i = e.service.get(AS);
|
|
21508
21536
|
if (!i) throw Error("Mesurer Codex plugin requires context() from mesurer-solid/plugins.");
|
|
21509
|
-
let a = n ?
|
|
21537
|
+
let a = n ? uC() : null, o = "unknown", s = null, c = !1, l = a?.originThread ?? null, u = a?.selectedThread ?? a?.originThread ?? null, d = !1, f = null, p = [], m = [], h = !1, g = rC, _, v = "", y = null, b = a?.delivery ? {
|
|
21510
21538
|
id: a.delivery.id,
|
|
21511
21539
|
thread: a.delivery.thread,
|
|
21512
21540
|
status: a.delivery.status,
|
|
@@ -21515,38 +21543,38 @@ function bC(e = {}) {
|
|
|
21515
21543
|
dispatch: a.delivery.dispatch ?? null,
|
|
21516
21544
|
dispatchError: a.delivery.dispatchError ?? null
|
|
21517
21545
|
} : null, x = 0, S = 0, C = null, w = !1, T = null, E = async (e) => {
|
|
21518
|
-
if (e.action === "activate" || e.action === "runtime") return
|
|
21546
|
+
if (e.action === "activate" || e.action === "runtime") return fC(e);
|
|
21519
21547
|
if (!T) throw Error("Codex Bridge lease is not active for this plugin.");
|
|
21520
|
-
return
|
|
21548
|
+
return fC({
|
|
21521
21549
|
...e,
|
|
21522
21550
|
leaseId: T
|
|
21523
21551
|
});
|
|
21524
21552
|
}, D = async () => {
|
|
21525
21553
|
let e = T;
|
|
21526
21554
|
if (e) {
|
|
21527
|
-
if ((await
|
|
21555
|
+
if ((await fC({
|
|
21528
21556
|
action: "deactivate",
|
|
21529
21557
|
leaseId: e
|
|
21530
21558
|
})).released !== !0) throw Error("Codex Bridge did not confirm lease release.");
|
|
21531
21559
|
T = null;
|
|
21532
21560
|
}
|
|
21533
|
-
}, O = await
|
|
21561
|
+
}, O = await fC({
|
|
21534
21562
|
action: "activate",
|
|
21535
21563
|
thread: u ?? l ?? void 0
|
|
21536
21564
|
}), k = O.leaseId?.trim();
|
|
21537
21565
|
if (!k) throw Error("Codex Bridge did not return an activation lease.");
|
|
21538
|
-
T = k, o = "available", s =
|
|
21539
|
-
let A =
|
|
21566
|
+
T = k, o = "available", s = pC(O);
|
|
21567
|
+
let A = mC(O);
|
|
21540
21568
|
c = !0, f = A.thread, p = A.threads, e.lifecycle.onDispose(() => {
|
|
21541
21569
|
T && D().catch((e) => {
|
|
21542
21570
|
let t = e instanceof Error ? e.message : String(e);
|
|
21543
21571
|
console.error(`[Mesurer] Failed to release Codex host lease: ${t}`);
|
|
21544
21572
|
});
|
|
21545
|
-
}), e.hook.on(
|
|
21573
|
+
}), e.hook.on(XS, async (e) => {
|
|
21546
21574
|
e === "mesurer.codex" && await D();
|
|
21547
21575
|
});
|
|
21548
21576
|
let j = async () => {
|
|
21549
|
-
let e =
|
|
21577
|
+
let e = pC(await E({ action: "runtime" }));
|
|
21550
21578
|
if (!e) throw Error("Codex Bridge returned an invalid runtime state.");
|
|
21551
21579
|
return s = e, e;
|
|
21552
21580
|
}, M = async () => {
|
|
@@ -21554,8 +21582,8 @@ function bC(e = {}) {
|
|
|
21554
21582
|
action: "health",
|
|
21555
21583
|
thread: u ?? l ?? void 0
|
|
21556
21584
|
});
|
|
21557
|
-
return s =
|
|
21558
|
-
}, N = M, P = async (e) =>
|
|
21585
|
+
return s = pC(e) ?? s, mC(e);
|
|
21586
|
+
}, N = M, P = async (e) => hC(await E({
|
|
21559
21587
|
action: "delivery",
|
|
21560
21588
|
deliveryId: e
|
|
21561
21589
|
})), F = async (e) => {
|
|
@@ -21565,13 +21593,13 @@ function bC(e = {}) {
|
|
|
21565
21593
|
deliveryId: e.id,
|
|
21566
21594
|
thread: e.thread
|
|
21567
21595
|
};
|
|
21568
|
-
return e.queuedSubmissionId && (t.queuedSubmissionId = e.queuedSubmissionId),
|
|
21596
|
+
return e.queuedSubmissionId && (t.queuedSubmissionId = e.queuedSubmissionId), hC(await E(t));
|
|
21569
21597
|
}, I = async (e = {}) => {
|
|
21570
21598
|
let t = {
|
|
21571
21599
|
action: "threads",
|
|
21572
|
-
limit: e.limit ??
|
|
21600
|
+
limit: e.limit ?? nC
|
|
21573
21601
|
}, n = e.thread?.trim();
|
|
21574
|
-
return n && (t.thread = n),
|
|
21602
|
+
return n && (t.thread = n), gC(await E(t));
|
|
21575
21603
|
}, L = () => u ?? l ?? (d ? null : f), R = () => {
|
|
21576
21604
|
if (!n) return;
|
|
21577
21605
|
let e = b?.id && (b.status === "queued" || b.status === "working" || b.status === "interrupted") ? {
|
|
@@ -21583,7 +21611,7 @@ function bC(e = {}) {
|
|
|
21583
21611
|
dispatch: b.dispatch,
|
|
21584
21612
|
dispatchError: b.dispatchError
|
|
21585
21613
|
} : null;
|
|
21586
|
-
|
|
21614
|
+
dC({
|
|
21587
21615
|
version: 1,
|
|
21588
21616
|
originThread: l,
|
|
21589
21617
|
selectedThread: u,
|
|
@@ -21601,12 +21629,12 @@ function bC(e = {}) {
|
|
|
21601
21629
|
"queueing",
|
|
21602
21630
|
"queued",
|
|
21603
21631
|
"working"
|
|
21604
|
-
].includes(b.status) ?
|
|
21632
|
+
].includes(b.status) ? sC : b.status === "completed" ? cC : oC : oC, W = () => {
|
|
21605
21633
|
let e = [], t = /* @__PURE__ */ new Set(), n = (n) => {
|
|
21606
21634
|
t.has(n.id) || (t.add(n.id), e.push(n));
|
|
21607
21635
|
}, r = (e) => ({
|
|
21608
21636
|
id: e,
|
|
21609
|
-
title: `Codex ${
|
|
21637
|
+
title: `Codex ${vC(e)}`,
|
|
21610
21638
|
updatedAt: null,
|
|
21611
21639
|
connected: !0
|
|
21612
21640
|
});
|
|
@@ -21634,7 +21662,7 @@ function bC(e = {}) {
|
|
|
21634
21662
|
let t = e.id === l ? "Current · " : e.connected ? "Loaded · " : "", r = b?.thread === e.id ? ` · ${V(b.status)}` : "";
|
|
21635
21663
|
return {
|
|
21636
21664
|
id: `codex.thread.${e.id}`,
|
|
21637
|
-
label: `${t}${
|
|
21665
|
+
label: `${t}${yC(e.title)}${r}`,
|
|
21638
21666
|
checked: () => n === e.id,
|
|
21639
21667
|
disabled: () => B(),
|
|
21640
21668
|
run() {
|
|
@@ -21642,15 +21670,15 @@ function bC(e = {}) {
|
|
|
21642
21670
|
}
|
|
21643
21671
|
};
|
|
21644
21672
|
});
|
|
21645
|
-
return g <
|
|
21673
|
+
return g < nC && (e.length > g || h) && r.push({
|
|
21646
21674
|
id: "codex.thread.show-more",
|
|
21647
21675
|
label: "Show 5 more…",
|
|
21648
21676
|
run() {
|
|
21649
|
-
g =
|
|
21677
|
+
g = nC, G();
|
|
21650
21678
|
}
|
|
21651
21679
|
}), b?.queuedSubmissionId && b.status === "queued" && (b.dispatch === "desktop-opened" || b.dispatch === "desktop-wake-failed") && r.push({
|
|
21652
21680
|
id: "codex.delivery.receipt",
|
|
21653
|
-
label: `Receipt · ${
|
|
21681
|
+
label: `Receipt · ${vC(b.queuedSubmissionId)}`,
|
|
21654
21682
|
disabled: () => !0,
|
|
21655
21683
|
run: () => void 0
|
|
21656
21684
|
}), r;
|
|
@@ -21687,7 +21715,7 @@ function bC(e = {}) {
|
|
|
21687
21715
|
}, ne = async (e) => {
|
|
21688
21716
|
if (o !== "available") return;
|
|
21689
21717
|
let t = await I({
|
|
21690
|
-
limit:
|
|
21718
|
+
limit: nC,
|
|
21691
21719
|
thread: e ?? void 0
|
|
21692
21720
|
});
|
|
21693
21721
|
m = t.threads, h = t.hasMore, p = t.threads.filter((e) => e.connected).map((e) => e.id), f = t.thread;
|
|
@@ -21709,7 +21737,7 @@ function bC(e = {}) {
|
|
|
21709
21737
|
}, ie = () => {
|
|
21710
21738
|
S && globalThis.clearTimeout(S), S = globalThis.setTimeout(() => {
|
|
21711
21739
|
S = 0, b?.status === "completed" && (b = null, R(), G());
|
|
21712
|
-
},
|
|
21740
|
+
}, $S);
|
|
21713
21741
|
}, ae = async (e) => {
|
|
21714
21742
|
if (!(!b || b.id !== e.id)) {
|
|
21715
21743
|
if (b = {
|
|
@@ -21731,14 +21759,14 @@ function bC(e = {}) {
|
|
|
21731
21759
|
if (e.status === "interrupted") {
|
|
21732
21760
|
R(), G();
|
|
21733
21761
|
let t = e.updatedAt > 0 ? e.updatedAt : Date.now();
|
|
21734
|
-
Date.now() - t <
|
|
21762
|
+
Date.now() - t < tC && (x = globalThis.setTimeout(() => {
|
|
21735
21763
|
x = 0, oe(e.id);
|
|
21736
|
-
},
|
|
21764
|
+
}, eC));
|
|
21737
21765
|
return;
|
|
21738
21766
|
}
|
|
21739
21767
|
G(), x = globalThis.setTimeout(() => {
|
|
21740
21768
|
x = 0, oe(e.id);
|
|
21741
|
-
},
|
|
21769
|
+
}, QS);
|
|
21742
21770
|
}
|
|
21743
21771
|
}, oe = async (e) => {
|
|
21744
21772
|
if (!(w || b?.id !== e)) try {
|
|
@@ -21762,7 +21790,7 @@ function bC(e = {}) {
|
|
|
21762
21790
|
b = {
|
|
21763
21791
|
...b,
|
|
21764
21792
|
status: "failed"
|
|
21765
|
-
}, R(),
|
|
21793
|
+
}, R(), bC(n) && (o = "unavailable"), G();
|
|
21766
21794
|
}
|
|
21767
21795
|
}, se = {
|
|
21768
21796
|
health: M,
|
|
@@ -21774,11 +21802,11 @@ function bC(e = {}) {
|
|
|
21774
21802
|
let n = await E({
|
|
21775
21803
|
action: "target",
|
|
21776
21804
|
thread: t
|
|
21777
|
-
}), r =
|
|
21778
|
-
return s =
|
|
21805
|
+
}), r = mC(n);
|
|
21806
|
+
return s = pC(n) ?? s, z(t, !l), f = r.thread, p = r.threads, o = "available", c = !0, G(), r;
|
|
21779
21807
|
},
|
|
21780
21808
|
async queue(e) {
|
|
21781
|
-
let r = await
|
|
21809
|
+
let r = await _C(i, e, t), a = e?.thread?.trim(), s = a || (n ? L() : null);
|
|
21782
21810
|
if (n && !a && (d || !s)) throw Error("Choose a Codex thread before queueing feedback.");
|
|
21783
21811
|
let c = { message: r.message };
|
|
21784
21812
|
s && (c.thread = s);
|
|
@@ -21798,14 +21826,14 @@ function bC(e = {}) {
|
|
|
21798
21826
|
};
|
|
21799
21827
|
return e.queuedSubmissionId !== void 0 && (n.queuedSubmissionId = e.queuedSubmissionId?.trim() || null), e.dispatch !== void 0 && (n.dispatch = e.dispatch), e.dispatchError !== void 0 && (n.dispatchError = e.dispatchError?.trim() || null), n;
|
|
21800
21828
|
} catch (e) {
|
|
21801
|
-
throw n &&
|
|
21829
|
+
throw n && bC(e) && (o = "unavailable", G()), e;
|
|
21802
21830
|
}
|
|
21803
21831
|
},
|
|
21804
21832
|
send(e) {
|
|
21805
21833
|
return se.queue(e);
|
|
21806
21834
|
}
|
|
21807
21835
|
};
|
|
21808
|
-
e.service.provide(
|
|
21836
|
+
e.service.provide(YS, se);
|
|
21809
21837
|
let ce = async () => {
|
|
21810
21838
|
if (!(C || B())) return re(), b = {
|
|
21811
21839
|
id: null,
|
|
@@ -21836,9 +21864,9 @@ function bC(e = {}) {
|
|
|
21836
21864
|
updatedAt: 0
|
|
21837
21865
|
}) : x = globalThis.setTimeout(() => {
|
|
21838
21866
|
x = 0, oe(e.deliveryId);
|
|
21839
|
-
},
|
|
21867
|
+
}, QS) : S = globalThis.setTimeout(() => {
|
|
21840
21868
|
S = 0, b?.id === null && b?.status === "queued" && (b = null, R(), G());
|
|
21841
|
-
},
|
|
21869
|
+
}, $S);
|
|
21842
21870
|
} catch (e) {
|
|
21843
21871
|
b = null, R(), G();
|
|
21844
21872
|
let t = e instanceof Error ? e.message : String(e);
|
|
@@ -21866,7 +21894,7 @@ function bC(e = {}) {
|
|
|
21866
21894
|
}, 0));
|
|
21867
21895
|
let t = globalThis.setInterval(() => {
|
|
21868
21896
|
c && ee().catch(() => void 0);
|
|
21869
|
-
},
|
|
21897
|
+
}, ZS);
|
|
21870
21898
|
e.lifecycle.onDispose(() => {
|
|
21871
21899
|
w = !0, re(), globalThis.clearInterval(t), _?.dispose(), _ = void 0;
|
|
21872
21900
|
});
|
|
@@ -21876,64 +21904,64 @@ function bC(e = {}) {
|
|
|
21876
21904
|
}
|
|
21877
21905
|
//#endregion
|
|
21878
21906
|
//#region src/recording.ts
|
|
21879
|
-
var
|
|
21907
|
+
var SC = vb, CC = (e = {}) => ({
|
|
21880
21908
|
...Bb(e),
|
|
21881
|
-
version:
|
|
21882
|
-
}),
|
|
21883
|
-
...
|
|
21884
|
-
version:
|
|
21885
|
-
}),
|
|
21909
|
+
version: Xx
|
|
21910
|
+
}), wC = $b, TC = (e = {}) => ({
|
|
21911
|
+
...yx(e),
|
|
21912
|
+
version: Xx
|
|
21913
|
+
}), EC = () => globalThis.window?.__MESURER_HOST__?.codexBridge !== void 0, DC = [
|
|
21886
21914
|
{
|
|
21887
|
-
id:
|
|
21915
|
+
id: kS,
|
|
21888
21916
|
label: "Context",
|
|
21889
21917
|
order: 30,
|
|
21890
|
-
create:
|
|
21918
|
+
create: BS,
|
|
21891
21919
|
settingsIds: ["context"],
|
|
21892
21920
|
hiddenSettingsControlIds: ["ui"]
|
|
21893
21921
|
},
|
|
21894
21922
|
{
|
|
21895
|
-
id:
|
|
21923
|
+
id: Zx,
|
|
21896
21924
|
label: "Edit",
|
|
21897
21925
|
order: 35,
|
|
21898
|
-
create:
|
|
21926
|
+
create: $x,
|
|
21899
21927
|
settingsIds: ["arrange"]
|
|
21900
21928
|
},
|
|
21901
21929
|
{
|
|
21902
|
-
id:
|
|
21930
|
+
id: ES,
|
|
21903
21931
|
label: "Layout Guides",
|
|
21904
21932
|
order: 38,
|
|
21905
|
-
create:
|
|
21933
|
+
create: OS
|
|
21906
21934
|
},
|
|
21907
21935
|
{
|
|
21908
|
-
id:
|
|
21936
|
+
id: wC,
|
|
21909
21937
|
label: "Screenshot",
|
|
21910
21938
|
order: 40,
|
|
21911
|
-
create:
|
|
21939
|
+
create: TC,
|
|
21912
21940
|
settingsIds: ["screenshot"],
|
|
21913
21941
|
hiddenSettingsControlIds: ["tool"]
|
|
21914
21942
|
},
|
|
21915
21943
|
{
|
|
21916
|
-
id:
|
|
21944
|
+
id: SC,
|
|
21917
21945
|
label: "Recording",
|
|
21918
21946
|
order: 42,
|
|
21919
|
-
create:
|
|
21947
|
+
create: CC,
|
|
21920
21948
|
settingsIds: ["recording"],
|
|
21921
21949
|
hiddenSettingsControlIds: ["tool"]
|
|
21922
21950
|
},
|
|
21923
21951
|
{
|
|
21924
|
-
id:
|
|
21952
|
+
id: JS,
|
|
21925
21953
|
label: "Codex",
|
|
21926
21954
|
order: 45,
|
|
21927
|
-
create:
|
|
21955
|
+
create: xC
|
|
21928
21956
|
}
|
|
21929
|
-
],
|
|
21930
|
-
let t = e !== void 0, n = new Map((e ?? []).map((e) => [e.id, e])), r = new Set(
|
|
21957
|
+
], OC = (e) => {
|
|
21958
|
+
let t = e !== void 0, n = new Map((e ?? []).map((e) => [e.id, e])), r = new Set(DC.map((e) => e.id)), i = DC.map((e) => {
|
|
21931
21959
|
let r = n.get(e.id);
|
|
21932
21960
|
return {
|
|
21933
21961
|
...e,
|
|
21934
21962
|
settingsIds: e.settingsIds ? [...e.settingsIds] : void 0,
|
|
21935
21963
|
hiddenSettingsControlIds: e.hiddenSettingsControlIds ? [...e.hiddenSettingsControlIds] : void 0,
|
|
21936
|
-
enabled: t ? !!r : e.id === "mesurer.codex" ?
|
|
21964
|
+
enabled: t ? !!r : e.id === "mesurer.codex" ? EC() : e.enabled !== !1,
|
|
21937
21965
|
create: r ? () => r : e.create
|
|
21938
21966
|
};
|
|
21939
21967
|
});
|
|
@@ -21944,16 +21972,16 @@ var xC = vb, SC = (e = {}) => ({
|
|
|
21944
21972
|
create: () => n
|
|
21945
21973
|
});
|
|
21946
21974
|
return i;
|
|
21947
|
-
},
|
|
21948
|
-
function
|
|
21949
|
-
return
|
|
21975
|
+
}, kC = (e) => e;
|
|
21976
|
+
function AC() {
|
|
21977
|
+
return uS();
|
|
21950
21978
|
}
|
|
21951
|
-
async function
|
|
21952
|
-
return
|
|
21979
|
+
async function jC(e = {}) {
|
|
21980
|
+
return dS(e);
|
|
21953
21981
|
}
|
|
21954
21982
|
//#endregion
|
|
21955
21983
|
//#region src/index.tsx
|
|
21956
|
-
var
|
|
21984
|
+
var MC = {
|
|
21957
21985
|
select: "select",
|
|
21958
21986
|
xray: "xray",
|
|
21959
21987
|
colorPicker: "color-picker",
|
|
@@ -21963,14 +21991,14 @@ var jC = {
|
|
|
21963
21991
|
distance: "distance",
|
|
21964
21992
|
settings: "settings"
|
|
21965
21993
|
};
|
|
21966
|
-
function
|
|
21994
|
+
function NC(e = {}) {
|
|
21967
21995
|
if (!("document" in globalThis)) throw Error("mountMesurer() requires a browser or Electron renderer document.");
|
|
21968
21996
|
let { target: t = document.body, isolate: n = !0, shadowMode: r = "open", topLayer: i = !0, agent: a = !1, signal: o, onPluginHost: s, onPluginsReady: c, plugins: l, excludeBuiltins: u, excludePlugins: d, ...f } = e;
|
|
21969
21997
|
if (o?.aborted) throw o.reason ?? new DOMException("Mesurer mount aborted.", "AbortError");
|
|
21970
21998
|
if (!t) throw Error("mountMesurer() requires document.body to exist or an explicit target.");
|
|
21971
21999
|
let p = t.ownerDocument ?? document, m = p.defaultView ?? window, h = p.createElement("div");
|
|
21972
22000
|
h.dataset.mesurerIsland = "true";
|
|
21973
|
-
let g =
|
|
22001
|
+
let g = qS(h, t, i), _ = h, v = h, y = h;
|
|
21974
22002
|
if (n) {
|
|
21975
22003
|
let e = h.attachShadow({ mode: r });
|
|
21976
22004
|
v = p.createElement("div"), v.dataset.mesurerIslandMount = "true", e.append(v), _ = e, y = e;
|
|
@@ -21981,7 +22009,7 @@ function MC(e = {}) {
|
|
|
21981
22009
|
C = e, w = t;
|
|
21982
22010
|
});
|
|
21983
22011
|
D.catch(() => void 0), O.catch(() => void 0);
|
|
21984
|
-
let k = async () => (await (b ? Promise.resolve(b) : D), O), A = a === !0 ? {} : a === !1 ? null : a, j =
|
|
22012
|
+
let k = async () => (await (b ? Promise.resolve(b) : D), O), A = a === !0 ? {} : a === !1 ? null : a, j = Yx({
|
|
21985
22013
|
ownerDocument: p,
|
|
21986
22014
|
root: A?.root ?? (t.nodeType === 11 ? t : p),
|
|
21987
22015
|
getPluginHost: () => b,
|
|
@@ -21993,12 +22021,12 @@ function MC(e = {}) {
|
|
|
21993
22021
|
return t;
|
|
21994
22022
|
}, N = async () => {
|
|
21995
22023
|
await j.ready();
|
|
21996
|
-
let e = b?.service.get(
|
|
22024
|
+
let e = b?.service.get(AS);
|
|
21997
22025
|
if (!e) throw Error("Mesurer Context is disabled. Enable it in Settings or include context() in plugins.");
|
|
21998
22026
|
return e;
|
|
21999
22027
|
}, P = async () => {
|
|
22000
22028
|
await j.ready();
|
|
22001
|
-
let e = b?.service.get(
|
|
22029
|
+
let e = b?.service.get(eS);
|
|
22002
22030
|
if (!e) throw Error("Mesurer Edit is disabled. Enable it in Settings or include edit() in plugins.");
|
|
22003
22031
|
return e;
|
|
22004
22032
|
}, F = async (e) => (await N()).context(e), I = async (e) => (await N()).contextText(e), L = async (e) => (await N()).copyContext(e), R = async (e) => (await N()).select(e), z = async () => (await N()).annotations(), B = async (e) => (await N()).review(e), V = async (e) => (await N()).capturePlan(e), H = async () => (await N()).prepareCapture(), U = async () => (await N()).finishCapture(), W = async () => (await P()).intents(), ee = async (e) => {
|
|
@@ -22009,7 +22037,7 @@ function MC(e = {}) {
|
|
|
22009
22037
|
(await P()).show(e, t);
|
|
22010
22038
|
}, G = async (e, t) => (await P()).capturePlan(e, t), ne = async (e, t) => (await P()).review(e, t), re = () => j.textEdits(), ie = (e) => j.textEdit(e), ae = Object.assign(j, {
|
|
22011
22039
|
capabilities: () => {
|
|
22012
|
-
let e = !!b?.service.get(
|
|
22040
|
+
let e = !!b?.service.get(AS);
|
|
22013
22041
|
return {
|
|
22014
22042
|
protocol: "mesurer.agent/v1",
|
|
22015
22043
|
contextSchema: "mesurer.context/v1",
|
|
@@ -22019,8 +22047,8 @@ function MC(e = {}) {
|
|
|
22019
22047
|
annotations: e,
|
|
22020
22048
|
review: e,
|
|
22021
22049
|
capturePlan: e,
|
|
22022
|
-
arrange: !!b?.service.get(
|
|
22023
|
-
textEdit: !!b?.service.get(
|
|
22050
|
+
arrange: !!b?.service.get(eS),
|
|
22051
|
+
textEdit: !!b?.service.get(qx)
|
|
22024
22052
|
}
|
|
22025
22053
|
};
|
|
22026
22054
|
},
|
|
@@ -22039,9 +22067,9 @@ function MC(e = {}) {
|
|
|
22039
22067
|
reviewArrange: ne
|
|
22040
22068
|
}), oe = {
|
|
22041
22069
|
...f,
|
|
22042
|
-
version:
|
|
22043
|
-
plugins:
|
|
22044
|
-
excludePlugins: u ? u.map((e) =>
|
|
22070
|
+
version: Xx,
|
|
22071
|
+
plugins: OC(l),
|
|
22072
|
+
excludePlugins: u ? u.map((e) => MC[e]) : [...d ?? []]
|
|
22045
22073
|
}, se = Oi(() => Yr(rv, Di(oe, {
|
|
22046
22074
|
portalTarget: y,
|
|
22047
22075
|
pageTarget: t,
|
|
@@ -22110,6 +22138,6 @@ function MC(e = {}) {
|
|
|
22110
22138
|
}
|
|
22111
22139
|
return me;
|
|
22112
22140
|
}
|
|
22113
|
-
var
|
|
22141
|
+
var PC = NC;
|
|
22114
22142
|
//#endregion
|
|
22115
|
-
export {
|
|
22143
|
+
export { qx as MESURER_TEXT_EDIT_SERVICE_ID, Xx as MESURER_VERSION, gS as captureMesurerContext, TS as copyTextToClipboard, Yx as createMesurerAgentHarness, bS as createMesurerCapturePlan, AC as createMesurerPluginHost, jC as createMesurerRuntime, kC as defineMesurerPlugin, yS as formatMesurerContext, PC as mountMeasurer, NC as mountMesurer, wS as reviewMesurerAnnotation };
|