mesurer-solid 0.2.1-beta.12 → 0.2.1-beta.14
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 +535 -497
- package/dist/inject-script.js +9 -9
- package/dist/inject.js +530 -492
- package/dist/plugins.js +576 -554
- 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;
|
|
@@ -8458,13 +8464,17 @@ function Hu(e) {
|
|
|
8458
8464
|
}), Ne = X("div", {
|
|
8459
8465
|
class: "mesurer-toolbar-mode-slot",
|
|
8460
8466
|
"data-mode": "edit"
|
|
8461
|
-
}), Pe = X("div", { class: "mesurer-toolbar-mode-panel" }), Fe = X("div", {
|
|
8467
|
+
}), Pe = X("div", { class: "mesurer-toolbar-mode-panel" }), Fe = X("div", {
|
|
8468
|
+
role: "group",
|
|
8469
|
+
"aria-label": "Shared guide tools",
|
|
8470
|
+
class: "msr:flex msr:items-stretch msr:py-1"
|
|
8471
|
+
}), Ie = X("div", { class: "msr:flex msr:items-stretch msr:px-0.5 msr:py-1" }), Le = X("div", { class: "msr:flex msr:items-center msr:p-1" }), Re = X("button", {
|
|
8462
8472
|
type: "button",
|
|
8463
8473
|
"data-mesurer-toolbar-compact-toggle": "true",
|
|
8464
8474
|
class: "msr:flex msr:size-7 msr:select-none msr:items-center msr:justify-center msr:rounded-[7px] msr:text-black msr:outline-none msr:hover:bg-black/4",
|
|
8465
8475
|
onClick: be
|
|
8466
8476
|
});
|
|
8467
|
-
return Z(De, Oe), Z(De, Fe), Z(De, Ie), aa(() => (e) => {
|
|
8477
|
+
return Z(De, Oe), Z(De, Fe), Z(De, Ie), Z(De, Le), aa(() => (e) => {
|
|
8468
8478
|
g = e;
|
|
8469
8479
|
}, De), Q(De, Y(Bu, {
|
|
8470
8480
|
get value() {
|
|
@@ -8577,24 +8587,6 @@ function Hu(e) {
|
|
|
8577
8587
|
}
|
|
8578
8588
|
});
|
|
8579
8589
|
}
|
|
8580
|
-
}), null), Q(Me, Y(Ru, {
|
|
8581
|
-
get visible() {
|
|
8582
|
-
return ne(L(), !0);
|
|
8583
|
-
},
|
|
8584
|
-
get children() {
|
|
8585
|
-
return Y(Lu, ra({
|
|
8586
|
-
id: "rulers",
|
|
8587
|
-
builtin: "rulers",
|
|
8588
|
-
get active() {
|
|
8589
|
-
return L();
|
|
8590
|
-
},
|
|
8591
|
-
label: "Rulers",
|
|
8592
|
-
shortcut: "R",
|
|
8593
|
-
onClick: () => e.onBuiltinAction("rulers")
|
|
8594
|
-
}, () => we("rulers"), { get children() {
|
|
8595
|
-
return Y(Gl, { size: 20 });
|
|
8596
|
-
} }));
|
|
8597
|
-
}
|
|
8598
8590
|
}), null), Q(Me, Y(Ru, {
|
|
8599
8591
|
get visible() {
|
|
8600
8592
|
return ne(R());
|
|
@@ -8616,7 +8608,63 @@ function Hu(e) {
|
|
|
8616
8608
|
return Y(Yl, { size: 20 });
|
|
8617
8609
|
} }));
|
|
8618
8610
|
}
|
|
8619
|
-
}), null), Q(
|
|
8611
|
+
}), null), Q(je, Y(q, {
|
|
8612
|
+
get when() {
|
|
8613
|
+
return U().length > 0;
|
|
8614
|
+
},
|
|
8615
|
+
get children() {
|
|
8616
|
+
return [Y(zu, { marker: "select-plugins" }), (() => {
|
|
8617
|
+
var e = X("div", {
|
|
8618
|
+
role: "group",
|
|
8619
|
+
"aria-label": "Select plugin tools",
|
|
8620
|
+
class: "msr:flex msr:items-stretch msr:px-0.5 msr:py-1"
|
|
8621
|
+
});
|
|
8622
|
+
return Q(e, Y(Zr, {
|
|
8623
|
+
get each() {
|
|
8624
|
+
return U();
|
|
8625
|
+
},
|
|
8626
|
+
children: (e) => Ee(e, e.compactPinned ?? !1)
|
|
8627
|
+
})), e;
|
|
8628
|
+
})()];
|
|
8629
|
+
}
|
|
8630
|
+
}), null), Z(Ne, Pe), aa(() => (e) => {
|
|
8631
|
+
x = e;
|
|
8632
|
+
}, Pe), Q(Pe, Y(q, {
|
|
8633
|
+
get when() {
|
|
8634
|
+
return W().length > 0;
|
|
8635
|
+
},
|
|
8636
|
+
get children() {
|
|
8637
|
+
var e = X("div", {
|
|
8638
|
+
role: "group",
|
|
8639
|
+
"aria-label": "Edit tools",
|
|
8640
|
+
class: "msr:flex msr:items-stretch msr:px-0.5 msr:py-1"
|
|
8641
|
+
});
|
|
8642
|
+
return Q(e, Y(Zr, {
|
|
8643
|
+
get each() {
|
|
8644
|
+
return W();
|
|
8645
|
+
},
|
|
8646
|
+
children: (e) => Ee(e)
|
|
8647
|
+
})), e;
|
|
8648
|
+
}
|
|
8649
|
+
})), Q(Fe, Y(Ru, {
|
|
8650
|
+
get visible() {
|
|
8651
|
+
return ne(L(), !0);
|
|
8652
|
+
},
|
|
8653
|
+
get children() {
|
|
8654
|
+
return Y(Lu, ra({
|
|
8655
|
+
id: "rulers",
|
|
8656
|
+
builtin: "rulers",
|
|
8657
|
+
get active() {
|
|
8658
|
+
return L();
|
|
8659
|
+
},
|
|
8660
|
+
label: "Rulers",
|
|
8661
|
+
shortcut: "R",
|
|
8662
|
+
onClick: () => e.onBuiltinAction("rulers")
|
|
8663
|
+
}, () => we("rulers"), { get children() {
|
|
8664
|
+
return Y(Gl, { size: 20 });
|
|
8665
|
+
} }));
|
|
8666
|
+
}
|
|
8667
|
+
}), null), Q(Fe, Y(Ru, {
|
|
8620
8668
|
get visible() {
|
|
8621
8669
|
return ne(z(), !0);
|
|
8622
8670
|
},
|
|
@@ -8716,45 +8764,7 @@ function Hu(e) {
|
|
|
8716
8764
|
}), t;
|
|
8717
8765
|
})()];
|
|
8718
8766
|
}
|
|
8719
|
-
}), null), Q(
|
|
8720
|
-
get when() {
|
|
8721
|
-
return U().length > 0;
|
|
8722
|
-
},
|
|
8723
|
-
get children() {
|
|
8724
|
-
return [Y(zu, { marker: "select-plugins" }), (() => {
|
|
8725
|
-
var e = X("div", {
|
|
8726
|
-
role: "group",
|
|
8727
|
-
"aria-label": "Select plugin tools",
|
|
8728
|
-
class: "msr:flex msr:items-stretch msr:px-0.5 msr:py-1"
|
|
8729
|
-
});
|
|
8730
|
-
return Q(e, Y(Zr, {
|
|
8731
|
-
get each() {
|
|
8732
|
-
return U();
|
|
8733
|
-
},
|
|
8734
|
-
children: (e) => Ee(e, e.compactPinned ?? !1)
|
|
8735
|
-
})), e;
|
|
8736
|
-
})()];
|
|
8737
|
-
}
|
|
8738
|
-
}), null), Z(Ne, Pe), aa(() => (e) => {
|
|
8739
|
-
x = e;
|
|
8740
|
-
}, Pe), Q(Pe, Y(q, {
|
|
8741
|
-
get when() {
|
|
8742
|
-
return W().length > 0;
|
|
8743
|
-
},
|
|
8744
|
-
get children() {
|
|
8745
|
-
var e = X("div", {
|
|
8746
|
-
role: "group",
|
|
8747
|
-
"aria-label": "Edit tools",
|
|
8748
|
-
class: "msr:flex msr:items-stretch msr:px-0.5 msr:py-1"
|
|
8749
|
-
});
|
|
8750
|
-
return Q(e, Y(Zr, {
|
|
8751
|
-
get each() {
|
|
8752
|
-
return W();
|
|
8753
|
-
},
|
|
8754
|
-
children: (e) => Ee(e)
|
|
8755
|
-
})), e;
|
|
8756
|
-
}
|
|
8757
|
-
})), Q(De, Y(q, {
|
|
8767
|
+
}), null), Q(De, Y(q, {
|
|
8758
8768
|
get when() {
|
|
8759
8769
|
return ee().length > 0;
|
|
8760
8770
|
},
|
|
@@ -8778,7 +8788,7 @@ function Hu(e) {
|
|
|
8778
8788
|
})), e;
|
|
8779
8789
|
})()];
|
|
8780
8790
|
}
|
|
8781
|
-
}),
|
|
8791
|
+
}), Ie), Q(Ie, Y(Ru, {
|
|
8782
8792
|
get visible() {
|
|
8783
8793
|
return ne(B());
|
|
8784
8794
|
},
|
|
@@ -8849,7 +8859,7 @@ function Hu(e) {
|
|
|
8849
8859
|
return ie();
|
|
8850
8860
|
},
|
|
8851
8861
|
marker: "compact"
|
|
8852
|
-
}),
|
|
8862
|
+
}), Le), Z(Le, Re), Q(Re, Y(Kl, {
|
|
8853
8863
|
size: 10,
|
|
8854
8864
|
get class() {
|
|
8855
8865
|
return d() ? "msr:-rotate-90" : "msr:rotate-90";
|
|
@@ -8872,7 +8882,7 @@ function Hu(e) {
|
|
|
8872
8882
|
u: d() ? "Expand toolbar" : "Compact toolbar",
|
|
8873
8883
|
c: d() ? "true" : "false"
|
|
8874
8884
|
}), ({ e, t, a: n, o: r, i, n: a, s: o, h: s, r: c, d: l, l: u, u: d, c: f }, p) => {
|
|
8875
|
-
e !== p?.e && $(De, "data-mesurer-toolbar-compact", e, p?.e), t !== p?.t && $(De, "data-mesurer-toolbar-mode", t, p?.t), n !== p?.a && $(De, "style", n, p?.a), r !== p?.o && $(De, "onMouseLeave", r, p?.o), i !== p?.i && $(Oe, "data-mode", i, p?.i), a !== p?.n && $(Ae, "data-open", a, p?.n), o !== p?.s && $(Ae, "aria-hidden", o, p?.s), s !== p?.h && $(Ae, "inert", s, p?.h), c !== p?.r && $(Ne, "data-open", c, p?.r), l !== p?.d && $(Ne, "aria-hidden", l, p?.d), u !== p?.l && $(Ne, "inert", u, p?.l), d !== p?.u && $(
|
|
8885
|
+
e !== p?.e && $(De, "data-mesurer-toolbar-compact", e, p?.e), t !== p?.t && $(De, "data-mesurer-toolbar-mode", t, p?.t), n !== p?.a && $(De, "style", n, p?.a), r !== p?.o && $(De, "onMouseLeave", r, p?.o), i !== p?.i && $(Oe, "data-mode", i, p?.i), a !== p?.n && $(Ae, "data-open", a, p?.n), o !== p?.s && $(Ae, "aria-hidden", o, p?.s), s !== p?.h && $(Ae, "inert", s, p?.h), c !== p?.r && $(Ne, "data-open", c, p?.r), l !== p?.d && $(Ne, "aria-hidden", l, p?.d), u !== p?.l && $(Ne, "inert", u, p?.l), d !== p?.u && $(Re, "aria-label", d, p?.u), f !== p?.c && $(Re, "aria-pressed", f, p?.c);
|
|
8876
8886
|
}), De;
|
|
8877
8887
|
}
|
|
8878
8888
|
var Uu = (e) => Number.parseFloat(e) || 0, Wu = 0, Gu = (e, t) => {
|
|
@@ -10290,7 +10300,7 @@ function pp(e) {
|
|
|
10290
10300
|
}
|
|
10291
10301
|
};
|
|
10292
10302
|
}
|
|
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) => {
|
|
10303
|
+
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
10304
|
try {
|
|
10295
10305
|
let n = e.sessionStorage.getItem(`${t}:toolbar-position`);
|
|
10296
10306
|
if (!n) return;
|
|
@@ -12159,7 +12169,7 @@ function Um(e, t) {
|
|
|
12159
12169
|
c = !1, l = !1;
|
|
12160
12170
|
return;
|
|
12161
12171
|
}
|
|
12162
|
-
if (n === "select") {
|
|
12172
|
+
if (n === "select" || n === "guides") {
|
|
12163
12173
|
c = !1, l = !1;
|
|
12164
12174
|
return;
|
|
12165
12175
|
}
|
|
@@ -12171,7 +12181,7 @@ function Um(e, t) {
|
|
|
12171
12181
|
}));
|
|
12172
12182
|
}, d = () => {
|
|
12173
12183
|
let e = t.currentToolMode?.();
|
|
12174
|
-
s === "select" && e !== void 0 && e !== "select" && (l = !0), s = e, u();
|
|
12184
|
+
(s === "select" || s === "guides") && e !== void 0 && e !== "select" && e !== "guides" && (l = !0), s = e, u();
|
|
12175
12185
|
}, f = () => {
|
|
12176
12186
|
let t = e.state.get("mesurer.arrange.active") ?? !1;
|
|
12177
12187
|
t && !o && (c = !0), o = t, u();
|
|
@@ -15735,7 +15745,7 @@ function rv(e) {
|
|
|
15735
15745
|
xrayVisible: t?.current.xrayVisible ?? !1,
|
|
15736
15746
|
rulersVisible: t?.current.rulersVisible ?? !1,
|
|
15737
15747
|
pluginToolIds: r
|
|
15738
|
-
}, e && t && (t.current.xrayVisible && e.deactivate("xray"), t.current.
|
|
15748
|
+
}, e && t && (t.current.xrayVisible && e.deactivate("xray"), t.current.colorPickerActive && e.deactivate("color-picker"), t.current.toolMode === "text-inspector" && e.deactivate("text-inspector"));
|
|
15739
15749
|
for (let e of r) {
|
|
15740
15750
|
let t = n.tools().find((t) => t.id === e);
|
|
15741
15751
|
!t || !(t.active?.() ?? !1) || await n.command.execute(t.command, void 0, {
|
|
@@ -15934,7 +15944,7 @@ function rv(e) {
|
|
|
15934
15944
|
let t = g?.current;
|
|
15935
15945
|
return t ? e === "select" ? t.toolMode === "select" : e === "xray" ? t.xrayVisible : e === "color-picker" ? t.colorPickerActive : e === "rulers" ? t.rulersVisible : e === "text-inspector" ? t.toolMode === "text-inspector" : e === "guides" ? t.toolMode === "guides" : e === "settings" && t.settingsOpen : !1;
|
|
15936
15946
|
}, Se = async (e) => {
|
|
15937
|
-
if (D(e) || e !== "settings" && E() && (await F("select-mode-builtin"), e === "select" || xe(e))) return;
|
|
15947
|
+
if (D(e) || e !== "settings" && e !== "rulers" && e !== "guides" && E() && (await F("select-mode-builtin"), e === "select" || xe(e))) return;
|
|
15938
15948
|
let t = w(e);
|
|
15939
15949
|
if (t) {
|
|
15940
15950
|
await L(t, {
|
|
@@ -15943,7 +15953,13 @@ function rv(e) {
|
|
|
15943
15953
|
});
|
|
15944
15954
|
return;
|
|
15945
15955
|
}
|
|
15946
|
-
T(e)
|
|
15956
|
+
if (!T(e)) return;
|
|
15957
|
+
let n = ee();
|
|
15958
|
+
if (e === "guides" && E() && xe("guides")) {
|
|
15959
|
+
await n.run("select");
|
|
15960
|
+
return;
|
|
15961
|
+
}
|
|
15962
|
+
await n.run(e);
|
|
15947
15963
|
};
|
|
15948
15964
|
(async () => {
|
|
15949
15965
|
for (let e of s) await me(e);
|
|
@@ -17624,7 +17640,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
17624
17640
|
shortcut: "L",
|
|
17625
17641
|
command: Zv,
|
|
17626
17642
|
order: 38,
|
|
17627
|
-
toolbarMode: "
|
|
17643
|
+
toolbarMode: "always",
|
|
17628
17644
|
compactPinned: !0,
|
|
17629
17645
|
icon: vy,
|
|
17630
17646
|
active: u
|
|
@@ -18618,6 +18634,8 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
18618
18634
|
position: "fixed",
|
|
18619
18635
|
display: "none",
|
|
18620
18636
|
background: "transparent",
|
|
18637
|
+
outline: "2px solid var(--msr-accent, #0d99ff)",
|
|
18638
|
+
"outline-offset": "-1px",
|
|
18621
18639
|
"box-shadow": "0 0 0 100vmax rgb(0 0 0 / 40%)",
|
|
18622
18640
|
"pointer-events": "none"
|
|
18623
18641
|
}), h.append(_);
|
|
@@ -19423,14 +19441,14 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19423
19441
|
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
19442
|
});
|
|
19425
19443
|
}
|
|
19426
|
-
}), Vb = 144, Hb = 96, Ub = 8, Wb = 4, Gb = 1800, Kb = (e, t) => {
|
|
19444
|
+
}), Vb = 144, Hb = 96, Ub = 8, Wb = 4, Gb = 1800, Kb = 200, qb = (e, t) => {
|
|
19427
19445
|
for (let [n, r] of Object.entries(t)) e.style.setProperty(n, r);
|
|
19428
|
-
},
|
|
19446
|
+
}, Jb = (e, t) => ({
|
|
19429
19447
|
left: Math.min(Math.max(Ub, e.left), Math.max(Ub, t.innerWidth - Vb - Ub)),
|
|
19430
19448
|
top: Math.min(Math.max(Ub, e.top), Math.max(Ub, t.innerHeight - Hb - Ub))
|
|
19431
|
-
}),
|
|
19449
|
+
}), Yb = (e, t) => {
|
|
19432
19450
|
let n = e.createElement("button");
|
|
19433
|
-
return n.type = "button", n.textContent = t,
|
|
19451
|
+
return n.type = "button", n.textContent = t, qb(n, {
|
|
19434
19452
|
height: "32px",
|
|
19435
19453
|
padding: "0 12px",
|
|
19436
19454
|
border: "1px solid rgb(255 255 255 / 18%)",
|
|
@@ -19442,11 +19460,11 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19442
19460
|
"font-weight": "500",
|
|
19443
19461
|
cursor: "pointer"
|
|
19444
19462
|
}), n;
|
|
19445
|
-
},
|
|
19463
|
+
}, 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
19464
|
let i = n.closest("[data-mesurer-root='true']")?.parentNode ?? n.parentNode;
|
|
19447
|
-
if (!
|
|
19465
|
+
if (!Zb(i)) throw Error("Screenshot preview requires a mounted Mesurer host.");
|
|
19448
19466
|
let a = e.createElement("div");
|
|
19449
|
-
a.dataset.mesurerInspectorUi = "true", a.dataset.mesurerScreenshotInteractive = "true",
|
|
19467
|
+
a.dataset.mesurerInspectorUi = "true", a.dataset.mesurerScreenshotInteractive = "true", qb(a, {
|
|
19450
19468
|
position: "fixed",
|
|
19451
19469
|
left: "0",
|
|
19452
19470
|
top: "0",
|
|
@@ -19458,7 +19476,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19458
19476
|
"font-family": "ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif"
|
|
19459
19477
|
}), i.append(a);
|
|
19460
19478
|
let o = e.createElement("div");
|
|
19461
|
-
o.dataset.mesurerScreenshotPreview = "true", o.setAttribute("role", "button"), o.setAttribute("aria-label", "Open captured screenshot"), o.tabIndex = 0,
|
|
19479
|
+
o.dataset.mesurerScreenshotPreview = "true", o.setAttribute("role", "button"), o.setAttribute("aria-label", "Open captured screenshot"), o.tabIndex = 0, qb(o, {
|
|
19462
19480
|
position: "fixed",
|
|
19463
19481
|
display: "none",
|
|
19464
19482
|
"z-index": "96",
|
|
@@ -19476,7 +19494,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19476
19494
|
"touch-action": "none"
|
|
19477
19495
|
});
|
|
19478
19496
|
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",
|
|
19497
|
+
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
19498
|
display: "block",
|
|
19481
19499
|
width: "100%",
|
|
19482
19500
|
height: "100%",
|
|
@@ -19484,7 +19502,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19484
19502
|
"background-color": "white"
|
|
19485
19503
|
}), o.append(s);
|
|
19486
19504
|
let c = e.createElement("button");
|
|
19487
|
-
c.dataset.mesurerScreenshotPreviewDismiss = "true", c.type = "button", c.setAttribute("aria-label", "Dismiss screenshot preview"), c.title = "Dismiss",
|
|
19505
|
+
c.dataset.mesurerScreenshotPreviewDismiss = "true", c.type = "button", c.setAttribute("aria-label", "Dismiss screenshot preview"), c.title = "Dismiss", qb(c, {
|
|
19488
19506
|
position: "absolute",
|
|
19489
19507
|
top: "8px",
|
|
19490
19508
|
right: "8px",
|
|
@@ -19502,15 +19520,16 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19502
19520
|
"font-family": "inherit",
|
|
19503
19521
|
"font-size": "14px",
|
|
19504
19522
|
"line-height": "1",
|
|
19505
|
-
"z-index": "
|
|
19506
|
-
cursor: "pointer"
|
|
19523
|
+
"z-index": "2",
|
|
19524
|
+
cursor: "pointer",
|
|
19525
|
+
"touch-action": "none"
|
|
19507
19526
|
});
|
|
19508
19527
|
let l = e.createElementNS("http://www.w3.org/2000/svg", "svg");
|
|
19509
19528
|
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
19529
|
let u = e.createElementNS("http://www.w3.org/2000/svg", "path");
|
|
19511
19530
|
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
19531
|
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"),
|
|
19532
|
+
d.dataset.mesurerScreenshotViewer = "true", d.setAttribute("role", "dialog"), d.setAttribute("aria-modal", "true"), d.setAttribute("aria-label", "Screenshot viewer"), qb(d, {
|
|
19514
19533
|
position: "fixed",
|
|
19515
19534
|
inset: "0",
|
|
19516
19535
|
display: "none",
|
|
@@ -19524,7 +19543,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19524
19543
|
"pointer-events": "auto"
|
|
19525
19544
|
});
|
|
19526
19545
|
let f = e.createElement("img");
|
|
19527
|
-
f.dataset.mesurerScreenshotViewerImage = "true", f.alt = "Captured screenshot",
|
|
19546
|
+
f.dataset.mesurerScreenshotViewerImage = "true", f.alt = "Captured screenshot", qb(f, {
|
|
19528
19547
|
display: "block",
|
|
19529
19548
|
"max-width": "calc(100vw - 96px)",
|
|
19530
19549
|
"max-height": "calc(100vh - 112px)",
|
|
@@ -19535,7 +19554,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19535
19554
|
"box-shadow": "0 8px 30px rgb(0 0 0 / 28%)"
|
|
19536
19555
|
}), d.append(f);
|
|
19537
19556
|
let p = e.createElement("div");
|
|
19538
|
-
p.dataset.mesurerScreenshotViewerControls = "true",
|
|
19557
|
+
p.dataset.mesurerScreenshotViewerControls = "true", qb(p, {
|
|
19539
19558
|
position: "fixed",
|
|
19540
19559
|
top: "16px",
|
|
19541
19560
|
right: "16px",
|
|
@@ -19543,14 +19562,14 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19543
19562
|
gap: "8px",
|
|
19544
19563
|
"pointer-events": "auto"
|
|
19545
19564
|
});
|
|
19546
|
-
let m =
|
|
19565
|
+
let m = Yb(e, "Copy");
|
|
19547
19566
|
m.dataset.mesurerScreenshotViewerCopy = "true", m.setAttribute("aria-label", "Copy screenshot");
|
|
19548
|
-
let h =
|
|
19567
|
+
let h = Yb(e, "Save");
|
|
19549
19568
|
h.dataset.mesurerScreenshotViewerSave = "true", h.setAttribute("aria-label", "Save screenshot");
|
|
19550
|
-
let g =
|
|
19569
|
+
let g = Yb(e, "Close");
|
|
19551
19570
|
g.dataset.mesurerScreenshotViewerClose = "true", g.setAttribute("aria-label", "Close screenshot viewer"), p.append(m, h, g), d.append(p), a.append(d);
|
|
19552
19571
|
let _ = e.createElement("div");
|
|
19553
|
-
_.dataset.mesurerScreenshotToast = "true", _.setAttribute("role", "status"),
|
|
19572
|
+
_.dataset.mesurerScreenshotToast = "true", _.setAttribute("role", "status"), qb(_, {
|
|
19554
19573
|
position: "fixed",
|
|
19555
19574
|
left: "50%",
|
|
19556
19575
|
bottom: "20px",
|
|
@@ -19565,45 +19584,64 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19565
19584
|
"font-weight": "500",
|
|
19566
19585
|
"pointer-events": "none"
|
|
19567
19586
|
}), a.append(_);
|
|
19568
|
-
let v = null, y = null, b = null, x = null, S = 0, C = 0, w = !1,
|
|
19587
|
+
let v = null, y = null, b = null, x = null, S = 0, C = 0, w = null, T = !1, E = () => {
|
|
19569
19588
|
S && t.clearTimeout(S), S = 0;
|
|
19570
|
-
},
|
|
19589
|
+
}, D = () => {
|
|
19571
19590
|
C && t.clearTimeout(C), C = 0;
|
|
19572
|
-
},
|
|
19573
|
-
|
|
19591
|
+
}, O = (e, n = !1) => {
|
|
19592
|
+
D(), _.textContent = e, _.style.backgroundColor = n ? "#b42318" : "rgb(28 28 30 / 90%)", _.style.display = "block", C = t.setTimeout(() => {
|
|
19574
19593
|
C = 0, _.style.display = "none";
|
|
19575
19594
|
}, Gb);
|
|
19576
|
-
}, O = () => {
|
|
19577
|
-
d.style.display = "none";
|
|
19578
19595
|
}, k = () => {
|
|
19579
|
-
|
|
19596
|
+
d.style.display = "none";
|
|
19580
19597
|
}, A = () => {
|
|
19581
|
-
|
|
19582
|
-
}, j = () =>
|
|
19598
|
+
y && globalThis.URL.revokeObjectURL(y), y = null, v = null, s.removeAttribute("src"), f.removeAttribute("src");
|
|
19599
|
+
}, j = () => {
|
|
19600
|
+
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();
|
|
19601
|
+
}, M = () => {
|
|
19602
|
+
if (!v || o.style.display === "none" || w) return;
|
|
19603
|
+
E(), k();
|
|
19604
|
+
let e = o.getBoundingClientRect(), n = Math.max(152, t.innerWidth - e.left + Ub);
|
|
19605
|
+
o.style.pointerEvents = "none", o.style.willChange = "transform, opacity";
|
|
19606
|
+
let r = o.animate([{
|
|
19607
|
+
transform: "translateX(0) scale(1)",
|
|
19608
|
+
opacity: 1
|
|
19609
|
+
}, {
|
|
19610
|
+
transform: `translateX(${n}px) scale(0.92)`,
|
|
19611
|
+
opacity: 0
|
|
19612
|
+
}], {
|
|
19613
|
+
duration: Kb,
|
|
19614
|
+
easing: "ease",
|
|
19615
|
+
fill: "forwards"
|
|
19616
|
+
});
|
|
19617
|
+
w = r, r.finished.catch(() => void 0).then(() => {
|
|
19618
|
+
w === r && (r.cancel(), w = null, j());
|
|
19619
|
+
});
|
|
19620
|
+
}, N = () => Jb({
|
|
19583
19621
|
left: t.innerWidth - Vb - Ub,
|
|
19584
19622
|
top: t.innerHeight - Hb - Ub
|
|
19585
|
-
}, t),
|
|
19586
|
-
let n =
|
|
19623
|
+
}, t), P = (e) => {
|
|
19624
|
+
let n = Jb(e, t);
|
|
19587
19625
|
b = n, o.style.left = `${n.left}px`, o.style.top = `${n.top}px`;
|
|
19588
|
-
},
|
|
19589
|
-
!v || !y || (
|
|
19590
|
-
},
|
|
19626
|
+
}, F = () => {
|
|
19627
|
+
!v || !y || (E(), d.style.display = "flex", g.focus());
|
|
19628
|
+
}, I = async () => {
|
|
19591
19629
|
let e = v;
|
|
19592
19630
|
if (e) try {
|
|
19593
|
-
await Ya(Promise.resolve(e), t),
|
|
19631
|
+
await Ya(Promise.resolve(e), t), O("Copied screenshot");
|
|
19594
19632
|
} catch {
|
|
19595
|
-
|
|
19633
|
+
O("Could not copy screenshot", !0);
|
|
19596
19634
|
}
|
|
19597
|
-
},
|
|
19635
|
+
}, L = () => {
|
|
19598
19636
|
let n = v;
|
|
19599
19637
|
if (n) try {
|
|
19600
|
-
Za(n, Xa(), e, t),
|
|
19638
|
+
Za(n, Xa(), e, t), O("Saved screenshot");
|
|
19601
19639
|
} catch {
|
|
19602
|
-
|
|
19640
|
+
O("Could not save screenshot", !0);
|
|
19603
19641
|
}
|
|
19604
|
-
},
|
|
19642
|
+
}, R = (e, t, n) => {
|
|
19605
19643
|
if (!v) return !1;
|
|
19606
|
-
|
|
19644
|
+
E();
|
|
19607
19645
|
let r = o.getBoundingClientRect();
|
|
19608
19646
|
return x = {
|
|
19609
19647
|
pointerId: n,
|
|
@@ -19613,73 +19651,73 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19613
19651
|
top: r.top,
|
|
19614
19652
|
moved: !1
|
|
19615
19653
|
}, o.style.cursor = "grabbing", !0;
|
|
19616
|
-
},
|
|
19654
|
+
}, z = (e, t) => {
|
|
19617
19655
|
let n = x;
|
|
19618
19656
|
if (!n) return;
|
|
19619
19657
|
let r = e - n.startX, i = t - n.startY;
|
|
19620
|
-
!n.moved && Math.hypot(r, i) >= Wb && (n.moved = !0), n.moved &&
|
|
19658
|
+
!n.moved && Math.hypot(r, i) >= Wb && (n.moved = !0), n.moved && P({
|
|
19621
19659
|
left: n.left + r,
|
|
19622
19660
|
top: n.top + i
|
|
19623
19661
|
});
|
|
19624
|
-
},
|
|
19662
|
+
}, B = () => {
|
|
19625
19663
|
let e = x;
|
|
19626
|
-
e && (x = null, o.style.cursor = "grab", e.moved ||
|
|
19627
|
-
},
|
|
19664
|
+
e && (x = null, o.style.cursor = "grab", e.moved || F());
|
|
19665
|
+
}, V = () => {
|
|
19628
19666
|
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
19667
|
}, H = (e) => {
|
|
19634
|
-
e.button
|
|
19668
|
+
e.button !== 0 || !R(e.clientX, e.clientY, null) || e.preventDefault();
|
|
19635
19669
|
}, U = (e) => {
|
|
19636
|
-
|
|
19670
|
+
x?.pointerId === null && z(e.clientX, e.clientY);
|
|
19637
19671
|
}, W = (e) => {
|
|
19638
|
-
|
|
19639
|
-
t != null && t === e.pointerId && L(e.clientX, e.clientY);
|
|
19672
|
+
e.button === 0 && x?.pointerId === null && B();
|
|
19640
19673
|
}, ee = (e) => {
|
|
19641
|
-
|
|
19642
|
-
t != null && t === e.pointerId && (o.hasPointerCapture?.(e.pointerId) && o.releasePointerCapture(e.pointerId), R());
|
|
19674
|
+
e.pointerType !== "mouse" && e.button === 0 && R(e.clientX, e.clientY, e.pointerId) && (o.setPointerCapture?.(e.pointerId), e.preventDefault());
|
|
19643
19675
|
}, te = (e) => {
|
|
19644
19676
|
let t = x?.pointerId;
|
|
19645
|
-
t != null && t === e.pointerId && (
|
|
19677
|
+
t != null && t === e.pointerId && z(e.clientX, e.clientY);
|
|
19646
19678
|
}, G = (e) => {
|
|
19647
|
-
|
|
19679
|
+
let t = x?.pointerId;
|
|
19680
|
+
t != null && t === e.pointerId && (o.hasPointerCapture?.(e.pointerId) && o.releasePointerCapture(e.pointerId), B());
|
|
19648
19681
|
}, ne = (e) => {
|
|
19649
|
-
|
|
19682
|
+
let t = x?.pointerId;
|
|
19683
|
+
t != null && t === e.pointerId && (o.hasPointerCapture?.(e.pointerId) && o.releasePointerCapture(e.pointerId), V());
|
|
19650
19684
|
}, re = (e) => {
|
|
19651
|
-
e.
|
|
19685
|
+
(e.key === "Enter" || e.key === " ") && (e.preventDefault(), F());
|
|
19652
19686
|
}, ie = (e) => {
|
|
19653
|
-
e.
|
|
19687
|
+
e.target !== s && e.preventDefault();
|
|
19688
|
+
}, ae = (e) => {
|
|
19689
|
+
e.target === d && k();
|
|
19690
|
+
}, oe = (e) => {
|
|
19691
|
+
e.key === "Escape" && d.style.display !== "none" && (e.preventDefault(), e.stopImmediatePropagation(), k());
|
|
19654
19692
|
};
|
|
19655
19693
|
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",
|
|
19694
|
+
e.stopPropagation(), M();
|
|
19695
|
+
}), o.addEventListener("mousedown", H), o.addEventListener("pointerdown", ee), o.addEventListener("keydown", re), o.addEventListener("contextmenu", ie), d.addEventListener("click", ae), m.addEventListener("click", () => {
|
|
19696
|
+
I();
|
|
19697
|
+
}), 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
19698
|
show(e, n) {
|
|
19661
|
-
if (
|
|
19662
|
-
|
|
19699
|
+
if (T) return;
|
|
19700
|
+
E(), k(), w &&= (w.cancel(), null), o.style.opacity = "1", o.style.transform = "none", o.style.willChange = "transform, opacity", o.style.pointerEvents = "auto", A(), v = e;
|
|
19663
19701
|
let i = globalThis.URL.createObjectURL(e);
|
|
19664
|
-
y = i, s.src = i, f.src = i, o.style.display = "block",
|
|
19702
|
+
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
19703
|
},
|
|
19666
|
-
dismiss:
|
|
19704
|
+
dismiss: j,
|
|
19667
19705
|
dispose() {
|
|
19668
|
-
|
|
19706
|
+
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
19707
|
}
|
|
19670
19708
|
};
|
|
19671
|
-
},
|
|
19709
|
+
}, $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
19710
|
"[data-mesurer-measurement='true']",
|
|
19673
19711
|
"[data-mesurer-selected-measurement='true']",
|
|
19674
19712
|
"[data-mesurer-selection-spacing-target='true']",
|
|
19675
19713
|
"[data-mesurer-guide='true']",
|
|
19676
19714
|
"[data-mesurer-distance='true']"
|
|
19677
|
-
].join(","),
|
|
19715
|
+
].join(","), cx = `${sx},[data-mesurer-rulers='true']`, lx = {
|
|
19678
19716
|
viewBox: "0 0 256 256",
|
|
19679
19717
|
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
19718
|
}, ux = (e, t) => {
|
|
19719
|
+
for (let [n, r] of Object.entries(t)) e.style.setProperty(n, r);
|
|
19720
|
+
}, dx = (e, t) => {
|
|
19683
19721
|
for (let n of [
|
|
19684
19722
|
"left",
|
|
19685
19723
|
"top",
|
|
@@ -19691,63 +19729,63 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19691
19729
|
let r = t[n];
|
|
19692
19730
|
r === void 0 ? e.style.removeProperty(n) : e.style.setProperty(n, `${r}px`);
|
|
19693
19731
|
}
|
|
19694
|
-
},
|
|
19695
|
-
let t = e(
|
|
19732
|
+
}, fx = (e) => {
|
|
19733
|
+
let t = e(tx);
|
|
19696
19734
|
return {
|
|
19697
19735
|
toolEnabled: t?.toolEnabled ?? !0,
|
|
19698
19736
|
copy: t?.copy ?? !0,
|
|
19699
19737
|
download: t?.download ?? !1,
|
|
19700
19738
|
includeMeasurements: t?.includeMeasurements ?? !1
|
|
19701
19739
|
};
|
|
19702
|
-
},
|
|
19740
|
+
}, px = (e) => ({
|
|
19703
19741
|
value: e.style.getPropertyValue("display"),
|
|
19704
19742
|
priority: e.style.getPropertyPriority("display")
|
|
19705
|
-
}),
|
|
19743
|
+
}), mx = (e, t) => {
|
|
19706
19744
|
t.value || t.priority ? e.style.setProperty("display", t.value, t.priority) : e.style.removeProperty("display");
|
|
19707
|
-
},
|
|
19745
|
+
}, hx = (e, t) => {
|
|
19708
19746
|
let n = e;
|
|
19709
19747
|
for (; n.parentElement && n.parentElement !== t;) n = n.parentElement;
|
|
19710
19748
|
return n.parentElement === t ? n : null;
|
|
19711
|
-
},
|
|
19749
|
+
}, gx = (e) => {
|
|
19712
19750
|
let t = e.querySelector("[data-mesurer-root='true']");
|
|
19713
19751
|
if (!t) return () => void 0;
|
|
19714
19752
|
let n = /* @__PURE__ */ new Set();
|
|
19715
19753
|
for (let e of t.querySelectorAll("[data-mesurer-rulers='true']")) {
|
|
19716
|
-
let r =
|
|
19754
|
+
let r = hx(e, t);
|
|
19717
19755
|
r && n.add(r);
|
|
19718
19756
|
}
|
|
19719
|
-
for (let e of t.querySelectorAll(
|
|
19720
|
-
let r =
|
|
19757
|
+
for (let e of t.querySelectorAll(sx)) {
|
|
19758
|
+
let r = hx(e, t);
|
|
19721
19759
|
r && n.add(r);
|
|
19722
19760
|
}
|
|
19723
19761
|
let r = [];
|
|
19724
19762
|
for (let e of n) e.dataset.mesurerInspectorUi !== "true" && (r.push({
|
|
19725
19763
|
element: e,
|
|
19726
|
-
display:
|
|
19764
|
+
display: px(e)
|
|
19727
19765
|
}), e.style.setProperty("display", "none", "important"));
|
|
19728
19766
|
return () => {
|
|
19729
|
-
for (let e of r)
|
|
19767
|
+
for (let e of r) mx(e.element, e.display);
|
|
19730
19768
|
};
|
|
19731
|
-
},
|
|
19769
|
+
}, _x = (e) => Array.from(e.querySelectorAll(cx)).filter((e) => e.dataset.mesurerInspectorUi === "true").map((e) => ({
|
|
19732
19770
|
element: e,
|
|
19733
|
-
display:
|
|
19734
|
-
})),
|
|
19735
|
-
for (let t of e) t.element.isConnected &&
|
|
19736
|
-
},
|
|
19737
|
-
id:
|
|
19771
|
+
display: px(e)
|
|
19772
|
+
})), vx = (e) => {
|
|
19773
|
+
for (let t of e) t.element.isConnected && mx(t.element, t.display);
|
|
19774
|
+
}, yx = (e = {}) => Ta({
|
|
19775
|
+
id: $b,
|
|
19738
19776
|
version: "0.1.0",
|
|
19739
|
-
requires: [
|
|
19777
|
+
requires: [rx],
|
|
19740
19778
|
provides: [
|
|
19741
19779
|
"tool:screenshot",
|
|
19742
19780
|
"capture:screenshot",
|
|
19743
19781
|
"settings:screenshot"
|
|
19744
19782
|
],
|
|
19745
19783
|
setup(t) {
|
|
19746
|
-
let n = t.service.get(
|
|
19784
|
+
let n = t.service.get(rx);
|
|
19747
19785
|
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 ??
|
|
19786
|
+
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
19787
|
t.state.register({
|
|
19750
|
-
id:
|
|
19788
|
+
id: tx,
|
|
19751
19789
|
initial: {
|
|
19752
19790
|
toolEnabled: e.toolEnabled ?? !0,
|
|
19753
19791
|
copy: e.copy ?? !0,
|
|
@@ -19756,11 +19794,11 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19756
19794
|
},
|
|
19757
19795
|
persist: !0
|
|
19758
19796
|
}), t.state.register({
|
|
19759
|
-
id:
|
|
19797
|
+
id: nx,
|
|
19760
19798
|
initial: !1
|
|
19761
19799
|
});
|
|
19762
19800
|
let u = o.element;
|
|
19763
|
-
u.dataset.mesurerScreenshot = "true",
|
|
19801
|
+
u.dataset.mesurerScreenshot = "true", ux(u, {
|
|
19764
19802
|
position: "fixed",
|
|
19765
19803
|
inset: "0",
|
|
19766
19804
|
"z-index": "85",
|
|
@@ -19768,7 +19806,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19768
19806
|
"font-family": "ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif"
|
|
19769
19807
|
});
|
|
19770
19808
|
let d = r.createElement("div");
|
|
19771
|
-
d.dataset.mesurerScreenshotSelect = "true", d.setAttribute("role", "application"), d.setAttribute("aria-label", "Screenshot selection"),
|
|
19809
|
+
d.dataset.mesurerScreenshotSelect = "true", d.setAttribute("role", "application"), d.setAttribute("aria-label", "Screenshot selection"), ux(d, {
|
|
19772
19810
|
position: "fixed",
|
|
19773
19811
|
inset: "0",
|
|
19774
19812
|
display: "none",
|
|
@@ -19780,13 +19818,13 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19780
19818
|
}), u.append(d);
|
|
19781
19819
|
let f = Array.from({ length: 4 }, () => {
|
|
19782
19820
|
let e = r.createElement("div");
|
|
19783
|
-
return
|
|
19821
|
+
return ux(e, {
|
|
19784
19822
|
position: "fixed",
|
|
19785
19823
|
"background-color": "rgb(0 0 0 / 40%)",
|
|
19786
19824
|
"pointer-events": "none"
|
|
19787
19825
|
}), d.append(e), e;
|
|
19788
19826
|
}), p = r.createElement("div");
|
|
19789
|
-
|
|
19827
|
+
ux(p, {
|
|
19790
19828
|
position: "fixed",
|
|
19791
19829
|
display: "none",
|
|
19792
19830
|
border: "1px solid #0d99ff",
|
|
@@ -19794,7 +19832,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19794
19832
|
"pointer-events": "none"
|
|
19795
19833
|
}), d.append(p);
|
|
19796
19834
|
let m = r.createElement("div");
|
|
19797
|
-
|
|
19835
|
+
ux(m, {
|
|
19798
19836
|
position: "fixed",
|
|
19799
19837
|
display: "none",
|
|
19800
19838
|
"z-index": "86",
|
|
@@ -19808,7 +19846,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19808
19846
|
"pointer-events": "none"
|
|
19809
19847
|
}), d.append(m);
|
|
19810
19848
|
let h = r.createElement("div");
|
|
19811
|
-
h.textContent = "Drag to select · Esc to cancel",
|
|
19849
|
+
h.textContent = "Drag to select · Esc to cancel", ux(h, {
|
|
19812
19850
|
position: "fixed",
|
|
19813
19851
|
left: "50%",
|
|
19814
19852
|
bottom: "16px",
|
|
@@ -19821,7 +19859,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19821
19859
|
"pointer-events": "none"
|
|
19822
19860
|
}), d.append(h);
|
|
19823
19861
|
let g = r.createElement("div");
|
|
19824
|
-
g.dataset.mesurerScreenshotError = "true", g.setAttribute("role", "status"), g.textContent = "Could not save screenshot",
|
|
19862
|
+
g.dataset.mesurerScreenshotError = "true", g.setAttribute("role", "status"), g.textContent = "Could not save screenshot", ux(g, {
|
|
19825
19863
|
position: "fixed",
|
|
19826
19864
|
display: "none",
|
|
19827
19865
|
"z-index": "97",
|
|
@@ -19832,8 +19870,8 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19832
19870
|
"font-size": "11px",
|
|
19833
19871
|
"pointer-events": "none"
|
|
19834
19872
|
}), 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(
|
|
19873
|
+
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) => {
|
|
19874
|
+
t.state.update(tx, (t) => {
|
|
19837
19875
|
let n = { ...t };
|
|
19838
19876
|
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
19877
|
});
|
|
@@ -19856,13 +19894,13 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19856
19894
|
}, A = (e) => {
|
|
19857
19895
|
let t = i.innerWidth, n = i.innerHeight;
|
|
19858
19896
|
if (!e || e.width <= 0 || e.height <= 0) {
|
|
19859
|
-
|
|
19897
|
+
dx(f[0], {
|
|
19860
19898
|
left: 0,
|
|
19861
19899
|
top: 0,
|
|
19862
19900
|
width: t,
|
|
19863
19901
|
height: n
|
|
19864
19902
|
});
|
|
19865
|
-
for (let e of f.slice(1))
|
|
19903
|
+
for (let e of f.slice(1)) dx(e, {
|
|
19866
19904
|
left: 0,
|
|
19867
19905
|
top: 0,
|
|
19868
19906
|
width: 0,
|
|
@@ -19871,31 +19909,31 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19871
19909
|
p.style.display = "none", m.style.display = "none";
|
|
19872
19910
|
return;
|
|
19873
19911
|
}
|
|
19874
|
-
|
|
19912
|
+
dx(f[0], {
|
|
19875
19913
|
left: 0,
|
|
19876
19914
|
top: 0,
|
|
19877
19915
|
width: t,
|
|
19878
19916
|
height: e.top
|
|
19879
|
-
}),
|
|
19917
|
+
}), dx(f[1], {
|
|
19880
19918
|
left: 0,
|
|
19881
19919
|
top: e.top,
|
|
19882
19920
|
width: e.left,
|
|
19883
19921
|
height: e.height
|
|
19884
|
-
}),
|
|
19922
|
+
}), dx(f[2], {
|
|
19885
19923
|
left: e.left + e.width,
|
|
19886
19924
|
top: e.top,
|
|
19887
19925
|
width: Math.max(0, t - e.left - e.width),
|
|
19888
19926
|
height: e.height
|
|
19889
|
-
}),
|
|
19927
|
+
}), dx(f[3], {
|
|
19890
19928
|
left: 0,
|
|
19891
19929
|
top: e.top + e.height,
|
|
19892
19930
|
width: t,
|
|
19893
19931
|
height: Math.max(0, n - e.top - e.height)
|
|
19894
|
-
}), p.style.display = "block",
|
|
19932
|
+
}), p.style.display = "block", dx(p, e), m.style.display = "block", m.textContent = `${Math.round(e.width)} × ${Math.round(e.height)}`, dx(m, {
|
|
19895
19933
|
left: e.left + e.width / 2,
|
|
19896
19934
|
top: Math.min(n - 22, e.top + e.height + 6)
|
|
19897
19935
|
});
|
|
19898
|
-
}, j = () => n.portalTarget.querySelector("[data-mesurer-tool-id='screenshot']")?.getBoundingClientRect() ?? null, M =
|
|
19936
|
+
}, j = () => n.portalTarget.querySelector("[data-mesurer-tool-id='screenshot']")?.getBoundingClientRect() ?? null, M = Qb({
|
|
19899
19937
|
ownerDocument: r,
|
|
19900
19938
|
ownerWindow: i,
|
|
19901
19939
|
root: u,
|
|
@@ -19906,7 +19944,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19906
19944
|
}, P = () => {
|
|
19907
19945
|
y && i.clearTimeout(y), g.style.display = "block", N(g), y = i.setTimeout(() => {
|
|
19908
19946
|
y = 0, g.style.display = "none";
|
|
19909
|
-
},
|
|
19947
|
+
}, ax);
|
|
19910
19948
|
}, F = () => {
|
|
19911
19949
|
_ = null, A(null), d.style.visibility = "", d.style.display = "none", u.style.pointerEvents = "none", D(!1), k();
|
|
19912
19950
|
}, I = () => {
|
|
@@ -19915,8 +19953,8 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19915
19953
|
if (x) throw Error("A screenshot capture is already running.");
|
|
19916
19954
|
if (e.width < 4 || e.height < 4) throw Error("Screenshot selection must be at least 4px by 4px.");
|
|
19917
19955
|
x = !0;
|
|
19918
|
-
let o = ++b, s = T(), l = s.includeMeasurements ?
|
|
19919
|
-
a.prepareCapture(), s.includeMeasurements &&
|
|
19956
|
+
let o = ++b, s = T(), l = s.includeMeasurements ? _x(r) : [], u = s.includeMeasurements ? () => void 0 : gx(n.portalTarget);
|
|
19957
|
+
a.prepareCapture(), s.includeMeasurements && vx(l);
|
|
19920
19958
|
try {
|
|
19921
19959
|
d.style.visibility = "hidden", await Qa(i);
|
|
19922
19960
|
let n = await Ja(await c({
|
|
@@ -19933,7 +19971,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
19933
19971
|
Za(n, Xa(), r, i), l = !0;
|
|
19934
19972
|
}) : Promise.resolve(), p = await Promise.allSettled([u, f]), m = s.copy && p[0]?.status === "rejected", h = s.download && p[1]?.status === "rejected";
|
|
19935
19973
|
if (b !== o) throw Error("Screenshot capture was cancelled.");
|
|
19936
|
-
return M.show(n, {
|
|
19974
|
+
return w() && F(), M.show(n, {
|
|
19937
19975
|
copied: a,
|
|
19938
19976
|
downloaded: l,
|
|
19939
19977
|
copyFailed: m,
|
|
@@ -20024,10 +20062,10 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
20024
20062
|
label: "Screenshot",
|
|
20025
20063
|
shortcut: "Shift+S",
|
|
20026
20064
|
order: 70,
|
|
20027
|
-
command:
|
|
20065
|
+
command: ix,
|
|
20028
20066
|
toolbarMode: "select",
|
|
20029
20067
|
compactPinned: !0,
|
|
20030
|
-
icon:
|
|
20068
|
+
icon: lx,
|
|
20031
20069
|
active: w,
|
|
20032
20070
|
hidden: () => !T().toolEnabled,
|
|
20033
20071
|
menu: {
|
|
@@ -20093,31 +20131,31 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
|
|
|
20093
20131
|
set: (e) => E({ includeMeasurements: e })
|
|
20094
20132
|
}
|
|
20095
20133
|
]
|
|
20096
|
-
}), t.command.register(
|
|
20134
|
+
}), t.command.register(ix, R), t.service.provide(ex, W), t.lifecycle.onDispose(() => {
|
|
20097
20135
|
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
20136
|
});
|
|
20099
20137
|
}
|
|
20100
|
-
}),
|
|
20138
|
+
}), bx = (e) => Number.parseFloat(e) || 0, xx = 0, Sx = (e, t) => {
|
|
20101
20139
|
let n = t.CSS;
|
|
20102
20140
|
return n?.escape ? n.escape(e) : e.replace(/[^a-zA-Z0-9_-]/g, (e) => `\\${e}`);
|
|
20103
|
-
},
|
|
20104
|
-
function
|
|
20141
|
+
}, Cx = (e) => e.nodeType === 9, wx = (e) => e.nodeType === 11;
|
|
20142
|
+
function Tx(e) {
|
|
20105
20143
|
let t = e.getRootNode();
|
|
20106
|
-
return
|
|
20144
|
+
return wx(t) ? t : e.ownerDocument;
|
|
20107
20145
|
}
|
|
20108
|
-
var
|
|
20109
|
-
if (
|
|
20110
|
-
let n =
|
|
20111
|
-
return
|
|
20112
|
-
},
|
|
20146
|
+
var Ex = (e, t) => {
|
|
20147
|
+
if (Cx(e) || wx(e)) return e;
|
|
20148
|
+
let n = Tx(e);
|
|
20149
|
+
return wx(n) ? n : t;
|
|
20150
|
+
}, Dx = 600, Ox = "audio, canvas, embed, iframe, img, input, object, picture, select, textarea, video", kx = /* @__PURE__ */ new WeakMap(), Ax = (e) => {
|
|
20113
20151
|
let t = e;
|
|
20114
20152
|
for (; t;) {
|
|
20115
|
-
if ((
|
|
20153
|
+
if ((kx.get(t) ?? 0) > 0) return !0;
|
|
20116
20154
|
let e = t.getRootNode();
|
|
20117
|
-
t =
|
|
20155
|
+
t = wx(e) ? e.host : t.parentElement;
|
|
20118
20156
|
}
|
|
20119
20157
|
return !1;
|
|
20120
|
-
},
|
|
20158
|
+
}, 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
20159
|
let r = e;
|
|
20122
20160
|
for (; r;) {
|
|
20123
20161
|
let e = n.getComputedStyle(r);
|
|
@@ -20126,7 +20164,7 @@ var Tx = (e, t) => {
|
|
|
20126
20164
|
r = r.parentElement;
|
|
20127
20165
|
}
|
|
20128
20166
|
return !0;
|
|
20129
|
-
},
|
|
20167
|
+
}, Px = (e, t) => {
|
|
20130
20168
|
if (e.matches("img, picture, video, canvas, svg image, path, circle, ellipse, line, polygon, polyline, rect, text, use")) return !0;
|
|
20131
20169
|
let n = t.getComputedStyle(e), r = n.backgroundImage !== "none" || n.backgroundColor !== "transparent" && n.backgroundColor !== "rgba(0, 0, 0, 0)", i = [
|
|
20132
20170
|
"top",
|
|
@@ -20135,7 +20173,7 @@ var Tx = (e, t) => {
|
|
|
20135
20173
|
"left"
|
|
20136
20174
|
].some((e) => Number.parseFloat(n.getPropertyValue(`border-${e}-width`)) > 0 && n.getPropertyValue(`border-${e}-style`) !== "none");
|
|
20137
20175
|
return r || i || n.boxShadow !== "none" || n.outlineStyle !== "none";
|
|
20138
|
-
},
|
|
20176
|
+
}, Fx = (e, t) => !!e.textContent?.trim() || Px(e, t), Ix = (e, t, n) => {
|
|
20139
20177
|
let r = t, i = r.caretRangeFromPoint?.(e.x, e.y)?.startContainer ?? r.caretPositionFromPoint?.(e.x, e.y)?.offsetNode;
|
|
20140
20178
|
if (!i) return null;
|
|
20141
20179
|
let a = t.defaultView?.Element;
|
|
@@ -20146,11 +20184,11 @@ var Tx = (e, t) => {
|
|
|
20146
20184
|
o = o.parentElement;
|
|
20147
20185
|
}
|
|
20148
20186
|
return o === n ? n : null;
|
|
20149
|
-
},
|
|
20187
|
+
}, Lx = (e, t, n) => {
|
|
20150
20188
|
let r = n.defaultView, i = r?.Element;
|
|
20151
20189
|
if (!r || !i) return [];
|
|
20152
20190
|
let a = [], o = /* @__PURE__ */ new Set(), s = (n, i, s) => {
|
|
20153
|
-
if (o.has(n) ||
|
|
20191
|
+
if (o.has(n) || Ax(n) || r.getComputedStyle(n).pointerEvents !== "none" || Nx(n, e, r) || !Mx(n, t)) return;
|
|
20154
20192
|
let c = n.getBoundingClientRect();
|
|
20155
20193
|
o.add(n), a.push({
|
|
20156
20194
|
element: n,
|
|
@@ -20159,7 +20197,7 @@ var Tx = (e, t) => {
|
|
|
20159
20197
|
order: s
|
|
20160
20198
|
});
|
|
20161
20199
|
}, c = n.createTreeWalker(e, 1), l = c.nextNode(), u = 1;
|
|
20162
|
-
for (; l && u <=
|
|
20200
|
+
for (; l && u <= Dx;) {
|
|
20163
20201
|
if (l instanceof i) {
|
|
20164
20202
|
let t = l;
|
|
20165
20203
|
if (r.getComputedStyle(t).pointerEvents === "none") {
|
|
@@ -20170,9 +20208,9 @@ var Tx = (e, t) => {
|
|
|
20170
20208
|
}
|
|
20171
20209
|
u += 1, l = c.nextNode();
|
|
20172
20210
|
}
|
|
20173
|
-
let d =
|
|
20211
|
+
let d = Ix(t, n, e);
|
|
20174
20212
|
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
|
-
},
|
|
20213
|
+
}, Rx = (e, t, n) => {
|
|
20176
20214
|
let r = t.ownerDocument.defaultView;
|
|
20177
20215
|
if (!r) return [];
|
|
20178
20216
|
let i = [...new Set(e)], a = /* @__PURE__ */ new Map();
|
|
@@ -20181,7 +20219,7 @@ var Tx = (e, t) => {
|
|
|
20181
20219
|
t && (a.set(e, e.getAttribute("style")), t.style.setProperty("pointer-events", "auto", "important"));
|
|
20182
20220
|
}
|
|
20183
20221
|
try {
|
|
20184
|
-
let e =
|
|
20222
|
+
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
20223
|
return i.filter((e) => {
|
|
20186
20224
|
let t = a.get(e);
|
|
20187
20225
|
return t !== void 0 && (r < 0 || t < r);
|
|
@@ -20189,31 +20227,31 @@ var Tx = (e, t) => {
|
|
|
20189
20227
|
} finally {
|
|
20190
20228
|
for (let [e, t] of a) t === null ? e.removeAttribute("style") : e.setAttribute("style", t);
|
|
20191
20229
|
}
|
|
20192
|
-
},
|
|
20230
|
+
}, zx = (e, t) => {
|
|
20193
20231
|
let n = e;
|
|
20194
20232
|
for (; n.parentElement && n.parentElement !== t;) n = n.parentElement;
|
|
20195
20233
|
return n.parentElement === t ? n : null;
|
|
20196
|
-
},
|
|
20234
|
+
}, Bx = (e, t, n, r) => {
|
|
20197
20235
|
let i = r.defaultView;
|
|
20198
20236
|
if (!i) return [];
|
|
20199
|
-
let a = Lx(
|
|
20237
|
+
let a = Rx(Lx(e, t, r).filter((e) => Fx(e, i)), e, t);
|
|
20200
20238
|
if (a.length > 0) return a;
|
|
20201
|
-
if (e.textContent?.trim() && !e.matches(
|
|
20202
|
-
let o = [], s = /* @__PURE__ */ new Set(), c = !
|
|
20239
|
+
if (e.textContent?.trim() && !e.matches(Ox) || e.matches("a, button, input, select, textarea, label, summary, [contenteditable='true']")) return [];
|
|
20240
|
+
let o = [], s = /* @__PURE__ */ new Set(), c = !Cx(n) && !wx(n) ? n : null, l = e.parentElement;
|
|
20203
20241
|
for (; l && l !== r.body && l !== r.documentElement && !(c && l !== c && !c.contains(l));) {
|
|
20204
|
-
let a = l, u =
|
|
20205
|
-
if (!
|
|
20206
|
-
let t =
|
|
20242
|
+
let a = l, u = zx(e, a), d = Lx(a, t, r).filter((e) => {
|
|
20243
|
+
if (!Hx(e, n) || e.closest("[aria-hidden='true'], [inert]")) return !1;
|
|
20244
|
+
let t = zx(e, a);
|
|
20207
20245
|
return t === null || t !== u;
|
|
20208
20246
|
});
|
|
20209
|
-
for (let e of d) s.has(e) || !
|
|
20247
|
+
for (let e of d) s.has(e) || !Fx(e, i) || (s.add(e), o.push(e));
|
|
20210
20248
|
if (a === c) break;
|
|
20211
20249
|
l = a.parentElement;
|
|
20212
20250
|
}
|
|
20213
|
-
return
|
|
20251
|
+
return Rx(o, e, t);
|
|
20214
20252
|
};
|
|
20215
|
-
function
|
|
20216
|
-
let r =
|
|
20253
|
+
function Vx(e, t, n = Cx(t) ? t : t.ownerDocument ?? document) {
|
|
20254
|
+
let r = Ex(t, n), i = n.defaultView;
|
|
20217
20255
|
if (!i) return null;
|
|
20218
20256
|
let a = r.elementsFromPoint(e.x, e.y);
|
|
20219
20257
|
for (let r of a) {
|
|
@@ -20223,28 +20261,28 @@ function Bx(e, t, n = Sx(t) ? t : t.ownerDocument ?? document) {
|
|
|
20223
20261
|
if (!t || t === a) break;
|
|
20224
20262
|
a = t;
|
|
20225
20263
|
}
|
|
20226
|
-
if (!a || !
|
|
20227
|
-
let o =
|
|
20264
|
+
if (!a || !Hx(a, t)) continue;
|
|
20265
|
+
let o = Bx(a, e, t, n);
|
|
20228
20266
|
if (o.length > 0) return o[0];
|
|
20229
20267
|
if (i.getComputedStyle(a).pointerEvents !== "none") return a;
|
|
20230
20268
|
}
|
|
20231
20269
|
return null;
|
|
20232
20270
|
}
|
|
20233
|
-
function
|
|
20234
|
-
if (
|
|
20271
|
+
function Hx(e, t) {
|
|
20272
|
+
if (Cx(t)) return !0;
|
|
20235
20273
|
let n = e;
|
|
20236
20274
|
for (; n;) {
|
|
20237
20275
|
if (t === n || t.contains(n)) return !0;
|
|
20238
20276
|
let e = n.getRootNode();
|
|
20239
|
-
if (!
|
|
20277
|
+
if (!wx(e)) return !1;
|
|
20240
20278
|
n = e.host;
|
|
20241
20279
|
}
|
|
20242
20280
|
return !1;
|
|
20243
20281
|
}
|
|
20244
|
-
function
|
|
20282
|
+
function Ux(e, t) {
|
|
20245
20283
|
if (!e) return t();
|
|
20246
|
-
let n =
|
|
20247
|
-
|
|
20284
|
+
let n = kx.get(e) ?? 0;
|
|
20285
|
+
kx.set(e, n + 1);
|
|
20248
20286
|
let r = [e, ...e.querySelectorAll("*")], i = r.map((e) => [
|
|
20249
20287
|
e,
|
|
20250
20288
|
e.style.getPropertyValue("pointer-events"),
|
|
@@ -20254,13 +20292,13 @@ function Hx(e, t) {
|
|
|
20254
20292
|
try {
|
|
20255
20293
|
return t();
|
|
20256
20294
|
} finally {
|
|
20257
|
-
n === 0 ?
|
|
20295
|
+
n === 0 ? kx.delete(e) : kx.set(e, n);
|
|
20258
20296
|
for (let [e, t, n] of i) t ? e.style.setProperty("pointer-events", t, n) : e.style.removeProperty("pointer-events");
|
|
20259
20297
|
}
|
|
20260
20298
|
}
|
|
20261
|
-
function
|
|
20299
|
+
function Wx(e) {
|
|
20262
20300
|
let t = e.ownerDocument.defaultView ?? window;
|
|
20263
|
-
if (e.id) return `#${
|
|
20301
|
+
if (e.id) return `#${Sx(e.id, t)}`;
|
|
20264
20302
|
let n = e.getAttribute("data-testid");
|
|
20265
20303
|
if (n) return `[data-testid=${JSON.stringify(n)}]`;
|
|
20266
20304
|
let r = [], i = e;
|
|
@@ -20274,17 +20312,17 @@ function Ux(e) {
|
|
|
20274
20312
|
}
|
|
20275
20313
|
return r.join(" > ");
|
|
20276
20314
|
}
|
|
20277
|
-
function
|
|
20315
|
+
function Gx(e, t, n = `dom-inspection-${++xx}`) {
|
|
20278
20316
|
let r = e.getBoundingClientRect(), i = t.getComputedStyle(e), a = {
|
|
20279
|
-
top:
|
|
20280
|
-
right:
|
|
20281
|
-
bottom:
|
|
20282
|
-
left:
|
|
20317
|
+
top: bx(i.paddingTop),
|
|
20318
|
+
right: bx(i.paddingRight),
|
|
20319
|
+
bottom: bx(i.paddingBottom),
|
|
20320
|
+
left: bx(i.paddingLeft)
|
|
20283
20321
|
}, o = {
|
|
20284
|
-
top:
|
|
20285
|
-
right:
|
|
20286
|
-
bottom:
|
|
20287
|
-
left:
|
|
20322
|
+
top: bx(i.marginTop),
|
|
20323
|
+
right: bx(i.marginRight),
|
|
20324
|
+
bottom: bx(i.marginBottom),
|
|
20325
|
+
left: bx(i.marginLeft)
|
|
20288
20326
|
}, s = {
|
|
20289
20327
|
left: r.left + a.left,
|
|
20290
20328
|
top: r.top + a.top,
|
|
@@ -20312,8 +20350,8 @@ function Wx(e, t, n = `dom-inspection-${++bx}`) {
|
|
|
20312
20350
|
elementRef: e
|
|
20313
20351
|
};
|
|
20314
20352
|
}
|
|
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 ?
|
|
20353
|
+
function Kx(e) {
|
|
20354
|
+
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
20355
|
let t = Number.parseFloat(e);
|
|
20318
20356
|
return Number.isFinite(t) ? t : 0;
|
|
20319
20357
|
}, s = (e) => ({
|
|
@@ -20323,7 +20361,7 @@ function Gx(e) {
|
|
|
20323
20361
|
left: o(n.getPropertyValue(`${e}-left${e === "border" ? "-width" : ""}`))
|
|
20324
20362
|
});
|
|
20325
20363
|
return {
|
|
20326
|
-
selector:
|
|
20364
|
+
selector: Wx(e),
|
|
20327
20365
|
tag: e.localName,
|
|
20328
20366
|
id: e.id || null,
|
|
20329
20367
|
classes: [...e.classList],
|
|
@@ -20385,10 +20423,10 @@ function Gx(e) {
|
|
|
20385
20423
|
}
|
|
20386
20424
|
//#endregion
|
|
20387
20425
|
//#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(
|
|
20426
|
+
var qx = "text-edit", Jx = (e) => Kx(e);
|
|
20427
|
+
function Yx(e) {
|
|
20428
|
+
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 () => {
|
|
20429
|
+
let t = (e.getPluginHost() ?? await e.waitForPluginHost()).service.get(qx);
|
|
20392
20430
|
if (!t) throw Error("Mesurer text editing service is unavailable.");
|
|
20393
20431
|
return t;
|
|
20394
20432
|
}, o = () => {
|
|
@@ -20417,25 +20455,25 @@ function Jx(e) {
|
|
|
20417
20455
|
},
|
|
20418
20456
|
inspect(e, t = 0) {
|
|
20419
20457
|
let n = r(e, t);
|
|
20420
|
-
return n ?
|
|
20458
|
+
return n ? Jx(n) : null;
|
|
20421
20459
|
},
|
|
20422
20460
|
inspectAll(e, n = 50) {
|
|
20423
|
-
return [...t.querySelectorAll(e)].slice(0, Math.max(0, n)).map(
|
|
20461
|
+
return [...t.querySelectorAll(e)].slice(0, Math.max(0, n)).map(Jx);
|
|
20424
20462
|
},
|
|
20425
20463
|
at(n, r) {
|
|
20426
20464
|
let a = t.querySelector?.("[data-mesurer-island]") ?? null;
|
|
20427
|
-
return
|
|
20428
|
-
let a =
|
|
20465
|
+
return Ux(a?.shadowRoot?.querySelector("[data-mesurer-root='true']") ?? a, () => {
|
|
20466
|
+
let a = Vx({
|
|
20429
20467
|
x: n,
|
|
20430
20468
|
y: r
|
|
20431
20469
|
}, t, e.ownerDocument);
|
|
20432
|
-
return a && i(a) ?
|
|
20470
|
+
return a && i(a) ? Jx(a) : null;
|
|
20433
20471
|
});
|
|
20434
20472
|
},
|
|
20435
20473
|
distance(e, t) {
|
|
20436
20474
|
let n = r(e), i = r(t);
|
|
20437
20475
|
if (!n || !i) return null;
|
|
20438
|
-
let a =
|
|
20476
|
+
let a = Jx(n), o = Jx(i), s = a.rect, c = o.rect;
|
|
20439
20477
|
return {
|
|
20440
20478
|
a,
|
|
20441
20479
|
b: o,
|
|
@@ -20451,7 +20489,7 @@ function Jx(e) {
|
|
|
20451
20489
|
let r = e.getPluginHost() ?? await e.waitForPluginHost();
|
|
20452
20490
|
return {
|
|
20453
20491
|
viewport: o(),
|
|
20454
|
-
elements: n.flatMap((e) => [...t.querySelectorAll(e)].slice(0, 50).map(
|
|
20492
|
+
elements: n.flatMap((e) => [...t.querySelectorAll(e)].slice(0, 50).map(Jx)),
|
|
20455
20493
|
plugins: r.describe(),
|
|
20456
20494
|
pluginState: r.state.serialize("all")
|
|
20457
20495
|
};
|
|
@@ -20476,10 +20514,10 @@ function Jx(e) {
|
|
|
20476
20514
|
}
|
|
20477
20515
|
//#endregion
|
|
20478
20516
|
//#region src/version.ts
|
|
20479
|
-
var
|
|
20517
|
+
var Xx = "0.2.1-beta.14", Zx = Np, Qx = Pp, $x = () => ({
|
|
20480
20518
|
...km(),
|
|
20481
|
-
version:
|
|
20482
|
-
}),
|
|
20519
|
+
version: Xx
|
|
20520
|
+
}), 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
20521
|
if (!e.length) return null;
|
|
20484
20522
|
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
20523
|
return {
|
|
@@ -20488,36 +20526,36 @@ var Yx = "0.2.1-beta.12", Xx = Np, Zx = Pp, Qx = () => ({
|
|
|
20488
20526
|
width: r - t,
|
|
20489
20527
|
height: i - n
|
|
20490
20528
|
};
|
|
20491
|
-
},
|
|
20492
|
-
function
|
|
20529
|
+
}, 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] : []];
|
|
20530
|
+
function aS(e) {
|
|
20493
20531
|
let { workspace: t, scope: n, guideTolerance: r } = e;
|
|
20494
20532
|
if (n.kind === "workspace") return {
|
|
20495
20533
|
guides: t.guides.map((e) => ({ ...e })),
|
|
20496
|
-
measurements:
|
|
20534
|
+
measurements: iS(t),
|
|
20497
20535
|
distances: [...t.distances]
|
|
20498
20536
|
};
|
|
20499
|
-
let i = new Set(n.elements), a = (e) => e != null && i.has(e), o = (e) => n.regions.some((t) =>
|
|
20537
|
+
let i = new Set(n.elements), a = (e) => e != null && i.has(e), o = (e) => n.regions.some((t) => tS(e, t));
|
|
20500
20538
|
return {
|
|
20501
|
-
guides: t.guides.filter((e) =>
|
|
20502
|
-
measurements:
|
|
20539
|
+
guides: t.guides.filter((e) => rS(e, n.regions, r)).map((e) => ({ ...e })),
|
|
20540
|
+
measurements: iS(t).filter((e) => a(e.elementRef) || o(e.rect)),
|
|
20503
20541
|
distances: t.distances.filter((e) => a(e.elementRefA) || a(e.elementRefB) || o(e.rectA) || o(e.rectB))
|
|
20504
20542
|
};
|
|
20505
20543
|
}
|
|
20506
20544
|
//#endregion
|
|
20507
20545
|
//#region ../mesurer-core/dist/domain.js
|
|
20508
|
-
var
|
|
20546
|
+
var oS = {
|
|
20509
20547
|
opacity: 1,
|
|
20510
20548
|
width: 1,
|
|
20511
20549
|
pattern: "solid",
|
|
20512
20550
|
dashLength: 6,
|
|
20513
20551
|
gap: 4
|
|
20514
|
-
},
|
|
20552
|
+
}, sS = {
|
|
20515
20553
|
opacity: 1,
|
|
20516
20554
|
edgeReveal: !1
|
|
20517
20555
|
};
|
|
20518
20556
|
//#endregion
|
|
20519
20557
|
//#region ../mesurer-core/dist/events.js
|
|
20520
|
-
function
|
|
20558
|
+
function cS() {
|
|
20521
20559
|
let e = /* @__PURE__ */ new Map();
|
|
20522
20560
|
return {
|
|
20523
20561
|
on(t, n) {
|
|
@@ -20535,12 +20573,12 @@ function sS() {
|
|
|
20535
20573
|
}
|
|
20536
20574
|
};
|
|
20537
20575
|
}
|
|
20538
|
-
({ ...
|
|
20576
|
+
({ ...oS }), { ...sS };
|
|
20539
20577
|
//#endregion
|
|
20540
20578
|
//#region ../mesurer-core/dist/plugins.js
|
|
20541
|
-
var
|
|
20542
|
-
function
|
|
20543
|
-
let e = 1, t = 0, n =
|
|
20579
|
+
var lS = 50;
|
|
20580
|
+
function uS() {
|
|
20581
|
+
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
20582
|
n.emit("changed", {
|
|
20545
20583
|
pluginId: e,
|
|
20546
20584
|
reason: t
|
|
@@ -20603,15 +20641,15 @@ function lS() {
|
|
|
20603
20641
|
}
|
|
20604
20642
|
if (o && s) {
|
|
20605
20643
|
let e = y("history");
|
|
20606
|
-
x(s, e) || (p.push(s), p.length >
|
|
20644
|
+
x(s, e) || (p.push(s), p.length > lS && p.shift(), m.length = 0);
|
|
20607
20645
|
}
|
|
20608
20646
|
return l;
|
|
20609
20647
|
}, w = () => {
|
|
20610
20648
|
let e = p.pop();
|
|
20611
|
-
return e ? (m.push(y("history")), m.length >
|
|
20649
|
+
return e ? (m.push(y("history")), m.length > lS && m.shift(), b(e, "history"), h(void 0, "history"), !0) : !1;
|
|
20612
20650
|
}, T = () => {
|
|
20613
20651
|
let e = m.pop();
|
|
20614
|
-
return e ? (p.push(y("history")), p.length >
|
|
20652
|
+
return e ? (p.push(y("history")), p.length > lS && p.shift(), b(e, "history"), h(void 0, "history"), !0) : !1;
|
|
20615
20653
|
}, E = async (e, t) => {
|
|
20616
20654
|
for (let n of [...l.values()].filter((t) => t.name === e)) await n.handler(t);
|
|
20617
20655
|
}, D = (e) => [...u.values()].reverse().find((t) => t.id === e)?.value, O = {
|
|
@@ -20768,8 +20806,8 @@ function lS() {
|
|
|
20768
20806
|
}
|
|
20769
20807
|
//#endregion
|
|
20770
20808
|
//#region ../mesurer-core/dist/runtime.js
|
|
20771
|
-
async function
|
|
20772
|
-
let t =
|
|
20809
|
+
async function dS(e = {}) {
|
|
20810
|
+
let t = uS();
|
|
20773
20811
|
try {
|
|
20774
20812
|
for (let n of e.plugins ?? []) await t.load(n);
|
|
20775
20813
|
return t;
|
|
@@ -20779,17 +20817,17 @@ async function uS(e = {}) {
|
|
|
20779
20817
|
}
|
|
20780
20818
|
//#endregion
|
|
20781
20819
|
//#region src/context.ts
|
|
20782
|
-
var
|
|
20820
|
+
var fS = 10, pS = (e) => ({
|
|
20783
20821
|
left: e.left,
|
|
20784
20822
|
top: e.top,
|
|
20785
20823
|
width: e.width,
|
|
20786
20824
|
height: e.height
|
|
20787
|
-
}),
|
|
20825
|
+
}), mS = (e) => {
|
|
20788
20826
|
let t = /* @__PURE__ */ new Set(), n = [];
|
|
20789
20827
|
for (let r of e) !r?.isConnected || t.has(r) || (t.add(r), n.push(r));
|
|
20790
20828
|
return n;
|
|
20791
|
-
},
|
|
20792
|
-
function
|
|
20829
|
+
}, hS = (e) => e.crypto?.randomUUID?.() ?? `${Date.now()}-${Math.random().toString(36).slice(2)}`;
|
|
20830
|
+
function gS(e) {
|
|
20793
20831
|
let { runtime: t, ownerDocument: n, ownerWindow: r } = e, i = e.request ?? { scope: "workspace" }, a = t.snapshot();
|
|
20794
20832
|
if (!a) throw Error("Mesurer workspace is not ready yet.");
|
|
20795
20833
|
let o = [], s = [], c = { kind: "workspace" }, l = /* @__PURE__ */ new Map();
|
|
@@ -20797,7 +20835,7 @@ function hS(e) {
|
|
|
20797
20835
|
let e = t.annotation(i.annotation);
|
|
20798
20836
|
if (!e) throw Error(`Mesurer annotation not found: ${i.annotation}`);
|
|
20799
20837
|
for (let t of e.resolvedTargets) t.element?.isConnected && l.set(t.element, t.target.id);
|
|
20800
|
-
o =
|
|
20838
|
+
o = mS(e.resolvedTargets.map((e) => e.element));
|
|
20801
20839
|
let n = t.annotationRect(e.id);
|
|
20802
20840
|
n && (s = [n]);
|
|
20803
20841
|
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 +20847,15 @@ function hS(e) {
|
|
|
20809
20847
|
};
|
|
20810
20848
|
} else if (i.scope === "selection") {
|
|
20811
20849
|
let e = t.currentSelection();
|
|
20812
|
-
if (o =
|
|
20813
|
-
s = e.region ? [e.region] : o.map((e) =>
|
|
20814
|
-
} else o =
|
|
20850
|
+
if (o = mS(e.elements), !o.length && !e.region) throw Error("Mesurer has no current selection.");
|
|
20851
|
+
s = e.region ? [e.region] : o.map((e) => pS(e.getBoundingClientRect())), c = { kind: "selection" };
|
|
20852
|
+
} else o = mS([
|
|
20815
20853
|
...t.currentSelection().elements,
|
|
20816
20854
|
...a.measurements.map((e) => e.elementRef),
|
|
20817
20855
|
a.activeMeasurement?.elementRef,
|
|
20818
20856
|
...a.heldDistances.flatMap((e) => [e.elementRefA, e.elementRefB])
|
|
20819
20857
|
]);
|
|
20820
|
-
let u = c.kind === "workspace" ? [] : s.length ? s : o.map((e) =>
|
|
20858
|
+
let u = c.kind === "workspace" ? [] : s.length ? s : o.map((e) => pS(e.getBoundingClientRect())), d = aS({
|
|
20821
20859
|
workspace: {
|
|
20822
20860
|
guides: a.guides,
|
|
20823
20861
|
measurements: a.measurements,
|
|
@@ -20829,8 +20867,8 @@ function hS(e) {
|
|
|
20829
20867
|
elements: o,
|
|
20830
20868
|
regions: u
|
|
20831
20869
|
},
|
|
20832
|
-
guideTolerance: a.guideRelevanceTolerance ??
|
|
20833
|
-
}), f = d.measurements, p = d.distances, m = d.guides, h =
|
|
20870
|
+
guideTolerance: a.guideRelevanceTolerance ?? fS
|
|
20871
|
+
}), f = d.measurements, p = d.distances, m = d.guides, h = mS([
|
|
20834
20872
|
...o,
|
|
20835
20873
|
...f.map((e) => e.elementRef),
|
|
20836
20874
|
...p.flatMap((e) => [e.elementRefA, e.elementRefB])
|
|
@@ -20842,12 +20880,12 @@ function hS(e) {
|
|
|
20842
20880
|
let t = l.get(e) ?? y();
|
|
20843
20881
|
return g.set(e, t), {
|
|
20844
20882
|
ref: t,
|
|
20845
|
-
inspection:
|
|
20883
|
+
inspection: Kx(e)
|
|
20846
20884
|
};
|
|
20847
20885
|
}), x = f.map((e) => {
|
|
20848
20886
|
let t = {
|
|
20849
20887
|
id: e.id,
|
|
20850
|
-
rect:
|
|
20888
|
+
rect: pS(e.rect),
|
|
20851
20889
|
deltaX: e.deltaX,
|
|
20852
20890
|
deltaY: e.deltaY
|
|
20853
20891
|
};
|
|
@@ -20857,8 +20895,8 @@ function hS(e) {
|
|
|
20857
20895
|
}), S = p.map((e) => {
|
|
20858
20896
|
let t = {
|
|
20859
20897
|
id: e.id,
|
|
20860
|
-
rectA:
|
|
20861
|
-
rectB:
|
|
20898
|
+
rectA: pS(e.rectA),
|
|
20899
|
+
rectB: pS(e.rectB),
|
|
20862
20900
|
horizontal: e.horizontal ? { ...e.horizontal } : null,
|
|
20863
20901
|
vertical: e.vertical ? { ...e.vertical } : null
|
|
20864
20902
|
}, n = e.elementRefA ? g.get(e.elementRefA) : void 0, r = e.elementRefB ? g.get(e.elementRefB) : void 0;
|
|
@@ -20866,7 +20904,7 @@ function hS(e) {
|
|
|
20866
20904
|
});
|
|
20867
20905
|
return {
|
|
20868
20906
|
schema: "mesurer.context/v1",
|
|
20869
|
-
id:
|
|
20907
|
+
id: hS(r),
|
|
20870
20908
|
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
20871
20909
|
scope: c,
|
|
20872
20910
|
page: {
|
|
@@ -20881,7 +20919,7 @@ function hS(e) {
|
|
|
20881
20919
|
scrollY: r.scrollY
|
|
20882
20920
|
},
|
|
20883
20921
|
coordinateSpace: "viewport-css-px",
|
|
20884
|
-
regions: c.kind === "workspace" ? [] : s.map(
|
|
20922
|
+
regions: c.kind === "workspace" ? [] : s.map(pS),
|
|
20885
20923
|
visualState: {
|
|
20886
20924
|
rulersVisible: a.rulersVisible,
|
|
20887
20925
|
xrayVisible: a.xrayVisible
|
|
@@ -20895,48 +20933,48 @@ function hS(e) {
|
|
|
20895
20933
|
}
|
|
20896
20934
|
};
|
|
20897
20935
|
}
|
|
20898
|
-
var
|
|
20899
|
-
function
|
|
20936
|
+
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)}`;
|
|
20937
|
+
function yS(e) {
|
|
20900
20938
|
let t = [
|
|
20901
20939
|
"Mesurer visual context",
|
|
20902
20940
|
"",
|
|
20903
20941
|
`Page: ${e.page.url}`,
|
|
20904
20942
|
`Viewport: ${e.viewport.width} × ${e.viewport.height} CSS px; scroll x=${e.viewport.scrollX} y=${e.viewport.scrollY}`
|
|
20905
20943
|
];
|
|
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}: ${
|
|
20944
|
+
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
20945
|
t.push("", "Targets");
|
|
20908
20946
|
for (let n of e.targets) {
|
|
20909
20947
|
let e = n.inspection;
|
|
20910
|
-
t.push(`[${n.ref}] ${e.selector}`, ` rect: ${
|
|
20948
|
+
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
20949
|
}
|
|
20912
20950
|
}
|
|
20913
20951
|
if (e.visualContext.guides.length) {
|
|
20914
20952
|
t.push("", "Relevant guides");
|
|
20915
|
-
for (let n of e.visualContext.guides) t.push(`- ${n.orientation} ${n.orientation === "vertical" ? "x" : "y"}=${
|
|
20953
|
+
for (let n of e.visualContext.guides) t.push(`- ${n.orientation} ${n.orientation === "vertical" ? "x" : "y"}=${_S(n.position)}`);
|
|
20916
20954
|
}
|
|
20917
20955
|
if (e.visualContext.layoutGuides.length) {
|
|
20918
20956
|
t.push("", "Layout guides");
|
|
20919
20957
|
for (let n of e.visualContext.layoutGuides) {
|
|
20920
20958
|
if (!n.visible) continue;
|
|
20921
|
-
let e = n.kind === "grid" ? `grid ${
|
|
20959
|
+
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
20960
|
t.push(`- ${e}; color=${n.color}; opacity=${Math.round(n.opacity * 100)}%`);
|
|
20923
20961
|
}
|
|
20924
20962
|
}
|
|
20925
20963
|
if (e.visualContext.measurements.length) {
|
|
20926
20964
|
t.push("", "Relevant measurements");
|
|
20927
|
-
for (let n of e.visualContext.measurements) t.push(`- ${n.targetRef ? `${n.targetRef}: ` : ""}${
|
|
20965
|
+
for (let n of e.visualContext.measurements) t.push(`- ${n.targetRef ? `${n.targetRef}: ` : ""}${vS(n.rect)}; delta=${_S(n.deltaX)} × ${_S(n.deltaY)}`);
|
|
20928
20966
|
}
|
|
20929
20967
|
if (e.visualContext.distances.length) {
|
|
20930
20968
|
t.push("", "Relevant distances");
|
|
20931
20969
|
for (let n of e.visualContext.distances) {
|
|
20932
|
-
let e = [n.targetARef, n.targetBRef].filter(Boolean).join(" → "), r = [n.horizontal ? `horizontal=${
|
|
20970
|
+
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
20971
|
t.push(`- ${e ? `${e}: ` : ""}${r || "overlapping"}`);
|
|
20934
20972
|
}
|
|
20935
20973
|
}
|
|
20936
20974
|
return t.join("\n").trimEnd();
|
|
20937
20975
|
}
|
|
20938
|
-
function
|
|
20939
|
-
let t =
|
|
20976
|
+
function bS(e) {
|
|
20977
|
+
let t = nS([
|
|
20940
20978
|
...e.regions,
|
|
20941
20979
|
...e.targets.map((e) => e.inspection.rect),
|
|
20942
20980
|
...e.visualContext.measurements.map((e) => e.rect),
|
|
@@ -20966,7 +21004,7 @@ function yS(e) {
|
|
|
20966
21004
|
captures: n
|
|
20967
21005
|
};
|
|
20968
21006
|
}
|
|
20969
|
-
var
|
|
21007
|
+
var xS = (e, t, n, r, i) => {
|
|
20970
21008
|
!Number.isFinite(r) || !Number.isFinite(i) || Math.abs(r - i) < .01 || e.push({
|
|
20971
21009
|
kind: t,
|
|
20972
21010
|
label: n,
|
|
@@ -20975,16 +21013,16 @@ var bS = (e, t, n, r, i) => {
|
|
|
20975
21013
|
delta: i - r,
|
|
20976
21014
|
unit: "px"
|
|
20977
21015
|
});
|
|
20978
|
-
},
|
|
21016
|
+
}, SS = (e, t, n, r) => e.push({
|
|
20979
21017
|
kind: "missing",
|
|
20980
21018
|
evidence: t,
|
|
20981
21019
|
id: n,
|
|
20982
21020
|
label: r
|
|
20983
|
-
}),
|
|
20984
|
-
function
|
|
21021
|
+
}), 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;
|
|
21022
|
+
function wS(e) {
|
|
20985
21023
|
let t = e.runtime.annotation(e.annotationId);
|
|
20986
21024
|
if (!t) throw Error(`Mesurer annotation not found: ${e.annotationId}`);
|
|
20987
|
-
let n =
|
|
21025
|
+
let n = gS({
|
|
20988
21026
|
runtime: e.runtime,
|
|
20989
21027
|
ownerDocument: e.ownerDocument,
|
|
20990
21028
|
ownerWindow: e.ownerWindow,
|
|
@@ -20994,42 +21032,42 @@ function CS(e) {
|
|
|
20994
21032
|
if (n.scope.kind !== "annotation") throw Error("Mesurer annotation context invariant failed.");
|
|
20995
21033
|
let r = e.runtime.snapshot();
|
|
20996
21034
|
if (!r) throw Error("Mesurer workspace is not ready yet.");
|
|
20997
|
-
let i =
|
|
21035
|
+
let i = iS({
|
|
20998
21036
|
measurements: r.measurements,
|
|
20999
21037
|
activeMeasurement: r.activeMeasurement
|
|
21000
21038
|
}), a = [];
|
|
21001
21039
|
for (let e of t.baseline.targets) {
|
|
21002
21040
|
let t = n.targets.find((t) => t.ref === e.id);
|
|
21003
21041
|
if (!t) {
|
|
21004
|
-
|
|
21042
|
+
SS(a, "target", e.id, e.selector);
|
|
21005
21043
|
continue;
|
|
21006
21044
|
}
|
|
21007
|
-
|
|
21045
|
+
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
21046
|
}
|
|
21009
21047
|
for (let e of t.baseline.guides) {
|
|
21010
21048
|
let t = n.visualContext.guides.find((t) => t.id === e.id) ?? r.guides.find((t) => t.id === e.id);
|
|
21011
21049
|
if (!t) {
|
|
21012
|
-
|
|
21050
|
+
SS(a, "guide", e.id, `${e.orientation} guide ${e.id}`);
|
|
21013
21051
|
continue;
|
|
21014
21052
|
}
|
|
21015
|
-
|
|
21053
|
+
xS(a, "guide", `${e.orientation} guide ${e.id}`, e.position, t.position);
|
|
21016
21054
|
}
|
|
21017
21055
|
for (let e of t.baseline.measurements) {
|
|
21018
21056
|
let r = n.visualContext.measurements.find((t) => t.id === e.id) ?? i.find((t) => t.id === e.id);
|
|
21019
21057
|
if (!r) {
|
|
21020
|
-
let r = t.baseline.targets.find((t) =>
|
|
21021
|
-
r && n.targets.some((e) => e.ref === r.id) ||
|
|
21058
|
+
let r = t.baseline.targets.find((t) => CS(t.rect, e.rect));
|
|
21059
|
+
r && n.targets.some((e) => e.ref === r.id) || SS(a, "measurement", e.id, e.id);
|
|
21022
21060
|
continue;
|
|
21023
21061
|
}
|
|
21024
|
-
|
|
21062
|
+
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
21063
|
}
|
|
21026
21064
|
for (let e of t.baseline.distances) {
|
|
21027
21065
|
let t = n.visualContext.distances.find((t) => t.id === e.id) ?? r.heldDistances.find((t) => t.id === e.id);
|
|
21028
21066
|
if (!t) {
|
|
21029
|
-
|
|
21067
|
+
SS(a, "distance", e.id, e.id);
|
|
21030
21068
|
continue;
|
|
21031
21069
|
}
|
|
21032
|
-
e.horizontal && t.horizontal ?
|
|
21070
|
+
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
21071
|
}
|
|
21034
21072
|
return {
|
|
21035
21073
|
schema: "mesurer.review/v1",
|
|
@@ -21041,7 +21079,7 @@ function CS(e) {
|
|
|
21041
21079
|
changes: a
|
|
21042
21080
|
};
|
|
21043
21081
|
}
|
|
21044
|
-
async function
|
|
21082
|
+
async function TS(e, t, n) {
|
|
21045
21083
|
try {
|
|
21046
21084
|
if (t.navigator.clipboard?.writeText) {
|
|
21047
21085
|
await t.navigator.clipboard.writeText(n);
|
|
@@ -21055,43 +21093,43 @@ async function wS(e, t, n) {
|
|
|
21055
21093
|
}
|
|
21056
21094
|
//#endregion
|
|
21057
21095
|
//#region src/layout-guides.ts
|
|
21058
|
-
var
|
|
21096
|
+
var ES = Kv, DS = qv, OS = () => ({
|
|
21059
21097
|
...yy(),
|
|
21060
|
-
version:
|
|
21061
|
-
}),
|
|
21098
|
+
version: Xx
|
|
21099
|
+
}), kS = "mesurer.context", AS = "context:v1", jS = "mesurer.context.settings", MS = "context.ui", NS = "data-mesurer-direct-text-edit-active", PS = {
|
|
21062
21100
|
viewBox: "0 0 256 256",
|
|
21063
21101
|
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
|
-
},
|
|
21102
|
+
}, FS = {
|
|
21065
21103
|
viewBox: "0 0 256 256",
|
|
21066
21104
|
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
|
-
},
|
|
21105
|
+
}, IS = {
|
|
21068
21106
|
viewBox: "0 0 256 256",
|
|
21069
21107
|
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
|
-
},
|
|
21108
|
+
}, LS = async (e, t, n = 1) => {
|
|
21071
21109
|
await e.fonts?.ready;
|
|
21072
21110
|
for (let e = 0; e < Math.max(1, n); e += 1) await new Promise((e) => t.requestAnimationFrame(() => e()));
|
|
21073
|
-
},
|
|
21074
|
-
let i = async (i) =>
|
|
21111
|
+
}, RS = (e, t, n, r) => {
|
|
21112
|
+
let i = async (i) => gS({
|
|
21075
21113
|
runtime: e,
|
|
21076
21114
|
ownerDocument: t,
|
|
21077
21115
|
ownerWindow: n,
|
|
21078
21116
|
request: i,
|
|
21079
21117
|
layoutGuides: r()
|
|
21080
|
-
}), a = async (e) =>
|
|
21118
|
+
}), a = async (e) => yS(await i(e));
|
|
21081
21119
|
return {
|
|
21082
21120
|
context: i,
|
|
21083
21121
|
contextText: a,
|
|
21084
|
-
copyContext: async (e) =>
|
|
21122
|
+
copyContext: async (e) => TS(t, n, await a(e)),
|
|
21085
21123
|
select: async (r) => {
|
|
21086
21124
|
let a = Array.isArray(r) ? [...r] : [String(r)];
|
|
21087
|
-
return e.select(a), await
|
|
21125
|
+
return e.select(a), await LS(t, n), i({ scope: "selection" });
|
|
21088
21126
|
},
|
|
21089
21127
|
annotations: async () => e.annotations(),
|
|
21090
21128
|
removeAnnotation: async (r) => {
|
|
21091
|
-
e.removeAnnotation(r), await
|
|
21129
|
+
e.removeAnnotation(r), await LS(t, n);
|
|
21092
21130
|
},
|
|
21093
21131
|
review: async (i) => {
|
|
21094
|
-
if (await
|
|
21132
|
+
if (await LS(t, n), i) return wS({
|
|
21095
21133
|
runtime: e,
|
|
21096
21134
|
ownerDocument: t,
|
|
21097
21135
|
ownerWindow: n,
|
|
@@ -21099,7 +21137,7 @@ var TS = Kv, ES = qv, DS = () => ({
|
|
|
21099
21137
|
layoutGuides: r()
|
|
21100
21138
|
});
|
|
21101
21139
|
let a = r();
|
|
21102
|
-
return e.annotations().map((r) =>
|
|
21140
|
+
return e.annotations().map((r) => wS({
|
|
21103
21141
|
runtime: e,
|
|
21104
21142
|
ownerDocument: t,
|
|
21105
21143
|
ownerWindow: n,
|
|
@@ -21107,38 +21145,38 @@ var TS = Kv, ES = qv, DS = () => ({
|
|
|
21107
21145
|
layoutGuides: a
|
|
21108
21146
|
}));
|
|
21109
21147
|
},
|
|
21110
|
-
capturePlan: async (e) =>
|
|
21148
|
+
capturePlan: async (e) => bS(await i(e)),
|
|
21111
21149
|
prepareCapture: async () => {
|
|
21112
|
-
e.prepareCapture(), await
|
|
21150
|
+
e.prepareCapture(), await LS(t, n);
|
|
21113
21151
|
},
|
|
21114
21152
|
finishCapture: async () => {
|
|
21115
|
-
e.finishCapture(), await
|
|
21153
|
+
e.finishCapture(), await LS(t, n);
|
|
21116
21154
|
}
|
|
21117
21155
|
};
|
|
21118
|
-
},
|
|
21156
|
+
}, zS = (e) => {
|
|
21119
21157
|
let t = e.currentSelection();
|
|
21120
21158
|
return t.elements.length > 0 || t.region !== null;
|
|
21121
21159
|
};
|
|
21122
|
-
function
|
|
21160
|
+
function BS(e = {}) {
|
|
21123
21161
|
return {
|
|
21124
|
-
id:
|
|
21125
|
-
version:
|
|
21162
|
+
id: kS,
|
|
21163
|
+
version: Xx,
|
|
21126
21164
|
requires: ["runtime:solid"],
|
|
21127
|
-
provides: [
|
|
21165
|
+
provides: [AS],
|
|
21128
21166
|
setup(t) {
|
|
21129
21167
|
let n = t.service.get("runtime:solid");
|
|
21130
21168
|
if (!n) throw Error("Mesurer context plugin requires the renderer runtime service.");
|
|
21131
|
-
let r = n.createWorkspaceRuntime(
|
|
21132
|
-
t.service.provide(
|
|
21133
|
-
id:
|
|
21169
|
+
let r = n.createWorkspaceRuntime(kS), i = RS(r, n.ownerDocument, n.ownerWindow, () => t.service.get(DS)?.list() ?? []);
|
|
21170
|
+
t.service.provide(AS, i), t.state.register({
|
|
21171
|
+
id: jS,
|
|
21134
21172
|
initial: { ui: e.ui ?? !0 },
|
|
21135
21173
|
persist: !0
|
|
21136
21174
|
}), t.state.register({
|
|
21137
|
-
id:
|
|
21138
|
-
initial: { hasSelection:
|
|
21175
|
+
id: MS,
|
|
21176
|
+
initial: { hasSelection: zS(r) }
|
|
21139
21177
|
});
|
|
21140
|
-
let a = () => t.state.get("mesurer.context.settings")?.ui ?? !0, o = () => t.state.get(
|
|
21141
|
-
t.state.update(
|
|
21178
|
+
let a = () => t.state.get("mesurer.context.settings")?.ui ?? !0, o = () => t.state.get(MS)?.hasSelection === !0, s = (e) => {
|
|
21179
|
+
t.state.update(jS, (t) => ({
|
|
21142
21180
|
...t,
|
|
21143
21181
|
ui: e
|
|
21144
21182
|
}));
|
|
@@ -21152,12 +21190,12 @@ function zS(e = {}) {
|
|
|
21152
21190
|
region: e.region ? { ...e.region } : null
|
|
21153
21191
|
}, r.selectGestureActive() ? c?.abandonNoteComposer() : n && c?.closeNoteComposer();
|
|
21154
21192
|
let i = e.elements.length > 0 || e.region !== null;
|
|
21155
|
-
i !== (t.state.get(
|
|
21193
|
+
i !== (t.state.get(MS)?.hasSelection ?? !1) && t.state.update(MS, () => ({ hasSelection: i }));
|
|
21156
21194
|
});
|
|
21157
21195
|
t.command.register("context.copy", () => i.copyContext()), t.command.register("context.copy-selection", () => i.copyContext({ scope: "selection" }));
|
|
21158
21196
|
let g = () => {
|
|
21159
21197
|
let e = u?.element;
|
|
21160
|
-
e && (n.rendererRoot?.hasAttribute(
|
|
21198
|
+
e && (n.rendererRoot?.hasAttribute(NS) ? e.setAttribute(NS, "true") : e.removeAttribute(NS));
|
|
21161
21199
|
}, _ = () => {
|
|
21162
21200
|
d?.disconnect(), d = null, c = null, l?.(), l = null, u?.dispose(), u = null;
|
|
21163
21201
|
}, v = () => {
|
|
@@ -21166,7 +21204,7 @@ function zS(e = {}) {
|
|
|
21166
21204
|
let e = new n.ownerWindow.MutationObserver(g);
|
|
21167
21205
|
d = e, e.observe(n.rendererRoot, {
|
|
21168
21206
|
attributes: !0,
|
|
21169
|
-
attributeFilter: [
|
|
21207
|
+
attributeFilter: [NS]
|
|
21170
21208
|
}), g();
|
|
21171
21209
|
}
|
|
21172
21210
|
let e = {
|
|
@@ -21190,7 +21228,7 @@ function zS(e = {}) {
|
|
|
21190
21228
|
command: "context.copy",
|
|
21191
21229
|
order: 70,
|
|
21192
21230
|
toolbarMode: "always",
|
|
21193
|
-
icon:
|
|
21231
|
+
icon: PS,
|
|
21194
21232
|
hidden: () => !a()
|
|
21195
21233
|
}), t.tool.register({
|
|
21196
21234
|
id: "context.copy-selection",
|
|
@@ -21199,7 +21237,7 @@ function zS(e = {}) {
|
|
|
21199
21237
|
command: "context.copy-selection",
|
|
21200
21238
|
order: 71,
|
|
21201
21239
|
toolbarMode: "always",
|
|
21202
|
-
icon:
|
|
21240
|
+
icon: FS,
|
|
21203
21241
|
hidden: () => !a(),
|
|
21204
21242
|
disabled: () => !o()
|
|
21205
21243
|
}), t.tool.register({
|
|
@@ -21209,7 +21247,7 @@ function zS(e = {}) {
|
|
|
21209
21247
|
command: "context.add-note",
|
|
21210
21248
|
order: 72,
|
|
21211
21249
|
toolbarMode: "always",
|
|
21212
|
-
icon:
|
|
21250
|
+
icon: IS,
|
|
21213
21251
|
hidden: () => !a(),
|
|
21214
21252
|
disabled: () => !o()
|
|
21215
21253
|
}), t.settings.register({
|
|
@@ -21232,7 +21270,7 @@ function zS(e = {}) {
|
|
|
21232
21270
|
}
|
|
21233
21271
|
//#endregion
|
|
21234
21272
|
//#region src/host-layer.ts
|
|
21235
|
-
var
|
|
21273
|
+
var VS = {
|
|
21236
21274
|
display: "block",
|
|
21237
21275
|
position: "fixed",
|
|
21238
21276
|
inset: "0",
|
|
@@ -21274,48 +21312,48 @@ var BS = {
|
|
|
21274
21312
|
"letter-spacing": "normal",
|
|
21275
21313
|
direction: "ltr"
|
|
21276
21314
|
};
|
|
21277
|
-
function VS(e) {
|
|
21278
|
-
for (let [t, n] of Object.entries(BS)) e.style.setProperty(t, n, "important");
|
|
21279
|
-
}
|
|
21280
21315
|
function HS(e) {
|
|
21316
|
+
for (let [t, n] of Object.entries(VS)) e.style.setProperty(t, n, "important");
|
|
21317
|
+
}
|
|
21318
|
+
function US(e) {
|
|
21281
21319
|
return "popover" in e && "showPopover" in e && typeof e.showPopover == "function" && "hidePopover" in e && typeof e.hidePopover == "function";
|
|
21282
21320
|
}
|
|
21283
|
-
var
|
|
21284
|
-
function
|
|
21285
|
-
if (!
|
|
21321
|
+
var WS = (e) => "newState" in e, GS = (e) => e.localName === "dialog";
|
|
21322
|
+
function KS(e) {
|
|
21323
|
+
if (!GS(e) || !e.open) return !1;
|
|
21286
21324
|
try {
|
|
21287
21325
|
return e.matches(":modal");
|
|
21288
21326
|
} catch {
|
|
21289
21327
|
return !1;
|
|
21290
21328
|
}
|
|
21291
21329
|
}
|
|
21292
|
-
function
|
|
21293
|
-
|
|
21330
|
+
function qS(e, t, n = !0) {
|
|
21331
|
+
HS(e);
|
|
21294
21332
|
let r = e.ownerDocument, i = r.defaultView ?? window, a = t, o = !1, s = "fixed", c = !1, l = 0, u = [];
|
|
21295
|
-
if (n &&
|
|
21333
|
+
if (n && US(e) && (e.popover = "manual"), t.append(e), n && US(e)) try {
|
|
21296
21334
|
e.showPopover(), c = e.matches(":popover-open"), c && (s = "top-layer");
|
|
21297
21335
|
} catch {
|
|
21298
21336
|
e.removeAttribute("popover");
|
|
21299
21337
|
}
|
|
21300
21338
|
let d = () => {
|
|
21301
|
-
if (!(!c || !
|
|
21339
|
+
if (!(!c || !US(e))) try {
|
|
21302
21340
|
e.matches(":popover-open") || e.showPopover();
|
|
21303
21341
|
} catch {}
|
|
21304
21342
|
}, f = (t) => {
|
|
21305
21343
|
if (e.parentNode === t) return;
|
|
21306
|
-
let n = c &&
|
|
21307
|
-
if (n &&
|
|
21344
|
+
let n = c && US(e) && e.matches(":popover-open");
|
|
21345
|
+
if (n && US(e)) try {
|
|
21308
21346
|
e.hidePopover();
|
|
21309
21347
|
} catch {}
|
|
21310
|
-
t.append(e),
|
|
21348
|
+
t.append(e), HS(e), n && d();
|
|
21311
21349
|
}, p = () => {
|
|
21312
|
-
u = u.filter((e) => e.isConnected &&
|
|
21350
|
+
u = u.filter((e) => e.isConnected && KS(e)), f(u.at(-1) ?? a);
|
|
21313
21351
|
}, m = (e) => {
|
|
21314
21352
|
u = u.filter((t) => t !== e), u.push(e), p();
|
|
21315
21353
|
}, h = (e) => {
|
|
21316
21354
|
u = u.filter((t) => t !== e), p();
|
|
21317
21355
|
}, g = () => {
|
|
21318
|
-
if (!(o || !c || !
|
|
21356
|
+
if (!(o || !c || !US(e))) try {
|
|
21319
21357
|
e.matches(":popover-open") && e.hidePopover(), e.showPopover();
|
|
21320
21358
|
} catch {}
|
|
21321
21359
|
}, _ = () => {
|
|
@@ -21324,27 +21362,27 @@ function KS(e, t, n = !0) {
|
|
|
21324
21362
|
}));
|
|
21325
21363
|
}, v = (t) => {
|
|
21326
21364
|
if (!c || t.target === e) return;
|
|
21327
|
-
let n =
|
|
21365
|
+
let n = WS(t) ? t.newState : void 0, r = t.target;
|
|
21328
21366
|
if (r instanceof i.Element) {
|
|
21329
|
-
if (
|
|
21330
|
-
n === "open" &&
|
|
21367
|
+
if (GS(r)) {
|
|
21368
|
+
n === "open" && KS(r) ? (m(r), _()) : n === "closed" ? h(r) : n === "open" && _();
|
|
21331
21369
|
return;
|
|
21332
21370
|
}
|
|
21333
21371
|
n === "open" && r.hasAttribute("popover") && _();
|
|
21334
21372
|
}
|
|
21335
21373
|
}, y = (e) => {
|
|
21336
21374
|
let t = e.target;
|
|
21337
|
-
t instanceof i.Element &&
|
|
21375
|
+
t instanceof i.Element && GS(t) && h(t);
|
|
21338
21376
|
}, b = () => {
|
|
21339
21377
|
r.fullscreenElement && _();
|
|
21340
21378
|
}, x = (e) => {
|
|
21341
|
-
|
|
21342
|
-
for (let t of e.querySelectorAll("dialog"))
|
|
21379
|
+
KS(e) && m(e);
|
|
21380
|
+
for (let t of e.querySelectorAll("dialog")) KS(t) && m(t);
|
|
21343
21381
|
}, S = new i.MutationObserver((e) => {
|
|
21344
21382
|
if (c) for (let t of e) {
|
|
21345
21383
|
if (t.type === "attributes") {
|
|
21346
21384
|
let e = t.target;
|
|
21347
|
-
e instanceof i.Element &&
|
|
21385
|
+
e instanceof i.Element && GS(e) && (KS(e) ? m(e) : h(e));
|
|
21348
21386
|
}
|
|
21349
21387
|
for (let e of t.addedNodes) e instanceof i.Element && x(e);
|
|
21350
21388
|
u.some((e) => !e.isConnected) && p();
|
|
@@ -21360,7 +21398,7 @@ function KS(e, t, n = !0) {
|
|
|
21360
21398
|
bringToFront: g,
|
|
21361
21399
|
dispose() {
|
|
21362
21400
|
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 &&
|
|
21401
|
+
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
21402
|
e.hidePopover();
|
|
21365
21403
|
} catch {}
|
|
21366
21404
|
u = [];
|
|
@@ -21370,28 +21408,28 @@ function KS(e, t, n = !0) {
|
|
|
21370
21408
|
}
|
|
21371
21409
|
//#endregion
|
|
21372
21410
|
//#region src/plugins/codex/index.ts
|
|
21373
|
-
var
|
|
21411
|
+
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
21412
|
"Implement the current human feedback from Mesurer in this project.",
|
|
21375
21413
|
"Treat the rendered page as the source of truth, preserve unrelated Mesurer review state,",
|
|
21376
21414
|
"and verify the affected UI in the live page with Mesurer before claiming completion."
|
|
21377
|
-
].join(" "),
|
|
21415
|
+
].join(" "), oC = {
|
|
21378
21416
|
viewBox: "0 0 256 256",
|
|
21379
21417
|
paths: ["M224,48,32,120l88,32,32,88Z M120,152l104-104"]
|
|
21380
|
-
},
|
|
21418
|
+
}, sC = {
|
|
21381
21419
|
viewBox: "0 0 256 256",
|
|
21382
21420
|
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
|
-
},
|
|
21421
|
+
}, cC = {
|
|
21384
21422
|
viewBox: "0 0 256 256",
|
|
21385
21423
|
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
|
-
},
|
|
21424
|
+
}, lC = () => {
|
|
21387
21425
|
try {
|
|
21388
21426
|
let e = globalThis.location;
|
|
21389
21427
|
return e?.origin ? `mesurer-codex-ui:v2:${e.origin}${e.pathname}` : null;
|
|
21390
21428
|
} catch {
|
|
21391
21429
|
return null;
|
|
21392
21430
|
}
|
|
21393
|
-
},
|
|
21394
|
-
let e =
|
|
21431
|
+
}, uC = () => {
|
|
21432
|
+
let e = lC();
|
|
21395
21433
|
if (!e) return null;
|
|
21396
21434
|
try {
|
|
21397
21435
|
let t = globalThis.sessionStorage?.getItem(e);
|
|
@@ -21416,18 +21454,18 @@ var qS = "mesurer.codex", JS = "codex:v1", YS = "mesurer.plugin.before-disable",
|
|
|
21416
21454
|
} catch {
|
|
21417
21455
|
return null;
|
|
21418
21456
|
}
|
|
21419
|
-
},
|
|
21420
|
-
let t =
|
|
21457
|
+
}, dC = (e) => {
|
|
21458
|
+
let t = lC();
|
|
21421
21459
|
if (t) try {
|
|
21422
21460
|
globalThis.sessionStorage?.setItem(t, JSON.stringify(e));
|
|
21423
21461
|
} catch {}
|
|
21424
|
-
},
|
|
21462
|
+
}, fC = async (e) => {
|
|
21425
21463
|
let t = window.__MESURER_HOST__?.codexBridge;
|
|
21426
|
-
if (!t) throw Error(
|
|
21464
|
+
if (!t) throw Error(iC);
|
|
21427
21465
|
let n = await t(e);
|
|
21428
21466
|
if (n.ok === !1) throw Error(n.error ?? "Codex Bridge request failed.");
|
|
21429
21467
|
return n;
|
|
21430
|
-
},
|
|
21468
|
+
}, pC = (e) => {
|
|
21431
21469
|
let t = e.runtime;
|
|
21432
21470
|
return !t || ![
|
|
21433
21471
|
"shared",
|
|
@@ -21445,10 +21483,10 @@ var qS = "mesurer.codex", JS = "codex:v1", YS = "mesurer.plugin.before-disable",
|
|
|
21445
21483
|
available: t.available === !0,
|
|
21446
21484
|
reason: t.reason
|
|
21447
21485
|
};
|
|
21448
|
-
},
|
|
21486
|
+
}, mC = (e) => ({
|
|
21449
21487
|
thread: e.thread?.trim() || null,
|
|
21450
21488
|
threads: Array.isArray(e.threads) ? e.threads.filter((e) => e.trim().length > 0) : []
|
|
21451
|
-
}),
|
|
21489
|
+
}), hC = (e) => {
|
|
21452
21490
|
let t = e.deliveryId?.trim(), n = e.thread?.trim(), r = e.status;
|
|
21453
21491
|
if (!t || !n || !r) throw Error("Codex Bridge returned an invalid delivery state.");
|
|
21454
21492
|
let i = {
|
|
@@ -21460,7 +21498,7 @@ var qS = "mesurer.codex", JS = "codex:v1", YS = "mesurer.plugin.before-disable",
|
|
|
21460
21498
|
updatedAt: Number.isFinite(e.updatedAt) ? Number(e.updatedAt) : 0
|
|
21461
21499
|
};
|
|
21462
21500
|
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
|
-
},
|
|
21501
|
+
}, gC = (e) => ({
|
|
21464
21502
|
thread: e.thread?.trim() || null,
|
|
21465
21503
|
threads: Array.isArray(e.threadDetails) ? e.threadDetails.flatMap((e) => {
|
|
21466
21504
|
let t = e.id?.trim() ?? "";
|
|
@@ -21472,7 +21510,7 @@ var qS = "mesurer.codex", JS = "codex:v1", YS = "mesurer.plugin.before-disable",
|
|
|
21472
21510
|
}] : [];
|
|
21473
21511
|
}) : [],
|
|
21474
21512
|
hasMore: e.hasMore === !0
|
|
21475
|
-
}),
|
|
21513
|
+
}), _C = async (e, t, n) => {
|
|
21476
21514
|
let r = t?.instruction?.trim() || n, i = await e.annotations(), a = t?.annotationIds, o = a ? a.flatMap((e) => {
|
|
21477
21515
|
let t = i.find((t) => t.id === e);
|
|
21478
21516
|
return t ? [t] : [];
|
|
@@ -21495,18 +21533,18 @@ var qS = "mesurer.codex", JS = "codex:v1", YS = "mesurer.plugin.before-disable",
|
|
|
21495
21533
|
])
|
|
21496
21534
|
].join("\n").trimEnd()
|
|
21497
21535
|
};
|
|
21498
|
-
},
|
|
21499
|
-
function
|
|
21500
|
-
let t = e.instruction?.trim() ||
|
|
21536
|
+
}, 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"));
|
|
21537
|
+
function xC(e = {}) {
|
|
21538
|
+
let t = e.instruction?.trim() || aC, n = e.ui ?? !0, r = e.clearCompletedAnnotations ?? !0;
|
|
21501
21539
|
return {
|
|
21502
|
-
id:
|
|
21503
|
-
version:
|
|
21504
|
-
requires: [
|
|
21505
|
-
provides: [
|
|
21540
|
+
id: JS,
|
|
21541
|
+
version: Xx,
|
|
21542
|
+
requires: [AS],
|
|
21543
|
+
provides: [YS],
|
|
21506
21544
|
async setup(e) {
|
|
21507
|
-
let i = e.service.get(
|
|
21545
|
+
let i = e.service.get(AS);
|
|
21508
21546
|
if (!i) throw Error("Mesurer Codex plugin requires context() from mesurer-solid/plugins.");
|
|
21509
|
-
let a = n ?
|
|
21547
|
+
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
21548
|
id: a.delivery.id,
|
|
21511
21549
|
thread: a.delivery.thread,
|
|
21512
21550
|
status: a.delivery.status,
|
|
@@ -21515,38 +21553,38 @@ function bC(e = {}) {
|
|
|
21515
21553
|
dispatch: a.delivery.dispatch ?? null,
|
|
21516
21554
|
dispatchError: a.delivery.dispatchError ?? null
|
|
21517
21555
|
} : null, x = 0, S = 0, C = null, w = !1, T = null, E = async (e) => {
|
|
21518
|
-
if (e.action === "activate" || e.action === "runtime") return
|
|
21556
|
+
if (e.action === "activate" || e.action === "runtime") return fC(e);
|
|
21519
21557
|
if (!T) throw Error("Codex Bridge lease is not active for this plugin.");
|
|
21520
|
-
return
|
|
21558
|
+
return fC({
|
|
21521
21559
|
...e,
|
|
21522
21560
|
leaseId: T
|
|
21523
21561
|
});
|
|
21524
21562
|
}, D = async () => {
|
|
21525
21563
|
let e = T;
|
|
21526
21564
|
if (e) {
|
|
21527
|
-
if ((await
|
|
21565
|
+
if ((await fC({
|
|
21528
21566
|
action: "deactivate",
|
|
21529
21567
|
leaseId: e
|
|
21530
21568
|
})).released !== !0) throw Error("Codex Bridge did not confirm lease release.");
|
|
21531
21569
|
T = null;
|
|
21532
21570
|
}
|
|
21533
|
-
}, O = await
|
|
21571
|
+
}, O = await fC({
|
|
21534
21572
|
action: "activate",
|
|
21535
21573
|
thread: u ?? l ?? void 0
|
|
21536
21574
|
}), k = O.leaseId?.trim();
|
|
21537
21575
|
if (!k) throw Error("Codex Bridge did not return an activation lease.");
|
|
21538
|
-
T = k, o = "available", s =
|
|
21539
|
-
let A =
|
|
21576
|
+
T = k, o = "available", s = pC(O);
|
|
21577
|
+
let A = mC(O);
|
|
21540
21578
|
c = !0, f = A.thread, p = A.threads, e.lifecycle.onDispose(() => {
|
|
21541
21579
|
T && D().catch((e) => {
|
|
21542
21580
|
let t = e instanceof Error ? e.message : String(e);
|
|
21543
21581
|
console.error(`[Mesurer] Failed to release Codex host lease: ${t}`);
|
|
21544
21582
|
});
|
|
21545
|
-
}), e.hook.on(
|
|
21583
|
+
}), e.hook.on(XS, async (e) => {
|
|
21546
21584
|
e === "mesurer.codex" && await D();
|
|
21547
21585
|
});
|
|
21548
21586
|
let j = async () => {
|
|
21549
|
-
let e =
|
|
21587
|
+
let e = pC(await E({ action: "runtime" }));
|
|
21550
21588
|
if (!e) throw Error("Codex Bridge returned an invalid runtime state.");
|
|
21551
21589
|
return s = e, e;
|
|
21552
21590
|
}, M = async () => {
|
|
@@ -21554,8 +21592,8 @@ function bC(e = {}) {
|
|
|
21554
21592
|
action: "health",
|
|
21555
21593
|
thread: u ?? l ?? void 0
|
|
21556
21594
|
});
|
|
21557
|
-
return s =
|
|
21558
|
-
}, N = M, P = async (e) =>
|
|
21595
|
+
return s = pC(e) ?? s, mC(e);
|
|
21596
|
+
}, N = M, P = async (e) => hC(await E({
|
|
21559
21597
|
action: "delivery",
|
|
21560
21598
|
deliveryId: e
|
|
21561
21599
|
})), F = async (e) => {
|
|
@@ -21565,13 +21603,13 @@ function bC(e = {}) {
|
|
|
21565
21603
|
deliveryId: e.id,
|
|
21566
21604
|
thread: e.thread
|
|
21567
21605
|
};
|
|
21568
|
-
return e.queuedSubmissionId && (t.queuedSubmissionId = e.queuedSubmissionId),
|
|
21606
|
+
return e.queuedSubmissionId && (t.queuedSubmissionId = e.queuedSubmissionId), hC(await E(t));
|
|
21569
21607
|
}, I = async (e = {}) => {
|
|
21570
21608
|
let t = {
|
|
21571
21609
|
action: "threads",
|
|
21572
|
-
limit: e.limit ??
|
|
21610
|
+
limit: e.limit ?? nC
|
|
21573
21611
|
}, n = e.thread?.trim();
|
|
21574
|
-
return n && (t.thread = n),
|
|
21612
|
+
return n && (t.thread = n), gC(await E(t));
|
|
21575
21613
|
}, L = () => u ?? l ?? (d ? null : f), R = () => {
|
|
21576
21614
|
if (!n) return;
|
|
21577
21615
|
let e = b?.id && (b.status === "queued" || b.status === "working" || b.status === "interrupted") ? {
|
|
@@ -21583,7 +21621,7 @@ function bC(e = {}) {
|
|
|
21583
21621
|
dispatch: b.dispatch,
|
|
21584
21622
|
dispatchError: b.dispatchError
|
|
21585
21623
|
} : null;
|
|
21586
|
-
|
|
21624
|
+
dC({
|
|
21587
21625
|
version: 1,
|
|
21588
21626
|
originThread: l,
|
|
21589
21627
|
selectedThread: u,
|
|
@@ -21601,12 +21639,12 @@ function bC(e = {}) {
|
|
|
21601
21639
|
"queueing",
|
|
21602
21640
|
"queued",
|
|
21603
21641
|
"working"
|
|
21604
|
-
].includes(b.status) ?
|
|
21642
|
+
].includes(b.status) ? sC : b.status === "completed" ? cC : oC : oC, W = () => {
|
|
21605
21643
|
let e = [], t = /* @__PURE__ */ new Set(), n = (n) => {
|
|
21606
21644
|
t.has(n.id) || (t.add(n.id), e.push(n));
|
|
21607
21645
|
}, r = (e) => ({
|
|
21608
21646
|
id: e,
|
|
21609
|
-
title: `Codex ${
|
|
21647
|
+
title: `Codex ${vC(e)}`,
|
|
21610
21648
|
updatedAt: null,
|
|
21611
21649
|
connected: !0
|
|
21612
21650
|
});
|
|
@@ -21634,7 +21672,7 @@ function bC(e = {}) {
|
|
|
21634
21672
|
let t = e.id === l ? "Current · " : e.connected ? "Loaded · " : "", r = b?.thread === e.id ? ` · ${V(b.status)}` : "";
|
|
21635
21673
|
return {
|
|
21636
21674
|
id: `codex.thread.${e.id}`,
|
|
21637
|
-
label: `${t}${
|
|
21675
|
+
label: `${t}${yC(e.title)}${r}`,
|
|
21638
21676
|
checked: () => n === e.id,
|
|
21639
21677
|
disabled: () => B(),
|
|
21640
21678
|
run() {
|
|
@@ -21642,15 +21680,15 @@ function bC(e = {}) {
|
|
|
21642
21680
|
}
|
|
21643
21681
|
};
|
|
21644
21682
|
});
|
|
21645
|
-
return g <
|
|
21683
|
+
return g < nC && (e.length > g || h) && r.push({
|
|
21646
21684
|
id: "codex.thread.show-more",
|
|
21647
21685
|
label: "Show 5 more…",
|
|
21648
21686
|
run() {
|
|
21649
|
-
g =
|
|
21687
|
+
g = nC, G();
|
|
21650
21688
|
}
|
|
21651
21689
|
}), b?.queuedSubmissionId && b.status === "queued" && (b.dispatch === "desktop-opened" || b.dispatch === "desktop-wake-failed") && r.push({
|
|
21652
21690
|
id: "codex.delivery.receipt",
|
|
21653
|
-
label: `Receipt · ${
|
|
21691
|
+
label: `Receipt · ${vC(b.queuedSubmissionId)}`,
|
|
21654
21692
|
disabled: () => !0,
|
|
21655
21693
|
run: () => void 0
|
|
21656
21694
|
}), r;
|
|
@@ -21687,7 +21725,7 @@ function bC(e = {}) {
|
|
|
21687
21725
|
}, ne = async (e) => {
|
|
21688
21726
|
if (o !== "available") return;
|
|
21689
21727
|
let t = await I({
|
|
21690
|
-
limit:
|
|
21728
|
+
limit: nC,
|
|
21691
21729
|
thread: e ?? void 0
|
|
21692
21730
|
});
|
|
21693
21731
|
m = t.threads, h = t.hasMore, p = t.threads.filter((e) => e.connected).map((e) => e.id), f = t.thread;
|
|
@@ -21709,7 +21747,7 @@ function bC(e = {}) {
|
|
|
21709
21747
|
}, ie = () => {
|
|
21710
21748
|
S && globalThis.clearTimeout(S), S = globalThis.setTimeout(() => {
|
|
21711
21749
|
S = 0, b?.status === "completed" && (b = null, R(), G());
|
|
21712
|
-
},
|
|
21750
|
+
}, $S);
|
|
21713
21751
|
}, ae = async (e) => {
|
|
21714
21752
|
if (!(!b || b.id !== e.id)) {
|
|
21715
21753
|
if (b = {
|
|
@@ -21731,14 +21769,14 @@ function bC(e = {}) {
|
|
|
21731
21769
|
if (e.status === "interrupted") {
|
|
21732
21770
|
R(), G();
|
|
21733
21771
|
let t = e.updatedAt > 0 ? e.updatedAt : Date.now();
|
|
21734
|
-
Date.now() - t <
|
|
21772
|
+
Date.now() - t < tC && (x = globalThis.setTimeout(() => {
|
|
21735
21773
|
x = 0, oe(e.id);
|
|
21736
|
-
},
|
|
21774
|
+
}, eC));
|
|
21737
21775
|
return;
|
|
21738
21776
|
}
|
|
21739
21777
|
G(), x = globalThis.setTimeout(() => {
|
|
21740
21778
|
x = 0, oe(e.id);
|
|
21741
|
-
},
|
|
21779
|
+
}, QS);
|
|
21742
21780
|
}
|
|
21743
21781
|
}, oe = async (e) => {
|
|
21744
21782
|
if (!(w || b?.id !== e)) try {
|
|
@@ -21762,7 +21800,7 @@ function bC(e = {}) {
|
|
|
21762
21800
|
b = {
|
|
21763
21801
|
...b,
|
|
21764
21802
|
status: "failed"
|
|
21765
|
-
}, R(),
|
|
21803
|
+
}, R(), bC(n) && (o = "unavailable"), G();
|
|
21766
21804
|
}
|
|
21767
21805
|
}, se = {
|
|
21768
21806
|
health: M,
|
|
@@ -21774,11 +21812,11 @@ function bC(e = {}) {
|
|
|
21774
21812
|
let n = await E({
|
|
21775
21813
|
action: "target",
|
|
21776
21814
|
thread: t
|
|
21777
|
-
}), r =
|
|
21778
|
-
return s =
|
|
21815
|
+
}), r = mC(n);
|
|
21816
|
+
return s = pC(n) ?? s, z(t, !l), f = r.thread, p = r.threads, o = "available", c = !0, G(), r;
|
|
21779
21817
|
},
|
|
21780
21818
|
async queue(e) {
|
|
21781
|
-
let r = await
|
|
21819
|
+
let r = await _C(i, e, t), a = e?.thread?.trim(), s = a || (n ? L() : null);
|
|
21782
21820
|
if (n && !a && (d || !s)) throw Error("Choose a Codex thread before queueing feedback.");
|
|
21783
21821
|
let c = { message: r.message };
|
|
21784
21822
|
s && (c.thread = s);
|
|
@@ -21798,14 +21836,14 @@ function bC(e = {}) {
|
|
|
21798
21836
|
};
|
|
21799
21837
|
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
21838
|
} catch (e) {
|
|
21801
|
-
throw n &&
|
|
21839
|
+
throw n && bC(e) && (o = "unavailable", G()), e;
|
|
21802
21840
|
}
|
|
21803
21841
|
},
|
|
21804
21842
|
send(e) {
|
|
21805
21843
|
return se.queue(e);
|
|
21806
21844
|
}
|
|
21807
21845
|
};
|
|
21808
|
-
e.service.provide(
|
|
21846
|
+
e.service.provide(YS, se);
|
|
21809
21847
|
let ce = async () => {
|
|
21810
21848
|
if (!(C || B())) return re(), b = {
|
|
21811
21849
|
id: null,
|
|
@@ -21836,9 +21874,9 @@ function bC(e = {}) {
|
|
|
21836
21874
|
updatedAt: 0
|
|
21837
21875
|
}) : x = globalThis.setTimeout(() => {
|
|
21838
21876
|
x = 0, oe(e.deliveryId);
|
|
21839
|
-
},
|
|
21877
|
+
}, QS) : S = globalThis.setTimeout(() => {
|
|
21840
21878
|
S = 0, b?.id === null && b?.status === "queued" && (b = null, R(), G());
|
|
21841
|
-
},
|
|
21879
|
+
}, $S);
|
|
21842
21880
|
} catch (e) {
|
|
21843
21881
|
b = null, R(), G();
|
|
21844
21882
|
let t = e instanceof Error ? e.message : String(e);
|
|
@@ -21866,7 +21904,7 @@ function bC(e = {}) {
|
|
|
21866
21904
|
}, 0));
|
|
21867
21905
|
let t = globalThis.setInterval(() => {
|
|
21868
21906
|
c && ee().catch(() => void 0);
|
|
21869
|
-
},
|
|
21907
|
+
}, ZS);
|
|
21870
21908
|
e.lifecycle.onDispose(() => {
|
|
21871
21909
|
w = !0, re(), globalThis.clearInterval(t), _?.dispose(), _ = void 0;
|
|
21872
21910
|
});
|
|
@@ -21876,64 +21914,64 @@ function bC(e = {}) {
|
|
|
21876
21914
|
}
|
|
21877
21915
|
//#endregion
|
|
21878
21916
|
//#region src/recording.ts
|
|
21879
|
-
var
|
|
21917
|
+
var SC = vb, CC = (e = {}) => ({
|
|
21880
21918
|
...Bb(e),
|
|
21881
|
-
version:
|
|
21882
|
-
}),
|
|
21883
|
-
...
|
|
21884
|
-
version:
|
|
21885
|
-
}),
|
|
21919
|
+
version: Xx
|
|
21920
|
+
}), wC = $b, TC = (e = {}) => ({
|
|
21921
|
+
...yx(e),
|
|
21922
|
+
version: Xx
|
|
21923
|
+
}), EC = () => globalThis.window?.__MESURER_HOST__?.codexBridge !== void 0, DC = [
|
|
21886
21924
|
{
|
|
21887
|
-
id:
|
|
21925
|
+
id: kS,
|
|
21888
21926
|
label: "Context",
|
|
21889
21927
|
order: 30,
|
|
21890
|
-
create:
|
|
21928
|
+
create: BS,
|
|
21891
21929
|
settingsIds: ["context"],
|
|
21892
21930
|
hiddenSettingsControlIds: ["ui"]
|
|
21893
21931
|
},
|
|
21894
21932
|
{
|
|
21895
|
-
id:
|
|
21933
|
+
id: Zx,
|
|
21896
21934
|
label: "Edit",
|
|
21897
21935
|
order: 35,
|
|
21898
|
-
create:
|
|
21936
|
+
create: $x,
|
|
21899
21937
|
settingsIds: ["arrange"]
|
|
21900
21938
|
},
|
|
21901
21939
|
{
|
|
21902
|
-
id:
|
|
21940
|
+
id: ES,
|
|
21903
21941
|
label: "Layout Guides",
|
|
21904
21942
|
order: 38,
|
|
21905
|
-
create:
|
|
21943
|
+
create: OS
|
|
21906
21944
|
},
|
|
21907
21945
|
{
|
|
21908
|
-
id:
|
|
21946
|
+
id: wC,
|
|
21909
21947
|
label: "Screenshot",
|
|
21910
21948
|
order: 40,
|
|
21911
|
-
create:
|
|
21949
|
+
create: TC,
|
|
21912
21950
|
settingsIds: ["screenshot"],
|
|
21913
21951
|
hiddenSettingsControlIds: ["tool"]
|
|
21914
21952
|
},
|
|
21915
21953
|
{
|
|
21916
|
-
id:
|
|
21954
|
+
id: SC,
|
|
21917
21955
|
label: "Recording",
|
|
21918
21956
|
order: 42,
|
|
21919
|
-
create:
|
|
21957
|
+
create: CC,
|
|
21920
21958
|
settingsIds: ["recording"],
|
|
21921
21959
|
hiddenSettingsControlIds: ["tool"]
|
|
21922
21960
|
},
|
|
21923
21961
|
{
|
|
21924
|
-
id:
|
|
21962
|
+
id: JS,
|
|
21925
21963
|
label: "Codex",
|
|
21926
21964
|
order: 45,
|
|
21927
|
-
create:
|
|
21965
|
+
create: xC
|
|
21928
21966
|
}
|
|
21929
|
-
],
|
|
21930
|
-
let t = e !== void 0, n = new Map((e ?? []).map((e) => [e.id, e])), r = new Set(
|
|
21967
|
+
], OC = (e) => {
|
|
21968
|
+
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
21969
|
let r = n.get(e.id);
|
|
21932
21970
|
return {
|
|
21933
21971
|
...e,
|
|
21934
21972
|
settingsIds: e.settingsIds ? [...e.settingsIds] : void 0,
|
|
21935
21973
|
hiddenSettingsControlIds: e.hiddenSettingsControlIds ? [...e.hiddenSettingsControlIds] : void 0,
|
|
21936
|
-
enabled: t ? !!r : e.id === "mesurer.codex" ?
|
|
21974
|
+
enabled: t ? !!r : e.id === "mesurer.codex" ? EC() : e.enabled !== !1,
|
|
21937
21975
|
create: r ? () => r : e.create
|
|
21938
21976
|
};
|
|
21939
21977
|
});
|
|
@@ -21944,16 +21982,16 @@ var xC = vb, SC = (e = {}) => ({
|
|
|
21944
21982
|
create: () => n
|
|
21945
21983
|
});
|
|
21946
21984
|
return i;
|
|
21947
|
-
},
|
|
21948
|
-
function
|
|
21949
|
-
return
|
|
21985
|
+
}, kC = (e) => e;
|
|
21986
|
+
function AC() {
|
|
21987
|
+
return uS();
|
|
21950
21988
|
}
|
|
21951
|
-
async function
|
|
21952
|
-
return
|
|
21989
|
+
async function jC(e = {}) {
|
|
21990
|
+
return dS(e);
|
|
21953
21991
|
}
|
|
21954
21992
|
//#endregion
|
|
21955
21993
|
//#region src/index.tsx
|
|
21956
|
-
var
|
|
21994
|
+
var MC = {
|
|
21957
21995
|
select: "select",
|
|
21958
21996
|
xray: "xray",
|
|
21959
21997
|
colorPicker: "color-picker",
|
|
@@ -21963,14 +22001,14 @@ var jC = {
|
|
|
21963
22001
|
distance: "distance",
|
|
21964
22002
|
settings: "settings"
|
|
21965
22003
|
};
|
|
21966
|
-
function
|
|
22004
|
+
function NC(e = {}) {
|
|
21967
22005
|
if (!("document" in globalThis)) throw Error("mountMesurer() requires a browser or Electron renderer document.");
|
|
21968
22006
|
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
22007
|
if (o?.aborted) throw o.reason ?? new DOMException("Mesurer mount aborted.", "AbortError");
|
|
21970
22008
|
if (!t) throw Error("mountMesurer() requires document.body to exist or an explicit target.");
|
|
21971
22009
|
let p = t.ownerDocument ?? document, m = p.defaultView ?? window, h = p.createElement("div");
|
|
21972
22010
|
h.dataset.mesurerIsland = "true";
|
|
21973
|
-
let g =
|
|
22011
|
+
let g = qS(h, t, i), _ = h, v = h, y = h;
|
|
21974
22012
|
if (n) {
|
|
21975
22013
|
let e = h.attachShadow({ mode: r });
|
|
21976
22014
|
v = p.createElement("div"), v.dataset.mesurerIslandMount = "true", e.append(v), _ = e, y = e;
|
|
@@ -21981,7 +22019,7 @@ function MC(e = {}) {
|
|
|
21981
22019
|
C = e, w = t;
|
|
21982
22020
|
});
|
|
21983
22021
|
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 =
|
|
22022
|
+
let k = async () => (await (b ? Promise.resolve(b) : D), O), A = a === !0 ? {} : a === !1 ? null : a, j = Yx({
|
|
21985
22023
|
ownerDocument: p,
|
|
21986
22024
|
root: A?.root ?? (t.nodeType === 11 ? t : p),
|
|
21987
22025
|
getPluginHost: () => b,
|
|
@@ -21993,12 +22031,12 @@ function MC(e = {}) {
|
|
|
21993
22031
|
return t;
|
|
21994
22032
|
}, N = async () => {
|
|
21995
22033
|
await j.ready();
|
|
21996
|
-
let e = b?.service.get(
|
|
22034
|
+
let e = b?.service.get(AS);
|
|
21997
22035
|
if (!e) throw Error("Mesurer Context is disabled. Enable it in Settings or include context() in plugins.");
|
|
21998
22036
|
return e;
|
|
21999
22037
|
}, P = async () => {
|
|
22000
22038
|
await j.ready();
|
|
22001
|
-
let e = b?.service.get(
|
|
22039
|
+
let e = b?.service.get(eS);
|
|
22002
22040
|
if (!e) throw Error("Mesurer Edit is disabled. Enable it in Settings or include edit() in plugins.");
|
|
22003
22041
|
return e;
|
|
22004
22042
|
}, 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 +22047,7 @@ function MC(e = {}) {
|
|
|
22009
22047
|
(await P()).show(e, t);
|
|
22010
22048
|
}, 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
22049
|
capabilities: () => {
|
|
22012
|
-
let e = !!b?.service.get(
|
|
22050
|
+
let e = !!b?.service.get(AS);
|
|
22013
22051
|
return {
|
|
22014
22052
|
protocol: "mesurer.agent/v1",
|
|
22015
22053
|
contextSchema: "mesurer.context/v1",
|
|
@@ -22019,8 +22057,8 @@ function MC(e = {}) {
|
|
|
22019
22057
|
annotations: e,
|
|
22020
22058
|
review: e,
|
|
22021
22059
|
capturePlan: e,
|
|
22022
|
-
arrange: !!b?.service.get(
|
|
22023
|
-
textEdit: !!b?.service.get(
|
|
22060
|
+
arrange: !!b?.service.get(eS),
|
|
22061
|
+
textEdit: !!b?.service.get(qx)
|
|
22024
22062
|
}
|
|
22025
22063
|
};
|
|
22026
22064
|
},
|
|
@@ -22039,9 +22077,9 @@ function MC(e = {}) {
|
|
|
22039
22077
|
reviewArrange: ne
|
|
22040
22078
|
}), oe = {
|
|
22041
22079
|
...f,
|
|
22042
|
-
version:
|
|
22043
|
-
plugins:
|
|
22044
|
-
excludePlugins: u ? u.map((e) =>
|
|
22080
|
+
version: Xx,
|
|
22081
|
+
plugins: OC(l),
|
|
22082
|
+
excludePlugins: u ? u.map((e) => MC[e]) : [...d ?? []]
|
|
22045
22083
|
}, se = Oi(() => Yr(rv, Di(oe, {
|
|
22046
22084
|
portalTarget: y,
|
|
22047
22085
|
pageTarget: t,
|
|
@@ -22110,6 +22148,6 @@ function MC(e = {}) {
|
|
|
22110
22148
|
}
|
|
22111
22149
|
return me;
|
|
22112
22150
|
}
|
|
22113
|
-
var
|
|
22151
|
+
var PC = NC;
|
|
22114
22152
|
//#endregion
|
|
22115
|
-
export {
|
|
22153
|
+
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 };
|