@visactor/vrender-core 0.21.0-alpha.4 → 0.21.0-beta.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 (170) hide show
  1. package/cjs/animate/Ticker/default-ticker.d.ts +4 -2
  2. package/cjs/animate/Ticker/default-ticker.js +8 -5
  3. package/cjs/animate/Ticker/default-ticker.js.map +1 -1
  4. package/cjs/animate/custom-animate.d.ts +2 -0
  5. package/cjs/animate/custom-animate.js +11 -2
  6. package/cjs/animate/custom-animate.js.map +1 -1
  7. package/cjs/core/stage.d.ts +2 -0
  8. package/cjs/core/stage.js +9 -5
  9. package/cjs/core/stage.js.map +1 -1
  10. package/cjs/graphic/builtin-symbol/arrow.js +2 -2
  11. package/cjs/graphic/builtin-symbol/arrow.js.map +1 -1
  12. package/cjs/graphic/builtin-symbol/arrow2-down.js +2 -2
  13. package/cjs/graphic/builtin-symbol/arrow2-down.js.map +1 -1
  14. package/cjs/graphic/builtin-symbol/arrow2-left.js +2 -2
  15. package/cjs/graphic/builtin-symbol/arrow2-left.js.map +1 -1
  16. package/cjs/graphic/builtin-symbol/arrow2-right.js +2 -2
  17. package/cjs/graphic/builtin-symbol/arrow2-right.js.map +1 -1
  18. package/cjs/graphic/builtin-symbol/arrow2-up.js +2 -2
  19. package/cjs/graphic/builtin-symbol/arrow2-up.js.map +1 -1
  20. package/cjs/graphic/builtin-symbol/base.d.ts +1 -0
  21. package/cjs/graphic/builtin-symbol/base.js +3 -0
  22. package/cjs/graphic/builtin-symbol/base.js.map +1 -1
  23. package/cjs/graphic/builtin-symbol/circle.js +3 -3
  24. package/cjs/graphic/builtin-symbol/circle.js.map +1 -1
  25. package/cjs/graphic/builtin-symbol/close.js +3 -3
  26. package/cjs/graphic/builtin-symbol/close.js.map +1 -1
  27. package/cjs/graphic/builtin-symbol/cross.js +2 -2
  28. package/cjs/graphic/builtin-symbol/cross.js.map +1 -1
  29. package/cjs/graphic/builtin-symbol/diamond.js +3 -3
  30. package/cjs/graphic/builtin-symbol/diamond.js.map +1 -1
  31. package/cjs/graphic/builtin-symbol/line-h.js +3 -3
  32. package/cjs/graphic/builtin-symbol/line-h.js.map +1 -1
  33. package/cjs/graphic/builtin-symbol/line-v.js +3 -3
  34. package/cjs/graphic/builtin-symbol/line-v.js.map +1 -1
  35. package/cjs/graphic/builtin-symbol/square.js +2 -2
  36. package/cjs/graphic/builtin-symbol/square.js.map +1 -1
  37. package/cjs/graphic/builtin-symbol/star.js +2 -2
  38. package/cjs/graphic/builtin-symbol/star.js.map +1 -1
  39. package/cjs/graphic/builtin-symbol/stroke.js +2 -2
  40. package/cjs/graphic/builtin-symbol/stroke.js.map +1 -1
  41. package/cjs/graphic/builtin-symbol/thin-triangle.js +2 -2
  42. package/cjs/graphic/builtin-symbol/thin-triangle.js.map +1 -1
  43. package/cjs/graphic/builtin-symbol/triangle-down.js +2 -2
  44. package/cjs/graphic/builtin-symbol/triangle-down.js.map +1 -1
  45. package/cjs/graphic/builtin-symbol/triangle-left.js +2 -2
  46. package/cjs/graphic/builtin-symbol/triangle-left.js.map +1 -1
  47. package/cjs/graphic/builtin-symbol/triangle-right.js +2 -2
  48. package/cjs/graphic/builtin-symbol/triangle-right.js.map +1 -1
  49. package/cjs/graphic/builtin-symbol/triangle-up.js +2 -2
  50. package/cjs/graphic/builtin-symbol/triangle-up.js.map +1 -1
  51. package/cjs/graphic/builtin-symbol/utils.d.ts +1 -0
  52. package/cjs/graphic/builtin-symbol/utils.js +6 -3
  53. package/cjs/graphic/builtin-symbol/utils.js.map +1 -1
  54. package/cjs/graphic/builtin-symbol/wedge.js +2 -2
  55. package/cjs/graphic/builtin-symbol/wedge.js.map +1 -1
  56. package/cjs/graphic/builtin-symbol/wye.js +2 -2
  57. package/cjs/graphic/builtin-symbol/wye.js.map +1 -1
  58. package/cjs/graphic/config.js +2 -1
  59. package/cjs/graphic/config.js.map +1 -1
  60. package/cjs/graphic/richtext/paragraph.js +3 -1
  61. package/cjs/graphic/richtext/paragraph.js.map +1 -1
  62. package/cjs/interface/animate.d.ts +3 -1
  63. package/cjs/interface/animate.js.map +1 -1
  64. package/cjs/interface/context.d.ts +1 -0
  65. package/cjs/interface/context.js.map +1 -1
  66. package/cjs/interface/graphic.d.ts +1 -0
  67. package/cjs/interface/graphic.js.map +1 -1
  68. package/cjs/interface/stage.d.ts +1 -0
  69. package/cjs/interface/stage.js.map +1 -1
  70. package/cjs/render/contributions/render/contributions/arc-contribution-render.js +2 -2
  71. package/cjs/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  72. package/cjs/render/contributions/render/contributions/circle-contribution-render.js +2 -2
  73. package/cjs/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  74. package/cjs/render/contributions/render/contributions/image-contribution-render.d.ts +1 -1
  75. package/cjs/render/contributions/render/contributions/image-contribution-render.js +2 -3
  76. package/cjs/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  77. package/cjs/render/contributions/render/contributions/rect-contribution-render.js +2 -2
  78. package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  79. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js +2 -2
  80. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  81. package/cjs/render/contributions/render/image-render.js +4 -6
  82. package/cjs/render/contributions/render/image-render.js.map +1 -1
  83. package/cjs/resource-loader/loader.js +1 -1
  84. package/cjs/resource-loader/loader.js.map +1 -1
  85. package/dist/index.es.js +128 -81
  86. package/es/animate/Ticker/default-ticker.d.ts +4 -2
  87. package/es/animate/Ticker/default-ticker.js +9 -6
  88. package/es/animate/Ticker/default-ticker.js.map +1 -1
  89. package/es/animate/custom-animate.d.ts +2 -0
  90. package/es/animate/custom-animate.js +11 -2
  91. package/es/animate/custom-animate.js.map +1 -1
  92. package/es/core/stage.d.ts +2 -0
  93. package/es/core/stage.js +9 -5
  94. package/es/core/stage.js.map +1 -1
  95. package/es/graphic/builtin-symbol/arrow.js +2 -2
  96. package/es/graphic/builtin-symbol/arrow.js.map +1 -1
  97. package/es/graphic/builtin-symbol/arrow2-down.js +2 -2
  98. package/es/graphic/builtin-symbol/arrow2-down.js.map +1 -1
  99. package/es/graphic/builtin-symbol/arrow2-left.js +2 -2
  100. package/es/graphic/builtin-symbol/arrow2-left.js.map +1 -1
  101. package/es/graphic/builtin-symbol/arrow2-right.js +2 -2
  102. package/es/graphic/builtin-symbol/arrow2-right.js.map +1 -1
  103. package/es/graphic/builtin-symbol/arrow2-up.js +2 -2
  104. package/es/graphic/builtin-symbol/arrow2-up.js.map +1 -1
  105. package/es/graphic/builtin-symbol/base.d.ts +1 -0
  106. package/es/graphic/builtin-symbol/base.js +3 -0
  107. package/es/graphic/builtin-symbol/base.js.map +1 -1
  108. package/es/graphic/builtin-symbol/circle.js +3 -3
  109. package/es/graphic/builtin-symbol/circle.js.map +1 -1
  110. package/es/graphic/builtin-symbol/close.js +3 -3
  111. package/es/graphic/builtin-symbol/close.js.map +1 -1
  112. package/es/graphic/builtin-symbol/cross.js +2 -2
  113. package/es/graphic/builtin-symbol/cross.js.map +1 -1
  114. package/es/graphic/builtin-symbol/diamond.js +3 -3
  115. package/es/graphic/builtin-symbol/diamond.js.map +1 -1
  116. package/es/graphic/builtin-symbol/line-h.js +3 -3
  117. package/es/graphic/builtin-symbol/line-h.js.map +1 -1
  118. package/es/graphic/builtin-symbol/line-v.js +3 -3
  119. package/es/graphic/builtin-symbol/line-v.js.map +1 -1
  120. package/es/graphic/builtin-symbol/square.js +2 -2
  121. package/es/graphic/builtin-symbol/square.js.map +1 -1
  122. package/es/graphic/builtin-symbol/star.js +2 -2
  123. package/es/graphic/builtin-symbol/star.js.map +1 -1
  124. package/es/graphic/builtin-symbol/stroke.js +2 -2
  125. package/es/graphic/builtin-symbol/stroke.js.map +1 -1
  126. package/es/graphic/builtin-symbol/thin-triangle.js +2 -2
  127. package/es/graphic/builtin-symbol/thin-triangle.js.map +1 -1
  128. package/es/graphic/builtin-symbol/triangle-down.js +2 -2
  129. package/es/graphic/builtin-symbol/triangle-down.js.map +1 -1
  130. package/es/graphic/builtin-symbol/triangle-left.js +2 -2
  131. package/es/graphic/builtin-symbol/triangle-left.js.map +1 -1
  132. package/es/graphic/builtin-symbol/triangle-right.js +2 -2
  133. package/es/graphic/builtin-symbol/triangle-right.js.map +1 -1
  134. package/es/graphic/builtin-symbol/triangle-up.js +2 -2
  135. package/es/graphic/builtin-symbol/triangle-up.js.map +1 -1
  136. package/es/graphic/builtin-symbol/utils.d.ts +1 -0
  137. package/es/graphic/builtin-symbol/utils.js +7 -4
  138. package/es/graphic/builtin-symbol/utils.js.map +1 -1
  139. package/es/graphic/builtin-symbol/wedge.js +2 -2
  140. package/es/graphic/builtin-symbol/wedge.js.map +1 -1
  141. package/es/graphic/builtin-symbol/wye.js +2 -2
  142. package/es/graphic/builtin-symbol/wye.js.map +1 -1
  143. package/es/graphic/config.js +2 -1
  144. package/es/graphic/config.js.map +1 -1
  145. package/es/graphic/richtext/paragraph.js +4 -2
  146. package/es/graphic/richtext/paragraph.js.map +1 -1
  147. package/es/interface/animate.d.ts +3 -1
  148. package/es/interface/animate.js.map +1 -1
  149. package/es/interface/context.d.ts +1 -0
  150. package/es/interface/context.js.map +1 -1
  151. package/es/interface/graphic.d.ts +1 -0
  152. package/es/interface/graphic.js.map +1 -1
  153. package/es/interface/stage.d.ts +1 -0
  154. package/es/interface/stage.js.map +1 -1
  155. package/es/render/contributions/render/contributions/arc-contribution-render.js +2 -2
  156. package/es/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  157. package/es/render/contributions/render/contributions/circle-contribution-render.js +2 -2
  158. package/es/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  159. package/es/render/contributions/render/contributions/image-contribution-render.d.ts +1 -1
  160. package/es/render/contributions/render/contributions/image-contribution-render.js +2 -3
  161. package/es/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  162. package/es/render/contributions/render/contributions/rect-contribution-render.js +2 -2
  163. package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  164. package/es/render/contributions/render/contributions/symbol-contribution-render.js +2 -2
  165. package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  166. package/es/render/contributions/render/image-render.js +4 -6
  167. package/es/render/contributions/render/image-render.js.map +1 -1
  168. package/es/resource-loader/loader.js +1 -1
  169. package/es/resource-loader/loader.js.map +1 -1
  170. package/package.json +4 -3
package/dist/index.es.js CHANGED
@@ -3055,7 +3055,7 @@ const DefaultConnectAttribute = {
3055
3055
  const DefaultDebugAttribute = {
3056
3056
  _debug_bounds: false
3057
3057
  };
3058
- const DefaultAttribute = Object.assign(Object.assign(Object.assign({ strokeSeg: null, renderable: true, pickable: true, shadowGraphic: undefined, childrenPickable: true, fillPickable: true, strokePickable: true, visible: true, zIndex: 0, layout: null, boundsPadding: 0, fillStrokeOrder: 0, renderStyle: 'default', pickMode: 'accurate', customPickShape: null, boundsMode: 'accurate', keepDirIn3d: true, shadowRootIdx: 1, globalZIndex: 1, globalCompositeOperation: '', overflow: 'hidden', shadowPickMode: 'graphic' }, DefaultDebugAttribute), DefaultStyle), DefaultTransform);
3058
+ const DefaultAttribute = Object.assign(Object.assign(Object.assign({ strokeSeg: null, renderable: true, pickable: true, shadowGraphic: undefined, childrenPickable: true, fillPickable: true, strokePickable: true, visible: true, zIndex: 0, layout: null, boundsPadding: 0, fillStrokeOrder: 0, renderStyle: 'default', pickMode: 'accurate', customPickShape: null, boundsMode: 'accurate', keepDirIn3d: true, shadowRootIdx: 1, globalZIndex: 1, globalCompositeOperation: '', overflow: 'hidden', shadowPickMode: 'graphic', keepStrokeScale: false }, DefaultDebugAttribute), DefaultStyle), DefaultTransform);
3059
3059
  function addAttributeToPrototype(obj, c, keys) {
3060
3060
  keys.forEach(key => {
3061
3061
  c.prototype[key] = obj[key];
@@ -6841,7 +6841,7 @@ class TimeOutTickHandler {
6841
6841
  }
6842
6842
  }
6843
6843
 
6844
- class DefaultTicker {
6844
+ class DefaultTicker extends EventEmitter {
6845
6845
  set mode(m) {
6846
6846
  if (this._mode === m) {
6847
6847
  return;
@@ -6853,18 +6853,19 @@ class DefaultTicker {
6853
6853
  return this._mode;
6854
6854
  }
6855
6855
  constructor(timelines = []) {
6856
+ super();
6856
6857
  this.handleTick = (handler, params) => {
6857
6858
  const { once = false } = params !== null && params !== void 0 ? params : {};
6858
6859
  if (this.ifCanStop()) {
6859
6860
  this.stop();
6860
6861
  return;
6861
6862
  }
6862
- this._handlerTick(handler);
6863
+ this._handlerTick();
6863
6864
  if (!once) {
6864
6865
  handler.tick(this.interval, this.handleTick);
6865
6866
  }
6866
6867
  };
6867
- this._handlerTick = (handler) => {
6868
+ this._handlerTick = () => {
6868
6869
  const tickerHandler = this.tickerHandler;
6869
6870
  const time = tickerHandler.getTime();
6870
6871
  let delta = 0;
@@ -6879,6 +6880,7 @@ class DefaultTicker {
6879
6880
  this.timelines.forEach(t => {
6880
6881
  t.tick(delta);
6881
6882
  });
6883
+ this.emit('afterTick');
6882
6884
  };
6883
6885
  this.init();
6884
6886
  this.lastFrameTime = -1;
@@ -7018,6 +7020,11 @@ class DefaultTicker {
7018
7020
  this.setupTickHandler();
7019
7021
  this.lastFrameTime = -1;
7020
7022
  }
7023
+ trySyncTickStatus() {
7024
+ if (this.status === STATUS$1.RUNNING) {
7025
+ this._handlerTick();
7026
+ }
7027
+ }
7021
7028
  }
7022
7029
 
7023
7030
  class ManualTickHandler {
@@ -8838,6 +8845,11 @@ class TagPointsUpdate extends ACustomAnimate {
8838
8845
  this.clipRange =
8839
8846
  this.toPoints[lastMatchedIndex][this.clipRangeByDimension] /
8840
8847
  this.toPoints[this.toPoints.length - 1][this.clipRangeByDimension];
8848
+ if (this.clipRange === 1) {
8849
+ this.shrinkClipRange =
8850
+ this.toPoints[lastMatchedIndex][this.clipRangeByDimension] /
8851
+ this.fromPoints[this.fromPoints.length - 1][this.clipRangeByDimension];
8852
+ }
8841
8853
  if (!isValidNumber(this.clipRange)) {
8842
8854
  this.clipRange = 0;
8843
8855
  }
@@ -8877,6 +8889,12 @@ class TagPointsUpdate extends ACustomAnimate {
8877
8889
  return newPoint;
8878
8890
  });
8879
8891
  }
8892
+ onFirstRun() {
8893
+ const lastClipRange = this.target.attribute.clipRange;
8894
+ if (isValidNumber(lastClipRange * this.clipRange)) {
8895
+ this.clipRange *= lastClipRange;
8896
+ }
8897
+ }
8880
8898
  onUpdate(end, ratio, out) {
8881
8899
  this.points = this.points.map((point, index) => {
8882
8900
  const newPoint = pointInterpolation(this.interpolatePoints[index][0], this.interpolatePoints[index][1], ratio);
@@ -8884,6 +8902,17 @@ class TagPointsUpdate extends ACustomAnimate {
8884
8902
  return newPoint;
8885
8903
  });
8886
8904
  if (this.clipRange) {
8905
+ if (this.shrinkClipRange) {
8906
+ if (!end) {
8907
+ out.points = this.fromPoints;
8908
+ out.clipRange = this.clipRange - (this.clipRange - this.shrinkClipRange) * ratio;
8909
+ }
8910
+ else {
8911
+ out.points = this.toPoints;
8912
+ out.clipRange = 1;
8913
+ }
8914
+ return;
8915
+ }
8887
8916
  out.clipRange = this.clipRange + (1 - this.clipRange) * ratio;
8888
8917
  }
8889
8918
  if (this.segmentsCache && this.to.segments) {
@@ -10810,10 +10839,10 @@ class ResourceLoader {
10810
10839
  static GetFile(url, type) {
10811
10840
  let data = ResourceLoader.cache.get(url);
10812
10841
  if (data) {
10813
- if (data.loadState === 'fail') {
10842
+ if (data.loadState === 'init' || data.loadState === 'fail') {
10814
10843
  return Promise.reject();
10815
10844
  }
10816
- else if (data.loadState === 'init' || data.loadState === 'loading') {
10845
+ else if (data.loadState === 'loading') {
10817
10846
  return data.dataPromise.then(data => data.data);
10818
10847
  }
10819
10848
  return Promise.resolve(data.data);
@@ -15409,14 +15438,14 @@ class DefaultArcRenderContribution {
15409
15438
  if (!(doOuterBorder || doInnerBorder)) {
15410
15439
  return;
15411
15440
  }
15412
- const { innerPadding = arcAttribute.innerPadding, outerPadding = arcAttribute.outerPadding, startAngle = arcAttribute.startAngle, endAngle = arcAttribute.endAngle, opacity = arcAttribute.opacity, x: originX = arcAttribute.x, y: originY = arcAttribute.y, scaleX = arcAttribute.scaleX, scaleY = arcAttribute.scaleY } = arc.attribute;
15441
+ const { innerPadding = arcAttribute.innerPadding, outerPadding = arcAttribute.outerPadding, startAngle = arcAttribute.startAngle, endAngle = arcAttribute.endAngle, opacity = arcAttribute.opacity, x: originX = arcAttribute.x, y: originY = arcAttribute.y, scaleX = arcAttribute.scaleX, scaleY = arcAttribute.scaleY, keepStrokeScale = arcAttribute.keepStrokeScale } = arc.attribute;
15413
15442
  let { innerRadius = arcAttribute.innerRadius, outerRadius = arcAttribute.outerRadius } = arc.attribute;
15414
15443
  outerRadius += outerPadding;
15415
15444
  innerRadius -= innerPadding;
15416
15445
  const renderBorder = (borderStyle, key) => {
15417
15446
  const doStroke = !!(borderStyle && borderStyle.stroke);
15418
15447
  const { distance = arcAttribute[key].distance } = borderStyle;
15419
- const d = getScaledStroke(context, distance, context.dpr);
15448
+ const d = keepStrokeScale ? distance : getScaledStroke(context, distance, context.dpr);
15420
15449
  const deltaAngle = distance / outerRadius;
15421
15450
  const sign = key === 'outerBorder' ? 1 : -1;
15422
15451
  arc.setAttributes({
@@ -15461,11 +15490,11 @@ class DefaultCircleRenderContribution {
15461
15490
  if (!(doOuterBorder || doInnerBorder)) {
15462
15491
  return;
15463
15492
  }
15464
- const { radius = circleAttribute.radius, startAngle = circleAttribute.startAngle, endAngle = circleAttribute.endAngle, opacity = circleAttribute.opacity, x: originX = circleAttribute.x, y: originY = circleAttribute.y, scaleX = circleAttribute.scaleX, scaleY = circleAttribute.scaleY } = circle.attribute;
15493
+ const { radius = circleAttribute.radius, startAngle = circleAttribute.startAngle, endAngle = circleAttribute.endAngle, opacity = circleAttribute.opacity, x: originX = circleAttribute.x, y: originY = circleAttribute.y, scaleX = circleAttribute.scaleX, scaleY = circleAttribute.scaleY, keepStrokeScale = circleAttribute.keepStrokeScale } = circle.attribute;
15465
15494
  const renderBorder = (borderStyle, key) => {
15466
15495
  const doStroke = !!(borderStyle && borderStyle.stroke);
15467
15496
  const { distance = circleAttribute[key].distance } = borderStyle;
15468
- const d = getScaledStroke(context, distance, context.dpr);
15497
+ const d = keepStrokeScale ? distance : getScaledStroke(context, distance, context.dpr);
15469
15498
  const sign = key === 'outerBorder' ? 1 : -1;
15470
15499
  context.beginPath();
15471
15500
  context.arc(x, y, radius + sign * d, startAngle, endAngle);
@@ -15650,7 +15679,7 @@ class DefaultRectRenderContribution {
15650
15679
  if (!(doOuterBorder || doInnerBorder)) {
15651
15680
  return;
15652
15681
  }
15653
- const { cornerRadius = rectAttribute.cornerRadius, opacity = rectAttribute.opacity, x: originX = rectAttribute.x, y: originY = rectAttribute.y, scaleX = rectAttribute.scaleX, scaleY = rectAttribute.scaleY, x1, y1 } = rect.attribute;
15682
+ const { cornerRadius = rectAttribute.cornerRadius, opacity = rectAttribute.opacity, x: originX = rectAttribute.x, y: originY = rectAttribute.y, scaleX = rectAttribute.scaleX, scaleY = rectAttribute.scaleY, x1, y1, keepStrokeScale = rectAttribute.keepStrokeScale } = rect.attribute;
15654
15683
  let { width, height } = rect.attribute;
15655
15684
  width = (width !== null && width !== void 0 ? width : x1 - x) || 0;
15656
15685
  height = (height !== null && height !== void 0 ? height : y1 - y) || 0;
@@ -15658,7 +15687,7 @@ class DefaultRectRenderContribution {
15658
15687
  const doStroke = !!(borderStyle && borderStyle.stroke);
15659
15688
  const sign = key === 'outerBorder' ? -1 : 1;
15660
15689
  const { distance = rectAttribute[key].distance } = borderStyle;
15661
- const d = getScaledStroke(context, distance, context.dpr);
15690
+ const d = keepStrokeScale ? distance : getScaledStroke(context, distance, context.dpr);
15662
15691
  const nextX = x + sign * d;
15663
15692
  const nextY = y + sign * d;
15664
15693
  const dw = d * 2;
@@ -15874,13 +15903,8 @@ class DefaultImageRenderContribution extends DefaultRectRenderContribution {
15874
15903
  this.useStyle = true;
15875
15904
  this.order = 0;
15876
15905
  }
15877
- drawShape(image, context, x, y, doFill, doStroke, fVisible, sVisible, rectAttribute, drawContext, fillCb, strokeCb) {
15878
- if (image.isGifImage && image.renderFrame && image.playing) {
15879
- image.renderFrame(context, x, y);
15880
- }
15881
- else {
15882
- return super.drawShape(image, context, x, y, doFill, doStroke, fVisible, sVisible, rectAttribute, drawContext, fillCb, strokeCb);
15883
- }
15906
+ drawShape(rect, context, x, y, doFill, doStroke, fVisible, sVisible, rectAttribute, drawContext, fillCb, strokeCb) {
15907
+ return super.drawShape(rect, context, x, y, doFill, doStroke, fVisible, sVisible, rectAttribute, drawContext, fillCb, strokeCb);
15884
15908
  }
15885
15909
  }
15886
15910
  const defaultImageRenderContribution = new DefaultImageRenderContribution();
@@ -15903,11 +15927,11 @@ class DefaultSymbolRenderContribution {
15903
15927
  if (!(doOuterBorder || doInnerBorder)) {
15904
15928
  return;
15905
15929
  }
15906
- const { size = symbolAttribute.size, opacity = symbolAttribute.opacity, x: originX = symbolAttribute.x, y: originY = symbolAttribute.y, scaleX = symbolAttribute.scaleX, scaleY = symbolAttribute.scaleY } = symbol.attribute;
15930
+ const { size = symbolAttribute.size, opacity = symbolAttribute.opacity, x: originX = symbolAttribute.x, y: originY = symbolAttribute.y, scaleX = symbolAttribute.scaleX, scaleY = symbolAttribute.scaleY, keepStrokeScale = symbolAttribute.keepStrokeScale } = symbol.attribute;
15907
15931
  const renderBorder = (borderStyle, key) => {
15908
15932
  const doStroke = !!(borderStyle && borderStyle.stroke);
15909
15933
  const { distance = symbolAttribute[key].distance } = borderStyle;
15910
- const d = getScaledStroke(context, distance, context.dpr);
15934
+ const d = keepStrokeScale ? distance : getScaledStroke(context, distance, context.dpr);
15911
15935
  const sign = key === 'outerBorder' ? 1 : -1;
15912
15936
  context.beginPath();
15913
15937
  if (parsedPath.drawOffset(context, size, x, y, sign * d) === false) {
@@ -18455,18 +18479,16 @@ let DefaultCanvasImageRender = class DefaultCanvasImageRender extends BaseRender
18455
18479
  }
18456
18480
  draw(image, renderService, drawContext) {
18457
18481
  const { image: url } = image.attribute;
18458
- if (!image.isGifImage) {
18459
- if (!url || !image.resources) {
18460
- return;
18461
- }
18462
- const res = image.resources.get(url);
18463
- if (res.state === 'loading' && isString(url)) {
18464
- ResourceLoader.improveImageLoading(url);
18465
- return;
18466
- }
18467
- else if (res.state !== 'success') {
18468
- return;
18469
- }
18482
+ if (!url || !image.resources) {
18483
+ return;
18484
+ }
18485
+ const res = image.resources.get(url);
18486
+ if (res.state === 'loading' && isString(url)) {
18487
+ ResourceLoader.improveImageLoading(url);
18488
+ return;
18489
+ }
18490
+ else if (res.state !== 'success') {
18491
+ return;
18470
18492
  }
18471
18493
  const { context } = renderService.drawParams;
18472
18494
  if (!context) {
@@ -19876,6 +19898,9 @@ class BaseSymbol {
19876
19898
  bounds.y2 = size[1] / 2;
19877
19899
  }
19878
19900
  }
19901
+ parseSize(size) {
19902
+ return isNumber(size) ? size : Math.min(size[0], size[1]);
19903
+ }
19879
19904
  }
19880
19905
 
19881
19906
  function circle(ctx, r, x, y, z) {
@@ -19894,15 +19919,15 @@ class CircleSymbol extends BaseSymbol {
19894
19919
  this.pathStr = 'M0.5,0A0.5,0.5,0,1,1,-0.5,0A0.5,0.5,0,1,1,0.5,0';
19895
19920
  }
19896
19921
  draw(ctx, size, x, y, z) {
19897
- const r = size / 2;
19922
+ const r = this.parseSize(size) / 2;
19898
19923
  return circle(ctx, r, x, y, z);
19899
19924
  }
19900
19925
  drawOffset(ctx, size, x, y, offset, z) {
19901
- const r = size / 2 + offset;
19926
+ const r = this.parseSize(size) / 2 + offset;
19902
19927
  return circle(ctx, r, x, y, z);
19903
19928
  }
19904
19929
  drawToSvgPath(size, x, y, z) {
19905
- const r = size / 2;
19930
+ const r = this.parseSize(size) / 2;
19906
19931
  return `M ${x - r}, ${y} a ${r},${r} 0 1,0 ${r * 2},0 a ${r},${r} 0 1,0 -${r * 2},0`;
19907
19932
  }
19908
19933
  }
@@ -19947,11 +19972,11 @@ class CrossSymbol extends BaseSymbol {
19947
19972
  this.pathStr = 'M-0.5,-0.2L-0.5,0.2L-0.2,0.2L-0.2,0.5L0.2,0.5L0.2,0.2L0.5,0.2L0.5,-0.2L0.2,-0.2L0.2,-0.5L-0.2,-0.5L-0.2,-0.2Z';
19948
19973
  }
19949
19974
  draw(ctx, size, x, y, z) {
19950
- const r = size / 6;
19975
+ const r = this.parseSize(size) / 6;
19951
19976
  return cross(ctx, r, x, y, z);
19952
19977
  }
19953
19978
  drawOffset(ctx, size, x, y, offset, z) {
19954
- const r = size / 6;
19979
+ const r = this.parseSize(size) / 6;
19955
19980
  return crossOffset(ctx, r, x, y, offset, z);
19956
19981
  }
19957
19982
  }
@@ -19972,15 +19997,15 @@ class DiamondSymbol extends BaseSymbol {
19972
19997
  this.pathStr = 'M-0.5,0L0,-0.5L0.5,0L0,0.5Z';
19973
19998
  }
19974
19999
  draw(ctx, size, x, y, z) {
19975
- const r = size / 2;
20000
+ const r = this.parseSize(size) / 2;
19976
20001
  return diamond(ctx, r, x, y, z);
19977
20002
  }
19978
20003
  drawFitDir(ctx, size, x, y, z) {
19979
- const r = size / 2;
20004
+ const r = this.parseSize(size) / 2;
19980
20005
  return diamond(ctx, r, x, y, z);
19981
20006
  }
19982
20007
  drawOffset(ctx, size, x, y, offset, z) {
19983
- const r = size / 2 + offset;
20008
+ const r = this.parseSize(size) / 2 + offset;
19984
20009
  return diamond(ctx, r, x, y, z);
19985
20010
  }
19986
20011
  }
@@ -19998,11 +20023,11 @@ class SquareSymbol extends BaseSymbol {
19998
20023
  this.pathStr = 'M-0.5,-0.5h1v1h-1Z';
19999
20024
  }
20000
20025
  draw(ctx, size, x, y) {
20001
- const r = size / 2;
20026
+ const r = this.parseSize(size) / 2;
20002
20027
  return square(ctx, r, x, y);
20003
20028
  }
20004
20029
  drawOffset(ctx, size, x, y, offset) {
20005
- const r = size / 2 + offset;
20030
+ const r = this.parseSize(size) / 2 + offset;
20006
20031
  return square(ctx, r, x, y);
20007
20032
  }
20008
20033
  }
@@ -20022,11 +20047,11 @@ class TriangleUpSymbol extends BaseSymbol {
20022
20047
  this.pathStr = 'M0.5,0.5 L-0.5,0.5 L0,-0.5 Z';
20023
20048
  }
20024
20049
  draw(ctx, size, x, y) {
20025
- const r = size / 2;
20050
+ const r = this.parseSize(size) / 2;
20026
20051
  return trianglUpOffset(ctx, r, x, y);
20027
20052
  }
20028
20053
  drawOffset(ctx, size, x, y, offset) {
20029
- const r = size / 2;
20054
+ const r = this.parseSize(size) / 2;
20030
20055
  return trianglUpOffset(ctx, r, x, y, offset);
20031
20056
  }
20032
20057
  }
@@ -20065,11 +20090,11 @@ class StarSymbol extends BaseSymbol {
20065
20090
  this.pathStr = 'M0 -1L0.22451398828979266 -0.3090169943749474L0.9510565162951535 -0.30901699437494745L0.3632712640026804 0.1180339887498948L0.5877852522924732 0.8090169943749473L8.326672684688674e-17 0.3819660112501051L-0.587785252292473 0.8090169943749476L-0.3632712640026804 0.11803398874989487L-0.9510565162951536 -0.30901699437494723L-0.22451398828979274 -0.30901699437494734Z';
20066
20091
  }
20067
20092
  draw(ctx, size, transX, transY) {
20068
- const r = size / 2;
20093
+ const r = this.parseSize(size) / 2;
20069
20094
  return star(ctx, r, transX, transY);
20070
20095
  }
20071
20096
  drawOffset(ctx, size, transX, transY, offset) {
20072
- const r = size / 2 + offset;
20097
+ const r = this.parseSize(size) / 2 + offset;
20073
20098
  return star(ctx, r, transX, transY);
20074
20099
  }
20075
20100
  }
@@ -20098,11 +20123,11 @@ class ArrowSymbol extends BaseSymbol {
20098
20123
  this.pathStr = 'M-0.07142857142857142,0.5L0.07142857142857142,0.5L0.07142857142857142,-0.0625L0.2,-0.0625L0,-0.5L-0.2,-0.0625L-0.07142857142857142,-0.0625Z';
20099
20124
  }
20100
20125
  draw(ctx, size, transX, transY) {
20101
- const r = size / 2;
20126
+ const r = this.parseSize(size) / 2;
20102
20127
  return arrow(ctx, r, transX, transY);
20103
20128
  }
20104
20129
  drawOffset(ctx, size, transX, transY, offset) {
20105
- const r = size / 2 + offset;
20130
+ const r = this.parseSize(size) / 2 + offset;
20106
20131
  return arrow(ctx, r, transX, transY);
20107
20132
  }
20108
20133
  }
@@ -20123,11 +20148,11 @@ class WedgeSymbol extends BaseSymbol {
20123
20148
  this.pathStr = 'M0,-0.5773502691896257L-0.125,0.28867513459481287L0.125,0.28867513459481287Z';
20124
20149
  }
20125
20150
  draw(ctx, size, transX, transY) {
20126
- const r = size / 2;
20151
+ const r = this.parseSize(size) / 2;
20127
20152
  return wedge(ctx, r, transX, transY);
20128
20153
  }
20129
20154
  drawOffset(ctx, size, transX, transY, offset) {
20130
- const r = size / 2 + offset;
20155
+ const r = this.parseSize(size) / 2 + offset;
20131
20156
  return wedge(ctx, r, transX, transY);
20132
20157
  }
20133
20158
  }
@@ -20145,11 +20170,11 @@ class StrokeSymbol extends BaseSymbol {
20145
20170
  this.pathStr = '';
20146
20171
  }
20147
20172
  draw(ctx, size, transX, transY) {
20148
- const r = size / 2;
20173
+ const r = this.parseSize(size) / 2;
20149
20174
  return stroke(ctx, r, transX, transY);
20150
20175
  }
20151
20176
  drawOffset(ctx, size, transX, transY, offset) {
20152
- const r = size / 2 + offset;
20177
+ const r = this.parseSize(size) / 2 + offset;
20153
20178
  return stroke(ctx, r, transX, transY);
20154
20179
  }
20155
20180
  }
@@ -20184,11 +20209,11 @@ class WyeSymbol extends BaseSymbol {
20184
20209
  this.pathStr = 'M0.25 0.14433756729740646L0.25 0.6443375672974064L-0.25 0.6443375672974064L-0.25 0.14433756729740643L-0.6830127018922193 -0.10566243270259357L-0.4330127018922193 -0.5386751345948129L0 -0.28867513459481287L0.4330127018922193 -0.5386751345948129L0.6830127018922193 -0.10566243270259357Z';
20185
20210
  }
20186
20211
  draw(ctx, size, transX, transY) {
20187
- const r = size / 2;
20212
+ const r = this.parseSize(size) / 2;
20188
20213
  return wye(ctx, r, transX, transY);
20189
20214
  }
20190
20215
  drawOffset(ctx, size, transX, transY, offset) {
20191
- const r = size / 2 + offset;
20216
+ const r = this.parseSize(size) / 2 + offset;
20192
20217
  return wye(ctx, r, transX, transY);
20193
20218
  }
20194
20219
  }
@@ -20208,11 +20233,11 @@ class TriangleLeftSymbol extends BaseSymbol {
20208
20233
  this.pathStr = 'M-0.5,0 L0.5,0.5 L0.5,-0.5 Z';
20209
20234
  }
20210
20235
  draw(ctx, size, x, y) {
20211
- const r = size / 2;
20236
+ const r = this.parseSize(size) / 2;
20212
20237
  return trianglLeftOffset(ctx, r, x, y, 0);
20213
20238
  }
20214
20239
  drawOffset(ctx, size, x, y, offset) {
20215
- const r = size / 2;
20240
+ const r = this.parseSize(size) / 2;
20216
20241
  return trianglLeftOffset(ctx, r, x, y, offset);
20217
20242
  }
20218
20243
  }
@@ -20232,11 +20257,11 @@ class TriangleRightSymbol extends BaseSymbol {
20232
20257
  this.pathStr = 'M-0.5,0.5 L0.5,0 L-0.5,-0.5 Z';
20233
20258
  }
20234
20259
  draw(ctx, size, x, y) {
20235
- const r = size / 2;
20260
+ const r = this.parseSize(size) / 2;
20236
20261
  return trianglRightOffset(ctx, r, x, y);
20237
20262
  }
20238
20263
  drawOffset(ctx, size, x, y, offset) {
20239
- const r = size / 2;
20264
+ const r = this.parseSize(size) / 2;
20240
20265
  return trianglRightOffset(ctx, r, x, y, offset);
20241
20266
  }
20242
20267
  }
@@ -20256,11 +20281,11 @@ class TriangleDownSymbol extends BaseSymbol {
20256
20281
  this.pathStr = 'M-0.5,-0.5 L0.5,-0.5 L0,0.5 Z';
20257
20282
  }
20258
20283
  draw(ctx, size, x, y) {
20259
- const r = size / 2;
20284
+ const r = this.parseSize(size) / 2;
20260
20285
  return trianglDownOffset(ctx, r, x, y);
20261
20286
  }
20262
20287
  drawOffset(ctx, size, x, y, offset) {
20263
- const r = size / 2;
20288
+ const r = this.parseSize(size) / 2;
20264
20289
  return trianglDownOffset(ctx, r, x, y, offset);
20265
20290
  }
20266
20291
  }
@@ -20282,11 +20307,11 @@ class ThinTriangleSymbol extends BaseSymbol {
20282
20307
  this.pathStr = 'M0,-0.5773502691896257L-0.5,0.28867513459481287L0.5,0.28867513459481287Z';
20283
20308
  }
20284
20309
  draw(ctx, size, x, y) {
20285
- const r = size / 2 / sqrt3;
20310
+ const r = this.parseSize(size) / 2 / sqrt3;
20286
20311
  return thinTriangle(ctx, r, x, y);
20287
20312
  }
20288
20313
  drawOffset(ctx, size, x, y, offset) {
20289
- const r = size / 2 / sqrt3 + offset;
20314
+ const r = this.parseSize(size) / 2 / sqrt3 + offset;
20290
20315
  return thinTriangle(ctx, r, x, y);
20291
20316
  }
20292
20317
  }
@@ -20306,11 +20331,11 @@ class Arrow2LeftSymbol extends BaseSymbol {
20306
20331
  this.pathStr = 'M 0.25 -0.5 L -0.25 0 l 0.25 0.5';
20307
20332
  }
20308
20333
  draw(ctx, size, transX, transY) {
20309
- const r = size / 4;
20334
+ const r = this.parseSize(size) / 4;
20310
20335
  return arrow2Left(ctx, r, transX, transY);
20311
20336
  }
20312
20337
  drawOffset(ctx, size, transX, transY, offset) {
20313
- const r = size / 4 + offset;
20338
+ const r = this.parseSize(size) / 4 + offset;
20314
20339
  return arrow2Left(ctx, r, transX, transY);
20315
20340
  }
20316
20341
  }
@@ -20330,11 +20355,11 @@ class Arrow2RightSymbol extends BaseSymbol {
20330
20355
  this.pathStr = 'M -0.25 -0.5 l 0.25 0 l -0.25 0.5';
20331
20356
  }
20332
20357
  draw(ctx, size, transX, transY) {
20333
- const r = size / 4;
20358
+ const r = this.parseSize(size) / 4;
20334
20359
  return arrow2Right(ctx, r, transX, transY);
20335
20360
  }
20336
20361
  drawOffset(ctx, size, transX, transY, offset) {
20337
- const r = size / 4 + offset;
20362
+ const r = this.parseSize(size) / 4 + offset;
20338
20363
  return arrow2Right(ctx, r, transX, transY);
20339
20364
  }
20340
20365
  }
@@ -20354,11 +20379,11 @@ class Arrow2UpSymbol extends BaseSymbol {
20354
20379
  this.pathStr = 'M -0.5 0.25 L 0 -0.25 l 0.5 0.25';
20355
20380
  }
20356
20381
  draw(ctx, size, transX, transY) {
20357
- const r = size / 4;
20382
+ const r = this.parseSize(size) / 4;
20358
20383
  return arrow2Up(ctx, r, transX, transY);
20359
20384
  }
20360
20385
  drawOffset(ctx, size, transX, transY, offset) {
20361
- const r = size / 4 + offset;
20386
+ const r = this.parseSize(size) / 4 + offset;
20362
20387
  return arrow2Up(ctx, r, transX, transY);
20363
20388
  }
20364
20389
  }
@@ -20378,11 +20403,11 @@ class Arrow2DownSymbol extends BaseSymbol {
20378
20403
  this.pathStr = 'M -0.5 -0.25 L 0 0.25 l 0.5 -0.25';
20379
20404
  }
20380
20405
  draw(ctx, size, transX, transY) {
20381
- const r = size / 4;
20406
+ const r = this.parseSize(size) / 4;
20382
20407
  return arrow2Down(ctx, r, transX, transY);
20383
20408
  }
20384
20409
  drawOffset(ctx, size, transX, transY, offset) {
20385
- const r = size / 4 + offset;
20410
+ const r = this.parseSize(size) / 4 + offset;
20386
20411
  return arrow2Down(ctx, r, transX, transY);
20387
20412
  }
20388
20413
  }
@@ -20400,15 +20425,15 @@ class LineVSymbol extends BaseSymbol {
20400
20425
  this.pathStr = 'M0,-0.5L0,0.5';
20401
20426
  }
20402
20427
  draw(ctx, size, x, y, z) {
20403
- const r = size / 2;
20428
+ const r = this.parseSize(size) / 2;
20404
20429
  return lineV(ctx, r, x, y);
20405
20430
  }
20406
20431
  drawOffset(ctx, size, x, y, offset, z) {
20407
- const r = size / 2 + offset;
20432
+ const r = this.parseSize(size) / 2 + offset;
20408
20433
  return lineV(ctx, r, x, y);
20409
20434
  }
20410
20435
  drawToSvgPath(size, x, y, z) {
20411
- const r = size / 2;
20436
+ const r = this.parseSize(size) / 2;
20412
20437
  return `M ${x}, ${y - r} L ${x},${y + r}`;
20413
20438
  }
20414
20439
  }
@@ -20426,15 +20451,15 @@ class LineHSymbol extends BaseSymbol {
20426
20451
  this.pathStr = 'M-0.5,0L0.5,0';
20427
20452
  }
20428
20453
  draw(ctx, size, x, y, z) {
20429
- const r = size / 2;
20454
+ const r = this.parseSize(size) / 2;
20430
20455
  return lineH(ctx, r, x, y);
20431
20456
  }
20432
20457
  drawOffset(ctx, size, x, y, offset, z) {
20433
- const r = size / 2 + offset;
20458
+ const r = this.parseSize(size) / 2 + offset;
20434
20459
  return lineH(ctx, r, x, y);
20435
20460
  }
20436
20461
  drawToSvgPath(size, x, y, z) {
20437
- const r = size / 2;
20462
+ const r = this.parseSize(size) / 2;
20438
20463
  return `M ${x - r}, ${y} L ${x + r},${y}`;
20439
20464
  }
20440
20465
  }
@@ -20454,15 +20479,15 @@ class CloseSymbol extends BaseSymbol {
20454
20479
  this.pathStr = 'M-0.5,-0.5L0.5,0.5,M0.5,-0.5L-0.5,0.5';
20455
20480
  }
20456
20481
  draw(ctx, size, x, y, z) {
20457
- const r = size / 2;
20482
+ const r = this.parseSize(size) / 2;
20458
20483
  return close(ctx, r, x, y);
20459
20484
  }
20460
20485
  drawOffset(ctx, size, x, y, offset, z) {
20461
- const r = size / 2 + offset;
20486
+ const r = this.parseSize(size) / 2 + offset;
20462
20487
  return close(ctx, r, x, y);
20463
20488
  }
20464
20489
  drawToSvgPath(size, x, y, z) {
20465
- const r = size / 2;
20490
+ const r = this.parseSize(size) / 2;
20466
20491
  return `M ${x - r}, ${y - r} L ${x + r},${y + r} M ${x + r}, ${y - r} L ${x - r},${y + r}`;
20467
20492
  }
20468
20493
  }
@@ -20513,6 +20538,7 @@ class CustomSymbolClass {
20513
20538
  this.isSvg = isSvg;
20514
20539
  }
20515
20540
  drawOffset(ctx, size, x, y, offset, z, cb) {
20541
+ size = this.parseSize(size);
20516
20542
  if (this.isSvg) {
20517
20543
  if (!this.svgCache) {
20518
20544
  return false;
@@ -20528,9 +20554,14 @@ class CustomSymbolClass {
20528
20554
  return false;
20529
20555
  }
20530
20556
  draw(ctx, size, x, y, z, cb) {
20557
+ size = this.parseSize(size);
20531
20558
  return this.drawOffset(ctx, size, x, y, 0, z, cb);
20532
20559
  }
20560
+ parseSize(size) {
20561
+ return isNumber(size) ? size : Math.min(size[0], size[1]);
20562
+ }
20533
20563
  bounds(size, bounds) {
20564
+ size = this.parseSize(size);
20534
20565
  if (this.isSvg) {
20535
20566
  if (!this.svgCache) {
20536
20567
  return;
@@ -21550,7 +21581,8 @@ class Paragraph {
21550
21581
  left = 0;
21551
21582
  baseline = 0;
21552
21583
  }
21553
- if (this.character.stroke) {
21584
+ const { lineWidth = 1 } = this.character;
21585
+ if (this.character.stroke && lineWidth) {
21554
21586
  applyStrokeStyle(ctx, this.character);
21555
21587
  ctx.strokeText(text, left, baseline);
21556
21588
  }
@@ -24707,6 +24739,7 @@ class Stage extends Group {
24707
24739
  constructor(params = {}) {
24708
24740
  var _a;
24709
24741
  super({});
24742
+ this.tickedBeforeRender = true;
24710
24743
  this._onVisibleChange = (visible) => {
24711
24744
  if (this._skipRender < 0) {
24712
24745
  return;
@@ -24733,6 +24766,15 @@ class Stage extends Group {
24733
24766
  this._afterRender && this._afterRender(stage);
24734
24767
  this._afterNextRenderCbs && this._afterNextRenderCbs.forEach(cb => cb(stage));
24735
24768
  this._afterNextRenderCbs = null;
24769
+ this.tickedBeforeRender = false;
24770
+ };
24771
+ this.afterTickCb = () => {
24772
+ var _a;
24773
+ this.tickedBeforeRender = true;
24774
+ if (((_a = this.params.optimize) === null || _a === void 0 ? void 0 : _a.tickRenderMode) === 'performance') ;
24775
+ else {
24776
+ this.state !== 'rendering' && this.render();
24777
+ }
24736
24778
  };
24737
24779
  this.params = params;
24738
24780
  this.theme = new Theme();
@@ -24800,6 +24842,7 @@ class Stage extends Group {
24800
24842
  if (params.background && isString(this._background) && this._background.includes('/')) {
24801
24843
  this.setAttributes({ background: this._background });
24802
24844
  }
24845
+ this.ticker.on('afterTick', this.afterTickCb);
24803
24846
  }
24804
24847
  pauseRender(sr = -1) {
24805
24848
  this._skipRender = sr;
@@ -25113,6 +25156,9 @@ class Stage extends Group {
25113
25156
  this.timeline.resume();
25114
25157
  const state = this.state;
25115
25158
  this.state = 'rendering';
25159
+ if (!this.tickedBeforeRender) {
25160
+ this.ticker.trySyncTickStatus();
25161
+ }
25116
25162
  this.layerService.prepareStageLayer(this);
25117
25163
  if (!this._skipRender) {
25118
25164
  this.lastRenderparams = params;
@@ -25310,6 +25356,7 @@ class Stage extends Group {
25310
25356
  }
25311
25357
  this.window.release();
25312
25358
  this.ticker.remTimeline(this.timeline);
25359
+ this.ticker.removeListener('afterTick', this.afterTickCb);
25313
25360
  this.renderService.renderTreeRoots = [];
25314
25361
  }
25315
25362
  setStage(stage) {
@@ -1,7 +1,8 @@
1
+ import { EventEmitter } from '@visactor/vutils';
1
2
  import type { ITickHandler, ITimeline, ITicker } from '../../interface';
2
3
  import type { TickerMode } from './type';
3
4
  import { STATUS } from './type';
4
- export declare class DefaultTicker implements ITicker {
5
+ export declare class DefaultTicker extends EventEmitter implements ITicker {
5
6
  protected interval: number;
6
7
  protected tickerHandler: ITickHandler;
7
8
  protected _mode: TickerMode;
@@ -32,5 +33,6 @@ export declare class DefaultTicker implements ITicker {
32
33
  protected handleTick: (handler: ITickHandler, params?: {
33
34
  once?: boolean;
34
35
  }) => void;
35
- protected _handlerTick: (handler: ITickHandler) => void;
36
+ protected _handlerTick: () => void;
37
+ trySyncTickStatus(): void;
36
38
  }