UNPKG

ddd-jquery

Version:

de-bowerified, de-amdified, de-gruntified... jQuery.

99 lines 3.22 kB
var jQuery = require('./core'), data_priv = require('./data/var/data_priv'), __unnameddep__ = require('./deferred'), __unnameddep__ = require('./callbacks'); jQuery.extend({ queue: function (elem, type, data) { var queue; if (elem) { type = (type || 'fx') + 'queue'; queue = data_priv.get(elem, type); if (data) { if (!queue || jQuery.isArray(data)) { queue = data_priv.access(elem, type, jQuery.makeArray(data)); } else { queue.push(data); } } return queue || []; } }, dequeue: function (elem, type) { type = type || 'fx'; var queue = jQuery.queue(elem, type), startLength = queue.length, fn = queue.shift(), hooks = jQuery._queueHooks(elem, type), next = function () { jQuery.dequeue(elem, type); }; if (fn === 'inprogress') { fn = queue.shift(); startLength--; } if (fn) { if (type === 'fx') { queue.unshift('inprogress'); } delete hooks.stop; fn.call(elem, next, hooks); } if (!startLength && hooks) { hooks.empty.fire(); } }, _queueHooks: function (elem, type) { var key = type + 'queueHooks'; return data_priv.get(elem, key) || data_priv.access(elem, key, { empty: jQuery.Callbacks('once memory').add(function () { data_priv.remove(elem, [ type + 'queue', key ]); }) }); } }); jQuery.fn.extend({ queue: function (type, data) { var setter = 2; if (typeof type !== 'string') { data = type; type = 'fx'; setter--; } if (arguments.length < setter) { return jQuery.queue(this[0], type); } return data === undefined ? this : this.each(function () { var queue = jQuery.queue(this, type, data); jQuery._queueHooks(this, type); if (type === 'fx' && queue[0] !== 'inprogress') { jQuery.dequeue(this, type); } }); }, dequeue: function (type) { return this.each(function () { jQuery.dequeue(this, type); }); }, clearQueue: function (type) { return this.queue(type || 'fx', []); }, promise: function (type, obj) { var tmp, count = 1, defer = jQuery.Deferred(), elements = this, i = this.length, resolve = function () { if (!--count) { defer.resolveWith(elements, [elements]); } }; if (typeof type !== 'string') { obj = type; type = undefined; } type = type || 'fx'; while (i--) { tmp = data_priv.get(elements[i], type + 'queueHooks'); if (tmp && tmp.empty) { count++; tmp.empty.add(resolve); } } resolve(); return defer.promise(obj); } }); module.exports = jQuery;