//spacing
$properties-spacing: ( m: 'margin', p: 'padding');
$side-spacing: (t: 'top', b: 'bottom', l: 'left', r:'right');


$value-spacing-length: 100;
$value-spacing-increment-px: 1;
$value-spacing-increment-rem: 0.25;
$spacing-measure-px: 'p';
$spacing-measure-rem: 'r';
$spacing-measure-pr: 'pr';

/// Generate value spacing map.
///
/// @author Federico Gambardella<federico.gambardella@micegrouèp.it>
///
@function generate-value-spacing-map($measure, $increment) {
    $value-spacing: () !default;
    $value: 0;
    @for $i from 0 through $value-spacing-length {
        $value-spacing: map-merge($value-spacing, 
                ($i: #{$value}#{$measure}
                )
            );
        $value: $value + $increment;
    }

    @return $value-spacing;
};

$value-spacing-px: generate-value-spacing-map('px', $value-spacing-increment-px);
$value-spacing-rem: generate-value-spacing-map('rem', $value-spacing-increment-rem);
$value-spacing-percentage: generate-value-spacing-map('%', $value-spacing-increment-px);

@mixin spacing($measure, $map-size) {
    @each $property, $value-prop in $properties-spacing {
        @each $direction, $value-dir in $side-spacing {
            @each $size, $value-size in $map-size {
                .fk-#{$measure}-#{$property}#{$direction}-#{$size} {
                    #{$value-prop}-#{$value-dir}: $value-size;
                }
            }
        }
        @each $size, $value-size in $map-size {
            @if ($property == "m") {
                .fk-#{$measure}-#{$property}-#{$size} {
                   @include margin($value-size)
                }
            }
            @if ($property == "p") {
                .fk-#{$measure}-#{$property}-#{$size} {
                   @include padding($value-size)
                }
            }
        }
    }
}


