modern-canvas 0.4.53 → 0.4.55

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.cjs CHANGED
@@ -743,14 +743,14 @@ class Input extends EventEmitter {
743
743
  this.target.removeEventListener("pointerdown", this.onPointerDown);
744
744
  this.target.removeEventListener("pointerleave", this.onPointerOver);
745
745
  this.target.removeEventListener("pointerover", this.onPointerOver);
746
- this.target.ownerDocument.removeEventListener("pointermove", this.onPointerMove);
747
- this.target.ownerDocument.removeEventListener("pointerup", this.onPointerUp);
746
+ this.target.removeEventListener("pointermove", this.onPointerMove);
747
+ this.target.removeEventListener("pointerup", this.onPointerUp);
748
748
  } else {
749
749
  this.target.removeEventListener("mousedown", this.onPointerDown);
750
750
  this.target.removeEventListener("mouseout", this.onPointerOver);
751
751
  this.target.removeEventListener("mouseover", this.onPointerOver);
752
- this.target.ownerDocument.removeEventListener("mousemove", this.onPointerMove);
753
- this.target.ownerDocument.removeEventListener("mouseup", this.onPointerUp);
752
+ this.target.removeEventListener("mousemove", this.onPointerMove);
753
+ this.target.removeEventListener("mouseup", this.onPointerUp);
754
754
  }
755
755
  if (SUPPORTS_TOUCH_EVENTS) {
756
756
  this.target.removeEventListener("touchstart", this.onPointerDown);
@@ -778,14 +778,14 @@ class Input extends EventEmitter {
778
778
  this.target.addEventListener("pointerdown", this.onPointerDown);
779
779
  this.target.addEventListener("pointerleave", this.onPointerOver);
780
780
  this.target.addEventListener("pointerover", this.onPointerOver);
781
- this.target.ownerDocument.addEventListener("pointermove", this.onPointerMove);
782
- this.target.ownerDocument.addEventListener("pointerup", this.onPointerUp);
781
+ this.target.addEventListener("pointermove", this.onPointerMove);
782
+ this.target.addEventListener("pointerup", this.onPointerUp);
783
783
  } else {
784
784
  this.target.addEventListener("mousedown", this.onPointerDown);
785
785
  this.target.addEventListener("mouseout", this.onPointerOver);
786
786
  this.target.addEventListener("mouseover", this.onPointerOver);
787
- this.target.ownerDocument.addEventListener("mousemove", this.onPointerMove);
788
- this.target.ownerDocument.addEventListener("mouseup", this.onPointerUp);
787
+ this.target.addEventListener("mousemove", this.onPointerMove);
788
+ this.target.addEventListener("mouseup", this.onPointerUp);
789
789
  }
790
790
  if (SUPPORTS_TOUCH_EVENTS) {
791
791
  this.target.addEventListener("touchstart", this.onPointerDown);
@@ -8910,6 +8910,7 @@ class BaseElement2DFill extends CoreObject {
8910
8910
  case "rotateWithShape":
8911
8911
  case "tile":
8912
8912
  case "opacity":
8913
+ case "enabled":
8913
8914
  this.parent.requestRedraw();
8914
8915
  break;
8915
8916
  case "image":
@@ -8938,7 +8939,7 @@ class BaseElement2DFill extends CoreObject {
8938
8939
  }
8939
8940
  canDraw() {
8940
8941
  return Boolean(
8941
- this._texture || this.color
8942
+ this.enabled && (this._texture || this.color)
8942
8943
  );
8943
8944
  }
8944
8945
  _getDrawOptions() {
@@ -8989,6 +8990,9 @@ class BaseElement2DFill extends CoreObject {
8989
8990
  });
8990
8991
  }
8991
8992
  }
8993
+ __decorateClass$u([
8994
+ modernIdoc.property({ default: true })
8995
+ ], BaseElement2DFill.prototype, "enabled");
8992
8996
  __decorateClass$u([
8993
8997
  modernIdoc.property()
8994
8998
  ], BaseElement2DFill.prototype, "color");
@@ -9080,13 +9084,14 @@ class BaseElement2DOutline extends BaseElement2DFill {
9080
9084
  switch (key) {
9081
9085
  case "width":
9082
9086
  case "style":
9087
+ case "enabled":
9083
9088
  this.parent.requestRedraw();
9084
9089
  break;
9085
9090
  }
9086
9091
  }
9087
9092
  canDraw() {
9088
9093
  return Boolean(
9089
- this.width || this.color || super.canDraw()
9094
+ this.enabled && (this.width || this.color || super.canDraw())
9090
9095
  );
9091
9096
  }
9092
9097
  draw() {
@@ -9098,6 +9103,9 @@ class BaseElement2DOutline extends BaseElement2DFill {
9098
9103
  ctx.stroke({ disableWrapMode });
9099
9104
  }
9100
9105
  }
9106
+ __decorateClass$r([
9107
+ modernIdoc.property({ default: true })
9108
+ ], BaseElement2DOutline.prototype, "enabled");
9101
9109
  __decorateClass$r([
9102
9110
  modernIdoc.property({ default: 0 })
9103
9111
  ], BaseElement2DOutline.prototype, "color");
@@ -9154,6 +9162,9 @@ class BaseElement2DShadow extends CoreObject {
9154
9162
  }
9155
9163
  }
9156
9164
  }
9165
+ __decorateClass$q([
9166
+ modernIdoc.property({ default: true })
9167
+ ], BaseElement2DShadow.prototype, "enabled");
9157
9168
  __decorateClass$q([
9158
9169
  modernIdoc.property({ default: "#000000" })
9159
9170
  ], BaseElement2DShadow.prototype, "color");
@@ -9194,6 +9205,7 @@ class BaseElement2DShape extends CoreObject {
9194
9205
  case "svg":
9195
9206
  case "paths":
9196
9207
  case "viewBox":
9208
+ case "enabled":
9197
9209
  this._updatePath2DSet();
9198
9210
  this.parent.requestRedraw();
9199
9211
  break;
@@ -9224,7 +9236,7 @@ class BaseElement2DShape extends CoreObject {
9224
9236
  });
9225
9237
  }
9226
9238
  draw() {
9227
- if (this._path2DSet.paths.length) {
9239
+ if (this.enabled && this._path2DSet.paths.length) {
9228
9240
  const ctx = this.parent.context;
9229
9241
  const { width, height } = this.parent.size;
9230
9242
  this._path2DSet.paths.forEach((path) => {
@@ -9247,6 +9259,9 @@ class BaseElement2DShape extends CoreObject {
9247
9259
  }
9248
9260
  }
9249
9261
  }
9262
+ __decorateClass$p([
9263
+ modernIdoc.property({ default: true })
9264
+ ], BaseElement2DShape.prototype, "enabled");
9250
9265
  __decorateClass$p([
9251
9266
  modernIdoc.property()
9252
9267
  ], BaseElement2DShape.prototype, "preset");
@@ -9307,6 +9322,7 @@ class BaseElement2DText extends CoreObject {
9307
9322
  case "measureDOM":
9308
9323
  case "fonts":
9309
9324
  case "split":
9325
+ case "enabled":
9310
9326
  this.parent.requestRedraw();
9311
9327
  break;
9312
9328
  }
@@ -9330,7 +9346,7 @@ class BaseElement2DText extends CoreObject {
9330
9346
  }
9331
9347
  canDraw() {
9332
9348
  return Boolean(
9333
- !/^\s*$/.test(this.base.toString()) && this.texture?.valid
9349
+ this.enabled && !/^\s*$/.test(this.base.toString()) && this.texture?.valid
9334
9350
  );
9335
9351
  }
9336
9352
  draw() {
@@ -9355,6 +9371,9 @@ class BaseElement2DText extends CoreObject {
9355
9371
  ctx.fill();
9356
9372
  }
9357
9373
  }
9374
+ __decorateClass$o([
9375
+ modernIdoc.property({ default: true })
9376
+ ], BaseElement2DText.prototype, "enabled");
9358
9377
  __decorateClass$o([
9359
9378
  modernIdoc.property({ alias: "base.content" })
9360
9379
  ], BaseElement2DText.prototype, "content");
@@ -13522,9 +13541,26 @@ class Assets {
13522
13541
  return fetch(url);
13523
13542
  }
13524
13543
  _fixSVG(dataURI) {
13525
- const svg = new DOMParser().parseFromString(decodeURIComponent(dataURI.split(",")[1]), "image/svg+xml").documentElement;
13526
- svg.setAttribute("width", "512");
13527
- svg.setAttribute("height", "512");
13544
+ let xml;
13545
+ if (dataURI.includes(";base64,")) {
13546
+ xml = atob(dataURI.split(",")[1]);
13547
+ } else {
13548
+ xml = decodeURIComponent(dataURI.split(",")[1]);
13549
+ }
13550
+ const svg = new DOMParser().parseFromString(xml, "image/svg+xml").documentElement;
13551
+ const width = svg.getAttribute("width");
13552
+ const height = svg.getAttribute("height");
13553
+ const isValidWidth = width && /^[\d.]+$/.test(width);
13554
+ const isValidHeight = height && /^[\d.]+$/.test(height);
13555
+ if (!isValidWidth || !isValidHeight) {
13556
+ const viewBox = svg.getAttribute("viewBox")?.split(" ").map((v) => Number(v));
13557
+ if (!isValidWidth) {
13558
+ svg.setAttribute("width", String(viewBox ? viewBox[2] - viewBox[0] : 512));
13559
+ }
13560
+ if (!isValidHeight) {
13561
+ svg.setAttribute("height", String(viewBox ? viewBox[3] - viewBox[1] : 512));
13562
+ }
13563
+ }
13528
13564
  return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svg.outerHTML)}`;
13529
13565
  }
13530
13566
  async fetchImageBitmap(url, options) {
@@ -13541,7 +13577,7 @@ class Assets {
13541
13577
  return createImageBitmap(blob, options);
13542
13578
  });
13543
13579
  } else {
13544
- if (url.startsWith("data:image/svg+xml;charset=utf-8,")) {
13580
+ if (url.startsWith("data:image/svg+xml;")) {
13545
13581
  url = this._fixSVG(url);
13546
13582
  }
13547
13583
  return new Promise((resolve) => {
@@ -14016,6 +14052,7 @@ async function task(options) {
14016
14052
  engine.resize(width, height, true);
14017
14053
  (Array.isArray(data) ? data : [data]).forEach((v) => {
14018
14054
  if (v instanceof exports.Node) {
14055
+ v.parent = void 0;
14019
14056
  engine.root.appendChild(v);
14020
14057
  } else {
14021
14058
  engine.root.appendChild(exports.Node.parse(v));
package/dist/index.d.cts CHANGED
@@ -1888,6 +1888,7 @@ interface BaseElement2DFill extends NormalizedFill {
1888
1888
  }
1889
1889
  declare class BaseElement2DFill extends CoreObject {
1890
1890
  parent: BaseElement2D;
1891
+ enabled: boolean;
1891
1892
  color?: NormalizedFill['color'];
1892
1893
  image?: NormalizedFill['image'];
1893
1894
  linearGradient?: NormalizedFill['linearGradient'];
@@ -1928,6 +1929,7 @@ declare class BaseElement2DForeground extends BaseElement2DFill {
1928
1929
  }
1929
1930
 
1930
1931
  declare class BaseElement2DOutline extends BaseElement2DFill {
1932
+ enabled: boolean;
1931
1933
  color: NormalizedOutline['color'];
1932
1934
  width: NormalizedOutline['width'];
1933
1935
  style: NormalizedOutline['style'];
@@ -1939,6 +1941,7 @@ declare class BaseElement2DOutline extends BaseElement2DFill {
1939
1941
 
1940
1942
  declare class BaseElement2DShadow extends CoreObject {
1941
1943
  parent: BaseElement2D;
1944
+ enabled: boolean;
1942
1945
  color: NormalizedShadow['color'];
1943
1946
  blur: NormalizedShadow['blur'];
1944
1947
  offsetY: NormalizedShadow['offsetX'];
@@ -1951,6 +1954,7 @@ declare class BaseElement2DShadow extends CoreObject {
1951
1954
 
1952
1955
  declare class BaseElement2DShape extends CoreObject {
1953
1956
  parent: BaseElement2D;
1957
+ enabled: boolean;
1954
1958
  preset?: Required<NormalizedShape>['preset'];
1955
1959
  svg?: Required<NormalizedShape>['svg'];
1956
1960
  viewBox?: Required<NormalizedShape>['viewBox'];
@@ -1978,6 +1982,7 @@ declare class BaseElement2DStyle extends Resource {
1978
1982
 
1979
1983
  declare class BaseElement2DText extends CoreObject {
1980
1984
  parent: BaseElement2D;
1985
+ enabled: boolean;
1981
1986
  content: Text['content'];
1982
1987
  effects?: Text['effects'];
1983
1988
  measureDOM?: Text['measureDOM'];
package/dist/index.d.mts CHANGED
@@ -1888,6 +1888,7 @@ interface BaseElement2DFill extends NormalizedFill {
1888
1888
  }
1889
1889
  declare class BaseElement2DFill extends CoreObject {
1890
1890
  parent: BaseElement2D;
1891
+ enabled: boolean;
1891
1892
  color?: NormalizedFill['color'];
1892
1893
  image?: NormalizedFill['image'];
1893
1894
  linearGradient?: NormalizedFill['linearGradient'];
@@ -1928,6 +1929,7 @@ declare class BaseElement2DForeground extends BaseElement2DFill {
1928
1929
  }
1929
1930
 
1930
1931
  declare class BaseElement2DOutline extends BaseElement2DFill {
1932
+ enabled: boolean;
1931
1933
  color: NormalizedOutline['color'];
1932
1934
  width: NormalizedOutline['width'];
1933
1935
  style: NormalizedOutline['style'];
@@ -1939,6 +1941,7 @@ declare class BaseElement2DOutline extends BaseElement2DFill {
1939
1941
 
1940
1942
  declare class BaseElement2DShadow extends CoreObject {
1941
1943
  parent: BaseElement2D;
1944
+ enabled: boolean;
1942
1945
  color: NormalizedShadow['color'];
1943
1946
  blur: NormalizedShadow['blur'];
1944
1947
  offsetY: NormalizedShadow['offsetX'];
@@ -1951,6 +1954,7 @@ declare class BaseElement2DShadow extends CoreObject {
1951
1954
 
1952
1955
  declare class BaseElement2DShape extends CoreObject {
1953
1956
  parent: BaseElement2D;
1957
+ enabled: boolean;
1954
1958
  preset?: Required<NormalizedShape>['preset'];
1955
1959
  svg?: Required<NormalizedShape>['svg'];
1956
1960
  viewBox?: Required<NormalizedShape>['viewBox'];
@@ -1978,6 +1982,7 @@ declare class BaseElement2DStyle extends Resource {
1978
1982
 
1979
1983
  declare class BaseElement2DText extends CoreObject {
1980
1984
  parent: BaseElement2D;
1985
+ enabled: boolean;
1981
1986
  content: Text['content'];
1982
1987
  effects?: Text['effects'];
1983
1988
  measureDOM?: Text['measureDOM'];
package/dist/index.d.ts CHANGED
@@ -1888,6 +1888,7 @@ interface BaseElement2DFill extends NormalizedFill {
1888
1888
  }
1889
1889
  declare class BaseElement2DFill extends CoreObject {
1890
1890
  parent: BaseElement2D;
1891
+ enabled: boolean;
1891
1892
  color?: NormalizedFill['color'];
1892
1893
  image?: NormalizedFill['image'];
1893
1894
  linearGradient?: NormalizedFill['linearGradient'];
@@ -1928,6 +1929,7 @@ declare class BaseElement2DForeground extends BaseElement2DFill {
1928
1929
  }
1929
1930
 
1930
1931
  declare class BaseElement2DOutline extends BaseElement2DFill {
1932
+ enabled: boolean;
1931
1933
  color: NormalizedOutline['color'];
1932
1934
  width: NormalizedOutline['width'];
1933
1935
  style: NormalizedOutline['style'];
@@ -1939,6 +1941,7 @@ declare class BaseElement2DOutline extends BaseElement2DFill {
1939
1941
 
1940
1942
  declare class BaseElement2DShadow extends CoreObject {
1941
1943
  parent: BaseElement2D;
1944
+ enabled: boolean;
1942
1945
  color: NormalizedShadow['color'];
1943
1946
  blur: NormalizedShadow['blur'];
1944
1947
  offsetY: NormalizedShadow['offsetX'];
@@ -1951,6 +1954,7 @@ declare class BaseElement2DShadow extends CoreObject {
1951
1954
 
1952
1955
  declare class BaseElement2DShape extends CoreObject {
1953
1956
  parent: BaseElement2D;
1957
+ enabled: boolean;
1954
1958
  preset?: Required<NormalizedShape>['preset'];
1955
1959
  svg?: Required<NormalizedShape>['svg'];
1956
1960
  viewBox?: Required<NormalizedShape>['viewBox'];
@@ -1978,6 +1982,7 @@ declare class BaseElement2DStyle extends Resource {
1978
1982
 
1979
1983
  declare class BaseElement2DText extends CoreObject {
1980
1984
  parent: BaseElement2D;
1985
+ enabled: boolean;
1981
1986
  content: Text['content'];
1982
1987
  effects?: Text['effects'];
1983
1988
  measureDOM?: Text['measureDOM'];