// Temporary Value
$tmp-transform-value: none;

// TRANSFORMS
@mixin transforms($trans...) {
    @include prefixer(transform, $trans, true);
}
@mixin transform($trans: none, $append: false) {
    @if ($tmp-transform-value == none) {
        @if ($trans != none) {
            $tmp-transform-value: #{$trans} !global;
        }
    }
    @else {
        @if ($trans != none) {
            $tmp-transform-value: $tmp-transform-value #{$trans} !global;
        }
    }

    @if ($append == false) {
        @include prefixer(transform, #{$tmp-transform-value}, true);

        $tmp-transform-value: none !global;
    }
}

@mixin transform-origin($value) {
    @include prefixer(transform-origin, $value, true);
}
@mixin transform-style($value) {
    @include prefixer(transform-style, $value, true);
}

// PERSPECTIVE
@mixin perspective($value) {
    @include prefixer(perspective, $value, true);
}
@mixin perspective-origin($value) {
    @include prefixer(perspective-origin, $value, true);
}

// TRANSLATE TRANSFORMS
@mixin translate($trans: none, $append: false) {
    @if (length($trans) == 1) {
        @include transform(translate($trans), $append);
    }
    @else if (length($trans) == 2) {
        @include transform(translate(nth($trans, 1), nth($trans, 2)), $append);
    }
    @else if (length($trans) == 3) {
        @include transform(translate3d(nth($trans, 1), nth($trans, 2), nth($trans, 3)), $append);
    }
}
@mixin translateX($trans, $append: false) {
    @include transform(translateX($trans), $append);
}
@mixin translateY($trans, $append: false) {
    @include transform(translateY($trans), $append);
}
@mixin translateZ($trans, $append: false) {
    @include transform(translateZ($trans), $append);
}

// ROTATE TRANSFORMS
@mixin rotate($trans: none, $append: false) {
    @if (length($trans) == 1) {
        @include transform(rotate($trans), $append);
    }
    @else if (length($trans) == 2) {
        @include transform(rotate(nth($trans, 1), nth($trans, 2)), $append);
    }
    @else if (length($trans) == 3) {
        @include transform(rotate3d(nth($trans, 1), nth($trans, 2), nth($trans, 3)), $append);
    }
}
@mixin rotateX($trans, $append: false) {
    @include transform(rotateX($trans), $append);
}
@mixin rotateY($trans, $append: false) {
    @include transform(rotateY($trans), $append);
}
@mixin rotateZ($trans, $append: false) {
    @include transform(rotateZ($trans), $append);
}

// SCALE TRANSFORMS
@mixin scale($trans: none, $append: false) {
    @if (length($trans) == 1) {
        @include transform(scale($trans), $append);
    }
    @else if (length($trans) == 2) {
        @include transform(scale(nth($trans, 1), nth($trans, 2)), $append);
    }
    @else if (length($trans) == 3) {
        @include transform(scale3d(nth($trans, 1), nth($trans, 2), nth($trans, 3)), $append);
    }
}
@mixin scaleX($trans, $append: false) {
    @include transform(scaleX($trans), $append);
}
@mixin scaleY($trans, $append: false) {
    @include transform(scaleY($trans), $append);
}
@mixin scaleZ($trans, $append: false) {
    @include transform(scaleZ($trans), $append);
}

// SKEW TRANSFORMS
@mixin skew($trans: none, $append: false) {
    @if (length($trans) == 1) {
        @include transform(skew($trans), $append);
    }
    @else if (length($trans) == 2) {
        @include transform(skew(nth($trans, 1), nth($trans, 2)), $append);
    }
}
@mixin skewX($trans, $append: false) {
    @include transform(skewX($trans), $append);
}
@mixin skewY($trans, $append: false) {
    @include transform(skewY($trans), $append);
}
