/*! * Viewer.js v0.3.1 * https://github.com/fengyuanchen/viewerjs * * Copyright (c) 2015-2016 Fengyuan Chen * Released under the MIT license * * Date: 2016-02-02T11:35:52.542Z */ !(function (e, t) { "object" == typeof module && "object" == typeof module.exports ? (module.exports = e.document ? t(e, !0) : function (e) { if (!e.document) throw new Error("Viewer requires a window with a document"); return t(e); }) : t(e); })("undefined" != typeof window ? window : this, function (e, t) { "use strict"; function i(e) { return Ae.call(e).slice(8, -1).toLowerCase(); } function n(e) { return "string" == typeof e; } function a(e) { return "number" == typeof e && !isNaN(e); } function o(e) { return "undefined" == typeof e; } function r(e) { return "object" == typeof e && null !== e; } function s(e) { var t, i; if (!r(e)) return !1; try { return ( (t = e.constructor), (i = t.prototype), t && i && Ce.call(i, "isPrototypeOf") ); } catch (n) { return !1; } } function l(e) { return "function" === i(e); } function u(e) { return Array.isArray ? Array.isArray(e) : "array" === i(e); } function c(e, t) { return ( (t = t >= 0 ? t : 0), Array.from ? Array.from(e).slice(t) : _e.call(e, t) ); } function d(e, t) { var i = -1; return t.indexOf ? t.indexOf(e) : (f(t, function (t, n) { return t === e ? ((i = n), !1) : void 0; }), i); } function m(e) { return n(e) && (e = e.trim ? e.trim() : e.replace(Le, "1")), e; } function f(e, t) { var i, n; if (e && l(t)) if (u(e) || a(e.length)) for (n = 0, i = e.length; i > n && t.call(e, e[n], n, e) !== !1; n++); else if (r(e)) for (n in e) if (e.hasOwnProperty(n) && t.call(e, e[n], n, e) === !1) break; return e; } function h(e) { var t; if (arguments.length > 1) { if (((t = c(arguments)), Object.assign)) return Object.assign.apply(Object, t); t.shift(), f(t, function (t) { f(t, function (t, i) { e[i] = t; }); }); } return e; } function v(e, t) { var i = c(arguments, 2); return function () { return e.apply(t, i.concat(c(arguments))); }; } function g(e, t) { var i = e.style; f(t, function (e, t) { Ie.test(t) && a(e) && (e += "px"), (i[t] = e); }); } function w(t) { return e.getComputedStyle ? e.getComputedStyle(t, null) : t.currentStyle; } function p(e, t) { return e.classList ? e.classList.contains(t) : e.className.indexOf(t) > -1; } function b(e, t) { var i; if (t) { if (a(e.length)) return f(e, function (e) { b(e, t); }); if (e.classList) return e.classList.add(t); (i = m(e.className)), i ? i.indexOf(t) < 0 && (e.className = i + " " + t) : (e.className = t); } } function y(e, t) { return t ? a(e.length) ? f(e, function (e) { y(e, t); }) : e.classList ? e.classList.remove(t) : void ( e.className.indexOf(t) >= 0 && (e.className = e.className.replace(t, "")) ) : void 0; } function x(e, t, i) { return a(e.length) ? f(e, function (e) { x(e, t, i); }) : void (i ? b(e, t) : y(e, t)); } function z(e, t) { return r(e[t]) ? e[t] : e.dataset ? e.dataset[t] : e.getAttribute("data-" + t); } function D(e, t, i) { r(i) && o(e[t]) ? (e[t] = i) : e.dataset ? (e.dataset[t] = i) : e.setAttribute("data-" + t, i); } function E(e, t) { r(e[t]) ? delete e[t] : e.dataset ? delete e.dataset[t] : e.removeAttribute("data-" + t); } function k(e, t, i, n) { var a = m(t).split(Te), o = i; return a.length > 1 ? f(a, function (t) { k(e, t, i); }) : (n && (i = function () { return I(e, t, i), o.apply(e, arguments); }), void (e.addEventListener ? e.addEventListener(t, i, !1) : e.attachEvent && e.attachEvent("on" + t, i))); } function I(e, t, i) { var n = m(t).split(Te); return n.length > 1 ? f(n, function (t) { I(e, t, i); }) : void (e.removeEventListener ? e.removeEventListener(t, i, !1) : e.detachEvent && e.detachEvent("on" + t, i)); } function L(e, t) { var i; return e.dispatchEvent ? (l(H) ? (i = new H(t, { bubbles: !0, cancelable: !0 })) : ((i = W.createEvent("Event")), i.initEvent(t, !0, !0)), e.dispatchEvent(i)) : e.fireEvent ? e.fireEvent("on" + t) : void 0; } function T(e) { e.preventDefault ? e.preventDefault() : (e.returnValue = !1); } function Y(t) { var i, n = t || e.event; return ( n.target || (n.target = n.srcElement || W), a(n.pageX) || ((i = W.documentElement), (n.pageX = n.clientX + (e.scrollX || (i && i.scrollLeft) || 0) - ((i && i.clientLeft) || 0)), (n.pageY = n.clientY + (e.scrollY || (i && i.scrollTop) || 0) - ((i && i.clientTop) || 0))), n ); } function F(t) { var i = W.documentElement, n = t.getBoundingClientRect(); return { left: n.left + (e.scrollX || (i && i.scrollLeft) || 0) - ((i && i.clientLeft) || 0), top: n.top + (e.scrollY || (i && i.scrollTop) || 0) - ((i && i.clientTop) || 0), }; } function X(e) { var t = e.length, i = 0, n = 0; return ( t && (f(e, function (e) { (i += e.pageX), (n += e.pageY); }), (i /= t), (n /= t)), { pageX: i, pageY: n } ); } function S(e, t) { return e.getElementsByTagName(t); } function V(e, t) { return e.getElementsByClassName ? e.getElementsByClassName(t) : e.querySelectorAll("." + t); } function N(e, t) { return t.length ? f(t, function (t) { N(e, t); }) : void e.appendChild(t); } function P(e) { e.parentNode && e.parentNode.removeChild(e); } function A(e) { for (; e.firstChild; ) e.removeChild(e.firstChild); } function C(e, t) { o(e.textContent) ? (e.innerText = t) : (e.textContent = t); } function _(e) { return e.offsetWidth; } function R(e) { return n(e) ? e.replace(/^.*\//, "").replace(/[\?&#].*$/, "") : ""; } function q(e, t) { var i; return e.naturalWidth ? t(e.naturalWidth, e.naturalHeight) : ((i = W.createElement("img")), (i.onload = function () { t(this.width, this.height); }), void (i.src = e.src)); } function M(e) { var t = [], i = e.rotate, n = e.scaleX, o = e.scaleY; return ( a(i) && t.push("rotate(" + i + "deg)"), a(n) && a(o) && t.push("scale(" + n + "," + o + ")"), t.length ? t.join(" ") : "none" ); } function B(e) { switch (e) { case 2: return G; case 3: return J; case 4: return Q; } } function O(e, t) { var i = this; (i.element = e), (i.options = h({}, O.DEFAULTS, s(t) && t)), (i.isImg = !1), (i.isBuilt = !1), (i.isShown = !1), (i.isViewed = !1), (i.isFulled = !1), (i.isPlayed = !1), (i.wheeling = !1), (i.playing = !1), (i.fading = !1), (i.tooltiping = !1), (i.transitioning = !1), (i.action = !1), (i.target = !1), (i.timeout = !1), (i.index = 0), (i.length = 0), i.init(); } var W = e.document, H = e.Event, j = "viewer", U = j + "-fixed", Z = j + "-open", K = j + "-show", $ = j + "-hide", G = "viewer-hide-xs-down", J = "viewer-hide-sm-down", Q = "viewer-hide-md-down", ee = j + "-fade", te = j + "-in", ie = j + "-move", ne = j + "-active", ae = j + "-invisible", oe = j + "-transition", re = j + "-fullscreen", se = j + "-fullscreen-exit", le = j + "-close", ue = "mousedown touchstart pointerdown MSPointerDown", ce = "mousemove touchmove pointermove MSPointerMove", de = "mouseup touchend touchcancel pointerup pointercancel MSPointerUp MSPointerCancel", me = "wheel mousewheel DOMMouseScroll", fe = "transitionend", he = "load", ve = "keydown", ge = "click", we = "resize", pe = "build", be = "built", ye = "show", xe = "shown", ze = "hide", De = "hidden", Ee = "view", ke = "viewed", Ie = /width|height|left|top|marginLeft|marginTop/, Le = /^\s+(.*)\s+$/, Te = /\s+/, Ye = "undefined" != typeof W.createElement(j).style.transition, Fe = Math.min, Xe = Math.max, Se = Math.abs, Ve = Math.sqrt, Ne = Math.round, Pe = Object.prototype, Ae = Pe.toString, Ce = Pe.hasOwnProperty, _e = Array.prototype.slice; (O.prototype = { constructor: O, init: function () { var e = this, t = e.options, i = e.element, n = "img" === i.tagName.toLowerCase(), a = n ? [i] : S(i, "img"), o = a.length, r = v(e.ready, e); z(i, j) || (D(i, j, e), o && (l(t.build) && k(i, pe, t.build, !0), L(i, pe) !== !1 && (Ye || (t.transition = !1), (e.isImg = n), (e.length = o), (e.count = 0), (e.images = a), (e.body = W.body), t.inline ? (k( i, be, function () { e.view(); }, !0 ), f(a, function (e) { e.complete ? r() : k(e, he, r, !0); })) : k(i, ge, (e._start = v(e.start, e)))))); }, ready: function () { var e = this; e.count++, e.count === e.length && e.build(); }, build: function () { var e, t, i, n, a, o, r, s, u = this, c = u.options, d = u.element; u.isBuilt || ((e = W.createElement("div")), (e.innerHTML = O.TEMPLATE), (u.parent = t = d.parentNode), (u.viewer = i = V(e, "viewer-container")[0]), (u.canvas = V(i, "viewer-canvas")[0]), (u.footer = V(i, "viewer-footer")[0]), (u.title = r = V(i, "viewer-title")[0]), (u.toolbar = a = V(i, "viewer-toolbar")[0]), (u.navbar = o = V(i, "viewer-navbar")[0]), (u.button = n = V(i, "viewer-button")[0]), (u.tooltipBox = V(i, "viewer-tooltip")[0]), (u.player = V(i, "viewer-player")[0]), (u.list = V(i, "viewer-list")[0]), b(r, c.title ? B(c.title) : $), b(a, c.toolbar ? B(c.toolbar) : $), b(o, c.navbar ? B(c.navbar) : $), x(n, $, !c.button), x(a.querySelectorAll("li[class*=zoom]"), ae, !c.zoomable), x(a.querySelectorAll("li[class*=flip]"), ae, !c.scalable), c.rotatable || ((s = a.querySelectorAll("li[class*=rotate]")), b(s, ae), N(a, s)), c.inline ? (b(n, re), g(i, { zIndex: c.zIndexInline }), "static" === w(t).position && g(t, { position: "relative" })) : (b(n, le), b(i, U), b(i, ee), b(i, $), g(i, { zIndex: c.zIndex })), t.insertBefore(i, d.nextSibling), c.inline && (u.render(), u.bind(), (u.isShown = !0)), (u.isBuilt = !0), l(c.built) && k(d, be, c.built, !0), L(d, be)); }, unbuild: function () { var e = this; e.isBuilt && ((e.isBuilt = !1), P(e.viewer)); }, bind: function () { var t = this, i = t.options, n = t.element, a = t.viewer; l(i.view) && k(n, Ee, i.view), l(i.viewed) && k(n, ke, i.viewed), k(a, ge, (t._click = v(t.click, t))), k(a, me, (t._wheel = v(t.wheel, t))), k(t.canvas, ue, (t._mousedown = v(t.mousedown, t))), k(W, ce, (t._mousemove = v(t.mousemove, t))), k(W, de, (t._mouseup = v(t.mouseup, t))), k(W, ve, (t._keydown = v(t.keydown, t))), k(e, we, (t._resize = v(t.resize, t))); }, unbind: function () { var t = this, i = t.options, n = t.element, a = t.viewer; l(i.view) && I(n, Ee, i.view), l(i.viewed) && I(n, ke, i.viewed), I(a, ge, t._click), I(a, me, t._wheel), I(t.canvas, ue, t._mousedown), I(W, ce, t._mousemove), I(W, de, t._mouseup), I(W, ve, t._keydown), I(e, we, t._resize); }, render: function () { var e = this; e.initContainer(), e.initViewer(), e.initList(), e.renderViewer(); }, initContainer: function () { var t = this; t.containerData = { width: e.innerWidth, height: e.innerHeight }; }, initViewer: function () { var e, t = this, i = t.options, n = t.parent; i.inline & (t.parentData = e = { width: Xe(n.offsetWidth, i.minWidth), height: Xe(n.offsetHeight, i.minHeight), }), (t.isFulled || !e) && (e = t.containerData), (t.viewerData = h({}, e)); }, renderViewer: function () { var e = this; e.options.inline && !e.isFulled && g(e.viewer, e.viewerData); }, initList: function () { var e = this, t = e.options, i = e.element, a = e.list, o = []; f(e.images, function (a, r) { var s = a.src, u = a.alt || R(s), c = t.url; s && (n(c) ? (c = a.getAttribute(c)) : l(c) && (c = c.call(i, e)), o.push( '
  • ' +
              u +
              '
  • ' )); }), (a.innerHTML = o.join("")), f(S(a, "img"), function (t) { D(t, "filled", !0), k(t, he, v(e.loadImage, e), !0); }), (e.items = S(a, "li")), t.transition && k( i, ke, function () { b(a, oe); }, !0 ); }, renderList: function (e) { var t = this, i = e || t.index, n = t.items[i].offsetWidth || 30, a = n + 1; g(t.list, { width: a * t.length, marginLeft: (t.viewerData.width - n) / 2 - a * i, }); }, resetList: function () { var e = this; A(e.list), y(e.list, oe), g({ marginLeft: 0 }); }, initImage: function (e) { var t = this, i = t.options, n = t.image, a = t.viewerData, o = t.footer.offsetHeight, r = a.width, s = Xe(a.height - o, o), u = t.imageData || {}; q(n, function (n, a) { var o, c, d = n / a, m = r, f = s; s * d > r ? (f = r / d) : (m = s * d), (m = Fe(0.9 * m, n)), (f = Fe(0.9 * f, a)), (c = { naturalWidth: n, naturalHeight: a, aspectRatio: d, ratio: m / n, width: m, height: f, left: (r - m) / 2, top: (s - f) / 2, }), (o = h({}, c)), i.rotatable && ((c.rotate = u.rotate || 0), (o.rotate = 0)), i.scalable && ((c.scaleX = u.scaleX || 1), (c.scaleY = u.scaleY || 1), (o.scaleX = 1), (o.scaleY = 1)), (t.imageData = c), (t.initialImageData = o), l(e) && e(); }); }, renderImage: function (e) { var t = this, i = t.image, n = t.imageData, a = M(n); g(i, { width: n.width, height: n.height, marginLeft: n.left, marginTop: n.top, WebkitTransform: a, msTransform: a, transform: a, }), l(e) && (t.transitioning ? k(i, fe, e, !0) : e()); }, resetImage: function () { var e = this; e.image && (P(e.image), (e.image = null)); }, start: function (e) { var t = this, i = Y(e), n = i.target; "img" === n.tagName.toLowerCase() && ((t.target = n), t.show()); }, click: function (e) { var t = this, i = Y(e), n = i.target, a = z(n, "action"), o = t.imageData; switch (a) { case "mix": t.isPlayed ? t.stop() : t.options.inline ? t.isFulled ? t.exit() : t.full() : t.hide(); break; case "view": t.view(z(n, "index")); break; case "zoom-in": t.zoom(0.1, !0); break; case "zoom-out": t.zoom(-0.1, !0); break; case "one-to-one": t.toggle(); break; case "reset": t.reset(); break; case "prev": t.prev(); break; case "play": t.play(); break; case "next": t.next(); break; case "rotate-left": t.rotate(-90); break; case "rotate-right": t.rotate(90); break; case "flip-horizontal": t.scaleX(-o.scaleX || -1); break; case "flip-vertical": t.scaleY(-o.scaleY || -1); break; default: t.isPlayed && t.stop(); } }, load: function () { var e = this, t = e.options, i = e.image, n = e.viewerData; e.timeout && (clearTimeout(e.timeout), (e.timeout = !1)), y(i, ae), (i.style.cssText = "width:0;height:0;margin-left:" + n.width / 2 + "px;margin-top:" + n.height / 2 + "px;max-width:none!important;visibility:visible;"), e.initImage(function () { x(i, oe, t.transition), x(i, ie, t.movable), e.renderImage(function () { (e.isViewed = !0), L(e.element, ke); }); }); }, loadImage: function (e) { var t = Y(e), i = t.target, n = i.parentNode, a = n.offsetWidth || 30, o = n.offsetHeight || 50, r = !!z(i, "filled"); q(i, function (e, t) { var n = e / t, s = a, l = o; o * n > a ? r ? (s = o * n) : (l = a / n) : r ? (l = a / n) : (s = o * n), g(i, { width: s, height: l, marginLeft: (a - s) / 2, marginTop: (o - l) / 2, }); }); }, resize: function () { var e = this; e.initContainer(), e.initViewer(), e.renderViewer(), e.renderList(), e.isViewed && e.initImage(function () { e.renderImage(); }), e.isPlayed && f(S(e.player, "img"), function (t) { k(t, he, v(e.loadImage, e), !0), L(t, he); }); }, wheel: function (e) { var t = this, i = Y(e), n = Number(t.options.zoomRatio) || 0.1, a = 1; t.isViewed && (T(i), t.wheeling || ((t.wheeling = !0), setTimeout(function () { t.wheeling = !1; }, 50), i.deltaY ? (a = i.deltaY > 0 ? 1 : -1) : i.wheelDelta ? (a = -i.wheelDelta / 120) : i.detail && (a = i.detail > 0 ? 1 : -1), t.zoom(-a * n, !0, i))); }, keydown: function (e) { var t = this, i = Y(e), n = t.options, a = i.keyCode || i.which || i.charCode; if (t.isFulled && n.keyboard) switch (a) { case 27: t.isPlayed ? t.stop() : n.inline ? t.isFulled && t.exit() : t.hide(); break; case 32: t.isPlayed && t.stop(); break; case 37: t.prev(); break; case 38: T(i), t.zoom(n.zoomRatio, !0); break; case 39: t.next(); break; case 40: T(i), t.zoom(-n.zoomRatio, !0); break; case 48: case 49: (i.ctrlKey || i.shiftKey) && (T(i), t.toggle()); } }, mousedown: function (e) { var t, i, n = this, a = n.options, o = Y(e), r = a.movable ? "move" : !1, s = o.touches; if (n.isViewed) { if (s) { if (((t = s.length), t > 1)) { if (!a.zoomable || 2 !== t) return; (i = s[1]), (n.startX2 = i.pageX), (n.startY2 = i.pageY), (r = "zoom"); } else n.isSwitchable() && (r = "switch"); i = s[0]; } r && (T(o), (n.action = r), (n.startX = i ? i.pageX : o.pageX), (n.startY = i ? i.pageY : o.pageY)); } }, mousemove: function (e) { var t, i, n = this, a = n.options, o = Y(e), r = n.action, s = n.image, l = o.touches; if (n.isViewed) { if (l) { if (((t = l.length), t > 1)) { if (!a.zoomable || 2 !== t) return; (i = l[1]), (n.endX2 = i.pageX), (n.endY2 = i.pageY); } i = l[0]; } r && (T(o), "move" === r && a.transition && p(s, oe) && y(s, oe), (n.endX = i ? i.pageX : o.pageX), (n.endY = i ? i.pageY : o.pageY), n.change(o)); } }, mouseup: function (e) { var t = this, i = Y(e), n = t.action; n && (T(i), "move" === n && t.options.transition && b(t.image, oe), (t.action = !1)); }, show: function () { var e, t = this, i = t.options, n = t.element; return i.inline || t.transitioning ? t : (t.isBuilt || t.build(), (e = t.viewer), l(i.show) && k(n, ye, i.show, !0), L(n, ye) === !1 ? t : (b(t.body, Z), y(e, $), k( n, xe, function () { t.view(t.target ? d(t.target, c(t.images)) : t.index), (t.target = !1); }, !0 ), i.transition ? ((t.transitioning = !0), b(e, oe), _(e), k(e, fe, v(t.shown, t), !0), b(e, te)) : (b(e, te), t.shown()), t)); }, hide: function () { var e = this, t = e.options, i = e.element, n = e.viewer; return t.inline || e.transitioning || !e.isShown ? e : (l(t.hide) && k(i, ze, t.hide, !0), L(i, ze) === !1 ? e : (e.isViewed && t.transition ? ((e.transitioning = !0), k( e.image, fe, function () { k(n, fe, v(e.hidden, e), !0), y(n, te); }, !0 ), e.zoomTo(0, !1, !1, !0)) : (y(n, te), e.hidden()), e)); }, view: function (e) { var t, i, n, a, o, r = this, s = r.element, l = r.title, u = r.canvas; return ( (e = Number(e) || 0), !r.isShown || r.isPlayed || 0 > e || e >= r.length || (r.isViewed && e === r.index) ? r : L(s, Ee) === !1 ? r : ((i = r.items[e]), (n = S(i, "img")[0]), (a = z(n, "originalUrl")), (o = n.getAttribute("alt")), (t = W.createElement("img")), (t.src = a), (t.alt = o), (r.image = t), r.isViewed && y(r.items[r.index], ne), b(i, ne), (r.isViewed = !1), (r.index = e), (r.imageData = null), b(u, ae), A(u), N(u, t), r.renderList(), A(l), k( s, ke, function () { var e = r.imageData, t = e.naturalWidth, i = e.naturalHeight; C(l, o + " (" + t + " × " + i + ")"); }, !0 ), t.complete ? r.load() : (k(t, he, v(r.load, r), !0), r.timeout && clearTimeout(r.timeout), (r.timeout = setTimeout(function () { y(t, ae), (r.timeout = !1); }, 1e3))), r) ); }, prev: function () { var e = this; return e.view(Xe(e.index - 1, 0)), e; }, next: function () { var e = this; return e.view(Fe(e.index + 1, e.length - 1)), e; }, move: function (e, t) { var i = this, n = i.imageData; return ( i.moveTo(o(e) ? e : n.left + Number(e), o(t) ? t : n.top + Number(t)), i ); }, moveTo: function (e, t) { var i = this, n = i.imageData, r = !1; return ( o(t) && (t = e), (e = Number(e)), (t = Number(t)), i.isViewed && !i.isPlayed && i.options.movable && (a(e) && ((n.left = e), (r = !0)), a(t) && ((n.top = t), (r = !0)), r && i.renderImage()), i ); }, zoom: function (e, t, i) { var n = this, a = n.imageData; return ( (e = Number(e)), (e = 0 > e ? 1 / (1 - e) : 1 + e), n.zoomTo((a.width * e) / a.naturalWidth, t, i), n ); }, zoomTo: function (e, t, i, n) { var o, r, s, l, u = this, c = u.options, d = 0.01, m = 100, f = u.imageData; return ( (e = Xe(0, e)), a(e) && u.isViewed && !u.isPlayed && (n || c.zoomable) && (n || ((d = Xe(d, c.minZoomRatio)), (m = Fe(m, c.maxZoomRatio)), (e = Fe(Xe(e, d), m))), e > 0.95 && 1.05 > e && (e = 1), (o = f.naturalWidth * e), (r = f.naturalHeight * e), i ? ((s = F(u.viewer)), (l = i.touches ? X(i.touches) : { pageX: i.pageX, pageY: i.pageY }), (f.left -= (o - f.width) * ((l.pageX - s.left - f.left) / f.width)), (f.top -= (r - f.height) * ((l.pageY - s.top - f.top) / f.height))) : ((f.left -= (o - f.width) / 2), (f.top -= (r - f.height) / 2)), (f.width = o), (f.height = r), (f.ratio = e), u.renderImage(), t && u.tooltip()), u ); }, rotate: function (e) { var t = this; return t.rotateTo((t.imageData.rotate || 0) + Number(e)), t; }, rotateTo: function (e) { var t = this, i = t.imageData; return ( (e = Number(e)), a(e) && t.isViewed && !t.isPlayed && t.options.rotatable && ((i.rotate = e), t.renderImage()), t ); }, scale: function (e, t) { var i = this, n = i.imageData, r = !1; return ( o(t) && (t = e), (e = Number(e)), (t = Number(t)), i.isViewed && !i.isPlayed && i.options.scalable && (a(e) && ((n.scaleX = e), (r = !0)), a(t) && ((n.scaleY = t), (r = !0)), r && i.renderImage()), i ); }, scaleX: function (e) { var t = this; return t.scale(e, t.imageData.scaleY), t; }, scaleY: function (e) { var t = this; return t.scale(t.imageData.scaleX, e), t; }, play: function () { var e, t = this, i = t.options, n = t.player, o = v(t.loadImage, t), r = [], s = 0, l = 0; return !t.isShown || t.isPlayed ? t : (i.fullscreen && t.requestFullscreen(), (t.isPlayed = !0), b(n, K), f(t.items, function (e, t) { var a = S(e, "img")[0], u = W.createElement("img"); (u.src = z(a, "originalUrl")), (u.alt = a.getAttribute("alt")), s++, b(u, ee), x(u, oe, i.transition), p(e, ne) && (b(u, te), (l = t)), r.push(u), k(u, he, o, !0), N(n, u); }), a(i.interval) && i.interval > 0 && ((e = function () { t.playing = setTimeout(function () { y(r[l], te), l++, (l = s > l ? l : 0), b(r[l], te), e(); }, i.interval); }), s > 1 && e()), t); }, stop: function () { var e = this, t = e.player; return e.isPlayed ? (e.options.fullscreen && e.exitFullscreen(), (e.isPlayed = !1), clearTimeout(e.playing), y(t, K), A(t), e) : e; }, full: function () { var e = this, t = e.options, i = e.viewer, n = e.image, a = e.list; return !e.isShown || e.isPlayed || e.isFulled || !t.inline ? e : ((e.isFulled = !0), b(e.body, Z), b(e.button, se), t.transition && (y(n, oe), y(a, oe)), b(i, U), i.setAttribute("style", ""), g(i, { zIndex: t.zIndex }), e.initContainer(), (e.viewerData = h({}, e.containerData)), e.renderList(), e.initImage(function () { e.renderImage(function () { t.transition && setTimeout(function () { b(n, oe), b(a, oe); }, 0); }); }), e); }, exit: function () { var e = this, t = e.options, i = e.viewer, n = e.image, a = e.list; return e.isFulled ? ((e.isFulled = !1), y(e.body, Z), y(e.button, se), t.transition && (y(n, oe), y(a, oe)), y(i, U), g(i, { zIndex: t.zIndexInline }), (e.viewerData = h({}, e.parentData)), e.renderViewer(), e.renderList(), e.initImage(function () { e.renderImage(function () { t.transition && setTimeout(function () { b(n, oe), b(a, oe); }, 0); }); }), e) : e; }, tooltip: function () { var e = this, t = e.options, i = e.tooltipBox, n = e.imageData; return e.isViewed && !e.isPlayed && t.tooltip ? (C(i, Ne(100 * n.ratio) + "%"), e.tooltiping ? clearTimeout(e.tooltiping) : t.transition ? (e.fading && L(i, fe), b(i, K), b(i, ee), b(i, oe), _(i), b(i, te)) : b(i, K), (e.tooltiping = setTimeout(function () { t.transition ? (k( i, fe, function () { y(i, K), y(i, ee), y(i, oe), (e.fading = !1); }, !0 ), y(i, te), (e.fading = !0)) : y(i, K), (e.tooltiping = !1); }, 1e3)), e) : e; }, toggle: function () { var e = this; return ( 1 === e.imageData.ratio ? e.zoomTo(e.initialImageData.ratio, !0) : e.zoomTo(1, !0), e ); }, reset: function () { var e = this; return ( e.isViewed && !e.isPlayed && ((e.imageData = h({}, e.initialImageData)), e.renderImage()), e ); }, update: function () { var e, t = this, i = []; return t.isImg && !t.element.parentNode ? t.destroy() : ((t.length = t.images.length), t.isBuilt && (f(t.items, function (e, n) { var a = S(e, "img")[0], o = t.images[n]; o ? o.src !== a.src && i.push(n) : i.push(n); }), g(t.list, { width: "auto" }), t.initList(), t.isShown && (t.length ? t.isViewed && ((e = d(t.index, i)), e >= 0 ? ((t.isViewed = !1), t.view(Xe(t.index - (e + 1), 0))) : b(t.items[t.index], ne)) : ((t.image = null), (t.isViewed = !1), (t.index = 0), (t.imageData = null), A(t.canvas), A(t.title)))), t); }, destroy: function () { var e = this, t = e.element; return ( e.options.inline ? e.unbind() : (e.isShown && e.unbind(), I(t, ge, e._start)), e.unbuild(), E(t, j), e ); }, shown: function () { var e = this, t = e.options, i = e.element; (e.transitioning = !1), (e.isFulled = !0), (e.isShown = !0), (e.isVisible = !0), e.render(), e.bind(), l(t.shown) && k(i, xe, t.shown, !0), L(i, xe); }, hidden: function () { var e = this, t = e.options, i = e.element; (e.transitioning = !1), (e.isViewed = !1), (e.isFulled = !1), (e.isShown = !1), (e.isVisible = !1), e.unbind(), y(e.body, Z), b(e.viewer, $), e.resetList(), e.resetImage(), l(t.hidden) && k(i, De, t.hidden, !0), L(i, De); }, requestFullscreen: function () { var e = this, t = W.documentElement; !e.isFulled || W.fullscreenElement || W.mozFullScreenElement || W.webkitFullscreenElement || W.msFullscreenElement || (t.requestFullscreen ? t.requestFullscreen() : t.msRequestFullscreen ? t.msRequestFullscreen() : t.mozRequestFullScreen ? t.mozRequestFullScreen() : t.webkitRequestFullscreen && t.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)); }, exitFullscreen: function () { var e = this; e.isFulled && (W.exitFullscreen ? W.exitFullscreen() : W.msExitFullscreen ? W.msExitFullscreen() : W.mozCancelFullScreen ? W.mozCancelFullScreen() : W.webkitExitFullscreen && W.webkitExitFullscreen()); }, change: function (e) { var t = this, i = t.endX - t.startX, n = t.endY - t.startY; switch (t.action) { case "move": t.move(i, n); break; case "zoom": t.zoom( (function (e, t, i, n) { var a = Ve(e * e + t * t), o = Ve(i * i + n * n); return (o - a) / a; })( Se(t.startX - t.startX2), Se(t.startY - t.startY2), Se(t.endX - t.endX2), Se(t.endY - t.endY2) ), !1, e ), (t.startX2 = t.endX2), (t.startY2 = t.endY2); break; case "switch": (t.action = "switched"), Se(i) > Se(n) && (i > 1 ? t.prev() : -1 > i && t.next()); } (t.startX = t.endX), (t.startY = t.endY); }, isSwitchable: function () { var e = this, t = e.imageData, i = e.viewerData; return ( t.left >= 0 && t.top >= 0 && t.width <= i.width && t.height <= i.height ); }, }), (O.DEFAULTS = { inline: !1, button: !0, navbar: !0, title: !0, toolbar: !0, tooltip: !0, movable: !0, zoomable: !0, rotatable: !0, scalable: !0, transition: !0, fullscreen: !0, keyboard: !0, interval: 5e3, minWidth: 200, minHeight: 100, zoomRatio: 0.1, minZoomRatio: 0.01, maxZoomRatio: 100, zIndex: 2015, zIndexInline: 0, url: "src", build: null, built: null, show: null, shown: null, hide: null, hidden: null, view: null, viewed: null, }), (O.TEMPLATE = '
    '); var Re = e.Viewer; return ( (O.noConflict = function () { return (e.Viewer = Re), O; }), (O.setDefaults = function (e) { h(O.DEFAULTS, e); }), "function" == typeof define && define.amd && define("viewer", [], function () { return O; }), t || (e.Viewer = O), O ); });