//noinspection CssInvalidAtRule
@use "sass:math";

@import "strip_unit";

@function decimal-round ($number, $digits: 0, $mode: round) {
  $n: 1;
  // $number must be a number
  @if type-of($number) != number {
    @warn '#{ $number } is not a number.';
    @return $number;
  }
  // $digits must be a unitless number
  @if type-of($digits) != number {
    @warn '#{ $digits } is not a number.';
    @return $number;
  } @else if not unitless($digits) {
    @warn '#{ $digits } has a unit.';
    @return $number;
  }
  @if $digits > 0 {
    @for $i from 1 through $digits {
      $n: $n * 10;
    }
  }
  @if $mode == round {
    @return math.div(round($number * $n), $n);
  } @else if $mode == ceil {
    @return math.div(ceil($number * $n), $n);
  } @else if $mode == floor {
    @return math.div(floor($number * $n), $n);
  } @else {
    @warn '#{ $mode } is undefined keyword.';
    @return $number;
  }
}


//noinspection SassScssResolvedByNameOnly
@mixin resizable($sizes, $fromSize, $units : 0px, $property: height, $digits: 0, $mode: round) {


  @if (type-of($sizes) == 'map') {
    $fromSize: strip-unit($fromSize);
    @each $size, $value in $sizes {
      $percent: decimal-round($fromSize * ( $value *0.01 ), $digits, $mode) ;
      $height: $fromSize + $percent + $units;

      $itemSize: $size !global;
      $itemValue: $value !global;
      $itemHeight: $height !global;

      &.#{$qmcp+"-size-"+$size} {
        #{$property}: $height;
        @content;
      }
      $itemSize: null !global;
      $itemValue: null !global;
      $itemHeight: null !global;;
    }
  }
}