diff --git a/dist/jquery.lory.js b/dist/jquery.lory.js index 545500e..131a824 100644 --- a/dist/jquery.lory.js +++ b/dist/jquery.lory.js @@ -88,6 +88,7 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument exports.lory = lory; +<<<<<<< refs/remotes/upstream/master var _detectPrefixes = __webpack_require__(1); var _detectPrefixes2 = _interopRequireDefault(_detectPrefixes); @@ -97,6 +98,17 @@ var _detectSupportsPassive = __webpack_require__(2); var _detectSupportsPassive2 = _interopRequireDefault(_detectSupportsPassive); var _dispatchEvent = __webpack_require__(3); +======= +var _detectPrefixes = __webpack_require__(2); + +var _detectPrefixes2 = _interopRequireDefault(_detectPrefixes); + +var _detectSupportsPassive = __webpack_require__(3); + +var _detectSupportsPassive2 = _interopRequireDefault(_detectSupportsPassive); + +var _dispatchEvent = __webpack_require__(4); +>>>>>>> Build var _dispatchEvent2 = _interopRequireDefault(_dispatchEvent); @@ -141,7 +153,8 @@ function lory(slider, opts) { */ function setActiveElement(slides, currentIndex) { var _options = options, - classNameActiveSlide = _options.classNameActiveSlide; + classNameActiveSlide = _options.classNameActiveSlide, + infinite = _options.infinite; slides.forEach(function (element, index) { @@ -151,6 +164,12 @@ function lory(slider, opts) { }); slides[currentIndex].classList.add(classNameActiveSlide); + + if (infinite && currentIndex === slides.length - infinite * 2) { + slides[infinite - 1].classList.add(classNameActiveSlide); + } else if (currentIndex === infinite) { + slides[slides.length - infinite].classList.add(classNameActiveSlide); + } } /** @@ -545,8 +564,8 @@ function lory(slider, opts) { var delta = void 0; var isScrolling = void 0; - function onTransitionEnd() { - if (transitionEndCallback) { + function onTransitionEnd(event) { + if (transitionEndCallback && event.target === slideContainer) { transitionEndCallback(); transitionEndCallback = undefined; @@ -705,7 +724,11 @@ function lory(slider, opts) { /***/ (function(module, exports, __webpack_require__) { "use strict"; +<<<<<<< refs/remotes/upstream/master +======= +/* WEBPACK VAR INJECTION */(function(global) { +>>>>>>> Build Object.defineProperty(exports, "__esModule", { value: true @@ -760,7 +783,11 @@ function detectPrefixes() { } /***/ }), +<<<<<<< refs/remotes/upstream/master /* 2 */ +======= +/* 3 */ +>>>>>>> Build /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -788,7 +815,11 @@ function detectSupportsPassive() { } /***/ }), +<<<<<<< refs/remotes/upstream/master /* 3 */ +======= +/* 4 */ +>>>>>>> Build /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -799,7 +830,11 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = dispatchEvent; +<<<<<<< refs/remotes/upstream/master var _customEvent = __webpack_require__(4); +======= +var _customEvent = __webpack_require__(5); +>>>>>>> Build var _customEvent2 = _interopRequireDefault(_customEvent); @@ -823,7 +858,11 @@ function dispatchEvent(target, type, detail) { } /***/ }), +<<<<<<< refs/remotes/upstream/master /* 4 */ +======= +/* 5 */ +>>>>>>> Build /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global) { @@ -1017,6 +1056,121 @@ exports.default = { }; /***/ }), +<<<<<<< refs/remotes/upstream/master +======= +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = { + /** + * slides scrolled at once + * @slidesToScroll {Number} + */ + slidesToScroll: 1, + + /** + * time in milliseconds for the animation of a valid slide attempt + * @slideSpeed {Number} + */ + slideSpeed: 300, + + /** + * time in milliseconds for the animation of the rewind after the last slide + * @rewindSpeed {Number} + */ + rewindSpeed: 600, + + /** + * time for the snapBack of the slider if the slide attempt was not valid + * @snapBackSpeed {Number} + */ + snapBackSpeed: 200, + + /** + * Basic easing functions: https://developer.mozilla.org/de/docs/Web/CSS/transition-timing-function + * cubic bezier easing functions: http://easings.net/de + * @ease {String} + */ + ease: 'ease', + + /** + * if slider reached the last slide, with next click the slider goes back to the startindex. + * use infinite or rewind, not both + * @rewind {Boolean} + */ + rewind: false, + + /** + * number of visible slides or false + * use infinite or rewind, not both + * @infinite {number} + */ + infinite: false, + + /** + * the slide index to show when the slider is initialized. + * @initialIndex {number} + */ + initialIndex: 0, + + /** + * class name for slider frame + * @classNameFrame {string} + */ + classNameFrame: 'js_frame', + + /** + * class name for slides container + * @classNameSlideContainer {string} + */ + classNameSlideContainer: 'js_slides', + + /** + * class name for slider prev control + * @classNamePrevCtrl {string} + */ + classNamePrevCtrl: 'js_prev', + + /** + * class name for slider next control + * @classNameNextCtrl {string} + */ + classNameNextCtrl: 'js_next', + + /** + * class name for current active slide + * if emptyString then no class is set + * @classNameActiveSlide {string} + */ + classNameActiveSlide: 'active', + + /** + * enables mouse events for swiping on desktop devices + * @enableMouseEvents {boolean} + */ + enableMouseEvents: false, + + /** + * window instance + * @window {object} + */ + window: typeof window !== 'undefined' ? window : null, + + /** + * If false, slides lory to the first slide on window resize. + * @rewindOnResize {boolean} + */ + rewindOnResize: true +}; + +/***/ }), +>>>>>>> Build /* 7 */, /* 8 */ /***/ (function(module, exports, __webpack_require__) { diff --git a/dist/jquery.lory.min.js b/dist/jquery.lory.min.js index 40c744c..202fdf5 100644 --- a/dist/jquery.lory.min.js +++ b/dist/jquery.lory.min.js @@ -1,2 +1,6 @@ +<<<<<<< refs/remotes/upstream/master !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var i in n)("object"==typeof exports?exports:e)[i]=n[i]}}("undefined"!=typeof self?self:this,function(){return function(e){function t(i){if(n[i])return n[i].exports;var o=n[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=8)}([function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function o(e,t){function n(e,t){var n=F,i=n.classNameActiveSlide;e.forEach(function(e,t){e.classList.contains(i)&&e.classList.remove(i)}),e[t].classList.add(i)}function i(e){var t=F,n=t.infinite,i=e.slice(0,n),o=e.slice(e.length-n,e.length);return i.forEach(function(e){var t=e.cloneNode(!0);k.appendChild(t)}),o.reverse().forEach(function(e){var t=e.cloneNode(!0);k.insertBefore(t,k.firstChild)}),k.addEventListener(A.transitionEnd,x),m.call(k.children)}function o(t,n,i){(0,u.default)(e,t+".lory."+n,i)}function s(e,t,n){var i=k&&k.style;i&&(i[A.transition+"TimingFunction"]=n,i[A.transition+"Duration"]=t+"ms",i[A.transform]="translateX("+e+"px)")}function d(e){return e.getBoundingClientRect().width||e.offsetWidth}function c(e,t){var i=F,r=i.slideSpeed,a=i.slidesToScroll,d=i.infinite,l=i.rewind,c=i.rewindPrev,u=i.rewindSpeed,v=i.ease,f=i.classNameActiveSlide,h=i.classNameDisabledNextCtrl,p=void 0===h?"disabled":h,b=i.classNameDisabledPrevCtrl,y=void 0===b?"disabled":b,E=r,L=t?z+1:z-1,x=Math.round(_-S);o("before","slide",{index:z,nextSlide:L}),B&&B.classList.remove(y),T&&T.classList.remove(p),"number"!=typeof e&&(e=t?d&&z+2*d!==P.length?z+(d-z%d):z+a:d&&z%d!=0?z-z%d:z-a),e=Math.min(Math.max(e,0),P.length-1),d&&void 0===t&&(e+=d),c&&0===Math.abs(M.x)&&!1===t&&(e=P.length-1,E=u);var w=Math.min(Math.max(-1*P[e].offsetLeft,-1*x),0);l&&Math.abs(M.x)===x&&t&&(w=0,e=0,E=u),s(w,E,v),M.x=w,P[e].offsetLeft<=x&&(z=e),!d||e!==P.length-d&&e!==P.length-P.length%d&&0!==e||(t&&(z=d),t||(z=P.length-2*d),M.x=-1*P[z].offsetLeft,D=function(){s(-1*P[z].offsetLeft,0,void 0)}),f&&n(m.call(P),z),!B||d||c||0!==e||B.classList.add(y),!T||d||l||e+1!==P.length||T.classList.add(p),o("after","slide",{currentSlide:z})}function v(){o("before","init"),A=(0,a.default)(),F=r({},f.default,t);var s=F,d=s.classNameFrame,l=s.classNameSlideContainer,c=s.classNamePrevCtrl,u=s.classNameNextCtrl,v=s.classNameDisabledNextCtrl,p=void 0===v?"disabled":v,b=s.classNameDisabledPrevCtrl,L=void 0===b?"disabled":b,x=s.enableMouseEvents,g=s.classNameActiveSlide,N=s.initialIndex;z=N,O=e.getElementsByClassName(d)[0],k=O.getElementsByClassName(l)[0],B=e.getElementsByClassName(c)[0],T=e.getElementsByClassName(u)[0],M={x:k.offsetLeft,y:k.offsetTop},F.infinite?P=i(m.call(k.children)):(P=m.call(k.children),B&&!F.rewindPrev&&B.classList.add(L),T&&1===P.length&&!F.rewind&&T.classList.add(p)),h(),g&&n(P,z),B&&T&&(B.addEventListener("click",y),T.addEventListener("click",E)),O.addEventListener("touchstart",w,I),x&&(O.addEventListener("mousedown",w),O.addEventListener("click",C)),F.window.addEventListener("resize",j),o("after","init")}function h(){var e=F,t=e.infinite,i=e.ease,o=e.rewindSpeed,r=e.rewindOnResize,a=e.classNameActiveSlide,l=e.initialIndex;_=d(k),S=d(O),S===_&&(_=P.reduce(function(e,t){return e+d(t)},0)),r?z=l:(i=null,o=0),t?(s(-1*P[z+t].offsetLeft,0,null),z+=t,M.x=-1*P[z].offsetLeft):(s(-1*P[z].offsetLeft,o,i),M.x=-1*P[z].offsetLeft),a&&n(m.call(P),z)}function p(e){c(e)}function b(){return z-F.infinite||0}function y(){c(!1,!1)}function E(){c(!1,!0)}function L(){o("before","destroy"),O.removeEventListener(A.transitionEnd,x),O.removeEventListener("touchstart",w,I),O.removeEventListener("touchmove",g,I),O.removeEventListener("touchend",N),O.removeEventListener("mousemove",g),O.removeEventListener("mousedown",w),O.removeEventListener("mouseup",N),O.removeEventListener("mouseleave",N),O.removeEventListener("click",C),F.window.removeEventListener("resize",j),B&&B.removeEventListener("click",y),T&&T.removeEventListener("click",E),F.infinite&&Array.apply(null,Array(F.infinite)).forEach(function(){k.removeChild(k.firstChild),k.removeChild(k.lastChild)}),o("after","destroy")}function x(){D&&(D(),D=void 0)}function w(e){var t=F,n=t.enableMouseEvents,i=e.touches?e.touches[0]:e;n&&(O.addEventListener("mousemove",g),O.addEventListener("mouseup",N),O.addEventListener("mouseleave",N)),O.addEventListener("touchmove",g,I),O.addEventListener("touchend",N);var r=i.pageX,s=i.pageY;Q={x:r,y:s,time:Date.now()},R=void 0,X={},o("on","touchstart",{event:e})}function g(e){var t=e.touches?e.touches[0]:e,n=t.pageX,i=t.pageY;X={x:n-Q.x,y:i-Q.y},void 0===R&&(R=!!(R||Math.abs(X.x)25||Math.abs(X.x)>S/3,i=!z&&X.x>0||z===P.length-1&&X.x<0,r=X.x<0;R||(n&&!i?c(!1,r):s(M.x,F.snapBackSpeed)),Q=void 0,O.removeEventListener("touchmove",g),O.removeEventListener("touchend",N),O.removeEventListener("mousemove",g),O.removeEventListener("mouseup",N),O.removeEventListener("mouseleave",N),o("on","touchend",{event:e})}function C(e){X.x&&e.preventDefault()}function j(e){S!==d(O)&&(h(),o("on","resize",{event:e}))}var M=void 0,_=void 0,S=void 0,P=void 0,O=void 0,k=void 0,B=void 0,T=void 0,A=void 0,D=void 0,z=0,F={},I=!!(0,l.default)()&&{passive:!0};"undefined"!=typeof jQuery&&e instanceof jQuery&&(e=e[0]);var Q=void 0,X=void 0,R=void 0;return v(),{setup:v,reset:h,slideTo:p,returnIndex:b,prev:y,next:E,destroy:L}}Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t25||Math.abs(I.x)>_/3,i=!z&&I.x>0||z===S.length-1&&I.x<0,r=I.x<0;Q||(n&&!i?d(!1,r):s(N.x,D.snapBackSpeed)),F=void 0,O.removeEventListener("touchmove",w),O.removeEventListener("touchend",g),O.removeEventListener("mousemove",w),O.removeEventListener("mouseup",g),O.removeEventListener("mouseleave",g),o("on","touchend",{event:e})}function C(e){I.x&&e.preventDefault()}function j(e){f(),o("on","resize",{event:e})}var N=void 0,M=void 0,_=void 0,S=void 0,O=void 0,P=void 0,B=void 0,k=void 0,T=void 0,A=void 0,z=0,D={},R=!!(0,l.default)()&&{passive:!0};"undefined"!=typeof jQuery&&e instanceof jQuery&&(e=e[0]);var F=void 0,I=void 0,Q=void 0;return c(),{setup:c,reset:f,slideTo:h,returnIndex:p,prev:b,next:y,destroy:E}}Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t>>>>>> Build //# sourceMappingURL=jquery.lory.min.js.map \ No newline at end of file diff --git a/dist/jquery.lory.min.js.map b/dist/jquery.lory.min.js.map index 50f7e00..0a0d9b7 100644 --- a/dist/jquery.lory.min.js.map +++ b/dist/jquery.lory.min.js.map @@ -1 +1,5 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///jquery.lory.min.js","webpack:///webpack/bootstrap 85bdd04943e5c295f168","webpack:///./src/lory.js","webpack:///./src/utils/detect-prefixes.js","webpack:///./src/utils/detect-supportsPassive.js","webpack:///./src/utils/dispatch-event.js","webpack:///./node_modules/custom-event/index.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/defaults.js","webpack:///./src/jquery.lory.js"],"names":["root","factory","exports","module","define","amd","a","i","self","this","modules","__webpack_require__","moduleId","installedModules","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","_interopRequireDefault","obj","default","lory","slider","opts","setActiveElement","slides","currentIndex","_options","options","classNameActiveSlide","forEach","element","index","classList","contains","remove","add","setupInfinite","slideArray","_options2","infinite","front","slice","back","length","cloned","cloneNode","slideContainer","appendChild","reverse","insertBefore","firstChild","addEventListener","prefixes","transitionEnd","onTransitionEnd","children","dispatchSliderEvent","phase","type","detail","_dispatchEvent2","translate","to","duration","ease","style","transition","transform","elementWidth","getBoundingClientRect","width","offsetWidth","slide","nextIndex","direction","_options3","slideSpeed","slidesToScroll","rewind","rewindPrev","rewindSpeed","_options3$classNameDi","classNameDisabledNextCtrl","undefined","_options3$classNameDi2","classNameDisabledPrevCtrl","nextSlide","maxOffset","Math","round","slidesWidth","frameWidth","prevCtrl","nextCtrl","min","max","abs","position","x","nextOffset","offsetLeft","transitionEndCallback","currentSlide","setup","_detectPrefixes2","_options4","classNameFrame","classNameSlideContainer","classNamePrevCtrl","classNameNextCtrl","_options4$classNameDi","_options4$classNameDi2","enableMouseEvents","initialIndex","frame","getElementsByClassName","y","offsetTop","reset","prev","next","onTouchstart","touchEventParams","onClick","window","onResize","_options5","rewindOnResize","reduce","previousValue","slideTo","returnIndex","destroy","removeEventListener","onTouchmove","onTouchend","Array","apply","removeChild","lastChild","event","_options6","touches","pageX","pageY","touchOffset","time","Date","now","isScrolling","delta","isValid","Number","isOutOfBounds","snapBackSpeed","preventDefault","_detectSupportsPassive2","passive","jQuery","value","_extends","assign","target","arguments","source","key","_detectPrefixes","_detectSupportsPassive","_dispatchEvent","_defaults","_defaults2","detectPrefixes","el","document","createElement","prop","body","detectSupportsPassive","supportsPassive","e","dispatchEvent","_customEvent2","bubbles","cancelable","_customEvent","global","NativeCustomEvent","CustomEvent","foo","createEvent","params","initCustomEvent","createEventObject","Boolean","g","Function","eval","_lory","$","fn","each","instanceOptions","data","extend"],"mappings":"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","file":"jquery.lory.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\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 = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 8);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* globals jQuery */\n\nexports.lory = lory;\n\nvar _detectPrefixes = __webpack_require__(1);\n\nvar _detectPrefixes2 = _interopRequireDefault(_detectPrefixes);\n\nvar _detectSupportsPassive = __webpack_require__(2);\n\nvar _detectSupportsPassive2 = _interopRequireDefault(_detectSupportsPassive);\n\nvar _dispatchEvent = __webpack_require__(3);\n\nvar _dispatchEvent2 = _interopRequireDefault(_dispatchEvent);\n\nvar _defaults = __webpack_require__(6);\n\nvar _defaults2 = _interopRequireDefault(_defaults);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar slice = Array.prototype.slice;\n\nfunction lory(slider, opts) {\n var position = void 0;\n var slidesWidth = void 0;\n var frameWidth = void 0;\n var slides = void 0;\n\n /**\n * slider DOM elements\n */\n var frame = void 0;\n var slideContainer = void 0;\n var prevCtrl = void 0;\n var nextCtrl = void 0;\n var prefixes = void 0;\n var transitionEndCallback = void 0;\n\n var index = 0;\n var options = {};\n var touchEventParams = (0, _detectSupportsPassive2.default)() ? { passive: true } : false;\n\n /**\n * if object is jQuery convert to native DOM element\n */\n if (typeof jQuery !== 'undefined' && slider instanceof jQuery) {\n slider = slider[0];\n }\n\n /**\n * private\n * set active class to element which is the current slide\n */\n function setActiveElement(slides, currentIndex) {\n var _options = options,\n classNameActiveSlide = _options.classNameActiveSlide;\n\n\n slides.forEach(function (element, index) {\n if (element.classList.contains(classNameActiveSlide)) {\n element.classList.remove(classNameActiveSlide);\n }\n });\n\n slides[currentIndex].classList.add(classNameActiveSlide);\n }\n\n /**\n * private\n * setupInfinite: function to setup if infinite is set\n *\n * @param {array} slideArray\n * @return {array} array of updated slideContainer elements\n */\n function setupInfinite(slideArray) {\n var _options2 = options,\n infinite = _options2.infinite;\n\n\n var front = slideArray.slice(0, infinite);\n var back = slideArray.slice(slideArray.length - infinite, slideArray.length);\n\n front.forEach(function (element) {\n var cloned = element.cloneNode(true);\n\n slideContainer.appendChild(cloned);\n });\n\n back.reverse().forEach(function (element) {\n var cloned = element.cloneNode(true);\n\n slideContainer.insertBefore(cloned, slideContainer.firstChild);\n });\n\n slideContainer.addEventListener(prefixes.transitionEnd, onTransitionEnd);\n\n return slice.call(slideContainer.children);\n }\n\n /**\n * [dispatchSliderEvent description]\n * @return {[type]} [description]\n */\n function dispatchSliderEvent(phase, type, detail) {\n (0, _dispatchEvent2.default)(slider, phase + '.lory.' + type, detail);\n }\n\n /**\n * translates to a given position in a given time in milliseconds\n *\n * @to {number} number in pixels where to translate to\n * @duration {number} time in milliseconds for the transistion\n * @ease {string} easing css property\n */\n function translate(to, duration, ease) {\n var style = slideContainer && slideContainer.style;\n\n if (style) {\n style[prefixes.transition + 'TimingFunction'] = ease;\n style[prefixes.transition + 'Duration'] = duration + 'ms';\n style[prefixes.transform] = 'translateX(' + to + 'px)';\n }\n }\n\n /**\n * returns an element's width\n */\n function elementWidth(element) {\n return element.getBoundingClientRect().width || element.offsetWidth;\n }\n\n /**\n * slidefunction called by prev, next & touchend\n *\n * determine nextIndex and slide to next postion\n * under restrictions of the defined options\n *\n * @direction {boolean}\n */\n function slide(nextIndex, direction) {\n var _options3 = options,\n slideSpeed = _options3.slideSpeed,\n slidesToScroll = _options3.slidesToScroll,\n infinite = _options3.infinite,\n rewind = _options3.rewind,\n rewindPrev = _options3.rewindPrev,\n rewindSpeed = _options3.rewindSpeed,\n ease = _options3.ease,\n classNameActiveSlide = _options3.classNameActiveSlide,\n _options3$classNameDi = _options3.classNameDisabledNextCtrl,\n classNameDisabledNextCtrl = _options3$classNameDi === undefined ? 'disabled' : _options3$classNameDi,\n _options3$classNameDi2 = _options3.classNameDisabledPrevCtrl,\n classNameDisabledPrevCtrl = _options3$classNameDi2 === undefined ? 'disabled' : _options3$classNameDi2;\n\n\n var duration = slideSpeed;\n\n var nextSlide = direction ? index + 1 : index - 1;\n var maxOffset = Math.round(slidesWidth - frameWidth);\n\n dispatchSliderEvent('before', 'slide', {\n index: index,\n nextSlide: nextSlide\n });\n\n /**\n * Reset control classes\n */\n if (prevCtrl) {\n prevCtrl.classList.remove(classNameDisabledPrevCtrl);\n }\n if (nextCtrl) {\n nextCtrl.classList.remove(classNameDisabledNextCtrl);\n }\n\n if (typeof nextIndex !== 'number') {\n if (direction) {\n if (infinite && index + infinite * 2 !== slides.length) {\n nextIndex = index + (infinite - index % infinite);\n } else {\n nextIndex = index + slidesToScroll;\n }\n } else {\n if (infinite && index % infinite !== 0) {\n nextIndex = index - index % infinite;\n } else {\n nextIndex = index - slidesToScroll;\n }\n }\n }\n\n nextIndex = Math.min(Math.max(nextIndex, 0), slides.length - 1);\n\n if (infinite && direction === undefined) {\n nextIndex += infinite;\n }\n\n if (rewindPrev && Math.abs(position.x) === 0 && direction === false) {\n nextIndex = slides.length - 1;\n duration = rewindSpeed;\n }\n\n var nextOffset = Math.min(Math.max(slides[nextIndex].offsetLeft * -1, maxOffset * -1), 0);\n\n if (rewind && Math.abs(position.x) === maxOffset && direction) {\n nextOffset = 0;\n nextIndex = 0;\n duration = rewindSpeed;\n }\n\n /**\n * translate to the nextOffset by a defined duration and ease function\n */\n translate(nextOffset, duration, ease);\n\n /**\n * update the position with the next position\n */\n position.x = nextOffset;\n\n /**\n * update the index with the nextIndex only if\n * the offset of the nextIndex is in the range of the maxOffset\n */\n if (slides[nextIndex].offsetLeft <= maxOffset) {\n index = nextIndex;\n }\n\n if (infinite && (nextIndex === slides.length - infinite || nextIndex === slides.length - slides.length % infinite || nextIndex === 0)) {\n if (direction) {\n index = infinite;\n }\n\n if (!direction) {\n index = slides.length - infinite * 2;\n }\n\n position.x = slides[index].offsetLeft * -1;\n\n transitionEndCallback = function transitionEndCallback() {\n translate(slides[index].offsetLeft * -1, 0, undefined);\n };\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n\n /**\n * update classes for next and prev arrows\n * based on user settings\n */\n if (prevCtrl && !infinite && !rewindPrev && nextIndex === 0) {\n prevCtrl.classList.add(classNameDisabledPrevCtrl);\n }\n\n if (nextCtrl && !infinite && !rewind && nextIndex + 1 === slides.length) {\n nextCtrl.classList.add(classNameDisabledNextCtrl);\n }\n\n dispatchSliderEvent('after', 'slide', {\n currentSlide: index\n });\n }\n\n /**\n * public\n * setup function\n */\n function setup() {\n dispatchSliderEvent('before', 'init');\n\n prefixes = (0, _detectPrefixes2.default)();\n options = _extends({}, _defaults2.default, opts);\n\n var _options4 = options,\n classNameFrame = _options4.classNameFrame,\n classNameSlideContainer = _options4.classNameSlideContainer,\n classNamePrevCtrl = _options4.classNamePrevCtrl,\n classNameNextCtrl = _options4.classNameNextCtrl,\n _options4$classNameDi = _options4.classNameDisabledNextCtrl,\n classNameDisabledNextCtrl = _options4$classNameDi === undefined ? 'disabled' : _options4$classNameDi,\n _options4$classNameDi2 = _options4.classNameDisabledPrevCtrl,\n classNameDisabledPrevCtrl = _options4$classNameDi2 === undefined ? 'disabled' : _options4$classNameDi2,\n enableMouseEvents = _options4.enableMouseEvents,\n classNameActiveSlide = _options4.classNameActiveSlide,\n initialIndex = _options4.initialIndex;\n\n\n index = initialIndex;\n frame = slider.getElementsByClassName(classNameFrame)[0];\n slideContainer = frame.getElementsByClassName(classNameSlideContainer)[0];\n prevCtrl = slider.getElementsByClassName(classNamePrevCtrl)[0];\n nextCtrl = slider.getElementsByClassName(classNameNextCtrl)[0];\n\n position = {\n x: slideContainer.offsetLeft,\n y: slideContainer.offsetTop\n };\n\n if (options.infinite) {\n slides = setupInfinite(slice.call(slideContainer.children));\n } else {\n slides = slice.call(slideContainer.children);\n\n if (prevCtrl && !options.rewindPrev) {\n prevCtrl.classList.add(classNameDisabledPrevCtrl);\n }\n\n if (nextCtrl && slides.length === 1 && !options.rewind) {\n nextCtrl.classList.add(classNameDisabledNextCtrl);\n }\n }\n\n reset();\n\n if (classNameActiveSlide) {\n setActiveElement(slides, index);\n }\n\n if (prevCtrl && nextCtrl) {\n prevCtrl.addEventListener('click', prev);\n nextCtrl.addEventListener('click', next);\n }\n\n frame.addEventListener('touchstart', onTouchstart, touchEventParams);\n\n if (enableMouseEvents) {\n frame.addEventListener('mousedown', onTouchstart);\n frame.addEventListener('click', onClick);\n }\n\n options.window.addEventListener('resize', onResize);\n\n dispatchSliderEvent('after', 'init');\n }\n\n /**\n * public\n * reset function: called on resize\n */\n function reset() {\n var _options5 = options,\n infinite = _options5.infinite,\n ease = _options5.ease,\n rewindSpeed = _options5.rewindSpeed,\n rewindOnResize = _options5.rewindOnResize,\n classNameActiveSlide = _options5.classNameActiveSlide,\n initialIndex = _options5.initialIndex;\n\n\n slidesWidth = elementWidth(slideContainer);\n frameWidth = elementWidth(frame);\n\n if (frameWidth === slidesWidth) {\n slidesWidth = slides.reduce(function (previousValue, slide) {\n return previousValue + elementWidth(slide);\n }, 0);\n }\n\n if (rewindOnResize) {\n index = initialIndex;\n } else {\n ease = null;\n rewindSpeed = 0;\n }\n\n if (infinite) {\n translate(slides[index + infinite].offsetLeft * -1, 0, null);\n\n index = index + infinite;\n position.x = slides[index].offsetLeft * -1;\n } else {\n translate(slides[index].offsetLeft * -1, rewindSpeed, ease);\n position.x = slides[index].offsetLeft * -1;\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n }\n\n /**\n * public\n * slideTo: called on clickhandler\n */\n function slideTo(index) {\n slide(index);\n }\n\n /**\n * public\n * returnIndex function: called on clickhandler\n */\n function returnIndex() {\n return index - options.infinite || 0;\n }\n\n /**\n * public\n * prev function: called on clickhandler\n */\n function prev() {\n slide(false, false);\n }\n\n /**\n * public\n * next function: called on clickhandler\n */\n function next() {\n slide(false, true);\n }\n\n /**\n * public\n * destroy function: called to gracefully destroy the lory instance\n */\n function destroy() {\n dispatchSliderEvent('before', 'destroy');\n\n // remove event listeners\n frame.removeEventListener(prefixes.transitionEnd, onTransitionEnd);\n frame.removeEventListener('touchstart', onTouchstart, touchEventParams);\n frame.removeEventListener('touchmove', onTouchmove, touchEventParams);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mousedown', onTouchstart);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n frame.removeEventListener('click', onClick);\n\n options.window.removeEventListener('resize', onResize);\n\n if (prevCtrl) {\n prevCtrl.removeEventListener('click', prev);\n }\n\n if (nextCtrl) {\n nextCtrl.removeEventListener('click', next);\n }\n\n // remove cloned slides if infinite is set\n if (options.infinite) {\n Array.apply(null, Array(options.infinite)).forEach(function () {\n slideContainer.removeChild(slideContainer.firstChild);\n slideContainer.removeChild(slideContainer.lastChild);\n });\n }\n\n dispatchSliderEvent('after', 'destroy');\n }\n\n // event handling\n\n var touchOffset = void 0;\n var delta = void 0;\n var isScrolling = void 0;\n\n function onTransitionEnd() {\n if (transitionEndCallback) {\n transitionEndCallback();\n\n transitionEndCallback = undefined;\n }\n }\n\n function onTouchstart(event) {\n var _options6 = options,\n enableMouseEvents = _options6.enableMouseEvents;\n\n var touches = event.touches ? event.touches[0] : event;\n\n if (enableMouseEvents) {\n frame.addEventListener('mousemove', onTouchmove);\n frame.addEventListener('mouseup', onTouchend);\n frame.addEventListener('mouseleave', onTouchend);\n }\n\n frame.addEventListener('touchmove', onTouchmove, touchEventParams);\n frame.addEventListener('touchend', onTouchend);\n\n var pageX = touches.pageX,\n pageY = touches.pageY;\n\n\n touchOffset = {\n x: pageX,\n y: pageY,\n time: Date.now()\n };\n\n isScrolling = undefined;\n\n delta = {};\n\n dispatchSliderEvent('on', 'touchstart', {\n event: event\n });\n }\n\n function onTouchmove(event) {\n var touches = event.touches ? event.touches[0] : event;\n var pageX = touches.pageX,\n pageY = touches.pageY;\n\n\n delta = {\n x: pageX - touchOffset.x,\n y: pageY - touchOffset.y\n };\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(delta.x) < Math.abs(delta.y));\n }\n\n if (!isScrolling && touchOffset) {\n translate(position.x + delta.x, 0, null);\n }\n\n // may be\n dispatchSliderEvent('on', 'touchmove', {\n event: event\n });\n }\n\n function onTouchend(event) {\n /**\n * time between touchstart and touchend in milliseconds\n * @duration {number}\n */\n var duration = touchOffset ? Date.now() - touchOffset.time : undefined;\n\n /**\n * is valid if:\n *\n * -> swipe attempt time is over 300 ms\n * and\n * -> swipe distance is greater than 25px\n * or\n * -> swipe distance is more then a third of the swipe area\n *\n * @isValidSlide {Boolean}\n */\n var isValid = Number(duration) < 300 && Math.abs(delta.x) > 25 || Math.abs(delta.x) > frameWidth / 3;\n\n /**\n * is out of bounds if:\n *\n * -> index is 0 and delta x is greater than 0\n * or\n * -> index is the last slide and delta is smaller than 0\n *\n * @isOutOfBounds {Boolean}\n */\n var isOutOfBounds = !index && delta.x > 0 || index === slides.length - 1 && delta.x < 0;\n\n var direction = delta.x < 0;\n\n if (!isScrolling) {\n if (isValid && !isOutOfBounds) {\n slide(false, direction);\n } else {\n translate(position.x, options.snapBackSpeed);\n }\n }\n\n touchOffset = undefined;\n\n /**\n * remove eventlisteners after swipe attempt\n */\n frame.removeEventListener('touchmove', onTouchmove);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n\n dispatchSliderEvent('on', 'touchend', {\n event: event\n });\n }\n\n function onClick(event) {\n if (delta.x) {\n event.preventDefault();\n }\n }\n\n function onResize(event) {\n if (frameWidth !== elementWidth(frame)) {\n reset();\n\n dispatchSliderEvent('on', 'resize', {\n event: event\n });\n }\n }\n\n // trigger initial setup\n setup();\n\n // expose public api\n return {\n setup: setup,\n reset: reset,\n slideTo: slideTo,\n returnIndex: returnIndex,\n prev: prev,\n next: next,\n destroy: destroy\n };\n}\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = detectPrefixes;\n/**\n * Detecting prefixes for saving time and bytes\n */\nfunction detectPrefixes() {\n var transform = void 0;\n var transition = void 0;\n var transitionEnd = void 0;\n\n (function () {\n var el = document.createElement('_');\n var style = el.style;\n\n var prop = void 0;\n\n if (style[prop = 'webkitTransition'] === '') {\n transitionEnd = 'webkitTransitionEnd';\n transition = prop;\n }\n\n if (style[prop = 'transition'] === '') {\n transitionEnd = 'transitionend';\n transition = prop;\n }\n\n if (style[prop = 'webkitTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'msTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'transform'] === '') {\n transform = prop;\n }\n\n document.body.insertBefore(el, null);\n style[transform] = 'translateX(0)';\n document.body.removeChild(el);\n })();\n\n return {\n transform: transform,\n transition: transition,\n transitionEnd: transitionEnd\n };\n}\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = detectSupportsPassive;\nfunction detectSupportsPassive() {\n var supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n } catch (e) {}\n\n return supportsPassive;\n}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = dispatchEvent;\n\nvar _customEvent = __webpack_require__(4);\n\nvar _customEvent2 = _interopRequireDefault(_customEvent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * dispatch custom events\n *\n * @param {element} el slideshow element\n * @param {string} type custom event name\n * @param {object} detail custom detail information\n */\nfunction dispatchEvent(target, type, detail) {\n var event = new _customEvent2.default(type, {\n bubbles: true,\n cancelable: true,\n detail: detail\n });\n\n target.dispatchEvent(event);\n}\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {\nvar NativeCustomEvent = global.CustomEvent;\n\nfunction useNative () {\n try {\n var p = new NativeCustomEvent('cat', { detail: { foo: 'bar' } });\n return 'cat' === p.type && 'bar' === p.detail.foo;\n } catch (e) {\n }\n return false;\n}\n\n/**\n * Cross-browser `CustomEvent` constructor.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.CustomEvent\n *\n * @public\n */\n\nmodule.exports = useNative() ? NativeCustomEvent :\n\n// IE >= 9\n'undefined' !== typeof document && 'function' === typeof document.createEvent ? function CustomEvent (type, params) {\n var e = document.createEvent('CustomEvent');\n if (params) {\n e.initCustomEvent(type, params.bubbles, params.cancelable, params.detail);\n } else {\n e.initCustomEvent(type, false, false, void 0);\n }\n return e;\n} :\n\n// IE <= 8\nfunction CustomEvent (type, params) {\n var e = document.createEventObject();\n e.type = type;\n if (params) {\n e.bubbles = Boolean(params.bubbles);\n e.cancelable = Boolean(params.cancelable);\n e.detail = params.detail;\n } else {\n e.bubbles = false;\n e.cancelable = false;\n e.detail = void 0;\n }\n return e;\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5)))\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n /**\n * slides scrolled at once\n * @slidesToScroll {Number}\n */\n slidesToScroll: 1,\n\n /**\n * time in milliseconds for the animation of a valid slide attempt\n * @slideSpeed {Number}\n */\n slideSpeed: 300,\n\n /**\n * time in milliseconds for the animation of the rewind after the last slide\n * @rewindSpeed {Number}\n */\n rewindSpeed: 600,\n\n /**\n * time for the snapBack of the slider if the slide attempt was not valid\n * @snapBackSpeed {Number}\n */\n snapBackSpeed: 200,\n\n /**\n * Basic easing functions: https://developer.mozilla.org/de/docs/Web/CSS/transition-timing-function\n * cubic bezier easing functions: http://easings.net/de\n * @ease {String}\n */\n ease: 'ease',\n\n /**\n * if slider reached the last slide, with next click the slider goes back to the startindex.\n * use infinite or rewind, not both\n * @rewind {Boolean}\n */\n rewind: false,\n\n /**\n * number of visible slides or false\n * use infinite or rewind, not both\n * @infinite {number}\n */\n infinite: false,\n\n /**\n * the slide index to show when the slider is initialized.\n * @initialIndex {number}\n */\n initialIndex: 0,\n\n /**\n * class name for slider frame\n * @classNameFrame {string}\n */\n classNameFrame: 'js_frame',\n\n /**\n * class name for slides container\n * @classNameSlideContainer {string}\n */\n classNameSlideContainer: 'js_slides',\n\n /**\n * class name for slider prev control\n * @classNamePrevCtrl {string}\n */\n classNamePrevCtrl: 'js_prev',\n\n /**\n * class name for slider next control\n * @classNameNextCtrl {string}\n */\n classNameNextCtrl: 'js_next',\n\n /**\n * class name for current active slide\n * if emptyString then no class is set\n * @classNameActiveSlide {string}\n */\n classNameActiveSlide: 'active',\n\n /**\n * enables mouse events for swiping on desktop devices\n * @enableMouseEvents {boolean}\n */\n enableMouseEvents: false,\n\n /**\n * window instance\n * @window {object}\n */\n window: typeof window !== 'undefined' ? window : null,\n\n /**\n * If false, slides lory to the first slide on window resize.\n * @rewindOnResize {boolean}\n */\n rewindOnResize: true\n};\n\n/***/ }),\n/* 7 */,\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _lory = __webpack_require__(0);\n\nfunction init($) {\n $.fn.lory = function (options) {\n return this.each(function () {\n var instanceOptions;\n\n if (!$.data(this, 'lory')) {\n instanceOptions = $.extend({}, options, $(this).data());\n $.data(this, 'lory', (0, _lory.lory)(this, instanceOptions));\n }\n });\n };\n} /* globals jQuery */\n;\n\nif (typeof jQuery !== 'undefined') {\n init(jQuery);\n}\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// jquery.lory.min.js"," \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, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\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 = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 8);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 85bdd04943e5c295f168","/* globals jQuery */\n\nimport detectPrefixes from './utils/detect-prefixes.js';\nimport supportsPassive from './utils/detect-supportsPassive';\nimport dispatchEvent from './utils/dispatch-event.js';\nimport defaults from './defaults.js';\n\nconst slice = Array.prototype.slice;\n\nexport function lory (slider, opts) {\n let position;\n let slidesWidth;\n let frameWidth;\n let slides;\n\n /**\n * slider DOM elements\n */\n let frame;\n let slideContainer;\n let prevCtrl;\n let nextCtrl;\n let prefixes;\n let transitionEndCallback;\n\n let index = 0;\n let options = {};\n let touchEventParams = supportsPassive() ? { passive: true } : false;\n\n /**\n * if object is jQuery convert to native DOM element\n */\n if (typeof jQuery !== 'undefined' && slider instanceof jQuery) {\n slider = slider[0];\n }\n\n /**\n * private\n * set active class to element which is the current slide\n */\n function setActiveElement (slides, currentIndex) {\n const {classNameActiveSlide} = options;\n\n slides.forEach((element, index) => {\n if (element.classList.contains(classNameActiveSlide)) {\n element.classList.remove(classNameActiveSlide);\n }\n });\n\n slides[currentIndex].classList.add(classNameActiveSlide);\n }\n\n /**\n * private\n * setupInfinite: function to setup if infinite is set\n *\n * @param {array} slideArray\n * @return {array} array of updated slideContainer elements\n */\n function setupInfinite (slideArray) {\n const {infinite} = options;\n\n const front = slideArray.slice(0, infinite);\n const back = slideArray.slice(slideArray.length - infinite, slideArray.length);\n\n front.forEach(function (element) {\n const cloned = element.cloneNode(true);\n\n slideContainer.appendChild(cloned);\n });\n\n back.reverse()\n .forEach(function (element) {\n const cloned = element.cloneNode(true);\n\n slideContainer.insertBefore(cloned, slideContainer.firstChild);\n });\n\n slideContainer.addEventListener(prefixes.transitionEnd, onTransitionEnd);\n\n return slice.call(slideContainer.children);\n }\n\n /**\n * [dispatchSliderEvent description]\n * @return {[type]} [description]\n */\n function dispatchSliderEvent (phase, type, detail) {\n dispatchEvent(slider, `${phase}.lory.${type}`, detail);\n }\n\n /**\n * translates to a given position in a given time in milliseconds\n *\n * @to {number} number in pixels where to translate to\n * @duration {number} time in milliseconds for the transistion\n * @ease {string} easing css property\n */\n function translate (to, duration, ease) {\n const style = slideContainer && slideContainer.style;\n\n if (style) {\n style[prefixes.transition + 'TimingFunction'] = ease;\n style[prefixes.transition + 'Duration'] = duration + 'ms';\n style[prefixes.transform] = 'translateX(' + to + 'px)';\n }\n }\n\n /**\n * returns an element's width\n */\n function elementWidth (element) {\n return element.getBoundingClientRect().width || element.offsetWidth;\n }\n\n /**\n * slidefunction called by prev, next & touchend\n *\n * determine nextIndex and slide to next postion\n * under restrictions of the defined options\n *\n * @direction {boolean}\n */\n function slide (nextIndex, direction) {\n const {\n slideSpeed,\n slidesToScroll,\n infinite,\n rewind,\n rewindPrev,\n rewindSpeed,\n ease,\n classNameActiveSlide,\n classNameDisabledNextCtrl = 'disabled',\n classNameDisabledPrevCtrl = 'disabled'\n } = options;\n\n let duration = slideSpeed;\n\n const nextSlide = direction ? index + 1 : index - 1;\n const maxOffset = Math.round(slidesWidth - frameWidth);\n\n dispatchSliderEvent('before', 'slide', {\n index,\n nextSlide\n });\n\n /**\n * Reset control classes\n */\n if (prevCtrl) {\n prevCtrl.classList.remove(classNameDisabledPrevCtrl);\n }\n if (nextCtrl) {\n nextCtrl.classList.remove(classNameDisabledNextCtrl);\n }\n\n if (typeof nextIndex !== 'number') {\n if (direction) {\n if (infinite && index + (infinite * 2) !== slides.length) {\n nextIndex = index + (infinite - index % infinite);\n } else {\n nextIndex = index + slidesToScroll;\n }\n } else {\n if (infinite && index % infinite !== 0) {\n nextIndex = index - index % infinite;\n } else {\n nextIndex = index - slidesToScroll;\n }\n }\n }\n\n nextIndex = Math.min(Math.max(nextIndex, 0), slides.length - 1);\n\n if (infinite && direction === undefined) {\n nextIndex += infinite;\n }\n\n if (rewindPrev && Math.abs(position.x) === 0 && direction === false) {\n nextIndex = slides.length - 1;\n duration = rewindSpeed;\n }\n\n let nextOffset = Math.min(Math.max(slides[nextIndex].offsetLeft * -1, maxOffset * -1), 0);\n\n if (rewind && Math.abs(position.x) === maxOffset && direction) {\n nextOffset = 0;\n nextIndex = 0;\n duration = rewindSpeed;\n }\n\n /**\n * translate to the nextOffset by a defined duration and ease function\n */\n translate(nextOffset, duration, ease);\n\n /**\n * update the position with the next position\n */\n position.x = nextOffset;\n\n /**\n * update the index with the nextIndex only if\n * the offset of the nextIndex is in the range of the maxOffset\n */\n if (slides[nextIndex].offsetLeft <= maxOffset) {\n index = nextIndex;\n }\n\n if (infinite && (nextIndex === slides.length - infinite ||\n nextIndex === slides.length - slides.length % infinite || nextIndex === 0)) {\n if (direction) {\n index = infinite;\n }\n\n if (!direction) {\n index = slides.length - (infinite * 2);\n }\n\n position.x = slides[index].offsetLeft * -1;\n\n transitionEndCallback = function () {\n translate(slides[index].offsetLeft * -1, 0, undefined);\n };\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n\n /**\n * update classes for next and prev arrows\n * based on user settings\n */\n if (prevCtrl && !infinite && !rewindPrev && nextIndex === 0) {\n prevCtrl.classList.add(classNameDisabledPrevCtrl);\n }\n\n if (nextCtrl && !infinite && !rewind && ((nextIndex + 1) === slides.length)) {\n nextCtrl.classList.add(classNameDisabledNextCtrl);\n }\n\n dispatchSliderEvent('after', 'slide', {\n currentSlide: index\n });\n }\n\n /**\n * public\n * setup function\n */\n function setup () {\n dispatchSliderEvent('before', 'init');\n\n prefixes = detectPrefixes();\n options = {...defaults, ...opts};\n\n const {\n classNameFrame,\n classNameSlideContainer,\n classNamePrevCtrl,\n classNameNextCtrl,\n classNameDisabledNextCtrl = 'disabled',\n classNameDisabledPrevCtrl = 'disabled',\n enableMouseEvents,\n classNameActiveSlide,\n initialIndex\n } = options;\n\n index = initialIndex;\n frame = slider.getElementsByClassName(classNameFrame)[0];\n slideContainer = frame.getElementsByClassName(classNameSlideContainer)[0];\n prevCtrl = slider.getElementsByClassName(classNamePrevCtrl)[0];\n nextCtrl = slider.getElementsByClassName(classNameNextCtrl)[0];\n\n position = {\n x: slideContainer.offsetLeft,\n y: slideContainer.offsetTop\n };\n\n if (options.infinite) {\n slides = setupInfinite(slice.call(slideContainer.children));\n } else {\n slides = slice.call(slideContainer.children);\n\n if (prevCtrl && !options.rewindPrev) {\n prevCtrl.classList.add(classNameDisabledPrevCtrl);\n }\n\n if (nextCtrl && (slides.length === 1) && !options.rewind) {\n nextCtrl.classList.add(classNameDisabledNextCtrl);\n }\n }\n\n reset();\n\n if (classNameActiveSlide) {\n setActiveElement(slides, index);\n }\n\n if (prevCtrl && nextCtrl) {\n prevCtrl.addEventListener('click', prev);\n nextCtrl.addEventListener('click', next);\n }\n\n frame.addEventListener('touchstart', onTouchstart, touchEventParams);\n\n if (enableMouseEvents) {\n frame.addEventListener('mousedown', onTouchstart);\n frame.addEventListener('click', onClick);\n }\n\n options.window.addEventListener('resize', onResize);\n\n dispatchSliderEvent('after', 'init');\n }\n\n /**\n * public\n * reset function: called on resize\n */\n function reset () {\n var {infinite, ease, rewindSpeed, rewindOnResize, classNameActiveSlide, initialIndex} = options;\n\n slidesWidth = elementWidth(slideContainer);\n frameWidth = elementWidth(frame);\n\n if (frameWidth === slidesWidth) {\n slidesWidth = slides.reduce(function (previousValue, slide) {\n return previousValue + elementWidth(slide);\n }, 0);\n }\n\n if (rewindOnResize) {\n index = initialIndex;\n } else {\n ease = null;\n rewindSpeed = 0;\n }\n\n if (infinite) {\n translate(slides[index + infinite].offsetLeft * -1, 0, null);\n\n index = index + infinite;\n position.x = slides[index].offsetLeft * -1;\n } else {\n translate(slides[index].offsetLeft * -1, rewindSpeed, ease);\n position.x = slides[index].offsetLeft * -1;\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n }\n\n /**\n * public\n * slideTo: called on clickhandler\n */\n function slideTo (index) {\n slide(index);\n }\n\n /**\n * public\n * returnIndex function: called on clickhandler\n */\n function returnIndex () {\n return index - options.infinite || 0;\n }\n\n /**\n * public\n * prev function: called on clickhandler\n */\n function prev () {\n slide(false, false);\n }\n\n /**\n * public\n * next function: called on clickhandler\n */\n function next () {\n slide(false, true);\n }\n\n /**\n * public\n * destroy function: called to gracefully destroy the lory instance\n */\n function destroy () {\n dispatchSliderEvent('before', 'destroy');\n\n // remove event listeners\n frame.removeEventListener(prefixes.transitionEnd, onTransitionEnd);\n frame.removeEventListener('touchstart', onTouchstart, touchEventParams);\n frame.removeEventListener('touchmove', onTouchmove, touchEventParams);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mousedown', onTouchstart);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n frame.removeEventListener('click', onClick);\n\n options.window.removeEventListener('resize', onResize);\n\n if (prevCtrl) {\n prevCtrl.removeEventListener('click', prev);\n }\n\n if (nextCtrl) {\n nextCtrl.removeEventListener('click', next);\n }\n\n // remove cloned slides if infinite is set\n if (options.infinite) {\n Array.apply(null, Array(options.infinite)).forEach(function () {\n slideContainer.removeChild(slideContainer.firstChild);\n slideContainer.removeChild(slideContainer.lastChild);\n });\n }\n\n dispatchSliderEvent('after', 'destroy');\n }\n\n // event handling\n\n let touchOffset;\n let delta;\n let isScrolling;\n\n function onTransitionEnd () {\n if (transitionEndCallback) {\n transitionEndCallback();\n\n transitionEndCallback = undefined;\n }\n }\n\n function onTouchstart (event) {\n const {enableMouseEvents} = options;\n const touches = event.touches ? event.touches[0] : event;\n\n if (enableMouseEvents) {\n frame.addEventListener('mousemove', onTouchmove);\n frame.addEventListener('mouseup', onTouchend);\n frame.addEventListener('mouseleave', onTouchend);\n }\n\n frame.addEventListener('touchmove', onTouchmove, touchEventParams);\n frame.addEventListener('touchend', onTouchend);\n\n const {pageX, pageY} = touches;\n\n touchOffset = {\n x: pageX,\n y: pageY,\n time: Date.now()\n };\n\n isScrolling = undefined;\n\n delta = {};\n\n dispatchSliderEvent('on', 'touchstart', {\n event\n });\n }\n\n function onTouchmove (event) {\n const touches = event.touches ? event.touches[0] : event;\n const {pageX, pageY} = touches;\n\n delta = {\n x: pageX - touchOffset.x,\n y: pageY - touchOffset.y\n };\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(delta.x) < Math.abs(delta.y));\n }\n\n if (!isScrolling && touchOffset) {\n translate(position.x + delta.x, 0, null);\n }\n\n // may be\n dispatchSliderEvent('on', 'touchmove', {\n event\n });\n }\n\n function onTouchend (event) {\n /**\n * time between touchstart and touchend in milliseconds\n * @duration {number}\n */\n const duration = touchOffset ? Date.now() - touchOffset.time : undefined;\n\n /**\n * is valid if:\n *\n * -> swipe attempt time is over 300 ms\n * and\n * -> swipe distance is greater than 25px\n * or\n * -> swipe distance is more then a third of the swipe area\n *\n * @isValidSlide {Boolean}\n */\n const isValid = Number(duration) < 300 &&\n Math.abs(delta.x) > 25 ||\n Math.abs(delta.x) > frameWidth / 3;\n\n /**\n * is out of bounds if:\n *\n * -> index is 0 and delta x is greater than 0\n * or\n * -> index is the last slide and delta is smaller than 0\n *\n * @isOutOfBounds {Boolean}\n */\n const isOutOfBounds = !index && delta.x > 0 ||\n index === slides.length - 1 && delta.x < 0;\n\n const direction = delta.x < 0;\n\n if (!isScrolling) {\n if (isValid && !isOutOfBounds) {\n slide(false, direction);\n } else {\n translate(position.x, options.snapBackSpeed);\n }\n }\n\n touchOffset = undefined;\n\n /**\n * remove eventlisteners after swipe attempt\n */\n frame.removeEventListener('touchmove', onTouchmove);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n\n dispatchSliderEvent('on', 'touchend', {\n event\n });\n }\n\n function onClick (event) {\n if (delta.x) {\n event.preventDefault();\n }\n }\n\n function onResize (event) {\n if (frameWidth !== elementWidth(frame)) {\n reset();\n\n dispatchSliderEvent('on', 'resize', {\n event\n });\n }\n }\n\n // trigger initial setup\n setup();\n\n // expose public api\n return {\n setup,\n reset,\n slideTo,\n returnIndex,\n prev,\n next,\n destroy\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/lory.js","/**\n * Detecting prefixes for saving time and bytes\n */\nexport default function detectPrefixes () {\n let transform;\n let transition;\n let transitionEnd;\n\n (function () {\n let el = document.createElement('_');\n let style = el.style;\n\n let prop;\n\n if (style[prop = 'webkitTransition'] === '') {\n transitionEnd = 'webkitTransitionEnd';\n transition = prop;\n }\n\n if (style[prop = 'transition'] === '') {\n transitionEnd = 'transitionend';\n transition = prop;\n }\n\n if (style[prop = 'webkitTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'msTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'transform'] === '') {\n transform = prop;\n }\n\n document.body.insertBefore(el, null);\n style[transform] = 'translateX(0)';\n document.body.removeChild(el);\n }());\n\n return {\n transform,\n transition,\n transitionEnd\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/detect-prefixes.js","export default function detectSupportsPassive () {\n let supportsPassive = false;\n\n try {\n let opts = Object.defineProperty({}, 'passive', {\n get () {\n supportsPassive = true;\n }\n });\n\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n } catch (e) {}\n\n return supportsPassive;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/detect-supportsPassive.js","import CustomEvent from 'custom-event';\n\n/**\n * dispatch custom events\n *\n * @param {element} el slideshow element\n * @param {string} type custom event name\n * @param {object} detail custom detail information\n */\nexport default function dispatchEvent (target, type, detail) {\n let event = new CustomEvent(\n type,\n {\n bubbles: true,\n cancelable: true,\n detail: detail\n }\n );\n\n target.dispatchEvent(event);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/dispatch-event.js","\nvar NativeCustomEvent = global.CustomEvent;\n\nfunction useNative () {\n try {\n var p = new NativeCustomEvent('cat', { detail: { foo: 'bar' } });\n return 'cat' === p.type && 'bar' === p.detail.foo;\n } catch (e) {\n }\n return false;\n}\n\n/**\n * Cross-browser `CustomEvent` constructor.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.CustomEvent\n *\n * @public\n */\n\nmodule.exports = useNative() ? NativeCustomEvent :\n\n// IE >= 9\n'undefined' !== typeof document && 'function' === typeof document.createEvent ? function CustomEvent (type, params) {\n var e = document.createEvent('CustomEvent');\n if (params) {\n e.initCustomEvent(type, params.bubbles, params.cancelable, params.detail);\n } else {\n e.initCustomEvent(type, false, false, void 0);\n }\n return e;\n} :\n\n// IE <= 8\nfunction CustomEvent (type, params) {\n var e = document.createEventObject();\n e.type = type;\n if (params) {\n e.bubbles = Boolean(params.bubbles);\n e.cancelable = Boolean(params.cancelable);\n e.detail = params.detail;\n } else {\n e.bubbles = false;\n e.cancelable = false;\n e.detail = void 0;\n }\n return e;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/custom-event/index.js\n// module id = 4\n// module chunks = 0 1","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 5\n// module chunks = 0 1","export default {\n /**\n * slides scrolled at once\n * @slidesToScroll {Number}\n */\n slidesToScroll: 1,\n\n /**\n * time in milliseconds for the animation of a valid slide attempt\n * @slideSpeed {Number}\n */\n slideSpeed: 300,\n\n /**\n * time in milliseconds for the animation of the rewind after the last slide\n * @rewindSpeed {Number}\n */\n rewindSpeed: 600,\n\n /**\n * time for the snapBack of the slider if the slide attempt was not valid\n * @snapBackSpeed {Number}\n */\n snapBackSpeed: 200,\n\n /**\n * Basic easing functions: https://developer.mozilla.org/de/docs/Web/CSS/transition-timing-function\n * cubic bezier easing functions: http://easings.net/de\n * @ease {String}\n */\n ease: 'ease',\n\n /**\n * if slider reached the last slide, with next click the slider goes back to the startindex.\n * use infinite or rewind, not both\n * @rewind {Boolean}\n */\n rewind: false,\n\n /**\n * number of visible slides or false\n * use infinite or rewind, not both\n * @infinite {number}\n */\n infinite: false,\n\n /**\n * the slide index to show when the slider is initialized.\n * @initialIndex {number}\n */\n initialIndex: 0,\n\n /**\n * class name for slider frame\n * @classNameFrame {string}\n */\n classNameFrame: 'js_frame',\n\n /**\n * class name for slides container\n * @classNameSlideContainer {string}\n */\n classNameSlideContainer: 'js_slides',\n\n /**\n * class name for slider prev control\n * @classNamePrevCtrl {string}\n */\n classNamePrevCtrl: 'js_prev',\n\n /**\n * class name for slider next control\n * @classNameNextCtrl {string}\n */\n classNameNextCtrl: 'js_next',\n\n /**\n * class name for current active slide\n * if emptyString then no class is set\n * @classNameActiveSlide {string}\n */\n classNameActiveSlide: 'active',\n\n /**\n * enables mouse events for swiping on desktop devices\n * @enableMouseEvents {boolean}\n */\n enableMouseEvents: false,\n\n /**\n * window instance\n * @window {object}\n */\n window: typeof window !== 'undefined' ? window : null,\n\n /**\n * If false, slides lory to the first slide on window resize.\n * @rewindOnResize {boolean}\n */\n rewindOnResize: true\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/defaults.js","/* globals jQuery */\nimport {lory} from './lory.js';\n\nfunction init ($) {\n $.fn.lory = function (options) {\n return this.each(function () {\n var instanceOptions;\n\n if (!$.data(this, 'lory')) {\n instanceOptions = $.extend({}, options, $(this).data());\n $.data(this, 'lory', lory(this, instanceOptions));\n }\n });\n };\n};\n\nif (typeof (jQuery) !== 'undefined') {\n init(jQuery);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/jquery.lory.js"],"sourceRoot":""} \ No newline at end of file +<<<<<<< refs/remotes/upstream/master +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///jquery.lory.min.js","webpack:///webpack/bootstrap 85bdd04943e5c295f168","webpack:///./src/lory.js","webpack:///./src/utils/detect-prefixes.js","webpack:///./src/utils/detect-supportsPassive.js","webpack:///./src/utils/dispatch-event.js","webpack:///./node_modules/custom-event/index.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/defaults.js","webpack:///./src/jquery.lory.js"],"names":["root","factory","exports","module","define","amd","a","i","self","this","modules","__webpack_require__","moduleId","installedModules","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","_interopRequireDefault","obj","default","lory","slider","opts","setActiveElement","slides","currentIndex","_options","options","classNameActiveSlide","forEach","element","index","classList","contains","remove","add","setupInfinite","slideArray","_options2","infinite","front","slice","back","length","cloned","cloneNode","slideContainer","appendChild","reverse","insertBefore","firstChild","addEventListener","prefixes","transitionEnd","onTransitionEnd","children","dispatchSliderEvent","phase","type","detail","_dispatchEvent2","translate","to","duration","ease","style","transition","transform","elementWidth","getBoundingClientRect","width","offsetWidth","slide","nextIndex","direction","_options3","slideSpeed","slidesToScroll","rewind","rewindPrev","rewindSpeed","_options3$classNameDi","classNameDisabledNextCtrl","undefined","_options3$classNameDi2","classNameDisabledPrevCtrl","nextSlide","maxOffset","Math","round","slidesWidth","frameWidth","prevCtrl","nextCtrl","min","max","abs","position","x","nextOffset","offsetLeft","transitionEndCallback","currentSlide","setup","_detectPrefixes2","_options4","classNameFrame","classNameSlideContainer","classNamePrevCtrl","classNameNextCtrl","_options4$classNameDi","_options4$classNameDi2","enableMouseEvents","initialIndex","frame","getElementsByClassName","y","offsetTop","reset","prev","next","onTouchstart","touchEventParams","onClick","window","onResize","_options5","rewindOnResize","reduce","previousValue","slideTo","returnIndex","destroy","removeEventListener","onTouchmove","onTouchend","Array","apply","removeChild","lastChild","event","_options6","touches","pageX","pageY","touchOffset","time","Date","now","isScrolling","delta","isValid","Number","isOutOfBounds","snapBackSpeed","preventDefault","_detectSupportsPassive2","passive","jQuery","value","_extends","assign","target","arguments","source","key","_detectPrefixes","_detectSupportsPassive","_dispatchEvent","_defaults","_defaults2","detectPrefixes","el","document","createElement","prop","body","detectSupportsPassive","supportsPassive","e","dispatchEvent","_customEvent2","bubbles","cancelable","_customEvent","global","NativeCustomEvent","CustomEvent","foo","createEvent","params","initCustomEvent","createEventObject","Boolean","g","Function","eval","_lory","$","fn","each","instanceOptions","data","extend"],"mappings":"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","file":"jquery.lory.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\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 = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 8);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* globals jQuery */\n\nexports.lory = lory;\n\nvar _detectPrefixes = __webpack_require__(1);\n\nvar _detectPrefixes2 = _interopRequireDefault(_detectPrefixes);\n\nvar _detectSupportsPassive = __webpack_require__(2);\n\nvar _detectSupportsPassive2 = _interopRequireDefault(_detectSupportsPassive);\n\nvar _dispatchEvent = __webpack_require__(3);\n\nvar _dispatchEvent2 = _interopRequireDefault(_dispatchEvent);\n\nvar _defaults = __webpack_require__(6);\n\nvar _defaults2 = _interopRequireDefault(_defaults);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar slice = Array.prototype.slice;\n\nfunction lory(slider, opts) {\n var position = void 0;\n var slidesWidth = void 0;\n var frameWidth = void 0;\n var slides = void 0;\n\n /**\n * slider DOM elements\n */\n var frame = void 0;\n var slideContainer = void 0;\n var prevCtrl = void 0;\n var nextCtrl = void 0;\n var prefixes = void 0;\n var transitionEndCallback = void 0;\n\n var index = 0;\n var options = {};\n var touchEventParams = (0, _detectSupportsPassive2.default)() ? { passive: true } : false;\n\n /**\n * if object is jQuery convert to native DOM element\n */\n if (typeof jQuery !== 'undefined' && slider instanceof jQuery) {\n slider = slider[0];\n }\n\n /**\n * private\n * set active class to element which is the current slide\n */\n function setActiveElement(slides, currentIndex) {\n var _options = options,\n classNameActiveSlide = _options.classNameActiveSlide;\n\n\n slides.forEach(function (element, index) {\n if (element.classList.contains(classNameActiveSlide)) {\n element.classList.remove(classNameActiveSlide);\n }\n });\n\n slides[currentIndex].classList.add(classNameActiveSlide);\n }\n\n /**\n * private\n * setupInfinite: function to setup if infinite is set\n *\n * @param {array} slideArray\n * @return {array} array of updated slideContainer elements\n */\n function setupInfinite(slideArray) {\n var _options2 = options,\n infinite = _options2.infinite;\n\n\n var front = slideArray.slice(0, infinite);\n var back = slideArray.slice(slideArray.length - infinite, slideArray.length);\n\n front.forEach(function (element) {\n var cloned = element.cloneNode(true);\n\n slideContainer.appendChild(cloned);\n });\n\n back.reverse().forEach(function (element) {\n var cloned = element.cloneNode(true);\n\n slideContainer.insertBefore(cloned, slideContainer.firstChild);\n });\n\n slideContainer.addEventListener(prefixes.transitionEnd, onTransitionEnd);\n\n return slice.call(slideContainer.children);\n }\n\n /**\n * [dispatchSliderEvent description]\n * @return {[type]} [description]\n */\n function dispatchSliderEvent(phase, type, detail) {\n (0, _dispatchEvent2.default)(slider, phase + '.lory.' + type, detail);\n }\n\n /**\n * translates to a given position in a given time in milliseconds\n *\n * @to {number} number in pixels where to translate to\n * @duration {number} time in milliseconds for the transistion\n * @ease {string} easing css property\n */\n function translate(to, duration, ease) {\n var style = slideContainer && slideContainer.style;\n\n if (style) {\n style[prefixes.transition + 'TimingFunction'] = ease;\n style[prefixes.transition + 'Duration'] = duration + 'ms';\n style[prefixes.transform] = 'translateX(' + to + 'px)';\n }\n }\n\n /**\n * returns an element's width\n */\n function elementWidth(element) {\n return element.getBoundingClientRect().width || element.offsetWidth;\n }\n\n /**\n * slidefunction called by prev, next & touchend\n *\n * determine nextIndex and slide to next postion\n * under restrictions of the defined options\n *\n * @direction {boolean}\n */\n function slide(nextIndex, direction) {\n var _options3 = options,\n slideSpeed = _options3.slideSpeed,\n slidesToScroll = _options3.slidesToScroll,\n infinite = _options3.infinite,\n rewind = _options3.rewind,\n rewindPrev = _options3.rewindPrev,\n rewindSpeed = _options3.rewindSpeed,\n ease = _options3.ease,\n classNameActiveSlide = _options3.classNameActiveSlide,\n _options3$classNameDi = _options3.classNameDisabledNextCtrl,\n classNameDisabledNextCtrl = _options3$classNameDi === undefined ? 'disabled' : _options3$classNameDi,\n _options3$classNameDi2 = _options3.classNameDisabledPrevCtrl,\n classNameDisabledPrevCtrl = _options3$classNameDi2 === undefined ? 'disabled' : _options3$classNameDi2;\n\n\n var duration = slideSpeed;\n\n var nextSlide = direction ? index + 1 : index - 1;\n var maxOffset = Math.round(slidesWidth - frameWidth);\n\n dispatchSliderEvent('before', 'slide', {\n index: index,\n nextSlide: nextSlide\n });\n\n /**\n * Reset control classes\n */\n if (prevCtrl) {\n prevCtrl.classList.remove(classNameDisabledPrevCtrl);\n }\n if (nextCtrl) {\n nextCtrl.classList.remove(classNameDisabledNextCtrl);\n }\n\n if (typeof nextIndex !== 'number') {\n if (direction) {\n if (infinite && index + infinite * 2 !== slides.length) {\n nextIndex = index + (infinite - index % infinite);\n } else {\n nextIndex = index + slidesToScroll;\n }\n } else {\n if (infinite && index % infinite !== 0) {\n nextIndex = index - index % infinite;\n } else {\n nextIndex = index - slidesToScroll;\n }\n }\n }\n\n nextIndex = Math.min(Math.max(nextIndex, 0), slides.length - 1);\n\n if (infinite && direction === undefined) {\n nextIndex += infinite;\n }\n\n if (rewindPrev && Math.abs(position.x) === 0 && direction === false) {\n nextIndex = slides.length - 1;\n duration = rewindSpeed;\n }\n\n var nextOffset = Math.min(Math.max(slides[nextIndex].offsetLeft * -1, maxOffset * -1), 0);\n\n if (rewind && Math.abs(position.x) === maxOffset && direction) {\n nextOffset = 0;\n nextIndex = 0;\n duration = rewindSpeed;\n }\n\n /**\n * translate to the nextOffset by a defined duration and ease function\n */\n translate(nextOffset, duration, ease);\n\n /**\n * update the position with the next position\n */\n position.x = nextOffset;\n\n /**\n * update the index with the nextIndex only if\n * the offset of the nextIndex is in the range of the maxOffset\n */\n if (slides[nextIndex].offsetLeft <= maxOffset) {\n index = nextIndex;\n }\n\n if (infinite && (nextIndex === slides.length - infinite || nextIndex === slides.length - slides.length % infinite || nextIndex === 0)) {\n if (direction) {\n index = infinite;\n }\n\n if (!direction) {\n index = slides.length - infinite * 2;\n }\n\n position.x = slides[index].offsetLeft * -1;\n\n transitionEndCallback = function transitionEndCallback() {\n translate(slides[index].offsetLeft * -1, 0, undefined);\n };\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n\n /**\n * update classes for next and prev arrows\n * based on user settings\n */\n if (prevCtrl && !infinite && !rewindPrev && nextIndex === 0) {\n prevCtrl.classList.add(classNameDisabledPrevCtrl);\n }\n\n if (nextCtrl && !infinite && !rewind && nextIndex + 1 === slides.length) {\n nextCtrl.classList.add(classNameDisabledNextCtrl);\n }\n\n dispatchSliderEvent('after', 'slide', {\n currentSlide: index\n });\n }\n\n /**\n * public\n * setup function\n */\n function setup() {\n dispatchSliderEvent('before', 'init');\n\n prefixes = (0, _detectPrefixes2.default)();\n options = _extends({}, _defaults2.default, opts);\n\n var _options4 = options,\n classNameFrame = _options4.classNameFrame,\n classNameSlideContainer = _options4.classNameSlideContainer,\n classNamePrevCtrl = _options4.classNamePrevCtrl,\n classNameNextCtrl = _options4.classNameNextCtrl,\n _options4$classNameDi = _options4.classNameDisabledNextCtrl,\n classNameDisabledNextCtrl = _options4$classNameDi === undefined ? 'disabled' : _options4$classNameDi,\n _options4$classNameDi2 = _options4.classNameDisabledPrevCtrl,\n classNameDisabledPrevCtrl = _options4$classNameDi2 === undefined ? 'disabled' : _options4$classNameDi2,\n enableMouseEvents = _options4.enableMouseEvents,\n classNameActiveSlide = _options4.classNameActiveSlide,\n initialIndex = _options4.initialIndex;\n\n\n index = initialIndex;\n frame = slider.getElementsByClassName(classNameFrame)[0];\n slideContainer = frame.getElementsByClassName(classNameSlideContainer)[0];\n prevCtrl = slider.getElementsByClassName(classNamePrevCtrl)[0];\n nextCtrl = slider.getElementsByClassName(classNameNextCtrl)[0];\n\n position = {\n x: slideContainer.offsetLeft,\n y: slideContainer.offsetTop\n };\n\n if (options.infinite) {\n slides = setupInfinite(slice.call(slideContainer.children));\n } else {\n slides = slice.call(slideContainer.children);\n\n if (prevCtrl && !options.rewindPrev) {\n prevCtrl.classList.add(classNameDisabledPrevCtrl);\n }\n\n if (nextCtrl && slides.length === 1 && !options.rewind) {\n nextCtrl.classList.add(classNameDisabledNextCtrl);\n }\n }\n\n reset();\n\n if (classNameActiveSlide) {\n setActiveElement(slides, index);\n }\n\n if (prevCtrl && nextCtrl) {\n prevCtrl.addEventListener('click', prev);\n nextCtrl.addEventListener('click', next);\n }\n\n frame.addEventListener('touchstart', onTouchstart, touchEventParams);\n\n if (enableMouseEvents) {\n frame.addEventListener('mousedown', onTouchstart);\n frame.addEventListener('click', onClick);\n }\n\n options.window.addEventListener('resize', onResize);\n\n dispatchSliderEvent('after', 'init');\n }\n\n /**\n * public\n * reset function: called on resize\n */\n function reset() {\n var _options5 = options,\n infinite = _options5.infinite,\n ease = _options5.ease,\n rewindSpeed = _options5.rewindSpeed,\n rewindOnResize = _options5.rewindOnResize,\n classNameActiveSlide = _options5.classNameActiveSlide,\n initialIndex = _options5.initialIndex;\n\n\n slidesWidth = elementWidth(slideContainer);\n frameWidth = elementWidth(frame);\n\n if (frameWidth === slidesWidth) {\n slidesWidth = slides.reduce(function (previousValue, slide) {\n return previousValue + elementWidth(slide);\n }, 0);\n }\n\n if (rewindOnResize) {\n index = initialIndex;\n } else {\n ease = null;\n rewindSpeed = 0;\n }\n\n if (infinite) {\n translate(slides[index + infinite].offsetLeft * -1, 0, null);\n\n index = index + infinite;\n position.x = slides[index].offsetLeft * -1;\n } else {\n translate(slides[index].offsetLeft * -1, rewindSpeed, ease);\n position.x = slides[index].offsetLeft * -1;\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n }\n\n /**\n * public\n * slideTo: called on clickhandler\n */\n function slideTo(index) {\n slide(index);\n }\n\n /**\n * public\n * returnIndex function: called on clickhandler\n */\n function returnIndex() {\n return index - options.infinite || 0;\n }\n\n /**\n * public\n * prev function: called on clickhandler\n */\n function prev() {\n slide(false, false);\n }\n\n /**\n * public\n * next function: called on clickhandler\n */\n function next() {\n slide(false, true);\n }\n\n /**\n * public\n * destroy function: called to gracefully destroy the lory instance\n */\n function destroy() {\n dispatchSliderEvent('before', 'destroy');\n\n // remove event listeners\n frame.removeEventListener(prefixes.transitionEnd, onTransitionEnd);\n frame.removeEventListener('touchstart', onTouchstart, touchEventParams);\n frame.removeEventListener('touchmove', onTouchmove, touchEventParams);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mousedown', onTouchstart);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n frame.removeEventListener('click', onClick);\n\n options.window.removeEventListener('resize', onResize);\n\n if (prevCtrl) {\n prevCtrl.removeEventListener('click', prev);\n }\n\n if (nextCtrl) {\n nextCtrl.removeEventListener('click', next);\n }\n\n // remove cloned slides if infinite is set\n if (options.infinite) {\n Array.apply(null, Array(options.infinite)).forEach(function () {\n slideContainer.removeChild(slideContainer.firstChild);\n slideContainer.removeChild(slideContainer.lastChild);\n });\n }\n\n dispatchSliderEvent('after', 'destroy');\n }\n\n // event handling\n\n var touchOffset = void 0;\n var delta = void 0;\n var isScrolling = void 0;\n\n function onTransitionEnd() {\n if (transitionEndCallback) {\n transitionEndCallback();\n\n transitionEndCallback = undefined;\n }\n }\n\n function onTouchstart(event) {\n var _options6 = options,\n enableMouseEvents = _options6.enableMouseEvents;\n\n var touches = event.touches ? event.touches[0] : event;\n\n if (enableMouseEvents) {\n frame.addEventListener('mousemove', onTouchmove);\n frame.addEventListener('mouseup', onTouchend);\n frame.addEventListener('mouseleave', onTouchend);\n }\n\n frame.addEventListener('touchmove', onTouchmove, touchEventParams);\n frame.addEventListener('touchend', onTouchend);\n\n var pageX = touches.pageX,\n pageY = touches.pageY;\n\n\n touchOffset = {\n x: pageX,\n y: pageY,\n time: Date.now()\n };\n\n isScrolling = undefined;\n\n delta = {};\n\n dispatchSliderEvent('on', 'touchstart', {\n event: event\n });\n }\n\n function onTouchmove(event) {\n var touches = event.touches ? event.touches[0] : event;\n var pageX = touches.pageX,\n pageY = touches.pageY;\n\n\n delta = {\n x: pageX - touchOffset.x,\n y: pageY - touchOffset.y\n };\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(delta.x) < Math.abs(delta.y));\n }\n\n if (!isScrolling && touchOffset) {\n translate(position.x + delta.x, 0, null);\n }\n\n // may be\n dispatchSliderEvent('on', 'touchmove', {\n event: event\n });\n }\n\n function onTouchend(event) {\n /**\n * time between touchstart and touchend in milliseconds\n * @duration {number}\n */\n var duration = touchOffset ? Date.now() - touchOffset.time : undefined;\n\n /**\n * is valid if:\n *\n * -> swipe attempt time is over 300 ms\n * and\n * -> swipe distance is greater than 25px\n * or\n * -> swipe distance is more then a third of the swipe area\n *\n * @isValidSlide {Boolean}\n */\n var isValid = Number(duration) < 300 && Math.abs(delta.x) > 25 || Math.abs(delta.x) > frameWidth / 3;\n\n /**\n * is out of bounds if:\n *\n * -> index is 0 and delta x is greater than 0\n * or\n * -> index is the last slide and delta is smaller than 0\n *\n * @isOutOfBounds {Boolean}\n */\n var isOutOfBounds = !index && delta.x > 0 || index === slides.length - 1 && delta.x < 0;\n\n var direction = delta.x < 0;\n\n if (!isScrolling) {\n if (isValid && !isOutOfBounds) {\n slide(false, direction);\n } else {\n translate(position.x, options.snapBackSpeed);\n }\n }\n\n touchOffset = undefined;\n\n /**\n * remove eventlisteners after swipe attempt\n */\n frame.removeEventListener('touchmove', onTouchmove);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n\n dispatchSliderEvent('on', 'touchend', {\n event: event\n });\n }\n\n function onClick(event) {\n if (delta.x) {\n event.preventDefault();\n }\n }\n\n function onResize(event) {\n if (frameWidth !== elementWidth(frame)) {\n reset();\n\n dispatchSliderEvent('on', 'resize', {\n event: event\n });\n }\n }\n\n // trigger initial setup\n setup();\n\n // expose public api\n return {\n setup: setup,\n reset: reset,\n slideTo: slideTo,\n returnIndex: returnIndex,\n prev: prev,\n next: next,\n destroy: destroy\n };\n}\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = detectPrefixes;\n/**\n * Detecting prefixes for saving time and bytes\n */\nfunction detectPrefixes() {\n var transform = void 0;\n var transition = void 0;\n var transitionEnd = void 0;\n\n (function () {\n var el = document.createElement('_');\n var style = el.style;\n\n var prop = void 0;\n\n if (style[prop = 'webkitTransition'] === '') {\n transitionEnd = 'webkitTransitionEnd';\n transition = prop;\n }\n\n if (style[prop = 'transition'] === '') {\n transitionEnd = 'transitionend';\n transition = prop;\n }\n\n if (style[prop = 'webkitTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'msTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'transform'] === '') {\n transform = prop;\n }\n\n document.body.insertBefore(el, null);\n style[transform] = 'translateX(0)';\n document.body.removeChild(el);\n })();\n\n return {\n transform: transform,\n transition: transition,\n transitionEnd: transitionEnd\n };\n}\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = detectSupportsPassive;\nfunction detectSupportsPassive() {\n var supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n } catch (e) {}\n\n return supportsPassive;\n}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = dispatchEvent;\n\nvar _customEvent = __webpack_require__(4);\n\nvar _customEvent2 = _interopRequireDefault(_customEvent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * dispatch custom events\n *\n * @param {element} el slideshow element\n * @param {string} type custom event name\n * @param {object} detail custom detail information\n */\nfunction dispatchEvent(target, type, detail) {\n var event = new _customEvent2.default(type, {\n bubbles: true,\n cancelable: true,\n detail: detail\n });\n\n target.dispatchEvent(event);\n}\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {\nvar NativeCustomEvent = global.CustomEvent;\n\nfunction useNative () {\n try {\n var p = new NativeCustomEvent('cat', { detail: { foo: 'bar' } });\n return 'cat' === p.type && 'bar' === p.detail.foo;\n } catch (e) {\n }\n return false;\n}\n\n/**\n * Cross-browser `CustomEvent` constructor.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.CustomEvent\n *\n * @public\n */\n\nmodule.exports = useNative() ? NativeCustomEvent :\n\n// IE >= 9\n'undefined' !== typeof document && 'function' === typeof document.createEvent ? function CustomEvent (type, params) {\n var e = document.createEvent('CustomEvent');\n if (params) {\n e.initCustomEvent(type, params.bubbles, params.cancelable, params.detail);\n } else {\n e.initCustomEvent(type, false, false, void 0);\n }\n return e;\n} :\n\n// IE <= 8\nfunction CustomEvent (type, params) {\n var e = document.createEventObject();\n e.type = type;\n if (params) {\n e.bubbles = Boolean(params.bubbles);\n e.cancelable = Boolean(params.cancelable);\n e.detail = params.detail;\n } else {\n e.bubbles = false;\n e.cancelable = false;\n e.detail = void 0;\n }\n return e;\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5)))\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n /**\n * slides scrolled at once\n * @slidesToScroll {Number}\n */\n slidesToScroll: 1,\n\n /**\n * time in milliseconds for the animation of a valid slide attempt\n * @slideSpeed {Number}\n */\n slideSpeed: 300,\n\n /**\n * time in milliseconds for the animation of the rewind after the last slide\n * @rewindSpeed {Number}\n */\n rewindSpeed: 600,\n\n /**\n * time for the snapBack of the slider if the slide attempt was not valid\n * @snapBackSpeed {Number}\n */\n snapBackSpeed: 200,\n\n /**\n * Basic easing functions: https://developer.mozilla.org/de/docs/Web/CSS/transition-timing-function\n * cubic bezier easing functions: http://easings.net/de\n * @ease {String}\n */\n ease: 'ease',\n\n /**\n * if slider reached the last slide, with next click the slider goes back to the startindex.\n * use infinite or rewind, not both\n * @rewind {Boolean}\n */\n rewind: false,\n\n /**\n * number of visible slides or false\n * use infinite or rewind, not both\n * @infinite {number}\n */\n infinite: false,\n\n /**\n * the slide index to show when the slider is initialized.\n * @initialIndex {number}\n */\n initialIndex: 0,\n\n /**\n * class name for slider frame\n * @classNameFrame {string}\n */\n classNameFrame: 'js_frame',\n\n /**\n * class name for slides container\n * @classNameSlideContainer {string}\n */\n classNameSlideContainer: 'js_slides',\n\n /**\n * class name for slider prev control\n * @classNamePrevCtrl {string}\n */\n classNamePrevCtrl: 'js_prev',\n\n /**\n * class name for slider next control\n * @classNameNextCtrl {string}\n */\n classNameNextCtrl: 'js_next',\n\n /**\n * class name for current active slide\n * if emptyString then no class is set\n * @classNameActiveSlide {string}\n */\n classNameActiveSlide: 'active',\n\n /**\n * enables mouse events for swiping on desktop devices\n * @enableMouseEvents {boolean}\n */\n enableMouseEvents: false,\n\n /**\n * window instance\n * @window {object}\n */\n window: typeof window !== 'undefined' ? window : null,\n\n /**\n * If false, slides lory to the first slide on window resize.\n * @rewindOnResize {boolean}\n */\n rewindOnResize: true\n};\n\n/***/ }),\n/* 7 */,\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _lory = __webpack_require__(0);\n\nfunction init($) {\n $.fn.lory = function (options) {\n return this.each(function () {\n var instanceOptions;\n\n if (!$.data(this, 'lory')) {\n instanceOptions = $.extend({}, options, $(this).data());\n $.data(this, 'lory', (0, _lory.lory)(this, instanceOptions));\n }\n });\n };\n} /* globals jQuery */\n;\n\nif (typeof jQuery !== 'undefined') {\n init(jQuery);\n}\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// jquery.lory.min.js"," \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, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\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 = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 8);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 85bdd04943e5c295f168","/* globals jQuery */\n\nimport detectPrefixes from './utils/detect-prefixes.js';\nimport supportsPassive from './utils/detect-supportsPassive';\nimport dispatchEvent from './utils/dispatch-event.js';\nimport defaults from './defaults.js';\n\nconst slice = Array.prototype.slice;\n\nexport function lory (slider, opts) {\n let position;\n let slidesWidth;\n let frameWidth;\n let slides;\n\n /**\n * slider DOM elements\n */\n let frame;\n let slideContainer;\n let prevCtrl;\n let nextCtrl;\n let prefixes;\n let transitionEndCallback;\n\n let index = 0;\n let options = {};\n let touchEventParams = supportsPassive() ? { passive: true } : false;\n\n /**\n * if object is jQuery convert to native DOM element\n */\n if (typeof jQuery !== 'undefined' && slider instanceof jQuery) {\n slider = slider[0];\n }\n\n /**\n * private\n * set active class to element which is the current slide\n */\n function setActiveElement (slides, currentIndex) {\n const {classNameActiveSlide} = options;\n\n slides.forEach((element, index) => {\n if (element.classList.contains(classNameActiveSlide)) {\n element.classList.remove(classNameActiveSlide);\n }\n });\n\n slides[currentIndex].classList.add(classNameActiveSlide);\n }\n\n /**\n * private\n * setupInfinite: function to setup if infinite is set\n *\n * @param {array} slideArray\n * @return {array} array of updated slideContainer elements\n */\n function setupInfinite (slideArray) {\n const {infinite} = options;\n\n const front = slideArray.slice(0, infinite);\n const back = slideArray.slice(slideArray.length - infinite, slideArray.length);\n\n front.forEach(function (element) {\n const cloned = element.cloneNode(true);\n\n slideContainer.appendChild(cloned);\n });\n\n back.reverse()\n .forEach(function (element) {\n const cloned = element.cloneNode(true);\n\n slideContainer.insertBefore(cloned, slideContainer.firstChild);\n });\n\n slideContainer.addEventListener(prefixes.transitionEnd, onTransitionEnd);\n\n return slice.call(slideContainer.children);\n }\n\n /**\n * [dispatchSliderEvent description]\n * @return {[type]} [description]\n */\n function dispatchSliderEvent (phase, type, detail) {\n dispatchEvent(slider, `${phase}.lory.${type}`, detail);\n }\n\n /**\n * translates to a given position in a given time in milliseconds\n *\n * @to {number} number in pixels where to translate to\n * @duration {number} time in milliseconds for the transistion\n * @ease {string} easing css property\n */\n function translate (to, duration, ease) {\n const style = slideContainer && slideContainer.style;\n\n if (style) {\n style[prefixes.transition + 'TimingFunction'] = ease;\n style[prefixes.transition + 'Duration'] = duration + 'ms';\n style[prefixes.transform] = 'translateX(' + to + 'px)';\n }\n }\n\n /**\n * returns an element's width\n */\n function elementWidth (element) {\n return element.getBoundingClientRect().width || element.offsetWidth;\n }\n\n /**\n * slidefunction called by prev, next & touchend\n *\n * determine nextIndex and slide to next postion\n * under restrictions of the defined options\n *\n * @direction {boolean}\n */\n function slide (nextIndex, direction) {\n const {\n slideSpeed,\n slidesToScroll,\n infinite,\n rewind,\n rewindPrev,\n rewindSpeed,\n ease,\n classNameActiveSlide,\n classNameDisabledNextCtrl = 'disabled',\n classNameDisabledPrevCtrl = 'disabled'\n } = options;\n\n let duration = slideSpeed;\n\n const nextSlide = direction ? index + 1 : index - 1;\n const maxOffset = Math.round(slidesWidth - frameWidth);\n\n dispatchSliderEvent('before', 'slide', {\n index,\n nextSlide\n });\n\n /**\n * Reset control classes\n */\n if (prevCtrl) {\n prevCtrl.classList.remove(classNameDisabledPrevCtrl);\n }\n if (nextCtrl) {\n nextCtrl.classList.remove(classNameDisabledNextCtrl);\n }\n\n if (typeof nextIndex !== 'number') {\n if (direction) {\n if (infinite && index + (infinite * 2) !== slides.length) {\n nextIndex = index + (infinite - index % infinite);\n } else {\n nextIndex = index + slidesToScroll;\n }\n } else {\n if (infinite && index % infinite !== 0) {\n nextIndex = index - index % infinite;\n } else {\n nextIndex = index - slidesToScroll;\n }\n }\n }\n\n nextIndex = Math.min(Math.max(nextIndex, 0), slides.length - 1);\n\n if (infinite && direction === undefined) {\n nextIndex += infinite;\n }\n\n if (rewindPrev && Math.abs(position.x) === 0 && direction === false) {\n nextIndex = slides.length - 1;\n duration = rewindSpeed;\n }\n\n let nextOffset = Math.min(Math.max(slides[nextIndex].offsetLeft * -1, maxOffset * -1), 0);\n\n if (rewind && Math.abs(position.x) === maxOffset && direction) {\n nextOffset = 0;\n nextIndex = 0;\n duration = rewindSpeed;\n }\n\n /**\n * translate to the nextOffset by a defined duration and ease function\n */\n translate(nextOffset, duration, ease);\n\n /**\n * update the position with the next position\n */\n position.x = nextOffset;\n\n /**\n * update the index with the nextIndex only if\n * the offset of the nextIndex is in the range of the maxOffset\n */\n if (slides[nextIndex].offsetLeft <= maxOffset) {\n index = nextIndex;\n }\n\n if (infinite && (nextIndex === slides.length - infinite ||\n nextIndex === slides.length - slides.length % infinite || nextIndex === 0)) {\n if (direction) {\n index = infinite;\n }\n\n if (!direction) {\n index = slides.length - (infinite * 2);\n }\n\n position.x = slides[index].offsetLeft * -1;\n\n transitionEndCallback = function () {\n translate(slides[index].offsetLeft * -1, 0, undefined);\n };\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n\n /**\n * update classes for next and prev arrows\n * based on user settings\n */\n if (prevCtrl && !infinite && !rewindPrev && nextIndex === 0) {\n prevCtrl.classList.add(classNameDisabledPrevCtrl);\n }\n\n if (nextCtrl && !infinite && !rewind && ((nextIndex + 1) === slides.length)) {\n nextCtrl.classList.add(classNameDisabledNextCtrl);\n }\n\n dispatchSliderEvent('after', 'slide', {\n currentSlide: index\n });\n }\n\n /**\n * public\n * setup function\n */\n function setup () {\n dispatchSliderEvent('before', 'init');\n\n prefixes = detectPrefixes();\n options = {...defaults, ...opts};\n\n const {\n classNameFrame,\n classNameSlideContainer,\n classNamePrevCtrl,\n classNameNextCtrl,\n classNameDisabledNextCtrl = 'disabled',\n classNameDisabledPrevCtrl = 'disabled',\n enableMouseEvents,\n classNameActiveSlide,\n initialIndex\n } = options;\n\n index = initialIndex;\n frame = slider.getElementsByClassName(classNameFrame)[0];\n slideContainer = frame.getElementsByClassName(classNameSlideContainer)[0];\n prevCtrl = slider.getElementsByClassName(classNamePrevCtrl)[0];\n nextCtrl = slider.getElementsByClassName(classNameNextCtrl)[0];\n\n position = {\n x: slideContainer.offsetLeft,\n y: slideContainer.offsetTop\n };\n\n if (options.infinite) {\n slides = setupInfinite(slice.call(slideContainer.children));\n } else {\n slides = slice.call(slideContainer.children);\n\n if (prevCtrl && !options.rewindPrev) {\n prevCtrl.classList.add(classNameDisabledPrevCtrl);\n }\n\n if (nextCtrl && (slides.length === 1) && !options.rewind) {\n nextCtrl.classList.add(classNameDisabledNextCtrl);\n }\n }\n\n reset();\n\n if (classNameActiveSlide) {\n setActiveElement(slides, index);\n }\n\n if (prevCtrl && nextCtrl) {\n prevCtrl.addEventListener('click', prev);\n nextCtrl.addEventListener('click', next);\n }\n\n frame.addEventListener('touchstart', onTouchstart, touchEventParams);\n\n if (enableMouseEvents) {\n frame.addEventListener('mousedown', onTouchstart);\n frame.addEventListener('click', onClick);\n }\n\n options.window.addEventListener('resize', onResize);\n\n dispatchSliderEvent('after', 'init');\n }\n\n /**\n * public\n * reset function: called on resize\n */\n function reset () {\n var {infinite, ease, rewindSpeed, rewindOnResize, classNameActiveSlide, initialIndex} = options;\n\n slidesWidth = elementWidth(slideContainer);\n frameWidth = elementWidth(frame);\n\n if (frameWidth === slidesWidth) {\n slidesWidth = slides.reduce(function (previousValue, slide) {\n return previousValue + elementWidth(slide);\n }, 0);\n }\n\n if (rewindOnResize) {\n index = initialIndex;\n } else {\n ease = null;\n rewindSpeed = 0;\n }\n\n if (infinite) {\n translate(slides[index + infinite].offsetLeft * -1, 0, null);\n\n index = index + infinite;\n position.x = slides[index].offsetLeft * -1;\n } else {\n translate(slides[index].offsetLeft * -1, rewindSpeed, ease);\n position.x = slides[index].offsetLeft * -1;\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n }\n\n /**\n * public\n * slideTo: called on clickhandler\n */\n function slideTo (index) {\n slide(index);\n }\n\n /**\n * public\n * returnIndex function: called on clickhandler\n */\n function returnIndex () {\n return index - options.infinite || 0;\n }\n\n /**\n * public\n * prev function: called on clickhandler\n */\n function prev () {\n slide(false, false);\n }\n\n /**\n * public\n * next function: called on clickhandler\n */\n function next () {\n slide(false, true);\n }\n\n /**\n * public\n * destroy function: called to gracefully destroy the lory instance\n */\n function destroy () {\n dispatchSliderEvent('before', 'destroy');\n\n // remove event listeners\n frame.removeEventListener(prefixes.transitionEnd, onTransitionEnd);\n frame.removeEventListener('touchstart', onTouchstart, touchEventParams);\n frame.removeEventListener('touchmove', onTouchmove, touchEventParams);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mousedown', onTouchstart);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n frame.removeEventListener('click', onClick);\n\n options.window.removeEventListener('resize', onResize);\n\n if (prevCtrl) {\n prevCtrl.removeEventListener('click', prev);\n }\n\n if (nextCtrl) {\n nextCtrl.removeEventListener('click', next);\n }\n\n // remove cloned slides if infinite is set\n if (options.infinite) {\n Array.apply(null, Array(options.infinite)).forEach(function () {\n slideContainer.removeChild(slideContainer.firstChild);\n slideContainer.removeChild(slideContainer.lastChild);\n });\n }\n\n dispatchSliderEvent('after', 'destroy');\n }\n\n // event handling\n\n let touchOffset;\n let delta;\n let isScrolling;\n\n function onTransitionEnd () {\n if (transitionEndCallback) {\n transitionEndCallback();\n\n transitionEndCallback = undefined;\n }\n }\n\n function onTouchstart (event) {\n const {enableMouseEvents} = options;\n const touches = event.touches ? event.touches[0] : event;\n\n if (enableMouseEvents) {\n frame.addEventListener('mousemove', onTouchmove);\n frame.addEventListener('mouseup', onTouchend);\n frame.addEventListener('mouseleave', onTouchend);\n }\n\n frame.addEventListener('touchmove', onTouchmove, touchEventParams);\n frame.addEventListener('touchend', onTouchend);\n\n const {pageX, pageY} = touches;\n\n touchOffset = {\n x: pageX,\n y: pageY,\n time: Date.now()\n };\n\n isScrolling = undefined;\n\n delta = {};\n\n dispatchSliderEvent('on', 'touchstart', {\n event\n });\n }\n\n function onTouchmove (event) {\n const touches = event.touches ? event.touches[0] : event;\n const {pageX, pageY} = touches;\n\n delta = {\n x: pageX - touchOffset.x,\n y: pageY - touchOffset.y\n };\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(delta.x) < Math.abs(delta.y));\n }\n\n if (!isScrolling && touchOffset) {\n translate(position.x + delta.x, 0, null);\n }\n\n // may be\n dispatchSliderEvent('on', 'touchmove', {\n event\n });\n }\n\n function onTouchend (event) {\n /**\n * time between touchstart and touchend in milliseconds\n * @duration {number}\n */\n const duration = touchOffset ? Date.now() - touchOffset.time : undefined;\n\n /**\n * is valid if:\n *\n * -> swipe attempt time is over 300 ms\n * and\n * -> swipe distance is greater than 25px\n * or\n * -> swipe distance is more then a third of the swipe area\n *\n * @isValidSlide {Boolean}\n */\n const isValid = Number(duration) < 300 &&\n Math.abs(delta.x) > 25 ||\n Math.abs(delta.x) > frameWidth / 3;\n\n /**\n * is out of bounds if:\n *\n * -> index is 0 and delta x is greater than 0\n * or\n * -> index is the last slide and delta is smaller than 0\n *\n * @isOutOfBounds {Boolean}\n */\n const isOutOfBounds = !index && delta.x > 0 ||\n index === slides.length - 1 && delta.x < 0;\n\n const direction = delta.x < 0;\n\n if (!isScrolling) {\n if (isValid && !isOutOfBounds) {\n slide(false, direction);\n } else {\n translate(position.x, options.snapBackSpeed);\n }\n }\n\n touchOffset = undefined;\n\n /**\n * remove eventlisteners after swipe attempt\n */\n frame.removeEventListener('touchmove', onTouchmove);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n\n dispatchSliderEvent('on', 'touchend', {\n event\n });\n }\n\n function onClick (event) {\n if (delta.x) {\n event.preventDefault();\n }\n }\n\n function onResize (event) {\n if (frameWidth !== elementWidth(frame)) {\n reset();\n\n dispatchSliderEvent('on', 'resize', {\n event\n });\n }\n }\n\n // trigger initial setup\n setup();\n\n // expose public api\n return {\n setup,\n reset,\n slideTo,\n returnIndex,\n prev,\n next,\n destroy\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/lory.js","/**\n * Detecting prefixes for saving time and bytes\n */\nexport default function detectPrefixes () {\n let transform;\n let transition;\n let transitionEnd;\n\n (function () {\n let el = document.createElement('_');\n let style = el.style;\n\n let prop;\n\n if (style[prop = 'webkitTransition'] === '') {\n transitionEnd = 'webkitTransitionEnd';\n transition = prop;\n }\n\n if (style[prop = 'transition'] === '') {\n transitionEnd = 'transitionend';\n transition = prop;\n }\n\n if (style[prop = 'webkitTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'msTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'transform'] === '') {\n transform = prop;\n }\n\n document.body.insertBefore(el, null);\n style[transform] = 'translateX(0)';\n document.body.removeChild(el);\n }());\n\n return {\n transform,\n transition,\n transitionEnd\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/detect-prefixes.js","export default function detectSupportsPassive () {\n let supportsPassive = false;\n\n try {\n let opts = Object.defineProperty({}, 'passive', {\n get () {\n supportsPassive = true;\n }\n });\n\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n } catch (e) {}\n\n return supportsPassive;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/detect-supportsPassive.js","import CustomEvent from 'custom-event';\n\n/**\n * dispatch custom events\n *\n * @param {element} el slideshow element\n * @param {string} type custom event name\n * @param {object} detail custom detail information\n */\nexport default function dispatchEvent (target, type, detail) {\n let event = new CustomEvent(\n type,\n {\n bubbles: true,\n cancelable: true,\n detail: detail\n }\n );\n\n target.dispatchEvent(event);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/dispatch-event.js","\nvar NativeCustomEvent = global.CustomEvent;\n\nfunction useNative () {\n try {\n var p = new NativeCustomEvent('cat', { detail: { foo: 'bar' } });\n return 'cat' === p.type && 'bar' === p.detail.foo;\n } catch (e) {\n }\n return false;\n}\n\n/**\n * Cross-browser `CustomEvent` constructor.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.CustomEvent\n *\n * @public\n */\n\nmodule.exports = useNative() ? NativeCustomEvent :\n\n// IE >= 9\n'undefined' !== typeof document && 'function' === typeof document.createEvent ? function CustomEvent (type, params) {\n var e = document.createEvent('CustomEvent');\n if (params) {\n e.initCustomEvent(type, params.bubbles, params.cancelable, params.detail);\n } else {\n e.initCustomEvent(type, false, false, void 0);\n }\n return e;\n} :\n\n// IE <= 8\nfunction CustomEvent (type, params) {\n var e = document.createEventObject();\n e.type = type;\n if (params) {\n e.bubbles = Boolean(params.bubbles);\n e.cancelable = Boolean(params.cancelable);\n e.detail = params.detail;\n } else {\n e.bubbles = false;\n e.cancelable = false;\n e.detail = void 0;\n }\n return e;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/custom-event/index.js\n// module id = 4\n// module chunks = 0 1","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 5\n// module chunks = 0 1","export default {\n /**\n * slides scrolled at once\n * @slidesToScroll {Number}\n */\n slidesToScroll: 1,\n\n /**\n * time in milliseconds for the animation of a valid slide attempt\n * @slideSpeed {Number}\n */\n slideSpeed: 300,\n\n /**\n * time in milliseconds for the animation of the rewind after the last slide\n * @rewindSpeed {Number}\n */\n rewindSpeed: 600,\n\n /**\n * time for the snapBack of the slider if the slide attempt was not valid\n * @snapBackSpeed {Number}\n */\n snapBackSpeed: 200,\n\n /**\n * Basic easing functions: https://developer.mozilla.org/de/docs/Web/CSS/transition-timing-function\n * cubic bezier easing functions: http://easings.net/de\n * @ease {String}\n */\n ease: 'ease',\n\n /**\n * if slider reached the last slide, with next click the slider goes back to the startindex.\n * use infinite or rewind, not both\n * @rewind {Boolean}\n */\n rewind: false,\n\n /**\n * number of visible slides or false\n * use infinite or rewind, not both\n * @infinite {number}\n */\n infinite: false,\n\n /**\n * the slide index to show when the slider is initialized.\n * @initialIndex {number}\n */\n initialIndex: 0,\n\n /**\n * class name for slider frame\n * @classNameFrame {string}\n */\n classNameFrame: 'js_frame',\n\n /**\n * class name for slides container\n * @classNameSlideContainer {string}\n */\n classNameSlideContainer: 'js_slides',\n\n /**\n * class name for slider prev control\n * @classNamePrevCtrl {string}\n */\n classNamePrevCtrl: 'js_prev',\n\n /**\n * class name for slider next control\n * @classNameNextCtrl {string}\n */\n classNameNextCtrl: 'js_next',\n\n /**\n * class name for current active slide\n * if emptyString then no class is set\n * @classNameActiveSlide {string}\n */\n classNameActiveSlide: 'active',\n\n /**\n * enables mouse events for swiping on desktop devices\n * @enableMouseEvents {boolean}\n */\n enableMouseEvents: false,\n\n /**\n * window instance\n * @window {object}\n */\n window: typeof window !== 'undefined' ? window : null,\n\n /**\n * If false, slides lory to the first slide on window resize.\n * @rewindOnResize {boolean}\n */\n rewindOnResize: true\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/defaults.js","/* globals jQuery */\nimport {lory} from './lory.js';\n\nfunction init ($) {\n $.fn.lory = function (options) {\n return this.each(function () {\n var instanceOptions;\n\n if (!$.data(this, 'lory')) {\n instanceOptions = $.extend({}, options, $(this).data());\n $.data(this, 'lory', lory(this, instanceOptions));\n }\n });\n };\n};\n\nif (typeof (jQuery) !== 'undefined') {\n init(jQuery);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/jquery.lory.js"],"sourceRoot":""} +======= +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///jquery.lory.min.js","webpack:///webpack/bootstrap 8fb3f642c4c59664631d","webpack:///(webpack)/buildin/global.js","webpack:///./src/lory.js","webpack:///./src/utils/detect-prefixes.js","webpack:///./src/utils/detect-supportsPassive.js","webpack:///./src/utils/dispatch-event.js","webpack:///./node_modules/custom-event/index.js","webpack:///./src/defaults.js","webpack:///./src/jquery.lory.js"],"names":["root","factory","exports","module","define","amd","a","i","self","this","modules","__webpack_require__","moduleId","installedModules","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","g","Function","eval","e","window","_interopRequireDefault","obj","default","lory","slider","opts","setActiveElement","slides","currentIndex","_options","options","classNameActiveSlide","infinite","forEach","element","index","classList","contains","remove","add","length","setupInfinite","slideArray","_options2","front","slice","back","cloned","cloneNode","slideContainer","appendChild","reverse","insertBefore","firstChild","addEventListener","prefixes","transitionEnd","onTransitionEnd","children","dispatchSliderEvent","phase","type","detail","_dispatchEvent2","translate","to","duration","ease","style","transition","hasTranslate3d","transform","slide","nextIndex","direction","_options3","slideSpeed","slidesToScroll","rewind","rewindSpeed","nextSlide","maxOffset","Math","round","slidesWidth","frameWidth","prevCtrl","nextCtrl","min","max","undefined","nextOffset","offsetLeft","abs","position","x","transitionEndCallback","currentSlide","setup","_detectPrefixes2","_options4","classNameFrame","classNameSlideContainer","classNamePrevCtrl","classNameNextCtrl","enableMouseEvents","initialIndex","frame","getElementsByClassName","y","offsetTop","reset","prev","next","onTouchstart","touchEventParams","onClick","onResize","_options5","rewindOnResize","getBoundingClientRect","width","offsetWidth","reduce","previousValue","slideTo","returnIndex","destroy","removeEventListener","onTouchmove","onTouchend","Array","apply","removeChild","lastChild","event","target","_options6","touches","pageX","pageY","touchOffset","time","Date","now","isScrolling","delta","preventDefault","isValid","Number","isOutOfBounds","snapBackSpeed","_detectSupportsPassive2","passive","jQuery","value","_extends","assign","arguments","source","key","_detectPrefixes","_detectSupportsPassive","_dispatchEvent","_defaults","_defaults2","global","detectPrefixes","el","document","createElement","prop","body","getComputedStyle","getPropertyValue","detectSupportsPassive","supportsPassive","dispatchEvent","_customEvent2","bubbles","cancelable","_customEvent","NativeCustomEvent","CustomEvent","foo","createEvent","params","initCustomEvent","createEventObject","Boolean","_lory","$","fn","each","instanceOptions","data","extend"],"mappings":"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","file":"jquery.lory.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\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 = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 8);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* globals jQuery */\n\nexports.lory = lory;\n\nvar _detectPrefixes = __webpack_require__(2);\n\nvar _detectPrefixes2 = _interopRequireDefault(_detectPrefixes);\n\nvar _detectSupportsPassive = __webpack_require__(3);\n\nvar _detectSupportsPassive2 = _interopRequireDefault(_detectSupportsPassive);\n\nvar _dispatchEvent = __webpack_require__(4);\n\nvar _dispatchEvent2 = _interopRequireDefault(_dispatchEvent);\n\nvar _defaults = __webpack_require__(6);\n\nvar _defaults2 = _interopRequireDefault(_defaults);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar slice = Array.prototype.slice;\n\nfunction lory(slider, opts) {\n var position = void 0;\n var slidesWidth = void 0;\n var frameWidth = void 0;\n var slides = void 0;\n\n /**\n * slider DOM elements\n */\n var frame = void 0;\n var slideContainer = void 0;\n var prevCtrl = void 0;\n var nextCtrl = void 0;\n var prefixes = void 0;\n var transitionEndCallback = void 0;\n\n var index = 0;\n var options = {};\n var touchEventParams = (0, _detectSupportsPassive2.default)() ? { passive: true } : false;\n\n /**\n * if object is jQuery convert to native DOM element\n */\n if (typeof jQuery !== 'undefined' && slider instanceof jQuery) {\n slider = slider[0];\n }\n\n /**\n * private\n * set active class to element which is the current slide\n */\n function setActiveElement(slides, currentIndex) {\n var _options = options,\n classNameActiveSlide = _options.classNameActiveSlide,\n infinite = _options.infinite;\n\n\n slides.forEach(function (element, index) {\n if (element.classList.contains(classNameActiveSlide)) {\n element.classList.remove(classNameActiveSlide);\n }\n });\n\n slides[currentIndex].classList.add(classNameActiveSlide);\n\n if (infinite && currentIndex === slides.length - infinite * 2) {\n slides[infinite - 1].classList.add(classNameActiveSlide);\n } else if (currentIndex === infinite) {\n slides[slides.length - infinite].classList.add(classNameActiveSlide);\n }\n }\n\n /**\n * private\n * setupInfinite: function to setup if infinite is set\n *\n * @param {array} slideArray\n * @return {array} array of updated slideContainer elements\n */\n function setupInfinite(slideArray) {\n var _options2 = options,\n infinite = _options2.infinite;\n\n\n var front = slideArray.slice(0, infinite);\n var back = slideArray.slice(slideArray.length - infinite, slideArray.length);\n\n front.forEach(function (element) {\n var cloned = element.cloneNode(true);\n\n slideContainer.appendChild(cloned);\n });\n\n back.reverse().forEach(function (element) {\n var cloned = element.cloneNode(true);\n\n slideContainer.insertBefore(cloned, slideContainer.firstChild);\n });\n\n slideContainer.addEventListener(prefixes.transitionEnd, onTransitionEnd);\n\n return slice.call(slideContainer.children);\n }\n\n /**\n * [dispatchSliderEvent description]\n * @return {[type]} [description]\n */\n function dispatchSliderEvent(phase, type, detail) {\n (0, _dispatchEvent2.default)(slider, phase + '.lory.' + type, detail);\n }\n\n /**\n * translates to a given position in a given time in milliseconds\n *\n * @to {number} number in pixels where to translate to\n * @duration {number} time in milliseconds for the transistion\n * @ease {string} easing css property\n */\n function translate(to, duration, ease) {\n var style = slideContainer && slideContainer.style;\n\n if (style) {\n style[prefixes.transition + 'TimingFunction'] = ease;\n style[prefixes.transition + 'Duration'] = duration + 'ms';\n\n if (prefixes.hasTranslate3d) {\n style[prefixes.transform] = 'translate3d(' + to + 'px, 0, 0)';\n } else {\n style[prefixes.transform] = 'translate(' + to + 'px, 0)';\n }\n }\n }\n\n /**\n * slidefunction called by prev, next & touchend\n *\n * determine nextIndex and slide to next postion\n * under restrictions of the defined options\n *\n * @direction {boolean}\n */\n function slide(nextIndex, direction) {\n var _options3 = options,\n slideSpeed = _options3.slideSpeed,\n slidesToScroll = _options3.slidesToScroll,\n infinite = _options3.infinite,\n rewind = _options3.rewind,\n rewindSpeed = _options3.rewindSpeed,\n ease = _options3.ease,\n classNameActiveSlide = _options3.classNameActiveSlide;\n\n\n var duration = slideSpeed;\n\n var nextSlide = direction ? index + 1 : index - 1;\n var maxOffset = Math.round(slidesWidth - frameWidth);\n\n dispatchSliderEvent('before', 'slide', {\n index: index,\n nextSlide: nextSlide\n });\n\n /**\n * Reset control classes\n */\n if (prevCtrl) {\n prevCtrl.classList.remove('disabled');\n }\n if (nextCtrl) {\n nextCtrl.classList.remove('disabled');\n }\n\n if (typeof nextIndex !== 'number') {\n if (direction) {\n nextIndex = index + slidesToScroll;\n } else {\n nextIndex = index - slidesToScroll;\n }\n }\n\n nextIndex = Math.min(Math.max(nextIndex, 0), slides.length - 1);\n\n if (infinite && direction === undefined) {\n nextIndex += infinite;\n }\n\n var nextOffset = Math.min(Math.max(slides[nextIndex].offsetLeft * -1, maxOffset * -1), 0);\n\n if (rewind && Math.abs(position.x) === maxOffset && direction) {\n nextOffset = 0;\n nextIndex = 0;\n duration = rewindSpeed;\n }\n\n /**\n * translate to the nextOffset by a defined duration and ease function\n */\n translate(nextOffset, duration, ease);\n\n /**\n * update the position with the next position\n */\n position.x = nextOffset;\n\n /**\n * update the index with the nextIndex only if\n * the offset of the nextIndex is in the range of the maxOffset\n */\n if (slides[nextIndex].offsetLeft <= maxOffset) {\n index = nextIndex;\n }\n\n if (infinite && (nextIndex === slides.length - infinite || nextIndex === 0)) {\n if (direction) {\n index = infinite;\n }\n\n if (!direction) {\n index = slides.length - infinite * 2;\n }\n\n position.x = slides[index].offsetLeft * -1;\n\n transitionEndCallback = function transitionEndCallback() {\n translate(slides[index].offsetLeft * -1, 0, undefined);\n };\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n\n /**\n * update classes for next and prev arrows\n * based on user settings\n */\n if (prevCtrl && !infinite && nextIndex === 0) {\n prevCtrl.classList.add('disabled');\n }\n\n if (nextCtrl && !infinite && !rewind && nextIndex + 1 === slides.length) {\n nextCtrl.classList.add('disabled');\n }\n\n dispatchSliderEvent('after', 'slide', {\n currentSlide: index\n });\n }\n\n /**\n * public\n * setup function\n */\n function setup() {\n dispatchSliderEvent('before', 'init');\n\n prefixes = (0, _detectPrefixes2.default)();\n options = _extends({}, _defaults2.default, opts);\n\n var _options4 = options,\n classNameFrame = _options4.classNameFrame,\n classNameSlideContainer = _options4.classNameSlideContainer,\n classNamePrevCtrl = _options4.classNamePrevCtrl,\n classNameNextCtrl = _options4.classNameNextCtrl,\n enableMouseEvents = _options4.enableMouseEvents,\n classNameActiveSlide = _options4.classNameActiveSlide,\n initialIndex = _options4.initialIndex;\n\n\n index = initialIndex;\n frame = slider.getElementsByClassName(classNameFrame)[0];\n slideContainer = frame.getElementsByClassName(classNameSlideContainer)[0];\n prevCtrl = slider.getElementsByClassName(classNamePrevCtrl)[0];\n nextCtrl = slider.getElementsByClassName(classNameNextCtrl)[0];\n\n position = {\n x: slideContainer.offsetLeft,\n y: slideContainer.offsetTop\n };\n\n if (options.infinite) {\n slides = setupInfinite(slice.call(slideContainer.children));\n } else {\n slides = slice.call(slideContainer.children);\n\n if (prevCtrl) {\n prevCtrl.classList.add('disabled');\n }\n\n if (nextCtrl && slides.length === 1 && !options.rewind) {\n nextCtrl.classList.add('disabled');\n }\n }\n\n reset();\n\n if (classNameActiveSlide) {\n setActiveElement(slides, index);\n }\n\n if (prevCtrl && nextCtrl) {\n prevCtrl.addEventListener('click', prev);\n nextCtrl.addEventListener('click', next);\n }\n\n frame.addEventListener('touchstart', onTouchstart, touchEventParams);\n\n if (enableMouseEvents) {\n frame.addEventListener('mousedown', onTouchstart);\n frame.addEventListener('click', onClick);\n }\n\n options.window.addEventListener('resize', onResize);\n\n dispatchSliderEvent('after', 'init');\n }\n\n /**\n * public\n * reset function: called on resize\n */\n function reset() {\n var _options5 = options,\n infinite = _options5.infinite,\n ease = _options5.ease,\n rewindSpeed = _options5.rewindSpeed,\n rewindOnResize = _options5.rewindOnResize,\n classNameActiveSlide = _options5.classNameActiveSlide,\n initialIndex = _options5.initialIndex;\n\n\n slidesWidth = slideContainer.getBoundingClientRect().width || slideContainer.offsetWidth;\n frameWidth = frame.getBoundingClientRect().width || frame.offsetWidth;\n\n if (frameWidth === slidesWidth) {\n slidesWidth = slides.reduce(function (previousValue, slide) {\n return previousValue + slide.getBoundingClientRect().width || slide.offsetWidth;\n }, 0);\n }\n\n if (rewindOnResize) {\n index = initialIndex;\n } else {\n ease = null;\n rewindSpeed = 0;\n }\n\n if (infinite) {\n translate(slides[index + infinite].offsetLeft * -1, 0, null);\n\n index = index + infinite;\n position.x = slides[index].offsetLeft * -1;\n } else {\n translate(slides[index].offsetLeft * -1, rewindSpeed, ease);\n position.x = slides[index].offsetLeft * -1;\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n }\n\n /**\n * public\n * slideTo: called on clickhandler\n */\n function slideTo(index) {\n slide(index);\n }\n\n /**\n * public\n * returnIndex function: called on clickhandler\n */\n function returnIndex() {\n return index - options.infinite || 0;\n }\n\n /**\n * public\n * prev function: called on clickhandler\n */\n function prev() {\n slide(false, false);\n }\n\n /**\n * public\n * next function: called on clickhandler\n */\n function next() {\n slide(false, true);\n }\n\n /**\n * public\n * destroy function: called to gracefully destroy the lory instance\n */\n function destroy() {\n dispatchSliderEvent('before', 'destroy');\n\n // remove event listeners\n frame.removeEventListener(prefixes.transitionEnd, onTransitionEnd);\n frame.removeEventListener('touchstart', onTouchstart, touchEventParams);\n frame.removeEventListener('touchmove', onTouchmove, touchEventParams);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mousedown', onTouchstart);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n frame.removeEventListener('click', onClick);\n\n options.window.removeEventListener('resize', onResize);\n\n if (prevCtrl) {\n prevCtrl.removeEventListener('click', prev);\n }\n\n if (nextCtrl) {\n nextCtrl.removeEventListener('click', next);\n }\n\n // remove cloned slides if infinite is set\n if (options.infinite) {\n Array.apply(null, Array(options.infinite)).forEach(function () {\n slideContainer.removeChild(slideContainer.firstChild);\n slideContainer.removeChild(slideContainer.lastChild);\n });\n }\n\n dispatchSliderEvent('after', 'destroy');\n }\n\n // event handling\n\n var touchOffset = void 0;\n var delta = void 0;\n var isScrolling = void 0;\n\n function onTransitionEnd(event) {\n if (transitionEndCallback && event.target === slideContainer) {\n transitionEndCallback();\n\n transitionEndCallback = undefined;\n }\n }\n\n function onTouchstart(event) {\n var _options6 = options,\n enableMouseEvents = _options6.enableMouseEvents;\n\n var touches = event.touches ? event.touches[0] : event;\n\n if (enableMouseEvents) {\n frame.addEventListener('mousemove', onTouchmove);\n frame.addEventListener('mouseup', onTouchend);\n frame.addEventListener('mouseleave', onTouchend);\n }\n\n frame.addEventListener('touchmove', onTouchmove, touchEventParams);\n frame.addEventListener('touchend', onTouchend);\n\n var pageX = touches.pageX,\n pageY = touches.pageY;\n\n\n touchOffset = {\n x: pageX,\n y: pageY,\n time: Date.now()\n };\n\n isScrolling = undefined;\n\n delta = {};\n\n dispatchSliderEvent('on', 'touchstart', {\n event: event\n });\n }\n\n function onTouchmove(event) {\n var touches = event.touches ? event.touches[0] : event;\n var pageX = touches.pageX,\n pageY = touches.pageY;\n\n\n delta = {\n x: pageX - touchOffset.x,\n y: pageY - touchOffset.y\n };\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(delta.x) < Math.abs(delta.y));\n }\n\n if (!isScrolling && touchOffset) {\n event.preventDefault();\n translate(position.x + delta.x, 0, null);\n }\n\n // may be\n dispatchSliderEvent('on', 'touchmove', {\n event: event\n });\n }\n\n function onTouchend(event) {\n /**\n * time between touchstart and touchend in milliseconds\n * @duration {number}\n */\n var duration = touchOffset ? Date.now() - touchOffset.time : undefined;\n\n /**\n * is valid if:\n *\n * -> swipe attempt time is over 300 ms\n * and\n * -> swipe distance is greater than 25px\n * or\n * -> swipe distance is more then a third of the swipe area\n *\n * @isValidSlide {Boolean}\n */\n var isValid = Number(duration) < 300 && Math.abs(delta.x) > 25 || Math.abs(delta.x) > frameWidth / 3;\n\n /**\n * is out of bounds if:\n *\n * -> index is 0 and delta x is greater than 0\n * or\n * -> index is the last slide and delta is smaller than 0\n *\n * @isOutOfBounds {Boolean}\n */\n var isOutOfBounds = !index && delta.x > 0 || index === slides.length - 1 && delta.x < 0;\n\n var direction = delta.x < 0;\n\n if (!isScrolling) {\n if (isValid && !isOutOfBounds) {\n slide(false, direction);\n } else {\n translate(position.x, options.snapBackSpeed);\n }\n }\n\n touchOffset = undefined;\n\n /**\n * remove eventlisteners after swipe attempt\n */\n frame.removeEventListener('touchmove', onTouchmove);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n\n dispatchSliderEvent('on', 'touchend', {\n event: event\n });\n }\n\n function onClick(event) {\n if (delta.x) {\n event.preventDefault();\n }\n }\n\n function onResize(event) {\n reset();\n\n dispatchSliderEvent('on', 'resize', {\n event: event\n });\n }\n\n // trigger initial setup\n setup();\n\n // expose public api\n return {\n setup: setup,\n reset: reset,\n slideTo: slideTo,\n returnIndex: returnIndex,\n prev: prev,\n next: next,\n destroy: destroy\n };\n}\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = detectPrefixes;\n/**\n * Detecting prefixes for saving time and bytes\n */\nfunction detectPrefixes() {\n var transform = void 0;\n var transition = void 0;\n var transitionEnd = void 0;\n var hasTranslate3d = void 0;\n\n (function () {\n var el = document.createElement('_');\n var style = el.style;\n\n var prop = void 0;\n\n if (style[prop = 'webkitTransition'] === '') {\n transitionEnd = 'webkitTransitionEnd';\n transition = prop;\n }\n\n if (style[prop = 'transition'] === '') {\n transitionEnd = 'transitionend';\n transition = prop;\n }\n\n if (style[prop = 'webkitTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'msTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'transform'] === '') {\n transform = prop;\n }\n\n document.body.insertBefore(el, null);\n style[transform] = 'translate3d(0, 0, 0)';\n hasTranslate3d = !!global.getComputedStyle(el).getPropertyValue(transform);\n document.body.removeChild(el);\n })();\n\n return {\n transform: transform,\n transition: transition,\n transitionEnd: transitionEnd,\n hasTranslate3d: hasTranslate3d\n };\n}\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = detectSupportsPassive;\nfunction detectSupportsPassive() {\n var supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n } catch (e) {}\n\n return supportsPassive;\n}\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = dispatchEvent;\n\nvar _customEvent = __webpack_require__(5);\n\nvar _customEvent2 = _interopRequireDefault(_customEvent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * dispatch custom events\n *\n * @param {element} el slideshow element\n * @param {string} type custom event name\n * @param {object} detail custom detail information\n */\nfunction dispatchEvent(target, type, detail) {\n var event = new _customEvent2.default(type, {\n bubbles: true,\n cancelable: true,\n detail: detail\n });\n\n target.dispatchEvent(event);\n}\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {\nvar NativeCustomEvent = global.CustomEvent;\n\nfunction useNative () {\n try {\n var p = new NativeCustomEvent('cat', { detail: { foo: 'bar' } });\n return 'cat' === p.type && 'bar' === p.detail.foo;\n } catch (e) {\n }\n return false;\n}\n\n/**\n * Cross-browser `CustomEvent` constructor.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.CustomEvent\n *\n * @public\n */\n\nmodule.exports = useNative() ? NativeCustomEvent :\n\n// IE >= 9\n'undefined' !== typeof document && 'function' === typeof document.createEvent ? function CustomEvent (type, params) {\n var e = document.createEvent('CustomEvent');\n if (params) {\n e.initCustomEvent(type, params.bubbles, params.cancelable, params.detail);\n } else {\n e.initCustomEvent(type, false, false, void 0);\n }\n return e;\n} :\n\n// IE <= 8\nfunction CustomEvent (type, params) {\n var e = document.createEventObject();\n e.type = type;\n if (params) {\n e.bubbles = Boolean(params.bubbles);\n e.cancelable = Boolean(params.cancelable);\n e.detail = params.detail;\n } else {\n e.bubbles = false;\n e.cancelable = false;\n e.detail = void 0;\n }\n return e;\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n /**\n * slides scrolled at once\n * @slidesToScroll {Number}\n */\n slidesToScroll: 1,\n\n /**\n * time in milliseconds for the animation of a valid slide attempt\n * @slideSpeed {Number}\n */\n slideSpeed: 300,\n\n /**\n * time in milliseconds for the animation of the rewind after the last slide\n * @rewindSpeed {Number}\n */\n rewindSpeed: 600,\n\n /**\n * time for the snapBack of the slider if the slide attempt was not valid\n * @snapBackSpeed {Number}\n */\n snapBackSpeed: 200,\n\n /**\n * Basic easing functions: https://developer.mozilla.org/de/docs/Web/CSS/transition-timing-function\n * cubic bezier easing functions: http://easings.net/de\n * @ease {String}\n */\n ease: 'ease',\n\n /**\n * if slider reached the last slide, with next click the slider goes back to the startindex.\n * use infinite or rewind, not both\n * @rewind {Boolean}\n */\n rewind: false,\n\n /**\n * number of visible slides or false\n * use infinite or rewind, not both\n * @infinite {number}\n */\n infinite: false,\n\n /**\n * the slide index to show when the slider is initialized.\n * @initialIndex {number}\n */\n initialIndex: 0,\n\n /**\n * class name for slider frame\n * @classNameFrame {string}\n */\n classNameFrame: 'js_frame',\n\n /**\n * class name for slides container\n * @classNameSlideContainer {string}\n */\n classNameSlideContainer: 'js_slides',\n\n /**\n * class name for slider prev control\n * @classNamePrevCtrl {string}\n */\n classNamePrevCtrl: 'js_prev',\n\n /**\n * class name for slider next control\n * @classNameNextCtrl {string}\n */\n classNameNextCtrl: 'js_next',\n\n /**\n * class name for current active slide\n * if emptyString then no class is set\n * @classNameActiveSlide {string}\n */\n classNameActiveSlide: 'active',\n\n /**\n * enables mouse events for swiping on desktop devices\n * @enableMouseEvents {boolean}\n */\n enableMouseEvents: false,\n\n /**\n * window instance\n * @window {object}\n */\n window: typeof window !== 'undefined' ? window : null,\n\n /**\n * If false, slides lory to the first slide on window resize.\n * @rewindOnResize {boolean}\n */\n rewindOnResize: true\n};\n\n/***/ }),\n/* 7 */,\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _lory = __webpack_require__(1);\n\nfunction init($) {\n $.fn.lory = function (options) {\n return this.each(function () {\n var instanceOptions;\n\n if (!$.data(this, 'lory')) {\n instanceOptions = $.extend({}, options, $(this).data());\n $.data(this, 'lory', (0, _lory.lory)(this, instanceOptions));\n }\n });\n };\n} /* globals jQuery */\n;\n\nif (typeof jQuery !== 'undefined') {\n init(jQuery);\n}\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// jquery.lory.min.js"," \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, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\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 = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 8);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 8fb3f642c4c59664631d","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 0\n// module chunks = 0 1","/* globals jQuery */\n\nimport detectPrefixes from './utils/detect-prefixes.js';\nimport supportsPassive from './utils/detect-supportsPassive';\nimport dispatchEvent from './utils/dispatch-event.js';\nimport defaults from './defaults.js';\n\nconst slice = Array.prototype.slice;\n\nexport function lory (slider, opts) {\n let position;\n let slidesWidth;\n let frameWidth;\n let slides;\n\n /**\n * slider DOM elements\n */\n let frame;\n let slideContainer;\n let prevCtrl;\n let nextCtrl;\n let prefixes;\n let transitionEndCallback;\n\n let index = 0;\n let options = {};\n let touchEventParams = supportsPassive() ? { passive: true } : false;\n\n /**\n * if object is jQuery convert to native DOM element\n */\n if (typeof jQuery !== 'undefined' && slider instanceof jQuery) {\n slider = slider[0];\n }\n\n /**\n * private\n * set active class to element which is the current slide\n */\n function setActiveElement (slides, currentIndex) {\n const {classNameActiveSlide, infinite} = options;\n\n slides.forEach((element, index) => {\n if (element.classList.contains(classNameActiveSlide)) {\n element.classList.remove(classNameActiveSlide);\n }\n });\n\n slides[currentIndex].classList.add(classNameActiveSlide);\n\n if (infinite && currentIndex === slides.length - infinite * 2) {\n slides[infinite - 1].classList.add(classNameActiveSlide);\n } else if (currentIndex === infinite) {\n slides[slides.length - infinite].classList.add(classNameActiveSlide);\n }\n }\n\n /**\n * private\n * setupInfinite: function to setup if infinite is set\n *\n * @param {array} slideArray\n * @return {array} array of updated slideContainer elements\n */\n function setupInfinite (slideArray) {\n const {infinite} = options;\n\n const front = slideArray.slice(0, infinite);\n const back = slideArray.slice(slideArray.length - infinite, slideArray.length);\n\n front.forEach(function (element) {\n const cloned = element.cloneNode(true);\n\n slideContainer.appendChild(cloned);\n });\n\n back.reverse()\n .forEach(function (element) {\n const cloned = element.cloneNode(true);\n\n slideContainer.insertBefore(cloned, slideContainer.firstChild);\n });\n\n slideContainer.addEventListener(prefixes.transitionEnd, onTransitionEnd);\n\n return slice.call(slideContainer.children);\n }\n\n /**\n * [dispatchSliderEvent description]\n * @return {[type]} [description]\n */\n function dispatchSliderEvent (phase, type, detail) {\n dispatchEvent(slider, `${phase}.lory.${type}`, detail);\n }\n\n /**\n * translates to a given position in a given time in milliseconds\n *\n * @to {number} number in pixels where to translate to\n * @duration {number} time in milliseconds for the transistion\n * @ease {string} easing css property\n */\n function translate (to, duration, ease) {\n const style = slideContainer && slideContainer.style;\n\n if (style) {\n style[prefixes.transition + 'TimingFunction'] = ease;\n style[prefixes.transition + 'Duration'] = duration + 'ms';\n\n if (prefixes.hasTranslate3d) {\n style[prefixes.transform] = 'translate3d(' + to + 'px, 0, 0)';\n } else {\n style[prefixes.transform] = 'translate(' + to + 'px, 0)';\n }\n }\n }\n\n /**\n * slidefunction called by prev, next & touchend\n *\n * determine nextIndex and slide to next postion\n * under restrictions of the defined options\n *\n * @direction {boolean}\n */\n function slide (nextIndex, direction) {\n const {\n slideSpeed,\n slidesToScroll,\n infinite,\n rewind,\n rewindSpeed,\n ease,\n classNameActiveSlide\n } = options;\n\n let duration = slideSpeed;\n\n const nextSlide = direction ? index + 1 : index - 1;\n const maxOffset = Math.round(slidesWidth - frameWidth);\n\n dispatchSliderEvent('before', 'slide', {\n index,\n nextSlide\n });\n\n /**\n * Reset control classes\n */\n if (prevCtrl) {\n prevCtrl.classList.remove('disabled');\n }\n if (nextCtrl) {\n nextCtrl.classList.remove('disabled');\n }\n\n if (typeof nextIndex !== 'number') {\n if (direction) {\n nextIndex = index + slidesToScroll;\n } else {\n nextIndex = index - slidesToScroll;\n }\n }\n\n nextIndex = Math.min(Math.max(nextIndex, 0), slides.length - 1);\n\n if (infinite && direction === undefined) {\n nextIndex += infinite;\n }\n\n let nextOffset = Math.min(Math.max(slides[nextIndex].offsetLeft * -1, maxOffset * -1), 0);\n\n if (rewind && Math.abs(position.x) === maxOffset && direction) {\n nextOffset = 0;\n nextIndex = 0;\n duration = rewindSpeed;\n }\n\n /**\n * translate to the nextOffset by a defined duration and ease function\n */\n translate(nextOffset, duration, ease);\n\n /**\n * update the position with the next position\n */\n position.x = nextOffset;\n\n /**\n * update the index with the nextIndex only if\n * the offset of the nextIndex is in the range of the maxOffset\n */\n if (slides[nextIndex].offsetLeft <= maxOffset) {\n index = nextIndex;\n }\n\n if (infinite && (nextIndex === slides.length - infinite || nextIndex === 0)) {\n if (direction) {\n index = infinite;\n }\n\n if (!direction) {\n index = slides.length - (infinite * 2);\n }\n\n position.x = slides[index].offsetLeft * -1;\n\n transitionEndCallback = function () {\n translate(slides[index].offsetLeft * -1, 0, undefined);\n };\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n\n /**\n * update classes for next and prev arrows\n * based on user settings\n */\n if (prevCtrl && !infinite && nextIndex === 0) {\n prevCtrl.classList.add('disabled');\n }\n\n if (nextCtrl && !infinite && !rewind && ((nextIndex + 1) === slides.length)) {\n nextCtrl.classList.add('disabled');\n }\n\n dispatchSliderEvent('after', 'slide', {\n currentSlide: index\n });\n }\n\n /**\n * public\n * setup function\n */\n function setup () {\n dispatchSliderEvent('before', 'init');\n\n prefixes = detectPrefixes();\n options = {...defaults, ...opts};\n\n const {\n classNameFrame,\n classNameSlideContainer,\n classNamePrevCtrl,\n classNameNextCtrl,\n enableMouseEvents,\n classNameActiveSlide,\n initialIndex\n } = options;\n\n index = initialIndex;\n frame = slider.getElementsByClassName(classNameFrame)[0];\n slideContainer = frame.getElementsByClassName(classNameSlideContainer)[0];\n prevCtrl = slider.getElementsByClassName(classNamePrevCtrl)[0];\n nextCtrl = slider.getElementsByClassName(classNameNextCtrl)[0];\n\n position = {\n x: slideContainer.offsetLeft,\n y: slideContainer.offsetTop\n };\n\n if (options.infinite) {\n slides = setupInfinite(slice.call(slideContainer.children));\n } else {\n slides = slice.call(slideContainer.children);\n\n if (prevCtrl) {\n prevCtrl.classList.add('disabled');\n }\n\n if (nextCtrl && (slides.length === 1) && !options.rewind) {\n nextCtrl.classList.add('disabled');\n }\n }\n\n reset();\n\n if (classNameActiveSlide) {\n setActiveElement(slides, index);\n }\n\n if (prevCtrl && nextCtrl) {\n prevCtrl.addEventListener('click', prev);\n nextCtrl.addEventListener('click', next);\n }\n\n frame.addEventListener('touchstart', onTouchstart, touchEventParams);\n\n if (enableMouseEvents) {\n frame.addEventListener('mousedown', onTouchstart);\n frame.addEventListener('click', onClick);\n }\n\n options.window.addEventListener('resize', onResize);\n\n dispatchSliderEvent('after', 'init');\n }\n\n /**\n * public\n * reset function: called on resize\n */\n function reset () {\n var {infinite, ease, rewindSpeed, rewindOnResize, classNameActiveSlide, initialIndex} = options;\n\n slidesWidth = slideContainer.getBoundingClientRect()\n .width || slideContainer.offsetWidth;\n frameWidth = frame.getBoundingClientRect()\n .width || frame.offsetWidth;\n\n if (frameWidth === slidesWidth) {\n slidesWidth = slides.reduce(function (previousValue, slide) {\n return previousValue + slide.getBoundingClientRect().width || slide.offsetWidth;\n }, 0);\n }\n\n if (rewindOnResize) {\n index = initialIndex;\n } else {\n ease = null;\n rewindSpeed = 0;\n }\n\n if (infinite) {\n translate(slides[index + infinite].offsetLeft * -1, 0, null);\n\n index = index + infinite;\n position.x = slides[index].offsetLeft * -1;\n } else {\n translate(slides[index].offsetLeft * -1, rewindSpeed, ease);\n position.x = slides[index].offsetLeft * -1;\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n }\n\n /**\n * public\n * slideTo: called on clickhandler\n */\n function slideTo (index) {\n slide(index);\n }\n\n /**\n * public\n * returnIndex function: called on clickhandler\n */\n function returnIndex () {\n return index - options.infinite || 0;\n }\n\n /**\n * public\n * prev function: called on clickhandler\n */\n function prev () {\n slide(false, false);\n }\n\n /**\n * public\n * next function: called on clickhandler\n */\n function next () {\n slide(false, true);\n }\n\n /**\n * public\n * destroy function: called to gracefully destroy the lory instance\n */\n function destroy () {\n dispatchSliderEvent('before', 'destroy');\n\n // remove event listeners\n frame.removeEventListener(prefixes.transitionEnd, onTransitionEnd);\n frame.removeEventListener('touchstart', onTouchstart, touchEventParams);\n frame.removeEventListener('touchmove', onTouchmove, touchEventParams);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mousedown', onTouchstart);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n frame.removeEventListener('click', onClick);\n\n options.window.removeEventListener('resize', onResize);\n\n if (prevCtrl) {\n prevCtrl.removeEventListener('click', prev);\n }\n\n if (nextCtrl) {\n nextCtrl.removeEventListener('click', next);\n }\n\n // remove cloned slides if infinite is set\n if (options.infinite) {\n Array.apply(null, Array(options.infinite)).forEach(function () {\n slideContainer.removeChild(slideContainer.firstChild);\n slideContainer.removeChild(slideContainer.lastChild);\n });\n }\n\n dispatchSliderEvent('after', 'destroy');\n }\n\n // event handling\n\n let touchOffset;\n let delta;\n let isScrolling;\n\n function onTransitionEnd (event) {\n if (transitionEndCallback && event.target === slideContainer) {\n transitionEndCallback();\n\n transitionEndCallback = undefined;\n }\n }\n\n function onTouchstart (event) {\n const {enableMouseEvents} = options;\n const touches = event.touches ? event.touches[0] : event;\n\n if (enableMouseEvents) {\n frame.addEventListener('mousemove', onTouchmove);\n frame.addEventListener('mouseup', onTouchend);\n frame.addEventListener('mouseleave', onTouchend);\n }\n\n frame.addEventListener('touchmove', onTouchmove, touchEventParams);\n frame.addEventListener('touchend', onTouchend);\n\n const {pageX, pageY} = touches;\n\n touchOffset = {\n x: pageX,\n y: pageY,\n time: Date.now()\n };\n\n isScrolling = undefined;\n\n delta = {};\n\n dispatchSliderEvent('on', 'touchstart', {\n event\n });\n }\n\n function onTouchmove (event) {\n const touches = event.touches ? event.touches[0] : event;\n const {pageX, pageY} = touches;\n\n delta = {\n x: pageX - touchOffset.x,\n y: pageY - touchOffset.y\n };\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(delta.x) < Math.abs(delta.y));\n }\n\n if (!isScrolling && touchOffset) {\n event.preventDefault();\n translate(position.x + delta.x, 0, null);\n }\n\n // may be\n dispatchSliderEvent('on', 'touchmove', {\n event\n });\n }\n\n function onTouchend (event) {\n /**\n * time between touchstart and touchend in milliseconds\n * @duration {number}\n */\n const duration = touchOffset ? Date.now() - touchOffset.time : undefined;\n\n /**\n * is valid if:\n *\n * -> swipe attempt time is over 300 ms\n * and\n * -> swipe distance is greater than 25px\n * or\n * -> swipe distance is more then a third of the swipe area\n *\n * @isValidSlide {Boolean}\n */\n const isValid = Number(duration) < 300 &&\n Math.abs(delta.x) > 25 ||\n Math.abs(delta.x) > frameWidth / 3;\n\n /**\n * is out of bounds if:\n *\n * -> index is 0 and delta x is greater than 0\n * or\n * -> index is the last slide and delta is smaller than 0\n *\n * @isOutOfBounds {Boolean}\n */\n const isOutOfBounds = !index && delta.x > 0 ||\n index === slides.length - 1 && delta.x < 0;\n\n const direction = delta.x < 0;\n\n if (!isScrolling) {\n if (isValid && !isOutOfBounds) {\n slide(false, direction);\n } else {\n translate(position.x, options.snapBackSpeed);\n }\n }\n\n touchOffset = undefined;\n\n /**\n * remove eventlisteners after swipe attempt\n */\n frame.removeEventListener('touchmove', onTouchmove);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n\n dispatchSliderEvent('on', 'touchend', {\n event\n });\n }\n\n function onClick (event) {\n if (delta.x) {\n event.preventDefault();\n }\n }\n\n function onResize (event) {\n reset();\n\n dispatchSliderEvent('on', 'resize', {\n event\n });\n }\n\n // trigger initial setup\n setup();\n\n // expose public api\n return {\n setup,\n reset,\n slideTo,\n returnIndex,\n prev,\n next,\n destroy\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/lory.js","/**\n * Detecting prefixes for saving time and bytes\n */\nexport default function detectPrefixes () {\n let transform;\n let transition;\n let transitionEnd;\n let hasTranslate3d;\n\n (function () {\n let el = document.createElement('_');\n let style = el.style;\n\n let prop;\n\n if (style[prop = 'webkitTransition'] === '') {\n transitionEnd = 'webkitTransitionEnd';\n transition = prop;\n }\n\n if (style[prop = 'transition'] === '') {\n transitionEnd = 'transitionend';\n transition = prop;\n }\n\n if (style[prop = 'webkitTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'msTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'transform'] === '') {\n transform = prop;\n }\n\n document.body.insertBefore(el, null);\n style[transform] = 'translate3d(0, 0, 0)';\n hasTranslate3d = !!global.getComputedStyle(el).getPropertyValue(transform);\n document.body.removeChild(el);\n }());\n\n return {\n transform,\n transition,\n transitionEnd,\n hasTranslate3d\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/detect-prefixes.js","export default function detectSupportsPassive () {\n let supportsPassive = false;\n\n try {\n let opts = Object.defineProperty({}, 'passive', {\n get () {\n supportsPassive = true;\n }\n });\n\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n } catch (e) {}\n\n return supportsPassive;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/detect-supportsPassive.js","import CustomEvent from 'custom-event';\n\n/**\n * dispatch custom events\n *\n * @param {element} el slideshow element\n * @param {string} type custom event name\n * @param {object} detail custom detail information\n */\nexport default function dispatchEvent (target, type, detail) {\n let event = new CustomEvent(\n type,\n {\n bubbles: true,\n cancelable: true,\n detail: detail\n }\n );\n\n target.dispatchEvent(event);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/dispatch-event.js","\nvar NativeCustomEvent = global.CustomEvent;\n\nfunction useNative () {\n try {\n var p = new NativeCustomEvent('cat', { detail: { foo: 'bar' } });\n return 'cat' === p.type && 'bar' === p.detail.foo;\n } catch (e) {\n }\n return false;\n}\n\n/**\n * Cross-browser `CustomEvent` constructor.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.CustomEvent\n *\n * @public\n */\n\nmodule.exports = useNative() ? NativeCustomEvent :\n\n// IE >= 9\n'undefined' !== typeof document && 'function' === typeof document.createEvent ? function CustomEvent (type, params) {\n var e = document.createEvent('CustomEvent');\n if (params) {\n e.initCustomEvent(type, params.bubbles, params.cancelable, params.detail);\n } else {\n e.initCustomEvent(type, false, false, void 0);\n }\n return e;\n} :\n\n// IE <= 8\nfunction CustomEvent (type, params) {\n var e = document.createEventObject();\n e.type = type;\n if (params) {\n e.bubbles = Boolean(params.bubbles);\n e.cancelable = Boolean(params.cancelable);\n e.detail = params.detail;\n } else {\n e.bubbles = false;\n e.cancelable = false;\n e.detail = void 0;\n }\n return e;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/custom-event/index.js\n// module id = 5\n// module chunks = 0 1","export default {\n /**\n * slides scrolled at once\n * @slidesToScroll {Number}\n */\n slidesToScroll: 1,\n\n /**\n * time in milliseconds for the animation of a valid slide attempt\n * @slideSpeed {Number}\n */\n slideSpeed: 300,\n\n /**\n * time in milliseconds for the animation of the rewind after the last slide\n * @rewindSpeed {Number}\n */\n rewindSpeed: 600,\n\n /**\n * time for the snapBack of the slider if the slide attempt was not valid\n * @snapBackSpeed {Number}\n */\n snapBackSpeed: 200,\n\n /**\n * Basic easing functions: https://developer.mozilla.org/de/docs/Web/CSS/transition-timing-function\n * cubic bezier easing functions: http://easings.net/de\n * @ease {String}\n */\n ease: 'ease',\n\n /**\n * if slider reached the last slide, with next click the slider goes back to the startindex.\n * use infinite or rewind, not both\n * @rewind {Boolean}\n */\n rewind: false,\n\n /**\n * number of visible slides or false\n * use infinite or rewind, not both\n * @infinite {number}\n */\n infinite: false,\n\n /**\n * the slide index to show when the slider is initialized.\n * @initialIndex {number}\n */\n initialIndex: 0,\n\n /**\n * class name for slider frame\n * @classNameFrame {string}\n */\n classNameFrame: 'js_frame',\n\n /**\n * class name for slides container\n * @classNameSlideContainer {string}\n */\n classNameSlideContainer: 'js_slides',\n\n /**\n * class name for slider prev control\n * @classNamePrevCtrl {string}\n */\n classNamePrevCtrl: 'js_prev',\n\n /**\n * class name for slider next control\n * @classNameNextCtrl {string}\n */\n classNameNextCtrl: 'js_next',\n\n /**\n * class name for current active slide\n * if emptyString then no class is set\n * @classNameActiveSlide {string}\n */\n classNameActiveSlide: 'active',\n\n /**\n * enables mouse events for swiping on desktop devices\n * @enableMouseEvents {boolean}\n */\n enableMouseEvents: false,\n\n /**\n * window instance\n * @window {object}\n */\n window: typeof window !== 'undefined' ? window : null,\n\n /**\n * If false, slides lory to the first slide on window resize.\n * @rewindOnResize {boolean}\n */\n rewindOnResize: true\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/defaults.js","/* globals jQuery */\nimport {lory} from './lory.js';\n\nfunction init ($) {\n $.fn.lory = function (options) {\n return this.each(function () {\n var instanceOptions;\n\n if (!$.data(this, 'lory')) {\n instanceOptions = $.extend({}, options, $(this).data());\n $.data(this, 'lory', lory(this, instanceOptions));\n }\n });\n };\n};\n\nif (typeof (jQuery) !== 'undefined') {\n init(jQuery);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/jquery.lory.js"],"sourceRoot":""} +>>>>>>> Build diff --git a/dist/lory.js b/dist/lory.js index c4d8273..8d9ab1d 100644 --- a/dist/lory.js +++ b/dist/lory.js @@ -88,6 +88,7 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument exports.lory = lory; +<<<<<<< refs/remotes/upstream/master var _detectPrefixes = __webpack_require__(1); var _detectPrefixes2 = _interopRequireDefault(_detectPrefixes); @@ -97,6 +98,17 @@ var _detectSupportsPassive = __webpack_require__(2); var _detectSupportsPassive2 = _interopRequireDefault(_detectSupportsPassive); var _dispatchEvent = __webpack_require__(3); +======= +var _detectPrefixes = __webpack_require__(2); + +var _detectPrefixes2 = _interopRequireDefault(_detectPrefixes); + +var _detectSupportsPassive = __webpack_require__(3); + +var _detectSupportsPassive2 = _interopRequireDefault(_detectSupportsPassive); + +var _dispatchEvent = __webpack_require__(4); +>>>>>>> Build var _dispatchEvent2 = _interopRequireDefault(_dispatchEvent); @@ -141,7 +153,8 @@ function lory(slider, opts) { */ function setActiveElement(slides, currentIndex) { var _options = options, - classNameActiveSlide = _options.classNameActiveSlide; + classNameActiveSlide = _options.classNameActiveSlide, + infinite = _options.infinite; slides.forEach(function (element, index) { @@ -151,6 +164,12 @@ function lory(slider, opts) { }); slides[currentIndex].classList.add(classNameActiveSlide); + + if (infinite && currentIndex === slides.length - infinite * 2) { + slides[infinite - 1].classList.add(classNameActiveSlide); + } else if (currentIndex === infinite) { + slides[slides.length - infinite].classList.add(classNameActiveSlide); + } } /** @@ -545,8 +564,8 @@ function lory(slider, opts) { var delta = void 0; var isScrolling = void 0; - function onTransitionEnd() { - if (transitionEndCallback) { + function onTransitionEnd(event) { + if (transitionEndCallback && event.target === slideContainer) { transitionEndCallback(); transitionEndCallback = undefined; @@ -705,7 +724,11 @@ function lory(slider, opts) { /***/ (function(module, exports, __webpack_require__) { "use strict"; +<<<<<<< refs/remotes/upstream/master +======= +/* WEBPACK VAR INJECTION */(function(global) { +>>>>>>> Build Object.defineProperty(exports, "__esModule", { value: true @@ -760,7 +783,11 @@ function detectPrefixes() { } /***/ }), +<<<<<<< refs/remotes/upstream/master /* 2 */ +======= +/* 3 */ +>>>>>>> Build /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -788,7 +815,11 @@ function detectSupportsPassive() { } /***/ }), +<<<<<<< refs/remotes/upstream/master /* 3 */ +======= +/* 4 */ +>>>>>>> Build /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -799,7 +830,11 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = dispatchEvent; +<<<<<<< refs/remotes/upstream/master var _customEvent = __webpack_require__(4); +======= +var _customEvent = __webpack_require__(5); +>>>>>>> Build var _customEvent2 = _interopRequireDefault(_customEvent); @@ -823,7 +858,11 @@ function dispatchEvent(target, type, detail) { } /***/ }), +<<<<<<< refs/remotes/upstream/master /* 4 */ +======= +/* 5 */ +>>>>>>> Build /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global) { @@ -1017,6 +1056,121 @@ exports.default = { }; /***/ }), +<<<<<<< refs/remotes/upstream/master +======= +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = { + /** + * slides scrolled at once + * @slidesToScroll {Number} + */ + slidesToScroll: 1, + + /** + * time in milliseconds for the animation of a valid slide attempt + * @slideSpeed {Number} + */ + slideSpeed: 300, + + /** + * time in milliseconds for the animation of the rewind after the last slide + * @rewindSpeed {Number} + */ + rewindSpeed: 600, + + /** + * time for the snapBack of the slider if the slide attempt was not valid + * @snapBackSpeed {Number} + */ + snapBackSpeed: 200, + + /** + * Basic easing functions: https://developer.mozilla.org/de/docs/Web/CSS/transition-timing-function + * cubic bezier easing functions: http://easings.net/de + * @ease {String} + */ + ease: 'ease', + + /** + * if slider reached the last slide, with next click the slider goes back to the startindex. + * use infinite or rewind, not both + * @rewind {Boolean} + */ + rewind: false, + + /** + * number of visible slides or false + * use infinite or rewind, not both + * @infinite {number} + */ + infinite: false, + + /** + * the slide index to show when the slider is initialized. + * @initialIndex {number} + */ + initialIndex: 0, + + /** + * class name for slider frame + * @classNameFrame {string} + */ + classNameFrame: 'js_frame', + + /** + * class name for slides container + * @classNameSlideContainer {string} + */ + classNameSlideContainer: 'js_slides', + + /** + * class name for slider prev control + * @classNamePrevCtrl {string} + */ + classNamePrevCtrl: 'js_prev', + + /** + * class name for slider next control + * @classNameNextCtrl {string} + */ + classNameNextCtrl: 'js_next', + + /** + * class name for current active slide + * if emptyString then no class is set + * @classNameActiveSlide {string} + */ + classNameActiveSlide: 'active', + + /** + * enables mouse events for swiping on desktop devices + * @enableMouseEvents {boolean} + */ + enableMouseEvents: false, + + /** + * window instance + * @window {object} + */ + window: typeof window !== 'undefined' ? window : null, + + /** + * If false, slides lory to the first slide on window resize. + * @rewindOnResize {boolean} + */ + rewindOnResize: true +}; + +/***/ }), +>>>>>>> Build /* 7 */ /***/ (function(module, exports, __webpack_require__) { diff --git a/dist/lory.min.js b/dist/lory.min.js index 1c01cf1..9d95550 100644 --- a/dist/lory.min.js +++ b/dist/lory.min.js @@ -1,2 +1,6 @@ +<<<<<<< refs/remotes/upstream/master !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var i in n)("object"==typeof exports?exports:e)[i]=n[i]}}("undefined"!=typeof self?self:this,function(){return function(e){function t(i){if(n[i])return n[i].exports;var o=n[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=7)}([function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function o(e,t){function n(e,t){var n=F,i=n.classNameActiveSlide;e.forEach(function(e,t){e.classList.contains(i)&&e.classList.remove(i)}),e[t].classList.add(i)}function i(e){var t=F,n=t.infinite,i=e.slice(0,n),o=e.slice(e.length-n,e.length);return i.forEach(function(e){var t=e.cloneNode(!0);k.appendChild(t)}),o.reverse().forEach(function(e){var t=e.cloneNode(!0);k.insertBefore(t,k.firstChild)}),k.addEventListener(A.transitionEnd,x),m.call(k.children)}function o(t,n,i){(0,u.default)(e,t+".lory."+n,i)}function s(e,t,n){var i=k&&k.style;i&&(i[A.transition+"TimingFunction"]=n,i[A.transition+"Duration"]=t+"ms",i[A.transform]="translateX("+e+"px)")}function l(e){return e.getBoundingClientRect().width||e.offsetWidth}function c(e,t){var i=F,r=i.slideSpeed,a=i.slidesToScroll,l=i.infinite,d=i.rewind,c=i.rewindPrev,u=i.rewindSpeed,v=i.ease,f=i.classNameActiveSlide,p=i.classNameDisabledNextCtrl,b=void 0===p?"disabled":p,h=i.classNameDisabledPrevCtrl,E=void 0===h?"disabled":h,y=r,L=t?z+1:z-1,x=Math.round(_-S);o("before","slide",{index:z,nextSlide:L}),B&&B.classList.remove(E),T&&T.classList.remove(b),"number"!=typeof e&&(e=t?l&&z+2*l!==P.length?z+(l-z%l):z+a:l&&z%l!=0?z-z%l:z-a),e=Math.min(Math.max(e,0),P.length-1),l&&void 0===t&&(e+=l),c&&0===Math.abs(j.x)&&!1===t&&(e=P.length-1,y=u);var w=Math.min(Math.max(-1*P[e].offsetLeft,-1*x),0);d&&Math.abs(j.x)===x&&t&&(w=0,e=0,y=u),s(w,y,v),j.x=w,P[e].offsetLeft<=x&&(z=e),!l||e!==P.length-l&&e!==P.length-P.length%l&&0!==e||(t&&(z=l),t||(z=P.length-2*l),j.x=-1*P[z].offsetLeft,D=function(){s(-1*P[z].offsetLeft,0,void 0)}),f&&n(m.call(P),z),!B||l||c||0!==e||B.classList.add(E),!T||l||d||e+1!==P.length||T.classList.add(b),o("after","slide",{currentSlide:z})}function v(){o("before","init"),A=(0,a.default)(),F=r({},f.default,t);var s=F,l=s.classNameFrame,d=s.classNameSlideContainer,c=s.classNamePrevCtrl,u=s.classNameNextCtrl,v=s.classNameDisabledNextCtrl,b=void 0===v?"disabled":v,h=s.classNameDisabledPrevCtrl,L=void 0===h?"disabled":h,x=s.enableMouseEvents,g=s.classNameActiveSlide,N=s.initialIndex;z=N,O=e.getElementsByClassName(l)[0],k=O.getElementsByClassName(d)[0],B=e.getElementsByClassName(c)[0],T=e.getElementsByClassName(u)[0],j={x:k.offsetLeft,y:k.offsetTop},F.infinite?P=i(m.call(k.children)):(P=m.call(k.children),B&&!F.rewindPrev&&B.classList.add(L),T&&1===P.length&&!F.rewind&&T.classList.add(b)),p(),g&&n(P,z),B&&T&&(B.addEventListener("click",E),T.addEventListener("click",y)),O.addEventListener("touchstart",w,I),x&&(O.addEventListener("mousedown",w),O.addEventListener("click",C)),F.window.addEventListener("resize",M),o("after","init")}function p(){var e=F,t=e.infinite,i=e.ease,o=e.rewindSpeed,r=e.rewindOnResize,a=e.classNameActiveSlide,d=e.initialIndex;_=l(k),S=l(O),S===_&&(_=P.reduce(function(e,t){return e+l(t)},0)),r?z=d:(i=null,o=0),t?(s(-1*P[z+t].offsetLeft,0,null),z+=t,j.x=-1*P[z].offsetLeft):(s(-1*P[z].offsetLeft,o,i),j.x=-1*P[z].offsetLeft),a&&n(m.call(P),z)}function b(e){c(e)}function h(){return z-F.infinite||0}function E(){c(!1,!1)}function y(){c(!1,!0)}function L(){o("before","destroy"),O.removeEventListener(A.transitionEnd,x),O.removeEventListener("touchstart",w,I),O.removeEventListener("touchmove",g,I),O.removeEventListener("touchend",N),O.removeEventListener("mousemove",g),O.removeEventListener("mousedown",w),O.removeEventListener("mouseup",N),O.removeEventListener("mouseleave",N),O.removeEventListener("click",C),F.window.removeEventListener("resize",M),B&&B.removeEventListener("click",E),T&&T.removeEventListener("click",y),F.infinite&&Array.apply(null,Array(F.infinite)).forEach(function(){k.removeChild(k.firstChild),k.removeChild(k.lastChild)}),o("after","destroy")}function x(){D&&(D(),D=void 0)}function w(e){var t=F,n=t.enableMouseEvents,i=e.touches?e.touches[0]:e;n&&(O.addEventListener("mousemove",g),O.addEventListener("mouseup",N),O.addEventListener("mouseleave",N)),O.addEventListener("touchmove",g,I),O.addEventListener("touchend",N);var r=i.pageX,s=i.pageY;X={x:r,y:s,time:Date.now()},Q=void 0,R={},o("on","touchstart",{event:e})}function g(e){var t=e.touches?e.touches[0]:e,n=t.pageX,i=t.pageY;R={x:n-X.x,y:i-X.y},void 0===Q&&(Q=!!(Q||Math.abs(R.x)25||Math.abs(R.x)>S/3,i=!z&&R.x>0||z===P.length-1&&R.x<0,r=R.x<0;Q||(n&&!i?c(!1,r):s(j.x,F.snapBackSpeed)),X=void 0,O.removeEventListener("touchmove",g),O.removeEventListener("touchend",N),O.removeEventListener("mousemove",g),O.removeEventListener("mouseup",N),O.removeEventListener("mouseleave",N),o("on","touchend",{event:e})}function C(e){R.x&&e.preventDefault()}function M(e){S!==l(O)&&(p(),o("on","resize",{event:e}))}var j=void 0,_=void 0,S=void 0,P=void 0,O=void 0,k=void 0,B=void 0,T=void 0,A=void 0,D=void 0,z=0,F={},I=!!(0,d.default)()&&{passive:!0};"undefined"!=typeof jQuery&&e instanceof jQuery&&(e=e[0]);var X=void 0,R=void 0,Q=void 0;return v(),{setup:v,reset:p,slideTo:b,returnIndex:h,prev:E,next:y,destroy:L}}Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t25||Math.abs(I.x)>_/3,i=!z&&I.x>0||z===S.length-1&&I.x<0,r=I.x<0;W||(n&&!i?d(!1,r):s(j.x,D.snapBackSpeed)),F=void 0,O.removeEventListener("touchmove",w),O.removeEventListener("touchend",g),O.removeEventListener("mousemove",w),O.removeEventListener("mouseup",g),O.removeEventListener("mouseleave",g),o("on","touchend",{event:e})}function C(e){I.x&&e.preventDefault()}function N(e){f(),o("on","resize",{event:e})}var j=void 0,M=void 0,_=void 0,S=void 0,O=void 0,P=void 0,B=void 0,k=void 0,T=void 0,A=void 0,z=0,D={},R=!!(0,l.default)()&&{passive:!0};"undefined"!=typeof jQuery&&e instanceof jQuery&&(e=e[0]);var F=void 0,I=void 0,W=void 0;return c(),{setup:c,reset:f,slideTo:p,returnIndex:h,prev:b,next:E,destroy:y}}Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t>>>>>> Build //# sourceMappingURL=lory.min.js.map \ No newline at end of file diff --git a/dist/lory.min.js.map b/dist/lory.min.js.map index 8a13309..d96b098 100644 --- a/dist/lory.min.js.map +++ b/dist/lory.min.js.map @@ -1 +1,5 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///lory.min.js","webpack:///webpack/bootstrap 85bdd04943e5c295f168","webpack:///./src/lory.js","webpack:///./src/utils/detect-prefixes.js","webpack:///./src/utils/detect-supportsPassive.js","webpack:///./src/utils/dispatch-event.js","webpack:///./node_modules/custom-event/index.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/defaults.js"],"names":["root","factory","exports","module","define","amd","a","i","self","this","modules","__webpack_require__","moduleId","installedModules","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","_interopRequireDefault","obj","default","lory","slider","opts","setActiveElement","slides","currentIndex","_options","options","classNameActiveSlide","forEach","element","index","classList","contains","remove","add","setupInfinite","slideArray","_options2","infinite","front","slice","back","length","cloned","cloneNode","slideContainer","appendChild","reverse","insertBefore","firstChild","addEventListener","prefixes","transitionEnd","onTransitionEnd","children","dispatchSliderEvent","phase","type","detail","_dispatchEvent2","translate","to","duration","ease","style","transition","transform","elementWidth","getBoundingClientRect","width","offsetWidth","slide","nextIndex","direction","_options3","slideSpeed","slidesToScroll","rewind","rewindPrev","rewindSpeed","_options3$classNameDi","classNameDisabledNextCtrl","undefined","_options3$classNameDi2","classNameDisabledPrevCtrl","nextSlide","maxOffset","Math","round","slidesWidth","frameWidth","prevCtrl","nextCtrl","min","max","abs","position","x","nextOffset","offsetLeft","transitionEndCallback","currentSlide","setup","_detectPrefixes2","_options4","classNameFrame","classNameSlideContainer","classNamePrevCtrl","classNameNextCtrl","_options4$classNameDi","_options4$classNameDi2","enableMouseEvents","initialIndex","frame","getElementsByClassName","y","offsetTop","reset","prev","next","onTouchstart","touchEventParams","onClick","window","onResize","_options5","rewindOnResize","reduce","previousValue","slideTo","returnIndex","destroy","removeEventListener","onTouchmove","onTouchend","Array","apply","removeChild","lastChild","event","_options6","touches","pageX","pageY","touchOffset","time","Date","now","isScrolling","delta","isValid","Number","isOutOfBounds","snapBackSpeed","preventDefault","_detectSupportsPassive2","passive","jQuery","value","_extends","assign","target","arguments","source","key","_detectPrefixes","_detectSupportsPassive","_dispatchEvent","_defaults","_defaults2","detectPrefixes","el","document","createElement","prop","body","detectSupportsPassive","supportsPassive","e","dispatchEvent","_customEvent2","bubbles","cancelable","_customEvent","global","NativeCustomEvent","CustomEvent","foo","createEvent","params","initCustomEvent","createEventObject","Boolean","g","Function","eval"],"mappings":"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","file":"lory.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\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 = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 7);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* globals jQuery */\n\nexports.lory = lory;\n\nvar _detectPrefixes = __webpack_require__(1);\n\nvar _detectPrefixes2 = _interopRequireDefault(_detectPrefixes);\n\nvar _detectSupportsPassive = __webpack_require__(2);\n\nvar _detectSupportsPassive2 = _interopRequireDefault(_detectSupportsPassive);\n\nvar _dispatchEvent = __webpack_require__(3);\n\nvar _dispatchEvent2 = _interopRequireDefault(_dispatchEvent);\n\nvar _defaults = __webpack_require__(6);\n\nvar _defaults2 = _interopRequireDefault(_defaults);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar slice = Array.prototype.slice;\n\nfunction lory(slider, opts) {\n var position = void 0;\n var slidesWidth = void 0;\n var frameWidth = void 0;\n var slides = void 0;\n\n /**\n * slider DOM elements\n */\n var frame = void 0;\n var slideContainer = void 0;\n var prevCtrl = void 0;\n var nextCtrl = void 0;\n var prefixes = void 0;\n var transitionEndCallback = void 0;\n\n var index = 0;\n var options = {};\n var touchEventParams = (0, _detectSupportsPassive2.default)() ? { passive: true } : false;\n\n /**\n * if object is jQuery convert to native DOM element\n */\n if (typeof jQuery !== 'undefined' && slider instanceof jQuery) {\n slider = slider[0];\n }\n\n /**\n * private\n * set active class to element which is the current slide\n */\n function setActiveElement(slides, currentIndex) {\n var _options = options,\n classNameActiveSlide = _options.classNameActiveSlide;\n\n\n slides.forEach(function (element, index) {\n if (element.classList.contains(classNameActiveSlide)) {\n element.classList.remove(classNameActiveSlide);\n }\n });\n\n slides[currentIndex].classList.add(classNameActiveSlide);\n }\n\n /**\n * private\n * setupInfinite: function to setup if infinite is set\n *\n * @param {array} slideArray\n * @return {array} array of updated slideContainer elements\n */\n function setupInfinite(slideArray) {\n var _options2 = options,\n infinite = _options2.infinite;\n\n\n var front = slideArray.slice(0, infinite);\n var back = slideArray.slice(slideArray.length - infinite, slideArray.length);\n\n front.forEach(function (element) {\n var cloned = element.cloneNode(true);\n\n slideContainer.appendChild(cloned);\n });\n\n back.reverse().forEach(function (element) {\n var cloned = element.cloneNode(true);\n\n slideContainer.insertBefore(cloned, slideContainer.firstChild);\n });\n\n slideContainer.addEventListener(prefixes.transitionEnd, onTransitionEnd);\n\n return slice.call(slideContainer.children);\n }\n\n /**\n * [dispatchSliderEvent description]\n * @return {[type]} [description]\n */\n function dispatchSliderEvent(phase, type, detail) {\n (0, _dispatchEvent2.default)(slider, phase + '.lory.' + type, detail);\n }\n\n /**\n * translates to a given position in a given time in milliseconds\n *\n * @to {number} number in pixels where to translate to\n * @duration {number} time in milliseconds for the transistion\n * @ease {string} easing css property\n */\n function translate(to, duration, ease) {\n var style = slideContainer && slideContainer.style;\n\n if (style) {\n style[prefixes.transition + 'TimingFunction'] = ease;\n style[prefixes.transition + 'Duration'] = duration + 'ms';\n style[prefixes.transform] = 'translateX(' + to + 'px)';\n }\n }\n\n /**\n * returns an element's width\n */\n function elementWidth(element) {\n return element.getBoundingClientRect().width || element.offsetWidth;\n }\n\n /**\n * slidefunction called by prev, next & touchend\n *\n * determine nextIndex and slide to next postion\n * under restrictions of the defined options\n *\n * @direction {boolean}\n */\n function slide(nextIndex, direction) {\n var _options3 = options,\n slideSpeed = _options3.slideSpeed,\n slidesToScroll = _options3.slidesToScroll,\n infinite = _options3.infinite,\n rewind = _options3.rewind,\n rewindPrev = _options3.rewindPrev,\n rewindSpeed = _options3.rewindSpeed,\n ease = _options3.ease,\n classNameActiveSlide = _options3.classNameActiveSlide,\n _options3$classNameDi = _options3.classNameDisabledNextCtrl,\n classNameDisabledNextCtrl = _options3$classNameDi === undefined ? 'disabled' : _options3$classNameDi,\n _options3$classNameDi2 = _options3.classNameDisabledPrevCtrl,\n classNameDisabledPrevCtrl = _options3$classNameDi2 === undefined ? 'disabled' : _options3$classNameDi2;\n\n\n var duration = slideSpeed;\n\n var nextSlide = direction ? index + 1 : index - 1;\n var maxOffset = Math.round(slidesWidth - frameWidth);\n\n dispatchSliderEvent('before', 'slide', {\n index: index,\n nextSlide: nextSlide\n });\n\n /**\n * Reset control classes\n */\n if (prevCtrl) {\n prevCtrl.classList.remove(classNameDisabledPrevCtrl);\n }\n if (nextCtrl) {\n nextCtrl.classList.remove(classNameDisabledNextCtrl);\n }\n\n if (typeof nextIndex !== 'number') {\n if (direction) {\n if (infinite && index + infinite * 2 !== slides.length) {\n nextIndex = index + (infinite - index % infinite);\n } else {\n nextIndex = index + slidesToScroll;\n }\n } else {\n if (infinite && index % infinite !== 0) {\n nextIndex = index - index % infinite;\n } else {\n nextIndex = index - slidesToScroll;\n }\n }\n }\n\n nextIndex = Math.min(Math.max(nextIndex, 0), slides.length - 1);\n\n if (infinite && direction === undefined) {\n nextIndex += infinite;\n }\n\n if (rewindPrev && Math.abs(position.x) === 0 && direction === false) {\n nextIndex = slides.length - 1;\n duration = rewindSpeed;\n }\n\n var nextOffset = Math.min(Math.max(slides[nextIndex].offsetLeft * -1, maxOffset * -1), 0);\n\n if (rewind && Math.abs(position.x) === maxOffset && direction) {\n nextOffset = 0;\n nextIndex = 0;\n duration = rewindSpeed;\n }\n\n /**\n * translate to the nextOffset by a defined duration and ease function\n */\n translate(nextOffset, duration, ease);\n\n /**\n * update the position with the next position\n */\n position.x = nextOffset;\n\n /**\n * update the index with the nextIndex only if\n * the offset of the nextIndex is in the range of the maxOffset\n */\n if (slides[nextIndex].offsetLeft <= maxOffset) {\n index = nextIndex;\n }\n\n if (infinite && (nextIndex === slides.length - infinite || nextIndex === slides.length - slides.length % infinite || nextIndex === 0)) {\n if (direction) {\n index = infinite;\n }\n\n if (!direction) {\n index = slides.length - infinite * 2;\n }\n\n position.x = slides[index].offsetLeft * -1;\n\n transitionEndCallback = function transitionEndCallback() {\n translate(slides[index].offsetLeft * -1, 0, undefined);\n };\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n\n /**\n * update classes for next and prev arrows\n * based on user settings\n */\n if (prevCtrl && !infinite && !rewindPrev && nextIndex === 0) {\n prevCtrl.classList.add(classNameDisabledPrevCtrl);\n }\n\n if (nextCtrl && !infinite && !rewind && nextIndex + 1 === slides.length) {\n nextCtrl.classList.add(classNameDisabledNextCtrl);\n }\n\n dispatchSliderEvent('after', 'slide', {\n currentSlide: index\n });\n }\n\n /**\n * public\n * setup function\n */\n function setup() {\n dispatchSliderEvent('before', 'init');\n\n prefixes = (0, _detectPrefixes2.default)();\n options = _extends({}, _defaults2.default, opts);\n\n var _options4 = options,\n classNameFrame = _options4.classNameFrame,\n classNameSlideContainer = _options4.classNameSlideContainer,\n classNamePrevCtrl = _options4.classNamePrevCtrl,\n classNameNextCtrl = _options4.classNameNextCtrl,\n _options4$classNameDi = _options4.classNameDisabledNextCtrl,\n classNameDisabledNextCtrl = _options4$classNameDi === undefined ? 'disabled' : _options4$classNameDi,\n _options4$classNameDi2 = _options4.classNameDisabledPrevCtrl,\n classNameDisabledPrevCtrl = _options4$classNameDi2 === undefined ? 'disabled' : _options4$classNameDi2,\n enableMouseEvents = _options4.enableMouseEvents,\n classNameActiveSlide = _options4.classNameActiveSlide,\n initialIndex = _options4.initialIndex;\n\n\n index = initialIndex;\n frame = slider.getElementsByClassName(classNameFrame)[0];\n slideContainer = frame.getElementsByClassName(classNameSlideContainer)[0];\n prevCtrl = slider.getElementsByClassName(classNamePrevCtrl)[0];\n nextCtrl = slider.getElementsByClassName(classNameNextCtrl)[0];\n\n position = {\n x: slideContainer.offsetLeft,\n y: slideContainer.offsetTop\n };\n\n if (options.infinite) {\n slides = setupInfinite(slice.call(slideContainer.children));\n } else {\n slides = slice.call(slideContainer.children);\n\n if (prevCtrl && !options.rewindPrev) {\n prevCtrl.classList.add(classNameDisabledPrevCtrl);\n }\n\n if (nextCtrl && slides.length === 1 && !options.rewind) {\n nextCtrl.classList.add(classNameDisabledNextCtrl);\n }\n }\n\n reset();\n\n if (classNameActiveSlide) {\n setActiveElement(slides, index);\n }\n\n if (prevCtrl && nextCtrl) {\n prevCtrl.addEventListener('click', prev);\n nextCtrl.addEventListener('click', next);\n }\n\n frame.addEventListener('touchstart', onTouchstart, touchEventParams);\n\n if (enableMouseEvents) {\n frame.addEventListener('mousedown', onTouchstart);\n frame.addEventListener('click', onClick);\n }\n\n options.window.addEventListener('resize', onResize);\n\n dispatchSliderEvent('after', 'init');\n }\n\n /**\n * public\n * reset function: called on resize\n */\n function reset() {\n var _options5 = options,\n infinite = _options5.infinite,\n ease = _options5.ease,\n rewindSpeed = _options5.rewindSpeed,\n rewindOnResize = _options5.rewindOnResize,\n classNameActiveSlide = _options5.classNameActiveSlide,\n initialIndex = _options5.initialIndex;\n\n\n slidesWidth = elementWidth(slideContainer);\n frameWidth = elementWidth(frame);\n\n if (frameWidth === slidesWidth) {\n slidesWidth = slides.reduce(function (previousValue, slide) {\n return previousValue + elementWidth(slide);\n }, 0);\n }\n\n if (rewindOnResize) {\n index = initialIndex;\n } else {\n ease = null;\n rewindSpeed = 0;\n }\n\n if (infinite) {\n translate(slides[index + infinite].offsetLeft * -1, 0, null);\n\n index = index + infinite;\n position.x = slides[index].offsetLeft * -1;\n } else {\n translate(slides[index].offsetLeft * -1, rewindSpeed, ease);\n position.x = slides[index].offsetLeft * -1;\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n }\n\n /**\n * public\n * slideTo: called on clickhandler\n */\n function slideTo(index) {\n slide(index);\n }\n\n /**\n * public\n * returnIndex function: called on clickhandler\n */\n function returnIndex() {\n return index - options.infinite || 0;\n }\n\n /**\n * public\n * prev function: called on clickhandler\n */\n function prev() {\n slide(false, false);\n }\n\n /**\n * public\n * next function: called on clickhandler\n */\n function next() {\n slide(false, true);\n }\n\n /**\n * public\n * destroy function: called to gracefully destroy the lory instance\n */\n function destroy() {\n dispatchSliderEvent('before', 'destroy');\n\n // remove event listeners\n frame.removeEventListener(prefixes.transitionEnd, onTransitionEnd);\n frame.removeEventListener('touchstart', onTouchstart, touchEventParams);\n frame.removeEventListener('touchmove', onTouchmove, touchEventParams);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mousedown', onTouchstart);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n frame.removeEventListener('click', onClick);\n\n options.window.removeEventListener('resize', onResize);\n\n if (prevCtrl) {\n prevCtrl.removeEventListener('click', prev);\n }\n\n if (nextCtrl) {\n nextCtrl.removeEventListener('click', next);\n }\n\n // remove cloned slides if infinite is set\n if (options.infinite) {\n Array.apply(null, Array(options.infinite)).forEach(function () {\n slideContainer.removeChild(slideContainer.firstChild);\n slideContainer.removeChild(slideContainer.lastChild);\n });\n }\n\n dispatchSliderEvent('after', 'destroy');\n }\n\n // event handling\n\n var touchOffset = void 0;\n var delta = void 0;\n var isScrolling = void 0;\n\n function onTransitionEnd() {\n if (transitionEndCallback) {\n transitionEndCallback();\n\n transitionEndCallback = undefined;\n }\n }\n\n function onTouchstart(event) {\n var _options6 = options,\n enableMouseEvents = _options6.enableMouseEvents;\n\n var touches = event.touches ? event.touches[0] : event;\n\n if (enableMouseEvents) {\n frame.addEventListener('mousemove', onTouchmove);\n frame.addEventListener('mouseup', onTouchend);\n frame.addEventListener('mouseleave', onTouchend);\n }\n\n frame.addEventListener('touchmove', onTouchmove, touchEventParams);\n frame.addEventListener('touchend', onTouchend);\n\n var pageX = touches.pageX,\n pageY = touches.pageY;\n\n\n touchOffset = {\n x: pageX,\n y: pageY,\n time: Date.now()\n };\n\n isScrolling = undefined;\n\n delta = {};\n\n dispatchSliderEvent('on', 'touchstart', {\n event: event\n });\n }\n\n function onTouchmove(event) {\n var touches = event.touches ? event.touches[0] : event;\n var pageX = touches.pageX,\n pageY = touches.pageY;\n\n\n delta = {\n x: pageX - touchOffset.x,\n y: pageY - touchOffset.y\n };\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(delta.x) < Math.abs(delta.y));\n }\n\n if (!isScrolling && touchOffset) {\n translate(position.x + delta.x, 0, null);\n }\n\n // may be\n dispatchSliderEvent('on', 'touchmove', {\n event: event\n });\n }\n\n function onTouchend(event) {\n /**\n * time between touchstart and touchend in milliseconds\n * @duration {number}\n */\n var duration = touchOffset ? Date.now() - touchOffset.time : undefined;\n\n /**\n * is valid if:\n *\n * -> swipe attempt time is over 300 ms\n * and\n * -> swipe distance is greater than 25px\n * or\n * -> swipe distance is more then a third of the swipe area\n *\n * @isValidSlide {Boolean}\n */\n var isValid = Number(duration) < 300 && Math.abs(delta.x) > 25 || Math.abs(delta.x) > frameWidth / 3;\n\n /**\n * is out of bounds if:\n *\n * -> index is 0 and delta x is greater than 0\n * or\n * -> index is the last slide and delta is smaller than 0\n *\n * @isOutOfBounds {Boolean}\n */\n var isOutOfBounds = !index && delta.x > 0 || index === slides.length - 1 && delta.x < 0;\n\n var direction = delta.x < 0;\n\n if (!isScrolling) {\n if (isValid && !isOutOfBounds) {\n slide(false, direction);\n } else {\n translate(position.x, options.snapBackSpeed);\n }\n }\n\n touchOffset = undefined;\n\n /**\n * remove eventlisteners after swipe attempt\n */\n frame.removeEventListener('touchmove', onTouchmove);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n\n dispatchSliderEvent('on', 'touchend', {\n event: event\n });\n }\n\n function onClick(event) {\n if (delta.x) {\n event.preventDefault();\n }\n }\n\n function onResize(event) {\n if (frameWidth !== elementWidth(frame)) {\n reset();\n\n dispatchSliderEvent('on', 'resize', {\n event: event\n });\n }\n }\n\n // trigger initial setup\n setup();\n\n // expose public api\n return {\n setup: setup,\n reset: reset,\n slideTo: slideTo,\n returnIndex: returnIndex,\n prev: prev,\n next: next,\n destroy: destroy\n };\n}\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = detectPrefixes;\n/**\n * Detecting prefixes for saving time and bytes\n */\nfunction detectPrefixes() {\n var transform = void 0;\n var transition = void 0;\n var transitionEnd = void 0;\n\n (function () {\n var el = document.createElement('_');\n var style = el.style;\n\n var prop = void 0;\n\n if (style[prop = 'webkitTransition'] === '') {\n transitionEnd = 'webkitTransitionEnd';\n transition = prop;\n }\n\n if (style[prop = 'transition'] === '') {\n transitionEnd = 'transitionend';\n transition = prop;\n }\n\n if (style[prop = 'webkitTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'msTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'transform'] === '') {\n transform = prop;\n }\n\n document.body.insertBefore(el, null);\n style[transform] = 'translateX(0)';\n document.body.removeChild(el);\n })();\n\n return {\n transform: transform,\n transition: transition,\n transitionEnd: transitionEnd\n };\n}\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = detectSupportsPassive;\nfunction detectSupportsPassive() {\n var supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n } catch (e) {}\n\n return supportsPassive;\n}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = dispatchEvent;\n\nvar _customEvent = __webpack_require__(4);\n\nvar _customEvent2 = _interopRequireDefault(_customEvent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * dispatch custom events\n *\n * @param {element} el slideshow element\n * @param {string} type custom event name\n * @param {object} detail custom detail information\n */\nfunction dispatchEvent(target, type, detail) {\n var event = new _customEvent2.default(type, {\n bubbles: true,\n cancelable: true,\n detail: detail\n });\n\n target.dispatchEvent(event);\n}\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {\nvar NativeCustomEvent = global.CustomEvent;\n\nfunction useNative () {\n try {\n var p = new NativeCustomEvent('cat', { detail: { foo: 'bar' } });\n return 'cat' === p.type && 'bar' === p.detail.foo;\n } catch (e) {\n }\n return false;\n}\n\n/**\n * Cross-browser `CustomEvent` constructor.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.CustomEvent\n *\n * @public\n */\n\nmodule.exports = useNative() ? NativeCustomEvent :\n\n// IE >= 9\n'undefined' !== typeof document && 'function' === typeof document.createEvent ? function CustomEvent (type, params) {\n var e = document.createEvent('CustomEvent');\n if (params) {\n e.initCustomEvent(type, params.bubbles, params.cancelable, params.detail);\n } else {\n e.initCustomEvent(type, false, false, void 0);\n }\n return e;\n} :\n\n// IE <= 8\nfunction CustomEvent (type, params) {\n var e = document.createEventObject();\n e.type = type;\n if (params) {\n e.bubbles = Boolean(params.bubbles);\n e.cancelable = Boolean(params.cancelable);\n e.detail = params.detail;\n } else {\n e.bubbles = false;\n e.cancelable = false;\n e.detail = void 0;\n }\n return e;\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5)))\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n /**\n * slides scrolled at once\n * @slidesToScroll {Number}\n */\n slidesToScroll: 1,\n\n /**\n * time in milliseconds for the animation of a valid slide attempt\n * @slideSpeed {Number}\n */\n slideSpeed: 300,\n\n /**\n * time in milliseconds for the animation of the rewind after the last slide\n * @rewindSpeed {Number}\n */\n rewindSpeed: 600,\n\n /**\n * time for the snapBack of the slider if the slide attempt was not valid\n * @snapBackSpeed {Number}\n */\n snapBackSpeed: 200,\n\n /**\n * Basic easing functions: https://developer.mozilla.org/de/docs/Web/CSS/transition-timing-function\n * cubic bezier easing functions: http://easings.net/de\n * @ease {String}\n */\n ease: 'ease',\n\n /**\n * if slider reached the last slide, with next click the slider goes back to the startindex.\n * use infinite or rewind, not both\n * @rewind {Boolean}\n */\n rewind: false,\n\n /**\n * number of visible slides or false\n * use infinite or rewind, not both\n * @infinite {number}\n */\n infinite: false,\n\n /**\n * the slide index to show when the slider is initialized.\n * @initialIndex {number}\n */\n initialIndex: 0,\n\n /**\n * class name for slider frame\n * @classNameFrame {string}\n */\n classNameFrame: 'js_frame',\n\n /**\n * class name for slides container\n * @classNameSlideContainer {string}\n */\n classNameSlideContainer: 'js_slides',\n\n /**\n * class name for slider prev control\n * @classNamePrevCtrl {string}\n */\n classNamePrevCtrl: 'js_prev',\n\n /**\n * class name for slider next control\n * @classNameNextCtrl {string}\n */\n classNameNextCtrl: 'js_next',\n\n /**\n * class name for current active slide\n * if emptyString then no class is set\n * @classNameActiveSlide {string}\n */\n classNameActiveSlide: 'active',\n\n /**\n * enables mouse events for swiping on desktop devices\n * @enableMouseEvents {boolean}\n */\n enableMouseEvents: false,\n\n /**\n * window instance\n * @window {object}\n */\n window: typeof window !== 'undefined' ? window : null,\n\n /**\n * If false, slides lory to the first slide on window resize.\n * @rewindOnResize {boolean}\n */\n rewindOnResize: true\n};\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(0);\n\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// lory.min.js"," \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, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\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 = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 7);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 85bdd04943e5c295f168","/* globals jQuery */\n\nimport detectPrefixes from './utils/detect-prefixes.js';\nimport supportsPassive from './utils/detect-supportsPassive';\nimport dispatchEvent from './utils/dispatch-event.js';\nimport defaults from './defaults.js';\n\nconst slice = Array.prototype.slice;\n\nexport function lory (slider, opts) {\n let position;\n let slidesWidth;\n let frameWidth;\n let slides;\n\n /**\n * slider DOM elements\n */\n let frame;\n let slideContainer;\n let prevCtrl;\n let nextCtrl;\n let prefixes;\n let transitionEndCallback;\n\n let index = 0;\n let options = {};\n let touchEventParams = supportsPassive() ? { passive: true } : false;\n\n /**\n * if object is jQuery convert to native DOM element\n */\n if (typeof jQuery !== 'undefined' && slider instanceof jQuery) {\n slider = slider[0];\n }\n\n /**\n * private\n * set active class to element which is the current slide\n */\n function setActiveElement (slides, currentIndex) {\n const {classNameActiveSlide} = options;\n\n slides.forEach((element, index) => {\n if (element.classList.contains(classNameActiveSlide)) {\n element.classList.remove(classNameActiveSlide);\n }\n });\n\n slides[currentIndex].classList.add(classNameActiveSlide);\n }\n\n /**\n * private\n * setupInfinite: function to setup if infinite is set\n *\n * @param {array} slideArray\n * @return {array} array of updated slideContainer elements\n */\n function setupInfinite (slideArray) {\n const {infinite} = options;\n\n const front = slideArray.slice(0, infinite);\n const back = slideArray.slice(slideArray.length - infinite, slideArray.length);\n\n front.forEach(function (element) {\n const cloned = element.cloneNode(true);\n\n slideContainer.appendChild(cloned);\n });\n\n back.reverse()\n .forEach(function (element) {\n const cloned = element.cloneNode(true);\n\n slideContainer.insertBefore(cloned, slideContainer.firstChild);\n });\n\n slideContainer.addEventListener(prefixes.transitionEnd, onTransitionEnd);\n\n return slice.call(slideContainer.children);\n }\n\n /**\n * [dispatchSliderEvent description]\n * @return {[type]} [description]\n */\n function dispatchSliderEvent (phase, type, detail) {\n dispatchEvent(slider, `${phase}.lory.${type}`, detail);\n }\n\n /**\n * translates to a given position in a given time in milliseconds\n *\n * @to {number} number in pixels where to translate to\n * @duration {number} time in milliseconds for the transistion\n * @ease {string} easing css property\n */\n function translate (to, duration, ease) {\n const style = slideContainer && slideContainer.style;\n\n if (style) {\n style[prefixes.transition + 'TimingFunction'] = ease;\n style[prefixes.transition + 'Duration'] = duration + 'ms';\n style[prefixes.transform] = 'translateX(' + to + 'px)';\n }\n }\n\n /**\n * returns an element's width\n */\n function elementWidth (element) {\n return element.getBoundingClientRect().width || element.offsetWidth;\n }\n\n /**\n * slidefunction called by prev, next & touchend\n *\n * determine nextIndex and slide to next postion\n * under restrictions of the defined options\n *\n * @direction {boolean}\n */\n function slide (nextIndex, direction) {\n const {\n slideSpeed,\n slidesToScroll,\n infinite,\n rewind,\n rewindPrev,\n rewindSpeed,\n ease,\n classNameActiveSlide,\n classNameDisabledNextCtrl = 'disabled',\n classNameDisabledPrevCtrl = 'disabled'\n } = options;\n\n let duration = slideSpeed;\n\n const nextSlide = direction ? index + 1 : index - 1;\n const maxOffset = Math.round(slidesWidth - frameWidth);\n\n dispatchSliderEvent('before', 'slide', {\n index,\n nextSlide\n });\n\n /**\n * Reset control classes\n */\n if (prevCtrl) {\n prevCtrl.classList.remove(classNameDisabledPrevCtrl);\n }\n if (nextCtrl) {\n nextCtrl.classList.remove(classNameDisabledNextCtrl);\n }\n\n if (typeof nextIndex !== 'number') {\n if (direction) {\n if (infinite && index + (infinite * 2) !== slides.length) {\n nextIndex = index + (infinite - index % infinite);\n } else {\n nextIndex = index + slidesToScroll;\n }\n } else {\n if (infinite && index % infinite !== 0) {\n nextIndex = index - index % infinite;\n } else {\n nextIndex = index - slidesToScroll;\n }\n }\n }\n\n nextIndex = Math.min(Math.max(nextIndex, 0), slides.length - 1);\n\n if (infinite && direction === undefined) {\n nextIndex += infinite;\n }\n\n if (rewindPrev && Math.abs(position.x) === 0 && direction === false) {\n nextIndex = slides.length - 1;\n duration = rewindSpeed;\n }\n\n let nextOffset = Math.min(Math.max(slides[nextIndex].offsetLeft * -1, maxOffset * -1), 0);\n\n if (rewind && Math.abs(position.x) === maxOffset && direction) {\n nextOffset = 0;\n nextIndex = 0;\n duration = rewindSpeed;\n }\n\n /**\n * translate to the nextOffset by a defined duration and ease function\n */\n translate(nextOffset, duration, ease);\n\n /**\n * update the position with the next position\n */\n position.x = nextOffset;\n\n /**\n * update the index with the nextIndex only if\n * the offset of the nextIndex is in the range of the maxOffset\n */\n if (slides[nextIndex].offsetLeft <= maxOffset) {\n index = nextIndex;\n }\n\n if (infinite && (nextIndex === slides.length - infinite ||\n nextIndex === slides.length - slides.length % infinite || nextIndex === 0)) {\n if (direction) {\n index = infinite;\n }\n\n if (!direction) {\n index = slides.length - (infinite * 2);\n }\n\n position.x = slides[index].offsetLeft * -1;\n\n transitionEndCallback = function () {\n translate(slides[index].offsetLeft * -1, 0, undefined);\n };\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n\n /**\n * update classes for next and prev arrows\n * based on user settings\n */\n if (prevCtrl && !infinite && !rewindPrev && nextIndex === 0) {\n prevCtrl.classList.add(classNameDisabledPrevCtrl);\n }\n\n if (nextCtrl && !infinite && !rewind && ((nextIndex + 1) === slides.length)) {\n nextCtrl.classList.add(classNameDisabledNextCtrl);\n }\n\n dispatchSliderEvent('after', 'slide', {\n currentSlide: index\n });\n }\n\n /**\n * public\n * setup function\n */\n function setup () {\n dispatchSliderEvent('before', 'init');\n\n prefixes = detectPrefixes();\n options = {...defaults, ...opts};\n\n const {\n classNameFrame,\n classNameSlideContainer,\n classNamePrevCtrl,\n classNameNextCtrl,\n classNameDisabledNextCtrl = 'disabled',\n classNameDisabledPrevCtrl = 'disabled',\n enableMouseEvents,\n classNameActiveSlide,\n initialIndex\n } = options;\n\n index = initialIndex;\n frame = slider.getElementsByClassName(classNameFrame)[0];\n slideContainer = frame.getElementsByClassName(classNameSlideContainer)[0];\n prevCtrl = slider.getElementsByClassName(classNamePrevCtrl)[0];\n nextCtrl = slider.getElementsByClassName(classNameNextCtrl)[0];\n\n position = {\n x: slideContainer.offsetLeft,\n y: slideContainer.offsetTop\n };\n\n if (options.infinite) {\n slides = setupInfinite(slice.call(slideContainer.children));\n } else {\n slides = slice.call(slideContainer.children);\n\n if (prevCtrl && !options.rewindPrev) {\n prevCtrl.classList.add(classNameDisabledPrevCtrl);\n }\n\n if (nextCtrl && (slides.length === 1) && !options.rewind) {\n nextCtrl.classList.add(classNameDisabledNextCtrl);\n }\n }\n\n reset();\n\n if (classNameActiveSlide) {\n setActiveElement(slides, index);\n }\n\n if (prevCtrl && nextCtrl) {\n prevCtrl.addEventListener('click', prev);\n nextCtrl.addEventListener('click', next);\n }\n\n frame.addEventListener('touchstart', onTouchstart, touchEventParams);\n\n if (enableMouseEvents) {\n frame.addEventListener('mousedown', onTouchstart);\n frame.addEventListener('click', onClick);\n }\n\n options.window.addEventListener('resize', onResize);\n\n dispatchSliderEvent('after', 'init');\n }\n\n /**\n * public\n * reset function: called on resize\n */\n function reset () {\n var {infinite, ease, rewindSpeed, rewindOnResize, classNameActiveSlide, initialIndex} = options;\n\n slidesWidth = elementWidth(slideContainer);\n frameWidth = elementWidth(frame);\n\n if (frameWidth === slidesWidth) {\n slidesWidth = slides.reduce(function (previousValue, slide) {\n return previousValue + elementWidth(slide);\n }, 0);\n }\n\n if (rewindOnResize) {\n index = initialIndex;\n } else {\n ease = null;\n rewindSpeed = 0;\n }\n\n if (infinite) {\n translate(slides[index + infinite].offsetLeft * -1, 0, null);\n\n index = index + infinite;\n position.x = slides[index].offsetLeft * -1;\n } else {\n translate(slides[index].offsetLeft * -1, rewindSpeed, ease);\n position.x = slides[index].offsetLeft * -1;\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n }\n\n /**\n * public\n * slideTo: called on clickhandler\n */\n function slideTo (index) {\n slide(index);\n }\n\n /**\n * public\n * returnIndex function: called on clickhandler\n */\n function returnIndex () {\n return index - options.infinite || 0;\n }\n\n /**\n * public\n * prev function: called on clickhandler\n */\n function prev () {\n slide(false, false);\n }\n\n /**\n * public\n * next function: called on clickhandler\n */\n function next () {\n slide(false, true);\n }\n\n /**\n * public\n * destroy function: called to gracefully destroy the lory instance\n */\n function destroy () {\n dispatchSliderEvent('before', 'destroy');\n\n // remove event listeners\n frame.removeEventListener(prefixes.transitionEnd, onTransitionEnd);\n frame.removeEventListener('touchstart', onTouchstart, touchEventParams);\n frame.removeEventListener('touchmove', onTouchmove, touchEventParams);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mousedown', onTouchstart);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n frame.removeEventListener('click', onClick);\n\n options.window.removeEventListener('resize', onResize);\n\n if (prevCtrl) {\n prevCtrl.removeEventListener('click', prev);\n }\n\n if (nextCtrl) {\n nextCtrl.removeEventListener('click', next);\n }\n\n // remove cloned slides if infinite is set\n if (options.infinite) {\n Array.apply(null, Array(options.infinite)).forEach(function () {\n slideContainer.removeChild(slideContainer.firstChild);\n slideContainer.removeChild(slideContainer.lastChild);\n });\n }\n\n dispatchSliderEvent('after', 'destroy');\n }\n\n // event handling\n\n let touchOffset;\n let delta;\n let isScrolling;\n\n function onTransitionEnd () {\n if (transitionEndCallback) {\n transitionEndCallback();\n\n transitionEndCallback = undefined;\n }\n }\n\n function onTouchstart (event) {\n const {enableMouseEvents} = options;\n const touches = event.touches ? event.touches[0] : event;\n\n if (enableMouseEvents) {\n frame.addEventListener('mousemove', onTouchmove);\n frame.addEventListener('mouseup', onTouchend);\n frame.addEventListener('mouseleave', onTouchend);\n }\n\n frame.addEventListener('touchmove', onTouchmove, touchEventParams);\n frame.addEventListener('touchend', onTouchend);\n\n const {pageX, pageY} = touches;\n\n touchOffset = {\n x: pageX,\n y: pageY,\n time: Date.now()\n };\n\n isScrolling = undefined;\n\n delta = {};\n\n dispatchSliderEvent('on', 'touchstart', {\n event\n });\n }\n\n function onTouchmove (event) {\n const touches = event.touches ? event.touches[0] : event;\n const {pageX, pageY} = touches;\n\n delta = {\n x: pageX - touchOffset.x,\n y: pageY - touchOffset.y\n };\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(delta.x) < Math.abs(delta.y));\n }\n\n if (!isScrolling && touchOffset) {\n translate(position.x + delta.x, 0, null);\n }\n\n // may be\n dispatchSliderEvent('on', 'touchmove', {\n event\n });\n }\n\n function onTouchend (event) {\n /**\n * time between touchstart and touchend in milliseconds\n * @duration {number}\n */\n const duration = touchOffset ? Date.now() - touchOffset.time : undefined;\n\n /**\n * is valid if:\n *\n * -> swipe attempt time is over 300 ms\n * and\n * -> swipe distance is greater than 25px\n * or\n * -> swipe distance is more then a third of the swipe area\n *\n * @isValidSlide {Boolean}\n */\n const isValid = Number(duration) < 300 &&\n Math.abs(delta.x) > 25 ||\n Math.abs(delta.x) > frameWidth / 3;\n\n /**\n * is out of bounds if:\n *\n * -> index is 0 and delta x is greater than 0\n * or\n * -> index is the last slide and delta is smaller than 0\n *\n * @isOutOfBounds {Boolean}\n */\n const isOutOfBounds = !index && delta.x > 0 ||\n index === slides.length - 1 && delta.x < 0;\n\n const direction = delta.x < 0;\n\n if (!isScrolling) {\n if (isValid && !isOutOfBounds) {\n slide(false, direction);\n } else {\n translate(position.x, options.snapBackSpeed);\n }\n }\n\n touchOffset = undefined;\n\n /**\n * remove eventlisteners after swipe attempt\n */\n frame.removeEventListener('touchmove', onTouchmove);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n\n dispatchSliderEvent('on', 'touchend', {\n event\n });\n }\n\n function onClick (event) {\n if (delta.x) {\n event.preventDefault();\n }\n }\n\n function onResize (event) {\n if (frameWidth !== elementWidth(frame)) {\n reset();\n\n dispatchSliderEvent('on', 'resize', {\n event\n });\n }\n }\n\n // trigger initial setup\n setup();\n\n // expose public api\n return {\n setup,\n reset,\n slideTo,\n returnIndex,\n prev,\n next,\n destroy\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/lory.js","/**\n * Detecting prefixes for saving time and bytes\n */\nexport default function detectPrefixes () {\n let transform;\n let transition;\n let transitionEnd;\n\n (function () {\n let el = document.createElement('_');\n let style = el.style;\n\n let prop;\n\n if (style[prop = 'webkitTransition'] === '') {\n transitionEnd = 'webkitTransitionEnd';\n transition = prop;\n }\n\n if (style[prop = 'transition'] === '') {\n transitionEnd = 'transitionend';\n transition = prop;\n }\n\n if (style[prop = 'webkitTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'msTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'transform'] === '') {\n transform = prop;\n }\n\n document.body.insertBefore(el, null);\n style[transform] = 'translateX(0)';\n document.body.removeChild(el);\n }());\n\n return {\n transform,\n transition,\n transitionEnd\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/detect-prefixes.js","export default function detectSupportsPassive () {\n let supportsPassive = false;\n\n try {\n let opts = Object.defineProperty({}, 'passive', {\n get () {\n supportsPassive = true;\n }\n });\n\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n } catch (e) {}\n\n return supportsPassive;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/detect-supportsPassive.js","import CustomEvent from 'custom-event';\n\n/**\n * dispatch custom events\n *\n * @param {element} el slideshow element\n * @param {string} type custom event name\n * @param {object} detail custom detail information\n */\nexport default function dispatchEvent (target, type, detail) {\n let event = new CustomEvent(\n type,\n {\n bubbles: true,\n cancelable: true,\n detail: detail\n }\n );\n\n target.dispatchEvent(event);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/dispatch-event.js","\nvar NativeCustomEvent = global.CustomEvent;\n\nfunction useNative () {\n try {\n var p = new NativeCustomEvent('cat', { detail: { foo: 'bar' } });\n return 'cat' === p.type && 'bar' === p.detail.foo;\n } catch (e) {\n }\n return false;\n}\n\n/**\n * Cross-browser `CustomEvent` constructor.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.CustomEvent\n *\n * @public\n */\n\nmodule.exports = useNative() ? NativeCustomEvent :\n\n// IE >= 9\n'undefined' !== typeof document && 'function' === typeof document.createEvent ? function CustomEvent (type, params) {\n var e = document.createEvent('CustomEvent');\n if (params) {\n e.initCustomEvent(type, params.bubbles, params.cancelable, params.detail);\n } else {\n e.initCustomEvent(type, false, false, void 0);\n }\n return e;\n} :\n\n// IE <= 8\nfunction CustomEvent (type, params) {\n var e = document.createEventObject();\n e.type = type;\n if (params) {\n e.bubbles = Boolean(params.bubbles);\n e.cancelable = Boolean(params.cancelable);\n e.detail = params.detail;\n } else {\n e.bubbles = false;\n e.cancelable = false;\n e.detail = void 0;\n }\n return e;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/custom-event/index.js\n// module id = 4\n// module chunks = 0 1","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 5\n// module chunks = 0 1","export default {\n /**\n * slides scrolled at once\n * @slidesToScroll {Number}\n */\n slidesToScroll: 1,\n\n /**\n * time in milliseconds for the animation of a valid slide attempt\n * @slideSpeed {Number}\n */\n slideSpeed: 300,\n\n /**\n * time in milliseconds for the animation of the rewind after the last slide\n * @rewindSpeed {Number}\n */\n rewindSpeed: 600,\n\n /**\n * time for the snapBack of the slider if the slide attempt was not valid\n * @snapBackSpeed {Number}\n */\n snapBackSpeed: 200,\n\n /**\n * Basic easing functions: https://developer.mozilla.org/de/docs/Web/CSS/transition-timing-function\n * cubic bezier easing functions: http://easings.net/de\n * @ease {String}\n */\n ease: 'ease',\n\n /**\n * if slider reached the last slide, with next click the slider goes back to the startindex.\n * use infinite or rewind, not both\n * @rewind {Boolean}\n */\n rewind: false,\n\n /**\n * number of visible slides or false\n * use infinite or rewind, not both\n * @infinite {number}\n */\n infinite: false,\n\n /**\n * the slide index to show when the slider is initialized.\n * @initialIndex {number}\n */\n initialIndex: 0,\n\n /**\n * class name for slider frame\n * @classNameFrame {string}\n */\n classNameFrame: 'js_frame',\n\n /**\n * class name for slides container\n * @classNameSlideContainer {string}\n */\n classNameSlideContainer: 'js_slides',\n\n /**\n * class name for slider prev control\n * @classNamePrevCtrl {string}\n */\n classNamePrevCtrl: 'js_prev',\n\n /**\n * class name for slider next control\n * @classNameNextCtrl {string}\n */\n classNameNextCtrl: 'js_next',\n\n /**\n * class name for current active slide\n * if emptyString then no class is set\n * @classNameActiveSlide {string}\n */\n classNameActiveSlide: 'active',\n\n /**\n * enables mouse events for swiping on desktop devices\n * @enableMouseEvents {boolean}\n */\n enableMouseEvents: false,\n\n /**\n * window instance\n * @window {object}\n */\n window: typeof window !== 'undefined' ? window : null,\n\n /**\n * If false, slides lory to the first slide on window resize.\n * @rewindOnResize {boolean}\n */\n rewindOnResize: true\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/defaults.js"],"sourceRoot":""} \ No newline at end of file +<<<<<<< refs/remotes/upstream/master +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///lory.min.js","webpack:///webpack/bootstrap 85bdd04943e5c295f168","webpack:///./src/lory.js","webpack:///./src/utils/detect-prefixes.js","webpack:///./src/utils/detect-supportsPassive.js","webpack:///./src/utils/dispatch-event.js","webpack:///./node_modules/custom-event/index.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/defaults.js"],"names":["root","factory","exports","module","define","amd","a","i","self","this","modules","__webpack_require__","moduleId","installedModules","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","_interopRequireDefault","obj","default","lory","slider","opts","setActiveElement","slides","currentIndex","_options","options","classNameActiveSlide","forEach","element","index","classList","contains","remove","add","setupInfinite","slideArray","_options2","infinite","front","slice","back","length","cloned","cloneNode","slideContainer","appendChild","reverse","insertBefore","firstChild","addEventListener","prefixes","transitionEnd","onTransitionEnd","children","dispatchSliderEvent","phase","type","detail","_dispatchEvent2","translate","to","duration","ease","style","transition","transform","elementWidth","getBoundingClientRect","width","offsetWidth","slide","nextIndex","direction","_options3","slideSpeed","slidesToScroll","rewind","rewindPrev","rewindSpeed","_options3$classNameDi","classNameDisabledNextCtrl","undefined","_options3$classNameDi2","classNameDisabledPrevCtrl","nextSlide","maxOffset","Math","round","slidesWidth","frameWidth","prevCtrl","nextCtrl","min","max","abs","position","x","nextOffset","offsetLeft","transitionEndCallback","currentSlide","setup","_detectPrefixes2","_options4","classNameFrame","classNameSlideContainer","classNamePrevCtrl","classNameNextCtrl","_options4$classNameDi","_options4$classNameDi2","enableMouseEvents","initialIndex","frame","getElementsByClassName","y","offsetTop","reset","prev","next","onTouchstart","touchEventParams","onClick","window","onResize","_options5","rewindOnResize","reduce","previousValue","slideTo","returnIndex","destroy","removeEventListener","onTouchmove","onTouchend","Array","apply","removeChild","lastChild","event","_options6","touches","pageX","pageY","touchOffset","time","Date","now","isScrolling","delta","isValid","Number","isOutOfBounds","snapBackSpeed","preventDefault","_detectSupportsPassive2","passive","jQuery","value","_extends","assign","target","arguments","source","key","_detectPrefixes","_detectSupportsPassive","_dispatchEvent","_defaults","_defaults2","detectPrefixes","el","document","createElement","prop","body","detectSupportsPassive","supportsPassive","e","dispatchEvent","_customEvent2","bubbles","cancelable","_customEvent","global","NativeCustomEvent","CustomEvent","foo","createEvent","params","initCustomEvent","createEventObject","Boolean","g","Function","eval"],"mappings":"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","file":"lory.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\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 = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 7);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* globals jQuery */\n\nexports.lory = lory;\n\nvar _detectPrefixes = __webpack_require__(1);\n\nvar _detectPrefixes2 = _interopRequireDefault(_detectPrefixes);\n\nvar _detectSupportsPassive = __webpack_require__(2);\n\nvar _detectSupportsPassive2 = _interopRequireDefault(_detectSupportsPassive);\n\nvar _dispatchEvent = __webpack_require__(3);\n\nvar _dispatchEvent2 = _interopRequireDefault(_dispatchEvent);\n\nvar _defaults = __webpack_require__(6);\n\nvar _defaults2 = _interopRequireDefault(_defaults);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar slice = Array.prototype.slice;\n\nfunction lory(slider, opts) {\n var position = void 0;\n var slidesWidth = void 0;\n var frameWidth = void 0;\n var slides = void 0;\n\n /**\n * slider DOM elements\n */\n var frame = void 0;\n var slideContainer = void 0;\n var prevCtrl = void 0;\n var nextCtrl = void 0;\n var prefixes = void 0;\n var transitionEndCallback = void 0;\n\n var index = 0;\n var options = {};\n var touchEventParams = (0, _detectSupportsPassive2.default)() ? { passive: true } : false;\n\n /**\n * if object is jQuery convert to native DOM element\n */\n if (typeof jQuery !== 'undefined' && slider instanceof jQuery) {\n slider = slider[0];\n }\n\n /**\n * private\n * set active class to element which is the current slide\n */\n function setActiveElement(slides, currentIndex) {\n var _options = options,\n classNameActiveSlide = _options.classNameActiveSlide;\n\n\n slides.forEach(function (element, index) {\n if (element.classList.contains(classNameActiveSlide)) {\n element.classList.remove(classNameActiveSlide);\n }\n });\n\n slides[currentIndex].classList.add(classNameActiveSlide);\n }\n\n /**\n * private\n * setupInfinite: function to setup if infinite is set\n *\n * @param {array} slideArray\n * @return {array} array of updated slideContainer elements\n */\n function setupInfinite(slideArray) {\n var _options2 = options,\n infinite = _options2.infinite;\n\n\n var front = slideArray.slice(0, infinite);\n var back = slideArray.slice(slideArray.length - infinite, slideArray.length);\n\n front.forEach(function (element) {\n var cloned = element.cloneNode(true);\n\n slideContainer.appendChild(cloned);\n });\n\n back.reverse().forEach(function (element) {\n var cloned = element.cloneNode(true);\n\n slideContainer.insertBefore(cloned, slideContainer.firstChild);\n });\n\n slideContainer.addEventListener(prefixes.transitionEnd, onTransitionEnd);\n\n return slice.call(slideContainer.children);\n }\n\n /**\n * [dispatchSliderEvent description]\n * @return {[type]} [description]\n */\n function dispatchSliderEvent(phase, type, detail) {\n (0, _dispatchEvent2.default)(slider, phase + '.lory.' + type, detail);\n }\n\n /**\n * translates to a given position in a given time in milliseconds\n *\n * @to {number} number in pixels where to translate to\n * @duration {number} time in milliseconds for the transistion\n * @ease {string} easing css property\n */\n function translate(to, duration, ease) {\n var style = slideContainer && slideContainer.style;\n\n if (style) {\n style[prefixes.transition + 'TimingFunction'] = ease;\n style[prefixes.transition + 'Duration'] = duration + 'ms';\n style[prefixes.transform] = 'translateX(' + to + 'px)';\n }\n }\n\n /**\n * returns an element's width\n */\n function elementWidth(element) {\n return element.getBoundingClientRect().width || element.offsetWidth;\n }\n\n /**\n * slidefunction called by prev, next & touchend\n *\n * determine nextIndex and slide to next postion\n * under restrictions of the defined options\n *\n * @direction {boolean}\n */\n function slide(nextIndex, direction) {\n var _options3 = options,\n slideSpeed = _options3.slideSpeed,\n slidesToScroll = _options3.slidesToScroll,\n infinite = _options3.infinite,\n rewind = _options3.rewind,\n rewindPrev = _options3.rewindPrev,\n rewindSpeed = _options3.rewindSpeed,\n ease = _options3.ease,\n classNameActiveSlide = _options3.classNameActiveSlide,\n _options3$classNameDi = _options3.classNameDisabledNextCtrl,\n classNameDisabledNextCtrl = _options3$classNameDi === undefined ? 'disabled' : _options3$classNameDi,\n _options3$classNameDi2 = _options3.classNameDisabledPrevCtrl,\n classNameDisabledPrevCtrl = _options3$classNameDi2 === undefined ? 'disabled' : _options3$classNameDi2;\n\n\n var duration = slideSpeed;\n\n var nextSlide = direction ? index + 1 : index - 1;\n var maxOffset = Math.round(slidesWidth - frameWidth);\n\n dispatchSliderEvent('before', 'slide', {\n index: index,\n nextSlide: nextSlide\n });\n\n /**\n * Reset control classes\n */\n if (prevCtrl) {\n prevCtrl.classList.remove(classNameDisabledPrevCtrl);\n }\n if (nextCtrl) {\n nextCtrl.classList.remove(classNameDisabledNextCtrl);\n }\n\n if (typeof nextIndex !== 'number') {\n if (direction) {\n if (infinite && index + infinite * 2 !== slides.length) {\n nextIndex = index + (infinite - index % infinite);\n } else {\n nextIndex = index + slidesToScroll;\n }\n } else {\n if (infinite && index % infinite !== 0) {\n nextIndex = index - index % infinite;\n } else {\n nextIndex = index - slidesToScroll;\n }\n }\n }\n\n nextIndex = Math.min(Math.max(nextIndex, 0), slides.length - 1);\n\n if (infinite && direction === undefined) {\n nextIndex += infinite;\n }\n\n if (rewindPrev && Math.abs(position.x) === 0 && direction === false) {\n nextIndex = slides.length - 1;\n duration = rewindSpeed;\n }\n\n var nextOffset = Math.min(Math.max(slides[nextIndex].offsetLeft * -1, maxOffset * -1), 0);\n\n if (rewind && Math.abs(position.x) === maxOffset && direction) {\n nextOffset = 0;\n nextIndex = 0;\n duration = rewindSpeed;\n }\n\n /**\n * translate to the nextOffset by a defined duration and ease function\n */\n translate(nextOffset, duration, ease);\n\n /**\n * update the position with the next position\n */\n position.x = nextOffset;\n\n /**\n * update the index with the nextIndex only if\n * the offset of the nextIndex is in the range of the maxOffset\n */\n if (slides[nextIndex].offsetLeft <= maxOffset) {\n index = nextIndex;\n }\n\n if (infinite && (nextIndex === slides.length - infinite || nextIndex === slides.length - slides.length % infinite || nextIndex === 0)) {\n if (direction) {\n index = infinite;\n }\n\n if (!direction) {\n index = slides.length - infinite * 2;\n }\n\n position.x = slides[index].offsetLeft * -1;\n\n transitionEndCallback = function transitionEndCallback() {\n translate(slides[index].offsetLeft * -1, 0, undefined);\n };\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n\n /**\n * update classes for next and prev arrows\n * based on user settings\n */\n if (prevCtrl && !infinite && !rewindPrev && nextIndex === 0) {\n prevCtrl.classList.add(classNameDisabledPrevCtrl);\n }\n\n if (nextCtrl && !infinite && !rewind && nextIndex + 1 === slides.length) {\n nextCtrl.classList.add(classNameDisabledNextCtrl);\n }\n\n dispatchSliderEvent('after', 'slide', {\n currentSlide: index\n });\n }\n\n /**\n * public\n * setup function\n */\n function setup() {\n dispatchSliderEvent('before', 'init');\n\n prefixes = (0, _detectPrefixes2.default)();\n options = _extends({}, _defaults2.default, opts);\n\n var _options4 = options,\n classNameFrame = _options4.classNameFrame,\n classNameSlideContainer = _options4.classNameSlideContainer,\n classNamePrevCtrl = _options4.classNamePrevCtrl,\n classNameNextCtrl = _options4.classNameNextCtrl,\n _options4$classNameDi = _options4.classNameDisabledNextCtrl,\n classNameDisabledNextCtrl = _options4$classNameDi === undefined ? 'disabled' : _options4$classNameDi,\n _options4$classNameDi2 = _options4.classNameDisabledPrevCtrl,\n classNameDisabledPrevCtrl = _options4$classNameDi2 === undefined ? 'disabled' : _options4$classNameDi2,\n enableMouseEvents = _options4.enableMouseEvents,\n classNameActiveSlide = _options4.classNameActiveSlide,\n initialIndex = _options4.initialIndex;\n\n\n index = initialIndex;\n frame = slider.getElementsByClassName(classNameFrame)[0];\n slideContainer = frame.getElementsByClassName(classNameSlideContainer)[0];\n prevCtrl = slider.getElementsByClassName(classNamePrevCtrl)[0];\n nextCtrl = slider.getElementsByClassName(classNameNextCtrl)[0];\n\n position = {\n x: slideContainer.offsetLeft,\n y: slideContainer.offsetTop\n };\n\n if (options.infinite) {\n slides = setupInfinite(slice.call(slideContainer.children));\n } else {\n slides = slice.call(slideContainer.children);\n\n if (prevCtrl && !options.rewindPrev) {\n prevCtrl.classList.add(classNameDisabledPrevCtrl);\n }\n\n if (nextCtrl && slides.length === 1 && !options.rewind) {\n nextCtrl.classList.add(classNameDisabledNextCtrl);\n }\n }\n\n reset();\n\n if (classNameActiveSlide) {\n setActiveElement(slides, index);\n }\n\n if (prevCtrl && nextCtrl) {\n prevCtrl.addEventListener('click', prev);\n nextCtrl.addEventListener('click', next);\n }\n\n frame.addEventListener('touchstart', onTouchstart, touchEventParams);\n\n if (enableMouseEvents) {\n frame.addEventListener('mousedown', onTouchstart);\n frame.addEventListener('click', onClick);\n }\n\n options.window.addEventListener('resize', onResize);\n\n dispatchSliderEvent('after', 'init');\n }\n\n /**\n * public\n * reset function: called on resize\n */\n function reset() {\n var _options5 = options,\n infinite = _options5.infinite,\n ease = _options5.ease,\n rewindSpeed = _options5.rewindSpeed,\n rewindOnResize = _options5.rewindOnResize,\n classNameActiveSlide = _options5.classNameActiveSlide,\n initialIndex = _options5.initialIndex;\n\n\n slidesWidth = elementWidth(slideContainer);\n frameWidth = elementWidth(frame);\n\n if (frameWidth === slidesWidth) {\n slidesWidth = slides.reduce(function (previousValue, slide) {\n return previousValue + elementWidth(slide);\n }, 0);\n }\n\n if (rewindOnResize) {\n index = initialIndex;\n } else {\n ease = null;\n rewindSpeed = 0;\n }\n\n if (infinite) {\n translate(slides[index + infinite].offsetLeft * -1, 0, null);\n\n index = index + infinite;\n position.x = slides[index].offsetLeft * -1;\n } else {\n translate(slides[index].offsetLeft * -1, rewindSpeed, ease);\n position.x = slides[index].offsetLeft * -1;\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n }\n\n /**\n * public\n * slideTo: called on clickhandler\n */\n function slideTo(index) {\n slide(index);\n }\n\n /**\n * public\n * returnIndex function: called on clickhandler\n */\n function returnIndex() {\n return index - options.infinite || 0;\n }\n\n /**\n * public\n * prev function: called on clickhandler\n */\n function prev() {\n slide(false, false);\n }\n\n /**\n * public\n * next function: called on clickhandler\n */\n function next() {\n slide(false, true);\n }\n\n /**\n * public\n * destroy function: called to gracefully destroy the lory instance\n */\n function destroy() {\n dispatchSliderEvent('before', 'destroy');\n\n // remove event listeners\n frame.removeEventListener(prefixes.transitionEnd, onTransitionEnd);\n frame.removeEventListener('touchstart', onTouchstart, touchEventParams);\n frame.removeEventListener('touchmove', onTouchmove, touchEventParams);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mousedown', onTouchstart);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n frame.removeEventListener('click', onClick);\n\n options.window.removeEventListener('resize', onResize);\n\n if (prevCtrl) {\n prevCtrl.removeEventListener('click', prev);\n }\n\n if (nextCtrl) {\n nextCtrl.removeEventListener('click', next);\n }\n\n // remove cloned slides if infinite is set\n if (options.infinite) {\n Array.apply(null, Array(options.infinite)).forEach(function () {\n slideContainer.removeChild(slideContainer.firstChild);\n slideContainer.removeChild(slideContainer.lastChild);\n });\n }\n\n dispatchSliderEvent('after', 'destroy');\n }\n\n // event handling\n\n var touchOffset = void 0;\n var delta = void 0;\n var isScrolling = void 0;\n\n function onTransitionEnd() {\n if (transitionEndCallback) {\n transitionEndCallback();\n\n transitionEndCallback = undefined;\n }\n }\n\n function onTouchstart(event) {\n var _options6 = options,\n enableMouseEvents = _options6.enableMouseEvents;\n\n var touches = event.touches ? event.touches[0] : event;\n\n if (enableMouseEvents) {\n frame.addEventListener('mousemove', onTouchmove);\n frame.addEventListener('mouseup', onTouchend);\n frame.addEventListener('mouseleave', onTouchend);\n }\n\n frame.addEventListener('touchmove', onTouchmove, touchEventParams);\n frame.addEventListener('touchend', onTouchend);\n\n var pageX = touches.pageX,\n pageY = touches.pageY;\n\n\n touchOffset = {\n x: pageX,\n y: pageY,\n time: Date.now()\n };\n\n isScrolling = undefined;\n\n delta = {};\n\n dispatchSliderEvent('on', 'touchstart', {\n event: event\n });\n }\n\n function onTouchmove(event) {\n var touches = event.touches ? event.touches[0] : event;\n var pageX = touches.pageX,\n pageY = touches.pageY;\n\n\n delta = {\n x: pageX - touchOffset.x,\n y: pageY - touchOffset.y\n };\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(delta.x) < Math.abs(delta.y));\n }\n\n if (!isScrolling && touchOffset) {\n translate(position.x + delta.x, 0, null);\n }\n\n // may be\n dispatchSliderEvent('on', 'touchmove', {\n event: event\n });\n }\n\n function onTouchend(event) {\n /**\n * time between touchstart and touchend in milliseconds\n * @duration {number}\n */\n var duration = touchOffset ? Date.now() - touchOffset.time : undefined;\n\n /**\n * is valid if:\n *\n * -> swipe attempt time is over 300 ms\n * and\n * -> swipe distance is greater than 25px\n * or\n * -> swipe distance is more then a third of the swipe area\n *\n * @isValidSlide {Boolean}\n */\n var isValid = Number(duration) < 300 && Math.abs(delta.x) > 25 || Math.abs(delta.x) > frameWidth / 3;\n\n /**\n * is out of bounds if:\n *\n * -> index is 0 and delta x is greater than 0\n * or\n * -> index is the last slide and delta is smaller than 0\n *\n * @isOutOfBounds {Boolean}\n */\n var isOutOfBounds = !index && delta.x > 0 || index === slides.length - 1 && delta.x < 0;\n\n var direction = delta.x < 0;\n\n if (!isScrolling) {\n if (isValid && !isOutOfBounds) {\n slide(false, direction);\n } else {\n translate(position.x, options.snapBackSpeed);\n }\n }\n\n touchOffset = undefined;\n\n /**\n * remove eventlisteners after swipe attempt\n */\n frame.removeEventListener('touchmove', onTouchmove);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n\n dispatchSliderEvent('on', 'touchend', {\n event: event\n });\n }\n\n function onClick(event) {\n if (delta.x) {\n event.preventDefault();\n }\n }\n\n function onResize(event) {\n if (frameWidth !== elementWidth(frame)) {\n reset();\n\n dispatchSliderEvent('on', 'resize', {\n event: event\n });\n }\n }\n\n // trigger initial setup\n setup();\n\n // expose public api\n return {\n setup: setup,\n reset: reset,\n slideTo: slideTo,\n returnIndex: returnIndex,\n prev: prev,\n next: next,\n destroy: destroy\n };\n}\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = detectPrefixes;\n/**\n * Detecting prefixes for saving time and bytes\n */\nfunction detectPrefixes() {\n var transform = void 0;\n var transition = void 0;\n var transitionEnd = void 0;\n\n (function () {\n var el = document.createElement('_');\n var style = el.style;\n\n var prop = void 0;\n\n if (style[prop = 'webkitTransition'] === '') {\n transitionEnd = 'webkitTransitionEnd';\n transition = prop;\n }\n\n if (style[prop = 'transition'] === '') {\n transitionEnd = 'transitionend';\n transition = prop;\n }\n\n if (style[prop = 'webkitTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'msTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'transform'] === '') {\n transform = prop;\n }\n\n document.body.insertBefore(el, null);\n style[transform] = 'translateX(0)';\n document.body.removeChild(el);\n })();\n\n return {\n transform: transform,\n transition: transition,\n transitionEnd: transitionEnd\n };\n}\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = detectSupportsPassive;\nfunction detectSupportsPassive() {\n var supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n } catch (e) {}\n\n return supportsPassive;\n}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = dispatchEvent;\n\nvar _customEvent = __webpack_require__(4);\n\nvar _customEvent2 = _interopRequireDefault(_customEvent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * dispatch custom events\n *\n * @param {element} el slideshow element\n * @param {string} type custom event name\n * @param {object} detail custom detail information\n */\nfunction dispatchEvent(target, type, detail) {\n var event = new _customEvent2.default(type, {\n bubbles: true,\n cancelable: true,\n detail: detail\n });\n\n target.dispatchEvent(event);\n}\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {\nvar NativeCustomEvent = global.CustomEvent;\n\nfunction useNative () {\n try {\n var p = new NativeCustomEvent('cat', { detail: { foo: 'bar' } });\n return 'cat' === p.type && 'bar' === p.detail.foo;\n } catch (e) {\n }\n return false;\n}\n\n/**\n * Cross-browser `CustomEvent` constructor.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.CustomEvent\n *\n * @public\n */\n\nmodule.exports = useNative() ? NativeCustomEvent :\n\n// IE >= 9\n'undefined' !== typeof document && 'function' === typeof document.createEvent ? function CustomEvent (type, params) {\n var e = document.createEvent('CustomEvent');\n if (params) {\n e.initCustomEvent(type, params.bubbles, params.cancelable, params.detail);\n } else {\n e.initCustomEvent(type, false, false, void 0);\n }\n return e;\n} :\n\n// IE <= 8\nfunction CustomEvent (type, params) {\n var e = document.createEventObject();\n e.type = type;\n if (params) {\n e.bubbles = Boolean(params.bubbles);\n e.cancelable = Boolean(params.cancelable);\n e.detail = params.detail;\n } else {\n e.bubbles = false;\n e.cancelable = false;\n e.detail = void 0;\n }\n return e;\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5)))\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n /**\n * slides scrolled at once\n * @slidesToScroll {Number}\n */\n slidesToScroll: 1,\n\n /**\n * time in milliseconds for the animation of a valid slide attempt\n * @slideSpeed {Number}\n */\n slideSpeed: 300,\n\n /**\n * time in milliseconds for the animation of the rewind after the last slide\n * @rewindSpeed {Number}\n */\n rewindSpeed: 600,\n\n /**\n * time for the snapBack of the slider if the slide attempt was not valid\n * @snapBackSpeed {Number}\n */\n snapBackSpeed: 200,\n\n /**\n * Basic easing functions: https://developer.mozilla.org/de/docs/Web/CSS/transition-timing-function\n * cubic bezier easing functions: http://easings.net/de\n * @ease {String}\n */\n ease: 'ease',\n\n /**\n * if slider reached the last slide, with next click the slider goes back to the startindex.\n * use infinite or rewind, not both\n * @rewind {Boolean}\n */\n rewind: false,\n\n /**\n * number of visible slides or false\n * use infinite or rewind, not both\n * @infinite {number}\n */\n infinite: false,\n\n /**\n * the slide index to show when the slider is initialized.\n * @initialIndex {number}\n */\n initialIndex: 0,\n\n /**\n * class name for slider frame\n * @classNameFrame {string}\n */\n classNameFrame: 'js_frame',\n\n /**\n * class name for slides container\n * @classNameSlideContainer {string}\n */\n classNameSlideContainer: 'js_slides',\n\n /**\n * class name for slider prev control\n * @classNamePrevCtrl {string}\n */\n classNamePrevCtrl: 'js_prev',\n\n /**\n * class name for slider next control\n * @classNameNextCtrl {string}\n */\n classNameNextCtrl: 'js_next',\n\n /**\n * class name for current active slide\n * if emptyString then no class is set\n * @classNameActiveSlide {string}\n */\n classNameActiveSlide: 'active',\n\n /**\n * enables mouse events for swiping on desktop devices\n * @enableMouseEvents {boolean}\n */\n enableMouseEvents: false,\n\n /**\n * window instance\n * @window {object}\n */\n window: typeof window !== 'undefined' ? window : null,\n\n /**\n * If false, slides lory to the first slide on window resize.\n * @rewindOnResize {boolean}\n */\n rewindOnResize: true\n};\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(0);\n\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// lory.min.js"," \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, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\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 = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 7);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 85bdd04943e5c295f168","/* globals jQuery */\n\nimport detectPrefixes from './utils/detect-prefixes.js';\nimport supportsPassive from './utils/detect-supportsPassive';\nimport dispatchEvent from './utils/dispatch-event.js';\nimport defaults from './defaults.js';\n\nconst slice = Array.prototype.slice;\n\nexport function lory (slider, opts) {\n let position;\n let slidesWidth;\n let frameWidth;\n let slides;\n\n /**\n * slider DOM elements\n */\n let frame;\n let slideContainer;\n let prevCtrl;\n let nextCtrl;\n let prefixes;\n let transitionEndCallback;\n\n let index = 0;\n let options = {};\n let touchEventParams = supportsPassive() ? { passive: true } : false;\n\n /**\n * if object is jQuery convert to native DOM element\n */\n if (typeof jQuery !== 'undefined' && slider instanceof jQuery) {\n slider = slider[0];\n }\n\n /**\n * private\n * set active class to element which is the current slide\n */\n function setActiveElement (slides, currentIndex) {\n const {classNameActiveSlide} = options;\n\n slides.forEach((element, index) => {\n if (element.classList.contains(classNameActiveSlide)) {\n element.classList.remove(classNameActiveSlide);\n }\n });\n\n slides[currentIndex].classList.add(classNameActiveSlide);\n }\n\n /**\n * private\n * setupInfinite: function to setup if infinite is set\n *\n * @param {array} slideArray\n * @return {array} array of updated slideContainer elements\n */\n function setupInfinite (slideArray) {\n const {infinite} = options;\n\n const front = slideArray.slice(0, infinite);\n const back = slideArray.slice(slideArray.length - infinite, slideArray.length);\n\n front.forEach(function (element) {\n const cloned = element.cloneNode(true);\n\n slideContainer.appendChild(cloned);\n });\n\n back.reverse()\n .forEach(function (element) {\n const cloned = element.cloneNode(true);\n\n slideContainer.insertBefore(cloned, slideContainer.firstChild);\n });\n\n slideContainer.addEventListener(prefixes.transitionEnd, onTransitionEnd);\n\n return slice.call(slideContainer.children);\n }\n\n /**\n * [dispatchSliderEvent description]\n * @return {[type]} [description]\n */\n function dispatchSliderEvent (phase, type, detail) {\n dispatchEvent(slider, `${phase}.lory.${type}`, detail);\n }\n\n /**\n * translates to a given position in a given time in milliseconds\n *\n * @to {number} number in pixels where to translate to\n * @duration {number} time in milliseconds for the transistion\n * @ease {string} easing css property\n */\n function translate (to, duration, ease) {\n const style = slideContainer && slideContainer.style;\n\n if (style) {\n style[prefixes.transition + 'TimingFunction'] = ease;\n style[prefixes.transition + 'Duration'] = duration + 'ms';\n style[prefixes.transform] = 'translateX(' + to + 'px)';\n }\n }\n\n /**\n * returns an element's width\n */\n function elementWidth (element) {\n return element.getBoundingClientRect().width || element.offsetWidth;\n }\n\n /**\n * slidefunction called by prev, next & touchend\n *\n * determine nextIndex and slide to next postion\n * under restrictions of the defined options\n *\n * @direction {boolean}\n */\n function slide (nextIndex, direction) {\n const {\n slideSpeed,\n slidesToScroll,\n infinite,\n rewind,\n rewindPrev,\n rewindSpeed,\n ease,\n classNameActiveSlide,\n classNameDisabledNextCtrl = 'disabled',\n classNameDisabledPrevCtrl = 'disabled'\n } = options;\n\n let duration = slideSpeed;\n\n const nextSlide = direction ? index + 1 : index - 1;\n const maxOffset = Math.round(slidesWidth - frameWidth);\n\n dispatchSliderEvent('before', 'slide', {\n index,\n nextSlide\n });\n\n /**\n * Reset control classes\n */\n if (prevCtrl) {\n prevCtrl.classList.remove(classNameDisabledPrevCtrl);\n }\n if (nextCtrl) {\n nextCtrl.classList.remove(classNameDisabledNextCtrl);\n }\n\n if (typeof nextIndex !== 'number') {\n if (direction) {\n if (infinite && index + (infinite * 2) !== slides.length) {\n nextIndex = index + (infinite - index % infinite);\n } else {\n nextIndex = index + slidesToScroll;\n }\n } else {\n if (infinite && index % infinite !== 0) {\n nextIndex = index - index % infinite;\n } else {\n nextIndex = index - slidesToScroll;\n }\n }\n }\n\n nextIndex = Math.min(Math.max(nextIndex, 0), slides.length - 1);\n\n if (infinite && direction === undefined) {\n nextIndex += infinite;\n }\n\n if (rewindPrev && Math.abs(position.x) === 0 && direction === false) {\n nextIndex = slides.length - 1;\n duration = rewindSpeed;\n }\n\n let nextOffset = Math.min(Math.max(slides[nextIndex].offsetLeft * -1, maxOffset * -1), 0);\n\n if (rewind && Math.abs(position.x) === maxOffset && direction) {\n nextOffset = 0;\n nextIndex = 0;\n duration = rewindSpeed;\n }\n\n /**\n * translate to the nextOffset by a defined duration and ease function\n */\n translate(nextOffset, duration, ease);\n\n /**\n * update the position with the next position\n */\n position.x = nextOffset;\n\n /**\n * update the index with the nextIndex only if\n * the offset of the nextIndex is in the range of the maxOffset\n */\n if (slides[nextIndex].offsetLeft <= maxOffset) {\n index = nextIndex;\n }\n\n if (infinite && (nextIndex === slides.length - infinite ||\n nextIndex === slides.length - slides.length % infinite || nextIndex === 0)) {\n if (direction) {\n index = infinite;\n }\n\n if (!direction) {\n index = slides.length - (infinite * 2);\n }\n\n position.x = slides[index].offsetLeft * -1;\n\n transitionEndCallback = function () {\n translate(slides[index].offsetLeft * -1, 0, undefined);\n };\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n\n /**\n * update classes for next and prev arrows\n * based on user settings\n */\n if (prevCtrl && !infinite && !rewindPrev && nextIndex === 0) {\n prevCtrl.classList.add(classNameDisabledPrevCtrl);\n }\n\n if (nextCtrl && !infinite && !rewind && ((nextIndex + 1) === slides.length)) {\n nextCtrl.classList.add(classNameDisabledNextCtrl);\n }\n\n dispatchSliderEvent('after', 'slide', {\n currentSlide: index\n });\n }\n\n /**\n * public\n * setup function\n */\n function setup () {\n dispatchSliderEvent('before', 'init');\n\n prefixes = detectPrefixes();\n options = {...defaults, ...opts};\n\n const {\n classNameFrame,\n classNameSlideContainer,\n classNamePrevCtrl,\n classNameNextCtrl,\n classNameDisabledNextCtrl = 'disabled',\n classNameDisabledPrevCtrl = 'disabled',\n enableMouseEvents,\n classNameActiveSlide,\n initialIndex\n } = options;\n\n index = initialIndex;\n frame = slider.getElementsByClassName(classNameFrame)[0];\n slideContainer = frame.getElementsByClassName(classNameSlideContainer)[0];\n prevCtrl = slider.getElementsByClassName(classNamePrevCtrl)[0];\n nextCtrl = slider.getElementsByClassName(classNameNextCtrl)[0];\n\n position = {\n x: slideContainer.offsetLeft,\n y: slideContainer.offsetTop\n };\n\n if (options.infinite) {\n slides = setupInfinite(slice.call(slideContainer.children));\n } else {\n slides = slice.call(slideContainer.children);\n\n if (prevCtrl && !options.rewindPrev) {\n prevCtrl.classList.add(classNameDisabledPrevCtrl);\n }\n\n if (nextCtrl && (slides.length === 1) && !options.rewind) {\n nextCtrl.classList.add(classNameDisabledNextCtrl);\n }\n }\n\n reset();\n\n if (classNameActiveSlide) {\n setActiveElement(slides, index);\n }\n\n if (prevCtrl && nextCtrl) {\n prevCtrl.addEventListener('click', prev);\n nextCtrl.addEventListener('click', next);\n }\n\n frame.addEventListener('touchstart', onTouchstart, touchEventParams);\n\n if (enableMouseEvents) {\n frame.addEventListener('mousedown', onTouchstart);\n frame.addEventListener('click', onClick);\n }\n\n options.window.addEventListener('resize', onResize);\n\n dispatchSliderEvent('after', 'init');\n }\n\n /**\n * public\n * reset function: called on resize\n */\n function reset () {\n var {infinite, ease, rewindSpeed, rewindOnResize, classNameActiveSlide, initialIndex} = options;\n\n slidesWidth = elementWidth(slideContainer);\n frameWidth = elementWidth(frame);\n\n if (frameWidth === slidesWidth) {\n slidesWidth = slides.reduce(function (previousValue, slide) {\n return previousValue + elementWidth(slide);\n }, 0);\n }\n\n if (rewindOnResize) {\n index = initialIndex;\n } else {\n ease = null;\n rewindSpeed = 0;\n }\n\n if (infinite) {\n translate(slides[index + infinite].offsetLeft * -1, 0, null);\n\n index = index + infinite;\n position.x = slides[index].offsetLeft * -1;\n } else {\n translate(slides[index].offsetLeft * -1, rewindSpeed, ease);\n position.x = slides[index].offsetLeft * -1;\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n }\n\n /**\n * public\n * slideTo: called on clickhandler\n */\n function slideTo (index) {\n slide(index);\n }\n\n /**\n * public\n * returnIndex function: called on clickhandler\n */\n function returnIndex () {\n return index - options.infinite || 0;\n }\n\n /**\n * public\n * prev function: called on clickhandler\n */\n function prev () {\n slide(false, false);\n }\n\n /**\n * public\n * next function: called on clickhandler\n */\n function next () {\n slide(false, true);\n }\n\n /**\n * public\n * destroy function: called to gracefully destroy the lory instance\n */\n function destroy () {\n dispatchSliderEvent('before', 'destroy');\n\n // remove event listeners\n frame.removeEventListener(prefixes.transitionEnd, onTransitionEnd);\n frame.removeEventListener('touchstart', onTouchstart, touchEventParams);\n frame.removeEventListener('touchmove', onTouchmove, touchEventParams);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mousedown', onTouchstart);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n frame.removeEventListener('click', onClick);\n\n options.window.removeEventListener('resize', onResize);\n\n if (prevCtrl) {\n prevCtrl.removeEventListener('click', prev);\n }\n\n if (nextCtrl) {\n nextCtrl.removeEventListener('click', next);\n }\n\n // remove cloned slides if infinite is set\n if (options.infinite) {\n Array.apply(null, Array(options.infinite)).forEach(function () {\n slideContainer.removeChild(slideContainer.firstChild);\n slideContainer.removeChild(slideContainer.lastChild);\n });\n }\n\n dispatchSliderEvent('after', 'destroy');\n }\n\n // event handling\n\n let touchOffset;\n let delta;\n let isScrolling;\n\n function onTransitionEnd () {\n if (transitionEndCallback) {\n transitionEndCallback();\n\n transitionEndCallback = undefined;\n }\n }\n\n function onTouchstart (event) {\n const {enableMouseEvents} = options;\n const touches = event.touches ? event.touches[0] : event;\n\n if (enableMouseEvents) {\n frame.addEventListener('mousemove', onTouchmove);\n frame.addEventListener('mouseup', onTouchend);\n frame.addEventListener('mouseleave', onTouchend);\n }\n\n frame.addEventListener('touchmove', onTouchmove, touchEventParams);\n frame.addEventListener('touchend', onTouchend);\n\n const {pageX, pageY} = touches;\n\n touchOffset = {\n x: pageX,\n y: pageY,\n time: Date.now()\n };\n\n isScrolling = undefined;\n\n delta = {};\n\n dispatchSliderEvent('on', 'touchstart', {\n event\n });\n }\n\n function onTouchmove (event) {\n const touches = event.touches ? event.touches[0] : event;\n const {pageX, pageY} = touches;\n\n delta = {\n x: pageX - touchOffset.x,\n y: pageY - touchOffset.y\n };\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(delta.x) < Math.abs(delta.y));\n }\n\n if (!isScrolling && touchOffset) {\n translate(position.x + delta.x, 0, null);\n }\n\n // may be\n dispatchSliderEvent('on', 'touchmove', {\n event\n });\n }\n\n function onTouchend (event) {\n /**\n * time between touchstart and touchend in milliseconds\n * @duration {number}\n */\n const duration = touchOffset ? Date.now() - touchOffset.time : undefined;\n\n /**\n * is valid if:\n *\n * -> swipe attempt time is over 300 ms\n * and\n * -> swipe distance is greater than 25px\n * or\n * -> swipe distance is more then a third of the swipe area\n *\n * @isValidSlide {Boolean}\n */\n const isValid = Number(duration) < 300 &&\n Math.abs(delta.x) > 25 ||\n Math.abs(delta.x) > frameWidth / 3;\n\n /**\n * is out of bounds if:\n *\n * -> index is 0 and delta x is greater than 0\n * or\n * -> index is the last slide and delta is smaller than 0\n *\n * @isOutOfBounds {Boolean}\n */\n const isOutOfBounds = !index && delta.x > 0 ||\n index === slides.length - 1 && delta.x < 0;\n\n const direction = delta.x < 0;\n\n if (!isScrolling) {\n if (isValid && !isOutOfBounds) {\n slide(false, direction);\n } else {\n translate(position.x, options.snapBackSpeed);\n }\n }\n\n touchOffset = undefined;\n\n /**\n * remove eventlisteners after swipe attempt\n */\n frame.removeEventListener('touchmove', onTouchmove);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n\n dispatchSliderEvent('on', 'touchend', {\n event\n });\n }\n\n function onClick (event) {\n if (delta.x) {\n event.preventDefault();\n }\n }\n\n function onResize (event) {\n if (frameWidth !== elementWidth(frame)) {\n reset();\n\n dispatchSliderEvent('on', 'resize', {\n event\n });\n }\n }\n\n // trigger initial setup\n setup();\n\n // expose public api\n return {\n setup,\n reset,\n slideTo,\n returnIndex,\n prev,\n next,\n destroy\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/lory.js","/**\n * Detecting prefixes for saving time and bytes\n */\nexport default function detectPrefixes () {\n let transform;\n let transition;\n let transitionEnd;\n\n (function () {\n let el = document.createElement('_');\n let style = el.style;\n\n let prop;\n\n if (style[prop = 'webkitTransition'] === '') {\n transitionEnd = 'webkitTransitionEnd';\n transition = prop;\n }\n\n if (style[prop = 'transition'] === '') {\n transitionEnd = 'transitionend';\n transition = prop;\n }\n\n if (style[prop = 'webkitTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'msTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'transform'] === '') {\n transform = prop;\n }\n\n document.body.insertBefore(el, null);\n style[transform] = 'translateX(0)';\n document.body.removeChild(el);\n }());\n\n return {\n transform,\n transition,\n transitionEnd\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/detect-prefixes.js","export default function detectSupportsPassive () {\n let supportsPassive = false;\n\n try {\n let opts = Object.defineProperty({}, 'passive', {\n get () {\n supportsPassive = true;\n }\n });\n\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n } catch (e) {}\n\n return supportsPassive;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/detect-supportsPassive.js","import CustomEvent from 'custom-event';\n\n/**\n * dispatch custom events\n *\n * @param {element} el slideshow element\n * @param {string} type custom event name\n * @param {object} detail custom detail information\n */\nexport default function dispatchEvent (target, type, detail) {\n let event = new CustomEvent(\n type,\n {\n bubbles: true,\n cancelable: true,\n detail: detail\n }\n );\n\n target.dispatchEvent(event);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/dispatch-event.js","\nvar NativeCustomEvent = global.CustomEvent;\n\nfunction useNative () {\n try {\n var p = new NativeCustomEvent('cat', { detail: { foo: 'bar' } });\n return 'cat' === p.type && 'bar' === p.detail.foo;\n } catch (e) {\n }\n return false;\n}\n\n/**\n * Cross-browser `CustomEvent` constructor.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.CustomEvent\n *\n * @public\n */\n\nmodule.exports = useNative() ? NativeCustomEvent :\n\n// IE >= 9\n'undefined' !== typeof document && 'function' === typeof document.createEvent ? function CustomEvent (type, params) {\n var e = document.createEvent('CustomEvent');\n if (params) {\n e.initCustomEvent(type, params.bubbles, params.cancelable, params.detail);\n } else {\n e.initCustomEvent(type, false, false, void 0);\n }\n return e;\n} :\n\n// IE <= 8\nfunction CustomEvent (type, params) {\n var e = document.createEventObject();\n e.type = type;\n if (params) {\n e.bubbles = Boolean(params.bubbles);\n e.cancelable = Boolean(params.cancelable);\n e.detail = params.detail;\n } else {\n e.bubbles = false;\n e.cancelable = false;\n e.detail = void 0;\n }\n return e;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/custom-event/index.js\n// module id = 4\n// module chunks = 0 1","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 5\n// module chunks = 0 1","export default {\n /**\n * slides scrolled at once\n * @slidesToScroll {Number}\n */\n slidesToScroll: 1,\n\n /**\n * time in milliseconds for the animation of a valid slide attempt\n * @slideSpeed {Number}\n */\n slideSpeed: 300,\n\n /**\n * time in milliseconds for the animation of the rewind after the last slide\n * @rewindSpeed {Number}\n */\n rewindSpeed: 600,\n\n /**\n * time for the snapBack of the slider if the slide attempt was not valid\n * @snapBackSpeed {Number}\n */\n snapBackSpeed: 200,\n\n /**\n * Basic easing functions: https://developer.mozilla.org/de/docs/Web/CSS/transition-timing-function\n * cubic bezier easing functions: http://easings.net/de\n * @ease {String}\n */\n ease: 'ease',\n\n /**\n * if slider reached the last slide, with next click the slider goes back to the startindex.\n * use infinite or rewind, not both\n * @rewind {Boolean}\n */\n rewind: false,\n\n /**\n * number of visible slides or false\n * use infinite or rewind, not both\n * @infinite {number}\n */\n infinite: false,\n\n /**\n * the slide index to show when the slider is initialized.\n * @initialIndex {number}\n */\n initialIndex: 0,\n\n /**\n * class name for slider frame\n * @classNameFrame {string}\n */\n classNameFrame: 'js_frame',\n\n /**\n * class name for slides container\n * @classNameSlideContainer {string}\n */\n classNameSlideContainer: 'js_slides',\n\n /**\n * class name for slider prev control\n * @classNamePrevCtrl {string}\n */\n classNamePrevCtrl: 'js_prev',\n\n /**\n * class name for slider next control\n * @classNameNextCtrl {string}\n */\n classNameNextCtrl: 'js_next',\n\n /**\n * class name for current active slide\n * if emptyString then no class is set\n * @classNameActiveSlide {string}\n */\n classNameActiveSlide: 'active',\n\n /**\n * enables mouse events for swiping on desktop devices\n * @enableMouseEvents {boolean}\n */\n enableMouseEvents: false,\n\n /**\n * window instance\n * @window {object}\n */\n window: typeof window !== 'undefined' ? window : null,\n\n /**\n * If false, slides lory to the first slide on window resize.\n * @rewindOnResize {boolean}\n */\n rewindOnResize: true\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/defaults.js"],"sourceRoot":""} +======= +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///lory.min.js","webpack:///webpack/bootstrap 8fb3f642c4c59664631d","webpack:///(webpack)/buildin/global.js","webpack:///./src/lory.js","webpack:///./src/utils/detect-prefixes.js","webpack:///./src/utils/detect-supportsPassive.js","webpack:///./src/utils/dispatch-event.js","webpack:///./node_modules/custom-event/index.js","webpack:///./src/defaults.js"],"names":["root","factory","exports","module","define","amd","a","i","self","this","modules","__webpack_require__","moduleId","installedModules","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","g","Function","eval","e","window","_interopRequireDefault","obj","default","lory","slider","opts","setActiveElement","slides","currentIndex","_options","options","classNameActiveSlide","infinite","forEach","element","index","classList","contains","remove","add","length","setupInfinite","slideArray","_options2","front","slice","back","cloned","cloneNode","slideContainer","appendChild","reverse","insertBefore","firstChild","addEventListener","prefixes","transitionEnd","onTransitionEnd","children","dispatchSliderEvent","phase","type","detail","_dispatchEvent2","translate","to","duration","ease","style","transition","hasTranslate3d","transform","slide","nextIndex","direction","_options3","slideSpeed","slidesToScroll","rewind","rewindSpeed","nextSlide","maxOffset","Math","round","slidesWidth","frameWidth","prevCtrl","nextCtrl","min","max","undefined","nextOffset","offsetLeft","abs","position","x","transitionEndCallback","currentSlide","setup","_detectPrefixes2","_options4","classNameFrame","classNameSlideContainer","classNamePrevCtrl","classNameNextCtrl","enableMouseEvents","initialIndex","frame","getElementsByClassName","y","offsetTop","reset","prev","next","onTouchstart","touchEventParams","onClick","onResize","_options5","rewindOnResize","getBoundingClientRect","width","offsetWidth","reduce","previousValue","slideTo","returnIndex","destroy","removeEventListener","onTouchmove","onTouchend","Array","apply","removeChild","lastChild","event","target","_options6","touches","pageX","pageY","touchOffset","time","Date","now","isScrolling","delta","preventDefault","isValid","Number","isOutOfBounds","snapBackSpeed","_detectSupportsPassive2","passive","jQuery","value","_extends","assign","arguments","source","key","_detectPrefixes","_detectSupportsPassive","_dispatchEvent","_defaults","_defaults2","global","detectPrefixes","el","document","createElement","prop","body","getComputedStyle","getPropertyValue","detectSupportsPassive","supportsPassive","dispatchEvent","_customEvent2","bubbles","cancelable","_customEvent","NativeCustomEvent","CustomEvent","foo","createEvent","params","initCustomEvent","createEventObject","Boolean"],"mappings":"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","file":"lory.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\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 = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 7);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* globals jQuery */\n\nexports.lory = lory;\n\nvar _detectPrefixes = __webpack_require__(2);\n\nvar _detectPrefixes2 = _interopRequireDefault(_detectPrefixes);\n\nvar _detectSupportsPassive = __webpack_require__(3);\n\nvar _detectSupportsPassive2 = _interopRequireDefault(_detectSupportsPassive);\n\nvar _dispatchEvent = __webpack_require__(4);\n\nvar _dispatchEvent2 = _interopRequireDefault(_dispatchEvent);\n\nvar _defaults = __webpack_require__(6);\n\nvar _defaults2 = _interopRequireDefault(_defaults);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar slice = Array.prototype.slice;\n\nfunction lory(slider, opts) {\n var position = void 0;\n var slidesWidth = void 0;\n var frameWidth = void 0;\n var slides = void 0;\n\n /**\n * slider DOM elements\n */\n var frame = void 0;\n var slideContainer = void 0;\n var prevCtrl = void 0;\n var nextCtrl = void 0;\n var prefixes = void 0;\n var transitionEndCallback = void 0;\n\n var index = 0;\n var options = {};\n var touchEventParams = (0, _detectSupportsPassive2.default)() ? { passive: true } : false;\n\n /**\n * if object is jQuery convert to native DOM element\n */\n if (typeof jQuery !== 'undefined' && slider instanceof jQuery) {\n slider = slider[0];\n }\n\n /**\n * private\n * set active class to element which is the current slide\n */\n function setActiveElement(slides, currentIndex) {\n var _options = options,\n classNameActiveSlide = _options.classNameActiveSlide,\n infinite = _options.infinite;\n\n\n slides.forEach(function (element, index) {\n if (element.classList.contains(classNameActiveSlide)) {\n element.classList.remove(classNameActiveSlide);\n }\n });\n\n slides[currentIndex].classList.add(classNameActiveSlide);\n\n if (infinite && currentIndex === slides.length - infinite * 2) {\n slides[infinite - 1].classList.add(classNameActiveSlide);\n } else if (currentIndex === infinite) {\n slides[slides.length - infinite].classList.add(classNameActiveSlide);\n }\n }\n\n /**\n * private\n * setupInfinite: function to setup if infinite is set\n *\n * @param {array} slideArray\n * @return {array} array of updated slideContainer elements\n */\n function setupInfinite(slideArray) {\n var _options2 = options,\n infinite = _options2.infinite;\n\n\n var front = slideArray.slice(0, infinite);\n var back = slideArray.slice(slideArray.length - infinite, slideArray.length);\n\n front.forEach(function (element) {\n var cloned = element.cloneNode(true);\n\n slideContainer.appendChild(cloned);\n });\n\n back.reverse().forEach(function (element) {\n var cloned = element.cloneNode(true);\n\n slideContainer.insertBefore(cloned, slideContainer.firstChild);\n });\n\n slideContainer.addEventListener(prefixes.transitionEnd, onTransitionEnd);\n\n return slice.call(slideContainer.children);\n }\n\n /**\n * [dispatchSliderEvent description]\n * @return {[type]} [description]\n */\n function dispatchSliderEvent(phase, type, detail) {\n (0, _dispatchEvent2.default)(slider, phase + '.lory.' + type, detail);\n }\n\n /**\n * translates to a given position in a given time in milliseconds\n *\n * @to {number} number in pixels where to translate to\n * @duration {number} time in milliseconds for the transistion\n * @ease {string} easing css property\n */\n function translate(to, duration, ease) {\n var style = slideContainer && slideContainer.style;\n\n if (style) {\n style[prefixes.transition + 'TimingFunction'] = ease;\n style[prefixes.transition + 'Duration'] = duration + 'ms';\n\n if (prefixes.hasTranslate3d) {\n style[prefixes.transform] = 'translate3d(' + to + 'px, 0, 0)';\n } else {\n style[prefixes.transform] = 'translate(' + to + 'px, 0)';\n }\n }\n }\n\n /**\n * slidefunction called by prev, next & touchend\n *\n * determine nextIndex and slide to next postion\n * under restrictions of the defined options\n *\n * @direction {boolean}\n */\n function slide(nextIndex, direction) {\n var _options3 = options,\n slideSpeed = _options3.slideSpeed,\n slidesToScroll = _options3.slidesToScroll,\n infinite = _options3.infinite,\n rewind = _options3.rewind,\n rewindSpeed = _options3.rewindSpeed,\n ease = _options3.ease,\n classNameActiveSlide = _options3.classNameActiveSlide;\n\n\n var duration = slideSpeed;\n\n var nextSlide = direction ? index + 1 : index - 1;\n var maxOffset = Math.round(slidesWidth - frameWidth);\n\n dispatchSliderEvent('before', 'slide', {\n index: index,\n nextSlide: nextSlide\n });\n\n /**\n * Reset control classes\n */\n if (prevCtrl) {\n prevCtrl.classList.remove('disabled');\n }\n if (nextCtrl) {\n nextCtrl.classList.remove('disabled');\n }\n\n if (typeof nextIndex !== 'number') {\n if (direction) {\n nextIndex = index + slidesToScroll;\n } else {\n nextIndex = index - slidesToScroll;\n }\n }\n\n nextIndex = Math.min(Math.max(nextIndex, 0), slides.length - 1);\n\n if (infinite && direction === undefined) {\n nextIndex += infinite;\n }\n\n var nextOffset = Math.min(Math.max(slides[nextIndex].offsetLeft * -1, maxOffset * -1), 0);\n\n if (rewind && Math.abs(position.x) === maxOffset && direction) {\n nextOffset = 0;\n nextIndex = 0;\n duration = rewindSpeed;\n }\n\n /**\n * translate to the nextOffset by a defined duration and ease function\n */\n translate(nextOffset, duration, ease);\n\n /**\n * update the position with the next position\n */\n position.x = nextOffset;\n\n /**\n * update the index with the nextIndex only if\n * the offset of the nextIndex is in the range of the maxOffset\n */\n if (slides[nextIndex].offsetLeft <= maxOffset) {\n index = nextIndex;\n }\n\n if (infinite && (nextIndex === slides.length - infinite || nextIndex === 0)) {\n if (direction) {\n index = infinite;\n }\n\n if (!direction) {\n index = slides.length - infinite * 2;\n }\n\n position.x = slides[index].offsetLeft * -1;\n\n transitionEndCallback = function transitionEndCallback() {\n translate(slides[index].offsetLeft * -1, 0, undefined);\n };\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n\n /**\n * update classes for next and prev arrows\n * based on user settings\n */\n if (prevCtrl && !infinite && nextIndex === 0) {\n prevCtrl.classList.add('disabled');\n }\n\n if (nextCtrl && !infinite && !rewind && nextIndex + 1 === slides.length) {\n nextCtrl.classList.add('disabled');\n }\n\n dispatchSliderEvent('after', 'slide', {\n currentSlide: index\n });\n }\n\n /**\n * public\n * setup function\n */\n function setup() {\n dispatchSliderEvent('before', 'init');\n\n prefixes = (0, _detectPrefixes2.default)();\n options = _extends({}, _defaults2.default, opts);\n\n var _options4 = options,\n classNameFrame = _options4.classNameFrame,\n classNameSlideContainer = _options4.classNameSlideContainer,\n classNamePrevCtrl = _options4.classNamePrevCtrl,\n classNameNextCtrl = _options4.classNameNextCtrl,\n enableMouseEvents = _options4.enableMouseEvents,\n classNameActiveSlide = _options4.classNameActiveSlide,\n initialIndex = _options4.initialIndex;\n\n\n index = initialIndex;\n frame = slider.getElementsByClassName(classNameFrame)[0];\n slideContainer = frame.getElementsByClassName(classNameSlideContainer)[0];\n prevCtrl = slider.getElementsByClassName(classNamePrevCtrl)[0];\n nextCtrl = slider.getElementsByClassName(classNameNextCtrl)[0];\n\n position = {\n x: slideContainer.offsetLeft,\n y: slideContainer.offsetTop\n };\n\n if (options.infinite) {\n slides = setupInfinite(slice.call(slideContainer.children));\n } else {\n slides = slice.call(slideContainer.children);\n\n if (prevCtrl) {\n prevCtrl.classList.add('disabled');\n }\n\n if (nextCtrl && slides.length === 1 && !options.rewind) {\n nextCtrl.classList.add('disabled');\n }\n }\n\n reset();\n\n if (classNameActiveSlide) {\n setActiveElement(slides, index);\n }\n\n if (prevCtrl && nextCtrl) {\n prevCtrl.addEventListener('click', prev);\n nextCtrl.addEventListener('click', next);\n }\n\n frame.addEventListener('touchstart', onTouchstart, touchEventParams);\n\n if (enableMouseEvents) {\n frame.addEventListener('mousedown', onTouchstart);\n frame.addEventListener('click', onClick);\n }\n\n options.window.addEventListener('resize', onResize);\n\n dispatchSliderEvent('after', 'init');\n }\n\n /**\n * public\n * reset function: called on resize\n */\n function reset() {\n var _options5 = options,\n infinite = _options5.infinite,\n ease = _options5.ease,\n rewindSpeed = _options5.rewindSpeed,\n rewindOnResize = _options5.rewindOnResize,\n classNameActiveSlide = _options5.classNameActiveSlide,\n initialIndex = _options5.initialIndex;\n\n\n slidesWidth = slideContainer.getBoundingClientRect().width || slideContainer.offsetWidth;\n frameWidth = frame.getBoundingClientRect().width || frame.offsetWidth;\n\n if (frameWidth === slidesWidth) {\n slidesWidth = slides.reduce(function (previousValue, slide) {\n return previousValue + slide.getBoundingClientRect().width || slide.offsetWidth;\n }, 0);\n }\n\n if (rewindOnResize) {\n index = initialIndex;\n } else {\n ease = null;\n rewindSpeed = 0;\n }\n\n if (infinite) {\n translate(slides[index + infinite].offsetLeft * -1, 0, null);\n\n index = index + infinite;\n position.x = slides[index].offsetLeft * -1;\n } else {\n translate(slides[index].offsetLeft * -1, rewindSpeed, ease);\n position.x = slides[index].offsetLeft * -1;\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n }\n\n /**\n * public\n * slideTo: called on clickhandler\n */\n function slideTo(index) {\n slide(index);\n }\n\n /**\n * public\n * returnIndex function: called on clickhandler\n */\n function returnIndex() {\n return index - options.infinite || 0;\n }\n\n /**\n * public\n * prev function: called on clickhandler\n */\n function prev() {\n slide(false, false);\n }\n\n /**\n * public\n * next function: called on clickhandler\n */\n function next() {\n slide(false, true);\n }\n\n /**\n * public\n * destroy function: called to gracefully destroy the lory instance\n */\n function destroy() {\n dispatchSliderEvent('before', 'destroy');\n\n // remove event listeners\n frame.removeEventListener(prefixes.transitionEnd, onTransitionEnd);\n frame.removeEventListener('touchstart', onTouchstart, touchEventParams);\n frame.removeEventListener('touchmove', onTouchmove, touchEventParams);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mousedown', onTouchstart);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n frame.removeEventListener('click', onClick);\n\n options.window.removeEventListener('resize', onResize);\n\n if (prevCtrl) {\n prevCtrl.removeEventListener('click', prev);\n }\n\n if (nextCtrl) {\n nextCtrl.removeEventListener('click', next);\n }\n\n // remove cloned slides if infinite is set\n if (options.infinite) {\n Array.apply(null, Array(options.infinite)).forEach(function () {\n slideContainer.removeChild(slideContainer.firstChild);\n slideContainer.removeChild(slideContainer.lastChild);\n });\n }\n\n dispatchSliderEvent('after', 'destroy');\n }\n\n // event handling\n\n var touchOffset = void 0;\n var delta = void 0;\n var isScrolling = void 0;\n\n function onTransitionEnd(event) {\n if (transitionEndCallback && event.target === slideContainer) {\n transitionEndCallback();\n\n transitionEndCallback = undefined;\n }\n }\n\n function onTouchstart(event) {\n var _options6 = options,\n enableMouseEvents = _options6.enableMouseEvents;\n\n var touches = event.touches ? event.touches[0] : event;\n\n if (enableMouseEvents) {\n frame.addEventListener('mousemove', onTouchmove);\n frame.addEventListener('mouseup', onTouchend);\n frame.addEventListener('mouseleave', onTouchend);\n }\n\n frame.addEventListener('touchmove', onTouchmove, touchEventParams);\n frame.addEventListener('touchend', onTouchend);\n\n var pageX = touches.pageX,\n pageY = touches.pageY;\n\n\n touchOffset = {\n x: pageX,\n y: pageY,\n time: Date.now()\n };\n\n isScrolling = undefined;\n\n delta = {};\n\n dispatchSliderEvent('on', 'touchstart', {\n event: event\n });\n }\n\n function onTouchmove(event) {\n var touches = event.touches ? event.touches[0] : event;\n var pageX = touches.pageX,\n pageY = touches.pageY;\n\n\n delta = {\n x: pageX - touchOffset.x,\n y: pageY - touchOffset.y\n };\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(delta.x) < Math.abs(delta.y));\n }\n\n if (!isScrolling && touchOffset) {\n event.preventDefault();\n translate(position.x + delta.x, 0, null);\n }\n\n // may be\n dispatchSliderEvent('on', 'touchmove', {\n event: event\n });\n }\n\n function onTouchend(event) {\n /**\n * time between touchstart and touchend in milliseconds\n * @duration {number}\n */\n var duration = touchOffset ? Date.now() - touchOffset.time : undefined;\n\n /**\n * is valid if:\n *\n * -> swipe attempt time is over 300 ms\n * and\n * -> swipe distance is greater than 25px\n * or\n * -> swipe distance is more then a third of the swipe area\n *\n * @isValidSlide {Boolean}\n */\n var isValid = Number(duration) < 300 && Math.abs(delta.x) > 25 || Math.abs(delta.x) > frameWidth / 3;\n\n /**\n * is out of bounds if:\n *\n * -> index is 0 and delta x is greater than 0\n * or\n * -> index is the last slide and delta is smaller than 0\n *\n * @isOutOfBounds {Boolean}\n */\n var isOutOfBounds = !index && delta.x > 0 || index === slides.length - 1 && delta.x < 0;\n\n var direction = delta.x < 0;\n\n if (!isScrolling) {\n if (isValid && !isOutOfBounds) {\n slide(false, direction);\n } else {\n translate(position.x, options.snapBackSpeed);\n }\n }\n\n touchOffset = undefined;\n\n /**\n * remove eventlisteners after swipe attempt\n */\n frame.removeEventListener('touchmove', onTouchmove);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n\n dispatchSliderEvent('on', 'touchend', {\n event: event\n });\n }\n\n function onClick(event) {\n if (delta.x) {\n event.preventDefault();\n }\n }\n\n function onResize(event) {\n reset();\n\n dispatchSliderEvent('on', 'resize', {\n event: event\n });\n }\n\n // trigger initial setup\n setup();\n\n // expose public api\n return {\n setup: setup,\n reset: reset,\n slideTo: slideTo,\n returnIndex: returnIndex,\n prev: prev,\n next: next,\n destroy: destroy\n };\n}\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = detectPrefixes;\n/**\n * Detecting prefixes for saving time and bytes\n */\nfunction detectPrefixes() {\n var transform = void 0;\n var transition = void 0;\n var transitionEnd = void 0;\n var hasTranslate3d = void 0;\n\n (function () {\n var el = document.createElement('_');\n var style = el.style;\n\n var prop = void 0;\n\n if (style[prop = 'webkitTransition'] === '') {\n transitionEnd = 'webkitTransitionEnd';\n transition = prop;\n }\n\n if (style[prop = 'transition'] === '') {\n transitionEnd = 'transitionend';\n transition = prop;\n }\n\n if (style[prop = 'webkitTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'msTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'transform'] === '') {\n transform = prop;\n }\n\n document.body.insertBefore(el, null);\n style[transform] = 'translate3d(0, 0, 0)';\n hasTranslate3d = !!global.getComputedStyle(el).getPropertyValue(transform);\n document.body.removeChild(el);\n })();\n\n return {\n transform: transform,\n transition: transition,\n transitionEnd: transitionEnd,\n hasTranslate3d: hasTranslate3d\n };\n}\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = detectSupportsPassive;\nfunction detectSupportsPassive() {\n var supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n } catch (e) {}\n\n return supportsPassive;\n}\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = dispatchEvent;\n\nvar _customEvent = __webpack_require__(5);\n\nvar _customEvent2 = _interopRequireDefault(_customEvent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * dispatch custom events\n *\n * @param {element} el slideshow element\n * @param {string} type custom event name\n * @param {object} detail custom detail information\n */\nfunction dispatchEvent(target, type, detail) {\n var event = new _customEvent2.default(type, {\n bubbles: true,\n cancelable: true,\n detail: detail\n });\n\n target.dispatchEvent(event);\n}\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {\nvar NativeCustomEvent = global.CustomEvent;\n\nfunction useNative () {\n try {\n var p = new NativeCustomEvent('cat', { detail: { foo: 'bar' } });\n return 'cat' === p.type && 'bar' === p.detail.foo;\n } catch (e) {\n }\n return false;\n}\n\n/**\n * Cross-browser `CustomEvent` constructor.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.CustomEvent\n *\n * @public\n */\n\nmodule.exports = useNative() ? NativeCustomEvent :\n\n// IE >= 9\n'undefined' !== typeof document && 'function' === typeof document.createEvent ? function CustomEvent (type, params) {\n var e = document.createEvent('CustomEvent');\n if (params) {\n e.initCustomEvent(type, params.bubbles, params.cancelable, params.detail);\n } else {\n e.initCustomEvent(type, false, false, void 0);\n }\n return e;\n} :\n\n// IE <= 8\nfunction CustomEvent (type, params) {\n var e = document.createEventObject();\n e.type = type;\n if (params) {\n e.bubbles = Boolean(params.bubbles);\n e.cancelable = Boolean(params.cancelable);\n e.detail = params.detail;\n } else {\n e.bubbles = false;\n e.cancelable = false;\n e.detail = void 0;\n }\n return e;\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n /**\n * slides scrolled at once\n * @slidesToScroll {Number}\n */\n slidesToScroll: 1,\n\n /**\n * time in milliseconds for the animation of a valid slide attempt\n * @slideSpeed {Number}\n */\n slideSpeed: 300,\n\n /**\n * time in milliseconds for the animation of the rewind after the last slide\n * @rewindSpeed {Number}\n */\n rewindSpeed: 600,\n\n /**\n * time for the snapBack of the slider if the slide attempt was not valid\n * @snapBackSpeed {Number}\n */\n snapBackSpeed: 200,\n\n /**\n * Basic easing functions: https://developer.mozilla.org/de/docs/Web/CSS/transition-timing-function\n * cubic bezier easing functions: http://easings.net/de\n * @ease {String}\n */\n ease: 'ease',\n\n /**\n * if slider reached the last slide, with next click the slider goes back to the startindex.\n * use infinite or rewind, not both\n * @rewind {Boolean}\n */\n rewind: false,\n\n /**\n * number of visible slides or false\n * use infinite or rewind, not both\n * @infinite {number}\n */\n infinite: false,\n\n /**\n * the slide index to show when the slider is initialized.\n * @initialIndex {number}\n */\n initialIndex: 0,\n\n /**\n * class name for slider frame\n * @classNameFrame {string}\n */\n classNameFrame: 'js_frame',\n\n /**\n * class name for slides container\n * @classNameSlideContainer {string}\n */\n classNameSlideContainer: 'js_slides',\n\n /**\n * class name for slider prev control\n * @classNamePrevCtrl {string}\n */\n classNamePrevCtrl: 'js_prev',\n\n /**\n * class name for slider next control\n * @classNameNextCtrl {string}\n */\n classNameNextCtrl: 'js_next',\n\n /**\n * class name for current active slide\n * if emptyString then no class is set\n * @classNameActiveSlide {string}\n */\n classNameActiveSlide: 'active',\n\n /**\n * enables mouse events for swiping on desktop devices\n * @enableMouseEvents {boolean}\n */\n enableMouseEvents: false,\n\n /**\n * window instance\n * @window {object}\n */\n window: typeof window !== 'undefined' ? window : null,\n\n /**\n * If false, slides lory to the first slide on window resize.\n * @rewindOnResize {boolean}\n */\n rewindOnResize: true\n};\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(1);\n\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// lory.min.js"," \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, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\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 = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 7);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 8fb3f642c4c59664631d","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 0\n// module chunks = 0 1","/* globals jQuery */\n\nimport detectPrefixes from './utils/detect-prefixes.js';\nimport supportsPassive from './utils/detect-supportsPassive';\nimport dispatchEvent from './utils/dispatch-event.js';\nimport defaults from './defaults.js';\n\nconst slice = Array.prototype.slice;\n\nexport function lory (slider, opts) {\n let position;\n let slidesWidth;\n let frameWidth;\n let slides;\n\n /**\n * slider DOM elements\n */\n let frame;\n let slideContainer;\n let prevCtrl;\n let nextCtrl;\n let prefixes;\n let transitionEndCallback;\n\n let index = 0;\n let options = {};\n let touchEventParams = supportsPassive() ? { passive: true } : false;\n\n /**\n * if object is jQuery convert to native DOM element\n */\n if (typeof jQuery !== 'undefined' && slider instanceof jQuery) {\n slider = slider[0];\n }\n\n /**\n * private\n * set active class to element which is the current slide\n */\n function setActiveElement (slides, currentIndex) {\n const {classNameActiveSlide, infinite} = options;\n\n slides.forEach((element, index) => {\n if (element.classList.contains(classNameActiveSlide)) {\n element.classList.remove(classNameActiveSlide);\n }\n });\n\n slides[currentIndex].classList.add(classNameActiveSlide);\n\n if (infinite && currentIndex === slides.length - infinite * 2) {\n slides[infinite - 1].classList.add(classNameActiveSlide);\n } else if (currentIndex === infinite) {\n slides[slides.length - infinite].classList.add(classNameActiveSlide);\n }\n }\n\n /**\n * private\n * setupInfinite: function to setup if infinite is set\n *\n * @param {array} slideArray\n * @return {array} array of updated slideContainer elements\n */\n function setupInfinite (slideArray) {\n const {infinite} = options;\n\n const front = slideArray.slice(0, infinite);\n const back = slideArray.slice(slideArray.length - infinite, slideArray.length);\n\n front.forEach(function (element) {\n const cloned = element.cloneNode(true);\n\n slideContainer.appendChild(cloned);\n });\n\n back.reverse()\n .forEach(function (element) {\n const cloned = element.cloneNode(true);\n\n slideContainer.insertBefore(cloned, slideContainer.firstChild);\n });\n\n slideContainer.addEventListener(prefixes.transitionEnd, onTransitionEnd);\n\n return slice.call(slideContainer.children);\n }\n\n /**\n * [dispatchSliderEvent description]\n * @return {[type]} [description]\n */\n function dispatchSliderEvent (phase, type, detail) {\n dispatchEvent(slider, `${phase}.lory.${type}`, detail);\n }\n\n /**\n * translates to a given position in a given time in milliseconds\n *\n * @to {number} number in pixels where to translate to\n * @duration {number} time in milliseconds for the transistion\n * @ease {string} easing css property\n */\n function translate (to, duration, ease) {\n const style = slideContainer && slideContainer.style;\n\n if (style) {\n style[prefixes.transition + 'TimingFunction'] = ease;\n style[prefixes.transition + 'Duration'] = duration + 'ms';\n\n if (prefixes.hasTranslate3d) {\n style[prefixes.transform] = 'translate3d(' + to + 'px, 0, 0)';\n } else {\n style[prefixes.transform] = 'translate(' + to + 'px, 0)';\n }\n }\n }\n\n /**\n * slidefunction called by prev, next & touchend\n *\n * determine nextIndex and slide to next postion\n * under restrictions of the defined options\n *\n * @direction {boolean}\n */\n function slide (nextIndex, direction) {\n const {\n slideSpeed,\n slidesToScroll,\n infinite,\n rewind,\n rewindSpeed,\n ease,\n classNameActiveSlide\n } = options;\n\n let duration = slideSpeed;\n\n const nextSlide = direction ? index + 1 : index - 1;\n const maxOffset = Math.round(slidesWidth - frameWidth);\n\n dispatchSliderEvent('before', 'slide', {\n index,\n nextSlide\n });\n\n /**\n * Reset control classes\n */\n if (prevCtrl) {\n prevCtrl.classList.remove('disabled');\n }\n if (nextCtrl) {\n nextCtrl.classList.remove('disabled');\n }\n\n if (typeof nextIndex !== 'number') {\n if (direction) {\n nextIndex = index + slidesToScroll;\n } else {\n nextIndex = index - slidesToScroll;\n }\n }\n\n nextIndex = Math.min(Math.max(nextIndex, 0), slides.length - 1);\n\n if (infinite && direction === undefined) {\n nextIndex += infinite;\n }\n\n let nextOffset = Math.min(Math.max(slides[nextIndex].offsetLeft * -1, maxOffset * -1), 0);\n\n if (rewind && Math.abs(position.x) === maxOffset && direction) {\n nextOffset = 0;\n nextIndex = 0;\n duration = rewindSpeed;\n }\n\n /**\n * translate to the nextOffset by a defined duration and ease function\n */\n translate(nextOffset, duration, ease);\n\n /**\n * update the position with the next position\n */\n position.x = nextOffset;\n\n /**\n * update the index with the nextIndex only if\n * the offset of the nextIndex is in the range of the maxOffset\n */\n if (slides[nextIndex].offsetLeft <= maxOffset) {\n index = nextIndex;\n }\n\n if (infinite && (nextIndex === slides.length - infinite || nextIndex === 0)) {\n if (direction) {\n index = infinite;\n }\n\n if (!direction) {\n index = slides.length - (infinite * 2);\n }\n\n position.x = slides[index].offsetLeft * -1;\n\n transitionEndCallback = function () {\n translate(slides[index].offsetLeft * -1, 0, undefined);\n };\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n\n /**\n * update classes for next and prev arrows\n * based on user settings\n */\n if (prevCtrl && !infinite && nextIndex === 0) {\n prevCtrl.classList.add('disabled');\n }\n\n if (nextCtrl && !infinite && !rewind && ((nextIndex + 1) === slides.length)) {\n nextCtrl.classList.add('disabled');\n }\n\n dispatchSliderEvent('after', 'slide', {\n currentSlide: index\n });\n }\n\n /**\n * public\n * setup function\n */\n function setup () {\n dispatchSliderEvent('before', 'init');\n\n prefixes = detectPrefixes();\n options = {...defaults, ...opts};\n\n const {\n classNameFrame,\n classNameSlideContainer,\n classNamePrevCtrl,\n classNameNextCtrl,\n enableMouseEvents,\n classNameActiveSlide,\n initialIndex\n } = options;\n\n index = initialIndex;\n frame = slider.getElementsByClassName(classNameFrame)[0];\n slideContainer = frame.getElementsByClassName(classNameSlideContainer)[0];\n prevCtrl = slider.getElementsByClassName(classNamePrevCtrl)[0];\n nextCtrl = slider.getElementsByClassName(classNameNextCtrl)[0];\n\n position = {\n x: slideContainer.offsetLeft,\n y: slideContainer.offsetTop\n };\n\n if (options.infinite) {\n slides = setupInfinite(slice.call(slideContainer.children));\n } else {\n slides = slice.call(slideContainer.children);\n\n if (prevCtrl) {\n prevCtrl.classList.add('disabled');\n }\n\n if (nextCtrl && (slides.length === 1) && !options.rewind) {\n nextCtrl.classList.add('disabled');\n }\n }\n\n reset();\n\n if (classNameActiveSlide) {\n setActiveElement(slides, index);\n }\n\n if (prevCtrl && nextCtrl) {\n prevCtrl.addEventListener('click', prev);\n nextCtrl.addEventListener('click', next);\n }\n\n frame.addEventListener('touchstart', onTouchstart, touchEventParams);\n\n if (enableMouseEvents) {\n frame.addEventListener('mousedown', onTouchstart);\n frame.addEventListener('click', onClick);\n }\n\n options.window.addEventListener('resize', onResize);\n\n dispatchSliderEvent('after', 'init');\n }\n\n /**\n * public\n * reset function: called on resize\n */\n function reset () {\n var {infinite, ease, rewindSpeed, rewindOnResize, classNameActiveSlide, initialIndex} = options;\n\n slidesWidth = slideContainer.getBoundingClientRect()\n .width || slideContainer.offsetWidth;\n frameWidth = frame.getBoundingClientRect()\n .width || frame.offsetWidth;\n\n if (frameWidth === slidesWidth) {\n slidesWidth = slides.reduce(function (previousValue, slide) {\n return previousValue + slide.getBoundingClientRect().width || slide.offsetWidth;\n }, 0);\n }\n\n if (rewindOnResize) {\n index = initialIndex;\n } else {\n ease = null;\n rewindSpeed = 0;\n }\n\n if (infinite) {\n translate(slides[index + infinite].offsetLeft * -1, 0, null);\n\n index = index + infinite;\n position.x = slides[index].offsetLeft * -1;\n } else {\n translate(slides[index].offsetLeft * -1, rewindSpeed, ease);\n position.x = slides[index].offsetLeft * -1;\n }\n\n if (classNameActiveSlide) {\n setActiveElement(slice.call(slides), index);\n }\n }\n\n /**\n * public\n * slideTo: called on clickhandler\n */\n function slideTo (index) {\n slide(index);\n }\n\n /**\n * public\n * returnIndex function: called on clickhandler\n */\n function returnIndex () {\n return index - options.infinite || 0;\n }\n\n /**\n * public\n * prev function: called on clickhandler\n */\n function prev () {\n slide(false, false);\n }\n\n /**\n * public\n * next function: called on clickhandler\n */\n function next () {\n slide(false, true);\n }\n\n /**\n * public\n * destroy function: called to gracefully destroy the lory instance\n */\n function destroy () {\n dispatchSliderEvent('before', 'destroy');\n\n // remove event listeners\n frame.removeEventListener(prefixes.transitionEnd, onTransitionEnd);\n frame.removeEventListener('touchstart', onTouchstart, touchEventParams);\n frame.removeEventListener('touchmove', onTouchmove, touchEventParams);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mousedown', onTouchstart);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n frame.removeEventListener('click', onClick);\n\n options.window.removeEventListener('resize', onResize);\n\n if (prevCtrl) {\n prevCtrl.removeEventListener('click', prev);\n }\n\n if (nextCtrl) {\n nextCtrl.removeEventListener('click', next);\n }\n\n // remove cloned slides if infinite is set\n if (options.infinite) {\n Array.apply(null, Array(options.infinite)).forEach(function () {\n slideContainer.removeChild(slideContainer.firstChild);\n slideContainer.removeChild(slideContainer.lastChild);\n });\n }\n\n dispatchSliderEvent('after', 'destroy');\n }\n\n // event handling\n\n let touchOffset;\n let delta;\n let isScrolling;\n\n function onTransitionEnd (event) {\n if (transitionEndCallback && event.target === slideContainer) {\n transitionEndCallback();\n\n transitionEndCallback = undefined;\n }\n }\n\n function onTouchstart (event) {\n const {enableMouseEvents} = options;\n const touches = event.touches ? event.touches[0] : event;\n\n if (enableMouseEvents) {\n frame.addEventListener('mousemove', onTouchmove);\n frame.addEventListener('mouseup', onTouchend);\n frame.addEventListener('mouseleave', onTouchend);\n }\n\n frame.addEventListener('touchmove', onTouchmove, touchEventParams);\n frame.addEventListener('touchend', onTouchend);\n\n const {pageX, pageY} = touches;\n\n touchOffset = {\n x: pageX,\n y: pageY,\n time: Date.now()\n };\n\n isScrolling = undefined;\n\n delta = {};\n\n dispatchSliderEvent('on', 'touchstart', {\n event\n });\n }\n\n function onTouchmove (event) {\n const touches = event.touches ? event.touches[0] : event;\n const {pageX, pageY} = touches;\n\n delta = {\n x: pageX - touchOffset.x,\n y: pageY - touchOffset.y\n };\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(delta.x) < Math.abs(delta.y));\n }\n\n if (!isScrolling && touchOffset) {\n event.preventDefault();\n translate(position.x + delta.x, 0, null);\n }\n\n // may be\n dispatchSliderEvent('on', 'touchmove', {\n event\n });\n }\n\n function onTouchend (event) {\n /**\n * time between touchstart and touchend in milliseconds\n * @duration {number}\n */\n const duration = touchOffset ? Date.now() - touchOffset.time : undefined;\n\n /**\n * is valid if:\n *\n * -> swipe attempt time is over 300 ms\n * and\n * -> swipe distance is greater than 25px\n * or\n * -> swipe distance is more then a third of the swipe area\n *\n * @isValidSlide {Boolean}\n */\n const isValid = Number(duration) < 300 &&\n Math.abs(delta.x) > 25 ||\n Math.abs(delta.x) > frameWidth / 3;\n\n /**\n * is out of bounds if:\n *\n * -> index is 0 and delta x is greater than 0\n * or\n * -> index is the last slide and delta is smaller than 0\n *\n * @isOutOfBounds {Boolean}\n */\n const isOutOfBounds = !index && delta.x > 0 ||\n index === slides.length - 1 && delta.x < 0;\n\n const direction = delta.x < 0;\n\n if (!isScrolling) {\n if (isValid && !isOutOfBounds) {\n slide(false, direction);\n } else {\n translate(position.x, options.snapBackSpeed);\n }\n }\n\n touchOffset = undefined;\n\n /**\n * remove eventlisteners after swipe attempt\n */\n frame.removeEventListener('touchmove', onTouchmove);\n frame.removeEventListener('touchend', onTouchend);\n frame.removeEventListener('mousemove', onTouchmove);\n frame.removeEventListener('mouseup', onTouchend);\n frame.removeEventListener('mouseleave', onTouchend);\n\n dispatchSliderEvent('on', 'touchend', {\n event\n });\n }\n\n function onClick (event) {\n if (delta.x) {\n event.preventDefault();\n }\n }\n\n function onResize (event) {\n reset();\n\n dispatchSliderEvent('on', 'resize', {\n event\n });\n }\n\n // trigger initial setup\n setup();\n\n // expose public api\n return {\n setup,\n reset,\n slideTo,\n returnIndex,\n prev,\n next,\n destroy\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/lory.js","/**\n * Detecting prefixes for saving time and bytes\n */\nexport default function detectPrefixes () {\n let transform;\n let transition;\n let transitionEnd;\n let hasTranslate3d;\n\n (function () {\n let el = document.createElement('_');\n let style = el.style;\n\n let prop;\n\n if (style[prop = 'webkitTransition'] === '') {\n transitionEnd = 'webkitTransitionEnd';\n transition = prop;\n }\n\n if (style[prop = 'transition'] === '') {\n transitionEnd = 'transitionend';\n transition = prop;\n }\n\n if (style[prop = 'webkitTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'msTransform'] === '') {\n transform = prop;\n }\n\n if (style[prop = 'transform'] === '') {\n transform = prop;\n }\n\n document.body.insertBefore(el, null);\n style[transform] = 'translate3d(0, 0, 0)';\n hasTranslate3d = !!global.getComputedStyle(el).getPropertyValue(transform);\n document.body.removeChild(el);\n }());\n\n return {\n transform,\n transition,\n transitionEnd,\n hasTranslate3d\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/detect-prefixes.js","export default function detectSupportsPassive () {\n let supportsPassive = false;\n\n try {\n let opts = Object.defineProperty({}, 'passive', {\n get () {\n supportsPassive = true;\n }\n });\n\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n } catch (e) {}\n\n return supportsPassive;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/detect-supportsPassive.js","import CustomEvent from 'custom-event';\n\n/**\n * dispatch custom events\n *\n * @param {element} el slideshow element\n * @param {string} type custom event name\n * @param {object} detail custom detail information\n */\nexport default function dispatchEvent (target, type, detail) {\n let event = new CustomEvent(\n type,\n {\n bubbles: true,\n cancelable: true,\n detail: detail\n }\n );\n\n target.dispatchEvent(event);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/dispatch-event.js","\nvar NativeCustomEvent = global.CustomEvent;\n\nfunction useNative () {\n try {\n var p = new NativeCustomEvent('cat', { detail: { foo: 'bar' } });\n return 'cat' === p.type && 'bar' === p.detail.foo;\n } catch (e) {\n }\n return false;\n}\n\n/**\n * Cross-browser `CustomEvent` constructor.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.CustomEvent\n *\n * @public\n */\n\nmodule.exports = useNative() ? NativeCustomEvent :\n\n// IE >= 9\n'undefined' !== typeof document && 'function' === typeof document.createEvent ? function CustomEvent (type, params) {\n var e = document.createEvent('CustomEvent');\n if (params) {\n e.initCustomEvent(type, params.bubbles, params.cancelable, params.detail);\n } else {\n e.initCustomEvent(type, false, false, void 0);\n }\n return e;\n} :\n\n// IE <= 8\nfunction CustomEvent (type, params) {\n var e = document.createEventObject();\n e.type = type;\n if (params) {\n e.bubbles = Boolean(params.bubbles);\n e.cancelable = Boolean(params.cancelable);\n e.detail = params.detail;\n } else {\n e.bubbles = false;\n e.cancelable = false;\n e.detail = void 0;\n }\n return e;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/custom-event/index.js\n// module id = 5\n// module chunks = 0 1","export default {\n /**\n * slides scrolled at once\n * @slidesToScroll {Number}\n */\n slidesToScroll: 1,\n\n /**\n * time in milliseconds for the animation of a valid slide attempt\n * @slideSpeed {Number}\n */\n slideSpeed: 300,\n\n /**\n * time in milliseconds for the animation of the rewind after the last slide\n * @rewindSpeed {Number}\n */\n rewindSpeed: 600,\n\n /**\n * time for the snapBack of the slider if the slide attempt was not valid\n * @snapBackSpeed {Number}\n */\n snapBackSpeed: 200,\n\n /**\n * Basic easing functions: https://developer.mozilla.org/de/docs/Web/CSS/transition-timing-function\n * cubic bezier easing functions: http://easings.net/de\n * @ease {String}\n */\n ease: 'ease',\n\n /**\n * if slider reached the last slide, with next click the slider goes back to the startindex.\n * use infinite or rewind, not both\n * @rewind {Boolean}\n */\n rewind: false,\n\n /**\n * number of visible slides or false\n * use infinite or rewind, not both\n * @infinite {number}\n */\n infinite: false,\n\n /**\n * the slide index to show when the slider is initialized.\n * @initialIndex {number}\n */\n initialIndex: 0,\n\n /**\n * class name for slider frame\n * @classNameFrame {string}\n */\n classNameFrame: 'js_frame',\n\n /**\n * class name for slides container\n * @classNameSlideContainer {string}\n */\n classNameSlideContainer: 'js_slides',\n\n /**\n * class name for slider prev control\n * @classNamePrevCtrl {string}\n */\n classNamePrevCtrl: 'js_prev',\n\n /**\n * class name for slider next control\n * @classNameNextCtrl {string}\n */\n classNameNextCtrl: 'js_next',\n\n /**\n * class name for current active slide\n * if emptyString then no class is set\n * @classNameActiveSlide {string}\n */\n classNameActiveSlide: 'active',\n\n /**\n * enables mouse events for swiping on desktop devices\n * @enableMouseEvents {boolean}\n */\n enableMouseEvents: false,\n\n /**\n * window instance\n * @window {object}\n */\n window: typeof window !== 'undefined' ? window : null,\n\n /**\n * If false, slides lory to the first slide on window resize.\n * @rewindOnResize {boolean}\n */\n rewindOnResize: true\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/defaults.js"],"sourceRoot":""} +>>>>>>> Build