{"version":3,"sources":["webpack:///./node_modules/echarts/lib/chart/helper/createSeriesDataSimply.js","webpack:///./node_modules/echarts/lib/chart/pie/pieLayout.js","webpack:///./node_modules/echarts/lib/processor/dataFilter.js","webpack:///./node_modules/echarts/lib/label/labelGuideHelper.js","webpack:///./node_modules/echarts/lib/chart/pie/labelLayout.js","webpack:///./node_modules/echarts/lib/chart/pie/PieView.js","webpack:///./node_modules/echarts/lib/visual/LegendVisualProvider.js","webpack:///./node_modules/echarts/lib/chart/pie/PieSeries.js","webpack:///./node_modules/echarts/lib/processor/negativeDataFilter.js","webpack:///./node_modules/echarts/lib/chart/pie/install.js","webpack:///../../../src/components/VBtn/index.ts","webpack:///./src/components/dashboards/revenue/top_5_articles_today.vue","webpack:///src/components/dashboards/revenue/top_5_articles_today.vue","webpack:///./src/components/dashboards/revenue/top_5_articles_today.vue?e482","webpack:///./src/components/dashboards/revenue/top_5_articles_today.vue?35c7","webpack:///./src/components/dashboards/revenue/top_5_articles_today.vue?20ef"],"names":["createSeriesDataSimply","seriesModel","opt","nameList","coordDimensions","encodeDefine","getEncode","source","getSource","dimensions","list","initData","PI2","Math","PI","RADIAN","getViewRect","api","getBoxLayoutParams","width","getWidth","height","getHeight","getBasicPieLayout","viewRect","center","get","radius","cx","cy","size","min","r0","r","coordSys","coordinateSystem","point","dataToPoint","x","y","pieLayout","seriesType","ecModel","eachSeriesByType","data","getData","valueDim","mapDimension","_a","startAngle","endAngle","padAngle","minAngle","minAndPadAngle","validDataCount","each","value","isNaN","sum","getSum","unitRadian","clockwise","roseType","stillShowZeroSum","extent","getDataExtent","dir","angles","halfPadAngle","layoutData","getSeriesLayoutData","angleRange","abs","restAngle","valueSumLargerThanMinAngle","currentAngle","setLayout","idx","angle","setItemLayout","NaN","actualStartAngle","actualEndAngle","angle_1","layout_1","getItemLayout","layout_2","dataFilter","reset","legendModels","findComponents","mainType","length","filterSelf","name","getName","i","isSelected","PathProxy","CMD","projectPointToLine","x1","y1","x2","y2","out","limitToEnds","dx","dy","dx1","dy1","lineLen","sqrt","projectedLen","t","max","ox","oy","pt0","Point","pt1","pt2","dir2","tmpArr","tmpProjPoint","limitTurnAngle","linePoints","minTurnAngle","fromArray","sub","len1","len","len2","scale","angleCos","dot","minTurnAngleCos","cos","d","scaleAndAdd","tan","copy","toArray","limitSurfaceAngle","surfaceNormal","maxSurfaceAngle","maxSurfaceAngleCos","HALF_PI","angle2","acos","newAngle","setLabelLineState","labelLine","ignore","stateName","stateModel","isNormal","stateObj","ensureState","smooth","shape","styleObj","getModel","getLineStyle","useStyle","style","buildLabelLinePath","path","points","moveTo","vector","lineTo","moveLen","midPoint0","midPoint2","midPoint1","bezierCurveTo","setLabelLineStyle","targetEl","statesModels","defaultStyle","getTextGuideLine","label","getTextContent","normalModel","normal","showNormal","labelIgnoreNormal","stateShow","isLabelIgnored","states","Polyline","setTextGuideLine","stateProxy","fill","showAbove","labelLineConfig","textGuideLineConfig","buildPath","removeTextGuideLine","getLabelLineStatesModels","itemModel","labelLineName","adjustSingleSide","viewWidth","viewHeight","viewLeft","viewTop","farthestX","position","labelAlignTo","recalculateX","recalculateXOnSemiToAlignOnEllipseCurve","semi","rB","rB2","item","rA","rA2","newX","deltaX","newTargetWidth","targetTextWidth","constrainTextWidth","items","topSemi","maxY","bottomSemi","push","avoidOverlap","labelLayoutList","leftList","rightList","leftmostX","Number","MAX_VALUE","rightmostX","isPositionCenter","layout","labelStyleWidth","labelDistance","edgeDistance","bleedMargin","isAlignToEdge","padding","paddingH","extraPaddingH","backgroundColor","realTextWidth","rect","dist","availableWidth","forceRecalculate","textRect","bgColor","overflow","oldOuterWidth","oldHeight","match","setStyle","innerRect","getBoundingRect","ceil","availableInnerWidth","newWidth","unconstrainedWidth","newRect","margin","sectorShape","pieLabelLayout","hasLabelRotate","minShowLabelRadian","getLayout","setNotShow","el","isLabelShown","key","sector","getItemGraphicEl","getItemModel","labelModel","labelPosition","labelLineModel","labelLineLen","labelLineLen2","textX","textY","textAlign","midAngle","nx","ny","sin","isLabelInside","x3","y3","labelRotate","rotate","radialAngle","rad","atan2","isDown","rotation","verticalAlign","align","selectState","select","clone","applyTransform","getComputedTransform","setTextConfig","inside","notShowLabel","setShape","__hostTarget","anchor","_super","PiePiece","_this","call","this","z2","text","setTextContent","updateData","prototype","firstCreate","hostModel","emphasisModel","animationType","getShallow","ssr","scaleX","scaleY","dataIndex","isFrom","originX","originY","getItemVisual","offset","cursorStyle","attr","_updateLabel","labelText","visualColor","visualOpacity","opacity","labelFetcher","labelDataIndex","inheritColor","defaultOpacity","defaultText","getFormattedLabel","polyline","stroke","PieView","apply","arguments","ignoreLabelLineUpdate","render","payload","oldData","_data","group","count","s","_emptyCircleSector","remove","getItemStyle","add","diff","piePiece","setItemGraphicEl","update","newIdx","oldIdx","off","execute","dispose","containPoint","itemLayout","type","Chart","LegendVisualProvider","getDataWithEncodedVisual","getRawData","_getDataWithEncodedVisual","_getRawData","getAllNames","rawData","mapArray","containName","indexOfName","dataWithEncodedVisual","innerData","model","PieSeriesModel","init","option","legendVisualProvider","_defaultLabelLine","mergeOption","getInitialData","encodeDefaulter","getDataParams","dataInner","seats","valueList_1","params","percent","$vars","labelLineNormalOpt","labelLineEmphasisOpt","emphasis","show","defaultOption","z","legendHoverLink","colorBy","minShowLabelAngle","selectedOffset","percentPrecision","left","top","right","bottom","alignTo","distanceToLabelLine","length2","lineStyle","itemStyle","borderWidth","borderJoin","showEmptyCircle","emptyCircleStyle","color","labelLayout","hideOverlap","scaleSize","avoidLabelOverlap","animationDuration","animationTypeUpdate","animationEasingUpdate","animationDurationUpdate","animationEasing","Series","PieSeries","negativeDataFilter","curValue","install","registers","registerChartView","registerSeriesModel","registerAction","registerLayout","registerProcessor","attrs","staticClass","_v","_c","chart_id","staticStyle","_vm","scopedSlots","fn","staticRenderFns","component"],"mappings":"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","file":"js/chunk-752ab327.030ad058.js","sourcesContent":["\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport prepareSeriesDataSchema from '../../data/helper/createDimensions.js';\nimport SeriesData from '../../data/SeriesData.js';\nimport { extend, isArray } from 'zrender/lib/core/util.js';\n/**\n * [Usage]:\n * (1)\n * createListSimply(seriesModel, ['value']);\n * (2)\n * createListSimply(seriesModel, {\n * coordDimensions: ['value'],\n * dimensionsCount: 5\n * });\n */\nexport default function createSeriesDataSimply(seriesModel, opt, nameList) {\n opt = isArray(opt) && {\n coordDimensions: opt\n } || extend({\n encodeDefine: seriesModel.getEncode()\n }, opt);\n var source = seriesModel.getSource();\n var dimensions = prepareSeriesDataSchema(source, opt).dimensions;\n var list = new SeriesData(dimensions, seriesModel);\n list.initData(source, nameList);\n return list;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { parsePercent, linearMap } from '../../util/number.js';\nimport * as layout from '../../util/layout.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { normalizeArcAngles } from 'zrender/lib/core/PathProxy.js';\nimport { makeInner } from '../../util/model.js';\nvar PI2 = Math.PI * 2;\nvar RADIAN = Math.PI / 180;\nfunction getViewRect(seriesModel, api) {\n return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n}\nexport function getBasicPieLayout(seriesModel, api) {\n var viewRect = getViewRect(seriesModel, api);\n // center can be string or number when coordinateSystem is specified\n var center = seriesModel.get('center');\n var radius = seriesModel.get('radius');\n if (!zrUtil.isArray(radius)) {\n radius = [0, radius];\n }\n var width = parsePercent(viewRect.width, api.getWidth());\n var height = parsePercent(viewRect.height, api.getHeight());\n var size = Math.min(width, height);\n var r0 = parsePercent(radius[0], size / 2);\n var r = parsePercent(radius[1], size / 2);\n var cx;\n var cy;\n var coordSys = seriesModel.coordinateSystem;\n if (coordSys) {\n // percentage is not allowed when coordinate system is specified\n var point = coordSys.dataToPoint(center);\n cx = point[0] || 0;\n cy = point[1] || 0;\n } else {\n if (!zrUtil.isArray(center)) {\n center = [center, center];\n }\n cx = parsePercent(center[0], width) + viewRect.x;\n cy = parsePercent(center[1], height) + viewRect.y;\n }\n return {\n cx: cx,\n cy: cy,\n r0: r0,\n r: r\n };\n}\nexport default function pieLayout(seriesType, ecModel, api) {\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n var data = seriesModel.getData();\n var valueDim = data.mapDimension('value');\n var viewRect = getViewRect(seriesModel, api);\n var _a = getBasicPieLayout(seriesModel, api),\n cx = _a.cx,\n cy = _a.cy,\n r = _a.r,\n r0 = _a.r0;\n var startAngle = -seriesModel.get('startAngle') * RADIAN;\n var endAngle = seriesModel.get('endAngle');\n var padAngle = seriesModel.get('padAngle') * RADIAN;\n endAngle = endAngle === 'auto' ? startAngle - PI2 : -endAngle * RADIAN;\n var minAngle = seriesModel.get('minAngle') * RADIAN;\n var minAndPadAngle = minAngle + padAngle;\n var validDataCount = 0;\n data.each(valueDim, function (value) {\n !isNaN(value) && validDataCount++;\n });\n var sum = data.getSum(valueDim);\n // Sum may be 0\n var unitRadian = Math.PI / (sum || validDataCount) * 2;\n var clockwise = seriesModel.get('clockwise');\n var roseType = seriesModel.get('roseType');\n var stillShowZeroSum = seriesModel.get('stillShowZeroSum');\n // [0...max]\n var extent = data.getDataExtent(valueDim);\n extent[0] = 0;\n var dir = clockwise ? 1 : -1;\n var angles = [startAngle, endAngle];\n var halfPadAngle = dir * padAngle / 2;\n normalizeArcAngles(angles, !clockwise);\n startAngle = angles[0], endAngle = angles[1];\n var layoutData = getSeriesLayoutData(seriesModel);\n layoutData.startAngle = startAngle;\n layoutData.endAngle = endAngle;\n layoutData.clockwise = clockwise;\n var angleRange = Math.abs(endAngle - startAngle);\n // In the case some sector angle is smaller than minAngle\n var restAngle = angleRange;\n var valueSumLargerThanMinAngle = 0;\n var currentAngle = startAngle;\n data.setLayout({\n viewRect: viewRect,\n r: r\n });\n data.each(valueDim, function (value, idx) {\n var angle;\n if (isNaN(value)) {\n data.setItemLayout(idx, {\n angle: NaN,\n startAngle: NaN,\n endAngle: NaN,\n clockwise: clockwise,\n cx: cx,\n cy: cy,\n r0: r0,\n r: roseType ? NaN : r\n });\n return;\n }\n // FIXME 兼容 2.0 但是 roseType 是 area 的时候才是这样?\n if (roseType !== 'area') {\n angle = sum === 0 && stillShowZeroSum ? unitRadian : value * unitRadian;\n } else {\n angle = angleRange / validDataCount;\n }\n if (angle < minAndPadAngle) {\n angle = minAndPadAngle;\n restAngle -= minAndPadAngle;\n } else {\n valueSumLargerThanMinAngle += value;\n }\n var endAngle = currentAngle + dir * angle;\n // calculate display angle\n var actualStartAngle = 0;\n var actualEndAngle = 0;\n if (padAngle > angle) {\n actualStartAngle = currentAngle + dir * angle / 2;\n actualEndAngle = actualStartAngle;\n } else {\n actualStartAngle = currentAngle + halfPadAngle;\n actualEndAngle = endAngle - halfPadAngle;\n }\n data.setItemLayout(idx, {\n angle: angle,\n startAngle: actualStartAngle,\n endAngle: actualEndAngle,\n clockwise: clockwise,\n cx: cx,\n cy: cy,\n r0: r0,\n r: roseType ? linearMap(value, extent, [r0, r]) : r\n });\n currentAngle = endAngle;\n });\n // Some sector is constrained by minAngle and padAngle\n // Rest sectors needs recalculate angle\n if (restAngle < PI2 && validDataCount) {\n // Average the angle if rest angle is not enough after all angles is\n // Constrained by minAngle and padAngle\n if (restAngle <= 1e-3) {\n var angle_1 = angleRange / validDataCount;\n data.each(valueDim, function (value, idx) {\n if (!isNaN(value)) {\n var layout_1 = data.getItemLayout(idx);\n layout_1.angle = angle_1;\n var actualStartAngle = 0;\n var actualEndAngle = 0;\n if (angle_1 < padAngle) {\n actualStartAngle = startAngle + dir * (idx + 1 / 2) * angle_1;\n actualEndAngle = actualStartAngle;\n } else {\n actualStartAngle = startAngle + dir * idx * angle_1 + halfPadAngle;\n actualEndAngle = startAngle + dir * (idx + 1) * angle_1 - halfPadAngle;\n }\n layout_1.startAngle = actualStartAngle;\n layout_1.endAngle = actualEndAngle;\n }\n });\n } else {\n unitRadian = restAngle / valueSumLargerThanMinAngle;\n currentAngle = startAngle;\n data.each(valueDim, function (value, idx) {\n if (!isNaN(value)) {\n var layout_2 = data.getItemLayout(idx);\n var angle = layout_2.angle === minAndPadAngle ? minAndPadAngle : value * unitRadian;\n var actualStartAngle = 0;\n var actualEndAngle = 0;\n if (angle < padAngle) {\n actualStartAngle = currentAngle + dir * angle / 2;\n actualEndAngle = actualStartAngle;\n } else {\n actualStartAngle = currentAngle + halfPadAngle;\n actualEndAngle = currentAngle + dir * angle - halfPadAngle;\n }\n layout_2.startAngle = actualStartAngle;\n layout_2.endAngle = actualEndAngle;\n currentAngle += dir * angle;\n }\n });\n }\n }\n });\n}\nexport var getSeriesLayoutData = makeInner();","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nexport default function dataFilter(seriesType) {\n return {\n seriesType: seriesType,\n reset: function (seriesModel, ecModel) {\n var legendModels = ecModel.findComponents({\n mainType: 'legend'\n });\n if (!legendModels || !legendModels.length) {\n return;\n }\n var data = seriesModel.getData();\n data.filterSelf(function (idx) {\n var name = data.getName(idx);\n // If in any legend component the status is not selected.\n for (var i = 0; i < legendModels.length; i++) {\n // @ts-ignore FIXME: LegendModel\n if (!legendModels[i].isSelected(name)) {\n return false;\n }\n }\n return true;\n });\n }\n };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { Point, Path, Polyline } from '../util/graphic.js';\nimport PathProxy from 'zrender/lib/core/PathProxy.js';\nimport { normalizeRadian } from 'zrender/lib/contain/util.js';\nimport { cubicProjectPoint, quadraticProjectPoint } from 'zrender/lib/core/curve.js';\nimport { defaults, retrieve2 } from 'zrender/lib/core/util.js';\nimport { invert } from 'zrender/lib/core/matrix.js';\nimport * as vector from 'zrender/lib/core/vector.js';\nimport { DISPLAY_STATES, SPECIAL_STATES } from '../util/states.js';\nvar PI2 = Math.PI * 2;\nvar CMD = PathProxy.CMD;\nvar DEFAULT_SEARCH_SPACE = ['top', 'right', 'bottom', 'left'];\nfunction getCandidateAnchor(pos, distance, rect, outPt, outDir) {\n var width = rect.width;\n var height = rect.height;\n switch (pos) {\n case 'top':\n outPt.set(rect.x + width / 2, rect.y - distance);\n outDir.set(0, -1);\n break;\n case 'bottom':\n outPt.set(rect.x + width / 2, rect.y + height + distance);\n outDir.set(0, 1);\n break;\n case 'left':\n outPt.set(rect.x - distance, rect.y + height / 2);\n outDir.set(-1, 0);\n break;\n case 'right':\n outPt.set(rect.x + width + distance, rect.y + height / 2);\n outDir.set(1, 0);\n break;\n }\n}\nfunction projectPointToArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y, out) {\n x -= cx;\n y -= cy;\n var d = Math.sqrt(x * x + y * y);\n x /= d;\n y /= d;\n // Intersect point.\n var ox = x * r + cx;\n var oy = y * r + cy;\n if (Math.abs(startAngle - endAngle) % PI2 < 1e-4) {\n // Is a circle\n out[0] = ox;\n out[1] = oy;\n return d - r;\n }\n if (anticlockwise) {\n var tmp = startAngle;\n startAngle = normalizeRadian(endAngle);\n endAngle = normalizeRadian(tmp);\n } else {\n startAngle = normalizeRadian(startAngle);\n endAngle = normalizeRadian(endAngle);\n }\n if (startAngle > endAngle) {\n endAngle += PI2;\n }\n var angle = Math.atan2(y, x);\n if (angle < 0) {\n angle += PI2;\n }\n if (angle >= startAngle && angle <= endAngle || angle + PI2 >= startAngle && angle + PI2 <= endAngle) {\n // Project point is on the arc.\n out[0] = ox;\n out[1] = oy;\n return d - r;\n }\n var x1 = r * Math.cos(startAngle) + cx;\n var y1 = r * Math.sin(startAngle) + cy;\n var x2 = r * Math.cos(endAngle) + cx;\n var y2 = r * Math.sin(endAngle) + cy;\n var d1 = (x1 - x) * (x1 - x) + (y1 - y) * (y1 - y);\n var d2 = (x2 - x) * (x2 - x) + (y2 - y) * (y2 - y);\n if (d1 < d2) {\n out[0] = x1;\n out[1] = y1;\n return Math.sqrt(d1);\n } else {\n out[0] = x2;\n out[1] = y2;\n return Math.sqrt(d2);\n }\n}\nfunction projectPointToLine(x1, y1, x2, y2, x, y, out, limitToEnds) {\n var dx = x - x1;\n var dy = y - y1;\n var dx1 = x2 - x1;\n var dy1 = y2 - y1;\n var lineLen = Math.sqrt(dx1 * dx1 + dy1 * dy1);\n dx1 /= lineLen;\n dy1 /= lineLen;\n // dot product\n var projectedLen = dx * dx1 + dy * dy1;\n var t = projectedLen / lineLen;\n if (limitToEnds) {\n t = Math.min(Math.max(t, 0), 1);\n }\n t *= lineLen;\n var ox = out[0] = x1 + t * dx1;\n var oy = out[1] = y1 + t * dy1;\n return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));\n}\nfunction projectPointToRect(x1, y1, width, height, x, y, out) {\n if (width < 0) {\n x1 = x1 + width;\n width = -width;\n }\n if (height < 0) {\n y1 = y1 + height;\n height = -height;\n }\n var x2 = x1 + width;\n var y2 = y1 + height;\n var ox = out[0] = Math.min(Math.max(x, x1), x2);\n var oy = out[1] = Math.min(Math.max(y, y1), y2);\n return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));\n}\nvar tmpPt = [];\nfunction nearestPointOnRect(pt, rect, out) {\n var dist = projectPointToRect(rect.x, rect.y, rect.width, rect.height, pt.x, pt.y, tmpPt);\n out.set(tmpPt[0], tmpPt[1]);\n return dist;\n}\n/**\n * Calculate min distance corresponding point.\n * This method won't evaluate if point is in the path.\n */\nfunction nearestPointOnPath(pt, path, out) {\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n var x1;\n var y1;\n var minDist = Infinity;\n var data = path.data;\n var x = pt.x;\n var y = pt.y;\n for (var i = 0; i < data.length;) {\n var cmd = data[i++];\n if (i === 1) {\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n var d = minDist;\n switch (cmd) {\n case CMD.M:\n // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点\n // 在 closePath 的时候使用\n x0 = data[i++];\n y0 = data[i++];\n xi = x0;\n yi = y0;\n break;\n case CMD.L:\n d = projectPointToLine(xi, yi, data[i], data[i + 1], x, y, tmpPt, true);\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.C:\n d = cubicProjectPoint(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt);\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.Q:\n d = quadraticProjectPoint(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt);\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.A:\n // TODO Arc 判断的开销比较大\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var theta = data[i++];\n var dTheta = data[i++];\n // TODO Arc 旋转\n i += 1;\n var anticlockwise = !!(1 - data[i++]);\n x1 = Math.cos(theta) * rx + cx;\n y1 = Math.sin(theta) * ry + cy;\n // 不是直接使用 arc 命令\n if (i <= 1) {\n // 第一个命令起点还未定义\n x0 = x1;\n y0 = y1;\n }\n // zr 使用scale来模拟椭圆, 这里也对x做一定的缩放\n var _x = (x - cx) * ry / rx + cx;\n d = projectPointToArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y, tmpPt);\n xi = Math.cos(theta + dTheta) * rx + cx;\n yi = Math.sin(theta + dTheta) * ry + cy;\n break;\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n d = projectPointToRect(x0, y0, width, height, x, y, tmpPt);\n break;\n case CMD.Z:\n d = projectPointToLine(xi, yi, x0, y0, x, y, tmpPt, true);\n xi = x0;\n yi = y0;\n break;\n }\n if (d < minDist) {\n minDist = d;\n out.set(tmpPt[0], tmpPt[1]);\n }\n }\n return minDist;\n}\n// Temporal variable for intermediate usage.\nvar pt0 = new Point();\nvar pt1 = new Point();\nvar pt2 = new Point();\nvar dir = new Point();\nvar dir2 = new Point();\n/**\n * Calculate a proper guide line based on the label position and graphic element definition\n * @param label\n * @param labelRect\n * @param target\n * @param targetRect\n */\nexport function updateLabelLinePoints(target, labelLineModel) {\n if (!target) {\n return;\n }\n var labelLine = target.getTextGuideLine();\n var label = target.getTextContent();\n // Needs to create text guide in each charts.\n if (!(label && labelLine)) {\n return;\n }\n var labelGuideConfig = target.textGuideLineConfig || {};\n var points = [[0, 0], [0, 0], [0, 0]];\n var searchSpace = labelGuideConfig.candidates || DEFAULT_SEARCH_SPACE;\n var labelRect = label.getBoundingRect().clone();\n labelRect.applyTransform(label.getComputedTransform());\n var minDist = Infinity;\n var anchorPoint = labelGuideConfig.anchor;\n var targetTransform = target.getComputedTransform();\n var targetInversedTransform = targetTransform && invert([], targetTransform);\n var len = labelLineModel.get('length2') || 0;\n if (anchorPoint) {\n pt2.copy(anchorPoint);\n }\n for (var i = 0; i < searchSpace.length; i++) {\n var candidate = searchSpace[i];\n getCandidateAnchor(candidate, 0, labelRect, pt0, dir);\n Point.scaleAndAdd(pt1, pt0, dir, len);\n // Transform to target coord space.\n pt1.transform(targetInversedTransform);\n // Note: getBoundingRect will ensure the `path` being created.\n var boundingRect = target.getBoundingRect();\n var dist = anchorPoint ? anchorPoint.distance(pt1) : target instanceof Path ? nearestPointOnPath(pt1, target.path, pt2) : nearestPointOnRect(pt1, boundingRect, pt2);\n // TODO pt2 is in the path\n if (dist < minDist) {\n minDist = dist;\n // Transform back to global space.\n pt1.transform(targetTransform);\n pt2.transform(targetTransform);\n pt2.toArray(points[0]);\n pt1.toArray(points[1]);\n pt0.toArray(points[2]);\n }\n }\n limitTurnAngle(points, labelLineModel.get('minTurnAngle'));\n labelLine.setShape({\n points: points\n });\n}\n// Temporal variable for the limitTurnAngle function\nvar tmpArr = [];\nvar tmpProjPoint = new Point();\n/**\n * Reduce the line segment attached to the label to limit the turn angle between two segments.\n * @param linePoints\n * @param minTurnAngle Radian of minimum turn angle. 0 - 180\n */\nexport function limitTurnAngle(linePoints, minTurnAngle) {\n if (!(minTurnAngle <= 180 && minTurnAngle > 0)) {\n return;\n }\n minTurnAngle = minTurnAngle / 180 * Math.PI;\n // The line points can be\n // /pt1----pt2 (label)\n // /\n // pt0/\n pt0.fromArray(linePoints[0]);\n pt1.fromArray(linePoints[1]);\n pt2.fromArray(linePoints[2]);\n Point.sub(dir, pt0, pt1);\n Point.sub(dir2, pt2, pt1);\n var len1 = dir.len();\n var len2 = dir2.len();\n if (len1 < 1e-3 || len2 < 1e-3) {\n return;\n }\n dir.scale(1 / len1);\n dir2.scale(1 / len2);\n var angleCos = dir.dot(dir2);\n var minTurnAngleCos = Math.cos(minTurnAngle);\n if (minTurnAngleCos < angleCos) {\n // Smaller than minTurnAngle\n // Calculate project point of pt0 on pt1-pt2\n var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false);\n tmpProjPoint.fromArray(tmpArr);\n // Calculate new projected length with limited minTurnAngle and get the new connect point\n tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI - minTurnAngle));\n // Limit the new calculated connect point between pt1 and pt2.\n var t = pt2.x !== pt1.x ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x) : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);\n if (isNaN(t)) {\n return;\n }\n if (t < 0) {\n Point.copy(tmpProjPoint, pt1);\n } else if (t > 1) {\n Point.copy(tmpProjPoint, pt2);\n }\n tmpProjPoint.toArray(linePoints[1]);\n }\n}\n/**\n * Limit the angle of line and the surface\n * @param maxSurfaceAngle Radian of minimum turn angle. 0 - 180. 0 is same direction to normal. 180 is opposite\n */\nexport function limitSurfaceAngle(linePoints, surfaceNormal, maxSurfaceAngle) {\n if (!(maxSurfaceAngle <= 180 && maxSurfaceAngle > 0)) {\n return;\n }\n maxSurfaceAngle = maxSurfaceAngle / 180 * Math.PI;\n pt0.fromArray(linePoints[0]);\n pt1.fromArray(linePoints[1]);\n pt2.fromArray(linePoints[2]);\n Point.sub(dir, pt1, pt0);\n Point.sub(dir2, pt2, pt1);\n var len1 = dir.len();\n var len2 = dir2.len();\n if (len1 < 1e-3 || len2 < 1e-3) {\n return;\n }\n dir.scale(1 / len1);\n dir2.scale(1 / len2);\n var angleCos = dir.dot(surfaceNormal);\n var maxSurfaceAngleCos = Math.cos(maxSurfaceAngle);\n if (angleCos < maxSurfaceAngleCos) {\n // Calculate project point of pt0 on pt1-pt2\n var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false);\n tmpProjPoint.fromArray(tmpArr);\n var HALF_PI = Math.PI / 2;\n var angle2 = Math.acos(dir2.dot(surfaceNormal));\n var newAngle = HALF_PI + angle2 - maxSurfaceAngle;\n if (newAngle >= HALF_PI) {\n // parallel\n Point.copy(tmpProjPoint, pt2);\n } else {\n // Calculate new projected length with limited minTurnAngle and get the new connect point\n tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI / 2 - newAngle));\n // Limit the new calculated connect point between pt1 and pt2.\n var t = pt2.x !== pt1.x ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x) : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);\n if (isNaN(t)) {\n return;\n }\n if (t < 0) {\n Point.copy(tmpProjPoint, pt1);\n } else if (t > 1) {\n Point.copy(tmpProjPoint, pt2);\n }\n }\n tmpProjPoint.toArray(linePoints[1]);\n }\n}\nfunction setLabelLineState(labelLine, ignore, stateName, stateModel) {\n var isNormal = stateName === 'normal';\n var stateObj = isNormal ? labelLine : labelLine.ensureState(stateName);\n // Make sure display.\n stateObj.ignore = ignore;\n // Set smooth\n var smooth = stateModel.get('smooth');\n if (smooth && smooth === true) {\n smooth = 0.3;\n }\n stateObj.shape = stateObj.shape || {};\n if (smooth > 0) {\n stateObj.shape.smooth = smooth;\n }\n var styleObj = stateModel.getModel('lineStyle').getLineStyle();\n isNormal ? labelLine.useStyle(styleObj) : stateObj.style = styleObj;\n}\nfunction buildLabelLinePath(path, shape) {\n var smooth = shape.smooth;\n var points = shape.points;\n if (!points) {\n return;\n }\n path.moveTo(points[0][0], points[0][1]);\n if (smooth > 0 && points.length >= 3) {\n var len1 = vector.dist(points[0], points[1]);\n var len2 = vector.dist(points[1], points[2]);\n if (!len1 || !len2) {\n path.lineTo(points[1][0], points[1][1]);\n path.lineTo(points[2][0], points[2][1]);\n return;\n }\n var moveLen = Math.min(len1, len2) * smooth;\n var midPoint0 = vector.lerp([], points[1], points[0], moveLen / len1);\n var midPoint2 = vector.lerp([], points[1], points[2], moveLen / len2);\n var midPoint1 = vector.lerp([], midPoint0, midPoint2, 0.5);\n path.bezierCurveTo(midPoint0[0], midPoint0[1], midPoint0[0], midPoint0[1], midPoint1[0], midPoint1[1]);\n path.bezierCurveTo(midPoint2[0], midPoint2[1], midPoint2[0], midPoint2[1], points[2][0], points[2][1]);\n } else {\n for (var i = 1; i < points.length; i++) {\n path.lineTo(points[i][0], points[i][1]);\n }\n }\n}\n/**\n * Create a label line if necessary and set it's style.\n */\nexport function setLabelLineStyle(targetEl, statesModels, defaultStyle) {\n var labelLine = targetEl.getTextGuideLine();\n var label = targetEl.getTextContent();\n if (!label) {\n // Not show label line if there is no label.\n if (labelLine) {\n targetEl.removeTextGuideLine();\n }\n return;\n }\n var normalModel = statesModels.normal;\n var showNormal = normalModel.get('show');\n var labelIgnoreNormal = label.ignore;\n for (var i = 0; i < DISPLAY_STATES.length; i++) {\n var stateName = DISPLAY_STATES[i];\n var stateModel = statesModels[stateName];\n var isNormal = stateName === 'normal';\n if (stateModel) {\n var stateShow = stateModel.get('show');\n var isLabelIgnored = isNormal ? labelIgnoreNormal : retrieve2(label.states[stateName] && label.states[stateName].ignore, labelIgnoreNormal);\n if (isLabelIgnored // Not show when label is not shown in this state.\n || !retrieve2(stateShow, showNormal) // Use normal state by default if not set.\n ) {\n var stateObj = isNormal ? labelLine : labelLine && labelLine.states[stateName];\n if (stateObj) {\n stateObj.ignore = true;\n }\n if (!!labelLine) {\n setLabelLineState(labelLine, true, stateName, stateModel);\n }\n continue;\n }\n // Create labelLine if not exists\n if (!labelLine) {\n labelLine = new Polyline();\n targetEl.setTextGuideLine(labelLine);\n // Reset state of normal because it's new created.\n // NOTE: NORMAL should always been the first!\n if (!isNormal && (labelIgnoreNormal || !showNormal)) {\n setLabelLineState(labelLine, true, 'normal', statesModels.normal);\n }\n // Use same state proxy.\n if (targetEl.stateProxy) {\n labelLine.stateProxy = targetEl.stateProxy;\n }\n }\n setLabelLineState(labelLine, false, stateName, stateModel);\n }\n }\n if (labelLine) {\n defaults(labelLine.style, defaultStyle);\n // Not fill.\n labelLine.style.fill = null;\n var showAbove = normalModel.get('showAbove');\n var labelLineConfig = targetEl.textGuideLineConfig = targetEl.textGuideLineConfig || {};\n labelLineConfig.showAbove = showAbove || false;\n // Custom the buildPath.\n labelLine.buildPath = buildLabelLinePath;\n }\n}\nexport function getLabelLineStatesModels(itemModel, labelLineName) {\n labelLineName = labelLineName || 'labelLine';\n var statesModels = {\n normal: itemModel.getModel(labelLineName)\n };\n for (var i = 0; i < SPECIAL_STATES.length; i++) {\n var stateName = SPECIAL_STATES[i];\n statesModels[stateName] = itemModel.getModel([stateName, labelLineName]);\n }\n return statesModels;\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// FIXME emphasis label position is not same with normal label position\nimport { parsePercent } from '../../util/number.js';\nimport { Point } from '../../util/graphic.js';\nimport { each, isNumber } from 'zrender/lib/core/util.js';\nimport { limitTurnAngle, limitSurfaceAngle } from '../../label/labelGuideHelper.js';\nimport { shiftLayoutOnY } from '../../label/labelLayoutHelper.js';\nvar RADIAN = Math.PI / 180;\nfunction adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight, viewLeft, viewTop, farthestX) {\n if (list.length < 2) {\n return;\n }\n ;\n function recalculateXOnSemiToAlignOnEllipseCurve(semi) {\n var rB = semi.rB;\n var rB2 = rB * rB;\n for (var i = 0; i < semi.list.length; i++) {\n var item = semi.list[i];\n var dy = Math.abs(item.label.y - cy);\n // horizontal r is always same with original r because x is not changed.\n var rA = r + item.len;\n var rA2 = rA * rA;\n // Use ellipse implicit function to calculate x\n var dx = Math.sqrt((1 - Math.abs(dy * dy / rB2)) * rA2);\n var newX = cx + (dx + item.len2) * dir;\n var deltaX = newX - item.label.x;\n var newTargetWidth = item.targetTextWidth - deltaX * dir;\n // text x is changed, so need to recalculate width.\n constrainTextWidth(item, newTargetWidth, true);\n item.label.x = newX;\n }\n }\n // Adjust X based on the shifted y. Make tight labels aligned on an ellipse curve.\n function recalculateX(items) {\n // Extremes of\n var topSemi = {\n list: [],\n maxY: 0\n };\n var bottomSemi = {\n list: [],\n maxY: 0\n };\n for (var i = 0; i < items.length; i++) {\n if (items[i].labelAlignTo !== 'none') {\n continue;\n }\n var item = items[i];\n var semi = item.label.y > cy ? bottomSemi : topSemi;\n var dy = Math.abs(item.label.y - cy);\n if (dy >= semi.maxY) {\n var dx = item.label.x - cx - item.len2 * dir;\n // horizontal r is always same with original r because x is not changed.\n var rA = r + item.len;\n // Canculate rB based on the topest / bottemest label.\n var rB = Math.abs(dx) < rA ? Math.sqrt(dy * dy / (1 - dx * dx / rA / rA)) : rA;\n semi.rB = rB;\n semi.maxY = dy;\n }\n semi.list.push(item);\n }\n recalculateXOnSemiToAlignOnEllipseCurve(topSemi);\n recalculateXOnSemiToAlignOnEllipseCurve(bottomSemi);\n }\n var len = list.length;\n for (var i = 0; i < len; i++) {\n if (list[i].position === 'outer' && list[i].labelAlignTo === 'labelLine') {\n var dx = list[i].label.x - farthestX;\n list[i].linePoints[1][0] += dx;\n list[i].label.x = farthestX;\n }\n }\n if (shiftLayoutOnY(list, viewTop, viewTop + viewHeight)) {\n recalculateX(list);\n }\n}\nfunction avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop) {\n var leftList = [];\n var rightList = [];\n var leftmostX = Number.MAX_VALUE;\n var rightmostX = -Number.MAX_VALUE;\n for (var i = 0; i < labelLayoutList.length; i++) {\n var label = labelLayoutList[i].label;\n if (isPositionCenter(labelLayoutList[i])) {\n continue;\n }\n if (label.x < cx) {\n leftmostX = Math.min(leftmostX, label.x);\n leftList.push(labelLayoutList[i]);\n } else {\n rightmostX = Math.max(rightmostX, label.x);\n rightList.push(labelLayoutList[i]);\n }\n }\n for (var i = 0; i < labelLayoutList.length; i++) {\n var layout = labelLayoutList[i];\n if (!isPositionCenter(layout) && layout.linePoints) {\n if (layout.labelStyleWidth != null) {\n continue;\n }\n var label = layout.label;\n var linePoints = layout.linePoints;\n var targetTextWidth = void 0;\n if (layout.labelAlignTo === 'edge') {\n if (label.x < cx) {\n targetTextWidth = linePoints[2][0] - layout.labelDistance - viewLeft - layout.edgeDistance;\n } else {\n targetTextWidth = viewLeft + viewWidth - layout.edgeDistance - linePoints[2][0] - layout.labelDistance;\n }\n } else if (layout.labelAlignTo === 'labelLine') {\n if (label.x < cx) {\n targetTextWidth = leftmostX - viewLeft - layout.bleedMargin;\n } else {\n targetTextWidth = viewLeft + viewWidth - rightmostX - layout.bleedMargin;\n }\n } else {\n if (label.x < cx) {\n targetTextWidth = label.x - viewLeft - layout.bleedMargin;\n } else {\n targetTextWidth = viewLeft + viewWidth - label.x - layout.bleedMargin;\n }\n }\n layout.targetTextWidth = targetTextWidth;\n constrainTextWidth(layout, targetTextWidth);\n }\n }\n adjustSingleSide(rightList, cx, cy, r, 1, viewWidth, viewHeight, viewLeft, viewTop, rightmostX);\n adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight, viewLeft, viewTop, leftmostX);\n for (var i = 0; i < labelLayoutList.length; i++) {\n var layout = labelLayoutList[i];\n if (!isPositionCenter(layout) && layout.linePoints) {\n var label = layout.label;\n var linePoints = layout.linePoints;\n var isAlignToEdge = layout.labelAlignTo === 'edge';\n var padding = label.style.padding;\n var paddingH = padding ? padding[1] + padding[3] : 0;\n // textRect.width already contains paddingH if bgColor is set\n var extraPaddingH = label.style.backgroundColor ? 0 : paddingH;\n var realTextWidth = layout.rect.width + extraPaddingH;\n var dist = linePoints[1][0] - linePoints[2][0];\n if (isAlignToEdge) {\n if (label.x < cx) {\n linePoints[2][0] = viewLeft + layout.edgeDistance + realTextWidth + layout.labelDistance;\n } else {\n linePoints[2][0] = viewLeft + viewWidth - layout.edgeDistance - realTextWidth - layout.labelDistance;\n }\n } else {\n if (label.x < cx) {\n linePoints[2][0] = label.x + layout.labelDistance;\n } else {\n linePoints[2][0] = label.x - layout.labelDistance;\n }\n linePoints[1][0] = linePoints[2][0] + dist;\n }\n linePoints[1][1] = linePoints[2][1] = label.y;\n }\n }\n}\n/**\n * Set max width of each label, and then wrap each label to the max width.\n *\n * @param layout label layout\n * @param availableWidth max width for the label to display\n * @param forceRecalculate recaculate the text layout even if the current width\n * is smaller than `availableWidth`. This is useful when the text was previously\n * wrapped by calling `constrainTextWidth` but now `availableWidth` changed, in\n * which case, previous wrapping should be redo.\n */\nfunction constrainTextWidth(layout, availableWidth, forceRecalculate) {\n if (forceRecalculate === void 0) {\n forceRecalculate = false;\n }\n if (layout.labelStyleWidth != null) {\n // User-defined style.width has the highest priority.\n return;\n }\n var label = layout.label;\n var style = label.style;\n var textRect = layout.rect;\n var bgColor = style.backgroundColor;\n var padding = style.padding;\n var paddingH = padding ? padding[1] + padding[3] : 0;\n var overflow = style.overflow;\n // textRect.width already contains paddingH if bgColor is set\n var oldOuterWidth = textRect.width + (bgColor ? 0 : paddingH);\n if (availableWidth < oldOuterWidth || forceRecalculate) {\n var oldHeight = textRect.height;\n if (overflow && overflow.match('break')) {\n // Temporarily set background to be null to calculate\n // the bounding box without background.\n label.setStyle('backgroundColor', null);\n // Set constraining width\n label.setStyle('width', availableWidth - paddingH);\n // This is the real bounding box of the text without padding.\n var innerRect = label.getBoundingRect();\n label.setStyle('width', Math.ceil(innerRect.width));\n label.setStyle('backgroundColor', bgColor);\n } else {\n var availableInnerWidth = availableWidth - paddingH;\n var newWidth = availableWidth < oldOuterWidth\n // Current text is too wide, use `availableWidth` as max width.\n ? availableInnerWidth :\n // Current available width is enough, but the text may have\n // already been wrapped with a smaller available width.\n forceRecalculate ? availableInnerWidth > layout.unconstrainedWidth\n // Current available is larger than text width,\n // so don't constrain width (otherwise it may have\n // empty space in the background).\n ? null\n // Current available is smaller than text width, so\n // use the current available width as constraining\n // width.\n : availableInnerWidth\n // Current available width is enough, so no need to\n // constrain.\n : null;\n label.setStyle('width', newWidth);\n }\n var newRect = label.getBoundingRect();\n textRect.width = newRect.width;\n var margin = (label.style.margin || 0) + 2.1;\n textRect.height = newRect.height + margin;\n textRect.y -= (textRect.height - oldHeight) / 2;\n }\n}\nfunction isPositionCenter(sectorShape) {\n // Not change x for center label\n return sectorShape.position === 'center';\n}\nexport default function pieLabelLayout(seriesModel) {\n var data = seriesModel.getData();\n var labelLayoutList = [];\n var cx;\n var cy;\n var hasLabelRotate = false;\n var minShowLabelRadian = (seriesModel.get('minShowLabelAngle') || 0) * RADIAN;\n var viewRect = data.getLayout('viewRect');\n var r = data.getLayout('r');\n var viewWidth = viewRect.width;\n var viewLeft = viewRect.x;\n var viewTop = viewRect.y;\n var viewHeight = viewRect.height;\n function setNotShow(el) {\n el.ignore = true;\n }\n function isLabelShown(label) {\n if (!label.ignore) {\n return true;\n }\n for (var key in label.states) {\n if (label.states[key].ignore === false) {\n return true;\n }\n }\n return false;\n }\n data.each(function (idx) {\n var sector = data.getItemGraphicEl(idx);\n var sectorShape = sector.shape;\n var label = sector.getTextContent();\n var labelLine = sector.getTextGuideLine();\n var itemModel = data.getItemModel(idx);\n var labelModel = itemModel.getModel('label');\n // Use position in normal or emphasis\n var labelPosition = labelModel.get('position') || itemModel.get(['emphasis', 'label', 'position']);\n var labelDistance = labelModel.get('distanceToLabelLine');\n var labelAlignTo = labelModel.get('alignTo');\n var edgeDistance = parsePercent(labelModel.get('edgeDistance'), viewWidth);\n var bleedMargin = labelModel.get('bleedMargin');\n var labelLineModel = itemModel.getModel('labelLine');\n var labelLineLen = labelLineModel.get('length');\n labelLineLen = parsePercent(labelLineLen, viewWidth);\n var labelLineLen2 = labelLineModel.get('length2');\n labelLineLen2 = parsePercent(labelLineLen2, viewWidth);\n if (Math.abs(sectorShape.endAngle - sectorShape.startAngle) < minShowLabelRadian) {\n each(label.states, setNotShow);\n label.ignore = true;\n if (labelLine) {\n each(labelLine.states, setNotShow);\n labelLine.ignore = true;\n }\n return;\n }\n if (!isLabelShown(label)) {\n return;\n }\n var midAngle = (sectorShape.startAngle + sectorShape.endAngle) / 2;\n var nx = Math.cos(midAngle);\n var ny = Math.sin(midAngle);\n var textX;\n var textY;\n var linePoints;\n var textAlign;\n cx = sectorShape.cx;\n cy = sectorShape.cy;\n var isLabelInside = labelPosition === 'inside' || labelPosition === 'inner';\n if (labelPosition === 'center') {\n textX = sectorShape.cx;\n textY = sectorShape.cy;\n textAlign = 'center';\n } else {\n var x1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * nx : sectorShape.r * nx) + cx;\n var y1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * ny : sectorShape.r * ny) + cy;\n textX = x1 + nx * 3;\n textY = y1 + ny * 3;\n if (!isLabelInside) {\n // For roseType\n var x2 = x1 + nx * (labelLineLen + r - sectorShape.r);\n var y2 = y1 + ny * (labelLineLen + r - sectorShape.r);\n var x3 = x2 + (nx < 0 ? -1 : 1) * labelLineLen2;\n var y3 = y2;\n if (labelAlignTo === 'edge') {\n // Adjust textX because text align of edge is opposite\n textX = nx < 0 ? viewLeft + edgeDistance : viewLeft + viewWidth - edgeDistance;\n } else {\n textX = x3 + (nx < 0 ? -labelDistance : labelDistance);\n }\n textY = y3;\n linePoints = [[x1, y1], [x2, y2], [x3, y3]];\n }\n textAlign = isLabelInside ? 'center' : labelAlignTo === 'edge' ? nx > 0 ? 'right' : 'left' : nx > 0 ? 'left' : 'right';\n }\n var PI = Math.PI;\n var labelRotate = 0;\n var rotate = labelModel.get('rotate');\n if (isNumber(rotate)) {\n labelRotate = rotate * (PI / 180);\n } else if (labelPosition === 'center') {\n labelRotate = 0;\n } else if (rotate === 'radial' || rotate === true) {\n var radialAngle = nx < 0 ? -midAngle + PI : -midAngle;\n labelRotate = radialAngle;\n } else if (rotate === 'tangential' && labelPosition !== 'outside' && labelPosition !== 'outer') {\n var rad = Math.atan2(nx, ny);\n if (rad < 0) {\n rad = PI * 2 + rad;\n }\n var isDown = ny > 0;\n if (isDown) {\n rad = PI + rad;\n }\n labelRotate = rad - PI;\n }\n hasLabelRotate = !!labelRotate;\n label.x = textX;\n label.y = textY;\n label.rotation = labelRotate;\n label.setStyle({\n verticalAlign: 'middle'\n });\n // Not sectorShape the inside label\n if (!isLabelInside) {\n var textRect = label.getBoundingRect().clone();\n textRect.applyTransform(label.getComputedTransform());\n // Text has a default 1px stroke. Exclude this.\n var margin = (label.style.margin || 0) + 2.1;\n textRect.y -= margin / 2;\n textRect.height += margin;\n labelLayoutList.push({\n label: label,\n labelLine: labelLine,\n position: labelPosition,\n len: labelLineLen,\n len2: labelLineLen2,\n minTurnAngle: labelLineModel.get('minTurnAngle'),\n maxSurfaceAngle: labelLineModel.get('maxSurfaceAngle'),\n surfaceNormal: new Point(nx, ny),\n linePoints: linePoints,\n textAlign: textAlign,\n labelDistance: labelDistance,\n labelAlignTo: labelAlignTo,\n edgeDistance: edgeDistance,\n bleedMargin: bleedMargin,\n rect: textRect,\n unconstrainedWidth: textRect.width,\n labelStyleWidth: label.style.width\n });\n } else {\n label.setStyle({\n align: textAlign\n });\n var selectState = label.states.select;\n if (selectState) {\n selectState.x += label.x;\n selectState.y += label.y;\n }\n }\n sector.setTextConfig({\n inside: isLabelInside\n });\n });\n if (!hasLabelRotate && seriesModel.get('avoidLabelOverlap')) {\n avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop);\n }\n for (var i = 0; i < labelLayoutList.length; i++) {\n var layout = labelLayoutList[i];\n var label = layout.label;\n var labelLine = layout.labelLine;\n var notShowLabel = isNaN(label.x) || isNaN(label.y);\n if (label) {\n label.setStyle({\n align: layout.textAlign\n });\n if (notShowLabel) {\n each(label.states, setNotShow);\n label.ignore = true;\n }\n var selectState = label.states.select;\n if (selectState) {\n selectState.x += label.x;\n selectState.y += label.y;\n }\n }\n if (labelLine) {\n var linePoints = layout.linePoints;\n if (notShowLabel || !linePoints) {\n each(labelLine.states, setNotShow);\n labelLine.ignore = true;\n } else {\n limitTurnAngle(linePoints, layout.minTurnAngle);\n limitSurfaceAngle(linePoints, layout.surfaceNormal, layout.maxSurfaceAngle);\n labelLine.setShape({\n points: linePoints\n });\n // Set the anchor to the midpoint of sector\n label.__hostTarget.textGuideLineConfig = {\n anchor: new Point(linePoints[0][0], linePoints[0][1])\n };\n }\n }\n }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport { extend, retrieve3 } from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport { setStatesStylesFromModel, toggleHoverEmphasis } from '../../util/states.js';\nimport ChartView from '../../view/Chart.js';\nimport labelLayout from './labelLayout.js';\nimport { setLabelLineStyle, getLabelLineStatesModels } from '../../label/labelGuideHelper.js';\nimport { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle.js';\nimport { getSectorCornerRadius } from '../helper/sectorHelper.js';\nimport { saveOldStyle } from '../../animation/basicTransition.js';\nimport { getBasicPieLayout, getSeriesLayoutData } from './pieLayout.js';\n/**\n * Piece of pie including Sector, Label, LabelLine\n */\nvar PiePiece = /** @class */function (_super) {\n __extends(PiePiece, _super);\n function PiePiece(data, idx, startAngle) {\n var _this = _super.call(this) || this;\n _this.z2 = 2;\n var text = new graphic.Text();\n _this.setTextContent(text);\n _this.updateData(data, idx, startAngle, true);\n return _this;\n }\n PiePiece.prototype.updateData = function (data, idx, startAngle, firstCreate) {\n var sector = this;\n var seriesModel = data.hostModel;\n var itemModel = data.getItemModel(idx);\n var emphasisModel = itemModel.getModel('emphasis');\n var layout = data.getItemLayout(idx);\n // cornerRadius & innerCornerRadius doesn't exist in the item layout. Use `0` if null value is specified.\n // see `setItemLayout` in `pieLayout.ts`.\n var sectorShape = extend(getSectorCornerRadius(itemModel.getModel('itemStyle'), layout, true), layout);\n // Ignore NaN data.\n if (isNaN(sectorShape.startAngle)) {\n // Use NaN shape to avoid drawing shape.\n sector.setShape(sectorShape);\n return;\n }\n if (firstCreate) {\n sector.setShape(sectorShape);\n var animationType = seriesModel.getShallow('animationType');\n if (seriesModel.ecModel.ssr) {\n // Use scale animation in SSR mode(opacity?)\n // Because CSS SVG animation doesn't support very customized shape animation.\n graphic.initProps(sector, {\n scaleX: 0,\n scaleY: 0\n }, seriesModel, {\n dataIndex: idx,\n isFrom: true\n });\n sector.originX = sectorShape.cx;\n sector.originY = sectorShape.cy;\n } else if (animationType === 'scale') {\n sector.shape.r = layout.r0;\n graphic.initProps(sector, {\n shape: {\n r: layout.r\n }\n }, seriesModel, idx);\n }\n // Expansion\n else {\n if (startAngle != null) {\n sector.setShape({\n startAngle: startAngle,\n endAngle: startAngle\n });\n graphic.initProps(sector, {\n shape: {\n startAngle: layout.startAngle,\n endAngle: layout.endAngle\n }\n }, seriesModel, idx);\n } else {\n sector.shape.endAngle = layout.startAngle;\n graphic.updateProps(sector, {\n shape: {\n endAngle: layout.endAngle\n }\n }, seriesModel, idx);\n }\n }\n } else {\n saveOldStyle(sector);\n // Transition animation from the old shape\n graphic.updateProps(sector, {\n shape: sectorShape\n }, seriesModel, idx);\n }\n sector.useStyle(data.getItemVisual(idx, 'style'));\n setStatesStylesFromModel(sector, itemModel);\n var midAngle = (layout.startAngle + layout.endAngle) / 2;\n var offset = seriesModel.get('selectedOffset');\n var dx = Math.cos(midAngle) * offset;\n var dy = Math.sin(midAngle) * offset;\n var cursorStyle = itemModel.getShallow('cursor');\n cursorStyle && sector.attr('cursor', cursorStyle);\n this._updateLabel(seriesModel, data, idx);\n sector.ensureState('emphasis').shape = extend({\n r: layout.r + (emphasisModel.get('scale') ? emphasisModel.get('scaleSize') || 0 : 0)\n }, getSectorCornerRadius(emphasisModel.getModel('itemStyle'), layout));\n extend(sector.ensureState('select'), {\n x: dx,\n y: dy,\n shape: getSectorCornerRadius(itemModel.getModel(['select', 'itemStyle']), layout)\n });\n extend(sector.ensureState('blur'), {\n shape: getSectorCornerRadius(itemModel.getModel(['blur', 'itemStyle']), layout)\n });\n var labelLine = sector.getTextGuideLine();\n var labelText = sector.getTextContent();\n labelLine && extend(labelLine.ensureState('select'), {\n x: dx,\n y: dy\n });\n // TODO: needs dx, dy in zrender?\n extend(labelText.ensureState('select'), {\n x: dx,\n y: dy\n });\n toggleHoverEmphasis(this, emphasisModel.get('focus'), emphasisModel.get('blurScope'), emphasisModel.get('disabled'));\n };\n PiePiece.prototype._updateLabel = function (seriesModel, data, idx) {\n var sector = this;\n var itemModel = data.getItemModel(idx);\n var labelLineModel = itemModel.getModel('labelLine');\n var style = data.getItemVisual(idx, 'style');\n var visualColor = style && style.fill;\n var visualOpacity = style && style.opacity;\n setLabelStyle(sector, getLabelStatesModels(itemModel), {\n labelFetcher: data.hostModel,\n labelDataIndex: idx,\n inheritColor: visualColor,\n defaultOpacity: visualOpacity,\n defaultText: seriesModel.getFormattedLabel(idx, 'normal') || data.getName(idx)\n });\n var labelText = sector.getTextContent();\n // Set textConfig on sector.\n sector.setTextConfig({\n // reset position, rotation\n position: null,\n rotation: null\n });\n // Make sure update style on labelText after setLabelStyle.\n // Because setLabelStyle will replace a new style on it.\n labelText.attr({\n z2: 10\n });\n var labelPosition = seriesModel.get(['label', 'position']);\n if (labelPosition !== 'outside' && labelPosition !== 'outer') {\n sector.removeTextGuideLine();\n } else {\n var polyline = this.getTextGuideLine();\n if (!polyline) {\n polyline = new graphic.Polyline();\n this.setTextGuideLine(polyline);\n }\n // Default use item visual color\n setLabelLineStyle(this, getLabelLineStatesModels(itemModel), {\n stroke: visualColor,\n opacity: retrieve3(labelLineModel.get(['lineStyle', 'opacity']), visualOpacity, 1)\n });\n }\n };\n return PiePiece;\n}(graphic.Sector);\n// Pie view\nvar PieView = /** @class */function (_super) {\n __extends(PieView, _super);\n function PieView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.ignoreLabelLineUpdate = true;\n return _this;\n }\n PieView.prototype.render = function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var oldData = this._data;\n var group = this.group;\n var startAngle;\n // First render\n if (!oldData && data.count() > 0) {\n var shape = data.getItemLayout(0);\n for (var s = 1; isNaN(shape && shape.startAngle) && s < data.count(); ++s) {\n shape = data.getItemLayout(s);\n }\n if (shape) {\n startAngle = shape.startAngle;\n }\n }\n // remove empty-circle if it exists\n if (this._emptyCircleSector) {\n group.remove(this._emptyCircleSector);\n }\n // when all data are filtered, show lightgray empty circle\n if (data.count() === 0 && seriesModel.get('showEmptyCircle')) {\n var layoutData = getSeriesLayoutData(seriesModel);\n var sector = new graphic.Sector({\n shape: extend(getBasicPieLayout(seriesModel, api), layoutData)\n });\n sector.useStyle(seriesModel.getModel('emptyCircleStyle').getItemStyle());\n this._emptyCircleSector = sector;\n group.add(sector);\n }\n data.diff(oldData).add(function (idx) {\n var piePiece = new PiePiece(data, idx, startAngle);\n data.setItemGraphicEl(idx, piePiece);\n group.add(piePiece);\n }).update(function (newIdx, oldIdx) {\n var piePiece = oldData.getItemGraphicEl(oldIdx);\n piePiece.updateData(data, newIdx, startAngle);\n piePiece.off('click');\n group.add(piePiece);\n data.setItemGraphicEl(newIdx, piePiece);\n }).remove(function (idx) {\n var piePiece = oldData.getItemGraphicEl(idx);\n graphic.removeElementWithFadeOut(piePiece, seriesModel, idx);\n }).execute();\n labelLayout(seriesModel);\n // Always use initial animation.\n if (seriesModel.get('animationTypeUpdate') !== 'expansion') {\n this._data = data;\n }\n };\n PieView.prototype.dispose = function () {};\n PieView.prototype.containPoint = function (point, seriesModel) {\n var data = seriesModel.getData();\n var itemLayout = data.getItemLayout(0);\n if (itemLayout) {\n var dx = point[0] - itemLayout.cx;\n var dy = point[1] - itemLayout.cy;\n var radius = Math.sqrt(dx * dx + dy * dy);\n return radius <= itemLayout.r && radius >= itemLayout.r0;\n }\n };\n PieView.type = 'pie';\n return PieView;\n}(ChartView);\nexport default PieView;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n/**\n * LegendVisualProvider is an bridge that pick encoded color from data and\n * provide to the legend component.\n */\nvar LegendVisualProvider = /** @class */function () {\n function LegendVisualProvider(\n // Function to get data after filtered. It stores all the encoding info\n getDataWithEncodedVisual,\n // Function to get raw data before filtered.\n getRawData) {\n this._getDataWithEncodedVisual = getDataWithEncodedVisual;\n this._getRawData = getRawData;\n }\n LegendVisualProvider.prototype.getAllNames = function () {\n var rawData = this._getRawData();\n // We find the name from the raw data. In case it's filtered by the legend component.\n // Normally, the name can be found in rawData, but can't be found in filtered data will display as gray.\n return rawData.mapArray(rawData.getName);\n };\n LegendVisualProvider.prototype.containName = function (name) {\n var rawData = this._getRawData();\n return rawData.indexOfName(name) >= 0;\n };\n LegendVisualProvider.prototype.indexOfName = function (name) {\n // Only get data when necessary.\n // Because LegendVisualProvider constructor may be new in the stage that data is not prepared yet.\n // Invoking Series#getData immediately will throw an error.\n var dataWithEncodedVisual = this._getDataWithEncodedVisual();\n return dataWithEncodedVisual.indexOfName(name);\n };\n LegendVisualProvider.prototype.getItemVisual = function (dataIndex, key) {\n // Get encoded visual properties from final filtered data.\n var dataWithEncodedVisual = this._getDataWithEncodedVisual();\n return dataWithEncodedVisual.getItemVisual(dataIndex, key);\n };\n return LegendVisualProvider;\n}();\nexport default LegendVisualProvider;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { __extends } from \"tslib\";\nimport createSeriesDataSimply from '../helper/createSeriesDataSimply.js';\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as modelUtil from '../../util/model.js';\nimport { getPercentSeats } from '../../util/number.js';\nimport { makeSeriesEncodeForNameBased } from '../../data/helper/sourceHelper.js';\nimport LegendVisualProvider from '../../visual/LegendVisualProvider.js';\nimport SeriesModel from '../../model/Series.js';\nvar innerData = modelUtil.makeInner();\nvar PieSeriesModel = /** @class */function (_super) {\n __extends(PieSeriesModel, _super);\n function PieSeriesModel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @overwrite\n */\n PieSeriesModel.prototype.init = function (option) {\n _super.prototype.init.apply(this, arguments);\n // Enable legend selection for each data item\n // Use a function instead of direct access because data reference may changed\n this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this));\n this._defaultLabelLine(option);\n };\n /**\n * @overwrite\n */\n PieSeriesModel.prototype.mergeOption = function () {\n _super.prototype.mergeOption.apply(this, arguments);\n };\n /**\n * @overwrite\n */\n PieSeriesModel.prototype.getInitialData = function () {\n return createSeriesDataSimply(this, {\n coordDimensions: ['value'],\n encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)\n });\n };\n /**\n * @overwrite\n */\n PieSeriesModel.prototype.getDataParams = function (dataIndex) {\n var data = this.getData();\n // update seats when data is changed\n var dataInner = innerData(data);\n var seats = dataInner.seats;\n if (!seats) {\n var valueList_1 = [];\n data.each(data.mapDimension('value'), function (value) {\n valueList_1.push(value);\n });\n seats = dataInner.seats = getPercentSeats(valueList_1, data.hostModel.get('percentPrecision'));\n }\n var params = _super.prototype.getDataParams.call(this, dataIndex);\n // seats may be empty when sum is 0\n params.percent = seats[dataIndex] || 0;\n params.$vars.push('percent');\n return params;\n };\n PieSeriesModel.prototype._defaultLabelLine = function (option) {\n // Extend labelLine emphasis\n modelUtil.defaultEmphasis(option, 'labelLine', ['show']);\n var labelLineNormalOpt = option.labelLine;\n var labelLineEmphasisOpt = option.emphasis.labelLine;\n // Not show label line if `label.normal.show = false`\n labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show;\n labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show;\n };\n PieSeriesModel.type = 'series.pie';\n PieSeriesModel.defaultOption = {\n // zlevel: 0,\n z: 2,\n legendHoverLink: true,\n colorBy: 'data',\n // 默认全局居中\n center: ['50%', '50%'],\n radius: [0, '75%'],\n // 默认顺时针\n clockwise: true,\n startAngle: 90,\n endAngle: 'auto',\n padAngle: 0,\n // 最小角度改为0\n minAngle: 0,\n // If the angle of a sector less than `minShowLabelAngle`,\n // the label will not be displayed.\n minShowLabelAngle: 0,\n // 选中时扇区偏移量\n selectedOffset: 10,\n // 选择模式,默认关闭,可选single,multiple\n // selectedMode: false,\n // 南丁格尔玫瑰图模式,'radius'(半径) | 'area'(面积)\n // roseType: null,\n percentPrecision: 2,\n // If still show when all data zero.\n stillShowZeroSum: true,\n // cursor: null,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n width: null,\n height: null,\n label: {\n // color: 'inherit',\n // If rotate around circle\n rotate: 0,\n show: true,\n overflow: 'truncate',\n // 'outer', 'inside', 'center'\n position: 'outer',\n // 'none', 'labelLine', 'edge'. Works only when position is 'outer'\n alignTo: 'none',\n // Closest distance between label and chart edge.\n // Works only position is 'outer' and alignTo is 'edge'.\n edgeDistance: '25%',\n // Works only position is 'outer' and alignTo is not 'edge'.\n bleedMargin: 10,\n // Distance between text and label line.\n distanceToLabelLine: 5\n // formatter: 标签文本格式器,同 tooltip.formatter,不支持异步回调\n // 默认使用全局文本样式,详见 textStyle\n // distance: 当position为inner时有效,为label位置到圆心的距离与圆半径(环状图为内外半径和)的比例系数\n },\n\n // Enabled when label.normal.position is 'outer'\n labelLine: {\n show: true,\n // 引导线两段中的第一段长度\n length: 15,\n // 引导线两段中的第二段长度\n length2: 15,\n smooth: false,\n minTurnAngle: 90,\n maxSurfaceAngle: 90,\n lineStyle: {\n // color: 各异,\n width: 1,\n type: 'solid'\n }\n },\n itemStyle: {\n borderWidth: 1,\n borderJoin: 'round'\n },\n showEmptyCircle: true,\n emptyCircleStyle: {\n color: 'lightgray',\n opacity: 1\n },\n labelLayout: {\n // Hide the overlapped label.\n hideOverlap: true\n },\n emphasis: {\n scale: true,\n scaleSize: 5\n },\n // If use strategy to avoid label overlapping\n avoidLabelOverlap: true,\n // Animation type. Valid values: expansion, scale\n animationType: 'expansion',\n animationDuration: 1000,\n // Animation type when update. Valid values: transition, expansion\n animationTypeUpdate: 'transition',\n animationEasingUpdate: 'cubicInOut',\n animationDurationUpdate: 500,\n animationEasing: 'cubicInOut'\n };\n return PieSeriesModel;\n}(SeriesModel);\nexport default PieSeriesModel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { isNumber } from 'zrender/lib/core/util.js';\nexport default function negativeDataFilter(seriesType) {\n return {\n seriesType: seriesType,\n reset: function (seriesModel, ecModel) {\n var data = seriesModel.getData();\n data.filterSelf(function (idx) {\n // handle negative value condition\n var valueDim = data.mapDimension('value');\n var curValue = data.get(valueDim, idx);\n if (isNumber(curValue) && !isNaN(curValue) && curValue < 0) {\n return false;\n }\n return true;\n });\n }\n };\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport { createLegacyDataSelectAction } from '../../legacy/dataSelectAction.js';\nimport pieLayout from '../pie/pieLayout.js';\nimport dataFilter from '../../processor/dataFilter.js';\nimport { curry } from 'zrender/lib/core/util.js';\nimport PieView from './PieView.js';\nimport PieSeriesModel from './PieSeries.js';\nimport negativeDataFilter from '../../processor/negativeDataFilter.js';\nexport function install(registers) {\n registers.registerChartView(PieView);\n registers.registerSeriesModel(PieSeriesModel);\n createLegacyDataSelectAction('pie', registers.registerAction);\n registers.registerLayout(curry(pieLayout, 'pie'));\n registers.registerProcessor(dataFilter('pie'));\n registers.registerProcessor(negativeDataFilter('pie'));\n}","import VBtn from './VBtn'\n\nexport { VBtn }\nexport default VBtn\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',{staticStyle:{\"border-radius\":\"1rem\"},attrs:{\"flat\":\"\"}},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"dense\":\"\"}},[_c('v-toolbar-title',{staticClass:\"chart_title\"},[_vm._v(\"Top 5 artikala danas\")])],1),_c('v-card-text',{staticClass:\"pt-0\"},[_c('div',{staticStyle:{\"display\":\"grid\",\"grid-template-columns\":\"1fr max-content\",\"align-items\":\"center\"}}),_c('v-chart',{staticClass:\"chart\",attrs:{\"autoresize\":\"\",\"id\":_vm.chart_id,\"option\":_vm.option}}),_c('v-data-table',{staticStyle:{\"background\":\"transparent !important\"},attrs:{\"dense\":\"\",\"items\":_vm.items,\"headers\":_vm.headers,\"hide-default-footer\":\"\",\"no-data-text\":\"Podaci ne postoje za odabranu kategoriju\"},scopedSlots:_vm._u([{key:`item.ukupno`,fn:function({ item }){return [_vm._v(\"\\n \"+_vm._s(_vm.$n(item.ukupno))+\"\\n \")]}}],null,true)})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n Top 5 artikala danas\n \n \n \n \n \n \n {{ $n(item.ukupno) }}\n \n \n \n \n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./top_5_articles_today.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./top_5_articles_today.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./top_5_articles_today.vue?vue&type=template&id=336b7b86&scoped=true\"\nimport script from \"./top_5_articles_today.vue?vue&type=script&lang=js\"\nexport * from \"./top_5_articles_today.vue?vue&type=script&lang=js\"\nimport style0 from \"./top_5_articles_today.vue?vue&type=style&index=0&id=336b7b86&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"336b7b86\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./top_5_articles_today.vue?vue&type=style&index=0&id=336b7b86&prod&scoped=true&lang=css\""],"sourceRoot":""}