{"version":3,"sources":["webpack:///./node_modules/echarts/lib/scale/Interval.js","webpack:///./node_modules/echarts/lib/scale/Ordinal.js","webpack:///./node_modules/echarts/lib/util/ECEventProcessor.js","webpack:///./node_modules/echarts/lib/theme/light.js","webpack:///./node_modules/echarts/lib/theme/dark.js","webpack:///./node_modules/echarts/lib/scale/Log.js","webpack:///./node_modules/echarts/lib/scale/Time.js","webpack:///./node_modules/echarts/lib/scale/helper.js","webpack:///./node_modules/echarts/lib/scale/Scale.js"],"names":["roundNumber","IntervalScale","_super","_this","apply","this","arguments","type","_interval","_intervalPrecision","prototype","parse","val","contain","_extent","normalize","scale","setExtent","start","end","thisExtent","isNaN","parseFloat","unionExtent","other","extent","getInterval","setInterval","interval","_niceExtent","slice","getTicks","expandToNicedExtent","niceTickExtent","intervalPrecision","ticks","push","value","tick","length","lastNiceTick","getMinorTicks","splitNumber","minorTicks","getExtent","i","nextTick","prevTick","count","minorTicksGroup","minorInterval","minorTick","getLabel","data","opt","precision","dataNum","niceTicks","minInterval","maxInterval","span","isFinite","reverse","result","niceExtent","expandSize","fixMax","fixMin","Math","floor","ceil","registerClass","OrdinalScale","setting","call","ordinalMeta","getSetting","categories","item","_ordinalMeta","getOrdinal","round","rank","_getTickNumber","getRawOrdinalNumber","setSortInfo","info","infoOrdinalNumbers","ordinalNumbers","ordinalsByTick","_ordinalNumbersByTick","ticksByOrdinal","_ticksByOrdinalNumber","tickNum","allCategoryLen","len","min","ordinalNumber","unusedOrdinal","ordinal","ticksByOrdinalNumber","tickNumber","ordinalNumbersByTick","isBlank","cateogry","unionExtentFromData","dim","getApproximateExtent","isInExtentRange","getOrdinalMeta","ECEventProcessor","normalizeQuery","query","cptQuery","dataQuery","otherQuery","condCptType","mainType","main","subType","sub","suffixes_1","dataKeys_1","name","dataIndex","dataType","key","reserved","propSuffix","suffixPos","lastIndexOf","toLowerCase","hasOwnProperty","filter","eventType","eventInfo","targetEl","packedEvent","model","view","check","filterForExposedEvent","host","prop","propOnHost","afterTrigger","colorAll","color","colorLayer","colorPalette","theme","darkMode","backgroundColor","axisPointer","lineStyle","crossStyle","label","legend","textStyle","title","subtextStyle","toolbox","iconStyle","borderColor","dataZoom","brushStyle","handleStyle","moveHandleStyle","opacity","fillerColor","emphasis","dataBackground","width","areaStyle","selectedDataBackground","visualMap","timeline","controlStyle","calendar","itemStyle","dayLabel","monthLabel","yearLabel","timeAxis","axisLine","splitLine","splitArea","minorSplitLine","logAxis","valueAxis","categoryAxis","line","symbol","graph","gauge","axisLabel","detail","candlestick","color0","borderColor0","show","scaleProto","intervalScaleProto","getPrecisionSafe","roundingErrorFix","mathFloor","mathCeil","mathPow","pow","mathLog","log","LogScale","base","_originalScale","originalScale","originalExtent","powVal","_fixMin","fixRoundingError","_fixMax","approxTickNum","Infinity","abs","proto","originalVal","TimeScale","settings","useUTC","_minLevelUnit","second","getFormattedLabel","idx","labelFormatter","isUTC","lang","level","innerTicks","bottomUnitName","approxInterval","unitNames","iter","addTicksInSpan","minTimestamp","maxTimestamp","getMethodName","setMethodName","isDate","out","date","Date","dateTime","d","getTime","notAdd","addLevelTicks","unitName","lastLevelTicks","levelTicks","newAddedTicks","isFirstLevel","unit","valueA","valueB","dateA","dateB","isSame","isSameYear","isSameMonth","isSameDay","isSameHour","isSameMinute","isSameSecond","isUnitValueSame","getFirstTimestampOfUnit","startTick","endTick","getterName","setterName","max","getMonthInterval","getDateInterval","getHourInterval","getMinutesAndSecondsInterval","getMillisecondsInterval","unshift","levelsTicks","currentLevelTicks","tickCount","lastLevelTickCount","primaryTimeUnit","nextPrimaryTimeUnit","sort","a","b","levelTicksRemoveDuplicated","i_1","tickValue","targetTickNum","levelsTicksInExtent","maxLevel","k","getIntervalTicks","_approxInterval","concat","getFullYear","getMonth","getDate","scaleIntervalsLen","scaleIntervals","x","lo","hi","mid","bisect","daysInMonth","isMinutes","outDate","intervalScaleNiceTicks","getIntervalPrecision","clamp","fixExtent","Scale","_setting","_isBlank","setBlank"],"mappings":"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","file":"vendors~app~deda5bc4.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 { __extends } from \"tslib\";\nimport * as numberUtil from '../util/number';\nimport * as formatUtil from '../util/format';\nimport Scale from './Scale';\nimport * as helper from './helper';\nvar roundNumber = numberUtil.round;\n\nvar IntervalScale =\n/** @class */\nfunction (_super) {\n __extends(IntervalScale, _super);\n\n function IntervalScale() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = 'interval'; // Step is calculated in adjustExtent.\n\n _this._interval = 0;\n _this._intervalPrecision = 2;\n return _this;\n }\n\n IntervalScale.prototype.parse = function (val) {\n return val;\n };\n\n IntervalScale.prototype.contain = function (val) {\n return helper.contain(val, this._extent);\n };\n\n IntervalScale.prototype.normalize = function (val) {\n return helper.normalize(val, this._extent);\n };\n\n IntervalScale.prototype.scale = function (val) {\n return helper.scale(val, this._extent);\n };\n\n IntervalScale.prototype.setExtent = function (start, end) {\n var thisExtent = this._extent; // start,end may be a Number like '25',so...\n\n if (!isNaN(start)) {\n thisExtent[0] = parseFloat(start);\n }\n\n if (!isNaN(end)) {\n thisExtent[1] = parseFloat(end);\n }\n };\n\n IntervalScale.prototype.unionExtent = function (other) {\n var extent = this._extent;\n other[0] < extent[0] && (extent[0] = other[0]);\n other[1] > extent[1] && (extent[1] = other[1]); // unionExtent may called by it's sub classes\n\n this.setExtent(extent[0], extent[1]);\n };\n\n IntervalScale.prototype.getInterval = function () {\n return this._interval;\n };\n\n IntervalScale.prototype.setInterval = function (interval) {\n this._interval = interval; // Dropped auto calculated niceExtent and use user setted extent\n // We assume user wan't to set both interval, min, max to get a better result\n\n this._niceExtent = this._extent.slice();\n this._intervalPrecision = helper.getIntervalPrecision(interval);\n };\n /**\n * @param expandToNicedExtent Whether expand the ticks to niced extent.\n */\n\n\n IntervalScale.prototype.getTicks = function (expandToNicedExtent) {\n var interval = this._interval;\n var extent = this._extent;\n var niceTickExtent = this._niceExtent;\n var intervalPrecision = this._intervalPrecision;\n var ticks = []; // If interval is 0, return [];\n\n if (!interval) {\n return ticks;\n } // Consider this case: using dataZoom toolbox, zoom and zoom.\n\n\n var safeLimit = 10000;\n\n if (extent[0] < niceTickExtent[0]) {\n if (expandToNicedExtent) {\n ticks.push({\n value: roundNumber(niceTickExtent[0] - interval, intervalPrecision)\n });\n } else {\n ticks.push({\n value: extent[0]\n });\n }\n }\n\n var tick = niceTickExtent[0];\n\n while (tick <= niceTickExtent[1]) {\n ticks.push({\n value: tick\n }); // Avoid rounding error\n\n tick = roundNumber(tick + interval, intervalPrecision);\n\n if (tick === ticks[ticks.length - 1].value) {\n // Consider out of safe float point, e.g.,\n // -3711126.9907707 + 2e-10 === -3711126.9907707\n break;\n }\n\n if (ticks.length > safeLimit) {\n return [];\n }\n } // Consider this case: the last item of ticks is smaller\n // than niceTickExtent[1] and niceTickExtent[1] === extent[1].\n\n\n var lastNiceTick = ticks.length ? ticks[ticks.length - 1].value : niceTickExtent[1];\n\n if (extent[1] > lastNiceTick) {\n if (expandToNicedExtent) {\n ticks.push({\n value: roundNumber(lastNiceTick + interval, intervalPrecision)\n });\n } else {\n ticks.push({\n value: extent[1]\n });\n }\n }\n\n return ticks;\n };\n\n IntervalScale.prototype.getMinorTicks = function (splitNumber) {\n var ticks = this.getTicks(true);\n var minorTicks = [];\n var extent = this.getExtent();\n\n for (var i = 1; i < ticks.length; i++) {\n var nextTick = ticks[i];\n var prevTick = ticks[i - 1];\n var count = 0;\n var minorTicksGroup = [];\n var interval = nextTick.value - prevTick.value;\n var minorInterval = interval / splitNumber;\n\n while (count < splitNumber - 1) {\n var minorTick = roundNumber(prevTick.value + (count + 1) * minorInterval); // For the first and last interval. The count may be less than splitNumber.\n\n if (minorTick > extent[0] && minorTick < extent[1]) {\n minorTicksGroup.push(minorTick);\n }\n\n count++;\n }\n\n minorTicks.push(minorTicksGroup);\n }\n\n return minorTicks;\n };\n /**\n * @param opt.precision If 'auto', use nice presision.\n * @param opt.pad returns 1.50 but not 1.5 if precision is 2.\n */\n\n\n IntervalScale.prototype.getLabel = function (data, opt) {\n if (data == null) {\n return '';\n }\n\n var precision = opt && opt.precision;\n\n if (precision == null) {\n precision = numberUtil.getPrecisionSafe(data.value) || 0;\n } else if (precision === 'auto') {\n // Should be more precise then tick.\n precision = this._intervalPrecision;\n } // (1) If `precision` is set, 12.005 should be display as '12.00500'.\n // (2) Use roundNumber (toFixed) to avoid scientific notation like '3.5e-7'.\n\n\n var dataNum = roundNumber(data.value, precision, true);\n return formatUtil.addCommas(dataNum);\n };\n /**\n * @param splitNumber By default `5`.\n */\n\n\n IntervalScale.prototype.niceTicks = function (splitNumber, minInterval, maxInterval) {\n splitNumber = splitNumber || 5;\n var extent = this._extent;\n var span = extent[1] - extent[0];\n\n if (!isFinite(span)) {\n return;\n } // User may set axis min 0 and data are all negative\n // FIXME If it needs to reverse ?\n\n\n if (span < 0) {\n span = -span;\n extent.reverse();\n }\n\n var result = helper.intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval);\n this._intervalPrecision = result.intervalPrecision;\n this._interval = result.interval;\n this._niceExtent = result.niceTickExtent;\n };\n\n IntervalScale.prototype.niceExtent = function (opt) {\n var extent = this._extent; // If extent start and end are same, expand them\n\n if (extent[0] === extent[1]) {\n if (extent[0] !== 0) {\n // Expand extent\n var expandSize = extent[0]; // In the fowllowing case\n // Axis has been fixed max 100\n // Plus data are all 100 and axis extent are [100, 100].\n // Extend to the both side will cause expanded max is larger than fixed max.\n // So only expand to the smaller side.\n\n if (!opt.fixMax) {\n extent[1] += expandSize / 2;\n extent[0] -= expandSize / 2;\n } else {\n extent[0] -= expandSize / 2;\n }\n } else {\n extent[1] = 1;\n }\n }\n\n var span = extent[1] - extent[0]; // If there are no data and extent are [Infinity, -Infinity]\n\n if (!isFinite(span)) {\n extent[0] = 0;\n extent[1] = 1;\n }\n\n this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); // let extent = this._extent;\n\n var interval = this._interval;\n\n if (!opt.fixMin) {\n extent[0] = roundNumber(Math.floor(extent[0] / interval) * interval);\n }\n\n if (!opt.fixMax) {\n extent[1] = roundNumber(Math.ceil(extent[1] / interval) * interval);\n }\n };\n\n IntervalScale.type = 'interval';\n return IntervalScale;\n}(Scale);\n\nScale.registerClass(IntervalScale);\nexport default IntervalScale;","\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\";\n/**\n * Linear continuous scale\n * http://en.wikipedia.org/wiki/Level_of_measurement\n */\n// FIXME only one data\n\nimport Scale from './Scale';\nimport OrdinalMeta from '../data/OrdinalMeta';\nimport * as scaleHelper from './helper';\nimport { isArray, map, isObject } from 'zrender/lib/core/util';\n\nvar OrdinalScale =\n/** @class */\nfunction (_super) {\n __extends(OrdinalScale, _super);\n\n function OrdinalScale(setting) {\n var _this = _super.call(this, setting) || this;\n\n _this.type = 'ordinal';\n\n var ordinalMeta = _this.getSetting('ordinalMeta'); // Caution: Should not use instanceof, consider ec-extensions using\n // import approach to get OrdinalMeta class.\n\n\n if (!ordinalMeta) {\n ordinalMeta = new OrdinalMeta({});\n }\n\n if (isArray(ordinalMeta)) {\n ordinalMeta = new OrdinalMeta({\n categories: map(ordinalMeta, function (item) {\n return isObject(item) ? item.value : item;\n })\n });\n }\n\n _this._ordinalMeta = ordinalMeta;\n _this._extent = _this.getSetting('extent') || [0, ordinalMeta.categories.length - 1];\n return _this;\n }\n\n OrdinalScale.prototype.parse = function (val) {\n return typeof val === 'string' ? this._ordinalMeta.getOrdinal(val) // val might be float.\n : Math.round(val);\n };\n\n OrdinalScale.prototype.contain = function (rank) {\n rank = this.parse(rank);\n return scaleHelper.contain(rank, this._extent) && this._ordinalMeta.categories[rank] != null;\n };\n /**\n * Normalize given rank or name to linear [0, 1]\n * @param val raw ordinal number.\n * @return normalized value in [0, 1].\n */\n\n\n OrdinalScale.prototype.normalize = function (val) {\n val = this._getTickNumber(this.parse(val));\n return scaleHelper.normalize(val, this._extent);\n };\n /**\n * @param val normalized value in [0, 1].\n * @return raw ordinal number.\n */\n\n\n OrdinalScale.prototype.scale = function (val) {\n val = Math.round(scaleHelper.scale(val, this._extent));\n return this.getRawOrdinalNumber(val);\n };\n\n OrdinalScale.prototype.getTicks = function () {\n var ticks = [];\n var extent = this._extent;\n var rank = extent[0];\n\n while (rank <= extent[1]) {\n ticks.push({\n value: rank\n });\n rank++;\n }\n\n return ticks;\n };\n\n OrdinalScale.prototype.getMinorTicks = function (splitNumber) {\n // Not support.\n return;\n };\n /**\n * @see `Ordinal['_ordinalNumbersByTick']`\n */\n\n\n OrdinalScale.prototype.setSortInfo = function (info) {\n if (info == null) {\n this._ordinalNumbersByTick = this._ticksByOrdinalNumber = null;\n return;\n }\n\n var infoOrdinalNumbers = info.ordinalNumbers;\n var ordinalsByTick = this._ordinalNumbersByTick = [];\n var ticksByOrdinal = this._ticksByOrdinalNumber = []; // Unnecessary support negative tick in `realtimeSort`.\n\n var tickNum = 0;\n var allCategoryLen = this._ordinalMeta.categories.length;\n\n for (var len = Math.min(allCategoryLen, infoOrdinalNumbers.length); tickNum < len; ++tickNum) {\n var ordinalNumber = infoOrdinalNumbers[tickNum];\n ordinalsByTick[tickNum] = ordinalNumber;\n ticksByOrdinal[ordinalNumber] = tickNum;\n } // Handle that `series.data` only covers part of the `axis.category.data`.\n\n\n var unusedOrdinal = 0;\n\n for (; tickNum < allCategoryLen; ++tickNum) {\n while (ticksByOrdinal[unusedOrdinal] != null) {\n unusedOrdinal++;\n }\n\n ;\n ordinalsByTick.push(unusedOrdinal);\n ticksByOrdinal[unusedOrdinal] = tickNum;\n }\n };\n\n OrdinalScale.prototype._getTickNumber = function (ordinal) {\n var ticksByOrdinalNumber = this._ticksByOrdinalNumber; // also support ordinal out of range of `ordinalMeta.categories.length`,\n // where ordinal numbers are used as tick value directly.\n\n return ticksByOrdinalNumber && ordinal >= 0 && ordinal < ticksByOrdinalNumber.length ? ticksByOrdinalNumber[ordinal] : ordinal;\n };\n /**\n * @usage\n * ```js\n * const ordinalNumber = ordinalScale.getRawOrdinalNumber(tickVal);\n *\n * // case0\n * const rawOrdinalValue = axisModel.getCategories()[ordinalNumber];\n * // case1\n * const rawOrdinalValue = this._ordinalMeta.categories[ordinalNumber];\n * // case2\n * const coord = axis.dataToCoord(ordinalNumber);\n * ```\n *\n * @param {OrdinalNumber} tickNumber index of display\n */\n\n\n OrdinalScale.prototype.getRawOrdinalNumber = function (tickNumber) {\n var ordinalNumbersByTick = this._ordinalNumbersByTick; // tickNumber may be out of range, e.g., when axis max is larger than `ordinalMeta.categories.length`.,\n // where ordinal numbers are used as tick value directly.\n\n return ordinalNumbersByTick && tickNumber >= 0 && tickNumber < ordinalNumbersByTick.length ? ordinalNumbersByTick[tickNumber] : tickNumber;\n };\n /**\n * Get item on tick\n */\n\n\n OrdinalScale.prototype.getLabel = function (tick) {\n if (!this.isBlank()) {\n var ordinalNumber = this.getRawOrdinalNumber(tick.value);\n var cateogry = this._ordinalMeta.categories[ordinalNumber]; // Note that if no data, ordinalMeta.categories is an empty array.\n // Return empty if it's not exist.\n\n return cateogry == null ? '' : cateogry + '';\n }\n };\n\n OrdinalScale.prototype.count = function () {\n return this._extent[1] - this._extent[0] + 1;\n };\n\n OrdinalScale.prototype.unionExtentFromData = function (data, dim) {\n this.unionExtent(data.getApproximateExtent(dim));\n };\n /**\n * @override\n * If value is in extent range\n */\n\n\n OrdinalScale.prototype.isInExtentRange = function (value) {\n value = this._getTickNumber(value);\n return this._extent[0] <= value && this._extent[1] >= value;\n };\n\n OrdinalScale.prototype.getOrdinalMeta = function () {\n return this._ordinalMeta;\n };\n\n OrdinalScale.prototype.niceTicks = function () {};\n\n OrdinalScale.prototype.niceExtent = function () {};\n\n OrdinalScale.type = 'ordinal';\n return OrdinalScale;\n}(Scale);\n\nScale.registerClass(OrdinalScale);\nexport default OrdinalScale;","\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 * as zrUtil from 'zrender/lib/core/util';\nimport { parseClassType } from './clazz';\n/**\n * Usage of query:\n * `chart.on('click', query, handler);`\n * The `query` can be:\n * + The component type query string, only `mainType` or `mainType.subType`,\n * like: 'xAxis', 'series', 'xAxis.category' or 'series.line'.\n * + The component query object, like:\n * `{seriesIndex: 2}`, `{seriesName: 'xx'}`, `{seriesId: 'some'}`,\n * `{xAxisIndex: 2}`, `{xAxisName: 'xx'}`, `{xAxisId: 'some'}`.\n * + The data query object, like:\n * `{dataIndex: 123}`, `{dataType: 'link'}`, `{name: 'some'}`.\n * + The other query object (cmponent customized query), like:\n * `{element: 'some'}` (only available in custom series).\n *\n * Caveat: If a prop in the `query` object is `null/undefined`, it is the\n * same as there is no such prop in the `query` object.\n */\n\nvar ECEventProcessor =\n/** @class */\nfunction () {\n function ECEventProcessor() {}\n\n ECEventProcessor.prototype.normalizeQuery = function (query) {\n var cptQuery = {};\n var dataQuery = {};\n var otherQuery = {}; // `query` is `mainType` or `mainType.subType` of component.\n\n if (zrUtil.isString(query)) {\n var condCptType = parseClassType(query); // `.main` and `.sub` may be ''.\n\n cptQuery.mainType = condCptType.main || null;\n cptQuery.subType = condCptType.sub || null;\n } // `query` is an object, convert to {mainType, index, name, id}.\n else {\n // `xxxIndex`, `xxxName`, `xxxId`, `name`, `dataIndex`, `dataType` is reserved,\n // can not be used in `compomentModel.filterForExposedEvent`.\n var suffixes_1 = ['Index', 'Name', 'Id'];\n var dataKeys_1 = {\n name: 1,\n dataIndex: 1,\n dataType: 1\n };\n zrUtil.each(query, function (val, key) {\n var reserved = false;\n\n for (var i = 0; i < suffixes_1.length; i++) {\n var propSuffix = suffixes_1[i];\n var suffixPos = key.lastIndexOf(propSuffix);\n\n if (suffixPos > 0 && suffixPos === key.length - propSuffix.length) {\n var mainType = key.slice(0, suffixPos); // Consider `dataIndex`.\n\n if (mainType !== 'data') {\n cptQuery.mainType = mainType;\n cptQuery[propSuffix.toLowerCase()] = val;\n reserved = true;\n }\n }\n }\n\n if (dataKeys_1.hasOwnProperty(key)) {\n dataQuery[key] = val;\n reserved = true;\n }\n\n if (!reserved) {\n otherQuery[key] = val;\n }\n });\n }\n\n return {\n cptQuery: cptQuery,\n dataQuery: dataQuery,\n otherQuery: otherQuery\n };\n };\n\n ECEventProcessor.prototype.filter = function (eventType, query) {\n // They should be assigned before each trigger call.\n var eventInfo = this.eventInfo;\n\n if (!eventInfo) {\n return true;\n }\n\n var targetEl = eventInfo.targetEl;\n var packedEvent = eventInfo.packedEvent;\n var model = eventInfo.model;\n var view = eventInfo.view; // For event like 'globalout'.\n\n if (!model || !view) {\n return true;\n }\n\n var cptQuery = query.cptQuery;\n var dataQuery = query.dataQuery;\n return check(cptQuery, model, 'mainType') && check(cptQuery, model, 'subType') && check(cptQuery, model, 'index', 'componentIndex') && check(cptQuery, model, 'name') && check(cptQuery, model, 'id') && check(dataQuery, packedEvent, 'name') && check(dataQuery, packedEvent, 'dataIndex') && check(dataQuery, packedEvent, 'dataType') && (!view.filterForExposedEvent || view.filterForExposedEvent(eventType, query.otherQuery, targetEl, packedEvent));\n\n function check(query, host, prop, propOnHost) {\n return query[prop] == null || host[propOnHost || prop] === query[prop];\n }\n };\n\n ECEventProcessor.prototype.afterTrigger = function () {\n // Make sure the eventInfo wont be used in next trigger.\n this.eventInfo = null;\n };\n\n return ECEventProcessor;\n}();\n\nexport { ECEventProcessor };\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*/\nvar colorAll = ['#37A2DA', '#32C5E9', '#67E0E3', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#E062AE', '#E690D1', '#e7bcf3', '#9d96f5', '#8378EA', '#96BFFF'];\nexport default {\n color: colorAll,\n colorLayer: [['#37A2DA', '#ffd85c', '#fd7b5f'], ['#37A2DA', '#67E0E3', '#FFDB5C', '#ff9f7f', '#E062AE', '#9d96f5'], ['#37A2DA', '#32C5E9', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#e7bcf3', '#8378EA', '#96BFFF'], colorAll]\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*/\nvar contrastColor = '#B9B8CE';\nvar backgroundColor = '#100C2A';\n\nvar axisCommon = function () {\n return {\n axisLine: {\n lineStyle: {\n color: contrastColor\n }\n },\n splitLine: {\n lineStyle: {\n color: '#484753'\n }\n },\n splitArea: {\n areaStyle: {\n color: ['rgba(255,255,255,0.02)', 'rgba(255,255,255,0.05)']\n }\n },\n minorSplitLine: {\n lineStyle: {\n color: '#20203B'\n }\n }\n };\n};\n\nvar colorPalette = ['#4992ff', '#7cffb2', '#fddd60', '#ff6e76', '#58d9f9', '#05c091', '#ff8a45', '#8d48e3', '#dd79ff'];\nvar theme = {\n darkMode: true,\n color: colorPalette,\n backgroundColor: backgroundColor,\n axisPointer: {\n lineStyle: {\n color: '#817f91'\n },\n crossStyle: {\n color: '#817f91'\n },\n label: {\n // TODO Contrast of label backgorundColor\n color: '#fff'\n }\n },\n legend: {\n textStyle: {\n color: contrastColor\n }\n },\n textStyle: {\n color: contrastColor\n },\n title: {\n textStyle: {\n color: '#EEF1FA'\n },\n subtextStyle: {\n color: '#B9B8CE'\n }\n },\n toolbox: {\n iconStyle: {\n borderColor: contrastColor\n }\n },\n dataZoom: {\n borderColor: '#71708A',\n textStyle: {\n color: contrastColor\n },\n brushStyle: {\n color: 'rgba(135,163,206,0.3)'\n },\n handleStyle: {\n color: '#353450',\n borderColor: '#C5CBE3'\n },\n moveHandleStyle: {\n color: '#B0B6C3',\n opacity: 0.3\n },\n fillerColor: 'rgba(135,163,206,0.2)',\n emphasis: {\n handleStyle: {\n borderColor: '#91B7F2',\n color: '#4D587D'\n },\n moveHandleStyle: {\n color: '#636D9A',\n opacity: 0.7\n }\n },\n dataBackground: {\n lineStyle: {\n color: '#71708A',\n width: 1\n },\n areaStyle: {\n color: '#71708A'\n }\n },\n selectedDataBackground: {\n lineStyle: {\n color: '#87A3CE'\n },\n areaStyle: {\n color: '#87A3CE'\n }\n }\n },\n visualMap: {\n textStyle: {\n color: contrastColor\n }\n },\n timeline: {\n lineStyle: {\n color: contrastColor\n },\n label: {\n color: contrastColor\n },\n controlStyle: {\n color: contrastColor,\n borderColor: contrastColor\n }\n },\n calendar: {\n itemStyle: {\n color: backgroundColor\n },\n dayLabel: {\n color: contrastColor\n },\n monthLabel: {\n color: contrastColor\n },\n yearLabel: {\n color: contrastColor\n }\n },\n timeAxis: axisCommon(),\n logAxis: axisCommon(),\n valueAxis: axisCommon(),\n categoryAxis: axisCommon(),\n line: {\n symbol: 'circle'\n },\n graph: {\n color: colorPalette\n },\n gauge: {\n title: {\n color: contrastColor\n },\n axisLine: {\n lineStyle: {\n color: [[1, 'rgba(207,212,219,0.2)']]\n }\n },\n axisLabel: {\n color: contrastColor\n },\n detail: {\n color: '#EEF1FA'\n }\n },\n candlestick: {\n itemStyle: {\n color: '#f64e56',\n color0: '#54ea92',\n borderColor: '#f64e56',\n borderColor0: '#54ea92' // borderColor: '#ca2824',\n // borderColor0: '#09a443'\n\n }\n }\n};\ntheme.categoryAxis.splitLine.show = false;\nexport default theme;","\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 * as zrUtil from 'zrender/lib/core/util';\nimport Scale from './Scale';\nimport * as numberUtil from '../util/number';\nimport * as scaleHelper from './helper'; // Use some method of IntervalScale\n\nimport IntervalScale from './Interval';\nvar scaleProto = Scale.prototype; // FIXME:TS refactor: not good to call it directly with `this`?\n\nvar intervalScaleProto = IntervalScale.prototype;\nvar getPrecisionSafe = numberUtil.getPrecisionSafe;\nvar roundingErrorFix = numberUtil.round;\nvar mathFloor = Math.floor;\nvar mathCeil = Math.ceil;\nvar mathPow = Math.pow;\nvar mathLog = Math.log;\n\nvar LogScale =\n/** @class */\nfunction (_super) {\n __extends(LogScale, _super);\n\n function LogScale() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = 'log';\n _this.base = 10;\n _this._originalScale = new IntervalScale(); // FIXME:TS actually used by `IntervalScale`\n\n _this._interval = 0;\n return _this;\n }\n /**\n * @param Whether expand the ticks to niced extent.\n */\n\n\n LogScale.prototype.getTicks = function (expandToNicedExtent) {\n var originalScale = this._originalScale;\n var extent = this._extent;\n var originalExtent = originalScale.getExtent();\n var ticks = intervalScaleProto.getTicks.call(this, expandToNicedExtent);\n return zrUtil.map(ticks, function (tick) {\n var val = tick.value;\n var powVal = numberUtil.round(mathPow(this.base, val)); // Fix #4158\n\n powVal = val === extent[0] && this._fixMin ? fixRoundingError(powVal, originalExtent[0]) : powVal;\n powVal = val === extent[1] && this._fixMax ? fixRoundingError(powVal, originalExtent[1]) : powVal;\n return {\n value: powVal\n };\n }, this);\n };\n\n LogScale.prototype.setExtent = function (start, end) {\n var base = this.base;\n start = mathLog(start) / mathLog(base);\n end = mathLog(end) / mathLog(base);\n intervalScaleProto.setExtent.call(this, start, end);\n };\n /**\n * @return {number} end\n */\n\n\n LogScale.prototype.getExtent = function () {\n var base = this.base;\n var extent = scaleProto.getExtent.call(this);\n extent[0] = mathPow(base, extent[0]);\n extent[1] = mathPow(base, extent[1]); // Fix #4158\n\n var originalScale = this._originalScale;\n var originalExtent = originalScale.getExtent();\n this._fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0]));\n this._fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1]));\n return extent;\n };\n\n LogScale.prototype.unionExtent = function (extent) {\n this._originalScale.unionExtent(extent);\n\n var base = this.base;\n extent[0] = mathLog(extent[0]) / mathLog(base);\n extent[1] = mathLog(extent[1]) / mathLog(base);\n scaleProto.unionExtent.call(this, extent);\n };\n\n LogScale.prototype.unionExtentFromData = function (data, dim) {\n // TODO\n // filter value that <= 0\n this.unionExtent(data.getApproximateExtent(dim));\n };\n /**\n * Update interval and extent of intervals for nice ticks\n * @param approxTickNum default 10 Given approx tick number\n */\n\n\n LogScale.prototype.niceTicks = function (approxTickNum) {\n approxTickNum = approxTickNum || 10;\n var extent = this._extent;\n var span = extent[1] - extent[0];\n\n if (span === Infinity || span <= 0) {\n return;\n }\n\n var interval = numberUtil.quantity(span);\n var err = approxTickNum / span * interval; // Filter ticks to get closer to the desired count.\n\n if (err <= 0.5) {\n interval *= 10;\n } // Interval should be integer\n\n\n while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) {\n interval *= 10;\n }\n\n var niceExtent = [numberUtil.round(mathCeil(extent[0] / interval) * interval), numberUtil.round(mathFloor(extent[1] / interval) * interval)];\n this._interval = interval;\n this._niceExtent = niceExtent;\n };\n\n LogScale.prototype.niceExtent = function (opt) {\n intervalScaleProto.niceExtent.call(this, opt);\n this._fixMin = opt.fixMin;\n this._fixMax = opt.fixMax;\n };\n\n LogScale.prototype.parse = function (val) {\n return val;\n };\n\n LogScale.prototype.contain = function (val) {\n val = mathLog(val) / mathLog(this.base);\n return scaleHelper.contain(val, this._extent);\n };\n\n LogScale.prototype.normalize = function (val) {\n val = mathLog(val) / mathLog(this.base);\n return scaleHelper.normalize(val, this._extent);\n };\n\n LogScale.prototype.scale = function (val) {\n val = scaleHelper.scale(val, this._extent);\n return mathPow(this.base, val);\n };\n\n LogScale.type = 'log';\n return LogScale;\n}(Scale);\n\nvar proto = LogScale.prototype;\nproto.getMinorTicks = intervalScaleProto.getMinorTicks;\nproto.getLabel = intervalScaleProto.getLabel;\n\nfunction fixRoundingError(val, originalVal) {\n return roundingErrorFix(val, getPrecisionSafe(originalVal));\n}\n\nScale.registerClass(LogScale);\nexport default LogScale;","\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\";\n/*\n* A third-party license is embeded for some of the code in this file:\n* The \"scaleLevels\" was originally copied from \"d3.js\" with some\n* modifications made for this project.\n* (See more details in the comment on the definition of \"scaleLevels\" 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*/\n// [About UTC and local time zone]:\n// In most cases, `number.parseDate` will treat input data string as local time\n// (except time zone is specified in time string). And `format.formateTime` returns\n// local time by default. option.useUTC is false by default. This design have\n// concidered these common case:\n// (1) Time that is persistent in server is in UTC, but it is needed to be diplayed\n// in local time by default.\n// (2) By default, the input data string (e.g., '2011-01-02') should be displayed\n// as its original time, without any time difference.\n\nimport * as numberUtil from '../util/number';\nimport { ONE_SECOND, ONE_MINUTE, ONE_HOUR, ONE_DAY, ONE_YEAR, format, leveledFormat, getUnitValue, timeUnits, fullLeveledFormatter, getPrimaryTimeUnit, isPrimaryTimeUnit, getDefaultFormatPrecisionOfInterval, fullYearGetterName, monthSetterName, fullYearSetterName, dateSetterName, hoursGetterName, hoursSetterName, minutesSetterName, secondsSetterName, millisecondsSetterName, monthGetterName, dateGetterName, minutesGetterName, secondsGetterName, millisecondsGetterName } from '../util/time';\nimport * as scaleHelper from './helper';\nimport IntervalScale from './Interval';\nimport Scale from './Scale';\nimport { warn } from '../util/log';\nimport { filter, map } from 'zrender/lib/core/util'; // FIXME 公用?\n\nvar bisect = function (a, x, lo, hi) {\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n\n if (a[mid][1] < x) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n\n return lo;\n};\n\nvar TimeScale =\n/** @class */\nfunction (_super) {\n __extends(TimeScale, _super);\n\n function TimeScale(settings) {\n var _this = _super.call(this, settings) || this;\n\n _this.type = 'time';\n return _this;\n }\n /**\n * Get label is mainly for other components like dataZoom, tooltip.\n */\n\n\n TimeScale.prototype.getLabel = function (tick) {\n var useUTC = this.getSetting('useUTC');\n return format(tick.value, fullLeveledFormatter[getDefaultFormatPrecisionOfInterval(getPrimaryTimeUnit(this._minLevelUnit))] || fullLeveledFormatter.second, useUTC, this.getSetting('locale'));\n };\n\n TimeScale.prototype.getFormattedLabel = function (tick, idx, labelFormatter) {\n var isUTC = this.getSetting('useUTC');\n var lang = this.getSetting('locale');\n return leveledFormat(tick, idx, labelFormatter, lang, isUTC);\n };\n /**\n * @override\n * @param expandToNicedExtent Whether expand the ticks to niced extent.\n */\n\n\n TimeScale.prototype.getTicks = function (expandToNicedExtent) {\n var interval = this._interval;\n var extent = this._extent;\n var ticks = []; // If interval is 0, return [];\n\n if (!interval) {\n return ticks;\n }\n\n ticks.push({\n value: extent[0],\n level: 0\n });\n var useUTC = this.getSetting('useUTC');\n var innerTicks = getIntervalTicks(this._minLevelUnit, this._approxInterval, useUTC, extent);\n ticks = ticks.concat(innerTicks);\n ticks.push({\n value: extent[1],\n level: 0\n });\n return ticks;\n };\n\n TimeScale.prototype.niceExtent = function (opt) {\n var extent = this._extent; // If extent start and end are same, expand them\n\n if (extent[0] === extent[1]) {\n // Expand extent\n extent[0] -= ONE_DAY;\n extent[1] += ONE_DAY;\n } // If there are no data and extent are [Infinity, -Infinity]\n\n\n if (extent[1] === -Infinity && extent[0] === Infinity) {\n var d = new Date();\n extent[1] = +new Date(d.getFullYear(), d.getMonth(), d.getDate());\n extent[0] = extent[1] - ONE_DAY;\n }\n\n this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval);\n };\n\n TimeScale.prototype.niceTicks = function (approxTickNum, minInterval, maxInterval) {\n approxTickNum = approxTickNum || 10;\n var extent = this._extent;\n var span = extent[1] - extent[0];\n this._approxInterval = span / approxTickNum;\n\n if (minInterval != null && this._approxInterval < minInterval) {\n this._approxInterval = minInterval;\n }\n\n if (maxInterval != null && this._approxInterval > maxInterval) {\n this._approxInterval = maxInterval;\n }\n\n var scaleIntervalsLen = scaleIntervals.length;\n var idx = Math.min(bisect(scaleIntervals, this._approxInterval, 0, scaleIntervalsLen), scaleIntervalsLen - 1); // Interval that can be used to calculate ticks\n\n this._interval = scaleIntervals[idx][1]; // Min level used when picking ticks from top down.\n // We check one more level to avoid the ticks are to sparse in some case.\n\n this._minLevelUnit = scaleIntervals[Math.max(idx - 1, 0)][0];\n };\n\n TimeScale.prototype.parse = function (val) {\n // val might be float.\n return typeof val === 'number' ? val : +numberUtil.parseDate(val);\n };\n\n TimeScale.prototype.contain = function (val) {\n return scaleHelper.contain(this.parse(val), this._extent);\n };\n\n TimeScale.prototype.normalize = function (val) {\n return scaleHelper.normalize(this.parse(val), this._extent);\n };\n\n TimeScale.prototype.scale = function (val) {\n return scaleHelper.scale(val, this._extent);\n };\n\n TimeScale.type = 'time';\n return TimeScale;\n}(IntervalScale);\n/**\n * This implementation was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n */\n\n\nvar scaleIntervals = [// Format interval\n['second', ONE_SECOND], ['minute', ONE_MINUTE], ['hour', ONE_HOUR], ['quarter-day', ONE_HOUR * 6], ['half-day', ONE_HOUR * 12], ['day', ONE_DAY * 1.2], ['half-week', ONE_DAY * 3.5], ['week', ONE_DAY * 7], ['month', ONE_DAY * 31], ['quarter', ONE_DAY * 95], ['half-year', ONE_YEAR / 2], ['year', ONE_YEAR] // 1Y\n];\n\nfunction isUnitValueSame(unit, valueA, valueB, isUTC) {\n var dateA = numberUtil.parseDate(valueA);\n var dateB = numberUtil.parseDate(valueB);\n\n var isSame = function (unit) {\n return getUnitValue(dateA, unit, isUTC) === getUnitValue(dateB, unit, isUTC);\n };\n\n var isSameYear = function () {\n return isSame('year');\n }; // const isSameHalfYear = () => isSameYear() && isSame('half-year');\n // const isSameQuater = () => isSameYear() && isSame('quarter');\n\n\n var isSameMonth = function () {\n return isSameYear() && isSame('month');\n };\n\n var isSameDay = function () {\n return isSameMonth() && isSame('day');\n }; // const isSameHalfDay = () => isSameDay() && isSame('half-day');\n\n\n var isSameHour = function () {\n return isSameDay() && isSame('hour');\n };\n\n var isSameMinute = function () {\n return isSameHour() && isSame('minute');\n };\n\n var isSameSecond = function () {\n return isSameMinute() && isSame('second');\n };\n\n var isSameMilliSecond = function () {\n return isSameSecond() && isSame('millisecond');\n };\n\n switch (unit) {\n case 'year':\n return isSameYear();\n\n case 'month':\n return isSameMonth();\n\n case 'day':\n return isSameDay();\n\n case 'hour':\n return isSameHour();\n\n case 'minute':\n return isSameMinute();\n\n case 'second':\n return isSameSecond();\n\n case 'millisecond':\n return isSameMilliSecond();\n }\n} // const primaryUnitGetters = {\n// year: fullYearGetterName(),\n// month: monthGetterName(),\n// day: dateGetterName(),\n// hour: hoursGetterName(),\n// minute: minutesGetterName(),\n// second: secondsGetterName(),\n// millisecond: millisecondsGetterName()\n// };\n// const primaryUnitUTCGetters = {\n// year: fullYearGetterName(true),\n// month: monthGetterName(true),\n// day: dateGetterName(true),\n// hour: hoursGetterName(true),\n// minute: minutesGetterName(true),\n// second: secondsGetterName(true),\n// millisecond: millisecondsGetterName(true)\n// };\n// function moveTick(date: Date, unitName: TimeUnit, step: number, isUTC: boolean) {\n// step = step || 1;\n// switch (getPrimaryTimeUnit(unitName)) {\n// case 'year':\n// date[fullYearSetterName(isUTC)](date[fullYearGetterName(isUTC)]() + step);\n// break;\n// case 'month':\n// date[monthSetterName(isUTC)](date[monthGetterName(isUTC)]() + step);\n// break;\n// case 'day':\n// date[dateSetterName(isUTC)](date[dateGetterName(isUTC)]() + step);\n// break;\n// case 'hour':\n// date[hoursSetterName(isUTC)](date[hoursGetterName(isUTC)]() + step);\n// break;\n// case 'minute':\n// date[minutesSetterName(isUTC)](date[minutesGetterName(isUTC)]() + step);\n// break;\n// case 'second':\n// date[secondsSetterName(isUTC)](date[secondsGetterName(isUTC)]() + step);\n// break;\n// case 'millisecond':\n// date[millisecondsSetterName(isUTC)](date[millisecondsGetterName(isUTC)]() + step);\n// break;\n// }\n// return date.getTime();\n// }\n// const DATE_INTERVALS = [[8, 7.5], [4, 3.5], [2, 1.5]];\n// const MONTH_INTERVALS = [[6, 5.5], [3, 2.5], [2, 1.5]];\n// const MINUTES_SECONDS_INTERVALS = [[30, 30], [20, 20], [15, 15], [10, 10], [5, 5], [2, 2]];\n\n\nfunction getDateInterval(approxInterval, daysInMonth) {\n approxInterval /= ONE_DAY;\n return approxInterval > 16 ? 16 // Math.floor(daysInMonth / 2) + 1 // In this case we only want one tick betwen two month.\n : approxInterval > 7.5 ? 7 // TODO week 7 or day 8?\n : approxInterval > 3.5 ? 4 : approxInterval > 1.5 ? 2 : 1;\n}\n\nfunction getMonthInterval(approxInterval) {\n var APPROX_ONE_MONTH = 30 * ONE_DAY;\n approxInterval /= APPROX_ONE_MONTH;\n return approxInterval > 6 ? 6 : approxInterval > 3 ? 3 : approxInterval > 2 ? 2 : 1;\n}\n\nfunction getHourInterval(approxInterval) {\n approxInterval /= ONE_HOUR;\n return approxInterval > 12 ? 12 : approxInterval > 6 ? 6 : approxInterval > 3.5 ? 4 : approxInterval > 2 ? 2 : 1;\n}\n\nfunction getMinutesAndSecondsInterval(approxInterval, isMinutes) {\n approxInterval /= isMinutes ? ONE_MINUTE : ONE_SECOND;\n return approxInterval > 30 ? 30 : approxInterval > 20 ? 20 : approxInterval > 15 ? 15 : approxInterval > 10 ? 10 : approxInterval > 5 ? 5 : approxInterval > 2 ? 2 : 1;\n}\n\nfunction getMillisecondsInterval(approxInterval) {\n return numberUtil.nice(approxInterval, true);\n}\n\nfunction getFirstTimestampOfUnit(date, unitName, isUTC) {\n var outDate = new Date(date);\n\n switch (getPrimaryTimeUnit(unitName)) {\n case 'year':\n case 'month':\n outDate[monthSetterName(isUTC)](0);\n\n case 'day':\n outDate[dateSetterName(isUTC)](1);\n\n case 'hour':\n outDate[hoursSetterName(isUTC)](0);\n\n case 'minute':\n outDate[minutesSetterName(isUTC)](0);\n\n case 'second':\n outDate[secondsSetterName(isUTC)](0);\n outDate[millisecondsSetterName(isUTC)](0);\n }\n\n return outDate.getTime();\n}\n\nfunction getIntervalTicks(bottomUnitName, approxInterval, isUTC, extent) {\n var safeLimit = 10000;\n var unitNames = timeUnits;\n var iter = 0;\n\n function addTicksInSpan(interval, minTimestamp, maxTimestamp, getMethodName, setMethodName, isDate, out) {\n var date = new Date(minTimestamp);\n var dateTime = minTimestamp;\n var d = date[getMethodName](); // if (isDate) {\n // d -= 1; // Starts with 0; PENDING\n // }\n\n while (dateTime < maxTimestamp && dateTime <= extent[1]) {\n out.push({\n value: dateTime\n });\n d += interval;\n date[setMethodName](d);\n dateTime = date.getTime();\n } // This extra tick is for calcuating ticks of next level. Will not been added to the final result\n\n\n out.push({\n value: dateTime,\n notAdd: true\n });\n }\n\n function addLevelTicks(unitName, lastLevelTicks, levelTicks) {\n var newAddedTicks = [];\n var isFirstLevel = !lastLevelTicks.length;\n\n if (isUnitValueSame(getPrimaryTimeUnit(unitName), extent[0], extent[1], isUTC)) {\n return;\n }\n\n if (isFirstLevel) {\n lastLevelTicks = [{\n // TODO Optimize. Not include so may ticks.\n value: getFirstTimestampOfUnit(new Date(extent[0]), unitName, isUTC)\n }, {\n value: extent[1]\n }];\n }\n\n for (var i = 0; i < lastLevelTicks.length - 1; i++) {\n var startTick = lastLevelTicks[i].value;\n var endTick = lastLevelTicks[i + 1].value;\n\n if (startTick === endTick) {\n continue;\n }\n\n var interval = void 0;\n var getterName = void 0;\n var setterName = void 0;\n var isDate = false;\n\n switch (unitName) {\n case 'year':\n interval = Math.max(1, Math.round(approxInterval / ONE_DAY / 365));\n getterName = fullYearGetterName(isUTC);\n setterName = fullYearSetterName(isUTC);\n break;\n\n case 'half-year':\n case 'quarter':\n case 'month':\n interval = getMonthInterval(approxInterval);\n getterName = monthGetterName(isUTC);\n setterName = monthSetterName(isUTC);\n break;\n\n case 'week': // PENDING If week is added. Ignore day.\n\n case 'half-week':\n case 'day':\n interval = getDateInterval(approxInterval, 31); // Use 32 days and let interval been 16\n\n getterName = dateGetterName(isUTC);\n setterName = dateSetterName(isUTC);\n isDate = true;\n break;\n\n case 'half-day':\n case 'quarter-day':\n case 'hour':\n interval = getHourInterval(approxInterval);\n getterName = hoursGetterName(isUTC);\n setterName = hoursSetterName(isUTC);\n break;\n\n case 'minute':\n interval = getMinutesAndSecondsInterval(approxInterval, true);\n getterName = minutesGetterName(isUTC);\n setterName = minutesSetterName(isUTC);\n break;\n\n case 'second':\n interval = getMinutesAndSecondsInterval(approxInterval, false);\n getterName = secondsGetterName(isUTC);\n setterName = secondsSetterName(isUTC);\n break;\n\n case 'millisecond':\n interval = getMillisecondsInterval(approxInterval);\n getterName = millisecondsGetterName(isUTC);\n setterName = millisecondsSetterName(isUTC);\n break;\n }\n\n addTicksInSpan(interval, startTick, endTick, getterName, setterName, isDate, newAddedTicks);\n\n if (unitName === 'year' && levelTicks.length > 1 && i === 0) {\n // Add nearest years to the left extent.\n levelTicks.unshift({\n value: levelTicks[0].value - interval\n });\n }\n }\n\n for (var i = 0; i < newAddedTicks.length; i++) {\n levelTicks.push(newAddedTicks[i]);\n } // newAddedTicks.length && console.log(unitName, newAddedTicks);\n\n\n return newAddedTicks;\n }\n\n var levelsTicks = [];\n var currentLevelTicks = [];\n var tickCount = 0;\n var lastLevelTickCount = 0;\n\n for (var i = 0; i < unitNames.length && iter++ < safeLimit; ++i) {\n var primaryTimeUnit = getPrimaryTimeUnit(unitNames[i]);\n\n if (!isPrimaryTimeUnit(unitNames[i])) {\n // TODO\n continue;\n }\n\n addLevelTicks(unitNames[i], levelsTicks[levelsTicks.length - 1] || [], currentLevelTicks);\n var nextPrimaryTimeUnit = unitNames[i + 1] ? getPrimaryTimeUnit(unitNames[i + 1]) : null;\n\n if (primaryTimeUnit !== nextPrimaryTimeUnit) {\n if (currentLevelTicks.length) {\n lastLevelTickCount = tickCount; // Remove the duplicate so the tick count can be precisely.\n\n currentLevelTicks.sort(function (a, b) {\n return a.value - b.value;\n });\n var levelTicksRemoveDuplicated = [];\n\n for (var i_1 = 0; i_1 < currentLevelTicks.length; ++i_1) {\n var tickValue = currentLevelTicks[i_1].value;\n\n if (i_1 === 0 || currentLevelTicks[i_1 - 1].value !== tickValue) {\n levelTicksRemoveDuplicated.push(currentLevelTicks[i_1]);\n\n if (tickValue >= extent[0] && tickValue <= extent[1]) {\n tickCount++;\n }\n }\n }\n\n var targetTickNum = (extent[1] - extent[0]) / approxInterval; // Added too much in this level and not too less in last level\n\n if (tickCount > targetTickNum * 1.5 && lastLevelTickCount > targetTickNum / 1.5) {\n break;\n } // Only treat primary time unit as one level.\n\n\n levelsTicks.push(levelTicksRemoveDuplicated);\n\n if (tickCount > targetTickNum || bottomUnitName === unitNames[i]) {\n break;\n }\n } // Reset if next unitName is primary\n\n\n currentLevelTicks = [];\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (iter >= safeLimit) {\n warn('Exceed safe limit.');\n }\n }\n\n var levelsTicksInExtent = filter(map(levelsTicks, function (levelTicks) {\n return filter(levelTicks, function (tick) {\n return tick.value >= extent[0] && tick.value <= extent[1] && !tick.notAdd;\n });\n }), function (levelTicks) {\n return levelTicks.length > 0;\n });\n var ticks = [];\n var maxLevel = levelsTicksInExtent.length - 1;\n\n for (var i = 0; i < levelsTicksInExtent.length; ++i) {\n var levelTicks = levelsTicksInExtent[i];\n\n for (var k = 0; k < levelTicks.length; ++k) {\n ticks.push({\n value: levelTicks[k].value,\n level: maxLevel - i\n });\n }\n }\n\n ticks.sort(function (a, b) {\n return a.value - b.value;\n }); // Remove duplicates\n\n var result = [];\n\n for (var i = 0; i < ticks.length; ++i) {\n if (i === 0 || ticks[i].value !== ticks[i - 1].value) {\n result.push(ticks[i]);\n }\n }\n\n return result;\n}\n\nScale.registerClass(TimeScale);\nexport default TimeScale;","\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 * as numberUtil from '../util/number';\nvar roundNumber = numberUtil.round;\n/**\n * @param extent Both extent[0] and extent[1] should be valid number.\n * Should be extent[0] < extent[1].\n * @param splitNumber splitNumber should be >= 1.\n */\n\nexport function intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval) {\n var result = {};\n var span = extent[1] - extent[0];\n var interval = result.interval = numberUtil.nice(span / splitNumber, true);\n\n if (minInterval != null && interval < minInterval) {\n interval = result.interval = minInterval;\n }\n\n if (maxInterval != null && interval > maxInterval) {\n interval = result.interval = maxInterval;\n } // Tow more digital for tick.\n\n\n var precision = result.intervalPrecision = getIntervalPrecision(interval); // Niced extent inside original extent\n\n var niceTickExtent = result.niceTickExtent = [roundNumber(Math.ceil(extent[0] / interval) * interval, precision), roundNumber(Math.floor(extent[1] / interval) * interval, precision)];\n fixExtent(niceTickExtent, extent);\n return result;\n}\n/**\n * @return interval precision\n */\n\nexport function getIntervalPrecision(interval) {\n // Tow more digital for tick.\n return numberUtil.getPrecisionSafe(interval) + 2;\n}\n\nfunction clamp(niceTickExtent, idx, extent) {\n niceTickExtent[idx] = Math.max(Math.min(niceTickExtent[idx], extent[1]), extent[0]);\n} // In some cases (e.g., splitNumber is 1), niceTickExtent may be out of extent.\n\n\nexport function fixExtent(niceTickExtent, extent) {\n !isFinite(niceTickExtent[0]) && (niceTickExtent[0] = extent[0]);\n !isFinite(niceTickExtent[1]) && (niceTickExtent[1] = extent[1]);\n clamp(niceTickExtent, 0, extent);\n clamp(niceTickExtent, 1, extent);\n\n if (niceTickExtent[0] > niceTickExtent[1]) {\n niceTickExtent[0] = niceTickExtent[1];\n }\n}\nexport function contain(val, extent) {\n return val >= extent[0] && val <= extent[1];\n}\nexport function normalize(val, extent) {\n if (extent[1] === extent[0]) {\n return 0.5;\n }\n\n return (val - extent[0]) / (extent[1] - extent[0]);\n}\nexport function scale(val, extent) {\n return val * (extent[1] - extent[0]) + extent[0];\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 * as clazzUtil from '../util/clazz';\n\nvar Scale =\n/** @class */\nfunction () {\n function Scale(setting) {\n this._setting = setting || {};\n this._extent = [Infinity, -Infinity];\n }\n\n Scale.prototype.getSetting = function (name) {\n return this._setting[name];\n };\n /**\n * Set extent from data\n */\n\n\n Scale.prototype.unionExtent = function (other) {\n var extent = this._extent;\n other[0] < extent[0] && (extent[0] = other[0]);\n other[1] > extent[1] && (extent[1] = other[1]); // not setExtent because in log axis it may transformed to power\n // this.setExtent(extent[0], extent[1]);\n };\n /**\n * Set extent from data\n */\n\n\n Scale.prototype.unionExtentFromData = function (data, dim) {\n this.unionExtent(data.getApproximateExtent(dim));\n };\n /**\n * Get extent\n *\n * Extent is always in increase order.\n */\n\n\n Scale.prototype.getExtent = function () {\n return this._extent.slice();\n };\n /**\n * Set extent\n */\n\n\n Scale.prototype.setExtent = function (start, end) {\n var thisExtent = this._extent;\n\n if (!isNaN(start)) {\n thisExtent[0] = start;\n }\n\n if (!isNaN(end)) {\n thisExtent[1] = end;\n }\n };\n /**\n * If value is in extent range\n */\n\n\n Scale.prototype.isInExtentRange = function (value) {\n return this._extent[0] <= value && this._extent[1] >= value;\n };\n /**\n * When axis extent depends on data and no data exists,\n * axis ticks should not be drawn, which is named 'blank'.\n */\n\n\n Scale.prototype.isBlank = function () {\n return this._isBlank;\n };\n /**\n * When axis extent depends on data and no data exists,\n * axis ticks should not be drawn, which is named 'blank'.\n */\n\n\n Scale.prototype.setBlank = function (isBlank) {\n this._isBlank = isBlank;\n };\n\n return Scale;\n}();\n\nclazzUtil.enableClassManagement(Scale);\nexport default Scale;"],"sourceRoot":""}