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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -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.7", 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,36 +25855,36 @@ 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
25885
  //#endregion
25768
25886
  //#region ../mesurer-core/dist/events.js
25769
- function $D() {
25887
+ function nO() {
25770
25888
  let e = /* @__PURE__ */ new Map();
25771
25889
  return {
25772
25890
  on(t, n) {
@@ -25784,12 +25902,12 @@ function $D() {
25784
25902
  }
25785
25903
  };
25786
25904
  }
25787
- ({ ...ZD }), { ...QD };
25905
+ ({ ...eO }), { ...tO };
25788
25906
  //#endregion
25789
25907
  //#region ../mesurer-core/dist/plugins.js
25790
- var eO = 50;
25791
- function tO() {
25792
- let e = 1, t = 0, n = $D(), r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Map(), p = [], m = [], h = (e, t) => {
25908
+ var rO = 50;
25909
+ function iO() {
25910
+ let e = 1, t = 0, n = nO(), r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Map(), p = [], m = [], h = (e, t) => {
25793
25911
  n.emit("changed", {
25794
25912
  pluginId: e,
25795
25913
  reason: t
@@ -25852,15 +25970,15 @@ function tO() {
25852
25970
  }
25853
25971
  if (o && s) {
25854
25972
  let e = y("history");
25855
- x(s, e) || (p.push(s), p.length > eO && p.shift(), m.length = 0);
25973
+ x(s, e) || (p.push(s), p.length > rO && p.shift(), m.length = 0);
25856
25974
  }
25857
25975
  return l;
25858
25976
  }, w = () => {
25859
25977
  let e = p.pop();
25860
- return e ? (m.push(y("history")), m.length > eO && m.shift(), b(e, "history"), h(void 0, "history"), !0) : !1;
25978
+ return e ? (m.push(y("history")), m.length > rO && m.shift(), b(e, "history"), h(void 0, "history"), !0) : !1;
25861
25979
  }, T = () => {
25862
25980
  let e = m.pop();
25863
- return e ? (p.push(y("history")), p.length > eO && p.shift(), b(e, "history"), h(void 0, "history"), !0) : !1;
25981
+ return e ? (p.push(y("history")), p.length > rO && p.shift(), b(e, "history"), h(void 0, "history"), !0) : !1;
25864
25982
  }, E = async (e, t) => {
25865
25983
  for (let n of [...l.values()].filter((t) => t.name === e)) await n.handler(t);
25866
25984
  }, D = (e) => [...u.values()].reverse().find((t) => t.id === e)?.value, O = {
@@ -26017,8 +26135,8 @@ function tO() {
26017
26135
  }
26018
26136
  //#endregion
26019
26137
  //#region ../mesurer-core/dist/runtime.js
26020
- async function nO(e = {}) {
26021
- let t = tO();
26138
+ async function aO(e = {}) {
26139
+ let t = iO();
26022
26140
  try {
26023
26141
  for (let n of e.plugins ?? []) await t.load(n);
26024
26142
  return t;
@@ -26028,25 +26146,29 @@ async function nO(e = {}) {
26028
26146
  }
26029
26147
  //#endregion
26030
26148
  //#region src/context.ts
26031
- var rO = 10, iO = (e) => ({
26149
+ var oO = 10, sO = (e) => ({
26032
26150
  left: e.left,
26033
26151
  top: e.top,
26034
26152
  width: e.width,
26035
26153
  height: e.height
26036
- }), aO = (e) => {
26154
+ }), cO = (e) => {
26037
26155
  let t = /* @__PURE__ */ new Set(), n = [];
26038
26156
  for (let r of e) !r?.isConnected || t.has(r) || (t.add(r), n.push(r));
26039
26157
  return n;
26040
- }, oO = (e) => e.crypto?.randomUUID?.() ?? `${Date.now()}-${Math.random().toString(36).slice(2)}`;
26041
- function sO(e) {
26158
+ }, lO = (e) => e.crypto?.randomUUID?.() ?? `${Date.now()}-${Math.random().toString(36).slice(2)}`;
26159
+ function uO(e) {
26042
26160
  let { runtime: t, ownerDocument: n, ownerWindow: r } = e, i = e.request ?? { scope: "workspace" }, a = t.snapshot();
26043
26161
  if (!a) throw Error("Mesurer workspace is not ready yet.");
26044
- let o = (e) => iO(t.elementRect?.(e) ?? e.getBoundingClientRect()), s = [], c = [], l = { kind: "workspace" }, u = /* @__PURE__ */ new Map();
26162
+ let o = (e) => sO(t.elementRect?.(e) ?? e.getBoundingClientRect()), s = [], c = [], l = { kind: "workspace" }, u = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Map(), f;
26045
26163
  if ("annotation" in i) {
26046
26164
  let e = t.annotation(i.annotation);
26047
26165
  if (!e) throw Error(`Mesurer annotation not found: ${i.annotation}`);
26048
- for (let t of e.resolvedTargets) t.element?.isConnected && u.set(t.element, t.target.id);
26049
- s = aO(e.resolvedTargets.map((e) => e.element));
26166
+ e.anchor.kind === "elements" && (f = e.anchor.targets.find((e) => e.viewport)?.viewport);
26167
+ for (let t of e.resolvedTargets) t.element?.isConnected && (u.set(t.element, t.target.id), t.target.viewport && d.set(t.element, {
26168
+ viewport: { ...t.target.viewport },
26169
+ domPath: t.target.domPath?.map((e) => ({ ...e })) ?? []
26170
+ }));
26171
+ s = cO(e.resolvedTargets.map((e) => e.element));
26050
26172
  let n = t.annotationRect(e.id);
26051
26173
  n && (c = [n]);
26052
26174
  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";
@@ -26058,15 +26180,15 @@ function sO(e) {
26058
26180
  };
26059
26181
  } else if (i.scope === "selection") {
26060
26182
  let e = t.currentSelection();
26061
- if (s = aO(e.elements), !s.length && !e.region) throw Error("Mesurer has no current selection.");
26183
+ if (s = cO(e.elements), !s.length && !e.region) throw Error("Mesurer has no current selection.");
26062
26184
  c = e.region ? [e.region] : s.map(o), l = { kind: "selection" };
26063
- } else s = aO([
26185
+ } else s = cO([
26064
26186
  ...t.currentSelection().elements,
26065
26187
  ...a.measurements.map((e) => e.elementRef),
26066
26188
  a.activeMeasurement?.elementRef,
26067
26189
  ...a.heldDistances.flatMap((e) => [e.elementRefA, e.elementRefB])
26068
26190
  ]);
26069
- let d = l.kind === "workspace" ? [] : c.length ? c : s.map(o), f = XD({
26191
+ let p = l.kind === "workspace" ? [] : c.length ? c : s.map(o), m = $D({
26070
26192
  workspace: {
26071
26193
  guides: a.guides,
26072
26194
  measurements: a.measurements,
@@ -26076,55 +26198,55 @@ function sO(e) {
26076
26198
  scope: l.kind === "workspace" ? { kind: "workspace" } : {
26077
26199
  kind: "scoped",
26078
26200
  elements: s,
26079
- regions: d
26201
+ regions: p
26080
26202
  },
26081
- guideTolerance: a.guideRelevanceTolerance ?? rO
26082
- }), p = f.measurements, m = f.distances, h = f.guides, g = aO([
26203
+ guideTolerance: a.guideRelevanceTolerance ?? oO
26204
+ }), h = m.measurements, g = m.distances, _ = m.guides, v = cO([
26083
26205
  ...s,
26084
- ...p.map((e) => e.elementRef),
26085
- ...m.flatMap((e) => [e.elementRefA, e.elementRefB])
26086
- ]), _ = /* @__PURE__ */ new Map(), v = new Set(u.values()), y = 1, b = () => {
26087
- let e = `target-${y++}`;
26088
- for (; v.has(e);) e = `target-${y++}`;
26089
- return v.add(e), e;
26090
- }, x = g.map((e) => {
26091
- let t = u.get(e) ?? b(), n = o(e), r = LD(e);
26092
- return _.set(e, t), {
26093
- ref: t,
26206
+ ...h.map((e) => e.elementRef),
26207
+ ...g.flatMap((e) => [e.elementRefA, e.elementRefB])
26208
+ ]), y = /* @__PURE__ */ new Map(), b = new Set(u.values()), x = 1, S = () => {
26209
+ let e = `target-${x++}`;
26210
+ for (; b.has(e);) e = `target-${x++}`;
26211
+ return b.add(e), e;
26212
+ }, C = v.map((e) => {
26213
+ let n = u.get(e) ?? S(), r = o(e), i = BD(e);
26214
+ return y.set(e, n), {
26215
+ ref: n,
26216
+ ...d.get(e) ?? t.targetScope?.(e),
26094
26217
  inspection: {
26095
- ...r,
26218
+ ...i,
26096
26219
  rect: {
26097
- ...n,
26098
- right: n.left + n.width,
26099
- bottom: n.top + n.height,
26100
- x: n.left,
26101
- y: n.top
26220
+ ...r,
26221
+ right: r.left + r.width,
26222
+ bottom: r.top + r.height,
26223
+ x: r.left,
26224
+ y: r.top
26102
26225
  }
26103
26226
  }
26104
26227
  };
26105
- }), S = p.map((e) => {
26228
+ }), w = h.map((e) => {
26106
26229
  let t = {
26107
26230
  id: e.id,
26108
- rect: iO(e.rect),
26231
+ rect: sO(e.rect),
26109
26232
  deltaX: e.deltaX,
26110
26233
  deltaY: e.deltaY
26111
26234
  };
26112
26235
  e.snapped !== void 0 && (t.snapped = e.snapped);
26113
- let n = e.elementRef ? _.get(e.elementRef) : void 0;
26236
+ let n = e.elementRef ? y.get(e.elementRef) : void 0;
26114
26237
  return n && (t.targetRef = n), t;
26115
- }), C = m.map((e) => {
26238
+ }), T = g.map((e) => {
26116
26239
  let t = {
26117
26240
  id: e.id,
26118
- rectA: iO(e.rectA),
26119
- rectB: iO(e.rectB),
26241
+ rectA: sO(e.rectA),
26242
+ rectB: sO(e.rectB),
26120
26243
  horizontal: e.horizontal ? { ...e.horizontal } : null,
26121
26244
  vertical: e.vertical ? { ...e.vertical } : null
26122
- }, n = e.elementRefA ? _.get(e.elementRefA) : void 0, r = e.elementRefB ? _.get(e.elementRefB) : void 0;
26245
+ }, n = e.elementRefA ? y.get(e.elementRefA) : void 0, r = e.elementRefB ? y.get(e.elementRefB) : void 0;
26123
26246
  return n && (t.targetARef = n), r && (t.targetBRef = r), t;
26124
- });
26125
- return {
26247
+ }), E = {
26126
26248
  schema: "mesurer.context/v1",
26127
- id: oO(r),
26249
+ id: lO(r),
26128
26250
  createdAt: (/* @__PURE__ */ new Date()).toISOString(),
26129
26251
  scope: l,
26130
26252
  page: {
@@ -26139,62 +26261,63 @@ function sO(e) {
26139
26261
  scrollY: r.scrollY
26140
26262
  },
26141
26263
  coordinateSpace: "viewport-css-px",
26142
- regions: l.kind === "workspace" ? [] : c.map(iO),
26264
+ regions: l.kind === "workspace" ? [] : c.map(sO),
26143
26265
  visualState: {
26144
26266
  rulersVisible: a.rulersVisible,
26145
26267
  xrayVisible: a.xrayVisible
26146
26268
  },
26147
- targets: x,
26269
+ targets: C,
26148
26270
  visualContext: {
26149
- guides: h,
26271
+ guides: _,
26150
26272
  layoutGuides: (e.layoutGuides ?? []).map((e) => ({ ...e })),
26151
- measurements: S,
26152
- distances: C
26273
+ measurements: w,
26274
+ distances: T
26153
26275
  }
26154
26276
  };
26277
+ return f ??= C.find((e) => e.viewport)?.viewport, f && (E.previewViewport = { ...f }), E;
26155
26278
  }
26156
- var cO = (e) => `${Math.round(e * 100) / 100}px`, lO = (e) => `x=${cO(e.left)} y=${cO(e.top)} w=${cO(e.width)} h=${cO(e.height)}`;
26157
- function uO(e) {
26279
+ var dO = (e) => `${Math.round(e * 100) / 100}px`, fO = (e) => `x=${dO(e.left)} y=${dO(e.top)} w=${dO(e.width)} h=${dO(e.height)}`;
26280
+ function pO(e) {
26158
26281
  let t = [
26159
26282
  "Mesurer visual context",
26160
26283
  "",
26161
26284
  `Page: ${e.page.url}`,
26162
26285
  `Viewport: ${e.viewport.width} × ${e.viewport.height} CSS px; scroll x=${e.viewport.scrollX} y=${e.viewport.scrollY}`
26163
26286
  ];
26164
- 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}: ${lO(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) {
26287
+ 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}: ${fO(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) {
26165
26288
  t.push("", "Targets");
26166
26289
  for (let n of e.targets) {
26167
26290
  let e = n.inspection;
26168
- t.push(`[${n.ref}] ${e.selector}`, ` rect: ${lO(e.rect)}`, ` margin: ${cO(e.margin.top)} ${cO(e.margin.right)} ${cO(e.margin.bottom)} ${cO(e.margin.left)}`, ` padding: ${cO(e.padding.top)} ${cO(e.padding.right)} ${cO(e.padding.bottom)} ${cO(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)}`);
26291
+ 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: ${fO(e.rect)}`, ` margin: ${dO(e.margin.top)} ${dO(e.margin.right)} ${dO(e.margin.bottom)} ${dO(e.margin.left)}`, ` padding: ${dO(e.padding.top)} ${dO(e.padding.right)} ${dO(e.padding.bottom)} ${dO(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)}`);
26169
26292
  }
26170
26293
  }
26171
26294
  if (e.visualContext.guides.length) {
26172
26295
  t.push("", "Relevant guides");
26173
- for (let n of e.visualContext.guides) t.push(`- ${n.orientation} ${n.orientation === "vertical" ? "x" : "y"}=${cO(n.position)}`);
26296
+ for (let n of e.visualContext.guides) t.push(`- ${n.orientation} ${n.orientation === "vertical" ? "x" : "y"}=${dO(n.position)}`);
26174
26297
  }
26175
26298
  if (e.visualContext.layoutGuides.length) {
26176
26299
  t.push("", "Layout guides");
26177
26300
  for (let n of e.visualContext.layoutGuides) {
26178
26301
  if (!n.visible) continue;
26179
- let e = n.kind === "grid" ? `grid ${cO(n.size)}` : `${n.count} ${n.kind}; gutter=${cO(n.gutter)}; offset=${cO(n.offset)}; align=${n.align}`;
26302
+ let e = n.kind === "grid" ? `grid ${dO(n.size)}` : `${n.count} ${n.kind}; gutter=${dO(n.gutter)}; offset=${dO(n.offset)}; align=${n.align}`;
26180
26303
  t.push(`- ${e}; color=${n.color}; opacity=${Math.round(n.opacity * 100)}%`);
26181
26304
  }
26182
26305
  }
26183
26306
  if (e.visualContext.measurements.length) {
26184
26307
  t.push("", "Relevant measurements");
26185
- for (let n of e.visualContext.measurements) t.push(`- ${n.targetRef ? `${n.targetRef}: ` : ""}${lO(n.rect)}; delta=${cO(n.deltaX)} × ${cO(n.deltaY)}`);
26308
+ for (let n of e.visualContext.measurements) t.push(`- ${n.targetRef ? `${n.targetRef}: ` : ""}${fO(n.rect)}; delta=${dO(n.deltaX)} × ${dO(n.deltaY)}`);
26186
26309
  }
26187
26310
  if (e.visualContext.distances.length) {
26188
26311
  t.push("", "Relevant distances");
26189
26312
  for (let n of e.visualContext.distances) {
26190
- let e = [n.targetARef, n.targetBRef].filter(Boolean).join(" → "), r = [n.horizontal ? `horizontal=${cO(n.horizontal.value)}` : null, n.vertical ? `vertical=${cO(n.vertical.value)}` : null].filter(Boolean).join("; ");
26313
+ let e = [n.targetARef, n.targetBRef].filter(Boolean).join(" → "), r = [n.horizontal ? `horizontal=${dO(n.horizontal.value)}` : null, n.vertical ? `vertical=${dO(n.vertical.value)}` : null].filter(Boolean).join("; ");
26191
26314
  t.push(`- ${e ? `${e}: ` : ""}${r || "overlapping"}`);
26192
26315
  }
26193
26316
  }
26194
26317
  return t.join("\n").trimEnd();
26195
26318
  }
26196
- function dO(e) {
26197
- let t = qD([
26319
+ function mO(e) {
26320
+ let t = XD([
26198
26321
  ...e.regions,
26199
26322
  ...e.targets.map((e) => e.inspection.rect),
26200
26323
  ...e.visualContext.measurements.map((e) => e.rect),
@@ -26216,15 +26339,16 @@ function dO(e) {
26216
26339
  }
26217
26340
  });
26218
26341
  }
26219
- return {
26342
+ let r = {
26220
26343
  schema: "mesurer.capture/v1",
26221
26344
  contextId: e.id,
26222
26345
  chrome: "hide",
26223
26346
  evidence: "show",
26224
26347
  captures: n
26225
26348
  };
26349
+ return e.previewViewport && (r.previewViewport = { ...e.previewViewport }), r;
26226
26350
  }
26227
- var fO = (e, t, n, r, i) => {
26351
+ var hO = (e, t, n, r, i) => {
26228
26352
  !Number.isFinite(r) || !Number.isFinite(i) || Math.abs(r - i) < .01 || e.push({
26229
26353
  kind: t,
26230
26354
  label: n,
@@ -26233,16 +26357,16 @@ var fO = (e, t, n, r, i) => {
26233
26357
  delta: i - r,
26234
26358
  unit: "px"
26235
26359
  });
26236
- }, pO = (e, t, n, r) => e.push({
26360
+ }, gO = (e, t, n, r) => e.push({
26237
26361
  kind: "missing",
26238
26362
  evidence: t,
26239
26363
  id: n,
26240
26364
  label: r
26241
- }), mO = (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;
26242
- function hO(e) {
26365
+ }), _O = (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;
26366
+ function vO(e) {
26243
26367
  let t = e.runtime.annotation(e.annotationId);
26244
26368
  if (!t) throw Error(`Mesurer annotation not found: ${e.annotationId}`);
26245
- let n = sO({
26369
+ let n = uO({
26246
26370
  runtime: e.runtime,
26247
26371
  ownerDocument: e.ownerDocument,
26248
26372
  ownerWindow: e.ownerWindow,
@@ -26252,42 +26376,42 @@ function hO(e) {
26252
26376
  if (n.scope.kind !== "annotation") throw Error("Mesurer annotation context invariant failed.");
26253
26377
  let r = e.runtime.snapshot();
26254
26378
  if (!r) throw Error("Mesurer workspace is not ready yet.");
26255
- let i = YD({
26379
+ let i = QD({
26256
26380
  measurements: r.measurements,
26257
26381
  activeMeasurement: r.activeMeasurement
26258
26382
  }), a = [];
26259
26383
  for (let e of t.baseline.targets) {
26260
26384
  let t = n.targets.find((t) => t.ref === e.id);
26261
26385
  if (!t) {
26262
- pO(a, "target", e.id, e.selector);
26386
+ gO(a, "target", e.id, e.selector);
26263
26387
  continue;
26264
26388
  }
26265
- fO(a, "target-rect", `${t.inspection.selector} left`, e.rect.left, t.inspection.rect.left), fO(a, "target-rect", `${t.inspection.selector} top`, e.rect.top, t.inspection.rect.top), fO(a, "target-rect", `${t.inspection.selector} width`, e.rect.width, t.inspection.rect.width), fO(a, "target-rect", `${t.inspection.selector} height`, e.rect.height, t.inspection.rect.height);
26389
+ hO(a, "target-rect", `${t.inspection.selector} left`, e.rect.left, t.inspection.rect.left), hO(a, "target-rect", `${t.inspection.selector} top`, e.rect.top, t.inspection.rect.top), hO(a, "target-rect", `${t.inspection.selector} width`, e.rect.width, t.inspection.rect.width), hO(a, "target-rect", `${t.inspection.selector} height`, e.rect.height, t.inspection.rect.height);
26266
26390
  }
26267
26391
  for (let e of t.baseline.guides) {
26268
26392
  let t = n.visualContext.guides.find((t) => t.id === e.id) ?? r.guides.find((t) => t.id === e.id);
26269
26393
  if (!t) {
26270
- pO(a, "guide", e.id, `${e.orientation} guide ${e.id}`);
26394
+ gO(a, "guide", e.id, `${e.orientation} guide ${e.id}`);
26271
26395
  continue;
26272
26396
  }
26273
- fO(a, "guide", `${e.orientation} guide ${e.id}`, e.position, t.position);
26397
+ hO(a, "guide", `${e.orientation} guide ${e.id}`, e.position, t.position);
26274
26398
  }
26275
26399
  for (let e of t.baseline.measurements) {
26276
26400
  let r = n.visualContext.measurements.find((t) => t.id === e.id) ?? i.find((t) => t.id === e.id);
26277
26401
  if (!r) {
26278
- let r = t.baseline.targets.find((t) => mO(t.rect, e.rect));
26279
- r && n.targets.some((e) => e.ref === r.id) || pO(a, "measurement", e.id, e.id);
26402
+ let r = t.baseline.targets.find((t) => _O(t.rect, e.rect));
26403
+ r && n.targets.some((e) => e.ref === r.id) || gO(a, "measurement", e.id, e.id);
26280
26404
  continue;
26281
26405
  }
26282
- fO(a, "measurement", `${e.id} width`, e.rect.width, r.rect.width), fO(a, "measurement", `${e.id} height`, e.rect.height, r.rect.height);
26406
+ hO(a, "measurement", `${e.id} width`, e.rect.width, r.rect.width), hO(a, "measurement", `${e.id} height`, e.rect.height, r.rect.height);
26283
26407
  }
26284
26408
  for (let e of t.baseline.distances) {
26285
26409
  let t = n.visualContext.distances.find((t) => t.id === e.id) ?? r.heldDistances.find((t) => t.id === e.id);
26286
26410
  if (!t) {
26287
- pO(a, "distance", e.id, e.id);
26411
+ gO(a, "distance", e.id, e.id);
26288
26412
  continue;
26289
26413
  }
26290
- e.horizontal && t.horizontal ? fO(a, "distance", `${e.id} horizontal`, e.horizontal.value, t.horizontal.value) : e.horizontal && !t.horizontal && pO(a, "distance", e.id, `${e.id} horizontal`), e.vertical && t.vertical ? fO(a, "distance", `${e.id} vertical`, e.vertical.value, t.vertical.value) : e.vertical && !t.vertical && pO(a, "distance", e.id, `${e.id} vertical`);
26414
+ e.horizontal && t.horizontal ? hO(a, "distance", `${e.id} horizontal`, e.horizontal.value, t.horizontal.value) : e.horizontal && !t.horizontal && gO(a, "distance", e.id, `${e.id} horizontal`), e.vertical && t.vertical ? hO(a, "distance", `${e.id} vertical`, e.vertical.value, t.vertical.value) : e.vertical && !t.vertical && gO(a, "distance", e.id, `${e.id} vertical`);
26291
26415
  }
26292
26416
  return {
26293
26417
  schema: "mesurer.review/v1",
@@ -26299,7 +26423,7 @@ function hO(e) {
26299
26423
  changes: a
26300
26424
  };
26301
26425
  }
26302
- async function gO(e, t, n) {
26426
+ async function yO(e, t, n) {
26303
26427
  try {
26304
26428
  if (t.navigator.clipboard?.writeText) {
26305
26429
  await t.navigator.clipboard.writeText(n);
@@ -26313,43 +26437,43 @@ async function gO(e, t, n) {
26313
26437
  }
26314
26438
  //#endregion
26315
26439
  //#region src/layout-guides.ts
26316
- var _O = Fw, vO = Iw, yO = () => ({
26317
- ...cT(),
26318
- version: VD
26319
- }), bO = "mesurer.context", xO = "context:v1", SO = "mesurer.context.settings", CO = "context.ui", wO = "data-mesurer-direct-text-edit-active", TO = {
26440
+ var bO = Rw, xO = zw, SO = () => ({
26441
+ ...dT(),
26442
+ version: WD
26443
+ }), CO = "mesurer.context", wO = "context:v1", TO = "mesurer.context.settings", EO = "context.ui", DO = "data-mesurer-direct-text-edit-active", OO = {
26320
26444
  viewBox: "0 0 256 256",
26321
26445
  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"]
26322
- }, EO = {
26446
+ }, kO = {
26323
26447
  viewBox: "0 0 256 256",
26324
26448
  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"]
26325
- }, DO = {
26449
+ }, AO = {
26326
26450
  viewBox: "0 0 256 256",
26327
26451
  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"]
26328
- }, OO = async (e, t, n = 1) => {
26452
+ }, jO = async (e, t, n = 1) => {
26329
26453
  await e.fonts?.ready;
26330
26454
  for (let e = 0; e < Math.max(1, n); e += 1) await new Promise((e) => t.requestAnimationFrame(() => e()));
26331
- }, kO = (e, t, n, r) => {
26332
- let i = async (i) => sO({
26455
+ }, MO = (e, t, n, r) => {
26456
+ let i = async (i) => uO({
26333
26457
  runtime: e,
26334
26458
  ownerDocument: t,
26335
26459
  ownerWindow: n,
26336
26460
  request: i,
26337
26461
  layoutGuides: r()
26338
- }), a = async (e) => uO(await i(e));
26462
+ }), a = async (e) => pO(await i(e));
26339
26463
  return {
26340
26464
  context: i,
26341
26465
  contextText: a,
26342
- copyContext: async (e) => gO(t, n, await a(e)),
26466
+ copyContext: async (e) => yO(t, n, await a(e)),
26343
26467
  select: async (r) => {
26344
26468
  let a = Array.isArray(r) ? [...r] : [String(r)];
26345
- return e.select(a), await OO(t, n), i({ scope: "selection" });
26469
+ return e.select(a), await jO(t, n), i({ scope: "selection" });
26346
26470
  },
26347
26471
  annotations: async () => e.annotations(),
26348
26472
  removeAnnotation: async (r) => {
26349
- e.removeAnnotation(r), await OO(t, n);
26473
+ e.removeAnnotation(r), await jO(t, n);
26350
26474
  },
26351
26475
  review: async (i) => {
26352
- if (await OO(t, n), i) return hO({
26476
+ if (await jO(t, n), i) return vO({
26353
26477
  runtime: e,
26354
26478
  ownerDocument: t,
26355
26479
  ownerWindow: n,
@@ -26357,7 +26481,7 @@ var _O = Fw, vO = Iw, yO = () => ({
26357
26481
  layoutGuides: r()
26358
26482
  });
26359
26483
  let a = r();
26360
- return e.annotations().map((r) => hO({
26484
+ return e.annotations().map((r) => vO({
26361
26485
  runtime: e,
26362
26486
  ownerDocument: t,
26363
26487
  ownerWindow: n,
@@ -26365,76 +26489,67 @@ var _O = Fw, vO = Iw, yO = () => ({
26365
26489
  layoutGuides: a
26366
26490
  }));
26367
26491
  },
26368
- capturePlan: async (e) => dO(await i(e)),
26492
+ capturePlan: async (e) => mO(await i(e)),
26369
26493
  prepareCapture: async () => {
26370
- e.prepareCapture(), await OO(t, n);
26494
+ e.prepareCapture(), await jO(t, n);
26371
26495
  },
26372
26496
  finishCapture: async () => {
26373
- e.finishCapture(), await OO(t, n);
26497
+ e.finishCapture(), await jO(t, n);
26374
26498
  }
26375
26499
  };
26376
- }, AO = (e) => {
26377
- let t = e.currentSelection();
26378
- return (t.elements.length > 0 || t.region !== null) && !t.elements.some((e) => {
26379
- let t = e.ownerDocument;
26380
- for (; t;) {
26381
- let e = t.defaultView?.frameElement ?? null;
26382
- if (!e) return !1;
26383
- if (e.hasAttribute("data-mesurer-responsive-frame")) return !0;
26384
- t = e.ownerDocument;
26385
- }
26386
- return !1;
26387
- });
26500
+ }, NO = (e, t) => {
26501
+ let n = e.currentSelection();
26502
+ return n.elements.length > 0 || n.region !== null && !t?.querySelector("[data-mesurer-responsive-stage]");
26388
26503
  };
26389
- function jO(e = {}) {
26504
+ function PO(e = {}) {
26390
26505
  return {
26391
- id: bO,
26392
- version: VD,
26506
+ id: CO,
26507
+ version: WD,
26393
26508
  requires: ["runtime:solid"],
26394
- provides: [xO],
26509
+ provides: [wO],
26395
26510
  setup(t) {
26396
26511
  let n = t.service.get("runtime:solid");
26397
26512
  if (!n) throw Error("Mesurer context plugin requires the renderer runtime service.");
26398
- let r = n.createWorkspaceRuntime(bO), i = kO(r, n.ownerDocument, n.ownerWindow, () => t.service.get(vO)?.list() ?? []);
26399
- t.service.provide(xO, i), t.state.register({
26400
- id: SO,
26513
+ let r = n.createWorkspaceRuntime(CO), i = MO(r, n.ownerDocument, n.ownerWindow, () => t.service.get(xO)?.list() ?? []);
26514
+ t.service.provide(wO, i), t.state.register({
26515
+ id: TO,
26401
26516
  initial: { ui: e.ui ?? !0 },
26402
26517
  persist: !0
26403
26518
  }), t.state.register({
26404
- id: CO,
26405
- initial: { hasSelection: AO(r) }
26519
+ id: EO,
26520
+ initial: { hasSelection: NO(r, n.rendererRoot) }
26406
26521
  });
26407
- let a = () => t.state.get("mesurer.context.settings")?.ui ?? !0, o = () => AO(r), s = (e) => {
26408
- t.state.update(SO, (t) => ({
26522
+ let a = () => t.state.get("mesurer.context.settings")?.ui ?? !0, o = () => NO(r, n.rendererRoot), s = (e) => {
26523
+ t.state.update(TO, (t) => ({
26409
26524
  ...t,
26410
26525
  ui: e
26411
26526
  }));
26412
- }, c = null, l = null, u = null, d = null, f = r.currentSelection(), p = {
26413
- elements: [...f.elements],
26414
- region: f.region ? { ...f.region } : null
26415
- }, 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(() => {
26416
- let e = r.currentSelection(), n = !m(p, e);
26417
- p = {
26527
+ }, c = null, l = null, u = null, d = null, [f, p] = K(!!n.rendererRoot?.querySelector("[data-mesurer-responsive-stage]")), m = null, h = r.currentSelection(), g = {
26528
+ elements: [...h.elements],
26529
+ region: h.region ? { ...h.region } : null
26530
+ }, _ = (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(() => {
26531
+ let e = r.currentSelection(), i = !_(g, e);
26532
+ g = {
26418
26533
  elements: [...e.elements],
26419
26534
  region: e.region ? { ...e.region } : null
26420
- }, r.selectGestureActive() ? c?.abandonNoteComposer() : n && c?.closeNoteComposer();
26421
- let i = AO(r);
26422
- i !== (t.state.get(CO)?.hasSelection ?? !1) && t.state.update(CO, () => ({ hasSelection: i }));
26535
+ }, r.selectGestureActive() ? c?.abandonNoteComposer() : i && c?.closeNoteComposer();
26536
+ let a = NO(r, n.rendererRoot);
26537
+ a !== (t.state.get(EO)?.hasSelection ?? !1) && t.state.update(EO, () => ({ hasSelection: a }));
26423
26538
  });
26424
26539
  t.command.register("context.copy", () => i.copyContext()), t.command.register("context.copy-selection", () => i.copyContext({ scope: "selection" }));
26425
- let g = () => {
26540
+ let y = () => {
26426
26541
  let e = u?.element;
26427
- e && (n.rendererRoot?.hasAttribute(wO) ? e.setAttribute(wO, "true") : e.removeAttribute(wO));
26428
- }, _ = () => {
26542
+ e && (n.rendererRoot?.hasAttribute(DO) ? e.setAttribute(DO, "true") : e.removeAttribute(DO));
26543
+ }, b = () => {
26429
26544
  d?.disconnect(), d = null, c = null, l?.(), l = null, u?.dispose(), u = null;
26430
- }, v = () => {
26545
+ }, x = () => {
26431
26546
  if (u) return;
26432
- if (u = dw(n), u.element.dataset.mesurerLayer = "evidence", u.element.dataset.mesurerContextRoot = "true", n.rendererRoot) {
26433
- let e = new n.ownerWindow.MutationObserver(g);
26547
+ if (u = mw(n), m = u.element.parentNode, u.element.dataset.mesurerLayer = "evidence", u.element.dataset.mesurerContextRoot = "true", n.rendererRoot) {
26548
+ let e = new n.ownerWindow.MutationObserver(y);
26434
26549
  d = e, e.observe(n.rendererRoot, {
26435
26550
  attributes: !0,
26436
- attributeFilter: [wO]
26437
- }), g();
26551
+ attributeFilter: [DO]
26552
+ }), y();
26438
26553
  }
26439
26554
  let e = {
26440
26555
  runtime: r,
@@ -26442,16 +26557,25 @@ function jO(e = {}) {
26442
26557
  onController: (e) => {
26443
26558
  c = e;
26444
26559
  },
26445
- coordinateSpace: "document",
26560
+ get coordinateSpace() {
26561
+ return f() ? "viewport" : "document";
26562
+ },
26446
26563
  rendererRoot: n.rendererRoot
26447
26564
  };
26448
- l = No(() => yo(sw, oo(e, { get ownerWindow() {
26565
+ l = No(() => yo(uw, oo(e, { get ownerWindow() {
26449
26566
  return n.ownerWindow;
26450
- } })), u.element);
26451
- }, y = () => {
26452
- a() ? v() : _();
26567
+ } })), u.element), un(f) && n.rendererRoot && (n.rendererRoot.append(u.element), u.element.style.zIndex = "90");
26568
+ }, S = () => {
26569
+ a() ? x() : b();
26570
+ };
26571
+ S(), t.state.subscribe(S);
26572
+ let C = () => {
26573
+ let e = !!n.rendererRoot?.querySelector("[data-mesurer-responsive-stage]");
26574
+ if (e === un(f) || (p(e), !u)) return;
26575
+ let t = e ? n.rendererRoot : m;
26576
+ t && u.element.parentNode !== t && t.appendChild(u.element), u.element.style.zIndex = e ? "90" : "", un(() => c?.closeNoteComposer());
26453
26577
  };
26454
- y(), t.state.subscribe(y), t.command.register("context.add-note", () => {
26578
+ n.ownerWindow.addEventListener("mesurer:responsive-stage-change", C), t.command.register("context.add-note", () => {
26455
26579
  o() && c?.openNoteComposer();
26456
26580
  }), t.tool.register({
26457
26581
  id: "context.copy",
@@ -26460,7 +26584,7 @@ function jO(e = {}) {
26460
26584
  command: "context.copy",
26461
26585
  order: 70,
26462
26586
  toolbarMode: "always",
26463
- icon: TO,
26587
+ icon: OO,
26464
26588
  hidden: () => !a()
26465
26589
  }), t.tool.register({
26466
26590
  id: "context.copy-selection",
@@ -26469,7 +26593,7 @@ function jO(e = {}) {
26469
26593
  command: "context.copy-selection",
26470
26594
  order: 71,
26471
26595
  toolbarMode: "always",
26472
- icon: EO,
26596
+ icon: kO,
26473
26597
  hidden: () => !a(),
26474
26598
  disabled: () => !o()
26475
26599
  }), t.tool.register({
@@ -26479,7 +26603,7 @@ function jO(e = {}) {
26479
26603
  command: "context.add-note",
26480
26604
  order: 72,
26481
26605
  toolbarMode: "always",
26482
- icon: DO,
26606
+ icon: AO,
26483
26607
  hidden: () => !a(),
26484
26608
  disabled: () => !o()
26485
26609
  }), t.settings.register({
@@ -26495,14 +26619,14 @@ function jO(e = {}) {
26495
26619
  set: s
26496
26620
  }]
26497
26621
  }), t.lifecycle.onDispose(() => {
26498
- h(), _(), r.dispose();
26622
+ v(), n.ownerWindow.removeEventListener("mesurer:responsive-stage-change", C), b(), r.dispose();
26499
26623
  });
26500
26624
  }
26501
26625
  };
26502
26626
  }
26503
26627
  //#endregion
26504
26628
  //#region src/host-layer.ts
26505
- var MO = {
26629
+ var FO = {
26506
26630
  display: "block",
26507
26631
  position: "fixed",
26508
26632
  inset: "0",
@@ -26544,48 +26668,48 @@ var MO = {
26544
26668
  "letter-spacing": "normal",
26545
26669
  direction: "ltr"
26546
26670
  };
26547
- function NO(e) {
26548
- for (let [t, n] of Object.entries(MO)) e.style.setProperty(t, n, "important");
26671
+ function IO(e) {
26672
+ for (let [t, n] of Object.entries(FO)) e.style.setProperty(t, n, "important");
26549
26673
  }
26550
- function PO(e) {
26674
+ function LO(e) {
26551
26675
  return "popover" in e && "showPopover" in e && typeof e.showPopover == "function" && "hidePopover" in e && typeof e.hidePopover == "function";
26552
26676
  }
26553
- var FO = (e) => "newState" in e, IO = (e) => e.localName === "dialog";
26554
- function LO(e) {
26555
- if (!IO(e) || !e.open) return !1;
26677
+ var RO = (e) => "newState" in e, zO = (e) => e.localName === "dialog";
26678
+ function BO(e) {
26679
+ if (!zO(e) || !e.open) return !1;
26556
26680
  try {
26557
26681
  return e.matches(":modal");
26558
26682
  } catch {
26559
26683
  return !1;
26560
26684
  }
26561
26685
  }
26562
- function RO(e, t, n = !0) {
26563
- NO(e);
26686
+ function VO(e, t, n = !0) {
26687
+ IO(e);
26564
26688
  let r = e.ownerDocument, i = r.defaultView ?? window, a = t, o = !1, s = "fixed", c = !1, l = 0, u = [];
26565
- if (n && PO(e) && (e.popover = "manual"), t.append(e), n && PO(e)) try {
26689
+ if (n && LO(e) && (e.popover = "manual"), t.append(e), n && LO(e)) try {
26566
26690
  e.showPopover(), c = e.matches(":popover-open"), c && (s = "top-layer");
26567
26691
  } catch {
26568
26692
  e.removeAttribute("popover");
26569
26693
  }
26570
26694
  let d = () => {
26571
- if (!(!c || !PO(e))) try {
26695
+ if (!(!c || !LO(e))) try {
26572
26696
  e.matches(":popover-open") || e.showPopover();
26573
26697
  } catch {}
26574
26698
  }, f = (t) => {
26575
26699
  if (e.parentNode === t) return;
26576
- let n = c && PO(e) && e.matches(":popover-open");
26577
- if (n && PO(e)) try {
26700
+ let n = c && LO(e) && e.matches(":popover-open");
26701
+ if (n && LO(e)) try {
26578
26702
  e.hidePopover();
26579
26703
  } catch {}
26580
- t.append(e), NO(e), n && d();
26704
+ t.append(e), IO(e), n && d();
26581
26705
  }, p = () => {
26582
- u = u.filter((e) => e.isConnected && LO(e)), f(u.at(-1) ?? a);
26706
+ u = u.filter((e) => e.isConnected && BO(e)), f(u.at(-1) ?? a);
26583
26707
  }, m = (e) => {
26584
26708
  u = u.filter((t) => t !== e), u.push(e), p();
26585
26709
  }, h = (e) => {
26586
26710
  u = u.filter((t) => t !== e), p();
26587
26711
  }, g = () => {
26588
- if (!(o || !c || !PO(e))) try {
26712
+ if (!(o || !c || !LO(e))) try {
26589
26713
  e.matches(":popover-open") && e.hidePopover(), e.showPopover();
26590
26714
  } catch {}
26591
26715
  }, _ = () => {
@@ -26594,27 +26718,27 @@ function RO(e, t, n = !0) {
26594
26718
  }));
26595
26719
  }, v = (t) => {
26596
26720
  if (!c || t.target === e) return;
26597
- let n = FO(t) ? t.newState : void 0, r = t.target;
26721
+ let n = RO(t) ? t.newState : void 0, r = t.target;
26598
26722
  if (r instanceof i.Element) {
26599
- if (IO(r)) {
26600
- n === "open" && LO(r) ? (m(r), _()) : n === "closed" ? h(r) : n === "open" && _();
26723
+ if (zO(r)) {
26724
+ n === "open" && BO(r) ? (m(r), _()) : n === "closed" ? h(r) : n === "open" && _();
26601
26725
  return;
26602
26726
  }
26603
26727
  n === "open" && r.hasAttribute("popover") && _();
26604
26728
  }
26605
26729
  }, y = (e) => {
26606
26730
  let t = e.target;
26607
- t instanceof i.Element && IO(t) && h(t);
26731
+ t instanceof i.Element && zO(t) && h(t);
26608
26732
  }, b = () => {
26609
26733
  r.fullscreenElement && _();
26610
26734
  }, x = (e) => {
26611
- LO(e) && m(e);
26612
- for (let t of e.querySelectorAll("dialog")) LO(t) && m(t);
26735
+ BO(e) && m(e);
26736
+ for (let t of e.querySelectorAll("dialog")) BO(t) && m(t);
26613
26737
  }, S = new i.MutationObserver((e) => {
26614
26738
  if (c) for (let t of e) {
26615
26739
  if (t.type === "attributes") {
26616
26740
  let e = t.target;
26617
- e instanceof i.Element && IO(e) && (LO(e) ? m(e) : h(e));
26741
+ e instanceof i.Element && zO(e) && (BO(e) ? m(e) : h(e));
26618
26742
  }
26619
26743
  for (let e of t.addedNodes) e instanceof i.Element && x(e);
26620
26744
  u.some((e) => !e.isConnected) && p();
@@ -26630,7 +26754,7 @@ function RO(e, t, n = !0) {
26630
26754
  bringToFront: g,
26631
26755
  dispose() {
26632
26756
  if (!o) {
26633
- 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 && PO(e) && e.matches(":popover-open")) try {
26757
+ 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 && LO(e) && e.matches(":popover-open")) try {
26634
26758
  e.hidePopover();
26635
26759
  } catch {}
26636
26760
  u = [];
@@ -26640,7 +26764,7 @@ function RO(e, t, n = !0) {
26640
26764
  }
26641
26765
  //#endregion
26642
26766
  //#region src/plugins/codex/index.ts
26643
- var zO = "mesurer.codex", BO = "codex:v1", VO = "mesurer.plugin.before-disable", HO = 2e3, UO = 750, WO = 2e3, GO = 1800, KO = 2e3, qO = 12e4, JO = 10, YO = 5, XO = "http://127.0.0.1:47365", ZO = "mesurer-codex", QO = 2, $O = [
26767
+ var HO = "mesurer.codex", UO = "codex:v1", WO = "mesurer.plugin.before-disable", GO = 2e3, KO = 750, qO = 2e3, JO = 1800, YO = 2e3, XO = 12e4, ZO = 10, QO = 5, $O = "http://127.0.0.1:47365", ek = "mesurer-codex", tk = 2, nk = [
26644
26768
  "thread-discovery-v1",
26645
26769
  "durable-queue-v1",
26646
26770
  "history-recovery-v2",
@@ -26648,33 +26772,33 @@ var zO = "mesurer.codex", BO = "codex:v1", VO = "mesurer.plugin.before-disable",
26648
26772
  "idle-safe-shutdown-v1",
26649
26773
  "nonterminal-retention-v1",
26650
26774
  "instance-binding-v1"
26651
- ], ek = 1500, tk = 15e3, nk = 5e3, rk = [
26775
+ ], rk = 1500, ik = 15e3, ak = 5e3, ok = [
26652
26776
  "Implement the current human feedback from Mesurer in this project.",
26653
26777
  "Treat the rendered page as the source of truth, preserve unrelated Mesurer review state,",
26654
26778
  "and verify the affected UI in the live page with Mesurer before claiming completion."
26655
- ].join(" "), ik = {
26779
+ ].join(" "), sk = {
26656
26780
  viewBox: "0 0 256 256",
26657
26781
  paths: ["M224,48,32,120l88,32,32,88Z M120,152l104-104"]
26658
- }, ak = {
26782
+ }, ck = {
26659
26783
  viewBox: "0 0 256 256",
26660
26784
  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"]
26661
- }, ok = {
26785
+ }, lk = {
26662
26786
  viewBox: "0 0 256 256",
26663
26787
  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"]
26664
- }, sk = class extends Error {
26788
+ }, uk = class extends Error {
26665
26789
  issue;
26666
26790
  constructor(e, t) {
26667
26791
  super(t), this.issue = e, this.name = "BrowserBridgeConnectionError";
26668
26792
  }
26669
- }, ck = () => {
26793
+ }, dk = () => {
26670
26794
  try {
26671
26795
  let e = globalThis.location;
26672
26796
  return e?.origin ? `mesurer-codex-ui:v2:${e.origin}${e.pathname}` : null;
26673
26797
  } catch {
26674
26798
  return null;
26675
26799
  }
26676
- }, lk = () => {
26677
- let e = ck();
26800
+ }, fk = () => {
26801
+ let e = dk();
26678
26802
  if (!e) return null;
26679
26803
  try {
26680
26804
  let t = globalThis.sessionStorage?.getItem(e);
@@ -26700,35 +26824,35 @@ var zO = "mesurer.codex", BO = "codex:v1", VO = "mesurer.plugin.before-disable",
26700
26824
  } catch {
26701
26825
  return null;
26702
26826
  }
26703
- }, uk = (e) => {
26704
- let t = ck();
26827
+ }, pk = (e) => {
26828
+ let t = dk();
26705
26829
  if (t) try {
26706
26830
  globalThis.sessionStorage?.setItem(t, JSON.stringify(e));
26707
26831
  } catch {}
26708
- }, dk = (e) => {
26709
- let t = XO.endsWith("/") ? XO : `${XO}/`;
26832
+ }, mk = (e) => {
26833
+ let t = $O.endsWith("/") ? $O : `${$O}/`;
26710
26834
  return new URL(e, t).toString();
26711
- }, fk = (e) => {
26835
+ }, hk = (e) => {
26712
26836
  let t = e.bridge;
26713
- if (!t) throw new sk("port-conflict", "Another local service or an outdated Mesurer Codex Bridge is using port 47365. Mesurer will not send data to an unverified service.");
26714
- if (t.name !== ZO) throw new sk("port-conflict", `Another local service is using port 47365 (${t.name ?? "unknown"}). Mesurer will not send Codex data to it.`);
26715
- if (t.protocol !== QO) throw new sk("version-mismatch", `Mesurer Codex Bridge is out of date (protocol ${t.protocol ?? "unknown"}; expected ${QO}). Restart the matching Mesurer Codex Bridge helper.`);
26716
- if (e.access?.allowed === !1) throw new sk("origin-denied", `Mesurer Codex Bridge does not allow this browser origin (${globalThis.location?.origin ?? "this page"}). Allow this origin when starting the bridge.`);
26717
- let n = new Set(Array.isArray(t.capabilities) ? t.capabilities : []), r = $O.filter((e) => !n.has(e));
26718
- if (r.length > 0) throw new sk("capability-mismatch", `Mesurer Codex Bridge is missing required capabilities: ${r.join(", ")}. Restart or update the matching helper.`);
26719
- if (!t.instanceId?.trim()) throw new sk("capability-mismatch", "Mesurer Codex Bridge did not provide an instance identity. Restart or update the matching helper.");
26720
- }, pk = (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, mk = (e) => e instanceof sk ? e.issue : e instanceof Error ? pk(e.message) : null, hk = async (e) => {
26837
+ if (!t) throw new uk("port-conflict", "Another local service or an outdated Mesurer Codex Bridge is using port 47365. Mesurer will not send data to an unverified service.");
26838
+ if (t.name !== ek) throw new uk("port-conflict", `Another local service is using port 47365 (${t.name ?? "unknown"}). Mesurer will not send Codex data to it.`);
26839
+ if (t.protocol !== tk) throw new uk("version-mismatch", `Mesurer Codex Bridge is out of date (protocol ${t.protocol ?? "unknown"}; expected ${tk}). Restart the matching Mesurer Codex Bridge helper.`);
26840
+ if (e.access?.allowed === !1) throw new uk("origin-denied", `Mesurer Codex Bridge does not allow this browser origin (${globalThis.location?.origin ?? "this page"}). Allow this origin when starting the bridge.`);
26841
+ let n = new Set(Array.isArray(t.capabilities) ? t.capabilities : []), r = nk.filter((e) => !n.has(e));
26842
+ if (r.length > 0) throw new uk("capability-mismatch", `Mesurer Codex Bridge is missing required capabilities: ${r.join(", ")}. Restart or update the matching helper.`);
26843
+ if (!t.instanceId?.trim()) throw new uk("capability-mismatch", "Mesurer Codex Bridge did not provide an instance identity. Restart or update the matching helper.");
26844
+ }, gk = (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, _k = (e) => e instanceof uk ? e.issue : e instanceof Error ? gk(e.message) : null, vk = async (e) => {
26721
26845
  let t, n;
26722
- if (e.action === "health") t = dk("health");
26846
+ if (e.action === "health") t = mk("health");
26723
26847
  else if (e.action === "threads") {
26724
26848
  let n = new URLSearchParams();
26725
- n.set("limit", String(e.limit ?? JO)), e.thread && n.set("thread", e.thread), t = `${dk("threads")}?${n.toString()}`;
26726
- } else if (e.action === "target") t = dk("target"), n = {
26849
+ n.set("limit", String(e.limit ?? ZO)), e.thread && n.set("thread", e.thread), t = `${mk("threads")}?${n.toString()}`;
26850
+ } else if (e.action === "target") t = mk("target"), n = {
26727
26851
  method: "POST",
26728
26852
  headers: { "Content-Type": "application/json" },
26729
26853
  body: JSON.stringify({ thread: e.thread })
26730
26854
  };
26731
- else if (e.action === "queue") t = dk("send"), n = {
26855
+ else if (e.action === "queue") t = mk("send"), n = {
26732
26856
  method: "POST",
26733
26857
  headers: { "Content-Type": "application/json" },
26734
26858
  body: JSON.stringify({
@@ -26736,8 +26860,8 @@ var zO = "mesurer.codex", BO = "codex:v1", VO = "mesurer.plugin.before-disable",
26736
26860
  thread: e.thread
26737
26861
  })
26738
26862
  };
26739
- else if (e.action === "delivery") t = dk(`deliveries/${encodeURIComponent(String(e.deliveryId ?? ""))}`);
26740
- else if (e.action === "restore") t = dk("deliveries/restore"), n = {
26863
+ else if (e.action === "delivery") t = mk(`deliveries/${encodeURIComponent(String(e.deliveryId ?? ""))}`);
26864
+ else if (e.action === "restore") t = mk("deliveries/restore"), n = {
26741
26865
  method: "POST",
26742
26866
  headers: { "Content-Type": "application/json" },
26743
26867
  body: JSON.stringify({
@@ -26751,14 +26875,14 @@ var zO = "mesurer.codex", BO = "codex:v1", VO = "mesurer.plugin.before-disable",
26751
26875
  else throw Error(`Codex browser companion does not support ${e.action}.`);
26752
26876
  if (e.action !== "health") {
26753
26877
  let t = e.bridgeInstanceId?.trim();
26754
- if (!t) throw new sk("instance-changed", "Mesurer Codex Bridge instance changed before this request could be verified.");
26878
+ if (!t) throw new uk("instance-changed", "Mesurer Codex Bridge instance changed before this request could be verified.");
26755
26879
  let r = new Headers(n?.headers);
26756
26880
  r.set("X-Mesurer-Bridge-Instance", t), n = {
26757
26881
  ...n,
26758
26882
  headers: r
26759
26883
  };
26760
26884
  }
26761
- let r = new AbortController(), i = e.action === "health" || e.action === "threads" ? ek : tk, a = globalThis.setTimeout(() => r.abort(), i);
26885
+ let r = new AbortController(), i = e.action === "health" || e.action === "threads" ? rk : ik, a = globalThis.setTimeout(() => r.abort(), i);
26762
26886
  try {
26763
26887
  let i = await fetch(t, {
26764
26888
  ...n,
@@ -26769,23 +26893,23 @@ var zO = "mesurer.codex", BO = "codex:v1", VO = "mesurer.plugin.before-disable",
26769
26893
  } catch {
26770
26894
  o = { error: a };
26771
26895
  }
26772
- if (e.action === "health" && fk(o), !i.ok || o.ok === !1) {
26773
- let e = o.error ?? `Mesurer Codex companion returned HTTP ${i.status}.`, t = pk(e);
26774
- throw t ? new sk(t, e) : Error(e);
26896
+ if (e.action === "health" && hk(o), !i.ok || o.ok === !1) {
26897
+ let e = o.error ?? `Mesurer Codex companion returned HTTP ${i.status}.`, t = gk(e);
26898
+ throw t ? new uk(t, e) : Error(e);
26775
26899
  }
26776
26900
  return o;
26777
26901
  } catch (e) {
26778
- throw e instanceof Error && e.name === "AbortError" ? new sk("timed-out", "Mesurer Codex companion timed out.") : e instanceof TypeError ? new sk("not-running", `Mesurer Codex companion is unavailable at ${XO}.`) : e;
26902
+ throw e instanceof Error && e.name === "AbortError" ? new uk("timed-out", "Mesurer Codex companion timed out.") : e instanceof TypeError ? new uk("not-running", `Mesurer Codex companion is unavailable at ${$O}.`) : e;
26779
26903
  } finally {
26780
26904
  globalThis.clearTimeout(a);
26781
26905
  }
26782
- }, gk = async (e) => {
26906
+ }, yk = async (e) => {
26783
26907
  let t = window.__MESURER_HOST__?.codexBridge;
26784
26908
  if (!t) throw Error("Codex native host bridge is unavailable.");
26785
26909
  let n = await t(e);
26786
26910
  if (n.ok === !1) throw Error(n.error ?? "Codex Bridge request failed.");
26787
26911
  return n;
26788
- }, _k = (e) => {
26912
+ }, bk = (e) => {
26789
26913
  let t = e.runtime;
26790
26914
  return !t || ![
26791
26915
  "shared",
@@ -26803,10 +26927,10 @@ var zO = "mesurer.codex", BO = "codex:v1", VO = "mesurer.plugin.before-disable",
26803
26927
  available: t.available === !0,
26804
26928
  reason: t.reason
26805
26929
  };
26806
- }, vk = (e) => ({
26930
+ }, xk = (e) => ({
26807
26931
  thread: e.thread?.trim() || null,
26808
26932
  threads: Array.isArray(e.threads) ? e.threads.filter((e) => e.trim().length > 0) : []
26809
- }), yk = (e) => {
26933
+ }), Sk = (e) => {
26810
26934
  let t = e.deliveryId?.trim(), n = e.thread?.trim(), r = e.status;
26811
26935
  if (!t || !n || !r) throw Error("Codex Bridge returned an invalid delivery state.");
26812
26936
  let i = {
@@ -26818,7 +26942,7 @@ var zO = "mesurer.codex", BO = "codex:v1", VO = "mesurer.plugin.before-disable",
26818
26942
  updatedAt: Number.isFinite(e.updatedAt) ? Number(e.updatedAt) : 0
26819
26943
  };
26820
26944
  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;
26821
- }, bk = (e) => ({
26945
+ }, Ck = (e) => ({
26822
26946
  thread: e.thread?.trim() || null,
26823
26947
  threads: Array.isArray(e.threadDetails) ? e.threadDetails.flatMap((e) => {
26824
26948
  let t = e.id?.trim() ?? "";
@@ -26830,7 +26954,7 @@ var zO = "mesurer.codex", BO = "codex:v1", VO = "mesurer.plugin.before-disable",
26830
26954
  }] : [];
26831
26955
  }) : [],
26832
26956
  hasMore: e.hasMore === !0
26833
- }), xk = async (e, t, n) => {
26957
+ }), wk = async (e, t, n) => {
26834
26958
  let r = t?.instruction?.trim() || n, i = await e.annotations(), a = t?.annotationIds, o = a ? a.flatMap((e) => {
26835
26959
  let t = i.find((t) => t.id === e);
26836
26960
  return t ? [t] : [];
@@ -26853,18 +26977,18 @@ var zO = "mesurer.codex", BO = "codex:v1", VO = "mesurer.plugin.before-disable",
26853
26977
  ])
26854
26978
  ].join("\n").trimEnd()
26855
26979
  };
26856
- }, Sk = (e) => e.length > 16 ? `${e.slice(0, 8)}…${e.slice(-4)}` : e, Ck = (e, t = 42) => e.length > t ? `${e.slice(0, t - 1)}…` : e, wk = (e) => mk(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"));
26857
- function Tk(e = {}) {
26858
- let t = e.instruction?.trim() || rk, n = e.ui ?? !0, r = e.clearCompletedAnnotations ?? !0;
26980
+ }, Tk = (e) => e.length > 16 ? `${e.slice(0, 8)}…${e.slice(-4)}` : e, Ek = (e, t = 42) => e.length > t ? `${e.slice(0, t - 1)}…` : e, Dk = (e) => _k(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"));
26981
+ function Ok(e = {}) {
26982
+ let t = e.instruction?.trim() || ok, n = e.ui ?? !0, r = e.clearCompletedAnnotations ?? !0;
26859
26983
  return {
26860
- id: zO,
26861
- version: VD,
26862
- requires: [xO],
26863
- provides: [BO],
26984
+ id: HO,
26985
+ version: WD,
26986
+ requires: [wO],
26987
+ provides: [UO],
26864
26988
  async setup(e) {
26865
- let i = e.service.get(xO);
26989
+ let i = e.service.get(wO);
26866
26990
  if (!i) throw Error("Mesurer Codex plugin requires context() from mesurer-solid/plugins.");
26867
- let a = n ? lk() : 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 = YO, _, v = "", y = null, b = a?.delivery ? {
26991
+ let a = n ? fk() : 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 = QO, _, v = "", y = null, b = a?.delivery ? {
26868
26992
  id: a.delivery.id,
26869
26993
  thread: a.delivery.thread,
26870
26994
  status: a.delivery.status,
@@ -26877,22 +27001,22 @@ function Tk(e = {}) {
26877
27001
  if (!k) try {
26878
27002
  let t = e.action === "queue" || e.action === "target" || e.action === "delivery" || e.action === "restore";
26879
27003
  if (e.action === "health") {
26880
- let t = await hk(e);
27004
+ let t = await vk(e);
26881
27005
  return D = t.bridge?.instanceId?.trim() || null, E = Date.now(), t;
26882
27006
  }
26883
- return (!D || t || Date.now() - E >= nk) && (D = (await hk({
27007
+ return (!D || t || Date.now() - E >= ak) && (D = (await vk({
26884
27008
  action: "health",
26885
27009
  thread: u ?? l ?? void 0
26886
- })).bridge?.instanceId?.trim() || null, E = Date.now()), await hk({
27010
+ })).bridge?.instanceId?.trim() || null, E = Date.now()), await vk({
26887
27011
  ...e,
26888
27012
  bridgeInstanceId: D ?? void 0
26889
27013
  });
26890
27014
  } catch (e) {
26891
27015
  throw E = 0, D = null, e;
26892
27016
  }
26893
- if (e.action === "activate" || e.action === "runtime") return gk(e);
27017
+ if (e.action === "activate" || e.action === "runtime") return yk(e);
26894
27018
  if (!T) throw Error("Codex Bridge lease is not active for this plugin.");
26895
- return gk({
27019
+ return yk({
26896
27020
  ...e,
26897
27021
  leaseId: T
26898
27022
  });
@@ -26900,7 +27024,7 @@ function Tk(e = {}) {
26900
27024
  if (!k) return;
26901
27025
  let e = T;
26902
27026
  if (e) {
26903
- if ((await gk({
27027
+ if ((await yk({
26904
27028
  action: "deactivate",
26905
27029
  leaseId: e
26906
27030
  })).released !== !0) throw Error("Codex Bridge did not confirm lease release.");
@@ -26908,13 +27032,13 @@ function Tk(e = {}) {
26908
27032
  }
26909
27033
  };
26910
27034
  if (k) {
26911
- let e = await gk({
27035
+ let e = await yk({
26912
27036
  action: "activate",
26913
27037
  thread: u ?? l ?? void 0
26914
27038
  }), t = e.leaseId?.trim();
26915
27039
  if (!t) throw Error("Codex Bridge did not return an activation lease.");
26916
- T = t, o = "available", s = _k(e);
26917
- let n = vk(e);
27040
+ T = t, o = "available", s = bk(e);
27041
+ let n = xk(e);
26918
27042
  c = !0, f = n.thread, p = n.threads;
26919
27043
  }
26920
27044
  e.lifecycle.onDispose(() => {
@@ -26922,12 +27046,12 @@ function Tk(e = {}) {
26922
27046
  let t = e instanceof Error ? e.message : String(e);
26923
27047
  console.error(`[Mesurer] Failed to release Codex host lease: ${t}`);
26924
27048
  });
26925
- }), e.hook.on(VO, async (e) => {
27049
+ }), e.hook.on(WO, async (e) => {
26926
27050
  e === "mesurer.codex" && await j();
26927
27051
  });
26928
27052
  let M = async () => {
26929
27053
  if (!k) return null;
26930
- let e = _k(await A({ action: "runtime" }));
27054
+ let e = bk(await A({ action: "runtime" }));
26931
27055
  if (!e) throw Error("Codex Bridge returned an invalid runtime state.");
26932
27056
  return s = e, e;
26933
27057
  }, N = async () => {
@@ -26935,8 +27059,8 @@ function Tk(e = {}) {
26935
27059
  action: "health",
26936
27060
  thread: u ?? l ?? void 0
26937
27061
  });
26938
- return s = _k(e) ?? s, vk(e);
26939
- }, P = N, F = async (e) => yk(await A({
27062
+ return s = bk(e) ?? s, xk(e);
27063
+ }, P = N, F = async (e) => Sk(await A({
26940
27064
  action: "delivery",
26941
27065
  deliveryId: e
26942
27066
  })), I = async (e) => {
@@ -26948,17 +27072,17 @@ function Tk(e = {}) {
26948
27072
  };
26949
27073
  if (e.queuedSubmissionId && (n.queuedSubmissionId = e.queuedSubmissionId), e.clientUserMessageId) n.clientUserMessageId = e.clientUserMessageId;
26950
27074
  else if (e.annotationIds.length > 0) {
26951
- let r = await xk(i, { annotationIds: e.annotationIds }, t);
27075
+ let r = await wk(i, { annotationIds: e.annotationIds }, t);
26952
27076
  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.");
26953
27077
  n.message = r.message;
26954
27078
  }
26955
- return yk(await A(n));
27079
+ return Sk(await A(n));
26956
27080
  }, L = async (e = {}) => {
26957
27081
  let t = {
26958
27082
  action: "threads",
26959
- limit: e.limit ?? JO
27083
+ limit: e.limit ?? ZO
26960
27084
  }, n = e.thread?.trim();
26961
- return n && (t.thread = n), bk(await A(t));
27085
+ return n && (t.thread = n), Ck(await A(t));
26962
27086
  }, R = () => u ?? l ?? (d ? null : f), z = () => {
26963
27087
  if (!n) return;
26964
27088
  let e = b?.id && (b.status === "queued" || b.status === "working" || b.status === "completed" || b.status === "interrupted" || b.status === "failed") ? {
@@ -26971,7 +27095,7 @@ function Tk(e = {}) {
26971
27095
  dispatch: b.dispatch,
26972
27096
  dispatchError: b.dispatchError
26973
27097
  } : null;
26974
- uk({
27098
+ pk({
26975
27099
  version: 1,
26976
27100
  originThread: l,
26977
27101
  selectedThread: u,
@@ -26989,12 +27113,12 @@ function Tk(e = {}) {
26989
27113
  "queueing",
26990
27114
  "queued",
26991
27115
  "working"
26992
- ].includes(b.status) ? ak : b.status === "completed" ? ok : ik : ik, W = () => {
27116
+ ].includes(b.status) ? ck : b.status === "completed" ? lk : sk : sk, W = () => {
26993
27117
  let e = [], t = /* @__PURE__ */ new Set(), n = (n) => {
26994
27118
  t.has(n.id) || (t.add(n.id), e.push(n));
26995
27119
  }, r = (e) => ({
26996
27120
  id: e,
26997
- title: `Codex ${Sk(e)}`,
27121
+ title: `Codex ${Tk(e)}`,
26998
27122
  updatedAt: null,
26999
27123
  connected: !0
27000
27124
  });
@@ -27032,22 +27156,22 @@ function Tk(e = {}) {
27032
27156
  let t = e.id === l ? "Current · " : e.connected ? "Loaded · " : "", r = b?.thread === e.id ? ` · ${ee(b.status)}` : "";
27033
27157
  return {
27034
27158
  id: `codex.thread.${e.id}`,
27035
- label: `${t}${Ck(e.title)}${r}`,
27159
+ label: `${t}${Ek(e.title)}${r}`,
27036
27160
  checked: () => n === e.id,
27037
27161
  disabled: () => V(),
27038
27162
  run() {
27039
27163
  V() || (B(e.id, !l), G());
27040
27164
  }
27041
27165
  };
27042
- })), g < JO && (e.length > g || h) && r.push({
27166
+ })), g < ZO && (e.length > g || h) && r.push({
27043
27167
  id: "codex.thread.show-more",
27044
27168
  label: "Show 5 more…",
27045
27169
  run() {
27046
- g = JO, G();
27170
+ g = ZO, G();
27047
27171
  }
27048
27172
  }), b?.queuedSubmissionId && b.status === "queued" && (b.dispatch === "desktop-opened" || b.dispatch === "desktop-wake-failed") && r.push({
27049
27173
  id: "codex.delivery.receipt",
27050
- label: `Receipt · ${Sk(b.queuedSubmissionId)}`,
27174
+ label: `Receipt · ${Tk(b.queuedSubmissionId)}`,
27051
27175
  disabled: () => !0,
27052
27176
  run: () => void 0
27053
27177
  }), r;
@@ -27084,7 +27208,7 @@ function Tk(e = {}) {
27084
27208
  }, ae = async (e) => {
27085
27209
  if (o !== "available") return;
27086
27210
  let t = await L({
27087
- limit: JO,
27211
+ limit: ZO,
27088
27212
  thread: e ?? void 0
27089
27213
  });
27090
27214
  m = t.threads, h = t.hasMore, p = t.threads.filter((e) => e.connected).map((e) => e.id), f = t.thread;
@@ -27096,7 +27220,7 @@ function Tk(e = {}) {
27096
27220
  let t = u ?? l;
27097
27221
  t && p.includes(t) ? d = !1 : p.length === 1 ? B(p[0], !0) : d = !0, !d && t && z();
27098
27222
  } catch (e) {
27099
- throw o = "unavailable", O = k ? null : mk(e) ?? "unavailable", s = await M().catch(() => s), e;
27223
+ throw o = "unavailable", O = k ? null : _k(e) ?? "unavailable", s = await M().catch(() => s), e;
27100
27224
  } finally {
27101
27225
  y = null, G();
27102
27226
  }
@@ -27106,7 +27230,7 @@ function Tk(e = {}) {
27106
27230
  }, se = () => {
27107
27231
  S && globalThis.clearTimeout(S), S = globalThis.setTimeout(() => {
27108
27232
  S = 0, b?.status === "completed" && (b = null, z(), G());
27109
- }, GO);
27233
+ }, JO);
27110
27234
  }, ce = async (e) => {
27111
27235
  if (!(!b || b.id !== e.id)) {
27112
27236
  if (b = {
@@ -27135,7 +27259,7 @@ function Tk(e = {}) {
27135
27259
  if (t || n.length > 0) {
27136
27260
  z(), G(), x = globalThis.setTimeout(() => {
27137
27261
  x = 0, le(e.id);
27138
- }, UO);
27262
+ }, KO);
27139
27263
  return;
27140
27264
  }
27141
27265
  }
@@ -27145,14 +27269,14 @@ function Tk(e = {}) {
27145
27269
  if (e.status === "interrupted") {
27146
27270
  z(), G();
27147
27271
  let t = e.updatedAt > 0 ? e.updatedAt : Date.now();
27148
- Date.now() - t < qO && (x = globalThis.setTimeout(() => {
27272
+ Date.now() - t < XO && (x = globalThis.setTimeout(() => {
27149
27273
  x = 0, le(e.id);
27150
- }, KO));
27274
+ }, YO));
27151
27275
  return;
27152
27276
  }
27153
27277
  G(), x = globalThis.setTimeout(() => {
27154
27278
  x = 0, le(e.id);
27155
- }, WO);
27279
+ }, qO);
27156
27280
  }
27157
27281
  }, le = async (e) => {
27158
27282
  if (!(w || b?.id !== e)) try {
@@ -27176,7 +27300,7 @@ function Tk(e = {}) {
27176
27300
  b = {
27177
27301
  ...b,
27178
27302
  status: "failed"
27179
- }, z(), wk(n) && (o = "unavailable"), G();
27303
+ }, z(), Dk(n) && (o = "unavailable"), G();
27180
27304
  }
27181
27305
  }, ue = {
27182
27306
  health: N,
@@ -27188,11 +27312,11 @@ function Tk(e = {}) {
27188
27312
  let n = await A({
27189
27313
  action: "target",
27190
27314
  thread: t
27191
- }), r = vk(n);
27192
- return s = _k(n) ?? s, B(t, !l), f = r.thread, p = r.threads, o = "available", c = !0, G(), r;
27315
+ }), r = xk(n);
27316
+ return s = bk(n) ?? s, B(t, !l), f = r.thread, p = r.threads, o = "available", c = !0, G(), r;
27193
27317
  },
27194
27318
  async queue(e) {
27195
- let r = await xk(i, e, t), a = e?.thread?.trim(), s = a || (n ? R() : null);
27319
+ let r = await wk(i, e, t), a = e?.thread?.trim(), s = a || (n ? R() : null);
27196
27320
  if (n && !a && (d || !s)) throw Error("Choose a Codex thread before queueing feedback.");
27197
27321
  let c = { message: r.message };
27198
27322
  s && (c.thread = s);
@@ -27212,14 +27336,14 @@ function Tk(e = {}) {
27212
27336
  };
27213
27337
  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;
27214
27338
  } catch (e) {
27215
- throw n && wk(e) && (o = "unavailable", O = k ? null : mk(e) ?? "unavailable", G()), e;
27339
+ throw n && Dk(e) && (o = "unavailable", O = k ? null : _k(e) ?? "unavailable", G()), e;
27216
27340
  }
27217
27341
  },
27218
27342
  send(e) {
27219
27343
  return ue.queue(e);
27220
27344
  }
27221
27345
  };
27222
- e.service.provide(BO, ue);
27346
+ e.service.provide(UO, ue);
27223
27347
  let de = async () => {
27224
27348
  if (!(C || V())) {
27225
27349
  if (b?.status === "failed" && b.id) {
@@ -27257,9 +27381,9 @@ function Tk(e = {}) {
27257
27381
  updatedAt: 0
27258
27382
  }) : x = globalThis.setTimeout(() => {
27259
27383
  x = 0, le(e.deliveryId);
27260
- }, UO) : S = globalThis.setTimeout(() => {
27384
+ }, KO) : S = globalThis.setTimeout(() => {
27261
27385
  S = 0, b?.id === null && b?.status === "queued" && (b = null, z(), G());
27262
- }, GO);
27386
+ }, JO);
27263
27387
  } catch (e) {
27264
27388
  b = null, z(), G();
27265
27389
  let t = e instanceof Error ? e.message : String(e);
@@ -27288,7 +27412,7 @@ function Tk(e = {}) {
27288
27412
  }, 0));
27289
27413
  let t = globalThis.setInterval(() => {
27290
27414
  k && !c || te(!0).catch(() => void 0);
27291
- }, k ? HO : nk);
27415
+ }, k ? GO : ak);
27292
27416
  e.lifecycle.onDispose(() => {
27293
27417
  w = !0, oe(), globalThis.clearInterval(t), _?.dispose(), _ = void 0;
27294
27418
  });
@@ -27298,64 +27422,64 @@ function Tk(e = {}) {
27298
27422
  }
27299
27423
  //#endregion
27300
27424
  //#region src/recording.ts
27301
- var Ek = uE, Dk = (e = {}) => ({
27302
- ...jE(e),
27303
- version: VD
27304
- }), Ok = WE, kk = (e = {}) => ({
27305
- ...uD(e),
27306
- version: VD
27307
- }), Ak = () => globalThis.window?.__MESURER_HOST__?.codexBridge !== void 0, jk = [
27425
+ var kk = pE, Ak = (e = {}) => ({
27426
+ ...PE(e),
27427
+ version: WD
27428
+ }), jk = qE, Mk = (e = {}) => ({
27429
+ ...pD(e),
27430
+ version: WD
27431
+ }), Nk = () => globalThis.window?.__MESURER_HOST__?.codexBridge !== void 0, Pk = [
27308
27432
  {
27309
- id: bO,
27433
+ id: CO,
27310
27434
  label: "Context",
27311
27435
  order: 30,
27312
- create: jO,
27436
+ create: PO,
27313
27437
  settingsIds: ["context"],
27314
27438
  hiddenSettingsControlIds: ["ui"]
27315
27439
  },
27316
27440
  {
27317
- id: HD,
27441
+ id: GD,
27318
27442
  label: "Edit",
27319
27443
  order: 35,
27320
- create: WD,
27444
+ create: qD,
27321
27445
  settingsIds: ["arrange"]
27322
27446
  },
27323
27447
  {
27324
- id: _O,
27448
+ id: bO,
27325
27449
  label: "Layout Guides",
27326
27450
  order: 38,
27327
- create: yO
27451
+ create: SO
27328
27452
  },
27329
27453
  {
27330
- id: Ok,
27454
+ id: jk,
27331
27455
  label: "Screenshot",
27332
27456
  order: 40,
27333
- create: kk,
27457
+ create: Mk,
27334
27458
  settingsIds: ["screenshot"],
27335
27459
  hiddenSettingsControlIds: ["tool"]
27336
27460
  },
27337
27461
  {
27338
- id: Ek,
27462
+ id: kk,
27339
27463
  label: "Recording",
27340
27464
  order: 42,
27341
- create: Dk,
27465
+ create: Ak,
27342
27466
  settingsIds: ["recording"],
27343
27467
  hiddenSettingsControlIds: ["tool"]
27344
27468
  },
27345
27469
  {
27346
- id: zO,
27470
+ id: HO,
27347
27471
  label: "Codex",
27348
27472
  order: 45,
27349
- create: Tk
27473
+ create: Ok
27350
27474
  }
27351
- ], Mk = (e) => {
27352
- let t = e !== void 0, n = new Map((e ?? []).map((e) => [e.id, e])), r = new Set(jk.map((e) => e.id)), i = jk.map((e) => {
27475
+ ], Fk = (e) => {
27476
+ let t = e !== void 0, n = new Map((e ?? []).map((e) => [e.id, e])), r = new Set(Pk.map((e) => e.id)), i = Pk.map((e) => {
27353
27477
  let r = n.get(e.id);
27354
27478
  return {
27355
27479
  ...e,
27356
27480
  settingsIds: e.settingsIds ? [...e.settingsIds] : void 0,
27357
27481
  hiddenSettingsControlIds: e.hiddenSettingsControlIds ? [...e.hiddenSettingsControlIds] : void 0,
27358
- enabled: t ? !!r : e.id === "mesurer.codex" ? Ak() : e.enabled !== !1,
27482
+ enabled: t ? !!r : e.id === "mesurer.codex" ? Nk() : e.enabled !== !1,
27359
27483
  create: r ? () => r : e.create
27360
27484
  };
27361
27485
  });
@@ -27366,16 +27490,16 @@ var Ek = uE, Dk = (e = {}) => ({
27366
27490
  create: () => n
27367
27491
  });
27368
27492
  return i;
27369
- }, Nk = (e) => e;
27370
- function Pk() {
27371
- return tO();
27493
+ }, Ik = (e) => e;
27494
+ function Lk() {
27495
+ return iO();
27372
27496
  }
27373
- async function Fk(e = {}) {
27374
- return nO(e);
27497
+ async function Rk(e = {}) {
27498
+ return aO(e);
27375
27499
  }
27376
27500
  //#endregion
27377
27501
  //#region src/index.tsx
27378
- var Ik = {
27502
+ var zk = {
27379
27503
  select: "select",
27380
27504
  xray: "xray",
27381
27505
  colorPicker: "color-picker",
@@ -27386,7 +27510,7 @@ var Ik = {
27386
27510
  distance: "distance",
27387
27511
  settings: "settings"
27388
27512
  };
27389
- function Lk(e = {}) {
27513
+ function Bk(e = {}) {
27390
27514
  if (!("document" in globalThis)) throw Error("mountMesurer() requires a browser or Electron renderer document.");
27391
27515
  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;
27392
27516
  if (o?.aborted) throw o.reason ?? new DOMException("Mesurer mount aborted.", "AbortError");
@@ -27479,7 +27603,7 @@ function Lk(e = {}) {
27479
27603
  } catch {}
27480
27604
  let h = p.createElement("div");
27481
27605
  h.dataset.mesurerIsland = "true";
27482
- let g = RO(h, t, i), _ = h, v = h, y = h;
27606
+ let g = VO(h, t, i), _ = h, v = h, y = h;
27483
27607
  if (n) {
27484
27608
  let e = h.attachShadow({ mode: r });
27485
27609
  v = p.createElement("div"), v.dataset.mesurerIslandMount = "true", e.append(v), _ = e, y = e;
@@ -27490,7 +27614,7 @@ function Lk(e = {}) {
27490
27614
  C = e, w = t;
27491
27615
  });
27492
27616
  D.catch(() => void 0), O.catch(() => void 0);
27493
- let k = async () => (await (b ? Promise.resolve(b) : D), O), A = a === !0 ? {} : a === !1 ? null : a, j = BD({
27617
+ let k = async () => (await (b ? Promise.resolve(b) : D), O), A = a === !0 ? {} : a === !1 ? null : a, j = UD({
27494
27618
  ownerDocument: p,
27495
27619
  root: A?.root ?? (t.nodeType === 11 ? t : p),
27496
27620
  getPluginHost: () => b,
@@ -27502,12 +27626,12 @@ function Lk(e = {}) {
27502
27626
  return t;
27503
27627
  }, N = async () => {
27504
27628
  await j.ready();
27505
- let e = b?.service.get(xO);
27629
+ let e = b?.service.get(wO);
27506
27630
  if (!e) throw Error("Mesurer Context is disabled. Enable it in Settings or include context() in plugins.");
27507
27631
  return e;
27508
27632
  }, P = async () => {
27509
27633
  await j.ready();
27510
- let e = b?.service.get(GD);
27634
+ let e = b?.service.get(JD);
27511
27635
  if (!e) throw Error("Mesurer Edit is disabled. Enable it in Settings or include edit() in plugins.");
27512
27636
  return e;
27513
27637
  }, 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) => {
@@ -27518,7 +27642,7 @@ function Lk(e = {}) {
27518
27642
  (await P()).show(e, t);
27519
27643
  }, 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, {
27520
27644
  capabilities: () => {
27521
- let e = !!b?.service.get(xO);
27645
+ let e = !!b?.service.get(wO);
27522
27646
  return {
27523
27647
  protocol: "mesurer.agent/v1",
27524
27648
  contextSchema: "mesurer.context/v1",
@@ -27528,8 +27652,8 @@ function Lk(e = {}) {
27528
27652
  annotations: e,
27529
27653
  review: e,
27530
27654
  capturePlan: e,
27531
- arrange: !!b?.service.get(GD),
27532
- textEdit: !!b?.service.get(RD)
27655
+ arrange: !!b?.service.get(JD),
27656
+ textEdit: !!b?.service.get(VD)
27533
27657
  }
27534
27658
  };
27535
27659
  },
@@ -27548,10 +27672,10 @@ function Lk(e = {}) {
27548
27672
  reviewArrange: re
27549
27673
  }), oe = {
27550
27674
  ...f,
27551
- version: VD,
27552
- plugins: Mk(l),
27553
- excludePlugins: u ? u.map((e) => Ik[e]) : [...d ?? []]
27554
- }, se = No(() => yo(KC, oo(oe, {
27675
+ version: WD,
27676
+ plugins: Fk(l),
27677
+ excludePlugins: u ? u.map((e) => zk[e]) : [...d ?? []]
27678
+ }, se = No(() => yo(YC, oo(oe, {
27555
27679
  portalTarget: y,
27556
27680
  pageTarget: t,
27557
27681
  onPluginHost: (e) => {
@@ -27619,6 +27743,6 @@ function Lk(e = {}) {
27619
27743
  }
27620
27744
  return he;
27621
27745
  }
27622
- var Rk = Lk;
27746
+ var Vk = Bk;
27623
27747
  //#endregion
27624
- export { RD as MESURER_TEXT_EDIT_SERVICE_ID, VD as MESURER_VERSION, sO as captureMesurerContext, gO as copyTextToClipboard, BD as createMesurerAgentHarness, dO as createMesurerCapturePlan, Pk as createMesurerPluginHost, Fk as createMesurerRuntime, Nk as defineMesurerPlugin, uO as formatMesurerContext, Rk as mountMeasurer, Lk as mountMesurer, hO as reviewMesurerAnnotation };
27748
+ export { VD as MESURER_TEXT_EDIT_SERVICE_ID, WD as MESURER_VERSION, uO as captureMesurerContext, yO as copyTextToClipboard, UD as createMesurerAgentHarness, mO as createMesurerCapturePlan, Lk as createMesurerPluginHost, Rk as createMesurerRuntime, Ik as defineMesurerPlugin, pO as formatMesurerContext, Vk as mountMeasurer, Bk as mountMesurer, vO as reviewMesurerAnnotation };