{"version":3,"file":"js/chunk-vendors-69403744-legacy.a9eb4e0e.js","mappings":"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","sources":["webpack://i4proportal/./node_modules/echarts/lib/loading/default.js","webpack://i4proportal/./node_modules/echarts/lib/model/Component.js","webpack://i4proportal/./node_modules/echarts/lib/model/Global.js","webpack://i4proportal/./node_modules/echarts/lib/model/Model.js","webpack://i4proportal/./node_modules/echarts/lib/model/OptionManager.js","webpack://i4proportal/./node_modules/echarts/lib/model/Series.js","webpack://i4proportal/./node_modules/echarts/lib/model/globalDefault.js","webpack://i4proportal/./node_modules/echarts/lib/model/mixin/areaStyle.js","webpack://i4proportal/./node_modules/echarts/lib/model/mixin/boxLayout.js","webpack://i4proportal/./node_modules/echarts/lib/model/mixin/colorPalette.js","webpack://i4proportal/./node_modules/echarts/lib/model/mixin/dataFormat.js","webpack://i4proportal/./node_modules/echarts/lib/model/mixin/itemStyle.js","webpack://i4proportal/./node_modules/echarts/lib/model/mixin/lineStyle.js","webpack://i4proportal/./node_modules/echarts/lib/model/mixin/makeStyleMapper.js","webpack://i4proportal/./node_modules/echarts/lib/model/mixin/textStyle.js","webpack://i4proportal/./node_modules/echarts/lib/model/referHelper.js","webpack://i4proportal/./node_modules/echarts/lib/preprocessor/backwardCompat.js","webpack://i4proportal/./node_modules/echarts/lib/preprocessor/helper/compatStyle.js","webpack://i4proportal/./node_modules/echarts/lib/processor/dataFilter.js","webpack://i4proportal/./node_modules/echarts/lib/processor/dataSample.js","webpack://i4proportal/./node_modules/echarts/lib/processor/dataStack.js","webpack://i4proportal/./node_modules/echarts/lib/scale/Interval.js","webpack://i4proportal/./node_modules/echarts/lib/scale/Log.js","webpack://i4proportal/./node_modules/echarts/lib/scale/Ordinal.js","webpack://i4proportal/./node_modules/echarts/lib/scale/Scale.js","webpack://i4proportal/./node_modules/echarts/lib/scale/Time.js","webpack://i4proportal/./node_modules/echarts/lib/scale/helper.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\nvar graphic = require(\"../util/graphic\");\n\nvar textContain = require(\"zrender/lib/contain/text\");\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 PI = Math.PI;\n/**\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} [opts]\n * @param {string} [opts.text]\n * @param {string} [opts.color]\n * @param {string} [opts.textColor]\n * @return {module:zrender/Element}\n */\n\nfunction _default(api, opts) {\n  opts = opts || {};\n  zrUtil.defaults(opts, {\n    text: 'loading',\n    textColor: '#000',\n    fontSize: '12px',\n    maskColor: 'rgba(255, 255, 255, 0.8)',\n    showSpinner: true,\n    color: '#c23531',\n    spinnerRadius: 10,\n    lineWidth: 5,\n    zlevel: 0\n  });\n  var group = new graphic.Group();\n  var mask = new graphic.Rect({\n    style: {\n      fill: opts.maskColor\n    },\n    zlevel: opts.zlevel,\n    z: 10000\n  });\n  group.add(mask);\n  var font = opts.fontSize + ' sans-serif';\n  var labelRect = new graphic.Rect({\n    style: {\n      fill: 'none',\n      text: opts.text,\n      font: font,\n      textPosition: 'right',\n      textDistance: 10,\n      textFill: opts.textColor\n    },\n    zlevel: opts.zlevel,\n    z: 10001\n  });\n  group.add(labelRect);\n\n  if (opts.showSpinner) {\n    var arc = new graphic.Arc({\n      shape: {\n        startAngle: -PI / 2,\n        endAngle: -PI / 2 + 0.1,\n        r: opts.spinnerRadius\n      },\n      style: {\n        stroke: opts.color,\n        lineCap: 'round',\n        lineWidth: opts.lineWidth\n      },\n      zlevel: opts.zlevel,\n      z: 10001\n    });\n    arc.animateShape(true).when(1000, {\n      endAngle: PI * 3 / 2\n    }).start('circularInOut');\n    arc.animateShape(true).when(1000, {\n      startAngle: PI * 3 / 2\n    }).delay(300).start('circularInOut');\n    group.add(arc);\n  } // Inject resize\n\n\n  group.resize = function () {\n    var textWidth = textContain.getWidth(opts.text, font);\n    var r = opts.showSpinner ? opts.spinnerRadius : 0; // cx = (containerWidth - arcDiameter - textDistance - textWidth) / 2\n    // textDistance needs to be calculated when both animation and text exist\n\n    var cx = (api.getWidth() - r * 2 - (opts.showSpinner && textWidth ? 10 : 0) - textWidth) / 2 // only show the text\n    - (opts.showSpinner ? 0 : textWidth / 2);\n    var cy = api.getHeight() / 2;\n    opts.showSpinner && arc.setShape({\n      cx: cx,\n      cy: cy\n    });\n    labelRect.setShape({\n      x: cx - r,\n      y: cy - r,\n      width: r * 2,\n      height: r * 2\n    });\n    mask.setShape({\n      x: 0,\n      y: 0,\n      width: api.getWidth(),\n      height: api.getHeight()\n    });\n  };\n\n  group.resize();\n  return group;\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 Model = require(\"./Model\");\n\nvar componentUtil = require(\"../util/component\");\n\nvar _clazz = require(\"../util/clazz\");\n\nvar enableClassManagement = _clazz.enableClassManagement;\nvar parseClassType = _clazz.parseClassType;\n\nvar _model = require(\"../util/model\");\n\nvar makeInner = _model.makeInner;\n\nvar layout = require(\"../util/layout\");\n\nvar boxLayoutMixin = require(\"./mixin/boxLayout\");\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 * Component model\n *\n * @module echarts/model/Component\n */\nvar inner = makeInner();\n/**\n * @alias module:echarts/model/Component\n * @constructor\n * @param {Object} option\n * @param {module:echarts/model/Model} parentModel\n * @param {module:echarts/model/Model} ecModel\n */\n\nvar ComponentModel = Model.extend({\n  type: 'component',\n\n  /**\n   * @readOnly\n   * @type {string}\n   */\n  id: '',\n\n  /**\n   * Because simplified concept is probably better, series.name (or component.name)\n   * has been having too many resposibilities:\n   * (1) Generating id (which requires name in option should not be modified).\n   * (2) As an index to mapping series when merging option or calling API (a name\n   * can refer to more then one components, which is convinient is some case).\n   * (3) Display.\n   * @readOnly\n   */\n  name: '',\n\n  /**\n   * @readOnly\n   * @type {string}\n   */\n  mainType: '',\n\n  /**\n   * @readOnly\n   * @type {string}\n   */\n  subType: '',\n\n  /**\n   * @readOnly\n   * @type {number}\n   */\n  componentIndex: 0,\n\n  /**\n   * @type {Object}\n   * @protected\n   */\n  defaultOption: null,\n\n  /**\n   * @type {module:echarts/model/Global}\n   * @readOnly\n   */\n  ecModel: null,\n\n  /**\n   * key: componentType\n   * value:  Component model list, can not be null.\n   * @type {Object.<string, Array.<module:echarts/model/Model>>}\n   * @readOnly\n   */\n  dependentModels: [],\n\n  /**\n   * @type {string}\n   * @readOnly\n   */\n  uid: null,\n\n  /**\n   * Support merge layout params.\n   * Only support 'box' now (left/right/top/bottom/width/height).\n   * @type {string|Object} Object can be {ignoreSize: true}\n   * @readOnly\n   */\n  layoutMode: null,\n  $constructor: function (option, parentModel, ecModel, extraOpt) {\n    Model.call(this, option, parentModel, ecModel, extraOpt);\n    this.uid = componentUtil.getUID('ec_cpt_model');\n  },\n  init: function (option, parentModel, ecModel, extraOpt) {\n    this.mergeDefaultAndTheme(option, ecModel);\n  },\n  mergeDefaultAndTheme: function (option, ecModel) {\n    var layoutMode = this.layoutMode;\n    var inputPositionParams = layoutMode ? layout.getLayoutParams(option) : {};\n    var themeModel = ecModel.getTheme();\n    zrUtil.merge(option, themeModel.get(this.mainType));\n    zrUtil.merge(option, this.getDefaultOption());\n\n    if (layoutMode) {\n      layout.mergeLayoutParam(option, inputPositionParams, layoutMode);\n    }\n  },\n  mergeOption: function (option, extraOpt) {\n    zrUtil.merge(this.option, option, true);\n    var layoutMode = this.layoutMode;\n\n    if (layoutMode) {\n      layout.mergeLayoutParam(this.option, option, layoutMode);\n    }\n  },\n  // Hooker after init or mergeOption\n  optionUpdated: function (newCptOption, isInit) {},\n  getDefaultOption: function () {\n    var fields = inner(this);\n\n    if (!fields.defaultOption) {\n      var optList = [];\n      var Class = this.constructor;\n\n      while (Class) {\n        var opt = Class.prototype.defaultOption;\n        opt && optList.push(opt);\n        Class = Class.superClass;\n      }\n\n      var defaultOption = {};\n\n      for (var i = optList.length - 1; i >= 0; i--) {\n        defaultOption = zrUtil.merge(defaultOption, optList[i], true);\n      }\n\n      fields.defaultOption = defaultOption;\n    }\n\n    return fields.defaultOption;\n  },\n  getReferringComponents: function (mainType) {\n    return this.ecModel.queryComponents({\n      mainType: mainType,\n      index: this.get(mainType + 'Index', true),\n      id: this.get(mainType + 'Id', true)\n    });\n  }\n}); // Reset ComponentModel.extend, add preConstruct.\n// clazzUtil.enableClassExtend(\n//     ComponentModel,\n//     function (option, parentModel, ecModel, extraOpt) {\n//         // Set dependentModels, componentIndex, name, id, mainType, subType.\n//         zrUtil.extend(this, extraOpt);\n//         this.uid = componentUtil.getUID('componentModel');\n//         // this.setReadOnly([\n//         //     'type', 'id', 'uid', 'name', 'mainType', 'subType',\n//         //     'dependentModels', 'componentIndex'\n//         // ]);\n//     }\n// );\n// Add capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nenableClassManagement(ComponentModel, {\n  registerWhenExtend: true\n});\ncomponentUtil.enableSubTypeDefaulter(ComponentModel); // Add capability of ComponentModel.topologicalTravel.\n\ncomponentUtil.enableTopologicalTravel(ComponentModel, getDependencies);\n\nfunction getDependencies(componentType) {\n  var deps = [];\n  zrUtil.each(ComponentModel.getClassesByMainType(componentType), function (Clazz) {\n    deps = deps.concat(Clazz.prototype.dependencies || []);\n  }); // Ensure main type.\n\n  deps = zrUtil.map(deps, function (type) {\n    return parseClassType(type).main;\n  }); // Hack dataset for convenience.\n\n  if (componentType !== 'dataset' && zrUtil.indexOf(deps, 'dataset') <= 0) {\n    deps.unshift('dataset');\n  }\n\n  return deps;\n}\n\nzrUtil.mixin(ComponentModel, boxLayoutMixin);\nvar _default = ComponentModel;\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 _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar filter = _util.filter;\nvar map = _util.map;\nvar isArray = _util.isArray;\nvar indexOf = _util.indexOf;\nvar isObject = _util.isObject;\nvar isString = _util.isString;\nvar createHashMap = _util.createHashMap;\nvar assert = _util.assert;\nvar clone = _util.clone;\nvar merge = _util.merge;\nvar extend = _util.extend;\nvar mixin = _util.mixin;\n\nvar modelUtil = require(\"../util/model\");\n\nvar Model = require(\"./Model\");\n\nvar ComponentModel = require(\"./Component\");\n\nvar globalDefault = require(\"./globalDefault\");\n\nvar colorPaletteMixin = require(\"./mixin/colorPalette\");\n\nvar _sourceHelper = require(\"../data/helper/sourceHelper\");\n\nvar resetSourceDefaulter = _sourceHelper.resetSourceDefaulter;\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 * ECharts global model\n *\n * @module {echarts/model/Global}\n */\n\n/**\n * Caution: If the mechanism should be changed some day, these cases\n * should be considered:\n *\n * (1) In `merge option` mode, if using the same option to call `setOption`\n * many times, the result should be the same (try our best to ensure that).\n * (2) In `merge option` mode, if a component has no id/name specified, it\n * will be merged by index, and the result sequence of the components is\n * consistent to the original sequence.\n * (3) `reset` feature (in toolbox). Find detailed info in comments about\n * `mergeOption` in module:echarts/model/OptionManager.\n */\nvar OPTION_INNER_KEY = '\\0_ec_inner';\n/**\n * @alias module:echarts/model/Global\n *\n * @param {Object} option\n * @param {module:echarts/model/Model} parentModel\n * @param {Object} theme\n */\n\nvar GlobalModel = Model.extend({\n  init: function (option, parentModel, theme, optionManager) {\n    theme = theme || {};\n    this.option = null; // Mark as not initialized.\n\n    /**\n     * @type {module:echarts/model/Model}\n     * @private\n     */\n\n    this._theme = new Model(theme);\n    /**\n     * @type {module:echarts/model/OptionManager}\n     */\n\n    this._optionManager = optionManager;\n  },\n  setOption: function (option, optionPreprocessorFuncs) {\n    assert(!(OPTION_INNER_KEY in option), 'please use chart.getOption()');\n\n    this._optionManager.setOption(option, optionPreprocessorFuncs);\n\n    this.resetOption(null);\n  },\n\n  /**\n   * @param {string} type null/undefined: reset all.\n   *                      'recreate': force recreate all.\n   *                      'timeline': only reset timeline option\n   *                      'media': only reset media query option\n   * @return {boolean} Whether option changed.\n   */\n  resetOption: function (type) {\n    var optionChanged = false;\n    var optionManager = this._optionManager;\n\n    if (!type || type === 'recreate') {\n      var baseOption = optionManager.mountOption(type === 'recreate');\n\n      if (!this.option || type === 'recreate') {\n        initBase.call(this, baseOption);\n      } else {\n        this.restoreData();\n        this.mergeOption(baseOption);\n      }\n\n      optionChanged = true;\n    }\n\n    if (type === 'timeline' || type === 'media') {\n      this.restoreData();\n    }\n\n    if (!type || type === 'recreate' || type === 'timeline') {\n      var timelineOption = optionManager.getTimelineOption(this);\n      timelineOption && (this.mergeOption(timelineOption), optionChanged = true);\n    }\n\n    if (!type || type === 'recreate' || type === 'media') {\n      var mediaOptions = optionManager.getMediaOption(this, this._api);\n\n      if (mediaOptions.length) {\n        each(mediaOptions, function (mediaOption) {\n          this.mergeOption(mediaOption, optionChanged = true);\n        }, this);\n      }\n    }\n\n    return optionChanged;\n  },\n\n  /**\n   * @protected\n   */\n  mergeOption: function (newOption) {\n    var option = this.option;\n    var componentsMap = this._componentsMap;\n    var newCptTypes = [];\n    resetSourceDefaulter(this); // If no component class, merge directly.\n    // For example: color, animaiton options, etc.\n\n    each(newOption, function (componentOption, mainType) {\n      if (componentOption == null) {\n        return;\n      }\n\n      if (!ComponentModel.hasClass(mainType)) {\n        // globalSettingTask.dirty();\n        option[mainType] = option[mainType] == null ? clone(componentOption) : merge(option[mainType], componentOption, true);\n      } else if (mainType) {\n        newCptTypes.push(mainType);\n      }\n    });\n    ComponentModel.topologicalTravel(newCptTypes, ComponentModel.getAllClassMainTypes(), visitComponent, this);\n\n    function visitComponent(mainType, dependencies) {\n      var newCptOptionList = modelUtil.normalizeToArray(newOption[mainType]);\n      var mapResult = modelUtil.mappingToExists(componentsMap.get(mainType), newCptOptionList);\n      modelUtil.makeIdAndName(mapResult); // Set mainType and complete subType.\n\n      each(mapResult, function (item, index) {\n        var opt = item.option;\n\n        if (isObject(opt)) {\n          item.keyInfo.mainType = mainType;\n          item.keyInfo.subType = determineSubType(mainType, opt, item.exist);\n        }\n      });\n      var dependentModels = getComponentsByTypes(componentsMap, dependencies);\n      option[mainType] = [];\n      componentsMap.set(mainType, []);\n      each(mapResult, function (resultItem, index) {\n        var componentModel = resultItem.exist;\n        var newCptOption = resultItem.option;\n        assert(isObject(newCptOption) || componentModel, 'Empty component definition'); // Consider where is no new option and should be merged using {},\n        // see removeEdgeAndAdd in topologicalTravel and\n        // ComponentModel.getAllClassMainTypes.\n\n        if (!newCptOption) {\n          componentModel.mergeOption({}, this);\n          componentModel.optionUpdated({}, false);\n        } else {\n          var ComponentModelClass = ComponentModel.getClass(mainType, resultItem.keyInfo.subType, true);\n\n          if (componentModel && componentModel.constructor === ComponentModelClass) {\n            componentModel.name = resultItem.keyInfo.name; // componentModel.settingTask && componentModel.settingTask.dirty();\n\n            componentModel.mergeOption(newCptOption, this);\n            componentModel.optionUpdated(newCptOption, false);\n          } else {\n            // PENDING Global as parent ?\n            var extraOpt = extend({\n              dependentModels: dependentModels,\n              componentIndex: index\n            }, resultItem.keyInfo);\n            componentModel = new ComponentModelClass(newCptOption, this, this, extraOpt);\n            extend(componentModel, extraOpt);\n            componentModel.init(newCptOption, this, this, extraOpt); // Call optionUpdated after init.\n            // newCptOption has been used as componentModel.option\n            // and may be merged with theme and default, so pass null\n            // to avoid confusion.\n\n            componentModel.optionUpdated(null, true);\n          }\n        }\n\n        componentsMap.get(mainType)[index] = componentModel;\n        option[mainType][index] = componentModel.option;\n      }, this); // Backup series for filtering.\n\n      if (mainType === 'series') {\n        createSeriesIndices(this, componentsMap.get('series'));\n      }\n    }\n\n    this._seriesIndicesMap = createHashMap(this._seriesIndices = this._seriesIndices || []);\n  },\n\n  /**\n   * Get option for output (cloned option and inner info removed)\n   * @public\n   * @return {Object}\n   */\n  getOption: function () {\n    var option = clone(this.option);\n    each(option, function (opts, mainType) {\n      if (ComponentModel.hasClass(mainType)) {\n        var opts = modelUtil.normalizeToArray(opts);\n\n        for (var i = opts.length - 1; i >= 0; i--) {\n          // Remove options with inner id.\n          if (modelUtil.isIdInner(opts[i])) {\n            opts.splice(i, 1);\n          }\n        }\n\n        option[mainType] = opts;\n      }\n    });\n    delete option[OPTION_INNER_KEY];\n    return option;\n  },\n\n  /**\n   * @return {module:echarts/model/Model}\n   */\n  getTheme: function () {\n    return this._theme;\n  },\n\n  /**\n   * @param {string} mainType\n   * @param {number} [idx=0]\n   * @return {module:echarts/model/Component}\n   */\n  getComponent: function (mainType, idx) {\n    var list = this._componentsMap.get(mainType);\n\n    if (list) {\n      return list[idx || 0];\n    }\n  },\n\n  /**\n   * If none of index and id and name used, return all components with mainType.\n   * @param {Object} condition\n   * @param {string} condition.mainType\n   * @param {string} [condition.subType] If ignore, only query by mainType\n   * @param {number|Array.<number>} [condition.index] Either input index or id or name.\n   * @param {string|Array.<string>} [condition.id] Either input index or id or name.\n   * @param {string|Array.<string>} [condition.name] Either input index or id or name.\n   * @return {Array.<module:echarts/model/Component>}\n   */\n  queryComponents: function (condition) {\n    var mainType = condition.mainType;\n\n    if (!mainType) {\n      return [];\n    }\n\n    var index = condition.index;\n    var id = condition.id;\n    var name = condition.name;\n\n    var cpts = this._componentsMap.get(mainType);\n\n    if (!cpts || !cpts.length) {\n      return [];\n    }\n\n    var result;\n\n    if (index != null) {\n      if (!isArray(index)) {\n        index = [index];\n      }\n\n      result = filter(map(index, function (idx) {\n        return cpts[idx];\n      }), function (val) {\n        return !!val;\n      });\n    } else if (id != null) {\n      var isIdArray = isArray(id);\n      result = filter(cpts, function (cpt) {\n        return isIdArray && indexOf(id, cpt.id) >= 0 || !isIdArray && cpt.id === id;\n      });\n    } else if (name != null) {\n      var isNameArray = isArray(name);\n      result = filter(cpts, function (cpt) {\n        return isNameArray && indexOf(name, cpt.name) >= 0 || !isNameArray && cpt.name === name;\n      });\n    } else {\n      // Return all components with mainType\n      result = cpts.slice();\n    }\n\n    return filterBySubType(result, condition);\n  },\n\n  /**\n   * The interface is different from queryComponents,\n   * which is convenient for inner usage.\n   *\n   * @usage\n   * var result = findComponents(\n   *     {mainType: 'dataZoom', query: {dataZoomId: 'abc'}}\n   * );\n   * var result = findComponents(\n   *     {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}}\n   * );\n   * var result = findComponents(\n   *     {mainType: 'series',\n   *     filter: function (model, index) {...}}\n   * );\n   * // result like [component0, componnet1, ...]\n   *\n   * @param {Object} condition\n   * @param {string} condition.mainType Mandatory.\n   * @param {string} [condition.subType] Optional.\n   * @param {Object} [condition.query] like {xxxIndex, xxxId, xxxName},\n   *        where xxx is mainType.\n   *        If query attribute is null/undefined or has no index/id/name,\n   *        do not filtering by query conditions, which is convenient for\n   *        no-payload situations or when target of action is global.\n   * @param {Function} [condition.filter] parameter: component, return boolean.\n   * @return {Array.<module:echarts/model/Component>}\n   */\n  findComponents: function (condition) {\n    var query = condition.query;\n    var mainType = condition.mainType;\n    var queryCond = getQueryCond(query);\n    var result = queryCond ? this.queryComponents(queryCond) : this._componentsMap.get(mainType);\n    return doFilter(filterBySubType(result, condition));\n\n    function getQueryCond(q) {\n      var indexAttr = mainType + 'Index';\n      var idAttr = mainType + 'Id';\n      var nameAttr = mainType + 'Name';\n      return q && (q[indexAttr] != null || q[idAttr] != null || q[nameAttr] != null) ? {\n        mainType: mainType,\n        // subType will be filtered finally.\n        index: q[indexAttr],\n        id: q[idAttr],\n        name: q[nameAttr]\n      } : null;\n    }\n\n    function doFilter(res) {\n      return condition.filter ? filter(res, condition.filter) : res;\n    }\n  },\n\n  /**\n   * @usage\n   * eachComponent('legend', function (legendModel, index) {\n   *     ...\n   * });\n   * eachComponent(function (componentType, model, index) {\n   *     // componentType does not include subType\n   *     // (componentType is 'xxx' but not 'xxx.aa')\n   * });\n   * eachComponent(\n   *     {mainType: 'dataZoom', query: {dataZoomId: 'abc'}},\n   *     function (model, index) {...}\n   * );\n   * eachComponent(\n   *     {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}},\n   *     function (model, index) {...}\n   * );\n   *\n   * @param {string|Object=} mainType When mainType is object, the definition\n   *                                  is the same as the method 'findComponents'.\n   * @param {Function} cb\n   * @param {*} context\n   */\n  eachComponent: function (mainType, cb, context) {\n    var componentsMap = this._componentsMap;\n\n    if (typeof mainType === 'function') {\n      context = cb;\n      cb = mainType;\n      componentsMap.each(function (components, componentType) {\n        each(components, function (component, index) {\n          cb.call(context, componentType, component, index);\n        });\n      });\n    } else if (isString(mainType)) {\n      each(componentsMap.get(mainType), cb, context);\n    } else if (isObject(mainType)) {\n      var queryResult = this.findComponents(mainType);\n      each(queryResult, cb, context);\n    }\n  },\n\n  /**\n   * @param {string} name\n   * @return {Array.<module:echarts/model/Series>}\n   */\n  getSeriesByName: function (name) {\n    var series = this._componentsMap.get('series');\n\n    return filter(series, function (oneSeries) {\n      return oneSeries.name === name;\n    });\n  },\n\n  /**\n   * @param {number} seriesIndex\n   * @return {module:echarts/model/Series}\n   */\n  getSeriesByIndex: function (seriesIndex) {\n    return this._componentsMap.get('series')[seriesIndex];\n  },\n\n  /**\n   * Get series list before filtered by type.\n   * FIXME: rename to getRawSeriesByType?\n   *\n   * @param {string} subType\n   * @return {Array.<module:echarts/model/Series>}\n   */\n  getSeriesByType: function (subType) {\n    var series = this._componentsMap.get('series');\n\n    return filter(series, function (oneSeries) {\n      return oneSeries.subType === subType;\n    });\n  },\n\n  /**\n   * @return {Array.<module:echarts/model/Series>}\n   */\n  getSeries: function () {\n    return this._componentsMap.get('series').slice();\n  },\n\n  /**\n   * @return {number}\n   */\n  getSeriesCount: function () {\n    return this._componentsMap.get('series').length;\n  },\n\n  /**\n   * After filtering, series may be different\n   * frome raw series.\n   *\n   * @param {Function} cb\n   * @param {*} context\n   */\n  eachSeries: function (cb, context) {\n    assertSeriesInitialized(this);\n    each(this._seriesIndices, function (rawSeriesIndex) {\n      var series = this._componentsMap.get('series')[rawSeriesIndex];\n\n      cb.call(context, series, rawSeriesIndex);\n    }, this);\n  },\n\n  /**\n   * Iterate raw series before filtered.\n   *\n   * @param {Function} cb\n   * @param {*} context\n   */\n  eachRawSeries: function (cb, context) {\n    each(this._componentsMap.get('series'), cb, context);\n  },\n\n  /**\n   * After filtering, series may be different.\n   * frome raw series.\n   *\n   * @param {string} subType.\n   * @param {Function} cb\n   * @param {*} context\n   */\n  eachSeriesByType: function (subType, cb, context) {\n    assertSeriesInitialized(this);\n    each(this._seriesIndices, function (rawSeriesIndex) {\n      var series = this._componentsMap.get('series')[rawSeriesIndex];\n\n      if (series.subType === subType) {\n        cb.call(context, series, rawSeriesIndex);\n      }\n    }, this);\n  },\n\n  /**\n   * Iterate raw series before filtered of given type.\n   *\n   * @parma {string} subType\n   * @param {Function} cb\n   * @param {*} context\n   */\n  eachRawSeriesByType: function (subType, cb, context) {\n    return each(this.getSeriesByType(subType), cb, context);\n  },\n\n  /**\n   * @param {module:echarts/model/Series} seriesModel\n   */\n  isSeriesFiltered: function (seriesModel) {\n    assertSeriesInitialized(this);\n    return this._seriesIndicesMap.get(seriesModel.componentIndex) == null;\n  },\n\n  /**\n   * @return {Array.<number>}\n   */\n  getCurrentSeriesIndices: function () {\n    return (this._seriesIndices || []).slice();\n  },\n\n  /**\n   * @param {Function} cb\n   * @param {*} context\n   */\n  filterSeries: function (cb, context) {\n    assertSeriesInitialized(this);\n    var filteredSeries = filter(this._componentsMap.get('series'), cb, context);\n    createSeriesIndices(this, filteredSeries);\n  },\n  restoreData: function (payload) {\n    var componentsMap = this._componentsMap;\n    createSeriesIndices(this, componentsMap.get('series'));\n    var componentTypes = [];\n    componentsMap.each(function (components, componentType) {\n      componentTypes.push(componentType);\n    });\n    ComponentModel.topologicalTravel(componentTypes, ComponentModel.getAllClassMainTypes(), function (componentType, dependencies) {\n      each(componentsMap.get(componentType), function (component) {\n        (componentType !== 'series' || !isNotTargetSeries(component, payload)) && component.restoreData();\n      });\n    });\n  }\n});\n\nfunction isNotTargetSeries(seriesModel, payload) {\n  if (payload) {\n    var index = payload.seiresIndex;\n    var id = payload.seriesId;\n    var name = payload.seriesName;\n    return index != null && seriesModel.componentIndex !== index || id != null && seriesModel.id !== id || name != null && seriesModel.name !== name;\n  }\n}\n/**\n * @inner\n */\n\n\nfunction mergeTheme(option, theme) {\n  // PENDING\n  // NOT use `colorLayer` in theme if option has `color`\n  var notMergeColorLayer = option.color && !option.colorLayer;\n  each(theme, function (themeItem, name) {\n    if (name === 'colorLayer' && notMergeColorLayer) {\n      return;\n    } // 如果有 component model 则把具体的 merge 逻辑交给该 model 处理\n\n\n    if (!ComponentModel.hasClass(name)) {\n      if (typeof themeItem === 'object') {\n        option[name] = !option[name] ? clone(themeItem) : merge(option[name], themeItem, false);\n      } else {\n        if (option[name] == null) {\n          option[name] = themeItem;\n        }\n      }\n    }\n  });\n}\n\nfunction initBase(baseOption) {\n  baseOption = baseOption; // Using OPTION_INNER_KEY to mark that this option can not be used outside,\n  // i.e. `chart.setOption(chart.getModel().option);` is forbiden.\n\n  this.option = {};\n  this.option[OPTION_INNER_KEY] = 1;\n  /**\n   * Init with series: [], in case of calling findSeries method\n   * before series initialized.\n   * @type {Object.<string, Array.<module:echarts/model/Model>>}\n   * @private\n   */\n\n  this._componentsMap = createHashMap({\n    series: []\n  });\n  /**\n   * Mapping between filtered series list and raw series list.\n   * key: filtered series indices, value: raw series indices.\n   * @type {Array.<nubmer>}\n   * @private\n   */\n\n  this._seriesIndices;\n  this._seriesIndicesMap;\n  mergeTheme(baseOption, this._theme.option); // TODO Needs clone when merging to the unexisted property\n\n  merge(baseOption, globalDefault, false);\n  this.mergeOption(baseOption);\n}\n/**\n * @inner\n * @param {Array.<string>|string} types model types\n * @return {Object} key: {string} type, value: {Array.<Object>} models\n */\n\n\nfunction getComponentsByTypes(componentsMap, types) {\n  if (!isArray(types)) {\n    types = types ? [types] : [];\n  }\n\n  var ret = {};\n  each(types, function (type) {\n    ret[type] = (componentsMap.get(type) || []).slice();\n  });\n  return ret;\n}\n/**\n * @inner\n */\n\n\nfunction determineSubType(mainType, newCptOption, existComponent) {\n  var subType = newCptOption.type ? newCptOption.type : existComponent ? existComponent.subType // Use determineSubType only when there is no existComponent.\n  : ComponentModel.determineSubType(mainType, newCptOption); // tooltip, markline, markpoint may always has no subType\n\n  return subType;\n}\n/**\n * @inner\n */\n\n\nfunction createSeriesIndices(ecModel, seriesModels) {\n  ecModel._seriesIndicesMap = createHashMap(ecModel._seriesIndices = map(seriesModels, function (series) {\n    return series.componentIndex;\n  }) || []);\n}\n/**\n * @inner\n */\n\n\nfunction filterBySubType(components, condition) {\n  // Using hasOwnProperty for restrict. Consider\n  // subType is undefined in user payload.\n  return condition.hasOwnProperty('subType') ? filter(components, function (cpt) {\n    return cpt.subType === condition.subType;\n  }) : components;\n}\n/**\n * @inner\n */\n\n\nfunction assertSeriesInitialized(ecModel) {}\n\nmixin(GlobalModel, colorPaletteMixin);\nvar _default = GlobalModel;\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\nvar _model = require(\"../util/model\");\n\nvar makeInner = _model.makeInner;\n\nvar _clazz = require(\"../util/clazz\");\n\nvar enableClassExtend = _clazz.enableClassExtend;\nvar enableClassCheck = _clazz.enableClassCheck;\n\nvar lineStyleMixin = require(\"./mixin/lineStyle\");\n\nvar areaStyleMixin = require(\"./mixin/areaStyle\");\n\nvar textStyleMixin = require(\"./mixin/textStyle\");\n\nvar itemStyleMixin = require(\"./mixin/itemStyle\");\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 * @module echarts/model/Model\n */\nvar mixin = zrUtil.mixin;\nvar inner = makeInner();\n/**\n * @alias module:echarts/model/Model\n * @constructor\n * @param {Object} [option]\n * @param {module:echarts/model/Model} [parentModel]\n * @param {module:echarts/model/Global} [ecModel]\n */\n\nfunction Model(option, parentModel, ecModel) {\n  /**\n   * @type {module:echarts/model/Model}\n   * @readOnly\n   */\n  this.parentModel = parentModel;\n  /**\n   * @type {module:echarts/model/Global}\n   * @readOnly\n   */\n\n  this.ecModel = ecModel;\n  /**\n   * @type {Object}\n   * @protected\n   */\n\n  this.option = option; // Simple optimization\n  // if (this.init) {\n  //     if (arguments.length <= 4) {\n  //         this.init(option, parentModel, ecModel, extraOpt);\n  //     }\n  //     else {\n  //         this.init.apply(this, arguments);\n  //     }\n  // }\n}\n\nModel.prototype = {\n  constructor: Model,\n\n  /**\n   * Model 的初始化函数\n   * @param {Object} option\n   */\n  init: null,\n\n  /**\n   * 从新的 Option merge\n   */\n  mergeOption: function (option) {\n    zrUtil.merge(this.option, option, true);\n  },\n\n  /**\n   * @param {string|Array.<string>} path\n   * @param {boolean} [ignoreParent=false]\n   * @return {*}\n   */\n  get: function (path, ignoreParent) {\n    if (path == null) {\n      return this.option;\n    }\n\n    return doGet(this.option, this.parsePath(path), !ignoreParent && getParent(this, path));\n  },\n\n  /**\n   * @param {string} key\n   * @param {boolean} [ignoreParent=false]\n   * @return {*}\n   */\n  getShallow: function (key, ignoreParent) {\n    var option = this.option;\n    var val = option == null ? option : option[key];\n    var parentModel = !ignoreParent && getParent(this, key);\n\n    if (val == null && parentModel) {\n      val = parentModel.getShallow(key);\n    }\n\n    return val;\n  },\n\n  /**\n   * @param {string|Array.<string>} [path]\n   * @param {module:echarts/model/Model} [parentModel]\n   * @return {module:echarts/model/Model}\n   */\n  getModel: function (path, parentModel) {\n    var obj = path == null ? this.option : doGet(this.option, path = this.parsePath(path));\n    var thisParentModel;\n    parentModel = parentModel || (thisParentModel = getParent(this, path)) && thisParentModel.getModel(path);\n    return new Model(obj, parentModel, this.ecModel);\n  },\n\n  /**\n   * If model has option\n   */\n  isEmpty: function () {\n    return this.option == null;\n  },\n  restoreData: function () {},\n  // Pending\n  clone: function () {\n    var Ctor = this.constructor;\n    return new Ctor(zrUtil.clone(this.option));\n  },\n  setReadOnly: function (properties) {// clazzUtil.setReadOnly(this, properties);\n  },\n  // If path is null/undefined, return null/undefined.\n  parsePath: function (path) {\n    if (typeof path === 'string') {\n      path = path.split('.');\n    }\n\n    return path;\n  },\n\n  /**\n   * @param {Function} getParentMethod\n   *        param {Array.<string>|string} path\n   *        return {module:echarts/model/Model}\n   */\n  customizeGetParent: function (getParentMethod) {\n    inner(this).getParent = getParentMethod;\n  },\n  isAnimationEnabled: function () {\n    if (!env.node) {\n      if (this.option.animation != null) {\n        return !!this.option.animation;\n      } else if (this.parentModel) {\n        return this.parentModel.isAnimationEnabled();\n      }\n    }\n  }\n};\n\nfunction doGet(obj, pathArr, parentModel) {\n  for (var i = 0; i < pathArr.length; i++) {\n    // Ignore empty\n    if (!pathArr[i]) {\n      continue;\n    } // obj could be number/string/... (like 0)\n\n\n    obj = obj && typeof obj === 'object' ? obj[pathArr[i]] : null;\n\n    if (obj == null) {\n      break;\n    }\n  }\n\n  if (obj == null && parentModel) {\n    obj = parentModel.get(pathArr);\n  }\n\n  return obj;\n} // `path` can be null/undefined\n\n\nfunction getParent(model, path) {\n  var getParentMethod = inner(model).getParent;\n  return getParentMethod ? getParentMethod.call(model, path) : model.parentModel;\n} // Enable Model.extend.\n\n\nenableClassExtend(Model);\nenableClassCheck(Model);\nmixin(Model, lineStyleMixin);\nmixin(Model, areaStyleMixin);\nmixin(Model, textStyleMixin);\nmixin(Model, itemStyleMixin);\nvar _default = Model;\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 modelUtil = require(\"../util/model\");\n\nvar ComponentModel = require(\"./Component\");\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 * ECharts option manager\n *\n * @module {echarts/model/OptionManager}\n */\nvar each = zrUtil.each;\nvar clone = zrUtil.clone;\nvar map = zrUtil.map;\nvar merge = zrUtil.merge;\nvar QUERY_REG = /^(min|max)?(.+)$/;\n/**\n * TERM EXPLANATIONS:\n *\n * [option]:\n *\n *     An object that contains definitions of components. For example:\n *     var option = {\n *         title: {...},\n *         legend: {...},\n *         visualMap: {...},\n *         series: [\n *             {data: [...]},\n *             {data: [...]},\n *             ...\n *         ]\n *     };\n *\n * [rawOption]:\n *\n *     An object input to echarts.setOption. 'rawOption' may be an\n *     'option', or may be an object contains multi-options. For example:\n *     var option = {\n *         baseOption: {\n *             title: {...},\n *             legend: {...},\n *             series: [\n *                 {data: [...]},\n *                 {data: [...]},\n *                 ...\n *             ]\n *         },\n *         timeline: {...},\n *         options: [\n *             {title: {...}, series: {data: [...]}},\n *             {title: {...}, series: {data: [...]}},\n *             ...\n *         ],\n *         media: [\n *             {\n *                 query: {maxWidth: 320},\n *                 option: {series: {x: 20}, visualMap: {show: false}}\n *             },\n *             {\n *                 query: {minWidth: 320, maxWidth: 720},\n *                 option: {series: {x: 500}, visualMap: {show: true}}\n *             },\n *             {\n *                 option: {series: {x: 1200}, visualMap: {show: true}}\n *             }\n *         ]\n *     };\n *\n * @alias module:echarts/model/OptionManager\n * @param {module:echarts/ExtensionAPI} api\n */\n\nfunction OptionManager(api) {\n  /**\n   * @private\n   * @type {module:echarts/ExtensionAPI}\n   */\n  this._api = api;\n  /**\n   * @private\n   * @type {Array.<number>}\n   */\n\n  this._timelineOptions = [];\n  /**\n   * @private\n   * @type {Array.<Object>}\n   */\n\n  this._mediaList = [];\n  /**\n   * @private\n   * @type {Object}\n   */\n\n  this._mediaDefault;\n  /**\n   * -1, means default.\n   * empty means no media.\n   * @private\n   * @type {Array.<number>}\n   */\n\n  this._currentMediaIndices = [];\n  /**\n   * @private\n   * @type {Object}\n   */\n\n  this._optionBackup;\n  /**\n   * @private\n   * @type {Object}\n   */\n\n  this._newBaseOption;\n} // timeline.notMerge is not supported in ec3. Firstly there is rearly\n// case that notMerge is needed. Secondly supporting 'notMerge' requires\n// rawOption cloned and backuped when timeline changed, which does no\n// good to performance. What's more, that both timeline and setOption\n// method supply 'notMerge' brings complex and some problems.\n// Consider this case:\n// (step1) chart.setOption({timeline: {notMerge: false}, ...}, false);\n// (step2) chart.setOption({timeline: {notMerge: true}, ...}, false);\n\n\nOptionManager.prototype = {\n  constructor: OptionManager,\n\n  /**\n   * @public\n   * @param {Object} rawOption Raw option.\n   * @param {module:echarts/model/Global} ecModel\n   * @param {Array.<Function>} optionPreprocessorFuncs\n   * @return {Object} Init option\n   */\n  setOption: function (rawOption, optionPreprocessorFuncs) {\n    if (rawOption) {\n      // That set dat primitive is dangerous if user reuse the data when setOption again.\n      zrUtil.each(modelUtil.normalizeToArray(rawOption.series), function (series) {\n        series && series.data && zrUtil.isTypedArray(series.data) && zrUtil.setAsPrimitive(series.data);\n      });\n    } // Caution: some series modify option data, if do not clone,\n    // it should ensure that the repeat modify correctly\n    // (create a new object when modify itself).\n\n\n    rawOption = clone(rawOption); // FIXME\n    // 如果 timeline options 或者 media 中设置了某个属性,而baseOption中没有设置,则进行警告。\n\n    var oldOptionBackup = this._optionBackup;\n    var newParsedOption = parseRawOption.call(this, rawOption, optionPreprocessorFuncs, !oldOptionBackup);\n    this._newBaseOption = newParsedOption.baseOption; // For setOption at second time (using merge mode);\n\n    if (oldOptionBackup) {\n      // Only baseOption can be merged.\n      mergeOption(oldOptionBackup.baseOption, newParsedOption.baseOption); // For simplicity, timeline options and media options do not support merge,\n      // that is, if you `setOption` twice and both has timeline options, the latter\n      // timeline opitons will not be merged to the formers, but just substitude them.\n\n      if (newParsedOption.timelineOptions.length) {\n        oldOptionBackup.timelineOptions = newParsedOption.timelineOptions;\n      }\n\n      if (newParsedOption.mediaList.length) {\n        oldOptionBackup.mediaList = newParsedOption.mediaList;\n      }\n\n      if (newParsedOption.mediaDefault) {\n        oldOptionBackup.mediaDefault = newParsedOption.mediaDefault;\n      }\n    } else {\n      this._optionBackup = newParsedOption;\n    }\n  },\n\n  /**\n   * @param {boolean} isRecreate\n   * @return {Object}\n   */\n  mountOption: function (isRecreate) {\n    var optionBackup = this._optionBackup; // TODO\n    // 如果没有reset功能则不clone。\n\n    this._timelineOptions = map(optionBackup.timelineOptions, clone);\n    this._mediaList = map(optionBackup.mediaList, clone);\n    this._mediaDefault = clone(optionBackup.mediaDefault);\n    this._currentMediaIndices = [];\n    return clone(isRecreate // this._optionBackup.baseOption, which is created at the first `setOption`\n    // called, and is merged into every new option by inner method `mergeOption`\n    // each time `setOption` called, can be only used in `isRecreate`, because\n    // its reliability is under suspicion. In other cases option merge is\n    // performed by `model.mergeOption`.\n    ? optionBackup.baseOption : this._newBaseOption);\n  },\n\n  /**\n   * @param {module:echarts/model/Global} ecModel\n   * @return {Object}\n   */\n  getTimelineOption: function (ecModel) {\n    var option;\n    var timelineOptions = this._timelineOptions;\n\n    if (timelineOptions.length) {\n      // getTimelineOption can only be called after ecModel inited,\n      // so we can get currentIndex from timelineModel.\n      var timelineModel = ecModel.getComponent('timeline');\n\n      if (timelineModel) {\n        option = clone(timelineOptions[timelineModel.getCurrentIndex()], true);\n      }\n    }\n\n    return option;\n  },\n\n  /**\n   * @param {module:echarts/model/Global} ecModel\n   * @return {Array.<Object>}\n   */\n  getMediaOption: function (ecModel) {\n    var ecWidth = this._api.getWidth();\n\n    var ecHeight = this._api.getHeight();\n\n    var mediaList = this._mediaList;\n    var mediaDefault = this._mediaDefault;\n    var indices = [];\n    var result = []; // No media defined.\n\n    if (!mediaList.length && !mediaDefault) {\n      return result;\n    } // Multi media may be applied, the latter defined media has higher priority.\n\n\n    for (var i = 0, len = mediaList.length; i < len; i++) {\n      if (applyMediaQuery(mediaList[i].query, ecWidth, ecHeight)) {\n        indices.push(i);\n      }\n    } // FIXME\n    // 是否mediaDefault应该强制用户设置,否则可能修改不能回归。\n\n\n    if (!indices.length && mediaDefault) {\n      indices = [-1];\n    }\n\n    if (indices.length && !indicesEquals(indices, this._currentMediaIndices)) {\n      result = map(indices, function (index) {\n        return clone(index === -1 ? mediaDefault.option : mediaList[index].option);\n      });\n    } // Otherwise return nothing.\n\n\n    this._currentMediaIndices = indices;\n    return result;\n  }\n};\n\nfunction parseRawOption(rawOption, optionPreprocessorFuncs, isNew) {\n  var timelineOptions = [];\n  var mediaList = [];\n  var mediaDefault;\n  var baseOption; // Compatible with ec2.\n\n  var timelineOpt = rawOption.timeline;\n\n  if (rawOption.baseOption) {\n    baseOption = rawOption.baseOption;\n  } // For timeline\n\n\n  if (timelineOpt || rawOption.options) {\n    baseOption = baseOption || {};\n    timelineOptions = (rawOption.options || []).slice();\n  } // For media query\n\n\n  if (rawOption.media) {\n    baseOption = baseOption || {};\n    var media = rawOption.media;\n    each(media, function (singleMedia) {\n      if (singleMedia && singleMedia.option) {\n        if (singleMedia.query) {\n          mediaList.push(singleMedia);\n        } else if (!mediaDefault) {\n          // Use the first media default.\n          mediaDefault = singleMedia;\n        }\n      }\n    });\n  } // For normal option\n\n\n  if (!baseOption) {\n    baseOption = rawOption;\n  } // Set timelineOpt to baseOption in ec3,\n  // which is convenient for merge option.\n\n\n  if (!baseOption.timeline) {\n    baseOption.timeline = timelineOpt;\n  } // Preprocess.\n\n\n  each([baseOption].concat(timelineOptions).concat(zrUtil.map(mediaList, function (media) {\n    return media.option;\n  })), function (option) {\n    each(optionPreprocessorFuncs, function (preProcess) {\n      preProcess(option, isNew);\n    });\n  });\n  return {\n    baseOption: baseOption,\n    timelineOptions: timelineOptions,\n    mediaDefault: mediaDefault,\n    mediaList: mediaList\n  };\n}\n/**\n * @see <http://www.w3.org/TR/css3-mediaqueries/#media1>\n * Support: width, height, aspectRatio\n * Can use max or min as prefix.\n */\n\n\nfunction applyMediaQuery(query, ecWidth, ecHeight) {\n  var realMap = {\n    width: ecWidth,\n    height: ecHeight,\n    aspectratio: ecWidth / ecHeight // lowser case for convenientce.\n\n  };\n  var applicatable = true;\n  zrUtil.each(query, function (value, attr) {\n    var matched = attr.match(QUERY_REG);\n\n    if (!matched || !matched[1] || !matched[2]) {\n      return;\n    }\n\n    var operator = matched[1];\n    var realAttr = matched[2].toLowerCase();\n\n    if (!compare(realMap[realAttr], value, operator)) {\n      applicatable = false;\n    }\n  });\n  return applicatable;\n}\n\nfunction compare(real, expect, operator) {\n  if (operator === 'min') {\n    return real >= expect;\n  } else if (operator === 'max') {\n    return real <= expect;\n  } else {\n    // Equals\n    return real === expect;\n  }\n}\n\nfunction indicesEquals(indices1, indices2) {\n  // indices is always order by asc and has only finite number.\n  return indices1.join(',') === indices2.join(',');\n}\n/**\n * Consider case:\n * `chart.setOption(opt1);`\n * Then user do some interaction like dataZoom, dataView changing.\n * `chart.setOption(opt2);`\n * Then user press 'reset button' in toolbox.\n *\n * After doing that all of the interaction effects should be reset, the\n * chart should be the same as the result of invoke\n * `chart.setOption(opt1); chart.setOption(opt2);`.\n *\n * Although it is not able ensure that\n * `chart.setOption(opt1); chart.setOption(opt2);` is equivalents to\n * `chart.setOption(merge(opt1, opt2));` exactly,\n * this might be the only simple way to implement that feature.\n *\n * MEMO: We've considered some other approaches:\n * 1. Each model handle its self restoration but not uniform treatment.\n *     (Too complex in logic and error-prone)\n * 2. Use a shadow ecModel. (Performace expensive)\n */\n\n\nfunction mergeOption(oldOption, newOption) {\n  newOption = newOption || {};\n  each(newOption, function (newCptOpt, mainType) {\n    if (newCptOpt == null) {\n      return;\n    }\n\n    var oldCptOpt = oldOption[mainType];\n\n    if (!ComponentModel.hasClass(mainType)) {\n      oldOption[mainType] = merge(oldCptOpt, newCptOpt, true);\n    } else {\n      newCptOpt = modelUtil.normalizeToArray(newCptOpt);\n      oldCptOpt = modelUtil.normalizeToArray(oldCptOpt);\n      var mapResult = modelUtil.mappingToExists(oldCptOpt, newCptOpt);\n      oldOption[mainType] = map(mapResult, function (item) {\n        return item.option && item.exist ? merge(item.exist, item.option, true) : item.exist || item.option;\n      });\n    }\n  });\n}\n\nvar _default = OptionManager;\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 _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar _format = require(\"../util/format\");\n\nvar formatTime = _format.formatTime;\nvar encodeHTML = _format.encodeHTML;\nvar addCommas = _format.addCommas;\nvar getTooltipMarker = _format.getTooltipMarker;\n\nvar modelUtil = require(\"../util/model\");\n\nvar ComponentModel = require(\"./Component\");\n\nvar colorPaletteMixin = require(\"./mixin/colorPalette\");\n\nvar dataFormatMixin = require(\"../model/mixin/dataFormat\");\n\nvar _layout = require(\"../util/layout\");\n\nvar getLayoutParams = _layout.getLayoutParams;\nvar mergeLayoutParam = _layout.mergeLayoutParam;\n\nvar _task = require(\"../stream/task\");\n\nvar createTask = _task.createTask;\n\nvar _sourceHelper = require(\"../data/helper/sourceHelper\");\n\nvar prepareSource = _sourceHelper.prepareSource;\nvar getSource = _sourceHelper.getSource;\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*/\nvar inner = modelUtil.makeInner();\nvar SeriesModel = ComponentModel.extend({\n  type: 'series.__base__',\n\n  /**\n   * @readOnly\n   */\n  seriesIndex: 0,\n  // coodinateSystem will be injected in the echarts/CoordinateSystem\n  coordinateSystem: null,\n\n  /**\n   * @type {Object}\n   * @protected\n   */\n  defaultOption: null,\n\n  /**\n   * legend visual provider to the legend component\n   * @type {Object}\n   */\n  // PENDING\n  legendVisualProvider: null,\n\n  /**\n   * Access path of color for visual\n   */\n  visualColorAccessPath: 'itemStyle.color',\n\n  /**\n   * Access path of borderColor for visual\n   */\n  visualBorderColorAccessPath: 'itemStyle.borderColor',\n\n  /**\n   * Support merge layout params.\n   * Only support 'box' now (left/right/top/bottom/width/height).\n   * @type {string|Object} Object can be {ignoreSize: true}\n   * @readOnly\n   */\n  layoutMode: null,\n  init: function (option, parentModel, ecModel, extraOpt) {\n    /**\n     * @type {number}\n     * @readOnly\n     */\n    this.seriesIndex = this.componentIndex;\n    this.dataTask = createTask({\n      count: dataTaskCount,\n      reset: dataTaskReset\n    });\n    this.dataTask.context = {\n      model: this\n    };\n    this.mergeDefaultAndTheme(option, ecModel);\n    prepareSource(this);\n    var data = this.getInitialData(option, ecModel);\n    wrapData(data, this);\n    this.dataTask.context.data = data;\n\n    /**\n     * @type {module:echarts/data/List|module:echarts/data/Tree|module:echarts/data/Graph}\n     * @private\n     */\n    inner(this).dataBeforeProcessed = data; // If we reverse the order (make data firstly, and then make\n    // dataBeforeProcessed by cloneShallow), cloneShallow will\n    // cause data.graph.data !== data when using\n    // module:echarts/data/Graph or module:echarts/data/Tree.\n    // See module:echarts/data/helper/linkList\n    // Theoretically, it is unreasonable to call `seriesModel.getData()` in the model\n    // init or merge stage, because the data can be restored. So we do not `restoreData`\n    // and `setData` here, which forbids calling `seriesModel.getData()` in this stage.\n    // Call `seriesModel.getRawData()` instead.\n    // this.restoreData();\n\n    autoSeriesName(this);\n  },\n\n  /**\n   * Util for merge default and theme to option\n   * @param  {Object} option\n   * @param  {module:echarts/model/Global} ecModel\n   */\n  mergeDefaultAndTheme: function (option, ecModel) {\n    var layoutMode = this.layoutMode;\n    var inputPositionParams = layoutMode ? getLayoutParams(option) : {}; // Backward compat: using subType on theme.\n    // But if name duplicate between series subType\n    // (for example: parallel) add component mainType,\n    // add suffix 'Series'.\n\n    var themeSubType = this.subType;\n\n    if (ComponentModel.hasClass(themeSubType)) {\n      themeSubType += 'Series';\n    }\n\n    zrUtil.merge(option, ecModel.getTheme().get(this.subType));\n    zrUtil.merge(option, this.getDefaultOption()); // Default label emphasis `show`\n\n    modelUtil.defaultEmphasis(option, 'label', ['show']);\n    this.fillDataTextStyle(option.data);\n\n    if (layoutMode) {\n      mergeLayoutParam(option, inputPositionParams, layoutMode);\n    }\n  },\n  mergeOption: function (newSeriesOption, ecModel) {\n    // this.settingTask.dirty();\n    newSeriesOption = zrUtil.merge(this.option, newSeriesOption, true);\n    this.fillDataTextStyle(newSeriesOption.data);\n    var layoutMode = this.layoutMode;\n\n    if (layoutMode) {\n      mergeLayoutParam(this.option, newSeriesOption, layoutMode);\n    }\n\n    prepareSource(this);\n    var data = this.getInitialData(newSeriesOption, ecModel);\n    wrapData(data, this);\n    this.dataTask.dirty();\n    this.dataTask.context.data = data;\n    inner(this).dataBeforeProcessed = data;\n    autoSeriesName(this);\n  },\n  fillDataTextStyle: function (data) {\n    // Default data label emphasis `show`\n    // FIXME Tree structure data ?\n    // FIXME Performance ?\n    if (data && !zrUtil.isTypedArray(data)) {\n      var props = ['show'];\n\n      for (var i = 0; i < data.length; i++) {\n        if (data[i] && data[i].label) {\n          modelUtil.defaultEmphasis(data[i], 'label', props);\n        }\n      }\n    }\n  },\n\n  /**\n   * Init a data structure from data related option in series\n   * Must be overwritten\n   */\n  getInitialData: function () {},\n\n  /**\n   * Append data to list\n   * @param {Object} params\n   * @param {Array|TypedArray} params.data\n   */\n  appendData: function (params) {\n    // FIXME ???\n    // (1) If data from dataset, forbidden append.\n    // (2) support append data of dataset.\n    var data = this.getRawData();\n    data.appendData(params.data);\n  },\n\n  /**\n   * Consider some method like `filter`, `map` need make new data,\n   * We should make sure that `seriesModel.getData()` get correct\n   * data in the stream procedure. So we fetch data from upstream\n   * each time `task.perform` called.\n   * @param {string} [dataType]\n   * @return {module:echarts/data/List}\n   */\n  getData: function (dataType) {\n    var task = getCurrentTask(this);\n\n    if (task) {\n      var data = task.context.data;\n      return dataType == null ? data : data.getLinkedData(dataType);\n    } else {\n      // When series is not alive (that may happen when click toolbox\n      // restore or setOption with not merge mode), series data may\n      // be still need to judge animation or something when graphic\n      // elements want to know whether fade out.\n      return inner(this).data;\n    }\n  },\n\n  /**\n   * @param {module:echarts/data/List} data\n   */\n  setData: function (data) {\n    var task = getCurrentTask(this);\n\n    if (task) {\n      var context = task.context; // Consider case: filter, data sample.\n\n      if (context.data !== data && task.modifyOutputEnd) {\n        task.setOutputEnd(data.count());\n      }\n\n      context.outputData = data; // Caution: setData should update context.data,\n      // Because getData may be called multiply in a\n      // single stage and expect to get the data just\n      // set. (For example, AxisProxy, x y both call\n      // getData and setDate sequentially).\n      // So the context.data should be fetched from\n      // upstream each time when a stage starts to be\n      // performed.\n\n      if (task !== this.dataTask) {\n        context.data = data;\n      }\n    }\n\n    inner(this).data = data;\n  },\n\n  /**\n   * @see {module:echarts/data/helper/sourceHelper#getSource}\n   * @return {module:echarts/data/Source} source\n   */\n  getSource: function () {\n    return getSource(this);\n  },\n\n  /**\n   * Get data before processed\n   * @return {module:echarts/data/List}\n   */\n  getRawData: function () {\n    return inner(this).dataBeforeProcessed;\n  },\n\n  /**\n   * Get base axis if has coordinate system and has axis.\n   * By default use coordSys.getBaseAxis();\n   * Can be overrided for some chart.\n   * @return {type} description\n   */\n  getBaseAxis: function () {\n    var coordSys = this.coordinateSystem;\n    return coordSys && coordSys.getBaseAxis && coordSys.getBaseAxis();\n  },\n  // FIXME\n\n  /**\n   * Default tooltip formatter\n   *\n   * @param {number} dataIndex\n   * @param {boolean} [multipleSeries=false]\n   * @param {number} [dataType]\n   * @param {string} [renderMode='html'] valid values: 'html' and 'richText'.\n   *                                     'html' is used for rendering tooltip in extra DOM form, and the result\n   *                                     string is used as DOM HTML content.\n   *                                     'richText' is used for rendering tooltip in rich text form, for those where\n   *                                     DOM operation is not supported.\n   * @return {Object} formatted tooltip with `html` and `markers`\n   */\n  formatTooltip: function (dataIndex, multipleSeries, dataType, renderMode) {\n    var series = this;\n    renderMode = renderMode || 'html';\n    var newLine = renderMode === 'html' ? '<br/>' : '\\n';\n    var isRichText = renderMode === 'richText';\n    var markers = {};\n    var markerId = 0;\n\n    function formatArrayValue(value) {\n      // ??? TODO refactor these logic.\n      // check: category-no-encode-has-axis-data in dataset.html\n      var vertially = zrUtil.reduce(value, function (vertially, val, idx) {\n        var dimItem = data.getDimensionInfo(idx);\n        return vertially |= dimItem && dimItem.tooltip !== false && dimItem.displayName != null;\n      }, 0);\n      var result = [];\n      tooltipDims.length ? zrUtil.each(tooltipDims, function (dim) {\n        setEachItem(retrieveRawValue(data, dataIndex, dim), dim);\n      }) // By default, all dims is used on tooltip.\n      : zrUtil.each(value, setEachItem);\n\n      function setEachItem(val, dim) {\n        var dimInfo = data.getDimensionInfo(dim); // If `dimInfo.tooltip` is not set, show tooltip.\n\n        if (!dimInfo || dimInfo.otherDims.tooltip === false) {\n          return;\n        }\n\n        var dimType = dimInfo.type;\n        var markName = 'sub' + series.seriesIndex + 'at' + markerId;\n        var dimHead = getTooltipMarker({\n          color: color,\n          type: 'subItem',\n          renderMode: renderMode,\n          markerId: markName\n        });\n        var dimHeadStr = typeof dimHead === 'string' ? dimHead : dimHead.content;\n        var valStr = (vertially ? dimHeadStr + encodeHTML(dimInfo.displayName || '-') + ': ' : '') + // FIXME should not format time for raw data?\n        encodeHTML(dimType === 'ordinal' ? val + '' : dimType === 'time' ? multipleSeries ? '' : formatTime('yyyy/MM/dd hh:mm:ss', val) : addCommas(val));\n        valStr && result.push(valStr);\n\n        if (isRichText) {\n          markers[markName] = color;\n          ++markerId;\n        }\n      }\n\n      var newLine = vertially ? isRichText ? '\\n' : '<br/>' : '';\n      var content = newLine + result.join(newLine || ', ');\n      return {\n        renderMode: renderMode,\n        content: content,\n        style: markers\n      };\n    }\n\n    function formatSingleValue(val) {\n      // return encodeHTML(addCommas(val));\n      return {\n        renderMode: renderMode,\n        content: encodeHTML(addCommas(val)),\n        style: markers\n      };\n    }\n\n    var data = this.getData();\n    var tooltipDims = data.mapDimension('defaultedTooltip', true);\n    var tooltipDimLen = tooltipDims.length;\n    var value = this.getRawValue(dataIndex);\n    var isValueArr = zrUtil.isArray(value);\n    var color = data.getItemVisual(dataIndex, 'color');\n\n    if (zrUtil.isObject(color) && color.colorStops) {\n      color = (color.colorStops[0] || {}).color;\n    }\n\n    color = color || 'transparent'; // Complicated rule for pretty tooltip.\n\n    var formattedValue = tooltipDimLen > 1 || isValueArr && !tooltipDimLen ? formatArrayValue(value) : tooltipDimLen ? formatSingleValue(retrieveRawValue(data, dataIndex, tooltipDims[0])) : formatSingleValue(isValueArr ? value[0] : value);\n    var content = formattedValue.content;\n    var markName = series.seriesIndex + 'at' + markerId;\n    var colorEl = getTooltipMarker({\n      color: color,\n      type: 'item',\n      renderMode: renderMode,\n      markerId: markName\n    });\n    markers[markName] = color;\n    ++markerId;\n    var name = data.getName(dataIndex);\n    var seriesName = this.name;\n\n    if (!modelUtil.isNameSpecified(this)) {\n      seriesName = '';\n    }\n\n    seriesName = seriesName ? encodeHTML(seriesName) + (!multipleSeries ? newLine : ': ') : '';\n    var colorStr = typeof colorEl === 'string' ? colorEl : colorEl.content;\n    var html = !multipleSeries ? seriesName + colorStr + (name ? encodeHTML(name) + ': ' + content : content) : colorStr + seriesName + content;\n    return {\n      html: html,\n      markers: markers\n    };\n  },\n\n  /**\n   * @return {boolean}\n   */\n  isAnimationEnabled: function () {\n    if (env.node) {\n      return false;\n    }\n\n    var animationEnabled = this.getShallow('animation');\n\n    if (animationEnabled) {\n      if (this.getData().count() > this.getShallow('animationThreshold')) {\n        animationEnabled = false;\n      }\n    }\n\n    return animationEnabled;\n  },\n  restoreData: function () {\n    this.dataTask.dirty();\n  },\n  getColorFromPalette: function (name, scope, requestColorNum) {\n    var ecModel = this.ecModel; // PENDING\n\n    var color = colorPaletteMixin.getColorFromPalette.call(this, name, scope, requestColorNum);\n\n    if (!color) {\n      color = ecModel.getColorFromPalette(name, scope, requestColorNum);\n    }\n\n    return color;\n  },\n\n  /**\n   * Use `data.mapDimension(coordDim, true)` instead.\n   * @deprecated\n   */\n  coordDimToDataDim: function (coordDim) {\n    return this.getRawData().mapDimension(coordDim, true);\n  },\n\n  /**\n   * Get progressive rendering count each step\n   * @return {number}\n   */\n  getProgressive: function () {\n    return this.get('progressive');\n  },\n\n  /**\n   * Get progressive rendering count each step\n   * @return {number}\n   */\n  getProgressiveThreshold: function () {\n    return this.get('progressiveThreshold');\n  },\n\n  /**\n   * Get data indices for show tooltip content. See tooltip.\n   * @abstract\n   * @param {Array.<string>|string} dim\n   * @param {Array.<number>} value\n   * @param {module:echarts/coord/single/SingleAxis} baseAxis\n   * @return {Object} {dataIndices, nestestValue}.\n   */\n  getAxisTooltipData: null,\n\n  /**\n   * See tooltip.\n   * @abstract\n   * @param {number} dataIndex\n   * @return {Array.<number>} Point of tooltip. null/undefined can be returned.\n   */\n  getTooltipPosition: null,\n\n  /**\n   * @see {module:echarts/stream/Scheduler}\n   */\n  pipeTask: null,\n\n  /**\n   * Convinient for override in extended class.\n   * @protected\n   * @type {Function}\n   */\n  preventIncremental: null,\n\n  /**\n   * @public\n   * @readOnly\n   * @type {Object}\n   */\n  pipelineContext: null\n});\nzrUtil.mixin(SeriesModel, dataFormatMixin);\nzrUtil.mixin(SeriesModel, colorPaletteMixin);\n/**\n * MUST be called after `prepareSource` called\n * Here we need to make auto series, especially for auto legend. But we\n * do not modify series.name in option to avoid side effects.\n */\n\nfunction autoSeriesName(seriesModel) {\n  // User specified name has higher priority, otherwise it may cause\n  // series can not be queried unexpectedly.\n  var name = seriesModel.name;\n\n  if (!modelUtil.isNameSpecified(seriesModel)) {\n    seriesModel.name = getSeriesAutoName(seriesModel) || name;\n  }\n}\n\nfunction getSeriesAutoName(seriesModel) {\n  var data = seriesModel.getRawData();\n  var dataDims = data.mapDimension('seriesName', true);\n  var nameArr = [];\n  zrUtil.each(dataDims, function (dataDim) {\n    var dimInfo = data.getDimensionInfo(dataDim);\n    dimInfo.displayName && nameArr.push(dimInfo.displayName);\n  });\n  return nameArr.join(' ');\n}\n\nfunction dataTaskCount(context) {\n  return context.model.getRawData().count();\n}\n\nfunction dataTaskReset(context) {\n  var seriesModel = context.model;\n  seriesModel.setData(seriesModel.getRawData().cloneShallow());\n  return dataTaskProgress;\n}\n\nfunction dataTaskProgress(param, context) {\n  // Avoid repead cloneShallow when data just created in reset.\n  if (context.outputData && param.end > context.outputData.count()) {\n    context.model.getRawData().cloneShallow(context.outputData);\n  }\n} // TODO refactor\n\n\nfunction wrapData(data, seriesModel) {\n  zrUtil.each(data.CHANGABLE_METHODS, function (methodName) {\n    data.wrapMethod(methodName, zrUtil.curry(onDataSelfChange, seriesModel));\n  });\n}\n\nfunction onDataSelfChange(seriesModel) {\n  var task = getCurrentTask(seriesModel);\n\n  if (task) {\n    // Consider case: filter, selectRange\n    task.setOutputEnd(this.count());\n  }\n}\n\nfunction getCurrentTask(seriesModel) {\n  var scheduler = (seriesModel.ecModel || {}).scheduler;\n  var pipeline = scheduler && scheduler.getPipeline(seriesModel.uid);\n\n  if (pipeline) {\n    // When pipline finished, the currrentTask keep the last\n    // task (renderTask).\n    var task = pipeline.currentTask;\n\n    if (task) {\n      var agentStubMap = task.agentStubMap;\n\n      if (agentStubMap) {\n        task = agentStubMap.get(seriesModel.uid);\n      }\n    }\n\n    return task;\n  }\n}\n\nvar _default = SeriesModel;\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\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 platform = ''; // Navigator not exists in node\n\nif (typeof navigator !== 'undefined') {\n  platform = navigator.platform || '';\n}\n\nvar _default = {\n  // backgroundColor: 'rgba(0,0,0,0)',\n  // https://dribbble.com/shots/1065960-Infographic-Pie-chart-visualization\n  // color: ['#5793f3', '#d14a61', '#fd9c35', '#675bba', '#fec42c', '#dd4444', '#d4df5a', '#cd4870'],\n  // Light colors:\n  // color: ['#bcd3bb', '#e88f70', '#edc1a5', '#9dc5c8', '#e1e8c8', '#7b7c68', '#e5b5b5', '#f0b489', '#928ea8', '#bda29a'],\n  // color: ['#cc5664', '#9bd6ec', '#ea946e', '#8acaaa', '#f1ec64', '#ee8686', '#a48dc1', '#5da6bc', '#b9dcae'],\n  // Dark colors:\n  color: ['#c23531', '#2f4554', '#61a0a8', '#d48265', '#91c7ae', '#749f83', '#ca8622', '#bda29a', '#6e7074', '#546570', '#c4ccd3'],\n  gradientColor: ['#f6efa6', '#d88273', '#bf444c'],\n  // If xAxis and yAxis declared, grid is created by default.\n  // grid: {},\n  textStyle: {\n    // color: '#000',\n    // decoration: 'none',\n    // PENDING\n    fontFamily: platform.match(/^Win/) ? 'Microsoft YaHei' : 'sans-serif',\n    // fontFamily: 'Arial, Verdana, sans-serif',\n    fontSize: 12,\n    fontStyle: 'normal',\n    fontWeight: 'normal'\n  },\n  // http://blogs.adobe.com/webplatform/2014/02/24/using-blend-modes-in-html-canvas/\n  // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation\n  // Default is source-over\n  blendMode: null,\n  animation: 'auto',\n  animationDuration: 1000,\n  animationDurationUpdate: 300,\n  animationEasing: 'exponentialOut',\n  animationEasingUpdate: 'cubicOut',\n  animationThreshold: 2000,\n  // Configuration for progressive/incremental rendering\n  progressiveThreshold: 3000,\n  progressive: 400,\n  // Threshold of if use single hover layer to optimize.\n  // It is recommended that `hoverLayerThreshold` is equivalent to or less than\n  // `progressiveThreshold`, otherwise hover will cause restart of progressive,\n  // which is unexpected.\n  // see example <echarts/test/heatmap-large.html>.\n  hoverLayerThreshold: 3000,\n  // See: module:echarts/scale/Time\n  useUTC: false\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 makeStyleMapper = require(\"./makeStyleMapper\");\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 getAreaStyle = makeStyleMapper([['fill', 'color'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['opacity'], ['shadowColor']]);\nvar _default = {\n  getAreaStyle: function (excludes, includes) {\n    return getAreaStyle(this, excludes, includes);\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\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  getBoxLayoutParams: function () {\n    return {\n      left: this.get('left'),\n      top: this.get('top'),\n      right: this.get('right'),\n      bottom: this.get('bottom'),\n      width: this.get('width'),\n      height: this.get('height')\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 _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\nvar normalizeToArray = _model.normalizeToArray;\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 = makeInner();\n\nfunction getNearestColorPalette(colors, requestColorNum) {\n  var paletteNum = colors.length; // TODO colors must be in order\n\n  for (var i = 0; i < paletteNum; i++) {\n    if (colors[i].length > requestColorNum) {\n      return colors[i];\n    }\n  }\n\n  return colors[paletteNum - 1];\n}\n\nvar _default = {\n  clearColorPalette: function () {\n    inner(this).colorIdx = 0;\n    inner(this).colorNameMap = {};\n  },\n\n  /**\n   * @param {string} name MUST NOT be null/undefined. Otherwise call this function\n   *                 twise with the same parameters will get different result.\n   * @param {Object} [scope=this]\n   * @param {Object} [requestColorNum]\n   * @return {string} color string.\n   */\n  getColorFromPalette: function (name, scope, requestColorNum) {\n    scope = scope || this;\n    var scopeFields = inner(scope);\n    var colorIdx = scopeFields.colorIdx || 0;\n    var colorNameMap = scopeFields.colorNameMap = scopeFields.colorNameMap || {}; // Use `hasOwnProperty` to avoid conflict with Object.prototype.\n\n    if (colorNameMap.hasOwnProperty(name)) {\n      return colorNameMap[name];\n    }\n\n    var defaultColorPalette = normalizeToArray(this.get('color', true));\n    var layeredColorPalette = this.get('colorLayer', true);\n    var colorPalette = requestColorNum == null || !layeredColorPalette ? defaultColorPalette : getNearestColorPalette(layeredColorPalette, requestColorNum); // In case can't find in layered color palette.\n\n    colorPalette = colorPalette || defaultColorPalette;\n\n    if (!colorPalette || !colorPalette.length) {\n      return;\n    }\n\n    var color = colorPalette[colorIdx];\n\n    if (name) {\n      colorNameMap[name] = color;\n    }\n\n    scopeFields.colorIdx = (colorIdx + 1) % colorPalette.length;\n    return color;\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 _dataProvider = require(\"../../data/helper/dataProvider\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\nvar _format = require(\"../../util/format\");\n\nvar getTooltipMarker = _format.getTooltipMarker;\nvar formatTpl = _format.formatTpl;\n\nvar _model = require(\"../../util/model\");\n\nvar getTooltipRenderMode = _model.getTooltipRenderMode;\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 DIMENSION_LABEL_REG = /\\{@(.+?)\\}/g; // PENDING A little ugly\n\nvar _default = {\n  /**\n   * Get params for formatter\n   * @param {number} dataIndex\n   * @param {string} [dataType]\n   * @return {Object}\n   */\n  getDataParams: function (dataIndex, dataType) {\n    var data = this.getData(dataType);\n    var rawValue = this.getRawValue(dataIndex, dataType);\n    var rawDataIndex = data.getRawIndex(dataIndex);\n    var name = data.getName(dataIndex);\n    var itemOpt = data.getRawDataItem(dataIndex);\n    var color = data.getItemVisual(dataIndex, 'color');\n    var borderColor = data.getItemVisual(dataIndex, 'borderColor');\n    var tooltipModel = this.ecModel.getComponent('tooltip');\n    var renderModeOption = tooltipModel && tooltipModel.get('renderMode');\n    var renderMode = getTooltipRenderMode(renderModeOption);\n    var mainType = this.mainType;\n    var isSeries = mainType === 'series';\n    var userOutput = data.userOutput;\n    return {\n      componentType: mainType,\n      componentSubType: this.subType,\n      componentIndex: this.componentIndex,\n      seriesType: isSeries ? this.subType : null,\n      seriesIndex: this.seriesIndex,\n      seriesId: isSeries ? this.id : null,\n      seriesName: isSeries ? this.name : null,\n      name: name,\n      dataIndex: rawDataIndex,\n      data: itemOpt,\n      dataType: dataType,\n      value: rawValue,\n      color: color,\n      borderColor: borderColor,\n      dimensionNames: userOutput ? userOutput.dimensionNames : null,\n      encode: userOutput ? userOutput.encode : null,\n      marker: getTooltipMarker({\n        color: color,\n        renderMode: renderMode\n      }),\n      // Param name list for mapping `a`, `b`, `c`, `d`, `e`\n      $vars: ['seriesName', 'name', 'value']\n    };\n  },\n\n  /**\n   * Format label\n   * @param {number} dataIndex\n   * @param {string} [status='normal'] 'normal' or 'emphasis'\n   * @param {string} [dataType]\n   * @param {number} [dimIndex] Only used in some chart that\n   *        use formatter in different dimensions, like radar.\n   * @param {string} [labelProp='label']\n   * @return {string} If not formatter, return null/undefined\n   */\n  getFormattedLabel: function (dataIndex, status, dataType, dimIndex, labelProp) {\n    status = status || 'normal';\n    var data = this.getData(dataType);\n    var itemModel = data.getItemModel(dataIndex);\n    var params = this.getDataParams(dataIndex, dataType);\n\n    if (dimIndex != null && params.value instanceof Array) {\n      params.value = params.value[dimIndex];\n    }\n\n    var formatter = itemModel.get(status === 'normal' ? [labelProp || 'label', 'formatter'] : [status, labelProp || 'label', 'formatter']);\n\n    if (typeof formatter === 'function') {\n      params.status = status;\n      params.dimensionIndex = dimIndex;\n      return formatter(params);\n    } else if (typeof formatter === 'string') {\n      var str = formatTpl(formatter, params); // Support 'aaa{@[3]}bbb{@product}ccc'.\n      // Do not support '}' in dim name util have to.\n\n      return str.replace(DIMENSION_LABEL_REG, function (origin, dim) {\n        var len = dim.length;\n\n        if (dim.charAt(0) === '[' && dim.charAt(len - 1) === ']') {\n          dim = +dim.slice(1, len - 1); // Also: '[]' => 0\n        }\n\n        return retrieveRawValue(data, dataIndex, dim);\n      });\n    }\n  },\n\n  /**\n   * Get raw value in option\n   * @param {number} idx\n   * @param {string} [dataType]\n   * @return {Array|number|string}\n   */\n  getRawValue: function (idx, dataType) {\n    return retrieveRawValue(this.getData(dataType), idx);\n  },\n\n  /**\n   * Should be implemented.\n   * @param {number} dataIndex\n   * @param {boolean} [multipleSeries=false]\n   * @param {number} [dataType]\n   * @return {string} tooltip string\n   */\n  formatTooltip: function () {// Empty function\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 makeStyleMapper = require(\"./makeStyleMapper\");\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 getItemStyle = makeStyleMapper([['fill', 'color'], ['stroke', 'borderColor'], ['lineWidth', 'borderWidth'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor'], ['textPosition'], ['textAlign']]);\nvar _default = {\n  getItemStyle: function (excludes, includes) {\n    var style = getItemStyle(this, excludes, includes);\n    var lineDash = this.getBorderLineDash();\n    lineDash && (style.lineDash = lineDash);\n    return style;\n  },\n  getBorderLineDash: function () {\n    var lineType = this.get('borderType');\n    return lineType === 'solid' || lineType == null ? null : lineType === 'dashed' ? [5, 5] : [1, 1];\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 makeStyleMapper = require(\"./makeStyleMapper\");\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 getLineStyle = makeStyleMapper([['lineWidth', 'width'], ['stroke', 'color'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor']]);\nvar _default = {\n  getLineStyle: function (excludes) {\n    var style = getLineStyle(this, excludes); // Always set lineDash whether dashed, otherwise we can not\n    // erase the previous style when assigning to el.style.\n\n    style.lineDash = this.getLineDash(style.lineWidth);\n    return style;\n  },\n  getLineDash: function (lineWidth) {\n    if (lineWidth == null) {\n      lineWidth = 1;\n    }\n\n    var lineType = this.get('type');\n    var dotSize = Math.max(lineWidth, 2);\n    var dashSize = lineWidth * 4;\n    return lineType === 'solid' || lineType == null ? // Use `false` but not `null` for the solid line here, because `null` might be\n    // ignored when assigning to `el.style`. e.g., when setting `lineStyle.type` as\n    // `'dashed'` and `emphasis.lineStyle.type` as `'solid'` in graph series, the\n    // `lineDash` gotten form the latter one is not able to erase that from the former\n    // one if using `null` here according to the emhpsis strategy in `util/graphic.js`.\n    false : lineType === 'dashed' ? [dashSize, dashSize] : [dotSize, dotSize];\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\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// TODO Parse shadow style\n// TODO Only shallow path support\nfunction _default(properties) {\n  // Normalize\n  for (var i = 0; i < properties.length; i++) {\n    if (!properties[i][1]) {\n      properties[i][1] = properties[i][0];\n    }\n  }\n\n  return function (model, excludes, includes) {\n    var style = {};\n\n    for (var i = 0; i < properties.length; i++) {\n      var propName = properties[i][1];\n\n      if (excludes && zrUtil.indexOf(excludes, propName) >= 0 || includes && zrUtil.indexOf(includes, propName) < 0) {\n        continue;\n      }\n\n      var val = model.getShallow(propName);\n\n      if (val != null) {\n        style[properties[i][0]] = val;\n      }\n    }\n\n    return style;\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 textContain = require(\"zrender/lib/contain/text\");\n\nvar graphicUtil = require(\"../../util/graphic\");\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 PATH_COLOR = ['textStyle', 'color'];\nvar _default = {\n  /**\n   * Get color property or get color from option.textStyle.color\n   * @param {boolean} [isEmphasis]\n   * @return {string}\n   */\n  getTextColor: function (isEmphasis) {\n    var ecModel = this.ecModel;\n    return this.getShallow('color') || (!isEmphasis && ecModel ? ecModel.get(PATH_COLOR) : null);\n  },\n\n  /**\n   * Create font string from fontStyle, fontWeight, fontSize, fontFamily\n   * @return {string}\n   */\n  getFont: function () {\n    return graphicUtil.getFont({\n      fontStyle: this.getShallow('fontStyle'),\n      fontWeight: this.getShallow('fontWeight'),\n      fontSize: this.getShallow('fontSize'),\n      fontFamily: this.getShallow('fontFamily')\n    }, this.ecModel);\n  },\n  getTextRect: function (text) {\n    return textContain.getBoundingRect(text, this.getFont(), this.getShallow('align'), this.getShallow('verticalAlign') || this.getShallow('baseline'), this.getShallow('padding'), this.getShallow('lineHeight'), this.getShallow('rich'), this.getShallow('truncateText'));\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 _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar retrieve = _util.retrieve;\nvar each = _util.each;\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 * Helper for model references.\n * There are many manners to refer axis/coordSys.\n */\n// TODO\n// merge relevant logic to this file?\n// check: \"modelHelper\" of tooltip and \"BrushTargetManager\".\n\n/**\n * @class\n * For example:\n * {\n *     coordSysName: 'cartesian2d',\n *     coordSysDims: ['x', 'y', ...],\n *     axisMap: HashMap({\n *         x: xAxisModel,\n *         y: yAxisModel\n *     }),\n *     categoryAxisMap: HashMap({\n *         x: xAxisModel,\n *         y: undefined\n *     }),\n *     // The index of the first category axis in `coordSysDims`.\n *     // `null/undefined` means no category axis exists.\n *     firstCategoryDimIndex: 1,\n *     // To replace user specified encode.\n * }\n */\nfunction CoordSysInfo(coordSysName) {\n  /**\n   * @type {string}\n   */\n  this.coordSysName = coordSysName;\n  /**\n   * @type {Array.<string>}\n   */\n\n  this.coordSysDims = [];\n  /**\n   * @type {module:zrender/core/util#HashMap}\n   */\n\n  this.axisMap = createHashMap();\n  /**\n   * @type {module:zrender/core/util#HashMap}\n   */\n\n  this.categoryAxisMap = createHashMap();\n  /**\n   * @type {number}\n   */\n\n  this.firstCategoryDimIndex = null;\n}\n/**\n * @return {module:model/referHelper#CoordSysInfo}\n */\n\n\nfunction getCoordSysInfoBySeries(seriesModel) {\n  var coordSysName = seriesModel.get('coordinateSystem');\n  var result = new CoordSysInfo(coordSysName);\n  var fetch = fetchers[coordSysName];\n\n  if (fetch) {\n    fetch(seriesModel, result, result.axisMap, result.categoryAxisMap);\n    return result;\n  }\n}\n\nvar fetchers = {\n  cartesian2d: function (seriesModel, result, axisMap, categoryAxisMap) {\n    var xAxisModel = seriesModel.getReferringComponents('xAxis')[0];\n    var yAxisModel = seriesModel.getReferringComponents('yAxis')[0];\n    result.coordSysDims = ['x', 'y'];\n    axisMap.set('x', xAxisModel);\n    axisMap.set('y', yAxisModel);\n\n    if (isCategory(xAxisModel)) {\n      categoryAxisMap.set('x', xAxisModel);\n      result.firstCategoryDimIndex = 0;\n    }\n\n    if (isCategory(yAxisModel)) {\n      categoryAxisMap.set('y', yAxisModel);\n      result.firstCategoryDimIndex == null & (result.firstCategoryDimIndex = 1);\n    }\n  },\n  singleAxis: function (seriesModel, result, axisMap, categoryAxisMap) {\n    var singleAxisModel = seriesModel.getReferringComponents('singleAxis')[0];\n    result.coordSysDims = ['single'];\n    axisMap.set('single', singleAxisModel);\n\n    if (isCategory(singleAxisModel)) {\n      categoryAxisMap.set('single', singleAxisModel);\n      result.firstCategoryDimIndex = 0;\n    }\n  },\n  polar: function (seriesModel, result, axisMap, categoryAxisMap) {\n    var polarModel = seriesModel.getReferringComponents('polar')[0];\n    var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\n    var angleAxisModel = polarModel.findAxisModel('angleAxis');\n    result.coordSysDims = ['radius', 'angle'];\n    axisMap.set('radius', radiusAxisModel);\n    axisMap.set('angle', angleAxisModel);\n\n    if (isCategory(radiusAxisModel)) {\n      categoryAxisMap.set('radius', radiusAxisModel);\n      result.firstCategoryDimIndex = 0;\n    }\n\n    if (isCategory(angleAxisModel)) {\n      categoryAxisMap.set('angle', angleAxisModel);\n      result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\n    }\n  },\n  geo: function (seriesModel, result, axisMap, categoryAxisMap) {\n    result.coordSysDims = ['lng', 'lat'];\n  },\n  parallel: function (seriesModel, result, axisMap, categoryAxisMap) {\n    var ecModel = seriesModel.ecModel;\n    var parallelModel = ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\n    var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice();\n    each(parallelModel.parallelAxisIndex, function (axisIndex, index) {\n      var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\n      var axisDim = coordSysDims[index];\n      axisMap.set(axisDim, axisModel);\n\n      if (isCategory(axisModel) && result.firstCategoryDimIndex == null) {\n        categoryAxisMap.set(axisDim, axisModel);\n        result.firstCategoryDimIndex = index;\n      }\n    });\n  }\n};\n\nfunction isCategory(axisModel) {\n  return axisModel.get('type') === 'category';\n}\n\nexports.getCoordSysInfoBySeries = getCoordSysInfoBySeries;","\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;\nvar isArray = _util.isArray;\nvar isObject = _util.isObject;\n\nvar compatStyle = require(\"./helper/compatStyle\");\n\nvar _model = require(\"../util/model\");\n\nvar normalizeToArray = _model.normalizeToArray;\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// Compatitable with 2.0\nfunction get(opt, path) {\n  path = path.split(',');\n  var obj = opt;\n\n  for (var i = 0; i < path.length; i++) {\n    obj = obj && obj[path[i]];\n\n    if (obj == null) {\n      break;\n    }\n  }\n\n  return obj;\n}\n\nfunction set(opt, path, val, overwrite) {\n  path = path.split(',');\n  var obj = opt;\n  var key;\n\n  for (var i = 0; i < path.length - 1; i++) {\n    key = path[i];\n\n    if (obj[key] == null) {\n      obj[key] = {};\n    }\n\n    obj = obj[key];\n  }\n\n  if (overwrite || obj[path[i]] == null) {\n    obj[path[i]] = val;\n  }\n}\n\nfunction compatLayoutProperties(option) {\n  each(LAYOUT_PROPERTIES, function (prop) {\n    if (prop[0] in option && !(prop[1] in option)) {\n      option[prop[1]] = option[prop[0]];\n    }\n  });\n}\n\nvar LAYOUT_PROPERTIES = [['x', 'left'], ['y', 'top'], ['x2', 'right'], ['y2', 'bottom']];\nvar COMPATITABLE_COMPONENTS = ['grid', 'geo', 'parallel', 'legend', 'toolbox', 'title', 'visualMap', 'dataZoom', 'timeline'];\n\nfunction _default(option, isTheme) {\n  compatStyle(option, isTheme); // Make sure series array for model initialization.\n\n  option.series = normalizeToArray(option.series);\n  each(option.series, function (seriesOpt) {\n    if (!isObject(seriesOpt)) {\n      return;\n    }\n\n    var seriesType = seriesOpt.type;\n\n    if (seriesType === 'line') {\n      if (seriesOpt.clipOverflow != null) {\n        seriesOpt.clip = seriesOpt.clipOverflow;\n      }\n    } else if (seriesType === 'pie' || seriesType === 'gauge') {\n      if (seriesOpt.clockWise != null) {\n        seriesOpt.clockwise = seriesOpt.clockWise;\n      }\n    } else if (seriesType === 'gauge') {\n      var pointerColor = get(seriesOpt, 'pointer.color');\n      pointerColor != null && set(seriesOpt, 'itemStyle.color', pointerColor);\n    }\n\n    compatLayoutProperties(seriesOpt);\n  }); // dataRange has changed to visualMap\n\n  if (option.dataRange) {\n    option.visualMap = option.dataRange;\n  }\n\n  each(COMPATITABLE_COMPONENTS, function (componentName) {\n    var options = option[componentName];\n\n    if (options) {\n      if (!isArray(options)) {\n        options = [options];\n      }\n\n      each(options, function (option) {\n        compatLayoutProperties(option);\n      });\n    }\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 modelUtil = require(\"../../util/model\");\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 POSSIBLE_STYLES = ['areaStyle', 'lineStyle', 'nodeStyle', 'linkStyle', 'chordStyle', 'label', 'labelLine'];\n\nfunction compatEC2ItemStyle(opt) {\n  var itemStyleOpt = opt && opt.itemStyle;\n\n  if (!itemStyleOpt) {\n    return;\n  }\n\n  for (var i = 0, len = POSSIBLE_STYLES.length; i < len; i++) {\n    var styleName = POSSIBLE_STYLES[i];\n    var normalItemStyleOpt = itemStyleOpt.normal;\n    var emphasisItemStyleOpt = itemStyleOpt.emphasis;\n\n    if (normalItemStyleOpt && normalItemStyleOpt[styleName]) {\n      opt[styleName] = opt[styleName] || {};\n\n      if (!opt[styleName].normal) {\n        opt[styleName].normal = normalItemStyleOpt[styleName];\n      } else {\n        zrUtil.merge(opt[styleName].normal, normalItemStyleOpt[styleName]);\n      }\n\n      normalItemStyleOpt[styleName] = null;\n    }\n\n    if (emphasisItemStyleOpt && emphasisItemStyleOpt[styleName]) {\n      opt[styleName] = opt[styleName] || {};\n\n      if (!opt[styleName].emphasis) {\n        opt[styleName].emphasis = emphasisItemStyleOpt[styleName];\n      } else {\n        zrUtil.merge(opt[styleName].emphasis, emphasisItemStyleOpt[styleName]);\n      }\n\n      emphasisItemStyleOpt[styleName] = null;\n    }\n  }\n}\n\nfunction convertNormalEmphasis(opt, optType, useExtend) {\n  if (opt && opt[optType] && (opt[optType].normal || opt[optType].emphasis)) {\n    var normalOpt = opt[optType].normal;\n    var emphasisOpt = opt[optType].emphasis;\n\n    if (normalOpt) {\n      // Timeline controlStyle has other properties besides normal and emphasis\n      if (useExtend) {\n        opt[optType].normal = opt[optType].emphasis = null;\n        zrUtil.defaults(opt[optType], normalOpt);\n      } else {\n        opt[optType] = normalOpt;\n      }\n    }\n\n    if (emphasisOpt) {\n      opt.emphasis = opt.emphasis || {};\n      opt.emphasis[optType] = emphasisOpt;\n    }\n  }\n}\n\nfunction removeEC3NormalStatus(opt) {\n  convertNormalEmphasis(opt, 'itemStyle');\n  convertNormalEmphasis(opt, 'lineStyle');\n  convertNormalEmphasis(opt, 'areaStyle');\n  convertNormalEmphasis(opt, 'label');\n  convertNormalEmphasis(opt, 'labelLine'); // treemap\n\n  convertNormalEmphasis(opt, 'upperLabel'); // graph\n\n  convertNormalEmphasis(opt, 'edgeLabel');\n}\n\nfunction compatTextStyle(opt, propName) {\n  // Check whether is not object (string\\null\\undefined ...)\n  var labelOptSingle = isObject(opt) && opt[propName];\n  var textStyle = isObject(labelOptSingle) && labelOptSingle.textStyle;\n\n  if (textStyle) {\n    for (var i = 0, len = modelUtil.TEXT_STYLE_OPTIONS.length; i < len; i++) {\n      var propName = modelUtil.TEXT_STYLE_OPTIONS[i];\n\n      if (textStyle.hasOwnProperty(propName)) {\n        labelOptSingle[propName] = textStyle[propName];\n      }\n    }\n  }\n}\n\nfunction compatEC3CommonStyles(opt) {\n  if (opt) {\n    removeEC3NormalStatus(opt);\n    compatTextStyle(opt, 'label');\n    opt.emphasis && compatTextStyle(opt.emphasis, 'label');\n  }\n}\n\nfunction processSeries(seriesOpt) {\n  if (!isObject(seriesOpt)) {\n    return;\n  }\n\n  compatEC2ItemStyle(seriesOpt);\n  removeEC3NormalStatus(seriesOpt);\n  compatTextStyle(seriesOpt, 'label'); // treemap\n\n  compatTextStyle(seriesOpt, 'upperLabel'); // graph\n\n  compatTextStyle(seriesOpt, 'edgeLabel');\n\n  if (seriesOpt.emphasis) {\n    compatTextStyle(seriesOpt.emphasis, 'label'); // treemap\n\n    compatTextStyle(seriesOpt.emphasis, 'upperLabel'); // graph\n\n    compatTextStyle(seriesOpt.emphasis, 'edgeLabel');\n  }\n\n  var markPoint = seriesOpt.markPoint;\n\n  if (markPoint) {\n    compatEC2ItemStyle(markPoint);\n    compatEC3CommonStyles(markPoint);\n  }\n\n  var markLine = seriesOpt.markLine;\n\n  if (markLine) {\n    compatEC2ItemStyle(markLine);\n    compatEC3CommonStyles(markLine);\n  }\n\n  var markArea = seriesOpt.markArea;\n\n  if (markArea) {\n    compatEC3CommonStyles(markArea);\n  }\n\n  var data = seriesOpt.data; // Break with ec3: if `setOption` again, there may be no `type` in option,\n  // then the backward compat based on option type will not be performed.\n\n  if (seriesOpt.type === 'graph') {\n    data = data || seriesOpt.nodes;\n    var edgeData = seriesOpt.links || seriesOpt.edges;\n\n    if (edgeData && !zrUtil.isTypedArray(edgeData)) {\n      for (var i = 0; i < edgeData.length; i++) {\n        compatEC3CommonStyles(edgeData[i]);\n      }\n    }\n\n    zrUtil.each(seriesOpt.categories, function (opt) {\n      removeEC3NormalStatus(opt);\n    });\n  }\n\n  if (data && !zrUtil.isTypedArray(data)) {\n    for (var i = 0; i < data.length; i++) {\n      compatEC3CommonStyles(data[i]);\n    }\n  } // mark point data\n\n\n  var markPoint = seriesOpt.markPoint;\n\n  if (markPoint && markPoint.data) {\n    var mpData = markPoint.data;\n\n    for (var i = 0; i < mpData.length; i++) {\n      compatEC3CommonStyles(mpData[i]);\n    }\n  } // mark line data\n\n\n  var markLine = seriesOpt.markLine;\n\n  if (markLine && markLine.data) {\n    var mlData = markLine.data;\n\n    for (var i = 0; i < mlData.length; i++) {\n      if (zrUtil.isArray(mlData[i])) {\n        compatEC3CommonStyles(mlData[i][0]);\n        compatEC3CommonStyles(mlData[i][1]);\n      } else {\n        compatEC3CommonStyles(mlData[i]);\n      }\n    }\n  } // Series\n\n\n  if (seriesOpt.type === 'gauge') {\n    compatTextStyle(seriesOpt, 'axisLabel');\n    compatTextStyle(seriesOpt, 'title');\n    compatTextStyle(seriesOpt, 'detail');\n  } else if (seriesOpt.type === 'treemap') {\n    convertNormalEmphasis(seriesOpt.breadcrumb, 'itemStyle');\n    zrUtil.each(seriesOpt.levels, function (opt) {\n      removeEC3NormalStatus(opt);\n    });\n  } else if (seriesOpt.type === 'tree') {\n    removeEC3NormalStatus(seriesOpt.leaves);\n  } // sunburst starts from ec4, so it does not need to compat levels.\n\n}\n\nfunction toArr(o) {\n  return zrUtil.isArray(o) ? o : o ? [o] : [];\n}\n\nfunction toObj(o) {\n  return (zrUtil.isArray(o) ? o[0] : o) || {};\n}\n\nfunction _default(option, isTheme) {\n  each(toArr(option.series), function (seriesOpt) {\n    isObject(seriesOpt) && processSeries(seriesOpt);\n  });\n  var axes = ['xAxis', 'yAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'parallelAxis', 'radar'];\n  isTheme && axes.push('valueAxis', 'categoryAxis', 'logAxis', 'timeAxis');\n  each(axes, function (axisName) {\n    each(toArr(option[axisName]), function (axisOpt) {\n      if (axisOpt) {\n        compatTextStyle(axisOpt, 'axisLabel');\n        compatTextStyle(axisOpt.axisPointer, 'label');\n      }\n    });\n  });\n  each(toArr(option.parallel), function (parallelOpt) {\n    var parallelAxisDefault = parallelOpt && parallelOpt.parallelAxisDefault;\n    compatTextStyle(parallelAxisDefault, 'axisLabel');\n    compatTextStyle(parallelAxisDefault && parallelAxisDefault.axisPointer, 'label');\n  });\n  each(toArr(option.calendar), function (calendarOpt) {\n    convertNormalEmphasis(calendarOpt, 'itemStyle');\n    compatTextStyle(calendarOpt, 'dayLabel');\n    compatTextStyle(calendarOpt, 'monthLabel');\n    compatTextStyle(calendarOpt, 'yearLabel');\n  }); // radar.name.textStyle\n\n  each(toArr(option.radar), function (radarOpt) {\n    compatTextStyle(radarOpt, 'name');\n  });\n  each(toArr(option.geo), function (geoOpt) {\n    if (isObject(geoOpt)) {\n      compatEC3CommonStyles(geoOpt);\n      each(toArr(geoOpt.regions), function (regionObj) {\n        compatEC3CommonStyles(regionObj);\n      });\n    }\n  });\n  each(toArr(option.timeline), function (timelineOpt) {\n    compatEC3CommonStyles(timelineOpt);\n    convertNormalEmphasis(timelineOpt, 'label');\n    convertNormalEmphasis(timelineOpt, 'itemStyle');\n    convertNormalEmphasis(timelineOpt, 'controlStyle', true);\n    var data = timelineOpt.data;\n    zrUtil.isArray(data) && zrUtil.each(data, function (item) {\n      if (zrUtil.isObject(item)) {\n        convertNormalEmphasis(item, 'label');\n        convertNormalEmphasis(item, 'itemStyle');\n      }\n    });\n  });\n  each(toArr(option.toolbox), function (toolboxOpt) {\n    convertNormalEmphasis(toolboxOpt, 'iconStyle');\n    each(toolboxOpt.feature, function (featureOpt) {\n      convertNormalEmphasis(featureOpt, 'iconStyle');\n    });\n  });\n  compatTextStyle(toObj(option.axisPointer), 'label');\n  compatTextStyle(toObj(option.tooltip).axisPointer, 'label');\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\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(seriesType) {\n  return {\n    seriesType: seriesType,\n    reset: function (seriesModel, ecModel) {\n      var legendModels = ecModel.findComponents({\n        mainType: 'legend'\n      });\n\n      if (!legendModels || !legendModels.length) {\n        return;\n      }\n\n      var data = seriesModel.getData();\n      data.filterSelf(function (idx) {\n        var name = data.getName(idx); // If in any legend component the status is not selected.\n\n        for (var i = 0; i < legendModels.length; i++) {\n          if (!legendModels[i].isSelected(name)) {\n            return false;\n          }\n        }\n\n        return true;\n      });\n    }\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\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 samplers = {\n  average: function (frame) {\n    var sum = 0;\n    var count = 0;\n\n    for (var i = 0; i < frame.length; i++) {\n      if (!isNaN(frame[i])) {\n        sum += frame[i];\n        count++;\n      }\n    } // Return NaN if count is 0\n\n\n    return count === 0 ? NaN : sum / count;\n  },\n  sum: function (frame) {\n    var sum = 0;\n\n    for (var i = 0; i < frame.length; i++) {\n      // Ignore NaN\n      sum += frame[i] || 0;\n    }\n\n    return sum;\n  },\n  max: function (frame) {\n    var max = -Infinity;\n\n    for (var i = 0; i < frame.length; i++) {\n      frame[i] > max && (max = frame[i]);\n    } // NaN will cause illegal axis extent.\n\n\n    return isFinite(max) ? max : NaN;\n  },\n  min: function (frame) {\n    var min = Infinity;\n\n    for (var i = 0; i < frame.length; i++) {\n      frame[i] < min && (min = frame[i]);\n    } // NaN will cause illegal axis extent.\n\n\n    return isFinite(min) ? min : NaN;\n  },\n  // TODO\n  // Median\n  nearest: function (frame) {\n    return frame[0];\n  }\n};\n\nvar indexSampler = function (frame, value) {\n  return Math.round(frame.length / 2);\n};\n\nfunction _default(seriesType) {\n  return {\n    seriesType: seriesType,\n    modifyOutputEnd: true,\n    reset: function (seriesModel, ecModel, api) {\n      var data = seriesModel.getData();\n      var sampling = seriesModel.get('sampling');\n      var coordSys = seriesModel.coordinateSystem; // Only cartesian2d support down sampling\n\n      if (coordSys.type === 'cartesian2d' && sampling) {\n        var baseAxis = coordSys.getBaseAxis();\n        var valueAxis = coordSys.getOtherAxis(baseAxis);\n        var extent = baseAxis.getExtent(); // Coordinste system has been resized\n\n        var size = Math.abs(extent[1] - extent[0]);\n        var rate = Math.round(data.count() / size);\n\n        if (rate > 1) {\n          var sampler;\n\n          if (typeof sampling === 'string') {\n            sampler = samplers[sampling];\n          } else if (typeof sampling === 'function') {\n            sampler = sampling;\n          }\n\n          if (sampler) {\n            // Only support sample the first dim mapped from value axis.\n            seriesModel.setData(data.downSample(data.mapDimension(valueAxis.dim), 1 / rate, sampler, indexSampler));\n          }\n        }\n      }\n    }\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 _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\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// (1) [Caution]: the logic is correct based on the premises:\n//     data processing stage is blocked in stream.\n//     See <module:echarts/stream/Scheduler#performDataProcessorTasks>\n// (2) Only register once when import repeatly.\n//     Should be executed after series filtered and before stack calculation.\nfunction _default(ecModel) {\n  var stackInfoMap = createHashMap();\n  ecModel.eachSeries(function (seriesModel) {\n    var stack = seriesModel.get('stack'); // Compatibal: when `stack` is set as '', do not stack.\n\n    if (stack) {\n      var stackInfoList = stackInfoMap.get(stack) || stackInfoMap.set(stack, []);\n      var data = seriesModel.getData();\n      var stackInfo = {\n        // Used for calculate axis extent automatically.\n        stackResultDimension: data.getCalculationInfo('stackResultDimension'),\n        stackedOverDimension: data.getCalculationInfo('stackedOverDimension'),\n        stackedDimension: data.getCalculationInfo('stackedDimension'),\n        stackedByDimension: data.getCalculationInfo('stackedByDimension'),\n        isStackedByIndex: data.getCalculationInfo('isStackedByIndex'),\n        data: data,\n        seriesModel: seriesModel\n      }; // If stacked on axis that do not support data stack.\n\n      if (!stackInfo.stackedDimension || !(stackInfo.isStackedByIndex || stackInfo.stackedByDimension)) {\n        return;\n      }\n\n      stackInfoList.length && data.setCalculationInfo('stackedOnSeries', stackInfoList[stackInfoList.length - 1].seriesModel);\n      stackInfoList.push(stackInfo);\n    }\n  });\n  stackInfoMap.each(calculateStack);\n}\n\nfunction calculateStack(stackInfoList) {\n  each(stackInfoList, function (targetStackInfo, idxInStack) {\n    var resultVal = [];\n    var resultNaN = [NaN, NaN];\n    var dims = [targetStackInfo.stackResultDimension, targetStackInfo.stackedOverDimension];\n    var targetData = targetStackInfo.data;\n    var isStackedByIndex = targetStackInfo.isStackedByIndex; // Should not write on raw data, because stack series model list changes\n    // depending on legend selection.\n\n    var newData = targetData.map(dims, function (v0, v1, dataIndex) {\n      var sum = targetData.get(targetStackInfo.stackedDimension, dataIndex); // Consider `connectNulls` of line area, if value is NaN, stackedOver\n      // should also be NaN, to draw a appropriate belt area.\n\n      if (isNaN(sum)) {\n        return resultNaN;\n      }\n\n      var byValue;\n      var stackedDataRawIndex;\n\n      if (isStackedByIndex) {\n        stackedDataRawIndex = targetData.getRawIndex(dataIndex);\n      } else {\n        byValue = targetData.get(targetStackInfo.stackedByDimension, dataIndex);\n      } // If stackOver is NaN, chart view will render point on value start.\n\n\n      var stackedOver = NaN;\n\n      for (var j = idxInStack - 1; j >= 0; j--) {\n        var stackInfo = stackInfoList[j]; // Has been optimized by inverted indices on `stackedByDimension`.\n\n        if (!isStackedByIndex) {\n          stackedDataRawIndex = stackInfo.data.rawIndexOf(stackInfo.stackedByDimension, byValue);\n        }\n\n        if (stackedDataRawIndex >= 0) {\n          var val = stackInfo.data.getByRawIndex(stackInfo.stackResultDimension, stackedDataRawIndex); // Considering positive stack, negative stack and empty data\n\n          if (sum >= 0 && val > 0 || // Positive stack\n          sum <= 0 && val < 0 // Negative stack\n          ) {\n              sum += val;\n              stackedOver = val;\n              break;\n            }\n        }\n      }\n\n      resultVal[0] = sum;\n      resultVal[1] = stackedOver;\n      return resultVal;\n    });\n    targetData.hostModel.setData(newData); // Update for consequent calculation\n\n    targetStackInfo.data = newData;\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 numberUtil = require(\"../util/number\");\n\nvar formatUtil = require(\"../util/format\");\n\nvar Scale = require(\"./Scale\");\n\nvar helper = require(\"./helper\");\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 * Interval scale\n * @module echarts/scale/Interval\n */\nvar roundNumber = numberUtil.round;\n/**\n * @alias module:echarts/coord/scale/Interval\n * @constructor\n */\n\nvar IntervalScale = Scale.extend({\n  type: 'interval',\n  _interval: 0,\n  _intervalPrecision: 2,\n  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  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    IntervalScale.prototype.setExtent.call(this, extent[0], extent[1]);\n  },\n\n  /**\n   * Get interval\n   */\n  getInterval: function () {\n    return this._interval;\n  },\n\n  /**\n   * Set interval\n   */\n  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  /**\n   * @param {boolean} [expandToNicedExtent=false] If expand the ticks to niced extent.\n   * @return {Array.<number>}\n   */\n  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(roundNumber(niceTickExtent[0] - interval, intervalPrecision));\n      } else {\n        ticks.push(extent[0]);\n      }\n    }\n\n    var tick = niceTickExtent[0];\n\n    while (tick <= niceTickExtent[1]) {\n      ticks.push(tick); // Avoid rounding error\n\n      tick = roundNumber(tick + interval, intervalPrecision);\n\n      if (tick === ticks[ticks.length - 1]) {\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] : niceTickExtent[1];\n\n    if (extent[1] > lastNiceTick) {\n      if (expandToNicedExtent) {\n        ticks.push(roundNumber(lastNiceTick + interval, intervalPrecision));\n      } else {\n        ticks.push(extent[1]);\n      }\n    }\n\n    return ticks;\n  },\n\n  /**\n   * @param {number} [splitNumber=5]\n   * @return {Array.<Array.<number>>}\n   */\n  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 - prevTick;\n      var minorInterval = interval / splitNumber;\n\n      while (count < splitNumber - 1) {\n        var minorTick = numberUtil.round(prevTick + (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  /**\n   * @param {number} data\n   * @param {Object} [opt]\n   * @param {number|string} [opt.precision] If 'auto', use nice presision.\n   * @param {boolean} [opt.pad] returns 1.50 but not 1.5 if precision is 2.\n   * @return {string}\n   */\n  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) || 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    data = roundNumber(data, precision, true);\n    return formatUtil.addCommas(data);\n  },\n\n  /**\n   * Update interval and extent of intervals for nice ticks\n   *\n   * @param {number} [splitNumber = 5] Desired number of ticks\n   * @param {number} [minInterval]\n   * @param {number} [maxInterval]\n   */\n  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  /**\n   * Nice extent.\n   * @param {Object} opt\n   * @param {number} [opt.splitNumber = 5] Given approx tick number\n   * @param {boolean} [opt.fixMin=false]\n   * @param {boolean} [opt.fixMax=false]\n   * @param {boolean} [opt.minInterval]\n   * @param {boolean} [opt.maxInterval]\n   */\n  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); // var 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/**\n * @return {module:echarts/scale/Time}\n */\n\nIntervalScale.create = function () {\n  return new IntervalScale();\n};\n\nvar _default = IntervalScale;\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 Scale = require(\"./Scale\");\n\nvar numberUtil = require(\"../util/number\");\n\nvar IntervalScale = require(\"./Interval\");\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 * Log scale\n * @module echarts/scale/Log\n */\n// Use some method of IntervalScale\nvar scaleProto = Scale.prototype;\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;\nvar LogScale = Scale.extend({\n  type: 'log',\n  base: 10,\n  $constructor: function () {\n    Scale.apply(this, arguments);\n    this._originalScale = new IntervalScale();\n  },\n\n  /**\n   * @param {boolean} [expandToNicedExtent=false] If expand the ticks to niced extent.\n   * @return {Array.<number>}\n   */\n  getTicks: function (expandToNicedExtent) {\n    var originalScale = this._originalScale;\n    var extent = this._extent;\n    var originalExtent = originalScale.getExtent();\n    return zrUtil.map(intervalScaleProto.getTicks.call(this, expandToNicedExtent), function (val) {\n      var powVal = numberUtil.round(mathPow(this.base, val)); // Fix #4158\n\n      powVal = val === extent[0] && originalScale.__fixMin ? fixRoundingError(powVal, originalExtent[0]) : powVal;\n      powVal = val === extent[1] && originalScale.__fixMax ? fixRoundingError(powVal, originalExtent[1]) : powVal;\n      return powVal;\n    }, this);\n  },\n\n  /**\n   * @param {number} splitNumber\n   * @return {Array.<Array.<number>>}\n   */\n  getMinorTicks: intervalScaleProto.getMinorTicks,\n\n  /**\n   * @param {number} val\n   * @return {string}\n   */\n  getLabel: intervalScaleProto.getLabel,\n\n  /**\n   * @param  {number} val\n   * @return {number}\n   */\n  scale: function (val) {\n    val = scaleProto.scale.call(this, val);\n    return mathPow(this.base, val);\n  },\n\n  /**\n   * @param {number} start\n   * @param {number} end\n   */\n  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  /**\n   * @return {number} end\n   */\n  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    originalScale.__fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0]));\n    originalScale.__fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1]));\n    return extent;\n  },\n\n  /**\n   * @param  {Array.<number>} extent\n   */\n  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  /**\n   * @override\n   */\n  unionExtentFromData: function (data, dim) {\n    // TODO\n    // filter value that <= 0\n    this.unionExtent(data.getApproximateExtent(dim));\n  },\n\n  /**\n   * Update interval and extent of intervals for nice ticks\n   * @param  {number} [approxTickNum = 10] Given approx tick number\n   */\n  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  /**\n   * Nice extent.\n   * @override\n   */\n  niceExtent: function (opt) {\n    intervalScaleProto.niceExtent.call(this, opt);\n    var originalScale = this._originalScale;\n    originalScale.__fixMin = opt.fixMin;\n    originalScale.__fixMax = opt.fixMax;\n  }\n});\nzrUtil.each(['contain', 'normalize'], function (methodName) {\n  LogScale.prototype[methodName] = function (val) {\n    val = mathLog(val) / mathLog(this.base);\n    return scaleProto[methodName].call(this, val);\n  };\n});\n\nLogScale.create = function () {\n  return new LogScale();\n};\n\nfunction fixRoundingError(val, originalVal) {\n  return roundingErrorFix(val, getPrecisionSafe(originalVal));\n}\n\nvar _default = LogScale;\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 Scale = require(\"./Scale\");\n\nvar OrdinalMeta = require(\"../data/OrdinalMeta\");\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 * Linear continuous scale\n * @module echarts/coord/scale/Ordinal\n *\n * http://en.wikipedia.org/wiki/Level_of_measurement\n */\n// FIXME only one data\nvar scaleProto = Scale.prototype;\nvar OrdinalScale = Scale.extend({\n  type: 'ordinal',\n\n  /**\n   * @param {module:echarts/data/OrdianlMeta|Array.<string>} ordinalMeta\n   */\n  init: function (ordinalMeta, extent) {\n    // Caution: Should not use instanceof, consider ec-extensions using\n    // import approach to get OrdinalMeta class.\n    if (!ordinalMeta || zrUtil.isArray(ordinalMeta)) {\n      ordinalMeta = new OrdinalMeta({\n        categories: ordinalMeta\n      });\n    }\n\n    this._ordinalMeta = ordinalMeta;\n    this._extent = extent || [0, ordinalMeta.categories.length - 1];\n  },\n  parse: function (val) {\n    return typeof val === 'string' ? this._ordinalMeta.getOrdinal(val) // val might be float.\n    : Math.round(val);\n  },\n  contain: function (rank) {\n    rank = this.parse(rank);\n    return scaleProto.contain.call(this, rank) && this._ordinalMeta.categories[rank] != null;\n  },\n\n  /**\n   * Normalize given rank or name to linear [0, 1]\n   * @param {number|string} [val]\n   * @return {number}\n   */\n  normalize: function (val) {\n    return scaleProto.normalize.call(this, this.parse(val));\n  },\n  scale: function (val) {\n    return Math.round(scaleProto.scale.call(this, val));\n  },\n\n  /**\n   * @return {Array}\n   */\n  getTicks: function () {\n    var ticks = [];\n    var extent = this._extent;\n    var rank = extent[0];\n\n    while (rank <= extent[1]) {\n      ticks.push(rank);\n      rank++;\n    }\n\n    return ticks;\n  },\n\n  /**\n   * Get item on rank n\n   * @param {number} n\n   * @return {string}\n   */\n  getLabel: function (n) {\n    if (!this.isBlank()) {\n      // Note that if no data, ordinalMeta.categories is an empty array.\n      return this._ordinalMeta.categories[n];\n    }\n  },\n\n  /**\n   * @return {number}\n   */\n  count: function () {\n    return this._extent[1] - this._extent[0] + 1;\n  },\n\n  /**\n   * @override\n   */\n  unionExtentFromData: function (data, dim) {\n    this.unionExtent(data.getApproximateExtent(dim));\n  },\n  getOrdinalMeta: function () {\n    return this._ordinalMeta;\n  },\n  niceTicks: zrUtil.noop,\n  niceExtent: zrUtil.noop\n});\n/**\n * @return {module:echarts/scale/Time}\n */\n\nOrdinalScale.create = function () {\n  return new OrdinalScale();\n};\n\nvar _default = OrdinalScale;\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 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*/\n\n/**\n * // Scale class management\n * @module echarts/scale/Scale\n */\n\n/**\n * @param {Object} [setting]\n */\nfunction Scale(setting) {\n  this._setting = setting || {};\n  /**\n   * Extent\n   * @type {Array.<number>}\n   * @protected\n   */\n\n  this._extent = [Infinity, -Infinity];\n  /**\n   * Step is calculated in adjustExtent\n   * @type {Array.<number>}\n   * @protected\n   */\n\n  this._interval = 0;\n  this.init && this.init.apply(this, arguments);\n}\n/**\n * Parse input val to valid inner number.\n * @param {*} val\n * @return {number}\n */\n\n\nScale.prototype.parse = function (val) {\n  // Notice: This would be a trap here, If the implementation\n  // of this method depends on extent, and this method is used\n  // before extent set (like in dataZoom), it would be wrong.\n  // Nevertheless, parse does not depend on extent generally.\n  return val;\n};\n\nScale.prototype.getSetting = function (name) {\n  return this._setting[name];\n};\n\nScale.prototype.contain = function (val) {\n  var extent = this._extent;\n  return val >= extent[0] && val <= extent[1];\n};\n/**\n * Normalize value to linear [0, 1], return 0.5 if extent span is 0\n * @param {number} val\n * @return {number}\n */\n\n\nScale.prototype.normalize = function (val) {\n  var extent = this._extent;\n\n  if (extent[1] === extent[0]) {\n    return 0.5;\n  }\n\n  return (val - extent[0]) / (extent[1] - extent[0]);\n};\n/**\n * Scale normalized value\n * @param {number} val\n * @return {number}\n */\n\n\nScale.prototype.scale = function (val) {\n  var extent = this._extent;\n  return val * (extent[1] - extent[0]) + extent[0];\n};\n/**\n * Set extent from data\n * @param {Array.<number>} other\n */\n\n\nScale.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 * @param {module:echarts/data/List} data\n * @param {string} dim\n */\n\n\nScale.prototype.unionExtentFromData = function (data, dim) {\n  this.unionExtent(data.getApproximateExtent(dim));\n};\n/**\n * Get extent\n * @return {Array.<number>}\n */\n\n\nScale.prototype.getExtent = function () {\n  return this._extent.slice();\n};\n/**\n * Set extent\n * @param {number} start\n * @param {number} end\n */\n\n\nScale.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 * When axis extent depends on data and no data exists,\n * axis ticks should not be drawn, which is named 'blank'.\n */\n\n\nScale.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 */\nScale.prototype.setBlank = function (isBlank) {\n  this._isBlank = isBlank;\n};\n/**\n * @abstract\n * @param {*} tick\n * @return {string} label of the tick.\n */\n\nScale.prototype.getLabel = null;\nclazzUtil.enableClassExtend(Scale);\nclazzUtil.enableClassManagement(Scale, {\n  registerWhenExtend: true\n});\nvar _default = Scale;\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 numberUtil = require(\"../util/number\");\n\nvar formatUtil = require(\"../util/format\");\n\nvar scaleHelper = require(\"./helper\");\n\nvar IntervalScale = require(\"./Interval\");\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 \"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* </licenses/LICENSE-d3>).\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.\nvar intervalScaleProto = IntervalScale.prototype;\nvar mathCeil = Math.ceil;\nvar mathFloor = Math.floor;\nvar ONE_SECOND = 1000;\nvar ONE_MINUTE = ONE_SECOND * 60;\nvar ONE_HOUR = ONE_MINUTE * 60;\nvar ONE_DAY = ONE_HOUR * 24; // 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/**\n * @alias module:echarts/coord/scale/Time\n * @constructor\n */\n\n\nvar TimeScale = IntervalScale.extend({\n  type: 'time',\n\n  /**\n   * @override\n   */\n  getLabel: function (val) {\n    var stepLvl = this._stepLvl;\n    var date = new Date(val);\n    return formatUtil.formatTime(stepLvl[0], date, this.getSetting('useUTC'));\n  },\n\n  /**\n   * @override\n   */\n  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); // var extent = this._extent;\n\n    var interval = this._interval;\n\n    if (!opt.fixMin) {\n      extent[0] = numberUtil.round(mathFloor(extent[0] / interval) * interval);\n    }\n\n    if (!opt.fixMax) {\n      extent[1] = numberUtil.round(mathCeil(extent[1] / interval) * interval);\n    }\n  },\n\n  /**\n   * @override\n   */\n  niceTicks: function (approxTickNum, minInterval, maxInterval) {\n    approxTickNum = approxTickNum || 10;\n    var extent = this._extent;\n    var span = extent[1] - extent[0];\n    var approxInterval = span / approxTickNum;\n\n    if (minInterval != null && approxInterval < minInterval) {\n      approxInterval = minInterval;\n    }\n\n    if (maxInterval != null && approxInterval > maxInterval) {\n      approxInterval = maxInterval;\n    }\n\n    var scaleLevelsLen = scaleLevels.length;\n    var idx = bisect(scaleLevels, approxInterval, 0, scaleLevelsLen);\n    var level = scaleLevels[Math.min(idx, scaleLevelsLen - 1)];\n    var interval = level[1]; // Same with interval scale if span is much larger than 1 year\n\n    if (level[0] === 'year') {\n      var yearSpan = span / interval; // From \"Nice Numbers for Graph Labels\" of Graphic Gems\n      // var niceYearSpan = numberUtil.nice(yearSpan, false);\n\n      var yearStep = numberUtil.nice(yearSpan / approxTickNum, true);\n      interval *= yearStep;\n    }\n\n    var timezoneOffset = this.getSetting('useUTC') ? 0 : new Date(+extent[0] || +extent[1]).getTimezoneOffset() * 60 * 1000;\n    var niceExtent = [Math.round(mathCeil((extent[0] - timezoneOffset) / interval) * interval + timezoneOffset), Math.round(mathFloor((extent[1] - timezoneOffset) / interval) * interval + timezoneOffset)];\n    scaleHelper.fixExtent(niceExtent, extent);\n    this._stepLvl = level; // Interval will be used in getTicks\n\n    this._interval = interval;\n    this._niceExtent = niceExtent;\n  },\n  parse: function (val) {\n    // val might be float.\n    return +numberUtil.parseDate(val);\n  }\n});\nzrUtil.each(['contain', 'normalize'], function (methodName) {\n  TimeScale.prototype[methodName] = function (val) {\n    return intervalScaleProto[methodName].call(this, this.parse(val));\n  };\n});\n/**\n * This implementation was originally copied from \"d3.js\"\n * <https://github.com/d3/d3/blob/b516d77fb8566b576088e73410437494717ada26/src/time/scale.js>\n * with some modifications made for this program.\n * See the license statement at the head of this file.\n */\n\nvar scaleLevels = [// Format              interval\n['hh:mm:ss', ONE_SECOND], // 1s\n['hh:mm:ss', ONE_SECOND * 5], // 5s\n['hh:mm:ss', ONE_SECOND * 10], // 10s\n['hh:mm:ss', ONE_SECOND * 15], // 15s\n['hh:mm:ss', ONE_SECOND * 30], // 30s\n['hh:mm\\nMM-dd', ONE_MINUTE], // 1m\n['hh:mm\\nMM-dd', ONE_MINUTE * 5], // 5m\n['hh:mm\\nMM-dd', ONE_MINUTE * 10], // 10m\n['hh:mm\\nMM-dd', ONE_MINUTE * 15], // 15m\n['hh:mm\\nMM-dd', ONE_MINUTE * 30], // 30m\n['hh:mm\\nMM-dd', ONE_HOUR], // 1h\n['hh:mm\\nMM-dd', ONE_HOUR * 2], // 2h\n['hh:mm\\nMM-dd', ONE_HOUR * 6], // 6h\n['hh:mm\\nMM-dd', ONE_HOUR * 12], // 12h\n['MM-dd\\nyyyy', ONE_DAY], // 1d\n['MM-dd\\nyyyy', ONE_DAY * 2], // 2d\n['MM-dd\\nyyyy', ONE_DAY * 3], // 3d\n['MM-dd\\nyyyy', ONE_DAY * 4], // 4d\n['MM-dd\\nyyyy', ONE_DAY * 5], // 5d\n['MM-dd\\nyyyy', ONE_DAY * 6], // 6d\n['week', ONE_DAY * 7], // 7d\n['MM-dd\\nyyyy', ONE_DAY * 10], // 10d\n['week', ONE_DAY * 14], // 2w\n['week', ONE_DAY * 21], // 3w\n['month', ONE_DAY * 31], // 1M\n['week', ONE_DAY * 42], // 6w\n['month', ONE_DAY * 62], // 2M\n['week', ONE_DAY * 70], // 10w\n['quarter', ONE_DAY * 95], // 3M\n['month', ONE_DAY * 31 * 4], // 4M\n['month', ONE_DAY * 31 * 5], // 5M\n['half-year', ONE_DAY * 380 / 2], // 6M\n['month', ONE_DAY * 31 * 8], // 8M\n['month', ONE_DAY * 31 * 10], // 10M\n['year', ONE_DAY * 380] // 1Y\n];\n/**\n * @param {module:echarts/model/Model}\n * @return {module:echarts/scale/Time}\n */\n\nTimeScale.create = function (model) {\n  return new TimeScale({\n    useUTC: model.ecModel.get('useUTC')\n  });\n};\n\nvar _default = TimeScale;\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 numberUtil = require(\"../util/number\");\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 * For testable.\n */\nvar roundNumber = numberUtil.round;\n/**\n * @param {Array.<number>} extent Both extent[0] and extent[1] should be valid number.\n *                                Should be extent[0] < extent[1].\n * @param {number} splitNumber splitNumber should be >= 1.\n * @param {number} [minInterval]\n * @param {number} [maxInterval]\n * @return {Object} {interval, intervalPrecision, niceTickExtent}\n */\n\nfunction 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 * @param {number} interval\n * @return {number} interval precision\n */\n\n\nfunction 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\nfunction 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}\n\nexports.intervalScaleNiceTicks = intervalScaleNiceTicks;\nexports.getIntervalPrecision = getIntervalPrecision;\nexports.fixExtent = fixExtent;"],"names":["zrUtil","graphic","textContain","PI","Math","_default","api","opts","defaults","text","textColor","fontSize","maskColor","showSpinner","color","spinnerRadius","lineWidth","zlevel","group","Group","mask","Rect","style","fill","z","add","font","labelRect","textPosition","textDistance","textFill","arc","Arc","shape","startAngle","endAngle","r","stroke","lineCap","animateShape","when","start","delay","resize","textWidth","getWidth","cx","cy","getHeight","setShape","x","y","width","height","module","exports","Model","componentUtil","_clazz","enableClassManagement","parseClassType","_model","makeInner","layout","boxLayoutMixin","inner","ComponentModel","extend","type","id","name","mainType","subType","componentIndex","defaultOption","ecModel","dependentModels","uid","layoutMode","$constructor","option","parentModel","extraOpt","call","this","getUID","init","mergeDefaultAndTheme","inputPositionParams","getLayoutParams","themeModel","getTheme","merge","get","getDefaultOption","mergeLayoutParam","mergeOption","optionUpdated","newCptOption","isInit","fields","optList","Class","constructor","opt","prototype","push","superClass","i","length","getReferringComponents","queryComponents","index","getDependencies","componentType","deps","each","getClassesByMainType","Clazz","concat","dependencies","map","main","indexOf","unshift","registerWhenExtend","enableSubTypeDefaulter","enableTopologicalTravel","mixin","_config","_util","__DEV__","filter","isArray","isObject","isString","createHashMap","assert","clone","modelUtil","globalDefault","colorPaletteMixin","_sourceHelper","resetSourceDefaulter","OPTION_INNER_KEY","GlobalModel","theme","optionManager","_theme","_optionManager","setOption","optionPreprocessorFuncs","resetOption","optionChanged","baseOption","mountOption","restoreData","initBase","timelineOption","getTimelineOption","mediaOptions","getMediaOption","_api","mediaOption","newOption","componentsMap","_componentsMap","newCptTypes","visitComponent","newCptOptionList","normalizeToArray","mapResult","mappingToExists","makeIdAndName","item","keyInfo","determineSubType","exist","getComponentsByTypes","set","resultItem","componentModel","ComponentModelClass","getClass","createSeriesIndices","componentOption","hasClass","topologicalTravel","getAllClassMainTypes","_seriesIndicesMap","_seriesIndices","getOption","isIdInner","splice","getComponent","idx","list","condition","result","cpts","val","isIdArray","cpt","isNameArray","slice","filterBySubType","findComponents","query","queryCond","getQueryCond","doFilter","q","indexAttr","idAttr","nameAttr","res","eachComponent","cb","context","components","component","queryResult","getSeriesByName","series","oneSeries","getSeriesByIndex","seriesIndex","getSeriesByType","getSeries","getSeriesCount","eachSeries","assertSeriesInitialized","rawSeriesIndex","eachRawSeries","eachSeriesByType","eachRawSeriesByType","isSeriesFiltered","seriesModel","getCurrentSeriesIndices","filterSeries","filteredSeries","payload","componentTypes","isNotTargetSeries","seiresIndex","seriesId","seriesName","mergeTheme","notMergeColorLayer","colorLayer","themeItem","types","ret","existComponent","seriesModels","hasOwnProperty","env","enableClassExtend","enableClassCheck","lineStyleMixin","areaStyleMixin","textStyleMixin","itemStyleMixin","doGet","obj","pathArr","getParent","model","path","getParentMethod","ignoreParent","parsePath","getShallow","key","getModel","thisParentModel","isEmpty","Ctor","setReadOnly","properties","split","customizeGetParent","isAnimationEnabled","node","animation","QUERY_REG","OptionManager","_timelineOptions","_mediaList","_mediaDefault","_currentMediaIndices","_optionBackup","_newBaseOption","parseRawOption","rawOption","isNew","mediaDefault","timelineOptions","mediaList","timelineOpt","timeline","options","media","singleMedia","preProcess","applyMediaQuery","ecWidth","ecHeight","realMap","aspectratio","applicatable","value","attr","matched","match","operator","realAttr","toLowerCase","compare","real","expect","indicesEquals","indices1","indices2","join","oldOption","newCptOpt","oldCptOpt","data","isTypedArray","setAsPrimitive","oldOptionBackup","newParsedOption","isRecreate","optionBackup","timelineModel","getCurrentIndex","indices","len","_format","formatTime","encodeHTML","addCommas","getTooltipMarker","dataFormatMixin","_layout","_task","createTask","prepareSource","getSource","_dataProvider","retrieveRawValue","SeriesModel","coordinateSystem","legendVisualProvider","visualColorAccessPath","visualBorderColorAccessPath","dataTask","count","dataTaskCount","reset","dataTaskReset","getInitialData","wrapData","dataBeforeProcessed","autoSeriesName","themeSubType","defaultEmphasis","fillDataTextStyle","newSeriesOption","dirty","props","label","appendData","params","getRawData","getData","dataType","task","getCurrentTask","getLinkedData","setData","modifyOutputEnd","setOutputEnd","outputData","getBaseAxis","coordSys","formatTooltip","dataIndex","multipleSeries","renderMode","newLine","isRichText","markers","markerId","formatArrayValue","vertially","reduce","dimItem","getDimensionInfo","tooltip","displayName","setEachItem","dim","dimInfo","otherDims","dimType","markName","dimHead","dimHeadStr","content","valStr","tooltipDims","formatSingleValue","mapDimension","tooltipDimLen","getRawValue","isValueArr","getItemVisual","colorStops","formattedValue","colorEl","getName","isNameSpecified","colorStr","html","animationEnabled","getColorFromPalette","scope","requestColorNum","coordDimToDataDim","coordDim","getProgressive","getProgressiveThreshold","getAxisTooltipData","getTooltipPosition","pipeTask","preventIncremental","pipelineContext","getSeriesAutoName","dataDims","nameArr","dataDim","cloneShallow","dataTaskProgress","param","end","CHANGABLE_METHODS","methodName","wrapMethod","curry","onDataSelfChange","scheduler","pipeline","getPipeline","currentTask","agentStubMap","platform","navigator","gradientColor","textStyle","fontFamily","fontStyle","fontWeight","blendMode","animationDuration","animationDurationUpdate","animationEasing","animationEasingUpdate","animationThreshold","progressiveThreshold","progressive","hoverLayerThreshold","useUTC","makeStyleMapper","getAreaStyle","excludes","includes","getBoxLayoutParams","left","top","right","bottom","getNearestColorPalette","colors","paletteNum","clearColorPalette","colorIdx","colorNameMap","scopeFields","defaultColorPalette","layeredColorPalette","colorPalette","formatTpl","getTooltipRenderMode","DIMENSION_LABEL_REG","getDataParams","rawValue","rawDataIndex","getRawIndex","itemOpt","getRawDataItem","borderColor","tooltipModel","renderModeOption","isSeries","userOutput","componentSubType","seriesType","dimensionNames","encode","marker","$vars","getFormattedLabel","status","dimIndex","labelProp","itemModel","getItemModel","Array","formatter","dimensionIndex","str","replace","origin","charAt","getItemStyle","lineDash","getBorderLineDash","lineType","getLineStyle","getLineDash","dotSize","max","dashSize","propName","graphicUtil","PATH_COLOR","getTextColor","isEmphasis","getFont","getTextRect","getBoundingRect","retrieve","CoordSysInfo","coordSysName","coordSysDims","axisMap","categoryAxisMap","firstCategoryDimIndex","getCoordSysInfoBySeries","fetch","fetchers","cartesian2d","xAxisModel","yAxisModel","isCategory","singleAxis","singleAxisModel","polar","polarModel","radiusAxisModel","findAxisModel","angleAxisModel","geo","parallel","parallelModel","dimensions","parallelAxisIndex","axisIndex","axisModel","axisDim","compatStyle","overwrite","compatLayoutProperties","LAYOUT_PROPERTIES","prop","COMPATITABLE_COMPONENTS","isTheme","seriesOpt","clipOverflow","clip","clockWise","clockwise","pointerColor","dataRange","visualMap","componentName","POSSIBLE_STYLES","compatEC2ItemStyle","itemStyleOpt","itemStyle","styleName","normalItemStyleOpt","normal","emphasisItemStyleOpt","emphasis","convertNormalEmphasis","optType","useExtend","normalOpt","emphasisOpt","removeEC3NormalStatus","compatTextStyle","labelOptSingle","TEXT_STYLE_OPTIONS","compatEC3CommonStyles","processSeries","markPoint","markLine","markArea","nodes","edgeData","links","edges","categories","mpData","mlData","breadcrumb","levels","leaves","toArr","o","toObj","axes","axisName","axisOpt","axisPointer","parallelOpt","parallelAxisDefault","calendar","calendarOpt","radar","radarOpt","geoOpt","regions","regionObj","toolbox","toolboxOpt","feature","featureOpt","legendModels","filterSelf","isSelected","samplers","average","frame","sum","isNaN","NaN","Infinity","isFinite","min","nearest","indexSampler","round","sampling","sampler","baseAxis","valueAxis","getOtherAxis","extent","getExtent","size","abs","rate","downSample","stackInfoMap","stack","stackInfoList","stackInfo","stackResultDimension","getCalculationInfo","stackedOverDimension","stackedDimension","stackedByDimension","isStackedByIndex","setCalculationInfo","calculateStack","targetStackInfo","idxInStack","resultVal","resultNaN","dims","targetData","newData","v0","v1","byValue","stackedDataRawIndex","stackedOver","j","rawIndexOf","getByRawIndex","hostModel","numberUtil","formatUtil","Scale","helper","roundNumber","IntervalScale","_interval","_intervalPrecision","setExtent","thisExtent","_extent","parseFloat","unionExtent","other","getInterval","setInterval","interval","_niceExtent","getIntervalPrecision","getTicks","expandToNicedExtent","niceTickExtent","intervalPrecision","ticks","safeLimit","tick","lastNiceTick","getMinorTicks","splitNumber","minorTicks","nextTick","prevTick","minorTicksGroup","minorInterval","minorTick","getLabel","precision","getPrecisionSafe","niceTicks","minInterval","maxInterval","span","reverse","intervalScaleNiceTicks","niceExtent","expandSize","fixMax","fixMin","floor","ceil","create","scaleProto","intervalScaleProto","roundingErrorFix","mathFloor","mathCeil","mathPow","pow","mathLog","log","LogScale","base","apply","arguments","_originalScale","originalScale","originalExtent","powVal","__fixMin","fixRoundingError","__fixMax","scale","unionExtentFromData","getApproximateExtent","approxTickNum","quantity","err","originalVal","OrdinalMeta","OrdinalScale","ordinalMeta","_ordinalMeta","parse","getOrdinal","contain","rank","normalize","n","isBlank","getOrdinalMeta","noop","clazzUtil","setting","_setting","getSetting","_isBlank","setBlank","scaleHelper","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_DAY","bisect","a","lo","hi","mid","TimeScale","stepLvl","_stepLvl","date","Date","d","getFullYear","getMonth","getDate","approxInterval","scaleLevelsLen","scaleLevels","level","yearSpan","yearStep","nice","timezoneOffset","getTimezoneOffset","fixExtent","parseDate","clamp"],"sourceRoot":""}