
/**
 * $count: Determina o número de vezes que a animação vai se repetir. Para deixar a animação repetindo infinitamente, informe o valor 'infinite'. Default: 1
 * $duration: Quanto tempo, em segundos (s) ou milisegundos (ms), durará um ciclo da animação. Default: 1s
 * $delay: Define a partir de quanto tempo a animação vai se iniciar. Default: 0
 * $function: Forma como a animação progride no tempo. Default: ease
 * $fill: Especifica como uma animação CSS deve aplicar estilos ao seu destino antes e depois que ele está sendo executado. Default: both
 * $visibility: Determina se deve ser exibido ou não a parte de trás do elemento para o usuário. Default: hidden
 */

// Full browser support
$prehistoric-mode  : false;

$countDefault      : 1 !default;
$durationDefault   : 1s !default;
$delayDefault      : 0s !default;
$functionDefault   : ease !default;
$fillDefault       : both !default;
$visibilityDefault : hidden !default;

@mixin count($count: 1) {
    animation-iteration-count: $count;

    @if $prehistoric-mode {
          -webkit-animation-iteration-count: $count;
             -moz-animation-iteration-count: $count;
              -ms-animation-iteration-count: $count;
               -o-animation-iteration-count: $count;
    }
}

@mixin duration($duration: 1s) {
    animation-duration: $duration;

    @if $prehistoric-mode {
          -webkit-animation-duration: $duration;
             -moz-animation-duration: $duration;
              -ms-animation-duration: $duration;
               -o-animation-duration: $duration;
    }
}

@mixin delay($delay: .2s) {
    animation-delay: $delay;

    @if $prehistoric-mode {
          -webkit-animation-delay: $delay;
             -moz-animation-delay: $delay;
              -ms-animation-delay: $delay;
               -o-animation-delay: $delay;
    }
}

@mixin function($function: ease) {
    animation-timing-function: $function;

    @if $prehistoric-mode {
          -webkit-animation-timing-function: $function;
             -moz-animation-timing-function: $function;
              -ms-animation-timing-function: $function;
               -o-animation-timing-function: $function;
    }
}

@mixin fill-mode($fill: both) {
    animation-fill-mode: $fill;

    @if $prehistoric-mode {
          -webkit-animation-fill-mode: $fill;
             -moz-animation-fill-mode: $fill;
              -ms-animation-fill-mode: $fill;
               -o-animation-fill-mode: $fill;
    }
}

@mixin visibility($visibility: hidden) {
    backface-visibility: $visibility;

    @if $prehistoric-mode {
          -webkit-backface-visibility: $visibility;
             -moz-backface-visibility: $visibility;
              -ms-backface-visibility: $visibility;
               -o-backface-visibility: $visibility;
    }
}

@mixin transform($property) {
    transform: $property;

    @if $prehistoric-mode {
          -webkit-transform: $property;
             -moz-transform: $property;
              -ms-transform: $property;
               -o-transform: $property;
    }
}

@mixin transform-origin($transform-origin: center center) {
    transform-origin: $transform-origin;

    @if $prehistoric-mode {
          -webkit-transform-origin: $transform-origin;
             -moz-transform-origin: $transform-origin;
              -ms-transform-origin: $transform-origin;
               -o-transform-origin: $transform-origin;
    }
}

@mixin transform-style($transform-style: flat) {
    transform-style: $transform-style;

    @if $prehistoric-mode {
          -webkit-transform-style: $transform-style;
             -moz-transform-style: $transform-style;
               -o-transform-style: $transform-style;
    }
}

@mixin animation-name($animation-name) {
    animation-name: $animation-name;

    @if $prehistoric-mode {
          -webkit-animation-name: $animation-name;
             -moz-animation-name: $animation-name;
              -ms-animation-name: $animation-name;
               -o-animation-name: $animation-name;
    }
}

@mixin keyframes($animation-name) {
    @keyframes #{$animation-name} {
        @content;
    }

    @if $prehistoric-mode {
        @-webkit-keyframes #{$animation-name} {
            @content;
        }

        @-moz-keyframes #{$animation-name} {
            @content;
        }

        @-ms-keyframes #{$animation-name} {
            @content;
        }

        @-o-keyframes #{$animation-name} {
            @content;
        }
    }
}
