mesurer-solid 0.2.3-beta.6 → 0.2.3-beta.8

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/inject.js CHANGED
@@ -3930,7 +3930,7 @@ function yc() {
3930
3930
  },
3931
3931
  async emit(t, n) {
3932
3932
  let r = Array.from(e.get(t) ?? []);
3933
- for (let e of r) await e(n);
3933
+ for (let i of r) e.get(t)?.has(i) && await i(n);
3934
3934
  },
3935
3935
  clear() {
3936
3936
  e.clear();
@@ -5015,23 +5015,27 @@ var Hl = /* @__PURE__ */ new WeakMap(), Ul = (e) => {
5015
5015
  let n = Ul(e);
5016
5016
  for (let e of t.listeners) e(n);
5017
5017
  }, Gl = (e) => {
5018
- let t = Hl.get(e);
5018
+ let t = Hl.get(e.document);
5019
5019
  if (t) return t;
5020
- let n = e.history, r = n.pushState, i = n.replaceState, a = {
5020
+ let n = e.history, r = n.pushState, i = n.replaceState, a = e.removeEventListener.bind(e), o = {
5021
+ document: e.document,
5022
+ releaseNativeListeners: () => {
5023
+ a("popstate", o.handleNativeChange), a("hashchange", o.handleNativeChange);
5024
+ },
5021
5025
  listeners: /* @__PURE__ */ new Set(),
5022
5026
  pushState: r,
5023
5027
  replaceState: i,
5024
- handleNativeChange: () => Wl(e, a)
5028
+ handleNativeChange: () => Wl(e, o)
5025
5029
  };
5026
5030
  return n.pushState = function(...t) {
5027
5031
  let n = r.apply(this, t);
5028
- return Wl(e, a), n;
5032
+ return Wl(e, o), n;
5029
5033
  }, n.replaceState = function(...t) {
5030
5034
  let n = i.apply(this, t);
5031
- return Wl(e, a), n;
5032
- }, e.addEventListener("popstate", a.handleNativeChange), e.addEventListener("hashchange", a.handleNativeChange), Hl.set(e, a), a;
5035
+ return Wl(e, o), n;
5036
+ }, e.addEventListener("popstate", o.handleNativeChange), e.addEventListener("hashchange", o.handleNativeChange), Hl.set(e.document, o), o;
5033
5037
  }, Kl = (e, t) => {
5034
- t.listeners.size > 0 || Hl.get(e) !== t || (e.history.pushState = t.pushState, e.history.replaceState = t.replaceState, e.removeEventListener("popstate", t.handleNativeChange), e.removeEventListener("hashchange", t.handleNativeChange), Hl.delete(e));
5038
+ t.listeners.size > 0 || Hl.get(t.document) !== t || (t.document.defaultView === e && (e.history.pushState = t.pushState, e.history.replaceState = t.replaceState), t.releaseNativeListeners(), Hl.delete(t.document));
5035
5039
  }, ql = (e, t) => {
5036
5040
  let n = Gl(e);
5037
5041
  n.listeners.add(t);
@@ -6408,6 +6412,7 @@ function Jd(e) {
6408
6412
  let p = n.querySelector("[aria-label=\"Remove preview\"]");
6409
6413
  p && (p.disabled = a.length <= 1);
6410
6414
  }
6415
+ n.dispatchEvent(new CustomEvent("mesurer:responsive-stage-change"));
6411
6416
  }, I = (t) => {
6412
6417
  if (a.length <= 1) return;
6413
6418
  let r = _.get(t);
@@ -6520,7 +6525,7 @@ function Jd(e) {
6520
6525
  overflow: "hidden"
6521
6526
  });
6522
6527
  let j = t.createElement("iframe");
6523
- j.dataset.mesurerResponsiveFrame = "true", j.title = `${r.name} preview`, j.setAttribute("sandbox", kl), j.src = n.location.href, Gd(j, {
6528
+ j.dataset.mesurerResponsiveFrame = "true", j.dataset.mesurerResponsivePreviewId = String(r.id), j.title = `${r.name} preview`, j.setAttribute("sandbox", kl), j.src = n.location.href, Gd(j, {
6524
6529
  display: "block",
6525
6530
  border: "0",
6526
6531
  transformOrigin: "top left",
@@ -20226,29 +20231,84 @@ function jC(e, t) {
20226
20231
  let { runtime: n } = Zb(t);
20227
20232
  AS(e, n), yC(e, n), Rx(e, tC(e, n)), CS(e, n), pC(e, n), LS(e, n, t.portalTarget), Ux(e, n, t), jS(e, n), AC(e, n), bC(e, n), Yb(e, n), ax(e, n), hS(e, n, t.portalTarget), $S(e, n, t.portalTarget);
20228
20233
  }
20229
- var MC = 1, NC = (e, t) => {
20234
+ function MC(e) {
20235
+ let t = e, n = [];
20236
+ for (;;) {
20237
+ let e = t.getRootNode();
20238
+ if ("host" in e) {
20239
+ let r = e.host;
20240
+ n.unshift({
20241
+ kind: "shadow",
20242
+ selector: bu(r)
20243
+ }), t = r;
20244
+ continue;
20245
+ }
20246
+ let r = t.ownerDocument, i = r.defaultView?.frameElement;
20247
+ if (!i) return {};
20248
+ if (i.hasAttribute("data-mesurer-responsive-frame")) {
20249
+ let e = r.defaultView;
20250
+ return {
20251
+ viewport: {
20252
+ url: e.location.href.split("#")[0],
20253
+ width: e.innerWidth,
20254
+ height: e.innerHeight,
20255
+ previewId: i.getAttribute("data-mesurer-responsive-preview-id")
20256
+ },
20257
+ domPath: n
20258
+ };
20259
+ }
20260
+ n.unshift({
20261
+ kind: "frame",
20262
+ selector: bu(i)
20263
+ }), t = i;
20264
+ }
20265
+ }
20266
+ function NC(e, t) {
20267
+ let n = t.viewport;
20268
+ if (!n || !e) return null;
20269
+ let r = [...e.querySelectorAll("iframe[data-mesurer-responsive-frame]")].filter((e) => {
20270
+ let t = zu(e)?.defaultView;
20271
+ return t && t.location.href.split("#")[0] === n.url && t.innerWidth === n.width && t.innerHeight === n.height;
20272
+ }), i = r.find((e) => e.getAttribute("data-mesurer-responsive-preview-id") === n.previewId) ?? (r.length === 1 ? r[0] : void 0), a = i ? zu(i) : null;
20273
+ for (let e of t.domPath ?? []) {
20274
+ let t = a?.querySelectorAll(e.selector);
20275
+ if (t?.length !== 1) return null;
20276
+ a = e.kind === "frame" ? zu(t[0]) : t[0].shadowRoot;
20277
+ }
20278
+ return a;
20279
+ }
20280
+ function PC(e) {
20281
+ return [...e?.querySelectorAll("iframe[data-mesurer-responsive-frame]") ?? []].flatMap((e) => {
20282
+ let t = zu(e);
20283
+ return t ? S_(t) : [];
20284
+ });
20285
+ }
20286
+ var FC = 1, IC = (e, t) => {
20230
20287
  if (!t) return [];
20231
20288
  try {
20232
20289
  let n = e.sessionStorage.getItem(t);
20233
20290
  if (!n) return [];
20234
20291
  let r = JSON.parse(n);
20235
- return r.version !== MC || !Array.isArray(r.annotations) ? [] : r.annotations.map(PC);
20292
+ return r.version !== FC || !Array.isArray(r.annotations) ? [] : r.annotations.map(LC);
20236
20293
  } catch {
20237
20294
  return [];
20238
20295
  }
20239
- }, PC = (e) => ({
20296
+ }, LC = (e) => ({
20240
20297
  ...e,
20241
20298
  anchor: e.anchor.kind === "elements" ? {
20242
20299
  kind: "elements",
20243
20300
  region: e.anchor.region ? uc(e.anchor.region) : null,
20244
- targets: e.anchor.targets.map((e) => ({
20245
- ...e,
20246
- fingerprint: {
20247
- ...e.fingerprint,
20248
- classes: [...e.fingerprint.classes]
20249
- },
20250
- lastRect: uc(e.lastRect)
20251
- }))
20301
+ targets: e.anchor.targets.map((e) => {
20302
+ let t = {
20303
+ ...e,
20304
+ fingerprint: {
20305
+ ...e.fingerprint,
20306
+ classes: [...e.fingerprint.classes]
20307
+ },
20308
+ lastRect: uc(e.lastRect)
20309
+ };
20310
+ return e.viewport && (t.viewport = { ...e.viewport }), e.domPath && (t.domPath = e.domPath.map((e) => ({ ...e }))), t;
20311
+ })
20252
20312
  } : {
20253
20313
  kind: "region",
20254
20314
  rect: uc(e.anchor.rect)
@@ -20271,7 +20331,7 @@ var MC = 1, NC = (e, t) => {
20271
20331
  vertical: e.vertical ? { ...e.vertical } : null
20272
20332
  }))
20273
20333
  }
20274
- }), FC = (e, t) => `${t}-${e.crypto?.randomUUID?.() ?? `${Date.now()}-${Math.random().toString(36).slice(2)}`}`, IC = (e) => {
20334
+ }), RC = (e, t) => `${t}-${e.crypto?.randomUUID?.() ?? `${Date.now()}-${Math.random().toString(36).slice(2)}`}`, zC = (e) => {
20275
20335
  let t = /* @__PURE__ */ new Set(), n = [];
20276
20336
  for (let r of e.current.selectedMeasurements) {
20277
20337
  let e = r.elementRef;
@@ -20280,7 +20340,7 @@ var MC = 1, NC = (e, t) => {
20280
20340
  let r = e.current.selectedMeasurement?.elementRef;
20281
20341
  return r?.isConnected && !t.has(r) && n.push(r), n;
20282
20342
  };
20283
- function LC(e) {
20343
+ function BC(e) {
20284
20344
  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 = Ul(r), u = () => e.persistenceKey ? `${e.persistenceKey}:${l}` : void 0, d = () => e.persistenceKey ? `${e.persistenceKey}${r.location.pathname}` : void 0, f = () => {
20285
20345
  let e = u();
20286
20346
  if (!e) return {
@@ -20289,7 +20349,7 @@ function LC(e) {
20289
20349
  };
20290
20350
  try {
20291
20351
  if (r.sessionStorage.getItem(e) !== null) return {
20292
- annotations: NC(r, e),
20352
+ annotations: IC(r, e),
20293
20353
  migrated: !1
20294
20354
  };
20295
20355
  } catch {
@@ -20303,14 +20363,14 @@ function LC(e) {
20303
20363
  annotations: [],
20304
20364
  migrated: !1
20305
20365
  };
20306
- let n = NC(r, t);
20366
+ let n = IC(r, t);
20307
20367
  return {
20308
20368
  annotations: n,
20309
20369
  migrated: n.length > 0
20310
20370
  };
20311
- }, p = f(), m = p.annotations, h = p.migrated, g = /* @__PURE__ */ new Set(), _ = /* @__PURE__ */ new Map(), v = /* @__PURE__ */ new Map(), y = /* @__PURE__ */ new Map(), b = !1, x = 0, S = /* @__PURE__ */ new Map(), C = !1, w = (e, t) => `${e}:${t}`, T = (e) => w_(e, o), E = (e) => {
20371
+ }, p = f(), m = p.annotations, h = p.migrated, g = /* @__PURE__ */ new Set(), _ = /* @__PURE__ */ new Map(), v = /* @__PURE__ */ new Map(), y = /* @__PURE__ */ new Map(), b = !1, x = 0, S = /* @__PURE__ */ new Map(), C = /* @__PURE__ */ new Map(), w = !1, T = (e, t) => `${e}:${t}`, E = (e) => w_(e, o) || PC(i).includes(e.ownerDocument), D = (e, t) => t.viewport ? e.getRootNode() === NC(i, t) : !C_(e.ownerDocument), O = (e) => {
20312
20372
  let t = [], r = /* @__PURE__ */ new Set(), i = (e) => {
20313
- r.has(e) || !T(e) || (r.add(e), t.push(e));
20373
+ r.has(e) || !E(e) || (r.add(e), t.push(e));
20314
20374
  };
20315
20375
  o instanceof a.HTMLElement && o.matches(e) && i(o);
20316
20376
  for (let t of S_(o)) {
@@ -20318,7 +20378,7 @@ function LC(e) {
20318
20378
  for (let t of r.querySelectorAll(e)) i(t);
20319
20379
  }
20320
20380
  return t;
20321
- }, D = () => {
20381
+ }, k = () => {
20322
20382
  let e = u();
20323
20383
  if (e) try {
20324
20384
  if (m.length === 0) {
@@ -20326,19 +20386,20 @@ function LC(e) {
20326
20386
  return;
20327
20387
  }
20328
20388
  r.sessionStorage.setItem(e, JSON.stringify({
20329
- version: MC,
20330
- annotations: m.map(PC)
20389
+ version: FC,
20390
+ annotations: m.map(LC)
20331
20391
  }));
20332
20392
  } catch {}
20333
20393
  };
20334
- h &&= (D(), !1);
20335
- let O = () => {
20394
+ h &&= (k(), !1);
20395
+ let A = () => {
20336
20396
  for (let e of g) e();
20337
- }, k = (e) => {
20397
+ }, j = (e) => {
20338
20398
  if (!Su(e.fingerprint)) return null;
20339
20399
  let t = [];
20340
20400
  try {
20341
- t = E(e.selector);
20401
+ let n = e.viewport ? NC(i, e) : null;
20402
+ t = e.viewport ? [...n?.querySelectorAll(e.selector) ?? []] : O(e.selector).filter((t) => D(t, e));
20342
20403
  } catch {
20343
20404
  return null;
20344
20405
  }
@@ -20347,41 +20408,82 @@ function LC(e) {
20347
20408
  if (t.length !== 1 || e.fingerprint.id || e.fingerprint.testId) return null;
20348
20409
  let r = t[0];
20349
20410
  if (!r || r.localName !== e.fingerprint.tag) return null;
20350
- let i = Qu(r), a = e.lastRect, o = Math.max(4, Math.max(a.width, a.height) * .05), s = Math.max(2, Math.max(a.width, a.height) * .03);
20351
- return Math.abs(i.left - a.left) <= o && Math.abs(i.top - a.top) <= o && Math.abs(i.width - a.width) <= s && Math.abs(i.height - a.height) <= s ? r : null;
20352
- }, A = (e, t) => {
20353
- let n = w(e, t.id), r = v.get(n);
20354
- if (r?.isConnected && T(r)) return r;
20411
+ let a = Qu(r), o = e.lastRect, s = Math.max(4, Math.max(o.width, o.height) * .05), c = Math.max(2, Math.max(o.width, o.height) * .03);
20412
+ return Math.abs(a.left - o.left) <= s && Math.abs(a.top - o.top) <= s && Math.abs(a.width - o.width) <= c && Math.abs(a.height - o.height) <= c ? r : null;
20413
+ }, M = (e, t) => {
20414
+ let n = T(e, t.id), r = v.get(n);
20415
+ if (r?.isConnected && E(r) && D(r, t)) return r;
20355
20416
  r && v.delete(n);
20356
- let i = k(t);
20417
+ let i = j(t);
20357
20418
  return i && v.set(n, i), i;
20358
- }, j = () => {
20419
+ }, N = () => {
20359
20420
  let e = !1;
20360
20421
  for (let t of m) if (t.anchor.kind === "elements") for (let n of t.anchor.targets) {
20361
- let r = w(t.id, n.id), i = A(t.id, n), a = !!i;
20422
+ let r = T(t.id, n.id), i = M(t.id, n), a = !!i;
20362
20423
  if (y.get(r) !== a && (y.set(r, a), e = !0), !i) continue;
20363
20424
  let o = Qu(i);
20364
20425
  (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);
20365
20426
  }
20366
- e && (D(), O());
20367
- }, M = () => {
20427
+ e && (k(), A());
20428
+ }, P = () => {
20368
20429
  x || b || m.length === 0 || (x = r.requestAnimationFrame(() => {
20369
- x = 0, j();
20430
+ x = 0, N();
20370
20431
  }));
20371
- }, N = (e) => {
20432
+ }, F = (e) => {
20372
20433
  let t = S.get(e);
20373
- t && (e.removeEventListener("load", t.load, !0), e.removeEventListener("scroll", M, !0), e.defaultView?.removeEventListener("resize", M), t.observer?.disconnect(), S.delete(e));
20374
- }, P = () => {
20375
- if (!C) return;
20376
- let e = new Set(S_(o));
20434
+ t && (e.removeEventListener("load", t.load, !0), e.removeEventListener("scroll", P, !0), t.removeResizeListener(), t.unsubscribeLocation(), t.observer?.disconnect(), S.delete(e));
20435
+ }, I = () => {
20436
+ let e = /* @__PURE__ */ new Set();
20437
+ for (let t of m) if (t.anchor.kind === "elements") for (let n of t.anchor.targets) {
20438
+ if (!n.viewport) continue;
20439
+ let t = NC(i, {
20440
+ ...n,
20441
+ domPath: []
20442
+ });
20443
+ for (let r of n.domPath ?? []) {
20444
+ let n = t?.querySelectorAll(r.selector);
20445
+ if (n?.length !== 1) break;
20446
+ let i = n[0], a = r.kind === "shadow" ? i.shadowRoot : null;
20447
+ t = r.kind === "frame" ? zu(i) : a, a && e.add(a);
20448
+ }
20449
+ }
20450
+ for (let t of e) {
20451
+ if (C.has(t)) continue;
20452
+ let e = t.ownerDocument.defaultView?.MutationObserver;
20453
+ if (!e) continue;
20454
+ let n = new e(() => {
20455
+ L(), P();
20456
+ });
20457
+ n.observe(t, {
20458
+ childList: !0,
20459
+ subtree: !0,
20460
+ attributes: !0,
20461
+ attributeFilter: [
20462
+ "id",
20463
+ "class",
20464
+ "data-testid",
20465
+ "role",
20466
+ "aria-label",
20467
+ "style"
20468
+ ]
20469
+ }), C.set(t, n);
20470
+ }
20471
+ for (let [t, n] of C) e.has(t) || (n.disconnect(), C.delete(t));
20472
+ }, L = () => {
20473
+ if (!w) return;
20474
+ let e = /* @__PURE__ */ new Set([...S_(o), ...PC(i)]);
20377
20475
  for (let t of e) {
20378
20476
  if (S.has(t)) continue;
20379
20477
  let e = () => {
20380
- P(), M();
20478
+ L(), P();
20381
20479
  }, n = t.defaultView?.MutationObserver, r = n && t.body ? new n(() => {
20382
- P(), M();
20480
+ L(), I(), P();
20383
20481
  }) : null;
20384
- t.addEventListener("load", e, !0), t.addEventListener("scroll", M, !0), t.defaultView?.addEventListener("resize", M), r?.observe(t.body, {
20482
+ t.addEventListener("load", e, !0), t.addEventListener("scroll", P, !0);
20483
+ let i = t.defaultView;
20484
+ i?.addEventListener("resize", P);
20485
+ let a = i?.removeEventListener.bind(i);
20486
+ r?.observe(t.body, {
20385
20487
  childList: !0,
20386
20488
  subtree: !0,
20387
20489
  attributes: !0,
@@ -20395,40 +20497,47 @@ function LC(e) {
20395
20497
  ]
20396
20498
  }), S.set(t, {
20397
20499
  load: e,
20398
- observer: r
20500
+ observer: r,
20501
+ removeResizeListener: () => a?.("resize", P),
20502
+ unsubscribeLocation: t.defaultView && C_(t) ? ql(t.defaultView, P) : () => {}
20399
20503
  });
20400
20504
  }
20401
- for (let t of S.keys()) e.has(t) || N(t);
20402
- }, F = () => {
20403
- C || b || m.length === 0 || (C = !0, P());
20404
- }, I = () => {
20405
- if (C) {
20406
- C = !1;
20407
- for (let e of S.keys()) N(e);
20408
- x && r.cancelAnimationFrame(x), x = 0;
20505
+ for (let t of S.keys()) e.has(t) || F(t);
20506
+ I();
20507
+ }, R = () => {
20508
+ b || m.length === 0 || (w = !0, L());
20509
+ }, z = () => {
20510
+ if (w) {
20511
+ w = !1;
20512
+ for (let e of S.keys()) F(e);
20513
+ for (let e of C.values()) e.disconnect();
20514
+ C.clear(), x && r.cancelAnimationFrame(x), x = 0;
20409
20515
  }
20516
+ }, B = () => {
20517
+ L(), N(), A();
20410
20518
  };
20411
- m.length > 0 && (j(), F());
20412
- let L = ql(r, (e) => {
20519
+ r.addEventListener("mesurer:responsive-stage-change", B), i?.addEventListener("scroll", P, !0), m.length > 0 && (N(), R());
20520
+ let V = ql(r, (e) => {
20413
20521
  if (e === l || b) return;
20414
- D(), I(), v.clear(), y.clear(), l = e, m.length = 0;
20522
+ k(), z(), v.clear(), y.clear(), l = e, m.length = 0;
20415
20523
  let t = f();
20416
- m.push(...t.annotations), t.migrated && D(), m.length > 0 && (j(), F()), O();
20417
- }), R = t.subscribe(O), z = () => ({
20524
+ m.push(...t.annotations), t.migrated && k(), m.length > 0 && (N(), R()), A();
20525
+ }), ee = t.subscribe(A), H = () => ({
20418
20526
  guides: t.current.guides,
20419
20527
  measurements: t.current.measurements,
20420
20528
  activeMeasurement: t.current.activeMeasurement,
20421
20529
  distances: t.current.heldDistances
20422
- }), B = (e) => gc({
20530
+ }), U = (e) => gc({
20423
20531
  ...e,
20424
- workspace: z(),
20532
+ workspace: H(),
20425
20533
  guideTolerance: 10
20426
- }), V = (e, t) => ({
20534
+ }), W = (e, t) => ({
20427
20535
  id: `target-${t + 1}`,
20428
20536
  selector: bu(e),
20429
20537
  fingerprint: xu(e),
20430
- lastRect: Qu(e)
20431
- }), ee = (e) => {
20538
+ lastRect: Qu(e),
20539
+ ...MC(e)
20540
+ }), te = (e) => {
20432
20541
  let n = [], i = /* @__PURE__ */ new Set();
20433
20542
  for (let t of e) {
20434
20543
  let e = t.trim();
@@ -20438,7 +20547,7 @@ function LC(e) {
20438
20547
  let a = n.map((e) => {
20439
20548
  let t;
20440
20549
  try {
20441
- t = E(e);
20550
+ t = O(e);
20442
20551
  } catch {
20443
20552
  throw Error(`Invalid Mesurer selection selector: ${e}`);
20444
20553
  }
@@ -20449,38 +20558,39 @@ function LC(e) {
20449
20558
  t.checkpoint(), t.setEnabled(!0), t.setToolMode("select");
20450
20559
  let o = a.map((e) => sd(e, r));
20451
20560
  return t.setSelectedMeasurements(o, o.at(-1) ?? null), t.setTransient({ selectionOriginRect: null }), a;
20452
- }, H = (e, t = []) => (m.push(e), e.anchor.kind === "elements" && e.anchor.targets.forEach((n, r) => {
20453
- let i = t[r], a = w(e.id, n.id);
20454
- i && T(i) && v.set(a, i), y.set(a, !!(i && T(i)));
20455
- }), F(), D(), O(), PC(e)), U = (e, t) => {
20561
+ }, ne = (e, t = []) => (m.push(e), e.anchor.kind === "elements" && e.anchor.targets.forEach((n, r) => {
20562
+ let i = t[r], a = T(e.id, n.id);
20563
+ i && E(i) && v.set(a, i), y.set(a, !!(i && E(i)));
20564
+ }), R(), k(), A(), LC(e)), re = (e, t) => {
20565
+ if (i?.querySelector("[data-mesurer-responsive-stage]")) throw Error("Select a preview element before adding a Responsive annotation.");
20456
20566
  let n = e.trim();
20457
20567
  if (!n) throw Error("Annotation note cannot be empty.");
20458
- let i = uc(t);
20459
- return H({
20460
- id: FC(r, "annotation"),
20568
+ let a = uc(t);
20569
+ return ne({
20570
+ id: RC(r, "annotation"),
20461
20571
  note: n,
20462
20572
  createdAt: Date.now(),
20463
20573
  anchor: {
20464
20574
  kind: "region",
20465
- rect: i
20575
+ rect: a
20466
20576
  },
20467
- baseline: B({
20577
+ baseline: U({
20468
20578
  targets: [],
20469
- region: i
20579
+ region: a
20470
20580
  })
20471
20581
  });
20472
- }, W = (e) => {
20582
+ }, ie = (e) => {
20473
20583
  let n = e.trim();
20474
20584
  if (!n) throw Error("Annotation note cannot be empty.");
20475
- if (IC(t).some((e) => C_(e.ownerDocument))) throw Error("Context annotations are unavailable for Responsive preview targets.");
20476
- let i = IC(t).filter(T), a = t.current.selectionOriginRect ? uc(t.current.selectionOriginRect) : null;
20585
+ let i = zC(t).filter(E), a = t.current.selectionOriginRect ? uc(t.current.selectionOriginRect) : null;
20477
20586
  if (!i.length) {
20478
20587
  if (!a) throw Error("Select a page element or drag a region before adding an annotation.");
20479
- return U(n, a);
20588
+ return re(n, a);
20480
20589
  }
20481
- let o = i.map(V);
20482
- return H({
20483
- id: FC(r, "annotation"),
20590
+ let o = i.map(W);
20591
+ if (new Set(o.map((e) => JSON.stringify(e.viewport))).size > 1) throw Error("Select elements within one Responsive preview before adding an annotation.");
20592
+ return ne({
20593
+ id: RC(r, "annotation"),
20484
20594
  note: n,
20485
20595
  createdAt: Date.now(),
20486
20596
  anchor: {
@@ -20488,12 +20598,12 @@ function LC(e) {
20488
20598
  targets: o,
20489
20599
  region: a
20490
20600
  },
20491
- baseline: B({
20601
+ baseline: U({
20492
20602
  targets: o,
20493
20603
  elements: i
20494
20604
  })
20495
20605
  }, i);
20496
- }, te = () => {
20606
+ }, G = () => {
20497
20607
  for (let [e, t] of _) t.value || t.priority ? e.style.setProperty("display", t.value, t.priority) : e.style.removeProperty("display");
20498
20608
  _.clear();
20499
20609
  };
@@ -20510,15 +20620,22 @@ function LC(e) {
20510
20620
  activeMeasurement: t.current.activeMeasurement,
20511
20621
  heldDistances: [...t.current.heldDistances],
20512
20622
  guides: t.current.guides.map((e) => ({ ...e })),
20513
- annotations: m.map(PC)
20623
+ annotations: m.map(LC)
20514
20624
  };
20515
20625
  },
20516
20626
  elementRect(e) {
20517
20627
  return Qu(e);
20518
20628
  },
20629
+ targetScope: MC,
20630
+ annotationVisible(e) {
20631
+ let t = m.find((t) => t.id === e);
20632
+ if (!t) return !1;
20633
+ let n = !!i?.querySelector("[data-mesurer-responsive-stage]"), r = t.anchor.kind === "elements" && t.anchor.targets.some((e) => e.viewport);
20634
+ return n === r && (!r || t.anchor.kind === "elements" && t.anchor.targets.some((e) => M(t.id, e)));
20635
+ },
20519
20636
  currentSelection() {
20520
20637
  return {
20521
- elements: IC(t).filter(T),
20638
+ elements: zC(t).filter(E),
20522
20639
  region: t.current.selectionOriginRect ? uc(t.current.selectionOriginRect) : null
20523
20640
  };
20524
20641
  },
@@ -20547,16 +20664,16 @@ function LC(e) {
20547
20664
  });
20548
20665
  },
20549
20666
  toggleSelection(e) {
20550
- if (!e.isConnected || !T(e)) return;
20667
+ if (!e.isConnected || !E(e)) return;
20551
20668
  let n = t.current.selectedMeasurements.some((t) => t.elementRef === e) ? t.current.selectedMeasurements.filter((t) => t.elementRef !== e) : [...t.current.selectedMeasurements, sd(e, r)];
20552
20669
  t.checkpoint(), t.setSelectedMeasurements(n, n.at(-1) ?? null), t.setTransient({ selectionOriginRect: null });
20553
20670
  },
20554
20671
  selectGestureActive() {
20555
20672
  return t.current.toolMode === "select" && t.current.start !== null;
20556
20673
  },
20557
- select: ee,
20674
+ select: te,
20558
20675
  setHover(e) {
20559
- if (!e?.isConnected || !T(e)) {
20676
+ if (!e?.isConnected || !E(e)) {
20560
20677
  t.setHoverTarget(null, null);
20561
20678
  return;
20562
20679
  }
@@ -20572,20 +20689,20 @@ function LC(e) {
20572
20689
  t.setHoverTarget(null, null);
20573
20690
  },
20574
20691
  hoveredElement() {
20575
- return t.current.hoverElement?.isConnected && T(t.current.hoverElement) ? t.current.hoverElement : null;
20692
+ return t.current.hoverElement?.isConnected && E(t.current.hoverElement) ? t.current.hoverElement : null;
20576
20693
  },
20577
20694
  annotations() {
20578
- return m.map(PC);
20695
+ return m.map(LC);
20579
20696
  },
20580
20697
  annotation(e) {
20581
20698
  let t = m.find((t) => t.id === e);
20582
20699
  if (!t) return null;
20583
- let n = PC(t), r = [];
20700
+ let n = LC(t), r = [];
20584
20701
  if (n.anchor.kind === "elements" && t.anchor.kind === "elements") {
20585
20702
  let e = t.anchor.targets;
20586
20703
  r = n.anchor.targets.map((n, r) => ({
20587
20704
  target: n,
20588
- element: A(t.id, e[r])
20705
+ element: M(t.id, e[r])
20589
20706
  }));
20590
20707
  }
20591
20708
  return {
@@ -20597,7 +20714,10 @@ function LC(e) {
20597
20714
  let t = m.find((t) => t.id === e);
20598
20715
  if (!t) return null;
20599
20716
  if (t.anchor.kind === "region") return uc(t.anchor.rect);
20600
- let n = t.anchor.targets.map((e) => A(t.id, e)?.getBoundingClientRect()).filter((e) => e !== void 0);
20717
+ let n = t.anchor.targets.map((e) => {
20718
+ let n = M(t.id, e);
20719
+ return n ? Qu(n) : void 0;
20720
+ }).filter((e) => e !== void 0);
20601
20721
  if (!n.length) {
20602
20722
  let e = fc(t.anchor.targets.map((e) => e.lastRect));
20603
20723
  return e ? uc(e) : null;
@@ -20609,17 +20729,17 @@ function LC(e) {
20609
20729
  height: e.height
20610
20730
  })));
20611
20731
  },
20612
- addSelectionAnnotation: W,
20613
- addRegionAnnotation: U,
20732
+ addSelectionAnnotation: ie,
20733
+ addRegionAnnotation: re,
20614
20734
  removeAnnotation(e) {
20615
20735
  let t = m.findIndex((t) => t.id === e);
20616
20736
  if (t < 0) return;
20617
20737
  let [n] = m.splice(t, 1);
20618
20738
  if (n.anchor.kind === "elements") for (let e of n.anchor.targets) {
20619
- let t = w(n.id, e.id);
20739
+ let t = T(n.id, e.id);
20620
20740
  v.delete(t), y.delete(t);
20621
20741
  }
20622
- m.length === 0 && I(), D(), O();
20742
+ m.length === 0 && z(), k(), A();
20623
20743
  },
20624
20744
  subscribe(e) {
20625
20745
  return g.add(e), () => g.delete(e);
@@ -20639,14 +20759,14 @@ function LC(e) {
20639
20759
  }), t.style.setProperty("display", "none", "important"));
20640
20760
  },
20641
20761
  finishCapture() {
20642
- te();
20762
+ G();
20643
20763
  },
20644
20764
  dispose() {
20645
- b || (b = !0, I(), L(), R(), te(), v.clear(), y.clear(), m.length = 0, g.clear());
20765
+ b || (b = !0, z(), V(), ee(), r.removeEventListener("mesurer:responsive-stage-change", B), i?.removeEventListener("scroll", P, !0), G(), v.clear(), y.clear(), m.length = 0, g.clear());
20646
20766
  }
20647
20767
  };
20648
20768
  }
20649
- var RC = [
20769
+ var VC = [
20650
20770
  "select",
20651
20771
  "xray",
20652
20772
  "color-picker",
@@ -20655,12 +20775,12 @@ var RC = [
20655
20775
  "text-inspector",
20656
20776
  "guides",
20657
20777
  "settings"
20658
- ], zC = "mesurer-plugin-settings", BC = (e) => (e.startsWith("mesurer.") ? e.slice(8) : e).split(/[.-]/g).filter(Boolean).map((e) => e[0]?.toUpperCase() + e.slice(1)).join(" ") || e, VC = (e) => "create" in e && typeof e.create == "function", HC = (e) => e === "select" || e === "xray" || e === "color-picker" || e === "rulers" || e === "responsive" || e === "text-inspector" || e === "guides" || e === "distance" || e === "settings", UC = (e) => `builtin.${e}`, WC = (e, t) => {
20778
+ ], HC = "mesurer-plugin-settings", UC = (e) => (e.startsWith("mesurer.") ? e.slice(8) : e).split(/[.-]/g).filter(Boolean).map((e) => e[0]?.toUpperCase() + e.slice(1)).join(" ") || e, WC = (e) => "create" in e && typeof e.create == "function", GC = (e) => e === "select" || e === "xray" || e === "color-picker" || e === "rulers" || e === "responsive" || e === "text-inspector" || e === "guides" || e === "distance" || e === "settings", KC = (e) => `builtin.${e}`, qC = (e, t) => {
20659
20779
  let n = t.toLowerCase().replaceAll("cmd", "meta").split("+").map((e) => e.trim()).filter(Boolean);
20660
20780
  if (!n.length) return !1;
20661
20781
  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");
20662
20782
  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;
20663
- }, GC = ({ host: e, getBuiltinController: t, getModel: n, arrangeActive: r, isBuiltinPluginId: i, onPluginError: a }) => {
20783
+ }, JC = ({ host: e, getBuiltinController: t, getModel: n, arrangeActive: r, isBuiltinPluginId: i, onPluginError: a }) => {
20664
20784
  let o = () => e.tools().find((e) => e.modeSwitch === !0 && e.toolbarMode === "edit"), s = null, c = async () => {
20665
20785
  let r = s;
20666
20786
  if (s = null, !r) return;
@@ -20714,23 +20834,23 @@ var RC = [
20714
20834
  }
20715
20835
  };
20716
20836
  };
20717
- function KC(e) {
20837
+ function YC(e) {
20718
20838
  let t = un(() => e.pluginHost), n = t ?? jc(), r = !t, i = un(() => e.version ?? "0.1.0"), a = (t) => e.version && t.id.startsWith("mesurer.") ? {
20719
20839
  ...t,
20720
20840
  version: i
20721
20841
  } : t, o = new Set(un(() => e.excludePlugins ?? [])), s = un(() => [...e.plugins ?? []]), c = s.some((e) => e.id === "mesurer.responsive"), l = un(() => Ob([], e.excludePlugins ?? []).filter((e) => !c || e.id !== "mesurer.responsive").map(a)), u = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Map(), f = l.find((e) => e.id === "mesurer.responsive");
20722
20842
  f && !u.has(f.id) && u.set(f.id, {
20723
20843
  id: f.id,
20724
- label: BC(f.id),
20844
+ label: UC(f.id),
20725
20845
  order: -100,
20726
20846
  enabled: !0,
20727
20847
  create: () => f
20728
20848
  });
20729
20849
  for (let [e, t] of s.entries()) {
20730
- if (VC(t)) {
20850
+ if (WC(t)) {
20731
20851
  u.set(t.id, {
20732
20852
  ...t,
20733
- label: t.label ?? BC(t.id),
20853
+ label: t.label ?? UC(t.id),
20734
20854
  order: t.order ?? 1e3 + e
20735
20855
  });
20736
20856
  continue;
@@ -20738,7 +20858,7 @@ function KC(e) {
20738
20858
  let n = a(t);
20739
20859
  u.set(n.id, {
20740
20860
  id: n.id,
20741
- label: BC(n.id),
20861
+ label: UC(n.id),
20742
20862
  order: 1e3 + e,
20743
20863
  enabled: !0,
20744
20864
  create: () => n
@@ -20746,11 +20866,11 @@ function KC(e) {
20746
20866
  }
20747
20867
  let p = /* @__PURE__ */ new Set();
20748
20868
  for (let e of u.values()) e.enabled !== !1 && p.add(e.id);
20749
- let m = new Map([...u.values()].map((e) => [e.id, new Set(e.settingsIds ?? [])])), h = /* @__PURE__ */ new Map(), g = /* @__PURE__ */ new Map(), _ = /* @__PURE__ */ new Set(), v = /* @__PURE__ */ new Map(), y = null, b = null, x = () => void 0, S = async () => void 0, [C, w] = K(0), [T, E] = K(!1), [D, O] = K(!1), k = (e) => (C(), n.tools().find((t) => (t.builtin === e || t.id === e) && t.command !== UC(e))), A = (e) => (C(), T() ? 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)), j = () => (C(), n.state.get("mesurer.arrange.active") ?? !1), M = (e) => !1;
20869
+ let m = new Map([...u.values()].map((e) => [e.id, new Set(e.settingsIds ?? [])])), h = /* @__PURE__ */ new Map(), g = /* @__PURE__ */ new Map(), _ = /* @__PURE__ */ new Set(), v = /* @__PURE__ */ new Map(), y = null, b = null, x = () => void 0, S = async () => void 0, [C, w] = K(0), [T, E] = K(!1), [D, O] = K(!1), k = (e) => (C(), n.tools().find((t) => (t.builtin === e || t.id === e) && t.command !== KC(e))), A = (e) => (C(), T() ? 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)), j = () => (C(), n.state.get("mesurer.arrange.active") ?? !1), M = (e) => !1;
20750
20870
  vo(j, (e) => {
20751
20871
  e && O(!1);
20752
20872
  });
20753
- let N = mo(() => (C(), n.tools().filter((e) => e.hidden?.() ? !1 : !e.builtin || !HC(e.builtin) || e.command !== UC(e.builtin)))), P = mo(() => {
20873
+ let N = mo(() => (C(), n.tools().filter((e) => e.hidden?.() ? !1 : !e.builtin || !GC(e.builtin) || e.command !== KC(e.builtin)))), P = mo(() => {
20754
20874
  C();
20755
20875
  let e = n.settings();
20756
20876
  return [...u.values()].sort((e, t) => (e.order ?? 0) - (t.order ?? 0)).map((t) => {
@@ -20760,7 +20880,7 @@ function KC(e) {
20760
20880
  })).filter((e) => (e.controls?.length ?? 0) > 0);
20761
20881
  return {
20762
20882
  id: t.id,
20763
- label: t.label ?? BC(t.id),
20883
+ label: t.label ?? UC(t.id),
20764
20884
  description: t.description,
20765
20885
  error: d.get(t.id),
20766
20886
  enabled: n.has(t.id),
@@ -20771,14 +20891,14 @@ function KC(e) {
20771
20891
  }), F = mo(() => (C(), n.settings().filter((e) => e.id === hy))), I = () => {
20772
20892
  C();
20773
20893
  let e = [];
20774
- for (let t of RC) (!A(t) || k(t)) && e.push(`[data-mesurer-builtin='${t}']{display:none!important}`);
20894
+ for (let t of VC) (!A(t) || k(t)) && e.push(`[data-mesurer-builtin='${t}']{display:none!important}`);
20775
20895
  return (!A("guides") || k("guides")) && e.push("[data-mesurer-builtin='guides-menu']{display:none!important}"), A("guides") || e.push("[data-mesurer-guide='true']{display:none!important}"), A("distance") || e.push("[data-mesurer-distance='true']{display:none!important}"), A("rulers") || e.push("[data-mesurer-rulers='true']{display:none!important}"), A("color-picker") || e.push(".mesurer-color-picker{display:none!important}"), e.join("\n");
20776
- }, { editModeTool: L, executeTool: R, leaveEditMode: z, runTool: B } = GC({
20896
+ }, { editModeTool: L, executeTool: R, leaveEditMode: z, runTool: B } = JC({
20777
20897
  host: n,
20778
20898
  getBuiltinController: () => b,
20779
20899
  getModel: () => y,
20780
20900
  arrangeActive: j,
20781
- isBuiltinPluginId: HC,
20901
+ isBuiltinPluginId: GC,
20782
20902
  onPluginError: e.onPluginError
20783
20903
  }), V = (e) => {
20784
20904
  D() && [
@@ -20851,7 +20971,7 @@ function KC(e) {
20851
20971
  n || (n = !0, t(), e.remove());
20852
20972
  }
20853
20973
  };
20854
- }, ce = (e) => LC({
20974
+ }, ce = (e) => BC({
20855
20975
  model: ne(),
20856
20976
  ownerDocument: B,
20857
20977
  ownerWindow: V,
@@ -20860,7 +20980,7 @@ function KC(e) {
20860
20980
  persistenceKey: e ? `${P.persistKey ?? "mesurer-plugin-settings"}:${e}:${V.location.origin}` : void 0
20861
20981
  }), le = B.createElement("style");
20862
20982
  le.dataset.mesurerPluginVisibility = "true", le.dataset.mesurerInspectorUi = "true", le.textContent = I(), F.append(le);
20863
- let ue = P.persistKey ? `${P.persistKey}:plugins` : zC, de = `${ue}:availability`, fe = /* @__PURE__ */ new Map();
20983
+ let ue = P.persistKey ? `${P.persistKey}:plugins` : HC, de = `${ue}:availability`, fe = /* @__PURE__ */ new Map();
20864
20984
  try {
20865
20985
  let e = V.localStorage.getItem(de);
20866
20986
  if (e) {
@@ -20904,7 +21024,7 @@ function KC(e) {
20904
21024
  "rulers"
20905
21025
  ].includes(e.id) && (e.active?.() ?? !1))) && O(!1), (e.reason === "state" || e.reason === "history" || e.reason === "remove" || e.reason === "replace") && he(), T() && !s && (e.reason === "load" || e.reason === "remove" || e.reason === "replace") && pe(), e.reason === "remove" && e.pluginId?.startsWith("mesurer.")) {
20906
21026
  let t = e.pluginId.slice(8);
20907
- HC(t) && t !== "responsive" && b?.deactivate(t), t === "responsive" && O(!1);
21027
+ GC(t) && t !== "responsive" && b?.deactivate(t), t === "responsive" && O(!1);
20908
21028
  }
20909
21029
  });
20910
21030
  P.onPluginHost?.(C);
@@ -21028,7 +21148,7 @@ function KC(e) {
21028
21148
  createInspectorMount: se
21029
21149
  };
21030
21150
  e.service.provide("runtime:solid", t), yy(e), jb(e, t), jC(e, t);
21031
- for (let t of RC) e.command.register(UC(t), () => Oe(t));
21151
+ for (let t of VC) e.command.register(KC(t), () => Oe(t));
21032
21152
  }
21033
21153
  }), t)) {
21034
21154
  for (let e of [...u.values()].sort((e, t) => (e.order ?? 0) - (t.order ?? 0))) {
@@ -21103,7 +21223,7 @@ function KC(e) {
21103
21223
  e.preventDefault(), e.stopImmediatePropagation();
21104
21224
  return;
21105
21225
  }
21106
- let a = N().find((t) => t.shortcut && !t.disabled?.() && WC(e, t.shortcut));
21226
+ let a = N().find((t) => t.shortcut && !t.disabled?.() && qC(e, t.shortcut));
21107
21227
  if (a) {
21108
21228
  e.preventDefault(), e.stopImmediatePropagation(), U(a);
21109
21229
  return;
@@ -21163,7 +21283,7 @@ function KC(e) {
21163
21283
  }
21164
21284
  });
21165
21285
  }
21166
- var qC = (e, t, n) => Math.min(Math.max(e, t), Math.max(t, n)), JC = (e, t, n = 0) => !(e.left + e.width + n <= t.left || t.left + t.width + n <= e.left || e.top + e.height + n <= t.top || t.top + t.height + n <= e.top), YC = (e, t, n, r, i) => {
21286
+ var XC = (e, t, n) => Math.min(Math.max(e, t), Math.max(t, n)), ZC = (e, t, n = 0) => !(e.left + e.width + n <= t.left || t.left + t.width + n <= e.left || e.top + e.height + n <= t.top || t.top + t.height + n <= e.top), QC = (e, t, n, r, i) => {
21167
21287
  let a = e.left + e.width, o = e.top + e.height, s = [
21168
21288
  {
21169
21289
  axis: "vertical",
@@ -21211,7 +21331,7 @@ var qC = (e, t, n) => Math.min(Math.max(e, t), Math.max(t, n)), JC = (e, t, n =
21211
21331
  }
21212
21332
  ];
21213
21333
  return i ? s.sort((e, t) => t.space - e.space) : s;
21214
- }, XC = (e, t, n) => {
21334
+ }, $C = (e, t, n) => {
21215
21335
  let r = [];
21216
21336
  for (let i = 0; i <= n; i += 1) {
21217
21337
  let n = i * t;
@@ -21237,14 +21357,14 @@ var qC = (e, t, n) => Math.min(Math.max(e, t), Math.max(t, n)), JC = (e, t, n =
21237
21357
  }
21238
21358
  return r;
21239
21359
  };
21240
- function ZC(e, t, n = {}) {
21360
+ function ew(e, t, n = {}) {
21241
21361
  let r = n.markerSize ?? 24, i = n.markerGap ?? 4, a = n.targetGap ?? 6, o = n.targetClearance ?? 2, s = n.viewportPadding ?? 4, c = n.obstacles ?? [], l = Math.max(0, n.maxShiftRings ?? 2), u = n.viewportAware ?? !1, d = r + i, f = Math.max(s, t.width - r - s), p = Math.max(s, t.height - r - s), m = [], h = e.map((e) => e.rect), g = [];
21242
21362
  for (let n of e) {
21243
- let e = /* @__PURE__ */ new Set(), _ = [], v = YC(n.rect, t, r, a, u);
21244
- for (let t of XC(v, d, l)) {
21363
+ let e = /* @__PURE__ */ new Set(), _ = [], v = QC(n.rect, t, r, a, u);
21364
+ for (let t of $C(v, d, l)) {
21245
21365
  let n = u ? {
21246
- left: qC(t.left, s, f),
21247
- top: qC(t.top, s, p)
21366
+ left: XC(t.left, s, f),
21367
+ top: XC(t.top, s, p)
21248
21368
  } : t, r = `${n.left}:${n.top}`;
21249
21369
  e.has(r) || (e.add(r), _.push(n));
21250
21370
  }
@@ -21254,21 +21374,21 @@ function ZC(e, t, n = {}) {
21254
21374
  width: r,
21255
21375
  height: r
21256
21376
  };
21257
- return h.every((e) => !JC(t, e, o)) && c.every((e) => !JC(t, e, i));
21377
+ return h.every((e) => !ZC(t, e, o)) && c.every((e) => !ZC(t, e, i));
21258
21378
  }), b = y.find((e) => {
21259
21379
  let t = {
21260
21380
  ...e,
21261
21381
  width: r,
21262
21382
  height: r
21263
21383
  };
21264
- return m.every((e) => !JC(t, e, i));
21384
+ return m.every((e) => !ZC(t, e, i));
21265
21385
  }) ?? y.find((e) => {
21266
21386
  let t = {
21267
21387
  ...e,
21268
21388
  width: r,
21269
21389
  height: r
21270
21390
  };
21271
- return m.every((e) => !JC(t, e));
21391
+ return m.every((e) => !ZC(t, e));
21272
21392
  }) ?? y[0] ?? _[0] ?? {
21273
21393
  left: s,
21274
21394
  top: s
@@ -21284,20 +21404,20 @@ function ZC(e, t, n = {}) {
21284
21404
  }
21285
21405
  return g;
21286
21406
  }
21287
- var QC = (e, t, n) => Math.min(Math.max(e, t), Math.max(t, n)), $C = 0, ew = (e) => e.split(",").map((e) => e.trim()).filter((e) => e.length > 0 && e !== "none"), tw = (e) => {
21407
+ var tw = (e, t, n) => Math.min(Math.max(e, t), Math.max(t, n)), nw = 0, rw = (e) => e.split(",").map((e) => e.trim()).filter((e) => e.length > 0 && e !== "none"), iw = (e) => {
21288
21408
  let t = e.ownerDocument.defaultView?.HTMLElement;
21289
21409
  return !!(t && e instanceof t);
21290
- }, nw = (e, t) => {
21291
- let n = e.style.getPropertyValue("anchor-name"), r = e.style.getPropertyPriority("anchor-name"), i = ew(n);
21410
+ }, aw = (e, t) => {
21411
+ let n = e.style.getPropertyValue("anchor-name"), r = e.style.getPropertyPriority("anchor-name"), i = rw(n);
21292
21412
  i.includes(t) || e.style.setProperty("anchor-name", [...i, t].join(", "), r);
21293
21413
  let a = !1;
21294
21414
  return () => {
21295
21415
  if (a) return;
21296
21416
  a = !0;
21297
- let i = ew(e.style.getPropertyValue("anchor-name")).filter((e) => e !== t);
21417
+ let i = rw(e.style.getPropertyValue("anchor-name")).filter((e) => e !== t);
21298
21418
  i.length ? e.style.setProperty("anchor-name", i.join(", "), e.style.getPropertyPriority("anchor-name")) : n.trim() === "none" ? e.style.setProperty("anchor-name", n, r) : e.style.removeProperty("anchor-name");
21299
21419
  };
21300
- }, rw = (e) => {
21420
+ }, ow = (e) => {
21301
21421
  if (!e.length) return null;
21302
21422
  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));
21303
21423
  return {
@@ -21306,14 +21426,14 @@ var QC = (e, t, n) => Math.min(Math.max(e, t), Math.max(t, n)), $C = 0, ew = (e)
21306
21426
  width: r - t,
21307
21427
  height: i - n
21308
21428
  };
21309
- }, iw = (e, t, n, r, i = 8) => {
21429
+ }, sw = (e, t, n, r, i = 8) => {
21310
21430
  let a = r.innerWidth - t - 8, o = r.innerHeight - n - 8, s = e.left + e.width + i, c = e.left - t - i;
21311
21431
  return {
21312
- left: s + t <= r.innerWidth - 8 ? s : c >= 8 ? c : QC(e.left + e.width - t, 8, a),
21313
- top: QC(e.top, 8, o)
21432
+ left: s + t <= r.innerWidth - 8 ? s : c >= 8 ? c : tw(e.left + e.width - t, 8, a),
21433
+ top: tw(e.top, 8, o)
21314
21434
  };
21315
- }, aw = (e, t, n, r, i = 8) => {
21316
- let a = r.innerWidth - t - 8, o = QC(e.left + e.width / 2 - t / 2, 8, a), s = e.top + e.height + i;
21435
+ }, cw = (e, t, n, r, i = 8) => {
21436
+ let a = r.innerWidth - t - 8, o = tw(e.left + e.width / 2 - t / 2, 8, a), s = e.top + e.height + i;
21317
21437
  if (s + n <= r.innerHeight - 8) return {
21318
21438
  left: o,
21319
21439
  top: s
@@ -21322,10 +21442,10 @@ var QC = (e, t, n) => Math.min(Math.max(e, t), Math.max(t, n)), $C = 0, ew = (e)
21322
21442
  return c >= 8 ? {
21323
21443
  left: o,
21324
21444
  top: c
21325
- } : iw(e, t, n, r, i);
21445
+ } : sw(e, t, n, r, i);
21326
21446
  };
21327
- function ow(e) {
21328
- let [t, n] = K(0), [r, i] = K(0), [a, o] = K(null), [s, c] = K(null), [l, u] = K(null), [d, f] = K({}), [p, m] = K(!1), [h, g] = K(""), [_, v] = K(!1), [y, b] = K(null), [x, S] = K(!1), [C, w] = K(null), [T, E] = K(null), D = `--mesurer-annotation-trigger-${++$C}`, O = null, k = e.initialTriggerFallback === "current-and-next", A = null, j = null, M = null, N, P, F = null, I = null, L = !1, R = null, z = null, B = null, V = null, ee = null, H = null, U = /* @__PURE__ */ new Map(), W = () => N?.ownerDocument.defaultView ?? window, te = Dl(W()), ne = "context-annotation-send", re = () => e.coordinateSpace === "viewport", ie = (e) => e ? "native-anchor" : re() ? "cached-delta" : "document", G = (e) => {
21447
+ function lw(e) {
21448
+ let [t, n] = K(0), [r, i] = K(0), [a, o] = K(null), [s, c] = K(null), [l, u] = K(null), [d, f] = K({}), [p, m] = K(!1), [h, g] = K(""), [_, v] = K(!1), [y, b] = K(null), [x, S] = K(!1), [C, w] = K(null), [T, E] = K(null), D = `--mesurer-annotation-trigger-${++nw}`, O = null, k = e.initialTriggerFallback === "current-and-next", A = null, j = null, M = null, N, P, F = null, I = null, L = !1, R = null, z = null, B = null, V = null, ee = null, H = null, U = /* @__PURE__ */ new Map(), W = () => N?.ownerDocument.defaultView ?? window, te = Dl(W()), ne = "context-annotation-send", re = () => e.coordinateSpace === "viewport", ie = (e) => e ? "native-anchor" : re() ? "cached-delta" : "document", G = (e) => {
21329
21449
  if (re()) return e;
21330
21450
  let t = W();
21331
21451
  return {
@@ -21361,8 +21481,8 @@ function ow(e) {
21361
21481
  t && (t.scroll.release(), t.releaseAnchor?.(), U.delete(e));
21362
21482
  }, he = (t) => {
21363
21483
  let n = e.runtime.annotation(t);
21364
- return !n || n.anchor.kind !== "elements" ? null : n.resolvedTargets.find(({ element: e }) => e?.isConnected)?.element ?? null;
21365
- }, ge = (e) => !!(tw(e) && re() && N && le() && e.getRootNode() === N.getRootNode()), _e = (e) => {
21484
+ return !n || n.anchor.kind !== "elements" || !e.runtime.annotationVisible(t) ? null : n.resolvedTargets.find(({ element: e }) => e?.isConnected && !C_(e.ownerDocument))?.element ?? null;
21485
+ }, ge = (e) => !!(iw(e) && re() && N && le() && e.getRootNode() === N.getRootNode()), _e = (e) => {
21366
21486
  let t = he(e), n = U.get(e);
21367
21487
  if (!t) {
21368
21488
  n && (me(e), i((e) => e + 1));
@@ -21376,12 +21496,12 @@ function ow(e) {
21376
21496
  me(e);
21377
21497
  let a = t.ownerDocument.defaultView;
21378
21498
  if (a) {
21379
- if (r && tw(t)) {
21380
- let n = `--mesurer-annotation-${++$C}`;
21499
+ if (r && iw(t)) {
21500
+ let n = `--mesurer-annotation-${++nw}`;
21381
21501
  U.set(e, {
21382
21502
  target: t,
21383
21503
  anchorName: n,
21384
- releaseAnchor: nw(t, n),
21504
+ releaseAnchor: aw(t, n),
21385
21505
  scroll: Jp(a, t, () => pe(e), { trackWindow: !1 })
21386
21506
  });
21387
21507
  } else U.set(e, {
@@ -21407,21 +21527,25 @@ function ow(e) {
21407
21527
  e.initialTriggerFallback && (O = ue());
21408
21528
  let xe = () => {
21409
21529
  V?.release(), V = null, B?.(), B = null, R = null, z = null;
21410
- }, Se = (e) => !!(tw(e) && re() && N && e !== O && le() && e.getRootNode() === N.getRootNode()), Ce = () => {
21530
+ }, Se = (e) => !!(iw(e) && re() && N && e !== O && le() && e.getRootNode() === N.getRootNode()), Ce = () => {
21411
21531
  let e = ue();
21532
+ if (e && C_(e.ownerDocument)) {
21533
+ xe();
21534
+ return;
21535
+ }
21412
21536
  O && e !== O && (O = null);
21413
21537
  let t = R, n = !!(e?.isConnected && Se(e)), r = z === e;
21414
21538
  if (e === R && e?.isConnected && n === r) {
21415
21539
  V?.sync();
21416
21540
  return;
21417
21541
  }
21418
- let i = e === t ? D : `--mesurer-annotation-trigger-${++$C}`;
21542
+ let i = e === t ? D : `--mesurer-annotation-trigger-${++nw}`;
21419
21543
  if (xe(), !e?.isConnected) return;
21420
21544
  R = e;
21421
21545
  let a = e.ownerDocument.defaultView;
21422
21546
  if (a) {
21423
- if (n && tw(e)) {
21424
- B = nw(e, i), z = e, D = i, V = Jp(a, e, fe, { trackWindow: !1 });
21547
+ if (n && iw(e)) {
21548
+ B = aw(e, i), z = e, D = i, V = Jp(a, e, fe, { trackWindow: !1 });
21425
21549
  return;
21426
21550
  }
21427
21551
  D = i, V = Jp(a, e, fe, { trackWindow: re() });
@@ -21463,24 +21587,24 @@ function ow(e) {
21463
21587
  });
21464
21588
  let Pe = ue();
21465
21589
  we(Pe);
21466
- let Fe = e.runtime.subscribe(() => {
21590
+ let Fe = e.runtime.subscribe(() => un(() => {
21467
21591
  let t = e.runtime.selectGestureActive();
21468
21592
  p() && t ? (k = !0, ce()) : p() && A !== null && !oe(A, ae()) && (O = ue(), k = !1, ce());
21469
21593
  let r = ue(), i = r !== Pe;
21470
- i && (Pe = r, we(Pe), k && (k = !1, O = r)), Ce(), i && Ee(), n((e) => e + 1), be();
21471
- });
21594
+ i && (Pe = r, we(Pe), k && (k = !1, O = r)), Ce(), (i || r && C_(r.ownerDocument)) && Ee(), n((e) => e + 1), be();
21595
+ }));
21472
21596
  Ce(), W().queueMicrotask(ve), In(() => {
21473
21597
  ee?.disconnect(), ee = null, se(), H?.removeEventListener("resize", Ee), H = null, Ne?.disconnect(), xe();
21474
21598
  for (let e of U.keys()) me(e);
21475
21599
  Fe();
21476
21600
  });
21477
- let Ie = mo(() => (t(), e.runtime.currentSelection())), Le = mo(() => (t(), e.runtime.annotations())), Re = mo(() => {
21601
+ let Ie = mo(() => (t(), e.runtime.currentSelection())), Le = mo(() => (t(), e.runtime.annotations().filter((t) => e.runtime.annotationVisible(t.id)))), Re = mo(() => {
21478
21602
  let e = a();
21479
21603
  return e ? Le().find((t) => t.id === e) ?? null : null;
21480
21604
  }), ze = mo(() => s() ?? l() ?? a()), Be = (e) => Le().findIndex((t) => t.id === e) + 1, Ve = mo(() => {
21481
21605
  t(), r();
21482
21606
  let n = ze();
21483
- if (!n) return [];
21607
+ if (!n || !e.runtime.annotationVisible(n)) return [];
21484
21608
  let i = e.runtime.annotation(n);
21485
21609
  if (!i) return [];
21486
21610
  if (i.anchor.kind === "region") return [{ ...i.anchor.rect }];
@@ -21512,7 +21636,7 @@ function ow(e) {
21512
21636
  };
21513
21637
  });
21514
21638
  return e.region && t.push({ ...e.region }), t;
21515
- }), Ge = mo(() => rw(We())), Ke = (e) => e.anchor.kind === "elements" ? `${e.anchor.targets.length} selected ${e.anchor.targets.length === 1 ? "element" : "elements"}` : "Selected region", qe = mo(() => {
21639
+ }), Ge = mo(() => ow(We())), Ke = (e) => e.anchor.kind === "elements" ? `${e.anchor.targets.length} selected ${e.anchor.targets.length === 1 ? "element" : "elements"}` : "Selected region", qe = mo(() => {
21516
21640
  r();
21517
21641
  let t = e.runtime.currentSelection().elements;
21518
21642
  if (!t.length) return null;
@@ -21521,7 +21645,7 @@ function ow(e) {
21521
21645
  }), Je = () => {
21522
21646
  r();
21523
21647
  let e = qe();
21524
- if (!e?.isConnected || C_(e.ownerDocument)) return null;
21648
+ if (!e?.isConnected) return null;
21525
21649
  let t = Qu(e), n = {
21526
21650
  left: t.left,
21527
21651
  top: t.top,
@@ -21532,7 +21656,7 @@ function ow(e) {
21532
21656
  top: e.top,
21533
21657
  width: 24,
21534
21658
  height: 24
21535
- })), [o] = ZC([{
21659
+ })), [o] = ew([{
21536
21660
  id: "selection-note-trigger",
21537
21661
  rect: n
21538
21662
  }], {
@@ -21542,7 +21666,7 @@ function ow(e) {
21542
21666
  obstacles: [...a, ...De()],
21543
21667
  maxShiftRings: Math.ceil(Math.max(i.innerWidth, i.innerHeight) / 28),
21544
21668
  viewportAware: !0
21545
- }), s = o?.left ?? QC(n.left + n.width + 6, 4, i.innerWidth - 24 - 4), c = o?.top ?? QC(n.top, 4, i.innerHeight - 24 - 4), l = z === e, u = re() && !l;
21669
+ }), s = o?.left ?? tw(n.left + n.width + 6, 4, i.innerWidth - 24 - 4), c = o?.top ?? tw(n.top, 4, i.innerHeight - 24 - 4), l = z === e, u = re() && !l;
21546
21670
  return {
21547
21671
  left: l || u ? s : s + i.scrollX,
21548
21672
  top: l || u ? c : c + i.scrollY,
@@ -21560,7 +21684,7 @@ function ow(e) {
21560
21684
  rect: n
21561
21685
  }] : [];
21562
21686
  });
21563
- return new Map(ZC(i, {
21687
+ return new Map(ew(i, {
21564
21688
  width: n.innerWidth,
21565
21689
  height: n.innerHeight
21566
21690
  }, { obstacles: We() }).map((e) => [e.id, e]));
@@ -21581,7 +21705,7 @@ function ow(e) {
21581
21705
  };
21582
21706
  }, Qe = () => {
21583
21707
  let e = Ge(), t = W();
21584
- return e ? aw(e, 256, 160, t) : {
21708
+ return e ? cw(e, 256, 160, t) : {
21585
21709
  left: 8,
21586
21710
  top: 8
21587
21711
  };
@@ -21602,7 +21726,7 @@ function ow(e) {
21602
21726
  };
21603
21727
  }, et = (e, t) => {
21604
21728
  let n = W(), r = Ye(), i = r.get(e);
21605
- if (!i) return iw(t, 272, 176, n);
21729
+ if (!i) return sw(t, 272, 176, n);
21606
21730
  let a = n.innerWidth - 272 - 8, o = n.innerHeight - 176 - 8, s = [...r.values()].map((e) => ({
21607
21731
  left: e.left,
21608
21732
  top: e.top,
@@ -21628,8 +21752,8 @@ function ow(e) {
21628
21752
  }
21629
21753
  ]) {
21630
21754
  let t = {
21631
- left: QC(e.left, 8, a),
21632
- top: QC(e.top, 8, o)
21755
+ left: tw(e.left, 8, a),
21756
+ top: tw(e.top, 8, o)
21633
21757
  }, n = `${t.left}:${t.top}`;
21634
21758
  l.has(n) || (l.add(n), u.push(t));
21635
21759
  }
@@ -21645,7 +21769,7 @@ function ow(e) {
21645
21769
  targetOverlap: c(r, t),
21646
21770
  index: n
21647
21771
  };
21648
- }).sort((e, t) => e.markerOverlap - t.markerOverlap || e.targetOverlap - t.targetOverlap || e.index - t.index)[0]?.candidate ?? iw(t, 272, 176, n);
21772
+ }).sort((e, t) => e.markerOverlap - t.markerOverlap || e.targetOverlap - t.targetOverlap || e.index - t.index)[0]?.candidate ?? sw(t, 272, 176, n);
21649
21773
  }, tt = (t) => {
21650
21774
  let n = e.runtime.annotationRect(t);
21651
21775
  if (!n) return {
@@ -21697,8 +21821,8 @@ function ow(e) {
21697
21821
  let u = (t) => {
21698
21822
  if (!j || t.pointerId !== j.pointerId) return;
21699
21823
  let r = j, i = Math.max(8, s.innerWidth - r.width - 8), a = Math.max(8, s.innerHeight - r.height - 8), o = {
21700
- left: QC(r.originLeft + t.clientX - r.startX, 8, i),
21701
- top: QC(r.originTop + t.clientY - r.startY, 8, a)
21824
+ left: tw(r.originLeft + t.clientX - r.startX, 8, i),
21825
+ top: tw(r.originTop + t.clientY - r.startY, 8, a)
21702
21826
  }, c = e.runtime.annotationRect(n);
21703
21827
  c && f((e) => ({
21704
21828
  ...e,
@@ -21729,7 +21853,7 @@ function ow(e) {
21729
21853
  }
21730
21854
  }
21731
21855
  }, ct = ce, lt = () => {
21732
- He() && (e.runtime.currentSelection().elements.some((e) => C_(e.ownerDocument)) || (k = !1, A = ae(), g(""), v(!1), b(null), w(null), o(null), m(!0), F = (e) => {
21856
+ He() && (k = !1, A = ae(), g(""), v(!1), b(null), w(null), o(null), m(!0), F = (e) => {
21733
21857
  let t = de()?.querySelector("[data-mesurer-annotation-composer='true']"), n = W().Node;
21734
21858
  if (!(t && n && e.target instanceof n && t.contains(e.target))) {
21735
21859
  if (h().trim() && !y()) {
@@ -21738,24 +21862,18 @@ function ow(e) {
21738
21862
  }
21739
21863
  ut();
21740
21864
  }
21741
- }, W().document.addEventListener("pointerdown", F, !0), W().queueMicrotask(() => V?.sync())));
21865
+ }, W().document.addEventListener("pointerdown", F, !0), W().queueMicrotask(() => V?.sync()));
21742
21866
  }, ut = () => {
21743
21867
  let e = p();
21744
21868
  A !== null && !oe(A, ae()) ? (O = ue(), k = !1, Ce(), Ee()) : e && (k = !1), ct();
21745
21869
  }, dt = () => {
21746
21870
  p() && (k = !0, ct());
21747
21871
  }, ft = () => {
21748
- if (!(!h().trim() || x())) {
21749
- if (e.runtime.currentSelection().elements.some((e) => C_(e.ownerDocument))) {
21750
- b("Context annotations are unavailable for Responsive preview targets.");
21751
- return;
21752
- }
21753
- try {
21754
- let t = e.runtime.addSelectionAnnotation(h());
21755
- k = !1, A = null, g(""), v(!1), b(null), m(!1), se(), _e(t.id), nt(t.id), o(t.id), w(null), ye(t.id);
21756
- } catch (e) {
21757
- b(e instanceof Error ? e.message : String(e));
21758
- }
21872
+ if (!(!h().trim() || x())) try {
21873
+ let t = e.runtime.addSelectionAnnotation(h());
21874
+ k = !1, A = null, g(""), v(!1), b(null), m(!1), se(), _e(t.id), nt(t.id), o(t.id), w(null), ye(t.id);
21875
+ } catch (e) {
21876
+ b(e instanceof Error ? e.message : String(e));
21759
21877
  }
21760
21878
  }, pt = {
21761
21879
  openNoteComposer: lt,
@@ -22145,11 +22263,11 @@ function ow(e) {
22145
22263
  })
22146
22264
  ];
22147
22265
  }
22148
- function sw(e) {
22266
+ function uw(e) {
22149
22267
  let t = null;
22150
22268
  return In(ov(e.ownerWindow, () => {
22151
22269
  t?.abandonNoteComposer();
22152
- })), Y(ow, {
22270
+ })), Y(lw, {
22153
22271
  get runtime() {
22154
22272
  return e.runtime;
22155
22273
  },
@@ -22170,8 +22288,8 @@ function sw(e) {
22170
22288
  }
22171
22289
  });
22172
22290
  }
22173
- var cw = "2147482950", lw = "2147483646", uw = "2147483647";
22174
- function dw(e) {
22291
+ var dw = "2147482950", fw = "2147483646", pw = "2147483647";
22292
+ function mw(e) {
22175
22293
  let { ownerDocument: t, ownerWindow: n, pageTarget: r } = e, i = t.body;
22176
22294
  if (!(i && !(r instanceof n.ShadowRoot) && r.getRootNode() === t)) return e.createInspectorMount();
22177
22295
  df(ff, i);
@@ -22192,17 +22310,17 @@ function dw(e) {
22192
22310
  s.dataset.mesurerDocumentInspectorLayerStyle = "true", s.textContent = `
22193
22311
  [data-mesurer-document-inspector-mount="true"] [data-mesurer-annotation-target-highlight="true"] {
22194
22312
  position: absolute !important;
22195
- z-index: ${cw} !important;
22313
+ z-index: ${dw} !important;
22196
22314
  }
22197
22315
  [data-mesurer-document-inspector-mount="true"] [data-mesurer-annotation-panel="true"] {
22198
22316
  position: absolute !important;
22199
- z-index: ${lw} !important;
22317
+ z-index: ${fw} !important;
22200
22318
  }
22201
22319
  [data-mesurer-document-inspector-mount="true"] [data-mesurer-annotation-marker="true"],
22202
22320
  [data-mesurer-document-inspector-mount="true"] [data-mesurer-annotation-trigger="true"],
22203
22321
  [data-mesurer-document-inspector-mount="true"] [data-mesurer-annotation-composer="true"] {
22204
22322
  position: absolute !important;
22205
- z-index: ${uw} !important;
22323
+ z-index: ${pw} !important;
22206
22324
  }
22207
22325
  `, t.head.append(s), i.append(a);
22208
22326
  let c = !1;
@@ -22213,8 +22331,8 @@ function dw(e) {
22213
22331
  }
22214
22332
  };
22215
22333
  }
22216
- var fw = (e) => `color-mix(in srgb, ${e.color} ${e.opacity * 100}%, transparent)`, pw = (e) => e === "max" ? "end" : e === "center" ? "center" : "start", mw = (e) => {
22217
- let t = e.kind === "columns", n = e.align === "stretch", r = n ? `repeat(${e.count}, minmax(0, 1fr))` : `repeat(${e.count}, ${e.size}px)`, i = pw(e.align);
22334
+ var hw = (e) => `color-mix(in srgb, ${e.color} ${e.opacity * 100}%, transparent)`, gw = (e) => e === "max" ? "end" : e === "center" ? "center" : "start", _w = (e) => {
22335
+ let t = e.kind === "columns", n = e.align === "stretch", r = n ? `repeat(${e.count}, minmax(0, 1fr))` : `repeat(${e.count}, ${e.size}px)`, i = gw(e.align);
22218
22336
  return {
22219
22337
  position: "absolute",
22220
22338
  inset: "0",
@@ -22235,7 +22353,7 @@ var fw = (e) => `color-mix(in srgb, ${e.color} ${e.opacity * 100}%, transparent)
22235
22353
  transform: e.align === "center" ? t ? `translateX(${e.offset}px)` : `translateY(${e.offset}px)` : void 0
22236
22354
  };
22237
22355
  };
22238
- function hw(e) {
22356
+ function vw(e) {
22239
22357
  let t = () => e.guides.filter((e) => e.visible);
22240
22358
  return Y(q, {
22241
22359
  get when() {
@@ -22270,7 +22388,7 @@ function hw(e) {
22270
22388
  "min-height": "0",
22271
22389
  width: "100%",
22272
22390
  height: "100%",
22273
- "background-color": fw(e)
22391
+ "background-color": hw(e)
22274
22392
  }), (e, n) => {
22275
22393
  $(t, "style", e, n);
22276
22394
  }), t;
@@ -22278,7 +22396,7 @@ function hw(e) {
22278
22396
  })), J(() => ({
22279
22397
  e: e.id,
22280
22398
  t: e.kind,
22281
- a: mw(e)
22399
+ a: _w(e)
22282
22400
  }), ({ e, t: n, a: r }, i) => {
22283
22401
  e !== i?.e && $(t, "data-mesurer-layout-guide", e, i?.e), n !== i?.t && $(t, "data-mesurer-layout-guide-kind", n, i?.t), r !== i?.a && $(t, "style", r, i?.a);
22284
22402
  }), t;
@@ -22291,7 +22409,7 @@ function hw(e) {
22291
22409
  return J(() => ({
22292
22410
  e: e.id,
22293
22411
  t: {
22294
- "background-image": `linear-gradient(to right, ${fw(e)} 1px, transparent 1px), linear-gradient(to bottom, ${fw(e)} 1px, transparent 1px)`,
22412
+ "background-image": `linear-gradient(to right, ${hw(e)} 1px, transparent 1px), linear-gradient(to bottom, ${hw(e)} 1px, transparent 1px)`,
22295
22413
  "background-size": `${e.size}px ${e.size}px`
22296
22414
  }
22297
22415
  }), ({ e, t: n }, r) => {
@@ -22303,34 +22421,34 @@ function hw(e) {
22303
22421
  }
22304
22422
  });
22305
22423
  }
22306
- var gw = "#FF0000", _w = .1, vw = /* @__PURE__ */ new Set([
22424
+ var yw = "#FF0000", bw = .1, xw = /* @__PURE__ */ new Set([
22307
22425
  "columns",
22308
22426
  "rows",
22309
22427
  "grid"
22310
- ]), yw = /* @__PURE__ */ new Set([
22428
+ ]), Sw = /* @__PURE__ */ new Set([
22311
22429
  "stretch",
22312
22430
  "min",
22313
22431
  "center",
22314
22432
  "max"
22315
- ]), bw = (e, t, n) => Math.min(n, Math.max(t, e)), xw = (e, t) => e !== void 0 && Number.isFinite(e) ? e : t, Sw = (e = {}) => {
22316
- let t = e.kind && vw.has(e.kind) ? e.kind : "columns", n = e.align && yw.has(e.align) ? e.align : t === "grid" ? "min" : "stretch", r = e.id?.trim(), i = e.color?.trim();
22433
+ ]), Cw = (e, t, n) => Math.min(n, Math.max(t, e)), ww = (e, t) => e !== void 0 && Number.isFinite(e) ? e : t, Tw = (e = {}) => {
22434
+ let t = e.kind && xw.has(e.kind) ? e.kind : "columns", n = e.align && Sw.has(e.align) ? e.align : t === "grid" ? "min" : "stretch", r = e.id?.trim(), i = e.color?.trim();
22317
22435
  return {
22318
22436
  id: r || Zu(),
22319
22437
  kind: t,
22320
22438
  visible: e.visible ?? !0,
22321
22439
  color: i || "#FF0000",
22322
- opacity: bw(xw(e.opacity, _w), 0, 1),
22323
- count: bw(Math.round(xw(e.count, 5)), 1, 24),
22324
- size: bw(xw(e.size, 72), 1, 4096),
22325
- gutter: bw(xw(e.gutter, 20), 0, 800),
22326
- offset: bw(xw(e.offset, 0), 0, 4096),
22440
+ opacity: Cw(ww(e.opacity, bw), 0, 1),
22441
+ count: Cw(Math.round(ww(e.count, 5)), 1, 24),
22442
+ size: Cw(ww(e.size, 72), 1, 4096),
22443
+ gutter: Cw(ww(e.gutter, 20), 0, 800),
22444
+ offset: Cw(ww(e.offset, 0), 0, 4096),
22327
22445
  align: n
22328
22446
  };
22329
- }, Cw = (e) => (e ?? []).map(Sw), ww = (e) => {
22447
+ }, Ew = (e) => (e ?? []).map(Tw), Dw = (e) => {
22330
22448
  if (e.kind === "grid") return `Grid ${Math.round(e.size)}px`;
22331
22449
  let t = e.kind === "columns" ? "columns" : "rows";
22332
22450
  return e.align === "stretch" ? `${e.count} ${t}` : `${e.count} ${t} (${Math.round(e.size)}px)`;
22333
- }, Tw = (e) => (() => {
22451
+ }, Ow = (e) => (() => {
22334
22452
  var t = X("svg", {
22335
22453
  xmlns: "http://www.w3.org/2000/svg",
22336
22454
  viewBox: "0 0 24 24",
@@ -22349,10 +22467,10 @@ var gw = "#FF0000", _w = .1, vw = /* @__PURE__ */ new Set([
22349
22467
  }), ({ e, t: n }, r) => {
22350
22468
  e !== r?.e && $(t, "width", e, r?.e), n !== r?.t && $(t, "height", n, r?.t);
22351
22469
  }), t;
22352
- })(), Ew = (e) => e.kind === "rows" ? Y(Dg, { size: 14 }) : e.kind === "grid" ? Y(Tg, { size: 14 }) : Y(Eg, { size: 14 }), Dw = "msr:grid-cols-[78px_minmax(0,1fr)]", Ow = (e) => (() => {
22470
+ })(), kw = (e) => e.kind === "rows" ? Y(Dg, { size: 14 }) : e.kind === "grid" ? Y(Tg, { size: 14 }) : Y(Eg, { size: 14 }), Aw = "msr:grid-cols-[78px_minmax(0,1fr)]", jw = (e) => (() => {
22353
22471
  var t = X("label", { class: "msr:col-span-2 msr:grid msr:h-8 msr:w-full msr:grid-cols-[78px_minmax(0,1fr)] msr:items-center msr:gap-0 msr:text-[12px] msr:text-ink-700" }), n = X("span");
22354
22472
  return Z(t, n), Q(n, () => e.label), Q(t, () => e.children, null), t;
22355
- })(), kw = (e) => (() => {
22473
+ })(), Mw = (e) => (() => {
22356
22474
  var t = X("span", { class: "msr:relative msr:block msr:w-full" }), n = X("select", {
22357
22475
  class: Hh,
22358
22476
  onPointerDown: (e) => e.stopPropagation(),
@@ -22364,7 +22482,7 @@ var gw = "#FF0000", _w = .1, vw = /* @__PURE__ */ new Set([
22364
22482
  }), ({ e, t }, r) => {
22365
22483
  e !== r?.e && $(n, "aria-label", e, r?.e), t !== r?.t && $(n, "value", t, r?.t);
22366
22484
  }), t;
22367
- })(), Aw = (e) => {
22485
+ })(), Nw = (e) => {
22368
22486
  let [t, n] = K(!1), [r, i] = K(String(e.value)), a = () => e.min ?? 0, o = () => e.max ?? 9999, s = (e) => Math.min(o(), Math.max(a(), e)), c = (t) => {
22369
22487
  let n = Number(t.replace(/[^\d.-]/g, ""));
22370
22488
  if (!Number.isFinite(n)) {
@@ -22405,7 +22523,7 @@ var gw = "#FF0000", _w = .1, vw = /* @__PURE__ */ new Set([
22405
22523
  e !== n?.e && $(a, "aria-label", e, n?.e), t !== n?.t && $(a, "value", t, n?.t);
22406
22524
  }), a;
22407
22525
  } });
22408
- }, jw = (e) => e === "rows" || e === "grid" ? e : "columns", Mw = (e) => e === "min" || e === "center" || e === "max" ? e : "stretch", Nw = (e) => {
22526
+ }, Pw = (e) => e === "rows" || e === "grid" ? e : "columns", Fw = (e) => e === "min" || e === "center" || e === "max" ? e : "stretch", Iw = (e) => {
22409
22527
  let t = mo(() => e.guide.kind === "rows" ? {
22410
22528
  stretch: "Stretch",
22411
22529
  min: "Top",
@@ -22422,13 +22540,13 @@ var gw = "#FF0000", _w = .1, vw = /* @__PURE__ */ new Set([
22422
22540
  "aria-label": "Back to layout guides",
22423
22541
  class: "msr:flex msr:size-6 msr:items-center msr:justify-center msr:rounded-control msr:text-ink-500 msr:outline-none msr:hover:bg-ink-100 msr:hover:text-ink-900"
22424
22542
  });
22425
- return Z(r, i), Z(i, a), Q(i, Y(kw, {
22543
+ return Z(r, i), Z(i, a), Q(i, Y(Mw, {
22426
22544
  label: "Layout guide type",
22427
22545
  get value() {
22428
22546
  return e.guide.kind;
22429
22547
  },
22430
22548
  onChange: (t) => {
22431
- let n = jw(t);
22549
+ let n = Pw(t);
22432
22550
  e.onUpdate({
22433
22551
  kind: n,
22434
22552
  align: n === "grid" ? "min" : e.guide.align === "stretch" || n === e.guide.kind ? e.guide.align : "stretch"
@@ -22450,15 +22568,15 @@ var gw = "#FF0000", _w = .1, vw = /* @__PURE__ */ new Set([
22450
22568
  })()
22451
22569
  ];
22452
22570
  }
22453
- }), a), Q(a, Y(Tw, {})), Q(r, Y(q, {
22571
+ }), a), Q(a, Y(Ow, {})), Q(r, Y(q, {
22454
22572
  get when() {
22455
22573
  return e.guide.kind !== "grid";
22456
22574
  },
22457
22575
  get children() {
22458
- return Y(Ow, {
22576
+ return Y(jw, {
22459
22577
  label: "Count",
22460
22578
  get children() {
22461
- return Y(Aw, {
22579
+ return Y(Nw, {
22462
22580
  label: "Count",
22463
22581
  get value() {
22464
22582
  return e.guide.count;
@@ -22472,14 +22590,14 @@ var gw = "#FF0000", _w = .1, vw = /* @__PURE__ */ new Set([
22472
22590
  }
22473
22591
  }), null), Q(r, Y(Gh, {
22474
22592
  label: "Color",
22475
- columns: Dw,
22593
+ columns: Aw,
22476
22594
  get value() {
22477
22595
  return Rc({
22478
22596
  ...Ic(e.guide.color) ?? Ic("#FF0000"),
22479
22597
  alpha: e.guide.opacity
22480
22598
  });
22481
22599
  },
22482
- fallback: gw,
22600
+ fallback: yw,
22483
22601
  get ownerWindow() {
22484
22602
  return e.ownerWindow;
22485
22603
  },
@@ -22498,15 +22616,15 @@ var gw = "#FF0000", _w = .1, vw = /* @__PURE__ */ new Set([
22498
22616
  return e.guide.kind !== "grid";
22499
22617
  },
22500
22618
  get children() {
22501
- return Y(Ow, {
22619
+ return Y(jw, {
22502
22620
  label: "Type",
22503
22621
  get children() {
22504
- return Y(kw, {
22622
+ return Y(Mw, {
22505
22623
  label: "Alignment",
22506
22624
  get value() {
22507
22625
  return e.guide.align;
22508
22626
  },
22509
- onChange: (t) => e.onUpdate({ align: Mw(t) }),
22627
+ onChange: (t) => e.onUpdate({ align: Fw(t) }),
22510
22628
  get children() {
22511
22629
  return Y(xo, {
22512
22630
  each: [
@@ -22530,12 +22648,12 @@ var gw = "#FF0000", _w = .1, vw = /* @__PURE__ */ new Set([
22530
22648
  return e.guide.kind === "grid" || e.guide.align !== "stretch";
22531
22649
  },
22532
22650
  get children() {
22533
- return Y(Ow, {
22651
+ return Y(jw, {
22534
22652
  get label() {
22535
22653
  return n();
22536
22654
  },
22537
22655
  get children() {
22538
- return Y(Aw, {
22656
+ return Y(Nw, {
22539
22657
  get label() {
22540
22658
  return n();
22541
22659
  },
@@ -22554,10 +22672,10 @@ var gw = "#FF0000", _w = .1, vw = /* @__PURE__ */ new Set([
22554
22672
  return e.guide.kind !== "grid";
22555
22673
  },
22556
22674
  get children() {
22557
- return [Y(Ow, {
22675
+ return [Y(jw, {
22558
22676
  label: "Offset",
22559
22677
  get children() {
22560
- return Y(Aw, {
22678
+ return Y(Nw, {
22561
22679
  label: "Offset",
22562
22680
  get value() {
22563
22681
  return e.guide.offset;
@@ -22567,10 +22685,10 @@ var gw = "#FF0000", _w = .1, vw = /* @__PURE__ */ new Set([
22567
22685
  onChange: (t) => e.onUpdate({ offset: t })
22568
22686
  });
22569
22687
  }
22570
- }), Y(Ow, {
22688
+ }), Y(jw, {
22571
22689
  label: "Gutter",
22572
22690
  get children() {
22573
- return Y(Aw, {
22691
+ return Y(Nw, {
22574
22692
  label: "Gutter",
22575
22693
  get value() {
22576
22694
  return e.guide.gutter;
@@ -22586,7 +22704,7 @@ var gw = "#FF0000", _w = .1, vw = /* @__PURE__ */ new Set([
22586
22704
  $(a, "onClick", e, t);
22587
22705
  }), r;
22588
22706
  };
22589
- function Pw(e) {
22707
+ function Lw(e) {
22590
22708
  let [t, n] = K(null), r = mo(() => e.guides.find((e) => e.id === t()) ?? null);
22591
22709
  var i = X("div", {
22592
22710
  "data-mesurer-layout-guides-panel": "true",
@@ -22635,9 +22753,9 @@ function Pw(e) {
22635
22753
  class: "msr:flex msr:size-6 msr:items-center msr:justify-center msr:rounded-control msr:text-ink-400 msr:outline-none msr:hover:bg-ink-100 msr:hover:text-ink-900",
22636
22754
  onClick: () => e.onRemove(t.id)
22637
22755
  });
22638
- return Z(r, i), Z(r, s), Z(r, c), Z(i, a), Z(i, o), Q(a, Y(Ew, { get kind() {
22756
+ return Z(r, i), Z(r, s), Z(r, c), Z(i, a), Z(i, o), Q(a, Y(kw, { get kind() {
22639
22757
  return t.kind;
22640
- } })), Q(o, () => ww(t)), Q(i, Y(_g, {
22758
+ } })), Q(o, () => Dw(t)), Q(i, Y(_g, {
22641
22759
  size: 8,
22642
22760
  class: "msr:block msr:-rotate-90 msr:text-ink-400"
22643
22761
  }), null), Q(s, (() => {
@@ -22647,10 +22765,10 @@ function Pw(e) {
22647
22765
  size: 10,
22648
22766
  class: "msr:block"
22649
22767
  })), J(() => ({
22650
- e: t.visible ? `Hide ${ww(t)}` : `Show ${ww(t)}`,
22768
+ e: t.visible ? `Hide ${Dw(t)}` : `Show ${Dw(t)}`,
22651
22769
  t: t.visible ? "true" : "false",
22652
22770
  a: `msr:flex msr:size-6 msr:items-center msr:justify-center msr:rounded-control msr:outline-none msr:hover:bg-ink-100 ${t.visible ? "msr:text-ink-700" : "msr:text-ink-400"}`,
22653
- o: `Remove ${ww(t)}`
22771
+ o: `Remove ${Dw(t)}`
22654
22772
  }), ({ e, t, a: n, o: r }, i) => {
22655
22773
  e !== i?.e && $(s, "aria-label", e, i?.e), t !== i?.t && $(s, "aria-pressed", t, i?.t), n !== i?.a && $(s, "class", n, i?.a), r !== i?.o && $(c, "aria-label", r, i?.o);
22656
22774
  }), r;
@@ -22661,7 +22779,7 @@ function Pw(e) {
22661
22779
  $(a, "onClick", e, t);
22662
22780
  }), t;
22663
22781
  },
22664
- children: (t) => Y(Nw, {
22782
+ children: (t) => Y(Iw, {
22665
22783
  get guide() {
22666
22784
  return t();
22667
22785
  },
@@ -22673,56 +22791,56 @@ function Pw(e) {
22673
22791
  })
22674
22792
  })), i;
22675
22793
  }
22676
- var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-guides.pages", Rw = "mesurer.layout-guides.active", zw = "runtime:solid", Bw = "layout-guides.toggle", Vw = "layout-guides.add", Hw = "layout-guides.update", Uw = "layout-guides.remove", Ww = "layout-guides.clear", Gw = 240, Kw = 8, qw = 8, Jw = () => ({ pages: {} }), Yw = (e, t) => e.pages[t] ?? [], Xw = (e) => typeof e == "object" && !!e && !Array.isArray(e), Zw = (e) => typeof e == "string", Qw = (e) => typeof e == "boolean", $w = (e) => typeof e == "number", eT = (e) => e === "columns" || e === "rows" || e === "grid", tT = (e) => e === "stretch" || e === "min" || e === "center" || e === "max", nT = (e) => ({ ...e }), rT = (e) => e.map(nT), iT = (e) => Xw(e) ? e : null, aT = (e) => {
22794
+ var Rw = "mesurer.layout-guides", zw = "layout-guides:v1", Bw = "mesurer.layout-guides.pages", Vw = "mesurer.layout-guides.active", Hw = "runtime:solid", Uw = "layout-guides.toggle", Ww = "layout-guides.add", Gw = "layout-guides.update", Kw = "layout-guides.remove", qw = "layout-guides.clear", Jw = 240, Yw = 8, Xw = 8, Zw = () => ({ pages: {} }), Qw = (e, t) => e.pages[t] ?? [], $w = (e) => typeof e == "object" && !!e && !Array.isArray(e), eT = (e) => typeof e == "string", tT = (e) => typeof e == "boolean", nT = (e) => typeof e == "number", rT = (e) => e === "columns" || e === "rows" || e === "grid", iT = (e) => e === "stretch" || e === "min" || e === "center" || e === "max", aT = (e) => ({ ...e }), oT = (e) => e.map(aT), sT = (e) => $w(e) ? e : null, cT = (e) => {
22677
22795
  if (!e) return {};
22678
22796
  let t = {};
22679
- return Zw(e.id) && (t.id = e.id), eT(e.kind) && (t.kind = e.kind), Qw(e.visible) && (t.visible = e.visible), Zw(e.color) && (t.color = e.color), $w(e.opacity) && (t.opacity = e.opacity), $w(e.count) && (t.count = e.count), $w(e.size) && (t.size = e.size), $w(e.gutter) && (t.gutter = e.gutter), $w(e.offset) && (t.offset = e.offset), tT(e.align) && (t.align = e.align), t;
22680
- }, oT = (e) => {
22797
+ return eT(e.id) && (t.id = e.id), rT(e.kind) && (t.kind = e.kind), tT(e.visible) && (t.visible = e.visible), eT(e.color) && (t.color = e.color), nT(e.opacity) && (t.opacity = e.opacity), nT(e.count) && (t.count = e.count), nT(e.size) && (t.size = e.size), nT(e.gutter) && (t.gutter = e.gutter), nT(e.offset) && (t.offset = e.offset), iT(e.align) && (t.align = e.align), t;
22798
+ }, lT = (e) => {
22681
22799
  let t = {};
22682
22800
  return e.id !== void 0 && (t.id = e.id), e.kind !== void 0 && (t.kind = e.kind), e.visible !== void 0 && (t.visible = e.visible), e.color !== void 0 && (t.color = e.color), e.opacity !== void 0 && (t.opacity = e.opacity), e.count !== void 0 && (t.count = e.count), e.size !== void 0 && (t.size = e.size), e.gutter !== void 0 && (t.gutter = e.gutter), e.offset !== void 0 && (t.offset = e.offset), e.align !== void 0 && (t.align = e.align), t;
22683
- }, sT = {
22801
+ }, uT = {
22684
22802
  viewBox: "0 0 256 256",
22685
22803
  paths: ["M48 48h160v8H48zM48 200h160v8H48zM48 56h8v144h-8zM200 56h8v144h-8z", "M101 56h8v144h-8zM147 56h8v144h-8z"]
22686
- }, cT = () => kc({
22687
- id: Fw,
22804
+ }, dT = () => kc({
22805
+ id: Rw,
22688
22806
  version: "0.1.0",
22689
- requires: [zw],
22690
- provides: [Iw, "tool:layout-guides"],
22807
+ requires: [Hw],
22808
+ provides: [zw, "tool:layout-guides"],
22691
22809
  setup(e) {
22692
- let t = e.service.get(zw);
22810
+ let t = e.service.get(Hw);
22693
22811
  if (!t) throw Error("Layout Guides requires the Solid renderer runtime.");
22694
22812
  let n = t.rendererRoot;
22695
22813
  if (!n) throw Error("Layout Guides requires a mounted renderer root.");
22696
22814
  e.state.register({
22697
- id: Lw,
22698
- initial: Jw(),
22815
+ id: Bw,
22816
+ initial: Zw(),
22699
22817
  history: !0,
22700
22818
  persist: !0
22701
22819
  }), e.state.register({
22702
- id: Rw,
22820
+ id: Vw,
22703
22821
  initial: !1
22704
22822
  });
22705
- let r = Ul(t.ownerWindow), i = !1, [a, o] = K(0), s = /* @__PURE__ */ new Set(), c = 0, l = () => e.state.get("mesurer.layout-guides.pages") ?? Jw(), u = () => e.state.get("mesurer.layout-guides.active") ?? !1, d = () => Cw(Yw(l(), r)), f = () => (a(), u() ? d() : []), p = (t) => {
22706
- e.state.update(Rw, () => t);
22823
+ let r = Ul(t.ownerWindow), i = !1, [a, o] = K(0), s = /* @__PURE__ */ new Set(), c = 0, l = () => e.state.get("mesurer.layout-guides.pages") ?? Zw(), u = () => e.state.get("mesurer.layout-guides.active") ?? !1, d = () => Ew(Qw(l(), r)), f = () => (a(), u() ? d() : []), p = (t) => {
22824
+ e.state.update(Vw, () => t);
22707
22825
  }, m = (t) => {
22708
- e.state.update(Lw, (e) => ({
22826
+ e.state.update(Bw, (e) => ({
22709
22827
  ...e,
22710
22828
  pages: {
22711
22829
  ...e.pages,
22712
- [r]: rT(t(Cw(e.pages[r])))
22830
+ [r]: oT(t(Ew(e.pages[r])))
22713
22831
  }
22714
22832
  }));
22715
22833
  };
22716
- e.command.register(Bw, () => {
22834
+ e.command.register(Uw, () => {
22717
22835
  let e = !u();
22718
- return e && d().length === 0 && m(() => [Sw()]), i = e, p(e), u();
22719
- }), e.command.register(Vw, (e) => {
22720
- let t = Sw(aT(iT(e)));
22836
+ return e && d().length === 0 && m(() => [Tw()]), i = e, p(e), u();
22837
+ }), e.command.register(Ww, (e) => {
22838
+ let t = Tw(cT(sT(e)));
22721
22839
  return m((e) => [...e, t]), { ...t };
22722
- }), e.command.register(Hw, (e) => {
22723
- let t = iT(e), n = t && Zw(t.id) ? t.id : null, r = aT(iT(t?.patch));
22840
+ }), e.command.register(Gw, (e) => {
22841
+ let t = sT(e), n = t && eT(t.id) ? t.id : null, r = cT(sT(t?.patch));
22724
22842
  if (!n) throw Error("layout-guides.update requires a guide id.");
22725
- m((e) => e.map((e) => e.id === n ? Sw({
22843
+ m((e) => e.map((e) => e.id === n ? Tw({
22726
22844
  ...e,
22727
22845
  ...r,
22728
22846
  id: e.id
@@ -22730,30 +22848,30 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
22730
22848
  let i = d().find((e) => e.id === n);
22731
22849
  if (!i) throw Error(`Layout guide not found: ${n}`);
22732
22850
  return { ...i };
22733
- }), e.command.register(Uw, (e) => {
22734
- let t = iT(e), n = t && Zw(t.id) ? t.id : null;
22851
+ }), e.command.register(Kw, (e) => {
22852
+ let t = sT(e), n = t && eT(t.id) ? t.id : null;
22735
22853
  if (!n) throw Error("layout-guides.remove requires a guide id.");
22736
22854
  let r = d().length;
22737
22855
  return m((e) => e.filter((e) => e.id !== n)), d().length !== r;
22738
- }), e.command.register(Ww, () => {
22856
+ }), e.command.register(qw, () => {
22739
22857
  m(() => []);
22740
22858
  });
22741
22859
  let h = async (t, n) => {
22742
- let r = iT(await e.command.execute(t, n));
22860
+ let r = sT(await e.command.execute(t, n));
22743
22861
  if (!r) throw Error(`${t} did not return a layout guide.`);
22744
- return Sw(aT(r));
22862
+ return Tw(cT(r));
22745
22863
  }, g = {
22746
22864
  list: () => d().map((e) => ({ ...e })),
22747
- add: (e = {}) => h(Vw, oT(e)),
22748
- update: (e, t) => h(Hw, {
22865
+ add: (e = {}) => h(Ww, lT(e)),
22866
+ update: (e, t) => h(Gw, {
22749
22867
  id: e,
22750
- patch: oT(t)
22868
+ patch: lT(t)
22751
22869
  }),
22752
22870
  async remove(t) {
22753
- return await e.command.execute(Uw, { id: t }) === !0;
22871
+ return await e.command.execute(Kw, { id: t }) === !0;
22754
22872
  },
22755
22873
  async clear() {
22756
- await e.command.execute(Ww);
22874
+ await e.command.execute(qw);
22757
22875
  },
22758
22876
  subscribe(e) {
22759
22877
  s.add(e);
@@ -22763,27 +22881,27 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
22763
22881
  };
22764
22882
  }
22765
22883
  };
22766
- e.service.provide(Iw, g), e.tool.register({
22884
+ e.service.provide(zw, g), e.tool.register({
22767
22885
  id: "layout-guides",
22768
22886
  label: "Layout guides",
22769
22887
  shortcut: "L",
22770
- command: Bw,
22888
+ command: Uw,
22771
22889
  order: 38,
22772
22890
  toolbarMode: "always",
22773
22891
  compactPinned: !0,
22774
- icon: sT,
22892
+ icon: uT,
22775
22893
  active: u
22776
22894
  });
22777
22895
  let _ = t.ownerDocument.createElement("div");
22778
22896
  _.dataset.mesurerLayoutGuidesRoot = "true", _.dataset.mesurerLayer = "evidence", _.style.position = "absolute", _.style.inset = "0", _.style.pointerEvents = "none", n.prepend(_);
22779
- let v = rc(() => Y(hw, { get guides() {
22897
+ let v = rc(() => Y(vw, { get guides() {
22780
22898
  return f();
22781
22899
  } }), _), y = t.createInspectorMount();
22782
22900
  y.element.dataset.mesurerLayoutGuidesPanelRoot = "true", Object.assign(y.element.style, {
22783
22901
  position: "fixed",
22784
22902
  left: "0",
22785
22903
  top: "0",
22786
- width: `${Gw}px`,
22904
+ width: `${Jw}px`,
22787
22905
  zIndex: "100",
22788
22906
  pointerEvents: "none",
22789
22907
  display: "none"
@@ -22792,13 +22910,13 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
22792
22910
  if (c = 0, !i) return;
22793
22911
  let e = t.portalTarget.querySelector("[data-mesurer-tool-id='layout-guides']");
22794
22912
  if (!e) return;
22795
- let n = e.getBoundingClientRect(), r = Math.min(Math.max(qw, n.right - Gw), Math.max(qw, t.ownerWindow.innerWidth - Gw - qw)), a = t.ownerWindow.innerHeight - n.bottom - Kw - qw, o = Math.min(320, t.ownerWindow.innerHeight - 16), s = a >= Math.min(o, 320) ? n.bottom + Kw : Math.max(qw, n.top - Kw - o);
22913
+ let n = e.getBoundingClientRect(), r = Math.min(Math.max(Xw, n.right - Jw), Math.max(Xw, t.ownerWindow.innerWidth - Jw - Xw)), a = t.ownerWindow.innerHeight - n.bottom - Yw - Xw, o = Math.min(320, t.ownerWindow.innerHeight - 16), s = a >= Math.min(o, 320) ? n.bottom + Yw : Math.max(Xw, n.top - Yw - o);
22796
22914
  y.element.style.left = `${r}px`, y.element.style.top = `${s}px`;
22797
22915
  }, x = () => {
22798
22916
  c ||= t.ownerWindow.requestAnimationFrame(b);
22799
22917
  }, S = () => {
22800
22918
  y.element.style.display = i ? "block" : "none", i && x();
22801
- }, C = rc(() => Y(Pw, {
22919
+ }, C = rc(() => Y(Lw, {
22802
22920
  get guides() {
22803
22921
  return f();
22804
22922
  },
@@ -22833,11 +22951,11 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
22833
22951
  t.ownerDocument.removeEventListener("pointerdown", D, !0), t.ownerDocument.removeEventListener("keydown", O, !0), t.ownerWindow.removeEventListener("resize", x), t.ownerWindow.removeEventListener("pointerup", x, !0), c && t.ownerWindow.cancelAnimationFrame(c), c = 0, s.clear(), T.dispose(), E(), C(), y.dispose(), v(), _.remove();
22834
22952
  });
22835
22953
  }
22836
- }), lT = "mesurer:recording-bridge-ping", uT = "mesurer:recording-bridge-request", dT = "mesurer:recording-bridge-response", fT = "position:fixed;left:0;top:0;width:1px;height:1px;margin:0;padding:0;border:0;overflow:hidden;opacity:0;visibility:hidden;pointer-events:none", pT = .01, mT = (e) => ({
22954
+ }), fT = "mesurer:recording-bridge-ping", pT = "mesurer:recording-bridge-request", mT = "mesurer:recording-bridge-response", hT = "position:fixed;left:0;top:0;width:1px;height:1px;margin:0;padding:0;border:0;overflow:hidden;opacity:0;visibility:hidden;pointer-events:none", gT = .01, _T = (e) => ({
22837
22955
  width: e.innerWidth,
22838
22956
  height: e.innerHeight
22839
- }), hT = (e, t, n, r) => {
22840
- let i = Math.max(1, r.width), a = Math.max(1, r.height), o = t / i, s = n / a, c = Math.abs(o - s) <= pT * Math.max(o, s), l = c ? o : Math.min(o, s), u = c ? 0 : (t - i * l) / 2, d = c ? 0 : (n - a * l) / 2, f = c ? o : l, p = c ? s : l, m = u + e.left * f, h = d + e.top * p, g = u + (e.left + e.width) * f, _ = d + (e.top + e.height) * p, v = Math.max(g - m, 1e-6), y = Math.max(_ - h, 1e-6), b = Math.max(0, Math.min(t, m)), x = Math.max(0, Math.min(n, h)), S = Math.max(0, Math.min(t, g)), C = Math.max(0, Math.min(n, _)), w = Math.max(0, Math.round(b)), T = Math.max(0, Math.round(x)), E = Math.min(t, Math.round(S)), D = Math.min(n, Math.round(C));
22957
+ }), vT = (e, t, n, r) => {
22958
+ let i = Math.max(1, r.width), a = Math.max(1, r.height), o = t / i, s = n / a, c = Math.abs(o - s) <= gT * Math.max(o, s), l = c ? o : Math.min(o, s), u = c ? 0 : (t - i * l) / 2, d = c ? 0 : (n - a * l) / 2, f = c ? o : l, p = c ? s : l, m = u + e.left * f, h = d + e.top * p, g = u + (e.left + e.width) * f, _ = d + (e.top + e.height) * p, v = Math.max(g - m, 1e-6), y = Math.max(_ - h, 1e-6), b = Math.max(0, Math.min(t, m)), x = Math.max(0, Math.min(n, h)), S = Math.max(0, Math.min(t, g)), C = Math.max(0, Math.min(n, _)), w = Math.max(0, Math.round(b)), T = Math.max(0, Math.round(x)), E = Math.min(t, Math.round(S)), D = Math.min(n, Math.round(C));
22841
22959
  return {
22842
22960
  sx: w,
22843
22961
  sy: T,
@@ -22848,15 +22966,15 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
22848
22966
  dw: Math.max(0, S - b) / v,
22849
22967
  dh: Math.max(0, C - x) / y
22850
22968
  };
22851
- }, gT = (e, t) => {
22969
+ }, yT = (e, t) => {
22852
22970
  let n = e.createElement("div");
22853
22971
  return n.dataset.mesurerRecordingCrop = "true", n.setAttribute("aria-hidden", "true"), n.style.position = "fixed", n.style.left = `${t.left}px`, n.style.top = `${t.top}px`, n.style.width = `${t.width}px`, n.style.height = `${t.height}px`, n.style.margin = "0", n.style.padding = "0", n.style.border = "0", n.style.background = "transparent", n.style.opacity = "0", n.style.pointerEvents = "none", e.body.append(n), n;
22854
- }, _T = async (e, t) => {
22972
+ }, bT = async (e, t) => {
22855
22973
  let n = e.cropTo, r = globalThis.CropTarget;
22856
22974
  if (!n || !r) return !1;
22857
22975
  let i = await r.fromElement(t);
22858
22976
  return await n.call(e, i), !0;
22859
- }, vT = (e, t) => new Promise((n) => {
22977
+ }, xT = (e, t) => new Promise((n) => {
22860
22978
  let r = !1, i = () => {
22861
22979
  r || (r = !0, t.clearTimeout(a), n());
22862
22980
  }, a = t.setTimeout(i, 250), o = e;
@@ -22865,20 +22983,20 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
22865
22983
  return;
22866
22984
  }
22867
22985
  t.requestAnimationFrame(i);
22868
- }), yT = (e) => e.location.origin === "null" ? "*" : e.location.origin, bT = (e, t, n = "") => `${e}:${t}:${n}`, xT = (e, t, n) => {
22986
+ }), ST = (e) => e.location.origin === "null" ? "*" : e.location.origin, CT = (e, t, n = "") => `${e}:${t}:${n}`, wT = (e, t, n) => {
22869
22987
  let r = `${t}:${n}:`;
22870
22988
  return e.startsWith(r) ? e.slice(r.length) : null;
22871
- }, ST = (e) => e.crypto?.randomUUID?.() ?? `mesurer-recording-${Date.now()}-${Math.random().toString(36).slice(2)}`, CT = (e) => new Promise((t) => {
22872
- let n = ST(e), r = e.location.origin, i = (o) => {
22873
- o.source === e && o.origin === r && xT(String(o.data ?? ""), "mesurer:recording-bridge-pong", n) !== null && (e.removeEventListener("message", i), e.clearTimeout(a), t(!0));
22989
+ }, TT = (e) => e.crypto?.randomUUID?.() ?? `mesurer-recording-${Date.now()}-${Math.random().toString(36).slice(2)}`, ET = (e) => new Promise((t) => {
22990
+ let n = TT(e), r = e.location.origin, i = (o) => {
22991
+ o.source === e && o.origin === r && wT(String(o.data ?? ""), "mesurer:recording-bridge-pong", n) !== null && (e.removeEventListener("message", i), e.clearTimeout(a), t(!0));
22874
22992
  }, a = e.setTimeout(() => {
22875
22993
  e.removeEventListener("message", i), t(!1);
22876
22994
  }, 80);
22877
- e.addEventListener("message", i), e.postMessage(bT(lT, n), yT(e));
22878
- }), wT = (e) => new Promise((t) => {
22879
- let n = ST(e), r = e.location.origin, i = (o) => {
22995
+ e.addEventListener("message", i), e.postMessage(CT(fT, n), ST(e));
22996
+ }), DT = (e) => new Promise((t) => {
22997
+ let n = TT(e), r = e.location.origin, i = (o) => {
22880
22998
  if (o.source !== e || o.origin !== r) return;
22881
- let s = xT(String(o.data ?? ""), dT, n);
22999
+ let s = wT(String(o.data ?? ""), mT, n);
22882
23000
  if (s !== null) {
22883
23001
  if (e.removeEventListener("message", i), e.clearTimeout(a), !s.startsWith("ok:")) {
22884
23002
  t(null);
@@ -22889,9 +23007,9 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
22889
23007
  }, a = e.setTimeout(() => {
22890
23008
  e.removeEventListener("message", i), t(null);
22891
23009
  }, 1500);
22892
- e.addEventListener("message", i), e.postMessage(bT(uT, n), yT(e));
22893
- }), TT = (e) => e.__MESURER_RECORDING_HOST__?.captureRecordingStream ?? e.__MESURER_HOST__?.captureRecordingStream, ET = async (e, t) => {
22894
- let n = TT(e);
23010
+ e.addEventListener("message", i), e.postMessage(CT(pT, n), ST(e));
23011
+ }), OT = (e) => e.__MESURER_RECORDING_HOST__?.captureRecordingStream ?? e.__MESURER_HOST__?.captureRecordingStream, kT = async (e, t) => {
23012
+ let n = OT(e);
22895
23013
  if (!n) throw Error("Native recording capture is unavailable.");
22896
23014
  let r = (await n())?.streamId?.trim();
22897
23015
  if (!r) throw Error("Native recording capture returned no stream id.");
@@ -22903,9 +23021,9 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
22903
23021
  audio: !1,
22904
23022
  video: i
22905
23023
  });
22906
- }, DT = async (e, t) => {
22907
- if (!e.isSecureContext || !await CT(e)) return null;
22908
- let n = await wT(e);
23024
+ }, AT = async (e, t) => {
23025
+ if (!e.isSecureContext || !await ET(e)) return null;
23026
+ let n = await DT(e);
22909
23027
  if (!n) return null;
22910
23028
  let r = { mandatory: {
22911
23029
  chromeMediaSource: "tab",
@@ -22915,7 +23033,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
22915
23033
  audio: !1,
22916
23034
  video: r
22917
23035
  });
22918
- }, OT = async (e, t) => {
23036
+ }, jT = async (e, t) => {
22919
23037
  let n = e.getVideoTracks()[0];
22920
23038
  if (!n?.applyConstraints) return e;
22921
23039
  try {
@@ -22925,13 +23043,13 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
22925
23043
  } });
22926
23044
  } catch {}
22927
23045
  return e;
22928
- }, kT = async (e, t) => {
23046
+ }, MT = async (e, t) => {
22929
23047
  let n = e.navigator.mediaDevices;
22930
23048
  if (!n) throw Error("Screen recording is unavailable in this browser.");
22931
- if (TT(e)) return OT(await ET(e, n), t);
23049
+ if (OT(e)) return jT(await kT(e, n), t);
22932
23050
  try {
22933
- let r = await DT(e, n);
22934
- if (r) return OT(r, t);
23051
+ let r = await AT(e, n);
23052
+ if (r) return jT(r, t);
22935
23053
  } catch {}
22936
23054
  if (!n.getDisplayMedia) throw Error("Screen recording is unavailable in this browser.");
22937
23055
  let r = {
@@ -22947,33 +23065,33 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
22947
23065
  selfBrowserSurface: "include"
22948
23066
  };
22949
23067
  try {
22950
- return OT(await n.getDisplayMedia(i), t);
23068
+ return jT(await n.getDisplayMedia(i), t);
22951
23069
  } catch (e) {
22952
23070
  if (e instanceof DOMException && e.name === "AbortError") throw e;
22953
- return OT(await n.getDisplayMedia({
23071
+ return jT(await n.getDisplayMedia({
22954
23072
  audio: !1,
22955
23073
  video: { frameRate: r }
22956
23074
  }), t);
22957
23075
  }
22958
- }, AT = async (e, t, n, r = 60) => {
22959
- let i = await kT(t, r), a = i.getVideoTracks()[0];
23076
+ }, NT = async (e, t, n, r = 60) => {
23077
+ let i = await MT(t, r), a = i.getVideoTracks()[0];
22960
23078
  if (!a) throw i.getTracks().forEach((e) => e.stop()), Error("No video track was selected.");
22961
23079
  if (a.getSettings().displaySurface && a.getSettings().displaySurface !== "browser") throw i.getTracks().forEach((e) => e.stop()), Error("Select the current browser tab to record this region.");
22962
23080
  let o = e.createElement("video");
22963
- o.autoplay = !0, o.muted = !0, o.playsInline = !0, o.srcObject = i, o.setAttribute("playsinline", ""), o.setAttribute("aria-hidden", "true"), o.style.cssText = fT, e.body.append(o);
23081
+ o.autoplay = !0, o.muted = !0, o.playsInline = !0, o.srcObject = i, o.setAttribute("playsinline", ""), o.setAttribute("aria-hidden", "true"), o.style.cssText = hT, e.body.append(o);
22964
23082
  try {
22965
23083
  await o.play(), (o.videoWidth <= 0 || o.videoHeight <= 0) && await new Promise((e, t) => {
22966
23084
  o.addEventListener("loadeddata", () => e(), { once: !0 }), o.addEventListener("error", () => t(/* @__PURE__ */ Error("Could not read the selected video track.")), { once: !0 });
22967
23085
  });
22968
- let r = gT(e, n), s = !1;
23086
+ let r = yT(e, n), s = !1;
22969
23087
  try {
22970
- s = await _T(a, r);
23088
+ s = await bT(a, r);
22971
23089
  } catch {
22972
23090
  s = !1;
22973
23091
  }
22974
- s || r.remove(), await vT(o, t);
22975
- let c = t.devicePixelRatio || 1, l = hT(n, o.videoWidth, o.videoHeight, mT(t)), u = e.createElement("canvas");
22976
- u.width = s ? Math.max(2, Math.round(n.width * c)) : l.sw, u.height = s ? Math.max(2, Math.round(n.height * c)) : l.sh, u.setAttribute("aria-hidden", "true"), u.style.cssText = fT, e.body.append(u);
23092
+ s || r.remove(), await xT(o, t);
23093
+ let c = t.devicePixelRatio || 1, l = vT(n, o.videoWidth, o.videoHeight, _T(t)), u = e.createElement("canvas");
23094
+ u.width = s ? Math.max(2, Math.round(n.width * c)) : l.sw, u.height = s ? Math.max(2, Math.round(n.height * c)) : l.sh, u.setAttribute("aria-hidden", "true"), u.style.cssText = hT, e.body.append(u);
22977
23095
  let d = u.getContext("2d", { alpha: !1 });
22978
23096
  if (!d) throw u.remove(), Error("Screen recording requires a 2D canvas.");
22979
23097
  let f = {
@@ -22985,32 +23103,32 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
22985
23103
  cropTarget: s ? r : null,
22986
23104
  regionLocked: s
22987
23105
  };
22988
- return jT(f, n, mT(t)), f;
23106
+ return PT(f, n, _T(t)), f;
22989
23107
  } catch (e) {
22990
23108
  throw o.pause(), o.srcObject = null, o.remove(), i.getTracks().forEach((e) => e.stop()), e;
22991
23109
  }
22992
- }, jT = (e, t, n) => {
23110
+ }, PT = (e, t, n) => {
22993
23111
  let { source: r, canvas: i, context: a, regionLocked: o } = e;
22994
23112
  if (r.videoWidth <= 0 || r.videoHeight <= 0) return;
22995
23113
  if (o) {
22996
23114
  a.drawImage(r, 0, 0, i.width, i.height);
22997
23115
  return;
22998
23116
  }
22999
- let s = hT(t, r.videoWidth, r.videoHeight, n), c = s.dx <= .001 && s.dy <= .001 && s.dw >= .999 && s.dh >= .999, l = c ? 0 : s.dx * i.width, u = c ? 0 : s.dy * i.height, d = c ? i.width : s.dw * i.width, f = c ? i.height : s.dh * i.height;
23117
+ let s = vT(t, r.videoWidth, r.videoHeight, n), c = s.dx <= .001 && s.dy <= .001 && s.dw >= .999 && s.dh >= .999, l = c ? 0 : s.dx * i.width, u = c ? 0 : s.dy * i.height, d = c ? i.width : s.dw * i.width, f = c ? i.height : s.dh * i.height;
23000
23118
  c || (a.fillStyle = "#000", a.fillRect(0, 0, i.width, i.height)), !(d < 1 || f < 1 || s.dw <= 0 || s.dh <= 0) && a.drawImage(r, s.sx, s.sy, s.sw, s.sh, l, u, d, f);
23001
- }, MT = (e) => {
23119
+ }, FT = (e) => {
23002
23120
  e.source.pause(), e.source.srcObject = null, e.stream.getTracks().forEach((e) => e.stop()), e.cropTarget?.remove(), e.canvas.remove(), e.source.remove();
23003
- }, NT = {
23121
+ }, IT = {
23004
23122
  webm: "video/webm",
23005
23123
  mp4: "video/mp4"
23006
- }, PT = ["vp9", "vp8"], FT = ["avc"], IT = (e) => new c(e), LT = (e, t) => Number.isFinite(e) && e > 0 ? e : t, RT = (e, t, n) => {
23007
- let r = Math.max(2, Math.round(LT(e, 2))), i = Math.max(2, Math.round(LT(t, 2)));
23124
+ }, LT = ["vp9", "vp8"], RT = ["avc"], zT = (e) => new c(e), BT = (e, t) => Number.isFinite(e) && e > 0 ? e : t, VT = (e, t, n) => {
23125
+ let r = Math.max(2, Math.round(BT(e, 2))), i = Math.max(2, Math.round(BT(t, 2)));
23008
23126
  return n === "mp4" && (r % 2 != 0 && (r += 1), i % 2 != 0 && (i += 1)), {
23009
23127
  width: r,
23010
23128
  height: i
23011
23129
  };
23012
- }, zT = (e, t = {}) => {
23013
- let n = Math.max(.001, LT(e.duration, .001)), r = Math.min(n, Math.max(0, Number.isFinite(t.startTime) ? t.startTime ?? 0 : 0)), i = Number.isFinite(t.endTime) ? t.endTime ?? n : n, a = Math.min(n, Math.max(r + .001, i));
23130
+ }, HT = (e, t = {}) => {
23131
+ let n = Math.max(.001, BT(e.duration, .001)), r = Math.min(n, Math.max(0, Number.isFinite(t.startTime) ? t.startTime ?? 0 : 0)), i = Number.isFinite(t.endTime) ? t.endTime ?? n : n, a = Math.min(n, Math.max(r + .001, i));
23014
23132
  return {
23015
23133
  format: t.format ?? "webm",
23016
23134
  startTime: r,
@@ -23018,33 +23136,33 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23018
23136
  scale: t.scale ?? 1,
23019
23137
  quality: t.quality ?? "medium"
23020
23138
  };
23021
- }, BT = (e) => e === "webm" ? PT : FT, VT = async (e, t, n, r, i = "medium") => {
23022
- let a = RT(t, n, e), o = IT(i);
23023
- for (let t of BT(e)) if (await u(t, {
23139
+ }, UT = (e) => e === "webm" ? LT : RT, WT = async (e, t, n, r, i = "medium") => {
23140
+ let a = VT(t, n, e), o = zT(i);
23141
+ for (let t of UT(e)) if (await u(t, {
23024
23142
  width: a.width,
23025
23143
  height: a.height,
23026
23144
  frameRate: r,
23027
23145
  quality: o
23028
23146
  })) return t;
23029
23147
  return null;
23030
- }, HT = async (e, t, n = 30) => {
23148
+ }, GT = async (e, t, n = 30) => {
23031
23149
  let r = [];
23032
- return await VT("webm", e, t, n) && r.push("webm"), await VT("mp4", e, t, n) && r.push("mp4"), r;
23033
- }, UT = (e) => e === "webm" ? new l() : new o(), WT = async (e, t = {}) => {
23034
- let i = t.format ?? "webm", a = Math.max(1, Math.min(120, Math.round(t.frameRate ?? 30))), o = t.quality ?? "medium", c = e.width, l = e.height, u = await VT(i, c, l, a, o);
23150
+ return await WT("webm", e, t, n) && r.push("webm"), await WT("mp4", e, t, n) && r.push("mp4"), r;
23151
+ }, KT = (e) => e === "webm" ? new l() : new o(), qT = async (e, t = {}) => {
23152
+ let i = t.format ?? "webm", a = Math.max(1, Math.min(120, Math.round(t.frameRate ?? 30))), o = t.quality ?? "medium", c = e.width, l = e.height, u = await WT(i, c, l, a, o);
23035
23153
  if (!u) throw Error(`MediaBunny cannot encode ${i.toUpperCase()} at ${c}×${l} in this runtime.`);
23036
23154
  let d = new n(), f = new s({
23037
- format: UT(i),
23155
+ format: KT(i),
23038
23156
  target: d
23039
23157
  }), p = new r(e, {
23040
23158
  codec: u,
23041
- quality: IT(o)
23159
+ quality: zT(o)
23042
23160
  });
23043
23161
  f.addVideoTrack(p, { frameRate: a }), await f.start();
23044
23162
  let m = !1, h = -1;
23045
23163
  return {
23046
23164
  format: i,
23047
- mimeType: NT[i],
23165
+ mimeType: IT[i],
23048
23166
  codec: u,
23049
23167
  async addFrame(e, t = 1 / a) {
23050
23168
  if (m) throw Error("Recording session is already closed.");
@@ -23056,7 +23174,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23056
23174
  finalize: async () => {
23057
23175
  if (m) throw Error("Recording session is already closed.");
23058
23176
  if (m = !0, p.close(), await f.finalize(), !d.buffer || d.buffer.byteLength === 0) throw Error("MediaBunny produced an empty recording.");
23059
- return new Blob([d.buffer], { type: NT[i] });
23177
+ return new Blob([d.buffer], { type: IT[i] });
23060
23178
  },
23061
23179
  async cancel() {
23062
23180
  if (!m) {
@@ -23067,7 +23185,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23067
23185
  }
23068
23186
  }
23069
23187
  };
23070
- }, GT = async (n) => {
23188
+ }, JT = async (n) => {
23071
23189
  let r = new a({
23072
23190
  source: new t(n),
23073
23191
  formats: e
@@ -23089,14 +23207,14 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23089
23207
  } finally {
23090
23208
  r.dispose();
23091
23209
  }
23092
- }, KT = async (r, o = {}) => {
23093
- let c = await GT(r), l = zT(c, o), u = RT(c.width * l.scale, c.height * l.scale, l.format), d = await VT(l.format, u.width, u.height, 30, l.quality);
23210
+ }, YT = async (r, o = {}) => {
23211
+ let c = await JT(r), l = HT(c, o), u = VT(c.width * l.scale, c.height * l.scale, l.format), d = await WT(l.format, u.width, u.height, 30, l.quality);
23094
23212
  if (!d) throw Error(`MediaBunny cannot export ${l.format.toUpperCase()} in this runtime.`);
23095
23213
  let f = new a({
23096
23214
  source: new t(r),
23097
23215
  formats: e
23098
23216
  }), p = new n(), m = new s({
23099
- format: UT(l.format),
23217
+ format: KT(l.format),
23100
23218
  target: p
23101
23219
  });
23102
23220
  try {
@@ -23112,14 +23230,14 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23112
23230
  width: u.width,
23113
23231
  height: u.height,
23114
23232
  fit: "fill",
23115
- quality: IT(l.quality),
23233
+ quality: zT(l.quality),
23116
23234
  forceTranscode: !0
23117
23235
  },
23118
23236
  audio: { discard: !0 }
23119
23237
  });
23120
23238
  if (!e.isValid) throw Error(`MediaBunny cannot convert this recording to ${l.format.toUpperCase()}.`);
23121
23239
  if (await e.execute(), !p.buffer || p.buffer.byteLength === 0) throw Error("MediaBunny produced an empty export.");
23122
- let t = new Blob([p.buffer], { type: NT[l.format] }), n = await GT(t);
23240
+ let t = new Blob([p.buffer], { type: IT[l.format] }), n = await JT(t);
23123
23241
  return {
23124
23242
  blob: t,
23125
23243
  format: l.format,
@@ -23130,11 +23248,11 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23130
23248
  } finally {
23131
23249
  f.dispose();
23132
23250
  }
23133
- }, qT = (e, t = /* @__PURE__ */ new Date()) => `mesurer-recording-${t.toISOString().replace(/[:.]/g, "-")}.${e}`, JT = 10, YT = (e, t) => {
23251
+ }, XT = (e, t = /* @__PURE__ */ new Date()) => `mesurer-recording-${t.toISOString().replace(/[:.]/g, "-")}.${e}`, ZT = 10, QT = (e, t) => {
23134
23252
  for (let [n, r] of Object.entries(t)) e.style.setProperty(n, r);
23135
- }, XT = (e, t, n) => {
23253
+ }, $T = (e, t, n) => {
23136
23254
  let r = e.createElement("button");
23137
- return r.type = "button", r.setAttribute("aria-label", t), r.title = t, r.textContent = n, YT(r, {
23255
+ return r.type = "button", r.setAttribute("aria-label", t), r.title = t, r.textContent = n, QT(r, {
23138
23256
  display: "inline-flex",
23139
23257
  width: "20px",
23140
23258
  height: "20px",
@@ -23150,9 +23268,9 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23150
23268
  "line-height": "1",
23151
23269
  cursor: "pointer"
23152
23270
  }), r;
23153
- }, ZT = (e, t) => {
23271
+ }, eE = (e, t) => {
23154
23272
  let n = e.createElement("button");
23155
- n.type = "button", n.setAttribute("role", "menuitemradio"), YT(n, {
23273
+ n.type = "button", n.setAttribute("role", "menuitemradio"), QT(n, {
23156
23274
  display: "grid",
23157
23275
  width: "100%",
23158
23276
  height: "28px",
@@ -23177,9 +23295,9 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23177
23295
  check: r,
23178
23296
  text: i
23179
23297
  };
23180
- }, QT = ({ ownerDocument: e, root: t }) => {
23298
+ }, tE = ({ ownerDocument: e, root: t }) => {
23181
23299
  let n = e.createElement("section");
23182
- n.dataset.mesurerRecordingPreview = "true", n.dataset.mesurerInspectorUi = "true", n.setAttribute("role", "dialog"), n.setAttribute("aria-label", "Screen recording editor"), n.tabIndex = 0, YT(n, {
23300
+ n.dataset.mesurerRecordingPreview = "true", n.dataset.mesurerInspectorUi = "true", n.setAttribute("role", "dialog"), n.setAttribute("aria-label", "Screen recording editor"), n.tabIndex = 0, QT(n, {
23183
23301
  position: "fixed",
23184
23302
  display: "none",
23185
23303
  width: "352px",
@@ -23200,7 +23318,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23200
23318
  transition: "width 200ms ease"
23201
23319
  }), t.append(n);
23202
23320
  let r = e.createElement("div");
23203
- YT(r, {
23321
+ QT(r, {
23204
23322
  position: "relative",
23205
23323
  display: "flex",
23206
23324
  width: "100%",
@@ -23215,7 +23333,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23215
23333
  cursor: "default"
23216
23334
  }), n.append(r);
23217
23335
  let i = e.createElement("video");
23218
- i.muted = !0, i.playsInline = !0, i.preload = "auto", YT(i, {
23336
+ i.muted = !0, i.playsInline = !0, i.preload = "auto", QT(i, {
23219
23337
  display: "block",
23220
23338
  width: "100%",
23221
23339
  height: "100%",
@@ -23225,7 +23343,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23225
23343
  transition: "max-height 200ms ease"
23226
23344
  }), r.append(i);
23227
23345
  let a = e.createElement("div");
23228
- a.dataset.mesurerRecordingExporting = "true", a.textContent = "Exporting…", YT(a, {
23346
+ a.dataset.mesurerRecordingExporting = "true", a.textContent = "Exporting…", QT(a, {
23229
23347
  position: "absolute",
23230
23348
  inset: "0",
23231
23349
  display: "none",
@@ -23237,8 +23355,8 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23237
23355
  "font-size": "11px",
23238
23356
  "pointer-events": "none"
23239
23357
  }), r.append(a);
23240
- let o = XT(e, "Close", "×");
23241
- o.dataset.mesurerRecordingDiscard = "true", YT(o, {
23358
+ let o = $T(e, "Close", "×");
23359
+ o.dataset.mesurerRecordingDiscard = "true", QT(o, {
23242
23360
  position: "absolute",
23243
23361
  top: "6px",
23244
23362
  right: "6px",
@@ -23260,17 +23378,17 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23260
23378
  o.style.opacity = "0", o.style.pointerEvents = "none";
23261
23379
  });
23262
23380
  let s = e.createElement("div");
23263
- YT(s, {
23381
+ QT(s, {
23264
23382
  display: "flex",
23265
23383
  height: "28px",
23266
23384
  "align-items": "center",
23267
23385
  gap: "8px",
23268
23386
  "margin-top": "8px"
23269
23387
  }), n.append(s);
23270
- let c = XT(e, "Play", "▶");
23388
+ let c = $T(e, "Play", "▶");
23271
23389
  c.dataset.mesurerRecordingPlay = "true", s.append(c);
23272
23390
  let l = e.createElement("span");
23273
- l.dataset.mesurerRecordingCurrentTime = "true", l.textContent = "0:00.00", YT(l, {
23391
+ l.dataset.mesurerRecordingCurrentTime = "true", l.textContent = "0:00.00", QT(l, {
23274
23392
  display: "flex",
23275
23393
  width: "8ch",
23276
23394
  "min-width": "8ch",
@@ -23284,7 +23402,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23284
23402
  "white-space": "nowrap"
23285
23403
  }), s.append(l);
23286
23404
  let u = e.createElement("div");
23287
- u.dataset.mesurerRecordingTimeline = "true", YT(u, {
23405
+ u.dataset.mesurerRecordingTimeline = "true", QT(u, {
23288
23406
  position: "relative",
23289
23407
  height: "28px",
23290
23408
  "min-width": "0",
@@ -23293,15 +23411,15 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23293
23411
  "user-select": "none"
23294
23412
  }), s.append(u);
23295
23413
  let d = e.createElement("div");
23296
- d.dataset.mesurerRecordingTimelineTrack = "true", YT(d, {
23414
+ d.dataset.mesurerRecordingTimelineTrack = "true", QT(d, {
23297
23415
  position: "absolute",
23298
- left: `${JT}px`,
23299
- right: `${JT}px`,
23416
+ left: `${ZT}px`,
23417
+ right: `${ZT}px`,
23300
23418
  top: "0",
23301
23419
  bottom: "0"
23302
23420
  }), u.append(d);
23303
23421
  let f = e.createElement("div");
23304
- f.dataset.mesurerRecordingTimelineRail = "true", YT(f, {
23422
+ f.dataset.mesurerRecordingTimelineRail = "true", QT(f, {
23305
23423
  position: "absolute",
23306
23424
  left: "0",
23307
23425
  right: "0",
@@ -23313,7 +23431,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23313
23431
  "pointer-events": "none"
23314
23432
  }), d.append(f);
23315
23433
  let p = e.createElement("div");
23316
- p.dataset.mesurerRecordingTimelineClip = "true", YT(p, {
23434
+ p.dataset.mesurerRecordingTimelineClip = "true", QT(p, {
23317
23435
  position: "absolute",
23318
23436
  top: "21px",
23319
23437
  height: "3px",
@@ -23323,7 +23441,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23323
23441
  "pointer-events": "none"
23324
23442
  }), d.append(p);
23325
23443
  let m = e.createElement("div");
23326
- YT(m, {
23444
+ QT(m, {
23327
23445
  position: "absolute",
23328
23446
  display: "none",
23329
23447
  top: "21px",
@@ -23336,7 +23454,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23336
23454
  "pointer-events": "none"
23337
23455
  }), d.append(m);
23338
23456
  let h = e.createElement("div");
23339
- h.dataset.mesurerRecordingPlayhead = "true", YT(h, {
23457
+ h.dataset.mesurerRecordingPlayhead = "true", QT(h, {
23340
23458
  position: "absolute",
23341
23459
  top: "21px",
23342
23460
  left: "0",
@@ -23351,7 +23469,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23351
23469
  }), d.append(h);
23352
23470
  let g = (t, n) => {
23353
23471
  let r = e.createElement("button");
23354
- r.type = "button", r.dataset.mesurerRecordingTrimHandle = t, r.setAttribute("role", "slider"), r.setAttribute("aria-label", n), r.setAttribute("aria-valuemin", "0"), YT(r, {
23472
+ r.type = "button", r.dataset.mesurerRecordingTrimHandle = t, r.setAttribute("role", "slider"), r.setAttribute("aria-label", n), r.setAttribute("aria-valuemin", "0"), QT(r, {
23355
23473
  position: "absolute",
23356
23474
  top: "0",
23357
23475
  display: "flex",
@@ -23374,7 +23492,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23374
23492
  let a = e.createElementNS("http://www.w3.org/2000/svg", "path");
23375
23493
  a.setAttribute("d", t === "start" ? "M3.5 2.5L8.5 7L3.5 11.5" : "M8.5 2.5L3.5 7L8.5 11.5"), a.setAttribute("fill", "none"), a.setAttribute("stroke", "currentColor"), a.setAttribute("stroke-width", "2"), a.setAttribute("stroke-linecap", "round"), a.setAttribute("stroke-linejoin", "round"), i.append(a), r.append(i);
23376
23494
  let o = e.createElement("span");
23377
- return o.setAttribute("aria-hidden", "true"), YT(o, {
23495
+ return o.setAttribute("aria-hidden", "true"), QT(o, {
23378
23496
  position: "absolute",
23379
23497
  left: "50%",
23380
23498
  top: "15px",
@@ -23385,7 +23503,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23385
23503
  "pointer-events": "none"
23386
23504
  }), r.append(o), d.append(r), r;
23387
23505
  }, _ = g("start", "Trim start"), v = g("end", "Trim end"), y = e.createElement("span");
23388
- y.dataset.mesurerRecordingDuration = "true", YT(y, {
23506
+ y.dataset.mesurerRecordingDuration = "true", QT(y, {
23389
23507
  display: "flex",
23390
23508
  width: "8ch",
23391
23509
  "min-width": "8ch",
@@ -23400,20 +23518,20 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23400
23518
  "white-space": "nowrap"
23401
23519
  }), s.append(y);
23402
23520
  let b = e.createElement("div");
23403
- YT(b, {
23521
+ QT(b, {
23404
23522
  position: "relative",
23405
23523
  display: "flex",
23406
23524
  height: "20px",
23407
23525
  "align-items": "center"
23408
23526
  }), s.append(b);
23409
- let x = XT(e, "Export options", "1×");
23410
- x.dataset.mesurerRecordingExportOptions = "true", x.setAttribute("aria-haspopup", "menu"), x.setAttribute("aria-expanded", "false"), YT(x, {
23527
+ let x = $T(e, "Export options", "1×");
23528
+ x.dataset.mesurerRecordingExportOptions = "true", x.setAttribute("aria-haspopup", "menu"), x.setAttribute("aria-expanded", "false"), QT(x, {
23411
23529
  width: "28px",
23412
23530
  "font-family": "ui-monospace, SFMono-Regular, Menlo, monospace",
23413
23531
  "font-size": "10px"
23414
23532
  }), b.append(x);
23415
23533
  let S = e.createElement("div");
23416
- S.dataset.mesurerRecordingExportMenu = "true", S.setAttribute("role", "menu"), YT(S, {
23534
+ S.dataset.mesurerRecordingExportMenu = "true", S.setAttribute("role", "menu"), QT(S, {
23417
23535
  position: "absolute",
23418
23536
  display: "none",
23419
23537
  right: "0",
@@ -23429,7 +23547,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23429
23547
  "pointer-events": "auto"
23430
23548
  }), b.append(S);
23431
23549
  let C = e.createElement("p");
23432
- C.textContent = "Format", YT(C, {
23550
+ C.textContent = "Format", QT(C, {
23433
23551
  margin: "0",
23434
23552
  padding: "4px 8px",
23435
23553
  color: "var(--msr-color-ink-500, #64748b)",
@@ -23439,7 +23557,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23439
23557
  let w = e.createElement("div");
23440
23558
  S.append(w);
23441
23559
  let T = e.createElement("p");
23442
- T.textContent = "Size", YT(T, {
23560
+ T.textContent = "Size", QT(T, {
23443
23561
  margin: "0",
23444
23562
  padding: "6px 8px 4px",
23445
23563
  color: "var(--msr-color-ink-500, #64748b)",
@@ -23453,17 +23571,17 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23453
23571
  2,
23454
23572
  3
23455
23573
  ].map((t) => {
23456
- let n = ZT(e, `${t}×`);
23574
+ let n = eE(e, `${t}×`);
23457
23575
  return n.button.dataset.mesurerRecordingScale = String(t), E.append(n.button), {
23458
23576
  scale: t,
23459
23577
  ...n
23460
23578
  };
23461
- }), O = XT(e, "Download", "↓");
23579
+ }), O = $T(e, "Download", "↓");
23462
23580
  O.dataset.mesurerRecordingExport = "true", s.append(O);
23463
- let k = XT(e, "Grow preview", "↗");
23581
+ let k = $T(e, "Grow preview", "↗");
23464
23582
  k.dataset.mesurerRecordingExpand = "true", s.append(k);
23465
23583
  let A = e.createElement("p");
23466
- return A.dataset.mesurerRecordingPreviewStatus = "true", A.setAttribute("role", "status"), YT(A, {
23584
+ return A.dataset.mesurerRecordingPreviewStatus = "true", A.setAttribute("role", "status"), QT(A, {
23467
23585
  display: "none",
23468
23586
  margin: "8px 0 0",
23469
23587
  color: "var(--msr-color-ink-500, #64748b)",
@@ -23494,14 +23612,14 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23494
23612
  expand: k,
23495
23613
  status: A
23496
23614
  };
23497
- }, $T = 8, eE = 8, tE = .05, nE = 200, rE = (e) => {
23615
+ }, nE = 8, rE = 8, iE = .05, aE = 200, oE = (e) => {
23498
23616
  let t = Number.isFinite(e) ? Math.max(0, e) : 0, n = Math.floor(t / 60);
23499
23617
  return `${n}:${(t - n * 60).toFixed(2).padStart(5, "0")}`;
23500
- }, iE = (e, t, n, r) => {
23618
+ }, sE = (e, t, n, r) => {
23501
23619
  let i = globalThis.URL.createObjectURL(e), a = n.createElement("a");
23502
23620
  a.href = i, a.download = t, a.rel = "noopener", n.documentElement.append(a), a.click(), a.remove(), r.setTimeout(() => globalThis.URL.revokeObjectURL(i), 1e3);
23503
- }, aE = ({ ownerDocument: e, ownerWindow: t, root: n, formats: r, onDiscard: i, onExport: a }) => {
23504
- let { panel: o, previewShell: s, video: c, exportingOverlay: l, close: u, play: d, currentTime: f, timeline: p, track: m, clip: h, hoverMarker: g, playhead: _, trimStart: v, trimEnd: y, durationLabel: b, exportAnchor: x, exportOptions: S, exportMenu: C, formatRows: w, scaleRows: T, download: E, expand: D, status: O } = QT({
23621
+ }, cE = ({ ownerDocument: e, ownerWindow: t, root: n, formats: r, onDiscard: i, onExport: a }) => {
23622
+ let { panel: o, previewShell: s, video: c, exportingOverlay: l, close: u, play: d, currentTime: f, timeline: p, track: m, clip: h, hoverMarker: g, playhead: _, trimStart: v, trimEnd: y, durationLabel: b, exportAnchor: x, exportOptions: S, exportMenu: C, formatRows: w, scaleRows: T, download: E, expand: D, status: O } = tE({
23505
23623
  ownerDocument: e,
23506
23624
  root: n
23507
23625
  }), k = null, A = null, j = !1, M = !1, N = 0, P = ["webm"], F = "webm", I = 1, L = 0, R = 0, z = null, B = null, V = null, ee = (e) => {
@@ -23515,15 +23633,15 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23515
23633
  return t <= 0 || n.width <= 0 ? 0 : Math.min(t, Math.max(0, (e - n.left) / n.width * t));
23516
23634
  }, W = () => {
23517
23635
  let e = k?.duration ?? 0, t = Math.min(e, Math.max(0, c.currentTime || 0)), n = ee(L) * 100, r = ee(R) * 100;
23518
- v.style.left = `${n}%`, y.style.left = `${r}%`, h.style.left = `${n}%`, h.style.width = `${Math.max(0, r - n)}%`, _.style.left = `${ee(t) * 100}%`, v.setAttribute("aria-valuemax", String(Math.max(0, R - tE))), v.setAttribute("aria-valuenow", String(L)), v.setAttribute("aria-valuetext", rE(L)), y.setAttribute("aria-valuemin", String(Math.min(e, L + tE))), y.setAttribute("aria-valuemax", String(e)), y.setAttribute("aria-valuenow", String(R)), y.setAttribute("aria-valuetext", rE(R)), f.textContent = rE(t), b.textContent = rE(e);
23636
+ v.style.left = `${n}%`, y.style.left = `${r}%`, h.style.left = `${n}%`, h.style.width = `${Math.max(0, r - n)}%`, _.style.left = `${ee(t) * 100}%`, v.setAttribute("aria-valuemax", String(Math.max(0, R - iE))), v.setAttribute("aria-valuenow", String(L)), v.setAttribute("aria-valuetext", oE(L)), y.setAttribute("aria-valuemin", String(Math.min(e, L + iE))), y.setAttribute("aria-valuemax", String(e)), y.setAttribute("aria-valuenow", String(R)), y.setAttribute("aria-valuetext", oE(R)), f.textContent = oE(t), b.textContent = oE(e);
23519
23637
  }, te = (e, t = !0) => {
23520
23638
  if (!k) return;
23521
23639
  let n = Math.min(R, Math.max(L, e));
23522
23640
  t && !c.paused && c.pause(), c.currentTime = n, W();
23523
23641
  }, ne = (e, t = !1) => {
23524
- k && (L = Math.min(Math.max(0, e), Math.max(0, R - tE)), (t || c.currentTime < L) && te(L), W());
23642
+ k && (L = Math.min(Math.max(0, e), Math.max(0, R - iE)), (t || c.currentTime < L) && te(L), W());
23525
23643
  }, re = (e, t = !1) => {
23526
- k && (R = Math.max(Math.min(k.duration, e), Math.min(k.duration, L + tE)), t ? te(R) : c.currentTime > R && te(L), W());
23644
+ k && (R = Math.max(Math.min(k.duration, e), Math.min(k.duration, L + iE)), t ? te(R) : c.currentTime > R && te(L), W());
23527
23645
  }, ie = () => {
23528
23646
  S.textContent = `${I}×`;
23529
23647
  for (let e of T) {
@@ -23533,14 +23651,14 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23533
23651
  }, G = () => {
23534
23652
  w.replaceChildren();
23535
23653
  for (let t of P) {
23536
- let n = ZT(e, t === "mp4" ? "MP4" : "WebM"), r = t === F;
23654
+ let n = eE(e, t === "mp4" ? "MP4" : "WebM"), r = t === F;
23537
23655
  n.button.dataset.mesurerRecordingFormat = t, n.button.setAttribute("aria-checked", r ? "true" : "false"), n.check.style.opacity = r ? "1" : "0", n.button.addEventListener("click", () => {
23538
23656
  F = t, G();
23539
23657
  }), w.append(n.button);
23540
23658
  }
23541
23659
  }, ae = () => {
23542
23660
  if (C.style.display === "none") return;
23543
- let e = x.getBoundingClientRect(), n = Math.max(1, C.offsetHeight), r = e.top - $T, i = t.innerHeight - e.bottom - $T;
23661
+ let e = x.getBoundingClientRect(), n = Math.max(1, C.offsetHeight), r = e.top - nE, i = t.innerHeight - e.bottom - nE;
23544
23662
  r >= n || r >= i ? (C.style.top = "auto", C.style.bottom = "24px") : (C.style.top = "24px", C.style.bottom = "auto");
23545
23663
  }, oe = (e) => {
23546
23664
  C.style.display = e ? "block" : "none", S.setAttribute("aria-expanded", e ? "true" : "false"), e && ae();
@@ -23558,8 +23676,8 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23558
23676
  ]) t.toggleAttribute("disabled", e);
23559
23677
  }, ce = () => n.closest("[data-mesurer-root='true']")?.querySelector("[data-mesurer-tool-id='recording']") ?? e.querySelector("[data-mesurer-tool-id='recording']"), le = () => {
23560
23678
  if (o.style.display === "none") return;
23561
- let e = Math.min(j ? 576 : 352, Math.max(1, t.innerWidth - 16)), n = Math.max(180, o.offsetHeight), r = ce()?.getBoundingClientRect(), i = r ? r.left + r.width / 2 : t.innerWidth - $T - e / 2, a = $T + e / 2, s = Math.max(a, t.innerWidth - $T - e / 2), c = Math.min(Math.max(a, i), s), l = r ? r.bottom + eE : $T;
23562
- l + n > t.innerHeight - $T && (l = r ? r.top - n - eE : t.innerHeight - n - $T), o.style.left = `${c}px`, o.style.top = `${Math.max($T, l)}px`, C.style.display !== "none" && ae();
23679
+ let e = Math.min(j ? 576 : 352, Math.max(1, t.innerWidth - 16)), n = Math.max(180, o.offsetHeight), r = ce()?.getBoundingClientRect(), i = r ? r.left + r.width / 2 : t.innerWidth - nE - e / 2, a = nE + e / 2, s = Math.max(a, t.innerWidth - nE - e / 2), c = Math.min(Math.max(a, i), s), l = r ? r.bottom + rE : nE;
23680
+ l + n > t.innerHeight - nE && (l = r ? r.top - n - rE : t.innerHeight - n - nE), o.style.left = `${c}px`, o.style.top = `${Math.max(nE, l)}px`, C.style.display !== "none" && ae();
23563
23681
  }, ue = () => {
23564
23682
  c.pause(), c.removeAttribute("src"), c.load(), A &&= (globalThis.URL.revokeObjectURL(A), null);
23565
23683
  }, de = () => {
@@ -23575,7 +23693,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23575
23693
  transform: "scale(0.08)",
23576
23694
  opacity: 0
23577
23695
  }], {
23578
- duration: nE,
23696
+ duration: aE,
23579
23697
  easing: "ease",
23580
23698
  fill: "forwards"
23581
23699
  });
@@ -23650,7 +23768,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23650
23768
  endTime: i,
23651
23769
  scale: I
23652
23770
  }).then((r) => {
23653
- n === N && iE(r.blob, r.filename, e, t);
23771
+ n === N && sE(r.blob, r.filename, e, t);
23654
23772
  }).catch((e) => {
23655
23773
  n === N && (O.style.display = "block", O.style.color = "var(--msr-danger-text, #dc2626)", O.textContent = e instanceof Error ? e.message : "Could not export the recording.");
23656
23774
  }).finally(() => {
@@ -23672,7 +23790,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23672
23790
  show(e) {
23673
23791
  N += 1, V &&= (V.cancel(), null), o.style.pointerEvents = "auto", o.style.opacity = "1", o.style.transform = "translateX(-50%)", o.style.removeProperty("transform-origin"), o.style.removeProperty("will-change"), ue(), k = e, j = !1, I = 1, F = "webm", P = ["webm"], L = 0, R = e.duration, z = null, B = null;
23674
23792
  let n = globalThis.URL.createObjectURL(e.blob);
23675
- A = n, c.src = n, c.currentTime = 0, s.style.aspectRatio = e.width > 0 && e.height > 0 ? `${e.width} / ${e.height}` : "16 / 9", o.style.width = "352px", s.style.maxHeight = "144px", c.style.maxHeight = "144px", D.textContent = "↗", D.setAttribute("aria-label", "Grow preview"), D.title = "Grow preview", f.textContent = "0:00.00", b.textContent = rE(e.duration), O.style.display = "none", O.style.color = "var(--msr-color-ink-500, #64748b)", oe(!1), G(), ie(), W(), se(!1), o.style.display = "block", le(), o.focus({ preventScroll: !0 });
23793
+ A = n, c.src = n, c.currentTime = 0, s.style.aspectRatio = e.width > 0 && e.height > 0 ? `${e.width} / ${e.height}` : "16 / 9", o.style.width = "352px", s.style.maxHeight = "144px", c.style.maxHeight = "144px", D.textContent = "↗", D.setAttribute("aria-label", "Grow preview"), D.title = "Grow preview", f.textContent = "0:00.00", b.textContent = oE(e.duration), O.style.display = "none", O.style.color = "var(--msr-color-ink-500, #64748b)", oe(!1), G(), ie(), W(), se(!1), o.style.display = "block", le(), o.focus({ preventScroll: !0 });
23676
23794
  let i = N;
23677
23795
  r(e).then((e) => {
23678
23796
  i !== N || !k || (P = e, F = e.includes(F) ? F : e[0] ?? "webm", G(), E.disabled = e.length === 0, e.length === 0 && (O.style.display = "block", O.style.color = "var(--msr-danger-text, #dc2626)", O.textContent = "No MediaBunny video encoder is available in this runtime."));
@@ -23685,11 +23803,11 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23685
23803
  de(), t.removeEventListener("resize", be), t.removeEventListener("pointermove", _e, !0), t.removeEventListener("pointerup", ve, !0), t.removeEventListener("pointercancel", ve, !0), e.removeEventListener("pointerdown", ye, !0), o.remove();
23686
23804
  }
23687
23805
  };
23688
- }, oE = 3e3, sE = (e, t) => {
23806
+ }, lE = 3e3, uE = (e, t) => {
23689
23807
  for (let [n, r] of Object.entries(t)) e.style.setProperty(n, r);
23690
- }, cE = ({ ownerDocument: e, ownerWindow: t, root: n, statusRoot: r, rendererRoot: i, isSelecting: a, isRecording: o, onRectChange: s, onConfirm: c, onCancel: l, onStop: u, setRecordingInteractionActive: d }) => {
23808
+ }, dE = ({ ownerDocument: e, ownerWindow: t, root: n, statusRoot: r, rendererRoot: i, isSelecting: a, isRecording: o, onRectChange: s, onConfirm: c, onCancel: l, onStop: u, setRecordingInteractionActive: d }) => {
23691
23809
  let f = e.createElement("div");
23692
- f.dataset.mesurerRecordingSelect = "true", f.dataset.mesurerInspectorUi = "true", f.setAttribute("role", "application"), f.setAttribute("aria-label", "Recording selection"), sE(f, {
23810
+ f.dataset.mesurerRecordingSelect = "true", f.dataset.mesurerInspectorUi = "true", f.setAttribute("role", "application"), f.setAttribute("aria-label", "Recording selection"), uE(f, {
23693
23811
  position: "fixed",
23694
23812
  inset: "0",
23695
23813
  display: "none",
@@ -23701,13 +23819,13 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23701
23819
  }), n.append(f);
23702
23820
  let p = Array.from({ length: 4 }, () => {
23703
23821
  let t = e.createElement("div");
23704
- return t.dataset.mesurerRecordingShade = "true", sE(t, {
23822
+ return t.dataset.mesurerRecordingShade = "true", uE(t, {
23705
23823
  position: "fixed",
23706
23824
  background: "rgb(0 0 0 / 40%)",
23707
23825
  "pointer-events": "none"
23708
23826
  }), f.append(t), t;
23709
23827
  }), m = e.createElement("div");
23710
- m.dataset.mesurerRecordingMask = "true", sE(m, {
23828
+ m.dataset.mesurerRecordingMask = "true", uE(m, {
23711
23829
  position: "fixed",
23712
23830
  display: "none",
23713
23831
  background: "transparent",
@@ -23717,7 +23835,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23717
23835
  "pointer-events": "none"
23718
23836
  }), f.append(m);
23719
23837
  let h = e.createElement("div");
23720
- h.dataset.mesurerRecordingSelection = "true", sE(h, {
23838
+ h.dataset.mesurerRecordingSelection = "true", uE(h, {
23721
23839
  position: "fixed",
23722
23840
  display: "none",
23723
23841
  border: "1px solid var(--msr-accent, #0d99ff)",
@@ -23725,7 +23843,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23725
23843
  "pointer-events": "none"
23726
23844
  }), f.append(h);
23727
23845
  let g = e.createElement("div");
23728
- sE(g, {
23846
+ uE(g, {
23729
23847
  position: "fixed",
23730
23848
  display: "none",
23731
23849
  transform: "translateX(-50%)",
@@ -23738,7 +23856,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23738
23856
  "pointer-events": "none"
23739
23857
  }), f.append(g);
23740
23858
  let _ = e.createElement("div");
23741
- _.textContent = "Drag a region to record · Esc to cancel", sE(_, {
23859
+ _.textContent = "Drag a region to record · Esc to cancel", uE(_, {
23742
23860
  position: "fixed",
23743
23861
  left: "50%",
23744
23862
  bottom: "16px",
@@ -23751,7 +23869,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23751
23869
  "pointer-events": "none"
23752
23870
  }), f.append(_);
23753
23871
  let v = e.createElement("div");
23754
- v.dataset.mesurerRecordingRegion = "true", v.dataset.mesurerInspectorUi = "true", v.setAttribute("role", "dialog"), v.setAttribute("aria-label", "Recording region"), sE(v, {
23872
+ v.dataset.mesurerRecordingRegion = "true", v.dataset.mesurerInspectorUi = "true", v.setAttribute("role", "dialog"), v.setAttribute("aria-label", "Recording region"), uE(v, {
23755
23873
  position: "fixed",
23756
23874
  display: "none",
23757
23875
  width: "220px",
@@ -23769,7 +23887,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23769
23887
  }), f.append(v);
23770
23888
  let y = (t) => {
23771
23889
  let n = e.createElement("label");
23772
- sE(n, {
23890
+ uE(n, {
23773
23891
  display: "grid",
23774
23892
  "grid-template-columns": "44px minmax(0,1fr)",
23775
23893
  "align-items": "center",
@@ -23778,7 +23896,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23778
23896
  let r = e.createElement("span");
23779
23897
  r.textContent = t, r.style.color = "var(--msr-color-ink-500, #64748b)", n.append(r);
23780
23898
  let i = e.createElement("div");
23781
- return sE(i, {
23899
+ return uE(i, {
23782
23900
  display: "flex",
23783
23901
  "align-items": "center",
23784
23902
  gap: "4px",
@@ -23786,7 +23904,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23786
23904
  }), n.append(i), v.append(n), i;
23787
23905
  }, b = (t) => {
23788
23906
  let n = e.createElement("input");
23789
- return n.type = "number", n.setAttribute("aria-label", t), n.step = "1", sE(n, {
23907
+ return n.type = "number", n.setAttribute("aria-label", t), n.step = "1", uE(n, {
23790
23908
  width: "0",
23791
23909
  "min-width": "0",
23792
23910
  flex: "1 1 0",
@@ -23813,7 +23931,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23813
23931
  let k = e.createElement("span");
23814
23932
  k.textContent = "px", k.style.color = "var(--msr-color-ink-500, #64748b)", E.append(k);
23815
23933
  let A = e.createElement("button");
23816
- A.type = "button", A.dataset.mesurerRecordingStart = "true", A.textContent = "● Start recording", sE(A, {
23934
+ A.type = "button", A.dataset.mesurerRecordingStart = "true", A.textContent = "● Start recording", uE(A, {
23817
23935
  width: "100%",
23818
23936
  height: "28px",
23819
23937
  "margin-top": "8px",
@@ -23827,7 +23945,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23827
23945
  cursor: "pointer"
23828
23946
  }), v.append(A);
23829
23947
  let j = e.createElement("div");
23830
- j.dataset.mesurerRecordingGrid = "true", sE(j, {
23948
+ j.dataset.mesurerRecordingGrid = "true", uE(j, {
23831
23949
  position: "absolute",
23832
23950
  inset: "0",
23833
23951
  display: "none",
@@ -23835,7 +23953,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23835
23953
  }), h.append(j);
23836
23954
  let M = (t) => {
23837
23955
  let n = e.createElement("div");
23838
- sE(n, {
23956
+ uE(n, {
23839
23957
  position: "absolute",
23840
23958
  opacity: "0.3",
23841
23959
  ...t
@@ -23897,7 +24015,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23897
24015
  }
23898
24016
  }).map(([t, n]) => {
23899
24017
  let r = e.createElement("button");
23900
- return r.type = "button", r.dataset.mesurerRecordingResize = t, r.setAttribute("aria-label", `Resize ${t}`), sE(r, {
24018
+ return r.type = "button", r.dataset.mesurerRecordingResize = t, r.setAttribute("aria-label", `Resize ${t}`), uE(r, {
23901
24019
  position: "absolute",
23902
24020
  display: "none",
23903
24021
  left: n.left,
@@ -23914,7 +24032,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23914
24032
  "pointer-events": "auto"
23915
24033
  }), h.append(r), r;
23916
24034
  }), P = e.createElement("section");
23917
- P.dataset.mesurerRecordingStatus = "true", P.dataset.mesurerInspectorUi = "true", P.setAttribute("aria-label", "Screen recording"), sE(P, {
24035
+ P.dataset.mesurerRecordingStatus = "true", P.dataset.mesurerInspectorUi = "true", P.setAttribute("aria-label", "Screen recording"), uE(P, {
23918
24036
  position: "fixed",
23919
24037
  display: "none",
23920
24038
  height: "34px",
@@ -23931,7 +24049,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23931
24049
  "pointer-events": "auto"
23932
24050
  });
23933
24051
  let F = e.createElement("span");
23934
- F.setAttribute("aria-hidden", "true"), sE(F, {
24052
+ F.setAttribute("aria-hidden", "true"), uE(F, {
23935
24053
  width: "6px",
23936
24054
  height: "6px",
23937
24055
  "border-radius": "999px",
@@ -23939,14 +24057,14 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23939
24057
  "flex-shrink": "0"
23940
24058
  }), P.append(F);
23941
24059
  let I = e.createElement("span");
23942
- I.dataset.mesurerRecordingTime = "true", I.textContent = "00:00", sE(I, {
24060
+ I.dataset.mesurerRecordingTime = "true", I.textContent = "00:00", uE(I, {
23943
24061
  color: "var(--msr-content, #18181b)",
23944
24062
  "font-family": "ui-monospace, SFMono-Regular, Menlo, monospace",
23945
24063
  "font-size": "11px",
23946
24064
  "font-variant-numeric": "tabular-nums"
23947
24065
  }), P.append(I);
23948
24066
  let L = e.createElement("button");
23949
- L.type = "button", L.dataset.mesurerRecordingStop = "true", L.textContent = "Stop", L.setAttribute("aria-label", "Stop recording"), sE(L, {
24067
+ L.type = "button", L.dataset.mesurerRecordingStop = "true", L.textContent = "Stop", L.setAttribute("aria-label", "Stop recording"), uE(L, {
23950
24068
  height: "24px",
23951
24069
  padding: "0 8px",
23952
24070
  border: "0",
@@ -23959,7 +24077,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
23959
24077
  cursor: "pointer"
23960
24078
  }), P.append(L), r.append(P);
23961
24079
  let R = e.createElement("div");
23962
- R.dataset.mesurerRecordingError = "true", R.dataset.mesurerInspectorUi = "true", R.setAttribute("role", "status"), sE(R, {
24080
+ R.dataset.mesurerRecordingError = "true", R.dataset.mesurerInspectorUi = "true", R.setAttribute("role", "status"), uE(R, {
23963
24081
  position: "fixed",
23964
24082
  display: "none",
23965
24083
  left: "8px",
@@ -24080,7 +24198,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24080
24198
  let n = e instanceof Error ? e.message : "Could not record this region.";
24081
24199
  R.textContent = n, R.style.display = "block", H = t.setTimeout(() => {
24082
24200
  H = 0, R.style.display = "none";
24083
- }, oE);
24201
+ }, lE);
24084
24202
  }, ue = (e, t, n) => {
24085
24203
  let r = B;
24086
24204
  !V || !r || e.button !== 0 || (e.preventDefault(), e.stopPropagation(), ee = {
@@ -24210,7 +24328,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24210
24328
  f.removeEventListener("pointerdown", de), f.removeEventListener("pointermove", fe), f.removeEventListener("pointerup", pe), f.removeEventListener("pointercancel", me), t.removeEventListener("keydown", he, !0), H && t.clearTimeout(H), oe();
24211
24329
  }
24212
24330
  };
24213
- }, lE = (e) => {
24331
+ }, fE = (e) => {
24214
24332
  let t = null, n = () => {
24215
24333
  let e = t;
24216
24334
  e && (t = null, e.pointerEvents || e.pointerEventsPriority ? e.element.style.setProperty("pointer-events", e.pointerEvents, e.pointerEventsPriority) : e.element.style.removeProperty("pointer-events"), e.cursor || e.cursorPriority ? e.element.style.setProperty("cursor", e.cursor, e.cursorPriority) : e.element.style.removeProperty("cursor"));
@@ -24229,19 +24347,19 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24229
24347
  cursorPriority: i.style.getPropertyPriority("cursor")
24230
24348
  }), i.style.setProperty("pointer-events", "none", "important"), i.style.setProperty("cursor", "default", "important"));
24231
24349
  } };
24232
- }, uE = "mesurer.recording", dE = "recording:v1", fE = "mesurer.recording.settings", pE = "runtime:solid", mE = "recording.toggle", hE = "recording.stop", gE = "recording.discard", _E = "recording.export", vE = 60, yE = 60, bE = {
24350
+ }, pE = "mesurer.recording", mE = "recording:v1", hE = "mesurer.recording.settings", gE = "runtime:solid", _E = "recording.toggle", vE = "recording.stop", yE = "recording.discard", bE = "recording.export", xE = 60, SE = 60, CE = {
24233
24351
  viewBox: "0 0 24 24",
24234
24352
  paths: ["M7 5.75A3.25 3.25 0 0 0 3.75 9v6A3.25 3.25 0 0 0 7 18.25h7A3.25 3.25 0 0 0 17.25 15v-1.03l2.13 1.42a.75.75 0 0 0 1.17-.624V9.234a.75.75 0 0 0-1.17-.624l-2.13 1.42V9A3.25 3.25 0 0 0 14 5.75H7Zm10.25 6.082 1.8-1.2v2.736l-1.8-1.2v-.336Z", "M10.5 9.25a2.75 2.75 0 1 0 0 5.5 2.75 2.75 0 0 0 0-5.5Z"]
24235
- }, xE = (e) => e ? { ...e } : null, SE = (e) => ({
24353
+ }, wE = (e) => e ? { ...e } : null, TE = (e) => ({
24236
24354
  ...e,
24237
- rect: xE(e.rect)
24238
- }), CE = (e, t) => {
24355
+ rect: wE(e.rect)
24356
+ }), EE = (e, t) => {
24239
24357
  for (let [n, r] of Object.entries(t)) e.style.setProperty(n, r);
24240
- }, wE = (e) => e != null && !Array.isArray(e) && typeof e == "object", TE = (e) => typeof e == "number" && Number.isFinite(e), EE = (e) => {
24241
- if (!wE(e)) return {};
24358
+ }, DE = (e) => e != null && !Array.isArray(e) && typeof e == "object", OE = (e) => typeof e == "number" && Number.isFinite(e), kE = (e) => {
24359
+ if (!DE(e)) return {};
24242
24360
  let t = {};
24243
- return (e.format === "webm" || e.format === "mp4") && (t.format = e.format), TE(e.startTime) && (t.startTime = e.startTime), TE(e.endTime) && (t.endTime = e.endTime), (e.scale === 1 || e.scale === 2 || e.scale === 3) && (t.scale = e.scale), t;
24244
- }, DE = (e) => ({
24361
+ return (e.format === "webm" || e.format === "mp4") && (t.format = e.format), OE(e.startTime) && (t.startTime = e.startTime), OE(e.endTime) && (t.endTime = e.endTime), (e.scale === 1 || e.scale === 2 || e.scale === 3) && (t.scale = e.scale), t;
24362
+ }, AE = (e) => ({
24245
24363
  status: e.status,
24246
24364
  elapsed: e.elapsed,
24247
24365
  rect: e.rect ? { ...e.rect } : null,
@@ -24249,62 +24367,62 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24249
24367
  width: e.width,
24250
24368
  height: e.height,
24251
24369
  error: e.error
24252
- }), OE = (e) => ({
24370
+ }), jE = (e) => ({
24253
24371
  filename: e.filename,
24254
24372
  format: e.format,
24255
24373
  duration: e.duration,
24256
24374
  width: e.width,
24257
24375
  height: e.height,
24258
24376
  bytes: e.blob.size
24259
- }), kE = (e) => ({
24377
+ }), ME = (e) => ({
24260
24378
  format: e.format,
24261
24379
  duration: e.duration,
24262
24380
  width: e.width,
24263
24381
  height: e.height,
24264
24382
  bytes: e.blob.size,
24265
24383
  createdAt: e.createdAt
24266
- }), AE = (e, t, n) => {
24384
+ }), NE = (e, t, n) => {
24267
24385
  let r = globalThis.URL.createObjectURL(e.blob), i = t.createElement("a");
24268
24386
  i.href = r, i.download = e.filename, i.rel = "noopener", t.documentElement.append(i), i.click(), i.remove(), n.setTimeout(() => globalThis.URL.revokeObjectURL(r), 1e3);
24269
- }, jE = (e = {}) => kc({
24270
- id: uE,
24387
+ }, PE = (e = {}) => kc({
24388
+ id: pE,
24271
24389
  version: "0.1.0",
24272
- requires: [pE],
24273
- provides: ["tool:recording", dE],
24390
+ requires: [gE],
24391
+ provides: ["tool:recording", mE],
24274
24392
  setup(t) {
24275
- let n = t.service.get(pE);
24393
+ let n = t.service.get(gE);
24276
24394
  if (!n) throw Error("Recording plugin requires the Solid renderer runtime.");
24277
- let { ownerDocument: r, ownerWindow: i } = n, a = n.createInspectorMount(), o = a.element, s = n.createInspectorMount(), c = s.element, l = n.rendererRoot ?? n.portalTarget.querySelector("[data-mesurer-root='true']"), u = lE(l);
24278
- o.dataset.mesurerRecording = "true", c.dataset.mesurerRecordingStatusRoot = "true", CE(o, {
24395
+ let { ownerDocument: r, ownerWindow: i } = n, a = n.createInspectorMount(), o = a.element, s = n.createInspectorMount(), c = s.element, l = n.rendererRoot ?? n.portalTarget.querySelector("[data-mesurer-root='true']"), u = fE(l);
24396
+ o.dataset.mesurerRecording = "true", c.dataset.mesurerRecordingStatusRoot = "true", EE(o, {
24279
24397
  position: "fixed",
24280
24398
  inset: "0",
24281
24399
  "z-index": "86",
24282
24400
  "pointer-events": "none",
24283
24401
  "font-family": "ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif"
24284
- }), CE(c, {
24402
+ }), EE(c, {
24285
24403
  position: "fixed",
24286
24404
  inset: "0",
24287
24405
  "z-index": "96",
24288
24406
  "pointer-events": "none",
24289
24407
  "font-family": "ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif"
24290
24408
  });
24291
- let d = Math.max(1, Math.min(600, e.maxDurationSeconds ?? yE)), f = e.quality ?? "medium";
24409
+ let d = Math.max(1, Math.min(600, e.maxDurationSeconds ?? SE)), f = e.quality ?? "medium";
24292
24410
  t.state.register({
24293
- id: fE,
24411
+ id: hE,
24294
24412
  initial: {
24295
24413
  toolEnabled: e.toolEnabled ?? !0,
24296
- frameRate: e.frameRate ?? vE
24414
+ frameRate: e.frameRate ?? xE
24297
24415
  },
24298
24416
  persist: !0
24299
24417
  });
24300
24418
  let p = () => {
24301
- let e = t.state.get(fE);
24419
+ let e = t.state.get(hE);
24302
24420
  return {
24303
24421
  toolEnabled: e?.toolEnabled ?? !0,
24304
24422
  frameRate: e?.frameRate === 120 ? 120 : 60
24305
24423
  };
24306
24424
  }, m = (e) => {
24307
- t.state.update(fE, (t) => {
24425
+ t.state.update(hE, (t) => {
24308
24426
  let n = { ...t };
24309
24427
  return e.toolEnabled !== void 0 && (n.toolEnabled = e.toolEnabled), (e.frameRate === 60 || e.frameRate === 120) && (n.frameRate = e.frameRate), n;
24310
24428
  });
@@ -24317,13 +24435,13 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24317
24435
  height: null,
24318
24436
  error: null
24319
24437
  }, g = /* @__PURE__ */ new Set(), _ = null, v = null, y = null, b = null, x, S = null, C = 0, w = 0, T = 0, E = 0, D = -1, O = !1, k = null, A = () => {
24320
- let e = SE(h);
24438
+ let e = TE(h);
24321
24439
  for (let t of g) t(e);
24322
24440
  }, j = (e) => {
24323
24441
  h = {
24324
24442
  ...h,
24325
24443
  ...e,
24326
- rect: e.rect === void 0 ? h.rect : xE(e.rect)
24444
+ rect: e.rect === void 0 ? h.rect : wE(e.rect)
24327
24445
  }, A();
24328
24446
  }, M = () => h.status === "selecting" || h.status === "recording" || h.status === "exporting", N = () => {
24329
24447
  if (S) return;
@@ -24346,7 +24464,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24346
24464
  let n = y;
24347
24465
  y = null, e && await n?.cancel();
24348
24466
  let r = v;
24349
- v = null, r && MT(r), x.hideRecordingMask(), x.hideRecordingStatus();
24467
+ v = null, r && FT(r), x.hideRecordingMask(), x.hideRecordingStatus();
24350
24468
  }, I = () => {
24351
24469
  _ = null, z.dismiss(), j({
24352
24470
  status: "idle",
@@ -24359,7 +24477,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24359
24477
  }), t.hook.emit("recording:discard", {});
24360
24478
  }, L = async () => {
24361
24479
  let e = _;
24362
- return HT(e?.width ?? Math.max(2, Math.round(i.innerWidth)), e?.height ?? Math.max(2, Math.round(i.innerHeight)), p().frameRate);
24480
+ return GT(e?.width ?? Math.max(2, Math.round(i.innerWidth)), e?.height ?? Math.max(2, Math.round(i.innerHeight)), p().frameRate);
24363
24481
  }, R = async (e = {}) => {
24364
24482
  let n = _;
24365
24483
  if (!n) throw Error("No recording is ready to export.");
@@ -24369,9 +24487,9 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24369
24487
  error: null
24370
24488
  });
24371
24489
  try {
24372
- let r = await KT(n.blob, e), i = {
24490
+ let r = await YT(n.blob, e), i = {
24373
24491
  ...r,
24374
- filename: qT(r.format)
24492
+ filename: XT(r.format)
24375
24493
  };
24376
24494
  return j({
24377
24495
  status: "ready",
@@ -24393,7 +24511,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24393
24511
  error: e instanceof Error ? e.message : "Could not export the recording."
24394
24512
  }), e;
24395
24513
  }
24396
- }, z = aE({
24514
+ }, z = cE({
24397
24515
  ownerDocument: r,
24398
24516
  ownerWindow: i,
24399
24517
  root: o,
@@ -24403,15 +24521,15 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24403
24521
  }), B = async () => {
24404
24522
  if (k) return k;
24405
24523
  if (h.status !== "recording" || !y || !v) throw Error("No recording is active.");
24406
- let e = T, n = y, r = v, a = xE(h.rect);
24524
+ let e = T, n = y, r = v, a = wE(h.rect);
24407
24525
  if (!a) throw Error("Recording region is unavailable.");
24408
24526
  return k = (async () => {
24409
24527
  C && i.cancelAnimationFrame(C), C = 0, w && i.clearTimeout(w), w = 0;
24410
24528
  let s = b;
24411
24529
  b = null, s && await s;
24412
24530
  let c = await n.finalize();
24413
- if (y = null, v = null, MT(r), T !== e || O) throw Error("Recording was cancelled.");
24414
- let l = await GT(c), u = {
24531
+ if (y = null, v = null, FT(r), T !== e || O) throw Error("Recording was cancelled.");
24532
+ let l = await JT(c), u = {
24415
24533
  blob: c,
24416
24534
  format: "webm",
24417
24535
  duration: l.duration,
@@ -24451,12 +24569,12 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24451
24569
  let s = Math.max(0, (r - E) / 1e3);
24452
24570
  j({ elapsed: s }), x.setRecordingTime(`${String(Math.floor(s / 60)).padStart(2, "0")}:${String(Math.floor(s % 60)).padStart(2, "0")}`);
24453
24571
  let c = s;
24454
- !b && c - D >= a * .8 && (jT(e, h.rect ?? {
24572
+ !b && c - D >= a * .8 && (PT(e, h.rect ?? {
24455
24573
  left: 0,
24456
24574
  top: 0,
24457
24575
  width: i.innerWidth,
24458
24576
  height: i.innerHeight
24459
- }, mT(i)), D = c, b = t.addFrame(c, a).catch((e) => {
24577
+ }, _T(i)), D = c, b = t.addFrame(c, a).catch((e) => {
24460
24578
  throw T === n && !O && F(!0).then(() => {
24461
24579
  P();
24462
24580
  let t = e instanceof Error ? e.message : "MediaBunny could not encode the recording.";
@@ -24482,21 +24600,21 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24482
24600
  error: null
24483
24601
  }), x.setRecordingTime("00:00"), x.placeRecordingStatus(e);
24484
24602
  try {
24485
- let s = await AT(r, i, e, a);
24603
+ let s = await NT(r, i, e, a);
24486
24604
  if (O || T !== n) {
24487
- MT(s);
24605
+ FT(s);
24488
24606
  return;
24489
24607
  }
24490
- let c = await WT(s.canvas, {
24608
+ let c = await qT(s.canvas, {
24491
24609
  format: "webm",
24492
24610
  frameRate: a,
24493
24611
  quality: f
24494
24612
  });
24495
24613
  if (O || T !== n) {
24496
- await c.cancel(), MT(s);
24614
+ await c.cancel(), FT(s);
24497
24615
  return;
24498
24616
  }
24499
- if (v = s, y = c, E = i.performance.now(), D = 0, jT(s, e, mT(i)), await c.addFrame(0, 1 / a), O || T !== n) {
24617
+ if (v = s, y = c, E = i.performance.now(), D = 0, PT(s, e, _T(i)), await c.addFrame(0, 1 / a), O || T !== n) {
24500
24618
  await F(!0);
24501
24619
  return;
24502
24620
  }
@@ -24557,7 +24675,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24557
24675
  error: null
24558
24676
  });
24559
24677
  };
24560
- x = cE({
24678
+ x = dE({
24561
24679
  ownerDocument: r,
24562
24680
  ownerWindow: i,
24563
24681
  root: o,
@@ -24574,7 +24692,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24574
24692
  setRecordingInteractionActive: u.setActive
24575
24693
  });
24576
24694
  let te = {
24577
- snapshot: () => SE(h),
24695
+ snapshot: () => TE(h),
24578
24696
  subscribe(e) {
24579
24697
  return g.add(e), () => g.delete(e);
24580
24698
  },
@@ -24592,10 +24710,10 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24592
24710
  label: "Record",
24593
24711
  shortcut: "Shift+R",
24594
24712
  order: 72,
24595
- command: mE,
24713
+ command: _E,
24596
24714
  toolbarMode: "select",
24597
24715
  compactPinned: !0,
24598
- icon: bE,
24716
+ icon: CE,
24599
24717
  active: M,
24600
24718
  hidden: () => !p().toolEnabled,
24601
24719
  menu: {
@@ -24645,21 +24763,21 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24645
24763
  m({ frameRate: e ? 120 : 60 });
24646
24764
  }
24647
24765
  }]
24648
- }), t.command.register(mE, async () => (await U(), DE(h))), t.command.register(hE, async () => kE(await B())), t.command.register(gE, () => (I(), DE(h))), t.command.register(_E, async (e) => {
24649
- let t = await R(EE(e));
24650
- return AE(t, r, i), OE(t);
24651
- }), t.service.provide(dE, te), t.lifecycle.onDispose(() => {
24766
+ }), t.command.register(_E, async () => (await U(), AE(h))), t.command.register(vE, async () => ME(await B())), t.command.register(yE, () => (I(), AE(h))), t.command.register(bE, async (e) => {
24767
+ let t = await R(kE(e));
24768
+ return NE(t, r, i), jE(t);
24769
+ }), t.service.provide(mE, te), t.lifecycle.onDispose(() => {
24652
24770
  O = !0, ++T, g.clear(), z.dispose(), x.dispose(), P(), F(!0), s.dispose(), a.dispose();
24653
24771
  });
24654
24772
  }
24655
- }), ME = 144, NE = 96, PE = 8, FE = 4, IE = 1800, LE = 200, RE = (e, t) => {
24773
+ }), FE = 144, IE = 96, LE = 8, RE = 4, zE = 1800, BE = 200, VE = (e, t) => {
24656
24774
  for (let [n, r] of Object.entries(t)) e.style.setProperty(n, r);
24657
- }, zE = (e, t) => ({
24658
- left: Math.min(Math.max(PE, e.left), Math.max(PE, t.innerWidth - ME - PE)),
24659
- top: Math.min(Math.max(PE, e.top), Math.max(PE, t.innerHeight - NE - PE))
24660
- }), BE = (e, t) => {
24775
+ }, HE = (e, t) => ({
24776
+ left: Math.min(Math.max(LE, e.left), Math.max(LE, t.innerWidth - FE - LE)),
24777
+ top: Math.min(Math.max(LE, e.top), Math.max(LE, t.innerHeight - IE - LE))
24778
+ }), UE = (e, t) => {
24661
24779
  let n = e.createElement("button");
24662
- return n.type = "button", n.textContent = t, RE(n, {
24780
+ return n.type = "button", n.textContent = t, VE(n, {
24663
24781
  height: "32px",
24664
24782
  padding: "0 12px",
24665
24783
  border: "1px solid rgb(255 255 255 / 18%)",
@@ -24671,11 +24789,11 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24671
24789
  "font-weight": "500",
24672
24790
  cursor: "pointer"
24673
24791
  }), n;
24674
- }, VE = ({ copied: e, downloaded: t, copyFailed: n, downloadFailed: r }) => e && t ? "Copied and saved screenshot" : e && r ? "Copied screenshot · Save unavailable" : t && n ? "Saved screenshot · Copy unavailable" : e ? "Copied screenshot" : t ? "Saved screenshot" : n && r ? "Screenshot captured · Copy and save unavailable" : n ? "Screenshot captured · Copy unavailable" : r ? "Screenshot captured · Save unavailable" : "Screenshot captured", HE = (e) => e !== null && (e.nodeType === 1 || e.nodeType === 11), UE = ({ ownerDocument: e, ownerWindow: t, root: n, previewDurationMs: r }) => {
24792
+ }, WE = ({ copied: e, downloaded: t, copyFailed: n, downloadFailed: r }) => e && t ? "Copied and saved screenshot" : e && r ? "Copied screenshot · Save unavailable" : t && n ? "Saved screenshot · Copy unavailable" : e ? "Copied screenshot" : t ? "Saved screenshot" : n && r ? "Screenshot captured · Copy and save unavailable" : n ? "Screenshot captured · Copy unavailable" : r ? "Screenshot captured · Save unavailable" : "Screenshot captured", GE = (e) => e !== null && (e.nodeType === 1 || e.nodeType === 11), KE = ({ ownerDocument: e, ownerWindow: t, root: n, previewDurationMs: r }) => {
24675
24793
  let i = n.closest("[data-mesurer-root='true']") ?? n.parentNode;
24676
- if (!HE(i)) throw Error("Screenshot preview requires a mounted Mesurer host.");
24794
+ if (!GE(i)) throw Error("Screenshot preview requires a mounted Mesurer host.");
24677
24795
  let a = e.createElement("div");
24678
- a.dataset.mesurerInspectorUi = "true", a.dataset.mesurerScreenshotInteractive = "true", RE(a, {
24796
+ a.dataset.mesurerInspectorUi = "true", a.dataset.mesurerScreenshotInteractive = "true", VE(a, {
24679
24797
  position: "fixed",
24680
24798
  left: "0",
24681
24799
  top: "0",
@@ -24687,12 +24805,12 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24687
24805
  "font-family": "ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif"
24688
24806
  }), i.append(a);
24689
24807
  let o = e.createElement("div");
24690
- o.dataset.mesurerScreenshotPreview = "true", o.setAttribute("role", "button"), o.setAttribute("aria-label", "Open captured screenshot"), o.tabIndex = 0, RE(o, {
24808
+ o.dataset.mesurerScreenshotPreview = "true", o.setAttribute("role", "button"), o.setAttribute("aria-label", "Open captured screenshot"), o.tabIndex = 0, VE(o, {
24691
24809
  position: "fixed",
24692
24810
  display: "none",
24693
24811
  "z-index": "96",
24694
- width: `${ME}px`,
24695
- height: `${NE}px`,
24812
+ width: `${FE}px`,
24813
+ height: `${IE}px`,
24696
24814
  "box-sizing": "border-box",
24697
24815
  overflow: "hidden",
24698
24816
  "border-radius": "10px",
@@ -24705,7 +24823,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24705
24823
  "touch-action": "none"
24706
24824
  });
24707
24825
  let s = e.createElement("img");
24708
- s.dataset.mesurerScreenshotPreviewImage = "true", s.alt = "Captured screenshot", s.draggable = !1, s.title = "Click to open · Right-click for browser image actions", RE(s, {
24826
+ s.dataset.mesurerScreenshotPreviewImage = "true", s.alt = "Captured screenshot", s.draggable = !1, s.title = "Click to open · Right-click for browser image actions", VE(s, {
24709
24827
  display: "block",
24710
24828
  width: "100%",
24711
24829
  height: "100%",
@@ -24713,7 +24831,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24713
24831
  "background-color": "white"
24714
24832
  }), o.append(s);
24715
24833
  let c = e.createElement("button");
24716
- c.dataset.mesurerScreenshotPreviewDismiss = "true", c.type = "button", c.setAttribute("aria-label", "Dismiss screenshot preview"), c.title = "Dismiss", RE(c, {
24834
+ c.dataset.mesurerScreenshotPreviewDismiss = "true", c.type = "button", c.setAttribute("aria-label", "Dismiss screenshot preview"), c.title = "Dismiss", VE(c, {
24717
24835
  position: "absolute",
24718
24836
  top: "8px",
24719
24837
  right: "8px",
@@ -24740,7 +24858,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24740
24858
  let u = e.createElementNS("http://www.w3.org/2000/svg", "path");
24741
24859
  u.setAttribute("d", "m4 4 8 8M12 4l-8 8"), u.setAttribute("stroke", "currentColor"), u.setAttribute("stroke-width", "1.75"), u.setAttribute("stroke-linecap", "round"), l.append(u), c.append(l), o.append(c), a.append(o);
24742
24860
  let d = e.createElement("div");
24743
- d.dataset.mesurerScreenshotViewer = "true", d.setAttribute("role", "dialog"), d.setAttribute("aria-modal", "true"), d.setAttribute("aria-label", "Screenshot viewer"), RE(d, {
24861
+ d.dataset.mesurerScreenshotViewer = "true", d.setAttribute("role", "dialog"), d.setAttribute("aria-modal", "true"), d.setAttribute("aria-label", "Screenshot viewer"), VE(d, {
24744
24862
  position: "fixed",
24745
24863
  inset: "0",
24746
24864
  display: "none",
@@ -24754,7 +24872,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24754
24872
  "pointer-events": "auto"
24755
24873
  });
24756
24874
  let f = e.createElement("img");
24757
- f.dataset.mesurerScreenshotViewerImage = "true", f.alt = "Captured screenshot", RE(f, {
24875
+ f.dataset.mesurerScreenshotViewerImage = "true", f.alt = "Captured screenshot", VE(f, {
24758
24876
  display: "block",
24759
24877
  "max-width": "calc(100vw - 96px)",
24760
24878
  "max-height": "calc(100vh - 112px)",
@@ -24765,7 +24883,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24765
24883
  "box-shadow": "0 8px 30px rgb(0 0 0 / 28%)"
24766
24884
  }), d.append(f);
24767
24885
  let p = e.createElement("div");
24768
- p.dataset.mesurerScreenshotViewerControls = "true", RE(p, {
24886
+ p.dataset.mesurerScreenshotViewerControls = "true", VE(p, {
24769
24887
  position: "fixed",
24770
24888
  top: "16px",
24771
24889
  right: "16px",
@@ -24773,14 +24891,14 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24773
24891
  gap: "8px",
24774
24892
  "pointer-events": "auto"
24775
24893
  });
24776
- let m = BE(e, "Copy");
24894
+ let m = UE(e, "Copy");
24777
24895
  m.dataset.mesurerScreenshotViewerCopy = "true", m.setAttribute("aria-label", "Copy screenshot");
24778
- let h = BE(e, "Save");
24896
+ let h = UE(e, "Save");
24779
24897
  h.dataset.mesurerScreenshotViewerSave = "true", h.setAttribute("aria-label", "Save screenshot");
24780
- let g = BE(e, "Close");
24898
+ let g = UE(e, "Close");
24781
24899
  g.dataset.mesurerScreenshotViewerClose = "true", g.setAttribute("aria-label", "Close screenshot viewer"), p.append(m, h, g), d.append(p), a.append(d);
24782
24900
  let _ = e.createElement("div");
24783
- _.dataset.mesurerScreenshotToast = "true", _.setAttribute("role", "status"), RE(_, {
24901
+ _.dataset.mesurerScreenshotToast = "true", _.setAttribute("role", "status"), VE(_, {
24784
24902
  position: "fixed",
24785
24903
  left: "50%",
24786
24904
  bottom: "20px",
@@ -24802,7 +24920,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24802
24920
  }, O = (e, n = !1) => {
24803
24921
  D(), _.textContent = e, _.style.backgroundColor = n ? "#b42318" : "rgb(28 28 30 / 90%)", _.style.display = "block", C = t.setTimeout(() => {
24804
24922
  C = 0, _.style.display = "none";
24805
- }, IE);
24923
+ }, zE);
24806
24924
  }, k = () => {
24807
24925
  d.style.display = "none";
24808
24926
  }, A = () => {
@@ -24812,7 +24930,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24812
24930
  }, M = () => {
24813
24931
  if (!v || o.style.display === "none" || w) return;
24814
24932
  E(), k();
24815
- let e = o.getBoundingClientRect(), n = Math.max(152, t.innerWidth - e.left + PE);
24933
+ let e = o.getBoundingClientRect(), n = Math.max(152, t.innerWidth - e.left + LE);
24816
24934
  o.style.pointerEvents = "none", o.style.willChange = "transform, opacity";
24817
24935
  let r = o.animate([{
24818
24936
  transform: "translateX(0) scale(1)",
@@ -24821,18 +24939,18 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24821
24939
  transform: `translateX(${n}px) scale(0.92)`,
24822
24940
  opacity: 0
24823
24941
  }], {
24824
- duration: LE,
24942
+ duration: BE,
24825
24943
  easing: "ease",
24826
24944
  fill: "forwards"
24827
24945
  });
24828
24946
  w = r, r.finished.catch(() => void 0).then(() => {
24829
24947
  w === r && (r.cancel(), w = null, j());
24830
24948
  });
24831
- }, N = () => zE({
24832
- left: t.innerWidth - ME - PE,
24833
- top: t.innerHeight - NE - PE
24949
+ }, N = () => HE({
24950
+ left: t.innerWidth - FE - LE,
24951
+ top: t.innerHeight - IE - LE
24834
24952
  }, t), P = (e) => {
24835
- let n = zE(e, t);
24953
+ let n = HE(e, t);
24836
24954
  b = n, o.style.left = `${n.left}px`, o.style.top = `${n.top}px`;
24837
24955
  }, F = () => {
24838
24956
  !v || !y || (E(), d.style.display = "flex", g.focus());
@@ -24866,7 +24984,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24866
24984
  let n = x;
24867
24985
  if (!n) return;
24868
24986
  let r = e - n.startX, i = t - n.startY;
24869
- !n.moved && Math.hypot(r, i) >= FE && (n.moved = !0), n.moved && P({
24987
+ !n.moved && Math.hypot(r, i) >= RE && (n.moved = !0), n.moved && P({
24870
24988
  left: n.left + r,
24871
24989
  top: n.top + i
24872
24990
  });
@@ -24910,25 +25028,25 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24910
25028
  if (T) return;
24911
25029
  E(), k(), w &&= (w.cancel(), null), o.style.opacity = "1", o.style.transform = "none", o.style.willChange = "transform, opacity", o.style.pointerEvents = "auto", A(), v = e;
24912
25030
  let i = globalThis.URL.createObjectURL(e);
24913
- y = i, s.src = i, f.src = i, o.style.display = "block", P(b ?? N()), O(VE(n)), r > 0 && (S = t.setTimeout(j, r));
25031
+ y = i, s.src = i, f.src = i, o.style.display = "block", P(b ?? N()), O(WE(n)), r > 0 && (S = t.setTimeout(j, r));
24914
25032
  },
24915
25033
  dismiss: j,
24916
25034
  dispose() {
24917
25035
  T || (T = !0, E(), D(), j(), t.removeEventListener("mousemove", H, !0), t.removeEventListener("mouseup", U, !0), t.removeEventListener("pointermove", te, !0), t.removeEventListener("pointerup", ne, !0), t.removeEventListener("pointercancel", re, !0), t.removeEventListener("keydown", oe, !0), o.removeEventListener("mousedown", ee), o.removeEventListener("pointerdown", W), o.removeEventListener("keydown", ie), o.removeEventListener("contextmenu", G), d.removeEventListener("click", ae), a.remove());
24918
25036
  }
24919
25037
  };
24920
- }, WE = "mesurer.screenshot", GE = "screenshot", KE = "mesurer.screenshot.settings", qE = "mesurer.screenshot.active", JE = "runtime:solid", YE = "screenshot.toggle", XE = 2500, ZE = 0, QE = [
25038
+ }, qE = "mesurer.screenshot", JE = "screenshot", YE = "mesurer.screenshot.settings", XE = "mesurer.screenshot.active", ZE = "runtime:solid", QE = "screenshot.toggle", $E = 2500, eD = 0, tD = [
24921
25039
  "[data-mesurer-measurement='true']",
24922
25040
  "[data-mesurer-selected-measurement='true']",
24923
25041
  "[data-mesurer-selection-spacing-target='true']",
24924
25042
  "[data-mesurer-guide='true']",
24925
25043
  "[data-mesurer-distance='true']"
24926
- ].join(","), $E = `${QE},[data-mesurer-rulers='true'],[data-mesurer-multi-selection-document-layer='true']`, eD = {
25044
+ ].join(","), nD = `${tD},[data-mesurer-rulers='true'],[data-mesurer-multi-selection-document-layer='true']`, rD = {
24927
25045
  viewBox: "0 0 256 256",
24928
25046
  paths: ["m 96,50 a 6.0006,6.0006 0 0 0 -4.992188,2.671875 L 76.789062,74 H 40 C 27.920803,74 18,83.920803 18,96 v 96 c 0,12.0792 9.920803,22 22,22 h 176 c 12.0792,0 22,-9.9208 22,-22 V 96 C 238,83.920803 228.0792,74 216,74 H 179.21094 L 164.99219,52.671875 A 6.0006,6.0006 0 0 0 160,50 Z m 3.210937,12 h 57.578123 l 14.21875,21.328125 A 6.0006,6.0006 0 0 0 176,86 h 40 c 5.59392,0 10,4.406085 10,10 v 96 c 0,5.59392 -4.40608,10 -10,10 H 40 c -5.593915,0 -10,-4.40608 -10,-10 V 96 c 0,-5.593915 4.406085,-10 10,-10 h 40 a 6.0006,6.0006 0 0 0 4.992187,-2.671875 z", "m 128,94 c -23.12489,0 -42,18.87511 -42,42 0,23.12489 18.87511,42 42,42 23.12489,0 42,-18.87511 42,-42 0,-23.12489 -18.87511,-42 -42,-42 z m 0,12 c 16.63961,0 30,13.36039 30,30 0,16.63961 -13.36039,30 -30,30 -16.63961,0 -30,-13.36039 -30,-30 0,-16.63961 13.36039,-30 30,-30 z"]
24929
- }, tD = (e, t) => {
25047
+ }, iD = (e, t) => {
24930
25048
  for (let [n, r] of Object.entries(t)) e.style.setProperty(n, r);
24931
- }, nD = (e, t) => {
25049
+ }, aD = (e, t) => {
24932
25050
  for (let n of [
24933
25051
  "left",
24934
25052
  "top",
@@ -24940,63 +25058,63 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
24940
25058
  let r = t[n];
24941
25059
  r === void 0 ? e.style.removeProperty(n) : e.style.setProperty(n, `${r}px`);
24942
25060
  }
24943
- }, rD = (e) => {
24944
- let t = e(KE);
25061
+ }, oD = (e) => {
25062
+ let t = e(YE);
24945
25063
  return {
24946
25064
  toolEnabled: t?.toolEnabled ?? !0,
24947
25065
  copy: t?.copy ?? !0,
24948
25066
  download: t?.download ?? !1,
24949
25067
  includeMeasurements: t?.includeMeasurements ?? !1
24950
25068
  };
24951
- }, iD = (e) => ({
25069
+ }, sD = (e) => ({
24952
25070
  value: e.style.getPropertyValue("display"),
24953
25071
  priority: e.style.getPropertyPriority("display")
24954
- }), aD = (e, t) => {
25072
+ }), cD = (e, t) => {
24955
25073
  t.value || t.priority ? e.style.setProperty("display", t.value, t.priority) : e.style.removeProperty("display");
24956
- }, oD = (e, t) => {
25074
+ }, lD = (e, t) => {
24957
25075
  let n = e;
24958
25076
  for (; n.parentElement && n.parentElement !== t;) n = n.parentElement;
24959
25077
  return n.parentElement === t ? n : null;
24960
- }, sD = (e) => {
25078
+ }, uD = (e) => {
24961
25079
  let t = e.querySelector("[data-mesurer-root='true']");
24962
25080
  if (!t) return () => void 0;
24963
25081
  let n = /* @__PURE__ */ new Set();
24964
25082
  for (let e of t.querySelectorAll("[data-mesurer-rulers='true']")) {
24965
- let r = oD(e, t);
25083
+ let r = lD(e, t);
24966
25084
  r && n.add(r);
24967
25085
  }
24968
- for (let e of t.querySelectorAll(QE)) {
24969
- let r = oD(e, t);
25086
+ for (let e of t.querySelectorAll(tD)) {
25087
+ let r = lD(e, t);
24970
25088
  r && n.add(r);
24971
25089
  }
24972
25090
  let r = [];
24973
25091
  for (let e of n) e.dataset.mesurerInspectorUi !== "true" && (r.push({
24974
25092
  element: e,
24975
- display: iD(e)
25093
+ display: sD(e)
24976
25094
  }), e.style.setProperty("display", "none", "important"));
24977
25095
  return () => {
24978
- for (let e of r) aD(e.element, e.display);
25096
+ for (let e of r) cD(e.element, e.display);
24979
25097
  };
24980
- }, cD = (e) => Array.from(e.querySelectorAll($E)).filter((e) => e.dataset.mesurerInspectorUi === "true").map((e) => ({
25098
+ }, dD = (e) => Array.from(e.querySelectorAll(nD)).filter((e) => e.dataset.mesurerInspectorUi === "true").map((e) => ({
24981
25099
  element: e,
24982
- display: iD(e)
24983
- })), lD = (e) => {
24984
- for (let t of e) t.element.isConnected && aD(t.element, t.display);
24985
- }, uD = (e = {}) => kc({
24986
- id: WE,
25100
+ display: sD(e)
25101
+ })), fD = (e) => {
25102
+ for (let t of e) t.element.isConnected && cD(t.element, t.display);
25103
+ }, pD = (e = {}) => kc({
25104
+ id: qE,
24987
25105
  version: "0.1.0",
24988
- requires: [JE],
25106
+ requires: [ZE],
24989
25107
  provides: [
24990
25108
  "tool:screenshot",
24991
25109
  "capture:screenshot",
24992
25110
  "settings:screenshot"
24993
25111
  ],
24994
25112
  setup(t) {
24995
- let n = t.service.get(JE);
25113
+ let n = t.service.get(ZE);
24996
25114
  if (!n) throw Error("Screenshot plugin requires the Solid renderer runtime.");
24997
- let { ownerDocument: r, ownerWindow: i } = n, a = n.createWorkspaceRuntime(), o = n.createInspectorMount(), s = e.capture ?? e.captureVisibleTab, c = s ?? Cl, l = e.previewDurationMs ?? ZE;
25115
+ let { ownerDocument: r, ownerWindow: i } = n, a = n.createWorkspaceRuntime(), o = n.createInspectorMount(), s = e.capture ?? e.captureVisibleTab, c = s ?? Cl, l = e.previewDurationMs ?? eD;
24998
25116
  t.state.register({
24999
- id: KE,
25117
+ id: YE,
25000
25118
  initial: {
25001
25119
  toolEnabled: e.toolEnabled ?? !0,
25002
25120
  copy: e.copy ?? !0,
@@ -25005,11 +25123,11 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
25005
25123
  },
25006
25124
  persist: !0
25007
25125
  }), t.state.register({
25008
- id: qE,
25126
+ id: XE,
25009
25127
  initial: !1
25010
25128
  });
25011
25129
  let u = o.element;
25012
- u.dataset.mesurerScreenshot = "true", tD(u, {
25130
+ u.dataset.mesurerScreenshot = "true", iD(u, {
25013
25131
  position: "fixed",
25014
25132
  inset: "0",
25015
25133
  "z-index": "85",
@@ -25017,7 +25135,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
25017
25135
  "font-family": "ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif"
25018
25136
  });
25019
25137
  let d = r.createElement("div");
25020
- d.dataset.mesurerScreenshotSelect = "true", d.setAttribute("role", "application"), d.setAttribute("aria-label", "Screenshot selection"), tD(d, {
25138
+ d.dataset.mesurerScreenshotSelect = "true", d.setAttribute("role", "application"), d.setAttribute("aria-label", "Screenshot selection"), iD(d, {
25021
25139
  position: "fixed",
25022
25140
  inset: "0",
25023
25141
  display: "none",
@@ -25029,13 +25147,13 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
25029
25147
  }), u.append(d);
25030
25148
  let f = Array.from({ length: 4 }, () => {
25031
25149
  let e = r.createElement("div");
25032
- return tD(e, {
25150
+ return iD(e, {
25033
25151
  position: "fixed",
25034
25152
  "background-color": "rgb(0 0 0 / 40%)",
25035
25153
  "pointer-events": "none"
25036
25154
  }), d.append(e), e;
25037
25155
  }), p = r.createElement("div");
25038
- tD(p, {
25156
+ iD(p, {
25039
25157
  position: "fixed",
25040
25158
  display: "none",
25041
25159
  border: "1px solid #0d99ff",
@@ -25043,7 +25161,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
25043
25161
  "pointer-events": "none"
25044
25162
  }), d.append(p);
25045
25163
  let m = r.createElement("div");
25046
- tD(m, {
25164
+ iD(m, {
25047
25165
  position: "fixed",
25048
25166
  display: "none",
25049
25167
  "z-index": "86",
@@ -25057,7 +25175,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
25057
25175
  "pointer-events": "none"
25058
25176
  }), d.append(m);
25059
25177
  let h = r.createElement("div");
25060
- h.textContent = "Drag to select · Esc to cancel", tD(h, {
25178
+ h.textContent = "Drag to select · Esc to cancel", iD(h, {
25061
25179
  position: "fixed",
25062
25180
  left: "50%",
25063
25181
  bottom: "16px",
@@ -25070,7 +25188,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
25070
25188
  "pointer-events": "none"
25071
25189
  }), d.append(h);
25072
25190
  let g = r.createElement("div");
25073
- g.dataset.mesurerScreenshotError = "true", g.setAttribute("role", "status"), g.textContent = "Could not save screenshot", tD(g, {
25191
+ g.dataset.mesurerScreenshotError = "true", g.setAttribute("role", "status"), g.textContent = "Could not save screenshot", iD(g, {
25074
25192
  position: "fixed",
25075
25193
  display: "none",
25076
25194
  "z-index": "97",
@@ -25081,8 +25199,8 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
25081
25199
  "font-size": "11px",
25082
25200
  "pointer-events": "none"
25083
25201
  }), u.append(g);
25084
- let _ = null, v = null, y = 0, b = 0, x = !1, S = !1, C = !1, w = () => t.state.get("mesurer.screenshot.active") ?? !1, T = () => rD(t.state.get), E = (e) => {
25085
- t.state.update(KE, (t) => {
25202
+ let _ = null, v = null, y = 0, b = 0, x = !1, S = !1, C = !1, w = () => t.state.get("mesurer.screenshot.active") ?? !1, T = () => oD(t.state.get), E = (e) => {
25203
+ t.state.update(YE, (t) => {
25086
25204
  let n = { ...t };
25087
25205
  return e.toolEnabled !== void 0 && (n.toolEnabled = e.toolEnabled), e.copy !== void 0 && (n.copy = e.copy), e.download !== void 0 && (n.download = e.download), e.includeMeasurements !== void 0 && (n.includeMeasurements = e.includeMeasurements), n;
25088
25206
  });
@@ -25105,13 +25223,13 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
25105
25223
  }, A = (e) => {
25106
25224
  let t = i.innerWidth, n = i.innerHeight;
25107
25225
  if (!e || e.width <= 0 || e.height <= 0) {
25108
- nD(f[0], {
25226
+ aD(f[0], {
25109
25227
  left: 0,
25110
25228
  top: 0,
25111
25229
  width: t,
25112
25230
  height: n
25113
25231
  });
25114
- for (let e of f.slice(1)) nD(e, {
25232
+ for (let e of f.slice(1)) aD(e, {
25115
25233
  left: 0,
25116
25234
  top: 0,
25117
25235
  width: 0,
@@ -25120,31 +25238,31 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
25120
25238
  p.style.display = "none", m.style.display = "none";
25121
25239
  return;
25122
25240
  }
25123
- nD(f[0], {
25241
+ aD(f[0], {
25124
25242
  left: 0,
25125
25243
  top: 0,
25126
25244
  width: t,
25127
25245
  height: e.top
25128
- }), nD(f[1], {
25246
+ }), aD(f[1], {
25129
25247
  left: 0,
25130
25248
  top: e.top,
25131
25249
  width: e.left,
25132
25250
  height: e.height
25133
- }), nD(f[2], {
25251
+ }), aD(f[2], {
25134
25252
  left: e.left + e.width,
25135
25253
  top: e.top,
25136
25254
  width: Math.max(0, t - e.left - e.width),
25137
25255
  height: e.height
25138
- }), nD(f[3], {
25256
+ }), aD(f[3], {
25139
25257
  left: 0,
25140
25258
  top: e.top + e.height,
25141
25259
  width: t,
25142
25260
  height: Math.max(0, n - e.top - e.height)
25143
- }), p.style.display = "block", nD(p, e), m.style.display = "block", m.textContent = `${Math.round(e.width)} × ${Math.round(e.height)}`, nD(m, {
25261
+ }), p.style.display = "block", aD(p, e), m.style.display = "block", m.textContent = `${Math.round(e.width)} × ${Math.round(e.height)}`, aD(m, {
25144
25262
  left: e.left + e.width / 2,
25145
25263
  top: Math.min(n - 22, e.top + e.height + 6)
25146
25264
  });
25147
- }, j = () => n.portalTarget.querySelector("[data-mesurer-tool-id='screenshot']")?.getBoundingClientRect() ?? null, M = UE({
25265
+ }, j = () => n.portalTarget.querySelector("[data-mesurer-tool-id='screenshot']")?.getBoundingClientRect() ?? null, M = KE({
25148
25266
  ownerDocument: r,
25149
25267
  ownerWindow: i,
25150
25268
  root: u,
@@ -25155,7 +25273,7 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
25155
25273
  }, P = () => {
25156
25274
  y && i.clearTimeout(y), g.style.display = "block", N(g), y = i.setTimeout(() => {
25157
25275
  y = 0, g.style.display = "none";
25158
- }, XE);
25276
+ }, $E);
25159
25277
  }, F = () => {
25160
25278
  _ = null, A(null), d.style.visibility = "", d.style.display = "none", u.style.pointerEvents = "none", D(!1), k();
25161
25279
  }, I = () => {
@@ -25164,8 +25282,8 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
25164
25282
  if (x) throw Error("A screenshot capture is already running.");
25165
25283
  if (e.width < 4 || e.height < 4) throw Error("Screenshot selection must be at least 4px by 4px.");
25166
25284
  x = !0;
25167
- let o = ++b, s = T(), l = s.includeMeasurements ? cD(r) : [], u = s.includeMeasurements ? () => void 0 : sD(n.portalTarget);
25168
- a.prepareCapture(), s.includeMeasurements && lD(l);
25285
+ let o = ++b, s = T(), l = s.includeMeasurements ? dD(r) : [], u = s.includeMeasurements ? () => void 0 : uD(n.portalTarget);
25286
+ a.prepareCapture(), s.includeMeasurements && fD(l);
25169
25287
  try {
25170
25288
  d.style.visibility = "hidden", await al(i);
25171
25289
  let n = await tl(await c({
@@ -25273,10 +25391,10 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
25273
25391
  label: "Screenshot",
25274
25392
  shortcut: "Shift+S",
25275
25393
  order: 70,
25276
- command: YE,
25394
+ command: QE,
25277
25395
  toolbarMode: "select",
25278
25396
  compactPinned: !0,
25279
- icon: eD,
25397
+ icon: rD,
25280
25398
  active: w,
25281
25399
  hidden: () => !T().toolEnabled,
25282
25400
  menu: {
@@ -25342,31 +25460,31 @@ var Fw = "mesurer.layout-guides", Iw = "layout-guides:v1", Lw = "mesurer.layout-
25342
25460
  set: (e) => E({ includeMeasurements: e })
25343
25461
  }
25344
25462
  ]
25345
- }), t.command.register(YE, R), t.service.provide(GE, U), t.lifecycle.onDispose(() => {
25463
+ }), t.command.register(QE, R), t.service.provide(JE, U), t.lifecycle.onDispose(() => {
25346
25464
  C = !0, b += 1, d.removeEventListener("pointerdown", z), d.removeEventListener("pointermove", B), d.removeEventListener("pointerup", V), d.removeEventListener("pointercancel", ee), i.removeEventListener("keydown", H, !0), y && i.clearTimeout(y), M.dispose(), k(), wl(i), a.finishCapture(), a.dispose(), o.dispose();
25347
25465
  });
25348
25466
  }
25349
- }), dD = (e) => Number.parseFloat(e) || 0, fD = 0, pD = (e, t) => {
25467
+ }), mD = (e) => Number.parseFloat(e) || 0, hD = 0, gD = (e, t) => {
25350
25468
  let n = t.CSS;
25351
25469
  return n?.escape ? n.escape(e) : e.replace(/[^a-zA-Z0-9_-]/g, (e) => `\\${e}`);
25352
- }, mD = (e) => e.nodeType === 9, hD = (e) => e.nodeType === 11;
25353
- function gD(e) {
25470
+ }, _D = (e) => e.nodeType === 9, vD = (e) => e.nodeType === 11;
25471
+ function yD(e) {
25354
25472
  let t = e.getRootNode();
25355
- return hD(t) ? t : e.ownerDocument;
25473
+ return vD(t) ? t : e.ownerDocument;
25356
25474
  }
25357
- var _D = (e, t) => {
25358
- if (mD(e) || hD(e)) return e;
25359
- let n = gD(e);
25360
- return hD(n) ? n : t;
25361
- }, vD = 600, yD = "audio, canvas, embed, iframe, img, input, object, picture, select, textarea, video", bD = /* @__PURE__ */ new WeakMap(), xD = (e) => {
25475
+ var bD = (e, t) => {
25476
+ if (_D(e) || vD(e)) return e;
25477
+ let n = yD(e);
25478
+ return vD(n) ? n : t;
25479
+ }, xD = 600, SD = "audio, canvas, embed, iframe, img, input, object, picture, select, textarea, video", CD = /* @__PURE__ */ new WeakMap(), wD = (e) => {
25362
25480
  let t = e;
25363
25481
  for (; t;) {
25364
- if ((bD.get(t) ?? 0) > 0) return !0;
25482
+ if ((CD.get(t) ?? 0) > 0) return !0;
25365
25483
  let e = t.getRootNode();
25366
- t = hD(e) ? e.host : t.parentElement;
25484
+ t = vD(e) ? e.host : t.parentElement;
25367
25485
  }
25368
25486
  return !1;
25369
- }, SD = (e, t) => t.x >= e.left && t.x <= e.right && t.y >= e.top && t.y <= e.bottom, CD = (e, t) => Array.from(e.getClientRects()).some((e) => SD(e, t)), wD = (e, t, n) => {
25487
+ }, TD = (e, t) => t.x >= e.left && t.x <= e.right && t.y >= e.top && t.y <= e.bottom, ED = (e, t) => Array.from(e.getClientRects()).some((e) => TD(e, t)), DD = (e, t, n) => {
25370
25488
  let r = e;
25371
25489
  for (; r;) {
25372
25490
  let e = n.getComputedStyle(r);
@@ -25375,7 +25493,7 @@ var _D = (e, t) => {
25375
25493
  r = r.parentElement;
25376
25494
  }
25377
25495
  return !0;
25378
- }, TD = (e, t) => {
25496
+ }, OD = (e, t) => {
25379
25497
  if (e.matches("img, picture, video, canvas, svg image, path, circle, ellipse, line, polygon, polyline, rect, text, use")) return !0;
25380
25498
  let n = t.getComputedStyle(e), r = n.backgroundImage !== "none" || n.backgroundColor !== "transparent" && n.backgroundColor !== "rgba(0, 0, 0, 0)", i = [
25381
25499
  "top",
@@ -25384,7 +25502,7 @@ var _D = (e, t) => {
25384
25502
  "left"
25385
25503
  ].some((e) => Number.parseFloat(n.getPropertyValue(`border-${e}-width`)) > 0 && n.getPropertyValue(`border-${e}-style`) !== "none");
25386
25504
  return r || i || n.boxShadow !== "none" || n.outlineStyle !== "none";
25387
- }, ED = (e, t) => !!e.textContent?.trim() || TD(e, t), DD = (e, t, n) => {
25505
+ }, kD = (e, t) => !!e.textContent?.trim() || OD(e, t), AD = (e, t, n) => {
25388
25506
  let r = t, i = r.caretRangeFromPoint?.(e.x, e.y)?.startContainer ?? r.caretPositionFromPoint?.(e.x, e.y)?.offsetNode;
25389
25507
  if (!i) return null;
25390
25508
  let a = t.defaultView?.Element;
@@ -25395,11 +25513,11 @@ var _D = (e, t) => {
25395
25513
  o = o.parentElement;
25396
25514
  }
25397
25515
  return o === n ? n : null;
25398
- }, OD = (e, t, n) => {
25516
+ }, jD = (e, t, n) => {
25399
25517
  let r = n.defaultView, i = r?.Element;
25400
25518
  if (!r || !i) return [];
25401
25519
  let a = [], o = /* @__PURE__ */ new Set(), s = (n, i, s) => {
25402
- if (o.has(n) || xD(n) || r.getComputedStyle(n).pointerEvents !== "none" || wD(n, e, r) || !CD(n, t)) return;
25520
+ if (o.has(n) || wD(n) || r.getComputedStyle(n).pointerEvents !== "none" || DD(n, e, r) || !ED(n, t)) return;
25403
25521
  let c = n.getBoundingClientRect();
25404
25522
  o.add(n), a.push({
25405
25523
  element: n,
@@ -25408,7 +25526,7 @@ var _D = (e, t) => {
25408
25526
  order: s
25409
25527
  });
25410
25528
  }, c = n.createTreeWalker(e, 1), l = c.nextNode(), u = 1;
25411
- for (; l && u <= vD;) {
25529
+ for (; l && u <= xD;) {
25412
25530
  if (l instanceof i) {
25413
25531
  let t = l;
25414
25532
  if (r.getComputedStyle(t).pointerEvents === "none") {
@@ -25419,9 +25537,9 @@ var _D = (e, t) => {
25419
25537
  }
25420
25538
  u += 1, l = c.nextNode();
25421
25539
  }
25422
- let d = DD(t, n, e);
25540
+ let d = AD(t, n, e);
25423
25541
  return d && r.getComputedStyle(d).pointerEvents === "none" && s(d, 1e4, u), a.sort((e, t) => t.depth - e.depth || e.area - t.area || t.order - e.order).map(({ element: e }) => e);
25424
- }, kD = (e, t, n) => {
25542
+ }, MD = (e, t, n) => {
25425
25543
  let r = t.ownerDocument.defaultView;
25426
25544
  if (!r) return [];
25427
25545
  let i = [...new Set(e)], a = /* @__PURE__ */ new Map();
@@ -25430,7 +25548,7 @@ var _D = (e, t) => {
25430
25548
  t && (a.set(e, e.getAttribute("style")), t.style.setProperty("pointer-events", "auto", "important"));
25431
25549
  }
25432
25550
  try {
25433
- let e = gD(t).elementsFromPoint(n.x, n.y), r = e.findIndex((e) => e === t), a = new Map(e.map((e, t) => [e, t]));
25551
+ let e = yD(t).elementsFromPoint(n.x, n.y), r = e.findIndex((e) => e === t), a = new Map(e.map((e, t) => [e, t]));
25434
25552
  return i.filter((e) => {
25435
25553
  let t = a.get(e);
25436
25554
  return t !== void 0 && (r < 0 || t < r);
@@ -25438,31 +25556,31 @@ var _D = (e, t) => {
25438
25556
  } finally {
25439
25557
  for (let [e, t] of a) t === null ? e.removeAttribute("style") : e.setAttribute("style", t);
25440
25558
  }
25441
- }, AD = (e, t) => {
25559
+ }, ND = (e, t) => {
25442
25560
  let n = e;
25443
25561
  for (; n.parentElement && n.parentElement !== t;) n = n.parentElement;
25444
25562
  return n.parentElement === t ? n : null;
25445
- }, jD = (e, t, n, r) => {
25563
+ }, PD = (e, t, n, r) => {
25446
25564
  let i = r.defaultView;
25447
25565
  if (!i) return [];
25448
- let a = kD(OD(e, t, r).filter((e) => ED(e, i)), e, t);
25566
+ let a = MD(jD(e, t, r).filter((e) => kD(e, i)), e, t);
25449
25567
  if (a.length > 0) return a;
25450
- if (e.textContent?.trim() && !e.matches(yD) || e.matches("a, button, input, select, textarea, label, summary, [contenteditable='true']")) return [];
25451
- let o = [], s = /* @__PURE__ */ new Set(), c = !mD(n) && !hD(n) ? n : null, l = e.parentElement;
25568
+ if (e.textContent?.trim() && !e.matches(SD) || e.matches("a, button, input, select, textarea, label, summary, [contenteditable='true']")) return [];
25569
+ let o = [], s = /* @__PURE__ */ new Set(), c = !_D(n) && !vD(n) ? n : null, l = e.parentElement;
25452
25570
  for (; l && l !== r.body && l !== r.documentElement && !(c && l !== c && !c.contains(l));) {
25453
- let a = l, u = AD(e, a), d = OD(a, t, r).filter((e) => {
25454
- if (!ND(e, n) || e.closest("[aria-hidden='true'], [inert]")) return !1;
25455
- let t = AD(e, a);
25571
+ let a = l, u = ND(e, a), d = jD(a, t, r).filter((e) => {
25572
+ if (!ID(e, n) || e.closest("[aria-hidden='true'], [inert]")) return !1;
25573
+ let t = ND(e, a);
25456
25574
  return t === null || t !== u;
25457
25575
  });
25458
- for (let e of d) s.has(e) || !ED(e, i) || (s.add(e), o.push(e));
25576
+ for (let e of d) s.has(e) || !kD(e, i) || (s.add(e), o.push(e));
25459
25577
  if (a === c) break;
25460
25578
  l = a.parentElement;
25461
25579
  }
25462
- return kD(o, e, t);
25580
+ return MD(o, e, t);
25463
25581
  };
25464
- function MD(e, t, n = mD(t) ? t : t.ownerDocument ?? document) {
25465
- let r = _D(t, n), i = n.defaultView;
25582
+ function FD(e, t, n = _D(t) ? t : t.ownerDocument ?? document) {
25583
+ let r = bD(t, n), i = n.defaultView;
25466
25584
  if (!i) return null;
25467
25585
  let a = r.elementsFromPoint(e.x, e.y);
25468
25586
  for (let r of a) {
@@ -25472,28 +25590,28 @@ function MD(e, t, n = mD(t) ? t : t.ownerDocument ?? document) {
25472
25590
  if (!t || t === a) break;
25473
25591
  a = t;
25474
25592
  }
25475
- if (!a || !ND(a, t)) continue;
25476
- let o = jD(a, e, t, n);
25593
+ if (!a || !ID(a, t)) continue;
25594
+ let o = PD(a, e, t, n);
25477
25595
  if (o.length > 0) return o[0];
25478
25596
  if (i.getComputedStyle(a).pointerEvents !== "none") return a;
25479
25597
  }
25480
25598
  return null;
25481
25599
  }
25482
- function ND(e, t) {
25483
- if (mD(t)) return !0;
25600
+ function ID(e, t) {
25601
+ if (_D(t)) return !0;
25484
25602
  let n = e;
25485
25603
  for (; n;) {
25486
25604
  if (t === n || t.contains(n)) return !0;
25487
25605
  let e = n.getRootNode();
25488
- if (!hD(e)) return !1;
25606
+ if (!vD(e)) return !1;
25489
25607
  n = e.host;
25490
25608
  }
25491
25609
  return !1;
25492
25610
  }
25493
- function PD(e, t) {
25611
+ function LD(e, t) {
25494
25612
  if (!e) return t();
25495
- let n = bD.get(e) ?? 0;
25496
- bD.set(e, n + 1);
25613
+ let n = CD.get(e) ?? 0;
25614
+ CD.set(e, n + 1);
25497
25615
  let r = [e, ...e.querySelectorAll("*")], i = r.map((e) => [
25498
25616
  e,
25499
25617
  e.style.getPropertyValue("pointer-events"),
@@ -25503,13 +25621,13 @@ function PD(e, t) {
25503
25621
  try {
25504
25622
  return t();
25505
25623
  } finally {
25506
- n === 0 ? bD.delete(e) : bD.set(e, n);
25624
+ n === 0 ? CD.delete(e) : CD.set(e, n);
25507
25625
  for (let [e, t, n] of i) t ? e.style.setProperty("pointer-events", t, n) : e.style.removeProperty("pointer-events");
25508
25626
  }
25509
25627
  }
25510
- function FD(e) {
25628
+ function RD(e) {
25511
25629
  let t = e.ownerDocument.defaultView ?? window;
25512
- if (e.id) return `#${pD(e.id, t)}`;
25630
+ if (e.id) return `#${gD(e.id, t)}`;
25513
25631
  let n = e.getAttribute("data-testid");
25514
25632
  if (n) return `[data-testid=${JSON.stringify(n)}]`;
25515
25633
  let r = [], i = e;
@@ -25523,17 +25641,17 @@ function FD(e) {
25523
25641
  }
25524
25642
  return r.join(" > ");
25525
25643
  }
25526
- function ID(e, t, n = `dom-inspection-${++fD}`) {
25644
+ function zD(e, t, n = `dom-inspection-${++hD}`) {
25527
25645
  let r = e.getBoundingClientRect(), i = t.getComputedStyle(e), a = {
25528
- top: dD(i.paddingTop),
25529
- right: dD(i.paddingRight),
25530
- bottom: dD(i.paddingBottom),
25531
- left: dD(i.paddingLeft)
25646
+ top: mD(i.paddingTop),
25647
+ right: mD(i.paddingRight),
25648
+ bottom: mD(i.paddingBottom),
25649
+ left: mD(i.paddingLeft)
25532
25650
  }, o = {
25533
- top: dD(i.marginTop),
25534
- right: dD(i.marginRight),
25535
- bottom: dD(i.marginBottom),
25536
- left: dD(i.marginLeft)
25651
+ top: mD(i.marginTop),
25652
+ right: mD(i.marginRight),
25653
+ bottom: mD(i.marginBottom),
25654
+ left: mD(i.marginLeft)
25537
25655
  }, s = {
25538
25656
  left: r.left + a.left,
25539
25657
  top: r.top + a.top,
@@ -25561,8 +25679,8 @@ function ID(e, t, n = `dom-inspection-${++fD}`) {
25561
25679
  elementRef: e
25562
25680
  };
25563
25681
  }
25564
- function LD(e) {
25565
- let t = e.ownerDocument.defaultView ?? window, n = t.getComputedStyle(e), r = e instanceof t.HTMLElement ? e : null, i = e.getBoundingClientRect(), a = r ? ID(r, t) : null, o = (e) => {
25682
+ function BD(e) {
25683
+ let t = e.ownerDocument.defaultView ?? window, n = t.getComputedStyle(e), r = e instanceof t.HTMLElement ? e : null, i = e.getBoundingClientRect(), a = r ? zD(r, t) : null, o = (e) => {
25566
25684
  let t = Number.parseFloat(e);
25567
25685
  return Number.isFinite(t) ? t : 0;
25568
25686
  }, s = (e) => ({
@@ -25572,7 +25690,7 @@ function LD(e) {
25572
25690
  left: o(n.getPropertyValue(`${e}-left${e === "border" ? "-width" : ""}`))
25573
25691
  });
25574
25692
  return {
25575
- selector: FD(e),
25693
+ selector: RD(e),
25576
25694
  tag: e.localName,
25577
25695
  id: e.id || null,
25578
25696
  classes: [...e.classList],
@@ -25634,10 +25752,10 @@ function LD(e) {
25634
25752
  }
25635
25753
  //#endregion
25636
25754
  //#region src/agent.ts
25637
- var RD = "text-edit", zD = (e) => LD(e);
25638
- function BD(e) {
25639
- 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 || ND(n, t), a = async () => {
25640
- let t = (e.getPluginHost() ?? await e.waitForPluginHost()).service.get(RD);
25755
+ var VD = "text-edit", HD = (e) => BD(e);
25756
+ function UD(e) {
25757
+ 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 || ID(n, t), a = async () => {
25758
+ let t = (e.getPluginHost() ?? await e.waitForPluginHost()).service.get(VD);
25641
25759
  if (!t) throw Error("Mesurer text editing service is unavailable.");
25642
25760
  return t;
25643
25761
  }, o = () => {
@@ -25666,25 +25784,25 @@ function BD(e) {
25666
25784
  },
25667
25785
  inspect(e, t = 0) {
25668
25786
  let n = r(e, t);
25669
- return n ? zD(n) : null;
25787
+ return n ? HD(n) : null;
25670
25788
  },
25671
25789
  inspectAll(e, n = 50) {
25672
- return [...t.querySelectorAll(e)].slice(0, Math.max(0, n)).map(zD);
25790
+ return [...t.querySelectorAll(e)].slice(0, Math.max(0, n)).map(HD);
25673
25791
  },
25674
25792
  at(n, r) {
25675
25793
  let a = t.querySelector?.("[data-mesurer-island]") ?? null;
25676
- return PD(a?.shadowRoot?.querySelector("[data-mesurer-root='true']") ?? a, () => {
25677
- let a = MD({
25794
+ return LD(a?.shadowRoot?.querySelector("[data-mesurer-root='true']") ?? a, () => {
25795
+ let a = FD({
25678
25796
  x: n,
25679
25797
  y: r
25680
25798
  }, t, e.ownerDocument);
25681
- return a && i(a) ? zD(a) : null;
25799
+ return a && i(a) ? HD(a) : null;
25682
25800
  });
25683
25801
  },
25684
25802
  distance(e, t) {
25685
25803
  let n = r(e), i = r(t);
25686
25804
  if (!n || !i) return null;
25687
- let a = zD(n), o = zD(i), s = a.rect, c = o.rect;
25805
+ let a = HD(n), o = HD(i), s = a.rect, c = o.rect;
25688
25806
  return {
25689
25807
  a,
25690
25808
  b: o,
@@ -25700,7 +25818,7 @@ function BD(e) {
25700
25818
  let r = e.getPluginHost() ?? await e.waitForPluginHost();
25701
25819
  return {
25702
25820
  viewport: o(),
25703
- elements: n.flatMap((e) => [...t.querySelectorAll(e)].slice(0, 50).map(zD)),
25821
+ elements: n.flatMap((e) => [...t.querySelectorAll(e)].slice(0, 50).map(HD)),
25704
25822
  plugins: r.describe(),
25705
25823
  pluginState: r.state.serialize("all")
25706
25824
  };
@@ -25725,10 +25843,10 @@ function BD(e) {
25725
25843
  }
25726
25844
  //#endregion
25727
25845
  //#region src/version.ts
25728
- var VD = "0.2.3-beta.6", HD = by, UD = xy, WD = () => ({
25846
+ var WD = "0.2.3-beta.8", GD = by, KD = xy, qD = () => ({
25729
25847
  ...gb(),
25730
- version: VD
25731
- }), GD = UD, KD = (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, qD = (e) => {
25848
+ version: WD
25849
+ }), JD = KD, YD = (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, XD = (e) => {
25732
25850
  if (!e.length) return null;
25733
25851
  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));
25734
25852
  return {
@@ -25737,55 +25855,59 @@ var VD = "0.2.3-beta.6", HD = by, UD = xy, WD = () => ({
25737
25855
  width: r - t,
25738
25856
  height: i - n
25739
25857
  };
25740
- }, JD = (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), YD = (e) => [...e.measurements, ...e.activeMeasurement && !e.measurements.some((t) => t.id === e.activeMeasurement?.id) ? [e.activeMeasurement] : []];
25741
- function XD(e) {
25858
+ }, ZD = (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), QD = (e) => [...e.measurements, ...e.activeMeasurement && !e.measurements.some((t) => t.id === e.activeMeasurement?.id) ? [e.activeMeasurement] : []];
25859
+ function $D(e) {
25742
25860
  let { workspace: t, scope: n, guideTolerance: r } = e;
25743
25861
  if (n.kind === "workspace") return {
25744
25862
  guides: t.guides.map((e) => ({ ...e })),
25745
- measurements: YD(t),
25863
+ measurements: QD(t),
25746
25864
  distances: [...t.distances]
25747
25865
  };
25748
- let i = new Set(n.elements), a = (e) => e != null && i.has(e), o = (e) => n.regions.some((t) => KD(e, t));
25866
+ let i = new Set(n.elements), a = (e) => e != null && i.has(e), o = (e) => n.regions.some((t) => YD(e, t));
25749
25867
  return {
25750
- guides: t.guides.filter((e) => JD(e, n.regions, r)).map((e) => ({ ...e })),
25751
- measurements: YD(t).filter((e) => a(e.elementRef) || o(e.rect)),
25868
+ guides: t.guides.filter((e) => ZD(e, n.regions, r)).map((e) => ({ ...e })),
25869
+ measurements: QD(t).filter((e) => a(e.elementRef) || o(e.rect)),
25752
25870
  distances: t.distances.filter((e) => a(e.elementRefA) || a(e.elementRefB) || o(e.rectA) || o(e.rectB))
25753
25871
  };
25754
25872
  }
25755
25873
  //#endregion
25756
25874
  //#region ../mesurer-core/dist/domain.js
25757
- var ZD = {
25875
+ var eO = {
25758
25876
  opacity: 1,
25759
25877
  width: 1,
25760
25878
  pattern: "solid",
25761
25879
  dashLength: 6,
25762
25880
  gap: 4
25763
- }, QD = {
25881
+ }, tO = {
25764
25882
  opacity: 1,
25765
25883
  edgeReveal: !1
25766
25884
  };
25767
- ({ ...ZD }), { ...QD };
25885
+ ({ ...eO }), { ...tO };
25768
25886
  //#endregion
25769
25887
  //#region src/context.ts
25770
- var $D = 10, eO = (e) => ({
25888
+ var nO = 10, rO = (e) => ({
25771
25889
  left: e.left,
25772
25890
  top: e.top,
25773
25891
  width: e.width,
25774
25892
  height: e.height
25775
- }), tO = (e) => {
25893
+ }), iO = (e) => {
25776
25894
  let t = /* @__PURE__ */ new Set(), n = [];
25777
25895
  for (let r of e) !r?.isConnected || t.has(r) || (t.add(r), n.push(r));
25778
25896
  return n;
25779
- }, nO = (e) => e.crypto?.randomUUID?.() ?? `${Date.now()}-${Math.random().toString(36).slice(2)}`;
25780
- function rO(e) {
25897
+ }, aO = (e) => e.crypto?.randomUUID?.() ?? `${Date.now()}-${Math.random().toString(36).slice(2)}`;
25898
+ function oO(e) {
25781
25899
  let { runtime: t, ownerDocument: n, ownerWindow: r } = e, i = e.request ?? { scope: "workspace" }, a = t.snapshot();
25782
25900
  if (!a) throw Error("Mesurer workspace is not ready yet.");
25783
- let o = (e) => eO(t.elementRect?.(e) ?? e.getBoundingClientRect()), s = [], c = [], l = { kind: "workspace" }, u = /* @__PURE__ */ new Map();
25901
+ let o = (e) => rO(t.elementRect?.(e) ?? e.getBoundingClientRect()), s = [], c = [], l = { kind: "workspace" }, u = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Map(), f;
25784
25902
  if ("annotation" in i) {
25785
25903
  let e = t.annotation(i.annotation);
25786
25904
  if (!e) throw Error(`Mesurer annotation not found: ${i.annotation}`);
25787
- for (let t of e.resolvedTargets) t.element?.isConnected && u.set(t.element, t.target.id);
25788
- s = tO(e.resolvedTargets.map((e) => e.element));
25905
+ e.anchor.kind === "elements" && (f = e.anchor.targets.find((e) => e.viewport)?.viewport);
25906
+ for (let t of e.resolvedTargets) t.element?.isConnected && (u.set(t.element, t.target.id), t.target.viewport && d.set(t.element, {
25907
+ viewport: { ...t.target.viewport },
25908
+ domPath: t.target.domPath?.map((e) => ({ ...e })) ?? []
25909
+ }));
25910
+ s = iO(e.resolvedTargets.map((e) => e.element));
25789
25911
  let n = t.annotationRect(e.id);
25790
25912
  n && (c = [n]);
25791
25913
  let r = e.resolvedTargets.length, a = e.resolvedTargets.filter((e) => e.element?.isConnected).length, o = e.anchor.kind === "region" ? "connected" : r === 0 || a === 0 ? "stale" : a === r ? "connected" : "partial";
@@ -25797,15 +25919,15 @@ function rO(e) {
25797
25919
  };
25798
25920
  } else if (i.scope === "selection") {
25799
25921
  let e = t.currentSelection();
25800
- if (s = tO(e.elements), !s.length && !e.region) throw Error("Mesurer has no current selection.");
25922
+ if (s = iO(e.elements), !s.length && !e.region) throw Error("Mesurer has no current selection.");
25801
25923
  c = e.region ? [e.region] : s.map(o), l = { kind: "selection" };
25802
- } else s = tO([
25924
+ } else s = iO([
25803
25925
  ...t.currentSelection().elements,
25804
25926
  ...a.measurements.map((e) => e.elementRef),
25805
25927
  a.activeMeasurement?.elementRef,
25806
25928
  ...a.heldDistances.flatMap((e) => [e.elementRefA, e.elementRefB])
25807
25929
  ]);
25808
- let d = l.kind === "workspace" ? [] : c.length ? c : s.map(o), f = XD({
25930
+ let p = l.kind === "workspace" ? [] : c.length ? c : s.map(o), m = $D({
25809
25931
  workspace: {
25810
25932
  guides: a.guides,
25811
25933
  measurements: a.measurements,
@@ -25815,55 +25937,55 @@ function rO(e) {
25815
25937
  scope: l.kind === "workspace" ? { kind: "workspace" } : {
25816
25938
  kind: "scoped",
25817
25939
  elements: s,
25818
- regions: d
25940
+ regions: p
25819
25941
  },
25820
- guideTolerance: a.guideRelevanceTolerance ?? $D
25821
- }), p = f.measurements, m = f.distances, h = f.guides, g = tO([
25942
+ guideTolerance: a.guideRelevanceTolerance ?? nO
25943
+ }), h = m.measurements, g = m.distances, _ = m.guides, v = iO([
25822
25944
  ...s,
25823
- ...p.map((e) => e.elementRef),
25824
- ...m.flatMap((e) => [e.elementRefA, e.elementRefB])
25825
- ]), _ = /* @__PURE__ */ new Map(), v = new Set(u.values()), y = 1, b = () => {
25826
- let e = `target-${y++}`;
25827
- for (; v.has(e);) e = `target-${y++}`;
25828
- return v.add(e), e;
25829
- }, x = g.map((e) => {
25830
- let t = u.get(e) ?? b(), n = o(e), r = LD(e);
25831
- return _.set(e, t), {
25832
- ref: t,
25945
+ ...h.map((e) => e.elementRef),
25946
+ ...g.flatMap((e) => [e.elementRefA, e.elementRefB])
25947
+ ]), y = /* @__PURE__ */ new Map(), b = new Set(u.values()), x = 1, S = () => {
25948
+ let e = `target-${x++}`;
25949
+ for (; b.has(e);) e = `target-${x++}`;
25950
+ return b.add(e), e;
25951
+ }, C = v.map((e) => {
25952
+ let n = u.get(e) ?? S(), r = o(e), i = BD(e);
25953
+ return y.set(e, n), {
25954
+ ref: n,
25955
+ ...d.get(e) ?? t.targetScope?.(e),
25833
25956
  inspection: {
25834
- ...r,
25957
+ ...i,
25835
25958
  rect: {
25836
- ...n,
25837
- right: n.left + n.width,
25838
- bottom: n.top + n.height,
25839
- x: n.left,
25840
- y: n.top
25959
+ ...r,
25960
+ right: r.left + r.width,
25961
+ bottom: r.top + r.height,
25962
+ x: r.left,
25963
+ y: r.top
25841
25964
  }
25842
25965
  }
25843
25966
  };
25844
- }), S = p.map((e) => {
25967
+ }), w = h.map((e) => {
25845
25968
  let t = {
25846
25969
  id: e.id,
25847
- rect: eO(e.rect),
25970
+ rect: rO(e.rect),
25848
25971
  deltaX: e.deltaX,
25849
25972
  deltaY: e.deltaY
25850
25973
  };
25851
25974
  e.snapped !== void 0 && (t.snapped = e.snapped);
25852
- let n = e.elementRef ? _.get(e.elementRef) : void 0;
25975
+ let n = e.elementRef ? y.get(e.elementRef) : void 0;
25853
25976
  return n && (t.targetRef = n), t;
25854
- }), C = m.map((e) => {
25977
+ }), T = g.map((e) => {
25855
25978
  let t = {
25856
25979
  id: e.id,
25857
- rectA: eO(e.rectA),
25858
- rectB: eO(e.rectB),
25980
+ rectA: rO(e.rectA),
25981
+ rectB: rO(e.rectB),
25859
25982
  horizontal: e.horizontal ? { ...e.horizontal } : null,
25860
25983
  vertical: e.vertical ? { ...e.vertical } : null
25861
- }, n = e.elementRefA ? _.get(e.elementRefA) : void 0, r = e.elementRefB ? _.get(e.elementRefB) : void 0;
25984
+ }, n = e.elementRefA ? y.get(e.elementRefA) : void 0, r = e.elementRefB ? y.get(e.elementRefB) : void 0;
25862
25985
  return n && (t.targetARef = n), r && (t.targetBRef = r), t;
25863
- });
25864
- return {
25986
+ }), E = {
25865
25987
  schema: "mesurer.context/v1",
25866
- id: nO(r),
25988
+ id: aO(r),
25867
25989
  createdAt: (/* @__PURE__ */ new Date()).toISOString(),
25868
25990
  scope: l,
25869
25991
  page: {
@@ -25878,62 +26000,63 @@ function rO(e) {
25878
26000
  scrollY: r.scrollY
25879
26001
  },
25880
26002
  coordinateSpace: "viewport-css-px",
25881
- regions: l.kind === "workspace" ? [] : c.map(eO),
26003
+ regions: l.kind === "workspace" ? [] : c.map(rO),
25882
26004
  visualState: {
25883
26005
  rulersVisible: a.rulersVisible,
25884
26006
  xrayVisible: a.xrayVisible
25885
26007
  },
25886
- targets: x,
26008
+ targets: C,
25887
26009
  visualContext: {
25888
- guides: h,
26010
+ guides: _,
25889
26011
  layoutGuides: (e.layoutGuides ?? []).map((e) => ({ ...e })),
25890
- measurements: S,
25891
- distances: C
26012
+ measurements: w,
26013
+ distances: T
25892
26014
  }
25893
26015
  };
26016
+ return f ??= C.find((e) => e.viewport)?.viewport, f && (E.previewViewport = { ...f }), E;
25894
26017
  }
25895
- var iO = (e) => `${Math.round(e * 100) / 100}px`, aO = (e) => `x=${iO(e.left)} y=${iO(e.top)} w=${iO(e.width)} h=${iO(e.height)}`;
25896
- function oO(e) {
26018
+ var sO = (e) => `${Math.round(e * 100) / 100}px`, cO = (e) => `x=${sO(e.left)} y=${sO(e.top)} w=${sO(e.width)} h=${sO(e.height)}`;
26019
+ function lO(e) {
25897
26020
  let t = [
25898
26021
  "Mesurer visual context",
25899
26022
  "",
25900
26023
  `Page: ${e.page.url}`,
25901
26024
  `Viewport: ${e.viewport.width} × ${e.viewport.height} CSS px; scroll x=${e.viewport.scrollX} y=${e.viewport.scrollY}`
25902
26025
  ];
25903
- 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}: ${aO(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) {
26026
+ 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}: ${cO(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) {
25904
26027
  t.push("", "Targets");
25905
26028
  for (let n of e.targets) {
25906
26029
  let e = n.inspection;
25907
- t.push(`[${n.ref}] ${e.selector}`, ` rect: ${aO(e.rect)}`, ` margin: ${iO(e.margin.top)} ${iO(e.margin.right)} ${iO(e.margin.bottom)} ${iO(e.margin.left)}`, ` padding: ${iO(e.padding.top)} ${iO(e.padding.right)} ${iO(e.padding.bottom)} ${iO(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)}`);
26030
+ n.viewport && t.push(`Preview: ${n.viewport.url}; ${n.viewport.width} × ${n.viewport.height} CSS px; id=${n.viewport.previewId}`), t.push(`[${n.ref}] ${e.selector}`, ` rect: ${cO(e.rect)}`, ` margin: ${sO(e.margin.top)} ${sO(e.margin.right)} ${sO(e.margin.bottom)} ${sO(e.margin.left)}`, ` padding: ${sO(e.padding.top)} ${sO(e.padding.right)} ${sO(e.padding.bottom)} ${sO(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)}`);
25908
26031
  }
25909
26032
  }
25910
26033
  if (e.visualContext.guides.length) {
25911
26034
  t.push("", "Relevant guides");
25912
- for (let n of e.visualContext.guides) t.push(`- ${n.orientation} ${n.orientation === "vertical" ? "x" : "y"}=${iO(n.position)}`);
26035
+ for (let n of e.visualContext.guides) t.push(`- ${n.orientation} ${n.orientation === "vertical" ? "x" : "y"}=${sO(n.position)}`);
25913
26036
  }
25914
26037
  if (e.visualContext.layoutGuides.length) {
25915
26038
  t.push("", "Layout guides");
25916
26039
  for (let n of e.visualContext.layoutGuides) {
25917
26040
  if (!n.visible) continue;
25918
- let e = n.kind === "grid" ? `grid ${iO(n.size)}` : `${n.count} ${n.kind}; gutter=${iO(n.gutter)}; offset=${iO(n.offset)}; align=${n.align}`;
26041
+ let e = n.kind === "grid" ? `grid ${sO(n.size)}` : `${n.count} ${n.kind}; gutter=${sO(n.gutter)}; offset=${sO(n.offset)}; align=${n.align}`;
25919
26042
  t.push(`- ${e}; color=${n.color}; opacity=${Math.round(n.opacity * 100)}%`);
25920
26043
  }
25921
26044
  }
25922
26045
  if (e.visualContext.measurements.length) {
25923
26046
  t.push("", "Relevant measurements");
25924
- for (let n of e.visualContext.measurements) t.push(`- ${n.targetRef ? `${n.targetRef}: ` : ""}${aO(n.rect)}; delta=${iO(n.deltaX)} × ${iO(n.deltaY)}`);
26047
+ for (let n of e.visualContext.measurements) t.push(`- ${n.targetRef ? `${n.targetRef}: ` : ""}${cO(n.rect)}; delta=${sO(n.deltaX)} × ${sO(n.deltaY)}`);
25925
26048
  }
25926
26049
  if (e.visualContext.distances.length) {
25927
26050
  t.push("", "Relevant distances");
25928
26051
  for (let n of e.visualContext.distances) {
25929
- let e = [n.targetARef, n.targetBRef].filter(Boolean).join(" → "), r = [n.horizontal ? `horizontal=${iO(n.horizontal.value)}` : null, n.vertical ? `vertical=${iO(n.vertical.value)}` : null].filter(Boolean).join("; ");
26052
+ let e = [n.targetARef, n.targetBRef].filter(Boolean).join(" → "), r = [n.horizontal ? `horizontal=${sO(n.horizontal.value)}` : null, n.vertical ? `vertical=${sO(n.vertical.value)}` : null].filter(Boolean).join("; ");
25930
26053
  t.push(`- ${e ? `${e}: ` : ""}${r || "overlapping"}`);
25931
26054
  }
25932
26055
  }
25933
26056
  return t.join("\n").trimEnd();
25934
26057
  }
25935
- function sO(e) {
25936
- let t = qD([
26058
+ function uO(e) {
26059
+ let t = XD([
25937
26060
  ...e.regions,
25938
26061
  ...e.targets.map((e) => e.inspection.rect),
25939
26062
  ...e.visualContext.measurements.map((e) => e.rect),
@@ -25955,15 +26078,16 @@ function sO(e) {
25955
26078
  }
25956
26079
  });
25957
26080
  }
25958
- return {
26081
+ let r = {
25959
26082
  schema: "mesurer.capture/v1",
25960
26083
  contextId: e.id,
25961
26084
  chrome: "hide",
25962
26085
  evidence: "show",
25963
26086
  captures: n
25964
26087
  };
26088
+ return e.previewViewport && (r.previewViewport = { ...e.previewViewport }), r;
25965
26089
  }
25966
- var cO = (e, t, n, r, i) => {
26090
+ var dO = (e, t, n, r, i) => {
25967
26091
  !Number.isFinite(r) || !Number.isFinite(i) || Math.abs(r - i) < .01 || e.push({
25968
26092
  kind: t,
25969
26093
  label: n,
@@ -25972,16 +26096,16 @@ var cO = (e, t, n, r, i) => {
25972
26096
  delta: i - r,
25973
26097
  unit: "px"
25974
26098
  });
25975
- }, lO = (e, t, n, r) => e.push({
26099
+ }, fO = (e, t, n, r) => e.push({
25976
26100
  kind: "missing",
25977
26101
  evidence: t,
25978
26102
  id: n,
25979
26103
  label: r
25980
- }), uO = (e, t) => Math.abs(e.left - t.left) < .01 && Math.abs(e.top - t.top) < .01 && Math.abs(e.width - t.width) < .01 && Math.abs(e.height - t.height) < .01;
25981
- function dO(e) {
26104
+ }), pO = (e, t) => Math.abs(e.left - t.left) < .01 && Math.abs(e.top - t.top) < .01 && Math.abs(e.width - t.width) < .01 && Math.abs(e.height - t.height) < .01;
26105
+ function mO(e) {
25982
26106
  let t = e.runtime.annotation(e.annotationId);
25983
26107
  if (!t) throw Error(`Mesurer annotation not found: ${e.annotationId}`);
25984
- let n = rO({
26108
+ let n = oO({
25985
26109
  runtime: e.runtime,
25986
26110
  ownerDocument: e.ownerDocument,
25987
26111
  ownerWindow: e.ownerWindow,
@@ -25991,42 +26115,42 @@ function dO(e) {
25991
26115
  if (n.scope.kind !== "annotation") throw Error("Mesurer annotation context invariant failed.");
25992
26116
  let r = e.runtime.snapshot();
25993
26117
  if (!r) throw Error("Mesurer workspace is not ready yet.");
25994
- let i = YD({
26118
+ let i = QD({
25995
26119
  measurements: r.measurements,
25996
26120
  activeMeasurement: r.activeMeasurement
25997
26121
  }), a = [];
25998
26122
  for (let e of t.baseline.targets) {
25999
26123
  let t = n.targets.find((t) => t.ref === e.id);
26000
26124
  if (!t) {
26001
- lO(a, "target", e.id, e.selector);
26125
+ fO(a, "target", e.id, e.selector);
26002
26126
  continue;
26003
26127
  }
26004
- cO(a, "target-rect", `${t.inspection.selector} left`, e.rect.left, t.inspection.rect.left), cO(a, "target-rect", `${t.inspection.selector} top`, e.rect.top, t.inspection.rect.top), cO(a, "target-rect", `${t.inspection.selector} width`, e.rect.width, t.inspection.rect.width), cO(a, "target-rect", `${t.inspection.selector} height`, e.rect.height, t.inspection.rect.height);
26128
+ dO(a, "target-rect", `${t.inspection.selector} left`, e.rect.left, t.inspection.rect.left), dO(a, "target-rect", `${t.inspection.selector} top`, e.rect.top, t.inspection.rect.top), dO(a, "target-rect", `${t.inspection.selector} width`, e.rect.width, t.inspection.rect.width), dO(a, "target-rect", `${t.inspection.selector} height`, e.rect.height, t.inspection.rect.height);
26005
26129
  }
26006
26130
  for (let e of t.baseline.guides) {
26007
26131
  let t = n.visualContext.guides.find((t) => t.id === e.id) ?? r.guides.find((t) => t.id === e.id);
26008
26132
  if (!t) {
26009
- lO(a, "guide", e.id, `${e.orientation} guide ${e.id}`);
26133
+ fO(a, "guide", e.id, `${e.orientation} guide ${e.id}`);
26010
26134
  continue;
26011
26135
  }
26012
- cO(a, "guide", `${e.orientation} guide ${e.id}`, e.position, t.position);
26136
+ dO(a, "guide", `${e.orientation} guide ${e.id}`, e.position, t.position);
26013
26137
  }
26014
26138
  for (let e of t.baseline.measurements) {
26015
26139
  let r = n.visualContext.measurements.find((t) => t.id === e.id) ?? i.find((t) => t.id === e.id);
26016
26140
  if (!r) {
26017
- let r = t.baseline.targets.find((t) => uO(t.rect, e.rect));
26018
- r && n.targets.some((e) => e.ref === r.id) || lO(a, "measurement", e.id, e.id);
26141
+ let r = t.baseline.targets.find((t) => pO(t.rect, e.rect));
26142
+ r && n.targets.some((e) => e.ref === r.id) || fO(a, "measurement", e.id, e.id);
26019
26143
  continue;
26020
26144
  }
26021
- cO(a, "measurement", `${e.id} width`, e.rect.width, r.rect.width), cO(a, "measurement", `${e.id} height`, e.rect.height, r.rect.height);
26145
+ dO(a, "measurement", `${e.id} width`, e.rect.width, r.rect.width), dO(a, "measurement", `${e.id} height`, e.rect.height, r.rect.height);
26022
26146
  }
26023
26147
  for (let e of t.baseline.distances) {
26024
26148
  let t = n.visualContext.distances.find((t) => t.id === e.id) ?? r.heldDistances.find((t) => t.id === e.id);
26025
26149
  if (!t) {
26026
- lO(a, "distance", e.id, e.id);
26150
+ fO(a, "distance", e.id, e.id);
26027
26151
  continue;
26028
26152
  }
26029
- e.horizontal && t.horizontal ? cO(a, "distance", `${e.id} horizontal`, e.horizontal.value, t.horizontal.value) : e.horizontal && !t.horizontal && lO(a, "distance", e.id, `${e.id} horizontal`), e.vertical && t.vertical ? cO(a, "distance", `${e.id} vertical`, e.vertical.value, t.vertical.value) : e.vertical && !t.vertical && lO(a, "distance", e.id, `${e.id} vertical`);
26153
+ e.horizontal && t.horizontal ? dO(a, "distance", `${e.id} horizontal`, e.horizontal.value, t.horizontal.value) : e.horizontal && !t.horizontal && fO(a, "distance", e.id, `${e.id} horizontal`), e.vertical && t.vertical ? dO(a, "distance", `${e.id} vertical`, e.vertical.value, t.vertical.value) : e.vertical && !t.vertical && fO(a, "distance", e.id, `${e.id} vertical`);
26030
26154
  }
26031
26155
  return {
26032
26156
  schema: "mesurer.review/v1",
@@ -26038,7 +26162,7 @@ function dO(e) {
26038
26162
  changes: a
26039
26163
  };
26040
26164
  }
26041
- async function fO(e, t, n) {
26165
+ async function hO(e, t, n) {
26042
26166
  try {
26043
26167
  if (t.navigator.clipboard?.writeText) {
26044
26168
  await t.navigator.clipboard.writeText(n);
@@ -26052,43 +26176,43 @@ async function fO(e, t, n) {
26052
26176
  }
26053
26177
  //#endregion
26054
26178
  //#region src/layout-guides.ts
26055
- var pO = Fw, mO = Iw, hO = () => ({
26056
- ...cT(),
26057
- version: VD
26058
- }), gO = "mesurer.context", _O = "context:v1", vO = "mesurer.context.settings", yO = "context.ui", bO = "data-mesurer-direct-text-edit-active", xO = {
26179
+ var gO = Rw, _O = zw, vO = () => ({
26180
+ ...dT(),
26181
+ version: WD
26182
+ }), yO = "mesurer.context", bO = "context:v1", xO = "mesurer.context.settings", SO = "context.ui", CO = "data-mesurer-direct-text-edit-active", wO = {
26059
26183
  viewBox: "0 0 256 256",
26060
26184
  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"]
26061
- }, SO = {
26185
+ }, TO = {
26062
26186
  viewBox: "0 0 256 256",
26063
26187
  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"]
26064
- }, CO = {
26188
+ }, EO = {
26065
26189
  viewBox: "0 0 256 256",
26066
26190
  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"]
26067
- }, wO = async (e, t, n = 1) => {
26191
+ }, DO = async (e, t, n = 1) => {
26068
26192
  await e.fonts?.ready;
26069
26193
  for (let e = 0; e < Math.max(1, n); e += 1) await new Promise((e) => t.requestAnimationFrame(() => e()));
26070
- }, TO = (e, t, n, r) => {
26071
- let i = async (i) => rO({
26194
+ }, OO = (e, t, n, r) => {
26195
+ let i = async (i) => oO({
26072
26196
  runtime: e,
26073
26197
  ownerDocument: t,
26074
26198
  ownerWindow: n,
26075
26199
  request: i,
26076
26200
  layoutGuides: r()
26077
- }), a = async (e) => oO(await i(e));
26201
+ }), a = async (e) => lO(await i(e));
26078
26202
  return {
26079
26203
  context: i,
26080
26204
  contextText: a,
26081
- copyContext: async (e) => fO(t, n, await a(e)),
26205
+ copyContext: async (e) => hO(t, n, await a(e)),
26082
26206
  select: async (r) => {
26083
26207
  let a = Array.isArray(r) ? [...r] : [String(r)];
26084
- return e.select(a), await wO(t, n), i({ scope: "selection" });
26208
+ return e.select(a), await DO(t, n), i({ scope: "selection" });
26085
26209
  },
26086
26210
  annotations: async () => e.annotations(),
26087
26211
  removeAnnotation: async (r) => {
26088
- e.removeAnnotation(r), await wO(t, n);
26212
+ e.removeAnnotation(r), await DO(t, n);
26089
26213
  },
26090
26214
  review: async (i) => {
26091
- if (await wO(t, n), i) return dO({
26215
+ if (await DO(t, n), i) return mO({
26092
26216
  runtime: e,
26093
26217
  ownerDocument: t,
26094
26218
  ownerWindow: n,
@@ -26096,7 +26220,7 @@ var pO = Fw, mO = Iw, hO = () => ({
26096
26220
  layoutGuides: r()
26097
26221
  });
26098
26222
  let a = r();
26099
- return e.annotations().map((r) => dO({
26223
+ return e.annotations().map((r) => mO({
26100
26224
  runtime: e,
26101
26225
  ownerDocument: t,
26102
26226
  ownerWindow: n,
@@ -26104,76 +26228,67 @@ var pO = Fw, mO = Iw, hO = () => ({
26104
26228
  layoutGuides: a
26105
26229
  }));
26106
26230
  },
26107
- capturePlan: async (e) => sO(await i(e)),
26231
+ capturePlan: async (e) => uO(await i(e)),
26108
26232
  prepareCapture: async () => {
26109
- e.prepareCapture(), await wO(t, n);
26233
+ e.prepareCapture(), await DO(t, n);
26110
26234
  },
26111
26235
  finishCapture: async () => {
26112
- e.finishCapture(), await wO(t, n);
26236
+ e.finishCapture(), await DO(t, n);
26113
26237
  }
26114
26238
  };
26115
- }, EO = (e) => {
26116
- let t = e.currentSelection();
26117
- return (t.elements.length > 0 || t.region !== null) && !t.elements.some((e) => {
26118
- let t = e.ownerDocument;
26119
- for (; t;) {
26120
- let e = t.defaultView?.frameElement ?? null;
26121
- if (!e) return !1;
26122
- if (e.hasAttribute("data-mesurer-responsive-frame")) return !0;
26123
- t = e.ownerDocument;
26124
- }
26125
- return !1;
26126
- });
26239
+ }, kO = (e, t) => {
26240
+ let n = e.currentSelection();
26241
+ return n.elements.length > 0 || n.region !== null && !t?.querySelector("[data-mesurer-responsive-stage]");
26127
26242
  };
26128
- function DO(e = {}) {
26243
+ function AO(e = {}) {
26129
26244
  return {
26130
- id: gO,
26131
- version: VD,
26245
+ id: yO,
26246
+ version: WD,
26132
26247
  requires: ["runtime:solid"],
26133
- provides: [_O],
26248
+ provides: [bO],
26134
26249
  setup(t) {
26135
26250
  let n = t.service.get("runtime:solid");
26136
26251
  if (!n) throw Error("Mesurer context plugin requires the renderer runtime service.");
26137
- let r = n.createWorkspaceRuntime(gO), i = TO(r, n.ownerDocument, n.ownerWindow, () => t.service.get(mO)?.list() ?? []);
26138
- t.service.provide(_O, i), t.state.register({
26139
- id: vO,
26252
+ let r = n.createWorkspaceRuntime(yO), i = OO(r, n.ownerDocument, n.ownerWindow, () => t.service.get(_O)?.list() ?? []);
26253
+ t.service.provide(bO, i), t.state.register({
26254
+ id: xO,
26140
26255
  initial: { ui: e.ui ?? !0 },
26141
26256
  persist: !0
26142
26257
  }), t.state.register({
26143
- id: yO,
26144
- initial: { hasSelection: EO(r) }
26258
+ id: SO,
26259
+ initial: { hasSelection: kO(r, n.rendererRoot) }
26145
26260
  });
26146
- let a = () => t.state.get("mesurer.context.settings")?.ui ?? !0, o = () => EO(r), s = (e) => {
26147
- t.state.update(vO, (t) => ({
26261
+ let a = () => t.state.get("mesurer.context.settings")?.ui ?? !0, o = () => kO(r, n.rendererRoot), s = (e) => {
26262
+ t.state.update(xO, (t) => ({
26148
26263
  ...t,
26149
26264
  ui: e
26150
26265
  }));
26151
- }, c = null, l = null, u = null, d = null, f = r.currentSelection(), p = {
26152
- elements: [...f.elements],
26153
- region: f.region ? { ...f.region } : null
26154
- }, m = (e, t) => e.elements.length !== t.elements.length || e.elements.some((e, n) => e !== t.elements[n]) ? !1 : e.region === t.region ? !0 : !e.region || !t.region ? !1 : e.region.left === t.region.left && e.region.top === t.region.top && e.region.width === t.region.width && e.region.height === t.region.height, h = r.subscribe(() => {
26155
- let e = r.currentSelection(), n = !m(p, e);
26156
- p = {
26266
+ }, c = null, l = null, u = null, d = null, [f, p] = K(!!n.rendererRoot?.querySelector("[data-mesurer-responsive-stage]")), m = null, h = r.currentSelection(), g = {
26267
+ elements: [...h.elements],
26268
+ region: h.region ? { ...h.region } : null
26269
+ }, _ = (e, t) => e.elements.length !== t.elements.length || e.elements.some((e, n) => e !== t.elements[n]) ? !1 : e.region === t.region ? !0 : !e.region || !t.region ? !1 : e.region.left === t.region.left && e.region.top === t.region.top && e.region.width === t.region.width && e.region.height === t.region.height, v = r.subscribe(() => {
26270
+ let e = r.currentSelection(), i = !_(g, e);
26271
+ g = {
26157
26272
  elements: [...e.elements],
26158
26273
  region: e.region ? { ...e.region } : null
26159
- }, r.selectGestureActive() ? c?.abandonNoteComposer() : n && c?.closeNoteComposer();
26160
- let i = EO(r);
26161
- i !== (t.state.get(yO)?.hasSelection ?? !1) && t.state.update(yO, () => ({ hasSelection: i }));
26274
+ }, r.selectGestureActive() ? c?.abandonNoteComposer() : i && c?.closeNoteComposer();
26275
+ let a = kO(r, n.rendererRoot);
26276
+ a !== (t.state.get(SO)?.hasSelection ?? !1) && t.state.update(SO, () => ({ hasSelection: a }));
26162
26277
  });
26163
26278
  t.command.register("context.copy", () => i.copyContext()), t.command.register("context.copy-selection", () => i.copyContext({ scope: "selection" }));
26164
- let g = () => {
26279
+ let y = () => {
26165
26280
  let e = u?.element;
26166
- e && (n.rendererRoot?.hasAttribute(bO) ? e.setAttribute(bO, "true") : e.removeAttribute(bO));
26167
- }, _ = () => {
26281
+ e && (n.rendererRoot?.hasAttribute(CO) ? e.setAttribute(CO, "true") : e.removeAttribute(CO));
26282
+ }, b = () => {
26168
26283
  d?.disconnect(), d = null, c = null, l?.(), l = null, u?.dispose(), u = null;
26169
- }, v = () => {
26284
+ }, x = () => {
26170
26285
  if (u) return;
26171
- if (u = dw(n), u.element.dataset.mesurerLayer = "evidence", u.element.dataset.mesurerContextRoot = "true", n.rendererRoot) {
26172
- let e = new n.ownerWindow.MutationObserver(g);
26286
+ if (u = mw(n), m = u.element.parentNode, u.element.dataset.mesurerLayer = "evidence", u.element.dataset.mesurerContextRoot = "true", n.rendererRoot) {
26287
+ let e = new n.ownerWindow.MutationObserver(y);
26173
26288
  d = e, e.observe(n.rendererRoot, {
26174
26289
  attributes: !0,
26175
- attributeFilter: [bO]
26176
- }), g();
26290
+ attributeFilter: [CO]
26291
+ }), y();
26177
26292
  }
26178
26293
  let e = {
26179
26294
  runtime: r,
@@ -26181,16 +26296,25 @@ function DO(e = {}) {
26181
26296
  onController: (e) => {
26182
26297
  c = e;
26183
26298
  },
26184
- coordinateSpace: "document",
26299
+ get coordinateSpace() {
26300
+ return f() ? "viewport" : "document";
26301
+ },
26185
26302
  rendererRoot: n.rendererRoot
26186
26303
  };
26187
- l = No(() => yo(sw, oo(e, { get ownerWindow() {
26304
+ l = No(() => yo(uw, oo(e, { get ownerWindow() {
26188
26305
  return n.ownerWindow;
26189
- } })), u.element);
26190
- }, y = () => {
26191
- a() ? v() : _();
26306
+ } })), u.element), un(f) && n.rendererRoot && (n.rendererRoot.append(u.element), u.element.style.zIndex = "90");
26307
+ }, S = () => {
26308
+ a() ? x() : b();
26309
+ };
26310
+ S(), t.state.subscribe(S);
26311
+ let C = () => {
26312
+ let e = !!n.rendererRoot?.querySelector("[data-mesurer-responsive-stage]");
26313
+ if (e === un(f) || (p(e), !u)) return;
26314
+ let t = e ? n.rendererRoot : m;
26315
+ t && u.element.parentNode !== t && t.appendChild(u.element), u.element.style.zIndex = e ? "90" : "", un(() => c?.closeNoteComposer());
26192
26316
  };
26193
- y(), t.state.subscribe(y), t.command.register("context.add-note", () => {
26317
+ n.ownerWindow.addEventListener("mesurer:responsive-stage-change", C), t.command.register("context.add-note", () => {
26194
26318
  o() && c?.openNoteComposer();
26195
26319
  }), t.tool.register({
26196
26320
  id: "context.copy",
@@ -26199,7 +26323,7 @@ function DO(e = {}) {
26199
26323
  command: "context.copy",
26200
26324
  order: 70,
26201
26325
  toolbarMode: "always",
26202
- icon: xO,
26326
+ icon: wO,
26203
26327
  hidden: () => !a()
26204
26328
  }), t.tool.register({
26205
26329
  id: "context.copy-selection",
@@ -26208,7 +26332,7 @@ function DO(e = {}) {
26208
26332
  command: "context.copy-selection",
26209
26333
  order: 71,
26210
26334
  toolbarMode: "always",
26211
- icon: SO,
26335
+ icon: TO,
26212
26336
  hidden: () => !a(),
26213
26337
  disabled: () => !o()
26214
26338
  }), t.tool.register({
@@ -26218,7 +26342,7 @@ function DO(e = {}) {
26218
26342
  command: "context.add-note",
26219
26343
  order: 72,
26220
26344
  toolbarMode: "always",
26221
- icon: CO,
26345
+ icon: EO,
26222
26346
  hidden: () => !a(),
26223
26347
  disabled: () => !o()
26224
26348
  }), t.settings.register({
@@ -26234,14 +26358,14 @@ function DO(e = {}) {
26234
26358
  set: s
26235
26359
  }]
26236
26360
  }), t.lifecycle.onDispose(() => {
26237
- h(), _(), r.dispose();
26361
+ v(), n.ownerWindow.removeEventListener("mesurer:responsive-stage-change", C), b(), r.dispose();
26238
26362
  });
26239
26363
  }
26240
26364
  };
26241
26365
  }
26242
26366
  //#endregion
26243
26367
  //#region src/host-layer.ts
26244
- var OO = {
26368
+ var jO = {
26245
26369
  display: "block",
26246
26370
  position: "fixed",
26247
26371
  inset: "0",
@@ -26283,48 +26407,48 @@ var OO = {
26283
26407
  "letter-spacing": "normal",
26284
26408
  direction: "ltr"
26285
26409
  };
26286
- function kO(e) {
26287
- for (let [t, n] of Object.entries(OO)) e.style.setProperty(t, n, "important");
26410
+ function MO(e) {
26411
+ for (let [t, n] of Object.entries(jO)) e.style.setProperty(t, n, "important");
26288
26412
  }
26289
- function AO(e) {
26413
+ function NO(e) {
26290
26414
  return "popover" in e && "showPopover" in e && typeof e.showPopover == "function" && "hidePopover" in e && typeof e.hidePopover == "function";
26291
26415
  }
26292
- var jO = (e) => "newState" in e, MO = (e) => e.localName === "dialog";
26293
- function NO(e) {
26294
- if (!MO(e) || !e.open) return !1;
26416
+ var PO = (e) => "newState" in e, FO = (e) => e.localName === "dialog";
26417
+ function IO(e) {
26418
+ if (!FO(e) || !e.open) return !1;
26295
26419
  try {
26296
26420
  return e.matches(":modal");
26297
26421
  } catch {
26298
26422
  return !1;
26299
26423
  }
26300
26424
  }
26301
- function PO(e, t, n = !0) {
26302
- kO(e);
26425
+ function LO(e, t, n = !0) {
26426
+ MO(e);
26303
26427
  let r = e.ownerDocument, i = r.defaultView ?? window, a = t, o = !1, s = "fixed", c = !1, l = 0, u = [];
26304
- if (n && AO(e) && (e.popover = "manual"), t.append(e), n && AO(e)) try {
26428
+ if (n && NO(e) && (e.popover = "manual"), t.append(e), n && NO(e)) try {
26305
26429
  e.showPopover(), c = e.matches(":popover-open"), c && (s = "top-layer");
26306
26430
  } catch {
26307
26431
  e.removeAttribute("popover");
26308
26432
  }
26309
26433
  let d = () => {
26310
- if (!(!c || !AO(e))) try {
26434
+ if (!(!c || !NO(e))) try {
26311
26435
  e.matches(":popover-open") || e.showPopover();
26312
26436
  } catch {}
26313
26437
  }, f = (t) => {
26314
26438
  if (e.parentNode === t) return;
26315
- let n = c && AO(e) && e.matches(":popover-open");
26316
- if (n && AO(e)) try {
26439
+ let n = c && NO(e) && e.matches(":popover-open");
26440
+ if (n && NO(e)) try {
26317
26441
  e.hidePopover();
26318
26442
  } catch {}
26319
- t.append(e), kO(e), n && d();
26443
+ t.append(e), MO(e), n && d();
26320
26444
  }, p = () => {
26321
- u = u.filter((e) => e.isConnected && NO(e)), f(u.at(-1) ?? a);
26445
+ u = u.filter((e) => e.isConnected && IO(e)), f(u.at(-1) ?? a);
26322
26446
  }, m = (e) => {
26323
26447
  u = u.filter((t) => t !== e), u.push(e), p();
26324
26448
  }, h = (e) => {
26325
26449
  u = u.filter((t) => t !== e), p();
26326
26450
  }, g = () => {
26327
- if (!(o || !c || !AO(e))) try {
26451
+ if (!(o || !c || !NO(e))) try {
26328
26452
  e.matches(":popover-open") && e.hidePopover(), e.showPopover();
26329
26453
  } catch {}
26330
26454
  }, _ = () => {
@@ -26333,27 +26457,27 @@ function PO(e, t, n = !0) {
26333
26457
  }));
26334
26458
  }, v = (t) => {
26335
26459
  if (!c || t.target === e) return;
26336
- let n = jO(t) ? t.newState : void 0, r = t.target;
26460
+ let n = PO(t) ? t.newState : void 0, r = t.target;
26337
26461
  if (r instanceof i.Element) {
26338
- if (MO(r)) {
26339
- n === "open" && NO(r) ? (m(r), _()) : n === "closed" ? h(r) : n === "open" && _();
26462
+ if (FO(r)) {
26463
+ n === "open" && IO(r) ? (m(r), _()) : n === "closed" ? h(r) : n === "open" && _();
26340
26464
  return;
26341
26465
  }
26342
26466
  n === "open" && r.hasAttribute("popover") && _();
26343
26467
  }
26344
26468
  }, y = (e) => {
26345
26469
  let t = e.target;
26346
- t instanceof i.Element && MO(t) && h(t);
26470
+ t instanceof i.Element && FO(t) && h(t);
26347
26471
  }, b = () => {
26348
26472
  r.fullscreenElement && _();
26349
26473
  }, x = (e) => {
26350
- NO(e) && m(e);
26351
- for (let t of e.querySelectorAll("dialog")) NO(t) && m(t);
26474
+ IO(e) && m(e);
26475
+ for (let t of e.querySelectorAll("dialog")) IO(t) && m(t);
26352
26476
  }, S = new i.MutationObserver((e) => {
26353
26477
  if (c) for (let t of e) {
26354
26478
  if (t.type === "attributes") {
26355
26479
  let e = t.target;
26356
- e instanceof i.Element && MO(e) && (NO(e) ? m(e) : h(e));
26480
+ e instanceof i.Element && FO(e) && (IO(e) ? m(e) : h(e));
26357
26481
  }
26358
26482
  for (let e of t.addedNodes) e instanceof i.Element && x(e);
26359
26483
  u.some((e) => !e.isConnected) && p();
@@ -26369,7 +26493,7 @@ function PO(e, t, n = !0) {
26369
26493
  bringToFront: g,
26370
26494
  dispose() {
26371
26495
  if (!o) {
26372
- 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 && AO(e) && e.matches(":popover-open")) try {
26496
+ 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 && NO(e) && e.matches(":popover-open")) try {
26373
26497
  e.hidePopover();
26374
26498
  } catch {}
26375
26499
  u = [];
@@ -26379,7 +26503,7 @@ function PO(e, t, n = !0) {
26379
26503
  }
26380
26504
  //#endregion
26381
26505
  //#region src/plugins/codex/index.ts
26382
- var FO = "mesurer.codex", IO = "codex:v1", LO = "mesurer.plugin.before-disable", RO = 2e3, zO = 750, BO = 2e3, VO = 1800, HO = 2e3, UO = 12e4, WO = 10, GO = 5, KO = "http://127.0.0.1:47365", qO = "mesurer-codex", JO = 2, YO = [
26506
+ var RO = "mesurer.codex", zO = "codex:v1", BO = "mesurer.plugin.before-disable", VO = 2e3, HO = 750, UO = 2e3, WO = 1800, GO = 2e3, KO = 12e4, qO = 10, JO = 5, YO = "http://127.0.0.1:47365", XO = "mesurer-codex", ZO = 2, QO = [
26383
26507
  "thread-discovery-v1",
26384
26508
  "durable-queue-v1",
26385
26509
  "history-recovery-v2",
@@ -26387,33 +26511,33 @@ var FO = "mesurer.codex", IO = "codex:v1", LO = "mesurer.plugin.before-disable",
26387
26511
  "idle-safe-shutdown-v1",
26388
26512
  "nonterminal-retention-v1",
26389
26513
  "instance-binding-v1"
26390
- ], XO = 1500, ZO = 15e3, QO = 5e3, $O = [
26514
+ ], $O = 1500, ek = 15e3, tk = 5e3, nk = [
26391
26515
  "Implement the current human feedback from Mesurer in this project.",
26392
26516
  "Treat the rendered page as the source of truth, preserve unrelated Mesurer review state,",
26393
26517
  "and verify the affected UI in the live page with Mesurer before claiming completion."
26394
- ].join(" "), ek = {
26518
+ ].join(" "), rk = {
26395
26519
  viewBox: "0 0 256 256",
26396
26520
  paths: ["M224,48,32,120l88,32,32,88Z M120,152l104-104"]
26397
- }, tk = {
26521
+ }, ik = {
26398
26522
  viewBox: "0 0 256 256",
26399
26523
  paths: ["M72,32H184a8,8,0,0,1,0,16h-8v20.69a40,40,0,0,1-11.72,28.28L137.25,124l27.03,27.03A40,40,0,0,1,176,179.31V208h8a8,8,0,0,1,0,16H72a8,8,0,0,1,0-16h8V179.31a40,40,0,0,1,11.72-28.28L118.75,124,91.72,96.97A40,40,0,0,1,80,68.69V48H72a8,8,0,0,1,0-16Zm24,16V68.69a24,24,0,0,0,7.03,16.97L128,110.63l24.97-24.97A24,24,0,0,0,160,68.69V48Zm32,90.63-24.97,24.97A24,24,0,0,0,96,180.57V208h64V180.57a24,24,0,0,0-7.03-16.97Z"]
26400
- }, nk = {
26524
+ }, ak = {
26401
26525
  viewBox: "0 0 256 256",
26402
26526
  paths: ["M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z"]
26403
- }, rk = class extends Error {
26527
+ }, ok = class extends Error {
26404
26528
  issue;
26405
26529
  constructor(e, t) {
26406
26530
  super(t), this.issue = e, this.name = "BrowserBridgeConnectionError";
26407
26531
  }
26408
- }, ik = () => {
26532
+ }, sk = () => {
26409
26533
  try {
26410
26534
  let e = globalThis.location;
26411
26535
  return e?.origin ? `mesurer-codex-ui:v2:${e.origin}${e.pathname}` : null;
26412
26536
  } catch {
26413
26537
  return null;
26414
26538
  }
26415
- }, ak = () => {
26416
- let e = ik();
26539
+ }, ck = () => {
26540
+ let e = sk();
26417
26541
  if (!e) return null;
26418
26542
  try {
26419
26543
  let t = globalThis.sessionStorage?.getItem(e);
@@ -26439,35 +26563,35 @@ var FO = "mesurer.codex", IO = "codex:v1", LO = "mesurer.plugin.before-disable",
26439
26563
  } catch {
26440
26564
  return null;
26441
26565
  }
26442
- }, ok = (e) => {
26443
- let t = ik();
26566
+ }, lk = (e) => {
26567
+ let t = sk();
26444
26568
  if (t) try {
26445
26569
  globalThis.sessionStorage?.setItem(t, JSON.stringify(e));
26446
26570
  } catch {}
26447
- }, sk = (e) => {
26448
- let t = KO.endsWith("/") ? KO : `${KO}/`;
26571
+ }, uk = (e) => {
26572
+ let t = YO.endsWith("/") ? YO : `${YO}/`;
26449
26573
  return new URL(e, t).toString();
26450
- }, ck = (e) => {
26574
+ }, dk = (e) => {
26451
26575
  let t = e.bridge;
26452
- if (!t) throw new rk("port-conflict", "Another local service or an outdated Mesurer Codex Bridge is using port 47365. Mesurer will not send data to an unverified service.");
26453
- if (t.name !== qO) throw new rk("port-conflict", `Another local service is using port 47365 (${t.name ?? "unknown"}). Mesurer will not send Codex data to it.`);
26454
- if (t.protocol !== JO) throw new rk("version-mismatch", `Mesurer Codex Bridge is out of date (protocol ${t.protocol ?? "unknown"}; expected ${JO}). Restart the matching Mesurer Codex Bridge helper.`);
26455
- if (e.access?.allowed === !1) throw new rk("origin-denied", `Mesurer Codex Bridge does not allow this browser origin (${globalThis.location?.origin ?? "this page"}). Allow this origin when starting the bridge.`);
26456
- let n = new Set(Array.isArray(t.capabilities) ? t.capabilities : []), r = YO.filter((e) => !n.has(e));
26457
- if (r.length > 0) throw new rk("capability-mismatch", `Mesurer Codex Bridge is missing required capabilities: ${r.join(", ")}. Restart or update the matching helper.`);
26458
- if (!t.instanceId?.trim()) throw new rk("capability-mismatch", "Mesurer Codex Bridge did not provide an instance identity. Restart or update the matching helper.");
26459
- }, lk = (e) => e.includes("does not allow this browser origin") ? "origin-denied" : e.includes("out of date") ? "version-mismatch" : e.includes("missing required capabilities") || e.includes("did not provide an instance identity") ? "capability-mismatch" : e.includes("Another local service") ? "port-conflict" : e.includes("instance changed") ? "instance-changed" : e.includes("timed out") ? "timed-out" : e.includes("companion is unavailable") ? "not-running" : null, uk = (e) => e instanceof rk ? e.issue : e instanceof Error ? lk(e.message) : null, dk = async (e) => {
26576
+ if (!t) throw new ok("port-conflict", "Another local service or an outdated Mesurer Codex Bridge is using port 47365. Mesurer will not send data to an unverified service.");
26577
+ if (t.name !== XO) throw new ok("port-conflict", `Another local service is using port 47365 (${t.name ?? "unknown"}). Mesurer will not send Codex data to it.`);
26578
+ if (t.protocol !== ZO) throw new ok("version-mismatch", `Mesurer Codex Bridge is out of date (protocol ${t.protocol ?? "unknown"}; expected ${ZO}). Restart the matching Mesurer Codex Bridge helper.`);
26579
+ if (e.access?.allowed === !1) throw new ok("origin-denied", `Mesurer Codex Bridge does not allow this browser origin (${globalThis.location?.origin ?? "this page"}). Allow this origin when starting the bridge.`);
26580
+ let n = new Set(Array.isArray(t.capabilities) ? t.capabilities : []), r = QO.filter((e) => !n.has(e));
26581
+ if (r.length > 0) throw new ok("capability-mismatch", `Mesurer Codex Bridge is missing required capabilities: ${r.join(", ")}. Restart or update the matching helper.`);
26582
+ if (!t.instanceId?.trim()) throw new ok("capability-mismatch", "Mesurer Codex Bridge did not provide an instance identity. Restart or update the matching helper.");
26583
+ }, fk = (e) => e.includes("does not allow this browser origin") ? "origin-denied" : e.includes("out of date") ? "version-mismatch" : e.includes("missing required capabilities") || e.includes("did not provide an instance identity") ? "capability-mismatch" : e.includes("Another local service") ? "port-conflict" : e.includes("instance changed") ? "instance-changed" : e.includes("timed out") ? "timed-out" : e.includes("companion is unavailable") ? "not-running" : null, pk = (e) => e instanceof ok ? e.issue : e instanceof Error ? fk(e.message) : null, mk = async (e) => {
26460
26584
  let t, n;
26461
- if (e.action === "health") t = sk("health");
26585
+ if (e.action === "health") t = uk("health");
26462
26586
  else if (e.action === "threads") {
26463
26587
  let n = new URLSearchParams();
26464
- n.set("limit", String(e.limit ?? WO)), e.thread && n.set("thread", e.thread), t = `${sk("threads")}?${n.toString()}`;
26465
- } else if (e.action === "target") t = sk("target"), n = {
26588
+ n.set("limit", String(e.limit ?? qO)), e.thread && n.set("thread", e.thread), t = `${uk("threads")}?${n.toString()}`;
26589
+ } else if (e.action === "target") t = uk("target"), n = {
26466
26590
  method: "POST",
26467
26591
  headers: { "Content-Type": "application/json" },
26468
26592
  body: JSON.stringify({ thread: e.thread })
26469
26593
  };
26470
- else if (e.action === "queue") t = sk("send"), n = {
26594
+ else if (e.action === "queue") t = uk("send"), n = {
26471
26595
  method: "POST",
26472
26596
  headers: { "Content-Type": "application/json" },
26473
26597
  body: JSON.stringify({
@@ -26475,8 +26599,8 @@ var FO = "mesurer.codex", IO = "codex:v1", LO = "mesurer.plugin.before-disable",
26475
26599
  thread: e.thread
26476
26600
  })
26477
26601
  };
26478
- else if (e.action === "delivery") t = sk(`deliveries/${encodeURIComponent(String(e.deliveryId ?? ""))}`);
26479
- else if (e.action === "restore") t = sk("deliveries/restore"), n = {
26602
+ else if (e.action === "delivery") t = uk(`deliveries/${encodeURIComponent(String(e.deliveryId ?? ""))}`);
26603
+ else if (e.action === "restore") t = uk("deliveries/restore"), n = {
26480
26604
  method: "POST",
26481
26605
  headers: { "Content-Type": "application/json" },
26482
26606
  body: JSON.stringify({
@@ -26490,14 +26614,14 @@ var FO = "mesurer.codex", IO = "codex:v1", LO = "mesurer.plugin.before-disable",
26490
26614
  else throw Error(`Codex browser companion does not support ${e.action}.`);
26491
26615
  if (e.action !== "health") {
26492
26616
  let t = e.bridgeInstanceId?.trim();
26493
- if (!t) throw new rk("instance-changed", "Mesurer Codex Bridge instance changed before this request could be verified.");
26617
+ if (!t) throw new ok("instance-changed", "Mesurer Codex Bridge instance changed before this request could be verified.");
26494
26618
  let r = new Headers(n?.headers);
26495
26619
  r.set("X-Mesurer-Bridge-Instance", t), n = {
26496
26620
  ...n,
26497
26621
  headers: r
26498
26622
  };
26499
26623
  }
26500
- let r = new AbortController(), i = e.action === "health" || e.action === "threads" ? XO : ZO, a = globalThis.setTimeout(() => r.abort(), i);
26624
+ let r = new AbortController(), i = e.action === "health" || e.action === "threads" ? $O : ek, a = globalThis.setTimeout(() => r.abort(), i);
26501
26625
  try {
26502
26626
  let i = await fetch(t, {
26503
26627
  ...n,
@@ -26508,23 +26632,23 @@ var FO = "mesurer.codex", IO = "codex:v1", LO = "mesurer.plugin.before-disable",
26508
26632
  } catch {
26509
26633
  o = { error: a };
26510
26634
  }
26511
- if (e.action === "health" && ck(o), !i.ok || o.ok === !1) {
26512
- let e = o.error ?? `Mesurer Codex companion returned HTTP ${i.status}.`, t = lk(e);
26513
- throw t ? new rk(t, e) : Error(e);
26635
+ if (e.action === "health" && dk(o), !i.ok || o.ok === !1) {
26636
+ let e = o.error ?? `Mesurer Codex companion returned HTTP ${i.status}.`, t = fk(e);
26637
+ throw t ? new ok(t, e) : Error(e);
26514
26638
  }
26515
26639
  return o;
26516
26640
  } catch (e) {
26517
- throw e instanceof Error && e.name === "AbortError" ? new rk("timed-out", "Mesurer Codex companion timed out.") : e instanceof TypeError ? new rk("not-running", `Mesurer Codex companion is unavailable at ${KO}.`) : e;
26641
+ throw e instanceof Error && e.name === "AbortError" ? new ok("timed-out", "Mesurer Codex companion timed out.") : e instanceof TypeError ? new ok("not-running", `Mesurer Codex companion is unavailable at ${YO}.`) : e;
26518
26642
  } finally {
26519
26643
  globalThis.clearTimeout(a);
26520
26644
  }
26521
- }, fk = async (e) => {
26645
+ }, hk = async (e) => {
26522
26646
  let t = window.__MESURER_HOST__?.codexBridge;
26523
26647
  if (!t) throw Error("Codex native host bridge is unavailable.");
26524
26648
  let n = await t(e);
26525
26649
  if (n.ok === !1) throw Error(n.error ?? "Codex Bridge request failed.");
26526
26650
  return n;
26527
- }, pk = (e) => {
26651
+ }, gk = (e) => {
26528
26652
  let t = e.runtime;
26529
26653
  return !t || ![
26530
26654
  "shared",
@@ -26542,10 +26666,10 @@ var FO = "mesurer.codex", IO = "codex:v1", LO = "mesurer.plugin.before-disable",
26542
26666
  available: t.available === !0,
26543
26667
  reason: t.reason
26544
26668
  };
26545
- }, mk = (e) => ({
26669
+ }, _k = (e) => ({
26546
26670
  thread: e.thread?.trim() || null,
26547
26671
  threads: Array.isArray(e.threads) ? e.threads.filter((e) => e.trim().length > 0) : []
26548
- }), hk = (e) => {
26672
+ }), vk = (e) => {
26549
26673
  let t = e.deliveryId?.trim(), n = e.thread?.trim(), r = e.status;
26550
26674
  if (!t || !n || !r) throw Error("Codex Bridge returned an invalid delivery state.");
26551
26675
  let i = {
@@ -26557,7 +26681,7 @@ var FO = "mesurer.codex", IO = "codex:v1", LO = "mesurer.plugin.before-disable",
26557
26681
  updatedAt: Number.isFinite(e.updatedAt) ? Number(e.updatedAt) : 0
26558
26682
  };
26559
26683
  return e.queuedSubmissionId !== void 0 && (i.queuedSubmissionId = e.queuedSubmissionId?.trim() || null), e.clientUserMessageId !== void 0 && (i.clientUserMessageId = e.clientUserMessageId?.trim() || null), e.dispatch !== void 0 && (i.dispatch = e.dispatch), e.dispatchError !== void 0 && (i.dispatchError = e.dispatchError?.trim() || null), i;
26560
- }, gk = (e) => ({
26684
+ }, yk = (e) => ({
26561
26685
  thread: e.thread?.trim() || null,
26562
26686
  threads: Array.isArray(e.threadDetails) ? e.threadDetails.flatMap((e) => {
26563
26687
  let t = e.id?.trim() ?? "";
@@ -26569,7 +26693,7 @@ var FO = "mesurer.codex", IO = "codex:v1", LO = "mesurer.plugin.before-disable",
26569
26693
  }] : [];
26570
26694
  }) : [],
26571
26695
  hasMore: e.hasMore === !0
26572
- }), _k = async (e, t, n) => {
26696
+ }), bk = async (e, t, n) => {
26573
26697
  let r = t?.instruction?.trim() || n, i = await e.annotations(), a = t?.annotationIds, o = a ? a.flatMap((e) => {
26574
26698
  let t = i.find((t) => t.id === e);
26575
26699
  return t ? [t] : [];
@@ -26592,18 +26716,18 @@ var FO = "mesurer.codex", IO = "codex:v1", LO = "mesurer.plugin.before-disable",
26592
26716
  ])
26593
26717
  ].join("\n").trimEnd()
26594
26718
  };
26595
- }, vk = (e) => e.length > 16 ? `${e.slice(0, 8)}…${e.slice(-4)}` : e, yk = (e, t = 42) => e.length > t ? `${e.slice(0, t - 1)}…` : e, bk = (e) => uk(e) !== null || e instanceof Error && (e.message === "Codex Bridge is unavailable in this host." || e.message.includes("Codex Bridge lease") || e.message.includes("Mesurer Codex Bridge"));
26596
- function xk(e = {}) {
26597
- let t = e.instruction?.trim() || $O, n = e.ui ?? !0, r = e.clearCompletedAnnotations ?? !0;
26719
+ }, xk = (e) => e.length > 16 ? `${e.slice(0, 8)}…${e.slice(-4)}` : e, Sk = (e, t = 42) => e.length > t ? `${e.slice(0, t - 1)}…` : e, Ck = (e) => pk(e) !== null || e instanceof Error && (e.message === "Codex Bridge is unavailable in this host." || e.message.includes("Codex Bridge lease") || e.message.includes("Mesurer Codex Bridge"));
26720
+ function wk(e = {}) {
26721
+ let t = e.instruction?.trim() || nk, n = e.ui ?? !0, r = e.clearCompletedAnnotations ?? !0;
26598
26722
  return {
26599
- id: FO,
26600
- version: VD,
26601
- requires: [_O],
26602
- provides: [IO],
26723
+ id: RO,
26724
+ version: WD,
26725
+ requires: [bO],
26726
+ provides: [zO],
26603
26727
  async setup(e) {
26604
- let i = e.service.get(_O);
26728
+ let i = e.service.get(bO);
26605
26729
  if (!i) throw Error("Mesurer Codex plugin requires context() from mesurer-solid/plugins.");
26606
- let a = n ? ak() : null, o = "unknown", s = null, c = !1, l = a?.originThread ?? null, u = a?.selectedThread ?? a?.originThread ?? null, d = !1, f = null, p = [], m = [], h = !1, g = GO, _, v = "", y = null, b = a?.delivery ? {
26730
+ let a = n ? ck() : null, o = "unknown", s = null, c = !1, l = a?.originThread ?? null, u = a?.selectedThread ?? a?.originThread ?? null, d = !1, f = null, p = [], m = [], h = !1, g = JO, _, v = "", y = null, b = a?.delivery ? {
26607
26731
  id: a.delivery.id,
26608
26732
  thread: a.delivery.thread,
26609
26733
  status: a.delivery.status,
@@ -26616,22 +26740,22 @@ function xk(e = {}) {
26616
26740
  if (!k) try {
26617
26741
  let t = e.action === "queue" || e.action === "target" || e.action === "delivery" || e.action === "restore";
26618
26742
  if (e.action === "health") {
26619
- let t = await dk(e);
26743
+ let t = await mk(e);
26620
26744
  return D = t.bridge?.instanceId?.trim() || null, E = Date.now(), t;
26621
26745
  }
26622
- return (!D || t || Date.now() - E >= QO) && (D = (await dk({
26746
+ return (!D || t || Date.now() - E >= tk) && (D = (await mk({
26623
26747
  action: "health",
26624
26748
  thread: u ?? l ?? void 0
26625
- })).bridge?.instanceId?.trim() || null, E = Date.now()), await dk({
26749
+ })).bridge?.instanceId?.trim() || null, E = Date.now()), await mk({
26626
26750
  ...e,
26627
26751
  bridgeInstanceId: D ?? void 0
26628
26752
  });
26629
26753
  } catch (e) {
26630
26754
  throw E = 0, D = null, e;
26631
26755
  }
26632
- if (e.action === "activate" || e.action === "runtime") return fk(e);
26756
+ if (e.action === "activate" || e.action === "runtime") return hk(e);
26633
26757
  if (!T) throw Error("Codex Bridge lease is not active for this plugin.");
26634
- return fk({
26758
+ return hk({
26635
26759
  ...e,
26636
26760
  leaseId: T
26637
26761
  });
@@ -26639,7 +26763,7 @@ function xk(e = {}) {
26639
26763
  if (!k) return;
26640
26764
  let e = T;
26641
26765
  if (e) {
26642
- if ((await fk({
26766
+ if ((await hk({
26643
26767
  action: "deactivate",
26644
26768
  leaseId: e
26645
26769
  })).released !== !0) throw Error("Codex Bridge did not confirm lease release.");
@@ -26647,13 +26771,13 @@ function xk(e = {}) {
26647
26771
  }
26648
26772
  };
26649
26773
  if (k) {
26650
- let e = await fk({
26774
+ let e = await hk({
26651
26775
  action: "activate",
26652
26776
  thread: u ?? l ?? void 0
26653
26777
  }), t = e.leaseId?.trim();
26654
26778
  if (!t) throw Error("Codex Bridge did not return an activation lease.");
26655
- T = t, o = "available", s = pk(e);
26656
- let n = mk(e);
26779
+ T = t, o = "available", s = gk(e);
26780
+ let n = _k(e);
26657
26781
  c = !0, f = n.thread, p = n.threads;
26658
26782
  }
26659
26783
  e.lifecycle.onDispose(() => {
@@ -26661,12 +26785,12 @@ function xk(e = {}) {
26661
26785
  let t = e instanceof Error ? e.message : String(e);
26662
26786
  console.error(`[Mesurer] Failed to release Codex host lease: ${t}`);
26663
26787
  });
26664
- }), e.hook.on(LO, async (e) => {
26788
+ }), e.hook.on(BO, async (e) => {
26665
26789
  e === "mesurer.codex" && await j();
26666
26790
  });
26667
26791
  let M = async () => {
26668
26792
  if (!k) return null;
26669
- let e = pk(await A({ action: "runtime" }));
26793
+ let e = gk(await A({ action: "runtime" }));
26670
26794
  if (!e) throw Error("Codex Bridge returned an invalid runtime state.");
26671
26795
  return s = e, e;
26672
26796
  }, N = async () => {
@@ -26674,8 +26798,8 @@ function xk(e = {}) {
26674
26798
  action: "health",
26675
26799
  thread: u ?? l ?? void 0
26676
26800
  });
26677
- return s = pk(e) ?? s, mk(e);
26678
- }, P = N, F = async (e) => hk(await A({
26801
+ return s = gk(e) ?? s, _k(e);
26802
+ }, P = N, F = async (e) => vk(await A({
26679
26803
  action: "delivery",
26680
26804
  deliveryId: e
26681
26805
  })), I = async (e) => {
@@ -26687,17 +26811,17 @@ function xk(e = {}) {
26687
26811
  };
26688
26812
  if (e.queuedSubmissionId && (n.queuedSubmissionId = e.queuedSubmissionId), e.clientUserMessageId) n.clientUserMessageId = e.clientUserMessageId;
26689
26813
  else if (e.annotationIds.length > 0) {
26690
- let r = await _k(i, { annotationIds: e.annotationIds }, t);
26814
+ let r = await bk(i, { annotationIds: e.annotationIds }, t);
26691
26815
  if (!(r.annotationIds.length === e.annotationIds.length && r.annotationIds.every((t, n) => t === e.annotationIds[n]))) throw Error("Cannot safely restore this Codex delivery because one or more saved Mesurer annotations are unavailable.");
26692
26816
  n.message = r.message;
26693
26817
  }
26694
- return hk(await A(n));
26818
+ return vk(await A(n));
26695
26819
  }, L = async (e = {}) => {
26696
26820
  let t = {
26697
26821
  action: "threads",
26698
- limit: e.limit ?? WO
26822
+ limit: e.limit ?? qO
26699
26823
  }, n = e.thread?.trim();
26700
- return n && (t.thread = n), gk(await A(t));
26824
+ return n && (t.thread = n), yk(await A(t));
26701
26825
  }, R = () => u ?? l ?? (d ? null : f), z = () => {
26702
26826
  if (!n) return;
26703
26827
  let e = b?.id && (b.status === "queued" || b.status === "working" || b.status === "completed" || b.status === "interrupted" || b.status === "failed") ? {
@@ -26710,7 +26834,7 @@ function xk(e = {}) {
26710
26834
  dispatch: b.dispatch,
26711
26835
  dispatchError: b.dispatchError
26712
26836
  } : null;
26713
- ok({
26837
+ lk({
26714
26838
  version: 1,
26715
26839
  originThread: l,
26716
26840
  selectedThread: u,
@@ -26728,12 +26852,12 @@ function xk(e = {}) {
26728
26852
  "queueing",
26729
26853
  "queued",
26730
26854
  "working"
26731
- ].includes(b.status) ? tk : b.status === "completed" ? nk : ek : ek, W = () => {
26855
+ ].includes(b.status) ? ik : b.status === "completed" ? ak : rk : rk, W = () => {
26732
26856
  let e = [], t = /* @__PURE__ */ new Set(), n = (n) => {
26733
26857
  t.has(n.id) || (t.add(n.id), e.push(n));
26734
26858
  }, r = (e) => ({
26735
26859
  id: e,
26736
- title: `Codex ${vk(e)}`,
26860
+ title: `Codex ${xk(e)}`,
26737
26861
  updatedAt: null,
26738
26862
  connected: !0
26739
26863
  });
@@ -26771,22 +26895,22 @@ function xk(e = {}) {
26771
26895
  let t = e.id === l ? "Current · " : e.connected ? "Loaded · " : "", r = b?.thread === e.id ? ` · ${ee(b.status)}` : "";
26772
26896
  return {
26773
26897
  id: `codex.thread.${e.id}`,
26774
- label: `${t}${yk(e.title)}${r}`,
26898
+ label: `${t}${Sk(e.title)}${r}`,
26775
26899
  checked: () => n === e.id,
26776
26900
  disabled: () => V(),
26777
26901
  run() {
26778
26902
  V() || (B(e.id, !l), G());
26779
26903
  }
26780
26904
  };
26781
- })), g < WO && (e.length > g || h) && r.push({
26905
+ })), g < qO && (e.length > g || h) && r.push({
26782
26906
  id: "codex.thread.show-more",
26783
26907
  label: "Show 5 more…",
26784
26908
  run() {
26785
- g = WO, G();
26909
+ g = qO, G();
26786
26910
  }
26787
26911
  }), b?.queuedSubmissionId && b.status === "queued" && (b.dispatch === "desktop-opened" || b.dispatch === "desktop-wake-failed") && r.push({
26788
26912
  id: "codex.delivery.receipt",
26789
- label: `Receipt · ${vk(b.queuedSubmissionId)}`,
26913
+ label: `Receipt · ${xk(b.queuedSubmissionId)}`,
26790
26914
  disabled: () => !0,
26791
26915
  run: () => void 0
26792
26916
  }), r;
@@ -26823,7 +26947,7 @@ function xk(e = {}) {
26823
26947
  }, ae = async (e) => {
26824
26948
  if (o !== "available") return;
26825
26949
  let t = await L({
26826
- limit: WO,
26950
+ limit: qO,
26827
26951
  thread: e ?? void 0
26828
26952
  });
26829
26953
  m = t.threads, h = t.hasMore, p = t.threads.filter((e) => e.connected).map((e) => e.id), f = t.thread;
@@ -26835,7 +26959,7 @@ function xk(e = {}) {
26835
26959
  let t = u ?? l;
26836
26960
  t && p.includes(t) ? d = !1 : p.length === 1 ? B(p[0], !0) : d = !0, !d && t && z();
26837
26961
  } catch (e) {
26838
- throw o = "unavailable", O = k ? null : uk(e) ?? "unavailable", s = await M().catch(() => s), e;
26962
+ throw o = "unavailable", O = k ? null : pk(e) ?? "unavailable", s = await M().catch(() => s), e;
26839
26963
  } finally {
26840
26964
  y = null, G();
26841
26965
  }
@@ -26845,7 +26969,7 @@ function xk(e = {}) {
26845
26969
  }, se = () => {
26846
26970
  S && globalThis.clearTimeout(S), S = globalThis.setTimeout(() => {
26847
26971
  S = 0, b?.status === "completed" && (b = null, z(), G());
26848
- }, VO);
26972
+ }, WO);
26849
26973
  }, ce = async (e) => {
26850
26974
  if (!(!b || b.id !== e.id)) {
26851
26975
  if (b = {
@@ -26874,7 +26998,7 @@ function xk(e = {}) {
26874
26998
  if (t || n.length > 0) {
26875
26999
  z(), G(), x = globalThis.setTimeout(() => {
26876
27000
  x = 0, le(e.id);
26877
- }, zO);
27001
+ }, HO);
26878
27002
  return;
26879
27003
  }
26880
27004
  }
@@ -26884,14 +27008,14 @@ function xk(e = {}) {
26884
27008
  if (e.status === "interrupted") {
26885
27009
  z(), G();
26886
27010
  let t = e.updatedAt > 0 ? e.updatedAt : Date.now();
26887
- Date.now() - t < UO && (x = globalThis.setTimeout(() => {
27011
+ Date.now() - t < KO && (x = globalThis.setTimeout(() => {
26888
27012
  x = 0, le(e.id);
26889
- }, HO));
27013
+ }, GO));
26890
27014
  return;
26891
27015
  }
26892
27016
  G(), x = globalThis.setTimeout(() => {
26893
27017
  x = 0, le(e.id);
26894
- }, BO);
27018
+ }, UO);
26895
27019
  }
26896
27020
  }, le = async (e) => {
26897
27021
  if (!(w || b?.id !== e)) try {
@@ -26915,7 +27039,7 @@ function xk(e = {}) {
26915
27039
  b = {
26916
27040
  ...b,
26917
27041
  status: "failed"
26918
- }, z(), bk(n) && (o = "unavailable"), G();
27042
+ }, z(), Ck(n) && (o = "unavailable"), G();
26919
27043
  }
26920
27044
  }, ue = {
26921
27045
  health: N,
@@ -26927,11 +27051,11 @@ function xk(e = {}) {
26927
27051
  let n = await A({
26928
27052
  action: "target",
26929
27053
  thread: t
26930
- }), r = mk(n);
26931
- return s = pk(n) ?? s, B(t, !l), f = r.thread, p = r.threads, o = "available", c = !0, G(), r;
27054
+ }), r = _k(n);
27055
+ return s = gk(n) ?? s, B(t, !l), f = r.thread, p = r.threads, o = "available", c = !0, G(), r;
26932
27056
  },
26933
27057
  async queue(e) {
26934
- let r = await _k(i, e, t), a = e?.thread?.trim(), s = a || (n ? R() : null);
27058
+ let r = await bk(i, e, t), a = e?.thread?.trim(), s = a || (n ? R() : null);
26935
27059
  if (n && !a && (d || !s)) throw Error("Choose a Codex thread before queueing feedback.");
26936
27060
  let c = { message: r.message };
26937
27061
  s && (c.thread = s);
@@ -26951,14 +27075,14 @@ function xk(e = {}) {
26951
27075
  };
26952
27076
  return e.queuedSubmissionId !== void 0 && (n.queuedSubmissionId = e.queuedSubmissionId?.trim() || null), e.clientUserMessageId !== void 0 && (n.clientUserMessageId = e.clientUserMessageId?.trim() || null), e.dispatch !== void 0 && (n.dispatch = e.dispatch), e.dispatchError !== void 0 && (n.dispatchError = e.dispatchError?.trim() || null), n;
26953
27077
  } catch (e) {
26954
- throw n && bk(e) && (o = "unavailable", O = k ? null : uk(e) ?? "unavailable", G()), e;
27078
+ throw n && Ck(e) && (o = "unavailable", O = k ? null : pk(e) ?? "unavailable", G()), e;
26955
27079
  }
26956
27080
  },
26957
27081
  send(e) {
26958
27082
  return ue.queue(e);
26959
27083
  }
26960
27084
  };
26961
- e.service.provide(IO, ue);
27085
+ e.service.provide(zO, ue);
26962
27086
  let de = async () => {
26963
27087
  if (!(C || V())) {
26964
27088
  if (b?.status === "failed" && b.id) {
@@ -26996,9 +27120,9 @@ function xk(e = {}) {
26996
27120
  updatedAt: 0
26997
27121
  }) : x = globalThis.setTimeout(() => {
26998
27122
  x = 0, le(e.deliveryId);
26999
- }, zO) : S = globalThis.setTimeout(() => {
27123
+ }, HO) : S = globalThis.setTimeout(() => {
27000
27124
  S = 0, b?.id === null && b?.status === "queued" && (b = null, z(), G());
27001
- }, VO);
27125
+ }, WO);
27002
27126
  } catch (e) {
27003
27127
  b = null, z(), G();
27004
27128
  let t = e instanceof Error ? e.message : String(e);
@@ -27027,7 +27151,7 @@ function xk(e = {}) {
27027
27151
  }, 0));
27028
27152
  let t = globalThis.setInterval(() => {
27029
27153
  k && !c || te(!0).catch(() => void 0);
27030
- }, k ? RO : QO);
27154
+ }, k ? VO : tk);
27031
27155
  e.lifecycle.onDispose(() => {
27032
27156
  w = !0, oe(), globalThis.clearInterval(t), _?.dispose(), _ = void 0;
27033
27157
  });
@@ -27037,64 +27161,64 @@ function xk(e = {}) {
27037
27161
  }
27038
27162
  //#endregion
27039
27163
  //#region src/recording.ts
27040
- var Sk = uE, Ck = (e = {}) => ({
27041
- ...jE(e),
27042
- version: VD
27043
- }), wk = WE, Tk = (e = {}) => ({
27044
- ...uD(e),
27045
- version: VD
27046
- }), Ek = () => globalThis.window?.__MESURER_HOST__?.codexBridge !== void 0, Dk = [
27164
+ var Tk = pE, Ek = (e = {}) => ({
27165
+ ...PE(e),
27166
+ version: WD
27167
+ }), Dk = qE, Ok = (e = {}) => ({
27168
+ ...pD(e),
27169
+ version: WD
27170
+ }), kk = () => globalThis.window?.__MESURER_HOST__?.codexBridge !== void 0, Ak = [
27047
27171
  {
27048
- id: gO,
27172
+ id: yO,
27049
27173
  label: "Context",
27050
27174
  order: 30,
27051
- create: DO,
27175
+ create: AO,
27052
27176
  settingsIds: ["context"],
27053
27177
  hiddenSettingsControlIds: ["ui"]
27054
27178
  },
27055
27179
  {
27056
- id: HD,
27180
+ id: GD,
27057
27181
  label: "Edit",
27058
27182
  order: 35,
27059
- create: WD,
27183
+ create: qD,
27060
27184
  settingsIds: ["arrange"]
27061
27185
  },
27062
27186
  {
27063
- id: pO,
27187
+ id: gO,
27064
27188
  label: "Layout Guides",
27065
27189
  order: 38,
27066
- create: hO
27190
+ create: vO
27067
27191
  },
27068
27192
  {
27069
- id: wk,
27193
+ id: Dk,
27070
27194
  label: "Screenshot",
27071
27195
  order: 40,
27072
- create: Tk,
27196
+ create: Ok,
27073
27197
  settingsIds: ["screenshot"],
27074
27198
  hiddenSettingsControlIds: ["tool"]
27075
27199
  },
27076
27200
  {
27077
- id: Sk,
27201
+ id: Tk,
27078
27202
  label: "Recording",
27079
27203
  order: 42,
27080
- create: Ck,
27204
+ create: Ek,
27081
27205
  settingsIds: ["recording"],
27082
27206
  hiddenSettingsControlIds: ["tool"]
27083
27207
  },
27084
27208
  {
27085
- id: FO,
27209
+ id: RO,
27086
27210
  label: "Codex",
27087
27211
  order: 45,
27088
- create: xk
27212
+ create: wk
27089
27213
  }
27090
- ], Ok = (e) => {
27091
- let t = e !== void 0, n = new Map((e ?? []).map((e) => [e.id, e])), r = new Set(Dk.map((e) => e.id)), i = Dk.map((e) => {
27214
+ ], jk = (e) => {
27215
+ let t = e !== void 0, n = new Map((e ?? []).map((e) => [e.id, e])), r = new Set(Ak.map((e) => e.id)), i = Ak.map((e) => {
27092
27216
  let r = n.get(e.id);
27093
27217
  return {
27094
27218
  ...e,
27095
27219
  settingsIds: e.settingsIds ? [...e.settingsIds] : void 0,
27096
27220
  hiddenSettingsControlIds: e.hiddenSettingsControlIds ? [...e.hiddenSettingsControlIds] : void 0,
27097
- enabled: t ? !!r : e.id === "mesurer.codex" ? Ek() : e.enabled !== !1,
27221
+ enabled: t ? !!r : e.id === "mesurer.codex" ? kk() : e.enabled !== !1,
27098
27222
  create: r ? () => r : e.create
27099
27223
  };
27100
27224
  });
@@ -27105,7 +27229,7 @@ var Sk = uE, Ck = (e = {}) => ({
27105
27229
  create: () => n
27106
27230
  });
27107
27231
  return i;
27108
- }, kk = {
27232
+ }, Mk = {
27109
27233
  select: "select",
27110
27234
  xray: "xray",
27111
27235
  colorPicker: "color-picker",
@@ -27116,7 +27240,7 @@ var Sk = uE, Ck = (e = {}) => ({
27116
27240
  distance: "distance",
27117
27241
  settings: "settings"
27118
27242
  };
27119
- function Ak(e = {}) {
27243
+ function Nk(e = {}) {
27120
27244
  if (!("document" in globalThis)) throw Error("mountMesurer() requires a browser or Electron renderer document.");
27121
27245
  let { target: t = document.body, isolate: n = !0, shadowMode: r = "open", topLayer: i = !0, agent: a = !1, signal: o, onPluginHost: s, onPluginsReady: c, plugins: l, excludeBuiltins: u, excludePlugins: d, ...f } = e;
27122
27246
  if (o?.aborted) throw o.reason ?? new DOMException("Mesurer mount aborted.", "AbortError");
@@ -27209,7 +27333,7 @@ function Ak(e = {}) {
27209
27333
  } catch {}
27210
27334
  let h = p.createElement("div");
27211
27335
  h.dataset.mesurerIsland = "true";
27212
- let g = PO(h, t, i), _ = h, v = h, y = h;
27336
+ let g = LO(h, t, i), _ = h, v = h, y = h;
27213
27337
  if (n) {
27214
27338
  let e = h.attachShadow({ mode: r });
27215
27339
  v = p.createElement("div"), v.dataset.mesurerIslandMount = "true", e.append(v), _ = e, y = e;
@@ -27220,7 +27344,7 @@ function Ak(e = {}) {
27220
27344
  C = e, w = t;
27221
27345
  });
27222
27346
  D.catch(() => void 0), O.catch(() => void 0);
27223
- let k = async () => (await (b ? Promise.resolve(b) : D), O), A = a === !0 ? {} : a === !1 ? null : a, j = BD({
27347
+ let k = async () => (await (b ? Promise.resolve(b) : D), O), A = a === !0 ? {} : a === !1 ? null : a, j = UD({
27224
27348
  ownerDocument: p,
27225
27349
  root: A?.root ?? (t.nodeType === 11 ? t : p),
27226
27350
  getPluginHost: () => b,
@@ -27232,12 +27356,12 @@ function Ak(e = {}) {
27232
27356
  return t;
27233
27357
  }, N = async () => {
27234
27358
  await j.ready();
27235
- let e = b?.service.get(_O);
27359
+ let e = b?.service.get(bO);
27236
27360
  if (!e) throw Error("Mesurer Context is disabled. Enable it in Settings or include context() in plugins.");
27237
27361
  return e;
27238
27362
  }, P = async () => {
27239
27363
  await j.ready();
27240
- let e = b?.service.get(GD);
27364
+ let e = b?.service.get(JD);
27241
27365
  if (!e) throw Error("Mesurer Edit is disabled. Enable it in Settings or include edit() in plugins.");
27242
27366
  return e;
27243
27367
  }, F = async (e) => (await N()).context(e), I = async (e) => (await N()).contextText(e), L = async (e) => (await N()).copyContext(e), R = async (e) => (await N()).select(e), z = async () => (await N()).annotations(), B = async (e) => (await N()).review(e), V = async (e) => (await N()).capturePlan(e), ee = async () => (await N()).prepareCapture(), H = async () => (await N()).finishCapture(), U = async () => (await P()).intents(), W = async (e) => {
@@ -27248,7 +27372,7 @@ function Ak(e = {}) {
27248
27372
  (await P()).show(e, t);
27249
27373
  }, ne = async (e, t) => (await P()).capturePlan(e, t), re = async (e, t) => (await P()).review(e, t), ie = () => j.textEdits(), G = (e) => j.textEdit(e), ae = Object.assign(j, {
27250
27374
  capabilities: () => {
27251
- let e = !!b?.service.get(_O);
27375
+ let e = !!b?.service.get(bO);
27252
27376
  return {
27253
27377
  protocol: "mesurer.agent/v1",
27254
27378
  contextSchema: "mesurer.context/v1",
@@ -27258,8 +27382,8 @@ function Ak(e = {}) {
27258
27382
  annotations: e,
27259
27383
  review: e,
27260
27384
  capturePlan: e,
27261
- arrange: !!b?.service.get(GD),
27262
- textEdit: !!b?.service.get(RD)
27385
+ arrange: !!b?.service.get(JD),
27386
+ textEdit: !!b?.service.get(VD)
27263
27387
  }
27264
27388
  };
27265
27389
  },
@@ -27278,10 +27402,10 @@ function Ak(e = {}) {
27278
27402
  reviewArrange: re
27279
27403
  }), oe = {
27280
27404
  ...f,
27281
- version: VD,
27282
- plugins: Ok(l),
27283
- excludePlugins: u ? u.map((e) => kk[e]) : [...d ?? []]
27284
- }, se = No(() => yo(KC, oo(oe, {
27405
+ version: WD,
27406
+ plugins: jk(l),
27407
+ excludePlugins: u ? u.map((e) => Mk[e]) : [...d ?? []]
27408
+ }, se = No(() => yo(YC, oo(oe, {
27285
27409
  portalTarget: y,
27286
27410
  pageTarget: t,
27287
27411
  onPluginHost: (e) => {
@@ -27351,26 +27475,26 @@ function Ak(e = {}) {
27351
27475
  }
27352
27476
  //#endregion
27353
27477
  //#region src/inject.ts
27354
- var jk = globalThis.__MESURER_CONFIG__ ?? {}, Mk = (() => {
27478
+ var Pk = globalThis.__MESURER_CONFIG__ ?? {}, Fk = (() => {
27355
27479
  try {
27356
27480
  return !!window.frameElement?.hasAttribute("data-mesurer-responsive-frame");
27357
27481
  } catch {
27358
27482
  return !1;
27359
27483
  }
27360
- })(), { target: Nk, globalName: Pk = "__MESURER__", reuseExisting: Fk = !0, recoverDisconnected: Ik = !1, ...Lk } = jk, Rk = globalThis.__MESURER_INSTANCE__, zk = !Mk && Fk && Rk?.element.isConnected ? Rk : void 0;
27361
- function Bk() {
27362
- let e = Nk ? document.querySelector(Nk) : document.body;
27363
- if (!e) throw Error(`Mesurer injection target not found: ${Nk}`);
27364
- return Mk || globalThis.__MESURER_INSTANCE__?.dispose(), Ak({
27365
- ...Lk,
27484
+ })(), { target: Ik, globalName: Lk = "__MESURER__", reuseExisting: Rk = !0, recoverDisconnected: zk = !1, ...Bk } = Pk, Vk = globalThis.__MESURER_INSTANCE__, Hk = !Fk && Rk && Vk?.element.isConnected ? Vk : void 0;
27485
+ function Uk() {
27486
+ let e = Ik ? document.querySelector(Ik) : document.body;
27487
+ if (!e) throw Error(`Mesurer injection target not found: ${Ik}`);
27488
+ return Fk || globalThis.__MESURER_INSTANCE__?.dispose(), Nk({
27489
+ ...Bk,
27366
27490
  target: e,
27367
27491
  agent: {
27368
- globalName: Pk,
27492
+ globalName: Lk,
27369
27493
  root: document
27370
27494
  }
27371
27495
  });
27372
27496
  }
27373
- var Vk = (e) => {
27497
+ var Wk = (e) => {
27374
27498
  globalThis.__MESURER_INJECT_RECOVERY__?.stop();
27375
27499
  let t = !1, n = !1, r = () => {
27376
27500
  if (n = !1, t || globalThis.__MESURER_INSTANCE__?.element.isConnected) return;
@@ -27389,7 +27513,7 @@ var Vk = (e) => {
27389
27513
  }), globalThis.__MESURER_INJECT_RECOVERY__ = { stop() {
27390
27514
  t = !0, i.disconnect();
27391
27515
  } };
27392
- }, Hk = zk ?? Bk();
27393
- Mk || (globalThis.__MESURER_INSTANCE__ = Hk), Mk || globalThis.__MESURER_INJECT_RECOVERY__?.stop(), Mk || (globalThis.__MESURER_INJECT_RECOVERY__ = void 0), Ik && !Mk && Vk(Bk), Mk || await Hk.ready;
27516
+ }, Gk = Hk ?? Uk();
27517
+ Fk || (globalThis.__MESURER_INSTANCE__ = Gk), Fk || globalThis.__MESURER_INJECT_RECOVERY__?.stop(), Fk || (globalThis.__MESURER_INJECT_RECOVERY__ = void 0), zk && !Fk && Wk(Uk), Fk || await Gk.ready;
27394
27518
  //#endregion
27395
- export { Hk as mesurer };
27519
+ export { Gk as mesurer };