@genome-spy/app 0.88.1 → 0.89.0

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.
Files changed (43) hide show
  1. package/dist/{agentApi-BIpg3JKh.js → agentApi-BUcXm-JC.js} +5544 -6449
  2. package/dist/agentApi.es.js +3328 -4255
  3. package/dist/agentShared.es.js +9 -9
  4. package/dist/{canvas2d-BVQ7-2eJ.js → canvas2d-CGuVGvQk.js} +117 -106
  5. package/dist/{canvas2d-D7SZK3xv.js → canvas2d-DgF0kstG.js} +99 -88
  6. package/dist/{canvasSizeHelper-7h_8rOcx.js → canvasSizeHelper-foL2YvGL.js} +15 -8
  7. package/dist/{clipOptions-DTMcB_9z.js → clipOptions-8BPf0WMZ.js} +1013 -755
  8. package/dist/{clipOptions-BWHr3aTa.js → clipOptions-DBJX_W31.js} +1033 -775
  9. package/dist/{debug-CVpoEOWx.js → debug-BEWbYuZD.js} +2 -2
  10. package/dist/{debug-DYAMZZKl.js → debug-DQj_7mFm.js} +2 -2
  11. package/dist/index.es.js +65 -65
  12. package/dist/index.js +406 -362
  13. package/dist/{indexer-DAH_ruVn.js → indexer-Cdt_U05k.js} +1 -1
  14. package/dist/{indexer-CXjZDo2Q.js → indexer-D8Bgkkb8.js} +1 -1
  15. package/dist/order-BPOzLe80.js +1056 -0
  16. package/dist/order-DIxlclRN.js +1056 -0
  17. package/dist/rasterExport-Bl6w9t3J.js +51 -0
  18. package/dist/rasterExport-DRvNAH-r.js +51 -0
  19. package/dist/rasterization-D0tOoKu_.js +62 -0
  20. package/dist/rectangle-DE98gIxF.js +108 -0
  21. package/dist/{renderCanvas2D-DxturTEW.js → renderCanvas2D-Ct95auF3.js} +60 -59
  22. package/dist/{renderCanvas2D-DtcJjqpB.js → renderCanvas2D-LdEYFnRo.js} +71 -70
  23. package/dist/schema.json +588 -116
  24. package/dist/{svg-CyrLfa9e.js → svg-Ag36-h_I.js} +394 -382
  25. package/dist/{svg-SDJMzL--.js → svg-pkTPD4bv.js} +368 -356
  26. package/dist/{svgRasterizer-f7DJ3UO0.js → svgRasterizer-CksK4QTB.js} +6 -5
  27. package/dist/{svgRasterizer-mWK7HTkx.js → svgRasterizer-DrtJ9nLk.js} +6 -5
  28. package/dist/{vega-scale-CypF85iS.js → vega-scale-BJaDSHBJ.js} +891 -959
  29. package/dist/{vega-scale-DLKCwWRs.js → vega-scale-BWBFykuI.js} +692 -760
  30. package/dist/{viewIdentityRegistry-DIDo44XQ.js → viewIdentityRegistry-B-snqI3y.js} +1 -1
  31. package/dist/{viewIdentityRegistry-Dl-vMN9I.js → viewIdentityRegistry-BvCJajXG.js} +1 -1
  32. package/dist/{viewSelectors-CymbZyE6.js → viewSelectors-BlvzvG-z.js} +445 -380
  33. package/dist/{viewSelectors-DNiDip5e.js → viewSelectors-C5q3qBiR.js} +364 -299
  34. package/dist/{viewUtils-BrJLIj2o.js → viewUtils-C3vBtSvE.js} +1714 -1689
  35. package/dist/{webgl-tZfZ8y3q.js → webgl-CZX2pe5v.js} +2319 -972
  36. package/dist/{webgl-CTJt7jQd.js → webgl-CexXSw_I.js} +2371 -1024
  37. package/package.json +5 -5
  38. package/dist/order-C5CzA37O.js +0 -918
  39. package/dist/order-DvY7KNcu.js +0 -918
  40. package/dist/rasterExport-BgZ98e6U.js +0 -44
  41. package/dist/rasterExport-DEr8fOLm.js +0 -44
  42. package/dist/rasterization-CFogVB3B.js +0 -50
  43. package/dist/rectangle-DKnrAmKs.js +0 -142
@@ -1,14 +1,14 @@
1
- import { Zt as e, a as t, o as n, s as r, u as i } from "./clipOptions-DTMcB_9z.js";
1
+ import { a as e, hn as t, m as n, o as r, s as i } from "./clipOptions-DBJX_W31.js";
2
2
  import { t as a } from "./warning-CpIIpk8e.js";
3
- import { n as o } from "./layoutResult-D50MSHXR.js";
4
- import { n as s } from "./performanceProfiler-CPLEjApa.js";
5
- import { A as c, C as l, D as u, E as d, M as f, N as p, O as m, _ as h, a as g, c as _, d as v, f as y, g as b, h as x, i as S, k as C, l as w, m as ee, n as T, o as E, p as D, r as O, s as k, t as A, u as j, v as M, x as N, y as P } from "./order-DvY7KNcu.js";
3
+ import { n as o } from "./performanceProfiler-CPLEjApa.js";
4
+ import { n as s } from "./layoutResult-D50MSHXR.js";
5
+ import { A as c, E as l, F as u, I as d, M as f, N as p, S as m, _ as h, a as g, b as _, c as v, d as y, f as b, g as x, h as S, i as C, j as w, k as T, l as ee, m as E, p as D, s as O, t as k, u as A, v as j, w as M, x as N, y as P } from "./order-DIxlclRN.js";
6
6
  //#region ../core/src/rendering/canvas2d/renderers/arrow.js
7
7
  function F(e, t) {
8
- let n = e, r = t.context, i = n.encoders, a = P(n);
8
+ let n = e, r = t.context, i = n.encoders, a = m(n);
9
9
  r.lineJoin = "miter";
10
10
  let o, s;
11
- return N(n, a, t, (e) => {
11
+ return M(n, a, t, (e) => {
12
12
  e.headShapeFallback && t.warn(`Canvas2D rendered unsupported arrow headShape "${a.headShape}" as a triangle.`), r.beginPath();
13
13
  for (let t of e.boundaryLoops) {
14
14
  let e = t[0];
@@ -16,41 +16,41 @@ function F(e, t) {
16
16
  for (let e = 1; e < t.length; e++) r.lineTo(t[e].x, t[e].y);
17
17
  r.closePath();
18
18
  }
19
- let n = u(i.fill(e.datum)), c = l(i.fillOpacity, e.datum) * t.viewOpacity;
20
- n != "none" && c > 0 && (o != n && (r.fillStyle = n, o = n), r.globalAlpha = c, r.fill());
21
- let d = u(i.stroke(e.datum)), f = l(i.strokeOpacity, e.datum) * t.viewOpacity;
19
+ let n = c(i.fill(e.datum)), u = l(i.fillOpacity, e.datum) * t.viewOpacity;
20
+ n != "none" && u > 0 && (o != n && (r.fillStyle = n, o = n), r.globalAlpha = u, r.fill());
21
+ let d = c(i.stroke(e.datum)), f = l(i.strokeOpacity, e.datum) * t.viewOpacity;
22
22
  d != "none" && f > 0 && e.strokeWidth > 0 && (s != d && (r.strokeStyle = d, s = d), r.globalAlpha = f, r.lineWidth = e.strokeWidth, r.stroke());
23
23
  });
24
24
  }
25
25
  //#endregion
26
26
  //#region ../core/src/rendering/canvas2d/renderers/link.js
27
- function I(t, n) {
28
- let r = t, i = n.context, a = r.encoders, o = ee(r), s = M(r, o.shape, n.secondOrderPass);
27
+ function I(e, t) {
28
+ let r = e, i = t.context, a = r.encoders, o = h(r), s = N(r, o.shape, t.secondOrderPass);
29
29
  i.lineCap = "butt";
30
- let c;
31
- return x(r, o, n, (t) => {
32
- let r = u(a.color(t.datum)), o = l(a.opacity, t.datum) * n.viewOpacity;
33
- if (r == "none" || o <= 0 || t.strokeWidth <= 0) return;
34
- let d = s && h(t.points[0], t.points[3], s);
30
+ let u;
31
+ return j(r, o, t, (e) => {
32
+ let r = c(a.color(e.datum)), o = l(a.opacity, e.datum) * t.viewOpacity;
33
+ if (r == "none" || o <= 0 || e.strokeWidth <= 0) return;
34
+ let d = s && _(e.points[0], e.points[3], s);
35
35
  if (d) {
36
- let { normalX: t, normalY: n, offset: a, start: o, end: s } = d, l = i.createLinearGradient(t * (a - s), n * (a - s), t * (a + s), n * (a + s)), u = e(r), f = u.opacity;
37
- for (let e of b(o, s)) u.opacity = f * e.opacity, l.addColorStop(e.offset, u.formatRgb());
38
- i.strokeStyle = l, c = void 0;
39
- } else c != r && (i.strokeStyle = r, c = r);
40
- i.globalAlpha = o, i.lineWidth = t.strokeWidth;
41
- let [f, p, m, g] = t.points;
42
- i.beginPath(), i.moveTo(f[0], f[1]), i.bezierCurveTo(p[0], p[1], m[0], m[1], g[0], g[1]), i.stroke();
36
+ let { normalX: e, normalY: t, offset: a, start: o, end: s } = d, c = i.createLinearGradient(e * (a - s), t * (a - s), e * (a + s), t * (a + s)), l = n(r), f = l.opacity;
37
+ for (let e of P(o, s)) l.opacity = f * e.opacity, c.addColorStop(e.offset, l.formatRgb());
38
+ i.strokeStyle = c, u = void 0;
39
+ } else u != r && (i.strokeStyle = r, u = r);
40
+ i.globalAlpha = o, i.lineWidth = e.strokeWidth;
41
+ let [f, p, m, h] = e.points;
42
+ i.beginPath(), i.moveTo(f[0], f[1]), i.bezierCurveTo(p[0], p[1], m[0], m[1], h[0], h[1]), i.stroke();
43
43
  });
44
44
  }
45
45
  //#endregion
46
46
  //#region ../core/src/rendering/canvas2d/renderers/point.js
47
47
  function L(e, t) {
48
48
  let n = e;
49
- d(n, n.properties.fillGradientStrength) && t.warn("Canvas2D ignored unsupported point property fillGradientStrength."), n.properties.geometricZoomBound && t.warn("Canvas2D ignored unsupported point property geometricZoomBound.");
50
- let r = y(n), i = t.context, a = n.encoders, o, s;
51
- return D(n, r, t, (e) => {
52
- let n = e.datum, r = e.lineShape, c = u(a.fill(n)), d = l(a.fillOpacity, n) * t.viewOpacity, f = u(a.stroke(n)), p = l(a.strokeOpacity, n) * t.viewOpacity;
53
- r && (f == "none" || p <= 0) && (f = c, p = d), i.beginPath();
49
+ T(n, n.properties.fillGradientStrength) && t.warn("Canvas2D ignored unsupported point property fillGradientStrength."), n.properties.geometricZoomBound && t.warn("Canvas2D ignored unsupported point property geometricZoomBound.");
50
+ let r = S(n), i = t.context, a = n.encoders, o, s;
51
+ return x(n, r, t, (e) => {
52
+ let n = e.datum, r = e.lineShape, u = c(a.fill(n)), d = l(a.fillOpacity, n) * t.viewOpacity, f = c(a.stroke(n)), p = l(a.strokeOpacity, n) * t.viewOpacity;
53
+ r && (f == "none" || p <= 0) && (f = u, p = d), i.beginPath();
54
54
  let m = e.angle != 0 && e.shape != "circle";
55
55
  m && (i.save(), i.translate(e.x, e.y), i.rotate(e.angle * Math.PI / 180));
56
56
  let h = m ? 0 : e.x, g = m ? 0 : e.y, _ = !0;
@@ -58,8 +58,8 @@ function L(e, t) {
58
58
  else if (e.shape == "square") {
59
59
  let t = e.geometryRadius * 2;
60
60
  i.rect(h - e.geometryRadius, g - e.geometryRadius, t, t);
61
- } else _ = v(e.shape, h, g, e.geometryRadius, i);
62
- m && i.restore(), _ || (t.warn(`Canvas2D rendered unsupported point shape "${e.shape}" as a circle.`), i.arc(e.x, e.y, e.geometryRadius, 0, Math.PI * 2)), !r && c != "none" && d > 0 && (o != c && (i.fillStyle = c, o = c), R(i, d), i.fill()), f != "none" && p > 0 && e.strokeWidth > 0 && (r && i.lineCap != "butt" && (i.lineCap = "butt"), s != f && (i.strokeStyle = f, s = f), R(i, p), z(i, e.strokeWidth), i.stroke());
61
+ } else _ = E(e.shape, h, g, e.geometryRadius, i);
62
+ m && i.restore(), _ || (t.warn(`Canvas2D rendered unsupported point shape "${e.shape}" as a circle.`), i.arc(e.x, e.y, e.geometryRadius, 0, Math.PI * 2)), !r && u != "none" && d > 0 && (o != u && (i.fillStyle = u, o = u), R(i, d), i.fill()), f != "none" && p > 0 && e.strokeWidth > 0 && (r && i.lineCap != "butt" && (i.lineCap = "butt"), s != f && (i.strokeStyle = f, s = f), R(i, p), z(i, e.strokeWidth), i.stroke());
63
63
  });
64
64
  }
65
65
  function R(e, t) {
@@ -71,20 +71,20 @@ function z(e, t) {
71
71
  //#endregion
72
72
  //#region ../core/src/rendering/canvas2d/renderers/rect.js
73
73
  function B(e, t) {
74
- let n = e, r = w(n);
74
+ let n = e, r = b(n);
75
75
  r.hatch != "none" && t.warn("Canvas2D ignored unsupported rect hatch.");
76
76
  let i = t.start ?? 0;
77
77
  if (i === (t.end ?? t.data.length)) return 0;
78
- let a = t.context, o = n.encoders, s, c, d = [
78
+ let a = t.context, o = n.encoders, s, u, d = [
79
79
  0,
80
80
  0,
81
81
  0,
82
82
  0
83
- ], f = o.stroke.constant, p = o.strokeOpacity.constant, m = f ? u(o.stroke(t.data[i])) : "none", h = f && m == "none", g = !h && p ? l(o.strokeOpacity, t.data[i]) : 0;
84
- return j(n, r, t, (e) => {
83
+ ], f = o.stroke.constant, p = o.strokeOpacity.constant, m = f ? c(o.stroke(t.data[i])) : "none", h = f && m == "none", g = !h && p ? l(o.strokeOpacity, t.data[i]) : 0;
84
+ return D(n, r, t, (e) => {
85
85
  r.shadow.opacity > 0 && V(e, r.shadow, t, d);
86
- let n = e.opacityFactor, i = e.fill != "none" && e.fillOpacity > 0, _ = f ? m : u(o.stroke(e.datum)), v = (p ? g : l(o.strokeOpacity, e.datum)) * t.viewOpacity * n, y = !h && _ != "none" && v > 0 && e.strokeWidth > 0, b = r.hasCornerRadii && (e.radii.topLeft != 0 || e.radii.topRight != 0 || e.radii.bottomRight != 0 || e.radii.bottomLeft != 0);
87
- b && (i || y) && (d[0] = e.radii.topLeft, d[1] = e.radii.topRight, d[2] = e.radii.bottomRight, d[3] = e.radii.bottomLeft, a.beginPath(), a.roundRect(e.x, e.y, e.width, e.height, d)), i && (s != e.fill && (a.fillStyle = e.fill, s = e.fill), H(a, e.fillOpacity * n), b ? a.fill() : a.fillRect(e.x, e.y, e.width, e.height)), y && (c != _ && (a.strokeStyle = _, c = _), H(a, v), U(a, e.strokeWidth), b ? a.stroke() : a.strokeRect(e.x, e.y, e.width, e.height));
86
+ let n = e.opacityFactor, i = e.fill != "none" && e.fillOpacity > 0, _ = f ? m : c(o.stroke(e.datum)), v = (p ? g : l(o.strokeOpacity, e.datum)) * t.viewOpacity * n, y = !h && _ != "none" && v > 0 && e.strokeWidth > 0, b = r.hasCornerRadii && (e.radii.topLeft != 0 || e.radii.topRight != 0 || e.radii.bottomRight != 0 || e.radii.bottomLeft != 0);
87
+ b && (i || y) && (d[0] = e.radii.topLeft, d[1] = e.radii.topRight, d[2] = e.radii.bottomRight, d[3] = e.radii.bottomLeft, a.beginPath(), a.roundRect(e.x, e.y, e.width, e.height, d)), i && (s != e.fill && (a.fillStyle = e.fill, s = e.fill), H(a, e.fillOpacity * n), b ? a.fill() : a.fillRect(e.x, e.y, e.width, e.height)), y && (u != _ && (a.strokeStyle = _, u = _), H(a, v), U(a, e.strokeWidth), b ? a.stroke() : a.strokeRect(e.x, e.y, e.width, e.height));
88
88
  });
89
89
  }
90
90
  function V(e, t, n, r) {
@@ -106,32 +106,32 @@ function U(e, t) {
106
106
  //#region ../core/src/rendering/canvas2d/renderers/rule.js
107
107
  function W(e, t) {
108
108
  let n = e, r = t.context, i = n.encoders;
109
- r.lineCap = d(n, n.properties.strokeCap), r.setLineDash(d(n, n.properties.strokeDash) ?? []), r.lineDashOffset = d(n, n.properties.strokeDashOffset);
109
+ r.lineCap = T(n, n.properties.strokeCap), r.setLineDash(T(n, n.properties.strokeDash) ?? []), r.lineDashOffset = T(n, n.properties.strokeDashOffset);
110
110
  let a;
111
- return _(n, k(n), t, (e) => {
112
- let n = u(i.color(e.datum)), o = l(i.opacity, e.datum) * t.viewOpacity;
111
+ return y(n, A(n), t, (e) => {
112
+ let n = c(i.color(e.datum)), o = l(i.opacity, e.datum) * t.viewOpacity;
113
113
  n == "none" || o <= 0 || e.strokeWidth <= 0 || (a != n && (r.strokeStyle = n, a = n), r.globalAlpha = o, r.lineWidth = e.strokeWidth, r.beginPath(), r.moveTo(e.x1, e.y1), r.lineTo(e.x2, e.y2), r.stroke());
114
114
  });
115
115
  }
116
116
  //#endregion
117
117
  //#region ../core/src/rendering/canvas2d/renderers/text.js
118
118
  function G(e, t) {
119
- let n = e, r = n.properties, i = g(n), a = t.context, o = n.encoders, s = T(r.font), c = `${r.fontStyle ?? "normal"} ${S(r.fontWeight ?? "normal")} `, f = i.baseline == "baseline" ? "alphabetic" : i.baseline;
119
+ let n = e, r = n.properties, i = t.textMetrics ?? n.unitView.context.textMetrics, a = i.requestFont(r), o = C(i, r), s = v(n), u = t.context, d = n.encoders, f = g(r.font), p = `${r.fontStyle ?? "normal"} ${O(r.fontWeight ?? "normal")} `, m = s.baseline == "baseline" ? "alphabetic" : s.baseline;
120
120
  [
121
121
  r.viewportEdgeFadeWidthTop,
122
122
  r.viewportEdgeFadeWidthRight,
123
123
  r.viewportEdgeFadeWidthBottom,
124
124
  r.viewportEdgeFadeWidthLeft
125
- ].some((e) => d(n, e) > 0) && t.warn("Canvas2D ignored unsupported text viewport edge fading.");
126
- let p, m;
127
- return i.logoLetters || (a.textAlign = i.align, a.textBaseline = f), E(n, i, t, (e) => {
125
+ ].some((e) => T(n, e) > 0) && t.warn("Canvas2D ignored unsupported text viewport edge fading.");
126
+ let h, _;
127
+ return s.logoLetters || (u.textAlign = s.align, u.textBaseline = m), ee(n, s, {
128
+ ...t,
129
+ fontMeasurement: a,
130
+ measureLogoInkBounds: o
131
+ }, (e) => {
128
132
  e.multiCharacterLogo && t.warn("Canvas2D stretches multi-character logo text as a single glyph cell.");
129
- let n = u(o.color(e.datum)), r = l(o.opacity, e.datum) * t.viewOpacity * e.fadeOpacity;
130
- if (!(n == "none" || r <= 0)) if (p != n && (a.fillStyle = n, p = n), a.globalAlpha = r, m != e.size && (a.font = `${c}${e.size}px ${s}`, m = e.size), e.logoScale) {
131
- a.save(), a.translate(e.x, e.y), a.rotate(e.angle * Math.PI / 180), a.translate(e.dx, e.dy);
132
- let t = a.measureText(e.text).width;
133
- a.scale(e.logoScale.width / t, e.logoScale.heightScale), a.textAlign = "center", a.textBaseline = "alphabetic", a.fillText(e.text, 0, O("middle", 1)), a.restore();
134
- } else e.angle ? (a.save(), a.translate(e.x, e.y), a.rotate(e.angle * Math.PI / 180), a.fillText(e.text, e.dx, e.dy, e.width), a.restore()) : a.fillText(e.text, e.x + e.dx, e.y + e.dy, e.width);
133
+ let n = c(d.color(e.datum)), r = l(d.opacity, e.datum) * t.viewOpacity * e.fadeOpacity;
134
+ n == "none" || r <= 0 || (h != n && (u.fillStyle = n, h = n), u.globalAlpha = r, _ != e.size && (u.font = `${p}${e.size}px ${f}`, _ = e.size), e.logoTransform ? (u.save(), u.translate(e.x, e.y), u.rotate(e.angle * Math.PI / 180), u.translate(e.dx, e.dy), u.scale(e.logoTransform.scaleX, e.logoTransform.scaleY), u.translate(-e.logoTransform.originX, -e.logoTransform.originY), u.textAlign = "left", u.textBaseline = "alphabetic", u.fillText(e.text, 0, 0), u.restore()) : e.angle || e.scale != 1 ? (u.save(), u.translate(e.x, e.y), u.rotate(e.angle * Math.PI / 180), u.translate(e.dx, e.dy), u.scale(e.scale, e.scale), u.fillText(e.text, 0, 0), u.restore()) : u.fillText(e.text, e.x + e.dx, e.y + e.dy));
135
135
  });
136
136
  }
137
137
  //#endregion
@@ -147,20 +147,20 @@ function q(e) {
147
147
  }
148
148
  //#endregion
149
149
  //#region ../core/src/rendering/canvas2d/canvas2DViewRenderingContext.js
150
- var J = 8, Y = 16777216, X = class extends o {
150
+ var J = 8, Y = 16777216, X = class extends s {
151
151
  #e = [];
152
152
  #t = /* @__PURE__ */ new WeakSet();
153
153
  #n = /* @__PURE__ */ new WeakMap();
154
154
  #r;
155
155
  #i;
156
- #a = new f();
156
+ #a = new u();
157
157
  #o;
158
158
  #s = [0, 0];
159
159
  #c;
160
160
  #l;
161
161
  #u = [];
162
162
  constructor(e, t) {
163
- if (super(e), this.context = t.context, this.width = t.width, this.height = t.height, this.devicePixelRatio = t.devicePixelRatio, this.paint = t.paint, this.#r = t.markPredicate ?? (() => !0), this.#i = s(), this.#o = t.xIndexManager, this.#l = t.opacityLayers ?? [], this.#c = {
163
+ if (super(e), this.context = t.context, this.width = t.width, this.height = t.height, this.devicePixelRatio = t.devicePixelRatio, this.paint = t.paint, this.textMetrics = t.textMetrics, this.#r = t.markPredicate ?? (() => !0), this.#i = o(), this.#o = t.xIndexManager, this.#l = t.opacityLayers ?? [], this.#c = {
164
164
  x: 0,
165
165
  y: 0,
166
166
  width: this.context.canvas.width,
@@ -173,18 +173,18 @@ var J = 8, Y = 16777216, X = class extends o {
173
173
  getDevicePixelRatio() {
174
174
  return this.devicePixelRatio;
175
175
  }
176
- pushView(e, n) {
177
- this.paint && !this.#t.has(e) && (e.onBeforeRender(), this.#t.add(e));
178
- let r = e.getOpacity();
176
+ pushView(t, n) {
177
+ this.paint && !this.#t.has(t) && (t.onBeforeRender(), this.#t.add(t));
178
+ let r = t.getOpacity();
179
179
  if (this.paint && r > 0 && r !== 1) {
180
- let r = t(e), i = Z(n, this.devicePixelRatio, this.#c, r), a = Q(this.#l, this.#u.length, i.width, i.height);
180
+ let r = e(t), i = Z(n, this.devicePixelRatio, this.#c, r), a = Q(this.#l, this.#u.length, i.width, i.height);
181
181
  a.setTransform(this.devicePixelRatio, 0, 0, this.devicePixelRatio, -i.x, -i.y), this.#u.push({
182
182
  context: this.context,
183
183
  bounds: this.#c
184
184
  }), this.context = a, this.#c = i;
185
185
  }
186
186
  this.#e.push({
187
- view: e,
187
+ view: t,
188
188
  coords: n,
189
189
  opacity: r
190
190
  });
@@ -206,24 +206,24 @@ var J = 8, Y = 16777216, X = class extends o {
206
206
  }
207
207
  renderMark(e, t) {
208
208
  if (!this.paint || !this.#r(e)) return;
209
- let i = this.#n.get(e.unitView);
210
- if (i === void 0 && (i = e.unitView.getEffectiveOpacity(), this.#n.set(e.unitView, i)), i <= 0) return;
209
+ let n = this.#n.get(e.unitView);
210
+ if (n === void 0 && (n = e.unitView.getEffectiveOpacity(), this.#n.set(e.unitView, n)), n <= 0) return;
211
211
  e.initializeRenderingRevisions(Object.keys(e.properties));
212
212
  let o = t.sampleFacetRenderingOptions;
213
213
  if (o && !e.encoders.facetIndex && (this.#i?.addCount("canvasSampleFacetOccurrences"), !q(o))) {
214
214
  this.#i?.addCount("canvasCulledSampleFacetOccurrences");
215
215
  return;
216
216
  }
217
- let s = this.currentCoords, l = n(t), u = r(l, e.properties.clip, s), d = C(this.width, this.height, u);
218
- if (!c(d)) return;
219
- let f = m(s, l, e.properties.cullByVisibleRange), h = this.#o?.prepare(e) ?? !1, g = this.context;
220
- if (g.save(), u) {
221
- let e = u.rect.flatten(), t = u.clipX ? e.x : 0, n = u.clipY ? e.y : 0, r = u.clipX ? e.width : this.width, i = u.clipY ? e.height : this.height;
217
+ let s = this.currentCoords, c = r(t), l = i(c, e.properties.clip, s), u = f(this.width, this.height, l);
218
+ if (!p(u)) return;
219
+ let m = w(s, c, e.properties.cullByVisibleRange), h = this.#o?.prepare(e) ?? !1, g = this.context;
220
+ if (g.save(), l) {
221
+ let e = l.rect.flatten(), t = l.clipX ? e.x : 0, n = l.clipY ? e.y : 0, r = l.clipX ? e.width : this.width, i = l.clipY ? e.height : this.height;
222
222
  g.beginPath(), g.rect(t, n, r, i), g.clip();
223
223
  }
224
224
  try {
225
225
  let n = e.getOrder?.(), r = n && n.isActive();
226
- p(e, t, s, this.#a, (t, i) => {
226
+ d(e, t, s, this.#a, (t, i) => {
227
227
  let o = 0, s = i.length;
228
228
  h && this.#o.query(i, this.#s) && (o = this.#s[0], s = this.#s[1]);
229
229
  let c = (n, r, i, o = !1) => K(e, {
@@ -234,14 +234,15 @@ var J = 8, Y = 16777216, X = class extends o {
234
234
  secondOrderPass: o,
235
235
  start: r,
236
236
  end: i,
237
- visibleBounds: d,
238
- anchorCullBounds: f,
237
+ visibleBounds: u,
238
+ anchorCullBounds: m,
239
239
  viewOpacity: 1,
240
+ textMetrics: this.textMetrics,
240
241
  warn: (t) => a(`${t} View: ${e.unitView.getPathString()}`)
241
242
  });
242
243
  if (!r) return c(i, o, s);
243
- let l = 0, u = A(i, o, s, n.predicate, n.passes);
244
- for (let [e, t] of u.entries()) t.length > 0 && (l += c(t, 0, t.length, e === 1));
244
+ let l = 0, d = k(i, o, s, n.predicate, n.passes);
245
+ for (let [e, t] of d.entries()) t.length > 0 && (l += c(t, 0, t.length, e === 1));
245
246
  return l;
246
247
  }, (t) => a(`Canvas2D could not resolve sample facet index ${t}. View: ${e.unitView.getPathString()}`));
247
248
  } finally {
@@ -249,7 +250,7 @@ var J = 8, Y = 16777216, X = class extends o {
249
250
  }
250
251
  }
251
252
  get currentCoords() {
252
- let e = i(this.#e);
253
+ let e = t(this.#e);
253
254
  if (!e) throw Error("No current view in Canvas2D rendering context.");
254
255
  return e.coords;
255
256
  }