craigmdennis / animateCSS

jQuery plugin to dynamically apply animate.css animations
MIT License
153 stars 47 forks source link

AMDfied #23

Open Legends opened 7 years ago

Legends commented 7 years ago

Require.js compatible

/*! animateCSS - v1.1.5 - 2014-05-27
* https://github.com/craigmdennis/animateCSS
* Copyright (c) 2014 Craig Dennis; Licensed MIT */

+(function (factory) {
    if (typeof define === "function" && define.amd) {       
        define(["jquery"], factory);
    } else {

        // Browser globals
        factory(jQuery);
    }
}(function ($) {
    'use strict';

    $.fn.extend({
        animateCSS: function(effect, options) {
            var addClass, animate, callback, complete, init, removeClass, settings, transitionEnd, unhide;
            settings = {
                effect: effect,
                delay: 0,
                animationClass: 'animated',
                infinite: false,
                callback: options,
                debug: false
            };
            transitionEnd = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend';
            settings = $.extend(settings, options);
            init = function(element) {
                return animate(element);
            };
            animate = function(element) {
                if (settings.infinite === true) {
                    settings.animationClass += ' infinite';
                }
                return setTimeout(function() {
                    unhide(element);
                    addClass(element);
                    return complete(element);
                }, settings.delay);
            };
            addClass = function(element) {
                return element.addClass(settings.effect + ' ' + settings.animationClass + ' ');
            };
            unhide = function(element) {
                if (element.css('visibility') === 'hidden') {
                    element.css('visibility', 'visible');
                }
                if (element.is(':hidden')) {
                    return element.show();
                }
            };
            removeClass = function(element) {
                return element.removeClass(settings.effect + ' ' + settings.animationClass);
            };
            callback = function(element) {
                if (settings.infinite === false) {
                    removeClass(element);
                }
                if (typeof settings.callback === 'function') {
                    return settings.callback.call(element);
                }
            };
            complete = function(element) {
                return element.one(transitionEnd, function() {
                    return callback(element);
                });
            };
            return this.each(function() {
                return init($(this));
            });
        }
    });

}))
craigmdennis commented 7 years ago

Feel free to submit a PR