@visactor/vrender 0.22.0 → 0.22.1

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.es.js CHANGED
@@ -3918,10 +3918,10 @@ class CustomPath2D extends CurvePath {
3918
3918
  x = current[5], y = current[6], controlX = current[3], controlY = current[4], this.bezierCurveTo(current[1] + l, current[2] + t, controlX + l, controlY + t, x + l, y + t);
3919
3919
  break;
3920
3920
  case "s":
3921
- tempX = x + current[3], tempY = y + current[4], controlX = 2 * x - controlX, controlY = 2 * y - controlY, this.bezierCurveTo(controlX + l, controlY + t, x + current[1] + l, y + current[2] + t, tempX + l, tempY + t), controlX = x + current[1], controlY = y + current[2], x = tempX, y = tempY;
3921
+ tempX = x + current[3], tempY = y + current[4], null === previous[0].match(/[CcSs]/) ? (controlX = x, controlY = y) : (controlX = 2 * x - controlX, controlY = 2 * y - controlY), tempControlX = x + current[1], tempControlY = y + current[2], this.bezierCurveTo(controlX + l, controlY + t, tempControlX + l, tempControlY + t, tempX + l, tempY + t), controlX = tempControlX, controlY = tempControlY, x = tempX, y = tempY;
3922
3922
  break;
3923
3923
  case "S":
3924
- tempX = current[3], tempY = current[4], controlX = 2 * x - controlX, controlY = 2 * y - controlY, this.bezierCurveTo(controlX + l, controlY + t, current[1] + l, current[2] + t, tempX + l, tempY + t), x = tempX, y = tempY, controlX = current[1], controlY = current[2];
3924
+ tempX = current[3], tempY = current[4], null === previous[0].match(/[CcSs]/) ? (controlX = x, controlY = y) : (controlX = 2 * x - controlX, controlY = 2 * y - controlY), tempControlX = current[1], tempControlY = current[2], this.bezierCurveTo(controlX + l, controlY + t, tempControlX + l, tempControlY + t, tempX + l, tempY + t), controlX = tempControlX, controlY = tempControlY, x = tempX, y = tempY;
3925
3925
  break;
3926
3926
  case "q":
3927
3927
  tempX = x + current[3], tempY = y + current[4], controlX = x + current[1], controlY = y + current[2], this.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t), x = tempX, y = tempY;
@@ -4149,7 +4149,7 @@ const DefaultStyle = Object.assign(Object.assign(Object.assign(Object.assign({
4149
4149
  opacity: 1,
4150
4150
  background: null,
4151
4151
  autoAnimateTexture: !1,
4152
- textureRatio: 0,
4152
+ textureRatio: 1,
4153
4153
  textureOptions: null,
4154
4154
  backgroundOpacity: 1,
4155
4155
  backgroundCornerRadius: 0,
@@ -4312,6 +4312,7 @@ const DefaultTextAttribute = Object.assign(Object.assign(Object.assign({}, Defau
4312
4312
  keepDirIn3d: !0
4313
4313
  });
4314
4314
  const DefaultRichTextAttribute = Object.assign(Object.assign(Object.assign({}, DefaultAttribute), DefaultTextStyle), {
4315
+ upgradeAttrs: null,
4315
4316
  editable: !1,
4316
4317
  editOptions: null,
4317
4318
  ascentDescentMode: "actual",
@@ -10148,7 +10149,7 @@ class Graphic extends Node {
10148
10149
  null != onStart && animate.onStart(onStart), null != onFrame && animate.onFrame(onFrame), null != onEnd && animate.onEnd(onEnd), null != onRemove && animate.onRemove(onRemove), animate.interpolateFunc = params.interpolate;
10149
10150
  }
10150
10151
  return this.animates.set(animate.id, animate), animate.onRemove(() => {
10151
- this.animates.delete(animate.id);
10152
+ animate.stop(), this.animates.delete(animate.id);
10152
10153
  }), animate;
10153
10154
  }
10154
10155
  onAttributeUpdate(context) {
@@ -10213,9 +10214,10 @@ class Graphic extends Node {
10213
10214
  this.hasState() && this.normalAttrs ? (this.currentStates = [], this.applyStateAttrs(this.normalAttrs, this.currentStates, hasAnimation, !0)) : this.currentStates = [], this.normalAttrs = null;
10214
10215
  }
10215
10216
  removeState(stateName, hasAnimation) {
10216
- if ((this.currentStates ? this.currentStates.indexOf(stateName) : -1) >= 0) {
10217
- const currentStates = this.currentStates.filter(state => state !== stateName);
10218
- this.useStates(currentStates, hasAnimation);
10217
+ if (this.currentStates) {
10218
+ const filter = isArray$1(stateName) ? s => !stateName.includes(s) : s => s !== stateName,
10219
+ newStates = this.currentStates.filter(filter);
10220
+ newStates.length !== this.currentStates.length && this.useStates(newStates, hasAnimation);
10219
10221
  }
10220
10222
  }
10221
10223
  toggleState(stateName, hasAnimation) {
@@ -10352,7 +10354,7 @@ class Graphic extends Node {
10352
10354
  if (this.stage = stage, this.layer = layer, this.setStageToShadowRoot(stage, layer), this.animates && this.animates.size) {
10353
10355
  const timeline = stage.getTimeline();
10354
10356
  this.animates.forEach(a => {
10355
- a.setTimeline(timeline);
10357
+ a.timeline === defaultTimeline && a.setTimeline(timeline);
10356
10358
  });
10357
10359
  }
10358
10360
  this._onSetStage && this._onSetStage(this, stage, layer), application.graphicService.onSetStage(this, stage);
@@ -10456,7 +10458,7 @@ class Graphic extends Node {
10456
10458
  return shadowRoot && (shadowRoot.shadowHost = this), this.shadowRoot = null != shadowRoot ? shadowRoot : application.graphicService.creator.shadowRoot(this), this.addUpdateBoundTag(), this.shadowRoot.setStage(this.stage, this.layer), this.shadowRoot;
10457
10459
  }
10458
10460
  detachShadow() {
10459
- this.shadowRoot && (this.addUpdateBoundTag(), this.shadowRoot = null);
10461
+ this.shadowRoot && (this.addUpdateBoundTag(), this.shadowRoot.release(!0), this.shadowRoot = null);
10460
10462
  }
10461
10463
  toJson() {
10462
10464
  return {
@@ -10508,7 +10510,7 @@ class Graphic extends Node {
10508
10510
  });
10509
10511
  }
10510
10512
  release() {
10511
- this.releaseStatus = "released", application.graphicService.onRelease(this);
10513
+ this.releaseStatus = "released", this.stopAnimates(), application.graphicService.onRelease(this);
10512
10514
  }
10513
10515
  _emitCustomEvent(type, context) {
10514
10516
  var _a, _b;
@@ -11084,6 +11086,11 @@ class Group extends Graphic {
11084
11086
  getNoWorkAnimateAttr() {
11085
11087
  return Group.NOWORK_ANIMATE_ATTR;
11086
11088
  }
11089
+ release(all) {
11090
+ all && this.forEachChildren(g => {
11091
+ g.release(all);
11092
+ }), super.release();
11093
+ }
11087
11094
  }
11088
11095
  Group.NOWORK_ANIMATE_ATTR = NOWORK_ANIMATE_ATTR;
11089
11096
  function createGroup(attributes) {
@@ -13333,6 +13340,20 @@ let Symbol$1 = class Symbol extends Graphic {
13333
13340
  getParsedPath() {
13334
13341
  return this.shouldUpdateShape() && (this.doUpdateParsedPath(), this.clearUpdateShapeTag()), this._parsedPath;
13335
13342
  }
13343
+ getParsedPath2D() {
13344
+ let x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
13345
+ let y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
13346
+ let size = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
13347
+ let path = null;
13348
+ try {
13349
+ path = new Path2D();
13350
+ } catch (err) {
13351
+ return null;
13352
+ }
13353
+ const parsedPath = this.getParsedPath();
13354
+ if (!parsedPath) return null;
13355
+ parsedPath.draw(path, size, x, y);
13356
+ }
13336
13357
  isValid() {
13337
13358
  return super.isValid() && this._isValid();
13338
13359
  }
@@ -13951,7 +13972,7 @@ class Paragraph {
13951
13972
  this.width = width, "vertical" === this.direction && (this.widthOrigin = this.width, this.width = this.heightOrigin, this.height = this.widthOrigin);
13952
13973
  }
13953
13974
  drawBackground(ctx, top, ascent, deltaLeft, isLineFirst, textAlign, lineHeight) {
13954
- if (!this.character.background || this.character.backgroundOpacity && !(this.character.backgroundOpacity > 0)) return;
13975
+ if ("" === this.text || "\n" === this.text || !this.character.background || this.character.backgroundOpacity && !(this.character.backgroundOpacity > 0)) return;
13955
13976
  let baseline = top + ascent,
13956
13977
  text = this.text,
13957
13978
  left = this.left + deltaLeft;
@@ -13969,19 +13990,11 @@ class Paragraph {
13969
13990
  }
13970
13991
  }
13971
13992
  }
13972
- switch (this.character.script) {
13973
- case "super":
13974
- baseline -= this.ascent * (1 / 3);
13975
- break;
13976
- case "sub":
13977
- baseline += this.descent / 2;
13978
- }
13979
- "vertical" === direction && (ctx.save(), ctx.rotateAbout(Math.PI / 2, left, baseline), ctx.translate(-this.heightOrigin || -this.lineHeight / 2, -this.descent / 2), ctx.translate(left, baseline), left = 0, baseline = 0);
13980
- const fillStyle = ctx.fillStyle,
13981
- globalAlpha = ctx.globalAlpha;
13982
- ctx.fillStyle = this.character.background, void 0 !== this.character.backgroundOpacity && (ctx.globalAlpha = this.character.backgroundOpacity);
13983
13993
  const lrtb = getFixedLRTB(left, left + (this.widthOrigin || this.width), top, top + lineHeight);
13984
- ctx.fillRect(lrtb.left, lrtb.top, lrtb.right - lrtb.left, lrtb.bottom - lrtb.top), ctx.fillStyle = fillStyle, ctx.globalAlpha = globalAlpha;
13994
+ return Object.assign(Object.assign({}, lrtb), {
13995
+ fillStyle: this.character.background,
13996
+ globalAlpha: this.character.backgroundOpacity
13997
+ });
13985
13998
  }
13986
13999
  draw(ctx, top, ascent, deltaLeft, isLineFirst, textAlign, lineHeight) {
13987
14000
  let baseline = top + ascent,
@@ -14255,8 +14268,19 @@ class Line {
14255
14268
  paragraph.ellipsis = "hide", otherParagraphWidth += paragraph.width;
14256
14269
  }
14257
14270
  }
14271
+ let fillStyle = "",
14272
+ globalAlpha = -1,
14273
+ currBgList = [];
14274
+ const bgList = [currBgList];
14258
14275
  this.paragraphs.forEach((paragraph, index) => {
14259
- paragraph instanceof RichTextIcon || paragraph.drawBackground(ctx, y, this.ascent, x, 0 === index, this.textAlign, this.height);
14276
+ if (paragraph instanceof RichTextIcon) return;
14277
+ const data = paragraph.drawBackground(ctx, y, this.ascent, x, 0 === index, this.textAlign, this.height);
14278
+ data && (fillStyle === data.fillStyle && globalAlpha === data.globalAlpha || (currBgList = [], bgList.push(currBgList), fillStyle = data.fillStyle, globalAlpha = data.globalAlpha), currBgList.push(data));
14279
+ }), bgList.forEach(bg => {
14280
+ if (0 === bg.length) return;
14281
+ const data = bg[0],
14282
+ end = bg[bg.length - 1];
14283
+ ctx.fillStyle = data.fillStyle, ctx.globalAlpha = data.globalAlpha, ctx.fillRect(data.left, data.top, end.right - data.left, end.bottom - data.top);
14260
14284
  }), this.paragraphs.forEach((paragraph, index) => {
14261
14285
  if (paragraph instanceof RichTextIcon) return paragraph.setAttributes({
14262
14286
  x: x + paragraph._x,
@@ -14494,7 +14518,7 @@ class RichText extends Graphic {
14494
14518
  case "right":
14495
14519
  deltaX = -aabbBounds.width();
14496
14520
  }
14497
- return aabbBounds.translate(deltaX, deltaY), application.graphicService.updateTempAABBBounds(aabbBounds), null == attribute.forceBoundsHeight && null == attribute.forceBoundsWidth || application.graphicService.updateHTMLTextAABBBounds(attribute, richtextTheme, aabbBounds), application.graphicService.transformAABBBounds(attribute, aabbBounds, richtextTheme, !1, this), aabbBounds;
14521
+ return aabbBounds.translate(deltaX, deltaY), application.graphicService.updateTempAABBBounds(aabbBounds), null == attribute.forceBoundsHeight && null == attribute.forceBoundsWidth || application.graphicService.updateHTMLTextAABBBounds(attribute, richtextTheme, aabbBounds), application.graphicService.transformAABBBounds(attribute, aabbBounds, richtextTheme, !1, this), 0 === aabbBounds.width() && 0 === aabbBounds.height() && aabbBounds.clear(), aabbBounds;
14498
14522
  }
14499
14523
  needUpdateTags(keys) {
14500
14524
  return super.needUpdateTags(keys, RICHTEXT_UPDATE_TAG_KEY);
@@ -14522,48 +14546,53 @@ class RichText extends Graphic {
14522
14546
  }
14523
14547
  combinedStyleToCharacter(config) {
14524
14548
  const {
14525
- fill: fill,
14526
- stroke: stroke,
14527
- fontSize: fontSize,
14528
- fontFamily: fontFamily,
14529
- fontStyle: fontStyle,
14530
- fontWeight: fontWeight,
14531
- lineWidth: lineWidth,
14532
- opacity: opacity,
14533
- fillOpacity: fillOpacity,
14534
- strokeOpacity: strokeOpacity
14535
- } = this.attribute;
14536
- return Object.assign({
14537
- fill: fill,
14538
- stroke: stroke,
14539
- fontSize: fontSize,
14540
- fontFamily: fontFamily,
14541
- fontStyle: fontStyle,
14542
- fontWeight: fontWeight,
14543
- lineWidth: lineWidth,
14544
- opacity: opacity,
14545
- fillOpacity: fillOpacity,
14546
- strokeOpacity: strokeOpacity
14547
- }, config);
14549
+ fill: fill,
14550
+ stroke: stroke,
14551
+ fontSize: fontSize,
14552
+ fontFamily: fontFamily,
14553
+ fontStyle: fontStyle,
14554
+ fontWeight: fontWeight,
14555
+ lineWidth: lineWidth,
14556
+ opacity: opacity,
14557
+ fillOpacity: fillOpacity,
14558
+ lineHeight: lineHeight,
14559
+ strokeOpacity: strokeOpacity,
14560
+ upgradeAttrs: upgradeAttrs
14561
+ } = this.attribute,
14562
+ out = Object.assign({
14563
+ fill: fill,
14564
+ stroke: stroke,
14565
+ fontSize: fontSize,
14566
+ fontFamily: fontFamily,
14567
+ fontStyle: fontStyle,
14568
+ fontWeight: fontWeight,
14569
+ lineWidth: lineWidth,
14570
+ opacity: opacity,
14571
+ fillOpacity: fillOpacity,
14572
+ strokeOpacity: strokeOpacity
14573
+ }, config);
14574
+ return (null == upgradeAttrs ? void 0 : upgradeAttrs.lineHeight) && (out.lineHeight = lineHeight), out;
14548
14575
  }
14549
14576
  doUpdateFrameCache(tc) {
14550
14577
  var _a;
14551
14578
  const {
14552
- maxWidth: maxWidth,
14553
- maxHeight: maxHeight,
14554
- width: width,
14555
- height: height,
14556
- ellipsis: ellipsis,
14557
- wordBreak: wordBreak,
14558
- verticalDirection: verticalDirection,
14559
- textAlign: textAlign,
14560
- textBaseline: textBaseline,
14561
- layoutDirection: layoutDirection,
14562
- singleLine: singleLine,
14563
- disableAutoWrapLine: disableAutoWrapLine,
14564
- editable: editable,
14565
- ascentDescentMode: ascentDescentMode
14566
- } = this.attribute;
14579
+ maxWidth: maxWidth,
14580
+ maxHeight: maxHeight,
14581
+ width: width,
14582
+ height: height,
14583
+ ellipsis: ellipsis,
14584
+ wordBreak: wordBreak,
14585
+ verticalDirection: verticalDirection,
14586
+ textAlign: textAlign,
14587
+ textBaseline: textBaseline,
14588
+ layoutDirection: layoutDirection,
14589
+ singleLine: singleLine,
14590
+ disableAutoWrapLine: disableAutoWrapLine,
14591
+ editable: editable,
14592
+ ascentDescentMode: ascentDescentMode,
14593
+ upgradeAttrs: upgradeAttrs
14594
+ } = this.attribute,
14595
+ enableMultiBreakLine = upgradeAttrs && upgradeAttrs.multiBreakLine;
14567
14596
  let {
14568
14597
  textConfig: _tc = []
14569
14598
  } = this.attribute;
@@ -14585,7 +14614,10 @@ class RichText extends Graphic {
14585
14614
  const richTextConfig = this.combinedStyleToCharacter(textConfig[i]);
14586
14615
  if (isNumber$1(richTextConfig.text) && (richTextConfig.text = `${richTextConfig.text}`), richTextConfig.text && richTextConfig.text.includes("\n")) {
14587
14616
  const textParts = richTextConfig.text.split("\n");
14588
- for (let j = 0; j < textParts.length; j++) paragraphs.push(new Paragraph(textParts[j], 0 !== j, richTextConfig, ascentDescentMode));
14617
+ 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 {
14618
+ const nextRichTextConfig = this.combinedStyleToCharacter(textConfig[i + 1]);
14619
+ paragraphs.push(new Paragraph(textParts[j], !0, nextRichTextConfig, ascentDescentMode));
14620
+ }
14589
14621
  } else richTextConfig.text && paragraphs.push(new Paragraph(richTextConfig.text, !1, richTextConfig, ascentDescentMode));
14590
14622
  }
14591
14623
  const maxWidthFinite = "number" == typeof maxWidth && Number.isFinite(maxWidth) && maxWidth > 0,
@@ -14594,7 +14626,7 @@ class RichText extends Graphic {
14594
14626
  richTextHeightEnable = "number" == typeof height && Number.isFinite(height) && height > 0 && (!maxHeightFinite || height <= maxHeight),
14595
14627
  frame = new Frame(0, 0, (richTextWidthEnable ? width : maxWidthFinite ? maxWidth : 0) || 0, (richTextHeightEnable ? height : maxHeightFinite ? maxHeight : 0) || 0, ellipsis, wordBreak, verticalDirection, textAlign, textBaseline, layoutDirection || "horizontal", !richTextWidthEnable && maxWidthFinite, !richTextHeightEnable && maxHeightFinite, singleLine || !1, null === (_a = this._frameCache) || void 0 === _a ? void 0 : _a.icons),
14596
14628
  wrapper = new Wrapper(frame);
14597
- if (wrapper.newLine = editable, disableAutoWrapLine) {
14629
+ if (wrapper.newLine = enableMultiBreakLine, disableAutoWrapLine) {
14598
14630
  let lineCount = 0,
14599
14631
  skip = !1;
14600
14632
  for (let i = 0; i < paragraphs.length; i++) {
@@ -14610,7 +14642,7 @@ class RichText extends Graphic {
14610
14642
  l.calcOffset(offsetSize, !1);
14611
14643
  });
14612
14644
  }
14613
- editable && frame.lines.forEach(item => {
14645
+ enableMultiBreakLine && frame.lines.forEach(item => {
14614
14646
  const lastParagraphs = item.paragraphs;
14615
14647
  item.paragraphs = item.paragraphs.filter(p => "" !== p.text), 0 === item.paragraphs.length && lastParagraphs.length && (lastParagraphs[0].text = "\n", item.paragraphs.push(lastParagraphs[0]));
14616
14648
  }), this._frameCache = frame;
@@ -15596,7 +15628,7 @@ function drawWave(ctx, ratio, boundsWidth, boundsHeight, textureOptions, offsetX
15596
15628
  }
15597
15629
  class DefaultBaseTextureRenderContribution {
15598
15630
  constructor() {
15599
- this.time = BaseRenderContributionTime.afterFillStroke, this.useStyle = !0, this.order = 10;
15631
+ this.time = BaseRenderContributionTime.afterFillStroke, this.useStyle = !0, this.order = 10, this._tempSymbolGraphic = null;
15600
15632
  }
15601
15633
  createCommonPattern(size, padding, color, targetContext, cb) {
15602
15634
  const r = (size - 2 * padding) / 2,
@@ -15710,7 +15742,35 @@ class DefaultBaseTextureRenderContribution {
15710
15742
  case "grid":
15711
15743
  pattern = this.createGridPattern(textureSize, texturePadding, textureColor, context);
15712
15744
  }
15713
- if (pattern) context.highPerformanceSave(), context.setCommonStyle(graphic, graphic.attribute, x, y, graphicAttribute), context.fillStyle = pattern, context.fill(), context.highPerformanceRestore();else if ("wave" === texture) {
15745
+ if (textureOptions && textureOptions.dynamicTexture) {
15746
+ context.save(), context.setCommonStyle(graphic, graphic.attribute, x, y, graphicAttribute), context.clip();
15747
+ const {
15748
+ gridConfig = {}
15749
+ } = textureOptions,
15750
+ b = graphic.AABBBounds,
15751
+ width = b.width(),
15752
+ height = b.height(),
15753
+ padding = texturePadding,
15754
+ cellSize = textureSize,
15755
+ gridColumns = gridConfig.columns ? gridConfig.columns : Math.ceil(width / cellSize),
15756
+ gridRows = gridConfig.rows ? gridConfig.rows : Math.ceil(height / cellSize),
15757
+ gutterColumn = gridConfig.gutterColumn ? gridConfig.gutterColumn : 2 * padding,
15758
+ gutterRow = gridConfig.gutterRow ? gridConfig.gutterRow : 2 * padding;
15759
+ this._tempSymbolGraphic || (this._tempSymbolGraphic = createSymbol({}));
15760
+ const sizeW = gridConfig.columns ? width / gridConfig.columns : cellSize,
15761
+ sizeH = gridConfig.rows ? height / gridConfig.rows : cellSize;
15762
+ this._tempSymbolGraphic.setAttributes({
15763
+ size: [sizeW - gutterColumn, sizeH - gutterRow],
15764
+ symbolType: texture
15765
+ });
15766
+ const parsedPath = this._tempSymbolGraphic.getParsedPath();
15767
+ for (let i = 0; i < gridRows; i++) for (let j = 0; j < gridColumns; j++) {
15768
+ const _x = x + cellSize / 2 + j * cellSize,
15769
+ _y = y + cellSize / 2 + i * cellSize;
15770
+ context.beginPath(), !1 === parsedPath.draw(context, Math.min(sizeW - gutterColumn, sizeH - gutterRow), _x, _y, 0) && context.closePath(), context.fillStyle = textureColor, textureOptions.dynamicTexture(context, i, j, gridRows, gridColumns, textureRatio, graphic);
15771
+ }
15772
+ context.restore();
15773
+ } else if (pattern) context.highPerformanceSave(), context.setCommonStyle(graphic, graphic.attribute, x, y, graphicAttribute), context.fillStyle = pattern, context.fill(), context.highPerformanceRestore();else if ("wave" === texture) {
15714
15774
  context.save(), context.setCommonStyle(graphic, graphic.attribute, x, y, graphicAttribute), context.clip();
15715
15775
  const b = graphic.AABBBounds;
15716
15776
  drawWave(context, textureRatio, b.width(), b.height(), Object.assign(Object.assign({}, textureOptions || {}), {
@@ -20268,6 +20328,7 @@ function getDefaultCharacterConfig(attribute) {
20268
20328
  fill = "black",
20269
20329
  stroke = !1,
20270
20330
  fontWeight = "normal",
20331
+ lineHeight: lineHeight,
20271
20332
  fontFamily = "Arial"
20272
20333
  } = attribute;
20273
20334
  let {
@@ -20278,7 +20339,8 @@ function getDefaultCharacterConfig(attribute) {
20278
20339
  stroke: stroke,
20279
20340
  fontSize: fontSize,
20280
20341
  fontWeight: fontWeight,
20281
- fontFamily: fontFamily
20342
+ fontFamily: fontFamily,
20343
+ lineHeight: lineHeight
20282
20344
  };
20283
20345
  }
20284
20346
  function findConfigIndexByCursorIdx(textConfig, cursorIndex) {
@@ -20527,15 +20589,15 @@ class RichTextEditPlugin {
20527
20589
  }, this.handleFocusOut = () => {
20528
20590
  throw new Error("不会走到这里 handleFocusOut");
20529
20591
  }, this.handleMove = e => {
20530
- this.isRichtext(e) && (this.currRt = e.target, this.handleEnter(e), e.target.once("pointerleave", this.handleLeave, {
20592
+ this.currRt && !this.currRt.attribute.editable && this.deFocus(!0), this.isEditableRichtext(e) ? (this.handleEnter(), e.target.once("pointerleave", this.handleLeave, {
20531
20593
  capture: !0
20532
- }), this.tryShowSelection(e, !1));
20533
- }, this.handleEnter = e => {
20594
+ }), this.tryShowSelection(e, !1)) : this.handleLeave();
20595
+ }, this.handleEnter = () => {
20534
20596
  this.editing = !0, this.pluginService.stage.setCursor("text");
20535
- }, this.handleLeave = e => {
20597
+ }, this.handleLeave = () => {
20536
20598
  this.editing = !1, this.pluginService.stage.setCursor("default");
20537
20599
  }, this.handlePointerDown = e => {
20538
- this.editing ? this.onFocus(e) : this.deFocus(!0), this.triggerRender(), this.pointerDown = !0, this.updateCbs.forEach(cb => cb(this.editing ? "onfocus" : "defocus", this));
20600
+ this.editing && this.isEditableRichtext(e) ? this.onFocus(e) : this.deFocus(!0), this.triggerRender(), this.pointerDown = !0, this.updateCbs.forEach(cb => cb(this.editing ? "onfocus" : "defocus", this));
20539
20601
  }, this.handlePointerUp = e => {
20540
20602
  this.pointerDown = !1;
20541
20603
  }, this.handleDBLClick = e => {
@@ -20643,7 +20705,7 @@ class RichTextEditPlugin {
20643
20705
  } = cache,
20644
20706
  totalCursorCount = lines.reduce((total, line) => total + line.paragraphs.length, 0) - 1;
20645
20707
  if (x) {
20646
- x > 0 && columnInfo === lineInfo.paragraphs[lineInfo.paragraphs.length - 2] && this.curCursorIdx < Math.round(this.curCursorIdx) ? this.curCursorIdx = this.curCursorIdx + .2 : x > 0 && columnInfo === lineInfo.paragraphs[lineInfo.paragraphs.length - 1] && this.curCursorIdx > Math.round(this.curCursorIdx) ? this.curCursorIdx = this.curCursorIdx + 1 - .2 : x < 0 && columnInfo === lineInfo.paragraphs[0] && this.curCursorIdx > Math.round(this.curCursorIdx) ? this.curCursorIdx = this.curCursorIdx - .2 : x < 0 && columnInfo === lineInfo.paragraphs[0] && this.curCursorIdx < Math.round(this.curCursorIdx) ? this.curCursorIdx = this.curCursorIdx - 1 + .2 : this.curCursorIdx += x, this.curCursorIdx < -.1 ? this.curCursorIdx = -.1 : this.curCursorIdx > totalCursorCount + .1 && (this.curCursorIdx = totalCursorCount + .1);
20708
+ x > 0 && columnInfo === lineInfo.paragraphs[lineInfo.paragraphs.length - 2] && this.curCursorIdx < Math.round(this.curCursorIdx) ? this.curCursorIdx = this.curCursorIdx + .2 : x > 0 && columnInfo === lineInfo.paragraphs[lineInfo.paragraphs.length - 1] && this.curCursorIdx > Math.round(this.curCursorIdx) ? this.curCursorIdx = this.curCursorIdx + 1 - .2 : x < 0 && columnInfo === lineInfo.paragraphs[0] && this.curCursorIdx > Math.round(this.curCursorIdx) ? this.curCursorIdx = this.curCursorIdx - .2 : x < 0 && columnInfo === lineInfo.paragraphs[0] && this.curCursorIdx < Math.round(this.curCursorIdx) ? this.curCursorIdx = this.curCursorIdx - 1 + .2 : this.curCursorIdx += x, this.curCursorIdx < -.1 ? this.curCursorIdx = -.1 : this.curCursorIdx > totalCursorCount + .1 && (this.curCursorIdx = totalCursorCount + .1), this.selectionStartCursorIdx = this.curCursorIdx;
20647
20709
  const pos = this.computedCursorPosByCursorIdx(this.curCursorIdx, this.currRt);
20648
20710
  this.setCursorAndTextArea(pos.x, pos.y1, pos.y2, this.currRt), this.hideSelection();
20649
20711
  }
@@ -20736,7 +20798,8 @@ class RichTextEditPlugin {
20736
20798
  lineWidth: 1,
20737
20799
  zIndex: -1
20738
20800
  });
20739
- this.getShadow(this.currRt).add(this.shadowBounds), this.offsetLineBgAndShadowBounds(), this.offsetShadowRoot();
20801
+ const shadow = this.getShadow(this.currRt);
20802
+ this.addEditLineOrBgOrBounds(this.shadowBounds, shadow), this.offsetLineBgAndShadowBounds(), this.offsetShadowRoot();
20740
20803
  }
20741
20804
  trySyncPlaceholderToTextConfig() {
20742
20805
  if (!this.currRt) return;
@@ -20771,8 +20834,22 @@ class RichTextEditPlugin {
20771
20834
  stopPropagation(e) {
20772
20835
  e.stopPropagation();
20773
20836
  }
20837
+ addEditLineOrBgOrBounds(graphic, shadowRoot) {
20838
+ let group = shadowRoot.getElementById("emptyBoundsContainer");
20839
+ group || (group = createGroup({
20840
+ x: 0,
20841
+ y: 0,
20842
+ width: 0,
20843
+ height: 0,
20844
+ boundsMode: "empty"
20845
+ }), group.id = "emptyBoundsContainer", shadowRoot.add(group)), group.add(graphic);
20846
+ }
20847
+ removeEditLineOrBgOrBounds(graphic, shadowRoot) {
20848
+ const group = shadowRoot.getElementById("emptyBoundsContainer");
20849
+ group && group.removeChild(graphic);
20850
+ }
20774
20851
  onFocus(e, data) {
20775
- this.updateCbs && this.updateCbs.forEach(cb => cb("beforeOnfocus", this)), this.deFocus(!1), this.focusing = !0;
20852
+ this.updateCbs && this.updateCbs.forEach(cb => cb("beforeOnfocus", this)), this.deFocus(!1), this.focusing = !0, this.editing = !0;
20776
20853
  const target = e.target;
20777
20854
  if (!target || "richtext" !== target.type) return;
20778
20855
  this.currRt = target, RichTextEditPlugin.tryUpdateRichtext(target);
@@ -20796,7 +20873,7 @@ class RichTextEditPlugin {
20796
20873
  width: 0,
20797
20874
  height: 0
20798
20875
  });
20799
- this.editBg = g, shadowRoot.add(this.editLine), shadowRoot.add(this.editBg);
20876
+ this.editBg = g, this.addEditLineOrBgOrBounds(this.editLine, shadowRoot), this.addEditLineOrBgOrBounds(this.editBg, shadowRoot);
20800
20877
  }
20801
20878
  if (data = data || this.computedCursorPosByEvent(e, cache)) {
20802
20879
  const {
@@ -20861,27 +20938,22 @@ class RichTextEditPlugin {
20861
20938
  }
20862
20939
  deFocus() {
20863
20940
  let trulyDeFocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : !1;
20864
- this.updateCbs && this.updateCbs.forEach(cb => cb("beforeDefocus", this, {
20941
+ this.editing = !1, this.updateCbs && this.updateCbs.forEach(cb => cb("beforeDefocus", this, {
20865
20942
  trulyDeFocus: trulyDeFocus
20866
20943
  }));
20867
- const target = this.currRt;
20868
- if (!target) return;
20944
+ const currRt = this.currRt;
20945
+ if (!currRt) return;
20869
20946
  const {
20870
20947
  editOptions = {}
20871
- } = target.attribute;
20872
- editOptions.stopPropagation && target.removeEventListener("*", this.stopPropagation), trulyDeFocus && (this.trySyncPlaceholderToTextConfig(), target.detachShadow());
20873
- const currRt = this.currRt;
20874
- this.currRt = null, this.editLine && (this.editLine.parent && this.editLine.parent.removeChild(this.editLine), this.editLine.release(), this.editLine = null, this.editBg.parent && this.editBg.parent.removeChild(this.editBg), this.editBg.release(), this.editBg = null), trulyDeFocus && (this.shadowBounds && (this.shadowBounds.parent && this.shadowBounds.parent.removeChild(this.shadowBounds), this.shadowBounds.release(), this.shadowBounds = null), this.shadowPlaceHolder && (this.shadowPlaceHolder.parent && this.shadowPlaceHolder.parent.removeChild(this.shadowPlaceHolder), this.shadowPlaceHolder.release(), this.shadowPlaceHolder = null)), this.focusing = !1;
20875
- const textConfig = currRt.attribute.textConfig;
20876
- let lastConfig = textConfig[textConfig.length - 1],
20877
- cleared = !1;
20878
- for (; lastConfig && "\n" === lastConfig.text;) textConfig.pop(), lastConfig = textConfig[textConfig.length - 1], cleared = !0;
20879
- cleared && currRt.setAttributes({
20880
- textConfig: textConfig
20881
- });
20948
+ } = currRt.attribute;
20949
+ editOptions.stopPropagation && currRt.removeEventListener("*", this.stopPropagation), trulyDeFocus && (this.trySyncPlaceholderToTextConfig(), currRt.detachShadow()), this.currRt = null;
20950
+ const shadowRoot = this.getShadow(currRt);
20951
+ this.editLine && (this.removeEditLineOrBgOrBounds(this.editLine, shadowRoot), this.editLine.release(), this.editLine = null, this.removeEditLineOrBgOrBounds(this.editBg, shadowRoot), this.editBg.release(), this.editBg = null), trulyDeFocus && (this.shadowBounds && (this.removeEditLineOrBgOrBounds(this.shadowBounds, shadowRoot), this.shadowBounds.release(), this.shadowBounds = null), this.shadowPlaceHolder && (this.shadowPlaceHolder.parent && this.shadowPlaceHolder.parent.removeChild(this.shadowPlaceHolder), this.shadowPlaceHolder.release(), this.shadowPlaceHolder = null)), this.focusing = !1, currRt.removeEventListener("pointerleave", this.handleLeave);
20882
20952
  }
20883
20953
  addAnimateToLine(line) {
20884
- line.animates && line.animates.forEach(animate => {
20954
+ line.setAttributes({
20955
+ opacity: 1
20956
+ }), line.animates && line.animates.forEach(animate => {
20885
20957
  animate.stop(), animate.release();
20886
20958
  });
20887
20959
  line.animate({
@@ -20990,7 +21062,8 @@ class RichTextEditPlugin {
20990
21062
  getShadow(rt) {
20991
21063
  const sr = rt.shadowRoot || rt.attachShadow();
20992
21064
  return sr.setAttributes({
20993
- boundsMode: "empty"
21065
+ width: 1,
21066
+ height: 1
20994
21067
  }), sr;
20995
21068
  }
20996
21069
  getLineByPoint(cache, p1) {
@@ -21024,7 +21097,10 @@ class RichTextEditPlugin {
21024
21097
  return -1;
21025
21098
  }
21026
21099
  isRichtext(e) {
21027
- return !(!e.target || "richtext" !== e.target.type || !e.target.attribute.editable);
21100
+ return !(!e.target || "richtext" !== e.target.type);
21101
+ }
21102
+ isEditableRichtext(e) {
21103
+ return this.isRichtext(e) && !!e.target.attribute.editable;
21028
21104
  }
21029
21105
  triggerRender() {
21030
21106
  this.pluginService.stage.renderNextFrame();
@@ -21170,7 +21246,7 @@ class RichTextEditPlugin {
21170
21246
  target && (this.currRt = target, e ? this._forceFocusByEvent(e) : this._forceFocusByCursorIndex(null != cursorIndex ? cursorIndex : -.1));
21171
21247
  }
21172
21248
  _forceFocusByEvent(e) {
21173
- this.handleEnter(e), this.handlePointerDown(e), this.handlePointerUp(e);
21249
+ this.handleEnter(), this.handlePointerDown(e), this.handlePointerUp(e);
21174
21250
  }
21175
21251
  _forceFocusByCursorIndex(cursorIndex) {
21176
21252
  const richtext = this.currRt;
@@ -27491,13 +27567,15 @@ let NodeWindowHandlerContribution = class extends BaseWindowHandlerContribution
27491
27567
  this.canvas = new NodeCanvas(options);
27492
27568
  }
27493
27569
  createWindowByCanvas(params) {
27494
- const canvas = params.canvas;
27570
+ var _a;
27571
+ const canvas = params.canvas,
27572
+ dpr = null !== (_a = params.dpr) && void 0 !== _a ? _a : 1;
27495
27573
  let width = params.width,
27496
27574
  height = params.height;
27497
- null != width && null != height && params.canvasControled || (width = canvas.width, height = canvas.height), this.canvas = new NodeCanvas({
27575
+ null != width && null != height && params.canvasControled || (width = canvas.width / dpr, height = canvas.height / dpr), this.canvas = new NodeCanvas({
27498
27576
  width: width,
27499
27577
  height: height,
27500
- dpr: 1,
27578
+ dpr: dpr,
27501
27579
  nativeCanvas: canvas,
27502
27580
  canvasControled: params.canvasControled
27503
27581
  });
@@ -31235,9 +31313,193 @@ function _registerWrapText() {
31235
31313
  _registerWrapText.__loaded = !1;
31236
31314
  const registerWrapText = _registerWrapText;
31237
31315
 
31316
+ function randomOpacity(ctx, row, column, rowCount, columnCount, ratio, graphic) {
31317
+ let minRatio = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;
31318
+ let amplitude = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
31319
+ graphic.dynamicTextureCache || (graphic.dynamicTextureCache = new Array(rowCount * columnCount).fill(0).map(item => 2 * Math.random() * Math.PI));
31320
+ const targetRandomValue = graphic.dynamicTextureCache[row * columnCount + column],
31321
+ _r = minRatio + amplitude * (Math.sin(2 * ratio * Math.PI + targetRandomValue) + 1) / 2;
31322
+ return Math.min(1, Math.max(0, _r));
31323
+ }
31324
+ function columnLeftToRight(ctx, row, column, rowCount, columnCount, ratio, graphic) {
31325
+ let minRatio = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;
31326
+ let amplitude = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
31327
+ const delay = column / columnCount,
31328
+ _r = minRatio + amplitude * (Math.sin(2 * ratio * Math.PI - 2 * delay * Math.PI) + 1) / 2;
31329
+ return Math.min(1, Math.max(0, _r));
31330
+ }
31331
+ function columnRightToLeft(ctx, row, column, rowCount, columnCount, ratio, graphic) {
31332
+ let minRatio = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;
31333
+ let amplitude = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
31334
+ const delay = (columnCount - 1 - column) / columnCount,
31335
+ _r = minRatio + amplitude * (Math.sin(2 * ratio * Math.PI - 2 * delay * Math.PI) + 1) / 2;
31336
+ return Math.min(1, Math.max(0, _r));
31337
+ }
31338
+ function rowTopToBottom(ctx, row, column, rowCount, columnCount, ratio, graphic) {
31339
+ let minRatio = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;
31340
+ let amplitude = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
31341
+ const delay = row / rowCount,
31342
+ _r = minRatio + amplitude * (Math.sin(2 * ratio * Math.PI - 2 * delay * Math.PI) + 1) / 2;
31343
+ return Math.min(1, Math.max(0, _r));
31344
+ }
31345
+ function rowBottomToTop(ctx, row, column, rowCount, columnCount, ratio, graphic) {
31346
+ let minRatio = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;
31347
+ let amplitude = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
31348
+ const delay = (rowCount - 1 - row) / rowCount,
31349
+ _r = minRatio + amplitude * (Math.sin(2 * ratio * Math.PI - 2 * delay * Math.PI) + 1) / 2;
31350
+ return Math.min(1, Math.max(0, _r));
31351
+ }
31352
+ function diagonalCenterToEdge(ctx, row, column, rowCount, columnCount, ratio, graphic) {
31353
+ let minRatio = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;
31354
+ let amplitude = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
31355
+ const centerRow = rowCount / 2,
31356
+ centerCol = columnCount / 2,
31357
+ distance = Math.sqrt(Math.pow((row - centerRow) / rowCount, 2) + Math.pow((column - centerCol) / columnCount, 2)),
31358
+ _r = minRatio + amplitude * (Math.sin(2 * ratio * Math.PI - 2 * distance * Math.PI) + 1) / 2;
31359
+ return Math.min(1, Math.max(0, _r));
31360
+ }
31361
+ function diagonalTopLeftToBottomRight(ctx, row, column, rowCount, columnCount, ratio, graphic) {
31362
+ let minRatio = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;
31363
+ let amplitude = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
31364
+ const delay = (row / rowCount + column / columnCount) / 2,
31365
+ _r = minRatio + amplitude * (Math.sin(2 * ratio * Math.PI - 2 * delay * Math.PI) + 1) / 2;
31366
+ return Math.min(1, Math.max(0, _r));
31367
+ }
31368
+ function rotationScan(ctx, row, column, rowCount, columnCount, ratio, graphic) {
31369
+ let minRatio = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;
31370
+ let amplitude = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
31371
+ const centerRow = rowCount / 2,
31372
+ centerCol = columnCount / 2,
31373
+ angle = Math.atan2(row - centerRow, column - centerCol),
31374
+ delay = (angle < 0 ? angle + 2 * Math.PI : angle) / (2 * Math.PI),
31375
+ _r = minRatio + amplitude * (Math.sin(2 * ratio * Math.PI - 2 * delay * Math.PI) + 1) / 2;
31376
+ return Math.min(1, Math.max(0, _r));
31377
+ }
31378
+ function rippleEffect(ctx, row, column, rowCount, columnCount, ratio, graphic) {
31379
+ let minRatio = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;
31380
+ let amplitude = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
31381
+ const centerRow = rowCount / 2,
31382
+ centerCol = columnCount / 2,
31383
+ normalizedDistance = Math.sqrt(Math.pow(row - centerRow, 2) + Math.pow(column - centerCol, 2)) / Math.sqrt(Math.pow(rowCount / 2, 2) + Math.pow(columnCount / 2, 2)),
31384
+ _r = minRatio + amplitude * (Math.sin(2 * ratio * Math.PI * 3 - 2 * normalizedDistance * Math.PI) + 1) / 2;
31385
+ return Math.min(1, Math.max(0, _r));
31386
+ }
31387
+ function snakeWave(ctx, row, column, rowCount, columnCount, ratio, graphic) {
31388
+ let minRatio = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;
31389
+ let amplitude = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
31390
+ const delay = (row + column) % (rowCount + columnCount) / (rowCount + columnCount),
31391
+ _r = minRatio + amplitude * (Math.sin(2 * ratio * Math.PI - 4 * delay * Math.PI) + 1) / 2;
31392
+ return Math.min(1, Math.max(0, _r));
31393
+ }
31394
+ function alternatingWave(ctx, row, column, rowCount, columnCount, ratio, graphic) {
31395
+ let minRatio = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;
31396
+ let amplitude = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
31397
+ const rowPhase = row / rowCount,
31398
+ colPhase = column / columnCount,
31399
+ _r = minRatio + amplitude * (Math.sin(2 * ratio * Math.PI - 2 * rowPhase * Math.PI) * Math.sin(2 * ratio * Math.PI - 2 * colPhase * Math.PI) + 1) / 2;
31400
+ return Math.min(1, Math.max(0, _r));
31401
+ }
31402
+ function spiralEffect(ctx, row, column, rowCount, columnCount, ratio, graphic) {
31403
+ let minRatio = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;
31404
+ let amplitude = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
31405
+ const centerRow = rowCount / 2,
31406
+ centerCol = columnCount / 2,
31407
+ distance = Math.sqrt(Math.pow(row - centerRow, 2) + Math.pow(column - centerCol, 2)),
31408
+ angle = Math.atan2(row - centerRow, column - centerCol),
31409
+ delay = (distance / Math.sqrt(Math.pow(rowCount / 2, 2) + Math.pow(columnCount / 2, 2)) + angle / (2 * Math.PI)) / 2,
31410
+ _r = minRatio + amplitude * (Math.sin(2 * ratio * Math.PI - 4 * delay * Math.PI) + 1) / 2;
31411
+ return Math.min(1, Math.max(0, _r));
31412
+ }
31413
+ function columnCenterToEdge(ctx, row, column, rowCount, columnCount, ratio, graphic) {
31414
+ let minRatio = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;
31415
+ let amplitude = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
31416
+ const centerCol = columnCount / 2,
31417
+ distance = Math.abs(column - centerCol) / centerCol,
31418
+ _r = minRatio + amplitude * (Math.sin(2 * ratio * Math.PI - 2 * distance * Math.PI) + 1) / 2;
31419
+ return Math.min(1, Math.max(0, _r));
31420
+ }
31421
+ function columnEdgeToCenter(ctx, row, column, rowCount, columnCount, ratio, graphic) {
31422
+ let minRatio = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;
31423
+ let amplitude = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
31424
+ const centerCol = columnCount / 2,
31425
+ distance = 1 - Math.abs(column - centerCol) / centerCol,
31426
+ _r = minRatio + amplitude * (Math.sin(2 * ratio * Math.PI - 2 * distance * Math.PI) + 1) / 2;
31427
+ return Math.min(1, Math.max(0, _r));
31428
+ }
31429
+ function rowCenterToEdge(ctx, row, column, rowCount, columnCount, ratio, graphic) {
31430
+ let minRatio = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;
31431
+ let amplitude = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
31432
+ const centerRow = rowCount / 2,
31433
+ distance = Math.abs(row - centerRow) / centerRow,
31434
+ _r = minRatio + amplitude * (Math.sin(2 * ratio * Math.PI - 2 * distance * Math.PI) + 1) / 2;
31435
+ return Math.min(1, Math.max(0, _r));
31436
+ }
31437
+ function rowEdgeToCenter(ctx, row, column, rowCount, columnCount, ratio, graphic) {
31438
+ let minRatio = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;
31439
+ let amplitude = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
31440
+ const centerRow = rowCount / 2,
31441
+ distance = 1 - Math.abs(row - centerRow) / centerRow,
31442
+ _r = minRatio + amplitude * (Math.sin(2 * ratio * Math.PI - 2 * distance * Math.PI) + 1) / 2;
31443
+ return Math.min(1, Math.max(0, _r));
31444
+ }
31445
+ function cornerToCenter(ctx, row, column, rowCount, columnCount, ratio, graphic) {
31446
+ let minRatio = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;
31447
+ let amplitude = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
31448
+ const centerRow = rowCount / 2,
31449
+ centerCol = columnCount / 2,
31450
+ distance = Math.sqrt(Math.pow((row - centerRow) / centerRow, 2) + Math.pow((column - centerCol) / centerCol, 2)),
31451
+ normalizedDistance = Math.min(distance, 1),
31452
+ _r = minRatio + amplitude * (Math.sin(2 * ratio * Math.PI - 2 * normalizedDistance * Math.PI) + 1) / 2;
31453
+ return Math.min(1, Math.max(0, _r));
31454
+ }
31455
+ function centerToCorner(ctx, row, column, rowCount, columnCount, ratio, graphic) {
31456
+ let minRatio = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;
31457
+ let amplitude = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
31458
+ const centerRow = rowCount / 2,
31459
+ centerCol = columnCount / 2,
31460
+ distance = Math.sqrt(Math.pow((row - centerRow) / centerRow, 2) + Math.pow((column - centerCol) / centerCol, 2)),
31461
+ normalizedDistance = 1 - Math.min(distance, 1),
31462
+ _r = minRatio + amplitude * (Math.sin(2 * ratio * Math.PI - 2 * normalizedDistance * Math.PI) + 1) / 2;
31463
+ return Math.min(1, Math.max(0, _r));
31464
+ }
31465
+ function pulseWave(ctx, row, column, rowCount, columnCount, ratio, graphic) {
31466
+ let minRatio = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;
31467
+ let amplitude = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
31468
+ const centerRow = rowCount / 2,
31469
+ centerCol = columnCount / 2,
31470
+ distance = Math.sqrt(Math.pow((row - centerRow) / centerRow, 2) + Math.pow((column - centerCol) / centerCol, 2)),
31471
+ normalizedDistance = Math.min(distance, 1),
31472
+ wavePhase = 2 * ratio * Math.PI * 3,
31473
+ decay = Math.max(0, 1 - normalizedDistance),
31474
+ _r = minRatio + amplitude * ((Math.sin(wavePhase - 4 * normalizedDistance * Math.PI) + 1) / 2) * (.7 * decay + .3);
31475
+ return Math.min(1, Math.max(0, _r));
31476
+ }
31477
+ function particleEffect(ctx, row, column, rowCount, columnCount, ratio, graphic) {
31478
+ let minRatio = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;
31479
+ let amplitude = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
31480
+ graphic.dynamicTextureCache || (graphic.dynamicTextureCache = {
31481
+ phases: new Array(rowCount * columnCount).fill(0).map(() => 2 * Math.random() * Math.PI),
31482
+ speeds: new Array(rowCount * columnCount).fill(0).map(() => .5 + .5 * Math.random()),
31483
+ directions: new Array(rowCount * columnCount).fill(0).map(() => 2 * Math.random() * Math.PI)
31484
+ });
31485
+ const index = row * columnCount + column,
31486
+ phase = graphic.dynamicTextureCache.phases[index],
31487
+ speed = graphic.dynamicTextureCache.speeds[index],
31488
+ direction = graphic.dynamicTextureCache.directions[index],
31489
+ centerRow = rowCount / 2,
31490
+ centerCol = columnCount / 2,
31491
+ distance = Math.sqrt(Math.pow((row - centerRow) / centerRow, 2) + Math.pow((column - centerCol) / centerCol, 2)),
31492
+ normalizedDistance = Math.min(distance, 1),
31493
+ scatterRatio = (ratio - .4) / .6,
31494
+ movement = Math.sin(scatterRatio * speed * 8 * Math.PI + phase + direction * scatterRatio),
31495
+ distanceEffect = Math.cos(normalizedDistance * Math.PI + scatterRatio * Math.PI),
31496
+ _r = minRatio + amplitude * ((movement + 1) / 2 * Math.max(0, 1 - 1.2 * scatterRatio) * (.3 + .7 * distanceEffect));
31497
+ return Math.min(1, Math.max(0, _r));
31498
+ }
31499
+
31238
31500
  const roughModule = _roughModule;
31239
31501
 
31240
- const version = "0.22.0";
31502
+ const version = "0.22.1";
31241
31503
  preLoadAllModule();
31242
31504
  if (isBrowserEnv()) {
31243
31505
  loadBrowserEnv(container);
@@ -31270,4 +31532,4 @@ registerReactAttributePlugin();
31270
31532
  registerDirectionalLight();
31271
31533
  registerOrthoCamera();
31272
31534
 
31273
- export { ACustomAnimate, ARC3D_NUMBER_TYPE, ARC_NUMBER_TYPE, AREA_NUMBER_TYPE, AbstractGraphicRender, Animate, AnimateGroup, AnimateGroup1, AnimateMode, AnimateStatus, AnimateStepType, Application, Arc, Arc3d, Arc3dRender, ArcRender, ArcRenderContribution, Area, AreaRender, AreaRenderContribution, AttributeAnimate, AttributeUpdateType, AutoEnablePlugins, BaseCanvas, BaseEnvContribution, BaseRender, BaseRenderContributionTime, BaseWindowHandlerContribution, Basis, BeforeRenderConstribution, BoundsContext, BoundsPicker, BrowserEnvContribution, CIRCLE_NUMBER_TYPE, Canvas3DDrawItemInterceptor, Canvas3DPickItemInterceptor, CanvasArc3dPicker, CanvasArcPicker, CanvasAreaPicker, CanvasCirclePicker, CanvasFactory, CanvasGifImagePicker, CanvasGlyphPicker, CanvasGroupPicker, CanvasImagePicker, CanvasLinePicker, CanvasLottiePicker, CanvasPathPicker, CanvasPickerContribution, CanvasPolygonPicker, CanvasPyramid3dPicker, CanvasRect3dPicker, CanvasRectPicker, CanvasRichTextPicker, CanvasSymbolPicker, CanvasTextLayout, CanvasTextPicker, CbAnimate, Circle, CircleRender, CircleRenderContribution, ClipAngleAnimate, ClipDirectionAnimate, ClipGraphicAnimate, ClipRadiusAnimate, ColorInterpolate, ColorStore, ColorType, CommonDrawItemInterceptorContribution, CommonRenderContribution, Container, ContainerModule, Context2dFactory, ContributionProvider, CurveContext, CurveTypeEnum, CustomEvent, CustomPath2D, CustomSymbolClass, DEFAULT_TEXT_FONT_FAMILY, DebugDrawItemInterceptorContribution, DefaultArcAllocate, DefaultArcAttribute, DefaultArcRenderContribution, DefaultAreaAllocate, DefaultAreaAttribute, DefaultAreaTextureRenderContribution, DefaultAttribute, DefaultBaseBackgroundRenderContribution, DefaultBaseInteractiveRenderContribution, DefaultBaseTextureRenderContribution, DefaultCanvasAllocate, DefaultCanvasArcRender, DefaultCanvasAreaRender, DefaultCanvasCircleRender, DefaultCanvasGroupRender, DefaultCanvasImageRender, DefaultCanvasLineRender, DefaultCanvasPathRender, DefaultCanvasPolygonRender, DefaultCanvasRectRender, DefaultCanvasSymbolRender, DefaultCanvasTextRender, DefaultCircleAllocate, DefaultCircleAttribute, DefaultCircleRenderContribution, DefaultConnectAttribute, DefaultDebugAttribute, DefaultFillStyle, DefaultGlobal, DefaultGlobalPickerService, DefaultGlyphAttribute, DefaultGraphicAllocate, DefaultGraphicMemoryManager, DefaultGraphicService, DefaultGraphicUtil, DefaultGroupAttribute, DefaultGroupBackgroundRenderContribution, DefaultImageAttribute, DefaultImageRenderContribution, DefaultLayerService, DefaultLayout, DefaultLineAllocate, DefaultLineAttribute, DefaultMat4Allocate, DefaultMatrixAllocate, DefaultMorphingAnimateConfig, DefaultPathAllocate, DefaultPathAttribute, DefaultPickService, DefaultPickStyle, DefaultPolygonAttribute, DefaultRect3dAttribute, DefaultRectAllocate, DefaultRectAttribute, DefaultRectRenderContribution, DefaultRenderService, DefaultRichTextAttribute, DefaultRichTextIconAttribute, DefaultStateAnimateConfig, DefaultStrokeStyle, DefaultStyle, DefaultSymbolAllocate, DefaultSymbolAttribute, DefaultSymbolClipRangeStrokeRenderContribution, DefaultSymbolRenderContribution, DefaultTextAllocate, DefaultTextAttribute, DefaultTextMeasureContribution, DefaultTextStyle, DefaultTicker, DefaultTimeline, DefaultTransform, DefaultTransformUtil, DefaultWindow, Direction$1 as Direction, DirectionalLight, DragNDrop, DrawContribution, DrawItemInterceptor, DynamicLayerHandlerContribution, Easing, Edge, EditModule, EmptyContext2d, EnvContribution, EventManager, EventSystem, EventTarget, FORMAT_ALL_TEXT_COMMAND, FORMAT_ELEMENT_COMMAND, FORMAT_TEXT_COMMAND, Factory, FadeInPlus, FederatedEvent, FederatedMouseEvent, FederatedPointerEvent, FederatedWheelEvent, FlexLayoutPlugin, Fragment, GLYPH_NUMBER_TYPE, GRAPHIC_UPDATE_TAG_KEY, GROUP_NUMBER_TYPE, Generator, Gesture, GifImage, GlobalPickerService, Glyph, GlyphRender, Graphic, GraphicAnimate, GraphicCreator$1 as GraphicCreator, GraphicPicker, GraphicRender, GraphicService, GraphicUtil, Group, GroupFadeIn, GroupFadeOut, GroupRender, GroupRenderContribution, GroupUpdateAABBBoundsMode, HtmlAttributePlugin, IContainPointMode, IMAGE_NUMBER_TYPE, Image$1 as Image, ImageRender, ImageRenderContribution, IncreaseCount, IncrementalDrawContribution, InputText, InteractiveDrawItemInterceptorContribution, InteractivePickItemInterceptorContribution, InteractiveSubRenderContribution, LINE_NUMBER_TYPE, Layer, LayerService, Line$1 as Line, LineRender, Linear, LinearClosed, Lottie, ManualTickHandler, ManualTicker, Mat4Allocate, MathArcPicker, MathAreaPicker, MathCirclePicker, MathGlyphPicker, MathImagePicker, MathLinePicker, MathPathPicker, MathPickerContribution, MathPolygonPicker, MathRectPicker, MathSymbolPicker, MathTextPicker, MatrixAllocate, MeasureModeEnum, Meteor, MonotoneX, MonotoneY, MorphingPath, MotionPath, MultiToOneMorphingPath, NOWORK_ANIMATE_ATTR, Node, OrthoCamera, PATH_NUMBER_TYPE, POLYGON_NUMBER_TYPE, PURE_STYLE_KEY, PYRAMID3D_NUMBER_TYPE, Path, PathRender, PathRenderContribution, PickItemInterceptor, PickServiceInterceptor, PickerService, PluginService, Polygon, PolygonRender, PolygonRenderContribution, Pyramid3d, Pyramid3dRender, RAFTickHandler, REACT_TO_CANOPUS_EVENTS, REACT_TO_CANOPUS_EVENTS_LIST, RECT3D_NUMBER_TYPE, RECT_NUMBER_TYPE, RICHTEXT_NUMBER_TYPE, RafBasedSTO, ReactAttributePlugin, Rect, Rect3DRender, Rect3d, RectRender, RectRenderContribution, ReflectSegContext, RenderSelector, RenderService, ResourceLoader, RichText, RichTextEditPlugin, RichTextRender, RotateBySphereAnimate, SVG_ATTRIBUTE_MAP, SVG_ATTRIBUTE_MAP_KEYS, SVG_PARSE_ATTRIBUTE_MAP, SVG_PARSE_ATTRIBUTE_MAP_KEYS, SYMBOL_NUMBER_TYPE, SegContext, ShadowPickServiceInterceptorContribution, ShadowRoot, ShadowRootDrawItemInterceptorContribution, ShadowRootPickItemInterceptorContribution, SplitRectAfterRenderContribution, SplitRectBeforeRenderContribution, Stage, StaticLayerHandlerContribution, Step$1 as Step, StreamLight, SubAnimate, Symbol$1 as Symbol, SymbolRender, SymbolRenderContribution, TEXT_NUMBER_TYPE, TagPointsUpdate, Text, TextDirection, TextMeasureContribution, TextRender, TextRenderContribution, Theme, TimeOutTickHandler, TransformUtil, UpdateTag, VArc, VArc3d, VArea, VCircle, VGlobal, VGlyph, VGroup, VImage, VLine, VPath, VPolygon, VPyramid3d, VRect, VRect3d, VRichText, VSymbol, VText, VWindow, ViewTransform3dPlugin, VirtualLayerHandlerContribution, WILDCARD, WindowHandlerContribution, WrapText, XMLParser, _calculateLineHeight, _interpolateColor, _registerArc, addArcToBezierPath$1 as addArcToBezierPath, addAttributeToPrototype, alignBezierCurves, alignSubpath, application, applyTransformOnBezierCurves, arc3dCanvasPickModule, arc3dModule, arcCanvasPickModule, arcMathPickModule, arcModule, areaCanvasPickModule, areaMathPickModule, areaModule, bezier, bezierCurversToPath, binarySplitPolygon, bindContributionProvider, bindContributionProviderNoSingletonScope, boundStroke, browserEnvModule, builtInSymbolStrMap, builtinSymbols, builtinSymbolsMap, calcLineCache, calculateArcCornerRadius, calculateLineHeight, canvasAllocate, centroidOfSubpath, circleBounds, circleCanvasPickModule, circleMathPickModule, circleModule, clock, cloneGraphic, colorEqual, colorStringInterpolationToStr, container, cornerTangents, createArc, createArc3d, createArea, createCircle, createColor, createConicalGradient, createGifImage, createGlyph, createGroup, createImage, createImageElement$1 as createImageElement, createLine, createLottie, createMat4, createPath, createPolygon, createPyramid3d, createRect, createRect3d, createRectPath, createRichText, createShadowRoot, createStage, createSymbol, createText, createWrapText, cubicCalc, cubicLength, cubicPointAt, cubicSubdivide, decodeReactDom, defaultArcAllocate, defaultArcBackgroundRenderContribution, defaultArcRenderContribution, defaultArcTextureRenderContribution, defaultAreaAllocate, defaultBaseBackgroundRenderContribution, defaultBaseTextureRenderContribution, defaultCircleAllocate, defaultCircleBackgroundRenderContribution, defaultCircleRenderContribution, defaultCircleTextureRenderContribution, defaultGraphicMemoryManager, defaultGroupBackgroundRenderContribution, defaultImageBackgroundRenderContribution, defaultImageRenderContribution, defaultLineAllocate, defaultPathAllocate, defaultRectAllocate, defaultRectBackgroundRenderContribution, defaultRectRenderContribution, defaultRectTextureRenderContribution, defaultSymbolAllocate, defaultSymbolBackgroundRenderContribution, defaultSymbolClipRangeStrokeRenderContribution, defaultSymbolRenderContribution, defaultSymbolTextureRenderContribution, defaultTextAllocate, defaultTicker, defaultTimeline, drawArc, drawArcPath$1 as drawArcPath, drawAreaSegments, drawIncrementalAreaSegments, drawIncrementalSegments, drawSegments, enumCommandMap, feishuEnvModule, fillVisible, findBestMorphingRotation, findConfigIndexByCursorIdx, findCursorIdxByConfigIndex, findNextGraphic, flatten_simplify, foreach, foreachAsync, genBasisSegments, genBasisTypeSegments, genLinearClosedSegments, genLinearClosedTypeSegments, genLinearSegments, genLinearTypeSegments, genMonotoneXSegments, genMonotoneXTypeSegments, genMonotoneYSegments, genMonotoneYTypeSegments, genNumberType, genStepSegments, genStepTypeSegments, generatorPathEasingFunc, getAttributeFromDefaultAttrList, getConicGradientAt, getCurrentEnv, getDefaultCharacterConfig, getExtraModelMatrix, getModelMatrix, getRichTextBounds, getScaledStroke, getTextBounds, getTheme, getThemeFromGroup, gifImageCanvasPickModule, gifImageModule, globalTheme, glyphCanvasPickModule, glyphMathPickModule, glyphModule, graphicCreator, graphicService, graphicUtil, harmonyEnvModule, identityMat4, imageCanvasPickModule, imageMathPickModule, imageModule, incrementalAddTo, initAllEnv, initBrowserEnv, initFeishuEnv, initHarmonyEnv, initLynxEnv, initNodeEnv, initTTEnv, initTaroEnv, initWxEnv, inject, injectable, interpolateColor, interpolateGradientConicalColor, interpolateGradientLinearColor, interpolateGradientRadialColor, interpolatePureColorArray, intersect, isBrowserEnv, isNodeEnv, isSvg, isTransformKey, isXML, jsx, layerService, lineCanvasPickModule, lineMathPickModule, lineModule, loadAllEnv, loadAllModule, loadBrowserEnv, loadFeishuEnv, loadHarmonyEnv, loadLynxEnv, loadNodeEnv, loadTTEnv, loadTaroEnv, loadWxEnv, lookAt, lottieCanvasPickModule, lottieModule, lynxEnvModule, mat3Tomat4, mat4Allocate, matrixAllocate, morphPath, multiInject, multiToOneMorph, multiplyMat4Mat3, multiplyMat4Mat4, named, newThemeObj, nodeEnvModule, oneToMultiMorph, ortho, parsePadding, parseStroke, parseSvgPath, pathCanvasPickModule, pathMathPickModule, pathModule, pathToBezierCurves, point$3 as point, pointEqual, pointInterpolation, pointInterpolationHighPerformance, pointsEqual, pointsInterpolation, polygonCanvasPickModule, polygonMathPickModule, polygonModule, preLoadAllModule, pyramid3dCanvasPickModule, pyramid3dModule, quadCalc, quadLength, quadPointAt, rafBasedSto, rect3dCanvasPickModule, rect3dModule, rectCanvasPickModule, rectFillVisible, rectMathPickModule, rectModule, rectStrokeVisible, recursiveCallBinarySplit, registerArc, registerArc3d, registerArc3dGraphic, registerArcGraphic, registerArea, registerAreaGraphic, registerCircle, registerCircleGraphic, registerDirectionalLight, registerFlexLayoutPlugin, registerGlyph, registerGlyphGraphic, registerGroup, registerGroupGraphic, registerHtmlAttributePlugin, registerImage, registerImageGraphic, registerLine, registerLineGraphic, registerOrthoCamera, registerPath, registerPathGraphic, registerPolygon, registerPolygonGraphic, registerPyramid3d, registerPyramid3dGraphic, registerReactAttributePlugin, registerRect, registerRect3d, registerRect3dGraphic, registerRectGraphic, registerRichtext, registerRichtextGraphic, registerShadowRoot, registerShadowRootGraphic, registerSymbol, registerSymbolGraphic, registerText, registerTextGraphic, registerViewTransform3dPlugin, registerWrapText, registerWrapTextGraphic, renderCommandList, rewriteProto, richTextMathPickModule, richtextCanvasPickModule, richtextModule, rotateX, rotateY, rotateZ, roughModule, runFill, runStroke, scaleMat4, segments, shouldUseMat4, snapLength, splitArc, splitArea, splitCircle, splitGraphic, splitLine, splitPath, splitPolygon, splitRect, splitToGrids, strCommandMap, strokeVisible, symbolCanvasPickModule, symbolMathPickModule, symbolModule, taroEnvModule, textAttributesToStyle, textCanvasPickModule, textDrawOffsetX, textDrawOffsetY, textLayoutOffsetY, textMathPickModule, textModule, transformKeys, transformMat4, transformUtil, translate, ttEnvModule, version, verticalLayout, vglobal, waitForAllSubLayers, wrapCanvas, wrapContext, wxEnvModule, xul };
31535
+ export { ACustomAnimate, ARC3D_NUMBER_TYPE, ARC_NUMBER_TYPE, AREA_NUMBER_TYPE, AbstractGraphicRender, Animate, AnimateGroup, AnimateGroup1, AnimateMode, AnimateStatus, AnimateStepType, Application, Arc, Arc3d, Arc3dRender, ArcRender, ArcRenderContribution, Area, AreaRender, AreaRenderContribution, AttributeAnimate, AttributeUpdateType, AutoEnablePlugins, BaseCanvas, BaseEnvContribution, BaseRender, BaseRenderContributionTime, BaseWindowHandlerContribution, Basis, BeforeRenderConstribution, BoundsContext, BoundsPicker, BrowserEnvContribution, CIRCLE_NUMBER_TYPE, Canvas3DDrawItemInterceptor, Canvas3DPickItemInterceptor, CanvasArc3dPicker, CanvasArcPicker, CanvasAreaPicker, CanvasCirclePicker, CanvasFactory, CanvasGifImagePicker, CanvasGlyphPicker, CanvasGroupPicker, CanvasImagePicker, CanvasLinePicker, CanvasLottiePicker, CanvasPathPicker, CanvasPickerContribution, CanvasPolygonPicker, CanvasPyramid3dPicker, CanvasRect3dPicker, CanvasRectPicker, CanvasRichTextPicker, CanvasSymbolPicker, CanvasTextLayout, CanvasTextPicker, CbAnimate, Circle, CircleRender, CircleRenderContribution, ClipAngleAnimate, ClipDirectionAnimate, ClipGraphicAnimate, ClipRadiusAnimate, ColorInterpolate, ColorStore, ColorType, CommonDrawItemInterceptorContribution, CommonRenderContribution, Container, ContainerModule, Context2dFactory, ContributionProvider, CurveContext, CurveTypeEnum, CustomEvent, CustomPath2D, CustomSymbolClass, DEFAULT_TEXT_FONT_FAMILY, DebugDrawItemInterceptorContribution, DefaultArcAllocate, DefaultArcAttribute, DefaultArcRenderContribution, DefaultAreaAllocate, DefaultAreaAttribute, DefaultAreaTextureRenderContribution, DefaultAttribute, DefaultBaseBackgroundRenderContribution, DefaultBaseInteractiveRenderContribution, DefaultBaseTextureRenderContribution, DefaultCanvasAllocate, DefaultCanvasArcRender, DefaultCanvasAreaRender, DefaultCanvasCircleRender, DefaultCanvasGroupRender, DefaultCanvasImageRender, DefaultCanvasLineRender, DefaultCanvasPathRender, DefaultCanvasPolygonRender, DefaultCanvasRectRender, DefaultCanvasSymbolRender, DefaultCanvasTextRender, DefaultCircleAllocate, DefaultCircleAttribute, DefaultCircleRenderContribution, DefaultConnectAttribute, DefaultDebugAttribute, DefaultFillStyle, DefaultGlobal, DefaultGlobalPickerService, DefaultGlyphAttribute, DefaultGraphicAllocate, DefaultGraphicMemoryManager, DefaultGraphicService, DefaultGraphicUtil, DefaultGroupAttribute, DefaultGroupBackgroundRenderContribution, DefaultImageAttribute, DefaultImageRenderContribution, DefaultLayerService, DefaultLayout, DefaultLineAllocate, DefaultLineAttribute, DefaultMat4Allocate, DefaultMatrixAllocate, DefaultMorphingAnimateConfig, DefaultPathAllocate, DefaultPathAttribute, DefaultPickService, DefaultPickStyle, DefaultPolygonAttribute, DefaultRect3dAttribute, DefaultRectAllocate, DefaultRectAttribute, DefaultRectRenderContribution, DefaultRenderService, DefaultRichTextAttribute, DefaultRichTextIconAttribute, DefaultStateAnimateConfig, DefaultStrokeStyle, DefaultStyle, DefaultSymbolAllocate, DefaultSymbolAttribute, DefaultSymbolClipRangeStrokeRenderContribution, DefaultSymbolRenderContribution, DefaultTextAllocate, DefaultTextAttribute, DefaultTextMeasureContribution, DefaultTextStyle, DefaultTicker, DefaultTimeline, DefaultTransform, DefaultTransformUtil, DefaultWindow, Direction$1 as Direction, DirectionalLight, DragNDrop, DrawContribution, DrawItemInterceptor, DynamicLayerHandlerContribution, Easing, Edge, EditModule, EmptyContext2d, EnvContribution, EventManager, EventSystem, EventTarget, FORMAT_ALL_TEXT_COMMAND, FORMAT_ELEMENT_COMMAND, FORMAT_TEXT_COMMAND, Factory, FadeInPlus, FederatedEvent, FederatedMouseEvent, FederatedPointerEvent, FederatedWheelEvent, FlexLayoutPlugin, Fragment, GLYPH_NUMBER_TYPE, GRAPHIC_UPDATE_TAG_KEY, GROUP_NUMBER_TYPE, Generator, Gesture, GifImage, GlobalPickerService, Glyph, GlyphRender, Graphic, GraphicAnimate, GraphicCreator$1 as GraphicCreator, GraphicPicker, GraphicRender, GraphicService, GraphicUtil, Group, GroupFadeIn, GroupFadeOut, GroupRender, GroupRenderContribution, GroupUpdateAABBBoundsMode, HtmlAttributePlugin, IContainPointMode, IMAGE_NUMBER_TYPE, Image$1 as Image, ImageRender, ImageRenderContribution, IncreaseCount, IncrementalDrawContribution, InputText, InteractiveDrawItemInterceptorContribution, InteractivePickItemInterceptorContribution, InteractiveSubRenderContribution, LINE_NUMBER_TYPE, Layer, LayerService, Line$1 as Line, LineRender, Linear, LinearClosed, Lottie, ManualTickHandler, ManualTicker, Mat4Allocate, MathArcPicker, MathAreaPicker, MathCirclePicker, MathGlyphPicker, MathImagePicker, MathLinePicker, MathPathPicker, MathPickerContribution, MathPolygonPicker, MathRectPicker, MathSymbolPicker, MathTextPicker, MatrixAllocate, MeasureModeEnum, Meteor, MonotoneX, MonotoneY, MorphingPath, MotionPath, MultiToOneMorphingPath, NOWORK_ANIMATE_ATTR, Node, OrthoCamera, PATH_NUMBER_TYPE, POLYGON_NUMBER_TYPE, PURE_STYLE_KEY, PYRAMID3D_NUMBER_TYPE, Path, PathRender, PathRenderContribution, PickItemInterceptor, PickServiceInterceptor, PickerService, PluginService, Polygon, PolygonRender, PolygonRenderContribution, Pyramid3d, Pyramid3dRender, RAFTickHandler, REACT_TO_CANOPUS_EVENTS, REACT_TO_CANOPUS_EVENTS_LIST, RECT3D_NUMBER_TYPE, RECT_NUMBER_TYPE, RICHTEXT_NUMBER_TYPE, RafBasedSTO, ReactAttributePlugin, Rect, Rect3DRender, Rect3d, RectRender, RectRenderContribution, ReflectSegContext, RenderSelector, RenderService, ResourceLoader, RichText, RichTextEditPlugin, RichTextRender, RotateBySphereAnimate, SVG_ATTRIBUTE_MAP, SVG_ATTRIBUTE_MAP_KEYS, SVG_PARSE_ATTRIBUTE_MAP, SVG_PARSE_ATTRIBUTE_MAP_KEYS, SYMBOL_NUMBER_TYPE, SegContext, ShadowPickServiceInterceptorContribution, ShadowRoot, ShadowRootDrawItemInterceptorContribution, ShadowRootPickItemInterceptorContribution, SplitRectAfterRenderContribution, SplitRectBeforeRenderContribution, Stage, StaticLayerHandlerContribution, Step$1 as Step, StreamLight, SubAnimate, Symbol$1 as Symbol, SymbolRender, SymbolRenderContribution, TEXT_NUMBER_TYPE, TagPointsUpdate, Text, TextDirection, TextMeasureContribution, TextRender, TextRenderContribution, Theme, TimeOutTickHandler, TransformUtil, UpdateTag, VArc, VArc3d, VArea, VCircle, VGlobal, VGlyph, VGroup, VImage, VLine, VPath, VPolygon, VPyramid3d, VRect, VRect3d, VRichText, VSymbol, VText, VWindow, ViewTransform3dPlugin, VirtualLayerHandlerContribution, WILDCARD, WindowHandlerContribution, WrapText, XMLParser, _calculateLineHeight, _interpolateColor, _registerArc, addArcToBezierPath$1 as addArcToBezierPath, addAttributeToPrototype, alignBezierCurves, alignSubpath, alternatingWave, application, applyTransformOnBezierCurves, arc3dCanvasPickModule, arc3dModule, arcCanvasPickModule, arcMathPickModule, arcModule, areaCanvasPickModule, areaMathPickModule, areaModule, bezier, bezierCurversToPath, binarySplitPolygon, bindContributionProvider, bindContributionProviderNoSingletonScope, boundStroke, browserEnvModule, builtInSymbolStrMap, builtinSymbols, builtinSymbolsMap, calcLineCache, calculateArcCornerRadius, calculateLineHeight, canvasAllocate, centerToCorner, centroidOfSubpath, circleBounds, circleCanvasPickModule, circleMathPickModule, circleModule, clock, cloneGraphic, colorEqual, colorStringInterpolationToStr, columnCenterToEdge, columnEdgeToCenter, columnLeftToRight, columnRightToLeft, container, cornerTangents, cornerToCenter, createArc, createArc3d, createArea, createCircle, createColor, createConicalGradient, createGifImage, createGlyph, createGroup, createImage, createImageElement$1 as createImageElement, createLine, createLottie, createMat4, createPath, createPolygon, createPyramid3d, createRect, createRect3d, createRectPath, createRichText, createShadowRoot, createStage, createSymbol, createText, createWrapText, cubicCalc, cubicLength, cubicPointAt, cubicSubdivide, decodeReactDom, defaultArcAllocate, defaultArcBackgroundRenderContribution, defaultArcRenderContribution, defaultArcTextureRenderContribution, defaultAreaAllocate, defaultBaseBackgroundRenderContribution, defaultBaseTextureRenderContribution, defaultCircleAllocate, defaultCircleBackgroundRenderContribution, defaultCircleRenderContribution, defaultCircleTextureRenderContribution, defaultGraphicMemoryManager, defaultGroupBackgroundRenderContribution, defaultImageBackgroundRenderContribution, defaultImageRenderContribution, defaultLineAllocate, defaultPathAllocate, defaultRectAllocate, defaultRectBackgroundRenderContribution, defaultRectRenderContribution, defaultRectTextureRenderContribution, defaultSymbolAllocate, defaultSymbolBackgroundRenderContribution, defaultSymbolClipRangeStrokeRenderContribution, defaultSymbolRenderContribution, defaultSymbolTextureRenderContribution, defaultTextAllocate, defaultTicker, defaultTimeline, diagonalCenterToEdge, diagonalTopLeftToBottomRight, drawArc, drawArcPath$1 as drawArcPath, drawAreaSegments, drawIncrementalAreaSegments, drawIncrementalSegments, drawSegments, enumCommandMap, feishuEnvModule, fillVisible, findBestMorphingRotation, findConfigIndexByCursorIdx, findCursorIdxByConfigIndex, findNextGraphic, flatten_simplify, foreach, foreachAsync, genBasisSegments, genBasisTypeSegments, genLinearClosedSegments, genLinearClosedTypeSegments, genLinearSegments, genLinearTypeSegments, genMonotoneXSegments, genMonotoneXTypeSegments, genMonotoneYSegments, genMonotoneYTypeSegments, genNumberType, genStepSegments, genStepTypeSegments, generatorPathEasingFunc, getAttributeFromDefaultAttrList, getConicGradientAt, getCurrentEnv, getDefaultCharacterConfig, getExtraModelMatrix, getModelMatrix, getRichTextBounds, getScaledStroke, getTextBounds, getTheme, getThemeFromGroup, gifImageCanvasPickModule, gifImageModule, globalTheme, glyphCanvasPickModule, glyphMathPickModule, glyphModule, graphicCreator, graphicService, graphicUtil, harmonyEnvModule, identityMat4, imageCanvasPickModule, imageMathPickModule, imageModule, incrementalAddTo, initAllEnv, initBrowserEnv, initFeishuEnv, initHarmonyEnv, initLynxEnv, initNodeEnv, initTTEnv, initTaroEnv, initWxEnv, inject, injectable, interpolateColor, interpolateGradientConicalColor, interpolateGradientLinearColor, interpolateGradientRadialColor, interpolatePureColorArray, intersect, isBrowserEnv, isNodeEnv, isSvg, isTransformKey, isXML, jsx, layerService, lineCanvasPickModule, lineMathPickModule, lineModule, loadAllEnv, loadAllModule, loadBrowserEnv, loadFeishuEnv, loadHarmonyEnv, loadLynxEnv, loadNodeEnv, loadTTEnv, loadTaroEnv, loadWxEnv, lookAt, lottieCanvasPickModule, lottieModule, lynxEnvModule, mat3Tomat4, mat4Allocate, matrixAllocate, morphPath, multiInject, multiToOneMorph, multiplyMat4Mat3, multiplyMat4Mat4, named, newThemeObj, nodeEnvModule, oneToMultiMorph, ortho, parsePadding, parseStroke, parseSvgPath, particleEffect, pathCanvasPickModule, pathMathPickModule, pathModule, pathToBezierCurves, point$3 as point, pointEqual, pointInterpolation, pointInterpolationHighPerformance, pointsEqual, pointsInterpolation, polygonCanvasPickModule, polygonMathPickModule, polygonModule, preLoadAllModule, pulseWave, pyramid3dCanvasPickModule, pyramid3dModule, quadCalc, quadLength, quadPointAt, rafBasedSto, randomOpacity, rect3dCanvasPickModule, rect3dModule, rectCanvasPickModule, rectFillVisible, rectMathPickModule, rectModule, rectStrokeVisible, recursiveCallBinarySplit, registerArc, registerArc3d, registerArc3dGraphic, registerArcGraphic, registerArea, registerAreaGraphic, registerCircle, registerCircleGraphic, registerDirectionalLight, registerFlexLayoutPlugin, registerGlyph, registerGlyphGraphic, registerGroup, registerGroupGraphic, registerHtmlAttributePlugin, registerImage, registerImageGraphic, registerLine, registerLineGraphic, registerOrthoCamera, registerPath, registerPathGraphic, registerPolygon, registerPolygonGraphic, registerPyramid3d, registerPyramid3dGraphic, registerReactAttributePlugin, registerRect, registerRect3d, registerRect3dGraphic, registerRectGraphic, registerRichtext, registerRichtextGraphic, registerShadowRoot, registerShadowRootGraphic, registerSymbol, registerSymbolGraphic, registerText, registerTextGraphic, registerViewTransform3dPlugin, registerWrapText, registerWrapTextGraphic, renderCommandList, rewriteProto, richTextMathPickModule, richtextCanvasPickModule, richtextModule, rippleEffect, rotateX, rotateY, rotateZ, rotationScan, roughModule, rowBottomToTop, rowCenterToEdge, rowEdgeToCenter, rowTopToBottom, runFill, runStroke, scaleMat4, segments, shouldUseMat4, snakeWave, snapLength, spiralEffect, splitArc, splitArea, splitCircle, splitGraphic, splitLine, splitPath, splitPolygon, splitRect, splitToGrids, strCommandMap, strokeVisible, symbolCanvasPickModule, symbolMathPickModule, symbolModule, taroEnvModule, textAttributesToStyle, textCanvasPickModule, textDrawOffsetX, textDrawOffsetY, textLayoutOffsetY, textMathPickModule, textModule, transformKeys, transformMat4, transformUtil, translate, ttEnvModule, version, verticalLayout, vglobal, waitForAllSubLayers, wrapCanvas, wrapContext, wxEnvModule, xul };