@use "sass:math";

@function deprecated($selector, $sinceLocalVersion: '', $sinceComponentsVersion: '', $notes: '') {
	@return $selector
}

// Math functions

@function pow ($number, $exp) {
	$value: 1;
	@if $exp > 0 {
		@for $i from 1 through $exp {
			$value: $value * $number;
		}
	} @else if $exp < 0 {
		@for $i from 1 through -$exp {
			$value: $value / $number;
		}
	}
	@return $value;
}

@function fact ($number) {
	$value: 1;
	@if $number > 0 {
		@for $i from 1 through $number {
			$value: $value * $i;
		}
	}
	@return $value;
}

@function pi () {
	@return 3.14159265359;
}

@function rad ($angle) {
	$unit: unit($angle);
	$unitless: math.div($angle, ($angle * 0 + 1));
	// If the angle has 'deg' as unit, convert to radians.
	@if $unit == deg {
		$unitless: calc($unitless / 180) * pi();
	}
	@return $unitless;
}

@function sin ($angle) {
	$sin: 0;
	$angle: rad($angle);
	// Iterate a bunch of times.
	@for $i from 0 through 10 {
		$sin: $sin + calc(pow(-1, $i) * pow($angle, (2 * $i + 1)) / fact(2 * $i + 1));
	}
	@return $sin;
}

@function cos ($angle) {
	$cos: 0;
	$angle: rad($angle);
	// Iterate a bunch of times.
	@for $i from 0 through 10 {
		$cos: $cos + calc(pow(-1, $i) * pow($angle, 2 * $i) / fact(2 * $i));
	}
	@return $cos;
}

@function calculateRotatedSquaresLength($originalLength, $degrees) {
	@return $originalLength * abs(cos(rad($degrees))) + $originalLength * abs(sin(rad($degrees)));
}
