/*! * imagesLoaded PACKAGED v4.1.1 * JavaScript is all like "You images are done yet or what?" * MIT License */ !function(t, e){"function" == typeof define && define.amd?define("ev-emitter/ev-emitter", e):"object" == typeof module && module.exports?module.exports = e():t.EvEmitter = e()}("undefined" != typeof window?window:this, function(){function t(){}var e = t.prototype; return e.on = function(t, e){if (t && e){var i = this._events = this._events || {}, n = i[t] = i[t] || []; return - 1 == n.indexOf(e) && n.push(e), this}}, e.once = function(t, e){if (t && e){this.on(t, e); var i = this._onceEvents = this._onceEvents || {}, n = i[t] = i[t] || {}; return n[e] = !0, this}}, e.off = function(t, e){var i = this._events && this._events[t]; if (i && i.length){var n = i.indexOf(e); return - 1 != n && i.splice(n, 1), this}}, e.emitEvent = function(t, e){var i = this._events && this._events[t]; if (i && i.length){var n = 0, o = i[n]; e = e || []; for (var r = this._onceEvents && this._onceEvents[t]; o; ){var s = r && r[o]; s && (this.off(t, o), delete r[o]), o.apply(this, e), n += s?0:1, o = i[n]}return this}}, t}), function(t, e){"use strict"; "function" == typeof define && define.amd?define(["ev-emitter/ev-emitter"], function(i){return e(t, i)}):"object" == typeof module && module.exports?module.exports = e(t, require("ev-emitter")):t.imagesLoaded = e(t, t.EvEmitter)}(window, function(t, e){function i(t, e){for (var i in e)t[i] = e[i]; return t}function n(t){var e = []; if (Array.isArray(t))e = t; else if ("number" == typeof t.length)for (var i = 0; i < t.length; i++)e.push(t[i]); else e.push(t); return e}function o(t, e, r){return this instanceof o?("string" == typeof t && (t = document.querySelectorAll(t)), this.elements = n(t), this.options = i({}, this.options), "function" == typeof e?r = e:i(this.options, e), r && this.on("always", r), this.getImages(), h && (this.jqDeferred = new h.Deferred), void setTimeout(function(){this.check()}.bind(this))):new o(t, e, r)}function r(t){this.img = t}function s(t, e){this.url = t, this.element = e, this.img = new Image}var h = t.jQuery, a = t.console; o.prototype = Object.create(e.prototype), o.prototype.options = {}, o.prototype.getImages = function(){this.images = [], this.elements.forEach(this.addElementImages, this)}, o.prototype.addElementImages = function(t){"IMG" == t.nodeName && this.addImage(t), this.options.background === !0 && this.addElementBackgroundImages(t); var e = t.nodeType; if (e && d[e]){for (var i = t.querySelectorAll("img"), n = 0; n < i.length; n++){var o = i[n]; this.addImage(o)}if ("string" == typeof this.options.background){var r = t.querySelectorAll(this.options.background); for (n = 0; n < r.length; n++){var s = r[n]; this.addElementBackgroundImages(s)}}}}; var d = {1:!0, 9:!0, 11:!0}; return o.prototype.addElementBackgroundImages = function(t){var e = getComputedStyle(t); if (e)for (var i = /url\((['"])?(.*?)\1\)/gi, n = i.exec(e.backgroundImage); null !== n; ){var o = n && n[2]; o && this.addBackground(o, t), n = i.exec(e.backgroundImage)}}, o.prototype.addImage = function(t){var e = new r(t); this.images.push(e)}, o.prototype.addBackground = function(t, e){var i = new s(t, e); this.images.push(i)}, o.prototype.check = function(){function t(t, i, n){setTimeout(function(){e.progress(t, i, n)})}var e = this; return this.progressedCount = 0, this.hasAnyBroken = !1, this.images.length?void this.images.forEach(function(e){e.once("progress", t), e.check()}):void this.complete()}, o.prototype.progress = function(t, e, i){this.progressedCount++, this.hasAnyBroken = this.hasAnyBroken || !t.isLoaded, this.emitEvent("progress", [this, t, e]), this.jqDeferred && this.jqDeferred.notify && this.jqDeferred.notify(this, t), this.progressedCount == this.images.length && this.complete(), this.options.debug && a && a.log("progress: " + i, t, e)}, o.prototype.complete = function(){var t = this.hasAnyBroken?"fail":"done"; if (this.isComplete = !0, this.emitEvent(t, [this]), this.emitEvent("always", [this]), this.jqDeferred){var e = this.hasAnyBroken?"reject":"resolve"; this.jqDeferred[e](this)}}, r.prototype = Object.create(e.prototype), r.prototype.check = function(){var t = this.getIsImageComplete(); return t?void this.confirm(0 !== this.img.naturalWidth, "naturalWidth"):(this.proxyImage = new Image, this.proxyImage.addEventListener("load", this), this.proxyImage.addEventListener("error", this), this.img.addEventListener("load", this), this.img.addEventListener("error", this), void(this.proxyImage.src = this.img.src))}, r.prototype.getIsImageComplete = function(){return this.img.complete && void 0 !== this.img.naturalWidth}, r.prototype.confirm = function(t, e){this.isLoaded = t, this.emitEvent("progress", [this, this.img, e])}, r.prototype.handleEvent = function(t){var e = "on" + t.type; this[e] && this[e](t)}, r.prototype.onload = function(){this.confirm(!0, "onload"), this.unbindEvents()}, r.prototype.onerror = function(){this.confirm(!1, "onerror"), this.unbindEvents()}, r.prototype.unbindEvents = function(){this.proxyImage.removeEventListener("load", this), this.proxyImage.removeEventListener("error", this), this.img.removeEventListener("load", this), this.img.removeEventListener("error", this)}, s.prototype = Object.create(r.prototype), s.prototype.check = function(){this.img.addEventListener("load", this), this.img.addEventListener("error", this), this.img.src = this.url; var t = this.getIsImageComplete(); t && (this.confirm(0 !== this.img.naturalWidth, "naturalWidth"), this.unbindEvents())}, s.prototype.unbindEvents = function(){this.img.removeEventListener("load", this), this.img.removeEventListener("error", this)}, s.prototype.confirm = function(t, e){this.isLoaded = t, this.emitEvent("progress", [this, this.element, e])}, o.makeJQueryPlugin = function(e){e = e || t.jQuery, e && (h = e, h.fn.imagesLoaded = function(t, e){var i = new o(this, t, e); return i.jqDeferred.promise(h(this))})}, o.makeJQueryPlugin(), o});