@visactor/vrender 0.22.8 → 0.22.9-alpha.2

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
@@ -580,6 +580,48 @@
580
580
  const VGlobal = Symbol.for("VGlobal");
581
581
  const DEFAULT_TEXT_FONT_FAMILY = "PingFang SC,Helvetica Neue,Microsoft Yahei,system-ui,-apple-system,segoe ui,Roboto,Helvetica,Arial,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol";
582
582
 
583
+ class EventListenerManager {
584
+ constructor() {
585
+ this._listenerMap = new Map(), this._eventListenerTransformer = event => event;
586
+ }
587
+ setEventListenerTransformer(transformer) {
588
+ this._eventListenerTransformer = transformer || (event => event);
589
+ }
590
+ addEventListener(type, listener, options) {
591
+ if (!listener) return;
592
+ const wrappedListener = event => {
593
+ const transformedEvent = this._eventListenerTransformer(event);
594
+ "function" == typeof listener ? listener(transformedEvent) : listener.handleEvent && listener.handleEvent(transformedEvent);
595
+ };
596
+ this._listenerMap.has(type) || this._listenerMap.set(type, new Map()), this._listenerMap.get(type).set(listener, wrappedListener), this._nativeAddEventListener(type, wrappedListener, options);
597
+ }
598
+ removeEventListener(type, listener, options) {
599
+ var _a;
600
+ if (!listener) return;
601
+ const wrappedListener = null === (_a = this._listenerMap.get(type)) || void 0 === _a ? void 0 : _a.get(listener);
602
+ wrappedListener && (this._nativeRemoveEventListener(type, wrappedListener, options), this._listenerMap.get(type).delete(listener), 0 === this._listenerMap.get(type).size && this._listenerMap.delete(type));
603
+ }
604
+ dispatchEvent(event) {
605
+ return this._nativeDispatchEvent(event);
606
+ }
607
+ clearAllEventListeners() {
608
+ this._listenerMap.forEach((listenersMap, type) => {
609
+ listenersMap.forEach((wrappedListener, originalListener) => {
610
+ this._nativeRemoveEventListener(type, wrappedListener, void 0);
611
+ });
612
+ }), this._listenerMap.clear();
613
+ }
614
+ _nativeAddEventListener(type, listener, options) {
615
+ throw new Error("_nativeAddEventListener must be implemented by derived classes");
616
+ }
617
+ _nativeRemoveEventListener(type, listener, options) {
618
+ throw new Error("_nativeRemoveEventListener must be implemented by derived classes");
619
+ }
620
+ _nativeDispatchEvent(event) {
621
+ throw new Error("_nativeDispatchEvent must be implemented by derived classes");
622
+ }
623
+ }
624
+
583
625
  var __decorate$1N = undefined && undefined.__decorate || function (decorators, target, key, desc) {
584
626
  var d,
585
627
  c = arguments.length,
@@ -620,7 +662,7 @@
620
662
  step((generator = generator.apply(thisArg, _arguments || [])).next());
621
663
  });
622
664
  };
623
- exports.DefaultGlobal = class DefaultGlobal {
665
+ exports.DefaultGlobal = class DefaultGlobal extends EventListenerManager {
624
666
  get env() {
625
667
  return this._env;
626
668
  }
@@ -664,10 +706,19 @@
664
706
  this._env || this.setEnv("browser"), this.envContribution.applyStyles = support;
665
707
  }
666
708
  constructor(contributions) {
667
- this.contributions = contributions, this._isImageAnonymous = !0, this.id = Generator.GenAutoIncrementId(), this.hooks = {
709
+ super(), this.contributions = contributions, this._isImageAnonymous = !0, this.eventListenerTransformer = event => event, this.id = Generator.GenAutoIncrementId(), this.hooks = {
668
710
  onSetEnv: new SyncHook(["lastEnv", "env", "global"])
669
711
  }, this.measureTextMethod = "native", this.optimizeVisible = !1;
670
712
  }
713
+ _nativeAddEventListener(type, listener, options) {
714
+ return this._env || this.setEnv("browser"), this.envContribution.addEventListener(type, listener, options);
715
+ }
716
+ _nativeRemoveEventListener(type, listener, options) {
717
+ return this._env || this.setEnv("browser"), this.envContribution.removeEventListener(type, listener, options);
718
+ }
719
+ _nativeDispatchEvent(event) {
720
+ return this._env || this.setEnv("browser"), this.envContribution.dispatchEvent(event);
721
+ }
671
722
  bindContribution(params) {
672
723
  const promiseArr = [];
673
724
  if (this.contributions.getContributions().forEach(contribution => {
@@ -708,15 +759,6 @@
708
759
  releaseCanvas(canvas) {
709
760
  return this._env || this.setEnv("browser"), this.envContribution.releaseCanvas(canvas);
710
761
  }
711
- addEventListener(type, listener, options) {
712
- return this._env || this.setEnv("browser"), this.envContribution.addEventListener(type, listener, options);
713
- }
714
- removeEventListener(type, listener, options) {
715
- return this._env || this.setEnv("browser"), this.envContribution.removeEventListener(type, listener, options);
716
- }
717
- dispatchEvent(event) {
718
- return this._env || this.setEnv("browser"), this.envContribution.dispatchEvent(event);
719
- }
720
762
  getRequestAnimationFrame() {
721
763
  return this._env || this.setEnv("browser"), this.envContribution.getRequestAnimationFrame();
722
764
  }
@@ -1178,14 +1220,14 @@
1178
1220
  };
1179
1221
  var isArrayLike$1 = isArrayLike;
1180
1222
 
1181
- const isNumber = function (value) {
1223
+ const isNumber$1 = function (value) {
1182
1224
  let fuzzy = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !1;
1183
1225
  const type = typeof value;
1184
1226
  return fuzzy ? "number" === type : "number" === type || isType$1(value, "Number");
1185
1227
  };
1186
- var isNumber$1 = isNumber;
1228
+ var isNumber$2 = isNumber$1;
1187
1229
 
1188
- const isValidNumber = value => isNumber$1(value) && Number.isFinite(value);
1230
+ const isValidNumber = value => isNumber$2(value) && Number.isFinite(value);
1189
1231
  var isValidNumber$1 = isValidNumber;
1190
1232
 
1191
1233
  const isValidUrl = value => new RegExp(/^(http(s)?:\/\/)\w+[^\s]+(\.[^\s]+){1,}$/).test(value);
@@ -1268,7 +1310,7 @@
1268
1310
  }(LoggerLevel || (LoggerLevel = {}));
1269
1311
  class Logger {
1270
1312
  static getInstance(level, method) {
1271
- return Logger._instance && isNumber$1(level) ? Logger._instance.level(level) : Logger._instance || (Logger._instance = new Logger(level, method)), Logger._instance;
1313
+ return Logger._instance && isNumber$2(level) ? Logger._instance.level(level) : Logger._instance || (Logger._instance = new Logger(level, method)), Logger._instance;
1272
1314
  }
1273
1315
  static setInstance(logger) {
1274
1316
  return Logger._instance = logger;
@@ -1412,10 +1454,10 @@
1412
1454
  return this.x = x, this.y = y, this;
1413
1455
  }
1414
1456
  add(point) {
1415
- return isNumber$1(point) ? (this.x += point, void (this.y += point)) : (this.x += point.x, this.y += point.y, this);
1457
+ return isNumber$2(point) ? (this.x += point, void (this.y += point)) : (this.x += point.x, this.y += point.y, this);
1416
1458
  }
1417
1459
  sub(point) {
1418
- return isNumber$1(point) ? (this.x -= point, void (this.y -= point)) : (this.x -= point.x, this.y -= point.y, this);
1460
+ return isNumber$2(point) ? (this.x -= point, void (this.y -= point)) : (this.x -= point.x, this.y -= point.y, this);
1419
1461
  }
1420
1462
  multi(point) {
1421
1463
  throw new Error("暂不支持");
@@ -2476,10 +2518,10 @@
2476
2518
  return ((value = Math.max(0, Math.min(255, Math.round(value) || 0))) < 16 ? "0" : "") + value.toString(16);
2477
2519
  }
2478
2520
  function rgb(value) {
2479
- return isNumber$1(value) ? new RGB(value >> 16, value >> 8 & 255, 255 & value, 1) : isArray$1(value) ? new RGB(value[0], value[1], value[2]) : new RGB(255, 255, 255);
2521
+ return isNumber$2(value) ? new RGB(value >> 16, value >> 8 & 255, 255 & value, 1) : isArray$1(value) ? new RGB(value[0], value[1], value[2]) : new RGB(255, 255, 255);
2480
2522
  }
2481
2523
  function rgba(value) {
2482
- return isNumber$1(value) ? new RGB(value >>> 24, value >>> 16 & 255, value >>> 8 & 255, 255 & value) : isArray$1(value) ? new RGB(value[0], value[1], value[2], value[3]) : new RGB(255, 255, 255, 1);
2524
+ return isNumber$2(value) ? new RGB(value >>> 24, value >>> 16 & 255, value >>> 8 & 255, 255 & value) : isArray$1(value) ? new RGB(value[0], value[1], value[2], value[3]) : new RGB(255, 255, 255, 1);
2483
2525
  }
2484
2526
  function SRGBToLinear(c) {
2485
2527
  return c < .04045 ? .0773993808 * c : Math.pow(.9478672986 * c + .0521327014, 2.4);
@@ -5248,6 +5290,9 @@
5248
5290
  function isNotAroundZero(val) {
5249
5291
  return val > EPSILON || val < -EPSILON;
5250
5292
  }
5293
+ function isNumber(data) {
5294
+ return "number" == typeof data && Number.isFinite(data);
5295
+ }
5251
5296
  const _v0 = [0, 0],
5252
5297
  _v1 = [0, 0],
5253
5298
  _v2 = [0, 0];
@@ -5652,7 +5697,7 @@
5652
5697
  };
5653
5698
  const VWindow = Symbol.for("VWindow");
5654
5699
  const WindowHandlerContribution = Symbol.for("WindowHandlerContribution");
5655
- exports.DefaultWindow = class DefaultWindow {
5700
+ exports.DefaultWindow = class DefaultWindow extends EventListenerManager {
5656
5701
  get width() {
5657
5702
  if (this._handler) {
5658
5703
  const wh = this._handler.getWH();
@@ -5671,7 +5716,7 @@
5671
5716
  return this._handler.getDpr();
5672
5717
  }
5673
5718
  constructor() {
5674
- this.hooks = {
5719
+ super(), this.hooks = {
5675
5720
  onChange: new SyncHook(["x", "y", "width", "height"])
5676
5721
  }, this.active = () => {
5677
5722
  const global = this.global;
@@ -5679,6 +5724,15 @@
5679
5724
  container.getNamed(WindowHandlerContribution, global.env).configure(this, global), this.actived = !0;
5680
5725
  }, this._uid = Generator.GenAutoIncrementId(), this.global = application.global, this.postInit();
5681
5726
  }
5727
+ _nativeAddEventListener(type, listener, options) {
5728
+ return this._handler.addEventListener(type, listener, options);
5729
+ }
5730
+ _nativeRemoveEventListener(type, listener, options) {
5731
+ return this._handler.removeEventListener(type, listener, options);
5732
+ }
5733
+ _nativeDispatchEvent(event) {
5734
+ return this._handler.dispatchEvent(event);
5735
+ }
5682
5736
  postInit() {
5683
5737
  this.global.hooks.onSetEnv.tap("window", this.active), this.active();
5684
5738
  }
@@ -5718,7 +5772,7 @@
5718
5772
  throw new Error("暂不支持");
5719
5773
  }
5720
5774
  release() {
5721
- return this.global.hooks.onSetEnv.unTap("window", this.active), this._handler.releaseWindow();
5775
+ return this.global.hooks.onSetEnv.unTap("window", this.active), this.clearAllEventListeners(), this._handler.releaseWindow();
5722
5776
  }
5723
5777
  getContext() {
5724
5778
  return this._handler.getContext();
@@ -5729,15 +5783,6 @@
5729
5783
  getImageBuffer(type) {
5730
5784
  return this._handler.getImageBuffer ? this._handler.getImageBuffer(type) : null;
5731
5785
  }
5732
- addEventListener(type, listener, options) {
5733
- return this._handler.addEventListener(type, listener, options);
5734
- }
5735
- removeEventListener(type, listener, options) {
5736
- return this._handler.removeEventListener(type, listener, options);
5737
- }
5738
- dispatchEvent(event) {
5739
- return this._handler.dispatchEvent(event);
5740
- }
5741
5786
  getBoundingClientRect() {
5742
5787
  return this._handler.getBoundingClientRect();
5743
5788
  }
@@ -6946,19 +6991,17 @@
6946
6991
  globalObj: globalObj,
6947
6992
  domElement: domElement
6948
6993
  } = this;
6949
- this.supportsPointerEvents ? (globalObj.getDocument() ? (globalObj.getDocument().addEventListener("pointermove", this.onPointerMove, !0), globalObj.getDocument().addEventListener("pointerup", this.onPointerUp, !0)) : (domElement.addEventListener("pointermove", this.onPointerMove, !0), domElement.addEventListener("pointerup", this.onPointerUp, !0)), domElement.addEventListener("pointerdown", this.onPointerDown, !0), domElement.addEventListener("pointerleave", this.onPointerOverOut, !0), domElement.addEventListener("pointerover", this.onPointerOverOut, !0)) : (globalObj.getDocument() ? (globalObj.getDocument().addEventListener("mousemove", this.onPointerMove, !0), globalObj.getDocument().addEventListener("mouseup", this.onPointerUp, !0)) : (domElement.addEventListener("mousemove", this.onPointerMove, !0), domElement.addEventListener("mouseup", this.onPointerUp, !0)), domElement.addEventListener("mousedown", this.onPointerDown, !0), domElement.addEventListener("mouseout", this.onPointerOverOut, !0), domElement.addEventListener("mouseover", this.onPointerOverOut, !0)), this.supportsTouchEvents && (domElement.addEventListener("touchstart", this.onPointerDown, !0), domElement.addEventListener("touchend", this.onPointerUp, !0), domElement.addEventListener("touchmove", this.onPointerMove, !0)), domElement.addEventListener("wheel", this.onWheel, {
6994
+ this.supportsPointerEvents ? (globalObj.getDocument() ? (globalObj.addEventListener("pointermove", this.onPointerMove, !0), globalObj.addEventListener("pointerup", this.onPointerUp, !0)) : (domElement.addEventListener("pointermove", this.onPointerMove, !0), domElement.addEventListener("pointerup", this.onPointerUp, !0)), domElement.addEventListener("pointerdown", this.onPointerDown, !0), domElement.addEventListener("pointerleave", this.onPointerOverOut, !0), domElement.addEventListener("pointerover", this.onPointerOverOut, !0)) : (globalObj.getDocument() ? (globalObj.addEventListener("mousemove", this.onPointerMove, !0), globalObj.addEventListener("mouseup", this.onPointerUp, !0)) : (domElement.addEventListener("mousemove", this.onPointerMove, !0), domElement.addEventListener("mouseup", this.onPointerUp, !0)), domElement.addEventListener("mousedown", this.onPointerDown, !0), domElement.addEventListener("mouseout", this.onPointerOverOut, !0), domElement.addEventListener("mouseover", this.onPointerOverOut, !0)), this.supportsTouchEvents && (domElement.addEventListener("touchstart", this.onPointerDown, !0), domElement.addEventListener("touchend", this.onPointerUp, !0), domElement.addEventListener("touchmove", this.onPointerMove, !0)), domElement.addEventListener("wheel", this.onWheel, {
6950
6995
  capture: !0
6951
6996
  }), this.eventsAdded = !0;
6952
6997
  }
6953
6998
  removeEvents() {
6954
- var _a;
6955
6999
  if (!this.eventsAdded || !this.domElement) return;
6956
7000
  const {
6957
- globalObj: globalObj,
6958
- domElement: domElement
6959
- } = this,
6960
- globalDocument = null !== (_a = globalObj.getDocument()) && void 0 !== _a ? _a : domElement;
6961
- this.supportsPointerEvents ? (globalDocument.removeEventListener("pointermove", this.onPointerMove, !0), globalDocument.removeEventListener("pointerup", this.onPointerUp, !0), domElement.removeEventListener("pointerdown", this.onPointerDown, !0), domElement.removeEventListener("pointerleave", this.onPointerOverOut, !0), domElement.removeEventListener("pointerover", this.onPointerOverOut, !0)) : (globalDocument.removeEventListener("mousemove", this.onPointerMove, !0), globalDocument.removeEventListener("mouseup", this.onPointerUp, !0), domElement.removeEventListener("mousedown", this.onPointerDown, !0), domElement.removeEventListener("mouseout", this.onPointerOverOut, !0), domElement.removeEventListener("mouseover", this.onPointerOverOut, !0)), this.supportsTouchEvents && (domElement.removeEventListener("touchstart", this.onPointerDown, !0), domElement.removeEventListener("touchend", this.onPointerUp, !0), domElement.removeEventListener("touchmove", this.onPointerMove, !0)), domElement.removeEventListener("wheel", this.onWheel, !0), this.domElement = null, this.eventsAdded = !1;
7001
+ globalObj: globalObj,
7002
+ domElement: domElement
7003
+ } = this;
7004
+ this.supportsPointerEvents ? (globalObj.getDocument() ? (globalObj.removeEventListener("pointermove", this.onPointerMove, !0), globalObj.removeEventListener("pointerup", this.onPointerUp, !0)) : (domElement.removeEventListener("pointermove", this.onPointerMove, !0), domElement.removeEventListener("pointerup", this.onPointerUp, !0)), domElement.removeEventListener("pointerdown", this.onPointerDown, !0), domElement.removeEventListener("pointerleave", this.onPointerOverOut, !0), domElement.removeEventListener("pointerover", this.onPointerOverOut, !0)) : (globalObj.getDocument() ? (globalObj.removeEventListener("mousemove", this.onPointerMove, !0), globalObj.removeEventListener("mouseup", this.onPointerUp, !0)) : (domElement.removeEventListener("mousemove", this.onPointerMove, !0), domElement.removeEventListener("mouseup", this.onPointerUp, !0)), domElement.removeEventListener("mousedown", this.onPointerDown, !0), domElement.removeEventListener("mouseout", this.onPointerOverOut, !0), domElement.removeEventListener("mouseover", this.onPointerOverOut, !0)), this.supportsTouchEvents && (domElement.removeEventListener("touchstart", this.onPointerDown, !0), domElement.removeEventListener("touchend", this.onPointerUp, !0), domElement.removeEventListener("touchmove", this.onPointerMove, !0)), domElement.removeEventListener("wheel", this.onWheel, !0), this.domElement = null, this.eventsAdded = !1;
6962
7005
  }
6963
7006
  mapToViewportPoint(event) {
6964
7007
  return this.domElement.pointTransform ? this.domElement.pointTransform(event.x, event.y) : event;
@@ -7952,7 +7995,7 @@
7952
7995
  }
7953
7996
  onBind() {
7954
7997
  var _a, _b, _c, _d, _e, _f, _g, _h;
7955
- this.fromNumber = isNumber$1(null === (_a = this.from) || void 0 === _a ? void 0 : _a.text) ? null === (_b = this.from) || void 0 === _b ? void 0 : _b.text : Number.parseFloat(null === (_c = this.from) || void 0 === _c ? void 0 : _c.text), this.toNumber = isNumber$1(null === (_d = this.to) || void 0 === _d ? void 0 : _d.text) ? null === (_e = this.to) || void 0 === _e ? void 0 : _e.text : Number.parseFloat(null === (_f = this.to) || void 0 === _f ? void 0 : _f.text), Number.isFinite(this.toNumber) || (this.fromNumber = 0), Number.isFinite(this.toNumber) || (this.valid = !1), !1 !== this.valid && (this.decimalLength = null !== (_h = null === (_g = this.params) || void 0 === _g ? void 0 : _g.fixed) && void 0 !== _h ? _h : Math.max(getDecimalPlaces(this.fromNumber), getDecimalPlaces(this.toNumber)));
7998
+ this.fromNumber = isNumber$2(null === (_a = this.from) || void 0 === _a ? void 0 : _a.text) ? null === (_b = this.from) || void 0 === _b ? void 0 : _b.text : Number.parseFloat(null === (_c = this.from) || void 0 === _c ? void 0 : _c.text), this.toNumber = isNumber$2(null === (_d = this.to) || void 0 === _d ? void 0 : _d.text) ? null === (_e = this.to) || void 0 === _e ? void 0 : _e.text : Number.parseFloat(null === (_f = this.to) || void 0 === _f ? void 0 : _f.text), Number.isFinite(this.toNumber) || (this.fromNumber = 0), Number.isFinite(this.toNumber) || (this.valid = !1), !1 !== this.valid && (this.decimalLength = null !== (_h = null === (_g = this.params) || void 0 === _g ? void 0 : _g.fixed) && void 0 !== _h ? _h : Math.max(getDecimalPlaces(this.fromNumber), getDecimalPlaces(this.toNumber)));
7956
7999
  }
7957
8000
  onEnd() {}
7958
8001
  onUpdate(end, ratio, out) {
@@ -9095,7 +9138,7 @@
9095
9138
  return res;
9096
9139
  };
9097
9140
  const samplingPoints = (points, count) => {
9098
- const validatePoints = points.filter(point => !1 !== point.defined && isNumber$1(point.x) && isNumber$1(point.y));
9141
+ const validatePoints = points.filter(point => !1 !== point.defined && isNumber$2(point.x) && isNumber$2(point.y));
9099
9142
  if (0 === validatePoints.length) return [];
9100
9143
  if (1 === validatePoints.length) return new Array(count).fill(0).map(i => validatePoints[0]);
9101
9144
  const res = [];
@@ -9131,7 +9174,7 @@
9131
9174
  var _a;
9132
9175
  return res.concat(null !== (_a = seg.points) && void 0 !== _a ? _a : []);
9133
9176
  }, []));
9134
- const validatePoints = points.filter(point => !1 !== point.defined && isNumber$1(point.x) && isNumber$1(point.y));
9177
+ const validatePoints = points.filter(point => !1 !== point.defined && isNumber$2(point.x) && isNumber$2(point.y));
9135
9178
  if (!validatePoints.length) return [];
9136
9179
  const allPoints = [];
9137
9180
  validatePoints.forEach(point => {
@@ -9337,10 +9380,10 @@
9337
9380
 
9338
9381
  function colorArrayToString(color) {
9339
9382
  let alphaChannel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !1;
9340
- return Array.isArray(color) && isNumber$1(color[0]) ? alphaChannel ? `rgb(${Math.round(color[0])},${Math.round(color[1])},${Math.round(color[2])},${color[3].toFixed(2)})` : `rgb(${Math.round(color[0])},${Math.round(color[1])},${Math.round(color[2])})` : color;
9383
+ return Array.isArray(color) && isNumber$2(color[0]) ? alphaChannel ? `rgb(${Math.round(color[0])},${Math.round(color[1])},${Math.round(color[2])},${color[3].toFixed(2)})` : `rgb(${Math.round(color[0])},${Math.round(color[1])},${Math.round(color[2])})` : color;
9341
9384
  }
9342
9385
  function interpolateColor(from, to, ratio, alphaChannel, cb) {
9343
- if (Array.isArray(from) && !isNumber$1(from[0]) || Array.isArray(to) && !isNumber$1(to[0])) {
9386
+ if (Array.isArray(from) && !isNumber$2(from[0]) || Array.isArray(to) && !isNumber$2(to[0])) {
9344
9387
  return new Array(4).fill(0).map((_, index) => _interpolateColor(isArray$1(from) ? from[index] : from, isArray$1(to) ? to[index] : to, ratio, alphaChannel));
9345
9388
  }
9346
9389
  return _interpolateColor(from, to, ratio, alphaChannel, cb);
@@ -9868,13 +9911,13 @@
9868
9911
 
9869
9912
  class BaseSymbol {
9870
9913
  bounds(size, bounds) {
9871
- if (isNumber$1(size)) {
9914
+ if (isNumber$2(size)) {
9872
9915
  const halfS = size / 2;
9873
9916
  bounds.x1 = -halfS, bounds.x2 = halfS, bounds.y1 = -halfS, bounds.y2 = halfS;
9874
9917
  } else bounds.x1 = -size[0] / 2, bounds.x2 = size[0] / 2, bounds.y1 = -size[1] / 2, bounds.y2 = size[1] / 2;
9875
9918
  }
9876
9919
  parseSize(size) {
9877
- return isNumber$1(size) ? size : Math.min(size[0], size[1]);
9920
+ return isNumber$2(size) ? size : Math.min(size[0], size[1]);
9878
9921
  }
9879
9922
  }
9880
9923
 
@@ -10293,10 +10336,10 @@
10293
10336
  super(...arguments), this.type = "rect", this.pathStr = "M -0.5,0.25 L 0.5,0.25 L 0.5,-0.25,L -0.5,-0.25 Z";
10294
10337
  }
10295
10338
  draw(ctx, size, x, y) {
10296
- return isNumber$1(size) ? rectSize(ctx, size, x, y) : rectSizeArray(ctx, size, x, y);
10339
+ return isNumber$2(size) ? rectSize(ctx, size, x, y) : rectSizeArray(ctx, size, x, y);
10297
10340
  }
10298
10341
  drawWithClipRange(ctx, size, x, y, clipRange, z, cb) {
10299
- isNumber$1(size) && (size = [size, size / 2]);
10342
+ isNumber$2(size) && (size = [size, size / 2]);
10300
10343
  const drawLength = 2 * (size[0] + size[1]) * clipRange,
10301
10344
  points = [{
10302
10345
  x: x + size[0] / 2,
@@ -10328,7 +10371,7 @@
10328
10371
  return !1;
10329
10372
  }
10330
10373
  drawOffset(ctx, size, x, y, offset) {
10331
- return isNumber$1(size) ? rectSize(ctx, size + 2 * offset, x, y) : rectSizeArray(ctx, [size[0] + 2 * offset, size[1] + 2 * offset], x, y);
10374
+ return isNumber$2(size) ? rectSize(ctx, size + 2 * offset, x, y) : rectSizeArray(ctx, [size[0] + 2 * offset, size[1] + 2 * offset], x, y);
10332
10375
  }
10333
10376
  }
10334
10377
  var rect = new RectSymbol();
@@ -10348,7 +10391,7 @@
10348
10391
  return size = this.parseSize(size), this.drawOffset(ctx, size, x, y, 0, z, cb);
10349
10392
  }
10350
10393
  parseSize(size) {
10351
- return isNumber$1(size) ? size : Math.min(size[0], size[1]);
10394
+ return isNumber$2(size) ? size : Math.min(size[0], size[1]);
10352
10395
  }
10353
10396
  drawWithClipRange(ctx, size, x, y, clipRange, z, cb) {
10354
10397
  return size = this.parseSize(size), this.isSvg ? !!this.svgCache && (this.svgCache.forEach(item => {
@@ -12604,12 +12647,12 @@
12604
12647
  textBaseline: textBaseline
12605
12648
  } = attribute;
12606
12649
  if (null != attribute.forceBoundsHeight) {
12607
- const h = isNumber$1(attribute.forceBoundsHeight) ? attribute.forceBoundsHeight : attribute.forceBoundsHeight(),
12650
+ const h = isNumber$2(attribute.forceBoundsHeight) ? attribute.forceBoundsHeight : attribute.forceBoundsHeight(),
12608
12651
  dy = textLayoutOffsetY(textBaseline, h, h);
12609
12652
  aabbBounds.set(aabbBounds.x1, dy, aabbBounds.x2, dy + h);
12610
12653
  }
12611
12654
  if (null != attribute.forceBoundsWidth) {
12612
- const w = isNumber$1(attribute.forceBoundsWidth) ? attribute.forceBoundsWidth : attribute.forceBoundsWidth(),
12655
+ const w = isNumber$2(attribute.forceBoundsWidth) ? attribute.forceBoundsWidth : attribute.forceBoundsWidth(),
12613
12656
  dx = textDrawOffsetX(textAlign, w);
12614
12657
  aabbBounds.set(dx, aabbBounds.y1, dx + w, aabbBounds.y2);
12615
12658
  }
@@ -14708,7 +14751,7 @@
14708
14751
  }
14709
14752
  } else {
14710
14753
  const richTextConfig = this.combinedStyleToCharacter(textConfig[i]);
14711
- if (isNumber$1(richTextConfig.text) && (richTextConfig.text = `${richTextConfig.text}`), richTextConfig.text && richTextConfig.text.includes("\n")) {
14754
+ if (isNumber$2(richTextConfig.text) && (richTextConfig.text = `${richTextConfig.text}`), richTextConfig.text && richTextConfig.text.includes("\n")) {
14712
14755
  const textParts = richTextConfig.text.split("\n");
14713
14756
  for (let j = 0; j < textParts.length; j++) if (0 === j) paragraphs.push(new Paragraph(textParts[j], !1, richTextConfig, ascentDescentMode));else if (textParts[j] || i === textConfig.length - 1) paragraphs.push(new Paragraph(textParts[j], !0, richTextConfig, ascentDescentMode));else {
14714
14757
  const nextRichTextConfig = this.combinedStyleToCharacter(textConfig[i + 1]);
@@ -14995,7 +15038,7 @@
14995
15038
  } = this.attribute;
14996
15039
  if (outerRadius += outerPadding, innerRadius -= innerPadding, 0 === cornerRadius || "0%" === cornerRadius) return 0;
14997
15040
  const deltaRadius = Math.abs(outerRadius - innerRadius),
14998
- parseCR = cornerRadius => Math.min(isNumber$1(cornerRadius, !0) ? cornerRadius : deltaRadius * parseFloat(cornerRadius) / 100, deltaRadius / 2);
15041
+ parseCR = cornerRadius => Math.min(isNumber$2(cornerRadius, !0) ? cornerRadius : deltaRadius * parseFloat(cornerRadius) / 100, deltaRadius / 2);
14999
15042
  if (isArray$1(cornerRadius)) {
15000
15043
  const crList = cornerRadius.map(cr => parseCR(cr) || 0);
15001
15044
  return 0 === crList.length ? [crList[0], crList[0], crList[0], crList[0]] : 2 === crList.length ? [crList[0], crList[1], crList[0], crList[1]] : (3 === crList.length && crList.push(0), crList);
@@ -15997,7 +16040,7 @@
15997
16040
  let roundCorner = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : !0;
15998
16041
  let edgeCb = arguments.length > 7 ? arguments[7] : undefined;
15999
16042
  let cornerRadius;
16000
- if (Array.isArray(roundCorner) && (edgeCb = roundCorner, roundCorner = !0), width < 0 && (x += width, width = -width), height < 0 && (y += height, height = -height), isNumber$1(rectCornerRadius, !0)) cornerRadius = [rectCornerRadius = abs(rectCornerRadius), rectCornerRadius, rectCornerRadius, rectCornerRadius];else if (Array.isArray(rectCornerRadius)) {
16043
+ if (Array.isArray(roundCorner) && (edgeCb = roundCorner, roundCorner = !0), width < 0 && (x += width, width = -width), height < 0 && (y += height, height = -height), isNumber$2(rectCornerRadius, !0)) cornerRadius = [rectCornerRadius = abs(rectCornerRadius), rectCornerRadius, rectCornerRadius, rectCornerRadius];else if (Array.isArray(rectCornerRadius)) {
16001
16044
  const cornerRadiusArr = rectCornerRadius;
16002
16045
  let cr0, cr1;
16003
16046
  switch (cornerRadiusArr.length) {
@@ -20594,6 +20637,80 @@
20594
20637
  return points = highestQuality ? points : simplifyRadialDist(points, void 0 !== tolerance ? tolerance * tolerance : 1);
20595
20638
  }
20596
20639
 
20640
+ function isIdentityMatrix(matrix) {
20641
+ return 1 === matrix.a && 0 === matrix.b && 0 === matrix.c && 1 === matrix.d && 0 === matrix.e && 0 === matrix.f;
20642
+ }
20643
+ function createEventTransformer(containerElement, getMatrix, getRect, transformPoint) {
20644
+ return event => {
20645
+ if (!(event instanceof MouseEvent || event instanceof TouchEvent || event instanceof PointerEvent)) return event;
20646
+ const transformMatrix = getMatrix();
20647
+ if (isIdentityMatrix(transformMatrix)) return event;
20648
+ const containerRect = getRect(),
20649
+ transformedEvent = new event.constructor(event.type, event);
20650
+ if (Object.defineProperties(transformedEvent, {
20651
+ target: {
20652
+ value: event.target
20653
+ },
20654
+ currentTarget: {
20655
+ value: event.currentTarget
20656
+ }
20657
+ }), event instanceof MouseEvent || event instanceof PointerEvent) transformPoint(event.clientX, event.clientY, transformMatrix, containerRect, transformedEvent);else if (event instanceof TouchEvent) {
20658
+ if (event.touches.length > 0) {
20659
+ const touch = transformedEvent.touches[0];
20660
+ transformPoint(touch.clientX, touch.clientY, transformMatrix, containerRect, touch);
20661
+ }
20662
+ if (event.changedTouches.length > 0) {
20663
+ const touch = transformedEvent.changedTouches[0];
20664
+ transformPoint(touch.clientX, touch.clientY, transformMatrix, containerRect, touch);
20665
+ }
20666
+ }
20667
+ return transformedEvent;
20668
+ };
20669
+ }
20670
+ function createCanvasEventTransformer(canvasElement, getMatrix, getRect, transformPoint) {
20671
+ return createEventTransformer(canvasElement.parentElement || canvasElement, getMatrix, getRect, transformPoint);
20672
+ }
20673
+ function registerWindowEventTransformer(window, container, getMatrix, getRect, transformPoint) {
20674
+ const transformer = createEventTransformer(container, getMatrix, getRect, transformPoint);
20675
+ window.setEventListenerTransformer(transformer);
20676
+ }
20677
+ function registerGlobalEventTransformer(global, container, getMatrix, getRect, transformPoint) {
20678
+ const transformer = createEventTransformer(container, getMatrix, getRect, transformPoint);
20679
+ global.setEventListenerTransformer(transformer);
20680
+ }
20681
+ function transformPointForCanvas(clientX, clientY, matrix, rect, transformedEvent) {
20682
+ const transformedPoint = {
20683
+ x: clientX,
20684
+ y: clientY
20685
+ };
20686
+ matrix.transformPoint(transformedPoint, transformedPoint), Object.defineProperties(transformedEvent, {
20687
+ _canvasX: {
20688
+ value: transformedPoint.x
20689
+ },
20690
+ _canvasY: {
20691
+ value: transformedPoint.y
20692
+ }
20693
+ });
20694
+ }
20695
+ function mapToCanvasPointForCanvas(nativeEvent) {
20696
+ var _a;
20697
+ if (isNumber(nativeEvent._canvasX) && isNumber(nativeEvent._canvasY)) return {
20698
+ x: nativeEvent._canvasX,
20699
+ y: nativeEvent._canvasY
20700
+ };
20701
+ if (nativeEvent.changedTouches) {
20702
+ const data = null !== (_a = nativeEvent.changedTouches[0]) && void 0 !== _a ? _a : {};
20703
+ return {
20704
+ x: data._canvasX,
20705
+ y: data._canvasY
20706
+ };
20707
+ }
20708
+ return {
20709
+ x: nativeEvent._canvasX || 0,
20710
+ y: nativeEvent._canvasY || 0
20711
+ };
20712
+ }
20713
+
20597
20714
  var __rest$1 = undefined && undefined.__rest || function (s, e) {
20598
20715
  var t = {};
20599
20716
  for (var p in s) Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0 && (t[p] = s[p]);
@@ -27151,7 +27268,7 @@
27151
27268
  x += point.x, y += point.y, pickContext.setTransformForCurrent();
27152
27269
  } else x = 0, y = 0, onlyTranslate = !1, pickContext.transformFromMatrix(rect.transMatrix, !0);
27153
27270
  let picked = !0;
27154
- if (!onlyTranslate || rect.shadowRoot || isNumber$1(cornerRadius, !0) && 0 !== cornerRadius || isArray$1(cornerRadius) && cornerRadius.some(num => 0 !== num)) picked = !1, this.canvasRenderer.drawShape(rect, pickContext, x, y, {}, null, (context, rectAttribute, themeAttribute) => !!picked || (picked = context.isPointInPath(point.x, point.y), picked), (context, rectAttribute, themeAttribute) => {
27271
+ if (!onlyTranslate || rect.shadowRoot || isNumber$2(cornerRadius, !0) && 0 !== cornerRadius || isArray$1(cornerRadius) && cornerRadius.some(num => 0 !== num)) picked = !1, this.canvasRenderer.drawShape(rect, pickContext, x, y, {}, null, (context, rectAttribute, themeAttribute) => !!picked || (picked = context.isPointInPath(point.x, point.y), picked), (context, rectAttribute, themeAttribute) => {
27155
27272
  if (picked) return !0;
27156
27273
  const lineWidth = rectAttribute.lineWidth || themeAttribute.lineWidth,
27157
27274
  pickStrokeBuffer = rectAttribute.pickStrokeBuffer || themeAttribute.pickStrokeBuffer,
@@ -31891,7 +32008,7 @@
31891
32008
 
31892
32009
  const roughModule = _roughModule;
31893
32010
 
31894
- const version = "0.22.8";
32011
+ const version = "0.22.9-alpha.2";
31895
32012
  preLoadAllModule();
31896
32013
  if (isBrowserEnv()) {
31897
32014
  loadBrowserEnv(container);
@@ -32277,9 +32394,11 @@
32277
32394
  exports.createArc = createArc;
32278
32395
  exports.createArc3d = createArc3d;
32279
32396
  exports.createArea = createArea;
32397
+ exports.createCanvasEventTransformer = createCanvasEventTransformer;
32280
32398
  exports.createCircle = createCircle;
32281
32399
  exports.createColor = createColor;
32282
32400
  exports.createConicalGradient = createConicalGradient;
32401
+ exports.createEventTransformer = createEventTransformer;
32283
32402
  exports.createGifImage = createGifImage;
32284
32403
  exports.createGlyph = createGlyph;
32285
32404
  exports.createGroup = createGroup;
@@ -32438,6 +32557,7 @@
32438
32557
  exports.lottieCanvasPickModule = lottieCanvasPickModule;
32439
32558
  exports.lottieModule = lottieModule;
32440
32559
  exports.lynxEnvModule = lynxEnvModule;
32560
+ exports.mapToCanvasPointForCanvas = mapToCanvasPointForCanvas;
32441
32561
  exports.mat3Tomat4 = mat3Tomat4;
32442
32562
  exports.mat4Allocate = mat4Allocate;
32443
32563
  exports.matrixAllocate = matrixAllocate;
@@ -32497,6 +32617,7 @@
32497
32617
  exports.registerFlexLayoutPlugin = registerFlexLayoutPlugin;
32498
32618
  exports.registerGifGraphic = registerGifGraphic;
32499
32619
  exports.registerGifImage = registerGifImage;
32620
+ exports.registerGlobalEventTransformer = registerGlobalEventTransformer;
32500
32621
  exports.registerGlyph = registerGlyph;
32501
32622
  exports.registerGlyphGraphic = registerGlyphGraphic;
32502
32623
  exports.registerGroup = registerGroup;
@@ -32529,6 +32650,7 @@
32529
32650
  exports.registerText = registerText;
32530
32651
  exports.registerTextGraphic = registerTextGraphic;
32531
32652
  exports.registerViewTransform3dPlugin = registerViewTransform3dPlugin;
32653
+ exports.registerWindowEventTransformer = registerWindowEventTransformer;
32532
32654
  exports.registerWrapText = registerWrapText;
32533
32655
  exports.registerWrapTextGraphic = registerWrapTextGraphic;
32534
32656
  exports.renderCommandList = renderCommandList;
@@ -32579,6 +32701,7 @@
32579
32701
  exports.textModule = textModule;
32580
32702
  exports.transformKeys = transformKeys;
32581
32703
  exports.transformMat4 = transformMat4;
32704
+ exports.transformPointForCanvas = transformPointForCanvas;
32582
32705
  exports.transformUtil = transformUtil;
32583
32706
  exports.translate = translate;
32584
32707
  exports.ttEnvModule = ttEnvModule;