// Loop over each breakpoint
@each $breakpoint in map-keys($grid-breakpoints) {

  // Generate media query if needed
  @include media-breakpoint-up($breakpoint) {
    $breakpoint-prefix: breakpoint-prefix($breakpoint, $grid-breakpoints);
    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);

    // Loop over each utility property
    @each $key, $utility in $utilities {
      // The utility can be disabled with `false`, thus check if the utility is a map first
      @if type-of($utility) == "map" {
        // Base media query: always generate
        @if $breakpoint-prefix == "" {
          @include generate-utility($utility);
        } @else {
          // Responsive media queries are enabled
          @if map-get($utility, responsive) {
            @include generate-utility($utility, $breakpoint-prefix);
          }
          // Bootstrap style responsive media queries are enabled
          @if map-get($utility, responsive-bootstrap) and $enable-bootstrap-compatibility {
            @include generate-utility($utility, "", $infix);
          }
        }
      }
    }
  }
}

// Print utilities
@media print {
  @each $key, $utility in $utilities {
    // The utility can be disabled with `false`, thus check if the utility is a map first
    // Then check if the utility needs print styles
    @if type-of($utility) == "map" and map-get($utility, print) {
      @include generate-utility($utility, "print\\:");
      // Then add bootstrap style print media queries if enabled
      @if map-get($utility, responsive-bootstrap) and $enable-bootstrap-compatibility {
        @include generate-utility($utility, "", "-print");
      }
    }
  }
}
