mesurer-solid 0.1.7-beta.1 → 0.1.7-beta.2

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/arrange.js CHANGED
@@ -2918,7 +2918,7 @@ var Qn = "mesurer.arrange", $n = "arrange", er = "mesurer.arrange.intents", tr =
2918
2918
  ].join(",");
2919
2919
  //#endregion
2920
2920
  //#region src/version.ts
2921
- var Nr = "0.1.7-beta.1", Pr = tr, Fr = Qn, Ir = $n, Lr = nr, Rr = er, zr = () => ({
2921
+ var Nr = "0.1.7-beta.2", Pr = tr, Fr = Qn, Ir = $n, Lr = nr, Rr = er, zr = () => ({
2922
2922
  ...Mr(),
2923
2923
  version: Nr
2924
2924
  });
package/dist/index.js CHANGED
@@ -13731,14 +13731,18 @@ function Vm(e) {
13731
13731
  }
13732
13732
  }, ce = () => {
13733
13733
  L.clearTimeout(o), o = L.setTimeout(se, 50);
13734
- }, le = k.subscribe((e) => {
13734
+ }, le = () => {
13735
+ o && (L.clearTimeout(o), se());
13736
+ }, ue = () => le();
13737
+ L.addEventListener("pagehide", ue);
13738
+ let de = k.subscribe((e) => {
13735
13739
  if (x((e) => e + 1), V.textContent = A(), (e.reason === "state" || e.reason === "history" || e.reason === "remove" || e.reason === "replace") && ce(), S() && !c && (e.reason === "load" || e.reason === "remove" || e.reason === "replace") && oe(), e.reason === "remove" && e.pluginId?.startsWith("mesurer.")) {
13736
13740
  let t = e.pluginId.slice(8);
13737
13741
  Rm(t) && B().deactivate(t);
13738
13742
  }
13739
13743
  });
13740
13744
  N.onPluginHost?.(k);
13741
- let ue = async (e, n = e.id) => {
13745
+ let fe = async (e, n = e.id) => {
13742
13746
  if (!t) return !1;
13743
13747
  E.add(e);
13744
13748
  try {
@@ -13749,63 +13753,63 @@ function Vm(e) {
13749
13753
  E.delete(e);
13750
13754
  }
13751
13755
  return t ? !0 : (k.plugin(e.id) === e && k.remove(e.id), !1);
13752
- }, de = (e) => ue(e), fe = (e) => {
13756
+ }, pe = (e) => fe(e), me = (e) => {
13753
13757
  for (let t of k.settings()) !e.has(t.id) || h.has(t.id) || h.set(t.id, new Map((t.controls ?? []).map((e) => [e.id, e.value()])));
13754
- }, pe = async (e) => {
13758
+ }, he = async (e) => {
13755
13759
  if (!t || k.has(e.id)) return k.has(e.id);
13756
13760
  let n = new Set(k.settings().map((e) => e.id)), r = new Set(k.describe().state.map((e) => e.id));
13757
13761
  try {
13758
13762
  let i = a(await e.create());
13759
13763
  if (!t) return !1;
13760
13764
  if (i.id !== e.id) throw Error(`Available plugin ${e.id} created mismatched plugin ${i.id}.`);
13761
- if (!await ue(i, e.id)) return !1;
13765
+ if (!await fe(i, e.id)) return !1;
13762
13766
  let o = new Set(d.get(e.id) ?? e.settingsIds ?? []);
13763
13767
  for (let e of k.settings()) n.has(e.id) || o.add(e.id);
13764
13768
  d.set(e.id, o);
13765
13769
  let s = new Set(f.get(e.id) ?? []);
13766
13770
  for (let e of k.describe().state) r.has(e.id) || s.add(e.id);
13767
- f.set(e.id, s), fe(o);
13771
+ f.set(e.id, s), me(o);
13768
13772
  let c = p.get(e.id);
13769
13773
  return c && (k.state.restore(c, "persist"), p.delete(e.id)), !0;
13770
13774
  } catch (n) {
13771
13775
  return t && N.onPluginError?.(n, e.id), !1;
13772
13776
  }
13773
- }, me = (e) => {
13777
+ }, ge = (e) => {
13774
13778
  let t = f.get(e);
13775
13779
  if (!t?.size) return;
13776
13780
  let n = k.state.serialize("persist"), r = {};
13777
13781
  for (let e of t) Object.prototype.hasOwnProperty.call(n, e) && (r[e] = n[e]);
13778
13782
  Object.keys(r).length && p.set(e, r);
13779
- }, he = async (e, t, n = !0) => {
13783
+ }, _e = async (e, t, n = !0) => {
13780
13784
  let r = u.get(e);
13781
13785
  if (!(!r || m.has(e) || k.has(e) === t)) {
13782
13786
  m.add(e), x((e) => e + 1);
13783
13787
  try {
13784
- t ? await pe(r) : (n ? me(e) : p.delete(e), k.remove(e)), c || oe();
13788
+ t ? await he(r) : (n ? ge(e) : p.delete(e), k.remove(e)), c || oe();
13785
13789
  } finally {
13786
13790
  m.delete(e), x((e) => e + 1);
13787
13791
  }
13788
13792
  }
13789
- }, ge = (e) => {
13793
+ }, ve = (e) => {
13790
13794
  let t = b.then(e, e);
13791
13795
  return b = t.catch(() => void 0), t;
13792
13796
  };
13793
13797
  v = (e, t) => {
13794
- ge(async () => {
13795
- await he(e, t);
13798
+ ve(async () => {
13799
+ await _e(e, t);
13796
13800
  });
13797
- }, y = () => ge(async () => {
13801
+ }, y = () => ve(async () => {
13798
13802
  c = !0;
13799
13803
  try {
13800
13804
  await I();
13801
13805
  let e = [...u.values()].sort((e, t) => (e.order ?? 0) - (t.order ?? 0));
13802
- for (let t of e) !k.has(t.id) && !await pe(t) || (await I(d.get(t.id)), l.has(t.id) ? p.delete(t.id) : (me(t.id), k.remove(t.id)));
13806
+ for (let t of e) !k.has(t.id) && !await he(t) || (await I(d.get(t.id)), l.has(t.id) ? p.delete(t.id) : (ge(t.id), k.remove(t.id)));
13803
13807
  } finally {
13804
13808
  c = !1;
13805
13809
  }
13806
13810
  o && L.clearTimeout(o), se(), oe();
13807
13811
  });
13808
- let _e = async (e) => {
13812
+ let ye = async (e) => {
13809
13813
  if (D(e)) return;
13810
13814
  let t = w(e);
13811
13815
  if (t) {
@@ -13818,8 +13822,8 @@ function Vm(e) {
13818
13822
  T(e) && await B().run(e);
13819
13823
  };
13820
13824
  (async () => {
13821
- for (let e of s) await de(e);
13822
- if (t && (await de({
13825
+ for (let e of s) await pe(e);
13826
+ if (t && (await pe({
13823
13827
  id: "mesurer.runtime-bridge",
13824
13828
  version: i,
13825
13829
  provides: ["runtime:solid"],
@@ -13834,7 +13838,7 @@ function Vm(e) {
13834
13838
  createInspectorMount: te
13835
13839
  };
13836
13840
  e.service.provide("runtime:solid", t), Gf(e, t), Om(e, t);
13837
- for (let t of Nm) e.command.register(zm(t), () => _e(t));
13841
+ for (let t of Nm) e.command.register(zm(t), () => ye(t));
13838
13842
  }
13839
13843
  }), t)) {
13840
13844
  for (let e of [...u.values()].sort((e, t) => (e.order ?? 0) - (t.order ?? 0))) {
@@ -13843,7 +13847,7 @@ function Vm(e) {
13843
13847
  n || k.remove(e.id);
13844
13848
  continue;
13845
13849
  }
13846
- if (n && await pe(e), !t) return;
13850
+ if (n && await he(e), !t) return;
13847
13851
  }
13848
13852
  h.clear();
13849
13853
  for (let e of k.settings()) h.set(e.id, new Map((e.controls ?? []).map((e) => [e.id, e.value()])));
@@ -13859,12 +13863,12 @@ function Vm(e) {
13859
13863
  t && (C(!0), V.textContent = A(), N.onPluginsReady?.(k));
13860
13864
  }
13861
13865
  })();
13862
- let ve = (e) => {
13866
+ let be = (e) => {
13863
13867
  let t = e.key.toLowerCase(), n = e.metaKey || e.ctrlKey;
13864
13868
  return n && !e.shiftKey && !e.altKey && t === "," ? "settings" : n || e.shiftKey || e.altKey ? null : t === "s" ? "select" : t === "a" ? "text-inspector" : t === "g" ? "guides" : t === "p" ? "color-picker" : t === "x" ? "xray" : t === "r" ? "rulers" : null;
13865
- }, ye = (e) => {
13869
+ }, xe = (e) => {
13866
13870
  if (_o(e, L) || g?.current.settings.shortcutsEnabled === !1) return;
13867
- let t = ve(e);
13871
+ let t = be(e);
13868
13872
  if (t && D(t)) {
13869
13873
  e.preventDefault(), e.stopImmediatePropagation();
13870
13874
  return;
@@ -13898,10 +13902,10 @@ function Vm(e) {
13898
13902
  }
13899
13903
  (a && r === "," && !T("settings") || r === "s" && !T("select") || r === "a" && !T("text-inspector") || r === "g" && !T("guides") || (r === "h" || r === "v") && !T("guides") || r === "p" && !T("color-picker") || r === "x" && !T("xray") || r === "r" && !T("rulers") || e.key === "Alt" && !T("distance")) && (e.preventDefault(), e.stopImmediatePropagation());
13900
13904
  };
13901
- return L.addEventListener("keydown", ye, !0), () => {
13905
+ return L.addEventListener("keydown", xe, !0), () => {
13902
13906
  t = !1;
13903
13907
  for (let e of E) k.cancelLoad(e);
13904
- E.clear(), o && (L.clearTimeout(o), se()), L.removeEventListener("keydown", ye, !0), le(), V.remove(), g = null, _ = null, v = () => void 0, y = async () => void 0, r && k.dispose();
13908
+ E.clear(), le(), L.removeEventListener("pagehide", ue), L.removeEventListener("keydown", xe, !0), de(), V.remove(), g = null, _ = null, v = () => void 0, y = async () => void 0, r && k.dispose();
13905
13909
  };
13906
13910
  }), Y(uc, {
13907
13911
  runtime: {
@@ -15153,7 +15157,7 @@ async function Ah(e, t, n) {
15153
15157
  }
15154
15158
  //#endregion
15155
15159
  //#region src/version.ts
15156
- var jh = "0.1.7-beta.1", Mh = "mesurer.context", Nh = "context:v1", Ph = "mesurer.context.settings", Fh = "context.ui", Ih = {
15160
+ var jh = "0.1.7-beta.2", Mh = "mesurer.context", Nh = "context:v1", Ph = "mesurer.context.settings", Fh = "context.ui", Ih = {
15157
15161
  viewBox: "0 0 256 256",
15158
15162
  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"]
15159
15163
  }, Lh = {
@@ -1401,5 +1401,5 @@ body.mesurer-solid-xray [data-mesurer-root], body.mesurer-solid-xray [data-mesur
1401
1401
  position: fixed !important;
1402
1402
  }
1403
1403
  `,n.head.append(C);let w=(e,t)=>{let n=t.original.trim(),r=Array.from(t.names),i=[n&&n!==`none`?n:``,...r].filter(Boolean).join(`, `);i?e.style.setProperty(`anchor-name`,i,t.originalPriority):e.style.removeProperty(`anchor-name`)},T=(e,t)=>{let n=c.get(e);n||(n={original:e.style.getPropertyValue(`anchor-name`),originalPriority:e.style.getPropertyPriority(`anchor-name`),names:new Set},c.set(e,n)),n.names.add(t),w(e,n);let r=!1;return()=>{if(r)return;r=!0;let n=c.get(e);if(n){if(n.names.delete(t),n.names.size){w(e,n);return}n.original?e.style.setProperty(`anchor-name`,n.original,n.originalPriority):e.style.removeProperty(`anchor-name`),c.delete(e)}}},E=(e,t)=>{let n=`--mesurer-${t}-${++$f}`;return{target:e,name:n,release:T(e,n)}},D=(e,t,n)=>{e.dataset.mesurerNativeScrollAnchor=n,ap(e,`position-anchor`,t.name)},O=e=>{op(e.chrome),op(e.label),e.release(),e.placement.release()},k=(e,t,r,i)=>{let a=l.get(e);a&&O(a);let o=E(t,`selection`),s=dp(n,e,e.parentNode===n.body?`none`:`selection-root`),c={...o,root:e,chrome:r,label:i,placement:s};l.set(e,c),D(r,c,`box`),i&&D(i,c,`label`)},A=(e,t)=>t.find(t=>np(ep(t.getBoundingClientRect()),e))||(t.length===1?t[0]:null),j=()=>{let e=new Set;for(let t of l.keys())t.isConnected&&e.add(t);for(let t of a.querySelectorAll(`[data-mesurer-selected-measurement='true']`))t.dataset.mesurerSelectionGroup!==`true`&&e.add(t);let t=s.currentSelection().elements;for(let r of e){let e=l.get(r);if(e?.target.isConnected&&e.chrome.isConnected){if(D(e.chrome,e,`box`),e.label?.isConnected&&D(e.label,e,`label`),t.includes(e.target)||v)continue;let a=tp(e.chrome),s=A(a,t)??cp(a,n,o,i);s&&k(r,s,e.chrome,e.label);continue}e&&(O(e),l.delete(r));let a=r.children.item(0);if(!(a instanceof o.HTMLElement))continue;let s=r.children.item(r.children.length-1),c=s instanceof o.HTMLElement&&s!==a?s:null,u=tp(a),d=A(u,t)??cp(u,n,o,i);d&&k(r,d,a,c)}for(let[e,t]of Array.from(l))e.isConnected||(O(t),l.delete(e))},M=()=>{p&&=(op(p.surface),p.release(),p.placement.release(),null)},N=()=>{let e=p?.surface.isConnected?p.surface:a.querySelector(`[data-mesurer-hover-measurement='true']`);if(!e?.isConnected){M();return}let t=tp(e);if(p?.surface===e&&p.target.isConnected&&(D(e,p,`box`),v||np(ep(p.target.getBoundingClientRect()),t)))return;let r=cp(t,n,o,i);if(!r)return;M();let s=E(r,`hover`),c=dp(n,e);p={...s,surface:e,placement:c},D(e,p,`box`)},P=()=>{m&&=(op(m.ring),m.release(),null)},F=(e,t,n)=>{let i=t.getBoundingClientRect();if(i.width<=0||i.height<=0)return;let a=i.width,o=i.height,s=r.innerWidth-Zf,c=r.innerHeight-Zf,l=Math.max(Zf,s-a),u=Math.max(Zf,c-o),d=Math.min(Math.max(n.left+n.width/2-a/2,Zf),l),f=Math.min(Math.max(n.top+n.height/2-o/2,Zf),u),p=[{left:d,top:n.top-Qf-o,placement:`above`},{left:d,top:n.bottom+Qf,placement:`below`},{left:n.right+Qf,top:f,placement:`side`},{left:n.left-Qf-a,top:f,placement:`side`}],m=(e,t)=>e>=Zf&&t>=Zf&&e+a<=s&&t+o<=c,h=(e,t)=>Math.max(0,Math.min(e+a,n.right)-Math.max(e,n.left))>0&&Math.max(0,Math.min(t+o,n.bottom)-Math.max(t,n.top))>0,g=p.find(e=>m(e.left,e.top)&&!h(e.left,e.top)),_=d,v=Zf,y=`viewport`;if(g)({left:_,top:v,placement:y}=g),t.style.maxHeight=`calc(100vh - 16px)`;else{let e=[{name:`above`,top:Zf,height:Math.max(0,n.top-Qf-Zf)},{name:`below`,top:n.bottom+Qf,height:Math.max(0,c-n.bottom-Qf)}].sort((e,t)=>t.height-e.height)[0];e&&e.height>0&&(v=e.top,y=e.name,t.style.maxHeight=`${e.height}px`)}e.style.setProperty(`--mesurer-native-anchor-x`,`${_-n.left}px`),e.style.setProperty(`--mesurer-native-anchor-y`,`${v-n.top}px`),t.dataset.mesurerTextInspectorPlacement=y},I=()=>{if(!x?.isConnected){P();return}let e=x.querySelectorAll(`[data-mesurer-text-edit-ring='true']`),t=m?.ring.isConnected?m.ring:e.item(e.length-1);if(!t?.isConnected){P();return}let r=tp(t);if(!m||m.ring!==t||!m.target.isConnected||!v&&!np(ep(m.target.getBoundingClientRect()),r)){let e=cp(r,n,o,i);e&&(P(),m={...E(e,`edit`),ring:t})}if(!m)return;D(t,m,`box`);let a=ep(m.target.getBoundingClientRect()),s=new Set;for(let e of n.querySelectorAll(`[data-mesurer-text-selection-highlight='true']`)){if(!e.isConnected)continue;s.add(e);let t=tp(e);u.has(e)||u.set(e,dp(n,e)),D(e,m,`offset`),v||(e.style.setProperty(`--mesurer-native-anchor-x`,`${t.left-a.left}px`),e.style.setProperty(`--mesurer-native-anchor-y`,`${t.top-a.top}px`))}for(let[e,t]of Array.from(u))s.has(e)&&e.isConnected||(op(e),t.release(),u.delete(e));let c=x.querySelector(`[data-mesurer-text-inspector-placement-shell='true']`),l=x.querySelector(`[data-mesurer-text-inspector-info='true']`);c?.isConnected&&l?.isConnected&&(c.dataset.mesurerNativeScrollOwner=`typography`,D(c,m,`offset`),v||F(c,l,a))},L=e=>{op(e.box),op(e.card),e.release()},R=()=>{let e=new Set;for(let t of f.keys())t.isConnected&&e.add(t);for(let t of a.querySelectorAll(`.mesurer-ti-box`)){let n=t.parentElement;n?.dataset.mesurerInspectorUi===`true`&&e.add(n)}let t=new Set;for(let r of e){let e=Array.from(r.children).filter(e=>e instanceof o.HTMLElement),a=[];for(let n=0;n<e.length;n+=1){let r=e[n];if(!r.classList.contains(`mesurer-ti-box`)||r.dataset.state!==`visible`)continue;let i=e[n+1],o=i?.classList.contains(`mesurer-ti-card`)?i:null;a.push({box:r,card:o}),t.add(r)}if(a.length){f.has(r)||f.set(r,dp(n,r,`inspector-overlay`));for(let{box:e,card:t}of a){let r=tp(e),a=d.get(e);if(!a?.target.isConnected||!v&&!np(ep(a.target.getBoundingClientRect()),r)){a&&L(a);let s=cp(r,n,o,i);if(!s){d.delete(e);continue}a={...E(s,`typography`),box:e,card:t},d.set(e,a)}if(e.dataset.mesurerNativeScrollOwner=`typography`,D(e,a,`box`),t?.isConnected&&!t.classList.contains(`mesurer-ti-card--pinned`)){if(t.dataset.mesurerNativeScrollOwner=`typography`,D(t,a,`offset`),!v){let e=ep(a.target.getBoundingClientRect()),n=Number.parseFloat(t.style.left),r=Number.parseFloat(t.style.top);Number.isFinite(n)&&t.style.setProperty(`--mesurer-native-anchor-x`,`${n-e.left}px`),Number.isFinite(r)&&t.style.setProperty(`--mesurer-native-anchor-y`,`${r-e.top}px`)}}else t&&op(t)}}}for(let[e,n]of Array.from(d))t.has(e)&&e.isConnected||(L(n),d.delete(e));for(let[e,t]of Array.from(f))e.isConnected||(t.release(),f.delete(e))},z=()=>{h||(j(),N(),I(),R())},ee=(e=!1)=>{h||(g||(g=!0,r.queueMicrotask(()=>{g=!1,z()})),e&&!_&&(_=r.requestAnimationFrame(()=>{_=0,z()})))},B=new o.MutationObserver(()=>{v||ee()});B.observe(a,{subtree:!0,childList:!0}),x&&B.observe(x,{subtree:!0,childList:!0});let te=()=>{v=!0,y&&r.clearTimeout(y),y=r.setTimeout(()=>{y=0,v=!1,ee(!0)},Xf)},ne=()=>ee(!0);r.addEventListener(`scroll`,te,!0),r.addEventListener(`resize`,ne,!0),r.addEventListener(`pointermove`,ne,!0),r.addEventListener(`pointerup`,ne,!0),r.addEventListener(`dblclick`,ne,!0),ee(!0),e.lifecycle.onDispose(()=>{h=!0,B.disconnect(),_&&r.cancelAnimationFrame(_),y&&r.clearTimeout(y),r.removeEventListener(`scroll`,te,!0),r.removeEventListener(`resize`,ne,!0),r.removeEventListener(`pointermove`,ne,!0),r.removeEventListener(`pointerup`,ne,!0),r.removeEventListener(`dblclick`,ne,!0);for(let e of l.values())O(e);l.clear(),M(),P();for(let[e,t]of u)op(e),t.release();u.clear();for(let e of d.values())L(e);d.clear();for(let e of f.values())e.release();f.clear(),x&&delete x.dataset.mesurerNativeScrollRuntimeLayer,S?.release(),s.dispose();for(let[e,t]of c)t.original?e.style.setProperty(`anchor-name`,t.original,t.originalPriority):e.style.removeProperty(`anchor-name`);c.clear(),C.remove()})}var pp=`mesurer.text-edit.intents`,mp=`text-edit`,hp=`text-edit.commit`,gp=`text-edit.clear`,_p=600,vp=360,yp=24,bp=`#0d99ff`,xp=`#0f172a`,Sp=`#8a8a8a`,Cp=288,wp=`0 0 0.5px rgba(0, 0, 0, 0.18), 0 3px 8px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.1)`,Tp=new Set([`HTML`,`BODY`,`SCRIPT`,`STYLE`,`META`,`LINK`,`NOSCRIPT`,`IMG`,`VIDEO`,`AUDIO`,`IFRAME`,`INPUT`,`TEXTAREA`,`SELECT`,`OPTION`]),Ep=[`font-family`,`font-size`,`font-weight`,`font-style`,`line-height`,`letter-spacing`,`text-transform`,`color`],Dp=e=>{let{origin:t,pathname:n,search:r}=e.location;return`${t}${n}${r}`},Op=(e,t)=>`${t}-${e.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2)}`}`,kp=e=>({tag:e.fingerprintTag,id:e.fingerprintId,testId:e.fingerprintTestId,role:e.fingerprintRole,ariaLabel:e.fingerprintAriaLabel,classes:e.fingerprintClasses,text:e.fingerprintText}),Ap=e=>({property:e.property,before:e.before,desired:e.desired}),jp=e=>({id:e.id,createdAt:e.createdAt,pageUrl:e.pageUrl,selector:e.selector,nodeIndex:e.nodeIndex,before:e.beforeText,desired:e.desiredText,styles:e.styleChanges.map(Ap)}),Mp=e=>{let t=e.match(/^\s*/)?.[0]??``,n=e.slice(t.length),r=n.match(/\s*$/)?.[0]??``;return{leading:t,trailing:r,value:n.slice(0,Math.max(0,n.length-r.length))}},Np=e=>e.map(e=>({...e})),Pp=e=>(e.split(`,`)[0]??e).trim().replace(/^['"]|['"]$/g,``),Fp=e=>{if(e===`bold`)return 700;if(e===`normal`)return 400;let t=Number(e);return Number.isFinite(t)?t:400},Ip=e=>e===`transparent`||/^rgba\([^)]*,\s*0(?:\.0+)?\s*\)$/.test(e)||/^rgba\(0\s+0\s+0\s*\/\s*0(?:\.0+)?\)$/.test(e),Lp=e=>{let t=/^rgba?\(\s*(\d+(?:\.\d+)?)\D+(\d+(?:\.\d+)?)\D+(\d+(?:\.\d+)?)/.exec(e);if(!t)return`#000000`;let n=e=>Math.max(0,Math.min(255,Math.round(Number(e)))).toString(16).padStart(2,`0`);return`#${n(t[1])}${n(t[2])}${n(t[3])}`},Rp=(e,t)=>[...e.entries()].sort((e,t)=>t[1]-e[1]||e[0].localeCompare(t[0])).slice(0,t).map(([e])=>e),zp=(e,t)=>t?[t,...e.filter(e=>e!==t)]:e;function Bp(e,t){let{ownerDocument:n,ownerWindow:r,pageTarget:i}=t,a=r,o=t.createWorkspaceRuntime(),s=new Mu(n,r),c=t.createInspectorMount();c.element.dataset.mesurerTextEditRuntime=`true`,c.element.style.position=`fixed`,c.element.style.inset=`0`,c.element.style.zIndex=`2147483646`,c.element.style.pointerEvents=`none`,e.state.register({id:pp,initial:{edits:[]},history:!0,persist:!0});let l=()=>e.state.get(`mesurer.text-edit.intents`)??{edits:[]},u=new Map,d=new Map,f=new WeakMap,p=null,m=null,h=null,g=!1,_=0,v=()=>t.currentToolMode?.()??`none`,y=()=>{let e=v();return e===`text-inspector`||e===`select`},b=e=>sl(e,i)&&!e.closest(`[data-mesurer-root='true'], [data-mesurer-inspector-ui='true']`),x=e=>Array.from(e.childNodes).some(e=>e.nodeType===a.Node.TEXT_NODE&&!!e.nodeValue?.trim()),S=e=>{let t=[];i instanceof a.HTMLElement&&i.matches(e)&&b(i)&&t.push(i);for(let n of i.querySelectorAll(e))n instanceof a.HTMLElement&&b(n)&&t.push(n);return t},C=e=>{let t=u.get(e.id);if(t?.element.isConnected&&t.node.isConnected&&b(t.element))return t;u.delete(e.id);let n=kp(e);if(!dl(n))return null;let r=[];try{r=S(e.selector).filter(e=>fl(e,n))}catch{return null}if(r.length!==1)return null;if(!n.id&&!n.testId){let e=[];try{e=S(n.tag).filter(e=>fl(e,n))}catch{return null}if(e.length!==1||e[0]!==r[0])return null}let i=r[0],o=i.childNodes.item(e.nodeIndex);if(!o||o.nodeType!==a.Node.TEXT_NODE)return null;let s={element:i,node:o};return u.set(e.id,s),s},w=(e,t)=>{e.nodeValue!==t&&(f.set(e,(f.get(e)??0)+1),e.nodeValue=t)},T=(e,t)=>{let r=n.createElement(`span`);return r.style.setProperty(e,t),r.style.getPropertyValue(e)||t},E=(e,t)=>{if(e.style.getPropertyValue(t.property)===t.desired&&!e.style.getPropertyPriority(t.property)){if(t.beforeInline){e.style.setProperty(t.property,t.beforeInline,t.beforePriority);return}e.style.removeProperty(t.property)}},D=(e,t)=>{for(let n of t)E(e,n)},O=(e,t,n)=>{let r=new Map(t.map(e=>[e.property,e])),i=new Map(n.map(e=>[e.property,e])),a=new Map;for(let[t,n]of i){let i=e.style.getPropertyValue(t),o=e.style.getPropertyPriority(t);if(i!==n.desired||o)continue;let s=r.get(t);if(!s){n.beforeInline?e.style.setProperty(t,n.beforeInline,n.beforePriority):e.style.removeProperty(t);continue}i!==s.desired&&e.style.setProperty(t,s.desired),a.set(t,s)}for(let n of t){if(a.has(n.property)||i.has(n.property))continue;let t=e.style.getPropertyValue(n.property),r=e.style.getPropertyPriority(n.property);t===n.beforeInline&&r===n.beforePriority&&(e.style.setProperty(n.property,n.desired),a.set(n.property,n))}return t.filter(e=>a.has(e.property))},k=()=>{for(let e of d.values())e.node.isConnected&&e.node.nodeValue===e.desiredText&&w(e.node,e.beforeText),e.element.isConnected&&D(e.element,e.styleChanges);d.clear()},A=()=>{let e=l().edits.filter(e=>e.pageUrl===Dp(r)),t=new Set(e.map(e=>e.id));for(let[e,n]of d)t.has(e)&&n.node.isConnected&&n.element.isConnected||(n.node.isConnected&&n.node.nodeValue===n.desiredText&&w(n.node,n.beforeText),n.element.isConnected&&D(n.element,n.styleChanges),d.delete(e));for(let t of e){let e=C(t);if(!e)continue;let n=e.node.nodeValue??``,r=d.get(t.id),i=!1;r?.node===e.node&&n===r.desiredText?(n!==t.desiredText&&w(e.node,t.desiredText),i=!0):n===t.beforeText&&(w(e.node,t.desiredText),i=!0);let a=O(e.element,t.styleChanges,r?.element===e.element?r.styleChanges:[]);if(!i&&a.length===0){d.delete(t.id);continue}d.set(t.id,{...e,beforeText:t.beforeText,desiredText:t.desiredText,styleChanges:a})}},j=e=>({"font-family":e.fontFamily,"font-size":e.fontSize,"font-weight":e.fontWeight,"font-style":e.fontStyle,"line-height":e.lineHeight,"letter-spacing":e.letterSpacing,"text-transform":e.textTransform,color:e.color}),M=(e,t)=>{let n=j(t),r=JSON.stringify(n),i=e.get(r);if(i){i.count+=1;return}e.set(r,{styles:n,count:1})},N=e=>[...e.values()].sort((e,t)=>t.count-e.count)[0]??null,P=e=>{let t=new Map,n=new Map,o=new Map,s=new Map,c=[],l=new Map,u=new Map,d=null;i instanceof a.HTMLElement&&c.push(i);for(let e of i.querySelectorAll(`*`))if(e instanceof a.HTMLElement&&c.push(e),c.length>=_p)break;for(let e of c){if(!b(e)||!x(e)||Tp.has(e.tagName))continue;let i=r.getComputedStyle(e);if(i.display===`none`||i.visibility===`hidden`)continue;let a=(e,t)=>{let n=t.trim();n&&e.set(n,(e.get(n)??0)+1)};if(a(t,i.fontFamily),a(n,i.fontSize),a(o,i.fontWeight),a(s,i.color),d??=e,(e.tagName===`P`||e.tagName===`SPAN`)&&M(l,i),e.tagName===`H1`||e.tagName===`H2`||e.tagName===`H3`){let t=e.tagName,n=u.get(t)??new Map;M(n,i),u.set(t,n)}}let f=r.getComputedStyle(e),p=[{id:`text`,label:`Text`,shortcut:`0`,styles:N(l)?.styles??j(r.getComputedStyle(d??e))}];for(let[e,t,n,r]of[[`H1`,`heading-1`,`Heading 1`,`1`],[`H2`,`heading-2`,`Heading 2`,`2`],[`H3`,`heading-3`,`Heading 3`,`3`]]){let i=N(u.get(e)??new Map);i&&p.push({id:t,label:n,shortcut:r,styles:i.styles})}return{fontFamilies:zp(Rp(t,12),f.fontFamily),fontSizes:zp(Rp(n,12),f.fontSize),fontWeights:zp(Rp(o,9).sort((e,t)=>Fp(e)-Fp(t)),f.fontWeight),colors:zp(Rp(s,10),f.color),presets:p}},F=e=>{let t=e;for(;t;){let e=r.getComputedStyle(t).backgroundColor;if(e&&!Ip(e))return e;t=t.parentElement}return`Canvas`},I=(e,t)=>e.styleChanges.find(e=>e.property===t)??null,L=(e,t)=>{let r=s.getFast(e.element);if(t)e.inspectorInfo=s.getFull(e.element,r);else{let t=new Map(e.inspectorInfo.rows.map(e=>[e.label,e.varName]));e.inspectorInfo={...r,rows:r.rows.map(e=>({...e,varName:t.get(e.label)??null}))}}xu(n,e.inspectorCard,e.inspectorInfo,!1),e.inspectorCard.dataset.mesurerTextInspectorInfo=`true`,e.inspectorCard.dataset.state=`visible`,e.inspectorCard.setAttribute(`aria-label`,`Text inspector`)},R=(e,t)=>r.getComputedStyle(e.element).getPropertyValue(t).trim(),z=(e,t,n)=>{let i=T(t,n),a=I(e,t),o=a?.before??r.getComputedStyle(e.element).getPropertyValue(t).trim(),s=a?.beforeInline??e.element.style.getPropertyValue(t),c=a?.beforePriority??e.element.style.getPropertyPriority(t);if(i===o)a&&E(e.element,a),e.styleChanges=e.styleChanges.filter(e=>e.property!==t);else{e.element.style.setProperty(t,i);let n={property:t,before:o,desired:i,beforeInline:s,beforePriority:c};e.styleChanges=[...e.styleChanges.filter(e=>e.property!==t),n]}},ee=(e,t)=>{for(let[n,r]of t)z(e,n,r);me(e),L(e,!0),he()},B=(e,t,n)=>ee(e,[[t,n]]),te=(e,t)=>Ep.every(n=>{let r=t.styles[n];return r===void 0||R(e,n)===T(n,r)}),ne=e=>e.catalog.presets.find(t=>te(e,t))??null,V=(e,t)=>{e.menuOpen=!1;let n=Ep.flatMap(e=>{let n=t.styles[e];return n===void 0?[]:[[e,n]]});ee(e,n),e.editor.focus({preventScroll:!0})},re=e=>{let t=R(e,`font-weight`),n=I(e,`font-weight`);if(n&&Fp(n.desired)>=600&&Fp(n.before)<600){B(e,`font-weight`,n.before);return}B(e,`font-weight`,Fp(t)>=600?`400`:`700`)},ie=e=>{let t=R(e,`font-style`),n=I(e,`font-style`);if(n&&n.desired!==`normal`&&n.before===`normal`){B(e,`font-style`,n.before);return}B(e,`font-style`,t===`normal`?`italic`:`normal`)},ae=e=>{let t=R(e,`text-decoration-line`),n=I(e,`text-decoration-line`);if(n&&n.desired.includes(`underline`)&&!n.before.includes(`underline`)){B(e,`text-decoration-line`,n.before);return}B(e,`text-decoration-line`,t.includes(`underline`)?`none`:`underline`)},oe=(e,t,r,i,a)=>{let o=n.createElement(`button`);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,{width:`32px`,height:`32px`,border:`0`,borderRadius:`8px`,background:i?bp:`transparent`,color:i?`#ffffff`:`#000000`,font:`600 13px/1 ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif`,textDecoration:r===`Underline`?`underline`:`none`,fontStyle:r===`Italic`?`italic`:`normal`,cursor:`pointer`,outline:`none`}),o.addEventListener(`mouseenter`,()=>{i||(o.style.background=`rgba(0, 0, 0, 0.04)`)}),o.addEventListener(`mouseleave`,()=>{o.style.background=i?bp:`transparent`}),o.addEventListener(`click`,t=>{t.preventDefault(),t.stopPropagation(),m===e&&(a(),e.editor.focus({preventScroll:!0}))}),o},se=(e,t,r,i,a,o)=>{let s=n.createElement(`label`);Object.assign(s.style,{display:`grid`,gridTemplateColumns:`72px minmax(0, 1fr)`,alignItems:`center`,gap:`8px`,minHeight:`38px`,padding:`0 8px`,color:xp,font:`500 12px/1 ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif`});let c=n.createElement(`span`);c.textContent=t,c.style.color=Sp;let l=n.createElement(`select`);l.setAttribute(`aria-label`,t),l.dataset.mesurerTextStyleSelect=t.toLowerCase().replace(/\s+/g,`-`),Object.assign(l.style,{width:`100%`,height:`32px`,border:`0`,borderRadius:`8px`,background:`rgba(0, 0, 0, 0.035)`,color:xp,font:`500 12px/1 ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif`,padding:`0 8px`,cursor:`pointer`,outline:`none`});for(let e of zp(r,i)){let t=n.createElement(`option`);t.value=e,t.textContent=a(e),t.selected=e===i,l.append(t)}return l.addEventListener(`change`,()=>{m===e&&o(l.value)}),s.append(c,l),s},ce=(e,t,r,i)=>{let a=n.createElement(`label`);Object.assign(a.style,{display:`grid`,gridTemplateColumns:`72px minmax(0, 1fr)`,alignItems:`center`,gap:`8px`,minHeight:`38px`,padding:`0 8px`,color:xp,font:`500 12px/1 ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif`});let o=n.createElement(`span`);o.textContent=t,o.style.color=Sp;let s=n.createElement(`input`);s.type=`text`,s.value=i,s.setAttribute(`aria-label`,t),s.dataset.mesurerTextStyleInput=t.toLowerCase().replace(/\s+/g,`-`),Object.assign(s.style,{width:`100%`,height:`32px`,boxSizing:`border-box`,border:`0`,borderRadius:`8px`,background:`rgba(0, 0, 0, 0.035)`,color:xp,font:`500 12px/1 ui-monospace, SFMono-Regular, Menlo, monospace`,padding:`0 8px`,outline:`none`});let c=()=>{if(m!==e)return;let a=s.value.trim();if(!a){s.value=i;return}let o=n.createElement(`span`);if(o.style.setProperty(r,a),!o.style.getPropertyValue(r)){s.setCustomValidity(`Invalid ${t.toLowerCase()} value`),s.reportValidity();return}s.setCustomValidity(``),B(e,r,a)};return s.addEventListener(`change`,c),s.addEventListener(`keydown`,t=>{t.key===`Enter`&&(t.preventDefault(),t.stopPropagation(),c(),e.editor.focus({preventScroll:!0}))}),a.append(o,s),a},le=e=>/Mac|iPhone|iPad|iPod/i.test(r.navigator.platform||r.navigator.userAgent)?`⌥⌘${e}`:`Alt+Ctrl+${e}`,ue=(e,t,r)=>{let i=n.createElement(`button`);i.type=`button`,i.dataset.mesurerTextStylePreset=t.id,i.setAttribute(`aria-label`,t.label),i.setAttribute(`aria-current`,r?`true`:`false`),Object.assign(i.style,{width:`100%`,minHeight:`40px`,display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:`16px`,border:`0`,borderRadius:`8px`,padding:`0 10px`,background:r?`rgba(0, 0, 0, 0.05)`:`transparent`,color:`#111111`,cursor:`pointer`,outline:`none`,textAlign:`left`,font:t.id===`text`?`500 14px/1 ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif`:`650 14px/1 ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif`});let a=n.createElement(`span`);a.textContent=t.label;let o=n.createElement(`span`);return o.textContent=le(t.shortcut),Object.assign(o.style,{color:Sp,font:`500 12px/1 ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif`,whiteSpace:`nowrap`}),i.append(a,o),i.addEventListener(`mouseenter`,()=>{i.style.background=`rgba(0, 0, 0, 0.05)`}),i.addEventListener(`mouseleave`,()=>{i.style.background=r?`rgba(0, 0, 0, 0.05)`:`transparent`}),i.addEventListener(`click`,n=>{n.preventDefault(),n.stopPropagation(),m===e&&V(e,t)}),i},de=()=>{let e=n.createElement(`div`);return e.setAttribute(`role`,`separator`),Object.assign(e.style,{height:`1px`,margin:`5px 8px`,background:`rgba(0, 0, 0, 0.09)`}),e},fe=e=>{let t=e.menu;t.replaceChildren();let r=ne(e);for(let n of e.catalog.presets)t.append(ue(e,n,r?.id===n.id));t.append(de());let i=R(e,`font-family`),a=R(e,`font-size`),o=R(e,`font-weight`),s=R(e,`line-height`),c=R(e,`letter-spacing`),l=R(e,`color`);t.append(se(e,`Font`,e.catalog.fontFamilies,i,Pp,t=>B(e,`font-family`,t)),se(e,`Size`,e.catalog.fontSizes,a,e=>e,t=>B(e,`font-size`,t)),se(e,`Weight`,e.catalog.fontWeights,o,e=>e,t=>B(e,`font-weight`,t)),ce(e,`Line`,`line-height`,s),ce(e,`Tracking`,`letter-spacing`,c)),t.append(de());let u=n.createElement(`div`);Object.assign(u.style,{display:`grid`,gap:`7px`,padding:`5px 8px 8px`});let d=n.createElement(`div`);d.textContent=`Text color`,Object.assign(d.style,{color:Sp,font:`500 12px/1 ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif`});let f=n.createElement(`div`);f.setAttribute(`aria-label`,`Page text colors`),f.dataset.mesurerTextColorSwatches=`true`,Object.assign(f.style,{display:`flex`,alignItems:`center`,flexWrap:`wrap`,gap:`7px`});for(let t of e.catalog.colors.slice(0,10)){let r=n.createElement(`button`);r.type=`button`,r.title=`Use ${t}`,r.setAttribute(`aria-label`,`Use text color ${t}`),r.dataset.mesurerTextColor=t,Object.assign(r.style,{width:`22px`,height:`22px`,borderRadius:`50%`,border:t===l?`2px solid ${bp}`:`1px solid rgba(0, 0, 0, 0.18)`,boxShadow:t===l?`0 0 0 2px #ffffff inset`:`none`,background:t,cursor:`pointer`,padding:`0`}),r.addEventListener(`click`,n=>{n.preventDefault(),n.stopPropagation(),m===e&&B(e,`color`,t)}),f.append(r)}let p=n.createElement(`input`);p.type=`color`,p.value=Lp(l),p.title=`Custom text color`,p.setAttribute(`aria-label`,`Custom text color`),p.dataset.mesurerTextCustomColor=`true`,Object.assign(p.style,{width:`28px`,height:`28px`,border:`0`,borderRadius:`8px`,background:`rgba(0, 0, 0, 0.035)`,padding:`4px`,cursor:`pointer`}),p.addEventListener(`change`,()=>{m===e&&B(e,`color`,p.value)}),f.append(p),u.append(d,f),t.append(u),t.hidden=!e.menuOpen,t.style.display=e.menuOpen?`block`:`none`},pe=e=>{let t=ne(e),r=n.createElement(`button`);r.type=`button`,r.dataset.mesurerTextStyleMenuButton=`true`,r.setAttribute(`aria-label`,`Text style`),r.setAttribute(`aria-haspopup`,`menu`),r.setAttribute(`aria-expanded`,e.menuOpen?`true`:`false`),Object.assign(r.style,{minWidth:`96px`,height:`32px`,display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:`10px`,border:`0`,borderRadius:`8px`,background:e.menuOpen?`rgba(0, 0, 0, 0.05)`:`transparent`,color:`#111111`,padding:`0 10px`,cursor:`pointer`,outline:`none`,font:`500 13px/1 ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif`});let i=n.createElement(`span`);i.textContent=t?.label??`Text`;let a=n.createElement(`span`);return a.textContent=`⌄`,a.setAttribute(`aria-hidden`,`true`),Object.assign(a.style,{color:Sp,fontSize:`15px`,transform:e.menuOpen?`rotate(180deg)`:`none`,transformOrigin:`center`}),r.append(i,a),r.addEventListener(`mouseenter`,()=>{r.style.background=`rgba(0, 0, 0, 0.05)`}),r.addEventListener(`mouseleave`,()=>{r.style.background=e.menuOpen?`rgba(0, 0, 0, 0.05)`:`transparent`}),r.addEventListener(`click`,t=>{t.preventDefault(),t.stopPropagation(),m===e&&(e.menuOpen=!e.menuOpen,me(e),he())}),r},me=e=>{let t=e.toolbar;t.replaceChildren();let n=R(e,`font-weight`),r=R(e,`font-style`),i=R(e,`text-decoration-line`);t.append(oe(e,`B`,`Bold`,Fp(n)>=600,()=>re(e)),oe(e,`I`,`Italic`,r===`italic`||r===`oblique`,()=>ie(e)),oe(e,`U`,`Underline`,i.includes(`underline`),()=>ae(e)),pe(e)),fe(e)},he=()=>{let e=m;if(!e||!e.element.isConnected)return;let t=e.element.getBoundingClientRect(),n=r.getComputedStyle(e.element),i=Math.min(Math.max(120,t.width),Math.max(120,r.innerWidth-16)),a=Math.min(Math.max(8,t.left),Math.max(8,r.innerWidth-i-8)),o=Math.max(1,t.height),s=Math.min(Math.max(8,t.top),Math.max(8,r.innerHeight-o-8));Object.assign(e.editor.style,{left:`${a}px`,top:`${s}px`,width:`${i}px`,minHeight:`0px`,height:`${o}px`,fontFamily:n.fontFamily,fontSize:n.fontSize,fontWeight:n.fontWeight,fontStyle:n.fontStyle,lineHeight:n.lineHeight,letterSpacing:n.letterSpacing,textAlign:n.textAlign,textTransform:n.textTransform,textDecorationLine:n.textDecorationLine,color:n.color,padding:n.padding,borderRadius:n.borderRadius,background:F(e.element)});let c=e.toolbar.getBoundingClientRect(),l=Math.max(40,c.height),u=Math.max(1,e.editor.getBoundingClientRect().height),d=s+u+8,f=d+l<=r.innerHeight-8?d:Math.max(8,s-l-8),p=Math.max(0,c.width),h=Math.min(Math.max(8,a),Math.max(8,r.innerWidth-p-8));e.toolbar.style.left=`${h}px`,e.toolbar.style.top=`${f}px`;let g=f,_=f,v=!1;if(e.menuOpen){let t=e.menu.getBoundingClientRect(),n=Math.max(0,t.height),i=Math.max(Cp,t.width),a=f-n-8;v=a>=8,g=v?a:Math.min(r.innerHeight-n-8,f+l+8);let o=Math.min(Math.max(8,h+p-i),Math.max(8,r.innerWidth-i-8));e.menu.style.left=`${o}px`,e.menu.style.top=`${Math.max(8,g)}px`,_=Math.max(8,g)+n}let y=e.inspectorCard.getBoundingClientRect(),b=Math.max(0,y.height),x=Math.max(320,y.width)/2,S;if(e.menuOpen){let e=f+l+8,t=f-b-8;S=v&&e+b<=r.innerHeight-8?e:!v&&t>=8?t:v?Math.max(8,g-b-8):Math.min(r.innerHeight-b-8,_+8)}else{let e=f>=s+u,t=f+l+8;S=e&&t+b<=r.innerHeight-8?t:Math.max(8,f-b-8)}let C=Math.min(Math.max(h+p/2,8+x),r.innerWidth-8-x);e.inspectorCard.style.left=`${C}px`,e.inspectorCard.style.top=`${Math.max(8,S)}px`},ge=()=>{let e=m;e&&(e.editor.remove(),e.toolbar.remove(),e.menu.remove(),e.inspectorCard.remove(),m=null)},_e=()=>{let e=m;if(!e)return;w(e.node,e.initialText),D(e.element,e.styleChanges);let t=new Set;for(let n of e.initialStyleChanges){let r=e.element.style.getPropertyValue(n.property),i=e.element.style.getPropertyPriority(n.property);r===n.beforeInline&&i===n.beforePriority&&(e.element.style.setProperty(n.property,n.desired),t.add(n.property))}let n=d.get(e.editId);n?.element===e.element&&d.set(e.editId,{...n,styleChanges:e.initialStyleChanges.filter(e=>t.has(e.property))}),ge()},ve=()=>{let t=m;if(!t)return;let n=`${t.leading}${t.editor.value}${t.trailing}`,i=Np(t.styleChanges);if(n===t.initialText&&JSON.stringify(i)===JSON.stringify(t.initialStyleChanges)){w(t.node,t.initialText),ge();return}p={id:t.editId,createdAt:Date.now(),pageUrl:Dp(r),selector:t.selector,nodeIndex:t.nodeIndex,beforeText:t.beforeText,desiredText:n,styleChanges:i,fingerprintTag:t.fingerprint.tag,fingerprintId:t.fingerprint.id,fingerprintTestId:t.fingerprint.testId,fingerprintRole:t.fingerprint.role,fingerprintAriaLabel:t.fingerprint.ariaLabel,fingerprintClasses:t.fingerprint.classes,fingerprintText:t.fingerprint.text},u.set(t.editId,{element:t.element,node:t.node}),d.set(t.editId,{element:t.element,node:t.node,beforeText:t.beforeText,desiredText:n,styleChanges:i}),w(t.node,n),ge(),e.command.execute(hp,void 0,{source:`text-inspector`}).catch(()=>{let e=d.get(t.editId);e&&(e.node.isConnected&&e.node.nodeValue===n&&w(e.node,t.beforeText),e.element.isConnected&&D(e.element,e.styleChanges)),d.delete(t.editId)})},ye=(e,t)=>{for(let r of n.elementsFromPoint(e,t)){if(!(r instanceof a.HTMLElement)||!b(r)||Tp.has(r.tagName)||r.isContentEditable)continue;let e=Array.from(r.childNodes).map((e,t)=>({node:e,index:t})).filter(({node:e})=>e.nodeType===a.Node.TEXT_NODE&&!!e.nodeValue?.trim());if(e.length===1)return{element:r,node:e[0].node,nodeIndex:e[0].index}}return null},be=(e,t,n,i)=>{let a=Dp(r);return l().edits.find(r=>{if(r.pageUrl!==a||r.nodeIndex!==i)return!1;let o=C(r);return o?.element===e&&o.node===t||r.selector===n})??null},xe=(e,t,i)=>{if(!y())return;let a=ye(e,t);if(!a)return;i?.preventDefault(),i?.stopImmediatePropagation(),_e();let o=ll(a.element),l=ul(a.element),u=be(a.element,a.node,o,a.nodeIndex),f=a.node.nodeValue??``,p=u?d.get(u.id):void 0,h=!!(u&&p?.node===a.node&&(f===p.desiredText||p.styleChanges.length>0)),g=f,_=f,v=[],b=u?.id??Op(r,`text-edit`);if(u&&h)g=u.beforeText,_=u.desiredText,v=Np(u.styleChanges),w(a.node,_);else if(u&&f===u.beforeText){g=u.beforeText,_=u.desiredText,v=Np(u.styleChanges),w(a.node,_);let e=O(a.element,v,[]);d.set(u.id,{...a,beforeText:g,desiredText:_,styleChanges:e})}else u&&f===u.desiredText&&(g=f,_=f,v=[]);let x=Mp(_),S=n.createElement(`textarea`);S.dataset.mesurerTextEditor=`true`,S.dataset.mesurerInspectorUi=`true`,S.setAttribute(`aria-label`,`Edit text`),S.rows=1,S.value=x.value,Object.assign(S.style,{position:`fixed`,boxSizing:`border-box`,zIndex:`2147483647`,pointerEvents:`auto`,resize:`none`,overflow:`hidden`,border:`0`,outline:`none`,boxShadow:`0 0 0 2px #0d99ff, 0 8px 24px rgba(15,23,42,.18)`});let C=n.createElement(`div`);C.className=`mesurer-toolbar-surface`,C.dataset.mesurerTextStyleToolbar=`true`,C.dataset.mesurerTextStyleSurface=`toolbar`,C.dataset.mesurerInspectorUi=`true`,C.setAttribute(`role`,`toolbar`),C.setAttribute(`aria-label`,`Text styles`),Object.assign(C.style,{position:`fixed`,zIndex:`2147483647`,pointerEvents:`auto`,display:`flex`,alignItems:`center`,flexWrap:`nowrap`,gap:`4px`,maxWidth:`calc(100vw - 16px)`,padding:`4px`,borderRadius:`12px`,background:`#ffffff`,color:xp,boxShadow:wp});let T=n.createElement(`div`);T.className=`mesurer-toolbar-surface`,T.dataset.mesurerTextStyleMenu=`true`,T.dataset.mesurerInspectorUi=`true`,T.setAttribute(`role`,`menu`),T.setAttribute(`aria-label`,`Text style menu`),Object.assign(T.style,{position:`fixed`,zIndex:`2147483647`,width:`${Cp}px`,maxWidth:`calc(100vw - 16px)`,maxHeight:`min(520px, calc(100vh - 16px))`,overflowY:`auto`,pointerEvents:`auto`,boxSizing:`border-box`,padding:`6px`,borderRadius:`12px`,background:`#ffffff`,color:xp,boxShadow:wp});let E=bu(n,!1);E.dataset.mesurerTextInspectorInfo=`true`,E.dataset.mesurerInspectorUi=`true`,E.setAttribute(`aria-label`,`Text inspector`),Object.assign(E.style,{zIndex:`2147483647`,pointerEvents:`auto`,transform:`translateX(-50%)`,opacity:`1`}),c.element.append(S,C,T,E);let D=s.getFull(a.element);m={element:a.element,node:a.node,editor:S,toolbar:C,menu:T,menuOpen:!1,inspectorCard:E,inspectorInfo:D,editId:b,beforeText:g,initialText:_,leading:x.leading,trailing:x.trailing,nodeIndex:a.nodeIndex,selector:o,fingerprint:l,initialStyleChanges:Np(v),styleChanges:v,catalog:P(a.element)},me(m),L(m,!1),he(),S.addEventListener(`input`,()=>{let e=m;!e||e.editor!==S||(w(e.node,`${e.leading}${S.value}${e.trailing}`),L(e,!1),he())}),S.focus({preventScroll:!0}),S.setSelectionRange(0,S.value.length)},Se=e=>{e instanceof a.MouseEvent&&xe(e.clientX,e.clientY,e)},Ce=e=>{if(!e.pointerType||e.pointerType===`mouse`||!y())return;let t=ye(e.clientX,e.clientY);if(!t){h=null;return}let n=r.performance.now(),i=h;if(i&&i.element===t.element&&n-i.time<=vp&&Math.hypot(e.clientX-i.x,e.clientY-i.y)<=yp){h=null,xe(e.clientX,e.clientY,e);return}h={time:n,x:e.clientX,y:e.clientY,element:t.element}},we=()=>{if(_=0,!g){if(!y()){m&&_e(),k();return}A(),he()}},Te=()=>{g||_||(_=r.requestAnimationFrame(we))},Ee=e=>{let t=m;if(!t)return;let n=e.composedPath();n.includes(t.editor)||n.includes(t.toolbar)||n.includes(t.menu)||n.includes(t.inspectorCard)||ve()},De=t=>{let n=m;if(n){let e=t.composedPath().includes(n.editor);if(t.key===`Escape`){if(t.preventDefault(),t.stopImmediatePropagation(),n.menuOpen){n.menuOpen=!1,me(n),he(),n.editor.focus({preventScroll:!0});return}_e();return}if(e&&t.altKey&&(t.metaKey||t.ctrlKey)&&!t.shiftKey){let e=t.key===`0`?`text`:t.key===`1`?`heading-1`:t.key===`2`?`heading-2`:t.key===`3`?`heading-3`:null,r=e?n.catalog.presets.find(t=>t.id===e):null;if(r){t.preventDefault(),t.stopImmediatePropagation(),V(n,r);return}}if(e&&(t.metaKey||t.ctrlKey)&&!t.altKey&&!t.shiftKey){let e=t.key.toLowerCase();if(e===`b`||e===`i`||e===`u`){t.preventDefault(),t.stopImmediatePropagation(),e===`b`?re(n):e===`i`?ie(n):ae(n),n.editor.focus({preventScroll:!0});return}}e&&t.key===`Enter`&&!t.shiftKey&&(t.preventDefault(),t.stopImmediatePropagation(),ve());return}t.key===`Escape`&&v()===`text-inspector`&&e.command.execute(gp,void 0,{source:`text-inspector-clear`})},Oe=new a.MutationObserver(e=>{for(let t of e){if(t.type!==`characterData`||!(t.target instanceof a.Text))continue;let e=t.target,n=f.get(e)??0;if(n>0){n===1?f.delete(e):f.set(e,n-1);continue}for(let[t,n]of d)n.node===e&&d.delete(t)}Te()});Oe.observe(i,{childList:!0,subtree:!0,characterData:!0,attributes:!0,attributeFilter:[`id`,`class`,`data-testid`,`role`,`aria-label`]}),e.command.register(hp,()=>{let t=p;p=null,t&&e.state.update(`mesurer.text-edit.intents`,e=>{let n=e.edits.filter(e=>e.id!==t.id);return{edits:t.desiredText!==t.beforeText||t.styleChanges.length>0?[...n,t].slice(-100):n}})}),e.command.register(gp,()=>{p=null,e.state.update(pp,()=>({edits:[]}))}),e.service.provide(mp,{intents:()=>l().edits.map(jp),intent:e=>{let t=l().edits.find(t=>t.id===e);return t?jp(t):null},clear:()=>e.command.execute(gp)});let ke=o.subscribe(Te);e.state.subscribe(Te),r.addEventListener(`dblclick`,Se,!0),r.addEventListener(`pointerup`,Ce,!0),r.addEventListener(`pointerdown`,Ee,!0),r.addEventListener(`keydown`,De,!0),r.addEventListener(`resize`,Te),r.addEventListener(`scroll`,Te,!0),Te(),e.lifecycle.onDispose(()=>{g=!0,_&&r.cancelAnimationFrame(_),_=0,_e(),k(),Oe.disconnect(),ke(),r.removeEventListener(`dblclick`,Se,!0),r.removeEventListener(`pointerup`,Ce,!0),r.removeEventListener(`pointerdown`,Ee,!0),r.removeEventListener(`keydown`,De,!0),r.removeEventListener(`resize`,Te),r.removeEventListener(`scroll`,Te,!0),u.clear(),o.dispose(),c.dispose()})}var Vp=`#0d99ff`,Hp=`#8a8a8a`,Up=288,Wp=1.5,Gp=(e,t,n=2)=>Math.abs(e.left-t.left)<=n&&Math.abs(e.top-t.top)<=n&&Math.abs(e.width-t.width)<=n&&Math.abs(e.height-t.height)<=n,Kp=(e,t,n)=>Math.min(Math.max(e,t),n);function qp(e,t){let{ownerDocument:n,ownerWindow:r,pageTarget:i,portalTarget:a}=t,o=r,s=a.querySelectorAll(`[data-mesurer-text-edit-runtime='true']`),c=s.item(s.length-1);if(!c)return;let l=c.closest(`[data-mesurer-root='true']`),u=null,d=new Map,f=null,p=!1,m=null,h=null,g=null,_=0,v=!1,y=!1,b=()=>l?.querySelector(`button[data-mesurer-builtin='text-inspector']`)??null,x=()=>{for(let e of a.querySelectorAll(`.mesurer-ti-card, .mesurer-ti-box`))c.contains(e)||d.has(e)||(d.set(e,{element:e,display:e.style.getPropertyValue(`display`),displayPriority:e.style.getPropertyPriority(`display`),ariaHidden:e.getAttribute(`aria-hidden`)}),e.style.setProperty(`display`,`none`,`important`),e.setAttribute(`aria-hidden`,`true`))},S=()=>{for(let e of d.values()){let{element:t}=e;t.isConnected&&(e.display||e.displayPriority?t.style.setProperty(`display`,e.display,e.displayPriority):t.style.removeProperty(`display`),e.ariaHidden===null?t.removeAttribute(`aria-hidden`):t.setAttribute(`aria-hidden`,e.ariaHidden))}d.clear()},C=()=>{let e=f;if(!e)return;let{element:t}=e;t.isConnected&&(e.visibility||e.visibilityPriority?t.style.setProperty(`visibility`,e.visibility,e.visibilityPriority):t.style.removeProperty(`visibility`),e.pointerEvents||e.pointerEventsPriority?t.style.setProperty(`pointer-events`,e.pointerEvents,e.pointerEventsPriority):t.style.removeProperty(`pointer-events`),e.ariaHidden===null?t.removeAttribute(`aria-hidden`):t.setAttribute(`aria-hidden`,e.ariaHidden),delete t.dataset.mesurerTextInspectorAutoHidden),f=null},w=(e,t)=>{if(!t){f?.element===e&&C();return}f?.element!==e&&(C(),f={element:e,visibility:e.style.getPropertyValue(`visibility`),visibilityPriority:e.style.getPropertyPriority(`visibility`),pointerEvents:e.style.getPropertyValue(`pointer-events`),pointerEventsPriority:e.style.getPropertyPriority(`pointer-events`),ariaHidden:e.getAttribute(`aria-hidden`)},e.dataset.mesurerTextInspectorAutoHidden=`true`,e.style.setProperty(`visibility`,`hidden`,`important`),e.style.setProperty(`pointer-events`,`none`,`important`),e.setAttribute(`aria-hidden`,`true`))},T=e=>{if(!l||p===e)return;let t=b();if(p=e,e){if(l.dataset.mesurerTypographyContextActive=`true`,!t)return;u={ariaPressed:t.getAttribute(`aria-pressed`),background:t.style.backgroundColor,color:t.style.color},t.setAttribute(`aria-pressed`,`true`),t.style.backgroundColor=Vp,t.style.color=`#ffffff`;return}if(delete l.dataset.mesurerTypographyContextActive,!t||!u){u=null;return}t.classList.contains(`msr:bg-[#0d99ff]`)?t.setAttribute(`aria-pressed`,`true`):u.ariaPressed===null?t.removeAttribute(`aria-pressed`):t.setAttribute(`aria-pressed`,u.ariaPressed),t.style.backgroundColor=u.background,t.style.color=u.color,u=null},E=e=>{let t=e.dataset.mesurerTextStyleSelect??``;Object.assign(e.style,{width:`auto`,height:`32px`,maxWidth:t===`font`?`128px`:`72px`,minWidth:t===`font`?`92px`:`56px`,border:`0`,borderRadius:`8px`,background:`transparent`,color:`#0f172a`,font:`500 12px/1 ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif`,padding:`0 8px`,cursor:`pointer`,outline:`none`})},D=e=>{Object.assign(e.style,{display:`flex`,alignItems:`center`,flexWrap:`nowrap`,gap:`4px`,marginLeft:`2px`,paddingLeft:`8px`,borderLeft:`1px solid rgba(0, 0, 0, 0.10)`});let t=Array.from(e.querySelectorAll(`[data-mesurer-text-color]`));for(let[e,n]of t.entries())Object.assign(n.style,{display:e<6?`block`:`none`,width:`18px`,height:`18px`,borderRadius:`50%`,padding:`0`});let n=e.querySelector(`[data-mesurer-text-custom-color='true']`);n&&Object.assign(n.style,{width:`32px`,height:`32px`,border:`0`,borderRadius:`8px`,background:`transparent`,padding:`5px`,cursor:`pointer`})},O=e=>{e.setAttribute(`aria-label`,`Text preset`),e.style.marginLeft=`0`;let t=e.querySelectorAll(`:scope > span`),n=t.item(t.length-1);n&&(n.textContent&&=``,n.dataset.mesurerTextStyleChevron=`true`,Object.assign(n.style,{width:`7px`,height:`7px`,flex:`0 0 7px`,boxSizing:`border-box`,borderRight:`1.5px solid ${Hp}`,borderBottom:`1.5px solid ${Hp}`,color:`transparent`,fontSize:`0`,lineHeight:`0`,transform:e.getAttribute(`aria-expanded`)===`true`?`rotate(225deg)`:`rotate(45deg)`,transformOrigin:`50% 50%`}))},k=(e,t)=>{let n=e.getBoundingClientRect(),i=Math.min(Math.max(8,n.left),Math.max(8,r.innerWidth-n.width-8));if(e.style.left=`${i}px`,t.style.display!==`none`&&!t.hidden){let e=t.getBoundingClientRect(),a=Math.min(Math.max(8,i+n.width-e.width),Math.max(8,r.innerWidth-e.width-8));t.style.left=`${a}px`}},A=()=>{g?.remove(),g=null},j=()=>g?.isConnected?g:(g=n.createElement(`div`),g.dataset.mesurerTextCaret=`true`,g.dataset.mesurerInspectorUi=`true`,g.setAttribute(`aria-hidden`,`true`),Object.assign(g.style,{position:`fixed`,zIndex:`2147483647`,width:`${Wp}px`,pointerEvents:`none`,transform:`translateX(-${Wp/2}px)`,transformOrigin:`center`}),a.append(g),g.animate?.([{opacity:`1`,offset:0},{opacity:`1`,offset:.49},{opacity:`0`,offset:.5},{opacity:`0`,offset:1}],{duration:1e3,iterations:1/0}),g),M=(e,t)=>{let n=e.nodeValue??``,r=n.indexOf(t);return r>=0&&!n.slice(0,r).trim()&&!n.slice(r+t.length).trim()?{leadingLength:r}:n.trim()===t.trim()?{leadingLength:n.length-n.trimStart().length}:null},N=(e,t)=>{if(h?.node.isConnected&&h.node.parentNode===h.element){let t=M(h.node,e.value);if(t)return h.leadingLength=t.leadingLength,h}let r=t.getBoundingClientRect(),a=[[r.left+r.width/2,r.top+r.height/2],[r.left+2,r.top+2],[r.right-2,r.bottom-2]],s=[];for(let[e,t]of a)for(let r of n.elementsFromPoint(e,t))!(r instanceof o.HTMLElement)||s.includes(r)||i.contains(r)&&(r.closest(`[data-mesurer-root='true'], [data-mesurer-inspector-ui='true']`)||s.push(r));for(let t of s){if(!Gp(t.getBoundingClientRect(),r))continue;let n=Array.from(t.childNodes).filter(e=>e.nodeType===o.Node.TEXT_NODE).flatMap(t=>{let n=M(t,e.value);return n?[{node:t,leadingLength:n.leadingLength}]:[]});if(n.length===1)return h={element:t,node:n[0].node,leadingLength:n[0].leadingLength},h}return null},P=(e,t)=>{let r=n.createRange();try{r.setStart(e,t),r.collapse(!0);let n=r.getClientRects()[0]??r.getBoundingClientRect();if(n&&n.height>0)return{left:n.left,top:n.top,height:n.height}}catch{return null}let i=e.nodeValue?.length??0,a=n.createRange();try{if(t<i){a.setStart(e,t),a.setEnd(e,t+1);let n=a.getClientRects()[0]??a.getBoundingClientRect();if(n&&n.height>0)return{left:n.left,top:n.top,height:n.height}}if(t>0){a.setStart(e,t-1),a.setEnd(e,t);let n=Array.from(a.getClientRects()),r=n[n.length-1]??a.getBoundingClientRect();if(r&&r.height>0)return{left:r.right,top:r.top,height:r.height}}}catch{return null}return null},F=(e,t)=>{let i=e.selectionStart??0;if(i!==(e.selectionEnd??i)||n.activeElement!==e){A();return}let a=N(e,t);if(!a){A();return}let o=a.leadingLength+Kp(i,0,e.value.length),s=P(a.node,o);if(!s||s.left<0||s.top<0||s.left>r.innerWidth||s.top>r.innerHeight){A();return}let c=r.getComputedStyle(a.element),l=j();Object.assign(l.style,{left:`${s.left}px`,top:`${s.top}px`,height:`${Math.max(1,s.height)}px`,background:c.color&&c.color!==`transparent`?c.color:Vp})},I=()=>{if(_=0,v)return;let e=c.querySelector(`[data-mesurer-text-editor='true']`),t=a.querySelector(`[data-mesurer-text-edit-ring='true']`),n=c.querySelector(`[data-mesurer-text-inspector-info='true']`);if(!e||!t){C(),A();return}n?w(n,!1):C(),F(e,t)},L=()=>{v||_||(_=r.requestAnimationFrame(I))},R=()=>{m&&(m.removeEventListener(`input`,L),m.removeEventListener(`select`,L),m.removeEventListener(`keyup`,L),m.removeEventListener(`pointerup`,L),m.removeEventListener(`focus`,L),m.removeEventListener(`blur`,L),m=null,h=null)},z=e=>{m!==e&&(R(),m=e,e.addEventListener(`input`,L),e.addEventListener(`select`,L),e.addEventListener(`keyup`,L),e.addEventListener(`pointerup`,L),e.addEventListener(`focus`,L),e.addEventListener(`blur`,L))},ee=()=>{if(!(v||y)){y=!0;try{let e=c.querySelector(`[data-mesurer-text-editor='true']`),t=c.querySelector(`[data-mesurer-text-style-toolbar='true']`),r=c.querySelector(`[data-mesurer-text-style-menu='true']`),i=c.querySelector(`[data-mesurer-text-inspector-info='true']`);if(!e||!t||!r){R(),C(),A(),S(),T(!1);return}z(e),T(!0),x(),i&&i.setAttribute(`aria-label`,`Typography details`);let a=t.querySelector(`[data-mesurer-text-style-menu-button='true']`);if(!a)return;let s=Array.from(r.querySelectorAll(`[data-mesurer-text-style-select]`));for(let e of s){let n=e.parentElement;E(e),t.insertBefore(e,a),n?.isConnected&&n!==t&&n.remove()}let l=Array.from(r.querySelectorAll(`[data-mesurer-text-style-input]`));for(let e of l){let n=e.parentElement;t.insertBefore(e,a),n?.isConnected&&n!==t&&n.remove()}let u=r.querySelector(`[data-mesurer-text-color-swatches='true']`);if(u){let e=u.parentElement;D(u),t.insertBefore(u,a),e?.isConnected&&e!==t&&e.remove()}for(let e of Array.from(r.children))e instanceof o.HTMLButtonElement&&e.hasAttribute(`data-mesurer-text-style-preset`)||e.remove();Object.assign(r.style,{width:`${Up}px`,maxHeight:`min(260px, calc(100vh - 16px))`,overflowY:`auto`}),r.setAttribute(`aria-label`,`Text presets`);let d=t.querySelector(`[data-mesurer-text-preset-separator='true']`);d?d.nextSibling!==a&&t.insertBefore(d,a):(d=n.createElement(`span`),d.dataset.mesurerTextPresetSeparator=`true`,d.setAttribute(`aria-hidden`,`true`),Object.assign(d.style,{width:`1px`,height:`20px`,flex:`0 0 1px`,margin:`0 2px`,background:`rgba(0, 0, 0, 0.10)`}),t.insertBefore(d,a)),t.lastElementChild!==a&&t.append(a),O(a),k(t,r),L()}finally{y=!1}}},B=new o.MutationObserver(()=>ee());B.observe(c,{childList:!0,subtree:!0}),r.addEventListener(`resize`,L),r.addEventListener(`scroll`,L,!0),ee(),e.lifecycle.onDispose(()=>{v=!0,B.disconnect(),r.removeEventListener(`resize`,L),r.removeEventListener(`scroll`,L,!0),_&&r.cancelAnimationFrame(_),_=0,R(),C(),A(),S(),T(!1)})}var Jp=`#0d99ff`,Yp=`rgba(13, 153, 255, 0.22)`,Xp=new Set([`HTML`,`BODY`,`SCRIPT`,`STYLE`,`META`,`LINK`,`NOSCRIPT`,`IMG`,`VIDEO`,`AUDIO`,`IFRAME`,`INPUT`,`TEXTAREA`,`SELECT`,`OPTION`]),Zp=new WeakMap,Qp=(e,t)=>Array.from(e.childNodes).map((e,t)=>({node:e,index:t})).filter(e=>e.node.nodeType===t.Node.TEXT_NODE&&!!e.node.nodeValue?.trim()),$p=(e,t,n,r,i)=>{let a=e,o=a.caretPositionFromPoint?.(r,i);if(o?.offsetNode instanceof t.Text){let e=n.find(e=>e.node===o.offsetNode);if(e)return e}let s=a.caretRangeFromPoint?.(r,i);if(s?.startContainer instanceof t.Text){let e=n.find(e=>e.node===s.startContainer);if(e)return e}for(let t of n){let n=e.createRange();n.selectNodeContents(t.node);let a;try{a=n.getClientRects()}catch{continue}if(Array.from(a).some(e=>r>=e.left-1&&r<=e.right+1&&i>=e.top-1&&i<=e.bottom+1))return t}return null},em=(e,t,n)=>Math.min(Math.max(e,t),n);function tm(e,t){let{ownerDocument:n,ownerWindow:r,pageTarget:i}=t,a=r,o=()=>{let e=t.currentToolMode?.()??`none`;return e===`text-inspector`||e===`select`},s=e=>sl(e,i)&&!e.closest(`[data-mesurer-root='true'], [data-mesurer-inspector-ui='true']`),c=(e,i)=>{if(Zp.delete(t),o())for(let o of n.elementsFromPoint(e,i)){if(!(o instanceof a.HTMLElement)||!s(o)||Xp.has(o.tagName)||o.isContentEditable)continue;let c=Qp(o,a);if(c.length===0)continue;if(c.length===1){Zp.set(t,{element:o,node:c[0].node});return}let l=$p(n,a,c,e,i);if(!l)continue;if(Zp.set(t,{element:o,node:l.node}),Object.prototype.hasOwnProperty.call(o,`childNodes`)){Zp.delete(t);continue}let u=Array.from(o.childNodes).map((e,t)=>t===l.index||e.nodeType!==a.Node.TEXT_NODE||!e.nodeValue?.trim()?e:n.createComment(`mesurer-non-target-text`)),d=()=>u;Object.defineProperty(o,"childNodes",{configurable:!0,get:d}),r.setTimeout(()=>{Object.getOwnPropertyDescriptor(o,`childNodes`)?.get===d&&Reflect.deleteProperty(o,`childNodes`)},0);return}},l=e=>c(e.clientX,e.clientY),u=e=>{!e.pointerType||e.pointerType===`mouse`||c(e.clientX,e.clientY)};r.addEventListener(`dblclick`,l,!0),r.addEventListener(`pointerup`,u,!0),e.lifecycle.onDispose(()=>{Zp.delete(t),r.removeEventListener(`dblclick`,l,!0),r.removeEventListener(`pointerup`,u,!0)})}function nm(e,t){let{ownerDocument:n,ownerWindow:r,pageTarget:i,portalTarget:a}=t,o=r,s=a.querySelectorAll(`[data-mesurer-text-edit-runtime='true']`),c=s.item(s.length-1);if(!c)return;let l=null,u=[],d=null,f=!1,p=!1,m=()=>{l?.remove(),l=null},h=()=>{for(let e of u)e.remove();u=[]},g=e=>{let t=u[e];if(t?.isConnected)return t;let r=n.createElement(`div`);return r.dataset.mesurerTextSelectionHighlight=`true`,r.dataset.mesurerInspectorUi=`true`,r.setAttribute(`aria-hidden`,`true`),Object.assign(r.style,{position:`fixed`,zIndex:`2147483646`,pointerEvents:`none`,borderRadius:`2px`,background:Yp,transition:`none`,animation:`none`}),a.append(r),u[e]=r,r},_=e=>{for(;u.length>e;)u.pop()?.remove()},v=()=>l?.isConnected?l:(l=n.createElement(`div`),l.dataset.mesurerTextEditRing=`true`,l.dataset.mesurerInspectorUi=`true`,l.setAttribute(`aria-hidden`,`true`),Object.assign(l.style,{position:`fixed`,zIndex:`2147483647`,pointerEvents:`none`,boxSizing:`border-box`,background:`transparent`,boxShadow:`inset 0 0 0 1.5px ${Jp}`,transition:`none`,animation:`none`}),c.append(l),l),y=()=>{p||f||(f=!0,r.queueMicrotask(()=>{f=!1,S()}))},b=(e,t)=>{if(!t?.node.isConnected||t.node.parentNode!==t.element){h();return}let i=e.selectionStart??0,a=e.selectionEnd??i;if(i===a){h();return}let o=t.node.nodeValue??``,s=o.length-o.trimStart().length,c=o.length-o.trimEnd().length,l=Math.max(0,o.length-s-c),u=s+em(Math.min(i,a),0,l),d=s+em(Math.max(i,a),0,l);if(u===d){h();return}let f=n.createRange();try{f.setStart(t.node,u),f.setEnd(t.node,d)}catch{h();return}let p;try{p=Array.from(f.getClientRects()).filter(e=>e.width>0&&e.height>0&&e.right>0&&e.bottom>0&&e.left<r.innerWidth&&e.top<r.innerHeight)}catch{h();return}for(let[e,t]of p.entries()){let n=g(e);Object.assign(n.style,{left:`${t.left}px`,top:`${t.top}px`,width:`${t.width}px`,height:`${t.height}px`})}_(p.length)},x=e=>{d!==e&&(d&&(d.removeEventListener(`input`,y),d.removeEventListener(`select`,y),d.removeEventListener(`keyup`,y),d.removeEventListener(`pointerup`,y)),d=e,e.addEventListener(`input`,y),e.addEventListener(`select`,y),e.addEventListener(`keyup`,y),e.addEventListener(`pointerup`,y))},S=()=>{if(p)return;let e=c.querySelector(`[data-mesurer-text-editor='true']`);if(!e){d&&(d.removeEventListener(`input`,y),d.removeEventListener(`select`,y),d.removeEventListener(`keyup`,y),d.removeEventListener(`pointerup`,y)),d=null,h(),m();return}e.style.opacity=`0`,e.style.background=`transparent`,e.style.boxShadow=`none`,x(e);let n=Zp.get(t)??null,a=n?.element??null,o=a?.isConnected&&sl(a,i)&&!a.closest(`[data-mesurer-root='true'], [data-mesurer-inspector-ui='true']`)?a:null,s=o?.getBoundingClientRect()??e.getBoundingClientRect(),l=r.getComputedStyle(o??e),u=v();Object.assign(u.style,{left:`${s.left}px`,top:`${s.top}px`,width:`${s.width}px`,height:`${s.height}px`,borderRadius:l.borderRadius}),b(e,o?n:null)},C=()=>{S()},w=new o.MutationObserver(y);w.observe(c,{childList:!0,subtree:!0}),r.addEventListener(`resize`,y),r.addEventListener(`scroll`,C,!0),S(),e.lifecycle.onDispose(()=>{p=!0,Zp.delete(t),w.disconnect(),r.removeEventListener(`resize`,y),r.removeEventListener(`scroll`,C,!0),d&&(d.removeEventListener(`input`,y),d.removeEventListener(`select`,y),d.removeEventListener(`keyup`,y),d.removeEventListener(`pointerup`,y)),h(),m()})}var rm=`#f8fafc`,im=`#f1f5f9`,am=`#e2e8f0`,om=`#64748b`,sm=`#334155`,cm=`#0f172a`,lm=`#0d99ff`,um=8,dm=8,fm=(e,t)=>{let n=new Map,r=Array.from(e.children).filter(e=>e instanceof t.HTMLElement);for(let e=0;e+1<r.length;e+=2){let t=r[e],i=r[e+1],a=t.textContent?.trim();a&&n.set(a,{label:t,value:i})}return n},pm=e=>Array.from(e.querySelectorAll(`span`)).map(e=>e.textContent?.trim()??``).find(e=>e.startsWith(`--`))??null;function mm(e,t){let{ownerDocument:n,ownerWindow:r,portalTarget:i}=t,a=r,o=i.querySelectorAll(`[data-mesurer-text-edit-runtime='true']`),s=o.item(o.length-1);if(!s)return;let c=!1,l=!1,u=0,d=0,f=null,p=()=>{if(c)return;let e=s.querySelector(`[data-mesurer-text-editor='true']`);e?.isConnected&&e.focus({preventScroll:!0})},m=()=>{r.setTimeout(p,0)},h=e=>{if(f?.isConnected&&f.contains(e))return f;f?.remove();let t=n.createElement(`div`);return t.dataset.mesurerTextInspectorPlacementShell=`true`,t.dataset.mesurerInspectorUi=`true`,Object.assign(t.style,{position:`fixed`,left:`0px`,top:`0px`,zIndex:`2147483647`,width:`max-content`,maxWidth:`calc(100vw - 16px)`,overflow:`visible`,pointerEvents:`auto`,transition:`none`,animation:`none`}),e.before(t),t.append(e),Object.assign(e.style,{position:`static`,left:`auto`,top:`auto`,transform:`none`,zIndex:`auto`,transition:`none`,animation:`none`}),f=t,t},g=()=>{f?.remove(),f=null},_=()=>{if(c)return;let e=s.querySelector(`[data-mesurer-text-inspector-info='true']`),t=i.querySelectorAll(`[data-mesurer-text-edit-ring='true']`),n=t.item(t.length-1);if(!e?.isConnected||!n?.isConnected)return;let a=h(e);if(a.dataset.mesurerNativeScrollOwner===`typography`&&a.dataset.mesurerNativeScrollAnchor===`offset`)return;Object.assign(e.style,{position:`static`,left:`auto`,top:`auto`,transform:`none`,boxSizing:`border-box`,maxHeight:`calc(100vh - 16px)`,overflowY:`auto`,transition:`none`,animation:`none`});let o=n.getBoundingClientRect(),l=e.getBoundingClientRect();if(l.width<=0||l.height<=0)return;let u=l.width,d=l.height,f=r.innerWidth-um,p=r.innerHeight-um,m=Math.max(um,f-u),g=Math.max(um,p-d),_=Math.min(Math.max(o.left+o.width/2-u/2,um),m),v=Math.min(Math.max(o.top+o.height/2-d/2,um),g),y=[{left:_,top:o.top-dm-d,placement:`above`},{left:_,top:o.bottom+dm,placement:`below`},{left:o.right+dm,top:v,placement:`side`},{left:o.left-dm-u,top:v,placement:`side`}],b=(e,t)=>e>=um&&t>=um&&e+u<=f&&t+d<=p,x=(e,t)=>{let n=Math.max(0,Math.min(e+u,o.right)-Math.max(e,o.left)),r=Math.max(0,Math.min(t+d,o.bottom)-Math.max(t,o.top));return n>0&&r>0},S=y.find(e=>b(e.left,e.top)&&!x(e.left,e.top));if(S){a.style.left=`${S.left}px`,a.style.top=`${S.top}px`,e.dataset.mesurerTextInspectorPlacement=S.placement;return}let C=[{name:`above`,top:um,height:Math.max(0,o.top-dm-um)},{name:`below`,top:o.bottom+dm,height:Math.max(0,p-o.bottom-dm)}].sort((e,t)=>t.height-e.height)[0];if(C&&C.height>0){e.style.maxHeight=`${C.height}px`,a.style.left=`${_}px`,a.style.top=`${C.top}px`,e.dataset.mesurerTextInspectorPlacement=C.name;return}a.style.left=`${_}px`,a.style.top=`${um}px`,e.dataset.mesurerTextInspectorPlacement=`viewport`},v=()=>{c||u||(u=r.requestAnimationFrame(()=>{u=0,_()}))},y=()=>{_()},b=()=>{_(),v(),d&&r.clearTimeout(d),d=r.setTimeout(()=>{d=0,_(),v()},0)},x=e=>{Object.assign(e.style,{boxSizing:`border-box`,border:`1px solid transparent`,borderRadius:`5px`,background:rm,color:sm,outline:`none`,transition:`border-color 120ms ease, box-shadow 120ms ease, background 120ms ease`}),e.addEventListener(`mouseenter`,()=>{e.style.borderColor=am}),e.addEventListener(`mouseleave`,()=>{n.activeElement!==e&&(e.style.borderColor=`transparent`)}),e.addEventListener(`focus`,()=>{e.style.borderColor=`transparent`,e.style.boxShadow=`inset 0 0 0 1px ${lm}`}),e.addEventListener(`blur`,()=>{e.style.boxShadow=`none`,e.style.borderColor=`transparent`})},S=e=>{let t=n.createElement(`div`);t.dataset.mesurerUnifiedSelectShell=`true`,Object.assign(t.style,{position:`relative`,width:`100%`,minWidth:`0`,height:`28px`,border:`1px solid transparent`,borderRadius:`5px`,background:rm,transition:`border-color 120ms ease, box-shadow 120ms ease, background 120ms ease`}),Object.assign(e.style,{appearance:`none`,WebkitAppearance:`none`,width:`100%`,minWidth:`0`,height:`100%`,boxSizing:`border-box`,border:`0`,borderRadius:`5px`,background:`transparent`,color:sm,font:`500 11px/1 ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif`,padding:`0 27px 0 8px`,outline:`none`,cursor:`pointer`});let r=n.createElement(`span`);return r.dataset.mesurerUnifiedSelectChevron=`true`,r.setAttribute(`aria-hidden`,`true`),Object.assign(r.style,{position:`absolute`,right:`9px`,top:`8px`,width:`7px`,height:`7px`,borderRight:`1.5px solid ${om}`,borderBottom:`1.5px solid ${om}`,transform:`rotate(45deg)`,transformOrigin:`center`,pointerEvents:`none`}),t.addEventListener(`mouseenter`,()=>{t.style.borderColor=am}),t.addEventListener(`mouseleave`,()=>{n.activeElement!==e&&(t.style.borderColor=`transparent`)}),e.addEventListener(`focus`,()=>{t.style.borderColor=`transparent`,t.style.boxShadow=`inset 0 0 0 1px ${lm}`}),e.addEventListener(`blur`,()=>{t.style.boxShadow=`none`,t.style.borderColor=`transparent`}),t.append(e,r),t},C=e=>{Object.assign(e.style,{width:`100%`,minWidth:`0`,height:`28px`,font:`500 11px/1 ui-monospace, SFMono-Regular, Menlo, monospace`,padding:`0 8px`}),x(e)},w=e=>{let t=e.getAttribute(`aria-pressed`)===`true`;Object.assign(e.style,{width:`28px`,height:`28px`,border:`1px solid ${t?lm:`transparent`}`,borderRadius:`5px`,background:t?`rgba(13, 153, 255, 0.10)`:rm,color:cm,padding:`0`,fontSize:`12px`,cursor:`pointer`,transition:`border-color 120ms ease, background 120ms ease`}),e.addEventListener(`mouseenter`,()=>{t||(e.style.borderColor=am)}),e.addEventListener(`mouseleave`,()=>{e.style.borderColor=t?lm:`transparent`})},T=e=>{Object.assign(e.style,{display:`flex`,alignItems:`center`,flexWrap:`wrap`,gap:`5px`,margin:`0`,padding:`0`,border:`0`});let t=Array.from(e.querySelectorAll(`[data-mesurer-text-color]`));for(let[e,n]of t.entries())Object.assign(n.style,{display:e<7?`block`:`none`,width:`20px`,height:`20px`,padding:`0`});let n=e.querySelector(`[data-mesurer-text-custom-color='true']`);n&&(Object.assign(n.style,{display:`block`,width:`28px`,height:`28px`,border:`1px solid transparent`,borderRadius:`5px`,background:rm,padding:`3px`}),n.addEventListener(`mouseenter`,()=>{n.style.borderColor=am}),n.addEventListener(`mouseleave`,()=>{n.style.borderColor=`transparent`}))},E=e=>{Object.assign(e.style,{width:`100%`,minWidth:`0`,height:`28px`,border:`1px solid transparent`,borderRadius:`5px`,background:rm,color:sm,padding:`0 8px`,font:`500 11px/1 ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif`,transition:`border-color 120ms ease, box-shadow 120ms ease, background 120ms ease`}),e.addEventListener(`mouseenter`,()=>{e.style.borderColor=am}),e.addEventListener(`mouseleave`,()=>{e.style.borderColor=`transparent`}),e.addEventListener(`focus`,()=>{e.style.boxShadow=`inset 0 0 0 1px ${lm}`}),e.addEventListener(`blur`,()=>{e.style.boxShadow=`none`})},D=(e,t)=>{let r=n.createElement(`div`);if(Object.assign(r.style,{display:`flex`,alignItems:`center`,gap:`7px`,minWidth:`0`}),e.style.flex=`1 1 auto`,r.append(e),t){let e=n.createElement(`span`);e.textContent=t,e.title=t,Object.assign(e.style,{flex:`0 1 auto`,minWidth:`0`,maxWidth:`104px`,overflow:`hidden`,textOverflow:`ellipsis`,color:`#0369a1`,font:`500 10px/1 ui-monospace, SFMono-Regular, Menlo, monospace`}),r.append(e)}return r},O=(e,t,n)=>{if(!n)return;let r=e.get(t);if(!r)return;let i=pm(r.value);r.value.replaceChildren(D(n,i)),Object.assign(r.value.style,{overflow:`visible`,textOverflow:`clip`,whiteSpace:`normal`,fontFamily:`inherit`})},k=(e,t,r)=>{if(!r)return;let i=n.createElement(`span`);i.textContent=t,i.dataset.mesurerUnifiedTextRow=`true`,Object.assign(i.style,{color:om,fontSize:`11px`,alignSelf:`center`});let a=n.createElement(`div`);a.dataset.mesurerUnifiedTextRow=`true`,a.append(r),Object.assign(a.style,{minWidth:`0`,display:`flex`,alignItems:`center`}),e.append(i,a)},A=e=>{let t=e.target instanceof a.HTMLElement?e.target:null;if(!t||!s.contains(t))return;let n=t.closest(`[data-mesurer-text-style-menu-button='true']`);if(n){n.getAttribute(`aria-expanded`)===`true`&&p(),r.setTimeout(()=>{c||s.querySelector(`[data-mesurer-text-style-menu-button='true']`)?.getAttribute(`aria-expanded`)===`false`&&p()},0);return}t.closest(`[data-mesurer-text-style-button], [data-mesurer-text-color], [data-mesurer-text-style-preset]`)&&(p(),m())},j=e=>{let t=e.target instanceof a.HTMLElement?e.target:null;!t||!s.contains(t)||t.matches(`[data-mesurer-text-style-select], [data-mesurer-text-custom-color='true']`)&&(p(),m())},M=e=>{if(e.key!==`Enter`)return;let t=e.target instanceof a.HTMLElement?e.target:null;!t||!s.contains(t)||t.matches(`[data-mesurer-text-style-input]`)&&(p(),m())},N=()=>{if(!(c||l)){l=!0;try{let e=s.querySelector(`[data-mesurer-text-editor='true']`),t=s.querySelector(`[data-mesurer-text-style-toolbar='true']`),r=s.querySelector(`[data-mesurer-text-style-menu='true']`),i=s.querySelector(`[data-mesurer-text-inspector-info='true']`);if(!i){g();return}if(!e||!t||!r)return;let o=i.children.item(1);if(!(o instanceof a.HTMLElement))return;if(t.querySelector(`[data-mesurer-text-style-menu-button='true']`))for(let e of i.querySelectorAll(`[data-mesurer-unified-text-row='true'], [data-mesurer-unified-text-presets='true']`))e.remove();let c=fm(o,a);i.dataset.mesurerTextInspectorUnified=`true`,i.setAttribute(`aria-label`,`Typography editor`),i.removeAttribute(`aria-hidden`),i.style.removeProperty(`visibility`),Object.assign(i.style,{pointerEvents:`auto`,position:`static`,left:`auto`,top:`auto`,transform:`none`,zIndex:`auto`,boxSizing:`border-box`,width:`min(360px, calc(100vw - 16px))`,minWidth:`0`,maxWidth:`calc(100vw - 16px)`,maxHeight:`calc(100vh - 16px)`,overflowY:`auto`,padding:`11px 12px 12px`,whiteSpace:`normal`,transition:`none`,animation:`none`}),h(i),Object.assign(o.style,{gridTemplateColumns:`72px minmax(0, 1fr)`,columnGap:`10px`,rowGap:`7px`,alignItems:`center`});let l=t.querySelector(`[data-mesurer-text-style-select='font']`),u=t.querySelector(`[data-mesurer-text-style-select='size']`),d=t.querySelector(`[data-mesurer-text-style-select='weight']`),f=t.querySelector(`[data-mesurer-text-style-input='line']`),p=t.querySelector(`[data-mesurer-text-style-input='tracking']`),m=l?S(l):null,_=u?S(u):null,v=d?S(d):null;for(let e of[f,p])e&&C(e);O(c,`Family`,m),O(c,`Size`,_),O(c,`Weight`,v),O(c,`Line`,f),O(c,`Tracking`,p);let y=n.createElement(`div`);y.dataset.mesurerUnifiedTextFormat=`true`,Object.assign(y.style,{display:`flex`,alignItems:`center`,gap:`5px`});for(let e of Array.from(t.querySelectorAll(`[data-mesurer-text-style-button]`)))w(e),y.append(e);k(o,`Format`,y.childElementCount?y:null);let x=t.querySelector(`[data-mesurer-text-color-swatches='true']`);x&&T(x),k(o,`Color`,x);let D=t.querySelector(`[data-mesurer-text-style-menu-button='true']`);if(D&&E(D),k(o,`Style`,D),D?.getAttribute(`aria-expanded`)===`true`){let e=n.createElement(`div`);e.dataset.mesurerUnifiedTextPresets=`true`,Object.assign(e.style,{display:`grid`,gap:`3px`,marginTop:`9px`,paddingTop:`8px`,borderTop:`1px solid ${im}`});for(let t of Array.from(r.querySelectorAll(`[data-mesurer-text-style-preset]`)))t.style.width=`100%`,t.style.minHeight=`34px`,e.append(t);e.childElementCount&&i.append(e)}t.style.display=`none`,t.setAttribute(`aria-hidden`,`true`),r.style.display=`none`,r.setAttribute(`aria-hidden`,`true`),b()}finally{l=!1}}};s.addEventListener(`click`,A,!0),s.addEventListener(`change`,j,!0),s.addEventListener(`keydown`,M,!0),r.addEventListener(`resize`,v),r.addEventListener(`scroll`,y,!0);let P=new a.MutationObserver(N);P.observe(s,{childList:!0,subtree:!0}),N(),e.lifecycle.onDispose(()=>{c=!0,P.disconnect(),u&&r.cancelAnimationFrame(u),d&&r.clearTimeout(d),s.removeEventListener(`click`,A,!0),s.removeEventListener(`change`,j,!0),s.removeEventListener(`keydown`,M,!0),r.removeEventListener(`resize`,v),r.removeEventListener(`scroll`,y,!0),g()})}var hm=4,gm=4,_m=220,vm=60,ym=(e,t,n)=>Math.min(Math.max(e,t),n);function bm(e,t){let{ownerWindow:n,portalTarget:r}=t,i=n,a=e=>{if(e.key!==`Escape`)return;let t=e.composedPath().find(e=>e instanceof i.HTMLElement&&e.dataset.mesurerUnifiedSelectPopup===`true`),n=t instanceof i.HTMLElement?t:r.querySelector(`[data-mesurer-unified-select-popup='true']`);if(!n)return;let a=n.dataset.mesurerUnifiedSelectKind;if(!a)return;let o=n.closest(`[data-mesurer-text-inspector-info='true']`)?.querySelectorAll(`[data-mesurer-unified-select-trigger]`)??r.querySelectorAll(`[data-mesurer-unified-select-trigger]`),s=Array.from(o).find(e=>e.dataset.mesurerUnifiedSelectTrigger===a);s&&(e.preventDefault(),e.stopImmediatePropagation(),s.click())};n.addEventListener(`keydown`,a,!0),e.lifecycle.onDispose(()=>{n.removeEventListener(`keydown`,a,!0)})}function xm(e,t){let{ownerDocument:n,ownerWindow:r,portalTarget:i}=t,a=r,o=i.querySelectorAll(`[data-mesurer-text-edit-runtime='true']`),s=o.item(o.length-1);if(!s)return;let c=!1,l=!1,u=0,d=e=>{let t=e.dataset.mesurerUnifiedSelectKind;return t?Array.from(s.querySelectorAll(`[data-mesurer-unified-select-trigger]`)).find(e=>e.dataset.mesurerUnifiedSelectTrigger===t)??null:null},f=e=>{if(e.dataset.mesurerUnifiedSelectKind===`font`)for(let t of e.querySelectorAll(`[data-mesurer-unified-select-option]`)){let e=t.dataset.mesurerUnifiedSelectOption;e&&t.setAttribute(`aria-label`,e)}},p=(e,t,n)=>{let r=d(e);if(!r?.isConnected)return;let i=r.getBoundingClientRect(),a=t.getBoundingClientRect(),o=n.getBoundingClientRect();if(i.width<=0||i.height<=0||a.width<=0||a.height<=0||o.width<=0||o.height<=0)return;e.style.position=`absolute`,e.style.inset=`auto`,e.style.margin=`0`,e.style.pointerEvents=`auto`,e.style.zIndex=`2147483647`;let s=Math.max(1,o.width-8),c=Math.min(Math.max(i.width,120),s);e.style.width=`${c}px`,e.style.maxWidth=`${s}px`;let l=Math.max(1,o.height-8),u=Math.min(_m,Math.max(vm,e.scrollHeight)),f=Math.min(u,l);e.style.maxHeight=`${f}px`;let p=o.left-a.left,m=o.top-a.top,h=i.left-a.left,g=i.top-a.top,_=i.bottom-a.top,v=Math.max(0,g-m-hm-gm),y=o.bottom-a.top,b=Math.max(0,y-_-hm-gm),x=b>=f||b>=v?_+hm:g-hm-f,S=p+gm,C=Math.max(S,p+o.width-gm-c),w=m+gm,T=Math.max(w,m+o.height-gm-f);e.style.left=`${ym(h,S,C)}px`,e.style.top=`${ym(x,w,T)}px`},m=()=>{if(!(c||l)){l=!0;try{let e=s.querySelector(`[data-mesurer-text-inspector-placement-shell='true']`),t=s.querySelector(`[data-mesurer-text-inspector-info='true'][data-mesurer-text-inspector-unified='true']`);if(!e||!t)return;for(let r of Array.from(s.querySelectorAll(`[data-mesurer-unified-select-popup='true']`))){let i=n.activeElement,o=i instanceof a.HTMLElement&&r.contains(i)?i:null;(r.parentElement!==t||t.lastElementChild!==r)&&(t.append(r),o?.isConnected&&o.focus({preventScroll:!0})),f(r),p(r,e,t)}}finally{l=!1}}},h=()=>{m(),!(c||u)&&(u=r.requestAnimationFrame(()=>{u=0,m()}))},g=new a.MutationObserver(h);g.observe(s,{childList:!0,subtree:!0}),r.addEventListener(`resize`,h),r.addEventListener(`scroll`,h,!0),h(),e.lifecycle.onDispose(()=>{c=!0,g.disconnect(),u&&r.cancelAnimationFrame(u),r.removeEventListener(`resize`,h),r.removeEventListener(`scroll`,h,!0)})}var Sm=`#f8fafc`,Cm=`#f1f5f9`,wm=`#e2e8f0`,Tm=`#64748b`,Em=`#334155`,Dm=`#0f172a`,Om=`#0d99ff`,km=8,Am=4;function jm(e,t){let{ownerDocument:n,ownerWindow:r,portalTarget:i}=t,a=r,o=i.querySelectorAll(`[data-mesurer-text-edit-runtime='true']`),s=o.item(o.length-1);if(!s)return;let c=!1,l=!1,u=null,d=(e=!1)=>{let t=u;if(!t)return;t.popup.remove(),t.trigger.setAttribute(`aria-expanded`,`false`),t.chevron?.style.setProperty(`transform`,`rotate(45deg)`);let n=t.trigger.closest(`[data-mesurer-unified-select-shell='true'], [data-mesurer-unified-style-shell='true']`);n&&(n.style.boxShadow=`none`,n.style.borderColor=`transparent`),u=null,e&&t.trigger.isConnected&&t.trigger.focus({preventScroll:!0})},f=()=>{if(!u?.trigger.isConnected||!u.popup.isConnected){d();return}let e=u.trigger.getBoundingClientRect(),t=u.popup.getBoundingClientRect(),n=Math.max(e.width,Math.min(260,t.width||e.width));u.popup.style.width=`${n}px`;let i=u.popup.getBoundingClientRect(),a=r.innerWidth-km,o=r.innerHeight-km,s=Math.max(km,a-i.width),c=Math.min(Math.max(e.left,km),s),l=e.bottom+Am,f=e.top-Am-i.height,p=l+i.height<=o||f<km?Math.min(l,Math.max(km,o-i.height)):f;u.popup.style.left=`${c}px`,u.popup.style.top=`${Math.max(km,p)}px`},p=(e,t)=>{let r=n.createElement(`button`);r.type=`button`,r.dataset.mesurerUnifiedSelectOption=e.key,r.setAttribute(`role`,`option`),r.setAttribute(`aria-selected`,e.selected?`true`:`false`),r.disabled=e.disabled,Object.assign(r.style,{width:`100%`,minHeight:`30px`,display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:`12px`,boxSizing:`border-box`,border:`0`,borderRadius:`5px`,background:e.selected?Cm:`transparent`,color:e.disabled?Tm:Dm,padding:`0 9px`,textAlign:`left`,font:`${e.selected?`600`:`500`} 11px/1.2 ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif`,cursor:e.disabled?`default`:`pointer`,opacity:e.disabled?`0.55`:`1`,pointerEvents:`auto`});let i=n.createElement(`span`);if(i.textContent=e.label,Object.assign(i.style,{minWidth:`0`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`}),r.append(i),e.shortcut){let t=n.createElement(`span`);t.textContent=e.shortcut,Object.assign(t.style,{flex:`0 0 auto`,color:Tm,font:`500 10px/1 ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif`,whiteSpace:`nowrap`}),r.append(t)}return r.addEventListener(`mouseenter`,()=>{e.disabled||(r.style.background=e.selected?Cm:Sm)}),r.addEventListener(`mouseleave`,()=>{r.style.background=e.selected?Cm:`transparent`}),r.addEventListener(`click`,()=>{e.disabled||(e.activate(),d())}),r.addEventListener(`keydown`,e=>{if(e.key===`Escape`){e.preventDefault(),d(!0);return}if(e.key!==`ArrowDown`&&e.key!==`ArrowUp`)return;e.preventDefault();let t=r.closest(`[data-mesurer-unified-select-popup='true']`);if(!t)return;let n=Array.from(t.querySelectorAll(`[data-mesurer-unified-select-option]`)).filter(e=>!e.disabled),i=n.indexOf(r);i<0||n.length===0||n[(i+(e.key===`ArrowDown`?1:-1)+n.length)%n.length]?.focus({preventScroll:!0})}),r},m=(e,t,r)=>{if(u?.trigger===e){d(!0);return}d();let i=n.createElement(`div`);i.dataset.mesurerUnifiedSelectPopup=`true`,i.dataset.mesurerUnifiedSelectKind=e.dataset.mesurerUnifiedSelectTrigger??`select`,i.dataset.mesurerInspectorUi=`true`,i.setAttribute(`role`,`listbox`),Object.assign(i.style,{position:`fixed`,zIndex:`2147483647`,minWidth:`120px`,maxWidth:`min(260px, calc(100vw - 16px))`,maxHeight:`220px`,overflowY:`auto`,boxSizing:`border-box`,border:`1px solid ${wm}`,borderRadius:`8px`,background:`#ffffff`,padding:`4px`,boxShadow:`0 8px 24px rgba(15, 23, 42, 0.14), 0 2px 6px rgba(15, 23, 42, 0.08)`,pointerEvents:`auto`});for(let t of r)i.append(p(t,e));s.append(i),e.setAttribute(`aria-expanded`,`true`),t?.style.setProperty(`transform`,`rotate(225deg)`);let a=e.closest(`[data-mesurer-unified-select-shell='true'], [data-mesurer-unified-style-shell='true']`);a&&(a.style.borderColor=`transparent`,a.style.boxShadow=`inset 0 0 0 1px ${Om}`),u={popup:i,trigger:e,chevron:t},f(),(i.querySelector(`[aria-selected='true']:not(:disabled)`)??i.querySelector(`[data-mesurer-unified-select-option]:not(:disabled)`))?.focus({preventScroll:!0})},h=(e,t)=>{Object.assign(e.style,{position:`absolute`,inset:`0`,zIndex:`1`,width:`100%`,height:`100%`,boxSizing:`border-box`,border:`0`,borderRadius:`5px`,background:`transparent`,color:Em,padding:`0 28px 0 8px`,textAlign:`left`,font:`500 11px/1 ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, sans-serif`,cursor:`pointer`,outline:`none`}),e.addEventListener(`focus`,()=>{t.style.borderColor=`transparent`,t.style.boxShadow=`inset 0 0 0 1px ${Om}`}),e.addEventListener(`blur`,()=>{u?.trigger!==e&&(t.style.boxShadow=`none`)})},g=e=>{let t=e.closest(`[data-mesurer-unified-select-shell='true']`);if(!t||t.dataset.mesurerUnifiedCustomSelect===`true`)return;t.dataset.mesurerUnifiedCustomSelect=`true`,Object.assign(e.style,{position:`absolute`,inset:`0`,width:`100%`,height:`100%`,opacity:`0`,pointerEvents:`none`}),e.tabIndex=-1,e.setAttribute(`aria-hidden`,`true`);let r=e.dataset.mesurerTextStyleSelect??e.getAttribute(`aria-label`)??`select`,i=n.createElement(`button`);i.type=`button`,i.dataset.mesurerUnifiedSelectTrigger=r,i.setAttribute(`aria-haspopup`,`listbox`),i.setAttribute(`aria-expanded`,`false`),i.setAttribute(`aria-label`,e.getAttribute(`aria-label`)??r);let o=t.querySelector(`[data-mesurer-unified-select-chevron='true']`);o&&(o.style.zIndex=`2`),h(i,t);let s=()=>{let t=e.selectedOptions.item(0);i.textContent=t?.textContent?.trim()||e.value};s(),e.addEventListener(`change`,s);let c=()=>Array.from(e.options).map(t=>({key:t.value,label:t.textContent?.trim()||t.value,shortcut:null,selected:t.selected,disabled:t.disabled,activate:()=>{if(e.value===t.value){d();return}e.value=t.value,e.dispatchEvent(new a.Event(`input`,{bubbles:!0})),e.dispatchEvent(new a.Event(`change`,{bubbles:!0})),s()}}));i.addEventListener(`click`,()=>m(i,o,c())),i.addEventListener(`keydown`,e=>{if(e.key===`Escape`){d(!0);return}[`Enter`,` `,`ArrowDown`,`ArrowUp`].includes(e.key)&&(e.preventDefault(),m(i,o,c()))}),o?t.insertBefore(i,o):t.append(i)},_=e=>{let t=e.querySelector(`[data-mesurer-text-style-menu-button='true']:not([data-mesurer-unified-select-trigger='style'])`);if(!t||t.dataset.mesurerUnifiedCustomStyle===`true`)return;t.dataset.mesurerUnifiedCustomStyle=`true`,delete t.dataset.mesurerTextStyleMenuButton,t.style.display=`none`,t.tabIndex=-1,t.setAttribute(`aria-hidden`,`true`);for(let t of e.querySelectorAll(`[data-mesurer-unified-text-presets='true']`))t.remove();let r=t.parentElement;if(!r)return;let i=n.createElement(`div`);i.dataset.mesurerUnifiedStyleShell=`true`,Object.assign(i.style,{position:`relative`,width:`100%`,minWidth:`0`,height:`28px`,boxSizing:`border-box`,border:`1px solid transparent`,borderRadius:`5px`,background:Sm,transition:`border-color 120ms ease, box-shadow 120ms ease, background 120ms ease`});let a=n.createElement(`button`);a.type=`button`,a.dataset.mesurerUnifiedSelectTrigger=`style`,a.dataset.mesurerTextStyleMenuButton=`true`,a.setAttribute(`aria-haspopup`,`listbox`),a.setAttribute(`aria-expanded`,`false`),a.setAttribute(`aria-label`,`Text style`),h(a,i),i.addEventListener(`mouseenter`,()=>{i.style.borderColor=wm}),i.addEventListener(`mouseleave`,()=>{u?.trigger!==a&&n.activeElement!==a&&(i.style.borderColor=`transparent`)});let o=n.createElement(`span`);o.dataset.mesurerUnifiedSelectChevron=`true`,o.setAttribute(`aria-hidden`,`true`),Object.assign(o.style,{position:`absolute`,zIndex:`2`,right:`9px`,top:`8px`,width:`7px`,height:`7px`,borderRight:`1.5px solid ${Tm}`,borderBottom:`1.5px solid ${Tm}`,transform:`rotate(45deg)`,transformOrigin:`center`,pointerEvents:`none`});let c=s.querySelector(`[data-mesurer-text-style-menu='true']`),l=()=>c?Array.from(c.querySelectorAll(`[data-mesurer-text-style-preset]`)):[],f=()=>{let e=l(),t=e.find(e=>e.getAttribute(`aria-current`)===`true`)??e[0];a.textContent=t?.getAttribute(`aria-label`)??`Text`};f();let p=()=>l().map(e=>({key:e.dataset.mesurerTextStylePreset??e.getAttribute(`aria-label`)??`preset`,label:e.getAttribute(`aria-label`)??e.textContent?.trim()??`Text`,shortcut:e.lastElementChild?.textContent?.trim()||null,selected:e.getAttribute(`aria-current`)===`true`,disabled:e.disabled,activate:()=>{e.click(),f()}}));a.addEventListener(`click`,()=>m(a,o,p())),a.addEventListener(`keydown`,e=>{if(e.key===`Escape`){d(!0);return}[`Enter`,` `,`ArrowDown`,`ArrowUp`].includes(e.key)&&(e.preventDefault(),m(a,o,p()))}),i.append(a,o),r.append(i)},v=()=>{if(!(c||l)){l=!0;try{let e=s.querySelector(`[data-mesurer-text-inspector-info='true'][data-mesurer-text-inspector-unified='true']`);if(!e){d();return}for(let t of Array.from(e.querySelectorAll(`[data-mesurer-text-style-select]`)))g(t);_(e)}finally{l=!1}}},y=e=>{if(!u)return;let t=e.composedPath();t.includes(u.popup)||t.includes(u.trigger)||d()},b=()=>f();r.addEventListener(`pointerdown`,y,!0),r.addEventListener(`resize`,b),r.addEventListener(`scroll`,b,!0);let x=new a.MutationObserver(v);x.observe(s,{childList:!0,subtree:!0}),v(),e.lifecycle.onDispose(()=>{c=!0,x.disconnect(),d(),r.removeEventListener(`pointerdown`,y,!0),r.removeEventListener(`resize`,b),r.removeEventListener(`scroll`,b,!0)})}function Mm(e,t){tm(e,t),bm(e,t),Bp(e,t),qp(e,t),mm(e,t),nm(e,t),jm(e,t),xm(e,t),fp(e,t)}var Nm=e=>({...e,anchor:e.anchor.kind===`elements`?{kind:`elements`,region:e.anchor.region?$i(e.anchor.region):null,targets:e.anchor.targets.map(e=>({...e,fingerprint:{...e.fingerprint,classes:[...e.fingerprint.classes]},lastRect:$i(e.lastRect)}))}:{kind:`region`,rect:$i(e.anchor.rect)},baseline:{targets:e.baseline.targets.map(e=>({...e,rect:$i(e.rect)})),guides:e.baseline.guides.map(e=>({...e})),measurements:e.baseline.measurements.map(e=>({...e,rect:$i(e.rect)})),distances:e.baseline.distances.map(e=>({...e,rectA:$i(e.rectA),rectB:$i(e.rectB),horizontal:e.horizontal?{...e.horizontal}:null,vertical:e.vertical?{...e.vertical}:null}))}}),Pm=(e,t)=>`${t}-${e.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2)}`}`,Fm=e=>{let t=new Set,n=[];for(let r of e.current.selectedMeasurements){let e=r.elementRef;!e?.isConnected||t.has(e)||(t.add(e),n.push(e))}let r=e.current.selectedMeasurement?.elementRef;return r?.isConnected&&!t.has(r)&&n.push(r),n};function Im(e){let{model:t,ownerDocument:n,ownerWindow:r,uiRoot:i}=e,a=r,o=e.pageTarget??n.body??n.documentElement,s=o instanceof a.ShadowRoot?o:o.getRootNode(),c=s instanceof a.ShadowRoot?s:n,l=o,u=[],d=new Set,f=new Map,p=new Map,m=new Map,h=!1,g=0,_=null,v=!1,y=(e,t)=>`${e}:${t}`,b=e=>o===e||o.contains(e),x=e=>{let t=[];o instanceof a.HTMLElement&&o.matches(e)&&t.push(o);for(let n of c.querySelectorAll(e))n instanceof a.HTMLElement&&b(n)&&t.push(n);return t},S=()=>{for(let e of d)e()},C=e=>{if(!dl(e.fingerprint))return null;let t=[];try{t=x(e.selector).filter(t=>fl(t,e.fingerprint))}catch{return null}if(t.length!==1)return null;if(!e.fingerprint.id&&!e.fingerprint.testId){let n=[];try{n=x(e.fingerprint.tag).filter(t=>fl(t,e.fingerprint))}catch{return null}if(n.length!==1||n[0]!==t[0])return null}return t[0]??null},w=(e,t)=>{let n=y(e,t.id),r=p.get(n);if(r?.isConnected&&b(r))return r;r&&p.delete(n);let i=C(t);return i&&p.set(n,i),i},T=()=>{let e=!1;for(let t of u)if(t.anchor.kind===`elements`)for(let n of t.anchor.targets){let r=y(t.id,n.id),i=w(t.id,n),a=!!i;if(m.get(r)!==a&&(m.set(r,a),e=!0),!i)continue;let o=rl(i);(o.left!==n.lastRect.left||o.top!==n.lastRect.top||o.width!==n.lastRect.width||o.height!==n.lastRect.height)&&(n.lastRect=o,e=!0)}e&&S()},E=()=>{g||h||u.length===0||(g=r.requestAnimationFrame(()=>{g=0,T()}))},D=()=>{v||h||u.length===0||(v=!0,_=new a.MutationObserver(E),_.observe(l,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`id`,`class`,`data-testid`,`role`,`aria-label`,`style`]}),r.addEventListener(`resize`,E),r.addEventListener(`scroll`,E,!0),o.addEventListener(`scroll`,E,!0))},O=()=>{v&&(v=!1,_?.disconnect(),_=null,r.removeEventListener(`resize`,E),r.removeEventListener(`scroll`,E,!0),o.removeEventListener(`scroll`,E,!0),g&&r.cancelAnimationFrame(g),g=0)},k=t.subscribe(S),A=()=>({guides:t.current.guides,measurements:t.current.measurements,activeMeasurement:t.current.activeMeasurement,distances:t.current.heldDistances}),j=e=>aa({...e,workspace:A(),guideTolerance:10}),M=(e,t)=>({id:`target-${t+1}`,selector:ll(e),fingerprint:ul(e),lastRect:rl(e)}),N=e=>{let n=[...new Set(e.map(e=>e.trim()).filter(Boolean))];if(!n.length)throw Error(`Mesurer select() requires at least one selector.`);let i=n.map(e=>{let t;try{t=x(e)}catch{throw Error(`Invalid Mesurer selection selector: ${e}`)}if(t.length===0)throw Error(`Mesurer selection target not found: ${e}`);if(t.length>1)throw Error(`Mesurer selection target is ambiguous (${t.length} matches): ${e}`);return t[0]});t.checkpoint(),t.setEnabled(!0),t.setToolMode(`select`);let a=i.map(e=>pl(e,r));return t.setSelectedMeasurements(a,a.at(-1)??null),t.setTransient({selectionOriginRect:null}),i},P=(e,t=[])=>(u.push(e),e.anchor.kind===`elements`&&e.anchor.targets.forEach((n,r)=>{let i=t[r],a=y(e.id,n.id);i&&b(i)&&p.set(a,i),m.set(a,!!(i&&b(i)))}),D(),S(),Nm(e)),F=(e,t)=>{let n=e.trim();if(!n)throw Error(`Annotation note cannot be empty.`);let i=$i(t);return P({id:Pm(r,`annotation`),note:n,createdAt:Date.now(),anchor:{kind:`region`,rect:i},baseline:j({targets:[],region:i})})},I=e=>{let n=e.trim();if(!n)throw Error(`Annotation note cannot be empty.`);let i=Fm(t).filter(b),a=t.current.selectionOriginRect?$i(t.current.selectionOriginRect):null;if(!i.length){if(!a)throw Error(`Select a page element or drag a region before adding an annotation.`);return F(n,a)}let o=i.map(M);return P({id:Pm(r,`annotation`),note:n,createdAt:Date.now(),anchor:{kind:`elements`,targets:o,region:a},baseline:j({targets:o,elements:i})},i)},L=()=>{for(let[e,t]of f)t.value||t.priority?e.style.setProperty(`display`,t.value,t.priority):e.style.removeProperty(`display`);f.clear()};return{snapshot(){return{enabled:t.current.enabled,rulersVisible:t.current.rulersVisible,xrayVisible:t.current.xrayVisible,guideRelevanceTolerance:10,selectedMeasurements:[...t.current.selectedMeasurements],selectionOriginRect:t.current.selectionOriginRect?$i(t.current.selectionOriginRect):null,measurements:[...t.current.measurements],activeMeasurement:t.current.activeMeasurement,heldDistances:[...t.current.heldDistances],guides:t.current.guides.map(e=>({...e})),annotations:u.map(Nm)}},currentSelection(){return{elements:Fm(t).filter(b),region:t.current.selectionOriginRect?$i(t.current.selectionOriginRect):null}},select:N,hoveredElement(){return t.current.hoverElement?.isConnected&&b(t.current.hoverElement)?t.current.hoverElement:null},annotations(){return T(),u.map(Nm)},annotation(e){T();let t=u.find(t=>t.id===e);if(!t)return null;let n=Nm(t),r=[];if(n.anchor.kind===`elements`&&t.anchor.kind===`elements`){let e=t.anchor.targets;r=n.anchor.targets.map((n,r)=>({target:n,element:w(t.id,e[r])}))}return{...n,resolvedTargets:r}},annotationRect(e){let t=u.find(t=>t.id===e);if(!t)return null;if(t.anchor.kind===`region`)return $i(t.anchor.rect);let n=t.anchor.targets.map(e=>w(t.id,e)?.getBoundingClientRect()).filter(e=>e!==void 0);if(!n.length){let e=ta(t.anchor.targets.map(e=>e.lastRect));return e?$i(e):null}return ta(n.map(e=>({left:e.left,top:e.top,width:e.width,height:e.height})))},addSelectionAnnotation:I,addRegionAnnotation:F,removeAnnotation(e){let t=u.findIndex(t=>t.id===e);if(t<0)return;let[n]=u.splice(t,1);if(n.anchor.kind===`elements`)for(let e of n.anchor.targets){let t=y(n.id,e.id);p.delete(t),m.delete(t)}u.length===0&&O(),S()},subscribe(e){return d.add(e),()=>d.delete(e)},prepareCapture(){if(!i)return;let e=[`[data-mesurer-layer='chrome']`,`[data-mesurer-toolbar='true']`,`[data-mesurer-extension-toolbar='true']`,`[data-mesurer-inspector-ui='true']:not([data-mesurer-layer='evidence'])`,`.mesurer-color-picker`].join(`,`);for(let t of i.querySelectorAll(e))f.has(t)||(f.set(t,{value:t.style.getPropertyValue(`display`),priority:t.style.getPropertyPriority(`display`)}),t.style.setProperty(`display`,`none`,`important`))},finishCapture(){L()},dispose(){h||(h=!0,O(),k(),L(),p.clear(),m.clear(),u.length=0,d.clear())}}}var Lm=[`select`,`xray`,`color-picker`,`rulers`,`text-inspector`,`guides`,`settings`],Rm=`mesurer-plugin-settings`,zm=1,Bm=[{id,label:`Arrange`,order:35,create:Rd,settingsIds:[`arrange`]},{id:kf,label:`Screenshot`,order:40,create:Kf,settingsIds:[`screenshot`],hiddenSettingsControlIds:[`tool`]}],Vm=e=>(e.startsWith(`mesurer.`)?e.slice(8):e).split(/[.-]/g).filter(Boolean).map(e=>e[0]?.toUpperCase()+e.slice(1)).join(` `)||e,Hm=e=>e===`select`||e===`xray`||e===`color-picker`||e===`rulers`||e===`text-inspector`||e===`guides`||e===`distance`||e===`settings`,Um=e=>`builtin.${e}`,Wm=(e,t)=>{let n=t.toLowerCase().replaceAll(`cmd`,`meta`).split(`+`).map(e=>e.trim()).filter(Boolean);if(!n.length)return!1;let r=n.at(-1),i=new Set(n.slice(0,-1)),a=i.has(`mod`),o=i.has(`meta`),s=i.has(`ctrl`)||i.has(`control`),c=i.has(`shift`),l=i.has(`alt`)||i.has(`option`);return(a?!(e.metaKey||e.ctrlKey):o!==e.metaKey||s!==e.ctrlKey)||c!==e.shiftKey||l!==e.altKey||!a&&!o&&!s&&(e.metaKey||e.ctrlKey)?!1:e.key.toLowerCase()===r};function Gm(e){let t=xt(()=>e.pluginHost),n=t??ya(),r=!t,i=xt(()=>e.version??`0.1.0`),a=t=>e.version&&t.id.startsWith(`mesurer.`)?{...t,version:i}:t,o=new Set(xt(()=>e.excludePlugins??[])),s=xt(()=>Yd([],e.excludePlugins??[]).map(a)),c=xt(()=>[...e.plugins??[]].map(a)),l=new Set(c.map(e=>e.id)),u=new Map;for(let t of[...Bm,...xt(()=>e.availablePlugins??[])])u.set(t.id,t);for(let[e,t]of c.entries()){let n=u.get(t.id);u.set(t.id,{...n,id:t.id,label:n?.label??Vm(t.id),order:n?.order??1e3+e,create:()=>t})}let d=new Map([...u.values()].map(e=>[e.id,new Set(e.settingsIds??[])])),f=new Map,p=new Map,m=new Set,h=new Map,g=null,_=null,v=()=>void 0,y=async()=>void 0,[b,x]=G(0),[S,C]=G(!1),w=e=>(b(),n.tools().find(t=>(t.builtin===e||t.id===e)&&t.command!==Um(e))),T=e=>(b(),S()?e===`distance`?n.overlays().some(t=>t.builtin===e||t.id===e):n.tools().some(t=>t.builtin===e||t.id===e):!o.has(e)),E=()=>(b(),n.state.get(`mesurer.arrange.active`)??!1),D=e=>E()&&(e===`color-picker`||e===`text-inspector`||e===`guides`),O=W(()=>(b(),n.tools().filter(e=>e.hidden?.()?!1:!e.builtin||!Hm(e.builtin)||e.command!==Um(e.builtin)))),k=W(()=>{b();let e=n.settings();return[...u.values()].sort((e,t)=>(e.order??0)-(t.order??0)).map(t=>{let r=d.get(t.id)??new Set,i=new Set(t.hiddenSettingsControlIds??[]),a=e.filter(e=>r.has(e.id)).map(e=>({...e,controls:(e.controls??[]).filter(e=>!i.has(e.id))})).filter(e=>(e.controls?.length??0)>0);return{id:t.id,label:t.label,enabled:n.has(t.id),busy:m.has(t.id),sections:a}})}),A=()=>{b();let e=[];for(let t of Lm)(!T(t)||w(t))&&e.push(`[data-mesurer-builtin='${t}']{display:none!important}`);return(!T(`guides`)||w(`guides`))&&e.push(`[data-mesurer-builtin='guides-menu']{display:none!important}`),T(`guides`)||e.push(`[data-mesurer-guide='true']{display:none!important}`),T(`distance`)||e.push(`[data-mesurer-distance='true']{display:none!important}`),T(`rulers`)||e.push(`[data-mesurer-rulers='true']{display:none!important}`),T(`color-picker`)||e.push(`.mesurer-color-picker{display:none!important}`),e.join(`
1404
- `)},j=async(t,r=`toolbar`)=>{if(!t.disabled?.())try{await n.command.execute(t.command,void 0,{source:r,toolId:t.id})}catch(n){throw e.onPluginError?.(n,t.id),n}},M=(e,t=`toolbar`)=>{j(e,t).catch(()=>void 0)},N=(t,n)=>{n.disabled?.()||Promise.resolve(n.run()).catch(r=>{e.onPluginError?.(r,`${t.id}.${n.id}`)})},P=async(t,n,r)=>{try{await n.set(r)}catch(r){e.onPluginError?.(r,`${t}.${n.id}`)}},F=(e,t,n)=>{P(e,t,n)},I=async e=>{for(let t of n.settings()){if(e&&!e.has(t.id))continue;let n=h.get(t.id);if(n)for(let e of t.controls??[]){let r=n.get(e.id);r!==void 0&&await P(t.id,e,r)}}};return Gt(()=>{let t=!0,o=0,c=!1,b=Promise.resolve(),E=new Set,k=n,N=e,P=N.portalTarget??document.body,F=P.ownerDocument??document,L=F.defaultView??window,R=N.pageTarget??F.body,z=P,ee=()=>{if(!g)throw Error(`Mesurer renderer model is unavailable for runtime bridge setup.`);return g},B=()=>{if(!_)throw Error(`Mesurer built-in controller is unavailable for runtime bridge setup.`);return _},te=()=>{let e=F.createElement(`div`);e.dataset.mesurerInspectorUi=`true`,(z.querySelector(`[data-mesurer-root='true']`)??P).append(e);let t=!1;return{element:e,dispose(){t||(t=!0,e.remove())}}},ne=()=>Im({model:ee(),ownerDocument:F,ownerWindow:L,uiRoot:P,pageTarget:R}),V=F.createElement(`style`);V.dataset.mesurerPluginVisibility=`true`,V.dataset.mesurerInspectorUi=`true`,V.textContent=A(),P.append(V);let re=N.persistKey?`${N.persistKey}:plugins`:Rm,ie=`${re}:availability`,ae=new Map;try{let e=L.localStorage.getItem(ie);if(e){let t=JSON.parse(e);if(t?.version===zm){for(let[e,n]of Object.entries(t.enabled??{}))ae.set(e,n);for(let[e,n]of Object.entries(t.state??{}))p.set(e,n)}}}catch(e){N.onPluginError?.(e,`plugin-availability-persistence`)}let oe=()=>{let e=Object.fromEntries([...u.keys()].map(e=>[e,k.has(e)])),t=Object.fromEntries(p);try{L.localStorage.setItem(ie,JSON.stringify({version:zm,enabled:e,state:t}))}catch(e){N.onPluginError?.(e,`plugin-availability-persistence`)}},se=()=>{o=0;try{L.localStorage.setItem(re,JSON.stringify(k.state.serialize(`persist`)))}catch(e){N.onPluginError?.(e,`plugin-persistence`)}},ce=()=>{L.clearTimeout(o),o=L.setTimeout(se,50)},le=k.subscribe(e=>{if(x(e=>e+1),V.textContent=A(),(e.reason===`state`||e.reason===`history`||e.reason===`remove`||e.reason===`replace`)&&ce(),S()&&!c&&(e.reason===`load`||e.reason===`remove`||e.reason===`replace`)&&oe(),e.reason===`remove`&&e.pluginId?.startsWith(`mesurer.`)){let t=e.pluginId.slice(8);Hm(t)&&B().deactivate(t)}});N.onPluginHost?.(k);let ue=async(e,n=e.id)=>{if(!t)return!1;E.add(e);try{await k.load(e)}catch(e){return t&&N.onPluginError?.(e,n),!1}finally{E.delete(e)}return t?!0:(k.plugin(e.id)===e&&k.remove(e.id),!1)},de=e=>ue(e),fe=e=>{for(let t of k.settings())!e.has(t.id)||h.has(t.id)||h.set(t.id,new Map((t.controls??[]).map(e=>[e.id,e.value()])))},pe=async e=>{if(!t||k.has(e.id))return k.has(e.id);let n=new Set(k.settings().map(e=>e.id)),r=new Set(k.describe().state.map(e=>e.id));try{let i=a(await e.create());if(!t)return!1;if(i.id!==e.id)throw Error(`Available plugin ${e.id} created mismatched plugin ${i.id}.`);if(!await ue(i,e.id))return!1;let o=new Set(d.get(e.id)??e.settingsIds??[]);for(let e of k.settings())n.has(e.id)||o.add(e.id);d.set(e.id,o);let s=new Set(f.get(e.id)??[]);for(let e of k.describe().state)r.has(e.id)||s.add(e.id);f.set(e.id,s),fe(o);let c=p.get(e.id);return c&&(k.state.restore(c,`persist`),p.delete(e.id)),!0}catch(n){return t&&N.onPluginError?.(n,e.id),!1}},me=e=>{let t=f.get(e);if(!t?.size)return;let n=k.state.serialize(`persist`),r={};for(let e of t)Object.prototype.hasOwnProperty.call(n,e)&&(r[e]=n[e]);Object.keys(r).length&&p.set(e,r)},he=async(e,t,n=!0)=>{let r=u.get(e);if(!(!r||m.has(e)||k.has(e)===t)){m.add(e),x(e=>e+1);try{t?await pe(r):(n?me(e):p.delete(e),k.remove(e)),c||oe()}finally{m.delete(e),x(e=>e+1)}}},ge=e=>{let t=b.then(e,e);return b=t.catch(()=>void 0),t};v=(e,t)=>{ge(async()=>{await he(e,t)})},y=()=>ge(async()=>{c=!0;try{await I();let e=[...u.values()].sort((e,t)=>(e.order??0)-(t.order??0));for(let t of e)!k.has(t.id)&&!await pe(t)||(await I(d.get(t.id)),l.has(t.id)?p.delete(t.id):(me(t.id),k.remove(t.id)))}finally{c=!1}o&&L.clearTimeout(o),se(),oe()});let _e=async e=>{if(D(e))return;let t=w(e);if(t){await j(t,{source:`builtin-command`,builtin:e});return}T(e)&&await B().run(e)};(async()=>{for(let e of s)await de(e);if(t&&(await de({id:`mesurer.runtime-bridge`,version:i,provides:[`runtime:solid`],setup(e){let t={ownerDocument:F,ownerWindow:L,portalTarget:P,pageTarget:R,currentToolMode:()=>ee().current.toolMode,createWorkspaceRuntime:ne,createInspectorMount:te};e.service.provide(`runtime:solid`,t),Yf(e,t),Mm(e,t);for(let t of Lm)e.command.register(Um(t),()=>_e(t))}}),t)){for(let e of[...u.values()].sort((e,t)=>(e.order??0)-(t.order??0))){let n=ae.has(e.id)?ae.get(e.id)===!0:l.has(e.id);if(k.has(e.id)){n||k.remove(e.id);continue}if(n&&await pe(e),!t)return}h.clear();for(let e of k.settings())h.set(e.id,new Map((e.controls??[]).map(e=>[e.id,e.value()])));try{let e=L.localStorage.getItem(re);if(e){let t=JSON.parse(e);k.state.restore(t,`persist`)}}catch(e){N.onPluginError?.(e,`plugin-persistence`)}t&&(C(!0),V.textContent=A(),N.onPluginsReady?.(k))}})();let ve=e=>{let t=e.key.toLowerCase(),n=e.metaKey||e.ctrlKey;return n&&!e.shiftKey&&!e.altKey&&t===`,`?`settings`:n||e.shiftKey||e.altKey?null:t===`s`?`select`:t===`a`?`text-inspector`:t===`g`?`guides`:t===`p`?`color-picker`:t===`x`?`xray`:t===`r`?`rulers`:null},ye=e=>{if(xo(e,L)||g?.current.settings.shortcutsEnabled===!1)return;let t=ve(e);if(t&&D(t)){e.preventDefault(),e.stopImmediatePropagation();return}let n=t?w(t):void 0;if(t&&n){e.preventDefault(),e.stopImmediatePropagation(),M(n,{source:`builtin-shortcut`,builtin:t});return}let r=e.key.toLowerCase();if((r===`h`||r===`v`)&&D(`guides`)){e.preventDefault(),e.stopImmediatePropagation();return}if((r===`h`||r===`v`)&&w(`guides`)){e.preventDefault(),e.stopImmediatePropagation();return}let i=O().find(t=>t.shortcut&&!t.disabled?.()&&Wm(e,t.shortcut));if(i){e.preventDefault(),e.stopImmediatePropagation(),M(i);return}let a=e.metaKey||e.ctrlKey;if(a&&r===`z`&&(e.shiftKey?k.redo():k.undo())){e.preventDefault(),e.stopImmediatePropagation();return}(a&&r===`,`&&!T(`settings`)||r===`s`&&!T(`select`)||r===`a`&&!T(`text-inspector`)||r===`g`&&!T(`guides`)||(r===`h`||r===`v`)&&!T(`guides`)||r===`p`&&!T(`color-picker`)||r===`x`&&!T(`xray`)||r===`r`&&!T(`rulers`)||e.key===`Alt`&&!T(`distance`))&&(e.preventDefault(),e.stopImmediatePropagation())};return L.addEventListener(`keydown`,ye,!0),()=>{t=!1;for(let e of E)k.cancelLoad(e);E.clear(),o&&(L.clearTimeout(o),se()),L.removeEventListener(`keydown`,ye,!0),le(),V.remove(),g=null,_=null,v=()=>void 0,y=async()=>void 0,r&&k.dispose()}}),Y(mc,{runtime:{plugins:k,version:()=>i,setEnabled:(e,t)=>v(e,t),update:F,reset:async()=>{await y()}},get children(){return Y(eu,{value:e=>{g=e},get children(){return Y(rd,Xi(e,{get pluginTools(){return O()},onPluginTool:e=>M(e),onPluginToolMenuItem:N,isBuiltinActionDisabled:D,onBuiltinController:e=>{_=e}}))}})}})}var Km=(e,t,n)=>Math.min(Math.max(e,t),Math.max(t,n)),qm=e=>{if(!e.length)return null;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));return{left:t,top:n,width:r-t,height:i-n}},Jm=(e,t,n,r,i=8)=>{let a=r.innerWidth-t-8,o=r.innerHeight-n-8,s=e.left+e.width+i,c=e.left-t-i;return{left:s+t<=r.innerWidth-8?s:c>=8?c:Km(e.left+e.width-t,8,a),top:Km(e.top,8,o)}};function Ym(e){let[t,n]=G(0),[r,i]=G(null),[a,o]=G({}),[s,c]=G(null),[l,u]=G(!1),[d,f]=G(``),[p,m]=G(null),[h,g]=G(!1),[_,v]=G(null),[y,b]=G(null),x=null,S=null,C,w=()=>C?.ownerDocument.defaultView??window;Rt(e.runtime.subscribe(()=>n(e=>e+1)));let T=W(()=>(t(),e.runtime.currentSelection())),E=W(()=>(t(),e.runtime.annotations())),D=W(()=>{let e=r();return e?E().find(t=>t.id===e)??null:null}),O=()=>T().elements.length>0||T().region!==null,k=W(()=>{let e=T();return qm(e.elements.filter(e=>e.isConnected).map(e=>{let t=e.getBoundingClientRect();return{left:t.left,top:t.top,width:t.width,height:t.height}}))??e.region}),A=()=>{let e=T().elements.length;return e>1?`${e} selected elements`:e===1?`Selected element`:`Selected region`},j=e=>e.anchor.kind===`elements`?`${e.anchor.targets.length} selected ${e.anchor.targets.length===1?`element`:`elements`}`:`Selected region`,M=()=>{let t=T().elements;if(!t.length)return null;let n=e.runtime.hoveredElement();return t.find(e=>e===n)??t.find(e=>n&&e.contains(n))??t[0]},N=()=>{let e=M();if(!e?.isConnected)return null;let t=e.getBoundingClientRect(),n={left:t.left,top:t.top,width:t.width,height:t.height},r=w(),i=n.left+n.width,a=n.top+n.height,o=[{space:r.innerWidth-i,points:[{left:i+6,top:n.top},{left:i+6,top:a-24}]},{space:n.left,points:[{left:n.left-24-6,top:n.top},{left:n.left-24-6,top:a-24}]},{space:r.innerHeight-a,points:[{left:i-24,top:a+6},{left:n.left,top:a+6}]},{space:n.top,points:[{left:i-24,top:n.top-24-6},{left:n.left,top:n.top-24-6}]}].sort((e,t)=>t.space-e.space).flatMap(e=>e.points).find(e=>e.left>=4&&e.top>=4&&e.left+24<=r.innerWidth-4&&e.top+24<=r.innerHeight-4),s={left:i+6,top:n.top};return{left:Km((o??s).left,4,r.innerWidth-24-4),top:Km((o??s).top,4,r.innerHeight-24-4)}},P=t=>{let n=e.runtime.annotationRect(t);if(!n)return null;let r=w(),i=n.left+n.width+6,o=i+24+8,s=n.left-6-24,c=s-8-272,l=o+272<=r.innerWidth-8,u=c>=8,d=l?i:u?s:Km(i,8,r.innerWidth-24-8),f=l?o:u?c:Jm(n,272,176,r).left,p=a()[t];return{marker:{left:d,top:Km(n.top-12,4,r.innerHeight-24-4)},panel:{left:p?Km(p.left,8,r.innerWidth-272-8):f,top:Km(p?p.top:n.top,8,r.innerHeight-176-8)}}},F=e=>P(e)?.marker??null,I=()=>{let e=k(),t=w(),n=s();return n?{left:Km(n.left,8,t.innerWidth-272-8),top:Km(n.top,8,t.innerHeight-154-8)}:e?Jm(e,272,154,t):{left:8,top:8}},L=e=>P(e)?.panel??{left:8,top:8},R=e=>{u(!1),i(e),v(null)},z=(e,t)=>{let n=e.currentTarget.ownerDocument.defaultView?.Element,r=e.target;if(e.button!==0||n&&r instanceof n&&r.closest(`button`))return;let i=e.currentTarget.parentElement;if(!i)return;let a=i.getBoundingClientRect(),s=w(),l=s.document.documentElement,u=l.style.userSelect;l.style.setProperty(`user-select`,`none`,`important`),x={surfaceId:t,pointerId:e.pointerId,startX:e.clientX,startY:e.clientY,originLeft:a.left,originTop:a.top,width:a.width,height:a.height},b(t),e.preventDefault(),e.stopPropagation();let d=e=>{if(!x||e.pointerId!==x.pointerId)return;let n=x,r=Math.max(8,s.innerWidth-n.width-8),i=Math.max(8,s.innerHeight-n.height-8),a={left:Km(n.originLeft+e.clientX-n.startX,8,r),top:Km(n.originTop+e.clientY-n.startY,8,i)};t===`composer`?c(a):o(e=>({...e,[t]:a}))},f=e=>{!x||e.pointerId!==x.pointerId||(l.style.userSelect=u,s.removeEventListener(`pointermove`,d),s.removeEventListener(`pointerup`,f),s.removeEventListener(`pointercancel`,f),x=null,b(null),S=null)};s.addEventListener(`pointermove`,d),s.addEventListener(`pointerup`,f),s.addEventListener(`pointercancel`,f),S=()=>{l.style.userSelect=u,s.removeEventListener(`pointermove`,d),s.removeEventListener(`pointerup`,f),s.removeEventListener(`pointercancel`,f),b(null)}};Rt(()=>{S?.(),S=null,x=null});let ee=async(e,t)=>{if(!h()){g(!0),v(null);try{await e(),v(t)}catch(e){v(e instanceof Error?e.message:String(e))}finally{g(!1)}}},B=()=>{O()&&(m(null),v(null),i(null),c(null),u(!0))},te=()=>{u(!1),m(null),c(null)},ne=()=>{try{let t=e.runtime.addSelectionAnnotation(d());f(``),m(null),u(!1),c(null),i(t.id)}catch(e){m(e instanceof Error?e.message:String(e))}};return Gt(()=>(e.onController?.({openNoteComposer:B}),()=>e.onController?.(null))),[(()=>{var e=X(`span`,{"aria-hidden":`true`,style:{display:`none`}});return Qi(()=>e=>{C=e},e),e})(),Y(K,{get when(){return J(()=>T().elements.length>0&&!l())()?!D():T().elements.length>0&&!l()},get children(){return Y(K,{get when(){return N()},children:e=>(()=>{var t=X(`button`,{type:`button`,"data-mesurer-layer":`chrome`,"data-mesurer-inspector-ui":`true`,"data-mesurer-annotation-trigger":`true`,"aria-label":`Annotate selection`,title:`Annotate selection`,class:`msr:pointer-events-auto msr:fixed msr:z-[95] msr:flex msr:w-6 msr:h-6 msr:items-center msr:justify-center msr:rounded-[7px] msr:border msr:border-ink-200 msr:bg-white msr:text-black msr:outline-none msr:hover:bg-ink-50 msr:focus-visible:border-[#0d99ff]`,onPointerDown:e=>e.stopPropagation(),onClick:e=>{e.stopPropagation(),B()}});return Q(t,Y(Oc,{size:14})),q(()=>({left:`${e().left}px`,top:`${e().top}px`}),(e,n)=>{$(t,`style`,e,n)}),t})()})}}),Y(K,{get when(){return J(()=>!!l())()?k():l()},get children(){var e=X(`div`,{"data-mesurer-layer":`chrome`,"data-mesurer-inspector-ui":`true`,"data-mesurer-annotation-composer":`true`,class:`mesurer-menu-surface msr:pointer-events-auto msr:fixed msr:z-[95] msr:w-[272px] msr:max-w-[calc(100vw-16px)] msr:rounded-[10px] msr:border msr:border-ink-200 msr:bg-white msr:p-1.5 msr:text-black`,onPointerDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation()}),t=X(`div`,{class:`msr:flex msr:h-7 msr:items-center msr:gap-1.5 msr:px-1`,"aria-label":`Drag note composer`,onPointerDown:e=>z(e,`composer`)}),n=X(`div`,{class:`msr:min-w-0 msr:flex-1`}),r=X(`div`,{class:`msr:text-[11px] msr:font-medium msr:text-ink-900`}),i=X(`div`,{class:`msr:text-[9px] msr:text-ink-500`}),a=X(`button`,{type:`button`,class:`msr:flex msr:w-6 msr:h-6 msr:items-center msr:justify-center msr:rounded-[7px] msr:border-0 msr:bg-transparent msr:text-black msr:outline-none msr:hover:bg-black/4 msr:disabled:cursor-default msr:disabled:opacity-40`,"aria-label":`Close note composer`,title:`Close`,onClick:te}),o=X(`textarea`,{autofocus:!0,placeholder:`Describe what should change…`,onInput:e=>{f(e.currentTarget.value),m(null)},onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&(e.preventDefault(),ne()),e.key===`Escape`&&(e.preventDefault(),te())},class:`msr:box-border msr:mt-1 msr:h-20 msr:w-full msr:resize-none msr:rounded-[7px] msr:border msr:border-ink-200 msr:bg-white msr:p-2 msr:text-[12px] msr:leading-[1.4] msr:text-black msr:outline-none msr:placeholder:text-ink-400 msr:focus:border-[#0d99ff]`}),s=X(`div`,{class:`msr:mt-1.5 msr:flex msr:h-7 msr:items-center msr:justify-between msr:gap-2 msr:px-1`}),c=X(`span`,{class:`msr:text-[9px] msr:text-ink-400`}),l=X(`div`,{class:`msr:flex msr:gap-1`}),u=X(`button`,{type:`button`,class:`msr:h-7 msr:rounded-[7px] msr:border-0 msr:bg-transparent msr:px-2 msr:text-[11px] msr:text-ink-700 msr:hover:bg-black/4`,onClick:te}),h=X(`button`,{type:`button`,class:`msr:h-7 msr:rounded-[7px] msr:border-0 msr:bg-[#0d99ff] msr:px-2.5 msr:text-[11px] msr:font-medium msr:text-white msr:hover:bg-[#0b8eea]`,onClick:ne});return Z(e,t),Z(e,o),Z(e,s),Z(t,n),Z(t,a),Q(t,Y(Oc,{size:14,class:`msr:text-ink-700`}),n),Z(n,r),Z(n,i),Z(r,Ji(`Add note`)),Q(i,A),Q(a,Y(Ac,{size:14})),Q(e,Y(K,{get when(){return p()},children:e=>(()=>{var t=X(`div`,{class:`msr:mt-1.5 msr:px-1 msr:text-[10px] msr:text-red-600`});return Q(t,e),t})()}),s),Z(s,c),Z(s,l),Z(c,Ji(`⌘/Ctrl ↵`)),Z(l,u),Z(l,h),Z(u,Ji(`Cancel`)),Z(h,Ji(`Add note`)),q(()=>({e:{left:`${I().left}px`,top:`${I().top}px`},t:{cursor:y()===`composer`?`grabbing`:`grab`},a:d()}),({e:n,t:r,a:i},a)=>{n!==a?.e&&$(e,`style`,n,a?.e),r!==a?.t&&$(t,`style`,r,a?.t),i!==a?.a&&$(o,`value`,i,a?.a)}),e}}),Y(Gr,{get each(){return E()},children:(e,t)=>{let n=()=>F(e.id);return Y(K,{get when(){return n()},children:n=>(()=>{var i=X(`button`,{type:`button`,"data-mesurer-layer":`evidence`,"data-mesurer-annotation-marker":`true`,onPointerDown:t=>{t.preventDefault(),t.stopPropagation(),R(e.id)},onPointerUp:e=>e.stopPropagation(),onClick:t=>{t.preventDefault(),t.stopPropagation(),R(e.id)},class:`msr:pointer-events-auto msr:fixed msr:z-[94] msr:flex msr:w-6 msr:h-6 msr:items-center msr:justify-center msr:rounded-[7px] msr:border msr:border-[#0d99ff] msr:bg-white msr:text-[#0d99ff] msr:outline-none msr:hover:bg-[#0d99ff]/8`});return Q(i,Y(Oc,{size:14})),q(()=>({e:`Mesurer annotation ${t()+1}: ${e.note}`,t:e.note,a:r()===e.id?`true`:`false`,o:{left:`${n().left}px`,top:`${n().top}px`}}),({e,t,a:n,o:r},a)=>{e!==a?.e&&$(i,`aria-label`,e,a?.e),t!==a?.t&&$(i,`title`,t,a?.t),n!==a?.a&&$(i,`aria-expanded`,n,a?.a),r!==a?.o&&$(i,`style`,r,a?.o)}),i})()})}}),Y(K,{get when(){return D()},children:t=>{let n=()=>L(t().id);var r=X(`div`,{"data-mesurer-layer":`chrome`,"data-mesurer-inspector-ui":`true`,"data-mesurer-annotation-panel":`true`,class:`mesurer-menu-surface msr:pointer-events-auto msr:fixed msr:z-[95] msr:w-[272px] msr:max-h-[220px] msr:rounded-[10px] msr:border msr:border-ink-200 msr:bg-white msr:p-1.5 msr:text-black`,onPointerDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation()}),a=X(`div`,{class:`msr:flex msr:h-7 msr:items-center msr:gap-1.5 msr:px-1`,"aria-label":`Drag annotation panel`,onPointerDown:e=>z(e,t().id)}),s=X(`div`,{class:`msr:min-w-0 msr:flex-1`}),c=X(`div`,{class:`msr:text-[11px] msr:font-medium msr:text-ink-700`}),l=Ji(`Note `),u=X(`div`,{class:`msr:text-[9px] msr:text-ink-500`}),d=X(`div`,{class:`msr:flex msr:items-center msr:gap-0.5`}),f=X(`button`,{type:`button`,class:`msr:flex msr:w-6 msr:h-6 msr:items-center msr:justify-center msr:rounded-[7px] msr:border-0 msr:bg-transparent msr:text-black msr:outline-none msr:hover:bg-black/4 msr:disabled:cursor-default msr:disabled:opacity-40`,"aria-label":`Copy annotation context`,title:`Copy context`,onClick:()=>void ee(()=>e.onCopy({annotation:t().id}),`Copied`)}),p=X(`button`,{type:`button`,class:`msr:flex msr:w-6 msr:h-6 msr:items-center msr:justify-center msr:rounded-[7px] msr:border-0 msr:bg-transparent msr:text-black msr:outline-none msr:hover:bg-black/4 msr:disabled:cursor-default msr:disabled:opacity-40`,"aria-label":`Delete annotation`,title:`Delete`,onClick:()=>{e.runtime.removeAnnotation(t().id),o(e=>{let n={...e};return delete n[t().id],n}),i(null),v(null)}}),m=X(`button`,{type:`button`,class:`msr:flex msr:w-6 msr:h-6 msr:items-center msr:justify-center msr:rounded-[7px] msr:border-0 msr:bg-transparent msr:text-black msr:outline-none msr:hover:bg-black/4 msr:disabled:cursor-default msr:disabled:opacity-40`,"aria-label":`Close annotation`,title:`Close`,onClick:()=>{i(null),v(null)}}),g=X(`div`,{class:`msr:mx-1 msr:mt-1 msr:max-h-36 msr:overflow-auto msr:whitespace-pre-wrap msr:rounded-[7px] msr:bg-ink-50 msr:px-2 msr:py-2 msr:text-[12px] msr:leading-[1.45] msr:text-ink-800`});return Z(r,a),Z(r,g),Z(a,s),Z(a,d),Q(a,Y(Oc,{size:14,class:`msr:text-[#0d99ff]`}),s),Z(s,c),Z(s,u),Z(c,l),Q(c,()=>E().findIndex(e=>e.id===t().id)+1,null),Q(u,()=>j(t())),Z(d,f),Z(d,p),Z(d,m),Q(f,Y(Dc,{size:14})),Q(p,Y(kc,{size:14})),Q(m,Y(Ac,{size:14})),Q(g,()=>t().note),Q(r,Y(K,{get when(){return _()},children:e=>(()=>{var t=X(`div`,{class:`msr:mt-1.5 msr:px-1 msr:text-[10px] msr:text-ink-500`,role:`status`});return Q(t,e),t})()}),null),q(()=>({e:{left:`${n().left}px`,top:`${n().top}px`},t:{cursor:y()===t().id?`grabbing`:`grab`},a:h()}),({e,t,a:n},i)=>{e!==i?.e&&$(r,`style`,e,i?.e),t!==i?.t&&$(a,`style`,t,i?.t),n!==i?.a&&$(f,`disabled`,n,i?.a)}),r}})]}var Xm=e=>Number.parseFloat(e)||0,Zm=0,Qm=(e,t)=>{let n=t.CSS;return n?.escape?n.escape(e):e.replace(/[^a-zA-Z0-9_-]/g,e=>`\\${e}`)},$m=e=>e.nodeType===9,eh=e=>e.nodeType===11;function th(e){let t=e.getRootNode();return eh(t)?t:e.ownerDocument}var nh=(e,t)=>{if($m(e)||eh(e))return e;let n=th(e);return eh(n)?n:t};function rh(e,t,n=$m(t)?t:t.ownerDocument??document){let r=nh(t,n).elementFromPoint(e.x,e.y);for(;r?.shadowRoot;){let t=r.shadowRoot.elementFromPoint(e.x,e.y);if(!t||t===r)break;r=t}return r}function ih(e,t){if($m(t))return!0;let n=e;for(;n;){if(t===n||t.contains(n))return!0;let e=n.getRootNode();if(!eh(e))return!1;n=e.host}return!1}function ah(e,t){if(!e)return t();let n=[e,...e.querySelectorAll(`*`)],r=n.map(e=>[e,e.style.getPropertyValue(`pointer-events`),e.style.getPropertyPriority(`pointer-events`)]);for(let e of n)e.style.setProperty(`pointer-events`,`none`,`important`);try{return t()}finally{for(let[e,t,n]of r)t?e.style.setProperty(`pointer-events`,t,n):e.style.removeProperty(`pointer-events`)}}function oh(e){let t=e.ownerDocument.defaultView??window;if(e.id)return`#${Qm(e.id,t)}`;let n=e.getAttribute(`data-testid`);if(n)return`[data-testid=${JSON.stringify(n)}]`;let r=[],i=e;for(;i&&r.length<5;){let e=i.localName,t=i.localName,n=i.parentElement;if(n){let r=[...n.children].filter(e=>e.localName===t);r.length>1&&(e+=`:nth-of-type(${r.indexOf(i)+1})`)}r.unshift(e),i=n}return r.join(` > `)}function sh(e,t,n=`dom-inspection-${++Zm}`){let r=e.getBoundingClientRect(),i=t.getComputedStyle(e),a={top:Xm(i.paddingTop),right:Xm(i.paddingRight),bottom:Xm(i.paddingBottom),left:Xm(i.paddingLeft)},o={top:Xm(i.marginTop),right:Xm(i.marginRight),bottom:Xm(i.marginBottom),left:Xm(i.marginLeft)},s={left:r.left+a.left,top:r.top+a.top,width:Math.max(0,r.width-a.left-a.right),height:Math.max(0,r.height-a.top-a.bottom)},c={left:r.left-o.left,top:r.top-o.top,width:r.width+o.left+o.right,height:r.height+o.top+o.bottom},l=e.tagName.toLowerCase(),u=e.id?`#${e.id}`:``,d=e.classList.item(0),f=d?`.${d}`:``;return{id:n,rect:{left:r.left,top:r.top,width:r.width,height:r.height},paddingRect:s,marginRect:c,padding:a,margin:o,label:`${l}${u}${f}`,elementRef:e}}function ch(e){let t=e.ownerDocument.defaultView??window,n=t.getComputedStyle(e),r=e instanceof t.HTMLElement?e:null,i=e.getBoundingClientRect(),a=r?sh(r,t):null,o=e=>{let t=Number.parseFloat(e);return Number.isFinite(t)?t:0},s=e=>({top:o(n.getPropertyValue(`${e}-top${e===`border`?`-width`:``}`)),right:o(n.getPropertyValue(`${e}-right${e===`border`?`-width`:``}`)),bottom:o(n.getPropertyValue(`${e}-bottom${e===`border`?`-width`:``}`)),left:o(n.getPropertyValue(`${e}-left${e===`border`?`-width`:``}`))});return{selector:oh(e),tag:e.localName,id:e.id||null,classes:[...e.classList],text:(e.textContent??``).replace(/\s+/g,` `).trim().slice(0,500),role:e.getAttribute(`role`),ariaLabel:e.getAttribute(`aria-label`),rect:{left:i.left,top:i.top,right:i.right,bottom:i.bottom,width:i.width,height:i.height,x:i.x,y:i.y},margin:a?.margin??s(`margin`),padding:a?.padding??s(`padding`),border:s(`border`),typography:{fontFamily:n.fontFamily,fontSize:n.fontSize,fontWeight:n.fontWeight,lineHeight:n.lineHeight,letterSpacing:n.letterSpacing,textAlign:n.textAlign,color:n.color},appearance:{backgroundColor:n.backgroundColor,borderColor:n.borderColor,borderRadius:n.borderRadius,boxShadow:n.boxShadow,opacity:n.opacity},layout:{display:n.display,position:n.position,zIndex:n.zIndex,overflowX:n.overflowX,overflowY:n.overflowY,flexDirection:n.flexDirection,alignItems:n.alignItems,justifyContent:n.justifyContent,gap:n.gap,gridTemplateColumns:n.gridTemplateColumns,gridTemplateRows:n.gridTemplateRows,transform:n.transform},scroll:{clientWidth:r?.clientWidth??0,clientHeight:r?.clientHeight??0,scrollWidth:r?.scrollWidth??0,scrollHeight:r?.scrollHeight??0,overflowsX:(r?.scrollWidth??0)>(r?.clientWidth??0)+1,overflowsY:(r?.scrollHeight??0)>(r?.clientHeight??0)+1}}}var lh=`text-edit`,uh=e=>ch(e);function dh(e){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||ih(n,t),a=async()=>{let t=(e.getPluginHost()??await e.waitForPluginHost()).service.get(lh);if(!t)throw Error(`Mesurer text editing service is unavailable.`);return t},o=()=>{let t=e.ownerDocument.documentElement,r=e.ownerDocument.body,i=Math.max(t.scrollWidth,r?.scrollWidth??0),a=Math.max(t.scrollHeight,r?.scrollHeight??0);return{width:n.innerWidth,height:n.innerHeight,devicePixelRatio:n.devicePixelRatio,scrollX:n.scrollX,scrollY:n.scrollY,documentWidth:i,documentHeight:a,horizontalOverflow:i>n.innerWidth+1,verticalOverflow:a>n.innerHeight+1}},s=async(t=2)=>{await e.ownerDocument.fonts?.ready;for(let e=0;e<Math.max(1,t);e+=1)await new Promise(e=>n.requestAnimationFrame(()=>e()))};return{async ready(){await e.waitForPluginHost(),await s()},async describe(){return(await e.waitForPluginHost()).describe()},inspect(e,t=0){let n=r(e,t);return n?uh(n):null},inspectAll(e,n=50){return[...t.querySelectorAll(e)].slice(0,Math.max(0,n)).map(uh)},at(n,r){let a=t.querySelector?.(`[data-mesurer-island]`)??null;return ah(a?.shadowRoot?.querySelector(`[data-mesurer-root='true']`)??a,()=>{let a=rh({x:n,y:r},t,e.ownerDocument);return a&&i(a)?uh(a):null})},distance(e,t){let n=r(e),i=r(t);if(!n||!i)return null;let a=uh(n),o=uh(i),s=a.rect,c=o.rect;return{a,b:o,horizontalGap:c.left>=s.right?c.left-s.right:s.left>=c.right?s.left-c.right:0,verticalGap:c.top>=s.bottom?c.top-s.bottom:s.top>=c.bottom?s.top-c.bottom:0,centerDeltaX:c.left+c.width/2-(s.left+s.width/2),centerDeltaY:c.top+c.height/2-(s.top+s.height/2)}},viewport:o,async feedback(n=[]){await s();let r=e.getPluginHost()??await e.waitForPluginHost();return{viewport:o(),elements:n.flatMap(e=>[...t.querySelectorAll(e)].slice(0,50).map(uh)),plugins:r.describe(),pluginState:r.state.serialize(`all`)}},async command(t,n){await(e.getPluginHost()??await e.waitForPluginHost()).command.execute(t,n,{source:`agent-harness`}),await s(1)},async state(){return(e.getPluginHost()??await e.waitForPluginHost()).state.serialize(`all`)},async textEdits(){return(await a()).intents()},async textEdit(e){let t=(await a()).intent(e);if(!t)throw Error(`Text edit intent not found: ${e}`);return t},stable:s}}var fh=(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,ph=e=>{if(!e.length)return null;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));return{left:t,top:n,width:r-t,height:i-n}},mh=(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),hh=e=>[...e.measurements,...e.activeMeasurement&&!e.measurements.some(t=>t.id===e.activeMeasurement?.id)?[e.activeMeasurement]:[]];function gh(e){let{workspace:t,scope:n,guideTolerance:r}=e;if(n.kind===`workspace`)return{guides:t.guides.map(e=>({...e})),measurements:hh(t),distances:[...t.distances]};let i=new Set(n.elements),a=e=>e!=null&&i.has(e),o=e=>n.regions.some(t=>fh(e,t));return{guides:t.guides.filter(e=>mh(e,n.regions,r)).map(e=>({...e})),measurements:hh(t).filter(e=>a(e.elementRef)||o(e.rect)),distances:t.distances.filter(e=>a(e.elementRefA)||a(e.elementRefB)||o(e.rectA)||o(e.rectB))}}var _h={opacity:1,width:1,pattern:`solid`,dashLength:6,gap:4},vh={opacity:1,edgeReveal:!1};({..._h}),{...vh};var yh=10,bh=e=>({left:e.left,top:e.top,width:e.width,height:e.height}),xh=e=>{let t=new Set,n=[];for(let r of e)!r?.isConnected||t.has(r)||(t.add(r),n.push(r));return n},Sh=e=>e.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2)}`;function Ch(e){let{runtime:t,ownerDocument:n,ownerWindow:r}=e,i=e.request??{scope:`workspace`},a=t.snapshot();if(!a)throw Error(`Mesurer workspace is not ready yet.`);let o=[],s=[],c={kind:`workspace`},l=new Map;if(`annotation`in i){let e=t.annotation(i.annotation);if(!e)throw Error(`Mesurer annotation not found: ${i.annotation}`);for(let t of e.resolvedTargets)t.element?.isConnected&&l.set(t.element,t.target.id);o=xh(e.resolvedTargets.map(e=>e.element));let n=t.annotationRect(e.id);n&&(s=[n]);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`;c={kind:`annotation`,annotationId:e.id,note:e.note,targetStatus:u}}else if(i.scope===`selection`){let e=t.currentSelection();if(o=xh(e.elements),!o.length&&!e.region)throw Error(`Mesurer has no current selection.`);s=e.region?[e.region]:o.map(e=>bh(e.getBoundingClientRect())),c={kind:`selection`}}else o=xh([...t.currentSelection().elements,...a.measurements.map(e=>e.elementRef),a.activeMeasurement?.elementRef,...a.heldDistances.flatMap(e=>[e.elementRefA,e.elementRefB])]);let u=c.kind===`workspace`?[]:s.length?s:o.map(e=>bh(e.getBoundingClientRect())),d=gh({workspace:{guides:a.guides,measurements:a.measurements,activeMeasurement:a.activeMeasurement,distances:a.heldDistances},scope:c.kind===`workspace`?{kind:`workspace`}:{kind:`scoped`,elements:o,regions:u},guideTolerance:a.guideRelevanceTolerance??yh}),f=d.measurements,p=d.distances,m=d.guides,h=xh([...o,...f.map(e=>e.elementRef),...p.flatMap(e=>[e.elementRefA,e.elementRefB])]),g=new Map,_=new Set(l.values()),v=1,y=()=>{let e=`target-${v++}`;for(;_.has(e);)e=`target-${v++}`;return _.add(e),e},b=h.map(e=>{let t=l.get(e)??y();return g.set(e,t),{ref:t,inspection:ch(e)}}),x=f.map(e=>{let t={id:e.id,rect:bh(e.rect),deltaX:e.deltaX,deltaY:e.deltaY};e.snapped!==void 0&&(t.snapped=e.snapped);let n=e.elementRef?g.get(e.elementRef):void 0;return n&&(t.targetRef=n),t}),S=p.map(e=>{let t={id:e.id,rectA:bh(e.rectA),rectB:bh(e.rectB),horizontal:e.horizontal?{...e.horizontal}:null,vertical:e.vertical?{...e.vertical}:null},n=e.elementRefA?g.get(e.elementRefA):void 0,r=e.elementRefB?g.get(e.elementRefB):void 0;return n&&(t.targetARef=n),r&&(t.targetBRef=r),t});return{schema:`mesurer.context/v1`,id:Sh(r),createdAt:new Date().toISOString(),scope:c,page:{url:r.location?.href??n.URL,title:n.title},viewport:{width:r.innerWidth,height:r.innerHeight,devicePixelRatio:r.devicePixelRatio,scrollX:r.scrollX,scrollY:r.scrollY},coordinateSpace:`viewport-css-px`,regions:c.kind===`workspace`?[]:s.map(bh),visualState:{rulersVisible:a.rulersVisible,xrayVisible:a.xrayVisible},targets:b,visualContext:{guides:m,measurements:x,distances:S}}}var wh=e=>`${Math.round(e*100)/100}px`,Th=e=>`x=${wh(e.left)} y=${wh(e.top)} w=${wh(e.width)} h=${wh(e.height)}`;function Eh(e){let t=[`Mesurer visual context`,``,`Page: ${e.page.url}`,`Viewport: ${e.viewport.width} × ${e.viewport.height} CSS px; scroll x=${e.viewport.scrollX} y=${e.viewport.scrollY}`];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}: ${Th(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){t.push(``,`Targets`);for(let n of e.targets){let e=n.inspection;t.push(`[${n.ref}] ${e.selector}`,` rect: ${Th(e.rect)}`,` margin: ${wh(e.margin.top)} ${wh(e.margin.right)} ${wh(e.margin.bottom)} ${wh(e.margin.left)}`,` padding: ${wh(e.padding.top)} ${wh(e.padding.right)} ${wh(e.padding.bottom)} ${wh(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)}`)}}if(e.visualContext.guides.length){t.push(``,`Relevant guides`);for(let n of e.visualContext.guides)t.push(`- ${n.orientation} ${n.orientation===`vertical`?`x`:`y`}=${wh(n.position)}`)}if(e.visualContext.measurements.length){t.push(``,`Relevant measurements`);for(let n of e.visualContext.measurements)t.push(`- ${n.targetRef?`${n.targetRef}: `:``}${Th(n.rect)}; delta=${wh(n.deltaX)} × ${wh(n.deltaY)}`)}if(e.visualContext.distances.length){t.push(``,`Relevant distances`);for(let n of e.visualContext.distances){let e=[n.targetARef,n.targetBRef].filter(Boolean).join(` → `),r=[n.horizontal?`horizontal=${wh(n.horizontal.value)}`:null,n.vertical?`vertical=${wh(n.vertical.value)}`:null].filter(Boolean).join(`; `);t.push(`- ${e?`${e}: `:``}${r||`overlapping`}`)}}return t.join(`
1405
- `).trimEnd()}function Dh(e){let t=ph([...e.regions,...e.targets.map(e=>e.inspection.rect),...e.visualContext.measurements.map(e=>e.rect),...e.visualContext.distances.flatMap(e=>[e.rectA,e.rectB])]),n=[{id:`viewport`,kind:`viewport`}];if(t){let r=Math.max(0,t.left-48),i=Math.max(0,t.top-48),a=Math.min(e.viewport.width,t.left+t.width+48),o=Math.min(e.viewport.height,t.top+t.height+48);a>r&&o>i&&n.push({id:`focus`,kind:`clip`,rect:{left:r,top:i,width:a-r,height:o-i}})}return{schema:`mesurer.capture/v1`,contextId:e.id,chrome:`hide`,evidence:`show`,captures:n}}var Oh=(e,t,n,r,i)=>{!Number.isFinite(r)||!Number.isFinite(i)||Math.abs(r-i)<.01||e.push({kind:t,label:n,before:r,current:i,delta:i-r,unit:`px`})},kh=(e,t,n,r)=>e.push({kind:`missing`,evidence:t,id:n,label:r});function Ah(e){let t=e.runtime.annotation(e.annotationId);if(!t)throw Error(`Mesurer annotation not found: ${e.annotationId}`);let n=Ch({runtime:e.runtime,ownerDocument:e.ownerDocument,ownerWindow:e.ownerWindow,request:{annotation:e.annotationId}});if(n.scope.kind!==`annotation`)throw Error(`Mesurer annotation context invariant failed.`);let r=e.runtime.snapshot();if(!r)throw Error(`Mesurer workspace is not ready yet.`);let i=hh({measurements:r.measurements,activeMeasurement:r.activeMeasurement}),a=[];for(let e of t.baseline.targets){let t=n.targets.find(t=>t.ref===e.id);if(!t){kh(a,`target`,e.id,e.selector);continue}Oh(a,`target-rect`,`${t.inspection.selector} left`,e.rect.left,t.inspection.rect.left),Oh(a,`target-rect`,`${t.inspection.selector} top`,e.rect.top,t.inspection.rect.top),Oh(a,`target-rect`,`${t.inspection.selector} width`,e.rect.width,t.inspection.rect.width),Oh(a,`target-rect`,`${t.inspection.selector} height`,e.rect.height,t.inspection.rect.height)}for(let e of t.baseline.guides){let t=n.visualContext.guides.find(t=>t.id===e.id)??r.guides.find(t=>t.id===e.id);if(!t){kh(a,`guide`,e.id,`${e.orientation} guide ${e.id}`);continue}Oh(a,`guide`,`${e.orientation} guide ${e.id}`,e.position,t.position)}for(let e of t.baseline.measurements){let t=n.visualContext.measurements.find(t=>t.id===e.id)??i.find(t=>t.id===e.id);if(!t){kh(a,`measurement`,e.id,e.id);continue}Oh(a,`measurement`,`${e.id} width`,e.rect.width,t.rect.width),Oh(a,`measurement`,`${e.id} height`,e.rect.height,t.rect.height)}for(let e of t.baseline.distances){let t=n.visualContext.distances.find(t=>t.id===e.id)??r.heldDistances.find(t=>t.id===e.id);if(!t){kh(a,`distance`,e.id,e.id);continue}e.horizontal&&t.horizontal?Oh(a,`distance`,`${e.id} horizontal`,e.horizontal.value,t.horizontal.value):e.horizontal&&!t.horizontal&&kh(a,`distance`,e.id,`${e.id} horizontal`),e.vertical&&t.vertical?Oh(a,`distance`,`${e.id} vertical`,e.vertical.value,t.vertical.value):e.vertical&&!t.vertical&&kh(a,`distance`,e.id,`${e.id} vertical`)}return{schema:`mesurer.review/v1`,annotationId:t.id,note:t.note,targetStatus:n.scope.targetStatus,baseline:t.baseline,current:n,changes:a}}async function jh(e,t,n){try{if(t.navigator.clipboard?.writeText){await t.navigator.clipboard.writeText(n);return}}catch{}let r=e.createElement(`textarea`);r.value=n,r.setAttribute(`readonly`,``),r.style.position=`fixed`,r.style.opacity=`0`,r.style.pointerEvents=`none`,e.body.append(r),r.select();let i=e.execCommand?.(`copy`)??!1;if(r.remove(),!i)throw Error(`Unable to copy Mesurer context to the clipboard.`)}var Mh=`0.1.7-beta.1`,Nh=`mesurer.context`,Ph=`context:v1`,Fh=`mesurer.context.settings`,Ih=`context.ui`,Lh={viewBox:`0 0 256 256`,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`]},Rh={viewBox:`0 0 256 256`,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`]},zh={viewBox:`0 0 256 256`,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`]},Bh=async(e,t,n=1)=>{await e.fonts?.ready;for(let e=0;e<Math.max(1,n);e+=1)await new Promise(e=>t.requestAnimationFrame(()=>e()))},Vh=(e,t,n)=>{let r=async r=>Ch({runtime:e,ownerDocument:t,ownerWindow:n,request:r}),i=async e=>Eh(await r(e));return{context:r,contextText:i,copyContext:async e=>jh(t,n,await i(e)),select:async i=>(e.select(Array.isArray(i)?i:[i]),await Bh(t,n),r({scope:`selection`})),annotations:async()=>e.annotations(),review:async r=>(await Bh(t,n),r?Ah({runtime:e,ownerDocument:t,ownerWindow:n,annotationId:r}):e.annotations().map(r=>Ah({runtime:e,ownerDocument:t,ownerWindow:n,annotationId:r.id}))),capturePlan:async e=>Dh(await r(e)),prepareCapture:async()=>{e.prepareCapture(),await Bh(t,n)},finishCapture:async()=>{e.finishCapture(),await Bh(t,n)}}},Hh=e=>{let t=e.currentSelection();return t.elements.length>0||t.region!==null};function Uh(e={}){return{id:Nh,version:Mh,requires:[`runtime:solid`],provides:[Ph],setup(t){let n=t.service.get(`runtime:solid`);if(!n)throw Error(`Mesurer context plugin requires the renderer runtime service.`);let r=n.createWorkspaceRuntime(),i=Vh(r,n.ownerDocument,n.ownerWindow);t.service.provide(Ph,i),t.state.register({id:Fh,initial:{ui:e.ui??!0},persist:!0}),t.state.register({id:Ih,initial:{hasSelection:Hh(r)}});let a=()=>t.state.get(`mesurer.context.settings`)?.ui??!0,o=()=>t.state.get(Ih)?.hasSelection===!0,s=e=>{t.state.update(Fh,t=>({...t,ui:e}))},c=r.subscribe(()=>{let e=Hh(r);e!==(t.state.get(Ih)?.hasSelection??!1)&&t.state.update(Ih,()=>({hasSelection:e}))});t.command.register(`context.copy`,()=>i.copyContext()),t.command.register(`context.copy-selection`,()=>i.copyContext({scope:`selection`}));let l=null,u=null,d=null,f=()=>{l=null,u?.(),u=null,d?.dispose(),d=null},p=()=>{if(d)return;d=n.createInspectorMount(),d.element.dataset.mesurerLayer=`evidence`;let e={runtime:r,onCopy:i.copyContext,onController:e=>{l=e}};u=Si(()=>Ur(Ym,e),d.element)},m=()=>{a()?p():f()};m(),t.state.subscribe(m),t.command.register(`context.add-note`,()=>l?.openNoteComposer()),t.tool.register({id:`context.copy`,label:`Copy context`,shortcut:`C`,command:`context.copy`,order:70,icon:Lh,hidden:()=>!a()}),t.tool.register({id:`context.copy-selection`,label:`Copy selection`,shortcut:`Shift+C`,command:`context.copy-selection`,order:71,icon:Rh,hidden:()=>!a(),disabled:()=>!o()}),t.tool.register({id:`context.add-note`,label:`Add note`,shortcut:`N`,command:`context.add-note`,order:72,icon:zh,hidden:()=>!a(),disabled:()=>!o()}),t.settings.register({id:`context`,label:`Context`,order:30,controls:[{type:`toggle`,id:`ui`,label:`Context tools`,description:`Show Copy Context, Copy Selection, Add Note, and annotation controls.`,value:a,set:s}]}),t.lifecycle.onDispose(()=>{c(),f(),r.dispose()})}}}var Wh={display:`block`,position:`fixed`,inset:`0`,width:`0`,height:`0`,"min-width":`0`,"min-height":`0`,"max-width":`none`,"max-height":`none`,margin:`0`,padding:`0`,border:`0`,overflow:`visible`,background:`transparent`,"box-sizing":`border-box`,"pointer-events":`auto`,"z-index":`2147483647`,opacity:`1`,visibility:`visible`,transform:`none`,translate:`none`,rotate:`none`,scale:`none`,filter:`none`,"backdrop-filter":`none`,"clip-path":`none`,mask:`none`,contain:`none`,isolation:`isolate`,"mix-blend-mode":`normal`,animation:`none`,transition:`none`,"color-scheme":`light`,color:`#0f172a`,"font-family":`ui-sans-serif, system-ui, sans-serif`,"font-size":`16px`,"font-weight":`400`,"line-height":`1.5`,"letter-spacing":`normal`,direction:`ltr`};function Gh(e){for(let[t,n]of Object.entries(Wh))e.style.setProperty(t,n,`important`)}function Kh(e){return`popover`in e&&`showPopover`in e&&typeof e.showPopover==`function`&&`hidePopover`in e&&typeof e.hidePopover==`function`}var qh=e=>`newState`in e,Jh=e=>e.localName===`dialog`;function Yh(e){if(!Jh(e)||!e.open)return!1;try{return e.matches(`:modal`)}catch{return!1}}function Xh(e,t,n=!0){Gh(e);let r=e.ownerDocument,i=r.defaultView??window,a=t,o=!1,s=`fixed`,c=!1,l=0,u=[];if(n&&Kh(e)&&(e.popover=`manual`),t.append(e),n&&Kh(e))try{e.showPopover(),c=e.matches(`:popover-open`),c&&(s=`top-layer`)}catch{e.removeAttribute(`popover`)}let d=()=>{if(!(!c||!Kh(e)))try{e.matches(`:popover-open`)||e.showPopover()}catch{}},f=t=>{if(e.parentNode===t)return;let n=c&&Kh(e)&&e.matches(`:popover-open`);if(n&&Kh(e))try{e.hidePopover()}catch{}t.append(e),Gh(e),n&&d()},p=()=>{u=u.filter(e=>e.isConnected&&Yh(e)),f(u.at(-1)??a)},m=e=>{u=u.filter(t=>t!==e),u.push(e),p()},h=e=>{u=u.filter(t=>t!==e),p()},g=()=>{if(!(o||!c||!Kh(e)))try{e.matches(`:popover-open`)&&e.hidePopover(),e.showPopover()}catch{}},_=()=>{o||!c||l||(l=i.requestAnimationFrame(()=>{l=0,g()}))},v=t=>{if(!c||t.target===e)return;let n=qh(t)?t.newState:void 0,r=t.target;if(r instanceof i.Element){if(Jh(r)){n===`open`&&Yh(r)?(m(r),_()):n===`closed`?h(r):n===`open`&&_();return}n===`open`&&r.hasAttribute(`popover`)&&_()}},y=e=>{let t=e.target;t instanceof i.Element&&Jh(t)&&h(t)},b=()=>{r.fullscreenElement&&_()},x=e=>{Yh(e)&&m(e);for(let t of e.querySelectorAll(`dialog`))Yh(t)&&m(t)},S=new i.MutationObserver(e=>{if(c)for(let t of e){if(t.type===`attributes`){let e=t.target;e instanceof i.Element&&Jh(e)&&(Yh(e)?m(e):h(e))}for(let e of t.addedNodes)e instanceof i.Element&&x(e);u.some(e=>!e.isConnected)&&p()}});return c&&(r.addEventListener(`toggle`,v,!0),r.addEventListener(`close`,y,!0),r.addEventListener(`fullscreenchange`,b,!0),S.observe(r.documentElement,{subtree:!0,childList:!0,attributes:!0,attributeFilter:[`open`]}),x(r.documentElement)),{mode:s,bringToFront:g,dispose(){if(!o){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&&Kh(e)&&e.matches(`:popover-open`))try{e.hidePopover()}catch{}u=[]}}}}var Zh=`arrange`,Qh=()=>[{id:Nh,label:`Context`,order:30,create:()=>Uh(),settingsIds:[`context`],hiddenSettingsControlIds:[`ui`]}];function $h(e={}){if(!(`document`in globalThis))throw Error(`mountMesurer() requires a browser or Electron renderer document.`);let{target:t=document.body,isolate:n=!0,shadowMode:r=`open`,topLayer:i=!0,agent:a=!1,onPluginHost:o,onPluginsReady:s,availablePlugins:c=[],...l}=e,u=t.ownerDocument??document,d=u.defaultView??window,f=u.createElement(`div`);f.dataset.mesurerIsland=`true`;let p=Xh(f,t,i),m=f,h=f,g=f;if(n){let e=f.attachShadow({mode:r});h=u.createElement(`div`),h.dataset.mesurerIslandMount=`true`,e.append(h),m=e,g=e}let _,v,y,b=!1,x=new Promise(e=>{v=e}),S=new Promise(e=>{y=e}),C=async()=>(await(_?Promise.resolve(_):x),S),w=a===!0?{}:a===!1?null:a,T=dh({ownerDocument:u,root:w?.root??(t.nodeType===11?t:u),getPluginHost:()=>_,waitForPluginHost:C}),E=async()=>{await T.ready();let e=_?.service.get(Ph);if(!e)throw Error(`Mesurer context plugin is not loaded. Add contextPlugin() to the plugins array.`);return e},D=async()=>{await T.ready();let e=_?.service.get(Zh);if(!e)throw Error(`Mesurer Arrange plugin is not loaded. Add arrangePlugin() from mesurer-solid/arrange.`);return e},O=async e=>(await E()).context(e),k=async e=>(await E()).contextText(e),A=async e=>(await E()).copyContext(e),j=async e=>(await E()).select(e),M=async()=>(await E()).annotations(),N=async e=>(await E()).review(e),P=async e=>(await E()).capturePlan(e),F=async()=>(await E()).prepareCapture(),I=async()=>(await E()).finishCapture(),L=async()=>(await D()).intents(),R=async e=>{let t=(await D()).intent(e);if(!t)throw Error(`Arrange intent not found: ${e}`);return t},z=async(e,t)=>{(await D()).show(e,t)},ee=async(e,t)=>(await D()).capturePlan(e,t),B=async(e,t)=>(await D()).review(e,t),te=async()=>T.textEdits(),ne=async e=>T.textEdit(e),V=Object.assign(T,{capabilities:()=>{let e=!!_?.service.get(Ph);return{protocol:`mesurer.agent/v1`,contextSchema:`mesurer.context/v1`,capabilities:{context:e,select:e,annotations:e,review:e,capturePlan:e,arrange:!!_?.service.get(Zh),textEdit:!!_?.service.get(lh)}}},context:O,contextText:k,select:j,annotations:M,review:N,capturePlan:P,prepareCapture:F,finishCapture:I,arrangements:L,arrange:R,showArrange:z,arrangeCapturePlan:ee,reviewArrange:B,textEdits:te,textEdit:ne}),re={...l,version:Mh,availablePlugins:[...Qh(),...c]},ie=Si(()=>Ur(Gm,xi(re,{portalTarget:g,pageTarget:t,onPluginHost:e=>{_||v(e),_=e,o?.(e)},onPluginsReady:e=>{_=e,b||(b=!0,y(e)),s?.(e)}})),h),ae=V.ready(),oe=null;if(w){let e=w.globalName??`__MESURER__`,t=Object.getOwnPropertyDescriptor(d,e);Reflect.set(d,e,V),oe=()=>{Object.getOwnPropertyDescriptor(d,e)?.value===V&&(t?Object.defineProperty(d,e,t):Reflect.deleteProperty(d,e))}}let se=!1;return{element:f,root:m,hostLayer:p.mode,get pluginHost(){return _},ready:ae,agent:V,context:O,contextText:k,copyContext:A,select:j,annotations:M,review:N,capturePlan:P,prepareCapture:F,finishCapture:I,arrangements:L,arrange:R,showArrange:z,arrangeCapturePlan:ee,reviewArrange:B,textEdits:te,textEdit:ne,bringToFront:p.bringToFront,describe:()=>_?.describe(),dispose(){se||(se=!0,oe?.(),ie(),p.dispose(),f.remove())}}}var eg=(e={})=>({...Kf(e),version:Mh}),{target:tg,globalName:ng=`__MESURER__`,context:rg=!0,screenshot:ig=!1,plugins:ag=[],reuseExisting:og=!0,...sg}=globalThis.__MESURER_CONFIG__??{},cg=globalThis.__MESURER_INSTANCE__,lg=og&&cg?.element.isConnected?cg:void 0;if(lg)lg.ready.catch(e=>{queueMicrotask(()=>{throw e})});else{let e=tg?document.querySelector(tg):document.body;if(!e)throw Error(`Mesurer injection target not found: ${tg}`);let t=[...rg===!1?[]:[Uh(rg===!0?{}:rg)],...ig===!1?[]:[eg(ig===!0?{}:ig)],...ag];cg?.dispose();let n=$h({...sg,plugins:t,target:e,agent:{globalName:ng,root:document}});globalThis.__MESURER_INSTANCE__=n,n.ready.catch(e=>{queueMicrotask(()=>{throw e})})}})();
1404
+ `)},j=async(t,r=`toolbar`)=>{if(!t.disabled?.())try{await n.command.execute(t.command,void 0,{source:r,toolId:t.id})}catch(n){throw e.onPluginError?.(n,t.id),n}},M=(e,t=`toolbar`)=>{j(e,t).catch(()=>void 0)},N=(t,n)=>{n.disabled?.()||Promise.resolve(n.run()).catch(r=>{e.onPluginError?.(r,`${t.id}.${n.id}`)})},P=async(t,n,r)=>{try{await n.set(r)}catch(r){e.onPluginError?.(r,`${t}.${n.id}`)}},F=(e,t,n)=>{P(e,t,n)},I=async e=>{for(let t of n.settings()){if(e&&!e.has(t.id))continue;let n=h.get(t.id);if(n)for(let e of t.controls??[]){let r=n.get(e.id);r!==void 0&&await P(t.id,e,r)}}};return Gt(()=>{let t=!0,o=0,c=!1,b=Promise.resolve(),E=new Set,k=n,N=e,P=N.portalTarget??document.body,F=P.ownerDocument??document,L=F.defaultView??window,R=N.pageTarget??F.body,z=P,ee=()=>{if(!g)throw Error(`Mesurer renderer model is unavailable for runtime bridge setup.`);return g},B=()=>{if(!_)throw Error(`Mesurer built-in controller is unavailable for runtime bridge setup.`);return _},te=()=>{let e=F.createElement(`div`);e.dataset.mesurerInspectorUi=`true`,(z.querySelector(`[data-mesurer-root='true']`)??P).append(e);let t=!1;return{element:e,dispose(){t||(t=!0,e.remove())}}},ne=()=>Im({model:ee(),ownerDocument:F,ownerWindow:L,uiRoot:P,pageTarget:R}),V=F.createElement(`style`);V.dataset.mesurerPluginVisibility=`true`,V.dataset.mesurerInspectorUi=`true`,V.textContent=A(),P.append(V);let re=N.persistKey?`${N.persistKey}:plugins`:Rm,ie=`${re}:availability`,ae=new Map;try{let e=L.localStorage.getItem(ie);if(e){let t=JSON.parse(e);if(t?.version===zm){for(let[e,n]of Object.entries(t.enabled??{}))ae.set(e,n);for(let[e,n]of Object.entries(t.state??{}))p.set(e,n)}}}catch(e){N.onPluginError?.(e,`plugin-availability-persistence`)}let oe=()=>{let e=Object.fromEntries([...u.keys()].map(e=>[e,k.has(e)])),t=Object.fromEntries(p);try{L.localStorage.setItem(ie,JSON.stringify({version:zm,enabled:e,state:t}))}catch(e){N.onPluginError?.(e,`plugin-availability-persistence`)}},se=()=>{o=0;try{L.localStorage.setItem(re,JSON.stringify(k.state.serialize(`persist`)))}catch(e){N.onPluginError?.(e,`plugin-persistence`)}},ce=()=>{L.clearTimeout(o),o=L.setTimeout(se,50)},le=()=>{o&&(L.clearTimeout(o),se())},ue=()=>le();L.addEventListener(`pagehide`,ue);let de=k.subscribe(e=>{if(x(e=>e+1),V.textContent=A(),(e.reason===`state`||e.reason===`history`||e.reason===`remove`||e.reason===`replace`)&&ce(),S()&&!c&&(e.reason===`load`||e.reason===`remove`||e.reason===`replace`)&&oe(),e.reason===`remove`&&e.pluginId?.startsWith(`mesurer.`)){let t=e.pluginId.slice(8);Hm(t)&&B().deactivate(t)}});N.onPluginHost?.(k);let fe=async(e,n=e.id)=>{if(!t)return!1;E.add(e);try{await k.load(e)}catch(e){return t&&N.onPluginError?.(e,n),!1}finally{E.delete(e)}return t?!0:(k.plugin(e.id)===e&&k.remove(e.id),!1)},pe=e=>fe(e),me=e=>{for(let t of k.settings())!e.has(t.id)||h.has(t.id)||h.set(t.id,new Map((t.controls??[]).map(e=>[e.id,e.value()])))},he=async e=>{if(!t||k.has(e.id))return k.has(e.id);let n=new Set(k.settings().map(e=>e.id)),r=new Set(k.describe().state.map(e=>e.id));try{let i=a(await e.create());if(!t)return!1;if(i.id!==e.id)throw Error(`Available plugin ${e.id} created mismatched plugin ${i.id}.`);if(!await fe(i,e.id))return!1;let o=new Set(d.get(e.id)??e.settingsIds??[]);for(let e of k.settings())n.has(e.id)||o.add(e.id);d.set(e.id,o);let s=new Set(f.get(e.id)??[]);for(let e of k.describe().state)r.has(e.id)||s.add(e.id);f.set(e.id,s),me(o);let c=p.get(e.id);return c&&(k.state.restore(c,`persist`),p.delete(e.id)),!0}catch(n){return t&&N.onPluginError?.(n,e.id),!1}},ge=e=>{let t=f.get(e);if(!t?.size)return;let n=k.state.serialize(`persist`),r={};for(let e of t)Object.prototype.hasOwnProperty.call(n,e)&&(r[e]=n[e]);Object.keys(r).length&&p.set(e,r)},_e=async(e,t,n=!0)=>{let r=u.get(e);if(!(!r||m.has(e)||k.has(e)===t)){m.add(e),x(e=>e+1);try{t?await he(r):(n?ge(e):p.delete(e),k.remove(e)),c||oe()}finally{m.delete(e),x(e=>e+1)}}},ve=e=>{let t=b.then(e,e);return b=t.catch(()=>void 0),t};v=(e,t)=>{ve(async()=>{await _e(e,t)})},y=()=>ve(async()=>{c=!0;try{await I();let e=[...u.values()].sort((e,t)=>(e.order??0)-(t.order??0));for(let t of e)!k.has(t.id)&&!await he(t)||(await I(d.get(t.id)),l.has(t.id)?p.delete(t.id):(ge(t.id),k.remove(t.id)))}finally{c=!1}o&&L.clearTimeout(o),se(),oe()});let ye=async e=>{if(D(e))return;let t=w(e);if(t){await j(t,{source:`builtin-command`,builtin:e});return}T(e)&&await B().run(e)};(async()=>{for(let e of s)await pe(e);if(t&&(await pe({id:`mesurer.runtime-bridge`,version:i,provides:[`runtime:solid`],setup(e){let t={ownerDocument:F,ownerWindow:L,portalTarget:P,pageTarget:R,currentToolMode:()=>ee().current.toolMode,createWorkspaceRuntime:ne,createInspectorMount:te};e.service.provide(`runtime:solid`,t),Yf(e,t),Mm(e,t);for(let t of Lm)e.command.register(Um(t),()=>ye(t))}}),t)){for(let e of[...u.values()].sort((e,t)=>(e.order??0)-(t.order??0))){let n=ae.has(e.id)?ae.get(e.id)===!0:l.has(e.id);if(k.has(e.id)){n||k.remove(e.id);continue}if(n&&await he(e),!t)return}h.clear();for(let e of k.settings())h.set(e.id,new Map((e.controls??[]).map(e=>[e.id,e.value()])));try{let e=L.localStorage.getItem(re);if(e){let t=JSON.parse(e);k.state.restore(t,`persist`)}}catch(e){N.onPluginError?.(e,`plugin-persistence`)}t&&(C(!0),V.textContent=A(),N.onPluginsReady?.(k))}})();let be=e=>{let t=e.key.toLowerCase(),n=e.metaKey||e.ctrlKey;return n&&!e.shiftKey&&!e.altKey&&t===`,`?`settings`:n||e.shiftKey||e.altKey?null:t===`s`?`select`:t===`a`?`text-inspector`:t===`g`?`guides`:t===`p`?`color-picker`:t===`x`?`xray`:t===`r`?`rulers`:null},xe=e=>{if(xo(e,L)||g?.current.settings.shortcutsEnabled===!1)return;let t=be(e);if(t&&D(t)){e.preventDefault(),e.stopImmediatePropagation();return}let n=t?w(t):void 0;if(t&&n){e.preventDefault(),e.stopImmediatePropagation(),M(n,{source:`builtin-shortcut`,builtin:t});return}let r=e.key.toLowerCase();if((r===`h`||r===`v`)&&D(`guides`)){e.preventDefault(),e.stopImmediatePropagation();return}if((r===`h`||r===`v`)&&w(`guides`)){e.preventDefault(),e.stopImmediatePropagation();return}let i=O().find(t=>t.shortcut&&!t.disabled?.()&&Wm(e,t.shortcut));if(i){e.preventDefault(),e.stopImmediatePropagation(),M(i);return}let a=e.metaKey||e.ctrlKey;if(a&&r===`z`&&(e.shiftKey?k.redo():k.undo())){e.preventDefault(),e.stopImmediatePropagation();return}(a&&r===`,`&&!T(`settings`)||r===`s`&&!T(`select`)||r===`a`&&!T(`text-inspector`)||r===`g`&&!T(`guides`)||(r===`h`||r===`v`)&&!T(`guides`)||r===`p`&&!T(`color-picker`)||r===`x`&&!T(`xray`)||r===`r`&&!T(`rulers`)||e.key===`Alt`&&!T(`distance`))&&(e.preventDefault(),e.stopImmediatePropagation())};return L.addEventListener(`keydown`,xe,!0),()=>{t=!1;for(let e of E)k.cancelLoad(e);E.clear(),le(),L.removeEventListener(`pagehide`,ue),L.removeEventListener(`keydown`,xe,!0),de(),V.remove(),g=null,_=null,v=()=>void 0,y=async()=>void 0,r&&k.dispose()}}),Y(mc,{runtime:{plugins:k,version:()=>i,setEnabled:(e,t)=>v(e,t),update:F,reset:async()=>{await y()}},get children(){return Y(eu,{value:e=>{g=e},get children(){return Y(rd,Xi(e,{get pluginTools(){return O()},onPluginTool:e=>M(e),onPluginToolMenuItem:N,isBuiltinActionDisabled:D,onBuiltinController:e=>{_=e}}))}})}})}var Km=(e,t,n)=>Math.min(Math.max(e,t),Math.max(t,n)),qm=e=>{if(!e.length)return null;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));return{left:t,top:n,width:r-t,height:i-n}},Jm=(e,t,n,r,i=8)=>{let a=r.innerWidth-t-8,o=r.innerHeight-n-8,s=e.left+e.width+i,c=e.left-t-i;return{left:s+t<=r.innerWidth-8?s:c>=8?c:Km(e.left+e.width-t,8,a),top:Km(e.top,8,o)}};function Ym(e){let[t,n]=G(0),[r,i]=G(null),[a,o]=G({}),[s,c]=G(null),[l,u]=G(!1),[d,f]=G(``),[p,m]=G(null),[h,g]=G(!1),[_,v]=G(null),[y,b]=G(null),x=null,S=null,C,w=()=>C?.ownerDocument.defaultView??window;Rt(e.runtime.subscribe(()=>n(e=>e+1)));let T=W(()=>(t(),e.runtime.currentSelection())),E=W(()=>(t(),e.runtime.annotations())),D=W(()=>{let e=r();return e?E().find(t=>t.id===e)??null:null}),O=()=>T().elements.length>0||T().region!==null,k=W(()=>{let e=T();return qm(e.elements.filter(e=>e.isConnected).map(e=>{let t=e.getBoundingClientRect();return{left:t.left,top:t.top,width:t.width,height:t.height}}))??e.region}),A=()=>{let e=T().elements.length;return e>1?`${e} selected elements`:e===1?`Selected element`:`Selected region`},j=e=>e.anchor.kind===`elements`?`${e.anchor.targets.length} selected ${e.anchor.targets.length===1?`element`:`elements`}`:`Selected region`,M=()=>{let t=T().elements;if(!t.length)return null;let n=e.runtime.hoveredElement();return t.find(e=>e===n)??t.find(e=>n&&e.contains(n))??t[0]},N=()=>{let e=M();if(!e?.isConnected)return null;let t=e.getBoundingClientRect(),n={left:t.left,top:t.top,width:t.width,height:t.height},r=w(),i=n.left+n.width,a=n.top+n.height,o=[{space:r.innerWidth-i,points:[{left:i+6,top:n.top},{left:i+6,top:a-24}]},{space:n.left,points:[{left:n.left-24-6,top:n.top},{left:n.left-24-6,top:a-24}]},{space:r.innerHeight-a,points:[{left:i-24,top:a+6},{left:n.left,top:a+6}]},{space:n.top,points:[{left:i-24,top:n.top-24-6},{left:n.left,top:n.top-24-6}]}].sort((e,t)=>t.space-e.space).flatMap(e=>e.points).find(e=>e.left>=4&&e.top>=4&&e.left+24<=r.innerWidth-4&&e.top+24<=r.innerHeight-4),s={left:i+6,top:n.top};return{left:Km((o??s).left,4,r.innerWidth-24-4),top:Km((o??s).top,4,r.innerHeight-24-4)}},P=t=>{let n=e.runtime.annotationRect(t);if(!n)return null;let r=w(),i=n.left+n.width+6,o=i+24+8,s=n.left-6-24,c=s-8-272,l=o+272<=r.innerWidth-8,u=c>=8,d=l?i:u?s:Km(i,8,r.innerWidth-24-8),f=l?o:u?c:Jm(n,272,176,r).left,p=a()[t];return{marker:{left:d,top:Km(n.top-12,4,r.innerHeight-24-4)},panel:{left:p?Km(p.left,8,r.innerWidth-272-8):f,top:Km(p?p.top:n.top,8,r.innerHeight-176-8)}}},F=e=>P(e)?.marker??null,I=()=>{let e=k(),t=w(),n=s();return n?{left:Km(n.left,8,t.innerWidth-272-8),top:Km(n.top,8,t.innerHeight-154-8)}:e?Jm(e,272,154,t):{left:8,top:8}},L=e=>P(e)?.panel??{left:8,top:8},R=e=>{u(!1),i(e),v(null)},z=(e,t)=>{let n=e.currentTarget.ownerDocument.defaultView?.Element,r=e.target;if(e.button!==0||n&&r instanceof n&&r.closest(`button`))return;let i=e.currentTarget.parentElement;if(!i)return;let a=i.getBoundingClientRect(),s=w(),l=s.document.documentElement,u=l.style.userSelect;l.style.setProperty(`user-select`,`none`,`important`),x={surfaceId:t,pointerId:e.pointerId,startX:e.clientX,startY:e.clientY,originLeft:a.left,originTop:a.top,width:a.width,height:a.height},b(t),e.preventDefault(),e.stopPropagation();let d=e=>{if(!x||e.pointerId!==x.pointerId)return;let n=x,r=Math.max(8,s.innerWidth-n.width-8),i=Math.max(8,s.innerHeight-n.height-8),a={left:Km(n.originLeft+e.clientX-n.startX,8,r),top:Km(n.originTop+e.clientY-n.startY,8,i)};t===`composer`?c(a):o(e=>({...e,[t]:a}))},f=e=>{!x||e.pointerId!==x.pointerId||(l.style.userSelect=u,s.removeEventListener(`pointermove`,d),s.removeEventListener(`pointerup`,f),s.removeEventListener(`pointercancel`,f),x=null,b(null),S=null)};s.addEventListener(`pointermove`,d),s.addEventListener(`pointerup`,f),s.addEventListener(`pointercancel`,f),S=()=>{l.style.userSelect=u,s.removeEventListener(`pointermove`,d),s.removeEventListener(`pointerup`,f),s.removeEventListener(`pointercancel`,f),b(null)}};Rt(()=>{S?.(),S=null,x=null});let ee=async(e,t)=>{if(!h()){g(!0),v(null);try{await e(),v(t)}catch(e){v(e instanceof Error?e.message:String(e))}finally{g(!1)}}},B=()=>{O()&&(m(null),v(null),i(null),c(null),u(!0))},te=()=>{u(!1),m(null),c(null)},ne=()=>{try{let t=e.runtime.addSelectionAnnotation(d());f(``),m(null),u(!1),c(null),i(t.id)}catch(e){m(e instanceof Error?e.message:String(e))}};return Gt(()=>(e.onController?.({openNoteComposer:B}),()=>e.onController?.(null))),[(()=>{var e=X(`span`,{"aria-hidden":`true`,style:{display:`none`}});return Qi(()=>e=>{C=e},e),e})(),Y(K,{get when(){return J(()=>T().elements.length>0&&!l())()?!D():T().elements.length>0&&!l()},get children(){return Y(K,{get when(){return N()},children:e=>(()=>{var t=X(`button`,{type:`button`,"data-mesurer-layer":`chrome`,"data-mesurer-inspector-ui":`true`,"data-mesurer-annotation-trigger":`true`,"aria-label":`Annotate selection`,title:`Annotate selection`,class:`msr:pointer-events-auto msr:fixed msr:z-[95] msr:flex msr:w-6 msr:h-6 msr:items-center msr:justify-center msr:rounded-[7px] msr:border msr:border-ink-200 msr:bg-white msr:text-black msr:outline-none msr:hover:bg-ink-50 msr:focus-visible:border-[#0d99ff]`,onPointerDown:e=>e.stopPropagation(),onClick:e=>{e.stopPropagation(),B()}});return Q(t,Y(Oc,{size:14})),q(()=>({left:`${e().left}px`,top:`${e().top}px`}),(e,n)=>{$(t,`style`,e,n)}),t})()})}}),Y(K,{get when(){return J(()=>!!l())()?k():l()},get children(){var e=X(`div`,{"data-mesurer-layer":`chrome`,"data-mesurer-inspector-ui":`true`,"data-mesurer-annotation-composer":`true`,class:`mesurer-menu-surface msr:pointer-events-auto msr:fixed msr:z-[95] msr:w-[272px] msr:max-w-[calc(100vw-16px)] msr:rounded-[10px] msr:border msr:border-ink-200 msr:bg-white msr:p-1.5 msr:text-black`,onPointerDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation()}),t=X(`div`,{class:`msr:flex msr:h-7 msr:items-center msr:gap-1.5 msr:px-1`,"aria-label":`Drag note composer`,onPointerDown:e=>z(e,`composer`)}),n=X(`div`,{class:`msr:min-w-0 msr:flex-1`}),r=X(`div`,{class:`msr:text-[11px] msr:font-medium msr:text-ink-900`}),i=X(`div`,{class:`msr:text-[9px] msr:text-ink-500`}),a=X(`button`,{type:`button`,class:`msr:flex msr:w-6 msr:h-6 msr:items-center msr:justify-center msr:rounded-[7px] msr:border-0 msr:bg-transparent msr:text-black msr:outline-none msr:hover:bg-black/4 msr:disabled:cursor-default msr:disabled:opacity-40`,"aria-label":`Close note composer`,title:`Close`,onClick:te}),o=X(`textarea`,{autofocus:!0,placeholder:`Describe what should change…`,onInput:e=>{f(e.currentTarget.value),m(null)},onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&(e.preventDefault(),ne()),e.key===`Escape`&&(e.preventDefault(),te())},class:`msr:box-border msr:mt-1 msr:h-20 msr:w-full msr:resize-none msr:rounded-[7px] msr:border msr:border-ink-200 msr:bg-white msr:p-2 msr:text-[12px] msr:leading-[1.4] msr:text-black msr:outline-none msr:placeholder:text-ink-400 msr:focus:border-[#0d99ff]`}),s=X(`div`,{class:`msr:mt-1.5 msr:flex msr:h-7 msr:items-center msr:justify-between msr:gap-2 msr:px-1`}),c=X(`span`,{class:`msr:text-[9px] msr:text-ink-400`}),l=X(`div`,{class:`msr:flex msr:gap-1`}),u=X(`button`,{type:`button`,class:`msr:h-7 msr:rounded-[7px] msr:border-0 msr:bg-transparent msr:px-2 msr:text-[11px] msr:text-ink-700 msr:hover:bg-black/4`,onClick:te}),h=X(`button`,{type:`button`,class:`msr:h-7 msr:rounded-[7px] msr:border-0 msr:bg-[#0d99ff] msr:px-2.5 msr:text-[11px] msr:font-medium msr:text-white msr:hover:bg-[#0b8eea]`,onClick:ne});return Z(e,t),Z(e,o),Z(e,s),Z(t,n),Z(t,a),Q(t,Y(Oc,{size:14,class:`msr:text-ink-700`}),n),Z(n,r),Z(n,i),Z(r,Ji(`Add note`)),Q(i,A),Q(a,Y(Ac,{size:14})),Q(e,Y(K,{get when(){return p()},children:e=>(()=>{var t=X(`div`,{class:`msr:mt-1.5 msr:px-1 msr:text-[10px] msr:text-red-600`});return Q(t,e),t})()}),s),Z(s,c),Z(s,l),Z(c,Ji(`⌘/Ctrl ↵`)),Z(l,u),Z(l,h),Z(u,Ji(`Cancel`)),Z(h,Ji(`Add note`)),q(()=>({e:{left:`${I().left}px`,top:`${I().top}px`},t:{cursor:y()===`composer`?`grabbing`:`grab`},a:d()}),({e:n,t:r,a:i},a)=>{n!==a?.e&&$(e,`style`,n,a?.e),r!==a?.t&&$(t,`style`,r,a?.t),i!==a?.a&&$(o,`value`,i,a?.a)}),e}}),Y(Gr,{get each(){return E()},children:(e,t)=>{let n=()=>F(e.id);return Y(K,{get when(){return n()},children:n=>(()=>{var i=X(`button`,{type:`button`,"data-mesurer-layer":`evidence`,"data-mesurer-annotation-marker":`true`,onPointerDown:t=>{t.preventDefault(),t.stopPropagation(),R(e.id)},onPointerUp:e=>e.stopPropagation(),onClick:t=>{t.preventDefault(),t.stopPropagation(),R(e.id)},class:`msr:pointer-events-auto msr:fixed msr:z-[94] msr:flex msr:w-6 msr:h-6 msr:items-center msr:justify-center msr:rounded-[7px] msr:border msr:border-[#0d99ff] msr:bg-white msr:text-[#0d99ff] msr:outline-none msr:hover:bg-[#0d99ff]/8`});return Q(i,Y(Oc,{size:14})),q(()=>({e:`Mesurer annotation ${t()+1}: ${e.note}`,t:e.note,a:r()===e.id?`true`:`false`,o:{left:`${n().left}px`,top:`${n().top}px`}}),({e,t,a:n,o:r},a)=>{e!==a?.e&&$(i,`aria-label`,e,a?.e),t!==a?.t&&$(i,`title`,t,a?.t),n!==a?.a&&$(i,`aria-expanded`,n,a?.a),r!==a?.o&&$(i,`style`,r,a?.o)}),i})()})}}),Y(K,{get when(){return D()},children:t=>{let n=()=>L(t().id);var r=X(`div`,{"data-mesurer-layer":`chrome`,"data-mesurer-inspector-ui":`true`,"data-mesurer-annotation-panel":`true`,class:`mesurer-menu-surface msr:pointer-events-auto msr:fixed msr:z-[95] msr:w-[272px] msr:max-h-[220px] msr:rounded-[10px] msr:border msr:border-ink-200 msr:bg-white msr:p-1.5 msr:text-black`,onPointerDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation()}),a=X(`div`,{class:`msr:flex msr:h-7 msr:items-center msr:gap-1.5 msr:px-1`,"aria-label":`Drag annotation panel`,onPointerDown:e=>z(e,t().id)}),s=X(`div`,{class:`msr:min-w-0 msr:flex-1`}),c=X(`div`,{class:`msr:text-[11px] msr:font-medium msr:text-ink-700`}),l=Ji(`Note `),u=X(`div`,{class:`msr:text-[9px] msr:text-ink-500`}),d=X(`div`,{class:`msr:flex msr:items-center msr:gap-0.5`}),f=X(`button`,{type:`button`,class:`msr:flex msr:w-6 msr:h-6 msr:items-center msr:justify-center msr:rounded-[7px] msr:border-0 msr:bg-transparent msr:text-black msr:outline-none msr:hover:bg-black/4 msr:disabled:cursor-default msr:disabled:opacity-40`,"aria-label":`Copy annotation context`,title:`Copy context`,onClick:()=>void ee(()=>e.onCopy({annotation:t().id}),`Copied`)}),p=X(`button`,{type:`button`,class:`msr:flex msr:w-6 msr:h-6 msr:items-center msr:justify-center msr:rounded-[7px] msr:border-0 msr:bg-transparent msr:text-black msr:outline-none msr:hover:bg-black/4 msr:disabled:cursor-default msr:disabled:opacity-40`,"aria-label":`Delete annotation`,title:`Delete`,onClick:()=>{e.runtime.removeAnnotation(t().id),o(e=>{let n={...e};return delete n[t().id],n}),i(null),v(null)}}),m=X(`button`,{type:`button`,class:`msr:flex msr:w-6 msr:h-6 msr:items-center msr:justify-center msr:rounded-[7px] msr:border-0 msr:bg-transparent msr:text-black msr:outline-none msr:hover:bg-black/4 msr:disabled:cursor-default msr:disabled:opacity-40`,"aria-label":`Close annotation`,title:`Close`,onClick:()=>{i(null),v(null)}}),g=X(`div`,{class:`msr:mx-1 msr:mt-1 msr:max-h-36 msr:overflow-auto msr:whitespace-pre-wrap msr:rounded-[7px] msr:bg-ink-50 msr:px-2 msr:py-2 msr:text-[12px] msr:leading-[1.45] msr:text-ink-800`});return Z(r,a),Z(r,g),Z(a,s),Z(a,d),Q(a,Y(Oc,{size:14,class:`msr:text-[#0d99ff]`}),s),Z(s,c),Z(s,u),Z(c,l),Q(c,()=>E().findIndex(e=>e.id===t().id)+1,null),Q(u,()=>j(t())),Z(d,f),Z(d,p),Z(d,m),Q(f,Y(Dc,{size:14})),Q(p,Y(kc,{size:14})),Q(m,Y(Ac,{size:14})),Q(g,()=>t().note),Q(r,Y(K,{get when(){return _()},children:e=>(()=>{var t=X(`div`,{class:`msr:mt-1.5 msr:px-1 msr:text-[10px] msr:text-ink-500`,role:`status`});return Q(t,e),t})()}),null),q(()=>({e:{left:`${n().left}px`,top:`${n().top}px`},t:{cursor:y()===t().id?`grabbing`:`grab`},a:h()}),({e,t,a:n},i)=>{e!==i?.e&&$(r,`style`,e,i?.e),t!==i?.t&&$(a,`style`,t,i?.t),n!==i?.a&&$(f,`disabled`,n,i?.a)}),r}})]}var Xm=e=>Number.parseFloat(e)||0,Zm=0,Qm=(e,t)=>{let n=t.CSS;return n?.escape?n.escape(e):e.replace(/[^a-zA-Z0-9_-]/g,e=>`\\${e}`)},$m=e=>e.nodeType===9,eh=e=>e.nodeType===11;function th(e){let t=e.getRootNode();return eh(t)?t:e.ownerDocument}var nh=(e,t)=>{if($m(e)||eh(e))return e;let n=th(e);return eh(n)?n:t};function rh(e,t,n=$m(t)?t:t.ownerDocument??document){let r=nh(t,n).elementFromPoint(e.x,e.y);for(;r?.shadowRoot;){let t=r.shadowRoot.elementFromPoint(e.x,e.y);if(!t||t===r)break;r=t}return r}function ih(e,t){if($m(t))return!0;let n=e;for(;n;){if(t===n||t.contains(n))return!0;let e=n.getRootNode();if(!eh(e))return!1;n=e.host}return!1}function ah(e,t){if(!e)return t();let n=[e,...e.querySelectorAll(`*`)],r=n.map(e=>[e,e.style.getPropertyValue(`pointer-events`),e.style.getPropertyPriority(`pointer-events`)]);for(let e of n)e.style.setProperty(`pointer-events`,`none`,`important`);try{return t()}finally{for(let[e,t,n]of r)t?e.style.setProperty(`pointer-events`,t,n):e.style.removeProperty(`pointer-events`)}}function oh(e){let t=e.ownerDocument.defaultView??window;if(e.id)return`#${Qm(e.id,t)}`;let n=e.getAttribute(`data-testid`);if(n)return`[data-testid=${JSON.stringify(n)}]`;let r=[],i=e;for(;i&&r.length<5;){let e=i.localName,t=i.localName,n=i.parentElement;if(n){let r=[...n.children].filter(e=>e.localName===t);r.length>1&&(e+=`:nth-of-type(${r.indexOf(i)+1})`)}r.unshift(e),i=n}return r.join(` > `)}function sh(e,t,n=`dom-inspection-${++Zm}`){let r=e.getBoundingClientRect(),i=t.getComputedStyle(e),a={top:Xm(i.paddingTop),right:Xm(i.paddingRight),bottom:Xm(i.paddingBottom),left:Xm(i.paddingLeft)},o={top:Xm(i.marginTop),right:Xm(i.marginRight),bottom:Xm(i.marginBottom),left:Xm(i.marginLeft)},s={left:r.left+a.left,top:r.top+a.top,width:Math.max(0,r.width-a.left-a.right),height:Math.max(0,r.height-a.top-a.bottom)},c={left:r.left-o.left,top:r.top-o.top,width:r.width+o.left+o.right,height:r.height+o.top+o.bottom},l=e.tagName.toLowerCase(),u=e.id?`#${e.id}`:``,d=e.classList.item(0),f=d?`.${d}`:``;return{id:n,rect:{left:r.left,top:r.top,width:r.width,height:r.height},paddingRect:s,marginRect:c,padding:a,margin:o,label:`${l}${u}${f}`,elementRef:e}}function ch(e){let t=e.ownerDocument.defaultView??window,n=t.getComputedStyle(e),r=e instanceof t.HTMLElement?e:null,i=e.getBoundingClientRect(),a=r?sh(r,t):null,o=e=>{let t=Number.parseFloat(e);return Number.isFinite(t)?t:0},s=e=>({top:o(n.getPropertyValue(`${e}-top${e===`border`?`-width`:``}`)),right:o(n.getPropertyValue(`${e}-right${e===`border`?`-width`:``}`)),bottom:o(n.getPropertyValue(`${e}-bottom${e===`border`?`-width`:``}`)),left:o(n.getPropertyValue(`${e}-left${e===`border`?`-width`:``}`))});return{selector:oh(e),tag:e.localName,id:e.id||null,classes:[...e.classList],text:(e.textContent??``).replace(/\s+/g,` `).trim().slice(0,500),role:e.getAttribute(`role`),ariaLabel:e.getAttribute(`aria-label`),rect:{left:i.left,top:i.top,right:i.right,bottom:i.bottom,width:i.width,height:i.height,x:i.x,y:i.y},margin:a?.margin??s(`margin`),padding:a?.padding??s(`padding`),border:s(`border`),typography:{fontFamily:n.fontFamily,fontSize:n.fontSize,fontWeight:n.fontWeight,lineHeight:n.lineHeight,letterSpacing:n.letterSpacing,textAlign:n.textAlign,color:n.color},appearance:{backgroundColor:n.backgroundColor,borderColor:n.borderColor,borderRadius:n.borderRadius,boxShadow:n.boxShadow,opacity:n.opacity},layout:{display:n.display,position:n.position,zIndex:n.zIndex,overflowX:n.overflowX,overflowY:n.overflowY,flexDirection:n.flexDirection,alignItems:n.alignItems,justifyContent:n.justifyContent,gap:n.gap,gridTemplateColumns:n.gridTemplateColumns,gridTemplateRows:n.gridTemplateRows,transform:n.transform},scroll:{clientWidth:r?.clientWidth??0,clientHeight:r?.clientHeight??0,scrollWidth:r?.scrollWidth??0,scrollHeight:r?.scrollHeight??0,overflowsX:(r?.scrollWidth??0)>(r?.clientWidth??0)+1,overflowsY:(r?.scrollHeight??0)>(r?.clientHeight??0)+1}}}var lh=`text-edit`,uh=e=>ch(e);function dh(e){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||ih(n,t),a=async()=>{let t=(e.getPluginHost()??await e.waitForPluginHost()).service.get(lh);if(!t)throw Error(`Mesurer text editing service is unavailable.`);return t},o=()=>{let t=e.ownerDocument.documentElement,r=e.ownerDocument.body,i=Math.max(t.scrollWidth,r?.scrollWidth??0),a=Math.max(t.scrollHeight,r?.scrollHeight??0);return{width:n.innerWidth,height:n.innerHeight,devicePixelRatio:n.devicePixelRatio,scrollX:n.scrollX,scrollY:n.scrollY,documentWidth:i,documentHeight:a,horizontalOverflow:i>n.innerWidth+1,verticalOverflow:a>n.innerHeight+1}},s=async(t=2)=>{await e.ownerDocument.fonts?.ready;for(let e=0;e<Math.max(1,t);e+=1)await new Promise(e=>n.requestAnimationFrame(()=>e()))};return{async ready(){await e.waitForPluginHost(),await s()},async describe(){return(await e.waitForPluginHost()).describe()},inspect(e,t=0){let n=r(e,t);return n?uh(n):null},inspectAll(e,n=50){return[...t.querySelectorAll(e)].slice(0,Math.max(0,n)).map(uh)},at(n,r){let a=t.querySelector?.(`[data-mesurer-island]`)??null;return ah(a?.shadowRoot?.querySelector(`[data-mesurer-root='true']`)??a,()=>{let a=rh({x:n,y:r},t,e.ownerDocument);return a&&i(a)?uh(a):null})},distance(e,t){let n=r(e),i=r(t);if(!n||!i)return null;let a=uh(n),o=uh(i),s=a.rect,c=o.rect;return{a,b:o,horizontalGap:c.left>=s.right?c.left-s.right:s.left>=c.right?s.left-c.right:0,verticalGap:c.top>=s.bottom?c.top-s.bottom:s.top>=c.bottom?s.top-c.bottom:0,centerDeltaX:c.left+c.width/2-(s.left+s.width/2),centerDeltaY:c.top+c.height/2-(s.top+s.height/2)}},viewport:o,async feedback(n=[]){await s();let r=e.getPluginHost()??await e.waitForPluginHost();return{viewport:o(),elements:n.flatMap(e=>[...t.querySelectorAll(e)].slice(0,50).map(uh)),plugins:r.describe(),pluginState:r.state.serialize(`all`)}},async command(t,n){await(e.getPluginHost()??await e.waitForPluginHost()).command.execute(t,n,{source:`agent-harness`}),await s(1)},async state(){return(e.getPluginHost()??await e.waitForPluginHost()).state.serialize(`all`)},async textEdits(){return(await a()).intents()},async textEdit(e){let t=(await a()).intent(e);if(!t)throw Error(`Text edit intent not found: ${e}`);return t},stable:s}}var fh=(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,ph=e=>{if(!e.length)return null;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));return{left:t,top:n,width:r-t,height:i-n}},mh=(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),hh=e=>[...e.measurements,...e.activeMeasurement&&!e.measurements.some(t=>t.id===e.activeMeasurement?.id)?[e.activeMeasurement]:[]];function gh(e){let{workspace:t,scope:n,guideTolerance:r}=e;if(n.kind===`workspace`)return{guides:t.guides.map(e=>({...e})),measurements:hh(t),distances:[...t.distances]};let i=new Set(n.elements),a=e=>e!=null&&i.has(e),o=e=>n.regions.some(t=>fh(e,t));return{guides:t.guides.filter(e=>mh(e,n.regions,r)).map(e=>({...e})),measurements:hh(t).filter(e=>a(e.elementRef)||o(e.rect)),distances:t.distances.filter(e=>a(e.elementRefA)||a(e.elementRefB)||o(e.rectA)||o(e.rectB))}}var _h={opacity:1,width:1,pattern:`solid`,dashLength:6,gap:4},vh={opacity:1,edgeReveal:!1};({..._h}),{...vh};var yh=10,bh=e=>({left:e.left,top:e.top,width:e.width,height:e.height}),xh=e=>{let t=new Set,n=[];for(let r of e)!r?.isConnected||t.has(r)||(t.add(r),n.push(r));return n},Sh=e=>e.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2)}`;function Ch(e){let{runtime:t,ownerDocument:n,ownerWindow:r}=e,i=e.request??{scope:`workspace`},a=t.snapshot();if(!a)throw Error(`Mesurer workspace is not ready yet.`);let o=[],s=[],c={kind:`workspace`},l=new Map;if(`annotation`in i){let e=t.annotation(i.annotation);if(!e)throw Error(`Mesurer annotation not found: ${i.annotation}`);for(let t of e.resolvedTargets)t.element?.isConnected&&l.set(t.element,t.target.id);o=xh(e.resolvedTargets.map(e=>e.element));let n=t.annotationRect(e.id);n&&(s=[n]);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`;c={kind:`annotation`,annotationId:e.id,note:e.note,targetStatus:u}}else if(i.scope===`selection`){let e=t.currentSelection();if(o=xh(e.elements),!o.length&&!e.region)throw Error(`Mesurer has no current selection.`);s=e.region?[e.region]:o.map(e=>bh(e.getBoundingClientRect())),c={kind:`selection`}}else o=xh([...t.currentSelection().elements,...a.measurements.map(e=>e.elementRef),a.activeMeasurement?.elementRef,...a.heldDistances.flatMap(e=>[e.elementRefA,e.elementRefB])]);let u=c.kind===`workspace`?[]:s.length?s:o.map(e=>bh(e.getBoundingClientRect())),d=gh({workspace:{guides:a.guides,measurements:a.measurements,activeMeasurement:a.activeMeasurement,distances:a.heldDistances},scope:c.kind===`workspace`?{kind:`workspace`}:{kind:`scoped`,elements:o,regions:u},guideTolerance:a.guideRelevanceTolerance??yh}),f=d.measurements,p=d.distances,m=d.guides,h=xh([...o,...f.map(e=>e.elementRef),...p.flatMap(e=>[e.elementRefA,e.elementRefB])]),g=new Map,_=new Set(l.values()),v=1,y=()=>{let e=`target-${v++}`;for(;_.has(e);)e=`target-${v++}`;return _.add(e),e},b=h.map(e=>{let t=l.get(e)??y();return g.set(e,t),{ref:t,inspection:ch(e)}}),x=f.map(e=>{let t={id:e.id,rect:bh(e.rect),deltaX:e.deltaX,deltaY:e.deltaY};e.snapped!==void 0&&(t.snapped=e.snapped);let n=e.elementRef?g.get(e.elementRef):void 0;return n&&(t.targetRef=n),t}),S=p.map(e=>{let t={id:e.id,rectA:bh(e.rectA),rectB:bh(e.rectB),horizontal:e.horizontal?{...e.horizontal}:null,vertical:e.vertical?{...e.vertical}:null},n=e.elementRefA?g.get(e.elementRefA):void 0,r=e.elementRefB?g.get(e.elementRefB):void 0;return n&&(t.targetARef=n),r&&(t.targetBRef=r),t});return{schema:`mesurer.context/v1`,id:Sh(r),createdAt:new Date().toISOString(),scope:c,page:{url:r.location?.href??n.URL,title:n.title},viewport:{width:r.innerWidth,height:r.innerHeight,devicePixelRatio:r.devicePixelRatio,scrollX:r.scrollX,scrollY:r.scrollY},coordinateSpace:`viewport-css-px`,regions:c.kind===`workspace`?[]:s.map(bh),visualState:{rulersVisible:a.rulersVisible,xrayVisible:a.xrayVisible},targets:b,visualContext:{guides:m,measurements:x,distances:S}}}var wh=e=>`${Math.round(e*100)/100}px`,Th=e=>`x=${wh(e.left)} y=${wh(e.top)} w=${wh(e.width)} h=${wh(e.height)}`;function Eh(e){let t=[`Mesurer visual context`,``,`Page: ${e.page.url}`,`Viewport: ${e.viewport.width} × ${e.viewport.height} CSS px; scroll x=${e.viewport.scrollX} y=${e.viewport.scrollY}`];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}: ${Th(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){t.push(``,`Targets`);for(let n of e.targets){let e=n.inspection;t.push(`[${n.ref}] ${e.selector}`,` rect: ${Th(e.rect)}`,` margin: ${wh(e.margin.top)} ${wh(e.margin.right)} ${wh(e.margin.bottom)} ${wh(e.margin.left)}`,` padding: ${wh(e.padding.top)} ${wh(e.padding.right)} ${wh(e.padding.bottom)} ${wh(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)}`)}}if(e.visualContext.guides.length){t.push(``,`Relevant guides`);for(let n of e.visualContext.guides)t.push(`- ${n.orientation} ${n.orientation===`vertical`?`x`:`y`}=${wh(n.position)}`)}if(e.visualContext.measurements.length){t.push(``,`Relevant measurements`);for(let n of e.visualContext.measurements)t.push(`- ${n.targetRef?`${n.targetRef}: `:``}${Th(n.rect)}; delta=${wh(n.deltaX)} × ${wh(n.deltaY)}`)}if(e.visualContext.distances.length){t.push(``,`Relevant distances`);for(let n of e.visualContext.distances){let e=[n.targetARef,n.targetBRef].filter(Boolean).join(` → `),r=[n.horizontal?`horizontal=${wh(n.horizontal.value)}`:null,n.vertical?`vertical=${wh(n.vertical.value)}`:null].filter(Boolean).join(`; `);t.push(`- ${e?`${e}: `:``}${r||`overlapping`}`)}}return t.join(`
1405
+ `).trimEnd()}function Dh(e){let t=ph([...e.regions,...e.targets.map(e=>e.inspection.rect),...e.visualContext.measurements.map(e=>e.rect),...e.visualContext.distances.flatMap(e=>[e.rectA,e.rectB])]),n=[{id:`viewport`,kind:`viewport`}];if(t){let r=Math.max(0,t.left-48),i=Math.max(0,t.top-48),a=Math.min(e.viewport.width,t.left+t.width+48),o=Math.min(e.viewport.height,t.top+t.height+48);a>r&&o>i&&n.push({id:`focus`,kind:`clip`,rect:{left:r,top:i,width:a-r,height:o-i}})}return{schema:`mesurer.capture/v1`,contextId:e.id,chrome:`hide`,evidence:`show`,captures:n}}var Oh=(e,t,n,r,i)=>{!Number.isFinite(r)||!Number.isFinite(i)||Math.abs(r-i)<.01||e.push({kind:t,label:n,before:r,current:i,delta:i-r,unit:`px`})},kh=(e,t,n,r)=>e.push({kind:`missing`,evidence:t,id:n,label:r});function Ah(e){let t=e.runtime.annotation(e.annotationId);if(!t)throw Error(`Mesurer annotation not found: ${e.annotationId}`);let n=Ch({runtime:e.runtime,ownerDocument:e.ownerDocument,ownerWindow:e.ownerWindow,request:{annotation:e.annotationId}});if(n.scope.kind!==`annotation`)throw Error(`Mesurer annotation context invariant failed.`);let r=e.runtime.snapshot();if(!r)throw Error(`Mesurer workspace is not ready yet.`);let i=hh({measurements:r.measurements,activeMeasurement:r.activeMeasurement}),a=[];for(let e of t.baseline.targets){let t=n.targets.find(t=>t.ref===e.id);if(!t){kh(a,`target`,e.id,e.selector);continue}Oh(a,`target-rect`,`${t.inspection.selector} left`,e.rect.left,t.inspection.rect.left),Oh(a,`target-rect`,`${t.inspection.selector} top`,e.rect.top,t.inspection.rect.top),Oh(a,`target-rect`,`${t.inspection.selector} width`,e.rect.width,t.inspection.rect.width),Oh(a,`target-rect`,`${t.inspection.selector} height`,e.rect.height,t.inspection.rect.height)}for(let e of t.baseline.guides){let t=n.visualContext.guides.find(t=>t.id===e.id)??r.guides.find(t=>t.id===e.id);if(!t){kh(a,`guide`,e.id,`${e.orientation} guide ${e.id}`);continue}Oh(a,`guide`,`${e.orientation} guide ${e.id}`,e.position,t.position)}for(let e of t.baseline.measurements){let t=n.visualContext.measurements.find(t=>t.id===e.id)??i.find(t=>t.id===e.id);if(!t){kh(a,`measurement`,e.id,e.id);continue}Oh(a,`measurement`,`${e.id} width`,e.rect.width,t.rect.width),Oh(a,`measurement`,`${e.id} height`,e.rect.height,t.rect.height)}for(let e of t.baseline.distances){let t=n.visualContext.distances.find(t=>t.id===e.id)??r.heldDistances.find(t=>t.id===e.id);if(!t){kh(a,`distance`,e.id,e.id);continue}e.horizontal&&t.horizontal?Oh(a,`distance`,`${e.id} horizontal`,e.horizontal.value,t.horizontal.value):e.horizontal&&!t.horizontal&&kh(a,`distance`,e.id,`${e.id} horizontal`),e.vertical&&t.vertical?Oh(a,`distance`,`${e.id} vertical`,e.vertical.value,t.vertical.value):e.vertical&&!t.vertical&&kh(a,`distance`,e.id,`${e.id} vertical`)}return{schema:`mesurer.review/v1`,annotationId:t.id,note:t.note,targetStatus:n.scope.targetStatus,baseline:t.baseline,current:n,changes:a}}async function jh(e,t,n){try{if(t.navigator.clipboard?.writeText){await t.navigator.clipboard.writeText(n);return}}catch{}let r=e.createElement(`textarea`);r.value=n,r.setAttribute(`readonly`,``),r.style.position=`fixed`,r.style.opacity=`0`,r.style.pointerEvents=`none`,e.body.append(r),r.select();let i=e.execCommand?.(`copy`)??!1;if(r.remove(),!i)throw Error(`Unable to copy Mesurer context to the clipboard.`)}var Mh=`0.1.7-beta.2`,Nh=`mesurer.context`,Ph=`context:v1`,Fh=`mesurer.context.settings`,Ih=`context.ui`,Lh={viewBox:`0 0 256 256`,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`]},Rh={viewBox:`0 0 256 256`,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`]},zh={viewBox:`0 0 256 256`,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`]},Bh=async(e,t,n=1)=>{await e.fonts?.ready;for(let e=0;e<Math.max(1,n);e+=1)await new Promise(e=>t.requestAnimationFrame(()=>e()))},Vh=(e,t,n)=>{let r=async r=>Ch({runtime:e,ownerDocument:t,ownerWindow:n,request:r}),i=async e=>Eh(await r(e));return{context:r,contextText:i,copyContext:async e=>jh(t,n,await i(e)),select:async i=>(e.select(Array.isArray(i)?i:[i]),await Bh(t,n),r({scope:`selection`})),annotations:async()=>e.annotations(),review:async r=>(await Bh(t,n),r?Ah({runtime:e,ownerDocument:t,ownerWindow:n,annotationId:r}):e.annotations().map(r=>Ah({runtime:e,ownerDocument:t,ownerWindow:n,annotationId:r.id}))),capturePlan:async e=>Dh(await r(e)),prepareCapture:async()=>{e.prepareCapture(),await Bh(t,n)},finishCapture:async()=>{e.finishCapture(),await Bh(t,n)}}},Hh=e=>{let t=e.currentSelection();return t.elements.length>0||t.region!==null};function Uh(e={}){return{id:Nh,version:Mh,requires:[`runtime:solid`],provides:[Ph],setup(t){let n=t.service.get(`runtime:solid`);if(!n)throw Error(`Mesurer context plugin requires the renderer runtime service.`);let r=n.createWorkspaceRuntime(),i=Vh(r,n.ownerDocument,n.ownerWindow);t.service.provide(Ph,i),t.state.register({id:Fh,initial:{ui:e.ui??!0},persist:!0}),t.state.register({id:Ih,initial:{hasSelection:Hh(r)}});let a=()=>t.state.get(`mesurer.context.settings`)?.ui??!0,o=()=>t.state.get(Ih)?.hasSelection===!0,s=e=>{t.state.update(Fh,t=>({...t,ui:e}))},c=r.subscribe(()=>{let e=Hh(r);e!==(t.state.get(Ih)?.hasSelection??!1)&&t.state.update(Ih,()=>({hasSelection:e}))});t.command.register(`context.copy`,()=>i.copyContext()),t.command.register(`context.copy-selection`,()=>i.copyContext({scope:`selection`}));let l=null,u=null,d=null,f=()=>{l=null,u?.(),u=null,d?.dispose(),d=null},p=()=>{if(d)return;d=n.createInspectorMount(),d.element.dataset.mesurerLayer=`evidence`;let e={runtime:r,onCopy:i.copyContext,onController:e=>{l=e}};u=Si(()=>Ur(Ym,e),d.element)},m=()=>{a()?p():f()};m(),t.state.subscribe(m),t.command.register(`context.add-note`,()=>l?.openNoteComposer()),t.tool.register({id:`context.copy`,label:`Copy context`,shortcut:`C`,command:`context.copy`,order:70,icon:Lh,hidden:()=>!a()}),t.tool.register({id:`context.copy-selection`,label:`Copy selection`,shortcut:`Shift+C`,command:`context.copy-selection`,order:71,icon:Rh,hidden:()=>!a(),disabled:()=>!o()}),t.tool.register({id:`context.add-note`,label:`Add note`,shortcut:`N`,command:`context.add-note`,order:72,icon:zh,hidden:()=>!a(),disabled:()=>!o()}),t.settings.register({id:`context`,label:`Context`,order:30,controls:[{type:`toggle`,id:`ui`,label:`Context tools`,description:`Show Copy Context, Copy Selection, Add Note, and annotation controls.`,value:a,set:s}]}),t.lifecycle.onDispose(()=>{c(),f(),r.dispose()})}}}var Wh={display:`block`,position:`fixed`,inset:`0`,width:`0`,height:`0`,"min-width":`0`,"min-height":`0`,"max-width":`none`,"max-height":`none`,margin:`0`,padding:`0`,border:`0`,overflow:`visible`,background:`transparent`,"box-sizing":`border-box`,"pointer-events":`auto`,"z-index":`2147483647`,opacity:`1`,visibility:`visible`,transform:`none`,translate:`none`,rotate:`none`,scale:`none`,filter:`none`,"backdrop-filter":`none`,"clip-path":`none`,mask:`none`,contain:`none`,isolation:`isolate`,"mix-blend-mode":`normal`,animation:`none`,transition:`none`,"color-scheme":`light`,color:`#0f172a`,"font-family":`ui-sans-serif, system-ui, sans-serif`,"font-size":`16px`,"font-weight":`400`,"line-height":`1.5`,"letter-spacing":`normal`,direction:`ltr`};function Gh(e){for(let[t,n]of Object.entries(Wh))e.style.setProperty(t,n,`important`)}function Kh(e){return`popover`in e&&`showPopover`in e&&typeof e.showPopover==`function`&&`hidePopover`in e&&typeof e.hidePopover==`function`}var qh=e=>`newState`in e,Jh=e=>e.localName===`dialog`;function Yh(e){if(!Jh(e)||!e.open)return!1;try{return e.matches(`:modal`)}catch{return!1}}function Xh(e,t,n=!0){Gh(e);let r=e.ownerDocument,i=r.defaultView??window,a=t,o=!1,s=`fixed`,c=!1,l=0,u=[];if(n&&Kh(e)&&(e.popover=`manual`),t.append(e),n&&Kh(e))try{e.showPopover(),c=e.matches(`:popover-open`),c&&(s=`top-layer`)}catch{e.removeAttribute(`popover`)}let d=()=>{if(!(!c||!Kh(e)))try{e.matches(`:popover-open`)||e.showPopover()}catch{}},f=t=>{if(e.parentNode===t)return;let n=c&&Kh(e)&&e.matches(`:popover-open`);if(n&&Kh(e))try{e.hidePopover()}catch{}t.append(e),Gh(e),n&&d()},p=()=>{u=u.filter(e=>e.isConnected&&Yh(e)),f(u.at(-1)??a)},m=e=>{u=u.filter(t=>t!==e),u.push(e),p()},h=e=>{u=u.filter(t=>t!==e),p()},g=()=>{if(!(o||!c||!Kh(e)))try{e.matches(`:popover-open`)&&e.hidePopover(),e.showPopover()}catch{}},_=()=>{o||!c||l||(l=i.requestAnimationFrame(()=>{l=0,g()}))},v=t=>{if(!c||t.target===e)return;let n=qh(t)?t.newState:void 0,r=t.target;if(r instanceof i.Element){if(Jh(r)){n===`open`&&Yh(r)?(m(r),_()):n===`closed`?h(r):n===`open`&&_();return}n===`open`&&r.hasAttribute(`popover`)&&_()}},y=e=>{let t=e.target;t instanceof i.Element&&Jh(t)&&h(t)},b=()=>{r.fullscreenElement&&_()},x=e=>{Yh(e)&&m(e);for(let t of e.querySelectorAll(`dialog`))Yh(t)&&m(t)},S=new i.MutationObserver(e=>{if(c)for(let t of e){if(t.type===`attributes`){let e=t.target;e instanceof i.Element&&Jh(e)&&(Yh(e)?m(e):h(e))}for(let e of t.addedNodes)e instanceof i.Element&&x(e);u.some(e=>!e.isConnected)&&p()}});return c&&(r.addEventListener(`toggle`,v,!0),r.addEventListener(`close`,y,!0),r.addEventListener(`fullscreenchange`,b,!0),S.observe(r.documentElement,{subtree:!0,childList:!0,attributes:!0,attributeFilter:[`open`]}),x(r.documentElement)),{mode:s,bringToFront:g,dispose(){if(!o){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&&Kh(e)&&e.matches(`:popover-open`))try{e.hidePopover()}catch{}u=[]}}}}var Zh=`arrange`,Qh=()=>[{id:Nh,label:`Context`,order:30,create:()=>Uh(),settingsIds:[`context`],hiddenSettingsControlIds:[`ui`]}];function $h(e={}){if(!(`document`in globalThis))throw Error(`mountMesurer() requires a browser or Electron renderer document.`);let{target:t=document.body,isolate:n=!0,shadowMode:r=`open`,topLayer:i=!0,agent:a=!1,onPluginHost:o,onPluginsReady:s,availablePlugins:c=[],...l}=e,u=t.ownerDocument??document,d=u.defaultView??window,f=u.createElement(`div`);f.dataset.mesurerIsland=`true`;let p=Xh(f,t,i),m=f,h=f,g=f;if(n){let e=f.attachShadow({mode:r});h=u.createElement(`div`),h.dataset.mesurerIslandMount=`true`,e.append(h),m=e,g=e}let _,v,y,b=!1,x=new Promise(e=>{v=e}),S=new Promise(e=>{y=e}),C=async()=>(await(_?Promise.resolve(_):x),S),w=a===!0?{}:a===!1?null:a,T=dh({ownerDocument:u,root:w?.root??(t.nodeType===11?t:u),getPluginHost:()=>_,waitForPluginHost:C}),E=async()=>{await T.ready();let e=_?.service.get(Ph);if(!e)throw Error(`Mesurer context plugin is not loaded. Add contextPlugin() to the plugins array.`);return e},D=async()=>{await T.ready();let e=_?.service.get(Zh);if(!e)throw Error(`Mesurer Arrange plugin is not loaded. Add arrangePlugin() from mesurer-solid/arrange.`);return e},O=async e=>(await E()).context(e),k=async e=>(await E()).contextText(e),A=async e=>(await E()).copyContext(e),j=async e=>(await E()).select(e),M=async()=>(await E()).annotations(),N=async e=>(await E()).review(e),P=async e=>(await E()).capturePlan(e),F=async()=>(await E()).prepareCapture(),I=async()=>(await E()).finishCapture(),L=async()=>(await D()).intents(),R=async e=>{let t=(await D()).intent(e);if(!t)throw Error(`Arrange intent not found: ${e}`);return t},z=async(e,t)=>{(await D()).show(e,t)},ee=async(e,t)=>(await D()).capturePlan(e,t),B=async(e,t)=>(await D()).review(e,t),te=async()=>T.textEdits(),ne=async e=>T.textEdit(e),V=Object.assign(T,{capabilities:()=>{let e=!!_?.service.get(Ph);return{protocol:`mesurer.agent/v1`,contextSchema:`mesurer.context/v1`,capabilities:{context:e,select:e,annotations:e,review:e,capturePlan:e,arrange:!!_?.service.get(Zh),textEdit:!!_?.service.get(lh)}}},context:O,contextText:k,select:j,annotations:M,review:N,capturePlan:P,prepareCapture:F,finishCapture:I,arrangements:L,arrange:R,showArrange:z,arrangeCapturePlan:ee,reviewArrange:B,textEdits:te,textEdit:ne}),re={...l,version:Mh,availablePlugins:[...Qh(),...c]},ie=Si(()=>Ur(Gm,xi(re,{portalTarget:g,pageTarget:t,onPluginHost:e=>{_||v(e),_=e,o?.(e)},onPluginsReady:e=>{_=e,b||(b=!0,y(e)),s?.(e)}})),h),ae=V.ready(),oe=null;if(w){let e=w.globalName??`__MESURER__`,t=Object.getOwnPropertyDescriptor(d,e);Reflect.set(d,e,V),oe=()=>{Object.getOwnPropertyDescriptor(d,e)?.value===V&&(t?Object.defineProperty(d,e,t):Reflect.deleteProperty(d,e))}}let se=!1;return{element:f,root:m,hostLayer:p.mode,get pluginHost(){return _},ready:ae,agent:V,context:O,contextText:k,copyContext:A,select:j,annotations:M,review:N,capturePlan:P,prepareCapture:F,finishCapture:I,arrangements:L,arrange:R,showArrange:z,arrangeCapturePlan:ee,reviewArrange:B,textEdits:te,textEdit:ne,bringToFront:p.bringToFront,describe:()=>_?.describe(),dispose(){se||(se=!0,oe?.(),ie(),p.dispose(),f.remove())}}}var eg=(e={})=>({...Kf(e),version:Mh}),{target:tg,globalName:ng=`__MESURER__`,context:rg=!0,screenshot:ig=!1,plugins:ag=[],reuseExisting:og=!0,...sg}=globalThis.__MESURER_CONFIG__??{},cg=globalThis.__MESURER_INSTANCE__,lg=og&&cg?.element.isConnected?cg:void 0;if(lg)lg.ready.catch(e=>{queueMicrotask(()=>{throw e})});else{let e=tg?document.querySelector(tg):document.body;if(!e)throw Error(`Mesurer injection target not found: ${tg}`);let t=[...rg===!1?[]:[Uh(rg===!0?{}:rg)],...ig===!1?[]:[eg(ig===!0?{}:ig)],...ag];cg?.dispose();let n=$h({...sg,plugins:t,target:e,agent:{globalName:ng,root:document}});globalThis.__MESURER_INSTANCE__=n,n.ready.catch(e=>{queueMicrotask(()=>{throw e})})}})();
package/dist/inject.js CHANGED
@@ -13731,14 +13731,18 @@ function Vm(e) {
13731
13731
  }
13732
13732
  }, ce = () => {
13733
13733
  L.clearTimeout(o), o = L.setTimeout(se, 50);
13734
- }, le = k.subscribe((e) => {
13734
+ }, le = () => {
13735
+ o && (L.clearTimeout(o), se());
13736
+ }, ue = () => le();
13737
+ L.addEventListener("pagehide", ue);
13738
+ let de = k.subscribe((e) => {
13735
13739
  if (x((e) => e + 1), V.textContent = A(), (e.reason === "state" || e.reason === "history" || e.reason === "remove" || e.reason === "replace") && ce(), S() && !c && (e.reason === "load" || e.reason === "remove" || e.reason === "replace") && oe(), e.reason === "remove" && e.pluginId?.startsWith("mesurer.")) {
13736
13740
  let t = e.pluginId.slice(8);
13737
13741
  Rm(t) && B().deactivate(t);
13738
13742
  }
13739
13743
  });
13740
13744
  N.onPluginHost?.(k);
13741
- let ue = async (e, n = e.id) => {
13745
+ let fe = async (e, n = e.id) => {
13742
13746
  if (!t) return !1;
13743
13747
  E.add(e);
13744
13748
  try {
@@ -13749,63 +13753,63 @@ function Vm(e) {
13749
13753
  E.delete(e);
13750
13754
  }
13751
13755
  return t ? !0 : (k.plugin(e.id) === e && k.remove(e.id), !1);
13752
- }, de = (e) => ue(e), fe = (e) => {
13756
+ }, pe = (e) => fe(e), me = (e) => {
13753
13757
  for (let t of k.settings()) !e.has(t.id) || h.has(t.id) || h.set(t.id, new Map((t.controls ?? []).map((e) => [e.id, e.value()])));
13754
- }, pe = async (e) => {
13758
+ }, he = async (e) => {
13755
13759
  if (!t || k.has(e.id)) return k.has(e.id);
13756
13760
  let n = new Set(k.settings().map((e) => e.id)), r = new Set(k.describe().state.map((e) => e.id));
13757
13761
  try {
13758
13762
  let i = a(await e.create());
13759
13763
  if (!t) return !1;
13760
13764
  if (i.id !== e.id) throw Error(`Available plugin ${e.id} created mismatched plugin ${i.id}.`);
13761
- if (!await ue(i, e.id)) return !1;
13765
+ if (!await fe(i, e.id)) return !1;
13762
13766
  let o = new Set(d.get(e.id) ?? e.settingsIds ?? []);
13763
13767
  for (let e of k.settings()) n.has(e.id) || o.add(e.id);
13764
13768
  d.set(e.id, o);
13765
13769
  let s = new Set(f.get(e.id) ?? []);
13766
13770
  for (let e of k.describe().state) r.has(e.id) || s.add(e.id);
13767
- f.set(e.id, s), fe(o);
13771
+ f.set(e.id, s), me(o);
13768
13772
  let c = p.get(e.id);
13769
13773
  return c && (k.state.restore(c, "persist"), p.delete(e.id)), !0;
13770
13774
  } catch (n) {
13771
13775
  return t && N.onPluginError?.(n, e.id), !1;
13772
13776
  }
13773
- }, me = (e) => {
13777
+ }, ge = (e) => {
13774
13778
  let t = f.get(e);
13775
13779
  if (!t?.size) return;
13776
13780
  let n = k.state.serialize("persist"), r = {};
13777
13781
  for (let e of t) Object.prototype.hasOwnProperty.call(n, e) && (r[e] = n[e]);
13778
13782
  Object.keys(r).length && p.set(e, r);
13779
- }, he = async (e, t, n = !0) => {
13783
+ }, _e = async (e, t, n = !0) => {
13780
13784
  let r = u.get(e);
13781
13785
  if (!(!r || m.has(e) || k.has(e) === t)) {
13782
13786
  m.add(e), x((e) => e + 1);
13783
13787
  try {
13784
- t ? await pe(r) : (n ? me(e) : p.delete(e), k.remove(e)), c || oe();
13788
+ t ? await he(r) : (n ? ge(e) : p.delete(e), k.remove(e)), c || oe();
13785
13789
  } finally {
13786
13790
  m.delete(e), x((e) => e + 1);
13787
13791
  }
13788
13792
  }
13789
- }, ge = (e) => {
13793
+ }, ve = (e) => {
13790
13794
  let t = b.then(e, e);
13791
13795
  return b = t.catch(() => void 0), t;
13792
13796
  };
13793
13797
  v = (e, t) => {
13794
- ge(async () => {
13795
- await he(e, t);
13798
+ ve(async () => {
13799
+ await _e(e, t);
13796
13800
  });
13797
- }, y = () => ge(async () => {
13801
+ }, y = () => ve(async () => {
13798
13802
  c = !0;
13799
13803
  try {
13800
13804
  await I();
13801
13805
  let e = [...u.values()].sort((e, t) => (e.order ?? 0) - (t.order ?? 0));
13802
- for (let t of e) !k.has(t.id) && !await pe(t) || (await I(d.get(t.id)), l.has(t.id) ? p.delete(t.id) : (me(t.id), k.remove(t.id)));
13806
+ for (let t of e) !k.has(t.id) && !await he(t) || (await I(d.get(t.id)), l.has(t.id) ? p.delete(t.id) : (ge(t.id), k.remove(t.id)));
13803
13807
  } finally {
13804
13808
  c = !1;
13805
13809
  }
13806
13810
  o && L.clearTimeout(o), se(), oe();
13807
13811
  });
13808
- let _e = async (e) => {
13812
+ let ye = async (e) => {
13809
13813
  if (D(e)) return;
13810
13814
  let t = w(e);
13811
13815
  if (t) {
@@ -13818,8 +13822,8 @@ function Vm(e) {
13818
13822
  T(e) && await B().run(e);
13819
13823
  };
13820
13824
  (async () => {
13821
- for (let e of s) await de(e);
13822
- if (t && (await de({
13825
+ for (let e of s) await pe(e);
13826
+ if (t && (await pe({
13823
13827
  id: "mesurer.runtime-bridge",
13824
13828
  version: i,
13825
13829
  provides: ["runtime:solid"],
@@ -13834,7 +13838,7 @@ function Vm(e) {
13834
13838
  createInspectorMount: te
13835
13839
  };
13836
13840
  e.service.provide("runtime:solid", t), Gf(e, t), Om(e, t);
13837
- for (let t of Nm) e.command.register(zm(t), () => _e(t));
13841
+ for (let t of Nm) e.command.register(zm(t), () => ye(t));
13838
13842
  }
13839
13843
  }), t)) {
13840
13844
  for (let e of [...u.values()].sort((e, t) => (e.order ?? 0) - (t.order ?? 0))) {
@@ -13843,7 +13847,7 @@ function Vm(e) {
13843
13847
  n || k.remove(e.id);
13844
13848
  continue;
13845
13849
  }
13846
- if (n && await pe(e), !t) return;
13850
+ if (n && await he(e), !t) return;
13847
13851
  }
13848
13852
  h.clear();
13849
13853
  for (let e of k.settings()) h.set(e.id, new Map((e.controls ?? []).map((e) => [e.id, e.value()])));
@@ -13859,12 +13863,12 @@ function Vm(e) {
13859
13863
  t && (C(!0), V.textContent = A(), N.onPluginsReady?.(k));
13860
13864
  }
13861
13865
  })();
13862
- let ve = (e) => {
13866
+ let be = (e) => {
13863
13867
  let t = e.key.toLowerCase(), n = e.metaKey || e.ctrlKey;
13864
13868
  return n && !e.shiftKey && !e.altKey && t === "," ? "settings" : n || e.shiftKey || e.altKey ? null : t === "s" ? "select" : t === "a" ? "text-inspector" : t === "g" ? "guides" : t === "p" ? "color-picker" : t === "x" ? "xray" : t === "r" ? "rulers" : null;
13865
- }, ye = (e) => {
13869
+ }, xe = (e) => {
13866
13870
  if (_o(e, L) || g?.current.settings.shortcutsEnabled === !1) return;
13867
- let t = ve(e);
13871
+ let t = be(e);
13868
13872
  if (t && D(t)) {
13869
13873
  e.preventDefault(), e.stopImmediatePropagation();
13870
13874
  return;
@@ -13898,10 +13902,10 @@ function Vm(e) {
13898
13902
  }
13899
13903
  (a && r === "," && !T("settings") || r === "s" && !T("select") || r === "a" && !T("text-inspector") || r === "g" && !T("guides") || (r === "h" || r === "v") && !T("guides") || r === "p" && !T("color-picker") || r === "x" && !T("xray") || r === "r" && !T("rulers") || e.key === "Alt" && !T("distance")) && (e.preventDefault(), e.stopImmediatePropagation());
13900
13904
  };
13901
- return L.addEventListener("keydown", ye, !0), () => {
13905
+ return L.addEventListener("keydown", xe, !0), () => {
13902
13906
  t = !1;
13903
13907
  for (let e of E) k.cancelLoad(e);
13904
- E.clear(), o && (L.clearTimeout(o), se()), L.removeEventListener("keydown", ye, !0), le(), V.remove(), g = null, _ = null, v = () => void 0, y = async () => void 0, r && k.dispose();
13908
+ E.clear(), le(), L.removeEventListener("pagehide", ue), L.removeEventListener("keydown", xe, !0), de(), V.remove(), g = null, _ = null, v = () => void 0, y = async () => void 0, r && k.dispose();
13905
13909
  };
13906
13910
  }), Y(uc, {
13907
13911
  runtime: {
@@ -14907,7 +14911,7 @@ async function Dh(e, t, n) {
14907
14911
  }
14908
14912
  //#endregion
14909
14913
  //#region src/version.ts
14910
- var Oh = "0.1.7-beta.1", kh = "mesurer.context", Ah = "context:v1", jh = "mesurer.context.settings", Mh = "context.ui", Nh = {
14914
+ var Oh = "0.1.7-beta.2", kh = "mesurer.context", Ah = "context:v1", jh = "mesurer.context.settings", Mh = "context.ui", Nh = {
14911
14915
  viewBox: "0 0 256 256",
14912
14916
  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"]
14913
14917
  }, Ph = {
@@ -2928,7 +2928,7 @@ var Gn = "mesurer:capture-bridge-ping", Kn = "mesurer:capture-bridge-request", q
2928
2928
  S = !0, y += 1, u.removeEventListener("pointerdown", I), u.removeEventListener("pointermove", L), u.removeEventListener("pointerup", R), u.removeEventListener("pointercancel", z), i.removeEventListener("keydown", B, !0), v && i.clearTimeout(v), te.dispose(), O(), cr(i), a.finishCapture(), a.dispose(), o.dispose();
2929
2929
  });
2930
2930
  }
2931
- }), Rr = "0.1.7-beta.1", zr = wr, Br = xr, Vr = Sr, Hr = Cr, Ur = 4, Wr = dr, Gr = (e, t) => Xn(e, t), Kr = (e = /* @__PURE__ */ new Date()) => Zn(e), qr = (e, t, n, r) => Yn(e, t, n, r), Jr = (e, t, n) => Jn(e, t, n), Yr = (e, t) => ur(e, t), Xr = (e) => cr(e), Zr = (e = {}) => ({
2931
+ }), Rr = "0.1.7-beta.2", zr = wr, Br = xr, Vr = Sr, Hr = Cr, Ur = 4, Wr = dr, Gr = (e, t) => Xn(e, t), Kr = (e = /* @__PURE__ */ new Date()) => Zn(e), qr = (e, t, n, r) => Yn(e, t, n, r), Jr = (e, t, n) => Jn(e, t, n), Yr = (e, t) => ur(e, t), Xr = (e) => cr(e), Zr = (e = {}) => ({
2932
2932
  ...Lr(e),
2933
2933
  version: Rr
2934
2934
  }), Qr = (e) => $n(e);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mesurer-solid",
3
- "version": "0.1.7-beta.1",
3
+ "version": "0.1.7-beta.2",
4
4
  "description": "Framework-agnostic UI measurement and inspection tools for browser apps and coding agents.",
5
5
  "license": "MIT",
6
6
  "type": "module",