// Custom and Static CSS Easing
// More information about eases in:
// https://matthewlein.com/tools/ceaser

// Custom Easing Mixin
// Example:
// @include customEase(0.25, 0.25, 0.75, 0.75);
@mixin customEase($timing...) {
  transition-timing-function: cubic-bezier($timing);
}

// Standard Eases Mixin
// Example:
// @include ease(in-out-quad);
@mixin ease($easeType) {
  $easeMap: (
    linear:         cubic-bezier(0.25, 0.25, 0.75, 0.75),
    default:        cubic-bezier(0.25, 0.1, 0.25, 1),
    in:             cubic-bezier(0.42, 0, 1, 1),
    out:            cubic-bezier(0, 0, 0.58, 1),
    in-out:         cubic-bezier(0.42, 0, 0.58, 1),
    in-quad:        cubic-bezier(0.55, 0.085, 0.68, 0.53),
    in-cubic:       cubic-bezier(0.55, 0.055, 0.675, 0.19),
    in-quart:       cubic-bezier(0.895, 0.03, 0.685, 0.22),
    in-quint:       cubic-bezier(0.755, 0.05, 0.855, 0.06),
    in-sine:        cubic-bezier(0.47, 0, 0.745, 0.715),
    in-expo:        cubic-bezier(0.95, 0.05, 0.795, 0.035),
    in-circ:        cubic-bezier(0.6, 0.04, 0.98, 0.335),
    in-back:        cubic-bezier(0.6, -0.28, 0.735, 0.045),
    out-quad:       cubic-bezier(0.25, 0.46, 0.45, 0.94),
    out-cubic:      cubic-bezier(0.215, 0.61, 0.355, 1),
    out-quart:      cubic-bezier(0.165, 0.84, 0.44, 1),
    out-quint:      cubic-bezier(0.23, 1, 0.32, 1),
    out-sine:       cubic-bezier(0.39, 0.575, 0.565, 1),
    out-expo:       cubic-bezier(0.19, 1, 0.22, 1),
    out-circ:       cubic-bezier(0.075, 0.82, 0.165, 1),
    out-back:       cubic-bezier(0.175, 0.885, 0.32, 1.275),
    in-out-quad:    cubic-bezier(0.455, 0.03, 0.515, 0.955),
    in-out-cubic:   cubic-bezier(0.645, 0.045, 0.355, 1),
    in-out-quart:   cubic-bezier(0.77, 0, 0.175, 1),
    in-out-quint:   cubic-bezier(0.86, 0, 0.07, 1),
    in-out-sine:    cubic-bezier(0.445, 0.05, 0.55, 0.95),
    in-out-expo:    cubic-bezier(1, 0, 0, 1),
    in-out-circ:    cubic-bezier(0.785, 0.135, 0.15, 0.86),
    in-out-back:    cubic-bezier(0.68, -0.55, 0.265, 1.55),
  );
  transition-timing-function: map-get($easeMap, $easeType);
}
