@import '../tools/mixins/breakpoints';

@mixin createFlex($infix) {
  .u-flex#{$infix}-row {
    flex-direction: row;
  }
  .u-flex#{$infix}-column {
    flex-direction: column;
  }
  .u-flex#{$infix}-row-reverse {
    flex-direction: row-reverse;
  }
  .u-flex#{$infix}-column-reverse {
    flex-direction: column-reverse;
  }

  .u-flex#{$infix}-wrap {
    flex-wrap: wrap;
  }
  .u-flex#{$infix}-nowrap {
    flex-wrap: nowrap;
  }
  .u-flex#{$infix}-wrap-reverse {
    flex-wrap: wrap-reverse;
  }
  .u-flex#{$infix}-fill {
    flex: 1 1 auto;
  }
  .u-flex#{$infix}-none {
    flex: none;
  }
  .u-flex#{$infix}-grow-0 {
    flex-grow: 0;
  }
  .u-flex#{$infix}-grow-1 {
    flex-grow: 1;
  }
  .u-flex#{$infix}-grow-2 {
    flex-grow: 2;
  }
  .u-flex#{$infix}-grow-3 {
    flex-grow: 3;
  }
  .u-flex#{$infix}-grow-4 {
    flex-grow: 4;
  }
  .u-flex#{$infix}-shrink-0 {
    flex-shrink: 0;
  }
  .u-flex#{$infix}-shrink-1 {
    flex-shrink: 1;
  }

  .u-justify-content#{$infix}-initial {
    justify-content: initial;
  }
  .u-justify-content#{$infix}-start {
    justify-content: flex-start;
  }
  .u-justify-content#{$infix}-end {
    justify-content: flex-end;
  }
  .u-justify-content#{$infix}-center {
    justify-content: center;
  }
  .u-justify-content#{$infix}-between {
    justify-content: space-between;
  }
  .u-justify-content#{$infix}-around {
    justify-content: space-around;
  }

  .u-align-items#{$infix}-start {
    align-items: flex-start;
  }
  .u-align-items#{$infix}-end {
    align-items: flex-end;
  }
  .u-align-items#{$infix}-center {
    align-items: center;
  }
  .u-align-items#{$infix}-baseline {
    align-items: baseline;
  }
  .u-align-items#{$infix}-stretch {
    align-items: stretch;
  }

  .u-align-content#{$infix}-start {
    align-content: flex-start;
  }
  .u-align-content#{$infix}-end {
    align-content: flex-end;
  }
  .u-align-content#{$infix}-center {
    align-content: center;
  }
  .u-align-content#{$infix}-between {
    align-content: space-between;
  }
  .u-align-content#{$infix}-around {
    align-content: space-around;
  }
  .u-align-content#{$infix}-stretch {
    align-content: stretch;
  }

  .u-align-self#{$infix}-auto {
    align-self: auto;
  }
  .u-align-self#{$infix}-start {
    align-self: flex-start;
  }
  .u-align-self#{$infix}-end {
    align-self: flex-end;
  }
  .u-align-self#{$infix}-center {
    align-self: center;
  }
  .u-align-self#{$infix}-baseline {
    align-self: baseline;
  }
  .u-align-self#{$infix}-stretch {
    align-self: stretch;
  }
}

@each $breakpoint in map-keys($grid-breakpoints) {
  @include media-breakpoint-up($breakpoint) {
    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);

    @include createFlex($infix);
  }
}

@each $breakpoint in map-keys($print-grid-breakpoints) {
  @include media-breakpoint-up($breakpoint, $print-grid-breakpoints) {
    $infix: breakpoint-infix($breakpoint, $print-grid-breakpoints);

    @media print {
      @include createFlex($infix);
    }
  }
}
