| 
/* 
 | 
* 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 * as textContain from 'zrender/lib/contain/text.js'; 
 | 
import Axis from '../Axis.js'; 
 | 
import { makeInner } from '../../util/model.js'; 
 | 
var inner = makeInner(); 
 | 
var AngleAxis = /** @class */function (_super) { 
 | 
  __extends(AngleAxis, _super); 
 | 
  function AngleAxis(scale, angleExtent) { 
 | 
    return _super.call(this, 'angle', scale, angleExtent || [0, 360]) || this; 
 | 
  } 
 | 
  AngleAxis.prototype.pointToData = function (point, clamp) { 
 | 
    return this.polar.pointToData(point, clamp)[this.dim === 'radius' ? 0 : 1]; 
 | 
  }; 
 | 
  /** 
 | 
   * Only be called in category axis. 
 | 
   * Angle axis uses text height to decide interval 
 | 
   * 
 | 
   * @override 
 | 
   * @return {number} Auto interval for cateogry axis tick and label 
 | 
   */ 
 | 
  AngleAxis.prototype.calculateCategoryInterval = function () { 
 | 
    var axis = this; 
 | 
    var labelModel = axis.getLabelModel(); 
 | 
    var ordinalScale = axis.scale; 
 | 
    var ordinalExtent = ordinalScale.getExtent(); 
 | 
    // Providing this method is for optimization: 
 | 
    // avoid generating a long array by `getTicks` 
 | 
    // in large category data case. 
 | 
    var tickCount = ordinalScale.count(); 
 | 
    if (ordinalExtent[1] - ordinalExtent[0] < 1) { 
 | 
      return 0; 
 | 
    } 
 | 
    var tickValue = ordinalExtent[0]; 
 | 
    var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue); 
 | 
    var unitH = Math.abs(unitSpan); 
 | 
    // Not precise, just use height as text width 
 | 
    // and each distance from axis line yet. 
 | 
    var rect = textContain.getBoundingRect(tickValue == null ? '' : tickValue + '', labelModel.getFont(), 'center', 'top'); 
 | 
    var maxH = Math.max(rect.height, 7); 
 | 
    var dh = maxH / unitH; 
 | 
    // 0/0 is NaN, 1/0 is Infinity. 
 | 
    isNaN(dh) && (dh = Infinity); 
 | 
    var interval = Math.max(0, Math.floor(dh)); 
 | 
    var cache = inner(axis.model); 
 | 
    var lastAutoInterval = cache.lastAutoInterval; 
 | 
    var lastTickCount = cache.lastTickCount; 
 | 
    // Use cache to keep interval stable while moving zoom window, 
 | 
    // otherwise the calculated interval might jitter when the zoom 
 | 
    // window size is close to the interval-changing size. 
 | 
    if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 
 | 
    // Always choose the bigger one, otherwise the critical 
 | 
    // point is not the same when zooming in or zooming out. 
 | 
    && lastAutoInterval > interval) { 
 | 
      interval = lastAutoInterval; 
 | 
    } 
 | 
    // Only update cache if cache not used, otherwise the 
 | 
    // changing of interval is too insensitive. 
 | 
    else { 
 | 
      cache.lastTickCount = tickCount; 
 | 
      cache.lastAutoInterval = interval; 
 | 
    } 
 | 
    return interval; 
 | 
  }; 
 | 
  return AngleAxis; 
 | 
}(Axis); 
 | 
AngleAxis.prototype.dataToAngle = Axis.prototype.dataToCoord; 
 | 
AngleAxis.prototype.angleToData = Axis.prototype.coordToData; 
 | 
export default AngleAxis; 
 |