From 89f5ee76070532fd2ad1d37de28963afed8549fe Mon Sep 17 00:00:00 2001 From: Maximilian Heinz Date: Tue, 20 Feb 2018 17:09:51 +0100 Subject: [PATCH 1/5] chore: update critical dependencies --- package.json | 4 +- yarn.lock | 281 +++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 216 insertions(+), 69 deletions(-) diff --git a/package.json b/package.json index dbe1fb5..ff49710 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "clamp.js": "0.2.9", "custom-event": "1.0.1", "cz-conventional-changelog": "1.2.0", - "debug": "2.5.1", + "debug": "3.1.0", "dependency-check": "2.8.0", "eslint": "3.15.0", "eslint-config-standard": "6.2.1", @@ -80,7 +80,7 @@ "uglify-js": "2.7.5", "unminified-webpack-plugin": "1.2.0", "url-loader": "0.5.7", - "webpack": "^2.4.1", + "webpack": "3.11.0", "webpack-dev-server": "1.16.2" }, "scripts": { diff --git a/yarn.lock b/yarn.lock index 8df8343..f5b80c2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -111,10 +111,14 @@ agent-base@^4.1.0: dependencies: es6-promisify "^5.0.0" -ajv-keywords@^1.0.0, ajv-keywords@^1.1.1: +ajv-keywords@^1.0.0: version "1.5.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" +ajv-keywords@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.1.0.tgz#ac2b27939c543e95d2c06e7f7f5c27be4aa543be" + ajv@^4.7.0, ajv@^4.9.1: version "4.11.7" resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.7.tgz#8655a5d86d0824985cc471a1d913fb6729a0ec48" @@ -122,6 +126,14 @@ ajv@^4.7.0, ajv@^4.9.1: co "^4.6.0" json-stable-stringify "^1.0.1" +ajv@^6.1.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.1.1.tgz#978d597fbc2b7d0e5a5c3ddeb149a682f2abfa0e" + dependencies: + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" @@ -1276,9 +1288,9 @@ camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" cardinal@^1.0.0: version "1.0.0" @@ -1343,6 +1355,21 @@ chokidar@^1.4.1, chokidar@^1.4.3, chokidar@^1.6.1: optionalDependencies: fsevents "^1.0.0" +chokidar@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + cipher-base@^1.0.0, cipher-base@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07" @@ -1782,24 +1809,24 @@ debug@2.3.3: dependencies: ms "0.7.2" -debug@2.5.1, debug@^2.1.1, debug@^2.2.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.5.1.tgz#9107bb4a506052ec2a02314bc606313ed2b921c1" - dependencies: - ms "0.7.2" - debug@2.6.9, debug@^2.4.1, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" -debug@^3.1.0: +debug@3.1.0, debug@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: ms "2.0.0" +debug@^2.1.1, debug@^2.2.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.5.1.tgz#9107bb4a506052ec2a02314bc606313ed2b921c1" + dependencies: + ms "0.7.2" + decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -2077,14 +2104,14 @@ engine.io@1.8.3: engine.io-parser "1.3.2" ws "1.1.2" -enhanced-resolve@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec" +enhanced-resolve@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" dependencies: graceful-fs "^4.1.2" memory-fs "^0.4.0" object-assign "^4.0.1" - tapable "^0.2.5" + tapable "^0.2.7" ent@~2.2.0: version "2.2.0" @@ -2328,6 +2355,18 @@ evp_bytestokey@^1.0.0: dependencies: create-hash "^1.1.1" +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + execa@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" @@ -2435,6 +2474,14 @@ extsprintf@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" +fast-deep-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" @@ -2534,6 +2581,12 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + flat-cache@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" @@ -3397,6 +3450,10 @@ json-parse-helpfulerror@^1.0.2: dependencies: jju "^1.1.0" +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" @@ -3612,6 +3669,15 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + loader-runner@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" @@ -3625,6 +3691,21 @@ loader-utils@0.2.x, loader-utils@^0.2.11, loader-utils@^0.2.15, loader-utils@^0. json5 "^0.5.0" object-assign "^4.0.1" +loader-utils@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + lodash._baseassign@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" @@ -3800,6 +3881,12 @@ media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + memory-fs@^0.4.0, memory-fs@~0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -3887,6 +3974,10 @@ mime@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/mime/-/mime-2.0.3.tgz#4353337854747c48ea498330dc034f9f4bbbcc0b" +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + minimalistic-assert@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" @@ -4254,11 +4345,13 @@ os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" dependencies: + execa "^0.7.0" lcid "^1.0.0" + mem "^1.1.0" os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1: version "1.0.2" @@ -4287,6 +4380,18 @@ p-is-promise@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" +p-limit@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c" + dependencies: + p-try "^1.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + p-reduce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" @@ -4303,6 +4408,10 @@ p-series@^1.0.0: dependencies: p-reduce "^1.0.0" +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + package-json@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/package-json/-/package-json-1.2.0.tgz#c8ecac094227cdf76a316874ed05e27cc939a0e0" @@ -4391,6 +4500,10 @@ path-exists@^2.0.0: dependencies: pinkie-promise "^2.0.0" +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -4426,6 +4539,12 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + pause-stream@0.0.11: version "0.0.11" resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" @@ -4663,6 +4782,13 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -4671,6 +4797,14 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + readable-stream@1.0, readable-stream@~1.0.2: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" @@ -5281,9 +5415,9 @@ sockjs@^0.3.15: faye-websocket "^0.10.0" uuid "^2.0.2" -source-list-map@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-1.1.1.tgz#1a33ac210ca144d1e561f906ebccab5669ff4cb4" +source-list-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" source-list-map@~0.1.7: version "0.1.8" @@ -5305,6 +5439,10 @@ source-map@^0.4.4: dependencies: amdefine ">=0.0.4" +source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + spawn-error-forwarder@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz#1afd94738e999b0346d7b9fc373be55e07577029" @@ -5420,7 +5558,7 @@ string-length@^1.0.0: dependencies: strip-ansi "^3.0.0" -string-width@^1.0.1, string-width@^1.0.2: +string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" dependencies: @@ -5485,7 +5623,7 @@ strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" -supports-color@3.1.2, supports-color@^3.1.0, supports-color@^3.1.1: +supports-color@3.1.2, supports-color@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" dependencies: @@ -5495,7 +5633,7 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -supports-color@^4.0.0: +supports-color@^4.0.0, supports-color@^4.2.1: version "4.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" dependencies: @@ -5512,9 +5650,9 @@ table@^3.7.8: slice-ansi "0.0.4" string-width "^2.0.0" -tapable@^0.2.5, tapable@~0.2.5: - version "0.2.6" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d" +tapable@^0.2.7: + version "0.2.8" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" tar-pack@^3.4.0: version "3.4.0" @@ -5713,7 +5851,7 @@ uglify-js@2.7.5: uglify-to-browserify "~1.0.0" yargs "~3.10.0" -uglify-js@^2.6: +uglify-js@^2.6, uglify-js@^2.8.29: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" dependencies: @@ -5722,7 +5860,7 @@ uglify-js@^2.6: optionalDependencies: uglify-to-browserify "~1.0.0" -uglify-js@^2.8.5, uglify-js@~2.8.22: +uglify-js@~2.8.22: version "2.8.22" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.22.tgz#d54934778a8da14903fa29a326fb24c0ab51a1a0" dependencies: @@ -5735,6 +5873,14 @@ uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" +uglifyjs-webpack-plugin@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309" + dependencies: + source-map "^0.5.6" + uglify-js "^2.8.29" + webpack-sources "^1.0.1" + uid-number@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" @@ -5922,12 +6068,12 @@ walkdir@^0.0.11: version "0.0.11" resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.0.11.tgz#a16d025eb931bd03b52f308caed0f40fcebe9532" -watchpack@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87" +watchpack@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac" dependencies: async "^2.1.2" - chokidar "^1.4.3" + chokidar "^1.7.0" graceful-fs "^4.1.2" wd@^1.4.0: @@ -5987,38 +6133,39 @@ webpack-sources@^0.1.0: source-list-map "~0.1.7" source-map "~0.5.3" -webpack-sources@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.2.3.tgz#17c62bfaf13c707f9d02c479e0dcdde8380697fb" +webpack-sources@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54" dependencies: - source-list-map "^1.1.1" - source-map "~0.5.3" + source-list-map "^2.0.0" + source-map "~0.6.1" -webpack@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.4.1.tgz#15a91dbe34966d8a4b99c7d656efd92a2e5a6f6a" +webpack@3.11.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.11.0.tgz#77da451b1d7b4b117adaf41a1a93b5742f24d894" dependencies: acorn "^5.0.0" acorn-dynamic-import "^2.0.0" - ajv "^4.7.0" - ajv-keywords "^1.1.1" + ajv "^6.1.0" + ajv-keywords "^3.1.0" async "^2.1.2" - enhanced-resolve "^3.0.0" + enhanced-resolve "^3.4.0" + escope "^3.6.0" interpret "^1.0.0" json-loader "^0.5.4" json5 "^0.5.1" loader-runner "^2.3.0" - loader-utils "^0.2.16" + loader-utils "^1.1.0" memory-fs "~0.4.1" mkdirp "~0.5.0" node-libs-browser "^2.0.0" source-map "^0.5.3" - supports-color "^3.1.0" - tapable "~0.2.5" - uglify-js "^2.8.5" - watchpack "^1.3.1" - webpack-sources "^0.2.3" - yargs "^6.0.0" + supports-color "^4.2.1" + tapable "^0.2.7" + uglifyjs-webpack-plugin "^0.4.6" + watchpack "^1.4.0" + webpack-sources "^1.0.1" + yargs "^8.0.2" websocket-driver@>=0.5.1: version "0.6.5" @@ -6030,9 +6177,9 @@ websocket-extensions@>=0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7" -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" which@^1.2.1, which@~1.2.10: version "1.2.14" @@ -6134,29 +6281,29 @@ yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" -yargs-parser@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" dependencies: - camelcase "^3.0.0" + camelcase "^4.1.0" -yargs@^6.0.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" +yargs@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" dependencies: - camelcase "^3.0.0" + camelcase "^4.1.0" cliui "^3.2.0" decamelize "^1.1.1" get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" require-directory "^2.1.1" require-main-filename "^1.0.1" set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" + string-width "^2.0.0" + which-module "^2.0.0" y18n "^3.2.1" - yargs-parser "^4.2.0" + yargs-parser "^7.0.0" yargs@~3.10.0: version "3.10.0" From a7bc555e4d11188039b41b4c0729480b200491a0 Mon Sep 17 00:00:00 2001 From: Maximilian Heinz Date: Tue, 20 Feb 2018 17:10:36 +0100 Subject: [PATCH 2/5] chore: add workspace settings for vscode --- .vscode/settings.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..cf7a848 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "eslint.autoFixOnSave": true +} From 71d564001c05fed9e22ea82b0f75e3e91d886787 Mon Sep 17 00:00:00 2001 From: Maximilian Heinz Date: Tue, 20 Feb 2018 17:11:24 +0100 Subject: [PATCH 3/5] chore: remove not used HTMLWebpackPlugin and remove DedupePlugin --- webpack.config.prod.js | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/webpack.config.prod.js b/webpack.config.prod.js index 7c15629..dc72d56 100644 --- a/webpack.config.prod.js +++ b/webpack.config.prod.js @@ -1,7 +1,5 @@ import webpack from 'webpack'; import baseConfig from './webpack.config.base'; -import HtmlWebpackPlugin from 'html-webpack-plugin'; -import ExtractTextPlugin from 'extract-text-webpack-plugin'; import UnminifiedWebpackPlugin from 'unminified-webpack-plugin'; import _debug from 'debug'; @@ -13,14 +11,13 @@ let config = Object.create(baseConfig); config.devtool = 'source-map'; config.plugins = [ - new webpack.optimize.DedupePlugin(), new webpack.optimize.UglifyJsPlugin({ - sourceMap: true, - compress: { - unused: true, - dead_code: true, - warnings: false - } + sourceMap: true, + compress: { + unused: true, + dead_code: true, + warnings: false + } }), new UnminifiedWebpackPlugin() ]; From 10431c88e17bff96b14c79c0006a1730e891d569 Mon Sep 17 00:00:00 2001 From: Maximilian Heinz Date: Tue, 20 Feb 2018 17:11:57 +0100 Subject: [PATCH 4/5] refactor: changes after turning autofixOnSave on --- saucelabs.karma.conf.js | 12 ++++++------ webpack.config.base.js | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/saucelabs.karma.conf.js b/saucelabs.karma.conf.js index 34cfb47..411e8ec 100644 --- a/saucelabs.karma.conf.js +++ b/saucelabs.karma.conf.js @@ -1,6 +1,6 @@ 'use strict'; -module.exports = function(config) { +module.exports = function (config) { var customLaunchers = { sauceLabsInternetExplorer10: { base: 'SauceLabs', @@ -74,7 +74,7 @@ module.exports = function(config) { 'fixture' ], - files: [ + files: [ 'dist/lory.js', 'test/lory.test.js', 'static/app.css', @@ -98,10 +98,10 @@ module.exports = function(config) { 'test/*.html': ['html2js'] }, - browserDisconnectTimeout : 10000, // default 2000 - browserDisconnectTolerance : 1, // default 0 - browserNoActivityTimeout : 4*60*1000, //default 10000 - captureTimeout : 4*60*1000, //default 60000 + browserDisconnectTimeout: 10000, // default 2000 + browserDisconnectTolerance: 1, // default 0 + browserNoActivityTimeout: 4 * 60 * 1000, // default 10000 + captureTimeout: 4 * 60 * 1000, // default 60000 singleRun: true }); diff --git a/webpack.config.base.js b/webpack.config.base.js index fb2df79..77d56b3 100644 --- a/webpack.config.base.js +++ b/webpack.config.base.js @@ -16,8 +16,8 @@ export const PORT = 8080; export default { entry: { - "lory": ["./src/lory.js"], - "jquery.lory": "./src/jquery.lory.js" + 'lory': ['./src/lory.js'], + 'jquery.lory': './src/jquery.lory.js' }, module: { rules: [ From 4e325f9bb44e9b21776c025417f75b8eadd9774a Mon Sep 17 00:00:00 2001 From: Maximilian Heinz Date: Tue, 20 Feb 2018 17:13:46 +0100 Subject: [PATCH 5/5] fix: trigger build with new assets --- dist/jquery.lory.js | 250 ++++++++++++++++++------------------ dist/jquery.lory.min.js | 2 +- dist/jquery.lory.min.js.map | 2 +- dist/lory.js | 250 ++++++++++++++++++------------------ dist/lory.min.js | 2 +- dist/lory.min.js.map | 2 +- 6 files changed, 251 insertions(+), 257 deletions(-) diff --git a/dist/jquery.lory.js b/dist/jquery.lory.js index 2ae7d04..9ae03ef 100644 --- a/dist/jquery.lory.js +++ b/dist/jquery.lory.js @@ -7,7 +7,7 @@ var a = factory(); for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; } -})(this, function() { +})(typeof self !== 'undefined' ? self : this, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; @@ -43,9 +43,6 @@ return /******/ (function(modules) { // webpackBootstrap /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { @@ -73,7 +70,7 @@ return /******/ (function(modules) { // webpackBootstrap /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 7); +/******/ return __webpack_require__(__webpack_require__.s = 8); /******/ }) /************************************************************************/ /******/ ([ @@ -118,19 +115,19 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument exports.lory = lory; -var _detectPrefixes = __webpack_require__(3); +var _detectPrefixes = __webpack_require__(2); var _detectPrefixes2 = _interopRequireDefault(_detectPrefixes); -var _detectSupportsPassive = __webpack_require__(4); +var _detectSupportsPassive = __webpack_require__(3); var _detectSupportsPassive2 = _interopRequireDefault(_detectSupportsPassive); -var _dispatchEvent = __webpack_require__(5); +var _dispatchEvent = __webpack_require__(4); var _dispatchEvent2 = _interopRequireDefault(_dispatchEvent); -var _defaults = __webpack_require__(2); +var _defaults = __webpack_require__(6); var _defaults2 = _interopRequireDefault(_defaults); @@ -709,118 +706,6 @@ function lory(slider, opts) { /* 2 */ /***/ (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: window, - - /** - * If false, slides lory to the first slide on window resize. - * @rewindOnResize {boolean} - */ - rewindOnResize: true -}; - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - "use strict"; /* WEBPACK VAR INJECTION */(function(global) { @@ -881,7 +766,7 @@ function detectPrefixes() { /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 4 */ +/* 3 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -909,7 +794,7 @@ function detectSupportsPassive() { } /***/ }), -/* 5 */ +/* 4 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -920,7 +805,7 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = dispatchEvent; -var _customEvent = __webpack_require__(6); +var _customEvent = __webpack_require__(5); var _customEvent2 = _interopRequireDefault(_customEvent); @@ -944,7 +829,7 @@ function dispatchEvent(target, type, detail) { } /***/ }), -/* 6 */ +/* 5 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global) { @@ -999,7 +884,120 @@ function CustomEvent (type, params) { /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 7 */ +/* 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: window, + + /** + * If false, slides lory to the first slide on window resize. + * @rewindOnResize {boolean} + */ + rewindOnResize: true +}; + +/***/ }), +/* 7 */, +/* 8 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; diff --git a/dist/jquery.lory.min.js b/dist/jquery.lory.min.js index b2dd9d0..2fc850f 100644 --- a/dist/jquery.lory.min.js +++ b/dist/jquery.lory.min.js @@ -1,2 +1,2 @@ -!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]}}(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.i=function(e){return e},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){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},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=D,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=D,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);P.appendChild(t)}),o.reverse().forEach(function(e){var t=e.cloneNode(!0);P.insertBefore(t,P.firstChild)}),P.addEventListener(T.transitionEnd,L),m.call(P.children)}function o(t,n,i){(0,u.default)(e,t+".lory."+n,i)}function s(e,t,n){var i=P&&P.style;i&&(i[T.transition+"TimingFunction"]=n,i[T.transition+"Duration"]=t+"ms",T.hasTranslate3d?i[T.transform]="translate3d("+e+"px, 0, 0)":i[T.transform]="translate("+e+"px, 0)")}function d(e,t){var i=D,r=i.slideSpeed,a=i.slidesToScroll,d=i.infinite,l=i.rewind,c=i.rewindSpeed,u=i.ease,f=i.classNameActiveSlide,v=r,h=t?z+1:z-1,p=Math.round(M-_);o("before","slide",{index:z,nextSlide:h}),B&&B.classList.remove("disabled"),k&&k.classList.remove("disabled"),"number"!=typeof e&&(e=t?z+a:z-a),e=Math.min(Math.max(e,0),S.length-1),d&&void 0===t&&(e+=d);var b=Math.min(Math.max(-1*S[e].offsetLeft,-1*p),0);l&&Math.abs(N.x)===p&&t&&(b=0,e=0,v=c),s(b,v,u),N.x=b,S[e].offsetLeft<=p&&(z=e),!d||e!==S.length-d&&0!==e||(t&&(z=d),t||(z=S.length-2*d),N.x=-1*S[z].offsetLeft,A=function(){s(-1*S[z].offsetLeft,0,void 0)}),f&&n(m.call(S),z),B&&!d&&0===e&&B.classList.add("disabled"),!k||d||l||e+1!==S.length||k.classList.add("disabled"),o("after","slide",{currentSlide:z})}function c(){o("before","init"),T=(0,a.default)(),D=r({},v.default,t);var s=D,d=s.classNameFrame,l=s.classNameSlideContainer,c=s.classNamePrevCtrl,u=s.classNameNextCtrl,h=s.enableMouseEvents,p=s.classNameActiveSlide,E=s.initialIndex;z=E,O=e.getElementsByClassName(d)[0],P=O.getElementsByClassName(l)[0],B=e.getElementsByClassName(c)[0],k=e.getElementsByClassName(u)[0],N={x:P.offsetLeft,y:P.offsetTop},D.infinite?S=i(m.call(P.children)):(S=m.call(P.children),B&&B.classList.add("disabled"),k&&1===S.length&&!D.rewind&&k.classList.add("disabled")),f(),p&&n(S,z),B&&k&&(B.addEventListener("click",b),k.addEventListener("click",y)),O.addEventListener("touchstart",x,R),h&&(O.addEventListener("mousedown",x),O.addEventListener("click",C)),D.window.addEventListener("resize",j),o("after","init")}function f(){var e=D,t=e.infinite,i=e.ease,o=e.rewindSpeed,r=e.rewindOnResize,a=e.classNameActiveSlide,d=e.initialIndex;M=P.getBoundingClientRect().width||P.offsetWidth,_=O.getBoundingClientRect().width||O.offsetWidth,_===M&&(M=S.reduce(function(e,t){return e+t.getBoundingClientRect().width||t.offsetWidth},0)),r?z=d:(i=null,o=0),t?(s(-1*S[z+t].offsetLeft,0,null),z+=t,N.x=-1*S[z].offsetLeft):(s(-1*S[z].offsetLeft,o,i),N.x=-1*S[z].offsetLeft),a&&n(m.call(S),z)}function h(e){d(e)}function p(){return z-D.infinite||0}function b(){d(!1,!1)}function y(){d(!1,!0)}function E(){o("before","destroy"),O.removeEventListener(T.transitionEnd,L),O.removeEventListener("touchstart",x,R),O.removeEventListener("touchmove",w,R),O.removeEventListener("touchend",g),O.removeEventListener("mousemove",w),O.removeEventListener("mousedown",x),O.removeEventListener("mouseup",g),O.removeEventListener("mouseleave",g),O.removeEventListener("click",C),D.window.removeEventListener("resize",j),B&&B.removeEventListener("click",b),k&&k.removeEventListener("click",y),D.infinite&&Array.apply(null,Array(D.infinite)).forEach(function(){P.removeChild(P.firstChild),P.removeChild(P.lastChild)}),o("after","destroy")}function L(){A&&(A(),A=void 0)}function x(e){var t=D,n=t.enableMouseEvents,i=e.touches?e.touches[0]:e;n&&(O.addEventListener("mousemove",w),O.addEventListener("mouseup",g),O.addEventListener("mouseleave",g)),O.addEventListener("touchmove",w,R),O.addEventListener("touchend",g);var r=i.pageX,s=i.pageY;F={x:r,y:s,time:Date.now()},Q=void 0,I={},o("on","touchstart",{event:e})}function w(e){var t=e.touches?e.touches[0]:e,n=t.pageX,i=t.pageY;I={x:n-F.x,y:i-F.y},void 0===Q&&(Q=!!(Q||Math.abs(I.x)25||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;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:p,returnIndex:h,prev:b,next:y,destroy:E}}Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t 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\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: window,\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/* 3 */\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/* 4 */\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/* 5 */\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__(6);\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/* 6 */\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/* 7 */\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// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\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 92990ca6f69ef090c0a4","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} = 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\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 () {\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 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","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: window,\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","/**\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// ./~/custom-event/index.js\n// module id = 6\n// module chunks = 0 1","/* 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 +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///jquery.lory.min.js","webpack:///webpack/bootstrap 2baa155f34c5a19bc08a","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","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","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","_options6","touches","pageX","pageY","touchOffset","time","Date","now","isScrolling","delta","preventDefault","isValid","Number","isOutOfBounds","snapBackSpeed","_detectSupportsPassive2","passive","jQuery","value","_extends","assign","target","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\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\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() {\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 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: window,\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 2baa155f34c5a19bc08a","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} = 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\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 () {\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 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: window,\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 diff --git a/dist/lory.js b/dist/lory.js index 8c8f372..868c9a1 100644 --- a/dist/lory.js +++ b/dist/lory.js @@ -7,7 +7,7 @@ var a = factory(); for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; } -})(this, function() { +})(typeof self !== 'undefined' ? self : this, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; @@ -43,9 +43,6 @@ return /******/ (function(modules) { // webpackBootstrap /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { @@ -73,7 +70,7 @@ return /******/ (function(modules) { // webpackBootstrap /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 8); +/******/ return __webpack_require__(__webpack_require__.s = 7); /******/ }) /************************************************************************/ /******/ ([ @@ -118,19 +115,19 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument exports.lory = lory; -var _detectPrefixes = __webpack_require__(3); +var _detectPrefixes = __webpack_require__(2); var _detectPrefixes2 = _interopRequireDefault(_detectPrefixes); -var _detectSupportsPassive = __webpack_require__(4); +var _detectSupportsPassive = __webpack_require__(3); var _detectSupportsPassive2 = _interopRequireDefault(_detectSupportsPassive); -var _dispatchEvent = __webpack_require__(5); +var _dispatchEvent = __webpack_require__(4); var _dispatchEvent2 = _interopRequireDefault(_dispatchEvent); -var _defaults = __webpack_require__(2); +var _defaults = __webpack_require__(6); var _defaults2 = _interopRequireDefault(_defaults); @@ -709,118 +706,6 @@ function lory(slider, opts) { /* 2 */ /***/ (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: window, - - /** - * If false, slides lory to the first slide on window resize. - * @rewindOnResize {boolean} - */ - rewindOnResize: true -}; - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - "use strict"; /* WEBPACK VAR INJECTION */(function(global) { @@ -881,7 +766,7 @@ function detectPrefixes() { /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 4 */ +/* 3 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -909,7 +794,7 @@ function detectSupportsPassive() { } /***/ }), -/* 5 */ +/* 4 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -920,7 +805,7 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = dispatchEvent; -var _customEvent = __webpack_require__(6); +var _customEvent = __webpack_require__(5); var _customEvent2 = _interopRequireDefault(_customEvent); @@ -944,7 +829,7 @@ function dispatchEvent(target, type, detail) { } /***/ }), -/* 6 */ +/* 5 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global) { @@ -999,8 +884,119 @@ function CustomEvent (type, params) { /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), -/* 7 */, -/* 8 */ +/* 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: window, + + /** + * If false, slides lory to the first slide on window resize. + * @rewindOnResize {boolean} + */ + rewindOnResize: true +}; + +/***/ }), +/* 7 */ /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__(1); diff --git a/dist/lory.min.js b/dist/lory.min.js index 2461e64..c77a45b 100644 --- a/dist/lory.min.js +++ b/dist/lory.min.js @@ -1,2 +1,2 @@ -!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]}}(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.i=function(e){return e},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){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},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=D,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=D,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);P.appendChild(t)}),o.reverse().forEach(function(e){var t=e.cloneNode(!0);P.insertBefore(t,P.firstChild)}),P.addEventListener(T.transitionEnd,L),m.call(P.children)}function o(t,n,i){(0,u.default)(e,t+".lory."+n,i)}function s(e,t,n){var i=P&&P.style;i&&(i[T.transition+"TimingFunction"]=n,i[T.transition+"Duration"]=t+"ms",T.hasTranslate3d?i[T.transform]="translate3d("+e+"px, 0, 0)":i[T.transform]="translate("+e+"px, 0)")}function d(e,t){var i=D,r=i.slideSpeed,a=i.slidesToScroll,d=i.infinite,l=i.rewind,c=i.rewindSpeed,u=i.ease,f=i.classNameActiveSlide,v=r,p=t?z+1:z-1,h=Math.round(M-_);o("before","slide",{index:z,nextSlide:p}),B&&B.classList.remove("disabled"),k&&k.classList.remove("disabled"),"number"!=typeof e&&(e=t?z+a:z-a),e=Math.min(Math.max(e,0),S.length-1),d&&void 0===t&&(e+=d);var b=Math.min(Math.max(-1*S[e].offsetLeft,-1*h),0);l&&Math.abs(j.x)===h&&t&&(b=0,e=0,v=c),s(b,v,u),j.x=b,S[e].offsetLeft<=h&&(z=e),!d||e!==S.length-d&&0!==e||(t&&(z=d),t||(z=S.length-2*d),j.x=-1*S[z].offsetLeft,A=function(){s(-1*S[z].offsetLeft,0,void 0)}),f&&n(m.call(S),z),B&&!d&&0===e&&B.classList.add("disabled"),!k||d||l||e+1!==S.length||k.classList.add("disabled"),o("after","slide",{currentSlide:z})}function c(){o("before","init"),T=(0,a.default)(),D=r({},v.default,t);var s=D,d=s.classNameFrame,l=s.classNameSlideContainer,c=s.classNamePrevCtrl,u=s.classNameNextCtrl,p=s.enableMouseEvents,h=s.classNameActiveSlide,y=s.initialIndex;z=y,O=e.getElementsByClassName(d)[0],P=O.getElementsByClassName(l)[0],B=e.getElementsByClassName(c)[0],k=e.getElementsByClassName(u)[0],j={x:P.offsetLeft,y:P.offsetTop},D.infinite?S=i(m.call(P.children)):(S=m.call(P.children),B&&B.classList.add("disabled"),k&&1===S.length&&!D.rewind&&k.classList.add("disabled")),f(),h&&n(S,z),B&&k&&(B.addEventListener("click",b),k.addEventListener("click",E)),O.addEventListener("touchstart",x,R),p&&(O.addEventListener("mousedown",x),O.addEventListener("click",C)),D.window.addEventListener("resize",N),o("after","init")}function f(){var e=D,t=e.infinite,i=e.ease,o=e.rewindSpeed,r=e.rewindOnResize,a=e.classNameActiveSlide,d=e.initialIndex;M=P.getBoundingClientRect().width||P.offsetWidth,_=O.getBoundingClientRect().width||O.offsetWidth,_===M&&(M=S.reduce(function(e,t){return e+t.getBoundingClientRect().width||t.offsetWidth},0)),r?z=d:(i=null,o=0),t?(s(-1*S[z+t].offsetLeft,0,null),z+=t,j.x=-1*S[z].offsetLeft):(s(-1*S[z].offsetLeft,o,i),j.x=-1*S[z].offsetLeft),a&&n(m.call(S),z)}function p(e){d(e)}function h(){return z-D.infinite||0}function b(){d(!1,!1)}function E(){d(!1,!0)}function y(){o("before","destroy"),O.removeEventListener(T.transitionEnd,L),O.removeEventListener("touchstart",x,R),O.removeEventListener("touchmove",w,R),O.removeEventListener("touchend",g),O.removeEventListener("mousemove",w),O.removeEventListener("mousedown",x),O.removeEventListener("mouseup",g),O.removeEventListener("mouseleave",g),O.removeEventListener("click",C),D.window.removeEventListener("resize",N),B&&B.removeEventListener("click",b),k&&k.removeEventListener("click",E),D.infinite&&Array.apply(null,Array(D.infinite)).forEach(function(){P.removeChild(P.firstChild),P.removeChild(P.lastChild)}),o("after","destroy")}function L(){A&&(A(),A=void 0)}function x(e){var t=D,n=t.enableMouseEvents,i=e.touches?e.touches[0]:e;n&&(O.addEventListener("mousemove",w),O.addEventListener("mouseup",g),O.addEventListener("mouseleave",g)),O.addEventListener("touchmove",w,R),O.addEventListener("touchend",g);var r=i.pageX,s=i.pageY;F={x:r,y:s,time:Date.now()},W=void 0,I={},o("on","touchstart",{event:e})}function w(e){var t=e.touches?e.touches[0]:e,n=t.pageX,i=t.pageY;I={x:n-F.x,y:i-F.y},void 0===W&&(W=!!(W||Math.abs(I.x)25||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;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 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\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: window,\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/* 3 */\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/* 4 */\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/* 5 */\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__(6);\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/* 6 */\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/* 7 */,\n/* 8 */\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// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\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 92990ca6f69ef090c0a4","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} = 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\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 () {\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 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","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: window,\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","/**\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// ./~/custom-event/index.js\n// module id = 6\n// module chunks = 0 1"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///lory.min.js","webpack:///webpack/bootstrap 2baa155f34c5a19bc08a","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","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","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","_options6","touches","pageX","pageY","touchOffset","time","Date","now","isScrolling","delta","preventDefault","isValid","Number","isOutOfBounds","snapBackSpeed","_detectSupportsPassive2","passive","jQuery","value","_extends","assign","target","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\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\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() {\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 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: window,\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 2baa155f34c5a19bc08a","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} = 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\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 () {\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 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: window,\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