{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/blueimp-gallery/js/blueimp-gallery.min.js","webpack:///./app/javascript/plugins/categoryFilter.js","webpack:///./app/javascript/packs/application.js","webpack:///./app/javascript/plugins/lightbox.js","webpack:///./node_modules/blueimp-gallery/js/blueimp-gallery.js","webpack:///./node_modules/blueimp-gallery/js/blueimp-gallery-video.js","webpack:///./node_modules/blueimp-gallery/js/blueimp-helper.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","e","this","find","length","nodeType","window","extend","contains","parentNode","parseJSON","JSON","parse","document","querySelectorAll","charAt","getElementById","slice","getElementsByTagName","hasClass","RegExp","test","className","addClass","removeClass","replace","on","split","shift","addEventListener","attachEvent","off","removeEventListener","detachEvent","empty","hasChildNodes","removeChild","lastChild","first","undefined","body","style","maxHeight","options","list","num","initOptions","initialize","console","log","container","slidesContainer","titleElement","displayClass","controlsClass","singleClass","leftEdgeClass","rightEdgeClass","playingClass","slideClass","slideLoadingClass","slideErrorClass","slideContentClass","toggleClass","prevClass","nextClass","closeClass","playPauseClass","typeProperty","titleProperty","altTextProperty","urlProperty","srcsetProperty","displayTransition","clearSlides","stretchImages","toggleControlsOnReturn","toggleControlsOnSlideClick","toggleSlideshowOnSpace","enableKeyboardNavigation","closeOnEscape","closeOnSlideClick","closeOnSwipeUpOrDown","closeOnHashChange","emulateTouchEvents","stopTouchEventsPropagation","hidePageScrollbars","disableScroll","carousel","continuous","unloadElements","startSlideshow","slideshowInterval","slideshowDirection","index","preloadRange","transitionDuration","slideshowTransitionDuration","event","onopen","onopened","onslide","onslideend","onslidecomplete","onclose","onclosed","carouselOptions","support","touch","ontouchstart","DocumentTouch","webkitTransition","end","prefix","MozTransition","OTransition","transition","appendChild","getComputedStyle","getPropertyValue","transform","translate","translateZ","backgroundSize","contain","cover","createElement","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","cancelAnimationFrame","webkitCancelRequestAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","initStartIndex","initWidget","initEventListeners","ontransitionend","play","slide","clearTimeout","timeout","circle","Math","abs","positions","slideWidth","move","animate","getIndex","getNumber","prev","next","interval","elements","setTimeout","animationFrameId","pause","add","concat","Array","addSlide","positionSlide","initSlides","resetSlides","unloadAllSlides","slides","handleClose","destroyEventListeners","display","overflow","bodyOverflowStyle","close","target","translateX","a","translateY","Date","getTime","setInterval","left","clearInterval","floor","preventDefault","returnValue","stopPropagation","cancelBubble","onresize","onhashchange","onmousedown","which","nodeName","originalEvent","touches","pageX","pageY","onmousemove","touchStart","ontouchmove","onmouseup","ontouchend","onmouseout","relatedTarget","x","y","time","now","isScrolling","touchDelta","scale","push","unshift","pop","h","ceil","u","ontouchcancel","oncomplete","srcElement","getNodeIndex","type","clientHeight","onload","onerror","onkeydown","keyCode","toggleControls","stopImmediatePropagation","toggleSlideshow","handleClick","onclick","updateEdgeClasses","handleSlide","loadElements","setTitle","firstChild","title","alt","createTextNode","apply","imageFactory","imagePrototype","cloneNode","getItemProperty","elementPrototype","draggable","background","src","setAttribute","loadElement","proxyListener","min","unloadSlide","slidePrototype","width","children","clientWidth","slideHeight","parseInt","getAttribute","getNestedProperty","getDataProperty","dataset","toUpperCase","toLowerCase","handleOpen","fullScreen","getFullScreenElement","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","requestFullScreen","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","exitFullScreen","exitFullscreen","webkitCancelFullScreen","mozCancelFullScreen","msExitFullscreen","indicatorContainer","activeIndicatorClass","thumbnailProperty","thumbnailIndicators","createIndicator","indicatorPrototype","backgroundImage","addIndicator","indicators","setActiveIndicator","activeIndicator","w","videoContentClass","videoLoadingClass","videoPlayingClass","videoPosterProperty","videoSourcesProperty","playingVideo","videoFactory","f","g","v","C","canPlayType","poster","href","controls","seeking","element","postMessage","vimeoVideoIdProperty","vimeoPlayerUrl","vimeoPlayerIdPrefix","vimeoClickToPlay","textFactory","url","videoId","playerId","clickToPlay","listeners","loadAPI","playOnReady","insertBefore","readyState","onReady","ready","player","addEvent","hasPlayed","onPlaying","onPause","playStatus","playing","insertIframe","id","replaceChild","navigator","platform","api","$f","VimeoPlayer","youTubeVideoIdProperty","youTubePlayerVars","wmode","youTubeClickToPlay","playerVars","onYouTubeIframeAPIReady","checkSeek","stateChange","YT","PlayerState","PAUSED","ENDED","onStateChange","data","PLAYING","onError","error","playVideo","Player","events","pauseVideo","YouTubePlayer","filters","eventTarget","currentTarget","$","classList","targetData","jobtype","remove","categoryFilter","links","count","lightbox","blueimp","factory","Gallery","prop","transitions","elementTests","to","duration","direction","naturalDirection","diff","that","nextIndex","closeHandler","dist","from","start","timer","timeElap","related","touchDeltaX","indices","indexForward","indexBackward","distanceForward","distanceBackward","absTouchDeltaX","isValidSlide","isPastBounds","isValidClose","parent","isTarget","text","func","args","wait","obj","callback","called","altText","img","callbackWrapper","srcset","limit","j","reload","len","str","singleQuoteProp","doubleQuoteProp","arrayIndex","dotProp","_","b","ignore","openHandler","galleryPrototype","videoInterface","posterImage","source","playMediaControl","isLoading","hasControls","videoContainerNode","videoContainer","errorArgs","video","posterUrl","sources","obj1","obj2","Helper","query","string","regexp","eventName","handler","eventNames"],"mappings":"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","file":"js/application-d485142c860c7a347746.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 224);\n","!function () {\n \"use strict\";\n\n function t(t, e) {\n var i;\n for (i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);\n return t;\n }\n function i(t) {\n if (!this || this.find !== i.prototype.find) return new i(t);\n if (this.length = 0, t) if (\"string\" == typeof t && (t = this.find(t)), t.nodeType || t === t.window) this.length = 1, this[0] = t;else {\n var e = t.length;\n for (this.length = e; e;) this[--e] = t[e];\n }\n }\n i.extend = t, i.contains = function (t, e) {\n do {\n if ((e = e.parentNode) === t) return !0;\n } while (e);\n return !1;\n }, i.parseJSON = function (t) {\n return window.JSON && JSON.parse(t);\n }, t(i.prototype, {\n find: function (t) {\n var e = this[0] || document;\n return \"string\" == typeof t && (t = e.querySelectorAll ? e.querySelectorAll(t) : \"#\" === t.charAt(0) ? e.getElementById(t.slice(1)) : e.getElementsByTagName(t)), new i(t);\n },\n hasClass: function (t) {\n return !!this[0] && new RegExp(\"(^|\\\\s+)\" + t + \"(\\\\s+|$)\").test(this[0].className);\n },\n addClass: function (t) {\n for (var e, i = this.length; i;) {\n if (!(e = this[--i]).className) return e.className = t, this;\n if (this.hasClass(t)) return this;\n e.className += \" \" + t;\n }\n return this;\n },\n removeClass: function (t) {\n for (var e, i = new RegExp(\"(^|\\\\s+)\" + t + \"(\\\\s+|$)\"), s = this.length; s;) (e = this[--s]).className = e.className.replace(i, \" \");\n return this;\n },\n on: function (t, e) {\n for (var i, s, n = t.split(/\\s+/); n.length;) for (t = n.shift(), i = this.length; i;) (s = this[--i]).addEventListener ? s.addEventListener(t, e, !1) : s.attachEvent && s.attachEvent(\"on\" + t, e);\n return this;\n },\n off: function (t, e) {\n for (var i, s, n = t.split(/\\s+/); n.length;) for (t = n.shift(), i = this.length; i;) (s = this[--i]).removeEventListener ? s.removeEventListener(t, e, !1) : s.detachEvent && s.detachEvent(\"on\" + t, e);\n return this;\n },\n empty: function () {\n for (var t, e = this.length; e;) for (t = this[--e]; t.hasChildNodes();) t.removeChild(t.lastChild);\n return this;\n },\n first: function () {\n return new i(this[0]);\n }\n }), \"function\" == typeof define && define.amd ? define(function () {\n return i;\n }) : (window.blueimp = window.blueimp || {}, window.blueimp.helper = i);\n}(), function (t) {\n \"use strict\";\n\n \"function\" == typeof define && define.amd ? define([\"./blueimp-helper\"], t) : (window.blueimp = window.blueimp || {}, window.blueimp.Gallery = t(window.blueimp.helper || window.jQuery));\n}(function (c) {\n \"use strict\";\n\n function i(t, e) {\n return document.body.style.maxHeight === undefined ? 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);\n }\n return c.extend(i.prototype, {\n options: {\n container: \"#blueimp-gallery\",\n slidesContainer: \"div\",\n titleElement: \"h3\",\n displayClass: \"blueimp-gallery-display\",\n controlsClass: \"blueimp-gallery-controls\",\n singleClass: \"blueimp-gallery-single\",\n leftEdgeClass: \"blueimp-gallery-left\",\n rightEdgeClass: \"blueimp-gallery-right\",\n playingClass: \"blueimp-gallery-playing\",\n slideClass: \"slide\",\n slideLoadingClass: \"slide-loading\",\n slideErrorClass: \"slide-error\",\n slideContentClass: \"slide-content\",\n toggleClass: \"toggle\",\n prevClass: \"prev\",\n nextClass: \"next\",\n closeClass: \"close\",\n playPauseClass: \"play-pause\",\n typeProperty: \"type\",\n titleProperty: \"title\",\n altTextProperty: \"alt\",\n urlProperty: \"href\",\n srcsetProperty: \"urlset\",\n displayTransition: !0,\n clearSlides: !0,\n stretchImages: !1,\n toggleControlsOnReturn: !0,\n toggleControlsOnSlideClick: !0,\n toggleSlideshowOnSpace: !0,\n enableKeyboardNavigation: !0,\n closeOnEscape: !0,\n closeOnSlideClick: !0,\n closeOnSwipeUpOrDown: !0,\n closeOnHashChange: !0,\n emulateTouchEvents: !0,\n stopTouchEventsPropagation: !1,\n hidePageScrollbars: !0,\n disableScroll: !0,\n carousel: !1,\n continuous: !0,\n unloadElements: !0,\n startSlideshow: !1,\n slideshowInterval: 5e3,\n slideshowDirection: \"ltr\",\n index: 0,\n preloadRange: 2,\n transitionDuration: 300,\n slideshowTransitionDuration: 500,\n event: undefined,\n onopen: undefined,\n onopened: undefined,\n onslide: undefined,\n onslideend: undefined,\n onslidecomplete: undefined,\n onclose: undefined,\n onclosed: undefined\n },\n carouselOptions: {\n hidePageScrollbars: !1,\n toggleControlsOnReturn: !1,\n toggleSlideshowOnSpace: !1,\n enableKeyboardNavigation: !1,\n closeOnEscape: !1,\n closeOnSlideClick: !1,\n closeOnSwipeUpOrDown: !1,\n disableScroll: !1,\n startSlideshow: !0\n },\n console: window.console && \"function\" == typeof window.console.log ? window.console : {\n log: function () {}\n },\n support: function (s) {\n var t,\n n = {\n touch: window.ontouchstart !== undefined || window.DocumentTouch && document instanceof DocumentTouch\n },\n e = {\n webkitTransition: {\n end: \"webkitTransitionEnd\",\n prefix: \"-webkit-\"\n },\n MozTransition: {\n end: \"transitionend\",\n prefix: \"-moz-\"\n },\n OTransition: {\n end: \"otransitionend\",\n prefix: \"-o-\"\n },\n transition: {\n end: \"transitionend\",\n prefix: \"\"\n }\n };\n for (t in e) if (Object.prototype.hasOwnProperty.call(e, t) && s.style[t] !== undefined) {\n n.transition = e[t], n.transition.name = t;\n break;\n }\n function i() {\n var t,\n e,\n i = n.transition;\n document.body.appendChild(s), i && (t = i.name.slice(0, -9) + \"ransform\", s.style[t] !== undefined && (s.style[t] = \"translateZ(0)\", e = window.getComputedStyle(s).getPropertyValue(i.prefix + \"transform\"), n.transform = {\n prefix: i.prefix,\n name: t,\n translate: !0,\n translateZ: !!e && \"none\" !== e\n })), s.style.backgroundSize !== undefined && (n.backgroundSize = {}, s.style.backgroundSize = \"contain\", n.backgroundSize.contain = \"contain\" === window.getComputedStyle(s).getPropertyValue(\"background-size\"), s.style.backgroundSize = \"cover\", n.backgroundSize.cover = \"cover\" === window.getComputedStyle(s).getPropertyValue(\"background-size\")), document.body.removeChild(s);\n }\n return document.body ? i() : c(document).on(\"DOMContentLoaded\", i), n;\n }(document.createElement(\"div\")),\n requestAnimationFrame: window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame,\n cancelAnimationFrame: window.cancelAnimationFrame || window.webkitCancelRequestAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame,\n initialize: function () {\n if (this.initStartIndex(), !1 === this.initWidget()) return !1;\n this.initEventListeners(), this.onslide(this.index), this.ontransitionend(), this.options.startSlideshow && this.play();\n },\n slide: function (t, e) {\n window.clearTimeout(this.timeout);\n var i,\n s,\n n,\n o = this.index;\n if (o !== t && 1 !== this.num) {\n if (e = e || this.options.transitionDuration, this.support.transform) {\n for (this.options.continuous || (t = this.circle(t)), i = Math.abs(o - t) / (o - t), this.options.continuous && (s = i, (i = -this.positions[this.circle(t)] / this.slideWidth) !== s && (t = -i * this.num + t)), n = Math.abs(o - t) - 1; n;) --n, this.move(this.circle((o < t ? t : o) - n - 1), this.slideWidth * i, 0);\n t = this.circle(t), this.move(o, this.slideWidth * i, e), this.move(t, 0, e), this.options.continuous && this.move(this.circle(t - i), -this.slideWidth * i, 0);\n } else t = this.circle(t), this.animate(o * -this.slideWidth, t * -this.slideWidth, e);\n this.onslide(t);\n }\n },\n getIndex: function () {\n return this.index;\n },\n getNumber: function () {\n return this.num;\n },\n prev: function () {\n (this.options.continuous || this.index) && this.slide(this.index - 1);\n },\n next: function () {\n (this.options.continuous || this.index < this.num - 1) && this.slide(this.index + 1);\n },\n play: function (t) {\n var i = this,\n e = this.index + (\"rtl\" === this.options.slideshowDirection ? -1 : 1);\n 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) {\n i.animationFrameId = i.requestAnimationFrame.call(window, function () {\n i.slide(t, e);\n });\n }, [e, this.options.slideshowTransitionDuration], this.interval)), this.container.addClass(this.options.playingClass);\n },\n pause: function () {\n window.clearTimeout(this.timeout), this.interval = null, this.cancelAnimationFrame && (this.cancelAnimationFrame.call(window, this.animationFrameId), this.animationFrameId = null), this.container.removeClass(this.options.playingClass);\n },\n add: function (t) {\n var e;\n 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);\n this.positions.length = this.num, this.initSlides(!0);\n },\n resetSlides: function () {\n this.slidesContainer.empty(), this.unloadAllSlides(), this.slides = [];\n },\n handleClose: function () {\n var t = this.options;\n 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);\n },\n close: function () {\n var e = this;\n this.options.onclose && this.options.onclose.call(this), this.support.transition && this.options.displayTransition ? (this.container.on(this.support.transition.end, function i(t) {\n t.target === e.container[0] && (e.container.off(e.support.transition.end, i), e.handleClose());\n }), this.container.removeClass(this.options.displayClass)) : this.handleClose();\n },\n circle: function (t) {\n return (this.num + t % this.num) % this.num;\n },\n move: function (t, e, i) {\n this.translateX(t, e, i), this.positions[t] = e;\n },\n translate: function (t, e, i, s) {\n var n, o, a;\n this.slides[t] && (n = this.slides[t].style, o = this.support.transition, a = this.support.transform, n[o.name + \"Duration\"] = s + \"ms\", n[a.name] = \"translate(\" + e + \"px, \" + i + \"px)\" + (a.translateZ ? \" translateZ(0)\" : \"\"));\n },\n translateX: function (t, e, i) {\n this.translate(t, e, 0, i);\n },\n translateY: function (t, e, i) {\n this.translate(t, 0, e, i);\n },\n animate: function (e, i, s) {\n var n, o, a;\n s ? (n = this, o = new Date().getTime(), a = window.setInterval(function () {\n var t = new Date().getTime() - o;\n if (s < t) return n.slidesContainer[0].style.left = i + \"px\", n.ontransitionend(), void window.clearInterval(a);\n n.slidesContainer[0].style.left = (i - e) * (Math.floor(t / s * 100) / 100) + e + \"px\";\n }, 4)) : this.slidesContainer[0].style.left = i + \"px\";\n },\n preventDefault: function (t) {\n t.preventDefault ? t.preventDefault() : t.returnValue = !1;\n },\n stopPropagation: function (t) {\n t.stopPropagation ? t.stopPropagation() : t.cancelBubble = !0;\n },\n onresize: function () {\n this.initSlides(!0);\n },\n onhashchange: function () {\n this.options.closeOnHashChange && this.close();\n },\n onmousedown: function (t) {\n t.which && 1 === t.which && \"VIDEO\" !== t.target.nodeName && \"AUDIO\" !== t.target.nodeName && (t.preventDefault(), (t.originalEvent || t).touches = [{\n pageX: t.pageX,\n pageY: t.pageY\n }], this.ontouchstart(t));\n },\n onmousemove: function (t) {\n this.touchStart && ((t.originalEvent || t).touches = [{\n pageX: t.pageX,\n pageY: t.pageY\n }], this.ontouchmove(t));\n },\n onmouseup: function (t) {\n this.touchStart && (this.ontouchend(t), delete this.touchStart);\n },\n onmouseout: function (t) {\n var e, i;\n this.touchStart && (e = t.target, (i = t.relatedTarget) && (i === e || c.contains(e, i)) || this.onmouseup(t));\n },\n ontouchstart: function (t) {\n this.options.stopTouchEventsPropagation && this.stopPropagation(t);\n var e = (t.originalEvent || t).touches[0];\n this.touchStart = {\n x: e.pageX,\n y: e.pageY,\n time: Date.now()\n }, this.isScrolling = undefined, this.touchDelta = {};\n },\n ontouchmove: function (t) {\n this.options.stopTouchEventsPropagation && this.stopPropagation(t);\n var e,\n i,\n s = (t.originalEvent || t).touches,\n n = s[0],\n o = (t.originalEvent || t).scale,\n a = this.index;\n if (!(1 < s.length || o && 1 !== o)) if (this.options.disableScroll && t.preventDefault(), this.touchDelta = {\n x: n.pageX - this.touchStart.x,\n y: n.pageY - this.touchStart.y\n }, e = this.touchDelta.x, this.isScrolling === undefined && (this.isScrolling = this.isScrolling || Math.abs(e) < Math.abs(this.touchDelta.y)), this.isScrolling) this.options.carousel || this.translateY(a, this.touchDelta.y + this.positions[a], 0);else for (t.preventDefault(), window.clearTimeout(this.timeout), this.options.continuous ? i = [this.circle(a + 1), a, this.circle(a - 1)] : (this.touchDelta.x = e /= !a && 0 < e || a === this.num - 1 && e < 0 ? Math.abs(e) / this.slideWidth + 1 : 1, i = [a], a && i.push(a - 1), a < this.num - 1 && i.unshift(a + 1)); i.length;) a = i.pop(), this.translateX(a, e + this.positions[a], 0);\n },\n ontouchend: function (t) {\n this.options.stopTouchEventsPropagation && this.stopPropagation(t);\n var e,\n i,\n s,\n n,\n o,\n a = this.index,\n l = Math.abs(this.touchDelta.x),\n r = this.slideWidth,\n h = Math.ceil(this.options.transitionDuration * (1 - l / r) / 2),\n d = 20 < l,\n c = !a && 0 < this.touchDelta.x || a === this.num - 1 && this.touchDelta.x < 0,\n u = !d && this.options.closeOnSwipeUpOrDown && 20 < Math.abs(this.touchDelta.y);\n this.options.continuous && (c = !1), e = this.touchDelta.x < 0 ? -1 : 1, this.isScrolling ? u ? this.close() : this.translateY(a, 0, h) : d && !c ? (i = a + e, s = a - e, n = r * e, o = -r * e, this.options.continuous ? (this.move(this.circle(i), n, 0), this.move(this.circle(a - 2 * e), o, 0)) : 0 <= i && i < this.num && this.move(i, n, 0), this.move(a, this.positions[a] + n, h), this.move(this.circle(s), this.positions[this.circle(s)] + n, h), a = this.circle(s), this.onslide(a)) : this.options.continuous ? (this.move(this.circle(a - 1), -r, h), this.move(a, 0, h), this.move(this.circle(a + 1), r, h)) : (a && this.move(a - 1, -r, h), this.move(a, 0, h), a < this.num - 1 && this.move(a + 1, r, h));\n },\n ontouchcancel: function (t) {\n this.touchStart && (this.ontouchend(t), delete this.touchStart);\n },\n ontransitionend: function (t) {\n var e = this.slides[this.index];\n t && e !== t.target || (this.interval && this.play(), this.setTimeout(this.options.onslideend, [this.index, e]));\n },\n oncomplete: function (t) {\n var e,\n i = t.target || t.srcElement,\n s = i && i.parentNode;\n i && s && (e = this.getNodeIndex(s), c(s).removeClass(this.options.slideLoadingClass), \"error\" === t.type ? (c(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]));\n },\n onload: function (t) {\n this.oncomplete(t);\n },\n onerror: function (t) {\n this.oncomplete(t);\n },\n onkeydown: function (t) {\n switch (t.which || t.keyCode) {\n case 13:\n this.options.toggleControlsOnReturn && (this.preventDefault(t), this.toggleControls());\n break;\n case 27:\n this.options.closeOnEscape && (this.close(), t.stopImmediatePropagation());\n break;\n case 32:\n this.options.toggleSlideshowOnSpace && (this.preventDefault(t), this.toggleSlideshow());\n break;\n case 37:\n this.options.enableKeyboardNavigation && (this.preventDefault(t), this.prev());\n break;\n case 39:\n this.options.enableKeyboardNavigation && (this.preventDefault(t), this.next());\n }\n },\n handleClick: function (t) {\n var e = this.options,\n i = t.target || t.srcElement,\n s = i.parentNode;\n function n(t) {\n return c(i).hasClass(t) || c(s).hasClass(t);\n }\n n(e.toggleClass) ? (this.preventDefault(t), this.toggleControls()) : n(e.prevClass) ? (this.preventDefault(t), this.prev()) : n(e.nextClass) ? (this.preventDefault(t), this.next()) : n(e.closeClass) ? (this.preventDefault(t), this.close()) : n(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());\n },\n onclick: function (t) {\n if (!(this.options.emulateTouchEvents && this.touchDelta && (20 < Math.abs(this.touchDelta.x) || 20 < Math.abs(this.touchDelta.y)))) return this.handleClick(t);\n delete this.touchDelta;\n },\n updateEdgeClasses: function (t) {\n 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);\n },\n handleSlide: function (t) {\n this.options.continuous || this.updateEdgeClasses(t), this.loadElements(t), this.options.unloadElements && this.unloadElements(t), this.setTitle(t);\n },\n onslide: function (t) {\n this.index = t, this.handleSlide(t), this.setTimeout(this.options.onslide, [t, this.slides[t]]);\n },\n setTitle: function (t) {\n var e = this.slides[t].firstChild,\n i = e.title || e.alt,\n s = this.titleElement;\n s.length && (this.titleElement.empty(), i && s[0].appendChild(document.createTextNode(i)));\n },\n setTimeout: function (t, e, i) {\n var s = this;\n return t && window.setTimeout(function () {\n t.apply(s, e || []);\n }, i || 0);\n },\n imageFactory: function (t, e) {\n var i,\n s,\n n,\n o,\n a = this,\n l = this.imagePrototype.cloneNode(!1),\n r = t,\n h = this.options.stretchImages;\n return \"string\" != typeof r && (r = this.getItemProperty(t, this.options.urlProperty), n = this.getItemProperty(t, this.options.titleProperty), o = this.getItemProperty(t, this.options.altTextProperty) || n), !0 === h && (h = \"contain\"), (h = this.support.backgroundSize && this.support.backgroundSize[h] && h) ? s = this.elementPrototype.cloneNode(!1) : (s = l).draggable = !1, n && (s.title = n), o && (s.alt = o), c(l).on(\"load error\", function d(t) {\n if (!i) {\n if (t = {\n type: t.type,\n target: s\n }, !s.parentNode) return a.setTimeout(d, [t]);\n i = !0, c(l).off(\"load error\", d), h && \"load\" === t.type && (s.style.background = 'url(\"' + r + '\") center no-repeat', s.style.backgroundSize = h), e(t);\n }\n }), l.src = r, s;\n },\n createElement: function (t, e) {\n var i = t && this.getItemProperty(t, this.options.typeProperty),\n s = i && this[i.split(\"/\")[0] + \"Factory\"] || this.imageFactory,\n n = t && s.call(this, t, e),\n o = this.getItemProperty(t, this.options.srcsetProperty);\n return n || (n = this.elementPrototype.cloneNode(!1), this.setTimeout(e, [{\n type: \"error\",\n target: n\n }])), o && n.setAttribute(\"srcset\", o), c(n).addClass(this.options.slideContentClass), n;\n },\n loadElement: function (t) {\n this.elements[t] || (this.slides[t].firstChild ? this.elements[t] = c(this.slides[t]).hasClass(this.options.slideErrorClass) ? 3 : 2 : (this.elements[t] = 1, c(this.slides[t]).addClass(this.options.slideLoadingClass), this.slides[t].appendChild(this.createElement(this.list[t], this.proxyListener))));\n },\n loadElements: function (t) {\n for (var e = Math.min(this.num, 2 * this.options.preloadRange + 1), i = t, s = 0; s < e; s += 1) i += s * (s % 2 == 0 ? -1 : 1), i = this.circle(i), this.loadElement(i);\n },\n unloadElements: function (t) {\n var e, i;\n 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]);\n },\n addSlide: function (t) {\n var e = this.slidePrototype.cloneNode(!1);\n e.setAttribute(\"data-index\", t), this.slidesContainer[0].appendChild(e), this.slides.push(e);\n },\n positionSlide: function (t) {\n var e = this.slides[t];\n 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));\n },\n initSlides: function (t) {\n var e, i;\n 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\"), c(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);\n 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\");\n },\n unloadSlide: function (t) {\n var e = this.slides[t],\n i = e.firstChild;\n null !== i && e.removeChild(i);\n },\n unloadAllSlides: function () {\n for (var t = 0, e = this.slides.length; t < e; t++) this.unloadSlide(t);\n },\n toggleControls: function () {\n var t = this.options.controlsClass;\n this.container.hasClass(t) ? this.container.removeClass(t) : this.container.addClass(t);\n },\n toggleSlideshow: function () {\n this.interval ? this.pause() : this.play();\n },\n getNodeIndex: function (t) {\n return parseInt(t.getAttribute(\"data-index\"), 10);\n },\n getNestedProperty: function (a, t) {\n return t.replace(/\\[(?:'([^']+)'|\"([^\"]+)\"|(\\d+))\\]|(?:(?:^|\\.)([^\\.\\[]+))/g, function (t, e, i, s, n) {\n var o = n || e || i || s && parseInt(s, 10);\n t && a && (a = a[o]);\n }), a;\n },\n getDataProperty: function (t, e) {\n var i, s;\n if (t.dataset ? (i = e.replace(/-([a-z])/g, function (t, e) {\n return e.toUpperCase();\n }), s = t.dataset[i]) : t.getAttribute && (s = t.getAttribute(\"data-\" + e.replace(/([A-Z])/g, \"-$1\").toLowerCase())), \"string\" == typeof s) {\n if (/^(true|false|null|-?\\d+(\\.\\d+)?|\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/.test(s)) try {\n return c.parseJSON(s);\n } catch (n) {}\n return s;\n }\n },\n getItemProperty: function (t, e) {\n var i = this.getDataProperty(t, e);\n return i === undefined && (i = t[e]), i === undefined && (i = this.getNestedProperty(t, e)), i;\n },\n initStartIndex: function () {\n var t,\n e = this.options.index,\n i = this.options.urlProperty;\n 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)) {\n e = t;\n break;\n }\n this.index = this.circle(parseInt(e, 10) || 0);\n },\n initEventListeners: function () {\n var i = this,\n t = this.slidesContainer;\n function e(t) {\n var e = i.support.transition && i.support.transition.end === t.type ? \"transitionend\" : t.type;\n i[\"on\" + e](t);\n }\n c(window).on(\"resize\", e), c(window).on(\"hashchange\", e), c(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;\n },\n destroyEventListeners: function () {\n var t = this.slidesContainer,\n e = this.proxyListener;\n c(window).off(\"resize\", e), c(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);\n },\n handleOpen: function () {\n this.options.onopened && this.options.onopened.call(this);\n },\n initWidget: function () {\n var e = this;\n return this.container = c(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 i(t) {\n t.target === e.container[0] && (e.container.off(e.support.transition.end, i), e.handleOpen());\n }) : 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);\n },\n initOptions: function (t) {\n this.options = c.extend({}, this.options), (t && t.carousel || this.options.carousel && (!t || !1 !== t.carousel)) && c.extend(this.options, this.carouselOptions), c.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);\n }\n }), i;\n}), function (t) {\n \"use strict\";\n\n \"function\" == typeof define && define.amd ? define([\"./blueimp-helper\", \"./blueimp-gallery\"], t) : t(window.blueimp.helper || window.jQuery, window.blueimp.Gallery);\n}(function (t, e) {\n \"use strict\";\n\n var i = e.prototype;\n t.extend(i.options, {\n fullScreen: !1\n });\n var s = i.initialize,\n n = i.close;\n return t.extend(i, {\n getFullScreenElement: function () {\n return document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement;\n },\n requestFullScreen: function (t) {\n t.requestFullscreen ? t.requestFullscreen() : t.webkitRequestFullscreen ? t.webkitRequestFullscreen() : t.mozRequestFullScreen ? t.mozRequestFullScreen() : t.msRequestFullscreen && t.msRequestFullscreen();\n },\n exitFullScreen: function () {\n document.exitFullscreen ? document.exitFullscreen() : document.webkitCancelFullScreen ? document.webkitCancelFullScreen() : document.mozCancelFullScreen ? document.mozCancelFullScreen() : document.msExitFullscreen && document.msExitFullscreen();\n },\n initialize: function () {\n s.call(this), this.options.fullScreen && !this.getFullScreenElement() && this.requestFullScreen(this.container[0]);\n },\n close: function () {\n this.getFullScreenElement() === this.container[0] && this.exitFullScreen(), n.call(this);\n }\n }), e;\n}), function (t) {\n \"use strict\";\n\n \"function\" == typeof define && define.amd ? define([\"./blueimp-helper\", \"./blueimp-gallery\"], t) : t(window.blueimp.helper || window.jQuery, window.blueimp.Gallery);\n}(function (a, t) {\n \"use strict\";\n\n var e = t.prototype;\n a.extend(e.options, {\n indicatorContainer: \"ol\",\n activeIndicatorClass: \"active\",\n thumbnailProperty: \"thumbnail\",\n thumbnailIndicators: !0\n });\n var i = e.initSlides,\n s = e.addSlide,\n n = e.resetSlides,\n o = e.handleClick,\n l = e.handleSlide,\n r = e.handleClose;\n return a.extend(e, {\n createIndicator: function (t) {\n var e,\n i,\n s = this.indicatorPrototype.cloneNode(!1),\n n = this.getItemProperty(t, this.options.titleProperty),\n o = this.options.thumbnailProperty;\n return this.options.thumbnailIndicators && (o && (e = this.getItemProperty(t, o)), e === undefined && (i = t.getElementsByTagName && a(t).find(\"img\")[0]) && (e = i.src), e && (s.style.backgroundImage = 'url(\"' + e + '\")')), n && (s.title = n), s;\n },\n addIndicator: function (t) {\n var e;\n this.indicatorContainer.length && ((e = this.createIndicator(this.list[t])).setAttribute(\"data-index\", t), this.indicatorContainer[0].appendChild(e), this.indicators.push(e));\n },\n setActiveIndicator: function (t) {\n this.indicators && (this.activeIndicator && this.activeIndicator.removeClass(this.options.activeIndicatorClass), this.activeIndicator = a(this.indicators[t]), this.activeIndicator.addClass(this.options.activeIndicatorClass));\n },\n initSlides: function (t) {\n t || (this.indicatorContainer = this.container.find(this.options.indicatorContainer), this.indicatorContainer.length && (this.indicatorPrototype = document.createElement(\"li\"), this.indicators = this.indicatorContainer[0].children)), i.call(this, t);\n },\n addSlide: function (t) {\n s.call(this, t), this.addIndicator(t);\n },\n resetSlides: function () {\n n.call(this), this.indicatorContainer.empty(), this.indicators = [];\n },\n handleClick: function (t) {\n var e = t.target || t.srcElement,\n i = e.parentNode;\n if (i === this.indicatorContainer[0]) this.preventDefault(t), this.slide(this.getNodeIndex(e));else {\n if (i.parentNode !== this.indicatorContainer[0]) return o.call(this, t);\n this.preventDefault(t), this.slide(this.getNodeIndex(i));\n }\n },\n handleSlide: function (t) {\n l.call(this, t), this.setActiveIndicator(t);\n },\n handleClose: function () {\n this.activeIndicator && this.activeIndicator.removeClass(this.options.activeIndicatorClass), r.call(this);\n }\n }), t;\n}), function (t) {\n \"use strict\";\n\n \"function\" == typeof define && define.amd ? define([\"./blueimp-helper\", \"./blueimp-gallery\"], t) : t(window.blueimp.helper || window.jQuery, window.blueimp.Gallery);\n}(function (w, t) {\n \"use strict\";\n\n var e = t.prototype;\n w.extend(e.options, {\n videoContentClass: \"video-content\",\n videoLoadingClass: \"video-loading\",\n videoPlayingClass: \"video-playing\",\n videoPosterProperty: \"poster\",\n videoSourcesProperty: \"sources\"\n });\n var i = e.handleSlide;\n return w.extend(e, {\n handleSlide: function (t) {\n i.call(this, t), this.playingVideo && this.playingVideo.pause();\n },\n videoFactory: function (t, e, i) {\n var s,\n n,\n o,\n a,\n l,\n r = this,\n h = this.options,\n d = this.elementPrototype.cloneNode(!1),\n c = w(d),\n u = [{\n type: \"error\",\n target: d\n }],\n p = i || document.createElement(\"video\"),\n m = this.getItemProperty(t, h.urlProperty),\n y = this.getItemProperty(t, h.typeProperty),\n f = this.getItemProperty(t, h.titleProperty),\n g = this.getItemProperty(t, this.options.altTextProperty) || f,\n v = this.getItemProperty(t, h.videoPosterProperty),\n C = this.getItemProperty(t, h.videoSourcesProperty);\n if (c.addClass(h.videoContentClass), f && (d.title = f), p.canPlayType) if (m && y && p.canPlayType(y)) p.src = m;else if (C) for (; C.length;) if (n = C.shift(), m = this.getItemProperty(n, h.urlProperty), y = this.getItemProperty(n, h.typeProperty), m && y && p.canPlayType(y)) {\n p.src = m;\n break;\n }\n return v && (p.poster = v, s = this.imagePrototype.cloneNode(!1), w(s).addClass(h.toggleClass), s.src = v, s.draggable = !1, s.alt = g, d.appendChild(s)), (o = document.createElement(\"a\")).setAttribute(\"target\", \"_blank\"), i || o.setAttribute(\"download\", f), o.href = m, p.src && (p.controls = !0, (i || w(p)).on(\"error\", function () {\n r.setTimeout(e, u);\n }).on(\"pause\", function () {\n p.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());\n }).on(\"playing\", function () {\n 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;\n }).on(\"play\", function () {\n window.clearTimeout(r.timeout), a = !0, c.addClass(r.options.videoLoadingClass), r.playingVideo = p;\n }), w(o).on(\"click\", function (t) {\n r.preventDefault(t), a ? p.pause() : p.play();\n }), d.appendChild(i && i.element || p)), d.appendChild(o), this.setTimeout(e, [{\n type: \"load\",\n target: d\n }]), d;\n }\n }), t;\n}), function (t) {\n \"use strict\";\n\n \"function\" == typeof define && define.amd ? define([\"./blueimp-helper\", \"./blueimp-gallery-video\"], t) : t(window.blueimp.helper || window.jQuery, window.blueimp.Gallery);\n}(function (l, t) {\n \"use strict\";\n\n if (!window.postMessage) return t;\n var e = t.prototype;\n l.extend(e.options, {\n vimeoVideoIdProperty: \"vimeo\",\n vimeoPlayerUrl: \"//player.vimeo.com/video/VIDEO_ID?api=1&player_id=PLAYER_ID\",\n vimeoPlayerIdPrefix: \"vimeo-player-\",\n vimeoClickToPlay: !0\n });\n var n = e.textFactory || e.imageFactory,\n o = function (t, e, i, s) {\n this.url = t, this.videoId = e, this.playerId = i, this.clickToPlay = s, this.element = document.createElement(\"div\"), this.listeners = {};\n },\n a = 0;\n return l.extend(o.prototype, {\n canPlayType: function () {\n return !0;\n },\n on: function (t, e) {\n return this.listeners[t] = e, this;\n },\n loadAPI: function () {\n var t,\n e,\n i = this,\n s = \"//f.vimeocdn.com/js/froogaloop2.min.js\",\n n = document.getElementsByTagName(\"script\"),\n o = n.length;\n function a() {\n !e && i.playOnReady && i.play(), e = !0;\n }\n for (; o;) if (n[--o].src === s) {\n t = n[o];\n break;\n }\n t || ((t = document.createElement(\"script\")).src = s), l(t).on(\"load\", a), n[0].parentNode.insertBefore(t, n[0]), /loaded|complete/.test(t.readyState) && a();\n },\n onReady: function () {\n var t = this;\n this.ready = !0, this.player.addEvent(\"play\", function () {\n t.hasPlayed = !0, t.onPlaying();\n }), this.player.addEvent(\"pause\", function () {\n t.onPause();\n }), this.player.addEvent(\"finish\", function () {\n t.onPause();\n }), this.playOnReady && this.play();\n },\n onPlaying: function () {\n this.playStatus < 2 && (this.listeners.playing(), this.playStatus = 2);\n },\n onPause: function () {\n this.listeners.pause(), delete this.playStatus;\n },\n insertIframe: function () {\n var t = document.createElement(\"iframe\");\n 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;\n },\n play: function () {\n var t = this;\n 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 () {\n t.onReady();\n })) : this.loadAPI());\n },\n pause: function () {\n this.ready ? this.player.api(\"pause\") : this.playStatus && (delete this.playOnReady, this.listeners.pause(), delete this.playStatus);\n }\n }), l.extend(e, {\n VimeoPlayer: o,\n textFactory: function (t, e) {\n var i = this.options,\n s = this.getItemProperty(t, i.vimeoVideoIdProperty);\n return s ? (this.getItemProperty(t, i.urlProperty) === undefined && (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);\n }\n }), t;\n}), function (t) {\n \"use strict\";\n\n \"function\" == typeof define && define.amd ? define([\"./blueimp-helper\", \"./blueimp-gallery-video\"], t) : t(window.blueimp.helper || window.jQuery, window.blueimp.Gallery);\n}(function (t, e) {\n \"use strict\";\n\n if (!window.postMessage) return e;\n var i = e.prototype;\n t.extend(i.options, {\n youTubeVideoIdProperty: \"youtube\",\n youTubePlayerVars: {\n wmode: \"transparent\"\n },\n youTubeClickToPlay: !0\n });\n var n = i.textFactory || i.imageFactory,\n o = function (t, e, i) {\n this.videoId = t, this.playerVars = e, this.clickToPlay = i, this.element = document.createElement(\"div\"), this.listeners = {};\n };\n return t.extend(o.prototype, {\n canPlayType: function () {\n return !0;\n },\n on: function (t, e) {\n return this.listeners[t] = e, this;\n },\n loadAPI: function () {\n var t,\n e = this,\n i = window.onYouTubeIframeAPIReady,\n s = \"//www.youtube.com/iframe_api\",\n n = document.getElementsByTagName(\"script\"),\n o = n.length;\n for (window.onYouTubeIframeAPIReady = function () {\n i && i.apply(this), e.playOnReady && e.play();\n }; o;) if (n[--o].src === s) return;\n (t = document.createElement(\"script\")).src = s, n[0].parentNode.insertBefore(t, n[0]);\n },\n onReady: function () {\n this.ready = !0, this.playOnReady && this.play();\n },\n onPlaying: function () {\n this.playStatus < 2 && (this.listeners.playing(), this.playStatus = 2);\n },\n onPause: function () {\n i.setTimeout.call(this, this.checkSeek, null, 2e3);\n },\n checkSeek: function () {\n this.stateChange !== YT.PlayerState.PAUSED && this.stateChange !== YT.PlayerState.ENDED || (this.listeners.pause(), delete this.playStatus);\n },\n onStateChange: function (t) {\n switch (t.data) {\n case YT.PlayerState.PLAYING:\n this.hasPlayed = !0, this.onPlaying();\n break;\n case YT.PlayerState.PAUSED:\n case YT.PlayerState.ENDED:\n this.onPause();\n }\n this.stateChange = t.data;\n },\n onError: function (t) {\n this.listeners.error(t);\n },\n play: function () {\n var e = this;\n 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, {\n videoId: this.videoId,\n playerVars: this.playerVars,\n events: {\n onReady: function () {\n e.onReady();\n },\n onStateChange: function (t) {\n e.onStateChange(t);\n },\n onError: function (t) {\n e.onError(t);\n }\n }\n })) : this.loadAPI());\n },\n pause: function () {\n this.ready ? this.player.pauseVideo() : this.playStatus && (delete this.playOnReady, this.listeners.pause(), delete this.playStatus);\n }\n }), t.extend(i, {\n YouTubePlayer: o,\n textFactory: function (t, e) {\n var i = this.options,\n s = this.getItemProperty(t, i.youTubeVideoIdProperty);\n return s ? (this.getItemProperty(t, i.urlProperty) === undefined && (t[i.urlProperty] = \"//www.youtube.com/watch?v=\" + s), this.getItemProperty(t, i.videoPosterProperty) === undefined && (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);\n }\n }), e;\n});","export const categoryFilter = () => {\n\n const filters = document.querySelectorAll('.job-examples-filter');\n for (let i = 0; i < filters.length; i++) {\n filters[i].addEventListener('click', () => {\n const eventTarget = event.currentTarget;\n\n $(filters).removeClass('active');\n\n eventTarget.classList.add('active');\n const elements = document.querySelectorAll('.service-models');\n const targetData = eventTarget.dataset.jobtype;\n for(let c = 0; c < elements.length; c++) {\n if (targetData === 'all') {\n elements[c].classList.remove('d-none');\n } else {\n if(elements[c].dataset.jobtype != targetData) {\n elements[c].classList.add('d-none');\n } else {\n elements[c].classList.remove('d-none');\n }\n }\n }\n })\n }\n}\n","/* eslint no-console:0 */\n// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n//\n// To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate\n// layout file, like app/views/layouts/application.html.erb\nimport { lightbox } from './../plugins/lightbox';\nimport { categoryFilter } from './../plugins/categoryFilter'\n\ncategoryFilter();\nlightbox();\n","import 'blueimp-gallery/css/blueimp-gallery.min.css';\nimport blueimp from 'blueimp-gallery/js/blueimp-gallery.min.js';\n\nexport const lightbox = () => {\n const links = document.querySelectorAll('.lightbox-link');\n for (let count = 0; count < links.length; count++) {\n links[count].addEventListener('click', (event) => {\n const link = event.currentTarget.src;\n const options = { index: link, event: event };\n const id = event.currentTarget.dataset.lightbox;\n const links = document.querySelectorAll(`#lightbox_${id} a`);\n blueimp(links, options);\n })\n }\n}","/*\n * blueimp Gallery JS\n * https://github.com/blueimp/Gallery\n *\n * Copyright 2013, Sebastian Tschan\n * https://blueimp.net\n *\n * Swipe implementation based on\n * https://github.com/bradbirdsall/Swipe\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define, DocumentTouch */\n\n/* eslint-disable no-param-reassign */\n\n;\n(function (factory) {\n 'use strict';\n\n if (typeof define === 'function' && define.amd) {\n // Register as an anonymous AMD module:\n define(['./blueimp-helper'], factory);\n } else {\n // Browser globals:\n window.blueimp = window.blueimp || {};\n window.blueimp.Gallery = factory(window.blueimp.helper || window.jQuery);\n }\n})(function ($) {\n 'use strict';\n\n /**\n * Gallery constructor\n *\n * @class\n * @param {Array|NodeList} list Gallery content\n * @param {object} [options] Gallery options\n * @returns {object} Gallery object\n */\n function Gallery(list, options) {\n if (document.body.style.maxHeight === undefined) {\n // document.body.style.maxHeight is undefined on IE6 and lower\n return null;\n }\n if (!this || this.options !== Gallery.prototype.options) {\n // Called as function instead of as constructor,\n // so we simply return a new instance:\n return new Gallery(list, options);\n }\n if (!list || !list.length) {\n this.console.log('blueimp Gallery: No or empty list provided as first argument.', list);\n return;\n }\n this.list = list;\n this.num = list.length;\n this.initOptions(options);\n this.initialize();\n }\n $.extend(Gallery.prototype, {\n options: {\n // The Id, element or querySelector of the gallery widget:\n container: '#blueimp-gallery',\n // The tag name, Id, element or querySelector of the slides container:\n slidesContainer: 'div',\n // The tag name, Id, element or querySelector of the title element:\n titleElement: 'h3',\n // The class to add when the gallery is visible:\n displayClass: 'blueimp-gallery-display',\n // The class to add when the gallery controls are visible:\n controlsClass: 'blueimp-gallery-controls',\n // The class to add when the gallery only displays one element:\n singleClass: 'blueimp-gallery-single',\n // The class to add when the left edge has been reached:\n leftEdgeClass: 'blueimp-gallery-left',\n // The class to add when the right edge has been reached:\n rightEdgeClass: 'blueimp-gallery-right',\n // The class to add when the automatic slideshow is active:\n playingClass: 'blueimp-gallery-playing',\n // The class for all slides:\n slideClass: 'slide',\n // The slide class for loading elements:\n slideLoadingClass: 'slide-loading',\n // The slide class for elements that failed to load:\n slideErrorClass: 'slide-error',\n // The class for the content element loaded into each slide:\n slideContentClass: 'slide-content',\n // The class for the \"toggle\" control:\n toggleClass: 'toggle',\n // The class for the \"prev\" control:\n prevClass: 'prev',\n // The class for the \"next\" control:\n nextClass: 'next',\n // The class for the \"close\" control:\n closeClass: 'close',\n // The class for the \"play-pause\" toggle control:\n playPauseClass: 'play-pause',\n // The list object property (or data attribute) with the object type:\n typeProperty: 'type',\n // The list object property (or data attribute) with the object title:\n titleProperty: 'title',\n // The list object property (or data attribute) with the object alt text:\n altTextProperty: 'alt',\n // The list object property (or data attribute) with the object URL:\n urlProperty: 'href',\n // The list object property (or data attribute) with the object srcset URL(s):\n srcsetProperty: 'urlset',\n // The gallery listens for transitionend events before triggering the\n // opened and closed events, unless the following option is set to false:\n displayTransition: true,\n // Defines if the gallery slides are cleared from the gallery modal,\n // or reused for the next gallery initialization:\n clearSlides: true,\n // Defines if images should be stretched to fill the available space,\n // while maintaining their aspect ratio (will only be enabled for browsers\n // supporting background-size=\"contain\", which excludes IE < 9).\n // Set to \"cover\", to make images cover all available space (requires\n // support for background-size=\"cover\", which excludes IE < 9):\n stretchImages: false,\n // Toggle the controls on pressing the Return key:\n toggleControlsOnReturn: true,\n // Toggle the controls on slide click:\n toggleControlsOnSlideClick: true,\n // Toggle the automatic slideshow interval on pressing the Space key:\n toggleSlideshowOnSpace: true,\n // Navigate the gallery by pressing left and right on the keyboard:\n enableKeyboardNavigation: true,\n // Close the gallery on pressing the Esc key:\n closeOnEscape: true,\n // Close the gallery when clicking on an empty slide area:\n closeOnSlideClick: true,\n // Close the gallery by swiping up or down:\n closeOnSwipeUpOrDown: true,\n // Close the gallery when URL changes:\n closeOnHashChange: true,\n // Emulate touch events on mouse-pointer devices such as desktop browsers:\n emulateTouchEvents: true,\n // Stop touch events from bubbling up to ancestor elements of the Gallery:\n stopTouchEventsPropagation: false,\n // Hide the page scrollbars:\n hidePageScrollbars: true,\n // Stops any touches on the container from scrolling the page:\n disableScroll: true,\n // Carousel mode (shortcut for carousel specific options):\n carousel: false,\n // Allow continuous navigation, moving from last to first\n // and from first to last slide:\n continuous: true,\n // Remove elements outside of the preload range from the DOM:\n unloadElements: true,\n // Start with the automatic slideshow:\n startSlideshow: false,\n // Delay in milliseconds between slides for the automatic slideshow:\n slideshowInterval: 5000,\n // The direction the slides are moving: ltr=LeftToRight or rtl=RightToLeft\n slideshowDirection: 'ltr',\n // The starting index as integer.\n // Can also be an object of the given list,\n // or an equal object with the same url property:\n index: 0,\n // The number of elements to load around the current index:\n preloadRange: 2,\n // The transition duration between slide changes in milliseconds:\n transitionDuration: 300,\n // The transition duration for automatic slide changes, set to an integer\n // greater 0 to override the default transition duration:\n slideshowTransitionDuration: 500,\n // The event object for which the default action will be canceled\n // on Gallery initialization (e.g. the click event to open the Gallery):\n event: undefined,\n // Callback function executed when the Gallery is initialized.\n // Is called with the gallery instance as \"this\" object:\n onopen: undefined,\n // Callback function executed when the Gallery has been initialized\n // and the initialization transition has been completed.\n // Is called with the gallery instance as \"this\" object:\n onopened: undefined,\n // Callback function executed on slide change.\n // Is called with the gallery instance as \"this\" object and the\n // current index and slide as arguments:\n onslide: undefined,\n // Callback function executed after the slide change transition.\n // Is called with the gallery instance as \"this\" object and the\n // current index and slide as arguments:\n onslideend: undefined,\n // Callback function executed on slide content load.\n // Is called with the gallery instance as \"this\" object and the\n // slide index and slide element as arguments:\n onslidecomplete: undefined,\n // Callback function executed when the Gallery is about to be closed.\n // Is called with the gallery instance as \"this\" object:\n onclose: undefined,\n // Callback function executed when the Gallery has been closed\n // and the closing transition has been completed.\n // Is called with the gallery instance as \"this\" object:\n onclosed: undefined\n },\n carouselOptions: {\n hidePageScrollbars: false,\n toggleControlsOnReturn: false,\n toggleSlideshowOnSpace: false,\n enableKeyboardNavigation: false,\n closeOnEscape: false,\n closeOnSlideClick: false,\n closeOnSwipeUpOrDown: false,\n disableScroll: false,\n startSlideshow: true\n },\n console: window.console && typeof window.console.log === 'function' ? window.console : {\n log: function () {}\n },\n // Detect touch, transition, transform and background-size support:\n support: function (element) {\n var support = {\n touch: window.ontouchstart !== undefined || window.DocumentTouch && document instanceof DocumentTouch\n };\n var transitions = {\n webkitTransition: {\n end: 'webkitTransitionEnd',\n prefix: '-webkit-'\n },\n MozTransition: {\n end: 'transitionend',\n prefix: '-moz-'\n },\n OTransition: {\n end: 'otransitionend',\n prefix: '-o-'\n },\n transition: {\n end: 'transitionend',\n prefix: ''\n }\n };\n var prop;\n for (prop in transitions) {\n if (Object.prototype.hasOwnProperty.call(transitions, prop) && element.style[prop] !== undefined) {\n support.transition = transitions[prop];\n support.transition.name = prop;\n break;\n }\n }\n /**\n * Tests browser support\n */\n function elementTests() {\n var transition = support.transition;\n var prop;\n var translateZ;\n document.body.appendChild(element);\n if (transition) {\n prop = transition.name.slice(0, -9) + 'ransform';\n if (element.style[prop] !== undefined) {\n element.style[prop] = 'translateZ(0)';\n translateZ = window.getComputedStyle(element).getPropertyValue(transition.prefix + 'transform');\n support.transform = {\n prefix: transition.prefix,\n name: prop,\n translate: true,\n translateZ: !!translateZ && translateZ !== 'none'\n };\n }\n }\n if (element.style.backgroundSize !== undefined) {\n support.backgroundSize = {};\n element.style.backgroundSize = 'contain';\n support.backgroundSize.contain = window.getComputedStyle(element).getPropertyValue('background-size') === 'contain';\n element.style.backgroundSize = 'cover';\n support.backgroundSize.cover = window.getComputedStyle(element).getPropertyValue('background-size') === 'cover';\n }\n document.body.removeChild(element);\n }\n if (document.body) {\n elementTests();\n } else {\n $(document).on('DOMContentLoaded', elementTests);\n }\n return support;\n // Test element, has to be standard HTML and must not be hidden\n // for the CSS3 tests using window.getComputedStyle to be applicable:\n }(document.createElement('div')),\n requestAnimationFrame: window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame,\n cancelAnimationFrame: window.cancelAnimationFrame || window.webkitCancelRequestAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame,\n initialize: function () {\n this.initStartIndex();\n if (this.initWidget() === false) {\n return false;\n }\n this.initEventListeners();\n // Load the slide at the given index:\n this.onslide(this.index);\n // Manually trigger the slideend event for the initial slide:\n this.ontransitionend();\n // Start the automatic slideshow if applicable:\n if (this.options.startSlideshow) {\n this.play();\n }\n },\n slide: function (to, duration) {\n window.clearTimeout(this.timeout);\n var index = this.index;\n var direction;\n var naturalDirection;\n var diff;\n if (index === to || this.num === 1) {\n return;\n }\n if (!duration) {\n duration = this.options.transitionDuration;\n }\n if (this.support.transform) {\n if (!this.options.continuous) {\n to = this.circle(to);\n }\n // 1: backward, -1: forward:\n direction = Math.abs(index - to) / (index - to);\n // Get the actual position of the slide:\n if (this.options.continuous) {\n naturalDirection = direction;\n direction = -this.positions[this.circle(to)] / this.slideWidth;\n // If going forward but to < index, use to = slides.length + to\n // If going backward but to > index, use to = -slides.length + to\n if (direction !== naturalDirection) {\n to = -direction * this.num + to;\n }\n }\n diff = Math.abs(index - to) - 1;\n // Move all the slides between index and to in the right direction:\n while (diff) {\n diff -= 1;\n this.move(this.circle((to > index ? to : index) - diff - 1), this.slideWidth * direction, 0);\n }\n to = this.circle(to);\n this.move(index, this.slideWidth * direction, duration);\n this.move(to, 0, duration);\n if (this.options.continuous) {\n this.move(this.circle(to - direction), -(this.slideWidth * direction), 0);\n }\n } else {\n to = this.circle(to);\n this.animate(index * -this.slideWidth, to * -this.slideWidth, duration);\n }\n this.onslide(to);\n },\n getIndex: function () {\n return this.index;\n },\n getNumber: function () {\n return this.num;\n },\n prev: function () {\n if (this.options.continuous || this.index) {\n this.slide(this.index - 1);\n }\n },\n next: function () {\n if (this.options.continuous || this.index < this.num - 1) {\n this.slide(this.index + 1);\n }\n },\n play: function (time) {\n var that = this;\n var nextIndex = this.index + (this.options.slideshowDirection === 'rtl' ? -1 : 1);\n window.clearTimeout(this.timeout);\n this.interval = time || this.options.slideshowInterval;\n if (this.elements[this.index] > 1) {\n this.timeout = this.setTimeout(!this.requestAnimationFrame && this.slide || function (to, duration) {\n that.animationFrameId = that.requestAnimationFrame.call(window, function () {\n that.slide(to, duration);\n });\n }, [nextIndex, this.options.slideshowTransitionDuration], this.interval);\n }\n this.container.addClass(this.options.playingClass);\n },\n pause: function () {\n window.clearTimeout(this.timeout);\n this.interval = null;\n if (this.cancelAnimationFrame) {\n this.cancelAnimationFrame.call(window, this.animationFrameId);\n this.animationFrameId = null;\n }\n this.container.removeClass(this.options.playingClass);\n },\n add: function (list) {\n var i;\n if (!list.concat) {\n // Make a real array out of the list to add:\n list = Array.prototype.slice.call(list);\n }\n if (!this.list.concat) {\n // Make a real array out of the Gallery list:\n this.list = Array.prototype.slice.call(this.list);\n }\n this.list = this.list.concat(list);\n this.num = this.list.length;\n if (this.num > 2 && this.options.continuous === null) {\n this.options.continuous = true;\n this.container.removeClass(this.options.leftEdgeClass);\n }\n this.container.removeClass(this.options.rightEdgeClass).removeClass(this.options.singleClass);\n for (i = this.num - list.length; i < this.num; i += 1) {\n this.addSlide(i);\n this.positionSlide(i);\n }\n this.positions.length = this.num;\n this.initSlides(true);\n },\n resetSlides: function () {\n this.slidesContainer.empty();\n this.unloadAllSlides();\n this.slides = [];\n },\n handleClose: function () {\n var options = this.options;\n this.destroyEventListeners();\n // Cancel the slideshow:\n this.pause();\n this.container[0].style.display = 'none';\n this.container.removeClass(options.displayClass).removeClass(options.singleClass).removeClass(options.leftEdgeClass).removeClass(options.rightEdgeClass);\n if (options.hidePageScrollbars) {\n document.body.style.overflow = this.bodyOverflowStyle;\n }\n if (this.options.clearSlides) {\n this.resetSlides();\n }\n if (this.options.onclosed) {\n this.options.onclosed.call(this);\n }\n },\n close: function () {\n var that = this;\n /**\n * Close handler\n *\n * @param {event} event Close event\n */\n function closeHandler(event) {\n if (event.target === that.container[0]) {\n that.container.off(that.support.transition.end, closeHandler);\n that.handleClose();\n }\n }\n if (this.options.onclose) {\n this.options.onclose.call(this);\n }\n if (this.support.transition && this.options.displayTransition) {\n this.container.on(this.support.transition.end, closeHandler);\n this.container.removeClass(this.options.displayClass);\n } else {\n this.handleClose();\n }\n },\n circle: function (index) {\n // Always return a number inside of the slides index range:\n return (this.num + index % this.num) % this.num;\n },\n move: function (index, dist, duration) {\n this.translateX(index, dist, duration);\n this.positions[index] = dist;\n },\n translate: function (index, x, y, duration) {\n if (!this.slides[index]) return;\n var style = this.slides[index].style;\n var transition = this.support.transition;\n var transform = this.support.transform;\n style[transition.name + 'Duration'] = duration + 'ms';\n style[transform.name] = 'translate(' + x + 'px, ' + y + 'px)' + (transform.translateZ ? ' translateZ(0)' : '');\n },\n translateX: function (index, x, duration) {\n this.translate(index, x, 0, duration);\n },\n translateY: function (index, y, duration) {\n this.translate(index, 0, y, duration);\n },\n animate: function (from, to, duration) {\n if (!duration) {\n this.slidesContainer[0].style.left = to + 'px';\n return;\n }\n var that = this;\n var start = new Date().getTime();\n var timer = window.setInterval(function () {\n var timeElap = new Date().getTime() - start;\n if (timeElap > duration) {\n that.slidesContainer[0].style.left = to + 'px';\n that.ontransitionend();\n window.clearInterval(timer);\n return;\n }\n that.slidesContainer[0].style.left = (to - from) * (Math.floor(timeElap / duration * 100) / 100) + from + 'px';\n }, 4);\n },\n preventDefault: function (event) {\n if (event.preventDefault) {\n event.preventDefault();\n } else {\n event.returnValue = false;\n }\n },\n stopPropagation: function (event) {\n if (event.stopPropagation) {\n event.stopPropagation();\n } else {\n event.cancelBubble = true;\n }\n },\n onresize: function () {\n this.initSlides(true);\n },\n onhashchange: function () {\n if (this.options.closeOnHashChange) {\n this.close();\n }\n },\n onmousedown: function (event) {\n // Trigger on clicks of the left mouse button only\n // and exclude video & audio elements:\n if (event.which && event.which === 1 && event.target.nodeName !== 'VIDEO' && event.target.nodeName !== 'AUDIO') {\n // Preventing the default mousedown action is required\n // to make touch emulation work with Firefox:\n event.preventDefault();\n (event.originalEvent || event).touches = [{\n pageX: event.pageX,\n pageY: event.pageY\n }];\n this.ontouchstart(event);\n }\n },\n onmousemove: function (event) {\n if (this.touchStart) {\n ;\n (event.originalEvent || event).touches = [{\n pageX: event.pageX,\n pageY: event.pageY\n }];\n this.ontouchmove(event);\n }\n },\n onmouseup: function (event) {\n if (this.touchStart) {\n this.ontouchend(event);\n delete this.touchStart;\n }\n },\n onmouseout: function (event) {\n if (this.touchStart) {\n var target = event.target;\n var related = event.relatedTarget;\n if (!related || related !== target && !$.contains(target, related)) {\n this.onmouseup(event);\n }\n }\n },\n ontouchstart: function (event) {\n if (this.options.stopTouchEventsPropagation) {\n this.stopPropagation(event);\n }\n // jQuery doesn't copy touch event properties by default,\n // so we have to access the originalEvent object:\n var touch = (event.originalEvent || event).touches[0];\n this.touchStart = {\n // Remember the initial touch coordinates:\n x: touch.pageX,\n y: touch.pageY,\n // Store the time to determine touch duration:\n time: Date.now()\n };\n // Helper variable to detect scroll movement:\n this.isScrolling = undefined;\n // Reset delta values:\n this.touchDelta = {};\n },\n ontouchmove: function (event) {\n if (this.options.stopTouchEventsPropagation) {\n this.stopPropagation(event);\n }\n // jQuery doesn't copy touch event properties by default,\n // so we have to access the originalEvent object:\n var touches = (event.originalEvent || event).touches;\n var touch = touches[0];\n var scale = (event.originalEvent || event).scale;\n var index = this.index;\n var touchDeltaX;\n var indices;\n // Ensure this is a one touch swipe and not, e.g. a pinch:\n if (touches.length > 1 || scale && scale !== 1) {\n return;\n }\n if (this.options.disableScroll) {\n event.preventDefault();\n }\n // Measure change in x and y coordinates:\n this.touchDelta = {\n x: touch.pageX - this.touchStart.x,\n y: touch.pageY - this.touchStart.y\n };\n touchDeltaX = this.touchDelta.x;\n // Detect if this is a vertical scroll movement (run only once per touch):\n if (this.isScrolling === undefined) {\n this.isScrolling = this.isScrolling || Math.abs(touchDeltaX) < Math.abs(this.touchDelta.y);\n }\n if (!this.isScrolling) {\n // Always prevent horizontal scroll:\n event.preventDefault();\n // Stop the slideshow:\n window.clearTimeout(this.timeout);\n if (this.options.continuous) {\n indices = [this.circle(index + 1), index, this.circle(index - 1)];\n } else {\n // Increase resistance if first slide and sliding left\n // or last slide and sliding right:\n this.touchDelta.x = touchDeltaX = touchDeltaX / (!index && touchDeltaX > 0 || index === this.num - 1 && touchDeltaX < 0 ? Math.abs(touchDeltaX) / this.slideWidth + 1 : 1);\n indices = [index];\n if (index) {\n indices.push(index - 1);\n }\n if (index < this.num - 1) {\n indices.unshift(index + 1);\n }\n }\n while (indices.length) {\n index = indices.pop();\n this.translateX(index, touchDeltaX + this.positions[index], 0);\n }\n } else if (!this.options.carousel) {\n this.translateY(index, this.touchDelta.y + this.positions[index], 0);\n }\n },\n ontouchend: function (event) {\n if (this.options.stopTouchEventsPropagation) {\n this.stopPropagation(event);\n }\n var index = this.index;\n var absTouchDeltaX = Math.abs(this.touchDelta.x);\n var slideWidth = this.slideWidth;\n var duration = Math.ceil(this.options.transitionDuration * (1 - absTouchDeltaX / slideWidth) / 2);\n // Determine if slide attempt triggers next/prev slide:\n var isValidSlide = absTouchDeltaX > 20;\n // Determine if slide attempt is past start or end:\n var isPastBounds = !index && this.touchDelta.x > 0 || index === this.num - 1 && this.touchDelta.x < 0;\n var isValidClose = !isValidSlide && this.options.closeOnSwipeUpOrDown && Math.abs(this.touchDelta.y) > 20;\n var direction;\n var indexForward;\n var indexBackward;\n var distanceForward;\n var distanceBackward;\n if (this.options.continuous) {\n isPastBounds = false;\n }\n // Determine direction of swipe (true: right, false: left):\n direction = this.touchDelta.x < 0 ? -1 : 1;\n if (!this.isScrolling) {\n if (isValidSlide && !isPastBounds) {\n indexForward = index + direction;\n indexBackward = index - direction;\n distanceForward = slideWidth * direction;\n distanceBackward = -slideWidth * direction;\n if (this.options.continuous) {\n this.move(this.circle(indexForward), distanceForward, 0);\n this.move(this.circle(index - 2 * direction), distanceBackward, 0);\n } else if (indexForward >= 0 && indexForward < this.num) {\n this.move(indexForward, distanceForward, 0);\n }\n this.move(index, this.positions[index] + distanceForward, duration);\n this.move(this.circle(indexBackward), this.positions[this.circle(indexBackward)] + distanceForward, duration);\n index = this.circle(indexBackward);\n this.onslide(index);\n } else {\n // Move back into position\n if (this.options.continuous) {\n this.move(this.circle(index - 1), -slideWidth, duration);\n this.move(index, 0, duration);\n this.move(this.circle(index + 1), slideWidth, duration);\n } else {\n if (index) {\n this.move(index - 1, -slideWidth, duration);\n }\n this.move(index, 0, duration);\n if (index < this.num - 1) {\n this.move(index + 1, slideWidth, duration);\n }\n }\n }\n } else {\n if (isValidClose) {\n this.close();\n } else {\n // Move back into position\n this.translateY(index, 0, duration);\n }\n }\n },\n ontouchcancel: function (event) {\n if (this.touchStart) {\n this.ontouchend(event);\n delete this.touchStart;\n }\n },\n ontransitionend: function (event) {\n var slide = this.slides[this.index];\n if (!event || slide === event.target) {\n if (this.interval) {\n this.play();\n }\n this.setTimeout(this.options.onslideend, [this.index, slide]);\n }\n },\n oncomplete: function (event) {\n var target = event.target || event.srcElement;\n var parent = target && target.parentNode;\n var index;\n if (!target || !parent) {\n return;\n }\n index = this.getNodeIndex(parent);\n $(parent).removeClass(this.options.slideLoadingClass);\n if (event.type === 'error') {\n $(parent).addClass(this.options.slideErrorClass);\n this.elements[index] = 3; // Fail\n } else {\n this.elements[index] = 2; // Done\n }\n // Fix for IE7's lack of support for percentage max-height:\n if (target.clientHeight > this.container[0].clientHeight) {\n target.style.maxHeight = this.container[0].clientHeight;\n }\n if (this.interval && this.slides[this.index] === parent) {\n this.play();\n }\n this.setTimeout(this.options.onslidecomplete, [index, parent]);\n },\n onload: function (event) {\n this.oncomplete(event);\n },\n onerror: function (event) {\n this.oncomplete(event);\n },\n onkeydown: function (event) {\n switch (event.which || event.keyCode) {\n case 13:\n // Return\n if (this.options.toggleControlsOnReturn) {\n this.preventDefault(event);\n this.toggleControls();\n }\n break;\n case 27:\n // Esc\n if (this.options.closeOnEscape) {\n this.close();\n // prevent Esc from closing other things\n event.stopImmediatePropagation();\n }\n break;\n case 32:\n // Space\n if (this.options.toggleSlideshowOnSpace) {\n this.preventDefault(event);\n this.toggleSlideshow();\n }\n break;\n case 37:\n // Left\n if (this.options.enableKeyboardNavigation) {\n this.preventDefault(event);\n this.prev();\n }\n break;\n case 39:\n // Right\n if (this.options.enableKeyboardNavigation) {\n this.preventDefault(event);\n this.next();\n }\n break;\n }\n },\n handleClick: function (event) {\n var options = this.options;\n var target = event.target || event.srcElement;\n var parent = target.parentNode;\n /**\n * Checks if the target from the close has the given class\n *\n * @param {string} className Class name\n * @returns {boolean} Returns true if the target has the class name\n */\n function isTarget(className) {\n return $(target).hasClass(className) || $(parent).hasClass(className);\n }\n if (isTarget(options.toggleClass)) {\n // Click on \"toggle\" control\n this.preventDefault(event);\n this.toggleControls();\n } else if (isTarget(options.prevClass)) {\n // Click on \"prev\" control\n this.preventDefault(event);\n this.prev();\n } else if (isTarget(options.nextClass)) {\n // Click on \"next\" control\n this.preventDefault(event);\n this.next();\n } else if (isTarget(options.closeClass)) {\n // Click on \"close\" control\n this.preventDefault(event);\n this.close();\n } else if (isTarget(options.playPauseClass)) {\n // Click on \"play-pause\" control\n this.preventDefault(event);\n this.toggleSlideshow();\n } else if (parent === this.slidesContainer[0]) {\n // Click on slide background\n if (options.closeOnSlideClick) {\n this.preventDefault(event);\n this.close();\n } else if (options.toggleControlsOnSlideClick) {\n this.preventDefault(event);\n this.toggleControls();\n }\n } else if (parent.parentNode && parent.parentNode === this.slidesContainer[0]) {\n // Click on displayed element\n if (options.toggleControlsOnSlideClick) {\n this.preventDefault(event);\n this.toggleControls();\n }\n }\n },\n onclick: function (event) {\n if (this.options.emulateTouchEvents && this.touchDelta && (Math.abs(this.touchDelta.x) > 20 || Math.abs(this.touchDelta.y) > 20)) {\n delete this.touchDelta;\n return;\n }\n return this.handleClick(event);\n },\n updateEdgeClasses: function (index) {\n if (!index) {\n this.container.addClass(this.options.leftEdgeClass);\n } else {\n this.container.removeClass(this.options.leftEdgeClass);\n }\n if (index === this.num - 1) {\n this.container.addClass(this.options.rightEdgeClass);\n } else {\n this.container.removeClass(this.options.rightEdgeClass);\n }\n },\n handleSlide: function (index) {\n if (!this.options.continuous) {\n this.updateEdgeClasses(index);\n }\n this.loadElements(index);\n if (this.options.unloadElements) {\n this.unloadElements(index);\n }\n this.setTitle(index);\n },\n onslide: function (index) {\n this.index = index;\n this.handleSlide(index);\n this.setTimeout(this.options.onslide, [index, this.slides[index]]);\n },\n setTitle: function (index) {\n var firstChild = this.slides[index].firstChild;\n var text = firstChild.title || firstChild.alt;\n var titleElement = this.titleElement;\n if (titleElement.length) {\n this.titleElement.empty();\n if (text) {\n titleElement[0].appendChild(document.createTextNode(text));\n }\n }\n },\n setTimeout: function (func, args, wait) {\n var that = this;\n return func && window.setTimeout(function () {\n func.apply(that, args || []);\n }, wait || 0);\n },\n imageFactory: function (obj, callback) {\n var that = this;\n var img = this.imagePrototype.cloneNode(false);\n var url = obj;\n var backgroundSize = this.options.stretchImages;\n var called;\n var element;\n var title;\n var altText;\n /**\n * Wraps the callback function for the load/error event\n *\n * @param {event} event load/error event\n * @returns {number} timeout ID\n */\n function callbackWrapper(event) {\n if (!called) {\n event = {\n type: event.type,\n target: element\n };\n if (!element.parentNode) {\n // Fix for IE7 firing the load event for\n // cached images before the element could\n // be added to the DOM:\n return that.setTimeout(callbackWrapper, [event]);\n }\n called = true;\n $(img).off('load error', callbackWrapper);\n if (backgroundSize) {\n if (event.type === 'load') {\n element.style.background = 'url(\"' + url + '\") center no-repeat';\n element.style.backgroundSize = backgroundSize;\n }\n }\n callback(event);\n }\n }\n if (typeof url !== 'string') {\n url = this.getItemProperty(obj, this.options.urlProperty);\n title = this.getItemProperty(obj, this.options.titleProperty);\n altText = this.getItemProperty(obj, this.options.altTextProperty) || title;\n }\n if (backgroundSize === true) {\n backgroundSize = 'contain';\n }\n backgroundSize = this.support.backgroundSize && this.support.backgroundSize[backgroundSize] && backgroundSize;\n if (backgroundSize) {\n element = this.elementPrototype.cloneNode(false);\n } else {\n element = img;\n img.draggable = false;\n }\n if (title) {\n element.title = title;\n }\n if (altText) {\n element.alt = altText;\n }\n $(img).on('load error', callbackWrapper);\n img.src = url;\n return element;\n },\n createElement: function (obj, callback) {\n var type = obj && this.getItemProperty(obj, this.options.typeProperty);\n var factory = type && this[type.split('/')[0] + 'Factory'] || this.imageFactory;\n var element = obj && factory.call(this, obj, callback);\n var srcset = this.getItemProperty(obj, this.options.srcsetProperty);\n if (!element) {\n element = this.elementPrototype.cloneNode(false);\n this.setTimeout(callback, [{\n type: 'error',\n target: element\n }]);\n }\n if (srcset) {\n element.setAttribute('srcset', srcset);\n }\n $(element).addClass(this.options.slideContentClass);\n return element;\n },\n loadElement: function (index) {\n if (!this.elements[index]) {\n if (this.slides[index].firstChild) {\n this.elements[index] = $(this.slides[index]).hasClass(this.options.slideErrorClass) ? 3 : 2;\n } else {\n this.elements[index] = 1; // Loading\n $(this.slides[index]).addClass(this.options.slideLoadingClass);\n this.slides[index].appendChild(this.createElement(this.list[index], this.proxyListener));\n }\n }\n },\n loadElements: function (index) {\n var limit = Math.min(this.num, this.options.preloadRange * 2 + 1);\n var j = index;\n var i;\n for (i = 0; i < limit; i += 1) {\n // First load the current slide element (0),\n // then the next one (+1),\n // then the previous one (-2),\n // then the next after next (+2), etc.:\n j += i * (i % 2 === 0 ? -1 : 1);\n // Connect the ends of the list to load slide elements for\n // continuous navigation:\n j = this.circle(j);\n this.loadElement(j);\n }\n },\n unloadElements: function (index) {\n var i, diff;\n for (i in this.elements) {\n if (Object.prototype.hasOwnProperty.call(this.elements, i)) {\n diff = Math.abs(index - i);\n if (diff > this.options.preloadRange && diff + this.options.preloadRange < this.num) {\n this.unloadSlide(i);\n delete this.elements[i];\n }\n }\n }\n },\n addSlide: function (index) {\n var slide = this.slidePrototype.cloneNode(false);\n slide.setAttribute('data-index', index);\n this.slidesContainer[0].appendChild(slide);\n this.slides.push(slide);\n },\n positionSlide: function (index) {\n var slide = this.slides[index];\n slide.style.width = this.slideWidth + 'px';\n if (this.support.transform) {\n slide.style.left = index * -this.slideWidth + 'px';\n this.move(index, this.index > index ? -this.slideWidth : this.index < index ? this.slideWidth : 0, 0);\n }\n },\n initSlides: function (reload) {\n var clearSlides, i;\n if (!reload) {\n this.positions = [];\n this.positions.length = this.num;\n this.elements = {};\n this.imagePrototype = document.createElement('img');\n this.elementPrototype = document.createElement('div');\n this.slidePrototype = document.createElement('div');\n $(this.slidePrototype).addClass(this.options.slideClass);\n this.slides = this.slidesContainer[0].children;\n clearSlides = this.options.clearSlides || this.slides.length !== this.num;\n }\n this.slideWidth = this.container[0].clientWidth;\n this.slideHeight = this.container[0].clientHeight;\n this.slidesContainer[0].style.width = this.num * this.slideWidth + 'px';\n if (clearSlides) {\n this.resetSlides();\n }\n for (i = 0; i < this.num; i += 1) {\n if (clearSlides) {\n this.addSlide(i);\n }\n this.positionSlide(i);\n }\n // Reposition the slides before and after the given index:\n if (this.options.continuous && this.support.transform) {\n this.move(this.circle(this.index - 1), -this.slideWidth, 0);\n this.move(this.circle(this.index + 1), this.slideWidth, 0);\n }\n if (!this.support.transform) {\n this.slidesContainer[0].style.left = this.index * -this.slideWidth + 'px';\n }\n },\n unloadSlide: function (index) {\n var slide, firstChild;\n slide = this.slides[index];\n firstChild = slide.firstChild;\n if (firstChild !== null) {\n slide.removeChild(firstChild);\n }\n },\n unloadAllSlides: function () {\n var i, len;\n for (i = 0, len = this.slides.length; i < len; i++) {\n this.unloadSlide(i);\n }\n },\n toggleControls: function () {\n var controlsClass = this.options.controlsClass;\n if (this.container.hasClass(controlsClass)) {\n this.container.removeClass(controlsClass);\n } else {\n this.container.addClass(controlsClass);\n }\n },\n toggleSlideshow: function () {\n if (!this.interval) {\n this.play();\n } else {\n this.pause();\n }\n },\n getNodeIndex: function (element) {\n return parseInt(element.getAttribute('data-index'), 10);\n },\n getNestedProperty: function (obj, property) {\n property.replace(\n // Matches native JavaScript notation in a String,\n // e.g. '[\"doubleQuoteProp\"].dotProp[2]'\n // eslint-disable-next-line no-useless-escape\n /\\[(?:'([^']+)'|\"([^\"]+)\"|(\\d+))\\]|(?:(?:^|\\.)([^\\.\\[]+))/g, function (str, singleQuoteProp, doubleQuoteProp, arrayIndex, dotProp) {\n var prop = dotProp || singleQuoteProp || doubleQuoteProp || arrayIndex && parseInt(arrayIndex, 10);\n if (str && obj) {\n obj = obj[prop];\n }\n });\n return obj;\n },\n getDataProperty: function (obj, property) {\n var key;\n var prop;\n if (obj.dataset) {\n key = property.replace(/-([a-z])/g, function (_, b) {\n return b.toUpperCase();\n });\n prop = obj.dataset[key];\n } else if (obj.getAttribute) {\n prop = obj.getAttribute('data-' + property.replace(/([A-Z])/g, '-$1').toLowerCase());\n }\n if (typeof prop === 'string') {\n // eslint-disable-next-line no-useless-escape\n if (/^(true|false|null|-?\\d+(\\.\\d+)?|\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/.test(prop)) {\n try {\n return $.parseJSON(prop);\n } catch (ignore) {\n // ignore JSON parsing errors\n }\n }\n return prop;\n }\n },\n getItemProperty: function (obj, property) {\n var prop = this.getDataProperty(obj, property);\n if (prop === undefined) {\n prop = obj[property];\n }\n if (prop === undefined) {\n prop = this.getNestedProperty(obj, property);\n }\n return prop;\n },\n initStartIndex: function () {\n var index = this.options.index;\n var urlProperty = this.options.urlProperty;\n var i;\n // Check if the index is given as a list object:\n if (index && typeof index !== 'number') {\n for (i = 0; i < this.num; i += 1) {\n if (this.list[i] === index || this.getItemProperty(this.list[i], urlProperty) === this.getItemProperty(index, urlProperty)) {\n index = i;\n break;\n }\n }\n }\n // Make sure the index is in the list range:\n this.index = this.circle(parseInt(index, 10) || 0);\n },\n initEventListeners: function () {\n var that = this;\n var slidesContainer = this.slidesContainer;\n /**\n * Proxy listener\n *\n * @param {event} event original event\n */\n function proxyListener(event) {\n var type = that.support.transition && that.support.transition.end === event.type ? 'transitionend' : event.type;\n that['on' + type](event);\n }\n $(window).on('resize', proxyListener);\n $(window).on('hashchange', proxyListener);\n $(document.body).on('keydown', proxyListener);\n this.container.on('click', proxyListener);\n if (this.support.touch) {\n slidesContainer.on('touchstart touchmove touchend touchcancel', proxyListener);\n } else if (this.options.emulateTouchEvents && this.support.transition) {\n slidesContainer.on('mousedown mousemove mouseup mouseout', proxyListener);\n }\n if (this.support.transition) {\n slidesContainer.on(this.support.transition.end, proxyListener);\n }\n this.proxyListener = proxyListener;\n },\n destroyEventListeners: function () {\n var slidesContainer = this.slidesContainer;\n var proxyListener = this.proxyListener;\n $(window).off('resize', proxyListener);\n $(document.body).off('keydown', proxyListener);\n this.container.off('click', proxyListener);\n if (this.support.touch) {\n slidesContainer.off('touchstart touchmove touchend touchcancel', proxyListener);\n } else if (this.options.emulateTouchEvents && this.support.transition) {\n slidesContainer.off('mousedown mousemove mouseup mouseout', proxyListener);\n }\n if (this.support.transition) {\n slidesContainer.off(this.support.transition.end, proxyListener);\n }\n },\n handleOpen: function () {\n if (this.options.onopened) {\n this.options.onopened.call(this);\n }\n },\n initWidget: function () {\n var that = this;\n /**\n * Open handler\n *\n * @param {event} event Gallery open event\n */\n function openHandler(event) {\n if (event.target === that.container[0]) {\n that.container.off(that.support.transition.end, openHandler);\n that.handleOpen();\n }\n }\n this.container = $(this.options.container);\n if (!this.container.length) {\n this.console.log('blueimp Gallery: Widget container not found.', this.options.container);\n return false;\n }\n this.slidesContainer = this.container.find(this.options.slidesContainer).first();\n if (!this.slidesContainer.length) {\n this.console.log('blueimp Gallery: Slides container not found.', this.options.slidesContainer);\n return false;\n }\n this.titleElement = this.container.find(this.options.titleElement).first();\n if (this.num === 1) {\n this.container.addClass(this.options.singleClass);\n }\n if (this.options.onopen) {\n this.options.onopen.call(this);\n }\n if (this.support.transition && this.options.displayTransition) {\n this.container.on(this.support.transition.end, openHandler);\n } else {\n this.handleOpen();\n }\n if (this.options.hidePageScrollbars) {\n // Hide the page scrollbars:\n this.bodyOverflowStyle = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n this.container[0].style.display = 'block';\n this.initSlides();\n this.container.addClass(this.options.displayClass);\n },\n initOptions: function (options) {\n // Create a copy of the prototype options:\n this.options = $.extend({}, this.options);\n // Check if carousel mode is enabled:\n if (options && options.carousel || this.options.carousel && (!options || options.carousel !== false)) {\n $.extend(this.options, this.carouselOptions);\n }\n // Override any given options:\n $.extend(this.options, options);\n if (this.num < 3) {\n // 1 or 2 slides cannot be displayed continuous,\n // remember the original option by setting to null instead of false:\n this.options.continuous = this.options.continuous ? null : false;\n }\n if (!this.support.transition) {\n this.options.emulateTouchEvents = false;\n }\n if (this.options.event) {\n this.preventDefault(this.options.event);\n }\n }\n });\n return Gallery;\n});","/*\n * blueimp Gallery Video Factory JS\n * https://github.com/blueimp/Gallery\n *\n * Copyright 2013, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define */\n\n;\n(function (factory) {\n 'use strict';\n\n if (typeof define === 'function' && define.amd) {\n // Register as an anonymous AMD module:\n define(['./blueimp-helper', './blueimp-gallery'], factory);\n } else {\n // Browser globals:\n factory(window.blueimp.helper || window.jQuery, window.blueimp.Gallery);\n }\n})(function ($, Gallery) {\n 'use strict';\n\n var galleryPrototype = Gallery.prototype;\n $.extend(galleryPrototype.options, {\n // The class for video content elements:\n videoContentClass: 'video-content',\n // The class for video when it is loading:\n videoLoadingClass: 'video-loading',\n // The class for video when it is playing:\n videoPlayingClass: 'video-playing',\n // The list object property (or data attribute) for the video poster URL:\n videoPosterProperty: 'poster',\n // The list object property (or data attribute) for the video sources array:\n videoSourcesProperty: 'sources'\n });\n var handleSlide = galleryPrototype.handleSlide;\n $.extend(galleryPrototype, {\n handleSlide: function (index) {\n handleSlide.call(this, index);\n if (this.playingVideo) {\n this.playingVideo.pause();\n }\n },\n videoFactory: function (obj, callback, videoInterface) {\n var that = this;\n var options = this.options;\n var videoContainerNode = this.elementPrototype.cloneNode(false);\n var videoContainer = $(videoContainerNode);\n var errorArgs = [{\n type: 'error',\n target: videoContainerNode\n }];\n var video = videoInterface || document.createElement('video');\n var url = this.getItemProperty(obj, options.urlProperty);\n var type = this.getItemProperty(obj, options.typeProperty);\n var title = this.getItemProperty(obj, options.titleProperty);\n var altText = this.getItemProperty(obj, this.options.altTextProperty) || title;\n var posterUrl = this.getItemProperty(obj, options.videoPosterProperty);\n var posterImage;\n var sources = this.getItemProperty(obj, options.videoSourcesProperty);\n var source;\n var playMediaControl;\n var isLoading;\n var hasControls;\n videoContainer.addClass(options.videoContentClass);\n if (title) {\n videoContainerNode.title = title;\n }\n if (video.canPlayType) {\n if (url && type && video.canPlayType(type)) {\n video.src = url;\n } else if (sources) {\n while (sources.length) {\n source = sources.shift();\n url = this.getItemProperty(source, options.urlProperty);\n type = this.getItemProperty(source, options.typeProperty);\n if (url && type && video.canPlayType(type)) {\n video.src = url;\n break;\n }\n }\n }\n }\n if (posterUrl) {\n video.poster = posterUrl;\n posterImage = this.imagePrototype.cloneNode(false);\n $(posterImage).addClass(options.toggleClass);\n posterImage.src = posterUrl;\n posterImage.draggable = false;\n posterImage.alt = altText;\n videoContainerNode.appendChild(posterImage);\n }\n playMediaControl = document.createElement('a');\n playMediaControl.setAttribute('target', '_blank');\n if (!videoInterface) {\n playMediaControl.setAttribute('download', title);\n }\n playMediaControl.href = url;\n if (video.src) {\n video.controls = true;\n (videoInterface || $(video)).on('error', function () {\n that.setTimeout(callback, errorArgs);\n }).on('pause', function () {\n if (video.seeking) return;\n isLoading = false;\n videoContainer.removeClass(that.options.videoLoadingClass).removeClass(that.options.videoPlayingClass);\n if (hasControls) {\n that.container.addClass(that.options.controlsClass);\n }\n delete that.playingVideo;\n if (that.interval) {\n that.play();\n }\n }).on('playing', function () {\n isLoading = false;\n videoContainer.removeClass(that.options.videoLoadingClass).addClass(that.options.videoPlayingClass);\n if (that.container.hasClass(that.options.controlsClass)) {\n hasControls = true;\n that.container.removeClass(that.options.controlsClass);\n } else {\n hasControls = false;\n }\n }).on('play', function () {\n window.clearTimeout(that.timeout);\n isLoading = true;\n videoContainer.addClass(that.options.videoLoadingClass);\n that.playingVideo = video;\n });\n $(playMediaControl).on('click', function (event) {\n that.preventDefault(event);\n if (isLoading) {\n video.pause();\n } else {\n video.play();\n }\n });\n videoContainerNode.appendChild(videoInterface && videoInterface.element || video);\n }\n videoContainerNode.appendChild(playMediaControl);\n this.setTimeout(callback, [{\n type: 'load',\n target: videoContainerNode\n }]);\n return videoContainerNode;\n }\n });\n return Gallery;\n});","/*\n * blueimp helper JS\n * https://github.com/blueimp/Gallery\n *\n * Copyright 2013, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define */\n\n/* eslint-disable no-param-reassign */\n\n;\n(function () {\n 'use strict';\n\n /**\n * Object.assign polyfill\n *\n * @param {object} obj1 First object\n * @param {object} obj2 Second object\n * @returns {object} Merged object\n */\n function extend(obj1, obj2) {\n var prop;\n for (prop in obj2) {\n if (Object.prototype.hasOwnProperty.call(obj2, prop)) {\n obj1[prop] = obj2[prop];\n }\n }\n return obj1;\n }\n /**\n * Helper constructor\n *\n * @class\n * @param {*} query jQuery type query argument\n */\n function Helper(query) {\n if (!this || this.find !== Helper.prototype.find) {\n // Called as function instead of as constructor,\n // so we simply return a new instance:\n return new Helper(query);\n }\n this.length = 0;\n if (query) {\n if (typeof query === 'string') {\n query = this.find(query);\n }\n if (query.nodeType || query === query.window) {\n // Single HTML element\n this.length = 1;\n this[0] = query;\n } else {\n // HTML element collection\n var i = query.length;\n this.length = i;\n while (i) {\n i -= 1;\n this[i] = query[i];\n }\n }\n }\n }\n Helper.extend = extend;\n Helper.contains = function (container, element) {\n do {\n element = element.parentNode;\n if (element === container) {\n return true;\n }\n } while (element);\n return false;\n };\n Helper.parseJSON = function (string) {\n return window.JSON && JSON.parse(string);\n };\n extend(Helper.prototype, {\n find: function (query) {\n var container = this[0] || document;\n if (typeof query === 'string') {\n if (container.querySelectorAll) {\n query = container.querySelectorAll(query);\n } else if (query.charAt(0) === '#') {\n query = container.getElementById(query.slice(1));\n } else {\n query = container.getElementsByTagName(query);\n }\n }\n return new Helper(query);\n },\n hasClass: function (className) {\n if (!this[0]) {\n return false;\n }\n return new RegExp('(^|\\\\s+)' + className + '(\\\\s+|$)').test(this[0].className);\n },\n addClass: function (className) {\n var i = this.length;\n var element;\n while (i) {\n i -= 1;\n element = this[i];\n if (!element.className) {\n element.className = className;\n return this;\n }\n if (this.hasClass(className)) {\n return this;\n }\n element.className += ' ' + className;\n }\n return this;\n },\n removeClass: function (className) {\n var regexp = new RegExp('(^|\\\\s+)' + className + '(\\\\s+|$)');\n var i = this.length;\n var element;\n while (i) {\n i -= 1;\n element = this[i];\n element.className = element.className.replace(regexp, ' ');\n }\n return this;\n },\n on: function (eventName, handler) {\n var eventNames = eventName.split(/\\s+/);\n var i;\n var element;\n while (eventNames.length) {\n eventName = eventNames.shift();\n i = this.length;\n while (i) {\n i -= 1;\n element = this[i];\n if (element.addEventListener) {\n element.addEventListener(eventName, handler, false);\n } else if (element.attachEvent) {\n element.attachEvent('on' + eventName, handler);\n }\n }\n }\n return this;\n },\n off: function (eventName, handler) {\n var eventNames = eventName.split(/\\s+/);\n var i;\n var element;\n while (eventNames.length) {\n eventName = eventNames.shift();\n i = this.length;\n while (i) {\n i -= 1;\n element = this[i];\n if (element.removeEventListener) {\n element.removeEventListener(eventName, handler, false);\n } else if (element.detachEvent) {\n element.detachEvent('on' + eventName, handler);\n }\n }\n }\n return this;\n },\n empty: function () {\n var i = this.length;\n var element;\n while (i) {\n i -= 1;\n element = this[i];\n while (element.hasChildNodes()) {\n element.removeChild(element.lastChild);\n }\n }\n return this;\n },\n first: function () {\n return new Helper(this[0]);\n }\n });\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return Helper;\n });\n } else {\n window.blueimp = window.blueimp || {};\n window.blueimp.helper = Helper;\n }\n})();"],"sourceRoot":""}