mesurer-solid 0.2.1-beta.8 → 0.2.1-beta.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -107,7 +107,7 @@ function ne() {
107
107
  function W(e) {
108
108
  H = e;
109
109
  }
110
- function re() {
110
+ function G() {
111
111
  return {
112
112
  de: I,
113
113
  Qt: [],
@@ -124,7 +124,7 @@ function re() {
124
124
  ln: /* @__PURE__ */ new Set()
125
125
  };
126
126
  }
127
- function ie(e, t) {
127
+ function re(e, t) {
128
128
  t.fn = e, e.ie.push(...t.ie);
129
129
  for (let n of T) n.Ne === t && (n.Ne = e);
130
130
  t.Me.length && (e.Me.push(...t.Me), t.Me.length = 0), t.A.length && (e.A.push(...t.A), t.A.length = 0);
@@ -136,7 +136,7 @@ function ie(e, t) {
136
136
  }
137
137
  for (let n of t.ln) e.ln.add(n);
138
138
  }
139
- function G() {
139
+ function ie() {
140
140
  if (z) {
141
141
  oe();
142
142
  return;
@@ -184,7 +184,7 @@ var se = 0, ce = class {
184
184
  }
185
185
  }
186
186
  enqueue(e, t) {
187
- e && (vt ? E(vt).rn[e - 1].push(t) : this.bt[e - 1].push(t)), G();
187
+ e && (vt ? E(vt).rn[e - 1].push(t) : this.bt[e - 1].push(t)), ie();
188
188
  }
189
189
  stashQueues(e) {
190
190
  e.bt[0].push(...this.bt[0]), e.bt[1].push(...this.bt[1]), this.bt = [[], []];
@@ -205,7 +205,7 @@ var se = 0, ce = class {
205
205
  }
206
206
  }, K = class e extends ce {
207
207
  gt = !1;
208
- m = re();
208
+ m = G();
209
209
  static Ce;
210
210
  static me;
211
211
  static et;
@@ -245,12 +245,12 @@ var se = 0, ce = class {
245
245
  if (Ne(N, e.Ce), L) {
246
246
  if (!Se(L)) {
247
247
  let t = L;
248
- Ne(P, this.m === t ? F : e.Ce), this.m === t && (ve = this.m = re()), T.size && (e.In(1), e.In(2)), this.stashQueues(t.yt), I++, R = N.EE >= N.Ve || this.m.Qt.length > 0, ge(t.Qt), L = null, me(null, !0);
248
+ Ne(P, this.m === t ? F : e.Ce), this.m === t && (ve = this.m = G()), T.size && (e.In(1), e.In(2)), this.stashQueues(t.yt), I++, R = N.EE >= N.Ve || this.m.Qt.length > 0, ge(t.Qt), L = null, me(null, !0);
249
249
  return;
250
250
  }
251
251
  let t = L, n = this.m;
252
252
  if (n !== t && n.Qt.push(...t.Qt), this.restoreQueues(t.yt), M.delete(t), L = null, ge(n.Qt), me(t), n === t) {
253
- let e = re();
253
+ let e = G();
254
254
  e.Qt = n.Qt, e.Me = n.Me, e.A = n.A, e.cn = n.cn, ve = this.m = e;
255
255
  }
256
256
  } else te(this) ? (pe(), N.EE >= N.Ve && (Ne(N, e.Ce), pe())) : (M.size && Ne(P, e.Ce), me());
@@ -269,7 +269,7 @@ var se = 0, ce = class {
269
269
  let n = t.source, r = L.Ie.get(n);
270
270
  r || L.Ie.set(n, r = /* @__PURE__ */ new Set());
271
271
  let i = r.size;
272
- r.add(e), r.size !== i && G();
272
+ r.add(e), r.size !== i && ie();
273
273
  }
274
274
  }
275
275
  return !0;
@@ -278,10 +278,10 @@ var se = 0, ce = class {
278
278
  }
279
279
  initTransition(e) {
280
280
  if (e &&= Ce(e), e && e === L || !e && L && L.de === I) return;
281
- if (!L) L = e ?? re();
281
+ if (!L) L = e ?? G();
282
282
  else if (e) {
283
283
  let t = L;
284
- ie(e, t), M.delete(t), L = e;
284
+ re(e, t), M.delete(t), L = e;
285
285
  }
286
286
  M.add(L), L.de = I;
287
287
  let t = this.m;
@@ -341,7 +341,7 @@ function me(e = null, t = !1) {
341
341
  let t = e ?? _e.m;
342
342
  if (t.Me.length && K.En(t.Me), t.ln.size) {
343
343
  for (let e of t.ln) e.se & 64 || Ee(e);
344
- t.ln.clear(), G();
344
+ t.ln.clear(), ie();
345
345
  }
346
346
  t.A.length && (K.G(t.A), _e.vt.length && he(_e)), t.cn.size && K.Dt(t.cn, e), ne(), T.size && K.dn(e);
347
347
  }
@@ -698,7 +698,7 @@ function st(e, t) {
698
698
  let n = !1, r = /* @__PURE__ */ new Set(), i = (e) => {
699
699
  r.has(e) || (r.add(e), e._ === t && (Ee(e), n = !0), it(e, i));
700
700
  };
701
- it(e, i), n && G();
701
+ it(e, i), n && ie();
702
702
  }
703
703
  function ct(e) {
704
704
  let t = !1, n, r = /* @__PURE__ */ new Set(), i = K.Se, a = (o) => {
@@ -708,7 +708,7 @@ function ct(e) {
708
708
  s ? (c || rt(o, s), i !== null && i(o)) : (o.S &= -2, c || rt(o), i !== null && i(o), o.ue && (Ee(o), t = !0), o.ue = !1, !o.o && o.T & 32 && (n ??= []).push(o)), it(o, a);
709
709
  };
710
710
  if (it(e, a), n) for (let e of n) at(e);
711
- t && G();
711
+ t && ie();
712
712
  }
713
713
  function lt(e) {
714
714
  return typeof e == "object" && !!e && typeof e.then == "function";
@@ -754,7 +754,7 @@ function ut(e, t, n) {
754
754
  } catch (t) {
755
755
  ft(e, 2, t);
756
756
  }
757
- e.De === v && (e.Ee = !1), ct(e), G(), ye(), i?.();
757
+ e.De === v && (e.Ee = !1), ct(e), ie(), ye(), i?.();
758
758
  }, l = () => e.T & 32 && !e.o && !(e.S & 1) ? (Ze(e), !0) : !1;
759
759
  if (i) {
760
760
  let n = !1, r = !1, i, o = !0;
@@ -787,7 +787,7 @@ function ut(e, t, n) {
787
787
  if ((lt(_) ? _ : { then: (e) => void e(_) }).then((n) => {
788
788
  if (g && o) d = n, m = !0, n.done && (i = !0);
789
789
  else if (e.Te !== t) return;
790
- else n.done ? (i = !0, r ? (G(), ye()) : c(void 0), l()) : (r = !0, c(n.value, u));
790
+ else n.done ? (i = !0, r ? (ie(), ye()) : c(void 0), l()) : (r = !0, c(n.value, u));
791
791
  }, (n) => {
792
792
  g ? (p = n, h = !0) : e.Te === t && (i = !0, s(n), l());
793
793
  }), g = !1, h) {
@@ -820,7 +820,7 @@ function ft(e, t, n, r, i) {
820
820
  it(e, (e, r) => {
821
821
  if (e.de = I, t === 1 && a && !e.oe?.has(a) || t !== 1 && (e._ !== n || e.oe)) {
822
822
  if (r.Ge && t !== 1 && !(n instanceof d)) {
823
- Ee(e), G();
823
+ Ee(e), ie();
824
824
  return;
825
825
  }
826
826
  !l && !e.Ne && le(e), ft(e, t, n, l, u);
@@ -1050,10 +1050,10 @@ function Mt(e) {
1050
1050
  function Nt(e, t) {
1051
1051
  if (e.Ne && L !== e.Ne && _e.initTransition(e.Ne), e._e !== void 0 && !H) return K.Gt(e, t);
1052
1052
  let n = e.De === v ? e.Ue : e.De;
1053
- return typeof t == "function" && (t = t(n)), e.S & 4 || !e.be || !e.be(n, t) ? (e.De === v && le(e), e.De = t, (e.ge !== void 0 || e.pe !== void 0) && K.Pe !== null && K.Pe(e, t), e.de = I, de(e), G(), t) : t;
1053
+ return typeof t == "function" && (t = t(n)), e.S & 4 || !e.be || !e.be(n, t) ? (e.De === v && le(e), e.De = t, (e.ge !== void 0 || e.pe !== void 0) && K.Pe !== null && K.Pe(e, t), e.de = I, de(e), ie(), t) : t;
1054
1054
  }
1055
1055
  function Pt(e) {
1056
- Ae(e, Te(e)), !(e.se & 1024) && e.De === v && (le(e), G()), e.se = e.se & -4 | g;
1056
+ Ae(e, Te(e)), !(e.se & 1024) && e.De === v && (le(e), ie()), e.se = e.se & -4 | g;
1057
1057
  }
1058
1058
  function Ft(e, t) {
1059
1059
  let n = Nt(e, t);
@@ -5650,26 +5650,26 @@ function dl(e) {
5650
5650
  setExpandedKey: l,
5651
5651
  pinnedKey: u,
5652
5652
  setPinnedKey: d
5653
- }, p = () => e.model.state.toolMode === "select", m = () => e.model.state.toolMode === "guides", h = () => e.model.state.enabled, g = () => e.interactive && h() && e.model.state.toolMode !== "none" && e.model.state.toolMode !== "text-inspector", _ = () => e.interactive && (e.model.state.toolMode !== "none" || e.model.state.rulersVisible), v = () => `color-mix(in oklch, ${e.model.state.settings.highlightColor} 80%, transparent)`, y = () => `color-mix(in oklch, ${e.model.state.settings.highlightColor} 8%, transparent)`, b = () => `color-mix(in oklch, ${e.model.state.settings.highlightColor} 96%, transparent)`, x = () => `color-mix(in oklch, ${e.model.state.settings.highlightColor} 15.36%, transparent)`, S = Wr(() => e.model.state.selectedMeasurements), C = Wr(() => {
5654
- let t = e.model.state.settings.multiMeasureEnabled && e.model.state.measurements.length > 0 ? e.model.state.measurements : e.model.state.activeMeasurement ? [e.model.state.activeMeasurement] : [], n = new Set(S().map((e) => e.elementRef).filter((e) => !!e));
5653
+ }, p = () => e.model.state.toolMode === "select", m = () => e.model.state.toolMode === "guides", h = () => e.model.state.enabled, g = () => t?.closest("[data-mesurer-root='true']")?.hasAttribute("data-mesurer-recording-active") ?? !1, _ = () => !g() && e.interactive && h() && e.model.state.toolMode !== "none" && e.model.state.toolMode !== "text-inspector", v = () => !g() && e.interactive && (e.model.state.toolMode !== "none" || e.model.state.rulersVisible), y = () => `color-mix(in oklch, ${e.model.state.settings.highlightColor} 80%, transparent)`, b = () => `color-mix(in oklch, ${e.model.state.settings.highlightColor} 8%, transparent)`, x = () => `color-mix(in oklch, ${e.model.state.settings.highlightColor} 96%, transparent)`, S = () => `color-mix(in oklch, ${e.model.state.settings.highlightColor} 15.36%, transparent)`, C = Wr(() => e.model.state.selectedMeasurements), w = Wr(() => {
5654
+ let t = e.model.state.settings.multiMeasureEnabled && e.model.state.measurements.length > 0 ? e.model.state.measurements : e.model.state.activeMeasurement ? [e.model.state.activeMeasurement] : [], n = new Set(C().map((e) => e.elementRef).filter((e) => !!e));
5655
5655
  return t.filter((e) => !e.elementRef || !n.has(e.elementRef));
5656
- }), w = Wr(() => e.displayedSelectedMeasurements), T = Wr(() => {
5656
+ }), T = Wr(() => e.displayedSelectedMeasurements), E = Wr(() => {
5657
5657
  let t = e.model.state.hoverElement;
5658
- return !!(t && S().some((e) => e.elementRef === t));
5659
- }), E = Wr(() => e.model.state.heldDistances), D = Wr(() => rs(C().map((e) => e.rect))), O = Wr(() => rs(w().map((e) => e.rect))), k = Wr(() => {
5660
- let n = S();
5658
+ return !!(t && C().some((e) => e.elementRef === t));
5659
+ }), D = Wr(() => e.model.state.heldDistances), O = Wr(() => rs(w().map((e) => e.rect))), k = Wr(() => rs(T().map((e) => e.rect))), A = Wr(() => {
5660
+ let n = C();
5661
5661
  if (!p() || !e.selectionSpacingStyle.enabled || n.length < 2) return [];
5662
5662
  let r = t?.ownerDocument.defaultView;
5663
5663
  return r ? es(n, r) : [];
5664
- }), A = Wr(() => S().map((e) => e.id).join("|"));
5665
- Jr(() => A(), () => {
5664
+ }), j = Wr(() => C().map((e) => e.id).join("|"));
5665
+ Jr(() => j(), () => {
5666
5666
  l(null), d(null);
5667
5667
  });
5668
- let j = () => {
5668
+ let M = () => {
5669
5669
  let t = e.model.state.hoverRect;
5670
- return t ? rs([t, ...w().map((e) => e.rect)])[0] ?? null : null;
5671
- }, M = () => hs(t, e.model.state.hoverElement), N = () => {
5672
- let t = e.model.state.hoverElement, n = M(), r = t?.ownerDocument.defaultView;
5670
+ return t ? rs([t, ...T().map((e) => e.rect)])[0] ?? null : null;
5671
+ }, N = () => hs(t, e.model.state.hoverElement), P = () => {
5672
+ let t = e.model.state.hoverElement, n = N(), r = t?.ownerDocument.defaultView;
5673
5673
  return !t || !r || n !== t.ownerDocument.body ? {
5674
5674
  x: 0,
5675
5675
  y: 0
@@ -5677,8 +5677,8 @@ function dl(e) {
5677
5677
  x: r.scrollX,
5678
5678
  y: r.scrollY
5679
5679
  };
5680
- }, P = () => {
5681
- let t = e.model.state.hoverRect, r = !!M(), i = N();
5680
+ }, F = () => {
5681
+ let t = e.model.state.hoverRect, r = !!N(), i = P();
5682
5682
  var a = X("div", {
5683
5683
  "data-mesurer-hover-measurement": "true",
5684
5684
  "data-mesurer-document-hover-layer": r ? "true" : void 0,
@@ -5688,7 +5688,7 @@ function dl(e) {
5688
5688
  n = e;
5689
5689
  }, a), Q(a, Y(q, {
5690
5690
  get when() {
5691
- return j()?.top;
5691
+ return M()?.top;
5692
5692
  },
5693
5693
  get children() {
5694
5694
  var e = X("div", { class: "msr:absolute msr:left-0 msr:top-0 msr:h-px msr:w-full" });
@@ -5698,14 +5698,14 @@ function dl(e) {
5698
5698
  top: "0",
5699
5699
  height: "1px",
5700
5700
  width: "100%",
5701
- "background-color": v()
5701
+ "background-color": y()
5702
5702
  }), (t, n) => {
5703
5703
  $(e, "style", t, n);
5704
5704
  }), e;
5705
5705
  }
5706
5706
  }), null), Q(a, Y(q, {
5707
5707
  get when() {
5708
- return j()?.right;
5708
+ return M()?.right;
5709
5709
  },
5710
5710
  get children() {
5711
5711
  var e = X("div", { class: "msr:absolute msr:right-0 msr:top-0 msr:h-full msr:w-px" });
@@ -5715,14 +5715,14 @@ function dl(e) {
5715
5715
  top: "0",
5716
5716
  height: "100%",
5717
5717
  width: "1px",
5718
- "background-color": v()
5718
+ "background-color": y()
5719
5719
  }), (t, n) => {
5720
5720
  $(e, "style", t, n);
5721
5721
  }), e;
5722
5722
  }
5723
5723
  }), null), Q(a, Y(q, {
5724
5724
  get when() {
5725
- return j()?.bottom;
5725
+ return M()?.bottom;
5726
5726
  },
5727
5727
  get children() {
5728
5728
  var e = X("div", { class: "msr:absolute msr:bottom-0 msr:left-0 msr:h-px msr:w-full" });
@@ -5732,14 +5732,14 @@ function dl(e) {
5732
5732
  left: "0",
5733
5733
  height: "1px",
5734
5734
  width: "100%",
5735
- "background-color": v()
5735
+ "background-color": y()
5736
5736
  }), (t, n) => {
5737
5737
  $(e, "style", t, n);
5738
5738
  }), e;
5739
5739
  }
5740
5740
  }), null), Q(a, Y(q, {
5741
5741
  get when() {
5742
- return j()?.left;
5742
+ return M()?.left;
5743
5743
  },
5744
5744
  get children() {
5745
5745
  var e = X("div", { class: "msr:absolute msr:left-0 msr:top-0 msr:h-full msr:w-px" });
@@ -5749,7 +5749,7 @@ function dl(e) {
5749
5749
  top: "0",
5750
5750
  height: "100%",
5751
5751
  width: "1px",
5752
- "background-color": v()
5752
+ "background-color": y()
5753
5753
  }), (t, n) => {
5754
5754
  $(e, "style", t, n);
5755
5755
  }), e;
@@ -5762,16 +5762,16 @@ function dl(e) {
5762
5762
  top: `${t.top + i.y}px`,
5763
5763
  width: `${t.width}px`,
5764
5764
  height: `${t.height}px`,
5765
- "background-color": y(),
5765
+ "background-color": b(),
5766
5766
  transition: "none",
5767
5767
  animation: "none"
5768
5768
  }), (e, t) => {
5769
5769
  $(a, "style", e, t);
5770
5770
  }), a;
5771
- }, F = (t) => {
5771
+ }, I = (t) => {
5772
5772
  let n = t === "active" ? 100 : t === "hover" ? 90 : t === "preview" ? 50 : 70;
5773
5773
  return `color-mix(in oklch, ${e.model.state.settings.guideColor} ${n}%, transparent)`;
5774
- }, I = Wr(() => {
5774
+ }, L = Wr(() => {
5775
5775
  if (e.model.state.guides.length > 0 || !e.model.state.settingsOpen || e.model.state.settingsTab !== "guides") return e.model.state.guides;
5776
5776
  let n = t?.ownerDocument.defaultView;
5777
5777
  return n ? [{
@@ -5783,21 +5783,21 @@ function dl(e) {
5783
5783
  orientation: "horizontal",
5784
5784
  position: n.innerHeight / 2
5785
5785
  }] : e.model.state.guides;
5786
- }), L = () => {
5786
+ }), R = () => {
5787
5787
  i && t?.ownerDocument.defaultView?.clearTimeout(i), i = 0, a = null;
5788
- }, R = (t, n) => {
5788
+ }, z = (t, n) => {
5789
5789
  if (!e.model.current.enabled || e.model.current.settingsOpen || n.button !== 0) return;
5790
5790
  if (n.preventDefault(), n.stopPropagation(), e.model.checkpoint(), n.shiftKey) {
5791
5791
  e.model.setSelectedGuideIds(e.model.current.selectedGuideIds.includes(t.id) ? e.model.current.selectedGuideIds.filter((e) => e !== t.id) : [...e.model.current.selectedGuideIds, t.id]);
5792
5792
  return;
5793
5793
  }
5794
- e.model.setSelectedGuideIds([t.id]), L();
5794
+ e.model.setSelectedGuideIds([t.id]), R();
5795
5795
  let r = n.currentTarget.ownerDocument.defaultView;
5796
5796
  r && (a = t.id, i = r.setTimeout(() => {
5797
5797
  i = 0, a === t.id && e.model.setTransient({ draggingGuideId: t.id });
5798
5798
  }, 220)), ms(n.currentTarget, n.pointerId);
5799
- }, z = (t, n) => {
5800
- n.stopPropagation(), L(), e.model.current.draggingGuideId === t.id && e.model.setTransient({ draggingGuideId: null }), n.currentTarget.hasPointerCapture(n.pointerId) && n.currentTarget.releasePointerCapture(n.pointerId);
5799
+ }, B = (t, n) => {
5800
+ n.stopPropagation(), R(), e.model.current.draggingGuideId === t.id && e.model.setTransient({ draggingGuideId: null }), n.currentTarget.hasPointerCapture(n.pointerId) && n.currentTarget.releasePointerCapture(n.pointerId);
5801
5801
  };
5802
5802
  $t(() => {
5803
5803
  let i = t, a = i?.ownerDocument.defaultView, c = i?.ownerDocument;
@@ -5866,10 +5866,10 @@ function dl(e) {
5866
5866
  capture: !0,
5867
5867
  passive: !0
5868
5868
  }), a.addEventListener("resize", d, !0), a.addEventListener("pointerdown", m, !0), a.addEventListener("pointermove", h, !0), a.addEventListener("pointerup", g, !0), a.addEventListener("pointercancel", g, !0), () => {
5869
- i.removeEventListener("pointermove", l), a.removeEventListener("pointermove", u, !0), a.removeEventListener("scroll", p, !0), a.removeEventListener("resize", d, !0), a.removeEventListener("pointerdown", m, !0), a.removeEventListener("pointermove", h, !0), a.removeEventListener("pointerup", g, !0), a.removeEventListener("pointercancel", g, !0), o && a.clearTimeout(o), s && a.cancelAnimationFrame(s), o = 0, s = 0, n?.style.removeProperty("visibility"), L(), r?.previousUserSelect !== null && r && (c.documentElement.style.userSelect = r.previousUserSelect), r = null;
5869
+ i.removeEventListener("pointermove", l), a.removeEventListener("pointermove", u, !0), a.removeEventListener("scroll", p, !0), a.removeEventListener("resize", d, !0), a.removeEventListener("pointerdown", m, !0), a.removeEventListener("pointermove", h, !0), a.removeEventListener("pointerup", g, !0), a.removeEventListener("pointercancel", g, !0), o && a.clearTimeout(o), s && a.cancelAnimationFrame(s), o = 0, s = 0, n?.style.removeProperty("visibility"), R(), r?.previousUserSelect !== null && r && (c.documentElement.style.userSelect = r.previousUserSelect), r = null;
5870
5870
  };
5871
5871
  });
5872
- var B = X("div", {
5872
+ var V = X("div", {
5873
5873
  "data-mesurer-interaction-overlay": "true",
5874
5874
  onPointerDown: (t) => e.onPointerDown(t),
5875
5875
  onPointerUp: (t) => e.onPointerUp(t),
@@ -5877,7 +5877,7 @@ function dl(e) {
5877
5877
  });
5878
5878
  return aa(() => (e) => {
5879
5879
  t = e;
5880
- }, B), Q(B, Y(q, {
5880
+ }, V), Q(V, Y(q, {
5881
5881
  get when() {
5882
5882
  return p();
5883
5883
  },
@@ -5885,18 +5885,18 @@ function dl(e) {
5885
5885
  return [
5886
5886
  Y(Zr, {
5887
5887
  get each() {
5888
- return C();
5888
+ return w();
5889
5889
  },
5890
5890
  children: (t, n) => Y(ll, {
5891
5891
  measurement: t,
5892
5892
  get edgeVisibility() {
5893
- return D()[n()];
5893
+ return O()[n()];
5894
5894
  },
5895
5895
  get outlineColor() {
5896
- return v();
5896
+ return y();
5897
5897
  },
5898
5898
  get fillColor() {
5899
- return y();
5899
+ return b();
5900
5900
  },
5901
5901
  get theme() {
5902
5902
  return e.model.state.settings.theme;
@@ -5916,12 +5916,12 @@ function dl(e) {
5916
5916
  top: `${e.activeRect.top}px`,
5917
5917
  width: `${e.activeRect.width}px`,
5918
5918
  height: `${e.activeRect.height}px`,
5919
- "background-color": y()
5919
+ "background-color": b()
5920
5920
  },
5921
- t: { "background-color": v() },
5922
- a: { "background-color": v() },
5923
- o: { "background-color": v() },
5924
- i: { "background-color": v() }
5921
+ t: { "background-color": y() },
5922
+ a: { "background-color": y() },
5923
+ o: { "background-color": y() },
5924
+ i: { "background-color": y() }
5925
5925
  }), ({ e, t: o, a: s, o: c, i: l }, u) => {
5926
5926
  e !== u?.e && $(t, "style", e, u?.e), o !== u?.t && $(n, "style", o, u?.t), s !== u?.a && $(r, "style", s, u?.a), c !== u?.o && $(i, "style", c, u?.o), l !== u?.i && $(a, "style", l, u?.i);
5927
5927
  }), t;
@@ -5945,22 +5945,22 @@ function dl(e) {
5945
5945
  }),
5946
5946
  Y(q, {
5947
5947
  get when() {
5948
- return ea(() => !!(e.model.state.hoverRect && e.model.state.settings.hoverHighlightEnabled && (e.editSelectionHover() || S().length <= 1)))() ? !T() : e.model.state.hoverRect && e.model.state.settings.hoverHighlightEnabled && (e.editSelectionHover() || S().length <= 1);
5948
+ return ea(() => !!(e.model.state.hoverRect && e.model.state.settings.hoverHighlightEnabled && (e.editSelectionHover() || C().length <= 1)))() ? !E() : e.model.state.hoverRect && e.model.state.settings.hoverHighlightEnabled && (e.editSelectionHover() || C().length <= 1);
5949
5949
  },
5950
5950
  get children() {
5951
5951
  return Y(q, {
5952
5952
  get when() {
5953
- return M();
5953
+ return N();
5954
5954
  },
5955
5955
  get fallback() {
5956
- return P();
5956
+ return F();
5957
5957
  },
5958
5958
  children: (e) => Y(ki, {
5959
5959
  get mount() {
5960
5960
  return e();
5961
5961
  },
5962
5962
  get children() {
5963
- return P();
5963
+ return F();
5964
5964
  }
5965
5965
  })
5966
5966
  });
@@ -5968,7 +5968,7 @@ function dl(e) {
5968
5968
  })
5969
5969
  ];
5970
5970
  }
5971
- }), null), Q(B, Y(q, {
5971
+ }), null), Q(V, Y(q, {
5972
5972
  get when() {
5973
5973
  return ea(() => !!(e.interactive && m() && e.model.state.guidePreview))() ? !e.model.state.draggingGuideId : e.interactive && m() && e.model.state.guidePreview;
5974
5974
  },
@@ -5991,37 +5991,37 @@ function dl(e) {
5991
5991
  top: "0",
5992
5992
  width: "2px",
5993
5993
  height: "100%",
5994
- "background-color": F("preview")
5994
+ "background-color": I("preview")
5995
5995
  } : {
5996
5996
  top: "6px",
5997
5997
  left: "0",
5998
5998
  height: "2px",
5999
5999
  width: "100%",
6000
- "background-color": F("preview")
6000
+ "background-color": I("preview")
6001
6001
  }
6002
6002
  }), ({ e, t: r }, i) => {
6003
6003
  e !== i?.e && $(t, "style", e, i?.e), r !== i?.t && $(n, "style", r, i?.t);
6004
6004
  }), t;
6005
6005
  }
6006
- }), null), Q(B, Y(q, {
6006
+ }), null), Q(V, Y(q, {
6007
6007
  get when() {
6008
6008
  return p();
6009
6009
  },
6010
6010
  get children() {
6011
6011
  return [Y(Zr, {
6012
6012
  get each() {
6013
- return w();
6013
+ return T();
6014
6014
  },
6015
6015
  children: (t, n) => Y(ll, {
6016
6016
  measurement: t,
6017
6017
  get edgeVisibility() {
6018
- return O()[n()];
6018
+ return k()[n()];
6019
6019
  },
6020
6020
  get outlineColor() {
6021
- return b();
6021
+ return x();
6022
6022
  },
6023
6023
  get fillColor() {
6024
- return x();
6024
+ return S();
6025
6025
  },
6026
6026
  get theme() {
6027
6027
  return e.model.state.settings.theme;
@@ -6029,12 +6029,12 @@ function dl(e) {
6029
6029
  })
6030
6030
  }), Y(q, {
6031
6031
  get when() {
6032
- return S().length > 1;
6032
+ return C().length > 1;
6033
6033
  },
6034
6034
  get children() {
6035
6035
  return [Y(Zr, {
6036
6036
  get each() {
6037
- return S();
6037
+ return C();
6038
6038
  },
6039
6039
  children: (e) => (() => {
6040
6040
  var t = X("div", {
@@ -6052,7 +6052,7 @@ function dl(e) {
6052
6052
  })()
6053
6053
  }), Y(Zr, {
6054
6054
  get each() {
6055
- return k();
6055
+ return A();
6056
6056
  },
6057
6057
  children: (t) => Y(nl, {
6058
6058
  distance: t,
@@ -6067,9 +6067,9 @@ function dl(e) {
6067
6067
  }
6068
6068
  })];
6069
6069
  }
6070
- }), null), Q(B, Y(Zr, {
6070
+ }), null), Q(V, Y(Zr, {
6071
6071
  get each() {
6072
- return E();
6072
+ return D();
6073
6073
  },
6074
6074
  children: (t) => Y(nl, {
6075
6075
  distance: t,
@@ -6078,7 +6078,7 @@ function dl(e) {
6078
6078
  },
6079
6079
  kind: "held"
6080
6080
  })
6081
- }), null), Q(B, Y(q, {
6081
+ }), null), Q(V, Y(q, {
6082
6082
  get when() {
6083
6083
  return ea(() => !!(p() && e.model.state.altPressed))() ? e.optionPairOverlay : p() && e.model.state.altPressed;
6084
6084
  },
@@ -6090,7 +6090,7 @@ function dl(e) {
6090
6090
  kind: "preview"
6091
6091
  });
6092
6092
  }
6093
- }), null), Q(B, Y(q, {
6093
+ }), null), Q(V, Y(q, {
6094
6094
  get when() {
6095
6095
  return ea(() => !!(e.interactive && m() && e.model.state.altPressed))() ? e.guideDistanceOverlay : e.interactive && m() && e.model.state.altPressed;
6096
6096
  },
@@ -6102,7 +6102,7 @@ function dl(e) {
6102
6102
  kind: "preview"
6103
6103
  });
6104
6104
  }
6105
- }), null), Q(B, Y(q, {
6105
+ }), null), Q(V, Y(q, {
6106
6106
  get when() {
6107
6107
  return ea(() => !!(p() && e.model.state.altPressed))() ? e.optionContainerLines : p() && e.model.state.altPressed;
6108
6108
  },
@@ -6220,23 +6220,23 @@ function dl(e) {
6220
6220
  }
6221
6221
  })
6222
6222
  ]
6223
- }), null), Q(B, Y(Zr, {
6223
+ }), null), Q(V, Y(Zr, {
6224
6224
  get each() {
6225
- return I();
6225
+ return L();
6226
6226
  },
6227
6227
  children: (t) => {
6228
- let n = () => t.id.startsWith("__mesurer-preview-"), r = () => !n() && e.model.state.selectedGuideIds.includes(t.id), i = () => !n() && e.hoverGuide?.id === t.id, a = () => r() ? F("active") : i() ? F("hover") : F("default"), o = () => Math.max(e.model.state.settings.guideStyle.width, r() || i() ? 2 : e.model.state.settings.guideStyle.width), s = () => e.model.state.settings.guideStyle.pattern === "solid" ? void 0 : e.model.state.settings.guideStyle.pattern === "dotted" ? `radial-gradient(circle, ${a()} 0 ${o() / 2}px, transparent ${o() / 2 + .5}px)` : `repeating-linear-gradient(${t.orientation === "vertical" ? "to bottom" : "to right"}, ${a()} 0 ${e.model.state.settings.guideStyle.dashLength}px, transparent ${e.model.state.settings.guideStyle.dashLength}px ${e.model.state.settings.guideStyle.dashLength + e.model.state.settings.guideStyle.gap}px)`, c = () => e.model.state.settings.guideStyle.pattern === "dotted" ? t.orientation === "vertical" ? `${o()}px ${e.model.state.settings.guideStyle.dashLength + e.model.state.settings.guideStyle.gap}px` : `${e.model.state.settings.guideStyle.dashLength + e.model.state.settings.guideStyle.gap}px ${o()}px` : void 0;
6228
+ let n = () => t.id.startsWith("__mesurer-preview-"), r = () => !n() && e.model.state.selectedGuideIds.includes(t.id), i = () => !n() && e.hoverGuide?.id === t.id, a = () => r() ? I("active") : i() ? I("hover") : I("default"), o = () => Math.max(e.model.state.settings.guideStyle.width, r() || i() ? 2 : e.model.state.settings.guideStyle.width), s = () => e.model.state.settings.guideStyle.pattern === "solid" ? void 0 : e.model.state.settings.guideStyle.pattern === "dotted" ? `radial-gradient(circle, ${a()} 0 ${o() / 2}px, transparent ${o() / 2 + .5}px)` : `repeating-linear-gradient(${t.orientation === "vertical" ? "to bottom" : "to right"}, ${a()} 0 ${e.model.state.settings.guideStyle.dashLength}px, transparent ${e.model.state.settings.guideStyle.dashLength}px ${e.model.state.settings.guideStyle.dashLength + e.model.state.settings.guideStyle.gap}px)`, c = () => e.model.state.settings.guideStyle.pattern === "dotted" ? t.orientation === "vertical" ? `${o()}px ${e.model.state.settings.guideStyle.dashLength + e.model.state.settings.guideStyle.gap}px` : `${e.model.state.settings.guideStyle.dashLength + e.model.state.settings.guideStyle.gap}px ${o()}px` : void 0;
6229
6229
  var l = X("div", {
6230
6230
  class: "msr:absolute",
6231
6231
  "data-mesurer-guide": "true",
6232
6232
  onPointerDown: (r) => {
6233
- !n() && e.model.current.toolMode !== "none" && R(t, r);
6233
+ !n() && e.model.current.toolMode !== "none" && z(t, r);
6234
6234
  },
6235
6235
  onPointerUp: (r) => {
6236
- !n() && e.model.current.toolMode !== "none" && z(t, r);
6236
+ !n() && e.model.current.toolMode !== "none" && B(t, r);
6237
6237
  },
6238
6238
  onPointerCancel: (r) => {
6239
- !n() && e.model.current.toolMode !== "none" && z(t, r);
6239
+ !n() && e.model.current.toolMode !== "none" && B(t, r);
6240
6240
  }
6241
6241
  }), u = X("div", { class: "msr:absolute" });
6242
6242
  return Z(l, u), J(() => ({
@@ -6245,13 +6245,13 @@ function dl(e) {
6245
6245
  top: "0",
6246
6246
  width: "14px",
6247
6247
  height: "100%",
6248
- "pointer-events": !n() && _() ? "auto" : "none"
6248
+ "pointer-events": !n() && v() ? "auto" : "none"
6249
6249
  } : {
6250
6250
  top: `${t.position - 7}px`,
6251
6251
  left: "0",
6252
6252
  height: "14px",
6253
6253
  width: "100%",
6254
- "pointer-events": !n() && _() ? "auto" : "none"
6254
+ "pointer-events": !n() && v() ? "auto" : "none"
6255
6255
  },
6256
6256
  t: t.orientation === "vertical" ? {
6257
6257
  left: "6px",
@@ -6278,10 +6278,10 @@ function dl(e) {
6278
6278
  }
6279
6279
  }), null), J(() => ({
6280
6280
  e: `msr:absolute msr:inset-0 msr:select-none ${h() ? `msr:pointer-events-auto ${m() ? e.hoverGuide || e.model.state.draggingGuideId ? "msr:cursor-default" : "msr:cursor-crosshair" : "msr:cursor-default"} msr:opacity-100` : "msr:pointer-events-none msr:opacity-0"}`,
6281
- t: { "pointer-events": g() ? "auto" : "none" }
6281
+ t: { "pointer-events": _() ? "auto" : "none" }
6282
6282
  }), ({ e, t }, n) => {
6283
- e !== n?.e && $(B, "class", e, n?.e), t !== n?.t && $(B, "style", t, n?.t);
6284
- }), B;
6283
+ e !== n?.e && $(V, "class", e, n?.e), t !== n?.t && $(V, "style", t, n?.t);
6284
+ }), V;
6285
6285
  }
6286
6286
  var fl = 18, pl = 5, ml = 32, hl = Array.from({ length: 801 }, (e, t) => t * pl);
6287
6287
  function gl(e) {
@@ -8144,7 +8144,7 @@ function Hu(e) {
8144
8144
  D = e.setTimeout(() => {
8145
8145
  D = 0, t === A && M(Sl(j()), t);
8146
8146
  }, 100);
8147
- }, P = () => e.model.state.toolMode === "select", F = () => e.model.state.xrayVisible, I = () => e.model.state.colorPickerActive, L = () => e.model.state.rulersVisible, R = () => e.model.state.toolMode === "text-inspector" || (e.typographyContextActive ?? !1), z = () => e.model.state.toolMode === "guides", B = () => e.model.state.settingsOpen, V = () => (e.pluginTools ?? []).find((e) => e.modeSwitch === !0 && e.toolbarMode === "edit"), H = () => V()?.active?.() ? "edit" : "select", U = () => (e.pluginTools ?? []).filter((e) => e.toolbarMode === "select" && !e.modeSwitch), ee = () => (e.pluginTools ?? []).filter((e) => e.toolbarMode === "edit" && !e.modeSwitch), te = () => (e.pluginTools ?? []).filter((e) => e.toolbarMode === "always" || e.toolbarMode === void 0), ne = () => te().some((e) => e.active?.() ?? !1), W = () => P() || F() || I() || L() || R() || z(), re = (e, t = !1) => t || !d() || e, ie = () => te().length > 0 && (!d() || W() || ne()), G = () => !d() || W() || ne() || B(), ae = () => !r() && !a() && !e.model.state.settingsOpen, oe = (t) => e.isBuiltinActionDisabled?.(t) ?? !1, se = () => e.ownerWindow.innerHeight || 0, ce = () => t().y < 56, K = () => se() > 0 && t().y > se() - 56, le = () => ce() && !K() ? "bottom" : "top", ue = () => {
8147
+ }, P = () => e.model.state.toolMode === "select", F = () => e.model.state.xrayVisible, I = () => e.model.state.colorPickerActive, L = () => e.model.state.rulersVisible, R = () => e.model.state.toolMode === "text-inspector" || (e.typographyContextActive ?? !1), z = () => e.model.state.toolMode === "guides", B = () => e.model.state.settingsOpen, V = () => (e.pluginTools ?? []).find((e) => e.modeSwitch === !0 && e.toolbarMode === "edit"), H = () => V()?.active?.() ? "edit" : "select", U = () => (e.pluginTools ?? []).filter((e) => e.toolbarMode === "select" && !e.modeSwitch), ee = () => (e.pluginTools ?? []).filter((e) => e.toolbarMode === "edit" && !e.modeSwitch), te = () => (e.pluginTools ?? []).filter((e) => e.toolbarMode === "always" || e.toolbarMode === void 0), ne = () => te().some((e) => e.active?.() ?? !1), W = () => P() || F() || I() || L() || R() || z(), G = (e, t = !1) => t || !d() || e, re = () => te().length > 0 && (!d() || W() || ne()), ie = () => !d() || W() || ne() || B(), ae = () => !r() && !a() && !e.model.state.settingsOpen, oe = (t) => e.isBuiltinActionDisabled?.(t) ?? !1, se = () => e.ownerWindow.innerHeight || 0, ce = () => t().y < 56, K = () => se() > 0 && t().y > se() - 56, le = () => ce() && !K() ? "bottom" : "top", ue = () => {
8148
8148
  t();
8149
8149
  let e = v?.getBoundingClientRect();
8150
8150
  if (!e) return K() ? "top" : "bottom";
@@ -8316,7 +8316,7 @@ function Hu(e) {
8316
8316
  }
8317
8317
  }), Ee = (t, n = !1) => Y(Ru, {
8318
8318
  get visible() {
8319
- return re(t.active?.() ?? !1, n);
8319
+ return G(t.active?.() ?? !1, n);
8320
8320
  },
8321
8321
  get children() {
8322
8322
  return Y(q, {
@@ -8515,7 +8515,7 @@ function Hu(e) {
8515
8515
  b = e;
8516
8516
  }, je), Q(Me, Y(Ru, {
8517
8517
  get visible() {
8518
- return re(P());
8518
+ return G(P());
8519
8519
  },
8520
8520
  get children() {
8521
8521
  return Y(Lu, ra({
@@ -8533,7 +8533,7 @@ function Hu(e) {
8533
8533
  }
8534
8534
  }), null), Q(Me, Y(Ru, {
8535
8535
  get visible() {
8536
- return re(F());
8536
+ return G(F());
8537
8537
  },
8538
8538
  get children() {
8539
8539
  return Y(Lu, ra({
@@ -8556,7 +8556,7 @@ function Hu(e) {
8556
8556
  get children() {
8557
8557
  return Y(Ru, {
8558
8558
  get visible() {
8559
- return re(I());
8559
+ return G(I());
8560
8560
  },
8561
8561
  get children() {
8562
8562
  return Y(Lu, ra({
@@ -8579,7 +8579,7 @@ function Hu(e) {
8579
8579
  }
8580
8580
  }), null), Q(Me, Y(Ru, {
8581
8581
  get visible() {
8582
- return re(L());
8582
+ return G(L());
8583
8583
  },
8584
8584
  get children() {
8585
8585
  return Y(Lu, ra({
@@ -8597,7 +8597,7 @@ function Hu(e) {
8597
8597
  }
8598
8598
  }), null), Q(Me, Y(Ru, {
8599
8599
  get visible() {
8600
- return re(R());
8600
+ return G(R());
8601
8601
  },
8602
8602
  get children() {
8603
8603
  return Y(Lu, ra({
@@ -8618,7 +8618,7 @@ function Hu(e) {
8618
8618
  }
8619
8619
  }), null), Q(Me, Y(Ru, {
8620
8620
  get visible() {
8621
- return re(z());
8621
+ return G(z());
8622
8622
  },
8623
8623
  get children() {
8624
8624
  return [Y(Lu, ra({
@@ -8761,7 +8761,7 @@ function Hu(e) {
8761
8761
  get children() {
8762
8762
  return [Y(zu, {
8763
8763
  get visible() {
8764
- return ie();
8764
+ return re();
8765
8765
  },
8766
8766
  marker: "plugins"
8767
8767
  }), (() => {
@@ -8780,7 +8780,7 @@ function Hu(e) {
8780
8780
  }
8781
8781
  }), Fe), Q(Fe, Y(Ru, {
8782
8782
  get visible() {
8783
- return re(B());
8783
+ return G(B());
8784
8784
  },
8785
8785
  get children() {
8786
8786
  var t = X("div", {
@@ -8846,7 +8846,7 @@ function Hu(e) {
8846
8846
  }
8847
8847
  })), Q(De, Y(zu, {
8848
8848
  get visible() {
8849
- return G();
8849
+ return ie();
8850
8850
  },
8851
8851
  marker: "compact"
8852
8852
  }), Ie), Z(Ie, Le), Q(Le, Y(Kl, {
@@ -10129,13 +10129,13 @@ function op(e = {}, t = !1) {
10129
10129
  }, W = (e) => {
10130
10130
  ee(!1);
10131
10131
  for (let t of e) t.sourceEl.isConnected && ne(t.sourceEl, t, !1, !1);
10132
- }, re = () => {
10132
+ }, G = () => {
10133
10133
  let e = D.pop();
10134
10134
  return e ? (O.push(V()), W(e), !0) : !1;
10135
- }, ie = () => {
10135
+ }, re = () => {
10136
10136
  let e = O.pop();
10137
10137
  return e ? (D.push(V()), W(e), !0) : !1;
10138
- }, G = () => {
10138
+ }, ie = () => {
10139
10139
  E.length && (H(), ee(!0));
10140
10140
  }, ae = () => {
10141
10141
  for (let e of E.slice()) {
@@ -10235,9 +10235,9 @@ function op(e = {}, t = !1) {
10235
10235
  return {
10236
10236
  enable: he,
10237
10237
  disable: ge,
10238
- undo: re,
10239
- redo: ie,
10240
- clear: G,
10238
+ undo: G,
10239
+ redo: re,
10240
+ clear: ie,
10241
10241
  inspect: B,
10242
10242
  isEnabled: () => m,
10243
10243
  canUndo: () => D.length > 0,
@@ -10600,9 +10600,9 @@ function Tp(e) {
10600
10600
  t.setActiveMeasurement(r);
10601
10601
  } else e.shiftKey || (t.checkpoint(), t.setSelectedMeasurements([], null));
10602
10602
  ee();
10603
- }, re = () => {
10603
+ }, G = () => {
10604
10604
  H(), t.current.draggingGuideId || ee(), t.setTransient({ guidePreview: null });
10605
- }, ie = (e, n) => {
10605
+ }, re = (e, n) => {
10606
10606
  if (!(!t.current.enabled || n.button !== 0 || t.current.settingsOpen)) {
10607
10607
  if (n.preventDefault(), n.stopPropagation(), t.checkpoint(), n.shiftKey) {
10608
10608
  let n = t.current.selectedGuideIds.includes(e.id) ? t.current.selectedGuideIds.filter((t) => t !== e.id) : [...t.current.selectedGuideIds, e.id];
@@ -10611,7 +10611,7 @@ function Tp(e) {
10611
10611
  }
10612
10612
  t.setSelectedGuideIds([e.id]), t.setTransient({ draggingGuideId: e.id }), ms(n.currentTarget, n.pointerId);
10613
10613
  }
10614
- }, G = (e, n) => {
10614
+ }, ie = (e, n) => {
10615
10615
  n.stopPropagation(), t.setTransient({ draggingGuideId: null }), n.currentTarget.hasPointerCapture?.(n.pointerId) && n.currentTarget.releasePointerCapture?.(n.pointerId);
10616
10616
  }, ae = (e, n, r = null) => Nd({
10617
10617
  orientation: e,
@@ -10924,9 +10924,9 @@ function Tp(e) {
10924
10924
  onPointerDown: te,
10925
10925
  onPointerMove: ne,
10926
10926
  onPointerUp: W,
10927
- onPointerLeave: re,
10928
- onGuidePointerDown: ie,
10929
- onGuidePointerUp: G
10927
+ onPointerLeave: G,
10928
+ onGuidePointerDown: re,
10929
+ onGuidePointerUp: ie
10930
10930
  }), null), Q(n, Y(So, {
10931
10931
  model: t,
10932
10932
  ownerWindow: s,
@@ -11286,22 +11286,22 @@ var Dp = "mesurer.presentation.preferences", Op = "presentation", kp = {
11286
11286
  value: e.style.getPropertyValue("visibility"),
11287
11287
  priority: e.style.getPropertyPriority("visibility")
11288
11288
  }), e.style.setProperty("visibility", "hidden", "important")));
11289
- }, re = (e) => {
11289
+ }, G = (e) => {
11290
11290
  if (e.parentElement instanceof c.HTMLElement) return e.parentElement;
11291
11291
  let t = e.getRootNode();
11292
11292
  return t instanceof c.ShadowRoot && t.host instanceof c.HTMLElement ? t.host : null;
11293
- }, ie = (e, t) => {
11294
- let n = re(e);
11293
+ }, re = (e, t) => {
11294
+ let n = G(e);
11295
11295
  for (; n;) {
11296
11296
  let e = t.get(n);
11297
11297
  if (e) return e;
11298
- n = re(n);
11298
+ n = G(n);
11299
11299
  }
11300
11300
  return {
11301
11301
  x: 0,
11302
11302
  y: 0
11303
11303
  };
11304
- }, G = (e = A()) => {
11304
+ }, ie = (e = A()) => {
11305
11305
  let t = /* @__PURE__ */ new Map();
11306
11306
  for (let n of e) for (let e of n.targets) {
11307
11307
  let n = F(e);
@@ -11312,14 +11312,14 @@ var Dp = "mesurer.presentation.preferences", Op = "presentation", kp = {
11312
11312
  x: e.desiredLocalOffsetX,
11313
11313
  y: e.desiredLocalOffsetY
11314
11314
  }, oe = (e, t) => {
11315
- let n = re(e);
11315
+ let n = G(e);
11316
11316
  for (; n;) {
11317
11317
  if (t.has(n)) return n;
11318
- n = re(n);
11318
+ n = G(n);
11319
11319
  }
11320
11320
  return null;
11321
11321
  }, se = (e = A(), t = /* @__PURE__ */ new Map()) => {
11322
- let n = G(e), r = /* @__PURE__ */ new Set([...n.keys(), ...t.keys()]), i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Set(), o = (e) => {
11322
+ let n = ie(e), r = /* @__PURE__ */ new Set([...n.keys(), ...t.keys()]), i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Set(), o = (e) => {
11323
11323
  let s = i.get(e);
11324
11324
  if (s) return s;
11325
11325
  let c = n.get(e), l = t.get(e) ?? (c ? ae(c) : null);
@@ -11367,7 +11367,7 @@ var Dp = "mesurer.presentation.preferences", Op = "presentation", kp = {
11367
11367
  }, K = (e) => {
11368
11368
  let t = [...e].flatMap(([t, n]) => {
11369
11369
  if (!t.isConnected || !M(t)) return [];
11370
- let r = ie(t, e), i = {
11370
+ let r = re(t, e), i = {
11371
11371
  x: n.x - r.x,
11372
11372
  y: n.y - r.y
11373
11373
  };
@@ -11418,13 +11418,13 @@ var Dp = "mesurer.presentation.preferences", Op = "presentation", kp = {
11418
11418
  he();
11419
11419
  return;
11420
11420
  }
11421
- let t = A(), r = G(t), i = se(t), a = /* @__PURE__ */ new Set();
11421
+ let t = A(), r = ie(t), i = se(t), a = /* @__PURE__ */ new Set();
11422
11422
  for (let t of de()) {
11423
11423
  let o = r.get(t);
11424
11424
  if (!o) continue;
11425
11425
  let s = i.get(t);
11426
11426
  if (!s) continue;
11427
- let c = ie(t, i), u = ae(o) ?? {
11427
+ let c = re(t, i), u = ae(o) ?? {
11428
11428
  x: s.x - c.x,
11429
11429
  y: s.y - c.y
11430
11430
  };
@@ -11582,10 +11582,10 @@ var Dp = "mesurer.presentation.preferences", Op = "presentation", kp = {
11582
11582
  intentId: null,
11583
11583
  state: "desired"
11584
11584
  }, le();
11585
- let u = G(A()), d = se(A()), p = new Set(r);
11585
+ let u = ie(A()), d = se(A()), p = new Set(r);
11586
11586
  V();
11587
11587
  let m = r.map((e, t) => {
11588
- let n = Yu(e), r = ie(e, d), i = d.get(e) ?? r, a = u.get(e), o = (a ? ae(a) : null) ?? {
11588
+ let n = Yu(e), r = re(e, d), i = d.get(e) ?? r, a = u.get(e), o = (a ? ae(a) : null) ?? {
11589
11589
  x: i.x - r.x,
11590
11590
  y: i.y - r.y
11591
11591
  }, s = im(n, i), c = gd(e);
@@ -12982,21 +12982,21 @@ function Yh(e, t) {
12982
12982
  return;
12983
12983
  }
12984
12984
  U(e, "font-weight", Wh(t) >= 600 ? "400" : "700");
12985
- }, re = (e) => {
12985
+ }, G = (e) => {
12986
12986
  let t = B(e, "font-style"), n = R(e, "font-style");
12987
12987
  if (n && n.desired !== "normal" && n.before === "normal") {
12988
12988
  U(e, "font-style", n.before);
12989
12989
  return;
12990
12990
  }
12991
12991
  U(e, "font-style", t === "normal" ? "italic" : "normal");
12992
- }, ie = (e) => {
12992
+ }, re = (e) => {
12993
12993
  let t = B(e, "text-decoration-line"), n = R(e, "text-decoration-line");
12994
12994
  if (n && n.desired.includes("underline") && !n.before.includes("underline")) {
12995
12995
  U(e, "text-decoration-line", n.before);
12996
12996
  return;
12997
12997
  }
12998
12998
  U(e, "text-decoration-line", t.includes("underline") ? "none" : "underline");
12999
- }, G = (e, t, r, i, a) => {
12999
+ }, ie = (e, t, r, i, a) => {
13000
13000
  let o = n.createElement("button");
13001
13001
  return o.type = "button", o.textContent = t, o.title = r, o.setAttribute("aria-label", r), o.setAttribute("aria-pressed", i ? "true" : "false"), o.dataset.mesurerTextStyleButton = r.toLowerCase(), Object.assign(o.style, {
13002
13002
  width: "32px",
@@ -13225,7 +13225,7 @@ function Yh(e, t) {
13225
13225
  let t = e.toolbar;
13226
13226
  t.replaceChildren();
13227
13227
  let n = B(e, "font-weight"), r = B(e, "font-style"), i = B(e, "text-decoration-line");
13228
- t.append(G(e, "B", "Bold", Wh(n) >= 600, () => W(e)), G(e, "I", "Italic", r === "italic" || r === "oblique", () => re(e)), G(e, "U", "Underline", i.includes("underline"), () => ie(e)), ue(e)), le(e);
13228
+ t.append(ie(e, "B", "Bold", Wh(n) >= 600, () => W(e)), ie(e, "I", "Italic", r === "italic" || r === "oblique", () => G(e)), ie(e, "U", "Underline", i.includes("underline"), () => re(e)), ue(e)), le(e);
13229
13229
  }, fe = () => {
13230
13230
  let e = m;
13231
13231
  if (!e || !e.element.isConnected) return;
@@ -13504,7 +13504,7 @@ function Yh(e, t) {
13504
13504
  if (e && (t.metaKey || t.ctrlKey) && !t.altKey && !t.shiftKey) {
13505
13505
  let e = t.key.toLowerCase();
13506
13506
  if (e === "b" || e === "i" || e === "u") {
13507
- t.preventDefault(), t.stopImmediatePropagation(), e === "b" ? W(n) : e === "i" ? re(n) : ie(n), n.editor.focus({ preventScroll: !0 });
13507
+ t.preventDefault(), t.stopImmediatePropagation(), e === "b" ? W(n) : e === "i" ? G(n) : re(n), n.editor.focus({ preventScroll: !0 });
13508
13508
  return;
13509
13509
  }
13510
13510
  }
@@ -15794,7 +15794,7 @@ function rv(e) {
15794
15794
  let n = ne();
15795
15795
  n !== t && (t = n, e(n));
15796
15796
  });
15797
- }, re = () => {
15797
+ }, G = () => {
15798
15798
  let e = z.createElement("div");
15799
15799
  e.dataset.mesurerInspectorUi = "true";
15800
15800
  let t = W((t) => {
@@ -15808,15 +15808,15 @@ function rv(e) {
15808
15808
  n || (n = !0, t(), e.remove());
15809
15809
  }
15810
15810
  };
15811
- }, ie = (e) => J_({
15811
+ }, re = (e) => J_({
15812
15812
  model: U(),
15813
15813
  ownerDocument: z,
15814
15814
  ownerWindow: B,
15815
15815
  uiRoot: I,
15816
15816
  pageTarget: V,
15817
15817
  persistenceKey: e ? `${P.persistKey ?? X_}:${e}:${B.location.origin}` : void 0
15818
- }), G = z.createElement("style");
15819
- G.dataset.mesurerPluginVisibility = "true", G.dataset.mesurerInspectorUi = "true", G.textContent = j(), I.append(G);
15818
+ }), ie = z.createElement("style");
15819
+ ie.dataset.mesurerPluginVisibility = "true", ie.dataset.mesurerInspectorUi = "true", ie.textContent = j(), I.append(ie);
15820
15820
  let ae = P.persistKey ? `${P.persistKey}:plugins` : X_, oe = `${ae}:availability`, se = /* @__PURE__ */ new Map();
15821
15821
  try {
15822
15822
  let e = B.localStorage.getItem(oe);
@@ -15855,7 +15855,7 @@ function rv(e) {
15855
15855
  }, de = () => ue();
15856
15856
  B.addEventListener("pagehide", de);
15857
15857
  let fe = N.subscribe((e) => {
15858
- if (x((e) => e + 1), G.textContent = j(), (e.reason === "state" || e.reason === "history" || e.reason === "remove" || e.reason === "replace") && le(), S() && !b && (e.reason === "load" || e.reason === "remove" || e.reason === "replace") && ce(), e.reason === "remove" && e.pluginId?.startsWith("mesurer.")) {
15858
+ if (x((e) => e + 1), ie.textContent = j(), (e.reason === "state" || e.reason === "history" || e.reason === "remove" || e.reason === "replace") && le(), S() && !b && (e.reason === "load" || e.reason === "remove" || e.reason === "replace") && ce(), e.reason === "remove" && e.pluginId?.startsWith("mesurer.")) {
15859
15859
  let t = e.pluginId.slice(8);
15860
15860
  ev(t) && _?.deactivate(t);
15861
15861
  }
@@ -15962,8 +15962,8 @@ function rv(e) {
15962
15962
  currentToolbarMode: () => E() ? "edit" : "select",
15963
15963
  theme: ne,
15964
15964
  subscribeTheme: W,
15965
- createWorkspaceRuntime: ie,
15966
- createInspectorMount: re
15965
+ createWorkspaceRuntime: re,
15966
+ createInspectorMount: G
15967
15967
  };
15968
15968
  e.service.provide("runtime:solid", t), Mp(e), Um(e, t), H_(e, t);
15969
15969
  for (let t of Y_) e.command.register(tv(t), () => Se(t));
@@ -15988,7 +15988,7 @@ function rv(e) {
15988
15988
  } catch (e) {
15989
15989
  P.onPluginError?.(e, "plugin-persistence");
15990
15990
  }
15991
- t && (C(!0), G.textContent = j(), P.onPluginsReady?.(N));
15991
+ t && (C(!0), ie.textContent = j(), P.onPluginsReady?.(N));
15992
15992
  }
15993
15993
  })();
15994
15994
  let Ce = (e) => {
@@ -16047,7 +16047,7 @@ function rv(e) {
16047
16047
  return B.addEventListener("keydown", we, !0), () => {
16048
16048
  t = !1;
16049
16049
  for (let e of A) N.cancelLoad(e);
16050
- A.clear(), ue(), B.removeEventListener("pagehide", de), B.removeEventListener("keydown", we, !0), fe(), G.remove(), g = null, _ = null, v = () => void 0, y = async () => void 0, r && N.dispose();
16050
+ A.clear(), ue(), B.removeEventListener("pagehide", de), B.removeEventListener("keydown", we, !0), fe(), ie.remove(), g = null, _ = null, v = () => void 0, y = async () => void 0, r && N.dispose();
16051
16051
  };
16052
16052
  }), Y(Nl, {
16053
16053
  runtime: {
@@ -16258,12 +16258,12 @@ function _v(e) {
16258
16258
  elements: [...t.elements],
16259
16259
  region: t.region ? { ...t.region } : null
16260
16260
  };
16261
- }, W = (e, t) => e.elements.length !== t.elements.length || e.elements.some((e, n) => e !== t.elements[n]) ? !1 : e.region === t.region ? !0 : !e.region || !t.region ? !1 : e.region.left === t.region.left && e.region.top === t.region.top && e.region.width === t.region.width && e.region.height === t.region.height, re = () => {
16261
+ }, W = (e, t) => e.elements.length !== t.elements.length || e.elements.some((e, n) => e !== t.elements[n]) ? !1 : e.region === t.region ? !0 : !e.region || !t.region ? !1 : e.region.left === t.region.left && e.region.top === t.region.top && e.region.width === t.region.width && e.region.height === t.region.height, G = () => {
16262
16262
  A = null, v(""), g(!1), b(null), m(null);
16263
- }, ie = () => {
16263
+ }, re = () => {
16264
16264
  let e = H();
16265
16265
  return !!(e.CSS?.supports("anchor-name: --mesurer-annotation-trigger") && e.CSS.supports("position-anchor: --mesurer-annotation-trigger") && e.CSS.supports("left: anchor(left)"));
16266
- }, G = () => {
16266
+ }, ie = () => {
16267
16267
  let t = e.runtime.currentSelection().elements;
16268
16268
  if (!t.length) return null;
16269
16269
  let n = e.runtime.hoveredElement();
@@ -16280,7 +16280,7 @@ function _v(e) {
16280
16280
  }, K = (t) => {
16281
16281
  let n = e.runtime.annotation(t);
16282
16282
  return !n || n.anchor.kind !== "elements" ? null : n.resolvedTargets.find(({ element: e }) => e?.isConnected)?.element ?? null;
16283
- }, le = (e) => !!(fv(e) && U() && N && ie() && e.getRootNode() === N.getRootNode()), ue = (e) => {
16283
+ }, le = (e) => !!(fv(e) && U() && N && re() && e.getRootNode() === N.getRootNode()), ue = (e) => {
16284
16284
  let t = K(e), n = V.get(e);
16285
16285
  if (!t) {
16286
16286
  n && (ce(e), i((e) => e + 1));
@@ -16322,11 +16322,11 @@ function _v(e) {
16322
16322
  for (let e of V.values()) e.anchorName || e.scroll.rebase();
16323
16323
  });
16324
16324
  };
16325
- e.initialTriggerFallback && (O = G());
16325
+ e.initialTriggerFallback && (O = ie());
16326
16326
  let me = () => {
16327
16327
  R?.release(), R = null, L?.(), L = null, F = null, I = null;
16328
- }, he = (e) => !!(fv(e) && U() && N && e !== O && ie() && e.getRootNode() === N.getRootNode()), ge = () => {
16329
- let e = G();
16328
+ }, he = (e) => !!(fv(e) && U() && N && e !== O && re() && e.getRootNode() === N.getRootNode()), ge = () => {
16329
+ let e = ie();
16330
16330
  O && e !== O && (O = null);
16331
16331
  let t = F, n = !!(e?.isConnected && he(e)), r = I === e;
16332
16332
  if (e === F && e?.isConnected && n === r) {
@@ -16357,12 +16357,12 @@ function _v(e) {
16357
16357
  function ye() {
16358
16358
  i((e) => e + 1);
16359
16359
  }
16360
- let be = G();
16360
+ let be = ie();
16361
16361
  _e(be);
16362
16362
  let xe = e.runtime.subscribe(() => {
16363
16363
  let t = e.runtime.selectGestureActive();
16364
- h() && t ? (k = !0, re()) : h() && A !== null && !W(A, ne()) && (O = G(), k = !1, re());
16365
- let r = G(), i = r !== be;
16364
+ h() && t ? (k = !0, G()) : h() && A !== null && !W(A, ne()) && (O = ie(), k = !1, G());
16365
+ let r = ie(), i = r !== be;
16366
16366
  i && (be = r, _e(be), k && (k = !1, O = r)), ge(), i && ye(), n((e) => e + 1), pe();
16367
16367
  });
16368
16368
  ge(), H().queueMicrotask(de), Kt(() => {
@@ -16634,7 +16634,7 @@ function _v(e) {
16634
16634
  S(!1);
16635
16635
  }
16636
16636
  }
16637
- }, Je = re, Ye = () => {
16637
+ }, Je = G, Ye = () => {
16638
16638
  if (!Oe()) return;
16639
16639
  k = !1, A = ne(), v(""), b(null), w(null), o(null);
16640
16640
  let e = je();
@@ -16648,7 +16648,7 @@ function _v(e) {
16648
16648
  g(!0), H().queueMicrotask(() => R?.sync());
16649
16649
  }, Xe = () => {
16650
16650
  let e = h();
16651
- A !== null && !W(A, ne()) ? (O = G(), k = !1, ge(), ye()) : e && (k = !1), Je();
16651
+ A !== null && !W(A, ne()) ? (O = ie(), k = !1, ge(), ye()) : e && (k = !1), Je();
16652
16652
  }, Ze = () => {
16653
16653
  h() && (k = !0, Je());
16654
16654
  }, Qe = () => {
@@ -17769,65 +17769,81 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
17769
17769
  audio: !1,
17770
17770
  video: r
17771
17771
  });
17772
- }, zy = async (e) => {
17773
- let t = e.navigator.mediaDevices;
17774
- if (!t) throw Error("Screen recording is unavailable in this browser.");
17775
- if (Iy(e)) return Ly(e, t);
17772
+ }, zy = async (e, t) => {
17773
+ let n = e.getVideoTracks()[0];
17774
+ if (!n?.applyConstraints) return e;
17776
17775
  try {
17777
- let n = await Ry(e, t);
17778
- if (n) return n;
17776
+ await n.applyConstraints({ frameRate: {
17777
+ ideal: t,
17778
+ max: t
17779
+ } });
17779
17780
  } catch {}
17780
- if (!t.getDisplayMedia) throw Error("Screen recording is unavailable in this browser.");
17781
- let n = {
17781
+ return e;
17782
+ }, By = async (e, t) => {
17783
+ let n = e.navigator.mediaDevices;
17784
+ if (!n) throw Error("Screen recording is unavailable in this browser.");
17785
+ if (Iy(e)) return zy(await Ly(e, n), t);
17786
+ try {
17787
+ let r = await Ry(e, n);
17788
+ if (r) return zy(r, t);
17789
+ } catch {}
17790
+ if (!n.getDisplayMedia) throw Error("Screen recording is unavailable in this browser.");
17791
+ let r = {
17792
+ ideal: t,
17793
+ max: t
17794
+ }, i = {
17782
17795
  audio: !1,
17783
- video: { displaySurface: "browser" },
17796
+ video: {
17797
+ displaySurface: "browser",
17798
+ frameRate: r
17799
+ },
17784
17800
  preferCurrentTab: !0,
17785
17801
  selfBrowserSurface: "include"
17786
17802
  };
17787
17803
  try {
17788
- return await t.getDisplayMedia(n);
17804
+ return zy(await n.getDisplayMedia(i), t);
17789
17805
  } catch (e) {
17790
17806
  if (e instanceof DOMException && e.name === "AbortError") throw e;
17791
- return t.getDisplayMedia({
17807
+ return zy(await n.getDisplayMedia({
17792
17808
  audio: !1,
17793
- video: !0
17794
- });
17795
- }
17796
- }, By = async (e, t, n) => {
17797
- let r = await zy(t), i = r.getVideoTracks()[0];
17798
- if (!i) throw r.getTracks().forEach((e) => e.stop()), Error("No video track was selected.");
17799
- if (i.getSettings().displaySurface && i.getSettings().displaySurface !== "browser") throw r.getTracks().forEach((e) => e.stop()), Error("Select the current browser tab to record this region.");
17800
- let a = e.createElement("video");
17801
- a.autoplay = !0, a.muted = !0, a.playsInline = !0, a.srcObject = r, a.setAttribute("playsinline", ""), a.setAttribute("aria-hidden", "true"), a.style.cssText = Cy, e.body.append(a);
17809
+ video: { frameRate: r }
17810
+ }), t);
17811
+ }
17812
+ }, Vy = async (e, t, n, r = 60) => {
17813
+ let i = await By(t, r), a = i.getVideoTracks()[0];
17814
+ if (!a) throw i.getTracks().forEach((e) => e.stop()), Error("No video track was selected.");
17815
+ if (a.getSettings().displaySurface && a.getSettings().displaySurface !== "browser") throw i.getTracks().forEach((e) => e.stop()), Error("Select the current browser tab to record this region.");
17816
+ let o = e.createElement("video");
17817
+ o.autoplay = !0, o.muted = !0, o.playsInline = !0, o.srcObject = i, o.setAttribute("playsinline", ""), o.setAttribute("aria-hidden", "true"), o.style.cssText = Cy, e.body.append(o);
17802
17818
  try {
17803
- await a.play(), (a.videoWidth <= 0 || a.videoHeight <= 0) && await new Promise((e, t) => {
17804
- a.addEventListener("loadeddata", () => e(), { once: !0 }), a.addEventListener("error", () => t(/* @__PURE__ */ Error("Could not read the selected video track.")), { once: !0 });
17819
+ await o.play(), (o.videoWidth <= 0 || o.videoHeight <= 0) && await new Promise((e, t) => {
17820
+ o.addEventListener("loadeddata", () => e(), { once: !0 }), o.addEventListener("error", () => t(/* @__PURE__ */ Error("Could not read the selected video track.")), { once: !0 });
17805
17821
  });
17806
- let o = Dy(e, n), s = !1;
17822
+ let r = Dy(e, n), s = !1;
17807
17823
  try {
17808
- s = await Oy(i, o);
17824
+ s = await Oy(a, r);
17809
17825
  } catch {
17810
17826
  s = !1;
17811
17827
  }
17812
- s || o.remove(), await ky(a, t);
17813
- let c = t.devicePixelRatio || 1, l = Ey(n, a.videoWidth, a.videoHeight, Ty(t)), u = e.createElement("canvas");
17828
+ s || r.remove(), await ky(o, t);
17829
+ let c = t.devicePixelRatio || 1, l = Ey(n, o.videoWidth, o.videoHeight, Ty(t)), u = e.createElement("canvas");
17814
17830
  u.width = s ? Math.max(2, Math.round(n.width * c)) : l.sw, u.height = s ? Math.max(2, Math.round(n.height * c)) : l.sh, u.setAttribute("aria-hidden", "true"), u.style.cssText = Cy, e.body.append(u);
17815
17831
  let d = u.getContext("2d", { alpha: !1 });
17816
17832
  if (!d) throw u.remove(), Error("Screen recording requires a 2D canvas.");
17817
17833
  let f = {
17818
- stream: r,
17819
- track: i,
17820
- source: a,
17834
+ stream: i,
17835
+ track: a,
17836
+ source: o,
17821
17837
  canvas: u,
17822
17838
  context: d,
17823
- cropTarget: s ? o : null,
17839
+ cropTarget: s ? r : null,
17824
17840
  regionLocked: s
17825
17841
  };
17826
- return Vy(f, n, Ty(t)), f;
17842
+ return Hy(f, n, Ty(t)), f;
17827
17843
  } catch (e) {
17828
- throw a.pause(), a.srcObject = null, a.remove(), r.getTracks().forEach((e) => e.stop()), e;
17844
+ throw o.pause(), o.srcObject = null, o.remove(), i.getTracks().forEach((e) => e.stop()), e;
17829
17845
  }
17830
- }, Vy = (e, t, n) => {
17846
+ }, Hy = (e, t, n) => {
17831
17847
  let { source: r, canvas: i, context: a, regionLocked: o } = e;
17832
17848
  if (r.videoWidth <= 0 || r.videoHeight <= 0) return;
17833
17849
  if (o) {
@@ -17836,19 +17852,19 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
17836
17852
  }
17837
17853
  let s = Ey(t, r.videoWidth, r.videoHeight, n), c = s.dx <= .001 && s.dy <= .001 && s.dw >= .999 && s.dh >= .999, l = c ? 0 : s.dx * i.width, u = c ? 0 : s.dy * i.height, d = c ? i.width : s.dw * i.width, f = c ? i.height : s.dh * i.height;
17838
17854
  c || (a.fillStyle = "#000", a.fillRect(0, 0, i.width, i.height)), !(d < 1 || f < 1 || s.dw <= 0 || s.dh <= 0) && a.drawImage(r, s.sx, s.sy, s.sw, s.sh, l, u, d, f);
17839
- }, Hy = (e) => {
17855
+ }, Uy = (e) => {
17840
17856
  e.source.pause(), e.source.srcObject = null, e.stream.getTracks().forEach((e) => e.stop()), e.cropTarget?.remove(), e.canvas.remove(), e.source.remove();
17841
- }, Uy = {
17857
+ }, Wy = {
17842
17858
  webm: "video/webm",
17843
17859
  mp4: "video/mp4"
17844
- }, Wy = ["vp9", "vp8"], Gy = ["avc"], Ky = (e) => new c(e), qy = (e, t) => Number.isFinite(e) && e > 0 ? e : t, Jy = (e, t, n) => {
17845
- let r = Math.max(2, Math.round(qy(e, 2))), i = Math.max(2, Math.round(qy(t, 2)));
17860
+ }, Gy = ["vp9", "vp8"], Ky = ["avc"], qy = (e) => new c(e), Jy = (e, t) => Number.isFinite(e) && e > 0 ? e : t, Yy = (e, t, n) => {
17861
+ let r = Math.max(2, Math.round(Jy(e, 2))), i = Math.max(2, Math.round(Jy(t, 2)));
17846
17862
  return n === "mp4" && (r % 2 != 0 && (r += 1), i % 2 != 0 && (i += 1)), {
17847
17863
  width: r,
17848
17864
  height: i
17849
17865
  };
17850
- }, Yy = (e, t = {}) => {
17851
- let n = Math.max(.001, qy(e.duration, .001)), r = Math.min(n, Math.max(0, Number.isFinite(t.startTime) ? t.startTime ?? 0 : 0)), i = Number.isFinite(t.endTime) ? t.endTime ?? n : n, a = Math.min(n, Math.max(r + .001, i));
17866
+ }, Xy = (e, t = {}) => {
17867
+ let n = Math.max(.001, Jy(e.duration, .001)), r = Math.min(n, Math.max(0, Number.isFinite(t.startTime) ? t.startTime ?? 0 : 0)), i = Number.isFinite(t.endTime) ? t.endTime ?? n : n, a = Math.min(n, Math.max(r + .001, i));
17852
17868
  return {
17853
17869
  format: t.format ?? "webm",
17854
17870
  startTime: r,
@@ -17856,33 +17872,33 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
17856
17872
  scale: t.scale ?? 1,
17857
17873
  quality: t.quality ?? "medium"
17858
17874
  };
17859
- }, Xy = (e) => e === "webm" ? Wy : Gy, Zy = async (e, t, n, r, i = "medium") => {
17860
- let a = Jy(t, n, e), o = Ky(i);
17861
- for (let t of Xy(e)) if (await u(t, {
17875
+ }, Zy = (e) => e === "webm" ? Gy : Ky, Qy = async (e, t, n, r, i = "medium") => {
17876
+ let a = Yy(t, n, e), o = qy(i);
17877
+ for (let t of Zy(e)) if (await u(t, {
17862
17878
  width: a.width,
17863
17879
  height: a.height,
17864
17880
  frameRate: r,
17865
17881
  quality: o
17866
17882
  })) return t;
17867
17883
  return null;
17868
- }, Qy = async (e, t, n = 30) => {
17884
+ }, $y = async (e, t, n = 30) => {
17869
17885
  let r = [];
17870
- return await Zy("webm", e, t, n) && r.push("webm"), await Zy("mp4", e, t, n) && r.push("mp4"), r;
17871
- }, $y = (e) => e === "webm" ? new l() : new o(), eb = async (e, t = {}) => {
17872
- let i = t.format ?? "webm", a = Math.max(1, Math.min(120, Math.round(t.frameRate ?? 30))), o = t.quality ?? "medium", c = e.width, l = e.height, u = await Zy(i, c, l, a, o);
17886
+ return await Qy("webm", e, t, n) && r.push("webm"), await Qy("mp4", e, t, n) && r.push("mp4"), r;
17887
+ }, eb = (e) => e === "webm" ? new l() : new o(), tb = async (e, t = {}) => {
17888
+ let i = t.format ?? "webm", a = Math.max(1, Math.min(120, Math.round(t.frameRate ?? 30))), o = t.quality ?? "medium", c = e.width, l = e.height, u = await Qy(i, c, l, a, o);
17873
17889
  if (!u) throw Error(`MediaBunny cannot encode ${i.toUpperCase()} at ${c}×${l} in this runtime.`);
17874
17890
  let d = new n(), f = new s({
17875
- format: $y(i),
17891
+ format: eb(i),
17876
17892
  target: d
17877
17893
  }), p = new r(e, {
17878
17894
  codec: u,
17879
- quality: Ky(o)
17895
+ quality: qy(o)
17880
17896
  });
17881
17897
  f.addVideoTrack(p, { frameRate: a }), await f.start();
17882
17898
  let m = !1, h = -1;
17883
17899
  return {
17884
17900
  format: i,
17885
- mimeType: Uy[i],
17901
+ mimeType: Wy[i],
17886
17902
  codec: u,
17887
17903
  async addFrame(e, t = 1 / a) {
17888
17904
  if (m) throw Error("Recording session is already closed.");
@@ -17894,7 +17910,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
17894
17910
  finalize: async () => {
17895
17911
  if (m) throw Error("Recording session is already closed.");
17896
17912
  if (m = !0, p.close(), await f.finalize(), !d.buffer || d.buffer.byteLength === 0) throw Error("MediaBunny produced an empty recording.");
17897
- return new Blob([d.buffer], { type: Uy[i] });
17913
+ return new Blob([d.buffer], { type: Wy[i] });
17898
17914
  },
17899
17915
  async cancel() {
17900
17916
  if (!m) {
@@ -17905,7 +17921,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
17905
17921
  }
17906
17922
  }
17907
17923
  };
17908
- }, tb = async (n) => {
17924
+ }, nb = async (n) => {
17909
17925
  let r = new a({
17910
17926
  source: new t(n),
17911
17927
  formats: e
@@ -17927,14 +17943,14 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
17927
17943
  } finally {
17928
17944
  r.dispose();
17929
17945
  }
17930
- }, nb = async (r, o = {}) => {
17931
- let c = await tb(r), l = Yy(c, o), u = Jy(c.width * l.scale, c.height * l.scale, l.format), d = await Zy(l.format, u.width, u.height, 30, l.quality);
17946
+ }, rb = async (r, o = {}) => {
17947
+ let c = await nb(r), l = Xy(c, o), u = Yy(c.width * l.scale, c.height * l.scale, l.format), d = await Qy(l.format, u.width, u.height, 30, l.quality);
17932
17948
  if (!d) throw Error(`MediaBunny cannot export ${l.format.toUpperCase()} in this runtime.`);
17933
17949
  let f = new a({
17934
17950
  source: new t(r),
17935
17951
  formats: e
17936
17952
  }), p = new n(), m = new s({
17937
- format: $y(l.format),
17953
+ format: eb(l.format),
17938
17954
  target: p
17939
17955
  });
17940
17956
  try {
@@ -17950,14 +17966,14 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
17950
17966
  width: u.width,
17951
17967
  height: u.height,
17952
17968
  fit: "fill",
17953
- quality: Ky(l.quality),
17969
+ quality: qy(l.quality),
17954
17970
  forceTranscode: !0
17955
17971
  },
17956
17972
  audio: { discard: !0 }
17957
17973
  });
17958
17974
  if (!e.isValid) throw Error(`MediaBunny cannot convert this recording to ${l.format.toUpperCase()}.`);
17959
17975
  if (await e.execute(), !p.buffer || p.buffer.byteLength === 0) throw Error("MediaBunny produced an empty export.");
17960
- let t = new Blob([p.buffer], { type: Uy[l.format] }), n = await tb(t);
17976
+ let t = new Blob([p.buffer], { type: Wy[l.format] }), n = await nb(t);
17961
17977
  return {
17962
17978
  blob: t,
17963
17979
  format: l.format,
@@ -17968,14 +17984,14 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
17968
17984
  } finally {
17969
17985
  f.dispose();
17970
17986
  }
17971
- }, rb = (e, t = /* @__PURE__ */ new Date()) => `mesurer-recording-${t.toISOString().replace(/[:.]/g, "-")}.${e}`, ib = 352, ab = 576, ob = 8, sb = 8, cb = .05, lb = (e, t) => {
17987
+ }, ib = (e, t = /* @__PURE__ */ new Date()) => `mesurer-recording-${t.toISOString().replace(/[:.]/g, "-")}.${e}`, ab = 352, ob = 576, sb = 8, cb = 8, lb = .05, ub = (e, t) => {
17972
17988
  for (let [n, r] of Object.entries(t)) e.style.setProperty(n, r);
17973
- }, ub = (e) => {
17989
+ }, db = (e) => {
17974
17990
  let t = Number.isFinite(e) ? Math.max(0, e) : 0, n = Math.floor(t / 60);
17975
17991
  return `${n}:${(t - n * 60).toFixed(2).padStart(5, "0")}`;
17976
- }, db = (e, t, n) => {
17992
+ }, fb = (e, t, n) => {
17977
17993
  let r = e.createElement("button");
17978
- return r.type = "button", r.setAttribute("aria-label", t), r.title = t, r.textContent = n, lb(r, {
17994
+ return r.type = "button", r.setAttribute("aria-label", t), r.title = t, r.textContent = n, ub(r, {
17979
17995
  display: "inline-flex",
17980
17996
  width: "20px",
17981
17997
  height: "20px",
@@ -17991,9 +18007,9 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
17991
18007
  "line-height": "1",
17992
18008
  cursor: "pointer"
17993
18009
  }), r;
17994
- }, fb = (e, t) => {
18010
+ }, pb = (e, t) => {
17995
18011
  let n = e.createElement("button");
17996
- n.type = "button", n.setAttribute("role", "menuitemradio"), lb(n, {
18012
+ n.type = "button", n.setAttribute("role", "menuitemradio"), ub(n, {
17997
18013
  display: "grid",
17998
18014
  width: "100%",
17999
18015
  height: "28px",
@@ -18018,15 +18034,15 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18018
18034
  check: r,
18019
18035
  text: i
18020
18036
  };
18021
- }, pb = (e, t, n, r) => {
18037
+ }, mb = (e, t, n, r) => {
18022
18038
  let i = globalThis.URL.createObjectURL(e), a = n.createElement("a");
18023
18039
  a.href = i, a.download = t, a.rel = "noopener", n.documentElement.append(a), a.click(), a.remove(), r.setTimeout(() => globalThis.URL.revokeObjectURL(i), 1e3);
18024
- }, mb = ({ ownerDocument: e, ownerWindow: t, root: n, formats: r, onDiscard: i, onExport: a }) => {
18040
+ }, hb = ({ ownerDocument: e, ownerWindow: t, root: n, formats: r, onDiscard: i, onExport: a }) => {
18025
18041
  let o = e.createElement("section");
18026
- o.dataset.mesurerRecordingPreview = "true", o.dataset.mesurerInspectorUi = "true", o.setAttribute("role", "dialog"), o.setAttribute("aria-label", "Screen recording editor"), o.tabIndex = 0, lb(o, {
18042
+ o.dataset.mesurerRecordingPreview = "true", o.dataset.mesurerInspectorUi = "true", o.setAttribute("role", "dialog"), o.setAttribute("aria-label", "Screen recording editor"), o.tabIndex = 0, ub(o, {
18027
18043
  position: "fixed",
18028
18044
  display: "none",
18029
- width: `${ib}px`,
18045
+ width: `${ab}px`,
18030
18046
  "max-width": "calc(100vw - 16px)",
18031
18047
  padding: "8px",
18032
18048
  "z-index": "98",
@@ -18044,7 +18060,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18044
18060
  transition: "width 200ms ease, left 200ms ease"
18045
18061
  }), n.append(o);
18046
18062
  let s = e.createElement("div");
18047
- lb(s, {
18063
+ ub(s, {
18048
18064
  position: "relative",
18049
18065
  display: "flex",
18050
18066
  width: "100%",
@@ -18059,7 +18075,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18059
18075
  cursor: "default"
18060
18076
  }), o.append(s);
18061
18077
  let c = e.createElement("video");
18062
- c.muted = !0, c.playsInline = !0, c.preload = "auto", lb(c, {
18078
+ c.muted = !0, c.playsInline = !0, c.preload = "auto", ub(c, {
18063
18079
  display: "block",
18064
18080
  width: "100%",
18065
18081
  height: "100%",
@@ -18069,7 +18085,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18069
18085
  transition: "max-height 200ms ease"
18070
18086
  }), s.append(c);
18071
18087
  let l = e.createElement("div");
18072
- l.dataset.mesurerRecordingExporting = "true", l.textContent = "Exporting…", lb(l, {
18088
+ l.dataset.mesurerRecordingExporting = "true", l.textContent = "Exporting…", ub(l, {
18073
18089
  position: "absolute",
18074
18090
  inset: "0",
18075
18091
  display: "none",
@@ -18081,8 +18097,8 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18081
18097
  "font-size": "11px",
18082
18098
  "pointer-events": "none"
18083
18099
  }), s.append(l);
18084
- let u = db(e, "Close", "×");
18085
- u.dataset.mesurerRecordingDiscard = "true", lb(u, {
18100
+ let u = fb(e, "Close", "×");
18101
+ u.dataset.mesurerRecordingDiscard = "true", ub(u, {
18086
18102
  position: "absolute",
18087
18103
  top: "6px",
18088
18104
  right: "6px",
@@ -18104,17 +18120,17 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18104
18120
  u.style.opacity = "0", u.style.pointerEvents = "none";
18105
18121
  });
18106
18122
  let d = e.createElement("div");
18107
- lb(d, {
18123
+ ub(d, {
18108
18124
  display: "flex",
18109
18125
  height: "20px",
18110
18126
  "align-items": "center",
18111
18127
  gap: "6px",
18112
18128
  "margin-top": "8px"
18113
18129
  }), o.append(d);
18114
- let f = db(e, "Play", "▶");
18130
+ let f = fb(e, "Play", "▶");
18115
18131
  f.dataset.mesurerRecordingPlay = "true", d.append(f);
18116
18132
  let p = e.createElement("span");
18117
- p.textContent = "0:00.00", lb(p, {
18133
+ p.textContent = "0:00.00", ub(p, {
18118
18134
  display: "flex",
18119
18135
  width: "32px",
18120
18136
  height: "20px",
@@ -18126,7 +18142,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18126
18142
  "font-variant-numeric": "tabular-nums"
18127
18143
  }), d.append(p);
18128
18144
  let m = e.createElement("div");
18129
- m.dataset.mesurerRecordingTimeline = "true", lb(m, {
18145
+ m.dataset.mesurerRecordingTimeline = "true", ub(m, {
18130
18146
  position: "relative",
18131
18147
  height: "20px",
18132
18148
  "min-width": "0",
@@ -18135,7 +18151,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18135
18151
  "user-select": "none"
18136
18152
  }), d.append(m);
18137
18153
  let h = e.createElement("div");
18138
- h.dataset.mesurerRecordingTimelineRail = "true", lb(h, {
18154
+ h.dataset.mesurerRecordingTimelineRail = "true", ub(h, {
18139
18155
  position: "absolute",
18140
18156
  left: "0",
18141
18157
  right: "0",
@@ -18147,7 +18163,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18147
18163
  "pointer-events": "none"
18148
18164
  }), m.append(h);
18149
18165
  let g = e.createElement("div");
18150
- g.dataset.mesurerRecordingTimelineClip = "true", lb(g, {
18166
+ g.dataset.mesurerRecordingTimelineClip = "true", ub(g, {
18151
18167
  position: "absolute",
18152
18168
  top: "50%",
18153
18169
  height: "3px",
@@ -18157,7 +18173,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18157
18173
  "pointer-events": "none"
18158
18174
  }), m.append(g);
18159
18175
  let _ = e.createElement("div");
18160
- lb(_, {
18176
+ ub(_, {
18161
18177
  position: "absolute",
18162
18178
  display: "none",
18163
18179
  top: "50%",
@@ -18170,7 +18186,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18170
18186
  "pointer-events": "none"
18171
18187
  }), m.append(_);
18172
18188
  let v = e.createElement("div");
18173
- v.dataset.mesurerRecordingPlayhead = "true", lb(v, {
18189
+ v.dataset.mesurerRecordingPlayhead = "true", ub(v, {
18174
18190
  position: "absolute",
18175
18191
  top: "50%",
18176
18192
  left: "0",
@@ -18185,7 +18201,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18185
18201
  }), m.append(v);
18186
18202
  let y = (t, n) => {
18187
18203
  let r = e.createElement("button");
18188
- return r.type = "button", r.dataset.mesurerRecordingTrimHandle = t, r.setAttribute("role", "slider"), r.setAttribute("aria-label", n), r.setAttribute("aria-valuemin", "0"), lb(r, {
18204
+ return r.type = "button", r.dataset.mesurerRecordingTrimHandle = t, r.setAttribute("role", "slider"), r.setAttribute("aria-label", n), r.setAttribute("aria-valuemin", "0"), ub(r, {
18189
18205
  position: "absolute",
18190
18206
  top: "50%",
18191
18207
  width: "8px",
@@ -18199,7 +18215,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18199
18215
  cursor: "ew-resize"
18200
18216
  }), m.append(r), r;
18201
18217
  }, b = y("start", "Trim start"), x = y("end", "Trim end"), S = e.createElement("span");
18202
- lb(S, {
18218
+ ub(S, {
18203
18219
  display: "flex",
18204
18220
  width: "32px",
18205
18221
  height: "20px",
@@ -18212,20 +18228,20 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18212
18228
  "font-variant-numeric": "tabular-nums"
18213
18229
  }), d.append(S);
18214
18230
  let C = e.createElement("div");
18215
- lb(C, {
18231
+ ub(C, {
18216
18232
  position: "relative",
18217
18233
  display: "flex",
18218
18234
  height: "20px",
18219
18235
  "align-items": "center"
18220
18236
  }), d.append(C);
18221
- let w = db(e, "Export options", "1×");
18222
- w.dataset.mesurerRecordingExportOptions = "true", w.setAttribute("aria-haspopup", "menu"), w.setAttribute("aria-expanded", "false"), lb(w, {
18237
+ let w = fb(e, "Export options", "1×");
18238
+ w.dataset.mesurerRecordingExportOptions = "true", w.setAttribute("aria-haspopup", "menu"), w.setAttribute("aria-expanded", "false"), ub(w, {
18223
18239
  width: "28px",
18224
18240
  "font-family": "ui-monospace, SFMono-Regular, Menlo, monospace",
18225
18241
  "font-size": "10px"
18226
18242
  }), C.append(w);
18227
18243
  let T = e.createElement("div");
18228
- T.dataset.mesurerRecordingExportMenu = "true", T.setAttribute("role", "menu"), lb(T, {
18244
+ T.dataset.mesurerRecordingExportMenu = "true", T.setAttribute("role", "menu"), ub(T, {
18229
18245
  position: "absolute",
18230
18246
  display: "none",
18231
18247
  right: "0",
@@ -18241,7 +18257,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18241
18257
  "pointer-events": "auto"
18242
18258
  }), C.append(T);
18243
18259
  let E = e.createElement("p");
18244
- E.textContent = "Format", lb(E, {
18260
+ E.textContent = "Format", ub(E, {
18245
18261
  margin: "0",
18246
18262
  padding: "4px 8px",
18247
18263
  color: "var(--msr-color-ink-500, #64748b)",
@@ -18251,7 +18267,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18251
18267
  let D = e.createElement("div");
18252
18268
  T.append(D);
18253
18269
  let O = e.createElement("p");
18254
- O.textContent = "Size", lb(O, {
18270
+ O.textContent = "Size", ub(O, {
18255
18271
  margin: "0",
18256
18272
  padding: "6px 8px 4px",
18257
18273
  color: "var(--msr-color-ink-500, #64748b)",
@@ -18265,17 +18281,17 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18265
18281
  2,
18266
18282
  3
18267
18283
  ].map((t) => {
18268
- let n = fb(e, `${t}×`);
18284
+ let n = pb(e, `${t}×`);
18269
18285
  return n.button.dataset.mesurerRecordingScale = String(t), k.append(n.button), {
18270
18286
  scale: t,
18271
18287
  ...n
18272
18288
  };
18273
- }), j = db(e, "Download", "↓");
18289
+ }), j = fb(e, "Download", "↓");
18274
18290
  j.dataset.mesurerRecordingExport = "true", d.append(j);
18275
- let M = db(e, "Grow preview", "↗");
18291
+ let M = fb(e, "Grow preview", "↗");
18276
18292
  M.dataset.mesurerRecordingExpand = "true", d.append(M);
18277
18293
  let N = e.createElement("p");
18278
- N.dataset.mesurerRecordingPreviewStatus = "true", N.setAttribute("role", "status"), lb(N, {
18294
+ N.dataset.mesurerRecordingPreviewStatus = "true", N.setAttribute("role", "status"), ub(N, {
18279
18295
  display: "none",
18280
18296
  margin: "8px 0 0",
18281
18297
  color: "var(--msr-color-ink-500, #64748b)",
@@ -18288,20 +18304,20 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18288
18304
  }, W = () => ({
18289
18305
  start: H,
18290
18306
  end: U
18291
- }), re = (e) => {
18307
+ }), G = (e) => {
18292
18308
  let t = P?.duration ?? 0, n = m.getBoundingClientRect();
18293
18309
  return t <= 0 || n.width <= 0 ? 0 : Math.min(t, Math.max(0, (e - n.left) / n.width * t));
18294
- }, ie = () => {
18310
+ }, re = () => {
18295
18311
  let e = P?.duration ?? 0, t = Math.min(e, Math.max(0, c.currentTime || 0)), n = ne(H) * 100, r = ne(U) * 100;
18296
- b.style.left = `${n}%`, x.style.left = `${r}%`, g.style.left = `${n}%`, g.style.width = `${Math.max(0, r - n)}%`, v.style.left = `${ne(t) * 100}%`, b.setAttribute("aria-valuemax", String(Math.max(0, U - cb))), b.setAttribute("aria-valuenow", String(H)), b.setAttribute("aria-valuetext", ub(H)), x.setAttribute("aria-valuemin", String(Math.min(e, H + cb))), x.setAttribute("aria-valuemax", String(e)), x.setAttribute("aria-valuenow", String(U)), x.setAttribute("aria-valuetext", ub(U)), p.textContent = ub(t), S.textContent = ub(e);
18297
- }, G = (e, t = !0) => {
18312
+ b.style.left = `${n}%`, x.style.left = `${r}%`, g.style.left = `${n}%`, g.style.width = `${Math.max(0, r - n)}%`, v.style.left = `${ne(t) * 100}%`, b.setAttribute("aria-valuemax", String(Math.max(0, U - lb))), b.setAttribute("aria-valuenow", String(H)), b.setAttribute("aria-valuetext", db(H)), x.setAttribute("aria-valuemin", String(Math.min(e, H + lb))), x.setAttribute("aria-valuemax", String(e)), x.setAttribute("aria-valuenow", String(U)), x.setAttribute("aria-valuetext", db(U)), p.textContent = db(t), S.textContent = db(e);
18313
+ }, ie = (e, t = !0) => {
18298
18314
  if (!P) return;
18299
18315
  let n = Math.min(U, Math.max(H, e));
18300
- t && !c.paused && c.pause(), c.currentTime = n, ie();
18316
+ t && !c.paused && c.pause(), c.currentTime = n, re();
18301
18317
  }, ae = (e, t = !1) => {
18302
- P && (H = Math.min(Math.max(0, e), Math.max(0, U - cb)), (t || c.currentTime < H) && G(H), ie());
18318
+ P && (H = Math.min(Math.max(0, e), Math.max(0, U - lb)), (t || c.currentTime < H) && ie(H), re());
18303
18319
  }, oe = (e, t = !1) => {
18304
- P && (U = Math.max(Math.min(P.duration, e), Math.min(P.duration, H + cb)), t ? G(U) : c.currentTime > U && G(H), ie());
18320
+ P && (U = Math.max(Math.min(P.duration, e), Math.min(P.duration, H + lb)), t ? ie(U) : c.currentTime > U && ie(H), re());
18305
18321
  }, se = () => {
18306
18322
  w.textContent = `${V}×`;
18307
18323
  for (let e of A) {
@@ -18311,14 +18327,14 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18311
18327
  }, ce = () => {
18312
18328
  D.replaceChildren();
18313
18329
  for (let t of z) {
18314
- let n = fb(e, t === "mp4" ? "MP4" : "WebM"), r = t === B;
18330
+ let n = pb(e, t === "mp4" ? "MP4" : "WebM"), r = t === B;
18315
18331
  n.button.dataset.mesurerRecordingFormat = t, n.button.setAttribute("aria-checked", r ? "true" : "false"), n.check.style.opacity = r ? "1" : "0", n.button.addEventListener("click", () => {
18316
18332
  B = t, ce();
18317
18333
  }), D.append(n.button);
18318
18334
  }
18319
18335
  }, K = () => {
18320
18336
  if (T.style.display === "none") return;
18321
- let e = C.getBoundingClientRect(), n = Math.max(1, T.offsetHeight), r = e.top - ob, i = t.innerHeight - e.bottom - ob;
18337
+ let e = C.getBoundingClientRect(), n = Math.max(1, T.offsetHeight), r = e.top - sb, i = t.innerHeight - e.bottom - sb;
18322
18338
  r >= n || r >= i ? (T.style.top = "auto", T.style.bottom = "24px") : (T.style.top = "24px", T.style.bottom = "auto");
18323
18339
  }, le = (e) => {
18324
18340
  T.style.display = e ? "block" : "none", w.setAttribute("aria-expanded", e ? "true" : "false"), e && K();
@@ -18336,8 +18352,8 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18336
18352
  ]) t.toggleAttribute("disabled", e);
18337
18353
  }, de = () => {
18338
18354
  if (o.style.display === "none") return;
18339
- let r = Math.min(I ? ab : ib, Math.max(1, t.innerWidth - 16)), i = Math.max(180, o.offsetHeight), a = (n.closest("[data-mesurer-root='true']")?.querySelector("[data-mesurer-tool-id='recording']") ?? e.querySelector("[data-mesurer-tool-id='recording']"))?.getBoundingClientRect(), s = a ? a.left + a.width / 2 : t.innerWidth - ob - r / 2, c = ob + r / 2, l = Math.max(c, t.innerWidth - ob - r / 2), u = Math.min(Math.max(c, s), l), d = a ? a.bottom + sb : ob;
18340
- d + i > t.innerHeight - ob && (d = a ? a.top - i - sb : t.innerHeight - i - ob), o.style.left = `${u}px`, o.style.top = `${Math.max(ob, d)}px`, T.style.display !== "none" && K();
18355
+ let r = Math.min(I ? ob : ab, Math.max(1, t.innerWidth - 16)), i = Math.max(180, o.offsetHeight), a = (n.closest("[data-mesurer-root='true']")?.querySelector("[data-mesurer-tool-id='recording']") ?? e.querySelector("[data-mesurer-tool-id='recording']"))?.getBoundingClientRect(), s = a ? a.left + a.width / 2 : t.innerWidth - sb - r / 2, c = sb + r / 2, l = Math.max(c, t.innerWidth - sb - r / 2), u = Math.min(Math.max(c, s), l), d = a ? a.bottom + cb : sb;
18356
+ d + i > t.innerHeight - sb && (d = a ? a.top - i - cb : t.innerHeight - i - sb), o.style.left = `${u}px`, o.style.top = `${Math.max(sb, d)}px`, T.style.display !== "none" && K();
18341
18357
  }, fe = () => {
18342
18358
  c.pause(), c.removeAttribute("src"), c.load(), F &&= (globalThis.URL.revokeObjectURL(F), null);
18343
18359
  }, pe = () => {
@@ -18354,8 +18370,8 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18354
18370
  ee = null, te = null, v.style.height = "8px";
18355
18371
  }, ge = (e) => {
18356
18372
  if (!ee) return;
18357
- let t = re(e);
18358
- ee === "start" ? ae(t, !0) : ee === "end" ? oe(t, !0) : G(t);
18373
+ let t = G(e);
18374
+ ee === "start" ? ae(t, !0) : ee === "end" ? oe(t, !0) : ie(t);
18359
18375
  }, _e = (e, t) => {
18360
18376
  !P || L || t.button !== 0 || (t.preventDefault(), t.stopPropagation(), ee = e, te = t.pointerId, v.style.height = "10px", ge(t.clientX));
18361
18377
  }, ve = (e) => {
@@ -18367,7 +18383,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18367
18383
  let t = e.target;
18368
18384
  t instanceof Element && t.closest("[data-mesurer-recording-trim-handle]") || _e("playhead", e);
18369
18385
  }), m.addEventListener("pointermove", (e) => {
18370
- te === null && (_.style.display = "block", _.style.left = `${ne(re(e.clientX)) * 100}%`);
18386
+ te === null && (_.style.display = "block", _.style.left = `${ne(G(e.clientX)) * 100}%`);
18371
18387
  }), m.addEventListener("pointerleave", () => {
18372
18388
  _.style.display = "none";
18373
18389
  });
@@ -18387,9 +18403,9 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18387
18403
  }), c.addEventListener("pause", () => {
18388
18404
  f.textContent = "▶", f.setAttribute("aria-label", "Play"), f.title = "Play";
18389
18405
  }), c.addEventListener("timeupdate", () => {
18390
- P && (c.currentTime >= U - .01 ? (c.pause(), c.currentTime = H) : c.currentTime < H && (c.currentTime = H), ie());
18406
+ P && (c.currentTime >= U - .01 ? (c.pause(), c.currentTime = H) : c.currentTime < H && (c.currentTime = H), re());
18391
18407
  }), c.addEventListener("loadedmetadata", () => {
18392
- ie();
18408
+ re();
18393
18409
  }), w.addEventListener("click", () => {
18394
18410
  L || le(T.style.display === "none");
18395
18411
  });
@@ -18400,7 +18416,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18400
18416
  T.style.display !== "none" && (e.composedPath().includes(C) || le(!1));
18401
18417
  };
18402
18418
  e.addEventListener("pointerdown", be, !0), M.addEventListener("click", () => {
18403
- I = !I, o.style.width = `${I ? ab : ib}px`, s.style.maxHeight = I ? "448px" : "144px", c.style.maxHeight = I ? "448px" : "144px", M.textContent = I ? "↙" : "↗", M.setAttribute("aria-label", I ? "Shrink preview" : "Grow preview"), M.title = I ? "Shrink preview" : "Grow preview", t.requestAnimationFrame(de);
18419
+ I = !I, o.style.width = `${I ? ob : ab}px`, s.style.maxHeight = I ? "448px" : "144px", c.style.maxHeight = I ? "448px" : "144px", M.textContent = I ? "↙" : "↗", M.setAttribute("aria-label", I ? "Shrink preview" : "Grow preview"), M.title = I ? "Shrink preview" : "Grow preview", t.requestAnimationFrame(de);
18404
18420
  }), j.addEventListener("click", () => {
18405
18421
  if (!P || L || z.length === 0) return;
18406
18422
  let n = ++R, { start: r, end: i } = W();
@@ -18410,7 +18426,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18410
18426
  endTime: i,
18411
18427
  scale: V
18412
18428
  }).then((r) => {
18413
- n === R && pb(r.blob, r.filename, e, t);
18429
+ n === R && mb(r.blob, r.filename, e, t);
18414
18430
  }).catch((e) => {
18415
18431
  n === R && (N.style.display = "block", N.style.color = "var(--msr-danger-text, #dc2626)", N.textContent = e instanceof Error ? e.message : "Could not export the recording.");
18416
18432
  }).finally(() => {
@@ -18432,7 +18448,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18432
18448
  show(e) {
18433
18449
  R += 1, fe(), P = e, I = !1, V = 1, B = "webm", z = ["webm"], H = 0, U = e.duration, ee = null, te = null;
18434
18450
  let n = globalThis.URL.createObjectURL(e.blob);
18435
- F = n, c.src = n, c.currentTime = 0, s.style.aspectRatio = e.width > 0 && e.height > 0 ? `${e.width} / ${e.height}` : "16 / 9", o.style.width = `${ib}px`, s.style.maxHeight = "144px", c.style.maxHeight = "144px", M.textContent = "↗", M.setAttribute("aria-label", "Grow preview"), M.title = "Grow preview", p.textContent = "0:00.00", S.textContent = ub(e.duration), N.style.display = "none", N.style.color = "var(--msr-color-ink-500, #64748b)", le(!1), ce(), se(), ie(), ue(!1), o.style.display = "block", de(), o.focus({ preventScroll: !0 });
18451
+ F = n, c.src = n, c.currentTime = 0, s.style.aspectRatio = e.width > 0 && e.height > 0 ? `${e.width} / ${e.height}` : "16 / 9", o.style.width = `${ab}px`, s.style.maxHeight = "144px", c.style.maxHeight = "144px", M.textContent = "↗", M.setAttribute("aria-label", "Grow preview"), M.title = "Grow preview", p.textContent = "0:00.00", S.textContent = db(e.duration), N.style.display = "none", N.style.color = "var(--msr-color-ink-500, #64748b)", le(!1), ce(), se(), re(), ue(!1), o.style.display = "block", de(), o.focus({ preventScroll: !0 });
18436
18452
  let i = R;
18437
18453
  r(e).then((e) => {
18438
18454
  i !== R || !P || (z = e, B = e.includes(B) ? B : e[0] ?? "webm", ce(), j.disabled = e.length === 0, e.length === 0 && (N.style.display = "block", N.style.color = "var(--msr-danger-text, #dc2626)", N.textContent = "No MediaBunny video encoder is available in this runtime."));
@@ -18445,19 +18461,19 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18445
18461
  pe(), t.removeEventListener("resize", xe), t.removeEventListener("pointermove", ve, !0), t.removeEventListener("pointerup", ye, !0), t.removeEventListener("pointercancel", ye, !0), e.removeEventListener("pointerdown", be, !0), o.remove();
18446
18462
  }
18447
18463
  };
18448
- }, hb = "mesurer.recording", gb = "recording:v1", _b = "mesurer.recording.settings", vb = "runtime:solid", yb = "recording.toggle", bb = "recording.stop", xb = "recording.discard", Sb = "recording.export", Cb = 30, wb = 60, Tb = 3e3, Eb = {
18464
+ }, gb = "mesurer.recording", _b = "recording:v1", vb = "mesurer.recording.settings", yb = "runtime:solid", bb = "recording.toggle", xb = "recording.stop", Sb = "recording.discard", Cb = "recording.export", wb = 60, Tb = 60, Eb = 3e3, Db = {
18449
18465
  viewBox: "0 0 24 24",
18450
18466
  paths: ["M7 5.75A3.25 3.25 0 0 0 3.75 9v6A3.25 3.25 0 0 0 7 18.25h7A3.25 3.25 0 0 0 17.25 15v-1.03l2.13 1.42a.75.75 0 0 0 1.17-.624V9.234a.75.75 0 0 0-1.17-.624l-2.13 1.42V9A3.25 3.25 0 0 0 14 5.75H7Zm10.25 6.082 1.8-1.2v2.736l-1.8-1.2v-.336Z", "M10.5 9.25a2.75 2.75 0 1 0 0 5.5 2.75 2.75 0 0 0 0-5.5Z"]
18451
- }, Db = (e) => e ? { ...e } : null, Ob = (e) => ({
18467
+ }, Ob = (e) => e ? { ...e } : null, kb = (e) => ({
18452
18468
  ...e,
18453
- rect: Db(e.rect)
18454
- }), kb = (e, t) => {
18469
+ rect: Ob(e.rect)
18470
+ }), Ab = (e, t) => {
18455
18471
  for (let [n, r] of Object.entries(t)) e.style.setProperty(n, r);
18456
- }, Ab = (e) => e != null && !Array.isArray(e) && typeof e == "object", jb = (e) => typeof e == "number" && Number.isFinite(e), Mb = (e) => {
18457
- if (!Ab(e)) return {};
18472
+ }, jb = (e) => e != null && !Array.isArray(e) && typeof e == "object", Mb = (e) => typeof e == "number" && Number.isFinite(e), Nb = (e) => {
18473
+ if (!jb(e)) return {};
18458
18474
  let t = {};
18459
- return (e.format === "webm" || e.format === "mp4") && (t.format = e.format), jb(e.startTime) && (t.startTime = e.startTime), jb(e.endTime) && (t.endTime = e.endTime), (e.scale === 1 || e.scale === 2 || e.scale === 3) && (t.scale = e.scale), t;
18460
- }, Nb = (e) => ({
18475
+ return (e.format === "webm" || e.format === "mp4") && (t.format = e.format), Mb(e.startTime) && (t.startTime = e.startTime), Mb(e.endTime) && (t.endTime = e.endTime), (e.scale === 1 || e.scale === 2 || e.scale === 3) && (t.scale = e.scale), t;
18476
+ }, Pb = (e) => ({
18461
18477
  status: e.status,
18462
18478
  elapsed: e.elapsed,
18463
18479
  rect: e.rect ? { ...e.rect } : null,
@@ -18465,62 +18481,71 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18465
18481
  width: e.width,
18466
18482
  height: e.height,
18467
18483
  error: e.error
18468
- }), Pb = (e) => ({
18484
+ }), Fb = (e) => ({
18469
18485
  filename: e.filename,
18470
18486
  format: e.format,
18471
18487
  duration: e.duration,
18472
18488
  width: e.width,
18473
18489
  height: e.height,
18474
18490
  bytes: e.blob.size
18475
- }), Fb = (e) => ({
18491
+ }), Ib = (e) => ({
18476
18492
  format: e.format,
18477
18493
  duration: e.duration,
18478
18494
  width: e.width,
18479
18495
  height: e.height,
18480
18496
  bytes: e.blob.size,
18481
18497
  createdAt: e.createdAt
18482
- }), Ib = (e, t, n) => {
18498
+ }), Lb = (e, t, n) => {
18483
18499
  let r = globalThis.URL.createObjectURL(e.blob), i = t.createElement("a");
18484
18500
  i.href = r, i.download = e.filename, i.rel = "noopener", t.documentElement.append(i), i.click(), i.remove(), n.setTimeout(() => globalThis.URL.revokeObjectURL(r), 1e3);
18485
- }, Lb = (e = {}) => Ta({
18486
- id: hb,
18501
+ }, Rb = (e = {}) => Ta({
18502
+ id: gb,
18487
18503
  version: "0.1.0",
18488
- requires: [vb],
18489
- provides: ["tool:recording", gb],
18504
+ requires: [yb],
18505
+ provides: ["tool:recording", _b],
18490
18506
  setup(t) {
18491
- let n = t.service.get(vb);
18507
+ let n = t.service.get(yb);
18492
18508
  if (!n) throw Error("Recording plugin requires the Solid renderer runtime.");
18493
18509
  let { ownerDocument: r, ownerWindow: i } = n, a = n.createInspectorMount(), o = a.element, s = n.createInspectorMount(), c = s.element, l = n.rendererRoot ?? n.portalTarget.querySelector("[data-mesurer-root='true']"), u = (e) => {
18494
18510
  l?.toggleAttribute("data-mesurer-recording-active", e);
18495
18511
  let t = l?.querySelector("[data-mesurer-interaction-overlay='true']");
18496
18512
  t && (e ? (t.style.setProperty("pointer-events", "none", "important"), t.style.setProperty("cursor", "default", "important")) : (t.style.removeProperty("pointer-events"), t.style.removeProperty("cursor")));
18497
18513
  };
18498
- o.dataset.mesurerRecording = "true", c.dataset.mesurerRecordingStatusRoot = "true", kb(o, {
18514
+ o.dataset.mesurerRecording = "true", c.dataset.mesurerRecordingStatusRoot = "true", Ab(o, {
18499
18515
  position: "fixed",
18500
18516
  inset: "0",
18501
18517
  "z-index": "86",
18502
18518
  "pointer-events": "none",
18503
18519
  "font-family": "ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif"
18504
- }), kb(c, {
18520
+ }), Ab(c, {
18505
18521
  position: "fixed",
18506
18522
  inset: "0",
18507
18523
  "z-index": "96",
18508
18524
  "pointer-events": "none",
18509
18525
  "font-family": "ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif"
18510
18526
  });
18511
- let d = Math.max(1, Math.min(60, Math.round(e.frameRate ?? Cb))), f = Math.max(1, Math.min(600, e.maxDurationSeconds ?? wb)), p = e.quality ?? "medium";
18527
+ let d = Math.max(1, Math.min(600, e.maxDurationSeconds ?? Tb)), f = e.quality ?? "medium";
18512
18528
  t.state.register({
18513
- id: _b,
18514
- initial: { toolEnabled: e.toolEnabled ?? !0 },
18529
+ id: vb,
18530
+ initial: {
18531
+ toolEnabled: e.toolEnabled ?? !0,
18532
+ frameRate: e.frameRate ?? wb
18533
+ },
18515
18534
  persist: !0
18516
18535
  });
18517
- let m = () => ({ toolEnabled: t.state.get("mesurer.recording.settings")?.toolEnabled ?? !0 }), h = (e) => {
18518
- t.state.update(_b, (t) => {
18536
+ let p = () => {
18537
+ let e = t.state.get(vb);
18538
+ return {
18539
+ toolEnabled: e?.toolEnabled ?? !0,
18540
+ frameRate: e?.frameRate === 120 ? 120 : 60
18541
+ };
18542
+ }, m = (e) => {
18543
+ t.state.update(vb, (t) => {
18519
18544
  let n = { ...t };
18520
- return e.toolEnabled !== void 0 && (n.toolEnabled = e.toolEnabled), n;
18545
+ return e.toolEnabled !== void 0 && (n.toolEnabled = e.toolEnabled), (e.frameRate === 60 || e.frameRate === 120) && (n.frameRate = e.frameRate), n;
18521
18546
  });
18522
- }, g = r.createElement("div");
18523
- g.dataset.mesurerRecordingSelect = "true", g.dataset.mesurerInspectorUi = "true", g.setAttribute("role", "application"), g.setAttribute("aria-label", "Recording selection"), kb(g, {
18547
+ }, h = r.createElement("div");
18548
+ h.dataset.mesurerRecordingSelect = "true", h.dataset.mesurerInspectorUi = "true", h.setAttribute("role", "application"), h.setAttribute("aria-label", "Recording selection"), Ab(h, {
18524
18549
  position: "fixed",
18525
18550
  inset: "0",
18526
18551
  display: "none",
@@ -18529,24 +18554,24 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18529
18554
  "pointer-events": "auto",
18530
18555
  "user-select": "none",
18531
18556
  "touch-action": "none"
18532
- }), o.append(g);
18533
- let _ = Array.from({ length: 4 }, () => {
18557
+ }), o.append(h);
18558
+ let g = Array.from({ length: 4 }, () => {
18534
18559
  let e = r.createElement("div");
18535
- return e.dataset.mesurerRecordingShade = "true", kb(e, {
18560
+ return e.dataset.mesurerRecordingShade = "true", Ab(e, {
18536
18561
  position: "fixed",
18537
18562
  background: "rgb(0 0 0 / 40%)",
18538
18563
  "pointer-events": "none"
18539
- }), g.append(e), e;
18540
- }), v = r.createElement("div");
18541
- v.dataset.mesurerRecordingSelection = "true", kb(v, {
18564
+ }), h.append(e), e;
18565
+ }), _ = r.createElement("div");
18566
+ _.dataset.mesurerRecordingSelection = "true", Ab(_, {
18542
18567
  position: "fixed",
18543
18568
  display: "none",
18544
18569
  border: "1px solid var(--msr-accent, #0d99ff)",
18545
18570
  "box-sizing": "border-box",
18546
18571
  "pointer-events": "none"
18547
- }), g.append(v);
18548
- let y = r.createElement("div");
18549
- kb(y, {
18572
+ }), h.append(_);
18573
+ let v = r.createElement("div");
18574
+ Ab(v, {
18550
18575
  position: "fixed",
18551
18576
  display: "none",
18552
18577
  transform: "translateX(-50%)",
@@ -18557,9 +18582,9 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18557
18582
  "font-size": "10px",
18558
18583
  "font-variant-numeric": "tabular-nums",
18559
18584
  "pointer-events": "none"
18560
- }), g.append(y);
18561
- let b = r.createElement("div");
18562
- b.textContent = "Drag a region to record · Esc to cancel", kb(b, {
18585
+ }), h.append(v);
18586
+ let y = r.createElement("div");
18587
+ y.textContent = "Drag a region to record · Esc to cancel", Ab(y, {
18563
18588
  position: "fixed",
18564
18589
  left: "50%",
18565
18590
  bottom: "16px",
@@ -18570,9 +18595,9 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18570
18595
  color: "var(--msr-surface, #fff)",
18571
18596
  "font-size": "11px",
18572
18597
  "pointer-events": "none"
18573
- }), g.append(b);
18574
- let x = r.createElement("div");
18575
- x.dataset.mesurerRecordingRegion = "true", x.dataset.mesurerInspectorUi = "true", x.setAttribute("role", "dialog"), x.setAttribute("aria-label", "Recording region"), kb(x, {
18598
+ }), h.append(y);
18599
+ let b = r.createElement("div");
18600
+ b.dataset.mesurerRecordingRegion = "true", b.dataset.mesurerInspectorUi = "true", b.setAttribute("role", "dialog"), b.setAttribute("aria-label", "Recording region"), Ab(b, {
18576
18601
  position: "fixed",
18577
18602
  display: "none",
18578
18603
  width: "220px",
@@ -18587,10 +18612,10 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18587
18612
  "font-size": "11px",
18588
18613
  "pointer-events": "auto",
18589
18614
  transform: "translateX(-50%)"
18590
- }), g.append(x);
18591
- let S = (e) => {
18615
+ }), h.append(b);
18616
+ let x = (e) => {
18592
18617
  let t = r.createElement("label");
18593
- kb(t, {
18618
+ Ab(t, {
18594
18619
  display: "grid",
18595
18620
  "grid-template-columns": "44px minmax(0,1fr)",
18596
18621
  "align-items": "center",
@@ -18599,15 +18624,15 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18599
18624
  let n = r.createElement("span");
18600
18625
  n.textContent = e, n.style.color = "var(--msr-color-ink-500, #64748b)", t.append(n);
18601
18626
  let i = r.createElement("div");
18602
- return kb(i, {
18627
+ return Ab(i, {
18603
18628
  display: "flex",
18604
18629
  "align-items": "center",
18605
18630
  gap: "4px",
18606
18631
  "min-width": "0"
18607
- }), t.append(i), x.append(t), i;
18608
- }, C = (e) => {
18632
+ }), t.append(i), b.append(t), i;
18633
+ }, S = (e) => {
18609
18634
  let t = r.createElement("input");
18610
- return t.type = "number", t.setAttribute("aria-label", e), t.step = "1", kb(t, {
18635
+ return t.type = "number", t.setAttribute("aria-label", e), t.step = "1", Ab(t, {
18611
18636
  width: "0",
18612
18637
  "min-width": "0",
18613
18638
  flex: "1 1 0",
@@ -18621,20 +18646,20 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18621
18646
  "font-size": "10px",
18622
18647
  "font-variant-numeric": "tabular-nums"
18623
18648
  }), t;
18624
- }, w = S("Size"), T = C("Width"), E = C("Height");
18625
- w.append(T);
18649
+ }, C = x("Size"), w = S("Width"), T = S("Height");
18650
+ C.append(w);
18651
+ let E = r.createElement("span");
18652
+ E.textContent = "×", E.style.color = "var(--msr-color-ink-500, #64748b)", C.append(E, T);
18626
18653
  let D = r.createElement("span");
18627
- D.textContent = "×", D.style.color = "var(--msr-color-ink-500, #64748b)", w.append(D, E);
18628
- let O = r.createElement("span");
18629
- O.textContent = "px", O.style.color = "var(--msr-color-ink-500, #64748b)", w.append(O);
18630
- let k = S("Position");
18631
- k.style.marginTop = "8px";
18632
- let A = C("Left"), j = C("Top");
18633
- k.append(A, j);
18634
- let M = r.createElement("span");
18635
- M.textContent = "px", M.style.color = "var(--msr-color-ink-500, #64748b)", k.append(M);
18636
- let N = r.createElement("button");
18637
- N.type = "button", N.dataset.mesurerRecordingStart = "true", N.textContent = "● Start recording", kb(N, {
18654
+ D.textContent = "px", D.style.color = "var(--msr-color-ink-500, #64748b)", C.append(D);
18655
+ let O = x("Position");
18656
+ O.style.marginTop = "8px";
18657
+ let k = S("Left"), A = S("Top");
18658
+ O.append(k, A);
18659
+ let j = r.createElement("span");
18660
+ j.textContent = "px", j.style.color = "var(--msr-color-ink-500, #64748b)", O.append(j);
18661
+ let M = r.createElement("button");
18662
+ M.type = "button", M.dataset.mesurerRecordingStart = "true", M.textContent = "● Start recording", Ab(M, {
18638
18663
  width: "100%",
18639
18664
  height: "28px",
18640
18665
  "margin-top": "8px",
@@ -18646,44 +18671,44 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18646
18671
  "font-size": "11px",
18647
18672
  "font-weight": "500",
18648
18673
  cursor: "pointer"
18649
- }), x.append(N);
18650
- let P = r.createElement("div");
18651
- P.dataset.mesurerRecordingGrid = "true", kb(P, {
18674
+ }), b.append(M);
18675
+ let N = r.createElement("div");
18676
+ N.dataset.mesurerRecordingGrid = "true", Ab(N, {
18652
18677
  position: "absolute",
18653
18678
  inset: "0",
18654
18679
  display: "none",
18655
18680
  "pointer-events": "none"
18656
- }), v.append(P);
18657
- let F = (e) => {
18681
+ }), _.append(N);
18682
+ let P = (e) => {
18658
18683
  let t = r.createElement("div");
18659
- kb(t, {
18684
+ Ab(t, {
18660
18685
  position: "absolute",
18661
18686
  opacity: "0.3",
18662
18687
  ...e
18663
- }), P.append(t);
18688
+ }), N.append(t);
18664
18689
  };
18665
- F({
18690
+ P({
18666
18691
  left: "33.333%",
18667
18692
  top: "0",
18668
18693
  bottom: "0",
18669
18694
  borderLeft: "1px dashed var(--msr-color-ink-500, #64748b)"
18670
- }), F({
18695
+ }), P({
18671
18696
  left: "66.666%",
18672
18697
  top: "0",
18673
18698
  bottom: "0",
18674
18699
  borderLeft: "1px dashed var(--msr-color-ink-500, #64748b)"
18675
- }), F({
18700
+ }), P({
18676
18701
  top: "33.333%",
18677
18702
  left: "0",
18678
18703
  right: "0",
18679
18704
  borderTop: "1px dashed var(--msr-color-ink-500, #64748b)"
18680
- }), F({
18705
+ }), P({
18681
18706
  top: "66.666%",
18682
18707
  left: "0",
18683
18708
  right: "0",
18684
18709
  borderTop: "1px dashed var(--msr-color-ink-500, #64748b)"
18685
18710
  });
18686
- let I = Object.entries({
18711
+ let F = Object.entries({
18687
18712
  nw: {
18688
18713
  left: "0",
18689
18714
  top: "0"
@@ -18718,7 +18743,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18718
18743
  }
18719
18744
  }).map(([e, t]) => {
18720
18745
  let n = r.createElement("button");
18721
- return n.type = "button", n.dataset.mesurerRecordingResize = e, n.setAttribute("aria-label", `Resize ${e}`), kb(n, {
18746
+ return n.type = "button", n.dataset.mesurerRecordingResize = e, n.setAttribute("aria-label", `Resize ${e}`), Ab(n, {
18722
18747
  position: "absolute",
18723
18748
  display: "none",
18724
18749
  left: t.left,
@@ -18733,9 +18758,9 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18733
18758
  transform: "translate(-50%, -50%)",
18734
18759
  cursor: e === "n" || e === "s" ? "ns-resize" : e === "e" || e === "w" ? "ew-resize" : e === "nw" || e === "se" ? "nwse-resize" : "nesw-resize",
18735
18760
  "pointer-events": "auto"
18736
- }), v.append(n), n;
18737
- }), L = r.createElement("section");
18738
- L.dataset.mesurerRecordingStatus = "true", L.dataset.mesurerInspectorUi = "true", L.setAttribute("aria-label", "Screen recording"), kb(L, {
18761
+ }), _.append(n), n;
18762
+ }), I = r.createElement("section");
18763
+ I.dataset.mesurerRecordingStatus = "true", I.dataset.mesurerInspectorUi = "true", I.setAttribute("aria-label", "Screen recording"), Ab(I, {
18739
18764
  position: "fixed",
18740
18765
  display: "none",
18741
18766
  height: "34px",
@@ -18751,23 +18776,23 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18751
18776
  "font-size": "11px",
18752
18777
  "pointer-events": "auto"
18753
18778
  });
18754
- let R = r.createElement("span");
18755
- R.setAttribute("aria-hidden", "true"), kb(R, {
18779
+ let L = r.createElement("span");
18780
+ L.setAttribute("aria-hidden", "true"), Ab(L, {
18756
18781
  width: "6px",
18757
18782
  height: "6px",
18758
18783
  "border-radius": "999px",
18759
18784
  background: "var(--msr-danger-solid-bg, #dc2626)",
18760
18785
  "flex-shrink": "0"
18761
- }), L.append(R);
18762
- let z = r.createElement("span");
18763
- z.dataset.mesurerRecordingTime = "true", z.textContent = "00:00", kb(z, {
18786
+ }), I.append(L);
18787
+ let R = r.createElement("span");
18788
+ R.dataset.mesurerRecordingTime = "true", R.textContent = "00:00", Ab(R, {
18764
18789
  color: "var(--msr-content, #18181b)",
18765
18790
  "font-family": "ui-monospace, SFMono-Regular, Menlo, monospace",
18766
18791
  "font-size": "11px",
18767
18792
  "font-variant-numeric": "tabular-nums"
18768
- }), L.append(z);
18769
- let B = r.createElement("button");
18770
- B.type = "button", B.dataset.mesurerRecordingStop = "true", B.textContent = "Stop", B.setAttribute("aria-label", "Stop recording"), kb(B, {
18793
+ }), I.append(R);
18794
+ let z = r.createElement("button");
18795
+ z.type = "button", z.dataset.mesurerRecordingStop = "true", z.textContent = "Stop", z.setAttribute("aria-label", "Stop recording"), Ab(z, {
18771
18796
  height: "24px",
18772
18797
  padding: "0 8px",
18773
18798
  border: "0",
@@ -18778,9 +18803,9 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18778
18803
  "font-size": "11px",
18779
18804
  "font-weight": "500",
18780
18805
  cursor: "pointer"
18781
- }), L.append(B), c.append(L);
18782
- let V = r.createElement("div");
18783
- V.dataset.mesurerRecordingError = "true", V.dataset.mesurerInspectorUi = "true", V.setAttribute("role", "status"), kb(V, {
18806
+ }), I.append(z), c.append(I);
18807
+ let B = r.createElement("div");
18808
+ B.dataset.mesurerRecordingError = "true", B.dataset.mesurerInspectorUi = "true", B.setAttribute("role", "status"), Ab(B, {
18784
18809
  position: "fixed",
18785
18810
  display: "none",
18786
18811
  left: "8px",
@@ -18792,8 +18817,8 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18792
18817
  color: "#fff",
18793
18818
  "font-size": "11px",
18794
18819
  "pointer-events": "none"
18795
- }), c.append(V);
18796
- let H = {
18820
+ }), c.append(B);
18821
+ let V = {
18797
18822
  status: "idle",
18798
18823
  elapsed: 0,
18799
18824
  rect: null,
@@ -18801,28 +18826,28 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18801
18826
  width: null,
18802
18827
  height: null,
18803
18828
  error: null
18804
- }, U = /* @__PURE__ */ new Set(), ee = null, te = null, ne = null, W = null, re = null, ie = null, G = !1, ae = null, oe = null, se = 0, ce = 0, K = 0, le = 0, ue = 0, de = -1, fe = !1, pe = null, me = () => {
18805
- let e = Ob(H);
18806
- for (let t of U) t(e);
18807
- }, he = (e) => {
18808
- H = {
18809
- ...H,
18829
+ }, H = /* @__PURE__ */ new Set(), U = null, ee = null, te = null, ne = null, W = null, G = null, re = !1, ie = null, ae = null, oe = 0, se = 0, ce = 0, K = 0, le = 0, ue = -1, de = !1, fe = null, pe = () => {
18830
+ let e = kb(V);
18831
+ for (let t of H) t(e);
18832
+ }, me = (e) => {
18833
+ V = {
18834
+ ...V,
18810
18835
  ...e,
18811
- rect: e.rect === void 0 ? H.rect : Db(e.rect)
18812
- }, me();
18813
- }, ge = () => H.status === "selecting" || H.status === "recording" || H.status === "exporting", _e = () => {
18814
- if (oe) return;
18836
+ rect: e.rect === void 0 ? V.rect : Ob(e.rect)
18837
+ }, pe();
18838
+ }, he = () => V.status === "selecting" || V.status === "recording" || V.status === "exporting", ge = () => {
18839
+ if (ae) return;
18815
18840
  let e = n.portalTarget.querySelector("[data-mesurer-toolbar='true']");
18816
- e && (oe = {
18841
+ e && (ae = {
18817
18842
  element: e,
18818
18843
  value: e.style.getPropertyValue("visibility"),
18819
18844
  priority: e.style.getPropertyPriority("visibility")
18820
18845
  }, e.style.setProperty("visibility", "hidden", "important"));
18821
- }, ve = () => {
18822
- if (!oe) return;
18823
- let e = oe;
18824
- oe = null, e.value || e.priority ? e.element.style.setProperty("visibility", e.value, e.priority) : e.element.style.removeProperty("visibility");
18825
- }, ye = (e, t) => {
18846
+ }, _e = () => {
18847
+ if (!ae) return;
18848
+ let e = ae;
18849
+ ae = null, e.value || e.priority ? e.element.style.setProperty("visibility", e.value, e.priority) : e.element.style.removeProperty("visibility");
18850
+ }, ve = (e, t) => {
18826
18851
  for (let n of [
18827
18852
  "left",
18828
18853
  "top",
@@ -18832,7 +18857,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18832
18857
  let r = t[n];
18833
18858
  r === void 0 ? e.style.removeProperty(n) : e.style.setProperty(n, `${r}px`);
18834
18859
  }
18835
- }, be = (e) => {
18860
+ }, ye = (e) => {
18836
18861
  let t = i.innerWidth, n = i.innerHeight, r = Math.min(t, Math.max(4, Math.round(e.width))), a = Math.min(n, Math.max(4, Math.round(e.height)));
18837
18862
  return {
18838
18863
  left: Math.min(Math.max(0, Math.round(e.left)), Math.max(0, t - r)),
@@ -18840,121 +18865,121 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18840
18865
  width: r,
18841
18866
  height: a
18842
18867
  };
18843
- }, xe = (e, t) => t.x >= e.left && t.x <= e.left + e.width && t.y >= e.top && t.y <= e.top + e.height, Se = (e) => {
18868
+ }, be = (e, t) => t.x >= e.left && t.x <= e.left + e.width && t.y >= e.top && t.y <= e.top + e.height, xe = (e) => {
18844
18869
  let t = i.innerWidth, n = i.innerHeight;
18845
18870
  if (!e || e.width <= 0 || e.height <= 0) {
18846
- ye(_[0], {
18871
+ ve(g[0], {
18847
18872
  left: 0,
18848
18873
  top: 0,
18849
18874
  width: t,
18850
18875
  height: n
18851
18876
  });
18852
- for (let e of _.slice(1)) ye(e, {
18877
+ for (let e of g.slice(1)) ve(e, {
18853
18878
  left: 0,
18854
18879
  top: 0,
18855
18880
  width: 0,
18856
18881
  height: 0
18857
18882
  });
18858
- v.style.display = "none", v.style.pointerEvents = "none", P.style.display = "none";
18859
- for (let e of I) e.style.display = "none";
18860
- y.style.display = "none", x.style.display = "none", b.textContent = "Drag to select a region · Esc to cancel";
18883
+ _.style.display = "none", _.style.pointerEvents = "none", N.style.display = "none";
18884
+ for (let e of F) e.style.display = "none";
18885
+ v.style.display = "none", b.style.display = "none", y.textContent = "Drag to select a region · Esc to cancel";
18861
18886
  return;
18862
18887
  }
18863
- if (ye(_[0], {
18888
+ if (ve(g[0], {
18864
18889
  left: 0,
18865
18890
  top: 0,
18866
18891
  width: t,
18867
18892
  height: e.top
18868
- }), ye(_[1], {
18893
+ }), ve(g[1], {
18869
18894
  left: 0,
18870
18895
  top: e.top,
18871
18896
  width: e.left,
18872
18897
  height: e.height
18873
- }), ye(_[2], {
18898
+ }), ve(g[2], {
18874
18899
  left: e.left + e.width,
18875
18900
  top: e.top,
18876
18901
  width: Math.max(0, t - e.left - e.width),
18877
18902
  height: e.height
18878
- }), ye(_[3], {
18903
+ }), ve(g[3], {
18879
18904
  left: 0,
18880
18905
  top: e.top + e.height,
18881
18906
  width: t,
18882
18907
  height: Math.max(0, n - e.top - e.height)
18883
- }), v.style.display = "block", ye(v, e), G) {
18884
- v.style.pointerEvents = "auto", v.style.cursor = "move", P.style.display = "block";
18885
- for (let e of I) e.style.display = "block";
18886
- y.style.display = "none", T.value = String(Math.round(e.width)), E.value = String(Math.round(e.height)), A.value = String(Math.round(e.left)), j.value = String(Math.round(e.top)), T.max = String(t), E.max = String(n), A.max = String(Math.max(0, t - e.width)), j.max = String(Math.max(0, n - e.height));
18908
+ }), _.style.display = "block", ve(_, e), re) {
18909
+ _.style.pointerEvents = "auto", _.style.cursor = "move", N.style.display = "block";
18910
+ for (let e of F) e.style.display = "block";
18911
+ v.style.display = "none", w.value = String(Math.round(e.width)), T.value = String(Math.round(e.height)), k.value = String(Math.round(e.left)), A.value = String(Math.round(e.top)), w.max = String(t), T.max = String(n), k.max = String(Math.max(0, t - e.width)), A.max = String(Math.max(0, n - e.height));
18887
18912
  let r = Math.min(Math.max(118, e.left + e.width / 2), Math.max(118, t - 110 - 8)), i = e.top + e.height + 12, a = i + 112 <= n ? i : Math.max(8, e.top - 112);
18888
- x.style.left = `${r}px`, x.style.top = `${a}px`, x.style.display = "block", b.textContent = "Adjust region · Enter to start · Esc to cancel";
18913
+ b.style.left = `${r}px`, b.style.top = `${a}px`, b.style.display = "block", y.textContent = "Adjust region · Enter to start · Esc to cancel";
18889
18914
  } else {
18890
- v.style.pointerEvents = "none", v.style.cursor = "", P.style.display = "none";
18891
- for (let e of I) e.style.display = "none";
18892
- x.style.display = "none", y.style.display = "block", y.textContent = `${Math.round(e.width)} × ${Math.round(e.height)}`, ye(y, {
18915
+ _.style.pointerEvents = "none", _.style.cursor = "", N.style.display = "none";
18916
+ for (let e of F) e.style.display = "none";
18917
+ b.style.display = "none", v.style.display = "block", v.textContent = `${Math.round(e.width)} × ${Math.round(e.height)}`, ve(v, {
18893
18918
  left: e.left + e.width / 2,
18894
18919
  top: Math.min(n - 22, e.top + e.height + 6)
18895
- }), b.textContent = "Drag to select a region · Esc to cancel";
18920
+ }), y.textContent = "Drag to select a region · Esc to cancel";
18896
18921
  }
18922
+ }, Se = (e) => {
18923
+ let t = ye(e);
18924
+ G = t, me({ rect: t }), xe(t);
18897
18925
  }, Ce = (e) => {
18898
- let t = be(e);
18899
- ie = t, he({ rect: t }), Se(t);
18900
- }, we = (e) => {
18901
18926
  let t = i.innerWidth, n = i.innerHeight;
18902
- ye(_[0], {
18927
+ ve(g[0], {
18903
18928
  left: 0,
18904
18929
  top: 0,
18905
18930
  width: t,
18906
18931
  height: e.top
18907
- }), ye(_[1], {
18932
+ }), ve(g[1], {
18908
18933
  left: 0,
18909
18934
  top: e.top,
18910
18935
  width: e.left,
18911
18936
  height: e.height
18912
- }), ye(_[2], {
18937
+ }), ve(g[2], {
18913
18938
  left: e.left + e.width,
18914
18939
  top: e.top,
18915
18940
  width: Math.max(0, t - e.left - e.width),
18916
18941
  height: e.height
18917
- }), ye(_[3], {
18942
+ }), ve(g[3], {
18918
18943
  left: 0,
18919
18944
  top: e.top + e.height,
18920
18945
  width: t,
18921
18946
  height: Math.max(0, n - e.top - e.height)
18922
- }), v.style.display = "none", y.style.display = "none", x.style.display = "none", P.style.display = "none", b.style.display = "none";
18923
- for (let e of I) e.style.display = "none";
18924
- g.style.display = "block", g.style.pointerEvents = "none", g.style.cursor = "default";
18947
+ }), _.style.display = "none", v.style.display = "none", b.style.display = "none", N.style.display = "none", y.style.display = "none";
18948
+ for (let e of F) e.style.display = "none";
18949
+ h.style.display = "block", h.style.pointerEvents = "none", h.style.cursor = "default";
18950
+ }, we = () => {
18951
+ u(!1), h.style.display = "none", h.style.pointerEvents = "auto", h.style.cursor = "crosshair", y.style.removeProperty("display");
18925
18952
  }, Te = () => {
18926
- u(!1), g.style.display = "none", g.style.pointerEvents = "auto", g.style.cursor = "crosshair", b.style.removeProperty("display");
18927
- }, Ee = () => {
18928
- re = null, ie = null, G = !1, ae = null, Se(null), g.style.display = "none", g.style.cursor = "crosshair", o.style.pointerEvents = "none";
18929
- }, De = (e) => {
18953
+ W = null, G = null, re = !1, ie = null, xe(null), h.style.display = "none", h.style.cursor = "crosshair", o.style.pointerEvents = "none";
18954
+ }, Ee = (e) => {
18930
18955
  let t = i.innerHeight, n = i.innerWidth;
18931
- L.style.visibility = "hidden", L.style.display = "flex";
18932
- let r = Math.max(112, L.offsetWidth || 112), a = Math.min(n - r - 8, Math.max(8, e.left + e.width / 2 - r / 2)), o = l?.querySelector("[data-mesurer-toolbar='true']")?.getBoundingClientRect(), s = [e.top >= 50 ? e.top - 34 - 8 : null, t - (e.top + e.height) >= 50 ? e.top + e.height + 8 : null].filter((e) => e !== null), c = (e) => o ? a < o.right && a + r > o.left && e < o.bottom && e + 34 > o.top : !1, u = s.find((e) => !c(e)) ?? s[0] ?? null;
18956
+ I.style.visibility = "hidden", I.style.display = "flex";
18957
+ let r = Math.max(112, I.offsetWidth || 112), a = Math.min(n - r - 8, Math.max(8, e.left + e.width / 2 - r / 2)), o = l?.querySelector("[data-mesurer-toolbar='true']")?.getBoundingClientRect(), s = [e.top >= 50 ? e.top - 34 - 8 : null, t - (e.top + e.height) >= 50 ? e.top + e.height + 8 : null].filter((e) => e !== null), c = (e) => o ? a < o.right && a + r > o.left && e < o.bottom && e + 34 > o.top : !1, u = s.find((e) => !c(e)) ?? s[0] ?? null;
18933
18958
  if (u === null) {
18934
- L.style.display = "none", L.style.removeProperty("visibility");
18959
+ I.style.display = "none", I.style.removeProperty("visibility");
18935
18960
  return;
18936
18961
  }
18937
- L.style.left = `${a}px`, L.style.top = `${u}px`, L.style.removeProperty("visibility");
18938
- }, Oe = () => {
18939
- L.style.display = "none";
18940
- }, ke = (e) => {
18941
- K && i.clearTimeout(K);
18962
+ I.style.left = `${a}px`, I.style.top = `${u}px`, I.style.removeProperty("visibility");
18963
+ }, De = () => {
18964
+ I.style.display = "none";
18965
+ }, Oe = (e) => {
18966
+ ce && i.clearTimeout(ce);
18942
18967
  let t = e instanceof Error ? e.message : "Could not record this region.";
18943
- V.textContent = t, V.style.display = "block", K = i.setTimeout(() => {
18944
- K = 0, V.style.display = "none";
18945
- }, Tb);
18946
- }, Ae = async (e) => {
18947
- se && i.cancelAnimationFrame(se), se = 0, ce && i.clearTimeout(ce), ce = 0;
18948
- let t = W;
18949
- if (W = null, t) try {
18968
+ B.textContent = t, B.style.display = "block", ce = i.setTimeout(() => {
18969
+ ce = 0, B.style.display = "none";
18970
+ }, Eb);
18971
+ }, ke = async (e) => {
18972
+ oe && i.cancelAnimationFrame(oe), oe = 0, se && i.clearTimeout(se), se = 0;
18973
+ let t = ne;
18974
+ if (ne = null, t) try {
18950
18975
  await t;
18951
18976
  } catch {}
18952
- let n = ne;
18953
- ne = null, e && await n?.cancel();
18954
- let r = te;
18955
- te = null, r && Hy(r), Te(), Oe();
18956
- }, je = () => {
18957
- ee = null, Pe.dismiss(), he({
18977
+ let n = te;
18978
+ te = null, e && await n?.cancel();
18979
+ let r = ee;
18980
+ ee = null, r && Uy(r), we(), De();
18981
+ }, Ae = () => {
18982
+ U = null, Ne.dismiss(), me({
18958
18983
  status: "idle",
18959
18984
  elapsed: 0,
18960
18985
  rect: null,
@@ -18963,23 +18988,23 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18963
18988
  height: null,
18964
18989
  error: null
18965
18990
  }), t.hook.emit("recording:discard", {});
18966
- }, Me = async () => {
18967
- let e = ee;
18968
- return Qy(e?.width ?? Math.max(2, Math.round(i.innerWidth)), e?.height ?? Math.max(2, Math.round(i.innerHeight)), d);
18969
- }, Ne = async (e = {}) => {
18970
- let n = ee;
18991
+ }, je = async () => {
18992
+ let e = U;
18993
+ return $y(e?.width ?? Math.max(2, Math.round(i.innerWidth)), e?.height ?? Math.max(2, Math.round(i.innerHeight)), p().frameRate);
18994
+ }, Me = async (e = {}) => {
18995
+ let n = U;
18971
18996
  if (!n) throw Error("No recording is ready to export.");
18972
- let r = H.status;
18973
- he({
18997
+ let r = V.status;
18998
+ me({
18974
18999
  status: "exporting",
18975
19000
  error: null
18976
19001
  });
18977
19002
  try {
18978
- let r = await nb(n.blob, e), i = {
19003
+ let r = await rb(n.blob, e), i = {
18979
19004
  ...r,
18980
- filename: rb(r.format)
19005
+ filename: ib(r.format)
18981
19006
  };
18982
- return he({
19007
+ return me({
18983
19008
  status: "ready",
18984
19009
  duration: n.duration,
18985
19010
  width: n.width,
@@ -18994,30 +19019,30 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
18994
19019
  bytes: i.blob.size
18995
19020
  }), i;
18996
19021
  } catch (e) {
18997
- throw he({
19022
+ throw me({
18998
19023
  status: r === "ready" ? "ready" : "error",
18999
19024
  error: e instanceof Error ? e.message : "Could not export the recording."
19000
19025
  }), e;
19001
19026
  }
19002
- }, Pe = mb({
19027
+ }, Ne = hb({
19003
19028
  ownerDocument: r,
19004
19029
  ownerWindow: i,
19005
19030
  root: o,
19006
- formats: async () => Me(),
19007
- onDiscard: je,
19008
- onExport: Ne
19009
- }), Fe = async () => {
19010
- if (pe) return pe;
19011
- if (H.status !== "recording" || !ne || !te) throw Error("No recording is active.");
19012
- let e = le, n = ne, r = te, a = Db(H.rect);
19031
+ formats: async () => je(),
19032
+ onDiscard: Ae,
19033
+ onExport: Me
19034
+ }), Pe = async () => {
19035
+ if (fe) return fe;
19036
+ if (V.status !== "recording" || !te || !ee) throw Error("No recording is active.");
19037
+ let e = K, n = te, r = ee, a = Ob(V.rect);
19013
19038
  if (!a) throw Error("Recording region is unavailable.");
19014
- return pe = (async () => {
19015
- se && i.cancelAnimationFrame(se), se = 0, ce && i.clearTimeout(ce), ce = 0;
19016
- let s = W;
19017
- W = null, s && await s;
19039
+ return fe = (async () => {
19040
+ oe && i.cancelAnimationFrame(oe), oe = 0, se && i.clearTimeout(se), se = 0;
19041
+ let s = ne;
19042
+ ne = null, s && await s;
19018
19043
  let c = await n.finalize();
19019
- if (ne = null, te = null, Hy(r), le !== e || fe) throw Error("Recording was cancelled.");
19020
- let l = await tb(c), u = {
19044
+ if (te = null, ee = null, Uy(r), K !== e || de) throw Error("Recording was cancelled.");
19045
+ let l = await nb(c), u = {
19021
19046
  blob: c,
19022
19047
  format: "webm",
19023
19048
  duration: l.duration,
@@ -19025,14 +19050,14 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19025
19050
  height: l.height,
19026
19051
  createdAt: Date.now()
19027
19052
  };
19028
- return ee = u, Te(), Oe(), ve(), o.style.pointerEvents = "none", he({
19053
+ return U = u, we(), De(), _e(), o.style.pointerEvents = "none", me({
19029
19054
  status: "ready",
19030
19055
  elapsed: l.duration,
19031
19056
  duration: l.duration,
19032
19057
  width: l.width,
19033
19058
  height: l.height,
19034
19059
  error: null
19035
- }), Pe.show(u), await t.hook.emit("recording:ready", {
19060
+ }), Ne.show(u), await t.hook.emit("recording:ready", {
19036
19061
  rect: a,
19037
19062
  duration: l.duration,
19038
19063
  width: l.width,
@@ -19040,45 +19065,45 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19040
19065
  bytes: c.size
19041
19066
  }), u;
19042
19067
  })().catch(async (t) => {
19043
- if (await Ae(!0), ve(), le === e && !fe) {
19068
+ if (await ke(!0), _e(), K === e && !de) {
19044
19069
  let e = t instanceof Error ? t.message : "Could not finish the recording.";
19045
- he({
19070
+ me({
19046
19071
  status: "error",
19047
19072
  error: e
19048
- }), ke(t);
19073
+ }), Oe(t);
19049
19074
  }
19050
19075
  throw t;
19051
19076
  }).finally(() => {
19052
- pe = null;
19053
- }), pe;
19054
- }, Ie = (e, t, n) => {
19055
- let r = 1 / d, a = (o) => {
19056
- if (fe || le !== n || H.status !== "recording" || ne !== t || te !== e) return;
19057
- let s = Math.max(0, (o - ue) / 1e3);
19058
- he({ elapsed: s }), z.textContent = `${String(Math.floor(s / 60)).padStart(2, "0")}:${String(Math.floor(s % 60)).padStart(2, "0")}`;
19077
+ fe = null;
19078
+ }), fe;
19079
+ }, Fe = (e, t, n, r) => {
19080
+ let a = 1 / r, o = (r) => {
19081
+ if (de || K !== n || V.status !== "recording" || te !== t || ee !== e) return;
19082
+ let s = Math.max(0, (r - le) / 1e3);
19083
+ me({ elapsed: s }), R.textContent = `${String(Math.floor(s / 60)).padStart(2, "0")}:${String(Math.floor(s % 60)).padStart(2, "0")}`;
19059
19084
  let c = s;
19060
- !W && c - de >= r * .8 && (Vy(e, H.rect ?? {
19085
+ !ne && c - ue >= a * .8 && (Hy(e, V.rect ?? {
19061
19086
  left: 0,
19062
19087
  top: 0,
19063
19088
  width: i.innerWidth,
19064
19089
  height: i.innerHeight
19065
- }, Ty(i)), de = c, W = t.addFrame(c, r).catch((e) => {
19066
- throw le === n && !fe && Ae(!0).then(() => {
19067
- ve();
19090
+ }, Ty(i)), ue = c, ne = t.addFrame(c, a).catch((e) => {
19091
+ throw K === n && !de && ke(!0).then(() => {
19092
+ _e();
19068
19093
  let t = e instanceof Error ? e.message : "MediaBunny could not encode the recording.";
19069
- he({
19094
+ me({
19070
19095
  status: "error",
19071
19096
  error: t
19072
- }), ke(e);
19097
+ }), Oe(e);
19073
19098
  }), e;
19074
19099
  }).finally(() => {
19075
- W = null;
19076
- })), se = i.requestAnimationFrame(a);
19100
+ ne = null;
19101
+ })), oe = i.requestAnimationFrame(o);
19077
19102
  };
19078
- se = i.requestAnimationFrame(a);
19079
- }, Le = async (e) => {
19080
- let n = ++le;
19081
- Pe.dismiss(), ee = null, Ee(), ve(), he({
19103
+ oe = i.requestAnimationFrame(o);
19104
+ }, Ie = async (e) => {
19105
+ let n = ++K, a = p().frameRate;
19106
+ Ne.dismiss(), U = null, Te(), _e(), me({
19082
19107
  status: "selecting",
19083
19108
  elapsed: 0,
19084
19109
  rect: e,
@@ -19088,47 +19113,47 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19088
19113
  error: null
19089
19114
  });
19090
19115
  try {
19091
- let a = await By(r, i, e);
19092
- if (fe || le !== n) {
19093
- Hy(a);
19116
+ let s = await Vy(r, i, e, a);
19117
+ if (de || K !== n) {
19118
+ Uy(s);
19094
19119
  return;
19095
19120
  }
19096
- let s = await eb(a.canvas, {
19121
+ let c = await tb(s.canvas, {
19097
19122
  format: "webm",
19098
- frameRate: d,
19099
- quality: p
19123
+ frameRate: a,
19124
+ quality: f
19100
19125
  });
19101
- if (fe || le !== n) {
19102
- await s.cancel(), Hy(a);
19126
+ if (de || K !== n) {
19127
+ await c.cancel(), Uy(s);
19103
19128
  return;
19104
19129
  }
19105
- if (te = a, ne = s, ue = i.performance.now(), de = 0, Vy(a, e, Ty(i)), await s.addFrame(0, 1 / d), fe || le !== n) {
19106
- await Ae(!0);
19130
+ if (ee = s, te = c, le = i.performance.now(), ue = 0, Hy(s, e, Ty(i)), await c.addFrame(0, 1 / a), de || K !== n) {
19131
+ await ke(!0);
19107
19132
  return;
19108
19133
  }
19109
- he({
19134
+ me({
19110
19135
  status: "recording",
19111
19136
  elapsed: 0
19112
- }), o.style.pointerEvents = "none", u(!0), we(e), z.textContent = "00:00", De(e), Ie(a, s, n), a.track.addEventListener("ended", () => {
19113
- le === n && H.status === "recording" && Fe().catch(() => void 0);
19114
- }, { once: !0 }), ce = i.setTimeout(() => {
19115
- le === n && H.status === "recording" && Fe().catch(() => void 0);
19116
- }, f * 1e3), await t.hook.emit("recording:start", {
19137
+ }), o.style.pointerEvents = "none", u(!0), Ce(e), R.textContent = "00:00", Ee(e), Fe(s, c, n, a), s.track.addEventListener("ended", () => {
19138
+ K === n && V.status === "recording" && Pe().catch(() => void 0);
19139
+ }, { once: !0 }), se = i.setTimeout(() => {
19140
+ K === n && V.status === "recording" && Pe().catch(() => void 0);
19141
+ }, d * 1e3), await t.hook.emit("recording:start", {
19117
19142
  rect: { ...e },
19118
- frameRate: d,
19119
- maxDurationSeconds: f
19143
+ frameRate: a,
19144
+ maxDurationSeconds: d
19120
19145
  });
19121
19146
  } catch (t) {
19122
- if (await Ae(!0), ve(), le !== n || fe) return;
19147
+ if (await ke(!0), _e(), K !== n || de) return;
19123
19148
  let r = t instanceof DOMException && t.name === "AbortError", i = r ? null : t instanceof Error ? t.message : "Could not start the recording.";
19124
- throw he({
19149
+ throw me({
19125
19150
  status: r ? "idle" : "error",
19126
19151
  rect: r ? null : e,
19127
19152
  error: i
19128
- }), r || ke(t), t;
19153
+ }), r || Oe(t), t;
19129
19154
  }
19130
- }, Re = () => {
19131
- H.status !== "selecting" && (++le, Pe.dismiss(), ee = null, ie = null, G = !1, ae = null, _e(), Se(null), g.style.display = "block", g.style.pointerEvents = "auto", b.style.removeProperty("display"), o.style.pointerEvents = "auto", he({
19155
+ }, Le = () => {
19156
+ V.status !== "selecting" && (++K, Ne.dismiss(), U = null, G = null, re = !1, ie = null, ge(), xe(null), h.style.display = "block", h.style.pointerEvents = "auto", y.style.removeProperty("display"), o.style.pointerEvents = "auto", me({
19132
19157
  status: "selecting",
19133
19158
  elapsed: 0,
19134
19159
  rect: null,
@@ -19137,23 +19162,23 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19137
19162
  height: null,
19138
19163
  error: null
19139
19164
  }));
19140
- }, ze = async (e) => {
19141
- if (H.status === "recording") {
19142
- await Fe();
19165
+ }, Re = async (e) => {
19166
+ if (V.status === "recording") {
19167
+ await Pe();
19143
19168
  return;
19144
19169
  }
19145
- if (H.status === "selecting") {
19146
- await Be();
19170
+ if (V.status === "selecting") {
19171
+ await ze();
19147
19172
  return;
19148
19173
  }
19149
19174
  if (!e) {
19150
- Re();
19175
+ Le();
19151
19176
  return;
19152
19177
  }
19153
19178
  if (e.width < 4 || e.height < 4) throw Error("Recording selection must be at least 4px by 4px.");
19154
- await Le(e);
19155
- }, Be = async () => {
19156
- ++le, Ee(), await Ae(!0), ve(), H.status !== "ready" && he({
19179
+ await Ie(e);
19180
+ }, ze = async () => {
19181
+ ++K, Te(), await ke(!0), _e(), V.status !== "ready" && me({
19157
19182
  status: "idle",
19158
19183
  elapsed: 0,
19159
19184
  rect: null,
@@ -19162,33 +19187,33 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19162
19187
  height: null,
19163
19188
  error: null
19164
19189
  });
19165
- }, Ve = (e, t, n) => {
19166
- let r = ie;
19167
- !G || !r || e.button !== 0 || (e.preventDefault(), e.stopPropagation(), ae = {
19190
+ }, Be = (e, t, n) => {
19191
+ let r = G;
19192
+ !re || !r || e.button !== 0 || (e.preventDefault(), e.stopPropagation(), ie = {
19168
19193
  kind: t,
19169
19194
  handle: n,
19170
19195
  pointerId: e.pointerId,
19171
19196
  startX: e.clientX,
19172
19197
  startY: e.clientY,
19173
19198
  rect: { ...r }
19174
- }, g.setPointerCapture?.(e.pointerId));
19175
- }, He = (e) => {
19176
- H.status === "selecting" && e.button === 0 && (G && ie && xe(ie, {
19199
+ }, h.setPointerCapture?.(e.pointerId));
19200
+ }, Ve = (e) => {
19201
+ V.status === "selecting" && e.button === 0 && (re && G && be(G, {
19177
19202
  x: e.clientX,
19178
19203
  y: e.clientY
19179
- }) || (e.preventDefault(), e.stopPropagation(), G = !1, ie = null, he({ rect: null }), g.style.cursor = "crosshair", re = {
19204
+ }) || (e.preventDefault(), e.stopPropagation(), re = !1, G = null, me({ rect: null }), h.style.cursor = "crosshair", W = {
19180
19205
  x: e.clientX,
19181
19206
  y: e.clientY
19182
- }, Se(qa(re, re, {
19207
+ }, xe(qa(W, W, {
19183
19208
  width: i.innerWidth,
19184
19209
  height: i.innerHeight
19185
- })), g.setPointerCapture?.(e.pointerId)));
19186
- }, Ue = (e) => {
19187
- if (H.status === "selecting") {
19188
- if (ae) {
19189
- let t = ae, n = e.clientX - t.startX, r = e.clientY - t.startY, a = i.innerWidth, o = i.innerHeight;
19210
+ })), h.setPointerCapture?.(e.pointerId)));
19211
+ }, He = (e) => {
19212
+ if (V.status === "selecting") {
19213
+ if (ie) {
19214
+ let t = ie, n = e.clientX - t.startX, r = e.clientY - t.startY, a = i.innerWidth, o = i.innerHeight;
19190
19215
  if (t.kind === "move") {
19191
- Ce({
19216
+ Se({
19192
19217
  ...t.rect,
19193
19218
  left: t.rect.left + n,
19194
19219
  top: t.rect.top + r
@@ -19196,7 +19221,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19196
19221
  return;
19197
19222
  }
19198
19223
  let s = t.handle ?? "", c = t.rect.left, l = t.rect.top, u = t.rect.left + t.rect.width, d = t.rect.top + t.rect.height;
19199
- s.includes("w") && (c = Math.min(u - 4, Math.max(0, t.rect.left + n))), s.includes("e") && (u = Math.max(c + 4, Math.min(a, t.rect.left + t.rect.width + n))), s.includes("n") && (l = Math.min(d - 4, Math.max(0, t.rect.top + r))), s.includes("s") && (d = Math.max(l + 4, Math.min(o, t.rect.top + t.rect.height + r))), Ce({
19224
+ s.includes("w") && (c = Math.min(u - 4, Math.max(0, t.rect.left + n))), s.includes("e") && (u = Math.max(c + 4, Math.min(a, t.rect.left + t.rect.width + n))), s.includes("n") && (l = Math.min(d - 4, Math.max(0, t.rect.top + r))), s.includes("s") && (d = Math.max(l + 4, Math.min(o, t.rect.top + t.rect.height + r))), Se({
19200
19225
  left: c,
19201
19226
  top: l,
19202
19227
  width: u - c,
@@ -19204,7 +19229,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19204
19229
  });
19205
19230
  return;
19206
19231
  }
19207
- re && Se(qa(re, {
19232
+ W && xe(qa(W, {
19208
19233
  x: e.clientX,
19209
19234
  y: e.clientY
19210
19235
  }, {
@@ -19212,14 +19237,14 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19212
19237
  height: i.innerHeight
19213
19238
  }));
19214
19239
  }
19215
- }, We = (e) => {
19216
- if (ae) {
19217
- ae = null, g.hasPointerCapture?.(e.pointerId) && g.releasePointerCapture(e.pointerId), ie && Se(ie);
19240
+ }, Ue = (e) => {
19241
+ if (ie) {
19242
+ ie = null, h.hasPointerCapture?.(e.pointerId) && h.releasePointerCapture(e.pointerId), G && xe(G);
19218
19243
  return;
19219
19244
  }
19220
- let t = re;
19221
- if (re = null, H.status !== "selecting" || !t) return;
19222
- g.hasPointerCapture?.(e.pointerId) && g.releasePointerCapture(e.pointerId);
19245
+ let t = W;
19246
+ if (W = null, V.status !== "selecting" || !t) return;
19247
+ h.hasPointerCapture?.(e.pointerId) && h.releasePointerCapture(e.pointerId);
19223
19248
  let n = qa(t, {
19224
19249
  x: e.clientX,
19225
19250
  y: e.clientY
@@ -19228,91 +19253,93 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19228
19253
  height: i.innerHeight
19229
19254
  });
19230
19255
  if (n.width < 4 || n.height < 4) {
19231
- ie = null, G = !1, he({ rect: null }), Se(null);
19256
+ G = null, re = !1, me({ rect: null }), xe(null);
19232
19257
  return;
19233
19258
  }
19234
- ie = be(n), G = !0, g.style.cursor = "default", he({ rect: ie }), Se(ie);
19259
+ G = ye(n), re = !0, h.style.cursor = "default", me({ rect: G }), xe(G);
19260
+ }, We = (e) => {
19261
+ W = null, ie = null, h.hasPointerCapture?.(e.pointerId) && h.releasePointerCapture(e.pointerId), xe(G && re ? G : null);
19235
19262
  }, Ge = (e) => {
19236
- re = null, ae = null, g.hasPointerCapture?.(e.pointerId) && g.releasePointerCapture(e.pointerId), Se(ie && G ? ie : null);
19237
- }, Ke = (e) => {
19238
- if (e.key === "Enter" && H.status === "selecting" && G && ie) {
19239
- e.preventDefault(), e.stopImmediatePropagation(), Le(ie).catch(() => void 0);
19263
+ if (e.key === "Enter" && V.status === "selecting" && re && G) {
19264
+ e.preventDefault(), e.stopImmediatePropagation(), Ie(G).catch(() => void 0);
19240
19265
  return;
19241
19266
  }
19242
19267
  if (e.key === "Escape") {
19243
- if (H.status === "selecting") {
19244
- e.preventDefault(), e.stopImmediatePropagation(), Be();
19268
+ if (V.status === "selecting") {
19269
+ e.preventDefault(), e.stopImmediatePropagation(), ze();
19245
19270
  return;
19246
19271
  }
19247
- H.status === "recording" && (e.preventDefault(), e.stopImmediatePropagation(), Fe().catch(() => void 0));
19272
+ V.status === "recording" && (e.preventDefault(), e.stopImmediatePropagation(), Pe().catch(() => void 0));
19248
19273
  }
19249
19274
  };
19250
- g.addEventListener("pointerdown", He), g.addEventListener("pointermove", Ue), g.addEventListener("pointerup", We), g.addEventListener("pointercancel", Ge), i.addEventListener("keydown", Ke, !0), v.addEventListener("pointerdown", (e) => {
19275
+ h.addEventListener("pointerdown", Ve), h.addEventListener("pointermove", He), h.addEventListener("pointerup", Ue), h.addEventListener("pointercancel", We), i.addEventListener("keydown", Ge, !0), _.addEventListener("pointerdown", (e) => {
19251
19276
  let t = e.target;
19252
- t instanceof Element && t.closest("[data-mesurer-recording-resize]") || Ve(e, "move");
19277
+ t instanceof Element && t.closest("[data-mesurer-recording-resize]") || Be(e, "move");
19253
19278
  });
19254
- for (let e of I) e.addEventListener("pointerdown", (t) => {
19255
- Ve(t, "resize", e.dataset.mesurerRecordingResize);
19279
+ for (let e of F) e.addEventListener("pointerdown", (t) => {
19280
+ Be(t, "resize", e.dataset.mesurerRecordingResize);
19256
19281
  });
19257
- x.addEventListener("pointerdown", (e) => {
19282
+ b.addEventListener("pointerdown", (e) => {
19258
19283
  e.stopPropagation();
19259
- }), x.addEventListener("click", (e) => {
19284
+ }), b.addEventListener("click", (e) => {
19260
19285
  e.stopPropagation();
19261
19286
  });
19262
- let qe = (e, t) => {
19263
- let n = ie, r = Number(e.value);
19264
- !n || !Number.isFinite(r) || Ce({
19287
+ let Ke = (e, t) => {
19288
+ let n = G, r = Number(e.value);
19289
+ !n || !Number.isFinite(r) || Se({
19265
19290
  ...n,
19266
19291
  [t]: r
19267
19292
  });
19268
19293
  };
19269
- T.addEventListener("change", () => qe(T, "width")), E.addEventListener("change", () => qe(E, "height")), A.addEventListener("change", () => qe(A, "left")), j.addEventListener("change", () => qe(j, "top")), N.addEventListener("click", () => {
19270
- H.status === "selecting" && G && ie && Le(ie).catch(() => void 0);
19271
- }), B.addEventListener("click", () => {
19272
- H.status === "recording" && Fe().catch(() => void 0);
19294
+ w.addEventListener("change", () => Ke(w, "width")), T.addEventListener("change", () => Ke(T, "height")), k.addEventListener("change", () => Ke(k, "left")), A.addEventListener("change", () => Ke(A, "top")), M.addEventListener("click", () => {
19295
+ V.status === "selecting" && re && G && Ie(G).catch(() => void 0);
19296
+ }), z.addEventListener("click", () => {
19297
+ V.status === "recording" && Pe().catch(() => void 0);
19273
19298
  });
19274
- let Je = {
19275
- snapshot: () => Ob(H),
19299
+ let qe = {
19300
+ snapshot: () => kb(V),
19276
19301
  subscribe(e) {
19277
- return U.add(e), () => U.delete(e);
19302
+ return H.add(e), () => H.delete(e);
19278
19303
  },
19279
- formats: Me,
19280
- start: ze,
19281
- stop: Fe,
19282
- cancel: Be,
19283
- discard: je,
19284
- export: Ne
19304
+ settings: p,
19305
+ setSettings: m,
19306
+ formats: je,
19307
+ start: Re,
19308
+ stop: Pe,
19309
+ cancel: ze,
19310
+ discard: Ae,
19311
+ export: Me
19285
19312
  };
19286
19313
  t.tool.register({
19287
19314
  id: "recording",
19288
19315
  label: "Record",
19289
19316
  shortcut: "Shift+R",
19290
19317
  order: 72,
19291
- command: yb,
19318
+ command: bb,
19292
19319
  toolbarMode: "select",
19293
- icon: Eb,
19294
- active: ge,
19295
- hidden: () => !m().toolEnabled,
19320
+ icon: Db,
19321
+ active: he,
19322
+ hidden: () => !p().toolEnabled,
19296
19323
  menu: {
19297
19324
  label: "Recording options",
19298
19325
  items: [
19299
19326
  {
19300
19327
  id: "new",
19301
19328
  label: "New recording",
19302
- disabled: () => H.status === "recording" || H.status === "exporting",
19303
- run: () => ze()
19329
+ disabled: () => V.status === "recording" || V.status === "exporting",
19330
+ run: () => Re()
19304
19331
  },
19305
19332
  {
19306
19333
  id: "stop",
19307
19334
  label: "Stop recording",
19308
- disabled: () => H.status !== "recording",
19309
- run: () => Fe().then(() => void 0)
19335
+ disabled: () => V.status !== "recording",
19336
+ run: () => Pe().then(() => void 0)
19310
19337
  },
19311
19338
  {
19312
19339
  id: "discard",
19313
19340
  label: "Discard clip",
19314
- disabled: () => ee === null,
19315
- run: je
19341
+ disabled: () => U === null,
19342
+ run: Ae
19316
19343
  }
19317
19344
  ]
19318
19345
  }
@@ -19325,26 +19352,36 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19325
19352
  id: "tool",
19326
19353
  label: "Recording tool",
19327
19354
  description: "Show selected-region video recording in the Select toolbar.",
19328
- value: () => m().toolEnabled,
19355
+ value: () => p().toolEnabled,
19329
19356
  set: async (e) => {
19330
- h({ toolEnabled: e }), !e && ge() && await Be();
19357
+ m({ toolEnabled: e }), !e && he() && await ze();
19358
+ }
19359
+ }, {
19360
+ type: "toggle",
19361
+ id: "120-fps",
19362
+ label: "120 fps",
19363
+ description: "Record at 120 fps when the capture source supports it. Off records at 60 fps.",
19364
+ value: () => p().frameRate === 120,
19365
+ disabled: he,
19366
+ set: (e) => {
19367
+ m({ frameRate: e ? 120 : 60 });
19331
19368
  }
19332
19369
  }]
19333
- }), t.command.register(yb, async () => (await ze(), Nb(H))), t.command.register(bb, async () => Fb(await Fe())), t.command.register(xb, () => (je(), Nb(H))), t.command.register(Sb, async (e) => {
19334
- let t = await Ne(Mb(e));
19335
- return Ib(t, r, i), Pb(t);
19336
- }), t.service.provide(gb, Je), t.lifecycle.onDispose(() => {
19337
- fe = !0, ++le, U.clear(), g.removeEventListener("pointerdown", He), g.removeEventListener("pointermove", Ue), g.removeEventListener("pointerup", We), g.removeEventListener("pointercancel", Ge), i.removeEventListener("keydown", Ke, !0), K && i.clearTimeout(K), Pe.dispose(), Ee(), ve(), Ae(!0), s.dispose(), a.dispose();
19370
+ }), t.command.register(bb, async () => (await Re(), Pb(V))), t.command.register(xb, async () => Ib(await Pe())), t.command.register(Sb, () => (Ae(), Pb(V))), t.command.register(Cb, async (e) => {
19371
+ let t = await Me(Nb(e));
19372
+ return Lb(t, r, i), Fb(t);
19373
+ }), t.service.provide(_b, qe), t.lifecycle.onDispose(() => {
19374
+ de = !0, ++K, H.clear(), h.removeEventListener("pointerdown", Ve), h.removeEventListener("pointermove", He), h.removeEventListener("pointerup", Ue), h.removeEventListener("pointercancel", We), i.removeEventListener("keydown", Ge, !0), ce && i.clearTimeout(ce), Ne.dispose(), Te(), _e(), ke(!0), s.dispose(), a.dispose();
19338
19375
  });
19339
19376
  }
19340
- }), Rb = 144, zb = 96, Bb = 8, Vb = 4, Hb = 1800, Ub = (e, t) => {
19377
+ }), zb = 144, Bb = 96, Vb = 8, Hb = 4, Ub = 1800, Wb = (e, t) => {
19341
19378
  for (let [n, r] of Object.entries(t)) e.style.setProperty(n, r);
19342
- }, Wb = (e, t) => ({
19343
- left: Math.min(Math.max(Bb, e.left), Math.max(Bb, t.innerWidth - Rb - Bb)),
19344
- top: Math.min(Math.max(Bb, e.top), Math.max(Bb, t.innerHeight - zb - Bb))
19345
- }), Gb = (e, t) => {
19379
+ }, Gb = (e, t) => ({
19380
+ left: Math.min(Math.max(Vb, e.left), Math.max(Vb, t.innerWidth - zb - Vb)),
19381
+ top: Math.min(Math.max(Vb, e.top), Math.max(Vb, t.innerHeight - Bb - Vb))
19382
+ }), Kb = (e, t) => {
19346
19383
  let n = e.createElement("button");
19347
- return n.type = "button", n.textContent = t, Ub(n, {
19384
+ return n.type = "button", n.textContent = t, Wb(n, {
19348
19385
  height: "32px",
19349
19386
  padding: "0 12px",
19350
19387
  border: "1px solid rgb(255 255 255 / 18%)",
@@ -19356,11 +19393,11 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19356
19393
  "font-weight": "500",
19357
19394
  cursor: "pointer"
19358
19395
  }), n;
19359
- }, Kb = ({ 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", qb = (e) => e !== null && (e.nodeType === 1 || e.nodeType === 11), Jb = ({ ownerDocument: e, ownerWindow: t, root: n, previewDurationMs: r }) => {
19396
+ }, qb = ({ 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", Jb = (e) => e !== null && (e.nodeType === 1 || e.nodeType === 11), Yb = ({ ownerDocument: e, ownerWindow: t, root: n, previewDurationMs: r }) => {
19360
19397
  let i = n.closest("[data-mesurer-root='true']")?.parentNode ?? n.parentNode;
19361
- if (!qb(i)) throw Error("Screenshot preview requires a mounted Mesurer host.");
19398
+ if (!Jb(i)) throw Error("Screenshot preview requires a mounted Mesurer host.");
19362
19399
  let a = e.createElement("div");
19363
- a.dataset.mesurerInspectorUi = "true", a.dataset.mesurerScreenshotInteractive = "true", Ub(a, {
19400
+ a.dataset.mesurerInspectorUi = "true", a.dataset.mesurerScreenshotInteractive = "true", Wb(a, {
19364
19401
  position: "fixed",
19365
19402
  left: "0",
19366
19403
  top: "0",
@@ -19372,12 +19409,12 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19372
19409
  "font-family": "ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif"
19373
19410
  }), i.append(a);
19374
19411
  let o = e.createElement("div");
19375
- o.dataset.mesurerScreenshotPreview = "true", o.setAttribute("role", "button"), o.setAttribute("aria-label", "Open captured screenshot"), o.tabIndex = 0, Ub(o, {
19412
+ o.dataset.mesurerScreenshotPreview = "true", o.setAttribute("role", "button"), o.setAttribute("aria-label", "Open captured screenshot"), o.tabIndex = 0, Wb(o, {
19376
19413
  position: "fixed",
19377
19414
  display: "none",
19378
19415
  "z-index": "96",
19379
- width: `${Rb}px`,
19380
- height: `${zb}px`,
19416
+ width: `${zb}px`,
19417
+ height: `${Bb}px`,
19381
19418
  "box-sizing": "border-box",
19382
19419
  overflow: "hidden",
19383
19420
  "border-radius": "10px",
@@ -19390,7 +19427,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19390
19427
  "touch-action": "none"
19391
19428
  });
19392
19429
  let s = e.createElement("img");
19393
- s.dataset.mesurerScreenshotPreviewImage = "true", s.alt = "Captured screenshot", s.draggable = !1, s.title = "Click to open · Right-click for browser image actions", Ub(s, {
19430
+ s.dataset.mesurerScreenshotPreviewImage = "true", s.alt = "Captured screenshot", s.draggable = !1, s.title = "Click to open · Right-click for browser image actions", Wb(s, {
19394
19431
  display: "block",
19395
19432
  width: "100%",
19396
19433
  height: "100%",
@@ -19398,7 +19435,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19398
19435
  "background-color": "white"
19399
19436
  }), o.append(s);
19400
19437
  let c = e.createElement("button");
19401
- c.dataset.mesurerScreenshotPreviewDismiss = "true", c.type = "button", c.setAttribute("aria-label", "Dismiss screenshot preview"), c.title = "Dismiss", Ub(c, {
19438
+ c.dataset.mesurerScreenshotPreviewDismiss = "true", c.type = "button", c.setAttribute("aria-label", "Dismiss screenshot preview"), c.title = "Dismiss", Wb(c, {
19402
19439
  position: "absolute",
19403
19440
  top: "8px",
19404
19441
  right: "8px",
@@ -19424,7 +19461,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19424
19461
  let u = e.createElementNS("http://www.w3.org/2000/svg", "path");
19425
19462
  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);
19426
19463
  let d = e.createElement("div");
19427
- d.dataset.mesurerScreenshotViewer = "true", d.setAttribute("role", "dialog"), d.setAttribute("aria-modal", "true"), d.setAttribute("aria-label", "Screenshot viewer"), Ub(d, {
19464
+ d.dataset.mesurerScreenshotViewer = "true", d.setAttribute("role", "dialog"), d.setAttribute("aria-modal", "true"), d.setAttribute("aria-label", "Screenshot viewer"), Wb(d, {
19428
19465
  position: "fixed",
19429
19466
  inset: "0",
19430
19467
  display: "none",
@@ -19438,7 +19475,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19438
19475
  "pointer-events": "auto"
19439
19476
  });
19440
19477
  let f = e.createElement("img");
19441
- f.dataset.mesurerScreenshotViewerImage = "true", f.alt = "Captured screenshot", Ub(f, {
19478
+ f.dataset.mesurerScreenshotViewerImage = "true", f.alt = "Captured screenshot", Wb(f, {
19442
19479
  display: "block",
19443
19480
  "max-width": "calc(100vw - 96px)",
19444
19481
  "max-height": "calc(100vh - 112px)",
@@ -19449,7 +19486,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19449
19486
  "box-shadow": "0 8px 30px rgb(0 0 0 / 28%)"
19450
19487
  }), d.append(f);
19451
19488
  let p = e.createElement("div");
19452
- p.dataset.mesurerScreenshotViewerControls = "true", Ub(p, {
19489
+ p.dataset.mesurerScreenshotViewerControls = "true", Wb(p, {
19453
19490
  position: "fixed",
19454
19491
  top: "16px",
19455
19492
  right: "16px",
@@ -19457,14 +19494,14 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19457
19494
  gap: "8px",
19458
19495
  "pointer-events": "auto"
19459
19496
  });
19460
- let m = Gb(e, "Copy");
19497
+ let m = Kb(e, "Copy");
19461
19498
  m.dataset.mesurerScreenshotViewerCopy = "true", m.setAttribute("aria-label", "Copy screenshot");
19462
- let h = Gb(e, "Save");
19499
+ let h = Kb(e, "Save");
19463
19500
  h.dataset.mesurerScreenshotViewerSave = "true", h.setAttribute("aria-label", "Save screenshot");
19464
- let g = Gb(e, "Close");
19501
+ let g = Kb(e, "Close");
19465
19502
  g.dataset.mesurerScreenshotViewerClose = "true", g.setAttribute("aria-label", "Close screenshot viewer"), p.append(m, h, g), d.append(p), a.append(d);
19466
19503
  let _ = e.createElement("div");
19467
- _.dataset.mesurerScreenshotToast = "true", _.setAttribute("role", "status"), Ub(_, {
19504
+ _.dataset.mesurerScreenshotToast = "true", _.setAttribute("role", "status"), Wb(_, {
19468
19505
  position: "fixed",
19469
19506
  left: "50%",
19470
19507
  bottom: "20px",
@@ -19486,18 +19523,18 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19486
19523
  }, D = (e, n = !1) => {
19487
19524
  E(), _.textContent = e, _.style.backgroundColor = n ? "#b42318" : "rgb(28 28 30 / 90%)", _.style.display = "block", C = t.setTimeout(() => {
19488
19525
  C = 0, _.style.display = "none";
19489
- }, Hb);
19526
+ }, Ub);
19490
19527
  }, O = () => {
19491
19528
  d.style.display = "none";
19492
19529
  }, k = () => {
19493
19530
  y && globalThis.URL.revokeObjectURL(y), y = null, v = null, s.removeAttribute("src"), f.removeAttribute("src");
19494
19531
  }, A = () => {
19495
19532
  T(), O(), o.style.display = "none", k();
19496
- }, j = () => Wb({
19497
- left: t.innerWidth - Rb - Bb,
19498
- top: t.innerHeight - zb - Bb
19533
+ }, j = () => Gb({
19534
+ left: t.innerWidth - zb - Vb,
19535
+ top: t.innerHeight - Bb - Vb
19499
19536
  }, t), M = (e) => {
19500
- let n = Wb(e, t);
19537
+ let n = Gb(e, t);
19501
19538
  b = n, o.style.left = `${n.left}px`, o.style.top = `${n.top}px`;
19502
19539
  }, N = () => {
19503
19540
  !v || !y || (T(), d.style.display = "flex", g.focus());
@@ -19531,7 +19568,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19531
19568
  let n = x;
19532
19569
  if (!n) return;
19533
19570
  let r = e - n.startX, i = t - n.startY;
19534
- !n.moved && Math.hypot(r, i) >= Vb && (n.moved = !0), n.moved && M({
19571
+ !n.moved && Math.hypot(r, i) >= Hb && (n.moved = !0), n.moved && M({
19535
19572
  left: n.left + r,
19536
19573
  top: n.top + i
19537
19574
  });
@@ -19559,41 +19596,41 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19559
19596
  t != null && t === e.pointerId && (o.hasPointerCapture?.(e.pointerId) && o.releasePointerCapture(e.pointerId), z());
19560
19597
  }, W = (e) => {
19561
19598
  (e.key === "Enter" || e.key === " ") && (e.preventDefault(), N());
19562
- }, re = (e) => {
19599
+ }, G = (e) => {
19563
19600
  e.target !== s && e.preventDefault();
19564
- }, ie = (e) => {
19601
+ }, re = (e) => {
19565
19602
  e.target === d && O();
19566
- }, G = (e) => {
19603
+ }, ie = (e) => {
19567
19604
  e.key === "Escape" && d.style.display !== "none" && (e.preventDefault(), e.stopImmediatePropagation(), O());
19568
19605
  };
19569
19606
  return c.addEventListener("pointerdown", (e) => e.stopPropagation()), c.addEventListener("mousedown", (e) => e.stopPropagation()), c.addEventListener("click", (e) => {
19570
19607
  e.stopPropagation(), A();
19571
- }), o.addEventListener("mousedown", B), o.addEventListener("pointerdown", U), o.addEventListener("keydown", W), o.addEventListener("contextmenu", re), d.addEventListener("click", ie), m.addEventListener("click", () => {
19608
+ }), o.addEventListener("mousedown", B), o.addEventListener("pointerdown", U), o.addEventListener("keydown", W), o.addEventListener("contextmenu", G), d.addEventListener("click", re), m.addEventListener("click", () => {
19572
19609
  P();
19573
- }), h.addEventListener("click", F), g.addEventListener("click", O), t.addEventListener("mousemove", V, !0), t.addEventListener("mouseup", H, !0), t.addEventListener("pointermove", ee, !0), t.addEventListener("pointerup", te, !0), t.addEventListener("pointercancel", ne, !0), t.addEventListener("keydown", G, !0), {
19610
+ }), h.addEventListener("click", F), g.addEventListener("click", O), t.addEventListener("mousemove", V, !0), t.addEventListener("mouseup", H, !0), t.addEventListener("pointermove", ee, !0), t.addEventListener("pointerup", te, !0), t.addEventListener("pointercancel", ne, !0), t.addEventListener("keydown", ie, !0), {
19574
19611
  show(e, n) {
19575
19612
  if (w) return;
19576
19613
  T(), O(), k(), v = e;
19577
19614
  let i = globalThis.URL.createObjectURL(e);
19578
- y = i, s.src = i, f.src = i, o.style.display = "block", M(b ?? j()), D(Kb(n)), r > 0 && (S = t.setTimeout(A, r));
19615
+ y = i, s.src = i, f.src = i, o.style.display = "block", M(b ?? j()), D(qb(n)), r > 0 && (S = t.setTimeout(A, r));
19579
19616
  },
19580
19617
  dismiss: A,
19581
19618
  dispose() {
19582
- w || (w = !0, T(), E(), A(), t.removeEventListener("mousemove", V, !0), t.removeEventListener("mouseup", H, !0), t.removeEventListener("pointermove", ee, !0), t.removeEventListener("pointerup", te, !0), t.removeEventListener("pointercancel", ne, !0), t.removeEventListener("keydown", G, !0), o.removeEventListener("mousedown", B), o.removeEventListener("pointerdown", U), o.removeEventListener("keydown", W), o.removeEventListener("contextmenu", re), d.removeEventListener("click", ie), a.remove());
19619
+ w || (w = !0, T(), E(), A(), t.removeEventListener("mousemove", V, !0), t.removeEventListener("mouseup", H, !0), t.removeEventListener("pointermove", ee, !0), t.removeEventListener("pointerup", te, !0), t.removeEventListener("pointercancel", ne, !0), t.removeEventListener("keydown", ie, !0), o.removeEventListener("mousedown", B), o.removeEventListener("pointerdown", U), o.removeEventListener("keydown", W), o.removeEventListener("contextmenu", G), d.removeEventListener("click", re), a.remove());
19583
19620
  }
19584
19621
  };
19585
- }, Yb = "mesurer.screenshot", Xb = "screenshot", Zb = "mesurer.screenshot.settings", Qb = "mesurer.screenshot.active", $b = "runtime:solid", ex = "screenshot.toggle", tx = 2500, nx = 0, rx = [
19622
+ }, Xb = "mesurer.screenshot", Zb = "screenshot", Qb = "mesurer.screenshot.settings", $b = "mesurer.screenshot.active", ex = "runtime:solid", tx = "screenshot.toggle", nx = 2500, rx = 0, ix = [
19586
19623
  "[data-mesurer-measurement='true']",
19587
19624
  "[data-mesurer-selected-measurement='true']",
19588
19625
  "[data-mesurer-selection-spacing-target='true']",
19589
19626
  "[data-mesurer-guide='true']",
19590
19627
  "[data-mesurer-distance='true']"
19591
- ].join(","), ix = `${rx},[data-mesurer-rulers='true']`, ax = {
19628
+ ].join(","), ax = `${ix},[data-mesurer-rulers='true']`, ox = {
19592
19629
  viewBox: "0 0 256 256",
19593
19630
  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"]
19594
- }, ox = (e, t) => {
19595
- for (let [n, r] of Object.entries(t)) e.style.setProperty(n, r);
19596
19631
  }, sx = (e, t) => {
19632
+ for (let [n, r] of Object.entries(t)) e.style.setProperty(n, r);
19633
+ }, cx = (e, t) => {
19597
19634
  for (let n of [
19598
19635
  "left",
19599
19636
  "top",
@@ -19605,63 +19642,63 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19605
19642
  let r = t[n];
19606
19643
  r === void 0 ? e.style.removeProperty(n) : e.style.setProperty(n, `${r}px`);
19607
19644
  }
19608
- }, cx = (e) => {
19609
- let t = e(Zb);
19645
+ }, lx = (e) => {
19646
+ let t = e(Qb);
19610
19647
  return {
19611
19648
  toolEnabled: t?.toolEnabled ?? !0,
19612
19649
  copy: t?.copy ?? !0,
19613
19650
  download: t?.download ?? !1,
19614
19651
  includeMeasurements: t?.includeMeasurements ?? !1
19615
19652
  };
19616
- }, lx = (e) => ({
19653
+ }, ux = (e) => ({
19617
19654
  value: e.style.getPropertyValue("display"),
19618
19655
  priority: e.style.getPropertyPriority("display")
19619
- }), ux = (e, t) => {
19656
+ }), dx = (e, t) => {
19620
19657
  t.value || t.priority ? e.style.setProperty("display", t.value, t.priority) : e.style.removeProperty("display");
19621
- }, dx = (e, t) => {
19658
+ }, fx = (e, t) => {
19622
19659
  let n = e;
19623
19660
  for (; n.parentElement && n.parentElement !== t;) n = n.parentElement;
19624
19661
  return n.parentElement === t ? n : null;
19625
- }, fx = (e) => {
19662
+ }, px = (e) => {
19626
19663
  let t = e.querySelector("[data-mesurer-root='true']");
19627
19664
  if (!t) return () => void 0;
19628
19665
  let n = /* @__PURE__ */ new Set();
19629
19666
  for (let e of t.querySelectorAll("[data-mesurer-rulers='true']")) {
19630
- let r = dx(e, t);
19667
+ let r = fx(e, t);
19631
19668
  r && n.add(r);
19632
19669
  }
19633
- for (let e of t.querySelectorAll(rx)) {
19634
- let r = dx(e, t);
19670
+ for (let e of t.querySelectorAll(ix)) {
19671
+ let r = fx(e, t);
19635
19672
  r && n.add(r);
19636
19673
  }
19637
19674
  let r = [];
19638
19675
  for (let e of n) e.dataset.mesurerInspectorUi !== "true" && (r.push({
19639
19676
  element: e,
19640
- display: lx(e)
19677
+ display: ux(e)
19641
19678
  }), e.style.setProperty("display", "none", "important"));
19642
19679
  return () => {
19643
- for (let e of r) ux(e.element, e.display);
19680
+ for (let e of r) dx(e.element, e.display);
19644
19681
  };
19645
- }, px = (e) => Array.from(e.querySelectorAll(ix)).filter((e) => e.dataset.mesurerInspectorUi === "true").map((e) => ({
19682
+ }, mx = (e) => Array.from(e.querySelectorAll(ax)).filter((e) => e.dataset.mesurerInspectorUi === "true").map((e) => ({
19646
19683
  element: e,
19647
- display: lx(e)
19648
- })), mx = (e) => {
19649
- for (let t of e) t.element.isConnected && ux(t.element, t.display);
19650
- }, hx = (e = {}) => Ta({
19651
- id: Yb,
19684
+ display: ux(e)
19685
+ })), hx = (e) => {
19686
+ for (let t of e) t.element.isConnected && dx(t.element, t.display);
19687
+ }, gx = (e = {}) => Ta({
19688
+ id: Xb,
19652
19689
  version: "0.1.0",
19653
- requires: [$b],
19690
+ requires: [ex],
19654
19691
  provides: [
19655
19692
  "tool:screenshot",
19656
19693
  "capture:screenshot",
19657
19694
  "settings:screenshot"
19658
19695
  ],
19659
19696
  setup(t) {
19660
- let n = t.service.get($b);
19697
+ let n = t.service.get(ex);
19661
19698
  if (!n) throw Error("Screenshot plugin requires the Solid renderer runtime.");
19662
- let { ownerDocument: r, ownerWindow: i } = n, a = n.createWorkspaceRuntime(), o = n.createInspectorMount(), s = e.capture ?? e.captureVisibleTab, c = s ?? _o, l = e.previewDurationMs ?? nx;
19699
+ let { ownerDocument: r, ownerWindow: i } = n, a = n.createWorkspaceRuntime(), o = n.createInspectorMount(), s = e.capture ?? e.captureVisibleTab, c = s ?? _o, l = e.previewDurationMs ?? rx;
19663
19700
  t.state.register({
19664
- id: Zb,
19701
+ id: Qb,
19665
19702
  initial: {
19666
19703
  toolEnabled: e.toolEnabled ?? !0,
19667
19704
  copy: e.copy ?? !0,
@@ -19670,11 +19707,11 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19670
19707
  },
19671
19708
  persist: !0
19672
19709
  }), t.state.register({
19673
- id: Qb,
19710
+ id: $b,
19674
19711
  initial: !1
19675
19712
  });
19676
19713
  let u = o.element;
19677
- u.dataset.mesurerScreenshot = "true", ox(u, {
19714
+ u.dataset.mesurerScreenshot = "true", sx(u, {
19678
19715
  position: "fixed",
19679
19716
  inset: "0",
19680
19717
  "z-index": "85",
@@ -19682,7 +19719,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19682
19719
  "font-family": "ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif"
19683
19720
  });
19684
19721
  let d = r.createElement("div");
19685
- d.dataset.mesurerScreenshotSelect = "true", d.setAttribute("role", "application"), d.setAttribute("aria-label", "Screenshot selection"), ox(d, {
19722
+ d.dataset.mesurerScreenshotSelect = "true", d.setAttribute("role", "application"), d.setAttribute("aria-label", "Screenshot selection"), sx(d, {
19686
19723
  position: "fixed",
19687
19724
  inset: "0",
19688
19725
  display: "none",
@@ -19694,13 +19731,13 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19694
19731
  }), u.append(d);
19695
19732
  let f = Array.from({ length: 4 }, () => {
19696
19733
  let e = r.createElement("div");
19697
- return ox(e, {
19734
+ return sx(e, {
19698
19735
  position: "fixed",
19699
19736
  "background-color": "rgb(0 0 0 / 40%)",
19700
19737
  "pointer-events": "none"
19701
19738
  }), d.append(e), e;
19702
19739
  }), p = r.createElement("div");
19703
- ox(p, {
19740
+ sx(p, {
19704
19741
  position: "fixed",
19705
19742
  display: "none",
19706
19743
  border: "1px solid #0d99ff",
@@ -19708,7 +19745,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19708
19745
  "pointer-events": "none"
19709
19746
  }), d.append(p);
19710
19747
  let m = r.createElement("div");
19711
- ox(m, {
19748
+ sx(m, {
19712
19749
  position: "fixed",
19713
19750
  display: "none",
19714
19751
  "z-index": "86",
@@ -19722,7 +19759,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19722
19759
  "pointer-events": "none"
19723
19760
  }), d.append(m);
19724
19761
  let h = r.createElement("div");
19725
- h.textContent = "Drag to select · Esc to cancel", ox(h, {
19762
+ h.textContent = "Drag to select · Esc to cancel", sx(h, {
19726
19763
  position: "fixed",
19727
19764
  left: "50%",
19728
19765
  bottom: "16px",
@@ -19735,7 +19772,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19735
19772
  "pointer-events": "none"
19736
19773
  }), d.append(h);
19737
19774
  let g = r.createElement("div");
19738
- g.dataset.mesurerScreenshotError = "true", g.setAttribute("role", "status"), g.textContent = "Could not save screenshot", ox(g, {
19775
+ g.dataset.mesurerScreenshotError = "true", g.setAttribute("role", "status"), g.textContent = "Could not save screenshot", sx(g, {
19739
19776
  position: "fixed",
19740
19777
  display: "none",
19741
19778
  "z-index": "97",
@@ -19746,8 +19783,8 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19746
19783
  "font-size": "11px",
19747
19784
  "pointer-events": "none"
19748
19785
  }), u.append(g);
19749
- let _ = null, v = null, y = 0, b = 0, x = !1, S = !1, C = !1, w = () => t.state.get("mesurer.screenshot.active") ?? !1, T = () => cx(t.state.get), E = (e) => {
19750
- t.state.update(Zb, (t) => {
19786
+ let _ = null, v = null, y = 0, b = 0, x = !1, S = !1, C = !1, w = () => t.state.get("mesurer.screenshot.active") ?? !1, T = () => lx(t.state.get), E = (e) => {
19787
+ t.state.update(Qb, (t) => {
19751
19788
  let n = { ...t };
19752
19789
  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;
19753
19790
  });
@@ -19770,13 +19807,13 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19770
19807
  }, A = (e) => {
19771
19808
  let t = i.innerWidth, n = i.innerHeight;
19772
19809
  if (!e || e.width <= 0 || e.height <= 0) {
19773
- sx(f[0], {
19810
+ cx(f[0], {
19774
19811
  left: 0,
19775
19812
  top: 0,
19776
19813
  width: t,
19777
19814
  height: n
19778
19815
  });
19779
- for (let e of f.slice(1)) sx(e, {
19816
+ for (let e of f.slice(1)) cx(e, {
19780
19817
  left: 0,
19781
19818
  top: 0,
19782
19819
  width: 0,
@@ -19785,31 +19822,31 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19785
19822
  p.style.display = "none", m.style.display = "none";
19786
19823
  return;
19787
19824
  }
19788
- sx(f[0], {
19825
+ cx(f[0], {
19789
19826
  left: 0,
19790
19827
  top: 0,
19791
19828
  width: t,
19792
19829
  height: e.top
19793
- }), sx(f[1], {
19830
+ }), cx(f[1], {
19794
19831
  left: 0,
19795
19832
  top: e.top,
19796
19833
  width: e.left,
19797
19834
  height: e.height
19798
- }), sx(f[2], {
19835
+ }), cx(f[2], {
19799
19836
  left: e.left + e.width,
19800
19837
  top: e.top,
19801
19838
  width: Math.max(0, t - e.left - e.width),
19802
19839
  height: e.height
19803
- }), sx(f[3], {
19840
+ }), cx(f[3], {
19804
19841
  left: 0,
19805
19842
  top: e.top + e.height,
19806
19843
  width: t,
19807
19844
  height: Math.max(0, n - e.top - e.height)
19808
- }), p.style.display = "block", sx(p, e), m.style.display = "block", m.textContent = `${Math.round(e.width)} × ${Math.round(e.height)}`, sx(m, {
19845
+ }), p.style.display = "block", cx(p, e), m.style.display = "block", m.textContent = `${Math.round(e.width)} × ${Math.round(e.height)}`, cx(m, {
19809
19846
  left: e.left + e.width / 2,
19810
19847
  top: Math.min(n - 22, e.top + e.height + 6)
19811
19848
  });
19812
- }, j = () => n.portalTarget.querySelector("[data-mesurer-tool-id='screenshot']")?.getBoundingClientRect() ?? null, M = Jb({
19849
+ }, j = () => n.portalTarget.querySelector("[data-mesurer-tool-id='screenshot']")?.getBoundingClientRect() ?? null, M = Yb({
19813
19850
  ownerDocument: r,
19814
19851
  ownerWindow: i,
19815
19852
  root: u,
@@ -19820,7 +19857,7 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19820
19857
  }, P = () => {
19821
19858
  y && i.clearTimeout(y), g.style.display = "block", N(g), y = i.setTimeout(() => {
19822
19859
  y = 0, g.style.display = "none";
19823
- }, tx);
19860
+ }, nx);
19824
19861
  }, F = () => {
19825
19862
  _ = null, A(null), d.style.visibility = "", d.style.display = "none", u.style.pointerEvents = "none", D(!1), k();
19826
19863
  }, I = () => {
@@ -19829,8 +19866,8 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19829
19866
  if (x) throw Error("A screenshot capture is already running.");
19830
19867
  if (e.width < 4 || e.height < 4) throw Error("Screenshot selection must be at least 4px by 4px.");
19831
19868
  x = !0;
19832
- let o = ++b, s = T(), l = s.includeMeasurements ? px(r) : [], u = s.includeMeasurements ? () => void 0 : fx(n.portalTarget);
19833
- a.prepareCapture(), s.includeMeasurements && mx(l);
19869
+ let o = ++b, s = T(), l = s.includeMeasurements ? mx(r) : [], u = s.includeMeasurements ? () => void 0 : px(n.portalTarget);
19870
+ a.prepareCapture(), s.includeMeasurements && hx(l);
19834
19871
  try {
19835
19872
  d.style.visibility = "hidden", await Qa(i);
19836
19873
  let n = await Ja(await c({
@@ -19938,9 +19975,9 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
19938
19975
  label: "Screenshot",
19939
19976
  shortcut: "Shift+S",
19940
19977
  order: 70,
19941
- command: ex,
19978
+ command: tx,
19942
19979
  toolbarMode: "select",
19943
- icon: ax,
19980
+ icon: ox,
19944
19981
  active: w,
19945
19982
  hidden: () => !T().toolEnabled,
19946
19983
  menu: {
@@ -20006,31 +20043,31 @@ var Kv = "mesurer.layout-guides", qv = "layout-guides:v1", Jv = "mesurer.layout-
20006
20043
  set: (e) => E({ includeMeasurements: e })
20007
20044
  }
20008
20045
  ]
20009
- }), t.command.register(ex, R), t.service.provide(Xb, ee), t.lifecycle.onDispose(() => {
20046
+ }), t.command.register(tx, R), t.service.provide(Zb, ee), t.lifecycle.onDispose(() => {
20010
20047
  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();
20011
20048
  });
20012
20049
  }
20013
- }), gx = (e) => Number.parseFloat(e) || 0, _x = 0, vx = (e, t) => {
20050
+ }), _x = (e) => Number.parseFloat(e) || 0, vx = 0, yx = (e, t) => {
20014
20051
  let n = t.CSS;
20015
20052
  return n?.escape ? n.escape(e) : e.replace(/[^a-zA-Z0-9_-]/g, (e) => `\\${e}`);
20016
- }, yx = (e) => e.nodeType === 9, bx = (e) => e.nodeType === 11;
20017
- function xx(e) {
20053
+ }, bx = (e) => e.nodeType === 9, xx = (e) => e.nodeType === 11;
20054
+ function Sx(e) {
20018
20055
  let t = e.getRootNode();
20019
- return bx(t) ? t : e.ownerDocument;
20056
+ return xx(t) ? t : e.ownerDocument;
20020
20057
  }
20021
- var Sx = (e, t) => {
20022
- if (yx(e) || bx(e)) return e;
20023
- let n = xx(e);
20024
- return bx(n) ? n : t;
20025
- }, Cx = 600, wx = "audio, canvas, embed, iframe, img, input, object, picture, select, textarea, video", Tx = /* @__PURE__ */ new WeakMap(), Ex = (e) => {
20058
+ var Cx = (e, t) => {
20059
+ if (bx(e) || xx(e)) return e;
20060
+ let n = Sx(e);
20061
+ return xx(n) ? n : t;
20062
+ }, wx = 600, Tx = "audio, canvas, embed, iframe, img, input, object, picture, select, textarea, video", Ex = /* @__PURE__ */ new WeakMap(), Dx = (e) => {
20026
20063
  let t = e;
20027
20064
  for (; t;) {
20028
- if ((Tx.get(t) ?? 0) > 0) return !0;
20065
+ if ((Ex.get(t) ?? 0) > 0) return !0;
20029
20066
  let e = t.getRootNode();
20030
- t = bx(e) ? e.host : t.parentElement;
20067
+ t = xx(e) ? e.host : t.parentElement;
20031
20068
  }
20032
20069
  return !1;
20033
- }, Dx = (e, t) => t.x >= e.left && t.x <= e.right && t.y >= e.top && t.y <= e.bottom, Ox = (e, t) => Array.from(e.getClientRects()).some((e) => Dx(e, t)), kx = (e, t, n) => {
20070
+ }, Ox = (e, t) => t.x >= e.left && t.x <= e.right && t.y >= e.top && t.y <= e.bottom, kx = (e, t) => Array.from(e.getClientRects()).some((e) => Ox(e, t)), Ax = (e, t, n) => {
20034
20071
  let r = e;
20035
20072
  for (; r;) {
20036
20073
  let e = n.getComputedStyle(r);
@@ -20039,7 +20076,7 @@ var Sx = (e, t) => {
20039
20076
  r = r.parentElement;
20040
20077
  }
20041
20078
  return !0;
20042
- }, Ax = (e, t) => {
20079
+ }, jx = (e, t) => {
20043
20080
  if (e.matches("img, picture, video, canvas, svg image, path, circle, ellipse, line, polygon, polyline, rect, text, use")) return !0;
20044
20081
  let n = t.getComputedStyle(e), r = n.backgroundImage !== "none" || n.backgroundColor !== "transparent" && n.backgroundColor !== "rgba(0, 0, 0, 0)", i = [
20045
20082
  "top",
@@ -20048,7 +20085,7 @@ var Sx = (e, t) => {
20048
20085
  "left"
20049
20086
  ].some((e) => Number.parseFloat(n.getPropertyValue(`border-${e}-width`)) > 0 && n.getPropertyValue(`border-${e}-style`) !== "none");
20050
20087
  return r || i || n.boxShadow !== "none" || n.outlineStyle !== "none";
20051
- }, jx = (e, t) => !!e.textContent?.trim() || Ax(e, t), Mx = (e, t, n) => {
20088
+ }, Mx = (e, t) => !!e.textContent?.trim() || jx(e, t), Nx = (e, t, n) => {
20052
20089
  let r = t, i = r.caretRangeFromPoint?.(e.x, e.y)?.startContainer ?? r.caretPositionFromPoint?.(e.x, e.y)?.offsetNode;
20053
20090
  if (!i) return null;
20054
20091
  let a = t.defaultView?.Element;
@@ -20059,11 +20096,11 @@ var Sx = (e, t) => {
20059
20096
  o = o.parentElement;
20060
20097
  }
20061
20098
  return o === n ? n : null;
20062
- }, Nx = (e, t, n) => {
20099
+ }, Px = (e, t, n) => {
20063
20100
  let r = n.defaultView, i = r?.Element;
20064
20101
  if (!r || !i) return [];
20065
20102
  let a = [], o = /* @__PURE__ */ new Set(), s = (n, i, s) => {
20066
- if (o.has(n) || Ex(n) || r.getComputedStyle(n).pointerEvents !== "none" || kx(n, e, r) || !Ox(n, t)) return;
20103
+ if (o.has(n) || Dx(n) || r.getComputedStyle(n).pointerEvents !== "none" || Ax(n, e, r) || !kx(n, t)) return;
20067
20104
  let c = n.getBoundingClientRect();
20068
20105
  o.add(n), a.push({
20069
20106
  element: n,
@@ -20072,7 +20109,7 @@ var Sx = (e, t) => {
20072
20109
  order: s
20073
20110
  });
20074
20111
  }, c = n.createTreeWalker(e, 1), l = c.nextNode(), u = 1;
20075
- for (; l && u <= Cx;) {
20112
+ for (; l && u <= wx;) {
20076
20113
  if (l instanceof i) {
20077
20114
  let t = l;
20078
20115
  if (r.getComputedStyle(t).pointerEvents === "none") {
@@ -20083,9 +20120,9 @@ var Sx = (e, t) => {
20083
20120
  }
20084
20121
  u += 1, l = c.nextNode();
20085
20122
  }
20086
- let d = Mx(t, n, e);
20123
+ let d = Nx(t, n, e);
20087
20124
  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);
20088
- }, Px = (e, t, n) => {
20125
+ }, Fx = (e, t, n) => {
20089
20126
  let r = t.ownerDocument.defaultView;
20090
20127
  if (!r) return [];
20091
20128
  let i = [...new Set(e)], a = /* @__PURE__ */ new Map();
@@ -20094,7 +20131,7 @@ var Sx = (e, t) => {
20094
20131
  t && (a.set(e, e.getAttribute("style")), t.style.setProperty("pointer-events", "auto", "important"));
20095
20132
  }
20096
20133
  try {
20097
- let e = xx(t).elementsFromPoint(n.x, n.y), r = e.findIndex((e) => e === t), a = new Map(e.map((e, t) => [e, t]));
20134
+ let e = Sx(t).elementsFromPoint(n.x, n.y), r = e.findIndex((e) => e === t), a = new Map(e.map((e, t) => [e, t]));
20098
20135
  return i.filter((e) => {
20099
20136
  let t = a.get(e);
20100
20137
  return t !== void 0 && (r < 0 || t < r);
@@ -20102,31 +20139,31 @@ var Sx = (e, t) => {
20102
20139
  } finally {
20103
20140
  for (let [e, t] of a) t === null ? e.removeAttribute("style") : e.setAttribute("style", t);
20104
20141
  }
20105
- }, Fx = (e, t) => {
20142
+ }, Ix = (e, t) => {
20106
20143
  let n = e;
20107
20144
  for (; n.parentElement && n.parentElement !== t;) n = n.parentElement;
20108
20145
  return n.parentElement === t ? n : null;
20109
- }, Ix = (e, t, n, r) => {
20146
+ }, Lx = (e, t, n, r) => {
20110
20147
  let i = r.defaultView;
20111
20148
  if (!i) return [];
20112
- let a = Px(Nx(e, t, r).filter((e) => jx(e, i)), e, t);
20149
+ let a = Fx(Px(e, t, r).filter((e) => Mx(e, i)), e, t);
20113
20150
  if (a.length > 0) return a;
20114
- if (e.textContent?.trim() && !e.matches(wx) || e.matches("a, button, input, select, textarea, label, summary, [contenteditable='true']")) return [];
20115
- let o = [], s = /* @__PURE__ */ new Set(), c = !yx(n) && !bx(n) ? n : null, l = e.parentElement;
20151
+ if (e.textContent?.trim() && !e.matches(Tx) || e.matches("a, button, input, select, textarea, label, summary, [contenteditable='true']")) return [];
20152
+ let o = [], s = /* @__PURE__ */ new Set(), c = !bx(n) && !xx(n) ? n : null, l = e.parentElement;
20116
20153
  for (; l && l !== r.body && l !== r.documentElement && !(c && l !== c && !c.contains(l));) {
20117
- let a = l, u = Fx(e, a), d = Nx(a, t, r).filter((e) => {
20118
- if (!Rx(e, n) || e.closest("[aria-hidden='true'], [inert]")) return !1;
20119
- let t = Fx(e, a);
20154
+ let a = l, u = Ix(e, a), d = Px(a, t, r).filter((e) => {
20155
+ if (!zx(e, n) || e.closest("[aria-hidden='true'], [inert]")) return !1;
20156
+ let t = Ix(e, a);
20120
20157
  return t === null || t !== u;
20121
20158
  });
20122
- for (let e of d) s.has(e) || !jx(e, i) || (s.add(e), o.push(e));
20159
+ for (let e of d) s.has(e) || !Mx(e, i) || (s.add(e), o.push(e));
20123
20160
  if (a === c) break;
20124
20161
  l = a.parentElement;
20125
20162
  }
20126
- return Px(o, e, t);
20163
+ return Fx(o, e, t);
20127
20164
  };
20128
- function Lx(e, t, n = yx(t) ? t : t.ownerDocument ?? document) {
20129
- let r = Sx(t, n), i = n.defaultView;
20165
+ function Rx(e, t, n = bx(t) ? t : t.ownerDocument ?? document) {
20166
+ let r = Cx(t, n), i = n.defaultView;
20130
20167
  if (!i) return null;
20131
20168
  let a = r.elementsFromPoint(e.x, e.y);
20132
20169
  for (let r of a) {
@@ -20136,28 +20173,28 @@ function Lx(e, t, n = yx(t) ? t : t.ownerDocument ?? document) {
20136
20173
  if (!t || t === a) break;
20137
20174
  a = t;
20138
20175
  }
20139
- if (!a || !Rx(a, t)) continue;
20140
- let o = Ix(a, e, t, n);
20176
+ if (!a || !zx(a, t)) continue;
20177
+ let o = Lx(a, e, t, n);
20141
20178
  if (o.length > 0) return o[0];
20142
20179
  if (i.getComputedStyle(a).pointerEvents !== "none") return a;
20143
20180
  }
20144
20181
  return null;
20145
20182
  }
20146
- function Rx(e, t) {
20147
- if (yx(t)) return !0;
20183
+ function zx(e, t) {
20184
+ if (bx(t)) return !0;
20148
20185
  let n = e;
20149
20186
  for (; n;) {
20150
20187
  if (t === n || t.contains(n)) return !0;
20151
20188
  let e = n.getRootNode();
20152
- if (!bx(e)) return !1;
20189
+ if (!xx(e)) return !1;
20153
20190
  n = e.host;
20154
20191
  }
20155
20192
  return !1;
20156
20193
  }
20157
- function zx(e, t) {
20194
+ function Bx(e, t) {
20158
20195
  if (!e) return t();
20159
- let n = Tx.get(e) ?? 0;
20160
- Tx.set(e, n + 1);
20196
+ let n = Ex.get(e) ?? 0;
20197
+ Ex.set(e, n + 1);
20161
20198
  let r = [e, ...e.querySelectorAll("*")], i = r.map((e) => [
20162
20199
  e,
20163
20200
  e.style.getPropertyValue("pointer-events"),
@@ -20167,13 +20204,13 @@ function zx(e, t) {
20167
20204
  try {
20168
20205
  return t();
20169
20206
  } finally {
20170
- n === 0 ? Tx.delete(e) : Tx.set(e, n);
20207
+ n === 0 ? Ex.delete(e) : Ex.set(e, n);
20171
20208
  for (let [e, t, n] of i) t ? e.style.setProperty("pointer-events", t, n) : e.style.removeProperty("pointer-events");
20172
20209
  }
20173
20210
  }
20174
- function Bx(e) {
20211
+ function Vx(e) {
20175
20212
  let t = e.ownerDocument.defaultView ?? window;
20176
- if (e.id) return `#${vx(e.id, t)}`;
20213
+ if (e.id) return `#${yx(e.id, t)}`;
20177
20214
  let n = e.getAttribute("data-testid");
20178
20215
  if (n) return `[data-testid=${JSON.stringify(n)}]`;
20179
20216
  let r = [], i = e;
@@ -20187,17 +20224,17 @@ function Bx(e) {
20187
20224
  }
20188
20225
  return r.join(" > ");
20189
20226
  }
20190
- function Vx(e, t, n = `dom-inspection-${++_x}`) {
20227
+ function Hx(e, t, n = `dom-inspection-${++vx}`) {
20191
20228
  let r = e.getBoundingClientRect(), i = t.getComputedStyle(e), a = {
20192
- top: gx(i.paddingTop),
20193
- right: gx(i.paddingRight),
20194
- bottom: gx(i.paddingBottom),
20195
- left: gx(i.paddingLeft)
20229
+ top: _x(i.paddingTop),
20230
+ right: _x(i.paddingRight),
20231
+ bottom: _x(i.paddingBottom),
20232
+ left: _x(i.paddingLeft)
20196
20233
  }, o = {
20197
- top: gx(i.marginTop),
20198
- right: gx(i.marginRight),
20199
- bottom: gx(i.marginBottom),
20200
- left: gx(i.marginLeft)
20234
+ top: _x(i.marginTop),
20235
+ right: _x(i.marginRight),
20236
+ bottom: _x(i.marginBottom),
20237
+ left: _x(i.marginLeft)
20201
20238
  }, s = {
20202
20239
  left: r.left + a.left,
20203
20240
  top: r.top + a.top,
@@ -20225,8 +20262,8 @@ function Vx(e, t, n = `dom-inspection-${++_x}`) {
20225
20262
  elementRef: e
20226
20263
  };
20227
20264
  }
20228
- function Hx(e) {
20229
- let t = e.ownerDocument.defaultView ?? window, n = t.getComputedStyle(e), r = e instanceof t.HTMLElement ? e : null, i = e.getBoundingClientRect(), a = r ? Vx(r, t) : null, o = (e) => {
20265
+ function Ux(e) {
20266
+ let t = e.ownerDocument.defaultView ?? window, n = t.getComputedStyle(e), r = e instanceof t.HTMLElement ? e : null, i = e.getBoundingClientRect(), a = r ? Hx(r, t) : null, o = (e) => {
20230
20267
  let t = Number.parseFloat(e);
20231
20268
  return Number.isFinite(t) ? t : 0;
20232
20269
  }, s = (e) => ({
@@ -20236,7 +20273,7 @@ function Hx(e) {
20236
20273
  left: o(n.getPropertyValue(`${e}-left${e === "border" ? "-width" : ""}`))
20237
20274
  });
20238
20275
  return {
20239
- selector: Bx(e),
20276
+ selector: Vx(e),
20240
20277
  tag: e.localName,
20241
20278
  id: e.id || null,
20242
20279
  classes: [...e.classList],
@@ -20298,10 +20335,10 @@ function Hx(e) {
20298
20335
  }
20299
20336
  //#endregion
20300
20337
  //#region src/agent.ts
20301
- var Ux = "text-edit", Wx = (e) => Hx(e);
20302
- function Gx(e) {
20303
- 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 || Rx(n, t), a = async () => {
20304
- let t = (e.getPluginHost() ?? await e.waitForPluginHost()).service.get(Ux);
20338
+ var Wx = "text-edit", Gx = (e) => Ux(e);
20339
+ function Kx(e) {
20340
+ 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 || zx(n, t), a = async () => {
20341
+ let t = (e.getPluginHost() ?? await e.waitForPluginHost()).service.get(Wx);
20305
20342
  if (!t) throw Error("Mesurer text editing service is unavailable.");
20306
20343
  return t;
20307
20344
  }, o = () => {
@@ -20330,25 +20367,25 @@ function Gx(e) {
20330
20367
  },
20331
20368
  inspect(e, t = 0) {
20332
20369
  let n = r(e, t);
20333
- return n ? Wx(n) : null;
20370
+ return n ? Gx(n) : null;
20334
20371
  },
20335
20372
  inspectAll(e, n = 50) {
20336
- return [...t.querySelectorAll(e)].slice(0, Math.max(0, n)).map(Wx);
20373
+ return [...t.querySelectorAll(e)].slice(0, Math.max(0, n)).map(Gx);
20337
20374
  },
20338
20375
  at(n, r) {
20339
20376
  let a = t.querySelector?.("[data-mesurer-island]") ?? null;
20340
- return zx(a?.shadowRoot?.querySelector("[data-mesurer-root='true']") ?? a, () => {
20341
- let a = Lx({
20377
+ return Bx(a?.shadowRoot?.querySelector("[data-mesurer-root='true']") ?? a, () => {
20378
+ let a = Rx({
20342
20379
  x: n,
20343
20380
  y: r
20344
20381
  }, t, e.ownerDocument);
20345
- return a && i(a) ? Wx(a) : null;
20382
+ return a && i(a) ? Gx(a) : null;
20346
20383
  });
20347
20384
  },
20348
20385
  distance(e, t) {
20349
20386
  let n = r(e), i = r(t);
20350
20387
  if (!n || !i) return null;
20351
- let a = Wx(n), o = Wx(i), s = a.rect, c = o.rect;
20388
+ let a = Gx(n), o = Gx(i), s = a.rect, c = o.rect;
20352
20389
  return {
20353
20390
  a,
20354
20391
  b: o,
@@ -20364,7 +20401,7 @@ function Gx(e) {
20364
20401
  let r = e.getPluginHost() ?? await e.waitForPluginHost();
20365
20402
  return {
20366
20403
  viewport: o(),
20367
- elements: n.flatMap((e) => [...t.querySelectorAll(e)].slice(0, 50).map(Wx)),
20404
+ elements: n.flatMap((e) => [...t.querySelectorAll(e)].slice(0, 50).map(Gx)),
20368
20405
  plugins: r.describe(),
20369
20406
  pluginState: r.state.serialize("all")
20370
20407
  };
@@ -20389,10 +20426,10 @@ function Gx(e) {
20389
20426
  }
20390
20427
  //#endregion
20391
20428
  //#region src/version.ts
20392
- var Kx = "0.2.1-beta.8", qx = Np, Jx = Pp, Yx = () => ({
20429
+ var qx = "0.2.1-beta.9", Jx = Np, Yx = Pp, Xx = () => ({
20393
20430
  ...km(),
20394
- version: Kx
20395
- }), Xx = Jx, Zx = (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, Qx = (e) => {
20431
+ version: qx
20432
+ }), Zx = Yx, Qx = (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, $x = (e) => {
20396
20433
  if (!e.length) return null;
20397
20434
  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));
20398
20435
  return {
@@ -20401,36 +20438,36 @@ var Kx = "0.2.1-beta.8", qx = Np, Jx = Pp, Yx = () => ({
20401
20438
  width: r - t,
20402
20439
  height: i - n
20403
20440
  };
20404
- }, $x = (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), eS = (e) => [...e.measurements, ...e.activeMeasurement && !e.measurements.some((t) => t.id === e.activeMeasurement?.id) ? [e.activeMeasurement] : []];
20405
- function tS(e) {
20441
+ }, eS = (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), tS = (e) => [...e.measurements, ...e.activeMeasurement && !e.measurements.some((t) => t.id === e.activeMeasurement?.id) ? [e.activeMeasurement] : []];
20442
+ function nS(e) {
20406
20443
  let { workspace: t, scope: n, guideTolerance: r } = e;
20407
20444
  if (n.kind === "workspace") return {
20408
20445
  guides: t.guides.map((e) => ({ ...e })),
20409
- measurements: eS(t),
20446
+ measurements: tS(t),
20410
20447
  distances: [...t.distances]
20411
20448
  };
20412
- let i = new Set(n.elements), a = (e) => e != null && i.has(e), o = (e) => n.regions.some((t) => Zx(e, t));
20449
+ let i = new Set(n.elements), a = (e) => e != null && i.has(e), o = (e) => n.regions.some((t) => Qx(e, t));
20413
20450
  return {
20414
- guides: t.guides.filter((e) => $x(e, n.regions, r)).map((e) => ({ ...e })),
20415
- measurements: eS(t).filter((e) => a(e.elementRef) || o(e.rect)),
20451
+ guides: t.guides.filter((e) => eS(e, n.regions, r)).map((e) => ({ ...e })),
20452
+ measurements: tS(t).filter((e) => a(e.elementRef) || o(e.rect)),
20416
20453
  distances: t.distances.filter((e) => a(e.elementRefA) || a(e.elementRefB) || o(e.rectA) || o(e.rectB))
20417
20454
  };
20418
20455
  }
20419
20456
  //#endregion
20420
20457
  //#region ../mesurer-core/dist/domain.js
20421
- var nS = {
20458
+ var rS = {
20422
20459
  opacity: 1,
20423
20460
  width: 1,
20424
20461
  pattern: "solid",
20425
20462
  dashLength: 6,
20426
20463
  gap: 4
20427
- }, rS = {
20464
+ }, iS = {
20428
20465
  opacity: 1,
20429
20466
  edgeReveal: !1
20430
20467
  };
20431
20468
  //#endregion
20432
20469
  //#region ../mesurer-core/dist/events.js
20433
- function iS() {
20470
+ function aS() {
20434
20471
  let e = /* @__PURE__ */ new Map();
20435
20472
  return {
20436
20473
  on(t, n) {
@@ -20448,12 +20485,12 @@ function iS() {
20448
20485
  }
20449
20486
  };
20450
20487
  }
20451
- ({ ...nS }), { ...rS };
20488
+ ({ ...rS }), { ...iS };
20452
20489
  //#endregion
20453
20490
  //#region ../mesurer-core/dist/plugins.js
20454
- var aS = 50;
20455
- function oS() {
20456
- let e = 1, t = 0, n = iS(), 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) => {
20491
+ var oS = 50;
20492
+ function sS() {
20493
+ let e = 1, t = 0, n = aS(), 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) => {
20457
20494
  n.emit("changed", {
20458
20495
  pluginId: e,
20459
20496
  reason: t
@@ -20516,15 +20553,15 @@ function oS() {
20516
20553
  }
20517
20554
  if (o && s) {
20518
20555
  let e = y("history");
20519
- x(s, e) || (p.push(s), p.length > aS && p.shift(), m.length = 0);
20556
+ x(s, e) || (p.push(s), p.length > oS && p.shift(), m.length = 0);
20520
20557
  }
20521
20558
  return l;
20522
20559
  }, w = () => {
20523
20560
  let e = p.pop();
20524
- return e ? (m.push(y("history")), m.length > aS && m.shift(), b(e, "history"), h(void 0, "history"), !0) : !1;
20561
+ return e ? (m.push(y("history")), m.length > oS && m.shift(), b(e, "history"), h(void 0, "history"), !0) : !1;
20525
20562
  }, T = () => {
20526
20563
  let e = m.pop();
20527
- return e ? (p.push(y("history")), p.length > aS && p.shift(), b(e, "history"), h(void 0, "history"), !0) : !1;
20564
+ return e ? (p.push(y("history")), p.length > oS && p.shift(), b(e, "history"), h(void 0, "history"), !0) : !1;
20528
20565
  }, E = async (e, t) => {
20529
20566
  for (let n of [...l.values()].filter((t) => t.name === e)) await n.handler(t);
20530
20567
  }, D = (e) => [...u.values()].reverse().find((t) => t.id === e)?.value, O = {
@@ -20681,8 +20718,8 @@ function oS() {
20681
20718
  }
20682
20719
  //#endregion
20683
20720
  //#region ../mesurer-core/dist/runtime.js
20684
- async function sS(e = {}) {
20685
- let t = oS();
20721
+ async function cS(e = {}) {
20722
+ let t = sS();
20686
20723
  try {
20687
20724
  for (let n of e.plugins ?? []) await t.load(n);
20688
20725
  return t;
@@ -20692,17 +20729,17 @@ async function sS(e = {}) {
20692
20729
  }
20693
20730
  //#endregion
20694
20731
  //#region src/context.ts
20695
- var cS = 10, lS = (e) => ({
20732
+ var lS = 10, uS = (e) => ({
20696
20733
  left: e.left,
20697
20734
  top: e.top,
20698
20735
  width: e.width,
20699
20736
  height: e.height
20700
- }), uS = (e) => {
20737
+ }), dS = (e) => {
20701
20738
  let t = /* @__PURE__ */ new Set(), n = [];
20702
20739
  for (let r of e) !r?.isConnected || t.has(r) || (t.add(r), n.push(r));
20703
20740
  return n;
20704
- }, dS = (e) => e.crypto?.randomUUID?.() ?? `${Date.now()}-${Math.random().toString(36).slice(2)}`;
20705
- function fS(e) {
20741
+ }, fS = (e) => e.crypto?.randomUUID?.() ?? `${Date.now()}-${Math.random().toString(36).slice(2)}`;
20742
+ function pS(e) {
20706
20743
  let { runtime: t, ownerDocument: n, ownerWindow: r } = e, i = e.request ?? { scope: "workspace" }, a = t.snapshot();
20707
20744
  if (!a) throw Error("Mesurer workspace is not ready yet.");
20708
20745
  let o = [], s = [], c = { kind: "workspace" }, l = /* @__PURE__ */ new Map();
@@ -20710,7 +20747,7 @@ function fS(e) {
20710
20747
  let e = t.annotation(i.annotation);
20711
20748
  if (!e) throw Error(`Mesurer annotation not found: ${i.annotation}`);
20712
20749
  for (let t of e.resolvedTargets) t.element?.isConnected && l.set(t.element, t.target.id);
20713
- o = uS(e.resolvedTargets.map((e) => e.element));
20750
+ o = dS(e.resolvedTargets.map((e) => e.element));
20714
20751
  let n = t.annotationRect(e.id);
20715
20752
  n && (s = [n]);
20716
20753
  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";
@@ -20722,15 +20759,15 @@ function fS(e) {
20722
20759
  };
20723
20760
  } else if (i.scope === "selection") {
20724
20761
  let e = t.currentSelection();
20725
- if (o = uS(e.elements), !o.length && !e.region) throw Error("Mesurer has no current selection.");
20726
- s = e.region ? [e.region] : o.map((e) => lS(e.getBoundingClientRect())), c = { kind: "selection" };
20727
- } else o = uS([
20762
+ if (o = dS(e.elements), !o.length && !e.region) throw Error("Mesurer has no current selection.");
20763
+ s = e.region ? [e.region] : o.map((e) => uS(e.getBoundingClientRect())), c = { kind: "selection" };
20764
+ } else o = dS([
20728
20765
  ...t.currentSelection().elements,
20729
20766
  ...a.measurements.map((e) => e.elementRef),
20730
20767
  a.activeMeasurement?.elementRef,
20731
20768
  ...a.heldDistances.flatMap((e) => [e.elementRefA, e.elementRefB])
20732
20769
  ]);
20733
- let u = c.kind === "workspace" ? [] : s.length ? s : o.map((e) => lS(e.getBoundingClientRect())), d = tS({
20770
+ let u = c.kind === "workspace" ? [] : s.length ? s : o.map((e) => uS(e.getBoundingClientRect())), d = nS({
20734
20771
  workspace: {
20735
20772
  guides: a.guides,
20736
20773
  measurements: a.measurements,
@@ -20742,8 +20779,8 @@ function fS(e) {
20742
20779
  elements: o,
20743
20780
  regions: u
20744
20781
  },
20745
- guideTolerance: a.guideRelevanceTolerance ?? cS
20746
- }), f = d.measurements, p = d.distances, m = d.guides, h = uS([
20782
+ guideTolerance: a.guideRelevanceTolerance ?? lS
20783
+ }), f = d.measurements, p = d.distances, m = d.guides, h = dS([
20747
20784
  ...o,
20748
20785
  ...f.map((e) => e.elementRef),
20749
20786
  ...p.flatMap((e) => [e.elementRefA, e.elementRefB])
@@ -20755,12 +20792,12 @@ function fS(e) {
20755
20792
  let t = l.get(e) ?? y();
20756
20793
  return g.set(e, t), {
20757
20794
  ref: t,
20758
- inspection: Hx(e)
20795
+ inspection: Ux(e)
20759
20796
  };
20760
20797
  }), x = f.map((e) => {
20761
20798
  let t = {
20762
20799
  id: e.id,
20763
- rect: lS(e.rect),
20800
+ rect: uS(e.rect),
20764
20801
  deltaX: e.deltaX,
20765
20802
  deltaY: e.deltaY
20766
20803
  };
@@ -20770,8 +20807,8 @@ function fS(e) {
20770
20807
  }), S = p.map((e) => {
20771
20808
  let t = {
20772
20809
  id: e.id,
20773
- rectA: lS(e.rectA),
20774
- rectB: lS(e.rectB),
20810
+ rectA: uS(e.rectA),
20811
+ rectB: uS(e.rectB),
20775
20812
  horizontal: e.horizontal ? { ...e.horizontal } : null,
20776
20813
  vertical: e.vertical ? { ...e.vertical } : null
20777
20814
  }, n = e.elementRefA ? g.get(e.elementRefA) : void 0, r = e.elementRefB ? g.get(e.elementRefB) : void 0;
@@ -20779,7 +20816,7 @@ function fS(e) {
20779
20816
  });
20780
20817
  return {
20781
20818
  schema: "mesurer.context/v1",
20782
- id: dS(r),
20819
+ id: fS(r),
20783
20820
  createdAt: (/* @__PURE__ */ new Date()).toISOString(),
20784
20821
  scope: c,
20785
20822
  page: {
@@ -20794,7 +20831,7 @@ function fS(e) {
20794
20831
  scrollY: r.scrollY
20795
20832
  },
20796
20833
  coordinateSpace: "viewport-css-px",
20797
- regions: c.kind === "workspace" ? [] : s.map(lS),
20834
+ regions: c.kind === "workspace" ? [] : s.map(uS),
20798
20835
  visualState: {
20799
20836
  rulersVisible: a.rulersVisible,
20800
20837
  xrayVisible: a.xrayVisible
@@ -20808,48 +20845,48 @@ function fS(e) {
20808
20845
  }
20809
20846
  };
20810
20847
  }
20811
- var pS = (e) => `${Math.round(e * 100) / 100}px`, mS = (e) => `x=${pS(e.left)} y=${pS(e.top)} w=${pS(e.width)} h=${pS(e.height)}`;
20812
- function hS(e) {
20848
+ var mS = (e) => `${Math.round(e * 100) / 100}px`, hS = (e) => `x=${mS(e.left)} y=${mS(e.top)} w=${mS(e.width)} h=${mS(e.height)}`;
20849
+ function gS(e) {
20813
20850
  let t = [
20814
20851
  "Mesurer visual context",
20815
20852
  "",
20816
20853
  `Page: ${e.page.url}`,
20817
20854
  `Viewport: ${e.viewport.width} × ${e.viewport.height} CSS px; scroll x=${e.viewport.scrollX} y=${e.viewport.scrollY}`
20818
20855
  ];
20819
- if (e.scope.kind === "annotation" ? t.push("", "Annotation", e.scope.note, `Target status: ${e.scope.targetStatus}`) : t.push("", `Scope: ${e.scope.kind}`), e.regions.length && (t.push("", "Requested regions"), e.regions.forEach((e, n) => t.push(`- region-${n + 1}: ${mS(e)}`))), (e.visualState.rulersVisible || e.visualState.xrayVisible) && t.push("", `Visual state: rulers=${e.visualState.rulersVisible ? "on" : "off"}; x-ray=${e.visualState.xrayVisible ? "on" : "off"}`), e.targets.length) {
20856
+ 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}: ${hS(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) {
20820
20857
  t.push("", "Targets");
20821
20858
  for (let n of e.targets) {
20822
20859
  let e = n.inspection;
20823
- t.push(`[${n.ref}] ${e.selector}`, ` rect: ${mS(e.rect)}`, ` margin: ${pS(e.margin.top)} ${pS(e.margin.right)} ${pS(e.margin.bottom)} ${pS(e.margin.left)}`, ` padding: ${pS(e.padding.top)} ${pS(e.padding.right)} ${pS(e.padding.bottom)} ${pS(e.padding.left)}`, ` layout: display=${e.layout.display}; position=${e.layout.position}; gap=${e.layout.gap}`, ` typography: ${e.typography.fontSize} / ${e.typography.lineHeight}; weight=${e.typography.fontWeight}; align=${e.typography.textAlign}`), e.text && t.push(` text: ${JSON.stringify(e.text)}`);
20860
+ t.push(`[${n.ref}] ${e.selector}`, ` rect: ${hS(e.rect)}`, ` margin: ${mS(e.margin.top)} ${mS(e.margin.right)} ${mS(e.margin.bottom)} ${mS(e.margin.left)}`, ` padding: ${mS(e.padding.top)} ${mS(e.padding.right)} ${mS(e.padding.bottom)} ${mS(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)}`);
20824
20861
  }
20825
20862
  }
20826
20863
  if (e.visualContext.guides.length) {
20827
20864
  t.push("", "Relevant guides");
20828
- for (let n of e.visualContext.guides) t.push(`- ${n.orientation} ${n.orientation === "vertical" ? "x" : "y"}=${pS(n.position)}`);
20865
+ for (let n of e.visualContext.guides) t.push(`- ${n.orientation} ${n.orientation === "vertical" ? "x" : "y"}=${mS(n.position)}`);
20829
20866
  }
20830
20867
  if (e.visualContext.layoutGuides.length) {
20831
20868
  t.push("", "Layout guides");
20832
20869
  for (let n of e.visualContext.layoutGuides) {
20833
20870
  if (!n.visible) continue;
20834
- let e = n.kind === "grid" ? `grid ${pS(n.size)}` : `${n.count} ${n.kind}; gutter=${pS(n.gutter)}; offset=${pS(n.offset)}; align=${n.align}`;
20871
+ let e = n.kind === "grid" ? `grid ${mS(n.size)}` : `${n.count} ${n.kind}; gutter=${mS(n.gutter)}; offset=${mS(n.offset)}; align=${n.align}`;
20835
20872
  t.push(`- ${e}; color=${n.color}; opacity=${Math.round(n.opacity * 100)}%`);
20836
20873
  }
20837
20874
  }
20838
20875
  if (e.visualContext.measurements.length) {
20839
20876
  t.push("", "Relevant measurements");
20840
- for (let n of e.visualContext.measurements) t.push(`- ${n.targetRef ? `${n.targetRef}: ` : ""}${mS(n.rect)}; delta=${pS(n.deltaX)} × ${pS(n.deltaY)}`);
20877
+ for (let n of e.visualContext.measurements) t.push(`- ${n.targetRef ? `${n.targetRef}: ` : ""}${hS(n.rect)}; delta=${mS(n.deltaX)} × ${mS(n.deltaY)}`);
20841
20878
  }
20842
20879
  if (e.visualContext.distances.length) {
20843
20880
  t.push("", "Relevant distances");
20844
20881
  for (let n of e.visualContext.distances) {
20845
- let e = [n.targetARef, n.targetBRef].filter(Boolean).join(" → "), r = [n.horizontal ? `horizontal=${pS(n.horizontal.value)}` : null, n.vertical ? `vertical=${pS(n.vertical.value)}` : null].filter(Boolean).join("; ");
20882
+ let e = [n.targetARef, n.targetBRef].filter(Boolean).join(" → "), r = [n.horizontal ? `horizontal=${mS(n.horizontal.value)}` : null, n.vertical ? `vertical=${mS(n.vertical.value)}` : null].filter(Boolean).join("; ");
20846
20883
  t.push(`- ${e ? `${e}: ` : ""}${r || "overlapping"}`);
20847
20884
  }
20848
20885
  }
20849
20886
  return t.join("\n").trimEnd();
20850
20887
  }
20851
- function gS(e) {
20852
- let t = Qx([
20888
+ function _S(e) {
20889
+ let t = $x([
20853
20890
  ...e.regions,
20854
20891
  ...e.targets.map((e) => e.inspection.rect),
20855
20892
  ...e.visualContext.measurements.map((e) => e.rect),
@@ -20879,7 +20916,7 @@ function gS(e) {
20879
20916
  captures: n
20880
20917
  };
20881
20918
  }
20882
- var _S = (e, t, n, r, i) => {
20919
+ var vS = (e, t, n, r, i) => {
20883
20920
  !Number.isFinite(r) || !Number.isFinite(i) || Math.abs(r - i) < .01 || e.push({
20884
20921
  kind: t,
20885
20922
  label: n,
@@ -20888,16 +20925,16 @@ var _S = (e, t, n, r, i) => {
20888
20925
  delta: i - r,
20889
20926
  unit: "px"
20890
20927
  });
20891
- }, vS = (e, t, n, r) => e.push({
20928
+ }, yS = (e, t, n, r) => e.push({
20892
20929
  kind: "missing",
20893
20930
  evidence: t,
20894
20931
  id: n,
20895
20932
  label: r
20896
- }), yS = (e, t) => Math.abs(e.left - t.left) < .01 && Math.abs(e.top - t.top) < .01 && Math.abs(e.width - t.width) < .01 && Math.abs(e.height - t.height) < .01;
20897
- function bS(e) {
20933
+ }), bS = (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;
20934
+ function xS(e) {
20898
20935
  let t = e.runtime.annotation(e.annotationId);
20899
20936
  if (!t) throw Error(`Mesurer annotation not found: ${e.annotationId}`);
20900
- let n = fS({
20937
+ let n = pS({
20901
20938
  runtime: e.runtime,
20902
20939
  ownerDocument: e.ownerDocument,
20903
20940
  ownerWindow: e.ownerWindow,
@@ -20907,42 +20944,42 @@ function bS(e) {
20907
20944
  if (n.scope.kind !== "annotation") throw Error("Mesurer annotation context invariant failed.");
20908
20945
  let r = e.runtime.snapshot();
20909
20946
  if (!r) throw Error("Mesurer workspace is not ready yet.");
20910
- let i = eS({
20947
+ let i = tS({
20911
20948
  measurements: r.measurements,
20912
20949
  activeMeasurement: r.activeMeasurement
20913
20950
  }), a = [];
20914
20951
  for (let e of t.baseline.targets) {
20915
20952
  let t = n.targets.find((t) => t.ref === e.id);
20916
20953
  if (!t) {
20917
- vS(a, "target", e.id, e.selector);
20954
+ yS(a, "target", e.id, e.selector);
20918
20955
  continue;
20919
20956
  }
20920
- _S(a, "target-rect", `${t.inspection.selector} left`, e.rect.left, t.inspection.rect.left), _S(a, "target-rect", `${t.inspection.selector} top`, e.rect.top, t.inspection.rect.top), _S(a, "target-rect", `${t.inspection.selector} width`, e.rect.width, t.inspection.rect.width), _S(a, "target-rect", `${t.inspection.selector} height`, e.rect.height, t.inspection.rect.height);
20957
+ vS(a, "target-rect", `${t.inspection.selector} left`, e.rect.left, t.inspection.rect.left), vS(a, "target-rect", `${t.inspection.selector} top`, e.rect.top, t.inspection.rect.top), vS(a, "target-rect", `${t.inspection.selector} width`, e.rect.width, t.inspection.rect.width), vS(a, "target-rect", `${t.inspection.selector} height`, e.rect.height, t.inspection.rect.height);
20921
20958
  }
20922
20959
  for (let e of t.baseline.guides) {
20923
20960
  let t = n.visualContext.guides.find((t) => t.id === e.id) ?? r.guides.find((t) => t.id === e.id);
20924
20961
  if (!t) {
20925
- vS(a, "guide", e.id, `${e.orientation} guide ${e.id}`);
20962
+ yS(a, "guide", e.id, `${e.orientation} guide ${e.id}`);
20926
20963
  continue;
20927
20964
  }
20928
- _S(a, "guide", `${e.orientation} guide ${e.id}`, e.position, t.position);
20965
+ vS(a, "guide", `${e.orientation} guide ${e.id}`, e.position, t.position);
20929
20966
  }
20930
20967
  for (let e of t.baseline.measurements) {
20931
20968
  let r = n.visualContext.measurements.find((t) => t.id === e.id) ?? i.find((t) => t.id === e.id);
20932
20969
  if (!r) {
20933
- let r = t.baseline.targets.find((t) => yS(t.rect, e.rect));
20934
- r && n.targets.some((e) => e.ref === r.id) || vS(a, "measurement", e.id, e.id);
20970
+ let r = t.baseline.targets.find((t) => bS(t.rect, e.rect));
20971
+ r && n.targets.some((e) => e.ref === r.id) || yS(a, "measurement", e.id, e.id);
20935
20972
  continue;
20936
20973
  }
20937
- _S(a, "measurement", `${e.id} width`, e.rect.width, r.rect.width), _S(a, "measurement", `${e.id} height`, e.rect.height, r.rect.height);
20974
+ vS(a, "measurement", `${e.id} width`, e.rect.width, r.rect.width), vS(a, "measurement", `${e.id} height`, e.rect.height, r.rect.height);
20938
20975
  }
20939
20976
  for (let e of t.baseline.distances) {
20940
20977
  let t = n.visualContext.distances.find((t) => t.id === e.id) ?? r.heldDistances.find((t) => t.id === e.id);
20941
20978
  if (!t) {
20942
- vS(a, "distance", e.id, e.id);
20979
+ yS(a, "distance", e.id, e.id);
20943
20980
  continue;
20944
20981
  }
20945
- e.horizontal && t.horizontal ? _S(a, "distance", `${e.id} horizontal`, e.horizontal.value, t.horizontal.value) : e.horizontal && !t.horizontal && vS(a, "distance", e.id, `${e.id} horizontal`), e.vertical && t.vertical ? _S(a, "distance", `${e.id} vertical`, e.vertical.value, t.vertical.value) : e.vertical && !t.vertical && vS(a, "distance", e.id, `${e.id} vertical`);
20982
+ e.horizontal && t.horizontal ? vS(a, "distance", `${e.id} horizontal`, e.horizontal.value, t.horizontal.value) : e.horizontal && !t.horizontal && yS(a, "distance", e.id, `${e.id} horizontal`), e.vertical && t.vertical ? vS(a, "distance", `${e.id} vertical`, e.vertical.value, t.vertical.value) : e.vertical && !t.vertical && yS(a, "distance", e.id, `${e.id} vertical`);
20946
20983
  }
20947
20984
  return {
20948
20985
  schema: "mesurer.review/v1",
@@ -20954,7 +20991,7 @@ function bS(e) {
20954
20991
  changes: a
20955
20992
  };
20956
20993
  }
20957
- async function xS(e, t, n) {
20994
+ async function SS(e, t, n) {
20958
20995
  try {
20959
20996
  if (t.navigator.clipboard?.writeText) {
20960
20997
  await t.navigator.clipboard.writeText(n);
@@ -20968,43 +21005,43 @@ async function xS(e, t, n) {
20968
21005
  }
20969
21006
  //#endregion
20970
21007
  //#region src/layout-guides.ts
20971
- var SS = Kv, CS = qv, wS = () => ({
21008
+ var CS = Kv, wS = qv, TS = () => ({
20972
21009
  ...yy(),
20973
- version: Kx
20974
- }), TS = "mesurer.context", ES = "context:v1", DS = "mesurer.context.settings", OS = "context.ui", kS = "data-mesurer-direct-text-edit-active", AS = {
21010
+ version: qx
21011
+ }), ES = "mesurer.context", DS = "context:v1", OS = "mesurer.context.settings", kS = "context.ui", AS = "data-mesurer-direct-text-edit-active", jS = {
20975
21012
  viewBox: "0 0 256 256",
20976
21013
  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"]
20977
- }, jS = {
21014
+ }, MS = {
20978
21015
  viewBox: "0 0 256 256",
20979
21016
  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"]
20980
- }, MS = {
21017
+ }, NS = {
20981
21018
  viewBox: "0 0 256 256",
20982
21019
  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"]
20983
- }, NS = async (e, t, n = 1) => {
21020
+ }, PS = async (e, t, n = 1) => {
20984
21021
  await e.fonts?.ready;
20985
21022
  for (let e = 0; e < Math.max(1, n); e += 1) await new Promise((e) => t.requestAnimationFrame(() => e()));
20986
- }, PS = (e, t, n, r) => {
20987
- let i = async (i) => fS({
21023
+ }, FS = (e, t, n, r) => {
21024
+ let i = async (i) => pS({
20988
21025
  runtime: e,
20989
21026
  ownerDocument: t,
20990
21027
  ownerWindow: n,
20991
21028
  request: i,
20992
21029
  layoutGuides: r()
20993
- }), a = async (e) => hS(await i(e));
21030
+ }), a = async (e) => gS(await i(e));
20994
21031
  return {
20995
21032
  context: i,
20996
21033
  contextText: a,
20997
- copyContext: async (e) => xS(t, n, await a(e)),
21034
+ copyContext: async (e) => SS(t, n, await a(e)),
20998
21035
  select: async (r) => {
20999
21036
  let a = Array.isArray(r) ? [...r] : [String(r)];
21000
- return e.select(a), await NS(t, n), i({ scope: "selection" });
21037
+ return e.select(a), await PS(t, n), i({ scope: "selection" });
21001
21038
  },
21002
21039
  annotations: async () => e.annotations(),
21003
21040
  removeAnnotation: async (r) => {
21004
- e.removeAnnotation(r), await NS(t, n);
21041
+ e.removeAnnotation(r), await PS(t, n);
21005
21042
  },
21006
21043
  review: async (i) => {
21007
- if (await NS(t, n), i) return bS({
21044
+ if (await PS(t, n), i) return xS({
21008
21045
  runtime: e,
21009
21046
  ownerDocument: t,
21010
21047
  ownerWindow: n,
@@ -21012,7 +21049,7 @@ var SS = Kv, CS = qv, wS = () => ({
21012
21049
  layoutGuides: r()
21013
21050
  });
21014
21051
  let a = r();
21015
- return e.annotations().map((r) => bS({
21052
+ return e.annotations().map((r) => xS({
21016
21053
  runtime: e,
21017
21054
  ownerDocument: t,
21018
21055
  ownerWindow: n,
@@ -21020,38 +21057,38 @@ var SS = Kv, CS = qv, wS = () => ({
21020
21057
  layoutGuides: a
21021
21058
  }));
21022
21059
  },
21023
- capturePlan: async (e) => gS(await i(e)),
21060
+ capturePlan: async (e) => _S(await i(e)),
21024
21061
  prepareCapture: async () => {
21025
- e.prepareCapture(), await NS(t, n);
21062
+ e.prepareCapture(), await PS(t, n);
21026
21063
  },
21027
21064
  finishCapture: async () => {
21028
- e.finishCapture(), await NS(t, n);
21065
+ e.finishCapture(), await PS(t, n);
21029
21066
  }
21030
21067
  };
21031
- }, FS = (e) => {
21068
+ }, IS = (e) => {
21032
21069
  let t = e.currentSelection();
21033
21070
  return t.elements.length > 0 || t.region !== null;
21034
21071
  };
21035
- function IS(e = {}) {
21072
+ function LS(e = {}) {
21036
21073
  return {
21037
- id: TS,
21038
- version: Kx,
21074
+ id: ES,
21075
+ version: qx,
21039
21076
  requires: ["runtime:solid"],
21040
- provides: [ES],
21077
+ provides: [DS],
21041
21078
  setup(t) {
21042
21079
  let n = t.service.get("runtime:solid");
21043
21080
  if (!n) throw Error("Mesurer context plugin requires the renderer runtime service.");
21044
- let r = n.createWorkspaceRuntime(TS), i = PS(r, n.ownerDocument, n.ownerWindow, () => t.service.get(CS)?.list() ?? []);
21045
- t.service.provide(ES, i), t.state.register({
21046
- id: DS,
21081
+ let r = n.createWorkspaceRuntime(ES), i = FS(r, n.ownerDocument, n.ownerWindow, () => t.service.get(wS)?.list() ?? []);
21082
+ t.service.provide(DS, i), t.state.register({
21083
+ id: OS,
21047
21084
  initial: { ui: e.ui ?? !0 },
21048
21085
  persist: !0
21049
21086
  }), t.state.register({
21050
- id: OS,
21051
- initial: { hasSelection: FS(r) }
21087
+ id: kS,
21088
+ initial: { hasSelection: IS(r) }
21052
21089
  });
21053
- let a = () => t.state.get("mesurer.context.settings")?.ui ?? !0, o = () => t.state.get(OS)?.hasSelection === !0, s = (e) => {
21054
- t.state.update(DS, (t) => ({
21090
+ let a = () => t.state.get("mesurer.context.settings")?.ui ?? !0, o = () => t.state.get(kS)?.hasSelection === !0, s = (e) => {
21091
+ t.state.update(OS, (t) => ({
21055
21092
  ...t,
21056
21093
  ui: e
21057
21094
  }));
@@ -21065,12 +21102,12 @@ function IS(e = {}) {
21065
21102
  region: e.region ? { ...e.region } : null
21066
21103
  }, r.selectGestureActive() ? c?.abandonNoteComposer() : n && c?.closeNoteComposer();
21067
21104
  let i = e.elements.length > 0 || e.region !== null;
21068
- i !== (t.state.get(OS)?.hasSelection ?? !1) && t.state.update(OS, () => ({ hasSelection: i }));
21105
+ i !== (t.state.get(kS)?.hasSelection ?? !1) && t.state.update(kS, () => ({ hasSelection: i }));
21069
21106
  });
21070
21107
  t.command.register("context.copy", () => i.copyContext()), t.command.register("context.copy-selection", () => i.copyContext({ scope: "selection" }));
21071
21108
  let g = () => {
21072
21109
  let e = u?.element;
21073
- e && (n.rendererRoot?.hasAttribute(kS) ? e.setAttribute(kS, "true") : e.removeAttribute(kS));
21110
+ e && (n.rendererRoot?.hasAttribute(AS) ? e.setAttribute(AS, "true") : e.removeAttribute(AS));
21074
21111
  }, _ = () => {
21075
21112
  d?.disconnect(), d = null, c = null, l?.(), l = null, u?.dispose(), u = null;
21076
21113
  }, v = () => {
@@ -21079,7 +21116,7 @@ function IS(e = {}) {
21079
21116
  let e = new n.ownerWindow.MutationObserver(g);
21080
21117
  d = e, e.observe(n.rendererRoot, {
21081
21118
  attributes: !0,
21082
- attributeFilter: [kS]
21119
+ attributeFilter: [AS]
21083
21120
  }), g();
21084
21121
  }
21085
21122
  let e = {
@@ -21103,7 +21140,7 @@ function IS(e = {}) {
21103
21140
  command: "context.copy",
21104
21141
  order: 70,
21105
21142
  toolbarMode: "always",
21106
- icon: AS,
21143
+ icon: jS,
21107
21144
  hidden: () => !a()
21108
21145
  }), t.tool.register({
21109
21146
  id: "context.copy-selection",
@@ -21112,7 +21149,7 @@ function IS(e = {}) {
21112
21149
  command: "context.copy-selection",
21113
21150
  order: 71,
21114
21151
  toolbarMode: "always",
21115
- icon: jS,
21152
+ icon: MS,
21116
21153
  hidden: () => !a(),
21117
21154
  disabled: () => !o()
21118
21155
  }), t.tool.register({
@@ -21122,7 +21159,7 @@ function IS(e = {}) {
21122
21159
  command: "context.add-note",
21123
21160
  order: 72,
21124
21161
  toolbarMode: "always",
21125
- icon: MS,
21162
+ icon: NS,
21126
21163
  hidden: () => !a(),
21127
21164
  disabled: () => !o()
21128
21165
  }), t.settings.register({
@@ -21145,7 +21182,7 @@ function IS(e = {}) {
21145
21182
  }
21146
21183
  //#endregion
21147
21184
  //#region src/host-layer.ts
21148
- var LS = {
21185
+ var RS = {
21149
21186
  display: "block",
21150
21187
  position: "fixed",
21151
21188
  inset: "0",
@@ -21187,48 +21224,48 @@ var LS = {
21187
21224
  "letter-spacing": "normal",
21188
21225
  direction: "ltr"
21189
21226
  };
21190
- function RS(e) {
21191
- for (let [t, n] of Object.entries(LS)) e.style.setProperty(t, n, "important");
21192
- }
21193
21227
  function zS(e) {
21228
+ for (let [t, n] of Object.entries(RS)) e.style.setProperty(t, n, "important");
21229
+ }
21230
+ function BS(e) {
21194
21231
  return "popover" in e && "showPopover" in e && typeof e.showPopover == "function" && "hidePopover" in e && typeof e.hidePopover == "function";
21195
21232
  }
21196
- var BS = (e) => "newState" in e, VS = (e) => e.localName === "dialog";
21197
- function HS(e) {
21198
- if (!VS(e) || !e.open) return !1;
21233
+ var VS = (e) => "newState" in e, HS = (e) => e.localName === "dialog";
21234
+ function US(e) {
21235
+ if (!HS(e) || !e.open) return !1;
21199
21236
  try {
21200
21237
  return e.matches(":modal");
21201
21238
  } catch {
21202
21239
  return !1;
21203
21240
  }
21204
21241
  }
21205
- function US(e, t, n = !0) {
21206
- RS(e);
21242
+ function WS(e, t, n = !0) {
21243
+ zS(e);
21207
21244
  let r = e.ownerDocument, i = r.defaultView ?? window, a = t, o = !1, s = "fixed", c = !1, l = 0, u = [];
21208
- if (n && zS(e) && (e.popover = "manual"), t.append(e), n && zS(e)) try {
21245
+ if (n && BS(e) && (e.popover = "manual"), t.append(e), n && BS(e)) try {
21209
21246
  e.showPopover(), c = e.matches(":popover-open"), c && (s = "top-layer");
21210
21247
  } catch {
21211
21248
  e.removeAttribute("popover");
21212
21249
  }
21213
21250
  let d = () => {
21214
- if (!(!c || !zS(e))) try {
21251
+ if (!(!c || !BS(e))) try {
21215
21252
  e.matches(":popover-open") || e.showPopover();
21216
21253
  } catch {}
21217
21254
  }, f = (t) => {
21218
21255
  if (e.parentNode === t) return;
21219
- let n = c && zS(e) && e.matches(":popover-open");
21220
- if (n && zS(e)) try {
21256
+ let n = c && BS(e) && e.matches(":popover-open");
21257
+ if (n && BS(e)) try {
21221
21258
  e.hidePopover();
21222
21259
  } catch {}
21223
- t.append(e), RS(e), n && d();
21260
+ t.append(e), zS(e), n && d();
21224
21261
  }, p = () => {
21225
- u = u.filter((e) => e.isConnected && HS(e)), f(u.at(-1) ?? a);
21262
+ u = u.filter((e) => e.isConnected && US(e)), f(u.at(-1) ?? a);
21226
21263
  }, m = (e) => {
21227
21264
  u = u.filter((t) => t !== e), u.push(e), p();
21228
21265
  }, h = (e) => {
21229
21266
  u = u.filter((t) => t !== e), p();
21230
21267
  }, g = () => {
21231
- if (!(o || !c || !zS(e))) try {
21268
+ if (!(o || !c || !BS(e))) try {
21232
21269
  e.matches(":popover-open") && e.hidePopover(), e.showPopover();
21233
21270
  } catch {}
21234
21271
  }, _ = () => {
@@ -21237,27 +21274,27 @@ function US(e, t, n = !0) {
21237
21274
  }));
21238
21275
  }, v = (t) => {
21239
21276
  if (!c || t.target === e) return;
21240
- let n = BS(t) ? t.newState : void 0, r = t.target;
21277
+ let n = VS(t) ? t.newState : void 0, r = t.target;
21241
21278
  if (r instanceof i.Element) {
21242
- if (VS(r)) {
21243
- n === "open" && HS(r) ? (m(r), _()) : n === "closed" ? h(r) : n === "open" && _();
21279
+ if (HS(r)) {
21280
+ n === "open" && US(r) ? (m(r), _()) : n === "closed" ? h(r) : n === "open" && _();
21244
21281
  return;
21245
21282
  }
21246
21283
  n === "open" && r.hasAttribute("popover") && _();
21247
21284
  }
21248
21285
  }, y = (e) => {
21249
21286
  let t = e.target;
21250
- t instanceof i.Element && VS(t) && h(t);
21287
+ t instanceof i.Element && HS(t) && h(t);
21251
21288
  }, b = () => {
21252
21289
  r.fullscreenElement && _();
21253
21290
  }, x = (e) => {
21254
- HS(e) && m(e);
21255
- for (let t of e.querySelectorAll("dialog")) HS(t) && m(t);
21291
+ US(e) && m(e);
21292
+ for (let t of e.querySelectorAll("dialog")) US(t) && m(t);
21256
21293
  }, S = new i.MutationObserver((e) => {
21257
21294
  if (c) for (let t of e) {
21258
21295
  if (t.type === "attributes") {
21259
21296
  let e = t.target;
21260
- e instanceof i.Element && VS(e) && (HS(e) ? m(e) : h(e));
21297
+ e instanceof i.Element && HS(e) && (US(e) ? m(e) : h(e));
21261
21298
  }
21262
21299
  for (let e of t.addedNodes) e instanceof i.Element && x(e);
21263
21300
  u.some((e) => !e.isConnected) && p();
@@ -21273,7 +21310,7 @@ function US(e, t, n = !0) {
21273
21310
  bringToFront: g,
21274
21311
  dispose() {
21275
21312
  if (!o) {
21276
- if (o = !0, l && i.cancelAnimationFrame(l), r.removeEventListener("toggle", v, !0), r.removeEventListener("close", y, !0), r.removeEventListener("fullscreenchange", b, !0), S.disconnect(), c && zS(e) && e.matches(":popover-open")) try {
21313
+ 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 && BS(e) && e.matches(":popover-open")) try {
21277
21314
  e.hidePopover();
21278
21315
  } catch {}
21279
21316
  u = [];
@@ -21283,28 +21320,28 @@ function US(e, t, n = !0) {
21283
21320
  }
21284
21321
  //#endregion
21285
21322
  //#region src/plugins/codex/index.ts
21286
- var WS = "mesurer.codex", GS = "codex:v1", KS = "mesurer.plugin.before-disable", qS = 2e3, JS = 750, YS = 1800, XS = 2e3, ZS = 12e4, QS = 10, $S = 5, eC = "Codex host connection is unavailable. Electron apps must expose window.__MESURER_HOST__.codexBridge from preload.", tC = [
21323
+ var GS = "mesurer.codex", KS = "codex:v1", qS = "mesurer.plugin.before-disable", JS = 2e3, YS = 750, XS = 1800, ZS = 2e3, QS = 12e4, $S = 10, eC = 5, tC = "Codex host connection is unavailable. Electron apps must expose window.__MESURER_HOST__.codexBridge from preload.", nC = [
21287
21324
  "Implement the current human feedback from Mesurer in this project.",
21288
21325
  "Treat the rendered page as the source of truth, preserve unrelated Mesurer review state,",
21289
21326
  "and verify the affected UI in the live page with Mesurer before claiming completion."
21290
- ].join(" "), nC = {
21327
+ ].join(" "), rC = {
21291
21328
  viewBox: "0 0 256 256",
21292
21329
  paths: ["M224,48,32,120l88,32,32,88Z M120,152l104-104"]
21293
- }, rC = {
21330
+ }, iC = {
21294
21331
  viewBox: "0 0 256 256",
21295
21332
  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"]
21296
- }, iC = {
21333
+ }, aC = {
21297
21334
  viewBox: "0 0 256 256",
21298
21335
  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"]
21299
- }, aC = () => {
21336
+ }, oC = () => {
21300
21337
  try {
21301
21338
  let e = globalThis.location;
21302
21339
  return e?.origin ? `mesurer-codex-ui:v2:${e.origin}${e.pathname}` : null;
21303
21340
  } catch {
21304
21341
  return null;
21305
21342
  }
21306
- }, oC = () => {
21307
- let e = aC();
21343
+ }, sC = () => {
21344
+ let e = oC();
21308
21345
  if (!e) return null;
21309
21346
  try {
21310
21347
  let t = globalThis.sessionStorage?.getItem(e);
@@ -21329,18 +21366,18 @@ var WS = "mesurer.codex", GS = "codex:v1", KS = "mesurer.plugin.before-disable",
21329
21366
  } catch {
21330
21367
  return null;
21331
21368
  }
21332
- }, sC = (e) => {
21333
- let t = aC();
21369
+ }, cC = (e) => {
21370
+ let t = oC();
21334
21371
  if (t) try {
21335
21372
  globalThis.sessionStorage?.setItem(t, JSON.stringify(e));
21336
21373
  } catch {}
21337
- }, cC = async (e) => {
21374
+ }, lC = async (e) => {
21338
21375
  let t = window.__MESURER_HOST__?.codexBridge;
21339
- if (!t) throw Error(eC);
21376
+ if (!t) throw Error(tC);
21340
21377
  let n = await t(e);
21341
21378
  if (n.ok === !1) throw Error(n.error ?? "Codex Bridge request failed.");
21342
21379
  return n;
21343
- }, lC = (e) => {
21380
+ }, uC = (e) => {
21344
21381
  let t = e.runtime;
21345
21382
  return !t || ![
21346
21383
  "shared",
@@ -21358,10 +21395,10 @@ var WS = "mesurer.codex", GS = "codex:v1", KS = "mesurer.plugin.before-disable",
21358
21395
  available: t.available === !0,
21359
21396
  reason: t.reason
21360
21397
  };
21361
- }, uC = (e) => ({
21398
+ }, dC = (e) => ({
21362
21399
  thread: e.thread?.trim() || null,
21363
21400
  threads: Array.isArray(e.threads) ? e.threads.filter((e) => e.trim().length > 0) : []
21364
- }), dC = (e) => {
21401
+ }), fC = (e) => {
21365
21402
  let t = e.deliveryId?.trim(), n = e.thread?.trim(), r = e.status;
21366
21403
  if (!t || !n || !r) throw Error("Codex Bridge returned an invalid delivery state.");
21367
21404
  let i = {
@@ -21373,7 +21410,7 @@ var WS = "mesurer.codex", GS = "codex:v1", KS = "mesurer.plugin.before-disable",
21373
21410
  updatedAt: Number.isFinite(e.updatedAt) ? Number(e.updatedAt) : 0
21374
21411
  };
21375
21412
  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;
21376
- }, fC = (e) => ({
21413
+ }, pC = (e) => ({
21377
21414
  thread: e.thread?.trim() || null,
21378
21415
  threads: Array.isArray(e.threadDetails) ? e.threadDetails.flatMap((e) => {
21379
21416
  let t = e.id?.trim() ?? "";
@@ -21385,7 +21422,7 @@ var WS = "mesurer.codex", GS = "codex:v1", KS = "mesurer.plugin.before-disable",
21385
21422
  }] : [];
21386
21423
  }) : [],
21387
21424
  hasMore: e.hasMore === !0
21388
- }), pC = async (e, t, n) => {
21425
+ }), mC = async (e, t, n) => {
21389
21426
  let r = t?.instruction?.trim() || n, i = await e.annotations(), a = t?.annotationIds, o = a ? a.flatMap((e) => {
21390
21427
  let t = i.find((t) => t.id === e);
21391
21428
  return t ? [t] : [];
@@ -21408,18 +21445,18 @@ var WS = "mesurer.codex", GS = "codex:v1", KS = "mesurer.plugin.before-disable",
21408
21445
  ])
21409
21446
  ].join("\n").trimEnd()
21410
21447
  };
21411
- }, mC = (e) => e.length > 16 ? `${e.slice(0, 8)}…${e.slice(-4)}` : e, hC = (e, t = 42) => e.length > t ? `${e.slice(0, t - 1)}…` : e, gC = (e) => e instanceof Error && (e.message === eC || e.message === "Codex Bridge is unavailable in this host." || e.message.includes("Codex Bridge lease"));
21412
- function _C(e = {}) {
21413
- let t = e.instruction?.trim() || tC, n = e.ui ?? !0, r = e.clearCompletedAnnotations ?? !0;
21448
+ }, hC = (e) => e.length > 16 ? `${e.slice(0, 8)}…${e.slice(-4)}` : e, gC = (e, t = 42) => e.length > t ? `${e.slice(0, t - 1)}…` : e, _C = (e) => e instanceof Error && (e.message === tC || e.message === "Codex Bridge is unavailable in this host." || e.message.includes("Codex Bridge lease"));
21449
+ function vC(e = {}) {
21450
+ let t = e.instruction?.trim() || nC, n = e.ui ?? !0, r = e.clearCompletedAnnotations ?? !0;
21414
21451
  return {
21415
- id: WS,
21416
- version: Kx,
21417
- requires: [ES],
21418
- provides: [GS],
21452
+ id: GS,
21453
+ version: qx,
21454
+ requires: [DS],
21455
+ provides: [KS],
21419
21456
  async setup(e) {
21420
- let i = e.service.get(ES);
21457
+ let i = e.service.get(DS);
21421
21458
  if (!i) throw Error("Mesurer Codex plugin requires context() from mesurer-solid/plugins.");
21422
- let a = n ? oC() : null, o = "unknown", s = null, c = !1, l = a?.originThread ?? null, u = a?.selectedThread ?? a?.originThread ?? null, d = !1, f = null, p = [], m = [], h = !1, g = $S, _, v = "", y = null, b = a?.delivery ? {
21459
+ let a = n ? sC() : 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 = eC, _, v = "", y = null, b = a?.delivery ? {
21423
21460
  id: a.delivery.id,
21424
21461
  thread: a.delivery.thread,
21425
21462
  status: a.delivery.status,
@@ -21428,38 +21465,38 @@ function _C(e = {}) {
21428
21465
  dispatch: a.delivery.dispatch ?? null,
21429
21466
  dispatchError: a.delivery.dispatchError ?? null
21430
21467
  } : null, x = 0, S = 0, C = null, w = !1, T = null, E = async (e) => {
21431
- if (e.action === "activate" || e.action === "runtime") return cC(e);
21468
+ if (e.action === "activate" || e.action === "runtime") return lC(e);
21432
21469
  if (!T) throw Error("Codex Bridge lease is not active for this plugin.");
21433
- return cC({
21470
+ return lC({
21434
21471
  ...e,
21435
21472
  leaseId: T
21436
21473
  });
21437
21474
  }, D = async () => {
21438
21475
  let e = T;
21439
21476
  if (e) {
21440
- if ((await cC({
21477
+ if ((await lC({
21441
21478
  action: "deactivate",
21442
21479
  leaseId: e
21443
21480
  })).released !== !0) throw Error("Codex Bridge did not confirm lease release.");
21444
21481
  T = null;
21445
21482
  }
21446
- }, O = await cC({
21483
+ }, O = await lC({
21447
21484
  action: "activate",
21448
21485
  thread: u ?? l ?? void 0
21449
21486
  }), k = O.leaseId?.trim();
21450
21487
  if (!k) throw Error("Codex Bridge did not return an activation lease.");
21451
- T = k, o = "available", s = lC(O);
21452
- let A = uC(O);
21488
+ T = k, o = "available", s = uC(O);
21489
+ let A = dC(O);
21453
21490
  c = !0, f = A.thread, p = A.threads, e.lifecycle.onDispose(() => {
21454
21491
  T && D().catch((e) => {
21455
21492
  let t = e instanceof Error ? e.message : String(e);
21456
21493
  console.error(`[Mesurer] Failed to release Codex host lease: ${t}`);
21457
21494
  });
21458
- }), e.hook.on(KS, async (e) => {
21495
+ }), e.hook.on(qS, async (e) => {
21459
21496
  e === "mesurer.codex" && await D();
21460
21497
  });
21461
21498
  let j = async () => {
21462
- let e = lC(await E({ action: "runtime" }));
21499
+ let e = uC(await E({ action: "runtime" }));
21463
21500
  if (!e) throw Error("Codex Bridge returned an invalid runtime state.");
21464
21501
  return s = e, e;
21465
21502
  }, M = async () => {
@@ -21467,8 +21504,8 @@ function _C(e = {}) {
21467
21504
  action: "health",
21468
21505
  thread: u ?? l ?? void 0
21469
21506
  });
21470
- return s = lC(e) ?? s, uC(e);
21471
- }, N = M, P = async (e) => dC(await E({
21507
+ return s = uC(e) ?? s, dC(e);
21508
+ }, N = M, P = async (e) => fC(await E({
21472
21509
  action: "delivery",
21473
21510
  deliveryId: e
21474
21511
  })), F = async (e) => {
@@ -21478,13 +21515,13 @@ function _C(e = {}) {
21478
21515
  deliveryId: e.id,
21479
21516
  thread: e.thread
21480
21517
  };
21481
- return e.queuedSubmissionId && (t.queuedSubmissionId = e.queuedSubmissionId), dC(await E(t));
21518
+ return e.queuedSubmissionId && (t.queuedSubmissionId = e.queuedSubmissionId), fC(await E(t));
21482
21519
  }, I = async (e = {}) => {
21483
21520
  let t = {
21484
21521
  action: "threads",
21485
- limit: e.limit ?? QS
21522
+ limit: e.limit ?? $S
21486
21523
  }, n = e.thread?.trim();
21487
- return n && (t.thread = n), fC(await E(t));
21524
+ return n && (t.thread = n), pC(await E(t));
21488
21525
  }, L = () => u ?? l ?? (d ? null : f), R = () => {
21489
21526
  if (!n) return;
21490
21527
  let e = b?.id && (b.status === "queued" || b.status === "working" || b.status === "interrupted") ? {
@@ -21496,7 +21533,7 @@ function _C(e = {}) {
21496
21533
  dispatch: b.dispatch,
21497
21534
  dispatchError: b.dispatchError
21498
21535
  } : null;
21499
- sC({
21536
+ cC({
21500
21537
  version: 1,
21501
21538
  originThread: l,
21502
21539
  selectedThread: u,
@@ -21514,12 +21551,12 @@ function _C(e = {}) {
21514
21551
  "queueing",
21515
21552
  "queued",
21516
21553
  "working"
21517
- ].includes(b.status) ? rC : b.status === "completed" ? iC : nC : nC, ee = () => {
21554
+ ].includes(b.status) ? iC : b.status === "completed" ? aC : rC : rC, ee = () => {
21518
21555
  let e = [], t = /* @__PURE__ */ new Set(), n = (n) => {
21519
21556
  t.has(n.id) || (t.add(n.id), e.push(n));
21520
21557
  }, r = (e) => ({
21521
21558
  id: e,
21522
- title: `Codex ${mC(e)}`,
21559
+ title: `Codex ${hC(e)}`,
21523
21560
  updatedAt: null,
21524
21561
  connected: !0
21525
21562
  });
@@ -21547,7 +21584,7 @@ function _C(e = {}) {
21547
21584
  let t = e.id === l ? "Current · " : e.connected ? "Loaded · " : "", r = b?.thread === e.id ? ` · ${V(b.status)}` : "";
21548
21585
  return {
21549
21586
  id: `codex.thread.${e.id}`,
21550
- label: `${t}${hC(e.title)}${r}`,
21587
+ label: `${t}${gC(e.title)}${r}`,
21551
21588
  checked: () => n === e.id,
21552
21589
  disabled: () => B(),
21553
21590
  run() {
@@ -21555,15 +21592,15 @@ function _C(e = {}) {
21555
21592
  }
21556
21593
  };
21557
21594
  });
21558
- return g < QS && (e.length > g || h) && r.push({
21595
+ return g < $S && (e.length > g || h) && r.push({
21559
21596
  id: "codex.thread.show-more",
21560
21597
  label: "Show 5 more…",
21561
21598
  run() {
21562
- g = QS, W();
21599
+ g = $S, W();
21563
21600
  }
21564
21601
  }), b?.queuedSubmissionId && b.status === "queued" && (b.dispatch === "desktop-opened" || b.dispatch === "desktop-wake-failed") && r.push({
21565
21602
  id: "codex.delivery.receipt",
21566
- label: `Receipt · ${mC(b.queuedSubmissionId)}`,
21603
+ label: `Receipt · ${hC(b.queuedSubmissionId)}`,
21567
21604
  disabled: () => !0,
21568
21605
  run: () => void 0
21569
21606
  }), r;
@@ -21597,10 +21634,10 @@ function _C(e = {}) {
21597
21634
  items: r
21598
21635
  } : void 0
21599
21636
  }));
21600
- }, re = async (e) => {
21637
+ }, G = async (e) => {
21601
21638
  if (o !== "available") return;
21602
21639
  let t = await I({
21603
- limit: QS,
21640
+ limit: $S,
21604
21641
  thread: e ?? void 0
21605
21642
  });
21606
21643
  m = t.threads, h = t.hasMore, p = t.threads.filter((e) => e.connected).map((e) => e.id), f = t.thread;
@@ -21608,7 +21645,7 @@ function _C(e = {}) {
21608
21645
  te = (e = !1) => w || o === "unknown" && !e ? Promise.resolve() : y || (y = (async () => {
21609
21646
  try {
21610
21647
  let e = await N();
21611
- o = "available", c = !0, f = e.thread, await re(u ?? l ?? e.thread);
21648
+ o = "available", c = !0, f = e.thread, await G(u ?? l ?? e.thread);
21612
21649
  let t = u ?? l;
21613
21650
  t && p.includes(t) ? d = !1 : p.length === 1 ? z(p[0], !0) : d = !0, !d && t && R();
21614
21651
  } catch (e) {
@@ -21617,12 +21654,12 @@ function _C(e = {}) {
21617
21654
  y = null, W();
21618
21655
  }
21619
21656
  })(), y);
21620
- let ie = () => {
21657
+ let re = () => {
21621
21658
  x &&= (globalThis.clearTimeout(x), 0), S &&= (globalThis.clearTimeout(S), 0);
21622
- }, G = () => {
21659
+ }, ie = () => {
21623
21660
  S && globalThis.clearTimeout(S), S = globalThis.setTimeout(() => {
21624
21661
  S = 0, b?.status === "completed" && (b = null, R(), W());
21625
- }, YS);
21662
+ }, XS);
21626
21663
  }, ae = async (e) => {
21627
21664
  if (!(!b || b.id !== e.id)) {
21628
21665
  if (b = {
@@ -21638,20 +21675,20 @@ function _C(e = {}) {
21638
21675
  }
21639
21676
  if (e.status === "completed") {
21640
21677
  if (r) for (let e of b.annotationIds) await i.removeAnnotation(e);
21641
- R(), W(), G();
21678
+ R(), W(), ie();
21642
21679
  return;
21643
21680
  }
21644
21681
  if (e.status === "interrupted") {
21645
21682
  R(), W();
21646
21683
  let t = e.updatedAt > 0 ? e.updatedAt : Date.now();
21647
- Date.now() - t < ZS && (x = globalThis.setTimeout(() => {
21684
+ Date.now() - t < QS && (x = globalThis.setTimeout(() => {
21648
21685
  x = 0, oe(e.id);
21649
- }, XS));
21686
+ }, ZS));
21650
21687
  return;
21651
21688
  }
21652
21689
  W(), x = globalThis.setTimeout(() => {
21653
21690
  x = 0, oe(e.id);
21654
- }, JS);
21691
+ }, YS);
21655
21692
  }
21656
21693
  }, oe = async (e) => {
21657
21694
  if (!(w || b?.id !== e)) try {
@@ -21675,7 +21712,7 @@ function _C(e = {}) {
21675
21712
  b = {
21676
21713
  ...b,
21677
21714
  status: "failed"
21678
- }, R(), gC(n) && (o = "unavailable"), W();
21715
+ }, R(), _C(n) && (o = "unavailable"), W();
21679
21716
  }
21680
21717
  }, se = {
21681
21718
  health: M,
@@ -21687,11 +21724,11 @@ function _C(e = {}) {
21687
21724
  let n = await E({
21688
21725
  action: "target",
21689
21726
  thread: t
21690
- }), r = uC(n);
21691
- return s = lC(n) ?? s, z(t, !l), f = r.thread, p = r.threads, o = "available", c = !0, W(), r;
21727
+ }), r = dC(n);
21728
+ return s = uC(n) ?? s, z(t, !l), f = r.thread, p = r.threads, o = "available", c = !0, W(), r;
21692
21729
  },
21693
21730
  async queue(e) {
21694
- let r = await pC(i, e, t), a = e?.thread?.trim(), s = a || (n ? L() : null);
21731
+ let r = await mC(i, e, t), a = e?.thread?.trim(), s = a || (n ? L() : null);
21695
21732
  if (n && !a && (d || !s)) throw Error("Choose a Codex thread before queueing feedback.");
21696
21733
  let c = { message: r.message };
21697
21734
  s && (c.thread = s);
@@ -21711,16 +21748,16 @@ function _C(e = {}) {
21711
21748
  };
21712
21749
  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;
21713
21750
  } catch (e) {
21714
- throw n && gC(e) && (o = "unavailable", W()), e;
21751
+ throw n && _C(e) && (o = "unavailable", W()), e;
21715
21752
  }
21716
21753
  },
21717
21754
  send(e) {
21718
21755
  return se.queue(e);
21719
21756
  }
21720
21757
  };
21721
- e.service.provide(GS, se);
21758
+ e.service.provide(KS, se);
21722
21759
  let ce = async () => {
21723
- if (!(C || B())) return ie(), b = {
21760
+ if (!(C || B())) return re(), b = {
21724
21761
  id: null,
21725
21762
  thread: L(),
21726
21763
  status: "queueing",
@@ -21749,9 +21786,9 @@ function _C(e = {}) {
21749
21786
  updatedAt: 0
21750
21787
  }) : x = globalThis.setTimeout(() => {
21751
21788
  x = 0, oe(e.deliveryId);
21752
- }, JS) : S = globalThis.setTimeout(() => {
21789
+ }, YS) : S = globalThis.setTimeout(() => {
21753
21790
  S = 0, b?.id === null && b?.status === "queued" && (b = null, R(), W());
21754
- }, YS);
21791
+ }, XS);
21755
21792
  } catch (e) {
21756
21793
  b = null, R(), W();
21757
21794
  let t = e instanceof Error ? e.message : String(e);
@@ -21779,9 +21816,9 @@ function _C(e = {}) {
21779
21816
  }, 0));
21780
21817
  let t = globalThis.setInterval(() => {
21781
21818
  c && te().catch(() => void 0);
21782
- }, qS);
21819
+ }, JS);
21783
21820
  e.lifecycle.onDispose(() => {
21784
- w = !0, ie(), globalThis.clearInterval(t), _?.dispose(), _ = void 0;
21821
+ w = !0, re(), globalThis.clearInterval(t), _?.dispose(), _ = void 0;
21785
21822
  });
21786
21823
  }
21787
21824
  }
@@ -21789,66 +21826,66 @@ function _C(e = {}) {
21789
21826
  }
21790
21827
  //#endregion
21791
21828
  //#region src/recording.ts
21792
- var vC = hb, yC = (e = {}) => ({
21793
- ...Lb(e),
21794
- version: Kx
21795
- }), bC = Yb, xC = (e = {}) => ({
21796
- ...hx(e),
21797
- version: Kx
21798
- }), SC = () => globalThis.window?.__MESURER_HOST__?.codexBridge !== void 0, CC = [
21829
+ var yC = gb, bC = (e = {}) => ({
21830
+ ...Rb(e),
21831
+ version: qx
21832
+ }), xC = Xb, SC = (e = {}) => ({
21833
+ ...gx(e),
21834
+ version: qx
21835
+ }), CC = () => globalThis.window?.__MESURER_HOST__?.codexBridge !== void 0, wC = [
21799
21836
  {
21800
- id: TS,
21837
+ id: ES,
21801
21838
  label: "Context",
21802
21839
  order: 30,
21803
- create: IS,
21840
+ create: LS,
21804
21841
  settingsIds: ["context"],
21805
21842
  hiddenSettingsControlIds: ["ui"]
21806
21843
  },
21807
21844
  {
21808
- id: qx,
21845
+ id: Jx,
21809
21846
  label: "Edit",
21810
21847
  order: 35,
21811
- create: Yx,
21848
+ create: Xx,
21812
21849
  settingsIds: ["arrange"]
21813
21850
  },
21814
21851
  {
21815
- id: SS,
21852
+ id: CS,
21816
21853
  label: "Layout Guides",
21817
21854
  order: 38,
21818
- create: wS
21855
+ create: TS
21819
21856
  },
21820
21857
  {
21821
- id: bC,
21858
+ id: xC,
21822
21859
  label: "Screenshot",
21823
21860
  order: 40,
21824
- create: xC,
21861
+ create: SC,
21825
21862
  settingsIds: ["screenshot"],
21826
21863
  hiddenSettingsControlIds: ["tool"]
21827
21864
  },
21828
21865
  {
21829
- id: vC,
21866
+ id: yC,
21830
21867
  label: "Recording",
21831
21868
  description: "Record a selected page region and trim, resize, or export it through MediaBunny.",
21832
21869
  order: 42,
21833
- create: yC,
21870
+ create: bC,
21834
21871
  settingsIds: ["recording"],
21835
21872
  hiddenSettingsControlIds: ["tool"]
21836
21873
  },
21837
21874
  {
21838
- id: WS,
21875
+ id: GS,
21839
21876
  label: "Codex",
21840
21877
  description: "Connects Mesurer to open Codex threads on this computer. Electron hosts provide the native Codex connection through preload.",
21841
21878
  order: 45,
21842
- create: _C
21879
+ create: vC
21843
21880
  }
21844
- ], wC = (e) => {
21845
- let t = e !== void 0, n = new Map((e ?? []).map((e) => [e.id, e])), r = new Set(CC.map((e) => e.id)), i = CC.map((e) => {
21881
+ ], TC = (e) => {
21882
+ let t = e !== void 0, n = new Map((e ?? []).map((e) => [e.id, e])), r = new Set(wC.map((e) => e.id)), i = wC.map((e) => {
21846
21883
  let r = n.get(e.id);
21847
21884
  return {
21848
21885
  ...e,
21849
21886
  settingsIds: e.settingsIds ? [...e.settingsIds] : void 0,
21850
21887
  hiddenSettingsControlIds: e.hiddenSettingsControlIds ? [...e.hiddenSettingsControlIds] : void 0,
21851
- enabled: t ? !!r : e.id === "mesurer.codex" ? SC() : e.enabled !== !1,
21888
+ enabled: t ? !!r : e.id === "mesurer.codex" ? CC() : e.enabled !== !1,
21852
21889
  create: r ? () => r : e.create
21853
21890
  };
21854
21891
  });
@@ -21859,16 +21896,16 @@ var vC = hb, yC = (e = {}) => ({
21859
21896
  create: () => n
21860
21897
  });
21861
21898
  return i;
21862
- }, TC = (e) => e;
21863
- function EC() {
21864
- return oS();
21899
+ }, EC = (e) => e;
21900
+ function DC() {
21901
+ return sS();
21865
21902
  }
21866
- async function DC(e = {}) {
21867
- return sS(e);
21903
+ async function OC(e = {}) {
21904
+ return cS(e);
21868
21905
  }
21869
21906
  //#endregion
21870
21907
  //#region src/index.tsx
21871
- var OC = {
21908
+ var kC = {
21872
21909
  select: "select",
21873
21910
  xray: "xray",
21874
21911
  colorPicker: "color-picker",
@@ -21878,14 +21915,14 @@ var OC = {
21878
21915
  distance: "distance",
21879
21916
  settings: "settings"
21880
21917
  };
21881
- function kC(e = {}) {
21918
+ function AC(e = {}) {
21882
21919
  if (!("document" in globalThis)) throw Error("mountMesurer() requires a browser or Electron renderer document.");
21883
21920
  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;
21884
21921
  if (o?.aborted) throw o.reason ?? new DOMException("Mesurer mount aborted.", "AbortError");
21885
21922
  if (!t) throw Error("mountMesurer() requires document.body to exist or an explicit target.");
21886
21923
  let p = t.ownerDocument ?? document, m = p.defaultView ?? window, h = p.createElement("div");
21887
21924
  h.dataset.mesurerIsland = "true";
21888
- let g = US(h, t, i), _ = h, v = h, y = h;
21925
+ let g = WS(h, t, i), _ = h, v = h, y = h;
21889
21926
  if (n) {
21890
21927
  let e = h.attachShadow({ mode: r });
21891
21928
  v = p.createElement("div"), v.dataset.mesurerIslandMount = "true", e.append(v), _ = e, y = e;
@@ -21896,7 +21933,7 @@ function kC(e = {}) {
21896
21933
  C = e, w = t;
21897
21934
  });
21898
21935
  D.catch(() => void 0), O.catch(() => void 0);
21899
- let k = async () => (await (b ? Promise.resolve(b) : D), O), A = a === !0 ? {} : a === !1 ? null : a, j = Gx({
21936
+ let k = async () => (await (b ? Promise.resolve(b) : D), O), A = a === !0 ? {} : a === !1 ? null : a, j = Kx({
21900
21937
  ownerDocument: p,
21901
21938
  root: A?.root ?? (t.nodeType === 11 ? t : p),
21902
21939
  getPluginHost: () => b,
@@ -21908,12 +21945,12 @@ function kC(e = {}) {
21908
21945
  return t;
21909
21946
  }, N = async () => {
21910
21947
  await j.ready();
21911
- let e = b?.service.get(ES);
21948
+ let e = b?.service.get(DS);
21912
21949
  if (!e) throw Error("Mesurer Context is disabled. Enable it in Settings or include context() in plugins.");
21913
21950
  return e;
21914
21951
  }, P = async () => {
21915
21952
  await j.ready();
21916
- let e = b?.service.get(Xx);
21953
+ let e = b?.service.get(Zx);
21917
21954
  if (!e) throw Error("Mesurer Edit is disabled. Enable it in Settings or include edit() in plugins.");
21918
21955
  return e;
21919
21956
  }, 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(), ee = async () => (await P()).intents(), te = async (e) => {
@@ -21922,9 +21959,9 @@ function kC(e = {}) {
21922
21959
  return t;
21923
21960
  }, ne = async (e, t) => {
21924
21961
  (await P()).show(e, t);
21925
- }, W = async (e, t) => (await P()).capturePlan(e, t), re = async (e, t) => (await P()).review(e, t), ie = () => j.textEdits(), G = (e) => j.textEdit(e), ae = Object.assign(j, {
21962
+ }, W = async (e, t) => (await P()).capturePlan(e, t), G = async (e, t) => (await P()).review(e, t), re = () => j.textEdits(), ie = (e) => j.textEdit(e), ae = Object.assign(j, {
21926
21963
  capabilities: () => {
21927
- let e = !!b?.service.get(ES);
21964
+ let e = !!b?.service.get(DS);
21928
21965
  return {
21929
21966
  protocol: "mesurer.agent/v1",
21930
21967
  contextSchema: "mesurer.context/v1",
@@ -21934,8 +21971,8 @@ function kC(e = {}) {
21934
21971
  annotations: e,
21935
21972
  review: e,
21936
21973
  capturePlan: e,
21937
- arrange: !!b?.service.get(Xx),
21938
- textEdit: !!b?.service.get(Ux)
21974
+ arrange: !!b?.service.get(Zx),
21975
+ textEdit: !!b?.service.get(Wx)
21939
21976
  }
21940
21977
  };
21941
21978
  },
@@ -21951,12 +21988,12 @@ function kC(e = {}) {
21951
21988
  arrange: te,
21952
21989
  showArrange: ne,
21953
21990
  arrangeCapturePlan: W,
21954
- reviewArrange: re
21991
+ reviewArrange: G
21955
21992
  }), oe = {
21956
21993
  ...f,
21957
- version: Kx,
21958
- plugins: wC(l),
21959
- excludePlugins: u ? u.map((e) => OC[e]) : [...d ?? []]
21994
+ version: qx,
21995
+ plugins: TC(l),
21996
+ excludePlugins: u ? u.map((e) => kC[e]) : [...d ?? []]
21960
21997
  }, se = Oi(() => Yr(rv, Di(oe, {
21961
21998
  portalTarget: y,
21962
21999
  pageTarget: t,
@@ -22004,9 +22041,9 @@ function kC(e = {}) {
22004
22041
  arrange: te,
22005
22042
  showArrange: ne,
22006
22043
  arrangeCapturePlan: W,
22007
- reviewArrange: re,
22008
- textEdits: ie,
22009
- textEdit: G,
22044
+ reviewArrange: G,
22045
+ textEdits: re,
22046
+ textEdit: ie,
22010
22047
  bringToFront: g.bringToFront,
22011
22048
  describe: async () => (await le).describe(),
22012
22049
  dispose() {
@@ -22025,6 +22062,6 @@ function kC(e = {}) {
22025
22062
  }
22026
22063
  return me;
22027
22064
  }
22028
- var AC = kC;
22065
+ var jC = AC;
22029
22066
  //#endregion
22030
- export { Ux as MESURER_TEXT_EDIT_SERVICE_ID, Kx as MESURER_VERSION, fS as captureMesurerContext, xS as copyTextToClipboard, Gx as createMesurerAgentHarness, gS as createMesurerCapturePlan, EC as createMesurerPluginHost, DC as createMesurerRuntime, TC as defineMesurerPlugin, hS as formatMesurerContext, AC as mountMeasurer, kC as mountMesurer, bS as reviewMesurerAnnotation };
22067
+ export { Wx as MESURER_TEXT_EDIT_SERVICE_ID, qx as MESURER_VERSION, pS as captureMesurerContext, SS as copyTextToClipboard, Kx as createMesurerAgentHarness, _S as createMesurerCapturePlan, DC as createMesurerPluginHost, OC as createMesurerRuntime, EC as defineMesurerPlugin, gS as formatMesurerContext, jC as mountMeasurer, AC as mountMesurer, xS as reviewMesurerAnnotation };