{"ast":null,"code":"import \"core-js/modules/es.array.push.js\";\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 * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport { bind, each, isFunction, isString, indexOf } from 'zrender/lib/core/util.js';\nimport * as eventTool from 'zrender/lib/core/event.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as throttle from '../../util/throttle.js';\nimport DataZoomView from './DataZoomView.js';\nimport { linearMap, asc, parsePercent } from '../../util/number.js';\nimport * as layout from '../../util/layout.js';\nimport sliderMove from '../helper/sliderMove.js';\nimport { getAxisMainType, collectReferCoordSysModelInfo } from './helper.js';\nimport { enableHoverEmphasis } from '../../util/states.js';\nimport { createSymbol, symbolBuildProxies } from '../../util/symbol.js';\nimport { deprecateLog } from '../../util/log.js';\nimport { createTextStyle } from '../../label/labelStyle.js';\nvar Rect = graphic.Rect;\n// Constants\nvar DEFAULT_LOCATION_EDGE_GAP = 7;\nvar DEFAULT_FRAME_BORDER_WIDTH = 1;\nvar DEFAULT_FILLER_SIZE = 30;\nvar DEFAULT_MOVE_HANDLE_SIZE = 7;\nvar HORIZONTAL = 'horizontal';\nvar VERTICAL = 'vertical';\nvar LABEL_GAP = 5;\nvar SHOW_DATA_SHADOW_SERIES_TYPE = ['line', 'bar', 'candlestick', 'scatter'];\nvar REALTIME_ANIMATION_CONFIG = {\n easing: 'cubicOut',\n duration: 100,\n delay: 0\n};\nvar SliderZoomView = /** @class */function (_super) {\n __extends(SliderZoomView, _super);\n function SliderZoomView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = SliderZoomView.type;\n _this._displayables = {};\n return _this;\n }\n SliderZoomView.prototype.init = function (ecModel, api) {\n this.api = api;\n // A unique handler for each dataZoom component\n this._onBrush = bind(this._onBrush, this);\n this._onBrushEnd = bind(this._onBrushEnd, this);\n };\n SliderZoomView.prototype.render = function (dataZoomModel, ecModel, api, payload) {\n _super.prototype.render.apply(this, arguments);\n throttle.createOrUpdate(this, '_dispatchZoomAction', dataZoomModel.get('throttle'), 'fixRate');\n this._orient = dataZoomModel.getOrient();\n if (dataZoomModel.get('show') === false) {\n this.group.removeAll();\n return;\n }\n if (dataZoomModel.noTarget()) {\n this._clear();\n this.group.removeAll();\n return;\n }\n // Notice: this._resetInterval() should not be executed when payload.type\n // is 'dataZoom', origin this._range should be maintained, otherwise 'pan'\n // or 'zoom' info will be missed because of 'throttle' of this.dispatchAction,\n if (!payload || payload.type !== 'dataZoom' || payload.from !== this.uid) {\n this._buildView();\n }\n this._updateView();\n };\n SliderZoomView.prototype.dispose = function () {\n this._clear();\n _super.prototype.dispose.apply(this, arguments);\n };\n SliderZoomView.prototype._clear = function () {\n throttle.clear(this, '_dispatchZoomAction');\n var zr = this.api.getZr();\n zr.off('mousemove', this._onBrush);\n zr.off('mouseup', this._onBrushEnd);\n };\n SliderZoomView.prototype._buildView = function () {\n var thisGroup = this.group;\n thisGroup.removeAll();\n this._brushing = false;\n this._displayables.brushRect = null;\n this._resetLocation();\n this._resetInterval();\n var barGroup = this._displayables.sliderGroup = new graphic.Group();\n this._renderBackground();\n this._renderHandle();\n this._renderDataShadow();\n thisGroup.add(barGroup);\n this._positionGroup();\n };\n SliderZoomView.prototype._resetLocation = function () {\n var dataZoomModel = this.dataZoomModel;\n var api = this.api;\n var showMoveHandle = dataZoomModel.get('brushSelect');\n var moveHandleSize = showMoveHandle ? DEFAULT_MOVE_HANDLE_SIZE : 0;\n // If some of x/y/width/height are not specified,\n // auto-adapt according to target grid.\n var coordRect = this._findCoordRect();\n var ecSize = {\n width: api.getWidth(),\n height: api.getHeight()\n };\n // Default align by coordinate system rect.\n var positionInfo = this._orient === HORIZONTAL ? {\n // Why using 'right', because right should be used in vertical,\n // and it is better to be consistent for dealing with position param merge.\n right: ecSize.width - coordRect.x - coordRect.width,\n top: ecSize.height - DEFAULT_FILLER_SIZE - DEFAULT_LOCATION_EDGE_GAP - moveHandleSize,\n width: coordRect.width,\n height: DEFAULT_FILLER_SIZE\n } : {\n right: DEFAULT_LOCATION_EDGE_GAP,\n top: coordRect.y,\n width: DEFAULT_FILLER_SIZE,\n height: coordRect.height\n };\n // Do not write back to option and replace value 'ph', because\n // the 'ph' value should be recalculated when resize.\n var layoutParams = layout.getLayoutParams(dataZoomModel.option);\n // Replace the placeholder value.\n each(['right', 'top', 'width', 'height'], function (name) {\n if (layoutParams[name] === 'ph') {\n layoutParams[name] = positionInfo[name];\n }\n });\n var layoutRect = layout.getLayoutRect(layoutParams, ecSize);\n this._location = {\n x: layoutRect.x,\n y: layoutRect.y\n };\n this._size = [layoutRect.width, layoutRect.height];\n this._orient === VERTICAL && this._size.reverse();\n };\n SliderZoomView.prototype._positionGroup = function () {\n var thisGroup = this.group;\n var location = this._location;\n var orient = this._orient;\n // Just use the first axis to determine mapping.\n var targetAxisModel = this.dataZoomModel.getFirstTargetAxisModel();\n var inverse = targetAxisModel && targetAxisModel.get('inverse');\n var sliderGroup = this._displayables.sliderGroup;\n var otherAxisInverse = (this._dataShadowInfo || {}).otherAxisInverse;\n // Transform barGroup.\n sliderGroup.attr(orient === HORIZONTAL && !inverse ? {\n scaleY: otherAxisInverse ? 1 : -1,\n scaleX: 1\n } : orient === HORIZONTAL && inverse ? {\n scaleY: otherAxisInverse ? 1 : -1,\n scaleX: -1\n } : orient === VERTICAL && !inverse ? {\n scaleY: otherAxisInverse ? -1 : 1,\n scaleX: 1,\n rotation: Math.PI / 2\n }\n // Don't use Math.PI, considering shadow direction.\n : {\n scaleY: otherAxisInverse ? -1 : 1,\n scaleX: -1,\n rotation: Math.PI / 2\n });\n // Position barGroup\n var rect = thisGroup.getBoundingRect([sliderGroup]);\n thisGroup.x = location.x - rect.x;\n thisGroup.y = location.y - rect.y;\n thisGroup.markRedraw();\n };\n SliderZoomView.prototype._getViewExtent = function () {\n return [0, this._size[0]];\n };\n SliderZoomView.prototype._renderBackground = function () {\n var dataZoomModel = this.dataZoomModel;\n var size = this._size;\n var barGroup = this._displayables.sliderGroup;\n var brushSelect = dataZoomModel.get('brushSelect');\n barGroup.add(new Rect({\n silent: true,\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1]\n },\n style: {\n fill: dataZoomModel.get('backgroundColor')\n },\n z2: -40\n }));\n // Click panel, over shadow, below handles.\n var clickPanel = new Rect({\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1]\n },\n style: {\n fill: 'transparent'\n },\n z2: 0,\n onclick: bind(this._onClickPanel, this)\n });\n var zr = this.api.getZr();\n if (brushSelect) {\n clickPanel.on('mousedown', this._onBrushStart, this);\n clickPanel.cursor = 'crosshair';\n zr.on('mousemove', this._onBrush);\n zr.on('mouseup', this._onBrushEnd);\n } else {\n zr.off('mousemove', this._onBrush);\n zr.off('mouseup', this._onBrushEnd);\n }\n barGroup.add(clickPanel);\n };\n SliderZoomView.prototype._renderDataShadow = function () {\n var info = this._dataShadowInfo = this._prepareDataShadowInfo();\n this._displayables.dataShadowSegs = [];\n if (!info) {\n return;\n }\n var size = this._size;\n var oldSize = this._shadowSize || [];\n var seriesModel = info.series;\n var data = seriesModel.getRawData();\n var candlestickDim = seriesModel.getShadowDim && seriesModel.getShadowDim();\n var otherDim = candlestickDim && data.getDimensionInfo(candlestickDim) ? seriesModel.getShadowDim() // @see candlestick\n : info.otherDim;\n if (otherDim == null) {\n return;\n }\n var polygonPts = this._shadowPolygonPts;\n var polylinePts = this._shadowPolylinePts;\n // Not re-render if data doesn't change.\n if (data !== this._shadowData || otherDim !== this._shadowDim || size[0] !== oldSize[0] || size[1] !== oldSize[1]) {\n var otherDataExtent_1 = data.getDataExtent(otherDim);\n // Nice extent.\n var otherOffset = (otherDataExtent_1[1] - otherDataExtent_1[0]) * 0.3;\n otherDataExtent_1 = [otherDataExtent_1[0] - otherOffset, otherDataExtent_1[1] + otherOffset];\n var otherShadowExtent_1 = [0, size[1]];\n var thisShadowExtent = [0, size[0]];\n var areaPoints_1 = [[size[0], 0], [0, 0]];\n var linePoints_1 = [];\n var step_1 = thisShadowExtent[1] / (data.count() - 1);\n var thisCoord_1 = 0;\n // Optimize for large data shadow\n var stride_1 = Math.round(data.count() / size[0]);\n var lastIsEmpty_1;\n data.each([otherDim], function (value, index) {\n if (stride_1 > 0 && index % stride_1) {\n thisCoord_1 += step_1;\n return;\n }\n // FIXME\n // Should consider axis.min/axis.max when drawing dataShadow.\n // FIXME\n // 应该使用统一的空判断?还是在list里进行空判断?\n var isEmpty = value == null || isNaN(value) || value === '';\n // See #4235.\n var otherCoord = isEmpty ? 0 : linearMap(value, otherDataExtent_1, otherShadowExtent_1, true);\n // Attempt to draw data shadow precisely when there are empty value.\n if (isEmpty && !lastIsEmpty_1 && index) {\n areaPoints_1.push([areaPoints_1[areaPoints_1.length - 1][0], 0]);\n linePoints_1.push([linePoints_1[linePoints_1.length - 1][0], 0]);\n } else if (!isEmpty && lastIsEmpty_1) {\n areaPoints_1.push([thisCoord_1, 0]);\n linePoints_1.push([thisCoord_1, 0]);\n }\n areaPoints_1.push([thisCoord_1, otherCoord]);\n linePoints_1.push([thisCoord_1, otherCoord]);\n thisCoord_1 += step_1;\n lastIsEmpty_1 = isEmpty;\n });\n polygonPts = this._shadowPolygonPts = areaPoints_1;\n polylinePts = this._shadowPolylinePts = linePoints_1;\n }\n this._shadowData = data;\n this._shadowDim = otherDim;\n this._shadowSize = [size[0], size[1]];\n var dataZoomModel = this.dataZoomModel;\n function createDataShadowGroup(isSelectedArea) {\n var model = dataZoomModel.getModel(isSelectedArea ? 'selectedDataBackground' : 'dataBackground');\n var group = new graphic.Group();\n var polygon = new graphic.Polygon({\n shape: {\n points: polygonPts\n },\n segmentIgnoreThreshold: 1,\n style: model.getModel('areaStyle').getAreaStyle(),\n silent: true,\n z2: -20\n });\n var polyline = new graphic.Polyline({\n shape: {\n points: polylinePts\n },\n segmentIgnoreThreshold: 1,\n style: model.getModel('lineStyle').getLineStyle(),\n silent: true,\n z2: -19\n });\n group.add(polygon);\n group.add(polyline);\n return group;\n }\n // let dataBackgroundModel = dataZoomModel.getModel('dataBackground');\n for (var i = 0; i < 3; i++) {\n var group = createDataShadowGroup(i === 1);\n this._displayables.sliderGroup.add(group);\n this._displayables.dataShadowSegs.push(group);\n }\n };\n SliderZoomView.prototype._prepareDataShadowInfo = function () {\n var dataZoomModel = this.dataZoomModel;\n var showDataShadow = dataZoomModel.get('showDataShadow');\n if (showDataShadow === false) {\n return;\n }\n // Find a representative series.\n var result;\n var ecModel = this.ecModel;\n dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\n var seriesModels = dataZoomModel.getAxisProxy(axisDim, axisIndex).getTargetSeriesModels();\n each(seriesModels, function (seriesModel) {\n if (result) {\n return;\n }\n if (showDataShadow !== true && indexOf(SHOW_DATA_SHADOW_SERIES_TYPE, seriesModel.get('type')) < 0) {\n return;\n }\n var thisAxis = ecModel.getComponent(getAxisMainType(axisDim), axisIndex).axis;\n var otherDim = getOtherDim(axisDim);\n var otherAxisInverse;\n var coordSys = seriesModel.coordinateSystem;\n if (otherDim != null && coordSys.getOtherAxis) {\n otherAxisInverse = coordSys.getOtherAxis(thisAxis).inverse;\n }\n otherDim = seriesModel.getData().mapDimension(otherDim);\n result = {\n thisAxis: thisAxis,\n series: seriesModel,\n thisDim: axisDim,\n otherDim: otherDim,\n otherAxisInverse: otherAxisInverse\n };\n }, this);\n }, this);\n return result;\n };\n SliderZoomView.prototype._renderHandle = function () {\n var thisGroup = this.group;\n var displayables = this._displayables;\n var handles = displayables.handles = [null, null];\n var handleLabels = displayables.handleLabels = [null, null];\n var sliderGroup = this._displayables.sliderGroup;\n var size = this._size;\n var dataZoomModel = this.dataZoomModel;\n var api = this.api;\n var borderRadius = dataZoomModel.get('borderRadius') || 0;\n var brushSelect = dataZoomModel.get('brushSelect');\n var filler = displayables.filler = new Rect({\n silent: brushSelect,\n style: {\n fill: dataZoomModel.get('fillerColor')\n },\n textConfig: {\n position: 'inside'\n }\n });\n sliderGroup.add(filler);\n // Frame border.\n sliderGroup.add(new Rect({\n silent: true,\n subPixelOptimize: true,\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1],\n r: borderRadius\n },\n style: {\n // deprecated option\n stroke: dataZoomModel.get('dataBackgroundColor') || dataZoomModel.get('borderColor'),\n lineWidth: DEFAULT_FRAME_BORDER_WIDTH,\n fill: 'rgba(0,0,0,0)'\n }\n }));\n // Left and right handle to resize\n each([0, 1], function (handleIndex) {\n var iconStr = dataZoomModel.get('handleIcon');\n if (!symbolBuildProxies[iconStr] && iconStr.indexOf('path://') < 0 && iconStr.indexOf('image://') < 0) {\n // Compatitable with the old icon parsers. Which can use a path string without path://\n iconStr = 'path://' + iconStr;\n if (process.env.NODE_ENV !== 'production') {\n deprecateLog('handleIcon now needs \\'path://\\' prefix when using a path string');\n }\n }\n var path = createSymbol(iconStr, -1, 0, 2, 2, null, true);\n path.attr({\n cursor: getCursor(this._orient),\n draggable: true,\n drift: bind(this._onDragMove, this, handleIndex),\n ondragend: bind(this._onDragEnd, this),\n onmouseover: bind(this._showDataInfo, this, true),\n onmouseout: bind(this._showDataInfo, this, false),\n z2: 5\n });\n var bRect = path.getBoundingRect();\n var handleSize = dataZoomModel.get('handleSize');\n this._handleHeight = parsePercent(handleSize, this._size[1]);\n this._handleWidth = bRect.width / bRect.height * this._handleHeight;\n path.setStyle(dataZoomModel.getModel('handleStyle').getItemStyle());\n path.style.strokeNoScale = true;\n path.rectHover = true;\n path.ensureState('emphasis').style = dataZoomModel.getModel(['emphasis', 'handleStyle']).getItemStyle();\n enableHoverEmphasis(path);\n var handleColor = dataZoomModel.get('handleColor'); // deprecated option\n // Compatitable with previous version\n if (handleColor != null) {\n path.style.fill = handleColor;\n }\n sliderGroup.add(handles[handleIndex] = path);\n var textStyleModel = dataZoomModel.getModel('textStyle');\n var handleLabel = dataZoomModel.get('handleLabel') || {};\n var handleLabelShow = handleLabel.show || false;\n thisGroup.add(handleLabels[handleIndex] = new graphic.Text({\n silent: true,\n invisible: !handleLabelShow,\n style: createTextStyle(textStyleModel, {\n x: 0,\n y: 0,\n text: '',\n verticalAlign: 'middle',\n align: 'center',\n fill: textStyleModel.getTextColor(),\n font: textStyleModel.getFont()\n }),\n z2: 10\n }));\n }, this);\n // Handle to move. Only visible when brushSelect is set true.\n var actualMoveZone = filler;\n if (brushSelect) {\n var moveHandleHeight = parsePercent(dataZoomModel.get('moveHandleSize'), size[1]);\n var moveHandle_1 = displayables.moveHandle = new graphic.Rect({\n style: dataZoomModel.getModel('moveHandleStyle').getItemStyle(),\n silent: true,\n shape: {\n r: [0, 0, 2, 2],\n y: size[1] - 0.5,\n height: moveHandleHeight\n }\n });\n var iconSize = moveHandleHeight * 0.8;\n var moveHandleIcon = displayables.moveHandleIcon = createSymbol(dataZoomModel.get('moveHandleIcon'), -iconSize / 2, -iconSize / 2, iconSize, iconSize, '#fff', true);\n moveHandleIcon.silent = true;\n moveHandleIcon.y = size[1] + moveHandleHeight / 2 - 0.5;\n moveHandle_1.ensureState('emphasis').style = dataZoomModel.getModel(['emphasis', 'moveHandleStyle']).getItemStyle();\n var moveZoneExpandSize = Math.min(size[1] / 2, Math.max(moveHandleHeight, 10));\n actualMoveZone = displayables.moveZone = new graphic.Rect({\n invisible: true,\n shape: {\n y: size[1] - moveZoneExpandSize,\n height: moveHandleHeight + moveZoneExpandSize\n }\n });\n actualMoveZone.on('mouseover', function () {\n api.enterEmphasis(moveHandle_1);\n }).on('mouseout', function () {\n api.leaveEmphasis(moveHandle_1);\n });\n sliderGroup.add(moveHandle_1);\n sliderGroup.add(moveHandleIcon);\n sliderGroup.add(actualMoveZone);\n }\n actualMoveZone.attr({\n draggable: true,\n cursor: getCursor(this._orient),\n drift: bind(this._onDragMove, this, 'all'),\n ondragstart: bind(this._showDataInfo, this, true),\n ondragend: bind(this._onDragEnd, this),\n onmouseover: bind(this._showDataInfo, this, true),\n onmouseout: bind(this._showDataInfo, this, false)\n });\n };\n SliderZoomView.prototype._resetInterval = function () {\n var range = this._range = this.dataZoomModel.getPercentRange();\n var viewExtent = this._getViewExtent();\n this._handleEnds = [linearMap(range[0], [0, 100], viewExtent, true), linearMap(range[1], [0, 100], viewExtent, true)];\n };\n SliderZoomView.prototype._updateInterval = function (handleIndex, delta) {\n var dataZoomModel = this.dataZoomModel;\n var handleEnds = this._handleEnds;\n var viewExtend = this._getViewExtent();\n var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();\n var percentExtent = [0, 100];\n sliderMove(delta, handleEnds, viewExtend, dataZoomModel.get('zoomLock') ? 'all' : handleIndex, minMaxSpan.minSpan != null ? linearMap(minMaxSpan.minSpan, percentExtent, viewExtend, true) : null, minMaxSpan.maxSpan != null ? linearMap(minMaxSpan.maxSpan, percentExtent, viewExtend, true) : null);\n var lastRange = this._range;\n var range = this._range = asc([linearMap(handleEnds[0], viewExtend, percentExtent, true), linearMap(handleEnds[1], viewExtend, percentExtent, true)]);\n return !lastRange || lastRange[0] !== range[0] || lastRange[1] !== range[1];\n };\n SliderZoomView.prototype._updateView = function (nonRealtime) {\n var displaybles = this._displayables;\n var handleEnds = this._handleEnds;\n var handleInterval = asc(handleEnds.slice());\n var size = this._size;\n each([0, 1], function (handleIndex) {\n // Handles\n var handle = displaybles.handles[handleIndex];\n var handleHeight = this._handleHeight;\n handle.attr({\n scaleX: handleHeight / 2,\n scaleY: handleHeight / 2,\n // This is a trick, by adding an extra tiny offset to let the default handle's end point align to the drag window.\n // NOTE: It may affect some custom shapes a bit. But we prefer to have better result by default.\n x: handleEnds[handleIndex] + (handleIndex ? -1 : 1),\n y: size[1] / 2 - handleHeight / 2\n });\n }, this);\n // Filler\n displaybles.filler.setShape({\n x: handleInterval[0],\n y: 0,\n width: handleInterval[1] - handleInterval[0],\n height: size[1]\n });\n var viewExtent = {\n x: handleInterval[0],\n width: handleInterval[1] - handleInterval[0]\n };\n // Move handle\n if (displaybles.moveHandle) {\n displaybles.moveHandle.setShape(viewExtent);\n displaybles.moveZone.setShape(viewExtent);\n // Force update path on the invisible object\n displaybles.moveZone.getBoundingRect();\n displaybles.moveHandleIcon && displaybles.moveHandleIcon.attr('x', viewExtent.x + viewExtent.width / 2);\n }\n // update clip path of shadow.\n var dataShadowSegs = displaybles.dataShadowSegs;\n var segIntervals = [0, handleInterval[0], handleInterval[1], size[0]];\n for (var i = 0; i < dataShadowSegs.length; i++) {\n var segGroup = dataShadowSegs[i];\n var clipPath = segGroup.getClipPath();\n if (!clipPath) {\n clipPath = new graphic.Rect();\n segGroup.setClipPath(clipPath);\n }\n clipPath.setShape({\n x: segIntervals[i],\n y: 0,\n width: segIntervals[i + 1] - segIntervals[i],\n height: size[1]\n });\n }\n this._updateDataInfo(nonRealtime);\n };\n SliderZoomView.prototype._updateDataInfo = function (nonRealtime) {\n var dataZoomModel = this.dataZoomModel;\n var displaybles = this._displayables;\n var handleLabels = displaybles.handleLabels;\n var orient = this._orient;\n var labelTexts = ['', ''];\n // FIXME\n // date型,支持formatter,autoformatter(ec2 date.getAutoFormatter)\n if (dataZoomModel.get('showDetail')) {\n var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\n if (axisProxy) {\n var axis = axisProxy.getAxisModel().axis;\n var range = this._range;\n var dataInterval = nonRealtime\n // See #4434, data and axis are not processed and reset yet in non-realtime mode.\n ? axisProxy.calculateDataWindow({\n start: range[0],\n end: range[1]\n }).valueWindow : axisProxy.getDataValueWindow();\n labelTexts = [this._formatLabel(dataInterval[0], axis), this._formatLabel(dataInterval[1], axis)];\n }\n }\n var orderedHandleEnds = asc(this._handleEnds.slice());\n setLabel.call(this, 0);\n setLabel.call(this, 1);\n function setLabel(handleIndex) {\n // Label\n // Text should not transform by barGroup.\n // Ignore handlers transform\n var barTransform = graphic.getTransform(displaybles.handles[handleIndex].parent, this.group);\n var direction = graphic.transformDirection(handleIndex === 0 ? 'right' : 'left', barTransform);\n var offset = this._handleWidth / 2 + LABEL_GAP;\n var textPoint = graphic.applyTransform([orderedHandleEnds[handleIndex] + (handleIndex === 0 ? -offset : offset), this._size[1] / 2], barTransform);\n handleLabels[handleIndex].setStyle({\n x: textPoint[0],\n y: textPoint[1],\n verticalAlign: orient === HORIZONTAL ? 'middle' : direction,\n align: orient === HORIZONTAL ? direction : 'center',\n text: labelTexts[handleIndex]\n });\n }\n };\n SliderZoomView.prototype._formatLabel = function (value, axis) {\n var dataZoomModel = this.dataZoomModel;\n var labelFormatter = dataZoomModel.get('labelFormatter');\n var labelPrecision = dataZoomModel.get('labelPrecision');\n if (labelPrecision == null || labelPrecision === 'auto') {\n labelPrecision = axis.getPixelPrecision();\n }\n var valueStr = value == null || isNaN(value) ? ''\n // FIXME Glue code\n : axis.type === 'category' || axis.type === 'time' ? axis.scale.getLabel({\n value: Math.round(value)\n })\n // param of toFixed should less then 20.\n : value.toFixed(Math.min(labelPrecision, 20));\n return isFunction(labelFormatter) ? labelFormatter(value, valueStr) : isString(labelFormatter) ? labelFormatter.replace('{value}', valueStr) : valueStr;\n };\n /**\r\n * @param isEmphasis true: show, false: hide\r\n */\n SliderZoomView.prototype._showDataInfo = function (isEmphasis) {\n var handleLabel = this.dataZoomModel.get('handleLabel') || {};\n var normalShow = handleLabel.show || false;\n var emphasisHandleLabel = this.dataZoomModel.getModel(['emphasis', 'handleLabel']);\n var emphasisShow = emphasisHandleLabel.get('show') || false;\n // Dragging is considered as emphasis, unless emphasisShow is false\n var toShow = isEmphasis || this._dragging ? emphasisShow : normalShow;\n var displayables = this._displayables;\n var handleLabels = displayables.handleLabels;\n handleLabels[0].attr('invisible', !toShow);\n handleLabels[1].attr('invisible', !toShow);\n // Highlight move handle\n displayables.moveHandle && this.api[toShow ? 'enterEmphasis' : 'leaveEmphasis'](displayables.moveHandle, 1);\n };\n SliderZoomView.prototype._onDragMove = function (handleIndex, dx, dy, event) {\n this._dragging = true;\n // For mobile device, prevent screen slider on the button.\n eventTool.stop(event.event);\n // Transform dx, dy to bar coordination.\n var barTransform = this._displayables.sliderGroup.getLocalTransform();\n var vertex = graphic.applyTransform([dx, dy], barTransform, true);\n var changed = this._updateInterval(handleIndex, vertex[0]);\n var realtime = this.dataZoomModel.get('realtime');\n this._updateView(!realtime);\n // Avoid dispatch dataZoom repeatly but range not changed,\n // which cause bad visual effect when progressive enabled.\n changed && realtime && this._dispatchZoomAction(true);\n };\n SliderZoomView.prototype._onDragEnd = function () {\n this._dragging = false;\n this._showDataInfo(false);\n // While in realtime mode and stream mode, dispatch action when\n // drag end will cause the whole view rerender, which is unnecessary.\n var realtime = this.dataZoomModel.get('realtime');\n !realtime && this._dispatchZoomAction(false);\n };\n SliderZoomView.prototype._onClickPanel = function (e) {\n var size = this._size;\n var localPoint = this._displayables.sliderGroup.transformCoordToLocal(e.offsetX, e.offsetY);\n if (localPoint[0] < 0 || localPoint[0] > size[0] || localPoint[1] < 0 || localPoint[1] > size[1]) {\n return;\n }\n var handleEnds = this._handleEnds;\n var center = (handleEnds[0] + handleEnds[1]) / 2;\n var changed = this._updateInterval('all', localPoint[0] - center);\n this._updateView();\n changed && this._dispatchZoomAction(false);\n };\n SliderZoomView.prototype._onBrushStart = function (e) {\n var x = e.offsetX;\n var y = e.offsetY;\n this._brushStart = new graphic.Point(x, y);\n this._brushing = true;\n this._brushStartTime = +new Date();\n // this._updateBrushRect(x, y);\n };\n SliderZoomView.prototype._onBrushEnd = function (e) {\n if (!this._brushing) {\n return;\n }\n var brushRect = this._displayables.brushRect;\n this._brushing = false;\n if (!brushRect) {\n return;\n }\n brushRect.attr('ignore', true);\n var brushShape = brushRect.shape;\n var brushEndTime = +new Date();\n // console.log(brushEndTime - this._brushStartTime);\n if (brushEndTime - this._brushStartTime < 200 && Math.abs(brushShape.width) < 5) {\n // Will treat it as a click\n return;\n }\n var viewExtend = this._getViewExtent();\n var percentExtent = [0, 100];\n this._range = asc([linearMap(brushShape.x, viewExtend, percentExtent, true), linearMap(brushShape.x + brushShape.width, viewExtend, percentExtent, true)]);\n this._handleEnds = [brushShape.x, brushShape.x + brushShape.width];\n this._updateView();\n this._dispatchZoomAction(false);\n };\n SliderZoomView.prototype._onBrush = function (e) {\n if (this._brushing) {\n // For mobile device, prevent screen slider on the button.\n eventTool.stop(e.event);\n this._updateBrushRect(e.offsetX, e.offsetY);\n }\n };\n SliderZoomView.prototype._updateBrushRect = function (mouseX, mouseY) {\n var displayables = this._displayables;\n var dataZoomModel = this.dataZoomModel;\n var brushRect = displayables.brushRect;\n if (!brushRect) {\n brushRect = displayables.brushRect = new Rect({\n silent: true,\n style: dataZoomModel.getModel('brushStyle').getItemStyle()\n });\n displayables.sliderGroup.add(brushRect);\n }\n brushRect.attr('ignore', false);\n var brushStart = this._brushStart;\n var sliderGroup = this._displayables.sliderGroup;\n var endPoint = sliderGroup.transformCoordToLocal(mouseX, mouseY);\n var startPoint = sliderGroup.transformCoordToLocal(brushStart.x, brushStart.y);\n var size = this._size;\n endPoint[0] = Math.max(Math.min(size[0], endPoint[0]), 0);\n brushRect.setShape({\n x: startPoint[0],\n y: 0,\n width: endPoint[0] - startPoint[0],\n height: size[1]\n });\n };\n /**\r\n * This action will be throttled.\r\n */\n SliderZoomView.prototype._dispatchZoomAction = function (realtime) {\n var range = this._range;\n this.api.dispatchAction({\n type: 'dataZoom',\n from: this.uid,\n dataZoomId: this.dataZoomModel.id,\n animation: realtime ? REALTIME_ANIMATION_CONFIG : null,\n start: range[0],\n end: range[1]\n });\n };\n SliderZoomView.prototype._findCoordRect = function () {\n // Find the grid corresponding to the first axis referred by dataZoom.\n var rect;\n var coordSysInfoList = collectReferCoordSysModelInfo(this.dataZoomModel).infoList;\n if (!rect && coordSysInfoList.length) {\n var coordSys = coordSysInfoList[0].model.coordinateSystem;\n rect = coordSys.getRect && coordSys.getRect();\n }\n if (!rect) {\n var width = this.api.getWidth();\n var height = this.api.getHeight();\n rect = {\n x: width * 0.2,\n y: height * 0.2,\n width: width * 0.6,\n height: height * 0.6\n };\n }\n return rect;\n };\n SliderZoomView.type = 'dataZoom.slider';\n return SliderZoomView;\n}(DataZoomView);\nfunction getOtherDim(thisDim) {\n // FIXME\n // 这个逻辑和getOtherAxis里一致,但是写在这里是否不好\n var map = {\n x: 'y',\n y: 'x',\n radius: 'angle',\n angle: 'radius'\n };\n return map[thisDim];\n}\nfunction getCursor(orient) {\n return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\n}\nexport default SliderZoomView;","map":{"version":3,"names":["__extends","bind","each","isFunction","isString","indexOf","eventTool","graphic","throttle","DataZoomView","linearMap","asc","parsePercent","layout","sliderMove","getAxisMainType","collectReferCoordSysModelInfo","enableHoverEmphasis","createSymbol","symbolBuildProxies","deprecateLog","createTextStyle","Rect","DEFAULT_LOCATION_EDGE_GAP","DEFAULT_FRAME_BORDER_WIDTH","DEFAULT_FILLER_SIZE","DEFAULT_MOVE_HANDLE_SIZE","HORIZONTAL","VERTICAL","LABEL_GAP","SHOW_DATA_SHADOW_SERIES_TYPE","REALTIME_ANIMATION_CONFIG","easing","duration","delay","SliderZoomView","_super","_this","apply","arguments","type","_displayables","prototype","init","ecModel","api","_onBrush","_onBrushEnd","render","dataZoomModel","payload","createOrUpdate","get","_orient","getOrient","group","removeAll","noTarget","_clear","from","uid","_buildView","_updateView","dispose","clear","zr","getZr","off","thisGroup","_brushing","brushRect","_resetLocation","_resetInterval","barGroup","sliderGroup","Group","_renderBackground","_renderHandle","_renderDataShadow","add","_positionGroup","showMoveHandle","moveHandleSize","coordRect","_findCoordRect","ecSize","width","getWidth","height","getHeight","positionInfo","right","x","top","y","layoutParams","getLayoutParams","option","name","layoutRect","getLayoutRect","_location","_size","reverse","location","orient","targetAxisModel","getFirstTargetAxisModel","inverse","otherAxisInverse","_dataShadowInfo","attr","scaleY","scaleX","rotation","Math","PI","rect","getBoundingRect","markRedraw","_getViewExtent","size","brushSelect","silent","shape","style","fill","z2","clickPanel","onclick","_onClickPanel","on","_onBrushStart","cursor","info","_prepareDataShadowInfo","dataShadowSegs","oldSize","_shadowSize","seriesModel","series","data","getRawData","candlestickDim","getShadowDim","otherDim","getDimensionInfo","polygonPts","_shadowPolygonPts","polylinePts","_shadowPolylinePts","_shadowData","_shadowDim","otherDataExtent_1","getDataExtent","otherOffset","otherShadowExtent_1","thisShadowExtent","areaPoints_1","linePoints_1","step_1","count","thisCoord_1","stride_1","round","lastIsEmpty_1","value","index","isEmpty","isNaN","otherCoord","push","length","createDataShadowGroup","isSelectedArea","model","getModel","polygon","Polygon","points","segmentIgnoreThreshold","getAreaStyle","polyline","Polyline","getLineStyle","i","showDataShadow","result","eachTargetAxis","axisDim","axisIndex","seriesModels","getAxisProxy","getTargetSeriesModels","thisAxis","getComponent","axis","getOtherDim","coordSys","coordinateSystem","getOtherAxis","getData","mapDimension","thisDim","displayables","handles","handleLabels","borderRadius","filler","textConfig","position","subPixelOptimize","r","stroke","lineWidth","handleIndex","iconStr","process","env","NODE_ENV","path","getCursor","draggable","drift","_onDragMove","ondragend","_onDragEnd","onmouseover","_showDataInfo","onmouseout","bRect","handleSize","_handleHeight","_handleWidth","setStyle","getItemStyle","strokeNoScale","rectHover","ensureState","handleColor","textStyleModel","handleLabel","handleLabelShow","show","Text","invisible","text","verticalAlign","align","getTextColor","font","getFont","actualMoveZone","moveHandleHeight","moveHandle_1","moveHandle","iconSize","moveHandleIcon","moveZoneExpandSize","min","max","moveZone","enterEmphasis","leaveEmphasis","ondragstart","range","_range","getPercentRange","viewExtent","_handleEnds","_updateInterval","delta","handleEnds","viewExtend","minMaxSpan","findRepresentativeAxisProxy","getMinMaxSpan","percentExtent","minSpan","maxSpan","lastRange","nonRealtime","displaybles","handleInterval","slice","handle","handleHeight","setShape","segIntervals","segGroup","clipPath","getClipPath","setClipPath","_updateDataInfo","labelTexts","axisProxy","getAxisModel","dataInterval","calculateDataWindow","start","end","valueWindow","getDataValueWindow","_formatLabel","orderedHandleEnds","setLabel","call","barTransform","getTransform","parent","direction","transformDirection","offset","textPoint","applyTransform","labelFormatter","labelPrecision","getPixelPrecision","valueStr","scale","getLabel","toFixed","replace","isEmphasis","normalShow","emphasisHandleLabel","emphasisShow","toShow","_dragging","dx","dy","event","stop","getLocalTransform","vertex","changed","realtime","_dispatchZoomAction","e","localPoint","transformCoordToLocal","offsetX","offsetY","center","_brushStart","Point","_brushStartTime","Date","brushShape","brushEndTime","abs","_updateBrushRect","mouseX","mouseY","brushStart","endPoint","startPoint","dispatchAction","dataZoomId","id","animation","coordSysInfoList","infoList","getRect","map","radius","angle"],"sources":["/data/jenkins/workspace/badp-bcxin-web-access/node_modules/echarts/lib/component/dataZoom/SliderZoomView.js"],"sourcesContent":["\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport { bind, each, isFunction, isString, indexOf } from 'zrender/lib/core/util.js';\nimport * as eventTool from 'zrender/lib/core/event.js';\nimport * as graphic from '../../util/graphic.js';\nimport * as throttle from '../../util/throttle.js';\nimport DataZoomView from './DataZoomView.js';\nimport { linearMap, asc, parsePercent } from '../../util/number.js';\nimport * as layout from '../../util/layout.js';\nimport sliderMove from '../helper/sliderMove.js';\nimport { getAxisMainType, collectReferCoordSysModelInfo } from './helper.js';\nimport { enableHoverEmphasis } from '../../util/states.js';\nimport { createSymbol, symbolBuildProxies } from '../../util/symbol.js';\nimport { deprecateLog } from '../../util/log.js';\nimport { createTextStyle } from '../../label/labelStyle.js';\nvar Rect = graphic.Rect;\n// Constants\nvar DEFAULT_LOCATION_EDGE_GAP = 7;\nvar DEFAULT_FRAME_BORDER_WIDTH = 1;\nvar DEFAULT_FILLER_SIZE = 30;\nvar DEFAULT_MOVE_HANDLE_SIZE = 7;\nvar HORIZONTAL = 'horizontal';\nvar VERTICAL = 'vertical';\nvar LABEL_GAP = 5;\nvar SHOW_DATA_SHADOW_SERIES_TYPE = ['line', 'bar', 'candlestick', 'scatter'];\nvar REALTIME_ANIMATION_CONFIG = {\n easing: 'cubicOut',\n duration: 100,\n delay: 0\n};\nvar SliderZoomView = /** @class */function (_super) {\n __extends(SliderZoomView, _super);\n function SliderZoomView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = SliderZoomView.type;\n _this._displayables = {};\n return _this;\n }\n SliderZoomView.prototype.init = function (ecModel, api) {\n this.api = api;\n // A unique handler for each dataZoom component\n this._onBrush = bind(this._onBrush, this);\n this._onBrushEnd = bind(this._onBrushEnd, this);\n };\n SliderZoomView.prototype.render = function (dataZoomModel, ecModel, api, payload) {\n _super.prototype.render.apply(this, arguments);\n throttle.createOrUpdate(this, '_dispatchZoomAction', dataZoomModel.get('throttle'), 'fixRate');\n this._orient = dataZoomModel.getOrient();\n if (dataZoomModel.get('show') === false) {\n this.group.removeAll();\n return;\n }\n if (dataZoomModel.noTarget()) {\n this._clear();\n this.group.removeAll();\n return;\n }\n // Notice: this._resetInterval() should not be executed when payload.type\n // is 'dataZoom', origin this._range should be maintained, otherwise 'pan'\n // or 'zoom' info will be missed because of 'throttle' of this.dispatchAction,\n if (!payload || payload.type !== 'dataZoom' || payload.from !== this.uid) {\n this._buildView();\n }\n this._updateView();\n };\n SliderZoomView.prototype.dispose = function () {\n this._clear();\n _super.prototype.dispose.apply(this, arguments);\n };\n SliderZoomView.prototype._clear = function () {\n throttle.clear(this, '_dispatchZoomAction');\n var zr = this.api.getZr();\n zr.off('mousemove', this._onBrush);\n zr.off('mouseup', this._onBrushEnd);\n };\n SliderZoomView.prototype._buildView = function () {\n var thisGroup = this.group;\n thisGroup.removeAll();\n this._brushing = false;\n this._displayables.brushRect = null;\n this._resetLocation();\n this._resetInterval();\n var barGroup = this._displayables.sliderGroup = new graphic.Group();\n this._renderBackground();\n this._renderHandle();\n this._renderDataShadow();\n thisGroup.add(barGroup);\n this._positionGroup();\n };\n SliderZoomView.prototype._resetLocation = function () {\n var dataZoomModel = this.dataZoomModel;\n var api = this.api;\n var showMoveHandle = dataZoomModel.get('brushSelect');\n var moveHandleSize = showMoveHandle ? DEFAULT_MOVE_HANDLE_SIZE : 0;\n // If some of x/y/width/height are not specified,\n // auto-adapt according to target grid.\n var coordRect = this._findCoordRect();\n var ecSize = {\n width: api.getWidth(),\n height: api.getHeight()\n };\n // Default align by coordinate system rect.\n var positionInfo = this._orient === HORIZONTAL ? {\n // Why using 'right', because right should be used in vertical,\n // and it is better to be consistent for dealing with position param merge.\n right: ecSize.width - coordRect.x - coordRect.width,\n top: ecSize.height - DEFAULT_FILLER_SIZE - DEFAULT_LOCATION_EDGE_GAP - moveHandleSize,\n width: coordRect.width,\n height: DEFAULT_FILLER_SIZE\n } : {\n right: DEFAULT_LOCATION_EDGE_GAP,\n top: coordRect.y,\n width: DEFAULT_FILLER_SIZE,\n height: coordRect.height\n };\n // Do not write back to option and replace value 'ph', because\n // the 'ph' value should be recalculated when resize.\n var layoutParams = layout.getLayoutParams(dataZoomModel.option);\n // Replace the placeholder value.\n each(['right', 'top', 'width', 'height'], function (name) {\n if (layoutParams[name] === 'ph') {\n layoutParams[name] = positionInfo[name];\n }\n });\n var layoutRect = layout.getLayoutRect(layoutParams, ecSize);\n this._location = {\n x: layoutRect.x,\n y: layoutRect.y\n };\n this._size = [layoutRect.width, layoutRect.height];\n this._orient === VERTICAL && this._size.reverse();\n };\n SliderZoomView.prototype._positionGroup = function () {\n var thisGroup = this.group;\n var location = this._location;\n var orient = this._orient;\n // Just use the first axis to determine mapping.\n var targetAxisModel = this.dataZoomModel.getFirstTargetAxisModel();\n var inverse = targetAxisModel && targetAxisModel.get('inverse');\n var sliderGroup = this._displayables.sliderGroup;\n var otherAxisInverse = (this._dataShadowInfo || {}).otherAxisInverse;\n // Transform barGroup.\n sliderGroup.attr(orient === HORIZONTAL && !inverse ? {\n scaleY: otherAxisInverse ? 1 : -1,\n scaleX: 1\n } : orient === HORIZONTAL && inverse ? {\n scaleY: otherAxisInverse ? 1 : -1,\n scaleX: -1\n } : orient === VERTICAL && !inverse ? {\n scaleY: otherAxisInverse ? -1 : 1,\n scaleX: 1,\n rotation: Math.PI / 2\n }\n // Don't use Math.PI, considering shadow direction.\n : {\n scaleY: otherAxisInverse ? -1 : 1,\n scaleX: -1,\n rotation: Math.PI / 2\n });\n // Position barGroup\n var rect = thisGroup.getBoundingRect([sliderGroup]);\n thisGroup.x = location.x - rect.x;\n thisGroup.y = location.y - rect.y;\n thisGroup.markRedraw();\n };\n SliderZoomView.prototype._getViewExtent = function () {\n return [0, this._size[0]];\n };\n SliderZoomView.prototype._renderBackground = function () {\n var dataZoomModel = this.dataZoomModel;\n var size = this._size;\n var barGroup = this._displayables.sliderGroup;\n var brushSelect = dataZoomModel.get('brushSelect');\n barGroup.add(new Rect({\n silent: true,\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1]\n },\n style: {\n fill: dataZoomModel.get('backgroundColor')\n },\n z2: -40\n }));\n // Click panel, over shadow, below handles.\n var clickPanel = new Rect({\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1]\n },\n style: {\n fill: 'transparent'\n },\n z2: 0,\n onclick: bind(this._onClickPanel, this)\n });\n var zr = this.api.getZr();\n if (brushSelect) {\n clickPanel.on('mousedown', this._onBrushStart, this);\n clickPanel.cursor = 'crosshair';\n zr.on('mousemove', this._onBrush);\n zr.on('mouseup', this._onBrushEnd);\n } else {\n zr.off('mousemove', this._onBrush);\n zr.off('mouseup', this._onBrushEnd);\n }\n barGroup.add(clickPanel);\n };\n SliderZoomView.prototype._renderDataShadow = function () {\n var info = this._dataShadowInfo = this._prepareDataShadowInfo();\n this._displayables.dataShadowSegs = [];\n if (!info) {\n return;\n }\n var size = this._size;\n var oldSize = this._shadowSize || [];\n var seriesModel = info.series;\n var data = seriesModel.getRawData();\n var candlestickDim = seriesModel.getShadowDim && seriesModel.getShadowDim();\n var otherDim = candlestickDim && data.getDimensionInfo(candlestickDim) ? seriesModel.getShadowDim() // @see candlestick\n : info.otherDim;\n if (otherDim == null) {\n return;\n }\n var polygonPts = this._shadowPolygonPts;\n var polylinePts = this._shadowPolylinePts;\n // Not re-render if data doesn't change.\n if (data !== this._shadowData || otherDim !== this._shadowDim || size[0] !== oldSize[0] || size[1] !== oldSize[1]) {\n var otherDataExtent_1 = data.getDataExtent(otherDim);\n // Nice extent.\n var otherOffset = (otherDataExtent_1[1] - otherDataExtent_1[0]) * 0.3;\n otherDataExtent_1 = [otherDataExtent_1[0] - otherOffset, otherDataExtent_1[1] + otherOffset];\n var otherShadowExtent_1 = [0, size[1]];\n var thisShadowExtent = [0, size[0]];\n var areaPoints_1 = [[size[0], 0], [0, 0]];\n var linePoints_1 = [];\n var step_1 = thisShadowExtent[1] / (data.count() - 1);\n var thisCoord_1 = 0;\n // Optimize for large data shadow\n var stride_1 = Math.round(data.count() / size[0]);\n var lastIsEmpty_1;\n data.each([otherDim], function (value, index) {\n if (stride_1 > 0 && index % stride_1) {\n thisCoord_1 += step_1;\n return;\n }\n // FIXME\n // Should consider axis.min/axis.max when drawing dataShadow.\n // FIXME\n // 应该使用统一的空判断?还是在list里进行空判断?\n var isEmpty = value == null || isNaN(value) || value === '';\n // See #4235.\n var otherCoord = isEmpty ? 0 : linearMap(value, otherDataExtent_1, otherShadowExtent_1, true);\n // Attempt to draw data shadow precisely when there are empty value.\n if (isEmpty && !lastIsEmpty_1 && index) {\n areaPoints_1.push([areaPoints_1[areaPoints_1.length - 1][0], 0]);\n linePoints_1.push([linePoints_1[linePoints_1.length - 1][0], 0]);\n } else if (!isEmpty && lastIsEmpty_1) {\n areaPoints_1.push([thisCoord_1, 0]);\n linePoints_1.push([thisCoord_1, 0]);\n }\n areaPoints_1.push([thisCoord_1, otherCoord]);\n linePoints_1.push([thisCoord_1, otherCoord]);\n thisCoord_1 += step_1;\n lastIsEmpty_1 = isEmpty;\n });\n polygonPts = this._shadowPolygonPts = areaPoints_1;\n polylinePts = this._shadowPolylinePts = linePoints_1;\n }\n this._shadowData = data;\n this._shadowDim = otherDim;\n this._shadowSize = [size[0], size[1]];\n var dataZoomModel = this.dataZoomModel;\n function createDataShadowGroup(isSelectedArea) {\n var model = dataZoomModel.getModel(isSelectedArea ? 'selectedDataBackground' : 'dataBackground');\n var group = new graphic.Group();\n var polygon = new graphic.Polygon({\n shape: {\n points: polygonPts\n },\n segmentIgnoreThreshold: 1,\n style: model.getModel('areaStyle').getAreaStyle(),\n silent: true,\n z2: -20\n });\n var polyline = new graphic.Polyline({\n shape: {\n points: polylinePts\n },\n segmentIgnoreThreshold: 1,\n style: model.getModel('lineStyle').getLineStyle(),\n silent: true,\n z2: -19\n });\n group.add(polygon);\n group.add(polyline);\n return group;\n }\n // let dataBackgroundModel = dataZoomModel.getModel('dataBackground');\n for (var i = 0; i < 3; i++) {\n var group = createDataShadowGroup(i === 1);\n this._displayables.sliderGroup.add(group);\n this._displayables.dataShadowSegs.push(group);\n }\n };\n SliderZoomView.prototype._prepareDataShadowInfo = function () {\n var dataZoomModel = this.dataZoomModel;\n var showDataShadow = dataZoomModel.get('showDataShadow');\n if (showDataShadow === false) {\n return;\n }\n // Find a representative series.\n var result;\n var ecModel = this.ecModel;\n dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\n var seriesModels = dataZoomModel.getAxisProxy(axisDim, axisIndex).getTargetSeriesModels();\n each(seriesModels, function (seriesModel) {\n if (result) {\n return;\n }\n if (showDataShadow !== true && indexOf(SHOW_DATA_SHADOW_SERIES_TYPE, seriesModel.get('type')) < 0) {\n return;\n }\n var thisAxis = ecModel.getComponent(getAxisMainType(axisDim), axisIndex).axis;\n var otherDim = getOtherDim(axisDim);\n var otherAxisInverse;\n var coordSys = seriesModel.coordinateSystem;\n if (otherDim != null && coordSys.getOtherAxis) {\n otherAxisInverse = coordSys.getOtherAxis(thisAxis).inverse;\n }\n otherDim = seriesModel.getData().mapDimension(otherDim);\n result = {\n thisAxis: thisAxis,\n series: seriesModel,\n thisDim: axisDim,\n otherDim: otherDim,\n otherAxisInverse: otherAxisInverse\n };\n }, this);\n }, this);\n return result;\n };\n SliderZoomView.prototype._renderHandle = function () {\n var thisGroup = this.group;\n var displayables = this._displayables;\n var handles = displayables.handles = [null, null];\n var handleLabels = displayables.handleLabels = [null, null];\n var sliderGroup = this._displayables.sliderGroup;\n var size = this._size;\n var dataZoomModel = this.dataZoomModel;\n var api = this.api;\n var borderRadius = dataZoomModel.get('borderRadius') || 0;\n var brushSelect = dataZoomModel.get('brushSelect');\n var filler = displayables.filler = new Rect({\n silent: brushSelect,\n style: {\n fill: dataZoomModel.get('fillerColor')\n },\n textConfig: {\n position: 'inside'\n }\n });\n sliderGroup.add(filler);\n // Frame border.\n sliderGroup.add(new Rect({\n silent: true,\n subPixelOptimize: true,\n shape: {\n x: 0,\n y: 0,\n width: size[0],\n height: size[1],\n r: borderRadius\n },\n style: {\n // deprecated option\n stroke: dataZoomModel.get('dataBackgroundColor') || dataZoomModel.get('borderColor'),\n lineWidth: DEFAULT_FRAME_BORDER_WIDTH,\n fill: 'rgba(0,0,0,0)'\n }\n }));\n // Left and right handle to resize\n each([0, 1], function (handleIndex) {\n var iconStr = dataZoomModel.get('handleIcon');\n if (!symbolBuildProxies[iconStr] && iconStr.indexOf('path://') < 0 && iconStr.indexOf('image://') < 0) {\n // Compatitable with the old icon parsers. Which can use a path string without path://\n iconStr = 'path://' + iconStr;\n if (process.env.NODE_ENV !== 'production') {\n deprecateLog('handleIcon now needs \\'path://\\' prefix when using a path string');\n }\n }\n var path = createSymbol(iconStr, -1, 0, 2, 2, null, true);\n path.attr({\n cursor: getCursor(this._orient),\n draggable: true,\n drift: bind(this._onDragMove, this, handleIndex),\n ondragend: bind(this._onDragEnd, this),\n onmouseover: bind(this._showDataInfo, this, true),\n onmouseout: bind(this._showDataInfo, this, false),\n z2: 5\n });\n var bRect = path.getBoundingRect();\n var handleSize = dataZoomModel.get('handleSize');\n this._handleHeight = parsePercent(handleSize, this._size[1]);\n this._handleWidth = bRect.width / bRect.height * this._handleHeight;\n path.setStyle(dataZoomModel.getModel('handleStyle').getItemStyle());\n path.style.strokeNoScale = true;\n path.rectHover = true;\n path.ensureState('emphasis').style = dataZoomModel.getModel(['emphasis', 'handleStyle']).getItemStyle();\n enableHoverEmphasis(path);\n var handleColor = dataZoomModel.get('handleColor'); // deprecated option\n // Compatitable with previous version\n if (handleColor != null) {\n path.style.fill = handleColor;\n }\n sliderGroup.add(handles[handleIndex] = path);\n var textStyleModel = dataZoomModel.getModel('textStyle');\n var handleLabel = dataZoomModel.get('handleLabel') || {};\n var handleLabelShow = handleLabel.show || false;\n thisGroup.add(handleLabels[handleIndex] = new graphic.Text({\n silent: true,\n invisible: !handleLabelShow,\n style: createTextStyle(textStyleModel, {\n x: 0,\n y: 0,\n text: '',\n verticalAlign: 'middle',\n align: 'center',\n fill: textStyleModel.getTextColor(),\n font: textStyleModel.getFont()\n }),\n z2: 10\n }));\n }, this);\n // Handle to move. Only visible when brushSelect is set true.\n var actualMoveZone = filler;\n if (brushSelect) {\n var moveHandleHeight = parsePercent(dataZoomModel.get('moveHandleSize'), size[1]);\n var moveHandle_1 = displayables.moveHandle = new graphic.Rect({\n style: dataZoomModel.getModel('moveHandleStyle').getItemStyle(),\n silent: true,\n shape: {\n r: [0, 0, 2, 2],\n y: size[1] - 0.5,\n height: moveHandleHeight\n }\n });\n var iconSize = moveHandleHeight * 0.8;\n var moveHandleIcon = displayables.moveHandleIcon = createSymbol(dataZoomModel.get('moveHandleIcon'), -iconSize / 2, -iconSize / 2, iconSize, iconSize, '#fff', true);\n moveHandleIcon.silent = true;\n moveHandleIcon.y = size[1] + moveHandleHeight / 2 - 0.5;\n moveHandle_1.ensureState('emphasis').style = dataZoomModel.getModel(['emphasis', 'moveHandleStyle']).getItemStyle();\n var moveZoneExpandSize = Math.min(size[1] / 2, Math.max(moveHandleHeight, 10));\n actualMoveZone = displayables.moveZone = new graphic.Rect({\n invisible: true,\n shape: {\n y: size[1] - moveZoneExpandSize,\n height: moveHandleHeight + moveZoneExpandSize\n }\n });\n actualMoveZone.on('mouseover', function () {\n api.enterEmphasis(moveHandle_1);\n }).on('mouseout', function () {\n api.leaveEmphasis(moveHandle_1);\n });\n sliderGroup.add(moveHandle_1);\n sliderGroup.add(moveHandleIcon);\n sliderGroup.add(actualMoveZone);\n }\n actualMoveZone.attr({\n draggable: true,\n cursor: getCursor(this._orient),\n drift: bind(this._onDragMove, this, 'all'),\n ondragstart: bind(this._showDataInfo, this, true),\n ondragend: bind(this._onDragEnd, this),\n onmouseover: bind(this._showDataInfo, this, true),\n onmouseout: bind(this._showDataInfo, this, false)\n });\n };\n SliderZoomView.prototype._resetInterval = function () {\n var range = this._range = this.dataZoomModel.getPercentRange();\n var viewExtent = this._getViewExtent();\n this._handleEnds = [linearMap(range[0], [0, 100], viewExtent, true), linearMap(range[1], [0, 100], viewExtent, true)];\n };\n SliderZoomView.prototype._updateInterval = function (handleIndex, delta) {\n var dataZoomModel = this.dataZoomModel;\n var handleEnds = this._handleEnds;\n var viewExtend = this._getViewExtent();\n var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();\n var percentExtent = [0, 100];\n sliderMove(delta, handleEnds, viewExtend, dataZoomModel.get('zoomLock') ? 'all' : handleIndex, minMaxSpan.minSpan != null ? linearMap(minMaxSpan.minSpan, percentExtent, viewExtend, true) : null, minMaxSpan.maxSpan != null ? linearMap(minMaxSpan.maxSpan, percentExtent, viewExtend, true) : null);\n var lastRange = this._range;\n var range = this._range = asc([linearMap(handleEnds[0], viewExtend, percentExtent, true), linearMap(handleEnds[1], viewExtend, percentExtent, true)]);\n return !lastRange || lastRange[0] !== range[0] || lastRange[1] !== range[1];\n };\n SliderZoomView.prototype._updateView = function (nonRealtime) {\n var displaybles = this._displayables;\n var handleEnds = this._handleEnds;\n var handleInterval = asc(handleEnds.slice());\n var size = this._size;\n each([0, 1], function (handleIndex) {\n // Handles\n var handle = displaybles.handles[handleIndex];\n var handleHeight = this._handleHeight;\n handle.attr({\n scaleX: handleHeight / 2,\n scaleY: handleHeight / 2,\n // This is a trick, by adding an extra tiny offset to let the default handle's end point align to the drag window.\n // NOTE: It may affect some custom shapes a bit. But we prefer to have better result by default.\n x: handleEnds[handleIndex] + (handleIndex ? -1 : 1),\n y: size[1] / 2 - handleHeight / 2\n });\n }, this);\n // Filler\n displaybles.filler.setShape({\n x: handleInterval[0],\n y: 0,\n width: handleInterval[1] - handleInterval[0],\n height: size[1]\n });\n var viewExtent = {\n x: handleInterval[0],\n width: handleInterval[1] - handleInterval[0]\n };\n // Move handle\n if (displaybles.moveHandle) {\n displaybles.moveHandle.setShape(viewExtent);\n displaybles.moveZone.setShape(viewExtent);\n // Force update path on the invisible object\n displaybles.moveZone.getBoundingRect();\n displaybles.moveHandleIcon && displaybles.moveHandleIcon.attr('x', viewExtent.x + viewExtent.width / 2);\n }\n // update clip path of shadow.\n var dataShadowSegs = displaybles.dataShadowSegs;\n var segIntervals = [0, handleInterval[0], handleInterval[1], size[0]];\n for (var i = 0; i < dataShadowSegs.length; i++) {\n var segGroup = dataShadowSegs[i];\n var clipPath = segGroup.getClipPath();\n if (!clipPath) {\n clipPath = new graphic.Rect();\n segGroup.setClipPath(clipPath);\n }\n clipPath.setShape({\n x: segIntervals[i],\n y: 0,\n width: segIntervals[i + 1] - segIntervals[i],\n height: size[1]\n });\n }\n this._updateDataInfo(nonRealtime);\n };\n SliderZoomView.prototype._updateDataInfo = function (nonRealtime) {\n var dataZoomModel = this.dataZoomModel;\n var displaybles = this._displayables;\n var handleLabels = displaybles.handleLabels;\n var orient = this._orient;\n var labelTexts = ['', ''];\n // FIXME\n // date型,支持formatter,autoformatter(ec2 date.getAutoFormatter)\n if (dataZoomModel.get('showDetail')) {\n var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\n if (axisProxy) {\n var axis = axisProxy.getAxisModel().axis;\n var range = this._range;\n var dataInterval = nonRealtime\n // See #4434, data and axis are not processed and reset yet in non-realtime mode.\n ? axisProxy.calculateDataWindow({\n start: range[0],\n end: range[1]\n }).valueWindow : axisProxy.getDataValueWindow();\n labelTexts = [this._formatLabel(dataInterval[0], axis), this._formatLabel(dataInterval[1], axis)];\n }\n }\n var orderedHandleEnds = asc(this._handleEnds.slice());\n setLabel.call(this, 0);\n setLabel.call(this, 1);\n function setLabel(handleIndex) {\n // Label\n // Text should not transform by barGroup.\n // Ignore handlers transform\n var barTransform = graphic.getTransform(displaybles.handles[handleIndex].parent, this.group);\n var direction = graphic.transformDirection(handleIndex === 0 ? 'right' : 'left', barTransform);\n var offset = this._handleWidth / 2 + LABEL_GAP;\n var textPoint = graphic.applyTransform([orderedHandleEnds[handleIndex] + (handleIndex === 0 ? -offset : offset), this._size[1] / 2], barTransform);\n handleLabels[handleIndex].setStyle({\n x: textPoint[0],\n y: textPoint[1],\n verticalAlign: orient === HORIZONTAL ? 'middle' : direction,\n align: orient === HORIZONTAL ? direction : 'center',\n text: labelTexts[handleIndex]\n });\n }\n };\n SliderZoomView.prototype._formatLabel = function (value, axis) {\n var dataZoomModel = this.dataZoomModel;\n var labelFormatter = dataZoomModel.get('labelFormatter');\n var labelPrecision = dataZoomModel.get('labelPrecision');\n if (labelPrecision == null || labelPrecision === 'auto') {\n labelPrecision = axis.getPixelPrecision();\n }\n var valueStr = value == null || isNaN(value) ? ''\n // FIXME Glue code\n : axis.type === 'category' || axis.type === 'time' ? axis.scale.getLabel({\n value: Math.round(value)\n })\n // param of toFixed should less then 20.\n : value.toFixed(Math.min(labelPrecision, 20));\n return isFunction(labelFormatter) ? labelFormatter(value, valueStr) : isString(labelFormatter) ? labelFormatter.replace('{value}', valueStr) : valueStr;\n };\n /**\r\n * @param isEmphasis true: show, false: hide\r\n */\n SliderZoomView.prototype._showDataInfo = function (isEmphasis) {\n var handleLabel = this.dataZoomModel.get('handleLabel') || {};\n var normalShow = handleLabel.show || false;\n var emphasisHandleLabel = this.dataZoomModel.getModel(['emphasis', 'handleLabel']);\n var emphasisShow = emphasisHandleLabel.get('show') || false;\n // Dragging is considered as emphasis, unless emphasisShow is false\n var toShow = isEmphasis || this._dragging ? emphasisShow : normalShow;\n var displayables = this._displayables;\n var handleLabels = displayables.handleLabels;\n handleLabels[0].attr('invisible', !toShow);\n handleLabels[1].attr('invisible', !toShow);\n // Highlight move handle\n displayables.moveHandle && this.api[toShow ? 'enterEmphasis' : 'leaveEmphasis'](displayables.moveHandle, 1);\n };\n SliderZoomView.prototype._onDragMove = function (handleIndex, dx, dy, event) {\n this._dragging = true;\n // For mobile device, prevent screen slider on the button.\n eventTool.stop(event.event);\n // Transform dx, dy to bar coordination.\n var barTransform = this._displayables.sliderGroup.getLocalTransform();\n var vertex = graphic.applyTransform([dx, dy], barTransform, true);\n var changed = this._updateInterval(handleIndex, vertex[0]);\n var realtime = this.dataZoomModel.get('realtime');\n this._updateView(!realtime);\n // Avoid dispatch dataZoom repeatly but range not changed,\n // which cause bad visual effect when progressive enabled.\n changed && realtime && this._dispatchZoomAction(true);\n };\n SliderZoomView.prototype._onDragEnd = function () {\n this._dragging = false;\n this._showDataInfo(false);\n // While in realtime mode and stream mode, dispatch action when\n // drag end will cause the whole view rerender, which is unnecessary.\n var realtime = this.dataZoomModel.get('realtime');\n !realtime && this._dispatchZoomAction(false);\n };\n SliderZoomView.prototype._onClickPanel = function (e) {\n var size = this._size;\n var localPoint = this._displayables.sliderGroup.transformCoordToLocal(e.offsetX, e.offsetY);\n if (localPoint[0] < 0 || localPoint[0] > size[0] || localPoint[1] < 0 || localPoint[1] > size[1]) {\n return;\n }\n var handleEnds = this._handleEnds;\n var center = (handleEnds[0] + handleEnds[1]) / 2;\n var changed = this._updateInterval('all', localPoint[0] - center);\n this._updateView();\n changed && this._dispatchZoomAction(false);\n };\n SliderZoomView.prototype._onBrushStart = function (e) {\n var x = e.offsetX;\n var y = e.offsetY;\n this._brushStart = new graphic.Point(x, y);\n this._brushing = true;\n this._brushStartTime = +new Date();\n // this._updateBrushRect(x, y);\n };\n SliderZoomView.prototype._onBrushEnd = function (e) {\n if (!this._brushing) {\n return;\n }\n var brushRect = this._displayables.brushRect;\n this._brushing = false;\n if (!brushRect) {\n return;\n }\n brushRect.attr('ignore', true);\n var brushShape = brushRect.shape;\n var brushEndTime = +new Date();\n // console.log(brushEndTime - this._brushStartTime);\n if (brushEndTime - this._brushStartTime < 200 && Math.abs(brushShape.width) < 5) {\n // Will treat it as a click\n return;\n }\n var viewExtend = this._getViewExtent();\n var percentExtent = [0, 100];\n this._range = asc([linearMap(brushShape.x, viewExtend, percentExtent, true), linearMap(brushShape.x + brushShape.width, viewExtend, percentExtent, true)]);\n this._handleEnds = [brushShape.x, brushShape.x + brushShape.width];\n this._updateView();\n this._dispatchZoomAction(false);\n };\n SliderZoomView.prototype._onBrush = function (e) {\n if (this._brushing) {\n // For mobile device, prevent screen slider on the button.\n eventTool.stop(e.event);\n this._updateBrushRect(e.offsetX, e.offsetY);\n }\n };\n SliderZoomView.prototype._updateBrushRect = function (mouseX, mouseY) {\n var displayables = this._displayables;\n var dataZoomModel = this.dataZoomModel;\n var brushRect = displayables.brushRect;\n if (!brushRect) {\n brushRect = displayables.brushRect = new Rect({\n silent: true,\n style: dataZoomModel.getModel('brushStyle').getItemStyle()\n });\n displayables.sliderGroup.add(brushRect);\n }\n brushRect.attr('ignore', false);\n var brushStart = this._brushStart;\n var sliderGroup = this._displayables.sliderGroup;\n var endPoint = sliderGroup.transformCoordToLocal(mouseX, mouseY);\n var startPoint = sliderGroup.transformCoordToLocal(brushStart.x, brushStart.y);\n var size = this._size;\n endPoint[0] = Math.max(Math.min(size[0], endPoint[0]), 0);\n brushRect.setShape({\n x: startPoint[0],\n y: 0,\n width: endPoint[0] - startPoint[0],\n height: size[1]\n });\n };\n /**\r\n * This action will be throttled.\r\n */\n SliderZoomView.prototype._dispatchZoomAction = function (realtime) {\n var range = this._range;\n this.api.dispatchAction({\n type: 'dataZoom',\n from: this.uid,\n dataZoomId: this.dataZoomModel.id,\n animation: realtime ? REALTIME_ANIMATION_CONFIG : null,\n start: range[0],\n end: range[1]\n });\n };\n SliderZoomView.prototype._findCoordRect = function () {\n // Find the grid corresponding to the first axis referred by dataZoom.\n var rect;\n var coordSysInfoList = collectReferCoordSysModelInfo(this.dataZoomModel).infoList;\n if (!rect && coordSysInfoList.length) {\n var coordSys = coordSysInfoList[0].model.coordinateSystem;\n rect = coordSys.getRect && coordSys.getRect();\n }\n if (!rect) {\n var width = this.api.getWidth();\n var height = this.api.getHeight();\n rect = {\n x: width * 0.2,\n y: height * 0.2,\n width: width * 0.6,\n height: height * 0.6\n };\n }\n return rect;\n };\n SliderZoomView.type = 'dataZoom.slider';\n return SliderZoomView;\n}(DataZoomView);\nfunction getOtherDim(thisDim) {\n // FIXME\n // 这个逻辑和getOtherAxis里一致,但是写在这里是否不好\n var map = {\n x: 'y',\n y: 'x',\n radius: 'angle',\n angle: 'radius'\n };\n return map[thisDim];\n}\nfunction getCursor(orient) {\n return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\n}\nexport default SliderZoomView;"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}