| 
/* 
 | 
* 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; 
 |