@use '../breakpoint-pseudo' as *;
@use '../breakpoint-dive' as *;

@use '../../../helpers/strings' as *;
@use '../../../helpers/numbers' as *;

@mixin bp-increment-list($increments, $label, $property, $value, $negatives, $pseudos, $dives, $bpLabel, $bpValue, $paradigm) {
    @each $increment in $increments {
        $newLabel: '';
        $newValue: $value * $increment;

        @if $increment != 1 and $increment != 0 and $increment != -1 {
            @if $negatives and $increment < 0 {
                @if is-decimal($increment) {
                    $newLabel: -#{$label}-#{second-char($increment)}\.#{slice-end($increment, 4)};
                } @else {
                    $newLabel: -#{$label + $increment};
                }
            } @else {
                @if is-decimal($increment) {
                    $newLabel: #{$label}-#{first-char($increment)}\.#{slice-end($increment, 3)};
                } @else {
                    $newLabel: #{$label}-#{$increment};
                }
            }
        }

        .#{$bpLabel}\:#{$newLabel} {
            @media (#{$paradigm}: $bpValue) {
                #{$property}: $newValue !important;
            }
        }

        @if $pseudos {
            @include breakpoint-pseudify($newLabel, $property, $newValue, $pseudos, $bpLabel, $bpValue, $paradigm);
        }

        @if $dives {
            @include breakpoint-diver($newLabel, $property, $newValue, $bpLabel, $bpValue, $paradigm);
        }
    }
}
