////
/// Core Tool
/// @group core
////

@mixin _build-utility-breakpoints($name, $modifier, $breakpoints-list) {
  @each $bp in $breakpoints-list {
    $mod: '-#{$bp}';
    @if ($bp == xs or $bp == first) {
      $bp: first;
      $mod: '';
    }
    @if $modifier {
      $mod: #{$mod + '-' + $modifier};
    }
    @include respond-from($bp) {
      #{ns($name)}#{$mod} {
        @content;
      }
    }
  }
}

@mixin build-utility($category, $name, $modifier: null) {
  // Récupération des variables depuis src/dsfr/variables.scss
  $utilityVars: map-get($variables, $category);

  @if map-get($variables, $category) != null {
    $utilityVars: to-map(map-get($utilityVars, $name));
    $breakpointsVars: map-get($utilityVars, 'breakpoints');

    // si l'utilitaire n'est pas désactivé
    @if (map-get($utilityVars, 1) != false and map-get($utilityVars, active) != false) {
      // breakpoints: all = xs, sm, md, lg, xl
      @if ($breakpointsVars == all) {
        @include _build-utility-breakpoints($name, $modifier, map-keys($breakpoints)) {
          @content;
        }
      }
      @else if ($breakpointsVars == null) {
        @include _build-utility-breakpoints($name, $modifier, first) {
          @content;
        }
      }
      @else {
        @include _build-utility-breakpoints($name, $modifier, $breakpointsVars) {
          @content;
        }
      }
    }
  }
}
