// Framework grid generation
//
// Used only by Bootstrap to generate the correct number of grid classes given
// any value of `$grid-columns`.

make-grid-columns($columns = $grid-columns, $gutter = $grid-gutter-width, $breakpoints = $grid-breakpoints)

  // Common properties for all breakpoints
  //$grid-column
  //  position: relative
  //  width: 100%
  //  min-height: 1px // Prevent columns from collapsing when empty
  //  padding-right: $gutter / 2
  //  padding-left: $gutter / 2

  for $breakpoint in keys($breakpoints)
    $infix = breakpoint-infix($breakpoint, $breakpoints)

    // Allow columns to stretch full width below their breakpoints
    for $i in (1..$columns)
      .col{$infix}-{$i}
        // @expands $grid-column
        position: relative
        width: 100%
        min-height: 1px // Prevent columns from collapsing when empty
        padding-right: ($gutter / 2)
        padding-left: ($gutter / 2)
    .col{$infix},
    .col{$infix}-auto
      // @expands $grid-column
      position: relative
      width: 100%
      min-height: 1px // Prevent columns from collapsing when empty
      padding-right: ($gutter / 2)
      padding-left: ($gutter / 2)

    +media-breakpoint-up($breakpoint, $breakpoints)
      // Provide basic `.col-{bp}` classes for equal-width flexbox columns
      .col{$infix}
        flex-basis: 0
        flex-grow: 1
        max-width: 100%
      .col{$infix}-auto
        flex: 0 0 auto
        width: auto
        max-width: none // Reset earlier grid tiers


      for $i in (1..$columns)
        .col{$infix}-{$i}
          make-col($i, $columns);


      .order{$infix}-first
        order: -1

      .order{$infix}-last
        order: $columns + 1

      for $i in (0..$columns)
        .order{$infix}-{$i}
          order: $i


      // `$columns - 1` because offsetting by the width of an entire row isn't possible
      for $i in (0..($columns - 1))
        if !($infix == "" and $i == 0)  // Avoid emitting useless .offset-0
          .offset{$infix}-{$i}
            make-col-offset($i, $columns)
