{"version":3,"sources":["webpack:///./node_modules/echarts/lib/component/tooltip.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/echarts/lib/coord/cartesian/cartesianAxisHelper.js","webpack:///./node_modules/bootstrap-vue/esm/components/spinner/spinner.js","webpack:///./node_modules/echarts/lib/component/gridSimple.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/echarts/lib/component/dataset.js","webpack:///./node_modules/zrender/lib/core/timsort.js","webpack:///./node_modules/zrender/lib/contain/polygon.js","webpack:///./node_modules/zrender/lib/animation/Animator.js","webpack:///./node_modules/echarts/lib/component/tooltip/TooltipContent.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/zrender/lib/core/GestureMgr.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/fails.js","webpack:///./node_modules/zrender/lib/mixin/Transformable.js","webpack:///./node_modules/zrender/lib/graphic/Image.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/modules/es.array.splice.js","webpack:///./node_modules/echarts/lib/data/helper/sourceHelper.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/set-global.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/engine-v8-version.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/echarts/lib/component/axisPointer/findPointFromSeries.js","webpack:///./node_modules/echarts/lib/chart/helper/Symbol.js","webpack:///./node_modules/echarts/lib/helper.js","webpack:///./node_modules/zrender/lib/core/matrix.js","webpack:///./node_modules/echarts/lib/component/axisPointer/globalListener.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/echarts/lib/scale/Ordinal.js","webpack:///./node_modules/zrender/lib/graphic/Displayable.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/dom-token-list-prototype.js","webpack:///./node_modules/vue-echarts/components/ECharts.vue?8d0f","webpack:///./node_modules/zrender/lib/mixin/Eventful.js","webpack:///./node_modules/echarts/lib/coord/axisModelCommonMixin.js","webpack:///./node_modules/echarts/lib/CoordinateSystem.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/card.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-sub-title.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-body.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-header.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-footer.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-img.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card.js","webpack:///./node_modules/zrender/lib/core/PathProxy.js","webpack:///./node_modules/echarts/lib/scale/Time.js","webpack:///./node_modules/echarts/lib/chart/line/LineSeries.js","webpack:///./src/@core/components/toastification/ToastificationContent.vue?2bd6","webpack:///src/@core/components/toastification/ToastificationContent.vue","webpack:///./src/@core/components/toastification/ToastificationContent.vue?d65c","webpack:///./src/@core/components/toastification/ToastificationContent.vue","webpack:///./node_modules/zrender/lib/core/env.js","webpack:///./node_modules/echarts/lib/util/graphic.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/descriptors.js","webpack:///./src/@core/components/charts/echart/AppEchartLine.vue?de4f","webpack:///./node_modules/echarts/lib/preprocessor/helper/compatStyle.js","webpack:///./node_modules/echarts/lib/model/mixin/makeStyleMapper.js","webpack:///./node_modules/echarts/lib/lang.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/echarts/lib/data/helper/dataProvider.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/zrender/lib/graphic/Style.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/create-property.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/zrender/lib/config.js","webpack:///./node_modules/echarts/lib/data/helper/dimensionHelper.js","webpack:///./node_modules/zrender/lib/tool/parseSVG.js","webpack:///./node_modules/zrender/lib/animation/Animation.js","webpack:///./node_modules/echarts/lib/chart/helper/createListFromArray.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/global.js","webpack:///./node_modules/zrender/lib/tool/path.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/echarts/lib/util/number.js","webpack:///./node_modules/echarts/lib/model/mixin/dataFormat.js","webpack:///./node_modules/echarts/lib/model/mixin/lineStyle.js","webpack:///./node_modules/zrender/lib/graphic/IncrementalDisplayable.js","webpack:///./node_modules/echarts/lib/echarts.js","webpack:///./node_modules/zrender/lib/core/vector.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/zrender/lib/tool/color.js","webpack:///./node_modules/zrender/lib/graphic/Gradient.js","webpack:///./node_modules/echarts/lib/component/tooltip/TooltipView.js","webpack:///./node_modules/echarts/lib/model/Model.js","webpack:///./node_modules/zrender/lib/animation/Clip.js","webpack:///./node_modules/zrender/lib/graphic/shape/Ring.js","webpack:///./node_modules/echarts/lib/component/legend/legendAction.js","webpack:///./node_modules/zrender/lib/graphic/LinearGradient.js","webpack:///./node_modules/echarts/lib/component/axisPointer/AxisPointerModel.js","webpack:///./node_modules/echarts/lib/coord/cartesian/AxisModel.js","webpack:///./node_modules/bootstrap-vue/esm/components/image/img.js","webpack:///./node_modules/zrender/lib/core/log.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-title.js","webpack:///./node_modules/zrender/lib/core/curve.js","webpack:///./node_modules/echarts/lib/component/axisPointer/CartesianAxisPointer.js","webpack:///./node_modules/zrender/lib/graphic/shape/Sector.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/lodash/_trimmedEndIndex.js","webpack:///./node_modules/echarts/lib/config.js","webpack:///./node_modules/echarts/lib/model/Series.js","webpack:///./node_modules/zrender/lib/graphic/helper/poly.js","webpack:///./node_modules/echarts/lib/model/mixin/itemStyle.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/echarts/lib/data/DataDimensionInfo.js","webpack:///./node_modules/zrender/lib/graphic/helper/roundRect.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/export.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/echarts/lib/component/axis/axisSplitHelper.js","webpack:///./node_modules/echarts/lib/coord/cartesian/Grid.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/to-length.js","webpack:///./node_modules/zrender/lib/Layer.js","webpack:///./node_modules/zrender/lib/graphic/helper/image.js","webpack:///./node_modules/echarts/lib/component/legend/LegendView.js","webpack:///./node_modules/zrender/lib/core/event.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/echarts/lib/data/List.js","webpack:///./node_modules/zrender/lib/graphic/helper/smoothSpline.js","webpack:///./node_modules/echarts/lib/util/clazz.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/classof.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/is-object.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/is-symbol.js","webpack:///./node_modules/zrender/lib/core/dom.js","webpack:///./node_modules/echarts/lib/component/axis/AxisView.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/dom-iterables.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/native-weak-map.js","webpack:///./node_modules/zrender/lib/contain/quadratic.js","webpack:///./node_modules/echarts/lib/coord/axisHelper.js","webpack:///./node_modules/zrender/lib/zrender.js","webpack:///./node_modules/echarts/lib/stream/Scheduler.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/is-array.js","webpack:///./node_modules/echarts/lib/model/Component.js","webpack:///./node_modules/zrender/lib/core/util.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/is-constructor.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/array-method-is-strict.js","webpack:///./node_modules/echarts/lib/coord/axisDefault.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/to-property-key.js","webpack:///./node_modules/zrender/lib/animation/easing.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./src/views/Statistics/EchartLine.vue?c86c","webpack:///./src/@core/components/charts/echart/AppEchartLine.vue?1ebc","webpack:///./node_modules/vue-echarts/components/ECharts.vue?c50b","webpack:///./node_modules/vue-echarts/node_modules/resize-detector/esm/index.js","webpack:///node_modules/vue-echarts/components/ECharts.vue","webpack:///./node_modules/vue-echarts/components/ECharts.vue?12fa","webpack:///./node_modules/vue-echarts/components/ECharts.vue","webpack:///src/@core/components/charts/echart/AppEchartLine.vue","webpack:///./src/@core/components/charts/echart/AppEchartLine.vue?9509","webpack:///./src/@core/components/charts/echart/AppEchartLine.vue","webpack:///src/views/Statistics/EchartLine.vue","webpack:///./src/views/Statistics/EchartLine.vue?0b21","webpack:///./src/views/Statistics/EchartLine.vue","webpack:///./node_modules/zrender/lib/graphic/Text.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/echarts/lib/component/helper/listComponent.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/array-iteration.js","webpack:///./node_modules/zrender/lib/graphic/helper/fixShadow.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/echarts/lib/model/Global.js","webpack:///./node_modules/echarts/lib/visual/symbol.js","webpack:///./node_modules/echarts/lib/data/DataDiffer.js","webpack:///./node_modules/zrender/lib/graphic/constant.js","webpack:///./node_modules/echarts/lib/component/tooltip/TooltipRichContent.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/model.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-options.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-select/helpers/mixin-options.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-select/form-select-option-group.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-select/form-select.js","webpack:///./node_modules/echarts/lib/ExtensionAPI.js","webpack:///./node_modules/echarts/lib/coord/Axis.js","webpack:///./node_modules/echarts/lib/component/legend/LegendModel.js","webpack:///./node_modules/zrender/lib/core/fourPointsTransform.js","webpack:///./node_modules/zrender/lib/contain/util.js","webpack:///./node_modules/echarts/lib/data/helper/completeDimensions.js","webpack:///./node_modules/zrender/lib/contain/windingLine.js","webpack:///./node_modules/zrender/lib/graphic/shape/Polygon.js","webpack:///./node_modules/echarts/lib/layout/points.js","webpack:///./node_modules/echarts/lib/util/throttle.js","webpack:///./node_modules/echarts/lib/util/component.js","webpack:///./node_modules/echarts/lib/model/globalDefault.js","webpack:///./node_modules/zrender/lib/graphic/helper/fixClipWithShadow.js","webpack:///./node_modules/echarts/lib/scale/Interval.js","webpack:///./node_modules/echarts/lib/model/referHelper.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/echarts/lib/scale/Log.js","webpack:///./node_modules/zrender/lib/graphic/shape/Arc.js","webpack:///./node_modules/lodash/_baseTrim.js","webpack:///./node_modules/echarts/lib/data/OrdinalMeta.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/echarts/lib/coord/cartesian/GridModel.js","webpack:///./node_modules/echarts/lib/component/legend/legendFilter.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/echarts/lib/data/helper/sourceType.js","webpack:///./node_modules/echarts/lib/scale/helper.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/redefine.js","webpack:///./node_modules/zrender/lib/contain/line.js","webpack:///./node_modules/zrender/lib/core/BoundingRect.js","webpack:///./node_modules/zrender/lib/animation/requestAnimationFrame.js","webpack:///./node_modules/echarts/lib/loading/default.js","webpack:///./node_modules/bootstrap-vue/esm/components/overlay/overlay.js","webpack:///./node_modules/echarts/lib/model/mixin/areaStyle.js","webpack:///./node_modules/zrender/lib/graphic/helper/smoothBezier.js","webpack:///./node_modules/zrender/lib/graphic/helper/subPixelOptimize.js","webpack:///./node_modules/echarts/lib/layout/barGrid.js","webpack:///./node_modules/zrender/lib/graphic/mixin/RectText.js","webpack:///./node_modules/echarts/lib/coord/axisModelCreator.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/zrender/lib/contain/arc.js","webpack:///./node_modules/echarts/lib/chart/line/helper.js","webpack:///./node_modules/echarts/lib/util/symbol.js","webpack:///./node_modules/zrender/lib/graphic/helper/text.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-custom.js","webpack:///./node_modules/echarts/lib/component/tooltip/TooltipModel.js","webpack:///./node_modules/zrender/lib/graphic/shape/BezierCurve.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-size.js","webpack:///./node_modules/zrender/lib/graphic/shape/Ellipse.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/ordinary-to-primitive.js","webpack:///./node_modules/echarts/lib/component/axis.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/zrender/lib/Storage.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/echarts/lib/chart/helper/createClipPathFromCoordSys.js","webpack:///./node_modules/echarts/lib/view/Component.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/an-object.js","webpack:///./node_modules/echarts/lib/data/helper/createDimensions.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./src/@core/components/toastification/ToastificationContent.vue?1b26","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/is-callable.js","webpack:///./node_modules/echarts/lib/export.js","webpack:///./node_modules/echarts/lib/visual/aria.js","webpack:///./node_modules/zrender/lib/mixin/Animatable.js","webpack:///./node_modules/echarts/lib/coord/geo/parseGeoJson.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/modules/es.object.keys.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/echarts/lib/theme/light.js","webpack:///./node_modules/echarts/lib/chart/helper/labelHelper.js","webpack:///./node_modules/zrender/lib/graphic/shape/Rect.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/echarts/lib/model/OptionManager.js","webpack:///./node_modules/zrender/lib/graphic/shape/Line.js","webpack:///./node_modules/zrender/lib/mixin/Draggable.js","webpack:///./node_modules/echarts/lib/component/axisPointer.js","webpack:///./node_modules/zrender/lib/graphic/Path.js","webpack:///./node_modules/echarts/lib/coord/cartesian/Cartesian2D.js","webpack:///./node_modules/echarts/lib/chart/helper/createRenderPlanner.js","webpack:///./node_modules/echarts/lib/component/axisPointer/modelHelper.js","webpack:///./node_modules/zrender/lib/dom/HandlerProxy.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/to-string-tag-support.js","webpack:///./node_modules/echarts/lib/coord/cartesian/Cartesian.js","webpack:///./node_modules/echarts/lib/processor/dataStack.js","webpack:///./node_modules/echarts/lib/component/legend.js","webpack:///./node_modules/zrender/lib/Handler.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/a-callable.js","webpack:///./node_modules/zrender/lib/graphic/shape/Polyline.js","webpack:///./node_modules/echarts/lib/component/axisPointer/AxisPointerView.js","webpack:///./node_modules/zrender/lib/graphic/CompoundPath.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/has.js","webpack:///./node_modules/echarts/lib/chart/line/poly.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/zrender/lib/core/LRU.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-state.js","webpack:///./node_modules/zrender/lib/Element.js","webpack:///./node_modules/zrender/lib/contain/path.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/to-integer.js","webpack:///./node_modules/zrender/lib/graphic/shape/Circle.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/shared.js","webpack:///./node_modules/zrender/lib/graphic/Pattern.js","webpack:///./node_modules/echarts/lib/component/axisPointer/BaseAxisPointer.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-control.js","webpack:///./node_modules/zrender/lib/graphic/RadialGradient.js","webpack:///./node_modules/zrender/lib/core/guid.js","webpack:///./node_modules/echarts/lib/model/mixin/boxLayout.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/get-method.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/echarts/lib/coord/axisTickLabelBuilder.js","webpack:///./node_modules/echarts/lib/util/model.js","webpack:///./node_modules/echarts/lib/scale/Scale.js","webpack:///./node_modules/zrender/lib/container/Group.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/zrender/lib/core/bbox.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/function-bind-context.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/array-species-constructor.js","webpack:///./node_modules/echarts/lib/model/mixin/colorPalette.js","webpack:///./node_modules/zrender/lib/contain/cubic.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/uid.js","webpack:///./node_modules/zrender/lib/contain/text.js","webpack:///./node_modules/echarts/lib/view/Chart.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-select/form-select-option.js","webpack:///./node_modules/echarts/lib/component/axisPointer/axisTrigger.js","webpack:///./node_modules/echarts/lib/coord/cartesian/Axis2D.js","webpack:///./node_modules/echarts/lib/coord/geo/mapDataStorage.js","webpack:///./node_modules/echarts/lib/data/Source.js","webpack:///./node_modules/zrender/lib/Painter.js","webpack:///./node_modules/echarts/lib/util/format.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/engine-user-agent.js","webpack:///./node_modules/echarts/lib/data/helper/dataStackHelper.js","webpack:///./node_modules/zrender/lib/tool/transformPath.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/to-object.js","webpack:///./node_modules/echarts/lib/chart/line.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/try-to-string.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/echarts/lib/chart/line/lineAnimationDiff.js","webpack:///./node_modules/echarts/lib/chart/line/LineView.js","webpack:///./node_modules/echarts/lib/theme/dark.js","webpack:///./node_modules/echarts/lib/component/axis/CartesianAxisView.js","webpack:///./node_modules/echarts/lib/coord/geo/Region.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/function-name.js","webpack:///./node_modules/echarts/lib/stream/task.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/vue-echarts/node_modules/core-js/modules/es.array.slice.js","webpack:///./node_modules/echarts/lib/chart/helper/SymbolDraw.js","webpack:///./node_modules/echarts/lib/util/layout.js","webpack:///./node_modules/echarts/lib/component/axis/AxisBuilder.js","webpack:///./node_modules/echarts/lib/preprocessor/backwardCompat.js","webpack:///./node_modules/echarts/lib/visual/seriesColor.js","webpack:///./node_modules/echarts/lib/processor/dataSample.js","webpack:///./node_modules/echarts/lib/model/mixin/textStyle.js","webpack:///./node_modules/echarts/lib/component/axisPointer/viewHelper.js","webpack:///./node_modules/lodash/isSymbol.js"],"names":["echarts","registerAction","type","event","update","global","require","shared","has","uid","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","Symbol","createWellKnownSymbol","withoutSetter","module","exports","name","objectProto","Object","prototype","hasOwnProperty","nativeObjectToString","toString","symToStringTag","toStringTag","undefined","getRawTag","value","isOwn","call","tag","unmasked","e","result","zrUtil","layout","gridModel","axisModel","opt","grid","coordinateSystem","axis","otherAxisOnZeroOf","getAxesOnZeroOf","rawAxisPosition","position","axisPosition","axisDim","dim","rect","getRect","rectBound","x","width","y","height","idx","left","right","top","bottom","onZero","axisOffset","get","posBound","onZeroCoord","toGlobalCoord","dataToCoord","Math","max","min","rotation","PI","dirMap","labelDirection","tickDirection","nameDirection","labelOffset","retrieve","labelInside","labelRotate","z2","_defineProperty","obj","key","defineProperty","enumerable","configurable","writable","props","label","role","small","variant","BSpinner","extend","functional","render","h","_ref","_class","data","slots","scopedSlots","$slots","$scopedSlots","$label","staticClass","attrs","class","concat","graphic","extendComponentView","ecModel","this","group","removeAll","add","Rect","shape","style","defaults","fill","getItemStyle","silent","registerPreprocessor","option","xAxis","yAxis","toIndexedObject","indexOf","hiddenKeys","object","names","O","i","push","length","ComponentModel","ComponentView","_sourceHelper","detectSourceFormat","_sourceType","SERIES_LAYOUT_BY_COLUMN","defaultOption","seriesLayoutBy","sourceHeader","dimensions","source","optionUpdated","DEFAULT_MIN_MERGE","DEFAULT_MIN_GALLOPING","minRunLength","n","r","makeAscendingRun","array","lo","hi","compare","runHi","reverseRun","t","binaryInsertionSort","start","mid","pivot","gallopLeft","hint","lastOffset","maxOffset","offset","tmp","m","gallopRight","TimSort","runStart","runLength","minGallop","stackSize","pushRun","_runStart","_runLength","mergeRuns","mergeAt","forceMergeRuns","start1","length1","start2","length2","k","mergeLow","mergeHigh","cursor1","cursor2","dest","count1","count2","exit","_minGallop","Error","customCursor","customDest","sort","remaining","ts","minRun","force","windingLine","EPSILON","isAroundEqual","a","b","abs","contain","points","w","p","p2","p0","Clip","color","_util","isArrayLike","arraySlice","Array","slice","defaultGetter","target","defaultSetter","interpolateNumber","p1","percent","interpolateString","interpolateArray","out","arrDim","len","len2","j","fillArr","arr0","arr1","arr0Len","arr1Len","isPreviousLarger","isNaN","isArraySame","catmullRomInterpolateArray","p3","t2","t3","catmullRomInterpolate","v0","v1","cloneValue","ret","rgba2String","rgba","floor","join","getArrayDim","keyframes","lastValue","createTrackClip","animator","easing","oneTrackDone","propName","forceAnimate","getter","_getter","setter","_setter","useSpline","trackLen","trackMaxTime","firstVal","isValueArray","isValueColor","isValueString","time","kfPercents","kfValues","prevValue","isAllValueEqual","colorArray","parse","_target","lastFrame","lastFramePercent","onframe","frame","range","clip","life","loop","_loop","delay","_delay","ondestroy","Animator","_tracks","_clipCount","_doneList","_onframeList","_clipList","when","tracks","during","callback","pause","_paused","resume","isPaused","_doneCallback","doneList","lastClip","self","clipCount","animation","addClip","oldOnFrame","stop","forwardToLast","clipList","removeClip","done","cb","getClips","_default","zrColor","eventUtil","domUtil","env","formatUtil","each","toCamelCase","vendors","gCssText","assembleTransition","duration","transitionCurve","transitionText","map","vendorPrefix","assembleFont","textStyleModel","cssText","fontSize","getTextColor","getFont","round","val","assembleCssText","tooltipModel","transitionDuration","backgroundColor","getModel","padding","canvasSupported","toHex","borderName","camelCase","normalizeCssArray","makeStyleCoord","zr","appendToBody","zrX","zrY","zrPainter","painter","zrViewportRoot","getViewportRoot","transformLocalCoord","document","body","viewportRootOffset","getViewportRootOffset","offsetLeft","offsetTop","TooltipContent","container","api","wxa","el","createElement","domBelongToZr","_zr","getZr","_appendToBody","_styleCoord","getWidth","getHeight","appendChild","_container","_show","_hideTimeout","onmouseenter","_enterable","clearTimeout","_inContent","onmousemove","window","handler","normalizeEvent","dispatch","onmouseleave","hideLater","_hideDelay","constructor","stl","currentStyle","defaultView","getComputedStyle","domStyle","show","styleCoord","display","innerHTML","pointerEvents","setContent","content","setEnterable","enterable","getSize","clientWidth","clientHeight","moveTo","hide","setTimeout","bind","isShow","dispose","parentNode","removeChild","getOuterSize","parseInt","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth","sham","iterator","GestureMgr","_track","dist","pointPair","dx","dy","sqrt","center","recognize","root","_doTrack","_recognize","clear","touches","trackItem","touch","pos","clientToLocal","eventName","recognizers","gestureInfo","pinch","track","pinchEnd","pinchPre","pinchScale","isFinite","pinchCenter","pinchX","pinchY","exec","error","matrix","vector","mIdentity","identity","isNotAroundZero","Transformable","opts","scale","origin","transformableProto","transform","needLocalTransform","scaleTmp","updateTransform","parent","parentHasTransform","create","getLocalTransform","mul","copy","globalScaleRatio","getGlobalScale","relX","relY","sx","sy","invTransform","invert","setTransform","ctx","dpr","restoreTransform","tmpTransform","originTransform","setLocalTransform","atan2","decomposeTransform","transformCoordToLocal","v2","applyTransform","transformCoordToGlobal","rotate","Displayable","BoundingRect","imageHelper","ZImage","brush","prevEl","src","image","_image","createOrUpdateImage","onload","isImageReady","aspect","sWidth","sHeight","drawImage","text","drawRectText","getBoundingRect","_rect","inherits","$","toAbsoluteIndex","toInteger","toLength","toObject","arraySpeciesCreate","createProperty","arrayMethodHasSpeciesSupport","HAS_SPECIES_SUPPORT","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_LENGTH_EXCEEDED","proto","forced","splice","deleteCount","insertCount","actualDeleteCount","A","from","to","actualStart","argumentsLength","arguments","TypeError","_config","_model","__DEV__","makeInner","getDataItemValue","createHashMap","isArray","isString","isObject","isTypedArray","Source","assert","SOURCE_FORMAT_ORIGINAL","SOURCE_FORMAT_ARRAY_ROWS","SOURCE_FORMAT_OBJECT_ROWS","SOURCE_FORMAT_KEYED_COLUMNS","SOURCE_FORMAT_UNKNOWN","SOURCE_FORMAT_TYPED_ARRAY","SERIES_LAYOUT_BY_ROW","BE_ORDINAL","Must","Might","Not","inner","datasetModel","sourceFormat","item","getSource","seriesModel","resetSourceDefaulter","datasetMap","prepareSource","seriesOption","fromDataset","dimensionsDefine","getDatasetModel","datasetOption","completeResult","completeBySourceData","startIndex","dimensionsDetectCount","encodeDefine","encode","normalizeDimensionsDefine","arrayRowsTravelFirst","index","objectRowsCollectDimensions","colArr","value0","nameMap","displayName","exist","count","set","maxLoop","Infinity","firstIndex","makeSeriesEncodeForAxisCoordSys","coordDimensions","baseCategoryDimIndex","categoryWayValueDimStart","encodeItemName","encodeSeriesName","coordDimInfo","coordDimIdx","getDataDimCountOnCoordDim","datasetRecord","categoryWayDim","valueWayDim","pushDim","dimIdxArr","idxFrom","idxCount","dimsDef","coordDimName","itemName","seriesName","makeSeriesEncodeForNameBased","dimCount","potentialNameDimIndex","idxResult","idxRes0","idxRes1","guessRecords","guessResult","doGuessOrdinal","isPureNumber","v","fulfilled","nameDimIndex","thisData","getComponent","datasetIndex","guessOrdinal","dimIndex","dimName","dimType","dimDefItem","sample","detectValue","row","beStr","keys","match","version","userAgent","process","Deno","versions","v8","split","isObjectLike","bitmap","modelUtil","finder","point","seriesIndex","getSeriesByIndex","getData","dataIndex","queryDataIndex","getItemGraphicEl","coordSys","getTooltipPosition","dataToPoint","getValues","mapDimension","clone","_symbol","createSymbol","_number","parsePercent","_labelHelper","getDefaultLabel","SymbolClz","seriesScope","Group","updateData","symbolProto","getSymbolSize","symbolSize","getItemVisual","getScale","driftSymbol","drift","_createSymbol","symbolType","keepAspect","symbolPath","attr","culling","_symbolType","stopSymbolAnimation","toLastFrame","childAt","stopAnimation","getSymbolPath","highlight","trigger","downplay","setZ","zlevel","z","setDraggable","draggable","cursor","hostModel","isInit","updateProps","_updateCommon","fadeIn","opacity","initProps","_seriesModel","normalStyleAccessPath","emphasisStyleAccessPath","normalLabelAccessPath","emphasisLabelAccessPath","highDownOnUpdate","fromState","toState","incremental","useHoverLayer","__symbolOriginalScale","ratio","emphasisOpt","animateTo","useStyle","strokeNoScale","setStyle","shadowBlur","shadowOffsetX","shadowOffsetY","shadowColor","itemStyle","hoverItemStyle","symbolOffset","labelModel","hoverLabelModel","hoverAnimation","cursorStyle","hasItemOption","itemModel","getItemModel","getShallow","elStyle","symbolRotate","setColor","symbolInnerColor","liftZ","z2Origin","__z2Origin","useNameLabel","getLabelDefaultText","getName","setLabelStyle","labelFetcher","labelDataIndex","defaultText","isRectText","autoColor","hoverStyle","isAnimationEnabled","setHoverStyle","fadeOut","keepLabel","createListFromArray","axisHelper","axisModelCommonMixin","Model","_layout","getLayoutRect","_dataStackHelper","enableDataStack","isDimensionStacked","getStackedDimension","_completeDimensions","completeDimensions","_createDimensions","createDimensions","createList","dataStack","createScale","dataExtent","isInstance","mixin","createScaleByModel","setExtent","niceScaleExtent","mixinAxisModelCommonMethods","ArrayCtor","Float32Array","m1","m2","out0","out1","out2","out3","out4","out5","translate","rad","aa","ac","atx","ab","ad","aty","st","sin","ct","cos","vx","vy","det","register","node","records","initGlobalListeners","record","useHandler","eventType","on","dis","makeDispatchAction","dispatchAction","dispatchTooltipFinally","pendings","initialized","curry","doEnter","onLeave","actuallyPayload","showLen","showTip","hideLen","hideTip","currTrigger","payload","pendingList","unregister","DESCRIPTORS","IE8_DOM_DEFINE","anObject","toPropertyKey","$defineProperty","f","P","Attributes","Scale","OrdinalMeta","scaleProto","OrdinalScale","init","ordinalMeta","extent","categories","_ordinalMeta","_extent","getOrdinal","rank","normalize","getTicks","ticks","getLabel","isBlank","unionExtentFromData","unionExtent","getApproximateExtent","getOrdinalMeta","niceTicks","noop","niceExtent","Style","Element","RectText","__clipPaths","__dirty","invisible","dragging","rectHover","progressive","beforeBrush","afterBrush","rectContain","traverse","context","coord","dirty","__dirtyText","__zr","refresh","animateStyle","animate","attrKV","calculateTextPosition","fails","it","documentCreateElement","classList","DOMTokenListPrototype","arrySlice","Eventful","eventProcessor","_$handlers","_$eventProcessor","normalizeQuery","host","query","eventful","isOnce","_h","wrap","one","callAtLast","zrEventfulCallAtLast","lastIndex","lastWrap","isSilent","off","newList","l","args","argLen","hItem","filter","apply","afterTrigger","triggerWithContext","getMin","rangeStart","eqNaN","getMax","rangeEnd","getNeedCrossZero","getCoordSysModel","setRange","resetRange","coordinateSystemCreators","CoordinateSystemManager","_coordinateSystems","coordinateSystems","creater","list","getCoordinateSystems","coordinateSystemCreator","bgVariant","borderVariant","textVariant","subTitle","subTitleTag","subTitleTextVariant","BCardSubTitle","children","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread","forEach","getOwnPropertyDescriptors","defineProperties","bodyClass","overlay","BCardBody","_ref2","bodyBgVariant","bodyBorderVariant","bodyTextVariant","$title","title","$subTitle","bodyTag","header","headerClass","headerHtml","BCardHeader","headerBgVariant","headerBorderVariant","headerTextVariant","headerTag","domProps","html","footer","footerClass","footerHtml","BCardFooter","footerBgVariant","footerBorderVariant","footerTextVariant","footerTag","end","BCardImg","alt","baseClass","cardImgProps","imgSrc","required","align","noBody","BCard","imgLeft","imgRight","imgStart","imgEnd","imgBottom","slotScope","$imgFirst","$imgLast","$img","$header","hasHeaderSlot","$content","$footer","hasFooterSlot","curve","vec2","bbox","devicePixelRatio","CMD","M","L","C","Q","Z","R","min2","max2","mathMin","mathMax","mathCos","mathSin","mathSqrt","mathAbs","hasTypedArray","PathProxy","notSaveData","_saveData","_ctx","_xi","_yi","_x0","_y0","_ux","_uy","_len","_lineDash","_dashOffset","_dashIdx","_dashSum","setScale","segmentIgnoreThreshold","getContext","beginPath","addData","lineTo","exceedUnit","_needsDash","_dashedLineTo","bezierCurveTo","x1","y1","x2","y2","x3","y3","_dashedBezierTo","quadraticCurveTo","_dashedQuadraticTo","arc","cx","cy","startAngle","endAngle","anticlockwise","arcTo","radius","closePath","x0","y0","toStatic","stroke","setLineDash","lineDash","lineDashSum","setLineDashOffset","setData","appendPath","path","appendSize","appendPathData","cmd","_expandData","_prevCmd","newData","dash","dashSum","nDash","cubicAt","bezierLen","tmpLen","Number","MAX_VALUE","xi","yi","fromLine","fromCubic","fromQuadratic","rx","ry","fromArc","rebuildPath","d","ux","uy","theta","dTheta","psi","fs","scaleX","scaleY","isEllipse","numberUtil","scaleHelper","IntervalScale","intervalScaleProto","mathCeil","ceil","mathFloor","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_DAY","bisect","TimeScale","stepLvl","_stepLvl","date","Date","formatTime","getSetting","getFullYear","getMonth","getDate","splitNumber","minInterval","maxInterval","interval","_interval","fixMin","fixMax","approxTickNum","span","approxInterval","scaleLevelsLen","scaleLevels","level","yearSpan","yearStep","nice","timezoneOffset","getTimezoneOffset","fixExtent","_niceExtent","parseDate","methodName","model","useUTC","SeriesModel","dependencies","getInitialData","useEncodeDefaulter","legendHoverLink","lineStyle","step","smooth","smoothMonotone","symbol","showSymbol","showAllSymbol","connectNulls","sampling","animationEasing","hoverLayerThreshold","_vm","$createElement","_c","_self","icon","_s","_e","$event","$emit","hideClose","staticRenderFns","components","BAvatar","String","default","Boolean","component","wx","getSystemInfoSync","browser","os","svgSupported","touchEventsSupported","domSupported","worker","navigator","detect","ua","firefox","ie","edge","weChat","test","SVGRect","pointerEventsSupported","pathTool","colorTool","Path","Image","Text","Circle","Sector","Ring","Polygon","Polyline","Line","BezierCurve","Arc","CompoundPath","LinearGradient","RadialGradient","IncrementalDisplayable","subPixelOptimizeUtil","EMPTY_OBJ","Z2_EMPHASIS_LIFT","CACHED_LABEL_STYLE_PROPERTIES","textBorderColor","textBorderWidth","EMPHASIS","NORMAL","_highlightNextDigit","_highlightKeyMap","_customShapeMap","extendShape","extendPath","pathData","extendFromString","registerShape","ShapeClass","getShapeClass","makePath","createFromString","centerGraphic","resizePath","makeImage","imageUrl","img","boundingRect","mergePath","pathRect","calculateTransform","subPixelOptimizeLine","param","subPixelOptimizeRect","subPixelOptimize","hasFillOrStroke","fillOrStroke","liftedColorMap","liftedColorCount","liftColor","liftedColor","lift","cacheElementStl","__hoverStlDirty","__hoverStl","normalStyle","__cachedNormalStl","__cachedNormalZ2","singleEnterEmphasis","hoverStl","__highlighted","isGroup","elTarget","targetStyle","addHover","rollbackDefaultTextStyle","extendFrom","setDefaultHoverFillStroke","applyDefaultTextStyle","prop","singleEnterNormal","highlighted","removeHover","normalStl","normalZ2","traverseUpdate","updater","commonParam","child","__highDownOnUpdate","setElementHoverStyle","onElementMouseOver","shouldSilent","__highByOuter","onElementMouseOut","onElementEmphasisEvent","highlightDigit","onElementNormalEvent","__highDownSilentOnTouch","zrByTouch","setAsHighDownDispatcher","asDispatcher","disable","highDownSilentOnTouch","__highDownDispatcher","method","isHighDownDispatcher","getHighlightDigit","highlightKey","emphasisStyle","normalModel","emphasisModel","normalSpecified","emphasisSpecified","baseText","labelDimIndex","labelProp","showNormal","showEmphasis","getFormattedLabel","isFunction","normalStyleText","emphasisStyleText","retrieve2","setTextStyle","modifyLabelStyle","normalStyleProps","emphasisStyleProps","textStyle","specifiedTextStyle","isEmphasis","setTextStyleCommon","setText","defaultColor","textPosition","getTextPosition","textOffset","textRotation","textDistance","richResult","globalTextStyle","richItemNames","getRichItemNames","richTextStyle","setTokenTextStyle","rich","forceRich","richItemNameMap","parentModel","isBlock","textFill","getAutoColor","textStroke","textStrokeWidth","insideRollbackOpt","fontStyle","fontWeight","fontFamily","textAlign","textVerticalAlign","textLineHeight","textWidth","textHeight","textTag","disableBox","textBackgroundColor","textPadding","textBorderRadius","textBoxShadowColor","textBoxShadowBlur","textBoxShadowOffsetX","textBoxShadowOffsetY","textShadowColor","textShadowBlur","textShadowOffsetX","textShadowOffsetY","insideRollback","useInsideStyle","useInsideStyleCache","useAutoColorCache","gTextStyleModel","trim","animateOrSetProps","isUpdate","animatableModel","animationEnabled","postfix","animationDelay","getAnimationDelayParams","getTransform","ancestor","mat","transformDirection","direction","hBase","vBase","vertex","groupTransition","g1","g2","elMap1","getElMap","anid","oldEl","newProp","getAnimatableProps","g","elMap","clipPointsByRect","clipRectByRect","targetRect","createIcon","iconStr","replace","linePolygonIntersect","a1x","a1y","a2x","a2y","lineLineIntersect","b1x","b1y","b2x","b2y","mx","my","nx","ny","nmCrossProduct","crossProduct2d","nearZero","b1a1x","b1a1y","q","definePropertyModule","createPropertyDescriptor","POSSIBLE_STYLES","compatEC2ItemStyle","itemStyleOpt","styleName","normalItemStyleOpt","normal","emphasisItemStyleOpt","emphasis","merge","convertNormalEmphasis","optType","useExtend","normalOpt","removeEC3NormalStatus","compatTextStyle","labelOptSingle","TEXT_STYLE_OPTIONS","compatEC3CommonStyles","processSeries","seriesOpt","markPoint","markLine","markArea","nodes","edgeData","links","edges","mpData","mlData","breadcrumb","levels","leaves","toArr","o","toObj","isTheme","series","axes","axisName","axisOpt","axisPointer","parallel","parallelOpt","parallelAxisDefault","calendar","calendarOpt","radar","radarOpt","geo","geoOpt","regions","regionObj","timeline","timelineOpt","toolbox","toolboxOpt","feature","featureOpt","tooltip","properties","excludes","includes","legend","selector","all","inverse","polygon","lineX","lineY","keep","dataView","lang","dataZoom","zoom","back","magicType","line","bar","stack","tiled","restore","saveAsImage","typeNames","pie","scatter","effectScatter","tree","treemap","boxplot","candlestick","heatmap","lines","graph","sankey","funnel","gauge","pictorialBar","themeRiver","sunburst","aria","general","withTitle","withoutTitle","single","prefix","withName","withoutName","multiple","separator","middle","allData","partialData","objectToString","isDataItemOption","DefaultDataProvider","dimSize","seriesDataToSource","_source","_data","_offset","_dimSize","methods","providerMethods","providerProto","pure","persistent","getItem","appendData","appendDataSimply","countSimply","getItemSimply","col","dims","newCol","oldCol","clean","rawValueGetters","arrayRows","getRawValueSimply","objectRows","dataItem","keyedColumns","original","typedArray","defaultDimValueGetters","getDimValueSimply","converDataValue","_dimensionInfos","_rawData","dimInfo","parseAndCollect","NaN","retrieveRawValue","getRawDataItem","getProvider","getDimensionInfo","retrieveRawAttr","classof","propertyIsEnumerable","freeGlobal","freeSelf","Function","fixShadow","_constant","ContextCachedBy","STYLE_COMMON_PROPS","createLinearGradient","canvasGradient","createRadialGradient","fillOpacity","strokeOpacity","lineDashOffset","lineWidth","font","textFont","textRect","transformText","textOrigin","truncate","blend","prevStyle","notCheckCache","__attrCachedBy","STYLE_BIND","fillStyle","strokeStyle","globalAlpha","globalCompositeOperation","hasStroke","getLineScale","hasFill","otherStyle","overwrite","newStyle","getGradient","colorStops","addColorStop","styleProto","propertyKey","isCallable","aFunction","argument","namespace","debugMode","OTHER_DIMENSIONS","summarizeDimensions","summary","notExtraCoordDimMap","defaultedLabel","defaultedTooltip","userOutput","dimensionNames","dimItem","coordDim","coordDimIndex","getOrCreateEncodeArr","isExtraCoord","mayLabelDimType","defaultTooltip","otherDim","encodeArr","otherDims","dataDimsOnCoord","encodeFirstDimNotExtra","dimArr","encodeLabel","encodeTooltip","getDimensionTypeByAxis","axisType","Ellipse","_path","DILIMITER_REG","parseXML","svg","parser","DOMParser","parseFromString","nodeType","firstChild","nodeName","toLowerCase","nextSibling","SVGParser","_defs","_root","_isDefine","_isText","xml","viewBox","getAttribute","parseFloat","parseAttributes","viewBoxRect","viewBoxTransform","_parseNode","viewBoxArr","makeViewBoxTransform","ignoreViewBox","elRoot","ignoreRootClip","setClipPath","xmlNode","parentGroup","defineParsers","def","id","nodeParsers","_parseText","_textX","_textY","textContent","inheritStyle","setShape","circle","ellipse","parsePoints","polyline","gradient","_parseGradientColorStops","stopColor","__inheritedStyle","pointsString","attributesMap","defs","onlyInlineStyle","zrStyle","isTextEl","parseTransformAttribute","parseStyleAttribute","svgAttrName","attrValue","elFillProp","elStrokeProp","getPaint","elPropName","textBaseline","urlRegex","str","urlMatch","url","transformRegex","transformOps","console","warn","styleRegex","styleRegResult","styleList","viewBoxScale","viewBoxPosition","parseSVG","util","_event","Dispatcher","requestAnimationFrame","Animation","options","stage","_clips","_running","_time","_pausedTime","_pauseStart","addAnimator","clips","removeAnimator","_update","getTime","delta","deferredEvents","deferredClips","_needsRemove","pop","fire","_startLoop","isFinished","List","_dimensionHelper","CoordinateSystem","_referHelper","getCoordSysInfoBySeries","coordSysDimDefs","coordSysName","registeredCoordSys","coordSysInfo","coordSysDims","axisMap","getDimensionsInfo","firstCategoryDimIndex","hasNameEncode","dimInfoList","generateCoord","encodeDefaulter","categoryAxisModel","categoryAxisMap","stackCalculationInfo","setCalculationInfo","dimValueGetter","isNeedCompleteOrdinalData","itemOpt","defaultDimValueGetter","initData","sampleItem","firstDataNotNull","check","globalThis","transformPath","vMag","vRatio","u","vAngle","acos","processArc","fa","psiDeg","xp","yp","lambda","cxp","cyp","commandReg","numberReg","createPathProxyFromString","prevCmd","cpx","cpy","subpathX","subpathY","cmdList","cmdText","cmdStr","charAt","pLen","ctlPtx","ctlPty","createPathOptions","pathProxy","buildPath","pathEls","pathList","pathEl","createPathProxy","__dirtyPath","pathBundle","arraySpeciesConstructor","originalArray","nullTag","undefinedTag","baseGetTag","RADIAN_EPSILON","_trim","linearMap","domain","clamp","subDomain","subRange","precision","returnStr","toFixed","asc","arr","getPrecision","getPrecisionSafe","eIndex","dotIndex","getPixelPrecision","pixelExtent","log","LN10","dataQuantity","sizeQuantity","getPercentWithPrecision","valueList","sum","reduce","acc","digits","pow","votesPerQuota","targetSeats","seats","votes","currentSum","remainder","NEGATIVE_INFINITY","maxId","remRadian","radian","pi2","isRadianAroundZero","TIME_REG","hour","toUpperCase","UTC","quantity","quantityExponent","exp","nf","exponent","exp10","quantile","ascArr","H","reformIntervals","littleThan","curr","currClose","close","lg","isNumeric","_dataProvider","_format","getTooltipMarker","formatTpl","getTooltipRenderMode","DIMENSION_LABEL_REG","getDataParams","dataType","rawValue","getRawValue","rawDataIndex","getRawIndex","borderColor","renderModeOption","renderMode","mainType","isSeries","componentType","componentSubType","subType","componentIndex","seriesType","seriesId","marker","$vars","status","params","formatter","dimensionIndex","formatTooltip","makeStyleMapper","getLineStyle","getLineDash","lineType","dotSize","dashSize","Displayble","IncrementalDisplayble","_displayables","_temporaryDisplayables","_cursor","notClear","clearDisplaybles","addDisplayable","displayable","notPersistent","addDisplayables","displayables","eachPendingDisplayable","childRect","union","localPos","zrender","timsort","GlobalModel","ExtensionAPI","OptionManager","backwardCompat","ChartView","_throttle","throttle","seriesColor","loadingDefault","Scheduler","lightTheme","darkTheme","mapDataStorage","parseClassType","TEST_FRAME_REMAIN_TIME","PRIORITY_PROCESSOR_FILTER","PRIORITY_PROCESSOR_SERIES_FILTER","PRIORITY_PROCESSOR_DATASTACK","PRIORITY_PROCESSOR_STATISTIC","PRIORITY_VISUAL_LAYOUT","PRIORITY_VISUAL_PROGRESSIVE_LAYOUT","PRIORITY_VISUAL_GLOBAL","PRIORITY_VISUAL_CHART","PRIORITY_VISUAL_POST_CHART_LAYOUT","PRIORITY_VISUAL_COMPONENT","PRIORITY_VISUAL_BRUSH","PRIORITY","PROCESSOR","FILTER","SERIES_FILTER","STATISTIC","VISUAL","LAYOUT","PROGRESSIVE_LAYOUT","GLOBAL","CHART","POST_CHART_LAYOUT","COMPONENT","BRUSH","IN_MAIN_PROCESS","OPTION_UPDATED","ACTION_REG","createRegisterEventWithLowercaseName","ignoreDisposed","_disposed","disposedWarning","MessageCenter","ECharts","dom","theme","themeStorage","_dom","defaultRenderer","renderer","_throttledZrFlush","flush","_theme","_chartsViews","_chartsMap","_componentsViews","_componentsMap","_coordSysMgr","_api","createExtensionAPI","prioritySortFunc","__prio","visualFuncs","dataProcessorFuncs","_scheduler","_ecEventProcessor","EventProcessor","_messageCenter","_initEvents","resize","_pendingActions","_onframe","bindRenderedEvent","setAsPrimitive","echartsProto","doConvertPixel","coordSysList","parseFinder","scheduler","prepare","updateMethods","flushPendingActions","triggerUpdatedEvent","unfinished","remainTime","startTime","performSeriesTasks","performDataProcessorTasks","updateStreamModes","performVisualTasks","renderSeries","getDom","setOption","notMerge","lazyUpdate","optionManager","optionPreprocessorFuncs","setTheme","getOption","getDevicePixelRatio","getRenderedCanvas","pixelRatio","getSvgDataURL","storage","getDisplayList","toDataURL","getDataURL","excludeComponents","excludesComponentViews","eachComponent","view","__viewId","ignore","getType","getConnectedDataURL","isSvg","groupId","MAX_NUMBER","connectedGroups","canvasList","instances","chart","canvas","getSvgDom","getBoundingClientRect","targetCanvas","createCanvas","getSvgRoot","connectedBackgroundColor","setBackgroundColor","refreshImmediately","convertToPixel","convertFromPixel","containPixel","models","containPoint","getVisual","visualType","defaultMainType","dataIndexInside","indexOfRawIndex","getViewOfComponentModel","componentModel","getViewOfSeriesModel","prepareAndUpdate","coordSysMgr","restoreData","clearColorPalette","colorArr","stringify","performPostUpdateFuncs","ecIns","componentDirtyList","componentView","__alive","seriesDirtyMap","eachSeries","chartView","setDirty","dirtyMap","updateView","markUpdateMethod","updateVisual","updateLayout","restorePipelines","prepareStageTasks","prepareView","plan","updateDirectly","condition","excludeSeriesId","normalizeToArray","callView","__model","chartsMap","doDispatchAction","payloadType","escapeConnect","actionWrap","actions","actionInfo","cptType","updateMethod","payloads","batched","batch","eventObj","eventObjBatch","isHighDown","batchItem","action","main","sub","pendingActions","shift","isComponent","viewList","viewMap","doPrepare","viewId","classType","Clazz","getClass","__id","__ecComponentInfo","renderTask","remove","renderComponents","dirtyList","updateZ","updatePayload","perform","getPerformArgs","updateBlend","updateHoverLayerStatus","postUpdateFuncs","func","_loadingFX","optionChanged","resetOption","showLoading","cfg","hideLoading","loadingEffects","makeActionFromEvent","eventActionMap","MOUSE_EVENT_NAMES","elCount","preventUsingHoverLayer","blendMode","ecInstance","getComponentByElement","modelInfo","eventInfo","eveName","isGlobalOut","dataModel","eventData","targetEl","packedEvent","actionType","isDisposed","setAttribute","DOM_ATTRIBUTE_KEY","cptQuery","dataQuery","otherQuery","condCptType","suffixes","dataKeys","reserved","propSuffix","suffixPos","lastIndexOf","filterForExposedEvent","propOnHost","idBase","groupIdBase","enableConnect","STATUS_PENDING","STATUS_UPDATING","STATUS_UPDATED","STATUS_KEY","updateConnectedChartsStatus","charts","otherChart","otherCharts","existInstance","getInstanceByDom","connect","disConnect","disconnect","getInstanceById","registerTheme","preprocessorFunc","registerProcessor","priority","processor","normalizeRegister","registerPostUpdate","postUpdateFunc","registerCoordinateSystem","getCoordinateSystemDimensions","coordSysCreator","registerLayout","layoutTask","registerVisual","visualTask","targetList","fn","defaultPriority","stageHandler","wrapStageHandler","__raw","registerLoading","loadingFx","extendComponentModel","extendSeriesModel","extendChartView","setCanvasCreator","creator","$override","registerMap","mapName","geoJson","specialAreas","getMap","retrieveMap","geoJSON","dataTool","___ec_export","scaleAndAdd","lenSquare","lengthSquare","div","dot","s","distance","distanceSquare","distSquare","negate","lerp","now","createMethod","IS_INCLUDES","$this","fromIndex","LRU","kCSSColorTable","clampCssByte","clampCssAngle","clampCssFloat","parseCssInt","parseCssFloat","cssHueToRgb","lerpNumber","setRgba","copyRgba","colorCache","lastRemovedArr","putToCache","colorStr","rgbaArr","put","cached","op","ep","fname","substr","alpha","hsla2rgba","iv","hsla","rgba2hsla","S","G","B","vMin","vMax","deltaR","deltaG","deltaB","fastLerp","normalizedValue","colors","leftIndex","rightIndex","leftColor","rightColor","dv","fastMapToColor","fullOutput","mapToColor","modifyHSL","modifyAlpha","arrColor","Gradient","TooltipRichContent","findPointFromSeries","layoutUtil","globalListener","axisPointerViewHelper","proxyRect","tooltipContent","_renderMode","_newLine","_tooltipContent","_tooltipModel","_ecModel","_lastDataByCoordSys","_alwaysShowContent","_initGlobalListener","_keepShow","triggerOn","_tryShow","_hide","_lastX","_lastY","_refreshUpdateTimeout","manuallyShowTip","_ticket","dataByCoordSys","offsetX","offsetY","tooltipOption","_manuallyAxisShowTip","pointInfo","findHover","manuallyHideTip","coordSysAxesInfo","buildTooltipModel","_showAxisTooltip","_showSeriesItemTooltip","_showComponentItemTooltip","_showOrMove","_showTimout","globalTooltipModel","singleDefaultHTML","singleParamsList","singleTooltipModel","newLine","markers","itemCoordSys","dataByAxis","axisIndex","axisValue","seriesDefaultHTML","valueLabel","getValueLabel","seriesDataIndices","valueLabelOpt","idxItem","dataParams","axisId","getAxisRawValue","axisValueLabel","seriesTooltip","newMarkers","firstLine","encodeHTML","reverse","positionExpr","_updateContentNotChangedOnAxis","_updatePosition","_showTooltipContent","random","tooltipTrigger","defaultHtml","asyncTicket","tooltipOpt","subTooltipModel","cbTicket","viewWidth","viewHeight","contentSize","vAlign","viewSize","layoutRect","calcTooltipPosition","refixTooltipPosition","isCenterAlign","confineTooltipPosition","lastCoordSys","contentNotChanged","lastItemCoordSys","indexCoordSys","lastDataByAxis","thisItemCoordSys","thisDataByAxis","lastItem","indexAxis","thisItem","lastIndices","newIndices","lastIdxItem","newIdxItem","modelCascade","resultModel","gapH","gapV","size","domWidth","domHeight","gap","rectWidth","rectHeight","_clazz","enableClassExtend","enableClassCheck","lineStyleMixin","areaStyleMixin","textStyleMixin","itemStyleMixin","doGet","pathArr","getParent","getParentMethod","mergeOption","ignoreParent","parsePath","thisParentModel","isEmpty","Ctor","setReadOnly","customizeGetParent","easingFuncs","_life","_initialized","onrestart","globalTime","deltaTime","_startTime","easingFunc","schedule","restart","arg","r0","PI2","legendSelectActionHandler","isSelected","selectedMap","isToggleSelect","legendModel","legendData","isItemSelected","selected","globalCoord","AxisPointerModel","snap","triggerTooltip","link","animationDurationUpdate","shadowStyle","margin","borderWidth","handle","axisModelCreator","AxisModel","superApply","queryComponents","gridIndex","gridId","getAxisType","extraOption","BLANK_TEMPLATE","makeBlankImgSrc","encodeURIComponent","blank","blankColor","block","fluid","fluidGrow","rounded","sizes","srcset","thumbnail","BImg","logError","titleTag","BCardTitle","_vector","v2Create","v2DistSquare","mathPow","EPSILON_NUMERIC","THREE_SQRT","ONE_THIRD","_v0","_v1","_v2","isAroundZero","onet","cubicDerivativeAt","cubicRootAt","roots","c","t1","disc","K","discSqrt","Y1","Y2","T","ASqrt","cubicExtrema","extrema","cubicSubdivide","p01","p12","p23","p012","p123","p0123","cubicProjectPoint","prev","next","d1","d2","_t","quadraticAt","quadraticDerivativeAt","quadraticRootAt","quadraticExtremum","divider","quadraticSubdivide","quadraticProjectPoint","BaseAxisPointer","viewHelper","cartesianAxisHelper","AxisView","CartesianAxisPointer","makeElOption","elOption","axisPointerModel","axisPointerType","otherExtent","getCartesian","getOtherAxis","getGlobalExtent","pixelValue","buildElStyle","pointerOption","pointerShapeBuilder","graphicKey","pointer","layoutInfo","buildCartesianSingleLabelElOption","getHandleTransform","labelMargin","getTransformedPosition","updateHandleTransform","axisExtent","currPosition","cursorOtherValue","cursorPoint","tooltipOptions","verticalAlign","targetShape","makeLineShape","getAxisDimIndex","shadow","bandWidth","getBandWidth","makeRectShape","registerAxisPointerClass","fixClipWithShadow","clockwise","unitX","unitY","isSymbol","getMethod","ordinaryToPrimitive","wellKnownSymbol","TO_PRIMITIVE","input","pref","exoticToPrim","reWhitespace","trimmedEndIndex","string","dev","addCommas","colorPaletteMixin","dataFormatMixin","getLayoutParams","mergeLayoutParam","_task","createTask","legendVisualProvider","visualColorAccessPath","visualBorderColorAccessPath","layoutMode","extraOpt","dataTask","dataTaskCount","reset","dataTaskReset","mergeDefaultAndTheme","wrapData","dataBeforeProcessed","autoSeriesName","inputPositionParams","themeSubType","hasClass","getTheme","getDefaultOption","defaultEmphasis","fillDataTextStyle","newSeriesOption","getRawData","task","getCurrentTask","getLinkedData","modifyOutputEnd","setOutputEnd","outputData","getBaseAxis","multipleSeries","isRichText","markerId","formatArrayValue","vertially","setEachItem","markName","dimHead","dimHeadStr","valStr","tooltipDims","formatSingleValue","tooltipDimLen","isValueArr","formattedValue","colorEl","isNameSpecified","getColorFromPalette","scope","requestColorNum","coordDimToDataDim","getProgressive","getProgressiveThreshold","getAxisTooltipData","pipeTask","preventIncremental","pipelineContext","getSeriesAutoName","dataDims","nameArr","dataDim","cloneShallow","dataTaskProgress","CHANGABLE_METHODS","wrapMethod","onDataSelfChange","pipeline","getPipeline","currentTask","agentStubMap","smoothSpline","smoothBezier","controlPoints","smoothConstraint","cp1","cp2","getBorderLineDash","EXISTS","DataDimensionInfo","r1","r2","r3","r4","total","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","FORCED","targetProperty","sourceProperty","descriptor","TARGET","STATIC","stat","noTargetGet","rectCoordAxisBuildSplitArea","axisView","axisGroup","splitAreaModel","areaStyleModel","areaColors","gridRect","ticksCoords","getTicksCoords","tickModel","areaColorsLen","lastSplitAreaColors","__splitAreaColors","newSplitAreaColors","colorIndex","cIndex","tickValue","areaStyle","getAreaStyle","tickCoord","isHorizontal","rectCoordAxisHandleRemove","_axisHelper","ifAxisCrossZero","estimateLabelUnionRect","Cartesian2D","Axis2D","isAxisUsedInTheGrid","Grid","_coordsMap","_coordsList","_axesMap","_axesList","_initCartesian","gridProto","fixAxisOnZero","axesMap","otherAxisDim","onZeroRecords","otherAxes","onZeroAxisIndex","canOnZeroToAxis","getOnZeroRecordKey","updateAxisTransform","coordBase","getExtent","axisExtentSum","toLocalCoord","axisPointerEnabled","_updateScale","ignoreContainLabel","getBoxLayoutParams","axesList","adjustAxes","labelUnionRect","getAxis","axesMapOnDim","getAxes","xAxisIndex","yAxisIndex","coordList","getCartesians","_findConvertTarget","cartesian","pointToData","coordToData","xAxisModel","getReferringComponents","yAxisModel","coordsList","axisPositionUsed","axesCount","createAxisCreator","isCategory","onBand","addAxis","isCartesian2D","axesModels","findAxesModels","getTooltipAxes","baseAxes","baseAxis","otherAxis","axesTypes","grids","Pattern","returnFalse","createDom","newDom","newDomStyle","Layer","onselectstart","domBack","ctxBack","config","clearColor","motionBlur","lastFrameAlpha","__used","__drawIndex","__startIndex","__endIndex","getElementCount","initContext","createBackBuffer","clearAll","clearColorGradientOrPattern","haveMotionBLur","clearRect","__canvasGradient","getCanvasPattern","save","fillRect","globalImageCache","findExistImage","newImageOrSrc","cachedImgObj","hostEl","cbPayload","__zrImageSrc","pendingWrap","pending","onerror","imageOnLoad","__cachedImgObj","_listComponent","makeBackground","newlineDisabled","_contentGroup","_backgroundEl","_selectorGroup","_isFirstRender","getContentGroup","getSelectorGroup","isFirstRender","resetInner","itemAlign","orient","selectorPosition","renderInner","positionInfo","viewportSize","maxSize","mainRect","layoutInner","contentGroup","legendDrawnMap","selectMode","eachRawSeries","getSeriesByName","legendSymbolType","itemGroup","_createItem","dispatchSelectAction","dispatchHighlightAction","dispatchDownplayAction","provider","containName","indexOfName","newline","_createSelector","selectorGroup","createSelectorButton","selectorItem","labelText","onclick","emphasisLabelModel","itemWidth","itemHeight","inactiveColor","inactiveBorderColor","symbolKeepAspect","legendModelItemStyle","itemIcon","legendGlobalTooltipModel","legendSymbol","setSymbolStyle","legendSymbolCenter","textX","hitRect","formatterParams","legendIndex","eachChild","__legendDataIndex","box","contentRect","contentPos","selectorRect","selectorPos","selectorButtonGap","orientIdx","getOrient","wh","hw","yx","dataName","isCanvasEl","transformCoordWithViewport","isDomLevel2","addEventListener","MOUSE_EVENT_REG","_calcOut","calculate","calculateZrXY","layerX","layerY","ex","clientX","ey","clientY","getNativeEvent","isTouch","targetTouches","changedTouches","zrDelta","wheelDelta","detail","button","which","attachEvent","removeEventListener","detachEvent","preventDefault","stopPropagation","cancelBubble","returnValue","isMiddleOrRightButtonOnMouseUpDown","notLeftMouse","internalObjectKeys","enumBugKeys","DataDiffer","UNDEFINED","INDEX_NOT_FOUND","ID_PREFIX","dataCtors","Float64Array","Int32Array","CtorUint32Array","Uint32Array","CtorInt32Array","CtorUint16Array","Uint16Array","getIndicesCtor","_rawCount","cloneChunk","originalChunk","TRANSFERABLE_PROPERTIES","CLONE_PROPERTIES","transferProperties","__wrappedMethods","_calculationInfo","dimensionInfos","invertedIndicesMap","dimensionInfo","dimensionName","createInvertedIndices","_indices","_count","_storage","_nameList","_idList","_optionModels","_visual","_itemVisuals","hasItemVisual","_itemLayouts","_graphicEls","_chunkSize","_chunkCount","_rawExtent","_approximateExtent","_dimensionsSummary","_invertedIndicesMap","listProto","prepareChunks","chunkSize","chunkCount","DataCtor","lastChunkIndex","resizeChunkArray","newStore","prepareInvertedIndex","invertedIndices","getRawValueFromStore","rawIndex","chunkIndex","chunkOffset","chunk","getRawIndexWithoutIndices","getRawIndexWithIndices","getId","_idDimIdx","normalizeDimensions","cloneListForMapAndSample","excludeDimensions","allDimensions","originalStorage","cloneDimStore","getInitialExtent","originalDimStore","newDimStore","getDimension","getDimensionsOnCoord","dimensionsSummary","nameList","notProvider","_nameRepeatCount","_dimValueGetter","_dimValueGetterArrayRows","_initDataFromProvider","rawData","appendValues","values","dimLen","rawExtent","originalChunkCount","emptyDataItem","sourceIdx","dimRawExtent","nameDimIdx","dimensionInfoMap","idList","nameRepeatCount","_nameDimIdx","itemId","dimStorage","nameDim","nameDimChunk","getIndices","indices","thisCount","buffer","chunkStore","getByRawIndex","rawIdx","dimStore","_getFast","hasValue","getDataExtent","dimData","initialExtent","dimExtent","currEnd","useRaw","setApproximateExtent","getCalculationInfo","getSum","getMedian","dimDataArray","sortedDimDataArray","rawIndexOf","indicesOfNearest","maxDistance","nearestIndices","minDist","minDiff","nearestIndicesLen","diff","contextCompat","filterSelf","dim0","selectRange","originalCount","quickFinished","chunkStorage","dimStorage2","chunkStorage2","val2","dimk","mapArray","tmpRetValue","dataCount","retValue","rawExtentOnDim","downSample","dimension","rate","sampleValue","sampleIndex","targetStorage","frameValues","frameSize","dataIdx","originalChunkIndex","originalChunkOffset","sampleFrameIdx","sampleChunkIndex","sampleChunkOffset","otherList","thisList","visual","setVisual","setLayout","getLayout","getItemLayout","setItemLayout","clearItemLayouts","itemVisual","setItemVisual","clearAllVisual","setItemDataAndSeriesIndex","setItemGraphicEl","eachItemGraphicEl","dimensionInfoList","injectFunction","originalMethod","res","TRANSFERABLE_METHODS","v2Distance","interpolate","isLoop","segs","w2","w3","TYPE_DELIMITER","IS_CONTAINER","checkClassType","RootClass","mandatoryMethods","$constructor","superClass","ExtendedClass","superCall","classBase","Clz","classAttr","enableClassManagement","entity","makeContainer","registerClass","componentMainType","throwWhenNotFound","getClassesByMainType","getAllClassMainTypes","types","hasSubTypes","registerWhenExtend","originalExtend","TO_STRING_TAG_SUPPORT","classofRaw","TO_STRING_TAG","CORRECT_ARGUMENTS","tryGet","callee","$propertyIsEnumerable","NASHORN_BUG","1","V","V8_VERSION","SPECIES","METHOD_NAME","foo","getBuiltIn","$Symbol","_fourPointsTransform","buildTransformer","EVENT_SAVED_PROP","elFrom","inX","inY","saved","prepareCoordMarkers","transformer","preparePointerTransformer","propLR","propTB","idxLR","idxTB","transformerName","oldSrcCoords","srcCoords","oldCoordTheSame","destCoords","ii","axisPointerModelHelper","_axisPointer","axisPointerClass","fixValue","updateAxisPointer","disposeAxisPointer","forceRender","getAxisPointerClass","getAxisPointerModel","axisPointerClazz","clazz","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","inspectSource","WeakMap","_curve","containStroke","_l","_barGrid","prepareLayoutBarSeries","makeColumnLayout","retrieveColumnLayout","getScaleExtent","axisDataLen","boundaryGap","scaleType","originalExtent","getCategories","setBlank","isBaseAxisAndHasBarSeries","barSeriesModels","barWidthAndOffset","adjustedScale","adjustScaleForOverflow","axisLength","barsOnCurrentAxis","minOverflow","maxOverflow","totalOverFlow","oldRange","oldRangePercentOfNew","overflowBuffer","extentInfo","base","setInterval","makeLabelFormatter","labelFormatter","getLabelModel","categoryTickStart","tpl","tick","realNumberScaleTicks","tickCount","categoryScaleExtent","axisLabelModel","unrotatedSingleRect","getTextRect","singleRect","rotateTextRect","rotateRadians","boundingBox","plain","beforeWidth","beforeHeight","afterWidth","afterHeight","rotatedRect","getOptionCategoryInterval","shouldShowAllLabels","guid","Handler","Storage","Painter","HandlerProxy","useVML","painterCtors","ZRender","getInstance","registerPainter","delInstance","rendererType","vml","handerProxy","_needsRefresh","oldDelFromStorage","delFromStorage","oldAddToStorage","addToStorage","removeSelfFromZr","addSelfToZr","addRoot","delRoot","configLayer","zLevel","_needsRefreshHover","triggerRendered","refreshHoverImmediately","elMirror","refreshHover","clearHover","clearAnimation","pathToImage","setCursorStyle","eventHandler","_component","getUID","dataProcessorHandlers","visualHandlers","_dataProcessorHandlers","_visualHandlers","_allHandlers","_stageTaskMap","performStageTasks","stageHandlers","needSetDirty","__pipeline","stageHandlerRecord","seriesTaskMap","overallTask","overallNeedDirty","stub","performArgs","pipelineId","skip","performRawSeries","isSeriesFiltered","taskRecord","_pipelineMap","pCtx","progressiveEnabled","progressiveRender","__idxInPipeline","blockIndex","modDataCount","modBy","dataLen","incrementalPrepareRender","threshold","large","pipelineMap","head","tail","pipe","stageTaskMap","createSeriesStageTask","overallReset","createOverallStageTask","__block","getUpstream","getTargetSeries","seriesTaskPlan","seriesTaskReset","seriesTaskCount","useClearVisual","isVisual","isLayout","createOnAllSeries","eachRawSeriesByType","removeKey","overallTaskReset","overallProgress","createStub","stubReset","onDirty","stubOnDirty","agent","getSeries","upstreamContext","stubProgress","getDownstream","resetDefines","makeSeriesTaskProgress","singleSeriesTaskProgress","resetDefineIdx","resetDefine","dataEach","progress","detectSeriseType","legacyFunc","ecModelMock","apiMock","mockMethods","eachSeriesByType","cond","componentUtil","boxLayoutMixin","dependentModels","themeModel","newCptOption","fields","optList","Class","getDependencies","deps","unshift","enableSubTypeDefaulter","enableTopologicalTravel","BUILTIN_OBJECT","TYPED_ARRAY","objToString","arrayProto","nativeForEach","nativeFilter","nativeSlice","nativeMap","nativeReduce","typeStr","isPrimitive","isDom","targetProp","sourceProp","isBuiltInObject","mergeAll","targetAndSources","baseClazz","clazzPrototype","F","memo","find","ownerDocument","value1","retrieve3","value2","message","primitiveKey","HashMap","isArr","thisMap","visit","concatArray","newArray","empty","construct","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","called","nameLocation","nameRotate","nameTruncate","maxWidth","ellipsis","placeholder","nameTextStyle","nameGap","triggerEvent","axisLine","axisTick","inside","axisLabel","showMinLabel","showMaxLabel","splitLine","splitArea","axisDefault","categoryAxis","deduplication","alignWithLabel","valueAxis","minorTick","minorSplitLine","timeAxis","logAxis","logBase","toPrimitive","linear","quadraticIn","quadraticOut","quadraticInOut","cubicIn","cubicOut","cubicInOut","quarticIn","quarticOut","quarticInOut","quinticIn","quinticOut","quinticInOut","sinusoidalIn","sinusoidalOut","sinusoidalInOut","exponentialIn","exponentialOut","exponentialInOut","circularIn","circularOut","circularInOut","elasticIn","asin","elasticOut","elasticInOut","backIn","backOut","backInOut","bounceIn","bounceOut","bounceInOut","DOMIterables","handlePrototype","CollectionPrototype","COLLECTION_NAME","changeStat","$$v","expression","_v","balance","unit_money","loading","raf","webkitRequestAnimationFrame","mozRequestAnimationFrame","caf","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","createStyles","styleText","styleSheet","createTextNode","querySelector","tagName","elem","pseudo","computedStyle","getRenderInfo","documentElement","contains","detached","rendered","current","css","addListener","__resize_mutation_handler__","handleMutation","listeners","__resize_listeners__","ResizeObserver","offsetWidth","offsetHeight","ro","__resize_observer_triggered__","runCallbacks","__resize_observer__","observe","__resize_legacy_resize_handler__","initTriggers","__resize_rendered__","MutationObserver","mo","attributes","childList","characterData","subtree","__resize_mutation_observer__","removeListener","unobserve","handleScroll","__resize_triggers__","triggers","getUpdatedSize","__resize_last__","resetTriggers","__resize_raf__","updated","__resize_old_position__","className","expand","expandChild","contract","csw","scrollWidth","csh","scrollHeight","eow","eoh","esw","esh","scrollLeft","scrollTop","initOptions","autoresize","watchShallow","manualUpdate","lastArea","watch","mergeOptions","manualOptions","delegateMethod","delegateGet","getArea","$el","$listeners","__resizeHandler","computedOptions","initOptionsWatcher","__unwatchOptions","$watch","destroy","created","INIT_TRIGGERS","REWATCH_TRIGGERS","mounted","activated","destroyed","optionData","visualMap","xAxisData","BOverlay","BButton","BFormSelectOption","BFormSelect","AppEchartLine","useJwt","textContain","textHelper","normalizeTextStyle","needDrawText","renderText","NONE","getStroke","integer","layoutBox","positionElement","boxLayoutParams","IndexedObject","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","callbackfn","that","specificCreate","boundFunction","some","every","findIndex","filterReject","SHADOW_PROPS","getOwnPropertyDescriptorModule","globalDefault","OPTION_INNER_KEY","_optionManager","baseOption","mountOption","initBase","timelineOption","getTimelineOption","mediaOptions","getMediaOption","mediaOption","newOption","componentsMap","newCptTypes","visitComponent","newCptOptionList","mapResult","mappingToExists","makeIdAndName","keyInfo","determineSubType","getComponentsByTypes","resultItem","ComponentModelClass","createSeriesIndices","componentOption","topologicalTravel","_seriesIndicesMap","_seriesIndices","isIdInner","cpts","isIdArray","cpt","isNameArray","filterBySubType","findComponents","queryCond","getQueryCond","doFilter","indexAttr","idAttr","nameAttr","queryResult","oneSeries","getSeriesByType","getSeriesCount","assertSeriesInitialized","rawSeriesIndex","getCurrentSeriesIndices","filterSeries","filteredSeries","componentTypes","isNotTargetSeries","seiresIndex","mergeTheme","notMergeColorLayer","colorLayer","themeItem","existComponent","seriesModels","defaultSymbolType","hasSymbolTypeCallback","hasSymbolSizeCallback","hasSymbolRotateCallback","hasCallback","seriesSymbol","seriesSymbolSize","itemSymbolType","itemSymbolSize","itemSymbolRotate","itemSymbolKeepAspect","defaultKeyGetter","oldArr","newArr","oldKeyGetter","newKeyGetter","_old","_new","_oldKeyGetter","_newKeyGetter","initIndexMap","keyArr","keyGetterName","dataDiffer","existence","_add","_remove","execute","oldDataIndexMap","newDataIndexMap","oldDataKeyArr","newDataKeyArr","PLAIN_TEXT","WILL_BE_RESTORED","markerRich","suffix","startId","endId","bounding","_makeModelMixin","OPTIONS_OBJECT_DEPRECATED_MSG","disabledField","htmlField","textField","valueField","formOptionsMixin","computed","formOptions","normalizeOptions","normalizeOption","disabled","_this","$options","labelField","optionsField","optionsMixin","mixins","BFormSelectOptionGroup","normalizeSlot","ariaInvalid","selectSize","localValue","computedSelectSize","inputClass","stateClass","newValue","focus","$refs","blur","onChange","selectedValue","_value","$nextTick","safeId","form","computedAriaInvalid","change","directives","ref","echartsAPIList","chartInstance","_axisTickLabelBuilder","createAxisTicks","createAxisLabels","calculateCategoryInterval","NORMALIZED_EXTENT","Axis","fixExtentWithBands","nTick","fixOnBandTicksCoords","ticksLen","last","diffSize","crossLen","ticksItem","containData","getTickModel","getMinorTicksCoords","minorTickModel","minorTicks","getMinorTicks","minorTicksCoords","minorTicksGroup","getViewLabels","labels","getRotate","langSelector","defaultSelectorOption","LegendModel","ignoreSize","_updateSelector","_updateData","hasSelected","select","potentialData","availableNames","isPotential","getAllNames","_availableNames","selectedMode","unSelect","toggleSelected","allSelect","inverseSelect","borderRadius","itemGap","selectorLabel","selectorItemGap","LN2","determinant","rows","rowStart","rowMask","colMask","detCache","cacheKey","fullRank","colStart","subRowMask","subRowStart","colLocalIdx","colTag","mA","vh","srcPointX","srcPointY","pk","normalizeRadian","angle","sysDims","dataDimNameMap","coordDimNameMap","getDimCount","userDimName","encodeDef","validDataDims","resultDimIdx","applyDim","availDimIdx","sysDimItem","sysDimIndex","sysDimItemDimsDef","sysDimItemOtherDims","sysDimItemDimsDefItem","generateCoordCount","fromZero","extra","genName","optDimCount","dir","x_","polyHelper","createRenderPlanner","isLargeRender","stackResultDim","segCount","tmpIn","tmpOut","ORIGIN_METHOD","RATE","THROTTLE_TYPE","debounce","currCall","debounceNextCall","lastCall","lastExec","timer","thisDelay","thisDebounce","debounceDelay","createOrUpdate","fnAttr","throttleType","originFn","lastThrottleType","lastRate","subTypeDefaulters","registerSubTypeDefaulter","defaulter","componentTypeMain","dependencyGetter","makeDepndencyGraph","fullNameList","noEntryList","createDependencyGraphItem","originalDeps","availableDeps","getAvailableDependencies","entryCount","dependentName","predecessor","thatItem","successor","dep","targetNameList","targetNameSet","currComponentType","currVertex","isInTargetNameSet","removeEdgeAndAdd","removeEdge","succComponentType","platform","gradientColor","animationDuration","animationEasingUpdate","animationThreshold","progressiveThreshold","shadowTemp","orignalBrush","modified","clipPaths","clipPath","helper","roundNumber","_intervalPrecision","thisExtent","other","getInterval","getIntervalPrecision","expandToNicedExtent","niceTickExtent","intervalPrecision","safeLimit","lastNiceTick","nextTick","prevTick","minorInterval","intervalScaleNiceTicks","expandSize","CoordSysInfo","fetch","fetchers","cartesian2d","singleAxis","singleAxisModel","polar","polarModel","radiusAxisModel","findAxisModel","angleAxisModel","parallelModel","parallelAxisIndex","$map","roundingErrorFix","mathLog","LogScale","_originalScale","originalScale","powVal","__fixMin","fixRoundingError","__fixMax","err","originalVal","reTrimStart","baseTrim","_needCollect","needCollect","_deduplication","_map","createByAxisModel","dedplication","getOrCreateMap","category","requireObjectCoercible","containLabel","legendModels","InternalStateModule","CONFIGURABLE_FUNCTION_NAME","CONFIGURABLE","getInternalState","enforceInternalState","enforce","TEMPLATE","state","unsafe","simple","_a","_b","v2ApplyTransform","lt","rb","lb","rt","maxX","maxY","intersect","ax0","ax1","ay0","ay1","bx0","bx1","by0","by1","msRequestAnimationFrame","textColor","maskColor","showSpinner","spinnerRadius","mask","labelRect","lineCap","animateShape","POSITION_COVER","bgColor","fixed","noCenter","noFade","noWrap","number","overlayTag","spinnerSmall","spinnerType","spinnerVariant","wrapTag","zIndex","computedRounded","computedVariant","defaultOverlayFn","$overlay","$background","backdropFilter","click","appear","v2Min","v2Max","v2Scale","v2Add","v2Clone","v2Sub","constraint","prevPoint","nextPoint","cps","d0","cp0","outputShape","inputShape","originX","originY","originWidth","originHeight","positiveOrNegative","doubledPosition","STACK_PREFIX","LARGE_BAR_MIN_WIDTH","LargeArr","getSeriesStackId","getAxisKey","getLayoutOnAxis","axisKey","stackId","widthAndOffsets","doCalBarWidthAndOffset","offsetCenter","isOnCartesian","isInLargeMode","getValueAxesMinGaps","barSeries","axisValues","cnt","axisMinGaps","valuesInAxis","seriesInfoList","minGap","extentSpan","scaleSpan","barWidth","barMaxWidth","barMinWidth","barGap","barCategoryGap","columnsMap","seriesInfo","columnsOnAxis","remainedWidth","autoWidthCount","categoryGap","stacks","minWidth","barGapPercent","autoWidth","column","finalWidth","lastColumn","widthSum","lastStackCoords","lastStackCoordsOrigin","columnLayoutInfo","columnOffset","columnWidth","barMinHeight","valueDim","baseDim","stacked","isValueAxisH","valueAxisStart","getValueAxisStart","baseValue","sign","baseCoord","largeLayout","coordLayout","valueAxisHorizontal","valueDimIdx","largePoints","largeBackgroundPoints","largeDataIndices","valuePair","pointsOffset","idxOffset","backgroundStart","tmpRect","AXIS_TYPES","BaseAxisModelClass","axisTypeDefaulter","extraDefaultOption","thisOption","__ordinalMeta","prepareDataCoordInfo","valueOrigin","valueStart","getValueStart","baseAxisDim","valueAxisDim","baseDataOffset","dataDimsForPoint","stackedOverDimension","getStackedOnPoint","dataCoordInfo","stackedData","_text","Triangle","Diamond","Pin","tanX","tanY","cpLen","cpLen2","Arrow","symbolCtors","roundRect","square","diamond","pin","arrow","triangle","symbolShapeMakers","symbolBuildProxies","inBundle","proxySymbol","symbolPathSetColor","innerColor","symbolStyle","symbolShape","__isEmptyBrush","roundRectHelper","DEFAULT_FONT","VALID_TEXT_ALIGN","VALID_TEXT_VERTICAL_ALIGN","SHADOW_STYLE_COMMON_PROPS","_tmpTextPositionResult","_tmpBoxPositionResult","normalizeStyle","makeFont","renderRichText","renderPlainText","needDrawBg","needDrawBackground","checkCache","cachedByMe","styleFont","computedFont","__computedFont","__styleFont","contentBlock","__textCotentBlock","parsePlainText","outerHeight","textLines","lineHeight","boxPos","getBoxPosition","baseX","baseY","applyTextRotation","boxY","adjustTextY","textY","outerWidth","boxX","adjustTextX","drawBackground","getTextXForPadding","propItem","styleProp","ctxProp","textStrokeWidthPrev","strokeWidthChanged","strokeChanged","getFill","strokeText","fillText","parseRichText","drawRichText","contentWidth","xLeft","lineTop","xRight","token","tokens","tokenCount","usedWidth","lineXLeft","lineXRight","placeToken","tokenStyle","isLineHolder","setCtx","isPlainBg","originalGlobalAlpha","onBgImageLoaded","maxValue","formCustomMixin","custom","showContent","alwaysShowContent","displayMode","confine","showDelay","hideDelay","extraCssText","crossStyle","someVectorAt","isTangent","cpx2","cpy2","cpx1","cpy1","pointAt","tangentAt","formSizeMixin","sizeFormClass","ox","oy","valueOf","NATIVE_WEAK_MAP","objectHas","sharedKey","OBJECT_ALREADY_INITIALIZED","getterFor","store","wmget","wmhas","wmset","metadata","facade","STATE","shapeCompareFunc","_roots","_displayList","_displayListLen","includeIgnore","updateDisplayList","displayList","_updateAndAddDisplayable","beforeUpdate","afterUpdate","userSetClipPath","currentClipPath","parentClipPath","_children","__storage","addChildrenToStorage","delChildrenFromStorage","_renderList","displayableSortFunc","toNumber","FUNC_ERROR_TEXT","nativeMax","nativeMin","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","thisArg","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","cancel","debounced","isInvoking","createGridClipPath","hasAnimation","createPolarClipPath","sectorArea","createClipPath","clazzUtil","Component","componentProto","dimensionsCount","functionToString","$forEach","arrayMethodIsStrict","STRICT_METHOD","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","graphicUtil","format","ecHelper","parseGeoJSON","_List","_Model","_Axis","_env","parseGeoJson","ecUtil","ariaModel","seriesCnt","ariaLabel","maxDataCnt","maxSeriesCnt","displaySeriesCnt","getTitle","getConfig","seriesLabels","seriesCount","seriesLabel","seriesTpl","getSeriesTypeName","displayCnt","dataLabels","keyValues","RegExp","userConfig","Animatable","animators","animatable","animateToShallow","objShallow","propertyCount","setAttrByPath","animatingShape","pathSplitted","animateFrom","Region","decode","json","UTF8Encoding","encodeScale","UTF8Scale","features","geometry","coordinates","encodeOffsets","coordinate","decodePolygon","c2","prevX","prevY","charCodeAt","nameProperty","featureObj","geometries","exterior","interiors","region","cp","nativeKeys","FAILS_ON_PRIMITIVES","propertyIsEnumerableModule","$getOwnPropertyDescriptor","colorAll","labelDims","vals","_subPixelOptimize","subPixelOptimizeOutputShape","replacement","detection","POLYFILL","NATIVE","QUERY_REG","_timelineOptions","_mediaList","_mediaDefault","_currentMediaIndices","_optionBackup","_newBaseOption","parseRawOption","rawOption","isNew","mediaDefault","timelineOptions","mediaList","media","singleMedia","preProcess","applyMediaQuery","ecWidth","ecHeight","realMap","aspectratio","applicatable","matched","operator","realAttr","real","expect","indicesEquals","indices1","indices2","oldOption","newCptOpt","oldCptOpt","oldOptionBackup","newParsedOption","isRecreate","optionBackup","timelineModel","getCurrentIndex","Draggable","_dragStart","_drag","_dragEnd","topTarget","draggingTarget","_draggingTarget","_x","_y","dispatchToElement","dropTarget","lastDropTarget","_dropTarget","axisTrigger","collect","pathContain","pathProxyForDraw","strokeContainThreshold","hasFillGradient","hasStrokeGradient","hasFillPattern","hasStrokePattern","_fillGradient","_strokeGradient","ctxLineDash","shapeCfg","needsUpdateRect","rectWithStroke","_rectWithStroke","lineScale","dirtyPath","__clipTarget","Sub","defaultShape","thisShape","Cartesian","getAxesByScale","axisX","axisY","clampData","xScale","yScale","xAxisExtent","yAxisExtent","xExtent","yExtent","originalLarge","originalProgressive","axesInfo","seriesInvolved","coordSysMap","collectAxesInfo","collectSeriesInfo","globalAxisPointerModel","linksOption","linkGroups","coordSysKey","makeKey","axesInfoInCoordSys","coordSysModel","baseTooltipModel","saveTooltipAxisInfo","triggerAxis","cross","tooltipAxes","fromTooltip","axisPointerShow","isHandleTrigger","makeAxisPointerModel","involveSeries","axisInfo","useHandle","groupIndex","getLinkGroupIndex","linkGroup","mapper","tooltipAxisPointerModel","volatileOption","field","labelOption","tooltipAxisPointerLabelShow","seriesTooltipTrigger","seriesTooltipShow","seriesDataCount","linkOption","checkPropInLink","linkPropValue","axisPropValue","getAxisInfo","TOUCH_CLICK_DELAY","globalEventSupported","localNativeListenerNames","mouseHandlerNames","touchHandlerNames","pointerEventNameMap","pointerdown","pointerup","pointermove","pointerout","pointerHandlerNames","nm","mouse","globalNativeListenerNames","eventNameFix","isPointerFromTouch","pointerType","setTouchTimer","touching","touchTimer","markTouch","normalizeGlobalEvent","instance","FakeGlobalEvent","isLocalEl","elTmp","isLocal","painterRoot","currentTarget","fakeGlobalEventProto","stopImmediatePropagation","localDOMHandlers","mousedown","_mayPointerCapture","mousemove","downPoint","togglePointerCapture","mouseup","mouseout","_pointerCapturing","zrEventControl","element","toElement","relatedTarget","zrIsToLocalDOM","touchstart","_lastTouchMoment","processGesture","touchmove","touchend","globalDOMHandlers","pointerCaptureReleasing","mountLocalDOMEventListeners","domHandlers","nativeEventName","mountSingleDOMEventListener","mountGlobalDOMEventListeners","mount","nativeEventListener","capture","listener","listenerOpts","domTarget","unmountDOMEventListeners","isPointerCapturing","globalHandlerScope","_globalHandlerScope","DOMHandlerScope","HandlerDomProxy","_localHandlerScope","handlerDomProxyProto","setCursor","dimAxisMapper","_axes","_dimList","_dataCoordConvert","dimList","output","stackInfoMap","stackInfoList","stackInfo","stackResultDimension","stackedDimension","stackedByDimension","isStackedByIndex","calculateStack","targetStackInfo","idxInStack","resultVal","resultNaN","targetData","byValue","stackedDataRawIndex","stackedOver","legendFilter","eventTool","SILENT","makeEventPacket","eveType","targetInfo","gestureEvent","stopEvent","EmptyProxy","handlerNames","proxy","_hovered","_gestureMgr","setHandlerProxy","isHover","isOutsideBoundary","handlerInstance","isOutside","lastHovered","lastHoveredTarget","hovered","hoveredTarget","eventControl","eventArgs","eventPacket","eachOtherLayer","layer","exclude","hoverCheckResult","gestureMgr","_downEl","_downPoint","_upEl","tryToString","AxisPointerView","paths","_updatePathDirty","hasOwn","vec2Min","vec2Max","v2Copy","isPointNull","drawSegment","segLen","allLen","smoothMin","smoothMax","drawMono","drawNonMono","prevIdx","prevP","ctrlLen","nextIdx","nextP","ratioNextSeg","lenPrevSeg","lenNextSeg","getBoundingBox","ptMin","ptMax","pt","stackedOnPoints","stackedOnSmooth","stackedOnBBox","getOwnPropertyNames","LinkedList","linkedListProto","insert","entry","Entry","insertEntry","_list","_maxSize","_lastRemovedEntry","LRUProto","removed","leastUsedEntry","formStateMixin","computedState","removeClipPath","cubic","quadratic","swapExtrema","windingCubic","nRoots","y0_","y1_","nExtrema","unit","windingQuadratic","y_","windingArc","containPath","isStroke","IS_PURE","mode","copyright","repeat","createPattern","throttleUtil","animationModel","moveAnimation","propsEqual","lastProp","lastProps","newProps","equals","updateLabelShowHide","labelEl","getHandleTransProps","trans","updateMandatoryProps","_group","_lastGraphicKey","_handle","_dragging","_lastValue","_lastStatus","_payloadInfo","_axisModel","_axisPointerModel","_moveAnimation","determineAnimation","doUpdateProps","updatePointerEl","updateLabelEl","createPointerEl","createLabelEl","_renderHandle","isCategoryAxis","useSnap","pointerEl","handleModel","onmousedown","_onHandleDragMove","ondragend","_onHandleDragEnd","includeStyles","handleSize","_moveHandleToValue","_doDispatchAxisPointer","payloadInfo","doClear","buildLabel","xy","xDimIndex","SELECTOR","autofocus","formControlMixin","handleAutofocus","idStart","aCallable","makeCategoryLabels","makeRealNumberLabels","makeCategoryTicks","makeCategoryLabelsActually","labelCategoryInterval","numericLabelInterval","labelsCache","getListCache","optionLabelInterval","listCacheGet","makeLabelsByCustomizedCategoryInterval","makeAutoCategoryInterval","makeLabelsByNumericCategoryInterval","listCacheSet","tickCategoryInterval","ticksCache","optionTickInterval","labelsResult","labelItem","formattedLabel","rawLabel","cache","autoInterval","fetchAutoCategoryIntervalCalculationParams","axisRotate","ordinalScale","ordinalExtent","unitSpan","unitW","unitH","maxW","maxH","dw","dh","lastAutoInterval","lastTickCount","axisExtend0","axisExtend1","categoryInterval","onlyTick","startTick","showAllLabel","includeMinLabel","includeMaxLabel","addItem","tVal","DUMMY_COMPONENT_NAME_PREFIX","subOpts","subOptName","exists","newCptOptions","cptOption","idMap","existCpt","idNum","compressBatches","batchA","batchB","mapA","mapB","makeMap","mapToArray","sourceBatch","otherMap","dataIndices","otherDataIndices","lenj","isData","innerUniqueIndex","hostObj","parsedKey","queryType","includeMainTypes","queryParam","groupData","getKey","buckets","setting","_setting","_isBlank","childOfName","childCount","_doAdd","addBefore","includeChildren","tmpMat","SHARED","extremity","fromPoints","xDim","yDim","tx","ty","isConstructor","getNearestColorPalette","paletteNum","colorIdx","colorNameMap","scopeFields","defaultColorPalette","layeredColorPalette","colorPalette","textWidthCache","textWidthCacheCounter","TEXT_CACHE_MAX","STYLE_REG","measureText","getRichTextRect","getPlainTextRect","halfHeight","adjustTextPositionOnRect","dummyStyle","truncateText","containerWidth","prepareTruncateOptions","truncateSingleLine","maxIterations","minChar","cnCharWidth","ascCharWidth","ellipsisWidth","textLine","subLength","estimateLength","charCode","getLineHeight","canCacheByTextString","truncOuterHeight","truncOuterWidth","matchedIndex","pushTokens","substring","contentHeight","stlPadding","truncateWidth","truncateHeight","tokenHeight","tokenWidth","tokenWidthNotSpecified","percentWidth","bgImg","paddingW","remianTruncWidth","isEmptyStr","strs","tokensLen","renderPlanner","Chart","renderTaskPlan","renderTaskReset","toggleHighlight","incrementalRender","chartProto","elSetState","progressMethodMap","forceFirstProgress","modelHelper","illegalPoint","isIllegalPoint","inputAxesInfo","shouldHide","outputFinder","showValueMap","updaters","showPointer","showTooltip","coordSysContainsPoint","inputAxisInfo","findInputAxisInfo","processOnAxis","linkTriggers","tarAxisInfo","tarKey","srcAxisInfo","srcKey","srcValItem","makeMapperParam","updateModelActually","dispatchTooltipActually","dispatchHighDownActually","dontSnap","buildPayloadsBySeries","payloadBatch","snapToValue","seriesNestestValue","nestestValue","coordSysItem","coordSysId","coordSysIndex","coordSysType","coordSysMainType","outputAxesInfo","valItem","highDownKey","lastHighlights","newHighlights","toHighlight","toDownplay","coordExtent","_parseSVG","rawGeoJson","rawSpecialAreas","parsers","JSON","svgXML","HOVER_LAYER_ZLEVEL","CANVAS_ZLEVEL","EL_AFTER_INCREMENTAL_INC","INCREMENTAL_INC","parseInt10","isLayerValid","__builtin__","viewRect","isDisplayableCulled","isClipPathChanged","prevClipPaths","doClip","createRoot","domRoot","singleCanvas","_opts","_singleCanvas","rootStyle","zlevelList","_zlevelList","layers","_layers","_layerConfig","_needsManuallyCompositing","_width","_height","mainLayer","_domRoot","_getSize","_hoverlayer","_hoverElements","isSingleCanvas","viewportRoot","paintAll","_redrawId","_paintList","_backgroundColor","__hoverMir","__from","hoverElements","hoverLayer","getLayer","originalEl","_doPaintEl","getHoverLayer","redrawId","_updateLayerStatus","finished","_doPaintList","_compositeManually","eachBuiltinLayer","virtual","layerList","zi","useTimer","firstEl","dTime","prevElClipPaths","draw","currentLayer","forcePaint","insertLayer","layersMap","prevLayer","prevDom","insertBefore","eachLayer","getLayers","updatePrevLayer","prevZlevel","incrementalLayerCount","_clearLayer","layerConfig","_zlevel","delLayer","_progressiveLayers","clearLayer","imageLayer","renderToCanvas","whIdx","cwh","plt","prb","shadowBlurSize","leftMargin","rightMargin","topMargin","bottomMargin","pathTransform","ImageShape","imgShape","upperCaseFirst","group1","replaceReg","replaceMap","'","TPL_VAR_ALIAS","wrapVar","varName","seriesIdx","paramsList","seriesLen","alias","formatTplSimple","pad","isUTC","utc","capitalFirst","getTextBoundingRect","windowOpen","open","opener","location","stackedByDimInfo","stackedDimInfo","byIndex","stackedCoordDimension","mayStack","stackedDimCoordDim","stackedDimType","stackedDimCoordIndex","isCalculationCoord","stackedDim","targetDim","mathAtan2","nPoint","visualSymbol","layoutPoints","dataSample","_helper","diffData","oldData","diffResult","newIdx","oldIdx","idx1","oldStackedOnPoints","newStackedOnPoints","oldCoordSys","newCoordSys","oldValueOrigin","newValueOrigin","currPoints","nextPoints","currStackedPoints","nextStackedPoints","sortedIndices","rawIndices","newDataOldCoordInfo","oldDataNewCoordInfo","diffItem","pointAdded","currentPt","nextPt","sortedCurrPoints","sortedNextPoints","sortedCurrStackedPoints","sortedNextStackedPoints","sortedStatus","stackedOnCurrent","stackedOnNext","_bbox","SymbolDraw","lineAnimationDiff","_poly","_createClipPathFromCoordSys","isPointsSame","points1","points2","getBoundingDiff","min1","max1","getSmooth","getStackedOnPoints","turnPointsIntoStep","stepTurnAt","baseIndex","stepPoints","stepPt","stepPt2","getVisualGradient","visualMetaList","visualMeta","stops","stopLen","outerColors","tinyExtent","minCoord","maxCoord","coordSpan","getIsIgnoreFunc","isAuto","canShowAllSymbolForCategory","categoryDataDim","labelMap","availSize","createLineClipPath","rectShape","lineGroup","symbolDraw","_symbolDraw","_lineGroup","lineStyleModel","isCoordSysPolar","prevCoordSys","_coordSys","_polyline","_polygon","isAreaChart","isIgnoreFunc","__temp","clipShapeForSymbol","_clipShapeForSymbol","_step","_newPolygon","isIgnore","clipShape","_stackedOnPoints","_points","_updateAnimation","_newPolyline","visualColor","lineJoin","stackedOnSeries","_valueOrigin","__points","updatedDataInfo","diffStatus","ptIdx","contrastColor","axisCommon","iconStyle","controlStyle","color0","borderColor0","AxisBuilder","_axisSplitHelper","axisBuilderAttrs","selfBuilderAttrs","CartesianAxisView","oldAxisGroup","_axisGroup","axisBuilder","getGroup","_splitLine","splitLineModel","lineColors","lineCount","_minorSplitLine","minorSplitLineModel","_splitArea","polygonContain","loopGeo","transformTo","newRegion","FunctionPrototype","getDescriptor","PROPER","define","Task","_reset","_plan","_onDirty","_dirty","taskProto","planResult","upTask","_upstream","lastModBy","normalizeModBy","_modBy","lastModDataCount","_modDataCount","_dueEnd","_outputDueEnd","_progress","_dueIndex","doProgress","outputDueEnd","_settedOutputEnd","winCount","sStep","sCount","modNext","sequentialNext","taskIns","_callingProgress","downstream","_downstream","downTask","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","Constructor","fin","symbolCtor","_symbolCtor","symbolDrawProto","symbolNeedsDraw","normalizeUpdateOpt","makeSeriesScope","SymbolCtor","symbolEl","isPersistent","incrementalPrepareUpdate","_seriesScope","incrementalUpdate","taskParams","updateIncrementalAndHover","enableAnimation","LOCATION_PARAMS","HV_NAMES","boxLayout","maxHeight","currentLineMaxSize","nextX","nextY","nextChild","nextChildRect","moveX","moveY","vbox","hbox","getAvailableSize","containerRect","containerHeight","verticalMargin","horizontalMargin","hv","boundingMode","elPos","sizeCalculable","hvIdx","targetOption","hResult","vResult","newParams","newValueCount","merged","mergedValueCount","enoughParamNumber","hasProp","copyLayoutParams","matrixUtil","dumbGroup","_transform","_dumbGroup","hasBuilder","builders","pt1","pt2","arrows","arrowSize","arrowOffset","symbolWidth","symbolHeight","axisTickLabel","ticksEls","buildAxisMajorTicks","labelEls","buildAxisLabel","fixMinMaxLabelShow","buildAxisMinorTicks","labelLayout","axisNameAvailableWidth","gapSignal","isNameLocationCenter","nameRotation","innerTextLayout","endTextLayout","truncateOpt","nameTruncateMaxWidth","truncatedText","textEl","__fullText","__truncatedText","isLabelSilent","makeAxisEventDataBase","targetType","axisRotation","rotationDiff","textRotate","onLeft","tickEls","firstLabel","nextLabel","lastLabel","prevLabel","firstTick","lastTick","ignoreEl","isTwoLabelOverlapped","firstRect","nextRect","mRotationBack","createTicks","tickTransform","tickEndCoord","tickLineStyle","aniid","tickEl","minorTickLineStyle","minorTicksEls","axisLabelShow","labelRotation","rawCategoryData","itemLabelModel","compatStyle","compatLayoutProperties","LAYOUT_PROPERTIES","COMPATITABLE_COMPONENTS","clipOverflow","clockWise","pointerColor","dataRange","componentName","colorAccessPath","colorCallback","borderColorAccessPath","samplers","average","nearest","indexSampler","sampler","PATH_COLOR","styleModel","buildLabelElOption","labelPos","paddings","confineInContainer","axisDimension","seriesData","textLayout","makeSectorShape","symbolTag"],"mappings":"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","file":"js/chunk-25e1b433.3fcfb286.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 echarts = require(\"../echarts\");\n\nrequire(\"./axisPointer\");\n\nrequire(\"./tooltip/TooltipModel\");\n\nrequire(\"./tooltip/TooltipView\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// FIXME Better way to pack data in graphic element\n\n/**\n * @action\n * @property {string} type\n * @property {number} seriesIndex\n * @property {number} dataIndex\n * @property {number} [x]\n * @property {number} [y]\n */\necharts.registerAction({\n type: 'showTip',\n event: 'showTip',\n update: 'tooltip:manuallyShowTip'\n}, // noop\nfunction () {});\necharts.registerAction({\n type: 'hideTip',\n event: 'hideTip',\n update: 'tooltip:manuallyHideTip'\n}, // noop\nfunction () {});","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n if (NATIVE_SYMBOL && has(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n } return WellKnownSymbolsStore[name];\n};\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Can only be called after coordinate system creation stage.\n * (Can be called before coordinate system update stage).\n *\n * @param {Object} opt {labelInside}\n * @return {Object} {\n * position, rotation, labelDirection, labelOffset,\n * tickDirection, labelRotate, z2\n * }\n */\nfunction layout(gridModel, axisModel, opt) {\n opt = opt || {};\n var grid = gridModel.coordinateSystem;\n var axis = axisModel.axis;\n var layout = {};\n var otherAxisOnZeroOf = axis.getAxesOnZeroOf()[0];\n var rawAxisPosition = axis.position;\n var axisPosition = otherAxisOnZeroOf ? 'onZero' : rawAxisPosition;\n var axisDim = axis.dim;\n var rect = grid.getRect();\n var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\n var idx = {\n left: 0,\n right: 1,\n top: 0,\n bottom: 1,\n onZero: 2\n };\n var axisOffset = axisModel.get('offset') || 0;\n var posBound = axisDim === 'x' ? [rectBound[2] - axisOffset, rectBound[3] + axisOffset] : [rectBound[0] - axisOffset, rectBound[1] + axisOffset];\n\n if (otherAxisOnZeroOf) {\n var onZeroCoord = otherAxisOnZeroOf.toGlobalCoord(otherAxisOnZeroOf.dataToCoord(0));\n posBound[idx.onZero] = Math.max(Math.min(onZeroCoord, posBound[1]), posBound[0]);\n } // Axis position\n\n\n layout.position = [axisDim === 'y' ? posBound[idx[axisPosition]] : rectBound[0], axisDim === 'x' ? posBound[idx[axisPosition]] : rectBound[3]]; // Axis rotation\n\n layout.rotation = Math.PI / 2 * (axisDim === 'x' ? 0 : 1); // Tick and label direction, x y is axisDim\n\n var dirMap = {\n top: -1,\n bottom: 1,\n left: -1,\n right: 1\n };\n layout.labelDirection = layout.tickDirection = layout.nameDirection = dirMap[rawAxisPosition];\n layout.labelOffset = otherAxisOnZeroOf ? posBound[idx[rawAxisPosition]] - posBound[idx.onZero] : 0;\n\n if (axisModel.get('axisTick.inside')) {\n layout.tickDirection = -layout.tickDirection;\n }\n\n if (zrUtil.retrieve(opt.labelInside, axisModel.get('axisLabel.inside'))) {\n layout.labelDirection = -layout.labelDirection;\n } // Special label rotation\n\n\n var labelRotate = axisModel.get('axisLabel.rotate');\n layout.labelRotate = axisPosition === 'top' ? -labelRotate : labelRotate; // Over splitLine and splitArea\n\n layout.z2 = 1;\n return layout;\n}\n\nexports.layout = layout;","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_SPINNER } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_LABEL } from '../../constants/slots';\nimport { normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n label: makeProp(PROP_TYPE_STRING),\n role: makeProp(PROP_TYPE_STRING, 'status'),\n small: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'span'),\n type: makeProp(PROP_TYPE_STRING, 'border'),\n variant: makeProp(PROP_TYPE_STRING)\n}, NAME_SPINNER); // --- Main component ---\n// @vue/component\n\nexport var BSpinner = /*#__PURE__*/Vue.extend({\n name: NAME_SPINNER,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var $label = normalizeSlot(SLOT_NAME_LABEL, {}, $scopedSlots, $slots) || props.label;\n\n if ($label) {\n $label = h('span', {\n staticClass: 'sr-only'\n }, $label);\n }\n\n return h(props.tag, mergeData(data, {\n attrs: {\n role: $label ? props.role || 'status' : null,\n 'aria-hidden': $label ? null : 'true'\n },\n class: (_class = {}, _defineProperty(_class, \"spinner-\".concat(props.type), props.type), _defineProperty(_class, \"spinner-\".concat(props.type, \"-sm\"), props.small), _defineProperty(_class, \"text-\".concat(props.variant), props.variant), _class)\n }), [$label || h()]);\n }\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../util/graphic\");\n\nrequire(\"../coord/cartesian/Grid\");\n\nrequire(\"./axis\");\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// Grid view\necharts.extendComponentView({\n type: 'grid',\n render: function (gridModel, ecModel) {\n this.group.removeAll();\n\n if (gridModel.get('show')) {\n this.group.add(new graphic.Rect({\n shape: gridModel.coordinateSystem.getRect(),\n style: zrUtil.defaults({\n fill: gridModel.get('backgroundColor')\n }, gridModel.getItemStyle()),\n silent: true,\n z2: -1\n }));\n }\n }\n});\necharts.registerPreprocessor(function (option) {\n // Only create grid when need\n if (option.xAxis && option.yAxis && !option.grid) {\n option.grid = {};\n }\n});","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar ComponentModel = require(\"../model/Component\");\n\nvar ComponentView = require(\"../view/Component\");\n\nvar _sourceHelper = require(\"../data/helper/sourceHelper\");\n\nvar detectSourceFormat = _sourceHelper.detectSourceFormat;\n\nvar _sourceType = require(\"../data/helper/sourceType\");\n\nvar SERIES_LAYOUT_BY_COLUMN = _sourceType.SERIES_LAYOUT_BY_COLUMN;\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 * This module is imported by echarts directly.\n *\n * Notice:\n * Always keep this file exists for backward compatibility.\n * Because before 4.1.0, dataset is an optional component,\n * some users may import this module manually.\n */\nComponentModel.extend({\n type: 'dataset',\n\n /**\n * @protected\n */\n defaultOption: {\n // 'row', 'column'\n seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,\n // null/'auto': auto detect header, see \"module:echarts/data/helper/sourceHelper\"\n sourceHeader: null,\n dimensions: null,\n source: null\n },\n optionUpdated: function () {\n detectSourceFormat(this);\n }\n});\nComponentView.extend({\n type: 'dataset'\n});","// https://github.com/mziccard/node-timsort\nvar DEFAULT_MIN_MERGE = 32;\nvar DEFAULT_MIN_GALLOPING = 7;\nvar DEFAULT_TMP_STORAGE_LENGTH = 256;\n\nfunction minRunLength(n) {\n var r = 0;\n\n while (n >= DEFAULT_MIN_MERGE) {\n r |= n & 1;\n n >>= 1;\n }\n\n return n + r;\n}\n\nfunction makeAscendingRun(array, lo, hi, compare) {\n var runHi = lo + 1;\n\n if (runHi === hi) {\n return 1;\n }\n\n if (compare(array[runHi++], array[lo]) < 0) {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\n runHi++;\n }\n\n reverseRun(array, lo, runHi);\n } else {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\n runHi++;\n }\n }\n\n return runHi - lo;\n}\n\nfunction reverseRun(array, lo, hi) {\n hi--;\n\n while (lo < hi) {\n var t = array[lo];\n array[lo++] = array[hi];\n array[hi--] = t;\n }\n}\n\nfunction binaryInsertionSort(array, lo, hi, start, compare) {\n if (start === lo) {\n start++;\n }\n\n for (; start < hi; start++) {\n var pivot = array[start];\n var left = lo;\n var right = start;\n var mid;\n\n while (left < right) {\n mid = left + right >>> 1;\n\n if (compare(pivot, array[mid]) < 0) {\n right = mid;\n } else {\n left = mid + 1;\n }\n }\n\n var n = start - left;\n\n switch (n) {\n case 3:\n array[left + 3] = array[left + 2];\n\n case 2:\n array[left + 2] = array[left + 1];\n\n case 1:\n array[left + 1] = array[left];\n break;\n\n default:\n while (n > 0) {\n array[left + n] = array[left + n - 1];\n n--;\n }\n\n }\n\n array[left] = pivot;\n }\n}\n\nfunction gallopLeft(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n\n if (compare(value, array[start + hint]) > 0) {\n maxOffset = length - hint;\n\n while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n lastOffset += hint;\n offset += hint;\n } else {\n maxOffset = hint + 1;\n\n while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n }\n\n lastOffset++;\n\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n\n if (compare(value, array[start + m]) > 0) {\n lastOffset = m + 1;\n } else {\n offset = m;\n }\n }\n\n return offset;\n}\n\nfunction gallopRight(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n\n if (compare(value, array[start + hint]) < 0) {\n maxOffset = hint + 1;\n\n while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n } else {\n maxOffset = length - hint;\n\n while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n lastOffset += hint;\n offset += hint;\n }\n\n lastOffset++;\n\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n\n if (compare(value, array[start + m]) < 0) {\n offset = m;\n } else {\n lastOffset = m + 1;\n }\n }\n\n return offset;\n}\n\nfunction TimSort(array, compare) {\n var minGallop = DEFAULT_MIN_GALLOPING;\n var length = 0;\n var tmpStorageLength = DEFAULT_TMP_STORAGE_LENGTH;\n var stackLength = 0;\n var runStart;\n var runLength;\n var stackSize = 0;\n length = array.length;\n\n if (length < 2 * DEFAULT_TMP_STORAGE_LENGTH) {\n tmpStorageLength = length >>> 1;\n }\n\n var tmp = [];\n stackLength = length < 120 ? 5 : length < 1542 ? 10 : length < 119151 ? 19 : 40;\n runStart = [];\n runLength = [];\n\n function pushRun(_runStart, _runLength) {\n runStart[stackSize] = _runStart;\n runLength[stackSize] = _runLength;\n stackSize += 1;\n }\n\n function mergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n\n if (n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1] || n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1]) {\n if (runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n } else if (runLength[n] > runLength[n + 1]) {\n break;\n }\n\n mergeAt(n);\n }\n }\n\n function forceMergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n\n if (n > 0 && runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n\n mergeAt(n);\n }\n }\n\n function mergeAt(i) {\n var start1 = runStart[i];\n var length1 = runLength[i];\n var start2 = runStart[i + 1];\n var length2 = runLength[i + 1];\n runLength[i] = length1 + length2;\n\n if (i === stackSize - 3) {\n runStart[i + 1] = runStart[i + 2];\n runLength[i + 1] = runLength[i + 2];\n }\n\n stackSize--;\n var k = gallopRight(array[start2], array, start1, length1, 0, compare);\n start1 += k;\n length1 -= k;\n\n if (length1 === 0) {\n return;\n }\n\n length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\n\n if (length2 === 0) {\n return;\n }\n\n if (length1 <= length2) {\n mergeLow(start1, length1, start2, length2);\n } else {\n mergeHigh(start1, length1, start2, length2);\n }\n }\n\n function mergeLow(start1, length1, start2, length2) {\n var i = 0;\n\n for (i = 0; i < length1; i++) {\n tmp[i] = array[start1 + i];\n }\n\n var cursor1 = 0;\n var cursor2 = start2;\n var dest = start1;\n array[dest++] = array[cursor2++];\n\n if (--length2 === 0) {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n\n return;\n }\n\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n array[dest + length2] = tmp[cursor1];\n return;\n }\n\n var _minGallop = minGallop;\n var count1;\n var count2;\n var exit;\n\n while (1) {\n count1 = 0;\n count2 = 0;\n exit = false;\n\n do {\n if (compare(array[cursor2], tmp[cursor1]) < 0) {\n array[dest++] = array[cursor2++];\n count2++;\n count1 = 0;\n\n if (--length2 === 0) {\n exit = true;\n break;\n }\n } else {\n array[dest++] = tmp[cursor1++];\n count1++;\n count2 = 0;\n\n if (--length1 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n\n if (exit) {\n break;\n }\n\n do {\n count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\n\n if (count1 !== 0) {\n for (i = 0; i < count1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n\n dest += count1;\n cursor1 += count1;\n length1 -= count1;\n\n if (length1 <= 1) {\n exit = true;\n break;\n }\n }\n\n array[dest++] = array[cursor2++];\n\n if (--length2 === 0) {\n exit = true;\n break;\n }\n\n count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\n\n if (count2 !== 0) {\n for (i = 0; i < count2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n dest += count2;\n cursor2 += count2;\n length2 -= count2;\n\n if (length2 === 0) {\n exit = true;\n break;\n }\n }\n\n array[dest++] = tmp[cursor1++];\n\n if (--length1 === 1) {\n exit = true;\n break;\n }\n\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\n if (exit) {\n break;\n }\n\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n\n _minGallop += 2;\n }\n\n minGallop = _minGallop;\n minGallop < 1 && (minGallop = 1);\n\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n array[dest + length2] = tmp[cursor1];\n } else if (length1 === 0) {\n throw new Error(); // throw new Error('mergeLow preconditions were not respected');\n } else {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n }\n }\n\n function mergeHigh(start1, length1, start2, length2) {\n var i = 0;\n\n for (i = 0; i < length2; i++) {\n tmp[i] = array[start2 + i];\n }\n\n var cursor1 = start1 + length1 - 1;\n var cursor2 = length2 - 1;\n var dest = start2 + length2 - 1;\n var customCursor = 0;\n var customDest = 0;\n array[dest--] = array[cursor1--];\n\n if (--length1 === 0) {\n customCursor = dest - (length2 - 1);\n\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n\n return;\n }\n\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n array[dest] = tmp[cursor2];\n return;\n }\n\n var _minGallop = minGallop;\n\n while (true) {\n var count1 = 0;\n var count2 = 0;\n var exit = false;\n\n do {\n if (compare(tmp[cursor2], array[cursor1]) < 0) {\n array[dest--] = array[cursor1--];\n count1++;\n count2 = 0;\n\n if (--length1 === 0) {\n exit = true;\n break;\n }\n } else {\n array[dest--] = tmp[cursor2--];\n count2++;\n count1 = 0;\n\n if (--length2 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n\n if (exit) {\n break;\n }\n\n do {\n count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\n\n if (count1 !== 0) {\n dest -= count1;\n cursor1 -= count1;\n length1 -= count1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = count1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n if (length1 === 0) {\n exit = true;\n break;\n }\n }\n\n array[dest--] = tmp[cursor2--];\n\n if (--length2 === 1) {\n exit = true;\n break;\n }\n\n count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\n\n if (count2 !== 0) {\n dest -= count2;\n cursor2 -= count2;\n length2 -= count2;\n customDest = dest + 1;\n customCursor = cursor2 + 1;\n\n for (i = 0; i < count2; i++) {\n array[customDest + i] = tmp[customCursor + i];\n }\n\n if (length2 <= 1) {\n exit = true;\n break;\n }\n }\n\n array[dest--] = array[cursor1--];\n\n if (--length1 === 0) {\n exit = true;\n break;\n }\n\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\n if (exit) {\n break;\n }\n\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n\n _minGallop += 2;\n }\n\n minGallop = _minGallop;\n\n if (minGallop < 1) {\n minGallop = 1;\n }\n\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n array[dest] = tmp[cursor2];\n } else if (length2 === 0) {\n throw new Error(); // throw new Error('mergeHigh preconditions were not respected');\n } else {\n customCursor = dest - (length2 - 1);\n\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n }\n }\n\n this.mergeRuns = mergeRuns;\n this.forceMergeRuns = forceMergeRuns;\n this.pushRun = pushRun;\n}\n\nfunction sort(array, compare, lo, hi) {\n if (!lo) {\n lo = 0;\n }\n\n if (!hi) {\n hi = array.length;\n }\n\n var remaining = hi - lo;\n\n if (remaining < 2) {\n return;\n }\n\n var runLength = 0;\n\n if (remaining < DEFAULT_MIN_MERGE) {\n runLength = makeAscendingRun(array, lo, hi, compare);\n binaryInsertionSort(array, lo, hi, lo + runLength, compare);\n return;\n }\n\n var ts = new TimSort(array, compare);\n var minRun = minRunLength(remaining);\n\n do {\n runLength = makeAscendingRun(array, lo, hi, compare);\n\n if (runLength < minRun) {\n var force = remaining;\n\n if (force > minRun) {\n force = minRun;\n }\n\n binaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\n runLength = force;\n }\n\n ts.pushRun(lo, runLength);\n ts.mergeRuns();\n remaining -= runLength;\n lo += runLength;\n } while (remaining !== 0);\n\n ts.forceMergeRuns();\n}\n\nmodule.exports = sort;","var windingLine = require(\"./windingLine\");\n\nvar EPSILON = 1e-8;\n\nfunction isAroundEqual(a, b) {\n return Math.abs(a - b) < EPSILON;\n}\n\nfunction contain(points, x, y) {\n var w = 0;\n var p = points[0];\n\n if (!p) {\n return false;\n }\n\n for (var i = 1; i < points.length; i++) {\n var p2 = points[i];\n w += windingLine(p[0], p[1], p2[0], p2[1], x, y);\n p = p2;\n } // Close polygon\n\n\n var p0 = points[0];\n\n if (!isAroundEqual(p[0], p0[0]) || !isAroundEqual(p[1], p0[1])) {\n w += windingLine(p[0], p[1], p0[0], p0[1], x, y);\n }\n\n return w !== 0;\n}\n\nexports.contain = contain;","var Clip = require(\"./Clip\");\n\nvar color = require(\"../tool/color\");\n\nvar _util = require(\"../core/util\");\n\nvar isArrayLike = _util.isArrayLike;\n\n/**\n * @module echarts/animation/Animator\n */\nvar arraySlice = Array.prototype.slice;\n\nfunction defaultGetter(target, key) {\n return target[key];\n}\n\nfunction defaultSetter(target, key, value) {\n target[key] = value;\n}\n/**\n * @param {number} p0\n * @param {number} p1\n * @param {number} percent\n * @return {number}\n */\n\n\nfunction interpolateNumber(p0, p1, percent) {\n return (p1 - p0) * percent + p0;\n}\n/**\n * @param {string} p0\n * @param {string} p1\n * @param {number} percent\n * @return {string}\n */\n\n\nfunction interpolateString(p0, p1, percent) {\n return percent > 0.5 ? p1 : p0;\n}\n/**\n * @param {Array} p0\n * @param {Array} p1\n * @param {number} percent\n * @param {Array} out\n * @param {number} arrDim\n */\n\n\nfunction interpolateArray(p0, p1, percent, out, arrDim) {\n var len = p0.length;\n\n if (arrDim === 1) {\n for (var i = 0; i < len; i++) {\n out[i] = interpolateNumber(p0[i], p1[i], percent);\n }\n } else {\n var len2 = len && p0[0].length;\n\n for (var i = 0; i < len; i++) {\n for (var j = 0; j < len2; j++) {\n out[i][j] = interpolateNumber(p0[i][j], p1[i][j], percent);\n }\n }\n }\n} // arr0 is source array, arr1 is target array.\n// Do some preprocess to avoid error happened when interpolating from arr0 to arr1\n\n\nfunction fillArr(arr0, arr1, arrDim) {\n var arr0Len = arr0.length;\n var arr1Len = arr1.length;\n\n if (arr0Len !== arr1Len) {\n // FIXME Not work for TypedArray\n var isPreviousLarger = arr0Len > arr1Len;\n\n if (isPreviousLarger) {\n // Cut the previous\n arr0.length = arr1Len;\n } else {\n // Fill the previous\n for (var i = arr0Len; i < arr1Len; i++) {\n arr0.push(arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i]));\n }\n }\n } // Handling NaN value\n\n\n var len2 = arr0[0] && arr0[0].length;\n\n for (var i = 0; i < arr0.length; i++) {\n if (arrDim === 1) {\n if (isNaN(arr0[i])) {\n arr0[i] = arr1[i];\n }\n } else {\n for (var j = 0; j < len2; j++) {\n if (isNaN(arr0[i][j])) {\n arr0[i][j] = arr1[i][j];\n }\n }\n }\n }\n}\n/**\n * @param {Array} arr0\n * @param {Array} arr1\n * @param {number} arrDim\n * @return {boolean}\n */\n\n\nfunction isArraySame(arr0, arr1, arrDim) {\n if (arr0 === arr1) {\n return true;\n }\n\n var len = arr0.length;\n\n if (len !== arr1.length) {\n return false;\n }\n\n if (arrDim === 1) {\n for (var i = 0; i < len; i++) {\n if (arr0[i] !== arr1[i]) {\n return false;\n }\n }\n } else {\n var len2 = arr0[0].length;\n\n for (var i = 0; i < len; i++) {\n for (var j = 0; j < len2; j++) {\n if (arr0[i][j] !== arr1[i][j]) {\n return false;\n }\n }\n }\n }\n\n return true;\n}\n/**\n * Catmull Rom interpolate array\n * @param {Array} p0\n * @param {Array} p1\n * @param {Array} p2\n * @param {Array} p3\n * @param {number} t\n * @param {number} t2\n * @param {number} t3\n * @param {Array} out\n * @param {number} arrDim\n */\n\n\nfunction catmullRomInterpolateArray(p0, p1, p2, p3, t, t2, t3, out, arrDim) {\n var len = p0.length;\n\n if (arrDim === 1) {\n for (var i = 0; i < len; i++) {\n out[i] = catmullRomInterpolate(p0[i], p1[i], p2[i], p3[i], t, t2, t3);\n }\n } else {\n var len2 = p0[0].length;\n\n for (var i = 0; i < len; i++) {\n for (var j = 0; j < len2; j++) {\n out[i][j] = catmullRomInterpolate(p0[i][j], p1[i][j], p2[i][j], p3[i][j], t, t2, t3);\n }\n }\n }\n}\n/**\n * Catmull Rom interpolate number\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} t\n * @param {number} t2\n * @param {number} t3\n * @return {number}\n */\n\n\nfunction catmullRomInterpolate(p0, p1, p2, p3, t, t2, t3) {\n var v0 = (p2 - p0) * 0.5;\n var v1 = (p3 - p1) * 0.5;\n return (2 * (p1 - p2) + v0 + v1) * t3 + (-3 * (p1 - p2) - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\n\nfunction cloneValue(value) {\n if (isArrayLike(value)) {\n var len = value.length;\n\n if (isArrayLike(value[0])) {\n var ret = [];\n\n for (var i = 0; i < len; i++) {\n ret.push(arraySlice.call(value[i]));\n }\n\n return ret;\n }\n\n return arraySlice.call(value);\n }\n\n return value;\n}\n\nfunction rgba2String(rgba) {\n rgba[0] = Math.floor(rgba[0]);\n rgba[1] = Math.floor(rgba[1]);\n rgba[2] = Math.floor(rgba[2]);\n return 'rgba(' + rgba.join(',') + ')';\n}\n\nfunction getArrayDim(keyframes) {\n var lastValue = keyframes[keyframes.length - 1].value;\n return isArrayLike(lastValue && lastValue[0]) ? 2 : 1;\n}\n\nfunction createTrackClip(animator, easing, oneTrackDone, keyframes, propName, forceAnimate) {\n var getter = animator._getter;\n var setter = animator._setter;\n var useSpline = easing === 'spline';\n var trackLen = keyframes.length;\n\n if (!trackLen) {\n return;\n } // Guess data type\n\n\n var firstVal = keyframes[0].value;\n var isValueArray = isArrayLike(firstVal);\n var isValueColor = false;\n var isValueString = false; // For vertices morphing\n\n var arrDim = isValueArray ? getArrayDim(keyframes) : 0;\n var trackMaxTime; // Sort keyframe as ascending\n\n keyframes.sort(function (a, b) {\n return a.time - b.time;\n });\n trackMaxTime = keyframes[trackLen - 1].time; // Percents of each keyframe\n\n var kfPercents = []; // Value of each keyframe\n\n var kfValues = [];\n var prevValue = keyframes[0].value;\n var isAllValueEqual = true;\n\n for (var i = 0; i < trackLen; i++) {\n kfPercents.push(keyframes[i].time / trackMaxTime); // Assume value is a color when it is a string\n\n var value = keyframes[i].value; // Check if value is equal, deep check if value is array\n\n if (!(isValueArray && isArraySame(value, prevValue, arrDim) || !isValueArray && value === prevValue)) {\n isAllValueEqual = false;\n }\n\n prevValue = value; // Try converting a string to a color array\n\n if (typeof value === 'string') {\n var colorArray = color.parse(value);\n\n if (colorArray) {\n value = colorArray;\n isValueColor = true;\n } else {\n isValueString = true;\n }\n }\n\n kfValues.push(value);\n }\n\n if (!forceAnimate && isAllValueEqual) {\n return;\n }\n\n var lastValue = kfValues[trackLen - 1]; // Polyfill array and NaN value\n\n for (var i = 0; i < trackLen - 1; i++) {\n if (isValueArray) {\n fillArr(kfValues[i], lastValue, arrDim);\n } else {\n if (isNaN(kfValues[i]) && !isNaN(lastValue) && !isValueString && !isValueColor) {\n kfValues[i] = lastValue;\n }\n }\n }\n\n isValueArray && fillArr(getter(animator._target, propName), lastValue, arrDim); // Cache the key of last frame to speed up when\n // animation playback is sequency\n\n var lastFrame = 0;\n var lastFramePercent = 0;\n var start;\n var w;\n var p0;\n var p1;\n var p2;\n var p3;\n\n if (isValueColor) {\n var rgba = [0, 0, 0, 0];\n }\n\n var onframe = function (target, percent) {\n // Find the range keyframes\n // kf1-----kf2---------current--------kf3\n // find kf2 and kf3 and do interpolation\n var frame; // In the easing function like elasticOut, percent may less than 0\n\n if (percent < 0) {\n frame = 0;\n } else if (percent < lastFramePercent) {\n // Start from next key\n // PENDING start from lastFrame ?\n start = Math.min(lastFrame + 1, trackLen - 1);\n\n for (frame = start; frame >= 0; frame--) {\n if (kfPercents[frame] <= percent) {\n break;\n }\n } // PENDING really need to do this ?\n\n\n frame = Math.min(frame, trackLen - 2);\n } else {\n for (frame = lastFrame; frame < trackLen; frame++) {\n if (kfPercents[frame] > percent) {\n break;\n }\n }\n\n frame = Math.min(frame - 1, trackLen - 2);\n }\n\n lastFrame = frame;\n lastFramePercent = percent;\n var range = kfPercents[frame + 1] - kfPercents[frame];\n\n if (range === 0) {\n return;\n } else {\n w = (percent - kfPercents[frame]) / range;\n }\n\n if (useSpline) {\n p1 = kfValues[frame];\n p0 = kfValues[frame === 0 ? frame : frame - 1];\n p2 = kfValues[frame > trackLen - 2 ? trackLen - 1 : frame + 1];\n p3 = kfValues[frame > trackLen - 3 ? trackLen - 1 : frame + 2];\n\n if (isValueArray) {\n catmullRomInterpolateArray(p0, p1, p2, p3, w, w * w, w * w * w, getter(target, propName), arrDim);\n } else {\n var value;\n\n if (isValueColor) {\n value = catmullRomInterpolateArray(p0, p1, p2, p3, w, w * w, w * w * w, rgba, 1);\n value = rgba2String(rgba);\n } else if (isValueString) {\n // String is step(0.5)\n return interpolateString(p1, p2, w);\n } else {\n value = catmullRomInterpolate(p0, p1, p2, p3, w, w * w, w * w * w);\n }\n\n setter(target, propName, value);\n }\n } else {\n if (isValueArray) {\n interpolateArray(kfValues[frame], kfValues[frame + 1], w, getter(target, propName), arrDim);\n } else {\n var value;\n\n if (isValueColor) {\n interpolateArray(kfValues[frame], kfValues[frame + 1], w, rgba, 1);\n value = rgba2String(rgba);\n } else if (isValueString) {\n // String is step(0.5)\n return interpolateString(kfValues[frame], kfValues[frame + 1], w);\n } else {\n value = interpolateNumber(kfValues[frame], kfValues[frame + 1], w);\n }\n\n setter(target, propName, value);\n }\n }\n };\n\n var clip = new Clip({\n target: animator._target,\n life: trackMaxTime,\n loop: animator._loop,\n delay: animator._delay,\n onframe: onframe,\n ondestroy: oneTrackDone\n });\n\n if (easing && easing !== 'spline') {\n clip.easing = easing;\n }\n\n return clip;\n}\n/**\n * @alias module:zrender/animation/Animator\n * @constructor\n * @param {Object} target\n * @param {boolean} loop\n * @param {Function} getter\n * @param {Function} setter\n */\n\n\nvar Animator = function (target, loop, getter, setter) {\n this._tracks = {};\n this._target = target;\n this._loop = loop || false;\n this._getter = getter || defaultGetter;\n this._setter = setter || defaultSetter;\n this._clipCount = 0;\n this._delay = 0;\n this._doneList = [];\n this._onframeList = [];\n this._clipList = [];\n};\n\nAnimator.prototype = {\n /**\n * Set Animation keyframe\n * @param {number} time 关键帧时间,单位是ms\n * @param {Object} props 关键帧的属性值,key-value表示\n * @return {module:zrender/animation/Animator}\n */\n when: function (time\n /* ms */\n , props) {\n var tracks = this._tracks;\n\n for (var propName in props) {\n if (!props.hasOwnProperty(propName)) {\n continue;\n }\n\n if (!tracks[propName]) {\n tracks[propName] = []; // Invalid value\n\n var value = this._getter(this._target, propName);\n\n if (value == null) {\n // zrLog('Invalid property ' + propName);\n continue;\n } // If time is 0\n // Then props is given initialize value\n // Else\n // Initialize value from current prop value\n\n\n if (time !== 0) {\n tracks[propName].push({\n time: 0,\n value: cloneValue(value)\n });\n }\n }\n\n tracks[propName].push({\n time: time,\n value: props[propName]\n });\n }\n\n return this;\n },\n\n /**\n * 添加动画每一帧的回调函数\n * @param {Function} callback\n * @return {module:zrender/animation/Animator}\n */\n during: function (callback) {\n this._onframeList.push(callback);\n\n return this;\n },\n pause: function () {\n for (var i = 0; i < this._clipList.length; i++) {\n this._clipList[i].pause();\n }\n\n this._paused = true;\n },\n resume: function () {\n for (var i = 0; i < this._clipList.length; i++) {\n this._clipList[i].resume();\n }\n\n this._paused = false;\n },\n isPaused: function () {\n return !!this._paused;\n },\n _doneCallback: function () {\n // Clear all tracks\n this._tracks = {}; // Clear all clips\n\n this._clipList.length = 0;\n var doneList = this._doneList;\n var len = doneList.length;\n\n for (var i = 0; i < len; i++) {\n doneList[i].call(this);\n }\n },\n\n /**\n * Start the animation\n * @param {string|Function} [easing]\n * 动画缓动函数,详见{@link module:zrender/animation/easing}\n * @param {boolean} forceAnimate\n * @return {module:zrender/animation/Animator}\n */\n start: function (easing, forceAnimate) {\n var self = this;\n var clipCount = 0;\n\n var oneTrackDone = function () {\n clipCount--;\n\n if (!clipCount) {\n self._doneCallback();\n }\n };\n\n var lastClip;\n\n for (var propName in this._tracks) {\n if (!this._tracks.hasOwnProperty(propName)) {\n continue;\n }\n\n var clip = createTrackClip(this, easing, oneTrackDone, this._tracks[propName], propName, forceAnimate);\n\n if (clip) {\n this._clipList.push(clip);\n\n clipCount++; // If start after added to animation\n\n if (this.animation) {\n this.animation.addClip(clip);\n }\n\n lastClip = clip;\n }\n } // Add during callback on the last clip\n\n\n if (lastClip) {\n var oldOnFrame = lastClip.onframe;\n\n lastClip.onframe = function (target, percent) {\n oldOnFrame(target, percent);\n\n for (var i = 0; i < self._onframeList.length; i++) {\n self._onframeList[i](target, percent);\n }\n };\n } // This optimization will help the case that in the upper application\n // the view may be refreshed frequently, where animation will be\n // called repeatly but nothing changed.\n\n\n if (!clipCount) {\n this._doneCallback();\n }\n\n return this;\n },\n\n /**\n * Stop animation\n * @param {boolean} forwardToLast If move to last frame before stop\n */\n stop: function (forwardToLast) {\n var clipList = this._clipList;\n var animation = this.animation;\n\n for (var i = 0; i < clipList.length; i++) {\n var clip = clipList[i];\n\n if (forwardToLast) {\n // Move to last frame before stop\n clip.onframe(this._target, 1);\n }\n\n animation && animation.removeClip(clip);\n }\n\n clipList.length = 0;\n },\n\n /**\n * Set when animation delay starts\n * @param {number} time 单位ms\n * @return {module:zrender/animation/Animator}\n */\n delay: function (time) {\n this._delay = time;\n return this;\n },\n\n /**\n * Add callback for animation end\n * @param {Function} cb\n * @return {module:zrender/animation/Animator}\n */\n done: function (cb) {\n if (cb) {\n this._doneList.push(cb);\n }\n\n return this;\n },\n\n /**\n * @return {Array.}\n */\n getClips: function () {\n return this._clipList;\n }\n};\nvar _default = Animator;\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 zrColor = require(\"zrender/lib/tool/color\");\n\nvar eventUtil = require(\"zrender/lib/core/event\");\n\nvar domUtil = require(\"zrender/lib/core/dom\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar formatUtil = require(\"../../util/format\");\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 toCamelCase = formatUtil.toCamelCase;\nvar vendors = ['', '-webkit-', '-moz-', '-o-'];\nvar gCssText = 'position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;';\n/**\n * @param {number} duration\n * @return {string}\n * @inner\n */\n\nfunction assembleTransition(duration) {\n var transitionCurve = 'cubic-bezier(0.23, 1, 0.32, 1)';\n var transitionText = 'left ' + duration + 's ' + transitionCurve + ',' + 'top ' + duration + 's ' + transitionCurve;\n return zrUtil.map(vendors, function (vendorPrefix) {\n return vendorPrefix + 'transition:' + transitionText;\n }).join(';');\n}\n/**\n * @param {Object} textStyle\n * @return {string}\n * @inner\n */\n\n\nfunction assembleFont(textStyleModel) {\n var cssText = [];\n var fontSize = textStyleModel.get('fontSize');\n var color = textStyleModel.getTextColor();\n color && cssText.push('color:' + color);\n cssText.push('font:' + textStyleModel.getFont());\n fontSize && cssText.push('line-height:' + Math.round(fontSize * 3 / 2) + 'px');\n each(['decoration', 'align'], function (name) {\n var val = textStyleModel.get(name);\n val && cssText.push('text-' + name + ':' + val);\n });\n return cssText.join(';');\n}\n/**\n * @param {Object} tooltipModel\n * @return {string}\n * @inner\n */\n\n\nfunction assembleCssText(tooltipModel) {\n var cssText = [];\n var transitionDuration = tooltipModel.get('transitionDuration');\n var backgroundColor = tooltipModel.get('backgroundColor');\n var textStyleModel = tooltipModel.getModel('textStyle');\n var padding = tooltipModel.get('padding'); // Animation transition. Do not animate when transitionDuration is 0.\n\n transitionDuration && cssText.push(assembleTransition(transitionDuration));\n\n if (backgroundColor) {\n if (env.canvasSupported) {\n cssText.push('background-Color:' + backgroundColor);\n } else {\n // for ie\n cssText.push('background-Color:#' + zrColor.toHex(backgroundColor));\n cssText.push('filter:alpha(opacity=70)');\n }\n } // Border style\n\n\n each(['width', 'color', 'radius'], function (name) {\n var borderName = 'border-' + name;\n var camelCase = toCamelCase(borderName);\n var val = tooltipModel.get(camelCase);\n val != null && cssText.push(borderName + ':' + val + (name === 'color' ? '' : 'px'));\n }); // Text style\n\n cssText.push(assembleFont(textStyleModel)); // Padding\n\n if (padding != null) {\n cssText.push('padding:' + formatUtil.normalizeCssArray(padding).join('px ') + 'px');\n }\n\n return cssText.join(';') + ';';\n} // If not able to make, do not modify the input `out`.\n\n\nfunction makeStyleCoord(out, zr, appendToBody, zrX, zrY) {\n var zrPainter = zr && zr.painter;\n\n if (appendToBody) {\n var zrViewportRoot = zrPainter && zrPainter.getViewportRoot();\n\n if (zrViewportRoot) {\n // Some APPs might use scale on body, so we support CSS transform here.\n domUtil.transformLocalCoord(out, zrViewportRoot, document.body, zrX, zrY);\n }\n } else {\n out[0] = zrX;\n out[1] = zrY; // xy should be based on canvas root. But tooltipContent is\n // the sibling of canvas root. So padding of ec container\n // should be considered here.\n\n var viewportRootOffset = zrPainter && zrPainter.getViewportRootOffset();\n\n if (viewportRootOffset) {\n out[0] += viewportRootOffset.offsetLeft;\n out[1] += viewportRootOffset.offsetTop;\n }\n }\n}\n/**\n * @alias module:echarts/component/tooltip/TooltipContent\n * @param {HTMLElement} container\n * @param {ExtensionAPI} api\n * @param {Object} [opt]\n * @param {boolean} [opt.appendToBody]\n * `false`: the DOM element will be inside the container. Default value.\n * `true`: the DOM element will be appended to HTML body, which avoid\n * some overflow clip but intrude outside of the container.\n * @constructor\n */\n\n\nfunction TooltipContent(container, api, opt) {\n if (env.wxa) {\n return null;\n }\n\n var el = document.createElement('div');\n el.domBelongToZr = true;\n this.el = el;\n var zr = this._zr = api.getZr();\n var appendToBody = this._appendToBody = opt && opt.appendToBody;\n this._styleCoord = [0, 0];\n makeStyleCoord(this._styleCoord, zr, appendToBody, api.getWidth() / 2, api.getHeight() / 2);\n\n if (appendToBody) {\n document.body.appendChild(el);\n } else {\n container.appendChild(el);\n }\n\n this._container = container;\n this._show = false;\n /**\n * @private\n */\n\n this._hideTimeout; // FIXME\n // Is it needed to trigger zr event manually if\n // the browser do not support `pointer-events: none`.\n\n var self = this;\n\n el.onmouseenter = function () {\n // clear the timeout in hideLater and keep showing tooltip\n if (self._enterable) {\n clearTimeout(self._hideTimeout);\n self._show = true;\n }\n\n self._inContent = true;\n };\n\n el.onmousemove = function (e) {\n e = e || window.event;\n\n if (!self._enterable) {\n // `pointer-events: none` is set to tooltip content div\n // if `enterable` is set as `false`, and `el.onmousemove`\n // can not be triggered. But in browser that do not\n // support `pointer-events`, we need to do this:\n // Try trigger zrender event to avoid mouse\n // in and out shape too frequently\n var handler = zr.handler;\n var zrViewportRoot = zr.painter.getViewportRoot();\n eventUtil.normalizeEvent(zrViewportRoot, e, true);\n handler.dispatch('mousemove', e);\n }\n };\n\n el.onmouseleave = function () {\n if (self._enterable) {\n if (self._show) {\n self.hideLater(self._hideDelay);\n }\n }\n\n self._inContent = false;\n };\n}\n\nTooltipContent.prototype = {\n constructor: TooltipContent,\n\n /**\n * @private\n * @type {boolean}\n */\n _enterable: true,\n\n /**\n * Update when tooltip is rendered\n */\n update: function () {\n // FIXME\n // Move this logic to ec main?\n var container = this._container;\n var stl = container.currentStyle || document.defaultView.getComputedStyle(container);\n var domStyle = container.style;\n\n if (domStyle.position !== 'absolute' && stl.position !== 'absolute') {\n domStyle.position = 'relative';\n } // Hide the tooltip\n // PENDING\n // this.hide();\n\n },\n show: function (tooltipModel) {\n clearTimeout(this._hideTimeout);\n var el = this.el;\n var styleCoord = this._styleCoord;\n el.style.cssText = gCssText + assembleCssText(tooltipModel) // Because of the reason described in:\n // http://stackoverflow.com/questions/21125587/css3-transition-not-working-in-chrome-anymore\n // we should set initial value to `left` and `top`.\n + ';left:' + styleCoord[0] + 'px;top:' + styleCoord[1] + 'px;' + (tooltipModel.get('extraCssText') || '');\n el.style.display = el.innerHTML ? 'block' : 'none'; // If mouse occsionally move over the tooltip, a mouseout event will be\n // triggered by canvas, and cuase some unexpectable result like dragging\n // stop, \"unfocusAdjacency\". Here `pointer-events: none` is used to solve\n // it. Although it is not suppored by IE8~IE10, fortunately it is a rare\n // scenario.\n\n el.style.pointerEvents = this._enterable ? 'auto' : 'none';\n this._show = true;\n },\n setContent: function (content) {\n this.el.innerHTML = content == null ? '' : content;\n },\n setEnterable: function (enterable) {\n this._enterable = enterable;\n },\n getSize: function () {\n var el = this.el;\n return [el.clientWidth, el.clientHeight];\n },\n moveTo: function (zrX, zrY) {\n var styleCoord = this._styleCoord;\n makeStyleCoord(styleCoord, this._zr, this._appendToBody, zrX, zrY);\n var style = this.el.style;\n style.left = styleCoord[0] + 'px';\n style.top = styleCoord[1] + 'px';\n },\n hide: function () {\n this.el.style.display = 'none';\n this._show = false;\n },\n hideLater: function (time) {\n if (this._show && !(this._inContent && this._enterable)) {\n if (time) {\n this._hideDelay = time; // Set show false to avoid invoke hideLater mutiple times\n\n this._show = false;\n this._hideTimeout = setTimeout(zrUtil.bind(this.hide, this), time);\n } else {\n this.hide();\n }\n }\n },\n isShow: function () {\n return this._show;\n },\n dispose: function () {\n this.el.parentNode.removeChild(this.el);\n },\n getOuterSize: function () {\n var width = this.el.clientWidth;\n var height = this.el.clientHeight; // Consider browser compatibility.\n // IE8 does not support getComputedStyle.\n\n if (document.defaultView && document.defaultView.getComputedStyle) {\n var stl = document.defaultView.getComputedStyle(this.el);\n\n if (stl) {\n width += parseInt(stl.borderLeftWidth, 10) + parseInt(stl.borderRightWidth, 10);\n height += parseInt(stl.borderTopWidth, 10) + parseInt(stl.borderBottomWidth, 10);\n }\n }\n\n return {\n width: width,\n height: height\n };\n }\n};\nvar _default = TooltipContent;\nmodule.exports = _default;","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var eventUtil = require(\"./event\");\n\n/**\n * Only implements needed gestures for mobile.\n */\nvar GestureMgr = function () {\n /**\n * @private\n * @type {Array.}\n */\n this._track = [];\n};\n\nGestureMgr.prototype = {\n constructor: GestureMgr,\n recognize: function (event, target, root) {\n this._doTrack(event, target, root);\n\n return this._recognize(event);\n },\n clear: function () {\n this._track.length = 0;\n return this;\n },\n _doTrack: function (event, target, root) {\n var touches = event.touches;\n\n if (!touches) {\n return;\n }\n\n var trackItem = {\n points: [],\n touches: [],\n target: target,\n event: event\n };\n\n for (var i = 0, len = touches.length; i < len; i++) {\n var touch = touches[i];\n var pos = eventUtil.clientToLocal(root, touch, {});\n trackItem.points.push([pos.zrX, pos.zrY]);\n trackItem.touches.push(touch);\n }\n\n this._track.push(trackItem);\n },\n _recognize: function (event) {\n for (var eventName in recognizers) {\n if (recognizers.hasOwnProperty(eventName)) {\n var gestureInfo = recognizers[eventName](this._track, event);\n\n if (gestureInfo) {\n return gestureInfo;\n }\n }\n }\n }\n};\n\nfunction dist(pointPair) {\n var dx = pointPair[1][0] - pointPair[0][0];\n var dy = pointPair[1][1] - pointPair[0][1];\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nfunction center(pointPair) {\n return [(pointPair[0][0] + pointPair[1][0]) / 2, (pointPair[0][1] + pointPair[1][1]) / 2];\n}\n\nvar recognizers = {\n pinch: function (track, event) {\n var trackLen = track.length;\n\n if (!trackLen) {\n return;\n }\n\n var pinchEnd = (track[trackLen - 1] || {}).points;\n var pinchPre = (track[trackLen - 2] || {}).points || pinchEnd;\n\n if (pinchPre && pinchPre.length > 1 && pinchEnd && pinchEnd.length > 1) {\n var pinchScale = dist(pinchEnd) / dist(pinchPre);\n !isFinite(pinchScale) && (pinchScale = 1);\n event.pinchScale = pinchScale;\n var pinchCenter = center(pinchEnd);\n event.pinchX = pinchCenter[0];\n event.pinchY = pinchCenter[1];\n return {\n type: 'pinch',\n target: track[0].target,\n event: event\n };\n }\n } // Only pinch currently.\n\n};\nvar _default = GestureMgr;\nmodule.exports = _default;","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var matrix = require(\"../core/matrix\");\n\nvar vector = require(\"../core/vector\");\n\n/**\n * 提供变换扩展\n * @module zrender/mixin/Transformable\n * @author pissang (https://www.github.com/pissang)\n */\nvar mIdentity = matrix.identity;\nvar EPSILON = 5e-5;\n\nfunction isNotAroundZero(val) {\n return val > EPSILON || val < -EPSILON;\n}\n/**\n * @alias module:zrender/mixin/Transformable\n * @constructor\n */\n\n\nvar Transformable = function (opts) {\n opts = opts || {}; // If there are no given position, rotation, scale\n\n if (!opts.position) {\n /**\n * 平移\n * @type {Array.}\n * @default [0, 0]\n */\n this.position = [0, 0];\n }\n\n if (opts.rotation == null) {\n /**\n * 旋转\n * @type {Array.}\n * @default 0\n */\n this.rotation = 0;\n }\n\n if (!opts.scale) {\n /**\n * 缩放\n * @type {Array.}\n * @default [1, 1]\n */\n this.scale = [1, 1];\n }\n /**\n * 旋转和缩放的原点\n * @type {Array.}\n * @default null\n */\n\n\n this.origin = this.origin || null;\n};\n\nvar transformableProto = Transformable.prototype;\ntransformableProto.transform = null;\n/**\n * 判断是否需要有坐标变换\n * 如果有坐标变换, 则从position, rotation, scale以及父节点的transform计算出自身的transform矩阵\n */\n\ntransformableProto.needLocalTransform = function () {\n return isNotAroundZero(this.rotation) || isNotAroundZero(this.position[0]) || isNotAroundZero(this.position[1]) || isNotAroundZero(this.scale[0] - 1) || isNotAroundZero(this.scale[1] - 1);\n};\n\nvar scaleTmp = [];\n\ntransformableProto.updateTransform = function () {\n var parent = this.parent;\n var parentHasTransform = parent && parent.transform;\n var needLocalTransform = this.needLocalTransform();\n var m = this.transform;\n\n if (!(needLocalTransform || parentHasTransform)) {\n m && mIdentity(m);\n return;\n }\n\n m = m || matrix.create();\n\n if (needLocalTransform) {\n this.getLocalTransform(m);\n } else {\n mIdentity(m);\n } // 应用父节点变换\n\n\n if (parentHasTransform) {\n if (needLocalTransform) {\n matrix.mul(m, parent.transform, m);\n } else {\n matrix.copy(m, parent.transform);\n }\n } // 保存这个变换矩阵\n\n\n this.transform = m;\n var globalScaleRatio = this.globalScaleRatio;\n\n if (globalScaleRatio != null && globalScaleRatio !== 1) {\n this.getGlobalScale(scaleTmp);\n var relX = scaleTmp[0] < 0 ? -1 : 1;\n var relY = scaleTmp[1] < 0 ? -1 : 1;\n var sx = ((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0;\n var sy = ((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0;\n m[0] *= sx;\n m[1] *= sx;\n m[2] *= sy;\n m[3] *= sy;\n }\n\n this.invTransform = this.invTransform || matrix.create();\n matrix.invert(this.invTransform, m);\n};\n\ntransformableProto.getLocalTransform = function (m) {\n return Transformable.getLocalTransform(this, m);\n};\n/**\n * 将自己的transform应用到context上\n * @param {CanvasRenderingContext2D} ctx\n */\n\n\ntransformableProto.setTransform = function (ctx) {\n var m = this.transform;\n var dpr = ctx.dpr || 1;\n\n if (m) {\n ctx.setTransform(dpr * m[0], dpr * m[1], dpr * m[2], dpr * m[3], dpr * m[4], dpr * m[5]);\n } else {\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n }\n};\n\ntransformableProto.restoreTransform = function (ctx) {\n var dpr = ctx.dpr || 1;\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n};\n\nvar tmpTransform = [];\nvar originTransform = matrix.create();\n\ntransformableProto.setLocalTransform = function (m) {\n if (!m) {\n // TODO return or set identity?\n return;\n }\n\n var sx = m[0] * m[0] + m[1] * m[1];\n var sy = m[2] * m[2] + m[3] * m[3];\n var position = this.position;\n var scale = this.scale;\n\n if (isNotAroundZero(sx - 1)) {\n sx = Math.sqrt(sx);\n }\n\n if (isNotAroundZero(sy - 1)) {\n sy = Math.sqrt(sy);\n }\n\n if (m[0] < 0) {\n sx = -sx;\n }\n\n if (m[3] < 0) {\n sy = -sy;\n }\n\n position[0] = m[4];\n position[1] = m[5];\n scale[0] = sx;\n scale[1] = sy;\n this.rotation = Math.atan2(-m[1] / sy, m[0] / sx);\n};\n/**\n * 分解`transform`矩阵到`position`, `rotation`, `scale`\n */\n\n\ntransformableProto.decomposeTransform = function () {\n if (!this.transform) {\n return;\n }\n\n var parent = this.parent;\n var m = this.transform;\n\n if (parent && parent.transform) {\n // Get local transform and decompose them to position, scale, rotation\n matrix.mul(tmpTransform, parent.invTransform, m);\n m = tmpTransform;\n }\n\n var origin = this.origin;\n\n if (origin && (origin[0] || origin[1])) {\n originTransform[4] = origin[0];\n originTransform[5] = origin[1];\n matrix.mul(tmpTransform, m, originTransform);\n tmpTransform[4] -= origin[0];\n tmpTransform[5] -= origin[1];\n m = tmpTransform;\n }\n\n this.setLocalTransform(m);\n};\n/**\n * Get global scale\n * @return {Array.}\n */\n\n\ntransformableProto.getGlobalScale = function (out) {\n var m = this.transform;\n out = out || [];\n\n if (!m) {\n out[0] = 1;\n out[1] = 1;\n return out;\n }\n\n out[0] = Math.sqrt(m[0] * m[0] + m[1] * m[1]);\n out[1] = Math.sqrt(m[2] * m[2] + m[3] * m[3]);\n\n if (m[0] < 0) {\n out[0] = -out[0];\n }\n\n if (m[3] < 0) {\n out[1] = -out[1];\n }\n\n return out;\n};\n/**\n * 变换坐标位置到 shape 的局部坐标空间\n * @method\n * @param {number} x\n * @param {number} y\n * @return {Array.}\n */\n\n\ntransformableProto.transformCoordToLocal = function (x, y) {\n var v2 = [x, y];\n var invTransform = this.invTransform;\n\n if (invTransform) {\n vector.applyTransform(v2, v2, invTransform);\n }\n\n return v2;\n};\n/**\n * 变换局部坐标位置到全局坐标空间\n * @method\n * @param {number} x\n * @param {number} y\n * @return {Array.}\n */\n\n\ntransformableProto.transformCoordToGlobal = function (x, y) {\n var v2 = [x, y];\n var transform = this.transform;\n\n if (transform) {\n vector.applyTransform(v2, v2, transform);\n }\n\n return v2;\n};\n/**\n * @static\n * @param {Object} target\n * @param {Array.} target.origin\n * @param {number} target.rotation\n * @param {Array.} target.position\n * @param {Array.} [m]\n */\n\n\nTransformable.getLocalTransform = function (target, m) {\n m = m || [];\n mIdentity(m);\n var origin = target.origin;\n var scale = target.scale || [1, 1];\n var rotation = target.rotation || 0;\n var position = target.position || [0, 0];\n\n if (origin) {\n // Translate to origin\n m[4] -= origin[0];\n m[5] -= origin[1];\n }\n\n matrix.scale(m, m, scale);\n\n if (rotation) {\n matrix.rotate(m, m, rotation);\n }\n\n if (origin) {\n // Translate back from origin\n m[4] += origin[0];\n m[5] += origin[1];\n }\n\n m[4] += position[0];\n m[5] += position[1];\n return m;\n};\n\nvar _default = Transformable;\nmodule.exports = _default;","var Displayable = require(\"./Displayable\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\nvar zrUtil = require(\"../core/util\");\n\nvar imageHelper = require(\"./helper/image\");\n\n/**\n * @alias zrender/graphic/Image\n * @extends module:zrender/graphic/Displayable\n * @constructor\n * @param {Object} opts\n */\nfunction ZImage(opts) {\n Displayable.call(this, opts);\n}\n\nZImage.prototype = {\n constructor: ZImage,\n type: 'image',\n brush: function (ctx, prevEl) {\n var style = this.style;\n var src = style.image; // Must bind each time\n\n style.bind(ctx, this, prevEl);\n var image = this._image = imageHelper.createOrUpdateImage(src, this._image, this, this.onload);\n\n if (!image || !imageHelper.isImageReady(image)) {\n return;\n } // 图片已经加载完成\n // if (image.nodeName.toUpperCase() == 'IMG') {\n // if (!image.complete) {\n // return;\n // }\n // }\n // Else is canvas\n\n\n var x = style.x || 0;\n var y = style.y || 0;\n var width = style.width;\n var height = style.height;\n var aspect = image.width / image.height;\n\n if (width == null && height != null) {\n // Keep image/height ratio\n width = height * aspect;\n } else if (height == null && width != null) {\n height = width / aspect;\n } else if (width == null && height == null) {\n width = image.width;\n height = image.height;\n } // 设置transform\n\n\n this.setTransform(ctx);\n\n if (style.sWidth && style.sHeight) {\n var sx = style.sx || 0;\n var sy = style.sy || 0;\n ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height);\n } else if (style.sx && style.sy) {\n var sx = style.sx;\n var sy = style.sy;\n var sWidth = width - sx;\n var sHeight = height - sy;\n ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height);\n } else {\n ctx.drawImage(image, x, y, width, height);\n } // Draw rect text\n\n\n if (style.text != null) {\n // Only restore transform when needs draw text.\n this.restoreTransform(ctx);\n this.drawRectText(ctx, this.getBoundingRect());\n }\n },\n getBoundingRect: function () {\n var style = this.style;\n\n if (!this._rect) {\n this._rect = new BoundingRect(style.x || 0, style.y || 0, style.width || 0, style.height || 0);\n }\n\n return this._rect;\n }\n};\nzrUtil.inherits(ZImage, Displayable);\nvar _default = ZImage;\nmodule.exports = _default;","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\nvar getDataItemValue = _model.getDataItemValue;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\nvar map = _util.map;\nvar isArray = _util.isArray;\nvar isString = _util.isString;\nvar isObject = _util.isObject;\nvar isTypedArray = _util.isTypedArray;\nvar isArrayLike = _util.isArrayLike;\nvar extend = _util.extend;\nvar assert = _util.assert;\n\nvar Source = require(\"../Source\");\n\nvar _sourceType = require(\"./sourceType\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SOURCE_FORMAT_ARRAY_ROWS = _sourceType.SOURCE_FORMAT_ARRAY_ROWS;\nvar SOURCE_FORMAT_OBJECT_ROWS = _sourceType.SOURCE_FORMAT_OBJECT_ROWS;\nvar SOURCE_FORMAT_KEYED_COLUMNS = _sourceType.SOURCE_FORMAT_KEYED_COLUMNS;\nvar SOURCE_FORMAT_UNKNOWN = _sourceType.SOURCE_FORMAT_UNKNOWN;\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SERIES_LAYOUT_BY_ROW = _sourceType.SERIES_LAYOUT_BY_ROW;\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// The result of `guessOrdinal`.\nvar BE_ORDINAL = {\n Must: 1,\n // Encounter string but not '-' and not number-like.\n Might: 2,\n // Encounter string but number-like.\n Not: 3 // Other cases\n\n};\nvar inner = makeInner();\n/**\n * @see {module:echarts/data/Source}\n * @param {module:echarts/component/dataset/DatasetModel} datasetModel\n * @return {string} sourceFormat\n */\n\nfunction detectSourceFormat(datasetModel) {\n var data = datasetModel.option.source;\n var sourceFormat = SOURCE_FORMAT_UNKNOWN;\n\n if (isTypedArray(data)) {\n sourceFormat = SOURCE_FORMAT_TYPED_ARRAY;\n } else if (isArray(data)) {\n // FIXME Whether tolerate null in top level array?\n if (data.length === 0) {\n sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\n }\n\n for (var i = 0, len = data.length; i < len; i++) {\n var item = data[i];\n\n if (item == null) {\n continue;\n } else if (isArray(item)) {\n sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\n break;\n } else if (isObject(item)) {\n sourceFormat = SOURCE_FORMAT_OBJECT_ROWS;\n break;\n }\n }\n } else if (isObject(data)) {\n for (var key in data) {\n if (data.hasOwnProperty(key) && isArrayLike(data[key])) {\n sourceFormat = SOURCE_FORMAT_KEYED_COLUMNS;\n break;\n }\n }\n } else if (data != null) {\n throw new Error('Invalid data');\n }\n\n inner(datasetModel).sourceFormat = sourceFormat;\n}\n/**\n * [Scenarios]:\n * (1) Provide source data directly:\n * series: {\n * encode: {...},\n * dimensions: [...]\n * seriesLayoutBy: 'row',\n * data: [[...]]\n * }\n * (2) Refer to datasetModel.\n * series: [{\n * encode: {...}\n * // Ignore datasetIndex means `datasetIndex: 0`\n * // and the dimensions defination in dataset is used\n * }, {\n * encode: {...},\n * seriesLayoutBy: 'column',\n * datasetIndex: 1\n * }]\n *\n * Get data from series itself or datset.\n * @return {module:echarts/data/Source} source\n */\n\n\nfunction getSource(seriesModel) {\n return inner(seriesModel).source;\n}\n/**\n * MUST be called before mergeOption of all series.\n * @param {module:echarts/model/Global} ecModel\n */\n\n\nfunction resetSourceDefaulter(ecModel) {\n // `datasetMap` is used to make default encode.\n inner(ecModel).datasetMap = createHashMap();\n}\n/**\n * [Caution]:\n * MUST be called after series option merged and\n * before \"series.getInitailData()\" called.\n *\n * [The rule of making default encode]:\n * Category axis (if exists) alway map to the first dimension.\n * Each other axis occupies a subsequent dimension.\n *\n * [Why make default encode]:\n * Simplify the typing of encode in option, avoiding the case like that:\n * series: [{encode: {x: 0, y: 1}}, {encode: {x: 0, y: 2}}, {encode: {x: 0, y: 3}}],\n * where the \"y\" have to be manually typed as \"1, 2, 3, ...\".\n *\n * @param {module:echarts/model/Series} seriesModel\n */\n\n\nfunction prepareSource(seriesModel) {\n var seriesOption = seriesModel.option;\n var data = seriesOption.data;\n var sourceFormat = isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL;\n var fromDataset = false;\n var seriesLayoutBy = seriesOption.seriesLayoutBy;\n var sourceHeader = seriesOption.sourceHeader;\n var dimensionsDefine = seriesOption.dimensions;\n var datasetModel = getDatasetModel(seriesModel);\n\n if (datasetModel) {\n var datasetOption = datasetModel.option;\n data = datasetOption.source;\n sourceFormat = inner(datasetModel).sourceFormat;\n fromDataset = true; // These settings from series has higher priority.\n\n seriesLayoutBy = seriesLayoutBy || datasetOption.seriesLayoutBy;\n sourceHeader == null && (sourceHeader = datasetOption.sourceHeader);\n dimensionsDefine = dimensionsDefine || datasetOption.dimensions;\n }\n\n var completeResult = completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine);\n inner(seriesModel).source = new Source({\n data: data,\n fromDataset: fromDataset,\n seriesLayoutBy: seriesLayoutBy,\n sourceFormat: sourceFormat,\n dimensionsDefine: completeResult.dimensionsDefine,\n startIndex: completeResult.startIndex,\n dimensionsDetectCount: completeResult.dimensionsDetectCount,\n // Note: dataset option does not have `encode`.\n encodeDefine: seriesOption.encode\n });\n} // return {startIndex, dimensionsDefine, dimensionsCount}\n\n\nfunction completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine) {\n if (!data) {\n return {\n dimensionsDefine: normalizeDimensionsDefine(dimensionsDefine)\n };\n }\n\n var dimensionsDetectCount;\n var startIndex;\n\n if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\n // Rule: Most of the first line are string: it is header.\n // Caution: consider a line with 5 string and 1 number,\n // it still can not be sure it is a head, because the\n // 5 string may be 5 values of category columns.\n if (sourceHeader === 'auto' || sourceHeader == null) {\n arrayRowsTravelFirst(function (val) {\n // '-' is regarded as null/undefined.\n if (val != null && val !== '-') {\n if (isString(val)) {\n startIndex == null && (startIndex = 1);\n } else {\n startIndex = 0;\n }\n } // 10 is an experience number, avoid long loop.\n\n }, seriesLayoutBy, data, 10);\n } else {\n startIndex = sourceHeader ? 1 : 0;\n }\n\n if (!dimensionsDefine && startIndex === 1) {\n dimensionsDefine = [];\n arrayRowsTravelFirst(function (val, index) {\n dimensionsDefine[index] = val != null ? val : '';\n }, seriesLayoutBy, data);\n }\n\n dimensionsDetectCount = dimensionsDefine ? dimensionsDefine.length : seriesLayoutBy === SERIES_LAYOUT_BY_ROW ? data.length : data[0] ? data[0].length : null;\n } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\n if (!dimensionsDefine) {\n dimensionsDefine = objectRowsCollectDimensions(data);\n }\n } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n if (!dimensionsDefine) {\n dimensionsDefine = [];\n each(data, function (colArr, key) {\n dimensionsDefine.push(key);\n });\n }\n } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n var value0 = getDataItemValue(data[0]);\n dimensionsDetectCount = isArray(value0) && value0.length || 1;\n } else if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {}\n\n return {\n startIndex: startIndex,\n dimensionsDefine: normalizeDimensionsDefine(dimensionsDefine),\n dimensionsDetectCount: dimensionsDetectCount\n };\n} // Consider dimensions defined like ['A', 'price', 'B', 'price', 'C', 'price'],\n// which is reasonable. But dimension name is duplicated.\n// Returns undefined or an array contains only object without null/undefiend or string.\n\n\nfunction normalizeDimensionsDefine(dimensionsDefine) {\n if (!dimensionsDefine) {\n // The meaning of null/undefined is different from empty array.\n return;\n }\n\n var nameMap = createHashMap();\n return map(dimensionsDefine, function (item, index) {\n item = extend({}, isObject(item) ? item : {\n name: item\n }); // User can set null in dimensions.\n // We dont auto specify name, othewise a given name may\n // cause it be refered unexpectedly.\n\n if (item.name == null) {\n return item;\n } // Also consider number form like 2012.\n\n\n item.name += ''; // User may also specify displayName.\n // displayName will always exists except user not\n // specified or dim name is not specified or detected.\n // (A auto generated dim name will not be used as\n // displayName).\n\n if (item.displayName == null) {\n item.displayName = item.name;\n }\n\n var exist = nameMap.get(item.name);\n\n if (!exist) {\n nameMap.set(item.name, {\n count: 1\n });\n } else {\n item.name += '-' + exist.count++;\n }\n\n return item;\n });\n}\n\nfunction arrayRowsTravelFirst(cb, seriesLayoutBy, data, maxLoop) {\n maxLoop == null && (maxLoop = Infinity);\n\n if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n cb(data[i] ? data[i][0] : null, i);\n }\n } else {\n var value0 = data[0] || [];\n\n for (var i = 0; i < value0.length && i < maxLoop; i++) {\n cb(value0[i], i);\n }\n }\n}\n\nfunction objectRowsCollectDimensions(data) {\n var firstIndex = 0;\n var obj;\n\n while (firstIndex < data.length && !(obj = data[firstIndex++])) {} // jshint ignore: line\n\n\n if (obj) {\n var dimensions = [];\n each(obj, function (value, key) {\n dimensions.push(key);\n });\n return dimensions;\n }\n}\n/**\n * [The strategy of the arrengment of data dimensions for dataset]:\n * \"value way\": all axes are non-category axes. So series one by one take\n * several (the number is coordSysDims.length) dimensions from dataset.\n * The result of data arrengment of data dimensions like:\n * | ser0_x | ser0_y | ser1_x | ser1_y | ser2_x | ser2_y |\n * \"category way\": at least one axis is category axis. So the the first data\n * dimension is always mapped to the first category axis and shared by\n * all of the series. The other data dimensions are taken by series like\n * \"value way\" does.\n * The result of data arrengment of data dimensions like:\n * | ser_shared_x | ser0_y | ser1_y | ser2_y |\n *\n * @param {Array.} coordDimensions [{name: , type: , dimsDef: }, ...]\n * @param {module:model/Series} seriesModel\n * @param {module:data/Source} source\n * @return {Object} encode Never be `null/undefined`.\n */\n\n\nfunction makeSeriesEncodeForAxisCoordSys(coordDimensions, seriesModel, source) {\n var encode = {};\n var datasetModel = getDatasetModel(seriesModel); // Currently only make default when using dataset, util more reqirements occur.\n\n if (!datasetModel || !coordDimensions) {\n return encode;\n }\n\n var encodeItemName = [];\n var encodeSeriesName = [];\n var ecModel = seriesModel.ecModel;\n var datasetMap = inner(ecModel).datasetMap;\n var key = datasetModel.uid + '_' + source.seriesLayoutBy;\n var baseCategoryDimIndex;\n var categoryWayValueDimStart;\n coordDimensions = coordDimensions.slice();\n each(coordDimensions, function (coordDimInfo, coordDimIdx) {\n !isObject(coordDimInfo) && (coordDimensions[coordDimIdx] = {\n name: coordDimInfo\n });\n\n if (coordDimInfo.type === 'ordinal' && baseCategoryDimIndex == null) {\n baseCategoryDimIndex = coordDimIdx;\n categoryWayValueDimStart = getDataDimCountOnCoordDim(coordDimensions[coordDimIdx]);\n }\n\n encode[coordDimInfo.name] = [];\n });\n var datasetRecord = datasetMap.get(key) || datasetMap.set(key, {\n categoryWayDim: categoryWayValueDimStart,\n valueWayDim: 0\n }); // TODO\n // Auto detect first time axis and do arrangement.\n\n each(coordDimensions, function (coordDimInfo, coordDimIdx) {\n var coordDimName = coordDimInfo.name;\n var count = getDataDimCountOnCoordDim(coordDimInfo); // In value way.\n\n if (baseCategoryDimIndex == null) {\n var start = datasetRecord.valueWayDim;\n pushDim(encode[coordDimName], start, count);\n pushDim(encodeSeriesName, start, count);\n datasetRecord.valueWayDim += count; // ??? TODO give a better default series name rule?\n // especially when encode x y specified.\n // consider: when mutiple series share one dimension\n // category axis, series name should better use\n // the other dimsion name. On the other hand, use\n // both dimensions name.\n } // In category way, the first category axis.\n else if (baseCategoryDimIndex === coordDimIdx) {\n pushDim(encode[coordDimName], 0, count);\n pushDim(encodeItemName, 0, count);\n } // In category way, the other axis.\n else {\n var start = datasetRecord.categoryWayDim;\n pushDim(encode[coordDimName], start, count);\n pushDim(encodeSeriesName, start, count);\n datasetRecord.categoryWayDim += count;\n }\n });\n\n function pushDim(dimIdxArr, idxFrom, idxCount) {\n for (var i = 0; i < idxCount; i++) {\n dimIdxArr.push(idxFrom + i);\n }\n }\n\n function getDataDimCountOnCoordDim(coordDimInfo) {\n var dimsDef = coordDimInfo.dimsDef;\n return dimsDef ? dimsDef.length : 1;\n }\n\n encodeItemName.length && (encode.itemName = encodeItemName);\n encodeSeriesName.length && (encode.seriesName = encodeSeriesName);\n return encode;\n}\n/**\n * Work for data like [{name: ..., value: ...}, ...].\n *\n * @param {module:model/Series} seriesModel\n * @param {module:data/Source} source\n * @return {Object} encode Never be `null/undefined`.\n */\n\n\nfunction makeSeriesEncodeForNameBased(seriesModel, source, dimCount) {\n var encode = {};\n var datasetModel = getDatasetModel(seriesModel); // Currently only make default when using dataset, util more reqirements occur.\n\n if (!datasetModel) {\n return encode;\n }\n\n var sourceFormat = source.sourceFormat;\n var dimensionsDefine = source.dimensionsDefine;\n var potentialNameDimIndex;\n\n if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n each(dimensionsDefine, function (dim, idx) {\n if ((isObject(dim) ? dim.name : dim) === 'name') {\n potentialNameDimIndex = idx;\n }\n });\n } // idxResult: {v, n}.\n\n\n var idxResult = function () {\n var idxRes0 = {};\n var idxRes1 = {};\n var guessRecords = []; // 5 is an experience value.\n\n for (var i = 0, len = Math.min(5, dimCount); i < len; i++) {\n var guessResult = doGuessOrdinal(source.data, sourceFormat, source.seriesLayoutBy, dimensionsDefine, source.startIndex, i);\n guessRecords.push(guessResult);\n var isPureNumber = guessResult === BE_ORDINAL.Not; // [Strategy of idxRes0]: find the first BE_ORDINAL.Not as the value dim,\n // and then find a name dim with the priority:\n // \"BE_ORDINAL.Might|BE_ORDINAL.Must\" > \"other dim\" > \"the value dim itself\".\n\n if (isPureNumber && idxRes0.v == null && i !== potentialNameDimIndex) {\n idxRes0.v = i;\n }\n\n if (idxRes0.n == null || idxRes0.n === idxRes0.v || !isPureNumber && guessRecords[idxRes0.n] === BE_ORDINAL.Not) {\n idxRes0.n = i;\n }\n\n if (fulfilled(idxRes0) && guessRecords[idxRes0.n] !== BE_ORDINAL.Not) {\n return idxRes0;\n } // [Strategy of idxRes1]: if idxRes0 not satisfied (that is, no BE_ORDINAL.Not),\n // find the first BE_ORDINAL.Might as the value dim,\n // and then find a name dim with the priority:\n // \"other dim\" > \"the value dim itself\".\n // That is for backward compat: number-like (e.g., `'3'`, `'55'`) can be\n // treated as number.\n\n\n if (!isPureNumber) {\n if (guessResult === BE_ORDINAL.Might && idxRes1.v == null && i !== potentialNameDimIndex) {\n idxRes1.v = i;\n }\n\n if (idxRes1.n == null || idxRes1.n === idxRes1.v) {\n idxRes1.n = i;\n }\n }\n }\n\n function fulfilled(idxResult) {\n return idxResult.v != null && idxResult.n != null;\n }\n\n return fulfilled(idxRes0) ? idxRes0 : fulfilled(idxRes1) ? idxRes1 : null;\n }();\n\n if (idxResult) {\n encode.value = idxResult.v; // `potentialNameDimIndex` has highest priority.\n\n var nameDimIndex = potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n; // By default, label use itemName in charts.\n // So we dont set encodeLabel here.\n\n encode.itemName = [nameDimIndex];\n encode.seriesName = [nameDimIndex];\n }\n\n return encode;\n}\n/**\n * If return null/undefined, indicate that should not use datasetModel.\n */\n\n\nfunction getDatasetModel(seriesModel) {\n var option = seriesModel.option; // Caution: consider the scenario:\n // A dataset is declared and a series is not expected to use the dataset,\n // and at the beginning `setOption({series: { noData })` (just prepare other\n // option but no data), then `setOption({series: {data: [...]}); In this case,\n // the user should set an empty array to avoid that dataset is used by default.\n\n var thisData = option.data;\n\n if (!thisData) {\n return seriesModel.ecModel.getComponent('dataset', option.datasetIndex || 0);\n }\n}\n/**\n * The rule should not be complex, otherwise user might not\n * be able to known where the data is wrong.\n * The code is ugly, but how to make it neat?\n *\n * @param {module:echars/data/Source} source\n * @param {number} dimIndex\n * @return {BE_ORDINAL} guess result.\n */\n\n\nfunction guessOrdinal(source, dimIndex) {\n return doGuessOrdinal(source.data, source.sourceFormat, source.seriesLayoutBy, source.dimensionsDefine, source.startIndex, dimIndex);\n} // dimIndex may be overflow source data.\n// return {BE_ORDINAL}\n\n\nfunction doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, startIndex, dimIndex) {\n var result; // Experience value.\n\n var maxLoop = 5;\n\n if (isTypedArray(data)) {\n return BE_ORDINAL.Not;\n } // When sourceType is 'objectRows' or 'keyedColumns', dimensionsDefine\n // always exists in source.\n\n\n var dimName;\n var dimType;\n\n if (dimensionsDefine) {\n var dimDefItem = dimensionsDefine[dimIndex];\n\n if (isObject(dimDefItem)) {\n dimName = dimDefItem.name;\n dimType = dimDefItem.type;\n } else if (isString(dimDefItem)) {\n dimName = dimDefItem;\n }\n }\n\n if (dimType != null) {\n return dimType === 'ordinal' ? BE_ORDINAL.Must : BE_ORDINAL.Not;\n }\n\n if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\n if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\n var sample = data[dimIndex];\n\n for (var i = 0; i < (sample || []).length && i < maxLoop; i++) {\n if ((result = detectValue(sample[startIndex + i])) != null) {\n return result;\n }\n }\n } else {\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n var row = data[startIndex + i];\n\n if (row && (result = detectValue(row[dimIndex])) != null) {\n return result;\n }\n }\n }\n } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\n if (!dimName) {\n return BE_ORDINAL.Not;\n }\n\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n var item = data[i];\n\n if (item && (result = detectValue(item[dimName])) != null) {\n return result;\n }\n }\n } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n if (!dimName) {\n return BE_ORDINAL.Not;\n }\n\n var sample = data[dimName];\n\n if (!sample || isTypedArray(sample)) {\n return BE_ORDINAL.Not;\n }\n\n for (var i = 0; i < sample.length && i < maxLoop; i++) {\n if ((result = detectValue(sample[i])) != null) {\n return result;\n }\n }\n } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n var item = data[i];\n var val = getDataItemValue(item);\n\n if (!isArray(val)) {\n return BE_ORDINAL.Not;\n }\n\n if ((result = detectValue(val[dimIndex])) != null) {\n return result;\n }\n }\n }\n\n function detectValue(val) {\n var beStr = isString(val); // Consider usage convenience, '1', '2' will be treated as \"number\".\n // `isFinit('')` get `true`.\n\n if (val != null && isFinite(val) && val !== '') {\n return beStr ? BE_ORDINAL.Might : BE_ORDINAL.Not;\n } else if (beStr && val !== '-') {\n return BE_ORDINAL.Must;\n }\n }\n\n return BE_ORDINAL.Not;\n}\n\nexports.BE_ORDINAL = BE_ORDINAL;\nexports.detectSourceFormat = detectSourceFormat;\nexports.getSource = getSource;\nexports.resetSourceDefaulter = resetSourceDefaulter;\nexports.prepareSource = prepareSource;\nexports.makeSeriesEncodeForAxisCoordSys = makeSeriesEncodeForAxisCoordSys;\nexports.makeSeriesEncodeForNameBased = makeSeriesEncodeForNameBased;\nexports.guessOrdinal = guessOrdinal;","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (key, value) {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] < 4 ? 1 : match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\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*/\n\n/**\n * @param {Object} finder contains {seriesIndex, dataIndex, dataIndexInside}\n * @param {module:echarts/model/Global} ecModel\n * @return {Object} {point: [x, y], el: ...} point Will not be null.\n */\nfunction _default(finder, ecModel) {\n var point = [];\n var seriesIndex = finder.seriesIndex;\n var seriesModel;\n\n if (seriesIndex == null || !(seriesModel = ecModel.getSeriesByIndex(seriesIndex))) {\n return {\n point: []\n };\n }\n\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, finder);\n\n if (dataIndex == null || dataIndex < 0 || zrUtil.isArray(dataIndex)) {\n return {\n point: []\n };\n }\n\n var el = data.getItemGraphicEl(dataIndex);\n var coordSys = seriesModel.coordinateSystem;\n\n if (seriesModel.getTooltipPosition) {\n point = seriesModel.getTooltipPosition(dataIndex) || [];\n } else if (coordSys && coordSys.dataToPoint) {\n point = coordSys.dataToPoint(data.getValues(zrUtil.map(coordSys.dimensions, function (dim) {\n return data.mapDimension(dim);\n }), dataIndex, true)) || [];\n } else if (el) {\n // Use graphic bounding rect\n var rect = el.getBoundingRect().clone();\n rect.applyTransform(el.transform);\n point = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n }\n\n return {\n point: point,\n el: el\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 _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _labelHelper = require(\"./labelHelper\");\n\nvar getDefaultLabel = _labelHelper.getDefaultLabel;\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/chart/helper/Symbol\n */\n\n/**\n * @constructor\n * @alias {module:echarts/chart/helper/Symbol}\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @extends {module:zrender/graphic/Group}\n */\nfunction SymbolClz(data, idx, seriesScope) {\n graphic.Group.call(this);\n this.updateData(data, idx, seriesScope);\n}\n\nvar symbolProto = SymbolClz.prototype;\n/**\n * @public\n * @static\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @return {Array.} [width, height]\n */\n\nvar getSymbolSize = SymbolClz.getSymbolSize = function (data, idx) {\n var symbolSize = data.getItemVisual(idx, 'symbolSize');\n return symbolSize instanceof Array ? symbolSize.slice() : [+symbolSize, +symbolSize];\n};\n\nfunction getScale(symbolSize) {\n return [symbolSize[0] / 2, symbolSize[1] / 2];\n}\n\nfunction driftSymbol(dx, dy) {\n this.parent.drift(dx, dy);\n}\n\nsymbolProto._createSymbol = function (symbolType, data, idx, symbolSize, keepAspect) {\n // Remove paths created before\n this.removeAll();\n var color = data.getItemVisual(idx, 'color'); // var symbolPath = createSymbol(\n // symbolType, -0.5, -0.5, 1, 1, color\n // );\n // If width/height are set too small (e.g., set to 1) on ios10\n // and macOS Sierra, a circle stroke become a rect, no matter what\n // the scale is set. So we set width/height as 2. See #4150.\n\n var symbolPath = createSymbol(symbolType, -1, -1, 2, 2, color, keepAspect);\n symbolPath.attr({\n z2: 100,\n culling: true,\n scale: getScale(symbolSize)\n }); // Rewrite drift method\n\n symbolPath.drift = driftSymbol;\n this._symbolType = symbolType;\n this.add(symbolPath);\n};\n/**\n * Stop animation\n * @param {boolean} toLastFrame\n */\n\n\nsymbolProto.stopSymbolAnimation = function (toLastFrame) {\n this.childAt(0).stopAnimation(toLastFrame);\n};\n/**\n * FIXME:\n * Caution: This method breaks the encapsulation of this module,\n * but it indeed brings convenience. So do not use the method\n * unless you detailedly know all the implements of `Symbol`,\n * especially animation.\n *\n * Get symbol path element.\n */\n\n\nsymbolProto.getSymbolPath = function () {\n return this.childAt(0);\n};\n/**\n * Get scale(aka, current symbol size).\n * Including the change caused by animation\n */\n\n\nsymbolProto.getScale = function () {\n return this.childAt(0).scale;\n};\n/**\n * Highlight symbol\n */\n\n\nsymbolProto.highlight = function () {\n this.childAt(0).trigger('emphasis');\n};\n/**\n * Downplay symbol\n */\n\n\nsymbolProto.downplay = function () {\n this.childAt(0).trigger('normal');\n};\n/**\n * @param {number} zlevel\n * @param {number} z\n */\n\n\nsymbolProto.setZ = function (zlevel, z) {\n var symbolPath = this.childAt(0);\n symbolPath.zlevel = zlevel;\n symbolPath.z = z;\n};\n\nsymbolProto.setDraggable = function (draggable) {\n var symbolPath = this.childAt(0);\n symbolPath.draggable = draggable;\n symbolPath.cursor = draggable ? 'move' : symbolPath.cursor;\n};\n/**\n * Update symbol properties\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @param {Object} [seriesScope]\n * @param {Object} [seriesScope.itemStyle]\n * @param {Object} [seriesScope.hoverItemStyle]\n * @param {Object} [seriesScope.symbolRotate]\n * @param {Object} [seriesScope.symbolOffset]\n * @param {module:echarts/model/Model} [seriesScope.labelModel]\n * @param {module:echarts/model/Model} [seriesScope.hoverLabelModel]\n * @param {boolean} [seriesScope.hoverAnimation]\n * @param {Object} [seriesScope.cursorStyle]\n * @param {module:echarts/model/Model} [seriesScope.itemModel]\n * @param {string} [seriesScope.symbolInnerColor]\n * @param {Object} [seriesScope.fadeIn=false]\n */\n\n\nsymbolProto.updateData = function (data, idx, seriesScope) {\n this.silent = false;\n var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\n var seriesModel = data.hostModel;\n var symbolSize = getSymbolSize(data, idx);\n var isInit = symbolType !== this._symbolType;\n\n if (isInit) {\n var keepAspect = data.getItemVisual(idx, 'symbolKeepAspect');\n\n this._createSymbol(symbolType, data, idx, symbolSize, keepAspect);\n } else {\n var symbolPath = this.childAt(0);\n symbolPath.silent = false;\n graphic.updateProps(symbolPath, {\n scale: getScale(symbolSize)\n }, seriesModel, idx);\n }\n\n this._updateCommon(data, idx, symbolSize, seriesScope);\n\n if (isInit) {\n var symbolPath = this.childAt(0);\n var fadeIn = seriesScope && seriesScope.fadeIn;\n var target = {\n scale: symbolPath.scale.slice()\n };\n fadeIn && (target.style = {\n opacity: symbolPath.style.opacity\n });\n symbolPath.scale = [0, 0];\n fadeIn && (symbolPath.style.opacity = 0);\n graphic.initProps(symbolPath, target, seriesModel, idx);\n }\n\n this._seriesModel = seriesModel;\n}; // Update common properties\n\n\nvar normalStyleAccessPath = ['itemStyle'];\nvar emphasisStyleAccessPath = ['emphasis', 'itemStyle'];\nvar normalLabelAccessPath = ['label'];\nvar emphasisLabelAccessPath = ['emphasis', 'label'];\n/**\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @param {Array.} symbolSize\n * @param {Object} [seriesScope]\n */\n\nsymbolProto._updateCommon = function (data, idx, symbolSize, seriesScope) {\n var symbolPath = this.childAt(0);\n var seriesModel = data.hostModel;\n var color = data.getItemVisual(idx, 'color'); // Reset style\n\n if (symbolPath.type !== 'image') {\n symbolPath.useStyle({\n strokeNoScale: true\n });\n } else {\n symbolPath.setStyle({\n opacity: null,\n shadowBlur: null,\n shadowOffsetX: null,\n shadowOffsetY: null,\n shadowColor: null\n });\n }\n\n var itemStyle = seriesScope && seriesScope.itemStyle;\n var hoverItemStyle = seriesScope && seriesScope.hoverItemStyle;\n var symbolOffset = seriesScope && seriesScope.symbolOffset;\n var labelModel = seriesScope && seriesScope.labelModel;\n var hoverLabelModel = seriesScope && seriesScope.hoverLabelModel;\n var hoverAnimation = seriesScope && seriesScope.hoverAnimation;\n var cursorStyle = seriesScope && seriesScope.cursorStyle;\n\n if (!seriesScope || data.hasItemOption) {\n var itemModel = seriesScope && seriesScope.itemModel ? seriesScope.itemModel : data.getItemModel(idx); // Color must be excluded.\n // Because symbol provide setColor individually to set fill and stroke\n\n itemStyle = itemModel.getModel(normalStyleAccessPath).getItemStyle(['color']);\n hoverItemStyle = itemModel.getModel(emphasisStyleAccessPath).getItemStyle();\n symbolOffset = itemModel.getShallow('symbolOffset');\n labelModel = itemModel.getModel(normalLabelAccessPath);\n hoverLabelModel = itemModel.getModel(emphasisLabelAccessPath);\n hoverAnimation = itemModel.getShallow('hoverAnimation');\n cursorStyle = itemModel.getShallow('cursor');\n } else {\n hoverItemStyle = zrUtil.extend({}, hoverItemStyle);\n }\n\n var elStyle = symbolPath.style;\n var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\n symbolPath.attr('rotation', (symbolRotate || 0) * Math.PI / 180 || 0);\n\n if (symbolOffset) {\n symbolPath.attr('position', [parsePercent(symbolOffset[0], symbolSize[0]), parsePercent(symbolOffset[1], symbolSize[1])]);\n }\n\n cursorStyle && symbolPath.attr('cursor', cursorStyle); // PENDING setColor before setStyle!!!\n\n symbolPath.setColor(color, seriesScope && seriesScope.symbolInnerColor);\n symbolPath.setStyle(itemStyle);\n var opacity = data.getItemVisual(idx, 'opacity');\n\n if (opacity != null) {\n elStyle.opacity = opacity;\n }\n\n var liftZ = data.getItemVisual(idx, 'liftZ');\n var z2Origin = symbolPath.__z2Origin;\n\n if (liftZ != null) {\n if (z2Origin == null) {\n symbolPath.__z2Origin = symbolPath.z2;\n symbolPath.z2 += liftZ;\n }\n } else if (z2Origin != null) {\n symbolPath.z2 = z2Origin;\n symbolPath.__z2Origin = null;\n }\n\n var useNameLabel = seriesScope && seriesScope.useNameLabel;\n graphic.setLabelStyle(elStyle, hoverItemStyle, labelModel, hoverLabelModel, {\n labelFetcher: seriesModel,\n labelDataIndex: idx,\n defaultText: getLabelDefaultText,\n isRectText: true,\n autoColor: color\n }); // Do not execute util needed.\n\n function getLabelDefaultText(idx, opt) {\n return useNameLabel ? data.getName(idx) : getDefaultLabel(data, idx);\n }\n\n symbolPath.__symbolOriginalScale = getScale(symbolSize);\n symbolPath.hoverStyle = hoverItemStyle;\n symbolPath.highDownOnUpdate = hoverAnimation && seriesModel.isAnimationEnabled() ? highDownOnUpdate : null;\n graphic.setHoverStyle(symbolPath);\n};\n\nfunction highDownOnUpdate(fromState, toState) {\n // Do not support this hover animation util some scenario required.\n // Animation can only be supported in hover layer when using `el.incremetal`.\n if (this.incremental || this.useHoverLayer) {\n return;\n }\n\n if (toState === 'emphasis') {\n var scale = this.__symbolOriginalScale;\n var ratio = scale[1] / scale[0];\n var emphasisOpt = {\n scale: [Math.max(scale[0] * 1.1, scale[0] + 3), Math.max(scale[1] * 1.1, scale[1] + 3 * ratio)]\n }; // FIXME\n // modify it after support stop specified animation.\n // toState === fromState\n // ? (this.stopAnimation(), this.attr(emphasisOpt))\n\n this.animateTo(emphasisOpt, 400, 'elasticOut');\n } else if (toState === 'normal') {\n this.animateTo({\n scale: this.__symbolOriginalScale\n }, 400, 'elasticOut');\n }\n}\n/**\n * @param {Function} cb\n * @param {Object} [opt]\n * @param {Object} [opt.keepLabel=true]\n */\n\n\nsymbolProto.fadeOut = function (cb, opt) {\n var symbolPath = this.childAt(0); // Avoid mistaken hover when fading out\n\n this.silent = symbolPath.silent = true; // Not show text when animating\n\n !(opt && opt.keepLabel) && (symbolPath.style.text = null);\n graphic.updateProps(symbolPath, {\n style: {\n opacity: 0\n },\n scale: [0, 0]\n }, this._seriesModel, this.dataIndex, cb);\n};\n\nzrUtil.inherits(SymbolClz, graphic.Group);\nvar _default = SymbolClz;\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 createListFromArray = require(\"./chart/helper/createListFromArray\");\n\nvar axisHelper = require(\"./coord/axisHelper\");\n\nvar axisModelCommonMixin = require(\"./coord/axisModelCommonMixin\");\n\nvar Model = require(\"./model/Model\");\n\nvar _layout = require(\"./util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\nexports.getLayoutRect = _layout.getLayoutRect;\n\nvar _dataStackHelper = require(\"./data/helper/dataStackHelper\");\n\nvar enableDataStack = _dataStackHelper.enableDataStack;\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\nvar getStackedDimension = _dataStackHelper.getStackedDimension;\n\nvar _completeDimensions = require(\"./data/helper/completeDimensions\");\n\nexports.completeDimensions = _completeDimensions;\n\nvar _createDimensions = require(\"./data/helper/createDimensions\");\n\nexports.createDimensions = _createDimensions;\n\nvar _symbol = require(\"./util/symbol\");\n\nexports.createSymbol = _symbol.createSymbol;\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// import createGraphFromNodeEdge from './chart/helper/createGraphFromNodeEdge';\n\n/**\n * Create a muti dimension List structure from seriesModel.\n * @param {module:echarts/model/Model} seriesModel\n * @return {module:echarts/data/List} list\n */\nfunction createList(seriesModel) {\n return createListFromArray(seriesModel.getSource(), seriesModel);\n} // export function createGraph(seriesModel) {\n// var nodes = seriesModel.get('data');\n// var links = seriesModel.get('links');\n// return createGraphFromNodeEdge(nodes, links, seriesModel);\n// }\n\n\nvar dataStack = {\n isDimensionStacked: isDimensionStacked,\n enableDataStack: enableDataStack,\n getStackedDimension: getStackedDimension\n};\n/**\n * Create a symbol element with given symbol configuration: shape, x, y, width, height, color\n * @param {string} symbolDesc\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {string} color\n */\n\n/**\n * Create scale\n * @param {Array.} dataExtent\n * @param {Object|module:echarts/Model} option\n */\nfunction createScale(dataExtent, option) {\n var axisModel = option;\n\n if (!Model.isInstance(option)) {\n axisModel = new Model(option);\n zrUtil.mixin(axisModel, axisModelCommonMixin);\n }\n\n var scale = axisHelper.createScaleByModel(axisModel);\n scale.setExtent(dataExtent[0], dataExtent[1]);\n axisHelper.niceScaleExtent(scale, axisModel);\n return scale;\n}\n/**\n * Mixin common methods to axis model,\n *\n * Inlcude methods\n * `getFormattedLabels() => Array.`\n * `getCategories() => Array.`\n * `getMin(origin: boolean) => number`\n * `getMax(origin: boolean) => number`\n * `getNeedCrossZero() => boolean`\n * `setRange(start: number, end: number)`\n * `resetRange()`\n */\n\n\nfunction mixinAxisModelCommonMethods(Model) {\n zrUtil.mixin(Model, axisModelCommonMixin);\n}\n\nexports.createList = createList;\nexports.dataStack = dataStack;\nexports.createScale = createScale;\nexports.mixinAxisModelCommonMethods = mixinAxisModelCommonMethods;","/**\n * 3x2矩阵操作类\n * @exports zrender/tool/matrix\n */\n\n/* global Float32Array */\nvar ArrayCtor = typeof Float32Array === 'undefined' ? Array : Float32Array;\n/**\n * Create a identity matrix.\n * @return {Float32Array|Array.}\n */\n\nfunction create() {\n var out = new ArrayCtor(6);\n identity(out);\n return out;\n}\n/**\n * 设置矩阵为单位矩阵\n * @param {Float32Array|Array.} out\n */\n\n\nfunction identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = 0;\n out[5] = 0;\n return out;\n}\n/**\n * 复制矩阵\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} m\n */\n\n\nfunction copy(out, m) {\n out[0] = m[0];\n out[1] = m[1];\n out[2] = m[2];\n out[3] = m[3];\n out[4] = m[4];\n out[5] = m[5];\n return out;\n}\n/**\n * 矩阵相乘\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} m1\n * @param {Float32Array|Array.} m2\n */\n\n\nfunction mul(out, m1, m2) {\n // Consider matrix.mul(m, m2, m);\n // where out is the same as m2.\n // So use temp variable to escape error.\n var out0 = m1[0] * m2[0] + m1[2] * m2[1];\n var out1 = m1[1] * m2[0] + m1[3] * m2[1];\n var out2 = m1[0] * m2[2] + m1[2] * m2[3];\n var out3 = m1[1] * m2[2] + m1[3] * m2[3];\n var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];\n var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = out3;\n out[4] = out4;\n out[5] = out5;\n return out;\n}\n/**\n * 平移变换\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} a\n * @param {Float32Array|Array.} v\n */\n\n\nfunction translate(out, a, v) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4] + v[0];\n out[5] = a[5] + v[1];\n return out;\n}\n/**\n * 旋转变换\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} a\n * @param {number} rad\n */\n\n\nfunction rotate(out, a, rad) {\n var aa = a[0];\n var ac = a[2];\n var atx = a[4];\n var ab = a[1];\n var ad = a[3];\n var aty = a[5];\n var st = Math.sin(rad);\n var ct = Math.cos(rad);\n out[0] = aa * ct + ab * st;\n out[1] = -aa * st + ab * ct;\n out[2] = ac * ct + ad * st;\n out[3] = -ac * st + ct * ad;\n out[4] = ct * atx + st * aty;\n out[5] = ct * aty - st * atx;\n return out;\n}\n/**\n * 缩放变换\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} a\n * @param {Float32Array|Array.} v\n */\n\n\nfunction scale(out, a, v) {\n var vx = v[0];\n var vy = v[1];\n out[0] = a[0] * vx;\n out[1] = a[1] * vy;\n out[2] = a[2] * vx;\n out[3] = a[3] * vy;\n out[4] = a[4] * vx;\n out[5] = a[5] * vy;\n return out;\n}\n/**\n * 求逆矩阵\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} a\n */\n\n\nfunction invert(out, a) {\n var aa = a[0];\n var ac = a[2];\n var atx = a[4];\n var ab = a[1];\n var ad = a[3];\n var aty = a[5];\n var det = aa * ad - ab * ac;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = ad * det;\n out[1] = -ab * det;\n out[2] = -ac * det;\n out[3] = aa * det;\n out[4] = (ac * aty - ad * atx) * det;\n out[5] = (ab * atx - aa * aty) * det;\n return out;\n}\n/**\n * Clone a new matrix.\n * @param {Float32Array|Array.} a\n */\n\n\nfunction clone(a) {\n var b = create();\n copy(b, a);\n return b;\n}\n\nexports.create = create;\nexports.identity = identity;\nexports.copy = copy;\nexports.mul = mul;\nexports.translate = translate;\nexports.rotate = rotate;\nexports.scale = scale;\nexports.invert = invert;\nexports.clone = clone;","\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\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();\nvar each = zrUtil.each;\n/**\n * @param {string} key\n * @param {module:echarts/ExtensionAPI} api\n * @param {Function} handler\n * param: {string} currTrigger\n * param: {Array.} point\n */\n\nfunction register(key, api, handler) {\n if (env.node) {\n return;\n }\n\n var zr = api.getZr();\n inner(zr).records || (inner(zr).records = {});\n initGlobalListeners(zr, api);\n var record = inner(zr).records[key] || (inner(zr).records[key] = {});\n record.handler = handler;\n}\n\nfunction initGlobalListeners(zr, api) {\n if (inner(zr).initialized) {\n return;\n }\n\n inner(zr).initialized = true;\n useHandler('click', zrUtil.curry(doEnter, 'click'));\n useHandler('mousemove', zrUtil.curry(doEnter, 'mousemove')); // useHandler('mouseout', onLeave);\n\n useHandler('globalout', onLeave);\n\n function useHandler(eventType, cb) {\n zr.on(eventType, function (e) {\n var dis = makeDispatchAction(api);\n each(inner(zr).records, function (record) {\n record && cb(record, e, dis.dispatchAction);\n });\n dispatchTooltipFinally(dis.pendings, api);\n });\n }\n}\n\nfunction dispatchTooltipFinally(pendings, api) {\n var showLen = pendings.showTip.length;\n var hideLen = pendings.hideTip.length;\n var actuallyPayload;\n\n if (showLen) {\n actuallyPayload = pendings.showTip[showLen - 1];\n } else if (hideLen) {\n actuallyPayload = pendings.hideTip[hideLen - 1];\n }\n\n if (actuallyPayload) {\n actuallyPayload.dispatchAction = null;\n api.dispatchAction(actuallyPayload);\n }\n}\n\nfunction onLeave(record, e, dispatchAction) {\n record.handler('leave', null, dispatchAction);\n}\n\nfunction doEnter(currTrigger, record, e, dispatchAction) {\n record.handler(currTrigger, e, dispatchAction);\n}\n\nfunction makeDispatchAction(api) {\n var pendings = {\n showTip: [],\n hideTip: []\n }; // FIXME\n // better approach?\n // 'showTip' and 'hideTip' can be triggered by axisPointer and tooltip,\n // which may be conflict, (axisPointer call showTip but tooltip call hideTip);\n // So we have to add \"final stage\" to merge those dispatched actions.\n\n var dispatchAction = function (payload) {\n var pendingList = pendings[payload.type];\n\n if (pendingList) {\n pendingList.push(payload);\n } else {\n payload.dispatchAction = dispatchAction;\n api.dispatchAction(payload);\n }\n };\n\n return {\n dispatchAction: dispatchAction,\n pendings: pendings\n };\n}\n/**\n * @param {string} key\n * @param {module:echarts/ExtensionAPI} api\n */\n\n\nfunction unregister(key, api) {\n if (env.node) {\n return;\n }\n\n var zr = api.getZr();\n var record = (inner(zr).records || {})[key];\n\n if (record) {\n inner(zr).records[key] = null;\n }\n}\n\nexports.register = register;\nexports.unregister = unregister;","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\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.} 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;","var zrUtil = require(\"../core/util\");\n\nvar Style = require(\"./Style\");\n\nvar Element = require(\"../Element\");\n\nvar RectText = require(\"./mixin/RectText\");\n\n/**\n * Base class of all displayable graphic objects\n * @module zrender/graphic/Displayable\n */\n\n/**\n * @alias module:zrender/graphic/Displayable\n * @extends module:zrender/Element\n * @extends module:zrender/graphic/mixin/RectText\n */\nfunction Displayable(opts) {\n opts = opts || {};\n Element.call(this, opts); // Extend properties\n\n for (var name in opts) {\n if (opts.hasOwnProperty(name) && name !== 'style') {\n this[name] = opts[name];\n }\n }\n /**\n * @type {module:zrender/graphic/Style}\n */\n\n\n this.style = new Style(opts.style, this);\n this._rect = null; // Shapes for cascade clipping.\n // Can only be `null`/`undefined` or an non-empty array, MUST NOT be an empty array.\n // because it is easy to only using null to check whether clipPaths changed.\n\n this.__clipPaths = null; // FIXME Stateful must be mixined after style is setted\n // Stateful.call(this, opts);\n}\n\nDisplayable.prototype = {\n constructor: Displayable,\n type: 'displayable',\n\n /**\n * Dirty flag. From which painter will determine if this displayable object needs brush.\n * @name module:zrender/graphic/Displayable#__dirty\n * @type {boolean}\n */\n __dirty: true,\n\n /**\n * Whether the displayable object is visible. when it is true, the displayable object\n * is not drawn, but the mouse event can still trigger the object.\n * @name module:/zrender/graphic/Displayable#invisible\n * @type {boolean}\n * @default false\n */\n invisible: false,\n\n /**\n * @name module:/zrender/graphic/Displayable#z\n * @type {number}\n * @default 0\n */\n z: 0,\n\n /**\n * @name module:/zrender/graphic/Displayable#z\n * @type {number}\n * @default 0\n */\n z2: 0,\n\n /**\n * The z level determines the displayable object can be drawn in which layer canvas.\n * @name module:/zrender/graphic/Displayable#zlevel\n * @type {number}\n * @default 0\n */\n zlevel: 0,\n\n /**\n * Whether it can be dragged.\n * @name module:/zrender/graphic/Displayable#draggable\n * @type {boolean}\n * @default false\n */\n draggable: false,\n\n /**\n * Whether is it dragging.\n * @name module:/zrender/graphic/Displayable#draggable\n * @type {boolean}\n * @default false\n */\n dragging: false,\n\n /**\n * Whether to respond to mouse events.\n * @name module:/zrender/graphic/Displayable#silent\n * @type {boolean}\n * @default false\n */\n silent: false,\n\n /**\n * If enable culling\n * @type {boolean}\n * @default false\n */\n culling: false,\n\n /**\n * Mouse cursor when hovered\n * @name module:/zrender/graphic/Displayable#cursor\n * @type {string}\n */\n cursor: 'pointer',\n\n /**\n * If hover area is bounding rect\n * @name module:/zrender/graphic/Displayable#rectHover\n * @type {string}\n */\n rectHover: false,\n\n /**\n * Render the element progressively when the value >= 0,\n * usefull for large data.\n * @type {boolean}\n */\n progressive: false,\n\n /**\n * @type {boolean}\n */\n incremental: false,\n\n /**\n * Scale ratio for global scale.\n * @type {boolean}\n */\n globalScaleRatio: 1,\n beforeBrush: function (ctx) {},\n afterBrush: function (ctx) {},\n\n /**\n * Graphic drawing method.\n * @param {CanvasRenderingContext2D} ctx\n */\n // Interface\n brush: function (ctx, prevEl) {},\n\n /**\n * Get the minimum bounding box.\n * @return {module:zrender/core/BoundingRect}\n */\n // Interface\n getBoundingRect: function () {},\n\n /**\n * If displayable element contain coord x, y\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\n contain: function (x, y) {\n return this.rectContain(x, y);\n },\n\n /**\n * @param {Function} cb\n * @param {} context\n */\n traverse: function (cb, context) {\n cb.call(context, this);\n },\n\n /**\n * If bounding rect of element contain coord x, y\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\n rectContain: function (x, y) {\n var coord = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n return rect.contain(coord[0], coord[1]);\n },\n\n /**\n * Mark displayable element dirty and refresh next frame\n */\n dirty: function () {\n this.__dirty = this.__dirtyText = true;\n this._rect = null;\n this.__zr && this.__zr.refresh();\n },\n\n /**\n * If displayable object binded any event\n * @return {boolean}\n */\n // TODO, events bound by bind\n // isSilent: function () {\n // return !(\n // this.hoverable || this.draggable\n // || this.onmousemove || this.onmouseover || this.onmouseout\n // || this.onmousedown || this.onmouseup || this.onclick\n // || this.ondragenter || this.ondragover || this.ondragleave\n // || this.ondrop\n // );\n // },\n\n /**\n * Alias for animate('style')\n * @param {boolean} loop\n */\n animateStyle: function (loop) {\n return this.animate('style', loop);\n },\n attrKV: function (key, value) {\n if (key !== 'style') {\n Element.prototype.attrKV.call(this, key, value);\n } else {\n this.style.set(value);\n }\n },\n\n /**\n * @param {Object|string} key\n * @param {*} value\n */\n setStyle: function (key, value) {\n this.style.set(key, value);\n this.dirty(false);\n return this;\n },\n\n /**\n * Use given style object\n * @param {Object} obj\n */\n useStyle: function (obj) {\n this.style = new Style(obj, this);\n this.dirty(false);\n return this;\n },\n\n /**\n * The string value of `textPosition` needs to be calculated to a real postion.\n * For example, `'inside'` is calculated to `[rect.width/2, rect.height/2]`\n * by default. See `contain/text.js#calculateTextPosition` for more details.\n * But some coutom shapes like \"pin\", \"flag\" have center that is not exactly\n * `[width/2, height/2]`. So we provide this hook to customize the calculation\n * for those shapes. It will be called if the `style.textPosition` is a string.\n * @param {Obejct} [out] Prepared out object. If not provided, this method should\n * be responsible for creating one.\n * @param {module:zrender/graphic/Style} style\n * @param {Object} rect {x, y, width, height}\n * @return {Obejct} out The same as the input out.\n * {\n * x: number. mandatory.\n * y: number. mandatory.\n * textAlign: string. optional. use style.textAlign by default.\n * textVerticalAlign: string. optional. use style.textVerticalAlign by default.\n * }\n */\n calculateTextPosition: null\n};\nzrUtil.inherits(Displayable, Element);\nzrUtil.mixin(Displayable, RectText); // zrUtil.mixin(Displayable, Stateful);\n\nvar _default = Displayable;\nmodule.exports = _default;","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n","export * from \"-!../../mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src/index.js??ref--6-oneOf-1-2!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./ECharts.vue?vue&type=style&index=0&lang=css&\"","/**\n * Event Mixin\n * @module zrender/mixin/Eventful\n * @author Kener (@Kener-林峰, kener.linfeng@gmail.com)\n * pissang (https://www.github.com/pissang)\n */\nvar arrySlice = Array.prototype.slice;\n/**\n * Event dispatcher.\n *\n * @alias module:zrender/mixin/Eventful\n * @constructor\n * @param {Object} [eventProcessor] The object eventProcessor is the scope when\n * `eventProcessor.xxx` called.\n * @param {Function} [eventProcessor.normalizeQuery]\n * param: {string|Object} Raw query.\n * return: {string|Object} Normalized query.\n * @param {Function} [eventProcessor.filter] Event will be dispatched only\n * if it returns `true`.\n * param: {string} eventType\n * param: {string|Object} query\n * return: {boolean}\n * @param {Function} [eventProcessor.afterTrigger] Called after all handlers called.\n * param: {string} eventType\n */\n\nvar Eventful = function (eventProcessor) {\n this._$handlers = {};\n this._$eventProcessor = eventProcessor;\n};\n\nEventful.prototype = {\n constructor: Eventful,\n\n /**\n * The handler can only be triggered once, then removed.\n *\n * @param {string} event The event name.\n * @param {string|Object} [query] Condition used on event filter.\n * @param {Function} handler The event handler.\n * @param {Object} context\n */\n one: function (event, query, handler, context) {\n return on(this, event, query, handler, context, true);\n },\n\n /**\n * Bind a handler.\n *\n * @param {string} event The event name.\n * @param {string|Object} [query] Condition used on event filter.\n * @param {Function} handler The event handler.\n * @param {Object} [context]\n */\n on: function (event, query, handler, context) {\n return on(this, event, query, handler, context, false);\n },\n\n /**\n * Whether any handler has bound.\n *\n * @param {string} event\n * @return {boolean}\n */\n isSilent: function (event) {\n var _h = this._$handlers;\n return !_h[event] || !_h[event].length;\n },\n\n /**\n * Unbind a event.\n *\n * @param {string} [event] The event name.\n * If no `event` input, \"off\" all listeners.\n * @param {Function} [handler] The event handler.\n * If no `handler` input, \"off\" all listeners of the `event`.\n */\n off: function (event, handler) {\n var _h = this._$handlers;\n\n if (!event) {\n this._$handlers = {};\n return this;\n }\n\n if (handler) {\n if (_h[event]) {\n var newList = [];\n\n for (var i = 0, l = _h[event].length; i < l; i++) {\n if (_h[event][i].h !== handler) {\n newList.push(_h[event][i]);\n }\n }\n\n _h[event] = newList;\n }\n\n if (_h[event] && _h[event].length === 0) {\n delete _h[event];\n }\n } else {\n delete _h[event];\n }\n\n return this;\n },\n\n /**\n * Dispatch a event.\n *\n * @param {string} type The event name.\n */\n trigger: function (type) {\n var _h = this._$handlers[type];\n var eventProcessor = this._$eventProcessor;\n\n if (_h) {\n var args = arguments;\n var argLen = args.length;\n\n if (argLen > 3) {\n args = arrySlice.call(args, 1);\n }\n\n var len = _h.length;\n\n for (var i = 0; i < len;) {\n var hItem = _h[i];\n\n if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(type, hItem.query)) {\n i++;\n continue;\n } // Optimize advise from backbone\n\n\n switch (argLen) {\n case 1:\n hItem.h.call(hItem.ctx);\n break;\n\n case 2:\n hItem.h.call(hItem.ctx, args[1]);\n break;\n\n case 3:\n hItem.h.call(hItem.ctx, args[1], args[2]);\n break;\n\n default:\n // have more than 2 given arguments\n hItem.h.apply(hItem.ctx, args);\n break;\n }\n\n if (hItem.one) {\n _h.splice(i, 1);\n\n len--;\n } else {\n i++;\n }\n }\n }\n\n eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(type);\n return this;\n },\n\n /**\n * Dispatch a event with context, which is specified at the last parameter.\n *\n * @param {string} type The event name.\n */\n triggerWithContext: function (type) {\n var _h = this._$handlers[type];\n var eventProcessor = this._$eventProcessor;\n\n if (_h) {\n var args = arguments;\n var argLen = args.length;\n\n if (argLen > 4) {\n args = arrySlice.call(args, 1, args.length - 1);\n }\n\n var ctx = args[args.length - 1];\n var len = _h.length;\n\n for (var i = 0; i < len;) {\n var hItem = _h[i];\n\n if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(type, hItem.query)) {\n i++;\n continue;\n } // Optimize advise from backbone\n\n\n switch (argLen) {\n case 1:\n hItem.h.call(ctx);\n break;\n\n case 2:\n hItem.h.call(ctx, args[1]);\n break;\n\n case 3:\n hItem.h.call(ctx, args[1], args[2]);\n break;\n\n default:\n // have more than 2 given arguments\n hItem.h.apply(ctx, args);\n break;\n }\n\n if (hItem.one) {\n _h.splice(i, 1);\n\n len--;\n } else {\n i++;\n }\n }\n }\n\n eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(type);\n return this;\n }\n};\n\nfunction normalizeQuery(host, query) {\n var eventProcessor = host._$eventProcessor;\n\n if (query != null && eventProcessor && eventProcessor.normalizeQuery) {\n query = eventProcessor.normalizeQuery(query);\n }\n\n return query;\n}\n\nfunction on(eventful, event, query, handler, context, isOnce) {\n var _h = eventful._$handlers;\n\n if (typeof query === 'function') {\n context = handler;\n handler = query;\n query = null;\n }\n\n if (!handler || !event) {\n return eventful;\n }\n\n query = normalizeQuery(eventful, query);\n\n if (!_h[event]) {\n _h[event] = [];\n }\n\n for (var i = 0; i < _h[event].length; i++) {\n if (_h[event][i].h === handler) {\n return eventful;\n }\n }\n\n var wrap = {\n h: handler,\n one: isOnce,\n query: query,\n ctx: context || eventful,\n // FIXME\n // Do not publish this feature util it is proved that it makes sense.\n callAtLast: handler.zrEventfulCallAtLast\n };\n var lastIndex = _h[event].length - 1;\n var lastWrap = _h[event][lastIndex];\n lastWrap && lastWrap.callAtLast ? _h[event].splice(lastIndex, 0, wrap) : _h[event].push(wrap);\n return eventful;\n} // ----------------------\n// The events in zrender\n// ----------------------\n\n/**\n * @event module:zrender/mixin/Eventful#onclick\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseover\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseout\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousemove\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousewheel\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousedown\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseup\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondrag\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragstart\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragend\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragenter\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragleave\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragover\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondrop\n * @type {Function}\n * @default null\n */\n\n\nvar _default = Eventful;\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// import * as axisHelper from './axisHelper';\nvar _default = {\n /**\n * @param {boolean} origin\n * @return {number|string} min value or 'dataMin' or null/undefined (means auto) or NaN\n */\n getMin: function (origin) {\n var option = this.option;\n var min = !origin && option.rangeStart != null ? option.rangeStart : option.min;\n\n if (this.axis && min != null && min !== 'dataMin' && typeof min !== 'function' && !zrUtil.eqNaN(min)) {\n min = this.axis.scale.parse(min);\n }\n\n return min;\n },\n\n /**\n * @param {boolean} origin\n * @return {number|string} max value or 'dataMax' or null/undefined (means auto) or NaN\n */\n getMax: function (origin) {\n var option = this.option;\n var max = !origin && option.rangeEnd != null ? option.rangeEnd : option.max;\n\n if (this.axis && max != null && max !== 'dataMax' && typeof max !== 'function' && !zrUtil.eqNaN(max)) {\n max = this.axis.scale.parse(max);\n }\n\n return max;\n },\n\n /**\n * @return {boolean}\n */\n getNeedCrossZero: function () {\n var option = this.option;\n return option.rangeStart != null || option.rangeEnd != null ? false : !option.scale;\n },\n\n /**\n * Should be implemented by each axis model if necessary.\n * @return {module:echarts/model/Component} coordinate system model\n */\n getCoordSysModel: zrUtil.noop,\n\n /**\n * @param {number} rangeStart Can only be finite number or null/undefined or NaN.\n * @param {number} rangeEnd Can only be finite number or null/undefined or NaN.\n */\n setRange: function (rangeStart, rangeEnd) {\n this.option.rangeStart = rangeStart;\n this.option.rangeEnd = rangeEnd;\n },\n\n /**\n * Reset range\n */\n resetRange: function () {\n // rangeStart and rangeEnd is readonly.\n this.option.rangeStart = this.option.rangeEnd = null;\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*/\nvar coordinateSystemCreators = {};\n\nfunction CoordinateSystemManager() {\n this._coordinateSystems = [];\n}\n\nCoordinateSystemManager.prototype = {\n constructor: CoordinateSystemManager,\n create: function (ecModel, api) {\n var coordinateSystems = [];\n zrUtil.each(coordinateSystemCreators, function (creater, type) {\n var list = creater.create(ecModel, api);\n coordinateSystems = coordinateSystems.concat(list || []);\n });\n this._coordinateSystems = coordinateSystems;\n },\n update: function (ecModel, api) {\n zrUtil.each(this._coordinateSystems, function (coordSys) {\n coordSys.update && coordSys.update(ecModel, api);\n });\n },\n getCoordinateSystems: function () {\n return this._coordinateSystems.slice();\n }\n};\n\nCoordinateSystemManager.register = function (type, coordinateSystemCreator) {\n coordinateSystemCreators[type] = coordinateSystemCreator;\n};\n\nCoordinateSystemManager.get = function (type) {\n return coordinateSystemCreators[type];\n};\n\nvar _default = CoordinateSystemManager;\nmodule.exports = _default;","import { Vue } from '../vue';\nimport { NAME_CARD } from '../constants/components';\nimport { PROP_TYPE_STRING } from '../constants/props';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n bgVariant: makeProp(PROP_TYPE_STRING),\n borderVariant: makeProp(PROP_TYPE_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n textVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_CARD); // --- Mixin ---\n// @vue/component\n\nexport var cardMixin = Vue.extend({\n props: props\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_SUB_TITLE } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n subTitle: makeProp(PROP_TYPE_STRING),\n subTitleTag: makeProp(PROP_TYPE_STRING, 'h6'),\n subTitleTextVariant: makeProp(PROP_TYPE_STRING, 'muted')\n}, NAME_CARD_SUB_TITLE); // --- Main component ---\n// @vue/component\n\nexport var BCardSubTitle = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_SUB_TITLE,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.subTitleTag, mergeData(data, {\n staticClass: 'card-subtitle',\n class: [props.subTitleTextVariant ? \"text-\".concat(props.subTitleTextVariant) : null]\n }), children || toString(props.subTitle));\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_BODY } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, pluckProps, prefixPropName } from '../../utils/props';\nimport { props as cardProps } from '../../mixins/card';\nimport { BCardTitle, props as titleProps } from './card-title';\nimport { BCardSubTitle, props as subTitleProps } from './card-sub-title'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, titleProps), subTitleProps), copyProps(cardProps, prefixPropName.bind(null, 'body'))), {}, {\n bodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n overlay: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_CARD_BODY); // --- Main component ---\n// @vue/component\n\nexport var BCardBody = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_BODY,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _ref2;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var bodyBgVariant = props.bodyBgVariant,\n bodyBorderVariant = props.bodyBorderVariant,\n bodyTextVariant = props.bodyTextVariant;\n var $title = h();\n\n if (props.title) {\n $title = h(BCardTitle, {\n props: pluckProps(titleProps, props)\n });\n }\n\n var $subTitle = h();\n\n if (props.subTitle) {\n $subTitle = h(BCardSubTitle, {\n props: pluckProps(subTitleProps, props),\n class: ['mb-2']\n });\n }\n\n return h(props.bodyTag, mergeData(data, {\n staticClass: 'card-body',\n class: [(_ref2 = {\n 'card-img-overlay': props.overlay\n }, _defineProperty(_ref2, \"bg-\".concat(bodyBgVariant), bodyBgVariant), _defineProperty(_ref2, \"border-\".concat(bodyBorderVariant), bodyBorderVariant), _defineProperty(_ref2, \"text-\".concat(bodyTextVariant), bodyTextVariant), _ref2), props.bodyClass]\n }), [$title, $subTitle, children]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_HEADER } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { htmlOrText } from '../../utils/html';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, prefixPropName } from '../../utils/props';\nimport { props as BCardProps } from '../../mixins/card'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, copyProps(BCardProps, prefixPropName.bind(null, 'header'))), {}, {\n header: makeProp(PROP_TYPE_STRING),\n headerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n headerHtml: makeProp(PROP_TYPE_STRING)\n})), NAME_CARD_HEADER); // --- Main component ---\n// @vue/component\n\nexport var BCardHeader = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_HEADER,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _ref2;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var headerBgVariant = props.headerBgVariant,\n headerBorderVariant = props.headerBorderVariant,\n headerTextVariant = props.headerTextVariant;\n return h(props.headerTag, mergeData(data, {\n staticClass: 'card-header',\n class: [props.headerClass, (_ref2 = {}, _defineProperty(_ref2, \"bg-\".concat(headerBgVariant), headerBgVariant), _defineProperty(_ref2, \"border-\".concat(headerBorderVariant), headerBorderVariant), _defineProperty(_ref2, \"text-\".concat(headerTextVariant), headerTextVariant), _ref2)],\n domProps: children ? {} : htmlOrText(props.headerHtml, props.header)\n }), children);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_FOOTER } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { htmlOrText } from '../../utils/html';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, prefixPropName } from '../../utils/props';\nimport { props as BCardProps } from '../../mixins/card'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, copyProps(BCardProps, prefixPropName.bind(null, 'footer'))), {}, {\n footer: makeProp(PROP_TYPE_STRING),\n footerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n footerHtml: makeProp(PROP_TYPE_STRING)\n})), NAME_CARD_FOOTER); // --- Main component ---\n// @vue/component\n\nexport var BCardFooter = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_FOOTER,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _ref2;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var footerBgVariant = props.footerBgVariant,\n footerBorderVariant = props.footerBorderVariant,\n footerTextVariant = props.footerTextVariant;\n return h(props.footerTag, mergeData(data, {\n staticClass: 'card-footer',\n class: [props.footerClass, (_ref2 = {}, _defineProperty(_ref2, \"bg-\".concat(footerBgVariant), footerBgVariant), _defineProperty(_ref2, \"border-\".concat(footerBorderVariant), footerBorderVariant), _defineProperty(_ref2, \"text-\".concat(footerTextVariant), footerTextVariant), _ref2)],\n domProps: children ? {} : htmlOrText(props.footerHtml, props.footer)\n }), children);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_IMG } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { pick, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { props as BImgProps } from '../image/img'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, pick(BImgProps, ['src', 'alt', 'width', 'height', 'left', 'right'])), {}, {\n bottom: makeProp(PROP_TYPE_BOOLEAN, false),\n end: makeProp(PROP_TYPE_BOOLEAN, false),\n start: makeProp(PROP_TYPE_BOOLEAN, false),\n top: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_CARD_IMG); // --- Main component ---\n// @vue/component\n\nexport var BCardImg = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_IMG,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data;\n var src = props.src,\n alt = props.alt,\n width = props.width,\n height = props.height;\n var baseClass = 'card-img';\n\n if (props.top) {\n baseClass += '-top';\n } else if (props.right || props.end) {\n baseClass += '-right';\n } else if (props.bottom) {\n baseClass += '-bottom';\n } else if (props.left || props.start) {\n baseClass += '-left';\n }\n\n return h('img', mergeData(data, {\n class: baseClass,\n attrs: {\n src: src,\n alt: alt,\n width: width,\n height: height\n }\n }));\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_FOOTER, SLOT_NAME_HEADER } from '../../constants/slots';\nimport { htmlOrText } from '../../utils/html';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, pluckProps, prefixPropName, unprefixPropName } from '../../utils/props';\nimport { props as cardProps } from '../../mixins/card';\nimport { BCardBody, props as BCardBodyProps } from './card-body';\nimport { BCardHeader, props as BCardHeaderProps } from './card-header';\nimport { BCardFooter, props as BCardFooterProps } from './card-footer';\nimport { BCardImg, props as BCardImgProps } from './card-img'; // --- Props ---\n\nvar cardImgProps = copyProps(BCardImgProps, prefixPropName.bind(null, 'img'));\ncardImgProps.imgSrc.required = false;\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, BCardBodyProps), BCardHeaderProps), BCardFooterProps), cardImgProps), cardProps), {}, {\n align: makeProp(PROP_TYPE_STRING),\n noBody: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_CARD); // --- Main component ---\n// @vue/component\n\nexport var BCard = /*#__PURE__*/Vue.extend({\n name: NAME_CARD,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var imgSrc = props.imgSrc,\n imgLeft = props.imgLeft,\n imgRight = props.imgRight,\n imgStart = props.imgStart,\n imgEnd = props.imgEnd,\n imgBottom = props.imgBottom,\n header = props.header,\n headerHtml = props.headerHtml,\n footer = props.footer,\n footerHtml = props.footerHtml,\n align = props.align,\n textVariant = props.textVariant,\n bgVariant = props.bgVariant,\n borderVariant = props.borderVariant;\n var $scopedSlots = scopedSlots || {};\n var $slots = slots();\n var slotScope = {};\n var $imgFirst = h();\n var $imgLast = h();\n\n if (imgSrc) {\n var $img = h(BCardImg, {\n props: pluckProps(cardImgProps, props, unprefixPropName.bind(null, 'img'))\n });\n\n if (imgBottom) {\n $imgLast = $img;\n } else {\n $imgFirst = $img;\n }\n }\n\n var $header = h();\n var hasHeaderSlot = hasNormalizedSlot(SLOT_NAME_HEADER, $scopedSlots, $slots);\n\n if (hasHeaderSlot || header || headerHtml) {\n $header = h(BCardHeader, {\n props: pluckProps(BCardHeaderProps, props),\n domProps: hasHeaderSlot ? {} : htmlOrText(headerHtml, header)\n }, normalizeSlot(SLOT_NAME_HEADER, slotScope, $scopedSlots, $slots));\n }\n\n var $content = normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots); // Wrap content in `` when `noBody` prop set\n\n if (!props.noBody) {\n $content = h(BCardBody, {\n props: pluckProps(BCardBodyProps, props)\n }, $content); // When the `overlap` prop is set we need to wrap the `` and ``\n // into a relative positioned wrapper to don't distract a potential header or footer\n\n if (props.overlay && imgSrc) {\n $content = h('div', {\n staticClass: 'position-relative'\n }, [$imgFirst, $content, $imgLast]); // Reset image variables since they are already in the wrapper\n\n $imgFirst = h();\n $imgLast = h();\n }\n }\n\n var $footer = h();\n var hasFooterSlot = hasNormalizedSlot(SLOT_NAME_FOOTER, $scopedSlots, $slots);\n\n if (hasFooterSlot || footer || footerHtml) {\n $footer = h(BCardFooter, {\n props: pluckProps(BCardFooterProps, props),\n domProps: hasHeaderSlot ? {} : htmlOrText(footerHtml, footer)\n }, normalizeSlot(SLOT_NAME_FOOTER, slotScope, $scopedSlots, $slots));\n }\n\n return h(props.tag, mergeData(data, {\n staticClass: 'card',\n class: (_class = {\n 'flex-row': imgLeft || imgStart,\n 'flex-row-reverse': (imgRight || imgEnd) && !(imgLeft || imgStart)\n }, _defineProperty(_class, \"text-\".concat(align), align), _defineProperty(_class, \"bg-\".concat(bgVariant), bgVariant), _defineProperty(_class, \"border-\".concat(borderVariant), borderVariant), _defineProperty(_class, \"text-\".concat(textVariant), textVariant), _class)\n }), [$imgFirst, $header, $content, $footer, $imgLast]);\n }\n});","var curve = require(\"./curve\");\n\nvar vec2 = require(\"./vector\");\n\nvar bbox = require(\"./bbox\");\n\nvar BoundingRect = require(\"./BoundingRect\");\n\nvar _config = require(\"../config\");\n\nvar dpr = _config.devicePixelRatio;\n\n/**\n * Path 代理,可以在`buildPath`中用于替代`ctx`, 会保存每个path操作的命令到pathCommands属性中\n * 可以用于 isInsidePath 判断以及获取boundingRect\n *\n * @module zrender/core/PathProxy\n * @author Yi Shen (http://www.github.com/pissang)\n */\n// TODO getTotalLength, getPointAtLength\n\n/* global Float32Array */\nvar CMD = {\n M: 1,\n L: 2,\n C: 3,\n Q: 4,\n A: 5,\n Z: 6,\n // Rect\n R: 7\n}; // var CMD_MEM_SIZE = {\n// M: 3,\n// L: 3,\n// C: 7,\n// Q: 5,\n// A: 9,\n// R: 5,\n// Z: 1\n// };\n\nvar min = [];\nvar max = [];\nvar min2 = [];\nvar max2 = [];\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathCos = Math.cos;\nvar mathSin = Math.sin;\nvar mathSqrt = Math.sqrt;\nvar mathAbs = Math.abs;\nvar hasTypedArray = typeof Float32Array !== 'undefined';\n/**\n * @alias module:zrender/core/PathProxy\n * @constructor\n */\n\nvar PathProxy = function (notSaveData) {\n this._saveData = !(notSaveData || false);\n\n if (this._saveData) {\n /**\n * Path data. Stored as flat array\n * @type {Array.}\n */\n this.data = [];\n }\n\n this._ctx = null;\n};\n/**\n * 快速计算Path包围盒(并不是最小包围盒)\n * @return {Object}\n */\n\n\nPathProxy.prototype = {\n constructor: PathProxy,\n _xi: 0,\n _yi: 0,\n _x0: 0,\n _y0: 0,\n // Unit x, Unit y. Provide for avoiding drawing that too short line segment\n _ux: 0,\n _uy: 0,\n _len: 0,\n _lineDash: null,\n _dashOffset: 0,\n _dashIdx: 0,\n _dashSum: 0,\n\n /**\n * @readOnly\n */\n setScale: function (sx, sy, segmentIgnoreThreshold) {\n // Compat. Previously there is no segmentIgnoreThreshold.\n segmentIgnoreThreshold = segmentIgnoreThreshold || 0;\n this._ux = mathAbs(segmentIgnoreThreshold / dpr / sx) || 0;\n this._uy = mathAbs(segmentIgnoreThreshold / dpr / sy) || 0;\n },\n getContext: function () {\n return this._ctx;\n },\n\n /**\n * @param {CanvasRenderingContext2D} ctx\n * @return {module:zrender/core/PathProxy}\n */\n beginPath: function (ctx) {\n this._ctx = ctx;\n ctx && ctx.beginPath();\n ctx && (this.dpr = ctx.dpr); // Reset\n\n if (this._saveData) {\n this._len = 0;\n }\n\n if (this._lineDash) {\n this._lineDash = null;\n this._dashOffset = 0;\n }\n\n return this;\n },\n\n /**\n * @param {number} x\n * @param {number} y\n * @return {module:zrender/core/PathProxy}\n */\n moveTo: function (x, y) {\n this.addData(CMD.M, x, y);\n this._ctx && this._ctx.moveTo(x, y); // x0, y0, xi, yi 是记录在 _dashedXXXXTo 方法中使用\n // xi, yi 记录当前点, x0, y0 在 closePath 的时候回到起始点。\n // 有可能在 beginPath 之后直接调用 lineTo,这时候 x0, y0 需要\n // 在 lineTo 方法中记录,这里先不考虑这种情况,dashed line 也只在 IE10- 中不支持\n\n this._x0 = x;\n this._y0 = y;\n this._xi = x;\n this._yi = y;\n return this;\n },\n\n /**\n * @param {number} x\n * @param {number} y\n * @return {module:zrender/core/PathProxy}\n */\n lineTo: function (x, y) {\n var exceedUnit = mathAbs(x - this._xi) > this._ux || mathAbs(y - this._yi) > this._uy // Force draw the first segment\n || this._len < 5;\n this.addData(CMD.L, x, y);\n\n if (this._ctx && exceedUnit) {\n this._needsDash() ? this._dashedLineTo(x, y) : this._ctx.lineTo(x, y);\n }\n\n if (exceedUnit) {\n this._xi = x;\n this._yi = y;\n }\n\n return this;\n },\n\n /**\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @return {module:zrender/core/PathProxy}\n */\n bezierCurveTo: function (x1, y1, x2, y2, x3, y3) {\n this.addData(CMD.C, x1, y1, x2, y2, x3, y3);\n\n if (this._ctx) {\n this._needsDash() ? this._dashedBezierTo(x1, y1, x2, y2, x3, y3) : this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n }\n\n this._xi = x3;\n this._yi = y3;\n return this;\n },\n\n /**\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @return {module:zrender/core/PathProxy}\n */\n quadraticCurveTo: function (x1, y1, x2, y2) {\n this.addData(CMD.Q, x1, y1, x2, y2);\n\n if (this._ctx) {\n this._needsDash() ? this._dashedQuadraticTo(x1, y1, x2, y2) : this._ctx.quadraticCurveTo(x1, y1, x2, y2);\n }\n\n this._xi = x2;\n this._yi = y2;\n return this;\n },\n\n /**\n * @param {number} cx\n * @param {number} cy\n * @param {number} r\n * @param {number} startAngle\n * @param {number} endAngle\n * @param {boolean} anticlockwise\n * @return {module:zrender/core/PathProxy}\n */\n arc: function (cx, cy, r, startAngle, endAngle, anticlockwise) {\n this.addData(CMD.A, cx, cy, r, r, startAngle, endAngle - startAngle, 0, anticlockwise ? 0 : 1);\n this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\n this._xi = mathCos(endAngle) * r + cx;\n this._yi = mathSin(endAngle) * r + cy;\n return this;\n },\n // TODO\n arcTo: function (x1, y1, x2, y2, radius) {\n if (this._ctx) {\n this._ctx.arcTo(x1, y1, x2, y2, radius);\n }\n\n return this;\n },\n // TODO\n rect: function (x, y, w, h) {\n this._ctx && this._ctx.rect(x, y, w, h);\n this.addData(CMD.R, x, y, w, h);\n return this;\n },\n\n /**\n * @return {module:zrender/core/PathProxy}\n */\n closePath: function () {\n this.addData(CMD.Z);\n var ctx = this._ctx;\n var x0 = this._x0;\n var y0 = this._y0;\n\n if (ctx) {\n this._needsDash() && this._dashedLineTo(x0, y0);\n ctx.closePath();\n }\n\n this._xi = x0;\n this._yi = y0;\n return this;\n },\n\n /**\n * Context 从外部传入,因为有可能是 rebuildPath 完之后再 fill。\n * stroke 同样\n * @param {CanvasRenderingContext2D} ctx\n * @return {module:zrender/core/PathProxy}\n */\n fill: function (ctx) {\n ctx && ctx.fill();\n this.toStatic();\n },\n\n /**\n * @param {CanvasRenderingContext2D} ctx\n * @return {module:zrender/core/PathProxy}\n */\n stroke: function (ctx) {\n ctx && ctx.stroke();\n this.toStatic();\n },\n\n /**\n * 必须在其它绘制命令前调用\n * Must be invoked before all other path drawing methods\n * @return {module:zrender/core/PathProxy}\n */\n setLineDash: function (lineDash) {\n if (lineDash instanceof Array) {\n this._lineDash = lineDash;\n this._dashIdx = 0;\n var lineDashSum = 0;\n\n for (var i = 0; i < lineDash.length; i++) {\n lineDashSum += lineDash[i];\n }\n\n this._dashSum = lineDashSum;\n }\n\n return this;\n },\n\n /**\n * 必须在其它绘制命令前调用\n * Must be invoked before all other path drawing methods\n * @return {module:zrender/core/PathProxy}\n */\n setLineDashOffset: function (offset) {\n this._dashOffset = offset;\n return this;\n },\n\n /**\n *\n * @return {boolean}\n */\n len: function () {\n return this._len;\n },\n\n /**\n * 直接设置 Path 数据\n */\n setData: function (data) {\n var len = data.length;\n\n if (!(this.data && this.data.length === len) && hasTypedArray) {\n this.data = new Float32Array(len);\n }\n\n for (var i = 0; i < len; i++) {\n this.data[i] = data[i];\n }\n\n this._len = len;\n },\n\n /**\n * 添加子路径\n * @param {module:zrender/core/PathProxy|Array.} path\n */\n appendPath: function (path) {\n if (!(path instanceof Array)) {\n path = [path];\n }\n\n var len = path.length;\n var appendSize = 0;\n var offset = this._len;\n\n for (var i = 0; i < len; i++) {\n appendSize += path[i].len();\n }\n\n if (hasTypedArray && this.data instanceof Float32Array) {\n this.data = new Float32Array(offset + appendSize);\n }\n\n for (var i = 0; i < len; i++) {\n var appendPathData = path[i].data;\n\n for (var k = 0; k < appendPathData.length; k++) {\n this.data[offset++] = appendPathData[k];\n }\n }\n\n this._len = offset;\n },\n\n /**\n * 填充 Path 数据。\n * 尽量复用而不申明新的数组。大部分图形重绘的指令数据长度都是不变的。\n */\n addData: function (cmd) {\n if (!this._saveData) {\n return;\n }\n\n var data = this.data;\n\n if (this._len + arguments.length > data.length) {\n // 因为之前的数组已经转换成静态的 Float32Array\n // 所以不够用时需要扩展一个新的动态数组\n this._expandData();\n\n data = this.data;\n }\n\n for (var i = 0; i < arguments.length; i++) {\n data[this._len++] = arguments[i];\n }\n\n this._prevCmd = cmd;\n },\n _expandData: function () {\n // Only if data is Float32Array\n if (!(this.data instanceof Array)) {\n var newData = [];\n\n for (var i = 0; i < this._len; i++) {\n newData[i] = this.data[i];\n }\n\n this.data = newData;\n }\n },\n\n /**\n * If needs js implemented dashed line\n * @return {boolean}\n * @private\n */\n _needsDash: function () {\n return this._lineDash;\n },\n _dashedLineTo: function (x1, y1) {\n var dashSum = this._dashSum;\n var offset = this._dashOffset;\n var lineDash = this._lineDash;\n var ctx = this._ctx;\n var x0 = this._xi;\n var y0 = this._yi;\n var dx = x1 - x0;\n var dy = y1 - y0;\n var dist = mathSqrt(dx * dx + dy * dy);\n var x = x0;\n var y = y0;\n var dash;\n var nDash = lineDash.length;\n var idx;\n dx /= dist;\n dy /= dist;\n\n if (offset < 0) {\n // Convert to positive offset\n offset = dashSum + offset;\n }\n\n offset %= dashSum;\n x -= offset * dx;\n y -= offset * dy;\n\n while (dx > 0 && x <= x1 || dx < 0 && x >= x1 || dx === 0 && (dy > 0 && y <= y1 || dy < 0 && y >= y1)) {\n idx = this._dashIdx;\n dash = lineDash[idx];\n x += dx * dash;\n y += dy * dash;\n this._dashIdx = (idx + 1) % nDash; // Skip positive offset\n\n if (dx > 0 && x < x0 || dx < 0 && x > x0 || dy > 0 && y < y0 || dy < 0 && y > y0) {\n continue;\n }\n\n ctx[idx % 2 ? 'moveTo' : 'lineTo'](dx >= 0 ? mathMin(x, x1) : mathMax(x, x1), dy >= 0 ? mathMin(y, y1) : mathMax(y, y1));\n } // Offset for next lineTo\n\n\n dx = x - x1;\n dy = y - y1;\n this._dashOffset = -mathSqrt(dx * dx + dy * dy);\n },\n // Not accurate dashed line to\n _dashedBezierTo: function (x1, y1, x2, y2, x3, y3) {\n var dashSum = this._dashSum;\n var offset = this._dashOffset;\n var lineDash = this._lineDash;\n var ctx = this._ctx;\n var x0 = this._xi;\n var y0 = this._yi;\n var t;\n var dx;\n var dy;\n var cubicAt = curve.cubicAt;\n var bezierLen = 0;\n var idx = this._dashIdx;\n var nDash = lineDash.length;\n var x;\n var y;\n var tmpLen = 0;\n\n if (offset < 0) {\n // Convert to positive offset\n offset = dashSum + offset;\n }\n\n offset %= dashSum; // Bezier approx length\n\n for (t = 0; t < 1; t += 0.1) {\n dx = cubicAt(x0, x1, x2, x3, t + 0.1) - cubicAt(x0, x1, x2, x3, t);\n dy = cubicAt(y0, y1, y2, y3, t + 0.1) - cubicAt(y0, y1, y2, y3, t);\n bezierLen += mathSqrt(dx * dx + dy * dy);\n } // Find idx after add offset\n\n\n for (; idx < nDash; idx++) {\n tmpLen += lineDash[idx];\n\n if (tmpLen > offset) {\n break;\n }\n }\n\n t = (tmpLen - offset) / bezierLen;\n\n while (t <= 1) {\n x = cubicAt(x0, x1, x2, x3, t);\n y = cubicAt(y0, y1, y2, y3, t); // Use line to approximate dashed bezier\n // Bad result if dash is long\n\n idx % 2 ? ctx.moveTo(x, y) : ctx.lineTo(x, y);\n t += lineDash[idx] / bezierLen;\n idx = (idx + 1) % nDash;\n } // Finish the last segment and calculate the new offset\n\n\n idx % 2 !== 0 && ctx.lineTo(x3, y3);\n dx = x3 - x;\n dy = y3 - y;\n this._dashOffset = -mathSqrt(dx * dx + dy * dy);\n },\n _dashedQuadraticTo: function (x1, y1, x2, y2) {\n // Convert quadratic to cubic using degree elevation\n var x3 = x2;\n var y3 = y2;\n x2 = (x2 + 2 * x1) / 3;\n y2 = (y2 + 2 * y1) / 3;\n x1 = (this._xi + 2 * x1) / 3;\n y1 = (this._yi + 2 * y1) / 3;\n\n this._dashedBezierTo(x1, y1, x2, y2, x3, y3);\n },\n\n /**\n * 转成静态的 Float32Array 减少堆内存占用\n * Convert dynamic array to static Float32Array\n */\n toStatic: function () {\n var data = this.data;\n\n if (data instanceof Array) {\n data.length = this._len;\n\n if (hasTypedArray) {\n this.data = new Float32Array(data);\n }\n }\n },\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n getBoundingRect: function () {\n min[0] = min[1] = min2[0] = min2[1] = Number.MAX_VALUE;\n max[0] = max[1] = max2[0] = max2[1] = -Number.MAX_VALUE;\n var data = this.data;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n\n for (var i = 0; i < data.length;) {\n var cmd = data[i++];\n\n if (i === 1) {\n // 如果第一个命令是 L, C, Q\n // 则 previous point 同绘制命令的第一个 point\n //\n // 第一个命令为 Arc 的情况下会在后面特殊处理\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n\n switch (cmd) {\n case CMD.M:\n // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点\n // 在 closePath 的时候使用\n x0 = data[i++];\n y0 = data[i++];\n xi = x0;\n yi = y0;\n min2[0] = x0;\n min2[1] = y0;\n max2[0] = x0;\n max2[1] = y0;\n break;\n\n case CMD.L:\n bbox.fromLine(xi, yi, data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.C:\n bbox.fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.Q:\n bbox.fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.A:\n // TODO Arc 判断的开销比较大\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++];\n var endAngle = data[i++] + startAngle; // TODO Arc 旋转\n\n i += 1;\n var anticlockwise = 1 - data[i++];\n\n if (i === 1) {\n // 直接使用 arc 命令\n // 第一个命令起点还未定义\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n\n bbox.fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min2, max2);\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++]; // Use fromLine\n\n bbox.fromLine(x0, y0, x0 + width, y0 + height, min2, max2);\n break;\n\n case CMD.Z:\n xi = x0;\n yi = y0;\n break;\n } // Union\n\n\n vec2.min(min, min, min2);\n vec2.max(max, max, max2);\n } // No data\n\n\n if (i === 0) {\n min[0] = min[1] = max[0] = max[1] = 0;\n }\n\n return new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n },\n\n /**\n * Rebuild path from current data\n * Rebuild path will not consider javascript implemented line dash.\n * @param {CanvasRenderingContext2D} ctx\n */\n rebuildPath: function (ctx) {\n var d = this.data;\n var x0;\n var y0;\n var xi;\n var yi;\n var x;\n var y;\n var ux = this._ux;\n var uy = this._uy;\n var len = this._len;\n\n for (var i = 0; i < len;) {\n var cmd = d[i++];\n\n if (i === 1) {\n // 如果第一个命令是 L, C, Q\n // 则 previous point 同绘制命令的第一个 point\n //\n // 第一个命令为 Arc 的情况下会在后面特殊处理\n xi = d[i];\n yi = d[i + 1];\n x0 = xi;\n y0 = yi;\n }\n\n switch (cmd) {\n case CMD.M:\n x0 = xi = d[i++];\n y0 = yi = d[i++];\n ctx.moveTo(xi, yi);\n break;\n\n case CMD.L:\n x = d[i++];\n y = d[i++]; // Not draw too small seg between\n\n if (mathAbs(x - xi) > ux || mathAbs(y - yi) > uy || i === len - 1) {\n ctx.lineTo(x, y);\n xi = x;\n yi = y;\n }\n\n break;\n\n case CMD.C:\n ctx.bezierCurveTo(d[i++], d[i++], d[i++], d[i++], d[i++], d[i++]);\n xi = d[i - 2];\n yi = d[i - 1];\n break;\n\n case CMD.Q:\n ctx.quadraticCurveTo(d[i++], d[i++], d[i++], d[i++]);\n xi = d[i - 2];\n yi = d[i - 1];\n break;\n\n case CMD.A:\n var cx = d[i++];\n var cy = d[i++];\n var rx = d[i++];\n var ry = d[i++];\n var theta = d[i++];\n var dTheta = d[i++];\n var psi = d[i++];\n var fs = d[i++];\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n var isEllipse = Math.abs(rx - ry) > 1e-3;\n var endAngle = theta + dTheta;\n\n if (isEllipse) {\n ctx.translate(cx, cy);\n ctx.rotate(psi);\n ctx.scale(scaleX, scaleY);\n ctx.arc(0, 0, r, theta, endAngle, 1 - fs);\n ctx.scale(1 / scaleX, 1 / scaleY);\n ctx.rotate(-psi);\n ctx.translate(-cx, -cy);\n } else {\n ctx.arc(cx, cy, r, theta, endAngle, 1 - fs);\n }\n\n if (i === 1) {\n // 直接使用 arc 命令\n // 第一个命令起点还未定义\n x0 = mathCos(theta) * rx + cx;\n y0 = mathSin(theta) * ry + cy;\n }\n\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n\n case CMD.R:\n x0 = xi = d[i];\n y0 = yi = d[i + 1];\n ctx.rect(d[i++], d[i++], d[i++], d[i++]);\n break;\n\n case CMD.Z:\n ctx.closePath();\n xi = x0;\n yi = y0;\n }\n }\n }\n};\nPathProxy.CMD = CMD;\nvar _default = PathProxy;\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* ).\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 * \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 _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar createListFromArray = require(\"../helper/createListFromArray\");\n\nvar SeriesModel = require(\"../../model/Series\");\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 = SeriesModel.extend({\n type: 'series.line',\n dependencies: ['grid', 'polar'],\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this, {\n useEncodeDefaulter: true\n });\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n hoverAnimation: true,\n // stack: null\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // polarIndex: 0,\n // If clip the overflow value\n clip: true,\n // cursor: null,\n label: {\n position: 'top'\n },\n // itemStyle: {\n // },\n lineStyle: {\n width: 2,\n type: 'solid'\n },\n // areaStyle: {\n // origin of areaStyle. Valid values:\n // `'auto'/null/undefined`: from axisLine to data\n // `'start'`: from min to data\n // `'end'`: from data to max\n // origin: 'auto'\n // },\n // false, 'start', 'end', 'middle'\n step: false,\n // Disabled if step is true\n smooth: false,\n smoothMonotone: null,\n symbol: 'emptyCircle',\n symbolSize: 4,\n symbolRotate: null,\n showSymbol: true,\n // `false`: follow the label interval strategy.\n // `true`: show all symbols.\n // `'auto'`: If possible, show all symbols, otherwise\n // follow the label interval strategy.\n showAllSymbol: 'auto',\n // Whether to connect break point.\n connectNulls: false,\n // Sampling for large data. Can be: 'average', 'max', 'min', 'sum'.\n sampling: 'none',\n animationEasing: 'linear',\n // Disable progressive\n progressive: 0,\n hoverLayerThreshold: Infinity\n }\n});\n\nmodule.exports = _default;","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"toastification\"},[_c('div',{staticClass:\"d-flex align-items-start\"},[_c('b-avatar',{staticClass:\"mr-75 flex-shrink-0\",attrs:{\"variant\":_vm.variant,\"size\":\"1.8rem\"}},[_c('feather-icon',{attrs:{\"icon\":_vm.icon,\"size\":\"15\"}})],1),_c('div',{staticClass:\"d-flex flex-grow-1\"},[_c('div',[(_vm.title)?_c('h5',{staticClass:\"mb-0 font-weight-bolder toastification-title\",class:(\"text-\" + _vm.variant),domProps:{\"textContent\":_vm._s(_vm.title)}}):_vm._e(),(_vm.text)?_c('small',{staticClass:\"d-inline-block text-body\",domProps:{\"textContent\":_vm._s(_vm.text)}}):_vm._e()]),_c('span',{staticClass:\"cursor-pointer toastification-close-icon ml-auto \",on:{\"click\":function($event){return _vm.$emit('close-toast')}}},[(!_vm.hideClose)?_c('feather-icon',{staticClass:\"text-body\",attrs:{\"icon\":\"XIcon\"}}):_vm._e()],1)])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToastificationContent.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToastificationContent.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ToastificationContent.vue?vue&type=template&id=55dd3057&scoped=true&\"\nimport script from \"./ToastificationContent.vue?vue&type=script&lang=js&\"\nexport * from \"./ToastificationContent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ToastificationContent.vue?vue&type=style&index=0&id=55dd3057&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"55dd3057\",\n null\n \n)\n\nexport default component.exports","/**\n * echarts设备环境识别\n *\n * @desc echarts基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据统计图表。\n * @author firede[firede@firede.us]\n * @desc thanks zepto.\n */\n\n/* global wx */\nvar env = {};\n\nif (typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function') {\n // In Weixin Application\n env = {\n browser: {},\n os: {},\n node: false,\n wxa: true,\n // Weixin Application\n canvasSupported: true,\n svgSupported: false,\n touchEventsSupported: true,\n domSupported: false\n };\n} else if (typeof document === 'undefined' && typeof self !== 'undefined') {\n // In worker\n env = {\n browser: {},\n os: {},\n node: false,\n worker: true,\n canvasSupported: true,\n domSupported: false\n };\n} else if (typeof navigator === 'undefined') {\n // In node\n env = {\n browser: {},\n os: {},\n node: true,\n worker: false,\n // Assume canvas is supported\n canvasSupported: true,\n svgSupported: true,\n domSupported: false\n };\n} else {\n env = detect(navigator.userAgent);\n}\n\nvar _default = env; // Zepto.js\n// (c) 2010-2013 Thomas Fuchs\n// Zepto.js may be freely distributed under the MIT license.\n\nfunction detect(ua) {\n var os = {};\n var browser = {}; // var webkit = ua.match(/Web[kK]it[\\/]{0,1}([\\d.]+)/);\n // var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/);\n // var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n // var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n // var iphone = !ipad && ua.match(/(iPhone\\sOS)\\s([\\d_]+)/);\n // var webos = ua.match(/(webOS|hpwOS)[\\s\\/]([\\d.]+)/);\n // var touchpad = webos && ua.match(/TouchPad/);\n // var kindle = ua.match(/Kindle\\/([\\d.]+)/);\n // var silk = ua.match(/Silk\\/([\\d._]+)/);\n // var blackberry = ua.match(/(BlackBerry).*Version\\/([\\d.]+)/);\n // var bb10 = ua.match(/(BB10).*Version\\/([\\d.]+)/);\n // var rimtabletos = ua.match(/(RIM\\sTablet\\sOS)\\s([\\d.]+)/);\n // var playbook = ua.match(/PlayBook/);\n // var chrome = ua.match(/Chrome\\/([\\d.]+)/) || ua.match(/CriOS\\/([\\d.]+)/);\n\n var firefox = ua.match(/Firefox\\/([\\d.]+)/); // var safari = webkit && ua.match(/Mobile\\//) && !chrome;\n // var webview = ua.match(/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/) && !chrome;\n\n var ie = ua.match(/MSIE\\s([\\d.]+)/) // IE 11 Trident/7.0; rv:11.0\n || ua.match(/Trident\\/.+?rv:(([\\d.]+))/);\n var edge = ua.match(/Edge\\/([\\d.]+)/); // IE 12 and 12+\n\n var weChat = /micromessenger/i.test(ua); // Todo: clean this up with a better OS/browser seperation:\n // - discern (more) between multiple browsers on android\n // - decide if kindle fire in silk mode is android or not\n // - Firefox on Android doesn't specify the Android version\n // - possibly devide in os, device and browser hashes\n // if (browser.webkit = !!webkit) browser.version = webkit[1];\n // if (android) os.android = true, os.version = android[2];\n // if (iphone && !ipod) os.ios = os.iphone = true, os.version = iphone[2].replace(/_/g, '.');\n // if (ipad) os.ios = os.ipad = true, os.version = ipad[2].replace(/_/g, '.');\n // if (ipod) os.ios = os.ipod = true, os.version = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n // if (webos) os.webos = true, os.version = webos[2];\n // if (touchpad) os.touchpad = true;\n // if (blackberry) os.blackberry = true, os.version = blackberry[2];\n // if (bb10) os.bb10 = true, os.version = bb10[2];\n // if (rimtabletos) os.rimtabletos = true, os.version = rimtabletos[2];\n // if (playbook) browser.playbook = true;\n // if (kindle) os.kindle = true, os.version = kindle[1];\n // if (silk) browser.silk = true, browser.version = silk[1];\n // if (!silk && os.android && ua.match(/Kindle Fire/)) browser.silk = true;\n // if (chrome) browser.chrome = true, browser.version = chrome[1];\n\n if (firefox) {\n browser.firefox = true;\n browser.version = firefox[1];\n } // if (safari && (ua.match(/Safari/) || !!os.ios)) browser.safari = true;\n // if (webview) browser.webview = true;\n\n\n if (ie) {\n browser.ie = true;\n browser.version = ie[1];\n }\n\n if (edge) {\n browser.edge = true;\n browser.version = edge[1];\n } // It is difficult to detect WeChat in Win Phone precisely, because ua can\n // not be set on win phone. So we do not consider Win Phone.\n\n\n if (weChat) {\n browser.weChat = true;\n } // os.tablet = !!(ipad || playbook || (android && !ua.match(/Mobile/)) ||\n // (firefox && ua.match(/Tablet/)) || (ie && !ua.match(/Phone/) && ua.match(/Touch/)));\n // os.phone = !!(!os.tablet && !os.ipod && (android || iphone || webos ||\n // (chrome && ua.match(/Android/)) || (chrome && ua.match(/CriOS\\/([\\d.]+)/)) ||\n // (firefox && ua.match(/Mobile/)) || (ie && ua.match(/Touch/))));\n\n\n return {\n browser: browser,\n os: os,\n node: false,\n // 原生canvas支持,改极端点了\n // canvasSupported : !(browser.ie && parseFloat(browser.version) < 9)\n canvasSupported: !!document.createElement('canvas').getContext,\n svgSupported: typeof SVGRect !== 'undefined',\n // works on most browsers\n // IE10/11 does not support touch event, and MS Edge supports them but not by\n // default, so we dont check navigator.maxTouchPoints for them here.\n touchEventsSupported: 'ontouchstart' in window && !browser.ie && !browser.edge,\n // .\n pointerEventsSupported: // (1) Firefox supports pointer but not by default, only MS browsers are reliable on pointer\n // events currently. So we dont use that on other browsers unless tested sufficiently.\n // For example, in iOS 13 Mobile Chromium 78, if the touching behavior starts page\n // scroll, the `pointermove` event can not be fired any more. That will break some\n // features like \"pan horizontally to move something and pan vertically to page scroll\".\n // The horizontal pan probably be interrupted by the casually triggered page scroll.\n // (2) Although IE 10 supports pointer event, it use old style and is different from the\n // standard. So we exclude that. (IE 10 is hardly used on touch device)\n 'onpointerdown' in window && (browser.edge || browser.ie && browser.version >= 11),\n // passiveSupported: detectPassiveSupport()\n domSupported: typeof document !== 'undefined'\n };\n} // See https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n// function detectPassiveSupport() {\n// // Test via a getter in the options object to see if the passive property is accessed\n// var supportsPassive = false;\n// try {\n// var opts = Object.defineProperty({}, 'passive', {\n// get: function() {\n// supportsPassive = true;\n// }\n// });\n// window.addEventListener('testPassive', function() {}, opts);\n// } catch (e) {\n// }\n// return supportsPassive;\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 pathTool = require(\"zrender/lib/tool/path\");\n\nvar colorTool = require(\"zrender/lib/tool/color\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar vector = require(\"zrender/lib/core/vector\");\n\nvar Path = require(\"zrender/lib/graphic/Path\");\n\nvar Transformable = require(\"zrender/lib/mixin/Transformable\");\n\nvar ZImage = require(\"zrender/lib/graphic/Image\");\n\nexports.Image = ZImage;\n\nvar Group = require(\"zrender/lib/container/Group\");\n\nexports.Group = Group;\n\nvar Text = require(\"zrender/lib/graphic/Text\");\n\nexports.Text = Text;\n\nvar Circle = require(\"zrender/lib/graphic/shape/Circle\");\n\nexports.Circle = Circle;\n\nvar Sector = require(\"zrender/lib/graphic/shape/Sector\");\n\nexports.Sector = Sector;\n\nvar Ring = require(\"zrender/lib/graphic/shape/Ring\");\n\nexports.Ring = Ring;\n\nvar Polygon = require(\"zrender/lib/graphic/shape/Polygon\");\n\nexports.Polygon = Polygon;\n\nvar Polyline = require(\"zrender/lib/graphic/shape/Polyline\");\n\nexports.Polyline = Polyline;\n\nvar Rect = require(\"zrender/lib/graphic/shape/Rect\");\n\nexports.Rect = Rect;\n\nvar Line = require(\"zrender/lib/graphic/shape/Line\");\n\nexports.Line = Line;\n\nvar BezierCurve = require(\"zrender/lib/graphic/shape/BezierCurve\");\n\nexports.BezierCurve = BezierCurve;\n\nvar Arc = require(\"zrender/lib/graphic/shape/Arc\");\n\nexports.Arc = Arc;\n\nvar CompoundPath = require(\"zrender/lib/graphic/CompoundPath\");\n\nexports.CompoundPath = CompoundPath;\n\nvar LinearGradient = require(\"zrender/lib/graphic/LinearGradient\");\n\nexports.LinearGradient = LinearGradient;\n\nvar RadialGradient = require(\"zrender/lib/graphic/RadialGradient\");\n\nexports.RadialGradient = RadialGradient;\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nexports.BoundingRect = BoundingRect;\n\nvar IncrementalDisplayable = require(\"zrender/lib/graphic/IncrementalDisplayable\");\n\nexports.IncrementalDisplayable = IncrementalDisplayable;\n\nvar subPixelOptimizeUtil = require(\"zrender/lib/graphic/helper/subPixelOptimize\");\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 mathMax = Math.max;\nvar mathMin = Math.min;\nvar EMPTY_OBJ = {};\nvar Z2_EMPHASIS_LIFT = 1; // key: label model property nane, value: style property name.\n\nvar CACHED_LABEL_STYLE_PROPERTIES = {\n color: 'textFill',\n textBorderColor: 'textStroke',\n textBorderWidth: 'textStrokeWidth'\n};\nvar EMPHASIS = 'emphasis';\nvar NORMAL = 'normal'; // Reserve 0 as default.\n\nvar _highlightNextDigit = 1;\nvar _highlightKeyMap = {};\nvar _customShapeMap = {};\n/**\n * Extend shape with parameters\n */\n\nfunction extendShape(opts) {\n return Path.extend(opts);\n}\n/**\n * Extend path\n */\n\n\nfunction extendPath(pathData, opts) {\n return pathTool.extendFromString(pathData, opts);\n}\n/**\n * Register a user defined shape.\n * The shape class can be fetched by `getShapeClass`\n * This method will overwrite the registered shapes, including\n * the registered built-in shapes, if using the same `name`.\n * The shape can be used in `custom series` and\n * `graphic component` by declaring `{type: name}`.\n *\n * @param {string} name\n * @param {Object} ShapeClass Can be generated by `extendShape`.\n */\n\n\nfunction registerShape(name, ShapeClass) {\n _customShapeMap[name] = ShapeClass;\n}\n/**\n * Find shape class registered by `registerShape`. Usually used in\n * fetching user defined shape.\n *\n * [Caution]:\n * (1) This method **MUST NOT be used inside echarts !!!**, unless it is prepared\n * to use user registered shapes.\n * Because the built-in shape (see `getBuiltInShape`) will be registered by\n * `registerShape` by default. That enables users to get both built-in\n * shapes as well as the shapes belonging to themsleves. But users can overwrite\n * the built-in shapes by using names like 'circle', 'rect' via calling\n * `registerShape`. So the echarts inner featrues should not fetch shapes from here\n * in case that it is overwritten by users, except that some features, like\n * `custom series`, `graphic component`, do it deliberately.\n *\n * (2) In the features like `custom series`, `graphic component`, the user input\n * `{tpye: 'xxx'}` does not only specify shapes but also specify other graphic\n * elements like `'group'`, `'text'`, `'image'` or event `'path'`. Those names\n * are reserved names, that is, if some user register a shape named `'image'`,\n * the shape will not be used. If we intending to add some more reserved names\n * in feature, that might bring break changes (disable some existing user shape\n * names). But that case probably rearly happen. So we dont make more mechanism\n * to resolve this issue here.\n *\n * @param {string} name\n * @return {Object} The shape class. If not found, return nothing.\n */\n\n\nfunction getShapeClass(name) {\n if (_customShapeMap.hasOwnProperty(name)) {\n return _customShapeMap[name];\n }\n}\n/**\n * Create a path element from path data string\n * @param {string} pathData\n * @param {Object} opts\n * @param {module:zrender/core/BoundingRect} rect\n * @param {string} [layout=cover] 'center' or 'cover'\n */\n\n\nfunction makePath(pathData, opts, rect, layout) {\n var path = pathTool.createFromString(pathData, opts);\n\n if (rect) {\n if (layout === 'center') {\n rect = centerGraphic(rect, path.getBoundingRect());\n }\n\n resizePath(path, rect);\n }\n\n return path;\n}\n/**\n * Create a image element from image url\n * @param {string} imageUrl image url\n * @param {Object} opts options\n * @param {module:zrender/core/BoundingRect} rect constrain rect\n * @param {string} [layout=cover] 'center' or 'cover'\n */\n\n\nfunction makeImage(imageUrl, rect, layout) {\n var path = new ZImage({\n style: {\n image: imageUrl,\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n },\n onload: function (img) {\n if (layout === 'center') {\n var boundingRect = {\n width: img.width,\n height: img.height\n };\n path.setStyle(centerGraphic(rect, boundingRect));\n }\n }\n });\n return path;\n}\n/**\n * Get position of centered element in bounding box.\n *\n * @param {Object} rect element local bounding box\n * @param {Object} boundingRect constraint bounding box\n * @return {Object} element position containing x, y, width, and height\n */\n\n\nfunction centerGraphic(rect, boundingRect) {\n // Set rect to center, keep width / height ratio.\n var aspect = boundingRect.width / boundingRect.height;\n var width = rect.height * aspect;\n var height;\n\n if (width <= rect.width) {\n height = rect.height;\n } else {\n width = rect.width;\n height = width / aspect;\n }\n\n var cx = rect.x + rect.width / 2;\n var cy = rect.y + rect.height / 2;\n return {\n x: cx - width / 2,\n y: cy - height / 2,\n width: width,\n height: height\n };\n}\n\nvar mergePath = pathTool.mergePath;\n/**\n * Resize a path to fit the rect\n * @param {module:zrender/graphic/Path} path\n * @param {Object} rect\n */\n\nfunction resizePath(path, rect) {\n if (!path.applyTransform) {\n return;\n }\n\n var pathRect = path.getBoundingRect();\n var m = pathRect.calculateTransform(rect);\n path.applyTransform(m);\n}\n/**\n * Sub pixel optimize line for canvas\n *\n * @param {Object} param\n * @param {Object} [param.shape]\n * @param {number} [param.shape.x1]\n * @param {number} [param.shape.y1]\n * @param {number} [param.shape.x2]\n * @param {number} [param.shape.y2]\n * @param {Object} [param.style]\n * @param {number} [param.style.lineWidth]\n * @return {Object} Modified param\n */\n\n\nfunction subPixelOptimizeLine(param) {\n subPixelOptimizeUtil.subPixelOptimizeLine(param.shape, param.shape, param.style);\n return param;\n}\n/**\n * Sub pixel optimize rect for canvas\n *\n * @param {Object} param\n * @param {Object} [param.shape]\n * @param {number} [param.shape.x]\n * @param {number} [param.shape.y]\n * @param {number} [param.shape.width]\n * @param {number} [param.shape.height]\n * @param {Object} [param.style]\n * @param {number} [param.style.lineWidth]\n * @return {Object} Modified param\n */\n\n\nfunction subPixelOptimizeRect(param) {\n subPixelOptimizeUtil.subPixelOptimizeRect(param.shape, param.shape, param.style);\n return param;\n}\n/**\n * Sub pixel optimize for canvas\n *\n * @param {number} position Coordinate, such as x, y\n * @param {number} lineWidth Should be nonnegative integer.\n * @param {boolean=} positiveOrNegative Default false (negative).\n * @return {number} Optimized position.\n */\n\n\nvar subPixelOptimize = subPixelOptimizeUtil.subPixelOptimize;\n\nfunction hasFillOrStroke(fillOrStroke) {\n return fillOrStroke != null && fillOrStroke !== 'none';\n} // Most lifted color are duplicated.\n\n\nvar liftedColorMap = zrUtil.createHashMap();\nvar liftedColorCount = 0;\n\nfunction liftColor(color) {\n if (typeof color !== 'string') {\n return color;\n }\n\n var liftedColor = liftedColorMap.get(color);\n\n if (!liftedColor) {\n liftedColor = colorTool.lift(color, -0.1);\n\n if (liftedColorCount < 10000) {\n liftedColorMap.set(color, liftedColor);\n liftedColorCount++;\n }\n }\n\n return liftedColor;\n}\n\nfunction cacheElementStl(el) {\n if (!el.__hoverStlDirty) {\n return;\n }\n\n el.__hoverStlDirty = false;\n var hoverStyle = el.__hoverStl;\n\n if (!hoverStyle) {\n el.__cachedNormalStl = el.__cachedNormalZ2 = null;\n return;\n }\n\n var normalStyle = el.__cachedNormalStl = {};\n el.__cachedNormalZ2 = el.z2;\n var elStyle = el.style;\n\n for (var name in hoverStyle) {\n // See comment in `singleEnterEmphasis`.\n if (hoverStyle[name] != null) {\n normalStyle[name] = elStyle[name];\n }\n } // Always cache fill and stroke to normalStyle for lifting color.\n\n\n normalStyle.fill = elStyle.fill;\n normalStyle.stroke = elStyle.stroke;\n}\n\nfunction singleEnterEmphasis(el) {\n var hoverStl = el.__hoverStl;\n\n if (!hoverStl || el.__highlighted) {\n return;\n }\n\n var zr = el.__zr;\n var useHoverLayer = el.useHoverLayer && zr && zr.painter.type === 'canvas';\n el.__highlighted = useHoverLayer ? 'layer' : 'plain';\n\n if (el.isGroup || !zr && el.useHoverLayer) {\n return;\n }\n\n var elTarget = el;\n var targetStyle = el.style;\n\n if (useHoverLayer) {\n elTarget = zr.addHover(el);\n targetStyle = elTarget.style;\n }\n\n rollbackDefaultTextStyle(targetStyle);\n\n if (!useHoverLayer) {\n cacheElementStl(elTarget);\n } // styles can be:\n // {\n // label: {\n // show: false,\n // position: 'outside',\n // fontSize: 18\n // },\n // emphasis: {\n // label: {\n // show: true\n // }\n // }\n // },\n // where properties of `emphasis` may not appear in `normal`. We previously use\n // module:echarts/util/model#defaultEmphasis to merge `normal` to `emphasis`.\n // But consider rich text and setOption in merge mode, it is impossible to cover\n // all properties in merge. So we use merge mode when setting style here.\n // But we choose the merge strategy that only properties that is not `null/undefined`.\n // Because when making a textStyle (espacially rich text), it is not easy to distinguish\n // `hasOwnProperty` and `null/undefined` in code, so we trade them as the same for simplicity.\n // But this strategy brings a trouble that `null/undefined` can not be used to remove\n // style any more in `emphasis`. Users can both set properties directly on normal and\n // emphasis to avoid this issue, or we might support `'none'` for this case if required.\n\n\n targetStyle.extendFrom(hoverStl);\n setDefaultHoverFillStroke(targetStyle, hoverStl, 'fill');\n setDefaultHoverFillStroke(targetStyle, hoverStl, 'stroke');\n applyDefaultTextStyle(targetStyle);\n\n if (!useHoverLayer) {\n el.dirty(false);\n el.z2 += Z2_EMPHASIS_LIFT;\n }\n}\n\nfunction setDefaultHoverFillStroke(targetStyle, hoverStyle, prop) {\n if (!hasFillOrStroke(hoverStyle[prop]) && hasFillOrStroke(targetStyle[prop])) {\n targetStyle[prop] = liftColor(targetStyle[prop]);\n }\n}\n\nfunction singleEnterNormal(el) {\n var highlighted = el.__highlighted;\n\n if (!highlighted) {\n return;\n }\n\n el.__highlighted = false;\n\n if (el.isGroup) {\n return;\n }\n\n if (highlighted === 'layer') {\n el.__zr && el.__zr.removeHover(el);\n } else {\n var style = el.style;\n var normalStl = el.__cachedNormalStl;\n\n if (normalStl) {\n rollbackDefaultTextStyle(style);\n el.setStyle(normalStl);\n applyDefaultTextStyle(style);\n } // `__cachedNormalZ2` will not be reset if calling `setElementHoverStyle`\n // when `el` is on emphasis state. So here by comparing with 1, we try\n // hard to make the bug case rare.\n\n\n var normalZ2 = el.__cachedNormalZ2;\n\n if (normalZ2 != null && el.z2 - normalZ2 === Z2_EMPHASIS_LIFT) {\n el.z2 = normalZ2;\n }\n }\n}\n\nfunction traverseUpdate(el, updater, commonParam) {\n // If root is group, also enter updater for `highDownOnUpdate`.\n var fromState = NORMAL;\n var toState = NORMAL;\n var trigger; // See the rule of `highDownOnUpdate` on `graphic.setAsHighDownDispatcher`.\n\n el.__highlighted && (fromState = EMPHASIS, trigger = true);\n updater(el, commonParam);\n el.__highlighted && (toState = EMPHASIS, trigger = true);\n el.isGroup && el.traverse(function (child) {\n !child.isGroup && updater(child, commonParam);\n });\n trigger && el.__highDownOnUpdate && el.__highDownOnUpdate(fromState, toState);\n}\n/**\n * Set hover style (namely \"emphasis style\") of element, based on the current\n * style of the given `el`.\n * This method should be called after all of the normal styles have been adopted\n * to the `el`. See the reason on `setHoverStyle`.\n *\n * @param {module:zrender/Element} el Should not be `zrender/container/Group`.\n * @param {Object} [el.hoverStyle] Can be set on el or its descendants,\n * e.g., `el.hoverStyle = ...; graphic.setHoverStyle(el); `.\n * Often used when item group has a label element and it's hoverStyle is different.\n * @param {Object|boolean} [hoverStl] The specified hover style.\n * If set as `false`, disable the hover style.\n * Similarly, The `el.hoverStyle` can alse be set\n * as `false` to disable the hover style.\n * Otherwise, use the default hover style if not provided.\n */\n\n\nfunction setElementHoverStyle(el, hoverStl) {\n // For performance consideration, it might be better to make the \"hover style\" only the\n // difference properties from the \"normal style\", but not a entire copy of all styles.\n hoverStl = el.__hoverStl = hoverStl !== false && (el.hoverStyle || hoverStl || {});\n el.__hoverStlDirty = true; // FIXME\n // It is not completely right to save \"normal\"/\"emphasis\" flag on elements.\n // It probably should be saved on `data` of series. Consider the cases:\n // (1) A highlighted elements are moved out of the view port and re-enter\n // again by dataZoom.\n // (2) call `setOption` and replace elements totally when they are highlighted.\n\n if (el.__highlighted) {\n // Consider the case:\n // The styles of a highlighted `el` is being updated. The new \"emphasis style\"\n // should be adapted to the `el`. Notice here new \"normal styles\" should have\n // been set outside and the cached \"normal style\" is out of date.\n el.__cachedNormalStl = null; // Do not clear `__cachedNormalZ2` here, because setting `z2` is not a constraint\n // of this method. In most cases, `z2` is not set and hover style should be able\n // to rollback. Of course, that would bring bug, but only in a rare case, see\n // `doSingleLeaveHover` for details.\n\n singleEnterNormal(el);\n singleEnterEmphasis(el);\n }\n}\n\nfunction onElementMouseOver(e) {\n !shouldSilent(this, e) // \"emphasis\" event highlight has higher priority than mouse highlight.\n && !this.__highByOuter && traverseUpdate(this, singleEnterEmphasis);\n}\n\nfunction onElementMouseOut(e) {\n !shouldSilent(this, e) // \"emphasis\" event highlight has higher priority than mouse highlight.\n && !this.__highByOuter && traverseUpdate(this, singleEnterNormal);\n}\n\nfunction onElementEmphasisEvent(highlightDigit) {\n this.__highByOuter |= 1 << (highlightDigit || 0);\n traverseUpdate(this, singleEnterEmphasis);\n}\n\nfunction onElementNormalEvent(highlightDigit) {\n !(this.__highByOuter &= ~(1 << (highlightDigit || 0))) && traverseUpdate(this, singleEnterNormal);\n}\n\nfunction shouldSilent(el, e) {\n return el.__highDownSilentOnTouch && e.zrByTouch;\n}\n/**\n * Set hover style (namely \"emphasis style\") of element,\n * based on the current style of the given `el`.\n *\n * (1)\n * **CONSTRAINTS** for this method:\n * This method MUST be called after all of the normal styles having been adopted\n * to the `el`.\n * The input `hoverStyle` (that is, \"emphasis style\") MUST be the subset of the\n * \"normal style\" having been set to the el.\n * `color` MUST be one of the \"normal styles\" (because color might be lifted as\n * a default hover style).\n *\n * The reason: this method treat the current style of the `el` as the \"normal style\"\n * and cache them when enter/update the \"emphasis style\". Consider the case: the `el`\n * is in \"emphasis\" state and `setOption`/`dispatchAction` trigger the style updating\n * logic, where the el should shift from the original emphasis style to the new\n * \"emphasis style\" and should be able to \"downplay\" back to the new \"normal style\".\n *\n * Indeed, it is error-prone to make a interface has so many constraints, but I have\n * not found a better solution yet to fit the backward compatibility, performance and\n * the current programming style.\n *\n * (2)\n * Call the method for a \"root\" element once. Do not call it for each descendants.\n * If the descendants elemenets of a group has itself hover style different from the\n * root group, we can simply mount the style on `el.hoverStyle` for them, but should\n * not call this method for them.\n *\n * (3) These input parameters can be set directly on `el`:\n *\n * @param {module:zrender/Element} el\n * @param {Object} [el.hoverStyle] See `graphic.setElementHoverStyle`.\n * @param {boolean} [el.highDownSilentOnTouch=false] See `graphic.setAsHighDownDispatcher`.\n * @param {Function} [el.highDownOnUpdate] See `graphic.setAsHighDownDispatcher`.\n * @param {Object|boolean} [hoverStyle] See `graphic.setElementHoverStyle`.\n */\n\n\nfunction setHoverStyle(el, hoverStyle) {\n setAsHighDownDispatcher(el, true);\n traverseUpdate(el, setElementHoverStyle, hoverStyle);\n}\n/**\n * @param {module:zrender/Element} el\n * @param {Function} [el.highDownOnUpdate] Called when state updated.\n * Since `setHoverStyle` has the constraint that it must be called after\n * all of the normal style updated, `highDownOnUpdate` is not needed to\n * trigger if both `fromState` and `toState` is 'normal', and needed to\n * trigger if both `fromState` and `toState` is 'emphasis', which enables\n * to sync outside style settings to \"emphasis\" state.\n * @this {string} This dispatcher `el`.\n * @param {string} fromState Can be \"normal\" or \"emphasis\".\n * `fromState` might equal to `toState`,\n * for example, when this method is called when `el` is\n * on \"emphasis\" state.\n * @param {string} toState Can be \"normal\" or \"emphasis\".\n *\n * FIXME\n * CAUTION: Do not expose `highDownOnUpdate` outside echarts.\n * Because it is not a complete solution. The update\n * listener should not have been mount in element,\n * and the normal/emphasis state should not have\n * mantained on elements.\n *\n * @param {boolean} [el.highDownSilentOnTouch=false]\n * In touch device, mouseover event will be trigger on touchstart event\n * (see module:zrender/dom/HandlerProxy). By this mechanism, we can\n * conveniently use hoverStyle when tap on touch screen without additional\n * code for compatibility.\n * But if the chart/component has select feature, which usually also use\n * hoverStyle, there might be conflict between 'select-highlight' and\n * 'hover-highlight' especially when roam is enabled (see geo for example).\n * In this case, `highDownSilentOnTouch` should be used to disable\n * hover-highlight on touch device.\n * @param {boolean} [asDispatcher=true] If `false`, do not set as \"highDownDispatcher\".\n */\n\n\nfunction setAsHighDownDispatcher(el, asDispatcher) {\n var disable = asDispatcher === false; // Make `highDownSilentOnTouch` and `highDownOnUpdate` only work after\n // `setAsHighDownDispatcher` called. Avoid it is modified by user unexpectedly.\n\n el.__highDownSilentOnTouch = el.highDownSilentOnTouch;\n el.__highDownOnUpdate = el.highDownOnUpdate; // Simple optimize, since this method might be\n // called for each elements of a group in some cases.\n\n if (!disable || el.__highDownDispatcher) {\n var method = disable ? 'off' : 'on'; // Duplicated function will be auto-ignored, see Eventful.js.\n\n el[method]('mouseover', onElementMouseOver)[method]('mouseout', onElementMouseOut); // Emphasis, normal can be triggered manually by API or other components like hover link.\n\n el[method]('emphasis', onElementEmphasisEvent)[method]('normal', onElementNormalEvent); // Also keep previous record.\n\n el.__highByOuter = el.__highByOuter || 0;\n el.__highDownDispatcher = !disable;\n }\n}\n/**\n * @param {module:zrender/src/Element} el\n * @return {boolean}\n */\n\n\nfunction isHighDownDispatcher(el) {\n return !!(el && el.__highDownDispatcher);\n}\n/**\n * Support hightlight/downplay record on each elements.\n * For the case: hover highlight/downplay (legend, visualMap, ...) and\n * user triggerred hightlight/downplay should not conflict.\n * Only all of the highlightDigit cleared, return to normal.\n * @param {string} highlightKey\n * @return {number} highlightDigit\n */\n\n\nfunction getHighlightDigit(highlightKey) {\n var highlightDigit = _highlightKeyMap[highlightKey];\n\n if (highlightDigit == null && _highlightNextDigit <= 32) {\n highlightDigit = _highlightKeyMap[highlightKey] = _highlightNextDigit++;\n }\n\n return highlightDigit;\n}\n/**\n * See more info in `setTextStyleCommon`.\n * @param {Object|module:zrender/graphic/Style} normalStyle\n * @param {Object} emphasisStyle\n * @param {module:echarts/model/Model} normalModel\n * @param {module:echarts/model/Model} emphasisModel\n * @param {Object} opt Check `opt` of `setTextStyleCommon` to find other props.\n * @param {string|Function} [opt.defaultText]\n * @param {module:echarts/model/Model} [opt.labelFetcher] Fetch text by\n * `opt.labelFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {number} [opt.labelDataIndex] Fetch text by\n * `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {number} [opt.labelDimIndex] Fetch text by\n * `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {string} [opt.labelProp] Fetch text by\n * `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {Object} [normalSpecified]\n * @param {Object} [emphasisSpecified]\n */\n\n\nfunction setLabelStyle(normalStyle, emphasisStyle, normalModel, emphasisModel, opt, normalSpecified, emphasisSpecified) {\n opt = opt || EMPTY_OBJ;\n var labelFetcher = opt.labelFetcher;\n var labelDataIndex = opt.labelDataIndex;\n var labelDimIndex = opt.labelDimIndex;\n var labelProp = opt.labelProp; // This scenario, `label.normal.show = true; label.emphasis.show = false`,\n // is not supported util someone requests.\n\n var showNormal = normalModel.getShallow('show');\n var showEmphasis = emphasisModel.getShallow('show'); // Consider performance, only fetch label when necessary.\n // If `normal.show` is `false` and `emphasis.show` is `true` and `emphasis.formatter` is not set,\n // label should be displayed, where text is fetched by `normal.formatter` or `opt.defaultText`.\n\n var baseText;\n\n if (showNormal || showEmphasis) {\n if (labelFetcher) {\n baseText = labelFetcher.getFormattedLabel(labelDataIndex, 'normal', null, labelDimIndex, labelProp);\n }\n\n if (baseText == null) {\n baseText = zrUtil.isFunction(opt.defaultText) ? opt.defaultText(labelDataIndex, opt) : opt.defaultText;\n }\n }\n\n var normalStyleText = showNormal ? baseText : null;\n var emphasisStyleText = showEmphasis ? zrUtil.retrieve2(labelFetcher ? labelFetcher.getFormattedLabel(labelDataIndex, 'emphasis', null, labelDimIndex, labelProp) : null, baseText) : null; // Optimize: If style.text is null, text will not be drawn.\n\n if (normalStyleText != null || emphasisStyleText != null) {\n // Always set `textStyle` even if `normalStyle.text` is null, because default\n // values have to be set on `normalStyle`.\n // If we set default values on `emphasisStyle`, consider case:\n // Firstly, `setOption(... label: {normal: {text: null}, emphasis: {show: true}} ...);`\n // Secondly, `setOption(... label: {noraml: {show: true, text: 'abc', color: 'red'} ...);`\n // Then the 'red' will not work on emphasis.\n setTextStyle(normalStyle, normalModel, normalSpecified, opt);\n setTextStyle(emphasisStyle, emphasisModel, emphasisSpecified, opt, true);\n }\n\n normalStyle.text = normalStyleText;\n emphasisStyle.text = emphasisStyleText;\n}\n/**\n * Modify label style manually.\n * Only works after `setLabelStyle` and `setElementHoverStyle` called.\n *\n * @param {module:zrender/src/Element} el\n * @param {Object} [normalStyleProps] optional\n * @param {Object} [emphasisStyleProps] optional\n */\n\n\nfunction modifyLabelStyle(el, normalStyleProps, emphasisStyleProps) {\n var elStyle = el.style;\n\n if (normalStyleProps) {\n rollbackDefaultTextStyle(elStyle);\n el.setStyle(normalStyleProps);\n applyDefaultTextStyle(elStyle);\n }\n\n elStyle = el.__hoverStl;\n\n if (emphasisStyleProps && elStyle) {\n rollbackDefaultTextStyle(elStyle);\n zrUtil.extend(elStyle, emphasisStyleProps);\n applyDefaultTextStyle(elStyle);\n }\n}\n/**\n * Set basic textStyle properties.\n * See more info in `setTextStyleCommon`.\n * @param {Object|module:zrender/graphic/Style} textStyle\n * @param {module:echarts/model/Model} model\n * @param {Object} [specifiedTextStyle] Can be overrided by settings in model.\n * @param {Object} [opt] See `opt` of `setTextStyleCommon`.\n * @param {boolean} [isEmphasis]\n */\n\n\nfunction setTextStyle(textStyle, textStyleModel, specifiedTextStyle, opt, isEmphasis) {\n setTextStyleCommon(textStyle, textStyleModel, opt, isEmphasis);\n specifiedTextStyle && zrUtil.extend(textStyle, specifiedTextStyle); // textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false);\n\n return textStyle;\n}\n/**\n * Set text option in the style.\n * See more info in `setTextStyleCommon`.\n * @deprecated\n * @param {Object} textStyle\n * @param {module:echarts/model/Model} labelModel\n * @param {string|boolean} defaultColor Default text color.\n * If set as false, it will be processed as a emphasis style.\n */\n\n\nfunction setText(textStyle, labelModel, defaultColor) {\n var opt = {\n isRectText: true\n };\n var isEmphasis;\n\n if (defaultColor === false) {\n isEmphasis = true;\n } else {\n // Support setting color as 'auto' to get visual color.\n opt.autoColor = defaultColor;\n }\n\n setTextStyleCommon(textStyle, labelModel, opt, isEmphasis); // textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false);\n}\n/**\n * The uniform entry of set text style, that is, retrieve style definitions\n * from `model` and set to `textStyle` object.\n *\n * Never in merge mode, but in overwrite mode, that is, all of the text style\n * properties will be set. (Consider the states of normal and emphasis and\n * default value can be adopted, merge would make the logic too complicated\n * to manage.)\n *\n * The `textStyle` object can either be a plain object or an instance of\n * `zrender/src/graphic/Style`, and either be the style of normal or emphasis.\n * After this mothod called, the `textStyle` object can then be used in\n * `el.setStyle(textStyle)` or `el.hoverStyle = textStyle`.\n *\n * Default value will be adopted and `insideRollbackOpt` will be created.\n * See `applyDefaultTextStyle` `rollbackDefaultTextStyle` for more details.\n *\n * opt: {\n * disableBox: boolean, Whether diable drawing box of block (outer most).\n * isRectText: boolean,\n * autoColor: string, specify a color when color is 'auto',\n * for textFill, textStroke, textBackgroundColor, and textBorderColor.\n * If autoColor specified, it is used as default textFill.\n * useInsideStyle:\n * `true`: Use inside style (textFill, textStroke, textStrokeWidth)\n * if `textFill` is not specified.\n * `false`: Do not use inside style.\n * `null/undefined`: use inside style if `isRectText` is true and\n * `textFill` is not specified and textPosition contains `'inside'`.\n * forceRich: boolean\n * }\n */\n\n\nfunction setTextStyleCommon(textStyle, textStyleModel, opt, isEmphasis) {\n // Consider there will be abnormal when merge hover style to normal style if given default value.\n opt = opt || EMPTY_OBJ;\n\n if (opt.isRectText) {\n var textPosition;\n\n if (opt.getTextPosition) {\n textPosition = opt.getTextPosition(textStyleModel, isEmphasis);\n } else {\n textPosition = textStyleModel.getShallow('position') || (isEmphasis ? null : 'inside'); // 'outside' is not a valid zr textPostion value, but used\n // in bar series, and magric type should be considered.\n\n textPosition === 'outside' && (textPosition = 'top');\n }\n\n textStyle.textPosition = textPosition;\n textStyle.textOffset = textStyleModel.getShallow('offset');\n var labelRotate = textStyleModel.getShallow('rotate');\n labelRotate != null && (labelRotate *= Math.PI / 180);\n textStyle.textRotation = labelRotate;\n textStyle.textDistance = zrUtil.retrieve2(textStyleModel.getShallow('distance'), isEmphasis ? null : 5);\n }\n\n var ecModel = textStyleModel.ecModel;\n var globalTextStyle = ecModel && ecModel.option.textStyle; // Consider case:\n // {\n // data: [{\n // value: 12,\n // label: {\n // rich: {\n // // no 'a' here but using parent 'a'.\n // }\n // }\n // }],\n // rich: {\n // a: { ... }\n // }\n // }\n\n var richItemNames = getRichItemNames(textStyleModel);\n var richResult;\n\n if (richItemNames) {\n richResult = {};\n\n for (var name in richItemNames) {\n if (richItemNames.hasOwnProperty(name)) {\n // Cascade is supported in rich.\n var richTextStyle = textStyleModel.getModel(['rich', name]); // In rich, never `disableBox`.\n // FIXME: consider `label: {formatter: '{a|xx}', color: 'blue', rich: {a: {}}}`,\n // the default color `'blue'` will not be adopted if no color declared in `rich`.\n // That might confuses users. So probably we should put `textStyleModel` as the\n // root ancestor of the `richTextStyle`. But that would be a break change.\n\n setTokenTextStyle(richResult[name] = {}, richTextStyle, globalTextStyle, opt, isEmphasis);\n }\n }\n }\n\n textStyle.rich = richResult;\n setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isEmphasis, true);\n\n if (opt.forceRich && !opt.textStyle) {\n opt.textStyle = {};\n }\n\n return textStyle;\n} // Consider case:\n// {\n// data: [{\n// value: 12,\n// label: {\n// rich: {\n// // no 'a' here but using parent 'a'.\n// }\n// }\n// }],\n// rich: {\n// a: { ... }\n// }\n// }\n\n\nfunction getRichItemNames(textStyleModel) {\n // Use object to remove duplicated names.\n var richItemNameMap;\n\n while (textStyleModel && textStyleModel !== textStyleModel.ecModel) {\n var rich = (textStyleModel.option || EMPTY_OBJ).rich;\n\n if (rich) {\n richItemNameMap = richItemNameMap || {};\n\n for (var name in rich) {\n if (rich.hasOwnProperty(name)) {\n richItemNameMap[name] = 1;\n }\n }\n }\n\n textStyleModel = textStyleModel.parentModel;\n }\n\n return richItemNameMap;\n}\n\nfunction setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isEmphasis, isBlock) {\n // In merge mode, default value should not be given.\n globalTextStyle = !isEmphasis && globalTextStyle || EMPTY_OBJ;\n textStyle.textFill = getAutoColor(textStyleModel.getShallow('color'), opt) || globalTextStyle.color;\n textStyle.textStroke = getAutoColor(textStyleModel.getShallow('textBorderColor'), opt) || globalTextStyle.textBorderColor;\n textStyle.textStrokeWidth = zrUtil.retrieve2(textStyleModel.getShallow('textBorderWidth'), globalTextStyle.textBorderWidth);\n\n if (!isEmphasis) {\n if (isBlock) {\n textStyle.insideRollbackOpt = opt;\n applyDefaultTextStyle(textStyle);\n } // Set default finally.\n\n\n if (textStyle.textFill == null) {\n textStyle.textFill = opt.autoColor;\n }\n } // Do not use `getFont` here, because merge should be supported, where\n // part of these properties may be changed in emphasis style, and the\n // others should remain their original value got from normal style.\n\n\n textStyle.fontStyle = textStyleModel.getShallow('fontStyle') || globalTextStyle.fontStyle;\n textStyle.fontWeight = textStyleModel.getShallow('fontWeight') || globalTextStyle.fontWeight;\n textStyle.fontSize = textStyleModel.getShallow('fontSize') || globalTextStyle.fontSize;\n textStyle.fontFamily = textStyleModel.getShallow('fontFamily') || globalTextStyle.fontFamily;\n textStyle.textAlign = textStyleModel.getShallow('align');\n textStyle.textVerticalAlign = textStyleModel.getShallow('verticalAlign') || textStyleModel.getShallow('baseline');\n textStyle.textLineHeight = textStyleModel.getShallow('lineHeight');\n textStyle.textWidth = textStyleModel.getShallow('width');\n textStyle.textHeight = textStyleModel.getShallow('height');\n textStyle.textTag = textStyleModel.getShallow('tag');\n\n if (!isBlock || !opt.disableBox) {\n textStyle.textBackgroundColor = getAutoColor(textStyleModel.getShallow('backgroundColor'), opt);\n textStyle.textPadding = textStyleModel.getShallow('padding');\n textStyle.textBorderColor = getAutoColor(textStyleModel.getShallow('borderColor'), opt);\n textStyle.textBorderWidth = textStyleModel.getShallow('borderWidth');\n textStyle.textBorderRadius = textStyleModel.getShallow('borderRadius');\n textStyle.textBoxShadowColor = textStyleModel.getShallow('shadowColor');\n textStyle.textBoxShadowBlur = textStyleModel.getShallow('shadowBlur');\n textStyle.textBoxShadowOffsetX = textStyleModel.getShallow('shadowOffsetX');\n textStyle.textBoxShadowOffsetY = textStyleModel.getShallow('shadowOffsetY');\n }\n\n textStyle.textShadowColor = textStyleModel.getShallow('textShadowColor') || globalTextStyle.textShadowColor;\n textStyle.textShadowBlur = textStyleModel.getShallow('textShadowBlur') || globalTextStyle.textShadowBlur;\n textStyle.textShadowOffsetX = textStyleModel.getShallow('textShadowOffsetX') || globalTextStyle.textShadowOffsetX;\n textStyle.textShadowOffsetY = textStyleModel.getShallow('textShadowOffsetY') || globalTextStyle.textShadowOffsetY;\n}\n\nfunction getAutoColor(color, opt) {\n return color !== 'auto' ? color : opt && opt.autoColor ? opt.autoColor : null;\n}\n/**\n * Give some default value to the input `textStyle` object, based on the current settings\n * in this `textStyle` object.\n *\n * The Scenario:\n * when text position is `inside` and `textFill` is not specified, we show\n * text border by default for better view. But it should be considered that text position\n * might be changed when hovering or being emphasis, where the `insideRollback` is used to\n * restore the style.\n *\n * Usage (& NOTICE):\n * When a style object (eithor plain object or instance of `zrender/src/graphic/Style`) is\n * about to be modified on its text related properties, `rollbackDefaultTextStyle` should\n * be called before the modification and `applyDefaultTextStyle` should be called after that.\n * (For the case that all of the text related properties is reset, like `setTextStyleCommon`\n * does, `rollbackDefaultTextStyle` is not needed to be called).\n */\n\n\nfunction applyDefaultTextStyle(textStyle) {\n var textPosition = textStyle.textPosition;\n var opt = textStyle.insideRollbackOpt;\n var insideRollback;\n\n if (opt && textStyle.textFill == null) {\n var autoColor = opt.autoColor;\n var isRectText = opt.isRectText;\n var useInsideStyle = opt.useInsideStyle;\n var useInsideStyleCache = useInsideStyle !== false && (useInsideStyle === true || isRectText && textPosition // textPosition can be [10, 30]\n && typeof textPosition === 'string' && textPosition.indexOf('inside') >= 0);\n var useAutoColorCache = !useInsideStyleCache && autoColor != null; // All of the props declared in `CACHED_LABEL_STYLE_PROPERTIES` are to be cached.\n\n if (useInsideStyleCache || useAutoColorCache) {\n insideRollback = {\n textFill: textStyle.textFill,\n textStroke: textStyle.textStroke,\n textStrokeWidth: textStyle.textStrokeWidth\n };\n }\n\n if (useInsideStyleCache) {\n textStyle.textFill = '#fff'; // Consider text with #fff overflow its container.\n\n if (textStyle.textStroke == null) {\n textStyle.textStroke = autoColor;\n textStyle.textStrokeWidth == null && (textStyle.textStrokeWidth = 2);\n }\n }\n\n if (useAutoColorCache) {\n textStyle.textFill = autoColor;\n }\n } // Always set `insideRollback`, so that the previous one can be cleared.\n\n\n textStyle.insideRollback = insideRollback;\n}\n/**\n * Consider the case: in a scatter,\n * label: {\n * normal: {position: 'inside'},\n * emphasis: {position: 'top'}\n * }\n * In the normal state, the `textFill` will be set as '#fff' for pretty view (see\n * `applyDefaultTextStyle`), but when switching to emphasis state, the `textFill`\n * should be retured to 'autoColor', but not keep '#fff'.\n */\n\n\nfunction rollbackDefaultTextStyle(style) {\n var insideRollback = style.insideRollback;\n\n if (insideRollback) {\n // Reset all of the props in `CACHED_LABEL_STYLE_PROPERTIES`.\n style.textFill = insideRollback.textFill;\n style.textStroke = insideRollback.textStroke;\n style.textStrokeWidth = insideRollback.textStrokeWidth;\n style.insideRollback = null;\n }\n}\n\nfunction getFont(opt, ecModel) {\n var gTextStyleModel = ecModel && ecModel.getModel('textStyle');\n return zrUtil.trim([// FIXME in node-canvas fontWeight is before fontStyle\n opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow('fontStyle') || '', opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow('fontWeight') || '', (opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow('fontSize') || 12) + 'px', opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow('fontFamily') || 'sans-serif'].join(' '));\n}\n\nfunction animateOrSetProps(isUpdate, el, props, animatableModel, dataIndex, cb) {\n if (typeof dataIndex === 'function') {\n cb = dataIndex;\n dataIndex = null;\n } // Do not check 'animation' property directly here. Consider this case:\n // animation model is an `itemModel`, whose does not have `isAnimationEnabled`\n // but its parent model (`seriesModel`) does.\n\n\n var animationEnabled = animatableModel && animatableModel.isAnimationEnabled();\n\n if (animationEnabled) {\n var postfix = isUpdate ? 'Update' : '';\n var duration = animatableModel.getShallow('animationDuration' + postfix);\n var animationEasing = animatableModel.getShallow('animationEasing' + postfix);\n var animationDelay = animatableModel.getShallow('animationDelay' + postfix);\n\n if (typeof animationDelay === 'function') {\n animationDelay = animationDelay(dataIndex, animatableModel.getAnimationDelayParams ? animatableModel.getAnimationDelayParams(el, dataIndex) : null);\n }\n\n if (typeof duration === 'function') {\n duration = duration(dataIndex);\n }\n\n duration > 0 ? el.animateTo(props, duration, animationDelay || 0, animationEasing, cb, !!cb) : (el.stopAnimation(), el.attr(props), cb && cb());\n } else {\n el.stopAnimation();\n el.attr(props);\n cb && cb();\n }\n}\n/**\n * Update graphic element properties with or without animation according to the\n * configuration in series.\n *\n * Caution: this method will stop previous animation.\n * So do not use this method to one element twice before\n * animation starts, unless you know what you are doing.\n *\n * @param {module:zrender/Element} el\n * @param {Object} props\n * @param {module:echarts/model/Model} [animatableModel]\n * @param {number} [dataIndex]\n * @param {Function} [cb]\n * @example\n * graphic.updateProps(el, {\n * position: [100, 100]\n * }, seriesModel, dataIndex, function () { console.log('Animation done!'); });\n * // Or\n * graphic.updateProps(el, {\n * position: [100, 100]\n * }, seriesModel, function () { console.log('Animation done!'); });\n */\n\n\nfunction updateProps(el, props, animatableModel, dataIndex, cb) {\n animateOrSetProps(true, el, props, animatableModel, dataIndex, cb);\n}\n/**\n * Init graphic element properties with or without animation according to the\n * configuration in series.\n *\n * Caution: this method will stop previous animation.\n * So do not use this method to one element twice before\n * animation starts, unless you know what you are doing.\n *\n * @param {module:zrender/Element} el\n * @param {Object} props\n * @param {module:echarts/model/Model} [animatableModel]\n * @param {number} [dataIndex]\n * @param {Function} cb\n */\n\n\nfunction initProps(el, props, animatableModel, dataIndex, cb) {\n animateOrSetProps(false, el, props, animatableModel, dataIndex, cb);\n}\n/**\n * Get transform matrix of target (param target),\n * in coordinate of its ancestor (param ancestor)\n *\n * @param {module:zrender/mixin/Transformable} target\n * @param {module:zrender/mixin/Transformable} [ancestor]\n */\n\n\nfunction getTransform(target, ancestor) {\n var mat = matrix.identity([]);\n\n while (target && target !== ancestor) {\n matrix.mul(mat, target.getLocalTransform(), mat);\n target = target.parent;\n }\n\n return mat;\n}\n/**\n * Apply transform to an vertex.\n * @param {Array.} target [x, y]\n * @param {Array.|TypedArray.|Object} transform Can be:\n * + Transform matrix: like [1, 0, 0, 1, 0, 0]\n * + {position, rotation, scale}, the same as `zrender/Transformable`.\n * @param {boolean=} invert Whether use invert matrix.\n * @return {Array.} [x, y]\n */\n\n\nfunction applyTransform(target, transform, invert) {\n if (transform && !zrUtil.isArrayLike(transform)) {\n transform = Transformable.getLocalTransform(transform);\n }\n\n if (invert) {\n transform = matrix.invert([], transform);\n }\n\n return vector.applyTransform([], target, transform);\n}\n/**\n * @param {string} direction 'left' 'right' 'top' 'bottom'\n * @param {Array.} transform Transform matrix: like [1, 0, 0, 1, 0, 0]\n * @param {boolean=} invert Whether use invert matrix.\n * @return {string} Transformed direction. 'left' 'right' 'top' 'bottom'\n */\n\n\nfunction transformDirection(direction, transform, invert) {\n // Pick a base, ensure that transform result will not be (0, 0).\n var hBase = transform[4] === 0 || transform[5] === 0 || transform[0] === 0 ? 1 : Math.abs(2 * transform[4] / transform[0]);\n var vBase = transform[4] === 0 || transform[5] === 0 || transform[2] === 0 ? 1 : Math.abs(2 * transform[4] / transform[2]);\n var vertex = [direction === 'left' ? -hBase : direction === 'right' ? hBase : 0, direction === 'top' ? -vBase : direction === 'bottom' ? vBase : 0];\n vertex = applyTransform(vertex, transform, invert);\n return Math.abs(vertex[0]) > Math.abs(vertex[1]) ? vertex[0] > 0 ? 'right' : 'left' : vertex[1] > 0 ? 'bottom' : 'top';\n}\n/**\n * Apply group transition animation from g1 to g2.\n * If no animatableModel, no animation.\n */\n\n\nfunction groupTransition(g1, g2, animatableModel, cb) {\n if (!g1 || !g2) {\n return;\n }\n\n function getElMap(g) {\n var elMap = {};\n g.traverse(function (el) {\n if (!el.isGroup && el.anid) {\n elMap[el.anid] = el;\n }\n });\n return elMap;\n }\n\n function getAnimatableProps(el) {\n var obj = {\n position: vector.clone(el.position),\n rotation: el.rotation\n };\n\n if (el.shape) {\n obj.shape = zrUtil.extend({}, el.shape);\n }\n\n return obj;\n }\n\n var elMap1 = getElMap(g1);\n g2.traverse(function (el) {\n if (!el.isGroup && el.anid) {\n var oldEl = elMap1[el.anid];\n\n if (oldEl) {\n var newProp = getAnimatableProps(el);\n el.attr(getAnimatableProps(oldEl));\n updateProps(el, newProp, animatableModel, el.dataIndex);\n } // else {\n // if (el.previousProps) {\n // graphic.updateProps\n // }\n // }\n\n }\n });\n}\n/**\n * @param {Array.>} points Like: [[23, 44], [53, 66], ...]\n * @param {Object} rect {x, y, width, height}\n * @return {Array.>} A new clipped points.\n */\n\n\nfunction clipPointsByRect(points, rect) {\n // FIXME: this way migth be incorrect when grpahic clipped by a corner.\n // and when element have border.\n return zrUtil.map(points, function (point) {\n var x = point[0];\n x = mathMax(x, rect.x);\n x = mathMin(x, rect.x + rect.width);\n var y = point[1];\n y = mathMax(y, rect.y);\n y = mathMin(y, rect.y + rect.height);\n return [x, y];\n });\n}\n/**\n * @param {Object} targetRect {x, y, width, height}\n * @param {Object} rect {x, y, width, height}\n * @return {Object} A new clipped rect. If rect size are negative, return undefined.\n */\n\n\nfunction clipRectByRect(targetRect, rect) {\n var x = mathMax(targetRect.x, rect.x);\n var x2 = mathMin(targetRect.x + targetRect.width, rect.x + rect.width);\n var y = mathMax(targetRect.y, rect.y);\n var y2 = mathMin(targetRect.y + targetRect.height, rect.y + rect.height); // If the total rect is cliped, nothing, including the border,\n // should be painted. So return undefined.\n\n if (x2 >= x && y2 >= y) {\n return {\n x: x,\n y: y,\n width: x2 - x,\n height: y2 - y\n };\n }\n}\n/**\n * @param {string} iconStr Support 'image://' or 'path://' or direct svg path.\n * @param {Object} [opt] Properties of `module:zrender/Element`, except `style`.\n * @param {Object} [rect] {x, y, width, height}\n * @return {module:zrender/Element} Icon path or image element.\n */\n\n\nfunction createIcon(iconStr, opt, rect) {\n opt = zrUtil.extend({\n rectHover: true\n }, opt);\n var style = opt.style = {\n strokeNoScale: true\n };\n rect = rect || {\n x: -1,\n y: -1,\n width: 2,\n height: 2\n };\n\n if (iconStr) {\n return iconStr.indexOf('image://') === 0 ? (style.image = iconStr.slice(8), zrUtil.defaults(style, rect), new ZImage(opt)) : makePath(iconStr.replace('path://', ''), opt, rect, 'center');\n }\n}\n/**\n * Return `true` if the given line (line `a`) and the given polygon\n * are intersect.\n * Note that we do not count colinear as intersect here because no\n * requirement for that. We could do that if required in future.\n *\n * @param {number} a1x\n * @param {number} a1y\n * @param {number} a2x\n * @param {number} a2y\n * @param {Array.>} points Points of the polygon.\n * @return {boolean}\n */\n\n\nfunction linePolygonIntersect(a1x, a1y, a2x, a2y, points) {\n for (var i = 0, p2 = points[points.length - 1]; i < points.length; i++) {\n var p = points[i];\n\n if (lineLineIntersect(a1x, a1y, a2x, a2y, p[0], p[1], p2[0], p2[1])) {\n return true;\n }\n\n p2 = p;\n }\n}\n/**\n * Return `true` if the given two lines (line `a` and line `b`)\n * are intersect.\n * Note that we do not count colinear as intersect here because no\n * requirement for that. We could do that if required in future.\n *\n * @param {number} a1x\n * @param {number} a1y\n * @param {number} a2x\n * @param {number} a2y\n * @param {number} b1x\n * @param {number} b1y\n * @param {number} b2x\n * @param {number} b2y\n * @return {boolean}\n */\n\n\nfunction lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {\n // let `vec_m` to be `vec_a2 - vec_a1` and `vec_n` to be `vec_b2 - vec_b1`.\n var mx = a2x - a1x;\n var my = a2y - a1y;\n var nx = b2x - b1x;\n var ny = b2y - b1y; // `vec_m` and `vec_n` are parallel iff\n // exising `k` such that `vec_m = k · vec_n`, equivalent to `vec_m X vec_n = 0`.\n\n var nmCrossProduct = crossProduct2d(nx, ny, mx, my);\n\n if (nearZero(nmCrossProduct)) {\n return false;\n } // `vec_m` and `vec_n` are intersect iff\n // existing `p` and `q` in [0, 1] such that `vec_a1 + p * vec_m = vec_b1 + q * vec_n`,\n // such that `q = ((vec_a1 - vec_b1) X vec_m) / (vec_n X vec_m)`\n // and `p = ((vec_a1 - vec_b1) X vec_n) / (vec_n X vec_m)`.\n\n\n var b1a1x = a1x - b1x;\n var b1a1y = a1y - b1y;\n var q = crossProduct2d(b1a1x, b1a1y, mx, my) / nmCrossProduct;\n\n if (q < 0 || q > 1) {\n return false;\n }\n\n var p = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct;\n\n if (p < 0 || p > 1) {\n return false;\n }\n\n return true;\n}\n/**\n * Cross product of 2-dimension vector.\n */\n\n\nfunction crossProduct2d(x1, y1, x2, y2) {\n return x1 * y2 - x2 * y1;\n}\n\nfunction nearZero(val) {\n return val <= 1e-6 && val >= -1e-6;\n} // Register built-in shapes. These shapes might be overwirtten\n// by users, although we do not recommend that.\n\n\nregisterShape('circle', Circle);\nregisterShape('sector', Sector);\nregisterShape('ring', Ring);\nregisterShape('polygon', Polygon);\nregisterShape('polyline', Polyline);\nregisterShape('rect', Rect);\nregisterShape('line', Line);\nregisterShape('bezierCurve', BezierCurve);\nregisterShape('arc', Arc);\nexports.Z2_EMPHASIS_LIFT = Z2_EMPHASIS_LIFT;\nexports.CACHED_LABEL_STYLE_PROPERTIES = CACHED_LABEL_STYLE_PROPERTIES;\nexports.extendShape = extendShape;\nexports.extendPath = extendPath;\nexports.registerShape = registerShape;\nexports.getShapeClass = getShapeClass;\nexports.makePath = makePath;\nexports.makeImage = makeImage;\nexports.mergePath = mergePath;\nexports.resizePath = resizePath;\nexports.subPixelOptimizeLine = subPixelOptimizeLine;\nexports.subPixelOptimizeRect = subPixelOptimizeRect;\nexports.subPixelOptimize = subPixelOptimize;\nexports.setElementHoverStyle = setElementHoverStyle;\nexports.setHoverStyle = setHoverStyle;\nexports.setAsHighDownDispatcher = setAsHighDownDispatcher;\nexports.isHighDownDispatcher = isHighDownDispatcher;\nexports.getHighlightDigit = getHighlightDigit;\nexports.setLabelStyle = setLabelStyle;\nexports.modifyLabelStyle = modifyLabelStyle;\nexports.setTextStyle = setTextStyle;\nexports.setText = setText;\nexports.getFont = getFont;\nexports.updateProps = updateProps;\nexports.initProps = initProps;\nexports.getTransform = getTransform;\nexports.applyTransform = applyTransform;\nexports.transformDirection = transformDirection;\nexports.groupTransition = groupTransition;\nexports.clipPointsByRect = clipPointsByRect;\nexports.clipRectByRect = clipRectByRect;\nexports.createIcon = createIcon;\nexports.linePolygonIntersect = linePolygonIntersect;\nexports.lineLineIntersect = lineLineIntersect;","module.exports = {};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppEchartLine.vue?vue&type=style&index=0&lang=css&\"","\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\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\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 * Language: (Simplified) Chinese.\n */\nvar _default = {\n legend: {\n selector: {\n all: '全选',\n inverse: '反选'\n }\n },\n toolbox: {\n brush: {\n title: {\n rect: '矩形选择',\n polygon: '圈选',\n lineX: '横向选择',\n lineY: '纵向选择',\n keep: '保持选择',\n clear: '清除选择'\n }\n },\n dataView: {\n title: '数据视图',\n lang: ['数据视图', '关闭', '刷新']\n },\n dataZoom: {\n title: {\n zoom: '区域缩放',\n back: '区域缩放还原'\n }\n },\n magicType: {\n title: {\n line: '切换为折线图',\n bar: '切换为柱状图',\n stack: '切换为堆叠',\n tiled: '切换为平铺'\n }\n },\n restore: {\n title: '还原'\n },\n saveAsImage: {\n title: '保存为图片',\n lang: ['右键另存为图片']\n }\n },\n series: {\n typeNames: {\n pie: '饼图',\n bar: '柱状图',\n line: '折线图',\n scatter: '散点图',\n effectScatter: '涟漪散点图',\n radar: '雷达图',\n tree: '树图',\n treemap: '矩形树图',\n boxplot: '箱型图',\n candlestick: 'K线图',\n k: 'K线图',\n heatmap: '热力图',\n map: '地图',\n parallel: '平行坐标图',\n lines: '线图',\n graph: '关系图',\n sankey: '桑基图',\n funnel: '漏斗图',\n gauge: '仪表盘图',\n pictorialBar: '象形柱图',\n themeRiver: '主题河流图',\n sunburst: '旭日图'\n }\n },\n aria: {\n general: {\n withTitle: '这是一个关于“{title}”的图表。',\n withoutTitle: '这是一个图表,'\n },\n series: {\n single: {\n prefix: '',\n withName: '图表类型是{seriesType},表示{seriesName}。',\n withoutName: '图表类型是{seriesType}。'\n },\n multiple: {\n prefix: '它由{seriesCount}个图表系列组成。',\n withName: '第{seriesId}个系列是一个表示{seriesName}的{seriesType},',\n withoutName: '第{seriesId}个系列是一个{seriesType},',\n separator: {\n middle: ';',\n end: '。'\n }\n }\n },\n data: {\n allData: '其数据是——',\n partialData: '其中,前{displayCnt}项是——',\n withName: '{name}的数据是{value}',\n withoutName: '{value}',\n separator: {\n middle: ',',\n end: ''\n }\n }\n }\n};\nmodule.exports = _default;","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\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\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar isTypedArray = _util.isTypedArray;\nvar extend = _util.extend;\nvar assert = _util.assert;\nvar each = _util.each;\nvar isObject = _util.isObject;\n\nvar _model = require(\"../../util/model\");\n\nvar getDataItemValue = _model.getDataItemValue;\nvar isDataItemOption = _model.isDataItemOption;\n\nvar _number = require(\"../../util/number\");\n\nvar parseDate = _number.parseDate;\n\nvar Source = require(\"../Source\");\n\nvar _sourceType = require(\"./sourceType\");\n\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SOURCE_FORMAT_ARRAY_ROWS = _sourceType.SOURCE_FORMAT_ARRAY_ROWS;\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SOURCE_FORMAT_OBJECT_ROWS = _sourceType.SOURCE_FORMAT_OBJECT_ROWS;\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\n// ??? refactor? check the outer usage of data provider.\n// merge with defaultDimValueGetter?\n\n/**\n * If normal array used, mutable chunk size is supported.\n * If typed array used, chunk size must be fixed.\n */\nfunction DefaultDataProvider(source, dimSize) {\n if (!Source.isInstance(source)) {\n source = Source.seriesDataToSource(source);\n }\n\n this._source = source;\n var data = this._data = source.data;\n var sourceFormat = source.sourceFormat; // Typed array. TODO IE10+?\n\n if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\n this._offset = 0;\n this._dimSize = dimSize;\n this._data = data;\n }\n\n var methods = providerMethods[sourceFormat === SOURCE_FORMAT_ARRAY_ROWS ? sourceFormat + '_' + source.seriesLayoutBy : sourceFormat];\n extend(this, methods);\n}\n\nvar providerProto = DefaultDataProvider.prototype; // If data is pure without style configuration\n\nproviderProto.pure = false; // If data is persistent and will not be released after use.\n\nproviderProto.persistent = true; // ???! FIXME legacy data provider do not has method getSource\n\nproviderProto.getSource = function () {\n return this._source;\n};\n\nvar providerMethods = {\n 'arrayRows_column': {\n pure: true,\n count: function () {\n return Math.max(0, this._data.length - this._source.startIndex);\n },\n getItem: function (idx) {\n return this._data[idx + this._source.startIndex];\n },\n appendData: appendDataSimply\n },\n 'arrayRows_row': {\n pure: true,\n count: function () {\n var row = this._data[0];\n return row ? Math.max(0, row.length - this._source.startIndex) : 0;\n },\n getItem: function (idx) {\n idx += this._source.startIndex;\n var item = [];\n var data = this._data;\n\n for (var i = 0; i < data.length; i++) {\n var row = data[i];\n item.push(row ? row[idx] : null);\n }\n\n return item;\n },\n appendData: function () {\n throw new Error('Do not support appendData when set seriesLayoutBy: \"row\".');\n }\n },\n 'objectRows': {\n pure: true,\n count: countSimply,\n getItem: getItemSimply,\n appendData: appendDataSimply\n },\n 'keyedColumns': {\n pure: true,\n count: function () {\n var dimName = this._source.dimensionsDefine[0].name;\n var col = this._data[dimName];\n return col ? col.length : 0;\n },\n getItem: function (idx) {\n var item = [];\n var dims = this._source.dimensionsDefine;\n\n for (var i = 0; i < dims.length; i++) {\n var col = this._data[dims[i].name];\n item.push(col ? col[idx] : null);\n }\n\n return item;\n },\n appendData: function (newData) {\n var data = this._data;\n each(newData, function (newCol, key) {\n var oldCol = data[key] || (data[key] = []);\n\n for (var i = 0; i < (newCol || []).length; i++) {\n oldCol.push(newCol[i]);\n }\n });\n }\n },\n 'original': {\n count: countSimply,\n getItem: getItemSimply,\n appendData: appendDataSimply\n },\n 'typedArray': {\n persistent: false,\n pure: true,\n count: function () {\n return this._data ? this._data.length / this._dimSize : 0;\n },\n getItem: function (idx, out) {\n idx = idx - this._offset;\n out = out || [];\n var offset = this._dimSize * idx;\n\n for (var i = 0; i < this._dimSize; i++) {\n out[i] = this._data[offset + i];\n }\n\n return out;\n },\n appendData: function (newData) {\n this._data = newData;\n },\n // Clean self if data is already used.\n clean: function () {\n // PENDING\n this._offset += this.count();\n this._data = null;\n }\n }\n};\n\nfunction countSimply() {\n return this._data.length;\n}\n\nfunction getItemSimply(idx) {\n return this._data[idx];\n}\n\nfunction appendDataSimply(newData) {\n for (var i = 0; i < newData.length; i++) {\n this._data.push(newData[i]);\n }\n}\n\nvar rawValueGetters = {\n arrayRows: getRawValueSimply,\n objectRows: function (dataItem, dataIndex, dimIndex, dimName) {\n return dimIndex != null ? dataItem[dimName] : dataItem;\n },\n keyedColumns: getRawValueSimply,\n original: function (dataItem, dataIndex, dimIndex, dimName) {\n // FIXME\n // In some case (markpoint in geo (geo-map.html)), dataItem\n // is {coord: [...]}\n var value = getDataItemValue(dataItem);\n return dimIndex == null || !(value instanceof Array) ? value : value[dimIndex];\n },\n typedArray: getRawValueSimply\n};\n\nfunction getRawValueSimply(dataItem, dataIndex, dimIndex, dimName) {\n return dimIndex != null ? dataItem[dimIndex] : dataItem;\n}\n\nvar defaultDimValueGetters = {\n arrayRows: getDimValueSimply,\n objectRows: function (dataItem, dimName, dataIndex, dimIndex) {\n return converDataValue(dataItem[dimName], this._dimensionInfos[dimName]);\n },\n keyedColumns: getDimValueSimply,\n original: function (dataItem, dimName, dataIndex, dimIndex) {\n // Performance sensitive, do not use modelUtil.getDataItemValue.\n // If dataItem is an plain object with no value field, the var `value`\n // will be assigned with the object, but it will be tread correctly\n // in the `convertDataValue`.\n var value = dataItem && (dataItem.value == null ? dataItem : dataItem.value); // If any dataItem is like { value: 10 }\n\n if (!this._rawData.pure && isDataItemOption(dataItem)) {\n this.hasItemOption = true;\n }\n\n return converDataValue(value instanceof Array ? value[dimIndex] // If value is a single number or something else not array.\n : value, this._dimensionInfos[dimName]);\n },\n typedArray: function (dataItem, dimName, dataIndex, dimIndex) {\n return dataItem[dimIndex];\n }\n};\n\nfunction getDimValueSimply(dataItem, dimName, dataIndex, dimIndex) {\n return converDataValue(dataItem[dimIndex], this._dimensionInfos[dimName]);\n}\n/**\n * This helper method convert value in data.\n * @param {string|number|Date} value\n * @param {Object|string} [dimInfo] If string (like 'x'), dimType defaults 'number'.\n * If \"dimInfo.ordinalParseAndSave\", ordinal value can be parsed.\n */\n\n\nfunction converDataValue(value, dimInfo) {\n // Performance sensitive.\n var dimType = dimInfo && dimInfo.type;\n\n if (dimType === 'ordinal') {\n // If given value is a category string\n var ordinalMeta = dimInfo && dimInfo.ordinalMeta;\n return ordinalMeta ? ordinalMeta.parseAndCollect(value) : value;\n }\n\n if (dimType === 'time' // spead up when using timestamp\n && typeof value !== 'number' && value != null && value !== '-') {\n value = +parseDate(value);\n } // dimType defaults 'number'.\n // If dimType is not ordinal and value is null or undefined or NaN or '-',\n // parse to NaN.\n\n\n return value == null || value === '' ? NaN // If string (like '-'), using '+' parse to NaN\n // If object, also parse to NaN\n : +value;\n} // ??? FIXME can these logic be more neat: getRawValue, getRawDataItem,\n// Consider persistent.\n// Caution: why use raw value to display on label or tooltip?\n// A reason is to avoid format. For example time value we do not know\n// how to format is expected. More over, if stack is used, calculated\n// value may be 0.91000000001, which have brings trouble to display.\n// TODO: consider how to treat null/undefined/NaN when display?\n\n/**\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @param {string|number} [dim] dimName or dimIndex\n * @return {Array.|string|number} can be null/undefined.\n */\n\n\nfunction retrieveRawValue(data, dataIndex, dim) {\n if (!data) {\n return;\n } // Consider data may be not persistent.\n\n\n var dataItem = data.getRawDataItem(dataIndex);\n\n if (dataItem == null) {\n return;\n }\n\n var sourceFormat = data.getProvider().getSource().sourceFormat;\n var dimName;\n var dimIndex;\n var dimInfo = data.getDimensionInfo(dim);\n\n if (dimInfo) {\n dimName = dimInfo.name;\n dimIndex = dimInfo.index;\n }\n\n return rawValueGetters[sourceFormat](dataItem, dataIndex, dimIndex, dimName);\n}\n/**\n * Compatible with some cases (in pie, map) like:\n * data: [{name: 'xx', value: 5, selected: true}, ...]\n * where only sourceFormat is 'original' and 'objectRows' supported.\n *\n * ??? TODO\n * Supported detail options in data item when using 'arrayRows'.\n *\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @param {string} attr like 'selected'\n */\n\n\nfunction retrieveRawAttr(data, dataIndex, attr) {\n if (!data) {\n return;\n }\n\n var sourceFormat = data.getProvider().getSource().sourceFormat;\n\n if (sourceFormat !== SOURCE_FORMAT_ORIGINAL && sourceFormat !== SOURCE_FORMAT_OBJECT_ROWS) {\n return;\n }\n\n var dataItem = data.getRawDataItem(dataIndex);\n\n if (sourceFormat === SOURCE_FORMAT_ORIGINAL && !isObject(dataItem)) {\n dataItem = null;\n }\n\n if (dataItem) {\n return dataItem[attr];\n }\n}\n\nexports.DefaultDataProvider = DefaultDataProvider;\nexports.defaultDimValueGetters = defaultDimValueGetters;\nexports.retrieveRawValue = retrieveRawValue;\nexports.retrieveRawAttr = retrieveRawAttr;","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var fixShadow = require(\"./helper/fixShadow\");\n\nvar _constant = require(\"./constant\");\n\nvar ContextCachedBy = _constant.ContextCachedBy;\nvar STYLE_COMMON_PROPS = [['shadowBlur', 0], ['shadowOffsetX', 0], ['shadowOffsetY', 0], ['shadowColor', '#000'], ['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10]]; // var SHADOW_PROPS = STYLE_COMMON_PROPS.slice(0, 4);\n// var LINE_PROPS = STYLE_COMMON_PROPS.slice(4);\n\nvar Style = function (opts) {\n this.extendFrom(opts, false);\n};\n\nfunction createLinearGradient(ctx, obj, rect) {\n var x = obj.x == null ? 0 : obj.x;\n var x2 = obj.x2 == null ? 1 : obj.x2;\n var y = obj.y == null ? 0 : obj.y;\n var y2 = obj.y2 == null ? 0 : obj.y2;\n\n if (!obj.global) {\n x = x * rect.width + rect.x;\n x2 = x2 * rect.width + rect.x;\n y = y * rect.height + rect.y;\n y2 = y2 * rect.height + rect.y;\n } // Fix NaN when rect is Infinity\n\n\n x = isNaN(x) ? 0 : x;\n x2 = isNaN(x2) ? 1 : x2;\n y = isNaN(y) ? 0 : y;\n y2 = isNaN(y2) ? 0 : y2;\n var canvasGradient = ctx.createLinearGradient(x, y, x2, y2);\n return canvasGradient;\n}\n\nfunction createRadialGradient(ctx, obj, rect) {\n var width = rect.width;\n var height = rect.height;\n var min = Math.min(width, height);\n var x = obj.x == null ? 0.5 : obj.x;\n var y = obj.y == null ? 0.5 : obj.y;\n var r = obj.r == null ? 0.5 : obj.r;\n\n if (!obj.global) {\n x = x * width + rect.x;\n y = y * height + rect.y;\n r = r * min;\n }\n\n var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r);\n return canvasGradient;\n}\n\nStyle.prototype = {\n constructor: Style,\n\n /**\n * @type {string}\n */\n fill: '#000',\n\n /**\n * @type {string}\n */\n stroke: null,\n\n /**\n * @type {number}\n */\n opacity: 1,\n\n /**\n * @type {number}\n */\n fillOpacity: null,\n\n /**\n * @type {number}\n */\n strokeOpacity: null,\n\n /**\n * `true` is not supported.\n * `false`/`null`/`undefined` are the same.\n * `false` is used to remove lineDash in some\n * case that `null`/`undefined` can not be set.\n * (e.g., emphasis.lineStyle in echarts)\n * @type {Array.|boolean}\n */\n lineDash: null,\n\n /**\n * @type {number}\n */\n lineDashOffset: 0,\n\n /**\n * @type {number}\n */\n shadowBlur: 0,\n\n /**\n * @type {number}\n */\n shadowOffsetX: 0,\n\n /**\n * @type {number}\n */\n shadowOffsetY: 0,\n\n /**\n * @type {number}\n */\n lineWidth: 1,\n\n /**\n * If stroke ignore scale\n * @type {Boolean}\n */\n strokeNoScale: false,\n // Bounding rect text configuration\n // Not affected by element transform\n\n /**\n * @type {string}\n */\n text: null,\n\n /**\n * If `fontSize` or `fontFamily` exists, `font` will be reset by\n * `fontSize`, `fontStyle`, `fontWeight`, `fontFamily`.\n * So do not visit it directly in upper application (like echarts),\n * but use `contain/text#makeFont` instead.\n * @type {string}\n */\n font: null,\n\n /**\n * The same as font. Use font please.\n * @deprecated\n * @type {string}\n */\n textFont: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * @type {string}\n */\n fontStyle: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * @type {string}\n */\n fontWeight: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * Should be 12 but not '12px'.\n * @type {number}\n */\n fontSize: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * @type {string}\n */\n fontFamily: null,\n\n /**\n * Reserved for special functinality, like 'hr'.\n * @type {string}\n */\n textTag: null,\n\n /**\n * @type {string}\n */\n textFill: '#000',\n\n /**\n * @type {string}\n */\n textStroke: null,\n\n /**\n * @type {number}\n */\n textWidth: null,\n\n /**\n * Only for textBackground.\n * @type {number}\n */\n textHeight: null,\n\n /**\n * textStroke may be set as some color as a default\n * value in upper applicaion, where the default value\n * of textStrokeWidth should be 0 to make sure that\n * user can choose to do not use text stroke.\n * @type {number}\n */\n textStrokeWidth: 0,\n\n /**\n * @type {number}\n */\n textLineHeight: null,\n\n /**\n * 'inside', 'left', 'right', 'top', 'bottom'\n * [x, y]\n * Based on x, y of rect.\n * @type {string|Array.}\n * @default 'inside'\n */\n textPosition: 'inside',\n\n /**\n * If not specified, use the boundingRect of a `displayable`.\n * @type {Object}\n */\n textRect: null,\n\n /**\n * [x, y]\n * @type {Array.}\n */\n textOffset: null,\n\n /**\n * @type {string}\n */\n textAlign: null,\n\n /**\n * @type {string}\n */\n textVerticalAlign: null,\n\n /**\n * @type {number}\n */\n textDistance: 5,\n\n /**\n * @type {string}\n */\n textShadowColor: 'transparent',\n\n /**\n * @type {number}\n */\n textShadowBlur: 0,\n\n /**\n * @type {number}\n */\n textShadowOffsetX: 0,\n\n /**\n * @type {number}\n */\n textShadowOffsetY: 0,\n\n /**\n * @type {string}\n */\n textBoxShadowColor: 'transparent',\n\n /**\n * @type {number}\n */\n textBoxShadowBlur: 0,\n\n /**\n * @type {number}\n */\n textBoxShadowOffsetX: 0,\n\n /**\n * @type {number}\n */\n textBoxShadowOffsetY: 0,\n\n /**\n * Whether transform text.\n * Only available in Path and Image element,\n * where the text is called as `RectText`.\n * @type {boolean}\n */\n transformText: false,\n\n /**\n * Text rotate around position of Path or Image.\n * The origin of the rotation can be specified by `textOrigin`.\n * Only available in Path and Image element,\n * where the text is called as `RectText`.\n */\n textRotation: 0,\n\n /**\n * Text origin of text rotation.\n * Useful in the case like label rotation of circular symbol.\n * Only available in Path and Image element, where the text is called\n * as `RectText` and the element is called as \"host element\".\n * The value can be:\n * + If specified as a coordinate like `[10, 40]`, it is the `[x, y]`\n * base on the left-top corner of the rect of its host element.\n * + If specified as a string `center`, it is the center of the rect of\n * its host element.\n * + By default, this origin is the `textPosition`.\n * @type {string|Array.}\n */\n textOrigin: null,\n\n /**\n * @type {string}\n */\n textBackgroundColor: null,\n\n /**\n * @type {string}\n */\n textBorderColor: null,\n\n /**\n * @type {number}\n */\n textBorderWidth: 0,\n\n /**\n * @type {number}\n */\n textBorderRadius: 0,\n\n /**\n * Can be `2` or `[2, 4]` or `[2, 3, 4, 5]`\n * @type {number|Array.}\n */\n textPadding: null,\n\n /**\n * Text styles for rich text.\n * @type {Object}\n */\n rich: null,\n\n /**\n * {outerWidth, outerHeight, ellipsis, placeholder}\n * @type {Object}\n */\n truncate: null,\n\n /**\n * https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation\n * @type {string}\n */\n blend: null,\n\n /**\n * @param {CanvasRenderingContext2D} ctx\n */\n bind: function (ctx, el, prevEl) {\n var style = this;\n var prevStyle = prevEl && prevEl.style; // If no prevStyle, it means first draw.\n // Only apply cache if the last time cachced by this function.\n\n var notCheckCache = !prevStyle || ctx.__attrCachedBy !== ContextCachedBy.STYLE_BIND;\n ctx.__attrCachedBy = ContextCachedBy.STYLE_BIND;\n\n for (var i = 0; i < STYLE_COMMON_PROPS.length; i++) {\n var prop = STYLE_COMMON_PROPS[i];\n var styleName = prop[0];\n\n if (notCheckCache || style[styleName] !== prevStyle[styleName]) {\n // FIXME Invalid property value will cause style leak from previous element.\n ctx[styleName] = fixShadow(ctx, styleName, style[styleName] || prop[1]);\n }\n }\n\n if (notCheckCache || style.fill !== prevStyle.fill) {\n ctx.fillStyle = style.fill;\n }\n\n if (notCheckCache || style.stroke !== prevStyle.stroke) {\n ctx.strokeStyle = style.stroke;\n }\n\n if (notCheckCache || style.opacity !== prevStyle.opacity) {\n ctx.globalAlpha = style.opacity == null ? 1 : style.opacity;\n }\n\n if (notCheckCache || style.blend !== prevStyle.blend) {\n ctx.globalCompositeOperation = style.blend || 'source-over';\n }\n\n if (this.hasStroke()) {\n var lineWidth = style.lineWidth;\n ctx.lineWidth = lineWidth / (this.strokeNoScale && el && el.getLineScale ? el.getLineScale() : 1);\n }\n },\n hasFill: function () {\n var fill = this.fill;\n return fill != null && fill !== 'none';\n },\n hasStroke: function () {\n var stroke = this.stroke;\n return stroke != null && stroke !== 'none' && this.lineWidth > 0;\n },\n\n /**\n * Extend from other style\n * @param {zrender/graphic/Style} otherStyle\n * @param {boolean} overwrite true: overwrirte any way.\n * false: overwrite only when !target.hasOwnProperty\n * others: overwrite when property is not null/undefined.\n */\n extendFrom: function (otherStyle, overwrite) {\n if (otherStyle) {\n for (var name in otherStyle) {\n if (otherStyle.hasOwnProperty(name) && (overwrite === true || (overwrite === false ? !this.hasOwnProperty(name) : otherStyle[name] != null))) {\n this[name] = otherStyle[name];\n }\n }\n }\n },\n\n /**\n * Batch setting style with a given object\n * @param {Object|string} obj\n * @param {*} [obj]\n */\n set: function (obj, value) {\n if (typeof obj === 'string') {\n this[obj] = value;\n } else {\n this.extendFrom(obj, true);\n }\n },\n\n /**\n * Clone\n * @return {zrender/graphic/Style} [description]\n */\n clone: function () {\n var newStyle = new this.constructor();\n newStyle.extendFrom(this, true);\n return newStyle;\n },\n getGradient: function (ctx, obj, rect) {\n var method = obj.type === 'radial' ? createRadialGradient : createLinearGradient;\n var canvasGradient = method(ctx, obj, rect);\n var colorStops = obj.colorStops;\n\n for (var i = 0; i < colorStops.length; i++) {\n canvasGradient.addColorStop(colorStops[i].offset, colorStops[i].color);\n }\n\n return canvasGradient;\n }\n};\nvar styleProto = Style.prototype;\n\nfor (var i = 0; i < STYLE_COMMON_PROPS.length; i++) {\n var prop = STYLE_COMMON_PROPS[i];\n\n if (!(prop[0] in styleProto)) {\n styleProto[prop[0]] = prop[1];\n }\n} // Provide for others\n\n\nStyle.getGradient = styleProto.getGradient;\nvar _default = Style;\nmodule.exports = _default;","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var dpr = 1; // If in browser environment\n\nif (typeof window !== 'undefined') {\n dpr = Math.max(window.devicePixelRatio || 1, 1);\n}\n/**\n * config默认配置项\n * @exports zrender/config\n * @author Kener (@Kener-林峰, kener.linfeng@gmail.com)\n */\n\n/**\n * Debug log mode:\n * 0: Do nothing, for release.\n * 1: console.error, for debug.\n */\n\n\nvar debugMode = 0; // retina 屏幕优化\n\nvar devicePixelRatio = dpr;\nexports.debugMode = debugMode;\nexports.devicePixelRatio = devicePixelRatio;","\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 createHashMap = _util.createHashMap;\nvar assert = _util.assert;\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\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 OTHER_DIMENSIONS = createHashMap(['tooltip', 'label', 'itemName', 'itemId', 'seriesName']);\n\nfunction summarizeDimensions(data) {\n var summary = {};\n var encode = summary.encode = {};\n var notExtraCoordDimMap = createHashMap();\n var defaultedLabel = [];\n var defaultedTooltip = []; // See the comment of `List.js#userOutput`.\n\n var userOutput = summary.userOutput = {\n dimensionNames: data.dimensions.slice(),\n encode: {}\n };\n each(data.dimensions, function (dimName) {\n var dimItem = data.getDimensionInfo(dimName);\n var coordDim = dimItem.coordDim;\n\n if (coordDim) {\n var coordDimIndex = dimItem.coordDimIndex;\n getOrCreateEncodeArr(encode, coordDim)[coordDimIndex] = dimName;\n\n if (!dimItem.isExtraCoord) {\n notExtraCoordDimMap.set(coordDim, 1); // Use the last coord dim (and label friendly) as default label,\n // because when dataset is used, it is hard to guess which dimension\n // can be value dimension. If both show x, y on label is not look good,\n // and conventionally y axis is focused more.\n\n if (mayLabelDimType(dimItem.type)) {\n defaultedLabel[0] = dimName;\n } // User output encode do not contain generated coords.\n // And it only has index. User can use index to retrieve value from the raw item array.\n\n\n getOrCreateEncodeArr(userOutput.encode, coordDim)[coordDimIndex] = dimItem.index;\n }\n\n if (dimItem.defaultTooltip) {\n defaultedTooltip.push(dimName);\n }\n }\n\n OTHER_DIMENSIONS.each(function (v, otherDim) {\n var encodeArr = getOrCreateEncodeArr(encode, otherDim);\n var dimIndex = dimItem.otherDims[otherDim];\n\n if (dimIndex != null && dimIndex !== false) {\n encodeArr[dimIndex] = dimItem.name;\n }\n });\n });\n var dataDimsOnCoord = [];\n var encodeFirstDimNotExtra = {};\n notExtraCoordDimMap.each(function (v, coordDim) {\n var dimArr = encode[coordDim]; // ??? FIXME extra coord should not be set in dataDimsOnCoord.\n // But should fix the case that radar axes: simplify the logic\n // of `completeDimension`, remove `extraPrefix`.\n\n encodeFirstDimNotExtra[coordDim] = dimArr[0]; // Not necessary to remove duplicate, because a data\n // dim canot on more than one coordDim.\n\n dataDimsOnCoord = dataDimsOnCoord.concat(dimArr);\n });\n summary.dataDimsOnCoord = dataDimsOnCoord;\n summary.encodeFirstDimNotExtra = encodeFirstDimNotExtra;\n var encodeLabel = encode.label; // FIXME `encode.label` is not recommanded, because formatter can not be set\n // in this way. Use label.formatter instead. May be remove this approach someday.\n\n if (encodeLabel && encodeLabel.length) {\n defaultedLabel = encodeLabel.slice();\n }\n\n var encodeTooltip = encode.tooltip;\n\n if (encodeTooltip && encodeTooltip.length) {\n defaultedTooltip = encodeTooltip.slice();\n } else if (!defaultedTooltip.length) {\n defaultedTooltip = defaultedLabel.slice();\n }\n\n encode.defaultedLabel = defaultedLabel;\n encode.defaultedTooltip = defaultedTooltip;\n return summary;\n}\n\nfunction getOrCreateEncodeArr(encode, dim) {\n if (!encode.hasOwnProperty(dim)) {\n encode[dim] = [];\n }\n\n return encode[dim];\n}\n\nfunction getDimensionTypeByAxis(axisType) {\n return axisType === 'category' ? 'ordinal' : axisType === 'time' ? 'time' : 'float';\n}\n\nfunction mayLabelDimType(dimType) {\n // In most cases, ordinal and time do not suitable for label.\n // Ordinal info can be displayed on axis. Time is too long.\n return !(dimType === 'ordinal' || dimType === 'time');\n} // function findTheLastDimMayLabel(data) {\n// // Get last value dim\n// var dimensions = data.dimensions.slice();\n// var valueType;\n// var valueDim;\n// while (dimensions.length && (\n// valueDim = dimensions.pop(),\n// valueType = data.getDimensionInfo(valueDim).type,\n// valueType === 'ordinal' || valueType === 'time'\n// )) {} // jshint ignore:line\n// return valueDim;\n// }\n\n\nexports.OTHER_DIMENSIONS = OTHER_DIMENSIONS;\nexports.summarizeDimensions = summarizeDimensions;\nexports.getDimensionTypeByAxis = getDimensionTypeByAxis;","var Group = require(\"../container/Group\");\n\nvar ZImage = require(\"../graphic/Image\");\n\nvar Text = require(\"../graphic/Text\");\n\nvar Circle = require(\"../graphic/shape/Circle\");\n\nvar Rect = require(\"../graphic/shape/Rect\");\n\nvar Ellipse = require(\"../graphic/shape/Ellipse\");\n\nvar Line = require(\"../graphic/shape/Line\");\n\nvar Path = require(\"../graphic/Path\");\n\nvar Polygon = require(\"../graphic/shape/Polygon\");\n\nvar Polyline = require(\"../graphic/shape/Polyline\");\n\nvar LinearGradient = require(\"../graphic/LinearGradient\");\n\nvar Style = require(\"../graphic/Style\");\n\nvar matrix = require(\"../core/matrix\");\n\nvar _path = require(\"./path\");\n\nvar createFromString = _path.createFromString;\n\nvar _util = require(\"../core/util\");\n\nvar isString = _util.isString;\nvar extend = _util.extend;\nvar defaults = _util.defaults;\nvar trim = _util.trim;\nvar each = _util.each;\n// import RadialGradient from '../graphic/RadialGradient';\n// import Pattern from '../graphic/Pattern';\n// import * as vector from '../core/vector';\n// Most of the values can be separated by comma and/or white space.\nvar DILIMITER_REG = /[\\s,]+/;\n/**\n * For big svg string, this method might be time consuming.\n *\n * @param {string} svg xml string\n * @return {Object} xml root.\n */\n\nfunction parseXML(svg) {\n if (isString(svg)) {\n var parser = new DOMParser();\n svg = parser.parseFromString(svg, 'text/xml');\n } // Document node. If using $.get, doc node may be input.\n\n\n if (svg.nodeType === 9) {\n svg = svg.firstChild;\n } // nodeName of is also 'svg'.\n\n\n while (svg.nodeName.toLowerCase() !== 'svg' || svg.nodeType !== 1) {\n svg = svg.nextSibling;\n }\n\n return svg;\n}\n\nfunction SVGParser() {\n this._defs = {};\n this._root = null;\n this._isDefine = false;\n this._isText = false;\n}\n\nSVGParser.prototype.parse = function (xml, opt) {\n opt = opt || {};\n var svg = parseXML(xml);\n\n if (!svg) {\n throw new Error('Illegal svg');\n }\n\n var root = new Group();\n this._root = root; // parse view port\n\n var viewBox = svg.getAttribute('viewBox') || ''; // If width/height not specified, means \"100%\" of `opt.width/height`.\n // TODO: Other percent value not supported yet.\n\n var width = parseFloat(svg.getAttribute('width') || opt.width);\n var height = parseFloat(svg.getAttribute('height') || opt.height); // If width/height not specified, set as null for output.\n\n isNaN(width) && (width = null);\n isNaN(height) && (height = null); // Apply inline style on svg element.\n\n parseAttributes(svg, root, null, true);\n var child = svg.firstChild;\n\n while (child) {\n this._parseNode(child, root);\n\n child = child.nextSibling;\n }\n\n var viewBoxRect;\n var viewBoxTransform;\n\n if (viewBox) {\n var viewBoxArr = trim(viewBox).split(DILIMITER_REG); // Some invalid case like viewBox: 'none'.\n\n if (viewBoxArr.length >= 4) {\n viewBoxRect = {\n x: parseFloat(viewBoxArr[0] || 0),\n y: parseFloat(viewBoxArr[1] || 0),\n width: parseFloat(viewBoxArr[2]),\n height: parseFloat(viewBoxArr[3])\n };\n }\n }\n\n if (viewBoxRect && width != null && height != null) {\n viewBoxTransform = makeViewBoxTransform(viewBoxRect, width, height);\n\n if (!opt.ignoreViewBox) {\n // If set transform on the output group, it probably bring trouble when\n // some users only intend to show the clipped content inside the viewBox,\n // but not intend to transform the output group. So we keep the output\n // group no transform. If the user intend to use the viewBox as a\n // camera, just set `opt.ignoreViewBox` as `true` and set transfrom\n // manually according to the viewBox info in the output of this method.\n var elRoot = root;\n root = new Group();\n root.add(elRoot);\n elRoot.scale = viewBoxTransform.scale.slice();\n elRoot.position = viewBoxTransform.position.slice();\n }\n } // Some shapes might be overflow the viewport, which should be\n // clipped despite whether the viewBox is used, as the SVG does.\n\n\n if (!opt.ignoreRootClip && width != null && height != null) {\n root.setClipPath(new Rect({\n shape: {\n x: 0,\n y: 0,\n width: width,\n height: height\n }\n }));\n } // Set width/height on group just for output the viewport size.\n\n\n return {\n root: root,\n width: width,\n height: height,\n viewBoxRect: viewBoxRect,\n viewBoxTransform: viewBoxTransform\n };\n};\n\nSVGParser.prototype._parseNode = function (xmlNode, parentGroup) {\n var nodeName = xmlNode.nodeName.toLowerCase(); // TODO\n // support in svg, where nodeName is 'style',\n // CSS classes is defined globally wherever the style tags are declared.\n\n if (nodeName === 'defs') {\n // define flag\n this._isDefine = true;\n } else if (nodeName === 'text') {\n this._isText = true;\n }\n\n var el;\n\n if (this._isDefine) {\n var parser = defineParsers[nodeName];\n\n if (parser) {\n var def = parser.call(this, xmlNode);\n var id = xmlNode.getAttribute('id');\n\n if (id) {\n this._defs[id] = def;\n }\n }\n } else {\n var parser = nodeParsers[nodeName];\n\n if (parser) {\n el = parser.call(this, xmlNode, parentGroup);\n parentGroup.add(el);\n }\n }\n\n var child = xmlNode.firstChild;\n\n while (child) {\n if (child.nodeType === 1) {\n this._parseNode(child, el);\n } // Is text\n\n\n if (child.nodeType === 3 && this._isText) {\n this._parseText(child, el);\n }\n\n child = child.nextSibling;\n } // Quit define\n\n\n if (nodeName === 'defs') {\n this._isDefine = false;\n } else if (nodeName === 'text') {\n this._isText = false;\n }\n};\n\nSVGParser.prototype._parseText = function (xmlNode, parentGroup) {\n if (xmlNode.nodeType === 1) {\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n this._textX += parseFloat(dx);\n this._textY += parseFloat(dy);\n }\n\n var text = new Text({\n style: {\n text: xmlNode.textContent,\n transformText: true\n },\n position: [this._textX || 0, this._textY || 0]\n });\n inheritStyle(parentGroup, text);\n parseAttributes(xmlNode, text, this._defs);\n var fontSize = text.style.fontSize;\n\n if (fontSize && fontSize < 9) {\n // PENDING\n text.style.fontSize = 9;\n text.scale = text.scale || [1, 1];\n text.scale[0] *= fontSize / 9;\n text.scale[1] *= fontSize / 9;\n }\n\n var rect = text.getBoundingRect();\n this._textX += rect.width;\n parentGroup.add(text);\n return text;\n};\n\nvar nodeParsers = {\n 'g': function (xmlNode, parentGroup) {\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n return g;\n },\n 'rect': function (xmlNode, parentGroup) {\n var rect = new Rect();\n inheritStyle(parentGroup, rect);\n parseAttributes(xmlNode, rect, this._defs);\n rect.setShape({\n x: parseFloat(xmlNode.getAttribute('x') || 0),\n y: parseFloat(xmlNode.getAttribute('y') || 0),\n width: parseFloat(xmlNode.getAttribute('width') || 0),\n height: parseFloat(xmlNode.getAttribute('height') || 0)\n }); // console.log(xmlNode.getAttribute('transform'));\n // console.log(rect.transform);\n\n return rect;\n },\n 'circle': function (xmlNode, parentGroup) {\n var circle = new Circle();\n inheritStyle(parentGroup, circle);\n parseAttributes(xmlNode, circle, this._defs);\n circle.setShape({\n cx: parseFloat(xmlNode.getAttribute('cx') || 0),\n cy: parseFloat(xmlNode.getAttribute('cy') || 0),\n r: parseFloat(xmlNode.getAttribute('r') || 0)\n });\n return circle;\n },\n 'line': function (xmlNode, parentGroup) {\n var line = new Line();\n inheritStyle(parentGroup, line);\n parseAttributes(xmlNode, line, this._defs);\n line.setShape({\n x1: parseFloat(xmlNode.getAttribute('x1') || 0),\n y1: parseFloat(xmlNode.getAttribute('y1') || 0),\n x2: parseFloat(xmlNode.getAttribute('x2') || 0),\n y2: parseFloat(xmlNode.getAttribute('y2') || 0)\n });\n return line;\n },\n 'ellipse': function (xmlNode, parentGroup) {\n var ellipse = new Ellipse();\n inheritStyle(parentGroup, ellipse);\n parseAttributes(xmlNode, ellipse, this._defs);\n ellipse.setShape({\n cx: parseFloat(xmlNode.getAttribute('cx') || 0),\n cy: parseFloat(xmlNode.getAttribute('cy') || 0),\n rx: parseFloat(xmlNode.getAttribute('rx') || 0),\n ry: parseFloat(xmlNode.getAttribute('ry') || 0)\n });\n return ellipse;\n },\n 'polygon': function (xmlNode, parentGroup) {\n var points = xmlNode.getAttribute('points');\n\n if (points) {\n points = parsePoints(points);\n }\n\n var polygon = new Polygon({\n shape: {\n points: points || []\n }\n });\n inheritStyle(parentGroup, polygon);\n parseAttributes(xmlNode, polygon, this._defs);\n return polygon;\n },\n 'polyline': function (xmlNode, parentGroup) {\n var path = new Path();\n inheritStyle(parentGroup, path);\n parseAttributes(xmlNode, path, this._defs);\n var points = xmlNode.getAttribute('points');\n\n if (points) {\n points = parsePoints(points);\n }\n\n var polyline = new Polyline({\n shape: {\n points: points || []\n }\n });\n return polyline;\n },\n 'image': function (xmlNode, parentGroup) {\n var img = new ZImage();\n inheritStyle(parentGroup, img);\n parseAttributes(xmlNode, img, this._defs);\n img.setStyle({\n image: xmlNode.getAttribute('xlink:href'),\n x: xmlNode.getAttribute('x'),\n y: xmlNode.getAttribute('y'),\n width: xmlNode.getAttribute('width'),\n height: xmlNode.getAttribute('height')\n });\n return img;\n },\n 'text': function (xmlNode, parentGroup) {\n var x = xmlNode.getAttribute('x') || 0;\n var y = xmlNode.getAttribute('y') || 0;\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n this._textX = parseFloat(x) + parseFloat(dx);\n this._textY = parseFloat(y) + parseFloat(dy);\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n return g;\n },\n 'tspan': function (xmlNode, parentGroup) {\n var x = xmlNode.getAttribute('x');\n var y = xmlNode.getAttribute('y');\n\n if (x != null) {\n // new offset x\n this._textX = parseFloat(x);\n }\n\n if (y != null) {\n // new offset y\n this._textY = parseFloat(y);\n }\n\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n this._textX += dx;\n this._textY += dy;\n return g;\n },\n 'path': function (xmlNode, parentGroup) {\n // TODO svg fill rule\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule\n // path.style.globalCompositeOperation = 'xor';\n var d = xmlNode.getAttribute('d') || ''; // Performance sensitive.\n\n var path = createFromString(d);\n inheritStyle(parentGroup, path);\n parseAttributes(xmlNode, path, this._defs);\n return path;\n }\n};\nvar defineParsers = {\n 'lineargradient': function (xmlNode) {\n var x1 = parseInt(xmlNode.getAttribute('x1') || 0, 10);\n var y1 = parseInt(xmlNode.getAttribute('y1') || 0, 10);\n var x2 = parseInt(xmlNode.getAttribute('x2') || 10, 10);\n var y2 = parseInt(xmlNode.getAttribute('y2') || 0, 10);\n var gradient = new LinearGradient(x1, y1, x2, y2);\n\n _parseGradientColorStops(xmlNode, gradient);\n\n return gradient;\n },\n 'radialgradient': function (xmlNode) {}\n};\n\nfunction _parseGradientColorStops(xmlNode, gradient) {\n var stop = xmlNode.firstChild;\n\n while (stop) {\n if (stop.nodeType === 1) {\n var offset = stop.getAttribute('offset');\n\n if (offset.indexOf('%') > 0) {\n // percentage\n offset = parseInt(offset, 10) / 100;\n } else if (offset) {\n // number from 0 to 1\n offset = parseFloat(offset);\n } else {\n offset = 0;\n }\n\n var stopColor = stop.getAttribute('stop-color') || '#000000';\n gradient.addColorStop(offset, stopColor);\n }\n\n stop = stop.nextSibling;\n }\n}\n\nfunction inheritStyle(parent, child) {\n if (parent && parent.__inheritedStyle) {\n if (!child.__inheritedStyle) {\n child.__inheritedStyle = {};\n }\n\n defaults(child.__inheritedStyle, parent.__inheritedStyle);\n }\n}\n\nfunction parsePoints(pointsString) {\n var list = trim(pointsString).split(DILIMITER_REG);\n var points = [];\n\n for (var i = 0; i < list.length; i += 2) {\n var x = parseFloat(list[i]);\n var y = parseFloat(list[i + 1]);\n points.push([x, y]);\n }\n\n return points;\n}\n\nvar attributesMap = {\n 'fill': 'fill',\n 'stroke': 'stroke',\n 'stroke-width': 'lineWidth',\n 'opacity': 'opacity',\n 'fill-opacity': 'fillOpacity',\n 'stroke-opacity': 'strokeOpacity',\n 'stroke-dasharray': 'lineDash',\n 'stroke-dashoffset': 'lineDashOffset',\n 'stroke-linecap': 'lineCap',\n 'stroke-linejoin': 'lineJoin',\n 'stroke-miterlimit': 'miterLimit',\n 'font-family': 'fontFamily',\n 'font-size': 'fontSize',\n 'font-style': 'fontStyle',\n 'font-weight': 'fontWeight',\n 'text-align': 'textAlign',\n 'alignment-baseline': 'textBaseline'\n};\n\nfunction parseAttributes(xmlNode, el, defs, onlyInlineStyle) {\n var zrStyle = el.__inheritedStyle || {};\n var isTextEl = el.type === 'text'; // TODO Shadow\n\n if (xmlNode.nodeType === 1) {\n parseTransformAttribute(xmlNode, el);\n extend(zrStyle, parseStyleAttribute(xmlNode));\n\n if (!onlyInlineStyle) {\n for (var svgAttrName in attributesMap) {\n if (attributesMap.hasOwnProperty(svgAttrName)) {\n var attrValue = xmlNode.getAttribute(svgAttrName);\n\n if (attrValue != null) {\n zrStyle[attributesMap[svgAttrName]] = attrValue;\n }\n }\n }\n }\n }\n\n var elFillProp = isTextEl ? 'textFill' : 'fill';\n var elStrokeProp = isTextEl ? 'textStroke' : 'stroke';\n el.style = el.style || new Style();\n var elStyle = el.style;\n zrStyle.fill != null && elStyle.set(elFillProp, getPaint(zrStyle.fill, defs));\n zrStyle.stroke != null && elStyle.set(elStrokeProp, getPaint(zrStyle.stroke, defs));\n each(['lineWidth', 'opacity', 'fillOpacity', 'strokeOpacity', 'miterLimit', 'fontSize'], function (propName) {\n var elPropName = propName === 'lineWidth' && isTextEl ? 'textStrokeWidth' : propName;\n zrStyle[propName] != null && elStyle.set(elPropName, parseFloat(zrStyle[propName]));\n });\n\n if (!zrStyle.textBaseline || zrStyle.textBaseline === 'auto') {\n zrStyle.textBaseline = 'alphabetic';\n }\n\n if (zrStyle.textBaseline === 'alphabetic') {\n zrStyle.textBaseline = 'bottom';\n }\n\n if (zrStyle.textAlign === 'start') {\n zrStyle.textAlign = 'left';\n }\n\n if (zrStyle.textAlign === 'end') {\n zrStyle.textAlign = 'right';\n }\n\n each(['lineDashOffset', 'lineCap', 'lineJoin', 'fontWeight', 'fontFamily', 'fontStyle', 'textAlign', 'textBaseline'], function (propName) {\n zrStyle[propName] != null && elStyle.set(propName, zrStyle[propName]);\n });\n\n if (zrStyle.lineDash) {\n el.style.lineDash = trim(zrStyle.lineDash).split(DILIMITER_REG);\n }\n\n if (elStyle[elStrokeProp] && elStyle[elStrokeProp] !== 'none') {\n // enable stroke\n el[elStrokeProp] = true;\n }\n\n el.__inheritedStyle = zrStyle;\n}\n\nvar urlRegex = /url\\(\\s*#(.*?)\\)/;\n\nfunction getPaint(str, defs) {\n // if (str === 'none') {\n // return;\n // }\n var urlMatch = defs && str && str.match(urlRegex);\n\n if (urlMatch) {\n var url = trim(urlMatch[1]);\n var def = defs[url];\n return def;\n }\n\n return str;\n}\n\nvar transformRegex = /(translate|scale|rotate|skewX|skewY|matrix)\\(([\\-\\s0-9\\.e,]*)\\)/g;\n\nfunction parseTransformAttribute(xmlNode, node) {\n var transform = xmlNode.getAttribute('transform');\n\n if (transform) {\n transform = transform.replace(/,/g, ' ');\n var m = null;\n var transformOps = [];\n transform.replace(transformRegex, function (str, type, value) {\n transformOps.push(type, value);\n });\n\n for (var i = transformOps.length - 1; i > 0; i -= 2) {\n var value = transformOps[i];\n var type = transformOps[i - 1];\n m = m || matrix.create();\n\n switch (type) {\n case 'translate':\n value = trim(value).split(DILIMITER_REG);\n matrix.translate(m, m, [parseFloat(value[0]), parseFloat(value[1] || 0)]);\n break;\n\n case 'scale':\n value = trim(value).split(DILIMITER_REG);\n matrix.scale(m, m, [parseFloat(value[0]), parseFloat(value[1] || value[0])]);\n break;\n\n case 'rotate':\n value = trim(value).split(DILIMITER_REG);\n matrix.rotate(m, m, parseFloat(value[0]));\n break;\n\n case 'skew':\n value = trim(value).split(DILIMITER_REG);\n console.warn('Skew transform is not supported yet');\n break;\n\n case 'matrix':\n var value = trim(value).split(DILIMITER_REG);\n m[0] = parseFloat(value[0]);\n m[1] = parseFloat(value[1]);\n m[2] = parseFloat(value[2]);\n m[3] = parseFloat(value[3]);\n m[4] = parseFloat(value[4]);\n m[5] = parseFloat(value[5]);\n break;\n }\n }\n\n node.setLocalTransform(m);\n }\n} // Value may contain space.\n\n\nvar styleRegex = /([^\\s:;]+)\\s*:\\s*([^:;]+)/g;\n\nfunction parseStyleAttribute(xmlNode) {\n var style = xmlNode.getAttribute('style');\n var result = {};\n\n if (!style) {\n return result;\n }\n\n var styleList = {};\n styleRegex.lastIndex = 0;\n var styleRegResult;\n\n while ((styleRegResult = styleRegex.exec(style)) != null) {\n styleList[styleRegResult[1]] = styleRegResult[2];\n }\n\n for (var svgAttrName in attributesMap) {\n if (attributesMap.hasOwnProperty(svgAttrName) && styleList[svgAttrName] != null) {\n result[attributesMap[svgAttrName]] = styleList[svgAttrName];\n }\n }\n\n return result;\n}\n/**\n * @param {Array.} viewBoxRect\n * @param {number} width\n * @param {number} height\n * @return {Object} {scale, position}\n */\n\n\nfunction makeViewBoxTransform(viewBoxRect, width, height) {\n var scaleX = width / viewBoxRect.width;\n var scaleY = height / viewBoxRect.height;\n var scale = Math.min(scaleX, scaleY); // preserveAspectRatio 'xMidYMid'\n\n var viewBoxScale = [scale, scale];\n var viewBoxPosition = [-(viewBoxRect.x + viewBoxRect.width / 2) * scale + width / 2, -(viewBoxRect.y + viewBoxRect.height / 2) * scale + height / 2];\n return {\n scale: viewBoxScale,\n position: viewBoxPosition\n };\n}\n/**\n * @param {string|XMLElement} xml\n * @param {Object} [opt]\n * @param {number} [opt.width] Default width if svg width not specified or is a percent value.\n * @param {number} [opt.height] Default height if svg height not specified or is a percent value.\n * @param {boolean} [opt.ignoreViewBox]\n * @param {boolean} [opt.ignoreRootClip]\n * @return {Object} result:\n * {\n * root: Group, The root of the the result tree of zrender shapes,\n * width: number, the viewport width of the SVG,\n * height: number, the viewport height of the SVG,\n * viewBoxRect: {x, y, width, height}, the declared viewBox rect of the SVG, if exists,\n * viewBoxTransform: the {scale, position} calculated by viewBox and viewport, is exists.\n * }\n */\n\n\nfunction parseSVG(xml, opt) {\n var parser = new SVGParser();\n return parser.parse(xml, opt);\n}\n\nexports.parseXML = parseXML;\nexports.makeViewBoxTransform = makeViewBoxTransform;\nexports.parseSVG = parseSVG;","var util = require(\"../core/util\");\n\nvar _event = require(\"../core/event\");\n\nvar Dispatcher = _event.Dispatcher;\n\nvar requestAnimationFrame = require(\"./requestAnimationFrame\");\n\nvar Animator = require(\"./Animator\");\n\n/**\n * Animation main class, dispatch and manage all animation controllers\n *\n * @module zrender/animation/Animation\n * @author pissang(https://github.com/pissang)\n */\n// TODO Additive animation\n// http://iosoteric.com/additive-animations-animatewithduration-in-ios-8/\n// https://developer.apple.com/videos/wwdc2014/#236\n\n/**\n * @typedef {Object} IZRenderStage\n * @property {Function} update\n */\n\n/**\n * @alias module:zrender/animation/Animation\n * @constructor\n * @param {Object} [options]\n * @param {Function} [options.onframe]\n * @param {IZRenderStage} [options.stage]\n * @example\n * var animation = new Animation();\n * var obj = {\n * x: 100,\n * y: 100\n * };\n * animation.animate(node.position)\n * .when(1000, {\n * x: 500,\n * y: 500\n * })\n * .when(2000, {\n * x: 100,\n * y: 100\n * })\n * .start('spline');\n */\nvar Animation = function (options) {\n options = options || {};\n this.stage = options.stage || {};\n\n this.onframe = options.onframe || function () {}; // private properties\n\n\n this._clips = [];\n this._running = false;\n this._time;\n this._pausedTime;\n this._pauseStart;\n this._paused = false;\n Dispatcher.call(this);\n};\n\nAnimation.prototype = {\n constructor: Animation,\n\n /**\n * Add clip\n * @param {module:zrender/animation/Clip} clip\n */\n addClip: function (clip) {\n this._clips.push(clip);\n },\n\n /**\n * Add animator\n * @param {module:zrender/animation/Animator} animator\n */\n addAnimator: function (animator) {\n animator.animation = this;\n var clips = animator.getClips();\n\n for (var i = 0; i < clips.length; i++) {\n this.addClip(clips[i]);\n }\n },\n\n /**\n * Delete animation clip\n * @param {module:zrender/animation/Clip} clip\n */\n removeClip: function (clip) {\n var idx = util.indexOf(this._clips, clip);\n\n if (idx >= 0) {\n this._clips.splice(idx, 1);\n }\n },\n\n /**\n * Delete animation clip\n * @param {module:zrender/animation/Animator} animator\n */\n removeAnimator: function (animator) {\n var clips = animator.getClips();\n\n for (var i = 0; i < clips.length; i++) {\n this.removeClip(clips[i]);\n }\n\n animator.animation = null;\n },\n _update: function () {\n var time = new Date().getTime() - this._pausedTime;\n\n var delta = time - this._time;\n var clips = this._clips;\n var len = clips.length;\n var deferredEvents = [];\n var deferredClips = [];\n\n for (var i = 0; i < len; i++) {\n var clip = clips[i];\n var e = clip.step(time, delta); // Throw out the events need to be called after\n // stage.update, like destroy\n\n if (e) {\n deferredEvents.push(e);\n deferredClips.push(clip);\n }\n } // Remove the finished clip\n\n\n for (var i = 0; i < len;) {\n if (clips[i]._needsRemove) {\n clips[i] = clips[len - 1];\n clips.pop();\n len--;\n } else {\n i++;\n }\n }\n\n len = deferredEvents.length;\n\n for (var i = 0; i < len; i++) {\n deferredClips[i].fire(deferredEvents[i]);\n }\n\n this._time = time;\n this.onframe(delta); // 'frame' should be triggered before stage, because upper application\n // depends on the sequence (e.g., echarts-stream and finish\n // event judge)\n\n this.trigger('frame', delta);\n\n if (this.stage.update) {\n this.stage.update();\n }\n },\n _startLoop: function () {\n var self = this;\n this._running = true;\n\n function step() {\n if (self._running) {\n requestAnimationFrame(step);\n !self._paused && self._update();\n }\n }\n\n requestAnimationFrame(step);\n },\n\n /**\n * Start animation.\n */\n start: function () {\n this._time = new Date().getTime();\n this._pausedTime = 0;\n\n this._startLoop();\n },\n\n /**\n * Stop animation.\n */\n stop: function () {\n this._running = false;\n },\n\n /**\n * Pause animation.\n */\n pause: function () {\n if (!this._paused) {\n this._pauseStart = new Date().getTime();\n this._paused = true;\n }\n },\n\n /**\n * Resume animation.\n */\n resume: function () {\n if (this._paused) {\n this._pausedTime += new Date().getTime() - this._pauseStart;\n this._paused = false;\n }\n },\n\n /**\n * Clear animation.\n */\n clear: function () {\n this._clips = [];\n },\n\n /**\n * Whether animation finished.\n */\n isFinished: function () {\n return !this._clips.length;\n },\n\n /**\n * Creat animator for a target, whose props can be animated.\n *\n * @param {Object} target\n * @param {Object} options\n * @param {boolean} [options.loop=false] Whether loop animation.\n * @param {Function} [options.getter=null] Get value from target.\n * @param {Function} [options.setter=null] Set value to target.\n * @return {module:zrender/animation/Animation~Animator}\n */\n // TODO Gap\n animate: function (target, options) {\n options = options || {};\n var animator = new Animator(target, options.loop, options.getter, options.setter);\n this.addAnimator(animator);\n return animator;\n }\n};\nutil.mixin(Animation, Dispatcher);\nvar _default = Animation;\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 List = require(\"../../data/List\");\n\nvar createDimensions = require(\"../../data/helper/createDimensions\");\n\nvar _sourceType = require(\"../../data/helper/sourceType\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\n\nvar _dimensionHelper = require(\"../../data/helper/dimensionHelper\");\n\nvar getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;\n\nvar _model = require(\"../../util/model\");\n\nvar getDataItemValue = _model.getDataItemValue;\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar _referHelper = require(\"../../model/referHelper\");\n\nvar getCoordSysInfoBySeries = _referHelper.getCoordSysInfoBySeries;\n\nvar Source = require(\"../../data/Source\");\n\nvar _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar enableDataStack = _dataStackHelper.enableDataStack;\n\nvar _sourceHelper = require(\"../../data/helper/sourceHelper\");\n\nvar makeSeriesEncodeForAxisCoordSys = _sourceHelper.makeSeriesEncodeForAxisCoordSys;\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 * @param {module:echarts/data/Source|Array} source Or raw data.\n * @param {module:echarts/model/Series} seriesModel\n * @param {Object} [opt]\n * @param {string} [opt.generateCoord]\n * @param {boolean} [opt.useEncodeDefaulter]\n */\nfunction createListFromArray(source, seriesModel, opt) {\n opt = opt || {};\n\n if (!Source.isInstance(source)) {\n source = Source.seriesDataToSource(source);\n }\n\n var coordSysName = seriesModel.get('coordinateSystem');\n var registeredCoordSys = CoordinateSystem.get(coordSysName);\n var coordSysInfo = getCoordSysInfoBySeries(seriesModel);\n var coordSysDimDefs;\n\n if (coordSysInfo) {\n coordSysDimDefs = zrUtil.map(coordSysInfo.coordSysDims, function (dim) {\n var dimInfo = {\n name: dim\n };\n var axisModel = coordSysInfo.axisMap.get(dim);\n\n if (axisModel) {\n var axisType = axisModel.get('type');\n dimInfo.type = getDimensionTypeByAxis(axisType); // dimInfo.stackable = isStackable(axisType);\n }\n\n return dimInfo;\n });\n }\n\n if (!coordSysDimDefs) {\n // Get dimensions from registered coordinate system\n coordSysDimDefs = registeredCoordSys && (registeredCoordSys.getDimensionsInfo ? registeredCoordSys.getDimensionsInfo() : registeredCoordSys.dimensions.slice()) || ['x', 'y'];\n }\n\n var dimInfoList = createDimensions(source, {\n coordDimensions: coordSysDimDefs,\n generateCoord: opt.generateCoord,\n encodeDefaulter: opt.useEncodeDefaulter ? zrUtil.curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel) : null\n });\n var firstCategoryDimIndex;\n var hasNameEncode;\n coordSysInfo && zrUtil.each(dimInfoList, function (dimInfo, dimIndex) {\n var coordDim = dimInfo.coordDim;\n var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim);\n\n if (categoryAxisModel) {\n if (firstCategoryDimIndex == null) {\n firstCategoryDimIndex = dimIndex;\n }\n\n dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta();\n }\n\n if (dimInfo.otherDims.itemName != null) {\n hasNameEncode = true;\n }\n });\n\n if (!hasNameEncode && firstCategoryDimIndex != null) {\n dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0;\n }\n\n var stackCalculationInfo = enableDataStack(seriesModel, dimInfoList);\n var list = new List(dimInfoList, seriesModel);\n list.setCalculationInfo(stackCalculationInfo);\n var dimValueGetter = firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source) ? function (itemOpt, dimName, dataIndex, dimIndex) {\n // Use dataIndex as ordinal value in categoryAxis\n return dimIndex === firstCategoryDimIndex ? dataIndex : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex);\n } : null;\n list.hasItemOption = false;\n list.initData(source, null, dimValueGetter);\n return list;\n}\n\nfunction isNeedCompleteOrdinalData(source) {\n if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n var sampleItem = firstDataNotNull(source.data || []);\n return sampleItem != null && !zrUtil.isArray(getDataItemValue(sampleItem));\n }\n}\n\nfunction firstDataNotNull(data) {\n var i = 0;\n\n while (i < data.length && data[i] == null) {\n i++;\n }\n\n return data[i];\n}\n\nvar _default = createListFromArray;\nmodule.exports = _default;","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var Path = require(\"../graphic/Path\");\n\nvar PathProxy = require(\"../core/PathProxy\");\n\nvar transformPath = require(\"./transformPath\");\n\n// command chars\n// var cc = [\n// 'm', 'M', 'l', 'L', 'v', 'V', 'h', 'H', 'z', 'Z',\n// 'c', 'C', 'q', 'Q', 't', 'T', 's', 'S', 'a', 'A'\n// ];\nvar mathSqrt = Math.sqrt;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI = Math.PI;\n\nvar vMag = function (v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n};\n\nvar vRatio = function (u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n};\n\nvar vAngle = function (u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n};\n\nfunction processArc(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) {\n var psi = psiDeg * (PI / 180.0);\n var xp = mathCos(psi) * (x1 - x2) / 2.0 + mathSin(psi) * (y1 - y2) / 2.0;\n var yp = -1 * mathSin(psi) * (x1 - x2) / 2.0 + mathCos(psi) * (y1 - y2) / 2.0;\n var lambda = xp * xp / (rx * rx) + yp * yp / (ry * ry);\n\n if (lambda > 1) {\n rx *= mathSqrt(lambda);\n ry *= mathSqrt(lambda);\n }\n\n var f = (fa === fs ? -1 : 1) * mathSqrt((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) / (rx * rx * (yp * yp) + ry * ry * (xp * xp))) || 0;\n var cxp = f * rx * yp / ry;\n var cyp = f * -ry * xp / rx;\n var cx = (x1 + x2) / 2.0 + mathCos(psi) * cxp - mathSin(psi) * cyp;\n var cy = (y1 + y2) / 2.0 + mathSin(psi) * cxp + mathCos(psi) * cyp;\n var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n var dTheta = vAngle(u, v);\n\n if (vRatio(u, v) <= -1) {\n dTheta = PI;\n }\n\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n\n if (fs === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * PI;\n }\n\n if (fs === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * PI;\n }\n\n path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs);\n}\n\nvar commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig; // Consider case:\n// (1) delimiter can be comma or space, where continuous commas\n// or spaces should be seen as one comma.\n// (2) value can be like:\n// '2e-4', 'l.5.9' (ignore 0), 'M-10-10', 'l-2.43e-1,34.9983',\n// 'l-.5E1,54', '121-23-44-11' (no delimiter)\n\nvar numberReg = /-?([0-9]*\\.)?[0-9]+([eE]-?[0-9]+)?/g; // var valueSplitReg = /[\\s,]+/;\n\nfunction createPathProxyFromString(data) {\n if (!data) {\n return new PathProxy();\n } // var data = data.replace(/-/g, ' -')\n // .replace(/ /g, ' ')\n // .replace(/ /g, ',')\n // .replace(/,,/g, ',');\n // var n;\n // create pipes so that we can split the data\n // for (n = 0; n < cc.length; n++) {\n // cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\n // }\n // data = data.replace(/-/g, ',-');\n // create array\n // var arr = cs.split('|');\n // init context point\n\n\n var cpx = 0;\n var cpy = 0;\n var subpathX = cpx;\n var subpathY = cpy;\n var prevCmd;\n var path = new PathProxy();\n var CMD = PathProxy.CMD; // commandReg.lastIndex = 0;\n // var cmdResult;\n // while ((cmdResult = commandReg.exec(data)) != null) {\n // var cmdStr = cmdResult[1];\n // var cmdContent = cmdResult[2];\n\n var cmdList = data.match(commandReg);\n\n for (var l = 0; l < cmdList.length; l++) {\n var cmdText = cmdList[l];\n var cmdStr = cmdText.charAt(0);\n var cmd; // String#split is faster a little bit than String#replace or RegExp#exec.\n // var p = cmdContent.split(valueSplitReg);\n // var pLen = 0;\n // for (var i = 0; i < p.length; i++) {\n // // '' and other invalid str => NaN\n // var val = parseFloat(p[i]);\n // !isNaN(val) && (p[pLen++] = val);\n // }\n\n var p = cmdText.match(numberReg) || [];\n var pLen = p.length;\n\n for (var i = 0; i < pLen; i++) {\n p[i] = parseFloat(p[i]);\n }\n\n var off = 0;\n\n while (off < pLen) {\n var ctlPtx;\n var ctlPty;\n var rx;\n var ry;\n var psi;\n var fa;\n var fs;\n var x1 = cpx;\n var y1 = cpy; // convert l, H, h, V, and v to L\n\n switch (cmdStr) {\n case 'l':\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'L':\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'm':\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.M;\n path.addData(cmd, cpx, cpy);\n subpathX = cpx;\n subpathY = cpy;\n cmdStr = 'l';\n break;\n\n case 'M':\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.M;\n path.addData(cmd, cpx, cpy);\n subpathX = cpx;\n subpathY = cpy;\n cmdStr = 'L';\n break;\n\n case 'h':\n cpx += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'H':\n cpx = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'v':\n cpy += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'V':\n cpy = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'C':\n cmd = CMD.C;\n path.addData(cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++]);\n cpx = p[off - 2];\n cpy = p[off - 1];\n break;\n\n case 'c':\n cmd = CMD.C;\n path.addData(cmd, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy);\n cpx += p[off - 2];\n cpy += p[off - 1];\n break;\n\n case 'S':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.C) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cmd = CMD.C;\n x1 = p[off++];\n y1 = p[off++];\n cpx = p[off++];\n cpy = p[off++];\n path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n break;\n\n case 's':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.C) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cmd = CMD.C;\n x1 = cpx + p[off++];\n y1 = cpy + p[off++];\n cpx += p[off++];\n cpy += p[off++];\n path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n break;\n\n case 'Q':\n x1 = p[off++];\n y1 = p[off++];\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.Q;\n path.addData(cmd, x1, y1, cpx, cpy);\n break;\n\n case 'q':\n x1 = p[off++] + cpx;\n y1 = p[off++] + cpy;\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.Q;\n path.addData(cmd, x1, y1, cpx, cpy);\n break;\n\n case 'T':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.Q) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.Q;\n path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n break;\n\n case 't':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.Q) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.Q;\n path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n break;\n\n case 'A':\n rx = p[off++];\n ry = p[off++];\n psi = p[off++];\n fa = p[off++];\n fs = p[off++];\n x1 = cpx, y1 = cpy;\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.A;\n processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n break;\n\n case 'a':\n rx = p[off++];\n ry = p[off++];\n psi = p[off++];\n fa = p[off++];\n fs = p[off++];\n x1 = cpx, y1 = cpy;\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.A;\n processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n break;\n }\n }\n\n if (cmdStr === 'z' || cmdStr === 'Z') {\n cmd = CMD.Z;\n path.addData(cmd); // z may be in the middle of the path.\n\n cpx = subpathX;\n cpy = subpathY;\n }\n\n prevCmd = cmd;\n }\n\n path.toStatic();\n return path;\n} // TODO Optimize double memory cost problem\n\n\nfunction createPathOptions(str, opts) {\n var pathProxy = createPathProxyFromString(str);\n opts = opts || {};\n\n opts.buildPath = function (path) {\n if (path.setData) {\n path.setData(pathProxy.data); // Svg and vml renderer don't have context\n\n var ctx = path.getContext();\n\n if (ctx) {\n path.rebuildPath(ctx);\n }\n } else {\n var ctx = path;\n pathProxy.rebuildPath(ctx);\n }\n };\n\n opts.applyTransform = function (m) {\n transformPath(pathProxy, m);\n this.dirty(true);\n };\n\n return opts;\n}\n/**\n * Create a Path object from path string data\n * http://www.w3.org/TR/SVG/paths.html#PathData\n * @param {Object} opts Other options\n */\n\n\nfunction createFromString(str, opts) {\n return new Path(createPathOptions(str, opts));\n}\n/**\n * Create a Path class from path string data\n * @param {string} str\n * @param {Object} opts Other options\n */\n\n\nfunction extendFromString(str, opts) {\n return Path.extend(createPathOptions(str, opts));\n}\n/**\n * Merge multiple paths\n */\n// TODO Apply transform\n// TODO stroke dash\n// TODO Optimize double memory cost problem\n\n\nfunction mergePath(pathEls, opts) {\n var pathList = [];\n var len = pathEls.length;\n\n for (var i = 0; i < len; i++) {\n var pathEl = pathEls[i];\n\n if (!pathEl.path) {\n pathEl.createPathProxy();\n }\n\n if (pathEl.__dirtyPath) {\n pathEl.buildPath(pathEl.path, pathEl.shape, true);\n }\n\n pathList.push(pathEl.path);\n }\n\n var pathBundle = new Path(opts); // Need path proxy.\n\n pathBundle.createPathProxy();\n\n pathBundle.buildPath = function (path) {\n path.appendPath(pathList); // Svg and vml renderer don't have context\n\n var ctx = path.getContext();\n\n if (ctx) {\n path.rebuildPath(ctx);\n }\n };\n\n return pathBundle;\n}\n\nexports.createFromString = createFromString;\nexports.extendFromString = extendFromString;\nexports.mergePath = mergePath;","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* A third-party license is embeded for some of the code in this file:\n* The method \"quantile\" was copied from \"d3.js\".\n* (See more details in the comment of the method below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* ).\n*/\nvar RADIAN_EPSILON = 1e-4;\n\nfunction _trim(str) {\n return str.replace(/^\\s+|\\s+$/g, '');\n}\n/**\n * Linear mapping a value from domain to range\n * @memberOf module:echarts/util/number\n * @param {(number|Array.)} val\n * @param {Array.} domain Domain extent domain[0] can be bigger than domain[1]\n * @param {Array.} range Range extent range[0] can be bigger than range[1]\n * @param {boolean} clamp\n * @return {(number|Array.}\n */\n\n\nfunction linearMap(val, domain, range, clamp) {\n var subDomain = domain[1] - domain[0];\n var subRange = range[1] - range[0];\n\n if (subDomain === 0) {\n return subRange === 0 ? range[0] : (range[0] + range[1]) / 2;\n } // Avoid accuracy problem in edge, such as\n // 146.39 - 62.83 === 83.55999999999999.\n // See echarts/test/ut/spec/util/number.js#linearMap#accuracyError\n // It is a little verbose for efficiency considering this method\n // is a hotspot.\n\n\n if (clamp) {\n if (subDomain > 0) {\n if (val <= domain[0]) {\n return range[0];\n } else if (val >= domain[1]) {\n return range[1];\n }\n } else {\n if (val >= domain[0]) {\n return range[0];\n } else if (val <= domain[1]) {\n return range[1];\n }\n }\n } else {\n if (val === domain[0]) {\n return range[0];\n }\n\n if (val === domain[1]) {\n return range[1];\n }\n }\n\n return (val - domain[0]) / subDomain * subRange + range[0];\n}\n/**\n * Convert a percent string to absolute number.\n * Returns NaN if percent is not a valid string or number\n * @memberOf module:echarts/util/number\n * @param {string|number} percent\n * @param {number} all\n * @return {number}\n */\n\n\nfunction parsePercent(percent, all) {\n switch (percent) {\n case 'center':\n case 'middle':\n percent = '50%';\n break;\n\n case 'left':\n case 'top':\n percent = '0%';\n break;\n\n case 'right':\n case 'bottom':\n percent = '100%';\n break;\n }\n\n if (typeof percent === 'string') {\n if (_trim(percent).match(/%$/)) {\n return parseFloat(percent) / 100 * all;\n }\n\n return parseFloat(percent);\n }\n\n return percent == null ? NaN : +percent;\n}\n/**\n * (1) Fix rounding error of float numbers.\n * (2) Support return string to avoid scientific notation like '3.5e-7'.\n *\n * @param {number} x\n * @param {number} [precision]\n * @param {boolean} [returnStr]\n * @return {number|string}\n */\n\n\nfunction round(x, precision, returnStr) {\n if (precision == null) {\n precision = 10;\n } // Avoid range error\n\n\n precision = Math.min(Math.max(0, precision), 20);\n x = (+x).toFixed(precision);\n return returnStr ? x : +x;\n}\n/**\n * asc sort arr.\n * The input arr will be modified.\n *\n * @param {Array} arr\n * @return {Array} The input arr.\n */\n\n\nfunction asc(arr) {\n arr.sort(function (a, b) {\n return a - b;\n });\n return arr;\n}\n/**\n * Get precision\n * @param {number} val\n */\n\n\nfunction getPrecision(val) {\n val = +val;\n\n if (isNaN(val)) {\n return 0;\n } // It is much faster than methods converting number to string as follows\n // var tmp = val.toString();\n // return tmp.length - 1 - tmp.indexOf('.');\n // especially when precision is low\n\n\n var e = 1;\n var count = 0;\n\n while (Math.round(val * e) / e !== val) {\n e *= 10;\n count++;\n }\n\n return count;\n}\n/**\n * @param {string|number} val\n * @return {number}\n */\n\n\nfunction getPrecisionSafe(val) {\n var str = val.toString(); // Consider scientific notation: '3.4e-12' '3.4e+12'\n\n var eIndex = str.indexOf('e');\n\n if (eIndex > 0) {\n var precision = +str.slice(eIndex + 1);\n return precision < 0 ? -precision : 0;\n } else {\n var dotIndex = str.indexOf('.');\n return dotIndex < 0 ? 0 : str.length - 1 - dotIndex;\n }\n}\n/**\n * Minimal dicernible data precisioin according to a single pixel.\n *\n * @param {Array.} dataExtent\n * @param {Array.} pixelExtent\n * @return {number} precision\n */\n\n\nfunction getPixelPrecision(dataExtent, pixelExtent) {\n var log = Math.log;\n var LN10 = Math.LN10;\n var dataQuantity = Math.floor(log(dataExtent[1] - dataExtent[0]) / LN10);\n var sizeQuantity = Math.round(log(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10); // toFixed() digits argument must be between 0 and 20.\n\n var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20);\n return !isFinite(precision) ? 20 : precision;\n}\n/**\n * Get a data of given precision, assuring the sum of percentages\n * in valueList is 1.\n * The largest remainer method is used.\n * https://en.wikipedia.org/wiki/Largest_remainder_method\n *\n * @param {Array.} valueList a list of all data\n * @param {number} idx index of the data to be processed in valueList\n * @param {number} precision integer number showing digits of precision\n * @return {number} percent ranging from 0 to 100\n */\n\n\nfunction getPercentWithPrecision(valueList, idx, precision) {\n if (!valueList[idx]) {\n return 0;\n }\n\n var sum = zrUtil.reduce(valueList, function (acc, val) {\n return acc + (isNaN(val) ? 0 : val);\n }, 0);\n\n if (sum === 0) {\n return 0;\n }\n\n var digits = Math.pow(10, precision);\n var votesPerQuota = zrUtil.map(valueList, function (val) {\n return (isNaN(val) ? 0 : val) / sum * digits * 100;\n });\n var targetSeats = digits * 100;\n var seats = zrUtil.map(votesPerQuota, function (votes) {\n // Assign automatic seats.\n return Math.floor(votes);\n });\n var currentSum = zrUtil.reduce(seats, function (acc, val) {\n return acc + val;\n }, 0);\n var remainder = zrUtil.map(votesPerQuota, function (votes, idx) {\n return votes - seats[idx];\n }); // Has remainding votes.\n\n while (currentSum < targetSeats) {\n // Find next largest remainder.\n var max = Number.NEGATIVE_INFINITY;\n var maxId = null;\n\n for (var i = 0, len = remainder.length; i < len; ++i) {\n if (remainder[i] > max) {\n max = remainder[i];\n maxId = i;\n }\n } // Add a vote to max remainder.\n\n\n ++seats[maxId];\n remainder[maxId] = 0;\n ++currentSum;\n }\n\n return seats[idx] / digits;\n} // Number.MAX_SAFE_INTEGER, ie do not support.\n\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * To 0 - 2 * PI, considering negative radian.\n * @param {number} radian\n * @return {number}\n */\n\nfunction remRadian(radian) {\n var pi2 = Math.PI * 2;\n return (radian % pi2 + pi2) % pi2;\n}\n/**\n * @param {type} radian\n * @return {boolean}\n */\n\n\nfunction isRadianAroundZero(val) {\n return val > -RADIAN_EPSILON && val < RADIAN_EPSILON;\n}\n/* eslint-disable */\n\n\nvar TIME_REG = /^(?:(\\d{4})(?:[-\\/](\\d{1,2})(?:[-\\/](\\d{1,2})(?:[T ](\\d{1,2})(?::(\\d\\d)(?::(\\d\\d)(?:[.,](\\d+))?)?)?(Z|[\\+\\-]\\d\\d:?\\d\\d)?)?)?)?)?$/; // jshint ignore:line\n\n/* eslint-enable */\n\n/**\n * @param {string|Date|number} value These values can be accepted:\n * + An instance of Date, represent a time in its own time zone.\n * + Or string in a subset of ISO 8601, only including:\n * + only year, month, date: '2012-03', '2012-03-01', '2012-03-01 05', '2012-03-01 05:06',\n * + separated with T or space: '2012-03-01T12:22:33.123', '2012-03-01 12:22:33.123',\n * + time zone: '2012-03-01T12:22:33Z', '2012-03-01T12:22:33+8000', '2012-03-01T12:22:33-05:00',\n * all of which will be treated as local time if time zone is not specified\n * (see ).\n * + Or other string format, including (all of which will be treated as loacal time):\n * '2012', '2012-3-1', '2012/3/1', '2012/03/01',\n * '2009/6/12 2:00', '2009/6/12 2:05:08', '2009/6/12 2:05:08.123'\n * + a timestamp, which represent a time in UTC.\n * @return {Date} date\n */\n\nfunction parseDate(value) {\n if (value instanceof Date) {\n return value;\n } else if (typeof value === 'string') {\n // Different browsers parse date in different way, so we parse it manually.\n // Some other issues:\n // new Date('1970-01-01') is UTC,\n // new Date('1970/01/01') and new Date('1970-1-01') is local.\n // See issue #3623\n var match = TIME_REG.exec(value);\n\n if (!match) {\n // return Invalid Date.\n return new Date(NaN);\n } // Use local time when no timezone offset specifed.\n\n\n if (!match[8]) {\n // match[n] can only be string or undefined.\n // But take care of '12' + 1 => '121'.\n return new Date(+match[1], +(match[2] || 1) - 1, +match[3] || 1, +match[4] || 0, +(match[5] || 0), +match[6] || 0, +match[7] || 0);\n } // Timezoneoffset of Javascript Date has considered DST (Daylight Saving Time,\n // https://tc39.github.io/ecma262/#sec-daylight-saving-time-adjustment).\n // For example, system timezone is set as \"Time Zone: America/Toronto\",\n // then these code will get different result:\n // `new Date(1478411999999).getTimezoneOffset(); // get 240`\n // `new Date(1478412000000).getTimezoneOffset(); // get 300`\n // So we should not use `new Date`, but use `Date.UTC`.\n else {\n var hour = +match[4] || 0;\n\n if (match[8].toUpperCase() !== 'Z') {\n hour -= match[8].slice(0, 3);\n }\n\n return new Date(Date.UTC(+match[1], +(match[2] || 1) - 1, +match[3] || 1, hour, +(match[5] || 0), +match[6] || 0, +match[7] || 0));\n }\n } else if (value == null) {\n return new Date(NaN);\n }\n\n return new Date(Math.round(value));\n}\n/**\n * Quantity of a number. e.g. 0.1, 1, 10, 100\n *\n * @param {number} val\n * @return {number}\n */\n\n\nfunction quantity(val) {\n return Math.pow(10, quantityExponent(val));\n}\n/**\n * Exponent of the quantity of a number\n * e.g., 1234 equals to 1.234*10^3, so quantityExponent(1234) is 3\n *\n * @param {number} val non-negative value\n * @return {number}\n */\n\n\nfunction quantityExponent(val) {\n if (val === 0) {\n return 0;\n }\n\n var exp = Math.floor(Math.log(val) / Math.LN10);\n /**\n * exp is expected to be the rounded-down result of the base-10 log of val.\n * But due to the precision loss with Math.log(val), we need to restore it\n * using 10^exp to make sure we can get val back from exp. #11249\n */\n\n if (val / Math.pow(10, exp) >= 10) {\n exp++;\n }\n\n return exp;\n}\n/**\n * find a “nice” number approximately equal to x. Round the number if round = true,\n * take ceiling if round = false. The primary observation is that the “nicest”\n * numbers in decimal are 1, 2, and 5, and all power-of-ten multiples of these numbers.\n *\n * See \"Nice Numbers for Graph Labels\" of Graphic Gems.\n *\n * @param {number} val Non-negative value.\n * @param {boolean} round\n * @return {number}\n */\n\n\nfunction nice(val, round) {\n var exponent = quantityExponent(val);\n var exp10 = Math.pow(10, exponent);\n var f = val / exp10; // 1 <= f < 10\n\n var nf;\n\n if (round) {\n if (f < 1.5) {\n nf = 1;\n } else if (f < 2.5) {\n nf = 2;\n } else if (f < 4) {\n nf = 3;\n } else if (f < 7) {\n nf = 5;\n } else {\n nf = 10;\n }\n } else {\n if (f < 1) {\n nf = 1;\n } else if (f < 2) {\n nf = 2;\n } else if (f < 3) {\n nf = 3;\n } else if (f < 5) {\n nf = 5;\n } else {\n nf = 10;\n }\n }\n\n val = nf * exp10; // Fix 3 * 0.1 === 0.30000000000000004 issue (see IEEE 754).\n // 20 is the uppper bound of toFixed.\n\n return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val;\n}\n/**\n * This code was copied from \"d3.js\"\n * .\n * See the license statement at the head of this file.\n * @param {Array.} ascArr\n */\n\n\nfunction quantile(ascArr, p) {\n var H = (ascArr.length - 1) * p + 1;\n var h = Math.floor(H);\n var v = +ascArr[h - 1];\n var e = H - h;\n return e ? v + e * (ascArr[h] - v) : v;\n}\n/**\n * Order intervals asc, and split them when overlap.\n * expect(numberUtil.reformIntervals([\n * {interval: [18, 62], close: [1, 1]},\n * {interval: [-Infinity, -70], close: [0, 0]},\n * {interval: [-70, -26], close: [1, 1]},\n * {interval: [-26, 18], close: [1, 1]},\n * {interval: [62, 150], close: [1, 1]},\n * {interval: [106, 150], close: [1, 1]},\n * {interval: [150, Infinity], close: [0, 0]}\n * ])).toEqual([\n * {interval: [-Infinity, -70], close: [0, 0]},\n * {interval: [-70, -26], close: [1, 1]},\n * {interval: [-26, 18], close: [0, 1]},\n * {interval: [18, 62], close: [0, 1]},\n * {interval: [62, 150], close: [0, 1]},\n * {interval: [150, Infinity], close: [0, 0]}\n * ]);\n * @param {Array.} list, where `close` mean open or close\n * of the interval, and Infinity can be used.\n * @return {Array.} The origin list, which has been reformed.\n */\n\n\nfunction reformIntervals(list) {\n list.sort(function (a, b) {\n return littleThan(a, b, 0) ? -1 : 1;\n });\n var curr = -Infinity;\n var currClose = 1;\n\n for (var i = 0; i < list.length;) {\n var interval = list[i].interval;\n var close = list[i].close;\n\n for (var lg = 0; lg < 2; lg++) {\n if (interval[lg] <= curr) {\n interval[lg] = curr;\n close[lg] = !lg ? 1 - currClose : 1;\n }\n\n curr = interval[lg];\n currClose = close[lg];\n }\n\n if (interval[0] === interval[1] && close[0] * close[1] !== 1) {\n list.splice(i, 1);\n } else {\n i++;\n }\n }\n\n return list;\n\n function littleThan(a, b, lg) {\n return a.interval[lg] < b.interval[lg] || a.interval[lg] === b.interval[lg] && (a.close[lg] - b.close[lg] === (!lg ? 1 : -1) || !lg && littleThan(a, b, 1));\n }\n}\n/**\n * parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n * ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n * subtraction forces infinities to NaN\n *\n * @param {*} v\n * @return {boolean}\n */\n\n\nfunction isNumeric(v) {\n return v - parseFloat(v) >= 0;\n}\n\nexports.linearMap = linearMap;\nexports.parsePercent = parsePercent;\nexports.round = round;\nexports.asc = asc;\nexports.getPrecision = getPrecision;\nexports.getPrecisionSafe = getPrecisionSafe;\nexports.getPixelPrecision = getPixelPrecision;\nexports.getPercentWithPrecision = getPercentWithPrecision;\nexports.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;\nexports.remRadian = remRadian;\nexports.isRadianAroundZero = isRadianAroundZero;\nexports.parseDate = parseDate;\nexports.quantity = quantity;\nexports.quantityExponent = quantityExponent;\nexports.nice = nice;\nexports.quantile = quantile;\nexports.reformIntervals = reformIntervals;\nexports.isNumeric = isNumeric;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\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 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;","var _util = require(\"../core/util\");\n\nvar inherits = _util.inherits;\n\nvar Displayble = require(\"./Displayable\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\n/**\n * Displayable for incremental rendering. It will be rendered in a separate layer\n * IncrementalDisplay have two main methods. `clearDisplayables` and `addDisplayables`\n * addDisplayables will render the added displayables incremetally.\n *\n * It use a not clearFlag to tell the painter don't clear the layer if it's the first element.\n */\n// TODO Style override ?\nfunction IncrementalDisplayble(opts) {\n Displayble.call(this, opts);\n this._displayables = [];\n this._temporaryDisplayables = [];\n this._cursor = 0;\n this.notClear = true;\n}\n\nIncrementalDisplayble.prototype.incremental = true;\n\nIncrementalDisplayble.prototype.clearDisplaybles = function () {\n this._displayables = [];\n this._temporaryDisplayables = [];\n this._cursor = 0;\n this.dirty();\n this.notClear = false;\n};\n\nIncrementalDisplayble.prototype.addDisplayable = function (displayable, notPersistent) {\n if (notPersistent) {\n this._temporaryDisplayables.push(displayable);\n } else {\n this._displayables.push(displayable);\n }\n\n this.dirty();\n};\n\nIncrementalDisplayble.prototype.addDisplayables = function (displayables, notPersistent) {\n notPersistent = notPersistent || false;\n\n for (var i = 0; i < displayables.length; i++) {\n this.addDisplayable(displayables[i], notPersistent);\n }\n};\n\nIncrementalDisplayble.prototype.eachPendingDisplayable = function (cb) {\n for (var i = this._cursor; i < this._displayables.length; i++) {\n cb && cb(this._displayables[i]);\n }\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n cb && cb(this._temporaryDisplayables[i]);\n }\n};\n\nIncrementalDisplayble.prototype.update = function () {\n this.updateTransform();\n\n for (var i = this._cursor; i < this._displayables.length; i++) {\n var displayable = this._displayables[i]; // PENDING\n\n displayable.parent = this;\n displayable.update();\n displayable.parent = null;\n }\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n var displayable = this._temporaryDisplayables[i]; // PENDING\n\n displayable.parent = this;\n displayable.update();\n displayable.parent = null;\n }\n};\n\nIncrementalDisplayble.prototype.brush = function (ctx, prevEl) {\n // Render persistant displayables.\n for (var i = this._cursor; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n displayable.beforeBrush && displayable.beforeBrush(ctx);\n displayable.brush(ctx, i === this._cursor ? null : this._displayables[i - 1]);\n displayable.afterBrush && displayable.afterBrush(ctx);\n }\n\n this._cursor = i; // Render temporary displayables.\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n var displayable = this._temporaryDisplayables[i];\n displayable.beforeBrush && displayable.beforeBrush(ctx);\n displayable.brush(ctx, i === 0 ? null : this._temporaryDisplayables[i - 1]);\n displayable.afterBrush && displayable.afterBrush(ctx);\n }\n\n this._temporaryDisplayables = [];\n this.notClear = true;\n};\n\nvar m = [];\n\nIncrementalDisplayble.prototype.getBoundingRect = function () {\n if (!this._rect) {\n var rect = new BoundingRect(Infinity, Infinity, -Infinity, -Infinity);\n\n for (var i = 0; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n var childRect = displayable.getBoundingRect().clone();\n\n if (displayable.needLocalTransform()) {\n childRect.applyTransform(displayable.getLocalTransform(m));\n }\n\n rect.union(childRect);\n }\n\n this._rect = rect;\n }\n\n return this._rect;\n};\n\nIncrementalDisplayble.prototype.contain = function (x, y) {\n var localPos = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n\n if (rect.contain(localPos[0], localPos[1])) {\n for (var i = 0; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n\n if (displayable.contain(x, y)) {\n return true;\n }\n }\n }\n\n return false;\n};\n\ninherits(IncrementalDisplayble, Displayble);\nvar _default = IncrementalDisplayble;\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 zrender = require(\"zrender/lib/zrender\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar colorTool = require(\"zrender/lib/tool/color\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar timsort = require(\"zrender/lib/core/timsort\");\n\nvar Eventful = require(\"zrender/lib/mixin/Eventful\");\n\nvar GlobalModel = require(\"./model/Global\");\n\nvar ExtensionAPI = require(\"./ExtensionAPI\");\n\nvar CoordinateSystemManager = require(\"./CoordinateSystem\");\n\nvar OptionManager = require(\"./model/OptionManager\");\n\nvar backwardCompat = require(\"./preprocessor/backwardCompat\");\n\nvar dataStack = require(\"./processor/dataStack\");\n\nvar ComponentModel = require(\"./model/Component\");\n\nvar SeriesModel = require(\"./model/Series\");\n\nvar ComponentView = require(\"./view/Component\");\n\nvar ChartView = require(\"./view/Chart\");\n\nvar graphic = require(\"./util/graphic\");\n\nvar modelUtil = require(\"./util/model\");\n\nvar _throttle = require(\"./util/throttle\");\n\nvar throttle = _throttle.throttle;\n\nvar seriesColor = require(\"./visual/seriesColor\");\n\nvar aria = require(\"./visual/aria\");\n\nvar loadingDefault = require(\"./loading/default\");\n\nvar Scheduler = require(\"./stream/Scheduler\");\n\nvar lightTheme = require(\"./theme/light\");\n\nvar darkTheme = require(\"./theme/dark\");\n\nrequire(\"./component/dataset\");\n\nvar mapDataStorage = require(\"./coord/geo/mapDataStorage\");\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 assert = zrUtil.assert;\nvar each = zrUtil.each;\nvar isFunction = zrUtil.isFunction;\nvar isObject = zrUtil.isObject;\nvar parseClassType = ComponentModel.parseClassType;\nvar version = '4.8.0';\nvar dependencies = {\n zrender: '4.3.1'\n};\nvar TEST_FRAME_REMAIN_TIME = 1;\nvar PRIORITY_PROCESSOR_FILTER = 1000;\nvar PRIORITY_PROCESSOR_SERIES_FILTER = 800;\nvar PRIORITY_PROCESSOR_DATASTACK = 900;\nvar PRIORITY_PROCESSOR_STATISTIC = 5000;\nvar PRIORITY_VISUAL_LAYOUT = 1000;\nvar PRIORITY_VISUAL_PROGRESSIVE_LAYOUT = 1100;\nvar PRIORITY_VISUAL_GLOBAL = 2000;\nvar PRIORITY_VISUAL_CHART = 3000;\nvar PRIORITY_VISUAL_POST_CHART_LAYOUT = 3500;\nvar PRIORITY_VISUAL_COMPONENT = 4000; // FIXME\n// necessary?\n\nvar PRIORITY_VISUAL_BRUSH = 5000;\nvar PRIORITY = {\n PROCESSOR: {\n FILTER: PRIORITY_PROCESSOR_FILTER,\n SERIES_FILTER: PRIORITY_PROCESSOR_SERIES_FILTER,\n STATISTIC: PRIORITY_PROCESSOR_STATISTIC\n },\n VISUAL: {\n LAYOUT: PRIORITY_VISUAL_LAYOUT,\n PROGRESSIVE_LAYOUT: PRIORITY_VISUAL_PROGRESSIVE_LAYOUT,\n GLOBAL: PRIORITY_VISUAL_GLOBAL,\n CHART: PRIORITY_VISUAL_CHART,\n POST_CHART_LAYOUT: PRIORITY_VISUAL_POST_CHART_LAYOUT,\n COMPONENT: PRIORITY_VISUAL_COMPONENT,\n BRUSH: PRIORITY_VISUAL_BRUSH\n }\n}; // Main process have three entries: `setOption`, `dispatchAction` and `resize`,\n// where they must not be invoked nestedly, except the only case: invoke\n// dispatchAction with updateMethod \"none\" in main process.\n// This flag is used to carry out this rule.\n// All events will be triggered out side main process (i.e. when !this[IN_MAIN_PROCESS]).\n\nvar IN_MAIN_PROCESS = '__flagInMainProcess';\nvar OPTION_UPDATED = '__optionUpdated';\nvar ACTION_REG = /^[a-zA-Z0-9_]+$/;\n\nfunction createRegisterEventWithLowercaseName(method, ignoreDisposed) {\n return function (eventName, handler, context) {\n if (!ignoreDisposed && this._disposed) {\n disposedWarning(this.id);\n return;\n } // Event name is all lowercase\n\n\n eventName = eventName && eventName.toLowerCase();\n Eventful.prototype[method].call(this, eventName, handler, context);\n };\n}\n/**\n * @module echarts~MessageCenter\n */\n\n\nfunction MessageCenter() {\n Eventful.call(this);\n}\n\nMessageCenter.prototype.on = createRegisterEventWithLowercaseName('on', true);\nMessageCenter.prototype.off = createRegisterEventWithLowercaseName('off', true);\nMessageCenter.prototype.one = createRegisterEventWithLowercaseName('one', true);\nzrUtil.mixin(MessageCenter, Eventful);\n/**\n * @module echarts~ECharts\n */\n\nfunction ECharts(dom, theme, opts) {\n opts = opts || {}; // Get theme by name\n\n if (typeof theme === 'string') {\n theme = themeStorage[theme];\n }\n /**\n * @type {string}\n */\n\n\n this.id;\n /**\n * Group id\n * @type {string}\n */\n\n this.group;\n /**\n * @type {HTMLElement}\n * @private\n */\n\n this._dom = dom;\n var defaultRenderer = 'canvas';\n\n /**\n * @type {module:zrender/ZRender}\n * @private\n */\n var zr = this._zr = zrender.init(dom, {\n renderer: opts.renderer || defaultRenderer,\n devicePixelRatio: opts.devicePixelRatio,\n width: opts.width,\n height: opts.height\n });\n /**\n * Expect 60 fps.\n * @type {Function}\n * @private\n */\n\n this._throttledZrFlush = throttle(zrUtil.bind(zr.flush, zr), 17);\n var theme = zrUtil.clone(theme);\n theme && backwardCompat(theme, true);\n /**\n * @type {Object}\n * @private\n */\n\n this._theme = theme;\n /**\n * @type {Array.}\n * @private\n */\n\n this._chartsViews = [];\n /**\n * @type {Object.}\n * @private\n */\n\n this._chartsMap = {};\n /**\n * @type {Array.}\n * @private\n */\n\n this._componentsViews = [];\n /**\n * @type {Object.}\n * @private\n */\n\n this._componentsMap = {};\n /**\n * @type {module:echarts/CoordinateSystem}\n * @private\n */\n\n this._coordSysMgr = new CoordinateSystemManager();\n /**\n * @type {module:echarts/ExtensionAPI}\n * @private\n */\n\n var api = this._api = createExtensionAPI(this); // Sort on demand\n\n function prioritySortFunc(a, b) {\n return a.__prio - b.__prio;\n }\n\n timsort(visualFuncs, prioritySortFunc);\n timsort(dataProcessorFuncs, prioritySortFunc);\n /**\n * @type {module:echarts/stream/Scheduler}\n */\n\n this._scheduler = new Scheduler(this, api, dataProcessorFuncs, visualFuncs);\n Eventful.call(this, this._ecEventProcessor = new EventProcessor());\n /**\n * @type {module:echarts~MessageCenter}\n * @private\n */\n\n this._messageCenter = new MessageCenter(); // Init mouse events\n\n this._initEvents(); // In case some people write `window.onresize = chart.resize`\n\n\n this.resize = zrUtil.bind(this.resize, this); // Can't dispatch action during rendering procedure\n\n this._pendingActions = [];\n zr.animation.on('frame', this._onframe, this);\n bindRenderedEvent(zr, this); // ECharts instance can be used as value.\n\n zrUtil.setAsPrimitive(this);\n}\n\nvar echartsProto = ECharts.prototype;\n\nechartsProto._onframe = function () {\n if (this._disposed) {\n return;\n }\n\n var scheduler = this._scheduler; // Lazy update\n\n if (this[OPTION_UPDATED]) {\n var silent = this[OPTION_UPDATED].silent;\n this[IN_MAIN_PROCESS] = true;\n prepare(this);\n updateMethods.update.call(this);\n this[IN_MAIN_PROCESS] = false;\n this[OPTION_UPDATED] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n } // Avoid do both lazy update and progress in one frame.\n else if (scheduler.unfinished) {\n // Stream progress.\n var remainTime = TEST_FRAME_REMAIN_TIME;\n var ecModel = this._model;\n var api = this._api;\n scheduler.unfinished = false;\n\n do {\n var startTime = +new Date();\n scheduler.performSeriesTasks(ecModel); // Currently dataProcessorFuncs do not check threshold.\n\n scheduler.performDataProcessorTasks(ecModel);\n updateStreamModes(this, ecModel); // Do not update coordinate system here. Because that coord system update in\n // each frame is not a good user experience. So we follow the rule that\n // the extent of the coordinate system is determin in the first frame (the\n // frame is executed immedietely after task reset.\n // this._coordSysMgr.update(ecModel, api);\n // console.log('--- ec frame visual ---', remainTime);\n\n scheduler.performVisualTasks(ecModel);\n renderSeries(this, this._model, api, 'remain');\n remainTime -= +new Date() - startTime;\n } while (remainTime > 0 && scheduler.unfinished); // Call flush explicitly for trigger finished event.\n\n\n if (!scheduler.unfinished) {\n this._zr.flush();\n } // Else, zr flushing be ensue within the same frame,\n // because zr flushing is after onframe event.\n\n }\n};\n/**\n * @return {HTMLElement}\n */\n\n\nechartsProto.getDom = function () {\n return this._dom;\n};\n/**\n * @return {module:zrender~ZRender}\n */\n\n\nechartsProto.getZr = function () {\n return this._zr;\n};\n/**\n * Usage:\n * chart.setOption(option, notMerge, lazyUpdate);\n * chart.setOption(option, {\n * notMerge: ...,\n * lazyUpdate: ...,\n * silent: ...\n * });\n *\n * @param {Object} option\n * @param {Object|boolean} [opts] opts or notMerge.\n * @param {boolean} [opts.notMerge=false]\n * @param {boolean} [opts.lazyUpdate=false] Useful when setOption frequently.\n */\n\n\nechartsProto.setOption = function (option, notMerge, lazyUpdate) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var silent;\n\n if (isObject(notMerge)) {\n lazyUpdate = notMerge.lazyUpdate;\n silent = notMerge.silent;\n notMerge = notMerge.notMerge;\n }\n\n this[IN_MAIN_PROCESS] = true;\n\n if (!this._model || notMerge) {\n var optionManager = new OptionManager(this._api);\n var theme = this._theme;\n var ecModel = this._model = new GlobalModel();\n ecModel.scheduler = this._scheduler;\n ecModel.init(null, null, theme, optionManager);\n }\n\n this._model.setOption(option, optionPreprocessorFuncs);\n\n if (lazyUpdate) {\n this[OPTION_UPDATED] = {\n silent: silent\n };\n this[IN_MAIN_PROCESS] = false;\n } else {\n prepare(this);\n updateMethods.update.call(this); // Ensure zr refresh sychronously, and then pixel in canvas can be\n // fetched after `setOption`.\n\n this._zr.flush();\n\n this[OPTION_UPDATED] = false;\n this[IN_MAIN_PROCESS] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n }\n};\n/**\n * @DEPRECATED\n */\n\n\nechartsProto.setTheme = function () {\n console.error('ECharts#setTheme() is DEPRECATED in ECharts 3.0');\n};\n/**\n * @return {module:echarts/model/Global}\n */\n\n\nechartsProto.getModel = function () {\n return this._model;\n};\n/**\n * @return {Object}\n */\n\n\nechartsProto.getOption = function () {\n return this._model && this._model.getOption();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getWidth = function () {\n return this._zr.getWidth();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getHeight = function () {\n return this._zr.getHeight();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getDevicePixelRatio = function () {\n return this._zr.painter.dpr || window.devicePixelRatio || 1;\n};\n/**\n * Get canvas which has all thing rendered\n * @param {Object} opts\n * @param {string} [opts.backgroundColor]\n * @return {string}\n */\n\n\nechartsProto.getRenderedCanvas = function (opts) {\n if (!env.canvasSupported) {\n return;\n }\n\n opts = opts || {};\n opts.pixelRatio = opts.pixelRatio || 1;\n opts.backgroundColor = opts.backgroundColor || this._model.get('backgroundColor');\n var zr = this._zr; // var list = zr.storage.getDisplayList();\n // Stop animations\n // Never works before in init animation, so remove it.\n // zrUtil.each(list, function (el) {\n // el.stopAnimation(true);\n // });\n\n return zr.painter.getRenderedCanvas(opts);\n};\n/**\n * Get svg data url\n * @return {string}\n */\n\n\nechartsProto.getSvgDataURL = function () {\n if (!env.svgSupported) {\n return;\n }\n\n var zr = this._zr;\n var list = zr.storage.getDisplayList(); // Stop animations\n\n zrUtil.each(list, function (el) {\n el.stopAnimation(true);\n });\n return zr.painter.toDataURL();\n};\n/**\n * @return {string}\n * @param {Object} opts\n * @param {string} [opts.type='png']\n * @param {string} [opts.pixelRatio=1]\n * @param {string} [opts.backgroundColor]\n * @param {string} [opts.excludeComponents]\n */\n\n\nechartsProto.getDataURL = function (opts) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n opts = opts || {};\n var excludeComponents = opts.excludeComponents;\n var ecModel = this._model;\n var excludesComponentViews = [];\n var self = this;\n each(excludeComponents, function (componentType) {\n ecModel.eachComponent({\n mainType: componentType\n }, function (component) {\n var view = self._componentsMap[component.__viewId];\n\n if (!view.group.ignore) {\n excludesComponentViews.push(view);\n view.group.ignore = true;\n }\n });\n });\n var url = this._zr.painter.getType() === 'svg' ? this.getSvgDataURL() : this.getRenderedCanvas(opts).toDataURL('image/' + (opts && opts.type || 'png'));\n each(excludesComponentViews, function (view) {\n view.group.ignore = false;\n });\n return url;\n};\n/**\n * @return {string}\n * @param {Object} opts\n * @param {string} [opts.type='png']\n * @param {string} [opts.pixelRatio=1]\n * @param {string} [opts.backgroundColor]\n */\n\n\nechartsProto.getConnectedDataURL = function (opts) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n if (!env.canvasSupported) {\n return;\n }\n\n var isSvg = opts.type === 'svg';\n var groupId = this.group;\n var mathMin = Math.min;\n var mathMax = Math.max;\n var MAX_NUMBER = Infinity;\n\n if (connectedGroups[groupId]) {\n var left = MAX_NUMBER;\n var top = MAX_NUMBER;\n var right = -MAX_NUMBER;\n var bottom = -MAX_NUMBER;\n var canvasList = [];\n var dpr = opts && opts.pixelRatio || 1;\n zrUtil.each(instances, function (chart, id) {\n if (chart.group === groupId) {\n var canvas = isSvg ? chart.getZr().painter.getSvgDom().innerHTML : chart.getRenderedCanvas(zrUtil.clone(opts));\n var boundingRect = chart.getDom().getBoundingClientRect();\n left = mathMin(boundingRect.left, left);\n top = mathMin(boundingRect.top, top);\n right = mathMax(boundingRect.right, right);\n bottom = mathMax(boundingRect.bottom, bottom);\n canvasList.push({\n dom: canvas,\n left: boundingRect.left,\n top: boundingRect.top\n });\n }\n });\n left *= dpr;\n top *= dpr;\n right *= dpr;\n bottom *= dpr;\n var width = right - left;\n var height = bottom - top;\n var targetCanvas = zrUtil.createCanvas();\n var zr = zrender.init(targetCanvas, {\n renderer: isSvg ? 'svg' : 'canvas'\n });\n zr.resize({\n width: width,\n height: height\n });\n\n if (isSvg) {\n var content = '';\n each(canvasList, function (item) {\n var x = item.left - left;\n var y = item.top - top;\n content += '' + item.dom + '';\n });\n zr.painter.getSvgRoot().innerHTML = content;\n\n if (opts.connectedBackgroundColor) {\n zr.painter.setBackgroundColor(opts.connectedBackgroundColor);\n }\n\n zr.refreshImmediately();\n return zr.painter.toDataURL();\n } else {\n // Background between the charts\n if (opts.connectedBackgroundColor) {\n zr.add(new graphic.Rect({\n shape: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n style: {\n fill: opts.connectedBackgroundColor\n }\n }));\n }\n\n each(canvasList, function (item) {\n var img = new graphic.Image({\n style: {\n x: item.left * dpr - left,\n y: item.top * dpr - top,\n image: item.dom\n }\n });\n zr.add(img);\n });\n zr.refreshImmediately();\n return targetCanvas.toDataURL('image/' + (opts && opts.type || 'png'));\n }\n } else {\n return this.getDataURL(opts);\n }\n};\n/**\n * Convert from logical coordinate system to pixel coordinate system.\n * See CoordinateSystem#convertToPixel.\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * geoIndex / geoId, geoName,\n * bmapIndex / bmapId / bmapName,\n * xAxisIndex / xAxisId / xAxisName,\n * yAxisIndex / yAxisId / yAxisName,\n * gridIndex / gridId / gridName,\n * ... (can be extended)\n * }\n * @param {Array|number} value\n * @return {Array|number} result\n */\n\n\nechartsProto.convertToPixel = zrUtil.curry(doConvertPixel, 'convertToPixel');\n/**\n * Convert from pixel coordinate system to logical coordinate system.\n * See CoordinateSystem#convertFromPixel.\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * geoIndex / geoId / geoName,\n * bmapIndex / bmapId / bmapName,\n * xAxisIndex / xAxisId / xAxisName,\n * yAxisIndex / yAxisId / yAxisName\n * gridIndex / gridId / gridName,\n * ... (can be extended)\n * }\n * @param {Array|number} value\n * @return {Array|number} result\n */\n\nechartsProto.convertFromPixel = zrUtil.curry(doConvertPixel, 'convertFromPixel');\n\nfunction doConvertPixel(methodName, finder, value) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var ecModel = this._model;\n\n var coordSysList = this._coordSysMgr.getCoordinateSystems();\n\n var result;\n finder = modelUtil.parseFinder(ecModel, finder);\n\n for (var i = 0; i < coordSysList.length; i++) {\n var coordSys = coordSysList[i];\n\n if (coordSys[methodName] && (result = coordSys[methodName](ecModel, finder, value)) != null) {\n return result;\n }\n }\n}\n/**\n * Is the specified coordinate systems or components contain the given pixel point.\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * geoIndex / geoId / geoName,\n * bmapIndex / bmapId / bmapName,\n * xAxisIndex / xAxisId / xAxisName,\n * yAxisIndex / yAxisId / yAxisName,\n * gridIndex / gridId / gridName,\n * ... (can be extended)\n * }\n * @param {Array|number} value\n * @return {boolean} result\n */\n\n\nechartsProto.containPixel = function (finder, value) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var ecModel = this._model;\n var result;\n finder = modelUtil.parseFinder(ecModel, finder);\n zrUtil.each(finder, function (models, key) {\n key.indexOf('Models') >= 0 && zrUtil.each(models, function (model) {\n var coordSys = model.coordinateSystem;\n\n if (coordSys && coordSys.containPoint) {\n result |= !!coordSys.containPoint(value);\n } else if (key === 'seriesModels') {\n var view = this._chartsMap[model.__viewId];\n\n if (view && view.containPoint) {\n result |= view.containPoint(value, model);\n } else {}\n } else {}\n }, this);\n }, this);\n return !!result;\n};\n/**\n * Get visual from series or data.\n * @param {string|Object} finder\n * If string, e.g., 'series', means {seriesIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * dataIndex / dataIndexInside\n * }\n * If dataIndex is not specified, series visual will be fetched,\n * but not data item visual.\n * If all of seriesIndex, seriesId, seriesName are not specified,\n * visual will be fetched from first series.\n * @param {string} visualType 'color', 'symbol', 'symbolSize'\n */\n\n\nechartsProto.getVisual = function (finder, visualType) {\n var ecModel = this._model;\n finder = modelUtil.parseFinder(ecModel, finder, {\n defaultMainType: 'series'\n });\n var seriesModel = finder.seriesModel;\n var data = seriesModel.getData();\n var dataIndexInside = finder.hasOwnProperty('dataIndexInside') ? finder.dataIndexInside : finder.hasOwnProperty('dataIndex') ? data.indexOfRawIndex(finder.dataIndex) : null;\n return dataIndexInside != null ? data.getItemVisual(dataIndexInside, visualType) : data.getVisual(visualType);\n};\n/**\n * Get view of corresponding component model\n * @param {module:echarts/model/Component} componentModel\n * @return {module:echarts/view/Component}\n */\n\n\nechartsProto.getViewOfComponentModel = function (componentModel) {\n return this._componentsMap[componentModel.__viewId];\n};\n/**\n * Get view of corresponding series model\n * @param {module:echarts/model/Series} seriesModel\n * @return {module:echarts/view/Chart}\n */\n\n\nechartsProto.getViewOfSeriesModel = function (seriesModel) {\n return this._chartsMap[seriesModel.__viewId];\n};\n\nvar updateMethods = {\n prepareAndUpdate: function (payload) {\n prepare(this);\n updateMethods.update.call(this, payload);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n update: function (payload) {\n // console.profile && console.profile('update');\n var ecModel = this._model;\n var api = this._api;\n var zr = this._zr;\n var coordSysMgr = this._coordSysMgr;\n var scheduler = this._scheduler; // update before setOption\n\n if (!ecModel) {\n return;\n }\n\n scheduler.restoreData(ecModel, payload);\n scheduler.performSeriesTasks(ecModel); // TODO\n // Save total ecModel here for undo/redo (after restoring data and before processing data).\n // Undo (restoration of total ecModel) can be carried out in 'action' or outside API call.\n // Create new coordinate system each update\n // In LineView may save the old coordinate system and use it to get the orignal point\n\n coordSysMgr.create(ecModel, api);\n scheduler.performDataProcessorTasks(ecModel, payload); // Current stream render is not supported in data process. So we can update\n // stream modes after data processing, where the filtered data is used to\n // deteming whether use progressive rendering.\n\n updateStreamModes(this, ecModel); // We update stream modes before coordinate system updated, then the modes info\n // can be fetched when coord sys updating (consider the barGrid extent fix). But\n // the drawback is the full coord info can not be fetched. Fortunately this full\n // coord is not requied in stream mode updater currently.\n\n coordSysMgr.update(ecModel, api);\n clearColorPalette(ecModel);\n scheduler.performVisualTasks(ecModel, payload);\n render(this, ecModel, api, payload); // Set background\n\n var backgroundColor = ecModel.get('backgroundColor') || 'transparent'; // In IE8\n\n if (!env.canvasSupported) {\n var colorArr = colorTool.parse(backgroundColor);\n backgroundColor = colorTool.stringify(colorArr, 'rgb');\n\n if (colorArr[3] === 0) {\n backgroundColor = 'transparent';\n }\n } else {\n zr.setBackgroundColor(backgroundColor);\n }\n\n performPostUpdateFuncs(ecModel, api); // console.profile && console.profileEnd('update');\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateTransform: function (payload) {\n var ecModel = this._model;\n var ecIns = this;\n var api = this._api; // update before setOption\n\n if (!ecModel) {\n return;\n } // ChartView.markUpdateMethod(payload, 'updateTransform');\n\n\n var componentDirtyList = [];\n ecModel.eachComponent(function (componentType, componentModel) {\n var componentView = ecIns.getViewOfComponentModel(componentModel);\n\n if (componentView && componentView.__alive) {\n if (componentView.updateTransform) {\n var result = componentView.updateTransform(componentModel, ecModel, api, payload);\n result && result.update && componentDirtyList.push(componentView);\n } else {\n componentDirtyList.push(componentView);\n }\n }\n });\n var seriesDirtyMap = zrUtil.createHashMap();\n ecModel.eachSeries(function (seriesModel) {\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\n\n if (chartView.updateTransform) {\n var result = chartView.updateTransform(seriesModel, ecModel, api, payload);\n result && result.update && seriesDirtyMap.set(seriesModel.uid, 1);\n } else {\n seriesDirtyMap.set(seriesModel.uid, 1);\n }\n });\n clearColorPalette(ecModel); // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n // this._scheduler.performVisualTasks(ecModel, payload, 'layout', true);\n\n this._scheduler.performVisualTasks(ecModel, payload, {\n setDirty: true,\n dirtyMap: seriesDirtyMap\n }); // Currently, not call render of components. Geo render cost a lot.\n // renderComponents(ecIns, ecModel, api, payload, componentDirtyList);\n\n\n renderSeries(ecIns, ecModel, api, payload, seriesDirtyMap);\n performPostUpdateFuncs(ecModel, this._api);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateView: function (payload) {\n var ecModel = this._model; // update before setOption\n\n if (!ecModel) {\n return;\n }\n\n ChartView.markUpdateMethod(payload, 'updateView');\n clearColorPalette(ecModel); // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n\n this._scheduler.performVisualTasks(ecModel, payload, {\n setDirty: true\n });\n\n render(this, this._model, this._api, payload);\n performPostUpdateFuncs(ecModel, this._api);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateVisual: function (payload) {\n updateMethods.update.call(this, payload); // var ecModel = this._model;\n // // update before setOption\n // if (!ecModel) {\n // return;\n // }\n // ChartView.markUpdateMethod(payload, 'updateVisual');\n // clearColorPalette(ecModel);\n // // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n // this._scheduler.performVisualTasks(ecModel, payload, {visualType: 'visual', setDirty: true});\n // render(this, this._model, this._api, payload);\n // performPostUpdateFuncs(ecModel, this._api);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateLayout: function (payload) {\n updateMethods.update.call(this, payload); // var ecModel = this._model;\n // // update before setOption\n // if (!ecModel) {\n // return;\n // }\n // ChartView.markUpdateMethod(payload, 'updateLayout');\n // // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n // // this._scheduler.performVisualTasks(ecModel, payload, 'layout', true);\n // this._scheduler.performVisualTasks(ecModel, payload, {setDirty: true});\n // render(this, this._model, this._api, payload);\n // performPostUpdateFuncs(ecModel, this._api);\n }\n};\n\nfunction prepare(ecIns) {\n var ecModel = ecIns._model;\n var scheduler = ecIns._scheduler;\n scheduler.restorePipelines(ecModel);\n scheduler.prepareStageTasks();\n prepareView(ecIns, 'component', ecModel, scheduler);\n prepareView(ecIns, 'chart', ecModel, scheduler);\n scheduler.plan();\n}\n/**\n * @private\n */\n\n\nfunction updateDirectly(ecIns, method, payload, mainType, subType) {\n var ecModel = ecIns._model; // broadcast\n\n if (!mainType) {\n // FIXME\n // Chart will not be update directly here, except set dirty.\n // But there is no such scenario now.\n each(ecIns._componentsViews.concat(ecIns._chartsViews), callView);\n return;\n }\n\n var query = {};\n query[mainType + 'Id'] = payload[mainType + 'Id'];\n query[mainType + 'Index'] = payload[mainType + 'Index'];\n query[mainType + 'Name'] = payload[mainType + 'Name'];\n var condition = {\n mainType: mainType,\n query: query\n };\n subType && (condition.subType = subType); // subType may be '' by parseClassType;\n\n var excludeSeriesId = payload.excludeSeriesId;\n\n if (excludeSeriesId != null) {\n excludeSeriesId = zrUtil.createHashMap(modelUtil.normalizeToArray(excludeSeriesId));\n } // If dispatchAction before setOption, do nothing.\n\n\n ecModel && ecModel.eachComponent(condition, function (model) {\n if (!excludeSeriesId || excludeSeriesId.get(model.id) == null) {\n callView(ecIns[mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId]);\n }\n }, ecIns);\n\n function callView(view) {\n view && view.__alive && view[method] && view[method](view.__model, ecModel, ecIns._api, payload);\n }\n}\n/**\n * Resize the chart\n * @param {Object} opts\n * @param {number} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Can be 'auto' (the same as null/undefined)\n * @param {boolean} [opts.silent=false]\n */\n\n\nechartsProto.resize = function (opts) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this._zr.resize(opts);\n\n var ecModel = this._model; // Resize loading effect\n\n this._loadingFX && this._loadingFX.resize();\n\n if (!ecModel) {\n return;\n }\n\n var optionChanged = ecModel.resetOption('media');\n var silent = opts && opts.silent;\n this[IN_MAIN_PROCESS] = true;\n optionChanged && prepare(this);\n updateMethods.update.call(this);\n this[IN_MAIN_PROCESS] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n};\n\nfunction updateStreamModes(ecIns, ecModel) {\n var chartsMap = ecIns._chartsMap;\n var scheduler = ecIns._scheduler;\n ecModel.eachSeries(function (seriesModel) {\n scheduler.updateStreamModes(seriesModel, chartsMap[seriesModel.__viewId]);\n });\n}\n/**\n * Show loading effect\n * @param {string} [name='default']\n * @param {Object} [cfg]\n */\n\n\nechartsProto.showLoading = function (name, cfg) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n if (isObject(name)) {\n cfg = name;\n name = '';\n }\n\n name = name || 'default';\n this.hideLoading();\n\n if (!loadingEffects[name]) {\n return;\n }\n\n var el = loadingEffects[name](this._api, cfg);\n var zr = this._zr;\n this._loadingFX = el;\n zr.add(el);\n};\n/**\n * Hide loading effect\n */\n\n\nechartsProto.hideLoading = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this._loadingFX && this._zr.remove(this._loadingFX);\n this._loadingFX = null;\n};\n/**\n * @param {Object} eventObj\n * @return {Object}\n */\n\n\nechartsProto.makeActionFromEvent = function (eventObj) {\n var payload = zrUtil.extend({}, eventObj);\n payload.type = eventActionMap[eventObj.type];\n return payload;\n};\n/**\n * @pubilc\n * @param {Object} payload\n * @param {string} [payload.type] Action type\n * @param {Object|boolean} [opt] If pass boolean, means opt.silent\n * @param {boolean} [opt.silent=false] Whether trigger events.\n * @param {boolean} [opt.flush=undefined]\n * true: Flush immediately, and then pixel in canvas can be fetched\n * immediately. Caution: it might affect performance.\n * false: Not flush.\n * undefined: Auto decide whether perform flush.\n */\n\n\nechartsProto.dispatchAction = function (payload, opt) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n if (!isObject(opt)) {\n opt = {\n silent: !!opt\n };\n }\n\n if (!actions[payload.type]) {\n return;\n } // Avoid dispatch action before setOption. Especially in `connect`.\n\n\n if (!this._model) {\n return;\n } // May dispatchAction in rendering procedure\n\n\n if (this[IN_MAIN_PROCESS]) {\n this._pendingActions.push(payload);\n\n return;\n }\n\n doDispatchAction.call(this, payload, opt.silent);\n\n if (opt.flush) {\n this._zr.flush(true);\n } else if (opt.flush !== false && env.browser.weChat) {\n // In WeChat embeded browser, `requestAnimationFrame` and `setInterval`\n // hang when sliding page (on touch event), which cause that zr does not\n // refresh util user interaction finished, which is not expected.\n // But `dispatchAction` may be called too frequently when pan on touch\n // screen, which impacts performance if do not throttle them.\n this._throttledZrFlush();\n }\n\n flushPendingActions.call(this, opt.silent);\n triggerUpdatedEvent.call(this, opt.silent);\n};\n\nfunction doDispatchAction(payload, silent) {\n var payloadType = payload.type;\n var escapeConnect = payload.escapeConnect;\n var actionWrap = actions[payloadType];\n var actionInfo = actionWrap.actionInfo;\n var cptType = (actionInfo.update || 'update').split(':');\n var updateMethod = cptType.pop();\n cptType = cptType[0] != null && parseClassType(cptType[0]);\n this[IN_MAIN_PROCESS] = true;\n var payloads = [payload];\n var batched = false; // Batch action\n\n if (payload.batch) {\n batched = true;\n payloads = zrUtil.map(payload.batch, function (item) {\n item = zrUtil.defaults(zrUtil.extend({}, item), payload);\n item.batch = null;\n return item;\n });\n }\n\n var eventObjBatch = [];\n var eventObj;\n var isHighDown = payloadType === 'highlight' || payloadType === 'downplay';\n each(payloads, function (batchItem) {\n // Action can specify the event by return it.\n eventObj = actionWrap.action(batchItem, this._model, this._api); // Emit event outside\n\n eventObj = eventObj || zrUtil.extend({}, batchItem); // Convert type to eventType\n\n eventObj.type = actionInfo.event || eventObj.type;\n eventObjBatch.push(eventObj); // light update does not perform data process, layout and visual.\n\n if (isHighDown) {\n // method, payload, mainType, subType\n updateDirectly(this, updateMethod, batchItem, 'series');\n } else if (cptType) {\n updateDirectly(this, updateMethod, batchItem, cptType.main, cptType.sub);\n }\n }, this);\n\n if (updateMethod !== 'none' && !isHighDown && !cptType) {\n // Still dirty\n if (this[OPTION_UPDATED]) {\n // FIXME Pass payload ?\n prepare(this);\n updateMethods.update.call(this, payload);\n this[OPTION_UPDATED] = false;\n } else {\n updateMethods[updateMethod].call(this, payload);\n }\n } // Follow the rule of action batch\n\n\n if (batched) {\n eventObj = {\n type: actionInfo.event || payloadType,\n escapeConnect: escapeConnect,\n batch: eventObjBatch\n };\n } else {\n eventObj = eventObjBatch[0];\n }\n\n this[IN_MAIN_PROCESS] = false;\n !silent && this._messageCenter.trigger(eventObj.type, eventObj);\n}\n\nfunction flushPendingActions(silent) {\n var pendingActions = this._pendingActions;\n\n while (pendingActions.length) {\n var payload = pendingActions.shift();\n doDispatchAction.call(this, payload, silent);\n }\n}\n\nfunction triggerUpdatedEvent(silent) {\n !silent && this.trigger('updated');\n}\n/**\n * Event `rendered` is triggered when zr\n * rendered. It is useful for realtime\n * snapshot (reflect animation).\n *\n * Event `finished` is triggered when:\n * (1) zrender rendering finished.\n * (2) initial animation finished.\n * (3) progressive rendering finished.\n * (4) no pending action.\n * (5) no delayed setOption needs to be processed.\n */\n\n\nfunction bindRenderedEvent(zr, ecIns) {\n zr.on('rendered', function () {\n ecIns.trigger('rendered'); // The `finished` event should not be triggered repeatly,\n // so it should only be triggered when rendering indeed happend\n // in zrender. (Consider the case that dipatchAction is keep\n // triggering when mouse move).\n\n if ( // Although zr is dirty if initial animation is not finished\n // and this checking is called on frame, we also check\n // animation finished for robustness.\n zr.animation.isFinished() && !ecIns[OPTION_UPDATED] && !ecIns._scheduler.unfinished && !ecIns._pendingActions.length) {\n ecIns.trigger('finished');\n }\n });\n}\n/**\n * @param {Object} params\n * @param {number} params.seriesIndex\n * @param {Array|TypedArray} params.data\n */\n\n\nechartsProto.appendData = function (params) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var seriesIndex = params.seriesIndex;\n var ecModel = this.getModel();\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\n seriesModel.appendData(params); // Note: `appendData` does not support that update extent of coordinate\n // system, util some scenario require that. In the expected usage of\n // `appendData`, the initial extent of coordinate system should better\n // be fixed by axis `min`/`max` setting or initial data, otherwise if\n // the extent changed while `appendData`, the location of the painted\n // graphic elements have to be changed, which make the usage of\n // `appendData` meaningless.\n\n this._scheduler.unfinished = true;\n};\n/**\n * Register event\n * @method\n */\n\n\nechartsProto.on = createRegisterEventWithLowercaseName('on', false);\nechartsProto.off = createRegisterEventWithLowercaseName('off', false);\nechartsProto.one = createRegisterEventWithLowercaseName('one', false);\n/**\n * Prepare view instances of charts and components\n * @param {module:echarts/model/Global} ecModel\n * @private\n */\n\nfunction prepareView(ecIns, type, ecModel, scheduler) {\n var isComponent = type === 'component';\n var viewList = isComponent ? ecIns._componentsViews : ecIns._chartsViews;\n var viewMap = isComponent ? ecIns._componentsMap : ecIns._chartsMap;\n var zr = ecIns._zr;\n var api = ecIns._api;\n\n for (var i = 0; i < viewList.length; i++) {\n viewList[i].__alive = false;\n }\n\n isComponent ? ecModel.eachComponent(function (componentType, model) {\n componentType !== 'series' && doPrepare(model);\n }) : ecModel.eachSeries(doPrepare);\n\n function doPrepare(model) {\n // Consider: id same and type changed.\n var viewId = '_ec_' + model.id + '_' + model.type;\n var view = viewMap[viewId];\n\n if (!view) {\n var classType = parseClassType(model.type);\n var Clazz = isComponent ? ComponentView.getClass(classType.main, classType.sub) : ChartView.getClass(classType.sub);\n view = new Clazz();\n view.init(ecModel, api);\n viewMap[viewId] = view;\n viewList.push(view);\n zr.add(view.group);\n }\n\n model.__viewId = view.__id = viewId;\n view.__alive = true;\n view.__model = model;\n view.group.__ecComponentInfo = {\n mainType: model.mainType,\n index: model.componentIndex\n };\n !isComponent && scheduler.prepareView(view, model, ecModel, api);\n }\n\n for (var i = 0; i < viewList.length;) {\n var view = viewList[i];\n\n if (!view.__alive) {\n !isComponent && view.renderTask.dispose();\n zr.remove(view.group);\n view.dispose(ecModel, api);\n viewList.splice(i, 1);\n delete viewMap[view.__id];\n view.__id = view.group.__ecComponentInfo = null;\n } else {\n i++;\n }\n }\n} // /**\n// * Encode visual infomation from data after data processing\n// *\n// * @param {module:echarts/model/Global} ecModel\n// * @param {object} layout\n// * @param {boolean} [layoutFilter] `true`: only layout,\n// * `false`: only not layout,\n// * `null`/`undefined`: all.\n// * @param {string} taskBaseTag\n// * @private\n// */\n// function startVisualEncoding(ecIns, ecModel, api, payload, layoutFilter) {\n// each(visualFuncs, function (visual, index) {\n// var isLayout = visual.isLayout;\n// if (layoutFilter == null\n// || (layoutFilter === false && !isLayout)\n// || (layoutFilter === true && isLayout)\n// ) {\n// visual.func(ecModel, api, payload);\n// }\n// });\n// }\n\n\nfunction clearColorPalette(ecModel) {\n ecModel.clearColorPalette();\n ecModel.eachSeries(function (seriesModel) {\n seriesModel.clearColorPalette();\n });\n}\n\nfunction render(ecIns, ecModel, api, payload) {\n renderComponents(ecIns, ecModel, api, payload);\n each(ecIns._chartsViews, function (chart) {\n chart.__alive = false;\n });\n renderSeries(ecIns, ecModel, api, payload); // Remove groups of unrendered charts\n\n each(ecIns._chartsViews, function (chart) {\n if (!chart.__alive) {\n chart.remove(ecModel, api);\n }\n });\n}\n\nfunction renderComponents(ecIns, ecModel, api, payload, dirtyList) {\n each(dirtyList || ecIns._componentsViews, function (componentView) {\n var componentModel = componentView.__model;\n componentView.render(componentModel, ecModel, api, payload);\n updateZ(componentModel, componentView);\n });\n}\n/**\n * Render each chart and component\n * @private\n */\n\n\nfunction renderSeries(ecIns, ecModel, api, payload, dirtyMap) {\n // Render all charts\n var scheduler = ecIns._scheduler;\n var unfinished;\n ecModel.eachSeries(function (seriesModel) {\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\n chartView.__alive = true;\n var renderTask = chartView.renderTask;\n scheduler.updatePayload(renderTask, payload);\n\n if (dirtyMap && dirtyMap.get(seriesModel.uid)) {\n renderTask.dirty();\n }\n\n unfinished |= renderTask.perform(scheduler.getPerformArgs(renderTask));\n chartView.group.silent = !!seriesModel.get('silent');\n updateZ(seriesModel, chartView);\n updateBlend(seriesModel, chartView);\n });\n scheduler.unfinished |= unfinished; // If use hover layer\n\n updateHoverLayerStatus(ecIns, ecModel); // Add aria\n\n aria(ecIns._zr.dom, ecModel);\n}\n\nfunction performPostUpdateFuncs(ecModel, api) {\n each(postUpdateFuncs, function (func) {\n func(ecModel, api);\n });\n}\n\nvar MOUSE_EVENT_NAMES = ['click', 'dblclick', 'mouseover', 'mouseout', 'mousemove', 'mousedown', 'mouseup', 'globalout', 'contextmenu'];\n/**\n * @private\n */\n\nechartsProto._initEvents = function () {\n each(MOUSE_EVENT_NAMES, function (eveName) {\n var handler = function (e) {\n var ecModel = this.getModel();\n var el = e.target;\n var params;\n var isGlobalOut = eveName === 'globalout'; // no e.target when 'globalout'.\n\n if (isGlobalOut) {\n params = {};\n } else if (el && el.dataIndex != null) {\n var dataModel = el.dataModel || ecModel.getSeriesByIndex(el.seriesIndex);\n params = dataModel && dataModel.getDataParams(el.dataIndex, el.dataType, el) || {};\n } // If element has custom eventData of components\n else if (el && el.eventData) {\n params = zrUtil.extend({}, el.eventData);\n } // Contract: if params prepared in mouse event,\n // these properties must be specified:\n // {\n // componentType: string (component main type)\n // componentIndex: number\n // }\n // Otherwise event query can not work.\n\n\n if (params) {\n var componentType = params.componentType;\n var componentIndex = params.componentIndex; // Special handling for historic reason: when trigger by\n // markLine/markPoint/markArea, the componentType is\n // 'markLine'/'markPoint'/'markArea', but we should better\n // enable them to be queried by seriesIndex, since their\n // option is set in each series.\n\n if (componentType === 'markLine' || componentType === 'markPoint' || componentType === 'markArea') {\n componentType = 'series';\n componentIndex = params.seriesIndex;\n }\n\n var model = componentType && componentIndex != null && ecModel.getComponent(componentType, componentIndex);\n var view = model && this[model.mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId];\n params.event = e;\n params.type = eveName;\n this._ecEventProcessor.eventInfo = {\n targetEl: el,\n packedEvent: params,\n model: model,\n view: view\n };\n this.trigger(eveName, params);\n }\n }; // Consider that some component (like tooltip, brush, ...)\n // register zr event handler, but user event handler might\n // do anything, such as call `setOption` or `dispatchAction`,\n // which probably update any of the content and probably\n // cause problem if it is called previous other inner handlers.\n\n\n handler.zrEventfulCallAtLast = true;\n\n this._zr.on(eveName, handler, this);\n }, this);\n each(eventActionMap, function (actionType, eventType) {\n this._messageCenter.on(eventType, function (event) {\n this.trigger(eventType, event);\n }, this);\n }, this);\n};\n/**\n * @return {boolean}\n */\n\n\nechartsProto.isDisposed = function () {\n return this._disposed;\n};\n/**\n * Clear\n */\n\n\nechartsProto.clear = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this.setOption({\n series: []\n }, true);\n};\n/**\n * Dispose instance\n */\n\n\nechartsProto.dispose = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this._disposed = true;\n modelUtil.setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, '');\n var api = this._api;\n var ecModel = this._model;\n each(this._componentsViews, function (component) {\n component.dispose(ecModel, api);\n });\n each(this._chartsViews, function (chart) {\n chart.dispose(ecModel, api);\n }); // Dispose after all views disposed\n\n this._zr.dispose();\n\n delete instances[this.id];\n};\n\nzrUtil.mixin(ECharts, Eventful);\n\nfunction disposedWarning(id) {}\n\nfunction updateHoverLayerStatus(ecIns, ecModel) {\n var zr = ecIns._zr;\n var storage = zr.storage;\n var elCount = 0;\n storage.traverse(function (el) {\n elCount++;\n });\n\n if (elCount > ecModel.get('hoverLayerThreshold') && !env.node) {\n ecModel.eachSeries(function (seriesModel) {\n if (seriesModel.preventUsingHoverLayer) {\n return;\n }\n\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\n\n if (chartView.__alive) {\n chartView.group.traverse(function (el) {\n // Don't switch back.\n el.useHoverLayer = true;\n });\n }\n });\n }\n}\n/**\n * Update chart progressive and blend.\n * @param {module:echarts/model/Series|module:echarts/model/Component} model\n * @param {module:echarts/view/Component|module:echarts/view/Chart} view\n */\n\n\nfunction updateBlend(seriesModel, chartView) {\n var blendMode = seriesModel.get('blendMode') || null;\n chartView.group.traverse(function (el) {\n // FIXME marker and other components\n if (!el.isGroup) {\n // Only set if blendMode is changed. In case element is incremental and don't wan't to rerender.\n if (el.style.blend !== blendMode) {\n el.setStyle('blend', blendMode);\n }\n }\n\n if (el.eachPendingDisplayable) {\n el.eachPendingDisplayable(function (displayable) {\n displayable.setStyle('blend', blendMode);\n });\n }\n });\n}\n/**\n * @param {module:echarts/model/Series|module:echarts/model/Component} model\n * @param {module:echarts/view/Component|module:echarts/view/Chart} view\n */\n\n\nfunction updateZ(model, view) {\n var z = model.get('z');\n var zlevel = model.get('zlevel'); // Set z and zlevel\n\n view.group.traverse(function (el) {\n if (el.type !== 'group') {\n z != null && (el.z = z);\n zlevel != null && (el.zlevel = zlevel);\n }\n });\n}\n\nfunction createExtensionAPI(ecInstance) {\n var coordSysMgr = ecInstance._coordSysMgr;\n return zrUtil.extend(new ExtensionAPI(ecInstance), {\n // Inject methods\n getCoordinateSystems: zrUtil.bind(coordSysMgr.getCoordinateSystems, coordSysMgr),\n getComponentByElement: function (el) {\n while (el) {\n var modelInfo = el.__ecComponentInfo;\n\n if (modelInfo != null) {\n return ecInstance._model.getComponent(modelInfo.mainType, modelInfo.index);\n }\n\n el = el.parent;\n }\n }\n });\n}\n/**\n * @class\n * Usage of query:\n * `chart.on('click', query, handler);`\n * The `query` can be:\n * + The component type query string, only `mainType` or `mainType.subType`,\n * like: 'xAxis', 'series', 'xAxis.category' or 'series.line'.\n * + The component query object, like:\n * `{seriesIndex: 2}`, `{seriesName: 'xx'}`, `{seriesId: 'some'}`,\n * `{xAxisIndex: 2}`, `{xAxisName: 'xx'}`, `{xAxisId: 'some'}`.\n * + The data query object, like:\n * `{dataIndex: 123}`, `{dataType: 'link'}`, `{name: 'some'}`.\n * + The other query object (cmponent customized query), like:\n * `{element: 'some'}` (only available in custom series).\n *\n * Caveat: If a prop in the `query` object is `null/undefined`, it is the\n * same as there is no such prop in the `query` object.\n */\n\n\nfunction EventProcessor() {\n // These info required: targetEl, packedEvent, model, view\n this.eventInfo;\n}\n\nEventProcessor.prototype = {\n constructor: EventProcessor,\n normalizeQuery: function (query) {\n var cptQuery = {};\n var dataQuery = {};\n var otherQuery = {}; // `query` is `mainType` or `mainType.subType` of component.\n\n if (zrUtil.isString(query)) {\n var condCptType = parseClassType(query); // `.main` and `.sub` may be ''.\n\n cptQuery.mainType = condCptType.main || null;\n cptQuery.subType = condCptType.sub || null;\n } // `query` is an object, convert to {mainType, index, name, id}.\n else {\n // `xxxIndex`, `xxxName`, `xxxId`, `name`, `dataIndex`, `dataType` is reserved,\n // can not be used in `compomentModel.filterForExposedEvent`.\n var suffixes = ['Index', 'Name', 'Id'];\n var dataKeys = {\n name: 1,\n dataIndex: 1,\n dataType: 1\n };\n zrUtil.each(query, function (val, key) {\n var reserved = false;\n\n for (var i = 0; i < suffixes.length; i++) {\n var propSuffix = suffixes[i];\n var suffixPos = key.lastIndexOf(propSuffix);\n\n if (suffixPos > 0 && suffixPos === key.length - propSuffix.length) {\n var mainType = key.slice(0, suffixPos); // Consider `dataIndex`.\n\n if (mainType !== 'data') {\n cptQuery.mainType = mainType;\n cptQuery[propSuffix.toLowerCase()] = val;\n reserved = true;\n }\n }\n }\n\n if (dataKeys.hasOwnProperty(key)) {\n dataQuery[key] = val;\n reserved = true;\n }\n\n if (!reserved) {\n otherQuery[key] = val;\n }\n });\n }\n\n return {\n cptQuery: cptQuery,\n dataQuery: dataQuery,\n otherQuery: otherQuery\n };\n },\n filter: function (eventType, query, args) {\n // They should be assigned before each trigger call.\n var eventInfo = this.eventInfo;\n\n if (!eventInfo) {\n return true;\n }\n\n var targetEl = eventInfo.targetEl;\n var packedEvent = eventInfo.packedEvent;\n var model = eventInfo.model;\n var view = eventInfo.view; // For event like 'globalout'.\n\n if (!model || !view) {\n return true;\n }\n\n var cptQuery = query.cptQuery;\n var dataQuery = query.dataQuery;\n return check(cptQuery, model, 'mainType') && check(cptQuery, model, 'subType') && check(cptQuery, model, 'index', 'componentIndex') && check(cptQuery, model, 'name') && check(cptQuery, model, 'id') && check(dataQuery, packedEvent, 'name') && check(dataQuery, packedEvent, 'dataIndex') && check(dataQuery, packedEvent, 'dataType') && (!view.filterForExposedEvent || view.filterForExposedEvent(eventType, query.otherQuery, targetEl, packedEvent));\n\n function check(query, host, prop, propOnHost) {\n return query[prop] == null || host[propOnHost || prop] === query[prop];\n }\n },\n afterTrigger: function () {\n // Make sure the eventInfo wont be used in next trigger.\n this.eventInfo = null;\n }\n};\n/**\n * @type {Object} key: actionType.\n * @inner\n */\n\nvar actions = {};\n/**\n * Map eventType to actionType\n * @type {Object}\n */\n\nvar eventActionMap = {};\n/**\n * Data processor functions of each stage\n * @type {Array.>}\n * @inner\n */\n\nvar dataProcessorFuncs = [];\n/**\n * @type {Array.}\n * @inner\n */\n\nvar optionPreprocessorFuncs = [];\n/**\n * @type {Array.}\n * @inner\n */\n\nvar postUpdateFuncs = [];\n/**\n * Visual encoding functions of each stage\n * @type {Array.>}\n */\n\nvar visualFuncs = [];\n/**\n * Theme storage\n * @type {Object.}\n */\n\nvar themeStorage = {};\n/**\n * Loading effects\n */\n\nvar loadingEffects = {};\nvar instances = {};\nvar connectedGroups = {};\nvar idBase = new Date() - 0;\nvar groupIdBase = new Date() - 0;\nvar DOM_ATTRIBUTE_KEY = '_echarts_instance_';\n\nfunction enableConnect(chart) {\n var STATUS_PENDING = 0;\n var STATUS_UPDATING = 1;\n var STATUS_UPDATED = 2;\n var STATUS_KEY = '__connectUpdateStatus';\n\n function updateConnectedChartsStatus(charts, status) {\n for (var i = 0; i < charts.length; i++) {\n var otherChart = charts[i];\n otherChart[STATUS_KEY] = status;\n }\n }\n\n each(eventActionMap, function (actionType, eventType) {\n chart._messageCenter.on(eventType, function (event) {\n if (connectedGroups[chart.group] && chart[STATUS_KEY] !== STATUS_PENDING) {\n if (event && event.escapeConnect) {\n return;\n }\n\n var action = chart.makeActionFromEvent(event);\n var otherCharts = [];\n each(instances, function (otherChart) {\n if (otherChart !== chart && otherChart.group === chart.group) {\n otherCharts.push(otherChart);\n }\n });\n updateConnectedChartsStatus(otherCharts, STATUS_PENDING);\n each(otherCharts, function (otherChart) {\n if (otherChart[STATUS_KEY] !== STATUS_UPDATING) {\n otherChart.dispatchAction(action);\n }\n });\n updateConnectedChartsStatus(otherCharts, STATUS_UPDATED);\n }\n });\n });\n}\n/**\n * @param {HTMLElement} dom\n * @param {Object} [theme]\n * @param {Object} opts\n * @param {number} [opts.devicePixelRatio] Use window.devicePixelRatio by default\n * @param {string} [opts.renderer] Can choose 'canvas' or 'svg' to render the chart.\n * @param {number} [opts.width] Use clientWidth of the input `dom` by default.\n * Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Use clientHeight of the input `dom` by default.\n * Can be 'auto' (the same as null/undefined)\n */\n\n\nfunction init(dom, theme, opts) {\n var existInstance = getInstanceByDom(dom);\n\n if (existInstance) {\n return existInstance;\n }\n\n var chart = new ECharts(dom, theme, opts);\n chart.id = 'ec_' + idBase++;\n instances[chart.id] = chart;\n modelUtil.setAttribute(dom, DOM_ATTRIBUTE_KEY, chart.id);\n enableConnect(chart);\n return chart;\n}\n/**\n * @return {string|Array.} groupId\n */\n\n\nfunction connect(groupId) {\n // Is array of charts\n if (zrUtil.isArray(groupId)) {\n var charts = groupId;\n groupId = null; // If any chart has group\n\n each(charts, function (chart) {\n if (chart.group != null) {\n groupId = chart.group;\n }\n });\n groupId = groupId || 'g_' + groupIdBase++;\n each(charts, function (chart) {\n chart.group = groupId;\n });\n }\n\n connectedGroups[groupId] = true;\n return groupId;\n}\n/**\n * @DEPRECATED\n * @return {string} groupId\n */\n\n\nfunction disConnect(groupId) {\n connectedGroups[groupId] = false;\n}\n/**\n * @return {string} groupId\n */\n\n\nvar disconnect = disConnect;\n/**\n * Dispose a chart instance\n * @param {module:echarts~ECharts|HTMLDomElement|string} chart\n */\n\nfunction dispose(chart) {\n if (typeof chart === 'string') {\n chart = instances[chart];\n } else if (!(chart instanceof ECharts)) {\n // Try to treat as dom\n chart = getInstanceByDom(chart);\n }\n\n if (chart instanceof ECharts && !chart.isDisposed()) {\n chart.dispose();\n }\n}\n/**\n * @param {HTMLElement} dom\n * @return {echarts~ECharts}\n */\n\n\nfunction getInstanceByDom(dom) {\n return instances[modelUtil.getAttribute(dom, DOM_ATTRIBUTE_KEY)];\n}\n/**\n * @param {string} key\n * @return {echarts~ECharts}\n */\n\n\nfunction getInstanceById(key) {\n return instances[key];\n}\n/**\n * Register theme\n */\n\n\nfunction registerTheme(name, theme) {\n themeStorage[name] = theme;\n}\n/**\n * Register option preprocessor\n * @param {Function} preprocessorFunc\n */\n\n\nfunction registerPreprocessor(preprocessorFunc) {\n optionPreprocessorFuncs.push(preprocessorFunc);\n}\n/**\n * @param {number} [priority=1000]\n * @param {Object|Function} processor\n */\n\n\nfunction registerProcessor(priority, processor) {\n normalizeRegister(dataProcessorFuncs, priority, processor, PRIORITY_PROCESSOR_FILTER);\n}\n/**\n * Register postUpdater\n * @param {Function} postUpdateFunc\n */\n\n\nfunction registerPostUpdate(postUpdateFunc) {\n postUpdateFuncs.push(postUpdateFunc);\n}\n/**\n * Usage:\n * registerAction('someAction', 'someEvent', function () { ... });\n * registerAction('someAction', function () { ... });\n * registerAction(\n * {type: 'someAction', event: 'someEvent', update: 'updateView'},\n * function () { ... }\n * );\n *\n * @param {(string|Object)} actionInfo\n * @param {string} actionInfo.type\n * @param {string} [actionInfo.event]\n * @param {string} [actionInfo.update]\n * @param {string} [eventName]\n * @param {Function} action\n */\n\n\nfunction registerAction(actionInfo, eventName, action) {\n if (typeof eventName === 'function') {\n action = eventName;\n eventName = '';\n }\n\n var actionType = isObject(actionInfo) ? actionInfo.type : [actionInfo, actionInfo = {\n event: eventName\n }][0]; // Event name is all lowercase\n\n actionInfo.event = (actionInfo.event || actionType).toLowerCase();\n eventName = actionInfo.event; // Validate action type and event name.\n\n assert(ACTION_REG.test(actionType) && ACTION_REG.test(eventName));\n\n if (!actions[actionType]) {\n actions[actionType] = {\n action: action,\n actionInfo: actionInfo\n };\n }\n\n eventActionMap[eventName] = actionType;\n}\n/**\n * @param {string} type\n * @param {*} CoordinateSystem\n */\n\n\nfunction registerCoordinateSystem(type, CoordinateSystem) {\n CoordinateSystemManager.register(type, CoordinateSystem);\n}\n/**\n * Get dimensions of specified coordinate system.\n * @param {string} type\n * @return {Array.}\n */\n\n\nfunction getCoordinateSystemDimensions(type) {\n var coordSysCreator = CoordinateSystemManager.get(type);\n\n if (coordSysCreator) {\n return coordSysCreator.getDimensionsInfo ? coordSysCreator.getDimensionsInfo() : coordSysCreator.dimensions.slice();\n }\n}\n/**\n * Layout is a special stage of visual encoding\n * Most visual encoding like color are common for different chart\n * But each chart has it's own layout algorithm\n *\n * @param {number} [priority=1000]\n * @param {Function} layoutTask\n */\n\n\nfunction registerLayout(priority, layoutTask) {\n normalizeRegister(visualFuncs, priority, layoutTask, PRIORITY_VISUAL_LAYOUT, 'layout');\n}\n/**\n * @param {number} [priority=3000]\n * @param {module:echarts/stream/Task} visualTask\n */\n\n\nfunction registerVisual(priority, visualTask) {\n normalizeRegister(visualFuncs, priority, visualTask, PRIORITY_VISUAL_CHART, 'visual');\n}\n/**\n * @param {Object|Function} fn: {seriesType, createOnAllSeries, performRawSeries, reset}\n */\n\n\nfunction normalizeRegister(targetList, priority, fn, defaultPriority, visualType) {\n if (isFunction(priority) || isObject(priority)) {\n fn = priority;\n priority = defaultPriority;\n }\n\n var stageHandler = Scheduler.wrapStageHandler(fn, visualType);\n stageHandler.__prio = priority;\n stageHandler.__raw = fn;\n targetList.push(stageHandler);\n return stageHandler;\n}\n/**\n * @param {string} name\n */\n\n\nfunction registerLoading(name, loadingFx) {\n loadingEffects[name] = loadingFx;\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendComponentModel(opts\n/*, superClass*/\n) {\n // var Clazz = ComponentModel;\n // if (superClass) {\n // var classType = parseClassType(superClass);\n // Clazz = ComponentModel.getClass(classType.main, classType.sub, true);\n // }\n return ComponentModel.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendComponentView(opts\n/*, superClass*/\n) {\n // var Clazz = ComponentView;\n // if (superClass) {\n // var classType = parseClassType(superClass);\n // Clazz = ComponentView.getClass(classType.main, classType.sub, true);\n // }\n return ComponentView.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendSeriesModel(opts\n/*, superClass*/\n) {\n // var Clazz = SeriesModel;\n // if (superClass) {\n // superClass = 'series.' + superClass.replace('series.', '');\n // var classType = parseClassType(superClass);\n // Clazz = ComponentModel.getClass(classType.main, classType.sub, true);\n // }\n return SeriesModel.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendChartView(opts\n/*, superClass*/\n) {\n // var Clazz = ChartView;\n // if (superClass) {\n // superClass = superClass.replace('series.', '');\n // var classType = parseClassType(superClass);\n // Clazz = ChartView.getClass(classType.main, true);\n // }\n return ChartView.extend(opts);\n}\n/**\n * ZRender need a canvas context to do measureText.\n * But in node environment canvas may be created by node-canvas.\n * So we need to specify how to create a canvas instead of using document.createElement('canvas')\n *\n * Be careful of using it in the browser.\n *\n * @param {Function} creator\n * @example\n * var Canvas = require('canvas');\n * var echarts = require('echarts');\n * echarts.setCanvasCreator(function () {\n * // Small size is enough.\n * return new Canvas(32, 32);\n * });\n */\n\n\nfunction setCanvasCreator(creator) {\n zrUtil.$override('createCanvas', creator);\n}\n/**\n * @param {string} mapName\n * @param {Array.|Object|string} geoJson\n * @param {Object} [specialAreas]\n *\n * @example GeoJSON\n * $.get('USA.json', function (geoJson) {\n * echarts.registerMap('USA', geoJson);\n * // Or\n * echarts.registerMap('USA', {\n * geoJson: geoJson,\n * specialAreas: {}\n * })\n * });\n *\n * $.get('airport.svg', function (svg) {\n * echarts.registerMap('airport', {\n * svg: svg\n * }\n * });\n *\n * echarts.registerMap('eu', [\n * {svg: eu-topographic.svg},\n * {geoJSON: eu.json}\n * ])\n */\n\n\nfunction registerMap(mapName, geoJson, specialAreas) {\n mapDataStorage.registerMap(mapName, geoJson, specialAreas);\n}\n/**\n * @param {string} mapName\n * @return {Object}\n */\n\n\nfunction getMap(mapName) {\n // For backward compatibility, only return the first one.\n var records = mapDataStorage.retrieveMap(mapName);\n return records && records[0] && {\n geoJson: records[0].geoJSON,\n specialAreas: records[0].specialAreas\n };\n}\n\nregisterVisual(PRIORITY_VISUAL_GLOBAL, seriesColor);\nregisterPreprocessor(backwardCompat);\nregisterProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack);\nregisterLoading('default', loadingDefault); // Default actions\n\nregisterAction({\n type: 'highlight',\n event: 'highlight',\n update: 'highlight'\n}, zrUtil.noop);\nregisterAction({\n type: 'downplay',\n event: 'downplay',\n update: 'downplay'\n}, zrUtil.noop); // Default theme\n\nregisterTheme('light', lightTheme);\nregisterTheme('dark', darkTheme); // For backward compatibility, where the namespace `dataTool` will\n// be mounted on `echarts` is the extension `dataTool` is imported.\n\nvar dataTool = {};\nexports.version = version;\nexports.dependencies = dependencies;\nexports.PRIORITY = PRIORITY;\nexports.init = init;\nexports.connect = connect;\nexports.disConnect = disConnect;\nexports.disconnect = disconnect;\nexports.dispose = dispose;\nexports.getInstanceByDom = getInstanceByDom;\nexports.getInstanceById = getInstanceById;\nexports.registerTheme = registerTheme;\nexports.registerPreprocessor = registerPreprocessor;\nexports.registerProcessor = registerProcessor;\nexports.registerPostUpdate = registerPostUpdate;\nexports.registerAction = registerAction;\nexports.registerCoordinateSystem = registerCoordinateSystem;\nexports.getCoordinateSystemDimensions = getCoordinateSystemDimensions;\nexports.registerLayout = registerLayout;\nexports.registerVisual = registerVisual;\nexports.registerLoading = registerLoading;\nexports.extendComponentModel = extendComponentModel;\nexports.extendComponentView = extendComponentView;\nexports.extendSeriesModel = extendSeriesModel;\nexports.extendChartView = extendChartView;\nexports.setCanvasCreator = setCanvasCreator;\nexports.registerMap = registerMap;\nexports.getMap = getMap;\nexports.dataTool = dataTool;\nvar ___ec_export = require(\"./export\");\n(function () {\n for (var key in ___ec_export) {\n if (___ec_export.hasOwnProperty(key)) {\n exports[key] = ___ec_export[key];\n }\n }\n})();","/* global Float32Array */\nvar ArrayCtor = typeof Float32Array === 'undefined' ? Array : Float32Array;\n/**\n * 创建一个向量\n * @param {number} [x=0]\n * @param {number} [y=0]\n * @return {Vector2}\n */\n\nfunction create(x, y) {\n var out = new ArrayCtor(2);\n\n if (x == null) {\n x = 0;\n }\n\n if (y == null) {\n y = 0;\n }\n\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * 复制向量数据\n * @param {Vector2} out\n * @param {Vector2} v\n * @return {Vector2}\n */\n\n\nfunction copy(out, v) {\n out[0] = v[0];\n out[1] = v[1];\n return out;\n}\n/**\n * 克隆一个向量\n * @param {Vector2} v\n * @return {Vector2}\n */\n\n\nfunction clone(v) {\n var out = new ArrayCtor(2);\n out[0] = v[0];\n out[1] = v[1];\n return out;\n}\n/**\n * 设置向量的两个项\n * @param {Vector2} out\n * @param {number} a\n * @param {number} b\n * @return {Vector2} 结果\n */\n\n\nfunction set(out, a, b) {\n out[0] = a;\n out[1] = b;\n return out;\n}\n/**\n * 向量相加\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction add(out, v1, v2) {\n out[0] = v1[0] + v2[0];\n out[1] = v1[1] + v2[1];\n return out;\n}\n/**\n * 向量缩放后相加\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @param {number} a\n */\n\n\nfunction scaleAndAdd(out, v1, v2, a) {\n out[0] = v1[0] + v2[0] * a;\n out[1] = v1[1] + v2[1] * a;\n return out;\n}\n/**\n * 向量相减\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction sub(out, v1, v2) {\n out[0] = v1[0] - v2[0];\n out[1] = v1[1] - v2[1];\n return out;\n}\n/**\n * 向量长度\n * @param {Vector2} v\n * @return {number}\n */\n\n\nfunction len(v) {\n return Math.sqrt(lenSquare(v));\n}\n\nvar length = len; // jshint ignore:line\n\n/**\n * 向量长度平方\n * @param {Vector2} v\n * @return {number}\n */\n\nfunction lenSquare(v) {\n return v[0] * v[0] + v[1] * v[1];\n}\n\nvar lengthSquare = lenSquare;\n/**\n * 向量乘法\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\nfunction mul(out, v1, v2) {\n out[0] = v1[0] * v2[0];\n out[1] = v1[1] * v2[1];\n return out;\n}\n/**\n * 向量除法\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction div(out, v1, v2) {\n out[0] = v1[0] / v2[0];\n out[1] = v1[1] / v2[1];\n return out;\n}\n/**\n * 向量点乘\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @return {number}\n */\n\n\nfunction dot(v1, v2) {\n return v1[0] * v2[0] + v1[1] * v2[1];\n}\n/**\n * 向量缩放\n * @param {Vector2} out\n * @param {Vector2} v\n * @param {number} s\n */\n\n\nfunction scale(out, v, s) {\n out[0] = v[0] * s;\n out[1] = v[1] * s;\n return out;\n}\n/**\n * 向量归一化\n * @param {Vector2} out\n * @param {Vector2} v\n */\n\n\nfunction normalize(out, v) {\n var d = len(v);\n\n if (d === 0) {\n out[0] = 0;\n out[1] = 0;\n } else {\n out[0] = v[0] / d;\n out[1] = v[1] / d;\n }\n\n return out;\n}\n/**\n * 计算向量间距离\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @return {number}\n */\n\n\nfunction distance(v1, v2) {\n return Math.sqrt((v1[0] - v2[0]) * (v1[0] - v2[0]) + (v1[1] - v2[1]) * (v1[1] - v2[1]));\n}\n\nvar dist = distance;\n/**\n * 向量距离平方\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @return {number}\n */\n\nfunction distanceSquare(v1, v2) {\n return (v1[0] - v2[0]) * (v1[0] - v2[0]) + (v1[1] - v2[1]) * (v1[1] - v2[1]);\n}\n\nvar distSquare = distanceSquare;\n/**\n * 求负向量\n * @param {Vector2} out\n * @param {Vector2} v\n */\n\nfunction negate(out, v) {\n out[0] = -v[0];\n out[1] = -v[1];\n return out;\n}\n/**\n * 插值两个点\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @param {number} t\n */\n\n\nfunction lerp(out, v1, v2, t) {\n out[0] = v1[0] + t * (v2[0] - v1[0]);\n out[1] = v1[1] + t * (v2[1] - v1[1]);\n return out;\n}\n/**\n * 矩阵左乘向量\n * @param {Vector2} out\n * @param {Vector2} v\n * @param {Vector2} m\n */\n\n\nfunction applyTransform(out, v, m) {\n var x = v[0];\n var y = v[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\n * 求两个向量最小值\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction min(out, v1, v2) {\n out[0] = Math.min(v1[0], v2[0]);\n out[1] = Math.min(v1[1], v2[1]);\n return out;\n}\n/**\n * 求两个向量最大值\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction max(out, v1, v2) {\n out[0] = Math.max(v1[0], v2[0]);\n out[1] = Math.max(v1[1], v2[1]);\n return out;\n}\n\nexports.create = create;\nexports.copy = copy;\nexports.clone = clone;\nexports.set = set;\nexports.add = add;\nexports.scaleAndAdd = scaleAndAdd;\nexports.sub = sub;\nexports.len = len;\nexports.length = length;\nexports.lenSquare = lenSquare;\nexports.lengthSquare = lengthSquare;\nexports.mul = mul;\nexports.div = div;\nexports.dot = dot;\nexports.scale = scale;\nexports.normalize = normalize;\nexports.distance = distance;\nexports.dist = dist;\nexports.distanceSquare = distanceSquare;\nexports.distSquare = distSquare;\nexports.negate = negate;\nexports.lerp = lerp;\nexports.applyTransform = applyTransform;\nexports.min = min;\nexports.max = max;","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var LRU = require(\"../core/LRU\");\n\nvar kCSSColorTable = {\n 'transparent': [0, 0, 0, 0],\n 'aliceblue': [240, 248, 255, 1],\n 'antiquewhite': [250, 235, 215, 1],\n 'aqua': [0, 255, 255, 1],\n 'aquamarine': [127, 255, 212, 1],\n 'azure': [240, 255, 255, 1],\n 'beige': [245, 245, 220, 1],\n 'bisque': [255, 228, 196, 1],\n 'black': [0, 0, 0, 1],\n 'blanchedalmond': [255, 235, 205, 1],\n 'blue': [0, 0, 255, 1],\n 'blueviolet': [138, 43, 226, 1],\n 'brown': [165, 42, 42, 1],\n 'burlywood': [222, 184, 135, 1],\n 'cadetblue': [95, 158, 160, 1],\n 'chartreuse': [127, 255, 0, 1],\n 'chocolate': [210, 105, 30, 1],\n 'coral': [255, 127, 80, 1],\n 'cornflowerblue': [100, 149, 237, 1],\n 'cornsilk': [255, 248, 220, 1],\n 'crimson': [220, 20, 60, 1],\n 'cyan': [0, 255, 255, 1],\n 'darkblue': [0, 0, 139, 1],\n 'darkcyan': [0, 139, 139, 1],\n 'darkgoldenrod': [184, 134, 11, 1],\n 'darkgray': [169, 169, 169, 1],\n 'darkgreen': [0, 100, 0, 1],\n 'darkgrey': [169, 169, 169, 1],\n 'darkkhaki': [189, 183, 107, 1],\n 'darkmagenta': [139, 0, 139, 1],\n 'darkolivegreen': [85, 107, 47, 1],\n 'darkorange': [255, 140, 0, 1],\n 'darkorchid': [153, 50, 204, 1],\n 'darkred': [139, 0, 0, 1],\n 'darksalmon': [233, 150, 122, 1],\n 'darkseagreen': [143, 188, 143, 1],\n 'darkslateblue': [72, 61, 139, 1],\n 'darkslategray': [47, 79, 79, 1],\n 'darkslategrey': [47, 79, 79, 1],\n 'darkturquoise': [0, 206, 209, 1],\n 'darkviolet': [148, 0, 211, 1],\n 'deeppink': [255, 20, 147, 1],\n 'deepskyblue': [0, 191, 255, 1],\n 'dimgray': [105, 105, 105, 1],\n 'dimgrey': [105, 105, 105, 1],\n 'dodgerblue': [30, 144, 255, 1],\n 'firebrick': [178, 34, 34, 1],\n 'floralwhite': [255, 250, 240, 1],\n 'forestgreen': [34, 139, 34, 1],\n 'fuchsia': [255, 0, 255, 1],\n 'gainsboro': [220, 220, 220, 1],\n 'ghostwhite': [248, 248, 255, 1],\n 'gold': [255, 215, 0, 1],\n 'goldenrod': [218, 165, 32, 1],\n 'gray': [128, 128, 128, 1],\n 'green': [0, 128, 0, 1],\n 'greenyellow': [173, 255, 47, 1],\n 'grey': [128, 128, 128, 1],\n 'honeydew': [240, 255, 240, 1],\n 'hotpink': [255, 105, 180, 1],\n 'indianred': [205, 92, 92, 1],\n 'indigo': [75, 0, 130, 1],\n 'ivory': [255, 255, 240, 1],\n 'khaki': [240, 230, 140, 1],\n 'lavender': [230, 230, 250, 1],\n 'lavenderblush': [255, 240, 245, 1],\n 'lawngreen': [124, 252, 0, 1],\n 'lemonchiffon': [255, 250, 205, 1],\n 'lightblue': [173, 216, 230, 1],\n 'lightcoral': [240, 128, 128, 1],\n 'lightcyan': [224, 255, 255, 1],\n 'lightgoldenrodyellow': [250, 250, 210, 1],\n 'lightgray': [211, 211, 211, 1],\n 'lightgreen': [144, 238, 144, 1],\n 'lightgrey': [211, 211, 211, 1],\n 'lightpink': [255, 182, 193, 1],\n 'lightsalmon': [255, 160, 122, 1],\n 'lightseagreen': [32, 178, 170, 1],\n 'lightskyblue': [135, 206, 250, 1],\n 'lightslategray': [119, 136, 153, 1],\n 'lightslategrey': [119, 136, 153, 1],\n 'lightsteelblue': [176, 196, 222, 1],\n 'lightyellow': [255, 255, 224, 1],\n 'lime': [0, 255, 0, 1],\n 'limegreen': [50, 205, 50, 1],\n 'linen': [250, 240, 230, 1],\n 'magenta': [255, 0, 255, 1],\n 'maroon': [128, 0, 0, 1],\n 'mediumaquamarine': [102, 205, 170, 1],\n 'mediumblue': [0, 0, 205, 1],\n 'mediumorchid': [186, 85, 211, 1],\n 'mediumpurple': [147, 112, 219, 1],\n 'mediumseagreen': [60, 179, 113, 1],\n 'mediumslateblue': [123, 104, 238, 1],\n 'mediumspringgreen': [0, 250, 154, 1],\n 'mediumturquoise': [72, 209, 204, 1],\n 'mediumvioletred': [199, 21, 133, 1],\n 'midnightblue': [25, 25, 112, 1],\n 'mintcream': [245, 255, 250, 1],\n 'mistyrose': [255, 228, 225, 1],\n 'moccasin': [255, 228, 181, 1],\n 'navajowhite': [255, 222, 173, 1],\n 'navy': [0, 0, 128, 1],\n 'oldlace': [253, 245, 230, 1],\n 'olive': [128, 128, 0, 1],\n 'olivedrab': [107, 142, 35, 1],\n 'orange': [255, 165, 0, 1],\n 'orangered': [255, 69, 0, 1],\n 'orchid': [218, 112, 214, 1],\n 'palegoldenrod': [238, 232, 170, 1],\n 'palegreen': [152, 251, 152, 1],\n 'paleturquoise': [175, 238, 238, 1],\n 'palevioletred': [219, 112, 147, 1],\n 'papayawhip': [255, 239, 213, 1],\n 'peachpuff': [255, 218, 185, 1],\n 'peru': [205, 133, 63, 1],\n 'pink': [255, 192, 203, 1],\n 'plum': [221, 160, 221, 1],\n 'powderblue': [176, 224, 230, 1],\n 'purple': [128, 0, 128, 1],\n 'red': [255, 0, 0, 1],\n 'rosybrown': [188, 143, 143, 1],\n 'royalblue': [65, 105, 225, 1],\n 'saddlebrown': [139, 69, 19, 1],\n 'salmon': [250, 128, 114, 1],\n 'sandybrown': [244, 164, 96, 1],\n 'seagreen': [46, 139, 87, 1],\n 'seashell': [255, 245, 238, 1],\n 'sienna': [160, 82, 45, 1],\n 'silver': [192, 192, 192, 1],\n 'skyblue': [135, 206, 235, 1],\n 'slateblue': [106, 90, 205, 1],\n 'slategray': [112, 128, 144, 1],\n 'slategrey': [112, 128, 144, 1],\n 'snow': [255, 250, 250, 1],\n 'springgreen': [0, 255, 127, 1],\n 'steelblue': [70, 130, 180, 1],\n 'tan': [210, 180, 140, 1],\n 'teal': [0, 128, 128, 1],\n 'thistle': [216, 191, 216, 1],\n 'tomato': [255, 99, 71, 1],\n 'turquoise': [64, 224, 208, 1],\n 'violet': [238, 130, 238, 1],\n 'wheat': [245, 222, 179, 1],\n 'white': [255, 255, 255, 1],\n 'whitesmoke': [245, 245, 245, 1],\n 'yellow': [255, 255, 0, 1],\n 'yellowgreen': [154, 205, 50, 1]\n};\n\nfunction clampCssByte(i) {\n // Clamp to integer 0 .. 255.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clampCssAngle(i) {\n // Clamp to integer 0 .. 360.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n\n return i < 0 ? 0 : i > 360 ? 360 : i;\n}\n\nfunction clampCssFloat(f) {\n // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parseCssInt(str) {\n // int or percentage.\n if (str.length && str.charAt(str.length - 1) === '%') {\n return clampCssByte(parseFloat(str) / 100 * 255);\n }\n\n return clampCssByte(parseInt(str, 10));\n}\n\nfunction parseCssFloat(str) {\n // float or percentage.\n if (str.length && str.charAt(str.length - 1) === '%') {\n return clampCssFloat(parseFloat(str) / 100);\n }\n\n return clampCssFloat(parseFloat(str));\n}\n\nfunction cssHueToRgb(m1, m2, h) {\n if (h < 0) {\n h += 1;\n } else if (h > 1) {\n h -= 1;\n }\n\n if (h * 6 < 1) {\n return m1 + (m2 - m1) * h * 6;\n }\n\n if (h * 2 < 1) {\n return m2;\n }\n\n if (h * 3 < 2) {\n return m1 + (m2 - m1) * (2 / 3 - h) * 6;\n }\n\n return m1;\n}\n\nfunction lerpNumber(a, b, p) {\n return a + (b - a) * p;\n}\n\nfunction setRgba(out, r, g, b, a) {\n out[0] = r;\n out[1] = g;\n out[2] = b;\n out[3] = a;\n return out;\n}\n\nfunction copyRgba(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n\nvar colorCache = new LRU(20);\nvar lastRemovedArr = null;\n\nfunction putToCache(colorStr, rgbaArr) {\n // Reuse removed array\n if (lastRemovedArr) {\n copyRgba(lastRemovedArr, rgbaArr);\n }\n\n lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || rgbaArr.slice());\n}\n/**\n * @param {string} colorStr\n * @param {Array.} out\n * @return {Array.}\n * @memberOf module:zrender/util/color\n */\n\n\nfunction parse(colorStr, rgbaArr) {\n if (!colorStr) {\n return;\n }\n\n rgbaArr = rgbaArr || [];\n var cached = colorCache.get(colorStr);\n\n if (cached) {\n return copyRgba(rgbaArr, cached);\n } // colorStr may be not string\n\n\n colorStr = colorStr + ''; // Remove all whitespace, not compliant, but should just be more accepting.\n\n var str = colorStr.replace(/ /g, '').toLowerCase(); // Color keywords (and transparent) lookup.\n\n if (str in kCSSColorTable) {\n copyRgba(rgbaArr, kCSSColorTable[str]);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n } // #abc and #abc123 syntax.\n\n\n if (str.charAt(0) === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n\n if (!(iv >= 0 && iv <= 0xfff)) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return; // Covers NaN.\n }\n\n setRgba(rgbaArr, (iv & 0xf00) >> 4 | (iv & 0xf00) >> 8, iv & 0xf0 | (iv & 0xf0) >> 4, iv & 0xf | (iv & 0xf) << 4, 1);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n\n if (!(iv >= 0 && iv <= 0xffffff)) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return; // Covers NaN.\n }\n\n setRgba(rgbaArr, (iv & 0xff0000) >> 16, (iv & 0xff00) >> 8, iv & 0xff, 1);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n }\n\n return;\n }\n\n var op = str.indexOf('(');\n var ep = str.indexOf(')');\n\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op + 1, ep - (op + 1)).split(',');\n var alpha = 1; // To allow case fallthrough.\n\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n\n alpha = parseCssFloat(params.pop());\n // jshint ignore:line\n // Fall through.\n\n case 'rgb':\n if (params.length !== 3) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n\n setRgba(rgbaArr, parseCssInt(params[0]), parseCssInt(params[1]), parseCssInt(params[2]), alpha);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n\n case 'hsla':\n if (params.length !== 4) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n\n params[3] = parseCssFloat(params[3]);\n hsla2rgba(params, rgbaArr);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n\n case 'hsl':\n if (params.length !== 3) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n\n hsla2rgba(params, rgbaArr);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n\n default:\n return;\n }\n }\n\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n}\n/**\n * @param {Array.} hsla\n * @param {Array.} rgba\n * @return {Array.} rgba\n */\n\n\nfunction hsla2rgba(hsla, rgba) {\n var h = (parseFloat(hsla[0]) % 360 + 360) % 360 / 360; // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n\n var s = parseCssFloat(hsla[1]);\n var l = parseCssFloat(hsla[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n rgba = rgba || [];\n setRgba(rgba, clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255), clampCssByte(cssHueToRgb(m1, m2, h) * 255), clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255), 1);\n\n if (hsla.length === 4) {\n rgba[3] = hsla[3];\n }\n\n return rgba;\n}\n/**\n * @param {Array.} rgba\n * @return {Array.} hsla\n */\n\n\nfunction rgba2hsla(rgba) {\n if (!rgba) {\n return;\n } // RGB from 0 to 255\n\n\n var R = rgba[0] / 255;\n var G = rgba[1] / 255;\n var B = rgba[2] / 255;\n var vMin = Math.min(R, G, B); // Min. value of RGB\n\n var vMax = Math.max(R, G, B); // Max. value of RGB\n\n var delta = vMax - vMin; // Delta RGB value\n\n var L = (vMax + vMin) / 2;\n var H;\n var S; // HSL results from 0 to 1\n\n if (delta === 0) {\n H = 0;\n S = 0;\n } else {\n if (L < 0.5) {\n S = delta / (vMax + vMin);\n } else {\n S = delta / (2 - vMax - vMin);\n }\n\n var deltaR = ((vMax - R) / 6 + delta / 2) / delta;\n var deltaG = ((vMax - G) / 6 + delta / 2) / delta;\n var deltaB = ((vMax - B) / 6 + delta / 2) / delta;\n\n if (R === vMax) {\n H = deltaB - deltaG;\n } else if (G === vMax) {\n H = 1 / 3 + deltaR - deltaB;\n } else if (B === vMax) {\n H = 2 / 3 + deltaG - deltaR;\n }\n\n if (H < 0) {\n H += 1;\n }\n\n if (H > 1) {\n H -= 1;\n }\n }\n\n var hsla = [H * 360, S, L];\n\n if (rgba[3] != null) {\n hsla.push(rgba[3]);\n }\n\n return hsla;\n}\n/**\n * @param {string} color\n * @param {number} level\n * @return {string}\n * @memberOf module:zrender/util/color\n */\n\n\nfunction lift(color, level) {\n var colorArr = parse(color);\n\n if (colorArr) {\n for (var i = 0; i < 3; i++) {\n if (level < 0) {\n colorArr[i] = colorArr[i] * (1 - level) | 0;\n } else {\n colorArr[i] = (255 - colorArr[i]) * level + colorArr[i] | 0;\n }\n\n if (colorArr[i] > 255) {\n colorArr[i] = 255;\n } else if (color[i] < 0) {\n colorArr[i] = 0;\n }\n }\n\n return stringify(colorArr, colorArr.length === 4 ? 'rgba' : 'rgb');\n }\n}\n/**\n * @param {string} color\n * @return {string}\n * @memberOf module:zrender/util/color\n */\n\n\nfunction toHex(color) {\n var colorArr = parse(color);\n\n if (colorArr) {\n return ((1 << 24) + (colorArr[0] << 16) + (colorArr[1] << 8) + +colorArr[2]).toString(16).slice(1);\n }\n}\n/**\n * Map value to color. Faster than lerp methods because color is represented by rgba array.\n * @param {number} normalizedValue A float between 0 and 1.\n * @param {Array.>} colors List of rgba color array\n * @param {Array.} [out] Mapped gba color array\n * @return {Array.} will be null/undefined if input illegal.\n */\n\n\nfunction fastLerp(normalizedValue, colors, out) {\n if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) {\n return;\n }\n\n out = out || [];\n var value = normalizedValue * (colors.length - 1);\n var leftIndex = Math.floor(value);\n var rightIndex = Math.ceil(value);\n var leftColor = colors[leftIndex];\n var rightColor = colors[rightIndex];\n var dv = value - leftIndex;\n out[0] = clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv));\n out[1] = clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv));\n out[2] = clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv));\n out[3] = clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv));\n return out;\n}\n/**\n * @deprecated\n */\n\n\nvar fastMapToColor = fastLerp;\n/**\n * @param {number} normalizedValue A float between 0 and 1.\n * @param {Array.} colors Color list.\n * @param {boolean=} fullOutput Default false.\n * @return {(string|Object)} Result color. If fullOutput,\n * return {color: ..., leftIndex: ..., rightIndex: ..., value: ...},\n * @memberOf module:zrender/util/color\n */\n\nfunction lerp(normalizedValue, colors, fullOutput) {\n if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) {\n return;\n }\n\n var value = normalizedValue * (colors.length - 1);\n var leftIndex = Math.floor(value);\n var rightIndex = Math.ceil(value);\n var leftColor = parse(colors[leftIndex]);\n var rightColor = parse(colors[rightIndex]);\n var dv = value - leftIndex;\n var color = stringify([clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)), clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)), clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)), clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv))], 'rgba');\n return fullOutput ? {\n color: color,\n leftIndex: leftIndex,\n rightIndex: rightIndex,\n value: value\n } : color;\n}\n/**\n * @deprecated\n */\n\n\nvar mapToColor = lerp;\n/**\n * @param {string} color\n * @param {number=} h 0 ~ 360, ignore when null.\n * @param {number=} s 0 ~ 1, ignore when null.\n * @param {number=} l 0 ~ 1, ignore when null.\n * @return {string} Color string in rgba format.\n * @memberOf module:zrender/util/color\n */\n\nfunction modifyHSL(color, h, s, l) {\n color = parse(color);\n\n if (color) {\n color = rgba2hsla(color);\n h != null && (color[0] = clampCssAngle(h));\n s != null && (color[1] = parseCssFloat(s));\n l != null && (color[2] = parseCssFloat(l));\n return stringify(hsla2rgba(color), 'rgba');\n }\n}\n/**\n * @param {string} color\n * @param {number=} alpha 0 ~ 1\n * @return {string} Color string in rgba format.\n * @memberOf module:zrender/util/color\n */\n\n\nfunction modifyAlpha(color, alpha) {\n color = parse(color);\n\n if (color && alpha != null) {\n color[3] = clampCssFloat(alpha);\n return stringify(color, 'rgba');\n }\n}\n/**\n * @param {Array.} arrColor like [12,33,44,0.4]\n * @param {string} type 'rgba', 'hsva', ...\n * @return {string} Result color. (If input illegal, return undefined).\n */\n\n\nfunction stringify(arrColor, type) {\n if (!arrColor || !arrColor.length) {\n return;\n }\n\n var colorStr = arrColor[0] + ',' + arrColor[1] + ',' + arrColor[2];\n\n if (type === 'rgba' || type === 'hsva' || type === 'hsla') {\n colorStr += ',' + arrColor[3];\n }\n\n return type + '(' + colorStr + ')';\n}\n\nexports.parse = parse;\nexports.lift = lift;\nexports.toHex = toHex;\nexports.fastLerp = fastLerp;\nexports.fastMapToColor = fastMapToColor;\nexports.lerp = lerp;\nexports.mapToColor = mapToColor;\nexports.modifyHSL = modifyHSL;\nexports.modifyAlpha = modifyAlpha;\nexports.stringify = stringify;","/**\n * @param {Array.} colorStops\n */\nvar Gradient = function (colorStops) {\n this.colorStops = colorStops || [];\n};\n\nGradient.prototype = {\n constructor: Gradient,\n addColorStop: function (offset, color) {\n this.colorStops.push({\n offset: offset,\n color: color\n });\n }\n};\nvar _default = Gradient;\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 echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar TooltipContent = require(\"./TooltipContent\");\n\nvar TooltipRichContent = require(\"./TooltipRichContent\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar findPointFromSeries = require(\"../axisPointer/findPointFromSeries\");\n\nvar layoutUtil = require(\"../../util/layout\");\n\nvar Model = require(\"../../model/Model\");\n\nvar globalListener = require(\"../axisPointer/globalListener\");\n\nvar axisHelper = require(\"../../coord/axisHelper\");\n\nvar axisPointerViewHelper = require(\"../axisPointer/viewHelper\");\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 bind = zrUtil.bind;\nvar each = zrUtil.each;\nvar parsePercent = numberUtil.parsePercent;\nvar proxyRect = new graphic.Rect({\n shape: {\n x: -1,\n y: -1,\n width: 2,\n height: 2\n }\n});\n\nvar _default = echarts.extendComponentView({\n type: 'tooltip',\n init: function (ecModel, api) {\n if (env.node) {\n return;\n }\n\n var tooltipModel = ecModel.getComponent('tooltip');\n var renderMode = tooltipModel.get('renderMode');\n this._renderMode = getTooltipRenderMode(renderMode);\n var tooltipContent;\n\n if (this._renderMode === 'html') {\n tooltipContent = new TooltipContent(api.getDom(), api, {\n appendToBody: tooltipModel.get('appendToBody', true)\n });\n this._newLine = '
';\n } else {\n tooltipContent = new TooltipRichContent(api);\n this._newLine = '\\n';\n }\n\n this._tooltipContent = tooltipContent;\n },\n render: function (tooltipModel, ecModel, api) {\n if (env.node) {\n return;\n } // Reset\n\n\n this.group.removeAll();\n /**\n * @private\n * @type {module:echarts/component/tooltip/TooltipModel}\n */\n\n this._tooltipModel = tooltipModel;\n /**\n * @private\n * @type {module:echarts/model/Global}\n */\n\n this._ecModel = ecModel;\n /**\n * @private\n * @type {module:echarts/ExtensionAPI}\n */\n\n this._api = api;\n /**\n * Should be cleaned when render.\n * @private\n * @type {Array.>}\n */\n\n this._lastDataByCoordSys = null;\n /**\n * @private\n * @type {boolean}\n */\n\n this._alwaysShowContent = tooltipModel.get('alwaysShowContent');\n var tooltipContent = this._tooltipContent;\n tooltipContent.update();\n tooltipContent.setEnterable(tooltipModel.get('enterable'));\n\n this._initGlobalListener();\n\n this._keepShow();\n },\n _initGlobalListener: function () {\n var tooltipModel = this._tooltipModel;\n var triggerOn = tooltipModel.get('triggerOn');\n globalListener.register('itemTooltip', this._api, bind(function (currTrigger, e, dispatchAction) {\n // If 'none', it is not controlled by mouse totally.\n if (triggerOn !== 'none') {\n if (triggerOn.indexOf(currTrigger) >= 0) {\n this._tryShow(e, dispatchAction);\n } else if (currTrigger === 'leave') {\n this._hide(dispatchAction);\n }\n }\n }, this));\n },\n _keepShow: function () {\n var tooltipModel = this._tooltipModel;\n var ecModel = this._ecModel;\n var api = this._api; // Try to keep the tooltip show when refreshing\n\n if (this._lastX != null && this._lastY != null // When user is willing to control tooltip totally using API,\n // self.manuallyShowTip({x, y}) might cause tooltip hide,\n // which is not expected.\n && tooltipModel.get('triggerOn') !== 'none') {\n var self = this;\n clearTimeout(this._refreshUpdateTimeout);\n this._refreshUpdateTimeout = setTimeout(function () {\n // Show tip next tick after other charts are rendered\n // In case highlight action has wrong result\n // FIXME\n !api.isDisposed() && self.manuallyShowTip(tooltipModel, ecModel, api, {\n x: self._lastX,\n y: self._lastY\n });\n });\n }\n },\n\n /**\n * Show tip manually by\n * dispatchAction({\n * type: 'showTip',\n * x: 10,\n * y: 10\n * });\n * Or\n * dispatchAction({\n * type: 'showTip',\n * seriesIndex: 0,\n * dataIndex or dataIndexInside or name\n * });\n *\n * TODO Batch\n */\n manuallyShowTip: function (tooltipModel, ecModel, api, payload) {\n if (payload.from === this.uid || env.node) {\n return;\n }\n\n var dispatchAction = makeDispatchAction(payload, api); // Reset ticket\n\n this._ticket = ''; // When triggered from axisPointer.\n\n var dataByCoordSys = payload.dataByCoordSys;\n\n if (payload.tooltip && payload.x != null && payload.y != null) {\n var el = proxyRect;\n el.position = [payload.x, payload.y];\n el.update();\n el.tooltip = payload.tooltip; // Manually show tooltip while view is not using zrender elements.\n\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n target: el\n }, dispatchAction);\n } else if (dataByCoordSys) {\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n position: payload.position,\n dataByCoordSys: payload.dataByCoordSys,\n tooltipOption: payload.tooltipOption\n }, dispatchAction);\n } else if (payload.seriesIndex != null) {\n if (this._manuallyAxisShowTip(tooltipModel, ecModel, api, payload)) {\n return;\n }\n\n var pointInfo = findPointFromSeries(payload, ecModel);\n var cx = pointInfo.point[0];\n var cy = pointInfo.point[1];\n\n if (cx != null && cy != null) {\n this._tryShow({\n offsetX: cx,\n offsetY: cy,\n position: payload.position,\n target: pointInfo.el\n }, dispatchAction);\n }\n } else if (payload.x != null && payload.y != null) {\n // FIXME\n // should wrap dispatchAction like `axisPointer/globalListener` ?\n api.dispatchAction({\n type: 'updateAxisPointer',\n x: payload.x,\n y: payload.y\n });\n\n this._tryShow({\n offsetX: payload.x,\n offsetY: payload.y,\n position: payload.position,\n target: api.getZr().findHover(payload.x, payload.y).target\n }, dispatchAction);\n }\n },\n manuallyHideTip: function (tooltipModel, ecModel, api, payload) {\n var tooltipContent = this._tooltipContent;\n\n if (!this._alwaysShowContent && this._tooltipModel) {\n tooltipContent.hideLater(this._tooltipModel.get('hideDelay'));\n }\n\n this._lastX = this._lastY = null;\n\n if (payload.from !== this.uid) {\n this._hide(makeDispatchAction(payload, api));\n }\n },\n // Be compatible with previous design, that is, when tooltip.type is 'axis' and\n // dispatchAction 'showTip' with seriesIndex and dataIndex will trigger axis pointer\n // and tooltip.\n _manuallyAxisShowTip: function (tooltipModel, ecModel, api, payload) {\n var seriesIndex = payload.seriesIndex;\n var dataIndex = payload.dataIndex;\n var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo;\n\n if (seriesIndex == null || dataIndex == null || coordSysAxesInfo == null) {\n return;\n }\n\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\n\n if (!seriesModel) {\n return;\n }\n\n var data = seriesModel.getData();\n var tooltipModel = buildTooltipModel([data.getItemModel(dataIndex), seriesModel, (seriesModel.coordinateSystem || {}).model, tooltipModel]);\n\n if (tooltipModel.get('trigger') !== 'axis') {\n return;\n }\n\n api.dispatchAction({\n type: 'updateAxisPointer',\n seriesIndex: seriesIndex,\n dataIndex: dataIndex,\n position: payload.position\n });\n return true;\n },\n _tryShow: function (e, dispatchAction) {\n var el = e.target;\n var tooltipModel = this._tooltipModel;\n\n if (!tooltipModel) {\n return;\n } // Save mouse x, mouse y. So we can try to keep showing the tip if chart is refreshed\n\n\n this._lastX = e.offsetX;\n this._lastY = e.offsetY;\n var dataByCoordSys = e.dataByCoordSys;\n\n if (dataByCoordSys && dataByCoordSys.length) {\n this._showAxisTooltip(dataByCoordSys, e);\n } // Always show item tooltip if mouse is on the element with dataIndex\n else if (el && el.dataIndex != null) {\n this._lastDataByCoordSys = null;\n\n this._showSeriesItemTooltip(e, el, dispatchAction);\n } // Tooltip provided directly. Like legend.\n else if (el && el.tooltip) {\n this._lastDataByCoordSys = null;\n\n this._showComponentItemTooltip(e, el, dispatchAction);\n } else {\n this._lastDataByCoordSys = null;\n\n this._hide(dispatchAction);\n }\n },\n _showOrMove: function (tooltipModel, cb) {\n // showDelay is used in this case: tooltip.enterable is set\n // as true. User intent to move mouse into tooltip and click\n // something. `showDelay` makes it easyer to enter the content\n // but tooltip do not move immediately.\n var delay = tooltipModel.get('showDelay');\n cb = zrUtil.bind(cb, this);\n clearTimeout(this._showTimout);\n delay > 0 ? this._showTimout = setTimeout(cb, delay) : cb();\n },\n _showAxisTooltip: function (dataByCoordSys, e) {\n var ecModel = this._ecModel;\n var globalTooltipModel = this._tooltipModel;\n var point = [e.offsetX, e.offsetY];\n var singleDefaultHTML = [];\n var singleParamsList = [];\n var singleTooltipModel = buildTooltipModel([e.tooltipOption, globalTooltipModel]);\n var renderMode = this._renderMode;\n var newLine = this._newLine;\n var markers = {};\n each(dataByCoordSys, function (itemCoordSys) {\n // var coordParamList = [];\n // var coordDefaultHTML = [];\n // var coordTooltipModel = buildTooltipModel([\n // e.tooltipOption,\n // itemCoordSys.tooltipOption,\n // ecModel.getComponent(itemCoordSys.coordSysMainType, itemCoordSys.coordSysIndex),\n // globalTooltipModel\n // ]);\n // var displayMode = coordTooltipModel.get('displayMode');\n // var paramsList = displayMode === 'single' ? singleParamsList : [];\n each(itemCoordSys.dataByAxis, function (item) {\n var axisModel = ecModel.getComponent(item.axisDim + 'Axis', item.axisIndex);\n var axisValue = item.value;\n var seriesDefaultHTML = [];\n\n if (!axisModel || axisValue == null) {\n return;\n }\n\n var valueLabel = axisPointerViewHelper.getValueLabel(axisValue, axisModel.axis, ecModel, item.seriesDataIndices, item.valueLabelOpt);\n zrUtil.each(item.seriesDataIndices, function (idxItem) {\n var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\n var dataIndex = idxItem.dataIndexInside;\n var dataParams = series && series.getDataParams(dataIndex);\n dataParams.axisDim = item.axisDim;\n dataParams.axisIndex = item.axisIndex;\n dataParams.axisType = item.axisType;\n dataParams.axisId = item.axisId;\n dataParams.axisValue = axisHelper.getAxisRawValue(axisModel.axis, axisValue);\n dataParams.axisValueLabel = valueLabel;\n\n if (dataParams) {\n singleParamsList.push(dataParams);\n var seriesTooltip = series.formatTooltip(dataIndex, true, null, renderMode);\n var html;\n\n if (zrUtil.isObject(seriesTooltip)) {\n html = seriesTooltip.html;\n var newMarkers = seriesTooltip.markers;\n zrUtil.merge(markers, newMarkers);\n } else {\n html = seriesTooltip;\n }\n\n seriesDefaultHTML.push(html);\n }\n }); // Default tooltip content\n // FIXME\n // (1) shold be the first data which has name?\n // (2) themeRiver, firstDataIndex is array, and first line is unnecessary.\n\n var firstLine = valueLabel;\n\n if (renderMode !== 'html') {\n singleDefaultHTML.push(seriesDefaultHTML.join(newLine));\n } else {\n singleDefaultHTML.push((firstLine ? formatUtil.encodeHTML(firstLine) + newLine : '') + seriesDefaultHTML.join(newLine));\n }\n });\n }, this); // In most case, the second axis is shown upper than the first one.\n\n singleDefaultHTML.reverse();\n singleDefaultHTML = singleDefaultHTML.join(this._newLine + this._newLine);\n var positionExpr = e.position;\n\n this._showOrMove(singleTooltipModel, function () {\n if (this._updateContentNotChangedOnAxis(dataByCoordSys)) {\n this._updatePosition(singleTooltipModel, positionExpr, point[0], point[1], this._tooltipContent, singleParamsList);\n } else {\n this._showTooltipContent(singleTooltipModel, singleDefaultHTML, singleParamsList, Math.random(), point[0], point[1], positionExpr, undefined, markers);\n }\n }); // Do not trigger events here, because this branch only be entered\n // from dispatchAction.\n\n },\n _showSeriesItemTooltip: function (e, el, dispatchAction) {\n var ecModel = this._ecModel; // Use dataModel in element if possible\n // Used when mouseover on a element like markPoint or edge\n // In which case, the data is not main data in series.\n\n var seriesIndex = el.seriesIndex;\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex); // For example, graph link.\n\n var dataModel = el.dataModel || seriesModel;\n var dataIndex = el.dataIndex;\n var dataType = el.dataType;\n var data = dataModel.getData(dataType);\n var tooltipModel = buildTooltipModel([data.getItemModel(dataIndex), dataModel, seriesModel && (seriesModel.coordinateSystem || {}).model, this._tooltipModel]);\n var tooltipTrigger = tooltipModel.get('trigger');\n\n if (tooltipTrigger != null && tooltipTrigger !== 'item') {\n return;\n }\n\n var params = dataModel.getDataParams(dataIndex, dataType);\n var seriesTooltip = dataModel.formatTooltip(dataIndex, false, dataType, this._renderMode);\n var defaultHtml;\n var markers;\n\n if (zrUtil.isObject(seriesTooltip)) {\n defaultHtml = seriesTooltip.html;\n markers = seriesTooltip.markers;\n } else {\n defaultHtml = seriesTooltip;\n markers = null;\n }\n\n var asyncTicket = 'item_' + dataModel.name + '_' + dataIndex;\n\n this._showOrMove(tooltipModel, function () {\n this._showTooltipContent(tooltipModel, defaultHtml, params, asyncTicket, e.offsetX, e.offsetY, e.position, e.target, markers);\n }); // FIXME\n // duplicated showtip if manuallyShowTip is called from dispatchAction.\n\n\n dispatchAction({\n type: 'showTip',\n dataIndexInside: dataIndex,\n dataIndex: data.getRawIndex(dataIndex),\n seriesIndex: seriesIndex,\n from: this.uid\n });\n },\n _showComponentItemTooltip: function (e, el, dispatchAction) {\n var tooltipOpt = el.tooltip;\n\n if (typeof tooltipOpt === 'string') {\n var content = tooltipOpt;\n tooltipOpt = {\n content: content,\n // Fixed formatter\n formatter: content\n };\n }\n\n var subTooltipModel = new Model(tooltipOpt, this._tooltipModel, this._ecModel);\n var defaultHtml = subTooltipModel.get('content');\n var asyncTicket = Math.random(); // Do not check whether `trigger` is 'none' here, because `trigger`\n // only works on cooridinate system. In fact, we have not found case\n // that requires setting `trigger` nothing on component yet.\n\n this._showOrMove(subTooltipModel, function () {\n this._showTooltipContent(subTooltipModel, defaultHtml, subTooltipModel.get('formatterParams') || {}, asyncTicket, e.offsetX, e.offsetY, e.position, el);\n }); // If not dispatch showTip, tip may be hide triggered by axis.\n\n\n dispatchAction({\n type: 'showTip',\n from: this.uid\n });\n },\n _showTooltipContent: function (tooltipModel, defaultHtml, params, asyncTicket, x, y, positionExpr, el, markers) {\n // Reset ticket\n this._ticket = '';\n\n if (!tooltipModel.get('showContent') || !tooltipModel.get('show')) {\n return;\n }\n\n var tooltipContent = this._tooltipContent;\n var formatter = tooltipModel.get('formatter');\n positionExpr = positionExpr || tooltipModel.get('position');\n var html = defaultHtml;\n\n if (formatter && typeof formatter === 'string') {\n html = formatUtil.formatTpl(formatter, params, true);\n } else if (typeof formatter === 'function') {\n var callback = bind(function (cbTicket, html) {\n if (cbTicket === this._ticket) {\n tooltipContent.setContent(html, markers, tooltipModel);\n\n this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\n }\n }, this);\n this._ticket = asyncTicket;\n html = formatter(params, asyncTicket, callback);\n }\n\n tooltipContent.setContent(html, markers, tooltipModel);\n tooltipContent.show(tooltipModel);\n\n this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\n },\n\n /**\n * @param {string|Function|Array.|Object} positionExpr\n * @param {number} x Mouse x\n * @param {number} y Mouse y\n * @param {boolean} confine Whether confine tooltip content in view rect.\n * @param {Object|} params\n * @param {module:zrender/Element} el target element\n * @param {module:echarts/ExtensionAPI} api\n * @return {Array.}\n */\n _updatePosition: function (tooltipModel, positionExpr, x, y, content, params, el) {\n var viewWidth = this._api.getWidth();\n\n var viewHeight = this._api.getHeight();\n\n positionExpr = positionExpr || tooltipModel.get('position');\n var contentSize = content.getSize();\n var align = tooltipModel.get('align');\n var vAlign = tooltipModel.get('verticalAlign');\n var rect = el && el.getBoundingRect().clone();\n el && rect.applyTransform(el.transform);\n\n if (typeof positionExpr === 'function') {\n // Callback of position can be an array or a string specify the position\n positionExpr = positionExpr([x, y], params, content.el, rect, {\n viewSize: [viewWidth, viewHeight],\n contentSize: contentSize.slice()\n });\n }\n\n if (zrUtil.isArray(positionExpr)) {\n x = parsePercent(positionExpr[0], viewWidth);\n y = parsePercent(positionExpr[1], viewHeight);\n } else if (zrUtil.isObject(positionExpr)) {\n positionExpr.width = contentSize[0];\n positionExpr.height = contentSize[1];\n var layoutRect = layoutUtil.getLayoutRect(positionExpr, {\n width: viewWidth,\n height: viewHeight\n });\n x = layoutRect.x;\n y = layoutRect.y;\n align = null; // When positionExpr is left/top/right/bottom,\n // align and verticalAlign will not work.\n\n vAlign = null;\n } // Specify tooltip position by string 'top' 'bottom' 'left' 'right' around graphic element\n else if (typeof positionExpr === 'string' && el) {\n var pos = calcTooltipPosition(positionExpr, rect, contentSize);\n x = pos[0];\n y = pos[1];\n } else {\n var pos = refixTooltipPosition(x, y, content, viewWidth, viewHeight, align ? null : 20, vAlign ? null : 20);\n x = pos[0];\n y = pos[1];\n }\n\n align && (x -= isCenterAlign(align) ? contentSize[0] / 2 : align === 'right' ? contentSize[0] : 0);\n vAlign && (y -= isCenterAlign(vAlign) ? contentSize[1] / 2 : vAlign === 'bottom' ? contentSize[1] : 0);\n\n if (tooltipModel.get('confine')) {\n var pos = confineTooltipPosition(x, y, content, viewWidth, viewHeight);\n x = pos[0];\n y = pos[1];\n }\n\n content.moveTo(x, y);\n },\n // FIXME\n // Should we remove this but leave this to user?\n _updateContentNotChangedOnAxis: function (dataByCoordSys) {\n var lastCoordSys = this._lastDataByCoordSys;\n var contentNotChanged = !!lastCoordSys && lastCoordSys.length === dataByCoordSys.length;\n contentNotChanged && each(lastCoordSys, function (lastItemCoordSys, indexCoordSys) {\n var lastDataByAxis = lastItemCoordSys.dataByAxis || {};\n var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {};\n var thisDataByAxis = thisItemCoordSys.dataByAxis || [];\n contentNotChanged &= lastDataByAxis.length === thisDataByAxis.length;\n contentNotChanged && each(lastDataByAxis, function (lastItem, indexAxis) {\n var thisItem = thisDataByAxis[indexAxis] || {};\n var lastIndices = lastItem.seriesDataIndices || [];\n var newIndices = thisItem.seriesDataIndices || [];\n contentNotChanged &= lastItem.value === thisItem.value && lastItem.axisType === thisItem.axisType && lastItem.axisId === thisItem.axisId && lastIndices.length === newIndices.length;\n contentNotChanged && each(lastIndices, function (lastIdxItem, j) {\n var newIdxItem = newIndices[j];\n contentNotChanged &= lastIdxItem.seriesIndex === newIdxItem.seriesIndex && lastIdxItem.dataIndex === newIdxItem.dataIndex;\n });\n });\n });\n this._lastDataByCoordSys = dataByCoordSys;\n return !!contentNotChanged;\n },\n _hide: function (dispatchAction) {\n // Do not directly hideLater here, because this behavior may be prevented\n // in dispatchAction when showTip is dispatched.\n // FIXME\n // duplicated hideTip if manuallyHideTip is called from dispatchAction.\n this._lastDataByCoordSys = null;\n dispatchAction({\n type: 'hideTip',\n from: this.uid\n });\n },\n dispose: function (ecModel, api) {\n if (env.node) {\n return;\n }\n\n this._tooltipContent.dispose();\n\n globalListener.unregister('itemTooltip', api);\n }\n});\n/**\n * @param {Array.} modelCascade\n * From top to bottom. (the last one should be globalTooltipModel);\n */\n\n\nfunction buildTooltipModel(modelCascade) {\n var resultModel = modelCascade.pop();\n\n while (modelCascade.length) {\n var tooltipOpt = modelCascade.pop();\n\n if (tooltipOpt) {\n if (Model.isInstance(tooltipOpt)) {\n tooltipOpt = tooltipOpt.get('tooltip', true);\n } // In each data item tooltip can be simply write:\n // {\n // value: 10,\n // tooltip: 'Something you need to know'\n // }\n\n\n if (typeof tooltipOpt === 'string') {\n tooltipOpt = {\n formatter: tooltipOpt\n };\n }\n\n resultModel = new Model(tooltipOpt, resultModel, resultModel.ecModel);\n }\n }\n\n return resultModel;\n}\n\nfunction makeDispatchAction(payload, api) {\n return payload.dispatchAction || zrUtil.bind(api.dispatchAction, api);\n}\n\nfunction refixTooltipPosition(x, y, content, viewWidth, viewHeight, gapH, gapV) {\n var size = content.getOuterSize();\n var width = size.width;\n var height = size.height;\n\n if (gapH != null) {\n if (x + width + gapH > viewWidth) {\n x -= width + gapH;\n } else {\n x += gapH;\n }\n }\n\n if (gapV != null) {\n if (y + height + gapV > viewHeight) {\n y -= height + gapV;\n } else {\n y += gapV;\n }\n }\n\n return [x, y];\n}\n\nfunction confineTooltipPosition(x, y, content, viewWidth, viewHeight) {\n var size = content.getOuterSize();\n var width = size.width;\n var height = size.height;\n x = Math.min(x + width, viewWidth) - width;\n y = Math.min(y + height, viewHeight) - height;\n x = Math.max(x, 0);\n y = Math.max(y, 0);\n return [x, y];\n}\n\nfunction calcTooltipPosition(position, rect, contentSize) {\n var domWidth = contentSize[0];\n var domHeight = contentSize[1];\n var gap = 5;\n var x = 0;\n var y = 0;\n var rectWidth = rect.width;\n var rectHeight = rect.height;\n\n switch (position) {\n case 'inside':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n break;\n\n case 'top':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y - domHeight - gap;\n break;\n\n case 'bottom':\n x = rect.x + rectWidth / 2 - domWidth / 2;\n y = rect.y + rectHeight + gap;\n break;\n\n case 'left':\n x = rect.x - domWidth - gap;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n break;\n\n case 'right':\n x = rect.x + rectWidth + gap;\n y = rect.y + rectHeight / 2 - domHeight / 2;\n }\n\n return [x, y];\n}\n\nfunction isCenterAlign(align) {\n return align === 'center' || align === 'middle';\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\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.} 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.} [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} 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;","var easingFuncs = require(\"./easing\");\n\n/**\n * 动画主控制器\n * @config target 动画对象,可以是数组,如果是数组的话会批量分发onframe等事件\n * @config life(1000) 动画时长\n * @config delay(0) 动画延迟时间\n * @config loop(true)\n * @config gap(0) 循环的间隔时间\n * @config onframe\n * @config easing(optional)\n * @config ondestroy(optional)\n * @config onrestart(optional)\n *\n * TODO pause\n */\nfunction Clip(options) {\n this._target = options.target; // 生命周期\n\n this._life = options.life || 1000; // 延时\n\n this._delay = options.delay || 0; // 开始时间\n // this._startTime = new Date().getTime() + this._delay;// 单位毫秒\n\n this._initialized = false; // 是否循环\n\n this.loop = options.loop == null ? false : options.loop;\n this.gap = options.gap || 0;\n this.easing = options.easing || 'Linear';\n this.onframe = options.onframe;\n this.ondestroy = options.ondestroy;\n this.onrestart = options.onrestart;\n this._pausedTime = 0;\n this._paused = false;\n}\n\nClip.prototype = {\n constructor: Clip,\n step: function (globalTime, deltaTime) {\n // Set startTime on first step, or _startTime may has milleseconds different between clips\n // PENDING\n if (!this._initialized) {\n this._startTime = globalTime + this._delay;\n this._initialized = true;\n }\n\n if (this._paused) {\n this._pausedTime += deltaTime;\n return;\n }\n\n var percent = (globalTime - this._startTime - this._pausedTime) / this._life; // 还没开始\n\n if (percent < 0) {\n return;\n }\n\n percent = Math.min(percent, 1);\n var easing = this.easing;\n var easingFunc = typeof easing === 'string' ? easingFuncs[easing] : easing;\n var schedule = typeof easingFunc === 'function' ? easingFunc(percent) : percent;\n this.fire('frame', schedule); // 结束\n\n if (percent === 1) {\n if (this.loop) {\n this.restart(globalTime); // 重新开始周期\n // 抛出而不是直接调用事件直到 stage.update 后再统一调用这些事件\n\n return 'restart';\n } // 动画完成将这个控制器标识为待删除\n // 在Animation.update中进行批量删除\n\n\n this._needsRemove = true;\n return 'destroy';\n }\n\n return null;\n },\n restart: function (globalTime) {\n var remainder = (globalTime - this._startTime - this._pausedTime) % this._life;\n this._startTime = globalTime - remainder + this.gap;\n this._pausedTime = 0;\n this._needsRemove = false;\n },\n fire: function (eventType, arg) {\n eventType = 'on' + eventType;\n\n if (this[eventType]) {\n this[eventType](this._target, arg);\n }\n },\n pause: function () {\n this._paused = true;\n },\n resume: function () {\n this._paused = false;\n }\n};\nvar _default = Clip;\nmodule.exports = _default;","var Path = require(\"../Path\");\n\n/**\n * 圆环\n * @module zrender/graphic/shape/Ring\n */\nvar _default = Path.extend({\n type: 'ring',\n shape: {\n cx: 0,\n cy: 0,\n r: 0,\n r0: 0\n },\n buildPath: function (ctx, shape) {\n var x = shape.cx;\n var y = shape.cy;\n var PI2 = Math.PI * 2;\n ctx.moveTo(x + shape.r, y);\n ctx.arc(x, y, shape.r, 0, PI2, false);\n ctx.moveTo(x + shape.r0, y);\n ctx.arc(x, y, shape.r0, 0, PI2, true);\n }\n});\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 echarts = require(\"../../echarts\");\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*/\nfunction legendSelectActionHandler(methodName, payload, ecModel) {\n var selectedMap = {};\n var isToggleSelect = methodName === 'toggleSelected';\n var isSelected; // Update all legend components\n\n ecModel.eachComponent('legend', function (legendModel) {\n if (isToggleSelect && isSelected != null) {\n // Force other legend has same selected status\n // Or the first is toggled to true and other are toggled to false\n // In the case one legend has some item unSelected in option. And if other legend\n // doesn't has the item, they will assume it is selected.\n legendModel[isSelected ? 'select' : 'unSelect'](payload.name);\n } else if (methodName === 'allSelect' || methodName === 'inverseSelect') {\n legendModel[methodName]();\n } else {\n legendModel[methodName](payload.name);\n isSelected = legendModel.isSelected(payload.name);\n }\n\n var legendData = legendModel.getData();\n zrUtil.each(legendData, function (model) {\n var name = model.get('name'); // Wrap element\n\n if (name === '\\n' || name === '') {\n return;\n }\n\n var isItemSelected = legendModel.isSelected(name);\n\n if (selectedMap.hasOwnProperty(name)) {\n // Unselected if any legend is unselected\n selectedMap[name] = selectedMap[name] && isItemSelected;\n } else {\n selectedMap[name] = isItemSelected;\n }\n });\n }); // Return the event explicitly\n\n return methodName === 'allSelect' || methodName === 'inverseSelect' ? {\n selected: selectedMap\n } : {\n name: payload.name,\n selected: selectedMap\n };\n}\n/**\n * @event legendToggleSelect\n * @type {Object}\n * @property {string} type 'legendToggleSelect'\n * @property {string} [from]\n * @property {string} name Series name or data item name\n */\n\n\necharts.registerAction('legendToggleSelect', 'legendselectchanged', zrUtil.curry(legendSelectActionHandler, 'toggleSelected'));\necharts.registerAction('legendAllSelect', 'legendselectall', zrUtil.curry(legendSelectActionHandler, 'allSelect'));\necharts.registerAction('legendInverseSelect', 'legendinverseselect', zrUtil.curry(legendSelectActionHandler, 'inverseSelect'));\n/**\n * @event legendSelect\n * @type {Object}\n * @property {string} type 'legendSelect'\n * @property {string} name Series name or data item name\n */\n\necharts.registerAction('legendSelect', 'legendselected', zrUtil.curry(legendSelectActionHandler, 'select'));\n/**\n * @event legendUnSelect\n * @type {Object}\n * @property {string} type 'legendUnSelect'\n * @property {string} name Series name or data item name\n */\n\necharts.registerAction('legendUnSelect', 'legendunselected', zrUtil.curry(legendSelectActionHandler, 'unSelect'));","var zrUtil = require(\"../core/util\");\n\nvar Gradient = require(\"./Gradient\");\n\n/**\n * x, y, x2, y2 are all percent from 0 to 1\n * @param {number} [x=0]\n * @param {number} [y=0]\n * @param {number} [x2=1]\n * @param {number} [y2=0]\n * @param {Array.} colorStops\n * @param {boolean} [globalCoord=false]\n */\nvar LinearGradient = function (x, y, x2, y2, colorStops, globalCoord) {\n // Should do nothing more in this constructor. Because gradient can be\n // declard by `color: {type: 'linear', colorStops: ...}`, where\n // this constructor will not be called.\n this.x = x == null ? 0 : x;\n this.y = y == null ? 0 : y;\n this.x2 = x2 == null ? 1 : x2;\n this.y2 = y2 == null ? 0 : y2; // Can be cloned\n\n this.type = 'linear'; // If use global coord\n\n this.global = globalCoord || false;\n Gradient.call(this, colorStops);\n};\n\nLinearGradient.prototype = {\n constructor: LinearGradient\n};\nzrUtil.inherits(LinearGradient, Gradient);\nvar _default = LinearGradient;\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 echarts = require(\"../../echarts\");\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 AxisPointerModel = echarts.extendComponentModel({\n type: 'axisPointer',\n coordSysAxesInfo: null,\n defaultOption: {\n // 'auto' means that show when triggered by tooltip or handle.\n show: 'auto',\n // 'click' | 'mousemove' | 'none'\n triggerOn: null,\n // set default in AxisPonterView.js\n zlevel: 0,\n z: 50,\n type: 'line',\n // 'line' 'shadow' 'cross' 'none'.\n // axispointer triggered by tootip determine snap automatically,\n // see `modelHelper`.\n snap: false,\n triggerTooltip: true,\n value: null,\n status: null,\n // Init value depends on whether handle is used.\n // [group0, group1, ...]\n // Each group can be: {\n // mapper: function () {},\n // singleTooltip: 'multiple', // 'multiple' or 'single'\n // xAxisId: ...,\n // yAxisName: ...,\n // angleAxisIndex: ...\n // }\n // mapper: can be ignored.\n // input: {axisInfo, value}\n // output: {axisInfo, value}\n link: [],\n // Do not set 'auto' here, otherwise global animation: false\n // will not effect at this axispointer.\n animation: null,\n animationDurationUpdate: 200,\n lineStyle: {\n color: '#aaa',\n width: 1,\n type: 'solid'\n },\n shadowStyle: {\n color: 'rgba(150,150,150,0.3)'\n },\n label: {\n show: true,\n formatter: null,\n // string | Function\n precision: 'auto',\n // Or a number like 0, 1, 2 ...\n margin: 3,\n color: '#fff',\n padding: [5, 7, 5, 7],\n backgroundColor: 'auto',\n // default: axis line color\n borderColor: null,\n borderWidth: 0,\n shadowBlur: 3,\n shadowColor: '#aaa' // Considering applicability, common style should\n // better not have shadowOffset.\n // shadowOffsetX: 0,\n // shadowOffsetY: 2\n\n },\n handle: {\n show: false,\n\n /* eslint-disable */\n icon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z',\n // jshint ignore:line\n\n /* eslint-enable */\n size: 45,\n // handle margin is from symbol center to axis, which is stable when circular move.\n margin: 50,\n // color: '#1b8bbd'\n // color: '#2f4554'\n color: '#333',\n shadowBlur: 3,\n shadowColor: '#aaa',\n shadowOffsetX: 0,\n shadowOffsetY: 2,\n // For mobile performance\n throttle: 40\n }\n }\n});\nvar _default = AxisPointerModel;\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 ComponentModel = require(\"../../model/Component\");\n\nvar axisModelCreator = require(\"../axisModelCreator\");\n\nvar axisModelCommonMixin = require(\"../axisModelCommonMixin\");\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 AxisModel = ComponentModel.extend({\n type: 'cartesian2dAxis',\n\n /**\n * @type {module:echarts/coord/cartesian/Axis2D}\n */\n axis: null,\n\n /**\n * @override\n */\n init: function () {\n AxisModel.superApply(this, 'init', arguments);\n this.resetRange();\n },\n\n /**\n * @override\n */\n mergeOption: function () {\n AxisModel.superApply(this, 'mergeOption', arguments);\n this.resetRange();\n },\n\n /**\n * @override\n */\n restoreData: function () {\n AxisModel.superApply(this, 'restoreData', arguments);\n this.resetRange();\n },\n\n /**\n * @override\n * @return {module:echarts/model/Component}\n */\n getCoordSysModel: function () {\n return this.ecModel.queryComponents({\n mainType: 'grid',\n index: this.option.gridIndex,\n id: this.option.gridId\n })[0];\n }\n});\n\nfunction getAxisType(axisDim, option) {\n // Default axis with data is category axis\n return option.type || (option.data ? 'category' : 'value');\n}\n\nzrUtil.merge(AxisModel.prototype, axisModelCommonMixin);\nvar extraOption = {\n // gridIndex: 0,\n // gridId: '',\n // Offset is for multiple axis on the same position\n offset: 0\n};\naxisModelCreator('x', AxisModel, getAxisType, extraOption);\naxisModelCreator('y', AxisModel, getAxisType, extraOption);\nvar _default = AxisModel;\nmodule.exports = _default;","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_IMG } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { concat } from '../../utils/array';\nimport { identity } from '../../utils/identity';\nimport { isString } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string'; // --- Constants --\n// Blank image with fill template\n\nvar BLANK_TEMPLATE = '' + '' + ''; // --- Helper methods ---\n\nvar makeBlankImgSrc = function makeBlankImgSrc(width, height, color) {\n var src = encodeURIComponent(BLANK_TEMPLATE.replace('%{w}', toString(width)).replace('%{h}', toString(height)).replace('%{f}', color));\n return \"data:image/svg+xml;charset=UTF-8,\".concat(src);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable({\n alt: makeProp(PROP_TYPE_STRING),\n blank: makeProp(PROP_TYPE_BOOLEAN, false),\n blankColor: makeProp(PROP_TYPE_STRING, 'transparent'),\n block: makeProp(PROP_TYPE_BOOLEAN, false),\n center: makeProp(PROP_TYPE_BOOLEAN, false),\n fluid: makeProp(PROP_TYPE_BOOLEAN, false),\n // Gives fluid images class `w-100` to make them grow to fit container\n fluidGrow: makeProp(PROP_TYPE_BOOLEAN, false),\n height: makeProp(PROP_TYPE_NUMBER_STRING),\n left: makeProp(PROP_TYPE_BOOLEAN, false),\n right: makeProp(PROP_TYPE_BOOLEAN, false),\n // Possible values:\n // `false`: no rounding of corners\n // `true`: slightly rounded corners\n // 'top': top corners rounded\n // 'right': right corners rounded\n // 'bottom': bottom corners rounded\n // 'left': left corners rounded\n // 'circle': circle/oval\n // '0': force rounding off\n rounded: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n sizes: makeProp(PROP_TYPE_ARRAY_STRING),\n src: makeProp(PROP_TYPE_STRING),\n srcset: makeProp(PROP_TYPE_ARRAY_STRING),\n thumbnail: makeProp(PROP_TYPE_BOOLEAN, false),\n width: makeProp(PROP_TYPE_NUMBER_STRING)\n}, NAME_IMG); // --- Main component ---\n// @vue/component\n\nexport var BImg = /*#__PURE__*/Vue.extend({\n name: NAME_IMG,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data;\n var alt = props.alt,\n src = props.src,\n block = props.block,\n fluidGrow = props.fluidGrow,\n rounded = props.rounded;\n var width = toInteger(props.width) || null;\n var height = toInteger(props.height) || null;\n var align = null;\n var srcset = concat(props.srcset).filter(identity).join(',');\n var sizes = concat(props.sizes).filter(identity).join(',');\n\n if (props.blank) {\n if (!height && width) {\n height = width;\n } else if (!width && height) {\n width = height;\n }\n\n if (!width && !height) {\n width = 1;\n height = 1;\n } // Make a blank SVG image\n\n\n src = makeBlankImgSrc(width, height, props.blankColor || 'transparent'); // Disable srcset and sizes\n\n srcset = null;\n sizes = null;\n }\n\n if (props.left) {\n align = 'float-left';\n } else if (props.right) {\n align = 'float-right';\n } else if (props.center) {\n align = 'mx-auto';\n block = true;\n }\n\n return h('img', mergeData(data, {\n attrs: {\n src: src,\n alt: alt,\n width: width ? toString(width) : null,\n height: height ? toString(height) : null,\n srcset: srcset || null,\n sizes: sizes || null\n },\n class: (_class = {\n 'img-thumbnail': props.thumbnail,\n 'img-fluid': props.fluid || fluidGrow,\n 'w-100': fluidGrow,\n rounded: rounded === '' || rounded === true\n }, _defineProperty(_class, \"rounded-\".concat(rounded), isString(rounded) && rounded !== ''), _defineProperty(_class, align, align), _defineProperty(_class, 'd-block', block), _class)\n }));\n }\n});","var _config = require(\"../config\");\n\nvar debugMode = _config.debugMode;\n\nvar logError = function () {};\n\nif (debugMode === 1) {\n logError = console.error;\n}\n\nvar _default = logError;\nmodule.exports = _default;","import { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_TITLE } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n title: makeProp(PROP_TYPE_STRING),\n titleTag: makeProp(PROP_TYPE_STRING, 'h4')\n}, NAME_CARD_TITLE); // --- Main component ---\n// @vue/component\n\nexport var BCardTitle = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_TITLE,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.titleTag, mergeData(data, {\n staticClass: 'card-title'\n }), children || toString(props.title));\n }\n});","var _vector = require(\"./vector\");\n\nvar v2Create = _vector.create;\nvar v2DistSquare = _vector.distSquare;\n\n/**\n * 曲线辅助模块\n * @module zrender/core/curve\n * @author pissang(https://www.github.com/pissang)\n */\nvar mathPow = Math.pow;\nvar mathSqrt = Math.sqrt;\nvar EPSILON = 1e-8;\nvar EPSILON_NUMERIC = 1e-4;\nvar THREE_SQRT = mathSqrt(3);\nvar ONE_THIRD = 1 / 3; // 临时变量\n\nvar _v0 = v2Create();\n\nvar _v1 = v2Create();\n\nvar _v2 = v2Create();\n\nfunction isAroundZero(val) {\n return val > -EPSILON && val < EPSILON;\n}\n\nfunction isNotAroundZero(val) {\n return val > EPSILON || val < -EPSILON;\n}\n/**\n * 计算三次贝塞尔值\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} t\n * @return {number}\n */\n\n\nfunction cubicAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return onet * onet * (onet * p0 + 3 * t * p1) + t * t * (t * p3 + 3 * onet * p2);\n}\n/**\n * 计算三次贝塞尔导数值\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} t\n * @return {number}\n */\n\n\nfunction cubicDerivativeAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet + (p3 - p2) * t * t);\n}\n/**\n * 计算三次贝塞尔方程根,使用盛金公式\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} val\n * @param {Array.} roots\n * @return {number} 有效根数目\n */\n\n\nfunction cubicRootAt(p0, p1, p2, p3, val, roots) {\n // Evaluate roots of cubic functions\n var a = p3 + 3 * (p1 - p2) - p0;\n var b = 3 * (p2 - p1 * 2 + p0);\n var c = 3 * (p1 - p0);\n var d = p0 - val;\n var A = b * b - 3 * a * c;\n var B = b * c - 9 * a * d;\n var C = c * c - 3 * b * d;\n var n = 0;\n\n if (isAroundZero(A) && isAroundZero(B)) {\n if (isAroundZero(b)) {\n roots[0] = 0;\n } else {\n var t1 = -c / b; //t1, t2, t3, b is not zero\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n } else {\n var disc = B * B - 4 * A * C;\n\n if (isAroundZero(disc)) {\n var K = B / A;\n var t1 = -b / a + K; // t1, a is not zero\n\n var t2 = -K / 2; // t2, t3\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n } else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var Y1 = A * b + 1.5 * a * (-B + discSqrt);\n var Y2 = A * b + 1.5 * a * (-B - discSqrt);\n\n if (Y1 < 0) {\n Y1 = -mathPow(-Y1, ONE_THIRD);\n } else {\n Y1 = mathPow(Y1, ONE_THIRD);\n }\n\n if (Y2 < 0) {\n Y2 = -mathPow(-Y2, ONE_THIRD);\n } else {\n Y2 = mathPow(Y2, ONE_THIRD);\n }\n\n var t1 = (-b - (Y1 + Y2)) / (3 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n } else {\n var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt(A * A * A));\n var theta = Math.acos(T) / 3;\n var ASqrt = mathSqrt(A);\n var tmp = Math.cos(theta);\n var t1 = (-b - 2 * ASqrt * tmp) / (3 * a);\n var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a);\n var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n\n if (t3 >= 0 && t3 <= 1) {\n roots[n++] = t3;\n }\n }\n }\n\n return n;\n}\n/**\n * 计算三次贝塞尔方程极限值的位置\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {Array.} extrema\n * @return {number} 有效数目\n */\n\n\nfunction cubicExtrema(p0, p1, p2, p3, extrema) {\n var b = 6 * p2 - 12 * p1 + 6 * p0;\n var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2;\n var c = 3 * p1 - 3 * p0;\n var n = 0;\n\n if (isAroundZero(a)) {\n if (isNotAroundZero(b)) {\n var t1 = -c / b;\n\n if (t1 >= 0 && t1 <= 1) {\n extrema[n++] = t1;\n }\n }\n } else {\n var disc = b * b - 4 * a * c;\n\n if (isAroundZero(disc)) {\n extrema[0] = -b / (2 * a);\n } else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var t1 = (-b + discSqrt) / (2 * a);\n var t2 = (-b - discSqrt) / (2 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n extrema[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n extrema[n++] = t2;\n }\n }\n }\n\n return n;\n}\n/**\n * 细分三次贝塞尔曲线\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} t\n * @param {Array.} out\n */\n\n\nfunction cubicSubdivide(p0, p1, p2, p3, t, out) {\n var p01 = (p1 - p0) * t + p0;\n var p12 = (p2 - p1) * t + p1;\n var p23 = (p3 - p2) * t + p2;\n var p012 = (p12 - p01) * t + p01;\n var p123 = (p23 - p12) * t + p12;\n var p0123 = (p123 - p012) * t + p012; // Seg0\n\n out[0] = p0;\n out[1] = p01;\n out[2] = p012;\n out[3] = p0123; // Seg1\n\n out[4] = p0123;\n out[5] = p123;\n out[6] = p23;\n out[7] = p3;\n}\n/**\n * 投射点到三次贝塞尔曲线上,返回投射距离。\n * 投射点有可能会有一个或者多个,这里只返回其中距离最短的一个。\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @param {number} x\n * @param {number} y\n * @param {Array.} [out] 投射点\n * @return {number}\n */\n\n\nfunction cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out) {\n // http://pomax.github.io/bezierinfo/#projections\n var t;\n var interval = 0.005;\n var d = Infinity;\n var prev;\n var next;\n var d1;\n var d2;\n _v0[0] = x;\n _v0[1] = y; // 先粗略估计一下可能的最小距离的 t 值\n // PENDING\n\n for (var _t = 0; _t < 1; _t += 0.05) {\n _v1[0] = cubicAt(x0, x1, x2, x3, _t);\n _v1[1] = cubicAt(y0, y1, y2, y3, _t);\n d1 = v2DistSquare(_v0, _v1);\n\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n\n d = Infinity; // At most 32 iteration\n\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON_NUMERIC) {\n break;\n }\n\n prev = t - interval;\n next = t + interval; // t - interval\n\n _v1[0] = cubicAt(x0, x1, x2, x3, prev);\n _v1[1] = cubicAt(y0, y1, y2, y3, prev);\n d1 = v2DistSquare(_v1, _v0);\n\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n } else {\n // t + interval\n _v2[0] = cubicAt(x0, x1, x2, x3, next);\n _v2[1] = cubicAt(y0, y1, y2, y3, next);\n d2 = v2DistSquare(_v2, _v0);\n\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n } else {\n interval *= 0.5;\n }\n }\n } // t\n\n\n if (out) {\n out[0] = cubicAt(x0, x1, x2, x3, t);\n out[1] = cubicAt(y0, y1, y2, y3, t);\n } // console.log(interval, i);\n\n\n return mathSqrt(d);\n}\n/**\n * 计算二次方贝塞尔值\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} t\n * @return {number}\n */\n\n\nfunction quadraticAt(p0, p1, p2, t) {\n var onet = 1 - t;\n return onet * (onet * p0 + 2 * t * p1) + t * t * p2;\n}\n/**\n * 计算二次方贝塞尔导数值\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} t\n * @return {number}\n */\n\n\nfunction quadraticDerivativeAt(p0, p1, p2, t) {\n return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1));\n}\n/**\n * 计算二次方贝塞尔方程根\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} t\n * @param {Array.} roots\n * @return {number} 有效根数目\n */\n\n\nfunction quadraticRootAt(p0, p1, p2, val, roots) {\n var a = p0 - 2 * p1 + p2;\n var b = 2 * (p1 - p0);\n var c = p0 - val;\n var n = 0;\n\n if (isAroundZero(a)) {\n if (isNotAroundZero(b)) {\n var t1 = -c / b;\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n } else {\n var disc = b * b - 4 * a * c;\n\n if (isAroundZero(disc)) {\n var t1 = -b / (2 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n } else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var t1 = (-b + discSqrt) / (2 * a);\n var t2 = (-b - discSqrt) / (2 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n }\n }\n\n return n;\n}\n/**\n * 计算二次贝塞尔方程极限值\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @return {number}\n */\n\n\nfunction quadraticExtremum(p0, p1, p2) {\n var divider = p0 + p2 - 2 * p1;\n\n if (divider === 0) {\n // p1 is center of p0 and p2\n return 0.5;\n } else {\n return (p0 - p1) / divider;\n }\n}\n/**\n * 细分二次贝塞尔曲线\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} t\n * @param {Array.} out\n */\n\n\nfunction quadraticSubdivide(p0, p1, p2, t, out) {\n var p01 = (p1 - p0) * t + p0;\n var p12 = (p2 - p1) * t + p1;\n var p012 = (p12 - p01) * t + p01; // Seg0\n\n out[0] = p0;\n out[1] = p01;\n out[2] = p012; // Seg1\n\n out[3] = p012;\n out[4] = p12;\n out[5] = p2;\n}\n/**\n * 投射点到二次贝塞尔曲线上,返回投射距离。\n * 投射点有可能会有一个或者多个,这里只返回其中距离最短的一个。\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x\n * @param {number} y\n * @param {Array.} out 投射点\n * @return {number}\n */\n\n\nfunction quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out) {\n // http://pomax.github.io/bezierinfo/#projections\n var t;\n var interval = 0.005;\n var d = Infinity;\n _v0[0] = x;\n _v0[1] = y; // 先粗略估计一下可能的最小距离的 t 值\n // PENDING\n\n for (var _t = 0; _t < 1; _t += 0.05) {\n _v1[0] = quadraticAt(x0, x1, x2, _t);\n _v1[1] = quadraticAt(y0, y1, y2, _t);\n var d1 = v2DistSquare(_v0, _v1);\n\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n\n d = Infinity; // At most 32 iteration\n\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON_NUMERIC) {\n break;\n }\n\n var prev = t - interval;\n var next = t + interval; // t - interval\n\n _v1[0] = quadraticAt(x0, x1, x2, prev);\n _v1[1] = quadraticAt(y0, y1, y2, prev);\n var d1 = v2DistSquare(_v1, _v0);\n\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n } else {\n // t + interval\n _v2[0] = quadraticAt(x0, x1, x2, next);\n _v2[1] = quadraticAt(y0, y1, y2, next);\n var d2 = v2DistSquare(_v2, _v0);\n\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n } else {\n interval *= 0.5;\n }\n }\n } // t\n\n\n if (out) {\n out[0] = quadraticAt(x0, x1, x2, t);\n out[1] = quadraticAt(y0, y1, y2, t);\n } // console.log(interval, i);\n\n\n return mathSqrt(d);\n}\n\nexports.cubicAt = cubicAt;\nexports.cubicDerivativeAt = cubicDerivativeAt;\nexports.cubicRootAt = cubicRootAt;\nexports.cubicExtrema = cubicExtrema;\nexports.cubicSubdivide = cubicSubdivide;\nexports.cubicProjectPoint = cubicProjectPoint;\nexports.quadraticAt = quadraticAt;\nexports.quadraticDerivativeAt = quadraticDerivativeAt;\nexports.quadraticRootAt = quadraticRootAt;\nexports.quadraticExtremum = quadraticExtremum;\nexports.quadraticSubdivide = quadraticSubdivide;\nexports.quadraticProjectPoint = quadraticProjectPoint;","\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 BaseAxisPointer = require(\"./BaseAxisPointer\");\n\nvar viewHelper = require(\"./viewHelper\");\n\nvar cartesianAxisHelper = require(\"../../coord/cartesian/cartesianAxisHelper\");\n\nvar AxisView = require(\"../axis/AxisView\");\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 CartesianAxisPointer = BaseAxisPointer.extend({\n /**\n * @override\n */\n makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {\n var axis = axisModel.axis;\n var grid = axis.grid;\n var axisPointerType = axisPointerModel.get('type');\n var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\n var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true));\n\n if (axisPointerType && axisPointerType !== 'none') {\n var elStyle = viewHelper.buildElStyle(axisPointerModel);\n var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent);\n pointerOption.style = elStyle;\n elOption.graphicKey = pointerOption.type;\n elOption.pointer = pointerOption;\n }\n\n var layoutInfo = cartesianAxisHelper.layout(grid.model, axisModel);\n viewHelper.buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api);\n },\n\n /**\n * @override\n */\n getHandleTransform: function (value, axisModel, axisPointerModel) {\n var layoutInfo = cartesianAxisHelper.layout(axisModel.axis.grid.model, axisModel, {\n labelInside: false\n });\n layoutInfo.labelMargin = axisPointerModel.get('handle.margin');\n return {\n position: viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo),\n rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)\n };\n },\n\n /**\n * @override\n */\n updateHandleTransform: function (transform, delta, axisModel, axisPointerModel) {\n var axis = axisModel.axis;\n var grid = axis.grid;\n var axisExtent = axis.getGlobalExtent(true);\n var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\n var dimIndex = axis.dim === 'x' ? 0 : 1;\n var currPosition = transform.position;\n currPosition[dimIndex] += delta[dimIndex];\n currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);\n currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);\n var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;\n var cursorPoint = [cursorOtherValue, cursorOtherValue];\n cursorPoint[dimIndex] = currPosition[dimIndex]; // Make tooltip do not overlap axisPointer and in the middle of the grid.\n\n var tooltipOptions = [{\n verticalAlign: 'middle'\n }, {\n align: 'center'\n }];\n return {\n position: currPosition,\n rotation: transform.rotation,\n cursorPoint: cursorPoint,\n tooltipOption: tooltipOptions[dimIndex]\n };\n }\n});\n\nfunction getCartesian(grid, axis) {\n var opt = {};\n opt[axis.dim + 'AxisIndex'] = axis.index;\n return grid.getCartesian(opt);\n}\n\nvar pointerShapeBuilder = {\n line: function (axis, pixelValue, otherExtent) {\n var targetShape = viewHelper.makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getAxisDimIndex(axis));\n return {\n type: 'Line',\n subPixelOptimize: true,\n shape: targetShape\n };\n },\n shadow: function (axis, pixelValue, otherExtent) {\n var bandWidth = Math.max(1, axis.getBandWidth());\n var span = otherExtent[1] - otherExtent[0];\n return {\n type: 'Rect',\n shape: viewHelper.makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getAxisDimIndex(axis))\n };\n }\n};\n\nfunction getAxisDimIndex(axis) {\n return axis.dim === 'x' ? 0 : 1;\n}\n\nAxisView.registerAxisPointerClass('CartesianAxisPointer', CartesianAxisPointer);\nvar _default = CartesianAxisPointer;\nmodule.exports = _default;","var Path = require(\"../Path\");\n\nvar fixClipWithShadow = require(\"../helper/fixClipWithShadow\");\n\n/**\n * 扇形\n * @module zrender/graphic/shape/Sector\n */\nvar _default = Path.extend({\n type: 'sector',\n shape: {\n cx: 0,\n cy: 0,\n r0: 0,\n r: 0,\n startAngle: 0,\n endAngle: Math.PI * 2,\n clockwise: true\n },\n brush: fixClipWithShadow(Path.prototype.brush),\n buildPath: function (ctx, shape) {\n var x = shape.cx;\n var y = shape.cy;\n var r0 = Math.max(shape.r0 || 0, 0);\n var r = Math.max(shape.r, 0);\n var startAngle = shape.startAngle;\n var endAngle = shape.endAngle;\n var clockwise = shape.clockwise;\n var unitX = Math.cos(startAngle);\n var unitY = Math.sin(startAngle);\n ctx.moveTo(unitX * r0 + x, unitY * r0 + y);\n ctx.lineTo(unitX * r + x, unitY * r + y);\n ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\n ctx.lineTo(Math.cos(endAngle) * r0 + x, Math.sin(endAngle) * r0 + y);\n\n if (r0 !== 0) {\n ctx.arc(x, y, r0, endAngle, startAngle, clockwise);\n }\n\n ctx.closePath();\n }\n});\n\nmodule.exports = _default;","var isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = exoticToPrim.call(input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\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* 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) The code `if (__DEV__) ...` can be removed by build tool.\n// (2) If intend to use `__DEV__`, this module should be imported. Use a global\n// variable `__DEV__` may cause that miss the declaration (see #6535), or the\n// declaration is behind of the using position (for example in `Model.extent`,\n// And tools like rollup can not analysis the dependency if not import).\nvar dev; // In browser\n\nif (typeof window !== 'undefined') {\n dev = window.__DEV__;\n} // In node\nelse if (typeof global !== 'undefined') {\n dev = global.__DEV__;\n }\n\nif (typeof dev === 'undefined') {\n dev = true;\n}\n\nvar __DEV__ = dev;\nexports.__DEV__ = __DEV__;","\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' ? '
' : '\\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' : '
' : '';\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} dim\n * @param {Array.} 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.} 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;","var smoothSpline = require(\"./smoothSpline\");\n\nvar smoothBezier = require(\"./smoothBezier\");\n\nfunction buildPath(ctx, shape, closePath) {\n var points = shape.points;\n var smooth = shape.smooth;\n\n if (points && points.length >= 2) {\n if (smooth && smooth !== 'spline') {\n var controlPoints = smoothBezier(points, smooth, closePath, shape.smoothConstraint);\n ctx.moveTo(points[0][0], points[0][1]);\n var len = points.length;\n\n for (var i = 0; i < (closePath ? len : len - 1); i++) {\n var cp1 = controlPoints[i * 2];\n var cp2 = controlPoints[i * 2 + 1];\n var p = points[(i + 1) % len];\n ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]);\n }\n } else {\n if (smooth === 'spline') {\n points = smoothSpline(points, closePath);\n }\n\n ctx.moveTo(points[0][0], points[0][1]);\n\n for (var i = 1, l = points.length; i < l; i++) {\n ctx.lineTo(points[i][0], points[i][1]);\n }\n }\n\n closePath && ctx.closePath();\n }\n}\n\nexports.buildPath = buildPath;","\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;","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @class\n * @param {Object|DataDimensionInfo} [opt] All of the fields will be shallow copied.\n */\nfunction DataDimensionInfo(opt) {\n if (opt != null) {\n zrUtil.extend(this, opt);\n }\n /**\n * Dimension name.\n * Mandatory.\n * @type {string}\n */\n // this.name;\n\n /**\n * The origin name in dimsDef, see source helper.\n * If displayName given, the tooltip will displayed vertically.\n * Optional.\n * @type {string}\n */\n // this.displayName;\n\n /**\n * Which coordSys dimension this dimension mapped to.\n * A `coordDim` can be a \"coordSysDim\" that the coordSys required\n * (for example, an item in `coordSysDims` of `model/referHelper#CoordSysInfo`),\n * or an generated \"extra coord name\" if does not mapped to any \"coordSysDim\"\n * (That is determined by whether `isExtraCoord` is `true`).\n * Mandatory.\n * @type {string}\n */\n // this.coordDim;\n\n /**\n * The index of this dimension in `series.encode[coordDim]`.\n * Mandatory.\n * @type {number}\n */\n // this.coordDimIndex;\n\n /**\n * Dimension type. The enumerable values are the key of\n * `dataCtors` of `data/List`.\n * Optional.\n * @type {string}\n */\n // this.type;\n\n /**\n * This index of this dimension info in `data/List#_dimensionInfos`.\n * Mandatory after added to `data/List`.\n * @type {number}\n */\n // this.index;\n\n /**\n * The format of `otherDims` is:\n * ```js\n * {\n * tooltip: number optional,\n * label: number optional,\n * itemName: number optional,\n * seriesName: number optional,\n * }\n * ```\n *\n * A `series.encode` can specified these fields:\n * ```js\n * encode: {\n * // \"3, 1, 5\" is the index of data dimension.\n * tooltip: [3, 1, 5],\n * label: [0, 3],\n * ...\n * }\n * ```\n * `otherDims` is the parse result of the `series.encode` above, like:\n * ```js\n * // Suppose the index of this data dimension is `3`.\n * this.otherDims = {\n * // `3` is at the index `0` of the `encode.tooltip`\n * tooltip: 0,\n * // `3` is at the index `1` of the `encode.tooltip`\n * label: 1\n * };\n * ```\n *\n * This prop should never be `null`/`undefined` after initialized.\n * @type {Object}\n */\n\n\n this.otherDims = {};\n /**\n * Be `true` if this dimension is not mapped to any \"coordSysDim\" that the\n * \"coordSys\" required.\n * Mandatory.\n * @type {boolean}\n */\n // this.isExtraCoord;\n\n /**\n * @type {module:data/OrdinalMeta}\n */\n // this.ordinalMeta;\n\n /**\n * Whether to create inverted indices.\n * @type {boolean}\n */\n // this.createInvertedIndices;\n}\n\n;\nvar _default = DataDimensionInfo;\nmodule.exports = _default;","/**\n * @param {Object} ctx\n * @param {Object} shape\n * @param {number} shape.x\n * @param {number} shape.y\n * @param {number} shape.width\n * @param {number} shape.height\n * @param {number} shape.r\n */\nfunction buildPath(ctx, shape) {\n var x = shape.x;\n var y = shape.y;\n var width = shape.width;\n var height = shape.height;\n var r = shape.r;\n var r1;\n var r2;\n var r3;\n var r4; // Convert width and height to positive for better borderRadius\n\n if (width < 0) {\n x = x + width;\n width = -width;\n }\n\n if (height < 0) {\n y = y + height;\n height = -height;\n }\n\n if (typeof r === 'number') {\n r1 = r2 = r3 = r4 = r;\n } else if (r instanceof Array) {\n if (r.length === 1) {\n r1 = r2 = r3 = r4 = r[0];\n } else if (r.length === 2) {\n r1 = r3 = r[0];\n r2 = r4 = r[1];\n } else if (r.length === 3) {\n r1 = r[0];\n r2 = r4 = r[1];\n r3 = r[2];\n } else {\n r1 = r[0];\n r2 = r[1];\n r3 = r[2];\n r4 = r[3];\n }\n } else {\n r1 = r2 = r3 = r4 = 0;\n }\n\n var total;\n\n if (r1 + r2 > width) {\n total = r1 + r2;\n r1 *= width / total;\n r2 *= width / total;\n }\n\n if (r3 + r4 > width) {\n total = r3 + r4;\n r3 *= width / total;\n r4 *= width / total;\n }\n\n if (r2 + r3 > height) {\n total = r2 + r3;\n r2 *= height / total;\n r3 *= height / total;\n }\n\n if (r1 + r4 > height) {\n total = r1 + r4;\n r1 *= height / total;\n r4 *= height / total;\n }\n\n ctx.moveTo(x + r1, y);\n ctx.lineTo(x + width - r2, y);\n r2 !== 0 && ctx.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0);\n ctx.lineTo(x + width, y + height - r3);\n r3 !== 0 && ctx.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2);\n ctx.lineTo(x + r4, y + height);\n r4 !== 0 && ctx.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI);\n ctx.lineTo(x, y + r1);\n r1 !== 0 && ctx.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5);\n}\n\nexports.buildPath = buildPath;","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = 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*/\nfunction rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel) {\n var axis = axisModel.axis;\n\n if (axis.scale.isBlank()) {\n return;\n }\n\n var splitAreaModel = axisModel.getModel('splitArea');\n var areaStyleModel = splitAreaModel.getModel('areaStyle');\n var areaColors = areaStyleModel.get('color');\n var gridRect = gridModel.coordinateSystem.getRect();\n var ticksCoords = axis.getTicksCoords({\n tickModel: splitAreaModel,\n clamp: true\n });\n\n if (!ticksCoords.length) {\n return;\n } // For Making appropriate splitArea animation, the color and anid\n // should be corresponding to previous one if possible.\n\n\n var areaColorsLen = areaColors.length;\n var lastSplitAreaColors = axisView.__splitAreaColors;\n var newSplitAreaColors = zrUtil.createHashMap();\n var colorIndex = 0;\n\n if (lastSplitAreaColors) {\n for (var i = 0; i < ticksCoords.length; i++) {\n var cIndex = lastSplitAreaColors.get(ticksCoords[i].tickValue);\n\n if (cIndex != null) {\n colorIndex = (cIndex + (areaColorsLen - 1) * i) % areaColorsLen;\n break;\n }\n }\n }\n\n var prev = axis.toGlobalCoord(ticksCoords[0].coord);\n var areaStyle = areaStyleModel.getAreaStyle();\n areaColors = zrUtil.isArray(areaColors) ? areaColors : [areaColors];\n\n for (var i = 1; i < ticksCoords.length; i++) {\n var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\n var x;\n var y;\n var width;\n var height;\n\n if (axis.isHorizontal()) {\n x = prev;\n y = gridRect.y;\n width = tickCoord - x;\n height = gridRect.height;\n prev = x + width;\n } else {\n x = gridRect.x;\n y = prev;\n width = gridRect.width;\n height = tickCoord - y;\n prev = y + height;\n }\n\n var tickValue = ticksCoords[i - 1].tickValue;\n tickValue != null && newSplitAreaColors.set(tickValue, colorIndex);\n axisGroup.add(new graphic.Rect({\n anid: tickValue != null ? 'area_' + tickValue : null,\n shape: {\n x: x,\n y: y,\n width: width,\n height: height\n },\n style: zrUtil.defaults({\n fill: areaColors[colorIndex]\n }, areaStyle),\n silent: true\n }));\n colorIndex = (colorIndex + 1) % areaColorsLen;\n }\n\n axisView.__splitAreaColors = newSplitAreaColors;\n}\n\nfunction rectCoordAxisHandleRemove(axisView) {\n axisView.__splitAreaColors = null;\n}\n\nexports.rectCoordAxisBuildSplitArea = rectCoordAxisBuildSplitArea;\nexports.rectCoordAxisHandleRemove = rectCoordAxisHandleRemove;","\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 isObject = _util.isObject;\nvar each = _util.each;\nvar map = _util.map;\nvar indexOf = _util.indexOf;\nvar retrieve = _util.retrieve;\n\nvar _layout = require(\"../../util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\n\nvar _axisHelper = require(\"../../coord/axisHelper\");\n\nvar createScaleByModel = _axisHelper.createScaleByModel;\nvar ifAxisCrossZero = _axisHelper.ifAxisCrossZero;\nvar niceScaleExtent = _axisHelper.niceScaleExtent;\nvar estimateLabelUnionRect = _axisHelper.estimateLabelUnionRect;\n\nvar Cartesian2D = require(\"./Cartesian2D\");\n\nvar Axis2D = require(\"./Axis2D\");\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar getStackedDimension = _dataStackHelper.getStackedDimension;\n\nrequire(\"./GridModel\");\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 * Grid is a region which contains at most 4 cartesian systems\n *\n * TODO Default cartesian\n */\n// Depends on GridModel, AxisModel, which performs preprocess.\n\n/**\n * Check if the axis is used in the specified grid\n * @inner\n */\nfunction isAxisUsedInTheGrid(axisModel, gridModel, ecModel) {\n return axisModel.getCoordSysModel() === gridModel;\n}\n\nfunction Grid(gridModel, ecModel, api) {\n /**\n * @type {Object.}\n * @private\n */\n this._coordsMap = {};\n /**\n * @type {Array.}\n * @private\n */\n\n this._coordsList = [];\n /**\n * @type {Object.>}\n * @private\n */\n\n this._axesMap = {};\n /**\n * @type {Array.}\n * @private\n */\n\n this._axesList = [];\n\n this._initCartesian(gridModel, ecModel, api);\n\n this.model = gridModel;\n}\n\nvar gridProto = Grid.prototype;\ngridProto.type = 'grid';\ngridProto.axisPointerEnabled = true;\n\ngridProto.getRect = function () {\n return this._rect;\n};\n\ngridProto.update = function (ecModel, api) {\n var axesMap = this._axesMap;\n\n this._updateScale(ecModel, this.model);\n\n each(axesMap.x, function (xAxis) {\n niceScaleExtent(xAxis.scale, xAxis.model);\n });\n each(axesMap.y, function (yAxis) {\n niceScaleExtent(yAxis.scale, yAxis.model);\n }); // Key: axisDim_axisIndex, value: boolean, whether onZero target.\n\n var onZeroRecords = {};\n each(axesMap.x, function (xAxis) {\n fixAxisOnZero(axesMap, 'y', xAxis, onZeroRecords);\n });\n each(axesMap.y, function (yAxis) {\n fixAxisOnZero(axesMap, 'x', yAxis, onZeroRecords);\n }); // Resize again if containLabel is enabled\n // FIXME It may cause getting wrong grid size in data processing stage\n\n this.resize(this.model, api);\n};\n\nfunction fixAxisOnZero(axesMap, otherAxisDim, axis, onZeroRecords) {\n axis.getAxesOnZeroOf = function () {\n // TODO: onZero of multiple axes.\n return otherAxisOnZeroOf ? [otherAxisOnZeroOf] : [];\n }; // onZero can not be enabled in these two situations:\n // 1. When any other axis is a category axis.\n // 2. When no axis is cross 0 point.\n\n\n var otherAxes = axesMap[otherAxisDim];\n var otherAxisOnZeroOf;\n var axisModel = axis.model;\n var onZero = axisModel.get('axisLine.onZero');\n var onZeroAxisIndex = axisModel.get('axisLine.onZeroAxisIndex');\n\n if (!onZero) {\n return;\n } // If target axis is specified.\n\n\n if (onZeroAxisIndex != null) {\n if (canOnZeroToAxis(otherAxes[onZeroAxisIndex])) {\n otherAxisOnZeroOf = otherAxes[onZeroAxisIndex];\n }\n } else {\n // Find the first available other axis.\n for (var idx in otherAxes) {\n if (otherAxes.hasOwnProperty(idx) && canOnZeroToAxis(otherAxes[idx]) // Consider that two Y axes on one value axis,\n // if both onZero, the two Y axes overlap.\n && !onZeroRecords[getOnZeroRecordKey(otherAxes[idx])]) {\n otherAxisOnZeroOf = otherAxes[idx];\n break;\n }\n }\n }\n\n if (otherAxisOnZeroOf) {\n onZeroRecords[getOnZeroRecordKey(otherAxisOnZeroOf)] = true;\n }\n\n function getOnZeroRecordKey(axis) {\n return axis.dim + '_' + axis.index;\n }\n}\n\nfunction canOnZeroToAxis(axis) {\n return axis && axis.type !== 'category' && axis.type !== 'time' && ifAxisCrossZero(axis);\n}\n/**\n * Resize the grid\n * @param {module:echarts/coord/cartesian/GridModel} gridModel\n * @param {module:echarts/ExtensionAPI} api\n */\n\n\ngridProto.resize = function (gridModel, api, ignoreContainLabel) {\n var gridRect = getLayoutRect(gridModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n this._rect = gridRect;\n var axesList = this._axesList;\n adjustAxes(); // Minus label size\n\n if (!ignoreContainLabel && gridModel.get('containLabel')) {\n each(axesList, function (axis) {\n if (!axis.model.get('axisLabel.inside')) {\n var labelUnionRect = estimateLabelUnionRect(axis);\n\n if (labelUnionRect) {\n var dim = axis.isHorizontal() ? 'height' : 'width';\n var margin = axis.model.get('axisLabel.margin');\n gridRect[dim] -= labelUnionRect[dim] + margin;\n\n if (axis.position === 'top') {\n gridRect.y += labelUnionRect.height + margin;\n } else if (axis.position === 'left') {\n gridRect.x += labelUnionRect.width + margin;\n }\n }\n }\n });\n adjustAxes();\n }\n\n function adjustAxes() {\n each(axesList, function (axis) {\n var isHorizontal = axis.isHorizontal();\n var extent = isHorizontal ? [0, gridRect.width] : [0, gridRect.height];\n var idx = axis.inverse ? 1 : 0;\n axis.setExtent(extent[idx], extent[1 - idx]);\n updateAxisTransform(axis, isHorizontal ? gridRect.x : gridRect.y);\n });\n }\n};\n/**\n * @param {string} axisType\n * @param {number} [axisIndex]\n */\n\n\ngridProto.getAxis = function (axisType, axisIndex) {\n var axesMapOnDim = this._axesMap[axisType];\n\n if (axesMapOnDim != null) {\n if (axisIndex == null) {\n // Find first axis\n for (var name in axesMapOnDim) {\n if (axesMapOnDim.hasOwnProperty(name)) {\n return axesMapOnDim[name];\n }\n }\n }\n\n return axesMapOnDim[axisIndex];\n }\n};\n/**\n * @return {Array.}\n */\n\n\ngridProto.getAxes = function () {\n return this._axesList.slice();\n};\n/**\n * Usage:\n * grid.getCartesian(xAxisIndex, yAxisIndex);\n * grid.getCartesian(xAxisIndex);\n * grid.getCartesian(null, yAxisIndex);\n * grid.getCartesian({xAxisIndex: ..., yAxisIndex: ...});\n *\n * @param {number|Object} [xAxisIndex]\n * @param {number} [yAxisIndex]\n */\n\n\ngridProto.getCartesian = function (xAxisIndex, yAxisIndex) {\n if (xAxisIndex != null && yAxisIndex != null) {\n var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\n return this._coordsMap[key];\n }\n\n if (isObject(xAxisIndex)) {\n yAxisIndex = xAxisIndex.yAxisIndex;\n xAxisIndex = xAxisIndex.xAxisIndex;\n } // When only xAxisIndex or yAxisIndex given, find its first cartesian.\n\n\n for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) {\n if (coordList[i].getAxis('x').index === xAxisIndex || coordList[i].getAxis('y').index === yAxisIndex) {\n return coordList[i];\n }\n }\n};\n\ngridProto.getCartesians = function () {\n return this._coordsList.slice();\n};\n/**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n\n\ngridProto.convertToPixel = function (ecModel, finder, value) {\n var target = this._findConvertTarget(ecModel, finder);\n\n return target.cartesian ? target.cartesian.dataToPoint(value) : target.axis ? target.axis.toGlobalCoord(target.axis.dataToCoord(value)) : null;\n};\n/**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n\n\ngridProto.convertFromPixel = function (ecModel, finder, value) {\n var target = this._findConvertTarget(ecModel, finder);\n\n return target.cartesian ? target.cartesian.pointToData(value) : target.axis ? target.axis.coordToData(target.axis.toLocalCoord(value)) : null;\n};\n/**\n * @inner\n */\n\n\ngridProto._findConvertTarget = function (ecModel, finder) {\n var seriesModel = finder.seriesModel;\n var xAxisModel = finder.xAxisModel || seriesModel && seriesModel.getReferringComponents('xAxis')[0];\n var yAxisModel = finder.yAxisModel || seriesModel && seriesModel.getReferringComponents('yAxis')[0];\n var gridModel = finder.gridModel;\n var coordsList = this._coordsList;\n var cartesian;\n var axis;\n\n if (seriesModel) {\n cartesian = seriesModel.coordinateSystem;\n indexOf(coordsList, cartesian) < 0 && (cartesian = null);\n } else if (xAxisModel && yAxisModel) {\n cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n } else if (xAxisModel) {\n axis = this.getAxis('x', xAxisModel.componentIndex);\n } else if (yAxisModel) {\n axis = this.getAxis('y', yAxisModel.componentIndex);\n } // Lowest priority.\n else if (gridModel) {\n var grid = gridModel.coordinateSystem;\n\n if (grid === this) {\n cartesian = this._coordsList[0];\n }\n }\n\n return {\n cartesian: cartesian,\n axis: axis\n };\n};\n/**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n\n\ngridProto.containPoint = function (point) {\n var coord = this._coordsList[0];\n\n if (coord) {\n return coord.containPoint(point);\n }\n};\n/**\n * Initialize cartesian coordinate systems\n * @private\n */\n\n\ngridProto._initCartesian = function (gridModel, ecModel, api) {\n var axisPositionUsed = {\n left: false,\n right: false,\n top: false,\n bottom: false\n };\n var axesMap = {\n x: {},\n y: {}\n };\n var axesCount = {\n x: 0,\n y: 0\n }; /// Create axis\n\n ecModel.eachComponent('xAxis', createAxisCreator('x'), this);\n ecModel.eachComponent('yAxis', createAxisCreator('y'), this);\n\n if (!axesCount.x || !axesCount.y) {\n // Roll back when there no either x or y axis\n this._axesMap = {};\n this._axesList = [];\n return;\n }\n\n this._axesMap = axesMap; /// Create cartesian2d\n\n each(axesMap.x, function (xAxis, xAxisIndex) {\n each(axesMap.y, function (yAxis, yAxisIndex) {\n var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\n var cartesian = new Cartesian2D(key);\n cartesian.grid = this;\n cartesian.model = gridModel;\n this._coordsMap[key] = cartesian;\n\n this._coordsList.push(cartesian);\n\n cartesian.addAxis(xAxis);\n cartesian.addAxis(yAxis);\n }, this);\n }, this);\n\n function createAxisCreator(axisType) {\n return function (axisModel, idx) {\n if (!isAxisUsedInTheGrid(axisModel, gridModel, ecModel)) {\n return;\n }\n\n var axisPosition = axisModel.get('position');\n\n if (axisType === 'x') {\n // Fix position\n if (axisPosition !== 'top' && axisPosition !== 'bottom') {\n // Default bottom of X\n axisPosition = axisPositionUsed.bottom ? 'top' : 'bottom';\n }\n } else {\n // Fix position\n if (axisPosition !== 'left' && axisPosition !== 'right') {\n // Default left of Y\n axisPosition = axisPositionUsed.left ? 'right' : 'left';\n }\n }\n\n axisPositionUsed[axisPosition] = true;\n var axis = new Axis2D(axisType, createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisPosition);\n var isCategory = axis.type === 'category';\n axis.onBand = isCategory && axisModel.get('boundaryGap');\n axis.inverse = axisModel.get('inverse'); // Inject axis into axisModel\n\n axisModel.axis = axis; // Inject axisModel into axis\n\n axis.model = axisModel; // Inject grid info axis\n\n axis.grid = this; // Index of axis, can be used as key\n\n axis.index = idx;\n\n this._axesList.push(axis);\n\n axesMap[axisType][idx] = axis;\n axesCount[axisType]++;\n };\n }\n};\n/**\n * Update cartesian properties from series\n * @param {module:echarts/model/Option} option\n * @private\n */\n\n\ngridProto._updateScale = function (ecModel, gridModel) {\n // Reset scale\n each(this._axesList, function (axis) {\n axis.scale.setExtent(Infinity, -Infinity);\n });\n ecModel.eachSeries(function (seriesModel) {\n if (isCartesian2D(seriesModel)) {\n var axesModels = findAxesModels(seriesModel, ecModel);\n var xAxisModel = axesModels[0];\n var yAxisModel = axesModels[1];\n\n if (!isAxisUsedInTheGrid(xAxisModel, gridModel, ecModel) || !isAxisUsedInTheGrid(yAxisModel, gridModel, ecModel)) {\n return;\n }\n\n var cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n var data = seriesModel.getData();\n var xAxis = cartesian.getAxis('x');\n var yAxis = cartesian.getAxis('y');\n\n if (data.type === 'list') {\n unionExtent(data, xAxis, seriesModel);\n unionExtent(data, yAxis, seriesModel);\n }\n }\n }, this);\n\n function unionExtent(data, axis, seriesModel) {\n each(data.mapDimension(axis.dim, true), function (dim) {\n axis.scale.unionExtentFromData( // For example, the extent of the orginal dimension\n // is [0.1, 0.5], the extent of the `stackResultDimension`\n // is [7, 9], the final extent should not include [0.1, 0.5].\n data, getStackedDimension(data, dim));\n });\n }\n};\n/**\n * @param {string} [dim] 'x' or 'y' or 'auto' or null/undefined\n * @return {Object} {baseAxes: [], otherAxes: []}\n */\n\n\ngridProto.getTooltipAxes = function (dim) {\n var baseAxes = [];\n var otherAxes = [];\n each(this.getCartesians(), function (cartesian) {\n var baseAxis = dim != null && dim !== 'auto' ? cartesian.getAxis(dim) : cartesian.getBaseAxis();\n var otherAxis = cartesian.getOtherAxis(baseAxis);\n indexOf(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis);\n indexOf(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis);\n });\n return {\n baseAxes: baseAxes,\n otherAxes: otherAxes\n };\n};\n/**\n * @inner\n */\n\n\nfunction updateAxisTransform(axis, coordBase) {\n var axisExtent = axis.getExtent();\n var axisExtentSum = axisExtent[0] + axisExtent[1]; // Fast transform\n\n axis.toGlobalCoord = axis.dim === 'x' ? function (coord) {\n return coord + coordBase;\n } : function (coord) {\n return axisExtentSum - coord + coordBase;\n };\n axis.toLocalCoord = axis.dim === 'x' ? function (coord) {\n return coord - coordBase;\n } : function (coord) {\n return axisExtentSum - coord + coordBase;\n };\n}\n\nvar axesTypes = ['xAxis', 'yAxis'];\n/**\n * @inner\n */\n\nfunction findAxesModels(seriesModel, ecModel) {\n return map(axesTypes, function (axisType) {\n var axisModel = seriesModel.getReferringComponents(axisType)[0];\n return axisModel;\n });\n}\n/**\n * @inner\n */\n\n\nfunction isCartesian2D(seriesModel) {\n return seriesModel.get('coordinateSystem') === 'cartesian2d';\n}\n\nGrid.create = function (ecModel, api) {\n var grids = [];\n ecModel.eachComponent('grid', function (gridModel, idx) {\n var grid = new Grid(gridModel, ecModel, api);\n grid.name = 'grid_' + idx; // dataSampling requires axis extent, so resize\n // should be performed in create stage.\n\n grid.resize(gridModel, api, true);\n gridModel.coordinateSystem = grid;\n grids.push(grid);\n }); // Inject the coordinateSystems into seriesModel\n\n ecModel.eachSeries(function (seriesModel) {\n if (!isCartesian2D(seriesModel)) {\n return;\n }\n\n var axesModels = findAxesModels(seriesModel, ecModel);\n var xAxisModel = axesModels[0];\n var yAxisModel = axesModels[1];\n var gridModel = xAxisModel.getCoordSysModel();\n var grid = gridModel.coordinateSystem;\n seriesModel.coordinateSystem = grid.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n });\n return grids;\n}; // For deciding which dimensions to use when creating list data\n\n\nGrid.dimensions = Grid.prototype.dimensions = Cartesian2D.prototype.dimensions;\nCoordinateSystem.register('cartesian2d', Grid);\nvar _default = Grid;\nmodule.exports = _default;","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var util = require(\"./core/util\");\n\nvar _config = require(\"./config\");\n\nvar devicePixelRatio = _config.devicePixelRatio;\n\nvar Style = require(\"./graphic/Style\");\n\nvar Pattern = require(\"./graphic/Pattern\");\n\n/**\n * @module zrender/Layer\n * @author pissang(https://www.github.com/pissang)\n */\nfunction returnFalse() {\n return false;\n}\n/**\n * 创建dom\n *\n * @inner\n * @param {string} id dom id 待用\n * @param {Painter} painter painter instance\n * @param {number} number\n */\n\n\nfunction createDom(id, painter, dpr) {\n var newDom = util.createCanvas();\n var width = painter.getWidth();\n var height = painter.getHeight();\n var newDomStyle = newDom.style;\n\n if (newDomStyle) {\n // In node or some other non-browser environment\n newDomStyle.position = 'absolute';\n newDomStyle.left = 0;\n newDomStyle.top = 0;\n newDomStyle.width = width + 'px';\n newDomStyle.height = height + 'px';\n newDom.setAttribute('data-zr-dom-id', id);\n }\n\n newDom.width = width * dpr;\n newDom.height = height * dpr;\n return newDom;\n}\n/**\n * @alias module:zrender/Layer\n * @constructor\n * @extends module:zrender/mixin/Transformable\n * @param {string} id\n * @param {module:zrender/Painter} painter\n * @param {number} [dpr]\n */\n\n\nvar Layer = function (id, painter, dpr) {\n var dom;\n dpr = dpr || devicePixelRatio;\n\n if (typeof id === 'string') {\n dom = createDom(id, painter, dpr);\n } // Not using isDom because in node it will return false\n else if (util.isObject(id)) {\n dom = id;\n id = dom.id;\n }\n\n this.id = id;\n this.dom = dom;\n var domStyle = dom.style;\n\n if (domStyle) {\n // Not in node\n dom.onselectstart = returnFalse; // 避免页面选中的尴尬\n\n domStyle['-webkit-user-select'] = 'none';\n domStyle['user-select'] = 'none';\n domStyle['-webkit-touch-callout'] = 'none';\n domStyle['-webkit-tap-highlight-color'] = 'rgba(0,0,0,0)';\n domStyle['padding'] = 0; // eslint-disable-line dot-notation\n\n domStyle['margin'] = 0; // eslint-disable-line dot-notation\n\n domStyle['border-width'] = 0;\n }\n\n this.domBack = null;\n this.ctxBack = null;\n this.painter = painter;\n this.config = null; // Configs\n\n /**\n * 每次清空画布的颜色\n * @type {string}\n * @default 0\n */\n\n this.clearColor = 0;\n /**\n * 是否开启动态模糊\n * @type {boolean}\n * @default false\n */\n\n this.motionBlur = false;\n /**\n * 在开启动态模糊的时候使用,与上一帧混合的alpha值,值越大尾迹越明显\n * @type {number}\n * @default 0.7\n */\n\n this.lastFrameAlpha = 0.7;\n /**\n * Layer dpr\n * @type {number}\n */\n\n this.dpr = dpr;\n};\n\nLayer.prototype = {\n constructor: Layer,\n __dirty: true,\n __used: false,\n __drawIndex: 0,\n __startIndex: 0,\n __endIndex: 0,\n incremental: false,\n getElementCount: function () {\n return this.__endIndex - this.__startIndex;\n },\n initContext: function () {\n this.ctx = this.dom.getContext('2d');\n this.ctx.dpr = this.dpr;\n },\n createBackBuffer: function () {\n var dpr = this.dpr;\n this.domBack = createDom('back-' + this.id, this.painter, dpr);\n this.ctxBack = this.domBack.getContext('2d');\n\n if (dpr !== 1) {\n this.ctxBack.scale(dpr, dpr);\n }\n },\n\n /**\n * @param {number} width\n * @param {number} height\n */\n resize: function (width, height) {\n var dpr = this.dpr;\n var dom = this.dom;\n var domStyle = dom.style;\n var domBack = this.domBack;\n\n if (domStyle) {\n domStyle.width = width + 'px';\n domStyle.height = height + 'px';\n }\n\n dom.width = width * dpr;\n dom.height = height * dpr;\n\n if (domBack) {\n domBack.width = width * dpr;\n domBack.height = height * dpr;\n\n if (dpr !== 1) {\n this.ctxBack.scale(dpr, dpr);\n }\n }\n },\n\n /**\n * 清空该层画布\n * @param {boolean} [clearAll]=false Clear all with out motion blur\n * @param {Color} [clearColor]\n */\n clear: function (clearAll, clearColor) {\n var dom = this.dom;\n var ctx = this.ctx;\n var width = dom.width;\n var height = dom.height;\n var clearColor = clearColor || this.clearColor;\n var haveMotionBLur = this.motionBlur && !clearAll;\n var lastFrameAlpha = this.lastFrameAlpha;\n var dpr = this.dpr;\n\n if (haveMotionBLur) {\n if (!this.domBack) {\n this.createBackBuffer();\n }\n\n this.ctxBack.globalCompositeOperation = 'copy';\n this.ctxBack.drawImage(dom, 0, 0, width / dpr, height / dpr);\n }\n\n ctx.clearRect(0, 0, width, height);\n\n if (clearColor && clearColor !== 'transparent') {\n var clearColorGradientOrPattern; // Gradient\n\n if (clearColor.colorStops) {\n // Cache canvas gradient\n clearColorGradientOrPattern = clearColor.__canvasGradient || Style.getGradient(ctx, clearColor, {\n x: 0,\n y: 0,\n width: width,\n height: height\n });\n clearColor.__canvasGradient = clearColorGradientOrPattern;\n } // Pattern\n else if (clearColor.image) {\n clearColorGradientOrPattern = Pattern.prototype.getCanvasPattern.call(clearColor, ctx);\n }\n\n ctx.save();\n ctx.fillStyle = clearColorGradientOrPattern || clearColor;\n ctx.fillRect(0, 0, width, height);\n ctx.restore();\n }\n\n if (haveMotionBLur) {\n var domBack = this.domBack;\n ctx.save();\n ctx.globalAlpha = lastFrameAlpha;\n ctx.drawImage(domBack, 0, 0, width, height);\n ctx.restore();\n }\n }\n};\nvar _default = Layer;\nmodule.exports = _default;","var LRU = require(\"../../core/LRU\");\n\nvar globalImageCache = new LRU(50);\n/**\n * @param {string|HTMLImageElement|HTMLCanvasElement|Canvas} newImageOrSrc\n * @return {HTMLImageElement|HTMLCanvasElement|Canvas} image\n */\n\nfunction findExistImage(newImageOrSrc) {\n if (typeof newImageOrSrc === 'string') {\n var cachedImgObj = globalImageCache.get(newImageOrSrc);\n return cachedImgObj && cachedImgObj.image;\n } else {\n return newImageOrSrc;\n }\n}\n/**\n * Caution: User should cache loaded images, but not just count on LRU.\n * Consider if required images more than LRU size, will dead loop occur?\n *\n * @param {string|HTMLImageElement|HTMLCanvasElement|Canvas} newImageOrSrc\n * @param {HTMLImageElement|HTMLCanvasElement|Canvas} image Existent image.\n * @param {module:zrender/Element} [hostEl] For calling `dirty`.\n * @param {Function} [cb] params: (image, cbPayload)\n * @param {Object} [cbPayload] Payload on cb calling.\n * @return {HTMLImageElement|HTMLCanvasElement|Canvas} image\n */\n\n\nfunction createOrUpdateImage(newImageOrSrc, image, hostEl, cb, cbPayload) {\n if (!newImageOrSrc) {\n return image;\n } else if (typeof newImageOrSrc === 'string') {\n // Image should not be loaded repeatly.\n if (image && image.__zrImageSrc === newImageOrSrc || !hostEl) {\n return image;\n } // Only when there is no existent image or existent image src\n // is different, this method is responsible for load.\n\n\n var cachedImgObj = globalImageCache.get(newImageOrSrc);\n var pendingWrap = {\n hostEl: hostEl,\n cb: cb,\n cbPayload: cbPayload\n };\n\n if (cachedImgObj) {\n image = cachedImgObj.image;\n !isImageReady(image) && cachedImgObj.pending.push(pendingWrap);\n } else {\n image = new Image();\n image.onload = image.onerror = imageOnLoad;\n globalImageCache.put(newImageOrSrc, image.__cachedImgObj = {\n image: image,\n pending: [pendingWrap]\n });\n image.src = image.__zrImageSrc = newImageOrSrc;\n }\n\n return image;\n } // newImageOrSrc is an HTMLImageElement or HTMLCanvasElement or Canvas\n else {\n return newImageOrSrc;\n }\n}\n\nfunction imageOnLoad() {\n var cachedImgObj = this.__cachedImgObj;\n this.onload = this.onerror = this.__cachedImgObj = null;\n\n for (var i = 0; i < cachedImgObj.pending.length; i++) {\n var pendingWrap = cachedImgObj.pending[i];\n var cb = pendingWrap.cb;\n cb && cb(this, pendingWrap.cbPayload);\n pendingWrap.hostEl.dirty();\n }\n\n cachedImgObj.pending.length = 0;\n}\n\nfunction isImageReady(image) {\n return image && image.width && image.height;\n}\n\nexports.findExistImage = findExistImage;\nexports.createOrUpdateImage = createOrUpdateImage;\nexports.isImageReady = isImageReady;","\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 echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _listComponent = require(\"../helper/listComponent\");\n\nvar makeBackground = _listComponent.makeBackground;\n\nvar layoutUtil = require(\"../../util/layout\");\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 curry = zrUtil.curry;\nvar each = zrUtil.each;\nvar Group = graphic.Group;\n\nvar _default = echarts.extendComponentView({\n type: 'legend.plain',\n newlineDisabled: false,\n\n /**\n * @override\n */\n init: function () {\n /**\n * @private\n * @type {module:zrender/container/Group}\n */\n this.group.add(this._contentGroup = new Group());\n /**\n * @private\n * @type {module:zrender/Element}\n */\n\n this._backgroundEl;\n /**\n * @private\n * @type {module:zrender/container/Group}\n */\n\n this.group.add(this._selectorGroup = new Group());\n /**\n * If first rendering, `contentGroup.position` is [0, 0], which\n * does not make sense and may cause unexepcted animation if adopted.\n * @private\n * @type {boolean}\n */\n\n this._isFirstRender = true;\n },\n\n /**\n * @protected\n */\n getContentGroup: function () {\n return this._contentGroup;\n },\n\n /**\n * @protected\n */\n getSelectorGroup: function () {\n return this._selectorGroup;\n },\n\n /**\n * @override\n */\n render: function (legendModel, ecModel, api) {\n var isFirstRender = this._isFirstRender;\n this._isFirstRender = false;\n this.resetInner();\n\n if (!legendModel.get('show', true)) {\n return;\n }\n\n var itemAlign = legendModel.get('align');\n var orient = legendModel.get('orient');\n\n if (!itemAlign || itemAlign === 'auto') {\n itemAlign = legendModel.get('left') === 'right' && orient === 'vertical' ? 'right' : 'left';\n }\n\n var selector = legendModel.get('selector', true);\n var selectorPosition = legendModel.get('selectorPosition', true);\n\n if (selector && (!selectorPosition || selectorPosition === 'auto')) {\n selectorPosition = orient === 'horizontal' ? 'end' : 'start';\n }\n\n this.renderInner(itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition); // Perform layout.\n\n var positionInfo = legendModel.getBoxLayoutParams();\n var viewportSize = {\n width: api.getWidth(),\n height: api.getHeight()\n };\n var padding = legendModel.get('padding');\n var maxSize = layoutUtil.getLayoutRect(positionInfo, viewportSize, padding);\n var mainRect = this.layoutInner(legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition); // Place mainGroup, based on the calculated `mainRect`.\n\n var layoutRect = layoutUtil.getLayoutRect(zrUtil.defaults({\n width: mainRect.width,\n height: mainRect.height\n }, positionInfo), viewportSize, padding);\n this.group.attr('position', [layoutRect.x - mainRect.x, layoutRect.y - mainRect.y]); // Render background after group is layout.\n\n this.group.add(this._backgroundEl = makeBackground(mainRect, legendModel));\n },\n\n /**\n * @protected\n */\n resetInner: function () {\n this.getContentGroup().removeAll();\n this._backgroundEl && this.group.remove(this._backgroundEl);\n this.getSelectorGroup().removeAll();\n },\n\n /**\n * @protected\n */\n renderInner: function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) {\n var contentGroup = this.getContentGroup();\n var legendDrawnMap = zrUtil.createHashMap();\n var selectMode = legendModel.get('selectedMode');\n var excludeSeriesId = [];\n ecModel.eachRawSeries(function (seriesModel) {\n !seriesModel.get('legendHoverLink') && excludeSeriesId.push(seriesModel.id);\n });\n each(legendModel.getData(), function (itemModel, dataIndex) {\n var name = itemModel.get('name'); // Use empty string or \\n as a newline string\n\n if (!this.newlineDisabled && (name === '' || name === '\\n')) {\n contentGroup.add(new Group({\n newline: true\n }));\n return;\n } // Representitive series.\n\n\n var seriesModel = ecModel.getSeriesByName(name)[0];\n\n if (legendDrawnMap.get(name)) {\n // Have been drawed\n return;\n } // Legend to control series.\n\n\n if (seriesModel) {\n var data = seriesModel.getData();\n var color = data.getVisual('color');\n var borderColor = data.getVisual('borderColor'); // If color is a callback function\n\n if (typeof color === 'function') {\n // Use the first data\n color = color(seriesModel.getDataParams(0));\n } // If borderColor is a callback function\n\n\n if (typeof borderColor === 'function') {\n // Use the first data\n borderColor = borderColor(seriesModel.getDataParams(0));\n } // Using rect symbol defaultly\n\n\n var legendSymbolType = data.getVisual('legendSymbol') || 'roundRect';\n var symbolType = data.getVisual('symbol');\n\n var itemGroup = this._createItem(name, dataIndex, itemModel, legendModel, legendSymbolType, symbolType, itemAlign, color, borderColor, selectMode);\n\n itemGroup.on('click', curry(dispatchSelectAction, name, null, api, excludeSeriesId)).on('mouseover', curry(dispatchHighlightAction, seriesModel.name, null, api, excludeSeriesId)).on('mouseout', curry(dispatchDownplayAction, seriesModel.name, null, api, excludeSeriesId));\n legendDrawnMap.set(name, true);\n } else {\n // Legend to control data. In pie and funnel.\n ecModel.eachRawSeries(function (seriesModel) {\n // In case multiple series has same data name\n if (legendDrawnMap.get(name)) {\n return;\n }\n\n if (seriesModel.legendVisualProvider) {\n var provider = seriesModel.legendVisualProvider;\n\n if (!provider.containName(name)) {\n return;\n }\n\n var idx = provider.indexOfName(name);\n var color = provider.getItemVisual(idx, 'color');\n var borderColor = provider.getItemVisual(idx, 'borderColor');\n var legendSymbolType = 'roundRect';\n\n var itemGroup = this._createItem(name, dataIndex, itemModel, legendModel, legendSymbolType, null, itemAlign, color, borderColor, selectMode); // FIXME: consider different series has items with the same name.\n\n\n itemGroup.on('click', curry(dispatchSelectAction, null, name, api, excludeSeriesId)) // Should not specify the series name, consider legend controls\n // more than one pie series.\n .on('mouseover', curry(dispatchHighlightAction, null, name, api, excludeSeriesId)).on('mouseout', curry(dispatchDownplayAction, null, name, api, excludeSeriesId));\n legendDrawnMap.set(name, true);\n }\n }, this);\n }\n }, this);\n\n if (selector) {\n this._createSelector(selector, legendModel, api, orient, selectorPosition);\n }\n },\n _createSelector: function (selector, legendModel, api, orient, selectorPosition) {\n var selectorGroup = this.getSelectorGroup();\n each(selector, function (selectorItem) {\n createSelectorButton(selectorItem);\n });\n\n function createSelectorButton(selectorItem) {\n var type = selectorItem.type;\n var labelText = new graphic.Text({\n style: {\n x: 0,\n y: 0,\n align: 'center',\n verticalAlign: 'middle'\n },\n onclick: function () {\n api.dispatchAction({\n type: type === 'all' ? 'legendAllSelect' : 'legendInverseSelect'\n });\n }\n });\n selectorGroup.add(labelText);\n var labelModel = legendModel.getModel('selectorLabel');\n var emphasisLabelModel = legendModel.getModel('emphasis.selectorLabel');\n graphic.setLabelStyle(labelText.style, labelText.hoverStyle = {}, labelModel, emphasisLabelModel, {\n defaultText: selectorItem.title,\n isRectText: false\n });\n graphic.setHoverStyle(labelText);\n }\n },\n _createItem: function (name, dataIndex, itemModel, legendModel, legendSymbolType, symbolType, itemAlign, color, borderColor, selectMode) {\n var itemWidth = legendModel.get('itemWidth');\n var itemHeight = legendModel.get('itemHeight');\n var inactiveColor = legendModel.get('inactiveColor');\n var inactiveBorderColor = legendModel.get('inactiveBorderColor');\n var symbolKeepAspect = legendModel.get('symbolKeepAspect');\n var legendModelItemStyle = legendModel.getModel('itemStyle');\n var isSelected = legendModel.isSelected(name);\n var itemGroup = new Group();\n var textStyleModel = itemModel.getModel('textStyle');\n var itemIcon = itemModel.get('icon');\n var tooltipModel = itemModel.getModel('tooltip');\n var legendGlobalTooltipModel = tooltipModel.parentModel; // Use user given icon first\n\n legendSymbolType = itemIcon || legendSymbolType;\n var legendSymbol = createSymbol(legendSymbolType, 0, 0, itemWidth, itemHeight, isSelected ? color : inactiveColor, // symbolKeepAspect default true for legend\n symbolKeepAspect == null ? true : symbolKeepAspect);\n itemGroup.add(setSymbolStyle(legendSymbol, legendSymbolType, legendModelItemStyle, borderColor, inactiveBorderColor, isSelected)); // Compose symbols\n // PENDING\n\n if (!itemIcon && symbolType // At least show one symbol, can't be all none\n && (symbolType !== legendSymbolType || symbolType === 'none')) {\n var size = itemHeight * 0.8;\n\n if (symbolType === 'none') {\n symbolType = 'circle';\n }\n\n var legendSymbolCenter = createSymbol(symbolType, (itemWidth - size) / 2, (itemHeight - size) / 2, size, size, isSelected ? color : inactiveColor, // symbolKeepAspect default true for legend\n symbolKeepAspect == null ? true : symbolKeepAspect); // Put symbol in the center\n\n itemGroup.add(setSymbolStyle(legendSymbolCenter, symbolType, legendModelItemStyle, borderColor, inactiveBorderColor, isSelected));\n }\n\n var textX = itemAlign === 'left' ? itemWidth + 5 : -5;\n var textAlign = itemAlign;\n var formatter = legendModel.get('formatter');\n var content = name;\n\n if (typeof formatter === 'string' && formatter) {\n content = formatter.replace('{name}', name != null ? name : '');\n } else if (typeof formatter === 'function') {\n content = formatter(name);\n }\n\n itemGroup.add(new graphic.Text({\n style: graphic.setTextStyle({}, textStyleModel, {\n text: content,\n x: textX,\n y: itemHeight / 2,\n textFill: isSelected ? textStyleModel.getTextColor() : inactiveColor,\n textAlign: textAlign,\n textVerticalAlign: 'middle'\n })\n })); // Add a invisible rect to increase the area of mouse hover\n\n var hitRect = new graphic.Rect({\n shape: itemGroup.getBoundingRect(),\n invisible: true,\n tooltip: tooltipModel.get('show') ? zrUtil.extend({\n content: name,\n // Defaul formatter\n formatter: legendGlobalTooltipModel.get('formatter', true) || function () {\n return name;\n },\n formatterParams: {\n componentType: 'legend',\n legendIndex: legendModel.componentIndex,\n name: name,\n $vars: ['name']\n }\n }, tooltipModel.option) : null\n });\n itemGroup.add(hitRect);\n itemGroup.eachChild(function (child) {\n child.silent = true;\n });\n hitRect.silent = !selectMode;\n this.getContentGroup().add(itemGroup);\n graphic.setHoverStyle(itemGroup);\n itemGroup.__legendDataIndex = dataIndex;\n return itemGroup;\n },\n\n /**\n * @protected\n */\n layoutInner: function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) {\n var contentGroup = this.getContentGroup();\n var selectorGroup = this.getSelectorGroup(); // Place items in contentGroup.\n\n layoutUtil.box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), maxSize.width, maxSize.height);\n var contentRect = contentGroup.getBoundingRect();\n var contentPos = [-contentRect.x, -contentRect.y];\n\n if (selector) {\n // Place buttons in selectorGroup\n layoutUtil.box( // Buttons in selectorGroup always layout horizontally\n 'horizontal', selectorGroup, legendModel.get('selectorItemGap', true));\n var selectorRect = selectorGroup.getBoundingRect();\n var selectorPos = [-selectorRect.x, -selectorRect.y];\n var selectorButtonGap = legendModel.get('selectorButtonGap', true);\n var orientIdx = legendModel.getOrient().index;\n var wh = orientIdx === 0 ? 'width' : 'height';\n var hw = orientIdx === 0 ? 'height' : 'width';\n var yx = orientIdx === 0 ? 'y' : 'x';\n\n if (selectorPosition === 'end') {\n selectorPos[orientIdx] += contentRect[wh] + selectorButtonGap;\n } else {\n contentPos[orientIdx] += selectorRect[wh] + selectorButtonGap;\n } //Always align selector to content as 'middle'\n\n\n selectorPos[1 - orientIdx] += contentRect[hw] / 2 - selectorRect[hw] / 2;\n selectorGroup.attr('position', selectorPos);\n contentGroup.attr('position', contentPos);\n var mainRect = {\n x: 0,\n y: 0\n };\n mainRect[wh] = contentRect[wh] + selectorButtonGap + selectorRect[wh];\n mainRect[hw] = Math.max(contentRect[hw], selectorRect[hw]);\n mainRect[yx] = Math.min(0, selectorRect[yx] + selectorPos[1 - orientIdx]);\n return mainRect;\n } else {\n contentGroup.attr('position', contentPos);\n return this.group.getBoundingRect();\n }\n },\n\n /**\n * @protected\n */\n remove: function () {\n this.getContentGroup().removeAll();\n this._isFirstRender = true;\n }\n});\n\nfunction setSymbolStyle(symbol, symbolType, legendModelItemStyle, borderColor, inactiveBorderColor, isSelected) {\n var itemStyle;\n\n if (symbolType !== 'line' && symbolType.indexOf('empty') < 0) {\n itemStyle = legendModelItemStyle.getItemStyle();\n symbol.style.stroke = borderColor;\n\n if (!isSelected) {\n itemStyle.stroke = inactiveBorderColor;\n }\n } else {\n itemStyle = legendModelItemStyle.getItemStyle(['borderWidth', 'borderColor']);\n }\n\n return symbol.setStyle(itemStyle);\n}\n\nfunction dispatchSelectAction(seriesName, dataName, api, excludeSeriesId) {\n // downplay before unselect\n dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId);\n api.dispatchAction({\n type: 'legendToggleSelect',\n name: seriesName != null ? seriesName : dataName\n }); // highlight after select\n\n dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId);\n}\n\nfunction dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId) {\n // If element hover will move to a hoverLayer.\n var el = api.getZr().storage.getDisplayList()[0];\n\n if (!(el && el.useHoverLayer)) {\n api.dispatchAction({\n type: 'highlight',\n seriesName: seriesName,\n name: dataName,\n excludeSeriesId: excludeSeriesId\n });\n }\n}\n\nfunction dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId) {\n // If element hover will move to a hoverLayer.\n var el = api.getZr().storage.getDisplayList()[0];\n\n if (!(el && el.useHoverLayer)) {\n api.dispatchAction({\n type: 'downplay',\n seriesName: seriesName,\n name: dataName,\n excludeSeriesId: excludeSeriesId\n });\n }\n}\n\nmodule.exports = _default;","var Eventful = require(\"../mixin/Eventful\");\n\nexports.Dispatcher = Eventful;\n\nvar env = require(\"./env\");\n\nvar _dom = require(\"./dom\");\n\nvar isCanvasEl = _dom.isCanvasEl;\nvar transformCoordWithViewport = _dom.transformCoordWithViewport;\n\n/**\n * Utilities for mouse or touch events.\n */\nvar isDomLevel2 = typeof window !== 'undefined' && !!window.addEventListener;\nvar MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/;\nvar _calcOut = [];\n/**\n * Get the `zrX` and `zrY`, which are relative to the top-left of\n * the input `el`.\n * CSS transform (2D & 3D) is supported.\n *\n * The strategy to fetch the coords:\n * + If `calculate` is not set as `true`, users of this method should\n * ensure that `el` is the same or the same size & location as `e.target`.\n * Otherwise the result coords are probably not expected. Because we\n * firstly try to get coords from e.offsetX/e.offsetY.\n * + If `calculate` is set as `true`, the input `el` can be any element\n * and we force to calculate the coords based on `el`.\n * + The input `el` should be positionable (not position:static).\n *\n * The force `calculate` can be used in case like:\n * When mousemove event triggered on ec tooltip, `e.target` is not `el`(zr painter.dom).\n *\n * @param {HTMLElement} el DOM element.\n * @param {Event} e Mouse event or touch event.\n * @param {Object} out Get `out.zrX` and `out.zrY` as the result.\n * @param {boolean} [calculate=false] Whether to force calculate\n * the coordinates but not use ones provided by browser.\n */\n\nfunction clientToLocal(el, e, out, calculate) {\n out = out || {}; // According to the W3C Working Draft, offsetX and offsetY should be relative\n // to the padding edge of the target element. The only browser using this convention\n // is IE. Webkit uses the border edge, Opera uses the content edge, and FireFox does\n // not support the properties.\n // (see http://www.jacklmoore.com/notes/mouse-position/)\n // In zr painter.dom, padding edge equals to border edge.\n\n if (calculate || !env.canvasSupported) {\n calculateZrXY(el, e, out);\n } // Caution: In FireFox, layerX/layerY Mouse position relative to the closest positioned\n // ancestor element, so we should make sure el is positioned (e.g., not position:static).\n // BTW1, Webkit don't return the same results as FF in non-simple cases (like add\n // zoom-factor, overflow / opacity layers, transforms ...)\n // BTW2, (ev.offsetY || ev.pageY - $(ev.target).offset().top) is not correct in preserve-3d.\n // \n // BTW3, In ff, offsetX/offsetY is always 0.\n else if (env.browser.firefox && e.layerX != null && e.layerX !== e.offsetX) {\n out.zrX = e.layerX;\n out.zrY = e.layerY;\n } // For IE6+, chrome, safari, opera. (When will ff support offsetX?)\n else if (e.offsetX != null) {\n out.zrX = e.offsetX;\n out.zrY = e.offsetY;\n } // For some other device, e.g., IOS safari.\n else {\n calculateZrXY(el, e, out);\n }\n\n return out;\n}\n\nfunction calculateZrXY(el, e, out) {\n // BlackBerry 5, iOS 3 (original iPhone) don't have getBoundingRect.\n if (env.domSupported && el.getBoundingClientRect) {\n var ex = e.clientX;\n var ey = e.clientY;\n\n if (isCanvasEl(el)) {\n // Original approach, which do not support CSS transform.\n // marker can not be locationed in a canvas container\n // (getBoundingClientRect is always 0). We do not support\n // that input a pre-created canvas to zr while using css\n // transform in iOS.\n var box = el.getBoundingClientRect();\n out.zrX = ex - box.left;\n out.zrY = ey - box.top;\n return;\n } else {\n if (transformCoordWithViewport(_calcOut, el, ex, ey)) {\n out.zrX = _calcOut[0];\n out.zrY = _calcOut[1];\n return;\n }\n }\n }\n\n out.zrX = out.zrY = 0;\n}\n/**\n * Find native event compat for legency IE.\n * Should be called at the begining of a native event listener.\n *\n * @param {Event} [e] Mouse event or touch event or pointer event.\n * For lagency IE, we use `window.event` is used.\n * @return {Event} The native event.\n */\n\n\nfunction getNativeEvent(e) {\n return e || window.event;\n}\n/**\n * Normalize the coordinates of the input event.\n *\n * Get the `e.zrX` and `e.zrY`, which are relative to the top-left of\n * the input `el`.\n * Get `e.zrDelta` if using mouse wheel.\n * Get `e.which`, see the comment inside this function.\n *\n * Do not calculate repeatly if `zrX` and `zrY` already exist.\n *\n * Notice: see comments in `clientToLocal`. check the relationship\n * between the result coords and the parameters `el` and `calculate`.\n *\n * @param {HTMLElement} el DOM element.\n * @param {Event} [e] See `getNativeEvent`.\n * @param {boolean} [calculate=false] Whether to force calculate\n * the coordinates but not use ones provided by browser.\n * @return {UIEvent} The normalized native UIEvent.\n */\n\n\nfunction normalizeEvent(el, e, calculate) {\n e = getNativeEvent(e);\n\n if (e.zrX != null) {\n return e;\n }\n\n var eventType = e.type;\n var isTouch = eventType && eventType.indexOf('touch') >= 0;\n\n if (!isTouch) {\n clientToLocal(el, e, e, calculate);\n e.zrDelta = e.wheelDelta ? e.wheelDelta / 120 : -(e.detail || 0) / 3;\n } else {\n var touch = eventType !== 'touchend' ? e.targetTouches[0] : e.changedTouches[0];\n touch && clientToLocal(el, touch, e, calculate);\n } // Add which for click: 1 === left; 2 === middle; 3 === right; otherwise: 0;\n // See jQuery: https://github.com/jquery/jquery/blob/master/src/event.js\n // If e.which has been defined, it may be readonly,\n // see: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/which\n\n\n var button = e.button;\n\n if (e.which == null && button !== undefined && MOUSE_EVENT_REG.test(e.type)) {\n e.which = button & 1 ? 1 : button & 2 ? 3 : button & 4 ? 2 : 0;\n } // [Caution]: `e.which` from browser is not always reliable. For example,\n // when press left button and `mousemove (pointermove)` in Edge, the `e.which`\n // is 65536 and the `e.button` is -1. But the `mouseup (pointerup)` and\n // `mousedown (pointerdown)` is the same as Chrome does.\n\n\n return e;\n}\n/**\n * @param {HTMLElement} el\n * @param {string} name\n * @param {Function} handler\n * @param {Object|boolean} opt If boolean, means `opt.capture`\n * @param {boolean} [opt.capture=false]\n * @param {boolean} [opt.passive=false]\n */\n\n\nfunction addEventListener(el, name, handler, opt) {\n if (isDomLevel2) {\n // Reproduct the console warning:\n // [Violation] Added non-passive event listener to a scroll-blocking event.\n // Consider marking event handler as 'passive' to make the page more responsive.\n // Just set console log level: verbose in chrome dev tool.\n // then the warning log will be printed when addEventListener called.\n // See https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n // We have not yet found a neat way to using passive. Because in zrender the dom event\n // listener delegate all of the upper events of element. Some of those events need\n // to prevent default. For example, the feature `preventDefaultMouseMove` of echarts.\n // Before passive can be adopted, these issues should be considered:\n // (1) Whether and how a zrender user specifies an event listener passive. And by default,\n // passive or not.\n // (2) How to tread that some zrender event listener is passive, and some is not. If\n // we use other way but not preventDefault of mousewheel and touchmove, browser\n // compatibility should be handled.\n // var opts = (env.passiveSupported && name === 'mousewheel')\n // ? {passive: true}\n // // By default, the third param of el.addEventListener is `capture: false`.\n // : void 0;\n // el.addEventListener(name, handler /* , opts */);\n el.addEventListener(name, handler, opt);\n } else {\n // For simplicity, do not implement `setCapture` for IE9-.\n el.attachEvent('on' + name, handler);\n }\n}\n/**\n * Parameter are the same as `addEventListener`.\n *\n * Notice that if a listener is registered twice, one with capture and one without,\n * remove each one separately. Removal of a capturing listener does not affect a\n * non-capturing version of the same listener, and vice versa.\n */\n\n\nfunction removeEventListener(el, name, handler, opt) {\n if (isDomLevel2) {\n el.removeEventListener(name, handler, opt);\n } else {\n el.detachEvent('on' + name, handler);\n }\n}\n/**\n * preventDefault and stopPropagation.\n * Notice: do not use this method in zrender. It can only be\n * used by upper applications if necessary.\n *\n * @param {Event} e A mouse or touch event.\n */\n\n\nvar stop = isDomLevel2 ? function (e) {\n e.preventDefault();\n e.stopPropagation();\n e.cancelBubble = true;\n} : function (e) {\n e.returnValue = false;\n e.cancelBubble = true;\n};\n/**\n * This method only works for mouseup and mousedown. The functionality is restricted\n * for fault tolerance, See the `e.which` compatibility above.\n *\n * @param {MouseEvent} e\n * @return {boolean}\n */\n\nfunction isMiddleOrRightButtonOnMouseUpDown(e) {\n return e.which === 2 || e.which === 3;\n}\n/**\n * To be removed.\n * @deprecated\n */\n\n\nfunction notLeftMouse(e) {\n // If e.which is undefined, considered as left mouse event.\n return e.which > 1;\n} // For backward compatibility\n\n\nexports.clientToLocal = clientToLocal;\nexports.getNativeEvent = getNativeEvent;\nexports.normalizeEvent = normalizeEvent;\nexports.addEventListener = addEventListener;\nexports.removeEventListener = removeEventListener;\nexports.stop = stop;\nexports.isMiddleOrRightButtonOnMouseUpDown = isMiddleOrRightButtonOnMouseUpDown;\nexports.notLeftMouse = notLeftMouse;","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Model = require(\"../model/Model\");\n\nvar DataDiffer = require(\"./DataDiffer\");\n\nvar Source = require(\"./Source\");\n\nvar _dataProvider = require(\"./helper/dataProvider\");\n\nvar defaultDimValueGetters = _dataProvider.defaultDimValueGetters;\nvar DefaultDataProvider = _dataProvider.DefaultDataProvider;\n\nvar _dimensionHelper = require(\"./helper/dimensionHelper\");\n\nvar summarizeDimensions = _dimensionHelper.summarizeDimensions;\n\nvar DataDimensionInfo = require(\"./DataDimensionInfo\");\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/* global Float64Array, Int32Array, Uint32Array, Uint16Array */\n\n/**\n * List for data storage\n * @module echarts/data/List\n */\nvar isObject = zrUtil.isObject;\nvar UNDEFINED = 'undefined';\nvar INDEX_NOT_FOUND = -1; // Use prefix to avoid index to be the same as otherIdList[idx],\n// which will cause weird udpate animation.\n\nvar ID_PREFIX = 'e\\0\\0';\nvar dataCtors = {\n 'float': typeof Float64Array === UNDEFINED ? Array : Float64Array,\n 'int': typeof Int32Array === UNDEFINED ? Array : Int32Array,\n // Ordinal data type can be string or int\n 'ordinal': Array,\n 'number': Array,\n 'time': Array\n}; // Caution: MUST not use `new CtorUint32Array(arr, 0, len)`, because the Ctor of array is\n// different from the Ctor of typed array.\n\nvar CtorUint32Array = typeof Uint32Array === UNDEFINED ? Array : Uint32Array;\nvar CtorInt32Array = typeof Int32Array === UNDEFINED ? Array : Int32Array;\nvar CtorUint16Array = typeof Uint16Array === UNDEFINED ? Array : Uint16Array;\n\nfunction getIndicesCtor(list) {\n // The possible max value in this._indicies is always this._rawCount despite of filtering.\n return list._rawCount > 65535 ? CtorUint32Array : CtorUint16Array;\n}\n\nfunction cloneChunk(originalChunk) {\n var Ctor = originalChunk.constructor; // Only shallow clone is enough when Array.\n\n return Ctor === Array ? originalChunk.slice() : new Ctor(originalChunk);\n}\n\nvar TRANSFERABLE_PROPERTIES = ['hasItemOption', '_nameList', '_idList', '_invertedIndicesMap', '_rawData', '_chunkSize', '_chunkCount', '_dimValueGetter', '_count', '_rawCount', '_nameDimIdx', '_idDimIdx'];\nvar CLONE_PROPERTIES = ['_extent', '_approximateExtent', '_rawExtent'];\n\nfunction transferProperties(target, source) {\n zrUtil.each(TRANSFERABLE_PROPERTIES.concat(source.__wrappedMethods || []), function (propName) {\n if (source.hasOwnProperty(propName)) {\n target[propName] = source[propName];\n }\n });\n target.__wrappedMethods = source.__wrappedMethods;\n zrUtil.each(CLONE_PROPERTIES, function (propName) {\n target[propName] = zrUtil.clone(source[propName]);\n });\n target._calculationInfo = zrUtil.extend(source._calculationInfo);\n}\n/**\n * @constructor\n * @alias module:echarts/data/List\n *\n * @param {Array.} dimensions\n * For example, ['someDimName', {name: 'someDimName', type: 'someDimType'}, ...].\n * Dimensions should be concrete names like x, y, z, lng, lat, angle, radius\n * @param {module:echarts/model/Model} hostModel\n */\n\n\nvar List = function (dimensions, hostModel) {\n dimensions = dimensions || ['x', 'y'];\n var dimensionInfos = {};\n var dimensionNames = [];\n var invertedIndicesMap = {};\n\n for (var i = 0; i < dimensions.length; i++) {\n // Use the original dimensions[i], where other flag props may exists.\n var dimensionInfo = dimensions[i];\n\n if (zrUtil.isString(dimensionInfo)) {\n dimensionInfo = new DataDimensionInfo({\n name: dimensionInfo\n });\n } else if (!(dimensionInfo instanceof DataDimensionInfo)) {\n dimensionInfo = new DataDimensionInfo(dimensionInfo);\n }\n\n var dimensionName = dimensionInfo.name;\n dimensionInfo.type = dimensionInfo.type || 'float';\n\n if (!dimensionInfo.coordDim) {\n dimensionInfo.coordDim = dimensionName;\n dimensionInfo.coordDimIndex = 0;\n }\n\n dimensionInfo.otherDims = dimensionInfo.otherDims || {};\n dimensionNames.push(dimensionName);\n dimensionInfos[dimensionName] = dimensionInfo;\n dimensionInfo.index = i;\n\n if (dimensionInfo.createInvertedIndices) {\n invertedIndicesMap[dimensionName] = [];\n }\n }\n /**\n * @readOnly\n * @type {Array.}\n */\n\n\n this.dimensions = dimensionNames;\n /**\n * Infomation of each data dimension, like data type.\n * @type {Object}\n */\n\n this._dimensionInfos = dimensionInfos;\n /**\n * @type {module:echarts/model/Model}\n */\n\n this.hostModel = hostModel;\n /**\n * @type {module:echarts/model/Model}\n */\n\n this.dataType;\n /**\n * Indices stores the indices of data subset after filtered.\n * This data subset will be used in chart.\n * @type {Array.}\n * @readOnly\n */\n\n this._indices = null;\n this._count = 0;\n this._rawCount = 0;\n /**\n * Data storage\n * @type {Object.>}\n * @private\n */\n\n this._storage = {};\n /**\n * @type {Array.}\n */\n\n this._nameList = [];\n /**\n * @type {Array.}\n */\n\n this._idList = [];\n /**\n * Models of data option is stored sparse for optimizing memory cost\n * @type {Array.}\n * @private\n */\n\n this._optionModels = [];\n /**\n * Global visual properties after visual coding\n * @type {Object}\n * @private\n */\n\n this._visual = {};\n /**\n * Globel layout properties.\n * @type {Object}\n * @private\n */\n\n this._layout = {};\n /**\n * Item visual properties after visual coding\n * @type {Array.}\n * @private\n */\n\n this._itemVisuals = [];\n /**\n * Key: visual type, Value: boolean\n * @type {Object}\n * @readOnly\n */\n\n this.hasItemVisual = {};\n /**\n * Item layout properties after layout\n * @type {Array.}\n * @private\n */\n\n this._itemLayouts = [];\n /**\n * Graphic elemnents\n * @type {Array.}\n * @private\n */\n\n this._graphicEls = [];\n /**\n * Max size of each chunk.\n * @type {number}\n * @private\n */\n\n this._chunkSize = 1e5;\n /**\n * @type {number}\n * @private\n */\n\n this._chunkCount = 0;\n /**\n * @type {Array.}\n * @private\n */\n\n this._rawData;\n /**\n * Raw extent will not be cloned, but only transfered.\n * It will not be calculated util needed.\n * key: dim,\n * value: {end: number, extent: Array.}\n * @type {Object}\n * @private\n */\n\n this._rawExtent = {};\n /**\n * @type {Object}\n * @private\n */\n\n this._extent = {};\n /**\n * key: dim\n * value: extent\n * @type {Object}\n * @private\n */\n\n this._approximateExtent = {};\n /**\n * Cache summary info for fast visit. See \"dimensionHelper\".\n * @type {Object}\n * @private\n */\n\n this._dimensionsSummary = summarizeDimensions(this);\n /**\n * @type {Object.}\n * @private\n */\n\n this._invertedIndicesMap = invertedIndicesMap;\n /**\n * @type {Object}\n * @private\n */\n\n this._calculationInfo = {};\n /**\n * User output info of this data.\n * DO NOT use it in other places!\n *\n * When preparing user params for user callbacks, we have\n * to clone these inner data structures to prevent users\n * from modifying them to effect built-in logic. And for\n * performance consideration we make this `userOutput` to\n * avoid clone them too many times.\n *\n * @type {Object}\n * @readOnly\n */\n\n this.userOutput = this._dimensionsSummary.userOutput;\n};\n\nvar listProto = List.prototype;\nlistProto.type = 'list';\n/**\n * If each data item has it's own option\n * @type {boolean}\n */\n\nlistProto.hasItemOption = true;\n/**\n * The meanings of the input parameter `dim`:\n *\n * + If dim is a number (e.g., `1`), it means the index of the dimension.\n * For example, `getDimension(0)` will return 'x' or 'lng' or 'radius'.\n * + If dim is a number-like string (e.g., `\"1\"`):\n * + If there is the same concrete dim name defined in `this.dimensions`, it means that concrete name.\n * + If not, it will be converted to a number, which means the index of the dimension.\n * (why? because of the backward compatbility. We have been tolerating number-like string in\n * dimension setting, although now it seems that it is not a good idea.)\n * For example, `visualMap[i].dimension: \"1\"` is the same meaning as `visualMap[i].dimension: 1`,\n * if no dimension name is defined as `\"1\"`.\n * + If dim is a not-number-like string, it means the concrete dim name.\n * For example, it can be be default name `\"x\"`, `\"y\"`, `\"z\"`, `\"lng\"`, `\"lat\"`, `\"angle\"`, `\"radius\"`,\n * or customized in `dimensions` property of option like `\"age\"`.\n *\n * Get dimension name\n * @param {string|number} dim See above.\n * @return {string} Concrete dim name.\n */\n\nlistProto.getDimension = function (dim) {\n if (typeof dim === 'number' // If being a number-like string but not being defined a dimension name.\n || !isNaN(dim) && !this._dimensionInfos.hasOwnProperty(dim)) {\n dim = this.dimensions[dim];\n }\n\n return dim;\n};\n/**\n * Get type and calculation info of particular dimension\n * @param {string|number} dim\n * Dimension can be concrete names like x, y, z, lng, lat, angle, radius\n * Or a ordinal number. For example getDimensionInfo(0) will return 'x' or 'lng' or 'radius'\n */\n\n\nlistProto.getDimensionInfo = function (dim) {\n // Do not clone, because there may be categories in dimInfo.\n return this._dimensionInfos[this.getDimension(dim)];\n};\n/**\n * @return {Array.} concrete dimension name list on coord.\n */\n\n\nlistProto.getDimensionsOnCoord = function () {\n return this._dimensionsSummary.dataDimsOnCoord.slice();\n};\n/**\n * @param {string} coordDim\n * @param {number} [idx] A coordDim may map to more than one data dim.\n * If idx is `true`, return a array of all mapped dims.\n * If idx is not specified, return the first dim not extra.\n * @return {string|Array.} concrete data dim.\n * If idx is number, and not found, return null/undefined.\n * If idx is `true`, and not found, return empty array (always return array).\n */\n\n\nlistProto.mapDimension = function (coordDim, idx) {\n var dimensionsSummary = this._dimensionsSummary;\n\n if (idx == null) {\n return dimensionsSummary.encodeFirstDimNotExtra[coordDim];\n }\n\n var dims = dimensionsSummary.encode[coordDim];\n return idx === true // always return array if idx is `true`\n ? (dims || []).slice() : dims && dims[idx];\n};\n/**\n * Initialize from data\n * @param {Array.} data source or data or data provider.\n * @param {Array.} [nameLIst] The name of a datum is used on data diff and\n * defualt label/tooltip.\n * A name can be specified in encode.itemName,\n * or dataItem.name (only for series option data),\n * or provided in nameList from outside.\n * @param {Function} [dimValueGetter] (dataItem, dimName, dataIndex, dimIndex) => number\n */\n\n\nlistProto.initData = function (data, nameList, dimValueGetter) {\n var notProvider = Source.isInstance(data) || zrUtil.isArrayLike(data);\n\n if (notProvider) {\n data = new DefaultDataProvider(data, this.dimensions.length);\n }\n\n this._rawData = data; // Clear\n\n this._storage = {};\n this._indices = null;\n this._nameList = nameList || [];\n this._idList = [];\n this._nameRepeatCount = {};\n\n if (!dimValueGetter) {\n this.hasItemOption = false;\n }\n /**\n * @readOnly\n */\n\n\n this.defaultDimValueGetter = defaultDimValueGetters[this._rawData.getSource().sourceFormat]; // Default dim value getter\n\n this._dimValueGetter = dimValueGetter = dimValueGetter || this.defaultDimValueGetter;\n this._dimValueGetterArrayRows = defaultDimValueGetters.arrayRows; // Reset raw extent.\n\n this._rawExtent = {};\n\n this._initDataFromProvider(0, data.count()); // If data has no item option.\n\n\n if (data.pure) {\n this.hasItemOption = false;\n }\n};\n\nlistProto.getProvider = function () {\n return this._rawData;\n};\n/**\n * Caution: Can be only called on raw data (before `this._indices` created).\n */\n\n\nlistProto.appendData = function (data) {\n var rawData = this._rawData;\n var start = this.count();\n rawData.appendData(data);\n var end = rawData.count();\n\n if (!rawData.persistent) {\n end += start;\n }\n\n this._initDataFromProvider(start, end);\n};\n/**\n * Caution: Can be only called on raw data (before `this._indices` created).\n * This method does not modify `rawData` (`dataProvider`), but only\n * add values to storage.\n *\n * The final count will be increased by `Math.max(values.length, names.length)`.\n *\n * @param {Array.>} values That is the SourceType: 'arrayRows', like\n * [\n * [12, 33, 44],\n * [NaN, 43, 1],\n * ['-', 'asdf', 0]\n * ]\n * Each item is exaclty cooresponding to a dimension.\n * @param {Array.} [names]\n */\n\n\nlistProto.appendValues = function (values, names) {\n var chunkSize = this._chunkSize;\n var storage = this._storage;\n var dimensions = this.dimensions;\n var dimLen = dimensions.length;\n var rawExtent = this._rawExtent;\n var start = this.count();\n var end = start + Math.max(values.length, names ? names.length : 0);\n var originalChunkCount = this._chunkCount;\n\n for (var i = 0; i < dimLen; i++) {\n var dim = dimensions[i];\n\n if (!rawExtent[dim]) {\n rawExtent[dim] = getInitialExtent();\n }\n\n if (!storage[dim]) {\n storage[dim] = [];\n }\n\n prepareChunks(storage, this._dimensionInfos[dim], chunkSize, originalChunkCount, end);\n this._chunkCount = storage[dim].length;\n }\n\n var emptyDataItem = new Array(dimLen);\n\n for (var idx = start; idx < end; idx++) {\n var sourceIdx = idx - start;\n var chunkIndex = Math.floor(idx / chunkSize);\n var chunkOffset = idx % chunkSize; // Store the data by dimensions\n\n for (var k = 0; k < dimLen; k++) {\n var dim = dimensions[k];\n\n var val = this._dimValueGetterArrayRows(values[sourceIdx] || emptyDataItem, dim, sourceIdx, k);\n\n storage[dim][chunkIndex][chunkOffset] = val;\n var dimRawExtent = rawExtent[dim];\n val < dimRawExtent[0] && (dimRawExtent[0] = val);\n val > dimRawExtent[1] && (dimRawExtent[1] = val);\n }\n\n if (names) {\n this._nameList[idx] = names[sourceIdx];\n }\n }\n\n this._rawCount = this._count = end; // Reset data extent\n\n this._extent = {};\n prepareInvertedIndex(this);\n};\n\nlistProto._initDataFromProvider = function (start, end) {\n // Optimize.\n if (start >= end) {\n return;\n }\n\n var chunkSize = this._chunkSize;\n var rawData = this._rawData;\n var storage = this._storage;\n var dimensions = this.dimensions;\n var dimLen = dimensions.length;\n var dimensionInfoMap = this._dimensionInfos;\n var nameList = this._nameList;\n var idList = this._idList;\n var rawExtent = this._rawExtent;\n var nameRepeatCount = this._nameRepeatCount = {};\n var nameDimIdx;\n var originalChunkCount = this._chunkCount;\n\n for (var i = 0; i < dimLen; i++) {\n var dim = dimensions[i];\n\n if (!rawExtent[dim]) {\n rawExtent[dim] = getInitialExtent();\n }\n\n var dimInfo = dimensionInfoMap[dim];\n\n if (dimInfo.otherDims.itemName === 0) {\n nameDimIdx = this._nameDimIdx = i;\n }\n\n if (dimInfo.otherDims.itemId === 0) {\n this._idDimIdx = i;\n }\n\n if (!storage[dim]) {\n storage[dim] = [];\n }\n\n prepareChunks(storage, dimInfo, chunkSize, originalChunkCount, end);\n this._chunkCount = storage[dim].length;\n }\n\n var dataItem = new Array(dimLen);\n\n for (var idx = start; idx < end; idx++) {\n // NOTICE: Try not to write things into dataItem\n dataItem = rawData.getItem(idx, dataItem); // Each data item is value\n // [1, 2]\n // 2\n // Bar chart, line chart which uses category axis\n // only gives the 'y' value. 'x' value is the indices of category\n // Use a tempValue to normalize the value to be a (x, y) value\n\n var chunkIndex = Math.floor(idx / chunkSize);\n var chunkOffset = idx % chunkSize; // Store the data by dimensions\n\n for (var k = 0; k < dimLen; k++) {\n var dim = dimensions[k];\n var dimStorage = storage[dim][chunkIndex]; // PENDING NULL is empty or zero\n\n var val = this._dimValueGetter(dataItem, dim, idx, k);\n\n dimStorage[chunkOffset] = val;\n var dimRawExtent = rawExtent[dim];\n val < dimRawExtent[0] && (dimRawExtent[0] = val);\n val > dimRawExtent[1] && (dimRawExtent[1] = val);\n } // ??? FIXME not check by pure but sourceFormat?\n // TODO refactor these logic.\n\n\n if (!rawData.pure) {\n var name = nameList[idx];\n\n if (dataItem && name == null) {\n // If dataItem is {name: ...}, it has highest priority.\n // That is appropriate for many common cases.\n if (dataItem.name != null) {\n // There is no other place to persistent dataItem.name,\n // so save it to nameList.\n nameList[idx] = name = dataItem.name;\n } else if (nameDimIdx != null) {\n var nameDim = dimensions[nameDimIdx];\n var nameDimChunk = storage[nameDim][chunkIndex];\n\n if (nameDimChunk) {\n name = nameDimChunk[chunkOffset];\n var ordinalMeta = dimensionInfoMap[nameDim].ordinalMeta;\n\n if (ordinalMeta && ordinalMeta.categories.length) {\n name = ordinalMeta.categories[name];\n }\n }\n }\n } // Try using the id in option\n // id or name is used on dynamical data, mapping old and new items.\n\n\n var id = dataItem == null ? null : dataItem.id;\n\n if (id == null && name != null) {\n // Use name as id and add counter to avoid same name\n nameRepeatCount[name] = nameRepeatCount[name] || 0;\n id = name;\n\n if (nameRepeatCount[name] > 0) {\n id += '__ec__' + nameRepeatCount[name];\n }\n\n nameRepeatCount[name]++;\n }\n\n id != null && (idList[idx] = id);\n }\n }\n\n if (!rawData.persistent && rawData.clean) {\n // Clean unused data if data source is typed array.\n rawData.clean();\n }\n\n this._rawCount = this._count = end; // Reset data extent\n\n this._extent = {};\n prepareInvertedIndex(this);\n};\n\nfunction prepareChunks(storage, dimInfo, chunkSize, chunkCount, end) {\n var DataCtor = dataCtors[dimInfo.type];\n var lastChunkIndex = chunkCount - 1;\n var dim = dimInfo.name;\n var resizeChunkArray = storage[dim][lastChunkIndex];\n\n if (resizeChunkArray && resizeChunkArray.length < chunkSize) {\n var newStore = new DataCtor(Math.min(end - lastChunkIndex * chunkSize, chunkSize)); // The cost of the copy is probably inconsiderable\n // within the initial chunkSize.\n\n for (var j = 0; j < resizeChunkArray.length; j++) {\n newStore[j] = resizeChunkArray[j];\n }\n\n storage[dim][lastChunkIndex] = newStore;\n } // Create new chunks.\n\n\n for (var k = chunkCount * chunkSize; k < end; k += chunkSize) {\n storage[dim].push(new DataCtor(Math.min(end - k, chunkSize)));\n }\n}\n\nfunction prepareInvertedIndex(list) {\n var invertedIndicesMap = list._invertedIndicesMap;\n zrUtil.each(invertedIndicesMap, function (invertedIndices, dim) {\n var dimInfo = list._dimensionInfos[dim]; // Currently, only dimensions that has ordinalMeta can create inverted indices.\n\n var ordinalMeta = dimInfo.ordinalMeta;\n\n if (ordinalMeta) {\n invertedIndices = invertedIndicesMap[dim] = new CtorInt32Array(ordinalMeta.categories.length); // The default value of TypedArray is 0. To avoid miss\n // mapping to 0, we should set it as INDEX_NOT_FOUND.\n\n for (var i = 0; i < invertedIndices.length; i++) {\n invertedIndices[i] = INDEX_NOT_FOUND;\n }\n\n for (var i = 0; i < list._count; i++) {\n // Only support the case that all values are distinct.\n invertedIndices[list.get(dim, i)] = i;\n }\n }\n });\n}\n\nfunction getRawValueFromStore(list, dimIndex, rawIndex) {\n var val;\n\n if (dimIndex != null) {\n var chunkSize = list._chunkSize;\n var chunkIndex = Math.floor(rawIndex / chunkSize);\n var chunkOffset = rawIndex % chunkSize;\n var dim = list.dimensions[dimIndex];\n var chunk = list._storage[dim][chunkIndex];\n\n if (chunk) {\n val = chunk[chunkOffset];\n var ordinalMeta = list._dimensionInfos[dim].ordinalMeta;\n\n if (ordinalMeta && ordinalMeta.categories.length) {\n val = ordinalMeta.categories[val];\n }\n }\n }\n\n return val;\n}\n/**\n * @return {number}\n */\n\n\nlistProto.count = function () {\n return this._count;\n};\n\nlistProto.getIndices = function () {\n var newIndices;\n var indices = this._indices;\n\n if (indices) {\n var Ctor = indices.constructor;\n var thisCount = this._count; // `new Array(a, b, c)` is different from `new Uint32Array(a, b, c)`.\n\n if (Ctor === Array) {\n newIndices = new Ctor(thisCount);\n\n for (var i = 0; i < thisCount; i++) {\n newIndices[i] = indices[i];\n }\n } else {\n newIndices = new Ctor(indices.buffer, 0, thisCount);\n }\n } else {\n var Ctor = getIndicesCtor(this);\n var newIndices = new Ctor(this.count());\n\n for (var i = 0; i < newIndices.length; i++) {\n newIndices[i] = i;\n }\n }\n\n return newIndices;\n};\n/**\n * Get value. Return NaN if idx is out of range.\n * @param {string} dim Dim must be concrete name.\n * @param {number} idx\n * @param {boolean} stack\n * @return {number}\n */\n\n\nlistProto.get = function (dim, idx\n/*, stack */\n) {\n if (!(idx >= 0 && idx < this._count)) {\n return NaN;\n }\n\n var storage = this._storage;\n\n if (!storage[dim]) {\n // TODO Warn ?\n return NaN;\n }\n\n idx = this.getRawIndex(idx);\n var chunkIndex = Math.floor(idx / this._chunkSize);\n var chunkOffset = idx % this._chunkSize;\n var chunkStore = storage[dim][chunkIndex];\n var value = chunkStore[chunkOffset]; // FIXME ordinal data type is not stackable\n // if (stack) {\n // var dimensionInfo = this._dimensionInfos[dim];\n // if (dimensionInfo && dimensionInfo.stackable) {\n // var stackedOn = this.stackedOn;\n // while (stackedOn) {\n // // Get no stacked data of stacked on\n // var stackedValue = stackedOn.get(dim, idx);\n // // Considering positive stack, negative stack and empty data\n // if ((value >= 0 && stackedValue > 0) // Positive stack\n // || (value <= 0 && stackedValue < 0) // Negative stack\n // ) {\n // value += stackedValue;\n // }\n // stackedOn = stackedOn.stackedOn;\n // }\n // }\n // }\n\n return value;\n};\n/**\n * @param {string} dim concrete dim\n * @param {number} rawIndex\n * @return {number|string}\n */\n\n\nlistProto.getByRawIndex = function (dim, rawIdx) {\n if (!(rawIdx >= 0 && rawIdx < this._rawCount)) {\n return NaN;\n }\n\n var dimStore = this._storage[dim];\n\n if (!dimStore) {\n // TODO Warn ?\n return NaN;\n }\n\n var chunkIndex = Math.floor(rawIdx / this._chunkSize);\n var chunkOffset = rawIdx % this._chunkSize;\n var chunkStore = dimStore[chunkIndex];\n return chunkStore[chunkOffset];\n};\n/**\n * FIXME Use `get` on chrome maybe slow(in filterSelf and selectRange).\n * Hack a much simpler _getFast\n * @private\n */\n\n\nlistProto._getFast = function (dim, rawIdx) {\n var chunkIndex = Math.floor(rawIdx / this._chunkSize);\n var chunkOffset = rawIdx % this._chunkSize;\n var chunkStore = this._storage[dim][chunkIndex];\n return chunkStore[chunkOffset];\n};\n/**\n * Get value for multi dimensions.\n * @param {Array.} [dimensions] If ignored, using all dimensions.\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getValues = function (dimensions, idx\n/*, stack */\n) {\n var values = [];\n\n if (!zrUtil.isArray(dimensions)) {\n // stack = idx;\n idx = dimensions;\n dimensions = this.dimensions;\n }\n\n for (var i = 0, len = dimensions.length; i < len; i++) {\n values.push(this.get(dimensions[i], idx\n /*, stack */\n ));\n }\n\n return values;\n};\n/**\n * If value is NaN. Inlcuding '-'\n * Only check the coord dimensions.\n * @param {string} dim\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.hasValue = function (idx) {\n var dataDimsOnCoord = this._dimensionsSummary.dataDimsOnCoord;\n\n for (var i = 0, len = dataDimsOnCoord.length; i < len; i++) {\n // Ordinal type originally can be string or number.\n // But when an ordinal type is used on coord, it can\n // not be string but only number. So we can also use isNaN.\n if (isNaN(this.get(dataDimsOnCoord[i], idx))) {\n return false;\n }\n }\n\n return true;\n};\n/**\n * Get extent of data in one dimension\n * @param {string} dim\n * @param {boolean} stack\n */\n\n\nlistProto.getDataExtent = function (dim\n/*, stack */\n) {\n // Make sure use concrete dim as cache name.\n dim = this.getDimension(dim);\n var dimData = this._storage[dim];\n var initialExtent = getInitialExtent(); // stack = !!((stack || false) && this.getCalculationInfo(dim));\n\n if (!dimData) {\n return initialExtent;\n } // Make more strict checkings to ensure hitting cache.\n\n\n var currEnd = this.count(); // var cacheName = [dim, !!stack].join('_');\n // var cacheName = dim;\n // Consider the most cases when using data zoom, `getDataExtent`\n // happened before filtering. We cache raw extent, which is not\n // necessary to be cleared and recalculated when restore data.\n\n var useRaw = !this._indices; // && !stack;\n\n var dimExtent;\n\n if (useRaw) {\n return this._rawExtent[dim].slice();\n }\n\n dimExtent = this._extent[dim];\n\n if (dimExtent) {\n return dimExtent.slice();\n }\n\n dimExtent = initialExtent;\n var min = dimExtent[0];\n var max = dimExtent[1];\n\n for (var i = 0; i < currEnd; i++) {\n // var value = stack ? this.get(dim, i, true) : this._getFast(dim, this.getRawIndex(i));\n var value = this._getFast(dim, this.getRawIndex(i));\n\n value < min && (min = value);\n value > max && (max = value);\n }\n\n dimExtent = [min, max];\n this._extent[dim] = dimExtent;\n return dimExtent;\n};\n/**\n * Optimize for the scenario that data is filtered by a given extent.\n * Consider that if data amount is more than hundreds of thousand,\n * extent calculation will cost more than 10ms and the cache will\n * be erased because of the filtering.\n */\n\n\nlistProto.getApproximateExtent = function (dim\n/*, stack */\n) {\n dim = this.getDimension(dim);\n return this._approximateExtent[dim] || this.getDataExtent(dim\n /*, stack */\n );\n};\n\nlistProto.setApproximateExtent = function (extent, dim\n/*, stack */\n) {\n dim = this.getDimension(dim);\n this._approximateExtent[dim] = extent.slice();\n};\n/**\n * @param {string} key\n * @return {*}\n */\n\n\nlistProto.getCalculationInfo = function (key) {\n return this._calculationInfo[key];\n};\n/**\n * @param {string|Object} key or k-v object\n * @param {*} [value]\n */\n\n\nlistProto.setCalculationInfo = function (key, value) {\n isObject(key) ? zrUtil.extend(this._calculationInfo, key) : this._calculationInfo[key] = value;\n};\n/**\n * Get sum of data in one dimension\n * @param {string} dim\n */\n\n\nlistProto.getSum = function (dim\n/*, stack */\n) {\n var dimData = this._storage[dim];\n var sum = 0;\n\n if (dimData) {\n for (var i = 0, len = this.count(); i < len; i++) {\n var value = this.get(dim, i\n /*, stack */\n );\n\n if (!isNaN(value)) {\n sum += value;\n }\n }\n }\n\n return sum;\n};\n/**\n * Get median of data in one dimension\n * @param {string} dim\n */\n\n\nlistProto.getMedian = function (dim\n/*, stack */\n) {\n var dimDataArray = []; // map all data of one dimension\n\n this.each(dim, function (val, idx) {\n if (!isNaN(val)) {\n dimDataArray.push(val);\n }\n }); // TODO\n // Use quick select?\n // immutability & sort\n\n var sortedDimDataArray = [].concat(dimDataArray).sort(function (a, b) {\n return a - b;\n });\n var len = this.count(); // calculate median\n\n return len === 0 ? 0 : len % 2 === 1 ? sortedDimDataArray[(len - 1) / 2] : (sortedDimDataArray[len / 2] + sortedDimDataArray[len / 2 - 1]) / 2;\n}; // /**\n// * Retreive the index with given value\n// * @param {string} dim Concrete dimension.\n// * @param {number} value\n// * @return {number}\n// */\n// Currently incorrect: should return dataIndex but not rawIndex.\n// Do not fix it until this method is to be used somewhere.\n// FIXME Precision of float value\n// listProto.indexOf = function (dim, value) {\n// var storage = this._storage;\n// var dimData = storage[dim];\n// var chunkSize = this._chunkSize;\n// if (dimData) {\n// for (var i = 0, len = this.count(); i < len; i++) {\n// var chunkIndex = Math.floor(i / chunkSize);\n// var chunkOffset = i % chunkSize;\n// if (dimData[chunkIndex][chunkOffset] === value) {\n// return i;\n// }\n// }\n// }\n// return -1;\n// };\n\n/**\n * Only support the dimension which inverted index created.\n * Do not support other cases until required.\n * @param {string} concrete dim\n * @param {number|string} value\n * @return {number} rawIndex\n */\n\n\nlistProto.rawIndexOf = function (dim, value) {\n var invertedIndices = dim && this._invertedIndicesMap[dim];\n var rawIndex = invertedIndices[value];\n\n if (rawIndex == null || isNaN(rawIndex)) {\n return INDEX_NOT_FOUND;\n }\n\n return rawIndex;\n};\n/**\n * Retreive the index with given name\n * @param {number} idx\n * @param {number} name\n * @return {number}\n */\n\n\nlistProto.indexOfName = function (name) {\n for (var i = 0, len = this.count(); i < len; i++) {\n if (this.getName(i) === name) {\n return i;\n }\n }\n\n return -1;\n};\n/**\n * Retreive the index with given raw data index\n * @param {number} idx\n * @param {number} name\n * @return {number}\n */\n\n\nlistProto.indexOfRawIndex = function (rawIndex) {\n if (rawIndex >= this._rawCount || rawIndex < 0) {\n return -1;\n }\n\n if (!this._indices) {\n return rawIndex;\n } // Indices are ascending\n\n\n var indices = this._indices; // If rawIndex === dataIndex\n\n var rawDataIndex = indices[rawIndex];\n\n if (rawDataIndex != null && rawDataIndex < this._count && rawDataIndex === rawIndex) {\n return rawIndex;\n }\n\n var left = 0;\n var right = this._count - 1;\n\n while (left <= right) {\n var mid = (left + right) / 2 | 0;\n\n if (indices[mid] < rawIndex) {\n left = mid + 1;\n } else if (indices[mid] > rawIndex) {\n right = mid - 1;\n } else {\n return mid;\n }\n }\n\n return -1;\n};\n/**\n * Retreive the index of nearest value\n * @param {string} dim\n * @param {number} value\n * @param {number} [maxDistance=Infinity]\n * @return {Array.} If and only if multiple indices has\n * the same value, they are put to the result.\n */\n\n\nlistProto.indicesOfNearest = function (dim, value, maxDistance) {\n var storage = this._storage;\n var dimData = storage[dim];\n var nearestIndices = [];\n\n if (!dimData) {\n return nearestIndices;\n }\n\n if (maxDistance == null) {\n maxDistance = Infinity;\n }\n\n var minDist = Infinity;\n var minDiff = -1;\n var nearestIndicesLen = 0; // Check the test case of `test/ut/spec/data/List.js`.\n\n for (var i = 0, len = this.count(); i < len; i++) {\n var diff = value - this.get(dim, i);\n var dist = Math.abs(diff);\n\n if (dist <= maxDistance) {\n // When the `value` is at the middle of `this.get(dim, i)` and `this.get(dim, i+1)`,\n // we'd better not push both of them to `nearestIndices`, otherwise it is easy to\n // get more than one item in `nearestIndices` (more specifically, in `tooltip`).\n // So we chose the one that `diff >= 0` in this csae.\n // But if `this.get(dim, i)` and `this.get(dim, j)` get the same value, both of them\n // should be push to `nearestIndices`.\n if (dist < minDist || dist === minDist && diff >= 0 && minDiff < 0) {\n minDist = dist;\n minDiff = diff;\n nearestIndicesLen = 0;\n }\n\n if (diff === minDiff) {\n nearestIndices[nearestIndicesLen++] = i;\n }\n }\n }\n\n nearestIndices.length = nearestIndicesLen;\n return nearestIndices;\n};\n/**\n * Get raw data index\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getRawIndex = getRawIndexWithoutIndices;\n\nfunction getRawIndexWithoutIndices(idx) {\n return idx;\n}\n\nfunction getRawIndexWithIndices(idx) {\n if (idx < this._count && idx >= 0) {\n return this._indices[idx];\n }\n\n return -1;\n}\n/**\n * Get raw data item\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getRawDataItem = function (idx) {\n if (!this._rawData.persistent) {\n var val = [];\n\n for (var i = 0; i < this.dimensions.length; i++) {\n var dim = this.dimensions[i];\n val.push(this.get(dim, idx));\n }\n\n return val;\n } else {\n return this._rawData.getItem(this.getRawIndex(idx));\n }\n};\n/**\n * @param {number} idx\n * @param {boolean} [notDefaultIdx=false]\n * @return {string}\n */\n\n\nlistProto.getName = function (idx) {\n var rawIndex = this.getRawIndex(idx);\n return this._nameList[rawIndex] || getRawValueFromStore(this, this._nameDimIdx, rawIndex) || '';\n};\n/**\n * @param {number} idx\n * @param {boolean} [notDefaultIdx=false]\n * @return {string}\n */\n\n\nlistProto.getId = function (idx) {\n return getId(this, this.getRawIndex(idx));\n};\n\nfunction getId(list, rawIndex) {\n var id = list._idList[rawIndex];\n\n if (id == null) {\n id = getRawValueFromStore(list, list._idDimIdx, rawIndex);\n }\n\n if (id == null) {\n // FIXME Check the usage in graph, should not use prefix.\n id = ID_PREFIX + rawIndex;\n }\n\n return id;\n}\n\nfunction normalizeDimensions(dimensions) {\n if (!zrUtil.isArray(dimensions)) {\n dimensions = [dimensions];\n }\n\n return dimensions;\n}\n\nfunction validateDimensions(list, dims) {\n for (var i = 0; i < dims.length; i++) {\n // stroage may be empty when no data, so use\n // dimensionInfos to check.\n if (!list._dimensionInfos[dims[i]]) {\n console.error('Unkown dimension ' + dims[i]);\n }\n }\n}\n/**\n * Data iteration\n * @param {string|Array.}\n * @param {Function} cb\n * @param {*} [context=this]\n *\n * @example\n * list.each('x', function (x, idx) {});\n * list.each(['x', 'y'], function (x, y, idx) {});\n * list.each(function (idx) {})\n */\n\n\nlistProto.each = function (dims, cb, context, contextCompat) {\n 'use strict';\n\n if (!this._count) {\n return;\n }\n\n if (typeof dims === 'function') {\n contextCompat = context;\n context = cb;\n cb = dims;\n dims = [];\n } // contextCompat just for compat echarts3\n\n\n context = context || contextCompat || this;\n dims = zrUtil.map(normalizeDimensions(dims), this.getDimension, this);\n var dimSize = dims.length;\n\n for (var i = 0; i < this.count(); i++) {\n // Simple optimization\n switch (dimSize) {\n case 0:\n cb.call(context, i);\n break;\n\n case 1:\n cb.call(context, this.get(dims[0], i), i);\n break;\n\n case 2:\n cb.call(context, this.get(dims[0], i), this.get(dims[1], i), i);\n break;\n\n default:\n var k = 0;\n var value = [];\n\n for (; k < dimSize; k++) {\n value[k] = this.get(dims[k], i);\n } // Index\n\n\n value[k] = i;\n cb.apply(context, value);\n }\n }\n};\n/**\n * Data filter\n * @param {string|Array.}\n * @param {Function} cb\n * @param {*} [context=this]\n */\n\n\nlistProto.filterSelf = function (dimensions, cb, context, contextCompat) {\n 'use strict';\n\n if (!this._count) {\n return;\n }\n\n if (typeof dimensions === 'function') {\n contextCompat = context;\n context = cb;\n cb = dimensions;\n dimensions = [];\n } // contextCompat just for compat echarts3\n\n\n context = context || contextCompat || this;\n dimensions = zrUtil.map(normalizeDimensions(dimensions), this.getDimension, this);\n var count = this.count();\n var Ctor = getIndicesCtor(this);\n var newIndices = new Ctor(count);\n var value = [];\n var dimSize = dimensions.length;\n var offset = 0;\n var dim0 = dimensions[0];\n\n for (var i = 0; i < count; i++) {\n var keep;\n var rawIdx = this.getRawIndex(i); // Simple optimization\n\n if (dimSize === 0) {\n keep = cb.call(context, i);\n } else if (dimSize === 1) {\n var val = this._getFast(dim0, rawIdx);\n\n keep = cb.call(context, val, i);\n } else {\n for (var k = 0; k < dimSize; k++) {\n value[k] = this._getFast(dim0, rawIdx);\n }\n\n value[k] = i;\n keep = cb.apply(context, value);\n }\n\n if (keep) {\n newIndices[offset++] = rawIdx;\n }\n } // Set indices after filtered.\n\n\n if (offset < count) {\n this._indices = newIndices;\n }\n\n this._count = offset; // Reset data extent\n\n this._extent = {};\n this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n return this;\n};\n/**\n * Select data in range. (For optimization of filter)\n * (Manually inline code, support 5 million data filtering in data zoom.)\n */\n\n\nlistProto.selectRange = function (range) {\n 'use strict';\n\n if (!this._count) {\n return;\n }\n\n var dimensions = [];\n\n for (var dim in range) {\n if (range.hasOwnProperty(dim)) {\n dimensions.push(dim);\n }\n }\n\n var dimSize = dimensions.length;\n\n if (!dimSize) {\n return;\n }\n\n var originalCount = this.count();\n var Ctor = getIndicesCtor(this);\n var newIndices = new Ctor(originalCount);\n var offset = 0;\n var dim0 = dimensions[0];\n var min = range[dim0][0];\n var max = range[dim0][1];\n var quickFinished = false;\n\n if (!this._indices) {\n // Extreme optimization for common case. About 2x faster in chrome.\n var idx = 0;\n\n if (dimSize === 1) {\n var dimStorage = this._storage[dimensions[0]];\n\n for (var k = 0; k < this._chunkCount; k++) {\n var chunkStorage = dimStorage[k];\n var len = Math.min(this._count - k * this._chunkSize, this._chunkSize);\n\n for (var i = 0; i < len; i++) {\n var val = chunkStorage[i]; // NaN will not be filtered. Consider the case, in line chart, empty\n // value indicates the line should be broken. But for the case like\n // scatter plot, a data item with empty value will not be rendered,\n // but the axis extent may be effected if some other dim of the data\n // item has value. Fortunately it is not a significant negative effect.\n\n if (val >= min && val <= max || isNaN(val)) {\n newIndices[offset++] = idx;\n }\n\n idx++;\n }\n }\n\n quickFinished = true;\n } else if (dimSize === 2) {\n var dimStorage = this._storage[dim0];\n var dimStorage2 = this._storage[dimensions[1]];\n var min2 = range[dimensions[1]][0];\n var max2 = range[dimensions[1]][1];\n\n for (var k = 0; k < this._chunkCount; k++) {\n var chunkStorage = dimStorage[k];\n var chunkStorage2 = dimStorage2[k];\n var len = Math.min(this._count - k * this._chunkSize, this._chunkSize);\n\n for (var i = 0; i < len; i++) {\n var val = chunkStorage[i];\n var val2 = chunkStorage2[i]; // Do not filter NaN, see comment above.\n\n if ((val >= min && val <= max || isNaN(val)) && (val2 >= min2 && val2 <= max2 || isNaN(val2))) {\n newIndices[offset++] = idx;\n }\n\n idx++;\n }\n }\n\n quickFinished = true;\n }\n }\n\n if (!quickFinished) {\n if (dimSize === 1) {\n for (var i = 0; i < originalCount; i++) {\n var rawIndex = this.getRawIndex(i);\n\n var val = this._getFast(dim0, rawIndex); // Do not filter NaN, see comment above.\n\n\n if (val >= min && val <= max || isNaN(val)) {\n newIndices[offset++] = rawIndex;\n }\n }\n } else {\n for (var i = 0; i < originalCount; i++) {\n var keep = true;\n var rawIndex = this.getRawIndex(i);\n\n for (var k = 0; k < dimSize; k++) {\n var dimk = dimensions[k];\n\n var val = this._getFast(dim, rawIndex); // Do not filter NaN, see comment above.\n\n\n if (val < range[dimk][0] || val > range[dimk][1]) {\n keep = false;\n }\n }\n\n if (keep) {\n newIndices[offset++] = this.getRawIndex(i);\n }\n }\n }\n } // Set indices after filtered.\n\n\n if (offset < originalCount) {\n this._indices = newIndices;\n }\n\n this._count = offset; // Reset data extent\n\n this._extent = {};\n this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n return this;\n};\n/**\n * Data mapping to a plain array\n * @param {string|Array.} [dimensions]\n * @param {Function} cb\n * @param {*} [context=this]\n * @return {Array}\n */\n\n\nlistProto.mapArray = function (dimensions, cb, context, contextCompat) {\n 'use strict';\n\n if (typeof dimensions === 'function') {\n contextCompat = context;\n context = cb;\n cb = dimensions;\n dimensions = [];\n } // contextCompat just for compat echarts3\n\n\n context = context || contextCompat || this;\n var result = [];\n this.each(dimensions, function () {\n result.push(cb && cb.apply(this, arguments));\n }, context);\n return result;\n}; // Data in excludeDimensions is copied, otherwise transfered.\n\n\nfunction cloneListForMapAndSample(original, excludeDimensions) {\n var allDimensions = original.dimensions;\n var list = new List(zrUtil.map(allDimensions, original.getDimensionInfo, original), original.hostModel); // FIXME If needs stackedOn, value may already been stacked\n\n transferProperties(list, original);\n var storage = list._storage = {};\n var originalStorage = original._storage; // Init storage\n\n for (var i = 0; i < allDimensions.length; i++) {\n var dim = allDimensions[i];\n\n if (originalStorage[dim]) {\n // Notice that we do not reset invertedIndicesMap here, becuase\n // there is no scenario of mapping or sampling ordinal dimension.\n if (zrUtil.indexOf(excludeDimensions, dim) >= 0) {\n storage[dim] = cloneDimStore(originalStorage[dim]);\n list._rawExtent[dim] = getInitialExtent();\n list._extent[dim] = null;\n } else {\n // Direct reference for other dimensions\n storage[dim] = originalStorage[dim];\n }\n }\n }\n\n return list;\n}\n\nfunction cloneDimStore(originalDimStore) {\n var newDimStore = new Array(originalDimStore.length);\n\n for (var j = 0; j < originalDimStore.length; j++) {\n newDimStore[j] = cloneChunk(originalDimStore[j]);\n }\n\n return newDimStore;\n}\n\nfunction getInitialExtent() {\n return [Infinity, -Infinity];\n}\n/**\n * Data mapping to a new List with given dimensions\n * @param {string|Array.} dimensions\n * @param {Function} cb\n * @param {*} [context=this]\n * @return {Array}\n */\n\n\nlistProto.map = function (dimensions, cb, context, contextCompat) {\n 'use strict'; // contextCompat just for compat echarts3\n\n context = context || contextCompat || this;\n dimensions = zrUtil.map(normalizeDimensions(dimensions), this.getDimension, this);\n var list = cloneListForMapAndSample(this, dimensions); // Following properties are all immutable.\n // So we can reference to the same value\n\n list._indices = this._indices;\n list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n var storage = list._storage;\n var tmpRetValue = [];\n var chunkSize = this._chunkSize;\n var dimSize = dimensions.length;\n var dataCount = this.count();\n var values = [];\n var rawExtent = list._rawExtent;\n\n for (var dataIndex = 0; dataIndex < dataCount; dataIndex++) {\n for (var dimIndex = 0; dimIndex < dimSize; dimIndex++) {\n values[dimIndex] = this.get(dimensions[dimIndex], dataIndex\n /*, stack */\n );\n }\n\n values[dimSize] = dataIndex;\n var retValue = cb && cb.apply(context, values);\n\n if (retValue != null) {\n // a number or string (in oridinal dimension)?\n if (typeof retValue !== 'object') {\n tmpRetValue[0] = retValue;\n retValue = tmpRetValue;\n }\n\n var rawIndex = this.getRawIndex(dataIndex);\n var chunkIndex = Math.floor(rawIndex / chunkSize);\n var chunkOffset = rawIndex % chunkSize;\n\n for (var i = 0; i < retValue.length; i++) {\n var dim = dimensions[i];\n var val = retValue[i];\n var rawExtentOnDim = rawExtent[dim];\n var dimStore = storage[dim];\n\n if (dimStore) {\n dimStore[chunkIndex][chunkOffset] = val;\n }\n\n if (val < rawExtentOnDim[0]) {\n rawExtentOnDim[0] = val;\n }\n\n if (val > rawExtentOnDim[1]) {\n rawExtentOnDim[1] = val;\n }\n }\n }\n }\n\n return list;\n};\n/**\n * Large data down sampling on given dimension\n * @param {string} dimension\n * @param {number} rate\n * @param {Function} sampleValue\n * @param {Function} sampleIndex Sample index for name and id\n */\n\n\nlistProto.downSample = function (dimension, rate, sampleValue, sampleIndex) {\n var list = cloneListForMapAndSample(this, [dimension]);\n var targetStorage = list._storage;\n var frameValues = [];\n var frameSize = Math.floor(1 / rate);\n var dimStore = targetStorage[dimension];\n var len = this.count();\n var chunkSize = this._chunkSize;\n var rawExtentOnDim = list._rawExtent[dimension];\n var newIndices = new (getIndicesCtor(this))(len);\n var offset = 0;\n\n for (var i = 0; i < len; i += frameSize) {\n // Last frame\n if (frameSize > len - i) {\n frameSize = len - i;\n frameValues.length = frameSize;\n }\n\n for (var k = 0; k < frameSize; k++) {\n var dataIdx = this.getRawIndex(i + k);\n var originalChunkIndex = Math.floor(dataIdx / chunkSize);\n var originalChunkOffset = dataIdx % chunkSize;\n frameValues[k] = dimStore[originalChunkIndex][originalChunkOffset];\n }\n\n var value = sampleValue(frameValues);\n var sampleFrameIdx = this.getRawIndex(Math.min(i + sampleIndex(frameValues, value) || 0, len - 1));\n var sampleChunkIndex = Math.floor(sampleFrameIdx / chunkSize);\n var sampleChunkOffset = sampleFrameIdx % chunkSize; // Only write value on the filtered data\n\n dimStore[sampleChunkIndex][sampleChunkOffset] = value;\n\n if (value < rawExtentOnDim[0]) {\n rawExtentOnDim[0] = value;\n }\n\n if (value > rawExtentOnDim[1]) {\n rawExtentOnDim[1] = value;\n }\n\n newIndices[offset++] = sampleFrameIdx;\n }\n\n list._count = offset;\n list._indices = newIndices;\n list.getRawIndex = getRawIndexWithIndices;\n return list;\n};\n/**\n * Get model of one data item.\n *\n * @param {number} idx\n */\n// FIXME Model proxy ?\n\n\nlistProto.getItemModel = function (idx) {\n var hostModel = this.hostModel;\n return new Model(this.getRawDataItem(idx), hostModel, hostModel && hostModel.ecModel);\n};\n/**\n * Create a data differ\n * @param {module:echarts/data/List} otherList\n * @return {module:echarts/data/DataDiffer}\n */\n\n\nlistProto.diff = function (otherList) {\n var thisList = this;\n return new DataDiffer(otherList ? otherList.getIndices() : [], this.getIndices(), function (idx) {\n return getId(otherList, idx);\n }, function (idx) {\n return getId(thisList, idx);\n });\n};\n/**\n * Get visual property.\n * @param {string} key\n */\n\n\nlistProto.getVisual = function (key) {\n var visual = this._visual;\n return visual && visual[key];\n};\n/**\n * Set visual property\n * @param {string|Object} key\n * @param {*} [value]\n *\n * @example\n * setVisual('color', color);\n * setVisual({\n * 'color': color\n * });\n */\n\n\nlistProto.setVisual = function (key, val) {\n if (isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n this.setVisual(name, key[name]);\n }\n }\n\n return;\n }\n\n this._visual = this._visual || {};\n this._visual[key] = val;\n};\n/**\n * Set layout property.\n * @param {string|Object} key\n * @param {*} [val]\n */\n\n\nlistProto.setLayout = function (key, val) {\n if (isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n this.setLayout(name, key[name]);\n }\n }\n\n return;\n }\n\n this._layout[key] = val;\n};\n/**\n * Get layout property.\n * @param {string} key.\n * @return {*}\n */\n\n\nlistProto.getLayout = function (key) {\n return this._layout[key];\n};\n/**\n * Get layout of single data item\n * @param {number} idx\n */\n\n\nlistProto.getItemLayout = function (idx) {\n return this._itemLayouts[idx];\n};\n/**\n * Set layout of single data item\n * @param {number} idx\n * @param {Object} layout\n * @param {boolean=} [merge=false]\n */\n\n\nlistProto.setItemLayout = function (idx, layout, merge) {\n this._itemLayouts[idx] = merge ? zrUtil.extend(this._itemLayouts[idx] || {}, layout) : layout;\n};\n/**\n * Clear all layout of single data item\n */\n\n\nlistProto.clearItemLayouts = function () {\n this._itemLayouts.length = 0;\n};\n/**\n * Get visual property of single data item\n * @param {number} idx\n * @param {string} key\n * @param {boolean} [ignoreParent=false]\n */\n\n\nlistProto.getItemVisual = function (idx, key, ignoreParent) {\n var itemVisual = this._itemVisuals[idx];\n var val = itemVisual && itemVisual[key];\n\n if (val == null && !ignoreParent) {\n // Use global visual property\n return this.getVisual(key);\n }\n\n return val;\n};\n/**\n * Set visual property of single data item\n *\n * @param {number} idx\n * @param {string|Object} key\n * @param {*} [value]\n *\n * @example\n * setItemVisual(0, 'color', color);\n * setItemVisual(0, {\n * 'color': color\n * });\n */\n\n\nlistProto.setItemVisual = function (idx, key, value) {\n var itemVisual = this._itemVisuals[idx] || {};\n var hasItemVisual = this.hasItemVisual;\n this._itemVisuals[idx] = itemVisual;\n\n if (isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n itemVisual[name] = key[name];\n hasItemVisual[name] = true;\n }\n }\n\n return;\n }\n\n itemVisual[key] = value;\n hasItemVisual[key] = true;\n};\n/**\n * Clear itemVisuals and list visual.\n */\n\n\nlistProto.clearAllVisual = function () {\n this._visual = {};\n this._itemVisuals = [];\n this.hasItemVisual = {};\n};\n\nvar setItemDataAndSeriesIndex = function (child) {\n child.seriesIndex = this.seriesIndex;\n child.dataIndex = this.dataIndex;\n child.dataType = this.dataType;\n};\n/**\n * Set graphic element relative to data. It can be set as null\n * @param {number} idx\n * @param {module:zrender/Element} [el]\n */\n\n\nlistProto.setItemGraphicEl = function (idx, el) {\n var hostModel = this.hostModel;\n\n if (el) {\n // Add data index and series index for indexing the data by element\n // Useful in tooltip\n el.dataIndex = idx;\n el.dataType = this.dataType;\n el.seriesIndex = hostModel && hostModel.seriesIndex;\n\n if (el.type === 'group') {\n el.traverse(setItemDataAndSeriesIndex, el);\n }\n }\n\n this._graphicEls[idx] = el;\n};\n/**\n * @param {number} idx\n * @return {module:zrender/Element}\n */\n\n\nlistProto.getItemGraphicEl = function (idx) {\n return this._graphicEls[idx];\n};\n/**\n * @param {Function} cb\n * @param {*} context\n */\n\n\nlistProto.eachItemGraphicEl = function (cb, context) {\n zrUtil.each(this._graphicEls, function (el, idx) {\n if (el) {\n cb && cb.call(context, el, idx);\n }\n });\n};\n/**\n * Shallow clone a new list except visual and layout properties, and graph elements.\n * New list only change the indices.\n */\n\n\nlistProto.cloneShallow = function (list) {\n if (!list) {\n var dimensionInfoList = zrUtil.map(this.dimensions, this.getDimensionInfo, this);\n list = new List(dimensionInfoList, this.hostModel);\n } // FIXME\n\n\n list._storage = this._storage;\n transferProperties(list, this); // Clone will not change the data extent and indices\n\n if (this._indices) {\n var Ctor = this._indices.constructor;\n list._indices = new Ctor(this._indices);\n } else {\n list._indices = null;\n }\n\n list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n return list;\n};\n/**\n * Wrap some method to add more feature\n * @param {string} methodName\n * @param {Function} injectFunction\n */\n\n\nlistProto.wrapMethod = function (methodName, injectFunction) {\n var originalMethod = this[methodName];\n\n if (typeof originalMethod !== 'function') {\n return;\n }\n\n this.__wrappedMethods = this.__wrappedMethods || [];\n\n this.__wrappedMethods.push(methodName);\n\n this[methodName] = function () {\n var res = originalMethod.apply(this, arguments);\n return injectFunction.apply(this, [res].concat(zrUtil.slice(arguments)));\n };\n}; // Methods that create a new list based on this list should be listed here.\n// Notice that those method should `RETURN` the new list.\n\n\nlistProto.TRANSFERABLE_METHODS = ['cloneShallow', 'downSample', 'map']; // Methods that change indices of this list should be listed here.\n\nlistProto.CHANGABLE_METHODS = ['filterSelf', 'selectRange'];\nvar _default = List;\nmodule.exports = _default;","var _vector = require(\"../../core/vector\");\n\nvar v2Distance = _vector.distance;\n\n/**\n * Catmull-Rom spline 插值折线\n * @module zrender/shape/util/smoothSpline\n * @author pissang (https://www.github.com/pissang)\n * Kener (@Kener-林峰, kener.linfeng@gmail.com)\n * errorrik (errorrik@gmail.com)\n */\n\n/**\n * @inner\n */\nfunction interpolate(p0, p1, p2, p3, t, t2, t3) {\n var v0 = (p2 - p0) * 0.5;\n var v1 = (p3 - p1) * 0.5;\n return (2 * (p1 - p2) + v0 + v1) * t3 + (-3 * (p1 - p2) - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\n/**\n * @alias module:zrender/shape/util/smoothSpline\n * @param {Array} points 线段顶点数组\n * @param {boolean} isLoop\n * @return {Array}\n */\n\n\nfunction _default(points, isLoop) {\n var len = points.length;\n var ret = [];\n var distance = 0;\n\n for (var i = 1; i < len; i++) {\n distance += v2Distance(points[i - 1], points[i]);\n }\n\n var segs = distance / 2;\n segs = segs < len ? len : segs;\n\n for (var i = 0; i < segs; i++) {\n var pos = i / (segs - 1) * (isLoop ? len : len - 1);\n var idx = Math.floor(pos);\n var w = pos - idx;\n var p0;\n var p1 = points[idx % len];\n var p2;\n var p3;\n\n if (!isLoop) {\n p0 = points[idx === 0 ? idx : idx - 1];\n p2 = points[idx > len - 2 ? len - 1 : idx + 1];\n p3 = points[idx > len - 3 ? len - 1 : idx + 2];\n } else {\n p0 = points[(idx - 1 + len) % len];\n p2 = points[(idx + 1) % len];\n p3 = points[(idx + 2) % len];\n }\n\n var w2 = w * w;\n var w3 = w * w2;\n ret.push([interpolate(p0[0], p1[0], p2[0], p3[0], w, w2, w3), interpolate(p0[1], p1[1], p2[1], p3[1], w, w2, w3)]);\n }\n\n return ret;\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 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*/\nvar TYPE_DELIMITER = '.';\nvar IS_CONTAINER = '___EC__COMPONENT__CONTAINER___';\n/**\n * Notice, parseClassType('') should returns {main: '', sub: ''}\n * @public\n */\n\nfunction parseClassType(componentType) {\n var ret = {\n main: '',\n sub: ''\n };\n\n if (componentType) {\n componentType = componentType.split(TYPE_DELIMITER);\n ret.main = componentType[0] || '';\n ret.sub = componentType[1] || '';\n }\n\n return ret;\n}\n/**\n * @public\n */\n\n\nfunction checkClassType(componentType) {\n zrUtil.assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType), 'componentType \"' + componentType + '\" illegal');\n}\n/**\n * @public\n */\n\n\nfunction enableClassExtend(RootClass, mandatoryMethods) {\n RootClass.$constructor = RootClass;\n\n RootClass.extend = function (proto) {\n var superClass = this;\n\n var ExtendedClass = function () {\n if (!proto.$constructor) {\n superClass.apply(this, arguments);\n } else {\n proto.$constructor.apply(this, arguments);\n }\n };\n\n zrUtil.extend(ExtendedClass.prototype, proto);\n ExtendedClass.extend = this.extend;\n ExtendedClass.superCall = superCall;\n ExtendedClass.superApply = superApply;\n zrUtil.inherits(ExtendedClass, this);\n ExtendedClass.superClass = superClass;\n return ExtendedClass;\n };\n}\n\nvar classBase = 0;\n/**\n * Can not use instanceof, consider different scope by\n * cross domain or es module import in ec extensions.\n * Mount a method \"isInstance()\" to Clz.\n */\n\nfunction enableClassCheck(Clz) {\n var classAttr = ['__\\0is_clz', classBase++, Math.random().toFixed(3)].join('_');\n Clz.prototype[classAttr] = true;\n\n Clz.isInstance = function (obj) {\n return !!(obj && obj[classAttr]);\n };\n} // superCall should have class info, which can not be fetch from 'this'.\n// Consider this case:\n// class A has method f,\n// class B inherits class A, overrides method f, f call superApply('f'),\n// class C inherits class B, do not overrides method f,\n// then when method of class C is called, dead loop occured.\n\n\nfunction superCall(context, methodName) {\n var args = zrUtil.slice(arguments, 2);\n return this.superClass.prototype[methodName].apply(context, args);\n}\n\nfunction superApply(context, methodName, args) {\n return this.superClass.prototype[methodName].apply(context, args);\n}\n/**\n * @param {Object} entity\n * @param {Object} options\n * @param {boolean} [options.registerWhenExtend]\n * @public\n */\n\n\nfunction enableClassManagement(entity, options) {\n options = options || {};\n /**\n * Component model classes\n * key: componentType,\n * value:\n * componentClass, when componentType is 'xxx'\n * or Object., when componentType is 'xxx.yy'\n * @type {Object}\n */\n\n var storage = {};\n\n entity.registerClass = function (Clazz, componentType) {\n if (componentType) {\n checkClassType(componentType);\n componentType = parseClassType(componentType);\n\n if (!componentType.sub) {\n storage[componentType.main] = Clazz;\n } else if (componentType.sub !== IS_CONTAINER) {\n var container = makeContainer(componentType);\n container[componentType.sub] = Clazz;\n }\n }\n\n return Clazz;\n };\n\n entity.getClass = function (componentMainType, subType, throwWhenNotFound) {\n var Clazz = storage[componentMainType];\n\n if (Clazz && Clazz[IS_CONTAINER]) {\n Clazz = subType ? Clazz[subType] : null;\n }\n\n if (throwWhenNotFound && !Clazz) {\n throw new Error(!subType ? componentMainType + '.' + 'type should be specified.' : 'Component ' + componentMainType + '.' + (subType || '') + ' not exists. Load it first.');\n }\n\n return Clazz;\n };\n\n entity.getClassesByMainType = function (componentType) {\n componentType = parseClassType(componentType);\n var result = [];\n var obj = storage[componentType.main];\n\n if (obj && obj[IS_CONTAINER]) {\n zrUtil.each(obj, function (o, type) {\n type !== IS_CONTAINER && result.push(o);\n });\n } else {\n result.push(obj);\n }\n\n return result;\n };\n\n entity.hasClass = function (componentType) {\n // Just consider componentType.main.\n componentType = parseClassType(componentType);\n return !!storage[componentType.main];\n };\n /**\n * @return {Array.} Like ['aa', 'bb'], but can not be ['aa.xx']\n */\n\n\n entity.getAllClassMainTypes = function () {\n var types = [];\n zrUtil.each(storage, function (obj, type) {\n types.push(type);\n });\n return types;\n };\n /**\n * If a main type is container and has sub types\n * @param {string} mainType\n * @return {boolean}\n */\n\n\n entity.hasSubTypes = function (componentType) {\n componentType = parseClassType(componentType);\n var obj = storage[componentType.main];\n return obj && obj[IS_CONTAINER];\n };\n\n entity.parseClassType = parseClassType;\n\n function makeContainer(componentType) {\n var container = storage[componentType.main];\n\n if (!container || !container[IS_CONTAINER]) {\n container = storage[componentType.main] = {};\n container[IS_CONTAINER] = true;\n }\n\n return container;\n }\n\n if (options.registerWhenExtend) {\n var originalExtend = entity.extend;\n\n if (originalExtend) {\n entity.extend = function (proto) {\n var ExtendedClass = originalExtend.call(this, proto);\n return entity.registerClass(ExtendedClass, proto.type);\n };\n }\n }\n\n return entity;\n}\n/**\n * @param {string|Array.} properties\n */\n\n\nfunction setReadOnly(obj, properties) {// FIXME It seems broken in IE8 simulation of IE11\n // if (!zrUtil.isArray(properties)) {\n // properties = properties != null ? [properties] : [];\n // }\n // zrUtil.each(properties, function (prop) {\n // var value = obj[prop];\n // Object.defineProperty\n // && Object.defineProperty(obj, prop, {\n // value: value, writable: false\n // });\n // zrUtil.isArray(obj[prop])\n // && Object.freeze\n // && Object.freeze(obj[prop]);\n // });\n}\n\nexports.parseClassType = parseClassType;\nexports.enableClassExtend = enableClassExtend;\nexports.enableClassCheck = enableClassCheck;\nexports.enableClassManagement = enableClassManagement;\nexports.setReadOnly = setReadOnly;","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : isCallable(it);\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","var isCallable = require('../internals/is-callable');\nvar getBuiltIn = require('../internals/get-built-in');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && Object(it) instanceof $Symbol;\n};\n","var env = require(\"./env\");\n\nvar _fourPointsTransform = require(\"./fourPointsTransform\");\n\nvar buildTransformer = _fourPointsTransform.buildTransformer;\nvar EVENT_SAVED_PROP = '___zrEVENTSAVED';\nvar _calcOut = [];\n/**\n * Transform \"local coord\" from `elFrom` to `elTarget`.\n * \"local coord\": the coord based on the input `el`. The origin point is at\n * the position of \"left: 0; top: 0;\" in the `el`.\n *\n * Support when CSS transform is used.\n *\n * Having the `out` (that is, `[outX, outY]`), we can create an DOM element\n * and set the CSS style as \"left: outX; top: outY;\" and append it to `elTarge`\n * to locate the element.\n *\n * For example, this code below positions a child of `document.body` on the event\n * point, no matter whether `body` has `margin`/`paddin`/`transfrom`/... :\n * ```js\n * transformLocalCoord(out, container, document.body, event.offsetX, event.offsetY);\n * if (!eqNaN(out[0])) {\n * // Then locate the tip element on the event point.\n * var tipEl = document.createElement('div');\n * tipEl.style.cssText = 'position: absolute; left:' + out[0] + ';top:' + out[1] + ';';\n * document.body.appendChild(tipEl);\n * }\n * ```\n *\n * Notice: In some env this method is not supported. If called, `out` will be `[NaN, NaN]`.\n *\n * @param {Array.} out [inX: number, inY: number] The output..\n * If can not transform, `out` will not be modified but return `false`.\n * @param {HTMLElement} elFrom The `[inX, inY]` is based on elFrom.\n * @param {HTMLElement} elTarget The `out` is based on elTarget.\n * @param {number} inX\n * @param {number} inY\n * @return {boolean} Whether transform successfully.\n */\n\nfunction transformLocalCoord(out, elFrom, elTarget, inX, inY) {\n return transformCoordWithViewport(_calcOut, elFrom, inX, inY, true) && transformCoordWithViewport(out, elTarget, _calcOut[0], _calcOut[1]);\n}\n/**\n * Transform between a \"viewport coord\" and a \"local coord\".\n * \"viewport coord\": the coord based on the left-top corner of the viewport\n * of the browser.\n * \"local coord\": the coord based on the input `el`. The origin point is at\n * the position of \"left: 0; top: 0;\" in the `el`.\n *\n * Support the case when CSS transform is used on el.\n *\n * @param {Array.} out [inX: number, inY: number] The output. If `inverse: false`,\n * it represents \"local coord\", otherwise \"vireport coord\".\n * If can not transform, `out` will not be modified but return `false`.\n * @param {HTMLElement} el The \"local coord\" is based on the `el`, see comment above.\n * @param {number} inX If `inverse: false`,\n * it represents \"vireport coord\", otherwise \"local coord\".\n * @param {number} inY If `inverse: false`,\n * it represents \"vireport coord\", otherwise \"local coord\".\n * @param {boolean} [inverse=false]\n * `true`: from \"viewport coord\" to \"local coord\".\n * `false`: from \"local coord\" to \"viewport coord\".\n * @return {boolean} Whether transform successfully.\n */\n\n\nfunction transformCoordWithViewport(out, el, inX, inY, inverse) {\n if (el.getBoundingClientRect && env.domSupported && !isCanvasEl(el)) {\n var saved = el[EVENT_SAVED_PROP] || (el[EVENT_SAVED_PROP] = {});\n var markers = prepareCoordMarkers(el, saved);\n var transformer = preparePointerTransformer(markers, saved, inverse);\n\n if (transformer) {\n transformer(out, inX, inY);\n return true;\n }\n }\n\n return false;\n}\n\nfunction prepareCoordMarkers(el, saved) {\n var markers = saved.markers;\n\n if (markers) {\n return markers;\n }\n\n markers = saved.markers = [];\n var propLR = ['left', 'right'];\n var propTB = ['top', 'bottom'];\n\n for (var i = 0; i < 4; i++) {\n var marker = document.createElement('div');\n var stl = marker.style;\n var idxLR = i % 2;\n var idxTB = (i >> 1) % 2;\n stl.cssText = ['position: absolute', 'visibility: hidden', 'padding: 0', 'margin: 0', 'border-width: 0', 'user-select: none', 'width:0', 'height:0', // 'width: 5px',\n // 'height: 5px',\n propLR[idxLR] + ':0', propTB[idxTB] + ':0', propLR[1 - idxLR] + ':auto', propTB[1 - idxTB] + ':auto', ''].join('!important;');\n el.appendChild(marker);\n markers.push(marker);\n }\n\n return markers;\n}\n\nfunction preparePointerTransformer(markers, saved, inverse) {\n var transformerName = inverse ? 'invTrans' : 'trans';\n var transformer = saved[transformerName];\n var oldSrcCoords = saved.srcCoords;\n var oldCoordTheSame = true;\n var srcCoords = [];\n var destCoords = [];\n\n for (var i = 0; i < 4; i++) {\n var rect = markers[i].getBoundingClientRect();\n var ii = 2 * i;\n var x = rect.left;\n var y = rect.top;\n srcCoords.push(x, y);\n oldCoordTheSame = oldCoordTheSame && oldSrcCoords && x === oldSrcCoords[ii] && y === oldSrcCoords[ii + 1];\n destCoords.push(markers[i].offsetLeft, markers[i].offsetTop);\n } // Cache to avoid time consuming of `buildTransformer`.\n\n\n return oldCoordTheSame && transformer ? transformer : (saved.srcCoords = srcCoords, saved[transformerName] = inverse ? buildTransformer(destCoords, srcCoords) : buildTransformer(srcCoords, destCoords));\n}\n\nfunction isCanvasEl(el) {\n return el.nodeName.toUpperCase() === 'CANVAS';\n}\n\nexports.transformLocalCoord = transformLocalCoord;\nexports.transformCoordWithViewport = transformCoordWithViewport;\nexports.isCanvasEl = isCanvasEl;","\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 echarts = require(\"../../echarts\");\n\nvar axisPointerModelHelper = require(\"../axisPointer/modelHelper\");\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 * Base class of AxisView.\n */\nvar AxisView = echarts.extendComponentView({\n type: 'axis',\n\n /**\n * @private\n */\n _axisPointer: null,\n\n /**\n * @protected\n * @type {string}\n */\n axisPointerClass: null,\n\n /**\n * @override\n */\n render: function (axisModel, ecModel, api, payload) {\n // FIXME\n // This process should proformed after coordinate systems updated\n // (axis scale updated), and should be performed each time update.\n // So put it here temporarily, although it is not appropriate to\n // put a model-writing procedure in `view`.\n this.axisPointerClass && axisPointerModelHelper.fixValue(axisModel);\n AxisView.superApply(this, 'render', arguments);\n updateAxisPointer(this, axisModel, ecModel, api, payload, true);\n },\n\n /**\n * Action handler.\n * @public\n * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n updateAxisPointer: function (axisModel, ecModel, api, payload, force) {\n updateAxisPointer(this, axisModel, ecModel, api, payload, false);\n },\n\n /**\n * @override\n */\n remove: function (ecModel, api) {\n var axisPointer = this._axisPointer;\n axisPointer && axisPointer.remove(api);\n AxisView.superApply(this, 'remove', arguments);\n },\n\n /**\n * @override\n */\n dispose: function (ecModel, api) {\n disposeAxisPointer(this, api);\n AxisView.superApply(this, 'dispose', arguments);\n }\n});\n\nfunction updateAxisPointer(axisView, axisModel, ecModel, api, payload, forceRender) {\n var Clazz = AxisView.getAxisPointerClass(axisView.axisPointerClass);\n\n if (!Clazz) {\n return;\n }\n\n var axisPointerModel = axisPointerModelHelper.getAxisPointerModel(axisModel);\n axisPointerModel ? (axisView._axisPointer || (axisView._axisPointer = new Clazz())).render(axisModel, axisPointerModel, api, forceRender) : disposeAxisPointer(axisView, api);\n}\n\nfunction disposeAxisPointer(axisView, ecModel, api) {\n var axisPointer = axisView._axisPointer;\n axisPointer && axisPointer.dispose(ecModel, api);\n axisView._axisPointer = null;\n}\n\nvar axisPointerClazz = [];\n\nAxisView.registerAxisPointerClass = function (type, clazz) {\n axisPointerClazz[type] = clazz;\n};\n\nAxisView.getAxisPointerClass = function (type) {\n return type && axisPointerClazz[type];\n};\n\nvar _default = AxisView;\nmodule.exports = _default;","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","var _curve = require(\"../core/curve\");\n\nvar quadraticProjectPoint = _curve.quadraticProjectPoint;\n\n/**\n * 二次贝塞尔曲线描边包含判断\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} lineWidth\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\nfunction containStroke(x0, y0, x1, y1, x2, y2, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n\n var _l = lineWidth; // Quick reject\n\n if (y > y0 + _l && y > y1 + _l && y > y2 + _l || y < y0 - _l && y < y1 - _l && y < y2 - _l || x > x0 + _l && x > x1 + _l && x > x2 + _l || x < x0 - _l && x < x1 - _l && x < x2 - _l) {\n return false;\n }\n\n var d = quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, null);\n return d <= _l / 2;\n}\n\nexports.containStroke = containStroke;","\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 OrdinalScale = require(\"../scale/Ordinal\");\n\nvar IntervalScale = require(\"../scale/Interval\");\n\nvar Scale = require(\"../scale/Scale\");\n\nvar numberUtil = require(\"../util/number\");\n\nvar _barGrid = require(\"../layout/barGrid\");\n\nvar prepareLayoutBarSeries = _barGrid.prepareLayoutBarSeries;\nvar makeColumnLayout = _barGrid.makeColumnLayout;\nvar retrieveColumnLayout = _barGrid.retrieveColumnLayout;\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nrequire(\"../scale/Time\");\n\nrequire(\"../scale/Log\");\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 * Get axis scale extent before niced.\n * Item of returned array can only be number (including Infinity and NaN).\n */\nfunction getScaleExtent(scale, model) {\n var scaleType = scale.type;\n var min = model.getMin();\n var max = model.getMax();\n var originalExtent = scale.getExtent();\n var axisDataLen;\n var boundaryGap;\n var span;\n\n if (scaleType === 'ordinal') {\n axisDataLen = model.getCategories().length;\n } else {\n boundaryGap = model.get('boundaryGap');\n\n if (!zrUtil.isArray(boundaryGap)) {\n boundaryGap = [boundaryGap || 0, boundaryGap || 0];\n }\n\n if (typeof boundaryGap[0] === 'boolean') {\n boundaryGap = [0, 0];\n }\n\n boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], 1);\n boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], 1);\n span = originalExtent[1] - originalExtent[0] || Math.abs(originalExtent[0]);\n } // Notice: When min/max is not set (that is, when there are null/undefined,\n // which is the most common case), these cases should be ensured:\n // (1) For 'ordinal', show all axis.data.\n // (2) For others:\n // + `boundaryGap` is applied (if min/max set, boundaryGap is\n // disabled).\n // + If `needCrossZero`, min/max should be zero, otherwise, min/max should\n // be the result that originalExtent enlarged by boundaryGap.\n // (3) If no data, it should be ensured that `scale.setBlank` is set.\n // FIXME\n // (1) When min/max is 'dataMin' or 'dataMax', should boundaryGap be able to used?\n // (2) When `needCrossZero` and all data is positive/negative, should it be ensured\n // that the results processed by boundaryGap are positive/negative?\n\n\n if (min === 'dataMin') {\n min = originalExtent[0];\n } else if (typeof min === 'function') {\n min = min({\n min: originalExtent[0],\n max: originalExtent[1]\n });\n }\n\n if (max === 'dataMax') {\n max = originalExtent[1];\n } else if (typeof max === 'function') {\n max = max({\n min: originalExtent[0],\n max: originalExtent[1]\n });\n }\n\n var fixMin = min != null;\n var fixMax = max != null;\n\n if (min == null) {\n min = scaleType === 'ordinal' ? axisDataLen ? 0 : NaN : originalExtent[0] - boundaryGap[0] * span;\n }\n\n if (max == null) {\n max = scaleType === 'ordinal' ? axisDataLen ? axisDataLen - 1 : NaN : originalExtent[1] + boundaryGap[1] * span;\n }\n\n (min == null || !isFinite(min)) && (min = NaN);\n (max == null || !isFinite(max)) && (max = NaN);\n scale.setBlank(zrUtil.eqNaN(min) || zrUtil.eqNaN(max) || scaleType === 'ordinal' && !scale.getOrdinalMeta().categories.length); // Evaluate if axis needs cross zero\n\n if (model.getNeedCrossZero()) {\n // Axis is over zero and min is not set\n if (min > 0 && max > 0 && !fixMin) {\n min = 0;\n } // Axis is under zero and max is not set\n\n\n if (min < 0 && max < 0 && !fixMax) {\n max = 0;\n }\n } // If bars are placed on a base axis of type time or interval account for axis boundary overflow and current axis\n // is base axis\n // FIXME\n // (1) Consider support value axis, where below zero and axis `onZero` should be handled properly.\n // (2) Refactor the logic with `barGrid`. Is it not need to `makeBarWidthAndOffsetInfo` twice with different extent?\n // Should not depend on series type `bar`?\n // (3) Fix that might overlap when using dataZoom.\n // (4) Consider other chart types using `barGrid`?\n // See #6728, #4862, `test/bar-overflow-time-plot.html`\n\n\n var ecModel = model.ecModel;\n\n if (ecModel && scaleType === 'time'\n /*|| scaleType === 'interval' */\n ) {\n var barSeriesModels = prepareLayoutBarSeries('bar', ecModel);\n var isBaseAxisAndHasBarSeries;\n zrUtil.each(barSeriesModels, function (seriesModel) {\n isBaseAxisAndHasBarSeries |= seriesModel.getBaseAxis() === model.axis;\n });\n\n if (isBaseAxisAndHasBarSeries) {\n // Calculate placement of bars on axis\n var barWidthAndOffset = makeColumnLayout(barSeriesModels); // Adjust axis min and max to account for overflow\n\n var adjustedScale = adjustScaleForOverflow(min, max, model, barWidthAndOffset);\n min = adjustedScale.min;\n max = adjustedScale.max;\n }\n }\n\n return {\n extent: [min, max],\n // \"fix\" means \"fixed\", the value should not be\n // changed in the subsequent steps.\n fixMin: fixMin,\n fixMax: fixMax\n };\n}\n\nfunction adjustScaleForOverflow(min, max, model, barWidthAndOffset) {\n // Get Axis Length\n var axisExtent = model.axis.getExtent();\n var axisLength = axisExtent[1] - axisExtent[0]; // Get bars on current base axis and calculate min and max overflow\n\n var barsOnCurrentAxis = retrieveColumnLayout(barWidthAndOffset, model.axis);\n\n if (barsOnCurrentAxis === undefined) {\n return {\n min: min,\n max: max\n };\n }\n\n var minOverflow = Infinity;\n zrUtil.each(barsOnCurrentAxis, function (item) {\n minOverflow = Math.min(item.offset, minOverflow);\n });\n var maxOverflow = -Infinity;\n zrUtil.each(barsOnCurrentAxis, function (item) {\n maxOverflow = Math.max(item.offset + item.width, maxOverflow);\n });\n minOverflow = Math.abs(minOverflow);\n maxOverflow = Math.abs(maxOverflow);\n var totalOverFlow = minOverflow + maxOverflow; // Calulate required buffer based on old range and overflow\n\n var oldRange = max - min;\n var oldRangePercentOfNew = 1 - (minOverflow + maxOverflow) / axisLength;\n var overflowBuffer = oldRange / oldRangePercentOfNew - oldRange;\n max += overflowBuffer * (maxOverflow / totalOverFlow);\n min -= overflowBuffer * (minOverflow / totalOverFlow);\n return {\n min: min,\n max: max\n };\n}\n\nfunction niceScaleExtent(scale, model) {\n var extentInfo = getScaleExtent(scale, model);\n var extent = extentInfo.extent;\n var splitNumber = model.get('splitNumber');\n\n if (scale.type === 'log') {\n scale.base = model.get('logBase');\n }\n\n var scaleType = scale.type;\n scale.setExtent(extent[0], extent[1]);\n scale.niceExtent({\n splitNumber: splitNumber,\n fixMin: extentInfo.fixMin,\n fixMax: extentInfo.fixMax,\n minInterval: scaleType === 'interval' || scaleType === 'time' ? model.get('minInterval') : null,\n maxInterval: scaleType === 'interval' || scaleType === 'time' ? model.get('maxInterval') : null\n }); // If some one specified the min, max. And the default calculated interval\n // is not good enough. He can specify the interval. It is often appeared\n // in angle axis with angle 0 - 360. Interval calculated in interval scale is hard\n // to be 60.\n // FIXME\n\n var interval = model.get('interval');\n\n if (interval != null) {\n scale.setInterval && scale.setInterval(interval);\n }\n}\n/**\n * @param {module:echarts/model/Model} model\n * @param {string} [axisType] Default retrieve from model.type\n * @return {module:echarts/scale/*}\n */\n\n\nfunction createScaleByModel(model, axisType) {\n axisType = axisType || model.get('type');\n\n if (axisType) {\n switch (axisType) {\n // Buildin scale\n case 'category':\n return new OrdinalScale(model.getOrdinalMeta ? model.getOrdinalMeta() : model.getCategories(), [Infinity, -Infinity]);\n\n case 'value':\n return new IntervalScale();\n // Extended scale, like time and log\n\n default:\n return (Scale.getClass(axisType) || IntervalScale).create(model);\n }\n }\n}\n/**\n * Check if the axis corss 0\n */\n\n\nfunction ifAxisCrossZero(axis) {\n var dataExtent = axis.scale.getExtent();\n var min = dataExtent[0];\n var max = dataExtent[1];\n return !(min > 0 && max > 0 || min < 0 && max < 0);\n}\n/**\n * @param {module:echarts/coord/Axis} axis\n * @return {Function} Label formatter function.\n * param: {number} tickValue,\n * param: {number} idx, the index in all ticks.\n * If category axis, this param is not requied.\n * return: {string} label string.\n */\n\n\nfunction makeLabelFormatter(axis) {\n var labelFormatter = axis.getLabelModel().get('formatter');\n var categoryTickStart = axis.type === 'category' ? axis.scale.getExtent()[0] : null;\n\n if (typeof labelFormatter === 'string') {\n labelFormatter = function (tpl) {\n return function (val) {\n // For category axis, get raw value; for numeric axis,\n // get foramtted label like '1,333,444'.\n val = axis.scale.getLabel(val);\n return tpl.replace('{value}', val != null ? val : '');\n };\n }(labelFormatter); // Consider empty array\n\n\n return labelFormatter;\n } else if (typeof labelFormatter === 'function') {\n return function (tickValue, idx) {\n // The original intention of `idx` is \"the index of the tick in all ticks\".\n // But the previous implementation of category axis do not consider the\n // `axisLabel.interval`, which cause that, for example, the `interval` is\n // `1`, then the ticks \"name5\", \"name7\", \"name9\" are displayed, where the\n // corresponding `idx` are `0`, `2`, `4`, but not `0`, `1`, `2`. So we keep\n // the definition here for back compatibility.\n if (categoryTickStart != null) {\n idx = tickValue - categoryTickStart;\n }\n\n return labelFormatter(getAxisRawValue(axis, tickValue), idx);\n };\n } else {\n return function (tick) {\n return axis.scale.getLabel(tick);\n };\n }\n}\n\nfunction getAxisRawValue(axis, value) {\n // In category axis with data zoom, tick is not the original\n // index of axis.data. So tick should not be exposed to user\n // in category axis.\n return axis.type === 'category' ? axis.scale.getLabel(value) : value;\n}\n/**\n * @param {module:echarts/coord/Axis} axis\n * @return {module:zrender/core/BoundingRect} Be null/undefined if no labels.\n */\n\n\nfunction estimateLabelUnionRect(axis) {\n var axisModel = axis.model;\n var scale = axis.scale;\n\n if (!axisModel.get('axisLabel.show') || scale.isBlank()) {\n return;\n }\n\n var isCategory = axis.type === 'category';\n var realNumberScaleTicks;\n var tickCount;\n var categoryScaleExtent = scale.getExtent(); // Optimize for large category data, avoid call `getTicks()`.\n\n if (isCategory) {\n tickCount = scale.count();\n } else {\n realNumberScaleTicks = scale.getTicks();\n tickCount = realNumberScaleTicks.length;\n }\n\n var axisLabelModel = axis.getLabelModel();\n var labelFormatter = makeLabelFormatter(axis);\n var rect;\n var step = 1; // Simple optimization for large amount of labels\n\n if (tickCount > 40) {\n step = Math.ceil(tickCount / 40);\n }\n\n for (var i = 0; i < tickCount; i += step) {\n var tickValue = realNumberScaleTicks ? realNumberScaleTicks[i] : categoryScaleExtent[0] + i;\n var label = labelFormatter(tickValue);\n var unrotatedSingleRect = axisLabelModel.getTextRect(label);\n var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get('rotate') || 0);\n rect ? rect.union(singleRect) : rect = singleRect;\n }\n\n return rect;\n}\n\nfunction rotateTextRect(textRect, rotate) {\n var rotateRadians = rotate * Math.PI / 180;\n var boundingBox = textRect.plain();\n var beforeWidth = boundingBox.width;\n var beforeHeight = boundingBox.height;\n var afterWidth = beforeWidth * Math.cos(rotateRadians) + beforeHeight * Math.sin(rotateRadians);\n var afterHeight = beforeWidth * Math.sin(rotateRadians) + beforeHeight * Math.cos(rotateRadians);\n var rotatedRect = new BoundingRect(boundingBox.x, boundingBox.y, afterWidth, afterHeight);\n return rotatedRect;\n}\n/**\n * @param {module:echarts/src/model/Model} model axisLabelModel or axisTickModel\n * @return {number|String} Can be null|'auto'|number|function\n */\n\n\nfunction getOptionCategoryInterval(model) {\n var interval = model.get('interval');\n return interval == null ? 'auto' : interval;\n}\n/**\n * Set `categoryInterval` as 0 implicitly indicates that\n * show all labels reguardless of overlap.\n * @param {Object} axis axisModel.axis\n * @return {boolean}\n */\n\n\nfunction shouldShowAllLabels(axis) {\n return axis.type === 'category' && getOptionCategoryInterval(axis.getLabelModel()) === 0;\n}\n\nexports.getScaleExtent = getScaleExtent;\nexports.niceScaleExtent = niceScaleExtent;\nexports.createScaleByModel = createScaleByModel;\nexports.ifAxisCrossZero = ifAxisCrossZero;\nexports.makeLabelFormatter = makeLabelFormatter;\nexports.getAxisRawValue = getAxisRawValue;\nexports.estimateLabelUnionRect = estimateLabelUnionRect;\nexports.getOptionCategoryInterval = getOptionCategoryInterval;\nexports.shouldShowAllLabels = shouldShowAllLabels;","var guid = require(\"./core/guid\");\n\nvar env = require(\"./core/env\");\n\nvar zrUtil = require(\"./core/util\");\n\nvar Handler = require(\"./Handler\");\n\nvar Storage = require(\"./Storage\");\n\nvar Painter = require(\"./Painter\");\n\nvar Animation = require(\"./animation/Animation\");\n\nvar HandlerProxy = require(\"./dom/HandlerProxy\");\n\n/*!\n* ZRender, a high performance 2d drawing library.\n*\n* Copyright (c) 2013, Baidu Inc.\n* All rights reserved.\n*\n* LICENSE\n* https://github.com/ecomfe/zrender/blob/master/LICENSE.txt\n*/\nvar useVML = !env.canvasSupported;\nvar painterCtors = {\n canvas: Painter\n};\nvar instances = {}; // ZRender实例map索引\n\n/**\n * @type {string}\n */\n\nvar version = '4.3.1';\n/**\n * Initializing a zrender instance\n * @param {HTMLElement} dom\n * @param {Object} [opts]\n * @param {string} [opts.renderer='canvas'] 'canvas' or 'svg'\n * @param {number} [opts.devicePixelRatio]\n * @param {number|string} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number|string} [opts.height] Can be 'auto' (the same as null/undefined)\n * @return {module:zrender/ZRender}\n */\n\nfunction init(dom, opts) {\n var zr = new ZRender(guid(), dom, opts);\n instances[zr.id] = zr;\n return zr;\n}\n/**\n * Dispose zrender instance\n * @param {module:zrender/ZRender} zr\n */\n\n\nfunction dispose(zr) {\n if (zr) {\n zr.dispose();\n } else {\n for (var key in instances) {\n if (instances.hasOwnProperty(key)) {\n instances[key].dispose();\n }\n }\n\n instances = {};\n }\n\n return this;\n}\n/**\n * Get zrender instance by id\n * @param {string} id zrender instance id\n * @return {module:zrender/ZRender}\n */\n\n\nfunction getInstance(id) {\n return instances[id];\n}\n\nfunction registerPainter(name, Ctor) {\n painterCtors[name] = Ctor;\n}\n\nfunction delInstance(id) {\n delete instances[id];\n}\n/**\n * @module zrender/ZRender\n */\n\n/**\n * @constructor\n * @alias module:zrender/ZRender\n * @param {string} id\n * @param {HTMLElement} dom\n * @param {Object} opts\n * @param {string} [opts.renderer='canvas'] 'canvas' or 'svg'\n * @param {number} [opts.devicePixelRatio]\n * @param {number} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Can be 'auto' (the same as null/undefined)\n */\n\n\nvar ZRender = function (id, dom, opts) {\n opts = opts || {};\n /**\n * @type {HTMLDomElement}\n */\n\n this.dom = dom;\n /**\n * @type {string}\n */\n\n this.id = id;\n var self = this;\n var storage = new Storage();\n var rendererType = opts.renderer; // TODO WebGL\n\n if (useVML) {\n if (!painterCtors.vml) {\n throw new Error('You need to require \\'zrender/vml/vml\\' to support IE8');\n }\n\n rendererType = 'vml';\n } else if (!rendererType || !painterCtors[rendererType]) {\n rendererType = 'canvas';\n }\n\n var painter = new painterCtors[rendererType](dom, storage, opts, id);\n this.storage = storage;\n this.painter = painter;\n var handerProxy = !env.node && !env.worker ? new HandlerProxy(painter.getViewportRoot(), painter.root) : null;\n this.handler = new Handler(storage, painter, handerProxy, painter.root);\n /**\n * @type {module:zrender/animation/Animation}\n */\n\n this.animation = new Animation({\n stage: {\n update: zrUtil.bind(this.flush, this)\n }\n });\n this.animation.start();\n /**\n * @type {boolean}\n * @private\n */\n\n this._needsRefresh; // 修改 storage.delFromStorage, 每次删除元素之前删除动画\n // FIXME 有点ugly\n\n var oldDelFromStorage = storage.delFromStorage;\n var oldAddToStorage = storage.addToStorage;\n\n storage.delFromStorage = function (el) {\n oldDelFromStorage.call(storage, el);\n el && el.removeSelfFromZr(self);\n };\n\n storage.addToStorage = function (el) {\n oldAddToStorage.call(storage, el);\n el.addSelfToZr(self);\n };\n};\n\nZRender.prototype = {\n constructor: ZRender,\n\n /**\n * 获取实例唯一标识\n * @return {string}\n */\n getId: function () {\n return this.id;\n },\n\n /**\n * 添加元素\n * @param {module:zrender/Element} el\n */\n add: function (el) {\n this.storage.addRoot(el);\n this._needsRefresh = true;\n },\n\n /**\n * 删除元素\n * @param {module:zrender/Element} el\n */\n remove: function (el) {\n this.storage.delRoot(el);\n this._needsRefresh = true;\n },\n\n /**\n * Change configuration of layer\n * @param {string} zLevel\n * @param {Object} config\n * @param {string} [config.clearColor=0] Clear color\n * @param {string} [config.motionBlur=false] If enable motion blur\n * @param {number} [config.lastFrameAlpha=0.7] Motion blur factor. Larger value cause longer trailer\n */\n configLayer: function (zLevel, config) {\n if (this.painter.configLayer) {\n this.painter.configLayer(zLevel, config);\n }\n\n this._needsRefresh = true;\n },\n\n /**\n * Set background color\n * @param {string} backgroundColor\n */\n setBackgroundColor: function (backgroundColor) {\n if (this.painter.setBackgroundColor) {\n this.painter.setBackgroundColor(backgroundColor);\n }\n\n this._needsRefresh = true;\n },\n\n /**\n * Repaint the canvas immediately\n */\n refreshImmediately: function () {\n // var start = new Date();\n // Clear needsRefresh ahead to avoid something wrong happens in refresh\n // Or it will cause zrender refreshes again and again.\n this._needsRefresh = this._needsRefreshHover = false;\n this.painter.refresh(); // Avoid trigger zr.refresh in Element#beforeUpdate hook\n\n this._needsRefresh = this._needsRefreshHover = false; // var end = new Date();\n // var log = document.getElementById('log');\n // if (log) {\n // log.innerHTML = log.innerHTML + '
' + (end - start);\n // }\n },\n\n /**\n * Mark and repaint the canvas in the next frame of browser\n */\n refresh: function () {\n this._needsRefresh = true;\n },\n\n /**\n * Perform all refresh\n */\n flush: function () {\n var triggerRendered;\n\n if (this._needsRefresh) {\n triggerRendered = true;\n this.refreshImmediately();\n }\n\n if (this._needsRefreshHover) {\n triggerRendered = true;\n this.refreshHoverImmediately();\n }\n\n triggerRendered && this.trigger('rendered');\n },\n\n /**\n * Add element to hover layer\n * @param {module:zrender/Element} el\n * @param {Object} style\n */\n addHover: function (el, style) {\n if (this.painter.addHover) {\n var elMirror = this.painter.addHover(el, style);\n this.refreshHover();\n return elMirror;\n }\n },\n\n /**\n * Add element from hover layer\n * @param {module:zrender/Element} el\n */\n removeHover: function (el) {\n if (this.painter.removeHover) {\n this.painter.removeHover(el);\n this.refreshHover();\n }\n },\n\n /**\n * Clear all hover elements in hover layer\n * @param {module:zrender/Element} el\n */\n clearHover: function () {\n if (this.painter.clearHover) {\n this.painter.clearHover();\n this.refreshHover();\n }\n },\n\n /**\n * Refresh hover in next frame\n */\n refreshHover: function () {\n this._needsRefreshHover = true;\n },\n\n /**\n * Refresh hover immediately\n */\n refreshHoverImmediately: function () {\n this._needsRefreshHover = false;\n this.painter.refreshHover && this.painter.refreshHover();\n },\n\n /**\n * Resize the canvas.\n * Should be invoked when container size is changed\n * @param {Object} [opts]\n * @param {number|string} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number|string} [opts.height] Can be 'auto' (the same as null/undefined)\n */\n resize: function (opts) {\n opts = opts || {};\n this.painter.resize(opts.width, opts.height);\n this.handler.resize();\n },\n\n /**\n * Stop and clear all animation immediately\n */\n clearAnimation: function () {\n this.animation.clear();\n },\n\n /**\n * Get container width\n */\n getWidth: function () {\n return this.painter.getWidth();\n },\n\n /**\n * Get container height\n */\n getHeight: function () {\n return this.painter.getHeight();\n },\n\n /**\n * Export the canvas as Base64 URL\n * @param {string} type\n * @param {string} [backgroundColor='#fff']\n * @return {string} Base64 URL\n */\n // toDataURL: function(type, backgroundColor) {\n // return this.painter.getRenderedCanvas({\n // backgroundColor: backgroundColor\n // }).toDataURL(type);\n // },\n\n /**\n * Converting a path to image.\n * It has much better performance of drawing image rather than drawing a vector path.\n * @param {module:zrender/graphic/Path} e\n * @param {number} width\n * @param {number} height\n */\n pathToImage: function (e, dpr) {\n return this.painter.pathToImage(e, dpr);\n },\n\n /**\n * Set default cursor\n * @param {string} [cursorStyle='default'] 例如 crosshair\n */\n setCursorStyle: function (cursorStyle) {\n this.handler.setCursorStyle(cursorStyle);\n },\n\n /**\n * Find hovered element\n * @param {number} x\n * @param {number} y\n * @return {Object} {target, topTarget}\n */\n findHover: function (x, y) {\n return this.handler.findHover(x, y);\n },\n\n /**\n * Bind event\n *\n * @param {string} eventName Event name\n * @param {Function} eventHandler Handler function\n * @param {Object} [context] Context object\n */\n on: function (eventName, eventHandler, context) {\n this.handler.on(eventName, eventHandler, context);\n },\n\n /**\n * Unbind event\n * @param {string} eventName Event name\n * @param {Function} [eventHandler] Handler function\n */\n off: function (eventName, eventHandler) {\n this.handler.off(eventName, eventHandler);\n },\n\n /**\n * Trigger event manually\n *\n * @param {string} eventName Event name\n * @param {event=} event Event object\n */\n trigger: function (eventName, event) {\n this.handler.trigger(eventName, event);\n },\n\n /**\n * Clear all objects and the canvas.\n */\n clear: function () {\n this.storage.delRoot();\n this.painter.clear();\n },\n\n /**\n * Dispose self.\n */\n dispose: function () {\n this.animation.stop();\n this.clear();\n this.storage.dispose();\n this.painter.dispose();\n this.handler.dispose();\n this.animation = this.storage = this.painter = this.handler = null;\n delInstance(this.id);\n }\n};\nexports.version = version;\nexports.init = init;\nexports.dispose = dispose;\nexports.getInstance = getInstance;\nexports.registerPainter = registerPainter;","\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 map = _util.map;\nvar isFunction = _util.isFunction;\nvar createHashMap = _util.createHashMap;\nvar noop = _util.noop;\n\nvar _task = require(\"./task\");\n\nvar createTask = _task.createTask;\n\nvar _component = require(\"../util/component\");\n\nvar getUID = _component.getUID;\n\nvar GlobalModel = require(\"../model/Global\");\n\nvar ExtensionAPI = require(\"../ExtensionAPI\");\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\n/**\n * @module echarts/stream/Scheduler\n */\n\n/**\n * @constructor\n */\nfunction Scheduler(ecInstance, api, dataProcessorHandlers, visualHandlers) {\n this.ecInstance = ecInstance;\n this.api = api;\n this.unfinished; // Fix current processors in case that in some rear cases that\n // processors might be registered after echarts instance created.\n // Register processors incrementally for a echarts instance is\n // not supported by this stream architecture.\n\n var dataProcessorHandlers = this._dataProcessorHandlers = dataProcessorHandlers.slice();\n var visualHandlers = this._visualHandlers = visualHandlers.slice();\n this._allHandlers = dataProcessorHandlers.concat(visualHandlers);\n /**\n * @private\n * @type {\n * [handlerUID: string]: {\n * seriesTaskMap?: {\n * [seriesUID: string]: Task\n * },\n * overallTask?: Task\n * }\n * }\n */\n\n this._stageTaskMap = createHashMap();\n}\n\nvar proto = Scheduler.prototype;\n/**\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} payload\n */\n\nproto.restoreData = function (ecModel, payload) {\n // TODO: Only restroe needed series and components, but not all components.\n // Currently `restoreData` of all of the series and component will be called.\n // But some independent components like `title`, `legend`, `graphic`, `toolbox`,\n // `tooltip`, `axisPointer`, etc, do not need series refresh when `setOption`,\n // and some components like coordinate system, axes, dataZoom, visualMap only\n // need their target series refresh.\n // (1) If we are implementing this feature some day, we should consider these cases:\n // if a data processor depends on a component (e.g., dataZoomProcessor depends\n // on the settings of `dataZoom`), it should be re-performed if the component\n // is modified by `setOption`.\n // (2) If a processor depends on sevral series, speicified by its `getTargetSeries`,\n // it should be re-performed when the result array of `getTargetSeries` changed.\n // We use `dependencies` to cover these issues.\n // (3) How to update target series when coordinate system related components modified.\n // TODO: simply the dirty mechanism? Check whether only the case here can set tasks dirty,\n // and this case all of the tasks will be set as dirty.\n ecModel.restoreData(payload); // Theoretically an overall task not only depends on each of its target series, but also\n // depends on all of the series.\n // The overall task is not in pipeline, and `ecModel.restoreData` only set pipeline tasks\n // dirty. If `getTargetSeries` of an overall task returns nothing, we should also ensure\n // that the overall task is set as dirty and to be performed, otherwise it probably cause\n // state chaos. So we have to set dirty of all of the overall tasks manually, otherwise it\n // probably cause state chaos (consider `dataZoomProcessor`).\n\n this._stageTaskMap.each(function (taskRecord) {\n var overallTask = taskRecord.overallTask;\n overallTask && overallTask.dirty();\n });\n}; // If seriesModel provided, incremental threshold is check by series data.\n\n\nproto.getPerformArgs = function (task, isBlock) {\n // For overall task\n if (!task.__pipeline) {\n return;\n }\n\n var pipeline = this._pipelineMap.get(task.__pipeline.id);\n\n var pCtx = pipeline.context;\n var incremental = !isBlock && pipeline.progressiveEnabled && (!pCtx || pCtx.progressiveRender) && task.__idxInPipeline > pipeline.blockIndex;\n var step = incremental ? pipeline.step : null;\n var modDataCount = pCtx && pCtx.modDataCount;\n var modBy = modDataCount != null ? Math.ceil(modDataCount / step) : null;\n return {\n step: step,\n modBy: modBy,\n modDataCount: modDataCount\n };\n};\n\nproto.getPipeline = function (pipelineId) {\n return this._pipelineMap.get(pipelineId);\n};\n/**\n * Current, progressive rendering starts from visual and layout.\n * Always detect render mode in the same stage, avoiding that incorrect\n * detection caused by data filtering.\n * Caution:\n * `updateStreamModes` use `seriesModel.getData()`.\n */\n\n\nproto.updateStreamModes = function (seriesModel, view) {\n var pipeline = this._pipelineMap.get(seriesModel.uid);\n\n var data = seriesModel.getData();\n var dataLen = data.count(); // `progressiveRender` means that can render progressively in each\n // animation frame. Note that some types of series do not provide\n // `view.incrementalPrepareRender` but support `chart.appendData`. We\n // use the term `incremental` but not `progressive` to describe the\n // case that `chart.appendData`.\n\n var progressiveRender = pipeline.progressiveEnabled && view.incrementalPrepareRender && dataLen >= pipeline.threshold;\n var large = seriesModel.get('large') && dataLen >= seriesModel.get('largeThreshold'); // TODO: modDataCount should not updated if `appendData`, otherwise cause whole repaint.\n // see `test/candlestick-large3.html`\n\n var modDataCount = seriesModel.get('progressiveChunkMode') === 'mod' ? dataLen : null;\n seriesModel.pipelineContext = pipeline.context = {\n progressiveRender: progressiveRender,\n modDataCount: modDataCount,\n large: large\n };\n};\n\nproto.restorePipelines = function (ecModel) {\n var scheduler = this;\n var pipelineMap = scheduler._pipelineMap = createHashMap();\n ecModel.eachSeries(function (seriesModel) {\n var progressive = seriesModel.getProgressive();\n var pipelineId = seriesModel.uid;\n pipelineMap.set(pipelineId, {\n id: pipelineId,\n head: null,\n tail: null,\n threshold: seriesModel.getProgressiveThreshold(),\n progressiveEnabled: progressive && !(seriesModel.preventIncremental && seriesModel.preventIncremental()),\n blockIndex: -1,\n step: Math.round(progressive || 700),\n count: 0\n });\n pipe(scheduler, seriesModel, seriesModel.dataTask);\n });\n};\n\nproto.prepareStageTasks = function () {\n var stageTaskMap = this._stageTaskMap;\n var ecModel = this.ecInstance.getModel();\n var api = this.api;\n each(this._allHandlers, function (handler) {\n var record = stageTaskMap.get(handler.uid) || stageTaskMap.set(handler.uid, []);\n handler.reset && createSeriesStageTask(this, handler, record, ecModel, api);\n handler.overallReset && createOverallStageTask(this, handler, record, ecModel, api);\n }, this);\n};\n\nproto.prepareView = function (view, model, ecModel, api) {\n var renderTask = view.renderTask;\n var context = renderTask.context;\n context.model = model;\n context.ecModel = ecModel;\n context.api = api;\n renderTask.__block = !view.incrementalPrepareRender;\n pipe(this, model, renderTask);\n};\n\nproto.performDataProcessorTasks = function (ecModel, payload) {\n // If we do not use `block` here, it should be considered when to update modes.\n performStageTasks(this, this._dataProcessorHandlers, ecModel, payload, {\n block: true\n });\n}; // opt\n// opt.visualType: 'visual' or 'layout'\n// opt.setDirty\n\n\nproto.performVisualTasks = function (ecModel, payload, opt) {\n performStageTasks(this, this._visualHandlers, ecModel, payload, opt);\n};\n\nfunction performStageTasks(scheduler, stageHandlers, ecModel, payload, opt) {\n opt = opt || {};\n var unfinished;\n each(stageHandlers, function (stageHandler, idx) {\n if (opt.visualType && opt.visualType !== stageHandler.visualType) {\n return;\n }\n\n var stageHandlerRecord = scheduler._stageTaskMap.get(stageHandler.uid);\n\n var seriesTaskMap = stageHandlerRecord.seriesTaskMap;\n var overallTask = stageHandlerRecord.overallTask;\n\n if (overallTask) {\n var overallNeedDirty;\n var agentStubMap = overallTask.agentStubMap;\n agentStubMap.each(function (stub) {\n if (needSetDirty(opt, stub)) {\n stub.dirty();\n overallNeedDirty = true;\n }\n });\n overallNeedDirty && overallTask.dirty();\n updatePayload(overallTask, payload);\n var performArgs = scheduler.getPerformArgs(overallTask, opt.block); // Execute stubs firstly, which may set the overall task dirty,\n // then execute the overall task. And stub will call seriesModel.setData,\n // which ensures that in the overallTask seriesModel.getData() will not\n // return incorrect data.\n\n agentStubMap.each(function (stub) {\n stub.perform(performArgs);\n });\n unfinished |= overallTask.perform(performArgs);\n } else if (seriesTaskMap) {\n seriesTaskMap.each(function (task, pipelineId) {\n if (needSetDirty(opt, task)) {\n task.dirty();\n }\n\n var performArgs = scheduler.getPerformArgs(task, opt.block); // FIXME\n // if intending to decalare `performRawSeries` in handlers, only\n // stream-independent (specifically, data item independent) operations can be\n // performed. Because is a series is filtered, most of the tasks will not\n // be performed. A stream-dependent operation probably cause wrong biz logic.\n // Perhaps we should not provide a separate callback for this case instead\n // of providing the config `performRawSeries`. The stream-dependent operaions\n // and stream-independent operations should better not be mixed.\n\n performArgs.skip = !stageHandler.performRawSeries && ecModel.isSeriesFiltered(task.context.model);\n updatePayload(task, payload);\n unfinished |= task.perform(performArgs);\n });\n }\n });\n\n function needSetDirty(opt, task) {\n return opt.setDirty && (!opt.dirtyMap || opt.dirtyMap.get(task.__pipeline.id));\n }\n\n scheduler.unfinished |= unfinished;\n}\n\nproto.performSeriesTasks = function (ecModel) {\n var unfinished;\n ecModel.eachSeries(function (seriesModel) {\n // Progress to the end for dataInit and dataRestore.\n unfinished |= seriesModel.dataTask.perform();\n });\n this.unfinished |= unfinished;\n};\n\nproto.plan = function () {\n // Travel pipelines, check block.\n this._pipelineMap.each(function (pipeline) {\n var task = pipeline.tail;\n\n do {\n if (task.__block) {\n pipeline.blockIndex = task.__idxInPipeline;\n break;\n }\n\n task = task.getUpstream();\n } while (task);\n });\n};\n\nvar updatePayload = proto.updatePayload = function (task, payload) {\n payload !== 'remain' && (task.context.payload = payload);\n};\n\nfunction createSeriesStageTask(scheduler, stageHandler, stageHandlerRecord, ecModel, api) {\n var seriesTaskMap = stageHandlerRecord.seriesTaskMap || (stageHandlerRecord.seriesTaskMap = createHashMap());\n var seriesType = stageHandler.seriesType;\n var getTargetSeries = stageHandler.getTargetSeries; // If a stageHandler should cover all series, `createOnAllSeries` should be declared mandatorily,\n // to avoid some typo or abuse. Otherwise if an extension do not specify a `seriesType`,\n // it works but it may cause other irrelevant charts blocked.\n\n if (stageHandler.createOnAllSeries) {\n ecModel.eachRawSeries(create);\n } else if (seriesType) {\n ecModel.eachRawSeriesByType(seriesType, create);\n } else if (getTargetSeries) {\n getTargetSeries(ecModel, api).each(create);\n }\n\n function create(seriesModel) {\n var pipelineId = seriesModel.uid; // Init tasks for each seriesModel only once.\n // Reuse original task instance.\n\n var task = seriesTaskMap.get(pipelineId) || seriesTaskMap.set(pipelineId, createTask({\n plan: seriesTaskPlan,\n reset: seriesTaskReset,\n count: seriesTaskCount\n }));\n task.context = {\n model: seriesModel,\n ecModel: ecModel,\n api: api,\n useClearVisual: stageHandler.isVisual && !stageHandler.isLayout,\n plan: stageHandler.plan,\n reset: stageHandler.reset,\n scheduler: scheduler\n };\n pipe(scheduler, seriesModel, task);\n } // Clear unused series tasks.\n\n\n var pipelineMap = scheduler._pipelineMap;\n seriesTaskMap.each(function (task, pipelineId) {\n if (!pipelineMap.get(pipelineId)) {\n task.dispose();\n seriesTaskMap.removeKey(pipelineId);\n }\n });\n}\n\nfunction createOverallStageTask(scheduler, stageHandler, stageHandlerRecord, ecModel, api) {\n var overallTask = stageHandlerRecord.overallTask = stageHandlerRecord.overallTask // For overall task, the function only be called on reset stage.\n || createTask({\n reset: overallTaskReset\n });\n overallTask.context = {\n ecModel: ecModel,\n api: api,\n overallReset: stageHandler.overallReset,\n scheduler: scheduler\n }; // Reuse orignal stubs.\n\n var agentStubMap = overallTask.agentStubMap = overallTask.agentStubMap || createHashMap();\n var seriesType = stageHandler.seriesType;\n var getTargetSeries = stageHandler.getTargetSeries;\n var overallProgress = true;\n var modifyOutputEnd = stageHandler.modifyOutputEnd; // An overall task with seriesType detected or has `getTargetSeries`, we add\n // stub in each pipelines, it will set the overall task dirty when the pipeline\n // progress. Moreover, to avoid call the overall task each frame (too frequent),\n // we set the pipeline block.\n\n if (seriesType) {\n ecModel.eachRawSeriesByType(seriesType, createStub);\n } else if (getTargetSeries) {\n getTargetSeries(ecModel, api).each(createStub);\n } // Otherwise, (usually it is legancy case), the overall task will only be\n // executed when upstream dirty. Otherwise the progressive rendering of all\n // pipelines will be disabled unexpectedly. But it still needs stubs to receive\n // dirty info from upsteam.\n else {\n overallProgress = false;\n each(ecModel.getSeries(), createStub);\n }\n\n function createStub(seriesModel) {\n var pipelineId = seriesModel.uid;\n var stub = agentStubMap.get(pipelineId);\n\n if (!stub) {\n stub = agentStubMap.set(pipelineId, createTask({\n reset: stubReset,\n onDirty: stubOnDirty\n })); // When the result of `getTargetSeries` changed, the overallTask\n // should be set as dirty and re-performed.\n\n overallTask.dirty();\n }\n\n stub.context = {\n model: seriesModel,\n overallProgress: overallProgress,\n modifyOutputEnd: modifyOutputEnd\n };\n stub.agent = overallTask;\n stub.__block = overallProgress;\n pipe(scheduler, seriesModel, stub);\n } // Clear unused stubs.\n\n\n var pipelineMap = scheduler._pipelineMap;\n agentStubMap.each(function (stub, pipelineId) {\n if (!pipelineMap.get(pipelineId)) {\n stub.dispose(); // When the result of `getTargetSeries` changed, the overallTask\n // should be set as dirty and re-performed.\n\n overallTask.dirty();\n agentStubMap.removeKey(pipelineId);\n }\n });\n}\n\nfunction overallTaskReset(context) {\n context.overallReset(context.ecModel, context.api, context.payload);\n}\n\nfunction stubReset(context, upstreamContext) {\n return context.overallProgress && stubProgress;\n}\n\nfunction stubProgress() {\n this.agent.dirty();\n this.getDownstream().dirty();\n}\n\nfunction stubOnDirty() {\n this.agent && this.agent.dirty();\n}\n\nfunction seriesTaskPlan(context) {\n return context.plan && context.plan(context.model, context.ecModel, context.api, context.payload);\n}\n\nfunction seriesTaskReset(context) {\n if (context.useClearVisual) {\n context.data.clearAllVisual();\n }\n\n var resetDefines = context.resetDefines = normalizeToArray(context.reset(context.model, context.ecModel, context.api, context.payload));\n return resetDefines.length > 1 ? map(resetDefines, function (v, idx) {\n return makeSeriesTaskProgress(idx);\n }) : singleSeriesTaskProgress;\n}\n\nvar singleSeriesTaskProgress = makeSeriesTaskProgress(0);\n\nfunction makeSeriesTaskProgress(resetDefineIdx) {\n return function (params, context) {\n var data = context.data;\n var resetDefine = context.resetDefines[resetDefineIdx];\n\n if (resetDefine && resetDefine.dataEach) {\n for (var i = params.start; i < params.end; i++) {\n resetDefine.dataEach(data, i);\n }\n } else if (resetDefine && resetDefine.progress) {\n resetDefine.progress(params, data);\n }\n };\n}\n\nfunction seriesTaskCount(context) {\n return context.data.count();\n}\n\nfunction pipe(scheduler, seriesModel, task) {\n var pipelineId = seriesModel.uid;\n\n var pipeline = scheduler._pipelineMap.get(pipelineId);\n\n !pipeline.head && (pipeline.head = task);\n pipeline.tail && pipeline.tail.pipe(task);\n pipeline.tail = task;\n task.__idxInPipeline = pipeline.count++;\n task.__pipeline = pipeline;\n}\n\nScheduler.wrapStageHandler = function (stageHandler, visualType) {\n if (isFunction(stageHandler)) {\n stageHandler = {\n overallReset: stageHandler,\n seriesType: detectSeriseType(stageHandler)\n };\n }\n\n stageHandler.uid = getUID('stageHandler');\n visualType && (stageHandler.visualType = visualType);\n return stageHandler;\n};\n/**\n * Only some legacy stage handlers (usually in echarts extensions) are pure function.\n * To ensure that they can work normally, they should work in block mode, that is,\n * they should not be started util the previous tasks finished. So they cause the\n * progressive rendering disabled. We try to detect the series type, to narrow down\n * the block range to only the series type they concern, but not all series.\n */\n\n\nfunction detectSeriseType(legacyFunc) {\n seriesType = null;\n\n try {\n // Assume there is no async when calling `eachSeriesByType`.\n legacyFunc(ecModelMock, apiMock);\n } catch (e) {}\n\n return seriesType;\n}\n\nvar ecModelMock = {};\nvar apiMock = {};\nvar seriesType;\nmockMethods(ecModelMock, GlobalModel);\nmockMethods(apiMock, ExtensionAPI);\n\necModelMock.eachSeriesByType = ecModelMock.eachRawSeriesByType = function (type) {\n seriesType = type;\n};\n\necModelMock.eachComponent = function (cond) {\n if (cond.mainType === 'series' && cond.subType) {\n seriesType = cond.subType;\n }\n};\n\nfunction mockMethods(target, Clz) {\n /* eslint-disable */\n for (var name in Clz.prototype) {\n // Do not use hasOwnProperty\n target[name] = noop;\n }\n /* eslint-enable */\n\n}\n\nvar _default = Scheduler;\nmodule.exports = _default;","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\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.>}\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 * @module zrender/core/util\n */\n// 用于处理merge时无法遍历Date等对象的问题\nvar BUILTIN_OBJECT = {\n '[object Function]': 1,\n '[object RegExp]': 1,\n '[object Date]': 1,\n '[object Error]': 1,\n '[object CanvasGradient]': 1,\n '[object CanvasPattern]': 1,\n // For node-canvas\n '[object Image]': 1,\n '[object Canvas]': 1\n};\nvar TYPED_ARRAY = {\n '[object Int8Array]': 1,\n '[object Uint8Array]': 1,\n '[object Uint8ClampedArray]': 1,\n '[object Int16Array]': 1,\n '[object Uint16Array]': 1,\n '[object Int32Array]': 1,\n '[object Uint32Array]': 1,\n '[object Float32Array]': 1,\n '[object Float64Array]': 1\n};\nvar objToString = Object.prototype.toString;\nvar arrayProto = Array.prototype;\nvar nativeForEach = arrayProto.forEach;\nvar nativeFilter = arrayProto.filter;\nvar nativeSlice = arrayProto.slice;\nvar nativeMap = arrayProto.map;\nvar nativeReduce = arrayProto.reduce; // Avoid assign to an exported variable, for transforming to cjs.\n\nvar methods = {};\n\nfunction $override(name, fn) {\n // Clear ctx instance for different environment\n if (name === 'createCanvas') {\n _ctx = null;\n }\n\n methods[name] = fn;\n}\n/**\n * Those data types can be cloned:\n * Plain object, Array, TypedArray, number, string, null, undefined.\n * Those data types will be assgined using the orginal data:\n * BUILTIN_OBJECT\n * Instance of user defined class will be cloned to a plain object, without\n * properties in prototype.\n * Other data types is not supported (not sure what will happen).\n *\n * Caution: do not support clone Date, for performance consideration.\n * (There might be a large number of date in `series.data`).\n * So date should not be modified in and out of echarts.\n *\n * @param {*} source\n * @return {*} new\n */\n\n\nfunction clone(source) {\n if (source == null || typeof source !== 'object') {\n return source;\n }\n\n var result = source;\n var typeStr = objToString.call(source);\n\n if (typeStr === '[object Array]') {\n if (!isPrimitive(source)) {\n result = [];\n\n for (var i = 0, len = source.length; i < len; i++) {\n result[i] = clone(source[i]);\n }\n }\n } else if (TYPED_ARRAY[typeStr]) {\n if (!isPrimitive(source)) {\n var Ctor = source.constructor;\n\n if (source.constructor.from) {\n result = Ctor.from(source);\n } else {\n result = new Ctor(source.length);\n\n for (var i = 0, len = source.length; i < len; i++) {\n result[i] = clone(source[i]);\n }\n }\n }\n } else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) {\n result = {};\n\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n result[key] = clone(source[key]);\n }\n }\n }\n\n return result;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} target\n * @param {*} source\n * @param {boolean} [overwrite=false]\n */\n\n\nfunction merge(target, source, overwrite) {\n // We should escapse that source is string\n // and enter for ... in ...\n if (!isObject(source) || !isObject(target)) {\n return overwrite ? clone(source) : target;\n }\n\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n var targetProp = target[key];\n var sourceProp = source[key];\n\n if (isObject(sourceProp) && isObject(targetProp) && !isArray(sourceProp) && !isArray(targetProp) && !isDom(sourceProp) && !isDom(targetProp) && !isBuiltInObject(sourceProp) && !isBuiltInObject(targetProp) && !isPrimitive(sourceProp) && !isPrimitive(targetProp)) {\n // 如果需要递归覆盖,就递归调用merge\n merge(targetProp, sourceProp, overwrite);\n } else if (overwrite || !(key in target)) {\n // 否则只处理overwrite为true,或者在目标对象中没有此属性的情况\n // NOTE,在 target[key] 不存在的时候也是直接覆盖\n target[key] = clone(source[key], true);\n }\n }\n }\n\n return target;\n}\n/**\n * @param {Array} targetAndSources The first item is target, and the rests are source.\n * @param {boolean} [overwrite=false]\n * @return {*} target\n */\n\n\nfunction mergeAll(targetAndSources, overwrite) {\n var result = targetAndSources[0];\n\n for (var i = 1, len = targetAndSources.length; i < len; i++) {\n result = merge(result, targetAndSources[i], overwrite);\n }\n\n return result;\n}\n/**\n * @param {*} target\n * @param {*} source\n * @memberOf module:zrender/core/util\n */\n\n\nfunction extend(target, source) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n target[key] = source[key];\n }\n }\n\n return target;\n}\n/**\n * @param {*} target\n * @param {*} source\n * @param {boolean} [overlay=false]\n * @memberOf module:zrender/core/util\n */\n\n\nfunction defaults(target, source, overlay) {\n for (var key in source) {\n if (source.hasOwnProperty(key) && (overlay ? source[key] != null : target[key] == null)) {\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nvar createCanvas = function () {\n return methods.createCanvas();\n};\n\nmethods.createCanvas = function () {\n return document.createElement('canvas');\n}; // FIXME\n\n\nvar _ctx;\n\nfunction getContext() {\n if (!_ctx) {\n // Use util.createCanvas instead of createCanvas\n // because createCanvas may be overwritten in different environment\n _ctx = createCanvas().getContext('2d');\n }\n\n return _ctx;\n}\n/**\n * 查询数组中元素的index\n * @memberOf module:zrender/core/util\n */\n\n\nfunction indexOf(array, value) {\n if (array) {\n if (array.indexOf) {\n return array.indexOf(value);\n }\n\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n }\n\n return -1;\n}\n/**\n * 构造类继承关系\n *\n * @memberOf module:zrender/core/util\n * @param {Function} clazz 源类\n * @param {Function} baseClazz 基类\n */\n\n\nfunction inherits(clazz, baseClazz) {\n var clazzPrototype = clazz.prototype;\n\n function F() {}\n\n F.prototype = baseClazz.prototype;\n clazz.prototype = new F();\n\n for (var prop in clazzPrototype) {\n if (clazzPrototype.hasOwnProperty(prop)) {\n clazz.prototype[prop] = clazzPrototype[prop];\n }\n }\n\n clazz.prototype.constructor = clazz;\n clazz.superClass = baseClazz;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Object|Function} target\n * @param {Object|Function} sorce\n * @param {boolean} overlay\n */\n\n\nfunction mixin(target, source, overlay) {\n target = 'prototype' in target ? target.prototype : target;\n source = 'prototype' in source ? source.prototype : source;\n defaults(target, source, overlay);\n}\n/**\n * Consider typed array.\n * @param {Array|TypedArray} data\n */\n\n\nfunction isArrayLike(data) {\n if (!data) {\n return;\n }\n\n if (typeof data === 'string') {\n return false;\n }\n\n return typeof data.length === 'number';\n}\n/**\n * 数组或对象遍历\n * @memberOf module:zrender/core/util\n * @param {Object|Array} obj\n * @param {Function} cb\n * @param {*} [context]\n */\n\n\nfunction each(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.forEach && obj.forEach === nativeForEach) {\n obj.forEach(cb, context);\n } else if (obj.length === +obj.length) {\n for (var i = 0, len = obj.length; i < len; i++) {\n cb.call(context, obj[i], i, obj);\n }\n } else {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n cb.call(context, obj[key], key, obj);\n }\n }\n }\n}\n/**\n * 数组映射\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction map(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.map && obj.map === nativeMap) {\n return obj.map(cb, context);\n } else {\n var result = [];\n\n for (var i = 0, len = obj.length; i < len; i++) {\n result.push(cb.call(context, obj[i], i, obj));\n }\n\n return result;\n }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {Object} [memo]\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction reduce(obj, cb, memo, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.reduce && obj.reduce === nativeReduce) {\n return obj.reduce(cb, memo, context);\n } else {\n for (var i = 0, len = obj.length; i < len; i++) {\n memo = cb.call(context, memo, obj[i], i, obj);\n }\n\n return memo;\n }\n}\n/**\n * 数组过滤\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction filter(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.filter && obj.filter === nativeFilter) {\n return obj.filter(cb, context);\n } else {\n var result = [];\n\n for (var i = 0, len = obj.length; i < len; i++) {\n if (cb.call(context, obj[i], i, obj)) {\n result.push(obj[i]);\n }\n }\n\n return result;\n }\n}\n/**\n * 数组项查找\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {*}\n */\n\n\nfunction find(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n for (var i = 0, len = obj.length; i < len; i++) {\n if (cb.call(context, obj[i], i, obj)) {\n return obj[i];\n }\n }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Function} func\n * @param {*} context\n * @return {Function}\n */\n\n\nfunction bind(func, context) {\n var args = nativeSlice.call(arguments, 2);\n return function () {\n return func.apply(context, args.concat(nativeSlice.call(arguments)));\n };\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Function} func\n * @return {Function}\n */\n\n\nfunction curry(func) {\n var args = nativeSlice.call(arguments, 1);\n return function () {\n return func.apply(this, args.concat(nativeSlice.call(arguments)));\n };\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isArray(value) {\n return objToString.call(value) === '[object Array]';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isString(value) {\n return objToString.call(value) === '[object String]';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return type === 'function' || !!value && type === 'object';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isBuiltInObject(value) {\n return !!BUILTIN_OBJECT[objToString.call(value)];\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isTypedArray(value) {\n return !!TYPED_ARRAY[objToString.call(value)];\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isDom(value) {\n return typeof value === 'object' && typeof value.nodeType === 'number' && typeof value.ownerDocument === 'object';\n}\n/**\n * Whether is exactly NaN. Notice isNaN('a') returns true.\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction eqNaN(value) {\n /* eslint-disable-next-line no-self-compare */\n return value !== value;\n}\n/**\n * If value1 is not null, then return value1, otherwise judget rest of values.\n * Low performance.\n * @memberOf module:zrender/core/util\n * @return {*} Final value\n */\n\n\nfunction retrieve(values) {\n for (var i = 0, len = arguments.length; i < len; i++) {\n if (arguments[i] != null) {\n return arguments[i];\n }\n }\n}\n\nfunction retrieve2(value0, value1) {\n return value0 != null ? value0 : value1;\n}\n\nfunction retrieve3(value0, value1, value2) {\n return value0 != null ? value0 : value1 != null ? value1 : value2;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Array} arr\n * @param {number} startIndex\n * @param {number} endIndex\n * @return {Array}\n */\n\n\nfunction slice() {\n return Function.call.apply(nativeSlice, arguments);\n}\n/**\n * Normalize css liked array configuration\n * e.g.\n * 3 => [3, 3, 3, 3]\n * [4, 2] => [4, 2, 4, 2]\n * [4, 3, 2] => [4, 3, 2, 3]\n * @param {number|Array.} val\n * @return {Array.}\n */\n\n\nfunction normalizeCssArray(val) {\n if (typeof val === 'number') {\n return [val, val, val, val];\n }\n\n var len = val.length;\n\n if (len === 2) {\n // vertical | horizontal\n return [val[0], val[1], val[0], val[1]];\n } else if (len === 3) {\n // top | horizontal | bottom\n return [val[0], val[1], val[2], val[1]];\n }\n\n return val;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {boolean} condition\n * @param {string} message\n */\n\n\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(message);\n }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {string} str string to be trimed\n * @return {string} trimed string\n */\n\n\nfunction trim(str) {\n if (str == null) {\n return null;\n } else if (typeof str.trim === 'function') {\n return str.trim();\n } else {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n}\n\nvar primitiveKey = '__ec_primitive__';\n/**\n * Set an object as primitive to be ignored traversing children in clone or merge\n */\n\nfunction setAsPrimitive(obj) {\n obj[primitiveKey] = true;\n}\n\nfunction isPrimitive(obj) {\n return obj[primitiveKey];\n}\n/**\n * @constructor\n * @param {Object} obj Only apply `ownProperty`.\n */\n\n\nfunction HashMap(obj) {\n var isArr = isArray(obj); // Key should not be set on this, otherwise\n // methods get/set/... may be overrided.\n\n this.data = {};\n var thisMap = this;\n obj instanceof HashMap ? obj.each(visit) : obj && each(obj, visit);\n\n function visit(value, key) {\n isArr ? thisMap.set(value, key) : thisMap.set(key, value);\n }\n}\n\nHashMap.prototype = {\n constructor: HashMap,\n // Do not provide `has` method to avoid defining what is `has`.\n // (We usually treat `null` and `undefined` as the same, different\n // from ES6 Map).\n get: function (key) {\n return this.data.hasOwnProperty(key) ? this.data[key] : null;\n },\n set: function (key, value) {\n // Comparing with invocation chaining, `return value` is more commonly\n // used in this case: `var someVal = map.set('a', genVal());`\n return this.data[key] = value;\n },\n // Although util.each can be performed on this hashMap directly, user\n // should not use the exposed keys, who are prefixed.\n each: function (cb, context) {\n context !== void 0 && (cb = bind(cb, context));\n /* eslint-disable guard-for-in */\n\n for (var key in this.data) {\n this.data.hasOwnProperty(key) && cb(this.data[key], key);\n }\n /* eslint-enable guard-for-in */\n\n },\n // Do not use this method if performance sensitive.\n removeKey: function (key) {\n delete this.data[key];\n }\n};\n\nfunction createHashMap(obj) {\n return new HashMap(obj);\n}\n\nfunction concatArray(a, b) {\n var newArray = new a.constructor(a.length + b.length);\n\n for (var i = 0; i < a.length; i++) {\n newArray[i] = a[i];\n }\n\n var offset = a.length;\n\n for (i = 0; i < b.length; i++) {\n newArray[i + offset] = b[i];\n }\n\n return newArray;\n}\n\nfunction noop() {}\n\nexports.$override = $override;\nexports.clone = clone;\nexports.merge = merge;\nexports.mergeAll = mergeAll;\nexports.extend = extend;\nexports.defaults = defaults;\nexports.createCanvas = createCanvas;\nexports.getContext = getContext;\nexports.indexOf = indexOf;\nexports.inherits = inherits;\nexports.mixin = mixin;\nexports.isArrayLike = isArrayLike;\nexports.each = each;\nexports.map = map;\nexports.reduce = reduce;\nexports.filter = filter;\nexports.find = find;\nexports.bind = bind;\nexports.curry = curry;\nexports.isArray = isArray;\nexports.isFunction = isFunction;\nexports.isString = isString;\nexports.isObject = isObject;\nexports.isBuiltInObject = isBuiltInObject;\nexports.isTypedArray = isTypedArray;\nexports.isDom = isDom;\nexports.eqNaN = eqNaN;\nexports.retrieve = retrieve;\nexports.retrieve2 = retrieve2;\nexports.retrieve3 = retrieve3;\nexports.slice = slice;\nexports.normalizeCssArray = normalizeCssArray;\nexports.assert = assert;\nexports.trim = trim;\nexports.setAsPrimitive = setAsPrimitive;\nexports.isPrimitive = isPrimitive;\nexports.createHashMap = createHashMap;\nexports.concatArray = concatArray;\nexports.noop = noop;","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = constructorRegExp.exec;\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(function () { /* empty */ });\n\nvar isConstructorModern = function (argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(Object, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function (argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n // we can't check .prototype since constructors produced by .bind haven't it\n } return INCORRECT_TO_STRING || !!exec.call(constructorRegExp, inspectSource(argument));\n};\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\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*/\nvar defaultOption = {\n show: true,\n zlevel: 0,\n z: 0,\n // Inverse the axis.\n inverse: false,\n // Axis name displayed.\n name: '',\n // 'start' | 'middle' | 'end'\n nameLocation: 'end',\n // By degree. By defualt auto rotate by nameLocation.\n nameRotate: null,\n nameTruncate: {\n maxWidth: null,\n ellipsis: '...',\n placeholder: '.'\n },\n // Use global text style by default.\n nameTextStyle: {},\n // The gap between axisName and axisLine.\n nameGap: 15,\n // Default `false` to support tooltip.\n silent: false,\n // Default `false` to avoid legacy user event listener fail.\n triggerEvent: false,\n tooltip: {\n show: false\n },\n axisPointer: {},\n axisLine: {\n show: true,\n onZero: true,\n onZeroAxisIndex: null,\n lineStyle: {\n color: '#333',\n width: 1,\n type: 'solid'\n },\n // The arrow at both ends the the axis.\n symbol: ['none', 'none'],\n symbolSize: [10, 15]\n },\n axisTick: {\n show: true,\n // Whether axisTick is inside the grid or outside the grid.\n inside: false,\n // The length of axisTick.\n length: 5,\n lineStyle: {\n width: 1\n }\n },\n axisLabel: {\n show: true,\n // Whether axisLabel is inside the grid or outside the grid.\n inside: false,\n rotate: 0,\n // true | false | null/undefined (auto)\n showMinLabel: null,\n // true | false | null/undefined (auto)\n showMaxLabel: null,\n margin: 8,\n // formatter: null,\n fontSize: 12\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: ['#ccc'],\n width: 1,\n type: 'solid'\n }\n },\n splitArea: {\n show: false,\n areaStyle: {\n color: ['rgba(250,250,250,0.3)', 'rgba(200,200,200,0.3)']\n }\n }\n};\nvar axisDefault = {};\naxisDefault.categoryAxis = zrUtil.merge({\n // The gap at both ends of the axis. For categoryAxis, boolean.\n boundaryGap: true,\n // Set false to faster category collection.\n // Only usefull in the case like: category is\n // ['2012-01-01', '2012-01-02', ...], where the input\n // data has been ensured not duplicate and is large data.\n // null means \"auto\":\n // if axis.data provided, do not deduplication,\n // else do deduplication.\n deduplication: null,\n // splitArea: {\n // show: false\n // },\n splitLine: {\n show: false\n },\n axisTick: {\n // If tick is align with label when boundaryGap is true\n alignWithLabel: false,\n interval: 'auto'\n },\n axisLabel: {\n interval: 'auto'\n }\n}, defaultOption);\naxisDefault.valueAxis = zrUtil.merge({\n // The gap at both ends of the axis. For value axis, [GAP, GAP], where\n // `GAP` can be an absolute pixel number (like `35`), or percent (like `'30%'`)\n boundaryGap: [0, 0],\n // TODO\n // min/max: [30, datamin, 60] or [20, datamin] or [datamin, 60]\n // Min value of the axis. can be:\n // + a number\n // + 'dataMin': use the min value in data.\n // + null/undefined: auto decide min value (consider pretty look and boundaryGap).\n // min: null,\n // Max value of the axis. can be:\n // + a number\n // + 'dataMax': use the max value in data.\n // + null/undefined: auto decide max value (consider pretty look and boundaryGap).\n // max: null,\n // Readonly prop, specifies start value of the range when using data zoom.\n // rangeStart: null\n // Readonly prop, specifies end value of the range when using data zoom.\n // rangeEnd: null\n // Optional value can be:\n // + `false`: always include value 0.\n // + `true`: the extent do not consider value 0.\n // scale: false,\n // AxisTick and axisLabel and splitLine are caculated based on splitNumber.\n splitNumber: 5,\n // Interval specifies the span of the ticks is mandatorily.\n // interval: null\n // Specify min interval when auto calculate tick interval.\n // minInterval: null\n // Specify max interval when auto calculate tick interval.\n // maxInterval: null\n minorTick: {\n // Minor tick, not available for cateogry axis.\n show: false,\n // Split number of minor ticks. The value should be in range of (0, 100)\n splitNumber: 5,\n // Lenght of minor tick\n length: 3,\n // Same inside with axisTick\n // Line style\n lineStyle: {// Default to be same with axisTick\n }\n },\n minorSplitLine: {\n show: false,\n lineStyle: {\n color: '#eee',\n width: 1\n }\n }\n}, defaultOption);\naxisDefault.timeAxis = zrUtil.defaults({\n scale: true,\n min: 'dataMin',\n max: 'dataMax'\n}, axisDefault.valueAxis);\naxisDefault.logAxis = zrUtil.defaults({\n scale: true,\n logBase: 10\n}, axisDefault.valueAxis);\nvar _default = axisDefault;\nmodule.exports = _default;","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : String(key);\n};\n","/**\n * 缓动代码来自 https://github.com/sole/tween.js/blob/master/src/Tween.js\n * @see http://sole.github.io/tween.js/examples/03_graphs.html\n * @exports zrender/animation/easing\n */\nvar easing = {\n /**\n * @param {number} k\n * @return {number}\n */\n linear: function (k) {\n return k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quadraticIn: function (k) {\n return k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quadraticOut: function (k) {\n return k * (2 - k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quadraticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k;\n }\n\n return -0.5 * (--k * (k - 2) - 1);\n },\n // 三次方的缓动(t^3)\n\n /**\n * @param {number} k\n * @return {number}\n */\n cubicIn: function (k) {\n return k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n cubicOut: function (k) {\n return --k * k * k + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n cubicInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k;\n }\n\n return 0.5 * ((k -= 2) * k * k + 2);\n },\n // 四次方的缓动(t^4)\n\n /**\n * @param {number} k\n * @return {number}\n */\n quarticIn: function (k) {\n return k * k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quarticOut: function (k) {\n return 1 - --k * k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quarticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k * k;\n }\n\n return -0.5 * ((k -= 2) * k * k * k - 2);\n },\n // 五次方的缓动(t^5)\n\n /**\n * @param {number} k\n * @return {number}\n */\n quinticIn: function (k) {\n return k * k * k * k * k;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quinticOut: function (k) {\n return --k * k * k * k * k + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n quinticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k * k * k;\n }\n\n return 0.5 * ((k -= 2) * k * k * k * k + 2);\n },\n // 正弦曲线的缓动(sin(t))\n\n /**\n * @param {number} k\n * @return {number}\n */\n sinusoidalIn: function (k) {\n return 1 - Math.cos(k * Math.PI / 2);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n sinusoidalOut: function (k) {\n return Math.sin(k * Math.PI / 2);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n sinusoidalInOut: function (k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n },\n // 指数曲线的缓动(2^t)\n\n /**\n * @param {number} k\n * @return {number}\n */\n exponentialIn: function (k) {\n return k === 0 ? 0 : Math.pow(1024, k - 1);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n exponentialOut: function (k) {\n return k === 1 ? 1 : 1 - Math.pow(2, -10 * k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n exponentialInOut: function (k) {\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if ((k *= 2) < 1) {\n return 0.5 * Math.pow(1024, k - 1);\n }\n\n return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2);\n },\n // 圆形曲线的缓动(sqrt(1-t^2))\n\n /**\n * @param {number} k\n * @return {number}\n */\n circularIn: function (k) {\n return 1 - Math.sqrt(1 - k * k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n circularOut: function (k) {\n return Math.sqrt(1 - --k * k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n circularInOut: function (k) {\n if ((k *= 2) < 1) {\n return -0.5 * (Math.sqrt(1 - k * k) - 1);\n }\n\n return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);\n },\n // 创建类似于弹簧在停止前来回振荡的动画\n\n /**\n * @param {number} k\n * @return {number}\n */\n elasticIn: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n\n return -(a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n elasticOut: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n\n return a * Math.pow(2, -10 * k) * Math.sin((k - s) * (2 * Math.PI) / p) + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n elasticInOut: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n\n if (k === 0) {\n return 0;\n }\n\n if (k === 1) {\n return 1;\n }\n\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n } else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n\n if ((k *= 2) < 1) {\n return -0.5 * (a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));\n }\n\n return a * Math.pow(2, -10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1;\n },\n // 在某一动画开始沿指示的路径进行动画处理前稍稍收回该动画的移动\n\n /**\n * @param {number} k\n * @return {number}\n */\n backIn: function (k) {\n var s = 1.70158;\n return k * k * ((s + 1) * k - s);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n backOut: function (k) {\n var s = 1.70158;\n return --k * k * ((s + 1) * k + s) + 1;\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n backInOut: function (k) {\n var s = 1.70158 * 1.525;\n\n if ((k *= 2) < 1) {\n return 0.5 * (k * k * ((s + 1) * k - s));\n }\n\n return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);\n },\n // 创建弹跳效果\n\n /**\n * @param {number} k\n * @return {number}\n */\n bounceIn: function (k) {\n return 1 - easing.bounceOut(1 - k);\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n bounceOut: function (k) {\n if (k < 1 / 2.75) {\n return 7.5625 * k * k;\n } else if (k < 2 / 2.75) {\n return 7.5625 * (k -= 1.5 / 2.75) * k + 0.75;\n } else if (k < 2.5 / 2.75) {\n return 7.5625 * (k -= 2.25 / 2.75) * k + 0.9375;\n } else {\n return 7.5625 * (k -= 2.625 / 2.75) * k + 0.984375;\n }\n },\n\n /**\n * @param {number} k\n * @return {number}\n */\n bounceInOut: function (k) {\n if (k < 0.5) {\n return easing.bounceIn(k * 2) * 0.5;\n }\n\n return easing.bounceOut(k * 2 - 1) * 0.5 + 0.5;\n }\n};\nvar _default = easing;\nmodule.exports = _default;","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n if (DOMIterables[COLLECTION_NAME]) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);\n }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card',{attrs:{\"title\":\"Số dư\"}},[_c('div',{staticClass:\"d-flex justify-content-between flex-wrap\"},[_c('div',{staticClass:\"mb-1 mb-sm-0\"},[_c('span',{staticClass:\"text-muted\"},[_c('b-form-select',{on:{\"change\":_vm.changeStat},model:{value:(_vm.stat),callback:function ($$v) {_vm.stat=$$v},expression:\"stat\"}},[_c('b-form-select-option',{attrs:{\"value\":\"today\"}},[_vm._v(\"Hôm nay\")]),_c('b-form-select-option',{attrs:{\"value\":\"week\"}},[_vm._v(\"Tuần này\")]),_c('b-form-select-option',{attrs:{\"value\":\"month\"}},[_vm._v(\"Tháng Này\")]),_c('b-form-select-option',{attrs:{\"value\":\"yesterday\"}},[_vm._v(\"Hôm qua\")]),_c('b-form-select-option',{attrs:{\"value\":\"last_week\"}},[_vm._v(\"Tuần trước\")]),_c('b-form-select-option',{attrs:{\"value\":\"last_month\"}},[_vm._v(\"Tháng trước\")])],1)],1)]),_c('div',{staticClass:\"d-flex align-content-center mb-1 mb-sm-0\"},[_c('h1',{staticClass:\"font-weight-bolder \"},[_vm._v(\" \"+_vm._s(_vm.balance)+\" \"+_vm._s(_vm.unit_money)+\" \")]),_c('div',{staticClass:\"pt-25 ml-75\"},[_c('b-button',{attrs:{\"variant\":\"success\",\"size\":\"sm\"},on:{\"click\":_vm.refresh}},[(!_vm.loading)?_c('feather-icon',{staticClass:\"text-danger align-middle\",attrs:{\"icon\":\"RefreshCcwIcon\",\"size\":\"12\"}}):_vm._e(),(_vm.loading)?_c('b-spinner',{attrs:{\"small\":\"\"}}):_vm._e(),_vm._v(\" Tải lại\")],1)],1)])]),_c('b-overlay',{attrs:{\"show\":_vm.loading}},[(_vm.option)?_c('app-echart-line',{attrs:{\"option-data\":_vm.option}}):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('e-charts',{attrs:{\"options\":_vm.line,\"autoresize\":\"\",\"theme\":\"theme-color\",\"auto-resize\":\"\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"echarts\"})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","let raf = null;\nfunction requestAnimationFrame (callback) {\n if (!raf) {\n raf = (\n window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n function (callback) {\n return setTimeout(callback, 16)\n }\n ).bind(window);\n }\n return raf(callback)\n}\n\nlet caf = null;\nfunction cancelAnimationFrame (id) {\n if (!caf) {\n caf = (\n window.cancelAnimationFrame ||\n window.webkitCancelAnimationFrame ||\n window.mozCancelAnimationFrame ||\n function (id) {\n clearTimeout(id);\n }\n ).bind(window);\n }\n\n caf(id);\n}\n\nfunction createStyles (styleText) {\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (style.styleSheet) {\n style.styleSheet.cssText = styleText;\n } else {\n style.appendChild(document.createTextNode(styleText));\n }\n (document.querySelector('head') || document.body).appendChild(style);\n return style\n}\n\nfunction createElement (tagName, props = {}) {\n let elem = document.createElement(tagName);\n Object.keys(props).forEach(key => {\n elem[key] = props[key];\n });\n return elem\n}\n\nfunction getComputedStyle (elem, prop, pseudo) {\n // for older versions of Firefox, `getComputedStyle` required\n // the second argument and may return `null` for some elements\n // when `display: none`\n let computedStyle = window.getComputedStyle(elem, pseudo || null) || {\n display: 'none'\n };\n\n return computedStyle[prop]\n}\n\nfunction getRenderInfo (elem) {\n if (!document.documentElement.contains(elem)) {\n return {\n detached: true,\n rendered: false\n }\n }\n\n let current = elem;\n while (current !== document) {\n if (getComputedStyle(current, 'display') === 'none') {\n return {\n detached: false,\n rendered: false\n }\n }\n current = current.parentNode;\n }\n\n return {\n detached: false,\n rendered: true\n }\n}\n\nvar css = \".resize-triggers{visibility:hidden;opacity:0}.resize-contract-trigger,.resize-contract-trigger:before,.resize-expand-trigger,.resize-triggers{content:\\\"\\\";position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden}.resize-contract-trigger,.resize-expand-trigger{background:#eee;overflow:auto}.resize-contract-trigger:before{width:200%;height:200%}\";\n\nlet total = 0;\nlet style = null;\n\nfunction addListener (elem, callback) {\n if (!elem.__resize_mutation_handler__) {\n elem.__resize_mutation_handler__ = handleMutation.bind(elem);\n }\n\n let listeners = elem.__resize_listeners__;\n\n if (!listeners) {\n elem.__resize_listeners__ = [];\n if (window.ResizeObserver) {\n let { offsetWidth, offsetHeight } = elem;\n let ro = new ResizeObserver(() => {\n if (!elem.__resize_observer_triggered__) {\n elem.__resize_observer_triggered__ = true;\n if (elem.offsetWidth === offsetWidth && elem.offsetHeight === offsetHeight) {\n return\n }\n }\n runCallbacks(elem);\n });\n\n // initially display none won't trigger ResizeObserver callback\n let { detached, rendered } = getRenderInfo(elem);\n elem.__resize_observer_triggered__ = detached === false && rendered === false;\n elem.__resize_observer__ = ro;\n ro.observe(elem);\n } else if (elem.attachEvent && elem.addEventListener) {\n // targeting IE9/10\n elem.__resize_legacy_resize_handler__ = function handleLegacyResize () {\n runCallbacks(elem);\n };\n elem.attachEvent('onresize', elem.__resize_legacy_resize_handler__);\n document.addEventListener('DOMSubtreeModified', elem.__resize_mutation_handler__);\n } else {\n if (!total) {\n style = createStyles(css);\n }\n initTriggers(elem);\n\n elem.__resize_rendered__ = getRenderInfo(elem).rendered;\n if (window.MutationObserver) {\n let mo = new MutationObserver(elem.__resize_mutation_handler__);\n mo.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n elem.__resize_mutation_observer__ = mo;\n }\n }\n }\n\n elem.__resize_listeners__.push(callback);\n total++;\n}\n\nfunction removeListener (elem, callback) {\n // targeting IE9/10\n if (elem.detachEvent && elem.removeEventListener) {\n elem.detachEvent('onresize', elem.__resize_legacy_resize_handler__);\n document.removeEventListener('DOMSubtreeModified', elem.__resize_mutation_handler__);\n return\n }\n\n let listeners = elem.__resize_listeners__;\n if (!listeners) {\n return\n }\n listeners.splice(listeners.indexOf(callback), 1);\n\n if (!listeners.length) {\n if (elem.__resize_observer__) {\n elem.__resize_observer__.unobserve(elem);\n elem.__resize_observer__.disconnect();\n elem.__resize_observer__ = null;\n } else {\n if (elem.__resize_mutation_observer__) {\n elem.__resize_mutation_observer__.disconnect();\n elem.__resize_mutation_observer__ = null;\n }\n elem.removeEventListener('scroll', handleScroll);\n elem.removeChild(elem.__resize_triggers__.triggers);\n elem.__resize_triggers__ = null;\n }\n elem.__resize_listeners__ = null;\n }\n\n if (!--total && style) {\n style.parentNode.removeChild(style);\n }\n}\n\nfunction getUpdatedSize (elem) {\n let { width, height } = elem.__resize_last__;\n let { offsetWidth, offsetHeight } = elem;\n if (offsetWidth !== width || offsetHeight !== height) {\n return {\n width: offsetWidth,\n height: offsetHeight\n }\n }\n return null\n}\n\nfunction handleMutation () {\n // `this` denotes the scrolling element\n let { rendered, detached } = getRenderInfo(this);\n if (rendered !== this.__resize_rendered__) {\n if (!detached && this.__resize_triggers__) {\n resetTriggers(this);\n this.addEventListener('scroll', handleScroll, true);\n }\n this.__resize_rendered__ = rendered;\n runCallbacks(this);\n }\n}\n\nfunction handleScroll () {\n // `this` denotes the scrolling element\n resetTriggers(this);\n if (this.__resize_raf__) {\n cancelAnimationFrame(this.__resize_raf__);\n }\n this.__resize_raf__ = requestAnimationFrame(() => {\n let updated = getUpdatedSize(this);\n if (updated) {\n this.__resize_last__ = updated;\n runCallbacks(this);\n }\n });\n}\n\nfunction runCallbacks (elem) {\n if (!elem || !elem.__resize_listeners__) {\n return\n }\n elem.__resize_listeners__.forEach(callback => {\n callback.call(elem);\n });\n}\n\nfunction initTriggers (elem) {\n let position = getComputedStyle(elem, 'position');\n if (!position || position === 'static') {\n elem.style.position = 'relative';\n }\n\n elem.__resize_old_position__ = position;\n elem.__resize_last__ = {};\n\n let triggers = createElement('div', {\n className: 'resize-triggers'\n });\n let expand = createElement('div', {\n className: 'resize-expand-trigger'\n });\n let expandChild = createElement('div');\n let contract = createElement('div', {\n className: 'resize-contract-trigger'\n });\n expand.appendChild(expandChild);\n triggers.appendChild(expand);\n triggers.appendChild(contract);\n elem.appendChild(triggers);\n\n elem.__resize_triggers__ = {\n triggers,\n expand,\n expandChild,\n contract\n };\n\n resetTriggers(elem);\n elem.addEventListener('scroll', handleScroll, true);\n\n elem.__resize_last__ = {\n width: elem.offsetWidth,\n height: elem.offsetHeight\n };\n}\n\nfunction resetTriggers (elem) {\n let { expand, expandChild, contract } = elem.__resize_triggers__;\n\n // batch read\n let { scrollWidth: csw, scrollHeight: csh } = contract;\n let { offsetWidth: eow, offsetHeight: eoh, scrollWidth: esw, scrollHeight: esh } = expand;\n\n // batch write\n contract.scrollLeft = csw;\n contract.scrollTop = csh;\n expandChild.style.width = eow + 1 + 'px';\n expandChild.style.height = eoh + 1 + 'px';\n expand.scrollLeft = esw;\n expand.scrollTop = esh;\n}\n\nexport { addListener, removeListener };\n","\n\n\n\n\n","import mod from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./ECharts.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./ECharts.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ECharts.vue?vue&type=template&id=36c2f65c&\"\nimport script from \"./ECharts.vue?vue&type=script&lang=js&\"\nexport * from \"./ECharts.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ECharts.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppEchartLine.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppEchartLine.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AppEchartLine.vue?vue&type=template&id=fdc7a3c2&\"\nimport script from \"./AppEchartLine.vue?vue&type=script&lang=js&\"\nexport * from \"./AppEchartLine.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppEchartLine.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EchartLine.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EchartLine.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EchartLine.vue?vue&type=template&id=28cec982&\"\nimport script from \"./EchartLine.vue?vue&type=script&lang=js&\"\nexport * from \"./EchartLine.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var Displayable = require(\"./Displayable\");\n\nvar zrUtil = require(\"../core/util\");\n\nvar textContain = require(\"../contain/text\");\n\nvar textHelper = require(\"./helper/text\");\n\nvar _constant = require(\"./constant\");\n\nvar ContextCachedBy = _constant.ContextCachedBy;\n\n/**\n * @alias zrender/graphic/Text\n * @extends module:zrender/graphic/Displayable\n * @constructor\n * @param {Object} opts\n */\nvar Text = function (opts) {\n // jshint ignore:line\n Displayable.call(this, opts);\n};\n\nText.prototype = {\n constructor: Text,\n type: 'text',\n brush: function (ctx, prevEl) {\n var style = this.style; // Optimize, avoid normalize every time.\n\n this.__dirty && textHelper.normalizeTextStyle(style, true); // Use props with prefix 'text'.\n\n style.fill = style.stroke = style.shadowBlur = style.shadowColor = style.shadowOffsetX = style.shadowOffsetY = null;\n var text = style.text; // Convert to string\n\n text != null && (text += ''); // Do not apply style.bind in Text node. Because the real bind job\n // is in textHelper.renderText, and performance of text render should\n // be considered.\n // style.bind(ctx, this, prevEl);\n\n if (!textHelper.needDrawText(text, style)) {\n // The current el.style is not applied\n // and should not be used as cache.\n ctx.__attrCachedBy = ContextCachedBy.NONE;\n return;\n }\n\n this.setTransform(ctx);\n textHelper.renderText(this, ctx, text, style, null, prevEl);\n this.restoreTransform(ctx);\n },\n getBoundingRect: function () {\n var style = this.style; // Optimize, avoid normalize every time.\n\n this.__dirty && textHelper.normalizeTextStyle(style, true);\n\n if (!this._rect) {\n var text = style.text;\n text != null ? text += '' : text = '';\n var rect = textContain.getBoundingRect(style.text + '', style.font, style.textAlign, style.textVerticalAlign, style.textPadding, style.textLineHeight, style.rich);\n rect.x += style.x || 0;\n rect.y += style.y || 0;\n\n if (textHelper.getStroke(style.textStroke, style.textStrokeWidth)) {\n var w = style.textStrokeWidth;\n rect.x -= w / 2;\n rect.y -= w / 2;\n rect.width += w;\n rect.height += w;\n }\n\n this._rect = rect;\n }\n\n return this._rect;\n }\n};\nzrUtil.inherits(Text, Displayable);\nvar _default = Text;\nmodule.exports = _default;","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _layout = require(\"../../util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\nvar layoutBox = _layout.box;\nvar positionElement = _layout.positionElement;\n\nvar formatUtil = require(\"../../util/format\");\n\nvar graphic = 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*/\n\n/**\n * Layout list like component.\n * It will box layout each items in group of component and then position the whole group in the viewport\n * @param {module:zrender/group/Group} group\n * @param {module:echarts/model/Component} componentModel\n * @param {module:echarts/ExtensionAPI}\n */\nfunction layout(group, componentModel, api) {\n var boxLayoutParams = componentModel.getBoxLayoutParams();\n var padding = componentModel.get('padding');\n var viewportSize = {\n width: api.getWidth(),\n height: api.getHeight()\n };\n var rect = getLayoutRect(boxLayoutParams, viewportSize, padding);\n layoutBox(componentModel.get('orient'), group, componentModel.get('itemGap'), rect.width, rect.height);\n positionElement(group, boxLayoutParams, viewportSize, padding);\n}\n\nfunction makeBackground(rect, componentModel) {\n var padding = formatUtil.normalizeCssArray(componentModel.get('padding'));\n var style = componentModel.getItemStyle(['color', 'opacity']);\n style.fill = componentModel.get('backgroundColor');\n var rect = new graphic.Rect({\n shape: {\n x: rect.x - padding[3],\n y: rect.y - padding[0],\n width: rect.width + padding[1] + padding[3],\n height: rect.height + padding[0] + padding[2],\n r: componentModel.get('borderRadius')\n },\n style: style,\n silent: true,\n z2: -1\n }); // FIXME\n // `subPixelOptimizeRect` may bring some gap between edge of viewpart\n // and background rect when setting like `left: 0`, `top: 0`.\n // graphic.subPixelOptimizeRect(rect);\n\n return rect;\n}\n\nexports.layout = layout;\nexports.makeBackground = makeBackground;","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","var SHADOW_PROPS = {\n 'shadowBlur': 1,\n 'shadowOffsetX': 1,\n 'shadowOffsetY': 1,\n 'textShadowBlur': 1,\n 'textShadowOffsetX': 1,\n 'textShadowOffsetY': 1,\n 'textBoxShadowBlur': 1,\n 'textBoxShadowOffsetX': 1,\n 'textBoxShadowOffsetY': 1\n};\n\nfunction _default(ctx, propName, value) {\n if (SHADOW_PROPS.hasOwnProperty(propName)) {\n return value *= ctx.dpr;\n }\n\n return value;\n}\n\nmodule.exports = _default;","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\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.} [condition.index] Either input index or id or name.\n * @param {string|Array.} [condition.id] Either input index or id or name.\n * @param {string|Array.} [condition.name] Either input index or id or name.\n * @return {Array.}\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.}\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.}\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.}\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.}\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.}\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.>}\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.}\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} types model types\n * @return {Object} key: {string} type, value: {Array.} 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 _util = require(\"zrender/lib/core/util\");\n\nvar isFunction = _util.isFunction;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(seriesType, defaultSymbolType, legendSymbol) {\n // Encoding visual for all series include which is filtered for legend drawing\n return {\n seriesType: seriesType,\n // For legend.\n performRawSeries: true,\n reset: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var symbolType = seriesModel.get('symbol');\n var symbolSize = seriesModel.get('symbolSize');\n var keepAspect = seriesModel.get('symbolKeepAspect');\n var symbolRotate = seriesModel.get('symbolRotate');\n var hasSymbolTypeCallback = isFunction(symbolType);\n var hasSymbolSizeCallback = isFunction(symbolSize);\n var hasSymbolRotateCallback = isFunction(symbolRotate);\n var hasCallback = hasSymbolTypeCallback || hasSymbolSizeCallback || hasSymbolRotateCallback;\n var seriesSymbol = !hasSymbolTypeCallback && symbolType ? symbolType : defaultSymbolType;\n var seriesSymbolSize = !hasSymbolSizeCallback ? symbolSize : null;\n var seriesSymbolRotate = !hasSymbolRotateCallback ? seriesSymbolRotate : null;\n data.setVisual({\n legendSymbol: legendSymbol || seriesSymbol,\n // If seting callback functions on `symbol` or `symbolSize`, for simplicity and avoiding\n // to bring trouble, we do not pick a reuslt from one of its calling on data item here,\n // but just use the default value. Callback on `symbol` or `symbolSize` is convenient in\n // some cases but generally it is not recommanded.\n symbol: seriesSymbol,\n symbolSize: seriesSymbolSize,\n symbolKeepAspect: keepAspect,\n symbolRotate: symbolRotate\n }); // Only visible series has each data be visual encoded\n\n if (ecModel.isSeriesFiltered(seriesModel)) {\n return;\n }\n\n function dataEach(data, idx) {\n if (hasCallback) {\n var rawValue = seriesModel.getRawValue(idx);\n var params = seriesModel.getDataParams(idx);\n hasSymbolTypeCallback && data.setItemVisual(idx, 'symbol', symbolType(rawValue, params));\n hasSymbolSizeCallback && data.setItemVisual(idx, 'symbolSize', symbolSize(rawValue, params));\n hasSymbolRotateCallback && data.setItemVisual(idx, 'symbolRotate', symbolRotate(rawValue, params));\n }\n\n if (data.hasItemOption) {\n var itemModel = data.getItemModel(idx);\n var itemSymbolType = itemModel.getShallow('symbol', true);\n var itemSymbolSize = itemModel.getShallow('symbolSize', true);\n var itemSymbolRotate = itemModel.getShallow('symbolRotate', true);\n var itemSymbolKeepAspect = itemModel.getShallow('symbolKeepAspect', true); // If has item symbol\n\n if (itemSymbolType != null) {\n data.setItemVisual(idx, 'symbol', itemSymbolType);\n }\n\n if (itemSymbolSize != null) {\n // PENDING Transform symbolSize ?\n data.setItemVisual(idx, 'symbolSize', itemSymbolSize);\n }\n\n if (itemSymbolRotate != null) {\n data.setItemVisual(idx, 'symbolRotate', itemSymbolRotate);\n }\n\n if (itemSymbolKeepAspect != null) {\n data.setItemVisual(idx, 'symbolKeepAspect', itemSymbolKeepAspect);\n }\n }\n }\n\n return {\n dataEach: data.hasItemOption || hasCallback ? dataEach : null\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*/\nfunction defaultKeyGetter(item) {\n return item;\n}\n/**\n * @param {Array} oldArr\n * @param {Array} newArr\n * @param {Function} oldKeyGetter\n * @param {Function} newKeyGetter\n * @param {Object} [context] Can be visited by this.context in callback.\n */\n\n\nfunction DataDiffer(oldArr, newArr, oldKeyGetter, newKeyGetter, context) {\n this._old = oldArr;\n this._new = newArr;\n this._oldKeyGetter = oldKeyGetter || defaultKeyGetter;\n this._newKeyGetter = newKeyGetter || defaultKeyGetter;\n this.context = context;\n}\n\nDataDiffer.prototype = {\n constructor: DataDiffer,\n\n /**\n * Callback function when add a data\n */\n add: function (func) {\n this._add = func;\n return this;\n },\n\n /**\n * Callback function when update a data\n */\n update: function (func) {\n this._update = func;\n return this;\n },\n\n /**\n * Callback function when remove a data\n */\n remove: function (func) {\n this._remove = func;\n return this;\n },\n execute: function () {\n var oldArr = this._old;\n var newArr = this._new;\n var oldDataIndexMap = {};\n var newDataIndexMap = {};\n var oldDataKeyArr = [];\n var newDataKeyArr = [];\n var i;\n initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, '_oldKeyGetter', this);\n initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter', this);\n\n for (i = 0; i < oldArr.length; i++) {\n var key = oldDataKeyArr[i];\n var idx = newDataIndexMap[key]; // idx can never be empty array here. see 'set null' logic below.\n\n if (idx != null) {\n // Consider there is duplicate key (for example, use dataItem.name as key).\n // We should make sure every item in newArr and oldArr can be visited.\n var len = idx.length;\n\n if (len) {\n len === 1 && (newDataIndexMap[key] = null);\n idx = idx.shift();\n } else {\n newDataIndexMap[key] = null;\n }\n\n this._update && this._update(idx, i);\n } else {\n this._remove && this._remove(i);\n }\n }\n\n for (var i = 0; i < newDataKeyArr.length; i++) {\n var key = newDataKeyArr[i];\n\n if (newDataIndexMap.hasOwnProperty(key)) {\n var idx = newDataIndexMap[key];\n\n if (idx == null) {\n continue;\n } // idx can never be empty array here. see 'set null' logic above.\n\n\n if (!idx.length) {\n this._add && this._add(idx);\n } else {\n for (var j = 0, len = idx.length; j < len; j++) {\n this._add && this._add(idx[j]);\n }\n }\n }\n }\n }\n};\n\nfunction initIndexMap(arr, map, keyArr, keyGetterName, dataDiffer) {\n for (var i = 0; i < arr.length; i++) {\n // Add prefix to avoid conflict with Object.prototype.\n var key = '_ec_' + dataDiffer[keyGetterName](arr[i], i);\n var existence = map[key];\n\n if (existence == null) {\n keyArr.push(key);\n map[key] = i;\n } else {\n if (!existence.length) {\n map[key] = existence = [existence];\n }\n\n existence.push(i);\n }\n }\n}\n\nvar _default = DataDiffer;\nmodule.exports = _default;","var ContextCachedBy = {\n NONE: 0,\n STYLE_BIND: 1,\n PLAIN_TEXT: 2\n}; // Avoid confused with 0/false.\n\nvar WILL_BE_RESTORED = 9;\nexports.ContextCachedBy = ContextCachedBy;\nexports.WILL_BE_RESTORED = WILL_BE_RESTORED;","\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 Text = require(\"zrender/lib/graphic/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*/\n// import Group from 'zrender/src/container/Group';\n\n/**\n * @alias module:echarts/component/tooltip/TooltipRichContent\n * @constructor\n */\nfunction TooltipRichContent(api) {\n this._zr = api.getZr();\n this._show = false;\n /**\n * @private\n */\n\n this._hideTimeout;\n}\n\nTooltipRichContent.prototype = {\n constructor: TooltipRichContent,\n\n /**\n * @private\n * @type {boolean}\n */\n _enterable: true,\n\n /**\n * Update when tooltip is rendered\n */\n update: function () {// noop\n },\n show: function (tooltipModel) {\n if (this._hideTimeout) {\n clearTimeout(this._hideTimeout);\n }\n\n this.el.attr('show', true);\n this._show = true;\n },\n\n /**\n * Set tooltip content\n *\n * @param {string} content rich text string of content\n * @param {Object} markerRich rich text style\n * @param {Object} tooltipModel tooltip model\n */\n setContent: function (content, markerRich, tooltipModel) {\n if (this.el) {\n this._zr.remove(this.el);\n }\n\n var markers = {};\n var text = content;\n var prefix = '{marker';\n var suffix = '|}';\n var startId = text.indexOf(prefix);\n\n while (startId >= 0) {\n var endId = text.indexOf(suffix);\n var name = text.substr(startId + prefix.length, endId - startId - prefix.length);\n\n if (name.indexOf('sub') > -1) {\n markers['marker' + name] = {\n textWidth: 4,\n textHeight: 4,\n textBorderRadius: 2,\n textBackgroundColor: markerRich[name],\n // TODO: textOffset is not implemented for rich text\n textOffset: [3, 0]\n };\n } else {\n markers['marker' + name] = {\n textWidth: 10,\n textHeight: 10,\n textBorderRadius: 5,\n textBackgroundColor: markerRich[name]\n };\n }\n\n text = text.substr(endId + 1);\n startId = text.indexOf('{marker');\n }\n\n this.el = new Text({\n style: {\n rich: markers,\n text: content,\n textLineHeight: 20,\n textBackgroundColor: tooltipModel.get('backgroundColor'),\n textBorderRadius: tooltipModel.get('borderRadius'),\n textFill: tooltipModel.get('textStyle.color'),\n textPadding: tooltipModel.get('padding')\n },\n z: tooltipModel.get('z')\n });\n\n this._zr.add(this.el);\n\n var self = this;\n this.el.on('mouseover', function () {\n // clear the timeout in hideLater and keep showing tooltip\n if (self._enterable) {\n clearTimeout(self._hideTimeout);\n self._show = true;\n }\n\n self._inContent = true;\n });\n this.el.on('mouseout', function () {\n if (self._enterable) {\n if (self._show) {\n self.hideLater(self._hideDelay);\n }\n }\n\n self._inContent = false;\n });\n },\n setEnterable: function (enterable) {\n this._enterable = enterable;\n },\n getSize: function () {\n var bounding = this.el.getBoundingRect();\n return [bounding.width, bounding.height];\n },\n moveTo: function (x, y) {\n if (this.el) {\n this.el.attr('position', [x, y]);\n }\n },\n hide: function () {\n if (this.el) {\n this.el.hide();\n }\n\n this._show = false;\n },\n hideLater: function (time) {\n if (this._show && !(this._inContent && this._enterable)) {\n if (time) {\n this._hideDelay = time; // Set show false to avoid invoke hideLater mutiple times\n\n this._show = false;\n this._hideTimeout = setTimeout(zrUtil.bind(this.hide, this), time);\n } else {\n this.hide();\n }\n }\n },\n isShow: function () {\n return this._show;\n },\n getOuterSize: function () {\n var size = this.getSize();\n return {\n width: size[0],\n height: size[1]\n };\n }\n};\nvar _default = TooltipRichContent;\nmodule.exports = _default;","import { makeModelMixin } from '../utils/model';\n\nvar _makeModelMixin = makeModelMixin('value'),\n mixin = _makeModelMixin.mixin,\n props = _makeModelMixin.props,\n prop = _makeModelMixin.prop,\n event = _makeModelMixin.event;\n\nexport { mixin as modelMixin, props, prop as MODEL_PROP_NAME, event as MODEL_EVENT_NAME };","import { Vue } from '../vue';\nimport { PROP_TYPE_ARRAY_OBJECT, PROP_TYPE_STRING } from '../constants/props';\nimport { get } from '../utils/get';\nimport { stripTags } from '../utils/html';\nimport { isArray, isPlainObject, isUndefined } from '../utils/inspect';\nimport { keys } from '../utils/object';\nimport { makeProp, makePropsConfigurable } from '../utils/props';\nimport { warn } from '../utils/warn'; // --- Constants ---\n\nvar OPTIONS_OBJECT_DEPRECATED_MSG = 'Setting prop \"options\" to an object is deprecated. Use the array format instead.'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n disabledField: makeProp(PROP_TYPE_STRING, 'disabled'),\n htmlField: makeProp(PROP_TYPE_STRING, 'html'),\n options: makeProp(PROP_TYPE_ARRAY_OBJECT, []),\n textField: makeProp(PROP_TYPE_STRING, 'text'),\n valueField: makeProp(PROP_TYPE_STRING, 'value')\n}, 'formOptionControls'); // --- Mixin ---\n// @vue/component\n\nexport var formOptionsMixin = Vue.extend({\n props: props,\n computed: {\n formOptions: function formOptions() {\n return this.normalizeOptions(this.options);\n }\n },\n methods: {\n normalizeOption: function normalizeOption(option) {\n var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n // When the option is an object, normalize it\n if (isPlainObject(option)) {\n var value = get(option, this.valueField);\n var text = get(option, this.textField);\n return {\n value: isUndefined(value) ? key || text : value,\n text: stripTags(String(isUndefined(text) ? key : text)),\n html: get(option, this.htmlField),\n disabled: Boolean(get(option, this.disabledField))\n };\n } // Otherwise create an `` object\n\n if (!isNull(options)) {\n return {\n label: String(get(option, this.labelField) || text),\n options: this.normalizeOptions(options)\n };\n } // Otherwise create an `