/**
 * Based on
 * http://www.sassmeister.com/gist/7f22e44ace49b5124eec
 *
 * Usage:
 *
 * @include fluid([properties], [min-size], [max-size], [min-viewport, default: 320px], [max-viewport, default: xlarge breakpoint]);
 *
 * Single property:
 * .mod-abc__copy {
 *     @include fluid(font-size, 16px, 20px);
 * }
 *
 * Multiple properties with same values and custom min-viewport and max-viewport:
 * .mod-abc {
 *     @include fluid(padding-top padding-bottom, 10px, 25px, 500px, 1000px);
 * }
 */

$xlarge: map-get($breakpoints, xlarge);

@if $xlarge {
	$default-max-vw: map-get($breakpoints, xlarge);
} @else {
	$default-max-vw: map-get($breakpoints, large);
}

@mixin fluid($properties, $min-value, $max-value, $min-vw: 320px, $max-vw: $default-max-vw, $includeMin: true, $includeMax: true, $negative: false) {
	@if $includeMin == true {
		@each $property in $properties {
			@if $negative == true {
				#{$property}: -#{$min-value};
			} @else {
				#{$property}: $min-value;
			}
		}
	}

	@media (min-width: $min-vw) {
		@each $property in $properties {
			@if $negative == true {
				#{$property}: calc((#{$min-value} + #{strip-unit($max-value - $min-value)} * (100vw - #{$min-vw}) / #{strip-unit($max-vw - $min-vw)}) * -1);
			} @else {
				#{$property}: calc(#{$min-value} + #{strip-unit($max-value - $min-value)} * (100vw - #{$min-vw}) / #{strip-unit($max-vw - $min-vw)});
			}
		}
	}

	@if $includeMax == true {
		@media (min-width: $max-vw) {
			@each $property in $properties {
				@if $negative == true {
					#{$property}: -#{$max-value};
				} @else {
					#{$property}: $max-value;
				}
			}
		}
	}
}
