/*
 *  Usage:
 *
      <div class="sk-circle">
        <div class="sk-circle1 sk-child"></div>
        <div class="sk-circle2 sk-child"></div>
        <div class="sk-circle3 sk-child"></div>
        <div class="sk-circle4 sk-child"></div>
        <div class="sk-circle5 sk-child"></div>
        <div class="sk-circle6 sk-child"></div>
        <div class="sk-circle7 sk-child"></div>
        <div class="sk-circle8 sk-child"></div>
        <div class="sk-circle9 sk-child"></div>
        <div class="sk-circle10 sk-child"></div>
        <div class="sk-circle11 sk-child"></div>
        <div class="sk-circle12 sk-child"></div>
      </div>
 *
 */
@import "../variables";

$spinkit-circle-child-count: 12 !default;
$spinkit-circle-width: $spinkit-size;
$spinkit-circle-height: $spinkit-size;
$spinkit-circle-margin: $spinkit-spinner-margin;
$spinkit-circle-background-color: $spinkit-spinner-color;
$spinkit-circle-animation-duration: 1.2s !default;
$spinkit-circle-css-export: true !default;

@keyframes sk-circleBounceDelay {
  0%, 80%, 100% { transform: scale(0) }
  40% { transform: scale(1.0) }
}
@mixin sk-circle-size(
  $width: $spinkit-circle-width,
  $height: $spinkit-circle-height
) {
  width: $width;
  height: $height;
}

@mixin sk-circle-color(
  $color: $spinkit-circle-background-color
) {
  .sk-child:before {
    background-color: $color;
  }
}

@mixin sk-circle-style(
  $width: $spinkit-circle-width,
  $height: $spinkit-circle-height,
  $color: $spinkit-circle-background-color,
  $margin: $spinkit-circle-margin
) {
  margin: $margin;

  @include sk-circle-size(
    $width: $width,
    $height: $height
  );

  @include sk-circle-color(
    $color: $color
  );
}

@mixin sk-circle(
  $width: $spinkit-circle-width,
  $height: $spinkit-circle-height,
  $color: $spinkit-circle-background-color,
  $margin: $spinkit-circle-margin,
  $duration: $spinkit-circle-animation-duration,
  $child-count: $spinkit-circle-child-count
) {
  position: relative;

  .sk-child {
    width: 100%;
    height: 100%;
    position: absolute;
    left: 0;
    top: 0;
  }

  .sk-child:before {
    content: '';
    display: block;
    margin: 0 auto;
    width: 15%;
    height: 15%;
    border-radius: 100%;
    animation: sk-circleBounceDelay $duration infinite ease-in-out both;
  }

  @for $i from 2 through $child-count {
    .sk-circle#{$i} { transform: rotate(360deg / $child-count * ($i - 1)); }
  }

  @for $i from 2 through $child-count {
    .sk-circle#{$i}:before { animation-delay: - $duration + $duration / $child-count * ($i - 1); }
  }

  @include sk-circle-style(
    $width: $width,
    $height: $height,
    $color: $color,
    $margin: $margin
  );
}

@if ($spinkit-circle-css-export) {
  .sk-circle {
    @include sk-circle;
  }
}
