////
/// @group 03-units
////

@use "sass:math";
@use "sass:meta";
@use "config";

/// Rechnet Pixel-Wert in entsprechenden rem-Wert um.
/// @example scss
/// button {
///     padding-right: adventure.rem-calc(20px);
///     padding-left: adventure.rem-calc(20px);
/// }
/// @param {Number} $value - Pixel-Wert
/// @param {Number} $base-font-size [config.get("base-font-size")] - Schriftgröße zur Berechnung des rem-Wertes
/// @return {Number} in rem
@function rem-calc($value, $base-font-size: config.get("base-font-size")) {
    @if (meta.type-of($value) != "number") {
        @warn meta.inspect($value) + " was passed to rem-calc(), which is not a number.";
        @return $value;
    }

    @if (meta.type-of($base-font-size) != "number") {
        @warn meta.inspect($base-font-size) + " was passed to rem-calc(), which is not a number.";
        @return $value;
    }

    @if (math.unit($value) != "" and math.unit($value) != "px") {
        @warn meta.inspect($value) + " was passed to rem-calc(), which is not a pixel value.";
        @return $value;
    }

    @if (math.unit($base-font-size) != "" and math.unit($base-font-size) != "px") {
        @warn meta.inspect($base-font-size) + " was passed to rem-calc(), which is not a pixel value.";
        @return $value;
    }

    @return math.div(strip-unit($value), strip-unit($base-font-size)) * 1rem;
}

/// Rechnet Pixel-Wert in entsprechenden em-Wert um.
/// @example scss
/// h1 {
///     margin-bottom: adventure.em-calc(25px, adventure.font-size("large"));
///     font-size: adventure.font-size("large");
/// }
/// @param {Number} $value - Pixel-Wert
/// @param {Number} $current-font-size [config.get("base-font-size")] - Schriftgröße des Elementes
/// @return {Number} in em
@function em-calc($value, $current-font-size: config.get("base-font-size")) {
    $value: rem-calc($value, $current-font-size);
    @return strip-unit($value) * 1em;
}

/// Entfernt die Einheit der übergebenen Zahl.
/// @param {Number} $number
/// @return {Number} ohne Einheit
@function strip-unit($number) {
    @if (meta.type-of($number) != "number") {
        @warn meta.inspect($number) + " was passed to strip-unit(), which is not a number.";
        @return $number;
    }

    @if (math.is-unitless($number)) {
        @return $number;
    }

    @return math.div($number, ($number * 0 + 1));
}