|   | 
| /* | 
| * Licensed to the Apache Software Foundation (ASF) under one | 
| * or more contributor license agreements.  See the NOTICE file | 
| * distributed with this work for additional information | 
| * regarding copyright ownership.  The ASF licenses this file | 
| * to you under the Apache License, Version 2.0 (the | 
| * "License"); you may not use this file except in compliance | 
| * with the License.  You may obtain a copy of the License at | 
| * | 
| *   http://www.apache.org/licenses/LICENSE-2.0 | 
| * | 
| * Unless required by applicable law or agreed to in writing, | 
| * software distributed under the License is distributed on an | 
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
| * KIND, either express or implied.  See the License for the | 
| * specific language governing permissions and limitations | 
| * under the License. | 
| */ | 
|   | 
|   | 
| /** | 
|  * AUTO-GENERATED FILE. DO NOT MODIFY. | 
|  */ | 
|   | 
| /* | 
| * Licensed to the Apache Software Foundation (ASF) under one | 
| * or more contributor license agreements.  See the NOTICE file | 
| * distributed with this work for additional information | 
| * regarding copyright ownership.  The ASF licenses this file | 
| * to you under the Apache License, Version 2.0 (the | 
| * "License"); you may not use this file except in compliance | 
| * with the License.  You may obtain a copy of the License at | 
| * | 
| *   http://www.apache.org/licenses/LICENSE-2.0 | 
| * | 
| * Unless required by applicable law or agreed to in writing, | 
| * software distributed under the License is distributed on an | 
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
| * KIND, either express or implied.  See the License for the | 
| * specific language governing permissions and limitations | 
| * under the License. | 
| */ | 
| import { __extends } from "tslib"; | 
| import BaseAxisPointer from './BaseAxisPointer.js'; | 
| import * as graphic from '../../util/graphic.js'; | 
| import * as viewHelper from './viewHelper.js'; | 
| import * as matrix from 'zrender/lib/core/matrix.js'; | 
| import AxisBuilder from '../axis/AxisBuilder.js'; | 
| var PolarAxisPointer = /** @class */function (_super) { | 
|   __extends(PolarAxisPointer, _super); | 
|   function PolarAxisPointer() { | 
|     return _super !== null && _super.apply(this, arguments) || this; | 
|   } | 
|   /** | 
|    * @override | 
|    */ | 
|   PolarAxisPointer.prototype.makeElOption = function (elOption, value, axisModel, axisPointerModel, api) { | 
|     var axis = axisModel.axis; | 
|     if (axis.dim === 'angle') { | 
|       this.animationThreshold = Math.PI / 18; | 
|     } | 
|     var polar = axis.polar; | 
|     var otherAxis = polar.getOtherAxis(axis); | 
|     var otherExtent = otherAxis.getExtent(); | 
|     var coordValue = axis.dataToCoord(value); | 
|     var axisPointerType = axisPointerModel.get('type'); | 
|     if (axisPointerType && axisPointerType !== 'none') { | 
|       var elStyle = viewHelper.buildElStyle(axisPointerModel); | 
|       var pointerOption = pointerShapeBuilder[axisPointerType](axis, polar, coordValue, otherExtent); | 
|       pointerOption.style = elStyle; | 
|       elOption.graphicKey = pointerOption.type; | 
|       elOption.pointer = pointerOption; | 
|     } | 
|     var labelMargin = axisPointerModel.get(['label', 'margin']); | 
|     var labelPos = getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin); | 
|     viewHelper.buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos); | 
|   }; | 
|   return PolarAxisPointer; | 
| }(BaseAxisPointer); | 
| ; | 
| function getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin) { | 
|   var axis = axisModel.axis; | 
|   var coord = axis.dataToCoord(value); | 
|   var axisAngle = polar.getAngleAxis().getExtent()[0]; | 
|   axisAngle = axisAngle / 180 * Math.PI; | 
|   var radiusExtent = polar.getRadiusAxis().getExtent(); | 
|   var position; | 
|   var align; | 
|   var verticalAlign; | 
|   if (axis.dim === 'radius') { | 
|     var transform = matrix.create(); | 
|     matrix.rotate(transform, transform, axisAngle); | 
|     matrix.translate(transform, transform, [polar.cx, polar.cy]); | 
|     position = graphic.applyTransform([coord, -labelMargin], transform); | 
|     var labelRotation = axisModel.getModel('axisLabel').get('rotate') || 0; | 
|     // @ts-ignore | 
|     var labelLayout = AxisBuilder.innerTextLayout(axisAngle, labelRotation * Math.PI / 180, -1); | 
|     align = labelLayout.textAlign; | 
|     verticalAlign = labelLayout.textVerticalAlign; | 
|   } else { | 
|     // angle axis | 
|     var r = radiusExtent[1]; | 
|     position = polar.coordToPoint([r + labelMargin, coord]); | 
|     var cx = polar.cx; | 
|     var cy = polar.cy; | 
|     align = Math.abs(position[0] - cx) / r < 0.3 ? 'center' : position[0] > cx ? 'left' : 'right'; | 
|     verticalAlign = Math.abs(position[1] - cy) / r < 0.3 ? 'middle' : position[1] > cy ? 'top' : 'bottom'; | 
|   } | 
|   return { | 
|     position: position, | 
|     align: align, | 
|     verticalAlign: verticalAlign | 
|   }; | 
| } | 
| var pointerShapeBuilder = { | 
|   line: function (axis, polar, coordValue, otherExtent) { | 
|     return axis.dim === 'angle' ? { | 
|       type: 'Line', | 
|       shape: viewHelper.makeLineShape(polar.coordToPoint([otherExtent[0], coordValue]), polar.coordToPoint([otherExtent[1], coordValue])) | 
|     } : { | 
|       type: 'Circle', | 
|       shape: { | 
|         cx: polar.cx, | 
|         cy: polar.cy, | 
|         r: coordValue | 
|       } | 
|     }; | 
|   }, | 
|   shadow: function (axis, polar, coordValue, otherExtent) { | 
|     var bandWidth = Math.max(1, axis.getBandWidth()); | 
|     var radian = Math.PI / 180; | 
|     return axis.dim === 'angle' ? { | 
|       type: 'Sector', | 
|       shape: viewHelper.makeSectorShape(polar.cx, polar.cy, otherExtent[0], otherExtent[1], | 
|       // In ECharts y is negative if angle is positive | 
|       (-coordValue - bandWidth / 2) * radian, (-coordValue + bandWidth / 2) * radian) | 
|     } : { | 
|       type: 'Sector', | 
|       shape: viewHelper.makeSectorShape(polar.cx, polar.cy, coordValue - bandWidth / 2, coordValue + bandWidth / 2, 0, Math.PI * 2) | 
|     }; | 
|   } | 
| }; | 
| export default PolarAxisPointer; |