{"version":3,"sources":["webpack:///./node_modules/zrender/lib/graphic/helper/subPixelOptimize.js","webpack:///./node_modules/zrender/lib/graphic/shape/Line.js","webpack:///./node_modules/zrender/lib/graphic/helper/image.js","webpack:///./node_modules/zrender/lib/graphic/TSpan.js","webpack:///./node_modules/zrender/lib/graphic/shape/Circle.js","webpack:///./node_modules/zrender/lib/graphic/helper/parseText.js","webpack:///./node_modules/zrender/lib/graphic/shape/Ellipse.js","webpack:///./node_modules/zrender/lib/graphic/shape/Polygon.js","webpack:///./node_modules/zrender/lib/graphic/shape/Polyline.js","webpack:///./node_modules/zrender/lib/graphic/IncrementalDisplayable.js","webpack:///./node_modules/zrender/lib/graphic/LinearGradient.js","webpack:///./node_modules/zrender/lib/graphic/RadialGradient.js","webpack:///./node_modules/zrender/lib/graphic/shape/Arc.js","webpack:///./node_modules/zrender/lib/graphic/Gradient.js","webpack:///./node_modules/zrender/lib/graphic/helper/smoothSpline.js","webpack:///./node_modules/zrender/lib/graphic/helper/poly.js","webpack:///./node_modules/zrender/lib/graphic/helper/smoothBezier.js","webpack:///./node_modules/zrender/lib/graphic/helper/roundSector.js","webpack:///./node_modules/zrender/lib/graphic/shape/Sector.js","webpack:///./node_modules/zrender/lib/graphic/Path.js","webpack:///./node_modules/zrender/lib/graphic/shape/Ring.js","webpack:///./node_modules/zrender/lib/graphic/shape/BezierCurve.js","webpack:///./node_modules/zrender/lib/graphic/helper/dashStyle.js","webpack:///./node_modules/zrender/lib/graphic/CompoundPath.js","webpack:///./node_modules/zrender/lib/dom/HandlerProxy.js","webpack:///./node_modules/zrender/lib/mixin/Draggable.js","webpack:///./node_modules/zrender/lib/graphic/Group.js","webpack:///./node_modules/zrender/lib/graphic/Displayable.js","webpack:///./node_modules/zrender/lib/graphic/shape/Rect.js","webpack:///./node_modules/zrender/lib/graphic/helper/roundRect.js","webpack:///./node_modules/zrender/lib/graphic/Image.js","webpack:///./node_modules/zrender/lib/graphic/Text.js"],"names":["round","Math","subPixelOptimizeLine","outputShape","inputShape","style","x1","x2","y1","y2","lineWidth","subPixelOptimize","subPixelOptimizeRect","originX","x","originY","y","originWidth","width","originHeight","height","max","position","positiveOrNegative","doubledPosition","subPixelOptimizeOutputShape","LineShape","this","percent","Line","_super","opts","call","__extends","prototype","getDefaultStyle","stroke","fill","getDefaultShape","buildPath","ctx","shape","optimizedShape","moveTo","lineTo","pointAt","p","Path","type","globalImageCache","LRU","findExistImage","newImageOrSrc","cachedImgObj","get","image","createOrUpdateImage","hostEl","onload","cbPayload","__zrImageSrc","pendingWrap","cb","isImageReady","pending","push","Image","onerror","imageOnLoad","put","__cachedImgObj","src","i","length","dirty","DEFAULT_TSPAN_STYLE","defaults","strokeFirst","font","DEFAULT_FONT","textAlign","textBaseline","miterLimit","DEFAULT_PATH_STYLE","TSpan","apply","arguments","hasStroke","hasFill","createStyle","obj","createObject","setBoundingRect","rect","_rect","getBoundingRect","text","w","initDefaultProps","dirtyRectTolerance","Displayable","CircleShape","cx","cy","r","Circle","inBundle","arc","PI","STYLE_REG","truncateText","containerWidth","ellipsis","options","textLines","split","prepareTruncateOptions","len","truncateSingleLine","join","preparedOpts","extend","retrieve2","maxIterations","minChar","cnCharWidth","getWidth","ascCharWidth","placeholder","contentWidth","ellipsisWidth","textLine","j","subLength","estimateLength","floor","substr","charCode","charCodeAt","parsePlainText","lines","overflow","padding","truncate","calculatedLineHeight","getLineHeight","lineHeight","truncateLineOverflow","lineOverflow","contentHeight","wrapText","lineCount","slice","outerHeight","outerWidth","truncateMinChar","maxWidth","RichTextToken","RichTextLine","tokens","RichTextContentBlock","parseRichText","contentBlock","result","topWidth","topHeight","wrapInfo","accumWidth","breakAll","lastIndex","exec","matchedIndex","index","pushTokens","substring","pendingList","calculatedHeight","calculatedWidth","stlPadding","truncateLine","finishLine","line","outer","tokenStyle","token","styleName","rich","textPadding","paddingH","tokenHeight","innerHeight","retrieve3","align","verticalAlign","styleTokenWidth","tokenWidthNotSpecified","charAt","percentWidth","textBackgroundColor","backgroundColor","bgImg","imageHelper","remainTruncWidth","parseInt","block","str","strLines","linesWidths","isEmptyStr","newLine","tokenPadding","tokenPaddingH","outerWidth_1","parsePercent","res","isLineHolder","tokensLen","breakCharMap","reduce","ch","isWordBreakChar","code","isLatin","isBreakAll","lastAccumWidth","currentWord","currentWordWidth","chWidth","inWord","EllipseShape","rx","ry","Ellipse","k","a","b","ox","oy","bezierCurveTo","closePath","PolygonShape","points","smooth","smoothConstraint","Polygon","polyHelper","PolylineShape","Polyline","m","IncrementalDisplayable","_this","notClear","incremental","_displayables","_temporaryDisplayables","_cursor","traverse","context","useStyle","getCursor","innerAfterBrush","clearDisplaybles","markRedraw","clearTemporalDisplayables","addDisplayable","displayable","notPersistent","addDisplayables","displayables","getDisplayables","getTemporalDisplayables","eachPendingDisplayable","update","updateTransform","parent","BoundingRect","Infinity","childRect","clone","needLocalTransform","applyTransform","getLocalTransform","union","contain","localPos","transformCoordToLocal","Displayble","LinearGradient","colorStops","globalCoord","global","Gradient","RadialGradient","ArcShape","startAngle","endAngle","clockwise","Arc","unitX","cos","unitY","sin","addColorStop","offset","color","interpolate","p0","p1","p2","p3","t","t2","t3","v0","v1","controlPoints","isLoop","constraint","prevPoint","nextPoint","min","cps","v","v2","v2Min","v2Max","point","v2Clone","v2Sub","v2Scale","d0","v2Distance","d1","sum","cp0","v2Add","cp1","shift","smoothBezier","cp2","ret","distance","segs","pos","idx","w2","w3","smoothSpline","l","PI2","mathSin","mathCos","mathACos","acos","mathATan2","atan2","mathAbs","abs","mathSqrt","sqrt","mathMax","mathMin","e","computeCornerTangents","x0","y0","radius","cr","x01","y01","lo","x11","y11","x10","y10","x00","y00","dx","dy","d2","s","d","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","innerRadius","r0","hasRadius","tmp","tmpAngles","normalizeArcAngles","cornerRadius","innerCornerRadius","halfRd","icr","cr0","cr1","xrs","yrs","xire","yire","xre","yre","xirs","yirs","it_1","x3","y3","x32","y32","intersect","ct0","ct1","SectorShape","Sector","roundSectorHelper","isZeroArea","strokePercent","fillOpacity","strokeOpacity","lineDashOffset","lineCap","strokeNoScale","DEFAULT_COMMON_STYLE","DEFAULT_PATH_ANIMATION_PROPS","DEFAULT_COMMON_ANIMATION_PROPS","pathCopyParams","pathProto","decal","decalEl","_decalEl","silent","decalElStyle","key","shadowColor","__dirty","Element","REDARAW_BIT","getDecalElement","_init","props","keysArr","keys","defaultStyle","value","attrKV","canBeInsideText","getInsideTextFill","pathFill","isString","fillLum","lum","DARK_LABEL_COLOR","LIGHTER_LABEL_COLOR","LIGHT_LABEL_COLOR","getInsideTextStroke","textFill","zr","__zr","isDarkMode","DARK_MODE_THRESHOLD","shapeCfg","pathUpdated","SHAPE_CHANGED_BIT","createPathProxy","path","PathProxy","needsUpdateRect","firstInvoke","beginPath","rectWithStroke","_rectWithStroke","copy","lineScale","getLineScale","strokeContainThreshold","pathProxy","pathContain","dirtyShape","dirtyStyle","animateShape","loop","animate","updateDuringAnimation","targetKey","setShape","keyOrObj","shapeChanged","_innerSaveToNormal","toState","normalState","_normalState","_applyStateObj","stateName","state","keepCurrentStates","transition","animationCfg","targetShape","needsRestoreToNormal","targetShapePrimaryProps","shapeKeys","_transitionState","_mergeStates","states","mergedShape","mergedState","_mergeStyle","getAnimationStyleProps","defaultProps","Sub","init","segmentIgnoreThreshold","autoBatch","STYLE_CHANGED_BIT","RingShape","Ring","out","BezierCurveShape","cpx1","cpy1","someVectorAt","isTangent","cpx2","cpy2","cubicDerivativeAt","cubicAt","quadraticDerivativeAt","quadraticAt","BezierCurve","quadraticSubdivide","quadraticCurveTo","cubicSubdivide","tangentAt","vec2","normalizeLineDash","lineType","isNumber","isArray","CompoundPath","_updatePathDirty","paths","dirtyPath","beforeBrush","scale","getGlobalScale","setScale","afterBrush","mouseHandlerNames","pointerEventNameMap","globalEventSupported","env","domSupported","localNativeListenerNames","pointerdown","pointerup","pointermove","pointerout","mouse","touch","pointer","zrUtil","name","nm","replace","hasOwnProperty","globalNativeListenerNames","wheelEventSupported","isPointerFromTouch","event","pointerType","markTouch","zrByTouch","isLocalEl","instance","el","elTmp","isLocal","nodeType","domBelongToZr","painterRoot","parentNode","FakeGlobalEvent","stopPropagation","stopImmediatePropagation","preventDefault","target","currentTarget","dom","clientX","clientY","localDOMHandlers","mousedown","normalizeEvent","__mayPointerCapture","zrX","zrY","trigger","mousemove","downPoint","__togglePointerCapture","mouseup","mouseout","toElement","relatedTarget","__pointerCapturing","zrEventControl","wheel","mousewheel","touchstart","__lastTouchMoment","Date","handler","processGesture","touchmove","touchend","click","globalDOMHandlers","pointerCaptureReleasing","mountLocalDOMEventListeners","scope","domHandlers","pointerEventsSupported","nativeEventName","mountSingleDOMEventListener","touchEventsSupported","touching","touchTimer","clearTimeout","setTimeout","setTouchTimer","getNativeEvent","mountGlobalDOMEventListeners","mount","normalizeGlobalEvent","capture","listener","opt","mounted","listenerOpts","addEventListener","domTarget","unmountDOMEventListeners","removeEventListener","DOMHandlerScope","HandlerDomProxy","_localHandlerScope","_globalHandlerScope","document","dispose","setCursor","cursorStyle","cursor","isPointerCapturing","globalHandlerScope","Eventful","Param","topTarget","Draggable","on","_dragStart","_drag","_dragEnd","draggingTarget","draggable","_draggingTarget","dragging","_x","offsetX","_y","offsetY","dispatchToElement","drift","dropTarget","findHover","lastDropTarget","_dropTarget","Group","isGroup","_children","attr","childrenRef","children","childAt","childOfName","childCount","add","child","_doAdd","__hostTarget","addBefore","nextSibling","indexOf","splice","replaceAt","old","removeSelfFromZr","remove","addSelfToZr","refresh","removeAll","eachChild","stopped","includeChildren","tmpRect","tmpMat","ignore","invisible","transform","STYLE_MAGIC_KEY","random","shadowBlur","shadowOffsetX","shadowOffsetY","opacity","blend","PRIMARY_STATES_KEYS","dispProto","innerBeforeBrush","shouldBePainted","viewWidth","viewHeight","considerClipPath","considerAncestors","culling","viewRect","isDisplayableCulled","__clipPaths","parent_1","rectContain","coord","getPaintRect","_paintRect","elRect","shadowSize","tolerance","isZero","ceil","setPrevPaintRect","paintRect","_prevPaintRect","getPrevPaintRect","animateStyle","setStyle","styleChanged","styleUpdated","__inHover","__hoverStyle","isStyleObject","_savePrimaryToNormal","targetStyle","sourceStyle","changedKeys","targetKeys","mergedStyle","z","z2","zlevel","rectHover","RectShape","Rect","r1","r2","r3","r4","total","Array","roundRectHelper","DEFAULT_IMAGE_STYLE","DEFAULT_IMAGE_ANIMATION_PROPS","sx","sy","sWidth","sHeight","ZRImage","_getSize","dim","size","source","imageSource","__image","otherDim","otherDimSize","getHeight","DEFAULT_RICH_TEXT_COLOR","DEFAULT_TEXT_ANIMATION_PROPS","fontSize","textShadowColor","textShadowBlur","textShadowOffsetX","textShadowOffsetY","borderColor","borderWidth","borderRadius","ZRText","_defaultStyle","_updateSubTexts","attachedTransform","getComputedTransform","updateInnerText","_childCursor","normalizeStyle","each","_updateRichTexts","_updatePlainTexts","setDefaultTextStyle","defaultTextStyle","setTextContent","textContent","Error","sourceRich","targetRich","_mergeRich","richNames","richName","_getOrCreateChild","Ctor","textFont","getStyleText","needDrawBg","needDrawBackground","bgColorDrawn","baseX","baseY","textX","textY","adjustTextY","boxX","adjustTextX","boxY","_renderBackground","getTextXForPadding","defaultLineWidth","useDefaultFill","textStroke","getStroke","autoStroke","hasShadow","fixedBoundingRect","subElStyle","lineDash","xLeft","lineTop","xRight","tokenCount","remainedWidth","leftIndex","lineXLeft","lineXRight","rightIndex","_placeToken","parentBgColorDrawn","textWidth","textHeight","topStyle","rectEl","imgEl","rectStyle","textBorderWidth","textBorderColor","isPlainBg","textBorderRadius","self","rectShape","imgStyle","borderDash","borderDashOffset","commonStyle","makeFont","fontFamily","fontWeight","isNaN","fontStyle","trim","VALID_TEXT_ALIGN","left","right","center","VALID_TEXT_VERTICAL_ALIGN","top","bottom","middle","normalizeCssArray"],"mappings":"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","file":"vendors~app~fc7075c7.js","sourcesContent":["var round = Math.round;\nexport function subPixelOptimizeLine(outputShape, inputShape, style) {\n if (!inputShape) {\n return;\n }\n var x1 = inputShape.x1;\n var x2 = inputShape.x2;\n var y1 = inputShape.y1;\n var y2 = inputShape.y2;\n outputShape.x1 = x1;\n outputShape.x2 = x2;\n outputShape.y1 = y1;\n outputShape.y2 = y2;\n var lineWidth = style && style.lineWidth;\n if (!lineWidth) {\n return outputShape;\n }\n if (round(x1 * 2) === round(x2 * 2)) {\n outputShape.x1 = outputShape.x2 = subPixelOptimize(x1, lineWidth, true);\n }\n if (round(y1 * 2) === round(y2 * 2)) {\n outputShape.y1 = outputShape.y2 = subPixelOptimize(y1, lineWidth, true);\n }\n return outputShape;\n}\nexport function subPixelOptimizeRect(outputShape, inputShape, style) {\n if (!inputShape) {\n return;\n }\n var originX = inputShape.x;\n var originY = inputShape.y;\n var originWidth = inputShape.width;\n var originHeight = inputShape.height;\n outputShape.x = originX;\n outputShape.y = originY;\n outputShape.width = originWidth;\n outputShape.height = originHeight;\n var lineWidth = style && style.lineWidth;\n if (!lineWidth) {\n return outputShape;\n }\n outputShape.x = subPixelOptimize(originX, lineWidth, true);\n outputShape.y = subPixelOptimize(originY, lineWidth, true);\n outputShape.width = Math.max(subPixelOptimize(originX + originWidth, lineWidth, false) - outputShape.x, originWidth === 0 ? 0 : 1);\n outputShape.height = Math.max(subPixelOptimize(originY + originHeight, lineWidth, false) - outputShape.y, originHeight === 0 ? 0 : 1);\n return outputShape;\n}\nexport function subPixelOptimize(position, lineWidth, positiveOrNegative) {\n if (!lineWidth) {\n return position;\n }\n var doubledPosition = round(position * 2);\n return (doubledPosition + round(lineWidth)) % 2 === 0\n ? doubledPosition / 2\n : (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2;\n}\n","import { __extends } from \"tslib\";\nimport Path from '../Path';\nimport { subPixelOptimizeLine } from '../helper/subPixelOptimize';\nvar subPixelOptimizeOutputShape = {};\nvar LineShape = (function () {\n function LineShape() {\n this.x1 = 0;\n this.y1 = 0;\n this.x2 = 0;\n this.y2 = 0;\n this.percent = 1;\n }\n return LineShape;\n}());\nexport { LineShape };\nvar Line = (function (_super) {\n __extends(Line, _super);\n function Line(opts) {\n return _super.call(this, opts) || this;\n }\n Line.prototype.getDefaultStyle = function () {\n return {\n stroke: '#000',\n fill: null\n };\n };\n Line.prototype.getDefaultShape = function () {\n return new LineShape();\n };\n Line.prototype.buildPath = function (ctx, shape) {\n var x1;\n var y1;\n var x2;\n var y2;\n if (this.subPixelOptimize) {\n var optimizedShape = subPixelOptimizeLine(subPixelOptimizeOutputShape, shape, this.style);\n x1 = optimizedShape.x1;\n y1 = optimizedShape.y1;\n x2 = optimizedShape.x2;\n y2 = optimizedShape.y2;\n }\n else {\n x1 = shape.x1;\n y1 = shape.y1;\n x2 = shape.x2;\n y2 = shape.y2;\n }\n var percent = shape.percent;\n if (percent === 0) {\n return;\n }\n ctx.moveTo(x1, y1);\n if (percent < 1) {\n x2 = x1 * (1 - percent) + x2 * percent;\n y2 = y1 * (1 - percent) + y2 * percent;\n }\n ctx.lineTo(x2, y2);\n };\n Line.prototype.pointAt = function (p) {\n var shape = this.shape;\n return [\n shape.x1 * (1 - p) + shape.x2 * p,\n shape.y1 * (1 - p) + shape.y2 * p\n ];\n };\n return Line;\n}(Path));\nLine.prototype.type = 'line';\nexport default Line;\n","import LRU from '../../core/LRU';\nvar globalImageCache = new LRU(50);\nexport function findExistImage(newImageOrSrc) {\n if (typeof newImageOrSrc === 'string') {\n var cachedImgObj = globalImageCache.get(newImageOrSrc);\n return cachedImgObj && cachedImgObj.image;\n }\n else {\n return newImageOrSrc;\n }\n}\nexport function createOrUpdateImage(newImageOrSrc, image, hostEl, onload, cbPayload) {\n if (!newImageOrSrc) {\n return image;\n }\n else if (typeof newImageOrSrc === 'string') {\n if ((image && image.__zrImageSrc === newImageOrSrc) || !hostEl) {\n return image;\n }\n var cachedImgObj = globalImageCache.get(newImageOrSrc);\n var pendingWrap = { hostEl: hostEl, cb: onload, cbPayload: cbPayload };\n if (cachedImgObj) {\n image = cachedImgObj.image;\n !isImageReady(image) && cachedImgObj.pending.push(pendingWrap);\n }\n else {\n image = new Image();\n image.onload = image.onerror = imageOnLoad;\n globalImageCache.put(newImageOrSrc, image.__cachedImgObj = {\n image: image,\n pending: [pendingWrap]\n });\n image.src = image.__zrImageSrc = newImageOrSrc;\n }\n return image;\n }\n else {\n return newImageOrSrc;\n }\n}\nfunction imageOnLoad() {\n var cachedImgObj = this.__cachedImgObj;\n this.onload = this.onerror = this.__cachedImgObj = null;\n for (var i = 0; i < cachedImgObj.pending.length; i++) {\n var pendingWrap = cachedImgObj.pending[i];\n var cb = pendingWrap.cb;\n cb && cb(this, pendingWrap.cbPayload);\n pendingWrap.hostEl.dirty();\n }\n cachedImgObj.pending.length = 0;\n}\nexport function isImageReady(image) {\n return image && image.width && image.height;\n}\n","import { __extends } from \"tslib\";\nimport Displayable from './Displayable';\nimport { getBoundingRect, DEFAULT_FONT } from '../contain/text';\nimport { DEFAULT_PATH_STYLE } from './Path';\nimport { createObject, defaults } from '../core/util';\nexport var DEFAULT_TSPAN_STYLE = defaults({\n strokeFirst: true,\n font: DEFAULT_FONT,\n x: 0,\n y: 0,\n textAlign: 'left',\n textBaseline: 'top',\n miterLimit: 2\n}, DEFAULT_PATH_STYLE);\nvar TSpan = (function (_super) {\n __extends(TSpan, _super);\n function TSpan() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TSpan.prototype.hasStroke = function () {\n var style = this.style;\n var stroke = style.stroke;\n return stroke != null && stroke !== 'none' && style.lineWidth > 0;\n };\n TSpan.prototype.hasFill = function () {\n var style = this.style;\n var fill = style.fill;\n return fill != null && fill !== 'none';\n };\n TSpan.prototype.createStyle = function (obj) {\n return createObject(DEFAULT_TSPAN_STYLE, obj);\n };\n TSpan.prototype.setBoundingRect = function (rect) {\n this._rect = rect;\n };\n TSpan.prototype.getBoundingRect = function () {\n var style = this.style;\n if (!this._rect) {\n var text = style.text;\n text != null ? (text += '') : (text = '');\n var rect = getBoundingRect(text, style.font, style.textAlign, style.textBaseline);\n rect.x += style.x || 0;\n rect.y += style.y || 0;\n if (this.hasStroke()) {\n var w = style.lineWidth;\n rect.x -= w / 2;\n rect.y -= w / 2;\n rect.width += w;\n rect.height += w;\n }\n this._rect = rect;\n }\n return this._rect;\n };\n TSpan.initDefaultProps = (function () {\n var tspanProto = TSpan.prototype;\n tspanProto.dirtyRectTolerance = 10;\n })();\n return TSpan;\n}(Displayable));\nTSpan.prototype.type = 'tspan';\nexport default TSpan;\n","import { __extends } from \"tslib\";\nimport Path from '../Path';\nvar CircleShape = (function () {\n function CircleShape() {\n this.cx = 0;\n this.cy = 0;\n this.r = 0;\n }\n return CircleShape;\n}());\nexport { CircleShape };\nvar Circle = (function (_super) {\n __extends(Circle, _super);\n function Circle(opts) {\n return _super.call(this, opts) || this;\n }\n Circle.prototype.getDefaultShape = function () {\n return new CircleShape();\n };\n Circle.prototype.buildPath = function (ctx, shape, inBundle) {\n if (inBundle) {\n ctx.moveTo(shape.cx + shape.r, shape.cy);\n }\n ctx.arc(shape.cx, shape.cy, shape.r, 0, Math.PI * 2);\n };\n return Circle;\n}(Path));\n;\nCircle.prototype.type = 'circle';\nexport default Circle;\n","import * as imageHelper from '../helper/image';\nimport { extend, retrieve2, retrieve3, reduce } from '../../core/util';\nimport { getLineHeight, getWidth, parsePercent } from '../../contain/text';\nvar STYLE_REG = /\\{([a-zA-Z0-9_]+)\\|([^}]*)\\}/g;\nexport function truncateText(text, containerWidth, font, ellipsis, options) {\n if (!containerWidth) {\n return '';\n }\n var textLines = (text + '').split('\\n');\n options = prepareTruncateOptions(containerWidth, font, ellipsis, options);\n for (var i = 0, len = textLines.length; i < len; i++) {\n textLines[i] = truncateSingleLine(textLines[i], options);\n }\n return textLines.join('\\n');\n}\nfunction prepareTruncateOptions(containerWidth, font, ellipsis, options) {\n options = options || {};\n var preparedOpts = extend({}, options);\n preparedOpts.font = font;\n ellipsis = retrieve2(ellipsis, '...');\n preparedOpts.maxIterations = retrieve2(options.maxIterations, 2);\n var minChar = preparedOpts.minChar = retrieve2(options.minChar, 0);\n preparedOpts.cnCharWidth = getWidth('国', font);\n var ascCharWidth = preparedOpts.ascCharWidth = getWidth('a', font);\n preparedOpts.placeholder = retrieve2(options.placeholder, '');\n var contentWidth = containerWidth = Math.max(0, containerWidth - 1);\n for (var i = 0; i < minChar && contentWidth >= ascCharWidth; i++) {\n contentWidth -= ascCharWidth;\n }\n var ellipsisWidth = getWidth(ellipsis, font);\n if (ellipsisWidth > contentWidth) {\n ellipsis = '';\n ellipsisWidth = 0;\n }\n contentWidth = containerWidth - ellipsisWidth;\n preparedOpts.ellipsis = ellipsis;\n preparedOpts.ellipsisWidth = ellipsisWidth;\n preparedOpts.contentWidth = contentWidth;\n preparedOpts.containerWidth = containerWidth;\n return preparedOpts;\n}\nfunction truncateSingleLine(textLine, options) {\n var containerWidth = options.containerWidth;\n var font = options.font;\n var contentWidth = options.contentWidth;\n if (!containerWidth) {\n return '';\n }\n var lineWidth = getWidth(textLine, font);\n if (lineWidth <= containerWidth) {\n return textLine;\n }\n for (var j = 0;; j++) {\n if (lineWidth <= contentWidth || j >= options.maxIterations) {\n textLine += options.ellipsis;\n break;\n }\n var subLength = j === 0\n ? estimateLength(textLine, contentWidth, options.ascCharWidth, options.cnCharWidth)\n : lineWidth > 0\n ? Math.floor(textLine.length * contentWidth / lineWidth)\n : 0;\n textLine = textLine.substr(0, subLength);\n lineWidth = getWidth(textLine, font);\n }\n if (textLine === '') {\n textLine = options.placeholder;\n }\n return textLine;\n}\nfunction estimateLength(text, contentWidth, ascCharWidth, cnCharWidth) {\n var width = 0;\n var i = 0;\n for (var len = text.length; i < len && width < contentWidth; i++) {\n var charCode = text.charCodeAt(i);\n width += (0 <= charCode && charCode <= 127) ? ascCharWidth : cnCharWidth;\n }\n return i;\n}\nexport function parsePlainText(text, style) {\n text != null && (text += '');\n var overflow = style.overflow;\n var padding = style.padding;\n var font = style.font;\n var truncate = overflow === 'truncate';\n var calculatedLineHeight = getLineHeight(font);\n var lineHeight = retrieve2(style.lineHeight, calculatedLineHeight);\n var truncateLineOverflow = style.lineOverflow === 'truncate';\n var width = style.width;\n var lines;\n if (width != null && overflow === 'break' || overflow === 'breakAll') {\n lines = text ? wrapText(text, style.font, width, overflow === 'breakAll', 0).lines : [];\n }\n else {\n lines = text ? text.split('\\n') : [];\n }\n var contentHeight = lines.length * lineHeight;\n var height = retrieve2(style.height, contentHeight);\n if (contentHeight > height && truncateLineOverflow) {\n var lineCount = Math.floor(height / lineHeight);\n lines = lines.slice(0, lineCount);\n }\n var outerHeight = height;\n var outerWidth = width;\n if (padding) {\n outerHeight += padding[0] + padding[2];\n if (outerWidth != null) {\n outerWidth += padding[1] + padding[3];\n }\n }\n if (text && truncate && outerWidth != null) {\n var options = prepareTruncateOptions(width, font, style.ellipsis, {\n minChar: style.truncateMinChar,\n placeholder: style.placeholder\n });\n for (var i = 0; i < lines.length; i++) {\n lines[i] = truncateSingleLine(lines[i], options);\n }\n }\n if (width == null) {\n var maxWidth = 0;\n for (var i = 0; i < lines.length; i++) {\n maxWidth = Math.max(getWidth(lines[i], font), maxWidth);\n }\n width = maxWidth;\n }\n return {\n lines: lines,\n height: height,\n outerHeight: outerHeight,\n lineHeight: lineHeight,\n calculatedLineHeight: calculatedLineHeight,\n contentHeight: contentHeight,\n width: width\n };\n}\nvar RichTextToken = (function () {\n function RichTextToken() {\n }\n return RichTextToken;\n}());\nvar RichTextLine = (function () {\n function RichTextLine(tokens) {\n this.tokens = [];\n if (tokens) {\n this.tokens = tokens;\n }\n }\n return RichTextLine;\n}());\nvar RichTextContentBlock = (function () {\n function RichTextContentBlock() {\n this.width = 0;\n this.height = 0;\n this.contentWidth = 0;\n this.contentHeight = 0;\n this.outerWidth = 0;\n this.outerHeight = 0;\n this.lines = [];\n }\n return RichTextContentBlock;\n}());\nexport { RichTextContentBlock };\nexport function parseRichText(text, style) {\n var contentBlock = new RichTextContentBlock();\n text != null && (text += '');\n if (!text) {\n return contentBlock;\n }\n var topWidth = style.width;\n var topHeight = style.height;\n var overflow = style.overflow;\n var wrapInfo = (overflow === 'break' || overflow === 'breakAll') && topWidth != null\n ? { width: topWidth, accumWidth: 0, breakAll: overflow === 'breakAll' }\n : null;\n var lastIndex = STYLE_REG.lastIndex = 0;\n var result;\n while ((result = STYLE_REG.exec(text)) != null) {\n var matchedIndex = result.index;\n if (matchedIndex > lastIndex) {\n pushTokens(contentBlock, text.substring(lastIndex, matchedIndex), style, wrapInfo);\n }\n pushTokens(contentBlock, result[2], style, wrapInfo, result[1]);\n lastIndex = STYLE_REG.lastIndex;\n }\n if (lastIndex < text.length) {\n pushTokens(contentBlock, text.substring(lastIndex, text.length), style, wrapInfo);\n }\n var pendingList = [];\n var calculatedHeight = 0;\n var calculatedWidth = 0;\n var stlPadding = style.padding;\n var truncate = overflow === 'truncate';\n var truncateLine = style.lineOverflow === 'truncate';\n function finishLine(line, lineWidth, lineHeight) {\n line.width = lineWidth;\n line.lineHeight = lineHeight;\n calculatedHeight += lineHeight;\n calculatedWidth = Math.max(calculatedWidth, lineWidth);\n }\n outer: for (var i = 0; i < contentBlock.lines.length; i++) {\n var line = contentBlock.lines[i];\n var lineHeight = 0;\n var lineWidth = 0;\n for (var j = 0; j < line.tokens.length; j++) {\n var token = line.tokens[j];\n var tokenStyle = token.styleName && style.rich[token.styleName] || {};\n var textPadding = token.textPadding = tokenStyle.padding;\n var paddingH = textPadding ? textPadding[1] + textPadding[3] : 0;\n var font = token.font = tokenStyle.font || style.font;\n token.contentHeight = getLineHeight(font);\n var tokenHeight = retrieve2(tokenStyle.height, token.contentHeight);\n token.innerHeight = tokenHeight;\n textPadding && (tokenHeight += textPadding[0] + textPadding[2]);\n token.height = tokenHeight;\n token.lineHeight = retrieve3(tokenStyle.lineHeight, style.lineHeight, tokenHeight);\n token.align = tokenStyle && tokenStyle.align || style.align;\n token.verticalAlign = tokenStyle && tokenStyle.verticalAlign || 'middle';\n if (truncateLine && topHeight != null && calculatedHeight + token.lineHeight > topHeight) {\n if (j > 0) {\n line.tokens = line.tokens.slice(0, j);\n finishLine(line, lineWidth, lineHeight);\n contentBlock.lines = contentBlock.lines.slice(0, i + 1);\n }\n else {\n contentBlock.lines = contentBlock.lines.slice(0, i);\n }\n break outer;\n }\n var styleTokenWidth = tokenStyle.width;\n var tokenWidthNotSpecified = styleTokenWidth == null || styleTokenWidth === 'auto';\n if (typeof styleTokenWidth === 'string' && styleTokenWidth.charAt(styleTokenWidth.length - 1) === '%') {\n token.percentWidth = styleTokenWidth;\n pendingList.push(token);\n token.contentWidth = getWidth(token.text, font);\n }\n else {\n if (tokenWidthNotSpecified) {\n var textBackgroundColor = tokenStyle.backgroundColor;\n var bgImg = textBackgroundColor && textBackgroundColor.image;\n if (bgImg) {\n bgImg = imageHelper.findExistImage(bgImg);\n if (imageHelper.isImageReady(bgImg)) {\n token.width = Math.max(token.width, bgImg.width * tokenHeight / bgImg.height);\n }\n }\n }\n var remainTruncWidth = truncate && topWidth != null\n ? topWidth - lineWidth : null;\n if (remainTruncWidth != null && remainTruncWidth < token.width) {\n if (!tokenWidthNotSpecified || remainTruncWidth < paddingH) {\n token.text = '';\n token.width = token.contentWidth = 0;\n }\n else {\n token.text = truncateText(token.text, remainTruncWidth - paddingH, font, style.ellipsis, { minChar: style.truncateMinChar });\n token.width = token.contentWidth = getWidth(token.text, font);\n }\n }\n else {\n token.contentWidth = getWidth(token.text, font);\n }\n }\n token.width += paddingH;\n lineWidth += token.width;\n tokenStyle && (lineHeight = Math.max(lineHeight, token.lineHeight));\n }\n finishLine(line, lineWidth, lineHeight);\n }\n contentBlock.outerWidth = contentBlock.width = retrieve2(topWidth, calculatedWidth);\n contentBlock.outerHeight = contentBlock.height = retrieve2(topHeight, calculatedHeight);\n contentBlock.contentHeight = calculatedHeight;\n contentBlock.contentWidth = calculatedWidth;\n if (stlPadding) {\n contentBlock.outerWidth += stlPadding[1] + stlPadding[3];\n contentBlock.outerHeight += stlPadding[0] + stlPadding[2];\n }\n for (var i = 0; i < pendingList.length; i++) {\n var token = pendingList[i];\n var percentWidth = token.percentWidth;\n token.width = parseInt(percentWidth, 10) / 100 * contentBlock.width;\n }\n return contentBlock;\n}\nfunction pushTokens(block, str, style, wrapInfo, styleName) {\n var isEmptyStr = str === '';\n var tokenStyle = styleName && style.rich[styleName] || {};\n var lines = block.lines;\n var font = tokenStyle.font || style.font;\n var newLine = false;\n var strLines;\n var linesWidths;\n if (wrapInfo) {\n var tokenPadding = tokenStyle.padding;\n var tokenPaddingH = tokenPadding ? tokenPadding[1] + tokenPadding[3] : 0;\n if (tokenStyle.width != null && tokenStyle.width !== 'auto') {\n var outerWidth_1 = parsePercent(tokenStyle.width, wrapInfo.width) + tokenPaddingH;\n if (lines.length > 0) {\n if (outerWidth_1 + wrapInfo.accumWidth > wrapInfo.width) {\n strLines = str.split('\\n');\n newLine = true;\n }\n }\n wrapInfo.accumWidth = outerWidth_1;\n }\n else {\n var res = wrapText(str, font, wrapInfo.width, wrapInfo.breakAll, wrapInfo.accumWidth);\n wrapInfo.accumWidth = res.accumWidth + tokenPaddingH;\n linesWidths = res.linesWidths;\n strLines = res.lines;\n }\n }\n else {\n strLines = str.split('\\n');\n }\n for (var i = 0; i < strLines.length; i++) {\n var text = strLines[i];\n var token = new RichTextToken();\n token.styleName = styleName;\n token.text = text;\n token.isLineHolder = !text && !isEmptyStr;\n if (typeof tokenStyle.width === 'number') {\n token.width = tokenStyle.width;\n }\n else {\n token.width = linesWidths\n ? linesWidths[i]\n : getWidth(text, font);\n }\n if (!i && !newLine) {\n var tokens = (lines[lines.length - 1] || (lines[0] = new RichTextLine())).tokens;\n var tokensLen = tokens.length;\n (tokensLen === 1 && tokens[0].isLineHolder)\n ? (tokens[0] = token)\n : ((text || !tokensLen || isEmptyStr) && tokens.push(token));\n }\n else {\n lines.push(new RichTextLine([token]));\n }\n }\n}\nfunction isLatin(ch) {\n var code = ch.charCodeAt(0);\n return code >= 0x21 && code <= 0xFF;\n}\nvar breakCharMap = reduce(',&?/;] '.split(''), function (obj, ch) {\n obj[ch] = true;\n return obj;\n}, {});\nfunction isWordBreakChar(ch) {\n if (isLatin(ch)) {\n if (breakCharMap[ch]) {\n return true;\n }\n return false;\n }\n return true;\n}\nfunction wrapText(text, font, lineWidth, isBreakAll, lastAccumWidth) {\n var lines = [];\n var linesWidths = [];\n var line = '';\n var currentWord = '';\n var currentWordWidth = 0;\n var accumWidth = 0;\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch === '\\n') {\n if (currentWord) {\n line += currentWord;\n accumWidth += currentWordWidth;\n }\n lines.push(line);\n linesWidths.push(accumWidth);\n line = '';\n currentWord = '';\n currentWordWidth = 0;\n accumWidth = 0;\n continue;\n }\n var chWidth = getWidth(ch, font);\n var inWord = isBreakAll ? false : !isWordBreakChar(ch);\n if (!lines.length\n ? lastAccumWidth + accumWidth + chWidth > lineWidth\n : accumWidth + chWidth > lineWidth) {\n if (!accumWidth) {\n if (inWord) {\n lines.push(currentWord);\n linesWidths.push(currentWordWidth);\n currentWord = ch;\n currentWordWidth = chWidth;\n }\n else {\n lines.push(ch);\n linesWidths.push(chWidth);\n }\n }\n else if (line || currentWord) {\n if (inWord) {\n if (!line) {\n line = currentWord;\n currentWord = '';\n currentWordWidth = 0;\n accumWidth = currentWordWidth;\n }\n lines.push(line);\n linesWidths.push(accumWidth - currentWordWidth);\n currentWord += ch;\n currentWordWidth += chWidth;\n line = '';\n accumWidth = currentWordWidth;\n }\n else {\n if (currentWord) {\n line += currentWord;\n accumWidth += currentWordWidth;\n currentWord = '';\n currentWordWidth = 0;\n }\n lines.push(line);\n linesWidths.push(accumWidth);\n line = ch;\n accumWidth = chWidth;\n }\n }\n continue;\n }\n accumWidth += chWidth;\n if (inWord) {\n currentWord += ch;\n currentWordWidth += chWidth;\n }\n else {\n if (currentWord) {\n line += currentWord;\n currentWord = '';\n currentWordWidth = 0;\n }\n line += ch;\n }\n }\n if (!lines.length && !line) {\n line = text;\n currentWord = '';\n currentWordWidth = 0;\n }\n if (currentWord) {\n line += currentWord;\n }\n if (line) {\n lines.push(line);\n linesWidths.push(accumWidth);\n }\n if (lines.length === 1) {\n accumWidth += lastAccumWidth;\n }\n return {\n accumWidth: accumWidth,\n lines: lines,\n linesWidths: linesWidths\n };\n}\n","import { __extends } from \"tslib\";\nimport Path from '../Path';\nvar EllipseShape = (function () {\n function EllipseShape() {\n this.cx = 0;\n this.cy = 0;\n this.rx = 0;\n this.ry = 0;\n }\n return EllipseShape;\n}());\nexport { EllipseShape };\nvar Ellipse = (function (_super) {\n __extends(Ellipse, _super);\n function Ellipse(opts) {\n return _super.call(this, opts) || this;\n }\n Ellipse.prototype.getDefaultShape = function () {\n return new EllipseShape();\n };\n Ellipse.prototype.buildPath = function (ctx, shape) {\n var k = 0.5522848;\n var x = shape.cx;\n var y = shape.cy;\n var a = shape.rx;\n var b = shape.ry;\n var ox = a * k;\n var oy = b * k;\n ctx.moveTo(x - a, y);\n ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b);\n ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y);\n ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b);\n ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y);\n ctx.closePath();\n };\n return Ellipse;\n}(Path));\nEllipse.prototype.type = 'ellipse';\nexport default Ellipse;\n","import { __extends } from \"tslib\";\nimport Path from '../Path';\nimport * as polyHelper from '../helper/poly';\nvar PolygonShape = (function () {\n function PolygonShape() {\n this.points = null;\n this.smooth = 0;\n this.smoothConstraint = null;\n }\n return PolygonShape;\n}());\nexport { PolygonShape };\nvar Polygon = (function (_super) {\n __extends(Polygon, _super);\n function Polygon(opts) {\n return _super.call(this, opts) || this;\n }\n Polygon.prototype.getDefaultShape = function () {\n return new PolygonShape();\n };\n Polygon.prototype.buildPath = function (ctx, shape) {\n polyHelper.buildPath(ctx, shape, true);\n };\n return Polygon;\n}(Path));\n;\nPolygon.prototype.type = 'polygon';\nexport default Polygon;\n","import { __extends } from \"tslib\";\nimport Path from '../Path';\nimport * as polyHelper from '../helper/poly';\nvar PolylineShape = (function () {\n function PolylineShape() {\n this.points = null;\n this.percent = 1;\n this.smooth = 0;\n this.smoothConstraint = null;\n }\n return PolylineShape;\n}());\nexport { PolylineShape };\nvar Polyline = (function (_super) {\n __extends(Polyline, _super);\n function Polyline(opts) {\n return _super.call(this, opts) || this;\n }\n Polyline.prototype.getDefaultStyle = function () {\n return {\n stroke: '#000',\n fill: null\n };\n };\n Polyline.prototype.getDefaultShape = function () {\n return new PolylineShape();\n };\n Polyline.prototype.buildPath = function (ctx, shape) {\n polyHelper.buildPath(ctx, shape, false);\n };\n return Polyline;\n}(Path));\nPolyline.prototype.type = 'polyline';\nexport default Polyline;\n","import { __extends } from \"tslib\";\nimport Displayble from './Displayable';\nimport BoundingRect from '../core/BoundingRect';\nvar m = [];\nvar IncrementalDisplayable = (function (_super) {\n __extends(IncrementalDisplayable, _super);\n function IncrementalDisplayable() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.notClear = true;\n _this.incremental = true;\n _this._displayables = [];\n _this._temporaryDisplayables = [];\n _this._cursor = 0;\n return _this;\n }\n IncrementalDisplayable.prototype.traverse = function (cb, context) {\n cb.call(context, this);\n };\n IncrementalDisplayable.prototype.useStyle = function () {\n this.style = {};\n };\n IncrementalDisplayable.prototype.getCursor = function () {\n return this._cursor;\n };\n IncrementalDisplayable.prototype.innerAfterBrush = function () {\n this._cursor = this._displayables.length;\n };\n IncrementalDisplayable.prototype.clearDisplaybles = function () {\n this._displayables = [];\n this._temporaryDisplayables = [];\n this._cursor = 0;\n this.markRedraw();\n this.notClear = false;\n };\n IncrementalDisplayable.prototype.clearTemporalDisplayables = function () {\n this._temporaryDisplayables = [];\n };\n IncrementalDisplayable.prototype.addDisplayable = function (displayable, notPersistent) {\n if (notPersistent) {\n this._temporaryDisplayables.push(displayable);\n }\n else {\n this._displayables.push(displayable);\n }\n this.markRedraw();\n };\n IncrementalDisplayable.prototype.addDisplayables = function (displayables, notPersistent) {\n notPersistent = notPersistent || false;\n for (var i = 0; i < displayables.length; i++) {\n this.addDisplayable(displayables[i], notPersistent);\n }\n };\n IncrementalDisplayable.prototype.getDisplayables = function () {\n return this._displayables;\n };\n IncrementalDisplayable.prototype.getTemporalDisplayables = function () {\n return this._temporaryDisplayables;\n };\n IncrementalDisplayable.prototype.eachPendingDisplayable = function (cb) {\n for (var i = this._cursor; i < this._displayables.length; i++) {\n cb && cb(this._displayables[i]);\n }\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n cb && cb(this._temporaryDisplayables[i]);\n }\n };\n IncrementalDisplayable.prototype.update = function () {\n this.updateTransform();\n for (var i = this._cursor; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n displayable.parent = this;\n displayable.update();\n displayable.parent = null;\n }\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n var displayable = this._temporaryDisplayables[i];\n displayable.parent = this;\n displayable.update();\n displayable.parent = null;\n }\n };\n IncrementalDisplayable.prototype.getBoundingRect = function () {\n if (!this._rect) {\n var rect = new BoundingRect(Infinity, Infinity, -Infinity, -Infinity);\n for (var i = 0; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n var childRect = displayable.getBoundingRect().clone();\n if (displayable.needLocalTransform()) {\n childRect.applyTransform(displayable.getLocalTransform(m));\n }\n rect.union(childRect);\n }\n this._rect = rect;\n }\n return this._rect;\n };\n IncrementalDisplayable.prototype.contain = function (x, y) {\n var localPos = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n if (rect.contain(localPos[0], localPos[1])) {\n for (var i = 0; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n if (displayable.contain(x, y)) {\n return true;\n }\n }\n }\n return false;\n };\n return IncrementalDisplayable;\n}(Displayble));\nexport default IncrementalDisplayable;\n","import { __extends } from \"tslib\";\nimport Gradient from './Gradient';\nvar LinearGradient = (function (_super) {\n __extends(LinearGradient, _super);\n function LinearGradient(x, y, x2, y2, colorStops, globalCoord) {\n var _this = _super.call(this, colorStops) || this;\n _this.x = x == null ? 0 : x;\n _this.y = y == null ? 0 : y;\n _this.x2 = x2 == null ? 1 : x2;\n _this.y2 = y2 == null ? 0 : y2;\n _this.type = 'linear';\n _this.global = globalCoord || false;\n return _this;\n }\n return LinearGradient;\n}(Gradient));\nexport default LinearGradient;\n;\n","import { __extends } from \"tslib\";\nimport Gradient from './Gradient';\nvar RadialGradient = (function (_super) {\n __extends(RadialGradient, _super);\n function RadialGradient(x, y, r, colorStops, globalCoord) {\n var _this = _super.call(this, colorStops) || this;\n _this.x = x == null ? 0.5 : x;\n _this.y = y == null ? 0.5 : y;\n _this.r = r == null ? 0.5 : r;\n _this.type = 'radial';\n _this.global = globalCoord || false;\n return _this;\n }\n return RadialGradient;\n}(Gradient));\nexport default RadialGradient;\n","import { __extends } from \"tslib\";\nimport Path from '../Path';\nvar ArcShape = (function () {\n function ArcShape() {\n this.cx = 0;\n this.cy = 0;\n this.r = 0;\n this.startAngle = 0;\n this.endAngle = Math.PI * 2;\n this.clockwise = true;\n }\n return ArcShape;\n}());\nexport { ArcShape };\nvar Arc = (function (_super) {\n __extends(Arc, _super);\n function Arc(opts) {\n return _super.call(this, opts) || this;\n }\n Arc.prototype.getDefaultStyle = function () {\n return {\n stroke: '#000',\n fill: null\n };\n };\n Arc.prototype.getDefaultShape = function () {\n return new ArcShape();\n };\n Arc.prototype.buildPath = function (ctx, shape) {\n var x = shape.cx;\n var y = shape.cy;\n var r = Math.max(shape.r, 0);\n var startAngle = shape.startAngle;\n var endAngle = shape.endAngle;\n var clockwise = shape.clockwise;\n var unitX = Math.cos(startAngle);\n var unitY = Math.sin(startAngle);\n ctx.moveTo(unitX * r + x, unitY * r + y);\n ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\n };\n return Arc;\n}(Path));\nArc.prototype.type = 'arc';\nexport default Arc;\n","var Gradient = (function () {\n function Gradient(colorStops) {\n this.colorStops = colorStops || [];\n }\n Gradient.prototype.addColorStop = function (offset, color) {\n this.colorStops.push({\n offset: offset,\n color: color\n });\n };\n return Gradient;\n}());\nexport default Gradient;\n","import { distance as v2Distance } from '../../core/vector';\nfunction interpolate(p0, p1, p2, p3, t, t2, t3) {\n var v0 = (p2 - p0) * 0.5;\n var v1 = (p3 - p1) * 0.5;\n return (2 * (p1 - p2) + v0 + v1) * t3\n + (-3 * (p1 - p2) - 2 * v0 - v1) * t2\n + v0 * t + p1;\n}\nexport default function smoothSpline(points, isLoop) {\n var len = points.length;\n var ret = [];\n var distance = 0;\n for (var i = 1; i < len; i++) {\n distance += v2Distance(points[i - 1], points[i]);\n }\n var segs = distance / 2;\n segs = segs < len ? len : segs;\n for (var i = 0; i < segs; i++) {\n var pos = i / (segs - 1) * (isLoop ? len : len - 1);\n var idx = Math.floor(pos);\n var w = pos - idx;\n var p0 = void 0;\n var p1 = points[idx % len];\n var p2 = void 0;\n var p3 = void 0;\n if (!isLoop) {\n p0 = points[idx === 0 ? idx : idx - 1];\n p2 = points[idx > len - 2 ? len - 1 : idx + 1];\n p3 = points[idx > len - 3 ? len - 1 : idx + 2];\n }\n else {\n p0 = points[(idx - 1 + len) % len];\n p2 = points[(idx + 1) % len];\n p3 = points[(idx + 2) % len];\n }\n var w2 = w * w;\n var w3 = w * w2;\n ret.push([\n interpolate(p0[0], p1[0], p2[0], p3[0], w, w2, w3),\n interpolate(p0[1], p1[1], p2[1], p3[1], w, w2, w3)\n ]);\n }\n return ret;\n}\n","import smoothSpline from './smoothSpline';\nimport smoothBezier from './smoothBezier';\nexport function buildPath(ctx, shape, closePath) {\n var smooth = shape.smooth;\n var points = shape.points;\n if (points && points.length >= 2) {\n if (smooth && smooth !== 'spline') {\n var controlPoints = smoothBezier(points, smooth, closePath, shape.smoothConstraint);\n ctx.moveTo(points[0][0], points[0][1]);\n var len = points.length;\n for (var i = 0; i < (closePath ? len : len - 1); i++) {\n var cp1 = controlPoints[i * 2];\n var cp2 = controlPoints[i * 2 + 1];\n var p = points[(i + 1) % len];\n ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]);\n }\n }\n else {\n if (smooth === 'spline') {\n points = smoothSpline(points, closePath);\n }\n ctx.moveTo(points[0][0], points[0][1]);\n for (var i = 1, l = points.length; i < l; i++) {\n ctx.lineTo(points[i][0], points[i][1]);\n }\n }\n closePath && ctx.closePath();\n }\n}\n","import { min as v2Min, max as v2Max, scale as v2Scale, distance as v2Distance, add as v2Add, clone as v2Clone, sub as v2Sub } from '../../core/vector';\nexport default function smoothBezier(points, smooth, isLoop, constraint) {\n var cps = [];\n var v = [];\n var v1 = [];\n var v2 = [];\n var prevPoint;\n var nextPoint;\n var min;\n var max;\n if (constraint) {\n min = [Infinity, Infinity];\n max = [-Infinity, -Infinity];\n for (var i = 0, len = points.length; i < len; i++) {\n v2Min(min, min, points[i]);\n v2Max(max, max, points[i]);\n }\n v2Min(min, min, constraint[0]);\n v2Max(max, max, constraint[1]);\n }\n for (var i = 0, len = points.length; i < len; i++) {\n var point = points[i];\n if (isLoop) {\n prevPoint = points[i ? i - 1 : len - 1];\n nextPoint = points[(i + 1) % len];\n }\n else {\n if (i === 0 || i === len - 1) {\n cps.push(v2Clone(points[i]));\n continue;\n }\n else {\n prevPoint = points[i - 1];\n nextPoint = points[i + 1];\n }\n }\n v2Sub(v, nextPoint, prevPoint);\n v2Scale(v, v, smooth);\n var d0 = v2Distance(point, prevPoint);\n var d1 = v2Distance(point, nextPoint);\n var sum = d0 + d1;\n if (sum !== 0) {\n d0 /= sum;\n d1 /= sum;\n }\n v2Scale(v1, v, -d0);\n v2Scale(v2, v, d1);\n var cp0 = v2Add([], point, v1);\n var cp1 = v2Add([], point, v2);\n if (constraint) {\n v2Max(cp0, cp0, min);\n v2Min(cp0, cp0, max);\n v2Max(cp1, cp1, min);\n v2Min(cp1, cp1, max);\n }\n cps.push(cp0);\n cps.push(cp1);\n }\n if (isLoop) {\n cps.push(cps.shift());\n }\n return cps;\n}\n","import { normalizeArcAngles } from '../../core/PathProxy';\nvar PI = Math.PI;\nvar PI2 = PI * 2;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar mathACos = Math.acos;\nvar mathATan2 = Math.atan2;\nvar mathAbs = Math.abs;\nvar mathSqrt = Math.sqrt;\nvar mathMax = Math.max;\nvar mathMin = Math.min;\nvar e = 1e-4;\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0;\n var y10 = y1 - y0;\n var x32 = x3 - x2;\n var y32 = y3 - y2;\n var t = y32 * x10 - x32 * y10;\n if (t * t < e) {\n return;\n }\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\nfunction computeCornerTangents(x0, y0, x1, y1, radius, cr, clockwise) {\n var x01 = x0 - x1;\n var y01 = y0 - y1;\n var lo = (clockwise ? cr : -cr) / mathSqrt(x01 * x01 + y01 * y01);\n var ox = lo * y01;\n var oy = -lo * x01;\n var x11 = x0 + ox;\n var y11 = y0 + oy;\n var x10 = x1 + ox;\n var y10 = y1 + oy;\n var x00 = (x11 + x10) / 2;\n var y00 = (y11 + y10) / 2;\n var dx = x10 - x11;\n var dy = y10 - y11;\n var d2 = dx * dx + dy * dy;\n var r = radius - cr;\n var s = x11 * y10 - x10 * y11;\n var d = (dy < 0 ? -1 : 1) * mathSqrt(mathMax(0, r * r * d2 - s * s));\n var cx0 = (s * dy - dx * d) / d2;\n var cy0 = (-s * dx - dy * d) / d2;\n var cx1 = (s * dy + dx * d) / d2;\n var cy1 = (-s * dx + dy * d) / d2;\n var dx0 = cx0 - x00;\n var dy0 = cy0 - y00;\n var dx1 = cx1 - x00;\n var dy1 = cy1 - y00;\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) {\n cx0 = cx1;\n cy0 = cy1;\n }\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (radius / r - 1),\n y11: cy0 * (radius / r - 1)\n };\n}\nexport function buildPath(ctx, shape) {\n var radius = mathMax(shape.r, 0);\n var innerRadius = mathMax(shape.r0 || 0, 0);\n var hasRadius = radius > 0;\n var hasInnerRadius = innerRadius > 0;\n if (!hasRadius && !hasInnerRadius) {\n return;\n }\n if (!hasRadius) {\n radius = innerRadius;\n innerRadius = 0;\n }\n if (innerRadius > radius) {\n var tmp = radius;\n radius = innerRadius;\n innerRadius = tmp;\n }\n var clockwise = !!shape.clockwise;\n var startAngle = shape.startAngle;\n var endAngle = shape.endAngle;\n var arc;\n if (startAngle === endAngle) {\n arc = 0;\n }\n else {\n var tmpAngles = [startAngle, endAngle];\n normalizeArcAngles(tmpAngles, !clockwise);\n arc = mathAbs(tmpAngles[0] - tmpAngles[1]);\n }\n var x = shape.cx;\n var y = shape.cy;\n var cornerRadius = shape.cornerRadius || 0;\n var innerCornerRadius = shape.innerCornerRadius || 0;\n if (!(radius > e)) {\n ctx.moveTo(x, y);\n }\n else if (arc > PI2 - e) {\n ctx.moveTo(x + radius * mathCos(startAngle), y + radius * mathSin(startAngle));\n ctx.arc(x, y, radius, startAngle, endAngle, !clockwise);\n if (innerRadius > e) {\n ctx.moveTo(x + innerRadius * mathCos(endAngle), y + innerRadius * mathSin(endAngle));\n ctx.arc(x, y, innerRadius, endAngle, startAngle, clockwise);\n }\n }\n else {\n var halfRd = mathAbs(radius - innerRadius) / 2;\n var cr = mathMin(halfRd, cornerRadius);\n var icr = mathMin(halfRd, innerCornerRadius);\n var cr0 = icr;\n var cr1 = cr;\n var xrs = radius * mathCos(startAngle);\n var yrs = radius * mathSin(startAngle);\n var xire = innerRadius * mathCos(endAngle);\n var yire = innerRadius * mathSin(endAngle);\n var xre = void 0;\n var yre = void 0;\n var xirs = void 0;\n var yirs = void 0;\n if (cr > e || icr > e) {\n xre = radius * mathCos(endAngle);\n yre = radius * mathSin(endAngle);\n xirs = innerRadius * mathCos(startAngle);\n yirs = innerRadius * mathSin(startAngle);\n if (arc < PI) {\n var it_1 = intersect(xrs, yrs, xirs, yirs, xre, yre, xire, yire);\n if (it_1) {\n var x0 = xrs - it_1[0];\n var y0 = yrs - it_1[1];\n var x1 = xre - it_1[0];\n var y1 = yre - it_1[1];\n var a = 1 / mathSin(mathACos((x0 * x1 + y0 * y1) / (mathSqrt(x0 * x0 + y0 * y0) * mathSqrt(x1 * x1 + y1 * y1))) / 2);\n var b = mathSqrt(it_1[0] * it_1[0] + it_1[1] * it_1[1]);\n cr0 = mathMin(icr, (innerRadius - b) / (a - 1));\n cr1 = mathMin(cr, (radius - b) / (a + 1));\n }\n }\n }\n if (!(arc > e)) {\n ctx.moveTo(x + xrs, y + yrs);\n }\n else if (cr1 > e) {\n var ct0 = computeCornerTangents(xirs, yirs, xrs, yrs, radius, cr1, clockwise);\n var ct1 = computeCornerTangents(xre, yre, xire, yire, radius, cr1, clockwise);\n ctx.moveTo(x + ct0.cx + ct0.x01, y + ct0.cy + ct0.y01);\n if (cr1 < cr) {\n ctx.arc(x + ct0.cx, y + ct0.cy, cr1, mathATan2(ct0.y01, ct0.x01), mathATan2(ct1.y01, ct1.x01), !clockwise);\n }\n else {\n ctx.arc(x + ct0.cx, y + ct0.cy, cr1, mathATan2(ct0.y01, ct0.x01), mathATan2(ct0.y11, ct0.x11), !clockwise);\n ctx.arc(x, y, radius, mathATan2(ct0.cy + ct0.y11, ct0.cx + ct0.x11), mathATan2(ct1.cy + ct1.y11, ct1.cx + ct1.x11), !clockwise);\n ctx.arc(x + ct1.cx, y + ct1.cy, cr1, mathATan2(ct1.y11, ct1.x11), mathATan2(ct1.y01, ct1.x01), !clockwise);\n }\n }\n else {\n ctx.moveTo(x + xrs, y + yrs);\n ctx.arc(x, y, radius, startAngle, endAngle, !clockwise);\n }\n if (!(innerRadius > e) || !(arc > e)) {\n ctx.lineTo(x + xire, y + yire);\n }\n else if (cr0 > e) {\n var ct0 = computeCornerTangents(xire, yire, xre, yre, innerRadius, -cr0, clockwise);\n var ct1 = computeCornerTangents(xrs, yrs, xirs, yirs, innerRadius, -cr0, clockwise);\n ctx.lineTo(x + ct0.cx + ct0.x01, y + ct0.cy + ct0.y01);\n if (cr0 < icr) {\n ctx.arc(x + ct0.cx, y + ct0.cy, cr0, mathATan2(ct0.y01, ct0.x01), mathATan2(ct1.y01, ct1.x01), !clockwise);\n }\n else {\n ctx.arc(x + ct0.cx, y + ct0.cy, cr0, mathATan2(ct0.y01, ct0.x01), mathATan2(ct0.y11, ct0.x11), !clockwise);\n ctx.arc(x, y, innerRadius, mathATan2(ct0.cy + ct0.y11, ct0.cx + ct0.x11), mathATan2(ct1.cy + ct1.y11, ct1.cx + ct1.x11), clockwise);\n ctx.arc(x + ct1.cx, y + ct1.cy, cr0, mathATan2(ct1.y11, ct1.x11), mathATan2(ct1.y01, ct1.x01), !clockwise);\n }\n }\n else {\n ctx.lineTo(x + xire, y + yire);\n ctx.arc(x, y, innerRadius, endAngle, startAngle, clockwise);\n }\n }\n ctx.closePath();\n}\n","import { __extends } from \"tslib\";\nimport Path from '../Path';\nimport * as roundSectorHelper from '../helper/roundSector';\nvar SectorShape = (function () {\n function SectorShape() {\n this.cx = 0;\n this.cy = 0;\n this.r0 = 0;\n this.r = 0;\n this.startAngle = 0;\n this.endAngle = Math.PI * 2;\n this.clockwise = true;\n this.cornerRadius = 0;\n this.innerCornerRadius = 0;\n }\n return SectorShape;\n}());\nexport { SectorShape };\nvar Sector = (function (_super) {\n __extends(Sector, _super);\n function Sector(opts) {\n return _super.call(this, opts) || this;\n }\n Sector.prototype.getDefaultShape = function () {\n return new SectorShape();\n };\n Sector.prototype.buildPath = function (ctx, shape) {\n roundSectorHelper.buildPath(ctx, shape);\n };\n Sector.prototype.isZeroArea = function () {\n return this.shape.startAngle === this.shape.endAngle\n || this.shape.r === this.shape.r0;\n };\n return Sector;\n}(Path));\nSector.prototype.type = 'sector';\nexport default Sector;\n","import { __extends } from \"tslib\";\nimport Displayable, { DEFAULT_COMMON_STYLE, DEFAULT_COMMON_ANIMATION_PROPS } from './Displayable';\nimport Element from '../Element';\nimport PathProxy from '../core/PathProxy';\nimport * as pathContain from '../contain/path';\nimport { defaults, keys, extend, clone, isString, createObject } from '../core/util';\nimport { lum } from '../tool/color';\nimport { DARK_LABEL_COLOR, LIGHT_LABEL_COLOR, DARK_MODE_THRESHOLD, LIGHTER_LABEL_COLOR } from '../config';\nexport var DEFAULT_PATH_STYLE = defaults({\n fill: '#000',\n stroke: null,\n strokePercent: 1,\n fillOpacity: 1,\n strokeOpacity: 1,\n lineDashOffset: 0,\n lineWidth: 1,\n lineCap: 'butt',\n miterLimit: 10,\n strokeNoScale: false,\n strokeFirst: false\n}, DEFAULT_COMMON_STYLE);\nexport var DEFAULT_PATH_ANIMATION_PROPS = {\n style: defaults({\n fill: true,\n stroke: true,\n strokePercent: true,\n fillOpacity: true,\n strokeOpacity: true,\n lineDashOffset: true,\n lineWidth: true,\n miterLimit: true\n }, DEFAULT_COMMON_ANIMATION_PROPS.style)\n};\nvar pathCopyParams = [\n 'x', 'y', 'rotation', 'scaleX', 'scaleY', 'originX', 'originY', 'invisible',\n 'culling', 'z', 'z2', 'zlevel', 'parent'\n];\nvar Path = (function (_super) {\n __extends(Path, _super);\n function Path(opts) {\n return _super.call(this, opts) || this;\n }\n Path.prototype.update = function () {\n var _this = this;\n _super.prototype.update.call(this);\n var style = this.style;\n if (style.decal) {\n var decalEl = this._decalEl\n = this._decalEl || new Path();\n if (decalEl.buildPath === Path.prototype.buildPath) {\n decalEl.buildPath = function (ctx) {\n _this.buildPath(ctx, _this.shape);\n };\n }\n decalEl.silent = true;\n var decalElStyle = decalEl.style;\n for (var key in style) {\n if (decalElStyle[key] !== style[key]) {\n decalElStyle[key] = style[key];\n }\n }\n decalElStyle.fill = style.fill ? style.decal : null;\n decalElStyle.decal = null;\n decalElStyle.shadowColor = null;\n style.strokeFirst && (decalElStyle.stroke = null);\n for (var i = 0; i < pathCopyParams.length; ++i) {\n decalEl[pathCopyParams[i]] = this[pathCopyParams[i]];\n }\n decalEl.__dirty |= Element.REDARAW_BIT;\n }\n else if (this._decalEl) {\n this._decalEl = null;\n }\n };\n Path.prototype.getDecalElement = function () {\n return this._decalEl;\n };\n Path.prototype._init = function (props) {\n var keysArr = keys(props);\n this.shape = this.getDefaultShape();\n var defaultStyle = this.getDefaultStyle();\n if (defaultStyle) {\n this.useStyle(defaultStyle);\n }\n for (var i = 0; i < keysArr.length; i++) {\n var key = keysArr[i];\n var value = props[key];\n if (key === 'style') {\n if (!this.style) {\n this.useStyle(value);\n }\n else {\n extend(this.style, value);\n }\n }\n else if (key === 'shape') {\n extend(this.shape, value);\n }\n else {\n _super.prototype.attrKV.call(this, key, value);\n }\n }\n if (!this.style) {\n this.useStyle({});\n }\n };\n Path.prototype.getDefaultStyle = function () {\n return null;\n };\n Path.prototype.getDefaultShape = function () {\n return {};\n };\n Path.prototype.canBeInsideText = function () {\n return this.hasFill();\n };\n Path.prototype.getInsideTextFill = function () {\n var pathFill = this.style.fill;\n if (pathFill !== 'none') {\n if (isString(pathFill)) {\n var fillLum = lum(pathFill, 0);\n if (fillLum > 0.5) {\n return DARK_LABEL_COLOR;\n }\n else if (fillLum > 0.2) {\n return LIGHTER_LABEL_COLOR;\n }\n return LIGHT_LABEL_COLOR;\n }\n else if (pathFill) {\n return LIGHT_LABEL_COLOR;\n }\n }\n return DARK_LABEL_COLOR;\n };\n Path.prototype.getInsideTextStroke = function (textFill) {\n var pathFill = this.style.fill;\n if (isString(pathFill)) {\n var zr = this.__zr;\n var isDarkMode = !!(zr && zr.isDarkMode());\n var isDarkLabel = lum(textFill, 0) < DARK_MODE_THRESHOLD;\n if (isDarkMode === isDarkLabel) {\n return pathFill;\n }\n }\n };\n Path.prototype.buildPath = function (ctx, shapeCfg, inBundle) { };\n Path.prototype.pathUpdated = function () {\n this.__dirty &= ~Path.SHAPE_CHANGED_BIT;\n };\n Path.prototype.createPathProxy = function () {\n this.path = new PathProxy(false);\n };\n Path.prototype.hasStroke = function () {\n var style = this.style;\n var stroke = style.stroke;\n return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0));\n };\n Path.prototype.hasFill = function () {\n var style = this.style;\n var fill = style.fill;\n return fill != null && fill !== 'none';\n };\n Path.prototype.getBoundingRect = function () {\n var rect = this._rect;\n var style = this.style;\n var needsUpdateRect = !rect;\n if (needsUpdateRect) {\n var firstInvoke = false;\n if (!this.path) {\n firstInvoke = true;\n this.createPathProxy();\n }\n var path = this.path;\n if (firstInvoke || (this.__dirty & Path.SHAPE_CHANGED_BIT)) {\n path.beginPath();\n this.buildPath(path, this.shape, false);\n this.pathUpdated();\n }\n rect = path.getBoundingRect();\n }\n this._rect = rect;\n if (this.hasStroke() && this.path && this.path.len() > 0) {\n var rectWithStroke = this._rectWithStroke || (this._rectWithStroke = rect.clone());\n if (this.__dirty || needsUpdateRect) {\n rectWithStroke.copy(rect);\n var lineScale = style.strokeNoScale ? this.getLineScale() : 1;\n var w = style.lineWidth;\n if (!this.hasFill()) {\n var strokeContainThreshold = this.strokeContainThreshold;\n w = Math.max(w, strokeContainThreshold == null ? 4 : strokeContainThreshold);\n }\n if (lineScale > 1e-10) {\n rectWithStroke.width += w / lineScale;\n rectWithStroke.height += w / lineScale;\n rectWithStroke.x -= w / lineScale / 2;\n rectWithStroke.y -= w / lineScale / 2;\n }\n }\n return rectWithStroke;\n }\n return rect;\n };\n Path.prototype.contain = function (x, y) {\n var localPos = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n var style = this.style;\n x = localPos[0];\n y = localPos[1];\n if (rect.contain(x, y)) {\n var pathProxy = this.path;\n if (this.hasStroke()) {\n var lineWidth = style.lineWidth;\n var lineScale = style.strokeNoScale ? this.getLineScale() : 1;\n if (lineScale > 1e-10) {\n if (!this.hasFill()) {\n lineWidth = Math.max(lineWidth, this.strokeContainThreshold);\n }\n if (pathContain.containStroke(pathProxy, lineWidth / lineScale, x, y)) {\n return true;\n }\n }\n }\n if (this.hasFill()) {\n return pathContain.contain(pathProxy, x, y);\n }\n }\n return false;\n };\n Path.prototype.dirtyShape = function () {\n this.__dirty |= Path.SHAPE_CHANGED_BIT;\n if (this._rect) {\n this._rect = null;\n }\n if (this._decalEl) {\n this._decalEl.dirtyShape();\n }\n this.markRedraw();\n };\n Path.prototype.dirty = function () {\n this.dirtyStyle();\n this.dirtyShape();\n };\n Path.prototype.animateShape = function (loop) {\n return this.animate('shape', loop);\n };\n Path.prototype.updateDuringAnimation = function (targetKey) {\n if (targetKey === 'style') {\n this.dirtyStyle();\n }\n else if (targetKey === 'shape') {\n this.dirtyShape();\n }\n else {\n this.markRedraw();\n }\n };\n Path.prototype.attrKV = function (key, value) {\n if (key === 'shape') {\n this.setShape(value);\n }\n else {\n _super.prototype.attrKV.call(this, key, value);\n }\n };\n Path.prototype.setShape = function (keyOrObj, value) {\n var shape = this.shape;\n if (!shape) {\n shape = this.shape = {};\n }\n if (typeof keyOrObj === 'string') {\n shape[keyOrObj] = value;\n }\n else {\n extend(shape, keyOrObj);\n }\n this.dirtyShape();\n return this;\n };\n Path.prototype.shapeChanged = function () {\n return !!(this.__dirty & Path.SHAPE_CHANGED_BIT);\n };\n Path.prototype.createStyle = function (obj) {\n return createObject(DEFAULT_PATH_STYLE, obj);\n };\n Path.prototype._innerSaveToNormal = function (toState) {\n _super.prototype._innerSaveToNormal.call(this, toState);\n var normalState = this._normalState;\n if (toState.shape && !normalState.shape) {\n normalState.shape = extend({}, this.shape);\n }\n };\n Path.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\n _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);\n var needsRestoreToNormal = !(state && keepCurrentStates);\n var targetShape;\n if (state && state.shape) {\n if (transition) {\n if (keepCurrentStates) {\n targetShape = state.shape;\n }\n else {\n targetShape = extend({}, normalState.shape);\n extend(targetShape, state.shape);\n }\n }\n else {\n targetShape = extend({}, keepCurrentStates ? this.shape : normalState.shape);\n extend(targetShape, state.shape);\n }\n }\n else if (needsRestoreToNormal) {\n targetShape = normalState.shape;\n }\n if (targetShape) {\n if (transition) {\n this.shape = extend({}, this.shape);\n var targetShapePrimaryProps = {};\n var shapeKeys = keys(targetShape);\n for (var i = 0; i < shapeKeys.length; i++) {\n var key = shapeKeys[i];\n if (typeof targetShape[key] === 'object') {\n this.shape[key] = targetShape[key];\n }\n else {\n targetShapePrimaryProps[key] = targetShape[key];\n }\n }\n this._transitionState(stateName, {\n shape: targetShapePrimaryProps\n }, animationCfg);\n }\n else {\n this.shape = targetShape;\n this.dirtyShape();\n }\n }\n };\n Path.prototype._mergeStates = function (states) {\n var mergedState = _super.prototype._mergeStates.call(this, states);\n var mergedShape;\n for (var i = 0; i < states.length; i++) {\n var state = states[i];\n if (state.shape) {\n mergedShape = mergedShape || {};\n this._mergeStyle(mergedShape, state.shape);\n }\n }\n if (mergedShape) {\n mergedState.shape = mergedShape;\n }\n return mergedState;\n };\n Path.prototype.getAnimationStyleProps = function () {\n return DEFAULT_PATH_ANIMATION_PROPS;\n };\n Path.prototype.isZeroArea = function () {\n return false;\n };\n Path.extend = function (defaultProps) {\n var Sub = (function (_super) {\n __extends(Sub, _super);\n function Sub(opts) {\n var _this = _super.call(this, opts) || this;\n defaultProps.init && defaultProps.init.call(_this, opts);\n return _this;\n }\n Sub.prototype.getDefaultStyle = function () {\n return clone(defaultProps.style);\n };\n Sub.prototype.getDefaultShape = function () {\n return clone(defaultProps.shape);\n };\n return Sub;\n }(Path));\n for (var key in defaultProps) {\n if (typeof defaultProps[key] === 'function') {\n Sub.prototype[key] = defaultProps[key];\n }\n }\n return Sub;\n };\n Path.SHAPE_CHANGED_BIT = 4;\n Path.initDefaultProps = (function () {\n var pathProto = Path.prototype;\n pathProto.type = 'path';\n pathProto.strokeContainThreshold = 5;\n pathProto.segmentIgnoreThreshold = 0;\n pathProto.subPixelOptimize = false;\n pathProto.autoBatch = false;\n pathProto.__dirty = Element.REDARAW_BIT | Displayable.STYLE_CHANGED_BIT | Path.SHAPE_CHANGED_BIT;\n })();\n return Path;\n}(Displayable));\nexport default Path;\n","import { __extends } from \"tslib\";\nimport Path from '../Path';\nvar RingShape = (function () {\n function RingShape() {\n this.cx = 0;\n this.cy = 0;\n this.r = 0;\n this.r0 = 0;\n }\n return RingShape;\n}());\nexport { RingShape };\nvar Ring = (function (_super) {\n __extends(Ring, _super);\n function Ring(opts) {\n return _super.call(this, opts) || this;\n }\n Ring.prototype.getDefaultShape = function () {\n return new RingShape();\n };\n Ring.prototype.buildPath = function (ctx, shape) {\n var x = shape.cx;\n var y = shape.cy;\n var PI2 = Math.PI * 2;\n ctx.moveTo(x + shape.r, y);\n ctx.arc(x, y, shape.r, 0, PI2, false);\n ctx.moveTo(x + shape.r0, y);\n ctx.arc(x, y, shape.r0, 0, PI2, true);\n };\n return Ring;\n}(Path));\nRing.prototype.type = 'ring';\nexport default Ring;\n","import { __extends } from \"tslib\";\nimport Path from '../Path';\nimport * as vec2 from '../../core/vector';\nimport { quadraticSubdivide, cubicSubdivide, quadraticAt, cubicAt, quadraticDerivativeAt, cubicDerivativeAt } from '../../core/curve';\nvar out = [];\nvar BezierCurveShape = (function () {\n function BezierCurveShape() {\n this.x1 = 0;\n this.y1 = 0;\n this.x2 = 0;\n this.y2 = 0;\n this.cpx1 = 0;\n this.cpy1 = 0;\n this.percent = 1;\n }\n return BezierCurveShape;\n}());\nexport { BezierCurveShape };\nfunction someVectorAt(shape, t, isTangent) {\n var cpx2 = shape.cpx2;\n var cpy2 = shape.cpy2;\n if (cpx2 === null || cpy2 === null) {\n return [\n (isTangent ? cubicDerivativeAt : cubicAt)(shape.x1, shape.cpx1, shape.cpx2, shape.x2, t),\n (isTangent ? cubicDerivativeAt : cubicAt)(shape.y1, shape.cpy1, shape.cpy2, shape.y2, t)\n ];\n }\n else {\n return [\n (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.x1, shape.cpx1, shape.x2, t),\n (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.y1, shape.cpy1, shape.y2, t)\n ];\n }\n}\nvar BezierCurve = (function (_super) {\n __extends(BezierCurve, _super);\n function BezierCurve(opts) {\n return _super.call(this, opts) || this;\n }\n BezierCurve.prototype.getDefaultStyle = function () {\n return {\n stroke: '#000',\n fill: null\n };\n };\n BezierCurve.prototype.getDefaultShape = function () {\n return new BezierCurveShape();\n };\n BezierCurve.prototype.buildPath = function (ctx, shape) {\n var x1 = shape.x1;\n var y1 = shape.y1;\n var x2 = shape.x2;\n var y2 = shape.y2;\n var cpx1 = shape.cpx1;\n var cpy1 = shape.cpy1;\n var cpx2 = shape.cpx2;\n var cpy2 = shape.cpy2;\n var percent = shape.percent;\n if (percent === 0) {\n return;\n }\n ctx.moveTo(x1, y1);\n if (cpx2 == null || cpy2 == null) {\n if (percent < 1) {\n quadraticSubdivide(x1, cpx1, x2, percent, out);\n cpx1 = out[1];\n x2 = out[2];\n quadraticSubdivide(y1, cpy1, y2, percent, out);\n cpy1 = out[1];\n y2 = out[2];\n }\n ctx.quadraticCurveTo(cpx1, cpy1, x2, y2);\n }\n else {\n if (percent < 1) {\n cubicSubdivide(x1, cpx1, cpx2, x2, percent, out);\n cpx1 = out[1];\n cpx2 = out[2];\n x2 = out[3];\n cubicSubdivide(y1, cpy1, cpy2, y2, percent, out);\n cpy1 = out[1];\n cpy2 = out[2];\n y2 = out[3];\n }\n ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);\n }\n };\n BezierCurve.prototype.pointAt = function (t) {\n return someVectorAt(this.shape, t, false);\n };\n BezierCurve.prototype.tangentAt = function (t) {\n var p = someVectorAt(this.shape, t, true);\n return vec2.normalize(p, p);\n };\n return BezierCurve;\n}(Path));\n;\nBezierCurve.prototype.type = 'bezier-curve';\nexport default BezierCurve;\n","import { isArray, isNumber } from '../../core/util';\nexport function normalizeLineDash(lineType, lineWidth) {\n if (!lineType || lineType === 'solid' || !(lineWidth > 0)) {\n return null;\n }\n lineWidth = lineWidth || 1;\n return lineType === 'dashed'\n ? [4 * lineWidth, 2 * lineWidth]\n : lineType === 'dotted'\n ? [lineWidth]\n : isNumber(lineType)\n ? [lineType] : isArray(lineType) ? lineType : null;\n}\n","import { __extends } from \"tslib\";\nimport Path from './Path';\nvar CompoundPath = (function (_super) {\n __extends(CompoundPath, _super);\n function CompoundPath() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'compound';\n return _this;\n }\n CompoundPath.prototype._updatePathDirty = function () {\n var paths = this.shape.paths;\n var dirtyPath = this.shapeChanged();\n for (var i = 0; i < paths.length; i++) {\n dirtyPath = dirtyPath || paths[i].shapeChanged();\n }\n if (dirtyPath) {\n this.dirtyShape();\n }\n };\n CompoundPath.prototype.beforeBrush = function () {\n this._updatePathDirty();\n var paths = this.shape.paths || [];\n var scale = this.getGlobalScale();\n for (var i = 0; i < paths.length; i++) {\n if (!paths[i].path) {\n paths[i].createPathProxy();\n }\n paths[i].path.setScale(scale[0], scale[1], paths[i].segmentIgnoreThreshold);\n }\n };\n CompoundPath.prototype.buildPath = function (ctx, shape) {\n var paths = shape.paths || [];\n for (var i = 0; i < paths.length; i++) {\n paths[i].buildPath(ctx, paths[i].shape, true);\n }\n };\n CompoundPath.prototype.afterBrush = function () {\n var paths = this.shape.paths || [];\n for (var i = 0; i < paths.length; i++) {\n paths[i].pathUpdated();\n }\n };\n CompoundPath.prototype.getBoundingRect = function () {\n this._updatePathDirty.call(this);\n return Path.prototype.getBoundingRect.call(this);\n };\n return CompoundPath;\n}(Path));\nexport default CompoundPath;\n","import { __extends } from \"tslib\";\nimport { addEventListener, removeEventListener, normalizeEvent, getNativeEvent } from '../core/event';\nimport * as zrUtil from '../core/util';\nimport Eventful from '../core/Eventful';\nimport env from '../core/env';\nvar TOUCH_CLICK_DELAY = 300;\nvar globalEventSupported = env.domSupported;\nvar localNativeListenerNames = (function () {\n var mouseHandlerNames = [\n 'click', 'dblclick', 'mousewheel', 'wheel', 'mouseout',\n 'mouseup', 'mousedown', 'mousemove', 'contextmenu'\n ];\n var touchHandlerNames = [\n 'touchstart', 'touchend', 'touchmove'\n ];\n var pointerEventNameMap = {\n pointerdown: 1, pointerup: 1, pointermove: 1, pointerout: 1\n };\n var pointerHandlerNames = zrUtil.map(mouseHandlerNames, function (name) {\n var nm = name.replace('mouse', 'pointer');\n return pointerEventNameMap.hasOwnProperty(nm) ? nm : name;\n });\n return {\n mouse: mouseHandlerNames,\n touch: touchHandlerNames,\n pointer: pointerHandlerNames\n };\n})();\nvar globalNativeListenerNames = {\n mouse: ['mousemove', 'mouseup'],\n pointer: ['pointermove', 'pointerup']\n};\nvar wheelEventSupported = false;\nfunction isPointerFromTouch(event) {\n var pointerType = event.pointerType;\n return pointerType === 'pen' || pointerType === 'touch';\n}\nfunction setTouchTimer(scope) {\n scope.touching = true;\n if (scope.touchTimer != null) {\n clearTimeout(scope.touchTimer);\n scope.touchTimer = null;\n }\n scope.touchTimer = setTimeout(function () {\n scope.touching = false;\n scope.touchTimer = null;\n }, 700);\n}\nfunction markTouch(event) {\n event && (event.zrByTouch = true);\n}\nfunction normalizeGlobalEvent(instance, event) {\n return normalizeEvent(instance.dom, new FakeGlobalEvent(instance, event), true);\n}\nfunction isLocalEl(instance, el) {\n var elTmp = el;\n var isLocal = false;\n while (elTmp && elTmp.nodeType !== 9\n && !(isLocal = elTmp.domBelongToZr\n || (elTmp !== el && elTmp === instance.painterRoot))) {\n elTmp = elTmp.parentNode;\n }\n return isLocal;\n}\nvar FakeGlobalEvent = (function () {\n function FakeGlobalEvent(instance, event) {\n this.stopPropagation = zrUtil.noop;\n this.stopImmediatePropagation = zrUtil.noop;\n this.preventDefault = zrUtil.noop;\n this.type = event.type;\n this.target = this.currentTarget = instance.dom;\n this.pointerType = event.pointerType;\n this.clientX = event.clientX;\n this.clientY = event.clientY;\n }\n return FakeGlobalEvent;\n}());\nvar localDOMHandlers = {\n mousedown: function (event) {\n event = normalizeEvent(this.dom, event);\n this.__mayPointerCapture = [event.zrX, event.zrY];\n this.trigger('mousedown', event);\n },\n mousemove: function (event) {\n event = normalizeEvent(this.dom, event);\n var downPoint = this.__mayPointerCapture;\n if (downPoint && (event.zrX !== downPoint[0] || event.zrY !== downPoint[1])) {\n this.__togglePointerCapture(true);\n }\n this.trigger('mousemove', event);\n },\n mouseup: function (event) {\n event = normalizeEvent(this.dom, event);\n this.__togglePointerCapture(false);\n this.trigger('mouseup', event);\n },\n mouseout: function (event) {\n event = normalizeEvent(this.dom, event);\n var element = event.toElement || event.relatedTarget;\n if (!isLocalEl(this, element)) {\n if (this.__pointerCapturing) {\n event.zrEventControl = 'no_globalout';\n }\n this.trigger('mouseout', event);\n }\n },\n wheel: function (event) {\n wheelEventSupported = true;\n event = normalizeEvent(this.dom, event);\n this.trigger('mousewheel', event);\n },\n mousewheel: function (event) {\n if (wheelEventSupported) {\n return;\n }\n event = normalizeEvent(this.dom, event);\n this.trigger('mousewheel', event);\n },\n touchstart: function (event) {\n event = normalizeEvent(this.dom, event);\n markTouch(event);\n this.__lastTouchMoment = new Date();\n this.handler.processGesture(event, 'start');\n localDOMHandlers.mousemove.call(this, event);\n localDOMHandlers.mousedown.call(this, event);\n },\n touchmove: function (event) {\n event = normalizeEvent(this.dom, event);\n markTouch(event);\n this.handler.processGesture(event, 'change');\n localDOMHandlers.mousemove.call(this, event);\n },\n touchend: function (event) {\n event = normalizeEvent(this.dom, event);\n markTouch(event);\n this.handler.processGesture(event, 'end');\n localDOMHandlers.mouseup.call(this, event);\n if (+new Date() - (+this.__lastTouchMoment) < TOUCH_CLICK_DELAY) {\n localDOMHandlers.click.call(this, event);\n }\n },\n pointerdown: function (event) {\n localDOMHandlers.mousedown.call(this, event);\n },\n pointermove: function (event) {\n if (!isPointerFromTouch(event)) {\n localDOMHandlers.mousemove.call(this, event);\n }\n },\n pointerup: function (event) {\n localDOMHandlers.mouseup.call(this, event);\n },\n pointerout: function (event) {\n if (!isPointerFromTouch(event)) {\n localDOMHandlers.mouseout.call(this, event);\n }\n }\n};\nzrUtil.each(['click', 'dblclick', 'contextmenu'], function (name) {\n localDOMHandlers[name] = function (event) {\n event = normalizeEvent(this.dom, event);\n this.trigger(name, event);\n };\n});\nvar globalDOMHandlers = {\n pointermove: function (event) {\n if (!isPointerFromTouch(event)) {\n globalDOMHandlers.mousemove.call(this, event);\n }\n },\n pointerup: function (event) {\n globalDOMHandlers.mouseup.call(this, event);\n },\n mousemove: function (event) {\n this.trigger('mousemove', event);\n },\n mouseup: function (event) {\n var pointerCaptureReleasing = this.__pointerCapturing;\n this.__togglePointerCapture(false);\n this.trigger('mouseup', event);\n if (pointerCaptureReleasing) {\n event.zrEventControl = 'only_globalout';\n this.trigger('mouseout', event);\n }\n }\n};\nfunction mountLocalDOMEventListeners(instance, scope) {\n var domHandlers = scope.domHandlers;\n if (env.pointerEventsSupported) {\n zrUtil.each(localNativeListenerNames.pointer, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n domHandlers[nativeEventName].call(instance, event);\n });\n });\n }\n else {\n if (env.touchEventsSupported) {\n zrUtil.each(localNativeListenerNames.touch, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n domHandlers[nativeEventName].call(instance, event);\n setTouchTimer(scope);\n });\n });\n }\n zrUtil.each(localNativeListenerNames.mouse, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n event = getNativeEvent(event);\n if (!scope.touching) {\n domHandlers[nativeEventName].call(instance, event);\n }\n });\n });\n }\n}\nfunction mountGlobalDOMEventListeners(instance, scope) {\n if (env.pointerEventsSupported) {\n zrUtil.each(globalNativeListenerNames.pointer, mount);\n }\n else if (!env.touchEventsSupported) {\n zrUtil.each(globalNativeListenerNames.mouse, mount);\n }\n function mount(nativeEventName) {\n function nativeEventListener(event) {\n event = getNativeEvent(event);\n if (!isLocalEl(instance, event.target)) {\n event = normalizeGlobalEvent(instance, event);\n scope.domHandlers[nativeEventName].call(instance, event);\n }\n }\n mountSingleDOMEventListener(scope, nativeEventName, nativeEventListener, { capture: true });\n }\n}\nfunction mountSingleDOMEventListener(scope, nativeEventName, listener, opt) {\n scope.mounted[nativeEventName] = listener;\n scope.listenerOpts[nativeEventName] = opt;\n addEventListener(scope.domTarget, nativeEventName, listener, opt);\n}\nfunction unmountDOMEventListeners(scope) {\n var mounted = scope.mounted;\n for (var nativeEventName in mounted) {\n if (mounted.hasOwnProperty(nativeEventName)) {\n removeEventListener(scope.domTarget, nativeEventName, mounted[nativeEventName], scope.listenerOpts[nativeEventName]);\n }\n }\n scope.mounted = {};\n}\nvar DOMHandlerScope = (function () {\n function DOMHandlerScope(domTarget, domHandlers) {\n this.mounted = {};\n this.listenerOpts = {};\n this.touching = false;\n this.domTarget = domTarget;\n this.domHandlers = domHandlers;\n }\n return DOMHandlerScope;\n}());\nvar HandlerDomProxy = (function (_super) {\n __extends(HandlerDomProxy, _super);\n function HandlerDomProxy(dom, painterRoot) {\n var _this = _super.call(this) || this;\n _this.__pointerCapturing = false;\n _this.dom = dom;\n _this.painterRoot = painterRoot;\n _this._localHandlerScope = new DOMHandlerScope(dom, localDOMHandlers);\n if (globalEventSupported) {\n _this._globalHandlerScope = new DOMHandlerScope(document, globalDOMHandlers);\n }\n mountLocalDOMEventListeners(_this, _this._localHandlerScope);\n return _this;\n }\n HandlerDomProxy.prototype.dispose = function () {\n unmountDOMEventListeners(this._localHandlerScope);\n if (globalEventSupported) {\n unmountDOMEventListeners(this._globalHandlerScope);\n }\n };\n HandlerDomProxy.prototype.setCursor = function (cursorStyle) {\n this.dom.style && (this.dom.style.cursor = cursorStyle || 'default');\n };\n HandlerDomProxy.prototype.__togglePointerCapture = function (isPointerCapturing) {\n this.__mayPointerCapture = null;\n if (globalEventSupported\n && ((+this.__pointerCapturing) ^ (+isPointerCapturing))) {\n this.__pointerCapturing = isPointerCapturing;\n var globalHandlerScope = this._globalHandlerScope;\n isPointerCapturing\n ? mountGlobalDOMEventListeners(this, globalHandlerScope)\n : unmountDOMEventListeners(globalHandlerScope);\n }\n };\n return HandlerDomProxy;\n}(Eventful));\nexport default HandlerDomProxy;\n","var Param = (function () {\n function Param(target, e) {\n this.target = target;\n this.topTarget = e && e.topTarget;\n }\n return Param;\n}());\nvar Draggable = (function () {\n function Draggable(handler) {\n this.handler = handler;\n handler.on('mousedown', this._dragStart, this);\n handler.on('mousemove', this._drag, this);\n handler.on('mouseup', this._dragEnd, this);\n }\n Draggable.prototype._dragStart = function (e) {\n var draggingTarget = e.target;\n while (draggingTarget && !draggingTarget.draggable) {\n draggingTarget = draggingTarget.parent;\n }\n if (draggingTarget) {\n this._draggingTarget = draggingTarget;\n draggingTarget.dragging = true;\n this._x = e.offsetX;\n this._y = e.offsetY;\n this.handler.dispatchToElement(new Param(draggingTarget, e), 'dragstart', e.event);\n }\n };\n Draggable.prototype._drag = function (e) {\n var draggingTarget = this._draggingTarget;\n if (draggingTarget) {\n var x = e.offsetX;\n var y = e.offsetY;\n var dx = x - this._x;\n var dy = y - this._y;\n this._x = x;\n this._y = y;\n draggingTarget.drift(dx, dy, e);\n this.handler.dispatchToElement(new Param(draggingTarget, e), 'drag', e.event);\n var dropTarget = this.handler.findHover(x, y, draggingTarget).target;\n var lastDropTarget = this._dropTarget;\n this._dropTarget = dropTarget;\n if (draggingTarget !== dropTarget) {\n if (lastDropTarget && dropTarget !== lastDropTarget) {\n this.handler.dispatchToElement(new Param(lastDropTarget, e), 'dragleave', e.event);\n }\n if (dropTarget && dropTarget !== lastDropTarget) {\n this.handler.dispatchToElement(new Param(dropTarget, e), 'dragenter', e.event);\n }\n }\n }\n };\n Draggable.prototype._dragEnd = function (e) {\n var draggingTarget = this._draggingTarget;\n if (draggingTarget) {\n draggingTarget.dragging = false;\n }\n this.handler.dispatchToElement(new Param(draggingTarget, e), 'dragend', e.event);\n if (this._dropTarget) {\n this.handler.dispatchToElement(new Param(this._dropTarget, e), 'drop', e.event);\n }\n this._draggingTarget = null;\n this._dropTarget = null;\n };\n return Draggable;\n}());\nexport default Draggable;\n","import { __extends } from \"tslib\";\nimport * as zrUtil from '../core/util';\nimport Element from '../Element';\nimport BoundingRect from '../core/BoundingRect';\nvar Group = (function (_super) {\n __extends(Group, _super);\n function Group(opts) {\n var _this = _super.call(this) || this;\n _this.isGroup = true;\n _this._children = [];\n _this.attr(opts);\n return _this;\n }\n Group.prototype.childrenRef = function () {\n return this._children;\n };\n Group.prototype.children = function () {\n return this._children.slice();\n };\n Group.prototype.childAt = function (idx) {\n return this._children[idx];\n };\n Group.prototype.childOfName = function (name) {\n var children = this._children;\n for (var i = 0; i < children.length; i++) {\n if (children[i].name === name) {\n return children[i];\n }\n }\n };\n Group.prototype.childCount = function () {\n return this._children.length;\n };\n Group.prototype.add = function (child) {\n if (child) {\n if (child !== this && child.parent !== this) {\n this._children.push(child);\n this._doAdd(child);\n }\n if (child.__hostTarget) {\n throw 'This elemenet has been used as an attachment';\n }\n }\n return this;\n };\n Group.prototype.addBefore = function (child, nextSibling) {\n if (child && child !== this && child.parent !== this\n && nextSibling && nextSibling.parent === this) {\n var children = this._children;\n var idx = children.indexOf(nextSibling);\n if (idx >= 0) {\n children.splice(idx, 0, child);\n this._doAdd(child);\n }\n }\n return this;\n };\n Group.prototype.replaceAt = function (child, index) {\n var children = this._children;\n var old = children[index];\n if (child && child !== this && child.parent !== this && child !== old) {\n children[index] = child;\n old.parent = null;\n var zr = this.__zr;\n if (zr) {\n old.removeSelfFromZr(zr);\n }\n this._doAdd(child);\n }\n return this;\n };\n Group.prototype._doAdd = function (child) {\n if (child.parent) {\n child.parent.remove(child);\n }\n child.parent = this;\n var zr = this.__zr;\n if (zr && zr !== child.__zr) {\n child.addSelfToZr(zr);\n }\n zr && zr.refresh();\n };\n Group.prototype.remove = function (child) {\n var zr = this.__zr;\n var children = this._children;\n var idx = zrUtil.indexOf(children, child);\n if (idx < 0) {\n return this;\n }\n children.splice(idx, 1);\n child.parent = null;\n if (zr) {\n child.removeSelfFromZr(zr);\n }\n zr && zr.refresh();\n return this;\n };\n Group.prototype.removeAll = function () {\n var children = this._children;\n var zr = this.__zr;\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (zr) {\n child.removeSelfFromZr(zr);\n }\n child.parent = null;\n }\n children.length = 0;\n return this;\n };\n Group.prototype.eachChild = function (cb, context) {\n var children = this._children;\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n cb.call(context, child, i);\n }\n return this;\n };\n Group.prototype.traverse = function (cb, context) {\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n var stopped = cb.call(context, child);\n if (child.isGroup && !stopped) {\n child.traverse(cb, context);\n }\n }\n return this;\n };\n Group.prototype.addSelfToZr = function (zr) {\n _super.prototype.addSelfToZr.call(this, zr);\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n child.addSelfToZr(zr);\n }\n };\n Group.prototype.removeSelfFromZr = function (zr) {\n _super.prototype.removeSelfFromZr.call(this, zr);\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n child.removeSelfFromZr(zr);\n }\n };\n Group.prototype.getBoundingRect = function (includeChildren) {\n var tmpRect = new BoundingRect(0, 0, 0, 0);\n var children = includeChildren || this._children;\n var tmpMat = [];\n var rect = null;\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.ignore || child.invisible) {\n continue;\n }\n var childRect = child.getBoundingRect();\n var transform = child.getLocalTransform(tmpMat);\n if (transform) {\n BoundingRect.applyTransform(tmpRect, childRect, transform);\n rect = rect || tmpRect.clone();\n rect.union(tmpRect);\n }\n else {\n rect = rect || childRect.clone();\n rect.union(childRect);\n }\n }\n return rect || tmpRect;\n };\n return Group;\n}(Element));\nGroup.prototype.type = 'group';\nexport default Group;\n","import { __extends } from \"tslib\";\nimport Element from '../Element';\nimport BoundingRect from '../core/BoundingRect';\nimport { keys, extend, createObject } from '../core/util';\nvar STYLE_MAGIC_KEY = '__zr_style_' + Math.round((Math.random() * 10));\nexport var DEFAULT_COMMON_STYLE = {\n shadowBlur: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n shadowColor: '#000',\n opacity: 1,\n blend: 'source-over'\n};\nexport var DEFAULT_COMMON_ANIMATION_PROPS = {\n style: {\n shadowBlur: true,\n shadowOffsetX: true,\n shadowOffsetY: true,\n shadowColor: true,\n opacity: true\n }\n};\nDEFAULT_COMMON_STYLE[STYLE_MAGIC_KEY] = true;\nvar PRIMARY_STATES_KEYS = ['z', 'z2', 'invisible'];\nvar Displayable = (function (_super) {\n __extends(Displayable, _super);\n function Displayable(props) {\n return _super.call(this, props) || this;\n }\n Displayable.prototype._init = function (props) {\n var keysArr = keys(props);\n for (var i = 0; i < keysArr.length; i++) {\n var key = keysArr[i];\n if (key === 'style') {\n this.useStyle(props[key]);\n }\n else {\n _super.prototype.attrKV.call(this, key, props[key]);\n }\n }\n if (!this.style) {\n this.useStyle({});\n }\n };\n Displayable.prototype.beforeBrush = function () { };\n Displayable.prototype.afterBrush = function () { };\n Displayable.prototype.innerBeforeBrush = function () { };\n Displayable.prototype.innerAfterBrush = function () { };\n Displayable.prototype.shouldBePainted = function (viewWidth, viewHeight, considerClipPath, considerAncestors) {\n var m = this.transform;\n if (this.ignore\n || this.invisible\n || this.style.opacity === 0\n || (this.culling\n && isDisplayableCulled(this, viewWidth, viewHeight))\n || (m && !m[0] && !m[3])) {\n return false;\n }\n if (considerClipPath && this.__clipPaths) {\n for (var i = 0; i < this.__clipPaths.length; ++i) {\n if (this.__clipPaths[i].isZeroArea()) {\n return false;\n }\n }\n }\n if (considerAncestors && this.parent) {\n var parent_1 = this.parent;\n while (parent_1) {\n if (parent_1.ignore) {\n return false;\n }\n parent_1 = parent_1.parent;\n }\n }\n return true;\n };\n Displayable.prototype.contain = function (x, y) {\n return this.rectContain(x, y);\n };\n Displayable.prototype.traverse = function (cb, context) {\n cb.call(context, this);\n };\n Displayable.prototype.rectContain = function (x, y) {\n var coord = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n return rect.contain(coord[0], coord[1]);\n };\n Displayable.prototype.getPaintRect = function () {\n var rect = this._paintRect;\n if (!this._paintRect || this.__dirty) {\n var transform = this.transform;\n var elRect = this.getBoundingRect();\n var style = this.style;\n var shadowSize = style.shadowBlur || 0;\n var shadowOffsetX = style.shadowOffsetX || 0;\n var shadowOffsetY = style.shadowOffsetY || 0;\n rect = this._paintRect || (this._paintRect = new BoundingRect(0, 0, 0, 0));\n if (transform) {\n BoundingRect.applyTransform(rect, elRect, transform);\n }\n else {\n rect.copy(elRect);\n }\n if (shadowSize || shadowOffsetX || shadowOffsetY) {\n rect.width += shadowSize * 2 + Math.abs(shadowOffsetX);\n rect.height += shadowSize * 2 + Math.abs(shadowOffsetY);\n rect.x = Math.min(rect.x, rect.x + shadowOffsetX - shadowSize);\n rect.y = Math.min(rect.y, rect.y + shadowOffsetY - shadowSize);\n }\n var tolerance = this.dirtyRectTolerance;\n if (!rect.isZero()) {\n rect.x = Math.floor(rect.x - tolerance);\n rect.y = Math.floor(rect.y - tolerance);\n rect.width = Math.ceil(rect.width + 1 + tolerance * 2);\n rect.height = Math.ceil(rect.height + 1 + tolerance * 2);\n }\n }\n return rect;\n };\n Displayable.prototype.setPrevPaintRect = function (paintRect) {\n if (paintRect) {\n this._prevPaintRect = this._prevPaintRect || new BoundingRect(0, 0, 0, 0);\n this._prevPaintRect.copy(paintRect);\n }\n else {\n this._prevPaintRect = null;\n }\n };\n Displayable.prototype.getPrevPaintRect = function () {\n return this._prevPaintRect;\n };\n Displayable.prototype.animateStyle = function (loop) {\n return this.animate('style', loop);\n };\n Displayable.prototype.updateDuringAnimation = function (targetKey) {\n if (targetKey === 'style') {\n this.dirtyStyle();\n }\n else {\n this.markRedraw();\n }\n };\n Displayable.prototype.attrKV = function (key, value) {\n if (key !== 'style') {\n _super.prototype.attrKV.call(this, key, value);\n }\n else {\n if (!this.style) {\n this.useStyle(value);\n }\n else {\n this.setStyle(value);\n }\n }\n };\n Displayable.prototype.setStyle = function (keyOrObj, value) {\n if (typeof keyOrObj === 'string') {\n this.style[keyOrObj] = value;\n }\n else {\n extend(this.style, keyOrObj);\n }\n this.dirtyStyle();\n return this;\n };\n Displayable.prototype.dirtyStyle = function () {\n this.markRedraw();\n this.__dirty |= Displayable.STYLE_CHANGED_BIT;\n if (this._rect) {\n this._rect = null;\n }\n };\n Displayable.prototype.dirty = function () {\n this.dirtyStyle();\n };\n Displayable.prototype.styleChanged = function () {\n return !!(this.__dirty & Displayable.STYLE_CHANGED_BIT);\n };\n Displayable.prototype.styleUpdated = function () {\n this.__dirty &= ~Displayable.STYLE_CHANGED_BIT;\n };\n Displayable.prototype.createStyle = function (obj) {\n return createObject(DEFAULT_COMMON_STYLE, obj);\n };\n Displayable.prototype.useStyle = function (obj) {\n if (!obj[STYLE_MAGIC_KEY]) {\n obj = this.createStyle(obj);\n }\n if (this.__inHover) {\n this.__hoverStyle = obj;\n }\n else {\n this.style = obj;\n }\n this.dirtyStyle();\n };\n Displayable.prototype.isStyleObject = function (obj) {\n return obj[STYLE_MAGIC_KEY];\n };\n Displayable.prototype._innerSaveToNormal = function (toState) {\n _super.prototype._innerSaveToNormal.call(this, toState);\n var normalState = this._normalState;\n if (toState.style && !normalState.style) {\n normalState.style = this._mergeStyle(this.createStyle(), this.style);\n }\n this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS);\n };\n Displayable.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\n _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);\n var needsRestoreToNormal = !(state && keepCurrentStates);\n var targetStyle;\n if (state && state.style) {\n if (transition) {\n if (keepCurrentStates) {\n targetStyle = state.style;\n }\n else {\n targetStyle = this._mergeStyle(this.createStyle(), normalState.style);\n this._mergeStyle(targetStyle, state.style);\n }\n }\n else {\n targetStyle = this._mergeStyle(this.createStyle(), keepCurrentStates ? this.style : normalState.style);\n this._mergeStyle(targetStyle, state.style);\n }\n }\n else if (needsRestoreToNormal) {\n targetStyle = normalState.style;\n }\n if (targetStyle) {\n if (transition) {\n var sourceStyle = this.style;\n this.style = this.createStyle(needsRestoreToNormal ? {} : sourceStyle);\n if (needsRestoreToNormal) {\n var changedKeys = keys(sourceStyle);\n for (var i = 0; i < changedKeys.length; i++) {\n var key = changedKeys[i];\n if (key in targetStyle) {\n targetStyle[key] = targetStyle[key];\n this.style[key] = sourceStyle[key];\n }\n }\n }\n var targetKeys = keys(targetStyle);\n for (var i = 0; i < targetKeys.length; i++) {\n var key = targetKeys[i];\n this.style[key] = this.style[key];\n }\n this._transitionState(stateName, {\n style: targetStyle\n }, animationCfg, this.getAnimationStyleProps());\n }\n else {\n this.useStyle(targetStyle);\n }\n }\n for (var i = 0; i < PRIMARY_STATES_KEYS.length; i++) {\n var key = PRIMARY_STATES_KEYS[i];\n if (state && state[key] != null) {\n this[key] = state[key];\n }\n else if (needsRestoreToNormal) {\n if (normalState[key] != null) {\n this[key] = normalState[key];\n }\n }\n }\n };\n Displayable.prototype._mergeStates = function (states) {\n var mergedState = _super.prototype._mergeStates.call(this, states);\n var mergedStyle;\n for (var i = 0; i < states.length; i++) {\n var state = states[i];\n if (state.style) {\n mergedStyle = mergedStyle || {};\n this._mergeStyle(mergedStyle, state.style);\n }\n }\n if (mergedStyle) {\n mergedState.style = mergedStyle;\n }\n return mergedState;\n };\n Displayable.prototype._mergeStyle = function (targetStyle, sourceStyle) {\n extend(targetStyle, sourceStyle);\n return targetStyle;\n };\n Displayable.prototype.getAnimationStyleProps = function () {\n return DEFAULT_COMMON_ANIMATION_PROPS;\n };\n Displayable.STYLE_CHANGED_BIT = 2;\n Displayable.initDefaultProps = (function () {\n var dispProto = Displayable.prototype;\n dispProto.type = 'displayable';\n dispProto.invisible = false;\n dispProto.z = 0;\n dispProto.z2 = 0;\n dispProto.zlevel = 0;\n dispProto.culling = false;\n dispProto.cursor = 'pointer';\n dispProto.rectHover = false;\n dispProto.incremental = false;\n dispProto._rect = null;\n dispProto.dirtyRectTolerance = 0;\n dispProto.__dirty = Element.REDARAW_BIT | Displayable.STYLE_CHANGED_BIT;\n })();\n return Displayable;\n}(Element));\nvar tmpRect = new BoundingRect(0, 0, 0, 0);\nvar viewRect = new BoundingRect(0, 0, 0, 0);\nfunction isDisplayableCulled(el, width, height) {\n tmpRect.copy(el.getBoundingRect());\n if (el.transform) {\n tmpRect.applyTransform(el.transform);\n }\n viewRect.width = width;\n viewRect.height = height;\n return !tmpRect.intersect(viewRect);\n}\nexport default Displayable;\n","import { __extends } from \"tslib\";\nimport Path from '../Path';\nimport * as roundRectHelper from '../helper/roundRect';\nimport { subPixelOptimizeRect } from '../helper/subPixelOptimize';\nvar RectShape = (function () {\n function RectShape() {\n this.x = 0;\n this.y = 0;\n this.width = 0;\n this.height = 0;\n }\n return RectShape;\n}());\nexport { RectShape };\nvar subPixelOptimizeOutputShape = {};\nvar Rect = (function (_super) {\n __extends(Rect, _super);\n function Rect(opts) {\n return _super.call(this, opts) || this;\n }\n Rect.prototype.getDefaultShape = function () {\n return new RectShape();\n };\n Rect.prototype.buildPath = function (ctx, shape) {\n var x;\n var y;\n var width;\n var height;\n if (this.subPixelOptimize) {\n var optimizedShape = subPixelOptimizeRect(subPixelOptimizeOutputShape, shape, this.style);\n x = optimizedShape.x;\n y = optimizedShape.y;\n width = optimizedShape.width;\n height = optimizedShape.height;\n optimizedShape.r = shape.r;\n shape = optimizedShape;\n }\n else {\n x = shape.x;\n y = shape.y;\n width = shape.width;\n height = shape.height;\n }\n if (!shape.r) {\n ctx.rect(x, y, width, height);\n }\n else {\n roundRectHelper.buildPath(ctx, shape);\n }\n };\n Rect.prototype.isZeroArea = function () {\n return !this.shape.width || !this.shape.height;\n };\n return Rect;\n}(Path));\nRect.prototype.type = 'rect';\nexport default Rect;\n","export function buildPath(ctx, shape) {\n var x = shape.x;\n var y = shape.y;\n var width = shape.width;\n var height = shape.height;\n var r = shape.r;\n var r1;\n var r2;\n var r3;\n var r4;\n if (width < 0) {\n x = x + width;\n width = -width;\n }\n if (height < 0) {\n y = y + height;\n height = -height;\n }\n if (typeof r === 'number') {\n r1 = r2 = r3 = r4 = r;\n }\n else if (r instanceof Array) {\n if (r.length === 1) {\n r1 = r2 = r3 = r4 = r[0];\n }\n else if (r.length === 2) {\n r1 = r3 = r[0];\n r2 = r4 = r[1];\n }\n else if (r.length === 3) {\n r1 = r[0];\n r2 = r4 = r[1];\n r3 = r[2];\n }\n else {\n r1 = r[0];\n r2 = r[1];\n r3 = r[2];\n r4 = r[3];\n }\n }\n else {\n r1 = r2 = r3 = r4 = 0;\n }\n var total;\n if (r1 + r2 > width) {\n total = r1 + r2;\n r1 *= width / total;\n r2 *= width / total;\n }\n if (r3 + r4 > width) {\n total = r3 + r4;\n r3 *= width / total;\n r4 *= width / total;\n }\n if (r2 + r3 > height) {\n total = r2 + r3;\n r2 *= height / total;\n r3 *= height / total;\n }\n if (r1 + r4 > height) {\n total = r1 + r4;\n r1 *= height / total;\n r4 *= height / total;\n }\n ctx.moveTo(x + r1, y);\n ctx.lineTo(x + width - r2, y);\n r2 !== 0 && ctx.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0);\n ctx.lineTo(x + width, y + height - r3);\n r3 !== 0 && ctx.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2);\n ctx.lineTo(x + r4, y + height);\n r4 !== 0 && ctx.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI);\n ctx.lineTo(x, y + r1);\n r1 !== 0 && ctx.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5);\n}\n","import { __extends } from \"tslib\";\nimport Displayable, { DEFAULT_COMMON_STYLE, DEFAULT_COMMON_ANIMATION_PROPS } from './Displayable';\nimport BoundingRect from '../core/BoundingRect';\nimport { defaults, createObject } from '../core/util';\nexport var DEFAULT_IMAGE_STYLE = defaults({\n x: 0,\n y: 0\n}, DEFAULT_COMMON_STYLE);\nexport var DEFAULT_IMAGE_ANIMATION_PROPS = {\n style: defaults({\n x: true,\n y: true,\n width: true,\n height: true,\n sx: true,\n sy: true,\n sWidth: true,\n sHeight: true\n }, DEFAULT_COMMON_ANIMATION_PROPS.style)\n};\nfunction isImageLike(source) {\n return !!(source\n && typeof source !== 'string'\n && source.width && source.height);\n}\nvar ZRImage = (function (_super) {\n __extends(ZRImage, _super);\n function ZRImage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ZRImage.prototype.createStyle = function (obj) {\n return createObject(DEFAULT_IMAGE_STYLE, obj);\n };\n ZRImage.prototype._getSize = function (dim) {\n var style = this.style;\n var size = style[dim];\n if (size != null) {\n return size;\n }\n var imageSource = isImageLike(style.image)\n ? style.image : this.__image;\n if (!imageSource) {\n return 0;\n }\n var otherDim = dim === 'width' ? 'height' : 'width';\n var otherDimSize = style[otherDim];\n if (otherDimSize == null) {\n return imageSource[dim];\n }\n else {\n return imageSource[dim] / imageSource[otherDim] * otherDimSize;\n }\n };\n ZRImage.prototype.getWidth = function () {\n return this._getSize('width');\n };\n ZRImage.prototype.getHeight = function () {\n return this._getSize('height');\n };\n ZRImage.prototype.getAnimationStyleProps = function () {\n return DEFAULT_IMAGE_ANIMATION_PROPS;\n };\n ZRImage.prototype.getBoundingRect = function () {\n var style = this.style;\n if (!this._rect) {\n this._rect = new BoundingRect(style.x || 0, style.y || 0, this.getWidth(), this.getHeight());\n }\n return this._rect;\n };\n return ZRImage;\n}(Displayable));\nZRImage.prototype.type = 'image';\nexport default ZRImage;\n","import { __extends } from \"tslib\";\nimport { parseRichText, parsePlainText } from './helper/parseText';\nimport TSpan from './TSpan';\nimport { retrieve2, isString, each, normalizeCssArray, trim, retrieve3, extend, keys, defaults } from '../core/util';\nimport { DEFAULT_FONT, adjustTextX, adjustTextY } from '../contain/text';\nimport ZRImage from './Image';\nimport Rect from './shape/Rect';\nimport BoundingRect from '../core/BoundingRect';\nimport { copy } from '../core/matrix';\nimport Displayable, { DEFAULT_COMMON_ANIMATION_PROPS } from './Displayable';\nvar DEFAULT_RICH_TEXT_COLOR = {\n fill: '#000'\n};\nvar DEFAULT_STROKE_LINE_WIDTH = 2;\nexport var DEFAULT_TEXT_ANIMATION_PROPS = {\n style: defaults({\n fill: true,\n stroke: true,\n fillOpacity: true,\n strokeOpacity: true,\n lineWidth: true,\n fontSize: true,\n lineHeight: true,\n width: true,\n height: true,\n textShadowColor: true,\n textShadowBlur: true,\n textShadowOffsetX: true,\n textShadowOffsetY: true,\n backgroundColor: true,\n padding: true,\n borderColor: true,\n borderWidth: true,\n borderRadius: true\n }, DEFAULT_COMMON_ANIMATION_PROPS.style)\n};\nvar ZRText = (function (_super) {\n __extends(ZRText, _super);\n function ZRText(opts) {\n var _this = _super.call(this) || this;\n _this.type = 'text';\n _this._children = [];\n _this._defaultStyle = DEFAULT_RICH_TEXT_COLOR;\n _this.attr(opts);\n return _this;\n }\n ZRText.prototype.childrenRef = function () {\n return this._children;\n };\n ZRText.prototype.update = function () {\n if (this.styleChanged()) {\n this._updateSubTexts();\n }\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n child.zlevel = this.zlevel;\n child.z = this.z;\n child.z2 = this.z2;\n child.culling = this.culling;\n child.cursor = this.cursor;\n child.invisible = this.invisible;\n }\n var attachedTransform = this.attachedTransform;\n if (attachedTransform) {\n attachedTransform.updateTransform();\n var m = attachedTransform.transform;\n if (m) {\n this.transform = this.transform || [];\n copy(this.transform, m);\n }\n else {\n this.transform = null;\n }\n }\n else {\n _super.prototype.update.call(this);\n }\n };\n ZRText.prototype.getComputedTransform = function () {\n if (this.__hostTarget) {\n this.__hostTarget.getComputedTransform();\n this.__hostTarget.updateInnerText(true);\n }\n return this.attachedTransform ? this.attachedTransform.getComputedTransform()\n : _super.prototype.getComputedTransform.call(this);\n };\n ZRText.prototype._updateSubTexts = function () {\n this._childCursor = 0;\n normalizeTextStyle(this.style);\n this.style.rich\n ? this._updateRichTexts()\n : this._updatePlainTexts();\n this._children.length = this._childCursor;\n this.styleUpdated();\n };\n ZRText.prototype.addSelfToZr = function (zr) {\n _super.prototype.addSelfToZr.call(this, zr);\n for (var i = 0; i < this._children.length; i++) {\n this._children[i].__zr = zr;\n }\n };\n ZRText.prototype.removeSelfFromZr = function (zr) {\n _super.prototype.removeSelfFromZr.call(this, zr);\n for (var i = 0; i < this._children.length; i++) {\n this._children[i].__zr = null;\n }\n };\n ZRText.prototype.getBoundingRect = function () {\n if (this.styleChanged()) {\n this._updateSubTexts();\n }\n if (!this._rect) {\n var tmpRect = new BoundingRect(0, 0, 0, 0);\n var children = this._children;\n var tmpMat = [];\n var rect = null;\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n var childRect = child.getBoundingRect();\n var transform = child.getLocalTransform(tmpMat);\n if (transform) {\n tmpRect.copy(childRect);\n tmpRect.applyTransform(transform);\n rect = rect || tmpRect.clone();\n rect.union(tmpRect);\n }\n else {\n rect = rect || childRect.clone();\n rect.union(childRect);\n }\n }\n this._rect = rect || tmpRect;\n }\n return this._rect;\n };\n ZRText.prototype.setDefaultTextStyle = function (defaultTextStyle) {\n this._defaultStyle = defaultTextStyle || DEFAULT_RICH_TEXT_COLOR;\n };\n ZRText.prototype.setTextContent = function (textContent) {\n throw new Error('Can\\'t attach text on another text');\n };\n ZRText.prototype._mergeStyle = function (targetStyle, sourceStyle) {\n if (!sourceStyle) {\n return targetStyle;\n }\n var sourceRich = sourceStyle.rich;\n var targetRich = targetStyle.rich || (sourceRich && {});\n extend(targetStyle, sourceStyle);\n if (sourceRich && targetRich) {\n this._mergeRich(targetRich, sourceRich);\n targetStyle.rich = targetRich;\n }\n else if (targetRich) {\n targetStyle.rich = targetRich;\n }\n return targetStyle;\n };\n ZRText.prototype._mergeRich = function (targetRich, sourceRich) {\n var richNames = keys(sourceRich);\n for (var i = 0; i < richNames.length; i++) {\n var richName = richNames[i];\n targetRich[richName] = targetRich[richName] || {};\n extend(targetRich[richName], sourceRich[richName]);\n }\n };\n ZRText.prototype.getAnimationStyleProps = function () {\n return DEFAULT_TEXT_ANIMATION_PROPS;\n };\n ZRText.prototype._getOrCreateChild = function (Ctor) {\n var child = this._children[this._childCursor];\n if (!child || !(child instanceof Ctor)) {\n child = new Ctor();\n }\n this._children[this._childCursor++] = child;\n child.__zr = this.__zr;\n child.parent = this;\n return child;\n };\n ZRText.prototype._updatePlainTexts = function () {\n var style = this.style;\n var textFont = style.font || DEFAULT_FONT;\n var textPadding = style.padding;\n var text = getStyleText(style);\n var contentBlock = parsePlainText(text, style);\n var needDrawBg = needDrawBackground(style);\n var bgColorDrawn = !!(style.backgroundColor);\n var outerHeight = contentBlock.outerHeight;\n var textLines = contentBlock.lines;\n var lineHeight = contentBlock.lineHeight;\n var defaultStyle = this._defaultStyle;\n var baseX = style.x || 0;\n var baseY = style.y || 0;\n var textAlign = style.align || defaultStyle.align || 'left';\n var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign || 'top';\n var textX = baseX;\n var textY = adjustTextY(baseY, contentBlock.contentHeight, verticalAlign);\n if (needDrawBg || textPadding) {\n var outerWidth_1 = contentBlock.width;\n textPadding && (outerWidth_1 += textPadding[1] + textPadding[3]);\n var boxX = adjustTextX(baseX, outerWidth_1, textAlign);\n var boxY = adjustTextY(baseY, outerHeight, verticalAlign);\n needDrawBg && this._renderBackground(style, style, boxX, boxY, outerWidth_1, outerHeight);\n }\n textY += lineHeight / 2;\n if (textPadding) {\n textX = getTextXForPadding(baseX, textAlign, textPadding);\n if (verticalAlign === 'top') {\n textY += textPadding[0];\n }\n else if (verticalAlign === 'bottom') {\n textY -= textPadding[2];\n }\n }\n var defaultLineWidth = 0;\n var useDefaultFill = false;\n var textFill = getFill('fill' in style\n ? style.fill\n : (useDefaultFill = true, defaultStyle.fill));\n var textStroke = getStroke('stroke' in style\n ? style.stroke\n : (!bgColorDrawn\n && (!defaultStyle.autoStroke || useDefaultFill))\n ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke)\n : null);\n var hasShadow = style.textShadowBlur > 0;\n var fixedBoundingRect = style.width != null\n && (style.overflow === 'truncate' || style.overflow === 'break' || style.overflow === 'breakAll');\n var calculatedLineHeight = contentBlock.calculatedLineHeight;\n for (var i = 0; i < textLines.length; i++) {\n var el = this._getOrCreateChild(TSpan);\n var subElStyle = el.createStyle();\n el.useStyle(subElStyle);\n subElStyle.text = textLines[i];\n subElStyle.x = textX;\n subElStyle.y = textY;\n if (textAlign) {\n subElStyle.textAlign = textAlign;\n }\n subElStyle.textBaseline = 'middle';\n subElStyle.opacity = style.opacity;\n subElStyle.strokeFirst = true;\n if (hasShadow) {\n subElStyle.shadowBlur = style.textShadowBlur || 0;\n subElStyle.shadowColor = style.textShadowColor || 'transparent';\n subElStyle.shadowOffsetX = style.textShadowOffsetX || 0;\n subElStyle.shadowOffsetY = style.textShadowOffsetY || 0;\n }\n if (textStroke) {\n subElStyle.stroke = textStroke;\n subElStyle.lineWidth = style.lineWidth || defaultLineWidth;\n subElStyle.lineDash = style.lineDash;\n subElStyle.lineDashOffset = style.lineDashOffset || 0;\n }\n if (textFill) {\n subElStyle.fill = textFill;\n }\n subElStyle.font = textFont;\n textY += lineHeight;\n if (fixedBoundingRect) {\n el.setBoundingRect(new BoundingRect(adjustTextX(subElStyle.x, style.width, subElStyle.textAlign), adjustTextY(subElStyle.y, calculatedLineHeight, subElStyle.textBaseline), style.width, calculatedLineHeight));\n }\n }\n };\n ZRText.prototype._updateRichTexts = function () {\n var style = this.style;\n var text = getStyleText(style);\n var contentBlock = parseRichText(text, style);\n var contentWidth = contentBlock.width;\n var outerWidth = contentBlock.outerWidth;\n var outerHeight = contentBlock.outerHeight;\n var textPadding = style.padding;\n var baseX = style.x || 0;\n var baseY = style.y || 0;\n var defaultStyle = this._defaultStyle;\n var textAlign = style.align || defaultStyle.align;\n var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign;\n var boxX = adjustTextX(baseX, outerWidth, textAlign);\n var boxY = adjustTextY(baseY, outerHeight, verticalAlign);\n var xLeft = boxX;\n var lineTop = boxY;\n if (textPadding) {\n xLeft += textPadding[3];\n lineTop += textPadding[0];\n }\n var xRight = xLeft + contentWidth;\n if (needDrawBackground(style)) {\n this._renderBackground(style, style, boxX, boxY, outerWidth, outerHeight);\n }\n var bgColorDrawn = !!(style.backgroundColor);\n for (var i = 0; i < contentBlock.lines.length; i++) {\n var line = contentBlock.lines[i];\n var tokens = line.tokens;\n var tokenCount = tokens.length;\n var lineHeight = line.lineHeight;\n var remainedWidth = line.width;\n var leftIndex = 0;\n var lineXLeft = xLeft;\n var lineXRight = xRight;\n var rightIndex = tokenCount - 1;\n var token = void 0;\n while (leftIndex < tokenCount\n && (token = tokens[leftIndex], !token.align || token.align === 'left')) {\n this._placeToken(token, style, lineHeight, lineTop, lineXLeft, 'left', bgColorDrawn);\n remainedWidth -= token.width;\n lineXLeft += token.width;\n leftIndex++;\n }\n while (rightIndex >= 0\n && (token = tokens[rightIndex], token.align === 'right')) {\n this._placeToken(token, style, lineHeight, lineTop, lineXRight, 'right', bgColorDrawn);\n remainedWidth -= token.width;\n lineXRight -= token.width;\n rightIndex--;\n }\n lineXLeft += (contentWidth - (lineXLeft - xLeft) - (xRight - lineXRight) - remainedWidth) / 2;\n while (leftIndex <= rightIndex) {\n token = tokens[leftIndex];\n this._placeToken(token, style, lineHeight, lineTop, lineXLeft + token.width / 2, 'center', bgColorDrawn);\n lineXLeft += token.width;\n leftIndex++;\n }\n lineTop += lineHeight;\n }\n };\n ZRText.prototype._placeToken = function (token, style, lineHeight, lineTop, x, textAlign, parentBgColorDrawn) {\n var tokenStyle = style.rich[token.styleName] || {};\n tokenStyle.text = token.text;\n var verticalAlign = token.verticalAlign;\n var y = lineTop + lineHeight / 2;\n if (verticalAlign === 'top') {\n y = lineTop + token.height / 2;\n }\n else if (verticalAlign === 'bottom') {\n y = lineTop + lineHeight - token.height / 2;\n }\n var needDrawBg = !token.isLineHolder && needDrawBackground(tokenStyle);\n needDrawBg && this._renderBackground(tokenStyle, style, textAlign === 'right'\n ? x - token.width\n : textAlign === 'center'\n ? x - token.width / 2\n : x, y - token.height / 2, token.width, token.height);\n var bgColorDrawn = !!tokenStyle.backgroundColor;\n var textPadding = token.textPadding;\n if (textPadding) {\n x = getTextXForPadding(x, textAlign, textPadding);\n y -= token.height / 2 - textPadding[0] - token.innerHeight / 2;\n }\n var el = this._getOrCreateChild(TSpan);\n var subElStyle = el.createStyle();\n el.useStyle(subElStyle);\n var defaultStyle = this._defaultStyle;\n var useDefaultFill = false;\n var defaultLineWidth = 0;\n var textFill = getStroke('fill' in tokenStyle ? tokenStyle.fill\n : 'fill' in style ? style.fill\n : (useDefaultFill = true, defaultStyle.fill));\n var textStroke = getStroke('stroke' in tokenStyle ? tokenStyle.stroke\n : 'stroke' in style ? style.stroke\n : (!bgColorDrawn\n && !parentBgColorDrawn\n && (!defaultStyle.autoStroke || useDefaultFill)) ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke)\n : null);\n var hasShadow = tokenStyle.textShadowBlur > 0\n || style.textShadowBlur > 0;\n subElStyle.text = token.text;\n subElStyle.x = x;\n subElStyle.y = y;\n if (hasShadow) {\n subElStyle.shadowBlur = tokenStyle.textShadowBlur || style.textShadowBlur || 0;\n subElStyle.shadowColor = tokenStyle.textShadowColor || style.textShadowColor || 'transparent';\n subElStyle.shadowOffsetX = tokenStyle.textShadowOffsetX || style.textShadowOffsetX || 0;\n subElStyle.shadowOffsetY = tokenStyle.textShadowOffsetY || style.textShadowOffsetY || 0;\n }\n subElStyle.textAlign = textAlign;\n subElStyle.textBaseline = 'middle';\n subElStyle.font = token.font || DEFAULT_FONT;\n subElStyle.opacity = retrieve3(tokenStyle.opacity, style.opacity, 1);\n if (textStroke) {\n subElStyle.lineWidth = retrieve3(tokenStyle.lineWidth, style.lineWidth, defaultLineWidth);\n subElStyle.lineDash = retrieve2(tokenStyle.lineDash, style.lineDash);\n subElStyle.lineDashOffset = style.lineDashOffset || 0;\n subElStyle.stroke = textStroke;\n }\n if (textFill) {\n subElStyle.fill = textFill;\n }\n var textWidth = token.contentWidth;\n var textHeight = token.contentHeight;\n el.setBoundingRect(new BoundingRect(adjustTextX(subElStyle.x, textWidth, subElStyle.textAlign), adjustTextY(subElStyle.y, textHeight, subElStyle.textBaseline), textWidth, textHeight));\n };\n ZRText.prototype._renderBackground = function (style, topStyle, x, y, width, height) {\n var textBackgroundColor = style.backgroundColor;\n var textBorderWidth = style.borderWidth;\n var textBorderColor = style.borderColor;\n var isPlainBg = isString(textBackgroundColor);\n var textBorderRadius = style.borderRadius;\n var self = this;\n var rectEl;\n var imgEl;\n if (isPlainBg || (textBorderWidth && textBorderColor)) {\n rectEl = this._getOrCreateChild(Rect);\n rectEl.useStyle(rectEl.createStyle());\n rectEl.style.fill = null;\n var rectShape = rectEl.shape;\n rectShape.x = x;\n rectShape.y = y;\n rectShape.width = width;\n rectShape.height = height;\n rectShape.r = textBorderRadius;\n rectEl.dirtyShape();\n }\n if (isPlainBg) {\n var rectStyle = rectEl.style;\n rectStyle.fill = textBackgroundColor || null;\n rectStyle.fillOpacity = retrieve2(style.fillOpacity, 1);\n }\n else if (textBackgroundColor && textBackgroundColor.image) {\n imgEl = this._getOrCreateChild(ZRImage);\n imgEl.onload = function () {\n self.dirtyStyle();\n };\n var imgStyle = imgEl.style;\n imgStyle.image = textBackgroundColor.image;\n imgStyle.x = x;\n imgStyle.y = y;\n imgStyle.width = width;\n imgStyle.height = height;\n }\n if (textBorderWidth && textBorderColor) {\n var rectStyle = rectEl.style;\n rectStyle.lineWidth = textBorderWidth;\n rectStyle.stroke = textBorderColor;\n rectStyle.strokeOpacity = retrieve2(style.strokeOpacity, 1);\n rectStyle.lineDash = style.borderDash;\n rectStyle.lineDashOffset = style.borderDashOffset || 0;\n rectEl.strokeContainThreshold = 0;\n if (rectEl.hasFill() && rectEl.hasStroke()) {\n rectStyle.strokeFirst = true;\n rectStyle.lineWidth *= 2;\n }\n }\n var commonStyle = (rectEl || imgEl).style;\n commonStyle.shadowBlur = style.shadowBlur || 0;\n commonStyle.shadowColor = style.shadowColor || 'transparent';\n commonStyle.shadowOffsetX = style.shadowOffsetX || 0;\n commonStyle.shadowOffsetY = style.shadowOffsetY || 0;\n commonStyle.opacity = retrieve3(style.opacity, topStyle.opacity, 1);\n };\n ZRText.makeFont = function (style) {\n var font = '';\n if (style.fontSize || style.fontFamily || style.fontWeight) {\n var fontSize = '';\n if (typeof style.fontSize === 'string'\n && (style.fontSize.indexOf('px') !== -1\n || style.fontSize.indexOf('rem') !== -1\n || style.fontSize.indexOf('em') !== -1)) {\n fontSize = style.fontSize;\n }\n else if (!isNaN(+style.fontSize)) {\n fontSize = style.fontSize + 'px';\n }\n else {\n fontSize = '12px';\n }\n font = [\n style.fontStyle,\n style.fontWeight,\n fontSize,\n style.fontFamily || 'sans-serif'\n ].join(' ');\n }\n return font && trim(font) || style.textFont || style.font;\n };\n return ZRText;\n}(Displayable));\nvar VALID_TEXT_ALIGN = { left: true, right: 1, center: 1 };\nvar VALID_TEXT_VERTICAL_ALIGN = { top: 1, bottom: 1, middle: 1 };\nexport function normalizeTextStyle(style) {\n normalizeStyle(style);\n each(style.rich, normalizeStyle);\n return style;\n}\nfunction normalizeStyle(style) {\n if (style) {\n style.font = ZRText.makeFont(style);\n var textAlign = style.align;\n textAlign === 'middle' && (textAlign = 'center');\n style.align = (textAlign == null || VALID_TEXT_ALIGN[textAlign]) ? textAlign : 'left';\n var verticalAlign = style.verticalAlign;\n verticalAlign === 'center' && (verticalAlign = 'middle');\n style.verticalAlign = (verticalAlign == null || VALID_TEXT_VERTICAL_ALIGN[verticalAlign]) ? verticalAlign : 'top';\n var textPadding = style.padding;\n if (textPadding) {\n style.padding = normalizeCssArray(style.padding);\n }\n }\n}\nfunction getStroke(stroke, lineWidth) {\n return (stroke == null || lineWidth <= 0 || stroke === 'transparent' || stroke === 'none')\n ? null\n : (stroke.image || stroke.colorStops)\n ? '#000'\n : stroke;\n}\nfunction getFill(fill) {\n return (fill == null || fill === 'none')\n ? null\n : (fill.image || fill.colorStops)\n ? '#000'\n : fill;\n}\nfunction getTextXForPadding(x, textAlign, textPadding) {\n return textAlign === 'right'\n ? (x - textPadding[1])\n : textAlign === 'center'\n ? (x + textPadding[3] / 2 - textPadding[1] / 2)\n : (x + textPadding[3]);\n}\nfunction getStyleText(style) {\n var text = style.text;\n text != null && (text += '');\n return text;\n}\nfunction needDrawBackground(style) {\n return !!(style.backgroundColor\n || (style.borderWidth && style.borderColor));\n}\nexport default ZRText;\n"],"sourceRoot":""}