modern-canvas 0.15.4 → 0.15.6

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
@@ -331,14 +331,14 @@ class Wi extends cs {
331
331
  static DOM_DELTA_PAGE = 2;
332
332
  DOM_DELTA_PAGE = 2;
333
333
  }
334
- const ji = {
334
+ const qi = {
335
335
  touchstart: "pointerdown",
336
336
  touchend: "pointerup",
337
337
  touchendoutside: "pointerupoutside",
338
338
  touchmove: "pointermove",
339
339
  touchcancel: "pointercancel"
340
340
  };
341
- class qi extends Ct {
341
+ class ji extends Ct {
342
342
  /**
343
343
  * Current event
344
344
  */
@@ -387,7 +387,7 @@ class qi extends Ct {
387
387
  }
388
388
  _clonePointerEvent(t) {
389
389
  const e = new Xi();
390
- return e.nativeEvent = t, e.pointerId = t.pointerId, e.width = t.width, e.height = t.height, e.isPrimary = t.isPrimary, e.pointerType = t.pointerType, e.pressure = t.pressure, e.tangentialPressure = t.tangentialPressure, e.tiltX = t.tiltX, e.tiltY = t.tiltY, e.twist = t.twist, e.isTrusted = t.isTrusted, this._copyMouseEvent(e, t), this.mapPositionToPoint(e.screen, t.clientX, t.clientY), e.global.x = e.screen.x, e.global.y = e.screen.y, e.offset.x = e.screen.x, e.offset.y = e.screen.y, e.type === "pointerleave" ? e.type = "pointerout" : e.type.startsWith("mouse") ? e.type = e.type.replace("mouse", "pointer") : e.type.startsWith("touch") && (e.type = ji[e.type] || e.type), e;
390
+ return e.nativeEvent = t, e.pointerId = t.pointerId, e.width = t.width, e.height = t.height, e.isPrimary = t.isPrimary, e.pointerType = t.pointerType, e.pressure = t.pressure, e.tangentialPressure = t.tangentialPressure, e.tiltX = t.tiltX, e.tiltY = t.tiltY, e.twist = t.twist, e.isTrusted = t.isTrusted, this._copyMouseEvent(e, t), this.mapPositionToPoint(e.screen, t.clientX, t.clientY), e.global.x = e.screen.x, e.global.y = e.screen.y, e.offset.x = e.screen.x, e.offset.y = e.screen.y, e.type === "pointerleave" ? e.type = "pointerout" : e.type.startsWith("mouse") ? e.type = e.type.replace("mouse", "pointer") : e.type.startsWith("touch") && (e.type = qi[e.type] || e.type), e;
391
391
  }
392
392
  _copyInputEvent(t, e) {
393
393
  t.nativeEvent = e, t.bubbles = e.bubbles, t.cancelBubble = e.cancelBubble, t.cancelable = e.cancelable, t.composed = e.composed, t.currentTarget = e.currentTarget, t.defaultPrevented = e.defaultPrevented, t.eventPhase = e.eventPhase, t.isTrusted = e.isTrusted, t.returnValue = e.returnValue, t.srcElement = e.srcElement, t.timeStamp = e.timeStamp, t.type = e.type;
@@ -616,7 +616,7 @@ class R {
616
616
  this._onUpdate = void 0;
617
617
  }
618
618
  }
619
- class q {
619
+ class j {
620
620
  get x() {
621
621
  return this.min.x;
622
622
  }
@@ -715,11 +715,11 @@ class q {
715
715
  }
716
716
  contains(t) {
717
717
  let e, s;
718
- return t instanceof q ? (e = t.min, s = t.max) : (e = t, s = t), this.max.x >= s.x && this.max.y >= s.y && this.min.x <= e.x && this.min.y <= e.y;
718
+ return t instanceof j ? (e = t.min, s = t.max) : (e = t, s = t), this.max.x >= s.x && this.max.y >= s.y && this.min.x <= e.x && this.min.y <= e.y;
719
719
  }
720
720
  getIntersectionRect(t) {
721
721
  const e = Math.max(this.min.x, t.min.x), s = Math.max(this.min.y, t.min.y), i = Math.min(this.max.x, t.max.x), a = Math.min(this.max.y, t.max.y);
722
- return i <= e || a <= s ? new q() : new q(
722
+ return i <= e || a <= s ? new j() : new j(
723
723
  e,
724
724
  s,
725
725
  Math.max(0, i - e),
@@ -755,7 +755,7 @@ class q {
755
755
  };
756
756
  }
757
757
  clone() {
758
- return new q(this.toJSON());
758
+ return new j(this.toJSON());
759
759
  }
760
760
  destroy() {
761
761
  this.min.destroy(), this.size.destroy(), this.max.destroy();
@@ -1106,7 +1106,7 @@ class us {
1106
1106
  return this._array;
1107
1107
  }
1108
1108
  }
1109
- class Oe extends q {
1109
+ class Oe extends j {
1110
1110
  /**
1111
1111
  * Rotation radians
1112
1112
  */
@@ -1422,7 +1422,7 @@ function ta(r, t) {
1422
1422
  let e = $r[r];
1423
1423
  return e === void 0 && (Je[t] === void 0 && (Je[t] = 1), $r[r] = e = Je[t]++), e;
1424
1424
  }
1425
- class j extends Ct {
1425
+ class q extends Ct {
1426
1426
  get _gl() {
1427
1427
  return this._renderer.gl;
1428
1428
  }
@@ -1442,7 +1442,7 @@ class j extends Ct {
1442
1442
  reset() {
1443
1443
  }
1444
1444
  }
1445
- class ea extends j {
1445
+ class ea extends q {
1446
1446
  install(t) {
1447
1447
  super.install(t), t.buffer = this;
1448
1448
  }
@@ -1733,7 +1733,7 @@ function fa(r, t) {
1733
1733
  const e = ps(r, t);
1734
1734
  return da[e] || "float32";
1735
1735
  }
1736
- class pa extends j {
1736
+ class pa extends q {
1737
1737
  install(t) {
1738
1738
  super.install(t), t.shader = this;
1739
1739
  }
@@ -1964,7 +1964,7 @@ class Bt {
1964
1964
  }
1965
1965
  }
1966
1966
  Bt._init();
1967
- class ma extends j {
1967
+ class ma extends q {
1968
1968
  install(t) {
1969
1969
  super.install(t), t.state = this;
1970
1970
  }
@@ -2022,7 +2022,7 @@ class ma extends j {
2022
2022
  super.reset(), this.bind(this.defaultState), this._blendEq = !0, this.setBlendMode(ie.normal);
2023
2023
  }
2024
2024
  }
2025
- class ga extends j {
2025
+ class ga extends q {
2026
2026
  install(t) {
2027
2027
  super.install(t), t.batch2D = this;
2028
2028
  }
@@ -2096,23 +2096,23 @@ in vec4 vModulate;
2096
2096
 
2097
2097
  uniform sampler2D samplers[${t}];
2098
2098
 
2099
- void main(void) {
2100
- vec2 uv = vUv;
2101
-
2099
+ vec4 textureColor() {
2102
2100
  vec4 color = vec4(0.0);
2103
- ${Array.from({ length: t }, (n, h) => {
2104
- const u = `if (vTextureId < ${h}.5) { color = texture(samplers[${h}], uv); }`;
2101
+ ${Array.from({ length: t }, (n, h) => {
2102
+ const u = `if (vTextureId < ${h}.5) { color = texture(samplers[${h}], vUv); }`;
2105
2103
  return h === 0 ? `
2106
2104
  ${u}` : `
2107
2105
  else ${u}`;
2108
2106
  }).join("")}
2107
+ color *= vModulate;
2108
+ return color;
2109
+ }
2109
2110
 
2110
- if (vClipOutsideUv == 1. && (uv.x < 0.0 || uv.y < 0.0 || uv.x > 1.0 || uv.y > 1.0)) {
2111
- color.a = 0.0;
2111
+ void main(void) {
2112
+ vec4 color = textureColor();
2113
+ if (vClipOutsideUv == 1. && (vUv.x < 0.0 || vUv.y < 0.0 || vUv.x > 1.0 || vUv.y > 1.0)) {
2114
+ color = vec4(0.0);
2112
2115
  }
2113
-
2114
- color *= vModulate;
2115
-
2116
2116
  finalColor = color;
2117
2117
  }`
2118
2118
  })
@@ -2175,7 +2175,7 @@ ${Array.from({ length: t }, (n, h) => {
2175
2175
  for (let ft = S; ft <= O; ft++) {
2176
2176
  const {
2177
2177
  indices: Nr,
2178
- vertices: je,
2178
+ vertices: qe,
2179
2179
  uvs: Ur = new Float32Array(0),
2180
2180
  size: Zs = { width: 0, height: 0 },
2181
2181
  texture: Br,
@@ -2185,10 +2185,10 @@ ${Array.from({ length: t }, (n, h) => {
2185
2185
  modulate: ye = [255, 255, 255, 255]
2186
2186
  } = s[ft];
2187
2187
  S < ft && _.blendMode !== Lr && (_.size = u - _.start, d.push(_), S = ft, _ = { id: ++f }, _.textures = m, _.start = u);
2188
- const { width: qe, height: Ye } = Zs, ti = h / this._vertexSize, ei = (Br ? v.get(Br) : 255) ?? 255, ri = Qs ? 1 : 0, si = Js ? 1 : 0;
2188
+ const { width: je, height: Ye } = Zs, ti = h / this._vertexSize, ei = (Br ? v.get(Br) : 255) ?? 255, ri = Qs ? 1 : 0, si = Js ? 1 : 0;
2189
2189
  let xe, we, J;
2190
- for (let Ke = je.length, Q = 0; Q < Ke; Q += 2)
2191
- xe = Ur[Q], we = Ur[Q + 1], qe > 0 && Ye > 0 && (xe = Math.ceil(xe * qe) / qe, we = Math.ceil(we * Ye) / Ye), o[h++] = je[Q], o[h++] = je[Q + 1], o[h++] = xe, o[h++] = we, J = h * 4, l[J] = ei, l[J + 1] = si, l[J + 2] = ri, l[J + 3] = 0, h++, J = h * 4, l[J] = ye[0], l[J + 1] = ye[1], l[J + 2] = ye[2], l[J + 3] = ye[3], h++;
2190
+ for (let Ke = qe.length, Q = 0; Q < Ke; Q += 2)
2191
+ xe = Ur[Q], we = Ur[Q + 1], je > 0 && Ye > 0 && (xe = Math.ceil(xe * je) / je, we = Math.ceil(we * Ye) / Ye), o[h++] = qe[Q], o[h++] = qe[Q + 1], o[h++] = xe, o[h++] = we, J = h * 4, l[J] = ei, l[J + 1] = si, l[J + 2] = ri, l[J + 3] = 0, h++, J = h * 4, l[J] = ye[0], l[J + 1] = ye[1], l[J + 2] = ye[2], l[J + 3] = ye[3], h++;
2192
2192
  for (let Ke = Nr.length, Q = 0; Q < Ke; Q++)
2193
2193
  n[u++] = ti + Nr[Q];
2194
2194
  _.blendMode = Lr;
@@ -2211,13 +2211,13 @@ ${Array.from({ length: t }, (n, h) => {
2211
2211
  }
2212
2212
  }
2213
2213
  _getBufferData(t) {
2214
- const e = Wr(Math.ceil(t / 8)), s = jr(e), i = e * 8;
2214
+ const e = Wr(Math.ceil(t / 8)), s = qr(e), i = e * 8;
2215
2215
  this._attributeBuffer.length <= s && (this._indexBuffers.length = s + 1);
2216
2216
  let a = this._attributeBuffer[i];
2217
2217
  return a || (this._attributeBuffer[i] = a = new ArrayBuffer(i * this._vertexSize * 4)), a;
2218
2218
  }
2219
2219
  _getIndexBufferData(t) {
2220
- const e = Wr(Math.ceil(t / 12)), s = jr(e), i = e * 12;
2220
+ const e = Wr(Math.ceil(t / 12)), s = qr(e), i = e * 12;
2221
2221
  this._indexBuffers.length <= s && (this._indexBuffers.length = s + 1);
2222
2222
  let a = this._indexBuffers[s];
2223
2223
  return a || (this._indexBuffers[s] = a = new Uint32Array(i)), a;
@@ -2226,14 +2226,14 @@ ${Array.from({ length: t }, (n, h) => {
2226
2226
  function Wr(r) {
2227
2227
  return r += r === 0 ? 1 : 0, --r, r |= r >>> 1, r |= r >>> 2, r |= r >>> 4, r |= r >>> 8, r |= r >>> 16, r + 1;
2228
2228
  }
2229
- function jr(r) {
2229
+ function qr(r) {
2230
2230
  let t = (r > 65535 ? 1 : 0) << 4;
2231
2231
  r >>>= t;
2232
2232
  let e = (r > 255 ? 1 : 0) << 3;
2233
2233
  return r >>>= e, t |= e, e = (r > 15 ? 1 : 0) << 2, r >>>= e, t |= e, e = (r > 3 ? 1 : 0) << 1, r >>>= e, t |= e, t | r >> 1;
2234
2234
  }
2235
2235
  var D = /* @__PURE__ */ ((r) => (r[r.disabled = 0] = "disabled", r[r.renderingMaskAdd = 1] = "renderingMaskAdd", r[r.maskActive = 2] = "maskActive", r[r.inverseMaskActive = 3] = "inverseMaskActive", r[r.renderingMaskRemove = 4] = "renderingMaskRemove", r[r.none = 5] = "none", r))(D || {}), ee = /* @__PURE__ */ ((r) => (r[r.none = 0] = "none", r[r.color = 16384] = "color", r[r.stencil = 1024] = "stencil", r[r.depth = 256] = "depth", r[r.colorDepth = 16640] = "colorDepth", r[r.colorStencil = 17408] = "colorStencil", r[r.depthStencil = 1280] = "depthStencil", r[r.all = 17664] = "all", r))(ee || {});
2236
- class va extends j {
2236
+ class va extends q {
2237
2237
  install(t) {
2238
2238
  super.install(t), t.mask = this;
2239
2239
  }
@@ -2513,7 +2513,7 @@ const Pa = {
2513
2513
  linear: 9986,
2514
2514
  nearest: 9984
2515
2515
  }
2516
- }, qr = {
2516
+ }, jr = {
2517
2517
  linear: 9729,
2518
2518
  nearest: 9728
2519
2519
  }, Ea = {
@@ -2545,13 +2545,13 @@ function Sa(r, t, e, s, i, a, o, l) {
2545
2545
  const v = rr[o ? "clamp-to-edge" : n], w = rr[o ? "clamp-to-edge" : h], S = rr[o ? "clamp-to-edge" : u];
2546
2546
  t[i](m, t.TEXTURE_WRAP_S, v), t[i](m, t.TEXTURE_WRAP_T, w), t.TEXTURE_WRAP_R && t[i](m, t.TEXTURE_WRAP_R, S);
2547
2547
  }
2548
- if ((!l || d !== "linear") && t[i](m, t.TEXTURE_MAG_FILTER, qr[d]), e) {
2548
+ if ((!l || d !== "linear") && t[i](m, t.TEXTURE_MAG_FILTER, jr[d]), e) {
2549
2549
  if (!l || g !== "linear") {
2550
2550
  const v = Pa[f][g];
2551
2551
  t[i](m, t.TEXTURE_MIN_FILTER, v);
2552
2552
  }
2553
2553
  } else
2554
- t[i](m, t.TEXTURE_MIN_FILTER, qr[f]);
2554
+ t[i](m, t.TEXTURE_MIN_FILTER, jr[f]);
2555
2555
  if (s && p > 1) {
2556
2556
  const v = Math.min(p, t.getParameter(s.MAX_TEXTURE_MAX_ANISOTROPY_EXT));
2557
2557
  t[i](m, s.TEXTURE_MAX_ANISOTROPY_EXT, v);
@@ -2646,7 +2646,7 @@ const Ta = {
2646
2646
  buffer: Ta,
2647
2647
  image: Ra
2648
2648
  };
2649
- class Ca extends j {
2649
+ class Ca extends q {
2650
2650
  uploaders = {
2651
2651
  ...Aa
2652
2652
  };
@@ -2816,7 +2816,7 @@ const Da = {
2816
2816
  "triangle-list": 4,
2817
2817
  "triangle-strip": 5
2818
2818
  };
2819
- class Ia extends j {
2819
+ class Ia extends q {
2820
2820
  _geometryVaoHash = {};
2821
2821
  hasInstance = !1;
2822
2822
  current = null;
@@ -2961,7 +2961,7 @@ class Ia extends j {
2961
2961
  super.reset(), this.current = null, this.currentVao = null;
2962
2962
  }
2963
2963
  }
2964
- class Ma extends j {
2964
+ class Ma extends q {
2965
2965
  install(t) {
2966
2966
  super.install(t), t.colorMask = this;
2967
2967
  }
@@ -2988,7 +2988,7 @@ function ka(r, t) {
2988
2988
  height: m - _
2989
2989
  };
2990
2990
  }
2991
- class Na extends j {
2991
+ class Na extends q {
2992
2992
  install(t) {
2993
2993
  super.install(t), t.scissor = this;
2994
2994
  }
@@ -3083,7 +3083,7 @@ Ot[D.inverseMaskActive] = {
3083
3083
  passOp: "keep"
3084
3084
  }
3085
3085
  };
3086
- class Ua extends j {
3086
+ class Ua extends q {
3087
3087
  install(t) {
3088
3088
  super.install(t), t.stencil = this;
3089
3089
  }
@@ -3148,8 +3148,8 @@ class Ua extends j {
3148
3148
  super.destroy(), this._renderer.renderTarget.off("updateRenderTarget", this._updateRenderTarget);
3149
3149
  }
3150
3150
  }
3151
- class Ba extends j {
3152
- current = new q(0, 0, 0, 0);
3151
+ class Ba extends q {
3152
+ current = new j(0, 0, 0, 0);
3153
3153
  install(t) {
3154
3154
  super.install(t), t.viewport = this;
3155
3155
  }
@@ -3169,7 +3169,7 @@ class La {
3169
3169
  msaaRenderBuffer = [];
3170
3170
  depthStencilRenderBuffer;
3171
3171
  }
3172
- class Fa extends j {
3172
+ class Fa extends q {
3173
3173
  install(t) {
3174
3174
  super.install(t), t.renderTarget = this;
3175
3175
  }
@@ -3619,12 +3619,12 @@ class nh extends It {
3619
3619
  });
3620
3620
  }
3621
3621
  }
3622
- var Wa = Object.defineProperty, ja = (r, t, e, s) => {
3622
+ var Wa = Object.defineProperty, qa = (r, t, e, s) => {
3623
3623
  for (var i = void 0, a = r.length - 1, o; a >= 0; a--)
3624
3624
  (o = r[a]) && (i = o(t, e, i) || i);
3625
3625
  return i && Wa(t, e, i), i;
3626
3626
  };
3627
- function qa() {
3627
+ function ja() {
3628
3628
  return {
3629
3629
  projectionMatrix: new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]),
3630
3630
  modelViewMatrix: new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]),
@@ -3658,8 +3658,8 @@ void main(void) {
3658
3658
  }, t.shader.updateUniforms(this);
3659
3659
  }
3660
3660
  }
3661
- ja([
3662
- c({ default: qa })
3661
+ qa([
3662
+ c({ default: ja })
3663
3663
  ], E.prototype, "uniforms");
3664
3664
  const Ya = /^uniform \w+ (.+?);\s*\/\/\s*=\s*([^;]+?)[\s;]*$/gm, Ka = /vec(\d)\((.*)\)/;
3665
3665
  function Za(r) {
@@ -4408,6 +4408,12 @@ function co(r) {
4408
4408
  return t++, Kr[r] = t, t;
4409
4409
  }
4410
4410
  let M = class extends xt {
4411
+ static parse(r, t = "Node") {
4412
+ if (Array.isArray(r))
4413
+ return r.map((n) => this.parse(n));
4414
+ const { is: e, meta: s = {}, children: i, ...a } = r, o = br.get(e ?? s.inCanvasIs ?? t) ?? M, l = new o({ ...a, meta: s });
4415
+ return i?.forEach((n) => l.appendChild(this.parse(n))), l;
4416
+ }
4411
4417
  _mask;
4412
4418
  _meta = new no(this);
4413
4419
  get meta() {
@@ -4427,10 +4433,13 @@ let M = class extends xt {
4427
4433
  _readyed = !1;
4428
4434
  constructor(r, t = []) {
4429
4435
  super(), this._onTreeEnter = this._onTreeEnter.bind(this), this._onTreeExit = this._onTreeExit.bind(this), this._onParented = this._onParented.bind(this), this._onUnparented = this._onUnparented.bind(this), this._onReady = this._onReady.bind(this), this._onProcess = this._onProcess.bind(this), this.setProperties({
4430
- name: `${this.is}:${co(this.is)}`,
4436
+ name: this._defaultName(),
4431
4437
  ...r
4432
4438
  }).append(t), this.on("treeEnter", this._onTreeEnter).on("treeExit", this._onTreeExit).on("parented", this._onParented).on("unparented", this._onUnparented).on("ready", this._onReady).on("process", this._onProcess), this.updateProcessable(), this.updateRenderable();
4433
4439
  }
4440
+ _defaultName() {
4441
+ return `@${this.is}@${co(this.is)}`;
4442
+ }
4434
4443
  setProperties(r) {
4435
4444
  if (r) {
4436
4445
  const {
@@ -4794,12 +4803,6 @@ let M = class extends xt {
4794
4803
  meta: this.meta.toJSON()
4795
4804
  });
4796
4805
  }
4797
- static parse(r, t = "Node") {
4798
- if (Array.isArray(r))
4799
- return r.map((n) => this.parse(n));
4800
- const { is: e, meta: s = {}, children: i, ...a } = r, o = br.get(e ?? s.inCanvasIs ?? t) ?? M, l = new o({ ...a, meta: s });
4801
- return i?.forEach((n) => l.appendChild(this.parse(n))), l;
4802
- }
4803
4806
  };
4804
4807
  ht([
4805
4808
  c({ default: () => vr() })
@@ -5163,7 +5166,7 @@ let X = class extends M {
5163
5166
  this.renderStart(r), super.render(r, t), this.renderEnd(r, e);
5164
5167
  }
5165
5168
  getRect() {
5166
- return new q(this.x, this.y, this.width, this.height);
5169
+ return new j(this.x, this.y, this.width, this.height);
5167
5170
  }
5168
5171
  toCanvasGlobal(r, t) {
5169
5172
  return this.canvasTransform.applyAffineInverse(r, t);
@@ -5248,7 +5251,7 @@ let T = class extends et {
5248
5251
  t && this._effectMode === "transition" && (r.equal(this._previousSibling) ? (this._previousSibling = void 0, t.push(this)) : r.equal(this._nextSibling) && (this._nextSibling = void 0, t.push(this)));
5249
5252
  }
5250
5253
  getRect() {
5251
- return new q(this._rect);
5254
+ return new j(this._rect);
5252
5255
  }
5253
5256
  _processParent() {
5254
5257
  const r = this._tree?.renderStack;
@@ -5509,7 +5512,7 @@ var So = Object.defineProperty, Nt = (r, t, e, s) => {
5509
5512
  return i && So(t, e, i), i;
5510
5513
  };
5511
5514
  class Pt extends wr {
5512
- input = new qi();
5515
+ input = new ji();
5513
5516
  renderStack = new yo();
5514
5517
  root = new pr().setTree(this);
5515
5518
  timeline = new vt().setTree(this);
@@ -5611,8 +5614,8 @@ let ae = class extends Lt {
5611
5614
  globalScale = new R();
5612
5615
  globalSkew = new R();
5613
5616
  globalTransform = new $();
5617
+ parentTransformDirtyId;
5614
5618
  transformDirtyId = 0;
5615
- _parentTransformDirtyId;
5616
5619
  constructor(r, t = []) {
5617
5620
  super(), this.setProperties(r).append(t);
5618
5621
  }
@@ -5630,13 +5633,13 @@ let ae = class extends Lt {
5630
5633
  globalRotation: i,
5631
5634
  transformDirtyId: a
5632
5635
  } = r;
5633
- this._parentTransformDirtyId = a, this.globalPosition.set(t.x + this.position.x, t.y + this.position.y), this.globalScale.set(e.x * this.scale.x, e.y * this.scale.y), this.globalSkew.set(s.x * this.skew.x, s.y * this.skew.y), this.globalRotation = i + this.rotation, this.globalTransform.appendFrom(
5636
+ this.parentTransformDirtyId = a, this.globalPosition.set(t.x + this.position.x, t.y + this.position.y), this.globalScale.set(e.x * this.scale.x, e.y * this.scale.y), this.globalSkew.set(s.x * this.skew.x, s.y * this.skew.y), this.globalRotation = i + this.rotation, this.globalTransform.appendFrom(
5634
5637
  this.transform,
5635
5638
  r.globalTransform
5636
5639
  );
5637
5640
  } else
5638
5641
  this.globalPosition.copyFrom(this.position), this.globalScale.copyFrom(this.scale), this.globalSkew.copyFrom(this.skew), this.globalRotation = this.rotation, this.globalTransform.copyFrom(this.transform);
5639
- this.requestLayout();
5642
+ this.requestLayout(), this.emit("updateGlobalTransform");
5640
5643
  }
5641
5644
  _relayout(r, t) {
5642
5645
  return super._relayout(r, t).map((e, s) => {
@@ -5651,7 +5654,7 @@ let ae = class extends Lt {
5651
5654
  _process(r) {
5652
5655
  super._process(r);
5653
5656
  const t = this.getParent();
5654
- t && t.globalTransform && this._parentTransformDirtyId !== t.transformDirtyId && this.updateGlobalTransform();
5657
+ t && t.globalTransform && this.parentTransformDirtyId !== t.transformDirtyId && this.updateGlobalTransform();
5655
5658
  }
5656
5659
  toLocal(r, t) {
5657
5660
  return this.globalTransform.applyAffineInverse(r, t);
@@ -5773,7 +5776,7 @@ let Me = class extends ae {
5773
5776
  this.getViewport()?.canvasTransform.copyFrom(this.canvasTransform);
5774
5777
  }
5775
5778
  _treeEnter(r) {
5776
- super._treeEnter(r), this.syncCanvasTransform();
5779
+ super._treeEnter(r), this.updateGlobalTransform();
5777
5780
  }
5778
5781
  toGlobal(r, t) {
5779
5782
  return this.canvasTransform.applyAffineInverse(r, t);
@@ -6268,11 +6271,11 @@ Cr([
6268
6271
  Vt = Cr([
6269
6272
  b("ColorRemoveEffect")
6270
6273
  ], Vt);
6271
- var Ts = Object.defineProperty, Wo = Object.getOwnPropertyDescriptor, jo = (r, t, e) => t in r ? Ts(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e, Or = (r, t, e, s) => {
6274
+ var Ts = Object.defineProperty, Wo = Object.getOwnPropertyDescriptor, qo = (r, t, e) => t in r ? Ts(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e, Or = (r, t, e, s) => {
6272
6275
  for (var i = s > 1 ? void 0 : s ? Wo(t, e) : t, a = r.length - 1, o; a >= 0; a--)
6273
6276
  (o = r[a]) && (i = (s ? o(t, e, i) : o(i)) || i);
6274
6277
  return s && i && Ts(t, e, i), i;
6275
- }, qo = (r, t, e) => jo(r, t + "", e);
6278
+ }, jo = (r, t, e) => qo(r, t + "", e);
6276
6279
  const Qt = 50;
6277
6280
  let $t = class extends T {
6278
6281
  _color = new ot();
@@ -6307,7 +6310,7 @@ let $t = class extends T {
6307
6310
  });
6308
6311
  }
6309
6312
  };
6310
- qo($t, "material", new E({
6313
+ jo($t, "material", new E({
6311
6314
  gl: {
6312
6315
  vertex: `precision mediump float;
6313
6316
  attribute vec2 position;
@@ -7697,7 +7700,7 @@ function ke(r, t) {
7697
7700
  // flip, TODO
7698
7701
  // alignment, TODO
7699
7702
  } = r.tile;
7700
- l.translate(-m, -v).scale(1 / w, 1 / S);
7703
+ l.scale(1 / w, 1 / S).translate(-m, -v);
7701
7704
  } else if (r.stretchRect) {
7702
7705
  const {
7703
7706
  left: m = 0,
@@ -7786,10 +7789,19 @@ class F extends xt {
7786
7789
  let i = {
7787
7790
  size: { width: t, height: e }
7788
7791
  };
7789
- this.image === "viewport" ? s.fillStyle = new Tr() : (i = {
7790
- ...i,
7791
- ...ke(this, { x: 0, y: 0, width: t, height: e })
7792
- }, s.fillStyle = this.animatedTexture?.currentFrame.texture ?? this.texture ?? this.color ?? "#000000FF"), s.fill(i);
7792
+ if (this.image === "viewport")
7793
+ s.fillStyle = new Tr();
7794
+ else {
7795
+ const a = this.animatedTexture?.currentFrame.texture ?? this.texture;
7796
+ i = {
7797
+ ...i,
7798
+ ...ke(
7799
+ this,
7800
+ this.tile && a ? { x: 0, y: 0, width: a.sourceWidth, height: a.sourceHeight } : { x: 0, y: 0, width: t, height: e }
7801
+ )
7802
+ }, s.fillStyle = a ?? this.color ?? "#000000FF";
7803
+ }
7804
+ s.fill(i);
7793
7805
  }
7794
7806
  _getFrameCurrentTime() {
7795
7807
  const t = this.animatedTexture?.duration ?? 0;
@@ -7890,7 +7902,7 @@ var Un = Object.defineProperty, me = (r, t, e, s) => {
7890
7902
  (o = r[a]) && (i = o(t, e, i) || i);
7891
7903
  return i && Un(t, e, i), i;
7892
7904
  };
7893
- class jt extends F {
7905
+ class qt extends F {
7894
7906
  setProperties(t) {
7895
7907
  return super._setProperties(
7896
7908
  I(t) ? void 0 : li(t)
@@ -7919,25 +7931,25 @@ class jt extends F {
7919
7931
  }
7920
7932
  me([
7921
7933
  c()
7922
- ], jt.prototype, "color");
7934
+ ], qt.prototype, "color");
7923
7935
  me([
7924
7936
  c()
7925
- ], jt.prototype, "width");
7937
+ ], qt.prototype, "width");
7926
7938
  me([
7927
7939
  c({ fallback: "solid" })
7928
- ], jt.prototype, "style");
7940
+ ], qt.prototype, "style");
7929
7941
  me([
7930
7942
  c({ fallback: "butt" })
7931
- ], jt.prototype, "lineCap");
7943
+ ], qt.prototype, "lineCap");
7932
7944
  me([
7933
7945
  c({ fallback: "miter" })
7934
- ], jt.prototype, "lineJoin");
7946
+ ], qt.prototype, "lineJoin");
7935
7947
  var Bn = Object.defineProperty, ge = (r, t, e, s) => {
7936
7948
  for (var i = void 0, a = r.length - 1, o; a >= 0; a--)
7937
7949
  (o = r[a]) && (i = o(t, e, i) || i);
7938
7950
  return i && Bn(t, e, i), i;
7939
7951
  };
7940
- class qt extends xt {
7952
+ class jt extends xt {
7941
7953
  constructor(t) {
7942
7954
  super(), this._parent = t;
7943
7955
  }
@@ -7964,19 +7976,19 @@ class qt extends xt {
7964
7976
  }
7965
7977
  ge([
7966
7978
  c({ fallback: !0 })
7967
- ], qt.prototype, "enabled");
7979
+ ], jt.prototype, "enabled");
7968
7980
  ge([
7969
7981
  c({ fallback: "#000000FF" })
7970
- ], qt.prototype, "color");
7982
+ ], jt.prototype, "color");
7971
7983
  ge([
7972
7984
  c({ fallback: 0 })
7973
- ], qt.prototype, "blur");
7985
+ ], jt.prototype, "blur");
7974
7986
  ge([
7975
7987
  c({ fallback: 0 })
7976
- ], qt.prototype, "offsetY");
7988
+ ], jt.prototype, "offsetY");
7977
7989
  ge([
7978
7990
  c({ fallback: 0 })
7979
- ], qt.prototype, "offsetX");
7991
+ ], jt.prototype, "offsetX");
7980
7992
  var Ln = Object.defineProperty, ve = (r, t, e, s) => {
7981
7993
  for (var i = void 0, a = r.length - 1, o; a >= 0; a--)
7982
7994
  (o = r[a]) && (i = o(t, e, i) || i);
@@ -8587,8 +8599,8 @@ var Gn = Object.getOwnPropertyDescriptor, Vn = (r, t, e, s) => {
8587
8599
  const $n = new Set(Object.keys(_i())), Hn = new Set(Object.keys(pi()));
8588
8600
  let yt = class extends ae {
8589
8601
  flexbox = new Ir(this);
8590
- aabb = new q();
8591
- globalAabb = new q();
8602
+ aabb = new j();
8603
+ globalAabb = new j();
8592
8604
  _parentGlobalDisplay;
8593
8605
  _globalDisplay;
8594
8606
  get globalDisplay() {
@@ -8629,7 +8641,7 @@ let yt = class extends ae {
8629
8641
  set fill(r) {
8630
8642
  this._fill.resetProperties().setProperties(r);
8631
8643
  }
8632
- _outline = new jt(this);
8644
+ _outline = new qt(this);
8633
8645
  get outline() {
8634
8646
  return this._outline;
8635
8647
  }
@@ -8650,7 +8662,7 @@ let yt = class extends ae {
8650
8662
  set text(r) {
8651
8663
  this._text.resetProperties().setProperties(r);
8652
8664
  }
8653
- _shadow = new qt(this);
8665
+ _shadow = new jt(this);
8654
8666
  get shadow() {
8655
8667
  return this._shadow;
8656
8668
  }
@@ -8961,7 +8973,7 @@ class Ws extends yt {
8961
8973
  }
8962
8974
  }
8963
8975
  }
8964
- var Xn = Object.defineProperty, Wn = Object.getOwnPropertyDescriptor, js = (r, t, e, s) => {
8976
+ var Xn = Object.defineProperty, Wn = Object.getOwnPropertyDescriptor, qs = (r, t, e, s) => {
8965
8977
  for (var i = s > 1 ? void 0 : s ? Wn(t, e) : t, a = r.length - 1, o; a >= 0; a--)
8966
8978
  (o = r[a]) && (i = (s ? o(t, e, i) : o(i)) || i);
8967
8979
  return s && i && Xn(t, e, i), i;
@@ -8992,16 +9004,16 @@ let _r = class extends Ws {
8992
9004
  this.animation?.goToAndStop(this.currentTime, !1), this.texture.requestUpdate("source"), this.requestDraw(), super._process(r);
8993
9005
  }
8994
9006
  };
8995
- js([
9007
+ qs([
8996
9008
  c({ fallback: "" })
8997
9009
  ], _r.prototype, "src", 2);
8998
- _r = js([
9010
+ _r = qs([
8999
9011
  b("Lottie2D")
9000
9012
  ], _r);
9001
- var jn = Object.defineProperty, qn = (r, t, e, s) => {
9013
+ var qn = Object.defineProperty, jn = (r, t, e, s) => {
9002
9014
  for (var i = void 0, a = r.length - 1, o; a >= 0; a--)
9003
9015
  (o = r[a]) && (i = o(t, e, i) || i);
9004
- return i && jn(t, e, i), i;
9016
+ return i && qn(t, e, i), i;
9005
9017
  };
9006
9018
  class Yn extends yt {
9007
9019
  constructor(t, e = []) {
@@ -9026,10 +9038,10 @@ class Yn extends yt {
9026
9038
  this.context.rect(0, 0, t, e), this.context.strokeStyle = "#00FF00", this.context.stroke(), this._drawCircle(0, 0), this._drawCircle(t, e), this._drawCircle(0, e), this._drawEllipse(0, e / 2), this._drawCircle(t, 0), this._drawEllipse(t, e / 2);
9027
9039
  }
9028
9040
  }
9029
- qn([
9041
+ jn([
9030
9042
  c({ fallback: 6 })
9031
9043
  ], Yn.prototype, "handleSize");
9032
- var Kn = Object.defineProperty, Zn = Object.getOwnPropertyDescriptor, qs = (r, t, e, s) => {
9044
+ var Kn = Object.defineProperty, Zn = Object.getOwnPropertyDescriptor, js = (r, t, e, s) => {
9033
9045
  for (var i = s > 1 ? void 0 : s ? Zn(t, e) : t, a = r.length - 1, o; a >= 0; a--)
9034
9046
  (o = r[a]) && (i = (s ? o(t, e, i) : o(i)) || i);
9035
9047
  return s && i && Kn(t, e, i), i;
@@ -9062,10 +9074,10 @@ let mr = class extends Ws {
9062
9074
  super._process(r), this._updateVideoCurrentTime();
9063
9075
  }
9064
9076
  };
9065
- qs([
9077
+ js([
9066
9078
  c({ fallback: "" })
9067
9079
  ], mr.prototype, "src", 2);
9068
- mr = qs([
9080
+ mr = js([
9069
9081
  b("Video2D")
9070
9082
  ], mr);
9071
9083
  var Jn = Object.defineProperty, Qn = Object.getOwnPropertyDescriptor, Xe = (r, t, e, s) => {
@@ -10428,7 +10440,10 @@ class Gl extends Dt {
10428
10440
  const e = (s) => t.fetchImageBitmap(s, { premultiplyAlpha: "premultiply" }).then((i) => new x({
10429
10441
  source: i,
10430
10442
  uploadMethodId: "image",
10431
- mipmap: !0
10443
+ mipmap: !0,
10444
+ addressModeU: "repeat",
10445
+ addressModeV: "repeat",
10446
+ addressModeW: "repeat"
10432
10447
  }));
10433
10448
  return this.load = (s) => typeof s == "string" ? t.loadBy(
10434
10449
  s,
@@ -10583,10 +10598,10 @@ class Wl extends Ct {
10583
10598
  }
10584
10599
  }
10585
10600
  const G = new Wl().use(new Ga()).use(new Bl()).use(new Ll()).use(new Fl()).use(new zl()).use(new Gl()).use(new Vl());
10586
- var jl = Object.defineProperty, Ks = (r, t, e, s) => {
10601
+ var ql = Object.defineProperty, Ks = (r, t, e, s) => {
10587
10602
  for (var i = void 0, a = r.length - 1, o; a >= 0; a--)
10588
10603
  (o = r[a]) && (i = o(t, e, i) || i);
10589
- return i && jl(t, e, i), i;
10604
+ return i && ql(t, e, i), i;
10590
10605
  };
10591
10606
  const Ut = {
10592
10607
  alpha: !0,
@@ -10737,7 +10752,7 @@ Ks([
10737
10752
  let U;
10738
10753
  const gr = [];
10739
10754
  let ur = !1;
10740
- async function ql(r = 100) {
10755
+ async function jl(r = 100) {
10741
10756
  if (!ur) {
10742
10757
  for (ur = !0; gr.length; ) {
10743
10758
  const t = gr.shift();
@@ -10788,11 +10803,11 @@ async function Yl(r) {
10788
10803
  }
10789
10804
  async function dh(r) {
10790
10805
  return new Promise((t) => {
10791
- gr.push(async () => t(await Yl(r))), ql();
10806
+ gr.push(async () => t(await Yl(r))), jl();
10792
10807
  });
10793
10808
  }
10794
10809
  export {
10795
- q as Aabb2D,
10810
+ j as Aabb2D,
10796
10811
  to as AnimatedTexture,
10797
10812
  he as Animation,
10798
10813
  Wl as Assets,
@@ -10825,8 +10840,8 @@ export {
10825
10840
  $s as Element2DBackground,
10826
10841
  F as Element2DFill,
10827
10842
  Hs as Element2DForeground,
10828
- jt as Element2DOutline,
10829
- qt as Element2DShadow,
10843
+ qt as Element2DOutline,
10844
+ jt as Element2DShadow,
10830
10845
  Yt as Element2DShape,
10831
10846
  Xs as Element2DStyle,
10832
10847
  it as Element2DText,
@@ -10851,7 +10866,7 @@ export {
10851
10866
  Bt as GlState,
10852
10867
  ma as GlStateSystem,
10853
10868
  Ua as GlStencilSystem,
10854
- j as GlSystem,
10869
+ q as GlSystem,
10855
10870
  Ba as GlViewportSystem,
10856
10871
  V as GlitchEffect,
10857
10872
  K as GodrayEffect,
@@ -10862,7 +10877,7 @@ export {
10862
10877
  xr as IN_BROWSER,
10863
10878
  Ui as IN_MAC_OS,
10864
10879
  Xt as IndexBuffer,
10865
- qi as Input,
10880
+ ji as Input,
10866
10881
  ze as InputEvent,
10867
10882
  Ll as JsonLoader,
10868
10883
  ne as KawaseBlurEffect,
@@ -10973,7 +10988,7 @@ export {
10973
10988
  or as justifyMap,
10974
10989
  C as lerp,
10975
10990
  tl as linear,
10976
- jr as log2,
10991
+ qr as log2,
10977
10992
  _a as mapGlBlendModes,
10978
10993
  Wr as nextPow2,
10979
10994
  ss as nextTick,
@@ -5,6 +5,7 @@ import { CanvasItem } from '../main';
5
5
  export interface Node2DProperties extends CanvasItemProperties {
6
6
  }
7
7
  export interface Node2DEvents extends CanvasItemEvents {
8
+ updateGlobalTransform: [];
8
9
  }
9
10
  export interface Node2D {
10
11
  on: <K extends keyof Node2DEvents & string>(event: K, listener: (...args: Node2DEvents[K]) => void) => this;
@@ -25,8 +26,8 @@ export declare class Node2D extends CanvasItem {
25
26
  readonly globalScale: Vector2;
26
27
  readonly globalSkew: Vector2;
27
28
  readonly globalTransform: Transform2D;
29
+ parentTransformDirtyId?: number;
28
30
  transformDirtyId: number;
29
- protected _parentTransformDirtyId?: number;
30
31
  constructor(properties?: Partial<Node2DProperties>, nodes?: Node[]);
31
32
  protected _updateTransform(): void;
32
33
  updateGlobalTransform(): void;
@@ -53,6 +53,7 @@ export interface SerializedNode {
53
53
  };
54
54
  }
55
55
  export declare class Node extends CoreObject {
56
+ static parse(value: SerializedNode | SerializedNode[], defaultInCanvasIs?: string): any;
56
57
  readonly is: string;
57
58
  id: string;
58
59
  name: string;
@@ -72,6 +73,7 @@ export declare class Node extends CoreObject {
72
73
  get renderable(): boolean;
73
74
  protected _readyed: boolean;
74
75
  constructor(properties?: Partial<NodeProperties>, nodes?: Node[]);
76
+ protected _defaultName(): string;
75
77
  setProperties(properties?: Record<string, any>): this;
76
78
  /** Name */
77
79
  getName(): string;
@@ -150,5 +152,4 @@ export declare class Node extends CoreObject {
150
152
  destroy(): void;
151
153
  clone(): this;
152
154
  toJSON(): Record<string, any>;
153
- static parse(value: SerializedNode | SerializedNode[], defaultInCanvasIs?: string): any;
154
155
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "modern-canvas",
3
3
  "type": "module",
4
- "version": "0.15.4",
4
+ "version": "0.15.6",
5
5
  "packageManager": "pnpm@10.19.0",
6
6
  "description": "A JavaScript WebGL rendering engine. only the ESM.",
7
7
  "author": "wxm",
@@ -84,12 +84,12 @@
84
84
  }
85
85
  },
86
86
  "devDependencies": {
87
- "@antfu/eslint-config": "^7.2.0",
87
+ "@antfu/eslint-config": "^7.6.1",
88
88
  "@types/earcut": "^3.0.0",
89
- "@types/node": "^25.2.0",
90
- "bumpp": "^10.4.0",
89
+ "@types/node": "^25.3.2",
90
+ "bumpp": "^10.4.1",
91
91
  "conventional-changelog-cli": "^5.0.0",
92
- "eslint": "^9.39.2",
92
+ "eslint": "^10.0.2",
93
93
  "lottie-web": "^5.13.0",
94
94
  "modern-gif": "^2.0.4",
95
95
  "typescript": "^5.9.3",