mesurer-solid 0.2.0-beta.13 → 0.2.0-beta.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -10753,10 +10753,10 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
10753
10753
  d.dataset.mesurerArrangeSnapLine = "horizontal", d.setAttribute("aria-hidden", "true"), d.style.position = "fixed", d.style.display = "none", d.style.height = "1px", d.style.backgroundColor = Sp, d.style.pointerEvents = "none";
10754
10754
  let f = n.createElement("div");
10755
10755
  f.dataset.mesurerArrangeBox = "true", f.setAttribute("role", "application"), f.setAttribute("aria-label", "Arrange selected elements"), f.style.position = "fixed", f.style.display = "none", f.style.boxSizing = "border-box", f.style.border = "1px solid #0d99ff", f.style.cursor = "grab", f.style.pointerEvents = "auto", f.style.touchAction = "none", f.style.userSelect = "none", l.append(u, d, f);
10756
- let p = /* @__PURE__ */ new Map(), m = /* @__PURE__ */ new Map(), h = /* @__PURE__ */ new Map(), g = /* @__PURE__ */ new Map(), _ = {
10756
+ let p = /* @__PURE__ */ new Map(), m = /* @__PURE__ */ new Map(), h = /* @__PURE__ */ new Map(), g = /* @__PURE__ */ new Map(), _ = /* @__PURE__ */ new Map(), v = {
10757
10757
  intentId: null,
10758
10758
  state: "desired"
10759
- }, v = null, y = null, b = null, x = !1, S = 0, C = null, w = () => e.state.get("mesurer.arrange.intents") ?? { intents: [] }, T = () => e.state.get("mesurer.arrange.active") ?? !1, E = () => {
10759
+ }, y = null, b = null, x = null, S = !1, C = 0, w = null, T = () => e.state.get("mesurer.arrange.intents") ?? { intents: [] }, E = () => e.state.get("mesurer.arrange.active") ?? !1, D = () => {
10760
10760
  let t = e.state.get(lp);
10761
10761
  return {
10762
10762
  snapping: t?.snapping ?? !0,
@@ -10766,58 +10766,59 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
10766
10766
  preferXrayEdges: t?.preferXrayEdges ?? !0,
10767
10767
  snapLines: t?.snapLines ?? !0
10768
10768
  };
10769
- }, D = (t) => {
10769
+ }, O = (t) => {
10770
10770
  e.state.update(lp, (e) => ({
10771
10771
  ...e,
10772
10772
  ...t
10773
10773
  }));
10774
- }, O = () => Ip(r), k = () => w().intents.filter((e) => e.pageUrl === O()), A = (e) => !!e.closest("[data-mesurer-island='true'], [data-mesurer-inspector-ui='true'], [data-mesurer-root='true']"), j = (e) => Uu(e, o) && !A(e), M = (e) => {
10774
+ }, k = () => Ip(r), A = () => T().intents.filter((e) => e.pageUrl === k()), j = (e) => !!e.closest("[data-mesurer-island='true'], [data-mesurer-inspector-ui='true'], [data-mesurer-root='true']"), M = (e) => Uu(e, o) && !j(e), N = (e) => {
10775
10775
  let t = [];
10776
- o instanceof c.HTMLElement && o.matches(e) && !A(o) && t.push(o);
10777
- for (let n of o.querySelectorAll(e)) n instanceof c.HTMLElement && j(n) && t.push(n);
10776
+ o instanceof c.HTMLElement && o.matches(e) && !j(o) && t.push(o);
10777
+ for (let n of o.querySelectorAll(e)) n instanceof c.HTMLElement && M(n) && t.push(n);
10778
10778
  return t;
10779
- }, N = (e) => {
10780
- let t = Rp(e);
10781
- if (!qu(t)) return null;
10782
- let n = [];
10779
+ }, P = (e, t) => e.localName !== t.fingerprintTag || t.fingerprintId && e.id !== t.fingerprintId || t.fingerprintTestId && e.getAttribute("data-testid") !== t.fingerprintTestId || t.fingerprintRole && e.getAttribute("role") !== t.fingerprintRole || t.fingerprintAriaLabel && e.getAttribute("aria-label") !== t.fingerprintAriaLabel ? !1 : t.fingerprintClasses.every((t) => e.classList.contains(t)), F = (e) => {
10780
+ let t = Rp(e), n = m.get(e.selector);
10781
+ if (n && n.isConnected && M(n) && P(n, e)) return n;
10782
+ if (n && m.delete(e.selector), !qu(t)) return null;
10783
+ let r = [];
10783
10784
  try {
10784
- n = M(e.selector).filter((e) => Ju(e, t));
10785
+ r = N(e.selector).filter((e) => Ju(e, t));
10785
10786
  } catch {
10786
10787
  return null;
10787
10788
  }
10788
- if (n.length !== 1) return null;
10789
+ if (r.length !== 1) return null;
10789
10790
  if (!t.id && !t.testId) {
10790
10791
  let e = [];
10791
10792
  try {
10792
- e = M(t.tag).filter((e) => Ju(e, t));
10793
+ e = N(t.tag).filter((e) => Ju(e, t));
10793
10794
  } catch {
10794
10795
  return null;
10795
10796
  }
10796
- if (e.length !== 1 || e[0] !== n[0]) return null;
10797
+ if (e.length !== 1 || e[0] !== r[0]) return null;
10797
10798
  }
10798
- return n[0] ?? null;
10799
- }, P = {
10799
+ return r[0] ?? null;
10800
+ }, I = {
10800
10801
  value: "none",
10801
10802
  priority: "important"
10802
- }, F = (e) => {
10803
- let t = Vp(e, "transition-property");
10804
- (!m.get(e) || !Up(t, P)) && m.set(e, t), Up(t, P) || e.style.setProperty("transition-property", P.value, P.priority);
10805
- }, I = (e) => {
10806
- let t = m.get(e);
10807
- t && (Up(Vp(e, "transition-property"), P) && (t.value || t.priority ? e.style.setProperty("transition-property", t.value, t.priority) : e.style.removeProperty("transition-property")), m.delete(e));
10808
10803
  }, L = (e) => {
10809
- for (let t of m.keys()) e.has(t) || I(t);
10810
- }, R = () => {
10811
- for (let e of m.keys()) I(e);
10812
- }, z = () => {
10813
- for (let e of p.values()) Gp(e);
10814
- p.clear();
10804
+ let t = Vp(e, "transition-property");
10805
+ (!h.get(e) || !Up(t, I)) && h.set(e, t), Up(t, I) || e.style.setProperty("transition-property", I.value, I.priority);
10806
+ }, R = (e) => {
10807
+ let t = h.get(e);
10808
+ t && (Up(Vp(e, "transition-property"), I) && (t.value || t.priority ? e.style.setProperty("transition-property", t.value, t.priority) : e.style.removeProperty("transition-property")), h.delete(e));
10809
+ }, z = (e) => {
10810
+ for (let t of h.keys()) e.has(t) || R(t);
10815
10811
  }, B = () => {
10816
- z(), R();
10812
+ for (let e of h.keys()) R(e);
10817
10813
  }, V = () => {
10814
+ for (let e of p.values()) Gp(e);
10815
+ p.clear();
10816
+ }, H = () => {
10817
+ V(), B();
10818
+ }, U = () => {
10818
10819
  u.style.display = "none", d.style.display = "none";
10819
- }, H = (e, t, n) => {
10820
- if (V(), E().snapLines) {
10820
+ }, W = (e, t, n) => {
10821
+ if (U(), D().snapLines) {
10821
10822
  if (e) {
10822
10823
  let t = Math.min(n.top, e.start), r = Math.max(n.top + n.height, e.end);
10823
10824
  u.style.display = "block", u.style.left = `${e.position}px`, u.style.top = `${t}px`, u.style.height = `${Math.max(1, r - t)}px`;
@@ -10827,51 +10828,51 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
10827
10828
  d.style.display = "block", d.style.left = `${e}px`, d.style.top = `${t.position}px`, d.style.width = `${Math.max(1, r - e)}px`;
10828
10829
  }
10829
10830
  }
10830
- }, U = () => {
10831
- if (!(h.size > 0)) for (let e of s.querySelectorAll("[data-mesurer-measurement='true']")) e instanceof c.HTMLElement && (h.set(e, {
10831
+ }, ee = () => {
10832
+ if (!(g.size > 0)) for (let e of s.querySelectorAll("[data-mesurer-measurement='true']")) e instanceof c.HTMLElement && (g.set(e, {
10832
10833
  value: e.style.getPropertyValue("visibility"),
10833
10834
  priority: e.style.getPropertyPriority("visibility")
10834
10835
  }), e.style.setProperty("visibility", "hidden", "important"));
10835
- }, W = () => {
10836
- for (let [e, t] of h) t.value || t.priority ? e.style.setProperty("visibility", t.value, t.priority) : e.style.removeProperty("visibility");
10837
- h.clear();
10838
- }, ee = (e) => {
10836
+ }, te = () => {
10837
+ for (let [e, t] of g) t.value || t.priority ? e.style.setProperty("visibility", t.value, t.priority) : e.style.removeProperty("visibility");
10838
+ g.clear();
10839
+ }, ne = (e) => {
10839
10840
  if (e.parentElement instanceof c.HTMLElement) return e.parentElement;
10840
10841
  let t = e.getRootNode();
10841
10842
  return t instanceof c.ShadowRoot && t.host instanceof c.HTMLElement ? t.host : null;
10842
- }, te = (e, t) => {
10843
- let n = ee(e);
10843
+ }, re = (e, t) => {
10844
+ let n = ne(e);
10844
10845
  for (; n;) {
10845
10846
  let e = t.get(n);
10846
10847
  if (e) return e;
10847
- n = ee(n);
10848
+ n = ne(n);
10848
10849
  }
10849
10850
  return {
10850
10851
  x: 0,
10851
10852
  y: 0
10852
10853
  };
10853
- }, ne = (e = k()) => {
10854
+ }, ie = (e = A()) => {
10854
10855
  let t = /* @__PURE__ */ new Map();
10855
10856
  for (let n of e) for (let e of n.targets) {
10856
- let n = N(e);
10857
+ let n = F(e);
10857
10858
  n && t.set(n, e);
10858
10859
  }
10859
10860
  return t;
10860
- }, re = (e) => e.offsetSpace !== "local" || e.desiredLocalOffsetX === null || e.desiredLocalOffsetY === null ? null : {
10861
+ }, ae = (e) => e.offsetSpace !== "local" || e.desiredLocalOffsetX === null || e.desiredLocalOffsetY === null ? null : {
10861
10862
  x: e.desiredLocalOffsetX,
10862
10863
  y: e.desiredLocalOffsetY
10863
- }, ie = (e, t) => {
10864
- let n = ee(e);
10864
+ }, oe = (e, t) => {
10865
+ let n = ne(e);
10865
10866
  for (; n;) {
10866
10867
  if (t.has(n)) return n;
10867
- n = ee(n);
10868
+ n = ne(n);
10868
10869
  }
10869
10870
  return null;
10870
- }, ae = (e = k(), t = /* @__PURE__ */ new Map()) => {
10871
- let n = ne(e), r = /* @__PURE__ */ new Set([...n.keys(), ...t.keys()]), i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Set(), o = (e) => {
10871
+ }, se = (e = A(), t = /* @__PURE__ */ new Map()) => {
10872
+ let n = ie(e), r = /* @__PURE__ */ new Set([...n.keys(), ...t.keys()]), i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Set(), o = (e) => {
10872
10873
  let s = i.get(e);
10873
10874
  if (s) return s;
10874
- let c = n.get(e), l = t.get(e) ?? (c ? re(c) : null);
10875
+ let c = n.get(e), l = t.get(e) ?? (c ? ae(c) : null);
10875
10876
  if (!l && c) {
10876
10877
  let t = {
10877
10878
  x: c.desiredOffsetX,
@@ -10885,7 +10886,7 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
10885
10886
  };
10886
10887
  if (a.has(e)) return l;
10887
10888
  a.add(e);
10888
- let u = ie(e, r), d = u ? o(u) : {
10889
+ let u = oe(e, r), d = u ? o(u) : {
10889
10890
  x: 0,
10890
10891
  y: 0
10891
10892
  }, f = {
@@ -10896,15 +10897,15 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
10896
10897
  };
10897
10898
  for (let e of r) o(e);
10898
10899
  return i;
10899
- }, oe = () => {
10900
- if (_.state === "live") return /* @__PURE__ */ new Map();
10901
- if (!_.intentId) return ae();
10902
- let e = w().intents.find((e) => e.id === _.intentId);
10903
- if (!e) return ae();
10900
+ }, ce = () => {
10901
+ if (v.state === "live") return /* @__PURE__ */ new Map();
10902
+ if (!v.intentId) return se();
10903
+ let e = T().intents.find((e) => e.id === v.intentId);
10904
+ if (!e) return se();
10904
10905
  let t = /* @__PURE__ */ new Map();
10905
10906
  for (let n of e.targets) {
10906
- let e = N(n);
10907
- e && t.set(e, _.state === "before" ? {
10907
+ let e = F(n);
10908
+ e && t.set(e, v.state === "before" ? {
10908
10909
  x: n.beforeOffsetX,
10909
10910
  y: n.beforeOffsetY
10910
10911
  } : {
@@ -10913,10 +10914,10 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
10913
10914
  });
10914
10915
  }
10915
10916
  return t;
10916
- }, se = (e) => {
10917
+ }, le = (e) => {
10917
10918
  let t = [...e].flatMap(([t, n]) => {
10918
- if (!t.isConnected || !j(t)) return [];
10919
- let r = te(t, e), i = {
10919
+ if (!t.isConnected || !M(t)) return [];
10920
+ let r = re(t, e), i = {
10920
10921
  x: n.x - r.x,
10921
10922
  y: n.y - r.y
10922
10923
  };
@@ -10925,8 +10926,8 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
10925
10926
  offset: i
10926
10927
  }];
10927
10928
  }), n = new Set(t.map(({ element: e }) => e));
10928
- for (let { element: e } of t) F(e);
10929
- z();
10929
+ for (let { element: e } of t) L(e);
10930
+ V();
10930
10931
  for (let { element: e, offset: n } of t) {
10931
10932
  let t = Hp(e), i = r.getComputedStyle(e).transform, a = i && i !== "none" ? ` ${i}` : "";
10932
10933
  e.style.setProperty("transform", `translate3d(${n.x}px, ${n.y}px, 0)${a}`, "important"), p.set(e, {
@@ -10935,26 +10936,26 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
10935
10936
  appliedTransform: Hp(e)
10936
10937
  });
10937
10938
  }
10938
- L(n);
10939
- }, ce = () => se(oe()), le = (e) => {
10940
- z();
10939
+ z(n);
10940
+ }, ue = () => le(ce()), de = (e) => {
10941
+ V();
10941
10942
  try {
10942
10943
  return e();
10943
10944
  } finally {
10944
- !x && !v && ce();
10945
+ !S && !y && ue();
10945
10946
  }
10946
- }, ue = () => i.currentSelection().elements.filter((e) => e instanceof c.HTMLElement && e.isConnected && j(e));
10947
+ }, fe = () => i.currentSelection().elements.filter((e) => e instanceof c.HTMLElement && e.isConnected && M(e));
10947
10948
  e.state.register({
10948
10949
  id: _p,
10949
- initial: ue().length > 0
10950
+ initial: fe().length > 0
10950
10951
  });
10951
- let de = () => e.state.get(_p) ?? !1, fe = () => {
10952
- let t = ue().length > 0;
10953
- t !== de() && e.state.update(_p, () => t);
10954
- }, pe = () => Ap(ue().map((e) => Pu(e))), me = () => {
10955
- for (let e of g.values()) e.remove();
10956
- g.clear();
10957
- }, he = (e) => {
10952
+ let pe = () => e.state.get(_p) ?? !1, me = () => {
10953
+ let t = fe().length > 0;
10954
+ t !== pe() && e.state.update(_p, () => t);
10955
+ }, he = () => Ap(fe().map((e) => Pu(e))), ge = () => {
10956
+ for (let e of _.values()) e.remove();
10957
+ _.clear();
10958
+ }, _e = (e) => {
10958
10959
  let t = e.getBoundingClientRect(), n = t.right + wp;
10959
10960
  n + Cp > r.innerWidth - 4 && (n = Math.max(4, t.left - Cp - wp));
10960
10961
  let i = Math.min(Math.max(4, t.top + Tp), Math.max(4, r.innerHeight - Cp - 4));
@@ -10962,40 +10963,40 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
10962
10963
  left: n,
10963
10964
  top: i
10964
10965
  };
10965
- }, ge = () => {
10966
- if (!T() || v) {
10967
- me();
10966
+ }, ve = () => {
10967
+ if (!E() || y) {
10968
+ ge();
10968
10969
  return;
10969
10970
  }
10970
- let t = k(), r = ne(t), i = ae(t), a = /* @__PURE__ */ new Set();
10971
- for (let t of ue()) {
10971
+ let t = A(), r = ie(t), i = se(t), a = /* @__PURE__ */ new Set();
10972
+ for (let t of fe()) {
10972
10973
  let o = r.get(t);
10973
10974
  if (!o) continue;
10974
10975
  let s = i.get(t);
10975
10976
  if (!s) continue;
10976
- let c = te(t, i), u = re(o) ?? {
10977
+ let c = re(t, i), u = ae(o) ?? {
10977
10978
  x: s.x - c.x,
10978
10979
  y: s.y - c.y
10979
10980
  };
10980
10981
  if (Math.abs(u.x) <= Ep && Math.abs(u.y) <= Ep) continue;
10981
10982
  a.add(t);
10982
- let d = g.get(t);
10983
+ let d = _.get(t);
10983
10984
  d || (d = n.createElement("button"), d.type = "button", d.dataset.mesurerArrangeReset = "true", d.dataset.mesurerInspectorUi = "true", d.setAttribute("aria-label", "Reset position"), d.title = "Reset position", d.textContent = "↺", d.className = "msr:pointer-events-auto msr:flex msr:size-6 msr:items-center msr:justify-center msr:rounded-[7px] msr:border msr:border-ink-200 msr:bg-white msr:text-[14px] msr:leading-none msr:text-black msr:outline-none msr:hover:bg-ink-50 msr:focus-visible:border-[#0d99ff]", d.style.position = "fixed", d.addEventListener("pointerdown", (e) => e.stopPropagation()), d.addEventListener("click", (n) => {
10984
- n.preventDefault(), n.stopPropagation(), b = [t], e.command.execute(hp, void 0, { source: "arrange-reset-button" }).catch(() => {
10985
- b = null;
10985
+ n.preventDefault(), n.stopPropagation(), x = [t], e.command.execute(hp, void 0, { source: "arrange-reset-button" }).catch(() => {
10986
+ x = null;
10986
10987
  });
10987
- }), g.set(t, d), l.append(d));
10988
- let f = he(t);
10988
+ }), _.set(t, d), l.append(d));
10989
+ let f = _e(t);
10989
10990
  d.style.left = `${f.left}px`, d.style.top = `${f.top}px`;
10990
10991
  }
10991
- for (let [e, t] of g) a.has(e) || (t.remove(), g.delete(e));
10992
- }, _e = (t) => {
10992
+ for (let [e, t] of _) a.has(e) || (t.remove(), _.delete(e));
10993
+ }, ye = (t) => {
10993
10994
  let n = new Set(t);
10994
10995
  n.size && (e.state.update("mesurer.arrange.intents", (e) => {
10995
10996
  let t = !1, r = e.intents.flatMap((e) => {
10996
- if (e.pageUrl !== O()) return [e];
10997
+ if (e.pageUrl !== k()) return [e];
10997
10998
  let r = e.targets.filter((e) => {
10998
- let r = N(e), i = r !== null && n.has(r);
10999
+ let r = F(e), i = r !== null && n.has(r);
10999
11000
  return i && (t = !0), !i;
11000
11001
  });
11001
11002
  return r.length ? r.length === e.targets.length ? [e] : [{
@@ -11004,17 +11005,17 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
11004
11005
  }] : [];
11005
11006
  });
11006
11007
  return t ? { intents: r } : e;
11007
- }), xe(), be());
11008
- }, ve = () => {
11008
+ }), Ce(), Se());
11009
+ }, be = () => {
11009
11010
  e.state.update(sp, (e) => {
11010
- let t = e.intents.filter((e) => e.pageUrl !== O());
11011
+ let t = e.intents.filter((e) => e.pageUrl !== k());
11011
11012
  return t.length === e.intents.length ? e : { intents: t };
11012
- }), xe(), be();
11013
- }, ye = (e) => {
11014
- let t = E();
11013
+ }), Ce(), Se();
11014
+ }, xe = (e) => {
11015
+ let t = D();
11015
11016
  if (!t.snapping) return [];
11016
11017
  let n = [], a = new Set(e), s = i.snapshot(), l = s.xrayVisible && t.preferXrayEdges && t.elementEdges, u = 0, d = (i) => {
11017
- if (u >= xp || a.has(i) || e.some((e) => e.contains(i)) || !j(i)) return;
11018
+ if (u >= xp || a.has(i) || e.some((e) => e.contains(i)) || !M(i)) return;
11018
11019
  let o = r.getComputedStyle(i);
11019
11020
  if (o.display === "none" || o.visibility === "hidden" || o.visibility === "collapse") return;
11020
11021
  let s = o.outlineStyle === "solid" && (Number.parseFloat(o.outlineWidth) || 0) > 0;
@@ -11082,61 +11083,61 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
11082
11083
  kind: "guide"
11083
11084
  });
11084
11085
  return n;
11085
- }, be = (e) => {
11086
- if (!T()) {
11087
- f.style.display = "none", me();
11086
+ }, Se = (e) => {
11087
+ if (!E()) {
11088
+ f.style.display = "none", ge();
11088
11089
  return;
11089
11090
  }
11090
- let t = e === void 0 ? pe() : e;
11091
+ let t = e === void 0 ? he() : e;
11091
11092
  if (!t) {
11092
- f.style.display = "none", me();
11093
+ f.style.display = "none", ge();
11093
11094
  return;
11094
11095
  }
11095
- f.style.display = "block", f.style.left = `${t.left}px`, f.style.top = `${t.top}px`, f.style.width = `${t.width}px`, f.style.height = `${t.height}px`, v ? me() : ge();
11096
- }, xe = () => {
11097
- _ = {
11096
+ f.style.display = "block", f.style.left = `${t.left}px`, f.style.top = `${t.top}px`, f.style.width = `${t.width}px`, f.style.height = `${t.height}px`, y ? ge() : ve();
11097
+ }, Ce = () => {
11098
+ v = {
11098
11099
  intentId: null,
11099
11100
  state: "desired"
11100
- }, ce(), V(), T() ? U() : W();
11101
- }, Se = () => {
11102
- _ = {
11101
+ }, ue(), U(), E() ? ee() : te();
11102
+ }, we = () => {
11103
+ v = {
11103
11104
  intentId: null,
11104
11105
  state: "live"
11105
- }, B(), V(), W();
11106
- }, Ce = () => {
11107
- x || v || (ce(), V(), T() ? U() : W(), be());
11108
- }, we = () => {
11109
- S || x || (S = r.requestAnimationFrame(() => {
11110
- S = 0, Ce();
11106
+ }, H(), U(), te();
11107
+ }, Te = () => {
11108
+ S || y || (ue(), U(), E() ? ee() : te(), Se());
11109
+ }, Ee = () => {
11110
+ C || S || (C = r.requestAnimationFrame(() => {
11111
+ C = 0, Te();
11111
11112
  }));
11112
- }, Te = async () => {
11113
+ }, De = async () => {
11113
11114
  s.querySelector("[data-mesurer-builtin='select'] button")?.getAttribute("aria-pressed") !== "true" && await e.command.execute(dp, void 0, { source: "arrange" });
11114
- }, Ee = (e) => {
11115
- if (!T() || e.button !== 0) return;
11116
- let r = ue();
11115
+ }, Oe = (e) => {
11116
+ if (!E() || e.button !== 0) return;
11117
+ let r = fe();
11117
11118
  if (!r.length) return;
11118
11119
  let a = e.shiftKey ? Wu(t.rendererRoot ?? null, () => Wu(l, () => Hu({
11119
11120
  x: e.clientX,
11120
11121
  y: e.clientY
11121
11122
  }, o, n))) : null;
11122
- if (e.shiftKey && a instanceof c.HTMLElement && j(a) && !r.includes(a)) {
11123
+ if (e.shiftKey && a instanceof c.HTMLElement && M(a) && !r.includes(a)) {
11123
11124
  e.preventDefault(), e.stopPropagation(), i.toggleSelection(a);
11124
11125
  return;
11125
11126
  }
11126
- e.preventDefault(), e.stopPropagation(), _ = {
11127
+ e.preventDefault(), e.stopPropagation(), v = {
11127
11128
  intentId: null,
11128
11129
  state: "desired"
11129
- }, ce();
11130
- let s = ne(k()), u = ae(k()), d = new Set(r);
11131
- z();
11130
+ }, ue();
11131
+ let s = ie(A()), u = se(A()), d = new Set(r);
11132
+ V();
11132
11133
  let p = r.map((e, t) => {
11133
- let n = Pu(e), r = te(e, u), i = u.get(e) ?? r, a = s.get(e), o = (a ? re(a) : null) ?? {
11134
+ let n = Pu(e), r = re(e, u), i = u.get(e) ?? r, a = s.get(e), o = (a ? ae(a) : null) ?? {
11134
11135
  x: i.x - r.x,
11135
11136
  y: i.y - r.y
11136
11137
  }, c = Op(n, i), l = Ku(e);
11137
11138
  return {
11138
11139
  element: e,
11139
- movesDirectly: ie(e, d) === null,
11140
+ movesDirectly: oe(e, d) === null,
11140
11141
  target: {
11141
11142
  id: `target-${t + 1}`,
11142
11143
  selector: Gu(e),
@@ -11173,21 +11174,21 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
11173
11174
  height: e.beforeHeight
11174
11175
  })));
11175
11176
  if (!m) {
11176
- ce();
11177
+ ue();
11177
11178
  return;
11178
11179
  }
11179
- ce(), U(), V(), v = {
11180
+ ue(), ee(), U(), y = {
11180
11181
  pointerId: e.pointerId,
11181
11182
  originX: e.clientX,
11182
11183
  originY: e.clientY,
11183
11184
  targets: p,
11184
11185
  groupBefore: m,
11185
- snapCandidates: ye(r),
11186
+ snapCandidates: xe(r),
11186
11187
  shiftToggleElement: e.shiftKey && a instanceof c.HTMLElement && r.includes(a) ? a : null,
11187
11188
  dx: 0,
11188
11189
  dy: 0
11189
- }, be(m), f.style.cursor = "grabbing", f.setPointerCapture?.(e.pointerId);
11190
- }, De = (e, t, n) => {
11190
+ }, Se(m), f.style.cursor = "grabbing", f.setPointerCapture?.(e.pointerId);
11191
+ }, ke = (e, t, n) => {
11191
11192
  let r = /* @__PURE__ */ new Map();
11192
11193
  for (let i of e.targets) {
11193
11194
  let e = {
@@ -11200,39 +11201,39 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
11200
11201
  } : e);
11201
11202
  }
11202
11203
  return r;
11203
- }, Oe = (e) => {
11204
- if (!v || e.pointerId !== v.pointerId) return;
11205
- let t = e.clientX - v.originX, n = e.clientY - v.originY, r = null;
11204
+ }, Ae = (e) => {
11205
+ if (!y || e.pointerId !== y.pointerId) return;
11206
+ let t = e.clientX - y.originX, n = e.clientY - y.originY, r = null;
11206
11207
  e.shiftKey && (Math.abs(t) >= Math.abs(n) ? (n = 0, r = "x") : (t = 0, r = "y"));
11207
- let i = Op(v.groupBefore, {
11208
+ let i = Op(y.groupBefore, {
11208
11209
  x: t,
11209
11210
  y: n
11210
- }), a = r === "y" ? null : Fp("x", i, v.snapCandidates), o = r === "x" ? null : Fp("y", i, v.snapCandidates);
11211
- t += a?.delta ?? 0, n += o?.delta ?? 0, v.dx = t, v.dy = n;
11212
- let s = ae(k(), De(v, t, n));
11213
- se(s);
11214
- let c = Op(v.groupBefore, {
11211
+ }), a = r === "y" ? null : Fp("x", i, y.snapCandidates), o = r === "x" ? null : Fp("y", i, y.snapCandidates);
11212
+ t += a?.delta ?? 0, n += o?.delta ?? 0, y.dx = t, y.dy = n;
11213
+ let s = se(A(), ke(y, t, n));
11214
+ le(s);
11215
+ let c = Op(y.groupBefore, {
11215
11216
  x: t,
11216
11217
  y: n
11217
11218
  });
11218
- be(c), H(a, o, c);
11219
- }, ke = () => {
11220
- if (!v) return;
11221
- let e = v.pointerId;
11222
- v = null, f.hasPointerCapture?.(e) && f.releasePointerCapture(e), f.style.cursor = "grab", xe(), be();
11223
- }, Ae = (t) => {
11224
- if (!v || t.pointerId !== v.pointerId) return;
11219
+ Se(c), W(a, o, c);
11220
+ }, je = () => {
11221
+ if (!y) return;
11222
+ let e = y.pointerId;
11223
+ y = null, f.hasPointerCapture?.(e) && f.releasePointerCapture(e), f.style.cursor = "grab", Ce(), Se();
11224
+ }, Me = (t) => {
11225
+ if (!y || t.pointerId !== y.pointerId) return;
11225
11226
  t.preventDefault(), t.stopPropagation();
11226
- let n = v;
11227
- if (v = null, f.hasPointerCapture?.(t.pointerId) && f.releasePointerCapture(t.pointerId), f.style.cursor = "grab", V(), n.dx === 0 && n.dy === 0) {
11228
- n.shiftToggleElement && i.toggleSelection(n.shiftToggleElement), xe(), be();
11227
+ let n = y;
11228
+ if (y = null, f.hasPointerCapture?.(t.pointerId) && f.releasePointerCapture(t.pointerId), f.style.cursor = "grab", U(), n.dx === 0 && n.dy === 0) {
11229
+ n.shiftToggleElement && i.toggleSelection(n.shiftToggleElement), Ce(), Se();
11229
11230
  return;
11230
11231
  }
11231
- let a = ae(k(), De(n, n.dx, n.dy));
11232
- y = {
11232
+ let a = se(A(), ke(n, n.dx, n.dy));
11233
+ b = {
11233
11234
  id: Lp(r, "arrange"),
11234
11235
  createdAt: Date.now(),
11235
- pageUrl: O(),
11236
+ pageUrl: k(),
11236
11237
  targets: n.targets.map(({ element: e, movesDirectly: t, target: r }) => {
11237
11238
  let i = {
11238
11239
  x: r.beforeLocalOffsetX ?? 0,
@@ -11254,27 +11255,29 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
11254
11255
  desiredLocalOffsetY: o.y
11255
11256
  };
11256
11257
  })
11257
- }, e.command.execute(pp).catch(() => {
11258
- y = null, xe(), be();
11258
+ };
11259
+ for (let { element: e, target: t } of n.targets) m.set(t.selector, e);
11260
+ e.command.execute(pp).catch(() => {
11261
+ b = null, Ce(), Se();
11259
11262
  });
11260
- }, je = (e) => {
11261
- !v || e.pointerId !== v.pointerId || ke();
11262
- }, Me = (t) => {
11263
- if (t.key !== "Escape" || !T() && !v || Kp(t.target) || s.querySelector("[data-mesurer-tool-menu]")) return;
11264
- if (t.preventDefault(), t.stopImmediatePropagation(), v) {
11265
- ke();
11263
+ }, Ne = (e) => {
11264
+ !y || e.pointerId !== y.pointerId || je();
11265
+ }, Pe = (t) => {
11266
+ if (t.key !== "Escape" || !E() && !y || Kp(t.target) || s.querySelector("[data-mesurer-tool-menu]")) return;
11267
+ if (t.preventDefault(), t.stopImmediatePropagation(), y) {
11268
+ je();
11266
11269
  return;
11267
11270
  }
11268
11271
  let n = i.currentSelection();
11269
11272
  if (n.elements.length > 0 || n.region) {
11270
- i.clearSelection(), be();
11273
+ i.clearSelection(), Se();
11271
11274
  return;
11272
11275
  }
11273
- e.state.update(cp, () => !1), Se(), be(), e.command.execute(dp, void 0, { source: "arrange-escape" }).catch(() => void 0);
11276
+ e.state.update(cp, () => !1), we(), Se(), e.command.execute(dp, void 0, { source: "arrange-escape" }).catch(() => void 0);
11274
11277
  };
11275
- f.addEventListener("pointerdown", Ee), f.addEventListener("pointermove", Oe), f.addEventListener("pointerup", Ae), f.addEventListener("pointercancel", je), r.addEventListener("keydown", Me, !0), r.addEventListener("resize", we), r.addEventListener("scroll", we, !0), o.addEventListener("scroll", we, !0), C = new c.MutationObserver(() => {
11276
- fe(), we();
11277
- }), C.observe(o, {
11278
+ f.addEventListener("pointerdown", Oe), f.addEventListener("pointermove", Ae), f.addEventListener("pointerup", Me), f.addEventListener("pointercancel", Ne), r.addEventListener("keydown", Pe, !0), r.addEventListener("resize", Ee), r.addEventListener("scroll", Ee, !0), o.addEventListener("scroll", Ee, !0), w = new c.MutationObserver(() => {
11279
+ me(), Ee();
11280
+ }), w.observe(o, {
11278
11281
  childList: !0,
11279
11282
  subtree: !0,
11280
11283
  attributes: !0,
@@ -11286,9 +11289,9 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
11286
11289
  "aria-label"
11287
11290
  ]
11288
11291
  });
11289
- let Ne = i.subscribe(() => {
11290
- fe(), we();
11291
- }), Pe = e.state.subscribe(we), Fe = (e) => w().intents.find((t) => t.id === e) ?? null, Ie = (e, t) => {
11292
+ let Fe = i.subscribe(() => {
11293
+ me(), Ee();
11294
+ }), Ie = e.state.subscribe(Ee), Le = (e) => T().intents.find((t) => t.id === e) ?? null, Re = (e, t) => {
11292
11295
  let n = null;
11293
11296
  if (n = t === "before" ? Ap(e.targets.map((e) => ({
11294
11297
  left: e.beforeLeft,
@@ -11300,7 +11303,7 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
11300
11303
  top: e.desiredTop,
11301
11304
  width: e.desiredWidth,
11302
11305
  height: e.desiredHeight
11303
- }))) : le(() => Ap(e.targets.map((e) => N(e)).filter((e) => e !== null).map((e) => Pu(e)))), !n) throw Error(`Arrange intent has no resolvable capture region: ${e.id}`);
11306
+ }))) : de(() => Ap(e.targets.map((e) => F(e)).filter((e) => e !== null).map((e) => Pu(e)))), !n) throw Error(`Arrange intent has no resolvable capture region: ${e.id}`);
11304
11307
  let i = Math.max(0, n.left - yp), a = Math.max(0, n.top - yp), o = Math.min(r.innerWidth, n.left + n.width + yp), s = Math.min(r.innerHeight, n.top + n.height + yp);
11305
11308
  return {
11306
11309
  left: i,
@@ -11308,28 +11311,28 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
11308
11311
  width: Math.max(0, o - i),
11309
11312
  height: Math.max(0, s - a)
11310
11313
  };
11311
- }, Le = {
11312
- active: T,
11313
- intents: () => w().intents.map(Bp),
11314
+ }, ze = {
11315
+ active: E,
11316
+ intents: () => T().intents.map(Bp),
11314
11317
  intent(e) {
11315
- let t = Fe(e);
11318
+ let t = Le(e);
11316
11319
  return t ? Bp(t) : null;
11317
11320
  },
11318
11321
  show(e, t) {
11319
- if (!Fe(e)) throw Error(`Arrange intent not found: ${e}`);
11320
- _ = {
11322
+ if (!Le(e)) throw Error(`Arrange intent not found: ${e}`);
11323
+ v = {
11321
11324
  intentId: e,
11322
11325
  state: t
11323
- }, Ce();
11326
+ }, Te();
11324
11327
  },
11325
11328
  showCurrent() {
11326
- _ = {
11329
+ v = {
11327
11330
  intentId: null,
11328
11331
  state: "desired"
11329
- }, Ce();
11332
+ }, Te();
11330
11333
  },
11331
11334
  capturePlan(e, t) {
11332
- let n = Fe(e);
11335
+ let n = Le(e);
11333
11336
  if (!n) throw Error(`Arrange intent not found: ${e}`);
11334
11337
  return {
11335
11338
  schema: "mesurer.arrange-capture/v1",
@@ -11342,15 +11345,15 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
11342
11345
  }, {
11343
11346
  id: "focus",
11344
11347
  kind: "clip",
11345
- rect: Ie(n, t)
11348
+ rect: Re(n, t)
11346
11349
  }]
11347
11350
  };
11348
11351
  },
11349
11352
  review: (e, t = vp) => {
11350
- let n = Fe(e);
11353
+ let n = Le(e);
11351
11354
  if (!n) throw Error(`Arrange intent not found: ${e}`);
11352
- let r = le(() => n.targets.map((e) => {
11353
- let n = N(e), r = {
11355
+ let r = de(() => n.targets.map((e) => {
11356
+ let n = F(e), r = {
11354
11357
  left: e.desiredLeft,
11355
11358
  top: e.desiredTop,
11356
11359
  width: e.desiredWidth,
@@ -11400,55 +11403,55 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
11400
11403
  order: 65,
11401
11404
  command: fp,
11402
11405
  icon: Dp,
11403
- active: T,
11406
+ active: E,
11404
11407
  menu: {
11405
11408
  label: "Arrange options",
11406
11409
  items: [
11407
11410
  {
11408
11411
  id: "snapping",
11409
11412
  label: "Snapping",
11410
- checked: () => E().snapping,
11411
- run: () => D({ snapping: !E().snapping })
11413
+ checked: () => D().snapping,
11414
+ run: () => O({ snapping: !D().snapping })
11412
11415
  },
11413
11416
  {
11414
11417
  id: "element-edges",
11415
11418
  label: "Element edges",
11416
- checked: () => E().elementEdges,
11417
- disabled: () => !E().snapping,
11418
- run: () => D({ elementEdges: !E().elementEdges })
11419
+ checked: () => D().elementEdges,
11420
+ disabled: () => !D().snapping,
11421
+ run: () => O({ elementEdges: !D().elementEdges })
11419
11422
  },
11420
11423
  {
11421
11424
  id: "element-centers",
11422
11425
  label: "Element centers",
11423
- checked: () => E().elementCenters,
11424
- disabled: () => !E().snapping,
11425
- run: () => D({ elementCenters: !E().elementCenters })
11426
+ checked: () => D().elementCenters,
11427
+ disabled: () => !D().snapping,
11428
+ run: () => O({ elementCenters: !D().elementCenters })
11426
11429
  },
11427
11430
  {
11428
11431
  id: "guides",
11429
11432
  label: "Guides",
11430
- checked: () => E().guides,
11431
- disabled: () => !E().snapping,
11432
- run: () => D({ guides: !E().guides })
11433
+ checked: () => D().guides,
11434
+ disabled: () => !D().snapping,
11435
+ run: () => O({ guides: !D().guides })
11433
11436
  },
11434
11437
  {
11435
11438
  id: "prefer-xray-edges",
11436
11439
  label: "Prefer X-ray edges",
11437
- checked: () => E().preferXrayEdges,
11438
- disabled: () => !E().snapping || !E().elementEdges,
11439
- run: () => D({ preferXrayEdges: !E().preferXrayEdges })
11440
+ checked: () => D().preferXrayEdges,
11441
+ disabled: () => !D().snapping || !D().elementEdges,
11442
+ run: () => O({ preferXrayEdges: !D().preferXrayEdges })
11440
11443
  },
11441
11444
  {
11442
11445
  id: "alignment-rulers",
11443
11446
  label: "Alignment rulers",
11444
- checked: () => E().snapLines,
11445
- disabled: () => !E().snapping,
11446
- run: () => D({ snapLines: !E().snapLines })
11447
+ checked: () => D().snapLines,
11448
+ disabled: () => !D().snapping,
11449
+ run: () => O({ snapLines: !D().snapLines })
11447
11450
  },
11448
11451
  {
11449
11452
  id: "reset-all-positions",
11450
11453
  label: "Reset all positions",
11451
- disabled: () => k().length === 0,
11454
+ disabled: () => A().length === 0,
11452
11455
  run: async () => {
11453
11456
  await e.command.execute(gp, void 0, { source: "arrange-menu" });
11454
11457
  }
@@ -11465,75 +11468,75 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
11465
11468
  id: "snapping",
11466
11469
  label: "Snapping",
11467
11470
  description: "Magnetically align dragged selections to nearby layout anchors.",
11468
- value: () => E().snapping,
11469
- set: (e) => D({ snapping: e })
11471
+ value: () => D().snapping,
11472
+ set: (e) => O({ snapping: e })
11470
11473
  },
11471
11474
  {
11472
11475
  type: "toggle",
11473
11476
  id: "element-edges",
11474
11477
  label: "Element edges",
11475
11478
  description: "Snap left/right and top/bottom edges to nearby elements.",
11476
- value: () => E().elementEdges,
11477
- set: (e) => D({ elementEdges: e }),
11478
- disabled: () => !E().snapping
11479
+ value: () => D().elementEdges,
11480
+ set: (e) => O({ elementEdges: e }),
11481
+ disabled: () => !D().snapping
11479
11482
  },
11480
11483
  {
11481
11484
  type: "toggle",
11482
11485
  id: "element-centers",
11483
11486
  label: "Element centers",
11484
11487
  description: "Snap center-to-center when X-ray edge preference is not active.",
11485
- value: () => E().elementCenters,
11486
- set: (e) => D({ elementCenters: e }),
11487
- disabled: () => !E().snapping
11488
+ value: () => D().elementCenters,
11489
+ set: (e) => O({ elementCenters: e }),
11490
+ disabled: () => !D().snapping
11488
11491
  },
11489
11492
  {
11490
11493
  type: "toggle",
11491
11494
  id: "guides",
11492
11495
  label: "Guides",
11493
11496
  description: "Snap to existing Mesurer guides.",
11494
- value: () => E().guides,
11495
- set: (e) => D({ guides: e }),
11496
- disabled: () => !E().snapping
11497
+ value: () => D().guides,
11498
+ set: (e) => O({ guides: e }),
11499
+ disabled: () => !D().snapping
11497
11500
  },
11498
11501
  {
11499
11502
  type: "toggle",
11500
11503
  id: "prefer-xray-edges",
11501
11504
  label: "Prefer X-ray edges",
11502
11505
  description: "When X-ray is on, use its visible blue box edges as element snap targets.",
11503
- value: () => E().preferXrayEdges,
11504
- set: (e) => D({ preferXrayEdges: e }),
11505
- disabled: () => !E().snapping || !E().elementEdges
11506
+ value: () => D().preferXrayEdges,
11507
+ set: (e) => O({ preferXrayEdges: e }),
11508
+ disabled: () => !D().snapping || !D().elementEdges
11506
11509
  },
11507
11510
  {
11508
11511
  type: "toggle",
11509
11512
  id: "alignment-rulers",
11510
11513
  label: "Alignment rulers",
11511
11514
  description: "Show the red alignment ruler while a snap is active.",
11512
- value: () => E().snapLines,
11513
- set: (e) => D({ snapLines: e }),
11514
- disabled: () => !E().snapping
11515
+ value: () => D().snapLines,
11516
+ set: (e) => O({ snapLines: e }),
11517
+ disabled: () => !D().snapping
11515
11518
  }
11516
11519
  ]
11517
11520
  }), e.command.register(fp, async () => {
11518
- let t = !T();
11519
- if (t && await Te(), e.state.update("mesurer.arrange.active", () => t), !t) {
11520
- v && ke(), Se(), be();
11521
+ let t = !E();
11522
+ if (t && await De(), e.state.update("mesurer.arrange.active", () => t), !t) {
11523
+ y && je(), we(), Se();
11521
11524
  return;
11522
11525
  }
11523
- xe(), be();
11526
+ Ce(), Se();
11524
11527
  }), e.command.register(pp, () => {
11525
- let t = y;
11526
- y = null, t && (e.state.update("mesurer.arrange.intents", (e) => ({ intents: [...e.intents, t].slice(-100) })), xe(), be());
11528
+ let t = b;
11529
+ b = null, t && (e.state.update("mesurer.arrange.intents", (e) => ({ intents: [...e.intents, t].slice(-100) })), Ce(), Se());
11527
11530
  }), e.command.register(hp, () => {
11528
- let e = b ?? ue();
11529
- b = null, _e(e);
11530
- }), e.command.register(gp, ve), e.command.register(mp, () => {
11531
- e.state.update(sp, () => ({ intents: [] })), _ = {
11531
+ let e = x ?? fe();
11532
+ x = null, ye(e);
11533
+ }), e.command.register(gp, be), e.command.register(mp, () => {
11534
+ e.state.update(sp, () => ({ intents: [] })), v = {
11532
11535
  intentId: null,
11533
11536
  state: "desired"
11534
- }, B(), V(), T() ? U() : W(), be();
11535
- }), e.service.provide(op, Le), ce(), be(), e.lifecycle.onDispose(() => {
11536
- x = !0, S && r.cancelAnimationFrame(S), C?.disconnect(), C = null, f.removeEventListener("pointerdown", Ee), f.removeEventListener("pointermove", Oe), f.removeEventListener("pointerup", Ae), f.removeEventListener("pointercancel", je), r.removeEventListener("keydown", Me, !0), r.removeEventListener("resize", we), r.removeEventListener("scroll", we, !0), o.removeEventListener("scroll", we, !0), Ne(), Pe.dispose(), B(), me(), V(), W(), i.dispose(), a.dispose();
11537
+ }, H(), U(), E() ? ee() : te(), Se();
11538
+ }), e.service.provide(op, ze), ue(), Se(), e.lifecycle.onDispose(() => {
11539
+ S = !0, C && r.cancelAnimationFrame(C), w?.disconnect(), w = null, f.removeEventListener("pointerdown", Oe), f.removeEventListener("pointermove", Ae), f.removeEventListener("pointerup", Me), f.removeEventListener("pointercancel", Ne), r.removeEventListener("keydown", Pe, !0), r.removeEventListener("resize", Ee), r.removeEventListener("scroll", Ee, !0), o.removeEventListener("scroll", Ee, !0), Fe(), Ie.dispose(), H(), ge(), U(), te(), i.dispose(), a.dispose();
11537
11540
  });
11538
11541
  }
11539
11542
  }), Jp = (e, t, n) => {
@@ -18120,7 +18123,7 @@ function Hy(e) {
18120
18123
  }
18121
18124
  //#endregion
18122
18125
  //#region src/version.ts
18123
- var Uy = "0.2.0-beta.13", Wy = ap, Gy = op, Ky = () => ({
18126
+ var Uy = "0.2.0-beta.14", Wy = ap, Gy = op, Ky = () => ({
18124
18127
  ...$p(),
18125
18128
  version: Uy
18126
18129
  }), qy = (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, Jy = (e) => {