// RenderKit
// github.com/matteobertoldo/renderkit
// Licensed under MIT Open Source

////
/// @group units
////

/// Removes the unit (e.g. px, em, rem) from a value, returning the number only.
/// @param {Number} $num - Number to strip unit from.
/// @returns {Number} The same number, sans unit.
@function strip-unit($num) {
    @return $num / ($num * 0 + 1);
}

/// Converts a pixel, percentage, rem or em value to a unitless value based on a given font size. Ideal for working out unitless line heights.
/// @param {Number} $value - Value to convert to a unitless line height
/// @param {Number} $base - The font size to use to work out the line height - defaults to $global-font-size
/// @return {Number} - Unitless number
@function unitless-calc($value, $base: null) {
    @if $base == null {
        $base: $global-font-size;
    }

    @if unit($base) == '%' {
        $base: ($base / 100%) * 16px;
    }

    @if unit($base) == 'rem' {
        $base: strip-unit($base) * 16px;
    }

    @if unit($base) == 'em' {
        $base: strip-unit($base) * 16px;
    }

    @if unit($value) == '%' {
        $value: ($value / 100%) * $base;
    }

    @if unit($value) == 'rem' {
        $value: strip-unit($value) * $base;
    }

    @if unit($value) == 'em' {
        $value: strip-unit($value) * $base;
    }

    @if unit($value) == 'px' {
        @return strip-unit($value) / strip-unit($base);
    }

    @if unitless($value) and ($value > 10) {
        @return $value / strip-unit($base);
    }

    @return $value;
}

/// Function for transform **px** value to **em** value.
///
/// Only **single** value in `px` are accepted.
/// @param {Number} $num - Number in **px** to convert in **em**.
/// @return {Number} - `em` number.
@function em($num) {
    $em: $num / $global-body-font-size;

    @return $em * 1em;
}

/// Function for transform **px** value to **rem** value.
///
/// Only **single** value in `px` are accepted.
/// @param {Number} $num - Number in **px** to convert in **rem**.
/// @return {Number} - `rem` number.
@function rem($num) {
    $rem: $num / $global-body-font-size;

    @return $rem * 1rem;
}
