_calculatePosition(x, y) {
      const dX = x - this._dimensionParameters.offsetX + 1 - this._dimensionParameters.radius;
      const dY = y - this._dimensionParameters.offsetY + 1 - this._dimensionParameters.radius;
      const mod = dX >= 0 ? 0 : 180;
      const angle = Math.atan(dY / dX) * 180 / Math.PI + 90 + mod;
      const angleStep = 360 / this.itemMax * this.valueStep;
      const radius = Math.sqrt(dX * dX + dY * dY);
      const isOuter = radius <= this._dimensionParameters.outerMax && radius > (this.showInnerCircle ? this._dimensionParameters.outerMin : this._dimensionParameters.innerMin);
      const isInner = this.showInnerCircle && radius <= this._dimensionParameters.innerMax && radius > this._dimensionParameters.innerMin;
      const isOuterHover = radius <= this._dimensionParameters.outerMax && radius > this._dimensionParameters.outerMin;
      const isInnerHover = isInner;
      let finalAngle = Math.round((angle === 0 ? 360 : angle) / angleStep) * angleStep;
      if (finalAngle === 0) {
        finalAngle = 360;
      }
      // selected item calculations
      if (isInner || isOuter) {
        this._selectedValue = finalAngle / angleStep * this.valueStep;
        if (isInner) {
          this._selectedValue += this.itemMax;
        }
      } else {
        this._selectedValue = -1;
      }
      // hover simulation calculations
      this._hoveredValue = isInnerHover || isOuterHover ? this._selectedValue : -1;
      if (this._selectedValue === this._getMaxValue() && this.lastItemReplacement !== -1) {
        this._selectedValue = this.lastItemReplacement;
      }
    }
Calculates selected and hovered values based on click/touch position.

@param {number} x X position of click/touch returned by the event
@param {number} y Y position of click/touch returned by the event