123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692 |
- !function (t) {
- "use strict";
- "function" == typeof define && define.amd ? define(["./blueimp-helper"], t) : (window.blueimp = window.blueimp || {}, window.blueimp.Gallery = t(window.blueimp.helper || window.jQuery))
- }(function (d) {
- "use strict";
- function i(t, e) {
- return void 0 === document.body.style.maxHeight ? null : this && this.options === i.prototype.options ? void (t && t.length ? (this.list = t, this.num = t.length, this.initOptions(e), this.initialize()) : this.console.log("blueimp Gallery: No or empty list provided as first argument.", t)) : new i(t, e)
- }
- return d.extend(i.prototype, {
- options: {
- container: "#blueimp-gallery",
- slidesContainer: "div",
- titleElement: "h3",
- displayClass: "blueimp-gallery-display",
- controlsClass: "blueimp-gallery-controls",
- singleClass: "blueimp-gallery-single",
- leftEdgeClass: "blueimp-gallery-left",
- rightEdgeClass: "blueimp-gallery-right",
- playingClass: "blueimp-gallery-playing",
- slideClass: "slide",
- slideLoadingClass: "slide-loading",
- slideErrorClass: "slide-error",
- slideContentClass: "slide-content",
- toggleClass: "toggle",
- prevClass: "prev",
- nextClass: "next",
- closeClass: "close",
- playPauseClass: "play-pause",
- typeProperty: "type",
- titleProperty: "title",
- altTextProperty: "alt",
- urlProperty: "href",
- srcsetProperty: "urlset",
- displayTransition: !0,
- clearSlides: !0,
- stretchImages: !1,
- toggleControlsOnReturn: !0,
- toggleControlsOnSlideClick: !0,
- toggleSlideshowOnSpace: !0,
- enableKeyboardNavigation: !0,
- closeOnEscape: !0,
- closeOnSlideClick: !0,
- closeOnSwipeUpOrDown: !0,
- emulateTouchEvents: !0,
- stopTouchEventsPropagation: !1,
- hidePageScrollbars: !0,
- disableScroll: !0,
- carousel: !1,
- continuous: !0,
- unloadElements: !0,
- startSlideshow: !1,
- slideshowInterval: 5e3,
- index: 0,
- preloadRange: 2,
- transitionSpeed: 400,
- slideshowTransitionSpeed: void 0,
- event: void 0,
- onopen: void 0,
- onopened: void 0,
- onslide: void 0,
- onslideend: void 0,
- onslidecomplete: void 0,
- onclose: void 0,
- onclosed: void 0
- },
- carouselOptions: {
- hidePageScrollbars: !1,
- toggleControlsOnReturn: !1,
- toggleSlideshowOnSpace: !1,
- enableKeyboardNavigation: !1,
- closeOnEscape: !1,
- closeOnSlideClick: !1,
- closeOnSwipeUpOrDown: !1,
- disableScroll: !1,
- startSlideshow: !0
- },
- console: window.console && "function" == typeof window.console.log ? window.console : {
- log: function () {
- }
- },
- support: function (s) {
- var t, o = {touch: void 0 !== window.ontouchstart || window.DocumentTouch && document instanceof DocumentTouch},
- e = {
- webkitTransition: {end: "webkitTransitionEnd", prefix: "-webkit-"},
- MozTransition: {end: "transitionend", prefix: "-moz-"},
- OTransition: {end: "otransitionend", prefix: "-o-"},
- transition: {end: "transitionend", prefix: ""}
- };
- for (t in e) if (Object.prototype.hasOwnProperty.call(e, t) && void 0 !== s.style[t]) {
- o.transition = e[t], o.transition.name = t;
- break
- }
- function i() {
- var t, e, i = o.transition;
- document.body.appendChild(s), i && (t = i.name.slice(0, -9) + "ransform", void 0 !== s.style[t] && (s.style[t] = "translateZ(0)", e = window.getComputedStyle(s).getPropertyValue(i.prefix + "transform"), o.transform = {
- prefix: i.prefix,
- name: t,
- translate: !0,
- translateZ: !!e && "none" !== e
- })), void 0 !== s.style.backgroundSize && (o.backgroundSize = {}, s.style.backgroundSize = "contain", o.backgroundSize.contain = "contain" === window.getComputedStyle(s).getPropertyValue("background-size"), s.style.backgroundSize = "cover", o.backgroundSize.cover = "cover" === window.getComputedStyle(s).getPropertyValue("background-size")), document.body.removeChild(s)
- }
- return document.body ? i() : d(document).on("DOMContentLoaded", i), o
- }(document.createElement("div")),
- requestAnimationFrame: window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame,
- cancelAnimationFrame: window.cancelAnimationFrame || window.webkitCancelRequestAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame,
- initialize: function () {
- if (this.initStartIndex(), !1 === this.initWidget()) return !1;
- this.initEventListeners(), this.onslide(this.index), this.ontransitionend(), this.options.startSlideshow && this.play()
- },
- slide: function (t, e) {
- window.clearTimeout(this.timeout);
- var i, s, o, n = this.index;
- if (n !== t && 1 !== this.num) {
- if (e = e || this.options.transitionSpeed, this.support.transform) {
- for (this.options.continuous || (t = this.circle(t)), i = Math.abs(n - t) / (n - t), this.options.continuous && (s = i, (i = -this.positions[this.circle(t)] / this.slideWidth) !== s && (t = -i * this.num + t)), o = Math.abs(n - t) - 1; o;) o -= 1, this.move(this.circle((n < t ? t : n) - o - 1), this.slideWidth * i, 0);
- t = this.circle(t), this.move(n, this.slideWidth * i, e), this.move(t, 0, e), this.options.continuous && this.move(this.circle(t - i), -this.slideWidth * i, 0)
- } else t = this.circle(t), this.animate(n * -this.slideWidth, t * -this.slideWidth, e);
- this.onslide(t)
- }
- },
- getIndex: function () {
- return this.index
- },
- getNumber: function () {
- return this.num
- },
- prev: function () {
- (this.options.continuous || this.index) && this.slide(this.index - 1)
- },
- next: function () {
- (this.options.continuous || this.index < this.num - 1) && this.slide(this.index + 1)
- },
- play: function (t) {
- var i = this;
- window.clearTimeout(this.timeout), this.interval = t || this.options.slideshowInterval, 1 < this.elements[this.index] && (this.timeout = this.setTimeout(!this.requestAnimationFrame && this.slide || function (t, e) {
- i.animationFrameId = i.requestAnimationFrame.call(window, function () {
- i.slide(t, e)
- })
- }, [this.index + 1, this.options.slideshowTransitionSpeed], this.interval)), this.container.addClass(this.options.playingClass)
- },
- pause: function () {
- window.clearTimeout(this.timeout), this.interval = null, this.cancelAnimationFrame && (this.cancelAnimationFrame.call(window, this.animationFrameId), this.animationFrameId = null), this.container.removeClass(this.options.playingClass)
- },
- add: function (t) {
- var e;
- for (t.concat || (t = Array.prototype.slice.call(t)), this.list.concat || (this.list = Array.prototype.slice.call(this.list)), this.list = this.list.concat(t), this.num = this.list.length, 2 < this.num && null === this.options.continuous && (this.options.continuous = !0, this.container.removeClass(this.options.leftEdgeClass)), this.container.removeClass(this.options.rightEdgeClass).removeClass(this.options.singleClass), e = this.num - t.length; e < this.num; e += 1) this.addSlide(e), this.positionSlide(e);
- this.positions.length = this.num, this.initSlides(!0)
- },
- resetSlides: function () {
- this.slidesContainer.empty(), this.unloadAllSlides(), this.slides = []
- },
- handleClose: function () {
- var t = this.options;
- this.destroyEventListeners(), this.pause(), this.container[0].style.display = "none", this.container.removeClass(t.displayClass).removeClass(t.singleClass).removeClass(t.leftEdgeClass).removeClass(t.rightEdgeClass), t.hidePageScrollbars && (document.body.style.overflow = this.bodyOverflowStyle), this.options.clearSlides && this.resetSlides(), this.options.onclosed && this.options.onclosed.call(this)
- },
- close: function () {
- var i = this;
- this.options.onclose && this.options.onclose.call(this), this.support.transition && this.options.displayTransition ? (this.container.on(this.support.transition.end, function t(e) {
- e.target === i.container[0] && (i.container.off(i.support.transition.end, t), i.handleClose())
- }), this.container.removeClass(this.options.displayClass)) : this.handleClose()
- },
- circle: function (t) {
- return (this.num + t % this.num) % this.num
- },
- move: function (t, e, i) {
- this.translateX(t, e, i), this.positions[t] = e
- },
- translate: function (t, e, i, s) {
- if (this.slides[t]) {
- var o = this.slides[t].style, n = this.support.transition, a = this.support.transform;
- o[n.name + "Duration"] = s + "ms", o[a.name] = "translate(" + e + "px, " + i + "px)" + (a.translateZ ? " translateZ(0)" : "")
- }
- },
- translateX: function (t, e, i) {
- this.translate(t, e, 0, i)
- },
- translateY: function (t, e, i) {
- this.translate(t, 0, e, i)
- },
- animate: function (e, i, s) {
- if (s) var o = this, n = (new Date).getTime(), a = window.setInterval(function () {
- var t = (new Date).getTime() - n;
- if (s < t) return o.slidesContainer[0].style.left = i + "px", o.ontransitionend(), void window.clearInterval(a);
- o.slidesContainer[0].style.left = (i - e) * (Math.floor(t / s * 100) / 100) + e + "px"
- }, 4); else this.slidesContainer[0].style.left = i + "px"
- },
- preventDefault: function (t) {
- t.preventDefault ? t.preventDefault() : t.returnValue = !1
- },
- stopPropagation: function (t) {
- t.stopPropagation ? t.stopPropagation() : t.cancelBubble = !0
- },
- onresize: function () {
- this.initSlides(!0)
- },
- onmousedown: function (t) {
- t.which && 1 === t.which && "VIDEO" !== t.target.nodeName && "AUDIO" !== t.target.nodeName && (t.preventDefault(), (t.originalEvent || t).touches = [{
- pageX: t.pageX,
- pageY: t.pageY
- }], this.ontouchstart(t))
- },
- onmousemove: function (t) {
- this.touchStart && ((t.originalEvent || t).touches = [{pageX: t.pageX, pageY: t.pageY}], this.ontouchmove(t))
- },
- onmouseup: function (t) {
- this.touchStart && (this.ontouchend(t), delete this.touchStart)
- },
- onmouseout: function (t) {
- if (this.touchStart) {
- var e = t.target, i = t.relatedTarget;
- i && (i === e || d.contains(e, i)) || this.onmouseup(t)
- }
- },
- ontouchstart: function (t) {
- this.options.stopTouchEventsPropagation && this.stopPropagation(t);
- var e = (t.originalEvent || t).touches[0];
- this.touchStart = {x: e.pageX, y: e.pageY, time: Date.now()}, this.isScrolling = void 0, this.touchDelta = {}
- },
- ontouchmove: function (t) {
- this.options.stopTouchEventsPropagation && this.stopPropagation(t);
- var e, i, s = (t.originalEvent || t).touches[0], o = (t.originalEvent || t).scale, n = this.index;
- if (!(1 < s.length || o && 1 !== o)) if (this.options.disableScroll && t.preventDefault(), this.touchDelta = {
- x: s.pageX - this.touchStart.x,
- y: s.pageY - this.touchStart.y
- }, e = this.touchDelta.x, void 0 === this.isScrolling && (this.isScrolling = this.isScrolling || Math.abs(e) < Math.abs(this.touchDelta.y)), this.isScrolling) this.translateY(n, this.touchDelta.y + this.positions[n], 0); else for (t.preventDefault(), window.clearTimeout(this.timeout), this.options.continuous ? i = [this.circle(n + 1), n, this.circle(n - 1)] : (this.touchDelta.x = e /= !n && 0 < e || n === this.num - 1 && e < 0 ? Math.abs(e) / this.slideWidth + 1 : 1, i = [n], n && i.push(n - 1), n < this.num - 1 && i.unshift(n + 1)); i.length;) n = i.pop(), this.translateX(n, e + this.positions[n], 0)
- },
- ontouchend: function (t) {
- this.options.stopTouchEventsPropagation && this.stopPropagation(t);
- var e, i, s, o, n, a = this.index, l = this.options.transitionSpeed, r = this.slideWidth,
- h = Number(Date.now() - this.touchStart.time) < 250,
- d = h && 20 < Math.abs(this.touchDelta.x) || Math.abs(this.touchDelta.x) > r / 2,
- c = !a && 0 < this.touchDelta.x || a === this.num - 1 && this.touchDelta.x < 0,
- p = !d && this.options.closeOnSwipeUpOrDown && (h && 20 < Math.abs(this.touchDelta.y) || Math.abs(this.touchDelta.y) > this.slideHeight / 2);
- this.options.continuous && (c = !1), e = this.touchDelta.x < 0 ? -1 : 1, this.isScrolling ? p ? this.close() : this.translateY(a, 0, l) : d && !c ? (i = a + e, s = a - e, o = r * e, n = -r * e, this.options.continuous ? (this.move(this.circle(i), o, 0), this.move(this.circle(a - 2 * e), n, 0)) : 0 <= i && i < this.num && this.move(i, o, 0), this.move(a, this.positions[a] + o, l), this.move(this.circle(s), this.positions[this.circle(s)] + o, l), a = this.circle(s), this.onslide(a)) : this.options.continuous ? (this.move(this.circle(a - 1), -r, l), this.move(a, 0, l), this.move(this.circle(a + 1), r, l)) : (a && this.move(a - 1, -r, l), this.move(a, 0, l), a < this.num - 1 && this.move(a + 1, r, l))
- },
- ontouchcancel: function (t) {
- this.touchStart && (this.ontouchend(t), delete this.touchStart)
- },
- ontransitionend: function (t) {
- var e = this.slides[this.index];
- t && e !== t.target || (this.interval && this.play(), this.setTimeout(this.options.onslideend, [this.index, e]))
- },
- oncomplete: function (t) {
- var e, i = t.target || t.srcElement, s = i && i.parentNode;
- i && s && (e = this.getNodeIndex(s), d(s).removeClass(this.options.slideLoadingClass), "error" === t.type ? (d(s).addClass(this.options.slideErrorClass), this.elements[e] = 3) : this.elements[e] = 2, i.clientHeight > this.container[0].clientHeight && (i.style.maxHeight = this.container[0].clientHeight), this.interval && this.slides[this.index] === s && this.play(), this.setTimeout(this.options.onslidecomplete, [e, s]))
- },
- onload: function (t) {
- this.oncomplete(t)
- },
- onerror: function (t) {
- this.oncomplete(t)
- },
- onkeydown: function (t) {
- switch (t.which || t.keyCode) {
- case 13:
- this.options.toggleControlsOnReturn && (this.preventDefault(t), this.toggleControls());
- break;
- case 27:
- this.options.closeOnEscape && (this.close(), t.stopImmediatePropagation());
- break;
- case 32:
- this.options.toggleSlideshowOnSpace && (this.preventDefault(t), this.toggleSlideshow());
- break;
- case 37:
- this.options.enableKeyboardNavigation && (this.preventDefault(t), this.prev());
- break;
- case 39:
- this.options.enableKeyboardNavigation && (this.preventDefault(t), this.next())
- }
- },
- handleClick: function (t) {
- var e = this.options, i = t.target || t.srcElement, s = i.parentNode;
- function o(t) {
- return d(i).hasClass(t) || d(s).hasClass(t)
- }
- o(e.toggleClass) ? (this.preventDefault(t), this.toggleControls()) : o(e.prevClass) ? (this.preventDefault(t), this.prev()) : o(e.nextClass) ? (this.preventDefault(t), this.next()) : o(e.closeClass) ? (this.preventDefault(t), this.close()) : o(e.playPauseClass) ? (this.preventDefault(t), this.toggleSlideshow()) : s === this.slidesContainer[0] ? e.closeOnSlideClick ? (this.preventDefault(t), this.close()) : e.toggleControlsOnSlideClick && (this.preventDefault(t), this.toggleControls()) : s.parentNode && s.parentNode === this.slidesContainer[0] && e.toggleControlsOnSlideClick && (this.preventDefault(t), this.toggleControls())
- },
- onclick: function (t) {
- if (!(this.options.emulateTouchEvents && this.touchDelta && (20 < Math.abs(this.touchDelta.x) || 20 < Math.abs(this.touchDelta.y)))) return this.handleClick(t);
- delete this.touchDelta
- },
- updateEdgeClasses: function (t) {
- t ? this.container.removeClass(this.options.leftEdgeClass) : this.container.addClass(this.options.leftEdgeClass), t === this.num - 1 ? this.container.addClass(this.options.rightEdgeClass) : this.container.removeClass(this.options.rightEdgeClass)
- },
- handleSlide: function (t) {
- this.options.continuous || this.updateEdgeClasses(t), this.loadElements(t), this.options.unloadElements && this.unloadElements(t), this.setTitle(t)
- },
- onslide: function (t) {
- this.index = t, this.handleSlide(t), this.setTimeout(this.options.onslide, [t, this.slides[t]])
- },
- setTitle: function (t) {
- var e = this.slides[t].firstChild, i = e.title || e.alt, s = this.titleElement;
- s.length && (this.titleElement.empty(), i && s[0].appendChild(document.createTextNode(i)))
- },
- setTimeout: function (t, e, i) {
- var s = this;
- return t && window.setTimeout(function () {
- t.apply(s, e || [])
- }, i || 0)
- },
- imageFactory: function (t, i) {
- var s, o, e, n, a = this, l = this.imagePrototype.cloneNode(!1), r = t, h = this.options.stretchImages;
- return "string" != typeof r && (r = this.getItemProperty(t, this.options.urlProperty), e = this.getItemProperty(t, this.options.titleProperty), n = this.getItemProperty(t, this.options.altTextProperty) || e), !0 === h && (h = "contain"), (h = this.support.backgroundSize && this.support.backgroundSize[h] && h) ? o = this.elementPrototype.cloneNode(!1) : (o = l).draggable = !1, e && (o.title = e), n && (o.alt = n), d(l).on("load error", function t(e) {
- if (!s) {
- if (e = {type: e.type, target: o}, !o.parentNode) return a.setTimeout(t, [e]);
- s = !0, d(l).off("load error", t), h && "load" === e.type && (o.style.background = 'url("' + r + '") center no-repeat', o.style.backgroundSize = h), i(e)
- }
- }), l.src = r, o
- },
- createElement: function (t, e) {
- var i = t && this.getItemProperty(t, this.options.typeProperty),
- s = i && this[i.split("/")[0] + "Factory"] || this.imageFactory, o = t && s.call(this, t, e),
- n = this.getItemProperty(t, this.options.srcsetProperty);
- return o || (o = this.elementPrototype.cloneNode(!1), this.setTimeout(e, [{
- type: "error",
- target: o
- }])), n && o.setAttribute("srcset", n), d(o).addClass(this.options.slideContentClass), o
- },
- loadElement: function (t) {
- this.elements[t] || (this.slides[t].firstChild ? this.elements[t] = d(this.slides[t]).hasClass(this.options.slideErrorClass) ? 3 : 2 : (this.elements[t] = 1, d(this.slides[t]).addClass(this.options.slideLoadingClass), this.slides[t].appendChild(this.createElement(this.list[t], this.proxyListener))))
- },
- loadElements: function (t) {
- var e, i = Math.min(this.num, 2 * this.options.preloadRange + 1), s = t;
- for (e = 0; e < i; e += 1) s += e * (e % 2 == 0 ? -1 : 1), s = this.circle(s), this.loadElement(s)
- },
- unloadElements: function (t) {
- var e, i;
- for (e in this.elements) Object.prototype.hasOwnProperty.call(this.elements, e) && (i = Math.abs(t - e)) > this.options.preloadRange && i + this.options.preloadRange < this.num && (this.unloadSlide(e), delete this.elements[e])
- },
- addSlide: function (t) {
- var e = this.slidePrototype.cloneNode(!1);
- e.setAttribute("data-index", t), this.slidesContainer[0].appendChild(e), this.slides.push(e)
- },
- positionSlide: function (t) {
- var e = this.slides[t];
- e.style.width = this.slideWidth + "px", this.support.transform && (e.style.left = t * -this.slideWidth + "px", this.move(t, this.index > t ? -this.slideWidth : this.index < t ? this.slideWidth : 0, 0))
- },
- initSlides: function (t) {
- var e, i;
- for (t || (this.positions = [], this.positions.length = this.num, this.elements = {}, this.imagePrototype = document.createElement("img"), this.elementPrototype = document.createElement("div"), this.slidePrototype = document.createElement("div"), d(this.slidePrototype).addClass(this.options.slideClass), this.slides = this.slidesContainer[0].children, e = this.options.clearSlides || this.slides.length !== this.num), this.slideWidth = this.container[0].clientWidth, this.slideHeight = this.container[0].clientHeight, this.slidesContainer[0].style.width = this.num * this.slideWidth + "px", e && this.resetSlides(), i = 0; i < this.num; i += 1) e && this.addSlide(i), this.positionSlide(i);
- this.options.continuous && this.support.transform && (this.move(this.circle(this.index - 1), -this.slideWidth, 0), this.move(this.circle(this.index + 1), this.slideWidth, 0)), this.support.transform || (this.slidesContainer[0].style.left = this.index * -this.slideWidth + "px")
- },
- unloadSlide: function (t) {
- var e, i;
- null !== (i = (e = this.slides[t]).firstChild) && e.removeChild(i)
- },
- unloadAllSlides: function () {
- var t, e;
- for (t = 0, e = this.slides.length; t < e; t++) this.unloadSlide(t)
- },
- toggleControls: function () {
- var t = this.options.controlsClass;
- this.container.hasClass(t) ? this.container.removeClass(t) : this.container.addClass(t)
- },
- toggleSlideshow: function () {
- this.interval ? this.pause() : this.play()
- },
- getNodeIndex: function (t) {
- return parseInt(t.getAttribute("data-index"), 10)
- },
- getNestedProperty: function (a, t) {
- return t.replace(/\[(?:'([^']+)'|"([^"]+)"|(\d+))\]|(?:(?:^|\.)([^\.\[]+))/g, function (t, e, i, s, o) {
- var n = o || e || i || s && parseInt(s, 10);
- t && a && (a = a[n])
- }), a
- },
- getDataProperty: function (t, e) {
- var i, s;
- if (t.dataset ? (i = e.replace(/-([a-z])/g, function (t, e) {
- return e.toUpperCase()
- }), s = t.dataset[i]) : t.getAttribute && (s = t.getAttribute("data-" + e.replace(/([A-Z])/g, "-$1").toLowerCase())), "string" == typeof s) {
- if (/^(true|false|null|-?\d+(\.\d+)?|\{[\s\S]*\}|\[[\s\S]*\])$/.test(s)) try {
- return d.parseJSON(s)
- } catch (t) {
- }
- return s
- }
- },
- getItemProperty: function (t, e) {
- var i = this.getDataProperty(t, e);
- return void 0 === i && (i = t[e]), void 0 === i && (i = this.getNestedProperty(t, e)), i
- },
- initStartIndex: function () {
- var t, e = this.options.index, i = this.options.urlProperty;
- if (e && "number" != typeof e) for (t = 0; t < this.num; t += 1) if (this.list[t] === e || this.getItemProperty(this.list[t], i) === this.getItemProperty(e, i)) {
- e = t;
- break
- }
- this.index = this.circle(parseInt(e, 10) || 0)
- },
- initEventListeners: function () {
- var i = this, t = this.slidesContainer;
- function e(t) {
- var e = i.support.transition && i.support.transition.end === t.type ? "transitionend" : t.type;
- i["on" + e](t)
- }
- d(window).on("resize", e), d(document.body).on("keydown", e), this.container.on("click", e), this.support.touch ? t.on("touchstart touchmove touchend touchcancel", e) : this.options.emulateTouchEvents && this.support.transition && t.on("mousedown mousemove mouseup mouseout", e), this.support.transition && t.on(this.support.transition.end, e), this.proxyListener = e
- },
- destroyEventListeners: function () {
- var t = this.slidesContainer, e = this.proxyListener;
- d(window).off("resize", e), d(document.body).off("keydown", e), this.container.off("click", e), this.support.touch ? t.off("touchstart touchmove touchend touchcancel", e) : this.options.emulateTouchEvents && this.support.transition && t.off("mousedown mousemove mouseup mouseout", e), this.support.transition && t.off(this.support.transition.end, e)
- },
- handleOpen: function () {
- this.options.onopened && this.options.onopened.call(this)
- },
- initWidget: function () {
- var i = this;
- return this.container = d(this.options.container), this.container.length ? (this.slidesContainer = this.container.find(this.options.slidesContainer).first(), this.slidesContainer.length ? (this.titleElement = this.container.find(this.options.titleElement).first(), 1 === this.num && this.container.addClass(this.options.singleClass), this.options.onopen && this.options.onopen.call(this), this.support.transition && this.options.displayTransition ? this.container.on(this.support.transition.end, function t(e) {
- e.target === i.container[0] && (i.container.off(i.support.transition.end, t), i.handleOpen())
- }) : this.handleOpen(), this.options.hidePageScrollbars && (this.bodyOverflowStyle = document.body.style.overflow, document.body.style.overflow = "hidden"), this.container[0].style.display = "block", this.initSlides(), void this.container.addClass(this.options.displayClass)) : (this.console.log("blueimp Gallery: Slides container not found.", this.options.slidesContainer), !1)) : (this.console.log("blueimp Gallery: Widget container not found.", this.options.container), !1)
- },
- initOptions: function (t) {
- this.options = d.extend({}, this.options), (t && t.carousel || this.options.carousel && (!t || !1 !== t.carousel)) && d.extend(this.options, this.carouselOptions), d.extend(this.options, t), this.num < 3 && (this.options.continuous = !!this.options.continuous && null), this.support.transition || (this.options.emulateTouchEvents = !1), this.options.event && this.preventDefault(this.options.event)
- }
- }), i
- }), function (t) {
- "use strict";
- "function" == typeof define && define.amd ? define(["./blueimp-helper", "./blueimp-gallery"], t) : t(window.blueimp.helper || window.jQuery, window.blueimp.Gallery)
- }(function (t, e) {
- "use strict";
- t.extend(e.prototype.options, {fullScreen: !1});
- var i = e.prototype.initialize, s = e.prototype.close;
- return t.extend(e.prototype, {
- getFullScreenElement: function () {
- return document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement
- }, requestFullScreen: function (t) {
- t.requestFullscreen ? t.requestFullscreen() : t.webkitRequestFullscreen ? t.webkitRequestFullscreen() : t.mozRequestFullScreen ? t.mozRequestFullScreen() : t.msRequestFullscreen && t.msRequestFullscreen()
- }, exitFullScreen: function () {
- document.exitFullscreen ? document.exitFullscreen() : document.webkitCancelFullScreen ? document.webkitCancelFullScreen() : document.mozCancelFullScreen ? document.mozCancelFullScreen() : document.msExitFullscreen && document.msExitFullscreen()
- }, initialize: function () {
- i.call(this), this.options.fullScreen && !this.getFullScreenElement() && this.requestFullScreen(this.container[0])
- }, close: function () {
- this.getFullScreenElement() === this.container[0] && this.exitFullScreen(), s.call(this)
- }
- }), e
- }), function (t) {
- "use strict";
- "function" == typeof define && define.amd ? define(["./blueimp-helper", "./blueimp-gallery"], t) : t(window.blueimp.helper || window.jQuery, window.blueimp.Gallery)
- }(function (a, t) {
- "use strict";
- a.extend(t.prototype.options, {
- indicatorContainer: "ol",
- activeIndicatorClass: "active",
- thumbnailProperty: "thumbnail",
- thumbnailIndicators: !0
- });
- var e = t.prototype.initSlides, i = t.prototype.addSlide, s = t.prototype.resetSlides, o = t.prototype.handleClick,
- n = t.prototype.handleSlide, l = t.prototype.handleClose;
- return a.extend(t.prototype, {
- createIndicator: function (t) {
- var e, i, s = this.indicatorPrototype.cloneNode(!1), o = this.getItemProperty(t, this.options.titleProperty),
- n = this.options.thumbnailProperty;
- return this.options.thumbnailIndicators && (n && (e = this.getItemProperty(t, n)), void 0 === e && (i = t.getElementsByTagName && a(t).find("img")[0]) && (e = i.src), e && (s.style.backgroundImage = 'url("' + e + '")')), o && (s.title = o), s
- }, addIndicator: function (t) {
- if (this.indicatorContainer.length) {
- var e = this.createIndicator(this.list[t]);
- e.setAttribute("data-index", t), this.indicatorContainer[0].appendChild(e), this.indicators.push(e)
- }
- }, setActiveIndicator: function (t) {
- this.indicators && (this.activeIndicator && this.activeIndicator.removeClass(this.options.activeIndicatorClass), this.activeIndicator = a(this.indicators[t]), this.activeIndicator.addClass(this.options.activeIndicatorClass))
- }, initSlides: function (t) {
- t || (this.indicatorContainer = this.container.find(this.options.indicatorContainer), this.indicatorContainer.length && (this.indicatorPrototype = document.createElement("li"), this.indicators = this.indicatorContainer[0].children)), e.call(this, t)
- }, addSlide: function (t) {
- i.call(this, t), this.addIndicator(t)
- }, resetSlides: function () {
- s.call(this), this.indicatorContainer.empty(), this.indicators = []
- }, handleClick: function (t) {
- var e = t.target || t.srcElement, i = e.parentNode;
- if (i === this.indicatorContainer[0]) this.preventDefault(t), this.slide(this.getNodeIndex(e)); else {
- if (i.parentNode !== this.indicatorContainer[0]) return o.call(this, t);
- this.preventDefault(t), this.slide(this.getNodeIndex(i))
- }
- }, handleSlide: function (t) {
- n.call(this, t), this.setActiveIndicator(t)
- }, handleClose: function () {
- this.activeIndicator && this.activeIndicator.removeClass(this.options.activeIndicatorClass), l.call(this)
- }
- }), t
- }), function (t) {
- "use strict";
- "function" == typeof define && define.amd ? define(["./blueimp-helper", "./blueimp-gallery"], t) : t(window.blueimp.helper || window.jQuery, window.blueimp.Gallery)
- }(function (w, t) {
- "use strict";
- w.extend(t.prototype.options, {
- videoContentClass: "video-content",
- videoLoadingClass: "video-loading",
- videoPlayingClass: "video-playing",
- videoPosterProperty: "poster",
- videoSourcesProperty: "sources"
- });
- var e = t.prototype.handleSlide;
- return w.extend(t.prototype, {
- handleSlide: function (t) {
- e.call(this, t), this.playingVideo && this.playingVideo.pause()
- }, videoFactory: function (t, e, i) {
- var s, o, n, a, l, r = this, h = this.options, d = this.elementPrototype.cloneNode(!1), c = w(d),
- p = [{type: "error", target: d}], u = i || document.createElement("video"),
- m = this.getItemProperty(t, h.urlProperty), y = this.getItemProperty(t, h.typeProperty),
- f = this.getItemProperty(t, h.titleProperty), g = this.getItemProperty(t, this.options.altTextProperty) || f,
- v = this.getItemProperty(t, h.videoPosterProperty), C = this.getItemProperty(t, h.videoSourcesProperty);
- if (c.addClass(h.videoContentClass), f && (d.title = f), u.canPlayType) if (m && y && u.canPlayType(y)) u.src = m; else if (C) for (; C.length;) if (o = C.shift(), m = this.getItemProperty(o, h.urlProperty), y = this.getItemProperty(o, h.typeProperty), m && y && u.canPlayType(y)) {
- u.src = m;
- break
- }
- return v && (u.poster = v, s = this.imagePrototype.cloneNode(!1), w(s).addClass(h.toggleClass), s.src = v, s.draggable = !1, s.alt = g, d.appendChild(s)), (n = document.createElement("a")).setAttribute("target", "_blank"), i || n.setAttribute("download", f), n.href = m, u.src && (u.controls = !0, (i || w(u)).on("error", function () {
- r.setTimeout(e, p)
- }).on("pause", function () {
- u.seeking || (a = !1, c.removeClass(r.options.videoLoadingClass).removeClass(r.options.videoPlayingClass), l && r.container.addClass(r.options.controlsClass), delete r.playingVideo, r.interval && r.play())
- }).on("playing", function () {
- a = !1, c.removeClass(r.options.videoLoadingClass).addClass(r.options.videoPlayingClass), r.container.hasClass(r.options.controlsClass) ? (l = !0, r.container.removeClass(r.options.controlsClass)) : l = !1
- }).on("play", function () {
- window.clearTimeout(r.timeout), a = !0, c.addClass(r.options.videoLoadingClass), r.playingVideo = u
- }), w(n).on("click", function (t) {
- r.preventDefault(t), a ? u.pause() : u.play()
- }), d.appendChild(i && i.element || u)), d.appendChild(n), this.setTimeout(e, [{type: "load", target: d}]), d
- }
- }), t
- }), function (t) {
- "use strict";
- "function" == typeof define && define.amd ? define(["./blueimp-helper", "./blueimp-gallery-video"], t) : t(window.blueimp.helper || window.jQuery, window.blueimp.Gallery)
- }(function (l, t) {
- "use strict";
- if (!window.postMessage) return t;
- l.extend(t.prototype.options, {
- vimeoVideoIdProperty: "vimeo",
- vimeoPlayerUrl: "//player.vimeo.com/video/VIDEO_ID?api=1&player_id=PLAYER_ID",
- vimeoPlayerIdPrefix: "vimeo-player-",
- vimeoClickToPlay: !0
- });
- function o(t, e, i, s) {
- this.url = t, this.videoId = e, this.playerId = i, this.clickToPlay = s, this.element = document.createElement("div"), this.listeners = {}
- }
- var n = t.prototype.textFactory || t.prototype.imageFactory, a = 0;
- return l.extend(o.prototype, {
- canPlayType: function () {
- return !0
- }, on: function (t, e) {
- return this.listeners[t] = e, this
- }, loadAPI: function () {
- var t, e, i = this, s = "//f.vimeocdn.com/js/froogaloop2.min.js", o = document.getElementsByTagName("script"),
- n = o.length;
- function a() {
- !e && i.playOnReady && i.play(), e = !0
- }
- for (; n;) if (o[n -= 1].src === s) {
- t = o[n];
- break
- }
- t || ((t = document.createElement("script")).src = s), l(t).on("load", a), o[0].parentNode.insertBefore(t, o[0]), /loaded|complete/.test(t.readyState) && a()
- }, onReady: function () {
- var t = this;
- this.ready = !0, this.player.addEvent("play", function () {
- t.hasPlayed = !0, t.onPlaying()
- }), this.player.addEvent("pause", function () {
- t.onPause()
- }), this.player.addEvent("finish", function () {
- t.onPause()
- }), this.playOnReady && this.play()
- }, onPlaying: function () {
- this.playStatus < 2 && (this.listeners.playing(), this.playStatus = 2)
- }, onPause: function () {
- this.listeners.pause(), delete this.playStatus
- }, insertIframe: function () {
- var t = document.createElement("iframe");
- t.src = this.url.replace("VIDEO_ID", this.videoId).replace("PLAYER_ID", this.playerId), t.id = this.playerId, this.element.parentNode.replaceChild(t, this.element), this.element = t
- }, play: function () {
- var t = this;
- this.playStatus || (this.listeners.play(), this.playStatus = 1), this.ready ? !this.hasPlayed && (this.clickToPlay || window.navigator && /iP(hone|od|ad)/.test(window.navigator.platform)) ? this.onPlaying() : this.player.api("play") : (this.playOnReady = !0, window.$f ? this.player || (this.insertIframe(), this.player = $f(this.element), this.player.addEvent("ready", function () {
- t.onReady()
- })) : this.loadAPI())
- }, pause: function () {
- this.ready ? this.player.api("pause") : this.playStatus && (delete this.playOnReady, this.listeners.pause(), delete this.playStatus)
- }
- }), l.extend(t.prototype, {
- VimeoPlayer: o, textFactory: function (t, e) {
- var i = this.options, s = this.getItemProperty(t, i.vimeoVideoIdProperty);
- return s ? (void 0 === this.getItemProperty(t, i.urlProperty) && (t[i.urlProperty] = "//vimeo.com/" + s), a += 1, this.videoFactory(t, e, new o(i.vimeoPlayerUrl, s, i.vimeoPlayerIdPrefix + a, i.vimeoClickToPlay))) : n.call(this, t, e)
- }
- }), t
- }), function (t) {
- "use strict";
- "function" == typeof define && define.amd ? define(["./blueimp-helper", "./blueimp-gallery-video"], t) : t(window.blueimp.helper || window.jQuery, window.blueimp.Gallery)
- }(function (t, e) {
- "use strict";
- if (!window.postMessage) return e;
- t.extend(e.prototype.options, {
- youTubeVideoIdProperty: "youtube",
- youTubePlayerVars: {wmode: "transparent"},
- youTubeClickToPlay: !0
- });
- function o(t, e, i) {
- this.videoId = t, this.playerVars = e, this.clickToPlay = i, this.element = document.createElement("div"), this.listeners = {}
- }
- var n = e.prototype.textFactory || e.prototype.imageFactory;
- return t.extend(o.prototype, {
- canPlayType: function () {
- return !0
- }, on: function (t, e) {
- return this.listeners[t] = e, this
- }, loadAPI: function () {
- var t, e = this, i = window.onYouTubeIframeAPIReady, s = "//www.youtube.com/iframe_api",
- o = document.getElementsByTagName("script"), n = o.length;
- for (window.onYouTubeIframeAPIReady = function () {
- i && i.apply(this), e.playOnReady && e.play()
- }; n;) if (o[n -= 1].src === s) return;
- (t = document.createElement("script")).src = s, o[0].parentNode.insertBefore(t, o[0])
- }, onReady: function () {
- this.ready = !0, this.playOnReady && this.play()
- }, onPlaying: function () {
- this.playStatus < 2 && (this.listeners.playing(), this.playStatus = 2)
- }, onPause: function () {
- e.prototype.setTimeout.call(this, this.checkSeek, null, 2e3)
- }, checkSeek: function () {
- this.stateChange !== YT.PlayerState.PAUSED && this.stateChange !== YT.PlayerState.ENDED || (this.listeners.pause(), delete this.playStatus)
- }, onStateChange: function (t) {
- switch (t.data) {
- case YT.PlayerState.PLAYING:
- this.hasPlayed = !0, this.onPlaying();
- break;
- case YT.PlayerState.PAUSED:
- case YT.PlayerState.ENDED:
- this.onPause()
- }
- this.stateChange = t.data
- }, onError: function (t) {
- this.listeners.error(t)
- }, play: function () {
- var e = this;
- this.playStatus || (this.listeners.play(), this.playStatus = 1), this.ready ? !this.hasPlayed && (this.clickToPlay || window.navigator && /iP(hone|od|ad)/.test(window.navigator.platform)) ? this.onPlaying() : this.player.playVideo() : (this.playOnReady = !0, window.YT && YT.Player ? this.player || (this.player = new YT.Player(this.element, {
- videoId: this.videoId,
- playerVars: this.playerVars,
- events: {
- onReady: function () {
- e.onReady()
- }, onStateChange: function (t) {
- e.onStateChange(t)
- }, onError: function (t) {
- e.onError(t)
- }
- }
- })) : this.loadAPI())
- }, pause: function () {
- this.ready ? this.player.pauseVideo() : this.playStatus && (delete this.playOnReady, this.listeners.pause(), delete this.playStatus)
- }
- }), t.extend(e.prototype, {
- YouTubePlayer: o, textFactory: function (t, e) {
- var i = this.options, s = this.getItemProperty(t, i.youTubeVideoIdProperty);
- return s ? (void 0 === this.getItemProperty(t, i.urlProperty) && (t[i.urlProperty] = "//www.youtube.com/watch?v=" + s), void 0 === this.getItemProperty(t, i.videoPosterProperty) && (t[i.videoPosterProperty] = "//img.youtube.com/vi/" + s + "/maxresdefault.jpg"), this.videoFactory(t, e, new o(s, i.youTubePlayerVars, i.youTubeClickToPlay))) : n.call(this, t, e)
- }
- }), e
- }), function (t) {
- "use strict";
- "function" == typeof define && define.amd ? define(["jquery", "./blueimp-gallery"], t) : t(window.jQuery, window.blueimp.Gallery)
- }(function (l, r) {
- "use strict";
- l(document).on("click", "[data-gallery]", function (t) {
- var e = l(this).data("gallery"), i = l(e), s = i.length && i || l(r.prototype.options.container), o = {
- onopen: function () {
- s.data("gallery", this).trigger("open")
- }, onopened: function () {
- s.trigger("opened")
- }, onslide: function () {
- s.trigger("slide", arguments)
- }, onslideend: function () {
- s.trigger("slideend", arguments)
- }, onslidecomplete: function () {
- s.trigger("slidecomplete", arguments)
- }, onclose: function () {
- s.trigger("close")
- }, onclosed: function () {
- s.trigger("closed").removeData("gallery")
- }
- }, n = l.extend(s.data(), {container: s[0], index: this, event: t}, o),
- a = l(this).closest("[data-gallery-group], body").find('[data-gallery="' + e + '"]');
- return n.filter && (a = a.filter(n.filter)), new r(a, n)
- })
- });
- //# sourceMappingURL=jquery.blueimp-gallery.min.js.map
|