{"version":3,"sources":["webpack:///./node_modules/echarts/lib/util/number.js","webpack:///./node_modules/echarts/lib/util/throttle.js","webpack:///./node_modules/echarts/lib/util/symbol.js","webpack:///./node_modules/echarts/lib/view/Component.js","webpack:///./node_modules/echarts/lib/visual/aria.js","webpack:///./node_modules/echarts/lib/util/model.js","webpack:///./node_modules/echarts/lib/view/Chart.js","webpack:///./node_modules/echarts/lib/visual/seriesColor.js"],"names":["zrUtil","RADIAN_EPSILON","_trim","str","replace","linearMap","val","domain","range","clamp","subDomain","subRange","parsePercent","percent","all","match","parseFloat","NaN","round","x","precision","returnStr","Math","min","max","toFixed","asc","arr","sort","a","b","getPrecision","isNaN","e","count","getPrecisionSafe","toString","eIndex","indexOf","slice","dotIndex","length","getPixelPrecision","dataExtent","pixelExtent","log","LN10","dataQuantity","floor","sizeQuantity","abs","isFinite","getPercentWithPrecision","valueList","idx","sum","reduce","acc","digits","pow","votesPerQuota","map","targetSeats","seats","votes","currentSum","remainder","Number","NEGATIVE_INFINITY","maxId","i","len","MAX_SAFE_INTEGER","remRadian","radian","pi2","PI","isRadianAroundZero","TIME_REG","parseDate","value","Date","exec","hour","toUpperCase","UTC","quantity","quantityExponent","exp","nice","nf","exponent","exp10","f","quantile","ascArr","p","H","h","v","reformIntervals","list","littleThan","curr","Infinity","currClose","interval","close","lg","splice","isNumeric","exports","ORIGIN_METHOD","RATE","THROTTLE_TYPE","throttle","fn","delay","debounce","currCall","diff","scope","args","debounceNextCall","lastCall","lastExec","timer","getTime","apply","cb","this","arguments","thisDelay","thisDebounce","clearTimeout","setTimeout","clear","debounceDelay","createOrUpdate","obj","fnAttr","rate","throttleType","originFn","lastThrottleType","lastRate","graphic","BoundingRect","_text","calculateTextPosition","Triangle","extendShape","type","shape","cx","cy","width","height","buildPath","path","moveTo","lineTo","closePath","Diamond","Pin","y","w","r","dy","angle","asin","dx","cos","tanX","sin","tanY","cpLen","cpLen2","arc","bezierCurveTo","Arrow","ctx","symbolCtors","line","Line","rect","Rect","roundRect","square","circle","Circle","diamond","pin","arrow","triangle","symbolShapeMakers","x1","y1","x2","y2","size","symbolBuildProxies","each","Ctor","name","SymbolClz","symbolType","out","style","res","textPosition","inBundle","proxySymbol","symbolPathSetColor","color","innerColor","symbolStyle","symbolShape","stroke","__isEmptyBrush","fill","dirty","createSymbol","keepAspect","symbolPath","isEmpty","substr","toLowerCase","makeImage","makePath","setColor","Group","componentUtil","clazzUtil","Component","group","uid","getUID","prototype","constructor","init","ecModel","api","render","componentModel","payload","dispose","filterForExposedEvent","componentProto","updateView","updateLayout","updateVisual","seriesModel","enableClassExtend","enableClassManagement","registerWhenExtend","_default","module","lang","_dataProvider","retrieveRawValue","dom","ariaModel","getModel","get","setAttribute","seriesCnt","eachSeries","ariaLabel","maxDataCnt","maxSeriesCnt","displaySeriesCnt","title","getTitle","getConfig","seriesLabels","prefix","seriesCount","seriesLabel","seriesName","seriesTpl","seriesId","seriesIndex","seriesType","getSeriesTypeName","subType","data","getData","window","displayCnt","dataLabels","getName","push","join","keyValues","result","key","RegExp","userConfig","pathArr","split","aria","option","text","series","typeNames","env","isObject","isArray","DUMMY_COMPONENT_NAME_PREFIX","normalizeToArray","Array","defaultEmphasis","opt","subOpts","emphasis","subOptName","hasOwnProperty","TEXT_STYLE_OPTIONS","getDataItemValue","dataItem","isDataItemOption","mappingToExists","exists","newCptOptions","index","exist","cptOption","id","isIdInner","makeIdAndName","mapResult","idMap","createHashMap","item","existCpt","set","assert","keyInfo","idNum","isNameSpecified","compressBatches","batchA","batchB","mapA","mapB","makeMap","mapToArray","sourceBatch","otherMap","dataIndices","dataIndex","otherDataIndices","j","lenj","isData","queryDataIndex","dataIndexInside","indexOfRawIndex","indexOfName","makeInner","innerUniqueIndex","random","hostObj","parseFinder","finder","isString","defaultMainType","has","parsedKey","mainType","queryType","includeMainTypes","queryParam","models","queryComponents","prop","getAttribute","getTooltipRenderMode","renderModeOption","domSupported","groupData","array","getKey","buckets","keys","_util","modelUtil","graphicUtil","_task","createTask","createRenderPlanner","inner","renderPlanner","Chart","renderTask","plan","renderTaskPlan","reset","renderTaskReset","context","view","highlight","toggleHighlight","downplay","remove","removeAll","incrementalPrepareRender","incrementalRender","updateTransform","chartProto","elSetState","el","state","highlightDigit","trigger","isGroup","isHighDownDispatcher","childCount","childAt","highlightKey","getHighlightDigit","dataIdx","getItemGraphicEl","eachItemGraphicEl","model","progressiveRender","pipelineContext","updateMethod","methodName","progressMethodMap","markUpdateMethod","progress","params","forceFirstProgress","Gradient","isFunction","createOnAllSeries","performRawSeries","colorAccessPath","visualColorAccessPath","colorCallback","getColorFromPalette","getSeriesCount","setVisual","borderColorAccessPath","visualBorderColorAccessPath","borderColor","isSeriesFiltered","setItemVisual","getDataParams","dataEach","itemModel","getItemModel","hasItemOption"],"mappings":"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","file":"js/chunk-03b8ff58.14f6f386.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\nvar zrUtil = require(\"zrender/lib/core/util\");\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* A third-party license is embeded for some of the code in this file:\n* The method \"quantile\" was copied from \"d3.js\".\n* (See more details in the comment of the method below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* ).\n*/\nvar RADIAN_EPSILON = 1e-4;\n\nfunction _trim(str) {\n return str.replace(/^\\s+|\\s+$/g, '');\n}\n/**\n * Linear mapping a value from domain to range\n * @memberOf module:echarts/util/number\n * @param {(number|Array.)} val\n * @param {Array.} domain Domain extent domain[0] can be bigger than domain[1]\n * @param {Array.} range Range extent range[0] can be bigger than range[1]\n * @param {boolean} clamp\n * @return {(number|Array.}\n */\n\n\nfunction linearMap(val, domain, range, clamp) {\n var subDomain = domain[1] - domain[0];\n var subRange = range[1] - range[0];\n\n if (subDomain === 0) {\n return subRange === 0 ? range[0] : (range[0] + range[1]) / 2;\n } // Avoid accuracy problem in edge, such as\n // 146.39 - 62.83 === 83.55999999999999.\n // See echarts/test/ut/spec/util/number.js#linearMap#accuracyError\n // It is a little verbose for efficiency considering this method\n // is a hotspot.\n\n\n if (clamp) {\n if (subDomain > 0) {\n if (val <= domain[0]) {\n return range[0];\n } else if (val >= domain[1]) {\n return range[1];\n }\n } else {\n if (val >= domain[0]) {\n return range[0];\n } else if (val <= domain[1]) {\n return range[1];\n }\n }\n } else {\n if (val === domain[0]) {\n return range[0];\n }\n\n if (val === domain[1]) {\n return range[1];\n }\n }\n\n return (val - domain[0]) / subDomain * subRange + range[0];\n}\n/**\n * Convert a percent string to absolute number.\n * Returns NaN if percent is not a valid string or number\n * @memberOf module:echarts/util/number\n * @param {string|number} percent\n * @param {number} all\n * @return {number}\n */\n\n\nfunction parsePercent(percent, all) {\n switch (percent) {\n case 'center':\n case 'middle':\n percent = '50%';\n break;\n\n case 'left':\n case 'top':\n percent = '0%';\n break;\n\n case 'right':\n case 'bottom':\n percent = '100%';\n break;\n }\n\n if (typeof percent === 'string') {\n if (_trim(percent).match(/%$/)) {\n return parseFloat(percent) / 100 * all;\n }\n\n return parseFloat(percent);\n }\n\n return percent == null ? NaN : +percent;\n}\n/**\n * (1) Fix rounding error of float numbers.\n * (2) Support return string to avoid scientific notation like '3.5e-7'.\n *\n * @param {number} x\n * @param {number} [precision]\n * @param {boolean} [returnStr]\n * @return {number|string}\n */\n\n\nfunction round(x, precision, returnStr) {\n if (precision == null) {\n precision = 10;\n } // Avoid range error\n\n\n precision = Math.min(Math.max(0, precision), 20);\n x = (+x).toFixed(precision);\n return returnStr ? x : +x;\n}\n/**\n * asc sort arr.\n * The input arr will be modified.\n *\n * @param {Array} arr\n * @return {Array} The input arr.\n */\n\n\nfunction asc(arr) {\n arr.sort(function (a, b) {\n return a - b;\n });\n return arr;\n}\n/**\n * Get precision\n * @param {number} val\n */\n\n\nfunction getPrecision(val) {\n val = +val;\n\n if (isNaN(val)) {\n return 0;\n } // It is much faster than methods converting number to string as follows\n // var tmp = val.toString();\n // return tmp.length - 1 - tmp.indexOf('.');\n // especially when precision is low\n\n\n var e = 1;\n var count = 0;\n\n while (Math.round(val * e) / e !== val) {\n e *= 10;\n count++;\n }\n\n return count;\n}\n/**\n * @param {string|number} val\n * @return {number}\n */\n\n\nfunction getPrecisionSafe(val) {\n var str = val.toString(); // Consider scientific notation: '3.4e-12' '3.4e+12'\n\n var eIndex = str.indexOf('e');\n\n if (eIndex > 0) {\n var precision = +str.slice(eIndex + 1);\n return precision < 0 ? -precision : 0;\n } else {\n var dotIndex = str.indexOf('.');\n return dotIndex < 0 ? 0 : str.length - 1 - dotIndex;\n }\n}\n/**\n * Minimal dicernible data precisioin according to a single pixel.\n *\n * @param {Array.} dataExtent\n * @param {Array.} pixelExtent\n * @return {number} precision\n */\n\n\nfunction getPixelPrecision(dataExtent, pixelExtent) {\n var log = Math.log;\n var LN10 = Math.LN10;\n var dataQuantity = Math.floor(log(dataExtent[1] - dataExtent[0]) / LN10);\n var sizeQuantity = Math.round(log(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10); // toFixed() digits argument must be between 0 and 20.\n\n var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20);\n return !isFinite(precision) ? 20 : precision;\n}\n/**\n * Get a data of given precision, assuring the sum of percentages\n * in valueList is 1.\n * The largest remainer method is used.\n * https://en.wikipedia.org/wiki/Largest_remainder_method\n *\n * @param {Array.} valueList a list of all data\n * @param {number} idx index of the data to be processed in valueList\n * @param {number} precision integer number showing digits of precision\n * @return {number} percent ranging from 0 to 100\n */\n\n\nfunction getPercentWithPrecision(valueList, idx, precision) {\n if (!valueList[idx]) {\n return 0;\n }\n\n var sum = zrUtil.reduce(valueList, function (acc, val) {\n return acc + (isNaN(val) ? 0 : val);\n }, 0);\n\n if (sum === 0) {\n return 0;\n }\n\n var digits = Math.pow(10, precision);\n var votesPerQuota = zrUtil.map(valueList, function (val) {\n return (isNaN(val) ? 0 : val) / sum * digits * 100;\n });\n var targetSeats = digits * 100;\n var seats = zrUtil.map(votesPerQuota, function (votes) {\n // Assign automatic seats.\n return Math.floor(votes);\n });\n var currentSum = zrUtil.reduce(seats, function (acc, val) {\n return acc + val;\n }, 0);\n var remainder = zrUtil.map(votesPerQuota, function (votes, idx) {\n return votes - seats[idx];\n }); // Has remainding votes.\n\n while (currentSum < targetSeats) {\n // Find next largest remainder.\n var max = Number.NEGATIVE_INFINITY;\n var maxId = null;\n\n for (var i = 0, len = remainder.length; i < len; ++i) {\n if (remainder[i] > max) {\n max = remainder[i];\n maxId = i;\n }\n } // Add a vote to max remainder.\n\n\n ++seats[maxId];\n remainder[maxId] = 0;\n ++currentSum;\n }\n\n return seats[idx] / digits;\n} // Number.MAX_SAFE_INTEGER, ie do not support.\n\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * To 0 - 2 * PI, considering negative radian.\n * @param {number} radian\n * @return {number}\n */\n\nfunction remRadian(radian) {\n var pi2 = Math.PI * 2;\n return (radian % pi2 + pi2) % pi2;\n}\n/**\n * @param {type} radian\n * @return {boolean}\n */\n\n\nfunction isRadianAroundZero(val) {\n return val > -RADIAN_EPSILON && val < RADIAN_EPSILON;\n}\n/* eslint-disable */\n\n\nvar TIME_REG = /^(?:(\\d{4})(?:[-\\/](\\d{1,2})(?:[-\\/](\\d{1,2})(?:[T ](\\d{1,2})(?::(\\d\\d)(?::(\\d\\d)(?:[.,](\\d+))?)?)?(Z|[\\+\\-]\\d\\d:?\\d\\d)?)?)?)?)?$/; // jshint ignore:line\n\n/* eslint-enable */\n\n/**\n * @param {string|Date|number} value These values can be accepted:\n * + An instance of Date, represent a time in its own time zone.\n * + Or string in a subset of ISO 8601, only including:\n * + only year, month, date: '2012-03', '2012-03-01', '2012-03-01 05', '2012-03-01 05:06',\n * + separated with T or space: '2012-03-01T12:22:33.123', '2012-03-01 12:22:33.123',\n * + time zone: '2012-03-01T12:22:33Z', '2012-03-01T12:22:33+8000', '2012-03-01T12:22:33-05:00',\n * all of which will be treated as local time if time zone is not specified\n * (see ).\n * + Or other string format, including (all of which will be treated as loacal time):\n * '2012', '2012-3-1', '2012/3/1', '2012/03/01',\n * '2009/6/12 2:00', '2009/6/12 2:05:08', '2009/6/12 2:05:08.123'\n * + a timestamp, which represent a time in UTC.\n * @return {Date} date\n */\n\nfunction parseDate(value) {\n if (value instanceof Date) {\n return value;\n } else if (typeof value === 'string') {\n // Different browsers parse date in different way, so we parse it manually.\n // Some other issues:\n // new Date('1970-01-01') is UTC,\n // new Date('1970/01/01') and new Date('1970-1-01') is local.\n // See issue #3623\n var match = TIME_REG.exec(value);\n\n if (!match) {\n // return Invalid Date.\n return new Date(NaN);\n } // Use local time when no timezone offset specifed.\n\n\n if (!match[8]) {\n // match[n] can only be string or undefined.\n // But take care of '12' + 1 => '121'.\n return new Date(+match[1], +(match[2] || 1) - 1, +match[3] || 1, +match[4] || 0, +(match[5] || 0), +match[6] || 0, +match[7] || 0);\n } // Timezoneoffset of Javascript Date has considered DST (Daylight Saving Time,\n // https://tc39.github.io/ecma262/#sec-daylight-saving-time-adjustment).\n // For example, system timezone is set as \"Time Zone: America/Toronto\",\n // then these code will get different result:\n // `new Date(1478411999999).getTimezoneOffset(); // get 240`\n // `new Date(1478412000000).getTimezoneOffset(); // get 300`\n // So we should not use `new Date`, but use `Date.UTC`.\n else {\n var hour = +match[4] || 0;\n\n if (match[8].toUpperCase() !== 'Z') {\n hour -= match[8].slice(0, 3);\n }\n\n return new Date(Date.UTC(+match[1], +(match[2] || 1) - 1, +match[3] || 1, hour, +(match[5] || 0), +match[6] || 0, +match[7] || 0));\n }\n } else if (value == null) {\n return new Date(NaN);\n }\n\n return new Date(Math.round(value));\n}\n/**\n * Quantity of a number. e.g. 0.1, 1, 10, 100\n *\n * @param {number} val\n * @return {number}\n */\n\n\nfunction quantity(val) {\n return Math.pow(10, quantityExponent(val));\n}\n/**\n * Exponent of the quantity of a number\n * e.g., 1234 equals to 1.234*10^3, so quantityExponent(1234) is 3\n *\n * @param {number} val non-negative value\n * @return {number}\n */\n\n\nfunction quantityExponent(val) {\n if (val === 0) {\n return 0;\n }\n\n var exp = Math.floor(Math.log(val) / Math.LN10);\n /**\n * exp is expected to be the rounded-down result of the base-10 log of val.\n * But due to the precision loss with Math.log(val), we need to restore it\n * using 10^exp to make sure we can get val back from exp. #11249\n */\n\n if (val / Math.pow(10, exp) >= 10) {\n exp++;\n }\n\n return exp;\n}\n/**\n * find a “nice” number approximately equal to x. Round the number if round = true,\n * take ceiling if round = false. The primary observation is that the “nicest”\n * numbers in decimal are 1, 2, and 5, and all power-of-ten multiples of these numbers.\n *\n * See \"Nice Numbers for Graph Labels\" of Graphic Gems.\n *\n * @param {number} val Non-negative value.\n * @param {boolean} round\n * @return {number}\n */\n\n\nfunction nice(val, round) {\n var exponent = quantityExponent(val);\n var exp10 = Math.pow(10, exponent);\n var f = val / exp10; // 1 <= f < 10\n\n var nf;\n\n if (round) {\n if (f < 1.5) {\n nf = 1;\n } else if (f < 2.5) {\n nf = 2;\n } else if (f < 4) {\n nf = 3;\n } else if (f < 7) {\n nf = 5;\n } else {\n nf = 10;\n }\n } else {\n if (f < 1) {\n nf = 1;\n } else if (f < 2) {\n nf = 2;\n } else if (f < 3) {\n nf = 3;\n } else if (f < 5) {\n nf = 5;\n } else {\n nf = 10;\n }\n }\n\n val = nf * exp10; // Fix 3 * 0.1 === 0.30000000000000004 issue (see IEEE 754).\n // 20 is the uppper bound of toFixed.\n\n return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val;\n}\n/**\n * This code was copied from \"d3.js\"\n * .\n * See the license statement at the head of this file.\n * @param {Array.} ascArr\n */\n\n\nfunction quantile(ascArr, p) {\n var H = (ascArr.length - 1) * p + 1;\n var h = Math.floor(H);\n var v = +ascArr[h - 1];\n var e = H - h;\n return e ? v + e * (ascArr[h] - v) : v;\n}\n/**\n * Order intervals asc, and split them when overlap.\n * expect(numberUtil.reformIntervals([\n * {interval: [18, 62], close: [1, 1]},\n * {interval: [-Infinity, -70], close: [0, 0]},\n * {interval: [-70, -26], close: [1, 1]},\n * {interval: [-26, 18], close: [1, 1]},\n * {interval: [62, 150], close: [1, 1]},\n * {interval: [106, 150], close: [1, 1]},\n * {interval: [150, Infinity], close: [0, 0]}\n * ])).toEqual([\n * {interval: [-Infinity, -70], close: [0, 0]},\n * {interval: [-70, -26], close: [1, 1]},\n * {interval: [-26, 18], close: [0, 1]},\n * {interval: [18, 62], close: [0, 1]},\n * {interval: [62, 150], close: [0, 1]},\n * {interval: [150, Infinity], close: [0, 0]}\n * ]);\n * @param {Array.} list, where `close` mean open or close\n * of the interval, and Infinity can be used.\n * @return {Array.} The origin list, which has been reformed.\n */\n\n\nfunction reformIntervals(list) {\n list.sort(function (a, b) {\n return littleThan(a, b, 0) ? -1 : 1;\n });\n var curr = -Infinity;\n var currClose = 1;\n\n for (var i = 0; i < list.length;) {\n var interval = list[i].interval;\n var close = list[i].close;\n\n for (var lg = 0; lg < 2; lg++) {\n if (interval[lg] <= curr) {\n interval[lg] = curr;\n close[lg] = !lg ? 1 - currClose : 1;\n }\n\n curr = interval[lg];\n currClose = close[lg];\n }\n\n if (interval[0] === interval[1] && close[0] * close[1] !== 1) {\n list.splice(i, 1);\n } else {\n i++;\n }\n }\n\n return list;\n\n function littleThan(a, b, lg) {\n return a.interval[lg] < b.interval[lg] || a.interval[lg] === b.interval[lg] && (a.close[lg] - b.close[lg] === (!lg ? 1 : -1) || !lg && littleThan(a, b, 1));\n }\n}\n/**\n * parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n * ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n * subtraction forces infinities to NaN\n *\n * @param {*} v\n * @return {boolean}\n */\n\n\nfunction isNumeric(v) {\n return v - parseFloat(v) >= 0;\n}\n\nexports.linearMap = linearMap;\nexports.parsePercent = parsePercent;\nexports.round = round;\nexports.asc = asc;\nexports.getPrecision = getPrecision;\nexports.getPrecisionSafe = getPrecisionSafe;\nexports.getPixelPrecision = getPixelPrecision;\nexports.getPercentWithPrecision = getPercentWithPrecision;\nexports.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;\nexports.remRadian = remRadian;\nexports.isRadianAroundZero = isRadianAroundZero;\nexports.parseDate = parseDate;\nexports.quantity = quantity;\nexports.quantityExponent = quantityExponent;\nexports.nice = nice;\nexports.quantile = quantile;\nexports.reformIntervals = reformIntervals;\nexports.isNumeric = isNumeric;","\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* 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*/\nvar ORIGIN_METHOD = '\\0__throttleOriginMethod';\nvar RATE = '\\0__throttleRate';\nvar THROTTLE_TYPE = '\\0__throttleType';\n/**\n * @public\n * @param {(Function)} fn\n * @param {number} [delay=0] Unit: ms.\n * @param {boolean} [debounce=false]\n * true: If call interval less than `delay`, only the last call works.\n * false: If call interval less than `delay, call works on fixed rate.\n * @return {(Function)} throttled fn.\n */\n\nfunction throttle(fn, delay, debounce) {\n var currCall;\n var lastCall = 0;\n var lastExec = 0;\n var timer = null;\n var diff;\n var scope;\n var args;\n var debounceNextCall;\n delay = delay || 0;\n\n function exec() {\n lastExec = new Date().getTime();\n timer = null;\n fn.apply(scope, args || []);\n }\n\n var cb = function () {\n currCall = new Date().getTime();\n scope = this;\n args = arguments;\n var thisDelay = debounceNextCall || delay;\n var thisDebounce = debounceNextCall || debounce;\n debounceNextCall = null;\n diff = currCall - (thisDebounce ? lastCall : lastExec) - thisDelay;\n clearTimeout(timer); // Here we should make sure that: the `exec` SHOULD NOT be called later\n // than a new call of `cb`, that is, preserving the command order. Consider\n // calculating \"scale rate\" when roaming as an example. When a call of `cb`\n // happens, either the `exec` is called dierectly, or the call is delayed.\n // But the delayed call should never be later than next call of `cb`. Under\n // this assurance, we can simply update view state each time `dispatchAction`\n // triggered by user roaming, but not need to add extra code to avoid the\n // state being \"rolled-back\".\n\n if (thisDebounce) {\n timer = setTimeout(exec, thisDelay);\n } else {\n if (diff >= 0) {\n exec();\n } else {\n timer = setTimeout(exec, -diff);\n }\n }\n\n lastCall = currCall;\n };\n /**\n * Clear throttle.\n * @public\n */\n\n\n cb.clear = function () {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n };\n /**\n * Enable debounce once.\n */\n\n\n cb.debounceNextCall = function (debounceDelay) {\n debounceNextCall = debounceDelay;\n };\n\n return cb;\n}\n/**\n * Create throttle method or update throttle rate.\n *\n * @example\n * ComponentView.prototype.render = function () {\n * ...\n * throttle.createOrUpdate(\n * this,\n * '_dispatchAction',\n * this.model.get('throttle'),\n * 'fixRate'\n * );\n * };\n * ComponentView.prototype.remove = function () {\n * throttle.clear(this, '_dispatchAction');\n * };\n * ComponentView.prototype.dispose = function () {\n * throttle.clear(this, '_dispatchAction');\n * };\n *\n * @public\n * @param {Object} obj\n * @param {string} fnAttr\n * @param {number} [rate]\n * @param {string} [throttleType='fixRate'] 'fixRate' or 'debounce'\n * @return {Function} throttled function.\n */\n\n\nfunction createOrUpdate(obj, fnAttr, rate, throttleType) {\n var fn = obj[fnAttr];\n\n if (!fn) {\n return;\n }\n\n var originFn = fn[ORIGIN_METHOD] || fn;\n var lastThrottleType = fn[THROTTLE_TYPE];\n var lastRate = fn[RATE];\n\n if (lastRate !== rate || lastThrottleType !== throttleType) {\n if (rate == null || !throttleType) {\n return obj[fnAttr] = originFn;\n }\n\n fn = obj[fnAttr] = throttle(originFn, rate, throttleType === 'debounce');\n fn[ORIGIN_METHOD] = originFn;\n fn[THROTTLE_TYPE] = throttleType;\n fn[RATE] = rate;\n }\n\n return fn;\n}\n/**\n * Clear throttle. Example see throttle.createOrUpdate.\n *\n * @public\n * @param {Object} obj\n * @param {string} fnAttr\n */\n\n\nfunction clear(obj, fnAttr) {\n var fn = obj[fnAttr];\n\n if (fn && fn[ORIGIN_METHOD]) {\n obj[fnAttr] = fn[ORIGIN_METHOD];\n }\n}\n\nexports.throttle = throttle;\nexports.createOrUpdate = createOrUpdate;\nexports.clear = clear;","\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"./graphic\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar _text = require(\"zrender/lib/contain/text\");\n\nvar calculateTextPosition = _text.calculateTextPosition;\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// Symbol factory\n\n/**\n * Triangle shape\n * @inner\n */\nvar Triangle = graphic.extendShape({\n type: 'triangle',\n shape: {\n cx: 0,\n cy: 0,\n width: 0,\n height: 0\n },\n buildPath: function (path, shape) {\n var cx = shape.cx;\n var cy = shape.cy;\n var width = shape.width / 2;\n var height = shape.height / 2;\n path.moveTo(cx, cy - height);\n path.lineTo(cx + width, cy + height);\n path.lineTo(cx - width, cy + height);\n path.closePath();\n }\n});\n/**\n * Diamond shape\n * @inner\n */\n\nvar Diamond = graphic.extendShape({\n type: 'diamond',\n shape: {\n cx: 0,\n cy: 0,\n width: 0,\n height: 0\n },\n buildPath: function (path, shape) {\n var cx = shape.cx;\n var cy = shape.cy;\n var width = shape.width / 2;\n var height = shape.height / 2;\n path.moveTo(cx, cy - height);\n path.lineTo(cx + width, cy);\n path.lineTo(cx, cy + height);\n path.lineTo(cx - width, cy);\n path.closePath();\n }\n});\n/**\n * Pin shape\n * @inner\n */\n\nvar Pin = graphic.extendShape({\n type: 'pin',\n shape: {\n // x, y on the cusp\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n buildPath: function (path, shape) {\n var x = shape.x;\n var y = shape.y;\n var w = shape.width / 5 * 3; // Height must be larger than width\n\n var h = Math.max(w, shape.height);\n var r = w / 2; // Dist on y with tangent point and circle center\n\n var dy = r * r / (h - r);\n var cy = y - h + r + dy;\n var angle = Math.asin(dy / r); // Dist on x with tangent point and circle center\n\n var dx = Math.cos(angle) * r;\n var tanX = Math.sin(angle);\n var tanY = Math.cos(angle);\n var cpLen = r * 0.6;\n var cpLen2 = r * 0.7;\n path.moveTo(x - dx, cy + dy);\n path.arc(x, cy, r, Math.PI - angle, Math.PI * 2 + angle);\n path.bezierCurveTo(x + dx - tanX * cpLen, cy + dy + tanY * cpLen, x, y - cpLen2, x, y);\n path.bezierCurveTo(x, y - cpLen2, x - dx + tanX * cpLen, cy + dy + tanY * cpLen, x - dx, cy + dy);\n path.closePath();\n }\n});\n/**\n * Arrow shape\n * @inner\n */\n\nvar Arrow = graphic.extendShape({\n type: 'arrow',\n shape: {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n buildPath: function (ctx, shape) {\n var height = shape.height;\n var width = shape.width;\n var x = shape.x;\n var y = shape.y;\n var dx = width / 3 * 2;\n ctx.moveTo(x, y);\n ctx.lineTo(x + dx, y + height);\n ctx.lineTo(x, y + height / 4 * 3);\n ctx.lineTo(x - dx, y + height);\n ctx.lineTo(x, y);\n ctx.closePath();\n }\n});\n/**\n * Map of path contructors\n * @type {Object.}\n */\n\nvar symbolCtors = {\n line: graphic.Line,\n rect: graphic.Rect,\n roundRect: graphic.Rect,\n square: graphic.Rect,\n circle: graphic.Circle,\n diamond: Diamond,\n pin: Pin,\n arrow: Arrow,\n triangle: Triangle\n};\nvar symbolShapeMakers = {\n line: function (x, y, w, h, shape) {\n // FIXME\n shape.x1 = x;\n shape.y1 = y + h / 2;\n shape.x2 = x + w;\n shape.y2 = y + h / 2;\n },\n rect: function (x, y, w, h, shape) {\n shape.x = x;\n shape.y = y;\n shape.width = w;\n shape.height = h;\n },\n roundRect: function (x, y, w, h, shape) {\n shape.x = x;\n shape.y = y;\n shape.width = w;\n shape.height = h;\n shape.r = Math.min(w, h) / 4;\n },\n square: function (x, y, w, h, shape) {\n var size = Math.min(w, h);\n shape.x = x;\n shape.y = y;\n shape.width = size;\n shape.height = size;\n },\n circle: function (x, y, w, h, shape) {\n // Put circle in the center of square\n shape.cx = x + w / 2;\n shape.cy = y + h / 2;\n shape.r = Math.min(w, h) / 2;\n },\n diamond: function (x, y, w, h, shape) {\n shape.cx = x + w / 2;\n shape.cy = y + h / 2;\n shape.width = w;\n shape.height = h;\n },\n pin: function (x, y, w, h, shape) {\n shape.x = x + w / 2;\n shape.y = y + h / 2;\n shape.width = w;\n shape.height = h;\n },\n arrow: function (x, y, w, h, shape) {\n shape.x = x + w / 2;\n shape.y = y + h / 2;\n shape.width = w;\n shape.height = h;\n },\n triangle: function (x, y, w, h, shape) {\n shape.cx = x + w / 2;\n shape.cy = y + h / 2;\n shape.width = w;\n shape.height = h;\n }\n};\nvar symbolBuildProxies = {};\nzrUtil.each(symbolCtors, function (Ctor, name) {\n symbolBuildProxies[name] = new Ctor();\n});\nvar SymbolClz = graphic.extendShape({\n type: 'symbol',\n shape: {\n symbolType: '',\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n calculateTextPosition: function (out, style, rect) {\n var res = calculateTextPosition(out, style, rect);\n var shape = this.shape;\n\n if (shape && shape.symbolType === 'pin' && style.textPosition === 'inside') {\n res.y = rect.y + rect.height * 0.4;\n }\n\n return res;\n },\n buildPath: function (ctx, shape, inBundle) {\n var symbolType = shape.symbolType;\n\n if (symbolType !== 'none') {\n var proxySymbol = symbolBuildProxies[symbolType];\n\n if (!proxySymbol) {\n // Default rect\n symbolType = 'rect';\n proxySymbol = symbolBuildProxies[symbolType];\n }\n\n symbolShapeMakers[symbolType](shape.x, shape.y, shape.width, shape.height, proxySymbol.shape);\n proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle);\n }\n }\n}); // Provide setColor helper method to avoid determine if set the fill or stroke outside\n\nfunction symbolPathSetColor(color, innerColor) {\n if (this.type !== 'image') {\n var symbolStyle = this.style;\n var symbolShape = this.shape;\n\n if (symbolShape && symbolShape.symbolType === 'line') {\n symbolStyle.stroke = color;\n } else if (this.__isEmptyBrush) {\n symbolStyle.stroke = color;\n symbolStyle.fill = innerColor || '#fff';\n } else {\n // FIXME 判断图形默认是填充还是描边,使用 onlyStroke ?\n symbolStyle.fill && (symbolStyle.fill = color);\n symbolStyle.stroke && (symbolStyle.stroke = color);\n }\n\n this.dirty(false);\n }\n}\n/**\n * Create a symbol element with given symbol configuration: shape, x, y, width, height, color\n * @param {string} symbolType\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {string} color\n * @param {boolean} [keepAspect=false] whether to keep the ratio of w/h,\n * for path and image only.\n */\n\n\nfunction createSymbol(symbolType, x, y, w, h, color, keepAspect) {\n // TODO Support image object, DynamicImage.\n var isEmpty = symbolType.indexOf('empty') === 0;\n\n if (isEmpty) {\n symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6);\n }\n\n var symbolPath;\n\n if (symbolType.indexOf('image://') === 0) {\n symbolPath = graphic.makeImage(symbolType.slice(8), new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\n } else if (symbolType.indexOf('path://') === 0) {\n symbolPath = graphic.makePath(symbolType.slice(7), {}, new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\n } else {\n symbolPath = new SymbolClz({\n shape: {\n symbolType: symbolType,\n x: x,\n y: y,\n width: w,\n height: h\n }\n });\n }\n\n symbolPath.__isEmptyBrush = isEmpty;\n symbolPath.setColor = symbolPathSetColor;\n symbolPath.setColor(color);\n return symbolPath;\n}\n\nexports.createSymbol = createSymbol;","\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\nvar Group = require(\"zrender/lib/container/Group\");\n\nvar componentUtil = require(\"../util/component\");\n\nvar clazzUtil = require(\"../util/clazz\");\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*/\nvar Component = function () {\n /**\n * @type {module:zrender/container/Group}\n * @readOnly\n */\n this.group = new Group();\n /**\n * @type {string}\n * @readOnly\n */\n\n this.uid = componentUtil.getUID('viewComponent');\n};\n\nComponent.prototype = {\n constructor: Component,\n init: function (ecModel, api) {},\n render: function (componentModel, ecModel, api, payload) {},\n dispose: function () {},\n\n /**\n * @param {string} eventType\n * @param {Object} query\n * @param {module:zrender/Element} targetEl\n * @param {Object} packedEvent\n * @return {boolen} Pass only when return `true`.\n */\n filterForExposedEvent: null\n};\nvar componentProto = Component.prototype;\n\ncomponentProto.updateView = componentProto.updateLayout = componentProto.updateVisual = function (seriesModel, ecModel, api, payload) {// Do nothing;\n}; // Enable Component.extend.\n\n\nclazzUtil.enableClassExtend(Component); // Enable capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nclazzUtil.enableClassManagement(Component, {\n registerWhenExtend: true\n});\nvar _default = Component;\nmodule.exports = _default;","\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar lang = require(\"../lang\");\n\nvar _dataProvider = require(\"../data/helper/dataProvider\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\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*/\nfunction _default(dom, ecModel) {\n var ariaModel = ecModel.getModel('aria');\n\n if (!ariaModel.get('show')) {\n return;\n } else if (ariaModel.get('description')) {\n dom.setAttribute('aria-label', ariaModel.get('description'));\n return;\n }\n\n var seriesCnt = 0;\n ecModel.eachSeries(function (seriesModel, idx) {\n ++seriesCnt;\n }, this);\n var maxDataCnt = ariaModel.get('data.maxCount') || 10;\n var maxSeriesCnt = ariaModel.get('series.maxCount') || 10;\n var displaySeriesCnt = Math.min(seriesCnt, maxSeriesCnt);\n var ariaLabel;\n\n if (seriesCnt < 1) {\n // No series, no aria label\n return;\n } else {\n var title = getTitle();\n\n if (title) {\n ariaLabel = replace(getConfig('general.withTitle'), {\n title: title\n });\n } else {\n ariaLabel = getConfig('general.withoutTitle');\n }\n\n var seriesLabels = [];\n var prefix = seriesCnt > 1 ? 'series.multiple.prefix' : 'series.single.prefix';\n ariaLabel += replace(getConfig(prefix), {\n seriesCount: seriesCnt\n });\n ecModel.eachSeries(function (seriesModel, idx) {\n if (idx < displaySeriesCnt) {\n var seriesLabel;\n var seriesName = seriesModel.get('name');\n var seriesTpl = 'series.' + (seriesCnt > 1 ? 'multiple' : 'single') + '.';\n seriesLabel = getConfig(seriesName ? seriesTpl + 'withName' : seriesTpl + 'withoutName');\n seriesLabel = replace(seriesLabel, {\n seriesId: seriesModel.seriesIndex,\n seriesName: seriesModel.get('name'),\n seriesType: getSeriesTypeName(seriesModel.subType)\n });\n var data = seriesModel.getData();\n window.data = data;\n\n if (data.count() > maxDataCnt) {\n // Show part of data\n seriesLabel += replace(getConfig('data.partialData'), {\n displayCnt: maxDataCnt\n });\n } else {\n seriesLabel += getConfig('data.allData');\n }\n\n var dataLabels = [];\n\n for (var i = 0; i < data.count(); i++) {\n if (i < maxDataCnt) {\n var name = data.getName(i);\n var value = retrieveRawValue(data, i);\n dataLabels.push(replace(name ? getConfig('data.withName') : getConfig('data.withoutName'), {\n name: name,\n value: value\n }));\n }\n }\n\n seriesLabel += dataLabels.join(getConfig('data.separator.middle')) + getConfig('data.separator.end');\n seriesLabels.push(seriesLabel);\n }\n });\n ariaLabel += seriesLabels.join(getConfig('series.multiple.separator.middle')) + getConfig('series.multiple.separator.end');\n dom.setAttribute('aria-label', ariaLabel);\n }\n\n function replace(str, keyValues) {\n if (typeof str !== 'string') {\n return str;\n }\n\n var result = str;\n zrUtil.each(keyValues, function (value, key) {\n result = result.replace(new RegExp('\\\\{\\\\s*' + key + '\\\\s*\\\\}', 'g'), value);\n });\n return result;\n }\n\n function getConfig(path) {\n var userConfig = ariaModel.get(path);\n\n if (userConfig == null) {\n var pathArr = path.split('.');\n var result = lang.aria;\n\n for (var i = 0; i < pathArr.length; ++i) {\n result = result[pathArr[i]];\n }\n\n return result;\n } else {\n return userConfig;\n }\n }\n\n function getTitle() {\n var title = ecModel.getModel('title').option;\n\n if (title && title.length) {\n title = title[0];\n }\n\n return title && title.text;\n }\n\n function getSeriesTypeName(type) {\n return lang.series.typeNames[type] || '自定义图';\n }\n}\n\nmodule.exports = _default;","\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\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*/\nvar each = zrUtil.each;\nvar isObject = zrUtil.isObject;\nvar isArray = zrUtil.isArray;\n/**\n * Make the name displayable. But we should\n * make sure it is not duplicated with user\n * specified name, so use '\\0';\n */\n\nvar DUMMY_COMPONENT_NAME_PREFIX = 'series\\0';\n/**\n * If value is not array, then translate it to array.\n * @param {*} value\n * @return {Array} [value] or value\n */\n\nfunction normalizeToArray(value) {\n return value instanceof Array ? value : value == null ? [] : [value];\n}\n/**\n * Sync default option between normal and emphasis like `position` and `show`\n * In case some one will write code like\n * label: {\n * show: false,\n * position: 'outside',\n * fontSize: 18\n * },\n * emphasis: {\n * label: { show: true }\n * }\n * @param {Object} opt\n * @param {string} key\n * @param {Array.} subOpts\n */\n\n\nfunction defaultEmphasis(opt, key, subOpts) {\n // Caution: performance sensitive.\n if (opt) {\n opt[key] = opt[key] || {};\n opt.emphasis = opt.emphasis || {};\n opt.emphasis[key] = opt.emphasis[key] || {}; // Default emphasis option from normal\n\n for (var i = 0, len = subOpts.length; i < len; i++) {\n var subOptName = subOpts[i];\n\n if (!opt.emphasis[key].hasOwnProperty(subOptName) && opt[key].hasOwnProperty(subOptName)) {\n opt.emphasis[key][subOptName] = opt[key][subOptName];\n }\n }\n }\n}\n\nvar TEXT_STYLE_OPTIONS = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily', 'rich', 'tag', 'color', 'textBorderColor', 'textBorderWidth', 'width', 'height', 'lineHeight', 'align', 'verticalAlign', 'baseline', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY', 'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY', 'backgroundColor', 'borderColor', 'borderWidth', 'borderRadius', 'padding']; // modelUtil.LABEL_OPTIONS = modelUtil.TEXT_STYLE_OPTIONS.concat([\n// 'position', 'offset', 'rotate', 'origin', 'show', 'distance', 'formatter',\n// 'fontStyle', 'fontWeight', 'fontSize', 'fontFamily',\n// // FIXME: deprecated, check and remove it.\n// 'textStyle'\n// ]);\n\n/**\n * The method do not ensure performance.\n * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}]\n * This helper method retieves value from data.\n * @param {string|number|Date|Array|Object} dataItem\n * @return {number|string|Date|Array.}\n */\n\nfunction getDataItemValue(dataItem) {\n return isObject(dataItem) && !isArray(dataItem) && !(dataItem instanceof Date) ? dataItem.value : dataItem;\n}\n/**\n * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}]\n * This helper method determine if dataItem has extra option besides value\n * @param {string|number|Date|Array|Object} dataItem\n */\n\n\nfunction isDataItemOption(dataItem) {\n return isObject(dataItem) && !(dataItem instanceof Array); // // markLine data can be array\n // && !(dataItem[0] && isObject(dataItem[0]) && !(dataItem[0] instanceof Array));\n}\n/**\n * Mapping to exists for merge.\n *\n * @public\n * @param {Array.|Array.} exists\n * @param {Object|Array.} newCptOptions\n * @return {Array.} Result, like [{exist: ..., option: ...}, {}],\n * index of which is the same as exists.\n */\n\n\nfunction mappingToExists(exists, newCptOptions) {\n // Mapping by the order by original option (but not order of\n // new option) in merge mode. Because we should ensure\n // some specified index (like xAxisIndex) is consistent with\n // original option, which is easy to understand, espatially in\n // media query. And in most case, merge option is used to\n // update partial option but not be expected to change order.\n newCptOptions = (newCptOptions || []).slice();\n var result = zrUtil.map(exists || [], function (obj, index) {\n return {\n exist: obj\n };\n }); // Mapping by id or name if specified.\n\n each(newCptOptions, function (cptOption, index) {\n if (!isObject(cptOption)) {\n return;\n } // id has highest priority.\n\n\n for (var i = 0; i < result.length; i++) {\n if (!result[i].option // Consider name: two map to one.\n && cptOption.id != null && result[i].exist.id === cptOption.id + '') {\n result[i].option = cptOption;\n newCptOptions[index] = null;\n return;\n }\n }\n\n for (var i = 0; i < result.length; i++) {\n var exist = result[i].exist;\n\n if (!result[i].option // Consider name: two map to one.\n // Can not match when both ids exist but different.\n && (exist.id == null || cptOption.id == null) && cptOption.name != null && !isIdInner(cptOption) && !isIdInner(exist) && exist.name === cptOption.name + '') {\n result[i].option = cptOption;\n newCptOptions[index] = null;\n return;\n }\n }\n }); // Otherwise mapping by index.\n\n each(newCptOptions, function (cptOption, index) {\n if (!isObject(cptOption)) {\n return;\n }\n\n var i = 0;\n\n for (; i < result.length; i++) {\n var exist = result[i].exist;\n\n if (!result[i].option // Existing model that already has id should be able to\n // mapped to (because after mapping performed model may\n // be assigned with a id, whish should not affect next\n // mapping), except those has inner id.\n && !isIdInner(exist) // Caution:\n // Do not overwrite id. But name can be overwritten,\n // because axis use name as 'show label text'.\n // 'exist' always has id and name and we dont\n // need to check it.\n && cptOption.id == null) {\n result[i].option = cptOption;\n break;\n }\n }\n\n if (i >= result.length) {\n result.push({\n option: cptOption\n });\n }\n });\n return result;\n}\n/**\n * Make id and name for mapping result (result of mappingToExists)\n * into `keyInfo` field.\n *\n * @public\n * @param {Array.} Result, like [{exist: ..., option: ...}, {}],\n * which order is the same as exists.\n * @return {Array.} The input.\n */\n\n\nfunction makeIdAndName(mapResult) {\n // We use this id to hash component models and view instances\n // in echarts. id can be specified by user, or auto generated.\n // The id generation rule ensures new view instance are able\n // to mapped to old instance when setOption are called in\n // no-merge mode. So we generate model id by name and plus\n // type in view id.\n // name can be duplicated among components, which is convenient\n // to specify multi components (like series) by one name.\n // Ensure that each id is distinct.\n var idMap = zrUtil.createHashMap();\n each(mapResult, function (item, index) {\n var existCpt = item.exist;\n existCpt && idMap.set(existCpt.id, item);\n });\n each(mapResult, function (item, index) {\n var opt = item.option;\n zrUtil.assert(!opt || opt.id == null || !idMap.get(opt.id) || idMap.get(opt.id) === item, 'id duplicates: ' + (opt && opt.id));\n opt && opt.id != null && idMap.set(opt.id, item);\n !item.keyInfo && (item.keyInfo = {});\n }); // Make name and id.\n\n each(mapResult, function (item, index) {\n var existCpt = item.exist;\n var opt = item.option;\n var keyInfo = item.keyInfo;\n\n if (!isObject(opt)) {\n return;\n } // name can be overwitten. Consider case: axis.name = '20km'.\n // But id generated by name will not be changed, which affect\n // only in that case: setOption with 'not merge mode' and view\n // instance will be recreated, which can be accepted.\n\n\n keyInfo.name = opt.name != null ? opt.name + '' : existCpt ? existCpt.name // Avoid diffferent series has the same name,\n // because name may be used like in color pallet.\n : DUMMY_COMPONENT_NAME_PREFIX + index;\n\n if (existCpt) {\n keyInfo.id = existCpt.id;\n } else if (opt.id != null) {\n keyInfo.id = opt.id + '';\n } else {\n // Consider this situatoin:\n // optionA: [{name: 'a'}, {name: 'a'}, {..}]\n // optionB [{..}, {name: 'a'}, {name: 'a'}]\n // Series with the same name between optionA and optionB\n // should be mapped.\n var idNum = 0;\n\n do {\n keyInfo.id = '\\0' + keyInfo.name + '\\0' + idNum++;\n } while (idMap.get(keyInfo.id));\n }\n\n idMap.set(keyInfo.id, item);\n });\n}\n\nfunction isNameSpecified(componentModel) {\n var name = componentModel.name; // Is specified when `indexOf` get -1 or > 0.\n\n return !!(name && name.indexOf(DUMMY_COMPONENT_NAME_PREFIX));\n}\n/**\n * @public\n * @param {Object} cptOption\n * @return {boolean}\n */\n\n\nfunction isIdInner(cptOption) {\n return isObject(cptOption) && cptOption.id && (cptOption.id + '').indexOf('\\0_ec_\\0') === 0;\n}\n/**\n * A helper for removing duplicate items between batchA and batchB,\n * and in themselves, and categorize by series.\n *\n * @param {Array.} batchA Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...]\n * @param {Array.} batchB Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...]\n * @return {Array., Array.>} result: [resultBatchA, resultBatchB]\n */\n\n\nfunction compressBatches(batchA, batchB) {\n var mapA = {};\n var mapB = {};\n makeMap(batchA || [], mapA);\n makeMap(batchB || [], mapB, mapA);\n return [mapToArray(mapA), mapToArray(mapB)];\n\n function makeMap(sourceBatch, map, otherMap) {\n for (var i = 0, len = sourceBatch.length; i < len; i++) {\n var seriesId = sourceBatch[i].seriesId;\n var dataIndices = normalizeToArray(sourceBatch[i].dataIndex);\n var otherDataIndices = otherMap && otherMap[seriesId];\n\n for (var j = 0, lenj = dataIndices.length; j < lenj; j++) {\n var dataIndex = dataIndices[j];\n\n if (otherDataIndices && otherDataIndices[dataIndex]) {\n otherDataIndices[dataIndex] = null;\n } else {\n (map[seriesId] || (map[seriesId] = {}))[dataIndex] = 1;\n }\n }\n }\n }\n\n function mapToArray(map, isData) {\n var result = [];\n\n for (var i in map) {\n if (map.hasOwnProperty(i) && map[i] != null) {\n if (isData) {\n result.push(+i);\n } else {\n var dataIndices = mapToArray(map[i], true);\n dataIndices.length && result.push({\n seriesId: i,\n dataIndex: dataIndices\n });\n }\n }\n }\n\n return result;\n }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Object} payload Contains dataIndex (means rawIndex) / dataIndexInside / name\n * each of which can be Array or primary type.\n * @return {number|Array.} dataIndex If not found, return undefined/null.\n */\n\n\nfunction queryDataIndex(data, payload) {\n if (payload.dataIndexInside != null) {\n return payload.dataIndexInside;\n } else if (payload.dataIndex != null) {\n return zrUtil.isArray(payload.dataIndex) ? zrUtil.map(payload.dataIndex, function (value) {\n return data.indexOfRawIndex(value);\n }) : data.indexOfRawIndex(payload.dataIndex);\n } else if (payload.name != null) {\n return zrUtil.isArray(payload.name) ? zrUtil.map(payload.name, function (value) {\n return data.indexOfName(value);\n }) : data.indexOfName(payload.name);\n }\n}\n/**\n * Enable property storage to any host object.\n * Notice: Serialization is not supported.\n *\n * For example:\n * var inner = zrUitl.makeInner();\n *\n * function some1(hostObj) {\n * inner(hostObj).someProperty = 1212;\n * ...\n * }\n * function some2() {\n * var fields = inner(this);\n * fields.someProperty1 = 1212;\n * fields.someProperty2 = 'xx';\n * ...\n * }\n *\n * @return {Function}\n */\n\n\nfunction makeInner() {\n // Consider different scope by es module import.\n var key = '__\\0ec_inner_' + innerUniqueIndex++ + '_' + Math.random().toFixed(5);\n return function (hostObj) {\n return hostObj[key] || (hostObj[key] = {});\n };\n}\n\nvar innerUniqueIndex = 0;\n/**\n * @param {module:echarts/model/Global} ecModel\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex, seriesId, seriesName,\n * geoIndex, geoId, geoName,\n * bmapIndex, bmapId, bmapName,\n * xAxisIndex, xAxisId, xAxisName,\n * yAxisIndex, yAxisId, yAxisName,\n * gridIndex, gridId, gridName,\n * ... (can be extended)\n * }\n * Each properties can be number|string|Array.|Array.\n * For example, a finder could be\n * {\n * seriesIndex: 3,\n * geoId: ['aa', 'cc'],\n * gridName: ['xx', 'rr']\n * }\n * xxxIndex can be set as 'all' (means all xxx) or 'none' (means not specify)\n * If nothing or null/undefined specified, return nothing.\n * @param {Object} [opt]\n * @param {string} [opt.defaultMainType]\n * @param {Array.} [opt.includeMainTypes]\n * @return {Object} result like:\n * {\n * seriesModels: [seriesModel1, seriesModel2],\n * seriesModel: seriesModel1, // The first model\n * geoModels: [geoModel1, geoModel2],\n * geoModel: geoModel1, // The first model\n * ...\n * }\n */\n\nfunction parseFinder(ecModel, finder, opt) {\n if (zrUtil.isString(finder)) {\n var obj = {};\n obj[finder + 'Index'] = 0;\n finder = obj;\n }\n\n var defaultMainType = opt && opt.defaultMainType;\n\n if (defaultMainType && !has(finder, defaultMainType + 'Index') && !has(finder, defaultMainType + 'Id') && !has(finder, defaultMainType + 'Name')) {\n finder[defaultMainType + 'Index'] = 0;\n }\n\n var result = {};\n each(finder, function (value, key) {\n var value = finder[key]; // Exclude 'dataIndex' and other illgal keys.\n\n if (key === 'dataIndex' || key === 'dataIndexInside') {\n result[key] = value;\n return;\n }\n\n var parsedKey = key.match(/^(\\w+)(Index|Id|Name)$/) || [];\n var mainType = parsedKey[1];\n var queryType = (parsedKey[2] || '').toLowerCase();\n\n if (!mainType || !queryType || value == null || queryType === 'index' && value === 'none' || opt && opt.includeMainTypes && zrUtil.indexOf(opt.includeMainTypes, mainType) < 0) {\n return;\n }\n\n var queryParam = {\n mainType: mainType\n };\n\n if (queryType !== 'index' || value !== 'all') {\n queryParam[queryType] = value;\n }\n\n var models = ecModel.queryComponents(queryParam);\n result[mainType + 'Models'] = models;\n result[mainType + 'Model'] = models[0];\n });\n return result;\n}\n\nfunction has(obj, prop) {\n return obj && obj.hasOwnProperty(prop);\n}\n\nfunction setAttribute(dom, key, value) {\n dom.setAttribute ? dom.setAttribute(key, value) : dom[key] = value;\n}\n\nfunction getAttribute(dom, key) {\n return dom.getAttribute ? dom.getAttribute(key) : dom[key];\n}\n\nfunction getTooltipRenderMode(renderModeOption) {\n if (renderModeOption === 'auto') {\n // Using html when `document` exists, use richText otherwise\n return env.domSupported ? 'html' : 'richText';\n } else {\n return renderModeOption || 'html';\n }\n}\n/**\n * Group a list by key.\n *\n * @param {Array} array\n * @param {Function} getKey\n * param {*} Array item\n * return {string} key\n * @return {Object} Result\n * {Array}: keys,\n * {module:zrender/core/util/HashMap} buckets: {key -> Array}\n */\n\n\nfunction groupData(array, getKey) {\n var buckets = zrUtil.createHashMap();\n var keys = [];\n zrUtil.each(array, function (item) {\n var key = getKey(item);\n (buckets.get(key) || (keys.push(key), buckets.set(key, []))).push(item);\n });\n return {\n keys: keys,\n buckets: buckets\n };\n}\n\nexports.normalizeToArray = normalizeToArray;\nexports.defaultEmphasis = defaultEmphasis;\nexports.TEXT_STYLE_OPTIONS = TEXT_STYLE_OPTIONS;\nexports.getDataItemValue = getDataItemValue;\nexports.isDataItemOption = isDataItemOption;\nexports.mappingToExists = mappingToExists;\nexports.makeIdAndName = makeIdAndName;\nexports.isNameSpecified = isNameSpecified;\nexports.isIdInner = isIdInner;\nexports.compressBatches = compressBatches;\nexports.queryDataIndex = queryDataIndex;\nexports.makeInner = makeInner;\nexports.parseFinder = parseFinder;\nexports.setAttribute = setAttribute;\nexports.getAttribute = getAttribute;\nexports.getTooltipRenderMode = getTooltipRenderMode;\nexports.groupData = groupData;","\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\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\n\nvar Group = require(\"zrender/lib/container/Group\");\n\nvar componentUtil = require(\"../util/component\");\n\nvar clazzUtil = require(\"../util/clazz\");\n\nvar modelUtil = require(\"../util/model\");\n\nvar graphicUtil = require(\"../util/graphic\");\n\nvar _task = require(\"../stream/task\");\n\nvar createTask = _task.createTask;\n\nvar createRenderPlanner = require(\"../chart/helper/createRenderPlanner\");\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*/\nvar inner = modelUtil.makeInner();\nvar renderPlanner = createRenderPlanner();\n\nfunction Chart() {\n /**\n * @type {module:zrender/container/Group}\n * @readOnly\n */\n this.group = new Group();\n /**\n * @type {string}\n * @readOnly\n */\n\n this.uid = componentUtil.getUID('viewChart');\n this.renderTask = createTask({\n plan: renderTaskPlan,\n reset: renderTaskReset\n });\n this.renderTask.context = {\n view: this\n };\n}\n\nChart.prototype = {\n type: 'chart',\n\n /**\n * Init the chart.\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n init: function (ecModel, api) {},\n\n /**\n * Render the chart.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n render: function (seriesModel, ecModel, api, payload) {},\n\n /**\n * Highlight series or specified data item.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n highlight: function (seriesModel, ecModel, api, payload) {\n toggleHighlight(seriesModel.getData(), payload, 'emphasis');\n },\n\n /**\n * Downplay series or specified data item.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n downplay: function (seriesModel, ecModel, api, payload) {\n toggleHighlight(seriesModel.getData(), payload, 'normal');\n },\n\n /**\n * Remove self.\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n remove: function (ecModel, api) {\n this.group.removeAll();\n },\n\n /**\n * Dispose self.\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n dispose: function () {},\n\n /**\n * Rendering preparation in progressive mode.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n incrementalPrepareRender: null,\n\n /**\n * Render in progressive mode.\n * @param {Object} params See taskParams in `stream/task.js`\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n incrementalRender: null,\n\n /**\n * Update transform directly.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n * @return {Object} {update: true}\n */\n updateTransform: null,\n\n /**\n * The view contains the given point.\n * @interface\n * @param {Array.} point\n * @return {boolean}\n */\n // containPoint: function () {}\n\n /**\n * @param {string} eventType\n * @param {Object} query\n * @param {module:zrender/Element} targetEl\n * @param {Object} packedEvent\n * @return {boolen} Pass only when return `true`.\n */\n filterForExposedEvent: null\n};\nvar chartProto = Chart.prototype;\n\nchartProto.updateView = chartProto.updateLayout = chartProto.updateVisual = function (seriesModel, ecModel, api, payload) {\n this.render(seriesModel, ecModel, api, payload);\n};\n/**\n * Set state of single element\n * @param {module:zrender/Element} el\n * @param {string} state 'normal'|'emphasis'\n * @param {number} highlightDigit\n */\n\n\nfunction elSetState(el, state, highlightDigit) {\n if (el) {\n el.trigger(state, highlightDigit);\n\n if (el.isGroup // Simple optimize.\n && !graphicUtil.isHighDownDispatcher(el)) {\n for (var i = 0, len = el.childCount(); i < len; i++) {\n elSetState(el.childAt(i), state, highlightDigit);\n }\n }\n }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Object} payload\n * @param {string} state 'normal'|'emphasis'\n */\n\n\nfunction toggleHighlight(data, payload, state) {\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n var highlightDigit = payload && payload.highlightKey != null ? graphicUtil.getHighlightDigit(payload.highlightKey) : null;\n\n if (dataIndex != null) {\n each(modelUtil.normalizeToArray(dataIndex), function (dataIdx) {\n elSetState(data.getItemGraphicEl(dataIdx), state, highlightDigit);\n });\n } else {\n data.eachItemGraphicEl(function (el) {\n elSetState(el, state, highlightDigit);\n });\n }\n} // Enable Chart.extend.\n\n\nclazzUtil.enableClassExtend(Chart, ['dispose']); // Add capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nclazzUtil.enableClassManagement(Chart, {\n registerWhenExtend: true\n});\n\nChart.markUpdateMethod = function (payload, methodName) {\n inner(payload).updateMethod = methodName;\n};\n\nfunction renderTaskPlan(context) {\n return renderPlanner(context.model);\n}\n\nfunction renderTaskReset(context) {\n var seriesModel = context.model;\n var ecModel = context.ecModel;\n var api = context.api;\n var payload = context.payload; // ???! remove updateView updateVisual\n\n var progressiveRender = seriesModel.pipelineContext.progressiveRender;\n var view = context.view;\n var updateMethod = payload && inner(payload).updateMethod;\n var methodName = progressiveRender ? 'incrementalPrepareRender' : updateMethod && view[updateMethod] ? updateMethod // `appendData` is also supported when data amount\n // is less than progressive threshold.\n : 'render';\n\n if (methodName !== 'render') {\n view[methodName](seriesModel, ecModel, api, payload);\n }\n\n return progressMethodMap[methodName];\n}\n\nvar progressMethodMap = {\n incrementalPrepareRender: {\n progress: function (params, context) {\n context.view.incrementalRender(params, context.model, context.ecModel, context.api, context.payload);\n }\n },\n render: {\n // Put view.render in `progress` to support appendData. But in this case\n // view.render should not be called in reset, otherwise it will be called\n // twise. Use `forceFirstProgress` to make sure that view.render is called\n // in any cases.\n forceFirstProgress: true,\n progress: function (params, context) {\n context.view.render(context.model, context.ecModel, context.api, context.payload);\n }\n }\n};\nvar _default = Chart;\nmodule.exports = _default;","\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\nvar Gradient = require(\"zrender/lib/graphic/Gradient\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar isFunction = _util.isFunction;\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*/\nvar _default = {\n createOnAllSeries: true,\n performRawSeries: true,\n reset: function (seriesModel, ecModel) {\n var data = seriesModel.getData();\n var colorAccessPath = (seriesModel.visualColorAccessPath || 'itemStyle.color').split('.'); // Set in itemStyle\n\n var color = seriesModel.get(colorAccessPath);\n var colorCallback = isFunction(color) && !(color instanceof Gradient) ? color : null; // Default color\n\n if (!color || colorCallback) {\n color = seriesModel.getColorFromPalette( // TODO series count changed.\n seriesModel.name, null, ecModel.getSeriesCount());\n }\n\n data.setVisual('color', color);\n var borderColorAccessPath = (seriesModel.visualBorderColorAccessPath || 'itemStyle.borderColor').split('.');\n var borderColor = seriesModel.get(borderColorAccessPath);\n data.setVisual('borderColor', borderColor); // Only visible series has each data be visual encoded\n\n if (!ecModel.isSeriesFiltered(seriesModel)) {\n if (colorCallback) {\n data.each(function (idx) {\n data.setItemVisual(idx, 'color', colorCallback(seriesModel.getDataParams(idx)));\n });\n } // itemStyle in each data item\n\n\n var dataEach = function (data, idx) {\n var itemModel = data.getItemModel(idx);\n var color = itemModel.get(colorAccessPath, true);\n var borderColor = itemModel.get(borderColorAccessPath, true);\n\n if (color != null) {\n data.setItemVisual(idx, 'color', color);\n }\n\n if (borderColor != null) {\n data.setItemVisual(idx, 'borderColor', borderColor);\n }\n };\n\n return {\n dataEach: data.hasItemOption ? dataEach : null\n };\n }\n }\n};\nmodule.exports = _default;"],"sourceRoot":""}